Help
RSS
API
Feed
Maltego
Contact
Domain > blog.ponyobot.kr
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-08-17
104.21.57.169
(
ClassC
)
2025-11-16
172.66.44.141
(
ClassC
)
Port 443
HTTP/1.1 200 OKDate: Sun, 16 Nov 2025 10:58:44 GMTContent-Type: text/html; charsetutf-8Content-Length: 76617Connection: keep-aliveAccess-Control-Allow-Origin: *Cache-Control: public, max-age0, must-revalidateETag: ef27048e31532e109d531afdbd330728referrer-policy: strict-origin-when-cross-originx-content-type-options: nosniffVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?snYrXSwWJyKUarJ4pM%2FB%2F3GZ1J%2BtlHftBn3efZZTqrvPxzWKl7lWOg2iNkLwg1M%2BEVH3FmMVDnV741zlz0pWklrHEOGAPdcQCR%2BUzUdhq}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 99f67994eefd6289-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langko classbg-var(--page-bg) transition text-14px md:text-16px data-overlayscrollbars-initialize data-astro-cid-sckkx6r4 style--bannerOffset: 15vh;--banner-height-home: 65vh;--banner-height: 35vh;--configHue: 175;--page-width: 75rem;> head>title>포뇨의 블로그 - 포뇨봇/title>meta charsetUTF-8>meta namedescription content포뇨의 블로그 - 포뇨봇>meta nameauthor contentPonyoBot>meta propertyog:site_name content포뇨의 블로그>meta propertyog:url contenthttps://blog.ponyobot.kr/>meta propertyog:title content포뇨의 블로그 - 포뇨봇>meta propertyog:description content포뇨의 블로그 - 포뇨봇>meta propertyog:type contentwebsite>meta nametwitter:card contentsummary_large_image>meta propertytwitter:url contenthttps://blog.ponyobot.kr/>meta nametwitter:title content포뇨의 블로그 - 포뇨봇>meta nametwitter:description content포뇨의 블로그 - 포뇨봇>meta nameviewport contentwidthdevice-width>meta namegenerator contentAstro v5.13.3>link relicon href/favicon/favicon-light-32.png sizes32x32 media(prefers-color-scheme: light)>link relicon href/favicon/favicon-light-128.png sizes128x128 media(prefers-color-scheme: light)>link relicon href/favicon/favicon-light-180.png sizes180x180 media(prefers-color-scheme: light)>link relicon href/favicon/favicon-light-192.png sizes192x192 media(prefers-color-scheme: light)>link relicon href/favicon/favicon-dark-32.png sizes32x32 media(prefers-color-scheme: dark)>link relicon href/favicon/favicon-dark-128.png sizes128x128 media(prefers-color-scheme: dark)>link relicon href/favicon/favicon-dark-180.png sizes180x180 media(prefers-color-scheme: dark)>link relicon href/favicon/favicon-dark-192.png sizes192x192 media(prefers-color-scheme: dark)>!-- Set the theme before the page is rendered to avoid a flash -->script>(function(){const DEFAULT_THEME auto;const LIGHT_MODE light;const DARK_MODE dark;const AUTO_MODE auto;const BANNER_HEIGHT_EXTEND 30;const PAGE_WIDTH 75;const configHue 175; // Load the theme from local storage const theme localStorage.getItem(theme) || DEFAULT_THEME; switch (theme) { case LIGHT_MODE: document.documentElement.classList.remove(dark); break case DARK_MODE: document.documentElement.classList.add(dark); break case AUTO_MODE: if (window.matchMedia((prefers-color-scheme: dark)).matches) { document.documentElement.classList.add(dark); } else { document.documentElement.classList.remove(dark); } } // Load the hue from local storage const hue localStorage.getItem(hue) || configHue; document.documentElement.style.setProperty(--hue, hue); // calculate the --banner-height-extend, which needs to be a multiple of 4 to avoid blurry text let offset Math.floor(window.innerHeight * (BANNER_HEIGHT_EXTEND / 100)); offset offset - offset % 4; document.documentElement.style.setProperty(--banner-height-extend, `${offset}px`); })();/script>!-- defines global css variables. This will be applied to html> body> and some other elements idk why -->link relalternate typeapplication/rss+xml titlePonyoBot hrefhttps://blog.ponyobot.kr/rss.xml>link relstylesheet href/_astro/Layout.DSulWsr7.css>link relstylesheet href/_astro/Layout.PyhW8lyJ.css>link relstylesheet href/_astro/_page_.DJNzVh8C.css>link relstylesheet href/_astro/_page_.CO27kg37.css>link relstylesheet href/_astro/about.BtniRLn_.css>style>input.svelte-1adkdfv:focus{outline:0}.search-panel.svelte-1adkdfv{max-height:calc(100vh - 100px);overflow-y:auto}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex){-webkit-appearance:none;height:1.5rem;background-image:var(--color-selection-bar);transition:background-image .15s ease-in-out}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-webkit-slider-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;background:#ffffffb3;box-shadow:none}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-webkit-slider-thumb:hover{background:#fffc}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-webkit-slider-thumb:active{background:#fff9}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-moz-range-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;border-width:0;background:#ffffffb3;box-shadow:none}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-moz-range-thumb:hover{background:#fffc}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-moz-range-thumb:active{background:#fff9}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-ms-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;background:#ffffffb3;box-shadow:none}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-ms-thumb:hover{background:#fffc}#display-setting.svelte-1s19bex inputtyperange:where(.svelte-1s19bex)::-ms-thumb:active{background:#fff9}/style>script typemodule src/_astro/page.Z8IJTFqj.js>/script>/head> body class min-h-screen transition lg:is-home enable-banner data-overlayscrollbars-initialize data-astro-cid-sckkx6r4 style--bannerOffset: 15vh;--banner-height-home: 65vh;--banner-height: 35vh;--configHue: 175;--page-width: 75rem;> div idconfig-carrier data-hue175>/div> div idtop-row classz-50 pointer-events-none relative transition-all duration-700 max-w-var(--page-width) px-0 md:px-4 mx-auto> div idnavbar-wrapper classpointer-events-auto sticky top-0 transition-all> div idnavbar classz-50 onload-animation> div classabsolute h-8 left-0 right-0 -top-8 bg-var(--card-bg) transition>/div> !-- used for onload animation --> div classcard-base !overflow-visible max-w-var(--page-width) h-4.5rem !rounded-t-none mx-auto flex items-center justify-between px-4> a href/ classbtn-plain scale-animation rounded-lg h-3.25rem px-5 font-bold active:scale-95> div classflex flex-row text-var(--primary) items-center text-md> svg width1em height1em classtext-1.75rem mb-1 mr-2 data-iconmaterial-symbols:home-outline-rounded> symbol idai:material-symbols:home-outline-rounded viewBox0 0 24 24>path fillcurrentColor dM6 19h3v-5q0-.425.288-.712T10 13h4q.425 0 .713.288T15 14v5h3v-9l-6-4.5L6 10zm-2 0v-9q0-.475.213-.9t.587-.7l6-4.5q.525-.4 1.2-.4t1.2.4l6 4.5q.375.275.588.7T20 10v9q0 .825-.588 1.413T18 21h-4q-.425 0-.712-.288T13 20v-5h-2v5q0 .425-.288.713T10 21H6q-.825 0-1.412-.587T4 19m8-6.75/>/symbol>use href#ai:material-symbols:home-outline-rounded>/use> /svg> 포뇨의 블로그 /div> /a> div classhidden md:flex> a aria-label홈 href/ classbtn-plain scale-animation rounded-lg h-11 font-bold px-5 active:scale-95> div classflex items-center> 홈 /div> /a>a aria-label아카이브 href/archive/ classbtn-plain scale-animation rounded-lg h-11 font-bold px-5 active:scale-95> div classflex items-center> 아카이브 /div> /a>a aria-label소개 href/about/ classbtn-plain scale-animation rounded-lg h-11 font-bold px-5 active:scale-95> div classflex items-center> 소개 /div> /a>a aria-labelGitHub hrefhttps://github.com/ponyobot/blog.ponyobot.kr target_blank classbtn-plain scale-animation rounded-lg h-11 font-bold px-5 active:scale-95> div classflex items-center> GitHub svg width1em height1em viewBox0 0 512 512 classtext-0.875rem transition -translate-y-1px ml-1 text-black/0.2 dark:text-white/0.2 data-iconfa6-solid:arrow-up-right-from-square> use href#ai:fa6-solid:arrow-up-right-from-square>/use> /svg> /div> /a> /div> div classflex> !--SearchPanel client:load>--> style>astro-island,astro-slot,astro-static-slot{display:contents}/style>script>(()>{var easync t>{await(await t())()};(self.Astro||(self.Astro{})).onlye;window.dispatchEvent(new Event(astro:only));})();/script>script>(()>{var AObject.defineProperty;var g(i,o,a)>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):ioa;var d(i,o,a)>g(i,typeof o!symbol?o+:o,a);{let i{0:t>m(t),1:t>a(t),2:t>new RegExp(t),3:t>new Date(t),4:t>new Map(a(t)),5:t>new Set(a(t)),6:t>BigInt(t),7:t>new URL(t),8:t>new Uint8Array(t),9:t>new Uint16Array(t),10:t>new Uint32Array(t),11:t>1/0*t},ot>{letl,et;return l in i?il(e):void 0},at>t.map(o),mt>typeof t!object||tnull?t:Object.fromEntries(Object.entries(t).map((l,e)>l,o(e)));class y extends HTMLElement{constructor(){super(...arguments);d(this,Component);d(this,hydrator);d(this,hydrate,async()>{var b;if(!this.hydrator||!this.isConnected)return;let e(bthis.parentElement)null?void 0:b.closest(astro-islandssr);if(e){e.addEventListener(astro:hydrate,this.hydrate,{once:!0});return}let cthis.querySelectorAll(astro-slot),n{},hthis.querySelectorAll(templatedata-astro-template);for(let r of h){let sr.closest(this.tagName);s!null&&s.isSameNode(this)&&(nr.getAttribute(data-astro-template)||defaultr.innerHTML,r.remove())}for(let r of c){let sr.closest(this.tagName);s!null&&s.isSameNode(this)&&(nr.getAttribute(name)||defaultr.innerHTML)}let p;try{pthis.hasAttribute(props)?m(JSON.parse(this.getAttribute(props))):{}}catch(r){let sthis.getAttribute(component-url)||unknown>,vthis.getAttribute(component-export);throw v&&(s+` (export ${v})`),console.error(`hydrate Error parsing props for component ${s}`,this.getAttribute(props),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute(client)}),this.removeAttribute(ssr),this.dispatchEvent(new CustomEvent(astro:hydrate))});d(this,unmount,()>{this.isConnected||this.dispatchEvent(new CustomEvent(astro:unmount))})}disconnectedCallback(){document.removeEventListener(astro:after-swap,this.unmount),document.addEventListener(astro:after-swap,this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute(await-children)||document.readyStateinteractive||document.readyStatecomplete)this.childrenConnectedCallback();else{let e()>{document.removeEventListener(DOMContentLoaded,e),c.disconnect(),this.childrenConnectedCallback()},cnew MutationObserver(()>{var n;((nthis.lastChild)null?void 0:n.nodeType)Node.COMMENT_NODE&&this.lastChild.nodeValueastro:end&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener(DOMContentLoaded,e)}}async childrenConnectedCallback(){let ethis.getAttribute(before-hydration-url);e&&await import(e),this.start()}async start(){let eJSON.parse(this.getAttribute(opts)),cthis.getAttribute(client);if(Astrocvoid 0){window.addEventListener(`astro:${c}`,()>this.start(),{once:!0});return}try{await Astroc(async()>{let nthis.getAttribute(renderer-url),h,{default:p}await Promise.all(import(this.getAttribute(component-url)),n?import(n):()>()>{}),uthis.getAttribute(component-export)||default;if(!u.includes(.))this.Componenthu;else{this.Componenth;for(let f of u.split(.))this.Componentthis.Componentf}return this.hydratorp,this.hydrate},e,this)}catch(n){console.error(`astro-island Error hydrating ${this.getAttribute(component-url)}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,observedAttributes,props),customElements.get(astro-island)||customElements.define(astro-island,y)}})();/script>astro-island uidZEG73h component-url/_astro/Search.B4yGi1eY.js component-exportdefault renderer-url/_astro/client.svelte.DOad_iQG.js props{} ssr clientonly opts{"name":"Search","value":"svelte"}>/astro-island> button aria-labelDisplay Settings classbtn-plain scale-animation rounded-lg h-11 w-11 active:scale-90 iddisplay-settings-switch> svg width1em height1em classtext-1.25rem data-iconmaterial-symbols:palette-outline> symbol idai:material-symbols:palette-outline viewBox0 0 24 24>path fillcurrentColor dM12 22q-2.05 0-3.875-.788t-3.187-2.15t-2.15-3.187T2 12q0-2.075.813-3.9t2.2-3.175T8.25 2.788T12.2 2q2 0 3.775.688t3.113 1.9t2.125 2.875T22 11.05q0 2.875-1.75 4.413T16 17h-1.85q-.225 0-.312.125t-.088.275q0 .3.375.863t.375 1.287q0 1.25-.687 1.85T12 22m-5.5-9q.65 0 1.075-.425T8 11.5t-.425-1.075T6.5 10t-1.075.425T5 11.5t.425 1.075T6.5 13m3-4q.65 0 1.075-.425T11 7.5t-.425-1.075T9.5 6t-1.075.425T8 7.5t.425 1.075T9.5 9m5 0q.65 0 1.075-.425T16 7.5t-.425-1.075T14.5 6t-1.075.425T13 7.5t.425 1.075T14.5 9m3 4q.65 0 1.075-.425T19 11.5t-.425-1.075T17.5 10t-1.075.425T16 11.5t.425 1.075T17.5 13M12 20q.225 0 .363-.125t.137-.325q0-.35-.375-.825T11.75 17.3q0-1.05.725-1.675T14.25 15H16q1.65 0 2.825-.962T20 11.05q0-3.025-2.312-5.038T12.2 4Q8.8 4 6.4 6.325T4 12q0 3.325 2.338 5.663T12 20/>/symbol>use href#ai:material-symbols:palette-outline>/use> /svg> /button> astro-island uid1zJdxA component-url/_astro/LightDarkSwitch.CZD0pYDA.js component-exportdefault renderer-url/_astro/client.svelte.DOad_iQG.js props{} ssr clientonly opts{"name":"LightDarkSwitch","value":"svelte"}>/astro-island> button aria-labelMenu nameNav Menu classbtn-plain scale-animation rounded-lg w-11 h-11 active:scale-90 md:!hidden idnav-menu-switch> svg width1em height1em classtext-1.25rem data-iconmaterial-symbols:menu-rounded> symbol idai:material-symbols:menu-rounded viewBox0 0 24 24>path fillcurrentColor dM4 18q-.425 0-.712-.288T3 17t.288-.712T4 16h16q.425 0 .713.288T21 17t-.288.713T20 18zm0-5q-.425 0-.712-.288T3 12t.288-.712T4 11h16q.425 0 .713.288T21 12t-.288.713T20 13zm0-5q-.425 0-.712-.288T3 7t.288-.712T4 6h16q.425 0 .713.288T21 7t-.288.713T20 8z/>/symbol>use href#ai:material-symbols:menu-rounded>/use> /svg> /button> /div> div idnav-menu-panel classfloat-panel float-panel-closed absolute transition-all fixed right-4 px-2 py-2> a href/ classgroup flex justify-between items-center py-2 pl-3 pr-1 rounded-lg gap-8 hover:bg-var(--btn-plain-bg-hover) active:bg-var(--btn-plain-bg-active) transition > div classtransition text-black/75 dark:text-white/75 font-bold group-hover:text-var(--primary) group-active:text-var(--primary)> 홈 /div> svg width1em height1em classtransition text-1.25rem text-var(--primary) data-iconmaterial-symbols:chevron-right-rounded> symbol idai:material-symbols:chevron-right-rounded viewBox0 0 24 24>path fillcurrentColor dM12.6 12L8.7 8.1q-.275-.275-.275-.7t.275-.7t.7-.275t.7.275l4.6 4.6q.15.15.213.325t.062.375t-.062.375t-.213.325l-4.6 4.6q-.275.275-.7.275t-.7-.275t-.275-.7t.275-.7z/>/symbol>use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a>a href/archive/ classgroup flex justify-between items-center py-2 pl-3 pr-1 rounded-lg gap-8 hover:bg-var(--btn-plain-bg-hover) active:bg-var(--btn-plain-bg-active) transition > div classtransition text-black/75 dark:text-white/75 font-bold group-hover:text-var(--primary) group-active:text-var(--primary)> 아카이브 /div> svg width1em height1em viewBox0 0 24 24 classtransition text-1.25rem text-var(--primary) data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a>a href/about/ classgroup flex justify-between items-center py-2 pl-3 pr-1 rounded-lg gap-8 hover:bg-var(--btn-plain-bg-hover) active:bg-var(--btn-plain-bg-active) transition > div classtransition text-black/75 dark:text-white/75 font-bold group-hover:text-var(--primary) group-active:text-var(--primary)> 소개 /div> svg width1em height1em viewBox0 0 24 24 classtransition text-1.25rem text-var(--primary) data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a>a hrefhttps://github.com/ponyobot/blog.ponyobot.kr classgroup flex justify-between items-center py-2 pl-3 pr-1 rounded-lg gap-8 hover:bg-var(--btn-plain-bg-hover) active:bg-var(--btn-plain-bg-active) transition target_blank> div classtransition text-black/75 dark:text-white/75 font-bold group-hover:text-var(--primary) group-active:text-var(--primary)> GitHub /div> svg width1em height1em viewBox0 0 512 512 classtransition text-0.75rem text-black/25 dark:text-white/25 -translate-x-1 data-iconfa6-solid:arrow-up-right-from-square> use href#ai:fa6-solid:arrow-up-right-from-square>/use> /svg> /a> /div> astro-island uidZjfqNG component-url/_astro/DisplaySettings.B4A-pZjy.js component-exportdefault renderer-url/_astro/client.svelte.DOad_iQG.js props{} ssr clientonly opts{"name":"DisplaySettings","value":"svelte"}>/astro-island> /div> /div> script typemodule>function c(){localStorage.themedark?(document.documentElement.classList.remove(dark),localStorage.themelight):(document.documentElement.classList.add(dark),localStorage.themedark)}function o(){let tdocument.getElementById(scheme-switch);t&&(t.onclickfunction(){c()});let ndocument.getElementById(display-settings-switch);n&&(n.onclickfunction(){let edocument.getElementById(display-setting);e&&e.classList.toggle(float-panel-closed)});let ldocument.getElementById(nav-menu-switch);l&&(l.onclickfunction(){let edocument.getElementById(nav-menu-panel);e&&e.classList.toggle(float-panel-closed)})}o();/script> script>(function(){const scriptUrl /pagefind/pagefind.js;async function loadPagefind() { try { const response await fetch(scriptUrl, { method: HEAD }); if (!response.ok) { throw new Error(`Pagefind script not found: ${response.status}`); } const pagefind await import(scriptUrl); await pagefind.options({ excerptLength: 20 }); window.pagefind pagefind; document.dispatchEvent(new CustomEvent(pagefindready)); console.log(Pagefind loaded and initialized successfully, event dispatched.); } catch (error) { console.error(Failed to load Pagefind:, error); window.pagefind { search: () > Promise.resolve({ results: }), options: () > Promise.resolve(), }; document.dispatchEvent(new CustomEvent(pagefindloaderror)); console.log(Pagefind load error, event dispatched.); }}if (document.readyState loading) { document.addEventListener(DOMContentLoaded, loadPagefind);} else { loadPagefind();}})();/script> /div> /div> div idbanner-wrapper classabsolute z-10 w-full transition duration-700 overflow-hidden styletop: -30vh> div idbanner classobject-cover h-full transition duration-700 opacity-0 scale-105 overflow-hidden relative> div classtransition absolute inset-0 dark:bg-black/10 bg-opacity-50 pointer-events-none>/div> img src/_astro/banner.BNyBg1pU_ZG2YWI.webp altBanner image of the blog styleobject-position: center loadinglazy decodingasync fetchpriorityauto width13230 height8262 classw-full h-full object-cover> /div> /div> div classabsolute w-full z-30 pointer-events-none styletop: calc(35vh - 3.5rem)> !-- The pointer-events-none here prevent blocking the click event of the TOC --> div classrelative max-w-var(--page-width) mx-auto pointer-events-auto> div idmain-grid classtransition duration-700 w-full left-0 right-0 grid grid-cols-17.5rem_auto grid-rows-auto_1fr_auto lg:grid-rows-auto mx-auto gap-4 px-0 md:px-4> !-- Banner image credit --> a hrefhttps://ponyobot.kr idbanner-credit target_blank relnoopener aria-labelVisit image source classgroup onload-animation transition-all absolute flex justify-center items-center rounded-full px-3 right-4 -top-3.25rem bg-black/60 hover:bg-black/70 h-9 hover:pr-9 active:bg-black/80> svg width1em height1em classtext-white/75 text-1.25rem mr-1 data-iconmaterial-symbols:copyright-outline-rounded> symbol idai:material-symbols:copyright-outline-rounded viewBox0 0 24 24>path fillcurrentColor dM12 22q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22m0-2q3.35 0 5.675-2.325T20 12t-2.325-5.675T12 4T6.325 6.325T4 12t2.325 5.675T12 20m-2-4h4q.425 0 .713-.288T15 15v-1q0-.425-.288-.712T14 13t-.712.288T13 14h-2v-4h2q0 .425.288.713T14 11t.713-.288T15 10V9q0-.425-.288-.712T14 8h-4q-.425 0-.712.288T9 9v6q0 .425.288.713T10 16/>/symbol>use href#ai:material-symbols:copyright-outline-rounded>/use> /svg> div classtext-white/75 text-xs>포뇨봇 사이트/div> svg width1em height1em classtransition absolute text-oklch(0.75_0.14_var(--hue)) right-4 text-0.75rem opacity-0 group-hover:opacity-100 data-iconfa6-solid:arrow-up-right-from-square> symbol idai:fa6-solid:arrow-up-right-from-square viewBox0 0 512 512>path fillcurrentColor dM320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32zM80 32C35.8 32 0 67.8 0 112v320c0 44.2 35.8 80 80 80h320c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v112c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16h112c17.7 0 32-14.3 32-32s-14.3-32-32-32z/>/symbol>use href#ai:fa6-solid:arrow-up-right-from-square>/use> /svg> /a> div idsidebar classmb-4 row-start-2 row-end-3 col-span-2 lg:row-start-1 lg:row-end-2 lg:col-span-1 lg:max-w-17.5rem onload-animation w-full> div classflex flex-col w-full gap-4 mb-4> div classcard-base p-3> a aria-labelGo to About Page href/about/ classgroup block relative mx-auto mt-1 lg:mx-0 lg:mt-0 mb-3 max-w-12rem lg:max-w-none overflow-hidden rounded-xl active:scale-95> div classabsolute transition pointer-events-none group-hover:bg-black/30 group-active:bg-black/50 w-full h-full z-50 flex items-center justify-center> svg width1.13em height1em classtransition opacity-0 scale-90 group-hover:scale-100 group-hover:opacity-100 text-white text-5xl data-iconfa6-regular:address-card> symbol idai:fa6-regular:address-card viewBox0 0 576 512>path fillcurrentColor dM512 80c8.8 0 16 7.2 16 16v320c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM64 32C28.7 32 0 60.7 0 96v320c0 35.3 28.7 64 64 64h448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zm144 224a64 64 0 1 0 0-128a64 64 0 1 0 0 128m-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80zm200-144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24z/>/symbol>use href#ai:fa6-regular:address-card>/use> /svg> /div> div classmx-auto lg:w-full h-full lg:mt-0 overflow-hidden relative> div classtransition absolute inset-0 dark:bg-black/10 bg-opacity-50 pointer-events-none>/div> img src/_astro/profile.CJYNrvNr_1BQJPT.webp altProfile Image of the Author styleobject-position: center loadinglazy decodingasync fetchpriorityauto width736 height736 classw-full h-full object-cover> /div> /a> div classpx-2> div classfont-bold text-xl text-center mb-1 dark:text-neutral-50 transition>PonyoBot/div> div classh-1 w-5 bg-var(--primary) mx-auto rounded-full mb-2 transition>/div> div classtext-center text-neutral-400 mb-2.5 transition>포뇨봇 블로그에 오신걸 환영합니다./div> div classflex flex-wrap gap-2 justify-center mb-1> a relme aria-label연락처 hrefhttps://open.kakao.com/me/ponyobot target_blank classbtn-regular rounded-lg h-10 w-10 active:scale-90> svg width1em height1em classtext-1.5rem data-iconline-md:chat-filled> symbol idai:line-md:chat-filled viewBox0 0 24 24>mask idSVGqseT2zzL>g fillnone stroke#fff stroke-linecapround stroke-linejoinround stroke-width2>path fill#fff fill-opacity0 stroke-dasharray72 stroke-dashoffset72 dM3 19.5v-15.5c0 -0.55 0.45 -1 1 -1h16c0.55 0 1 0.45 1 1v12c0 0.55 -0.45 1 -1 1h-14.5Z>animate fillfreeze attributeNamefill-opacity begin0.7s dur0.5s values0;1/>animate fillfreeze attributeNamestroke-dashoffset dur0.6s values72;0/>/path>path stroke#000 stroke-dasharray10 stroke-dashoffset10 dM8 7h8>animate fillfreeze attributeNamestroke-dashoffset begin1.2s dur0.2s values10;0/>/path>path stroke#000 stroke-dasharray10 stroke-dashoffset10 dM8 10h8>animate fillfreeze attributeNamestroke-dashoffset begin1.5s dur0.2s values10;0/>/path>path stroke#000 stroke-dasharray6 stroke-dashoffset6 dM8 13h4>animate fillfreeze attributeNamestroke-dashoffset begin1.8s dur0.2s values6;0/>/path>/g>/mask>rect width24 height24 fillcurrentColor maskurl(#SVGqseT2zzL)/>/symbol>use href#ai:line-md:chat-filled>/use> /svg> /a>a relme aria-labele-mail hrefmailto:admin@ponyobot.kr target_blank classbtn-regular rounded-lg h-10 w-10 active:scale-90> svg width1em height1em classtext-1.5rem data-iconline-md:email-filled> symbol idai:line-md:email-filled viewBox0 0 24 24>path fillcurrentColor fill-opacity0 dM12 11l-8 -5h16l-8 5Z>animate fillfreeze attributeNamefill-opacity begin0.8s dur0.5s values0;1/>/path>g fillnone strokecurrentColor stroke-linecapround stroke-linejoinround stroke-width2>path stroke-dasharray64 stroke-dashoffset64 dM4 5h16c0.55 0 1 0.45 1 1v12c0 0.55 -0.45 1 -1 1h-16c-0.55 0 -1 -0.45 -1 -1v-12c0 -0.55 0.45 -1 1 -1Z>animate fillfreeze attributeNamestroke-dashoffset dur0.6s values64;0/>/path>path stroke-dasharray24 stroke-dashoffset24 dM3 6.5l9 5.5l9 -5.5>animate fillfreeze attributeNamestroke-dashoffset begin0.6s dur0.2s values24;0/>/path>/g>/symbol>use href#ai:line-md:email-filled>/use> /svg> /a>a relme aria-labelGitHub hrefhttps://github.com/ponyobot target_blank classbtn-regular rounded-lg h-10 w-10 active:scale-90> svg width1em height1em classtext-1.5rem data-iconline-md:github> symbol idai:line-md:github viewBox0 0 24 24>g fillnone strokecurrentColor stroke-linecapround stroke-linejoinround stroke-width2>path stroke-dasharray32 stroke-dashoffset32 dM12 4c1.67 0 2.61 0.4 3 0.5c0.53 -0.43 1.94 -1.5 3.5 -1.5c0.34 1 0.29 2.22 0 3c0.75 1 1 2 1 3.5c0 2.19 -0.48 3.58 -1.5 4.5c-1.02 0.92 -2.11 1.37 -3.5 1.5c0.65 0.54 0.5 1.87 0.5 2.5c0 0.73 0 3 0 3M12 4c-1.67 0 -2.61 0.4 -3 0.5c-0.53 -0.43 -1.94 -1.5 -3.5 -1.5c-0.34 1 -0.29 2.22 0 3c-0.75 1 -1 2 -1 3.5c0 2.19 0.48 3.58 1.5 4.5c1.02 0.92 2.11 1.37 3.5 1.5c-0.65 0.54 -0.5 1.87 -0.5 2.5c0 0.73 0 3 0 3>animate fillfreeze attributeNamestroke-dashoffset dur0.7s values32;0/>/path>path stroke-dasharray10 stroke-dashoffset10 dM9 19c-1.41 0 -2.84 -0.56 -3.69 -1.19c-0.84 -0.63 -1.09 -1.66 -2.31 -2.31>animate fillfreeze attributeNamestroke-dashoffset begin0.8s dur0.2s values10;0/>/path>/g>/symbol>use href#ai:line-md:github>/use> /svg> /a> /div> /div> /div> /div> div idsidebar-sticky classtransition-all duration-700 flex flex-col w-full gap-4 top-4 sticky top-4> widget-layout data-idcategories data-is-collapsedfalse classpb-4 card-base onload-animation styleanimation-delay: 150ms; --collapsedHeight: 7.5rem; data-astro-cid-ucso7hvetrue> div classfont-bold transition text-lg text-neutral-900 dark:text-neutral-100 relative ml-8 mt-4 mb-2 before:w-1 before:h-4 before:rounded-md before:bg-var(--primary) before:absolute before:left--16px before:top-5.5px data-astro-cid-ucso7hve style--collapsedHeight: 7.5rem;>카테고리/div> div idcategories classcollapse-wrapper px-4 overflow-hidden data-astro-cid-ucso7hve style--collapsedHeight: 7.5rem;> a href/archive/?category%EC%A0%95%EC%B1%85%2F%EC%95%88%EB%82%B4 aria-labelView all posts in the 정책/안내 category> button class w-full h-10 rounded-lg bg-none hover:bg-var(--btn-plain-bg-hover) active:bg-var(--btn-plain-bg-active) transition-all pl-2 hover:pl-3 text-neutral-700 hover:text-var(--primary) dark:text-neutral-300 dark:hover:text-var(--primary) > div classflex items-center justify-between relative mr-2> div classoverflow-hidden text-left whitespace-nowrap overflow-ellipsis > 정책/안내 /div> div classtransition px-2 h-7 ml-4 min-w-2rem rounded-lg text-sm font-bold text-var(--btn-content) dark:text-var(--deep-text) bg-var(--btn-regular-bg) dark:bg-var(--primary) flex items-center justify-center> 4 /div> /div> /button> /a>a href/archive/?category%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%20%EB%B4%87 aria-labelView all posts in the 카카오톡 봇 category> button class w-full h-10 rounded-lg bg-none hover:bg-var(--btn-plain-bg-hover) active:bg-var(--btn-plain-bg-active) transition-all pl-2 hover:pl-3 text-neutral-700 hover:text-var(--primary) dark:text-neutral-300 dark:hover:text-var(--primary) > div classflex items-center justify-between relative mr-2> div classoverflow-hidden text-left whitespace-nowrap overflow-ellipsis > 카카오톡 봇 /div> div classtransition px-2 h-7 ml-4 min-w-2rem rounded-lg text-sm font-bold text-var(--btn-content) dark:text-var(--deep-text) bg-var(--btn-regular-bg) dark:bg-var(--primary) flex items-center justify-center> 2 /div> /div> /button> /a> /div> /widget-layout> script typemodule>class d extends HTMLElement{constructor(){if(super(),this.dataset.isCollapsed!true)return;const ethis.dataset.id,tthis.querySelector(.expand-btn),sthis.querySelector(`#${e}`);t.addEventListener(click,()>{s.classList.remove(collapsed),t.classList.add(hidden)})}}customElements.get(widget-layout)||customElements.define(widget-layout,d);/script> widget-layout data-idtags data-is-collapsedfalse classpb-4 card-base onload-animation styleanimation-delay: 200ms; --collapsedHeight: 7.5rem; data-astro-cid-ucso7hvetrue> div classfont-bold transition text-lg text-neutral-900 dark:text-neutral-100 relative ml-8 mt-4 mb-2 before:w-1 before:h-4 before:rounded-md before:bg-var(--primary) before:absolute before:left--16px before:top-5.5px data-astro-cid-ucso7hve style--collapsedHeight: 7.5rem;>태그/div> div idtags classcollapse-wrapper px-4 overflow-hidden data-astro-cid-ucso7hve style--collapsedHeight: 7.5rem;> div classflex gap-2 flex-wrap> a href/archive/?tag%EA%B0%80%EC%9D%B4%EB%93%9C aria-labelView all posts with the 가이드 tag classbtn-regular h-8 text-sm px-3 rounded-lg> 가이드 /a>a href/archive/?tag%EC%95%88%EB%82%B4 aria-labelView all posts with the 안내 tag classbtn-regular h-8 text-sm px-3 rounded-lg> 안내 /a>a href/archive/?tag%EC%A0%95%EC%B1%85 aria-labelView all posts with the 정책 tag classbtn-regular h-8 text-sm px-3 rounded-lg> 정책 /a>a href/archive/?tag%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%20%EB%B4%87 aria-labelView all posts with the 카카오톡 봇 tag classbtn-regular h-8 text-sm px-3 rounded-lg> 카카오톡 봇 /a>a href/archive/?tag%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D aria-labelView all posts with the 프로그래밍 tag classbtn-regular h-8 text-sm px-3 rounded-lg> 프로그래밍 /a> /div> /div> /widget-layout> /div> /div> main idswup-container classtransition-swup-fade col-span-2 lg:col-span-1 overflow-hidden> div idcontent-wrapper classonload-animation> !-- the overflow-hidden here prevent long text break the layout--> !-- make id different from windows.swup global property --> div classtransition flex flex-col rounded-var(--radius-large) bg-var(--card-bg) py-1 md:py-0 md:bg-transparent md:gap-4 mb-4> div classcard-base flex flex-col-reverse md:flex-col w-full rounded-var(--radius-large) overflow-hidden relative onload-animation styleanimation-delay: calc(var(--content-delay) + 0ms);; --coverWidth: 28%; data-astro-cid-iyiqi2so> div classpl-6 md:pl-9 pr-6 md:pr-2 pt-6 md:pt-7 pb-6 relative w-full md:w-calc(100%_-_52px_-_12px) data-astro-cid-iyiqi2so style--coverWidth: 28%;> a href/posts/cmd/ classtransition group w-full block font-bold mb-3 text-3xl text-90 hover:text-var(--primary) dark:hover:text-var(--primary) active:text-var(--title-active) dark:active:text-var(--title-active) before:w-1 before:h-5 before:rounded-md before:bg-var(--primary) before:absolute before:top-35px before:left-18px before:hidden md:before:block data-astro-cid-iyiqi2so style--coverWidth: 28%;> 명령어 svg width1em height1em viewBox0 0 24 24 classinline text-2rem text-var(--primary) md:hidden translate-y-0.5 absolute data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> svg width1em height1em viewBox0 0 24 24 classtext-var(--primary) text-2rem transition hidden md:inline absolute translate-y-0.5 opacity-0 group-hover:opacity-100 -translate-x-1 group-hover:translate-x-0 data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> !-- metadata --> div classflex flex-wrap text-neutral-500 dark:text-neutral-400 items-center gap-4 gap-x-4 gap-y-2 mb-4> !-- publish date --> div classflex items-center> div classmeta-icon> svg width1em height1em classtext-xl data-iconmaterial-symbols:calendar-today-outline-rounded> symbol idai:material-symbols:calendar-today-outline-rounded viewBox0 0 24 24>path fillcurrentColor dM5 22q-.825 0-1.412-.587T3 20V6q0-.825.588-1.412T5 4h1V3q0-.425.288-.712T7 2t.713.288T8 3v1h8V3q0-.425.288-.712T17 2t.713.288T18 3v1h1q.825 0 1.413.588T21 6v14q0 .825-.587 1.413T19 22zm0-2h14V10H5zM5 8h14V6H5zm0 0V6z/>/symbol>use href#ai:material-symbols:calendar-today-outline-rounded>/use> /svg> /div> span classtext-50 text-sm font-medium>2025-01-06/span> /div> !-- update date --> !-- categories --> div classflex items-center> div classmeta-icon> svg width1em height1em classtext-xl data-iconmaterial-symbols:book-2-outline-rounded> symbol idai:material-symbols:book-2-outline-rounded viewBox0 0 24 24>path fillcurrentColor dM6 15.325q.35-.175.725-.25T7.5 15H8V4h-.5q-.625 0-1.062.438T6 5.5zM10 15h8V4h-8zm-4 .325V4zM7.5 22q-1.45 0-2.475-1.025T4 18.5v-13q0-1.45 1.025-2.475T7.5 2H18q.825 0 1.413.587T20 4v12.525q0 .2-.162.363t-.588.362q-.35.175-.55.5t-.2.75t.2.763t.55.487t.55.413t.2.562v.25q0 .425-.288.725T19 22zm0-2h9.325q-.15-.35-.237-.712T16.5 18.5q0-.4.075-.775t.25-.725H7.5q-.65 0-1.075.438T6 18.5q0 .65.425 1.075T7.5 20/>/symbol>use href#ai:material-symbols:book-2-outline-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> a href/archive/?category%EC%A0%95%EC%B1%85%2F%EC%95%88%EB%82%B4 aria-labelView all posts in the 정책/안내 category classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 정책/안내 /a> /div> /div> !-- tags --> div classitems-center hidden md:flex> div classmeta-icon> svg width1em height1em classtext-xl data-iconmaterial-symbols:tag-rounded> symbol idai:material-symbols:tag-rounded viewBox0 0 24 24>path fillcurrentColor dm9 16l-.825 3.275q-.075.325-.325.525t-.6.2q-.475 0-.775-.375T6.3 18.8L7 16H4.275q-.5 0-.8-.387T3.3 14.75q.075-.35.35-.55t.625-.2H7.5l1-4H5.775q-.5 0-.8-.387T4.8 8.75q.075-.35.35-.55t.625-.2H9l.825-3.275Q9.9 4.4 10.15 4.2t.6-.2q.475 0 .775.375t.175.825L11 8h4l.825-3.275q.075-.325.325-.525t.6-.2q.475 0 .775.375t.175.825L17 8h2.725q.5 0 .8.387t.175.863q-.075.35-.35.55t-.625.2H16.5l-1 4h2.725q.5 0 .8.388t.175.862q-.075.35-.35.55t-.625.2H15l-.825 3.275q-.075.325-.325.525t-.6.2q-.475 0-.775-.375T12.3 18.8L13 16zm.5-2h4l1-4h-4z/>/symbol>use href#ai:material-symbols:tag-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> div classhidden mx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EA%B0%80%EC%9D%B4%EB%93%9C aria-labelView all posts with the 가이드 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 가이드 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D aria-labelView all posts with the 프로그래밍 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 프로그래밍 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%20%EB%B4%87 aria-labelView all posts with the 카카오톡 봇 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 카카오톡 봇 /a> /div> /div> /div> !-- description --> div classtransition text-75 mb-3.5 pr-4 data-astro-cid-iyiqi2so style--coverWidth: 28%;> 포뇨봇 명령어 /div> !-- word count and read time --> div classtext-sm text-black/30 dark:text-white/30 flex gap-4 transition data-astro-cid-iyiqi2so style--coverWidth: 28%;> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 1582 단어 /div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;>|/div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 8 분 /div> /div> /div> a href/posts/cmd/ aria-label명령어 class!hidden md:!flex btn-regular w-3.25rem absolute right-3 top-3 bottom-3 rounded-xl bg-var(--enter-btn-bg) hover:bg-var(--enter-btn-bg-hover) active:bg-var(--enter-btn-bg-active) active:scale-95 data-astro-cid-iyiqi2so style--coverWidth: 28%;> svg width1em height1em viewBox0 0 24 24 classtransition text-var(--primary) text-4xl mx-auto data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> /div> div classtransition border-t-1px border-dashed mx-6 border-black/10 dark:border-white/0.15 last:border-t-0 md:hidden data-astro-cid-iyiqi2so style--coverWidth: 28%;>/div> div classcard-base flex flex-col-reverse md:flex-col w-full rounded-var(--radius-large) overflow-hidden relative onload-animation styleanimation-delay: calc(var(--content-delay) + 50ms);; --coverWidth: 28%; data-astro-cid-iyiqi2so> div classpl-6 md:pl-9 pr-6 md:pr-2 pt-6 md:pt-7 pb-6 relative w-full md:w-calc(100%_-_52px_-_12px) data-astro-cid-iyiqi2so style--coverWidth: 28%;> a href/posts/privacypolicy/ classtransition group w-full block font-bold mb-3 text-3xl text-90 hover:text-var(--primary) dark:hover:text-var(--primary) active:text-var(--title-active) dark:active:text-var(--title-active) before:w-1 before:h-5 before:rounded-md before:bg-var(--primary) before:absolute before:top-35px before:left-18px before:hidden md:before:block data-astro-cid-iyiqi2so style--coverWidth: 28%;> 개인정보처리방침 svg width1em height1em viewBox0 0 24 24 classinline text-2rem text-var(--primary) md:hidden translate-y-0.5 absolute data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> svg width1em height1em viewBox0 0 24 24 classtext-var(--primary) text-2rem transition hidden md:inline absolute translate-y-0.5 opacity-0 group-hover:opacity-100 -translate-x-1 group-hover:translate-x-0 data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> !-- metadata --> div classflex flex-wrap text-neutral-500 dark:text-neutral-400 items-center gap-4 gap-x-4 gap-y-2 mb-4> !-- publish date --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:calendar-today-outline-rounded> use href#ai:material-symbols:calendar-today-outline-rounded>/use> /svg> /div> span classtext-50 text-sm font-medium>2025-01-05/span> /div> !-- update date --> !-- categories --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:book-2-outline-rounded> use href#ai:material-symbols:book-2-outline-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> a href/archive/?category%EC%A0%95%EC%B1%85%2F%EC%95%88%EB%82%B4 aria-labelView all posts in the 정책/안내 category classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 정책/안내 /a> /div> /div> !-- tags --> div classitems-center hidden md:flex> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:tag-rounded> use href#ai:material-symbols:tag-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> div classhidden mx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%A0%95%EC%B1%85 aria-labelView all posts with the 정책 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 정책 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%95%88%EB%82%B4 aria-labelView all posts with the 안내 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 안내 /a> /div> /div> /div> !-- description --> div classtransition text-75 mb-3.5 pr-4 data-astro-cid-iyiqi2so style--coverWidth: 28%;> 포뇨봇 개인정보처리방침 /div> !-- word count and read time --> div classtext-sm text-black/30 dark:text-white/30 flex gap-4 transition data-astro-cid-iyiqi2so style--coverWidth: 28%;> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 1051 단어 /div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;>|/div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 5 분 /div> /div> /div> a href/posts/privacypolicy/ aria-label개인정보처리방침 class!hidden md:!flex btn-regular w-3.25rem absolute right-3 top-3 bottom-3 rounded-xl bg-var(--enter-btn-bg) hover:bg-var(--enter-btn-bg-hover) active:bg-var(--enter-btn-bg-active) active:scale-95 data-astro-cid-iyiqi2so style--coverWidth: 28%;> svg width1em height1em viewBox0 0 24 24 classtransition text-var(--primary) text-4xl mx-auto data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> /div> div classtransition border-t-1px border-dashed mx-6 border-black/10 dark:border-white/0.15 last:border-t-0 md:hidden data-astro-cid-iyiqi2so style--coverWidth: 28%;>/div> div classcard-base flex flex-col-reverse md:flex-col w-full rounded-var(--radius-large) overflow-hidden relative onload-animation styleanimation-delay: calc(var(--content-delay) + 100ms);; --coverWidth: 28%; data-astro-cid-iyiqi2so> div classpl-6 md:pl-9 pr-6 md:pr-2 pt-6 md:pt-7 pb-6 relative w-full md:w-calc(100%_-_52px_-_12px) data-astro-cid-iyiqi2so style--coverWidth: 28%;> a href/posts/policy/ classtransition group w-full block font-bold mb-3 text-3xl text-90 hover:text-var(--primary) dark:hover:text-var(--primary) active:text-var(--title-active) dark:active:text-var(--title-active) before:w-1 before:h-5 before:rounded-md before:bg-var(--primary) before:absolute before:top-35px before:left-18px before:hidden md:before:block data-astro-cid-iyiqi2so style--coverWidth: 28%;> 이용약관 svg width1em height1em viewBox0 0 24 24 classinline text-2rem text-var(--primary) md:hidden translate-y-0.5 absolute data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> svg width1em height1em viewBox0 0 24 24 classtext-var(--primary) text-2rem transition hidden md:inline absolute translate-y-0.5 opacity-0 group-hover:opacity-100 -translate-x-1 group-hover:translate-x-0 data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> !-- metadata --> div classflex flex-wrap text-neutral-500 dark:text-neutral-400 items-center gap-4 gap-x-4 gap-y-2 mb-4> !-- publish date --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:calendar-today-outline-rounded> use href#ai:material-symbols:calendar-today-outline-rounded>/use> /svg> /div> span classtext-50 text-sm font-medium>2025-01-04/span> /div> !-- update date --> !-- categories --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:book-2-outline-rounded> use href#ai:material-symbols:book-2-outline-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> a href/archive/?category%EC%A0%95%EC%B1%85%2F%EC%95%88%EB%82%B4 aria-labelView all posts in the 정책/안내 category classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 정책/안내 /a> /div> /div> !-- tags --> div classitems-center hidden md:flex> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:tag-rounded> use href#ai:material-symbols:tag-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> div classhidden mx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%A0%95%EC%B1%85 aria-labelView all posts with the 정책 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 정책 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%95%88%EB%82%B4 aria-labelView all posts with the 안내 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 안내 /a> /div> /div> /div> !-- description --> div classtransition text-75 mb-3.5 pr-4 data-astro-cid-iyiqi2so style--coverWidth: 28%;> 포뇨봇 이용약관 /div> !-- word count and read time --> div classtext-sm text-black/30 dark:text-white/30 flex gap-4 transition data-astro-cid-iyiqi2so style--coverWidth: 28%;> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 1137 단어 /div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;>|/div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 6 분 /div> /div> /div> a href/posts/policy/ aria-label이용약관 class!hidden md:!flex btn-regular w-3.25rem absolute right-3 top-3 bottom-3 rounded-xl bg-var(--enter-btn-bg) hover:bg-var(--enter-btn-bg-hover) active:bg-var(--enter-btn-bg-active) active:scale-95 data-astro-cid-iyiqi2so style--coverWidth: 28%;> svg width1em height1em viewBox0 0 24 24 classtransition text-var(--primary) text-4xl mx-auto data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> /div> div classtransition border-t-1px border-dashed mx-6 border-black/10 dark:border-white/0.15 last:border-t-0 md:hidden data-astro-cid-iyiqi2so style--coverWidth: 28%;>/div> div classcard-base flex flex-col-reverse md:flex-col w-full rounded-var(--radius-large) overflow-hidden relative onload-animation styleanimation-delay: calc(var(--content-delay) + 150ms);; --coverWidth: 28%; data-astro-cid-iyiqi2so> div classpl-6 md:pl-9 pr-6 md:pr-2 pt-6 md:pt-7 pb-6 relative w-full md:w-calc(100%_-_52px_-_12px) data-astro-cid-iyiqi2so style--coverWidth: 28%;> a href/posts/iris/ classtransition group w-full block font-bold mb-3 text-3xl text-90 hover:text-var(--primary) dark:hover:text-var(--primary) active:text-var(--title-active) dark:active:text-var(--title-active) before:w-1 before:h-5 before:rounded-md before:bg-var(--primary) before:absolute before:top-35px before:left-18px before:hidden md:before:block data-astro-cid-iyiqi2so style--coverWidth: 28%;> iris 설치하기 svg width1em height1em viewBox0 0 24 24 classinline text-2rem text-var(--primary) md:hidden translate-y-0.5 absolute data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> svg width1em height1em viewBox0 0 24 24 classtext-var(--primary) text-2rem transition hidden md:inline absolute translate-y-0.5 opacity-0 group-hover:opacity-100 -translate-x-1 group-hover:translate-x-0 data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> !-- metadata --> div classflex flex-wrap text-neutral-500 dark:text-neutral-400 items-center gap-4 gap-x-4 gap-y-2 mb-4> !-- publish date --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:calendar-today-outline-rounded> use href#ai:material-symbols:calendar-today-outline-rounded>/use> /svg> /div> span classtext-50 text-sm font-medium>2025-01-03/span> /div> !-- update date --> !-- categories --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:book-2-outline-rounded> use href#ai:material-symbols:book-2-outline-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> a href/archive/?category%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%20%EB%B4%87 aria-labelView all posts in the 카카오톡 봇 category classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 카카오톡 봇 /a> /div> /div> !-- tags --> div classitems-center hidden md:flex> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:tag-rounded> use href#ai:material-symbols:tag-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> div classhidden mx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EA%B0%80%EC%9D%B4%EB%93%9C aria-labelView all posts with the 가이드 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 가이드 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D aria-labelView all posts with the 프로그래밍 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 프로그래밍 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%20%EB%B4%87 aria-labelView all posts with the 카카오톡 봇 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 카카오톡 봇 /a> /div> /div> /div> !-- description --> div classtransition text-75 mb-3.5 pr-4 data-astro-cid-iyiqi2so style--coverWidth: 28%;> 안드로이드 네이티브 DB기반 봇 프레임워크 /div> !-- word count and read time --> div classtext-sm text-black/30 dark:text-white/30 flex gap-4 transition data-astro-cid-iyiqi2so style--coverWidth: 28%;> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 2054 단어 /div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;>|/div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 10 분 /div> /div> /div> a href/posts/iris/ aria-labeliris 설치하기 class!hidden md:!flex btn-regular w-3.25rem absolute right-3 top-3 bottom-3 rounded-xl bg-var(--enter-btn-bg) hover:bg-var(--enter-btn-bg-hover) active:bg-var(--enter-btn-bg-active) active:scale-95 data-astro-cid-iyiqi2so style--coverWidth: 28%;> svg width1em height1em viewBox0 0 24 24 classtransition text-var(--primary) text-4xl mx-auto data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> /div> div classtransition border-t-1px border-dashed mx-6 border-black/10 dark:border-white/0.15 last:border-t-0 md:hidden data-astro-cid-iyiqi2so style--coverWidth: 28%;>/div> div classcard-base flex flex-col-reverse md:flex-col w-full rounded-var(--radius-large) overflow-hidden relative onload-animation styleanimation-delay: calc(var(--content-delay) + 200ms);; --coverWidth: 28%; data-astro-cid-iyiqi2so> div classpl-6 md:pl-9 pr-6 md:pr-2 pt-6 md:pt-7 pb-6 relative w-full md:w-calc(100%_-_52px_-_12px) data-astro-cid-iyiqi2so style--coverWidth: 28%;> a href/posts/irispy-client/ classtransition group w-full block font-bold mb-3 text-3xl text-90 hover:text-var(--primary) dark:hover:text-var(--primary) active:text-var(--title-active) dark:active:text-var(--title-active) before:w-1 before:h-5 before:rounded-md before:bg-var(--primary) before:absolute before:top-35px before:left-18px before:hidden md:before:block data-astro-cid-iyiqi2so style--coverWidth: 28%;> irispy-client 레퍼런스 svg width1em height1em viewBox0 0 24 24 classinline text-2rem text-var(--primary) md:hidden translate-y-0.5 absolute data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> svg width1em height1em viewBox0 0 24 24 classtext-var(--primary) text-2rem transition hidden md:inline absolute translate-y-0.5 opacity-0 group-hover:opacity-100 -translate-x-1 group-hover:translate-x-0 data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> !-- metadata --> div classflex flex-wrap text-neutral-500 dark:text-neutral-400 items-center gap-4 gap-x-4 gap-y-2 mb-4> !-- publish date --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:calendar-today-outline-rounded> use href#ai:material-symbols:calendar-today-outline-rounded>/use> /svg> /div> span classtext-50 text-sm font-medium>2025-01-02/span> /div> !-- update date --> !-- categories --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:book-2-outline-rounded> use href#ai:material-symbols:book-2-outline-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> a href/archive/?category%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%20%EB%B4%87 aria-labelView all posts in the 카카오톡 봇 category classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 카카오톡 봇 /a> /div> /div> !-- tags --> div classitems-center hidden md:flex> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:tag-rounded> use href#ai:material-symbols:tag-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> div classhidden mx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EA%B0%80%EC%9D%B4%EB%93%9C aria-labelView all posts with the 가이드 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 가이드 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D aria-labelView all posts with the 프로그래밍 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 프로그래밍 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%20%EB%B4%87 aria-labelView all posts with the 카카오톡 봇 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 카카오톡 봇 /a> /div> /div> /div> !-- description --> div classtransition text-75 mb-3.5 pr-4 data-astro-cid-iyiqi2so style--coverWidth: 28%;> Iris 카카오톡봇 개발을 위한 Python 라이브러리 /div> !-- word count and read time --> div classtext-sm text-black/30 dark:text-white/30 flex gap-4 transition data-astro-cid-iyiqi2so style--coverWidth: 28%;> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 1252 단어 /div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;>|/div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 6 분 /div> /div> /div> a href/posts/irispy-client/ aria-labelirispy-client 레퍼런스 class!hidden md:!flex btn-regular w-3.25rem absolute right-3 top-3 bottom-3 rounded-xl bg-var(--enter-btn-bg) hover:bg-var(--enter-btn-bg-hover) active:bg-var(--enter-btn-bg-active) active:scale-95 data-astro-cid-iyiqi2so style--coverWidth: 28%;> svg width1em height1em viewBox0 0 24 24 classtransition text-var(--primary) text-4xl mx-auto data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> /div> div classtransition border-t-1px border-dashed mx-6 border-black/10 dark:border-white/0.15 last:border-t-0 md:hidden data-astro-cid-iyiqi2so style--coverWidth: 28%;>/div> div classcard-base flex flex-col-reverse md:flex-col w-full rounded-var(--radius-large) overflow-hidden relative onload-animation styleanimation-delay: calc(var(--content-delay) + 250ms);; --coverWidth: 28%; data-astro-cid-iyiqi2so> div classpl-6 md:pl-9 pr-6 md:pr-2 pt-6 md:pt-7 pb-6 relative w-full md:w-calc(100%_-_52px_-_12px) data-astro-cid-iyiqi2so style--coverWidth: 28%;> a href/posts/faq/ classtransition group w-full block font-bold mb-3 text-3xl text-90 hover:text-var(--primary) dark:hover:text-var(--primary) active:text-var(--title-active) dark:active:text-var(--title-active) before:w-1 before:h-5 before:rounded-md before:bg-var(--primary) before:absolute before:top-35px before:left-18px before:hidden md:before:block data-astro-cid-iyiqi2so style--coverWidth: 28%;> 자주 묻는 질문 svg width1em height1em viewBox0 0 24 24 classinline text-2rem text-var(--primary) md:hidden translate-y-0.5 absolute data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> svg width1em height1em viewBox0 0 24 24 classtext-var(--primary) text-2rem transition hidden md:inline absolute translate-y-0.5 opacity-0 group-hover:opacity-100 -translate-x-1 group-hover:translate-x-0 data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> !-- metadata --> div classflex flex-wrap text-neutral-500 dark:text-neutral-400 items-center gap-4 gap-x-4 gap-y-2 mb-4> !-- publish date --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:calendar-today-outline-rounded> use href#ai:material-symbols:calendar-today-outline-rounded>/use> /svg> /div> span classtext-50 text-sm font-medium>2025-01-01/span> /div> !-- update date --> !-- categories --> div classflex items-center> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:book-2-outline-rounded> use href#ai:material-symbols:book-2-outline-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> a href/archive/?category%EC%A0%95%EC%B1%85%2F%EC%95%88%EB%82%B4 aria-labelView all posts in the 정책/안내 category classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 정책/안내 /a> /div> /div> !-- tags --> div classitems-center hidden md:flex> div classmeta-icon> svg width1em height1em viewBox0 0 24 24 classtext-xl data-iconmaterial-symbols:tag-rounded> use href#ai:material-symbols:tag-rounded>/use> /svg> /div> div classflex flex-row flex-nowrap items-center> div classhidden mx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%A0%95%EC%B1%85 aria-labelView all posts with the 정책 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 정책 /a>div classmx-1.5 text-var(--meta-divider) text-sm>//div> a href/archive/?tag%EC%95%88%EB%82%B4 aria-labelView all posts with the 안내 tag classlink-lg transition text-50 text-sm font-medium hover:text-var(--primary) dark:hover:text-var(--primary) whitespace-nowrap> 안내 /a> /div> /div> /div> !-- description --> div classtransition text-75 mb-3.5 pr-4 data-astro-cid-iyiqi2so style--coverWidth: 28%;> 궁금하신 점, 여기서 해결하세요 /div> !-- word count and read time --> div classtext-sm text-black/30 dark:text-white/30 flex gap-4 transition data-astro-cid-iyiqi2so style--coverWidth: 28%;> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 386 단어 /div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;>|/div> div data-astro-cid-iyiqi2so style--coverWidth: 28%;> 2 분 /div> /div> /div> a href/posts/faq/ aria-label자주 묻는 질문 class!hidden md:!flex btn-regular w-3.25rem absolute right-3 top-3 bottom-3 rounded-xl bg-var(--enter-btn-bg) hover:bg-var(--enter-btn-bg-hover) active:bg-var(--enter-btn-bg-active) active:scale-95 data-astro-cid-iyiqi2so style--coverWidth: 28%;> svg width1em height1em viewBox0 0 24 24 classtransition text-var(--primary) text-4xl mx-auto data-astro-cid-iyiqi2sotrue data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> /div> div classtransition border-t-1px border-dashed mx-6 border-black/10 dark:border-white/0.15 last:border-t-0 md:hidden data-astro-cid-iyiqi2so style--coverWidth: 28%;>/div> /div> div classmx-auto onload-animation flex flex-row gap-3 justify-center styleanimation-delay: calc(var(--content-delay) + 300ms)> a href classbtn-card overflow-hidden rounded-lg text-var(--primary) w-11 h-11 disabled> svg width1em height1em classtext-1.75rem data-iconmaterial-symbols:chevron-left-rounded> symbol idai:material-symbols:chevron-left-rounded viewBox0 0 24 24>path fillcurrentColor dm10.8 12l3.9 3.9q.275.275.275.7t-.275.7t-.7.275t-.7-.275l-4.6-4.6q-.15-.15-.212-.325T8.425 12t.063-.375t.212-.325l4.6-4.6q.275-.275.7-.275t.7.275t.275.7t-.275.7z/>/symbol>use href#ai:material-symbols:chevron-left-rounded>/use> /svg> /a> div classbg-var(--card-bg) flex flex-row rounded-lg items-center text-neutral-700 dark:text-neutral-300 font-bold> div classh-11 w-11 rounded-lg bg-var(--primary) flex items-center justify-center font-bold text-white dark:text-black/70> 1 /div> /div> a href classbtn-card overflow-hidden rounded-lg text-var(--primary) w-11 h-11 disabled> svg width1em height1em viewBox0 0 24 24 classtext-1.75rem data-iconmaterial-symbols:chevron-right-rounded> use href#ai:material-symbols:chevron-right-rounded>/use> /svg> /a> /div> div classfooter col-span-2 onload-animation hidden lg:block> !--div classborder-t border-var(--primary) mx-16 border-dashed py-8 max-w-var(--page-width) flex flex-col items-center justify-center px-6>-->div classtransition border-t border-black/10 dark:border-white/15 my-10 border-dashed mx-32>/div> !--div classtransition bg-oklch(92%_0.01_var(--hue)) dark:bg-black rounded-2xl py-8 mt-4 mb-8 flex flex-col items-center justify-center px-6>--> div classtransition border-dashed border-oklch(85%_0.01_var(--hue)) dark:border-white/15 rounded-2xl mb-12 flex flex-col items-center justify-center px-6> div classtransition text-50 text-sm text-center>© span idcopyright-year>2025/span> PonyoBot. All Rights Reserved. /a classtransition link text-var(--primary) font-medium target_blank href/rss.xml>RSS/a> /a classtransition link text-var(--primary) font-medium target_blank href/sitemap-index.xml>Sitemap/a>br>Powered bya classtransition link text-var(--primary) font-medium target_blank hrefhttps://astro.build>Astro/a> &a classtransition link text-var(--primary) font-medium target_blank hrefhttps://github.com/saicaca/fuwari>Fuwari/a> /div> /div> /div> /div> /main> div classfooter col-span-2 onload-animation block lg:hidden> !--div classborder-t border-var(--primary) mx-16 border-dashed py-8 max-w-var(--page-width) flex flex-col items-center justify-center px-6>-->div classtransition border-t border-black/10 dark:border-white/15 my-10 border-dashed mx-32>/div> !--div classtransition bg-oklch(92%_0.01_var(--hue)) dark:bg-black rounded-2xl py-8 mt-4 mb-8 flex flex-col items-center justify-center px-6>--> div classtransition border-dashed border-oklch(85%_0.01_var(--hue)) dark:border-white/15 rounded-2xl mb-12 flex flex-col items-center justify-center px-6> div classtransition text-50 text-sm text-center>© span idcopyright-year>2025/span> PonyoBot. All Rights Reserved. /a classtransition link text-var(--primary) font-medium target_blank href/rss.xml>RSS/a> /a classtransition link text-var(--primary) font-medium target_blank href/sitemap-index.xml>Sitemap/a>br>Powered bya classtransition link text-var(--primary) font-medium target_blank hrefhttps://astro.build>Astro/a> &a classtransition link text-var(--primary) font-medium target_blank hrefhttps://github.com/saicaca/fuwari>Fuwari/a> /div> /div> /div> /div> !-- There cant be a filter on parent element, or it will break `fixed` -->div classback-to-top-wrapper hidden lg:block data-astro-cid-eymb5ayk> div idback-to-top-btn classback-to-top-btn hide flex items-center rounded-2xl overflow-hidden transition onclickbackToTop() data-astro-cid-eymb5ayk> button aria-labelBack to Top classbtn-card h-3.75rem w-3.75rem data-astro-cid-eymb5ayk> svg width1em height1em classmx-auto data-astro-cid-eymb5ayktrue data-iconmaterial-symbols:keyboard-arrow-up-rounded> symbol idai:material-symbols:keyboard-arrow-up-rounded viewBox0 0 24 24>path fillcurrentColor dm12 10.8l-3.9 3.9q-.275.275-.7.275t-.7-.275t-.275-.7t.275-.7l4.6-4.6q.3-.3.7-.3t.7.3l4.6 4.6q.275.275.275.7t-.275.7t-.7.275t-.7-.275z/>/symbol>use href#ai:material-symbols:keyboard-arrow-up-rounded>/use> /svg> /button> /div> /div> script>function backToTop() { window.scroll({ top: 0, behavior: smooth });}/script> /div> /div> div classabsolute w-full z-0 hidden 2xl:block> div classrelative max-w-var(--page-width) mx-auto> !-- TOC component --> div idtoc-wrapper classhidden lg:block transition absolute top-0 -right-var(--toc-width) w-var(--toc-width) items-center toc-hide> div idtoc-inner-wrapper classfixed top-14 w-var(--toc-width) h-calc(100vh_-_20rem) overflow-y-scroll overflow-x-hidden hide-scrollbar> div idtoc classw-full h-full transition-swup-fade > div classh-8 w-full>/div> script typemodule>class l extends HTMLElement{tocElnull;visibleClassvisible;observer;anchorNavTargetnull;headingIdxMapnew Map;headings;sections;tocEntries;active;activeIndicatornull;constructor(){super(),this.observernew IntersectionObserver(this.markVisibleSection,{threshold:0})}markVisibleSectiont>{t.forEach(e>{const ie.target.children0?.getAttribute(id),si?this.headingIdxMap.get(i):void 0;s!null&&(this.activese.isIntersecting),e.isIntersecting&&this.anchorNavTargete.target.firstChild&&(this.anchorNavTargetnull)}),this.active.includes(!0)||this.fallback(),this.update()};toggleActiveHeading()>{let tthis.active.length-1,ethis.active.length-1,i-1;for(;t>0&&!this.activet;)this.tocEntriest.classList.remove(this.visibleClass),t--;for(;t>0&&this.activet;)this.tocEntriest.classList.add(this.visibleClass),eMath.min(e,t),iMath.max(i,t),t--;for(;t>0;)this.tocEntriest.classList.remove(this.visibleClass),t--;if(e>i)this.activeIndicator?.setAttribute(style,opacity: 0);else{let sthis.tocEl?.getBoundingClientRect().top||0,nthis.tocEl?.scrollTop||0,othis.tocEntriese.getBoundingClientRect().top-s+n,cthis.tocEntriesi.getBoundingClientRect().bottom-s+n;this.activeIndicator?.setAttribute(style,`top: ${o}px; height: ${c-o}px`)}};scrollToActiveHeading()>{if(this.anchorNavTarget||!this.tocEl)return;const tdocument.querySelectorAll(`#toc .${this.visibleClass}`);if(!t.length)return;const et0,itt.length-1,sthis.tocEl.clientHeight;let n;i.getBoundingClientRect().bottom-e.getBoundingClientRect().top.9*s?ne.offsetTop-32:ni.offsetTop-s*.8,this.tocEl.scrollTo({top:n,left:0,behavior:smooth})};update()>{requestAnimationFrame(()>{this.toggleActiveHeading(),this.scrollToActiveHeading()})};fallback()>{if(this.sections.length)for(let t0;tthis.sections.length;t++){let ethis.sectionst.getBoundingClientRect().top,ithis.sectionst.getBoundingClientRect().bottom;if(this.isInRange(e,0,window.innerHeight)||this.isInRange(i,0,window.innerHeight)||e0&&i>window.innerHeight)this.markActiveHeading(t);else if(e>window.innerHeight)break}};markActiveHeadingt>{this.activet!0};handleAnchorClickt>{const et.composedPath().find(i>i instanceof HTMLAnchorElement);if(e){const idecodeURIComponent(e.hash?.substring(1)),sthis.headingIdxMap.get(i);s!void 0?this.anchorNavTargetthis.headingss:this.anchorNavTargetnull}};isInRange(t,e,i){return et&&ti}connectedCallback(){const tdocument.querySelector(.prose);t?t.addEventListener(animationend,()>{this.init()},{once:!0}):console.debug(Animation element not found)}init(){if(this.tocEldocument.getElementById(toc-inner-wrapper),!!this.tocEl&&(this.tocEl.addEventListener(click,this.handleAnchorClick,{capture:!0}),this.activeIndicatordocument.getElementById(active-indicator),this.tocEntriesArray.from(document.querySelectorAll(#toc ahref^#)),this.tocEntries.length!0)){this.sectionsnew Array(this.tocEntries.length),this.headingsnew Array(this.tocEntries.length);for(let t0;tthis.tocEntries.length;t++){const edecodeURIComponent(this.tocEntriest.hash?.substring(1)),idocument.getElementById(e),si?.parentElement;i instanceof HTMLElement&&s instanceof HTMLElement&&(this.headingsti,this.sectionsts,this.headingIdxMap.set(e,t))}this.activenew Array(this.tocEntries.length).fill(!1),this.sections.forEach(t>this.observer.observe(t)),this.fallback(),this.update()}}disconnectedCallback(){this.sections.forEach(t>this.observer.unobserve(t)),this.observer.disconnect(),this.tocEl?.removeEventListener(click,this.handleAnchorClick)}}customElements.get(table-of-contents)||customElements.define(table-of-contents,l);/script> div classh-8 w-full>/div> /div> /div> /div> !-- #toc needs to exist for Swup to work normally --> /div> /div> !-- increase the page height during page transition to prevent the scrolling animation from jumping --> div idpage-height-extend classhidden h-300vh data-astro-cid-sckkx6r4 style--bannerOffset: 15vh;--banner-height-home: 65vh;--banner-height: 35vh;--configHue: 175;--page-width: 75rem;>/div> script typemodule src/_astro/Layout.astro_astro_type_script_index_0_lang.DAHrxWCB.js>/script> script typemodule src/_astro/Layout.astro_astro_type_script_index_1_lang.BM-b88U1.js>/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]