{"version":1,"pages":[{"id":"-M0u4DAoMxSUCJlTNPBv","title":"本書簡介","pathname":"/web_advance","siteSpaceId":"sitesp_0S6s9","description":"https://easonwang.gitbook.io/web_advance/"},{"id":"-M0u4FnICSr-WEQW_oXN","title":"Node.js 部分","pathname":"/web_advance/chapter1","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"FmXfKkNCUqcZl1CebQqW","title":"Node 版本管理","pathname":"/web_advance/chapter1/node-ban-ben-guan-li","siteSpaceId":"sitesp_0S6s9","description":"版本管理","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M14TtGu5bIoBV0j7A7n","title":"使用NPM","pathname":"/web_advance/chapter1/shi-yong-npm","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M14TtGvKbM6dt50VoZB","title":"Yarn","pathname":"/web_advance/chapter1/shi-yong-npm/yarn","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"},{"label":"使用NPM"}]},{"id":"-M0u4FnaslggFtHL2Y6z","title":"開始Node","pathname":"/web_advance/chapter1/kai_shi_node","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-MF9uBAeDHIXhUsDGFZP","title":"Worker Thread","pathname":"/web_advance/chapter1/worker-thread","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-MhD9wY2JytjR-N-THOB","title":"REPL","pathname":"/web_advance/chapter1/repl","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-MDTPoGxm2Fexeycpfgd","title":"TCP","pathname":"/web_advance/chapter1/tcp","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M0u4FnWoz-GvBUfXHA6","title":"path","pathname":"/web_advance/chapter1/path","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M0u4FnQlFMbXXRmhNtS","title":"Cluster and Child_process","pathname":"/web_advance/chapter1/cluster-and-childprocess","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M0u4FnPF2rVykj7UmDA","title":"assert (自訂拋出的錯誤)","pathname":"/web_advance/chapter1/assert_zi_ding_pao_chu_de_cuo_8aa429","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M14TtGjFmjITibe1uKj","title":"Stream（流）","pathname":"/web_advance/chapter1/stream-liu","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M14TtGiRU5nT4rytFGU","title":"util (工具類)","pathname":"/web_advance/chapter1/util-gong-ju-lei","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M0u4FnLoFrVy2vqAdaa","title":"EventEmitter","pathname":"/web_advance/chapter1/eventemitter","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M14TtGfGY6EQX0X6K_Z","title":"fs 文件操作","pathname":"/web_advance/chapter1/wen-jian-cao-zuo","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M0u4FnJV4aTTE2iCK5R","title":"Buffer","pathname":"/web_advance/chapter1/buffer","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-MFmr7U47fs03rMx3rP4","title":"Binary Diff","pathname":"/web_advance/chapter1/buffer/binary-diff","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"},{"label":"Buffer"}]},{"id":"-MFmgOIJsWYWkPV_bUHZ","title":"查看 Binary 檔案內容","pathname":"/web_advance/chapter1/buffer/cha-kan-binary-dang-an-nei-rong","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"},{"label":"Buffer"}]},{"id":"-M0u4FnRhal_tXLzooTv","title":"Process (進程)","pathname":"/web_advance/chapter1/process_jin_7a0b29","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"kEjmHUWxn6EkfptivA5A","title":"錯誤處理","pathname":"/web_advance/chapter1/cuo-wu-chu-li","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"Node.js 部分"}]},{"id":"-M0u4FnMNAbgxtze05TB","title":"OS","pathname":"/web_advance/os","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"uAibRn76cmHWDwRiUhtN","title":"Async Hook","pathname":"/web_advance/async-hook","siteSpaceId":"sitesp_0S6s9","description":"Node.js async hook"},{"id":"-M0u4FnUjA9MBCU-VS3j","title":"TCP","pathname":"/web_advance/tcp","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FnTyaCTdIs0uEZK","title":"HTTP","pathname":"/web_advance/http","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MMDwzyKtxR4ufYSFyJU","title":"有關爬蟲","pathname":"/web_advance/http/you-guan-pa-chong","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTTP"}]},{"id":"-MFUsw92ZawRp6yetgyK","title":"HTTP/2","pathname":"/web_advance/http/http-2","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTTP"}]},{"id":"-MEtscBRbcoupVWyamZc","title":"HTTP Protocal","pathname":"/web_advance/http/http-protocal","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTTP"}]},{"id":"-MDr557KIo1fTWABbDa6","title":"HTTPS","pathname":"/web_advance/https","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"QdstpvUEbozz58F6wfba","title":"HTTPS 流程","pathname":"/web_advance/https/https-liu-cheng","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTTPS"}]},{"id":"-MkGy4b88LpyZ5VoFJzF","title":"SSL pinning","pathname":"/web_advance/https/ssl-pinning","siteSpaceId":"sitesp_0S6s9","description":"一般的瀏覽器與手機會信任被機構簽發的證書，因為預設手機就存了一百多個， 所以 root certificate，許多家發的都會信任。 所以如果有個 proxy server 做 MITM 就很容易讀取封包。而 SSL pinning 將證書或公鑰 hash 後寫在應用程式，當server 要把公鑰傳給 app 端時會因為該公鑰無法產生跟一開始寫在 app 時的 hash 相同，於是拒絕連線。","breadcrumbs":[{"label":"HTTPS"}]},{"id":"-MSolqmb_jzz93IaL-zs","title":"HTTPS 封包解密","pathname":"/web_advance/https/https-feng-bao-jie-mi","siteSpaceId":"sitesp_0S6s9","description":"使用 Wireshark 解密 HTTPS 封包","breadcrumbs":[{"label":"HTTPS"}]},{"id":"-M9adtGDxhfG8v6x3qbt","title":"建立自簽發 HTTPS 證書","pathname":"/web_advance/https/jian-li-zi-qian-fa-https-zheng-shu","siteSpaceId":"sitesp_0S6s9","description":"自行簽發 HTTPS 憑證","breadcrumbs":[{"label":"HTTPS"}]},{"id":"-M0u4FpAcz1wtnr2sY1O","title":"幫網站加上HTTPS","pathname":"/web_advance/https/jia_shang_https","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTTPS"}]},{"id":"-M0u4FnVQAr0CRQ8RM1g","title":"HTTPS原理","pathname":"/web_advance/https/httpsyuan-li","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTTPS"}]},{"id":"-M0u4FnXDDT6wNHDSGJ-","title":"Crypto加密","pathname":"/web_advance/cryptojia_mi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtGt9lnU-OGqwFd5","title":"有關繼承","pathname":"/web_advance/you-guan-ji-cheng","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"yhgIgYXHzLHDeRojIcyh","title":"JS 基本","pathname":"/web_advance/js-ji-ben","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"ojZHnK3Jo9jOkrx5krLb","title":"JavaScript 迴圈與異步處理","pathname":"/web_advance/js-ji-ben/javascript-hui-quan-yu-yi-bu-chu-li","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"JS 基本"}]},{"id":"-M14TtGx_UU2Vt-CFQ7Z","title":"使用 Express","pathname":"/web_advance/shi-yong-express","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"OI73xfcgtBGtcZXVaYl5","title":"上傳檔案","pathname":"/web_advance/shi-yong-express/shang-chuan-dang-an","siteSpaceId":"sitesp_0S6s9","description":"上傳檔案","breadcrumbs":[{"label":"使用 Express"}]},{"id":"umHlpsa8dmZyr66e77aQ","title":"圖片伺服器","pathname":"/web_advance/shi-yong-express/tu-pian-si-fu-qi","siteSpaceId":"sitesp_0S6s9","description":"伺服器","breadcrumbs":[{"label":"使用 Express"}]},{"id":"-M0u4FncpI-WtpId9vmF","title":"簡單範例","pathname":"/web_advance/shi-yong-express/jian_dan_fan_li","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用 Express"}]},{"id":"PJjsTPtOAJnD09d3VIM9","title":"使用 Nest.js","pathname":"/web_advance/shi-yong-nest.js","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtGz8CqeBIAyuyrT","title":"使用MongoDB","pathname":"/web_advance/shi-yong-mongodb","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"k1DZzp8CnMuFYJ4fdqx9","title":"設置帳戶登入權限","pathname":"/web_advance/shi-yong-mongodb/she-zhi-zhang-hu-deng-ru-quan-xian","siteSpaceId":"sitesp_0S6s9","description":"設置帳戶登入權限","breadcrumbs":[{"label":"使用MongoDB"}]},{"id":"GcvWd5FilKzD0HpQHN3y","title":"Mongoose 框架","pathname":"/web_advance/shi-yong-mongodb/mongoose-kuang-jia","siteSpaceId":"sitesp_0S6s9","description":"框架","breadcrumbs":[{"label":"使用MongoDB"}]},{"id":"-M14TtH-JZ8kdtY3OG9Y","title":"進階Mongo","pathname":"/web_advance/shi-yong-mongodb/jin-jie-mongo","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用MongoDB"}]},{"id":"-M14TtH0sXYC4d4D6olv","title":"基本環境操作","pathname":"/web_advance/shi-yong-mongodb/ji-ben-huan-jing-cao-zuo","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用MongoDB"}]},{"id":"-M14TtH1dy2prXOWtkql","title":"MongoDB Sharding","pathname":"/web_advance/shi-yong-mongodb/mongodb-sharding","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用MongoDB"}]},{"id":"-M14TtH2NvSY9XI1tBtH","title":"使用MySQL","pathname":"/web_advance/shi-yong-mysql","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MJyU7_Dk2XTeZ9ekv2g","title":"Schema 架構設計","pathname":"/web_advance/shi-yong-mysql/schema-jia-gou-she-ji","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用MySQL"}]},{"id":"-MDD6CMo6D8-kqImYmIk","title":"SQL 語法","pathname":"/web_advance/shi-yong-mysql/sql-yu-fa","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用MySQL"}]},{"id":"eZ4puMsD7DLACKnUSJy8","title":"SQL Procedure","pathname":"/web_advance/shi-yong-mysql/sql-procedure","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"使用MySQL"}]},{"id":"-MDD64syVgsCEf4UKtIa","title":"Node.js 操作 MySQL","pathname":"/web_advance/shi-yong-mysql/node.js-cao-zuo-mysql","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用MySQL"}]},{"id":"KvldxR02I5jZl3uEI1W2","title":"使用 Sequelize","pathname":"/web_advance/shi-yong-mysql/shi-yong-sequelize","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"使用MySQL"}]},{"id":"7otZV1bf96iHICsN4xSZ","title":"DB Migration","pathname":"/web_advance/shi-yong-mysql/shi-yong-sequelize/db-migration","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"使用MySQL"},{"label":"使用 Sequelize"}]},{"id":"QZs3N4V3U7N20BTXzf7o","title":"function","pathname":"/web_advance/shi-yong-mysql/shi-yong-sequelize/function","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"使用MySQL"},{"label":"使用 Sequelize"}]},{"id":"-M14TtH3pkDRw5qNSEDe","title":"使用PostgreSQL","pathname":"/web_advance/shi-yong-postgresql","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"eAoyhlqjM6PByubGCtUe","title":"常見問題","pathname":"/web_advance/shi-yong-postgresql/chang-jian-wen-ti","siteSpaceId":"sitesp_0S6s9","description":"常見問題","breadcrumbs":[{"label":"使用PostgreSQL"}]},{"id":"-M14TtH4o2mFHzZDTDWi","title":"replica","pathname":"/web_advance/shi-yong-postgresql/replica","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用PostgreSQL"}]},{"id":"-M14TtH5sCbBmdF4J3As","title":"基本指令","pathname":"/web_advance/shi-yong-postgresql/ji-ben-zhi-ling","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用PostgreSQL"}]},{"id":"-M14TtH60gnd14Ba0tGY","title":"使用Node.js操控pg","pathname":"/web_advance/shi-yong-postgresql/shi-yong-node.js-cao-kong-pg","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用PostgreSQL"}]},{"id":"-M14TtH7wkNPS6gEhHTH","title":"SQL 基礎","pathname":"/web_advance/shi-yong-postgresql/sql-ji-chu","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用PostgreSQL"}]},{"id":"fumsETkFTP1U3HS7Jujn","title":"使用TypeORM","pathname":"/web_advance/shi-yong-typeorm","siteSpaceId":"sitesp_0S6s9"},{"id":"-M0u4FnnZRioHPy0xN1X","title":"RethinkDB","pathname":"/web_advance/rethinkdb","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"DIgdvtIkQMlGrcON64Rr","title":"CSS 深度探討","pathname":"/web_advance/css-shen-du-tan-tao","siteSpaceId":"sitesp_0S6s9","description":"深度探討"},{"id":"TtFlZ1rOGOsRqtisnCTY","title":"Width, Height","pathname":"/web_advance/css-shen-du-tan-tao/width-height","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"CSS 深度探討"}]},{"id":"-M0u4FnomuaiJ7T4h5rR","title":"React","pathname":"/web_advance/react","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MP2M39Vr4CTA3QtgUl1","title":"第三方組件","pathname":"/web_advance/react/di-san-fang-zu-jian","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-MP2M6WBIqR0aQ8rdTi9","title":"Formik","pathname":"/web_advance/react/di-san-fang-zu-jian/formik","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"},{"label":"第三方組件"}]},{"id":"-MFhpzznnZkTrw_5cAy0","title":"styled component","pathname":"/web_advance/react/styled-component","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-MFhTFQIVcoEQ5rC63C0","title":"propTypes","pathname":"/web_advance/react/proptypes","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M14TtHPA9HO8sWW4G4M","title":"React webpack 部署","pathname":"/web_advance/react/react-webpack-bu-shu","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M14TtHJY9XrSN2YJ18l","title":"React util","pathname":"/web_advance/react/react-util","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4FnpB1pTMM_lIRM6","title":"寫component並且publish","pathname":"/web_advance/react/xie-component-bing-qie-publish","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4FnqjbPOCcOuz72Q","title":"create-react-app","pathname":"/web_advance/react/create-react-app","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4FnrL-ydQR9naiuB","title":"Context API","pathname":"/web_advance/react/context-api","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4Fnsk0e3_r3yOKM5","title":"i18n","pathname":"/web_advance/react/i18n","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4FntUEZtyjny6RcO","title":"Server side render","pathname":"/web_advance/react/server-side-render","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M14TtHFb1BJmvcsMC3G","title":"Next.js教學","pathname":"/web_advance/react/next.js-jiao-xue","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4FnvjEmDBlqPy_II","title":"Higher order component 與 Recompose","pathname":"/web_advance/react/higher-order-component-yu-recompose","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4Fnw3uUF5G2JtKAL","title":"component 間 互相存取","pathname":"/web_advance/react/component-jian-hu-xiang-cun-qu","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M0u4Fnx6BH62PR7Dkg4","title":"React hook","pathname":"/web_advance/react/react-hook","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React"}]},{"id":"-M14TtHK2C0jd5G_6GhO","title":"React router","pathname":"/web_advance/react-router","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtHLI1JugNbq4iUq","title":"自己寫一個Router","pathname":"/web_advance/react-router/zi-ji-xie-yi-ge-router","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React router"}]},{"id":"-M0u4Fo0Vr_npmak5cWL","title":"Redux","pathname":"/web_advance/redux","siteSpaceId":"sitesp_0S6s9","description":"Redux is a predictable state container for JavaScript apps."},{"id":"-MFdfa_n4mB3WuFRK-UD","title":"Redux Toolkit","pathname":"/web_advance/redux/redux-toolkit","siteSpaceId":"sitesp_0S6s9","description":"前言：有關 Redux 基礎概念可以看上一篇","breadcrumbs":[{"label":"Redux"}]},{"id":"-M8a9CufJh8TqdcBlqw_","title":"小技巧","pathname":"/web_advance/redux/xiao-ji-qiao","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Redux"}]},{"id":"-M0u4Fo1HxdpMgogW_-F","title":"Redux sagas","pathname":"/web_advance/redux/redux-sagas","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Redux"}]},{"id":"-M0u4Fo20qHRAxvHOE3W","title":"compose","pathname":"/web_advance/redux/compose","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Redux"}]},{"id":"-M14TtHQ0KiUfDCGjoB-","title":"React Native","pathname":"/web_advance/react-native","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MjSJ9PY8dXRuKzpjtsB","title":"adb","pathname":"/web_advance/react-native/adb","siteSpaceId":"sitesp_0S6s9","description":"可用來操作 Android 手機的 terminal 工具","breadcrumbs":[{"label":"React Native"}]},{"id":"-MYxMBXjcqiqowFU24is","title":"InApp Billing","pathname":"/web_advance/react-native/inapp-billing","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MX6E-Kni4OpwPVB9BLN","title":"Icon","pathname":"/web_advance/react-native/icon","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MX5E_AqoIYtRPlKx8TY","title":"SVG","pathname":"/web_advance/react-native/svg","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MWMeKqvaaTwWpxCTYJH","title":"Firebase","pathname":"/web_advance/react-native/firebase","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MWhtwXrN_BPji6INECD","title":"Phone Auth","pathname":"/web_advance/react-native/firebase/phone-auth","siteSpaceId":"sitesp_0S6s9","description":"每月可以免費寄送一萬個認證簡訊。","breadcrumbs":[{"label":"React Native"},{"label":"Firebase"}]},{"id":"-MO0h4DdiO2nn9S8QupB","title":"自動化測試","pathname":"/web_advance/react-native/zi-dong-hua-ce-shi","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MNNCrO8uY5bb8MA5wl_","title":"Splash screen","pathname":"/web_advance/react-native/splash-screen","siteSpaceId":"sitesp_0S6s9","description":"當 APP 載入時會有空白頁面等待，所以需要一個畫面","breadcrumbs":[{"label":"React Native"}]},{"id":"-MM41nkmBAxN17UdhoeC","title":"Websocket","pathname":"/web_advance/react-native/websocket","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MLg-4vAKGVTlnGyruvy","title":"Googla OAuth","pathname":"/web_advance/react-native/googla-oauth","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MLg4mpHznXYxplaitjy","title":"iOS","pathname":"/web_advance/react-native/googla-oauth/ios","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"Googla OAuth"}]},{"id":"-MLg-7zJAyjedXJfljgq","title":"Android","pathname":"/web_advance/react-native/googla-oauth/android","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"Googla OAuth"}]},{"id":"-M14TtHaVpwfC1tc0BP1","title":"Facebook OAuth","pathname":"/web_advance/react-native/facebook-oauth","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MLfqUilOKElsHRFTD8D","title":"iOS","pathname":"/web_advance/react-native/facebook-oauth/ios","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"Facebook OAuth"}]},{"id":"-M0u4Foio108i9M96o66","title":"Android","pathname":"/web_advance/react-native/facebook-oauth/react-native-fb-login","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"Facebook OAuth"}]},{"id":"-MLf0l8TY2kMB_pofzsB","title":"IOS","pathname":"/web_advance/react-native/ios","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-ML73SRS1H6cY2POwNFN","title":"第三方組件","pathname":"/web_advance/react-native/di-san-fang-zu-jian","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MX6k79cvBeTwOKIr6r7","title":"Auth Code Input","pathname":"/web_advance/react-native/di-san-fang-zu-jian/auth-code-input","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"第三方組件"}]},{"id":"-MX6VKf0l-MDfrvpUNoY","title":"Country Code Picker","pathname":"/web_advance/react-native/di-san-fang-zu-jian/country-code-picker","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"第三方組件"}]},{"id":"-MTOVcrTD37NMaK27i2c","title":"onboarding screen","pathname":"/web_advance/react-native/di-san-fang-zu-jian/onboarding-screen","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"第三方組件"}]},{"id":"-ML73Vf3H0q0yqe6dwhi","title":"Toast","pathname":"/web_advance/react-native/di-san-fang-zu-jian/toast","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"第三方組件"}]},{"id":"-MJzSGTDs10jmmfSDw5n","title":"ESlint","pathname":"/web_advance/react-native/eslint","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MJvplUsiitXkCoEtGF1","title":"Push notification","pathname":"/web_advance/react-native/push-notification","siteSpaceId":"sitesp_0S6s9","description":"目前主流為使用免費的 FCM (firebase cloud message) 服務","breadcrumbs":[{"label":"React Native"}]},{"id":"-MJtj7NCkhNldag63T9Y","title":"Android 上架步驟","pathname":"/web_advance/react-native/android-shang-jia-bu-zhou","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHRhnFqPFodFPc-","title":"Expo","pathname":"/web_advance/react-native/expo","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHSbAwkMynzZ08g","title":"router","pathname":"/web_advance/react-native/router","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHTE-Q4zRpLAGFR","title":"react-navigation套件","pathname":"/web_advance/react-native/router/reactnavigation-tao-jian","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"router"}]},{"id":"-M14TtHUtga4Vrg7vLnL","title":"原生組件","pathname":"/web_advance/react-native/yuan-sheng-zu-jian","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MLqDq-F10rhF7pJbb3E","title":"RefreshControl","pathname":"/web_advance/react-native/yuan-sheng-zu-jian/refreshcontrol","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"原生組件"}]},{"id":"-MJklpuTU7yXhhkcWzwk","title":"Modal","pathname":"/web_advance/react-native/yuan-sheng-zu-jian/modal","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"原生組件"}]},{"id":"-M14TtHV80Za_dc8opn_","title":"Alert","pathname":"/web_advance/react-native/yuan-sheng-zu-jian/alert","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"原生組件"}]},{"id":"-M14TtHWoebNbVEyQsmr","title":"button","pathname":"/web_advance/react-native/yuan-sheng-zu-jian/button","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"原生組件"}]},{"id":"-M14TtHX-LT4914zq-OW","title":"KeyboardAvoidingView","pathname":"/web_advance/react-native/yuan-sheng-zu-jian/keyboardavoidingview","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"原生組件"}]},{"id":"-M14TtHYmvNm7FQFm47S","title":"Drawer","pathname":"/web_advance/react-native/yuan-sheng-zu-jian/drawer","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"原生組件"}]},{"id":"-M14TtHZOv5n9w7s37jL","title":"Image","pathname":"/web_advance/react-native/yuan-sheng-zu-jian/image","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"原生組件"}]},{"id":"-M14TtH_MqSsvYW_GMo2","title":"限制螢幕垂直與水平","pathname":"/web_advance/react-native/xian-zhi-ying-mu-chui-zhi-yu-shui-ping","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHbgOGtYJKZ_DWC","title":"NativeBase UI","pathname":"/web_advance/react-native/nativebase-ui","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHcsWLrbvtKOLr5","title":"Debug","pathname":"/web_advance/react-native/debug","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHdmjywdxOjE6NU","title":"常見問題","pathname":"/web_advance/react-native/chang-jian-wen-ti","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHeHoYFMECmYz0C","title":"Network","pathname":"/web_advance/react-native/network","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHfFkg2gDEhOn4_","title":"硬體操作","pathname":"/web_advance/react-native/ying-ti-cao-zuo","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MMrvCxnDlyOS11Dcvn5","title":"隱藏鍵盤","pathname":"/web_advance/react-native/ying-ti-cao-zuo/yin-cang-jian-pan","siteSpaceId":"sitesp_0S6s9","description":"有時跳轉到其他頁面時，鍵盤會持續開著","breadcrumbs":[{"label":"React Native"},{"label":"硬體操作"}]},{"id":"-MKXpiZDKKAplC3AefwI","title":"地理位置","pathname":"/web_advance/react-native/ying-ti-cao-zuo/di-li-wei-zhi","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"硬體操作"}]},{"id":"-M14TtHgM7RTiXyNphOk","title":"相機與圖片庫存取","pathname":"/web_advance/react-native/ying-ti-cao-zuo/xiang-ji-yu-tu-pian-ku-cun-qu","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"},{"label":"硬體操作"}]},{"id":"-M14TtHhFBYUm4rA1phv","title":"Async Storage","pathname":"/web_advance/react-native/async-storage","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M14TtHi1nQTyeYDkoYG","title":"Animation","pathname":"/web_advance/react-native/animation","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-MUwWlnD1_n0xpjr8UJu","title":"Admob","pathname":"/web_advance/react-native/admob","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"React Native"}]},{"id":"-M0u4FoOSMaOZBTBu02H","title":"JS 模組化","pathname":"/web_advance/importexport_module_exports_mo_zu_hua","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtHkOsg4NdNwjcxe","title":"使用 Webpack","pathname":"/web_advance/shi-yong-webpack","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FoQrlU3ZEEgHtCi","title":"使用 Babel","pathname":"/web_advance/babel","siteSpaceId":"sitesp_0S6s9","description":"為 js 的第三方編譯工具"},{"id":"-M0u4FoRl4OtRDBOhC2a","title":"JWT Token","pathname":"/web_advance/jwt","siteSpaceId":"sitesp_0S6s9","description":"JSON Web Token 一般用來做用戶驗證使用"},{"id":"-M0u4FoS92aSyhMeMVdP","title":"ES6 ES7 ES8","pathname":"/web_advance/es6-es7-es8","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MIvfbTkNXsKR9FS4iPr","title":"Array method","pathname":"/web_advance/es6-es7-es8/array-method","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FpTZs4topC_XNA-","title":"ES8 Async","pathname":"/web_advance/es6-es7-es8/es8-async","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-MCeLdgPvdXkmOPT4kYK","title":"ES6 Proxy","pathname":"/web_advance/es6-es7-es8/es6-proxy","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FoZPAIzRiY02G_K","title":"ES6 Object","pathname":"/web_advance/es6-es7-es8/es6_object","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FoYH4WMtLNftzhq","title":"ES6 Arrow function","pathname":"/web_advance/es6-es7-es8/es6_arrow_function","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FoXbn2kthJ8-hwW","title":"ES6 Promise","pathname":"/web_advance/es6-es7-es8/es6_promise","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FoWoTegVsaAF_TW","title":"ES6 Symbol","pathname":"/web_advance/es6-es7-es8/es6_symbol","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FoVMjYuVBewp24f","title":"ES6 Generator","pathname":"/web_advance/es6-es7-es8/es6_generator","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FoUVK2fDngcoC5K","title":"ES6 Set,Map","pathname":"/web_advance/es6-es7-es8/es6_set-map","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"-M0u4FoT7b08WJxBe7OG","title":"ES6 Class","pathname":"/web_advance/es6-es7-es8/class","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"ES6 ES7 ES8"}]},{"id":"bEDXRIv9v7W1tNZyCHty","title":"模板引擎","pathname":"/web_advance/mu-ban-yin-qing","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"h2Gp1GERhebqj3bCSeDK","title":"Mustache","pathname":"/web_advance/mu-ban-yin-qing/mustache","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"模板引擎"}]},{"id":"-M0u4Fo__TJkzgS_LPaL","title":"Handlebars.js","pathname":"/web_advance/mu-ban-yin-qing/handlebarsjs","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"模板引擎"}]},{"id":"-M0u4Foal8llg6AwBVZN","title":"EJS","pathname":"/web_advance/mu-ban-yin-qing/ejs","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"模板引擎"}]},{"id":"-M0u4Foc0_rDSz0g5bO6","title":"ESLint","pathname":"/web_advance/eslint","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FodsBAe7bRCWI0x","title":"部屬到OpenShift","pathname":"/web_advance/bu_shu_dao_openshift","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FoePi3Kn6GqCem8","title":"OpenStack","pathname":"/web_advance/openstack","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MF-z2p3pWHyQQ3qcL1N","title":"OAuth","pathname":"/web_advance/oauth","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"4V5UPELGY9jZyoL6XTCf","title":"Twitter OAuth","pathname":"/web_advance/oauth/twitter-oauth","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"OAuth"}]},{"id":"VVzOwRuDr1Fg2ksHJ0mc","title":"Google authenticator","pathname":"/web_advance/oauth/google-authenticator","siteSpaceId":"sitesp_0S6s9","description":"TOPT ( Time-based One-Time Passwords) 2FA","breadcrumbs":[{"label":"OAuth"}]},{"id":"-M0u4FogghJe1O3v6Bq7","title":"facebook oauth","pathname":"/web_advance/oauth/facebook_oauth","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"OAuth"}]},{"id":"-M0u4Foh4ynUdcP9gWW4","title":"facebook like ,share","pathname":"/web_advance/oauth/facebook_oauth/facebook-like-share","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"OAuth"},{"label":"facebook oauth"}]},{"id":"-M0u4FofkR64UB-AsCST","title":"google oauth","pathname":"/web_advance/oauth/google_oauth","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"OAuth"}]},{"id":"-M0u4Fojlmnpam3syfMr","title":"Redis","pathname":"/web_advance/redis","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtI5Q4r9OhTtMy_T","title":"做一個簡單的markdown editor","pathname":"/web_advance/zuo-yi-ge-jian-dan-de-markdown-editor","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtI61xy6wd8cUMw7","title":"Websocket","pathname":"/web_advance/websocket","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MEziVlHKZa6sS-8gQVI","title":"WebSocket 相關 Protocol","pathname":"/web_advance/websocket/websocket-xiang-guan-protocal","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Websocket"}]},{"id":"-M14TtI7niG6hHBAsUcf","title":"Sublime 安裝套件","pathname":"/web_advance/sublime-an-zhuang-tao-jian","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FonaX1cwWA0_Bj7","title":"Google  api","pathname":"/web_advance/google_speech_api","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MJjFOF2ntRpRER3SjxR","title":"Cloud Run","pathname":"/web_advance/google_speech_api/cloud-run","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4Foo33y9pMLt52k5","title":"speech api","pathname":"/web_advance/google_speech_api/speech-api","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4FopzCiagLs196r3","title":"place autocomplete","pathname":"/web_advance/google_speech_api/place-autocomplete","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4Foq2DCQEdnPgoZ7","title":"Geocode","pathname":"/web_advance/google_speech_api/geocode","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4Forer-ZpYHlyb2Y","title":"Map","pathname":"/web_advance/google_speech_api/map","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4FosxuvH7m5v5pKu","title":"React map","pathname":"/web_advance/google_speech_api/map/react-map","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"},{"label":"Map"}]},{"id":"-M0u4FotBXJb_DFVfQ1m","title":"vision api","pathname":"/web_advance/google_speech_api/vision-api","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4Fouqtpmv9iOHSXT","title":"Google-recaptcha","pathname":"/web_advance/google_speech_api/google-recaptcha","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4FovTvRhyzGX6EBA","title":"Google sheet","pathname":"/web_advance/google_speech_api/google-sheet","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google  api"}]},{"id":"-M0u4FowkSpmq0aLKZf9","title":"Instagram API","pathname":"/web_advance/instagram_api","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FoxD50UJCiQl8PW","title":"Markdown 與 code pretty js","pathname":"/web_advance/markdownyu_code_pretty_js","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MOZ1ksn7E3AmrXjBTw2","title":"HTML5","pathname":"/web_advance/html5","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MOZ1yLzuR4LnEKLClg0","title":"IntersectionObserver","pathname":"/web_advance/html5/intersectionobserver","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTML5"}]},{"id":"-M0u4FoyMlL-v8RKcpRA","title":"HTML5 audio","pathname":"/web_advance/html5/html5_audio","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTML5"}]},{"id":"-M0u4FozRmYP8uLKIH1g","title":"HTML5 Video 與 WebRTC","pathname":"/web_advance/html5/html5_video","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTML5"}]},{"id":"-MNwQc1NNfqwpl2yPQkP","title":"WebRTC 進階","pathname":"/web_advance/html5/html5_video/webrtc-jin-jie","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTML5"},{"label":"HTML5 Video 與 WebRTC"}]},{"id":"-M4xDz4Ac162wdGtQO_e","title":"WebEX API","pathname":"/web_advance/html5/html5_video/webex-api","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTML5"},{"label":"HTML5 Video 與 WebRTC"}]},{"id":"-M0u4Fp-jQg3qTrs7bRp","title":"HTML5 IndexedDB","pathname":"/web_advance/html5/html5-indexeddb","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"HTML5"}]},{"id":"-M0u4Fp0ndSheTwgbB-P","title":"Google Cloud Platform (GCP)","pathname":"/web_advance/bu_shu_dao_google_engine__gce","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"RxRfJEIkZoGhHC6HDfOZ","title":"Cloud Storage","pathname":"/web_advance/bu_shu_dao_google_engine__gce/cloud-storage","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google Cloud Platform (GCP)"}]},{"id":"-MMKXw4tgSiIEVzffZnT","title":"Cloud storage 串接 Cloud CDN","pathname":"/web_advance/bu_shu_dao_google_engine__gce/cloud-storage-chuan-jie-cloud-cdn","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Google Cloud Platform (GCP)"}]},{"id":"-M14TtINS3YJ0QH_z_va","title":"Vim 編輯器","pathname":"/web_advance/vim-bian-ji-qi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtIOvJfoIIMcUdxQ","title":"使用nginx","pathname":"/web_advance/shi-yong-nginx","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtIP4iiNKUhf2Lq6","title":"config","pathname":"/web_advance/shi-yong-nginx/config","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"使用nginx"}]},{"id":"-M0u4Fp4h-AZxWH42QlQ","title":"Unix 實用指令","pathname":"/web_advance/linux_shi_yong_zhi_ling","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MOuRrzbu8zQ6CxX3f8y","title":"新 VPS 安裝流程","pathname":"/web_advance/linux_shi_yong_zhi_ling/xin-vps-an-zhuang-liu-cheng","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Unix 實用指令"}]},{"id":"Nbr36eZT4QWZdZMscjt4","title":"Ubuntu 22 安裝","pathname":"/web_advance/linux_shi_yong_zhi_ling/ubuntu-22-an-zhuang","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Unix 實用指令"}]},{"id":"-M0u4Fp5LIhA720MBDmm","title":"Shell Script 教學","pathname":"/web_advance/linux_shi_yong_zhi_ling/shell-script-jiao-xue","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Unix 實用指令"}]},{"id":"-M0u4Fp6YbyozFiUPvjs","title":"Git 實用指令","pathname":"/web_advance/git_chang_yong_zhi_ling","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4Fp7ttJbCmumTopb","title":"Git hook","pathname":"/web_advance/git_chang_yong_zhi_ling/git-hook","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Git 實用指令"}]},{"id":"-M0u4Fp8fTc1yfOt2lCe","title":"加上 SSH-key 到 GitHub","pathname":"/web_advance/git_chang_yong_zhi_ling/jia-shang-ssh-key-dao-github","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Git 實用指令"}]},{"id":"-M0u4Fp9u8ok-2RCth21","title":"GPG簽名","pathname":"/web_advance/git_chang_yong_zhi_ling/gpgqian-ming","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Git 實用指令"}]},{"id":"7MdJSicobxeKKXURv40d","title":"SSH 實用指令","pathname":"/web_advance/ssh-shi-yong-zhi-ling","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtIXrv5wVO-DwX8I","title":"有關Fetch與axios與跨域請求","pathname":"/web_advance/you-guan-fetch-yu-axios-yu-kua-yu-qing-qiu","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"iYAIQTPPgUx4mlrtzZzc","title":"圖片上傳相關","pathname":"/web_advance/tu-pian-shang-chuan-xiang-guan","siteSpaceId":"sitesp_0S6s9","description":"圖片上傳相關 API"},{"id":"-M0u4FpCM_daSymqa3XI","title":"imgur API","pathname":"/web_advance/tu-pian-shang-chuan-xiang-guan/imgur_api","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"圖片上傳相關"}]},{"id":"-M0u4FpDDqNkBG_d5amh","title":"JS 格式轉換","pathname":"/web_advance/js_ge_shi_zhuan_huan","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpE1nrRofCzXJwn","title":"js trick","pathname":"/web_advance/js_trick","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"m2krDNIJ5w1LwpTW3zED","title":"AWS","pathname":"/web_advance/aws","siteSpaceId":"sitesp_0S6s9"},{"id":"JiTOlowBjkNoN14uw28E","title":"AWS EBS","pathname":"/web_advance/aws/aws-ebs","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"AWS"}]},{"id":"1Xd4Tbat93DTHgFxk8ia","title":"AWS HTTPS 憑證","pathname":"/web_advance/aws/aws-https-ping-zheng","siteSpaceId":"sitesp_0S6s9","description":"憑證","breadcrumbs":[{"label":"AWS"}]},{"id":"-M0u4FpF19tk4TuvzXu-","title":"AWS Cloudfront、ELB、ACL","pathname":"/web_advance/aws/bu_shu_dao_aws","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"}]},{"id":"DR7l1Ccf44edZ2AyjsK0","title":"AWS Athena","pathname":"/web_advance/aws/aws-athena","siteSpaceId":"sitesp_0S6s9","description":"Amazon Athena","breadcrumbs":[{"label":"AWS"}]},{"id":"WfzOzx3KUzgGolk05uJI","title":"AWS CloudWatch、SNS","pathname":"/web_advance/aws/aws-cloudwatch-sns","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"AWS"}]},{"id":"bzuGXXJ1jJnnTtrkpKfs","title":"AWS RDS","pathname":"/web_advance/aws/aws-rds","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"}]},{"id":"-M0u4FpGSnent_MJ9ErB","title":"AWS lambda","pathname":"/web_advance/aws/aws-lambda","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"}]},{"id":"-M0u4FpHGZDRVMb6-yY1","title":"範例","pathname":"/web_advance/aws/aws-lambda/fan-li","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"},{"label":"AWS lambda"}]},{"id":"-M0u4FpIFYarZgJjRTyH","title":"加上權限控管","pathname":"/web_advance/aws/aws-lambda/jia-shang-quan-xian-kong-guan","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"},{"label":"AWS lambda"}]},{"id":"-M0u4FpJTL67YQZdf7st","title":"AWS S3","pathname":"/web_advance/aws/aws-s3","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"}]},{"id":"-M0u4FpKV0EFg34Gr1L8","title":"AWS DynamoDB","pathname":"/web_advance/aws/aws-dynamodb","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"}]},{"id":"-M0u4FpL6VCQelIx2NLP","title":"結合Lambda","pathname":"/web_advance/aws/aws-dynamodb/jie-he-lambda","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"},{"label":"AWS DynamoDB"}]},{"id":"oI85Wp9mKydPVvzcKr8h","title":"快速把 EC2 串上 AWS Cloudfront CDN","pathname":"/web_advance/aws/kuai-su-ba-ec2-chuan-shang-aws-cloudfront-cdn","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"AWS"}]},{"id":"bapvujvbdTk2hquux13C","title":"AWS 證照相關","pathname":"/web_advance/aws/aws-zheng-zhao-xiang-guan","siteSpaceId":"sitesp_0S6s9","description":"SAA, SAP 證照相關","breadcrumbs":[{"label":"AWS"}]},{"id":"-M14TtIhJJtBAfdYTYjN","title":"有關日期Date","pathname":"/web_advance/you-guan-ri-qi-date","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtIibbmZdFg4oznJ","title":"VS code 編輯器","pathname":"/web_advance/vs-code-bian-ji-qi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MKIA0FAjoSrjnSh9J-q","title":"VSCode 外掛 Plugin","pathname":"/web_advance/vs-code-bian-ji-qi/vscode-wai-gua-plugin","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"VS code 編輯器"}]},{"id":"-M0u4FpOKK71XA0BeCIT","title":"CI  with Gitlab&Jenkins","pathname":"/web_advance/ci--with-gitlabjenkins","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MkF_bxLP5udtduDlP8u","title":"API 測試","pathname":"/web_advance/api-ce-shi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MkF_j6gFaZsIRbJSbNh","title":"Postman","pathname":"/web_advance/api-ce-shi/postman","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"API 測試"}]},{"id":"ikSWGu13InjuvVSmHmG2","title":"設置 Postman 環境變數","pathname":"/web_advance/api-ce-shi/postman/she-zhi-postman-huan-jing-bian-shu","siteSpaceId":"sitesp_0S6s9","description":"環境變數","breadcrumbs":[{"label":"API 測試"},{"label":"Postman"}]},{"id":"-M0u4FpRYp2QDFh2BL9h","title":"API Blueprint","pathname":"/web_advance/api-ce-shi/api-blueprint","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"API 測試"}]},{"id":"-M0u4FpP4uyUV_CexDkf","title":"swagger","pathname":"/web_advance/api-ce-shi/swagger","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"API 測試"}]},{"id":"-M0u4FpQwE_iENiGNMAA","title":"註解寫在Code內生成swagger UI","pathname":"/web_advance/api-ce-shi/swagger/zhu-jie-xie-zai-code-nei-sheng-cheng-swagger-ui","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"API 測試"},{"label":"swagger"}]},{"id":"-M0u4FpSyllnK_XtNGW7","title":"Javascript 實用Lib","pathname":"/web_advance/javascript-shi-yong-lib","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtIpVcay7Eks89DW","title":"遠端寫程式","pathname":"/web_advance/yuan-duan-xie-cheng-shi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpVNu3F85OOinNm","title":"Quicktime錄影注意事項","pathname":"/web_advance/quicktime","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpWIWCZshAsExhw","title":"Web開發進階Bug","pathname":"/web_advance/bugs","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpX2JGoHgSberRS","title":"Web壓力測試","pathname":"/web_advance/presure-testing","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpYCJONAlnC6LgY","title":"LineBot","pathname":"/web_advance/linebot","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpZZu7lB-0z1XaD","title":"PM2部署","pathname":"/web_advance/pm2bu-shu","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4Fp_okLUpI2LBAag","title":"i18n","pathname":"/web_advance/i18n","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpaWDQMZxNhpzSy","title":"VPN","pathname":"/web_advance/vpn","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpbB8K9vVIWdhxh","title":"Protocol Buffers","pathname":"/web_advance/protocol-buffers","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpcYdVpz46XZUzl","title":"Docker教學","pathname":"/web_advance/dockerjiao-xue","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MGfpmIWuKi4lQfZ4tGG","title":"LXC LXD","pathname":"/web_advance/dockerjiao-xue/lxc-lxd","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Docker教學"}]},{"id":"-MA0HoaWbKdZRiKPeI2W","title":"Docker Compose","pathname":"/web_advance/dockerjiao-xue/docker-compose","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Docker教學"}]},{"id":"-M8Dhp3zJyrYdIUqHnDu","title":"Docker 原理","pathname":"/web_advance/dockerjiao-xue/docker-yuan-li","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Docker教學"}]},{"id":"-M0u4FpdtujXXUZQblAQ","title":"Docker 指令","pathname":"/web_advance/dockerjiao-xue/docker","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Docker教學"}]},{"id":"YDcEzKSaHnkkLfwnrjxR","title":"E2E Testing","pathname":"/web_advance/e2e-testing","siteSpaceId":"sitesp_0S6s9","description":"End to End testing"},{"id":"E3vcY2Jh3z5joEv41MvV","title":"Cypress","pathname":"/web_advance/e2e-testing/cypress","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"E2E Testing"}]},{"id":"AlCds66p8mMM6snjhJit","title":"PlayWright","pathname":"/web_advance/e2e-testing/playwright","siteSpaceId":"sitesp_0S6s9","description":"https://playwright.dev/","breadcrumbs":[{"label":"E2E Testing"}]},{"id":"-M14TtJ0c1TKxGUG06g5","title":"Puppeteer 與其他 UI 測試工具","pathname":"/web_advance/e2e-testing/ui-test-puppeteer","siteSpaceId":"sitesp_0S6s9","description":"測試工具","breadcrumbs":[{"label":"E2E Testing"}]},{"id":"-M0u4FpeS0Bpd1mNO32o","title":"Unit Test (Jest & enzyme)","pathname":"/web_advance/unit-test-jest-and-enzyme","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M6cd2_r1BSKvQRTRt6S","title":"React Testing Library","pathname":"/web_advance/unit-test-jest-and-enzyme/react-testing-library","siteSpaceId":"sitesp_0S6s9","description":"https://testing-library.com/docs","breadcrumbs":[{"label":"Unit Test (Jest & enzyme)"}]},{"id":"-M0u4Fpga3UaEsw5VJaz","title":"mocha","pathname":"/web_advance/unit-test-jest-and-enzyme/mocha","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Unit Test (Jest & enzyme)"}]},{"id":"-M0u4FphK7wWg9ZEs14e","title":"Cassandra","pathname":"/web_advance/cassandra","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpiXlIRGW_6TA96","title":"cluster","pathname":"/web_advance/cassandra/cluster","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Cassandra"}]},{"id":"-M0u4FpjZxLxgkKf1tq6","title":"Distribute Web","pathname":"/web_advance/distribute-web","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4Fpkk-3lOU7Bq6Hi","title":"Dat project","pathname":"/web_advance/distribute-web/dat-project","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Distribute Web"}]},{"id":"-M0u4FplINeSsrftItn8","title":"IPFS project","pathname":"/web_advance/distribute-web/ipfs-project","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Distribute Web"}]},{"id":"-M1O8G2B-OytGQL6uVRG","title":"Cluster and Child_process","pathname":"/web_advance/cluster-and-childprocess-1","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpnZiQEwq4PlK8g","title":"打包應用程式","pathname":"/web_advance/da-bao-ying-yong-cheng-shi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpogsWUTf67NEJ3","title":"Java","pathname":"/web_advance/java","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M14TtJAINFAOjC43mRt","title":"使用gradle結合docker","pathname":"/web_advance/java/shi-yong-gradle-jie-he-docker","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Java"}]},{"id":"-M0u4FpqLLOkQohmLOcX","title":"Debug 頁面","pathname":"/web_advance/debug-ye-mian","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpreT8gfpS43y2v","title":"Proxy","pathname":"/web_advance/proxy","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4Fpstd6jlccw3jQv","title":"Chrome extension","pathname":"/web_advance/chrome-extension","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FptCy8UUXFERyS_","title":"消息系統","pathname":"/web_advance/xiao-xi-xi-tong","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpuNdqRRkMPwLyd","title":"RabbitMQ","pathname":"/web_advance/xiao-xi-xi-tong/rabbitmq","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"消息系統"}]},{"id":"-M0u4Fo8HL2YStgg5zTn","title":"金流串接","pathname":"/web_advance/jin-liu-chuan-jie","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FpwnGg7_Px0vQqy","title":"Paypal","pathname":"/web_advance/jin-liu-chuan-jie/paypal","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"金流串接"}]},{"id":"-M0u4FpxL2wersBo0v3a","title":"spgateway智富通","pathname":"/web_advance/jin-liu-chuan-jie/spgatewayzhi-fu-tong","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"金流串接"}]},{"id":"-M0u4Fpy5tF_5JLg0RbI","title":"Stripe 串接","pathname":"/web_advance/jin-liu-chuan-jie/stripe-chuan-jie","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"金流串接"}]},{"id":"-M0u4FpzimaLxAOfs5vt","title":"有關Log","pathname":"/web_advance/you-guan-log","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MOnl2qW1ipE9BdHMYU2","title":"設定 feature flag","pathname":"/web_advance/she-ding-feature-flag","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4Fq-uKHnJ8twCj0D","title":"Azure","pathname":"/web_advance/azure","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4Fq041V_o4rRBE8n","title":"Face API","pathname":"/web_advance/azure/face-api","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Azure"}]},{"id":"-M0u4Fq1M0qVK4F-cm1f","title":"Image Analyze API","pathname":"/web_advance/azure/image-analyze-api","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Azure"}]},{"id":"-M0u4Fq2NcURplCnaWVM","title":"Azure Serverless","pathname":"/web_advance/azure/azure-serverless","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Azure"}]},{"id":"-M0u4Fq3wxyw2pDf6VPx","title":"Cosmos DB","pathname":"/web_advance/azure/cosmos-db","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Azure"}]},{"id":"-M0u4Fq4PLtc3mPhvxqo","title":"使用 SDK","pathname":"/web_advance/azure/cosmos-db/shi-yong-sdk","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Azure"},{"label":"Cosmos DB"}]},{"id":"-M0u4Fq5L6jgQWxkkt5k","title":"以 RESTful 操作 DB","pathname":"/web_advance/azure/cosmos-db/yi-restful-cao-zuo-db","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Azure"},{"label":"Cosmos DB"}]},{"id":"-M0u4Fq6yPoz4X51dxcb","title":"一致性策略與 DB replicate","pathname":"/web_advance/azure/cosmos-db/yi-zhi-xing-ce-lve-yu-db-replicate","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Azure"},{"label":"Cosmos DB"}]},{"id":"-M0u4Fq7KUyJG__nyYGL","title":"NodeBB 筆記","pathname":"/web_advance/nodebb-bi-ji","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4Fq9sc8Z52HyNnvC","title":"瀏覽器快取與緩存（Etag, If-None-Match）","pathname":"/web_advance/liu-lan-qi-kuai-qu-yu-huan-cun","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FqAtvNNFTdMt3Gc","title":"瀏覽器快取與緩存（Expires, Last-modified, Cache-Control）","pathname":"/web_advance/liu-lan-qi-kuai-qu-yu-huan-cun-ff08-expires-last-modified","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FqC4sSv9x5Gpgeu","title":"Node.js 第三方模組","pathname":"/web_advance/node.js-di-san-fang-mo-zu","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FqD7_JfEXXG5bHV","title":"OpenCV","pathname":"/web_advance/node.js-di-san-fang-mo-zu/opencv","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Node.js 第三方模組"}]},{"id":"-M0u4FqEZgoOvMxbcKwx","title":"Kubernetes","pathname":"/web_advance/kubernetes","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FqFZFlGmCb-gctk","title":"\b本地測試 MiniKube","pathname":"/web_advance/kubernetes/ben-di-ce-shi-minikube","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Kubernetes"}]},{"id":"-M0u4FqH74PbNEsLzQJw","title":"Ngrok 使用","pathname":"/web_advance/ngrok-shi-yong","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"RGOVInGAt0mrt7qT1ohI","title":"Telegram MiniAPP 開發","pathname":"/web_advance/telegram-miniapp-kai-fa","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u4FqIfGrCAVYshM1W","title":"Firebase 教學","pathname":"/web_advance/firebase-jiao-xue","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M0u9VqtIoht9fkmY_DO","title":"演算法筆記","pathname":"/web_advance/yan-suan-fa-bi-ji","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M1dYpvRFDaCdNPVrfPg","title":"圖表","pathname":"/web_advance/tu-biao-lei","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"P6fZNusjGMVc0XV1Anda","title":"Echart","pathname":"/web_advance/tu-biao-lei/echart","siteSpaceId":"sitesp_0S6s9","description":"https://echarts.apache.org/examples/zh/","breadcrumbs":[{"label":"圖表"}]},{"id":"4mdJDDtooX3OgSVQdj5r","title":"TradingView 圖表","pathname":"/web_advance/tu-biao-lei/tradingview-tu-biao","siteSpaceId":"sitesp_0S6s9","description":"圖表串接","breadcrumbs":[{"label":"圖表"}]},{"id":"-MHTkdQcv_xVdR43MYF8","title":"D3","pathname":"/web_advance/tu-biao-lei/d3","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"圖表"}]},{"id":"-M1dYzYGdbfxvXGpn4rI","title":"熱力圖 heatmap","pathname":"/web_advance/tu-biao-lei/re-li-tu-heatmap","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"圖表"}]},{"id":"-M7M8BkG2PXIf9bsMxqY","title":"後端緩存 Cache","pathname":"/web_advance/hou-duan-huan-cun","siteSpaceId":"sitesp_0S6s9","description":"後端包含 Linux 系統"},{"id":"-M7MA5XSWg6PxRv4n858","title":"資料一致性","pathname":"/web_advance/zi-liao-yi-zhi-xing","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M8Dn5aiHUQO99WCGiKN","title":"Web 安全機制","pathname":"/web_advance/web-an-quan-ji-zhi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"ilPNrF9wLjIAoi1vJLzy","title":"Cookie 與 LocalStorage","pathname":"/web_advance/web-an-quan-ji-zhi/cookie-yu-localstorage","siteSpaceId":"sitesp_0S6s9","breadcrumbs":[{"label":"Web 安全機制"}]},{"id":"-M9XnUXmlFLNktnWcguj","title":"Vue","pathname":"/web_advance/vue","siteSpaceId":"sitesp_0S6s9","description":"類似於 React.js 或 Angular 之前端框架"},{"id":"-MHVGruuyokzPMMd8D20","title":"Element UI","pathname":"/web_advance/vue/element-ui","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Vue"}]},{"id":"-MCKjx3gJzTF57X2o1MN","title":"Devtool","pathname":"/web_advance/vue/devtool","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Vue"}]},{"id":"-M9aFyRYXiqxWk7asISx","title":"Vuex","pathname":"/web_advance/vue/vuex","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Vue"}]},{"id":"-M9XnYrovJm0hSlb7DVy","title":"Vue router","pathname":"/web_advance/vue/vue-router","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"Vue"}]},{"id":"-MDOf1fz8CeA9ZPMcazn","title":"相關網路協議","pathname":"/web_advance/xiang-guan-wang-lu-xie-yi","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"2kRVCUoVjEliCHGsxNt7","title":"網路 IP 基礎","pathname":"/web_advance/xiang-guan-wang-lu-xie-yi/wang-lu-ip-ji-chu","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"相關網路協議"}]},{"id":"-MFTJ1-JOTbzM_HuNVDW","title":"Google Search 技巧","pathname":"/web_advance/xiang-guan-wang-lu-xie-yi/google-search-ji-qiao","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"相關網路協議"}]},{"id":"-MEu8p5DtCSUuUA7Hx4V","title":"網路診斷工具","pathname":"/web_advance/xiang-guan-wang-lu-xie-yi/wang-lu-zhen-duan-gong-ju","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"相關網路協議"}]},{"id":"-ME_x4ZLquQvGwOF1T9y","title":"IP","pathname":"/web_advance/xiang-guan-wang-lu-xie-yi/ip","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"相關網路協議"}]},{"id":"-ME5l2wqtSwzYTCORBGr","title":"DNS","pathname":"/web_advance/xiang-guan-wang-lu-xie-yi/dns-server","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"相關網路協議"}]},{"id":"-MDXUmJPoI9ETwwCPVHB","title":"GitLab 與 Drone","pathname":"/web_advance/zi-dong-hua-bu-shu","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-ME716cZ8THtucccXR0r","title":"SMTP、POP、IMAP","pathname":"/web_advance/smpt-pop-imap","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"4bQntvb9qCijuLzPvh1B","title":"SendGrid","pathname":"/web_advance/smpt-pop-imap/sendgrid","siteSpaceId":"sitesp_0S6s9","description":"Email 服務，可以用來綁定 domain 並發送與接收郵件","breadcrumbs":[{"label":"SMTP、POP、IMAP"}]},{"id":"-MFEnOAzZrkICnBIl76B","title":"IPC","pathname":"/web_advance/ipc","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MKcsYIfn-IuZQbcXhsF","title":"串流服務","pathname":"/web_advance/chuan-liu-fu-wu","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-M55HPUrojiRVvS_-TND","title":"Twilio","pathname":"/web_advance/chuan-liu-fu-wu/twilio","siteSpaceId":"sitesp_0S6s9","description":"","breadcrumbs":[{"label":"串流服務"}]},{"id":"-MKcrV-TlXflHIQbghvV","title":"Agora","pathname":"/web_advance/chuan-liu-fu-wu/agora","siteSpaceId":"sitesp_0S6s9","description":"一個提供第三方串流服務的供應商","breadcrumbs":[{"label":"串流服務"}]},{"id":"-MNSFt-SjlwmpOTB3gzQ","title":"其他資源","pathname":"/web_advance/qi-ta-zi-yuan","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MO9nljvV2HRc6fET1HI","title":"GraphQL","pathname":"/web_advance/graphql","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-MOPIUkOcL1cuVO9BL2O","title":"Typescript","pathname":"/web_advance/typescript","siteSpaceId":"sitesp_0S6s9","description":"讓 JS 加上 TYPE 功能，類似於 FLOW"},{"id":"-MOiQqW2OGhAwPn_Evr7","title":"UI 相關資源","pathname":"/web_advance/ui-xiang-guan-zi-yuan","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"-Ma6V_6AWzKdsZlk0rx8","title":"FFmpeg","pathname":"/web_advance/ffmpeg","siteSpaceId":"sitesp_0S6s9","description":"用來處理影片或串流"},{"id":"-McX09_sRwtoqXXc1coo","title":"Unity 遊戲開發筆記","pathname":"/web_advance/unity-you-hu-kai-fa-bi-ji","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"w0aMOFywgZahMrqoCh9t","title":"Influx DB","pathname":"/web_advance/influx-db","siteSpaceId":"sitesp_0S6s9","description":"可用來存儲時序 time-series 資料"},{"id":"tBLi6OWKVwHXNFwblTU6","title":"Windows 相關","pathname":"/web_advance/windows-xiang-guan","siteSpaceId":"sitesp_0S6s9","description":""},{"id":"fFoFL7H9LvQL293ONNNM","title":"DALL·E 3","pathname":"/web_advance/dall-e-3","siteSpaceId":"sitesp_0S6s9","description":"Dalle3 是一個 OpenAI 推出的圖形生成程式，目前已經被整合到 Bing 與 ChatGPT 4"},{"id":"bk17UIM6oJpO0a9K6a3D","title":"Coap","pathname":"/web_advance/coap","siteSpaceId":"sitesp_0S6s9","description":"常用於物聯網的一種傳輸格式"},{"id":"yx1WMVrhnuIb6jEtNq3k","title":"Slack API","pathname":"/web_advance/slack-api","siteSpaceId":"sitesp_0S6s9"},{"id":"T4dJFQqLdKDL25Ibk7MI","title":"資訊安全","pathname":"/web_advance/zi-xun-an-quan","siteSpaceId":"sitesp_0S6s9","description":"資訊安全"},{"id":"xdYKth2yeEb7soHVyyv2","title":"破解 ZIP 密碼","pathname":"/web_advance/zi-xun-an-quan/po-jie-zip-mi-ma","siteSpaceId":"sitesp_0S6s9","description":"有時我們忘記當時設定的密碼，可以如下來找回","breadcrumbs":[{"label":"資訊安全"}]}]}