<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: owieczka</title>
    <description>The latest articles on DEV Community by owieczka (@owieczka).</description>
    <link>https://dev.to/owieczka</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1240358%2F4f464e10-d7ff-445b-9dfd-ab3cb6779f6d.gif</url>
      <title>DEV Community: owieczka</title>
      <link>https://dev.to/owieczka</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/owieczka"/>
    <language>en</language>
    <item>
      <title>Lepsza Inicjalizacja Tablic 2D | Better 2D Array Init</title>
      <dc:creator>owieczka</dc:creator>
      <pubDate>Sat, 24 May 2025 08:00:00 +0000</pubDate>
      <link>https://dev.to/owieczka/lepsza-inicjalizacja-tablic-2d-better-2d-array-init-3ogp</link>
      <guid>https://dev.to/owieczka/lepsza-inicjalizacja-tablic-2d-better-2d-array-init-3ogp</guid>
      <description>&lt;p&gt;𝐏𝐫𝐨𝐬𝐭𝐬𝐳𝐲 𝐤𝐨𝐝 - 𝐋𝐞𝐩𝐬𝐳𝐲 𝐤𝐨𝐝&lt;/p&gt;

&lt;p&gt;Zawsze tworzyłem tablice w #JavaScript za pomocą dwóch zagnieżdżonych pętli for&lt;/p&gt;

