<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CyberTriber on Stefula.cz</title>
    <link>http://localhost:1314/</link>
    <description>Recent content in CyberTriber on Stefula.cz</description>
    <generator>Hugo</generator>
    <language>cz</language>
    <lastBuildDate>Mon, 27 Apr 2026 00:00:00 +0200</lastBuildDate>
    <atom:link href="http://localhost:1314/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Synchronizace PTR záznamů v DNS</title>
      <link>http://localhost:1314/code/dns_ptr_sync/</link>
      <pubDate>Mon, 27 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/dns_ptr_sync/</guid>
      <description>&lt;p&gt;Občas je potřeba synchronizace PTR záznamů v DNS s aktuálními IP adresami stanic.&lt;/p&gt;&#xA;&lt;p&gt;Jako vstup si vezme název zény dopředného vyhledávání a zkontroluje všechny záznamy, zda mají korespondující PTR záznam v reverzní zóně. Pokud ne, aktualizuje je nebo vytvoří nový.&lt;/p&gt;&#xA;&lt;p&gt;Na konci běhu zobrazí přehledný souhrn:&#xA;&lt;img src=&#34;http://localhost:1314/img/scripts/DNS_PTR_output.png&#34; alt=&#34;souhrn&#34;&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SYNOPSIS&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    Synchronizuje PTR záznamy z forward lookup zóny na DNS serveru (DC).&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;DESCRIPTION&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    Prochází A záznamy v zadané forward lookup zóně a pro každý záznam:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;      - Zkontroluje, zda existuje odpovídající PTR záznam v reverse zóně.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;      - Pokud existuje a hostname se shoduje → přeskočí.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;      - Pokud existuje, ale hostname se liší → aktualizuje PTR záznam.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;      - Pokud neexistuje → vytvoří nový PTR záznam.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;.PARAMETER ForwardZone&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    Název forward lookup zóny (např. &amp;#34;firma.local&amp;#34;).&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;.PARAMETER DnsServer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    Hostname nebo IP adresa DNS serveru. Výchozí: localhost.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;.PARAMETER WhatIf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    Pouze zobrazí, co by se stalo – nic nemění.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;EXAMPLE&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    .\Sync-DnsPtrRecords.ps1 -ForwardZone &amp;#34;firma.local&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;EXAMPLE&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    .\Sync-DnsPtrRecords.ps1 -ForwardZone &amp;#34;firma.local&amp;#34; -DnsServer &amp;#34;dc01.firma.local&amp;#34; -WhatIf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[CmdletBinding(&lt;span style=&#34;color:#a6e22e&#34;&gt;SupportsShouldProcess&lt;/span&gt;)]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;param&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    [Parameter(&lt;span style=&#34;color:#a6e22e&#34;&gt;Mandatory&lt;/span&gt;)]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    [&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]$ForwardZone,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    [&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]$DnsServer = $env:COMPUTERNAME&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#region Pomocné funkce&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; Get-ReverseZoneName {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    .&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SYNOPSIS&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;        Zjistí název reverse zóny pro zadanou IP adresu z dostupných zón na DNS serveru.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;        Testuje postupně /24, /16, /8 varianty.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    #&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;param&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        [&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]$IpAddress,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        [&lt;span style=&#34;color:#66d9ef&#34;&gt;string[]&lt;/span&gt;]$AvailableReverseZones&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $octets = $IpAddress.Split(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Kandidáti od nejpřesnějšího (/24) po nejméně přesný (/8)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $candidates = @(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$($octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;])&lt;span style=&#34;color:#e6db74&#34;&gt;.&lt;/span&gt;$($octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;])&lt;span style=&#34;color:#e6db74&#34;&gt;.&lt;/span&gt;$($octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;])&lt;span style=&#34;color:#e6db74&#34;&gt;.in-addr.arpa&amp;#34;&lt;/span&gt;,   &lt;span style=&#34;color:#75715e&#34;&gt;# /24&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$($octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;])&lt;span style=&#34;color:#e6db74&#34;&gt;.&lt;/span&gt;$($octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;])&lt;span style=&#34;color:#e6db74&#34;&gt;.in-addr.arpa&amp;#34;&lt;/span&gt;,                  &lt;span style=&#34;color:#75715e&#34;&gt;# /16&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$($octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;])&lt;span style=&#34;color:#e6db74&#34;&gt;.in-addr.arpa&amp;#34;&lt;/span&gt;                                  &lt;span style=&#34;color:#75715e&#34;&gt;# /8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;foreach&lt;/span&gt; ($candidate &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; $candidates) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($AvailableReverseZones &lt;span style=&#34;color:#f92672&#34;&gt;-contains&lt;/span&gt; $candidate) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; $candidate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; $null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; Get-PtrRecordName {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    .&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SYNOPSIS&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;        Vrátí část PTR záznamu (hostovou část) pro danou IP a reverse zónu.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;        Např. IP 192.168.1.100 v zóně &amp;#34;1.168.192.in-addr.arpa&amp;#34; → &amp;#34;100&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    #&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;param&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        [&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]$IpAddress,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        [&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]$ReverseZone&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $octets = $IpAddress.Split(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $zoneDepth = ($ReverseZone &lt;span style=&#34;color:#f92672&#34;&gt;-replace&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\.in-addr\.arpa$&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;).Split(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;).Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Reverzní pořadí oktetů: 10.20.18.81 → @(&amp;#39;81&amp;#39;,&amp;#39;18&amp;#39;,&amp;#39;20&amp;#39;,&amp;#39;10&amp;#39;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $reversedOctets = @($octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;], $octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;], $octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;], $octets[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Hostová část = prvních (4 - zoneDepth) reverzních oktetů&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $hostPart = $reversedOctets[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;..(&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; - $zoneDepth)]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; ($hostPart -join &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; Normalize-Fqdn {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;param&lt;/span&gt; ([&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]$Name, [&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]$Zone)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($Name &lt;span style=&#34;color:#f92672&#34;&gt;-notmatch&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\.$&amp;#39;&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# není absolutní FQDN, přidáme zónu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($Name &lt;span style=&#34;color:#f92672&#34;&gt;-match&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\.&lt;/span&gt;$([&lt;span style=&#34;color:#66d9ef&#34;&gt;regex&lt;/span&gt;]::Escape($Zone))&lt;span style=&#34;color:#e6db74&#34;&gt;$&amp;#34;&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$Name&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$Name&lt;span style=&#34;color:#e6db74&#34;&gt;.&lt;/span&gt;$Zone&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; $Name&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endregion&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#region Hlavní logika&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Ověření modulu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;-not&lt;/span&gt; (Get-Module -ListAvailable -Name DnsServer)) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Write-Error &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Modul DnsServer není dostupný. Spusťte skript na DNS serveru nebo nainstalujte RSAT: Install-WindowsFeature RSAT-DNS-Server&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    exit &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Import-Module DnsServer -ErrorAction Stop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;`n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;=== Sync-DnsPtrRecords ===&amp;#34;&lt;/span&gt; -ForegroundColor Cyan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DNS Server  : &lt;/span&gt;$DnsServer&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Forward Zone: &lt;/span&gt;$ForwardZone&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Načtení všech reverse zón ze serveru&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Verbose &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Načítám dostupné reverse zóny...&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $allReverseZones = Get-DnsServerZone -ComputerName $DnsServer |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Where-Object { $_.ZoneName &lt;span style=&#34;color:#f92672&#34;&gt;-like&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;*.in-addr.arpa&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-and&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-not&lt;/span&gt; $_.IsAutoCreated } |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Select-Object -ExpandProperty ZoneName&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Write-Error &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Nelze načíst zóny z DNS serveru &amp;#39;&lt;/span&gt;$DnsServer&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;: &lt;/span&gt;$_&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    exit &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;-not&lt;/span&gt; $allReverseZones) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Write-Warning &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Na serveru &amp;#39;&lt;/span&gt;$DnsServer&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; nebyly nalezeny žádné reverse lookup zóny.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    exit &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Verbose &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Dostupné reverse zóny: &lt;/span&gt;$($allReverseZones -join &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;, &amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Načtení A záznamů z forward zóny&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Verbose &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Načítám A záznamy ze zóny &amp;#39;&lt;/span&gt;$ForwardZone&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;...&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $aRecords = Get-DnsServerResourceRecord -ComputerName $DnsServer -ZoneName $ForwardZone -RRType A -ErrorAction Stop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Write-Error &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Nelze načíst záznamy ze zóny &amp;#39;&lt;/span&gt;$ForwardZone&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;: &lt;/span&gt;$_&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    exit &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;-not&lt;/span&gt; $aRecords) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Write-Warning &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;V zóně &amp;#39;&lt;/span&gt;$ForwardZone&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; nebyly nalezeny žádné A záznamy.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    exit &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Nalezeno A záznamů: &lt;/span&gt;$($aRecords.Count)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -ForegroundColor Green&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Statistiky&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$stats = @{ Skipped = &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; Created = &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; Updated = &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; NoZone = &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; Errors = &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;foreach&lt;/span&gt; ($record &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; $aRecords) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $hostname = $record.HostName&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $ip       = $record.RecordData.IPv4Address.ToString()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $fqdn     = &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($hostname &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;@&amp;#39;&lt;/span&gt;) { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ForwardZone&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;#34;&lt;/span&gt; } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$hostname&lt;span style=&#34;color:#e6db74&#34;&gt;.&lt;/span&gt;$ForwardZone&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;#34;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Write-Verbose &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Zpracovávám: &lt;/span&gt;$fqdn&lt;span style=&#34;color:#e6db74&#34;&gt; → &lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Najdi příslušnou reverse zónu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $reverseZone = Get-ReverseZoneName -IpAddress $ip -AvailableReverseZones $allReverseZones&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;-not&lt;/span&gt; $reverseZone) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Write-Warning &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  [&lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt;] &lt;/span&gt;$fqdn&lt;span style=&#34;color:#e6db74&#34;&gt; — reverse zóna nenalezena, přeskočeno.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $stats.NoZone++&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Hostová část PTR záznamu (např. &amp;#34;100&amp;#34; pro 192.168.1.100 v zóně 1.168.192.in-addr.arpa)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $ptrName = Get-PtrRecordName -IpAddress $ip -ReverseZone $reverseZone&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Načti existující PTR záznam (pokud existuje)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $existingPtr = Get-DnsServerResourceRecord -ComputerName $DnsServer `&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            -ZoneName $reverseZone -Name $ptrName -RRType Ptr -ErrorAction SilentlyContinue&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $existingPtr = $null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($existingPtr) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $existingFqdn = $existingPtr.RecordData.PtrDomainName&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($existingFqdn &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; $fqdn) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# Shoduje se – přeskoč&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  [OK]      &lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt; → &lt;/span&gt;$fqdn&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -ForegroundColor DarkGray&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $stats.Skipped++&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# Neshoda – aktualizuj&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  [UPDATE]  &lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt; : &amp;#39;&lt;/span&gt;$existingFqdn&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; → &amp;#39;&lt;/span&gt;$fqdn&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#34;&lt;/span&gt; -ForegroundColor Yellow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($PSCmdlet.ShouldProcess(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt; v zóně &lt;/span&gt;$reverseZone&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Aktualizovat PTR &amp;#39;&lt;/span&gt;$existingFqdn&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; → &amp;#39;&lt;/span&gt;$fqdn&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#34;&lt;/span&gt;)) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;# DNS modul nemá přímý Set pro PTR – odstraníme a vytvoříme znovu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    Write-host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DNS modul nemá přímý Set pro PTR – odstraníme a vytvoříme znovu&amp;#34;&lt;/span&gt; -ForegroundColor Yellow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;# Remove-DnsServerResourceRecord -ComputerName $DnsServer `&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;#     -ZoneName $reverseZone -Name $ptrName -RRType Ptr -Force -ErrorAction Stop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    Write-host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Vytvářím nový PTR záznam...&amp;#34;&lt;/span&gt; -ForegroundColor Yellow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;# Add-DnsServerResourceRecordPtr -ComputerName $DnsServer `&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;#     -ZoneName $reverseZone -Name $ptrName -PtrDomainName $fqdn -ErrorAction Stop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;             Aktualizováno.&amp;#34;&lt;/span&gt; -ForegroundColor Green&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    $stats.Updated++&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    Write-Warning &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  [CHYBA]   Aktualizace selhala pro &lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt; : &lt;/span&gt;$_&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    $stats.Errors++&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# PTR neexistuje – vytvoř&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  [CREATE]  &lt;/span&gt;$ip&lt;span style=&#34;color:#e6db74&#34;&gt; → &lt;/span&gt;$fqdn&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -ForegroundColor Cyan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# if ($PSCmdlet.ShouldProcess(&amp;#34;$ip v zóně $reverseZone&amp;#34;, &amp;#34;Vytvořit PTR &amp;#39;$fqdn&amp;#39;&amp;#34;)) {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#     try {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#         Add-DnsServerResourceRecordPtr -ComputerName $DnsServer `&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#             -ZoneName $reverseZone -Name $ptrName -PtrDomainName $fqdn -ErrorAction Stop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#         Write-Host &amp;#34;             Vytvořeno.&amp;#34; -ForegroundColor Green&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#         $stats.Created++&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#     }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#     catch {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#         Write-Warning &amp;#34;  [CHYBA]   Vytvoření selhalo pro $ip : $_&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#         $stats.Errors++&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#     }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endregion&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#region Souhrn&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;=== Souhrn ===&amp;#34;&lt;/span&gt; -ForegroundColor Cyan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  Přeskočeno (shoda) : &lt;/span&gt;$($stats.Skipped)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  Vytvořeno          : &lt;/span&gt;$($stats.Created)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  Aktualizováno      : &lt;/span&gt;$($stats.Updated)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  Bez reverse zóny   : &lt;/span&gt;$($stats.NoZone)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  Chyby              : &lt;/span&gt;$($stats.Errors)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Write-Host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endregion&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>CLI Packet Analyzer: moje lehčí alternativa k Wiresharku</title>
      <link>http://localhost:1314/read/packet-analyzer/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/packet-analyzer/</guid>
      <description>&lt;p&gt;Klasický Wireshark je skvělý, ale ne vždy potřebuju tank a navíc je to cli nástroj, takže ho mohu používat rovnou v terinálu (kde jsem stejně pořád 😁)&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;sniffing paketů na vybraném interface&lt;/li&gt;&#xA;&lt;li&gt;parsery pro běžné protokoly (např. DNS, DHCP, ARP, ICMP)&lt;/li&gt;&#xA;&lt;li&gt;pravidla nad provozem (event/rules engine)&lt;/li&gt;&#xA;&lt;li&gt;přehled v tabulce bez zbytečného šumu&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;kde-mi-pomohl&#34;&gt;Kde mi pomohl&lt;/h2&gt;&#xA;&lt;p&gt;Používám ho hlavně při diagnostice problémů v lokální síti, kdy potřebuji rychle zjistit, kdo se s kým baví a proč to padá.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dead Link Checker: kontrola nefunkčních odkazů</title>
      <link>http://localhost:1314/read/dead-link-checker/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/dead-link-checker/</guid>
      <description>&lt;p&gt;Rozbité odkazy kazí web, UX i důvěryhodnost. Tenhle script jsem napsal, abych je nemusel hledat ručně.&lt;/p&gt;&#xA;&lt;p&gt;Stačí pustit kontrolu a nástroj vrátí seznam funkčních, nefunkčních a podezřelých odkazů. Hotovo během chvíle.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;kontrola URL ze vstupního souboru&lt;/li&gt;&#xA;&lt;li&gt;rozlišení good/bad/unknown linků&lt;/li&gt;&#xA;&lt;li&gt;jednoduché CLI přepínače&lt;/li&gt;&#xA;&lt;li&gt;export výsledků (včetně JSON)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;kdy-ho-používám&#34;&gt;Kdy ho používám&lt;/h2&gt;&#xA;&lt;p&gt;Původní účel byl odstranění deadlinků v intranetových stránkách, které si editovali uživatelé sami několik let. Během té doby vznikla spousta odkazů, které už nefungují, a ruční kontrola by byla peklo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Domain monitoring: hlídání expirace domén</title>
      <link>http://localhost:1314/read/domain-sniping/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/domain-sniping/</guid>
      <description>&lt;p&gt;Tenhle projekt řeší jednoduchý problém: nechci ručně kontrolovat domény, jestli jsou volné, expirované nebo se u nich něco změnilo.&lt;/p&gt;&#xA;&lt;p&gt;Script běží v intervalu, porovnává stav proti předchozímu běhu a při změně pošle notifikaci přes webhook.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;načtení seznamu domén ze souboru&lt;/li&gt;&#xA;&lt;li&gt;pravidelná WHOIS kontrola&lt;/li&gt;&#xA;&lt;li&gt;ukládání předchozího stavu&lt;/li&gt;&#xA;&lt;li&gt;log změn s časovou značkou&lt;/li&gt;&#xA;&lt;li&gt;webhook alert při změně&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;kde-se-to-hodí&#34;&gt;Kde se to hodí&lt;/h2&gt;&#xA;&lt;p&gt;Ideální pro menší portfolio domén, interní projekty nebo hlídání důležitých názvů.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenData Léky: datový dashboard nad veřejnými daty</title>
      <link>http://localhost:1314/read/opendata-leky/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/opendata-leky/</guid>
      <description>&lt;p&gt;Mám rád projekty, které spojí kód, data a reálný dopad. Přesně tohle je případ OpenData Léky.&lt;/p&gt;&#xA;&lt;p&gt;Původně byl určen pro rodinné příslušníky, kteří uživají větší množství léčiv, občas sje potřeba najít náhradu nějaké účinné látky, která se zrovna nedá sehnat nebo dohledat příbalové letáky. Projekt se ale rozrostl do komplexnějšího dashboardu, který umožňuje procházet a analyzovat veřejné datasetů o lécích, jejich účinných látkách, interakcích a dalších parametrech.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-projekt-obsahuje&#34;&gt;Co projekt obsahuje&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;import a zpracování dat do DB&lt;/li&gt;&#xA;&lt;li&gt;pomocné skripty pro práci s tabulkami&lt;/li&gt;&#xA;&lt;li&gt;dashboard postavený nad Dash/Plotly&lt;/li&gt;&#xA;&lt;li&gt;základní interaktivní pohledy nad datasetem&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;proč-je-to-zajímavé&#34;&gt;Proč je to zajímavé&lt;/h2&gt;&#xA;&lt;p&gt;Nejde jen o jeden script, ale o celé mini datové workflow od ingestu až po vizualizaci.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RTF to TXT: rychlá extrakce čitelného textu</title>
      <link>http://localhost:1314/read/rtf-to-txt/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/rtf-to-txt/</guid>
      <description>&lt;p&gt;Občas člověk dostane data v RTF a potřebuje z nich co nejrychleji vytáhnout čistý text. Bez formátování, bez ručního kopírování.&lt;/p&gt;&#xA;&lt;p&gt;Tenhle script dělá přesně to: odstraní RTF syntaxi, dekóduje znaky a vrátí čitelný výstup.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;odstranění RTF control wordů&lt;/li&gt;&#xA;&lt;li&gt;odfiltrování technických bloků a skupin&lt;/li&gt;&#xA;&lt;li&gt;převod escapovaných hex znaků&lt;/li&gt;&#xA;&lt;li&gt;vrácení plain textu vhodného pro další zpracování&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;kde-to-používám&#34;&gt;Kde to používám&lt;/h2&gt;&#xA;&lt;p&gt;Původně jsem tím převáděl data z SQL databáze z lékařského programu, který byl v RTF a já potřeboval jen text pro další zpracování.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SampleSeeker: rychlé třídění hudebních samplů</title>
      <link>http://localhost:1314/read/sample-seeker/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/sample-seeker/</guid>
      <description>&lt;p&gt;Když se člověku začne hromadit knihovna samplů, za chvíli neví, co kde má. Přesně proto vznikl SampleSeeker.&lt;/p&gt;&#xA;&lt;p&gt;Nástroj načte audio soubory, spočítá základní vlastnosti a pomůže je roztřídit tak, aby se s nimi dalo lépe pracovat.&lt;/p&gt;&#xA;&lt;p&gt;Audio se dá přehrát rovnou v webové aplikaci, což usnadňuje rychlé posouzení kvality a vhodnosti samplu.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;prohledání složek se samply&lt;/li&gt;&#xA;&lt;li&gt;základní audio analýza&lt;/li&gt;&#xA;&lt;li&gt;jednoduchá kategorizace (one-shot, drum, bass, melody&amp;hellip;)&lt;/li&gt;&#xA;&lt;li&gt;ukládání informací do lokální databáze&lt;/li&gt;&#xA;&lt;li&gt;rychlé vyhledání konkrétního zvuku&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;pro-koho-to-je&#34;&gt;Pro koho to je&lt;/h2&gt;&#xA;&lt;p&gt;Pro každého, kdo produkuje hudbu a nechce trávit půlku času jen hledáním správného samplu.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software audit ve Windows síti</title>
      <link>http://localhost:1314/read/software-audit/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/software-audit/</guid>
      <description>&lt;p&gt;Když má člověk víc stanic, ruční kontrola instalovaného software je nekonečný příběh. Proto jsem si napsal vlastní audit script.&lt;/p&gt;&#xA;&lt;p&gt;Nástroj projde seznam počítačů, vytáhne software z registrů a uloží výstup pro další zpracování.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;čtení seznamu stanic ze souboru&lt;/li&gt;&#xA;&lt;li&gt;remote přístup do registrů Windows&lt;/li&gt;&#xA;&lt;li&gt;sběr názvu a verze instalací&lt;/li&gt;&#xA;&lt;li&gt;export do CSV&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;co-mi-to-řeší&#34;&gt;Co mi to řeší&lt;/h2&gt;&#xA;&lt;p&gt;Mám rychlý přehled o tom, co je kde nainstalované, a můžu lépe plánovat aktualizace i bezpečnostní kontroly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vlastní Syslog server s rotací logů</title>
      <link>http://localhost:1314/read/syslog-server/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/syslog-server/</guid>
      <description>&lt;p&gt;Potřeboval jsem jednoduchý syslog server, který zvládne víc zařízení, nebude se dusit a nebude mi nekonečně nafukovat log soubory.&lt;/p&gt;&#xA;&lt;p&gt;Výsledek je server, který umí logy třídit podle organizace/sítě, rotovat soubory a běžet stabilně i při vyšším provozu.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;příjem syslog zpráv přes UDP&lt;/li&gt;&#xA;&lt;li&gt;parsování priority/facility/severity&lt;/li&gt;&#xA;&lt;li&gt;rozdělení logů podle zdroje&lt;/li&gt;&#xA;&lt;li&gt;automatická rotace souborů podle velikosti&lt;/li&gt;&#xA;&lt;li&gt;multithread zpracování&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reálné-použití&#34;&gt;Reálné použití&lt;/h2&gt;&#xA;&lt;p&gt;Hodí se to jako lehký centrální sběr logů pro menší infrastrukturu nebo jako první vrstva před další analýzou.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wave Function Collapse v Pythonu</title>
      <link>http://localhost:1314/read/wave-function-collapse/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/wave-function-collapse/</guid>
      <description>&lt;p&gt;Wave Function Collapse mě zaujal tím, jak elegantně umí z jednoduchých pravidel skládat překvapivě komplexní výstupy.&lt;/p&gt;&#xA;&lt;p&gt;Tenhle projekt je experiment s tímhle přístupem v Pythonu, včetně solveru a testů.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-je-uvnitř&#34;&gt;Co je uvnitř&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;implementace WFC solveru&lt;/li&gt;&#xA;&lt;li&gt;práce s patterny a adjacency pravidly&lt;/li&gt;&#xA;&lt;li&gt;testy ověřující konzistenci řešení&lt;/li&gt;&#xA;&lt;li&gt;podpora pro další rozšiřování pravidel&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;k-čemu-je-to-dobré&#34;&gt;K čemu je to dobré&lt;/h2&gt;&#xA;&lt;p&gt;Hodí se pro procedurální generování map, textur nebo levelů, ale i jako dobrý studijní materiál k práci s constraint algoritmy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WHOIS Inspector: hromadná analýza IP adres</title>
      <link>http://localhost:1314/read/whois-inspector/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/whois-inspector/</guid>
      <description>&lt;p&gt;Tenhle projekt vznikl ve chvíli, kdy jsem potřeboval rychle projet větší seznam IP adres a zjistit, komu patří, odkud jsou a co s nimi dál dělat.&lt;/p&gt;&#xA;&lt;p&gt;Ruční lookup po jedné IP je v praxi peklo, takže jsem si postavil vlastní workflow, které zvládne dávku, hlídá rychlost dotazů a dává čistý výstup do souboru.&lt;/p&gt;&#xA;&lt;h2 id=&#34;co-to-umí&#34;&gt;Co to umí&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;načtení IP adres ze souboru nebo vstupu&lt;/li&gt;&#xA;&lt;li&gt;dávkové WHOIS dotazy&lt;/li&gt;&#xA;&lt;li&gt;řízení rychlosti dotazů (rate limit)&lt;/li&gt;&#xA;&lt;li&gt;logování průběhu&lt;/li&gt;&#xA;&lt;li&gt;export výsledků do CSV/JSON&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;kdy-to-používám&#34;&gt;Kdy to používám&lt;/h2&gt;&#xA;&lt;p&gt;Nejčastěji při rychlé bezpečnostní analýze logů, při třídění alertů ze SIEMu nebo při kontrole podezřelého provozu.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zdrojové kódy projektů</title>
      <link>http://localhost:1314/projects/repo-browser/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/projects/repo-browser/</guid>
      <description></description>
    </item>
    <item>
      <title>Automatické skrývání sponzorovaných výsledků ve vyhledávačích</title>
      <link>http://localhost:1314/code/skryj-sponzorovane-odkazy/</link>
      <pubDate>Fri, 24 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/skryj-sponzorovane-odkazy/</guid>
      <description>&lt;p&gt;Otravují vás sponzorované odkazy na začátku výsledků vyhledávání na google.com?&lt;/p&gt;&#xA;&lt;p&gt;Níže je rychlý GreaseMonkey / Tampermonkey skript, který tyto odkazy automaticky skryje. Stačí ho nainstalovat a nastavit pro google.com.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// ==UserScript==&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @name         Hide Google Sponsored Results&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @namespace    https://stefula.cz/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @version      1.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @description  Automatically hides sponsored/ad results on Google search&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @author       CyberTriber&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @match        https://www.google.com/search*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @grant        none&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// @run-at       document-idle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// ==/UserScript==&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; () {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;use strict&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;     * Clicks all visible &amp;#34;hide sponsored&amp;#34; toggles on the page.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;     * The toggle div uses jscontroller=&amp;#34;zUBn7b&amp;#34; and contains a span&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;     * with the text &amp;#34;Hide sponsored result&amp;#34;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;     */&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;hideSponsoredResults&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// Find toggle buttons by stable text content — independent of dynamic class/jscontroller names.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// Google always renders two spans inside the toggle:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;//   &amp;#34;Show sponsored result&amp;#34;  (visible when ads are hidden)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;//   &amp;#34;Hide sponsored result&amp;#34;  (visible when ads are shown)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// We locate every element whose text includes &amp;#34;Hide sponsored result&amp;#34; and is currently visible,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// then walk up to the nearest role=&amp;#34;button&amp;#34; ancestor and click it.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;allSpans&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; document.&lt;span style=&#34;color:#a6e22e&#34;&gt;querySelectorAll&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;span&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;allSpans&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;forEach&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;span&lt;/span&gt; =&amp;gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;span&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;textContent&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;trim&lt;/span&gt;() &lt;span style=&#34;color:#f92672&#34;&gt;!==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Hide sponsored result&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// Skip if this label is already hidden (ads already collapsed)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (window.&lt;span style=&#34;color:#a6e22e&#34;&gt;getComputedStyle&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;span&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;display&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;none&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// Walk up to the clickable container (has role=&amp;#34;button&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;button&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;span&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;closest&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;[role=&amp;#34;button&amp;#34;]&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;button&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;button&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;click&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        });&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// Run once when the page first loads&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;hideSponsoredResults&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// Re-run whenever Google dynamically updates the results (SPA navigation / infinite scroll).&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// Throttled to avoid excessive calls during rapid DOM mutations.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;debounceTimer&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;observer&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MutationObserver&lt;/span&gt;(() =&amp;gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;clearTimeout&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;debounceTimer&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;debounceTimer&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeout&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;hideSponsoredResults&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    });&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;observer&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;observe&lt;/span&gt;(document.&lt;span style=&#34;color:#a6e22e&#34;&gt;body&lt;/span&gt;, {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;childList&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;subtree&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    });&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;})();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://localhost:1314/img/scripts/sponor_hide.png&#34; alt=&#34;skryté sponzorované odkazy&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generátor řešení pro sudoku</title>
      <link>http://localhost:1314/code/sudoku-solver/</link>
      <pubDate>Fri, 24 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/sudoku-solver/</guid>
      <description>&lt;p&gt;Jednoduchý backtrackingový algoritmus pro řešení sudoku. Tento script prohledává všechny možné kombinace čísel v mřížce a vrací řešení, pokud existuje.&lt;/p&gt;&#xA;&lt;p&gt;Ve skriptu stačí nadefinovat vstupní rozložení čísel na mřížce (0 představuje prázdné pole) a spustit funkci &lt;code&gt;solve()&lt;/code&gt;, která vypíše všechny možné řešení pro danou mřížku.&lt;/p&gt;&#xA;&lt;p&gt;Ve scriptu je nastaveno toto Sudoku pole:&#xA;&lt;img src=&#34;http://localhost:1314/img/scripts/sudoku_zadani.png&#34; alt=&#34;sudoku - zadání&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Script najde řešení a vypíše ho na obrazovku, stiskem klávesy enter provedete novou analýzu, pokud bude existovat další řešení, opět se vypíše, a to tak dlouho, dokud nebudou vyčerpány všechny možnosti.&lt;/p&gt;</description>
    </item>
    <item>
      <title>generování notového zápisu (pomocí MuseScore)</title>
      <link>http://localhost:1314/code/note_sheets/</link>
      <pubDate>Fri, 24 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/note_sheets/</guid>
      <description>&lt;p&gt;Vzhledem ke skutečnosti, že neumím noty a učit se je nechci, stále vymýšlím, jak to obejít a práci si usnadnit. Jednou z možností, kterou jsem zkoušel, bylo generování notového zápisu pomocí pythonu a následné zobrazení v MuseScore.&lt;/p&gt;&#xA;&lt;p&gt;Použil jsem knihovnu music21, která umožňuje vytvářet a manipulovat s hudebními daty v Pythonu. Ve scriptu jsou pro demo účely vytvořeny jednoduché noty a akordy, které jsou následně zobrazeny v MuseScore. Tento přístup mi umožňuje rychle generovat notový zápis bez nutnosti manuálního zadávání not do MuseScore, což je pro mě jako začátečníka velkou výhodou.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Root.cz RSS</title>
      <link>http://localhost:1314/projects/rss_root/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/projects/rss_root/</guid>
      <description>&lt;p&gt;RSS agregát článků, zpráviček a článků na fóru ze serveru Root.cz, ale bez článků od Davida Ježka.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://localhost:1314/projects/root.html&#34;&gt;Otevřít projekt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deaktivace nového kontextového menu</title>
      <link>http://localhost:1314/read/context_menu/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/context_menu/</guid>
      <description>&lt;p&gt;Pokud vás &amp;ldquo;nová a úžasná&amp;rdquo; kontextová nabídka taky sere, protože funkce které používate tu najednou nejsou a musíte klikat 2x ? Tak tady je návod jak se toho zbavit a vrátit zpět původní kontextovou nabídku.&lt;/p&gt;&#xA;&lt;h3 id=&#34;přidání-klíče-do-registru&#34;&gt;Přidání klíče do registru:&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;reg add &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&amp;#34;&lt;/span&gt; /f /ve&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;a restart explorer.exe.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;taskkill /f /im explorer.exe; start explorer.exe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pokud byste chtěli vrátit zpět, stačí ten klíč smazat a znovu restartovat explorer.exe.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Můj hudební setup</title>
      <link>http://localhost:1314/read/music_setup/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/music_setup/</guid>
      <description>&lt;p&gt;Někdy kolem roku 2022 - 2023 jsem se rozhodl, že bych se mohl začít věnovat hudbě, která mě doprovází celý život, už bylo na čase začít zkusit vyprodukovat něco vlastního.&lt;/p&gt;&#xA;&lt;p&gt;K narozeninám jsem dostal kytaru, koupil jsem si první zařízení z celého setupu a to ZOOM H1-N1, díky kterému jsem mohl začít nahrávat své první pokusy. Kytara je fajn nástroj, ale po dlouhém hraní bolí prsty od křečovitého svírání strun a tak jsem se rozhodl pořídit první MIDI klávesy (které jsem už poslal do světa, ať dělají radost někomu jinému).&lt;/p&gt;</description>
    </item>
    <item>
      <title>ODT (Office Deployment Tool)</title>
      <link>http://localhost:1314/read/odt/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/odt/</guid>
      <description>&lt;p&gt;Pomocí nástroje ODT, lze instalovat a hlavně odinstalovat libovolnou verzi office (i když standardní odinstalace již nefunguje).&#xA;Stažení: &lt;a href=&#34;https://www.microsoft.com/en-us/download/details.aspx?id=49117&#34;&gt;Office Deployment Tool&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Po rozbalení budeme mít soubor Setup.exe a příklad konfiguračního souboru XML&#xA;K instalaci i odinstalaci se spouští Setup.exe - akce jsou potom závislé na dodaném konfiguračním souboru.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;setup.exe /configure installconfig.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;příklady-jednotlivých-xml-konfiguračních-souborů&#34;&gt;Příklady jednotlivých XML konfiguračních souborů.&lt;/h4&gt;&#xA;&lt;p&gt;Do XML lze vložit i ID licence (PIDKEY) nebo lokální zdroj odkud instalovat (rozbalené ISO) jako parametr SourcePath (např.:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seznam nástrojů pro sysadminy</title>
      <link>http://localhost:1314/read/admin_tools/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/admin_tools/</guid>
      <description>&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#awesome-sysadmin&#34;&gt;Awesome Sysadmin&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#backups&#34;&gt;Backups&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#build-automation&#34;&gt;Build Automation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#chatops&#34;&gt;ChatOps&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#cloning&#34;&gt;Cloning&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#cloud-computing&#34;&gt;Cloud Computing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#cloud-storage&#34;&gt;Cloud Storage&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#code-review&#34;&gt;Code Review&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#collaborative-software&#34;&gt;Collaborative Software&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#configuration-management-database&#34;&gt;Configuration Management Database&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#configuration-management&#34;&gt;Configuration Management&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#continuous-integration--continuous-deployment&#34;&gt;Continuous Integration &amp;amp; Continuous Deployment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#control-panels&#34;&gt;Control Panels&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#deployment-automation&#34;&gt;Deployment Automation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#diagramming&#34;&gt;Diagramming&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#distributed-filesystems&#34;&gt;Distributed Filesystems&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#dns&#34;&gt;DNS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#editors&#34;&gt;Editors&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#it-asset-management&#34;&gt;IT Asset Management&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#ldap&#34;&gt;LDAP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#log-management&#34;&gt;Log Management&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#mail-servers&#34;&gt;Mail Servers&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#messaging&#34;&gt;Messaging&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#monitoring&#34;&gt;Monitoring&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#metric--metric-collection&#34;&gt;Metric &amp;amp; Metric Collection&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#network-configuration-management&#34;&gt;Network Configuration Management&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#newsletters&#34;&gt;Newsletter&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#nosql&#34;&gt;NoSQL&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#packaging&#34;&gt;Packaging&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#queuing&#34;&gt;Queuing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#rdbms&#34;&gt;RDBMS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#security&#34;&gt;Security&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#service-discovery&#34;&gt;Service Discovery&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#software-containers&#34;&gt;Software Containers&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#ssh&#34;&gt;SSH&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#statistics&#34;&gt;Statistics&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#status-pages&#34;&gt;Status Pages&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#ticketing-systems&#34;&gt;Ticketing systems&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#troubleshooting&#34;&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#project-management&#34;&gt;Project Management&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#version-control&#34;&gt;Version control&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#virtualization&#34;&gt;Virtualization&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#vpn&#34;&gt;VPN&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#web&#34;&gt;Web&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#webmails&#34;&gt;Webmails&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#wikis&#34;&gt;Wikis&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#resources&#34;&gt;Resources&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#blogs&#34;&gt;Blogs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#books&#34;&gt;Books&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#newsletters&#34;&gt;Newsletters&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#repositories&#34;&gt;Repositories&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/admin_tools/#websites&#34;&gt;Websites&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;backups&#34;&gt;Backups&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;Backup software.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seznam veřejných API </title>
      <link>http://localhost:1314/read/public_api_list/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/public_api_list/</guid>
      <description>&lt;h2 id=&#34;index&#34;&gt;Index&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#animals&#34;&gt;Animals&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#anime&#34;&gt;Anime&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#anti-malware&#34;&gt;Anti-Malware&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#art--design&#34;&gt;Art &amp;amp; Design&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#authentication--authorization&#34;&gt;Authentication &amp;amp; Authorization&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#blockchain&#34;&gt;Blockchain&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#books&#34;&gt;Books&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#business&#34;&gt;Business&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#calendar&#34;&gt;Calendar&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#cloud-storage--file-sharing&#34;&gt;Cloud Storage &amp;amp; File Sharing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#continuous-integration&#34;&gt;Continuous Integration&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#cryptocurrency&#34;&gt;Cryptocurrency&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#currency-exchange&#34;&gt;Currency Exchange&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#data-validation&#34;&gt;Data Validation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#development&#34;&gt;Development&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#dictionaries&#34;&gt;Dictionaries&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#documents--productivity&#34;&gt;Documents &amp;amp; Productivity&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#email&#34;&gt;Email&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#entertainment&#34;&gt;Entertainment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#environment&#34;&gt;Environment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#events&#34;&gt;Events&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#finance&#34;&gt;Finance&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#food--drink&#34;&gt;Food &amp;amp; Drink&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#games--comics&#34;&gt;Games &amp;amp; Comics&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#geocoding&#34;&gt;Geocoding&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#government&#34;&gt;Government&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#health&#34;&gt;Health&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#jobs&#34;&gt;Jobs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#machine-learning&#34;&gt;Machine Learning&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#music&#34;&gt;Music&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#news&#34;&gt;News&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#open-data&#34;&gt;Open Data&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#open-source-projects&#34;&gt;Open Source Projects&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#patent&#34;&gt;Patent&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#personality&#34;&gt;Personality&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#phone&#34;&gt;Phone&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#photography&#34;&gt;Photography&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#programming&#34;&gt;Programming&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#science--math&#34;&gt;Science &amp;amp; Math&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#security&#34;&gt;Security&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#shopping&#34;&gt;Shopping&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#social&#34;&gt;Social&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#sports--fitness&#34;&gt;Sports &amp;amp; Fitness&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#test-data&#34;&gt;Test Data&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#text-analysis&#34;&gt;Text Analysis&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#tracking&#34;&gt;Tracking&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#transportation&#34;&gt;Transportation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#url-shorteners&#34;&gt;URL Shorteners&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#vehicle&#34;&gt;Vehicle&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#video&#34;&gt;Video&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#weather&#34;&gt;Weather&lt;/a&gt;&#xA;&lt;br &gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;animals&#34;&gt;Animals&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;API&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Auth&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;HTTPS&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;CORS&lt;/th&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://www.adoptapet.com/public/apis/pet_list.html&#34;&gt;AdoptAPet&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Resource to help get pets adopted&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;apiKey&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://theaxolotlapi.netlify.app/&#34;&gt;Axolotl&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Collection of axolotl pictures and facts&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://alexwohlbruck.github.io/cat-facts/&#34;&gt;Cat Facts&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Daily cat facts&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://cataas.com/&#34;&gt;Cataas&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Cat as a service (cats pictures and gifs)&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://docs.thecatapi.com/&#34;&gt;Cats&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Pictures of cats from Tumblr&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;apiKey&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://dukengn.github.io/Dog-facts-API/&#34;&gt;Dog Facts&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Random dog facts&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://kinduff.github.io/dog-api/&#34;&gt;Dog Facts&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Random facts of Dogs&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://dog.ceo/dog-api/&#34;&gt;Dogs&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Based on the Stanford Dogs Dataset&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://documenter.getpostman.com/view/664302/S1ENwy59&#34;&gt;eBird&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Retrieve recent or notable birding observations within a region&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;apiKey&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://www.fishwatch.gov/developers&#34;&gt;FishWatch&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Information and pictures about individual fish species&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://http.cat/&#34;&gt;HTTP Cat&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Cat for every HTTP Status&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://http.dog/&#34;&gt;HTTP Dog&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Dogs for every HTTP response status code&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;http://apiv3.iucnredlist.org/api/v3/docs&#34;&gt;IUCN&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IUCN Red List of Threatened Species&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;apiKey&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/wh-iterabb-it/meowfacts&#34;&gt;MeowFacts&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Get random cat facts&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/movebank/movebank-api-doc&#34;&gt;Movebank&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Movement and Migration data of animals&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://www.petfinder.com/developers/&#34;&gt;Petfinder&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Petfinder is dedicated to helping pets find homes, another resource to get pets adopted&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;apiKey&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://placebear.com/&#34;&gt;PlaceBear&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Placeholder bear pictures&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://place.dog&#34;&gt;PlaceDog&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Placeholder Dog pictures&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://placekitten.com/&#34;&gt;PlaceKitten&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Placeholder Kitten pictures&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://random.dog/woof.json&#34;&gt;RandomDog&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Random pictures of dogs&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://random-d.uk/api&#34;&gt;RandomDuck&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Random pictures of ducks&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://randomfox.ca/floof/&#34;&gt;RandomFox&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Random pictures of foxes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://userguide.rescuegroups.org/display/APIDG/API&amp;#43;Developers&amp;#43;Guide&amp;#43;Home&#34;&gt;RescueGroups&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Adoption&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Unknown&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;http://shibe.online/&#34;&gt;Shibe.Online&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Random pictures of Shiba Inu, cats or birds&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://thedogapi.com/&#34;&gt;The Dog&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;A public service all about Dogs, free to use when making your fancy new App, Website or Service&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;apiKey&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://xeno-canto.org/explore/api&#34;&gt;xeno-canto&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Bird recordings&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Unknown&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://zoo-animal-api.herokuapp.com/&#34;&gt;Zoo Animals&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Facts and pictures of zoo animals&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;No&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;http://localhost:1314/read/public_api_list/#index&#34;&gt;⬆ Back to Index&lt;/a&gt;&lt;/strong&gt;&#xA;&lt;br &gt;&#xA;&lt;br &gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Změna edice Windows</title>
      <link>http://localhost:1314/read/zmena-edice-win/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/zmena-edice-win/</guid>
      <description>&lt;p&gt;Změna edice Windows&lt;/p&gt;&#xA;&lt;p&gt;Situace: Nainstalována verze windows, která nesouhlasí s licenčním klíčem. Např. nainstalována verze server standard ale licenci máme na server datacenter.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://localhost:1314/img/win/product_key.png&#34; alt=&#34;Product key&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Verzi Windows lze szměnit (s omezeními) pomocí příkazu DISM&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dism /online /set-edition:ServerDatacenter /productkey:VÁŠ-PRODUCT-KEY /accepteula&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://localhost:1314/img/win/dism.png&#34; alt=&#34;DISM&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Po restartu je možné aktivovat systém pomocí patřičného klíče.&lt;/p&gt;&#xA;&lt;p&gt;Omezení: &lt;a href=&#34;https://learn.microsoft.com/en-us/windows-server/get-started/upgrade-conversion-options&#34;&gt;zdroj&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Windows Server od 2008 R2 a výše&lt;/li&gt;&#xA;&lt;li&gt;Povolené směry:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Standard → Enterprise → Datacenter&lt;/li&gt;&#xA;&lt;li&gt;Standard → Datacenter&lt;/li&gt;&#xA;&lt;li&gt;Datacenter → Datacenter: Azure Edition&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Nepovolené směry:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Datacenter → Standard&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Nelze měnit architekturu 64b → 32b&lt;/li&gt;&#xA;&lt;li&gt;Nelze takto měnit edice Insider verzí, je potřeba nainstalovat klasickou verzi Windows&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;dism-parametry&#34;&gt;DISM parametry:&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Parametr&lt;/th&gt;&#xA;          &lt;th&gt;Stručný popis (čeština)&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Image:&lt;cesta&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Cíl – offline obraz Windows (adresář s Windows), nelze používat s /Online.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Online&lt;/td&gt;&#xA;          &lt;td&gt;Použije akci na právě běžící systém (online instanci Windows).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/WinDir:&lt;cesta&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Cesta do složky Windows v offline obrazu (relativní vůči /Image).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/SysDriveDir:&lt;cesta&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Cesta k adresáři BootMgr, pokud je mimo složku Windows.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/LogPath:&amp;lt;cesta\k\souboru.log&amp;gt;&lt;/td&gt;&#xA;          &lt;td&gt;Určuje umístění logu DISM (výchozí %WINDIR%\Logs\Dism\dism.log).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/LogLevel:&amp;lt;1–4&amp;gt;&lt;/td&gt;&#xA;          &lt;td&gt;Úroveň logování: 1‑chyby, 2‑chyby+varování, 3‑chyby+info, 4‑vše včetně debug.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/ScratchDir:&lt;cesta&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Dočasný adresář pro operace; musí být lokální (výchozí Temp).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Quiet&lt;/td&gt;&#xA;          &lt;td&gt;Potlačí výstup průběhu – zobrazí se jen chyby.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/NoRestart&lt;/td&gt;&#xA;          &lt;td&gt;Zabrání automatickému restartu po dokončení.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/English&lt;/td&gt;&#xA;          &lt;td&gt;Vynutí anglický výstup parametrů a chyb.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Format:&lt;FormatType&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Určuje formát výstupu (např. Table, List, XML).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Get‑Help nebo /?&lt;/td&gt;&#xA;          &lt;td&gt;Vypíše nápovědu pro DISM nebo pro konkrétní pod-příkaz.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;dism-servisní-příkazy&#34;&gt;DISM servisní příkazy:&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Přepínač&lt;/th&gt;&#xA;          &lt;th&gt;Popis (čeština)&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Get-CurrentEdition&lt;/td&gt;&#xA;          &lt;td&gt;Ukáže aktuální edici Windows (online/offline).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Get-TargetEditions&lt;/td&gt;&#xA;          &lt;td&gt;Seznam povolených edic, na které lze přejít.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Set-Edition:&lt;/td&gt;&#xA;          &lt;td&gt;Změní edici na vyšší (např. Standard → Datacenter).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Set-ProductKey:&lt;/td&gt;&#xA;          &lt;td&gt;Nastaví produktový klíč po offline změně edice.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/GetEula:&lt;/td&gt;&#xA;          &lt;td&gt;Exportuje EULA souboru při online změně edice.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/AcceptEula&lt;/td&gt;&#xA;          &lt;td&gt;Přijme licenční podmínky (nutné při online operacích).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Add-Package&lt;/td&gt;&#xA;          &lt;td&gt;Přidá balík (.cab, .msu) do image.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Remove-Package&lt;/td&gt;&#xA;          &lt;td&gt;Odstraní balík z image.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Enable-Feature&lt;/td&gt;&#xA;          &lt;td&gt;Zapne Windows funkci.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Disable-Feature&lt;/td&gt;&#xA;          &lt;td&gt;Vypne Windows funkci.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Cleanup-Image /CheckHealth&lt;/td&gt;&#xA;          &lt;td&gt;Rychle prověří, zda je image poškozená (bez opravy).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Cleanup-Image /ScanHealth&lt;/td&gt;&#xA;          &lt;td&gt;Hlouběji prověří stav image (hlášení problémů).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Cleanup-Image /RestoreHealth&lt;/td&gt;&#xA;          &lt;td&gt;Provádí opravu poškozeného image, automaticky stáhne chybějící soubory.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Mount-Image&lt;/td&gt;&#xA;          &lt;td&gt;Připojí WIM/VHD(X)/FFU image do složky pro servis.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Unmount-Image /Commit&lt;/td&gt;&#xA;          &lt;td&gt;Odpojí a uloží změny do image.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Unmount-Image /Discard&lt;/td&gt;&#xA;          &lt;td&gt;Odpojí a zahodí změny.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Apply-Image&lt;/td&gt;&#xA;          &lt;td&gt;Aplikuje WIM/FFU image na cílové umístění.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Append-Image&lt;/td&gt;&#xA;          &lt;td&gt;Přidá další image do multi-image WIM.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/List-Image&lt;/td&gt;&#xA;          &lt;td&gt;Vypíše seznam souborů adresářů v image (WIM).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Get-ImageInfo&lt;/td&gt;&#xA;          &lt;td&gt;Ukáže metadata (edice, index, architektura) image.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Add-Capability&lt;/td&gt;&#xA;          &lt;td&gt;Přidá Windows Capability (např. .NET, jazyk).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Remove-Capability&lt;/td&gt;&#xA;          &lt;td&gt;Odstraní Windows Capability.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Get-Capabilities&lt;/td&gt;&#xA;          &lt;td&gt;Vypíše nainstalované/čekající capabilities.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Get-CapabilityInfo&lt;/td&gt;&#xA;          &lt;td&gt;Ukáže detaily konkrétní schopnosti.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;/Export-Source&lt;/td&gt;&#xA;          &lt;td&gt;Exportuje capability do repozitáře (source).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Banger</title>
      <link>http://localhost:1314/music/banger/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/banger/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Vytvořil jsem prďáckej bass sound a potřeboval jsem ho rychle otestovat :-) Takže jsem tam hodil pár akordů, přidal nějaké efekty a vznikl Banger.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Call &#39;Em Now</title>
      <link>http://localhost:1314/music/call_em_now/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/call_em_now/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Nový výtvor, inspirací byla hlavně perkusní sekce, ke které se mi docela líbily vokály, které jsem našel na disku. Výsledek si můžete poslechnout sami.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Celestial Lofi</title>
      <link>http://localhost:1314/music/celestial-lofi/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/celestial-lofi/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Našel jsem parádní vokály, trochu kostelní, což trochu ovlivnilo i zbytek aranže. Chtěl jsem udělat něco klidnějšího, ale zároveň s nějakou energií.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Circle of Fifths</title>
      <link>http://localhost:1314/projects/circle-of-fifths/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/projects/circle-of-fifths/</guid>
      <description></description>
    </item>
    <item>
      <title>Echo Funk</title>
      <link>http://localhost:1314/music/echo-funk/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/echo-funk/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Takové trochu funky pianko s echo efektem. Chtěl jsem vytvořit něco hravého a energického, co by mohlo být fajn na poslech během dne. Je to spíš takový experiment s rytmem a efekty, ale myslím, že to má svoje kouzlo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Meteostanice pro Kadaň</title>
      <link>http://localhost:1314/projects/po%C4%8Das%C3%AD/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/projects/po%C4%8Das%C3%AD/</guid>
      <description></description>
    </item>
    <item>
      <title>Morning Jam</title>
      <link>http://localhost:1314/music/morning_jam/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/morning_jam/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Jednoho dne z rána,&lt;/p&gt;&#xA;&lt;p&gt;přísedla si vrána.&lt;/p&gt;&#xA;&lt;p&gt;Říká hoď tam bonga,&lt;/p&gt;&#xA;&lt;p&gt;ať to má grády, ať to má grády.&lt;/p&gt;&#xA;&lt;p&gt;A tak jsem tam hodil,&lt;/p&gt;&#xA;&lt;p&gt;přidal pár akordů,&lt;/p&gt;&#xA;&lt;p&gt;a vznikl Morning Jam :-D&lt;/p&gt;</description>
    </item>
    <item>
      <title>Neo</title>
      <link>http://localhost:1314/music/neo/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/neo/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Zajímavý akord, který mi hezky zněl - tak jsem toho musel využít.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oh and Ah</title>
      <link>http://localhost:1314/music/oh-n-ah/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/oh-n-ah/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Malý experiment se zvukem a modulací. Oh and Ah je krátký pokus o vytvoření atmosférické skladby s použitím modulace a efektů. Zároveň si tu trochu hraji se scratchováním a různými texturami, aby to mělo zajímavější zvuk.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PokeDeck - karetní hra</title>
      <link>http://localhost:1314/projects/pokedeck/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/projects/pokedeck/</guid>
      <description>&lt;p&gt;Online webová karetní hra, kterou jsem vytvářel pro dceru v době, kdy nutně potřebovala nové a nové balíčky pokémonů - tohle na chvilku vydrželo jako slušná náhrada. Nyní už je starší a hra je spíše takovou nostalgickou vzpomínkou, ale stále je k dispozici online.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://localhost:1314/projects/poke/&#34;&gt;Otevřít projekt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>První článek</title>
      <link>http://localhost:1314/read/prvni/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/read/prvni/</guid>
      <description>&lt;h1 id=&#34;úvod&#34;&gt;Úvod&lt;/h1&gt;&#xA;&lt;p&gt;Nejsem žádný velký pisálek, takže první článek je samozřejmě věnován tomu, že jsem se konečně rozhodl oživit tento web a začít sem přidávat obsah. Můžete očekávat různé články, návody, recenze a další zajímavosti ze světa IT, bezpečnosti a programování a hlavně hudby.&lt;/p&gt;&#xA;&lt;p&gt;Třikrát sláva &amp;hellip; a jdeme na to!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Still Dre Cover</title>
      <link>http://localhost:1314/music/stilldre-cover/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/stilldre-cover/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Chtěl jsemm vytvořil skladbu StillDre od Dr. Dre - ale nějak to nešlo, tak jsem si to udělal po svém. Zase 🤣&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trap</title>
      <link>http://localhost:1314/music/trap/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/trap/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Pokus o Trap Music.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Violin vs Bass</title>
      <link>http://localhost:1314/music/violin-vs-bass-copy/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/music/violin-vs-bass-copy/</guid>
      <description>&lt;h1 id=&#34;o-skladbě&#34;&gt;O skladbě&lt;/h1&gt;&#xA;&lt;p&gt;Tady jsem zase zkoušel nový nástroj, Novation Launchpad X, a chtěl jsem udělat něco trochu jiného. Vznikla takhle trochu divná kombinace houslí a basu, s kostelními vokály, které jsem našel. Je to takový experimentální track, ale mám ho rád.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vygenerování self-signed certifikátu</title>
      <link>http://localhost:1314/code/selfsigned_cert/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/selfsigned_cert/</guid>
      <description>&lt;p&gt;Pro vygenerování self-signed certifikátu pomocí powershellu můžete použít následující příkaz:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Ulozi aktualni datum a cas jako vychozi bod pro platnost certifikatu.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$currentDate = Get-Date&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Vypocita datum konce platnosti certifikatu o jeden rok od aktualniho data.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$endDate = $currentDate.AddYears(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Nastavi NotAfter datum (v tomto prikladu efektivne dva roky od aktualniho data).&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$notAfter = $endDate.AddYears(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Definuje heslo pro exportovany PFX soubor (nahraďte vlastnim heslem).&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$pwd = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;password&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Vytvori self-signed certifikat pro com.foo.bar a ulozi jeho thumbprint pro nasledny export.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$thumb = (New-SelfSignedCertificate -CertStoreLocation cert&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;\localmachine\my -DnsName com.foo.bar -KeyExportPolicy Exportable -Provider &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Microsoft Enhanced RSA and AES Cryptographic Provider&amp;#34;&lt;/span&gt; -NotAfter $notAfter).Thumbprint&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Prevede heslo v prostem textu na SecureString vyzadovany prikazem Export-PfxCertificate.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$pwd = ConvertTo-SecureString -String $pwd -Force -AsPlainText&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Exportuje certifikat (identifikovany thumbprintem) do heslem chraneneho PFX souboru.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Export-PfxCertificate -cert &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cert:\localmachine\my\&lt;/span&gt;$thumb&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -FilePath c:\temp\examplecert.pfx -Password $pwd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tento příkaz vytvoří self-signed certifikát pro doménu &amp;ldquo;com.foo.bar&amp;rdquo; a uloží ho do úložiště certifikátů na místním počítači. Můžete změnit &amp;ldquo;com.foo.bar&amp;rdquo; na požadovanou doménu nebo IP adresu, pro kterou chcete certifikát vygenerovat.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Výpis největších souborů v adresáři</title>
      <link>http://localhost:1314/code/get_big_files/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/get_big_files/</guid>
      <description>&lt;p&gt;Pro výpis největších souborů v adresáři pomocí PowerShellu můžete použít následující příkaz:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gci -r|sort -descending -property FullName, Length | select -first &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt; FullName, @{Name=&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Gigabytes&amp;#34;&lt;/span&gt;;Expression={[&lt;span style=&#34;color:#66d9ef&#34;&gt;Math&lt;/span&gt;]::round($_.length / &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;GB, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;)}}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tento příkaz prohledá aktuální adresář a všechny jeho podadresáře, seřadí soubory podle velikosti (od největšího po nejmenší) a vypíše prvních 20 souborů s jejich názvy a velikostí v gigabytech. Můžete změnit počet zobrazených souborů úpravou hodnoty v &lt;code&gt;select -first 20&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Výpis netstat spolu s procesem</title>
      <link>http://localhost:1314/code/netstat_s_procesem/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/netstat_s_procesem/</guid>
      <description>&lt;p&gt;Pro výpis aktivních TCP připojení spolu s informacemi o procesu, který je vlastníkem každého připojení, můžete použít následující příkaz v PowerShellu:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-NetTCPConnection -OwningProcess (Get-Process).Id -ErrorAction SilentlyContinue |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{Name=&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ProcessName&amp;#39;&lt;/span&gt;;Expression={(Get-Process -Id $_.OwningProcess).Name}} -ErrorAction SilentlyContinue |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Format-Table -AutoSize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tento příkaz využívá cmdlet &lt;code&gt;Get-NetTCPConnection&lt;/code&gt; k získání informací o všech aktivních TCP připojeních, včetně ID procesu, který je vlastníkem každého připojení. Poté pomocí &lt;code&gt;Select-Object&lt;/code&gt; přidává nový sloupec &amp;ldquo;ProcessName&amp;rdquo;, který získává název procesu na základě jeho ID. Výstup je formátován do tabulky pro lepší čitelnost.&lt;/p&gt;</description>
    </item>
    <item>
      <title>výpis USB zařízení (jako lsusb)</title>
      <link>http://localhost:1314/code/get_usb_devices/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/get_usb_devices/</guid>
      <description>&lt;p&gt;Pro výpis USB zařízení pomocí PowerShellu můžete použít následující příkaz:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Získá seznam všech USB zařízení připojených k počítači.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-PnpDevice -Class USB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tento příkaz využívá cmdlet &lt;code&gt;Get-PnpDevice&lt;/code&gt; s parametrem &lt;code&gt;-Class USB&lt;/code&gt;, který vrací informace o všech zařízeních, která jsou klasifikována jako USB. Výstup bude obsahovat informace jako název zařízení, stav, výrobce a další detaily.&lt;/p&gt;&#xA;&lt;p&gt;Další způsob bez použití &lt;code&gt;Get-PnpDevice&lt;/code&gt; je využití WMI (Windows Management Instrumentation) pro získání informací o USB zařízeních:&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI muzikant</title>
      <link>http://localhost:1314/code/ai-muzikant/</link>
      <pubDate>Fri, 31 Oct 2025 00:00:00 +0200</pubDate>
      <guid>http://localhost:1314/code/ai-muzikant/</guid>
      <description>&lt;h4 id=&#34;celý-projekt-ke-stažení-zde&#34;&gt;Celý projekt ke stažení &lt;a href=&#34;http://localhost:1314/files/AI_muzikant.zip&#34;&gt;ZDE&lt;/a&gt;&lt;/h4&gt;&#xA;&lt;p&gt;Generátor MIDI hudby řízený jazykovým modelem, který hraje noty na tvém MIDI keyboardu v reálném čase.&lt;/p&gt;&#xA;&lt;h2 id=&#34;-co-to-dělá&#34;&gt;🎯 Co to dělá&lt;/h2&gt;&#xA;&lt;p&gt;Popíšeš hudbu přirozeným jazykem a LLM vygeneruje hudební notaci, která se přehraje na tvém MIDI keyboardu (Novation Launchkey nebo jakémkoli jiném MIDI zařízení).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;🎹 &amp;gt; Play C major scale&#xD;&#xA;🤖 Asking LLM to generate notation...&#xD;&#xA;📝 Generated notation: C4 D4 E4 F4 G4 A4 B4 C5&#xD;&#xA;🔄 Parsing notation...&#xD;&#xA;✓ Parsed 16 MIDI events&#xD;&#xA;▶️  Playing...&#xD;&#xA;✓ Done!&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;-rychlý-start&#34;&gt;🚀 Rychlý start&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-instalace-závislostí&#34;&gt;1. Instalace závislostí&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip install -r requirements.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-nastavení-openai-api-klíče&#34;&gt;2. Nastavení OpenAI API klíče&lt;/h3&gt;&#xA;&lt;p&gt;Vytvoř soubor &lt;code&gt;.env&lt;/code&gt; v kořenové složce projektu:&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>http://localhost:1314/projects/cof/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://localhost:1314/projects/cof/</guid>
      <description>&lt;link rel=&#34;stylesheet&#34; href=&#34;css/cof.css&#34;&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;bg-pattern&#34;&gt;&lt;/div&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;cof-container&#34;&gt;&#xD;&#xA;    &lt;header&gt;&#xD;&#xA;        &lt;h1&gt;Circle of Fifths&lt;/h1&gt;&#xD;&#xA;        &lt;p class=&#34;subtitle&#34;&gt;Interactive Music Theory Tool for Musicians&lt;/p&gt;&#xD;&#xA;    &lt;/header&gt;&#xD;&#xA;&#xD;&#xA;    &lt;div class=&#34;main-content&#34;&gt;&#xD;&#xA;        &lt;div class=&#34;circle-container&#34;&gt;&#xD;&#xA;            &lt;svg class=&#34;circle-svg&#34; viewBox=&#34;0 0 500 500&#34; id=&#34;circleSvg&#34;&gt;&#xD;&#xA;                &lt;defs&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradC&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#fbbf24&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#f59e0b&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradG&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#14b8a6&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#0d9488&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradD&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#06b6d4&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#0891b2&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradA&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#3b82f6&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#2563eb&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradE&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#6366f1&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#4f46e5&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradB&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#8b5cf6&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#7c3aed&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradFs&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#a855f7&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#9333ea&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradCs&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#c026d3&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#a21caf&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradGs&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#db2777&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#be185d&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradDs&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#e11d48&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#be123c&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradAs&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#dc2626&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#b91c1c&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;linearGradient id=&#34;gradF&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;100%&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#ea580c&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#c2410c&#34;/&gt;&#xD;&#xA;                    &lt;/linearGradient&gt;&#xD;&#xA;                    &lt;radialGradient id=&#34;maskGradient&#34;&gt;&#xD;&#xA;                        &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:white;stop-opacity:1&#34;/&gt;&#xD;&#xA;                        &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:white;stop-opacity:1&#34;/&gt;&#xD;&#xA;                    &lt;/radialGradient&gt;&#xD;&#xA;                    &lt;filter id=&#34;glow&#34;&gt;&#xD;&#xA;                        &lt;feGaussianBlur stdDeviation=&#34;3&#34; result=&#34;coloredBlur&#34;/&gt;&#xD;&#xA;                        &lt;feMerge&gt;&#xD;&#xA;                            &lt;feMergeNode in=&#34;coloredBlur&#34;/&gt;&#xD;&#xA;                            &lt;feMergeNode in=&#34;SourceGraphic&#34;/&gt;&#xD;&#xA;                        &lt;/feMerge&gt;&#xD;&#xA;                    &lt;/filter&gt;&#xD;&#xA;                    &lt;filter id=&#34;shadow&#34; x=&#34;-20%&#34; y=&#34;-20%&#34; width=&#34;140%&#34; height=&#34;140%&#34;&gt;&#xD;&#xA;                        &lt;feDropShadow dx=&#34;0&#34; dy=&#34;4&#34; stdDeviation=&#34;8&#34; flood-color=&#34;rgba(0,0,0,0.3)&#34;/&gt;&#xD;&#xA;                    &lt;/filter&gt;&#xD;&#xA;                &lt;/defs&gt;&#xD;&#xA;                &lt;circle cx=&#34;250&#34; cy=&#34;250&#34; r=&#34;245&#34; fill=&#34;#12121a&#34; stroke=&#34;rgba(255,255,255,0.05)&#34; stroke-width=&#34;2&#34;/&gt;&#xD;&#xA;                &lt;g id=&#34;segments&#34;&gt;&lt;/g&gt;&#xD;&#xA;                &lt;circle cx=&#34;250&#34; cy=&#34;250&#34; r=&#34;70&#34; fill=&#34;#1a1a25&#34; stroke=&#34;rgba(255,255,255,0.1)&#34; stroke-width=&#34;2&#34; filter=&#34;url(#shadow)&#34;/&gt;&#xD;&#xA;                &lt;text x=&#34;250&#34; y=&#34;240&#34; text-anchor=&#34;middle&#34; fill=&#34;#6366f1&#34; font-size=&#34;11&#34; font-weight=&#34;600&#34; letter-spacing=&#34;2&#34;&gt;CIRCLE OF&lt;/text&gt;&#xD;&#xA;                &lt;text x=&#34;250&#34; y=&#34;265&#34; text-anchor=&#34;middle&#34; fill=&#34;#fff&#34; font-size=&#34;14&#34; font-weight=&#34;700&#34; letter-spacing=&#34;1&#34;&gt;FIFTHS&lt;/text&gt;&#xD;&#xA;                &lt;g id=&#34;maskGroup&#34;&gt;&#xD;&#xA;                    &lt;path id=&#34;maskPath&#34; fill=&#34;rgba(0,0,0,0.85)&#34; stroke=&#34;none&#34;/&gt;&#xD;&#xA;                &lt;/g&gt;&#xD;&#xA;                &lt;path id=&#34;highlightArc&#34; fill=&#34;none&#34; stroke=&#34;rgba(251, 191, 36, 0.3)&#34; stroke-width=&#34;3&#34; stroke-linecap=&#34;round&#34;/&gt;&#xD;&#xA;            &lt;/svg&gt;&#xD;&#xA;&#xD;&#xA;            &lt;div class=&#34;rotation-hint&#34;&gt;&#xD;&#xA;                &lt;svg width=&#34;40&#34; height=&#34;40&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;&gt;&#xD;&#xA;                    &lt;path d=&#34;M23 4v6h-6M1 20v-6h6M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15&#34;/&gt;&#xD;&#xA;                &lt;/svg&gt;&#xD;&#xA;            &lt;/div&gt;&#xD;&#xA;&#xD;&#xA;            &lt;div class=&#34;mask-controls&#34;&gt;&#xD;&#xA;                &lt;div class=&#34;mask-slider&#34;&gt;&#xD;&#xA;                    &lt;label&gt;Mask Size:&lt;/label&gt;&#xD;&#xA;                    &lt;input type=&#34;range&#34; id=&#34;maskSize&#34; min=&#34;1&#34; max=&#34;7&#34; value=&#34;7&#34; step=&#34;1&#34;&gt;&#xD;&#xA;                    &lt;span id=&#34;maskSizeLabel&#34;&gt;7 notes&lt;/span&gt;&#xD;&#xA;                &lt;/div&gt;&#xD;&#xA;            &lt;/div&gt;&#xD;&#xA;        &lt;/div&gt;&#xD;&#xA;&#xD;&#xA;        &lt;div class=&#34;info-panel&#34;&gt;&#xD;&#xA;            &lt;div class=&#34;mode-toggle&#34;&gt;&#xD;&#xA;                &lt;button class=&#34;mode-btn active&#34; data-mode=&#34;major&#34;&gt;Major&lt;/button&gt;&#xD;&#xA;                &lt;button class=&#34;mode-btn&#34; data-mode=&#34;minor&#34;&gt;Minor&lt;/button&gt;&#xD;&#xA;            &lt;/div&gt;&#xD;&#xA;            &lt;div class=&#34;key-title&#34;&gt;&#xD;&#xA;                &lt;span id=&#34;currentKey&#34;&gt;C&lt;/span&gt;&#xD;&#xA;                &lt;span class=&#34;key-badge major&#34; id=&#34;keyBadge&#34;&gt;Major&lt;/span&gt;&#xD;&#xA;            &lt;/div&gt;&#xD;&#xA;            &lt;p class=&#34;relative-info&#34;&gt;Relative minor: &lt;strong id=&#34;relativeMinor&#34;&gt;A minor&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>http://localhost:1314/projects/poke/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://localhost:1314/projects/poke/</guid>
      <description>&lt;!DOCTYPE html&gt;&#xA;&lt;html lang=&#34;cs&#34;&gt;&#xA;&lt;head&gt;&#xA;    &lt;meta charset=&#34;UTF-8&#34;&gt;&#xA;    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;&#xA;    &lt;title&gt;🎴 Pokémon Pack Opener&lt;/title&gt;&#xA;    &lt;link rel=&#34;stylesheet&#34; href=&#34;css/style.css&#34;&gt;&#xA;    &lt;link rel=&#34;stylesheet&#34; href=&#34;css/animations.css&#34;&gt;&#xA;    &lt;link rel=&#34;stylesheet&#34; href=&#34;css/cards.css&#34;&gt;&#xA;    &lt;link rel=&#34;stylesheet&#34; href=&#34;css/card-legendary.css&#34;&gt;&#xA;    &lt;link rel=&#34;stylesheet&#34; href=&#34;css/responsive.css&#34;&gt;&#xA;&lt;/head&gt;&#xA;&lt;body&gt;&#xA;    &lt;div class=&#34;background-gradient&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;header class=&#34;header&#34;&gt;&#xA;        &lt;div class=&#34;logo&#34;&gt;&#xA;            &lt;h1&gt;🎴 Pokémon Pack Opener&lt;/h1&gt;&#xA;        &lt;/div&gt;&#xA;        &lt;div class=&#34;stats-bar&#34;&gt;&#xA;            &lt;div class=&#34;stat-item&#34;&gt;&#xA;                &lt;span class=&#34;stat-icon&#34;&gt;📦&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-label&#34;&gt;Balíčky:&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-value&#34; id=&#34;packsOpened&#34;&gt;0&lt;/span&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;div class=&#34;stat-item&#34;&gt;&#xA;                &lt;span class=&#34;stat-icon&#34;&gt;⭐&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-label&#34;&gt;Sbírka:&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-value&#34; id=&#34;collectionCount&#34;&gt;0/151&lt;/span&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;div class=&#34;stat-item quests-toggle&#34; id=&#34;questsToggle&#34;&gt;&#xA;                &lt;span class=&#34;stat-icon&#34;&gt;📜&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-label&#34;&gt;Questy:&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-value&#34; id=&#34;activeQuests&#34;&gt;0/3&lt;/span&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;div class=&#34;stat-item card-style-toggle&#34; id=&#34;cardStyleToggle&#34; title=&#34;Změnit vzhled karet&#34;&gt;&#xA;                &lt;span class=&#34;stat-icon&#34;&gt;🎴&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-label&#34;&gt;Styl:&lt;/span&gt;&#xA;                &lt;span class=&#34;stat-value&#34; id=&#34;cardStyleLabel&#34;&gt;Classic&lt;/span&gt;&#xA;            &lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;    &lt;/header&gt;&#xA;&#xA;    &lt;main class=&#34;main-container&#34;&gt;&#xA;        &lt;!-- Pack Opening Screen --&gt;&#xA;        &lt;section class=&#34;pack-screen&#34; id=&#34;packScreen&#34;&gt;&#xA;            &lt;div class=&#34;pack-container&#34;&gt;&#xA;                &lt;div class=&#34;pack&#34; id=&#34;pack&#34;&gt;&#xA;                    &lt;div class=&#34;pack-inner&#34;&gt;&#xA;                        &lt;div class=&#34;pack-glow&#34;&gt;&lt;/div&gt;&#xA;                        &lt;div class=&#34;pack-shine&#34;&gt;&lt;/div&gt;&#xA;                        &lt;div class=&#34;pack-front&#34;&gt;&#xA;                            &lt;div class=&#34;pack-logo&#34;&gt;POKÉMON&lt;/div&gt;&#xA;                            &lt;div class=&#34;pack-image&#34;&gt;🎴&lt;/div&gt;&#xA;                            &lt;div class=&#34;pack-text&#34;&gt;TRADING CARD GAME&lt;/div&gt;&#xA;                            &lt;div class=&#34;pack-cards&#34;&gt;6 KARET&lt;/div&gt;&#xA;                        &lt;/div&gt;&#xA;                    &lt;/div&gt;&#xA;                &lt;/div&gt;&#xA;                &lt;p class=&#34;pack-hint&#34;&gt;Klikni na balíček! 🎉&lt;/p&gt;&#xA;            &lt;/div&gt;&#xA;        &lt;/section&gt;&#xA;&#xA;        &lt;!-- Secondary Navigation --&gt;&#xA;        &lt;div class=&#34;secondary-nav&#34;&gt;&#xA;            &lt;button class=&#34;btn-view-collection&#34; id=&#34;btnViewCollection&#34; style=&#34;z-index: 1000; position: relative;&#34;&gt;&#xA;                &lt;span&gt;📚 Zobrazit sbírku&lt;/span&gt;&#xA;            &lt;/button&gt;&#xA;        &lt;/div&gt;&#xA;&#xA;        &lt;!-- Cards Reveal Screen --&gt;&#xA;        &lt;section class=&#34;cards-screen hidden&#34; id=&#34;cardsScreen&#34;&gt;&#xA;            &lt;div class=&#34;cards-header&#34;&gt;&#xA;                &lt;h2 class=&#34;cards-title&#34;&gt;🎊 Tvoje karty! 🎊&lt;/h2&gt;&#xA;                &lt;div class=&#34;cards-subtitle&#34;&gt;Klikni na kartu pro detail&lt;/div&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;div class=&#34;cards-container&#34; id=&#34;cardsContainer&#34;&gt;&#xA;                &lt;!-- Cards will be inserted here --&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;button class=&#34;btn-new-pack&#34; id=&#34;btnNewPack&#34;&gt;&#xA;                &lt;span&gt;🎴 Otevřít další balíček&lt;/span&gt;&#xA;            &lt;/button&gt;&#xA;            &lt;button class=&#34;btn-collection&#34; id=&#34;btnCollection&#34;&gt;&#xA;                &lt;span&gt;📚 Zobrazit sbírku&lt;/span&gt;&#xA;            &lt;/button&gt;&#xA;        &lt;/section&gt;&#xA;&#xA;        &lt;!-- Collection Gallery --&gt;&#xA;        &lt;section class=&#34;collection-screen hidden&#34; id=&#34;collectionScreen&#34;&gt;&#xA;            &lt;div class=&#34;collection-header&#34;&gt;&#xA;                &lt;h2&gt;📚 Tvoje Pokédex&lt;/h2&gt;&#xA;                &lt;div class=&#34;collection-filters&#34;&gt;&#xA;                    &lt;input type=&#34;text&#34; id=&#34;searchPokemon&#34; placeholder=&#34;🔍 Hledat Pokémona...&#34;&gt;&#xA;                    &lt;select id=&#34;filterType&#34;&gt;&#xA;                        &lt;option value=&#34;all&#34;&gt;Všechny typy&lt;/option&gt;&#xA;                        &lt;option value=&#34;normal&#34;&gt;Normal&lt;/option&gt;&#xA;                        &lt;option value=&#34;fire&#34;&gt;Fire&lt;/option&gt;&#xA;                        &lt;option value=&#34;water&#34;&gt;Water&lt;/option&gt;&#xA;                        &lt;option value=&#34;electric&#34;&gt;Electric&lt;/option&gt;&#xA;                        &lt;option value=&#34;grass&#34;&gt;Grass&lt;/option&gt;&#xA;                        &lt;option value=&#34;ice&#34;&gt;Ice&lt;/option&gt;&#xA;                        &lt;option value=&#34;fighting&#34;&gt;Fighting&lt;/option&gt;&#xA;                        &lt;option value=&#34;poison&#34;&gt;Poison&lt;/option&gt;&#xA;                        &lt;option value=&#34;ground&#34;&gt;Ground&lt;/option&gt;&#xA;                        &lt;option value=&#34;flying&#34;&gt;Flying&lt;/option&gt;&#xA;                        &lt;option value=&#34;psychic&#34;&gt;Psychic&lt;/option&gt;&#xA;                        &lt;option value=&#34;bug&#34;&gt;Bug&lt;/option&gt;&#xA;                        &lt;option value=&#34;rock&#34;&gt;Rock&lt;/option&gt;&#xA;                        &lt;option value=&#34;ghost&#34;&gt;Ghost&lt;/option&gt;&#xA;                        &lt;option value=&#34;dragon&#34;&gt;Dragon&lt;/option&gt;&#xA;                        &lt;option value=&#34;dark&#34;&gt;Dark&lt;/option&gt;&#xA;                        &lt;option value=&#34;steel&#34;&gt;Steel&lt;/option&gt;&#xA;                        &lt;option value=&#34;fairy&#34;&gt;Fairy&lt;/option&gt;&#xA;                    &lt;/select&gt;&#xA;                    &lt;button class=&#34;btn-filter&#34; id=&#34;btnShowOwned&#34;&gt;Jen nasbírané&lt;/button&gt;&#xA;                &lt;/div&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;div class=&#34;collection-grid&#34; id=&#34;collectionGrid&#34;&gt;&#xA;                &lt;!-- Collection cards will be inserted here --&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;button class=&#34;btn-back&#34; id=&#34;btnBackFromCollection&#34;&gt;&#xA;                &lt;span&gt;⬅️ Zpět&lt;/span&gt;&#xA;            &lt;/button&gt;&#xA;        &lt;/section&gt;&#xA;    &lt;/main&gt;&#xA;&#xA;    &lt;!-- Quests Panel --&gt;&#xA;    &lt;div class=&#34;quests-panel hidden&#34; id=&#34;questsPanel&#34;&gt;&#xA;        &lt;div class=&#34;quests-header&#34;&gt;&#xA;            &lt;h3&gt;📜 Aktivní questy&lt;/h3&gt;&#xA;            &lt;button class=&#34;quests-close&#34; id=&#34;questsClose&#34;&gt;✕&lt;/button&gt;&#xA;        &lt;/div&gt;&#xA;        &lt;div class=&#34;quests-list&#34; id=&#34;questsList&#34;&gt;&#xA;            &lt;!-- Active quests will be inserted here --&gt;&#xA;        &lt;/div&gt;&#xA;        &lt;div class=&#34;quest-log-toggle&#34;&gt;&#xA;            &lt;button class=&#34;btn-quest-log&#34; id=&#34;btnQuestLog&#34;&gt;📖 Zobrazit Quest Log&lt;/button&gt;&#xA;        &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &lt;!-- Quest Log Modal --&gt;&#xA;    &lt;div class=&#34;modal hidden&#34; id=&#34;questLogModal&#34;&gt;&#xA;        &lt;div class=&#34;modal-overlay&#34; id=&#34;questLogOverlay&#34;&gt;&lt;/div&gt;&#xA;        &lt;div class=&#34;modal-content quest-log-content&#34;&gt;&#xA;            &lt;button class=&#34;modal-close&#34; id=&#34;questLogClose&#34;&gt;✕&lt;/button&gt;&#xA;            &lt;h2&gt;📖 Quest Log&lt;/h2&gt;&#xA;            &lt;div class=&#34;quest-log-tabs&#34;&gt;&#xA;                &lt;button class=&#34;quest-tab active&#34; data-tab=&#34;completed&#34;&gt;✅ Dokončené&lt;/button&gt;&#xA;                &lt;button class=&#34;quest-tab&#34; data-tab=&#34;all&#34;&gt;📜 Všechny&lt;/button&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;div class=&#34;quest-log-list&#34; id=&#34;questLogList&#34;&gt;&#xA;                &lt;!-- Quest log entries will be inserted here --&gt;&#xA;            &lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &lt;!-- Card Detail Modal --&gt;&#xA;    &lt;div class=&#34;modal hidden&#34; id=&#34;cardModal&#34;&gt;&#xA;        &lt;div class=&#34;modal-overlay&#34; id=&#34;modalOverlay&#34;&gt;&lt;/div&gt;&#xA;        &lt;div class=&#34;modal-content&#34;&gt;&#xA;            &lt;button class=&#34;modal-close&#34; id=&#34;modalClose&#34;&gt;✕&lt;/button&gt;&#xA;            &lt;div class=&#34;modal-card&#34; id=&#34;modalCard&#34;&gt;&#xA;                &lt;!-- Card details will be inserted here --&gt;&#xA;            &lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &lt;!-- Toast Notifications --&gt;&#xA;    &lt;div class=&#34;toast-container&#34; id=&#34;toastContainer&#34;&gt;&lt;/div&gt;&#xA;&#xA;    &lt;script src=&#34;js/utils.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/storage.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/quests.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/api.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/cards.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/animations.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/collection.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/achievements.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script src=&#34;js/main.js&#34;&gt;&lt;/script&gt;&#xA;&lt;/body&gt;&#xA;&lt;/html&gt;</description>
    </item>
    <item>
      <title></title>
      <link>http://localhost:1314/projects/weather/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://localhost:1314/projects/weather/</guid>
      <description>&lt;link rel=&#34;stylesheet&#34; href=&#34;css/weather.css&#34;&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;weather-container&#34;&gt;&#xD;&#xA;    &lt;div id=&#34;output&#34;&gt;&lt;/div&gt;&#xD;&#xA;&lt;/div&gt;&#xD;&#xA;&#xD;&#xA;&lt;script src=&#34;https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js&#34; defer&gt;&lt;/script&gt;&#xD;&#xA;&lt;script src=&#34;js/weather.js&#34; defer&gt;&lt;/script&gt;</description>
    </item>
  </channel>
</rss>
