diff --git a/404.html b/404.html index f13c47f..129a674 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

\ No newline at end of file diff --git a/_next/static/2vleGCTT4wVHJPmu_9mRo/_buildManifest.js b/_next/static/2vleGCTT4wVHJPmu_9mRo/_buildManifest.js deleted file mode 100644 index a48de95..0000000 --- a/_next/static/2vleGCTT4wVHJPmu_9mRo/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST=function(a){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[a,"static/chunks/pages/index-09b5e97ca7290b3e.js"],"/_error":["static/chunks/pages/_error-2280fa386d040b66.js"],"/haftalar":[a,"static/chunks/pages/haftalar-731a9421d339c4e9.js"],"/haftalar/hafta-bir":[a,"static/chunks/pages/haftalar/hafta-bir-c5a5796b5d362c1e.js"],"/haftalar/hafta-iki":[a,"static/chunks/pages/haftalar/hafta-iki-6fe584eb7c27c3d7.js"],"/haftalar/hafta-sifir":[a,"static/chunks/pages/haftalar/hafta-sifir-8b20162059fd0f32.js"],"/haftalar/hafta-uc":[a,"static/chunks/pages/haftalar/hafta-uc-e1eb34a747d4ef47.js"],"/tags/[tag]":[a,"static/chunks/pages/tags/[tag]-fefb848df45a674b.js"],sortedPages:["/","/_app","/_error","/haftalar","/haftalar/hafta-bir","/haftalar/hafta-iki","/haftalar/hafta-sifir","/haftalar/hafta-uc","/tags/[tag]"]}}("static/chunks/353-9c855d83cc7ddaed.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/_next/static/Ss0rd3tj0Ss-Pdz1eJTcA/_buildManifest.js b/_next/static/Ss0rd3tj0Ss-Pdz1eJTcA/_buildManifest.js new file mode 100644 index 0000000..b8f03b2 --- /dev/null +++ b/_next/static/Ss0rd3tj0Ss-Pdz1eJTcA/_buildManifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST=function(a){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[a,"static/chunks/pages/index-09b5e97ca7290b3e.js"],"/_error":["static/chunks/pages/_error-2280fa386d040b66.js"],"/components/CenteredImageLightbox":["static/chunks/pages/components/CenteredImageLightbox-7361f317e0423b0f.js"],"/haftalar":[a,"static/chunks/pages/haftalar-731a9421d339c4e9.js"],"/haftalar/hafta-bir":[a,"static/chunks/pages/haftalar/hafta-bir-c83b600aaa8f6bf2.js"],"/haftalar/hafta-iki":[a,"static/chunks/pages/haftalar/hafta-iki-70e0c7d09d1a590c.js"],"/haftalar/hafta-sifir":[a,"static/chunks/pages/haftalar/hafta-sifir-545d2815e868ac92.js"],"/haftalar/hafta-uc":[a,"static/chunks/pages/haftalar/hafta-uc-7cf5e77f1da5e3e5.js"],"/tags/[tag]":[a,"static/chunks/pages/tags/[tag]-fefb848df45a674b.js"],sortedPages:["/","/_app","/_error","/components/CenteredImageLightbox","/haftalar","/haftalar/hafta-bir","/haftalar/hafta-iki","/haftalar/hafta-sifir","/haftalar/hafta-uc","/tags/[tag]"]}}("static/chunks/353-e5672d55b0ebd1bc.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/_next/static/2vleGCTT4wVHJPmu_9mRo/_middlewareManifest.js b/_next/static/Ss0rd3tj0Ss-Pdz1eJTcA/_middlewareManifest.js similarity index 100% rename from _next/static/2vleGCTT4wVHJPmu_9mRo/_middlewareManifest.js rename to _next/static/Ss0rd3tj0Ss-Pdz1eJTcA/_middlewareManifest.js diff --git a/_next/static/2vleGCTT4wVHJPmu_9mRo/_ssgManifest.js b/_next/static/Ss0rd3tj0Ss-Pdz1eJTcA/_ssgManifest.js similarity index 100% rename from _next/static/2vleGCTT4wVHJPmu_9mRo/_ssgManifest.js rename to _next/static/Ss0rd3tj0Ss-Pdz1eJTcA/_ssgManifest.js diff --git a/_next/static/chunks/353-9c855d83cc7ddaed.js b/_next/static/chunks/353-e5672d55b0ebd1bc.js similarity index 99% rename from _next/static/chunks/353-9c855d83cc7ddaed.js rename to _next/static/chunks/353-e5672d55b0ebd1bc.js index 8fc7bdb..c63e843 100644 --- a/_next/static/chunks/353-9c855d83cc7ddaed.js +++ b/_next/static/chunks/353-e5672d55b0ebd1bc.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[353],{9671:function(e,t,n){const r=n(1701);e.exports=u;const a=Object.hasOwnProperty;function u(){if(!(this instanceof u))return new u;this.reset()}function i(e,t){return"string"!==typeof e?"":(t||(e=e.toLowerCase()),e.replace(r,"").replace(/ /g,"-"))}u.prototype.slug=function(e,t){const n=this;let r=i(e,!0===t);const u=r;for(;a.call(n.occurrences,r);)n.occurrences[u]++,r=u+"-"+n.occurrences[u];return n.occurrences[r]=0,r},u.prototype.reset=function(){this.occurrences=Object.create(null)},u.slug=i},1701:function(e){e.exports=/[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08BE-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D04\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1ABF-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31BB-\u31EF\u3200-\u33FF\u4DB6-\u4DFF\u9FF0-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7C7-\uA7F6\uA828-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB68-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD47-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD-\uDDCF\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC60-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD00-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD823-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D-\uD83F\uD87B-\uD87D\uD87F-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD822[\uDEF3-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD869[\uDED7-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g},3454:function(e,t,n){"use strict";e.exports=n.g.process||n(7663)},8418:function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0&&(i=!1),t[a?"replace":"push"](n,r,{shallow:u,locale:s,scroll:i}))}(e,r,p,f,D,m,h,F)},onMouseEnter:function(e){t.props&&"function"===typeof t.props.onMouseEnter&&t.props.onMouseEnter(e),o.isLocalURL(p)&&d(r,p,f,{priority:!0})}};if(e.passHref||"a"===t.type&&!("href"in t.props)){var S="undefined"!==typeof F?F:r&&r.locale,k=r&&r.isLocaleDomain&&o.getDomainLocale(f,S,r&&r.locales,r&&r.domainLocales);C.href=k||o.addBasePath(o.addLocale(f,S,r&&r.defaultLocale))}return i.default.cloneElement(t,C)};t.default=p},7190:function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;t&&n&&t(n)}))}),e);return s.set(t,n={id:t,observer:a,elements:r}),n}(n),a=r.id,u=r.observer,i=r.elements;return i.set(e,t),u.observe(e),function(){i.delete(e),u.unobserve(e),0===i.size&&(u.disconnect(),s.delete(a))}}(e,(function(e){return e&&d(e)}),{rootMargin:t}))}),[n,t,c]);return u.useEffect((function(){if(!o&&!c){var e=i.requestIdleCallback((function(){return d(!0)}));return function(){return i.cancelIdleCallback(e)}}}),[c]),[p,c]};var u=n(7294),i=n(9311),o="undefined"!==typeof IntersectionObserver;var s=new Map},638:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:[];return new Promise((function(t){var n=function(){return p=!0,t()};m(d,e).then(n,n)}))},window.__NEXT_PRELOADREADY=D.preloadReady;var h=D;t.default=h},7663:function(e){!function(){var t={162:function(e){var t,n,r=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"===typeof setTimeout?setTimeout:a}catch(e){t=a}try{n="function"===typeof clearTimeout?clearTimeout:u}catch(e){n=u}}();var o,s=[],l=!1,c=-1;function d(){l&&o&&(l=!1,o.length?s=o.concat(s):c=-1,s.length&&p())}function p(){if(!l){var e=i(d);l=!0;for(var t=s.length;t;){for(o=s,s=[];++c1)for(var n=1;n{},themes:[]}),c=()=>(0,r.useContext)(l),d=["light","dark"],p="(prefers-color-scheme: dark)",f=({forcedTheme:e,disableTransitionOnChange:t=!1,enableSystem:n=!0,enableColorScheme:a=!0,storageKey:u="theme",themes:i=["light","dark"],defaultTheme:o=(n?"system":"light"),attribute:s="data-theme",value:c,children:f})=>{const[F,E]=(0,r.useState)((()=>D(u,o))),[b,y]=(0,r.useState)((()=>D(u))),A=c?Object.values(c):i,v=(0,r.useCallback)((t=>{const n=h(t);y(n),"system"!==F||e||S(n,!1)}),[F,e]),C=(0,r.useRef)(v);C.current=v;const S=(0,r.useCallback)(((e,r=!0,a=!0)=>{let i=(null==c?void 0:c[e])||e;const o=t&&a?m():null;if(r)try{localStorage.setItem(u,e)}catch(e){}if("system"===e&&n){const e=h();i=(null==c?void 0:c[e])||e}if(a){const e=document.documentElement;"class"===s?(e.classList.remove(...A),e.classList.add(i)):e.setAttribute(s,i),null==o||o()}}),[]);(0,r.useEffect)((()=>{const e=function(){return C.current(...[].slice.call(arguments))},t=window.matchMedia(p);return t.addListener(e),e(t),()=>t.removeListener(e)}),[]);const k=(0,r.useCallback)((t=>{e?S(t,!0,!1):S(t),E(t)}),[e]);return(0,r.useEffect)((()=>{const e=e=>{e.key===u&&k(e.newValue||o)};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[k]),(0,r.useEffect)((()=>{if(!a)return;let t=e&&d.includes(e)?e:F&&d.includes(F)?F:"system"===F&&b||null;document.documentElement.style.setProperty("color-scheme",t)}),[a,F,b,e]),r.createElement(l.Provider,{value:{theme:F,setTheme:k,forcedTheme:e,resolvedTheme:"system"===F?b:F,themes:n?[...i,"system"]:i,systemTheme:n?b:void 0}},r.createElement(g,{forcedTheme:e,storageKey:u,attribute:s,value:c,enableSystem:n,defaultTheme:o,attrs:A}),f)},g=(0,r.memo)((({forcedTheme:e,storageKey:t,attribute:n,enableSystem:a,defaultTheme:i,value:o,attrs:s})=>{const l="class"===n?`var d=document.documentElement.classList;d.remove(${s.map((e=>`'${e}'`)).join(",")});`:"var d=document.documentElement;",c=(e,t)=>{e=(null==o?void 0:o[e])||e;const r=t?e:`'${e}'`;return"class"===n?`d.add(${r})`:`d.setAttribute('${n}', ${r})`},d="system"===i;return r.createElement(u.default,null,r.createElement("script",e?{key:"next-themes-script",dangerouslySetInnerHTML:{__html:`!function(){${l}${c(e)}}()`}}:a?{key:"next-themes-script",dangerouslySetInnerHTML:{__html:`!function(){try {${l}var e=localStorage.getItem('${t}');${d?"":c(i)+";"}if("system"===e||(!e&&${d})){var t="${p}",m=window.matchMedia(t);m.media!==t||m.matches?${c("dark")}:${c("light")}}else if(e) ${o?`var x=${JSON.stringify(o)};`:""}${c(o?"x[e]":"e",!0)}}catch(e){}}()`}}:{key:"next-themes-script",dangerouslySetInnerHTML:{__html:`!function(){try{${l}var e=localStorage.getItem("${t}");if(e){${o?`var x=${JSON.stringify(o)};`:""}${c(o?"x[e]":"e",!0)}}else{${c(i)};}}catch(t){}}();`}}))}),((e,t)=>e.forcedTheme===t.forcedTheme)),D=(e,t)=>{if("undefined"==typeof window)return;let n;try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t},m=()=>{const e=document.createElement("style");return e.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout((()=>{document.head.removeChild(e)}),1)}},h=e=>(e||(e=window.matchMedia(p)),e.matches?"dark":"light");var F=n(1151),E=n(9671),b=n.n(E),y=function(){var e=0,t={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(y instanceof s)){if(D&&E!=n.length-1){if(p.lastIndex=b,!(_=p.exec(e)))break;for(var A=_.index+(g?_[1].length:0),v=_.index+_[0].length,C=E,S=b,k=n.length;C=(S+=n[C].length)&&(++E,b=S);if(n[E]instanceof s)continue;w=C-E,y=e.slice(b,S),_.index-=b}else{p.lastIndex=0;var _=p.exec(y),w=1}if(_){g&&(m=_[1]?_[1].length:0);v=(A=_.index+m)+(_=_[0].slice(m)).length;var B=y.slice(0,A),T=y.slice(v),O=[E,w];B&&(++E,b+=B.length,O.push(B));var R=new s(l,f?t.tokenize(_,f):_,h,_,D);if(O.push(R),T&&O.push(T),Array.prototype.splice.apply(n,O),1!=w&&t.matchGrammar(e,n,r,E,b,!0,l),i)break}else if(i)break}}}}},hooks:{add:function(){},run:function(e,t){}},tokenize:function(e,n,r){var a=[e],u=n.rest;if(u){for(var i in u)n[i]=u[i];delete n.rest}return t.matchGrammar(e,a,n,0,0,!1),a}},n=t.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};return n.stringify=function(e,r,a){if("string"==typeof e)return e;if("Array"===t.util.type(e))return e.map((function(t){return n.stringify(t,r,e)})).join("");var u={type:e.type,content:n.stringify(e.content,r,a),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:a};if(e.alias){var i="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(u.classes,i)}var o=Object.keys(u.attributes).map((function(e){return e+'="'+(u.attributes[e]||"").replace(/"/g,""")+'"'})).join(" ");return"<"+u.tag+' class="'+u.classes.join(" ")+'"'+(o?" "+o:"")+">"+u.content+""},t}();y.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},y.languages.markup.tag.inside["attr-value"].inside.entity=y.languages.markup.entity,y.languages.markup.doctype.inside["internal-subset"].inside=y.languages.markup,y.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(y.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:y.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:y.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},y.languages.insertBefore("markup","cdata",a)}}),y.languages.html=y.languages.markup,y.languages.mathml=y.languages.markup,y.languages.svg=y.languages.markup,y.languages.xml=y.languages.extend("markup",{}),y.languages.ssml=y.languages.xml,y.languages.atom=y.languages.xml,y.languages.rss=y.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)(["'])(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|(?!\2)[^\\`$])*\2/,lookbehind:!0,greedy:!0,inside:r}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],u=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},y.languages.c=y.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,function:/[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),y.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},y.languages.c.string],comment:y.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:y.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete y.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/;e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),e.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","operator",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(y),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/(^|["'\s])style\s*=\s*(?:"[^"]*"|'[^']*')/i,lookbehind:!0,inside:{"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{style:{pattern:/(["'])[\s\S]+(?=["']$)/,lookbehind:!0,alias:"language-css",inside:e.languages.css},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},"attr-name":/^style/i}}},n.tag))}(y),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+\b)/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#(?:[\da-f]{1,2}){3,4}\b/i,alias:"color"},color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(y),y.languages.javascript=y.languages.extend("clike",{"class-name":[y.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),y.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,y.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:y.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:y.languages.javascript},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,inside:y.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:y.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:y.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),y.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:y.languages.javascript}},string:/[\s\S]+/}}}),y.languages.markup&&y.languages.markup.tag.addInlined("script","javascript"),y.languages.js=y.languages.javascript,function(e){var t=e.util.clone(e.languages.javascript);e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=/<\/?(?:[\w.:-]+(?:\s+(?:[\w.:$-]+(?:=(?:"(?:\\[^]|[^\\"])*"|'(?:\\[^]|[^\\'])*'|[^\s{'">=]+|\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}))?|\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}))*\s*\/?)?>/i,e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[^]|[^\\"])*"|'(?:\\[^]|[^\\'])*'|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},e.languages.jsx.tag),e.languages.insertBefore("inside","attr-value",{script:{pattern:/=(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag);var n=function(e){return e?"string"===typeof e?e:"string"===typeof e.content?e.content:e.content.map(n).join(""):""},r=function(t){for(var a=[],u=0;u0&&a[a.length-1].tagName===n(i.content[0].content[1])&&a.pop():"/>"===i.content[i.content.length-1].content||a.push({tagName:n(i.content[0].content[1]),openedBraces:0}):a.length>0&&"punctuation"===i.type&&"{"===i.content?a[a.length-1].openedBraces++:a.length>0&&a[a.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?a[a.length-1].openedBraces--:o=!0),(o||"string"===typeof i)&&a.length>0&&0===a[a.length-1].openedBraces){var s=n(i);u0&&("string"===typeof t[u-1]||"plain-text"===t[u-1].type)&&(s=n(t[u-1])+s,t.splice(u-1,1),u--),t[u]=new e.Token("plain-text",s,null,s)}i.content&&"string"!==typeof i.content&&r(i.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||r(e.tokens)}))}(y),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|for|finally|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(y),y.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},y.languages.go=y.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete y.languages.go["class-name"],y.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:y.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*)[a-zA-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,punctuation:/[!(){}\[\]:=,]/,constant:/\b(?!ID\b)[A-Z][A-Z_\d]*\b/},function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,u){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"===typeof u&&!u(e))return e;for(var a,o=i.length;-1!==n.code.indexOf(a=t(r,o));)++o;return i[o]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,u=Object.keys(n.tokenStack);!function i(o){for(var s=0;s=u.length);s++){var l=o[s];if("string"===typeof l||l.content&&"string"===typeof l.content){var c=u[a],d=n.tokenStack[c],p="string"===typeof l?l:l.content,f=t(r,c),g=p.indexOf(f);if(g>-1){++a;var D=p.substring(0,g),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),h=p.substring(g+f.length),F=[];D&&F.push.apply(F,i([D])),F.push(m),h&&F.push.apply(F,i([h])),"string"===typeof l?o.splice.apply(o,[s,1].concat(F)):l.content=F}}else l.content&&i(l.content)}return o}(n.tokens)}}}})}(y),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:true|false)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}))}(y),y.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},y.languages.webmanifest=y.languages.json,y.languages.less=y.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*\/]/}),y.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),y.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?!\n|\r\n?))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),u=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"font-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+u+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+u+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+u+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\r\n]+`/,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+?\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!==typeof t)for(var n=0,r=t.length;n]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete y.languages.objectivec["class-name"],y.languages.objc=y.languages.objectivec,y.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?[\d_]+)?)/i,directive:{pattern:/\B#\w+/,alias:"important"},label:{pattern:/\B~\w+/,alias:"function"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"variable"},module:{pattern:/\b[A-Z]\w+/,alias:"variable"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/[(){}\[\]|.,:;]|\b_\b/},y.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^\s*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},y.languages.python["string-interpolation"].inside.interpolation.inside.rest=y.languages.python,y.languages.py=y.languages.python,y.languages.reason=y.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),y.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete y.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/,lookbehind:!0}})}(y),y.languages.scss=y.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),y.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),y.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),y.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),y.languages.scss.atrule.inside.rest=y.languages.scss,y.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/url\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(?:\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(y),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},keyword:/\b(?:abstract|as|asserts|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),delete e.languages.typescript.parameter;var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(y),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t);var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(y),y.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),u=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|]|}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+u+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/true|false/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(u),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(y);var A={Prism:y,theme:{plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","at-rule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]}};function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(){return(C=Object.assign||function(e){for(var t=1;t0&&e[n-1]===t?e:e.concat(t)},w=function(e,t){var n=e.plain,r=Object.create(null),a=e.styles.reduce((function(e,n){var r=n.languages,a=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=C({},e[t],a);e[t]=n})),e}),r);return a.root=n,a.plain=C({},n,{backgroundColor:null}),a};function B(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var T=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),v(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?w(e.theme,e.language):void 0;return t.themeDict=n})),v(this,"getLineProps",(function(e){var n=e.key,r=e.className,a=e.style,u=C({},B(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),i=t.getThemeDict(t.props);return void 0!==i&&(u.style=i.plain),void 0!==a&&(u.style=void 0!==u.style?C({},u.style,a):a),void 0!==n&&(u.key=n),r&&(u.className+=" "+r),u})),v(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,a=n.length,u=t.getThemeDict(t.props);if(void 0!==u){if(1===a&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===a&&!r)return u[n[0]];var i=r?{display:"inline-block"}:{},o=n.map((function(e){return u[e]}));return Object.assign.apply(Object,[i].concat(o))}})),v(this,"getTokenProps",(function(e){var n=e.key,r=e.className,a=e.style,u=e.token,i=C({},B(e,["key","className","style","token"]),{className:"token "+u.types.join(" "),children:u.content,style:t.getStyleForToken(u),key:void 0});return void 0!==a&&(i.style=void 0!==i.style?C({},i.style,a):a),void 0!==n&&(i.key=n),r&&(i.className+=" "+r),i})),v(this,"tokenize",(function(e,t,n,r){var a={code:t,grammar:n,language:r,tokens:[]};e.hooks.run("before-tokenize",a);var u=a.tokens=e.tokenize(a.code,a.grammar,a.language);return e.hooks.run("after-tokenize",a),u}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,a=e.children,u=this.getThemeDict(this.props),i=t.languages[n];return a({tokens:function(e){for(var t=[[]],n=[e],r=[0],a=[e.length],u=0,i=0,o=[],s=[o];i>-1;){for(;(u=r[i]++)0?c:["plain"],l=d):(c=_(c,d.type),d.alias&&(c=_(c,d.alias)),l=d.content),"string"===typeof l){var p=l.split(S),f=p.length;o.push({types:c,content:p[0]});for(var g=1;gt in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,M=(e,t)=>{for(var n in t||(t={}))N.call(t,n)&&P(e,n,t[n]);if(x)for(var n of x(t))L.call(t,n)&&P(e,n,t[n]);return e},$=(e,t)=>R(e,I(t)),j=(e,t)=>{var n={};for(var r in e)N.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&x)for(var r of x(e))t.indexOf(r)<0&&L.call(e,r)&&(n[r]=e[r]);return n};function G(){const{theme:e,setTheme:t,resolvedTheme:n}=c(),[a,u]=(0,r.useState)(!1);(0,r.useEffect)((()=>u(!0)),[]);const i=()=>{t("dark"===e||"dark"===n?"light":"dark")};return r.createElement("span",{"aria-label":"Toggle Dark Mode",className:"text-current p-2 cursor-pointer ml-3",tabIndex:"0",onClick:i,onKeyDown:e=>{"Enter"===e.key&&i()}},!a||"dark"!==e&&"dark"!==n?r.createElement("svg",{fill:"none",viewBox:"0 0 24 24",width:"24",height:"24",stroke:"currentColor"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"})):r.createElement("svg",{fill:"none",viewBox:"0 0 24 24",width:"24",height:"24",stroke:"currentColor"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"})))}function z({author:e,date:t,tag:n,back:a,config:u}){const o=e||null,s=t?r.createElement("time",null,new Date(t).toDateString()):null,l=n?n.split(",").map((e=>e.trim())):[];return r.createElement("div",{className:"meta-line"},r.createElement("div",{className:"meta"},o,o&&s?", ":null,s,(o||s)&&l.length?" \u2022 ":null,l.map((e=>r.createElement(i.default,{key:e,href:"/tags/[tag]",as:`/tags/${e}`},r.createElement("a",{className:"tag"},e))))),a?r.createElement(i.default,{href:a},r.createElement("a",{className:"meta-back"},"Back")):null,u.darkMode&&r.createElement(G,null))}function U({navPages:e,config:t}){return r.createElement("div",{className:"nav-line"},e.map((e=>e.active?r.createElement("span",{key:e.route,className:"nav-link"},e.frontMatter.title||e.name):r.createElement(i.default,{key:e.route,href:e.route},r.createElement("a",{className:"nav-link"},e.frontMatter.title||e.name)))),t.darkMode&&r.createElement(G,null))}var H={plain:{backgroundColor:"transparent"},styles:[{types:["keyword","builtin"],style:{color:"#ff0078",fontWeight:"bold"}},{types:["comment"],style:{color:"#999",fontStyle:"italic"}},{types:["variable","language-javascript"],style:{color:"#0076ff"}},{types:["attr-name"],style:{color:"#d9931e",fontStyle:"normal"}},{types:["boolean","regex"],style:{color:"#d9931e"}}]},W=(0,r.createContext)(),Y=e=>{var t=e,{tag:n,children:u}=t,i=j(t,["tag","children"]);const o=(0,r.useContext)(W).slug(a.renderToStaticMarkup(u)||"");return r.createElement(n,M({},i),r.createElement("span",{className:"subheading-anchor",id:o}),r.createElement("a",{href:"#"+o,className:"subheading"},u,r.createElement("span",{className:"anchor-icon","aria-hidden":!0},"#")))},q={h2:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h2"},a),n)},h3:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h3"},a),n)},h4:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h4"},a),n)},h5:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h5"},a),n)},h6:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h6"},a),n)},a:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return a.href&&a.href.startsWith("https://")?r.createElement("a",M({target:"_blank",rel:"noreferrer"},a),n):r.createElement(i.default,{href:a.href},r.createElement("a",M({},a),n))},code:e=>{var t=e,{children:n,className:a,highlight:u}=t,i=j(t,["children","className","highlight"]);const o=(0,r.useMemo)((()=>u?u.split(",").map((e=>e.includes("-")?e.split("-"):+e)):[]),[u]);if(!a)return r.createElement("code",M({},i),n);const s=a.replace(/language-/,"");return r.createElement(T,$(M({},A),{code:n.trim(),language:s,theme:H}),(({className:e,style:t,tokens:n,getLineProps:a,getTokenProps:u})=>r.createElement("code",{className:e,style:M({},t)},n.map(((e,t)=>r.createElement("div",$(M({key:t},a({line:e,key:t})),{style:o.some((e=>Array.isArray(e)?e[0]<=t+1&&t+1<=e[1]:e===t+1))?{background:"#cce0f5",margin:"0 -1rem",padding:"0 1rem"}:null}),e.map(((e,t)=>r.createElement("span",M({key:t},u({token:e,key:t})))))))))))}},K=({children:e})=>{const t=new(b());return r.createElement(W.Provider,{value:t},r.createElement(F.Zo,{components:q},e))};function Z(e,t){for(let n=0;ne.frontMatter&&e.frontMatter.date&&t.frontMatter&&t.frontMatter.date?new Date(e.frontMatter.date)>new Date(t.frontMatter.date)?-1:1:-1,X=(0,s.default)((()=>n.e(697).then(n.bind(n,3697)).then((e=>e.ReactCusdis))),{ssr:!1}),J=({config:e,meta:t,navPages:n,postList:a,back:i,pageTitle:o,titleNode:s,contentNodes:l,comments:c})=>{const d=t.type||"post";return r.createElement(r.Fragment,null,r.createElement(u.default,null,r.createElement("title",null,o,e.titleSuffix),e.head?e.head({title:title,meta:t}):null),r.createElement("article",{className:"container prose prose-sm md:prose dark:prose-dark"},s||r.createElement("h1",null,o),"post"===d?r.createElement(z,$(M({},t),{back:i,config:e})):r.createElement(U,{navPages:n,config:e}),r.createElement(K,null,l,"post"===d?e.postFooter:null,"post"===d?c:null),a,e.footer))},Q=(e,t)=>{const n=(0,o.useRouter)(),{theme:u,resolvedTheme:s}=c(),l=Object.assign({readMore:"Read More \u2192",footer:r.createElement("small",{style:{display:"block",marginTop:"8rem"}},"CC BY-NC 4.0 2020 \xa9 Shu Ding."),titleSuffix:null,postFooter:null},t);let d=null,p=[];const g=e.meta.type||"post",D=e.route;"posts"!==g&&"tag"!==g&&"page"!==g||(d=[],Z(e.pageMap,(e=>{e.frontMatter&&["page","posts"].includes(e.frontMatter.type)&&(e.route===D?p.push($(M({},e),{active:!0})):p.push(e)),e.children||e.name.startsWith("_")||("posts"!==g||e.route.startsWith("/"===D?D:D+"/"))&&("page"===g||e.frontMatter&&e.frontMatter.type&&"post"!==e.frontMatter.type||d.push(e))})),d=d.sort(V),p=p.sort(V));let m=null;if("post"!==g)m=null;else{const t=[];Z(e.pageMap,(e=>{D!==e.route&&(D+"/").startsWith("/"===e.route?"/":e.route+"/")&&t.push(e)}));const n=t.reverse().find((e=>e.frontMatter&&"posts"===e.frontMatter.type));n&&(m=n.route)}return t=>{const{query:o}=n,c="tag"===g?o.tag:null,D=t.children.type(),[h,F]=function(e){if("h1"===e.type)return[e,[]];const t=e.props.children,n=r.Children.toArray(t),a=n.find((e=>"h1"===e.type));return[a||null,n.filter((e=>e!==a))]}(D),E=e.meta.title||("undefined"===typeof c?null:h?a.renderToStaticMarkup(h.props.children):null)||"";let b;l.cusdis&&(l.cusdis.appId?b=r.createElement(X,{lang:l.cusdis.lang,style:{marginTop:"4rem"},attrs:{host:l.cusdis.host||"https://cusdis.com",appId:l.cusdis.appId,pageId:n.pathname,pageTitle:E,theme:"dark"===u||"dark"===s?"dark":"light"}}):console.warn("[cusdis]","`appId` is required"));const y=d?r.createElement("ul",null,d.map((e=>{if(c){if(!((t=e).frontMatter?(t.frontMatter.tag||"").split(",").map((e=>e.trim())):[]).includes(c))return null}else if("tag"===g)return null;var t;const n=(e.frontMatter?e.frontMatter.title:null)||e.name,a=e.frontMatter?r.createElement("time",{className:"post-item-date"},new Date(e.frontMatter.date).toDateString()):null,u=e.frontMatter&&e.frontMatter.description?r.createElement("p",{className:"post-item-desc"},e.frontMatter.description,l.readMore?r.createElement(i.default,{href:e.route},r.createElement("a",{className:"post-item-more"},l.readMore)):null):null;return r.createElement("div",{key:e.route,className:"post-item"},r.createElement("h3",null,r.createElement(i.default,{href:e.route},r.createElement("a",{className:"post-item-title"},n))),u,a)}))):null;return r.createElement(f,{attribute:"class",defaultTheme:"system",enableSystem:!0},r.createElement(J,M(M({config:l,postList:y,navPages:p,back:m,pageTitle:E,titleNode:h,contentNodes:F,comments:b},e),t)))}}},7308:function(e,t,n){var r=Object.create,a=Object.defineProperty,u=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,l=e=>a(e,"__esModule",{value:!0});((e,t)=>{for(var n in l(e),t)a(e,n,{get:t[n],enumerable:!0})})(t,{SSGContext:()=>p,useSSG:()=>f,withSSG:()=>g});var c,d=(c=n(7294),((e,t,n)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let r of i(t))s.call(e,r)||"default"===r||a(e,r,{get:()=>t[r],enumerable:!(n=u(t,r))||n.enumerable});return e})(l(a(null!=c?r(o(c)):{},"default",c&&c.__esModule&&"default"in c?{get:()=>c.default,enumerable:!0}:{value:c,enumerable:!0})),c)),p=(0,d.createContext)({}),f=()=>(0,d.useContext)(p),g=e=>t=>d.default.createElement(p.Provider,{value:t.ssg},d.default.createElement(e,t))},3805:function(e,t,n){e.exports=n(7308)},9887:function(e){"use strict";e.exports=function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return t>>>0}},9035:function(e,t,n){"use strict";t.__esModule=!0,t.computeId=function(e,t){if(!t)return"jsx-"+e;var n=String(t),r=e+n;u[r]||(u[r]="jsx-"+(0,a.default)(e+"-"+n));return u[r]},t.computeSelector=function(e,t){"undefined"===typeof window&&(t=t.replace(/\/style/gi,"\\/style"));var n=e+t;u[n]||(u[n]=t.replace(/__jsx-style-dynamic-selector/g,e));return u[n]};var r,a=(r=n(9887))&&r.__esModule?r:{default:r};var u={}},4287:function(e,t,n){"use strict";var r=n(3454);function a(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0&&(i=!1),t[a?"replace":"push"](n,r,{shallow:u,locale:s,scroll:i}))}(e,r,p,f,D,m,h,F)},onMouseEnter:function(e){t.props&&"function"===typeof t.props.onMouseEnter&&t.props.onMouseEnter(e),o.isLocalURL(p)&&d(r,p,f,{priority:!0})}};if(e.passHref||"a"===t.type&&!("href"in t.props)){var S="undefined"!==typeof F?F:r&&r.locale,k=r&&r.isLocaleDomain&&o.getDomainLocale(f,S,r&&r.locales,r&&r.domainLocales);C.href=k||o.addBasePath(o.addLocale(f,S,r&&r.defaultLocale))}return i.default.cloneElement(t,C)};t.default=p},7190:function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;t&&n&&t(n)}))}),e);return s.set(t,n={id:t,observer:a,elements:r}),n}(n),a=r.id,u=r.observer,i=r.elements;return i.set(e,t),u.observe(e),function(){i.delete(e),u.unobserve(e),0===i.size&&(u.disconnect(),s.delete(a))}}(e,(function(e){return e&&d(e)}),{rootMargin:t}))}),[n,t,c]);return u.useEffect((function(){if(!o&&!c){var e=i.requestIdleCallback((function(){return d(!0)}));return function(){return i.cancelIdleCallback(e)}}}),[c]),[p,c]};var u=n(7294),i=n(9311),o="undefined"!==typeof IntersectionObserver;var s=new Map},638:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:[];return new Promise((function(t){var n=function(){return p=!0,t()};m(d,e).then(n,n)}))},window.__NEXT_PRELOADREADY=D.preloadReady;var h=D;t.default=h},7663:function(e){!function(){var t={162:function(e){var t,n,r=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"===typeof setTimeout?setTimeout:a}catch(e){t=a}try{n="function"===typeof clearTimeout?clearTimeout:u}catch(e){n=u}}();var o,s=[],l=!1,c=-1;function d(){l&&o&&(l=!1,o.length?s=o.concat(s):c=-1,s.length&&p())}function p(){if(!l){var e=i(d);l=!0;for(var t=s.length;t;){for(o=s,s=[];++c1)for(var n=1;n{},themes:[]}),c=()=>(0,r.useContext)(l),d=["light","dark"],p="(prefers-color-scheme: dark)",f=({forcedTheme:e,disableTransitionOnChange:t=!1,enableSystem:n=!0,enableColorScheme:a=!0,storageKey:u="theme",themes:i=["light","dark"],defaultTheme:o=(n?"system":"light"),attribute:s="data-theme",value:c,children:f})=>{const[F,E]=(0,r.useState)((()=>D(u,o))),[b,y]=(0,r.useState)((()=>D(u))),A=c?Object.values(c):i,v=(0,r.useCallback)((t=>{const n=h(t);y(n),"system"!==F||e||S(n,!1)}),[F,e]),C=(0,r.useRef)(v);C.current=v;const S=(0,r.useCallback)(((e,r=!0,a=!0)=>{let i=(null==c?void 0:c[e])||e;const o=t&&a?m():null;if(r)try{localStorage.setItem(u,e)}catch(e){}if("system"===e&&n){const e=h();i=(null==c?void 0:c[e])||e}if(a){const e=document.documentElement;"class"===s?(e.classList.remove(...A),e.classList.add(i)):e.setAttribute(s,i),null==o||o()}}),[]);(0,r.useEffect)((()=>{const e=function(){return C.current(...[].slice.call(arguments))},t=window.matchMedia(p);return t.addListener(e),e(t),()=>t.removeListener(e)}),[]);const k=(0,r.useCallback)((t=>{e?S(t,!0,!1):S(t),E(t)}),[e]);return(0,r.useEffect)((()=>{const e=e=>{e.key===u&&k(e.newValue||o)};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[k]),(0,r.useEffect)((()=>{if(!a)return;let t=e&&d.includes(e)?e:F&&d.includes(F)?F:"system"===F&&b||null;document.documentElement.style.setProperty("color-scheme",t)}),[a,F,b,e]),r.createElement(l.Provider,{value:{theme:F,setTheme:k,forcedTheme:e,resolvedTheme:"system"===F?b:F,themes:n?[...i,"system"]:i,systemTheme:n?b:void 0}},r.createElement(g,{forcedTheme:e,storageKey:u,attribute:s,value:c,enableSystem:n,defaultTheme:o,attrs:A}),f)},g=(0,r.memo)((({forcedTheme:e,storageKey:t,attribute:n,enableSystem:a,defaultTheme:i,value:o,attrs:s})=>{const l="class"===n?`var d=document.documentElement.classList;d.remove(${s.map((e=>`'${e}'`)).join(",")});`:"var d=document.documentElement;",c=(e,t)=>{e=(null==o?void 0:o[e])||e;const r=t?e:`'${e}'`;return"class"===n?`d.add(${r})`:`d.setAttribute('${n}', ${r})`},d="system"===i;return r.createElement(u.default,null,r.createElement("script",e?{key:"next-themes-script",dangerouslySetInnerHTML:{__html:`!function(){${l}${c(e)}}()`}}:a?{key:"next-themes-script",dangerouslySetInnerHTML:{__html:`!function(){try {${l}var e=localStorage.getItem('${t}');${d?"":c(i)+";"}if("system"===e||(!e&&${d})){var t="${p}",m=window.matchMedia(t);m.media!==t||m.matches?${c("dark")}:${c("light")}}else if(e) ${o?`var x=${JSON.stringify(o)};`:""}${c(o?"x[e]":"e",!0)}}catch(e){}}()`}}:{key:"next-themes-script",dangerouslySetInnerHTML:{__html:`!function(){try{${l}var e=localStorage.getItem("${t}");if(e){${o?`var x=${JSON.stringify(o)};`:""}${c(o?"x[e]":"e",!0)}}else{${c(i)};}}catch(t){}}();`}}))}),((e,t)=>e.forcedTheme===t.forcedTheme)),D=(e,t)=>{if("undefined"==typeof window)return;let n;try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t},m=()=>{const e=document.createElement("style");return e.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout((()=>{document.head.removeChild(e)}),1)}},h=e=>(e||(e=window.matchMedia(p)),e.matches?"dark":"light");var F=n(1151),E=n(9671),b=n.n(E),y=function(){var e=0,t={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(y instanceof s)){if(D&&E!=n.length-1){if(p.lastIndex=b,!(_=p.exec(e)))break;for(var A=_.index+(g?_[1].length:0),v=_.index+_[0].length,C=E,S=b,k=n.length;C=(S+=n[C].length)&&(++E,b=S);if(n[E]instanceof s)continue;w=C-E,y=e.slice(b,S),_.index-=b}else{p.lastIndex=0;var _=p.exec(y),w=1}if(_){g&&(m=_[1]?_[1].length:0);v=(A=_.index+m)+(_=_[0].slice(m)).length;var B=y.slice(0,A),T=y.slice(v),O=[E,w];B&&(++E,b+=B.length,O.push(B));var R=new s(l,f?t.tokenize(_,f):_,h,_,D);if(O.push(R),T&&O.push(T),Array.prototype.splice.apply(n,O),1!=w&&t.matchGrammar(e,n,r,E,b,!0,l),i)break}else if(i)break}}}}},hooks:{add:function(){},run:function(e,t){}},tokenize:function(e,n,r){var a=[e],u=n.rest;if(u){for(var i in u)n[i]=u[i];delete n.rest}return t.matchGrammar(e,a,n,0,0,!1),a}},n=t.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};return n.stringify=function(e,r,a){if("string"==typeof e)return e;if("Array"===t.util.type(e))return e.map((function(t){return n.stringify(t,r,e)})).join("");var u={type:e.type,content:n.stringify(e.content,r,a),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:a};if(e.alias){var i="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(u.classes,i)}var o=Object.keys(u.attributes).map((function(e){return e+'="'+(u.attributes[e]||"").replace(/"/g,""")+'"'})).join(" ");return"<"+u.tag+' class="'+u.classes.join(" ")+'"'+(o?" "+o:"")+">"+u.content+""},t}();y.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},y.languages.markup.tag.inside["attr-value"].inside.entity=y.languages.markup.entity,y.languages.markup.doctype.inside["internal-subset"].inside=y.languages.markup,y.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(y.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:y.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:y.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},y.languages.insertBefore("markup","cdata",a)}}),y.languages.html=y.languages.markup,y.languages.mathml=y.languages.markup,y.languages.svg=y.languages.markup,y.languages.xml=y.languages.extend("markup",{}),y.languages.ssml=y.languages.xml,y.languages.atom=y.languages.xml,y.languages.rss=y.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)(["'])(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|(?!\2)[^\\`$])*\2/,lookbehind:!0,greedy:!0,inside:r}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],u=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},y.languages.c=y.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,function:/[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),y.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},y.languages.c.string],comment:y.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:y.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete y.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/;e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),e.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","operator",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(y),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/(^|["'\s])style\s*=\s*(?:"[^"]*"|'[^']*')/i,lookbehind:!0,inside:{"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{style:{pattern:/(["'])[\s\S]+(?=["']$)/,lookbehind:!0,alias:"language-css",inside:e.languages.css},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},"attr-name":/^style/i}}},n.tag))}(y),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+\b)/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#(?:[\da-f]{1,2}){3,4}\b/i,alias:"color"},color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(y),y.languages.javascript=y.languages.extend("clike",{"class-name":[y.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),y.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,y.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:y.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:y.languages.javascript},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,inside:y.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:y.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:y.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),y.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:y.languages.javascript}},string:/[\s\S]+/}}}),y.languages.markup&&y.languages.markup.tag.addInlined("script","javascript"),y.languages.js=y.languages.javascript,function(e){var t=e.util.clone(e.languages.javascript);e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=/<\/?(?:[\w.:-]+(?:\s+(?:[\w.:$-]+(?:=(?:"(?:\\[^]|[^\\"])*"|'(?:\\[^]|[^\\'])*'|[^\s{'">=]+|\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}))?|\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}))*\s*\/?)?>/i,e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[^]|[^\\"])*"|'(?:\\[^]|[^\\'])*'|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},e.languages.jsx.tag),e.languages.insertBefore("inside","attr-value",{script:{pattern:/=(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag);var n=function(e){return e?"string"===typeof e?e:"string"===typeof e.content?e.content:e.content.map(n).join(""):""},r=function(t){for(var a=[],u=0;u0&&a[a.length-1].tagName===n(i.content[0].content[1])&&a.pop():"/>"===i.content[i.content.length-1].content||a.push({tagName:n(i.content[0].content[1]),openedBraces:0}):a.length>0&&"punctuation"===i.type&&"{"===i.content?a[a.length-1].openedBraces++:a.length>0&&a[a.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?a[a.length-1].openedBraces--:o=!0),(o||"string"===typeof i)&&a.length>0&&0===a[a.length-1].openedBraces){var s=n(i);u0&&("string"===typeof t[u-1]||"plain-text"===t[u-1].type)&&(s=n(t[u-1])+s,t.splice(u-1,1),u--),t[u]=new e.Token("plain-text",s,null,s)}i.content&&"string"!==typeof i.content&&r(i.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||r(e.tokens)}))}(y),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|for|finally|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(y),y.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},y.languages.go=y.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete y.languages.go["class-name"],y.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:y.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*)[a-zA-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,punctuation:/[!(){}\[\]:=,]/,constant:/\b(?!ID\b)[A-Z][A-Z_\d]*\b/},function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,u){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"===typeof u&&!u(e))return e;for(var a,o=i.length;-1!==n.code.indexOf(a=t(r,o));)++o;return i[o]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,u=Object.keys(n.tokenStack);!function i(o){for(var s=0;s=u.length);s++){var l=o[s];if("string"===typeof l||l.content&&"string"===typeof l.content){var c=u[a],d=n.tokenStack[c],p="string"===typeof l?l:l.content,f=t(r,c),g=p.indexOf(f);if(g>-1){++a;var D=p.substring(0,g),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),h=p.substring(g+f.length),F=[];D&&F.push.apply(F,i([D])),F.push(m),h&&F.push.apply(F,i([h])),"string"===typeof l?o.splice.apply(o,[s,1].concat(F)):l.content=F}}else l.content&&i(l.content)}return o}(n.tokens)}}}})}(y),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:true|false)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}))}(y),y.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},y.languages.webmanifest=y.languages.json,y.languages.less=y.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*\/]/}),y.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),y.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?!\n|\r\n?))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),u=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"font-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+u+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+u+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+u+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\r\n]+`/,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+?\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!==typeof t)for(var n=0,r=t.length;n]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete y.languages.objectivec["class-name"],y.languages.objc=y.languages.objectivec,y.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?[\d_]+)?)/i,directive:{pattern:/\B#\w+/,alias:"important"},label:{pattern:/\B~\w+/,alias:"function"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"variable"},module:{pattern:/\b[A-Z]\w+/,alias:"variable"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/[(){}\[\]|.,:;]|\b_\b/},y.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^\s*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},y.languages.python["string-interpolation"].inside.interpolation.inside.rest=y.languages.python,y.languages.py=y.languages.python,y.languages.reason=y.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),y.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete y.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/,lookbehind:!0}})}(y),y.languages.scss=y.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),y.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),y.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),y.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),y.languages.scss.atrule.inside.rest=y.languages.scss,y.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/url\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(?:\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(y),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},keyword:/\b(?:abstract|as|asserts|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),delete e.languages.typescript.parameter;var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(y),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t);var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(y),y.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),u=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|]|}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+u+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/true|false/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(u),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(y);var A={Prism:y,theme:{plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","at-rule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]}};function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(){return(C=Object.assign||function(e){for(var t=1;t0&&e[n-1]===t?e:e.concat(t)},w=function(e,t){var n=e.plain,r=Object.create(null),a=e.styles.reduce((function(e,n){var r=n.languages,a=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=C({},e[t],a);e[t]=n})),e}),r);return a.root=n,a.plain=C({},n,{backgroundColor:null}),a};function B(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var T=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),v(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?w(e.theme,e.language):void 0;return t.themeDict=n})),v(this,"getLineProps",(function(e){var n=e.key,r=e.className,a=e.style,u=C({},B(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),i=t.getThemeDict(t.props);return void 0!==i&&(u.style=i.plain),void 0!==a&&(u.style=void 0!==u.style?C({},u.style,a):a),void 0!==n&&(u.key=n),r&&(u.className+=" "+r),u})),v(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,a=n.length,u=t.getThemeDict(t.props);if(void 0!==u){if(1===a&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===a&&!r)return u[n[0]];var i=r?{display:"inline-block"}:{},o=n.map((function(e){return u[e]}));return Object.assign.apply(Object,[i].concat(o))}})),v(this,"getTokenProps",(function(e){var n=e.key,r=e.className,a=e.style,u=e.token,i=C({},B(e,["key","className","style","token"]),{className:"token "+u.types.join(" "),children:u.content,style:t.getStyleForToken(u),key:void 0});return void 0!==a&&(i.style=void 0!==i.style?C({},i.style,a):a),void 0!==n&&(i.key=n),r&&(i.className+=" "+r),i})),v(this,"tokenize",(function(e,t,n,r){var a={code:t,grammar:n,language:r,tokens:[]};e.hooks.run("before-tokenize",a);var u=a.tokens=e.tokenize(a.code,a.grammar,a.language);return e.hooks.run("after-tokenize",a),u}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,a=e.children,u=this.getThemeDict(this.props),i=t.languages[n];return a({tokens:function(e){for(var t=[[]],n=[e],r=[0],a=[e.length],u=0,i=0,o=[],s=[o];i>-1;){for(;(u=r[i]++)0?c:["plain"],l=d):(c=_(c,d.type),d.alias&&(c=_(c,d.alias)),l=d.content),"string"===typeof l){var p=l.split(S),f=p.length;o.push({types:c,content:p[0]});for(var g=1;gt in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,M=(e,t)=>{for(var n in t||(t={}))N.call(t,n)&&P(e,n,t[n]);if(x)for(var n of x(t))L.call(t,n)&&P(e,n,t[n]);return e},$=(e,t)=>R(e,I(t)),j=(e,t)=>{var n={};for(var r in e)N.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&x)for(var r of x(e))t.indexOf(r)<0&&L.call(e,r)&&(n[r]=e[r]);return n};function G(){const{theme:e,setTheme:t,resolvedTheme:n}=c(),[a,u]=(0,r.useState)(!1);(0,r.useEffect)((()=>u(!0)),[]);const i=()=>{t("dark"===e||"dark"===n?"light":"dark")};return r.createElement("span",{"aria-label":"Toggle Dark Mode",className:"text-current p-2 cursor-pointer ml-3",tabIndex:"0",onClick:i,onKeyDown:e=>{"Enter"===e.key&&i()}},!a||"dark"!==e&&"dark"!==n?r.createElement("svg",{fill:"none",viewBox:"0 0 24 24",width:"24",height:"24",stroke:"currentColor"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"})):r.createElement("svg",{fill:"none",viewBox:"0 0 24 24",width:"24",height:"24",stroke:"currentColor"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"})))}function z({author:e,date:t,tag:n,back:a,config:u}){const o=e||null,s=t?r.createElement("time",null,new Date(t).toDateString()):null,l=n?n.split(",").map((e=>e.trim())):[];return r.createElement("div",{className:"meta-line"},r.createElement("div",{className:"meta"},o,o&&s?", ":null,s,(o||s)&&l.length?" \u2022 ":null,l.map((e=>r.createElement(i.default,{key:e,href:"/tags/[tag]",as:`/tags/${e}`},r.createElement("a",{className:"tag"},e))))),a?r.createElement(i.default,{href:a},r.createElement("a",{className:"meta-back"},"Back")):null,u.darkMode&&r.createElement(G,null))}function U({navPages:e,config:t}){return r.createElement("div",{className:"nav-line"},e.map((e=>e.active?r.createElement("span",{key:e.route,className:"nav-link"},e.frontMatter.title||e.name):r.createElement(i.default,{key:e.route,href:e.route},r.createElement("a",{className:"nav-link"},e.frontMatter.title||e.name)))),t.darkMode&&r.createElement(G,null))}var H={plain:{backgroundColor:"transparent"},styles:[{types:["keyword","builtin"],style:{color:"#ff0078",fontWeight:"bold"}},{types:["comment"],style:{color:"#999",fontStyle:"italic"}},{types:["variable","language-javascript"],style:{color:"#0076ff"}},{types:["attr-name"],style:{color:"#d9931e",fontStyle:"normal"}},{types:["boolean","regex"],style:{color:"#d9931e"}}]},W=(0,r.createContext)(),Y=e=>{var t=e,{tag:n,children:u}=t,i=j(t,["tag","children"]);const o=(0,r.useContext)(W).slug(a.renderToStaticMarkup(u)||"");return r.createElement(n,M({},i),r.createElement("span",{className:"subheading-anchor",id:o}),r.createElement("a",{href:"#"+o,className:"subheading"},u,r.createElement("span",{className:"anchor-icon","aria-hidden":!0},"#")))},q={h2:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h2"},a),n)},h3:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h3"},a),n)},h4:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h4"},a),n)},h5:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h5"},a),n)},h6:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return r.createElement(Y,M({tag:"h6"},a),n)},a:e=>{var t=e,{children:n}=t,a=j(t,["children"]);return a.href&&a.href.startsWith("https://")?r.createElement("a",M({target:"_blank",rel:"noreferrer"},a),n):r.createElement(i.default,{href:a.href},r.createElement("a",M({},a),n))},code:e=>{var t=e,{children:n,className:a,highlight:u}=t,i=j(t,["children","className","highlight"]);const o=(0,r.useMemo)((()=>u?u.split(",").map((e=>e.includes("-")?e.split("-"):+e)):[]),[u]);if(!a)return r.createElement("code",M({},i),n);const s=a.replace(/language-/,"");return r.createElement(T,$(M({},A),{code:n.trim(),language:s,theme:H}),(({className:e,style:t,tokens:n,getLineProps:a,getTokenProps:u})=>r.createElement("code",{className:e,style:M({},t)},n.map(((e,t)=>r.createElement("div",$(M({key:t},a({line:e,key:t})),{style:o.some((e=>Array.isArray(e)?e[0]<=t+1&&t+1<=e[1]:e===t+1))?{background:"#cce0f5",margin:"0 -1rem",padding:"0 1rem"}:null}),e.map(((e,t)=>r.createElement("span",M({key:t},u({token:e,key:t})))))))))))}},K=({children:e})=>{const t=new(b());return r.createElement(W.Provider,{value:t},r.createElement(F.Zo,{components:q},e))};function Z(e,t){for(let n=0;ne.frontMatter&&e.frontMatter.date&&t.frontMatter&&t.frontMatter.date?new Date(e.frontMatter.date)>new Date(t.frontMatter.date)?-1:1:-1,X=(0,s.default)((()=>n.e(697).then(n.bind(n,3697)).then((e=>e.ReactCusdis))),{ssr:!1}),J=({config:e,meta:t,navPages:n,postList:a,back:i,pageTitle:o,titleNode:s,contentNodes:l,comments:c})=>{const d=t.type||"post";return r.createElement(r.Fragment,null,r.createElement(u.default,null,r.createElement("title",null,o,e.titleSuffix),e.head?e.head({title:title,meta:t}):null),r.createElement("article",{className:"container prose prose-sm md:prose dark:prose-dark"},s||r.createElement("h1",null,o),"post"===d?r.createElement(z,$(M({},t),{back:i,config:e})):r.createElement(U,{navPages:n,config:e}),r.createElement(K,null,l,"post"===d?e.postFooter:null,"post"===d?c:null),a,e.footer))},Q=(e,t)=>{const n=(0,o.useRouter)(),{theme:u,resolvedTheme:s}=c(),l=Object.assign({readMore:"Read More \u2192",footer:r.createElement("small",{style:{display:"block",marginTop:"8rem"}},"CC BY-NC 4.0 2020 \xa9 Shu Ding."),titleSuffix:null,postFooter:null},t);let d=null,p=[];const g=e.meta.type||"post",D=e.route;"posts"!==g&&"tag"!==g&&"page"!==g||(d=[],Z(e.pageMap,(e=>{e.frontMatter&&["page","posts"].includes(e.frontMatter.type)&&(e.route===D?p.push($(M({},e),{active:!0})):p.push(e)),e.children||e.name.startsWith("_")||("posts"!==g||e.route.startsWith("/"===D?D:D+"/"))&&("page"===g||e.frontMatter&&e.frontMatter.type&&"post"!==e.frontMatter.type||d.push(e))})),d=d.sort(V),p=p.sort(V));let m=null;if("post"!==g)m=null;else{const t=[];Z(e.pageMap,(e=>{D!==e.route&&(D+"/").startsWith("/"===e.route?"/":e.route+"/")&&t.push(e)}));const n=t.reverse().find((e=>e.frontMatter&&"posts"===e.frontMatter.type));n&&(m=n.route)}return t=>{const{query:o}=n,c="tag"===g?o.tag:null,D=t.children.type(),[h,F]=function(e){if("h1"===e.type)return[e,[]];const t=e.props.children,n=r.Children.toArray(t),a=n.find((e=>"h1"===e.type));return[a||null,n.filter((e=>e!==a))]}(D),E=e.meta.title||("undefined"===typeof c?null:h?a.renderToStaticMarkup(h.props.children):null)||"";let b;l.cusdis&&(l.cusdis.appId?b=r.createElement(X,{lang:l.cusdis.lang,style:{marginTop:"4rem"},attrs:{host:l.cusdis.host||"https://cusdis.com",appId:l.cusdis.appId,pageId:n.pathname,pageTitle:E,theme:"dark"===u||"dark"===s?"dark":"light"}}):console.warn("[cusdis]","`appId` is required"));const y=d?r.createElement("ul",null,d.map((e=>{if(c){if(!((t=e).frontMatter?(t.frontMatter.tag||"").split(",").map((e=>e.trim())):[]).includes(c))return null}else if("tag"===g)return null;var t;const n=(e.frontMatter?e.frontMatter.title:null)||e.name,a=e.frontMatter?r.createElement("time",{className:"post-item-date"},new Date(e.frontMatter.date).toDateString()):null,u=e.frontMatter&&e.frontMatter.description?r.createElement("p",{className:"post-item-desc"},e.frontMatter.description,l.readMore?r.createElement(i.default,{href:e.route},r.createElement("a",{className:"post-item-more"},l.readMore)):null):null;return r.createElement("div",{key:e.route,className:"post-item"},r.createElement("h3",null,r.createElement(i.default,{href:e.route},r.createElement("a",{className:"post-item-title"},n))),u,a)}))):null;return r.createElement(f,{attribute:"class",defaultTheme:"system",enableSystem:!0},r.createElement(J,M(M({config:l,postList:y,navPages:p,back:m,pageTitle:E,titleNode:h,contentNodes:F,comments:b},e),t)))}}},7308:function(e,t,n){var r=Object.create,a=Object.defineProperty,u=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,l=e=>a(e,"__esModule",{value:!0});((e,t)=>{for(var n in l(e),t)a(e,n,{get:t[n],enumerable:!0})})(t,{SSGContext:()=>p,useSSG:()=>f,withSSG:()=>g});var c,d=(c=n(7294),((e,t,n)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let r of i(t))s.call(e,r)||"default"===r||a(e,r,{get:()=>t[r],enumerable:!(n=u(t,r))||n.enumerable});return e})(l(a(null!=c?r(o(c)):{},"default",c&&c.__esModule&&"default"in c?{get:()=>c.default,enumerable:!0}:{value:c,enumerable:!0})),c)),p=(0,d.createContext)({}),f=()=>(0,d.useContext)(p),g=e=>t=>d.default.createElement(p.Provider,{value:t.ssg},d.default.createElement(e,t))},3805:function(e,t,n){e.exports=n(7308)},9887:function(e){"use strict";e.exports=function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return t>>>0}},9035:function(e,t,n){"use strict";t.__esModule=!0,t.computeId=function(e,t){if(!t)return"jsx-"+e;var n=String(t),r=e+n;u[r]||(u[r]="jsx-"+(0,a.default)(e+"-"+n));return u[r]},t.computeSelector=function(e,t){"undefined"===typeof window&&(t=t.replace(/\/style/gi,"\\/style"));var n=e+t;u[n]||(u[n]=t.replace(/__jsx-style-dynamic-selector/g,e));return u[n]};var r,a=(r=n(9887))&&r.__esModule?r:{default:r};var u={}},4287:function(e,t,n){"use strict";var r=n(3454);function a(e,t){for(var n=0;n=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}e.default=function(t){var e=t.src,n=t.alt,i=t.width,l=u(t,["src","alt","width"]),s=(0,r.useState)(!1),f=s[0],p=s[1];return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{style:{textAlign:"center"},onClick:function(){p(!f)},children:(0,o.jsx)("img",c({src:e,alt:n,width:i},l,{style:{cursor:"pointer"}}))}),f&&(0,o.jsx)(a(),{image:e,alt:n,title:n,onClose:function(){return p(!1)}})]})}},8198:function(){},7421:function(){},7787:function(){},9008:function(t,e,n){t.exports=n(5443)},7314:function(t,e,n){t.exports=function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e){t.exports=n(7294)},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return v}));var o=n(0),r=n.n(o);function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var n=0;n1)return c.resetZoom();var f=(i<1?Math.ceil(s/i):i)*i,p=m(t),d=null===(e=c._cont.current)||void 0===e||null===(n=e.getBoundingClientRect)||void 0===n?void 0:n.call(e),b=d.x+d.width/2,v=d.y+d.height/2,y=-1*(p.x-b)*f,g=-1*(p.y-v)*f;c.setState({x:y,y:g,zoom:f})})),d(f(c),"navigateImage",(function(t,e){c.stopSideEffect(e);var n=0;switch(t){case"next":n=c.state.current+1;break;case"prev":n=c.state.current-1}n>=c.props.images.length?n=0:n<0&&(n=c.props.images.length-1),c.setState({current:n,x:0,y:0,zoom:1,rotate:0,loading:!0})})),d(f(c),"startMove",(function(t){if(c.state.zoom<=1)return!1;c.setState({moving:!0});var e=m(t);c.initX=e.x-c.lastX,c.initY=e.y-c.lastY})),d(f(c),"duringMove",(function(t){if(!c.state.moving)return!1;var e=m(t);c.lastX=e.x-c.initX,c.lastY=e.y-c.initY,c.setState({x:e.x-c.initX,y:e.y-c.initY})})),d(f(c),"endMove",(function(t){return c.setState({moving:!1})})),d(f(c),"applyZoom",(function(t){var e=c.props.zoomStep,n=void 0===e?.3:e;switch(t){case"in":c.setState({zoom:c.state.zoom+n});break;case"out":var o=c.state.zoom-n;if(o<1)break;1===o?c.setState({x:0,y:0,zoom:1}):c.setState({zoom:o});break;case"reset":c.resetZoom()}})),d(f(c),"applyRotate",(function(t){switch(t){case"cw":c.setState({rotate:c.state.rotate+90});break;case"acw":c.setState({rotate:c.state.rotate-90})}})),d(f(c),"reset",(function(t){c.stopSideEffect(t),c.setState({x:0,y:0,zoom:1,rotate:0})})),d(f(c),"exit",(function(t){if("function"==typeof c.props.onClose)return c.props.onClose(t);console.error("No Exit function passed on prop: onClose. Clicking the close button will do nothing")})),d(f(c),"shouldShowReset",(function(){return c.state.x||c.state.y||1!==c.state.zoom||0!==c.state.rotate})),d(f(c),"canvasClick",(function(t){var e=c.props.clickOutsideToExit;if((void 0===e||e)&&c.state.zoom<=1)return c.exit(t)})),d(f(c),"keyboardNavigation",(function(t){var e=c.props,n=e.allowZoom,o=void 0===n||n,r=e.allowReset,i=void 0===r||r,a=c.state,l=a.multi,u=a.x,s=a.y,f=a.zoom;switch(t.key){case"ArrowLeft":l&&1===f?c.navigateImage("prev",t):f>1&&c.setState({x:u-20});break;case"ArrowRight":l&&1===f?c.navigateImage("next",t):f>1&&c.setState({x:u+20});break;case"ArrowUp":f>1&&c.setState({y:s+20});break;case"ArrowDown":f>1&&c.setState({y:s-20});break;case"+":o&&c.applyZoom("in");break;case"-":o&&c.applyZoom("out");break;case"Escape":i&&c.shouldShowReset()?c.reset(t):c.exit(t)}})),c}return e=i,(n=[{key:"componentDidMount",value:function(){document.body.classList.add("lb-open-lightbox");var t=this.props.keyboardInteraction;(void 0===t||t)&&document.addEventListener("keyup",this.keyboardNavigation)}},{key:"componentWillUnmount",value:function(){document.body.classList.remove("lb-open-lightbox");var t=this.props.keyboardInteraction;(void 0===t||t)&&document.removeEventListener("keyup",this.keyboardNavigation)}},{key:"render",value:function(){var t=this,e=this.getCurrentImage(this.state,this.props),n=this.getCurrentTitle(this.state,this.props);if(!e)return console.warn("Not showing lightbox because no image(s) was supplied"),null;var o=this.props,i=o.allowZoom,a=void 0===i||i,l=o.allowRotate,c=void 0===l||l,u=o.buttonAlign,s=void 0===u?"flex-end":u,f=o.showTitle,p=void 0===f||f,d=o.allowReset,m=void 0===d||d,v=this.state,y=v.x,g=v.y,h=v.zoom,x=v.rotate,w=v.multi,k=v.loading,O=v.moving,S=m&&this.shouldShowReset();return r.a.createElement("div",{className:"lb-container"},r.a.createElement("div",{className:"lb-header",style:{justifyContent:s}},r.a.createElement(b,{condition:p&&n},r.a.createElement("div",{className:"lb-title",style:{display:"center"===s?"none":"flex",order:"flex-start"===s?"2":"unset"}},r.a.createElement("span",{title:n,style:{textAlign:"flex-start"===s?"right":"left"}},n))),r.a.createElement(b,{condition:"center"===s||S},r.a.createElement("div",{title:"Reset",style:{order:"flex-start"===s?"1":"unset"},className:"lb-button lb-icon-reset lb-hide-mobile reload ".concat(S?"":"lb-disabled"),onClick:this.reset})),r.a.createElement(b,{condition:w},r.a.createElement("div",{title:"Previous",className:"lb-button lb-icon-arrow prev lb-hide-mobile",onClick:function(e){return t.navigateImage("prev",e)}}),r.a.createElement("div",{title:"Next",className:"lb-button lb-icon-arrow next lb-hide-mobile",onClick:function(e){return t.navigateImage("next",e)}})),r.a.createElement(b,{condition:a},r.a.createElement("div",{title:"Zoom In",className:"lb-button lb-icon-zoomin zoomin",onClick:function(){return t.applyZoom("in")}}),r.a.createElement("div",{title:"Zoom Out",className:"lb-button lb-icon-zoomout zoomout ".concat(h<=1?"lb-disabled":""),onClick:function(){return t.applyZoom("out")}})),r.a.createElement(b,{condition:c},r.a.createElement("div",{title:"Rotate left",className:"lb-button lb-icon-rotate rotatel",onClick:function(){return t.applyRotate("acw")}}),r.a.createElement("div",{title:"Rotate right",className:"lb-button lb-icon-rotate rotater",onClick:function(){return t.applyRotate("cw")}})),r.a.createElement("div",{title:"Close",className:"lb-button lb-icon-close close",style:{order:"flex-start"===s?"-1":"unset"},onClick:function(e){return t.exit(e)}})),r.a.createElement("div",{className:"lb-canvas".concat(k?" lb-loading":""),ref:this._cont,onClick:function(e){return t.canvasClick(e)}},r.a.createElement("img",{draggable:"false",style:{transform:this.createTransform(y,g,h,x),cursor:h>1?"grab":"unset",transition:O?"none":"all 0.1s"},onMouseDown:function(e){return t.startMove(e)},onTouchStart:function(e){return t.startMove(e)},onMouseMove:function(e){return t.duringMove(e)},onTouchMove:function(e){return t.duringMove(e)},onMouseUp:function(e){return t.endMove(e)},onMouseLeave:function(e){return t.endMove(e)},onTouchEnd:function(e){return t.endMove(e)},onClick:function(e){return t.stopSideEffect(e)},onDoubleClick:function(e){return t.shockZoom(e)},onLoad:function(e){return t.setState({loading:!1})},className:"lb-img".concat(k?" lb-loading":""),title:n,src:e,alt:n}),r.a.createElement("div",{className:"mobile-controls lb-show-mobile"},w?r.a.createElement("div",{title:"Previous",className:"lb-button lb-icon-arrow prev",onClick:function(e){return t.navigateImage("prev",e)}}):null,S?r.a.createElement("div",{title:"Reset",className:"lb-button lb-icon-reset reload",onClick:this.reset}):null,w?r.a.createElement("div",{title:"Next",className:"lb-button lb-icon-arrow next",onClick:function(e){return t.navigateImage("next",e)}}):null)))}}])&&l(e.prototype,n),i}(r.a.Component)}])},1151:function(t,e,n){"use strict";n.d(e,{ah:function(){return i},Zo:function(){return a}});var o=n(7294);const r=o.createContext({});function i(t){const e=o.useContext(r);return"function"===typeof t?t(e):{...e,...t}}function a({components:t,children:e,disableParentContext:n}){let a=i(t);return n&&(a=t||{}),o.createElement(r.Provider,{value:a},e)}}},function(t){var e=function(e){return t(t.s=e)};t.O(0,[774,179],(function(){return e(1780),e(387)}));var n=t.O();_N_E=n}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/_app-e89de317f965cd3b.js b/_next/static/chunks/pages/_app-e89de317f965cd3b.js deleted file mode 100644 index 7f2d3d3..0000000 --- a/_next/static/chunks/pages/_app-e89de317f965cd3b.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{1780:function(n,e,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return t(8510)}])},8510:function(n,e,t){"use strict";t.r(e),t.d(e,{default:function(){return i}});var r=t(5893),o=(t(8198),t(9008));t(7787);function u(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function f(n){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},i=function(){var i=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",ul:"ul",li:"li",h3:"h3",pre:"pre",code:"code",em:"em",hr:"hr",h4:"h4",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td"},(0,t.ah)(),n.components);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.h1,{children:"Hafta 1"}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"Ama\xe7 :"})," Terminal kullan\u0131m\u0131n\u0131 kavratmak, dosya sistem hiyerar\u015fisini kavratmak, paket y\xf6neticisi kavram\u0131ndan bahsetmek."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"Yazarlar :"})," ",(0,a.jsx)(i.a,{href:"https://github.com/boratanrikulu",children:(0,a.jsx)(i.strong,{children:"boratanrikulu"})})," ",(0,a.jsx)(i.strong,{children:"&&"})," ",(0,a.jsx)(i.a,{href:"https://github.com/hasantezcan",children:(0,a.jsx)(i.strong,{children:"hasantezcan"})})]}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"Terminal Nedir ?"}),"\n",(0,a.jsx)(i.p,{children:"Terminal, i\u015fletim sisteminizi shell ile kullanman\u0131z\u0131 sa\u011flayan bir aray\xfczd\xfcr. GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda SHELL olarak genellikle BASH kabu\u011fu (shell) kullan\u0131l\u0131r."}),"\n",(0,a.jsx)(i.p,{children:"Windows'ta bunun kar\u015f\u0131l\u0131\u011f\u0131 CMD denebilir."}),"\n",(0,a.jsxs)(i.p,{children:["Windows'ta \u015fuana kadar hi\xe7 CMD'ye girmeden hayatta kalabiliyorsan\u0131z, asl\u0131nda GNU/Linux da\u011f\u0131t\u0131mlar\u0131n\u0131n ",(0,a.jsx)(i.strong,{children:"bir\xe7o\u011funda da"})," terminale hi\xe7 u\u011framadan hayatta kalabilirsiniz."]}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"cmd",src:"/images/hafta1/2.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"Peki neden size terminal kullan\u0131m\u0131 anlat\u0131yoruz ?"}),"\n",(0,a.jsx)(i.p,{children:"\u0130\u015fletim sistemine tamamen hakim olmak, isteklerinizi grafik aray\xfcz\xfcn\xfcn hantall\u0131\u011f\u0131na tak\u0131lmadan yapmak ve i\u015flerinizi \xe7ok daha h\u0131zl\u0131 g\xf6rmek a\xe7\u0131s\u0131ndan terminal kullan\u0131m\u0131 \xf6nemlidir."}),"\n",(0,a.jsxs)(i.p,{children:["Ayr\u0131ca mesle\u011fimiz gere\u011fi burada \xe7ok i\u015fimiz oluyor ",(0,a.jsx)(i.strong,{children:":)"}),"."]}),"\n",(0,a.jsx)(i.p,{children:"\xd6rne\u011fin en basitinden, birka\xe7 hafta i\xe7erisinde e\u011fitimini alaca\u011f\u0131n\u0131z git kullan\u0131m\u0131n\u0131n terminal \xfczerinden yap\u0131lmas\u0131 gibi. Onun d\u0131\u015f\u0131nda, yazd\u0131\u011f\u0131n\u0131z herhangi bir program\u0131 derlerken terminal kullanman\u0131z gerekti\u011fi gibi fakt\xf6rler terminal kullan\u0131m\u0131na al\u0131\u015fman\u0131z a\xe7\u0131s\u0131ndan \xf6nemlidir."}),"\n",(0,a.jsx)(i.p,{children:"Yani \u015fuan \xf6\u011frenece\u011finiz bilgiler ba\u015fta anlams\u0131z, hantal ve yava\u015f olarak g\xf6z\xfckecek olsa bile asl\u0131nda ileriki mesleki hayat\u0131n\u0131zda \xe7ok\xe7a rahat etmenizi sa\u011flayacakt\u0131r."}),"\n",(0,a.jsx)(i.p,{children:"Ne kadar erken \xf6\u011frenmeniz sizin i\xe7in o kadar iyi olacakt\u0131r."}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"SHELL Nedir ?"}),"\n",(0,a.jsx)(i.p,{children:"SHELL i\u015fletim sistemlerinin servislerini kullanmak amac\u0131yla kullan\u0131lan bir kullan\u0131c\u0131 arabirimidir (user interface), bir programd\u0131r."}),"\n",(0,a.jsx)(i.p,{children:"Kabuk (shell) , \xe7ekirdek ile kullan\u0131c\u0131 aras\u0131nda ara g\xf6rev g\xf6r\xfcr."}),"\n",(0,a.jsx)(i.p,{children:"Bir\xe7ok kabuk \xe7e\u015fidi vard\u0131r;"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsx)(i.li,{children:"sh"}),"\n",(0,a.jsx)(i.li,{children:"bash"}),"\n",(0,a.jsx)(i.li,{children:"zsh"}),"\n",(0,a.jsx)(i.li,{children:"csh"}),"\n",(0,a.jsx)(i.li,{children:"ksh"}),"\n",(0,a.jsx)(i.li,{children:"tcsh"}),"\n"]}),"\n",(0,a.jsx)(i.p,{children:"PauSiber Dev'de ise kabuk yani shell olarak ZSH kullan\u0131lmaktad\u0131r. Kabuk olarak BASH yerine ZSH kullanma sebebimiz; ZSH'\u0131n BASH'e g\xf6re daha fazla \xf6zellik i\xe7ermesi."}),"\n",(0,a.jsx)(i.p,{children:"Bi de \u015fekil filan yani .s.s.s"}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"zsh",src:"/images/hafta1/0.png",width:"800"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"bash",src:"/images/hafta1/1.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"Temel Komutlar"}),"\n",(0,a.jsx)(i.p,{children:"Terminalda kullanabilece\u011finiz say\u0131s\u0131z uygulama, say\u0131s\u0131z komut var. Biz bu e\u011fitim s\u0131ras\u0131nda yaln\u0131zca temel d\xfczeyde olan komutlar\u0131 g\xf6sterece\u011fiz."}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"ls [list]"}),"\n",(0,a.jsx)(i.p,{children:"Herhangi bir dizinin i\xe7ini g\xf6rmek i\xe7in kulland\u0131\u011f\u0131m\u0131z komuttur."}),"\n",(0,a.jsx)(i.p,{children:"\xd6rne\u011fin terminalde a\u015fa\u011f\u0131daki gibi bir komut y\xfcr\xfct\xfcrsek, o s\u0131rada bulundu\u011fumuz dizinin i\xe7indeki t\xfcm dosya dizinlerin \xe7\u0131kt\u0131s\u0131n\u0131 g\xf6r\xfcr\xfcz."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tls\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"ls",src:"/images/hafta1/3.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsxs)(i.p,{children:["GNU/Linux'da bir dosyan\u0131n gizli olmas\u0131 i\xe7in ba\u015f\u0131na ",(0,a.jsx)(i.strong,{children:'"."'})," konmas\u0131 yeterlidir. E\u011fer bir dosyan\u0131n ba\u015f\u0131nda ",(0,a.jsx)(i.strong,{children:'"."'})," ifadesin var ise ",(0,a.jsx)(i.strong,{children:"ls"})," sorgular\u0131nda g\xf6sterilmez."]}),"\n",(0,a.jsx)(i.p,{children:"Bu y\xfczden az \xf6nce yapt\u0131\u011f\u0131m\u0131z sorguda g\xf6rd\xfcklerimiz, bulundu\u011fumuz sat\u0131rdaki t\xfcm dosya ya da dizinleri g\xf6stermedi."}),"\n",(0,a.jsxs)(i.p,{children:["Gizli dosya ve dizinler dahil t\xfcm her \u015feyi g\xf6rmek istiyor isek ",(0,a.jsx)(i.strong,{children:"--all"})," ya da ",(0,a.jsx)(i.strong,{children:"-a"})," parametresi kullanmam\u0131z gerekir."]}),"\n",(0,a.jsx)(i.p,{children:"Yani a\u015fa\u011f\u0131daki gibi bir komut y\xfcr\xfct\xfcr\xfcz."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tls -a\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"ls - show them all",src:"/images/hafta1/4.png",width:"800"})}),"\n",(0,a.jsx)(i.p,{children:"Peki \xf6rne\u011fin bulundu\u011fumuz dizin alt\u0131nda bulunan t\xfcm dosyalar\u0131 tarihe g\xf6re s\u0131ral\u0131 \u015fekilde g\xf6r\xfcnt\xfclemek istersek ne yapmal\u0131y\u0131z ? A\u015fa\u011f\u0131daki parametreleri kullanabiliriz."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tls -lat\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"ls - show them all with ordering by date",src:"/images/hafta1/5.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"man [manual]"}),"\n",(0,a.jsx)(i.p,{children:"EE t\xfcm parametreleri b\xf6yle tek tek \xf6\u011frenecek miyiz ? Evet."}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.strong,{children:"Peki ezberleyecek miyiz ? HAYIR !"})}),"\n",(0,a.jsxs)(i.p,{children:["Kullan\u0131lan neredeyse her komutun bir manual sayfas\u0131 vard\u0131r. Bunlar\u0131 okumak i\xe7in ",(0,a.jsx)(i.strong,{children:"man"})," komutunu kullanabiliriz. \xd6rne\u011fin ",(0,a.jsx)(i.strong,{children:"ls"})," komutunun manual sayfas\u0131n\u0131 okumak i\xe7in ",(0,a.jsx)(i.strong,{children:"man ls"})," dememiz yeterlidir."]}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tman ls\n"})}),"\n",(0,a.jsx)(i.p,{children:"Son derece detayl\u0131 olan bu manual sayfalar\u0131nda ilgili komutla ilgili t\xfcm detaya ula\u015fabilirsiniz."}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"Not :"})," manual sayfas\u0131ndan ",(0,a.jsx)(i.strong,{children:"q"}),"'a basarak \xe7\u0131kabilirsiniz."]}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"man ls",src:"/images/hafta1/6.png",width:"800"})}),"\n",(0,a.jsxs)(i.p,{children:["Ayr\u0131ca ek bir \xf6neri olarak; okuma kolayl\u0131\u011f\u0131 sa\u011flamas\u0131, aranan \u015feylere daha kolay ula\u015fma imkan\u0131 vermesi a\xe7\u0131s\u0131ndan, man kullanmak yerine ",(0,a.jsx)(i.strong,{children:"tldr"})," uygulamas\u0131n\u0131 kullanabilirsiniz."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.a,{href:"https://github.com/tldr-pages/tldr",children:(0,a.jsx)(i.strong,{children:"github.com/tldr-pages/tldr"})})," ",(0,a.jsx)(i.em,{children:(0,a.jsx)(i.code,{children:'tl;dr : "too long; didn\'t read"'})})]}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"man ls",src:"/images/hafta1/7.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"cd [change directory]"}),"\n",(0,a.jsx)(i.p,{children:"Bulundu\u011fumuz dizini de\u011fi\u015ftirmek i\xe7in cd komutunu kullan\u0131r\u0131z."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tcd Documents/\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"cd",src:"/images/hafta1/9.png",width:"800"})}),"\n",(0,a.jsx)(i.p,{children:"E\u011fer bulundu\u011fumuz dizinin bir \xfcst\xfcne gitmek istiyorsak a\u015fa\u011f\u0131daki gibi yapmal\u0131y\u0131z."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tcd ..\n"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"pwd [print working directory]"}),"\n",(0,a.jsx)(i.p,{children:"Bu komut bize hangi dizinin i\xe7inde oldu\u011fumuzu s\xf6yler. Yani bulundu\u011fumuz dizinin path'ini verir."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tpwd\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"pwd",src:"/images/hafta1/8.png",width:"800"})}),"\n",(0,a.jsx)(i.hr,{}),"\n",(0,a.jsx)(i.h3,{children:"touch"}),"\n",(0,a.jsx)(i.p,{children:"\u0130\xe7i bo\u015f bir dosya olu\u015fturmak amac\u0131yla kullan\u0131l\u0131r."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\ttouch yeni_bir_dosya\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"touch",src:"/images/hafta1/27.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"cat"}),"\n",(0,a.jsx)(i.p,{children:"Bir dosyan\u0131n i\xe7eri\u011fini terminale basar."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tcat beni_oku\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"cat",src:"/images/hafta1/10.png",width:"800"})}),"\n",(0,a.jsx)(i.h3,{children:"tac"}),"\n",(0,a.jsx)(i.p,{children:"Bir dosyan\u0131n i\xe7eri\u011fini, ters s\u0131rada terminale basar."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\ttac beni_tersten_oku\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"tac",src:"/images/hafta1/26.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"echo"}),"\n",(0,a.jsx)(i.p,{children:"Terminal ekrana string bir ifadeyi basmak amac\u0131yla kullan\u0131labilir."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:'\techo "MESAJ"\n'})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"echo",src:"/images/hafta1/11.png",width:"800"})}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"echo"})," daha \xe7ok dosyalar\u0131n i\xe7erisine veri yaz\u0131l\u0131rken kullan\u0131l\u0131r."]}),"\n",(0,a.jsx)(i.p,{children:'\xd6rne\u011fin a\u015fa\u011f\u0131daki gibi bir ifade, file.txt dosyas\u0131n\u0131n en son sat\u0131r\u0131na "yeni veri" string\'ini ekler.'}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:'\techo "yeni veri" >> file.txt\n'})}),"\n",(0,a.jsxs)(i.p,{children:["E\u011fer hali haz\u0131rda bulunan dosyadaki t\xfcm verileri silmek ve yerine yazmak istersek ",(0,a.jsx)(i.strong,{children:'">"'})," diyebiliriz."]}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:'\techo "hepsini sil yerine yaz" > file.txt\n'})}),"\n",(0,a.jsx)(i.hr,{}),"\n",(0,a.jsx)(i.h3,{children:"less"}),"\n",(0,a.jsx)(i.p,{children:"Dosya i\xe7eri\u011fini vim'e benzer bir \u015fekilde g\xf6r\xfcntelememizi sa\u011flayan bir programd\u0131r."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tless dosya_adi\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"less",src:"/images/hafta1/12.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"mkdir [make directory]"}),"\n",(0,a.jsx)(i.p,{children:"Dizin (klas\xf6r) olu\u015fturmak amac\u0131yla kullan\u0131l\u0131r. Ayn\u0131 anda birden fazla klas\xf6r olu\u015fturulabilir."}),"\n",(0,a.jsx)(i.p,{children:"Hatta ayn\u0131 anda i\xe7 i\xe7e klas\xf6rler de direkt olarak tek komutta olu\u015fturulabilir."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tmkdir klasor_adi\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"mkdir",src:"/images/hafta1/13.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"mv [move]"}),"\n",(0,a.jsx)(i.p,{children:"Dosya ya da dizinlerin ta\u015f\u0131nmas\u0131n\u0131 sa\u011flar."}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.em,{children:"Bu arada, GNU/Linux'da dosya ve dizin ayn\u0131 \u015feydir, buna ileride de\u011finece\u011fiz."})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tmv pamuk_seker tatli_bisey/\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"mv",src:"/images/hafta1/14.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"cp [copy]"}),"\n",(0,a.jsx)(i.p,{children:"Dosya ya da dizinlerin kopyalanmas\u0131 sa\u011flar."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tcp dosya dosya.backup\n"})}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:'"-r"'})," parametresi ise dizinlerin kopyalanmas\u0131 sa\u011flan\u0131rken kullan\u0131l\u0131r."]}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tcp -r sutlac/ tatli_bisey/\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"cp",src:"/images/hafta1/15.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"rm [remove]"}),"\n",(0,a.jsx)(i.p,{children:"Dosya ya da dizinlerin silinmesi amac\u0131yla kullan\u0131l\u0131r."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\trm dosya\n"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\trm -r dizin/\n"})}),"\n",(0,a.jsx)(i.p,{children:"\xd6rne\u011fin a\u015fa\u011f\u0131daki gibi t\xfcm sistemi tek bir komut ile silebilirsiniz. Lakin bu komutun bir \xe7ok GNU/Linux da\u011f\u0131t\u0131m\u0131nda \xe7al\u0131\u015ft\u0131r\u0131lmas\u0131 engellidir."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\trm -rf /\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"sil cnm",src:"/images/hafta1/16.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"wget"}),"\n",(0,a.jsx)(i.p,{children:"Wget; internet protokolleri \xfczerinden dosya indirme arac\u0131d\u0131r."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\twget https://raw.githubusercontent.com/PauSiber/gnulinux/master/hafta1/hafta1.md\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"wget",src:"/images/hafta1/17.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"!!"}),"\n",(0,a.jsx)(i.p,{children:"Son komutu tekrar y\xfcr\xfct\xfcr."}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"!!-elif-hocama-selamlar",src:"/images/hafta1/18.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h3,{children:"history"}),"\n",(0,a.jsx)(i.p,{children:"\xd6nceden y\xfcr\xfct\xfclen komutlar\u0131 listeli halde g\xf6sterir."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\thistory\n"})}),"\n",(0,a.jsx)(i.p,{children:"Daha d\xfczenli \u015fekilde g\xf6rebilmek a\u015fa\u011f\u0131daki gibi bir komut y\xfcr\xfctebilirsiniz."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\thistory | less\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"history",src:"/images/hafta1/19.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"Bir Ka\xe7 K\u0131sa Yol"}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + a"})," ile terminalde yaz\u0131l\u0131 olan ifadenin ",(0,a.jsx)(i.strong,{children:"ilk ba\u015f\u0131na"})," gidilir."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + e"})," ile terminalde yaz\u0131l\u0131 olan ifadenin ",(0,a.jsx)(i.strong,{children:"en sonuna"})," gidilir."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + l"})," ile terminal ",(0,a.jsx)(i.strong,{children:"temizlenir"}),"."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + d"})," ile terminalden ",(0,a.jsx)(i.strong,{children:"\xe7\u0131k\u0131\u015f"})," sa\u011flan\u0131r."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + shift + c"})," ile ",(0,a.jsx)(i.strong,{children:"kopyalama"})," yap\u0131l\u0131r."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + shift + v"})," ile ",(0,a.jsx)(i.strong,{children:"yap\u0131\u015ft\u0131rma"})," yap\u0131l\u0131r."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + c"})," ile \xe7al\u0131\u015fan uygulama ",(0,a.jsx)(i.strong,{children:"durdurulabilir"}),"."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + z"})," \xe7al\u0131\u015fan uygulama ",(0,a.jsx)(i.strong,{children:"arkaya at\u0131l\u0131r"}),"."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"ctrl + u"})," o anda ",(0,a.jsx)(i.strong,{children:"sat\u0131ra yaz\u0131lan her\u015feyi siler"}),", temizler."]}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"Terminal'de \xc7al\u0131\u015fan Metin Edit\xf6rleri"}),"\n",(0,a.jsx)(i.h4,{children:"nano"}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"nano",src:"/images/hafta1/20.png",width:"800"})}),"\n",(0,a.jsx)(i.h4,{children:"vim"}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"vim",src:"/images/hafta1/21.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"GNU/Linux'da Dosya Sistem Hiyerar\u015fisi"}),"\n",(0,a.jsx)(i.p,{children:"UNIX tabanl\u0131 ya da esinlenilmi\u015f i\u015fletim sistemlerinin dosya sistem hiyerar\u015fisi Windows i\u015fletim sisteminden olduk\xe7a farkl\u0131d\u0131r."}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"windows-my-computer",src:"/images/hafta1/23.png",width:"800"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"windows-my-computer",src:"/images/hafta1/24.png",width:"800"})}),"\n",(0,a.jsxs)(i.p,{children:["GNU/Linux sistemlerde bir dosya dizin hiyerar\u015fisi vard\u0131r. Bu hiyerar\u015finin en \xfcst\xfcnde ",(0,a.jsx)(i.strong,{children:'"/"'})," yani ",(0,a.jsx)(i.strong,{children:"root(k\xf6k)"})," dizini bulunur. Bu, t\xfcm sistemin referans noktas\u0131d\u0131r."]}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"dosya-sistem-hiyerar\u015fisi",src:"/images/hafta1/22.png",width:"800"})}),"\n",(0,a.jsx)(i.h4,{children:"/ [root(k\xf6k) dizini]"}),"\n",(0,a.jsx)(i.p,{children:"T\xfcm dizinlerin \xfczerinde bulunan dizindir. T\xfcm dizinler buradan dallanarak olu\u015fturulur."}),"\n",(0,a.jsx)(i.h4,{children:"/bin"}),"\n",(0,a.jsx)(i.p,{children:"Sistemin temel komutlar\u0131n\u0131n bulundu\u011fu dizindir."}),"\n",(0,a.jsxs)(i.p,{children:["Kulland\u0131\u011f\u0131m\u0131z \xe7o\u011fu komut bu dizin alt\u0131nda bulunur. ",(0,a.jsx)(i.strong,{children:"(cat, mkdir, cp, ls, mv, rm )"})]}),"\n",(0,a.jsx)(i.h4,{children:"/etc"}),"\n",(0,a.jsx)(i.p,{children:"Sistemin b\xfct\xfcn yap\u0131land\u0131rma dosyalar\u0131 bu dizin alt\u0131nda bulunur. Yap\u0131land\u0131rma dosyas\u0131; bir program\u0131n i\u015fleyi\u015fini kontrol etmek i\xe7in kullan\u0131lan yerel bir dosyad\u0131r."}),"\n",(0,a.jsx)(i.h4,{children:"/home"}),"\n",(0,a.jsx)(i.p,{children:"Kullan\u0131c\u0131lar\u0131n kay\u0131tl\u0131 dosyalar\u0131n\u0131, ki\u015fisel ayarlar\u0131n\u0131 vb. i\xe7eren ev dizinleridir.\nWindows'daki Documents and Settings'e benzetebiliriz. Her bir yeni kullan\u0131c\u0131 i\xe7in alt dizin olarak alt\u0131na olu\u015fturulur."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"- /home\n\t|-----\x3e dev\n\t|-----\x3e hasantezcan \n\t|-----\x3e boratanr\u0131kulu\n"})}),"\n",(0,a.jsx)(i.h4,{children:"/root"}),"\n",(0,a.jsx)(i.p,{children:"Root kullan\u0131c\u0131s\u0131n\u0131n home dizinidir. Di\u011fer home dizinlerinden bi fark\u0131 yoktur."}),"\n",(0,a.jsx)(i.h4,{children:"/lib"}),"\n",(0,a.jsxs)(i.p,{children:["Kernel mod\xfclleri ve payla\u015f\u0131lan k\xfct\xfcphane dosyalar\u0131 bu klas\xf6rde bulunur. Var olan \xe7ekirdek mod\xfcllerini ",(0,a.jsx)(i.strong,{children:"/lib/modules/[versiyon_numaras\u0131]"})," i\xe7erisinde bulabilirsiniz."]}),"\n",(0,a.jsx)(i.h4,{children:"/var"}),"\n",(0,a.jsxs)(i.p,{children:["Sistem de\u011fi\u015fkenlerini saklar. Home dizini kullan\u0131c\u0131lar\u0131n dosyalar\u0131n\u0131 depolarken, ",(0,a.jsx)(i.strong,{children:"/var"})," dizini i\xe7inde de programlar\u0131n olu\u015fturdu\u011fu veriler tutulur."]}),"\n",(0,a.jsx)(i.h4,{children:"/opt"}),"\n",(0,a.jsxs)(i.p,{children:['GNU/Linux dosya dizin hiyerar\u015fisine uymayan programlar\u0131n kuruldu\u011fu dizindir. Hen\xfcz sizlere bahsetmedi\u011fimiz "Ba\u011f\u0131ml\u0131l\u0131k" kavram\u0131na uymayan bu programlar sistemden yal\u0131t\u0131lm\u0131\u015f halde ',(0,a.jsx)(i.strong,{children:"/opt"})," dizini alt\u0131ndan \xe7al\u0131\u015fmay\u0131 s\xfcrd\xfcr\xfcr."]}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"opt",src:"/images/hafta1/25.png",width:"800"})}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"Not :"})," GNU/Linux sistemlerde ",(0,a.jsx)(i.strong,{children:"her zaman bir dizin i\xe7ersinde bulunursunuz."})," Yani a\u011fa\xe7 yap\u0131s\u0131n\u0131n d\u0131\u015f\u0131na \xe7\u0131kamazs\u0131n\u0131z."]}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsxs)(i.p,{children:["Bir dosyan\u0131n yeri tarif ederken kullan\u0131d\u0131\u011f\u0131m\u0131z iki t\xfcrl\xfc yol vard\u0131r. Bunlar ",(0,a.jsx)(i.strong,{children:"Tam Yol"})," ve ",(0,a.jsx)(i.strong,{children:"G\xf6receli Yol"})," dur."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"Tam Yol :"})," Her zaman ",(0,a.jsx)(i.strong,{children:"root"})," dizininden ba\u015flar ve hedef g\xf6sterdi\u011fimiz dizine kadar devam eder. Bu komutu hangi dizinde olursak olal\u0131m \xe7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda sonu\xe7 al\u0131r\u0131z. \xc7\xfcnk\xfc bu tarif hi\xe7bir zaman de\u011fi\u015fmez. Bunun nedeni de referans ald\u0131\u011f\u0131 ilk yolun root olmas\u0131d\u0131r."]}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"G\xf6receli Yol :"})," Bu tarifin her zaman ge\xe7erlili\u011fi yoktur. \u0130\xe7ersinde bulununan dizine g\xf6re de\u011fi\u015fiklik g\xf6sterir."]}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"Paket Y\xf6neticisi Nedir ?"}),"\n",(0,a.jsx)(i.p,{children:"Hadi \u015fimdi gidip Windows bir sistemde deneme ama\xe7l\u0131 bir uygulama kural\u0131m. \xd6rnek olmas\u0131 a\xe7\u0131s\u0131ndan firefox kurulumu yapal\u0131m."}),"\n",(0,a.jsx)(i.p,{children:"Kurulum i\xe7in ilk olarak browser a\xe7\u0131lmal\u0131, ilgili site bulunmal\u0131, ilgili exe dosyas\u0131 sisteme indirilip, \xe7al\u0131\u015ft\u0131r\u0131lmal\u0131 ve ard\u0131ndan kurulum ad\u0131mlar\u0131 uygulanmal\u0131d\u0131r."}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.strong,{children:"Ne kadar ilkelce de\u011fil mi ?"})}),"\n",(0,a.jsxs)(i.p,{children:["GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda b\xf6yle bir \u015fey yok arkada\u015flar. Paket y\xf6neticisi diye bir kavram var. Paket y\xf6neticisi ile tek bir komut ile istedi\u011finiz uygulamay\u0131 kulland\u0131\u011f\u0131n\u0131z da\u011f\u0131t\u0131m\u0131n ",(0,a.jsx)(i.strong,{children:"repo"}),"'lar\u0131ndan direkt olarak \xe7ekip kurabilirsiniz."]}),"\n",(0,a.jsx)(i.p,{children:"Paket y\xf6neticisi yaln\u0131zca bir programd\u0131r ama da\u011f\u0131t\u0131mdan da\u011f\u0131t\u0131ma farkl\u0131l\u0131k g\xf6sterir, her paket y\xf6neticisini her da\u011f\u0131t\u0131mda kullanamazs\u0131n\u0131z."}),"\n",(0,a.jsx)(i.p,{children:"\xd6rne\u011fin Debian'dan t\xfcremi\u015f olan Ubuntu, APT isimli bir paket y\xf6neticisi kullan\u0131r."}),"\n",(0,a.jsx)(i.p,{children:"Yani Debian tabanl\u0131 da\u011f\u0131t\u0131mlarda APT paket y\xf6neticisi kullan\u0131l\u0131r."}),"\n",(0,a.jsx)(i.p,{children:"APT d\u0131\u015f\u0131nda, debian tabanl\u0131 olmayadan da\u011f\u0131t\u0131mlarda kullan\u0131lan, bir\xe7ok paket y\xf6neticisi vard\u0131r."}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:["dnf(yum) ",(0,a.jsx)(i.strong,{children:"fedora"})]}),"\n",(0,a.jsxs)(i.li,{children:["pacman ",(0,a.jsx)(i.strong,{children:"archlinux"})]}),"\n",(0,a.jsxs)(i.li,{children:["portage ",(0,a.jsx)(i.strong,{children:"gentoo"})]}),"\n",(0,a.jsxs)(i.li,{children:["zypper ",(0,a.jsx)(i.strong,{children:"opensuse"})]}),"\n"]}),"\n",(0,a.jsx)(i.p,{children:"Paket y\xf6neticilerinin kullan\u0131mlar\u0131 farkl\u0131l\u0131k g\xf6sterebilir. Ancak temelde b\xfct\xfcn paket y\xf6neticileri ayn\u0131 i\u015fi yaparlar."}),"\n",(0,a.jsx)(i.p,{children:"Hadi \u015fimdi bir de terminal \xfczerinden firefox kurulumunu ger\xe7ekle\u015ftirelim. Bunun i\xe7in a\u015fa\u011f\u0131daki komutu y\xfcr\xfctmemiz yeterlidir."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tsudo apt install firefox\n"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"apt",src:"/images/hafta1/28.png",width:"800"})}),"\n",(0,a.jsx)(i.p,{children:"\u015eimdi bu komutu inceleyelim.."}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"apt",src:"/images/hafta1/29.png",width:"800"})}),"\n",(0,a.jsxs)(i.p,{children:["Burada ",(0,a.jsx)(i.strong,{children:"sudo"})," ifadesini kullanma sebebimiz i\u015flemin sistem dosyalar\u0131 \xfczerinde ger\xe7ekle\u015fiyor olmas\u0131. Bu y\xfczden komutun root yetkisi ile \xe7al\u0131\u015fmas\u0131 i\xe7in komutun ba\u015f\u0131na ",(0,a.jsx)(i.strong,{children:"sudo"})," ifadesini ekledik."]}),"\n",(0,a.jsx)(i.p,{children:"G\xf6rd\xfc\u011f\xfcn\xfcz gibi kullan\u0131m\u0131 olduk\xe7a basit. APT paket y\xf6neticisinin parametreleri ile ilgili bilgiye a\u015fa\u011f\u0131daki tablodan eri\u015febilirisiniz."}),"\n",(0,a.jsxs)(i.p,{children:["Tablo ba\u015flang\u0131\xe7ta olduk\xe7a korkun\xe7 g\xf6z\xfckecektir ama paket y\xf6neticisi kulland\u0131k\xe7a al\u0131\u015faca\u011f\u0131n\u0131z\u0131n garantisini veririz ",(0,a.jsx)(i.strong,{children:":)"})," ."]}),"\n",(0,a.jsxs)(i.table,{children:[(0,a.jsx)(i.thead,{children:(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.th,{align:"center",children:"APT"}),(0,a.jsx)(i.th,{align:"center",children:"A\xe7\u0131klama"})]})}),(0,a.jsxs)(i.tbody,{children:[(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["apt search ",(0,a.jsx)(i.strong,{children:"packageName"})]}),(0,a.jsx)(i.td,{align:"center",children:"paket arar"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["apt install ",(0,a.jsx)(i.strong,{children:"packageName"})]}),(0,a.jsx)(i.td,{align:"center",children:"paket y\xfckler"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["apt remove ",(0,a.jsx)(i.strong,{children:"packageName"})]}),(0,a.jsx)(i.td,{align:"center",children:"paket siler"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.td,{align:"center",children:"apt autoremove"}),(0,a.jsx)(i.td,{align:"center",children:"herhangi bir pakete ba\u011fl\u0131 olmayan gereksiz paketleri siler"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.td,{align:"center",children:"apt update"}),(0,a.jsx)(i.td,{align:"center",children:"repo paket bilgilerini g\xfcnceller"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.td,{align:"center",children:"apt update && apt upgrade"}),(0,a.jsx)(i.td,{align:"center",children:"y\xfckl\xfc paketleri g\xfcnceller"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.td,{align:"center",children:"apt update && apt dist-upgrade"}),(0,a.jsx)(i.td,{align:"center",children:"sistemin tam g\xfcncellemesini yapar"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["apt install \u2013download-only ",(0,a.jsx)(i.strong,{children:"packageName"})]}),(0,a.jsx)(i.td,{align:"center",children:"paketi yaln\u0131zca indirir (paket y\xf6neticisi cache konumuna)"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.td,{align:"center",children:"ls /var/cache/apt/archives/"}),(0,a.jsx)(i.td,{align:"center",children:"paket y\xf6neticisi cache'ni g\xf6r\xfcnt\xfcler"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["apt install ",(0,a.jsx)(i.strong,{children:"/path/to/packageName.deb"})]}),(0,a.jsx)(i.td,{align:"center",children:"paketi dosya ile y\xfckler"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.td,{align:"center",children:"tail -f /var/log/dpkg.log"}),(0,a.jsx)(i.td,{align:"center",children:"paket y\xf6neticisi log'lar\u0131n\u0131 g\xf6sterir"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["apt show ",(0,a.jsx)(i.strong,{children:"packageName"})]}),(0,a.jsx)(i.td,{align:"center",children:"repo'daki bir paketin bilgisini g\xf6sterir"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["dpkg -s ",(0,a.jsx)(i.strong,{children:"packageName"})]}),(0,a.jsx)(i.td,{align:"center",children:"y\xfckl\xfc olan bir paketin bilgisini g\xf6sterir"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsxs)(i.td,{align:"center",children:["dpkg -L ",(0,a.jsx)(i.strong,{children:"packageName"})]}),(0,a.jsx)(i.td,{align:"center",children:"y\xfckl\xfc olan paketin dosyalar\u0131n\u0131n konumlar\u0131n\u0131 g\xf6sterir"})]}),(0,a.jsxs)(i.tr,{children:[(0,a.jsx)(i.td,{align:"center",children:"apt-cache policy"}),(0,a.jsx)(i.td,{align:"center",children:"paket kaynak adreslerini listeler"})]})]})]}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"REPO Kavram\u0131 Nedir ?"}),"\n",(0,a.jsx)(i.p,{children:"Az \xf6nce paket y\xf6neticisi ile birlikte uygulamalar\u0131n nas\u0131l kurulaca\u011f\u0131n\u0131 \xf6\u011frendik."}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"Peki bu paketler nereden geliyor.."})," \u0130\u015fte burada REPO kavram\u0131 ortaya \xe7\u0131k\u0131yor. Her da\u011f\u0131t\u0131m\u0131n kendisine ait bir REPO'su vard\u0131r. Paket y\xf6neticisi ile indirilip kurulan uygulamalar bu REPO'lardan gelir."]}),"\n",(0,a.jsx)(i.p,{children:"REPO adreslerini a\u015fa\u011f\u0131daki gibi g\xf6r\xfcnt\xfcleyebiliriz. Ama l\xfctfen bu dosyalar\u0131 bir bilginiz yok ise de\u011fi\u015ftirmeyin."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:"\tvim /etc/apt/source.list\n"})}),"\n",(0,a.jsxs)(i.p,{children:["PauSiber Dev'de REPO olarak ",(0,a.jsx)(i.a,{href:"http://archive.ubuntu.com/ubuntu/",children:"http://archive.ubuntu.com/ubuntu/"})," kullan\u0131lmaktad\u0131r."]}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"repo",src:"/images/hafta1/30.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"REPO'da Olmayan Uygulamalar"}),"\n",(0,a.jsx)(i.p,{children:"REPO'larda yaln\u0131zca a\xe7\u0131k kaynak uygulamalar bulunabilir. \xd6rne\u011fin Google Chrome kapal\u0131 kaynak bir uygulamad\u0131r. Bu durumda ne yapaca\u011f\u0131z ?"}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"Not :"})," Chromium a\xe7\u0131k kaynak oldu\u011fu i\xe7in REPO'larda mevcuttur."]}),"\n",(0,a.jsx)(i.p,{children:"E\u011fer REPO'larda bulunmayan bir uygulama kurulacak ise ilk yap\u0131lmas\u0131 gereken, uygulaman\u0131n da\u011f\u0131t\u0131c\u0131n\u0131n sitesinden hangi \u015fekilde edinilmesi gerekti\u011fine bakmakt\u0131r. \xc7\xfcnk\xfc bir\xe7ok farkl\u0131 \u015fekilde da\u011f\u0131t\u0131l\u0131yor olabilir."}),"\n",(0,a.jsxs)(i.p,{children:["\xd6rne\u011fin Google Chrome i\xe7in bir ",(0,a.jsx)(i.strong,{children:"deb"})," paketi indirmek gerekirken, Spotify kurulumu i\xe7in REPO listemize ek bir kaynak adresi eklememiz gerekir."]}),"\n",(0,a.jsx)(i.p,{children:"Bu y\xfczden l\xfctfen d\u0131\u015far\u0131dan bir uygulama kuracaksan\u0131z, forumlara ya da youtube'a bakmak yerine, da\u011f\u0131t\u0131c\u0131n\u0131n sitesinden bak\u0131n. Orada kesinlikle bir bilgi olacakt\u0131r."}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"chrome",src:"/images/hafta1/31.png",width:"800"})}),"\n",(0,a.jsx)("p",{align:"center",children:(0,a.jsx)("img",{alt:"spotify",src:"/images/hafta1/32.png",width:"800"})}),"\n",(0,a.jsx)("hr",{}),"\n",(0,a.jsx)(i.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Terminalin ne oldu\u011funu"})," ve neden kullanmam\u0131z gerekti\u011fini \xf6\u011frendik."]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Temel komutlar"})," ile terminal kullan\u0131m\u0131na ilk ad\u0131m\u0131 att\u0131k."]}),"\n",(0,a.jsxs)(i.li,{children:["Terminal \xfczerinde kullanabilece\u011fimiz ",(0,a.jsx)(i.strong,{children:"yararl\u0131 k\u0131sayollar"}),"\u0131 \xf6\u011frendik."]}),"\n",(0,a.jsxs)(i.li,{children:["Terminal \xfczerinde \xe7al\u0131\u015fan ",(0,a.jsx)(i.strong,{children:"metin edit\xf6rleri"}),"ni denedik."]}),"\n",(0,a.jsxs)(i.li,{children:["GNU/Linux\u2019da ",(0,a.jsx)(i.strong,{children:"dosya sistem hiyerar\u015fisi"}),"nin nas\u0131l oldu\u011funu temel d\xfczeyde \xf6\u011frendik."]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Paket Y\xf6neticisi"})," ve ",(0,a.jsx)(i.strong,{children:"REPO"})," kavramlar\u0131n\u0131 \xf6\u011frendik."]}),"\n"]})]})},e=Object.assign({},(0,t.ah)(),n.components),r=e.wrapper;return r?(0,a.jsx)(r,c({},n,{children:(0,a.jsx)(i,{})})):i()}var m=(0,a.jsx)(h,{});function u(n){return(0,l.withSSG)((0,r.Z)({filename:"hafta-bir.mdx",route:"/haftalar/hafta-bir",meta:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},s.Z))(c({},n,{children:m}))}}},function(n){n.O(0,[774,353,888,179],(function(){return i=8232,n(n.s=i);var i}));var i=n.O();_N_E=i}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/haftalar/hafta-bir-c83b600aaa8f6bf2.js b/_next/static/chunks/pages/haftalar/hafta-bir-c83b600aaa8f6bf2.js new file mode 100644 index 0000000..57253bb --- /dev/null +++ b/_next/static/chunks/pages/haftalar/hafta-bir-c83b600aaa8f6bf2.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[189],{8232:function(n,i,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/haftalar/hafta-bir",function(){return a(8325)}])},7845:function(n,i,a){"use strict";var e=a(5893),r=a(5988),l=(new Date).getFullYear();i.Z={footer:(0,e.jsxs)("small",{style:{display:"block",marginTop:"8rem"},className:"jsx-7c359fde634f3543",children:[(0,e.jsx)("time",{className:"jsx-7c359fde634f3543",children:l})," \xa9 PauSiber",(0,e.jsx)(r.default,{id:"7c359fde634f3543",children:"a.jsx-7c359fde634f3543{float:right}\n@media screen and (max-width:480px) {article.jsx-7c359fde634f3543{padding-top:2rem;\npadding-bottom:4rem}}"})]})}},8325:function(n,i,a){"use strict";a.r(i),a.d(i,{default:function(){return m}});var e=a(5893),r=a(8616),l=a(3805),s=a(7845),t=a(1151);function d(n,i,a){return i in n?Object.defineProperty(n,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[i]=a,n}function h(n){for(var i=1;i0&&void 0!==arguments[0]?arguments[0]:{},i=function(){var i=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",ul:"ul",li:"li",h3:"h3",pre:"pre",code:"code",em:"em",hr:"hr",h4:"h4",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td"},(0,t.ah)(),n.components),a=i.CenteredImageLightbox;return a||o("CenteredImageLightbox",!0),(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(i.h1,{children:"Hafta 1"}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"Ama\xe7 :"})," Terminal kullan\u0131m\u0131n\u0131 kavratmak, dosya sistem hiyerar\u015fisini kavratmak, paket y\xf6neticisi kavram\u0131ndan bahsetmek."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"Yazarlar :"})," ",(0,e.jsx)(i.a,{href:"https://github.com/boratanrikulu",children:(0,e.jsx)(i.strong,{children:"boratanrikulu"})})," ",(0,e.jsx)(i.strong,{children:"&&"})," ",(0,e.jsx)(i.a,{href:"https://github.com/hasantezcan",children:(0,e.jsx)(i.strong,{children:"hasantezcan"})})]}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"Terminal Nedir ?"}),"\n",(0,e.jsx)(i.p,{children:"Terminal, i\u015fletim sisteminizi shell ile kullanman\u0131z\u0131 sa\u011flayan bir aray\xfczd\xfcr. GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda SHELL olarak genellikle BASH kabu\u011fu (shell) kullan\u0131l\u0131r."}),"\n",(0,e.jsx)(i.p,{children:"Windows'ta bunun kar\u015f\u0131l\u0131\u011f\u0131 CMD denebilir."}),"\n",(0,e.jsxs)(i.p,{children:["Windows'ta \u015fuana kadar hi\xe7 CMD'ye girmeden hayatta kalabiliyorsan\u0131z, asl\u0131nda GNU/Linux da\u011f\u0131t\u0131mlar\u0131n\u0131n ",(0,e.jsx)(i.strong,{children:"bir\xe7o\u011funda da"})," terminale hi\xe7 u\u011framadan hayatta kalabilirsiniz."]}),"\n",(0,e.jsx)(a,{alt:"cmd",src:"/images/hafta1/2.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"Peki neden size terminal kullan\u0131m\u0131 anlat\u0131yoruz ?"}),"\n",(0,e.jsx)(i.p,{children:"\u0130\u015fletim sistemine tamamen hakim olmak, isteklerinizi grafik aray\xfcz\xfcn\xfcn hantall\u0131\u011f\u0131na tak\u0131lmadan yapmak ve i\u015flerinizi \xe7ok daha h\u0131zl\u0131 g\xf6rmek a\xe7\u0131s\u0131ndan terminal kullan\u0131m\u0131 \xf6nemlidir."}),"\n",(0,e.jsxs)(i.p,{children:["Ayr\u0131ca mesle\u011fimiz gere\u011fi burada \xe7ok i\u015fimiz oluyor ",(0,e.jsx)(i.strong,{children:":)"}),"."]}),"\n",(0,e.jsx)(i.p,{children:"\xd6rne\u011fin en basitinden, birka\xe7 hafta i\xe7erisinde e\u011fitimini alaca\u011f\u0131n\u0131z git kullan\u0131m\u0131n\u0131n terminal \xfczerinden yap\u0131lmas\u0131 gibi. Onun d\u0131\u015f\u0131nda, yazd\u0131\u011f\u0131n\u0131z herhangi bir program\u0131 derlerken terminal kullanman\u0131z gerekti\u011fi gibi fakt\xf6rler terminal kullan\u0131m\u0131na al\u0131\u015fman\u0131z a\xe7\u0131s\u0131ndan \xf6nemlidir."}),"\n",(0,e.jsx)(i.p,{children:"Yani \u015fuan \xf6\u011frenece\u011finiz bilgiler ba\u015fta anlams\u0131z, hantal ve yava\u015f olarak g\xf6z\xfckecek olsa bile asl\u0131nda ileriki mesleki hayat\u0131n\u0131zda \xe7ok\xe7a rahat etmenizi sa\u011flayacakt\u0131r."}),"\n",(0,e.jsx)(i.p,{children:"Ne kadar erken \xf6\u011frenmeniz sizin i\xe7in o kadar iyi olacakt\u0131r."}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"SHELL Nedir ?"}),"\n",(0,e.jsx)(i.p,{children:"SHELL i\u015fletim sistemlerinin servislerini kullanmak amac\u0131yla kullan\u0131lan bir kullan\u0131c\u0131 arabirimidir (user interface), bir programd\u0131r."}),"\n",(0,e.jsx)(i.p,{children:"Kabuk (shell) , \xe7ekirdek ile kullan\u0131c\u0131 aras\u0131nda ara g\xf6rev g\xf6r\xfcr."}),"\n",(0,e.jsx)(i.p,{children:"Bir\xe7ok kabuk \xe7e\u015fidi vard\u0131r;"}),"\n",(0,e.jsxs)(i.ul,{children:["\n",(0,e.jsx)(i.li,{children:"sh"}),"\n",(0,e.jsx)(i.li,{children:"bash"}),"\n",(0,e.jsx)(i.li,{children:"zsh"}),"\n",(0,e.jsx)(i.li,{children:"csh"}),"\n",(0,e.jsx)(i.li,{children:"ksh"}),"\n",(0,e.jsx)(i.li,{children:"tcsh"}),"\n"]}),"\n",(0,e.jsx)(i.p,{children:"PauSiber Dev'de ise kabuk yani shell olarak ZSH kullan\u0131lmaktad\u0131r. Kabuk olarak BASH yerine ZSH kullanma sebebimiz; ZSH'\u0131n BASH'e g\xf6re daha fazla \xf6zellik i\xe7ermesi."}),"\n",(0,e.jsx)(i.p,{children:"Bi de \u015fekil filan yani .s.s.s"}),"\n",(0,e.jsx)(a,{alt:"zsh",src:"/images/hafta1/0.png",width:"800"}),"\n",(0,e.jsx)(a,{alt:"bash",src:"/images/hafta1/1.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"Temel Komutlar"}),"\n",(0,e.jsx)(i.p,{children:"Terminalda kullanabilece\u011finiz say\u0131s\u0131z uygulama, say\u0131s\u0131z komut var. Biz bu e\u011fitim s\u0131ras\u0131nda yaln\u0131zca temel d\xfczeyde olan komutlar\u0131 g\xf6sterece\u011fiz."}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"ls [list]"}),"\n",(0,e.jsx)(i.p,{children:"Herhangi bir dizinin i\xe7ini g\xf6rmek i\xe7in kulland\u0131\u011f\u0131m\u0131z komuttur."}),"\n",(0,e.jsx)(i.p,{children:"\xd6rne\u011fin terminalde a\u015fa\u011f\u0131daki gibi bir komut y\xfcr\xfct\xfcrsek, o s\u0131rada bulundu\u011fumuz dizinin i\xe7indeki t\xfcm dosya dizinlerin \xe7\u0131kt\u0131s\u0131n\u0131 g\xf6r\xfcr\xfcz."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tls\n"})}),"\n",(0,e.jsx)(a,{alt:"ls",src:"/images/hafta1/3.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsxs)(i.p,{children:["GNU/Linux'da bir dosyan\u0131n gizli olmas\u0131 i\xe7in ba\u015f\u0131na ",(0,e.jsx)(i.strong,{children:'"."'})," konmas\u0131 yeterlidir. E\u011fer bir dosyan\u0131n ba\u015f\u0131nda ",(0,e.jsx)(i.strong,{children:'"."'})," ifadesin var ise ",(0,e.jsx)(i.strong,{children:"ls"})," sorgular\u0131nda g\xf6sterilmez."]}),"\n",(0,e.jsx)(i.p,{children:"Bu y\xfczden az \xf6nce yapt\u0131\u011f\u0131m\u0131z sorguda g\xf6rd\xfcklerimiz, bulundu\u011fumuz sat\u0131rdaki t\xfcm dosya ya da dizinleri g\xf6stermedi."}),"\n",(0,e.jsxs)(i.p,{children:["Gizli dosya ve dizinler dahil t\xfcm her \u015feyi g\xf6rmek istiyor isek ",(0,e.jsx)(i.strong,{children:"--all"})," ya da ",(0,e.jsx)(i.strong,{children:"-a"})," parametresi kullanmam\u0131z gerekir."]}),"\n",(0,e.jsx)(i.p,{children:"Yani a\u015fa\u011f\u0131daki gibi bir komut y\xfcr\xfct\xfcr\xfcz."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tls -a\n"})}),"\n",(0,e.jsx)(a,{alt:"ls - show them all",src:"/images/hafta1/4.png",width:"800"}),"\n",(0,e.jsx)(i.p,{children:"Peki \xf6rne\u011fin bulundu\u011fumuz dizin alt\u0131nda bulunan t\xfcm dosyalar\u0131 tarihe g\xf6re s\u0131ral\u0131 \u015fekilde g\xf6r\xfcnt\xfclemek istersek ne yapmal\u0131y\u0131z ? A\u015fa\u011f\u0131daki parametreleri kullanabiliriz."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tls -lat\n"})}),"\n",(0,e.jsx)(a,{alt:"ls - show them all with ordering by date",src:"/images/hafta1/5.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"man [manual]"}),"\n",(0,e.jsx)(i.p,{children:"EE t\xfcm parametreleri b\xf6yle tek tek \xf6\u011frenecek miyiz ? Evet."}),"\n",(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:"Peki ezberleyecek miyiz ? HAYIR !"})}),"\n",(0,e.jsxs)(i.p,{children:["Kullan\u0131lan neredeyse her komutun bir manual sayfas\u0131 vard\u0131r. Bunlar\u0131 okumak i\xe7in ",(0,e.jsx)(i.strong,{children:"man"})," komutunu kullanabiliriz. \xd6rne\u011fin ",(0,e.jsx)(i.strong,{children:"ls"})," komutunun manual sayfas\u0131n\u0131 okumak i\xe7in ",(0,e.jsx)(i.strong,{children:"man ls"})," dememiz yeterlidir."]}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tman ls\n"})}),"\n",(0,e.jsx)(i.p,{children:"Son derece detayl\u0131 olan bu manual sayfalar\u0131nda ilgili komutla ilgili t\xfcm detaya ula\u015fabilirsiniz."}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"Not :"})," manual sayfas\u0131ndan ",(0,e.jsx)(i.strong,{children:"q"}),"'a basarak \xe7\u0131kabilirsiniz."]}),"\n",(0,e.jsx)(a,{alt:"man ls",src:"/images/hafta1/6.png",width:"800"}),"\n",(0,e.jsxs)(i.p,{children:["Ayr\u0131ca ek bir \xf6neri olarak; okuma kolayl\u0131\u011f\u0131 sa\u011flamas\u0131, aranan \u015feylere daha kolay ula\u015fma imkan\u0131 vermesi a\xe7\u0131s\u0131ndan, man kullanmak yerine ",(0,e.jsx)(i.strong,{children:"tldr"})," uygulamas\u0131n\u0131 kullanabilirsiniz."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.a,{href:"https://github.com/tldr-pages/tldr",children:(0,e.jsx)(i.strong,{children:"github.com/tldr-pages/tldr"})})," ",(0,e.jsx)(i.em,{children:(0,e.jsx)(i.code,{children:'tl;dr : "too long; didn\'t read"'})})]}),"\n",(0,e.jsx)(a,{alt:"man ls",src:"/images/hafta1/7.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"cd [change directory]"}),"\n",(0,e.jsx)(i.p,{children:"Bulundu\u011fumuz dizini de\u011fi\u015ftirmek i\xe7in cd komutunu kullan\u0131r\u0131z."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tcd Documents/\n"})}),"\n",(0,e.jsx)(a,{alt:"cd",src:"/images/hafta1/9.png",width:"800"}),"\n",(0,e.jsx)(i.p,{children:"E\u011fer bulundu\u011fumuz dizinin bir \xfcst\xfcne gitmek istiyorsak a\u015fa\u011f\u0131daki gibi yapmal\u0131y\u0131z."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tcd ..\n"})}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"pwd [print working directory]"}),"\n",(0,e.jsx)(i.p,{children:"Bu komut bize hangi dizinin i\xe7inde oldu\u011fumuzu s\xf6yler. Yani bulundu\u011fumuz dizinin path'ini verir."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tpwd\n"})}),"\n",(0,e.jsx)(a,{alt:"pwd",src:"/images/hafta1/8.png",width:"800"}),"\n",(0,e.jsx)(i.hr,{}),"\n",(0,e.jsx)(i.h3,{children:"touch"}),"\n",(0,e.jsx)(i.p,{children:"\u0130\xe7i bo\u015f bir dosya olu\u015fturmak amac\u0131yla kullan\u0131l\u0131r."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\ttouch yeni_bir_dosya\n"})}),"\n",(0,e.jsx)(a,{alt:"touch",src:"/images/hafta1/27.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"cat"}),"\n",(0,e.jsx)(i.p,{children:"Bir dosyan\u0131n i\xe7eri\u011fini terminale basar."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tcat beni_oku\n"})}),"\n",(0,e.jsx)(a,{alt:"cat",src:"/images/hafta1/10.png",width:"800"}),"\n",(0,e.jsx)(i.h3,{children:"tac"}),"\n",(0,e.jsx)(i.p,{children:"Bir dosyan\u0131n i\xe7eri\u011fini, ters s\u0131rada terminale basar."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\ttac beni_tersten_oku\n"})}),"\n",(0,e.jsx)(a,{alt:"tac",src:"/images/hafta1/26.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"echo"}),"\n",(0,e.jsx)(i.p,{children:"Terminal ekrana string bir ifadeyi basmak amac\u0131yla kullan\u0131labilir."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:'\techo "MESAJ"\n'})}),"\n",(0,e.jsx)(a,{alt:"echo",src:"/images/hafta1/11.png",width:"800"}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"echo"})," daha \xe7ok dosyalar\u0131n i\xe7erisine veri yaz\u0131l\u0131rken kullan\u0131l\u0131r."]}),"\n",(0,e.jsx)(i.p,{children:'\xd6rne\u011fin a\u015fa\u011f\u0131daki gibi bir ifade, file.txt dosyas\u0131n\u0131n en son sat\u0131r\u0131na "yeni veri" string\'ini ekler.'}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:'\techo "yeni veri" >> file.txt\n'})}),"\n",(0,e.jsxs)(i.p,{children:["E\u011fer hali haz\u0131rda bulunan dosyadaki t\xfcm verileri silmek ve yerine yazmak istersek ",(0,e.jsx)(i.strong,{children:'">"'})," diyebiliriz."]}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:'\techo "hepsini sil yerine yaz" > file.txt\n'})}),"\n",(0,e.jsx)(i.hr,{}),"\n",(0,e.jsx)(i.h3,{children:"less"}),"\n",(0,e.jsx)(i.p,{children:"Dosya i\xe7eri\u011fini vim'e benzer bir \u015fekilde g\xf6r\xfcntelememizi sa\u011flayan bir programd\u0131r."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tless dosya_adi\n"})}),"\n",(0,e.jsx)(a,{alt:"less",src:"/images/hafta1/12.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"mkdir [make directory]"}),"\n",(0,e.jsx)(i.p,{children:"Dizin (klas\xf6r) olu\u015fturmak amac\u0131yla kullan\u0131l\u0131r. Ayn\u0131 anda birden fazla klas\xf6r olu\u015fturulabilir."}),"\n",(0,e.jsx)(i.p,{children:"Hatta ayn\u0131 anda i\xe7 i\xe7e klas\xf6rler de direkt olarak tek komutta olu\u015fturulabilir."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tmkdir klasor_adi\n"})}),"\n",(0,e.jsx)(a,{alt:"mkdir",src:"/images/hafta1/13.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"mv [move]"}),"\n",(0,e.jsx)(i.p,{children:"Dosya ya da dizinlerin ta\u015f\u0131nmas\u0131n\u0131 sa\u011flar."}),"\n",(0,e.jsx)(i.p,{children:(0,e.jsx)(i.em,{children:"Bu arada, GNU/Linux'da dosya ve dizin ayn\u0131 \u015feydir, buna ileride de\u011finece\u011fiz."})}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tmv pamuk_seker tatli_bisey/\n"})}),"\n",(0,e.jsx)(a,{alt:"mv",src:"/images/hafta1/14.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"cp [copy]"}),"\n",(0,e.jsx)(i.p,{children:"Dosya ya da dizinlerin kopyalanmas\u0131 sa\u011flar."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tcp dosya dosya.backup\n"})}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:'"-r"'})," parametresi ise dizinlerin kopyalanmas\u0131 sa\u011flan\u0131rken kullan\u0131l\u0131r."]}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tcp -r sutlac/ tatli_bisey/\n"})}),"\n",(0,e.jsx)(a,{alt:"cp",src:"/images/hafta1/15.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"rm [remove]"}),"\n",(0,e.jsx)(i.p,{children:"Dosya ya da dizinlerin silinmesi amac\u0131yla kullan\u0131l\u0131r."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\trm dosya\n"})}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\trm -r dizin/\n"})}),"\n",(0,e.jsx)(i.p,{children:"\xd6rne\u011fin a\u015fa\u011f\u0131daki gibi t\xfcm sistemi tek bir komut ile silebilirsiniz. Lakin bu komutun bir \xe7ok GNU/Linux da\u011f\u0131t\u0131m\u0131nda \xe7al\u0131\u015ft\u0131r\u0131lmas\u0131 engellidir."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\trm -rf /\n"})}),"\n",(0,e.jsx)(a,{alt:"sil cnm",src:"/images/hafta1/16.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"wget"}),"\n",(0,e.jsx)(i.p,{children:"Wget; internet protokolleri \xfczerinden dosya indirme arac\u0131d\u0131r."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\twget https://raw.githubusercontent.com/PauSiber/gnulinux/master/hafta1/hafta1.md\n"})}),"\n",(0,e.jsx)(a,{alt:"wget",src:"/images/hafta1/17.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"!!"}),"\n",(0,e.jsx)(i.p,{children:"Son komutu tekrar y\xfcr\xfct\xfcr."}),"\n",(0,e.jsx)(a,{alt:"!!-elif-hocama-selamlar",src:"/images/hafta1/18.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h3,{children:"history"}),"\n",(0,e.jsx)(i.p,{children:"\xd6nceden y\xfcr\xfct\xfclen komutlar\u0131 listeli halde g\xf6sterir."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\thistory\n"})}),"\n",(0,e.jsx)(i.p,{children:"Daha d\xfczenli \u015fekilde g\xf6rebilmek a\u015fa\u011f\u0131daki gibi bir komut y\xfcr\xfctebilirsiniz."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\thistory | less\n"})}),"\n",(0,e.jsx)(a,{alt:"history",src:"/images/hafta1/19.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"Bir Ka\xe7 K\u0131sa Yol"}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + a"})," ile terminalde yaz\u0131l\u0131 olan ifadenin ",(0,e.jsx)(i.strong,{children:"ilk ba\u015f\u0131na"})," gidilir."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + e"})," ile terminalde yaz\u0131l\u0131 olan ifadenin ",(0,e.jsx)(i.strong,{children:"en sonuna"})," gidilir."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + l"})," ile terminal ",(0,e.jsx)(i.strong,{children:"temizlenir"}),"."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + d"})," ile terminalden ",(0,e.jsx)(i.strong,{children:"\xe7\u0131k\u0131\u015f"})," sa\u011flan\u0131r."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + shift + c"})," ile ",(0,e.jsx)(i.strong,{children:"kopyalama"})," yap\u0131l\u0131r."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + shift + v"})," ile ",(0,e.jsx)(i.strong,{children:"yap\u0131\u015ft\u0131rma"})," yap\u0131l\u0131r."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + c"})," ile \xe7al\u0131\u015fan uygulama ",(0,e.jsx)(i.strong,{children:"durdurulabilir"}),"."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + z"})," \xe7al\u0131\u015fan uygulama ",(0,e.jsx)(i.strong,{children:"arkaya at\u0131l\u0131r"}),"."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"ctrl + u"})," o anda ",(0,e.jsx)(i.strong,{children:"sat\u0131ra yaz\u0131lan her\u015feyi siler"}),", temizler."]}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"Terminal'de \xc7al\u0131\u015fan Metin Edit\xf6rleri"}),"\n",(0,e.jsx)(i.h4,{children:"nano"}),"\n",(0,e.jsx)(a,{alt:"nano",src:"/images/hafta1/20.png",width:"800"}),"\n",(0,e.jsx)(i.h4,{children:"vim"}),"\n",(0,e.jsx)(a,{alt:"vim",src:"/images/hafta1/21.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"GNU/Linux'da Dosya Sistem Hiyerar\u015fisi"}),"\n",(0,e.jsx)(i.p,{children:"UNIX tabanl\u0131 ya da esinlenilmi\u015f i\u015fletim sistemlerinin dosya sistem hiyerar\u015fisi Windows i\u015fletim sisteminden olduk\xe7a farkl\u0131d\u0131r."}),"\n",(0,e.jsx)(a,{alt:"windows-my-computer",src:"/images/hafta1/23.png",width:"800"}),"\n",(0,e.jsx)(a,{alt:"windows-my-computer",src:"/images/hafta1/24.png",width:"800"}),"\n",(0,e.jsxs)(i.p,{children:["GNU/Linux sistemlerde bir dosya dizin hiyerar\u015fisi vard\u0131r. Bu hiyerar\u015finin en \xfcst\xfcnde ",(0,e.jsx)(i.strong,{children:'"/"'})," yani ",(0,e.jsx)(i.strong,{children:"root(k\xf6k)"})," dizini bulunur. Bu, t\xfcm sistemin referans noktas\u0131d\u0131r."]}),"\n",(0,e.jsx)(a,{alt:"dosya-sistem-hiyerar\u015fisi",src:"/images/hafta1/22.png",width:"800"}),"\n",(0,e.jsx)(i.h4,{children:"/ [root(k\xf6k) dizini]"}),"\n",(0,e.jsx)(i.p,{children:"T\xfcm dizinlerin \xfczerinde bulunan dizindir. T\xfcm dizinler buradan dallanarak olu\u015fturulur."}),"\n",(0,e.jsx)(i.h4,{children:"/bin"}),"\n",(0,e.jsx)(i.p,{children:"Sistemin temel komutlar\u0131n\u0131n bulundu\u011fu dizindir."}),"\n",(0,e.jsxs)(i.p,{children:["Kulland\u0131\u011f\u0131m\u0131z \xe7o\u011fu komut bu dizin alt\u0131nda bulunur. ",(0,e.jsx)(i.strong,{children:"(cat, mkdir, cp, ls, mv, rm )"})]}),"\n",(0,e.jsx)(i.h4,{children:"/etc"}),"\n",(0,e.jsx)(i.p,{children:"Sistemin b\xfct\xfcn yap\u0131land\u0131rma dosyalar\u0131 bu dizin alt\u0131nda bulunur. Yap\u0131land\u0131rma dosyas\u0131; bir program\u0131n i\u015fleyi\u015fini kontrol etmek i\xe7in kullan\u0131lan yerel bir dosyad\u0131r."}),"\n",(0,e.jsx)(i.h4,{children:"/home"}),"\n",(0,e.jsx)(i.p,{children:"Kullan\u0131c\u0131lar\u0131n kay\u0131tl\u0131 dosyalar\u0131n\u0131, ki\u015fisel ayarlar\u0131n\u0131 vb. i\xe7eren ev dizinleridir.\nWindows'daki Documents and Settings'e benzetebiliriz. Her bir yeni kullan\u0131c\u0131 i\xe7in alt dizin olarak alt\u0131na olu\u015fturulur."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"- /home\n\t|-----\x3e dev\n\t|-----\x3e hasantezcan \n\t|-----\x3e boratanr\u0131kulu\n"})}),"\n",(0,e.jsx)(i.h4,{children:"/root"}),"\n",(0,e.jsx)(i.p,{children:"Root kullan\u0131c\u0131s\u0131n\u0131n home dizinidir. Di\u011fer home dizinlerinden bi fark\u0131 yoktur."}),"\n",(0,e.jsx)(i.h4,{children:"/lib"}),"\n",(0,e.jsxs)(i.p,{children:["Kernel mod\xfclleri ve payla\u015f\u0131lan k\xfct\xfcphane dosyalar\u0131 bu klas\xf6rde bulunur. Var olan \xe7ekirdek mod\xfcllerini ",(0,e.jsx)(i.strong,{children:"/lib/modules/[versiyon_numaras\u0131]"})," i\xe7erisinde bulabilirsiniz."]}),"\n",(0,e.jsx)(i.h4,{children:"/var"}),"\n",(0,e.jsxs)(i.p,{children:["Sistem de\u011fi\u015fkenlerini saklar. Home dizini kullan\u0131c\u0131lar\u0131n dosyalar\u0131n\u0131 depolarken, ",(0,e.jsx)(i.strong,{children:"/var"})," dizini i\xe7inde de programlar\u0131n olu\u015fturdu\u011fu veriler tutulur."]}),"\n",(0,e.jsx)(i.h4,{children:"/opt"}),"\n",(0,e.jsxs)(i.p,{children:['GNU/Linux dosya dizin hiyerar\u015fisine uymayan programlar\u0131n kuruldu\u011fu dizindir. Hen\xfcz sizlere bahsetmedi\u011fimiz "Ba\u011f\u0131ml\u0131l\u0131k" kavram\u0131na uymayan bu programlar sistemden yal\u0131t\u0131lm\u0131\u015f halde ',(0,e.jsx)(i.strong,{children:"/opt"})," dizini alt\u0131ndan \xe7al\u0131\u015fmay\u0131 s\xfcrd\xfcr\xfcr."]}),"\n",(0,e.jsx)(a,{alt:"opt",src:"/images/hafta1/25.png",width:"800"}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"Not :"})," GNU/Linux sistemlerde ",(0,e.jsx)(i.strong,{children:"her zaman bir dizin i\xe7ersinde bulunursunuz."})," Yani a\u011fa\xe7 yap\u0131s\u0131n\u0131n d\u0131\u015f\u0131na \xe7\u0131kamazs\u0131n\u0131z."]}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsxs)(i.p,{children:["Bir dosyan\u0131n yeri tarif ederken kullan\u0131d\u0131\u011f\u0131m\u0131z iki t\xfcrl\xfc yol vard\u0131r. Bunlar ",(0,e.jsx)(i.strong,{children:"Tam Yol"})," ve ",(0,e.jsx)(i.strong,{children:"G\xf6receli Yol"})," dur."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"Tam Yol :"})," Her zaman ",(0,e.jsx)(i.strong,{children:"root"})," dizininden ba\u015flar ve hedef g\xf6sterdi\u011fimiz dizine kadar devam eder. Bu komutu hangi dizinde olursak olal\u0131m \xe7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda sonu\xe7 al\u0131r\u0131z. \xc7\xfcnk\xfc bu tarif hi\xe7bir zaman de\u011fi\u015fmez. Bunun nedeni de referans ald\u0131\u011f\u0131 ilk yolun root olmas\u0131d\u0131r."]}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"G\xf6receli Yol :"})," Bu tarifin her zaman ge\xe7erlili\u011fi yoktur. \u0130\xe7ersinde bulununan dizine g\xf6re de\u011fi\u015fiklik g\xf6sterir."]}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"Paket Y\xf6neticisi Nedir ?"}),"\n",(0,e.jsx)(i.p,{children:"Hadi \u015fimdi gidip Windows bir sistemde deneme ama\xe7l\u0131 bir uygulama kural\u0131m. \xd6rnek olmas\u0131 a\xe7\u0131s\u0131ndan firefox kurulumu yapal\u0131m."}),"\n",(0,e.jsx)(i.p,{children:"Kurulum i\xe7in ilk olarak browser a\xe7\u0131lmal\u0131, ilgili site bulunmal\u0131, ilgili exe dosyas\u0131 sisteme indirilip, \xe7al\u0131\u015ft\u0131r\u0131lmal\u0131 ve ard\u0131ndan kurulum ad\u0131mlar\u0131 uygulanmal\u0131d\u0131r."}),"\n",(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:"Ne kadar ilkelce de\u011fil mi ?"})}),"\n",(0,e.jsxs)(i.p,{children:["GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda b\xf6yle bir \u015fey yok arkada\u015flar. Paket y\xf6neticisi diye bir kavram var. Paket y\xf6neticisi ile tek bir komut ile istedi\u011finiz uygulamay\u0131 kulland\u0131\u011f\u0131n\u0131z da\u011f\u0131t\u0131m\u0131n ",(0,e.jsx)(i.strong,{children:"repo"}),"'lar\u0131ndan direkt olarak \xe7ekip kurabilirsiniz."]}),"\n",(0,e.jsx)(i.p,{children:"Paket y\xf6neticisi yaln\u0131zca bir programd\u0131r ama da\u011f\u0131t\u0131mdan da\u011f\u0131t\u0131ma farkl\u0131l\u0131k g\xf6sterir, her paket y\xf6neticisini her da\u011f\u0131t\u0131mda kullanamazs\u0131n\u0131z."}),"\n",(0,e.jsx)(i.p,{children:"\xd6rne\u011fin Debian'dan t\xfcremi\u015f olan Ubuntu, APT isimli bir paket y\xf6neticisi kullan\u0131r."}),"\n",(0,e.jsx)(i.p,{children:"Yani Debian tabanl\u0131 da\u011f\u0131t\u0131mlarda APT paket y\xf6neticisi kullan\u0131l\u0131r."}),"\n",(0,e.jsx)(i.p,{children:"APT d\u0131\u015f\u0131nda, debian tabanl\u0131 olmayadan da\u011f\u0131t\u0131mlarda kullan\u0131lan, bir\xe7ok paket y\xf6neticisi vard\u0131r."}),"\n",(0,e.jsxs)(i.ul,{children:["\n",(0,e.jsxs)(i.li,{children:["dnf(yum) ",(0,e.jsx)(i.strong,{children:"fedora"})]}),"\n",(0,e.jsxs)(i.li,{children:["pacman ",(0,e.jsx)(i.strong,{children:"archlinux"})]}),"\n",(0,e.jsxs)(i.li,{children:["portage ",(0,e.jsx)(i.strong,{children:"gentoo"})]}),"\n",(0,e.jsxs)(i.li,{children:["zypper ",(0,e.jsx)(i.strong,{children:"opensuse"})]}),"\n"]}),"\n",(0,e.jsx)(i.p,{children:"Paket y\xf6neticilerinin kullan\u0131mlar\u0131 farkl\u0131l\u0131k g\xf6sterebilir. Ancak temelde b\xfct\xfcn paket y\xf6neticileri ayn\u0131 i\u015fi yaparlar."}),"\n",(0,e.jsx)(i.p,{children:"Hadi \u015fimdi bir de terminal \xfczerinden firefox kurulumunu ger\xe7ekle\u015ftirelim. Bunun i\xe7in a\u015fa\u011f\u0131daki komutu y\xfcr\xfctmemiz yeterlidir."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tsudo apt install firefox\n"})}),"\n",(0,e.jsx)(a,{alt:"apt",src:"/images/hafta1/28.png",width:"800"}),"\n",(0,e.jsx)(i.p,{children:"\u015eimdi bu komutu inceleyelim.."}),"\n",(0,e.jsx)(a,{alt:"apt",src:"/images/hafta1/29.png",width:"800"}),"\n",(0,e.jsxs)(i.p,{children:["Burada ",(0,e.jsx)(i.strong,{children:"sudo"})," ifadesini kullanma sebebimiz i\u015flemin sistem dosyalar\u0131 \xfczerinde ger\xe7ekle\u015fiyor olmas\u0131. Bu y\xfczden komutun root yetkisi ile \xe7al\u0131\u015fmas\u0131 i\xe7in komutun ba\u015f\u0131na ",(0,e.jsx)(i.strong,{children:"sudo"})," ifadesini ekledik."]}),"\n",(0,e.jsx)(i.p,{children:"G\xf6rd\xfc\u011f\xfcn\xfcz gibi kullan\u0131m\u0131 olduk\xe7a basit. APT paket y\xf6neticisinin parametreleri ile ilgili bilgiye a\u015fa\u011f\u0131daki tablodan eri\u015febilirisiniz."}),"\n",(0,e.jsxs)(i.p,{children:["Tablo ba\u015flang\u0131\xe7ta olduk\xe7a korkun\xe7 g\xf6z\xfckecektir ama paket y\xf6neticisi kulland\u0131k\xe7a al\u0131\u015faca\u011f\u0131n\u0131z\u0131n garantisini veririz ",(0,e.jsx)(i.strong,{children:":)"})," ."]}),"\n",(0,e.jsxs)(i.table,{children:[(0,e.jsx)(i.thead,{children:(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.th,{align:"center",children:"APT"}),(0,e.jsx)(i.th,{align:"center",children:"A\xe7\u0131klama"})]})}),(0,e.jsxs)(i.tbody,{children:[(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["apt search ",(0,e.jsx)(i.strong,{children:"packageName"})]}),(0,e.jsx)(i.td,{align:"center",children:"paket arar"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["apt install ",(0,e.jsx)(i.strong,{children:"packageName"})]}),(0,e.jsx)(i.td,{align:"center",children:"paket y\xfckler"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["apt remove ",(0,e.jsx)(i.strong,{children:"packageName"})]}),(0,e.jsx)(i.td,{align:"center",children:"paket siler"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{align:"center",children:"apt autoremove"}),(0,e.jsx)(i.td,{align:"center",children:"herhangi bir pakete ba\u011fl\u0131 olmayan gereksiz paketleri siler"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{align:"center",children:"apt update"}),(0,e.jsx)(i.td,{align:"center",children:"repo paket bilgilerini g\xfcnceller"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{align:"center",children:"apt update && apt upgrade"}),(0,e.jsx)(i.td,{align:"center",children:"y\xfckl\xfc paketleri g\xfcnceller"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{align:"center",children:"apt update && apt dist-upgrade"}),(0,e.jsx)(i.td,{align:"center",children:"sistemin tam g\xfcncellemesini yapar"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["apt install \u2013download-only ",(0,e.jsx)(i.strong,{children:"packageName"})]}),(0,e.jsx)(i.td,{align:"center",children:"paketi yaln\u0131zca indirir (paket y\xf6neticisi cache konumuna)"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{align:"center",children:"ls /var/cache/apt/archives/"}),(0,e.jsx)(i.td,{align:"center",children:"paket y\xf6neticisi cache'ni g\xf6r\xfcnt\xfcler"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["apt install ",(0,e.jsx)(i.strong,{children:"/path/to/packageName.deb"})]}),(0,e.jsx)(i.td,{align:"center",children:"paketi dosya ile y\xfckler"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{align:"center",children:"tail -f /var/log/dpkg.log"}),(0,e.jsx)(i.td,{align:"center",children:"paket y\xf6neticisi log'lar\u0131n\u0131 g\xf6sterir"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["apt show ",(0,e.jsx)(i.strong,{children:"packageName"})]}),(0,e.jsx)(i.td,{align:"center",children:"repo'daki bir paketin bilgisini g\xf6sterir"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["dpkg -s ",(0,e.jsx)(i.strong,{children:"packageName"})]}),(0,e.jsx)(i.td,{align:"center",children:"y\xfckl\xfc olan bir paketin bilgisini g\xf6sterir"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsxs)(i.td,{align:"center",children:["dpkg -L ",(0,e.jsx)(i.strong,{children:"packageName"})]}),(0,e.jsx)(i.td,{align:"center",children:"y\xfckl\xfc olan paketin dosyalar\u0131n\u0131n konumlar\u0131n\u0131 g\xf6sterir"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{align:"center",children:"apt-cache policy"}),(0,e.jsx)(i.td,{align:"center",children:"paket kaynak adreslerini listeler"})]})]})]}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"REPO Kavram\u0131 Nedir ?"}),"\n",(0,e.jsx)(i.p,{children:"Az \xf6nce paket y\xf6neticisi ile birlikte uygulamalar\u0131n nas\u0131l kurulaca\u011f\u0131n\u0131 \xf6\u011frendik."}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"Peki bu paketler nereden geliyor.."})," \u0130\u015fte burada REPO kavram\u0131 ortaya \xe7\u0131k\u0131yor. Her da\u011f\u0131t\u0131m\u0131n kendisine ait bir REPO'su vard\u0131r. Paket y\xf6neticisi ile indirilip kurulan uygulamalar bu REPO'lardan gelir."]}),"\n",(0,e.jsx)(i.p,{children:"REPO adreslerini a\u015fa\u011f\u0131daki gibi g\xf6r\xfcnt\xfcleyebiliriz. Ama l\xfctfen bu dosyalar\u0131 bir bilginiz yok ise de\u011fi\u015ftirmeyin."}),"\n",(0,e.jsx)(i.pre,{children:(0,e.jsx)(i.code,{className:"language-bash",children:"\tvim /etc/apt/source.list\n"})}),"\n",(0,e.jsxs)(i.p,{children:["PauSiber Dev'de REPO olarak ",(0,e.jsx)(i.a,{href:"http://archive.ubuntu.com/ubuntu/",children:"http://archive.ubuntu.com/ubuntu/"})," kullan\u0131lmaktad\u0131r."]}),"\n",(0,e.jsx)(a,{alt:"repo",src:"/images/hafta1/30.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"REPO'da Olmayan Uygulamalar"}),"\n",(0,e.jsx)(i.p,{children:"REPO'larda yaln\u0131zca a\xe7\u0131k kaynak uygulamalar bulunabilir. \xd6rne\u011fin Google Chrome kapal\u0131 kaynak bir uygulamad\u0131r. Bu durumda ne yapaca\u011f\u0131z ?"}),"\n",(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:"Not :"})," Chromium a\xe7\u0131k kaynak oldu\u011fu i\xe7in REPO'larda mevcuttur."]}),"\n",(0,e.jsx)(i.p,{children:"E\u011fer REPO'larda bulunmayan bir uygulama kurulacak ise ilk yap\u0131lmas\u0131 gereken, uygulaman\u0131n da\u011f\u0131t\u0131c\u0131n\u0131n sitesinden hangi \u015fekilde edinilmesi gerekti\u011fine bakmakt\u0131r. \xc7\xfcnk\xfc bir\xe7ok farkl\u0131 \u015fekilde da\u011f\u0131t\u0131l\u0131yor olabilir."}),"\n",(0,e.jsxs)(i.p,{children:["\xd6rne\u011fin Google Chrome i\xe7in bir ",(0,e.jsx)(i.strong,{children:"deb"})," paketi indirmek gerekirken, Spotify kurulumu i\xe7in REPO listemize ek bir kaynak adresi eklememiz gerekir."]}),"\n",(0,e.jsx)(i.p,{children:"Bu y\xfczden l\xfctfen d\u0131\u015far\u0131dan bir uygulama kuracaksan\u0131z, forumlara ya da youtube'a bakmak yerine, da\u011f\u0131t\u0131c\u0131n\u0131n sitesinden bak\u0131n. Orada kesinlikle bir bilgi olacakt\u0131r."}),"\n",(0,e.jsx)(a,{alt:"chrome",src:"/images/hafta1/31.png",width:"800"}),"\n",(0,e.jsx)(a,{alt:"spotify",src:"/images/hafta1/32.png",width:"800"}),"\n",(0,e.jsx)("hr",{}),"\n",(0,e.jsx)(i.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,e.jsxs)(i.ul,{children:["\n",(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:"Terminalin ne oldu\u011funu"})," ve neden kullanmam\u0131z gerekti\u011fini \xf6\u011frendik."]}),"\n",(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:"Temel komutlar"})," ile terminal kullan\u0131m\u0131na ilk ad\u0131m\u0131 att\u0131k."]}),"\n",(0,e.jsxs)(i.li,{children:["Terminal \xfczerinde kullanabilece\u011fimiz ",(0,e.jsx)(i.strong,{children:"yararl\u0131 k\u0131sayollar"}),"\u0131 \xf6\u011frendik."]}),"\n",(0,e.jsxs)(i.li,{children:["Terminal \xfczerinde \xe7al\u0131\u015fan ",(0,e.jsx)(i.strong,{children:"metin edit\xf6rleri"}),"ni denedik."]}),"\n",(0,e.jsxs)(i.li,{children:["GNU/Linux\u2019da ",(0,e.jsx)(i.strong,{children:"dosya sistem hiyerar\u015fisi"}),"nin nas\u0131l oldu\u011funu temel d\xfczeyde \xf6\u011frendik."]}),"\n",(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:"Paket Y\xf6neticisi"})," ve ",(0,e.jsx)(i.strong,{children:"REPO"})," kavramlar\u0131n\u0131 \xf6\u011frendik."]}),"\n"]})]})},a=Object.assign({},(0,t.ah)(),n.components),r=a.wrapper;return r?(0,e.jsx)(r,h({},n,{children:(0,e.jsx)(i,{})})):i()}var u=(0,e.jsx)(c,{});function o(n,i){throw new Error("Expected "+(i?"component":"object")+" `"+n+"` to be defined: you likely forgot to import, pass, or provide it.")}function m(n){return(0,l.withSSG)((0,r.Z)({filename:"hafta-bir.mdx",route:"/haftalar/hafta-bir",meta:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},s.Z))(h({},n,{children:u}))}}},function(n){n.O(0,[774,353,888,179],(function(){return i=8232,n(n.s=i);var i}));var i=n.O();_N_E=i}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/haftalar/hafta-iki-6fe584eb7c27c3d7.js b/_next/static/chunks/pages/haftalar/hafta-iki-6fe584eb7c27c3d7.js deleted file mode 100644 index af9e050..0000000 --- a/_next/static/chunks/pages/haftalar/hafta-iki-6fe584eb7c27c3d7.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[409],{7003:function(i,n,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/haftalar/hafta-iki",function(){return e(8433)}])},7845:function(i,n,e){"use strict";var r=e(5893),a=e(5988),l=(new Date).getFullYear();n.Z={footer:(0,r.jsxs)("small",{style:{display:"block",marginTop:"8rem"},className:"jsx-7c359fde634f3543",children:[(0,r.jsx)("time",{className:"jsx-7c359fde634f3543",children:l})," \xa9 PauSiber",(0,r.jsx)(a.default,{id:"7c359fde634f3543",children:"a.jsx-7c359fde634f3543{float:right}\n@media screen and (max-width:480px) {article.jsx-7c359fde634f3543{padding-top:2rem;\npadding-bottom:4rem}}"})]})}},8433:function(i,n,e){"use strict";e.r(n),e.d(n,{default:function(){return o}});var r=e(5893),a=e(8616),l=e(3805),s=e(7845),d=e(1151);function t(i,n,e){return n in i?Object.defineProperty(i,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[n]=e,i}function c(i){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},n=function(){var n=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",h4:"h4",ul:"ul",li:"li",pre:"pre",code:"code",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td"},(0,d.ah)(),i.components);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{children:"Hafta 2"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Ama\xe7 :"})," Kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Yazarlar :"})," ",(0,r.jsx)(n.a,{href:"https://github.com/boratanrikulu",children:(0,r.jsx)(n.strong,{children:"boratanrikulu"})})," ",(0,r.jsx)(n.strong,{children:"&&"})," ",(0,r.jsx)(n.a,{href:"https://github.com/hasantezcan",children:(0,r.jsx)(n.strong,{children:"hasantezcan"})})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Hastane \xd6rne\u011fi \xdczerinden A\xe7\u0131klanmas\u0131"}),"\n",(0,r.jsxs)(n.p,{children:["Bir hastane d\xfc\u015f\xfcn\xfcn, bu hastanede \xe7al\u0131\u015fanlar\u0131n kullanabilece\u011fi yaln\u0131z bir tane bilgisayar var. Ve hastanemizde \xe7al\u0131\u015fan \xfc\xe7 ana meslek grubu var. Bunlar; ",(0,r.jsx)(n.strong,{children:"doktorlar"}),", ",(0,r.jsx)(n.strong,{children:"g\xfcvenlik g\xf6revlileri"})," ve ",(0,r.jsx)(n.strong,{children:"a\u015f\xe7\u0131lar"}),"."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/14.png",width:"800"})}),"\n",(0,r.jsx)(n.p,{children:"Bu \xe7al\u0131\u015fanlar\u0131n tek bir bilgisayar\u0131 kullanmas\u0131n\u0131n iki farkl\u0131 seneryosu olabilir."}),"\n",(0,r.jsx)(n.h4,{children:'1 - \xdc\xe7 meslek grubu da ayn\u0131 bilgisayar\u0131 "tek oturum" \u015feklinde kullanabilir.'}),"\n",(0,r.jsxs)(n.p,{children:["Bu durumda doktor, bilgisayar\u0131 kulland\u0131\u011f\u0131 zaman, olmas\u0131 gerekti\u011fi gibi hastalar\u0131n\u0131n; raporlar\u0131na, filimlerine, ameliyat g\xf6r\xfcnt\xfclerine vb.. bilgilere ula\u015fabilir. Ayn\u0131 zamanda di\u011fer meslek gruplar\u0131 ile ortak bir bilgisayar kulland\u0131\u011f\u0131ndan; ",(0,r.jsx)(n.strong,{children:"g\xfcvenlik kameralar\u0131na"}),", o ay\u0131n ",(0,r.jsx)(n.strong,{children:"mutfak masraflar\u0131na"})," da bakabilir."]}),"\n",(0,r.jsx)(n.p,{children:"Ve bu durum di\u011fer meslek gruplar\u0131 i\xe7in de ge\xe7erlidir. Bir g\xfcvenlik g\xf6revlisinin ya da a\u015f\xe7\u0131n\u0131n herhangi bir hastan\u0131n raporlar\u0131na eri\u015febilmesi ne kadar g\xfcvenli ve do\u011furudur?"}),"\n",(0,r.jsx)(n.p,{children:"\u0130\u015fte bu durumun ya\u015fanmamas\u0131 i\xe7in, her bir \xe7al\u0131\u015fan i\xe7in ayr\u0131 bir kullan\u0131c\u0131 oturumu olu\u015ftururuz."}),"\n",(0,r.jsx)(n.h4,{children:"2 - Her bir \xe7al\u0131\u015fan i\xe7in ayr\u0131 bir oturum a\xe7\u0131labilir."}),"\n",(0,r.jsxs)(n.p,{children:["Bu durumda her bir \xe7al\u0131\u015fan\u0131n kendine ait bir ",(0,r.jsx)(n.strong,{children:"kullan\u0131c\u0131s\u0131"})," olaca\u011f\u0131ndan bir \xf6nceki durumda ya\u015fanan dosya eri\u015fim karma\u015fas\u0131 bu sefer olmayacakt\u0131r. Yani hi\xe7bir a\u015f\xe7\u0131, g\xfcvenlik kameralar\u0131na eri\u015fip bu kay\u0131tlar ile oynayamayacakt\u0131r. Her bir kullan\u0131c\u0131n\u0131n yetkileri belirli olacakt\u0131r."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Hastane \xd6rne\u011fimizi Uygulayal\u0131m"}),"\n",(0,r.jsxs)(n.p,{children:["\u015eimdi gelin bu hastaneye ",(0,r.jsx)(n.strong,{children:"iki tane doktor"}),", ",(0,r.jsx)(n.strong,{children:"iki tane g\xfcvenlik g\xf6revlisi"})," ve ",(0,r.jsx)(n.strong,{children:"iki tane de a\u015f\xe7\u0131"})," ekleyelim."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Doktorlar","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"doktor_beyza"}),"\n",(0,r.jsx)(n.li,{children:"doktor_ahmed"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["G\xfcvenlik\xe7iler","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"guvenlik_aykut"}),"\n",(0,r.jsx)(n.li,{children:"guvenlik_ayse"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["A\u015f\xe7\u0131lar","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"asci_bora"}),"\n",(0,r.jsx)(n.li,{children:"asci_hayriye"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda, sisteme bir kullan\u0131c\u0131 eklemek i\xe7in ",(0,r.jsx)(n.strong,{children:"adduser"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] adduser kullan\u0131c\u0131n\u0131n_ad\u0131\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"tldr useradd",src:"/images/hafta2/28.jpg",width:"800"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"useradd",src:"/images/hafta2/29.jpg",width:"800"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"home",src:"/images/hafta2/30.jpg",width:"800"})}),"\n",(0,r.jsx)(n.p,{children:"\u015euan sistemimize alt\u0131 adet kullan\u0131c\u0131 ekledik."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Ekledi\u011fimiz Kullan\u0131c\u0131lar\u0131 G\xf6r\xfcnt\xfcleyelim"}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux'da sistemde bulunan kullan\u0131c\u0131lar ",(0,r.jsx)(n.strong,{children:"/etc/passwd"})," dosyas\u0131nda s\u0131ralan\u0131r. Kullanc\u0131lar\u0131n bilgileri bu dosyada saklan\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"Bu dosyay\u0131 g\xf6r\xfcnt\xfclemek i\xe7in;"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] cat /etc/passwd\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/7.png",width:"800"})}),"\n",(0,r.jsxs)(n.p,{children:["Dosya incelendi\u011finde ",(0,r.jsx)(n.strong,{children:"dev:x:1000:1000:PauSiber Dev,,,:/home/dev:/usr/bin/zsh"})," gibi ifadeler g\xf6z\xfck\xfcr. Hadi \u015fimdi bu ifadelerin ne anlama geldi\u011fini a\xe7\u0131klayal\u0131m."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"ifade"}),(0,r.jsx)(n.th,{align:"center",children:"a\xe7\u0131klama"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"dev"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131 ad\u0131"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"x"})}),(0,r.jsx)(n.td,{align:"center",children:"kullanc\u0131n\u0131n parolas\u0131n\u0131 temsil eder"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"1000"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131n\u0131n \xfcyelik numaras\u0131d\u0131r (user ID)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"1000"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131n\u0131n ait oldu\u011fu grubun numaras\u0131d\u0131r (group ID)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"PauSiber Dev"})}),(0,r.jsx)(n.td,{align:"center",children:"kullanc\u0131 hakk\u0131nda kay\u0131tl\u0131 bilgi"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"/usr/bin/zsh"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131n\u0131n shell dizini"})]})]})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Gruplar\u0131m\u0131z\u0131 Olu\u015ftural\u0131m"}),"\n",(0,r.jsx)(n.p,{children:"Peki bu hastanede bir tane mi doktar var ? Tabiki de hay\u0131r. Bir meslek grubuna dahil birden fazla \xe7al\u0131\u015fan olabilir. Ayn\u0131 meslek grubunda bulunan \xe7al\u0131\u015fanlar\u0131n g\xf6rev tan\u0131mlar\u0131 birbirleri ile \xf6rt\xfc\u015f\xfcr. Ayn\u0131 meslek grubunda olanlar\u0131 gruplara toplamam\u0131z mant\u0131kl\u0131 bir hareket olacakt\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"\u015euan hastanemizde \xfc\xe7 farkl\u0131 meslek grubuna ait iki\u015fer tane \xe7al\u0131\u015fan\u0131m\u0131z var. Gelin \u015fimdi bu meslek gruplar\u0131 i\xe7in sistemimizde bunu ifade edecek yeni gruplar olu\u015ftural\u0131m."}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda, sisteme bir grup eklemek i\xe7in ",(0,r.jsx)(n.strong,{children:"groupadd"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] groupadd grubun_ismi\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/8.png",width:"800"})}),"\n",(0,r.jsxs)(n.p,{children:["Sistemimize \xfc\xe7 adet yeni grup ekledik. Sistemimizde bulunan gruplar ",(0,r.jsx)(n.strong,{children:"/etc/group"})," dosyas\u0131nda s\u0131ralan\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"Bu dosyay\u0131 g\xf6r\xfcnt\xfclemek i\xe7in;"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] cat /etc/group\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/9.png",width:"800"})}),"\n",(0,r.jsxs)(n.p,{children:['Son g\xf6rselde de g\xf6r\xfcld\xfc\u011f\xfc \xfczere bizim ekledi\u011fimiz gruplar\u0131n haricinde, \xf6nceden ekledi\u011fimiz kullac\u0131lar da burada g\xf6z\xfckmekte. \xd6rne\u011fin "doktor_beyza" gibi bir grup sistemde \xe7oktand\u0131r eklenmi\u015f durumda. ',(0,r.jsx)(n.strong,{children:"Peki bu nas\u0131l oluyor?"})]}),"\n",(0,r.jsx)(n.p,{children:"GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda, sisteme yeni bir kullan\u0131c\u0131 ekledi\u011finizde, sisteme ayn\u0131 anda bu kullan\u0131c\u0131 ad\u0131nda bir de grup ekler."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"\xc7al\u0131\u015fanlar\u0131m\u0131z\u0131 Gruplar\u0131na Ekleyelim"}),"\n",(0,r.jsx)(n.p,{children:"Evet, \u015fuan hastanemizde alt\u0131 adet \xe7al\u0131\u015fan ve bununla birlikte hen\xfcz daha hi\xe7bir personeli dahil etmedi\u011fimiz \xfc\xe7 tane de meslek grubumuz var. \u015eimdi \xe7al\u0131\u015fanlar\u0131m\u0131z\u0131 ait olduklar\u0131 meslek gruplar\u0131na ekleyelim."}),"\n",(0,r.jsxs)(n.p,{children:["Bunu yapmak i\xe7in ",(0,r.jsx)(n.strong,{children:"gpasswd"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] gpasswd --add kullan\u0131c\u0131_adi grup_adi\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Not :"})," Burada ",(0,r.jsx)(n.strong,{children:"--add"})," parametresi olduk\xe7a kritiktir. E\u011fer kullan\u0131lmaz ise kullan\u0131c\u0131y\u0131 hali haz\u0131rda bulundu\u011fu t\xfcm gruplardan \xe7\u0131kar\u0131r ve yeni gruba ekler. Fakat bizim istedi\u011fimiz bu de\u011fil, kullan\u0131c\u0131n\u0131n hali haz\u0131rda bulundu\u011fu gruplar\u0131 de\u011fi\u015ftirmek istemiyoruz, yaln\u0131zca yeni bir gruba dahil etmek istiyoruz, bu durumda ",(0,r.jsx)(n.strong,{children:"--add"})," parametresi kullanmam\u0131z bir gerekliliktir."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/10.png",width:"800"})}),"\n",(0,r.jsxs)(n.p,{children:["Ekleme i\u015flemlerimizi yapt\u0131k. \u015eimdi ",(0,r.jsx)(n.strong,{children:"/etc/group"}),"' u yeniden g\xf6r\xfcnt\xfcleyelim."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/11.png",width:"800"})}),"\n",(0,r.jsx)(n.p,{children:"Ba\u015far\u0131l\u0131 bir \u015fekilde personelimizi gruplar\u0131na ekledik."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastane M\xfcd\xfcr\xfcm\xfcz, Nam-\u0131 De\u011fer ROOT !"}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi s\u0131ra hastanenin m\xfcd\xfcr\xfcnden bahsetmeye geldi. Hastane m\xfcd\xfcr\xfc hastanedeki en yetkili ki\u015fidir. Doktorlar\u0131n, g\xfcvenlik g\xf6revlilerinin ve a\u015f\xe7\u0131n\u0131n eri\u015febildi\u011fi verilerin hepsine eri\u015febilir. Asl\u0131nda o da bir \xe7al\u0131\u015fand\u0131r, fakat \xf6zel bir \xe7al\u0131\u015fand\u0131r. Yetkileri onu di\u011fer \xe7al\u0131\u015fanlardan ayr\u0131\u015ft\u0131r\u0131r."}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux sistemlerde bahsetti\u011fimiz hastane m\xfcdr\xfcn\xfcn kar\u015f\u0131l\u0131\u011f\u0131 ",(0,r.jsx)(n.strong,{children:"root"})," kullan\u0131c\u0131s\u0131d\u0131r. Root kullanc\u0131s\u0131 sistemdeki en yetkili kullanc\u0131d\u0131r. Sistemdeki t\xfcm dosyalara eri\u015fim yetkisi vard\u0131r."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"\xc7al\u0131\u015fanlar\u0131n Odalar\u0131, /home dizinleri"}),"\n",(0,r.jsx)(n.p,{children:"Hastanemizde \xe7al\u0131\u015fan t\xfcm personelin kendine ait bir odas\u0131 vard\u0131r. \xc7al\u0131\u015fanlar bu odalarda kendi ki\u015fisel e\u015fyalar\u0131n\u0131 saklarlar."}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux i\u015fletim sistemlerinde sisteme kay\u0131tl\u0131 her insan kullanc\u0131 i\xe7in ",(0,r.jsx)(n.strong,{children:"/home"})," dizini alt\u0131nda o kullanc\u0131ya tahsis edilmi\u015f bir alan mevcuttur. Kullan\u0131c\u0131lar bu dizinde verilerini diledikleri \u015fekilde depolarlar."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"root"})," kullanc\u0131s\u0131n\u0131n da kendine ait bir odas\u0131 vard\u0131r. Fakat ",(0,r.jsx)(n.strong,{children:"root"})," kullac\u0131s\u0131na ayr\u0131lm\u0131\u015f bu alan direkt ",(0,r.jsx)(n.strong,{children:"root"})," dizini alt\u0131nda ayr\u0131lm\u0131\u015f ",(0,r.jsx)(n.strong,{children:"/root"})," dizinidir."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/17.png",width:"800"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastanemizden \xc7al\u0131\u015fan \xc7\u0131karal\u0131m"}),"\n",(0,r.jsxs)(n.p,{children:["Hastanemizden, yani sistemimizden bir kullan\u0131c\u0131y\u0131 silmek istersek ",(0,r.jsx)(n.strong,{children:"deluser"})," komutunu kullanabiliriz."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] deluser --remove-home kullanc\u0131_adi\n"})}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi sistemimizde kay\u0131tl\u0131 olan doktor_ahmedi a\u015fa\u011f\u0131daki \xf6rnekteki gibi i\u015ften \xe7\u0131karal\u0131m."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/12.png",width:"800"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Kullanc\u0131n\u0131n Parolalar\u0131n\u0131n De\u011fi\u015ftirilmesi"}),"\n",(0,r.jsxs)(n.p,{children:["E\u011fer bir kullan\u0131c\u0131 parolas\u0131n\u0131 de\u011fi\u015ftirmek ister ise ",(0,r.jsx)(n.strong,{children:"passwd"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] passwd\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/13.png",width:"800"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Bir \xc7al\u0131\u015fan\u0131m\u0131z\u0131 Grubundan \xc7\u0131karal\u0131m"}),"\n",(0,r.jsxs)(n.p,{children:["\xd6rne\u011fin guvenl\u0131k_aykut kullan\u0131c\u0131s\u0131n\u0131n art\u0131k guvenlik grubunda bulunmas\u0131n\u0131 istemiyorsak ",(0,r.jsx)(n.strong,{children:"gpasswd"})," ile birlikte ",(0,r.jsx)(n.strong,{children:"--delete"})," parametresini kullanarak bu i\u015flemi ger\xe7ekle\u015ftirebiliriz."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] gpasswd --delete guvenlik_aykut guvenlikciler\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/18.png",width:"800"})}),"\n",(0,r.jsxs)(n.p,{children:["Kullan\u0131c\u0131y\u0131 \xf6rnek amac\u0131yla grubundan \xe7\u0131karm\u0131\u015ft\u0131k, \u015fimdi geri dahil edelim ",(0,r.jsx)(n.strong,{children:":)"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] gpasswd --add guvenlik_aykut guvenlikciler\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Bir Grubumuzu Silelim"}),"\n",(0,r.jsxs)(n.p,{children:["\xd6rne\u011fin sistemimize hem\u015fireler grubunu eklemi\u015f olal\u0131m, e\u011fer bu gruba ihtiyac\u0131m\u0131z art\u0131k kalmaz ise grubu silebiliriz. Grubu silmek i\xe7in ",(0,r.jsx)(n.strong,{children:"groupdel"})," komutu kullan\u0131l\u0131r."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] groupdel hemsireler\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/15.png",width:"800"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Hastane Y\xf6netimi"}),"\n",(0,r.jsxs)(n.p,{children:["Hastane \xf6rne\u011fimizde ",(0,r.jsx)(n.strong,{children:"hastalar"}),", ",(0,r.jsx)(n.strong,{children:"kameralar"})," ve ",(0,r.jsx)(n.strong,{children:"yemekhane"})," dizinlerimiz olacak. Fakat tahmin edece\u011finiz \xfczere bu dosyalara yaln\u0131zca belirli meslek gruplar\u0131n\u0131n ve belirli kullan\u0131c\u0131lar\u0131n yetki sahibi olmas\u0131n\u0131 bekleriz."]}),"\n",(0,r.jsx)(n.p,{children:"A\u015fa\u011f\u0131daki gibi dizinleri olu\u015ftural\u0131m."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/19.png",width:"800"})}),"\n",(0,r.jsx)(n.p,{children:"Dizinlerimiz i\xe7erisine a\u015fa\u011f\u0131daki gibi gerekli dosyalar\u0131 da olu\u015ftural\u0131m."}),"\n",(0,r.jsx)(n.p,{children:"Bu dizinlerin sahiplik ve izinlerini ayarlama i\u015flemine ge\xe7meden \xf6nce GNU/Linux'da dosya ve dizin kavramlar\u0131ndan bahsetmeliyiz."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta2/20.png",width:"800"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Dosya ve Dizin Kavramlar\u0131"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"GNU/Linux'ta her \u015fey birer dosyad\u0131r"}),". ",(0,r.jsx)(n.a,{href:"https://stackoverflow.com/a/10893965",children:(0,r.jsx)(n.strong,{children:"[1]"})})]}),"\n",(0,r.jsxs)(n.p,{children:["\xd6z\xfcnde ",(0,r.jsx)(n.strong,{children:"dizinler de dosyalar\u0131n konumunu belirten birer \xf6zel dosyad\u0131r."})," Dizinler veri i\xe7eremez, yaln\u0131zca konum belirtmek ama\xe7l\u0131 kullan\u0131labilirler. Dizinlerin bir t\xfcr\xfc yoktur, uzant\u0131s\u0131 yoktur. Dosyalar\u0131n ise bir t\xfcr\xfc vard\u0131r, uzant\u0131s\u0131 bulunabilir."]}),"\n",(0,r.jsx)(n.p,{children:"Dizin ve dosya isimleri ayn\u0131 olamaz."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Dosya ve Dizin \u0130zinlerinin \u0130ncelenmesi"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"ls"})," ile dosyalar\u0131n izinleri incelenebilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] ls -l fileName\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/dosya-ve-dizin-izinleri/0.png"})}),"\n",(0,r.jsx)(n.p,{children:"Dosya ve dizin i\u015flemlerine bak\u0131ld\u0131\u011f\u0131nda 10 karakterden olu\u015fan bir yap\u0131 g\xf6r\xfcn\xfcr."}),"\n",(0,r.jsx)(n.p,{children:"Bu karakterler"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["dosyalar i\xe7in ",(0,r.jsx)(n.strong,{children:"r"}),"[read] okumak, ",(0,r.jsx)(n.strong,{children:"w"}),"[write] yazmak, ",(0,r.jsx)(n.strong,{children:"x"}),"[execute] \xe7al\u0131\u015ft\u0131rmak"]}),"\n",(0,r.jsxs)(n.li,{children:["dizinler i\xe7in ",(0,r.jsx)(n.strong,{children:"r"}),"[read] i\xe7eri\u011fini g\xf6r\xfcnt\xfcleyebilmek, ",(0,r.jsx)(n.strong,{children:"w"}),"[write] alt dosya ve dizinler olu\u015fturabilmek, ",(0,r.jsx)(n.strong,{children:"x"}),"[execute] cd ile i\xe7ine girebilmek"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"izinlerini temsilen kullan\u0131l\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"Bunlar\u0131 a\u015fa\u011f\u0131daki gibi \xfc\xe7erli olarak grupland\u0131rarak incelemekte fayda vard\u0131r."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/dosya-ve-dizin-izinleri/1.jpg"})}),"\n",(0,r.jsx)(n.p,{children:"Yani bu \xf6rnektekinin;"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["bir ",(0,r.jsx)(n.strong,{children:"dizin"})," oldu\u011funu,"]}),"\n",(0,r.jsxs)(n.li,{children:["dosya kullan\u0131c\u0131s\u0131n\u0131n ",(0,r.jsx)(n.strong,{children:"okuma/yazma/\xe7al\u0131\u015ft\u0131rma"}),","]}),"\n",(0,r.jsxs)(n.li,{children:["dosya grubunun ",(0,r.jsx)(n.strong,{children:"okuma/\xe7al\u0131\u015ft\u0131rma"}),","]}),"\n",(0,r.jsxs)(n.li,{children:["di\u011fer herkesin de ",(0,r.jsx)(n.strong,{children:"okuma/\xe7al\u0131\u015ft\u0131rma"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"iznine sahip oldu\u011funu g\xf6r\xfcyoruz. Ayr\u0131ca bu dosyalar\u0131n fsutil kullan\u0131c\u0131s\u0131na ait oldu\u011funu ve group'unun users oldu\u011funu incelemi\u015f olduk."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastane Dosya Sahipliklerinin De\u011fi\u015ftirilmesi"}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi teorik bilgimizi edikten sonra hastane \xf6rne\u011fimize geri d\xf6nebiliriz."}),"\n",(0,r.jsxs)(n.p,{children:["Dosyalar\u0131n sahipliklerini user ve group baz\u0131nda de\u011fi\u015ftirece\u011fiz. Bunun i\xe7in ",(0,r.jsx)(n.strong,{children:"chown"})," komutu kullanabiliriz. Yap\u0131s\u0131 olduk\xe7a basittir."]}),"\n",(0,r.jsx)(n.p,{children:"Genel syntax \xf6rnekleri a\u015fa\u011f\u0131daki gibidir."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chown yeniSahip dosya_adi\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chown yeniSahip:yeniGroup dosya_adi\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chown :yeniGroup dosya_adi\n"})}),"\n",(0,r.jsxs)(n.p,{children:["A\u015fa\u011f\u0131daki gibi 3 dizin i\xe7in de ",(0,r.jsx)(n.strong,{children:"-R"})," parametresini kullanarak dosyalar\u0131n group bilgilerini de\u011fi\u015ftirelim."]}),"\n",(0,r.jsxs)(n.p,{children:["Burada ",(0,r.jsx)(n.strong,{children:"-R"})," parametresini kullanma sebebimiz belirtti\u011fimiz i\u015flemi recursive olarak t\xfcm alt(sub) dosya ve dizinlere uygulanmas\u0131 gerekti\u011fini belirtmek i\xe7indir."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/21.png"})}),"\n",(0,r.jsx)(n.p,{children:"T\xfcm hastane dosyalar\u0131m\u0131z\u0131n group sahipliklerini de\u011fi\u015ftirdik. Fakat dosyalar\u0131n kullan\u0131c\u0131 sahiplikleri halen belirlenmi\u015f de\u011fil. Her dosyan\u0131n sahibi olarak meslek grubundan belirlenen bir kullan\u0131c\u0131y\u0131 atamak istiyoruz. A\u015fa\u011f\u0131daki gibi ad\u0131mlar\u0131 ger\xe7ekle\u015ftirdik."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/22.png"})}),"\n",(0,r.jsx)(n.p,{children:"Dosya sahipliklerini ayarlad\u0131k."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastane Dosya \u0130zinlerinin De\u011fi\u015ftirilmesi"}),"\n",(0,r.jsx)(n.p,{children:"Burada kurmak iste\u011fimiz yap\u0131 \u015fu \u015fekilde; ilgi dizinler ve dosyalar meslek grubundaki herkes taraf\u0131ndan okunabilir, \xe7al\u0131\u015ft\u0131r\u0131labilir olmal\u0131; meslek grubundan belirlenen yaln\u0131zca bir ki\u015fi dosya \xfczerinde de\u011fi\u015ftirme yetkisine sahip olmal\u0131."}),"\n",(0,r.jsx)(n.p,{children:"Bunun i\xe7in dosyalar\u0131n izinlerini de\u011fi\u015ftirece\u011fiz."}),"\n",(0,r.jsxs)(n.p,{children:["Bunun i\xe7in ",(0,r.jsx)(n.strong,{children:"chmod"})," komutu kullanabilirz. Chmod'un iki tip kullan\u0131m\u0131 vard\u0131r; ",(0,r.jsx)(n.strong,{children:"text method"})," ve ",(0,r.jsx)(n.strong,{children:"numeric method"}),". Text method g\xfcnl\xfck kullan\u0131mda daha \xe7ok kullan\u0131l\u0131r, basit olmas\u0131 a\xe7\u0131s\u0131ndan. Numeric method daha \xe7ok script'lerde kullan\u0131l\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"Text Method'un genel kullan\u0131m syntax'\u0131 a\u015fa\u011f\u0131daki gibidir."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chmod kim=izinYetkisi dosyaAd\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Burada ",(0,r.jsx)(n.strong,{children:"kim"})," ifadesi, i\u015flemi hangi ki\u015filer i\xe7in yapaca\u011f\u0131n\u0131 belirtmek i\xe7in kullan\u0131r\u0131z."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"Text"}),(0,r.jsx)(n.th,{align:"center",children:"Class"}),(0,r.jsx)(n.th,{align:"center",children:"A\xe7\u0131klama"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"u"})}),(0,r.jsx)(n.td,{align:"center",children:"Owner"}),(0,r.jsx)(n.td,{align:"center",children:"Dosyaya sahip olan kullan\u0131c\u0131"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"g"})}),(0,r.jsx)(n.td,{align:"center",children:"Group"}),(0,r.jsx)(n.td,{align:"center",children:"Dosyan\u0131n ait oldu\u011fu grup"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"o"})}),(0,r.jsx)(n.td,{align:"center",children:"Other"}),(0,r.jsx)(n.td,{align:"center",children:"Di\u011fer herkes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"a"})}),(0,r.jsx)(n.td,{align:"center",children:"All"}),(0,r.jsxs)(n.td,{align:"center",children:["Herkes (",(0,r.jsx)(n.strong,{children:"ugo"})," ile ayn\u0131 anlama gelir)"]})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["\xd6rnekte ",(0,r.jsx)(n.strong,{children:"="})," olarak ifade ise verilen i\u015flem ile ne yap\u0131laca\u011f\u0131n\u0131 belirtmek amac\u0131yla kullan\u0131r\u0131z."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"Operator"}),(0,r.jsx)(n.th,{align:"center",children:"A\xe7\u0131klama"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"+"})}),(0,r.jsx)(n.td,{align:"center",children:"Yetkiyi ilgili kullan\u0131c\u0131lara ekler"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"-"})}),(0,r.jsx)(n.td,{align:"center",children:"Yetkiyi ilgili kullan\u0131c\u0131lardan \xe7\u0131kar\u0131r"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"="})}),(0,r.jsx)(n.td,{align:"center",children:"Yetkiyi e\u015fitler"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0130zin yetkisi"})," ise verilecek olan izindir. Yani; r, w, x gibi ifadeler girilir."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Dosyalar\u0131m\u0131z\u0131n \u0130zinlerini Ayarlayal\u0131m"}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi \xf6\u011frendi\u011fimiz teorik bilgileri, hastane \xf6rne\u011fimiz \xfczerinde uygulayarak prati\u011fe d\xf6kelim."}),"\n",(0,r.jsxs)(n.p,{children:["\u0130lk olarak t\xfcm dosya group'lar\u0131ndan yazma yetkisini \xe7\u0131karaca\u011f\u0131z. Bunun i\xe7in a\u015fa\u011f\u0131daki gibi bir ifade kullanmam\u0131z yeterlidir. A\u015fa\u011f\u0131daki ifade, dosyan\u0131n group sahipli\u011finden yazma ",(0,r.jsx)(n.strong,{children:"[w]"})," yetkisini \xe7\u0131karmam\u0131z\u0131 sa\u011flar. Art\u0131k group yetkisi kullan\u0131larak dosya \xfczerinde yazma i\u015flemi yap\u0131lamayacakt\u0131r."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chmod g-w -R dizin/\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/23.png"})}),"\n",(0,r.jsxs)(n.p,{children:["Ayr\u0131ca ",(0,r.jsx)(n.strong,{children:"other"}),"'\u0131n dosya \xfczerinde hi\xe7bir yetkisinin olmas\u0131n\u0131 istemiyoruz. Bunun i\xe7in de a\u015fa\u011f\u0131daki gibi \xf6rne\u011fimizi uygular\u0131z. Other'\u0131n sahip oldu\u011fu t\xfcm yetkiyi kald\u0131rm\u0131\u015f oluruz."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chmod o-rwx -R dizin/\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/24.png"})}),"\n",(0,r.jsxs)(n.p,{children:["Bu i\u015flemi uygulad\u0131\u011f\u0131m\u0131zda klas\xf6r'\xfcn i\xe7inde neler oldu\u011funa bile bakamay\u0131z, \xe7\xfcnk\xfc \u015fu ana kadar olan t\xfcm i\u015flemleri PauSiber Dev'in normal kullan\u0131c\u0131s\u0131 olan ",(0,r.jsx)(n.strong,{children:"dev"})," ile yapt\u0131k, dizinler \xfczerinde dev kullan\u0131c\u0131s\u0131 other olarak g\xf6z\xfck\xfcr. dev'in hi\xe7bir yetkisi olmad\u0131\u011f\u0131 i\xe7in dizin i\xe7lerini g\xf6remeyiz."]}),"\n",(0,r.jsx)(n.p,{children:"Dizinlerin i\xe7erisini g\xf6r\xfcnt\xfclemek i\xe7in meslek grubundan bir kullan\u0131c\u0131ya ge\xe7i\u015f yapabiliriz."}),"\n",(0,r.jsx)(n.p,{children:"E\u011fer dosyalar \xfczerinden yazma i\u015flemi yapmak istersek de meslek grubundan \u015fef olarak se\xe7ti\u011fimiz kullan\u0131c\u0131ya ge\xe7i\u015f yapmam\u0131z gerekir."}),"\n",(0,r.jsxs)(n.p,{children:["Ba\u015fka bir kullan\u0131c\u0131ya ge\xe7i\u015f yapmak i\xe7in ",(0,r.jsx)(n.strong,{children:"su"})," komutunu kullanabiliriz."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/25.png"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Numeric Method ile \u0130zin \u0130\u015flemlerinin Yap\u0131lmas\u0131"}),"\n",(0,r.jsx)(n.p,{children:"Az \xf6nce, text method \xf6rneklerimizi yapmadan \xf6nce, numeric method da oldu\u011funu s\xf6ylemi\u015ftik. Bu method'u uygulayabilmemiz i\xe7in baz\u0131 bilgilere ihtiyac\u0131m\u0131z var."}),"\n",(0,r.jsxs)(n.p,{children:["Daha \xf6nceden \xf6\u011frendi\u011fimiz gibi, dosya ve dizinlerin izinleri ",(0,r.jsx)(n.strong,{children:"r"}),", ",(0,r.jsx)(n.strong,{children:"w"})," ve ",(0,r.jsx)(n.strong,{children:"x"})," ile temsil edilir. Her yetkinin numarasal olarak bir kar\u015f\u0131l\u0131\u011f\u0131 vard\u0131r. Bunlar a\u015fa\u011f\u0131daki gibidir."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"\u0130zin"}),(0,r.jsx)(n.th,{align:"center",children:"Numara Kar\u015f\u0131l\u0131\u011f\u0131"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"r"})}),(0,r.jsx)(n.td,{align:"center",children:"4"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"w"})}),(0,r.jsx)(n.td,{align:"center",children:"2"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"x"})}),(0,r.jsx)(n.td,{align:"center",children:"1"})]})]})]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/dosya-ve-dizin-izinleri/1.jpg"})}),"\n",(0,r.jsx)(n.p,{children:"Bir dosyan\u0131n yetkisinin numarasal kar\u015f\u0131l\u0131\u011f\u0131n\u0131 g\xf6stermek i\xe7in 3 basamakl\u0131 bir say\u0131 kullan\u0131r\u0131z. Bu 3 basamakl\u0131 say\u0131y\u0131 elde etmek i\xe7in yetkileri \xfc\xe7erli olarak grupland\u0131r\u0131p toplar\u0131z."}),"\n",(0,r.jsxs)(n.p,{children:["Kendimiz toplamak yerine, bir dosyan\u0131n yetkisinin numarasal kar\u015f\u0131l\u0131\u011f\u0131n\u0131 direkt olarak g\xf6rmek i\xe7in ",(0,r.jsx)(n.strong,{children:"stat"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] stat -c %a dosyaAdi\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/26.png"})}),"\n",(0,r.jsx)(n.p,{children:"Dosyan\u0131n izinlerini numeric method ile de\u011fi\u015ftirmek istiyorsak a\u015fa\u011f\u0131daki gibi bir syntax kullan\u0131r\u0131z."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chmod XXX dosyaAdi\n"})}),"\n",(0,r.jsx)(n.p,{children:"\xd6rne\u011fin hastalar klas\xf6r\xfc i\xe7erisinde bulunan dosyalar\u0131n, other'lar taraf\u0131ndan okunabilir ve \xe7al\u0131\u015ft\u0131r\u0131labilir olmas\u0131n\u0131 istiyor olal\u0131m, a\u015fa\u011f\u0131daki gibi yapabiliriz."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{src:"/images/hafta2/27.png"})}),"\n",(0,r.jsx)(n.p,{children:"Text method kullanacak olsayd\u0131k, ayn\u0131 i\u015flemi yapmak i\xe7in chmod o=rx * dememiz yeterdi."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Dosya Kilitlemek"}),"\n",(0,r.jsxs)(n.p,{children:["Bir dosyay\u0131 \xfczerinde izni verilmi\u015f olsa bile kilitlemek, yani de\u011fi\u015fiklik yap\u0131lmaz olsun istiyorsak ",(0,r.jsx)(n.strong,{children:"chattr"})," komutu kullanabiliriz. Kullan\u0131m\u0131 olduk\xe7a basittir."]}),"\n",(0,r.jsx)(n.p,{children:"Kilitlemek i\xe7in :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chattr +i dosyaAdi\n"})}),"\n",(0,r.jsx)(n.p,{children:"Kilidi a\xe7mak i\xe7in :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chattr -i dosyaAdi\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Kullan\u0131c\u0131-Grup Y\xf6netimi i\xe7in;"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Bir kullan\u0131c\u0131n\u0131n parolas\u0131n\u0131n nas\u0131l de\u011fi\u015ftirilece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Sisteme yeni kullan\u0131c\u0131lar\u0131n nas\u0131l eklenece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Yeni gruplar\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Gruplara kullan\u0131c\u0131lar\u0131n nas\u0131l eklenece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Root kullan\u0131c\u0131s\u0131n\u0131n mant\u0131\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"/home dizinlerinin mant\u0131\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Kullan\u0131c\u0131lar\u0131n nas\u0131l silinece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Gruplardan kullan\u0131c\u0131lar\u0131n nas\u0131l \xe7\u0131kar\u0131laca\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Gruplar\u0131n nas\u0131l silinece\u011fini \xf6\u011frendik.."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Dosya-Dizin \u0130zinleri i\xe7in;"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"GNU/Linux'ta dizinlerin de asl\u0131nda birer dosya oldu\u011funu,"}),"\n",(0,r.jsx)(n.li,{children:"Yetki kavramlar\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Dosya sahipliklerinin nas\u0131l de\u011fi\u015ftirilece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Text ve numeric method ile dosyalar\u0131n izinlerinin nas\u0131l de\u011fi\u015ftirilece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Dosyalar\u0131n nas\u0131l kilitlenebilece\u011fini \xf6\u011frendik.."}),"\n"]}),"\n"]}),"\n"]})]})},e=Object.assign({},(0,d.ah)(),i.components),a=e.wrapper;return a?(0,r.jsx)(a,c({},i,{children:(0,r.jsx)(n,{})})):n()}var u=(0,r.jsx)(h,{});function o(i){return(0,l.withSSG)((0,a.Z)({filename:"hafta-iki.mdx",route:"/haftalar/hafta-iki",meta:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},s.Z))(c({},i,{children:u}))}}},function(i){i.O(0,[774,353,888,179],(function(){return n=7003,i(i.s=n);var n}));var n=i.O();_N_E=n}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/haftalar/hafta-iki-70e0c7d09d1a590c.js b/_next/static/chunks/pages/haftalar/hafta-iki-70e0c7d09d1a590c.js new file mode 100644 index 0000000..2147dfd --- /dev/null +++ b/_next/static/chunks/pages/haftalar/hafta-iki-70e0c7d09d1a590c.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[409],{7003:function(i,n,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/haftalar/hafta-iki",function(){return e(8433)}])},7845:function(i,n,e){"use strict";var r=e(5893),a=e(5988),l=(new Date).getFullYear();n.Z={footer:(0,r.jsxs)("small",{style:{display:"block",marginTop:"8rem"},className:"jsx-7c359fde634f3543",children:[(0,r.jsx)("time",{className:"jsx-7c359fde634f3543",children:l})," \xa9 PauSiber",(0,r.jsx)(a.default,{id:"7c359fde634f3543",children:"a.jsx-7c359fde634f3543{float:right}\n@media screen and (max-width:480px) {article.jsx-7c359fde634f3543{padding-top:2rem;\npadding-bottom:4rem}}"})]})}},8433:function(i,n,e){"use strict";e.r(n),e.d(n,{default:function(){return k}});var r=e(5893),a=e(8616),l=e(3805),s=e(7845),d=e(1151);function t(i,n,e){return n in i?Object.defineProperty(i,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[n]=e,i}function c(i){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},n=function(){var n=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",h4:"h4",ul:"ul",li:"li",pre:"pre",code:"code",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td"},(0,d.ah)(),i.components),e=n.CenteredImageLightbox;return e||o("CenteredImageLightbox",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{children:"Hafta 2"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Ama\xe7 :"})," Kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Yazarlar :"})," ",(0,r.jsx)(n.a,{href:"https://github.com/boratanrikulu",children:(0,r.jsx)(n.strong,{children:"boratanrikulu"})})," ",(0,r.jsx)(n.strong,{children:"&&"})," ",(0,r.jsx)(n.a,{href:"https://github.com/hasantezcan",children:(0,r.jsx)(n.strong,{children:"hasantezcan"})})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Hastane \xd6rne\u011fi \xdczerinden A\xe7\u0131klanmas\u0131"}),"\n",(0,r.jsxs)(n.p,{children:["Bir hastane d\xfc\u015f\xfcn\xfcn, bu hastanede \xe7al\u0131\u015fanlar\u0131n kullanabilece\u011fi yaln\u0131z bir tane bilgisayar var. Ve hastanemizde \xe7al\u0131\u015fan \xfc\xe7 ana meslek grubu var. Bunlar; ",(0,r.jsx)(n.strong,{children:"doktorlar"}),", ",(0,r.jsx)(n.strong,{children:"g\xfcvenlik g\xf6revlileri"})," ve ",(0,r.jsx)(n.strong,{children:"a\u015f\xe7\u0131lar"}),"."]}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/14.png",width:"800"}),"\n",(0,r.jsx)(n.p,{children:"Bu \xe7al\u0131\u015fanlar\u0131n tek bir bilgisayar\u0131 kullanmas\u0131n\u0131n iki farkl\u0131 seneryosu olabilir."}),"\n",(0,r.jsx)(n.h4,{children:'1 - \xdc\xe7 meslek grubu da ayn\u0131 bilgisayar\u0131 "tek oturum" \u015feklinde kullanabilir.'}),"\n",(0,r.jsxs)(n.p,{children:["Bu durumda doktor, bilgisayar\u0131 kulland\u0131\u011f\u0131 zaman, olmas\u0131 gerekti\u011fi gibi hastalar\u0131n\u0131n; raporlar\u0131na, filimlerine, ameliyat g\xf6r\xfcnt\xfclerine vb.. bilgilere ula\u015fabilir. Ayn\u0131 zamanda di\u011fer meslek gruplar\u0131 ile ortak bir bilgisayar kulland\u0131\u011f\u0131ndan; ",(0,r.jsx)(n.strong,{children:"g\xfcvenlik kameralar\u0131na"}),", o ay\u0131n ",(0,r.jsx)(n.strong,{children:"mutfak masraflar\u0131na"})," da bakabilir."]}),"\n",(0,r.jsx)(n.p,{children:"Ve bu durum di\u011fer meslek gruplar\u0131 i\xe7in de ge\xe7erlidir. Bir g\xfcvenlik g\xf6revlisinin ya da a\u015f\xe7\u0131n\u0131n herhangi bir hastan\u0131n raporlar\u0131na eri\u015febilmesi ne kadar g\xfcvenli ve do\u011furudur?"}),"\n",(0,r.jsx)(n.p,{children:"\u0130\u015fte bu durumun ya\u015fanmamas\u0131 i\xe7in, her bir \xe7al\u0131\u015fan i\xe7in ayr\u0131 bir kullan\u0131c\u0131 oturumu olu\u015ftururuz."}),"\n",(0,r.jsx)(n.h4,{children:"2 - Her bir \xe7al\u0131\u015fan i\xe7in ayr\u0131 bir oturum a\xe7\u0131labilir."}),"\n",(0,r.jsxs)(n.p,{children:["Bu durumda her bir \xe7al\u0131\u015fan\u0131n kendine ait bir ",(0,r.jsx)(n.strong,{children:"kullan\u0131c\u0131s\u0131"})," olaca\u011f\u0131ndan bir \xf6nceki durumda ya\u015fanan dosya eri\u015fim karma\u015fas\u0131 bu sefer olmayacakt\u0131r. Yani hi\xe7bir a\u015f\xe7\u0131, g\xfcvenlik kameralar\u0131na eri\u015fip bu kay\u0131tlar ile oynayamayacakt\u0131r. Her bir kullan\u0131c\u0131n\u0131n yetkileri belirli olacakt\u0131r."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Hastane \xd6rne\u011fimizi Uygulayal\u0131m"}),"\n",(0,r.jsxs)(n.p,{children:["\u015eimdi gelin bu hastaneye ",(0,r.jsx)(n.strong,{children:"iki tane doktor"}),", ",(0,r.jsx)(n.strong,{children:"iki tane g\xfcvenlik g\xf6revlisi"})," ve ",(0,r.jsx)(n.strong,{children:"iki tane de a\u015f\xe7\u0131"})," ekleyelim."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Doktorlar","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"doktor_beyza"}),"\n",(0,r.jsx)(n.li,{children:"doktor_ahmed"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["G\xfcvenlik\xe7iler","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"guvenlik_aykut"}),"\n",(0,r.jsx)(n.li,{children:"guvenlik_ayse"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["A\u015f\xe7\u0131lar","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"asci_bora"}),"\n",(0,r.jsx)(n.li,{children:"asci_hayriye"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda, sisteme bir kullan\u0131c\u0131 eklemek i\xe7in ",(0,r.jsx)(n.strong,{children:"adduser"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] adduser kullan\u0131c\u0131n\u0131n_ad\u0131\n"})}),"\n",(0,r.jsx)(e,{alt:"tldr useradd",src:"/images/hafta2/28.jpg",width:"800"}),"\n",(0,r.jsx)(e,{alt:"useradd",src:"/images/hafta2/29.jpg",width:"800"}),"\n",(0,r.jsx)(e,{alt:"home",src:"/images/hafta2/30.jpg",width:"800"}),"\n",(0,r.jsx)(n.p,{children:"\u015euan sistemimize alt\u0131 adet kullan\u0131c\u0131 ekledik."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Ekledi\u011fimiz Kullan\u0131c\u0131lar\u0131 G\xf6r\xfcnt\xfcleyelim"}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux'da sistemde bulunan kullan\u0131c\u0131lar ",(0,r.jsx)(n.strong,{children:"/etc/passwd"})," dosyas\u0131nda s\u0131ralan\u0131r. Kullanc\u0131lar\u0131n bilgileri bu dosyada saklan\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"Bu dosyay\u0131 g\xf6r\xfcnt\xfclemek i\xe7in;"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] cat /etc/passwd\n"})}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/7.png",width:"800"}),"\n",(0,r.jsxs)(n.p,{children:["Dosya incelendi\u011finde ",(0,r.jsx)(n.strong,{children:"dev:x:1000:1000:PauSiber Dev,,,:/home/dev:/usr/bin/zsh"})," gibi ifadeler g\xf6z\xfck\xfcr. Hadi \u015fimdi bu ifadelerin ne anlama geldi\u011fini a\xe7\u0131klayal\u0131m."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"ifade"}),(0,r.jsx)(n.th,{align:"center",children:"a\xe7\u0131klama"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"dev"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131 ad\u0131"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"x"})}),(0,r.jsx)(n.td,{align:"center",children:"kullanc\u0131n\u0131n parolas\u0131n\u0131 temsil eder"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"1000"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131n\u0131n \xfcyelik numaras\u0131d\u0131r (user ID)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"1000"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131n\u0131n ait oldu\u011fu grubun numaras\u0131d\u0131r (group ID)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"PauSiber Dev"})}),(0,r.jsx)(n.td,{align:"center",children:"kullanc\u0131 hakk\u0131nda kay\u0131tl\u0131 bilgi"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"/usr/bin/zsh"})}),(0,r.jsx)(n.td,{align:"center",children:"kullan\u0131c\u0131n\u0131n shell dizini"})]})]})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Gruplar\u0131m\u0131z\u0131 Olu\u015ftural\u0131m"}),"\n",(0,r.jsx)(n.p,{children:"Peki bu hastanede bir tane mi doktar var ? Tabiki de hay\u0131r. Bir meslek grubuna dahil birden fazla \xe7al\u0131\u015fan olabilir. Ayn\u0131 meslek grubunda bulunan \xe7al\u0131\u015fanlar\u0131n g\xf6rev tan\u0131mlar\u0131 birbirleri ile \xf6rt\xfc\u015f\xfcr. Ayn\u0131 meslek grubunda olanlar\u0131 gruplara toplamam\u0131z mant\u0131kl\u0131 bir hareket olacakt\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"\u015euan hastanemizde \xfc\xe7 farkl\u0131 meslek grubuna ait iki\u015fer tane \xe7al\u0131\u015fan\u0131m\u0131z var. Gelin \u015fimdi bu meslek gruplar\u0131 i\xe7in sistemimizde bunu ifade edecek yeni gruplar olu\u015ftural\u0131m."}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda, sisteme bir grup eklemek i\xe7in ",(0,r.jsx)(n.strong,{children:"groupadd"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] groupadd grubun_ismi\n"})}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/8.png",width:"800"}),"\n",(0,r.jsxs)(n.p,{children:["Sistemimize \xfc\xe7 adet yeni grup ekledik. Sistemimizde bulunan gruplar ",(0,r.jsx)(n.strong,{children:"/etc/group"})," dosyas\u0131nda s\u0131ralan\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"Bu dosyay\u0131 g\xf6r\xfcnt\xfclemek i\xe7in;"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] cat /etc/group\n"})}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/9.png",width:"800"}),"\n",(0,r.jsxs)(n.p,{children:['Son g\xf6rselde de g\xf6r\xfcld\xfc\u011f\xfc \xfczere bizim ekledi\u011fimiz gruplar\u0131n haricinde, \xf6nceden ekledi\u011fimiz kullac\u0131lar da burada g\xf6z\xfckmekte. \xd6rne\u011fin "doktor_beyza" gibi bir grup sistemde \xe7oktand\u0131r eklenmi\u015f durumda. ',(0,r.jsx)(n.strong,{children:"Peki bu nas\u0131l oluyor?"})]}),"\n",(0,r.jsx)(n.p,{children:"GNU/Linux da\u011f\u0131t\u0131mlar\u0131nda, sisteme yeni bir kullan\u0131c\u0131 ekledi\u011finizde, sisteme ayn\u0131 anda bu kullan\u0131c\u0131 ad\u0131nda bir de grup ekler."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"\xc7al\u0131\u015fanlar\u0131m\u0131z\u0131 Gruplar\u0131na Ekleyelim"}),"\n",(0,r.jsx)(n.p,{children:"Evet, \u015fuan hastanemizde alt\u0131 adet \xe7al\u0131\u015fan ve bununla birlikte hen\xfcz daha hi\xe7bir personeli dahil etmedi\u011fimiz \xfc\xe7 tane de meslek grubumuz var. \u015eimdi \xe7al\u0131\u015fanlar\u0131m\u0131z\u0131 ait olduklar\u0131 meslek gruplar\u0131na ekleyelim."}),"\n",(0,r.jsxs)(n.p,{children:["Bunu yapmak i\xe7in ",(0,r.jsx)(n.strong,{children:"gpasswd"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] gpasswd --add kullan\u0131c\u0131_adi grup_adi\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Not :"})," Burada ",(0,r.jsx)(n.strong,{children:"--add"})," parametresi olduk\xe7a kritiktir. E\u011fer kullan\u0131lmaz ise kullan\u0131c\u0131y\u0131 hali haz\u0131rda bulundu\u011fu t\xfcm gruplardan \xe7\u0131kar\u0131r ve yeni gruba ekler. Fakat bizim istedi\u011fimiz bu de\u011fil, kullan\u0131c\u0131n\u0131n hali haz\u0131rda bulundu\u011fu gruplar\u0131 de\u011fi\u015ftirmek istemiyoruz, yaln\u0131zca yeni bir gruba dahil etmek istiyoruz, bu durumda ",(0,r.jsx)(n.strong,{children:"--add"})," parametresi kullanmam\u0131z bir gerekliliktir."]}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/10.png",width:"800"}),"\n",(0,r.jsxs)(n.p,{children:["Ekleme i\u015flemlerimizi yapt\u0131k. \u015eimdi ",(0,r.jsx)(n.strong,{children:"/etc/group"}),"' u yeniden g\xf6r\xfcnt\xfcleyelim."]}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/11.png",width:"800"}),"\n",(0,r.jsx)(n.p,{children:"Ba\u015far\u0131l\u0131 bir \u015fekilde personelimizi gruplar\u0131na ekledik."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastane M\xfcd\xfcr\xfcm\xfcz, Nam-\u0131 De\u011fer ROOT !"}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi s\u0131ra hastanenin m\xfcd\xfcr\xfcnden bahsetmeye geldi. Hastane m\xfcd\xfcr\xfc hastanedeki en yetkili ki\u015fidir. Doktorlar\u0131n, g\xfcvenlik g\xf6revlilerinin ve a\u015f\xe7\u0131n\u0131n eri\u015febildi\u011fi verilerin hepsine eri\u015febilir. Asl\u0131nda o da bir \xe7al\u0131\u015fand\u0131r, fakat \xf6zel bir \xe7al\u0131\u015fand\u0131r. Yetkileri onu di\u011fer \xe7al\u0131\u015fanlardan ayr\u0131\u015ft\u0131r\u0131r."}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux sistemlerde bahsetti\u011fimiz hastane m\xfcdr\xfcn\xfcn kar\u015f\u0131l\u0131\u011f\u0131 ",(0,r.jsx)(n.strong,{children:"root"})," kullan\u0131c\u0131s\u0131d\u0131r. Root kullanc\u0131s\u0131 sistemdeki en yetkili kullanc\u0131d\u0131r. Sistemdeki t\xfcm dosyalara eri\u015fim yetkisi vard\u0131r."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"\xc7al\u0131\u015fanlar\u0131n Odalar\u0131, /home dizinleri"}),"\n",(0,r.jsx)(n.p,{children:"Hastanemizde \xe7al\u0131\u015fan t\xfcm personelin kendine ait bir odas\u0131 vard\u0131r. \xc7al\u0131\u015fanlar bu odalarda kendi ki\u015fisel e\u015fyalar\u0131n\u0131 saklarlar."}),"\n",(0,r.jsxs)(n.p,{children:["GNU/Linux i\u015fletim sistemlerinde sisteme kay\u0131tl\u0131 her insan kullanc\u0131 i\xe7in ",(0,r.jsx)(n.strong,{children:"/home"})," dizini alt\u0131nda o kullanc\u0131ya tahsis edilmi\u015f bir alan mevcuttur. Kullan\u0131c\u0131lar bu dizinde verilerini diledikleri \u015fekilde depolarlar."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"root"})," kullanc\u0131s\u0131n\u0131n da kendine ait bir odas\u0131 vard\u0131r. Fakat ",(0,r.jsx)(n.strong,{children:"root"})," kullac\u0131s\u0131na ayr\u0131lm\u0131\u015f bu alan direkt ",(0,r.jsx)(n.strong,{children:"root"})," dizini alt\u0131nda ayr\u0131lm\u0131\u015f ",(0,r.jsx)(n.strong,{children:"/root"})," dizinidir."]}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/17.png",width:"800"}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastanemizden \xc7al\u0131\u015fan \xc7\u0131karal\u0131m"}),"\n",(0,r.jsxs)(n.p,{children:["Hastanemizden, yani sistemimizden bir kullan\u0131c\u0131y\u0131 silmek istersek ",(0,r.jsx)(n.strong,{children:"deluser"})," komutunu kullanabiliriz."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] deluser --remove-home kullanc\u0131_adi\n"})}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi sistemimizde kay\u0131tl\u0131 olan doktor_ahmedi a\u015fa\u011f\u0131daki \xf6rnekteki gibi i\u015ften \xe7\u0131karal\u0131m."}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/12.png",width:"800"}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Kullanc\u0131n\u0131n Parolalar\u0131n\u0131n De\u011fi\u015ftirilmesi"}),"\n",(0,r.jsxs)(n.p,{children:["E\u011fer bir kullan\u0131c\u0131 parolas\u0131n\u0131 de\u011fi\u015ftirmek ister ise ",(0,r.jsx)(n.strong,{children:"passwd"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] passwd\n"})}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/13.png",width:"800"}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Bir \xc7al\u0131\u015fan\u0131m\u0131z\u0131 Grubundan \xc7\u0131karal\u0131m"}),"\n",(0,r.jsxs)(n.p,{children:["\xd6rne\u011fin guvenl\u0131k_aykut kullan\u0131c\u0131s\u0131n\u0131n art\u0131k guvenlik grubunda bulunmas\u0131n\u0131 istemiyorsak ",(0,r.jsx)(n.strong,{children:"gpasswd"})," ile birlikte ",(0,r.jsx)(n.strong,{children:"--delete"})," parametresini kullanarak bu i\u015flemi ger\xe7ekle\u015ftirebiliriz."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] gpasswd --delete guvenlik_aykut guvenlikciler\n"})}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/18.png",width:"800"}),"\n",(0,r.jsxs)(n.p,{children:["Kullan\u0131c\u0131y\u0131 \xf6rnek amac\u0131yla grubundan \xe7\u0131karm\u0131\u015ft\u0131k, \u015fimdi geri dahil edelim ",(0,r.jsx)(n.strong,{children:":)"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] gpasswd --add guvenlik_aykut guvenlikciler\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Bir Grubumuzu Silelim"}),"\n",(0,r.jsxs)(n.p,{children:["\xd6rne\u011fin sistemimize hem\u015fireler grubunu eklemi\u015f olal\u0131m, e\u011fer bu gruba ihtiyac\u0131m\u0131z art\u0131k kalmaz ise grubu silebiliriz. Grubu silmek i\xe7in ",(0,r.jsx)(n.strong,{children:"groupdel"})," komutu kullan\u0131l\u0131r."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] groupdel hemsireler\n"})}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/15.png",width:"800"}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Hastane Y\xf6netimi"}),"\n",(0,r.jsxs)(n.p,{children:["Hastane \xf6rne\u011fimizde ",(0,r.jsx)(n.strong,{children:"hastalar"}),", ",(0,r.jsx)(n.strong,{children:"kameralar"})," ve ",(0,r.jsx)(n.strong,{children:"yemekhane"})," dizinlerimiz olacak. Fakat tahmin edece\u011finiz \xfczere bu dosyalara yaln\u0131zca belirli meslek gruplar\u0131n\u0131n ve belirli kullan\u0131c\u0131lar\u0131n yetki sahibi olmas\u0131n\u0131 bekleriz."]}),"\n",(0,r.jsx)(n.p,{children:"A\u015fa\u011f\u0131daki gibi dizinleri olu\u015ftural\u0131m."}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/19.png",width:"800"}),"\n",(0,r.jsx)(n.p,{children:"Dizinlerimiz i\xe7erisine a\u015fa\u011f\u0131daki gibi gerekli dosyalar\u0131 da olu\u015ftural\u0131m."}),"\n",(0,r.jsx)(n.p,{children:"Bu dizinlerin sahiplik ve izinlerini ayarlama i\u015flemine ge\xe7meden \xf6nce GNU/Linux'da dosya ve dizin kavramlar\u0131ndan bahsetmeliyiz."}),"\n",(0,r.jsx)(e,{alt:"pwd",src:"/images/hafta2/20.png",width:"800"}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Dosya ve Dizin Kavramlar\u0131"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"GNU/Linux'ta her \u015fey birer dosyad\u0131r"}),". ",(0,r.jsx)(n.a,{href:"https://stackoverflow.com/a/10893965",children:(0,r.jsx)(n.strong,{children:"[1]"})})]}),"\n",(0,r.jsxs)(n.p,{children:["\xd6z\xfcnde ",(0,r.jsx)(n.strong,{children:"dizinler de dosyalar\u0131n konumunu belirten birer \xf6zel dosyad\u0131r."})," Dizinler veri i\xe7eremez, yaln\u0131zca konum belirtmek ama\xe7l\u0131 kullan\u0131labilirler. Dizinlerin bir t\xfcr\xfc yoktur, uzant\u0131s\u0131 yoktur. Dosyalar\u0131n ise bir t\xfcr\xfc vard\u0131r, uzant\u0131s\u0131 bulunabilir."]}),"\n",(0,r.jsx)(n.p,{children:"Dizin ve dosya isimleri ayn\u0131 olamaz."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Dosya ve Dizin \u0130zinlerinin \u0130ncelenmesi"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"ls"})," ile dosyalar\u0131n izinleri incelenebilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] ls -l fileName\n"})}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/dosya-ve-dizin-izinleri/0.png"}),"\n",(0,r.jsx)(n.p,{children:"Dosya ve dizin i\u015flemlerine bak\u0131ld\u0131\u011f\u0131nda 10 karakterden olu\u015fan bir yap\u0131 g\xf6r\xfcn\xfcr."}),"\n",(0,r.jsx)(n.p,{children:"Bu karakterler"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["dosyalar i\xe7in ",(0,r.jsx)(n.strong,{children:"r"}),"[read] okumak, ",(0,r.jsx)(n.strong,{children:"w"}),"[write] yazmak, ",(0,r.jsx)(n.strong,{children:"x"}),"[execute] \xe7al\u0131\u015ft\u0131rmak"]}),"\n",(0,r.jsxs)(n.li,{children:["dizinler i\xe7in ",(0,r.jsx)(n.strong,{children:"r"}),"[read] i\xe7eri\u011fini g\xf6r\xfcnt\xfcleyebilmek, ",(0,r.jsx)(n.strong,{children:"w"}),"[write] alt dosya ve dizinler olu\u015fturabilmek, ",(0,r.jsx)(n.strong,{children:"x"}),"[execute] cd ile i\xe7ine girebilmek"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"izinlerini temsilen kullan\u0131l\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"Bunlar\u0131 a\u015fa\u011f\u0131daki gibi \xfc\xe7erli olarak grupland\u0131rarak incelemekte fayda vard\u0131r."}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/dosya-ve-dizin-izinleri/1.jpg"}),"\n",(0,r.jsx)(n.p,{children:"Yani bu \xf6rnektekinin;"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["bir ",(0,r.jsx)(n.strong,{children:"dizin"})," oldu\u011funu,"]}),"\n",(0,r.jsxs)(n.li,{children:["dosya kullan\u0131c\u0131s\u0131n\u0131n ",(0,r.jsx)(n.strong,{children:"okuma/yazma/\xe7al\u0131\u015ft\u0131rma"}),","]}),"\n",(0,r.jsxs)(n.li,{children:["dosya grubunun ",(0,r.jsx)(n.strong,{children:"okuma/\xe7al\u0131\u015ft\u0131rma"}),","]}),"\n",(0,r.jsxs)(n.li,{children:["di\u011fer herkesin de ",(0,r.jsx)(n.strong,{children:"okuma/\xe7al\u0131\u015ft\u0131rma"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"iznine sahip oldu\u011funu g\xf6r\xfcyoruz. Ayr\u0131ca bu dosyalar\u0131n fsutil kullan\u0131c\u0131s\u0131na ait oldu\u011funu ve group'unun users oldu\u011funu incelemi\u015f olduk."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastane Dosya Sahipliklerinin De\u011fi\u015ftirilmesi"}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi teorik bilgimizi edikten sonra hastane \xf6rne\u011fimize geri d\xf6nebiliriz."}),"\n",(0,r.jsxs)(n.p,{children:["Dosyalar\u0131n sahipliklerini user ve group baz\u0131nda de\u011fi\u015ftirece\u011fiz. Bunun i\xe7in ",(0,r.jsx)(n.strong,{children:"chown"})," komutu kullanabiliriz. Yap\u0131s\u0131 olduk\xe7a basittir."]}),"\n",(0,r.jsx)(n.p,{children:"Genel syntax \xf6rnekleri a\u015fa\u011f\u0131daki gibidir."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chown yeniSahip dosya_adi\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chown yeniSahip:yeniGroup dosya_adi\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chown :yeniGroup dosya_adi\n"})}),"\n",(0,r.jsxs)(n.p,{children:["A\u015fa\u011f\u0131daki gibi 3 dizin i\xe7in de ",(0,r.jsx)(n.strong,{children:"-R"})," parametresini kullanarak dosyalar\u0131n group bilgilerini de\u011fi\u015ftirelim."]}),"\n",(0,r.jsxs)(n.p,{children:["Burada ",(0,r.jsx)(n.strong,{children:"-R"})," parametresini kullanma sebebimiz belirtti\u011fimiz i\u015flemi recursive olarak t\xfcm alt(sub) dosya ve dizinlere uygulanmas\u0131 gerekti\u011fini belirtmek i\xe7indir."]}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/21.png"}),"\n",(0,r.jsx)(n.p,{children:"T\xfcm hastane dosyalar\u0131m\u0131z\u0131n group sahipliklerini de\u011fi\u015ftirdik. Fakat dosyalar\u0131n kullan\u0131c\u0131 sahiplikleri halen belirlenmi\u015f de\u011fil. Her dosyan\u0131n sahibi olarak meslek grubundan belirlenen bir kullan\u0131c\u0131y\u0131 atamak istiyoruz. A\u015fa\u011f\u0131daki gibi ad\u0131mlar\u0131 ger\xe7ekle\u015ftirdik."}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/22.png"}),"\n",(0,r.jsx)(n.p,{children:"Dosya sahipliklerini ayarlad\u0131k."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Hastane Dosya \u0130zinlerinin De\u011fi\u015ftirilmesi"}),"\n",(0,r.jsx)(n.p,{children:"Burada kurmak iste\u011fimiz yap\u0131 \u015fu \u015fekilde; ilgi dizinler ve dosyalar meslek grubundaki herkes taraf\u0131ndan okunabilir, \xe7al\u0131\u015ft\u0131r\u0131labilir olmal\u0131; meslek grubundan belirlenen yaln\u0131zca bir ki\u015fi dosya \xfczerinde de\u011fi\u015ftirme yetkisine sahip olmal\u0131."}),"\n",(0,r.jsx)(n.p,{children:"Bunun i\xe7in dosyalar\u0131n izinlerini de\u011fi\u015ftirece\u011fiz."}),"\n",(0,r.jsxs)(n.p,{children:["Bunun i\xe7in ",(0,r.jsx)(n.strong,{children:"chmod"})," komutu kullanabilirz. Chmod'un iki tip kullan\u0131m\u0131 vard\u0131r; ",(0,r.jsx)(n.strong,{children:"text method"})," ve ",(0,r.jsx)(n.strong,{children:"numeric method"}),". Text method g\xfcnl\xfck kullan\u0131mda daha \xe7ok kullan\u0131l\u0131r, basit olmas\u0131 a\xe7\u0131s\u0131ndan. Numeric method daha \xe7ok script'lerde kullan\u0131l\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"Text Method'un genel kullan\u0131m syntax'\u0131 a\u015fa\u011f\u0131daki gibidir."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chmod kim=izinYetkisi dosyaAd\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Burada ",(0,r.jsx)(n.strong,{children:"kim"})," ifadesi, i\u015flemi hangi ki\u015filer i\xe7in yapaca\u011f\u0131n\u0131 belirtmek i\xe7in kullan\u0131r\u0131z."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"Text"}),(0,r.jsx)(n.th,{align:"center",children:"Class"}),(0,r.jsx)(n.th,{align:"center",children:"A\xe7\u0131klama"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"u"})}),(0,r.jsx)(n.td,{align:"center",children:"Owner"}),(0,r.jsx)(n.td,{align:"center",children:"Dosyaya sahip olan kullan\u0131c\u0131"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"g"})}),(0,r.jsx)(n.td,{align:"center",children:"Group"}),(0,r.jsx)(n.td,{align:"center",children:"Dosyan\u0131n ait oldu\u011fu grup"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"o"})}),(0,r.jsx)(n.td,{align:"center",children:"Other"}),(0,r.jsx)(n.td,{align:"center",children:"Di\u011fer herkes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"a"})}),(0,r.jsx)(n.td,{align:"center",children:"All"}),(0,r.jsxs)(n.td,{align:"center",children:["Herkes (",(0,r.jsx)(n.strong,{children:"ugo"})," ile ayn\u0131 anlama gelir)"]})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["\xd6rnekte ",(0,r.jsx)(n.strong,{children:"="})," olarak ifade ise verilen i\u015flem ile ne yap\u0131laca\u011f\u0131n\u0131 belirtmek amac\u0131yla kullan\u0131r\u0131z."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"Operator"}),(0,r.jsx)(n.th,{align:"center",children:"A\xe7\u0131klama"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"+"})}),(0,r.jsx)(n.td,{align:"center",children:"Yetkiyi ilgili kullan\u0131c\u0131lara ekler"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"-"})}),(0,r.jsx)(n.td,{align:"center",children:"Yetkiyi ilgili kullan\u0131c\u0131lardan \xe7\u0131kar\u0131r"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"="})}),(0,r.jsx)(n.td,{align:"center",children:"Yetkiyi e\u015fitler"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0130zin yetkisi"})," ise verilecek olan izindir. Yani; r, w, x gibi ifadeler girilir."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Dosyalar\u0131m\u0131z\u0131n \u0130zinlerini Ayarlayal\u0131m"}),"\n",(0,r.jsx)(n.p,{children:"\u015eimdi \xf6\u011frendi\u011fimiz teorik bilgileri, hastane \xf6rne\u011fimiz \xfczerinde uygulayarak prati\u011fe d\xf6kelim."}),"\n",(0,r.jsxs)(n.p,{children:["\u0130lk olarak t\xfcm dosya group'lar\u0131ndan yazma yetkisini \xe7\u0131karaca\u011f\u0131z. Bunun i\xe7in a\u015fa\u011f\u0131daki gibi bir ifade kullanmam\u0131z yeterlidir. A\u015fa\u011f\u0131daki ifade, dosyan\u0131n group sahipli\u011finden yazma ",(0,r.jsx)(n.strong,{children:"[w]"})," yetkisini \xe7\u0131karmam\u0131z\u0131 sa\u011flar. Art\u0131k group yetkisi kullan\u0131larak dosya \xfczerinde yazma i\u015flemi yap\u0131lamayacakt\u0131r."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chmod g-w -R dizin/\n"})}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/23.png"}),"\n",(0,r.jsxs)(n.p,{children:["Ayr\u0131ca ",(0,r.jsx)(n.strong,{children:"other"}),"'\u0131n dosya \xfczerinde hi\xe7bir yetkisinin olmas\u0131n\u0131 istemiyoruz. Bunun i\xe7in de a\u015fa\u011f\u0131daki gibi \xf6rne\u011fimizi uygular\u0131z. Other'\u0131n sahip oldu\u011fu t\xfcm yetkiyi kald\u0131rm\u0131\u015f oluruz."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~#] chmod o-rwx -R dizin/\n"})}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/24.png"}),"\n",(0,r.jsxs)(n.p,{children:["Bu i\u015flemi uygulad\u0131\u011f\u0131m\u0131zda klas\xf6r'\xfcn i\xe7inde neler oldu\u011funa bile bakamay\u0131z, \xe7\xfcnk\xfc \u015fu ana kadar olan t\xfcm i\u015flemleri PauSiber Dev'in normal kullan\u0131c\u0131s\u0131 olan ",(0,r.jsx)(n.strong,{children:"dev"})," ile yapt\u0131k, dizinler \xfczerinde dev kullan\u0131c\u0131s\u0131 other olarak g\xf6z\xfck\xfcr. dev'in hi\xe7bir yetkisi olmad\u0131\u011f\u0131 i\xe7in dizin i\xe7lerini g\xf6remeyiz."]}),"\n",(0,r.jsx)(n.p,{children:"Dizinlerin i\xe7erisini g\xf6r\xfcnt\xfclemek i\xe7in meslek grubundan bir kullan\u0131c\u0131ya ge\xe7i\u015f yapabiliriz."}),"\n",(0,r.jsx)(n.p,{children:"E\u011fer dosyalar \xfczerinden yazma i\u015flemi yapmak istersek de meslek grubundan \u015fef olarak se\xe7ti\u011fimiz kullan\u0131c\u0131ya ge\xe7i\u015f yapmam\u0131z gerekir."}),"\n",(0,r.jsxs)(n.p,{children:["Ba\u015fka bir kullan\u0131c\u0131ya ge\xe7i\u015f yapmak i\xe7in ",(0,r.jsx)(n.strong,{children:"su"})," komutunu kullanabiliriz."]}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/25.png"}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Numeric Method ile \u0130zin \u0130\u015flemlerinin Yap\u0131lmas\u0131"}),"\n",(0,r.jsx)(n.p,{children:"Az \xf6nce, text method \xf6rneklerimizi yapmadan \xf6nce, numeric method da oldu\u011funu s\xf6ylemi\u015ftik. Bu method'u uygulayabilmemiz i\xe7in baz\u0131 bilgilere ihtiyac\u0131m\u0131z var."}),"\n",(0,r.jsxs)(n.p,{children:["Daha \xf6nceden \xf6\u011frendi\u011fimiz gibi, dosya ve dizinlerin izinleri ",(0,r.jsx)(n.strong,{children:"r"}),", ",(0,r.jsx)(n.strong,{children:"w"})," ve ",(0,r.jsx)(n.strong,{children:"x"})," ile temsil edilir. Her yetkinin numarasal olarak bir kar\u015f\u0131l\u0131\u011f\u0131 vard\u0131r. Bunlar a\u015fa\u011f\u0131daki gibidir."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{align:"center",children:"\u0130zin"}),(0,r.jsx)(n.th,{align:"center",children:"Numara Kar\u015f\u0131l\u0131\u011f\u0131"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"r"})}),(0,r.jsx)(n.td,{align:"center",children:"4"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"w"})}),(0,r.jsx)(n.td,{align:"center",children:"2"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{align:"center",children:(0,r.jsx)(n.strong,{children:"x"})}),(0,r.jsx)(n.td,{align:"center",children:"1"})]})]})]}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/dosya-ve-dizin-izinleri/1.jpg"}),"\n",(0,r.jsx)(n.p,{children:"Bir dosyan\u0131n yetkisinin numarasal kar\u015f\u0131l\u0131\u011f\u0131n\u0131 g\xf6stermek i\xe7in 3 basamakl\u0131 bir say\u0131 kullan\u0131r\u0131z. Bu 3 basamakl\u0131 say\u0131y\u0131 elde etmek i\xe7in yetkileri \xfc\xe7erli olarak grupland\u0131r\u0131p toplar\u0131z."}),"\n",(0,r.jsxs)(n.p,{children:["Kendimiz toplamak yerine, bir dosyan\u0131n yetkisinin numarasal kar\u015f\u0131l\u0131\u011f\u0131n\u0131 direkt olarak g\xf6rmek i\xe7in ",(0,r.jsx)(n.strong,{children:"stat"})," komutu kullan\u0131labilir."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] stat -c %a dosyaAdi\n"})}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/26.png"}),"\n",(0,r.jsx)(n.p,{children:"Dosyan\u0131n izinlerini numeric method ile de\u011fi\u015ftirmek istiyorsak a\u015fa\u011f\u0131daki gibi bir syntax kullan\u0131r\u0131z."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chmod XXX dosyaAdi\n"})}),"\n",(0,r.jsx)(n.p,{children:"\xd6rne\u011fin hastalar klas\xf6r\xfc i\xe7erisinde bulunan dosyalar\u0131n, other'lar taraf\u0131ndan okunabilir ve \xe7al\u0131\u015ft\u0131r\u0131labilir olmas\u0131n\u0131 istiyor olal\u0131m, a\u015fa\u011f\u0131daki gibi yapabiliriz."}),"\n",(0,r.jsx)(e,{src:"/images/hafta2/27.png"}),"\n",(0,r.jsx)(n.p,{children:"Text method kullanacak olsayd\u0131k, ayn\u0131 i\u015flemi yapmak i\xe7in chmod o=rx * dememiz yeterdi."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h4,{children:"Dosya Kilitlemek"}),"\n",(0,r.jsxs)(n.p,{children:["Bir dosyay\u0131 \xfczerinde izni verilmi\u015f olsa bile kilitlemek, yani de\u011fi\u015fiklik yap\u0131lmaz olsun istiyorsak ",(0,r.jsx)(n.strong,{children:"chattr"})," komutu kullanabiliriz. Kullan\u0131m\u0131 olduk\xe7a basittir."]}),"\n",(0,r.jsx)(n.p,{children:"Kilitlemek i\xe7in :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chattr +i dosyaAdi\n"})}),"\n",(0,r.jsx)(n.p,{children:"Kilidi a\xe7mak i\xe7in :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"\t[~$] chattr -i dosyaAdi\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(n.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Kullan\u0131c\u0131-Grup Y\xf6netimi i\xe7in;"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Bir kullan\u0131c\u0131n\u0131n parolas\u0131n\u0131n nas\u0131l de\u011fi\u015ftirilece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Sisteme yeni kullan\u0131c\u0131lar\u0131n nas\u0131l eklenece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Yeni gruplar\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Gruplara kullan\u0131c\u0131lar\u0131n nas\u0131l eklenece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Root kullan\u0131c\u0131s\u0131n\u0131n mant\u0131\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"/home dizinlerinin mant\u0131\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Kullan\u0131c\u0131lar\u0131n nas\u0131l silinece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Gruplardan kullan\u0131c\u0131lar\u0131n nas\u0131l \xe7\u0131kar\u0131laca\u011f\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Gruplar\u0131n nas\u0131l silinece\u011fini \xf6\u011frendik.."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Dosya-Dizin \u0130zinleri i\xe7in;"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"GNU/Linux'ta dizinlerin de asl\u0131nda birer dosya oldu\u011funu,"}),"\n",(0,r.jsx)(n.li,{children:"Yetki kavramlar\u0131n\u0131,"}),"\n",(0,r.jsx)(n.li,{children:"Dosya sahipliklerinin nas\u0131l de\u011fi\u015ftirilece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Text ve numeric method ile dosyalar\u0131n izinlerinin nas\u0131l de\u011fi\u015ftirilece\u011fini,"}),"\n",(0,r.jsx)(n.li,{children:"Dosyalar\u0131n nas\u0131l kilitlenebilece\u011fini \xf6\u011frendik.."}),"\n"]}),"\n"]}),"\n"]})]})},e=Object.assign({},(0,d.ah)(),i.components),a=e.wrapper;return a?(0,r.jsx)(a,c({},i,{children:(0,r.jsx)(n,{})})):n()}var u=(0,r.jsx)(h,{});function o(i,n){throw new Error("Expected "+(n?"component":"object")+" `"+i+"` to be defined: you likely forgot to import, pass, or provide it.")}function k(i){return(0,l.withSSG)((0,a.Z)({filename:"hafta-iki.mdx",route:"/haftalar/hafta-iki",meta:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},s.Z))(c({},i,{children:u}))}}},function(i){i.O(0,[774,353,888,179],(function(){return n=7003,i(i.s=n);var n}));var n=i.O();_N_E=n}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/haftalar/hafta-sifir-545d2815e868ac92.js b/_next/static/chunks/pages/haftalar/hafta-sifir-545d2815e868ac92.js new file mode 100644 index 0000000..e5c9748 --- /dev/null +++ b/_next/static/chunks/pages/haftalar/hafta-sifir-545d2815e868ac92.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[322],{6152:function(i,n,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/haftalar/hafta-sifir",function(){return e(7645)}])},7845:function(i,n,e){"use strict";var r=e(5893),a=e(5988),l=(new Date).getFullYear();n.Z={footer:(0,r.jsxs)("small",{style:{display:"block",marginTop:"8rem"},className:"jsx-7c359fde634f3543",children:[(0,r.jsx)("time",{className:"jsx-7c359fde634f3543",children:l})," \xa9 PauSiber",(0,r.jsx)(a.default,{id:"7c359fde634f3543",children:"a.jsx-7c359fde634f3543{float:right}\n@media screen and (max-width:480px) {article.jsx-7c359fde634f3543{padding-top:2rem;\npadding-bottom:4rem}}"})]})}},7645:function(i,n,e){"use strict";e.r(n),e.d(n,{default:function(){return o}});var r=e(5893),a=e(8616),l=e(3805),s=e(7845),t=e(1151);function d(i,n,e){return n in i?Object.defineProperty(i,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[n]=e,i}function u(i){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},n=function(){var n=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",blockquote:"blockquote",ul:"ul",li:"li",em:"em",h4:"h4",ol:"ol"},(0,t.ah)(),i.components),e=n.CenteredImageLightbox;return e||c("CenteredImageLightbox",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{children:"Hafta 0"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Ama\xe7 :"})," Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Yazarlar :"})," ",(0,r.jsx)(n.a,{href:"https://github.com/boratanrikulu",children:(0,r.jsx)(n.strong,{children:"boratanrikulu"})})," ",(0,r.jsx)(n.strong,{children:"&&"})," ",(0,r.jsx)(n.a,{href:"https://github.com/hasantezcan",children:(0,r.jsx)(n.strong,{children:"hasantezcan"})})]}),"\n",(0,r.jsx)(n.h2,{children:"Linux Nedir ?"}),"\n",(0,r.jsx)(n.p,{children:"Linux C dili ile yaz\u0131lm\u0131\u015f bir \xe7ekirdektir."}),"\n",(0,r.jsx)(n.p,{children:"1991'de UNIX'e bir alternatif olmas\u0131 amac\u0131yla, Linus Torvalds taraf\u0131ndan, UNIX'den esinlenerek yaz\u0131lm\u0131\u015ft\u0131r. Linux'ta UNIX'den direkt olarak al\u0131nm\u0131\u015f hi\xe7bir kod bulunmamaktad\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"POSIX standartlar\u0131na uygun olarak yaz\u0131lan Linux, GNU Genel Kamu Lisans\u0131 ile sunulan ve Linux Vakf\u0131 \xe7at\u0131s\u0131 alt\u0131nda geli\u015ftirilen bir \xf6zg\xfcr yaz\u0131l\u0131m projesidir."}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Daha detayl\u0131 bilgi i\xe7in ",(0,r.jsx)(n.strong,{children:"Just for Fun : The Story of an Accidental Revolutionary by Linus Benedict Torvalds"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Peki \xe7ekirdek nedir ?"})}),"\n",(0,r.jsx)(n.p,{children:"\xc7ekirdek, yani kernel, i\u015fletim sisteminin kalbidir. Uygulamalar ve donan\u0131m aras\u0131nda \xe7evirici g\xf6rev g\xf6r\xfcr. Fiziksel donan\u0131mla yaz\u0131l\u0131m aras\u0131ndaki haberle\u015fmeyi sa\u011flar."}),"\n",(0,r.jsx)(e,{alt:"kernel-nedir",src:"/images/hafta0/0.png"}),"\n",(0,r.jsx)(n.p,{children:"Yani Linux tek ba\u015f\u0131na bir i\u015fletim sistemi de\u011fildir."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Peki i\u015fletim sistemi (operating system) nedir ?"})}),"\n",(0,r.jsx)(n.p,{children:"\u0130\u015fletim sistemi, bilgisayar\u0131 kullanabilmemiz i\xe7in gerekli olan yaz\u0131l\u0131mlar b\xfct\xfcn\xfcd\xfcr. \xd6rne\u011fin \xf6n\xfcn\xfczde bulunan Windows bir i\u015fletim sistemidir. \u0130\u015fletim sistemi User Interface (shell) ve Kernel'dan olu\u015fur."}),"\n",(0,r.jsx)(e,{alt:"os-nedir",src:"/images/hafta0/1.png",width:"650"}),"\n",(0,r.jsxs)(n.p,{children:["\u0130\u015fletim sistemleri ve kernel bir b\xfct\xfcn halinde \xe7al\u0131\u015f\u0131r. ",(0,r.jsx)(n.strong,{children:"Yani Linux i\xe7in tek ba\u015f\u0131na bir i\u015fletim sistemi diyemeyiz."})]}),"\n",(0,r.jsxs)(n.p,{children:["GNU isimli bir i\u015fletim sistemi vard\u0131r. \xd6zg\xfcr yaz\u0131l\u0131m felsefesini ama\xe7 edinen bu i\u015fletim sistemi, 1983'te Richard Stallman taraf\u0131ndan duyurulmu\u015ftur.",(0,r.jsx)(n.a,{href:"https://www.gnu.org/",children:"gnu.org"})]}),"\n",(0,r.jsxs)(n.p,{children:["Belli bir s\xfcre HURD \xe7ekirde\u011fini kullanan GNU; 1991'de Linus Torvals taraf\u0131ndan Linux'un duyurulmas\u0131 ve ",(0,r.jsx)(n.strong,{children:"Linux \xe7ekirde\u011finin pop\xfclerlik kazanmas\u0131yla, GNU i\u015fletim sisteminde, \xe7ekirdek olarak Linux'a ge\xe7i\u015f yap\u0131lm\u0131\u015ft\u0131r."})," GNU ara\xe7lar\u0131 Linux'a uyarlanm\u0131\u015f ve b\xf6ylelikle HURD'\u0131n geli\u015fimi iyiden iyiye yava\u015flam\u0131\u015ft\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"G\xfcn\xfcm\xfczde HURD'\u0131n 1. versiyonu halen \xe7\u0131kar\u0131lamam\u0131\u015ft\u0131r."}),"\n",(0,r.jsxs)(n.p,{children:["Bu sebeplerden dolay\u0131 yaln\u0131zca Linux demek yanl\u0131\u015ft\u0131r. ",(0,r.jsx)(n.strong,{children:"GNU/Linux"})," olarak s\xf6ylenmesi daha do\u011frudur."]}),"\n",(0,r.jsx)(e,{alt:"hurd",src:"/images/hafta0/2.png"}),"\n",(0,r.jsx)(n.h2,{children:"GNU/Linux'a Neden \u0130htiyac\u0131m\u0131z Var ?"}),"\n",(0,r.jsxs)(n.p,{children:["A\xe7\u0131k\xe7as\u0131 bu bir tercih meselesi. \u0130\u015fletim sistemi bir ara\xe7t\u0131r. ",(0,r.jsx)(n.strong,{children:"Sizin i\xe7in en do\u011fru ara\xe7, amac\u0131n\u0131za en uygun olan ara\xe7t\u0131r."})]}),"\n",(0,r.jsx)(n.p,{children:"GNU/Linux'un size sa\u011flayaca\u011f\u0131 bir\xe7ok avantaj var."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Y\xfcksek d\xfczeyde ",(0,r.jsx)(n.strong,{children:"\xf6zelle\u015ftirilebilmesi."})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"\xdccretsiz"})," olmas\u0131 (her da\u011f\u0131t\u0131m \xfccretsiz de\u011fildir)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"H\u0131zl\u0131 ve Kararl\u0131d\u0131r"})," (Donan\u0131m deste\u011fi oldu\u011fu taktirde)."]}),"\n",(0,r.jsxs)(n.li,{children:["GNU/Linux i\xe7in ",(0,r.jsx)(n.strong,{children:"zararl\u0131 yaz\u0131l\u0131m say\u0131s\u0131n\u0131n az olmas\u0131."})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"\xd6zg\xfcr Yaz\u0131l\u0131m"})," olmas\u0131."]}),"\n",(0,r.jsxs)(n.li,{children:["A\xe7\u0131k kaynak oldu\u011fu i\xe7in, ",(0,r.jsx)(n.strong,{children:"sorun tespitinin ve \xe7\xf6z\xfcm\xfcn\xfcn olduk\xe7a h\u0131zl\u0131 olmas\u0131"})," (community)."]}),"\n",(0,r.jsxs)(n.li,{children:["Yard\u0131m bulabilmeniz i\xe7in bir\xe7ok toplulu\u011fun (community) olmas\u0131; ",(0,r.jsx)(n.strong,{children:"bir \u015firkete ba\u011fl\u0131 de\u011filsiniz, yaln\u0131z de\u011filsiniz!"})]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{children:"\xd6zg\xfcr Yaz\u0131l\u0131m Nedir ?"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"\xd6zg\xfcr Yaz\u0131l\u0131m bir \xf6zg\xfcrl\xfck meselesidir, fiyat de\u011fil."})}),"\n",(0,r.jsxs)(n.p,{children:["Bu yanl\u0131\u015f anla\u015f\u0131lman\u0131n sebebi; ",(0,r.jsx)(n.em,{children:"free"})," s\xf6zc\xfc\u011f\xfcn\xfcn hem \xfccretsiz hem de \xf6zg\xfcr manas\u0131na gelmesinden ortaya \xe7\u0131k\u0131yor."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.strong,{children:"To understand the concept, you should think of \u201cfree\u201d as in \u201cfree speech,\u201d not as in \u201cfree beer\u201d."})})}),"\n",(0,r.jsx)(n.p,{children:"\xd6zg\xfcr yaz\u0131l\u0131m insanlar\u0131 \xf6\u011frenmeye, \xf6\u011frendiklerini \xf6\u011fretmeye, k\u0131s\u0131tl\u0131 \xf6mr\xfcm\xfczde kazand\u0131\u011f\u0131m\u0131z bilgileri gelecek nesillere bilgi birikimi olarak b\u0131rakmaya, bir defa yap\u0131lm\u0131\u015f bir \u015feyin yap\u0131m\u0131 i\xe7in gereken tekni\u011fi tekrar tekrar bulunmas\u0131na gerek b\u0131rakmamaya te\u015fvik eder."}),"\n",(0,r.jsxs)(n.p,{children:["K\u0131sacas\u0131 \xd6zg\xfcr Yaz\u0131l\u0131m ",(0,r.jsx)(n.strong,{children:"t\xfcm insanl\u0131\u011fa hizmet eder"}),", yanl\u0131zca ",(0,r.jsx)(n.strong,{children:"bir grup insan\u0131n cebine de\u011fil."})]}),"\n",(0,r.jsx)(n.h4,{children:"Bir Yaz\u0131l\u0131m Nas\u0131l \xd6zg\xfcr Yaz\u0131l\u0131m Olur?"}),"\n",(0,r.jsx)(n.p,{children:"Bir yaz\u0131l\u0131m\u0131n \xf6zg\xfcr olmas\u0131 i\xe7in yerine getirmesi gereken 4 kriter vard\u0131r."}),"\n",(0,r.jsxs)(n.ol,{start:"0",children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\xc7al\u0131\u015ft\u0131r\u0131labilirlik:"})," Bir yaz\u0131l\u0131m istendi\u011fi \u015fekilde ve do\u011frultuda \xe7al\u0131\u015ft\u0131r\u0131labilir."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"De\u011fi\u015ftirilebilirlik:"})," Herhangi bir yazl\u0131m istendi\u011fi ama\xe7 do\u011frultusunda de\u011fi\u015ftirilebilir. \u0130stedi\u011fimiz \u015fekilde ekleme \xe7\u0131karma yap\u0131labilinir.",(0,r.jsx)(n.em,{children:"(Yaz\u0131l\u0131m\u0131n kaynak koduna eri\u015fim (open source) bunun i\xe7in bir \xf6n\u015fartt\u0131r.)"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Da\u011f\u0131t\u0131labilirlik:"})," Yaz\u0131l\u0131m herhangi biri taraf\u0131ndan tekrardan da\u011f\u0131t\u0131labilir, toplulukla bunu payla\u015fabilir."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"De\u011fi\u015ftirip Da\u011f\u0131t\u0131labilirlik:"})," Bir yaz\u0131l\u0131m\u0131 istedi\u011fimiz gibi \xe7al\u0131\u015ft\u0131r\u0131p, de\u011fi\u015ftirdi\u011fimiz gibi o yaz\u0131l\u0131m\u0131 istedi\u011fimiz do\u011frultuda de\u011fi\u015ftirip ve geli\u015ftirip bu haliyle yeniden da\u011f\u0131tabiliriz."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["T\xfcm bu \u015fartlar\u0131 yerine getirebilen her yaz\u0131l\u0131m ",(0,r.jsx)(n.strong,{children:"\xf6zg\xfcrd\xfcr."})]}),"\n",(0,r.jsx)(n.h2,{children:"Distro (Da\u011f\u0131t\u0131m) nedir ?"}),"\n",(0,r.jsx)(n.p,{children:"GNU/Linux isimli indirip kurabilece\u011finiz bir i\u015fletim sistemi asl\u0131nda yoktur. Bir\xe7ok distro vard\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"Distro, yani da\u011f\u0131t\u0131m, \xf6zg\xfcr yaz\u0131l\u0131m felsefesinin \xe7ok alternatifli d\xfcnyas\u0131n\u0131n bir sonucu olarak ortaya \xe7\u0131km\u0131\u015f, GNU/Linux'a \xf6zg\xfc bir terimdir."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"http://futurist.se/gldt/",children:(0,r.jsx)(n.strong,{children:"futurist.se/gldt/"})})}),"\n",(0,r.jsx)(e,{alt:"distros",src:"http://futurist.se/gldt/wp-content/uploads/12.10/gldt1210.png",width:"400"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Peki neden tek bir i\u015fletim sistemi de\u011fil de birden fazla i\u015fletim sistemine -distro- ihtiya\xe7 duyulmu\u015ftur ?"})}),"\n",(0,r.jsxs)(n.p,{children:["\xc7\xfcnk\xfc t\xfcm insanlar farkl\u0131d\u0131r. Herkesin kendine g\xf6re ilgi alanlar\u0131 vard\u0131r. Bu sebepten dolay\u0131 ayn\u0131 ilgi alan\u0131na sahip ki\u015filer birle\u015ferek bir topluluk yani ",(0,r.jsx)(n.strong,{children:"community"}),"'leri olu\u015fturur. Bu community'ler ilgi duyduklar\u0131 alanlara uygun \xf6zelle\u015ftirmeleri yaparak bunu bir da\u011f\u0131t\u0131m haline getirirler ve bunu t\xfcm d\xfcnya ile payla\u015f\u0131rlar."]}),"\n",(0,r.jsx)(n.p,{children:"Ubuntu Studio bunun i\xe7in g\xfczel bir \xf6rnektir."}),"\n",(0,r.jsx)(e,{alt:"distros",src:"/images/hafta0/12.png",width:"600"}),"\n",(0,r.jsx)(n.h2,{children:"Temel Da\u011f\u0131t\u0131mlar Nelerdir ?"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Debian"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Ubuntu"}),"\n",(0,r.jsx)(n.li,{children:"Pardus"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Red Hat"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"CentOS"}),"\n",(0,r.jsx)(n.li,{children:"Fedora"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Slackware"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Arch"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Manjaro"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"OpenSuse"}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://distrowatch.com/",children:(0,r.jsx)(n.strong,{children:"distrowatch.com/"})})}),"\n",(0,r.jsx)(n.h2,{children:"PauSiber Dev Nedir ? Neden \u0130htiyac\u0131m\u0131z Var ?"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Pa\xfcSiber Dev, Arch Linux \xfczerine \xf6zelle\u015ftirilerek, geli\u015ftirme yap\u0131lmas\u0131 i\xe7in uygun bir ortam\u0131n olu\u015fmas\u0131 amac\u0131yla haz\u0131rlanm\u0131\u015f, \xf6zelle\u015ftirilmi\u015f bir da\u011f\u0131t\u0131md\u0131r."})}),"\n",(0,r.jsxs)(n.p,{children:["Da\u011f\u0131t\u0131m\u0131n haz\u0131rlanmas\u0131 i\xe7in duydu\u011fumuz iste\u011fin ana kayna\u011f\u0131, toplulu\u011fumuz taraf\u0131ndan d\xfczenlenen e\u011fitimler s\u0131ras\u0131nda, kat\u0131l\u0131mc\u0131lar\u0131n sistemlerini e\u011fitime uygun hale haz\u0131rlayarak gelmemesi ya da anl\u0131k olarak sorunlar \xe7\u0131kmas\u0131ndan kaynaklanan ",(0,r.jsx)(n.strong,{children:"zaman israf\u0131n\u0131 \xf6nlemek"})," isteyi\u015fimizdir."]}),"\n",(0,r.jsx)(n.p,{children:"Bu da\u011f\u0131t\u0131m ile daha \xf6nceden d\xfc\u015f\xfcn\xfclerek yap\u0131land\u0131r\u0131lm\u0131\u015f sistem \xfczerinde, direkt olarak geli\u015ftirme a\u015famas\u0131na ge\xe7ilmesi planlanmaktad\u0131r. Ayr\u0131ca genel olarak sistemin kullan\u0131m\u0131 kolayla\u015ft\u0131racak baz\u0131 yap\u0131lar da sisteme entegre edilmi\u015ftir."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Asl\u0131nda ger\xe7ekten bir da\u011f\u0131t\u0131m de\u011fildir, yaln\u0131zca OVA s\xfcr\xfcm\xfc vard\u0131r."})}),"\n",(0,r.jsx)(n.p,{children:'Da\u011f\u0131t\u0131m\u0131 \u015fuan yaln\u0131zca OVA olarak sunma sebebimiz, GNU/Linux\'un farkl\u0131 donan\u0131mlarda ortaya \xe7\u0131karabilece\u011fi s\xfcr\xfcc\xfc sorunlar\u0131d\u0131r. E\u011fitimler s\u0131ras\u0131nda bu gibi sorunlar\u0131n ortaya \xe7\u0131kmas\u0131n\u0131 istemiyoruz. OVA olarak sundu\u011fumuz i\xe7in, kat\u0131l\u0131mc\u0131 ana sisteminin yap\u0131s\u0131n\u0131 de\u011fi\u015ftirmeden, direkt olarak VirtualBox \xfczerinden "PauSiber Dev.ova" kurulumunu 2 dakika i\xe7ersinde yapabilecektir. Ard\u0131ndan geli\u015ftirmeye ba\u015flanabilir!'}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"PauSiber Dev"})," fikri ",(0,r.jsx)(n.strong,{children:"HacknBreak18"}),"'de oraya \xe7\u0131km\u0131\u015ft\u0131r."]}),"\n",(0,r.jsx)(e,{alt:"hacknbreak18",src:"/images/hafta0/3.png",width:"500"}),"\n",(0,r.jsx)(n.h2,{children:"VirtualBox Kurulumu"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"1 -"})," VirtualBox'\u0131n sitesinden bilgisayar\u0131n\u0131za uygun olan setup'\u0131 indirin.\n",(0,r.jsx)(n.a,{href:"https://www.virtualbox.org/wiki/Downloads",children:"www.virtualbox.org/wiki/Downloads/"})]}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/4.png"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"2 -"})," \u0130ndirilen setup'\u0131 a\xe7\u0131n."]}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/5.png"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"3 -"})," Ard\u0131ndan next next next diyerek kurulumu tamamlay\u0131n :) .."]}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/6.png"}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/7.png"}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/8.png"}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/9.png"}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/10.png"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"4 -"})," Ve y\xfckleme i\u015flemi tamamland\u0131."]}),"\n",(0,r.jsx)(e,{alt:"virtualbox",src:"/images/hafta0/11.png"}),"\n",(0,r.jsx)(n.h2,{children:"PauSiber Dev Kurulumu"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"1 -"})," Dev'in sitesinden OVA'y\u0131 indirin.\n",(0,r.jsx)(n.a,{href:"https://dev.pausiber.xyz/",children:"dev.pausiber.xyz/"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"2 -"})," Ard\u0131ndan OVA'y\u0131 VirtualBox ile \xe7al\u0131\u015ft\u0131r\u0131n."]}),"\n",(0,r.jsx)(e,{alt:"dev",src:"/images/hafta0/13.png"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"3 -"})," OVA'y\u0131 \xe7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda kar\u015f\u0131n\u0131za a\u015fa\u011f\u0131daki gibi bir menu gelecek. MAC adreslerinin yeniden olu\u015fturulmas\u0131 i\xe7in gerekli tiki i\u015faretledikten sonra ",(0,r.jsx)(n.strong,{children:"import"})," se\xe7ene\u011fine bas\u0131n."]}),"\n",(0,r.jsx)(e,{alt:"dev",src:"/images/hafta0/14.png"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"4 -"})," Import i\u015flemi bittikten sonra sanal makineyi ba\u015flatabilirsiniz."]}),"\n",(0,r.jsx)(e,{alt:"dev",src:"/images/hafta0/15.png"}),"\n",(0,r.jsx)(n.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Linux'un bir i\u015fletim sistemi de\u011fil, \xe7ekirdek oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"\xc7ekirdek ve i\u015fletim sisteminin ne oldu\u011funu kabaca \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"GNU'nun ne oldu\u011funu, \xf6nceden HURD isimli bir \xe7ekirde\u011fi kulland\u0131\u011f\u0131n\u0131 \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Yaln\u0131zca Linux denmesinin neden yanl\u0131\u015f oldu\u011funu, GNU/Linux olarak isimlendirilmesi gerekti\u011fini \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"GNU/Linux'a neden ihtiyac\u0131m\u0131z oldu\u011funu tart\u0131\u015ft\u0131k."}),"\n",(0,r.jsx)(n.li,{children:"\xd6zg\xfcr yaz\u0131l\u0131m\u0131n ne oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Bir yaz\u0131l\u0131m\u0131n \xf6zg\xfcr olmas\u0131 i\xe7in gerekli ko\u015fullar\u0131n neler oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Da\u011f\u0131t\u0131m yani distro teriminin ne oldu\u011funu ve neden bir\xe7ok da\u011f\u0131t\u0131m\u0131n oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Temel da\u011f\u0131t\u0131mlar\u0131n neler oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"PauSiber Dev'in ne oldu\u011funu ve neden bunu haz\u0131rlama ihtiyac\u0131 duydu\u011fumuzu \xf6\u011frendik."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Haftaya G\xf6r\xfc\u015fmek \xdczere!"})})]})},e=Object.assign({},(0,t.ah)(),i.components),a=e.wrapper;return a?(0,r.jsx)(a,u({},i,{children:(0,r.jsx)(n,{})})):n()}var m=(0,r.jsx)(h,{});function c(i,n){throw new Error("Expected "+(n?"component":"object")+" `"+i+"` to be defined: you likely forgot to import, pass, or provide it.")}function o(i){return(0,l.withSSG)((0,a.Z)({filename:"hafta-sifir.mdx",route:"/haftalar/hafta-sifir",meta:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},s.Z))(u({},i,{children:m}))}}},function(i){i.O(0,[774,353,888,179],(function(){return n=6152,i(i.s=n);var n}));var n=i.O();_N_E=n}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/haftalar/hafta-sifir-8b20162059fd0f32.js b/_next/static/chunks/pages/haftalar/hafta-sifir-8b20162059fd0f32.js deleted file mode 100644 index 4dd0724..0000000 --- a/_next/static/chunks/pages/haftalar/hafta-sifir-8b20162059fd0f32.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[322],{6152:function(i,n,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/haftalar/hafta-sifir",function(){return e(7645)}])},7845:function(i,n,e){"use strict";var r=e(5893),a=e(5988),l=(new Date).getFullYear();n.Z={footer:(0,r.jsxs)("small",{style:{display:"block",marginTop:"8rem"},className:"jsx-7c359fde634f3543",children:[(0,r.jsx)("time",{className:"jsx-7c359fde634f3543",children:l})," \xa9 PauSiber",(0,r.jsx)(a.default,{id:"7c359fde634f3543",children:"a.jsx-7c359fde634f3543{float:right}\n@media screen and (max-width:480px) {article.jsx-7c359fde634f3543{padding-top:2rem;\npadding-bottom:4rem}}"})]})}},7645:function(i,n,e){"use strict";e.r(n),e.d(n,{default:function(){return m}});var r=e(5893),a=e(8616),l=e(3805),s=e(7845),t=e(1151);function d(i,n,e){return n in i?Object.defineProperty(i,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[n]=e,i}function u(i){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},n=function(){var n=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",blockquote:"blockquote",ul:"ul",li:"li",em:"em",h4:"h4",ol:"ol"},(0,t.ah)(),i.components);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{children:"Hafta 0"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Ama\xe7 :"})," Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Yazarlar :"})," ",(0,r.jsx)(n.a,{href:"https://github.com/boratanrikulu",children:(0,r.jsx)(n.strong,{children:"boratanrikulu"})})," ",(0,r.jsx)(n.strong,{children:"&&"})," ",(0,r.jsx)(n.a,{href:"https://github.com/hasantezcan",children:(0,r.jsx)(n.strong,{children:"hasantezcan"})})]}),"\n",(0,r.jsx)(n.h2,{children:"Linux Nedir ?"}),"\n",(0,r.jsx)(n.p,{children:"Linux C dili ile yaz\u0131lm\u0131\u015f bir \xe7ekirdektir."}),"\n",(0,r.jsx)(n.p,{children:"1991'de UNIX'e bir alternatif olmas\u0131 amac\u0131yla, Linus Torvalds taraf\u0131ndan, UNIX'den esinlenerek yaz\u0131lm\u0131\u015ft\u0131r. Linux'ta UNIX'den direkt olarak al\u0131nm\u0131\u015f hi\xe7bir kod bulunmamaktad\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"POSIX standartlar\u0131na uygun olarak yaz\u0131lan Linux, GNU Genel Kamu Lisans\u0131 ile sunulan ve Linux Vakf\u0131 \xe7at\u0131s\u0131 alt\u0131nda geli\u015ftirilen bir \xf6zg\xfcr yaz\u0131l\u0131m projesidir."}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Daha detayl\u0131 bilgi i\xe7in ",(0,r.jsx)(n.strong,{children:"Just for Fun : The Story of an Accidental Revolutionary by Linus Benedict Torvalds"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Peki \xe7ekirdek nedir ?"})}),"\n",(0,r.jsx)(n.p,{children:"\xc7ekirdek, yani kernel, i\u015fletim sisteminin kalbidir. Uygulamalar ve donan\u0131m aras\u0131nda \xe7evirici g\xf6rev g\xf6r\xfcr. Fiziksel donan\u0131mla yaz\u0131l\u0131m aras\u0131ndaki haberle\u015fmeyi sa\u011flar."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"kernel-nedir",src:"/images/hafta0/0.png"})}),"\n",(0,r.jsx)(n.p,{children:"Yani Linux tek ba\u015f\u0131na bir i\u015fletim sistemi de\u011fildir."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Peki i\u015fletim sistemi (operating system) nedir ?"})}),"\n",(0,r.jsx)(n.p,{children:"\u0130\u015fletim sistemi, bilgisayar\u0131 kullanabilmemiz i\xe7in gerekli olan yaz\u0131l\u0131mlar b\xfct\xfcn\xfcd\xfcr. \xd6rne\u011fin \xf6n\xfcn\xfczde bulunan Windows bir i\u015fletim sistemidir. \u0130\u015fletim sistemi User Interface (shell) ve Kernel'dan olu\u015fur."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"os-nedir",src:"/images/hafta0/1.png",width:"650"})}),"\n",(0,r.jsxs)(n.p,{children:["\u0130\u015fletim sistemleri ve kernel bir b\xfct\xfcn halinde \xe7al\u0131\u015f\u0131r. ",(0,r.jsx)(n.strong,{children:"Yani Linux i\xe7in tek ba\u015f\u0131na bir i\u015fletim sistemi diyemeyiz."})]}),"\n",(0,r.jsxs)(n.p,{children:["GNU isimli bir i\u015fletim sistemi vard\u0131r. \xd6zg\xfcr yaz\u0131l\u0131m felsefesini ama\xe7 edinen bu i\u015fletim sistemi, 1983'te Richard Stallman taraf\u0131ndan duyurulmu\u015ftur.",(0,r.jsx)(n.a,{href:"https://www.gnu.org/",children:"gnu.org"})]}),"\n",(0,r.jsxs)(n.p,{children:["Belli bir s\xfcre HURD \xe7ekirde\u011fini kullanan GNU; 1991'de Linus Torvals taraf\u0131ndan Linux'un duyurulmas\u0131 ve ",(0,r.jsx)(n.strong,{children:"Linux \xe7ekirde\u011finin pop\xfclerlik kazanmas\u0131yla, GNU i\u015fletim sisteminde, \xe7ekirdek olarak Linux'a ge\xe7i\u015f yap\u0131lm\u0131\u015ft\u0131r."})," GNU ara\xe7lar\u0131 Linux'a uyarlanm\u0131\u015f ve b\xf6ylelikle HURD'\u0131n geli\u015fimi iyiden iyiye yava\u015flam\u0131\u015ft\u0131r."]}),"\n",(0,r.jsx)(n.p,{children:"G\xfcn\xfcm\xfczde HURD'\u0131n 1. versiyonu halen \xe7\u0131kar\u0131lamam\u0131\u015ft\u0131r."}),"\n",(0,r.jsxs)(n.p,{children:["Bu sebeplerden dolay\u0131 yaln\u0131zca Linux demek yanl\u0131\u015ft\u0131r. ",(0,r.jsx)(n.strong,{children:"GNU/Linux"})," olarak s\xf6ylenmesi daha do\u011frudur."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"hurd",src:"/images/hafta0/2.png"})}),"\n",(0,r.jsx)(n.h2,{children:"GNU/Linux'a Neden \u0130htiyac\u0131m\u0131z Var ?"}),"\n",(0,r.jsxs)(n.p,{children:["A\xe7\u0131k\xe7as\u0131 bu bir tercih meselesi. \u0130\u015fletim sistemi bir ara\xe7t\u0131r. ",(0,r.jsx)(n.strong,{children:"Sizin i\xe7in en do\u011fru ara\xe7, amac\u0131n\u0131za en uygun olan ara\xe7t\u0131r."})]}),"\n",(0,r.jsx)(n.p,{children:"GNU/Linux'un size sa\u011flayaca\u011f\u0131 bir\xe7ok avantaj var."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Y\xfcksek d\xfczeyde ",(0,r.jsx)(n.strong,{children:"\xf6zelle\u015ftirilebilmesi."})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"\xdccretsiz"})," olmas\u0131 (her da\u011f\u0131t\u0131m \xfccretsiz de\u011fildir)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"H\u0131zl\u0131 ve Kararl\u0131d\u0131r"})," (Donan\u0131m deste\u011fi oldu\u011fu taktirde)."]}),"\n",(0,r.jsxs)(n.li,{children:["GNU/Linux i\xe7in ",(0,r.jsx)(n.strong,{children:"zararl\u0131 yaz\u0131l\u0131m say\u0131s\u0131n\u0131n az olmas\u0131."})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"\xd6zg\xfcr Yaz\u0131l\u0131m"})," olmas\u0131."]}),"\n",(0,r.jsxs)(n.li,{children:["A\xe7\u0131k kaynak oldu\u011fu i\xe7in, ",(0,r.jsx)(n.strong,{children:"sorun tespitinin ve \xe7\xf6z\xfcm\xfcn\xfcn olduk\xe7a h\u0131zl\u0131 olmas\u0131"})," (community)."]}),"\n",(0,r.jsxs)(n.li,{children:["Yard\u0131m bulabilmeniz i\xe7in bir\xe7ok toplulu\u011fun (community) olmas\u0131; ",(0,r.jsx)(n.strong,{children:"bir \u015firkete ba\u011fl\u0131 de\u011filsiniz, yaln\u0131z de\u011filsiniz!"})]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{children:"\xd6zg\xfcr Yaz\u0131l\u0131m Nedir ?"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"\xd6zg\xfcr Yaz\u0131l\u0131m bir \xf6zg\xfcrl\xfck meselesidir, fiyat de\u011fil."})}),"\n",(0,r.jsxs)(n.p,{children:["Bu yanl\u0131\u015f anla\u015f\u0131lman\u0131n sebebi; ",(0,r.jsx)(n.em,{children:"free"})," s\xf6zc\xfc\u011f\xfcn\xfcn hem \xfccretsiz hem de \xf6zg\xfcr manas\u0131na gelmesinden ortaya \xe7\u0131k\u0131yor."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.strong,{children:"To understand the concept, you should think of \u201cfree\u201d as in \u201cfree speech,\u201d not as in \u201cfree beer\u201d."})})}),"\n",(0,r.jsx)(n.p,{children:"\xd6zg\xfcr yaz\u0131l\u0131m insanlar\u0131 \xf6\u011frenmeye, \xf6\u011frendiklerini \xf6\u011fretmeye, k\u0131s\u0131tl\u0131 \xf6mr\xfcm\xfczde kazand\u0131\u011f\u0131m\u0131z bilgileri gelecek nesillere bilgi birikimi olarak b\u0131rakmaya, bir defa yap\u0131lm\u0131\u015f bir \u015feyin yap\u0131m\u0131 i\xe7in gereken tekni\u011fi tekrar tekrar bulunmas\u0131na gerek b\u0131rakmamaya te\u015fvik eder."}),"\n",(0,r.jsxs)(n.p,{children:["K\u0131sacas\u0131 \xd6zg\xfcr Yaz\u0131l\u0131m ",(0,r.jsx)(n.strong,{children:"t\xfcm insanl\u0131\u011fa hizmet eder"}),", yanl\u0131zca ",(0,r.jsx)(n.strong,{children:"bir grup insan\u0131n cebine de\u011fil."})]}),"\n",(0,r.jsx)(n.h4,{children:"Bir Yaz\u0131l\u0131m Nas\u0131l \xd6zg\xfcr Yaz\u0131l\u0131m Olur?"}),"\n",(0,r.jsx)(n.p,{children:"Bir yaz\u0131l\u0131m\u0131n \xf6zg\xfcr olmas\u0131 i\xe7in yerine getirmesi gereken 4 kriter vard\u0131r."}),"\n",(0,r.jsxs)(n.ol,{start:"0",children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\xc7al\u0131\u015ft\u0131r\u0131labilirlik:"})," Bir yaz\u0131l\u0131m istendi\u011fi \u015fekilde ve do\u011frultuda \xe7al\u0131\u015ft\u0131r\u0131labilir."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"De\u011fi\u015ftirilebilirlik:"})," Herhangi bir yazl\u0131m istendi\u011fi ama\xe7 do\u011frultusunda de\u011fi\u015ftirilebilir. \u0130stedi\u011fimiz \u015fekilde ekleme \xe7\u0131karma yap\u0131labilinir.",(0,r.jsx)(n.em,{children:"(Yaz\u0131l\u0131m\u0131n kaynak koduna eri\u015fim (open source) bunun i\xe7in bir \xf6n\u015fartt\u0131r.)"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Da\u011f\u0131t\u0131labilirlik:"})," Yaz\u0131l\u0131m herhangi biri taraf\u0131ndan tekrardan da\u011f\u0131t\u0131labilir, toplulukla bunu payla\u015fabilir."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"De\u011fi\u015ftirip Da\u011f\u0131t\u0131labilirlik:"})," Bir yaz\u0131l\u0131m\u0131 istedi\u011fimiz gibi \xe7al\u0131\u015ft\u0131r\u0131p, de\u011fi\u015ftirdi\u011fimiz gibi o yaz\u0131l\u0131m\u0131 istedi\u011fimiz do\u011frultuda de\u011fi\u015ftirip ve geli\u015ftirip bu haliyle yeniden da\u011f\u0131tabiliriz."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["T\xfcm bu \u015fartlar\u0131 yerine getirebilen her yaz\u0131l\u0131m ",(0,r.jsx)(n.strong,{children:"\xf6zg\xfcrd\xfcr."})]}),"\n",(0,r.jsx)(n.h2,{children:"Distro (Da\u011f\u0131t\u0131m) nedir ?"}),"\n",(0,r.jsx)(n.p,{children:"GNU/Linux isimli indirip kurabilece\u011finiz bir i\u015fletim sistemi asl\u0131nda yoktur. Bir\xe7ok distro vard\u0131r."}),"\n",(0,r.jsx)(n.p,{children:"Distro, yani da\u011f\u0131t\u0131m, \xf6zg\xfcr yaz\u0131l\u0131m felsefesinin \xe7ok alternatifli d\xfcnyas\u0131n\u0131n bir sonucu olarak ortaya \xe7\u0131km\u0131\u015f, GNU/Linux'a \xf6zg\xfc bir terimdir."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"http://futurist.se/gldt/",children:(0,r.jsx)(n.strong,{children:"futurist.se/gldt/"})})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"distros",src:"http://futurist.se/gldt/wp-content/uploads/12.10/gldt1210.png",width:"400"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Peki neden tek bir i\u015fletim sistemi de\u011fil de birden fazla i\u015fletim sistemine -distro- ihtiya\xe7 duyulmu\u015ftur ?"})}),"\n",(0,r.jsxs)(n.p,{children:["\xc7\xfcnk\xfc t\xfcm insanlar farkl\u0131d\u0131r. Herkesin kendine g\xf6re ilgi alanlar\u0131 vard\u0131r. Bu sebepten dolay\u0131 ayn\u0131 ilgi alan\u0131na sahip ki\u015filer birle\u015ferek bir topluluk yani ",(0,r.jsx)(n.strong,{children:"community"}),"'leri olu\u015fturur. Bu community'ler ilgi duyduklar\u0131 alanlara uygun \xf6zelle\u015ftirmeleri yaparak bunu bir da\u011f\u0131t\u0131m haline getirirler ve bunu t\xfcm d\xfcnya ile payla\u015f\u0131rlar."]}),"\n",(0,r.jsx)(n.p,{children:"Ubuntu Studio bunun i\xe7in g\xfczel bir \xf6rnektir."}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"distros",src:"/images/hafta0/12.png",width:"600"})}),"\n",(0,r.jsx)(n.h2,{children:"Temel Da\u011f\u0131t\u0131mlar Nelerdir ?"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Debian"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Ubuntu"}),"\n",(0,r.jsx)(n.li,{children:"Pardus"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Red Hat"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"CentOS"}),"\n",(0,r.jsx)(n.li,{children:"Fedora"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Slackware"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Arch"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Manjaro"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"OpenSuse"}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://distrowatch.com/",children:(0,r.jsx)(n.strong,{children:"distrowatch.com/"})})}),"\n",(0,r.jsx)(n.h2,{children:"PauSiber Dev Nedir ? Neden \u0130htiyac\u0131m\u0131z Var ?"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Pa\xfcSiber Dev, Arch Linux \xfczerine \xf6zelle\u015ftirilerek, geli\u015ftirme yap\u0131lmas\u0131 i\xe7in uygun bir ortam\u0131n olu\u015fmas\u0131 amac\u0131yla haz\u0131rlanm\u0131\u015f, \xf6zelle\u015ftirilmi\u015f bir da\u011f\u0131t\u0131md\u0131r."})}),"\n",(0,r.jsxs)(n.p,{children:["Da\u011f\u0131t\u0131m\u0131n haz\u0131rlanmas\u0131 i\xe7in duydu\u011fumuz iste\u011fin ana kayna\u011f\u0131, toplulu\u011fumuz taraf\u0131ndan d\xfczenlenen e\u011fitimler s\u0131ras\u0131nda, kat\u0131l\u0131mc\u0131lar\u0131n sistemlerini e\u011fitime uygun hale haz\u0131rlayarak gelmemesi ya da anl\u0131k olarak sorunlar \xe7\u0131kmas\u0131ndan kaynaklanan ",(0,r.jsx)(n.strong,{children:"zaman israf\u0131n\u0131 \xf6nlemek"})," isteyi\u015fimizdir."]}),"\n",(0,r.jsx)(n.p,{children:"Bu da\u011f\u0131t\u0131m ile daha \xf6nceden d\xfc\u015f\xfcn\xfclerek yap\u0131land\u0131r\u0131lm\u0131\u015f sistem \xfczerinde, direkt olarak geli\u015ftirme a\u015famas\u0131na ge\xe7ilmesi planlanmaktad\u0131r. Ayr\u0131ca genel olarak sistemin kullan\u0131m\u0131 kolayla\u015ft\u0131racak baz\u0131 yap\u0131lar da sisteme entegre edilmi\u015ftir."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Asl\u0131nda ger\xe7ekten bir da\u011f\u0131t\u0131m de\u011fildir, yaln\u0131zca OVA s\xfcr\xfcm\xfc vard\u0131r."})}),"\n",(0,r.jsx)(n.p,{children:'Da\u011f\u0131t\u0131m\u0131 \u015fuan yaln\u0131zca OVA olarak sunma sebebimiz, GNU/Linux\'un farkl\u0131 donan\u0131mlarda ortaya \xe7\u0131karabilece\u011fi s\xfcr\xfcc\xfc sorunlar\u0131d\u0131r. E\u011fitimler s\u0131ras\u0131nda bu gibi sorunlar\u0131n ortaya \xe7\u0131kmas\u0131n\u0131 istemiyoruz. OVA olarak sundu\u011fumuz i\xe7in, kat\u0131l\u0131mc\u0131 ana sisteminin yap\u0131s\u0131n\u0131 de\u011fi\u015ftirmeden, direkt olarak VirtualBox \xfczerinden "PauSiber Dev.ova" kurulumunu 2 dakika i\xe7ersinde yapabilecektir. Ard\u0131ndan geli\u015ftirmeye ba\u015flanabilir!'}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"PauSiber Dev"})," fikri ",(0,r.jsx)(n.strong,{children:"HacknBreak18"}),"'de oraya \xe7\u0131km\u0131\u015ft\u0131r."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"hacknbreak18",src:"/images/hafta0/3.png",width:"500"})}),"\n",(0,r.jsx)(n.h2,{children:"VirtualBox Kurulumu"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"1 -"})," VirtualBox'\u0131n sitesinden bilgisayar\u0131n\u0131za uygun olan setup'\u0131 indirin.\n",(0,r.jsx)(n.a,{href:"https://www.virtualbox.org/wiki/Downloads",children:"www.virtualbox.org/wiki/Downloads/"})]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/4.png"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"2 -"})," \u0130ndirilen setup'\u0131 a\xe7\u0131n."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/5.png"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"3 -"})," Ard\u0131ndan next next next diyerek kurulumu tamamlay\u0131n :) .."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/6.png"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/7.png"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/8.png"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/9.png"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/10.png"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"4 -"})," Ve y\xfckleme i\u015flemi tamamland\u0131."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"virtualbox",src:"/images/hafta0/11.png"})}),"\n",(0,r.jsx)(n.h2,{children:"PauSiber Dev Kurulumu"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"1 -"})," Dev'in sitesinden OVA'y\u0131 indirin.\n",(0,r.jsx)(n.a,{href:"https://dev.pausiber.xyz/",children:"dev.pausiber.xyz/"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"2 -"})," Ard\u0131ndan OVA'y\u0131 VirtualBox ile \xe7al\u0131\u015ft\u0131r\u0131n."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"dev",src:"/images/hafta0/13.png"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"3 -"})," OVA'y\u0131 \xe7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda kar\u015f\u0131n\u0131za a\u015fa\u011f\u0131daki gibi bir menu gelecek. MAC adreslerinin yeniden olu\u015fturulmas\u0131 i\xe7in gerekli tiki i\u015faretledikten sonra ",(0,r.jsx)(n.strong,{children:"import"})," se\xe7ene\u011fine bas\u0131n."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"dev",src:"/images/hafta0/14.png"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"4 -"})," Import i\u015flemi bittikten sonra sanal makineyi ba\u015flatabilirsiniz."]}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"dev",src:"/images/hafta0/15.png"})}),"\n",(0,r.jsx)(n.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Linux'un bir i\u015fletim sistemi de\u011fil, \xe7ekirdek oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"\xc7ekirdek ve i\u015fletim sisteminin ne oldu\u011funu kabaca \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"GNU'nun ne oldu\u011funu, \xf6nceden HURD isimli bir \xe7ekirde\u011fi kulland\u0131\u011f\u0131n\u0131 \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Yaln\u0131zca Linux denmesinin neden yanl\u0131\u015f oldu\u011funu, GNU/Linux olarak isimlendirilmesi gerekti\u011fini \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"GNU/Linux'a neden ihtiyac\u0131m\u0131z oldu\u011funu tart\u0131\u015ft\u0131k."}),"\n",(0,r.jsx)(n.li,{children:"\xd6zg\xfcr yaz\u0131l\u0131m\u0131n ne oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Bir yaz\u0131l\u0131m\u0131n \xf6zg\xfcr olmas\u0131 i\xe7in gerekli ko\u015fullar\u0131n neler oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Da\u011f\u0131t\u0131m yani distro teriminin ne oldu\u011funu ve neden bir\xe7ok da\u011f\u0131t\u0131m\u0131n oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"Temel da\u011f\u0131t\u0131mlar\u0131n neler oldu\u011funu \xf6\u011frendik."}),"\n",(0,r.jsx)(n.li,{children:"PauSiber Dev'in ne oldu\u011funu ve neden bunu haz\u0131rlama ihtiyac\u0131 duydu\u011fumuzu \xf6\u011frendik."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Haftaya G\xf6r\xfc\u015fmek \xdczere!"})})]})},e=Object.assign({},(0,t.ah)(),i.components),a=e.wrapper;return a?(0,r.jsx)(a,u({},i,{children:(0,r.jsx)(n,{})})):n()}var h=(0,r.jsx)(c,{});function m(i){return(0,l.withSSG)((0,a.Z)({filename:"hafta-sifir.mdx",route:"/haftalar/hafta-sifir",meta:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},s.Z))(u({},i,{children:h}))}}},function(i){i.O(0,[774,353,888,179],(function(){return n=6152,i(i.s=n);var n}));var n=i.O();_N_E=n}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/haftalar/hafta-uc-7cf5e77f1da5e3e5.js b/_next/static/chunks/pages/haftalar/hafta-uc-7cf5e77f1da5e3e5.js new file mode 100644 index 0000000..610118e --- /dev/null +++ b/_next/static/chunks/pages/haftalar/hafta-uc-7cf5e77f1da5e3e5.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[199],{7805:function(e,a,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/haftalar/hafta-uc",function(){return n(5782)}])},7845:function(e,a,n){"use strict";var r=n(5893),i=n(5988),l=(new Date).getFullYear();a.Z={footer:(0,r.jsxs)("small",{style:{display:"block",marginTop:"8rem"},className:"jsx-7c359fde634f3543",children:[(0,r.jsx)("time",{className:"jsx-7c359fde634f3543",children:l})," \xa9 PauSiber",(0,r.jsx)(i.default,{id:"7c359fde634f3543",children:"a.jsx-7c359fde634f3543{float:right}\n@media screen and (max-width:480px) {article.jsx-7c359fde634f3543{padding-top:2rem;\npadding-bottom:4rem}}"})]})}},5782:function(e,a,n){"use strict";n.r(a),n.d(a,{default:function(){return k}});var r=n(5893),i=n(8616),l=n(3805),t=n(7845),s=n(1151);function d(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function u(e){for(var a=1;a0&&void 0!==arguments[0]?arguments[0]:{},a=function(){var a=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",h4:"h4",pre:"pre",code:"code",br:"br",ul:"ul",li:"li"},(0,s.ah)(),e.components),n=a.CenteredImageLightbox;return n||h("CenteredImageLightbox",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h1,{children:"Hafta 3"}),"\n",(0,r.jsxs)(a.p,{children:[(0,r.jsx)(a.strong,{children:"Ama\xe7 :"})," Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131."]}),"\n",(0,r.jsxs)(a.p,{children:[(0,r.jsx)(a.strong,{children:"Yazarlar :"})," ",(0,r.jsx)(a.a,{href:"https://github.com/boratanrikulu",children:(0,r.jsx)(a.strong,{children:"boratanrikulu"})})," ",(0,r.jsx)(a.strong,{children:"&&"})," ",(0,r.jsx)(a.a,{href:"https://github.com/hasantezcan",children:(0,r.jsx)(a.strong,{children:"hasantezcan"})})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h2,{children:"Server (Sunucu) Nedir ?"}),"\n",(0,r.jsx)(a.p,{children:"Server denince ak\u0131llara -filmlerin de etkisiyle- devasa b\xfcy\xfckl\xfckte hangarlar i\xe7ine s\u0131ra s\u0131ra istiflenmi\u015f, genelde siyah renkte dolaplar i\xe7inde bulunan, dikd\xf6rtgen \u015feklinde \xe7ekmeceler geliyor."}),"\n",(0,r.jsx)(a.p,{children:'Evet, ak\u0131llara gelen bu tablo ve tan\u0131m tamamen do\u011fru. Fakat bir "server" olu\u015fturmak i\xe7in t\xfcm bu sayd\u0131\u011f\u0131m\u0131z \u015feylere ihtiyac\u0131m\u0131z yok. Sadece bir bilgisayar, server olu\u015fturmak i\xe7in yeterli. Ve tabiki gerekli olan bir ileti\u015fim a\u011f\u0131.'}),"\n",(0,r.jsx)(n,{alt:"pwd",src:"/images/hafta3/0.jpg",width:"800"}),"\n",(0,r.jsx)(a.p,{children:"Yani server dedi\u011fimiz \u015feyler de asl\u0131nda birer bilgisayard\u0131r."}),"\n",(0,r.jsx)(a.p,{children:"Bir bilgisayar\u0131n server olarak \xe7al\u0131\u015fabilmesi i\xe7in; gerekli baz\u0131 yaz\u0131l\u0131mlara ve kulland\u0131\u011f\u0131 verileri iletim a\u011f\u0131na itebilecek - \xe7ekebilecek g\xfcce sahip olmas\u0131 gerekir."}),"\n",(0,r.jsxs)(a.p,{children:["Bu ",(0,r.jsx)(a.strong,{children:"g\xfc\xe7"})," bazen en ba\u015fta anlatt\u0131\u011f\u0131m\u0131z o hollywood vari tablodaki serverlar\u0131n g\xfcc\xfc gibi devasa bir g\xfcce sahip olurken, bazen de 20 dolarl\u0131k bir bilgisayar olan Raspberry Pi'\u0131n g\xfcc\xfc olabilir."]}),"\n",(0,r.jsxs)(a.p,{children:["Server'lar\u0131 y\xf6netmek i\xe7in her durumda fiziksel olarak m\xfcdahale edemeyiz. Uzaktan eri\u015fip y\xf6netmemiz gerekir. Bu gibi durumlarda ",(0,r.jsx)(a.strong,{children:"SSH protokol\xfc"})," kullan\u0131r."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h2,{children:"SSH Protokol\xfc Nedir ?"}),"\n",(0,r.jsx)(a.p,{children:"SSH (Secure Shell), a\u011f \xfczerinde bulunan bir sunucuya ba\u011flanmaya ve ba\u011flan\u0131lan sunucu \xfczerinde komut \xe7al\u0131\u015ft\u0131rma, dosya transferi gibi i\u015flemleri ger\xe7ekle\u015ftirmeye olanak sa\u011flayan bir uzak sunucu ba\u011flant\u0131 protokol\xfcd\xfcr."}),"\n",(0,r.jsx)(a.p,{children:"SSH protokol\xfc; komut \xe7al\u0131\u015ft\u0131rma, dosya transferi gibi i\u015flemlerin d\u0131\u015f\u0131nda, g\xfcvenli ileti\u015fim kanallar\u0131 gerektiren durumlar\u0131n tamam\u0131nda kullan\u0131labilmektedir. \xd6rne\u011fin, POP3 mail protokol\xfc gibi ileti\u015fimini \u015fifrelenmemi\u015f \u015fekilde ger\xe7ekle\u015ftiren servisler SSH \xfczerinden aktar\u0131larak \u015fifreli ve g\xfcvenli duruma getirilebilirler."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH Kullan\u0131m\u0131"}),"\n",(0,r.jsx)(a.p,{children:"SSH'\u0131n genel olarak kullan\u0131m\u0131 olduk\xe7a basittir. A\u015fa\u011f\u0131daki gibi bir yap\u0131 ile uzak server'\u0131m\u0131za; kullan\u0131c\u0131 ad\u0131 ve parola bilgisini kullanarak eri\u015febiliriz."}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh kullanc\u0131_ad\u0131@server_ip\n"})}),"\n",(0,r.jsxs)(a.p,{children:["SSH'\u0131n varsay\u0131lan port'u 22'dir. Fakat genellikle -her ne kadar gereklili\u011fi tart\u0131\u015f\u0131lsa da- sunucularda bu port g\xfcvenlik sebebi ile de\u011fi\u015ftirilmektedir. Ba\u011flant\u0131 sa\u011flan\u0131rken, sunucunun SSH ba\u011flant\u0131s\u0131n\u0131 kabul etmek amac\u0131yla dinledi\u011fini port'u belirtmek i\xe7in ",(0,r.jsx)(a.strong,{children:"-p"})," parametresi kullan\u0131l\u0131r."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh kullanc\u0131_ad\u0131@server_ip -p port\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"Parola ile Ba\u011flant\u0131 Kurmak Neden G\xfcvenli De\u011fil ?"}),"\n",(0,r.jsx)(a.p,{children:"Az \xf6nce kullan\u0131c\u0131 ad\u0131 ve parola bilgisi sa\u011flayan uzakta bulunan server'\u0131m\u0131za eri\u015fim sa\u011flad\u0131k. Fakat sizce bu g\xfcvenli mi ?"}),"\n",(0,r.jsxs)(a.p,{children:["Bizim a\xe7\u0131m\u0131za g\xf6re server'\u0131m\u0131za ",(0,r.jsx)(a.strong,{children:"parola ile uzaktan ba\u011flanmak g\xfcvenli bir y\xf6ntem de\u011fildir."})]}),"\n",(0,r.jsx)(a.p,{children:"Bunun belli ba\u015fl\u0131 sebepleri vard\u0131r; ssh ba\u011flant\u0131s\u0131n\u0131n bruteforce i\u015flemine a\xe7\u0131k olmas\u0131, herkese a\xe7\u0131k ortamlarda parolan\u0131n elle girilmesi uzaktan izleyen ki\u015filer taraf\u0131ndan parolan\u0131n tespit edilmesine yol a\xe7abilecek olmas\u0131 gibi fakt\xf6rler \xf6rnek verilebilir."}),"\n",(0,r.jsx)(a.p,{children:"Bu y\xfczden, server'\u0131m\u0131za eri\u015fim sa\u011flarken, ssh-key kullanmam\u0131z daha kullan\u0131\u015fl\u0131 ve g\xfcvenli olacakt\u0131r."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH-Key Nedir ?"}),"\n",(0,r.jsx)(a.p,{children:"SSH-Key, parola kullanmadan SSH ba\u011flant\u0131lar\u0131 sa\u011flayabilmemizde kullan\u0131lan public ve private key \xe7iftine denir."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH-Keygen ile Key Olu\u015fturulmas\u0131"}),"\n",(0,r.jsxs)(a.p,{children:["SSH-Key olu\u015fturmak olduk\xe7a basittir. A\u015fa\u011f\u0131daki komutu y\xfcr\xfctt\xfc\u011f\xfcn\xfczde size birka\xe7 soru sorduktan sonra key \xfcretilecektir. Key \xfcretimi sonucunda biri ",(0,r.jsx)(a.strong,{children:"public"})," di\u011feri ",(0,r.jsx)(a.strong,{children:"private"})," olmak \xfczere ",(0,r.jsx)(a.strong,{children:"iki adet key"})," olu\u015facakt\u0131r."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh-keygen\n"})}),"\n",(0,r.jsx)(n,{alt:"ssh-keygen",src:"/images/hafta3/1.png",width:"800"}),"\n",(0,r.jsxs)(a.p,{children:["\xdcretilen keyler'den sonunda ",(0,r.jsx)(a.strong,{children:".pub"})," uzant\u0131s\u0131 bulunan sizin public key'inizdir. Bu key'i ba\u011flanmak istedi\u011finiz sunuculara eklemeniz gerekir."]}),"\n",(0,r.jsx)(a.p,{children:"Uzant\u0131s\u0131 bulunmayan key ise sizin private key'inizdir. Bu dosyay\u0131 kimse ile payla\u015fmamal\u0131s\u0131n\u0131z. SSH ile ba\u011flant\u0131 sa\u011flarken bu dosyay\u0131 kullanaca\u011f\u0131z."}),"\n",(0,r.jsxs)(a.p,{children:["Ek olarak private key'in izinleri ",(0,r.jsx)(a.strong,{children:"600"})," olarak ayarlanmal\u0131d\u0131r.",(0,r.jsx)(a.br,{}),"\n","Bunu uygulamak i\xe7in \xf6nceki haftan\u0131n dok\xfcman\u0131n\u0131 inceleyin : ",(0,r.jsx)(a.a,{href:"https://gnulinux.pausiber.xyz/haftalar/hafta-iki",children:(0,r.jsx)(a.strong,{children:"hafta-iki"})})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH-Key Kullanarak Ba\u011flant\u0131 Sa\u011flanmas\u0131"}),"\n",(0,r.jsx)(a.p,{children:"SSH-Key kullanarak ba\u011flant\u0131 sa\u011flamak i\xe7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz."}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh kullanc\u0131_ad\u0131@server_ip\n"})}),"\n",(0,r.jsxs)(a.p,{children:["Ayr\u0131ca SSH-Key'i default path yerine ba\u015fka bir yere kay\u0131t ettiyseniz ",(0,r.jsx)(a.strong,{children:"-i"})," parametresini kullanarak bu path'i vermeniz gerekmektedir."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh -i /path/to/private_key kullanc\u0131_ad\u0131@server_ip\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:'".ssh/config" Dosyas\u0131n\u0131n Kullan\u0131m\u0131'}),"\n",(0,r.jsxs)(a.p,{children:["E\u011fer birden fazla sunucu ile u\u011fra\u015f\u0131yorsan\u0131z, her ba\u011flant\u0131 kurma a\u015famas\u0131nda IP girmek tam bir i\u015fkence. Bunun \xf6n\xfcne ge\xe7mek i\xe7in bilgisayar\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir ",(0,r.jsx)(a.strong,{children:(0,r.jsx)(a.code,{children:"${HOME}/.ssh/config"})})," dosyas\u0131 olu\u015fturabilirsiniz. Bu sayede IP'leri girmeden direkt olarak ",(0,r.jsx)(a.strong,{children:"ssh server_name"})," diyerek sunucunuz ile ba\u011flant\u0131 sa\u011flayabilirsiniz."]}),"\n",(0,r.jsxs)(a.p,{children:["Bunun i\xe7in ",(0,r.jsx)(a.strong,{children:(0,r.jsx)(a.code,{children:"${HOME}/.ssh/config"})})," dosyas\u0131n\u0131 olu\u015fturun."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] touch ${HOME}/.ssh/config\n"})}),"\n",(0,r.jsx)(a.p,{children:"Ard\u0131ndan dosya i\xe7eri\u011fini a\u015fa\u011f\u0131daki yap\u0131ya uygun \u015fekilde ayarlay\u0131n."}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t\tHost\t\t\tserver_name\n\t\tHostName\t\tserver_ip\n\t\tUser\t\t\tusername\n\t\tPort\t\t\t22\n\t\tIdentityFile\t/path/to/ssh-key\n"})}),"\n",(0,r.jsxs)(a.p,{children:["Art\u0131k herhangi bir \u015fekilde IP girmek yerine direkt olarak ",(0,r.jsx)(a.strong,{children:"ssh server_name"})," diyerek sunucunuza ba\u011flanabilirsiniz."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,r.jsxs)(a.ul,{children:["\n",(0,r.jsx)(a.li,{children:"Server'\u0131n ne oldu\u011funu,"}),"\n",(0,r.jsx)(a.li,{children:"SSH protokol\xfcn\xfcn ne oldu\u011funu,"}),"\n",(0,r.jsx)(a.li,{children:"SSH kullan\u0131m\u0131n\u0131,"}),"\n",(0,r.jsx)(a.li,{children:"SSH-Key'in ne oldu\u011funu,"}),"\n",(0,r.jsx)(a.li,{children:"SSH-Key kullanarak ba\u011flant\u0131 kurmay\u0131,"}),"\n",(0,r.jsx)(a.li,{children:"Parola yerine neden SSH-Key kulland\u0131\u011f\u0131m\u0131z\u0131 \xf6\u011frendik."}),"\n"]})]})},n=Object.assign({},(0,s.ah)(),e.components),i=n.wrapper;return i?(0,r.jsx)(i,u({},e,{children:(0,r.jsx)(a,{})})):a()}var c=(0,r.jsx)(o,{});function h(e,a){throw new Error("Expected "+(a?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}function k(e){return(0,l.withSSG)((0,i.Z)({filename:"hafta-uc.mdx",route:"/haftalar/hafta-uc",meta:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},t.Z))(u({},e,{children:c}))}}},function(e){e.O(0,[774,353,888,179],(function(){return a=7805,e(e.s=a);var a}));var a=e.O();_N_E=a}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/haftalar/hafta-uc-e1eb34a747d4ef47.js b/_next/static/chunks/pages/haftalar/hafta-uc-e1eb34a747d4ef47.js deleted file mode 100644 index c5b641c..0000000 --- a/_next/static/chunks/pages/haftalar/hafta-uc-e1eb34a747d4ef47.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[199],{7805:function(e,a,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/haftalar/hafta-uc",function(){return n(5782)}])},7845:function(e,a,n){"use strict";var r=n(5893),i=n(5988),l=(new Date).getFullYear();a.Z={footer:(0,r.jsxs)("small",{style:{display:"block",marginTop:"8rem"},className:"jsx-7c359fde634f3543",children:[(0,r.jsx)("time",{className:"jsx-7c359fde634f3543",children:l})," \xa9 PauSiber",(0,r.jsx)(i.default,{id:"7c359fde634f3543",children:"a.jsx-7c359fde634f3543{float:right}\n@media screen and (max-width:480px) {article.jsx-7c359fde634f3543{padding-top:2rem;\npadding-bottom:4rem}}"})]})}},5782:function(e,a,n){"use strict";n.r(a),n.d(a,{default:function(){return h}});var r=n(5893),i=n(8616),l=n(3805),t=n(7845),s=n(1151);function d(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function u(e){for(var a=1;a0&&void 0!==arguments[0]?arguments[0]:{},a=function(){var a=Object.assign({h1:"h1",p:"p",strong:"strong",a:"a",h2:"h2",h4:"h4",pre:"pre",code:"code",br:"br",ul:"ul",li:"li"},(0,s.ah)(),e.components);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h1,{children:"Hafta 3"}),"\n",(0,r.jsxs)(a.p,{children:[(0,r.jsx)(a.strong,{children:"Ama\xe7 :"})," Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131."]}),"\n",(0,r.jsxs)(a.p,{children:[(0,r.jsx)(a.strong,{children:"Yazarlar :"})," ",(0,r.jsx)(a.a,{href:"https://github.com/boratanrikulu",children:(0,r.jsx)(a.strong,{children:"boratanrikulu"})})," ",(0,r.jsx)(a.strong,{children:"&&"})," ",(0,r.jsx)(a.a,{href:"https://github.com/hasantezcan",children:(0,r.jsx)(a.strong,{children:"hasantezcan"})})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h2,{children:"Server (Sunucu) Nedir ?"}),"\n",(0,r.jsx)(a.p,{children:"Server denince ak\u0131llara -filmlerin de etkisiyle- devasa b\xfcy\xfckl\xfckte hangarlar i\xe7ine s\u0131ra s\u0131ra istiflenmi\u015f, genelde siyah renkte dolaplar i\xe7inde bulunan, dikd\xf6rtgen \u015feklinde \xe7ekmeceler geliyor."}),"\n",(0,r.jsx)(a.p,{children:'Evet, ak\u0131llara gelen bu tablo ve tan\u0131m tamamen do\u011fru. Fakat bir "server" olu\u015fturmak i\xe7in t\xfcm bu sayd\u0131\u011f\u0131m\u0131z \u015feylere ihtiyac\u0131m\u0131z yok. Sadece bir bilgisayar, server olu\u015fturmak i\xe7in yeterli. Ve tabiki gerekli olan bir ileti\u015fim a\u011f\u0131.'}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"pwd",src:"/images/hafta3/0.jpg",width:"800"})}),"\n",(0,r.jsx)(a.p,{children:"Yani server dedi\u011fimiz \u015feyler de asl\u0131nda birer bilgisayard\u0131r."}),"\n",(0,r.jsx)(a.p,{children:"Bir bilgisayar\u0131n server olarak \xe7al\u0131\u015fabilmesi i\xe7in; gerekli baz\u0131 yaz\u0131l\u0131mlara ve kulland\u0131\u011f\u0131 verileri iletim a\u011f\u0131na itebilecek - \xe7ekebilecek g\xfcce sahip olmas\u0131 gerekir."}),"\n",(0,r.jsxs)(a.p,{children:["Bu ",(0,r.jsx)(a.strong,{children:"g\xfc\xe7"})," bazen en ba\u015fta anlatt\u0131\u011f\u0131m\u0131z o hollywood vari tablodaki serverlar\u0131n g\xfcc\xfc gibi devasa bir g\xfcce sahip olurken, bazen de 20 dolarl\u0131k bir bilgisayar olan Raspberry Pi'\u0131n g\xfcc\xfc olabilir."]}),"\n",(0,r.jsxs)(a.p,{children:["Server'lar\u0131 y\xf6netmek i\xe7in her durumda fiziksel olarak m\xfcdahale edemeyiz. Uzaktan eri\u015fip y\xf6netmemiz gerekir. Bu gibi durumlarda ",(0,r.jsx)(a.strong,{children:"SSH protokol\xfc"})," kullan\u0131r."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h2,{children:"SSH Protokol\xfc Nedir ?"}),"\n",(0,r.jsx)(a.p,{children:"SSH (Secure Shell), a\u011f \xfczerinde bulunan bir sunucuya ba\u011flanmaya ve ba\u011flan\u0131lan sunucu \xfczerinde komut \xe7al\u0131\u015ft\u0131rma, dosya transferi gibi i\u015flemleri ger\xe7ekle\u015ftirmeye olanak sa\u011flayan bir uzak sunucu ba\u011flant\u0131 protokol\xfcd\xfcr."}),"\n",(0,r.jsx)(a.p,{children:"SSH protokol\xfc; komut \xe7al\u0131\u015ft\u0131rma, dosya transferi gibi i\u015flemlerin d\u0131\u015f\u0131nda, g\xfcvenli ileti\u015fim kanallar\u0131 gerektiren durumlar\u0131n tamam\u0131nda kullan\u0131labilmektedir. \xd6rne\u011fin, POP3 mail protokol\xfc gibi ileti\u015fimini \u015fifrelenmemi\u015f \u015fekilde ger\xe7ekle\u015ftiren servisler SSH \xfczerinden aktar\u0131larak \u015fifreli ve g\xfcvenli duruma getirilebilirler."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH Kullan\u0131m\u0131"}),"\n",(0,r.jsx)(a.p,{children:"SSH'\u0131n genel olarak kullan\u0131m\u0131 olduk\xe7a basittir. A\u015fa\u011f\u0131daki gibi bir yap\u0131 ile uzak server'\u0131m\u0131za; kullan\u0131c\u0131 ad\u0131 ve parola bilgisini kullanarak eri\u015febiliriz."}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh kullanc\u0131_ad\u0131@server_ip\n"})}),"\n",(0,r.jsxs)(a.p,{children:["SSH'\u0131n varsay\u0131lan port'u 22'dir. Fakat genellikle -her ne kadar gereklili\u011fi tart\u0131\u015f\u0131lsa da- sunucularda bu port g\xfcvenlik sebebi ile de\u011fi\u015ftirilmektedir. Ba\u011flant\u0131 sa\u011flan\u0131rken, sunucunun SSH ba\u011flant\u0131s\u0131n\u0131 kabul etmek amac\u0131yla dinledi\u011fini port'u belirtmek i\xe7in ",(0,r.jsx)(a.strong,{children:"-p"})," parametresi kullan\u0131l\u0131r."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh kullanc\u0131_ad\u0131@server_ip -p port\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"Parola ile Ba\u011flant\u0131 Kurmak Neden G\xfcvenli De\u011fil ?"}),"\n",(0,r.jsx)(a.p,{children:"Az \xf6nce kullan\u0131c\u0131 ad\u0131 ve parola bilgisi sa\u011flayan uzakta bulunan server'\u0131m\u0131za eri\u015fim sa\u011flad\u0131k. Fakat sizce bu g\xfcvenli mi ?"}),"\n",(0,r.jsxs)(a.p,{children:["Bizim a\xe7\u0131m\u0131za g\xf6re server'\u0131m\u0131za ",(0,r.jsx)(a.strong,{children:"parola ile uzaktan ba\u011flanmak g\xfcvenli bir y\xf6ntem de\u011fildir."})]}),"\n",(0,r.jsx)(a.p,{children:"Bunun belli ba\u015fl\u0131 sebepleri vard\u0131r; ssh ba\u011flant\u0131s\u0131n\u0131n bruteforce i\u015flemine a\xe7\u0131k olmas\u0131, herkese a\xe7\u0131k ortamlarda parolan\u0131n elle girilmesi uzaktan izleyen ki\u015filer taraf\u0131ndan parolan\u0131n tespit edilmesine yol a\xe7abilecek olmas\u0131 gibi fakt\xf6rler \xf6rnek verilebilir."}),"\n",(0,r.jsx)(a.p,{children:"Bu y\xfczden, server'\u0131m\u0131za eri\u015fim sa\u011flarken, ssh-key kullanmam\u0131z daha kullan\u0131\u015fl\u0131 ve g\xfcvenli olacakt\u0131r."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH-Key Nedir ?"}),"\n",(0,r.jsx)(a.p,{children:"SSH-Key, parola kullanmadan SSH ba\u011flant\u0131lar\u0131 sa\u011flayabilmemizde kullan\u0131lan public ve private key \xe7iftine denir."}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH-Keygen ile Key Olu\u015fturulmas\u0131"}),"\n",(0,r.jsxs)(a.p,{children:["SSH-Key olu\u015fturmak olduk\xe7a basittir. A\u015fa\u011f\u0131daki komutu y\xfcr\xfctt\xfc\u011f\xfcn\xfczde size birka\xe7 soru sorduktan sonra key \xfcretilecektir. Key \xfcretimi sonucunda biri ",(0,r.jsx)(a.strong,{children:"public"})," di\u011feri ",(0,r.jsx)(a.strong,{children:"private"})," olmak \xfczere ",(0,r.jsx)(a.strong,{children:"iki adet key"})," olu\u015facakt\u0131r."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh-keygen\n"})}),"\n",(0,r.jsx)("p",{align:"center",children:(0,r.jsx)("img",{alt:"ssh-keygen",src:"/images/hafta3/1.png",width:"800"})}),"\n",(0,r.jsxs)(a.p,{children:["\xdcretilen keyler'den sonunda ",(0,r.jsx)(a.strong,{children:".pub"})," uzant\u0131s\u0131 bulunan sizin public key'inizdir. Bu key'i ba\u011flanmak istedi\u011finiz sunuculara eklemeniz gerekir."]}),"\n",(0,r.jsx)(a.p,{children:"Uzant\u0131s\u0131 bulunmayan key ise sizin private key'inizdir. Bu dosyay\u0131 kimse ile payla\u015fmamal\u0131s\u0131n\u0131z. SSH ile ba\u011flant\u0131 sa\u011flarken bu dosyay\u0131 kullanaca\u011f\u0131z."}),"\n",(0,r.jsxs)(a.p,{children:["Ek olarak private key'in izinleri ",(0,r.jsx)(a.strong,{children:"600"})," olarak ayarlanmal\u0131d\u0131r.",(0,r.jsx)(a.br,{}),"\n","Bunu uygulamak i\xe7in \xf6nceki haftan\u0131n dok\xfcman\u0131n\u0131 inceleyin : ",(0,r.jsx)(a.a,{href:"https://gnulinux.pausiber.xyz/haftalar/hafta-iki",children:(0,r.jsx)(a.strong,{children:"hafta-iki"})})]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:"SSH-Key Kullanarak Ba\u011flant\u0131 Sa\u011flanmas\u0131"}),"\n",(0,r.jsx)(a.p,{children:"SSH-Key kullanarak ba\u011flant\u0131 sa\u011flamak i\xe7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz."}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh kullanc\u0131_ad\u0131@server_ip\n"})}),"\n",(0,r.jsxs)(a.p,{children:["Ayr\u0131ca SSH-Key'i default path yerine ba\u015fka bir yere kay\u0131t ettiyseniz ",(0,r.jsx)(a.strong,{children:"-i"})," parametresini kullanarak bu path'i vermeniz gerekmektedir."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] ssh -i /path/to/private_key kullanc\u0131_ad\u0131@server_ip\n"})}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h4,{children:'".ssh/config" Dosyas\u0131n\u0131n Kullan\u0131m\u0131'}),"\n",(0,r.jsxs)(a.p,{children:["E\u011fer birden fazla sunucu ile u\u011fra\u015f\u0131yorsan\u0131z, her ba\u011flant\u0131 kurma a\u015famas\u0131nda IP girmek tam bir i\u015fkence. Bunun \xf6n\xfcne ge\xe7mek i\xe7in bilgisayar\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir ",(0,r.jsx)(a.strong,{children:(0,r.jsx)(a.code,{children:"${HOME}/.ssh/config"})})," dosyas\u0131 olu\u015fturabilirsiniz. Bu sayede IP'leri girmeden direkt olarak ",(0,r.jsx)(a.strong,{children:"ssh server_name"})," diyerek sunucunuz ile ba\u011flant\u0131 sa\u011flayabilirsiniz."]}),"\n",(0,r.jsxs)(a.p,{children:["Bunun i\xe7in ",(0,r.jsx)(a.strong,{children:(0,r.jsx)(a.code,{children:"${HOME}/.ssh/config"})})," dosyas\u0131n\u0131 olu\u015fturun."]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t[~$] touch ${HOME}/.ssh/config\n"})}),"\n",(0,r.jsx)(a.p,{children:"Ard\u0131ndan dosya i\xe7eri\u011fini a\u015fa\u011f\u0131daki yap\u0131ya uygun \u015fekilde ayarlay\u0131n."}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{children:"\t\tHost\t\t\tserver_name\n\t\tHostName\t\tserver_ip\n\t\tUser\t\t\tusername\n\t\tPort\t\t\t22\n\t\tIdentityFile\t/path/to/ssh-key\n"})}),"\n",(0,r.jsxs)(a.p,{children:["Art\u0131k herhangi bir \u015fekilde IP girmek yerine direkt olarak ",(0,r.jsx)(a.strong,{children:"ssh server_name"})," diyerek sunucunuza ba\u011flanabilirsiniz."]}),"\n",(0,r.jsx)("hr",{}),"\n",(0,r.jsx)(a.h2,{children:"Bu hafta neler yapt\u0131k ?"}),"\n",(0,r.jsxs)(a.ul,{children:["\n",(0,r.jsx)(a.li,{children:"Server'\u0131n ne oldu\u011funu,"}),"\n",(0,r.jsx)(a.li,{children:"SSH protokol\xfcn\xfcn ne oldu\u011funu,"}),"\n",(0,r.jsx)(a.li,{children:"SSH kullan\u0131m\u0131n\u0131,"}),"\n",(0,r.jsx)(a.li,{children:"SSH-Key'in ne oldu\u011funu,"}),"\n",(0,r.jsx)(a.li,{children:"SSH-Key kullanarak ba\u011flant\u0131 kurmay\u0131,"}),"\n",(0,r.jsx)(a.li,{children:"Parola yerine neden SSH-Key kulland\u0131\u011f\u0131m\u0131z\u0131 \xf6\u011frendik."}),"\n"]})]})},n=Object.assign({},(0,s.ah)(),e.components),i=n.wrapper;return i?(0,r.jsx)(i,u({},e,{children:(0,r.jsx)(a,{})})):a()}var o=(0,r.jsx)(c,{});function h(e){return(0,l.withSSG)((0,i.Z)({filename:"hafta-uc.mdx",route:"/haftalar/hafta-uc",meta:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"},pageMap:[{name:"haftalar",children:[{name:"hafta-bir",route:"/haftalar/hafta-bir",frontMatter:{title:"Hafta 1",date:"2022/5/5",description:"Linux'a giri\u015f.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-iki",route:"/haftalar/hafta-iki",frontMatter:{title:"Hafta 2",date:"2021/5/5",description:"Linux'ta kullan\u0131c\u0131-grup y\xf6netimini ve dosya-dizin izinlerini kavratmak.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-sifir",route:"/haftalar/hafta-sifir",frontMatter:{title:"Hafta 0",date:"2023/5/5",description:"Linux'un genel bir tan\u0131m\u0131. Gerekli kurulumlar\u0131n ger\xe7ekle\u015ftirilmesi.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"hafta-uc",route:"/haftalar/hafta-uc",frontMatter:{title:"Hafta 3",date:"2020/5/5",description:"Server kavram\u0131n\u0131n a\xe7\u0131klanmas\u0131, SSH Kullan\u0131m\u0131, Zamanlanm\u0131\u015f g\xf6revler olu\u015fturulmas\u0131.",tag:"gnu/linux",author:"Enes Kaya"}},{name:"index",route:"/haftalar",frontMatter:{type:"posts",title:"Haftalar",date:"2021-03-18T00:00:00.000Z"}}],route:"/haftalar"},{name:"index",route:"/",frontMatter:{type:"page",title:"Hakk\u0131nda",date:"2021-03-19T00:00:00.000Z"}},{name:"tags",children:[{name:"[tag]",route:"/tags/[tag]",frontMatter:{type:"tag",title:"Tagged Posts"}}],route:"/tags"}]},t.Z))(u({},e,{children:o}))}}},function(e){e.O(0,[774,353,888,179],(function(){return a=7805,e(e.s=a);var a}));var a=e.O();_N_E=a}]); \ No newline at end of file diff --git a/_next/static/chunks/webpack-4ae51d4b0d2dc9a6.js b/_next/static/chunks/webpack-b44e813888cc2761.js similarity index 95% rename from _next/static/chunks/webpack-4ae51d4b0d2dc9a6.js rename to _next/static/chunks/webpack-b44e813888cc2761.js index d0408ac..16225fb 100644 --- a/_next/static/chunks/webpack-4ae51d4b0d2dc9a6.js +++ b/_next/static/chunks/webpack-b44e813888cc2761.js @@ -1 +1 @@ -!function(){"use strict";var e={},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}},u=!0;try{e[r](i,i.exports,n),u=!1}finally{u&&delete t[r]}return i.exports}n.m=e,function(){var e=[];n.O=function(t,r,o,i){if(!r){var u=1/0;for(l=0;l=i)&&Object.keys(n.O).every((function(e){return n.O[e](r[c])}))?r.splice(c--,1):(a=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[r,o,i]}}(),n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))},n.u=function(e){return"static/chunks/"+e+".706d50bd981881d0.js"},n.miniCssF=function(e){return"static/css/5076a516e8a2b633.css"},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t="_N_E:";n.l=function(r,o,i,u){if(e[r])e[r].push(o);else{var a,c;if(void 0!==i)for(var f=document.getElementsByTagName("script"),l=0;l=i)&&Object.keys(n.O).every((function(e){return n.O[e](r[c])}))?r.splice(c--,1):(a=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[r,o,i]}}(),n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))},n.u=function(e){return"static/chunks/"+e+".706d50bd981881d0.js"},n.miniCssF=function(e){return"static/css/c387da0ff70a01dd.css"},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t="_N_E:";n.l=function(r,o,i,u){if(e[r])e[r].push(o);else{var a,c;if(void 0!==i)for(var f=document.getElementsByTagName("script"),l=0;lli{position:relative;padding-left:1.75em}.prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#6b7280;left:0}.prose ul>li{position:relative;padding-left:1.75em}.prose ul>li:before{content:"";position:absolute;background-color:#d1d5db;border-radius:50%;width:.375em;height:.375em;top:calc(.875em - .1875em);left:.25em}.prose hr{border-color:#e5e7eb;border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose blockquote{font-weight:500;font-style:italic;color:#111827;border-left-width:.25rem;border-left-color:#e5e7eb;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose blockquote p:first-of-type:before{content:open-quote}.prose blockquote p:last-of-type:after{content:close-quote}.prose h1{color:#111827;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{color:#111827;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h3,.prose h4{color:#111827;font-weight:600}.prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose figure figcaption{color:#6b7280;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose code{color:#111827;font-weight:600;font-size:.875em}.prose code:after,.prose code:before{content:"`"}.prose a code{color:#111827}.prose pre{color:#e5e7eb;background-color:#1f2937;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose pre code{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:400;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose pre code:after,.prose pre code:before{content:none}.prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose thead{color:#111827;font-weight:600;border-bottom-width:1px;border-bottom-color:#d1d5db}.prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose tbody tr{border-bottom-width:1px;border-bottom-color:#e5e7eb}.prose tbody tr:last-child{border-bottom-width:0}.prose tbody td{vertical-align:top;padding:.5714286em}.prose{font-size:1rem;line-height:1.75}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose figure,.prose img,.prose video{margin-top:2em;margin-bottom:2em}.prose figure>*{margin-top:0;margin-bottom:0}.prose h2 code{font-size:.875em}.prose h3 code{font-size:.9em}.prose ol,.prose ul{margin-top:1.25em;margin-bottom:1.25em}.prose li{margin-top:.5em;margin-bottom:.5em}.prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.prose>ul>li>:first-child{margin-top:1.25em}.prose>ul>li>:last-child{margin-bottom:1.25em}.prose>ol>li>:first-child{margin-top:1.25em}.prose>ol>li>:last-child{margin-bottom:1.25em}.prose ol ol,.prose ol ul,.prose ul ol,.prose ul ul{margin-top:.75em;margin-bottom:.75em}.prose h2+*,.prose h3+*,.prose h4+*,.prose hr+*{margin-top:0}.prose thead th:first-child{padding-left:0}.prose thead th:last-child{padding-right:0}.prose tbody td:first-child{padding-left:0}.prose tbody td:last-child{padding-right:0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm p{margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm [class~=lead]{font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm blockquote{margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.1111111em}.prose-sm h1{font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm h2{font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm h3{font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm h4{margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm figure,.prose-sm img,.prose-sm video{margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm figure>*{margin-top:0;margin-bottom:0}.prose-sm figure figcaption{font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm code{font-size:.8571429em}.prose-sm h2 code{font-size:.9em}.prose-sm h3 code{font-size:.8888889em}.prose-sm pre{font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding:.6666667em 1em}.prose-sm ol,.prose-sm ul{margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm li{margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm ol>li{padding-left:1.5714286em}.prose-sm ol>li:before{left:0}.prose-sm ul>li{padding-left:1.5714286em}.prose-sm ul>li:before{height:.3571429em;width:.3571429em;top:calc(.8571429em - .1785714em);left:.2142857em}.prose-sm>ul>li p{margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm>ul>li>:first-child{margin-top:1.1428571em}.prose-sm>ul>li>:last-child{margin-bottom:1.1428571em}.prose-sm>ol>li>:first-child{margin-top:1.1428571em}.prose-sm>ol>li>:last-child{margin-bottom:1.1428571em}.prose-sm ol ol,.prose-sm ol ul,.prose-sm ul ol,.prose-sm ul ul{margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm hr{margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm h2+*,.prose-sm h3+*,.prose-sm h4+*,.prose-sm hr+*{margin-top:0}.prose-sm table{font-size:.8571429em;line-height:1.5}.prose-sm thead th{padding-right:1em;padding-bottom:.6666667em;padding-left:1em}.prose-sm thead th:first-child{padding-left:0}.prose-sm thead th:last-child{padding-right:0}.prose-sm tbody td{padding:.6666667em 1em}.prose-sm tbody td:first-child{padding-left:0}.prose-sm tbody td:last-child{padding-right:0}.prose-sm>:first-child{margin-top:0}.prose-sm>:last-child{margin-bottom:0}.dark .dark\:prose-dark{color:#d1d5db}.dark .dark\:prose-dark [class~=lead]{color:#9ca3af}.dark .dark\:prose-dark a,.dark .dark\:prose-dark strong{color:#f3f4f6}.dark .dark\:prose-dark ul>li:before{background-color:#374151}.dark .dark\:prose-dark hr{border-color:#1f2937}.dark .dark\:prose-dark blockquote{color:#f3f4f6;border-left-color:#1f2937}.dark .dark\:prose-dark a code,.dark .dark\:prose-dark code,.dark .dark\:prose-dark h1,.dark .dark\:prose-dark h2,.dark .dark\:prose-dark h3,.dark .dark\:prose-dark h4{color:#f3f4f6}.dark .dark\:prose-dark pre{color:#e5e7eb;background-color:#1f2937}.dark .dark\:prose-dark thead{color:#f3f4f6;border-bottom-color:#374151}.dark .dark\:prose-dark tbody tr{border-bottom-color:#1f2937}.mx-auto{margin-left:auto;margin-right:auto}.mr-1{margin-right:.25rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.flex-1{flex:1 1}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-end{justify-content:flex-end}.rounded-md{border-radius:.375rem}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.p-2{padding:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.pt-20{padding-top:5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.italic{font-style:italic}.leading-5{line-height:1.25rem}.text-current{color:currentColor}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.no-underline{text-decoration:none}*,:after,:before{--tw-shadow:0 0 #0000;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}body{padding-left:1rem;padding-right:1rem}article{display:block;padding-top:5rem;padding-bottom:8rem}article,article img{margin-left:auto;margin-right:auto}a.subheading{text-decoration:none!important;color:unset!important}h1{letter-spacing:-.03em}.subheading-anchor{margin-top:-2em;display:inline-block;position:absolute;width:1px}.subheading-anchor+a:hover .anchor-icon{opacity:1}.anchor-icon{opacity:0;margin-left:.5rem;--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.meta-line{margin-bottom:2rem;display:flex;align-items:center;justify-content:flex-end}.meta{margin-right:2rem;flex:1 1;--tw-text-opacity:1}.meta,.meta .tag{color:rgba(156,163,175,var(--tw-text-opacity))}.meta .tag{margin-right:.25rem;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:.375rem;background-color:rgba(229,231,235,var(--tw-bg-opacity));padding-left:.25rem;padding-right:.25rem;font-size:.875rem;line-height:1.25rem;text-decoration:none}.dark .meta .tag,.meta .tag{--tw-bg-opacity:1;--tw-text-opacity:1}.dark .meta .tag{background-color:rgba(156,163,175,var(--tw-bg-opacity));color:rgba(243,244,246,var(--tw-text-opacity))}.meta .tag:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.meta .tag:active{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.meta-line .meta-back{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.nav-line{margin-bottom:2rem;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;text-align:right}.nav-line .nav-link{margin-left:.75rem;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.nav-line span.nav-link{margin-left:.75rem;cursor:default;--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.post-item .post-item-date{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.post-item .post-item-more{margin-left:.25rem;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.post-item .post-item-desc{margin-bottom:.5em;--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.post-item .post-item-title{text-decoration:none;color:unset}@media (min-width:768px){.md\:prose{color:#374151;max-width:65ch}.md\:prose [class~=lead]{color:#4b5563;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.md\:prose a{color:#111827;text-decoration:underline;font-weight:500}.md\:prose strong{color:#111827;font-weight:600}.md\:prose ol[type=A]{--list-counter-style:upper-alpha}.md\:prose ol[type=a]{--list-counter-style:lower-alpha}.md\:prose ol[type=A s]{--list-counter-style:upper-alpha}.md\:prose ol[type=a s]{--list-counter-style:lower-alpha}.md\:prose ol[type=i],.md\:prose ol[type=i s]{--list-counter-style:lower-roman}.md\:prose ol[type="1"]{--list-counter-style:decimal}.md\:prose ol>li{position:relative;padding-left:1.75em}.md\:prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#6b7280;left:0}.md\:prose ul>li{position:relative;padding-left:1.75em}.md\:prose ul>li:before{content:"";position:absolute;background-color:#d1d5db;border-radius:50%;width:.375em;height:.375em;top:calc(.875em - .1875em);left:.25em}.md\:prose hr{border-color:#e5e7eb;border-top-width:1px;margin-top:3em;margin-bottom:3em}.md\:prose blockquote{font-weight:500;font-style:italic;color:#111827;border-left-width:.25rem;border-left-color:#e5e7eb;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.md\:prose blockquote p:first-of-type:before{content:open-quote}.md\:prose blockquote p:last-of-type:after{content:close-quote}.md\:prose h1{color:#111827;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.md\:prose h2{color:#111827;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.md\:prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.md\:prose h3,.md\:prose h4{color:#111827;font-weight:600}.md\:prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.md\:prose figure figcaption{color:#6b7280;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.md\:prose code{color:#111827;font-weight:600;font-size:.875em}.md\:prose code:after,.md\:prose code:before{content:"`"}.md\:prose a code{color:#111827}.md\:prose pre{color:#e5e7eb;background-color:#1f2937;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.md\:prose pre code{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:400;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.md\:prose pre code:after,.md\:prose pre code:before{content:none}.md\:prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.md\:prose thead{color:#111827;font-weight:600;border-bottom-width:1px;border-bottom-color:#d1d5db}.md\:prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.md\:prose tbody tr{border-bottom-width:1px;border-bottom-color:#e5e7eb}.md\:prose tbody tr:last-child{border-bottom-width:0}.md\:prose tbody td{vertical-align:top;padding:.5714286em}.md\:prose{font-size:1rem;line-height:1.75}.md\:prose p{margin-top:1.25em;margin-bottom:1.25em}.md\:prose figure,.md\:prose img,.md\:prose video{margin-top:2em;margin-bottom:2em}.md\:prose figure>*{margin-top:0;margin-bottom:0}.md\:prose h2 code{font-size:.875em}.md\:prose h3 code{font-size:.9em}.md\:prose ol,.md\:prose ul{margin-top:1.25em;margin-bottom:1.25em}.md\:prose li{margin-top:.5em;margin-bottom:.5em}.md\:prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.md\:prose>ul>li>:first-child{margin-top:1.25em}.md\:prose>ul>li>:last-child{margin-bottom:1.25em}.md\:prose>ol>li>:first-child{margin-top:1.25em}.md\:prose>ol>li>:last-child{margin-bottom:1.25em}.md\:prose ol ol,.md\:prose ol ul,.md\:prose ul ol,.md\:prose ul ul{margin-top:.75em;margin-bottom:.75em}.md\:prose h2+*,.md\:prose h3+*,.md\:prose h4+*,.md\:prose hr+*{margin-top:0}.md\:prose thead th:first-child{padding-left:0}.md\:prose thead th:last-child{padding-right:0}.md\:prose tbody td:first-child{padding-left:0}.md\:prose tbody td:last-child{padding-right:0}.md\:prose>:first-child{margin-top:0}.md\:prose>:last-child{margin-bottom:0}}@font-face{font-family:Inter var;font-style:normal;font-weight:100 900;font-display:block;src:url(/fonts/Inter-roman.latin.var.woff2) format("woff2")}@font-face{font-family:Inter var;font-style:italic;font-weight:100 900;font-display:block;src:url(/fonts/Inter-italic.latin.var.woff2) format("woff2");font-named-instance:"Italic"}body{font-family:Inter var,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;-webkit-font-smoothing:subpixel-antialiased;font-feature-settings:"case" 1,"cpsp" 1,"dlig" 1,"cv01" 1,"cv02","cv03" 1,"cv04" 1,"liga","clig","calt";font-variation-settings:"wght" 450;font-variant:common-ligatures contextual;letter-spacing:-.02em}b,h3,h4,h5,h6,strong{font-variation-settings:"wght" 650}h1{font-variation-settings:"wght" 850}h2{font-variation-settings:"wght" 750}@media screen and (-webkit-min-device-pixel-ratio:1.5),screen and (min-device-pixel-ratio:1.5),screen and (min-resolution:1.5dppx){body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}details summary{cursor:pointer}img.next-image{margin:0}.prose a{color:#0074de}.nav-line .nav-link{color:#69778c} \ No newline at end of file diff --git a/_next/static/css/c387da0ff70a01dd.css b/_next/static/css/c387da0ff70a01dd.css new file mode 100644 index 0000000..5d6fa34 --- /dev/null +++ b/_next/static/css/c387da0ff70a01dd.css @@ -0,0 +1,3 @@ +/*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com */ + +/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:#374151;max-width:65ch}.prose [class~=lead]{color:#4b5563;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose a{color:#111827;text-decoration:underline;font-weight:500}.prose strong{color:#111827;font-weight:600}.prose ol[type=A]{--list-counter-style:upper-alpha}.prose ol[type=a]{--list-counter-style:lower-alpha}.prose ol[type=A s]{--list-counter-style:upper-alpha}.prose ol[type=a s]{--list-counter-style:lower-alpha}.prose ol[type=i],.prose ol[type=i s]{--list-counter-style:lower-roman}.prose ol[type="1"]{--list-counter-style:decimal}.prose ol>li{position:relative;padding-left:1.75em}.prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#6b7280;left:0}.prose ul>li{position:relative;padding-left:1.75em}.prose ul>li:before{content:"";position:absolute;background-color:#d1d5db;border-radius:50%;width:.375em;height:.375em;top:calc(.875em - .1875em);left:.25em}.prose hr{border-color:#e5e7eb;border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose blockquote{font-weight:500;font-style:italic;color:#111827;border-left-width:.25rem;border-left-color:#e5e7eb;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose blockquote p:first-of-type:before{content:open-quote}.prose blockquote p:last-of-type:after{content:close-quote}.prose h1{color:#111827;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{color:#111827;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h3,.prose h4{color:#111827;font-weight:600}.prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose figure figcaption{color:#6b7280;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose code{color:#111827;font-weight:600;font-size:.875em}.prose code:after,.prose code:before{content:"`"}.prose a code{color:#111827}.prose pre{color:#e5e7eb;background-color:#1f2937;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose pre code{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:400;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose pre code:after,.prose pre code:before{content:none}.prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose thead{color:#111827;font-weight:600;border-bottom-width:1px;border-bottom-color:#d1d5db}.prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose tbody tr{border-bottom-width:1px;border-bottom-color:#e5e7eb}.prose tbody tr:last-child{border-bottom-width:0}.prose tbody td{vertical-align:top;padding:.5714286em}.prose{font-size:1rem;line-height:1.75}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose figure,.prose img,.prose video{margin-top:2em;margin-bottom:2em}.prose figure>*{margin-top:0;margin-bottom:0}.prose h2 code{font-size:.875em}.prose h3 code{font-size:.9em}.prose ol,.prose ul{margin-top:1.25em;margin-bottom:1.25em}.prose li{margin-top:.5em;margin-bottom:.5em}.prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.prose>ul>li>:first-child{margin-top:1.25em}.prose>ul>li>:last-child{margin-bottom:1.25em}.prose>ol>li>:first-child{margin-top:1.25em}.prose>ol>li>:last-child{margin-bottom:1.25em}.prose ol ol,.prose ol ul,.prose ul ol,.prose ul ul{margin-top:.75em;margin-bottom:.75em}.prose h2+*,.prose h3+*,.prose h4+*,.prose hr+*{margin-top:0}.prose thead th:first-child{padding-left:0}.prose thead th:last-child{padding-right:0}.prose tbody td:first-child{padding-left:0}.prose tbody td:last-child{padding-right:0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm p{margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm [class~=lead]{font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm blockquote{margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.1111111em}.prose-sm h1{font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm h2{font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm h3{font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm h4{margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm figure,.prose-sm img,.prose-sm video{margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm figure>*{margin-top:0;margin-bottom:0}.prose-sm figure figcaption{font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm code{font-size:.8571429em}.prose-sm h2 code{font-size:.9em}.prose-sm h3 code{font-size:.8888889em}.prose-sm pre{font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding:.6666667em 1em}.prose-sm ol,.prose-sm ul{margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm li{margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm ol>li{padding-left:1.5714286em}.prose-sm ol>li:before{left:0}.prose-sm ul>li{padding-left:1.5714286em}.prose-sm ul>li:before{height:.3571429em;width:.3571429em;top:calc(.8571429em - .1785714em);left:.2142857em}.prose-sm>ul>li p{margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm>ul>li>:first-child{margin-top:1.1428571em}.prose-sm>ul>li>:last-child{margin-bottom:1.1428571em}.prose-sm>ol>li>:first-child{margin-top:1.1428571em}.prose-sm>ol>li>:last-child{margin-bottom:1.1428571em}.prose-sm ol ol,.prose-sm ol ul,.prose-sm ul ol,.prose-sm ul ul{margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm hr{margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm h2+*,.prose-sm h3+*,.prose-sm h4+*,.prose-sm hr+*{margin-top:0}.prose-sm table{font-size:.8571429em;line-height:1.5}.prose-sm thead th{padding-right:1em;padding-bottom:.6666667em;padding-left:1em}.prose-sm thead th:first-child{padding-left:0}.prose-sm thead th:last-child{padding-right:0}.prose-sm tbody td{padding:.6666667em 1em}.prose-sm tbody td:first-child{padding-left:0}.prose-sm tbody td:last-child{padding-right:0}.prose-sm>:first-child{margin-top:0}.prose-sm>:last-child{margin-bottom:0}.dark .dark\:prose-dark{color:#d1d5db}.dark .dark\:prose-dark [class~=lead]{color:#9ca3af}.dark .dark\:prose-dark a,.dark .dark\:prose-dark strong{color:#f3f4f6}.dark .dark\:prose-dark ul>li:before{background-color:#374151}.dark .dark\:prose-dark hr{border-color:#1f2937}.dark .dark\:prose-dark blockquote{color:#f3f4f6;border-left-color:#1f2937}.dark .dark\:prose-dark a code,.dark .dark\:prose-dark code,.dark .dark\:prose-dark h1,.dark .dark\:prose-dark h2,.dark .dark\:prose-dark h3,.dark .dark\:prose-dark h4{color:#f3f4f6}.dark .dark\:prose-dark pre{color:#e5e7eb;background-color:#1f2937}.dark .dark\:prose-dark thead{color:#f3f4f6;border-bottom-color:#374151}.dark .dark\:prose-dark tbody tr{border-bottom-color:#1f2937}.mx-auto{margin-left:auto;margin-right:auto}.mr-1{margin-right:.25rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.flex-1{flex:1 1}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-end{justify-content:flex-end}.rounded-md{border-radius:.375rem}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.p-2{padding:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.pt-20{padding-top:5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.italic{font-style:italic}.leading-5{line-height:1.25rem}.text-current{color:currentColor}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.no-underline{text-decoration:none}*,:after,:before{--tw-shadow:0 0 #0000;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}body{padding-left:1rem;padding-right:1rem}article{display:block;padding-top:5rem;padding-bottom:8rem}article,article img{margin-left:auto;margin-right:auto}a.subheading{text-decoration:none!important;color:unset!important}h1{letter-spacing:-.03em}.subheading-anchor{margin-top:-2em;display:inline-block;position:absolute;width:1px}.subheading-anchor+a:hover .anchor-icon{opacity:1}.anchor-icon{opacity:0;margin-left:.5rem;--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.meta-line{margin-bottom:2rem;display:flex;align-items:center;justify-content:flex-end}.meta{margin-right:2rem;flex:1 1;--tw-text-opacity:1}.meta,.meta .tag{color:rgba(156,163,175,var(--tw-text-opacity))}.meta .tag{margin-right:.25rem;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:.375rem;background-color:rgba(229,231,235,var(--tw-bg-opacity));padding-left:.25rem;padding-right:.25rem;font-size:.875rem;line-height:1.25rem;text-decoration:none}.dark .meta .tag,.meta .tag{--tw-bg-opacity:1;--tw-text-opacity:1}.dark .meta .tag{background-color:rgba(156,163,175,var(--tw-bg-opacity));color:rgba(243,244,246,var(--tw-text-opacity))}.meta .tag:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.meta .tag:active{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.meta-line .meta-back{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.nav-line{margin-bottom:2rem;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;text-align:right}.nav-line .nav-link{margin-left:.75rem;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.nav-line span.nav-link{margin-left:.75rem;cursor:default;--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.post-item .post-item-date{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.post-item .post-item-more{margin-left:.25rem;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.post-item .post-item-desc{margin-bottom:.5em;--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.post-item .post-item-title{text-decoration:none;color:unset}@media (min-width:768px){.md\:prose{color:#374151;max-width:65ch}.md\:prose [class~=lead]{color:#4b5563;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.md\:prose a{color:#111827;text-decoration:underline;font-weight:500}.md\:prose strong{color:#111827;font-weight:600}.md\:prose ol[type=A]{--list-counter-style:upper-alpha}.md\:prose ol[type=a]{--list-counter-style:lower-alpha}.md\:prose ol[type=A s]{--list-counter-style:upper-alpha}.md\:prose ol[type=a s]{--list-counter-style:lower-alpha}.md\:prose ol[type=i],.md\:prose ol[type=i s]{--list-counter-style:lower-roman}.md\:prose ol[type="1"]{--list-counter-style:decimal}.md\:prose ol>li{position:relative;padding-left:1.75em}.md\:prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#6b7280;left:0}.md\:prose ul>li{position:relative;padding-left:1.75em}.md\:prose ul>li:before{content:"";position:absolute;background-color:#d1d5db;border-radius:50%;width:.375em;height:.375em;top:calc(.875em - .1875em);left:.25em}.md\:prose hr{border-color:#e5e7eb;border-top-width:1px;margin-top:3em;margin-bottom:3em}.md\:prose blockquote{font-weight:500;font-style:italic;color:#111827;border-left-width:.25rem;border-left-color:#e5e7eb;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.md\:prose blockquote p:first-of-type:before{content:open-quote}.md\:prose blockquote p:last-of-type:after{content:close-quote}.md\:prose h1{color:#111827;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.md\:prose h2{color:#111827;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.md\:prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.md\:prose h3,.md\:prose h4{color:#111827;font-weight:600}.md\:prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.md\:prose figure figcaption{color:#6b7280;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.md\:prose code{color:#111827;font-weight:600;font-size:.875em}.md\:prose code:after,.md\:prose code:before{content:"`"}.md\:prose a code{color:#111827}.md\:prose pre{color:#e5e7eb;background-color:#1f2937;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.md\:prose pre code{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:400;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.md\:prose pre code:after,.md\:prose pre code:before{content:none}.md\:prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.md\:prose thead{color:#111827;font-weight:600;border-bottom-width:1px;border-bottom-color:#d1d5db}.md\:prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.md\:prose tbody tr{border-bottom-width:1px;border-bottom-color:#e5e7eb}.md\:prose tbody tr:last-child{border-bottom-width:0}.md\:prose tbody td{vertical-align:top;padding:.5714286em}.md\:prose{font-size:1rem;line-height:1.75}.md\:prose p{margin-top:1.25em;margin-bottom:1.25em}.md\:prose figure,.md\:prose img,.md\:prose video{margin-top:2em;margin-bottom:2em}.md\:prose figure>*{margin-top:0;margin-bottom:0}.md\:prose h2 code{font-size:.875em}.md\:prose h3 code{font-size:.9em}.md\:prose ol,.md\:prose ul{margin-top:1.25em;margin-bottom:1.25em}.md\:prose li{margin-top:.5em;margin-bottom:.5em}.md\:prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.md\:prose>ul>li>:first-child{margin-top:1.25em}.md\:prose>ul>li>:last-child{margin-bottom:1.25em}.md\:prose>ol>li>:first-child{margin-top:1.25em}.md\:prose>ol>li>:last-child{margin-bottom:1.25em}.md\:prose ol ol,.md\:prose ol ul,.md\:prose ul ol,.md\:prose ul ul{margin-top:.75em;margin-bottom:.75em}.md\:prose h2+*,.md\:prose h3+*,.md\:prose h4+*,.md\:prose hr+*{margin-top:0}.md\:prose thead th:first-child{padding-left:0}.md\:prose thead th:last-child{padding-right:0}.md\:prose tbody td:first-child{padding-left:0}.md\:prose tbody td:last-child{padding-right:0}.md\:prose>:first-child{margin-top:0}.md\:prose>:last-child{margin-bottom:0}}.lb-icon-close{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT5jbG9zZS1saW5lPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9ImNsb3NlLWxpbmUiIHVuaWNvZGU9IiYjeGVlZTE7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggIGZpbGw9IiNmZmZmZmYiIGQ9Ik03NjIuNSAyMDBsMzcuNSAzNy41LTI2Mi41IDI2Mi41IDI2Mi41IDI2Mi41LTM3LjUgMzcuNS0yNjIuNS0yNjIuNS0yNjIuNSAyNjIuNS0zNy41LTM3LjUgMjYyLjUtMjYyLjUtMjYyLjUtMjYyLjUgMzcuNS0zNy41IDI2Mi41IDI2Mi41eiIvPgo8L3N2Zz4=")}.lb-icon-arrow{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT5hcnJvdy1sZWZ0PC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9ImFycm93LWxlZnQiIHVuaWNvZGU9IiYjeGVhNWM7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTc3Ny40IDQyNy42aC0zNDMuMjk5OTk5OTk5OTk5OTVsMTI3LjUtMTI3LjVjOC43OTk5OTk5OTk5OTk5NTUtOC44MDAwMDAwMDAwMDAwMTEgOC43OTk5OTk5OTk5OTk5NTUtMjMuMTAwMDAwMDAwMDAwMDIzIDAtMzEuOTAwMDAwMDAwMDAwMDM0bC01My42MDAwMDAwMDAwMDAwMi01My41OTk5OTk5OTk5OTk5OTRjLTguODAwMDAwMDAwMDAwMDExLTguNzk5OTk5OTk5OTk5OTgzLTIzLjEwMDAwMDAwMDAwMDAyMy04Ljc5OTk5OTk5OTk5OTk4My0zMS44OTk5OTk5OTk5OTk5NzcgMGwtMjY5LjUgMjY5LjRjLTguODAwMDAwMDAwMDAwMDExIDguODAwMDAwMDAwMDAwMDExLTguODAwMDAwMDAwMDAwMDExIDIzLjEwMDAwMDAwMDAwMDAyMy0yLjg0MjE3MDk0MzA0MDQwMWUtMTQgMzEuODk5OTk5OTk5OTk5OTc3bDI2OS41IDI2OS41YzguNzk5OTk5OTk5OTk5OTU1IDguODAwMDAwMDAwMDAwMDY4IDIzLjA5OTk5OTk5OTk5OTk2NiA4LjgwMDAwMDAwMDAwMDA2OCAzMS44OTk5OTk5OTk5OTk5NzcgMGw1My42MDAwMDAwMDAwMDAwMi01My42MDAwMDAwMDAwMDAwMmM4Ljc5OTk5OTk5OTk5OTk1NS04Ljc5OTk5OTk5OTk5OTk1NSA4Ljc5OTk5OTk5OTk5OTk1NS0yMy4wOTk5OTk5OTk5OTk5MSAwLTMxLjg5OTk5OTk5OTk5OTk3N2wtMTM2LjkwMDAwMDAwMDAwMDAzLTEzNi43OTk5OTk5OTk5OTk5NWgzNTIuN2MxMi41IDAgMjIuNjAwMDAwMDAwMDAwMDIzLTEwLjEwMDAwMDAwMDAwMDAyMyAyMi42MDAwMDAwMDAwMDAwMjMtMjIuNjAwMDAwMDAwMDAwMDIzdi05MC4zMDAwMDAwMDAwMDAwMWMwLTEyLjUtMTAuMTAwMDAwMDAwMDAwMDIzLTIyLjU5OTk5OTk5OTk5OTk2Ni0yMi42MDAwMDAwMDAwMDAwMjMtMjIuNTk5OTk5OTk5OTk5OTY2eiIvPgo8L3N2Zz4=")}.lb-icon-zoomin{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51aS16b29tLWluPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InVpLXpvb20taW4iIHVuaWNvZGU9IiYjeGVjOTc7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTk4Mi4yIDc4OC42bC0yMzQuOTAwMDAwMDAwMDAwMS0yMTZjMjcuMTAwMDAwMDAwMDAwMDIzLTUzLjM5OTk5OTk5OTk5OTk4IDQyLjYwMDAwMDAwMDAwMDAyLTExMy42MDAwMDAwMDAwMDAwMiA0Mi42MDAwMDAwMDAwMDAwMi0xNzcuNzAwMDAwMDAwMDAwMDUgMC0yMTguMDk5OTk5OTk5OTk5OTctMTc2Ljc5OTk5OTk5OTk5OTk1LTM5NC45LTM5NS0zOTQuOS0yMTcuOTk5OTk5OTk5OTk5OTcgMC0zOTQuOSAxNzYuOC0zOTQuOSAzOTQuOSAwIDIxOC4yMDAwMDAwMDAwMDAwNSAxNzYuOSAzOTUgMzk0LjkgMzk1IDY0IDAgMTI0LjIwMDAwMDAwMDAwMDA1LTE1LjUgMTc3LjYwMDAwMDAwMDAwMDAyLTQyLjVsMjE2IDIzNWMyMSAyMi44MDAwMDAwMDAwMDAwNjggNTYuMTAwMDAwMDAwMDAwMDIgMjMuNSA3OC4xMDAwMDAwMDAwMDAwMiAxLjYwMDAwMDAwMDAwMDAyMjdsMTE3LjE5OTk5OTk5OTk5OTkzLTExNy4yOTk5OTk5OTk5OTk5NWMyMi0yMiAyMS4yMDAwMDAwMDAwMDAwNDUtNTcuMTAwMDAwMDAwMDAwMDItMS41OTk5OTk5OTk5OTk5MDktNzguMTAwMDAwMDAwMDAwMDJ6IG0tNTg3LjMwMDAwMDAwMDAwMDEtMTUyLjcwMDAwMDAwMDAwMDA1Yy0xMzIuODk5OTk5OTk5OTk5OTggMC0yNDAuNzk5OTk5OTk5OTk5OTgtMTA3Ljg5OTk5OTk5OTk5OTk4LTI0MC43OTk5OTk5OTk5OTk5OC0yNDFzMTA3LjktMjQwLjg5OTk5OTk5OTk5OTk4IDI0MC43OTk5OTk5OTk5OTk5OC0yNDAuODk5OTk5OTk5OTk5OThjMTMzLjEwMDAwMDAwMDAwMDAyIDAgMjQxIDEwNy44OTk5OTk5OTk5OTk5OCAyNDEgMjQwLjg5OTk5OTk5OTk5OTk4cy0xMDcuODk5OTk5OTk5OTk5OTggMjQxLTI0MSAyNDF6IG0xMjUuMzAwMDAwMDAwMDAwMDctMjgyLjVoLTg5LjQwMDAwMDAwMDAwMDAzdi04OS4zOTk5OTk5OTk5OTk5OGMwLTEyLjQwMDAwMDAwMDAwMDAwNi0xMC4xOTk5OTk5OTk5OTk5ODktMjIuNTk5OTk5OTk5OTk5OTk0LTIyLjYwMDAwMDAwMDAwMDAyMy0yMi41OTk5OTk5OTk5OTk5OTRoLTI5LjM5OTk5OTk5OTk5OTk3N2MtMTIuNSAwLTIyLjY5OTk5OTk5OTk5OTk5IDEwLjE5OTk5OTk5OTk5OTk4OS0yMi42OTk5OTk5OTk5OTk5OSAyMi41OTk5OTk5OTk5OTk5OTR2ODkuMzk5OTk5OTk5OTk5OThoLTg5LjQwMDAwMDAwMDAwMDAzYy0xMi4zOTk5OTk5OTk5OTk5NzcgMC0yMi41OTk5OTk5OTk5OTk5OTQgMTAuMjAwMDAwMDAwMDAwMDQ1LTIyLjU5OTk5OTk5OTk5OTk5NCAyMi42MDAwMDAwMDAwMDAwMjN2MjkuNWMwIDEyLjM5OTk5OTk5OTk5OTk3NyAxMC4yMDAwMDAwMDAwMDAwMTcgMjIuNjAwMDAwMDAwMDAwMDIzIDIyLjU5OTk5OTk5OTk5OTk5NCAyMi42MDAwMDAwMDAwMDAwMjNoODkuNDAwMDAwMDAwMDAwMDN2ODkuMzk5OTk5OTk5OTk5OThjMCAxMi41IDEwLjE5OTk5OTk5OTk5OTk4OSAyMi42MDAwMDAwMDAwMDAwMjMgMjIuNjk5OTk5OTk5OTk5OTkgMjIuNjAwMDAwMDAwMDAwMDIzaDI5LjM5OTk5OTk5OTk5OTk3N2MxMi40MDAwMDAwMDAwMDAwMzQgMCAyMi42MDAwMDAwMDAwMDAwMjMtMTAuMTAwMDAwMDAwMDAwMDIzIDIyLjYwMDAwMDAwMDAwMDAyMy0yMi42MDAwMDAwMDAwMDAwMjN2LTg5LjM5OTk5OTk5OTk5OTk4aDg5LjQwMDAwMDAwMDAwMDAzYzEyLjUgMCAyMi41OTk5OTk5OTk5OTk5MS0xMC4yMDAwMDAwMDAwMDAwNDUgMjIuNTk5OTk5OTk5OTk5OTEtMjIuNjAwMDAwMDAwMDAwMDIzdi0yOS41YzAtMTIuMzk5OTk5OTk5OTk5OTc3LTEwLjA5OTk5OTk5OTk5OTkwOS0yMi42MDAwMDAwMDAwMDAwMjMtMjIuNTk5OTk5OTk5OTk5OTEtMjIuNjAwMDAwMDAwMDAwMDIzeiIvPgo8L3N2Zz4=")}.lb-icon-zoomout{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51aS16b29tLW91dDwvdGl0bGU+CjxnbHlwaCBnbHlwaC1uYW1lPSJ1aS16b29tLW91dCIgdW5pY29kZT0iJiN4ZWM5ODsiIGhvcml6LWFkdi14PSIxMDAwIiAvPgo8cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNOTgyLjIgNzg4LjZsLTIzNC45MDAwMDAwMDAwMDAxLTIxNmMyNy01My41IDQyLjYwMDAwMDAwMDAwMDAyLTExMy43MDAwMDAwMDAwMDAwNSA0Mi42MDAwMDAwMDAwMDAwMi0xNzcuNzAwMDAwMDAwMDAwMDUgMC0yMTguMDk5OTk5OTk5OTk5OTctMTc2Ljg5OTk5OTk5OTk5OTk4LTM5NC45LTM5NC45LTM5NC45LTIxOC4yIDAtMzk1IDE3Ni44LTM5NSAzOTQuOSAwIDIxOC4xMDAwMDAwMDAwMDAwMiAxNzYuOCAzOTUgMzk1IDM5NSA2My44OTk5OTk5OTk5OTk5OCAwIDEyNC4xMDAwMDAwMDAwMDAwMi0xNS41IDE3Ny42MDAwMDAwMDAwMDAwMi00Mi41bDIxNS44OTk5OTk5OTk5OTk5OCAyMzQuODk5OTk5OTk5OTk5OThjMjEgMjIuOTAwMDAwMDAwMDAwMDkgNTYuMjAwMDAwMDAwMDAwMDQ1IDIzLjYwMDAwMDAwMDAwMDAyMyA3OC4yMDAwMDAwMDAwMDAwNSAxLjYwMDAwMDAwMDAwMDAyMjdsMTE3LjI5OTk5OTk5OTk5OTk1LTExNy4yOTk5OTk5OTk5OTk5NWMyMS43OTk5OTk5OTk5OTk5NTUtMjEuODAwMDAwMDAwMDAwMDY4IDIxLjEwMDAwMDAwMDAwMDAyMy01Ny0xLjc5OTk5OTk5OTk5OTk1NDUtNzh6IG0tNTg3LjItMTUyLjcwMDAwMDAwMDAwMDA1Yy0xMzMgMC0yNDAuOS0xMDcuODk5OTk5OTk5OTk5OTgtMjQwLjktMjQwLjg5OTk5OTk5OTk5OTk4czEwNy45LTI0MSAyNDAuOS0yNDFjMTMzLjEwMDAwMDAwMDAwMDAyIDAgMjQwLjg5OTk5OTk5OTk5OTk4IDEwNy44OTk5OTk5OTk5OTk5OCAyNDAuODk5OTk5OTk5OTk5OTggMjQwLjg5OTk5OTk5OTk5OTk4cy0xMDcuODk5OTk5OTk5OTk5OTggMjQxLTI0MC44OTk5OTk5OTk5OTk5OCAyNDF6IG0xMjUuMjk5OTk5OTk5OTk5OTUtMjgyLjVoLTI1My41OTk5OTk5OTk5OTk5N2MtMTIuMzk5OTk5OTk5OTk5OTc3IDAtMjIuNSAxMC4xMDAwMDAwMDAwMDAwMjMtMjIuNSAyMi42MDAwMDAwMDAwMDAwMjN2MjkuNWMwIDEyLjM5OTk5OTk5OTk5OTk3NyAxMC4xMDAwMDAwMDAwMDAwMjMgMjIuNjAwMDAwMDAwMDAwMDIzIDIyLjUgMjIuNjAwMDAwMDAwMDAwMDIzaDI1My41OTk5OTk5OTk5OTk5N2MxMi40MDAwMDAwMDAwMDAwOTEgMCAyMi41LTEwLjEwMDAwMDAwMDAwMDAyMyAyMi41LTIyLjYwMDAwMDAwMDAwMDAyM3YtMjkuNWMwLTEyLjM5OTk5OTk5OTk5OTk3Ny0xMC4wOTk5OTk5OTk5OTk5MDktMjIuNjAwMDAwMDAwMDAwMDIzLTIyLjUtMjIuNjAwMDAwMDAwMDAwMDIzeiIvPgo8L3N2Zz4=")}.lb-icon-rotate{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51bmRvPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InVuZG8iIHVuaWNvZGU9IiYjeGVlMGI7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggIGZpbGw9IiNmZmZmZmYiIGQ9Ik04OTguMSA2NTVjLTcuMjAwMDAwMDAwMDAwMDQ1NSAyOS41LTExLjM5OTk5OTk5OTk5OTk3NyA1OS43MDAwMDAwMDAwMDAwNDUtMjEuNzAwMDAwMDAwMDAwMDQ1IDg4LjUtNTMuMzk5OTk5OTk5OTk5OTggMTUwLjcwMDAwMDAwMDAwMDA1LTIwMCAyNTUuODk5OTk5OTk5OTk5OTgtMzU4LjI5OTk5OTk5OTk5OTk1IDI1Ni41LTQxLjcwMDAwMDAwMDAwMDA0NSAwLjEwMDAwMDAwMDAwMDAyMjc0LTc2LjMwMDAwMDAwMDAwMDAxLTI4Ljg5OTk5OTk5OTk5OTk3Ny04MC40MDAwMDAwMDAwMDAwMy02Ny4zOTk5OTk5OTk5OTk5OC00LjM5OTk5OTk5OTk5OTk3Ny00MC44OTk5OTk5OTk5OTk5OCAyMC45MDAwMDAwMDAwMDAwMzQtNzcuODk5OTk5OTk5OTk5OTggNjAuNjAwMDAwMDAwMDAwMDItODUuMTAwMDAwMDAwMDAwMDIgMjIuODAwMDAwMDAwMDAwMDEtNC4xMDAwMDAwMDAwMDAwMjMgNDYuNjk5OTk5OTk5OTk5OTktMi4yOTk5OTk5OTk5OTk5NTQ1IDY5LjQwMDAwMDAwMDAwMDAzLTguNSA5Mi4wOTk5OTk5OTk5OTk5MS0yNS4yMDAwMDAwMDAwMDAwNDUgMTUzLTg0IDE3MC43OTk5OTk5OTk5OTk5NS0xNzcuMjk5OTk5OTk5OTk5OTUgMTguODk5OTk5OTk5OTk5OTc3LTk4LjMwMDAwMDAwMDAwMDA3LTkuNS0xODQuMDAwMDAwMDAwMDAwMDYtOTIuMjAwMDAwMDAwMDAwMDUtMjQ2LjQwMDAwMDAwMDAwMDAzLTIzLjM5OTk5OTk5OTk5OTk3Ny0xNy42MDAwMDAwMDAwMDAwMjMtNTAuODk5OTk5OTk5OTk5OTgtMjguMTk5OTk5OTk5OTk5OTktODAtMjktNTYuMTk5OTk5OTk5OTk5OTMtMS41LTExMi4zOTk5OTk5OTk5OTk5OC0wLjQwMDAwMDAwMDAwMDAzNDEtMTY5LjA5OTk5OTk5OTk5OTk3LTAuNDAwMDAwMDAwMDAwMDM0MSAwLjQwMDAwMDAwMDAwMDAzNDEgNy41IDYuNSAxMC4yMDAwMDAwMDAwMDAwNDUgMTAuNDAwMDAwMDAwMDAwMDM0IDE0LjEwMDAwMDAwMDAwMDAyMyAyNy43OTk5OTk5OTk5OTk5NTUgMjguMTAwMDAwMDAwMDAwMDIzIDU2LjM5OTk5OTk5OTk5OTk4IDU1LjYwMDAwMDAwMDAwMDAyIDgzLjc5OTk5OTk5OTk5OTk1IDg0LjEwMDAwMDAwMDAwMDAyIDMxIDMyLjEwMDAwMDAwMDAwMDAyIDMwLjUgNzkuMjk5OTk5OTk5OTk5OTUtMC4wOTk5OTk5OTk5OTk5NjU5IDEwOS42OTk5OTk5OTk5OTk5My0yOS44MDAwMDAwMDAwMDAwMSAyOS42MDAwMDAwMDAwMDAwMjMtNzcuMTAwMDAwMDAwMDAwMDIgMzAuMjAwMDAwMDAwMDAwMDQ1LTEwOC4zMDAwMDAwMDAwMDAwMS0wLjY5OTk5OTk5OTk5OTkzMTgtOTIuNS05MS43MDAwMDAwMDAwMDAwNS0xODQuMi0xODQuMTAwMDAwMDAwMDAwMDItMjc2LjQtMjc1LjkwMDAwMDAwMDAwMDAzLTcuNTAwMDAwMDAwMDAwMDI4LTcuNS02LjIwMDAwMDAwMDAwMDAxNy0xMS4zOTk5OTk5OTk5OTk5NzcgMC42OTk5OTk5OTk5OTk5NzQ0LTE4LjMwMDAwMDAwMDAwMDAxIDkxLjgtOTEuMjk5OTk5OTk5OTk5OTggMTgzLjM5OTk5OTk5OTk5OTk4LTE4Mi44OTk5OTk5OTk5OTk5OCAyNzQuNy0yNzQuNyAxMS44MDAwMDAwMDAwMDAwMTEtMTEuODk5OTk5OTk5OTk5OTg4IDI3LTE2LjY5OTk5OTk5OTk5OTk5IDQxLTI0LjE5OTk5OTk5OTk5OTk5aDI4LjgwMDAwMDAwMDAwMDAxYzEuMzk5OTk5OTk5OTk5OTc3MyAzLjQgNC41OTk5OTk5OTk5OTk5NjYgMy4xIDcuMzk5OTk5OTk5OTk5OTc3IDQuMSA1OC4xOTk5OTk5OTk5OTk5OSAyMC41IDczLjY5OTk5OTk5OTk5OTk5IDg1LjUgMzAuOTAwMDAwMDAwMDAwMDM0IDEzMC05LjUgOS45MDAwMDAwMDAwMDAwMDYtMTkuNSAxOS41LTI5LjMwMDAwMDAwMDAwMDAxIDI5LjIwMDAwMDAwMDAwMDAxNy0yMS41IDIxLjE5OTk5OTk5OTk5OTk5LTQzIDQyLjUtNjguMzAwMDAwMDAwMDAwMDEgNjcuMzk5OTk5OTk5OTk5OThoMjMuMTAwMDAwMDAwMDAwMDIzYzQ3LjM5OTk5OTk5OTk5OTk4IDAgOTQuNjk5OTk5OTk5OTk5OTktMC4zOTk5OTk5OTk5OTk5NzcyNiAxNDIuMTAwMDAwMDAwMDAwMDIgMC4zMDAwMDAwMDAwMDAwMTEzNyAzNC44OTk5OTk5OTk5OTk5OCAwLjU5OTk5OTk5OTk5OTk5NDMgNjkuMTk5OTk5OTk5OTk5OTMgNi41IDEwMS43OTk5OTk5OTk5OTk5NSAxOS4wOTk5OTk5OTk5OTk5OTQgMTEzLjEwMDAwMDAwMDAwMDAyIDQzLjU5OTk5OTk5OTk5OTk5NCAxODIuMzk5OTk5OTk5OTk5OTggMTI3LjUwMDAwMDAwMDAwMDAzIDIyMC4xMDAwMDAwMDAwMDAwMiAyNDAuMjk5OTk5OTk5OTk5OTggOC44OTk5OTk5OTk5OTk5NzcgMjYuNzAwMDAwMDAwMDAwMDQ1IDExLjM5OTk5OTk5OTk5OTk3NyA1NC44MDAwMDAwMDAwMDAwNyAxOC4zOTk5OTk5OTk5OTk5NzcgODEuODAwMDAwMDAwMDAwMDcgMC4xMDAwMDAwMDAwMDAwMjI3NCAyNy41OTk5OTk5OTk5OTk5MSAwLjEwMDAwMDAwMDAwMDAyMjc0IDU1LjE5OTk5OTk5OTk5OTkzIDAuMTAwMDAwMDAwMDAwMDIyNzQgODIuNzk5OTk5OTk5OTk5OTV6Ii8+Cjwvc3ZnPg==")}.lb-icon-reset{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT5yZWZyZXNoPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InJlZnJlc2giIHVuaWNvZGU9IiYjeGVmZDE7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTg5OS44IDU1NC42aC00Mi4xOTk5OTk5OTk5OTk5M2MtMTguODk5OTk5OTk5OTk5OTc3IDAtMzYuNSAxNS4xOTk5OTk5OTk5OTk5MzItNDEuNjAwMDAwMDAwMDAwMDIgMzMuMzk5OTk5OTk5OTk5OTgtMzguMjk5OTk5OTk5OTk5OTU1IDEzOC4zOTk5OTk5OTk5OTk5OC0xNjUuMzk5OTk5OTk5OTk5OTggMjQwLTMxNi4yIDI0MC0xMDIuODAwMDAwMDAwMDAwMDEgMC0xOTQuOC00Ny4yOTk5OTk5OTk5OTk5NTUtMjU0LjktMTIxLjYwMDAwMDAwMDAwMDAyLTExLjkwMDAwMDAwMDAwMDAwNi0xNC42OTk5OTk5OTk5OTk5MzItOC44MDAwMDAwMDAwMDAwMTEtMzggNS4wOTk5OTk5OTk5OTk5OTQtNTAuNzk5OTk5OTk5OTk5OTU1bDg0LjgwMDAwMDAwMDAwMDAxLTc3Ljg5OTk5OTk5OTk5OTk4YzEzLjg5OTk5OTk5OTk5OTk3Ny0xMi44MDAwMDAwMDAwMDAwNjggOS44OTk5OTk5OTk5OTk5NzctMjMuMTAwMDAwMDAwMDAwMDIzLTktMjMuMTAwMDAwMDAwMDAwMDIzaC0yMjkuMTAwMDAwMDAwMDAwMDJjLTE4Ljg5OTk5OTk5OTk5OTk5IDAtMzQuMTk5OTk5OTk5OTk5OTkgMTUuMjk5OTk5OTk5OTk5OTU1LTM0LjE5OTk5OTk5OTk5OTk5IDM0LjE5OTk5OTk5OTk5OTkzdjIwNS4xMDAwMDAwMDAwMDAwMmMwIDE4Ljg5OTk5OTk5OTk5OTk3NyAxMS4yOTk5OTk5OTk5OTk5OTcgMjMuODAwMDAwMDAwMDAwMDY4IDI1LjA5OTk5OTk5OTk5OTk5NCAxMWwzMC42MDAwMDAwMDAwMDAwMS0yOC4xOTk5OTk5OTk5OTk5MzJjMTMuODk5OTk5OTk5OTk5OTkxLTEyLjgwMDAwMDAwMDAwMDA2OCAzMy44OTk5OTk5OTk5OTk5OS0xMC42MDAwMDAwMDAwMDAwMjMgNDYuMTAwMDAwMDAwMDAwMDEgMy44OTk5OTk5OTk5OTk5NzczIDgwLjI5OTk5OTk5OTk5OTk4IDk1Ljg5OTk5OTk5OTk5OTk4IDIwMC44OTk5OTk5OTk5OTk5OCAxNTYuODk5OTk5OTk5OTk5OTggMzM1LjUgMTU2Ljg5OTk5OTk5OTk5OTk4IDIxMS40OTk5OTk5OTk5OTk5NCAwIDM4Ny43LTE1MCA0MjguNTk5OTk5OTk5OTk5OTctMzQ5LjIwMDAwMDAwMDAwMDA1IDMuODk5OTk5OTk5OTk5OTc3My0xOC41LTkuNjk5OTk5OTk5OTk5OTMyLTMzLjY5OTk5OTk5OTk5OTkzLTI4LjYwMDAwMDAwMDAwMDAyMy0zMy42OTk5OTk5OTk5OTk5M3ogbTEzLjUtMzU4LjQwMDAwMDAwMDAwMDAzbC0yOS44OTk5OTk5OTk5OTk5NzcgMjkuODAwMDAwMDAwMDAwMDFjLTEzLjM5OTk5OTk5OTk5OTk3NyAxMy4zMDAwMDAwMDAwMDAwMTEtMzIuNzk5OTk5OTk5OTk5OTU1IDExLjUtNDQuNzk5OTk5OTk5OTk5OTU1LTMuMDk5OTk5OTk5OTk5OTk0My04MC4yMDAwMDAwMDAwMDAwNS05Ny45LTIwMi4zMDAwMDAwMDAwMDAwNy0xNjAuNC0zMzguOC0xNjAuNC0yMTEuMTAwMDAwMDAwMDAwMDIgMC0zODcuNiAxNDkuNy00MjguMyAzNDkuMi0zLjc5OTk5OTk5OTk5OTk5NyAxOC41IDkuNzk5OTk5OTk5OTk5OTk3IDMzLjgwMDAwMDAwMDAwMDAxIDI4LjcwMDAwMDAwMDAwMDAwMyAzMy44MDAwMDAwMDAwMDAwMWg0Mi4yYzE4LjkwMDAwMDAwMDAwMDAwNiAwIDM2LjUtMTUuMTAwMDAwMDAwMDAwMDIzIDQxLjUtMzMuMzAwMDAwMDAwMDAwMDEgMzguMjk5OTk5OTk5OTk5OTgtMTM4LjggMTY1LjQtMjQwLjIgMzE1LjktMjQwLjIgMTA2LjYwMDAwMDAwMDAwMDAyIDAgMjAxLjIwMDAwMDAwMDAwMDA1IDUwLjUgMjYxLjIwMDAwMDAwMDAwMDA1IDEyOS4xMDAwMDAwMDAwMDAwMiAxMS41IDE1IDguMzk5OTk5OTk5OTk5OTc3IDM5LTQuODk5OTk5OTk5OTk5OTc3IDUyLjI5OTk5OTk5OTk5OTk1NWwtNjcuODAwMDAwMDAwMDAwMDcgNjcuOTAwMDAwMDAwMDAwMDNjLTEzLjI5OTk5OTk5OTk5OTk1NSAxMy4zOTk5OTk5OTk5OTk5NzctOC44OTk5OTk5OTk5OTk5NzcgMjQuMTk5OTk5OTk5OTk5OTkgMTAgMjQuMTk5OTk5OTk5OTk5OTloMjA1LjEwMDAwMDAwMDAwMDAyYzE4Ljg5OTk5OTk5OTk5OTk3NyAwIDM0LjIwMDAwMDAwMDAwMDA0NS0xNS4zMDAwMDAwMDAwMDAwMTEgMzQuMjAwMDAwMDAwMDAwMDQ1LTM0LjE5OTk5OTk5OTk5OTk5di0yMDUuMTAwMDAwMDAwMDAwMDJjLTAuMTAwMDAwMDAwMDAwMDIyNzQtMTguODk5OTk5OTk5OTk5OTc3LTEwLjg5OTk5OTk5OTk5OTk3Ny0yMy4zOTk5OTk5OTk5OTk5NzctMjQuMzAwMDAwMDAwMDAwMDY4LTEweiIvPgo8L3N2Zz4=")}.lb-container{z-index:50000;position:absolute;position:fixed;left:0;top:0;width:100%;height:100%;background-color:#000;background-color:rgba(0,0,0,.8);display:flex;flex-direction:column}.lb-container .lb-header{height:50px;background:#000;background:rgba(0,0,0,.9);box-shadow:0 1px 5px 0 #111;box-sizing:border-box;display:flex;align-items:stretch;justify-content:flex-end;z-index:10}.lb-header .lb-button{padding:10px 25px;background-size:40% auto;background-position:50%;background-repeat:no-repeat;cursor:pointer}.lb-header .lb-button:not(:last-child){margin-right:3px}.lb-header .lb-button:hover{background-color:#777}.lb-header .lb-button.next,.lb-header .lb-button.rotater{transform:rotateY(180deg)}.lb-header .lb-title{flex:1 1;align-items:center;color:#fff;font-size:1.1em;padding:0 .8em;overflow:hidden}.lb-header .lb-title span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.lb-container .lb-canvas{flex:1 1;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:100%;max-height:100%;position:relative}.lb-canvas .lb-img{max-width:80vw;max-height:80vh;min-width:100px;min-height:100px;cursor:grab;background-size:50px;transform-origin:center center}.lb-canvas .lb-img.lb-loading{opacity:0}.lb-canvas.lb-loading{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiBub25lOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgd2lkdGg9IjEwMXB4IiBoZWlnaHQ9IjEwMXB4IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgo8ZyB0cmFuc2Zvcm09InJvdGF0ZSgwIDUwIDUwKSI+CiAgPHJlY3QgeD0iNDguNSIgeT0iMjUiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjMiIGhlaWdodD0iMTAiIGZpbGw9IiNmZmZmZmYiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC45MzMzMzMzMzMzMzMzMzMzcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgyNCA1MCA1MCkiPgogIDxyZWN0IHg9IjQ4LjUiIHk9IjI1IiByeD0iMCIgcnk9IjAiIHdpZHRoPSIzIiBoZWlnaHQ9IjEwIiBmaWxsPSIjZmZmZmZmIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIHZhbHVlcz0iMTswIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjFzIiBiZWdpbj0iLTAuODY2NjY2NjY2NjY2NjY2N3MiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDggNTAgNTApIj4KICA8cmVjdCB4PSI0OC41IiB5PSIyNSIgcng9IjAiIHJ5PSIwIiB3aWR0aD0iMyIgaGVpZ2h0PSIxMCIgZmlsbD0iI2ZmZmZmZiI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiB2YWx1ZXM9IjE7MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49Ii0wLjhzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDcyIDUwIDUwKSI+CiAgPHJlY3QgeD0iNDguNSIgeT0iMjUiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjMiIGhlaWdodD0iMTAiIGZpbGw9IiNmZmZmZmYiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC43MzMzMzMzMzMzMzMzMzMzcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSg5NiA1MCA1MCkiPgogIDxyZWN0IHg9IjQ4LjUiIHk9IjI1IiByeD0iMCIgcnk9IjAiIHdpZHRoPSIzIiBoZWlnaHQ9IjEwIiBmaWxsPSIjZmZmZmZmIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIHZhbHVlcz0iMTswIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjFzIiBiZWdpbj0iLTAuNjY2NjY2NjY2NjY2NjY2NnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDUwIDUwKSI+CiAgPHJlY3QgeD0iNDguNSIgeT0iMjUiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjMiIGhlaWdodD0iMTAiIGZpbGw9IiNmZmZmZmYiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC42cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgxNDQgNTAgNTApIj4KICA8cmVjdCB4PSI0OC41IiB5PSIyNSIgcng9IjAiIHJ5PSIwIiB3aWR0aD0iMyIgaGVpZ2h0PSIxMCIgZmlsbD0iI2ZmZmZmZiI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiB2YWx1ZXM9IjE7MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49Ii0wLjUzMzMzMzMzMzMzMzMzMzNzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDE2OCA1MCA1MCkiPgogIDxyZWN0IHg9IjQ4LjUiIHk9IjI1IiByeD0iMCIgcnk9IjAiIHdpZHRoPSIzIiBoZWlnaHQ9IjEwIiBmaWxsPSIjZmZmZmZmIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIHZhbHVlcz0iMTswIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjFzIiBiZWdpbj0iLTAuNDY2NjY2NjY2NjY2NjY2N3MiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMTkyIDUwIDUwKSI+CiAgPHJlY3QgeD0iNDguNSIgeT0iMjUiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjMiIGhlaWdodD0iMTAiIGZpbGw9IiNmZmZmZmYiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC40cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgyMTYgNTAgNTApIj4KICA8cmVjdCB4PSI0OC41IiB5PSIyNSIgcng9IjAiIHJ5PSIwIiB3aWR0aD0iMyIgaGVpZ2h0PSIxMCIgZmlsbD0iI2ZmZmZmZiI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiB2YWx1ZXM9IjE7MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49Ii0wLjMzMzMzMzMzMzMzMzMzMzNzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDI0MCA1MCA1MCkiPgogIDxyZWN0IHg9IjQ4LjUiIHk9IjI1IiByeD0iMCIgcnk9IjAiIHdpZHRoPSIzIiBoZWlnaHQ9IjEwIiBmaWxsPSIjZmZmZmZmIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIHZhbHVlcz0iMTswIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjFzIiBiZWdpbj0iLTAuMjY2NjY2NjY2NjY2NjY2NjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDI2NCA1MCA1MCkiPgogIDxyZWN0IHg9IjQ4LjUiIHk9IjI1IiByeD0iMCIgcnk9IjAiIHdpZHRoPSIzIiBoZWlnaHQ9IjEwIiBmaWxsPSIjZmZmZmZmIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIHZhbHVlcz0iMTswIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjFzIiBiZWdpbj0iLTAuMnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMjg4IDUwIDUwKSI+CiAgPHJlY3QgeD0iNDguNSIgeT0iMjUiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjMiIGhlaWdodD0iMTAiIGZpbGw9IiNmZmZmZmYiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC4xMzMzMzMzMzMzMzMzMzMzM3MiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMzEyIDUwIDUwKSI+CiAgPHJlY3QgeD0iNDguNSIgeT0iMjUiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjMiIGhlaWdodD0iMTAiIGZpbGw9IiNmZmZmZmYiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC4wNjY2NjY2NjY2NjY2NjY2N3MiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMzM2IDUwIDUwKSI+CiAgPHJlY3QgeD0iNDguNSIgeT0iMjUiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjMiIGhlaWdodD0iMTAiIGZpbGw9IiNmZmZmZmYiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSIwcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz4KPCEtLSBbbGRpb10gZ2VuZXJhdGVkIGJ5IGh0dHBzOi8vbG9hZGluZy5pby8gLS0+PC9zdmc+");background-position:50%;background-repeat:no-repeat}.mobile-controls{position:absolute;bottom:25px;left:0;width:100%;height:45px;display:flex;justify-content:center}.mobile-controls .lb-button{width:50px;height:50px;background-color:rgba(0,0,0,.9);background-position:50%;background-size:40%;background-repeat:no-repeat;margin:.2em;cursor:pointer}.mobile-controls .lb-button:active{background-color:#777}.mobile-controls .lb-button.next{transform:rotateY(180deg)}.lb-show-mobile{display:none}.lb-disabled{pointer-events:none;touch-action:none;opacity:.4}@media (max-width:600px){.lb-header .lb-button:hover{background-color:inherit}.lb-header .lb-button:active{background-color:#777}.lb-show-mobile{display:flex!important}.lb-hide-mobile{display:none!important}.lb-canvas .lb-img{max-height:60vh}}@font-face{font-family:Inter var;font-style:normal;font-weight:100 900;font-display:block;src:url(/fonts/Inter-roman.latin.var.woff2) format("woff2")}@font-face{font-family:Inter var;font-style:italic;font-weight:100 900;font-display:block;src:url(/fonts/Inter-italic.latin.var.woff2) format("woff2");font-named-instance:"Italic"}body{font-family:Inter var,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;-webkit-font-smoothing:subpixel-antialiased;font-feature-settings:"case" 1,"cpsp" 1,"dlig" 1,"cv01" 1,"cv02","cv03" 1,"cv04" 1,"liga","clig","calt";font-variation-settings:"wght" 450;font-variant:common-ligatures contextual;letter-spacing:-.02em}b,h3,h4,h5,h6,strong{font-variation-settings:"wght" 650}h1{font-variation-settings:"wght" 850}h2{font-variation-settings:"wght" 750}@media screen and (-webkit-min-device-pixel-ratio:1.5),screen and (min-device-pixel-ratio:1.5),screen and (min-resolution:1.5dppx){body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}details summary{cursor:pointer}img.next-image{margin:0}.prose a{color:#0074de}.nav-line .nav-link{color:#69778c} \ No newline at end of file diff --git a/components/CenteredImageLightbox.html b/components/CenteredImageLightbox.html new file mode 100644 index 0000000..4a74376 --- /dev/null +++ b/components/CenteredImageLightbox.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/haftalar.html b/haftalar.html index 7ec3ab8..a716798 100644 --- a/haftalar.html +++ b/haftalar.html @@ -1,3 +1,3 @@ -Haftalar
\ No newline at end of file +padding-bottom:4rem}}
\ No newline at end of file diff --git a/haftalar/hafta-bir.html b/haftalar/hafta-bir.html index fdc1568..7177918 100644 --- a/haftalar/hafta-bir.html +++ b/haftalar/hafta-bir.html @@ -1,4 +1,4 @@ -Hafta 1

Hafta 1

Enes Kaya, gnu/linux
Back

Amaç : Terminal kullanımını kavratmak, dosya sistem hiyerarşisini kavratmak, paket yöneticisi kavramından bahsetmek.

@@ -8,7 +8,7 @@

Terminal Nedir ?

Terminal, işletim sisteminizi shell ile kullanmanızı sağlayan bir arayüzdür. GNU/Linux dağıtımlarında SHELL olarak genellikle BASH kabuğu (shell) kullanılır.

Windows'ta bunun karşılığı CMD denebilir.

Windows'ta şuana kadar hiç CMD'ye girmeden hayatta kalabiliyorsanız, aslında GNU/Linux dağıtımlarının birçoğunda da terminale hiç uğramadan hayatta kalabilirsiniz.

-

cmd

+
cmd

Peki neden size terminal kullanımı anlatıyoruz ?

İşletim sistemine tamamen hakim olmak, isteklerinizi grafik arayüzünün hantallığına takılmadan yapmak ve işlerinizi çok daha hızlı görmek açısından terminal kullanımı önemlidir.

@@ -31,8 +31,8 @@

SHELL Nedir ?

PauSiber Dev'de ise kabuk yani shell olarak ZSH kullanılmaktadır. Kabuk olarak BASH yerine ZSH kullanma sebebimiz; ZSH'ın BASH'e göre daha fazla özellik içermesi.

Bi de şekil filan yani .s.s.s

-

zsh

-

bash

+
zsh
+
bash

Temel Komutlar

Terminalda kullanabileceğiniz sayısız uygulama, sayısız komut var. Biz bu eğitim sırasında yalnızca temel düzeyde olan komutları göstereceğiz.

@@ -42,7 +42,7 @@

ls [list]

Örneğin terminalde aşağıdaki gibi bir komut yürütürsek, o sırada bulunduğumuz dizinin içindeki tüm dosya dizinlerin çıktısını görürüz.

	ls
 
-

ls

+
ls

GNU/Linux'da bir dosyanın gizli olması için başına "." konması yeterlidir. Eğer bir dosyanın başında "." ifadesin var ise ls sorgularında gösterilmez.

Bu yüzden az önce yaptığımız sorguda gördüklerimiz, bulunduğumuz satırdaki tüm dosya ya da dizinleri göstermedi.

@@ -50,11 +50,11 @@

ls [list]

Yani aşağıdaki gibi bir komut yürütürüz.

	ls -a
 
-

ls - show them all

+
ls - show them all

Peki örneğin bulunduğumuz dizin altında bulunan tüm dosyaları tarihe göre sıralı şekilde görüntülemek istersek ne yapmalıyız ? Aşağıdaki parametreleri kullanabiliriz.

	ls -lat
 
-

ls - show them all with ordering by date

+
ls - show them all with ordering by date

man [manual]

EE tüm parametreleri böyle tek tek öğrenecek miyiz ? Evet.

@@ -64,16 +64,16 @@

man [manual]

Son derece detaylı olan bu manual sayfalarında ilgili komutla ilgili tüm detaya ulaşabilirsiniz.

Not : manual sayfasından q'a basarak çıkabilirsiniz.

-

man ls

+
man ls

Ayrıca ek bir öneri olarak; okuma kolaylığı sağlaması, aranan şeylere daha kolay ulaşma imkanı vermesi açısından, man kullanmak yerine tldr uygulamasını kullanabilirsiniz.

github.com/tldr-pages/tldr tl;dr : "too long; didn't read"

-

man ls

+
man ls

cd [change directory]

Bulunduğumuz dizini değiştirmek için cd komutunu kullanırız.

	cd Documents/
 
-

cd

+
cd

Eğer bulunduğumuz dizinin bir üstüne gitmek istiyorsak aşağıdaki gibi yapmalıyız.

	cd ..
 
@@ -82,30 +82,30 @@

pwd [print working directory]

Bu komut bize hangi dizinin içinde olduğumuzu söyler. Yani bulunduğumuz dizinin path'ini verir.

	pwd
 
-

pwd

+
pwd

touch

İçi boş bir dosya oluşturmak amacıyla kullanılır.

	touch yeni_bir_dosya
 
-

touch

+
touch

cat

Bir dosyanın içeriğini terminale basar.

	cat beni_oku
 
-

cat

+
cat

tac

Bir dosyanın içeriğini, ters sırada terminale basar.

	tac beni_tersten_oku
 
-

tac

+
tac

echo

Terminal ekrana string bir ifadeyi basmak amacıyla kullanılabilir.

	echo "MESAJ"
 
-

echo

+
echo

echo daha çok dosyaların içerisine veri yazılırken kullanılır.

Örneğin aşağıdaki gibi bir ifade, file.txt dosyasının en son satırına "yeni veri" string'ini ekler.

	echo "yeni veri" >> file.txt
@@ -118,21 +118,21 @@ 

less

Dosya içeriğini vim'e benzer bir şekilde görüntelememizi sağlayan bir programdır.

	less dosya_adi
 
-

less

+
less

mkdir [make directory]

Dizin (klasör) oluşturmak amacıyla kullanılır. Aynı anda birden fazla klasör oluşturulabilir.

Hatta aynı anda iç içe klasörler de direkt olarak tek komutta oluşturulabilir.

	mkdir klasor_adi
 
-

mkdir

+
mkdir

mv [move]

Dosya ya da dizinlerin taşınmasını sağlar.

Bu arada, GNU/Linux'da dosya ve dizin aynı şeydir, buna ileride değineceğiz.

	mv pamuk_seker tatli_bisey/
 
-

mv

+
mv

cp [copy]

Dosya ya da dizinlerin kopyalanması sağlar.

@@ -141,7 +141,7 @@

cp [copy]

"-r" parametresi ise dizinlerin kopyalanması sağlanırken kullanılır.

	cp -r sutlac/ tatli_bisey/
 
-

cp

+
cp

rm [remove]

Dosya ya da dizinlerin silinmesi amacıyla kullanılır.

@@ -152,17 +152,17 @@

rm [remove]

Örneğin aşağıdaki gibi tüm sistemi tek bir komut ile silebilirsiniz. Lakin bu komutun bir çok GNU/Linux dağıtımında çalıştırılması engellidir.

	rm -rf /
 
-

sil cnm

+
sil cnm

wget

Wget; internet protokolleri üzerinden dosya indirme aracıdır.

	wget https://raw.githubusercontent.com/PauSiber/gnulinux/master/hafta1/hafta1.md
 
-

wget

+
wget

!!

Son komutu tekrar yürütür.

-

!!-elif-hocama-selamlar

+
!!-elif-hocama-selamlar

history

Önceden yürütülen komutları listeli halde gösterir.

@@ -171,7 +171,7 @@

history

Daha düzenli şekilde görebilmek aşağıdaki gibi bir komut yürütebilirsiniz.

	history | less
 
-

history

+
history

Bir Kaç Kısa Yol

ctrl + a ile terminalde yazılı olan ifadenin ilk başına gidilir.

@@ -186,16 +186,16 @@

Bir Kaç Kısa Yol


Terminal'de Çalışan Metin Editörleri

nano

-

nano

+
nano

vim

-

vim

+
vim

GNU/Linux'da Dosya Sistem Hiyerarşisi

UNIX tabanlı ya da esinlenilmiş işletim sistemlerinin dosya sistem hiyerarşisi Windows işletim sisteminden oldukça farklıdır.

-

windows-my-computer

-

windows-my-computer

+
windows-my-computer
+
windows-my-computer

GNU/Linux sistemlerde bir dosya dizin hiyerarşisi vardır. Bu hiyerarşinin en üstünde "/" yani root(kök) dizini bulunur. Bu, tüm sistemin referans noktasıdır.

-

dosya-sistem-hiyerarşisi

+
dosya-sistem-hiyerarşisi

/ [root(kök) dizini]

Tüm dizinlerin üzerinde bulunan dizindir. Tüm dizinler buradan dallanarak oluşturulur.

/bin

@@ -219,7 +219,7 @@

/var

Sistem değişkenlerini saklar. Home dizini kullanıcıların dosyalarını depolarken, /var dizini içinde de programların oluşturduğu veriler tutulur.

/opt

GNU/Linux dosya dizin hiyerarşisine uymayan programların kurulduğu dizindir. Henüz sizlere bahsetmediğimiz "Bağımlılık" kavramına uymayan bu programlar sistemden yalıtılmış halde /opt dizini altından çalışmayı sürdürür.

-

opt

+
opt

Not : GNU/Linux sistemlerde her zaman bir dizin içersinde bulunursunuz. Yani ağaç yapısının dışına çıkamazsınız.


Bir dosyanın yeri tarif ederken kullanıdığımız iki türlü yol vardır. Bunlar Tam Yol ve Göreceli Yol dur.

@@ -245,9 +245,9 @@

Paket Yöneticisi Nedir ?

Hadi şimdi bir de terminal üzerinden firefox kurulumunu gerçekleştirelim. Bunun için aşağıdaki komutu yürütmemiz yeterlidir.

	sudo apt install firefox
 
-

apt

+
apt

Şimdi bu komutu inceleyelim..

-

apt

+
apt

Burada sudo ifadesini kullanma sebebimiz işlemin sistem dosyaları üzerinde gerçekleşiyor olması. Bu yüzden komutun root yetkisi ile çalışması için komutun başına sudo ifadesini ekledik.

Gördüğünüz gibi kullanımı oldukça basit. APT paket yöneticisinin parametreleri ile ilgili bilgiye aşağıdaki tablodan erişebilirisiniz.

Tablo başlangıçta oldukça korkunç gözükecektir ama paket yöneticisi kullandıkça alışacağınızın garantisini veririz :) .

@@ -260,7 +260,7 @@

REPO Kavramı Nedir ?

	vim /etc/apt/source.list
 

PauSiber Dev'de REPO olarak http://archive.ubuntu.com/ubuntu/ kullanılmaktadır.

-

repo

+
repo

REPO'da Olmayan Uygulamalar

REPO'larda yalnızca açık kaynak uygulamalar bulunabilir. Örneğin Google Chrome kapalı kaynak bir uygulamadır. Bu durumda ne yapacağız ?

@@ -268,8 +268,8 @@

REPO'da Olmayan Uygulamalar

Eğer REPO'larda bulunmayan bir uygulama kurulacak ise ilk yapılması gereken, uygulamanın dağıtıcının sitesinden hangi şekilde edinilmesi gerektiğine bakmaktır. Çünkü birçok farklı şekilde dağıtılıyor olabilir.

Örneğin Google Chrome için bir deb paketi indirmek gerekirken, Spotify kurulumu için REPO listemize ek bir kaynak adresi eklememiz gerekir.

Bu yüzden lütfen dışarıdan bir uygulama kuracaksanız, forumlara ya da youtube'a bakmak yerine, dağıtıcının sitesinden bakın. Orada kesinlikle bir bilgi olacaktır.

-

chrome

-

spotify

+
chrome
+
spotify

Bu hafta neler yaptık ?

    @@ -279,4 +279,4 @@

    Bu hafta neler yaptık ?

  • Terminal üzerinde çalışan metin editörlerini denedik.
  • GNU/Linux’da dosya sistem hiyerarşisinin nasıl olduğunu temel düzeyde öğrendik.
  • Paket Yöneticisi ve REPO kavramlarını öğrendik.
  • -
© PauSiber
\ No newline at end of file + © PauSiber \ No newline at end of file diff --git a/haftalar/hafta-iki.html b/haftalar/hafta-iki.html index 220792c..d34e81f 100644 --- a/haftalar/hafta-iki.html +++ b/haftalar/hafta-iki.html @@ -1,4 +1,4 @@ -Hafta 2

Hafta 2

Enes Kaya, gnu/linux
Back

Amaç : Kullanıcı-grup yönetimini ve dosya-dizin izinlerini kavratmak.

@@ -6,7 +6,7 @@

Hastane Örneği Üzerinden Açıklanması

Bir hastane düşünün, bu hastanede çalışanların kullanabileceği yalnız bir tane bilgisayar var. Ve hastanemizde çalışan üç ana meslek grubu var. Bunlar; doktorlar, güvenlik görevlileri ve aşçılar.

-

pwd

+
pwd

Bu çalışanların tek bir bilgisayarı kullanmasının iki farklı seneryosu olabilir.

1 - Üç meslek grubu da aynı bilgisayarı "tek oturum" şeklinde kullanabilir.

Bu durumda doktor, bilgisayarı kullandığı zaman, olması gerektiği gibi hastalarının; raporlarına, filimlerine, ameliyat görüntülerine vb.. bilgilere ulaşabilir. Aynı zamanda diğer meslek grupları ile ortak bir bilgisayar kullandığından; güvenlik kameralarına, o ayın mutfak masraflarına da bakabilir.

@@ -40,9 +40,9 @@

Hastane Örneğimizi Uygulayalım

GNU/Linux dağıtımlarında, sisteme bir kullanıcı eklemek için adduser komutu kullanılabilir.

	[~$] adduser kullanıcının_adı
 
-

tldr useradd

-

useradd

-

home

+
tldr useradd
+
useradd
+
home

Şuan sistemimize altı adet kullanıcı ekledik.


Eklediğimiz Kullanıcıları Görüntüleyelim

@@ -50,7 +50,7 @@

Eklediğimiz Kullanıcıları Görüntüleyelim

Bu dosyayı görüntülemek için;

	[~$] cat /etc/passwd
 
-

pwd

+
pwd

Dosya incelendiğinde dev:x:1000:1000:PauSiber Dev,,,:/home/dev:/usr/bin/zsh gibi ifadeler gözükür. Hadi şimdi bu ifadelerin ne anlama geldiğini açıklayalım.

ifadeaçıklama
devkullanıcı adı
xkullancının parolasını temsil eder
1000kullanıcının üyelik numarasıdır (user ID)
1000kullanıcının ait olduğu grubun numarasıdır (group ID)
PauSiber Devkullancı hakkında kayıtlı bilgi
/usr/bin/zshkullanıcının shell dizini

@@ -60,12 +60,12 @@

Gruplarımızı Oluşturalım

GNU/Linux dağıtımlarında, sisteme bir grup eklemek için groupadd komutu kullanılabilir.

	[~#] groupadd grubun_ismi
 
-

pwd

+
pwd

Sistemimize üç adet yeni grup ekledik. Sistemimizde bulunan gruplar /etc/group dosyasında sıralanır.

Bu dosyayı görüntülemek için;

	[~$] cat /etc/group
 
-

pwd

+
pwd

Son görselde de görüldüğü üzere bizim eklediğimiz grupların haricinde, önceden eklediğimiz kullacılar da burada gözükmekte. Örneğin "doktor_beyza" gibi bir grup sistemde çoktandır eklenmiş durumda. Peki bu nasıl oluyor?

GNU/Linux dağıtımlarında, sisteme yeni bir kullanıcı eklediğinizde, sisteme aynı anda bu kullanıcı adında bir de grup ekler.


@@ -75,9 +75,9 @@

Çalışanlarımızı Gruplarına Ekleyelim

	[~#] gpasswd --add kullanıcı_adi grup_adi
 

Not : Burada --add parametresi oldukça kritiktir. Eğer kullanılmaz ise kullanıcıyı hali hazırda bulunduğu tüm gruplardan çıkarır ve yeni gruba ekler. Fakat bizim istediğimiz bu değil, kullanıcının hali hazırda bulunduğu grupları değiştirmek istemiyoruz, yalnızca yeni bir gruba dahil etmek istiyoruz, bu durumda --add parametresi kullanmamız bir gerekliliktir.

-

pwd

+
pwd

Ekleme işlemlerimizi yaptık. Şimdi /etc/group' u yeniden görüntüleyelim.

-

pwd

+
pwd

Başarılı bir şekilde personelimizi gruplarına ekledik.


Hastane Müdürümüz, Nam-ı Değer ROOT !

@@ -88,26 +88,26 @@

Çalışanların Odaları, /home dizinleri

Hastanemizde çalışan tüm personelin kendine ait bir odası vardır. Çalışanlar bu odalarda kendi kişisel eşyalarını saklarlar.

GNU/Linux işletim sistemlerinde sisteme kayıtlı her insan kullancı için /home dizini altında o kullancıya tahsis edilmiş bir alan mevcuttur. Kullanıcılar bu dizinde verilerini diledikleri şekilde depolarlar.

root kullancısının da kendine ait bir odası vardır. Fakat root kullacısına ayrılmış bu alan direkt root dizini altında ayrılmış /root dizinidir.

-

pwd

+
pwd

Hastanemizden Çalışan Çıkaralım

Hastanemizden, yani sistemimizden bir kullanıcıyı silmek istersek deluser komutunu kullanabiliriz.

	[~#] deluser --remove-home kullancı_adi
 

Şimdi sistemimizde kayıtlı olan doktor_ahmedi aşağıdaki örnekteki gibi işten çıkaralım.

-

pwd

+
pwd

Kullancının Parolalarının Değiştirilmesi

Eğer bir kullanıcı parolasını değiştirmek ister ise passwd komutu kullanılabilir.

	[~$] passwd
 
-

pwd

+
pwd

Bir Çalışanımızı Grubundan Çıkaralım

Örneğin guvenlık_aykut kullanıcısının artık guvenlik grubunda bulunmasını istemiyorsak gpasswd ile birlikte --delete parametresini kullanarak bu işlemi gerçekleştirebiliriz.

	[~#] gpasswd --delete guvenlik_aykut guvenlikciler
 
-

pwd

+
pwd

Kullanıcıyı örnek amacıyla grubundan çıkarmıştık, şimdi geri dahil edelim :).

	[~#] gpasswd --add guvenlik_aykut guvenlikciler
 
@@ -116,15 +116,15 @@

Bir Grubumuzu Silelim

Örneğin sistemimize hemşireler grubunu eklemiş olalım, eğer bu gruba ihtiyacımız artık kalmaz ise grubu silebiliriz. Grubu silmek için groupdel komutu kullanılır.

	[~#] groupdel hemsireler
 
-

pwd

+
pwd

Hastane Yönetimi

Hastane örneğimizde hastalar, kameralar ve yemekhane dizinlerimiz olacak. Fakat tahmin edeceğiniz üzere bu dosyalara yalnızca belirli meslek gruplarının ve belirli kullanıcıların yetki sahibi olmasını bekleriz.

Aşağıdaki gibi dizinleri oluşturalım.

-

pwd

+
pwd

Dizinlerimiz içerisine aşağıdaki gibi gerekli dosyaları da oluşturalım.

Bu dizinlerin sahiplik ve izinlerini ayarlama işlemine geçmeden önce GNU/Linux'da dosya ve dizin kavramlarından bahsetmeliyiz.

-

pwd

+
pwd

Dosya ve Dizin Kavramları

GNU/Linux'ta her şey birer dosyadır. [1]

@@ -135,7 +135,7 @@

Dosya ve Dizin İzinlerinin İncelenmesi

ls ile dosyaların izinleri incelenebilir.

	[~$] ls -l fileName
 
-

+

Dosya ve dizin işlemlerine bakıldığında 10 karakterden oluşan bir yapı görünür.

Bu karakterler

    @@ -144,7 +144,7 @@

    Dosya ve Dizin İzinlerinin İncelenmesi

izinlerini temsilen kullanılır.

Bunları aşağıdaki gibi üçerli olarak gruplandırarak incelemekte fayda vardır.

-

+

Yani bu örnektekinin;

  • bir dizin olduğunu,
  • @@ -166,9 +166,9 @@

    Hastane Dosya Sahipliklerinin Değiştirilmesi

    Aşağıdaki gibi 3 dizin için de -R parametresini kullanarak dosyaların group bilgilerini değiştirelim.

    Burada -R parametresini kullanma sebebimiz belirttiğimiz işlemi recursive olarak tüm alt(sub) dosya ve dizinlere uygulanması gerektiğini belirtmek içindir.

    -

    +

    Tüm hastane dosyalarımızın group sahipliklerini değiştirdik. Fakat dosyaların kullanıcı sahiplikleri halen belirlenmiş değil. Her dosyanın sahibi olarak meslek grubundan belirlenen bir kullanıcıyı atamak istiyoruz. Aşağıdaki gibi adımları gerçekleştirdik.

    -

    +

    Dosya sahipliklerini ayarladık.


    Hastane Dosya İzinlerinin Değiştirilmesi

    @@ -189,32 +189,32 @@

    Dosyalarımızın İzinlerini Ayarlayalım

    İlk olarak tüm dosya group'larından yazma yetkisini çıkaracağız. Bunun için aşağıdaki gibi bir ifade kullanmamız yeterlidir. Aşağıdaki ifade, dosyanın group sahipliğinden yazma [w] yetkisini çıkarmamızı sağlar. Artık group yetkisi kullanılarak dosya üzerinde yazma işlemi yapılamayacaktır.

    	[~#] chmod g-w -R dizin/
     
    -

    +

    Ayrıca other'ın dosya üzerinde hiçbir yetkisinin olmasını istemiyoruz. Bunun için de aşağıdaki gibi örneğimizi uygularız. Other'ın sahip olduğu tüm yetkiyi kaldırmış oluruz.

    	[~#] chmod o-rwx -R dizin/
     
    -

    +

    Bu işlemi uyguladığımızda klasör'ün içinde neler olduğuna bile bakamayız, çünkü şu ana kadar olan tüm işlemleri PauSiber Dev'in normal kullanıcısı olan dev ile yaptık, dizinler üzerinde dev kullanıcısı other olarak gözükür. dev'in hiçbir yetkisi olmadığı için dizin içlerini göremeyiz.

    Dizinlerin içerisini görüntülemek için meslek grubundan bir kullanıcıya geçiş yapabiliriz.

    Eğer dosyalar üzerinden yazma işlemi yapmak istersek de meslek grubundan şef olarak seçtiğimiz kullanıcıya geçiş yapmamız gerekir.

    Başka bir kullanıcıya geçiş yapmak için su komutunu kullanabiliriz.

    -

    +

    Numeric Method ile İzin İşlemlerinin Yapılması

    Az önce, text method örneklerimizi yapmadan önce, numeric method da olduğunu söylemiştik. Bu method'u uygulayabilmemiz için bazı bilgilere ihtiyacımız var.

    Daha önceden öğrendiğimiz gibi, dosya ve dizinlerin izinleri r, w ve x ile temsil edilir. Her yetkinin numarasal olarak bir karşılığı vardır. Bunlar aşağıdaki gibidir.

    İzinNumara Karşılığı
    r4
    w2
    x1
    -

    +

    Bir dosyanın yetkisinin numarasal karşılığını göstermek için 3 basamaklı bir sayı kullanırız. Bu 3 basamaklı sayıyı elde etmek için yetkileri üçerli olarak gruplandırıp toplarız.

    Kendimiz toplamak yerine, bir dosyanın yetkisinin numarasal karşılığını direkt olarak görmek için stat komutu kullanılabilir.

    	[~$] stat -c %a dosyaAdi
     
    -

    +

    Dosyanın izinlerini numeric method ile değiştirmek istiyorsak aşağıdaki gibi bir syntax kullanırız.

    	[~$] chmod XXX dosyaAdi
     

    Örneğin hastalar klasörü içerisinde bulunan dosyaların, other'lar tarafından okunabilir ve çalıştırılabilir olmasını istiyor olalım, aşağıdaki gibi yapabiliriz.

    -

    +

    Text method kullanacak olsaydık, aynı işlemi yapmak için chmod o=rx * dememiz yeterdi.


    Dosya Kilitlemek

    @@ -252,4 +252,4 @@

    Bu hafta neler yaptık ?

  • Dosyaların nasıl kilitlenebileceğini öğrendik..
- © PauSiber
\ No newline at end of file + © PauSiber \ No newline at end of file diff --git a/haftalar/hafta-sifir.html b/haftalar/hafta-sifir.html index 49a6c45..c938426 100644 --- a/haftalar/hafta-sifir.html +++ b/haftalar/hafta-sifir.html @@ -1,4 +1,4 @@ -Hafta 0

Hafta 0

Enes Kaya, gnu/linux
Back

Amaç : Linux'un genel bir tanımı. Gerekli kurulumların gerçekleştirilmesi.

@@ -12,17 +12,17 @@

Linux Nedir ?

Peki çekirdek nedir ?

Çekirdek, yani kernel, işletim sisteminin kalbidir. Uygulamalar ve donanım arasında çevirici görev görür. Fiziksel donanımla yazılım arasındaki haberleşmeyi sağlar.

-

kernel-nedir

+
kernel-nedir

Yani Linux tek başına bir işletim sistemi değildir.

Peki işletim sistemi (operating system) nedir ?

İşletim sistemi, bilgisayarı kullanabilmemiz için gerekli olan yazılımlar bütünüdür. Örneğin önünüzde bulunan Windows bir işletim sistemidir. İşletim sistemi User Interface (shell) ve Kernel'dan oluşur.

-

os-nedir

+
os-nedir

İşletim sistemleri ve kernel bir bütün halinde çalışır. Yani Linux için tek başına bir işletim sistemi diyemeyiz.

GNU isimli bir işletim sistemi vardır. Özgür yazılım felsefesini amaç edinen bu işletim sistemi, 1983'te Richard Stallman tarafından duyurulmuştur.gnu.org

Belli bir süre HURD çekirdeğini kullanan GNU; 1991'de Linus Torvals tarafından Linux'un duyurulması ve Linux çekirdeğinin popülerlik kazanmasıyla, GNU işletim sisteminde, çekirdek olarak Linux'a geçiş yapılmıştır. GNU araçları Linux'a uyarlanmış ve böylelikle HURD'ın gelişimi iyiden iyiye yavaşlamıştır.

Günümüzde HURD'ın 1. versiyonu halen çıkarılamamıştır.

Bu sebeplerden dolayı yalnızca Linux demek yanlıştır. GNU/Linux olarak söylenmesi daha doğrudur.

-

hurd

+
hurd

GNU/Linux'a Neden İhtiyacımız Var ?

Açıkçası bu bir tercih meselesi. İşletim sistemi bir araçtır. Sizin için en doğru araç, amacınıza en uygun olan araçtır.

GNU/Linux'un size sağlayacağı birçok avantaj var.

@@ -62,11 +62,11 @@

Distro (Dağıtım) nedir ?

GNU/Linux isimli indirip kurabileceğiniz bir işletim sistemi aslında yoktur. Birçok distro vardır.

Distro, yani dağıtım, özgür yazılım felsefesinin çok alternatifli dünyasının bir sonucu olarak ortaya çıkmış, GNU/Linux'a özgü bir terimdir.

futurist.se/gldt/

-

distros

+
distros

Peki neden tek bir işletim sistemi değil de birden fazla işletim sistemine -distro- ihtiyaç duyulmuştur ?

Çünkü tüm insanlar farklıdır. Herkesin kendine göre ilgi alanları vardır. Bu sebepten dolayı aynı ilgi alanına sahip kişiler birleşerek bir topluluk yani community'leri oluşturur. Bu community'ler ilgi duydukları alanlara uygun özelleştirmeleri yaparak bunu bir dağıtım haline getirirler ve bunu tüm dünya ile paylaşırlar.

Ubuntu Studio bunun için güzel bir örnektir.

-

distros

+
distros

Temel Dağıtımlar Nelerdir ?

  • @@ -104,30 +104,30 @@

    PauSiber Dev Nedir ? Neden İhtiyacımız Var ?

    Aslında gerçekten bir dağıtım değildir, yalnızca OVA sürümü vardır.

    Dağıtımı şuan yalnızca OVA olarak sunma sebebimiz, GNU/Linux'un farklı donanımlarda ortaya çıkarabileceği sürücü sorunlarıdır. Eğitimler sırasında bu gibi sorunların ortaya çıkmasını istemiyoruz. OVA olarak sunduğumuz için, katılımcı ana sisteminin yapısını değiştirmeden, direkt olarak VirtualBox üzerinden "PauSiber Dev.ova" kurulumunu 2 dakika içersinde yapabilecektir. Ardından geliştirmeye başlanabilir!

    PauSiber Dev fikri HacknBreak18'de oraya çıkmıştır.

    -

    hacknbreak18

    +
    hacknbreak18

    VirtualBox Kurulumu

    1 - VirtualBox'ın sitesinden bilgisayarınıza uygun olan setup'ı indirin. www.virtualbox.org/wiki/Downloads/

    -

    virtualbox

    +
    virtualbox

    2 - İndirilen setup'ı açın.

    -

    virtualbox

    +
    virtualbox

    3 - Ardından next next next diyerek kurulumu tamamlayın :) ..

    -

    virtualbox

    -

    virtualbox

    -

    virtualbox

    -

    virtualbox

    -

    virtualbox

    +
    virtualbox
    +
    virtualbox
    +
    virtualbox
    +
    virtualbox
    +
    virtualbox

    4 - Ve yükleme işlemi tamamlandı.

    -

    virtualbox

    +
    virtualbox

    PauSiber Dev Kurulumu

    1 - Dev'in sitesinden OVA'yı indirin. dev.pausiber.xyz/

    2 - Ardından OVA'yı VirtualBox ile çalıştırın.

    -

    dev

    +
    dev

    3 - OVA'yı çalıştırdığınızda karşınıza aşağıdaki gibi bir menu gelecek. MAC adreslerinin yeniden oluşturulması için gerekli tiki işaretledikten sonra import seçeneğine basın.

    -

    dev

    +
    dev

    4 - Import işlemi bittikten sonra sanal makineyi başlatabilirsiniz.

    -

    dev

    +
    dev

    Bu hafta neler yaptık ?

    • Linux'un bir işletim sistemi değil, çekirdek olduğunu öğrendik.
    • @@ -141,4 +141,4 @@

      Bu hafta neler yaptık ?

    • Temel dağıtımların neler olduğunu öğrendik.
    • PauSiber Dev'in ne olduğunu ve neden bunu hazırlama ihtiyacı duyduğumuzu öğrendik.
    -

    Haftaya Görüşmek Üzere!

    © PauSiber
\ No newline at end of file +

Haftaya Görüşmek Üzere!

© PauSiber \ No newline at end of file diff --git a/haftalar/hafta-uc.html b/haftalar/hafta-uc.html index 0032fe1..7e4e1ad 100644 --- a/haftalar/hafta-uc.html +++ b/haftalar/hafta-uc.html @@ -1,4 +1,4 @@ -Hafta 3

Hafta 3

Enes Kaya, gnu/linux
Back

Amaç : Server kavramının açıklanması, SSH Kullanımı, Zamanlanmış görevler oluşturulması.

@@ -7,7 +7,7 @@

Server (Sunucu) Nedir ?

Server denince akıllara -filmlerin de etkisiyle- devasa büyüklükte hangarlar içine sıra sıra istiflenmiş, genelde siyah renkte dolaplar içinde bulunan, dikdörtgen şeklinde çekmeceler geliyor.

Evet, akıllara gelen bu tablo ve tanım tamamen doğru. Fakat bir "server" oluşturmak için tüm bu saydığımız şeylere ihtiyacımız yok. Sadece bir bilgisayar, server oluşturmak için yeterli. Ve tabiki gerekli olan bir iletişim ağı.

-

pwd

+
pwd

Yani server dediğimiz şeyler de aslında birer bilgisayardır.

Bir bilgisayarın server olarak çalışabilmesi için; gerekli bazı yazılımlara ve kullandığı verileri iletim ağına itebilecek - çekebilecek güce sahip olması gerekir.

Bu güç bazen en başta anlattığımız o hollywood vari tablodaki serverların gücü gibi devasa bir güce sahip olurken, bazen de 20 dolarlık bir bilgisayar olan Raspberry Pi'ın gücü olabilir.

@@ -38,7 +38,7 @@

SSH-Keygen ile Key Oluşturulması

SSH-Key oluşturmak oldukça basittir. Aşağıdaki komutu yürüttüğünüzde size birkaç soru sorduktan sonra key üretilecektir. Key üretimi sonucunda biri public diğeri private olmak üzere iki adet key oluşacaktır.

	[~$] ssh-keygen
 
-

ssh-keygen

+
ssh-keygen

Üretilen keyler'den sonunda .pub uzantısı bulunan sizin public key'inizdir. Bu key'i bağlanmak istediğiniz sunuculara eklemeniz gerekir.

Uzantısı bulunmayan key ise sizin private key'inizdir. Bu dosyayı kimse ile paylaşmamalısınız. SSH ile bağlantı sağlarken bu dosyayı kullanacağız.

Ek olarak private key'in izinleri 600 olarak ayarlanmalıdır.
@@ -74,4 +74,4 @@

Bu hafta neler yaptık ?

  • SSH-Key'in ne olduğunu,
  • SSH-Key kullanarak bağlantı kurmayı,
  • Parola yerine neden SSH-Key kullandığımızı öğrendik.
  • - © PauSiber
    \ No newline at end of file + © PauSiber \ No newline at end of file diff --git a/index.html b/index.html index 19c4515..8b136d4 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -Hakkında
    \ No newline at end of file +
    Hasan TezcanBora Tanrıkulu
    Twitter: @hasantezcannTwitter: @boratanrikulu_
    Github: @hasantezcanGithub: @boratanrikulu
    Web Sitesi: hasantezcan.devWeb Sitesi: bora.sh
      © PauSiber \ No newline at end of file diff --git a/tags/[tag].html b/tags/[tag].html index ec59f31..effb77e 100644 --- a/tags/[tag].html +++ b/tags/[tag].html @@ -1,3 +1,3 @@ -Tagged Posts
      \ No newline at end of file +padding-bottom:4rem}}
      \ No newline at end of file