&lt;p&gt;𝚌𝚘𝚗𝚜𝚝 𝚛𝚘𝚠𝚜 = 𝟷𝟶, 𝚌𝚘𝚕𝚜 = 𝟷𝟶;&lt;br&gt;
𝚕𝚎𝚝 𝚐𝚛𝚒𝚍 = [];&lt;br&gt;
𝚏𝚘𝚛(𝚕𝚎𝚝 𝚒 = 𝟶 ; 𝚒 &amp;lt; 𝚌𝚘𝚕𝚜; 𝚒++) {&lt;br&gt;
 𝚕𝚎𝚝 𝚛𝚘𝚠 = [];&lt;br&gt;
 𝚏𝚘𝚛 (𝚕𝚎𝚝 𝚓=𝟶 ; 𝚓 &amp;lt; 𝚛𝚘𝚠𝚜 ; 𝚓++) 𝚛𝚘𝚠.𝚙𝚞𝚜𝚑(𝟷)&lt;br&gt;
 𝚐𝚛𝚒𝚍.𝚙𝚞𝚜𝚑(𝚛𝚘𝚠)&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;a od lat istnieje lepszy sposób&lt;/p&gt;

&lt;p&gt;𝚌𝚘𝚗𝚜𝚝 𝚛𝚘𝚠𝚜 = 𝟷𝟶, 𝚌𝚘𝚕𝚜 = 𝟷𝟶;&lt;br&gt;
𝚕𝚎𝚝 𝚐𝚛𝚒𝚍 = 𝙰𝚛𝚛𝚊𝚢.𝚏𝚛𝚘𝚖({ 𝚕𝚎𝚗𝚐𝚝𝚑: 𝚛𝚘𝚠𝚜 }, () =&amp;gt; 𝙰𝚛𝚛𝚊𝚢(𝚌𝚘𝚕𝚜).𝚏𝚒𝚕𝚕(𝟷));&lt;/p&gt;




&lt;p&gt;𝐒𝐢𝐦𝐩𝐥𝐞𝐫 𝐜𝐨𝐝𝐞 - 𝐁𝐞𝐭𝐭𝐞𝐫 𝐜𝐨𝐝𝐞&lt;/p&gt;

&lt;p&gt;I've always created 2d arrays in #JavaScript using two nested loops&lt;/p&gt;

&lt;p&gt;𝚌𝚘𝚗𝚜𝚝 𝚛𝚘𝚠𝚜 = 𝟷𝟶, 𝚌𝚘𝚕𝚜 = 𝟷𝟶;&lt;br&gt;
𝚕𝚎𝚝 𝚐𝚛𝚒𝚍 = [];&lt;br&gt;
𝚏𝚘𝚛(𝚕𝚎𝚝 𝚒 = 𝟶 ; 𝚒 &amp;lt; 𝚌𝚘𝚕𝚜; 𝚒++) {&lt;br&gt;
 𝚕𝚎𝚝 𝚛𝚘𝚠 = [];&lt;br&gt;
 𝚏𝚘𝚛 (𝚕𝚎𝚝 𝚓=𝟶 ; 𝚓 &amp;lt; 𝚛𝚘𝚠𝚜 ; 𝚓++) 𝚛𝚘𝚠.𝚙𝚞𝚜𝚑(𝟷)&lt;br&gt;
 𝚐𝚛𝚒𝚍.𝚙𝚞𝚜𝚑(𝚛𝚘𝚠)&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;while from years there is a better way&lt;/p&gt;

&lt;p&gt;𝚌𝚘𝚗𝚜𝚝 𝚛𝚘𝚠𝚜 = 𝟷𝟶, 𝚌𝚘𝚕𝚜 = 𝟷𝟶;&lt;br&gt;
𝚕𝚎𝚝 𝚐𝚛𝚒𝚍 = 𝙰𝚛𝚛𝚊𝚢.𝚏𝚛𝚘𝚖({ 𝚕𝚎𝚗𝚐𝚝𝚑: 𝚛𝚘𝚠𝚜 }, () =&amp;gt; 𝙰𝚛𝚛𝚊𝚢(𝚌𝚘𝚕𝚜).𝚏𝚒𝚕𝚕(𝟷));&lt;/p&gt;

&lt;h1&gt;
  
  
  saas #software #javascript #owieczka #css #web #webdevelopment #code #softwarehouse #math #matematyka #developer
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Javascript SVG Maze Generator</title>
      <dc:creator>owieczka</dc:creator>
      <pubDate>Sat, 10 May 2025 07:20:18 +0000</pubDate>
      <link>https://dev.to/owieczka/javascript-svg-maze-generator-201b</link>
      <guid>https://dev.to/owieczka/javascript-svg-maze-generator-201b</guid>
      <description>&lt;p&gt;𝐋𝐚𝐛𝐢𝐫𝐲𝐧𝐭𝐲 𝐭𝐨 𝐟𝐚𝐬𝐜𝐲𝐧𝐮𝐣ą𝐜𝐞 𝐬𝐭𝐫𝐮𝐤𝐭𝐮𝐫𝐲, a ich generowanie może być wręcz 𝐡𝐢𝐩𝐧𝐨𝐭𝐲𝐳𝐮𝐣ą𝐜𝐞&lt;/p&gt;

&lt;p&gt;Istnieje wiele algorytmów tworzenia labiryntów, takich jak 𝐃𝐅𝐒 (𝐃𝐞𝐩𝐭𝐡-𝐅𝐢𝐫𝐬𝐭 𝐒𝐞𝐚𝐫𝐜𝐡), 𝐏𝐫𝐢𝐦𝐬 𝐀𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦 czy 𝐑𝐞𝐜𝐮𝐫𝐬𝐢𝐯𝐞 𝐁𝐚𝐜𝐤𝐭𝐫𝐚𝐜𝐤𝐢𝐧𝐠. Jednym z najprostszych i najbardziej satysfakcjonujących jest właśnie 𝐑𝐞𝐜𝐮𝐫𝐬𝐢𝐯𝐞 𝐁𝐚𝐜𝐤𝐭𝐫𝐚𝐜𝐤𝐢𝐧𝐠, znany jako 𝐚𝐥𝐠𝐨𝐫𝐲𝐭𝐦 𝐤𝐨𝐩𝐚𝐧𝐢𝐚 𝐭𝐮𝐧𝐞𝐥𝐢. &lt;/p&gt;

&lt;p&gt;Działa on według kilku podstawowych kroków:&lt;br&gt;
🔹Rozpoczyna się od losowego punktu.&lt;br&gt;
🔹Kopie tunel w kierunku nieodwiedzonych sąsiadów.&lt;br&gt;
🔹Cofanie następuje wtedy, gdy nie ma dostępnych ścieżek.&lt;/p&gt;

&lt;p&gt;Najlepszym sposobem wizualizacji procesu tworzenia labiryntu jest pokazanie jego stopniowego powstawania i rozwoju. W idealnym przypadku można by wykorzystać grafikę Żół𝐰𝐢𝐚 (#Turtle), która świetnie nadaje się do procedur graficznych. Niestety, w środowisku webowym nie ma natywnego wsparcia dla tej techniki. 𝐍𝐚 𝐬𝐳𝐜𝐳ęś𝐜𝐢𝐞 𝐒𝐕𝐆 𝐨𝐟𝐞𝐫𝐮𝐣𝐞 𝐤𝐫𝐳𝐲𝐰𝐞 𝐢 𝐞𝐥𝐞𝐦𝐞𝐧𝐭𝐲 𝐏𝐀𝐓𝐇, 𝐤𝐭ó𝐫𝐞 𝐩𝐨𝐳𝐰𝐚𝐥𝐚𝐣ą 𝐧𝐚 𝐩𝐫𝐨𝐜𝐞𝐝𝐮𝐫𝐚𝐥𝐧𝐞 𝐨𝐩𝐢𝐬𝐚𝐧𝐢𝐞 𝐠𝐫𝐚𝐟𝐢𝐤𝐢 𝐢 𝐣𝐞𝐣 𝐝𝐲𝐧𝐚𝐦𝐢𝐜𝐳𝐧𝐞 𝐠𝐞𝐧𝐞𝐫𝐨𝐰𝐚𝐧𝐢𝐞.&lt;/p&gt;

&lt;p&gt;Zobaczcie sami, jak łatwo można stworzyć własny, hipnotyzujący labirynt za pomocą #JavaScript i #SVG &lt;br&gt;
&lt;a href="https://codepen.io/owcakw/pen/dPPmoBQ" rel="noopener noreferrer"&gt;https://codepen.io/owcakw/pen/dPPmoBQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jeśli potrzebujesz pomocy ze swoim projektem, albo masz pomysł ale nie wiesz jak to zrealizować, 𝐳𝐠ł𝐨ś 𝐬𝐢ę 𝐝𝐨 𝐧𝐚𝐬, na pewno pomożemy.&lt;/p&gt;




&lt;p&gt;𝐌𝐚𝐳𝐞𝐬 𝐚𝐫𝐞 𝐟𝐚𝐬𝐜𝐢𝐧𝐚𝐭𝐢𝐧𝐠 𝐬𝐭𝐫𝐮𝐜𝐭𝐮𝐫𝐞𝐬, and watching them being generated can be 𝐡𝐲𝐩𝐧𝐨𝐭𝐢𝐜. &lt;/p&gt;

&lt;p&gt;There are many algorithms for maze generation, such as 𝐃𝐅𝐒 (𝐃𝐞𝐩𝐭𝐡-𝐅𝐢𝐫𝐬𝐭 𝐒𝐞𝐚𝐫𝐜𝐡), 𝐏𝐫𝐢𝐦’𝐬 𝐀𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦, and 𝐑𝐞𝐜𝐮𝐫𝐬𝐢𝐯𝐞 𝐁𝐚𝐜𝐤𝐭𝐫𝐚𝐜𝐤𝐢𝐧𝐠. One of the simplest and most satisfying methods is 𝐑𝐞𝐜𝐮𝐫𝐬𝐢𝐯𝐞 𝐁𝐚𝐜𝐤𝐭𝐫𝐚𝐜𝐤𝐢𝐧𝐠. &lt;/p&gt;

&lt;p&gt;It follows a few basic steps:&lt;br&gt;
🔹Starts from a random point.&lt;br&gt;
🔹Digs tunnels toward unvisited neighbors.&lt;br&gt;
🔹Backtracks when no paths are available.&lt;/p&gt;

&lt;p&gt;The best way to visualize the maze creation process is by showing its gradual formation and growth. Ideally, #Turtle Graphics would be a great tool for this, as they are perfect for procedural drawing. However, the web environment lacks native support for turtle-based graphics. 𝐅𝐨𝐫𝐭𝐮𝐧𝐚𝐭𝐞𝐥𝐲, 𝐒𝐕𝐆 𝐩𝐫𝐨𝐯𝐢𝐝𝐞𝐬 𝐜𝐮𝐫𝐯𝐞𝐬 𝐚𝐧𝐝 𝐏𝐀𝐓𝐇 𝐞𝐥𝐞𝐦𝐞𝐧𝐭𝐬 𝐭𝐡𝐚𝐭 𝐞𝐧𝐚𝐛𝐥𝐞 𝐩𝐫𝐨𝐜𝐞𝐝𝐮𝐫𝐚𝐥 𝐠𝐫𝐚𝐩𝐡𝐢𝐜𝐬 𝐝𝐞𝐬𝐜𝐫𝐢𝐩𝐭𝐢𝐨𝐧𝐬 𝐚𝐧𝐝 𝐝𝐲𝐧𝐚𝐦𝐢𝐜 𝐠𝐞𝐧𝐞𝐫𝐚𝐭𝐢𝐨𝐧.&lt;/p&gt;

&lt;p&gt;See for yourself how easy it is to create your own hypnotic maze using #JavaScript and #SVG!&lt;br&gt;
&lt;a href="https://codepen.io/owcakw/pen/dPPmoBQ" rel="noopener noreferrer"&gt;https://codepen.io/owcakw/pen/dPPmoBQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you need help with your project, or you have an idea but you don't know how to implement it, and you need help, 𝐰𝐫𝐢𝐭𝐞 𝐭𝐨 𝐮𝐬 𝐚𝐧𝐝 𝐰𝐞 𝐰𝐢𝐥𝐥 𝐡𝐞𝐥𝐩 𝐲𝐨𝐮!!.&lt;/p&gt;

&lt;h1&gt;
  
  
  saas #software #javascript #owieczka #css #web #webdevelopment #code #softwarehouse #developer #maze #algorithm
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>algorithms</category>
      <category>learning</category>
    </item>
    <item>
      <title>Pure CSS prime calculation</title>
      <dc:creator>owieczka</dc:creator>
      <pubDate>Fri, 29 Mar 2024 21:16:16 +0000</pubDate>
      <link>https://dev.to/owieczka/pure-css-prime-calculation-4l9h</link>
      <guid>https://dev.to/owieczka/pure-css-prime-calculation-4l9h</guid>
      <description>&lt;h2&gt;
  
  
  Use CSS selector power to calculate Primes
&lt;/h2&gt;

&lt;p&gt;You probably didn't know that pure CSS can be used to calculate prime numbers. Prime numbers are such a numbers that divided only by 1 and itself. &lt;/p&gt;

&lt;p&gt;Normaly we can compute primes by &lt;a href="https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes"&gt;Sieve of Eratosthenes&lt;/a&gt;. It's a clever algorytm invented by Greeks 3rd cent BCE. You starts with list of all numbers. In HTML we can create list of all numbers with help of CSS counters and &lt;code&gt;i&lt;/code&gt; element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-wrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;wrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex-start&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex-start&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;counter-reset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;i_counter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="nt"&gt;i&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="m"&gt;2s&lt;/span&gt; &lt;span class="n"&gt;ease-out&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;background-color&lt;/span&gt; &lt;span class="m"&gt;0.2s&lt;/span&gt; &lt;span class="n"&gt;ease-out&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.0rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.0rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="n"&gt;hsl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;45&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;90%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;-4px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;66&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;68&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;normal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;counter-increment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;i_counter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i_counter&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step two is to remove all composite numbers. We can use CSS selectors &lt;code&gt;:nth-child&lt;/code&gt; to remove all multiplication of a given number. But we must keep 0th element of a series. We can do it with  &lt;code&gt;:is&lt;/code&gt; and &lt;code&gt;:not&lt;/code&gt; selectors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;3&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;3&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;5&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;5&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;6&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;6&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;7&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;7&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;8&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;8&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;9&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;9&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;10&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:is&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;i&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;10&lt;/span&gt;&lt;span class="o"&gt;))),&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;hsl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;60%&lt;/span&gt; &lt;span class="m"&gt;90%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c"&gt;/*display: none;*/&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For finding all primes up to 100 it is sufficient to remove all multiplicative of a numbers from 1 to 10.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codepen.io/owcakw/pen/WNWZXgJ"&gt;Full solution - on Codepen&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Pure CSS BarChart</title>
      <dc:creator>owieczka</dc:creator>
      <pubDate>Sat, 16 Mar 2024 14:13:36 +0000</pubDate>
      <link>https://dev.to/owieczka/pure-css-barchart-2gle</link>
      <guid>https://dev.to/owieczka/pure-css-barchart-2gle</guid>
      <description>&lt;p&gt;Modern CSS allows for many fantastic stuff like pure css barcharts.  We can just define data series in HTML and bunch of css and woula. No needs for any Javascript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"barchart"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"--scale-x:5;--scale-y:10;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"--value: 10;"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Dogs"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"--value: 13;"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Cows"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"--value: 8;"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Sheeps"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jftbetaezp9dvry43o3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jftbetaezp9dvry43o3.png" alt="BarChart Preview" width="535" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Details can be examinded in my &lt;a href="https://codepen.io/owcakw/pen/NWmbpqg"&gt;codepen&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS Only Working Clock</title>
      <dc:creator>owieczka</dc:creator>
      <pubDate>Sun, 18 Feb 2024 21:23:49 +0000</pubDate>
      <link>https://dev.to/owieczka/css-only-working-clock-2nje</link>
      <guid>https://dev.to/owieczka/css-only-working-clock-2nje</guid>
      <description>&lt;p&gt;Did you ever wonder if it is posible to create working analog clock in web browser with out javascript at all just with css styling. &lt;/p&gt;

&lt;p&gt;I do. So I have create one. At the beginning as with all old clocks you need to set the clock hands to correct time, but its all, after initial setup it works on its own. All of this is possible with css animation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ig215jqp88toiwqz1ja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ig215jqp88toiwqz1ja.png" alt="Image description" width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try it yourself &lt;a href="https://codepen.io/owcakw/pen/vYPPWLg"&gt;https://codepen.io/owcakw/pen/vYPPWLg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key to its working is a long css animation of a hands. 3600s long for minut hand and 43200s long for hour hand. Current time can be set via css variables and animation delay tick (negative value can setup animation progress).&lt;/p&gt;

&lt;p&gt;You may render the clock with time taken from the serwer at html request time, and from that it will works alone without a single line of javascript.&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>html</category>
    </item>
    <item>
      <title>CSS Equivalent of the "if" statement</title>
      <dc:creator>owieczka</dc:creator>
      <pubDate>Sun, 11 Feb 2024 00:15:37 +0000</pubDate>
      <link>https://dev.to/owieczka/css-equivalent-of-the-if-statement-gp5</link>
      <guid>https://dev.to/owieczka/css-equivalent-of-the-if-statement-gp5</guid>
      <description>&lt;p&gt;Sometimes there is a need to select between two values based on some condition in css styling. One can uses simple two classes or javascript two select right stiling. But thanks to css variables if statements can be done also in pure CSS.  &lt;/p&gt;

&lt;p&gt;To select between two values in pure CSS you can use folowing math trick&lt;/p&gt;

&lt;p&gt;Pseudocod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if( valueSel &amp;lt; th) 
  return valueA
else
  return valueB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This statement can be converted to folowing pseudocod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;selector = (sign(valueSel-th)+1)/2
return valueA * (1-selector) + valueB * selector
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which can be expresed with help of css variables as:&lt;/p&gt;

&lt;p&gt;CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.some-class&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--valueSel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* Some Value - predicate */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--th&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* Some Treshold */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--valueA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* Result A */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--valueB&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* Result B */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="no"&gt;tan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;clamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--valueSel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;-&lt;/span&gt; &lt;span class="n"&gt;th&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="py"&gt;--result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--valueA&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="n"&gt;-&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--selector&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;+&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--valueB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--selector&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;    
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The selection can be extended to selecting colors via &lt;code&gt;mix-color&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can see usage if this in Pure CSS radiational progress bar&lt;br&gt;
&lt;a href="https://codepen.io/owcakw/pen/KKEGvgZ"&gt;https://codepen.io/owcakw/pen/KKEGvgZ&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>programming</category>
    </item>
    <item>
      <title>Bramki logiczne w Excelu</title>
      <dc:creator>owieczka</dc:creator>
      <pubDate>Tue, 30 Jan 2024 20:41:32 +0000</pubDate>
      <link>https://dev.to/owieczka/bramki-logiczne-w-excelu-4ko5</link>
      <guid>https://dev.to/owieczka/bramki-logiczne-w-excelu-4ko5</guid>
      <description>&lt;p&gt;Arkusz kalkulacyjny może być doskonałym narzędziem do nauki. &lt;/p&gt;

&lt;p&gt;Współczesne komputery bazują na dwóch stanach 0 i 1 oraz na 3 prostych bramkach logicznych: AND, OR, NOT. Każda informacja, liczba, tekst, zdjęcie czy film składa się w istocie z serii zer i jedynek zapisanych w pamięci komputera. A same komputery to bardzo skomplikowane urządzenia złożone z bardzo dużej (miliardy) liczby bramek logicznych. &lt;/p&gt;

&lt;p&gt;W sieci można znaleźć zaawansowane programy pozwalające na symulowanie układów elektronicznych złożone z sieci bramek logicznych. Jednak zwykły arkusz kalkulacyjny może z powodzeniem służyć do zobrazowania i symulacji prostych układów elektronicznych, od prostych pojedynczych bramek aż do całych procesorów. &lt;/p&gt;

&lt;p&gt;Na początek przedstawiam wam arkusz kalkulacyjny z prostym 3 bitowym symulatorem. &lt;/p&gt;

&lt;p&gt;Link do arkusza kalkulacyjnego - z prezentacją działania podstawowych bramek logicznych&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/spreadsheets/d/13_JWoGkYPzL5NPdI42MAoRUFRXRORGx4/edit?usp=sharing&amp;amp;ouid=111887487108574597440&amp;amp;rtpof=true&amp;amp;sd=true"&gt;https://docs.google.com/spreadsheets/d/13_JWoGkYPzL5NPdI42MAoRUFRXRORGx4/edit?usp=sharing&amp;amp;ouid=111887487108574597440&amp;amp;rtpof=true&amp;amp;sd=true&lt;/a&gt;&lt;/p&gt;

</description>
      <category>excel</category>
      <category>nauka</category>
    </item>
  </channel>
</rss>
