[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"i-carbon:grid":3,"i-carbon:chevron-down":8,"i-carbon:arrow-right":10,"i-mdi:newspaper-variant-outline":12,"i-carbon:search":15,"i-carbon:menu":17,"i-mdi:github":19,"i-mdi:twitter":21,"i-carbon:home":23,"i-carbon:information":25,"i-carbon:document-signed":27,"i-mdi:shield-lock-outline":29,"i-carbon:email":31,"i-carbon:json":33,"i-carbon:document":35,"i-carbon:xml":37,"i-mdi:text-box-edit-outline":39,"i-mdi:code-brackets":41,"i-mdi:shield-key-outline":43,"i-carbon:link":45,"i-mdi:lock-reset":47,"i-mdi:format-font":49,"i-carbon:text-font":51,"i-carbon:code":53,"i-mdi:language-markdown-outline":55,"i-mdi:file-pdf-box":57,"i-carbon:compare":59,"i-mdi:star-outline":61,"i-mdi:ip-network":63,"i-mdi:identifier":65,"i-mdi:ip-network-outline":67,"i-mdi:dns":69,"i-mdi:server-network":71,"i-mdi:api":73,"i-mdi:palette-outline":75,"i-mdi:clock-time-eight-outline":77,"i-mdi:calendar-clock":79,"i-mdi:timer-outline":81,"i-mdi:clock-outline":83,"i-mdi:scale-balance":85,"i-mdi:calculator-variant-outline":87,"i-mdi:home-city-outline":89,"i-mdi:heart":91,"i-carbon:arrow-up":93,"blog-posts-all":95,"i-mdi:magnify":4182,"i-mdi:calendar":4184,"i-mdi:file-document-outline":4186,"i-mdi:arrow-right":4188,"i-mdi:chevron-left":4190,"i-mdi:chevron-right":4192,"i-mdi:shape-outline":4194,"i-mdi:tag-outline":4196,"i-mdi:archive-outline":4198,"i-mdi:calendar-month-outline":4200},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,32,false,"\u003Cpath fill=\"currentColor\" d=\"M12 4H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 8H6V6h6zm14-8h-6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 8h-6V6h6zm-14 6H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2m0 8H6v-6h6zm14-8h-6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2m0 8h-6v-6h6z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"currentColor\" d=\"M16 22L6 12l1.4-1.4l8.6 8.6l8.6-8.6L26 12z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"currentColor\" d=\"m18 6l-1.43 1.393L24.15 15H4v2h20.15l-7.58 7.573L18 26l10-10z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":14},24,"\u003Cpath fill=\"currentColor\" d=\"M20 5v14H4V5zm0-2H4c-1.11 0-2 .89-2 2v14c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V5c0-1.11-.89-2-2-2m-2 12H6v2h12zm-8-8H6v6h4zm2 2h6V7h-6zm6 2h-6v2h6z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":16},"\u003Cpath fill=\"currentColor\" d=\"m29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":18},"\u003Cpath fill=\"currentColor\" d=\"M4 6h24v2H4zm0 18h24v2H4zm0-12h24v2H4zm0 6h24v2H4z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":20},"\u003Cpath fill=\"currentColor\" d=\"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":22},"\u003Cpath fill=\"currentColor\" d=\"M22.46 6c-.77.35-1.6.58-2.46.69c.88-.53 1.56-1.37 1.88-2.38c-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29c0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15c0 1.49.75 2.81 1.91 3.56c-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.2 4.2 0 0 1-1.93.07a4.28 4.28 0 0 0 4 2.98a8.52 8.52 0 0 1-5.33 1.84q-.51 0-1.02-.06C3.44 20.29 5.7 21 8.12 21C16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56c.84-.6 1.56-1.36 2.14-2.23\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":24},"\u003Cpath fill=\"currentColor\" d=\"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428ZM18 26h-4v-8h4Zm2 0v-8a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26Z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":26},"\u003Cpath fill=\"currentColor\" d=\"M17 22v-8h-4v2h2v6h-3v2h8v-2zM16 8a1.5 1.5 0 1 0 1.5 1.5A1.5 1.5 0 0 0 16 8\"\u002F>\u003Cpath fill=\"currentColor\" d=\"M16 30a14 14 0 1 1 14-14a14 14 0 0 1-14 14m0-26a12 12 0 1 0 12 12A12 12 0 0 0 16 4\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":28},"\u003Cpath fill=\"currentColor\" d=\"M19.414 30H15v-4.414l5.034-5.034A5 5 0 0 1 20 20a5 5 0 1 1 4.448 4.966ZM17 28h1.586l5.206-5.206l.54.124a3.035 3.035 0 1 0-2.25-2.25l.124.54L17 26.414Z\"\u002F>\u003Ccircle cx=\"25\" cy=\"20\" r=\"1\" fill=\"currentColor\"\u002F>\u003Cpath fill=\"currentColor\" d=\"M8 6h12v2H8zm0 4h12v2H8zm0 4h6v2H8zm0 10h4v2H8z\"\u002F>\u003Cpath fill=\"currentColor\" d=\"M12 30H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v9h-2V4H6v24h6Z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":30},"\u003Cpath fill=\"currentColor\" d=\"M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m2.8-10V9.5C14.8 8.1 13.4 7 12 7S9.2 8.1 9.2 9.5V11c-.6 0-1.2.6-1.2 1.2v3.5c0 .7.6 1.3 1.2 1.3h5.5c.7 0 1.3-.6 1.3-1.2v-3.5c0-.7-.6-1.3-1.2-1.3m-1.3 0h-3V9.5c0-.8.7-1.3 1.5-1.3s1.5.5 1.5 1.3z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":32},"\u003Cpath fill=\"currentColor\" d=\"M28 6H4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2m-2.2 2L16 14.78L6.2 8ZM4 24V8.91l11.43 7.91a1 1 0 0 0 1.14 0L28 8.91V24Z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":34},"\u003Cpath fill=\"currentColor\" d=\"M31 11v10h-2l-2-6v6h-2V11h2l2 6v-6zm-9.666 10h-2.667A1.67 1.67 0 0 1 17 19.334v-6.667A1.67 1.67 0 0 1 18.666 11h2.667A1.67 1.67 0 0 1 23 12.666v6.667A1.67 1.67 0 0 1 21.334 21M19 19h2v-6h-2zm-5.666 2H9v-2h4v-2h-2a2 2 0 0 1-2-2v-2.334A1.67 1.67 0 0 1 10.666 11H15v2h-4v2h2a2 2 0 0 1 2 2v2.334A1.67 1.67 0 0 1 13.334 21m-8 0H2.667A1.67 1.67 0 0 1 1 19.334V17h2v2h2v-8h2v8.334A1.67 1.67 0 0 1 5.334 21\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":36},"\u003Cpath fill=\"currentColor\" d=\"m25.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7M18 4.4l5.6 5.6H18zM24 28H8V4h8v6c0 1.1.9 2 2 2h6z\"\u002F>\u003Cpath fill=\"currentColor\" d=\"M10 22h12v2H10zm0-6h12v2H10z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":38},"\u003Cpath fill=\"currentColor\" d=\"M24 21V9h-2v14h8v-2zM18 9l-1.52 5l-.48 1.98l-.46-1.98L14 9h-2v14h2v-8l-.16-2l.58 2L16 19.63L17.58 15l.58-2l-.16 2v8h2V9zm-8 0H8l-2 6l-2-6H2l2.75 7L2 23h2l2-6l2 6h2l-2.75-7z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":40},"\u003Cpath fill=\"currentColor\" d=\"M10 21H5c-1.11 0-2-.89-2-2V5c0-1.11.89-2 2-2h14c1.11 0 2 .89 2 2v5.33c-.3-.12-.63-.19-.96-.19c-.37 0-.72.08-1.04.23V5H5v14h5.11l-.11.11zM7 9h10V7H7zm0 8h5.11L14 15.12V15H7zm0-4h9.12l.88-.88V11H7zm14.7.58l-1.28-1.28a.55.55 0 0 0-.77 0l-1 1l2.05 2.05l1-1a.55.55 0 0 0 0-.77M12 22h2.06l6.05-6.07l-2.05-2.05L12 19.94z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":42},"\u003Cpath fill=\"currentColor\" d=\"M15 4v2h3v12h-3v2h5V4M4 4v16h5v-2H6V6h3V4z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":44},"\u003Cpath fill=\"currentColor\" d=\"M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m0-15a3 3 0 0 1 3 3c0 1.31-.83 2.42-2 2.83V14h2v2h-2v2h-2v-6.17A2.99 2.99 0 0 1 9 9a3 3 0 0 1 3-3m0 2a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":46},"\u003Cpath fill=\"currentColor\" d=\"M29.25 6.76a6 6 0 0 0-8.5 0l1.42 1.42a4 4 0 1 1 5.67 5.67l-8 8a4 4 0 1 1-5.67-5.66l1.41-1.42l-1.41-1.42l-1.42 1.42a6 6 0 0 0 0 8.5A6 6 0 0 0 17 25a6 6 0 0 0 4.27-1.76l8-8a6 6 0 0 0-.02-8.48\"\u002F>\u003Cpath fill=\"currentColor\" d=\"M4.19 24.82a4 4 0 0 1 0-5.67l8-8a4 4 0 0 1 5.67 0A3.94 3.94 0 0 1 19 14a4 4 0 0 1-1.17 2.85L15.71 19l1.42 1.42l2.12-2.12a6 6 0 0 0-8.51-8.51l-8 8a6 6 0 0 0 0 8.51A6 6 0 0 0 7 28a6.07 6.07 0 0 0 4.28-1.76l-1.42-1.42a4 4 0 0 1-5.67 0\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":48},"\u003Cpath fill=\"currentColor\" d=\"M12.63 2c5.53 0 10.01 4.5 10.01 10s-4.48 10-10.01 10c-3.51 0-6.58-1.82-8.37-4.57l1.58-1.25C7.25 18.47 9.76 20 12.64 20a8 8 0 0 0 8-8a8 8 0 0 0-8-8C8.56 4 5.2 7.06 4.71 11h2.76l-3.74 3.73L0 11h2.69c.5-5.05 4.76-9 9.94-9m2.96 8.24c.5.01.91.41.91.92v4.61c0 .5-.41.92-.92.92h-5.53c-.51 0-.92-.42-.92-.92v-4.61c0-.51.41-.91.91-.92V9.23c0-1.53 1.25-2.77 2.77-2.77c1.53 0 2.78 1.24 2.78 2.77zm-2.78-2.38c-.75 0-1.37.61-1.37 1.37v1.01h2.75V9.23c0-.76-.62-1.37-1.38-1.37\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":50},"\u003Cpath fill=\"currentColor\" d=\"M17 8h3v12h1v1h-4v-1h1v-3h-4l-1.5 3H14v1h-4v-1h1zm1 1l-3.5 7H18zM5 3h5c1.11 0 2 .89 2 2v11H9v-5H6v5H3V5c0-1.11.89-2 2-2m1 2v4h3V5z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":52},"\u003Cpath fill=\"currentColor\" d=\"M25 12h-5v2h5a1 1 0 0 1 1 1v2h-4a3.003 3.003 0 0 0-3 3v1a3.003 3.003 0 0 0 3 3h6v-9a3.003 3.003 0 0 0-3-3m-3 10a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h4v3zm-6 2h2L12 7h-2L4 24h2l1.694-5h6.613zm-7.629-7l2.497-7.371h.266L13.63 17z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":54},"\u003Cpath fill=\"currentColor\" d=\"m31 16l-7 7l-1.41-1.41L28.17 16l-5.58-5.59L24 9zM1 16l7-7l1.41 1.41L3.83 16l5.58 5.59L8 23zm11.42 9.484L17.64 6l1.932.517L14.352 26z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":56},"\u003Cpath fill=\"currentColor\" d=\"M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6h17.12c.79 0 1.44.63 1.44 1.41v9.18c0 .78-.65 1.41-1.44 1.41M3.44 6.94c-.26 0-.48.21-.48.47v9.19c0 .25.22.46.48.46h17.12c.26 0 .48-.21.48-.46V7.41c0-.26-.22-.47-.48-.47zm1.45 8.25V8.81h1.92l1.92 2.35l1.92-2.35h1.93v6.38h-1.93v-3.66l-1.92 2.35l-1.92-2.35v3.66zm12.01 0l-2.9-3.1h1.94V8.81h1.92v3.28h1.93z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":58},"\u003Cpath fill=\"currentColor\" d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-9.5 8.5c0 .8-.7 1.5-1.5 1.5H7v2H5.5V9H8c.8 0 1.5.7 1.5 1.5zm5 2c0 .8-.7 1.5-1.5 1.5h-2.5V9H13c.8 0 1.5.7 1.5 1.5zm4-3H17v1h1.5V13H17v2h-1.5V9h3zm-6.5 0h1v3h-1zm-5 0h1v1H7z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":60},"\u003Cpath fill=\"currentColor\" d=\"M28 6H18V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h10v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2M4 15h6.17l-2.58 2.59L9 19l5-5l-5-5l-1.41 1.41L10.17 13H4V4h12v20H4Zm12 13v-2a2 2 0 0 0 2-2V8h10v9h-6.17l2.58-2.59L23 13l-5 5l5 5l1.41-1.41L21.83 19H28v9Z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":62},"\u003Cpath fill=\"currentColor\" d=\"m12 15.39l-3.76 2.27l.99-4.28l-3.32-2.88l4.38-.37L12 6.09l1.71 4.04l4.38.37l-3.32 2.88l.99 4.28M22 9.24l-7.19-.61L12 2L9.19 8.63L2 9.24l5.45 4.73L5.82 21L12 17.27L18.18 21l-1.64-7.03z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":64},"\u003Cpath fill=\"currentColor\" d=\"M15 9h-2V7h2zm7 11v2h-7a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1H2v-2h7a1 1 0 0 1 1-1h1v-2H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-4v2h1a1 1 0 0 1 1 1zM9 5H7v10h2zm2 10h2v-4h2a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-4z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":66},"\u003Cpath fill=\"currentColor\" d=\"M10 7v2H9v6h1v2H6v-2h1V9H6V7zm6 0a2 2 0 0 1 2 2v6c0 1.11-.89 2-2 2h-4V7m4 2h-2v6h2z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":68},"\u003Cpath fill=\"currentColor\" d=\"M15 20a1 1 0 0 0-1-1h-1v-2h4a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h4v2h-1a1 1 0 0 0-1 1H2v2h7a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1h7v-2zm-8-5V5h10v10zm3-9H8v8h2zm4 0h-3v8h2v-2h1a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2m0 4h-1V8h1z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":70},"\u003Cpath fill=\"currentColor\" d=\"M7 9a2 2 0 0 1-2-2a2 2 0 0 1 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2m13-6H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1M7 19a2 2 0 0 1-2-2a2 2 0 0 1 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2m13-6H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":72},"\u003Cpath fill=\"currentColor\" d=\"M13 19h1a1 1 0 0 1 1 1h7v2h-7a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1H2v-2h7a1 1 0 0 1 1-1h1v-2H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-7zM4 3h16a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m5 4h1V5H9zm0 8h1v-2H9zM5 5v2h2V5zm0 8v2h2v-2z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":74},"\u003Cpath fill=\"currentColor\" d=\"M7 7H5a2 2 0 0 0-2 2v8h2v-4h2v4h2V9a2 2 0 0 0-2-2m0 4H5V9h2m7-2h-4v10h2v-4h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2m0 4h-2V9h2m6 0v6h1v2h-4v-2h1V9h-1V7h4v2Z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":76},"\u003Cpath fill=\"currentColor\" d=\"M12 22A10 10 0 0 1 2 12A10 10 0 0 1 12 2c5.5 0 10 4 10 9a6 6 0 0 1-6 6h-1.8c-.3 0-.5.2-.5.5c0 .1.1.2.1.3c.4.5.6 1.1.6 1.7c.1 1.4-1 2.5-2.4 2.5m0-18a8 8 0 0 0-8 8a8 8 0 0 0 8 8c.3 0 .5-.2.5-.5c0-.2-.1-.3-.1-.4c-.4-.5-.6-1-.6-1.6c0-1.4 1.1-2.5 2.5-2.5H16a4 4 0 0 0 4-4c0-3.9-3.6-7-8-7m-5.5 6c.8 0 1.5.7 1.5 1.5S7.3 13 6.5 13S5 12.3 5 11.5S5.7 10 6.5 10m3-4c.8 0 1.5.7 1.5 1.5S10.3 9 9.5 9S8 8.3 8 7.5S8.7 6 9.5 6m5 0c.8 0 1.5.7 1.5 1.5S15.3 9 14.5 9S13 8.3 13 7.5S13.7 6 14.5 6m3 4c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":78},"\u003Cpath fill=\"currentColor\" d=\"M12 20c4.4 0 8-3.6 8-8s-3.6-8-8-8s-8 3.6-8 8s3.6 8 8 8m0-18c5.5 0 10 4.5 10 10s-4.5 10-10 10S2 17.5 2 12S6.5 2 12 2m.5 10.8l-4.8 2.8l-.7-1.4l4-2.3V7h1.5z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":80},"\u003Cpath fill=\"currentColor\" d=\"M15 13h1.5v2.82l2.44 1.41l-.75 1.3L15 16.69zm4-5H5v11h4.67c-.43-.91-.67-1.93-.67-3a7 7 0 0 1 7-7c1.07 0 2.09.24 3 .67zM5 21a2 2 0 0 1-2-2V5c0-1.11.89-2 2-2h1V1h2v2h8V1h2v2h1a2 2 0 0 1 2 2v6.1c1.24 1.26 2 2.99 2 4.9a7 7 0 0 1-7 7c-1.91 0-3.64-.76-4.9-2zm11-9.85A4.85 4.85 0 0 0 11.15 16c0 2.68 2.17 4.85 4.85 4.85A4.85 4.85 0 0 0 20.85 16c0-2.68-2.17-4.85-4.85-4.85\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":82},"\u003Cpath fill=\"currentColor\" d=\"M12 20a7 7 0 0 1-7-7a7 7 0 0 1 7-7a7 7 0 0 1 7 7a7 7 0 0 1-7 7m7.03-12.61l1.42-1.42c-.45-.51-.9-.97-1.41-1.41L17.62 6c-1.55-1.26-3.5-2-5.62-2a9 9 0 0 0-9 9a9 9 0 0 0 9 9c5 0 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61M11 14h2V8h-2m4-7H9v2h6z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":84},"\u003Cpath fill=\"currentColor\" d=\"M12 20a8 8 0 0 0 8-8a8 8 0 0 0-8-8a8 8 0 0 0-8 8a8 8 0 0 0 8 8m0-18a10 10 0 0 1 10 10a10 10 0 0 1-10 10C6.47 22 2 17.5 2 12A10 10 0 0 1 12 2m.5 5v5.25l4.5 2.67l-.75 1.23L11 13V7z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":86},"\u003Cpath fill=\"currentColor\" d=\"M12 3c-1.27 0-2.4.8-2.82 2H3v2h1.95L2 14c-.47 2 1 3 3.5 3s4.06-1 3.5-3L6.05 7h3.12c.33.85.98 1.5 1.83 1.83V20H2v2h20v-2h-9V8.82c.85-.32 1.5-.97 1.82-1.82h3.13L15 14c-.47 2 1 3 3.5 3s4.06-1 3.5-3l-2.95-7H21V5h-6.17C14.4 3.8 13.27 3 12 3m0 2a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-6.5 5.25L7 14H4zm13 0L20 14h-3z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":88},"\u003Cpath fill=\"currentColor\" d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 16H5V5h14zM6.2 7.7h5v1.5h-5zm6.8 8.1h5v1.5h-5zm0-2.6h5v1.5h-5zM8 18h1.5v-2h2v-1.5h-2v-2H8v2H6V16h2zm6.1-7.1l1.4-1.4l1.4 1.4l1.1-1l-1.4-1.4L18 7.1L16.9 6l-1.4 1.4L14.1 6L13 7.1l1.4 1.4L13 9.9z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":90},"\u003Cpath fill=\"currentColor\" d=\"M10 2v2.26l2 1.33V4h10v15h-5v2h7V2zM7.5 5L0 10v11h15V10zM14 6v.93L15.61 8H16V6zm4 0v2h2V6zM7.5 7.5L13 11v8h-3v-6H5v6H2v-8zM18 10v2h2v-2zm0 4v2h2v-2z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":92},"\u003Cpath fill=\"currentColor\" d=\"m12 21.35l-1.45-1.32C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5c0 3.77-3.4 6.86-8.55 11.53z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":94},"\u003Cpath fill=\"currentColor\" d=\"M16 4L6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14z\"\u002F>",[96,741,1123,1539,1894,2142,2548,3133,3397,3823],{"id":97,"title":98,"body":99,"category":724,"date":725,"description":726,"draft":6,"extension":727,"image":728,"meta":729,"navigation":730,"path":731,"seo":732,"stem":733,"tags":734,"writer":738,"writerAvatar":739,"__hash__":740},"blog\u002Fblog\u002Fwhat-is-json.md","What Is JSON? A Complete Beginner's Guide",{"type":100,"value":101,"toc":707},"minimal",[102,107,115,118,122,125,179,184,365,369,372,493,497,501,508,512,526,530,545,549,552,556,626,629,633,681,685,696,700,703],[103,104,106],"h2",{"id":105},"what-is-json","What Is JSON?",[108,109,110,114],"p",{},[111,112,113],"strong",{},"JSON"," (JavaScript Object Notation) is a lightweight, text-based data interchange format. Despite its name, JSON is language-independent and used across virtually every programming language, framework, and platform in modern software development.",[108,116,117],{},"JSON was derived from JavaScript's object literal syntax, but it has become the universal standard for transmitting structured data between servers and clients - far surpassing XML in popularity for web APIs.",[103,119,121],{"id":120},"json-syntax-rules","JSON Syntax Rules",[108,123,124],{},"JSON has only a handful of rules, which makes it incredibly easy to learn:",[126,127,128,139,145,151,159,167,173],"ol",{},[129,130,131,134,135],"li",{},[111,132,133],{},"Data is in key-value pairs"," - ",[136,137,138],"code",{},"\"name\": \"value\"",[129,140,141,144],{},[111,142,143],{},"Keys must be strings"," - always wrapped in double quotes",[129,146,147,150],{},[111,148,149],{},"Values can be",": strings, numbers, booleans, null, arrays, or objects",[129,152,153,134,156],{},[111,154,155],{},"Objects use curly braces",[136,157,158],{},"{ }",[129,160,161,134,164],{},[111,162,163],{},"Arrays use square brackets",[136,165,166],{},"[ ]",[129,168,169,172],{},[111,170,171],{},"No trailing commas"," - the last item in an object or array must not have a trailing comma",[129,174,175,178],{},[111,176,177],{},"No comments"," - JSON does not support comments (unlike JSONC)",[180,181,183],"h3",{"id":182},"example-json-document","Example JSON Document",[185,186,191],"pre",{"className":187,"code":188,"language":189,"meta":190,"style":190},"language-json shiki shiki-themes github-light github-dark","{\n  \"name\": \"DailyUtil\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Free online developer tools\",\n  \"tools\": [\n    { \"name\": \"JSON Viewer\", \"category\": \"Data\" },\n    { \"name\": \"Base64 Encoder\", \"category\": \"Encoding\" },\n    { \"name\": \"JWT Decoder\", \"category\": \"Security\" }\n  ],\n  \"isOpenSource\": false,\n  \"totalTools\": 24\n}\n","json","",[136,192,193,202,219,232,245,254,282,305,329,335,348,359],{"__ignoreMap":190},[194,195,198],"span",{"class":196,"line":197},"line",1,[194,199,201],{"class":200},"sWKip","{\n",[194,203,205,209,212,216],{"class":196,"line":204},2,[194,206,208],{"class":207},"swLay","  \"name\"",[194,210,211],{"class":200},": ",[194,213,215],{"class":214},"sHTXl","\"DailyUtil\"",[194,217,218],{"class":200},",\n",[194,220,222,225,227,230],{"class":196,"line":221},3,[194,223,224],{"class":207},"  \"version\"",[194,226,211],{"class":200},[194,228,229],{"class":214},"\"1.0.0\"",[194,231,218],{"class":200},[194,233,235,238,240,243],{"class":196,"line":234},4,[194,236,237],{"class":207},"  \"description\"",[194,239,211],{"class":200},[194,241,242],{"class":214},"\"Free online developer tools\"",[194,244,218],{"class":200},[194,246,248,251],{"class":196,"line":247},5,[194,249,250],{"class":207},"  \"tools\"",[194,252,253],{"class":200},": [\n",[194,255,257,260,263,265,268,271,274,276,279],{"class":196,"line":256},6,[194,258,259],{"class":200},"    { ",[194,261,262],{"class":207},"\"name\"",[194,264,211],{"class":200},[194,266,267],{"class":214},"\"JSON Viewer\"",[194,269,270],{"class":200},", ",[194,272,273],{"class":207},"\"category\"",[194,275,211],{"class":200},[194,277,278],{"class":214},"\"Data\"",[194,280,281],{"class":200}," },\n",[194,283,285,287,289,291,294,296,298,300,303],{"class":196,"line":284},7,[194,286,259],{"class":200},[194,288,262],{"class":207},[194,290,211],{"class":200},[194,292,293],{"class":214},"\"Base64 Encoder\"",[194,295,270],{"class":200},[194,297,273],{"class":207},[194,299,211],{"class":200},[194,301,302],{"class":214},"\"Encoding\"",[194,304,281],{"class":200},[194,306,308,310,312,314,317,319,321,323,326],{"class":196,"line":307},8,[194,309,259],{"class":200},[194,311,262],{"class":207},[194,313,211],{"class":200},[194,315,316],{"class":214},"\"JWT Decoder\"",[194,318,270],{"class":200},[194,320,273],{"class":207},[194,322,211],{"class":200},[194,324,325],{"class":214},"\"Security\"",[194,327,328],{"class":200}," }\n",[194,330,332],{"class":196,"line":331},9,[194,333,334],{"class":200},"  ],\n",[194,336,338,341,343,346],{"class":196,"line":337},10,[194,339,340],{"class":207},"  \"isOpenSource\"",[194,342,211],{"class":200},[194,344,345],{"class":207},"false",[194,347,218],{"class":200},[194,349,351,354,356],{"class":196,"line":350},11,[194,352,353],{"class":207},"  \"totalTools\"",[194,355,211],{"class":200},[194,357,358],{"class":207},"24\n",[194,360,362],{"class":196,"line":361},12,[194,363,364],{"class":200},"}\n",[103,366,368],{"id":367},"json-data-types","JSON Data Types",[108,370,371],{},"JSON supports exactly six data types:",[373,374,375,391],"table",{},[376,377,378],"thead",{},[379,380,381,385,388],"tr",{},[382,383,384],"th",{},"Type",[382,386,387],{},"Example",[382,389,390],{},"Notes",[392,393,394,410,431,448,463,478],"tbody",{},[379,395,396,402,407],{},[397,398,399],"td",{},[111,400,401],{},"String",[397,403,404],{},[136,405,406],{},"\"hello world\"",[397,408,409],{},"Must use double quotes",[379,411,412,417,428],{},[397,413,414],{},[111,415,416],{},"Number",[397,418,419,270,422,270,425],{},[136,420,421],{},"42",[136,423,424],{},"3.14",[136,426,427],{},"-1",[397,429,430],{},"No leading zeros, no hex",[379,432,433,438,445],{},[397,434,435],{},[111,436,437],{},"Boolean",[397,439,440,270,443],{},[136,441,442],{},"true",[136,444,345],{},[397,446,447],{},"Lowercase only",[379,449,450,455,460],{},[397,451,452],{},[111,453,454],{},"Null",[397,456,457],{},[136,458,459],{},"null",[397,461,462],{},"Represents empty\u002Fmissing",[379,464,465,470,475],{},[397,466,467],{},[111,468,469],{},"Object",[397,471,472],{},[136,473,474],{},"{ \"key\": \"val\" }",[397,476,477],{},"Unordered key-value pairs",[379,479,480,485,490],{},[397,481,482],{},[111,483,484],{},"Array",[397,486,487],{},[136,488,489],{},"[1, 2, 3]",[397,491,492],{},"Ordered list of values",[103,494,496],{"id":495},"where-is-json-used","Where Is JSON Used?",[180,498,500],{"id":499},"rest-apis","REST APIs",[108,502,503,504,507],{},"Nearly every modern API returns JSON. When you call ",[136,505,506],{},"https:\u002F\u002Fapi.example.com\u002Fusers",", the response is almost always a JSON array of user objects.",[180,509,511],{"id":510},"configuration-files","Configuration Files",[108,513,514,517,518,521,522,525],{},[136,515,516],{},"package.json"," (Node.js), ",[136,519,520],{},"tsconfig.json"," (TypeScript), ",[136,523,524],{},"composer.json"," (PHP), and countless other tools use JSON for configuration.",[180,527,529],{"id":528},"local-storage","Local Storage",[108,531,532,533,536,537,540,541,544],{},"Browser ",[136,534,535],{},"localStorage"," stores string values - developers routinely ",[136,538,539],{},"JSON.stringify()"," objects to persist them and ",[136,542,543],{},"JSON.parse()"," to retrieve them.",[180,546,548],{"id":547},"database-documents","Database Documents",[108,550,551],{},"Document databases like MongoDB and CouchDB store data natively in JSON-like formats (BSON in MongoDB's case).",[103,553,555],{"id":554},"json-vs-xml","JSON vs XML",[373,557,558,570],{},[376,559,560],{},[379,561,562,565,567],{},[382,563,564],{},"Feature",[382,566,113],{},[382,568,569],{},"XML",[392,571,572,583,594,605,616],{},[379,573,574,577,580],{},[397,575,576],{},"Readability",[397,578,579],{},"✅ Compact",[397,581,582],{},"❌ Verbose",[379,584,585,588,591],{},[397,586,587],{},"Parse speed",[397,589,590],{},"✅ Faster",[397,592,593],{},"❌ Slower",[379,595,596,599,602],{},[397,597,598],{},"Data types",[397,600,601],{},"✅ Native types",[397,603,604],{},"❌ All strings",[379,606,607,610,613],{},[397,608,609],{},"Comments",[397,611,612],{},"❌ Not allowed",[397,614,615],{},"✅ Supported",[379,617,618,621,624],{},[397,619,620],{},"Attributes",[397,622,623],{},"❌ N\u002FA",[397,625,615],{},[108,627,628],{},"For APIs and web development, JSON has almost entirely replaced XML. However, XML still has niche uses in enterprise systems, SVG graphics, and document formats like DOCX.",[103,630,632],{"id":631},"common-json-mistakes","Common JSON Mistakes",[126,634,635,648,657,666,672],{},[129,636,637,640,641,644,645],{},[111,638,639],{},"Using single quotes"," - JSON requires double quotes: ",[136,642,643],{},"\"key\""," not ",[136,646,647],{},"'key'",[129,649,650,134,653,656],{},[111,651,652],{},"Trailing commas",[136,654,655],{},"{\"a\": 1,}"," is invalid JSON",[129,658,659,134,662,665],{},[111,660,661],{},"Unquoted keys",[136,663,664],{},"{name: \"value\"}"," is valid JavaScript but invalid JSON",[129,667,668,671],{},[111,669,670],{},"NaN and Infinity"," - these are not valid JSON values",[129,673,674,677,678],{},[111,675,676],{},"Date strings"," - JSON has no native date type; use ISO 8601 strings like ",[136,679,680],{},"\"2026-05-20T00:00:00Z\"",[103,682,684],{"id":683},"working-with-json-in-dailyutil","Working with JSON in DailyUtil",[108,686,687,688,695],{},"Our ",[111,689,690],{},[691,692,694],"a",{"href":693},"\u002Ftools\u002Fjson-viewer","JSON Viewer & Formatter"," lets you paste raw JSON, validate its structure, format it with proper indentation, and explore nested data in an interactive tree view - all in your browser, with zero data sent to any server.",[103,697,699],{"id":698},"conclusion","Conclusion",[108,701,702],{},"JSON is the lingua franca of modern web development. Its simplicity, readability, and universal support make it the go-to format for APIs, configuration, and data storage. Understanding JSON is not just useful - it's essential for any developer working with the web today.",[704,705,706],"style",{},"html pre.shiki code .sWKip, html code.shiki .sWKip{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .swLay, html code.shiki .swLay{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sHTXl, html code.shiki .sHTXl{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":190,"searchDepth":204,"depth":204,"links":708},[709,710,713,714,720,721,722,723],{"id":105,"depth":204,"text":106},{"id":120,"depth":204,"text":121,"children":711},[712],{"id":182,"depth":221,"text":183},{"id":367,"depth":204,"text":368},{"id":495,"depth":204,"text":496,"children":715},[716,717,718,719],{"id":499,"depth":221,"text":500},{"id":510,"depth":221,"text":511},{"id":528,"depth":221,"text":529},{"id":547,"depth":221,"text":548},{"id":554,"depth":204,"text":555},{"id":631,"depth":204,"text":632},{"id":683,"depth":204,"text":684},{"id":698,"depth":204,"text":699},"Developer Guides","2026-05-20","Learn what JSON is, how it works, and why it's the most popular data format in web development. Includes syntax rules, common use cases, and practical examples.","md","\u002Fimages\u002Fblog\u002Fwhat-is-json.webp",{},true,"\u002Fblog\u002Fwhat-is-json",{"title":98,"description":726},"blog\u002Fwhat-is-json",[113,735,736,737],"Web Development","API","Data Formats","DailyUtil Team",null,"p4GHIb42ot",{"id":742,"title":743,"body":744,"category":724,"date":1111,"description":1112,"draft":6,"extension":727,"image":1113,"meta":1114,"navigation":730,"path":1115,"seo":1116,"stem":1117,"tags":1118,"writer":738,"writerAvatar":739,"__hash__":1122},"blog\u002Fblog\u002Fbase64-encoding-explained.md","Base64 Encoding Explained: How It Works and When to Use It",{"type":100,"value":745,"toc":1095},[746,750,774,777,781,784,810,814,821,927,937,941,945,948,976,980,991,999,1003,1006,1010,1013,1017,1024,1028,1035,1039,1052,1075,1078,1082,1092],[103,747,749],{"id":748},"what-is-base64-encoding","What Is Base64 Encoding?",[108,751,752,753,270,756,270,759,270,762,765,766,769,770,773],{},"Base64 is a binary-to-text encoding scheme that converts binary data into a string of printable ASCII characters. It uses a set of 64 characters - ",[136,754,755],{},"A-Z",[136,757,758],{},"a-z",[136,760,761],{},"0-9",[136,763,764],{},"+",", and ",[136,767,768],{},"\u002F"," - plus ",[136,771,772],{},"="," for padding.",[108,775,776],{},"The primary purpose of Base64 is to safely transmit binary data through channels that only support text, such as email (MIME), HTML, JSON, and URLs.",[103,778,780],{"id":779},"how-base64-works","How Base64 Works",[108,782,783],{},"The algorithm is straightforward:",[126,785,786,789,796,802,805],{},[129,787,788],{},"Take the input bytes",[129,790,791,792,795],{},"Group them into blocks of ",[111,793,794],{},"3 bytes"," (24 bits)",[129,797,798,799],{},"Split each 24-bit block into ",[111,800,801],{},"4 groups of 6 bits",[129,803,804],{},"Map each 6-bit group to one of the 64 characters in the Base64 alphabet",[129,806,807,808],{},"If the input isn't a multiple of 3 bytes, pad with ",[136,809,772],{},[180,811,813],{"id":812},"step-by-step-example","Step-by-Step Example",[108,815,816,817,820],{},"Encoding the string ",[136,818,819],{},"\"Hi\"",":",[373,822,823,833],{},[376,824,825],{},[379,826,827,830],{},[382,828,829],{},"Step",[382,831,832],{},"Data",[392,834,835,850,860,870,890,898,917],{},[379,836,837,840],{},[397,838,839],{},"ASCII bytes",[397,841,842,845,846,849],{},[136,843,844],{},"H"," = 72, ",[136,847,848],{},"i"," = 105",[379,851,852,855],{},[397,853,854],{},"Binary",[397,856,857],{},[136,858,859],{},"01001000 01101001",[379,861,862,865],{},[397,863,864],{},"Pad to 24 bits",[397,866,867],{},[136,868,869],{},"01001000 01101001 00000000",[379,871,872,875],{},[397,873,874],{},"Split into 6-bit groups",[397,876,877,880,881,880,884,880,887],{},[136,878,879],{},"010010"," ",[136,882,883],{},"000110",[136,885,886],{},"100100",[136,888,889],{},"000000",[379,891,892,895],{},[397,893,894],{},"Base64 index",[397,896,897],{},"18, 6, 36, 0",[379,899,900,903],{},[397,901,902],{},"Base64 chars",[397,904,905,270,908,270,911,270,914],{},[136,906,907],{},"S",[136,909,910],{},"G",[136,912,913],{},"k",[136,915,916],{},"A",[379,918,919,922],{},[397,920,921],{},"Add padding",[397,923,924],{},[136,925,926],{},"SGk=",[108,928,929,930,932,933,936],{},"So ",[136,931,819],{}," encodes to ",[136,934,935],{},"\"SGk=\"",".",[103,938,940],{"id":939},"common-use-cases","Common Use Cases",[180,942,944],{"id":943},"data-uris-in-htmlcss","Data URIs in HTML\u002FCSS",[108,946,947],{},"Embed small images directly in HTML or CSS:",[185,949,953],{"className":950,"code":951,"language":952,"meta":190,"style":190},"language-html shiki shiki-themes github-light github-dark","\u003Cimg src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAA...\" \u002F>\n","html",[136,954,955],{"__ignoreMap":190},[194,956,957,960,964,968,970,973],{"class":196,"line":197},[194,958,959],{"class":200},"\u003C",[194,961,963],{"class":962},"smnu3","img",[194,965,967],{"class":966},"sDUX4"," src",[194,969,772],{"class":200},[194,971,972],{"class":214},"\"data:image\u002Fpng;base64,iVBORw0KGgoAAAA...\"",[194,974,975],{"class":200}," \u002F>\n",[180,977,979],{"id":978},"api-authentication","API Authentication",[108,981,982,983,986,987,990],{},"HTTP Basic Authentication sends ",[136,984,985],{},"username:password"," as a Base64 string in the ",[136,988,989],{},"Authorization"," header:",[185,992,997],{"className":993,"code":995,"language":996},[994],"language-text","Authorization: Basic dXNlcjpwYXNzd29yZA==\n","text",[136,998,995],{"__ignoreMap":190},[180,1000,1002],{"id":1001},"email-attachments-mime","Email Attachments (MIME)",[108,1004,1005],{},"Email protocols like SMTP only handle 7-bit ASCII. Binary attachments (images, PDFs) are Base64-encoded before transmission.",[180,1007,1009],{"id":1008},"jwt-tokens","JWT Tokens",[108,1011,1012],{},"JSON Web Tokens use Base64url encoding (a URL-safe variant) for the header and payload segments.",[103,1014,1016],{"id":1015},"base64-is-not-encryption","Base64 Is NOT Encryption",[108,1018,1019,1020,1023],{},"A critical misconception: ",[111,1021,1022],{},"Base64 is encoding, not encryption",". It provides zero security - anyone can decode a Base64 string instantly. Never use Base64 to protect sensitive data. Use proper encryption (AES, RSA) instead.",[103,1025,1027],{"id":1026},"base64-size-overhead","Base64 Size Overhead",[108,1029,1030,1031,1034],{},"Base64 increases data size by approximately ",[111,1032,1033],{},"33%",". Every 3 input bytes become 4 output characters. For large files, this overhead matters - which is why Base64 data URIs are typically used only for small assets (icons, fonts under 10KB).",[103,1036,1038],{"id":1037},"base64url-variant","Base64url Variant",[108,1040,1041,1042,1044,1045,1047,1048,1051],{},"Standard Base64 uses ",[136,1043,764],{}," and ",[136,1046,768],{},", which have special meaning in URLs. The ",[111,1049,1050],{},"Base64url"," variant replaces:",[1053,1054,1055,1063,1070],"ul",{},[129,1056,1057,1059,1060],{},[136,1058,764],{}," → ",[136,1061,1062],{},"-",[129,1064,1065,1059,1067],{},[136,1066,768],{},[136,1068,1069],{},"_",[129,1071,1072,1074],{},[136,1073,772],{}," padding → omitted",[108,1076,1077],{},"This variant is used in JWTs, URL parameters, and filenames.",[103,1079,1081],{"id":1080},"try-it-yourself","Try It Yourself",[108,1083,1084,1085,1091],{},"Use our ",[111,1086,1087],{},[691,1088,1090],{"href":1089},"\u002Ftools\u002Fbase64","Base64 Encoder & Decoder"," to encode and decode text instantly - entirely in your browser with no server-side processing.",[704,1093,1094],{},"html pre.shiki code .sWKip, html code.shiki .sWKip{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smnu3, html code.shiki .smnu3{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sDUX4, html code.shiki .sDUX4{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sHTXl, html code.shiki .sHTXl{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":190,"searchDepth":204,"depth":204,"links":1096},[1097,1098,1101,1107,1108,1109,1110],{"id":748,"depth":204,"text":749},{"id":779,"depth":204,"text":780,"children":1099},[1100],{"id":812,"depth":221,"text":813},{"id":939,"depth":204,"text":940,"children":1102},[1103,1104,1105,1106],{"id":943,"depth":221,"text":944},{"id":978,"depth":221,"text":979},{"id":1001,"depth":221,"text":1002},{"id":1008,"depth":221,"text":1009},{"id":1015,"depth":204,"text":1016},{"id":1026,"depth":204,"text":1027},{"id":1037,"depth":204,"text":1038},{"id":1080,"depth":204,"text":1081},"2026-05-19","Understand Base64 encoding from first principles. Learn why it exists, how the algorithm works step-by-step, and practical use cases for developers.","\u002Fimages\u002Fblog\u002Fbase64-encoding-explained.webp",{},"\u002Fblog\u002Fbase64-encoding-explained",{"title":743,"description":1112},"blog\u002Fbase64-encoding-explained",[1119,1120,735,1121],"Base64","Encoding","Data Transfer","05HMsnhjLh",{"id":1124,"title":1125,"body":1126,"category":1527,"date":1528,"description":1529,"draft":6,"extension":727,"image":1530,"meta":1531,"navigation":730,"path":1532,"seo":1533,"stem":1534,"tags":1535,"writer":738,"writerAvatar":739,"__hash__":1538},"blog\u002Fblog\u002Fjwt-tokens-explained.md","JWT Tokens Explained: How JSON Web Tokens Work",{"type":100,"value":1127,"toc":1508},[1128,1132,1139,1143,1146,1152,1156,1159,1194,1197,1201,1208,1278,1283,1321,1325,1328,1334,1338,1373,1379,1383,1387,1390,1394,1400,1404,1407,1411,1414,1422,1429,1433,1493,1497,1506],[103,1129,1131],{"id":1130},"what-is-a-jwt","What Is a JWT?",[108,1133,1134,1135,1138],{},"A ",[111,1136,1137],{},"JSON Web Token"," (JWT, pronounced \"jot\") is a compact, URL-safe token format used to represent claims between two parties. JWTs are the backbone of modern authentication - used by OAuth 2.0, OpenID Connect, and countless APIs.",[103,1140,1142],{"id":1141},"jwt-structure","JWT Structure",[108,1144,1145],{},"A JWT consists of three parts separated by dots:",[185,1147,1150],{"className":1148,"code":1149,"language":996},[994],"xxxxx.yyyyy.zzzzz\n  ↓       ↓       ↓\nHeader  Payload  Signature\n",[136,1151,1149],{"__ignoreMap":190},[180,1153,1155],{"id":1154},"_1-header","1. Header",[108,1157,1158],{},"The header specifies the token type and signing algorithm:",[185,1160,1162],{"className":187,"code":1161,"language":189,"meta":190,"style":190},"{\n  \"alg\": \"HS256\",\n  \"typ\": \"JWT\"\n}\n",[136,1163,1164,1168,1180,1190],{"__ignoreMap":190},[194,1165,1166],{"class":196,"line":197},[194,1167,201],{"class":200},[194,1169,1170,1173,1175,1178],{"class":196,"line":204},[194,1171,1172],{"class":207},"  \"alg\"",[194,1174,211],{"class":200},[194,1176,1177],{"class":214},"\"HS256\"",[194,1179,218],{"class":200},[194,1181,1182,1185,1187],{"class":196,"line":221},[194,1183,1184],{"class":207},"  \"typ\"",[194,1186,211],{"class":200},[194,1188,1189],{"class":214},"\"JWT\"\n",[194,1191,1192],{"class":196,"line":234},[194,1193,364],{"class":200},[108,1195,1196],{},"This is Base64url-encoded to form the first segment.",[180,1198,1200],{"id":1199},"_2-payload","2. Payload",[108,1202,1203,1204,1207],{},"The payload contains ",[111,1205,1206],{},"claims"," - statements about the user and metadata:",[185,1209,1211],{"className":187,"code":1210,"language":189,"meta":190,"style":190},"{\n  \"sub\": \"1234567890\",\n  \"name\": \"Jane Doe\",\n  \"email\": \"jane@example.com\",\n  \"iat\": 1716192000,\n  \"exp\": 1716278400\n}\n",[136,1212,1213,1217,1229,1240,1252,1264,1274],{"__ignoreMap":190},[194,1214,1215],{"class":196,"line":197},[194,1216,201],{"class":200},[194,1218,1219,1222,1224,1227],{"class":196,"line":204},[194,1220,1221],{"class":207},"  \"sub\"",[194,1223,211],{"class":200},[194,1225,1226],{"class":214},"\"1234567890\"",[194,1228,218],{"class":200},[194,1230,1231,1233,1235,1238],{"class":196,"line":221},[194,1232,208],{"class":207},[194,1234,211],{"class":200},[194,1236,1237],{"class":214},"\"Jane Doe\"",[194,1239,218],{"class":200},[194,1241,1242,1245,1247,1250],{"class":196,"line":234},[194,1243,1244],{"class":207},"  \"email\"",[194,1246,211],{"class":200},[194,1248,1249],{"class":214},"\"jane@example.com\"",[194,1251,218],{"class":200},[194,1253,1254,1257,1259,1262],{"class":196,"line":247},[194,1255,1256],{"class":207},"  \"iat\"",[194,1258,211],{"class":200},[194,1260,1261],{"class":207},"1716192000",[194,1263,218],{"class":200},[194,1265,1266,1269,1271],{"class":196,"line":256},[194,1267,1268],{"class":207},"  \"exp\"",[194,1270,211],{"class":200},[194,1272,1273],{"class":207},"1716278400\n",[194,1275,1276],{"class":196,"line":284},[194,1277,364],{"class":200},[108,1279,1280],{},[111,1281,1282],{},"Standard claims include:",[1053,1284,1285,1291,1297,1303,1309,1315],{},[129,1286,1287,1290],{},[136,1288,1289],{},"iss"," - Issuer",[129,1292,1293,1296],{},[136,1294,1295],{},"sub"," - Subject (usually user ID)",[129,1298,1299,1302],{},[136,1300,1301],{},"aud"," - Audience",[129,1304,1305,1308],{},[136,1306,1307],{},"exp"," - Expiration time (Unix timestamp)",[129,1310,1311,1314],{},[136,1312,1313],{},"iat"," - Issued at",[129,1316,1317,1320],{},[136,1318,1319],{},"nbf"," - Not valid before",[180,1322,1324],{"id":1323},"_3-signature","3. Signature",[108,1326,1327],{},"The signature is created by signing the encoded header + payload with a secret:",[185,1329,1332],{"className":1330,"code":1331,"language":996},[994],"HMACSHA256(\n  base64UrlEncode(header) + \".\" + base64UrlEncode(payload),\n  secret\n)\n",[136,1333,1331],{"__ignoreMap":190},[103,1335,1337],{"id":1336},"how-jwt-authentication-works","How JWT Authentication Works",[126,1339,1340,1346,1352,1358,1367],{},[129,1341,1342,1345],{},[111,1343,1344],{},"User logs in"," with credentials (email\u002Fpassword)",[129,1347,1348,1351],{},[111,1349,1350],{},"Server validates"," and creates a JWT with user claims",[129,1353,1354,1357],{},[111,1355,1356],{},"JWT is returned"," to the client (stored in cookie or localStorage)",[129,1359,1360,1363,1364,1366],{},[111,1361,1362],{},"Client sends JWT"," with each request in the ",[136,1365,989],{}," header",[129,1368,1369,1372],{},[111,1370,1371],{},"Server verifies"," the signature and reads claims from the payload",[185,1374,1377],{"className":1375,"code":1376,"language":996},[994],"Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\n",[136,1378,1376],{"__ignoreMap":190},[103,1380,1382],{"id":1381},"jwt-security-best-practices","JWT Security Best Practices",[180,1384,1386],{"id":1385},"always-verify-the-signature","Always verify the signature",[108,1388,1389],{},"Never trust a JWT payload without verifying its signature. An attacker can modify the payload and re-encode it.",[180,1391,1393],{"id":1392},"set-short-expiration-times","Set short expiration times",[108,1395,1396,1397,1399],{},"Use ",[136,1398,1307],{}," claims aggressively. Access tokens should expire in 15–60 minutes. Use refresh tokens for session continuity.",[180,1401,1403],{"id":1402},"use-https-only","Use HTTPS only",[108,1405,1406],{},"JWTs are not encrypted by default - they're just encoded. Always transmit over HTTPS.",[180,1408,1410],{"id":1409},"dont-store-sensitive-data-in-the-payload","Don't store sensitive data in the payload",[108,1412,1413],{},"The payload is Base64url-encoded, not encrypted. Anyone can decode it. Never put passwords, credit card numbers, or secrets in a JWT payload.",[180,1415,1417,1418,1421],{"id":1416},"beware-the-alg-none-attack","Beware the ",[136,1419,1420],{},"alg: \"none\""," attack",[108,1423,1424,1425,1428],{},"Some JWT libraries accept ",[136,1426,1427],{},"\"alg\": \"none\"",", which skips signature verification entirely. Always validate that the algorithm matches what you expect.",[103,1430,1432],{"id":1431},"jwts-vs-session-cookies","JWTs vs Session Cookies",[373,1434,1435,1447],{},[376,1436,1437],{},[379,1438,1439,1441,1444],{},[382,1440,564],{},[382,1442,1443],{},"JWT",[382,1445,1446],{},"Session Cookie",[392,1448,1449,1460,1471,1482],{},[379,1450,1451,1454,1457],{},[397,1452,1453],{},"Storage",[397,1455,1456],{},"Client-side",[397,1458,1459],{},"Server-side",[379,1461,1462,1465,1468],{},[397,1463,1464],{},"Scalability",[397,1466,1467],{},"✅ Stateless",[397,1469,1470],{},"❌ Requires session store",[379,1472,1473,1476,1479],{},[397,1474,1475],{},"Revocation",[397,1477,1478],{},"❌ Hard (needs blocklist)",[397,1480,1481],{},"✅ Delete from store",[379,1483,1484,1487,1490],{},[397,1485,1486],{},"Size",[397,1488,1489],{},"Larger (self-contained)",[397,1491,1492],{},"Smaller (just session ID)",[103,1494,1496],{"id":1495},"inspect-your-jwts","Inspect Your JWTs",[108,1498,1084,1499,1505],{},[111,1500,1501],{},[691,1502,1504],{"href":1503},"\u002Ftools\u002Fjwt","JWT Decoder"," to paste any JWT, see its decoded header and payload, and verify the token structure - all in your browser with no data leaving your machine.",[704,1507,706],{},{"title":190,"searchDepth":204,"depth":204,"links":1509},[1510,1511,1516,1517,1525,1526],{"id":1130,"depth":204,"text":1131},{"id":1141,"depth":204,"text":1142,"children":1512},[1513,1514,1515],{"id":1154,"depth":221,"text":1155},{"id":1199,"depth":221,"text":1200},{"id":1323,"depth":221,"text":1324},{"id":1336,"depth":204,"text":1337},{"id":1381,"depth":204,"text":1382,"children":1518},[1519,1520,1521,1522,1523],{"id":1385,"depth":221,"text":1386},{"id":1392,"depth":221,"text":1393},{"id":1402,"depth":221,"text":1403},{"id":1409,"depth":221,"text":1410},{"id":1416,"depth":221,"text":1524},"Beware the alg: \"none\" attack",{"id":1431,"depth":204,"text":1432},{"id":1495,"depth":204,"text":1496},"Security","2026-05-18","A developer's guide to JSON Web Tokens (JWT). Learn the structure, how signing works, common security pitfalls, and when to use JWTs in your applications.","\u002Fimages\u002Fblog\u002Fjwt-tokens-explained.webp",{},"\u002Fblog\u002Fjwt-tokens-explained",{"title":1125,"description":1529},"blog\u002Fjwt-tokens-explained",[1443,1536,1527,736,1537],"Authentication","OAuth","wwMgB2z65X",{"id":1540,"title":1541,"body":1542,"category":1880,"date":1881,"description":1882,"draft":6,"extension":727,"image":1883,"meta":1884,"navigation":730,"path":1885,"seo":1886,"stem":1887,"tags":1888,"writer":738,"writerAvatar":739,"__hash__":1893},"blog\u002Fblog\u002Fcron-expressions-explained.md","Cron Expressions Explained: Scheduling Tasks Like a Pro",{"type":100,"value":1543,"toc":1866},[1544,1548,1554,1558,1564,1568,1645,1649,1761,1765,1769,1775,1778,1782,1788,1791,1795,1801,1804,1808,1814,1817,1821,1853,1857],[103,1545,1547],{"id":1546},"what-is-a-cron-expression","What Is a Cron Expression?",[108,1549,1134,1550,1553],{},[111,1551,1552],{},"cron expression"," is a string of five (or six) fields that defines a schedule for recurring tasks. Originally from Unix, cron is now used across Linux servers, CI\u002FCD pipelines, cloud functions, and task schedulers everywhere.",[103,1555,1557],{"id":1556},"the-five-field-format","The Five-Field Format",[185,1559,1562],{"className":1560,"code":1561,"language":996},[994],"┌───────── minute (0-59)\n│ ┌─────── hour (0-23)\n│ │ ┌───── day of month (1-31)\n│ │ │ ┌─── month (1-12)\n│ │ │ │ ┌─ day of week (0-7, 0 and 7 = Sunday)\n│ │ │ │ │\n* * * * *\n",[136,1563,1561],{"__ignoreMap":190},[103,1565,1567],{"id":1566},"special-characters","Special Characters",[373,1569,1570,1582],{},[376,1571,1572],{},[379,1573,1574,1577,1580],{},[382,1575,1576],{},"Char",[382,1578,1579],{},"Meaning",[382,1581,387],{},[392,1583,1584,1600,1616,1631],{},[379,1585,1586,1591,1594],{},[397,1587,1588],{},[136,1589,1590],{},"*",[397,1592,1593],{},"Every value",[397,1595,1596,1599],{},[136,1597,1598],{},"* * * * *"," = every minute",[379,1601,1602,1607,1610],{},[397,1603,1604],{},[136,1605,1606],{},",",[397,1608,1609],{},"List",[397,1611,1612,1615],{},[136,1613,1614],{},"1,15 * * * *"," = minute 1 and 15",[379,1617,1618,1622,1625],{},[397,1619,1620],{},[136,1621,1062],{},[397,1623,1624],{},"Range",[397,1626,1627,1630],{},[136,1628,1629],{},"9-17 * * * *"," = hours 9 through 17",[379,1632,1633,1637,1639],{},[397,1634,1635],{},[136,1636,768],{},[397,1638,829],{},[397,1640,1641,1644],{},[136,1642,1643],{},"*\u002F15 * * * *"," = every 15 minutes",[103,1646,1648],{"id":1647},"common-patterns","Common Patterns",[373,1650,1651,1661],{},[376,1652,1653],{},[379,1654,1655,1658],{},[382,1656,1657],{},"Expression",[382,1659,1660],{},"Schedule",[392,1662,1663,1672,1682,1692,1702,1712,1721,1731,1741,1751],{},[379,1664,1665,1669],{},[397,1666,1667],{},[136,1668,1598],{},[397,1670,1671],{},"Every minute",[379,1673,1674,1679],{},[397,1675,1676],{},[136,1677,1678],{},"0 * * * *",[397,1680,1681],{},"Every hour (at :00)",[379,1683,1684,1689],{},[397,1685,1686],{},[136,1687,1688],{},"0 0 * * *",[397,1690,1691],{},"Daily at midnight",[379,1693,1694,1699],{},[397,1695,1696],{},[136,1697,1698],{},"0 0 * * 1",[397,1700,1701],{},"Every Monday at midnight",[379,1703,1704,1709],{},[397,1705,1706],{},[136,1707,1708],{},"0 0 1 * *",[397,1710,1711],{},"1st of every month",[379,1713,1714,1718],{},[397,1715,1716],{},[136,1717,1643],{},[397,1719,1720],{},"Every 15 minutes",[379,1722,1723,1728],{},[397,1724,1725],{},[136,1726,1727],{},"0 9-17 * * 1-5",[397,1729,1730],{},"Weekdays, 9am–5pm, hourly",[379,1732,1733,1738],{},[397,1734,1735],{},[136,1736,1737],{},"0 0 1 1 *",[397,1739,1740],{},"Yearly - January 1st at midnight",[379,1742,1743,1748],{},[397,1744,1745],{},[136,1746,1747],{},"30 4 * * *",[397,1749,1750],{},"Daily at 4:30 AM",[379,1752,1753,1758],{},[397,1754,1755],{},[136,1756,1757],{},"0 *\u002F2 * * *",[397,1759,1760],{},"Every 2 hours",[103,1762,1764],{"id":1763},"real-world-use-cases","Real-World Use Cases",[180,1766,1768],{"id":1767},"database-backups","Database Backups",[185,1770,1773],{"className":1771,"code":1772,"language":996},[994],"0 2 * * * \u002Fusr\u002Flocal\u002Fbin\u002Fbackup-db.sh\n",[136,1774,1772],{"__ignoreMap":190},[108,1776,1777],{},"Run a database backup every day at 2:00 AM.",[180,1779,1781],{"id":1780},"log-rotation","Log Rotation",[185,1783,1786],{"className":1784,"code":1785,"language":996},[994],"0 0 * * 0 \u002Fusr\u002Fsbin\u002Flogrotate \u002Fetc\u002Flogrotate.conf\n",[136,1787,1785],{"__ignoreMap":190},[108,1789,1790],{},"Rotate logs every Sunday at midnight.",[180,1792,1794],{"id":1793},"cache-clearing","Cache Clearing",[185,1796,1799],{"className":1797,"code":1798,"language":996},[994],"*\u002F30 * * * * curl -X POST https:\u002F\u002Fapi.example.com\u002Fcache\u002Fclear\n",[136,1800,1798],{"__ignoreMap":190},[108,1802,1803],{},"Clear cache every 30 minutes.",[180,1805,1807],{"id":1806},"ssl-certificate-renewal","SSL Certificate Renewal",[185,1809,1812],{"className":1810,"code":1811,"language":996},[994],"0 3 1 * * certbot renew --quiet\n",[136,1813,1811],{"__ignoreMap":190},[108,1815,1816],{},"Attempt certificate renewal on the 1st of every month at 3:00 AM.",[103,1818,1820],{"id":1819},"common-mistakes","Common Mistakes",[126,1822,1823,1829,1835,1841,1847],{},[129,1824,1825,1828],{},[111,1826,1827],{},"Forgetting the month\u002Fday-of-week fields"," - all five fields are required",[129,1830,1831,1834],{},[111,1832,1833],{},"Confusing day-of-week numbering"," - 0 and 7 both mean Sunday (system-dependent)",[129,1836,1837,1840],{},[111,1838,1839],{},"Setting both day-of-month AND day-of-week"," - this creates an OR condition, not AND",[129,1842,1843,1846],{},[111,1844,1845],{},"Not accounting for timezone"," - cron typically runs in the server's local timezone",[129,1848,1849,1852],{},[111,1850,1851],{},"Overlapping executions"," - if a job takes 5 minutes but runs every minute, you'll have 5 concurrent instances",[103,1854,1856],{"id":1855},"build-your-own","Build Your Own",[108,1858,1084,1859,1865],{},[111,1860,1861],{},[691,1862,1864],{"href":1863},"\u002Ftools\u002Fcron-expression","Cron Expression Generator"," to build and validate cron expressions with an interactive visual builder - see the next 10 execution times instantly.",{"title":190,"searchDepth":204,"depth":204,"links":1867},[1868,1869,1870,1871,1872,1878,1879],{"id":1546,"depth":204,"text":1547},{"id":1556,"depth":204,"text":1557},{"id":1566,"depth":204,"text":1567},{"id":1647,"depth":204,"text":1648},{"id":1763,"depth":204,"text":1764,"children":1873},[1874,1875,1876,1877],{"id":1767,"depth":221,"text":1768},{"id":1780,"depth":221,"text":1781},{"id":1793,"depth":221,"text":1794},{"id":1806,"depth":221,"text":1807},{"id":1819,"depth":204,"text":1820},{"id":1855,"depth":204,"text":1856},"DevOps","2026-05-17","Master cron expression syntax with this comprehensive guide. Learn the five-field format, special characters, common patterns, and how to avoid scheduling mistakes.","\u002Fimages\u002Fblog\u002Fcron-expressions-explained.webp",{},"\u002Fblog\u002Fcron-expressions-explained",{"title":1541,"description":1882},"blog\u002Fcron-expressions-explained",[1889,1890,1891,1880,1892],"Cron","Scheduling","Linux","Automation","NmzIlXnHZj",{"id":1895,"title":1896,"body":1897,"category":724,"date":2131,"description":2132,"draft":6,"extension":727,"image":2133,"meta":2134,"navigation":730,"path":2135,"seo":2136,"stem":2137,"tags":2138,"writer":738,"writerAvatar":739,"__hash__":2141},"blog\u002Fblog\u002Fuuid-vs-guid-explained.md","UUID vs GUID: What They Are and When to Use Them",{"type":100,"value":1898,"toc":2119},[1899,1903,1909,1915,1921,1927,1931,1935,1938,1944,1948,1951,1956,1960,1963,1968,1972,1983,1986,1990,2069,2073,2105,2109],[103,1900,1902],{"id":1901},"what-is-a-uuid","What Is a UUID?",[108,1904,1134,1905,1908],{},[111,1906,1907],{},"UUID"," (Universally Unique Identifier) is a 128-bit value used to uniquely identify information in computer systems. UUIDs follow the format:",[185,1910,1913],{"className":1911,"code":1912,"language":996},[994],"550e8400-e29b-41d4-a716-446655440000\n",[136,1914,1912],{"__ignoreMap":190},[108,1916,1917,1918,936],{},"That's 32 hexadecimal digits displayed in five groups separated by hyphens: ",[136,1919,1920],{},"8-4-4-4-12",[108,1922,1923,1926],{},[111,1924,1925],{},"GUID"," (Globally Unique Identifier) is Microsoft's term for the same thing. UUID and GUID are functionally identical.",[103,1928,1930],{"id":1929},"uuid-versions","UUID Versions",[180,1932,1934],{"id":1933},"uuid-v1-time-based","UUID v1 - Time-based",[108,1936,1937],{},"Generated from the current timestamp and the device's MAC address. Guarantees uniqueness but exposes the creation time and hardware identity.",[108,1939,1940,1943],{},[111,1941,1942],{},"Use when:"," You need sortable, time-ordered IDs and privacy isn't a concern.",[180,1945,1947],{"id":1946},"uuid-v4-random","UUID v4 - Random",[108,1949,1950],{},"Generated from cryptographically random numbers. The most widely used version - no information leakage, no coordination needed.",[108,1952,1953,1955],{},[111,1954,1942],{}," You need unique IDs with no metadata exposure (most applications).",[180,1957,1959],{"id":1958},"uuid-v5-name-based-sha-1","UUID v5 - Name-based (SHA-1)",[108,1961,1962],{},"Generated by hashing a namespace UUID + name string with SHA-1. The same inputs always produce the same UUID - making it deterministic.",[108,1964,1965,1967],{},[111,1966,1942],{}," You need reproducible IDs from known inputs (e.g., converting URLs to UUIDs).",[103,1969,1971],{"id":1970},"how-unique-are-uuids","How Unique Are UUIDs?",[108,1973,1974,1975,1978,1979,1982],{},"UUID v4 has 122 random bits, producing ",[111,1976,1977],{},"5.3 × 10³⁶"," possible values. To have a 50% chance of a collision, you'd need to generate approximately ",[111,1980,1981],{},"2.71 × 10¹⁸"," UUIDs - that's 2.71 quintillion.",[108,1984,1985],{},"For context: if you generated 1 billion UUIDs per second, it would take about 85 years to reach a 50% collision probability.",[103,1987,1989],{"id":1988},"uuid-vs-auto-increment-ids","UUID vs Auto-Increment IDs",[373,1991,1992,2003],{},[376,1993,1994],{},[379,1995,1996,1998,2000],{},[382,1997,564],{},[382,1999,1907],{},[382,2001,2002],{},"Auto-Increment",[392,2004,2005,2016,2027,2038,2048,2059],{},[379,2006,2007,2010,2013],{},[397,2008,2009],{},"Uniqueness scope",[397,2011,2012],{},"Global",[397,2014,2015],{},"Single database",[379,2017,2018,2021,2024],{},[397,2019,2020],{},"Merging databases",[397,2022,2023],{},"✅ No conflicts",[397,2025,2026],{},"❌ ID collisions",[379,2028,2029,2032,2035],{},[397,2030,2031],{},"Predictability",[397,2033,2034],{},"✅ Opaque",[397,2036,2037],{},"❌ Sequential (security risk)",[379,2039,2040,2042,2045],{},[397,2041,1486],{},[397,2043,2044],{},"16 bytes",[397,2046,2047],{},"4-8 bytes",[379,2049,2050,2053,2056],{},[397,2051,2052],{},"Index performance",[397,2054,2055],{},"❌ Random = fragmented",[397,2057,2058],{},"✅ Sequential = fast",[379,2060,2061,2063,2066],{},[397,2062,576],{},[397,2064,2065],{},"❌ Long hex string",[397,2067,2068],{},"✅ Simple number",[103,2070,2072],{"id":2071},"best-practices","Best Practices",[126,2074,2075,2081,2087,2093,2099],{},[129,2076,2077,2080],{},[111,2078,2079],{},"Use UUID v4 for most applications"," - it's simple, random, and has no metadata leakage",[129,2082,2083,2086],{},[111,2084,2085],{},"Store as binary(16) in databases"," - not as a 36-character string (saves 56% storage)",[129,2088,2089,2092],{},[111,2090,2091],{},"Use UUID v7 for sortable IDs"," - the newer RFC 9562 introduces time-ordered UUIDs optimised for database indexing",[129,2094,2095,2098],{},[111,2096,2097],{},"Don't rely on UUIDs for security"," - they're unique, not secret. Use cryptographic tokens for auth.",[129,2100,2101,2104],{},[111,2102,2103],{},"Consider ULID or NanoID"," - for shorter, URL-friendly identifiers",[103,2106,2108],{"id":2107},"generate-uuids","Generate UUIDs",[108,2110,2111,2112,2118],{},"Try our ",[111,2113,2114],{},[691,2115,2117],{"href":2116},"\u002Ftools\u002Fuuid-generator","UUID Generator"," to generate v1, v4, and v5 UUIDs instantly in your browser with batch generation support.",{"title":190,"searchDepth":204,"depth":204,"links":2120},[2121,2122,2127,2128,2129,2130],{"id":1901,"depth":204,"text":1902},{"id":1929,"depth":204,"text":1930,"children":2123},[2124,2125,2126],{"id":1933,"depth":221,"text":1934},{"id":1946,"depth":221,"text":1947},{"id":1958,"depth":221,"text":1959},{"id":1970,"depth":204,"text":1971},{"id":1988,"depth":204,"text":1989},{"id":2071,"depth":204,"text":2072},{"id":2107,"depth":204,"text":2108},"2026-05-16","Learn about UUIDs and GUIDs - their versions, formats, collision probability, and practical guidance on choosing between v1, v4, and v5 for your applications.","\u002Fimages\u002Fblog\u002Fuuid-vs-guid-explained.webp",{},"\u002Fblog\u002Fuuid-vs-guid-explained",{"title":1896,"description":2132},"blog\u002Fuuid-vs-guid-explained",[1907,1925,2139,736,2140],"Database","Identifiers","l6uFj5n2Oz",{"id":2143,"title":2144,"body":2145,"category":2536,"date":2537,"description":2538,"draft":6,"extension":727,"image":2539,"meta":2540,"navigation":730,"path":2541,"seo":2542,"stem":2543,"tags":2544,"writer":738,"writerAvatar":739,"__hash__":2547},"blog\u002Fblog\u002Furl-encoding-explained.md","URL Encoding Explained: Why %20 Means Space",{"type":100,"value":2146,"toc":2525},[2147,2151,2164,2167,2171,2186,2192,2201,2207,2211,2341,2345,2348,2354,2373,2400,2406,2421,2443,2455,2457,2509,2513,2522],[103,2148,2150],{"id":2149},"what-is-url-encoding","What Is URL Encoding?",[108,2152,2153,2156,2157,2160,2161,936],{},[111,2154,2155],{},"URL encoding"," (also called percent encoding) is the process of replacing unsafe or reserved characters in a URL with a ",[136,2158,2159],{},"%"," followed by their hexadecimal ASCII code. For example, a space becomes ",[136,2162,2163],{},"%20",[108,2165,2166],{},"URLs can only contain a limited set of ASCII characters. Any character outside this set - including spaces, Unicode characters, and reserved symbols - must be percent-encoded for the URL to be valid.",[103,2168,2170],{"id":2169},"why-does-url-encoding-exist","Why Does URL Encoding Exist?",[108,2172,2173,2174,270,2177,270,2180,765,2182,2185],{},"URLs are transmitted over protocols that only understand ASCII. Special characters like ",[136,2175,2176],{},"?",[136,2178,2179],{},"&",[136,2181,772],{},[136,2183,2184],{},"#"," have structural meaning in URLs:",[185,2187,2190],{"className":2188,"code":2189,"language":996},[994],"https:\u002F\u002Fexample.com\u002Fsearch?query=hello world&page=1\n                           ↑     ↑          ↑\n                          start   value      separator\n",[136,2191,2189],{"__ignoreMap":190},[108,2193,2194,2195,2197,2198,2200],{},"If your search query contains ",[136,2196,2179],{}," or ",[136,2199,772],{},", the URL parser can't tell the difference between your data and the URL structure. Encoding solves this:",[185,2202,2205],{"className":2203,"code":2204,"language":996},[994],"https:\u002F\u002Fexample.com\u002Fsearch?query=hello%20world&page=1\n",[136,2206,2204],{"__ignoreMap":190},[103,2208,2210],{"id":2209},"common-encoded-characters","Common Encoded Characters",[373,2212,2213,2226],{},[376,2214,2215],{},[379,2216,2217,2220,2223],{},[382,2218,2219],{},"Character",[382,2221,2222],{},"Encoded",[382,2224,2225],{},"Why",[392,2227,2228,2242,2256,2270,2284,2298,2312,2327],{},[379,2229,2230,2233,2239],{},[397,2231,2232],{},"Space",[397,2234,2235,2197,2237],{},[136,2236,2163],{},[136,2238,764],{},[397,2240,2241],{},"Not allowed in URLs",[379,2243,2244,2248,2253],{},[397,2245,2246],{},[136,2247,2179],{},[397,2249,2250],{},[136,2251,2252],{},"%26",[397,2254,2255],{},"Separates query parameters",[379,2257,2258,2262,2267],{},[397,2259,2260],{},[136,2261,772],{},[397,2263,2264],{},[136,2265,2266],{},"%3D",[397,2268,2269],{},"Separates key from value",[379,2271,2272,2276,2281],{},[397,2273,2274],{},[136,2275,2176],{},[397,2277,2278],{},[136,2279,2280],{},"%3F",[397,2282,2283],{},"Starts query string",[379,2285,2286,2290,2295],{},[397,2287,2288],{},[136,2289,2184],{},[397,2291,2292],{},[136,2293,2294],{},"%23",[397,2296,2297],{},"Starts fragment",[379,2299,2300,2304,2309],{},[397,2301,2302],{},[136,2303,768],{},[397,2305,2306],{},[136,2307,2308],{},"%2F",[397,2310,2311],{},"Path separator",[379,2313,2314,2319,2324],{},[397,2315,2316],{},[136,2317,2318],{},"@",[397,2320,2321],{},[136,2322,2323],{},"%40",[397,2325,2326],{},"Used in email\u002Fauth",[379,2328,2329,2333,2338],{},[397,2330,2331],{},[136,2332,764],{},[397,2334,2335],{},[136,2336,2337],{},"%2B",[397,2339,2340],{},"Means space in forms",[103,2342,2344],{"id":2343},"encodeuri-vs-encodeuricomponent","encodeURI vs encodeURIComponent",[108,2346,2347],{},"JavaScript provides two functions with different scopes:",[180,2349,2351],{"id":2350},"encodeuri",[136,2352,2353],{},"encodeURI()",[108,2355,2356,2357,2360,2361,270,2363,270,2365,270,2367,270,2369,270,2371,936],{},"Encodes a ",[111,2358,2359],{},"full URL"," - preserves structural characters like ",[136,2362,820],{},[136,2364,768],{},[136,2366,2176],{},[136,2368,2179],{},[136,2370,772],{},[136,2372,2184],{},[185,2374,2378],{"className":2375,"code":2376,"language":2377,"meta":190,"style":190},"language-javascript shiki shiki-themes github-light github-dark","encodeURI(\"https:\u002F\u002Fexample.com\u002Fpath?q=hello world\")\n\u002F\u002F \"https:\u002F\u002Fexample.com\u002Fpath?q=hello%20world\"\n","javascript",[136,2379,2380,2394],{"__ignoreMap":190},[194,2381,2382,2385,2388,2391],{"class":196,"line":197},[194,2383,2384],{"class":966},"encodeURI",[194,2386,2387],{"class":200},"(",[194,2389,2390],{"class":214},"\"https:\u002F\u002Fexample.com\u002Fpath?q=hello world\"",[194,2392,2393],{"class":200},")\n",[194,2395,2396],{"class":196,"line":204},[194,2397,2399],{"class":2398},"sKA9v","\u002F\u002F \"https:\u002F\u002Fexample.com\u002Fpath?q=hello%20world\"\n",[180,2401,2403],{"id":2402},"encodeuricomponent",[136,2404,2405],{},"encodeURIComponent()",[108,2407,2356,2408,2411,2412,270,2414,270,2416,270,2418,936],{},[111,2409,2410],{},"single value"," - encodes everything except letters, digits, ",[136,2413,1062],{},[136,2415,1069],{},[136,2417,936],{},[136,2419,2420],{},"~",[185,2422,2424],{"className":2375,"code":2423,"language":2377,"meta":190,"style":190},"encodeURIComponent(\"hello world&foo=bar\")\n\u002F\u002F \"hello%20world%26foo%3Dbar\"\n",[136,2425,2426,2438],{"__ignoreMap":190},[194,2427,2428,2431,2433,2436],{"class":196,"line":197},[194,2429,2430],{"class":966},"encodeURIComponent",[194,2432,2387],{"class":200},[194,2434,2435],{"class":214},"\"hello world&foo=bar\"",[194,2437,2393],{"class":200},[194,2439,2440],{"class":196,"line":204},[194,2441,2442],{"class":2398},"\u002F\u002F \"hello%20world%26foo%3Dbar\"\n",[108,2444,2445,2448,2449,2451,2452,2454],{},[111,2446,2447],{},"Rule of thumb:"," Use ",[136,2450,2405],{}," for query parameter values. Use ",[136,2453,2353],{}," for complete URLs.",[103,2456,1820],{"id":1819},[126,2458,2459,2471,2486,2495],{},[129,2460,2461,2464,2465,2468,2469],{},[111,2462,2463],{},"Double encoding"," - encoding an already-encoded URL produces ",[136,2466,2467],{},"%2520"," instead of ",[136,2470,2163],{},[129,2472,2473,134,2479,2481,2482,2485],{},[111,2474,2475,2476,2478],{},"Using ",[136,2477,764],{}," for spaces in paths",[136,2480,764],{}," only means space in ",[136,2483,2484],{},"application\u002Fx-www-form-urlencoded"," (form submissions), not in URL paths",[129,2487,2488,134,2491,2494],{},[111,2489,2490],{},"Not encoding filenames",[136,2492,2493],{},"My Document (1).pdf"," in a URL path will break without encoding",[129,2496,2497,2500,2501,2504,2505,2508],{},[111,2498,2499],{},"Forgetting Unicode"," - characters like ",[136,2502,2503],{},"é"," become ",[136,2506,2507],{},"%C3%A9"," (UTF-8 bytes, then percent-encoded)",[103,2510,2512],{"id":2511},"try-it","Try It",[108,2514,1084,2515,2521],{},[111,2516,2517],{},[691,2518,2520],{"href":2519},"\u002Ftools\u002Furl-encoder","URL Encoder & Decoder"," to encode and decode URLs instantly - perfect for debugging API calls and form submissions.",[704,2523,2524],{},"html pre.shiki code .sDUX4, html code.shiki .sDUX4{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sWKip, html code.shiki .sWKip{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sHTXl, html code.shiki .sHTXl{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sKA9v, html code.shiki .sKA9v{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":190,"searchDepth":204,"depth":204,"links":2526},[2527,2528,2529,2530,2534,2535],{"id":2149,"depth":204,"text":2150},{"id":2169,"depth":204,"text":2170},{"id":2209,"depth":204,"text":2210},{"id":2343,"depth":204,"text":2344,"children":2531},[2532,2533],{"id":2350,"depth":221,"text":2353},{"id":2402,"depth":221,"text":2405},{"id":1819,"depth":204,"text":1820},{"id":2511,"depth":204,"text":2512},"Web Fundamentals","2026-05-15","Understand URL encoding (percent encoding), why it exists, which characters must be encoded, and how to properly handle URLs in your web applications.","\u002Fimages\u002Fblog\u002Furl-encoding-explained.webp",{},"\u002Fblog\u002Furl-encoding-explained",{"title":2144,"description":2538},"blog\u002Furl-encoding-explained",[2545,2546,735,736],"URL Encoding","HTTP","yDuiwip8Ca",{"id":2549,"title":2550,"body":2551,"category":1880,"date":3122,"description":3123,"draft":6,"extension":727,"image":3124,"meta":3125,"navigation":730,"path":3126,"seo":3127,"stem":3128,"tags":3129,"writer":738,"writerAvatar":739,"__hash__":3132},"blog\u002Fblog\u002Fwhat-is-yaml.md","What Is YAML? A Practical Guide for Developers",{"type":100,"value":2552,"toc":3106},[2553,2557,2563,2566,2570,2574,2611,2615,2658,2665,2669,2710,2714,2769,2773,2834,2838,2848,2873,2882,2911,2915,2984,2988,3050,3054,3090,3094,3103],[103,2554,2556],{"id":2555},"what-is-yaml","What Is YAML?",[108,2558,2559,2562],{},[111,2560,2561],{},"YAML"," (YAML Ain't Markup Language) is a human-readable data serialisation format. It's designed to be easy to read and write by humans while remaining simple for machines to parse.",[108,2564,2565],{},"YAML is the dominant configuration format in the DevOps ecosystem - used by Docker Compose, Kubernetes, GitHub Actions, Ansible, and many CI\u002FCD tools.",[103,2567,2569],{"id":2568},"yaml-syntax-basics","YAML Syntax Basics",[180,2571,2573],{"id":2572},"key-value-pairs","Key-Value Pairs",[185,2575,2579],{"className":2576,"code":2577,"language":2578,"meta":190,"style":190},"language-yaml shiki shiki-themes github-light github-dark","name: DailyUtil\nversion: 1.0.0\ndescription: Free developer tools\n","yaml",[136,2580,2581,2591,2601],{"__ignoreMap":190},[194,2582,2583,2586,2588],{"class":196,"line":197},[194,2584,2585],{"class":962},"name",[194,2587,211],{"class":200},[194,2589,2590],{"class":214},"DailyUtil\n",[194,2592,2593,2596,2598],{"class":196,"line":204},[194,2594,2595],{"class":962},"version",[194,2597,211],{"class":200},[194,2599,2600],{"class":207},"1.0.0\n",[194,2602,2603,2606,2608],{"class":196,"line":221},[194,2604,2605],{"class":962},"description",[194,2607,211],{"class":200},[194,2609,2610],{"class":214},"Free developer tools\n",[180,2612,2614],{"id":2613},"nested-objects-indentation","Nested Objects (Indentation)",[185,2616,2618],{"className":2576,"code":2617,"language":2578,"meta":190,"style":190},"database:\n  host: localhost\n  port: 5432\n  name: dailyutil_db\n",[136,2619,2620,2628,2638,2648],{"__ignoreMap":190},[194,2621,2622,2625],{"class":196,"line":197},[194,2623,2624],{"class":962},"database",[194,2626,2627],{"class":200},":\n",[194,2629,2630,2633,2635],{"class":196,"line":204},[194,2631,2632],{"class":962},"  host",[194,2634,211],{"class":200},[194,2636,2637],{"class":214},"localhost\n",[194,2639,2640,2643,2645],{"class":196,"line":221},[194,2641,2642],{"class":962},"  port",[194,2644,211],{"class":200},[194,2646,2647],{"class":207},"5432\n",[194,2649,2650,2653,2655],{"class":196,"line":234},[194,2651,2652],{"class":962},"  name",[194,2654,211],{"class":200},[194,2656,2657],{"class":214},"dailyutil_db\n",[108,2659,2660,2661,2664],{},"YAML uses ",[111,2662,2663],{},"spaces for indentation"," (never tabs). The standard is 2 spaces per level.",[180,2666,2668],{"id":2667},"lists-arrays","Lists (Arrays)",[185,2670,2672],{"className":2576,"code":2671,"language":2578,"meta":190,"style":190},"tools:\n  - JSON Viewer\n  - Base64 Encoder\n  - JWT Decoder\n  - UUID Generator\n",[136,2673,2674,2681,2689,2696,2703],{"__ignoreMap":190},[194,2675,2676,2679],{"class":196,"line":197},[194,2677,2678],{"class":962},"tools",[194,2680,2627],{"class":200},[194,2682,2683,2686],{"class":196,"line":204},[194,2684,2685],{"class":200},"  - ",[194,2687,2688],{"class":214},"JSON Viewer\n",[194,2690,2691,2693],{"class":196,"line":221},[194,2692,2685],{"class":200},[194,2694,2695],{"class":214},"Base64 Encoder\n",[194,2697,2698,2700],{"class":196,"line":234},[194,2699,2685],{"class":200},[194,2701,2702],{"class":214},"JWT Decoder\n",[194,2704,2705,2707],{"class":196,"line":247},[194,2706,2685],{"class":200},[194,2708,2709],{"class":214},"UUID Generator\n",[180,2711,2713],{"id":2712},"inline-syntax","Inline Syntax",[185,2715,2717],{"className":2576,"code":2716,"language":2578,"meta":190,"style":190},"tools: [JSON Viewer, Base64 Encoder, JWT Decoder]\nconfig: {host: localhost, port: 5432}\n",[136,2718,2719,2741],{"__ignoreMap":190},[194,2720,2721,2723,2726,2729,2731,2734,2736,2738],{"class":196,"line":197},[194,2722,2678],{"class":962},[194,2724,2725],{"class":200},": [",[194,2727,2728],{"class":214},"JSON Viewer",[194,2730,270],{"class":200},[194,2732,2733],{"class":214},"Base64 Encoder",[194,2735,270],{"class":200},[194,2737,1504],{"class":214},[194,2739,2740],{"class":200},"]\n",[194,2742,2743,2746,2749,2752,2754,2757,2759,2762,2764,2767],{"class":196,"line":204},[194,2744,2745],{"class":962},"config",[194,2747,2748],{"class":200},": {",[194,2750,2751],{"class":962},"host",[194,2753,211],{"class":200},[194,2755,2756],{"class":214},"localhost",[194,2758,270],{"class":200},[194,2760,2761],{"class":962},"port",[194,2763,211],{"class":200},[194,2765,2766],{"class":207},"5432",[194,2768,364],{"class":200},[103,2770,2772],{"id":2771},"yaml-data-types","YAML Data Types",[373,2774,2775,2783],{},[376,2776,2777],{},[379,2778,2779,2781],{},[382,2780,384],{},[382,2782,387],{},[392,2784,2785,2794,2803,2812,2824],{},[379,2786,2787,2789],{},[397,2788,401],{},[397,2790,2791],{},[136,2792,2793],{},"name: DailyUtil",[379,2795,2796,2798],{},[397,2797,416],{},[397,2799,2800],{},[136,2801,2802],{},"port: 5432",[379,2804,2805,2807],{},[397,2806,437],{},[397,2808,2809],{},[136,2810,2811],{},"enabled: true",[379,2813,2814,2816],{},[397,2815,454],{},[397,2817,2818,2197,2821],{},[136,2819,2820],{},"value: null",[136,2822,2823],{},"value: ~",[379,2825,2826,2829],{},[397,2827,2828],{},"Date",[397,2830,2831],{},[136,2832,2833],{},"created: 2026-05-14",[180,2835,2837],{"id":2836},"multiline-strings","Multiline Strings",[108,2839,2840,2843,2844,2847],{},[111,2841,2842],{},"Literal block"," (",[136,2845,2846],{},"|",") - preserves newlines:",[185,2849,2851],{"className":2576,"code":2850,"language":2578,"meta":190,"style":190},"description: |\n  This is line one.\n  This is line two.\n",[136,2852,2853,2863,2868],{"__ignoreMap":190},[194,2854,2855,2857,2859],{"class":196,"line":197},[194,2856,2605],{"class":962},[194,2858,211],{"class":200},[194,2860,2862],{"class":2861},"scLti","|\n",[194,2864,2865],{"class":196,"line":204},[194,2866,2867],{"class":214},"  This is line one.\n",[194,2869,2870],{"class":196,"line":221},[194,2871,2872],{"class":214},"  This is line two.\n",[108,2874,2875,2843,2878,2881],{},[111,2876,2877],{},"Folded block",[136,2879,2880],{},">",") - joins lines with spaces:",[185,2883,2885],{"className":2576,"code":2884,"language":2578,"meta":190,"style":190},"description: >\n  This is a very long\n  description that wraps\n  across multiple lines.\n",[136,2886,2887,2896,2901,2906],{"__ignoreMap":190},[194,2888,2889,2891,2893],{"class":196,"line":197},[194,2890,2605],{"class":962},[194,2892,211],{"class":200},[194,2894,2895],{"class":2861},">\n",[194,2897,2898],{"class":196,"line":204},[194,2899,2900],{"class":214},"  This is a very long\n",[194,2902,2903],{"class":196,"line":221},[194,2904,2905],{"class":214},"  description that wraps\n",[194,2907,2908],{"class":196,"line":234},[194,2909,2910],{"class":214},"  across multiple lines.\n",[103,2912,2914],{"id":2913},"yaml-vs-json","YAML vs JSON",[373,2916,2917,2927],{},[376,2918,2919],{},[379,2920,2921,2923,2925],{},[382,2922,564],{},[382,2924,2561],{},[382,2926,113],{},[392,2928,2929,2939,2952,2962,2973],{},[379,2930,2931,2933,2936],{},[397,2932,576],{},[397,2934,2935],{},"✅ Very human-friendly",[397,2937,2938],{},"⚠️ More verbose",[379,2940,2941,2943,2949],{},[397,2942,609],{},[397,2944,2945,2946],{},"✅ ",[136,2947,2948],{},"# comment",[397,2950,2951],{},"❌ Not supported",[379,2953,2954,2956,2959],{},[397,2955,598],{},[397,2957,2958],{},"✅ Dates, multiline strings",[397,2960,2961],{},"❌ Strings, numbers only",[379,2963,2964,2967,2970],{},[397,2965,2966],{},"Complexity",[397,2968,2969],{},"⚠️ Anchors, aliases",[397,2971,2972],{},"✅ Simple",[379,2974,2975,2978,2981],{},[397,2976,2977],{},"Use case",[397,2979,2980],{},"Config files",[397,2982,2983],{},"APIs, data exchange",[103,2985,2987],{"id":2986},"common-yaml-mistakes","Common YAML Mistakes",[126,2989,2990,2996,3017,3023,3034],{},[129,2991,2992,2995],{},[111,2993,2994],{},"Using tabs"," - YAML only allows spaces for indentation",[129,2997,2998,134,3001,270,3004,270,3007,270,3010,3013,3014],{},[111,2999,3000],{},"Unquoted special strings",[136,3002,3003],{},"yes",[136,3005,3006],{},"no",[136,3008,3009],{},"on",[136,3011,3012],{},"off"," are parsed as booleans. Use quotes: ",[136,3015,3016],{},"\"yes\"",[129,3018,3019,3022],{},[111,3020,3021],{},"Inconsistent indentation"," - mixing 2-space and 4-space indentation causes parse errors",[129,3024,3025,134,3028,2468,3031],{},[111,3026,3027],{},"Forgetting colons in nested keys",[136,3029,3030],{},"key value",[136,3032,3033],{},"key: value",[129,3035,3036,3039,3040,3043,3044,3046,3047],{},[111,3037,3038],{},"Norway problem"," - the country code ",[136,3041,3042],{},"NO"," is parsed as boolean ",[136,3045,345],{},". Always quote: ",[136,3048,3049],{},"\"NO\"",[103,3051,3053],{"id":3052},"where-is-yaml-used","Where Is YAML Used?",[1053,3055,3056,3064,3070,3078,3084],{},[129,3057,3058,134,3061],{},[111,3059,3060],{},"Docker Compose",[136,3062,3063],{},"docker-compose.yml",[129,3065,3066,3069],{},[111,3067,3068],{},"Kubernetes"," - pod, deployment, service manifests",[129,3071,3072,134,3075],{},[111,3073,3074],{},"GitHub Actions",[136,3076,3077],{},".github\u002Fworkflows\u002F*.yml",[129,3079,3080,3083],{},[111,3081,3082],{},"Ansible"," - playbooks and inventory",[129,3085,3086,3089],{},[111,3087,3088],{},"CI\u002FCD"," - GitLab CI, CircleCI, Travis CI",[103,3091,3093],{"id":3092},"view-and-validate-yaml","View and Validate YAML",[108,3095,1084,3096,3102],{},[111,3097,3098],{},[691,3099,3101],{"href":3100},"\u002Ftools\u002Fyaml-viewer","YAML Viewer & Formatter"," to parse, format, and explore YAML documents with tree navigation - all in your browser.",[704,3104,3105],{},"html pre.shiki code .smnu3, html code.shiki .smnu3{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sWKip, html code.shiki .sWKip{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sHTXl, html code.shiki .sHTXl{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .swLay, html code.shiki .swLay{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .scLti, html code.shiki .scLti{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":190,"searchDepth":204,"depth":204,"links":3107},[3108,3109,3115,3118,3119,3120,3121],{"id":2555,"depth":204,"text":2556},{"id":2568,"depth":204,"text":2569,"children":3110},[3111,3112,3113,3114],{"id":2572,"depth":221,"text":2573},{"id":2613,"depth":221,"text":2614},{"id":2667,"depth":221,"text":2668},{"id":2712,"depth":221,"text":2713},{"id":2771,"depth":204,"text":2772,"children":3116},[3117],{"id":2836,"depth":221,"text":2837},{"id":2913,"depth":204,"text":2914},{"id":2986,"depth":204,"text":2987},{"id":3052,"depth":204,"text":3053},{"id":3092,"depth":204,"text":3093},"2026-05-14","Learn YAML syntax, data types, and best practices. Understand how YAML compares to JSON and where it's used in DevOps, Kubernetes, and configuration management.","\u002Fimages\u002Fblog\u002Fwhat-is-yaml.webp",{},"\u002Fblog\u002Fwhat-is-yaml",{"title":2550,"description":3123},"blog\u002Fwhat-is-yaml",[2561,3130,1880,3068,3131],"Configuration","Docker","wTutTPZCRT",{"id":3134,"title":3135,"body":3136,"category":1527,"date":3386,"description":3387,"draft":6,"extension":727,"image":3388,"meta":3389,"navigation":730,"path":3390,"seo":3391,"stem":3392,"tags":3393,"writer":738,"writerAvatar":739,"__hash__":3396},"blog\u002Fblog\u002Fhow-to-create-strong-passwords.md","How to Create Strong Passwords in 2026",{"type":100,"value":3137,"toc":3370},[3138,3142,3145,3149,3156,3160,3163,3215,3222,3226,3229,3261,3265,3300,3304,3308,3315,3319,3322,3326,3329,3333,3336,3340,3343,3357,3361],[103,3139,3141],{"id":3140},"why-passwords-still-matter","Why Passwords Still Matter",[108,3143,3144],{},"Despite advances in biometrics and passkeys, passwords remain the primary authentication method for most websites and services. In 2026, over 80% of data breaches still involve compromised credentials.",[103,3146,3148],{"id":3147},"what-makes-a-password-strong","What Makes a Password Strong?",[108,3150,3151,3152,3155],{},"Password strength is determined by ",[111,3153,3154],{},"entropy"," - the number of possible combinations an attacker must try.",[180,3157,3159],{"id":3158},"length-beats-complexity","Length Beats Complexity",[108,3161,3162],{},"A 16-character lowercase password has more entropy than an 8-character password with uppercase, lowercase, numbers, and symbols:",[373,3164,3165,3181],{},[376,3166,3167],{},[379,3168,3169,3172,3175,3178],{},[382,3170,3171],{},"Password",[382,3173,3174],{},"Length",[382,3176,3177],{},"Character Set",[382,3179,3180],{},"Combinations",[392,3182,3183,3199],{},[379,3184,3185,3190,3193,3196],{},[397,3186,3187],{},[136,3188,3189],{},"a8#Kp!2q",[397,3191,3192],{},"8",[397,3194,3195],{},"95 chars",[397,3197,3198],{},"6.6 × 10¹⁵",[379,3200,3201,3206,3209,3212],{},[397,3202,3203],{},[136,3204,3205],{},"correcthorsebattery",[397,3207,3208],{},"20",[397,3210,3211],{},"26 chars",[397,3213,3214],{},"1.9 × 10²⁸",[108,3216,3217,3218,3221],{},"The longer password has ",[111,3219,3220],{},"trillions of times"," more combinations, even with a simpler character set.",[180,3223,3225],{"id":3224},"the-nist-guidelines-2024-update","The NIST Guidelines (2024 Update)",[108,3227,3228],{},"The US National Institute of Standards and Technology recommends:",[126,3230,3231,3237,3243,3249,3255],{},[129,3232,3233,3236],{},[111,3234,3235],{},"Minimum 15 characters"," for user-chosen passwords",[129,3238,3239,3242],{},[111,3240,3241],{},"No mandatory complexity rules"," (uppercase, symbols) - they don't help",[129,3244,3245,3248],{},[111,3246,3247],{},"No periodic password changes"," - forced rotation leads to weaker passwords",[129,3250,3251,3254],{},[111,3252,3253],{},"Screen against known breached passwords"," - block passwords found in data breaches",[129,3256,3257,3260],{},[111,3258,3259],{},"Allow paste"," - so password managers can fill credentials",[103,3262,3264],{"id":3263},"common-password-mistakes","Common Password Mistakes",[1053,3266,3267,3273,3279,3288,3294],{},[129,3268,3269,3272],{},[111,3270,3271],{},"Reusing passwords"," across multiple sites (one breach compromises everything)",[129,3274,3275,3278],{},[111,3276,3277],{},"Using personal information"," - names, birthdays, pet names are easily guessable",[129,3280,3281,134,3284,3287],{},[111,3282,3283],{},"Simple substitutions",[136,3285,3286],{},"P@ssw0rd"," is in every attacker's dictionary",[129,3289,3290,3293],{},[111,3291,3292],{},"Short passwords"," - anything under 12 characters can be brute-forced in hours",[129,3295,3296,3299],{},[111,3297,3298],{},"Sharing passwords"," - via text, email, or sticky notes",[103,3301,3303],{"id":3302},"how-attackers-crack-passwords","How Attackers Crack Passwords",[180,3305,3307],{"id":3306},"brute-force","Brute Force",[108,3309,3310,3311,3314],{},"Try every possible combination. Modern GPUs can attempt ",[111,3312,3313],{},"100 billion hashes per second"," for MD5.",[180,3316,3318],{"id":3317},"dictionary-attack","Dictionary Attack",[108,3320,3321],{},"Try common words, phrases, and known passwords from previous breaches.",[180,3323,3325],{"id":3324},"credential-stuffing","Credential Stuffing",[108,3327,3328],{},"Take email\u002Fpassword pairs from one breach and try them on other services.",[180,3330,3332],{"id":3331},"rainbow-tables","Rainbow Tables",[108,3334,3335],{},"Pre-computed hash tables that map common passwords to their hashes. Defeated by salting.",[103,3337,3339],{"id":3338},"password-manager-benefits","Password Manager Benefits",[108,3341,3342],{},"A password manager lets you:",[1053,3344,3345,3348,3351,3354],{},[129,3346,3347],{},"Generate unique, random passwords for every site",[129,3349,3350],{},"Store them securely with one master password",[129,3352,3353],{},"Auto-fill credentials without typing",[129,3355,3356],{},"Detect when a password has been compromised in a breach",[103,3358,3360],{"id":3359},"generate-strong-passwords","Generate Strong Passwords",[108,3362,1084,3363,3369],{},[111,3364,3365],{},[691,3366,3368],{"href":3367},"\u002Ftools\u002Fpassword-generator","Secure Password Generator"," to create cryptographically strong passwords in-browser. Customise length, character sets, and generate in bulk.",{"title":190,"searchDepth":204,"depth":204,"links":3371},[3372,3373,3377,3378,3384,3385],{"id":3140,"depth":204,"text":3141},{"id":3147,"depth":204,"text":3148,"children":3374},[3375,3376],{"id":3158,"depth":221,"text":3159},{"id":3224,"depth":221,"text":3225},{"id":3263,"depth":204,"text":3264},{"id":3302,"depth":204,"text":3303,"children":3379},[3380,3381,3382,3383],{"id":3306,"depth":221,"text":3307},{"id":3317,"depth":221,"text":3318},{"id":3324,"depth":221,"text":3325},{"id":3331,"depth":221,"text":3332},{"id":3338,"depth":204,"text":3339},{"id":3359,"depth":204,"text":3360},"2026-05-13","Learn the science behind strong passwords, why length beats complexity, how password managers work, and practical tips to secure your accounts in 2026.","\u002Fimages\u002Fblog\u002Fhow-to-create-strong-passwords.webp",{},"\u002Fblog\u002Fhow-to-create-strong-passwords",{"title":3135,"description":3387},"blog\u002Fhow-to-create-strong-passwords",[3394,1527,3395,1536],"Passwords","Cybersecurity","zXtn5y00bL",{"id":3398,"title":3399,"body":3400,"category":724,"date":3811,"description":3812,"draft":6,"extension":727,"image":3813,"meta":3814,"navigation":730,"path":3815,"seo":3816,"stem":3817,"tags":3818,"writer":738,"writerAvatar":739,"__hash__":3822},"blog\u002Fblog\u002Fmarkdown-cheat-sheet.md","Markdown Cheat Sheet: The Complete Reference",{"type":100,"value":3401,"toc":3791},[3402,3406,3412,3416,3420,3447,3451,3476,3480,3500,3504,3509,3529,3534,3554,3558,3573,3576,3585,3591,3620,3624,3633,3637,3640,3644,3669,3673,3693,3697,3703,3707,3727,3731,3765,3769,3778,3788],[103,3403,3405],{"id":3404},"what-is-markdown","What Is Markdown?",[108,3407,3408,3411],{},[111,3409,3410],{},"Markdown"," is a lightweight markup language created by John Gruber in 2004. It lets you write formatted content using plain text syntax that's easy to read even before rendering. Markdown is used everywhere - GitHub READMEs, documentation sites, blogs, note-taking apps, and even chat platforms like Slack and Discord.",[103,3413,3415],{"id":3414},"basic-syntax","Basic Syntax",[180,3417,3419],{"id":3418},"headings","Headings",[185,3421,3425],{"className":3422,"code":3423,"language":3424,"meta":190,"style":190},"language-markdown shiki shiki-themes github-light github-dark","# Heading 1\n## Heading 2\n### Heading 3\n#### Heading 4\n","markdown",[136,3426,3427,3432,3437,3442],{"__ignoreMap":190},[194,3428,3429],{"class":196,"line":197},[194,3430,3431],{},"# Heading 1\n",[194,3433,3434],{"class":196,"line":204},[194,3435,3436],{},"## Heading 2\n",[194,3438,3439],{"class":196,"line":221},[194,3440,3441],{},"### Heading 3\n",[194,3443,3444],{"class":196,"line":234},[194,3445,3446],{},"#### Heading 4\n",[180,3448,3450],{"id":3449},"emphasis","Emphasis",[185,3452,3454],{"className":3422,"code":3453,"language":3424,"meta":190,"style":190},"*italic* or _italic_\n**bold** or __bold__\n***bold italic*** or ___bold italic___\n~~strikethrough~~\n",[136,3455,3456,3461,3466,3471],{"__ignoreMap":190},[194,3457,3458],{"class":196,"line":197},[194,3459,3460],{},"*italic* or _italic_\n",[194,3462,3463],{"class":196,"line":204},[194,3464,3465],{},"**bold** or __bold__\n",[194,3467,3468],{"class":196,"line":221},[194,3469,3470],{},"***bold italic*** or ___bold italic___\n",[194,3472,3473],{"class":196,"line":234},[194,3474,3475],{},"~~strikethrough~~\n",[180,3477,3479],{"id":3478},"links-and-images","Links and Images",[185,3481,3483],{"className":3422,"code":3482,"language":3424,"meta":190,"style":190},"[Link Text](https:\u002F\u002Fexample.com)\n[Link with Title](https:\u002F\u002Fexample.com \"Hover text\")\n![Alt Text](image-url.png)\n",[136,3484,3485,3490,3495],{"__ignoreMap":190},[194,3486,3487],{"class":196,"line":197},[194,3488,3489],{},"[Link Text](https:\u002F\u002Fexample.com)\n",[194,3491,3492],{"class":196,"line":204},[194,3493,3494],{},"[Link with Title](https:\u002F\u002Fexample.com \"Hover text\")\n",[194,3496,3497],{"class":196,"line":221},[194,3498,3499],{},"![Alt Text](image-url.png)\n",[180,3501,3503],{"id":3502},"lists","Lists",[108,3505,3506],{},[111,3507,3508],{},"Unordered:",[185,3510,3512],{"className":3422,"code":3511,"language":3424,"meta":190,"style":190},"- Item one\n- Item two\n  - Nested item\n",[136,3513,3514,3519,3524],{"__ignoreMap":190},[194,3515,3516],{"class":196,"line":197},[194,3517,3518],{},"- Item one\n",[194,3520,3521],{"class":196,"line":204},[194,3522,3523],{},"- Item two\n",[194,3525,3526],{"class":196,"line":221},[194,3527,3528],{},"  - Nested item\n",[108,3530,3531],{},[111,3532,3533],{},"Ordered:",[185,3535,3537],{"className":3422,"code":3536,"language":3424,"meta":190,"style":190},"1. First\n2. Second\n3. Third\n",[136,3538,3539,3544,3549],{"__ignoreMap":190},[194,3540,3541],{"class":196,"line":197},[194,3542,3543],{},"1. First\n",[194,3545,3546],{"class":196,"line":204},[194,3547,3548],{},"2. Second\n",[194,3550,3551],{"class":196,"line":221},[194,3552,3553],{},"3. Third\n",[180,3555,3557],{"id":3556},"blockquotes","Blockquotes",[185,3559,3561],{"className":3422,"code":3560,"language":3424,"meta":190,"style":190},"> This is a blockquote.\n> It can span multiple lines.\n",[136,3562,3563,3568],{"__ignoreMap":190},[194,3564,3565],{"class":196,"line":197},[194,3566,3567],{},"> This is a blockquote.\n",[194,3569,3570],{"class":196,"line":204},[194,3571,3572],{},"> It can span multiple lines.\n",[180,3574,3575],{"id":136},"Code",[108,3577,3578,3581,3582],{},[111,3579,3580],{},"Inline:"," Use backticks: ",[136,3583,3584],{},"`const x = 42`",[108,3586,3587,3590],{},[111,3588,3589],{},"Block:"," Use triple backticks with a language identifier:",[185,3592,3594],{"className":3422,"code":3593,"language":3424,"meta":190,"style":190},"```javascript\nfunction greet(name) {\n  return `Hello, ${name}!`\n}\n```\n",[136,3595,3596,3601,3606,3611,3615],{"__ignoreMap":190},[194,3597,3598],{"class":196,"line":197},[194,3599,3600],{},"```javascript\n",[194,3602,3603],{"class":196,"line":204},[194,3604,3605],{},"function greet(name) {\n",[194,3607,3608],{"class":196,"line":221},[194,3609,3610],{},"  return `Hello, ${name}!`\n",[194,3612,3613],{"class":196,"line":234},[194,3614,364],{},[194,3616,3617],{"class":196,"line":247},[194,3618,3619],{},"```\n",[180,3621,3623],{"id":3622},"horizontal-rules","Horizontal Rules",[185,3625,3627],{"className":3422,"code":3626,"language":3424,"meta":190,"style":190},"---\n",[136,3628,3629],{"__ignoreMap":190},[194,3630,3631],{"class":196,"line":197},[194,3632,3626],{},[103,3634,3636],{"id":3635},"github-flavored-markdown-gfm","GitHub Flavored Markdown (GFM)",[108,3638,3639],{},"GitHub extends standard Markdown with several useful features:",[180,3641,3643],{"id":3642},"tables","Tables",[185,3645,3647],{"className":3422,"code":3646,"language":3424,"meta":190,"style":190},"| Feature | Supported |\n|---------|-----------|\n| Tables  | ✅ Yes     |\n| Emoji   | ✅ Yes     |\n",[136,3648,3649,3654,3659,3664],{"__ignoreMap":190},[194,3650,3651],{"class":196,"line":197},[194,3652,3653],{},"| Feature | Supported |\n",[194,3655,3656],{"class":196,"line":204},[194,3657,3658],{},"|---------|-----------|\n",[194,3660,3661],{"class":196,"line":221},[194,3662,3663],{},"| Tables  | ✅ Yes     |\n",[194,3665,3666],{"class":196,"line":234},[194,3667,3668],{},"| Emoji   | ✅ Yes     |\n",[180,3670,3672],{"id":3671},"task-lists","Task Lists",[185,3674,3676],{"className":3422,"code":3675,"language":3424,"meta":190,"style":190},"- [x] Completed task\n- [ ] Pending task\n- [ ] Another pending task\n",[136,3677,3678,3683,3688],{"__ignoreMap":190},[194,3679,3680],{"class":196,"line":197},[194,3681,3682],{},"- [x] Completed task\n",[194,3684,3685],{"class":196,"line":204},[194,3686,3687],{},"- [ ] Pending task\n",[194,3689,3690],{"class":196,"line":221},[194,3691,3692],{},"- [ ] Another pending task\n",[180,3694,3696],{"id":3695},"autolinks","Autolinks",[108,3698,3699,3700],{},"URLs are automatically converted to clickable links: ",[136,3701,3702],{},"https:\u002F\u002Fdailyutil.com",[180,3704,3706],{"id":3705},"footnotes","Footnotes",[185,3708,3710],{"className":3422,"code":3709,"language":3424,"meta":190,"style":190},"Here is a statement[^1].\n\n[^1]: This is the footnote content.\n",[136,3711,3712,3717,3722],{"__ignoreMap":190},[194,3713,3714],{"class":196,"line":197},[194,3715,3716],{},"Here is a statement[^1].\n",[194,3718,3719],{"class":196,"line":204},[194,3720,3721],{"emptyLinePlaceholder":730},"\n",[194,3723,3724],{"class":196,"line":221},[194,3725,3726],{},"[^1]: This is the footnote content.\n",[103,3728,3730],{"id":3729},"tips-for-better-markdown","Tips for Better Markdown",[126,3732,3733,3741,3747,3753,3759],{},[129,3734,3735,2843,3738,3740],{},[111,3736,3737],{},"Use ATX-style headings",[136,3739,2184],{},") - not underline-style",[129,3742,3743,3746],{},[111,3744,3745],{},"Always add alt text to images"," - for accessibility",[129,3748,3749,3752],{},[111,3750,3751],{},"Use reference links"," for repeated URLs",[129,3754,3755,3758],{},[111,3756,3757],{},"Use fenced code blocks"," with language identifiers for syntax highlighting",[129,3760,3761,3764],{},[111,3762,3763],{},"Keep lines under 80 characters"," for readability in plain text",[103,3766,3768],{"id":3767},"preview-your-markdown","Preview Your Markdown",[108,3770,1084,3771,3777],{},[111,3772,3773],{},[691,3774,3776],{"href":3775},"\u002Ftools\u002Fmarkdown-viewer","Markdown Viewer"," to render Markdown with full GFM support - tables, task lists, syntax highlighting, and live preview as you type.",[108,3779,3780,3781,3787],{},"Need to export? Try our ",[111,3782,3783],{},[691,3784,3786],{"href":3785},"\u002Ftools\u002Fmarkdown-to-pdf","Markdown to PDF"," converter for professional, printable documents.",[704,3789,3790],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":190,"searchDepth":204,"depth":204,"links":3792},[3793,3794,3803,3809,3810],{"id":3404,"depth":204,"text":3405},{"id":3414,"depth":204,"text":3415,"children":3795},[3796,3797,3798,3799,3800,3801,3802],{"id":3418,"depth":221,"text":3419},{"id":3449,"depth":221,"text":3450},{"id":3478,"depth":221,"text":3479},{"id":3502,"depth":221,"text":3503},{"id":3556,"depth":221,"text":3557},{"id":136,"depth":221,"text":3575},{"id":3622,"depth":221,"text":3623},{"id":3635,"depth":204,"text":3636,"children":3804},[3805,3806,3807,3808],{"id":3642,"depth":221,"text":3643},{"id":3671,"depth":221,"text":3672},{"id":3695,"depth":221,"text":3696},{"id":3705,"depth":221,"text":3706},{"id":3729,"depth":204,"text":3730},{"id":3767,"depth":204,"text":3768},"2026-05-12","The definitive Markdown reference. Covers headings, lists, links, images, code blocks, tables, task lists, and extended GitHub Flavored Markdown syntax.","\u002Fimages\u002Fblog\u002Fmarkdown-cheat-sheet.webp",{},"\u002Fblog\u002Fmarkdown-cheat-sheet",{"title":3399,"description":3812},"blog\u002Fmarkdown-cheat-sheet",[3410,3819,3820,3821],"Documentation","GitHub","Writing","PcvKZiHMSX",{"id":3824,"title":3825,"body":3826,"category":4170,"date":4171,"description":4172,"draft":6,"extension":727,"image":4173,"meta":4174,"navigation":730,"path":4175,"seo":4176,"stem":4177,"tags":4178,"writer":738,"writerAvatar":739,"__hash__":4181},"blog\u002Fblog\u002Fdns-explained.md","DNS Explained: How Domain Names Actually Work",{"type":100,"value":3827,"toc":4153},[3828,3832,3846,3849,3853,3859,3909,3916,3920,3924,3930,3936,3940,3945,3951,3955,3962,3968,3972,3979,3985,3989,3996,4002,4006,4012,4018,4022,4028,4032,4038,4042,4049,4086,4096,4100,4140,4144],[103,3829,3831],{"id":3830},"what-is-dns","What Is DNS?",[108,3833,3834,3835,3838,3839,3842,3843,936],{},"The ",[111,3836,3837],{},"Domain Name System"," (DNS) is the internet's phone book. It translates human-readable domain names like ",[136,3840,3841],{},"dailyutil.com"," into machine-readable IP addresses like ",[136,3844,3845],{},"104.21.15.72",[108,3847,3848],{},"Without DNS, you'd need to memorise IP addresses for every website you visit.",[103,3850,3852],{"id":3851},"how-dns-resolution-works","How DNS Resolution Works",[108,3854,3855,3856,3858],{},"When you type ",[136,3857,3841],{}," in your browser, here's what happens:",[126,3860,3861,3867,3873,3879,3889,3897,3903],{},[129,3862,3863,3866],{},[111,3864,3865],{},"Browser cache"," - checks if it already knows the IP",[129,3868,3869,3872],{},[111,3870,3871],{},"OS cache"," - checks the operating system's DNS cache",[129,3874,3875,3878],{},[111,3876,3877],{},"Recursive resolver"," - your ISP's DNS server (or 8.8.8.8 \u002F 1.1.1.1)",[129,3880,3881,3884,3885,3888],{},[111,3882,3883],{},"Root nameserver"," - knows where to find ",[136,3886,3887],{},".com"," servers",[129,3890,3891,3884,3894,3896],{},[111,3892,3893],{},"TLD nameserver",[136,3895,3841],{},"'s authoritative server",[129,3898,3899,3902],{},[111,3900,3901],{},"Authoritative nameserver"," - has the actual DNS records",[129,3904,3905,3908],{},[111,3906,3907],{},"Response"," - IP address flows back through the chain",[108,3910,3911,3912,3915],{},"This entire process typically takes ",[111,3913,3914],{},"20-120ms"," and the result is cached at each level.",[103,3917,3919],{"id":3918},"dns-record-types","DNS Record Types",[180,3921,3923],{"id":3922},"a-record","A Record",[108,3925,3926,3927,936],{},"Maps a domain to an ",[111,3928,3929],{},"IPv4 address",[185,3931,3934],{"className":3932,"code":3933,"language":996},[994],"dailyutil.com → 104.21.15.72\n",[136,3935,3933],{"__ignoreMap":190},[180,3937,3939],{"id":3938},"aaaa-record","AAAA Record",[108,3941,3926,3942,936],{},[111,3943,3944],{},"IPv6 address",[185,3946,3949],{"className":3947,"code":3948,"language":996},[994],"dailyutil.com → 2606:4700:3030::6815:f48\n",[136,3950,3948],{"__ignoreMap":190},[180,3952,3954],{"id":3953},"cname-record","CNAME Record",[108,3956,3957,3958,3961],{},"Creates an ",[111,3959,3960],{},"alias"," - points one domain to another.",[185,3963,3966],{"className":3964,"code":3965,"language":996},[994],"www.dailyutil.com → dailyutil.com\n",[136,3967,3965],{"__ignoreMap":190},[180,3969,3971],{"id":3970},"mx-record","MX Record",[108,3973,3974,3975,3978],{},"Specifies the ",[111,3976,3977],{},"mail server"," for a domain, with priority.",[185,3980,3983],{"className":3981,"code":3982,"language":996},[994],"dailyutil.com → 10 mail.google.com\n",[136,3984,3982],{"__ignoreMap":190},[180,3986,3988],{"id":3987},"txt-record","TXT Record",[108,3990,3991,3992,3995],{},"Stores ",[111,3993,3994],{},"text data"," - used for SPF, DKIM, domain verification.",[185,3997,4000],{"className":3998,"code":3999,"language":996},[994],"dailyutil.com → \"v=spf1 include:_spf.google.com ~all\"\n",[136,4001,3999],{"__ignoreMap":190},[180,4003,4005],{"id":4004},"ns-record","NS Record",[108,4007,3974,4008,4011],{},[111,4009,4010],{},"authoritative nameservers"," for a domain.",[185,4013,4016],{"className":4014,"code":4015,"language":996},[994],"dailyutil.com → ns1.cloudflare.com\n",[136,4017,4015],{"__ignoreMap":190},[180,4019,4021],{"id":4020},"soa-record","SOA Record",[108,4023,4024,4027],{},[111,4025,4026],{},"Start of Authority"," - contains zone metadata (primary NS, admin email, serial number, TTL values).",[180,4029,4031],{"id":4030},"ptr-record","PTR Record",[108,4033,4034,4037],{},[111,4035,4036],{},"Reverse DNS"," - maps an IP address back to a hostname.",[103,4039,4041],{"id":4040},"dns-caching-and-ttl","DNS Caching and TTL",[108,4043,4044,4045,4048],{},"Each DNS record has a ",[111,4046,4047],{},"TTL"," (Time to Live) - the number of seconds the record can be cached before it must be refreshed.",[373,4050,4051,4060],{},[376,4052,4053],{},[379,4054,4055,4057],{},[382,4056,4047],{},[382,4058,4059],{},"Use Case",[392,4061,4062,4070,4078],{},[379,4063,4064,4067],{},[397,4065,4066],{},"300 (5 min)",[397,4068,4069],{},"Dynamic IPs, during migrations",[379,4071,4072,4075],{},[397,4073,4074],{},"3600 (1 hr)",[397,4076,4077],{},"Standard websites",[379,4079,4080,4083],{},[397,4081,4082],{},"86400 (24 hr)",[397,4084,4085],{},"Stable, rarely-changed records",[108,4087,4088,4091,4092,4095],{},[111,4089,4090],{},"Pro tip:"," Lower your TTL to 300 seconds ",[111,4093,4094],{},"before"," a DNS migration, then raise it back after the change propagates.",[103,4097,4099],{"id":4098},"common-dns-issues","Common DNS Issues",[126,4101,4102,4108,4122,4128,4134],{},[129,4103,4104,4107],{},[111,4105,4106],{},"Propagation delays"," - DNS changes can take up to 48 hours to propagate globally (though usually 1-2 hours)",[129,4109,4110,4113,4114,4117,4118,4121],{},[111,4111,4112],{},"Stale cache"," - flush with ",[136,4115,4116],{},"ipconfig \u002Fflushdns"," (Windows) or ",[136,4119,4120],{},"sudo dscacheutil -flushcache"," (macOS)",[129,4123,4124,4127],{},[111,4125,4126],{},"Wrong nameservers"," - ensure your registrar points to the correct NS records",[129,4129,4130,4133],{},[111,4131,4132],{},"Missing SPF\u002FDKIM"," - emails go to spam without proper TXT records",[129,4135,4136,4139],{},[111,4137,4138],{},"CNAME at root"," - standard DNS doesn't allow CNAME at the zone apex; use ALIAS or ANAME records",[103,4141,4143],{"id":4142},"look-up-dns-records","Look Up DNS Records",[108,4145,1084,4146,4152],{},[111,4147,4148],{},[691,4149,4151],{"href":4150},"\u002Ftools\u002Fdns-look-up","DNS Lookup Tool"," to query A, AAAA, MX, TXT, NS, CNAME, SOA, and PTR records for any domain - instantly in your browser.",{"title":190,"searchDepth":204,"depth":204,"links":4154},[4155,4156,4157,4167,4168,4169],{"id":3830,"depth":204,"text":3831},{"id":3851,"depth":204,"text":3852},{"id":3918,"depth":204,"text":3919,"children":4158},[4159,4160,4161,4162,4163,4164,4165,4166],{"id":3922,"depth":221,"text":3923},{"id":3938,"depth":221,"text":3939},{"id":3953,"depth":221,"text":3954},{"id":3970,"depth":221,"text":3971},{"id":3987,"depth":221,"text":3988},{"id":4004,"depth":221,"text":4005},{"id":4020,"depth":221,"text":4021},{"id":4030,"depth":221,"text":4031},{"id":4040,"depth":204,"text":4041},{"id":4098,"depth":204,"text":4099},{"id":4142,"depth":204,"text":4143},"Networking","2026-05-11","A developer-friendly guide to the Domain Name System. Learn how DNS resolution works, record types (A, AAAA, CNAME, MX, TXT), caching, and troubleshooting tips.","\u002Fimages\u002Fblog\u002Fdns-explained.webp",{},"\u002Fblog\u002Fdns-explained",{"title":3825,"description":4172},"blog\u002Fdns-explained",[4179,4170,735,4180],"DNS","Infrastructure","J2WJkEnY2C",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4183},"\u003Cpath fill=\"currentColor\" d=\"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5l-1.5 1.5l-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16A6.5 6.5 0 0 1 3 9.5A6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14S14 12 14 9.5S12 5 9.5 5\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4185},"\u003Cpath fill=\"currentColor\" d=\"M19 19H5V8h14m-3-7v2H8V1H6v2H5c-1.11 0-2 .89-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2h-1V1m-1 11h-5v5h5z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4187},"\u003Cpath fill=\"currentColor\" d=\"M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2h7v5h5v11H6zm2 8v2h8v-2zm0 4v2h5v-2z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4189},"\u003Cpath fill=\"currentColor\" d=\"M4 11v2h12l-5.5 5.5l1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5L16 11z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4191},"\u003Cpath fill=\"currentColor\" d=\"M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4193},"\u003Cpath fill=\"currentColor\" d=\"M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4195},"\u003Cpath fill=\"currentColor\" d=\"M11 13.5v8H3v-8zm-2 2H5v4h4zM12 2l5.5 9h-11zm0 3.86L10.08 9h3.84zM17.5 13c2.5 0 4.5 2 4.5 4.5S20 22 17.5 22S13 20 13 17.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 0 0-2.5 2.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5a2.5 2.5 0 0 0-2.5-2.5\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4197},"\u003Cpath fill=\"currentColor\" d=\"m21.41 11.58l-9-9A2 2 0 0 0 11 2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 .59 1.42l9 9A2 2 0 0 0 13 22a2 2 0 0 0 1.41-.59l7-7A2 2 0 0 0 22 13a2 2 0 0 0-.59-1.42M13 20l-9-9V4h7l9 9M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4199},"\u003Cpath fill=\"currentColor\" d=\"M20 21H4V10h2v9h12v-9h2zM3 3h18v6H3zm6.5 8h5c.28 0 .5.22.5.5V13H9v-1.5c0-.28.22-.5.5-.5M5 5v2h14V5z\"\u002F>",{"left":4,"top":4,"width":13,"height":13,"rotate":4,"vFlip":6,"hFlip":6,"body":4201},"\u003Cpath fill=\"currentColor\" d=\"M7 11h2v2H7zm14-6v14c0 1.11-.89 2-2 2H5a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h1V1h2v2h8V1h2v2h1a2 2 0 0 1 2 2M5 7h14V5H5zm14 12V9H5v10zm-4-6v-2h2v2zm-4 0v-2h2v2zm-4 2h2v2H7zm8 2v-2h2v2zm-4 0v-2h2v2z\"\u002F>"]