1<!DOCTYPE html> 2<html lang="zh-cn"> 3 4<head> 5 <meta http-equiv="X-Clacks-Overhead" content="GNU Terry Pratchett" /> 6 <meta charset="utf-8"> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 8<link rel="shortcut icon" href="https://yinji.org/img/favicon.png" /> 9<title>About | å°è®°</title> 10<meta name="title" content="About" /> 11<meta name="description" content="2002å¹´åºçï¼æ±è¥¿äººãéå±±ï¼åèªè¾å¼ç¾è¯âæè§éå±±å¤å¦©åªï¼æéå±±è§æåºå¦æ¯âï¼å客ååâé山绿水âï¼ä¹æ¥èªå ¶ä¸ãé«ä¸éæ©æç§ï¼ä¸ç´é½æåç¹ä¸è¥¿çç±å¥½ï¼ä¾¿ä»2018å¹´å¼å§ååå®¢ï¼æé´å¤æ¬¡æ´æ¢åååååï¼æåå®å为âå°è®°âï¼è®°å½æççæ´»åæèã 12å ´è¶£ç±å¥½ä¸ç®å¤ï¼å±æå¯æ°ï¼æ¯ä¸ä¸ªæ°ç åç§åãæå½±ç±å¥½è ï¼2025å¹´è´ä¹°äºç¸æºï¼ä½¿ç¨ææºï¼iPhone 15 Pro Maxï¼åç¸æºï¼Nikon Z5ï¼è®°å½çæ´»çç¢çï¼å欢é 读ï¼ä½å¾å¾é½æ¯â买书å¦å±±åï¼è¯»ä¹¦å¦æ½ä¸âãè½ç¶æ²¡å¦è¿è®¡ç®æºåç¼ç¨ï¼ä½åæ¬¢å ³æ³¨äºèç½ä¸çåç§æè¶£å 容ï¼ä½ æ£å¨è®¿é®çè¿ä¸ªå客ï¼ä¾¿æ¯ææ ¹æ®ç½ä¸çæç¨æå»ºèæã 13ç½ç«ä½¿ç¨å¼æºç¨åº Hugoï¼è¿è¡å¨ Cloudflare Pages ä¸ï¼æå¨ Now 页é¢è®°å½æçç°ç¶ï¼ä»¥åå½åæ£å¨åçäºæ ï¼å¨ Notion ç»´æ¤ä¸ä¸ªåæå®å©åºï¼å享æä¹°è¿/使ç¨è¿ä¸å¼å¾æ¨èç产åï¼å¨ Quail å卿¥ï¼ä¸å®ææ´æ°ï¼å¦æå ´è¶£ï¼å¯ä»¥è®¢é ã 14ææ³å»ºè®¾ä¸ä¸ªä¾ä¸æå主交æµçå¹³å°ï¼ä¾¿å建äºä¸æå客å微信群ï¼ç®åå·²æ100å¤äººï¼å¦æä½ æå ´è¶£ï¼å¯ä»¥é è¯»ãæ¬¢è¿æ¥å°ä¸æå客åãæ¥ç详ç»å 容ãåæ¶ï¼æä¹è¿è¥çä¸ä¸ª Telegram é¢éï¼åå¸ä»»ä½ä¸å客ç¸å ³çå 容ã 15æ´ç´ çæ´»ï¼é«å°æèãï¼Plain living and High thinkingï¼ 16Self-Hosted 17 18Umamiï¼ç½ç«ç»è®¡å·¥å · 19Bitwardenï¼å¯ç 管çå·¥å · 20Hugoï¼ç®å使ç¨çå客ç¨åº 21 22èç³»æ 23 24Emailï¼[email protected] 25Twitterï¼@huhexian 26Telegramï¼@huhexian 27 28å客åå² 29 302018å¹´3æ17æ¥ é山绿水 åå®¢å»ºç« 312021å¹´10æ12æ¥ é山绿水 å客转让 322021å¹´10æ22æ¥ è¡è¨è¡è¯ å客建ç«ï¼éæ© Twenty Twelve ä¸»é¢ 332021å¹´12æ16æ¥ å° é山绿水 å客çæç« è¿ç§»è³ è¡è¨è¡è¯ å客 342021å¹´12æ26æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Arke 352022å¹´2æ9æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Twenty Twelve 362022å¹´4æ8æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Sulli 372022å¹´6æ1æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Paper 382022å¹´7æ15æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Wing 392022å¹´10æ12æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo 402023å¹´1æ6æ¥ å客ç¨åºæ´æ¢ä¸ºï¼WordPressï¼éç¨ Twenty Twelve ä¸»é¢ 412023å¹´4æ9æ¥ å客è¿è¡äº CloudCone 422023å¹´5æ5æ¥ å客ååæ´æ¢ä¸ºï¼zuofei.net 432023å¹´5æ5æ¥ å客åç§°æ´æ¢ä¸ºï¼ä»æ¯æ¨é 442023å¹´9æ7æ¥ å客ååæ´æ¢ä¸ºï¼yinji.org 452023å¹´9æ7æ¥ å客åç§°æ´æ¢ä¸ºï¼å°è®° 462024å¹´8æ25æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Dear 472025å¹´8æ30æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Berry 2.0 482026å¹´8æ4æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo 49" /> 50<meta name="keywords" content="" /> 51 52<link rel="canonical" href="https://yinji.org/about.html"> 53 54 55<meta property="og:url" content="https://yinji.org/about.html"> 56 <meta property="og:site_name" content="å°è®°"> 57 <meta property="og:title" content="About"> 58 <meta property="og:description" content="2002å¹´åºçï¼æ±è¥¿äººãéå±±ï¼åèªè¾å¼ç¾è¯âæè§éå±±å¤å¦©åªï¼æéå±±è§æåºå¦æ¯âï¼å客ååâé山绿水âï¼ä¹æ¥èªå ¶ä¸ãé«ä¸éæ©æç§ï¼ä¸ç´é½æåç¹ä¸è¥¿çç±å¥½ï¼ä¾¿ä»2018å¹´å¼å§ååå®¢ï¼æé´å¤æ¬¡æ´æ¢åååååï¼æåå®å为âå°è®°âï¼è®°å½æççæ´»åæèã 59å ´è¶£ç±å¥½ä¸ç®å¤ï¼å±æå¯æ°ï¼æ¯ä¸ä¸ªæ°ç åç§åãæå½±ç±å¥½è ï¼2025å¹´è´ä¹°äºç¸æºï¼ä½¿ç¨ææºï¼iPhone 15 Pro Maxï¼åç¸æºï¼Nikon Z5ï¼è®°å½çæ´»çç¢çï¼å欢é 读ï¼ä½å¾å¾é½æ¯â买书å¦å±±åï¼è¯»ä¹¦å¦æ½ä¸âãè½ç¶æ²¡å¦è¿è®¡ç®æºåç¼ç¨ï¼ä½åæ¬¢å ³æ³¨äºèç½ä¸çåç§æè¶£å 容ï¼ä½ æ£å¨è®¿é®çè¿ä¸ªå客ï¼ä¾¿æ¯ææ ¹æ®ç½ä¸çæç¨æå»ºèæã 60ç½ç«ä½¿ç¨å¼æºç¨åº Hugoï¼è¿è¡å¨ Cloudflare Pages ä¸ï¼æå¨ Now 页é¢è®°å½æçç°ç¶ï¼ä»¥åå½åæ£å¨åçäºæ ï¼å¨ Notion ç»´æ¤ä¸ä¸ªåæå®å©åºï¼å享æä¹°è¿/使ç¨è¿ä¸å¼å¾æ¨èç产åï¼å¨ Quail å卿¥ï¼
60ä¸å®ææ´æ°ï¼å¦æå ´è¶£ï¼å¯ä»¥è®¢é ã 61ææ³å»ºè®¾ä¸ä¸ªä¾ä¸æå主交æµçå¹³å°ï¼ä¾¿å建äºä¸æå客å微信群ï¼ç®åå·²æ100å¤äººï¼å¦æä½ æå ´è¶£ï¼å¯ä»¥é è¯»ãæ¬¢è¿æ¥å°ä¸æå客åãæ¥ç详ç»å 容ãåæ¶ï¼æä¹è¿è¥çä¸ä¸ª Telegram é¢éï¼åå¸ä»»ä½ä¸å客ç¸å ³çå 容ã 62æ´ç´ çæ´»ï¼é«å°æèãï¼Plain living and High thinkingï¼ 63Self-Hosted Umamiï¼ç½ç«ç»è®¡å·¥å · Bitwardenï¼å¯ç 管çå·¥å · Hugoï¼ç®å使ç¨çå客ç¨åº èç³»æ Emailï¼[email protected] Twitterï¼@huhexian Telegramï¼@huhexian å客åå² 2018å¹´3æ17æ¥ é山绿水 åå®¢å»ºç« 2021å¹´10æ12æ¥ é山绿水 å客转让 2021å¹´10æ22æ¥ è¡è¨è¡è¯ å客建ç«ï¼éæ© Twenty Twelve ä¸»é¢ 2021å¹´12æ16æ¥ å° é山绿水 å客çæç« è¿ç§»è³ è¡è¨è¡è¯ å客 2021å¹´12æ26æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Arke 2022å¹´2æ9æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Twenty Twelve 2022å¹´4æ8æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Sulli 2022å¹´6æ1æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Paper 2022å¹´7æ15æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Wing 2022å¹´10æ12æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo 2023å¹´1æ6æ¥ å客ç¨åºæ´æ¢ä¸ºï¼WordPressï¼éç¨ Twenty Twelve ä¸»é¢ 2023å¹´4æ9æ¥ å客è¿è¡äº CloudCone 2023å¹´5æ5æ¥ å客ååæ´æ¢ä¸ºï¼zuofei.net 2023å¹´5æ5æ¥ å客åç§°æ´æ¢ä¸ºï¼ä»æ¯æ¨é 2023å¹´9æ7æ¥ å客ååæ´æ¢ä¸ºï¼yinji.org 2023å¹´9æ7æ¥ å客åç§°æ´æ¢ä¸ºï¼å°è®° 2024å¹´8æ25æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Dear 2025å¹´8æ30æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Berry 2.0 2026å¹´8æ4æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo"> 64 <meta property="og:locale" content="zh_cn"> 65 <meta property="og:type" content="article"> 66 67 68 69 70 <meta name="twitter:card" content="summary"> 71 <meta name="twitter:title" content="About"> 72 <meta name="twitter:description" content="2002å¹´åºçï¼æ±è¥¿äººãéå±±ï¼åèªè¾å¼ç¾è¯âæè§éå±±å¤å¦©åªï¼æéå±±è§æåºå¦æ¯âï¼å客ååâé山绿水âï¼ä¹æ¥èªå ¶ä¸ãé«ä¸éæ©æç§ï¼ä¸ç´é½æåç¹ä¸è¥¿çç±å¥½ï¼ä¾¿ä»2018å¹´å¼å§ååå®¢ï¼æé´å¤æ¬¡æ´æ¢åååååï¼æåå®å为âå°è®°âï¼è®°å½æççæ´»åæèã 73å ´è¶£ç±å¥½ä¸ç®å¤ï¼å±æå¯æ°ï¼æ¯ä¸ä¸ªæ°ç åç§åãæå½±ç±å¥½è ï¼2025å¹´è´ä¹°äºç¸æºï¼ä½¿ç¨ææºï¼iPhone 15 Pro Maxï¼åç¸æºï¼Nikon Z5ï¼è®°å½çæ´»çç¢çï¼å欢é 读ï¼ä½å¾å¾é½æ¯â买书å¦å±±åï¼è¯»ä¹¦å¦æ½ä¸âãè½ç¶æ²¡å¦è¿è®¡ç®æºåç¼ç¨ï¼ä½åæ¬¢å ³æ³¨äºèç½ä¸çåç§æè¶£å 容ï¼ä½ æ£å¨è®¿é®çè¿ä¸ªå客ï¼ä¾¿æ¯ææ ¹æ®ç½ä¸çæç¨æå»ºèæã 74ç½ç«ä½¿ç¨å¼æºç¨åº Hugoï¼è¿è¡å¨ Cloudflare Pages ä¸ï¼æå¨ Now 页é¢è®°å½æçç°ç¶ï¼ä»¥åå½åæ£å¨åçäºæ ï¼å¨ Notion ç»´æ¤ä¸ä¸ªåæå®å©åºï¼å享æä¹°è¿/使ç¨è¿ä¸å¼å¾æ¨èç产åï¼å¨ Quail å卿¥ï¼ä¸å®ææ´æ°ï¼å¦æå ´è¶£ï¼å¯ä»¥è®¢é ã 75ææ³å»ºè®¾ä¸ä¸ªä¾ä¸æå主交æµçå¹³å°ï¼ä¾¿å建äºä¸æå客å微信群ï¼ç®åå·²æ100å¤äººï¼å¦æä½ æå ´è¶£ï¼å¯ä»¥é è¯»ãæ¬¢è¿æ¥å°ä¸æå客åãæ¥ç详ç»å 容ãåæ¶ï¼æä¹è¿è¥çä¸ä¸ª Telegram é¢éï¼åå¸ä»»ä½ä¸å客ç¸å ³çå 容ã 76æ´ç´ çæ´»ï¼é«å°æèãï¼Plain living and High thinkingï¼ 77Self-Hosted Umamiï¼ç½ç«ç»è®¡å·¥å · Bitwardenï¼å¯ç 管çå·¥å · Hugoï¼ç®å使ç¨çå客ç¨åº èç³»æ Emailï¼[email protected] Twitterï¼@huhexian Telegramï¼@huhexian å客åå² 2018å¹´3æ17æ¥ é山绿水 åå®¢å»ºç« 2021å¹´10æ12æ¥ é山绿水 å客转让 2021å¹´10æ22æ¥ è¡è¨è¡è¯ å客建ç«ï¼éæ© Twenty Twelve ä¸»é¢ 2021å¹´12æ16æ¥ å° é山绿水 å客çæç« è¿ç§»è³ è¡è¨è¡è¯ å客 2021å¹´12æ26æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Arke 2022å¹´2æ9æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Twenty Twelve 2022å¹´4æ8æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Sulli 2022å¹´6æ1æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Paper 2022å¹´7æ15æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Wing 2022å¹´10æ12æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo 2023å¹´1æ6æ¥ å客ç¨åºæ´æ¢ä¸ºï¼WordPressï¼éç¨ Twenty Twelve ä¸»é¢ 2023å¹´4æ9æ¥ å客è¿è¡äº CloudCone 2023å¹´5æ5æ¥ å客ååæ´æ¢ä¸ºï¼zuofei.net 2023å¹´5æ5æ¥ å客åç§°æ´æ¢ä¸ºï¼ä»æ¯æ¨é 2023å¹´9æ7æ¥ å客ååæ´æ¢ä¸ºï¼yinji.org 2023å¹´9æ7æ¥ å客åç§°æ´æ¢ä¸ºï¼å°è®° 2024å¹´8æ25æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Dear 2025å¹´8æ30æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Berry 2.0 2026å¹´8æ4æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo"> 78 79 80 81 82 <meta itemprop="name" content="About"> 83 <meta itemprop="description" content="2002å¹´åºçï¼æ±è¥¿äººãéå±±ï¼åèªè¾å¼ç¾è¯âæè§éå±±å¤å¦©åªï¼æéå±±è§æåºå¦æ¯âï¼å客ååâé山绿水âï¼ä¹æ¥èªå ¶ä¸ãé«ä¸éæ©æç§ï¼ä¸ç´é½æåç¹ä¸è¥¿çç±å¥½ï¼ä¾¿ä»2018å¹´å¼å§ååå®¢ï¼æé´å¤æ¬¡æ´æ¢åååååï¼æåå®å
83为âå°è®°âï¼è®°å½æççæ´»åæèã 84å ´è¶£ç±å¥½ä¸ç®å¤ï¼å±æå¯æ°ï¼æ¯ä¸ä¸ªæ°ç åç§åãæå½±ç±å¥½è ï¼2025å¹´è´ä¹°äºç¸æºï¼ä½¿ç¨ææºï¼iPhone 15 Pro Maxï¼åç¸æºï¼Nikon Z5ï¼è®°å½çæ´»çç¢çï¼å欢é 读ï¼ä½å¾å¾é½æ¯â买书å¦å±±åï¼è¯»ä¹¦å¦æ½ä¸âãè½ç¶æ²¡å¦è¿è®¡ç®æºåç¼ç¨ï¼ä½åæ¬¢å ³æ³¨äºèç½ä¸çåç§æè¶£å 容ï¼ä½ æ£å¨è®¿é®çè¿ä¸ªå客ï¼ä¾¿æ¯ææ ¹æ®ç½ä¸çæç¨æå»ºèæã 85ç½ç«ä½¿ç¨å¼æºç¨åº Hugoï¼è¿è¡å¨ Cloudflare Pages ä¸ï¼æå¨ Now 页é¢è®°å½æçç°ç¶ï¼ä»¥åå½åæ£å¨åçäºæ ï¼å¨ Notion ç»´æ¤ä¸ä¸ªåæå®å©åºï¼å享æä¹°è¿/使ç¨è¿ä¸å¼å¾æ¨èç产åï¼å¨ Quail å卿¥ï¼ä¸å®ææ´æ°ï¼å¦æå ´è¶£ï¼å¯ä»¥è®¢é ã 86ææ³å»ºè®¾ä¸ä¸ªä¾ä¸æå主交æµçå¹³å°ï¼ä¾¿å建äºä¸æå客å微信群ï¼ç®åå·²æ100å¤äººï¼å¦æä½ æå ´è¶£ï¼å¯ä»¥é è¯»ãæ¬¢è¿æ¥å°ä¸æå客åãæ¥ç详ç»å 容ãåæ¶ï¼æä¹è¿è¥çä¸ä¸ª Telegram é¢éï¼åå¸ä»»ä½ä¸å客ç¸å ³çå 容ã 87æ´ç´ çæ´»ï¼é«å°æèãï¼Plain living and High thinkingï¼ 88Self-Hosted Umamiï¼ç½ç«ç»è®¡å·¥å · Bitwardenï¼å¯ç 管çå·¥å · Hugoï¼ç®å使ç¨çå客ç¨åº èç³»æ Emailï¼[email protected] Twitterï¼@huhexian Telegramï¼@huhexian å客åå² 2018å¹´3æ17æ¥ é山绿水 åå®¢å»ºç« 2021å¹´10æ12æ¥ é山绿水 å客转让 2021å¹´10æ22æ¥ è¡è¨è¡è¯ å客建ç«ï¼éæ© Twenty Twelve ä¸»é¢ 2021å¹´12æ16æ¥ å° é山绿水 å客çæç« è¿ç§»è³ è¡è¨è¡è¯ å客 2021å¹´12æ26æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Arke 2022å¹´2æ9æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Twenty Twelve 2022å¹´4æ8æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Sulli 2022å¹´6æ1æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Paper 2022å¹´7æ15æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Wing 2022å¹´10æ12æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo 2023å¹´1æ6æ¥ å客ç¨åºæ´æ¢ä¸ºï¼WordPressï¼éç¨ Twenty Twelve ä¸»é¢ 2023å¹´4æ9æ¥ å客è¿è¡äº CloudCone 2023å¹´5æ5æ¥ å客ååæ´æ¢ä¸ºï¼zuofei.net 2023å¹´5æ5æ¥ å客åç§°æ´æ¢ä¸ºï¼ä»æ¯æ¨é 2023å¹´9æ7æ¥ å客ååæ´æ¢ä¸ºï¼yinji.org 2023å¹´9æ7æ¥ å客åç§°æ´æ¢ä¸ºï¼å°è®° 2024å¹´8æ25æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Dear 2025å¹´8æ30æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Berry 2.0 2026å¹´8æ4æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo"> 89 <meta itemprop="wordCount" content="88"> 90<meta name="referrer" content="no-referrer-when-downgrade" /> 91 92 <style> 93 94 :root { 95 --width-max: 720px; 96 --font-primary: "Verdana","PingFang SC", sans-serif; 97 --font-secondary: monospace; 98 --font-size-primary: 1em; 99 --font-size-secondary: 0.8em; 100 --bg-color-primary: #fdfdfd; 101 --bg-color-secondary: #f2f4f7; 102 --text-color-primary: #1a1a1a; 103 --text-color-secondary: #444; 104 --text-color-tertiary: #8c8c8c; 105 --link-color: #0066cc; 106 --link-visited-color: #551a8b; 107 --border-color: #d0d7de; 108 --upvoted-color: #fa8072; 109 } 110 111 @media (prefers-color-scheme: dark) { 112 113 :root { 114 --bg-color-primary: #121212; 115 --bg-color-secondary: #1c1f24; 116 --text-color-primary: #e5e5e5; 117 --text-color-secondary: #b3b3b7; 118 --text-color-tertiary: #a0a0a0; 119 --link-color: #6da6ff; 120 --link-visited-color: #b388ff; 121 --border-color: #30363d; 122 --upvoted-color: #ff6b6b; 123 } 124 } 125 126 body { 127 font-family: var(--font-primary); 128 font-size: var(--font-size-primary); 129 margin: auto; 130 padding: 20px; 131 max-width: var(--width-max); 132 text-align: left; 133 background-color: var(--bg-color-primary); 134 word-wrap: break-word; 135 overflow-wrap: break-word; 136 line-height: 1.5; 137 color: var(--text-color-primary); 138 } 139 140 h1, 141 h2, 142 h3, 143 h4, 144 h5, 145 h6, 146 strong, 147 b { 148 color: var(--text-color-primary); 149 } 150 151 h1, 152 h2, 153 h3, 154 h4, 155 h5, 156 h6 { 157 margin: 16px 0; 158 } 159 160 a { 161 color: var(--link-color); 162 cursor: pointer; 163 text-decoration: none; 164 } 165 166 a:hover { 167 text-decoration: underline; 168 } 169 170 .title { 171 text-decoration: none; 172 border: 0; 173 } 174 175 .title:hover { 176 text-decoration: none; 177 } 178 179 .title span { 180 font-weight: 400; 181 } 182 183 nav a { 184 margin-right: 8px; 185 } 186 187 textarea { 188 width: 100%; 189 font-size: 16px; 190 } 191 192 input { 193 font-size: 14px; 194 } 195 196 content { 197 line-height: 1.6; 198 } 199 200 table { 201 width: 100%; 202 border-collapse: collapse; 203 border: 1px solid var(--border-color); 204 border-radius: 4px; 205 } 206 207 th, 208 td { 209 border: 1px solid var(--border-color); 210 padding: 4px; 211 } 212 213 th { 214 background-color: var(--bg-color-secondary); 215 } 216 217 hr { 218 border: 0; 219 border-top: 1px dashed; 220 } 221 222 img { 223 max-width: 100%; 224 display: block; 225 margin-left: auto; 226 margin-right: auto; 227 border: 1px solid var(--border-color); 228 border-radius: 4px; 229 content-visibility: auto; 230 } 231 232 img[src*="#minipic"] { 233 max-width: 50%; 234 margin-left: 0; 235 margin-right: auto; 236 } 237 238 .image-caption figcaption { 239 text-align: center; 240 font-style: italic; 241 font-size: 0.8em; 242 margin-top: 0.6em; 243 color: var(--text-color-secondary); 244 } 245 246 .image-caption { 247 margin: auto; 248 } 249 250 i { 251 font-style: normal; 252 } 253 254 time { 255 font-family: var(--font-secondary); 256 font-size: 15px; 257 } 258 259 code { 260 font-family: var(--font-secondary); 261 background-color: var(--bg-color-secondary); 262 padding: 2px; 263 border-radius: 4px; 264 } 265 266 pre code { 267 display: block; 268 padding: 16px; 269 white-space: pre-wrap; 270 overflow-x: auto; 271 } 272 273 div.highlight pre { 274 border-radius: 4px; 275 } 276 277 div.highlight code { 278 background-color: var(--bg-color-secondary); 279 } 280 281 blockquote { 282 border-left: 4px solid var(--border-color); 283 color: var(--text-color-secondary); 284 margin: 0; 285 padding-left: 8px; 286 font-style: normal; 287 } 288 289 blockquote p { 290 margin: 0; 291 } 292 293 footer { 294 padding: 25px 0; 295 text-align: center; 296 font-size: var(--font-size-secondary); 297 } 298 299 ul li:has(input) { 300 list-style-type: none; 301 margin-left: -25.5px; 302 } 303 304 305 ul.blog-posts { 306 list-style-type: none; 307 padding: unset; 308 } 309 310 ul.blog-posts li { 311 display: flex; 312 } 313 314 ul.blog-posts li span { 315 flex: 0 0 130px; 316 } 317 318 ul.blog-posts li span.grouped { 319 flex: 0 0 80px; 320 } 321 322 ul.blog-posts li a:visited { 323 color: var(--link-visited-color); 324 } 325 326 327 div.toc { 328 position: fixed; 329 top: 50%; 330 left: calc( 331 (100vw + var(--width-max)) / 2 332 ); 333 transform: translateY(-50%); 334 width: calc((90vw - var(--width-max)) / 2); 335 max-height: 80vh; 336 overflow-y: auto; 337 border: none; 338 padding: 0; 339 margin: 0; 340 z-index: 99; 341 342 343 -ms-overflow-style: none; 344 scrollbar-width: none; 345 } 346 347 div.toc::-webkit-scrollbar {
348 349 display: none; 350 } 351 352 .toc-nav { 353 354 padding: 1.5rem; 355 } 356 357 .toc-nav ul { 358 359 list-style: none; 360 padding: 0; 361 margin: 0; 362 } 363 364 .toc-nav li { 365 366 margin: 8px 0; 367 } 368 369 .toc-nav a { 370 371 display: block; 372 text-decoration: none; 373 color: transparent; 374 padding: 0 12px; 375 transition: all 0.2s ease; 376 font-size: 0.9rem; 377 line-height: 1.4; 378 text-align: left; 379 white-space: nowrap; 380 overflow: hidden; 381 text-overflow: ellipsis; 382 max-width: 100%; 383 } 384 385 .toc-nav:hover a { 386 color: var(--text-color-tertiary); 387 } 388 389 .toc-nav a::before { 390 391 content: ""; 392 display: inline-block; 393 width: 16px; 394 height: 4px; 395 background-color: var(--text-color-tertiary); 396 border-radius: 16px; 397 margin-right: 12px; 398 vertical-align: middle; 399 } 400 401 .toc-nav ul ul a::before { 402 403 width: 12px; 404 margin-right: 16px; 405 } 406 407 .toc-nav ul ul ul a::before { 408 409 width: 8px; 410 margin-right: 20px; 411 } 412 413 .toc-nav a.active, 414 .toc-nav a:hover { 415 text-decoration: none; 416 color: var(--text-color-primary); 417 } 418 419 .toc-nav a.active::before, 420 .toc-nav a:hover::before { 421 background-color: var(--text-color-primary); 422 } 423 424 425 button.upvote-btn { 426 margin: 0; 427 padding: 0; 428 border: none; 429 background: none; 430 cursor: pointer; 431 display: flex; 432 flex-direction: column; 433 align-items: center; 434 color: var(--text-color-primary); 435 } 436 437 button.upvoted { 438 color: var(--upvoted-color); 439 } 440 441 span.upvote-count { 442 margin-top: -4px; 443 font-size: smaller; 444 } 445 446 447 body:has(.image-zoom-toggle:checked) { 448 overflow: hidden; 449 } 450 451 .image-zoom-container { 452 position: relative; 453 display: block; 454 } 455 456 .image-zoom-toggle { 457 display: none; 458 } 459 460 .image-zoom-label { 461 cursor: zoom-in; 462 display: block; 463 position: relative; 464 } 465 466 .image-zoom-label:focus { 467 outline: 2px solid var(--link-color); 468 outline-offset: 2px; 469 } 470 471 .zoomable-image { 472 transition: transform 0.3s ease; 473 } 474 475 476 .image-zoom-overlay { 477 display: none; 478 position: fixed; 479 top: 0; 480 left: 0; 481 right: 0; 482 bottom: 0; 483 background: rgba(0, 0, 0, 0.9); 484 z-index: 1000; 485 align-items: center; 486 justify-content: center; 487 padding: 20px; 488 margin: 0; 489 } 490 491 .image-zoom-toggle:checked ~ .image-zoom-overlay { 492 display: flex; 493 cursor: zoom-out; 494 } 495 496 497 .image-zoom-toggle:checked ~ .image-zoom-label { 498 cursor: default; 499 } 500 501 .image-zoom-toggle:checked ~ .image-zoom-overlay .zoomable-image { 502 max-width: 90vw; 503 max-height: 90vh; 504 width: auto; 505 height: auto; 506 transform: scale(1); 507 border: none; 508 border-radius: 8px; 509 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); 510 margin-left: auto !important; 511 margin-right: auto !important; 512 } 513 514 .image-zoom-toggle:checked ~ .image-zoom-overlay::before { 515 content: ""; 516 position: absolute; 517 top: 20px; 518 right: 20px; 519 width: 32px; 520 height: 32px; 521 background: rgba(255, 255, 255, 0.9); 522 border-radius: 50%; 523 cursor: pointer; 524 z-index: 1001; 525 } 526 527 .image-zoom-toggle:checked ~ .image-zoom-overlay::after { 528 content: "â"; 529 position: absolute; 530 top: 20px; 531 right: 20px; 532 width: 32px; 533 height: 32px; 534 display: flex; 535 align-items: center; 536 justify-content: center; 537 font-size: 18px; 538 font-weight: bold; 539 color: #000; 540 cursor: pointer; 541 z-index: 1002; 542 } 543 544 .image-zoom-toggle:checked ~ .image-zoom-overlay figcaption { 545 position: fixed; 546 bottom: 20px; 547 left: 50%; 548 transform: translateX(-50%); 549 background: rgba(0, 0, 0, 0.8); 550 color: white; 551 padding: 8px 16px; 552 border-radius: 4px; 553 font-size: 14px; 554 z-index: 1001; 555 max-width: 80vw; 556 text-align: center; 557 } 558 559 560 @media (max-width: 800px) { 561 img[src*="#minipic"] { 562 max-width: 100%; 563 margin-left: auto; 564 margin-right: auto; 565 } 566 567 div.toc { 568 display: none; 569 } 570 571 .image-zoom-label { 572 cursor: pointer; 573 } 574 575 .image-zoom-toggle:checked ~ .image-zoom-overlay { 576 padding: 10px; 577 } 578 579 .image-zoom-toggle:checked ~ .image-zoom-overlay::before, 580 .image-zoom-toggle:checked ~ .image-zoom-overlay::after { 581 top: 10px; 582 right: 10px; 583 width: 28px; 584 height: 28px; 585 font-size: 16px; 586 } 587 588 .image-zoom-toggle:checked ~ .image-zoom-overlay figcaption { 589 bottom: 10px; 590 font-size: 12px; 591 padding: 6px 12px; 592 } 593 } 594 595 596 597.recent-posts { 598 599 list-style: none; 600 601 padding-left: 0; 602 603 margin-top: 2rem; 604 605} 606 607 608.recent-posts li { 609 610 display: grid; 611 612 grid-template-columns: 120px 1fr; 613 614 margin-bottom: 1.2rem; 615 616 line-height: 1.3; 617 618} 619 620 621.recent-posts time { 622 623 color: #999; 624 625 font-size: 0.95rem; 626 627} 628 629 630.recent-posts a { 631 632 text-decoration: none; 633 634} 635 636 637.recent-posts a:hover { 638 639 text-decoration: underline; 640 641} 642</style>
643<script defer 644 src="https://umami.yinji.org/script.js" 645 data-website-id="814c9be9-342c-48a1-a0e4-d2ff28f6c0a4"> 646</script>
646</head> 647 648<body> 649 <header><a href="/" class="title"> 650 <h1>å°è®°</h1> 651</a> 652<nav><a href="/">Home</a> 653 654 655 656 657<a href="/about.html">About</a> 658 659 660 661 662<a href="/now.html">Now</a> 663 664 665 666 667<a href="/roll.html">Roll</a> 668 669 670 671<a href="/blog/">Blog</a> 672</nav> 673</header> 674 <main> 675 676 677<content> <p>2002å¹´åºçï¼æ±è¥¿äººãéå±±ï¼åèªè¾å¼ç¾è¯â<strong>æè§éå±±å¤å¦©åªï¼æéå±±è§æåºå¦æ¯</strong>âï¼å客ååâé山绿水âï¼ä¹æ¥èªå ¶ä¸ãé«ä¸éæ©æç§ï¼ä¸ç´é½æåç¹ä¸è¥¿çç±å¥½ï¼ä¾¿ä»2018å¹´å¼å§ååå®¢ï¼æé´å¤æ¬¡æ´æ¢åååååï¼æåå®å为â<strong>å°è®°</strong>âï¼è®°å½æççæ´»åæèã</p> 678<p>å ´è¶£ç±å¥½ä¸ç®å¤ï¼å±æå¯æ°ï¼æ¯ä¸ä¸ªæ°ç åç§åãæå½±ç±å¥½è ï¼2025å¹´<a href="/nikon-z5.html">è´ä¹°äºç¸æº</a>ï¼ä½¿ç¨ææºï¼iPhone 15 Pro Maxï¼åç¸æºï¼Nikon Z5ï¼è®°å½çæ´»çç¢çï¼å欢é 读ï¼ä½å¾å¾é½æ¯â买书å¦å±±åï¼è¯»ä¹¦å¦æ½ä¸âãè½ç¶æ²¡å¦è¿è®¡ç®æºåç¼ç¨ï¼ä½åæ¬¢å ³æ³¨äºèç½ä¸çåç§æè¶£å 容ï¼ä½ æ£å¨è®¿é®çè¿ä¸ªå客ï¼ä¾¿æ¯ææ ¹æ®ç½ä¸çæç¨æå»ºèæã</p> 679<p>ç½ç«ä½¿ç¨å¼æºç¨åº Hugoï¼è¿è¡å¨ Cloudflare Pages ä¸ï¼æå¨ <a href="/now.html">Now</a> 页é¢è®°å½æçç°ç¶ï¼ä»¥åå½åæ£å¨åçäºæ ï¼å¨ Notion ç»´æ¤ä¸ä¸ª<a href="https://huhexian.notion.site/66a7d139a06b46ccac9236d1e58b9a2a" rel="noopener noreferrer">åæå®å©åº</a>ï¼å享æä¹°è¿/使ç¨è¿ä¸å¼å¾æ¨èç产åï¼å¨ <a href="https://letter.yinji.org/" rel="noopener noreferrer">Quail</a> å卿¥ï¼ä¸å®ææ´æ°ï¼å¦æå ´è¶£ï¼å¯ä»¥è®¢é ã</p> 680<p>ææ³å»ºè®¾ä¸ä¸ªä¾ä¸æå主交æµçå¹³å°ï¼ä¾¿å建äº<strong>䏿å客å微信群</strong>ï¼ç®åå·²æ100å¤äººï¼å¦æä½ æå ´è¶£ï¼å¯ä»¥é 读ã<a href="/welcome-to-the-chinese-blogosphere.html">æ¬¢è¿æ¥å°ä¸æå客å</a>ãæ¥ç详ç»å 容ãåæ¶ï¼æä¹è¿è¥çä¸ä¸ª <a href="https://t.me/findblog" rel="noopener noreferrer">Telegram é¢é</a>ï¼åå¸ä»»ä½ä¸å客ç¸å ³çå 容ã</p> 681<p><strong>æ´ç´ çæ´»ï¼é«å°æèãï¼Plain living and High thinkingï¼</strong></p> 682<h2 id="self-hosted">Self-Hosted</h2> 683<ul> 684<li><a href="https://github.com/umami-software/umami" rel="noopener noreferrer">Umami</a>ï¼ç½ç«ç»è®¡å·¥å ·</li> 685<li><a href="https://github.com/bitwarden" rel="noopener noreferrer">Bitwarden</a>ï¼å¯ç 管çå·¥å ·</li> 686<li><a href="https://gohugo.io" rel="noopener noreferrer">Hugo</a>ï¼ç®å使ç¨çå客ç¨åº</li> 687</ul> 688<h2 id="èç³»æ">èç³»æ</h2> 689<ul> 690<li>Emailï¼<a href="/cdn-cgi/l/email-protection#e58880a59c8c8b8f8ccb8a9782"><span class="__cf_email__" data-cfemail="8de0e8cdf4e4e3e7e4a3e2ffea">[email protected]</span></a></li> 691<li>Twitterï¼<a href="https://x.com/huhexian" rel="noopener noreferrer">@huhexian</a></li> 692<li>Telegramï¼<a href="https://t.me/huhexian" rel="noopener noreferrer">@huhexian</a></li> 693</ul> 694<h2 id="å客åå²">å客åå²</h2> 695<ul> 696<li>2018å¹´3æ17æ¥ é山绿水 å客建ç«</li> 697<li>2021å¹´10æ12æ¥ é山绿水 å客转让</li> 698<li>2021å¹´10æ22æ¥ è¡è¨è¡è¯ å客建ç«ï¼éæ© Twenty Twelve 主é¢</li> 699<li>2021å¹´12æ16æ¥ å° é山绿水 å客çæç« è¿ç§»è³ è¡è¨è¡è¯ å客</li> 700<li>2021å¹´12æ26æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Arke</li> 701<li>2022å¹´2æ9æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Twenty Twelve</li> 702<li>2022å¹´4æ8æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Sulli</li> 703<li>2022å¹´6æ1æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Paper</li> 704<li>2022å¹´7æ15æ¥ ä¸»é¢æ´æ¢ä¸ºï¼Wing</li> 705<li>2022å¹´10æ12æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo</li> 706<li>2023å¹´1æ6æ¥ å客ç¨åºæ´æ¢ä¸ºï¼WordPressï¼éç¨ <a href="https://github.com/huhexian/2012-huhexian" rel="noopener noreferrer">Twenty Twelve</a> 主é¢</li> 707<li>2023å¹´4æ9æ¥ å客è¿è¡äº <a href="/cloudcone.html">CloudCone</a></li> 708<li>2023å¹´5æ5æ¥ å客ååæ´æ¢ä¸ºï¼zuofei.net</li> 709<li>2023å¹´5æ5æ¥ å客åç§°æ´æ¢ä¸ºï¼ä»æ¯æ¨é</li> 710<li>2023å¹´9æ7æ¥ å客ååæ´æ¢ä¸ºï¼yinji.org</li> 711<li>2023å¹´9æ7æ¥ å客åç§°æ´æ¢ä¸ºï¼å°è®°</li> 712<li>2024å¹´8æ25æ¥ ä¸»é¢æ´æ¢ä¸ºï¼<a href="https://yayu.net/projects/wordpress-dear" rel="noopener noreferrer" title="Dear">Dear</a></li> 713<li>2025å¹´8æ30æ¥ ä¸»é¢æ´æ¢ä¸ºï¼<a href="https://fatesinger.com/105431" rel="noopener noreferrer" title="Berry 2.0">Berry 2.0</a></li> 714<li>2026å¹´8æ4æ¥ å客ç¨åºæ´æ¢ä¸ºï¼Hugo</li> 715</ul> 716 </content> 717 718<p> 719 720</p> 721 722 723 724 725<div class="upvote-container"> 726<small class="upvote"> 727 <button class="upvote-btn" id="upvote-btn" aria-label="Upvote this post" aria-pressed="false"> 728 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"> 729 <polyline points="17 11 12 6 7 11"></polyline> 730 <polyline points="17 18 12 13 7 18"></polyline> 731 </svg> 732 <span class="upvote-count" id="upvote-count">0</span> 733 </button> 734</small> 735</div>
vendor: 110 bytes, lines 735-737
735 736 737<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
737<script> 738 let hasUpvoted = false; 739 let upvoteBtn; 740 let upvoteCount; 741 742 743 const entity = "about.html"; 744 const upvoteBaseUrl = "https://kudos.yinji.org".replace(/\/+$/, ''); 745 746 function upvoteUrl(action = '') { 747 return `${upvoteBaseUrl}/${encodeURIComponent(entity)}${action}`; 748 } 749 750 async function requestKudos(url, options) { 751 const response = await fetch(url, options); 752 let data; 753 try { 754 data = await response.json(); 755 } catch { 756 throw new Error(`Kudos request failed (${response.status})`); 757 } 758 if (!response.ok) { 759 throw new Error(data.error ?? `Kudos request failed (${response.status})`); 760 } 761 return data; 762 } 763 764 function renderUpvote({ count, hasKudos }) { 765 upvoteCount.innerText = count; 766 hasUpvoted = hasKudos; 767 upvoteBtn.classList.toggle('upvoted', hasUpvoted); 768 upvoteBtn.setAttribute('aria-pressed', String(hasUpvoted)); 769 upvoteBtn.setAttribute('aria-label', hasUpvoted ? 'Remove your upvote' : 'Upvote this post'); 770 } 771 772 773 774 document.addEventListener('DOMContentLoaded', function() { 775 upvoteBtn = document.getElementById('upvote-btn'); 776 upvoteCount = document.getElementById('upvote-count'); 777 loadUpvote(); 778 779 upvoteBtn.addEventListener('click', toggleUpvote); 780 }); 781 782 async function loadUpvote() { 783 try { 784 const [count, status] = await Promise.all([ 785 requestKudos(upvoteUrl()), 786 requestKudos(upvoteUrl('/kudos')), 787 ]); 788 renderUpvote({ count: count.count, hasKudos: status.hasKudos }); 789 } catch (error) { 790 console.error('Failed to load upvote:', error); 791 } 792 } 793 794 async function toggleUpvote() { 795 upvoteBtn.disabled = true; 796 797 try { 798 const state = await requestKudos(upvoteUrl('/kudos'), { 799 method: hasUpvoted ? 'DELETE' : 'POST', 800 }); 801 renderUpvote(state); 802 } catch (error) { 803 console.error('Failed to update upvote:', error); 804 } finally { 805 upvoteBtn.disabled = false; 806 } 807 } 808</script>
808 809 810 811 812 813 814<div class="toc"> 815 816 817<aside class="toc-nav" role="navigation" aria-label="ç®å½"> 818 <nav id="TableOfContents"> 819 <ul> 820 <li><a href="#self-hosted">Self-Hosted</a></li> 821 <li><a href="#èç³»æ">èç³»æ</a></li> 822 <li><a href="#å客åå²">å客åå²</a></li> 823 </ul> 824</nav> 825</aside> 826
827<script> 828document.addEventListener('DOMContentLoaded', function () { 829 const tocNav = document.querySelector('.toc-nav'); 830 if (!tocNav) return; 831 832 const tocLinks = Array.from(tocNav.querySelectorAll('a')); 833 if (!tocLinks.length) return; 834 835 836 const idToLink = new Map(); 837 const headings = []; 838 const seen = new Set(); 839 840 for (const link of tocLinks) { 841 const hash = link.hash || link.getAttribute('href'); 842 if (!hash || hash.charAt(0) !== '#') continue; 843 const id = decodeURIComponent(hash.slice(1)); 844 idToLink.set(id, link); 845 846 if (!seen.has(id)) { 847 const h = document.getElementById(id); 848 if (h) { 849 headings.push(h); 850 seen.add(id); 851 } 852 } 853 } 854 855 if (!headings.length) return; 856 857 const OFFSET = 100; 858 859 860 let currentActive = null; 861 let currentChain = []; 862 863 function buildChainFromLink(link) { 864 const chain = []; 865 if (!link) return chain; 866 chain.push(link); 867 let li = link.closest('li'); 868 while (li) { 869 const parentLi = li.parentElement ? li.parentElement.closest('li') : null; 870 if (parentLi) { 871 const parentLink = parentLi.querySelector('a'); 872 if (parentLink) chain.push(parentLink); 873 } 874 li = parentLi; 875 } 876 return chain; 877 } 878 879 function applyActiveChain(newLink) { 880 if (newLink === currentActive) return; 881 const newChain = buildChainFromLink(newLink); 882 883 884 for (const el of currentChain) { 885 if (!newChain.includes(el)) el.classList.remove('active'); 886 } 887 888 for (const el of newChain) { 889 if (!el.classList.contains('active')) el.classList.add('active'); 890 } 891 892 currentActive = newLink || null; 893 currentChain = newChain; 894 } 895 896 897 tocNav.addEventListener('click', function (e) { 898 const link = e.target.closest('a'); 899 if (!link || !tocNav.contains(link)) return; 900 901 const hash = link.hash || link.getAttribute('href'); 902 if (!hash || hash.charAt(0) !== '#') return; 903 904 const id = decodeURIComponent(hash.slice(1)); 905 const target = document.getElementById(id); 906 if (!target) return; 907 908 e.preventDefault(); 909 910 const reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; 911 target.scrollIntoView({ 912 behavior: reduceMotion ? 'auto' : 'smooth', 913 block: 'start' 914 }); 915 916 917 applyActiveChain(link); 918 }); 919 920 921 function updateActiveLink() { 922 let linkToActivate = null; 923 for (let i = headings.length - 1; i >= 0; i--) { 924 const top = headings[i].getBoundingClientRect().top; 925 if (top <= OFFSET) { 926 linkToActivate = idToLink.get(headings[i].id) || null; 927 break; 928 } 929 } 930 applyActiveChain(linkToActivate); 931 } 932 933 934 let ticking = false; 935 function onScrollOrResize() { 936 if (!ticking) { 937 requestAnimationFrame(function () { 938 updateActiveLink(); 939 ticking = false; 940 }); 941 ticking = true; 942 } 943 } 944 945 window.addEventListener('scroll', onScrollOrResize, { passive: true }); 946 window.addEventListener('resize', onScrollOrResize, { passive: true }); 947 948 949 updateActiveLink(); 950}); 951</script>
951 952 953 954</div> 955 956 957 958 959 960 961 </main> 962 <footer> 963 964 965Subscribe via <a href="/feed.xml">RSS</a> or just <a href="/cdn-cgi/l/email-protection#3c51597c455552565512534e5b">say hello</a>. 966<br /> 967 968 969 970 971 972 973 974 975Made with 976<a href="https://github.com/rokcso/hugo-bearneo/">Hugo Bear Neo</a>. 977<br /> 978 979 980 981 982Copyright © 2018-2026, huhexian. 983 984 985<br>ðºï¸ <a href="/sitemap.xml">Sitemap</a>. 986<br /> 987 988</footer>
vendor: 117 bytes, lines 988-993
988 989 990 991 992 993<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
993<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"9b67f7b738b648f3825234b327313b83","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 993
993
994<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a44e494a5d546182',t:'MTc5MTA1NTAzOQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
994</body> 995 996</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.