{"id":2,"date":"2026-02-04T11:39:08","date_gmt":"2026-02-04T08:39:08","guid":{"rendered":"https:\/\/facadium.com.tr\/arduino\/?page_id=2"},"modified":"2026-03-02T13:57:25","modified_gmt":"2026-03-02T10:57:25","slug":"notebook","status":"publish","type":"page","link":"https:\/\/facadium.com.tr\/arduino\/notebook\/","title":{"rendered":"Notebook"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2\" class=\"elementor elementor-2\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6fc0b29 e-flex e-con-boxed e-con e-parent\" data-id=\"6fc0b29\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3bc330e elementor-widget elementor-widget-html\" data-id=\"3bc330e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n  .nb-count{\r\n    opacity:.7;\r\n    font-weight:600;\r\n    margin-left:6px;\r\n  }\r\n  .nb-nav a.is-active .nb-count{ opacity:1; }\r\n\r\n  .nb-hero{margin-bottom:18px}\r\n  .nb-hero h1{margin:0 0 6px 0;font-size:34px;line-height:1.15}\r\n  .nb-hero p{margin:0 0 12px 0;color:#555}\r\n  .nb-wrap{display:flex;gap:24px;align-items:flex-start}\r\n  .nb-left{width:280px;position:sticky;top:90px}\r\n  .nb-right{flex:1;min-width:0}\r\n  .nb-search{width:100%;padding:12px 14px;border:1px solid #ddd;border-radius:12px;outline:none}\r\n  .nb-search:focus{border-color:#bbb}\r\n  .nb-nav{margin-top:14px;border:1px solid #eee;border-radius:14px;padding:12px;background:#fff}\r\n  .nb-nav .cap{font-weight:700;margin:0 0 8px 0}\r\n  .nb-nav a{display:block;padding:8px 10px;border-radius:10px;color:#111;text-decoration:none}\r\n  .nb-nav a:hover{background:#f6f6f6}\r\n  .nb-nav a.is-active{background:#111;color:#fff}\r\n\r\n  .nb-section{margin-bottom:34px}\r\n  .nb-section h2{margin:0 0 10px 0;font-size:22px}\r\n  .nb-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}\r\n\r\n  \/* Kart\u0131n tamam\u0131 t\u0131klanabilir *\/\r\n  .nb-card{\r\n    display:block;\r\n    border:1px solid #eee;\r\n    border-radius:16px;\r\n    padding:14px;\r\n    background:#fff;\r\n    text-decoration:none;\r\n    color:inherit;\r\n    transition: all .2s ease;\r\n  }\r\n  .nb-card:hover{\r\n    border-color:#111;\r\n    transform:translateY(-2px);\r\n  }\r\n  .nb-card:focus{\r\n    outline:2px solid #111;\r\n    outline-offset:2px;\r\n  }\r\n\r\n  .nb-card .t{font-weight:800;margin:0 0 6px 0}\r\n  .nb-card .d{color:#555;font-size:14px;line-height:1.45;margin:0}\r\n\r\n  .nb-muted{color:#666;font-size:14px}\r\n\r\n  @media (max-width: 900px){\r\n    .nb-wrap{flex-direction:column}\r\n    .nb-left{width:100%;position:relative;top:auto}\r\n    .nb-grid{grid-template-columns:1fr}\r\n  }\r\n<\/style>\r\n\r\n<div class=\"nb-hero\">\r\n  <h1>Arduino Notebook<\/h1>\r\n  <p>Fonksiyonlar, \u00f6rnekler, ipu\u00e7lar\u0131 ve k\u0131sa notlar: arad\u0131\u011f\u0131n\u0131 h\u0131zl\u0131ca bul, hemen uygula.<\/p>\r\n  <input id=\"nbSearch\" class=\"nb-search\" type=\"search\" placeholder=\"Notebook i\u00e7inde ara\u2026 (\u00f6rn: millis, PWM, debounce)\">\r\n  <div id=\"nbResultInfo\" class=\"nb-muted\" style=\"margin-top:10px; display:none;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"nb-wrap\">\r\n  <aside class=\"nb-left\">\r\n    <nav class=\"nb-nav nb-nav--arduino\" id=\"nbNav\">\r\n      <p class=\"cap\">Kategoriler<\/p>\r\n      <div class=\"nb-muted\">Y\u00fckleniyor\u2026<\/div>\r\n    <\/nav>\r\n  <\/aside>\r\n\r\n  <main class=\"nb-right\" id=\"nbContent\">\r\n    <div class=\"nb-muted\">\u0130\u00e7erik y\u00fckleniyor\u2026<\/div>\r\n  <\/main>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  \/\/ \u2705 REST yerine AJAX endpoint (\u00fcye giri\u015fini kesin g\u00f6r\u00fcr)\r\n  const API = new URL(\"\/arduino\/wp-admin\/admin-ajax.php\", window.location.origin);\r\n  API.searchParams.set(\"action\", \"facadium_notebook_list\");\r\n\r\n  const elNav = document.getElementById(\"nbNav\");\r\n  const elContent = document.getElementById(\"nbContent\");\r\n  const elSearch = document.getElementById(\"nbSearch\");\r\n  const elResultInfo = document.getElementById(\"nbResultInfo\");\r\n\r\n  function esc(s){\r\n    return String(s ?? \"\")\r\n      .replaceAll(\"&\",\"&amp;\").replaceAll(\"<\",\"&lt;\")\r\n      .replaceAll(\">\",\"&gt;\").replaceAll('\"',\"&quot;\")\r\n      .replaceAll(\"'\",\"&#039;\");\r\n  }\r\n\r\n  function makeIdFromSlug(slug){\r\n    return \"cat-\" + String(slug ?? \"\").replace(\/[^a-z0-9\\-]\/gi,\"-\").toLowerCase();\r\n  }\r\n\r\n  function norm(s){ return (s||\"\").toLowerCase().trim(); }\r\n\r\n  async function load(){\r\n    \/\/ cache bust + (opsiyonel) cat deste\u011fi ayn\u0131 kals\u0131n\r\n    API.searchParams.set(\"_\", Date.now());\r\n\r\n    const res = await fetch(API.toString(), {\r\n      headers: { \"Accept\": \"application\/json\" },\r\n      credentials: \"include\",\r\n      cache: \"no-store\"\r\n    });\r\n\r\n    if(!res.ok) throw new Error(\"Notebook API hata: \" + res.status);\r\n\r\n    const json = await res.json();\r\n\r\n    \/\/ admin-ajax: { success:true, data:{ ok:true, data:[...] } }\r\n    if(!json || !json.success || !json.data || !json.data.ok) {\r\n      throw new Error(\"Notebook API ok de\u011fil\");\r\n    }\r\n\r\n    return json.data.data || [];\r\n  }\r\n\r\n  function render(data){\r\n    \/\/ NAV (kategori + adet)\r\n    const navLinks = data.map(group=>{\r\n      const id = makeIdFromSlug(group.term.slug);\r\n      const count = Array.isArray(group.items) ? group.items.length : 0;\r\n      return `<a href=\"#${id}\">${esc(group.term.name)} <span class=\"nb-count\">(${count})<\/span><\/a>`;\r\n    }).join(\"\");\r\n\r\n    elNav.innerHTML = `<p class=\"cap\">Kategoriler<\/p>${navLinks || '<div class=\"nb-muted\">Kategori yok.<\/div>'}`;\r\n\r\n    \/\/ CONTENT (kartlar)\r\n    const sections = data.map(group=>{\r\n      const id = makeIdFromSlug(group.term.slug);\r\n\r\n      const cards = (group.items || []).map(item=>{\r\n        const k = `${item.title} ${item.excerpt} ${group.term.name}`;\r\n        return `\r\n          <a class=\"nb-card\" href=\"${esc(item.permalink)}\" data-k=\"${esc(k)}\">\r\n            <p class=\"t\">${esc(item.title)}<\/p>\r\n            <p class=\"d\">${esc(item.excerpt)}<\/p>\r\n          <\/a>`;\r\n      }).join(\"\");\r\n\r\n      return `\r\n        <section id=\"${id}\" class=\"nb-section\">\r\n          <h2>${esc(group.term.name)}<\/h2>\r\n          <div class=\"nb-grid\">${cards || '<div class=\"nb-muted\">Bu kategoride i\u00e7erik yok.<\/div>'}<\/div>\r\n        <\/section>`;\r\n    }).join(\"\");\r\n\r\n    elContent.innerHTML = sections || '<div class=\"nb-muted\">\u0130\u00e7erik bulunamad\u0131.<\/div>';\r\n\r\n    \/\/ Active link on scroll\r\n    const links = Array.from(elNav.querySelectorAll(\"a[href^='#']\"));\r\n    const sectionsEls = links.map(a => document.querySelector(a.getAttribute(\"href\"))).filter(Boolean);\r\n\r\n    const obs = new IntersectionObserver((entries)=>{\r\n      entries.forEach(ent=>{\r\n        if(ent.isIntersecting){\r\n          links.forEach(l=>l.classList.remove(\"is-active\"));\r\n          const active = elNav.querySelector(`a[href=\"#${ent.target.id}\"]`);\r\n          if(active) active.classList.add(\"is-active\");\r\n        }\r\n      });\r\n    }, {rootMargin:\"-30% 0px -60% 0px\", threshold:0});\r\n\r\n    sectionsEls.forEach(s=>obs.observe(s));\r\n\r\n    \/\/ Search filter + sonu\u00e7 sayac\u0131 + \"sonu\u00e7 yok\" mesaj\u0131\r\n    const cardsAll = Array.from(document.querySelectorAll(\".nb-card\"));\r\n    const sectionsAll = Array.from(document.querySelectorAll(\".nb-section\"));\r\n\r\n    function setResultInfo(q, visibleCount){\r\n      const qq = norm(q);\r\n      if(!qq){\r\n        elResultInfo.style.display = \"none\";\r\n        elResultInfo.textContent = \"\";\r\n        return;\r\n      }\r\n      elResultInfo.style.display = \"\";\r\n      elResultInfo.textContent = `${visibleCount} sonu\u00e7 bulundu`;\r\n    }\r\n\r\n    function applyFilter(q){\r\n      const qq = norm(q);\r\n\r\n      const oldNo = document.getElementById(\"nbNoResult\");\r\n      if (oldNo) oldNo.remove();\r\n\r\n      let visibleCount = 0;\r\n      cardsAll.forEach(card=>{\r\n        const hay = norm((card.getAttribute(\"data-k\") || \"\") + \" \" + card.innerText);\r\n        const ok = !qq || hay.includes(qq);\r\n        card.style.display = ok ? \"\" : \"none\";\r\n        if (ok) visibleCount++;\r\n      });\r\n\r\n      sectionsAll.forEach(sec=>{\r\n        const visible = sec.querySelectorAll(\".nb-card:not([style*='display: none'])\").length > 0;\r\n        sec.style.display = visible ? \"\" : \"none\";\r\n      });\r\n\r\n      setResultInfo(q, qq ? visibleCount : 0);\r\n\r\n      if (qq && visibleCount === 0) {\r\n        elContent.insertAdjacentHTML(\r\n          \"afterbegin\",\r\n          `<div class=\"nb-muted\" id=\"nbNoResult\" style=\"margin-bottom:12px;\">Sonu\u00e7 bulunamad\u0131.<\/div>`\r\n        );\r\n      }\r\n    }\r\n\r\n    elSearch.addEventListener(\"input\", (e) => applyFilter(e.target.value));\r\n\r\n    if (location.hash === \"\" && links[0]) {\r\n      links[0].classList.add(\"is-active\");\r\n    }\r\n  }\r\n\r\n  load().then(render).catch(err=>{\r\n    console.error(err);\r\n    elNav.innerHTML = `<p class=\"cap\">Kategoriler<\/p><div class=\"nb-muted\">API hatas\u0131. Console\u2019a bak.<\/div>`;\r\n    elContent.innerHTML = `<div class=\"nb-muted\">\u0130\u00e7erik y\u00fcklenemedi.<\/div>`;\r\n  });\r\n\r\n  \/\/ Men\u00fc t\u0131klamalar\u0131nda yumu\u015fak kayd\u0131rma (header offset)\r\n  const HEADER_OFFSET = 80;\r\n  elNav.addEventListener(\"click\", (ev) => {\r\n    const a = ev.target.closest('a[href^=\"#\"]');\r\n    if(!a) return;\r\n    ev.preventDefault();\r\n    const id = a.getAttribute(\"href\").slice(1);\r\n    const target = document.getElementById(id);\r\n    if(!target) return;\r\n\r\n    const y = target.getBoundingClientRect().top + window.pageYOffset - HEADER_OFFSET;\r\n    window.history.pushState(null, \"\", \"#\" + id);\r\n    window.scrollTo({ top: y, behavior: \"smooth\" });\r\n  });\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Arduino Notebook Fonksiyonlar, \u00f6rnekler, ipu\u00e7lar\u0131 ve k\u0131sa notlar: arad\u0131\u011f\u0131n\u0131 h\u0131zl\u0131ca bul, hemen uygula. Kategoriler Y\u00fckleniyor\u2026 \u0130\u00e7erik y\u00fckleniyor\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":48,"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":2226,"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/pages\/2\/revisions\/2226"}],"wp:attachment":[{"href":"https:\/\/facadium.com.tr\/arduino\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}