1<!DOCTYPE html><html lang="zh-CN" data-astro-cid-yu3cdcui> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="åä»£ç æ¯çç±ï¼åå°ä¸çå
满ç±ï¼"><title>æç« </title><link rel="preconnect" href="https://www.googletagmanager.com">
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1G-PL7S2LX8EX
vendor: 11 bytes, line 1
1"></script>
1<script>const gaId = "G-PL7S2LX8EX"; 2window.dataLayer = window.dataLayer || []; 3function gtag(){dataLayer.push(arguments);} 4gtag('js', new Date()); 5gtag('config', gaId);</script>
5<link rel="icon" type="image/x-icon" href="/favicon.ico"><link rel="stylesheet" href="/_astro/_slug_.BO2eiwd2.css"> 6<link rel="stylesheet" href="/_astro/_slug_.CdTi_Fns.css">
6<script type="module" src="/_astro/page.DsfK6RKs.js"></script>
6</head> <body class="antialiased bg-white dark:bg-neutral-950" data-astro-cid-yu3cdcui> <div class="absolute w-full h-auto" style="z-index:-1"> <div class="absolute top-0 left-0 w-1/2 h-auto bg-neutral-100 dark:bg-neutral-800"> <div class="absolute inset-0 z-30 w-full h-full pointer-events-none bg-gradient-to-tl from-white dark:from-neutral-950 from-50% via-90% to-100% via-transparent to-transparent"></div> <div class="flex flex-col w-full h-full border-t border-l divide-y divide-dashed divide-neutral-300 dark:divide-neutral-700 border-neutral-300 dark:border-neutral-900"> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divi
6de-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> </div> </div> <div class="absolute top-0 right-0 w-1/2 h-auto bg-neutral-100 dark:bg-neutral-800"> <div class="absolute inset-0 z-30 w-full h-full pointer-events-none bg-gradient-to-tr from-white dark:from-neutral-950 from-50% via-90% to-100% via-trans
6parent to-transparent"></div> <div class="flex flex-col w-full h-full border-t border-l divide-y divide-dashed divide-neutral-300 dark:divide-neutral-700 border-neutral-300 dark:border-neutral-900"> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divide-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> <div class="relative flex w-full divide-x h-[30px] sm:h-[45px] md:h-[60px] xl:h-[88px] divi
6de-neutral-300 dark:divide-neutral-700 divide-dashed"> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> <div class="w-full h-auto bg-white dark:bg-neutral-950 aspect-square {classes}"></div> </div> </div> </div> </div> <!-- This is an invisible div with relative position so that it takes up the height of the menu (because menu is absolute/fixed) --><div class="relative w-full h-20 opacity-0 pointer-events-none"></div> <header id="header" class="absolute top-0 z-50 w-full h-20"> <div class="flex items-center justify-between h-full max-w-5xl pl-6 pr-4 mx-auto border-b border-l-0 border-r-0 border-transparent select-none lg:border-r lg:border-l lg:rounded-b-xl"> <a href="/" class="h-5 text-base group relative z-30 flex items-center space-x-2 text-black dark:text-white font-semibold"> <img src="/favicon.ico" alt="DIYgod" width="20" height="20" decoding="async" class="size-5 object-contain"> <span class="text-nowrap">Hi, DIYgod</span> </a> <div id="mobileMenuBackground" onclick="closeMobileMenu()" class="fixed inset-0 z-20 hidden w-screen h-screen duration-300 ease-out bg-white/90 dark:bg-neutral-950/90"></div> <nav class="relative z-30 flex flex-row-reverse justify-start w-full text-sm sm:justify-end text-neutral-500 dark:text-neutral-400 sm:flex-row"> <div id="openMenu" class="flex flex-col items-end justify-center w-6 h-6 ml-4 cursor-pointer sm:hidden"> <svg class="w-8 h-8 dark:text-neutral-200" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path d="M4 8h16M4 16h16"></path></svg> </div> <div id="closeMenu" class="flex flex-col items-end justify-center hidden w-6 h-6 ml-4 -translate-x-1 cursor-pointer sm:hidden">
6 <svg class="w-6 h-6 text-neutral-600 dark:text-neutral-200" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path d="M6 18L18 6M6 6l12 12"></path></svg> </div> <div id="menu" class="fixed top-[75px] ease-out duration-300 sm:top-0 w-full left-0 sm:py-0 pt-7 pb-4 dm:mx-0 left-0 z-40 flex-col items-end justify-start hidden w-full h-auto text-sm sm:text-base sm:h-auto sm:relative sm:flex-row sm:flex sm:text-sm sm:w-auto sm:pr-0 sm:pt-0"> <div class="absolute inset-0 top-0 right-0 block w-full h-full px-3 sm:hidden"> <div class="relative w-full h-full bg-white border border-dashed border-neutral-300 dark:border-neutral-700 backdrop-blur-sm rounded-xl dark:bg-neutral-950"></div> </div> <a href="/" class="relative flex items-center justify-center w-full px-3 py-2 font-medium tracking-wide text-center duration-200 ease-out sm:py-0 sm:mb-0 md:w-auto hover:text-neutral-900 dark:hover:text-white"> é¦é¡µ </a><a href="/posts" class="relative flex items-center justify-center w-full px-3 py-2 font-medium tracking-wide text-center duration-200 ease-out sm:py-0 sm:mb-0 md:w-auto hover:text-neutral-900 dark:hover:text-white"> æç« </a><a href="/projects" class="relative flex items-center justify-center w-full px-3 py-2 font-medium tracking-wide text-center duration-200 ease-out sm:py-0 sm:mb-0 md:w-auto hover:text-neutral-900 dark:hover:text-white"> é¡¹ç® </a><a href="/friends" class="relative flex items-center justify-center w-full px-3 py-2 font-medium tracking-wide text-center duration-200 ease-out sm:py-0 sm:mb-0 md:w-auto hover:text-neutral-900 dark:hover:text-white"> åé» </a><a href="/about" class="relative flex items-center justify-center w-full px-3 py-2 font-medium tracking-wide text-center duration-200 ease-out sm:py-0 sm:mb-0 md:w-auto hover:text-neutral-900 dark:hover:text-white"> å ³äº </a> </div> <div class="relative flex items-center" id="langSwitcher"> <button type="button" class="flex items-center gap-1.5 px-3 font-medium tracking-wide text-neutral-500 dark:text-neutral-400 hover:text-neutral-900 dark:hover:text-white transition-colors duration-200" id="langToggle" aria-haspopup="true" aria-expanded="false" aria-label="Switch language"> <svg class="w-5 h-5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 20c.9-3.068 2.116-6.272 3.689-9.118a.92.92 0 0 1 1.622 0C17.884 13.728 19.1 16.932 20 20m-7.65-3h6.3M4 6h5m0 0h3M9 6V4m3 2h2m-2 0c0 2.39-1.071 4.78-3 6.744m0 0C7.7 14.066 6.012 15.195 4 16m5-3.256C7.887 11.61 7.06 10.335 6.559 9M9 12.744c1 1.018 2.23 1.92 3.662 2.65"></path> </svg> <svg class="w-3 h-3 transition-transform hidden sm:block" id="langChevron" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path> </svg> </button> <div id="langDropdown" class="absolute right-0 top-full mt-2 w-28 bg-white dark:bg-neutral-900 border border-neutral-200 dark:border-neutral-700 rounded-lg shadow-lg opacity-0 invisible transition-all duration-200 z-50"> <a href="/posts/" class="block px-4 py-2 text-sm rounded-t-lg bg-neutral-100 dark:bg-neutral-800 text-neutral-900 dark:text-white font-medium"> 7䏿 8</a> <a href="/en/posts/" class="block px-4 py-2 text-sm rounded-b-lg text-neutral-600 dar
8k:text-neutral-300 hover:bg-neutral-50 dark:hover:bg-neutral-800"> 9English 10</a> </div> </div>
10<script> 11 const langSwitcher = document.getElementById("langSwitcher"); 12 const langToggle = document.getElementById("langToggle"); 13 const langDropdown = document.getElementById("langDropdown"); 14 const langChevron = document.getElementById("langChevron"); 15 16 let isOpen = false; 17 18 function toggleDropdown() { 19 isOpen = !isOpen; 20 if (isOpen) { 21 langDropdown.classList.remove("opacity-0", "invisible"); 22 langDropdown.classList.add("opacity-100", "visible"); 23 langChevron.classList.add("rotate-180"); 24 langToggle.setAttribute("aria-expanded", "true"); 25 } else { 26 langDropdown.classList.add("opacity-0", "invisible"); 27 langDropdown.classList.remove("opacity-100", "visible"); 28 langChevron.classList.remove("rotate-180"); 29 langToggle.setAttribute("aria-expanded", "false"); 30 } 31 } 32 33 langToggle.addEventListener("click", (e) => { 34 e.stopPropagation(); 35 toggleDropdown(); 36 }); 37 38 document.addEventListener("click", (e) => { 39 if (!langSwitcher.contains(e.target) && isOpen) { 40 toggleDropdown(); 41 } 42 }); 43 44 document.addEventListener("keydown", (e) => { 45 if (e.key === "Escape" && isOpen) { 46 toggleDropdown(); 47 } 48 }); 49</script>
49 <div id="darkToggle" class="relative items-center pl-6 ml-4 font-medium tracking-wide cursor-pointer text-neutral-800 group dark:text-white hidden"> <div class="absolute left-0 flex items-center justify-center w-6 h-6 overflow-hidden border-b border-transparent horizon group-hover:border-neutral-600"> <svg class="absolute w-6 h-6 transition duration-700 transform ease" id="sun" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path 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"></path></svg> <svg class="absolute hidden w-6 h-6 transition duration-700 transform ease" id="moon" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path 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"></path></svg> </div> <span class="hidden sm:inline-block"> <span id="dayText" class="ml-2">Day mode</span> <span id="nightText" class="hidden ml-2">Night mode</span> </span> </div> </nav> </div> </header> <section class="relative z-20 max-w-4xl mx-auto my-12 px-7 lg:px-0"> <div class="relative z-20 w-full mx-auto lg:mx-0"> <h2 class="text-2xl font-bold tracking-tight text-neutral-900 dark:text-neutral-100 sm:text-3xl lg:text-4xl"> æç« </h2>
49 <p class="mt-3 text-sm leading-6 text-neutral-600 dark:text-neutral-400 sm:mt-4 lg:mt-6 sm:leading-7 lg:leading-8 sm:text-base lg:text-lg"> </p> </div> <div class="z-50 flex flex-col w-full gap-4 my-8"> <label class="sr-only" for="searchInput">æç´¢å ³é®è¯</label> <div class="relative"> <input id="searchInput" type="search" name="q" placeholder="ä»æç« æ é¢åå 容䏿¥æ¾å ³é®è¯" class="w-full px-4 py-3 text-sm border border-dashed rounded-xl outline-none bg-white/70 dark:bg-neutral-900/70 border-neutral-300 dark:border-neutral-700 focus:border-neutral-500 focus:dark:border-neutral-500" autocomplete="off"> <div class="absolute inset-y-0 right-3 flex items-center text-neutral-400 dark:text-neutral-500 pointer-events-none"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4"> <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-3.5-3.5m0 0A7.5 7.5 0 1 0 5 5a7.5 7.5 0 0 0 12.5 12.5Z"></path> </svg> </div> </div> <div class="text-xs text-neutral-500 dark:text-neutral-400"> <span id="resultsCount">89</span> ç¯æç« 50</div> <div id="searchEmpty" class="hidden text-sm text-neutral-600 dar
50k:text-neutral-400"> 51没æå¹é çæç« ï¼æ¢ä¸ªå ³é®è¯è¯è¯ã 52</div> <div id="searchResults" class="flex flex-col items-stretch w-full gap-5"> <div data-post-slug="2025" data-post-link="/2025" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2025" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2025 éæ°å®ä¹ççæ´» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
52 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>AI ç产åé©å½ä¸è¿·è«ãè¿æ¥æ°çå½ãåªåæé±ãä¸åæ¶å®ç弿ºæç»´ãèµåçæ´»</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2025å¹´12æ25æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93" class="hover:underline decoration-dashed underline-offset-4">#å¹´ç»æ»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/cover.C24HauLY_269oFg.webp" alt="2025 éæ°å®ä¹ççæ´»" loading="lazy" decoding="async" fetchpriority="auto" width="1919" height="1079" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="europe-travel" data-post-link="/europe-travel" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/europe-travel" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 欧洲æ
游VLOG | å·´å¡ç½é£ ç½é©¬ 梵èå å¨å°¼æ¯ ç±³å
° èé»ä¸ å ç¹æè¯ å·´é» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
52 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>2022å¹´12æ...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2025å¹´12æ20æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/vlog" class="hover:underline decoration-dashed underline-offset-4">#vlog</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/cover.BLf3RScM_Z1cjLo6.webp" alt="欧洲æ
游VLOG | å·´å¡ç½é£ ç½é©¬ 梵èå å¨å°¼æ¯ ç±³å
° èé»ä¸ å ç¹æè¯ å·´é»" loading="lazy" decoding="async" fetchpriority="auto" width="3840" height="2160" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="beancount" data-post-link="/beancount" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/beancount" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸å¤ç¥å¨ Beancountï¼Crypto ä¸ AI æ¶ä»£çå¤å¼è®°è´¦ç»ææ¹æ¡ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
52 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>å¾å¤æ¶åæä»¬è§å¾è®°è´¦éº»ç¦ï¼å¹¶ä¸æ¯ UI ä¸å¤æ¼äº®ã交äºä¸å¤é¡ºæ»ï¼èæ¯è®°è´¦æ¹æ³ä¸å¤ç§å¦ã彿¹æ³è¶³å¤ç§å¦æ¶ï¼ä½ çè³ä¸éè¦ UIï¼ä¸ä¸ª CLI + å ä¸ªçº¯ææ¬æä»¶ + ä¸å¥æ¸
æ°è¯æ³ï¼å°±è½æè´¢å¡ä¸çæè¿°å¾é常åç¡®</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2025å¹´12æ12æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/fava-1.C8Cigb3S_1D95z3.webp" alt="ä¸å¤ç¥å¨ Beancountï¼Crypto ä¸ AI æ¶ä»£çå¤å¼è®°è´¦ç»ææ¹æ¡" loading="lazy" decoding="async" fetchpriority="auto" width="2956" height="2006" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="6-year-of-rsshub" data-post-link="/6-year-of-rsshub" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/6-year-of-rsshub" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸ä¸ªå
å²å¼æºé¡¹ç®çå´©æºä¸æ°ç </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
52 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ææä¸ä¸ªç»´æ¤äºå å¹´ç弿ºé¡¹ç®ââ RSSHubï¼å®æ£å¨é¢ä¸´å´©æº 53 54表é¢ä¸ï¼å®ææ¥è¿ 30k Starsã900 å¤ Contributorsãæ¯æ 3 äº¿å¤æ¬¡è¯·æ±åæ°ä¸æ¸ çç¨æ·ãæ¯æå ååçèµå©ãææºæºä¸æç issue å prã代ç å 乿¯å¤©æ´æ°ï¼é常å¥åº·åå æ»¡æ´»å</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2024å¹´3æ10æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/QmUofaeyjsm8F65Z93HQxYLxFYzCZN9LimW5Q5y91zTTfQ.ToFKWVTB_2jfA2s.webp" alt="ä¸ä¸ªå å²å¼æºé¡¹ç®çå´©æºä¸æ°ç" loading="lazy" decoding="async" fetchpriority="auto" width="1770" height="676" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="palworld" data-post-link="/palworld" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/palworld" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> åå¸é²çæ´»å¨ä¸èµ·çä¸¤å¨ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
54 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>åªä¸ªå°ç·å©æ²¡å¹»æ³è¿çæ´»å¨è¿æ ·ä¸ä¸ªå
满å®å¯æ¢¦ä¼ä¼´çä¸çï¼å®ä»¬è½å¬æä¸æ¿æå¾å¬æä»¬è¯´è¯ï¼æçä¸åçç¹ç¹å强大çæè½ï¼èä¸é½å¾å¯ç±ï¼æä»¬å¯ä»¥è·å®ä»¬ç¡è§åé¥ãå¹¶è©ä½ææ¢ç´¢ä¸çï¼æ°¸è¿ä¸åå¤ç¬ï¼ä¸ç®¡æ¯è°é½å¯ä»¥æ¾å°æéåèªå·±çå®å¯æ¢¦</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2024å¹´2æ18æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/QmSSQnJ3wRPuyGGP7VzBkGq91vN6Ybs3KSQxKM6NKSWpEF.B3YmnQAi_Zr3xSd.webp" alt="åå¸é²çæ´»å¨ä¸èµ·ç两å¨" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="twitter-ddos" data-post-link="/twitter-ddos" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/twitter-ddos" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> Twitter 坹弿ºé¡¹ç®åèµ· DDoS æ»å» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
54 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>Twitter 被马æ¯å
æ¶è´åï¼ä»å»å¹´ 8 æå¼å§ï¼ä»ä»¬å¯¹å¼æºç¬¬ä¸æ¹éæåç¬¬ä¸æ¹å®¢æ·ç«¯è¿è¡äºä¸ç³»åæéæéçæååæ»å»ï¼è¿æ ·åæ¯ä¸ºäºé»æ¢ç¨æ·éè¿é宿¹å®¢æ·ç«¯è®¿é®åä½¿ç¨ Twitterï¼æ¥å¢å å
¬å¸ç广ååä¼åè¥æ¶</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2024å¹´1æ28æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/QmZAGWbWRjadtgCAF6SoAgmRb3jMi4JfEatucSbEeQ1Gf7.CxJhkFJD_166IEW.webp" alt="Twitter 坹弿ºé¡¹ç®åèµ· DDoS æ»å»" loading="lazy" decoding="async" fetchpriority="auto" width="3840" height="2705" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="unified-markdown" data-post-link="/unified-markdown" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/unified-markdown" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å¦ä½ä¼é
ç¼è¯ä¸ä¸ª Markdown ææ¡£ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
54 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>Markdown æ¯ä¸ç§å¹¿æ³ä½¿ç¨çè½»é级æ è®°è¯è¨ï¼å
è®¸äººä»¬ä½¿ç¨æè¯»æåççº¯ææ¬æ ¼å¼ç¼åææ¡£ï¼ä¹æ¯ xLog 主è¦ä½¿ç¨çæç« æ ¼å¼ï¼æ¬æå°±ä»¥ xLog Flavored Markdown ä¸ºä¾æ¥è¯´æå¦ä½ä¼é
å°è§£æä¸ä¸ª Markdown ææ¡£</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2024å¹´1æ18æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/QmYJmmuE1zCbdEXUpWL7T9ECqv6pqrtJrukqMcZarvgcQj.bxr-BC8d_Z2lJoX6.webp" alt="å¦ä½ä¼é
ç¼è¯ä¸ä¸ª Markdown ææ¡£" loading="lazy" decoding="async" fetchpriority="auto" width="2880" height="1620" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2023" data-post-link="/2023" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2023" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2023 å¹³ç¨³è¿æ¸¡ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
54 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span></2023> 55<2024> 56 57åå°è§å¾ä»å¹´ç»åäºå·¨å¤§çååï¼ä»èæ ¼å °æ¬å°æ°å å¡ï¼ä»æªå©å°å·²å©ï¼ä»ä¸å®¶ä¸¤å£åæäºä¸å®¶ä¸å£ï¼ä½æè§å¾é½å¨é¢æä¹ä¸ï¼æä»¥æè§è¿ç®å¾å¹³ç¨³</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2024å¹´1æ8æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93" class="hover:underline decoration-dashed underline-offset-4">#å¹´ç»æ»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/QmQYb5iJNqQVmi3rHUZbfMQhebJwYXp84QVnTiEHxXGZjg.D-cbUcqp_1FdKTH.webp" alt="2023 å¹³ç¨³è¿æ¸¡" loading="lazy" decoding="async" fetchpriority="auto" width="8192" height="4608" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="10k-twitter-accounts" data-post-link="/10k-twitter-accounts" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/10k-twitter-accounts" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> è½»æ¾å建ä¸ä¸ä¸ª Twitter è´¦å· </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
57 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>Twitter å¨ 8 æå³å®äºå
¨é¢éå¶å
¬å¼è®¿é®å API æ¥å£ï¼å¯¼è´ç¬¬ä¸æ¹éæåæ æ³åæ£å¸¸å·¥ä½ã弿¾ç¨æ·æ°æ®è¢«ç»æ¶æç§äººæè´¢å·¥å
·ï¼æ¾ç»ç Open Web æ æ Twitter ç«æ²¦è½å°è¿ç§å¢å°ï¼æ°å奴é¶å¶å¨æä¸åºè¯¥çå°æ¹åºç°ï¼ä»¤äººåå</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´12æ15æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/QmckDsXfXzc7SXt3adb3mYHypPg1wvF55kjcsrys9tL216.fiZ2JE5D_Zx9JGq.webp" alt="è½»æ¾å建ä¸ä¸ä¸ª Twitter è´¦å·" loading="lazy" decoding="async" fetchpriority="auto" width="4512" height="2538" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="uk-travel-edinburgh" data-post-link="/uk-travel-edinburgh" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/uk-travel-edinburgh" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> è±å½æ
游VLOG | ç±ä¸å ¡å£è¯è </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
57 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>2021å¹´12æææ...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´9æ26æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/vlog" class="hover:underline decoration-dashed underline-offset-4">#vlog</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeih7hnjiwgbdr7ir7ry6nlhqoyzxj6ssqswrhzbvkxfir3jplkk77y.R4aOcANr_2Q8Wl.webp" alt="è±å½æ
游VLOG | ç±ä¸å ¡å£è¯è" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1200" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="rsshub-with-warp" data-post-link="/rsshub-with-warp" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/rsshub-with-warp" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¼é
ä½¿ç¨ Cloudflare WARP åºå¯¹ RSSHub åç¬é¾é¢ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
57 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ðï¸ æ¬æéç»æ´å¼æ¾çäºèç½ èµ·å æ¯çå° @geekbb ä»ç» Warp çæ¨æã尽管 Warp å·²ç»åå¸äºå¾é¿æ¶é´ï¼å°±ä¿æ¤ IP éç§èè¨ï¼å®å¹¶æ²¡æ iCloud Private Relay 好ç¨ï¼æä¹æ²¡æéæ³ä¸ç½çéæ±ã使¯æçªç¶æè¯å°ï¼æè¿æ¯æéè IP çéæ±ã 58 59å¨å¼â¦</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´8æ17æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreigrpjhr6oshromzjunxhj6jaqivggdcstkfhutqgfbhh7fztgtioq.oBkXR87V_uWAmo.webp" alt="ä¼é ä½¿ç¨ Cloudflare WARP åºå¯¹ RSSHub åç¬é¾é¢" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="xlog-portfolios" data-post-link="/xlog-portfolios" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/xlog-portfolios" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å¨å客èå ¥ä¸ä¸ªè·¨å¹³å°ä½åé </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
59 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>é¿ä¹
以æ¥# æä¸ç´å°ä¸ªäººå客è§ä¸ºä¸ä¸ªçæ³çå±ç¤ºä¸ªäºº IP ç â个人ç½ç«âï¼èä¸ä»
ä»
æ¯åå¸æç« çå¹³å°ãææ¾å¨ 2014 å¹´åå¦ç¼ç¨æ¶ä½¿ç¨ WordPress å»ºç« ãä¸çï¼ä½ 好ï¼ãï¼å
¥äºå端ååï¼å¨ 2017 å¹´æè½¬åäº Hexo ãåäºä¸ç¹å¾®å°çæ¹å¨ãï¼Web3 é£ååâ¦</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´8æ7æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeib3styadsi5pwwq2dir72nnitfhs5d6jjhpgsd5rq5sh33yqt5fzq.DIUmTN79_xpxaX.webp" alt="å¨å客èå
¥ä¸ä¸ªè·¨å¹³å°ä½åé" loading="lazy" decoding="async" fetchpriority="auto" width="4014" height="2438" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="gf-bathroom" data-post-link="/gf-bathroom" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/gf-bathroom" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 女念´å®¤æ²æå½ï¼éæ£å¸¸å½é³ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
59 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>å·å½çå¥³åæ´æ¾¡å¼å¼ï¼å¤ªå¯ç±äº 60 61ä½ ä¹è§å¾å¯ç±çè¯è¯·å»æ¨ç¹å¤¸å¤¸ justjustjustcc 62 63æ±ä¸ªä¸é®ä¸è¿...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´7æ21æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreih6b6e4tl64cnz2amvvfz2qobv5qnmyaybofqmje2wzvfhdm2c7lu.DhxD1ppb_1msYhy.webp" alt="女念´å®¤æ²æå½ï¼éæ£å¸¸å½é³" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="say-no-to-newsletter" data-post-link="/say-no-to-newsletter" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/say-no-to-newsletter" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 对 Newsletter è¯´ä¸ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
63 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>è¡°éæ å¤ä¸å¨ï¼è¿æ¯å¾æ£å¸¸çç°è±¡ã人们èªç¶èç¶å°æ´å¾åäºçå¹³å¿«çæ¶è´¹æ¹å¼ãç¶èï¼æä¸ç´æ æ³å¿åçä¸ç§å¥æªè¶å¿æ¯ï¼å¨ä¸äºå°æ¹ï¼äººä»¬å° RSS æå¼ï¼è½¬èä½¿ç¨ Newsletterã</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´7æ12æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreibegqpbw5t22dgwoxgw2lm6vz4ha2fhrt4g2zruvt3yhz6eatmeya.CN9UhCq6_Z6W2Vl.webp" alt="对 Newsletter 说ä¸" loading="lazy" decoding="async" fetchpriority="auto" width="768" height="768" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="anime-2023-april" data-post-link="/anime-2023-april" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/anime-2023-april" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 4 ææ°çªå¤ªå¥½çäºï¼å¹çï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
63 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä»å¹´ä» 1 æå°±ä¸ç´æ²¡ä»ä¹å¥½ççä½åï¼å°äº 4 æçªç¶çåï¼è®©æé常æ¿å¨ãç°å¨æåºè¿åäºï¼æ¯æ¶å好好说说æåäº ä»¥ä¸å½ç¶ä¸è½åæ¬ 4 æææç好ä½åï¼å 为å®å¨å¤ªå¤äºï¼åªæ¯è¯´ä¸è¯´ç¬¦åæå£å³çå é¨ï¼ææä¸ªäººçåç±ç¨åº¦æ¥æåº 64 65以ä¸ä¼å å«å¤§éå§éï¼è¿æ²¡ççå°ä¼ä¼´è¯·é æ è§ç 66 67鬼çä¹ååå â¦</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´5æ24æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeiafziunuervleanhd7j7at22vbc2gv2tgzv5xit3gtgd7xaela2bi.BlHS4z-6_Z1PGbaf.webp" alt="4 ææ°çªå¤ªå¥½çäºï¼å¹çï¼" loading="lazy" decoding="async" fetchpriority="auto" width="3005" height="4096" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="webworker-xlog" data-post-link="/webworker-xlog" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/webworker-xlog" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å xlog.app çä½è DIYgod èåºåé¾åå客平å°ãå端å¦ä¹ åçæ´»ææ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æ°ä¸ææå®¢æ¥å¦ï¼æ¬ææä»¬é请å°äº xlog.app èåçä½è
DIYGOD ä¸èµ·èèä»åçåºåé¾å客平å°ï¼ä»¥åèåçéåèéåæè¶£çæ
äºãé¤äºç§æ®èåç¨ç web3.0 ææ¯ç»èï¼æä»¬è¿å¯¹éåè¿è¡ä¸çªå¤§è®¨è®ºï¼ä¹å¯¹ yy çä¸ªäººçæ´»åå¾ä¸å·²ï¼æ¬¢è¿æ¥ xlog ä¸èµ·åå客ï¼å¬æå®¢ï¼...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´5æ9æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreihn7rxtraotsx2giwtpco4dwn4gln7hxxrafwopqd2gud5mqqbse4.BbVebUUG_2a3Mus.webp" alt="å xlog.app çä½è
DIYgod èåºåé¾åå客平å°ãå端å¦ä¹ åçæ´»ææ" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1440" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="software-update" data-post-link="/software-update" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/software-update" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æå¾äºè½¯ä»¶æ´æ°å¼ºè¿«ç </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æå¿
须让身边ææè½¯ä»¶é½ä¿æææ°çæ¬ï¼å°±åèµ°è·¯ä¸è½è¸©å°å°ç ç¼ç¼ä¸æ ·ï¼æ²¡ææä¹ï¼ä½ä¹å±å®³ä¸å¤§ï¼æä»¥ææ¾ä»»å®åå±</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´4æ8æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeidy2jmclbfvtlgv2fluz2rglny7wkbdbyd3y4teqnmibp36y6ihrq.DwskSqLX_2qxwwX.webp" alt="æå¾äºè½¯ä»¶æ´æ°å¼ºè¿«ç" loading="lazy" decoding="async" fetchpriority="auto" width="2040" height="1824" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="dystopian-anime" data-post-link="/dystopian-anime" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/dystopian-anime" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 令æçå¿çä¸é¨å乿é¦å¨æ¼« </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>åæå¯¹æèè¨æ¯ä¸ä¸ªå
满æ²ä¼¤çæä»½ã尽管ãåææ¯ä½ çè°è¨ãå·²ç»è¿å»äºå¾å¤å¹´ï¼ä½æ¯å½çå°ãåæãè¿ä¸¤ä¸ªåï¼ä»ä¼ç«å»è§¦åæç PTSDï¼åå ä¸ä»å¤©æå读å®ä¸æ¬å乿é¦é¢æçå°è¯´ãæ¥èªæ°ä¸çããå¤ç§æç»ªç³
æå¨ä¸èµ·ï¼è®©æä¸ç¦åæ³èµ·äºé£äºä»¤æçå¿çãéé级ãå乿é¦å¨æ¼«</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´4æ2æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeih6nkyowhmksth75szqli34g4e3aphwcfrlt32oseauzeyrdfjria.DwWDqGa5_2c4E3M.webp" alt="令æçå¿çä¸é¨å乿é¦å¨æ¼«" loading="lazy" decoding="async" fetchpriority="auto" width="1196" height="1570" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="do-you-want-to-dance" data-post-link="/do-you-want-to-dance" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/do-you-want-to-dance" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä½ ä½ ä½ ä½ è¦è·³èåï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>çå¾®å°å¾®çè§é¢æä¸ä¸ªé¶æ®µï¼åå¼å§å¤§èä¼ç¬é´è¢«ç¯ç溢åºçå¿«ä¹ççå²å»ï¼å¼å§å´è§ä¸æ¬ï¼ç¼ççªå¤§ï¼çæºè¢«å¿«ä¹å æ®ï¼ç¶åæ¯ç¾è»ï¼å¤§èå¨é¢¤æææææï¼æ®åççæºè®©ä½ ç¾è»å¾æ³å
³æè§é¢ï¼ä½è¿æ¶åå·²ç»æäºï¼èº«ä½æ æ³æ¿åçè¶
éå¿«ä¹è®©ä½ æ æ³è¡å¨ï¼è®©ä½ ç»§ç»â人çä¸ææ¼«é¿çä¸åéâï¼æåè§é¢ç»æï¼ä½ ä¼éæï¼ä¸ºä»ä¹ï¼ä¸ºä»ä¹ä¼å¨å¤§åºå¹¿ä¼åè¿ç§äºï¼ä¸ºä»ä¹ä¼è¿ä¹ç¾è»è¿ä¹å°´å°¬ï¼ä¸ºä»ä¹æçå®äºï¼ä¸ºä»ä¹æè¿ä¹å¿«ä¹ï¼</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´3æ2æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeiey7atdgk7cmji3zqoquqy3yowyf5zj3zk7zrm2nt3ujsro45aw5e.C5OTVL9H_Z9qepw.webp" alt="ä½ ä½ ä½ ä½ è¦è·³èåï¼" loading="lazy" decoding="async" fetchpriority="auto" width="1425" height="890" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2022" data-post-link="/2022" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2022" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2022 å¹´ç»æ»ç» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ç¸æ¯å½å
çéå¹»æ¥å¸¸ï¼ä»å¹´å¨èæ ¼å
°ççæ´»è¿æ¯å¾å®ç¨³ç</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2023å¹´1æ12æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93" class="hover:underline decoration-dashed underline-offset-4">#å¹´ç»æ»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeieowx3ddxwiedrlgckrohchscdiomz3yi2snrxnvjlwypxf6nxpsu.B72JBUwA_Zuj5pw.webp" alt="2022 å¹´ç»æ»ç»" loading="lazy" decoding="async" fetchpriority="auto" width="1284" height="1442" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="new-stuff-2022-black-friday" data-post-link="/new-stuff-2022-black-friday" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/new-stuff-2022-black-friday" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æ°ç©æ | 2022 é»äºä¹°äºå¥ï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>åå°æ°æ´¾ æ°ç©æç³»å å¯åï¼æä¹åäº«ä¸æè¿æé»äºè´ä¹°çæ°ç©æã</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´11æ30æ¥ Â· <a href="/category/%E6%96%B0%E7%8E%A9%E6%84%8F" class="hover:underline decoration-dashed underline-offset-4">æ°ç©æ</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeiaeqxvbsgxnjfyl42abn4xehudoyqvzxosgmgjbcltuumy74pxa7e.DVaopGVi_T56Ds.webp" alt="æ°ç©æ | 2022 é»äºä¹°äºå¥ï¼" loading="lazy" decoding="async" fetchpriority="auto" width="3369" height="2995" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="scottish-residents-can-move-around-downstairs" data-post-link="/scottish-residents-can-move-around-downstairs" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/scottish-residents-can-move-around-downstairs" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> èæ ¼å
°å±
æ°å¯ä¸æ¥¼æ´»å¨ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä»å¤©è·ç¦»å£è¯èæ£å¥½è¿æä¸ä¸ªæï¼ä½æ ¼ææ¯å¥ä¸»è¡ä¸æ©æ©å°±å¸ç½®äºå¾å¤å£è¯èè£
饰åå£è¯èæé´ä¸å±ç游ä¹è®¾æ½ï¼æå®¶å¯¹é¢çä¸å®¶å°åç©é¦ä¹ä¸ºä»å¹´çå£è¯èä¸é¨å»ºäºä¸ªæ»éªåºå
¼å£è¯éå¸</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´11æ25æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeifeebnfxocslchhulbuss2axinwgxu2mar2wyf72wy5g6fk7xtfqe.DEvLA-b8_2rz0oM.webp" alt="èæ ¼å
°å±
æ°å¯ä¸æ¥¼æ´»å¨" loading="lazy" decoding="async" fetchpriority="auto" width="3072" height="2048" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="flowers-for-algernon" data-post-link="/flowers-for-algernon" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/flowers-for-algernon" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ãç®ç»é¿å°å侬çè±æã读书å享 </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä¸ä¸ªå£åº¦è¯»ç书䏿忬¢ç䏿¬ï¼åç±»æ¯ç§å¹»å°è¯´ï¼ä½éç¹å¨äºæ¢è®¨æé¿ã人çæä¹ç人æè¯é¢ã</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´10æ9æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeif2fp6xiwdkevvm5item7ngurdyg55xldkogdw4yj7yqqamazcbpm.bytoqmyB_Z1HjfFD.webp" alt="ãç®ç»é¿å°å侬çè±æã读书å享" loading="lazy" decoding="async" fetchpriority="auto" width="1000" height="1448" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="xlog" data-post-link="/xlog" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/xlog" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 第ä¸ä¸ªå¼æºé¾ä¸åå®¢ç³»ç» xLog </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æç个人å客已ç»è¿è¡äºæ¥è¿ 9 å¹´ï¼è·çææ
¢æ
¢åå±ï¼ç°å¨å ä¹å·²ç»æä¸ºäºæç个人åå±å²ï¼æè
¾å客ä¹ä»å¾ä¹
以åå°±æä¸ºäºæçä¸ä¸ªç±å¥½ï¼ä½éç对 Hexo çè¶æ¥è¶ä¸æ»¡ï¼æå³å®åä¸ä¸ªæ´ç°ä»£åçå
¨æ°çå客系ç»</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´9æ23æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E6%96%B0%E5%9D%91" class="hover:underline decoration-dashed underline-offset-4">#æ°å</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreidazbwui2bqm6crk54qadjwvfjycvxzojwuakyfn4q5aitvlr773a.BFNgZCi9_1sBibh.webp" alt="第ä¸ä¸ªå¼æºé¾ä¸åå®¢ç³»ç» xLog" loading="lazy" decoding="async" fetchpriority="auto" width="1542" height="630" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="uk-travel-lake-district" data-post-link="/uk-travel-lake-district" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/uk-travel-lake-district" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> è±å½æ
游VLOG | è±æ ¼å
°æ¹åº </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
67 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ð 2022 å¹´ 4 æ 10 æ¥ - 2022 å¹´ 4 æ 14 æ¥ 68ð The Lake District in North West England...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´7æ26æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/vlog" class="hover:underline decoration-dashed underline-offset-4">#vlog</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeicholfzwqpl3dpqdt6shhbzptdntj4obd4lk5vudvou32g6ojrjfu.DiZKcDGS_Z2g03gf.webp" alt="è±å½æ 游VLOG | è±æ ¼å °æ¹åº" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="obsidian" data-post-link="/obsidian" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/obsidian" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> åºäº Obsidian ççæ´»è®°å½ç³»ç» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
68 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æ£å¦æå¨ 2020 å¹´ç»æ»ç» 䏿å°ï¼æä¸ç´å¨ç¨ Notion ååå¼¹ç¬è®°ï¼ç°å¨å®æäºäº¿ç¹ç¹ä¸ä¸æ ·ï¼ç°å¨æä»¬å°±æ¥éæ°çª¥æ¢ä¸ä¸æç®åççæ´»è®°å½ç³»ç»</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´7æ9æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeibmsjjzstiylsmrkmgn5xa2ppoyoqdpazxzuzpkomkdydsb2utbli.txWJUQ2A_2uC4Mk.webp" alt="åºäº Obsidian ççæ´»è®°å½ç³»ç»" loading="lazy" decoding="async" fetchpriority="auto" width="3168" height="2474" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="uk-travel-hp" data-post-link="/uk-travel-hp" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/uk-travel-hp" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> è±å½æ
游VLOG | åå°å¸¦ä½ éå婿³¢ç¹å¶çå </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
68 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ð 2022 å¹´ 4 æ 19 æ¥ 69ð Warner Bros. Studio Tour London - The Making of Harry Potter...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´6æ27æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/vlog" class="hover:underline decoration-dashed underline-offset-4">#vlog</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeiadoujzv3crd7nes3rmo5adn4677xdizfv6gnccx5afzlh32k6b7y.BoxQGNVZ_1FSchN.webp" alt="è±å½æ 游VLOG | åå°å¸¦ä½ éå婿³¢ç¹å¶çå" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="unidata" data-post-link="/unidata" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/unidata" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ð¡ Unidata - æä¾äººç±»å好ç Web3 æ°æ®ç便æ·è®¿é® </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
69 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>Web3 çé
åå¨äºæ°æ®å±äºç¨æ·èªå·±ï¼ä½ç±äºåºåé¾ä½æçæçå设计ï¼åå 䏿°æ®æ ¼å¼æ åç缺失ï¼è®¿é®åå±ç¤ºèªå·±æç¨æ·ç Web3 æ°æ®æ¯ä¸ä»¶æåº¦å°é¾çäºæ
ãæä»¥æåäºå¼æºé¡¹ç® [Unidata](https://unidata.app/)ï¼ç» Web3 å¼åè
æä¾äººç±»å好ç Web3 æ°æ®ç便æ·è®¿é®ã...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2022å¹´5æ6æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E6%96%B0%E5%9D%91" class="hover:underline decoration-dashed underline-offset-4">#æ°å</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreia6rkmk4isy3emsmi6irq52la6o5w7shzmaysegavtacqhqv3bvdi.Dzl30VCH_Z1zTKtP.webp" alt="ð¡ Unidata - æä¾äººç±»å好ç Web3 æ°æ®ç便æ·è®¿é®" loading="lazy" decoding="async" fetchpriority="auto" width="1296" height="564" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="job" data-post-link="/job" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/job" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> RSS3 æä¾æé
·æçæ³æèªç±ç弿ºè¿ç¨å·¥ä½ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
69 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>> â妿æå¤©å ï¼é£ä¸å®æ¯å¾ä¹¦é¦çæ¨¡æ ·ãé£éä¿¡æ¯èªç±å°æµéï¼ä¹¦ç±èªç±å°åºçï¼äººä¸äººèªç±å°è®¨è®ºãâ 70 71人类ç产ï¼ä¼ æåååä¿¡æ¯çæå©ä¸åºè¯¥è¢«ææ¡å¨ä»»ä½æ°æ®åäºèç½å¹³å°æä¸ï¼è¿æ¯å±äºæ°å人类çåºæ¬æå© 72 73æä»¬é½æè¯å°ç°å¨äºèç½è¿ä¸è¿ç§çæ³ç¸å·®çè¿ï¼å¦æä½ æ¿æä¸ºå®ååºäº¿ç¹ç¹æ¹åï¼ä¸èµ·æ¥å§ ð 74 75<!--...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2021å¹´11æ12æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeigbpf3scjdikprruh25nbnlx37tdol4mchqleti5frqsx7joguriu.BMW2KYFd_ix2Im.webp" alt="RSS3 æä¾æé ·æçæ³æèªç±ç弿ºè¿ç¨å·¥ä½" loading="lazy" decoding="async" fetchpriority="auto" width="1546" height="1097" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2020" data-post-link="/2020" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2020" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2020 å¹´ç»æ»ç» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
75 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä»å¹´å¯¹å¾å¤äººæ¥è¯´é½æ¯éå寻常çä¸å¹´ï¼å¯¹ææ´æ¯å¦æ¤ 76 77### ð¦ æ°å ç«æ 78 791 æçåçæ°å ç«æ ç´å°ä»å¤©è¿å¨æç»ï¼ç«æ åæçææ åç»æè¿ååå¨ç®ï¼1 æ 20 æ¥ä¸å¤ä¹é´å ¨å½çå£ç½©åæ¿èæ ¹åé»è¿è¢«æ¢è´ä¸ç©ºãäºèç½å®å ¨è¢«è´é¢ç«æ è¯é¢å æ®ãææäººæ°åç«ç®ä¸æ ·çå¢ãåçº¿é²æ¤ç¨å严é紧缺ãä¸å®¶ç»æå被ææ...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2021å¹´1æ1æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93" class="hover:underline decoration-dashed underline-offset-4">#å¹´ç»æ»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeie4dklkwdhw7ch3hcrucsj4oanecti53px7i454kaeeihkyjsfjy4.Dxo1x2e3_1hdTFo.webp" alt="2020 å¹´ç»æ»ç»" loading="lazy" decoding="async" fetchpriority="auto" width="2722" height="3247" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="paragliding" data-post-link="/paragliding" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/paragliding" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 带åå°åç²ç²ä¸èµ·æ»ç¿ä¼ï¼èµ·é£ï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
79 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>åä¸è·åå°åç²ç²ä¸èµ·èªé©¾å»äºæ»ç¿ä¼ï¼èµ·é£ç¬é´å¤ªåºæ¿äºï¼ä¸ºäºé£ä¸å»é¿éè·æ¶ä¹å¼äºç¬¬ä¸æ¬¡é²è¸ vlog â(â ââ¢âÏââ¢â â)â æ±ä¸è¿ï¼æ±è½¬åï¼...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2020å¹´11æ1æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/vlog" class="hover:underline decoration-dashed underline-offset-4">#vlog</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreico3akse545lv45vbuj3wcsfzhx7tn24y3nr3irhdv47hevzztcqe.7QQEg93f_2uG6K.webp" alt="带åå°åç²ç²ä¸èµ·æ»ç¿ä¼ï¼èµ·é£ï¼" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1200" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="my-last-fight-against-this-world" data-post-link="/my-last-fight-against-this-world" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/my-last-fight-against-this-world" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æä¸è¿ä¸ªä¸ççæå䏿¬¡æäº </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
79 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æ§æ³é¨é¨å欢åç¨æ³¥ãæ°ä¼æ¬ 缺æ³å¾æè¯ã人ä¸äººä¹é´ç¼ºä¹æåºæ¬çå°éæ¯åçè¿ç§äºçæ ¹æ¬åå ï¼è¿äºé®é¢çæå
æ ¹æ¬æ è§£ï¼ç±»ä¼¼äºæ
åªä¼å±¡è§ä¸é²</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2020å¹´8æ2æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeie7n5selvxxmcnow26g67zuwdlkvuijv7kehqcb3fu3cwmrwzbbqi.2KzBWz-b_2F1xa.webp" alt="æä¸è¿ä¸ªä¸ççæå䏿¬¡æäº" loading="lazy" decoding="async" fetchpriority="auto" width="1000" height="611" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="web-debugging-proxy" data-post-link="/web-debugging-proxy" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/web-debugging-proxy" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ç§å¦ç Web è°è¯ä»£çå®è·µ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
79 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>å端ç»å¸¸éè¦ä¸äºç¹æ®çè°è¯ç¯å¢ï¼è¿æ¶æä¸ä¸ªç§å¦ç Web è°è¯ä»£çå·¥å ·ï¼ä»¥ä¸ç§°ä»£çå·¥å ·ï¼æ¾å¾å°¤å ¶éè¦ 80 81æç¨ç第ä¸ä¸ªä»£çå·¥å ·æ¯ [Charles](https://www.charlesproxy.com/)ï¼åè½å¤ä½ç¼ºç¹ä¹å¾ææ¾ï¼ç¬¨éãé 置麻ç¦ï¼ç¬ 82 83忥æ¢å°äº [Zan Proxy](https...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2020å¹´5æ14æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeigvagrzmrtqktce5wnch25qm72mrpw2rq2j2bcamnl3pv4subuava.ByM1Ij1e_LWkYI.webp" alt="ç§å¦ç Web è°è¯ä»£çå®è·µ" loading="lazy" decoding="async" fetchpriority="auto" width="3360" height="1718" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="animal-crossing" data-post-link="/animal-crossing" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/animal-crossing" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æç卿£®æ¥è®° </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
83 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>DIY 对è¿éççæ´»ç»å¯¹æå¾å¤§ç帮å©ï¼</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2020å¹´3æ23æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreihutu2gbtogslyg6677fewizdimmyhhemk5s5yadodjnevklycl7m.BhIbT_bh_1ndNg9.webp" alt="æç卿£®æ¥è®°" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="handshake" data-post-link="/handshake" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/handshake" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸ä»½ç¹å«ç弿ºé¡¹ç®èµå© </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
83 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span> 84 85ä¸å¤å§å§å¨ç¾¤éå享äºä¸ä¸ª[å¸å龿¥](https://www.v2ex.com/t/645480)ï¼å¤§ææ¯ ~...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2020å¹´2æ20æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreibgobuhtieyi3tqa2qi4snkknsl44ravaloosstprvjbc3xaznh5a.Ch9HGEn0_1lSzuz.webp" alt="ä¸ä»½ç¹å«ç弿ºé¡¹ç®èµå©" loading="lazy" decoding="async" fetchpriority="auto" width="1410" height="628" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="painting-nezuko" data-post-link="/painting-nezuko" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/painting-nezuko" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ã临æ¹ã祢è±å </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
85 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>åå¾ï¼https://weibo.com/5251489751/IbMlieN4K...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2020å¹´2æ7æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E7%94%BB%E7%94%BB" class="hover:underline decoration-dashed underline-offset-4">#ç»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreifc6kkl2jyppcq5235funnqtmcak3glzxfhmr7ga6mibiivgvppl4.Bvc-vTzH_Z1tKJeb.webp" alt="ã临æ¹ã祢è±å" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1200" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2019" data-post-link="/2019" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2019" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2019 æåäºä»ä¹ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
85 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>2019 å·²ç»ç»æäºï¼å¨è¿éå顾ä¸ä¸ 2019 æåäºä»ä¹ 86 87## 弿º 88 89 90 91è½ç¶ç»´æ¤çé¡¹ç®æä¿æå¥åº·çæé¿ï¼ä½æ²¡æåä»...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2020å¹´1æ2æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93" class="hover:underline decoration-dashed underline-offset-4">#å¹´ç»æ»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreihqbkyh3whizlp44iq4xnr45bdvetgsnnis6iemsbmxvbrhdrseeq.B7Bzwp4q_Z2EERa.webp" alt="2019 æåäºä»ä¹" loading="lazy" decoding="async" fetchpriority="auto" width="1958" height="496" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="android" data-post-link="/android" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/android" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æå®¶ Android åå »æ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
91 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æè¿æç¨äºä¸¤å¹´ç iPhone X æ¢æäº Redmi K20 Proï¼ä½éªä¸ä¸ Android èªç±é¦ççç©ºæ° 92 93<p><img style="width: 100%; max-width: 300px" src="./attachments/bafkreigdo5h6km6mcagm4jfx3l...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´11æ24æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreigdo5h6km6mcagm4jfx3lhny5bkbm7cauo4oyfvludoxuk372jwoy.DmaLqlmb_1eYgdw.webp" alt="æå®¶ Android åå »æ" loading="lazy" decoding="async" fetchpriority="auto" width="1079" height="1533" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="rsshub-radar" data-post-link="/rsshub-radar" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/rsshub-radar" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> RSSHub Radar â 订é ä¸ä¸ª RSS æºä¸åºè¯¥è¿ä¹é¾ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
93 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span> 94 95> å¦æä½ é®æï¼RSSHub è½å¦æ¹å RSS çå½è¿ï¼æä¹ä¸æå¾ï¼ä½ææå¾ï¼ä¸è®¤å½ï¼å°±æ¯ RSSHub...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´8æ6æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E6%96%B0%E5%9D%91" class="hover:underline decoration-dashed underline-offset-4">#æ°å</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreiab5apfpx6odikfppeoblfsi7owzrwtgulnxor2vbd74ohnz2ht6i.Dw-A55A7_Z1gHumS.webp" alt="RSSHub Radar â 订é ä¸ä¸ª RSS æºä¸åºè¯¥è¿ä¹é¾" loading="lazy" decoding="async" fetchpriority="auto" width="2560" height="731" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="pn532" data-post-link="/pn532" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/pn532" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å°ç±³æç¯ 4 NFC 模æå å¯å¡æ¢ç´¢ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
95 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>å°ç±³æç¯ 4 NFC çä¸åå®å°±è¿«ä¸åå¾ æ¾é»çä¹°äºä¸åª 96 97æç¯ç NFC ä¸»è¦æä¸ä¸ªåè½ï¼å°ç±åå¦ãå ¬äº¤å¡ã模æé¨ç¦å¡ 98 99ç»ææç¯çå°ç±åå¦å¾é¾ç¨ï¼åè½ç¼ºå¤±ãååºæ ¢[è¿èéªæ](https://twitter.com/DIYgod/status/1141718298658086913)ï¼ä¸æµ·å ¬äº¤ä¹ä¸...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´6æ28æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreihdrrmhivc6vjkhtwbstj2s53noq2brghan7fvtil7fsjed47pumq.B8ngCDoG_jmY8Y.webp" alt="å°ç±³æç¯ 4 NFC 模æå å¯å¡æ¢ç´¢" loading="lazy" decoding="async" fetchpriority="auto" width="2250" height="2436" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="download-webhook" data-post-link="/download-webhook" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/download-webhook" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¼é å°ä¸è½½æçBç«æå¸è§é¢ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
99 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä¸è½½Bç«è§é¢å¾ç®åï¼you-get ä¸è¡å½ä»¤çäºï¼ä½æå·²ç»æå°å½ä»¤é½ä¸æ³è¾äºï¼å¦ææå¸ä¹å NAS å¯ä»¥èªå·±å»ä¸è½½å°±å¥½äº 100 101<style> 102twitter-widget { 103 margin: 0 auto !important; 104} 105</style> 106<blockquote class="tw...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´6æ2æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreifzgbuqcfqsqcpp3gsttgwj7ddkkgipjq2aojvkc3qrf2mgo2yr6a.DbLQo_H2_Z5Cmu1.webp" alt="ä¼é å°ä¸è½½æçBç«æå¸è§é¢" loading="lazy" decoding="async" fetchpriority="auto" width="3360" height="1720" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="ohmyrss" data-post-link="/ohmyrss" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/ohmyrss" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ææç¹å«ç RSS ä½¿ç¨æå·§ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
106 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>大家é½ç¥é RSS æ¯ä¸ç§ç¨æ¥æ¶æ¯èåçæ ¼å¼è§èï¼æçæ´é«çé 读æçãæ´å¥½çé 读ä½éªãå¯ä»¥ææ¡ä¸»å¨æççä¼ç¹ã 107 108æ¬æä¸ä¼ä»ç» RSS çåç§å¥½å¤ååå¼åæ ·çé 读å¨ï¼å 为ç¸å ³ç½ç»èµæå·²ç»è¶³å¤å¤äºãè¿éæä»ç»ä¸ä¸ææ ·å åææ RSS ç使ç¨ä»·å¼ï¼å 为å®çç¨éä¸ç´è¢«å¤§å®¶ä½ä¼°ã 109 110## é è¯»å¨ 111 112仿ç®å...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´5æ13æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreia2qs3hugcjppvgn64c572i427ezlnrww3tqcenjl7asna6csrxsq.J5mdJrcC_2fLKk0.webp" alt="ææç¹å«ç RSS ä½¿ç¨æå·§" loading="lazy" decoding="async" fetchpriority="auto" width="2678" height="1852" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="rsshub-1year" data-post-link="/rsshub-1year" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/rsshub-1year" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> RSSHub ä¸å¨å¹´å¼åå¯è§å </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
112 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>RSSHub â ä¸ç©çå¯ RSS 113https://github.com/DIYgod/RSSHub 114 115- è§é¢åºäº 2018 å¹´ 4 æ - 2019 å¹´ 4 æç commit è®°å½ï¼ä½¿ç¨ Gource ç»å¶ 116- BGM: ããªã«ã´...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´4æ26æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreigc55yddemx6zyi2gpp4raoozh7x2bde3g6tdaecdqb3g4uedc3xm.bIYTNF0I_2371NX.webp" alt="RSSHub ä¸å¨å¹´å¼åå¯è§å" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="mai-tour" data-post-link="/mai-tour" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/mai-tour" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ã鿥çªå¤´å°å¹´ä¸ä¼æ¢¦å°å 女éå¦å§ãå£å°å·¡ç¤¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
116 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span><iframe style="border-radius:12px" src="https://open.spotify.com/embed/episode/31yuCkRxJqYD4eSEtOyMiB?utm_source=generator" width="100%" height="152" ...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´4æ12æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeibip5i7yvpahj24san4s6gdmwp3chne2x77aou4suht5vv6f2hfwu.BlY0Suak_Z2vGXoD.webp" alt="ã鿥çªå¤´å°å¹´ä¸ä¼æ¢¦å°å
女éå¦å§ãå£å°å·¡ç¤¼" loading="lazy" decoding="async" fetchpriority="auto" width="2872" height="1401" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="headlesschrome" data-post-link="/headlesschrome" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/headlesschrome" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> HeadlessChrome èªå¨åæµè¯æ¢ç´¢ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
116 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>åç¹ä¸ç´æ¯Bç« HTML5 ææ¾å¨å¼ååæµè¯è¿ç¨ä¸çä¸ä¸ªçç¹ï¼åç¹çç§ç±»åæ¥å£åæ°å¾å¤ï¼æµè¯å¾éº»ç¦ä¹å¾å®¹æåºé 117 118è½ç¶æµè¯å¾éº»ç¦ï¼ä½å®ä»¬çè§åé½å¾ç®åï¼æ¯å¦ç¹å»æ hover ä¸ä¸ªæé®ãéè¯¯ä¸æ¥ãææ¾åæ§è½ä¸æ¥ï¼é£ä¹è½ä¸è½éè¿èªå¨åç E2E æµè¯æ¥ä»£æ¿è¿äºåç¹çåæºæ¢°åå容æåºéçæµè¯å·¥ä½å¢ï¼ 119 120...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2019å¹´3æ18æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreibw3mvo3a3ohiwp3uy2mglkyq4g7eiwz6l5qk5toa75cwvjsdli6y.6QpamkLX_Z495JC.webp" alt="HeadlessChrome èªå¨åæµè¯æ¢ç´¢" loading="lazy" decoding="async" fetchpriority="auto" width="2400" height="1857" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2018" data-post-link="/2018" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2018" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2018 å¹´ç»æ»ç» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
120 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>2018ï¼æ æäºäºå带ç¹ä¸§çä¸å¹´ï¼æè§å¾å¯¹ä¸èµ· 23 å²è¿ä¸ªå¹´çºªï¼è¦è·èªå·±è¯´å£°å¯¹ä¸èµ·äº 121 122## 弿º 123 124ä»å¹´ 4 æå¼åäº [RSSHub](https://github.com/DIYgod/RSSHub)ï¼è®©èªå·±å¦å°äºçå¾å¤ä¸è¥¿ï¼è®¤è¯äºå¾å¤äººï¼ç®æ¯ä»å¹´ä¸ºæ°ä¸å¤çæè¶£çäºæ ä¹ä¸äº 125 126[APlaye...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´12æ31æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93" class="hover:underline decoration-dashed underline-offset-4">#å¹´ç»æ»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreihqok6ayl7fgjxgyis5xvcedyx273jbtnxmvrr6u6h7uwbypk2rma.VGsviSXH_XbeBi.webp" alt="2018 å¹´ç»æ»ç»" loading="lazy" decoding="async" fetchpriority="auto" width="2110" height="596" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="nas" data-post-link="/nas" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/nas" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä»é¶å¼å§ç NAS çæ´» </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
126 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>徿©å°±æ³ç»ä¸ä¸ªå®¶åº NAS 设å¤ï¼è¶çè¿æ¬¡ååä¸ï¼å¨äº¬ä¸ä¹°äºä¸å°ç¾¤æ DS218play åä¸åé ·ç¼ 4T 硬çï¼å·²ç»ç¨äºä¸¤å¤©äºï¼æçæåæ¯ï¼ 127 128**ç½ç** 129 130## ä½¿ç¨ 131 132ç®å常ç¨çæä¸é¢å 个åè½ 133 134### Time Machine 135 136" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
136 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>C94 å CP2018SP 䏿¯åä¸å¤©ï¼ä½é½æ¯å人å±ï¼æ¶é´åå¾è¿ï¼å°±åå¨ä¸èµ·äº 137 138## C94 139 140Comic Marketï¼å ¨çæå¤§çå人å±ï¼8 æ 10 æ¥å¨ä¸äº¬ä¸¾åï¼æå½ç¶æ²¡é±å»ï¼ä¸å¤©é½å¨ Twitter äºåå±ï¼å£æ°´æµäºä¸å° 141 142ææåå° Aniplex å±å°ä¹°äºç¢å¹å¥å¤ªæç darling ...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´8æ26æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeidte4gjslowcnxfzqtwfn5y4e3htbz55ieu26khl57uwb4hhixek4.CYY02Fhs_Zi7WQH.webp" alt="C94 & CP2018SP å屿¥è®°" loading="lazy" decoding="async" fetchpriority="auto" width="2928" height="1601" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="cj2018" data-post-link="/cj2018" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/cj2018" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2018 ChinaJoy å屿¥è®° </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
142 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>8æ4æ¥å»äº ChinaJoyï¼äººè¿æ¯ä¸å¦æ¢å¾çå¤ 143 144AC å¨çå¯ç±ï¼èç 145 146ç¬¬äºæ¬¡æ vlogï¼ç¶åæå®æå¾åªï¼è¿æ¯ Freddy 帮æåªçï¼æå¨è§é¢éçå¯ç± 147 148<iframe id="dogePlayerFrame" src="https://player.dogecloud.com/web/p...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´8æ10æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreihxje6xkzxslea5oybkxbffehuqefwtbkdmfgtp4eovitbrmk5z7m.DRuhzP3g_Z1mug3P.webp" alt="2018 ChinaJoy å屿¥è®°" loading="lazy" decoding="async" fetchpriority="auto" width="3265" height="2448" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="bw2018" data-post-link="/bw2018" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/bw2018" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2018 bw & bml å屿¥è®° </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
148 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>7æ21æ¥å22æ¥å»äº bw å bmlï¼é¢åºäºä¸ä¸ä¸ªäººï¼py é红 149 150### BILIBILI WORLD 151 1522233 çå¯ç±ï¼èç 153 154ç¬¬ä¸æ¬¡æ vlogï¼ç¶åæå®æå¾åªï¼è¿æ¯ Freddy 帮æåªç 155 156<iframe id="dogePlayerFrame" src="https://playe...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´8æ6æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeich7einf6hdm4t5f6rlaucwsfd6lvd2pyeyafvozqobvvhvsjxwlm.DoK3O2cn_1Nd9yX.webp" alt="2018 bw & bml å屿¥è®°" loading="lazy" decoding="async" fetchpriority="auto" width="3265" height="2448" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="painting-02" data-post-link="/painting-02" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/painting-02" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ã临æ¹ã02 - pixiv </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
156 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>åå¾ï¼DARLING in the FRANXX EP#04 00:16:48...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´6æ9æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E7%94%BB%E7%94%BB" class="hover:underline decoration-dashed underline-offset-4">#ç»ç»</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/69178118.Be5v6F6m_OHl3N.webp" alt="ã临æ¹ã02 - pixiv" loading="lazy" decoding="async" fetchpriority="auto" width="1200" height="630" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="polymer" data-post-link="/polymer" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/polymer" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> Polymer åä½éª </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
156 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä½ä¸ºå¼åè ï¼æä»¬é½ç¥éç»ä»¶åãæ ååå代ç å¤ç¨çéè¦æ§ï¼å端ä¹ä»æªåæ¢è¿å¯¹å端ç»ä»¶åçå°è¯ï¼äº§çäºåå¼åæ ·çç»ä»¶åææ¯ï¼ä» Vue React çåç«¯æ¡æ¶ï¼å° webpack è¿æ ·çå ¨ç«æå å·¥å · 157 158ä½å端ä¸ç´ç¼ºä¹è¿æ ·ä¸ä¸ªæ¨¡ååæ ååæµè§å¨çº§å«çåçç»ä»¶åæ¹æ¡ 159 160Web Components æ¯ WH...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´5æ30æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> </div> </div><div data-post-slug="goodnight" data-post-link="/goodnight" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/goodnight" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æ©å®æå®èªå¨å </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
160 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä¸ä¸éï¼[女æåçå¾®åæ ç»ªçæ§](https://diygod.me/2920/) 161 162åå°ä¸ç´å¾å欢说æ©å®æå®ï¼å½ç¶æ¯æè¯´ç»å¥¹ï¼ï¼ä½æç»å¸¸ä¼å¿è®°ï¼æè¿çµæºä¸å¨ï¼æ³åºæ¥è¿æ ·ä¸ä¸ªç§å¦é«ææ¹ä¾¿å¿«æ·ç¨³å®å°è¯´æ©å®æå®çåæ³ï¼ 163 164æå¾®ä¿¡æå¨æå¡å¨ä¸ï¼æ¯å¤©åºå®æ¶é´ï¼èªå¨æ§è¡åéæ©æå®ææ¬æ¶æ¯çå½ä»¤ï¼ 165 166代ç å¾ç®å...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´4æ25æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreig52xbbytdog3amaevevnjww3sirqr66mxaiwdggalq57zuul5djm.BLXsQbrD_Z2qJXzX.webp" alt="æ©å®æå®èªå¨å" loading="lazy" decoding="async" fetchpriority="auto" width="352" height="344" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="rsshub" data-post-link="/rsshub" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/rsshub" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> RSSHub - ä½¿ç¨ RSS è¿æ¥å ¨ä¸ç </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
166 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>**[项ç®å°å](https://github.com/DIYgod/RSSHub)** 167 168## ä»ç» 169 170RSSHub æ¯ä¸ä¸ªè½»éãæäºæ©å±ç RSS çæå¨ï¼å¯ä»¥ç»ä»»ä½å¥å¥æªæªçå å®¹çæ RSS è®¢é æº 171 172å½åæ¯æåè¡¨ï¼ 173 174- bilibili 175 - çªå§ 176 - UP 主æç¨¿ 177 - UP 主...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´4æ13æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E6%96%B0%E5%9D%91" class="hover:underline decoration-dashed underline-offset-4">#æ°å</a> </span> </div> </div> </div> </div><div data-post-slug="2018-bao-zou-yu-ren-jie" data-post-link="/2018-bao-zou-yu-ren-jie" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2018-bao-zou-yu-ren-jie" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 2018 æ´èµ° yu 人èå屿¥è®° </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
177 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æ´èµ° yu äººèæ¯æ´èµ°æ¼«ç»é¦å±äºå¨å¨±ä¹å±ä¼ï¼ä½ä¸ºæ´èµ°ç²å½ç¶ä¸è½éè¿ï¼å¾æ©å°±ä¹°äºç¥¨ã 178 179æ»ä½æè§è¿æ¯å¾æ£çï¼å宾éµå®¹å¼ºå¤§ï¼äºå¨å¾å¤ï¼è¿å¯ä»¥è·çå°¼çä¸èµ·ä¸åæï¼ï¼è¯ææ»¡æ»¡ï¼ä½ä¸è¶³ä¹å¾ææ¾ï¼æ´èµ° yu 人è主è¦å 容éä¸å¨ä¸»èå°çèç®è¡¨æ¼ï¼ä½ä¸æµ·æ°å½é åè§ä¸å¿çç°åºåº§ä½è¿è¿ä¸å¤ï¼æè§è¿æ¯æ´éåå¨ç±»ä¼¼ BML...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´4æ2æ¥ Â· <a href="/category/%E6%97%A5%E8%AE%B0%E6%9C%AC" class="hover:underline decoration-dashed underline-offset-4">æ¥è®°æ¬</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeic353ywqcrd36cf3i7gla52dldcumdosiehmmquuxp5mdmast5f7i.1dsBV6AC_88dmM.webp" alt="2018 æ´èµ° yu 人èå屿¥è®°" loading="lazy" decoding="async" fetchpriority="auto" width="960" height="4210" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="open-source-project-donation" data-post-link="/open-source-project-donation" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/open-source-project-donation" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å ³äºå¼æºé¡¹ç®èµå©è¿ä»¶äº </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
179 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ç¸ä¿¡æ²¡äººå弿ºé¡¹ç®æ¯ä¸ºäºèµé±ï¼å 为å®è¿ä¸å¦å»å¤©æ¡¥è´´èèµå¾å¿«ã 180 181ä½å³ä½¿æ²¡æè¿ç§æ³æ³ï¼ç»´æ¤ä¸ä¸ªå¼æºé¡¹ç®ä¹ä¼éå°ä¸äºå¾å¤´ç¼çç°å®é®é¢ï¼æ¯å¦æå¡å¨å CDN çå¼éã以 DPlayer 为ä¾ï¼å¼¹å¹æ¥å£æå¡å¨æ¯å¹´éè¦è±è´¹ 2000 å¤åï¼ææ¡£éçè§é¢ CDN è´¹ç¨æ¯å¹´ä¹éè¦è±è´¹ 1500 å¤åï¼å¹¶ä¸éçç¨æ·...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´3æ5æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> </div> </div><div data-post-slug="darling-in-the-franxx-style" data-post-link="/darling-in-the-franxx-style" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/darling-in-the-franxx-style" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> DARLING in the FRANXX åå®¢æ ·å¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
181 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span><iframe style="border-radius:12px" src="https://open.spotify.com/embed/track/5KAI6nfg3wQRmtwJ0PPaEW?utm_source=generator" width="100%" height="152" fr...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´2æ5æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeiebhzcewbsmznmjvpd4xodthfd4ygyrjolz4cfzawqohuhiqnqbzi.C9qH0s9y_1Qme3.webp" alt="DARLING in the FRANXX åå®¢æ ·å¼" loading="lazy" decoding="async" fetchpriority="auto" width="1920" height="1080" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="web-workers" data-post-link="/web-workers" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/web-workers" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> Web Workers åä½éª </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
181 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>[è¿ä¸ªè§é¢](https://www.bilibili.com/video/av18682336/)æ 15+MB ç BAS å¼¹å¹èæ¬éè¦è§£æï¼è¿ä¼å¯¼è´é¡µé¢å¡æ» 7 ç§å·¦å³çæ¶é´ï¼æé´ UI 被å»ç»ï¼ä½éªå¾ç³ç³ï¼å¦æä½¿ç¨ Web Workers è¿è¡ä¼åï¼æè§£ææ¾å
¥ Web Workers æ§è¡ï¼...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´1æ30æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> </div> </div><div data-post-slug="neteasecloudmusic2rss" data-post-link="/neteasecloudmusic2rss" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/neteasecloudmusic2rss" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> NetEaseCloudMusic2RSS â 使ç¨RSS订é
她忬¢çç½æäºé³ä¹ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
181 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>é³ä¹ï¼äººç±»çæ´»ä¸æ°¸æç主é¢ãé³ä¹å¯ä»¥å¾å¤§ç¨åº¦ä¸ä½ç°ä¸ä¸ªäººçå好ãåå³ï¼æ´æ¯ææåéçæ æä¼ è¾å¨ã 182 183ç°å¨å¿«ä½¿ç¨RSSè®¢é æåæ¬¢çç½æäºé³ä¹å§ï¼[https://api.prprpr.me/necm2rss/playlist/35798529](https://api.prprpr.me/necm2r...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´1æ29æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> </div> </div><div data-post-slug="bas" data-post-link="/bas" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/bas" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> BAS é«çº§å¼¹å¹ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
183 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>## åå¨åé¢ 184 185å¦æä½ å¥½å¥ B ç«çå·¥ä½æä¸æè¶£ï¼æè ææ¥ B ç«ä¹åé½å¨åä»ä¹ï¼é£ä¹è¿ç¯æç« æè®¸å¯ä»¥è§£çä½ çé¨åçé®ã 186 187æ¥ B ç«åï¼é¤äºè´è´£ HTML5 ææ¾å¨çä¸äºæ¨¡åãéæåæ¥å¸¸ç»´æ¤ä»¥å¤ï¼BAS é«çº§å¼¹å¹ç®æ¯æåå¹´æ¥è´è´£å¼åçæå¤§ä¸ä¸ªé¡¹ç®äºã 188 189æ¬ææ´çèªä»å¤©å¨å ¬å¸çè¶ æçµç£æ³¢åäº«ï¼æ®è¯´...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2018å¹´1æ25æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreibddan7hvm4abwwdc5lnu3u2akhu27iyqs5y4xjjwsgxnqtfxvwm4.q_e-jtw1_Z1facbp.webp" alt="BAS é«çº§å¼¹å¹" loading="lazy" decoding="async" fetchpriority="auto" width="594" height="1150" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="best-players-in-hexo" data-post-link="/best-players-in-hexo" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/best-players-in-hexo" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å¯è½æ¯ç®åæå¥½ç¨ç两个 Hexo ææ¾å¨æä»¶ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
189 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æå®å¨ä¹ä¸æ¯è°¦èï¼è¿~~å¯è½~~æ¯ç®åæå¥½ç¨ç两个 Hexo ææ¾å¨æä»¶ï¼æè°¢æä»¶ä½è ï¼ç»å¤§ä½¬ä»¬éå¥³è£ 190æ¬æåªä½ä¸ºæ¼ç¤ºï¼ä½¿ç¨æ¹æ³å issue è¯·ç§»æ¥ GitHub 191 192<!--more--> 193 194```sh 195npm install hexo-tag-aplayer --save 196``` 197 198Hexo ç...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´11æ29æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> </div> </div><div data-post-slug="new-blog" data-post-link="/new-blog" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/new-blog" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> åäºä¸ç¹å¾®å°çæ¹å¨ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
198 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æ°çå¼å§ï¼åªåäºä¸ç¹å¾®å°çæ¹å¨ 199 200### åå 201 202ä» www.anotherhome.net æ¢æäº diygod.me 203anotherhome.net èµ·æºäºé«ä¸æ¯è¾å欢çä¸é¨çªãAnotherãï¼å¹´ä»£æäºä¹ è¿ï¼ç°å¨å§æ é½å·²ç»è®°ä¸æ¸ äº 204 205<!--more--> 206 207### å客ç¨åº 208 209ä» WordP...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´11æ26æ¥ Â· <a href="/category/%E4%BA%8B%E4%BB%B6%E7%B0%BF" class="hover:underline decoration-dashed underline-offset-4">äºä»¶ç°¿</a> </div> </div> </div> </div><div data-post-slug="hello-world" data-post-link="/hello-world" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/hello-world" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> Hello World </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
209 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´11æ20æ¥ Â· <a href="/category/%E4%BA%8B%E4%BB%B6%E7%B0%BF" class="hover:underline decoration-dashed underline-offset-4">äºä»¶ç°¿</a> </div> </div> </div> </div><div data-post-slug="3264" data-post-link="/3264" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/3264" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> bilibili2RSS â ä½¿ç¨ RSS 订é
bilibili up主åçªå§ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
209 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä½ä¸ºä¸ç§è¿æ°ææ¯ï¼æä¾ RSS è®¢é æºçç½ç«è¶æ¥è¶å°ï¼æ¯ä¸ªç½ç«é½æ³æç¨æ·å°½å¯è½é¿æ¶é´å°ç»å¨èªå·±é£éï¼è RSS å¯è½ä¼é æè´é¢ææ 210 211ä½å¨è¿ä¸ªå 容çç¸æ¶ä»£ï¼åªè¦æè¯å°äºãæè¢«ä¿¡æ¯æç»æ¶ãè¿ä¸ªé®é¢åï¼ç¨æ·èªç¶ä¼æ³è¦ä¸ç§æ´é«çº§çèåä¿¡æ¯åå¨ææ´æ°è§£å³æ¹æ¡ï¼æ¯å¦ RSS 212 213è¿éæä¾äºä½¿ç¨ RSS 订é b...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´10æ17æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> </div> </div><div data-post-slug="3207" data-post-link="/3207" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/3207" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æä»¬èµ°è¿ç </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
213 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span><style> 214 #love-map { 215 width: 100%; 216 } 217 218 #love-time { 219 text-align: center; 220 margin-bottom: 20px; 221 font-size: 14px;...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´8æ28æ¥ Â· <a href="/category/%E9%97%B2%E8%A8%80%E8%AF%AD" class="hover:underline decoration-dashed underline-offset-4">é²è¨è¯</a> </div> </div> </div> </div><div data-post-slug="3116" data-post-link="/3116" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/3116" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 让ååæºåæ¬¡ä¼å¤§ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
221 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span><style> 222 .gugu-print { 223 display: none; 224 margin-top: 20px; 225 } 226 .gugu-btn { 227 cursor: pointer; 228 border: 1px solid #e...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´8æ11æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreigpucjepfxkw4valfdlbgedeu6qu6voe4s2sq5paahldwxby3bg3y.CzBsfKkh_2epj0J.webp" alt="让ååæºåæ¬¡ä¼å¤§" loading="lazy" decoding="async" fetchpriority="auto" width="239" height="48" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2978" data-post-link="/2978" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2978" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ç°å¨å¯ä»¥ç»ç½çº¢åå°çº¸æ¡è¡¨ç½äºï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
228 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æè¿è·æè¡¨ç½ç人太å¤äºï¼æä»¥æä¹°äºä¸ä¸ª[ååæº](http://www.memobird.cn)ï¼ç°å¨è®¿é® [让ååæºåæ¬¡ä¼å¤§](/make-gugu-great-again) 就å¯ä»¥å¾æ¹ä¾¿å°åå°çº¸æ¡è·æè¡¨ç½äºã 229 230æ¯å¦ 231 232" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
232 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>æè¿çå°äº Service Workers è¿ä¸ªä¸è¥¿ï¼å®å¯ä»¥æ ¹æ®é ç½®ä¸ºç¨æ·ç¼åç½ç«éæä¸å¨æèµæºï¼æªè·ç¨æ·çææç½ç»è¯·æ±ï¼æ ¹æ®ç¼åé ç½®æ¥å³å®æ¯ä»ç¼åè¿æ¯ç½ç»è·åç¸åºèµæºï¼ä»èå¯ä»¥æå¤§æé«ç½é¡µçå è½½é度ãä¼ç¹æå¯å®å¶æ§é«ãä¸éè¦æå¡ç«¯æ¯æãæææ¾èã 233 234æåçææå°±æ¯å½ä½ ç¬¬äºæ¬¡è®¿é®æçç½ç«æ¶åªä¼å 载大...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´3æ6æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreid7vp7iprbacehxdgzbpupfoxakjroehwfmkcixvyd56wylyq6ocy.C0_rD-kp_Zm6Thc.webp" alt="Service Workers å®ç°ç½ç«å éå离线ç¼å" loading="lazy" decoding="async" fetchpriority="auto" width="1938" height="519" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2939" data-post-link="/2939" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2939" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸åªå«é ¸å¥¶çåµ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
234 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>é ¸å¥¶æ¯æå®¶æ°æçç«å¥³ä»ï¼å¥¹æä¸ä¸ªå客ï¼[https://suannai.cat](https://suannai.cat/) 235 236" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
236 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span> 237 238å°±æ¯è¿æ ·ï¼ä»£ç å好äºï¼å°±å·®ä¸ªå¥³æåäºã 239 240æåçææå°±æ¯æ£æµæä¸å¾®åå主æ°åçå¾®åï¼å¦æå¤æä¸ºæ¶ææ 绪...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2017å¹´2æ9æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreiakbgc7a6vrlcuvr2ol4j2qn55nbyojp5kx5xm7yzttjemsmztvfi.B10kkAM8_Z1852uT.webp" alt="女æåçå¾®åæ ç»ªçæ§" loading="lazy" decoding="async" fetchpriority="auto" width="1197" height="313" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2837" data-post-link="/2837" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2837" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> Weibo2RSS â ä½¿ç¨ RSS 订é 忬¢çå¾®åå主 </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
240 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä½¿ç¨ RSS 订é 忬¢çå¾®ååä¸»ï¼æ¯å¦æï¼å§~ 241 242Demoï¼[https://api.prprpr.me/weibo/rss/3306934123](https://api.prprpr.me/weibo/rss/3306934123) 243 244RSS æ ¼å¼è¾åºä¸ä¸ªå¾®ååä¸»ææ°ç 15 æ¡å¾®åï¼å¯ä»¥ä½¿ç¨ ...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2016å¹´11æ2æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> </div> </div> </div> </div><div data-post-slug="2805" data-post-link="/2805" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2805" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å¾®å°å¾®ç´æåæ¾ç DPlayer å®ç° </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
244 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>以ä¸ä¸º10æ19æ¥[å¾®å°å¾®](http://weibo.com/u/2025479687)å¨[ä¸ç´æ](http://m.yizhibo.com/l/n6VHhuJoCbMf41Nx.html)çç´æåæ¾ï¼è¿·å¦¹è¸ï¼å¼¹å¹ä¹æåæä¸æ¥è½¬æ [DPlayer](https://github.com/DIY...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2016å¹´10æ20æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreiaczasprthfsm7aoojvv7cz6q7choxxtib76i6nae6khmhqlyttny.CK1BPplr_1Er8XF.webp" alt="å¾®å°å¾®ç´æåæ¾ç DPlayer å®ç°" loading="lazy" decoding="async" fetchpriority="auto" width="907" height="242" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2770" data-post-link="/2770" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2770" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> WordPress ååå¾è¯è®ºå¤§ä½æ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
244 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>WordPress åå¾è¯è®ºä¸ç´æ¯è¶ 级å¤è¶ 级ç¦äººçï¼å¦ææ²¡æææçæ¦æªæ¹æ¡ï¼ç½ç«å°±ä¼ç¬é´è¢«æ¯å¤©å ç¾æ¡çåå¾è¯è®ºæ·¹æ²¡ã 245 246å ä¸ºæ¯æ¯ä¸ª WordPress ç«ç¹é½æ æ³é¿å çé®é¢ï¼å¤§å®¶åæ¾ç¥éï¼ååºçè§£å³æ¹æ¡ä¹æºå¤çï¼è¿éæ»ç»ä¸ä¸æ¯ç§æ¹æ³çç¹ç¹åå©å¼ï¼ 247 248### è¯å«åå¾è¯è®º 249 250以 Akismet æä»¶ä¸º...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2016å¹´10æ10æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> </div> </div><div data-post-slug="2648" data-post-link="/2648" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2648" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> DPlayer â æå¥½çç弹广æ¾å¨éç»æå¥½çç宫åè° </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
250 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span><link href="https://cdn.bootcss.com/dplayer/1.16.0/DPlayer.min.css" rel="stylesheet"> 251 252<div id="dplayer1" class="dplayer"></div> 253 254æå¥½ççHTML5弹广æ¾å¨éç»æå¥½çç...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2016å¹´8æ20æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E6%96%B0%E5%9D%91" class="hover:underline decoration-dashed underline-offset-4">#æ°å</a> </span> </div> </div> </div> </div><div data-post-slug="2449" data-post-link="/2449" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2449" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ç»å欢æä¿¡ççä½ â ä¸å¹´ä¸åº¦çéæä¿¡çæ´»å¨ï¼å·²å®ç»ï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
254 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span> 255 256### Q: æä¸ºä»ä¹è¦ä½ çæä¿¡çï¼å¦å¦è¯´ä¸è½é便æ¿éç人çä¸è¥¿ã 257 258**A:**Â ä½ æä½éªè¿å°ç¡®å¹¸çæè§åï¼ 259...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2016å¹´3æ17æ¥ Â· <a href="/category/%E4%BA%8B%E4%BB%B6%E7%B0%BF" class="hover:underline decoration-dashed underline-offset-4">äºä»¶ç°¿</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeiaiqckme2x5plfrfpewrbse2g75rgki4biauy44p2wjy4cvw2bpfy.BZAUcDVj_ldQb6.webp" alt="ç»å欢æä¿¡ççä½ â ä¸å¹´ä¸åº¦çéæä¿¡çæ´»å¨ï¼å·²å®ç»ï¼" loading="lazy" decoding="async" fetchpriority="auto" width="2592" height="1936" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2298" data-post-link="/2298" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2298" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> çæç鿣 â 仿ç¥ä¹å¤å¶ææ¬èªå¸¦çæå£°æ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
259 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>### ä»ä¹é¬¼ï¼ 260 261çæç鿣ï¼å¦å¦åä¹ä¸ç¨æ å¿æè¢«ä¾µæäºï¼å ¶å®åªé²ååä¸é²å°äººï¼ã 262 263类似ç¥ä¹ï¼å¨ç½ç«å¤å¶é¿åº¦å¤§äº42çææ¬æ¶èªå¨å ä¸è¿æ ·ççæå£°æï¼ 264 265``` 266è使å½ä½è ææã 267åä¸è½¬è½½è¯·èç³»ä½è è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã 268ä½è ï¼DIYgod 269龿¥ï¼https://www.another...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´12æ26æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> </div> </div><div data-post-slug="2167" data-post-link="/2167" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2167" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> APlayer - éç»å°çç¸åå°å åç HTML5 ææ¾å¨ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
269 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>å°çç¸åå°å 忝å¾å¥½å¾å¥½çæåã 270 271ä¸èµ·æ£æ¥çæ¶å,ä¸å·§éå°äºç人ã 272 273ä»ä»¬è½¬èº«å°±è·,é½å¸æç人æ´å®¹æåç°èªå·±ã 274 275å°çç¸è·è¿äºè²å ¬è±ç¾¤ï¼ç½è²çè²å ¬è±æ¼«å¤©é£èµ·ã 276 277å°å åéè¿ç«ç°è±åï¼çº¢è²çç«ç°è±ç£æ£è½ä¸å°ã 278 279仿¤å¤±æ£å¨å½¼æ¤çä¸çéã 280 281幸è¿çæ¯ï¼åæ¥ï¼å°çç¸éå°äºå°çåï¼å°å åéè§äºç±ä¸½ä¸ã 282 283...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´11æ16æ¥ Â· <a href="/category/%E5%88%9B%E4%BD%9C%E9%9B%86" class="hover:underline decoration-dashed underline-offset-4">åä½é</a> · <span class="inline-flex flex-wrap gap-1"> <a href="/tag/%E6%96%B0%E5%9D%91" class="hover:underline decoration-dashed underline-offset-4">#æ°å</a> </span> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafybeidpyzwkqmje3fafy2tpye75hna4znl363duqwmgqejprqpxpvktia.CnrDG1Rk_1pQ2qt.webp" alt="APlayer - éç»å°çç¸åå°å åç HTML5 ææ¾å¨" loading="lazy" decoding="async" fetchpriority="auto" width="2560" height="7998" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2153" data-post-link="/2153" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2153" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> æè好äºå¦ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
283 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span> 284 285å¨Â [Sonic 853](http://853.bronya.net/) çå°çç¥å¥çä¸å¹ï¼ä¸é¢èµèï¼ææææ¥æ°´...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´11æ12æ¥ Â· <a href="/category/%E5%88%86%E4%BA%AB%E5%A2%83" class="hover:underline decoration-dashed underline-offset-4">å享å¢</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreifbosbd4sirfvfzuoxwajzbhvezgybz67uij6kavsel6rhtn2vlz4.BdghU6q0_uhh7k.webp" alt="æè好äºå¦" loading="lazy" decoding="async" fetchpriority="auto" width="1060" height="136" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="2125" data-post-link="/2125" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/2125" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> 论 IFTTT çæ£ç¡®é£ç¨å§¿å¿ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
285 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>### ä»ä¹æ¯IFTTT 286 287å®ç½ï¼[https://ifttt.com](https://ifttt.com) 288 289è¿æ¯ä¸ä¸ª2011å¹´å¨ç¾å½ä¸çº¿çç½ç«ï¼IFTTT æ¯ _If This Then That_ ç缩åãéä¿çæ¥è®²ï¼IFTTT çä½ç¨å°±æ¯å¦æè§¦åäºä¸ä»¶äºï¼åæ§è¡è®¾å®å¥½çå¦ä¸ä»¶äºã 290 291" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
301 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ä»»å¡3å·²ç»åå¸ï¼å级çç任塿¶é´æ¯ä»5æ7æ¥è³5æ18æ¥ï¼ä¸çº§ç为4æ30æ¥è³5æ10æ¥ã 302 303TASK 0003 å 容ï¼[https://github.com/baidu-ife/ife/tree/master/task/task0003](https://github.com/baidu-ife/...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´5æ8æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreibkrpsb5w4qexah2eowv2sdbgjftq6sjoayjwtjf2lxamnn75jsca.BxTcaNHT_kOfT6.webp" alt="ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0003ï¼" loading="lazy" decoding="async" fetchpriority="auto" width="1364" height="793" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="1982" data-post-link="/1982" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/1982" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0002ï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
303 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>TASK 0002 å·²ç»åå¸ï¼å级çç任塿¶é´æ¯ä»4æ24æ¥è³5æ7æ¥ï¼ä¸çº§ç为4æ18æ¥è³4æ25æ¥ã 304 305TASK 0002 å 容ï¼[https://github.com/baidu-ife/ife/tree/master/task/task0002](https://github.com/bai...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´4æ24æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreif5xys73v2hg3secbetyag4gyyqkbqv2xmiwqndz3b467o6wifo7y.CQv70RYr_Z1XqtJ8.webp" alt="ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0002ï¼" loading="lazy" decoding="async" fetchpriority="auto" width="1066" height="300" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="1969" data-post-link="/1969" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/1969" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0001ï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
305 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>[ç¾åº¦Webåç«¯ææ¯å¦é¢](https://github.com/baidu-ife/ife)ï¼Baidu Institute of Front-End Technologyç®ç§°IFEï¼æ¯ä¸ä¸ªç±ç¾åº¦EFEå¢éãç¾åº¦äººåèµæºé¨æ ¡åæèç»èååºåçãé¢å卿 ¡å¤§å¦ççå端å¹è®ç»ç»ï¼åå©ç¾åº¦å¤§éä¼ç§çå端工...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´4æ14æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> <div class="hidden ml-2 size-32 md:block md:ml-7"> <img src="/_astro/bafkreibwbacdy7hulempknxbnw2bw2zmnl5cdci6k75co6trs7t2op2ria.DGcddpcf_1UN45o.webp" alt="ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0001ï¼" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="223" class="aspect-square object-cover rounded-xl"> </div> </div> </div><div data-post-slug="1826" data-post-link="/1826" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/1826" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> å客忬æ°å®¶å¦ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
305 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>ç¼ç Google Adsense å·²ç»100å¤ç¾å 马ä¸å°±è½æç°äºï¼å 䏿³ä¹°ä¸ªvpsè·Pythonç¬è«ï¼å°±æ°å ¥äº Linode 1GBï¼æè§è¶ ç½ã 306 307æè°¢ç¦»å¼æåè¿æ®µæ¶é´æ¶çæç [TECHNETCAL](http://technetcal.com/) [é³ç¬¦](https://freedom.mo...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´3æ19æ¥ Â· <a href="/category/%E4%BA%8B%E4%BB%B6%E7%B0%BF" class="hover:underline decoration-dashed underline-offset-4">äºä»¶ç°¿</a> </div> </div> </div> </div><div data-post-slug="1764" data-post-link="/1764" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/1764" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸ä¸ªå®æ´ç¼è¯å¨çå®ç°(äº) è¯æ³åæ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
307 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>**1 ç³»å说æ** 308 309[GitHubå°å](https://github.com/DIYgod/Compiler) [åé¶æ®µæºç ](http://www.anotherhome.net/file/compiler/) [åé¶æ®µè¯´æéå](http://www.anotherhome.net/175...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´2æ16æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> </div> </div><div data-post-slug="1754" data-post-link="/1754" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/1754" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸ä¸ªå®æ´ç¼è¯å¨çå®ç°(ä¸) è¯æ³åæ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
309 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>[GitHubå°å](https://github.com/DIYgod/Compiler) [åé¶æ®µæºç ](http://www.anotherhome.net/file/compiler/) [åé¶æ®µè¯´æéå](http://www.anotherhome.net/1751) 310 311为äºå°ä¸ä¸ªç¨åºä»...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´2æ5æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> </div> </div><div data-post-slug="1751" data-post-link="/1751" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/1751" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸ä¸ªå®æ´ç¼è¯å¨çå®ç° </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
311 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>_å¾çµçæºå¨ï¼æºå¨çæ±ç¼ï¼æ±ç¼ç Cï¼C çä¸ç© 312(æ¥èªç¥ä¹ç¨æ· Joy Neop)_ 313 314æ¬ç³»åå°å±ç¤ºä¸ä¸ªå®æ´ç¼è¯å¨ä»æ å°æçå®ç°è¿ç¨. 315 316ç®æ æ¯ä»ä¸ä¸ªCè¯è¨çä¸å®å ¨åéç¿»è¯å°x86æ±ç¼è¯è¨, å°åå© Lex Yacc LLVM çå·¥å ·, å¦å¤æå®å®ç°åå¾åæ¶åé¢å对象. 317 318å ¨é¨ä»£ç æç®¡å¨Â [Git...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2015å¹´2æ1æ¥ Â· <a href="/category/%E7%A0%94%E4%B9%A0%E5%9D%8A" class="hover:underline decoration-dashed underline-offset-4">ç ä¹ å</a> </div> </div> </div> </div><div data-post-slug="1" data-post-link="/1" class="relative border border-transparent border-dashed cursor-pointer p-7 group rounded-2xl" tabindex="0"> <div class="absolute inset-0 z-20 w-full h-full duration-300 ease-out bg-white border border-dashed dark:bg-neutral-950 rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:-translate-x-1 group-hover:-translate-y-1"></div> <div class="absolute inset-0 z-10 w-full h-full duration-300 ease-out border border-dashed rounded-2xl border-neutral-300 dark:border-neutral-600 group-hover:translate-x-1 group-hover:translate-y-1"></div> <div class="flex relative z-30 duration-300 ease-out group-hover:-translate-x-1 group-hover:-translate-y-1"> <div class="flex-1"> <h2 class="flex items-center mb-3"> <a href="/1" class="text-lg font-bold leading-tight tracking-tight sm:text-xl dark:text-neutral-100"> ä¸çï¼ä½ å¥½ï¼ </a> <svg class="group-hover:translate-x-0 flex-shrink-0 translate-y-0.5 -translate-x-1 w-2.5 h-2.5 stroke-current ml-1 transition-all ease-in-out duration-200 transform" viewBox="0 0 13 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> <g id="svg" transform="translate(0.666667, 2.333333)" stroke="currentColor" stroke-width="2.4"> <g> <polyline class="transition-all duration-200 ease-out opacity-0 delay-0 group-hover:opacity-100" points="5.33333333 0 10.8333333 5.5 5.33333333 11"></polyline> <line class="transition-all duration-200 ease-out transform -translate-x-1 opacity-0 group-hover:translate-x-0 group-hover:opacity-100 group-hover:ml-0" x1="10.8333333" y1="5.5" x2="0.833333333" y2="5.16666667"></line> </g> </g> </g> </svg> </h2>
318 <p class="text-sm text-neutral-600 dark:text-neutral-400 line-clamp-3 break-all"> <span>欢è¿ä½¿ç¨WordPressãè¿æ¯ç³»ç»èªå¨çæçæ¼ç¤ºæç« ãç¼è¾æè
å é¤å®ï¼ç¶åå¼å§æ¨çå客ï¼...</span> </p> <div class="mt-2.5 text-xs font-medium text-neutral-800 dark:text-neutral-300"> 2014å¹´2æ9æ¥ Â· <a href="/category/%E4%BA%8B%E4%BB%B6%E7%B0%BF" class="hover:underline decoration-dashed underline-offset-4">äºä»¶ç°¿</a> </div> </div> </div> </div> </div> </div>
318<script id="search-data" type="application/json">[{"slug":"2025","title":"2025 éæ°å®ä¹ççæ´»","tags":["å¹´ç»æ»ç»"],"body":"## AI ç产åé©å½ä¸è¿·è«\n\nåå¹´åæåå¤è¯»ç ï¼é£æ¶å¯¹å¾åè§é¢å¤ç徿å
´è¶£ï¼æä»¥æå¼å§æ³å¦è®¡ç®æºè§è§ã忥åç°ä¼ ç» CV å·²ç»æ¯å¤é³äº§ä¸ï¼è¢«æ·±åº¦å¦ä¹ å
¨é¢åæï¼äºæ¯å¹²èéäº Artificial Intelligenceã\n\n彿¶åªæ¯èµ°é©¬è§è±å¦ä¸äºæ¦å¿µï¼æ²¡æ³å°ä¸å°ä¸¤å¹´ï¼AI 就彻åºçåã2023 å¹´ 3 æ GPT-4 åå¸ï¼éæäºå
¨ä¸çãå°ä»å¹´ï¼AI æ´è¿ä¸æ¥ï¼å¼å§å®æå®å°æ¹åå¾å¤è¡ä¸ç工使¹å¼ï¼ä¹æ¹åäºå¾å¤äººççæ´»æ¹å¼ã\n\næä½ä¸ºç¨åºååæç»ç±å¥½è
ï¼å ä¹å¨ä¸¤ä¸ªæ¹ååæ¶æåå°äºå²å»ã䏿¹é¢æ¯æçæ´æ¶¨å¸¦æ¥çå
´å¥ï¼å¦ä¸æ¹é¢æ¯è¶æ¥è¶å¼ºçè¿·è«ï¼çè³æ¼åæä¸ç§åå¨å±æºã䏿¯é£ç§è½»é£é£çç¦èï¼èæ¯ä½ çªç¶æè¯å°èªå·±èµä»¥ç«è¶³çä¸è¥¿æ£å¨è¢«æ¹åï¼è䏿¹åå¾é常快ã\n\n**æç»ï¼ä»å¤å¹´ç»ä¹ å°è¾å
¥ä¸å¥è¯**\n\nååç»å¸å¯è½æ¯ææ©è¢«å²å»ç䏿¹ãStable Diffusion ååºç°æ¶ï¼ç»å¸ç¾¤ä½æ¾æ¿çæµå¶ãå¯æçæ¯ï¼å忥就å¬ä¸è§ä»ä»¬ç声é³äºã并䏿¯ä»ä»¬å¦¥åäºï¼èæ¯ AI ä½åçç太好ã太快ï¼å¿«å°å¾å¤äºè®ºçè³æ¥ä¸ååç就已ç»å¤±æã\n\néåæä¸é¨åååç»å¸å¼å§æ¥å AIï¼æå®å½æè¾
å©å·¥å
·ï¼ä¹æå¤§éä½¿ç¨ AI çæ°äººæ¶å
¥ï¼ç¨æ´ä½é¨æ§ãæ´é«äº§åºçæ¹å¼å å
¥åä½ã\n\nåä½é¨æ§ä¸è·¯ä¸æ¢ï¼ä»éè¦æ°å¹´çå¦ä¹ ä¸ç»ä¹ ï¼å°ä¹°ä¸å好æ¾å¡æè
¾å 天ï¼åå°ç°å¨æå¼ç½é¡µãè¾å
¥æ³æ³ãçå ç§éãæ´è¿ä¸æ¥ï¼æç»å°å¨ç»ãå°è§é¢ä¹å¨è¢«å¿«éæéãæç§æä¹ä¸ï¼äººäººé½æ¯ç»å¸ä¸åæ¯å¤¸å¼ ï¼èæ´åæ¯æ£å¨åççç°å®ã\n\n**ç¼ç¨ï¼ä»ç段补å
¨å°æ¥ç®¡é¡¹ç®**\n\n[](https://x.com/DIYgod/status/1945335801266721237)\n\nç¨åºåè¿è¾¹çååä¹è®¸ä¼èµ°ååä¸ä¸ªç»æï¼åªæ¯æ²¡æé£ä¹ç«å»åç´è§ã2022 年大家è¿å¨ç¨ GitHub Copilot åèªå¨è¡¥å
¨ï¼ä»å¹´ä¸ç¨ AI Coding 模åä¸ vibe coding å·¥å
·å±åºä¸ç©·ï¼å¾å¤æ¶åå·²ç»åæä½ ç¨èªç¶è¯è¨æè¿°éæ±ï¼AI å代ç ãæ¹ä»£ç ãä¿® bugãè¡¥æµè¯ï¼çè³è½äº§åºä¸ä¸ªå®æ´é¡¹ç®ã\n\n对ç¨åºåæ¥è¯´ï¼vibe coding è½æç产åæé«æ°åï¼å¯¹éç¨åºåæ¥è¯´ï¼coding ä¹ä¸åæ¯ç¨åºåçä¸å±æè½ãè¶æ¥è¶å¤äººä¸åä¸è¡ä»£ç ï¼ä¹è½ååºç²¾ç¾åºç¨ï¼è§£å³èªå·±ççå®éæ±ãç¼ç¨æ£å¨ä»ä¸ç§è䏿è½ï¼åæä¸ç§äººäººé½è½å¨æç表达æ¹å¼ã\n\näºæ¯ï¼ç¨åºåç工使¹å¼æ£å¨è¢«æ¹åãä¼ ç»æä¹ä¸é£ç§æå代ç çã代ç å 人ãä¼è¶æ¥è¶å°ï¼å¾å¤æ¹åä¼åä¼ ç» CV 䏿 ·è¢« AI æ¿ä»£ãæä¹è¶æ¥è¶å°äº²æå代ç äºï¼è¶æ¥è¶ä¹ æ¯åç¼è¾å¨å³ä¾§è§¦æå¯åç AI æ²éãå®å®æå¾åå¿«å好ï¼èä¸è¶æ¥è¶å¥½ï¼ä»å·¥å
·å°å©æï¼åå°ä¸ç§è¿ä¹æ¿ä»£æ¬ä½çåå¨ã\n\nè¿ç§æ¿ä»£ææåºççå°æ¹å¨äºå®å¹¶ä¸åªæ¿ä»£ä½åæ´»ãå®å¨æ¿ä»£å¤æãå¥è·¯ãç»éªåçç»åº¦ï¼ä¹å¨æ¿ä»£ææ¾ç»å¼ä»¥ä¸ºå²çå¦ä¹ é度ãæå¦å°çç¥è¯å¨è´¬å¼ï¼æç§¯ç´¯çç»éªå¨è´¬å¼ï¼ææ¥æçæè½å¨è´¬å¼ï¼çè³è¿æºåååé åä¹å¨è´¬å¼ï¼èä¸è´¬å¼é度似ä¹è¿é«äºæçæé¿é度ãçç¨åºåå²ä½ççæ¶äº¡ä¹åï¼æçä»·å¼å¨åªéã\n\n[](https://x.com/DIYgod/status/1945354030839898431)\n\nä½å½ä¸ç¨åºåæ¾ç¶è¿æ¯æ æ³è¢«å®å
¨æ¿ä»£ï¼ä¹è®¸ AI ä¹ä¼åæ©å°å®å¾ä¸æ ·åå±å°ä¸å®ç¨åº¦ä¼ç¢°å£ãç°å¨è½åçæ¯å¥½å¥½é©¾é©è¿è¡åéï¼ç§¯æåä¸è¿æ¬¡ç产åé©å½ï¼å¸æè½å¨å
¶ä¸æ¾å°èªå·±çä½ç½®åæ æ³è¢«æ¿ä»£çç¬ç¹ä»·å¼ã\n\n## è¿æ¥æ°çå½\n\nä¸ç®¡ AI æä¹åå±ï¼ç¢³åºçå½åè²æ°çå½çè¿ç¨ï¼å¨å¯é¢è§çå°æ¥è¿æ æ³è¢«ç¡
åºçå½å代ã\n\nç¥éåå°ï¼èå©ï¼æåçé£ä¸å»ï¼ææ´å¤æ¯æè¶³æ æªãä½ä»é£æ¶èµ·ï¼å¾å¤å¿çåçæ´»ä¹ æ¯å°±ææå´ç»è¿ä¸ªå³å°
318å°æ¥çæ°çå½åçååã\n\nåå°çæåè¿ç¨æ¼«é¿åè¾è¦ãåæååæå¤©é»å°ï¼å
è§åå¾å¼å¸¸ææï¼å¹³æ¶æ£å¸¸çæ°å³ä¹ä¼é¾ä»¥å¿åï¼å欢çé£ç©åä¸ä¸å»ï¼æ¿ç´ 让æ
ç»ªæ³¢å¨æ´ææ¾ã䏿好ä¸äºï¼åæèåè¶æ¥è¶å¤§ï¼è
°é
¸èçãç¡ç ä¸éãè¡å¨ä¸ä¾¿ï¼èµ°è·¯é½æé®é¢ãä½åå°è¿æ¯è¡¨ç°åºäºæäººçåé§åä¹è§ï¼æ¿åä½äºè¿äºèéªï¼è¿æäº§æ£ãå¤äº§ãè²å¿å®æå¾äºäºææ¡ã\n\n\n\n䏿¤åæ¶ï¼æä¹äº²ç¼è§è¯äºçå½å¦ä½ä¸ç¹ç¹æå½¢ï¼ä»ä¸ä¸ª 2mmãæ¨¡ç³ä¸æ¸
çå°ç¹å¼å§ââ\n\n\n\næ
¢æ
¢åå
·äººå½¢ââ\n\n\n\nåå°åè¢ãäºå®æ¸
æ°å¯è§ï¼è½å¨èåé卿¥å¨å»ãæåãå使ãå ä¸ªææ¥ï¼æå 乿 æ¶æ å»ä¸å¨æå¹åæ¬ççå½çç¥å¥ï¼ç¢³åºç彿³åä¸å±ï¼\n\n\n\nç»äºç¬å° 7 æ 27 æ¥æä¸ï¼ååï¼å¥³å¿ï¼åºçãè¿æ²¡æ¥å¾åèä¸å£æ°ï¼å°±è¢«åç¥å¥¹è¡æ°§æç»ä¸éï¼è¢«ç´§æ¥è½¬å
¥ NICU éççæ¤å®¤è§å¯æ²»çã\n\n彿¶ä¸è¾¹æ¯åå°å¤§ææ¯åæè¯ä¸æ¸
ï¼ä¸è¾¹æ¯ååºççååçæ»æªåãé£ä¸å¤å¤§æ¦æ¯æäººçæé»æçæ¶å»ãåç°èªå·±å¹³æ¶æ¥æçé£äºå¤æåãè§£å³é®é¢çè½åãçè³ä¹è§ï¼é½å¨è¿ç§æ¶å»æ¯«æ ç¨å¤ãå¯ä¸è½åçå°±æ¯çï¼çä¸ä¸ªå¹¶ä¸ç¡®å®ä¼å°æ¥çå¥½æ¶æ¯ã\n\n幸好ç»è¿å 天治çï¼ååè±ç¦»çå½å±é©ï¼æææ é©ï¼åºé¢åå®¶ã\n\n[](https://x.com/DIYgod/status/1949827364008947806)\n\n[](https://x.com/DIYgod/status/1951235222676316241)\n\n[](https://x.com/DIYgod/status/1952376061318377652)\n\nç»åè¿ NICU ä¹åï¼çæ´»åå¾é¡ºå©èµ·æ¥ï¼å®¶éæåå°å女佣ç
§é¡¾ååï¼å忝天é½å¨æé¿ï¼å¦ä¼æä¸è¥¿ã翻身ï¼å¼å§ææ
绪ãä¼è®¤äººã她ä¹ççå¾å¯ç±ï¼æ¯æ¬¡åºé¨éå¨ï¼è·¯äººé½ä¼åè¿æ¥å¤¸å å¥ã\n\nä½ä¸ºæ°æç¸ç¸å½ç¶ä¼ç²æ«ï¼ä½æ´å¤çæ¯ä¸ç§å¾è¸å®çå¹¸ç¦æï¼å®ä¸éè¦è¢«è¯æï¼ä¹ä¸éè¦è¢«è§£éï¼å®åªæ¯ä¼å¨ä½ æ±èµ·å¥¹çé£ä¸å»åå¾é常确å®ã\n\n## åªåæé±\n\n[](https://x.com/DIYgod/status/1874129585069318349)\n\n伿å¨ç¥ï¼å©åæ¯ä¸åªåèåéå
½ãä¸åºçè¿æ²¡åºé¢å°±åæäº S$100000ï¼è¿ä»¶äºé常ç´è§å°å·æ°äºæå¯¹ç°å®ççè§£ã\n\nåé¢è¯´åå°æååï¼æçå¿çåçäºå¾å¤ååï¼å
¶ä¸æå
³é®çå°±æ¯éé±è§çååã\n\n以åæå½ç¶ä¹æ³èµé±ï¼ä½æ»ä½æ¯å¤ç¨å°±è¡ã鱿´åæ¯å®ç°ç±å¥½ãç»´æçæ´»çææ®µï¼è䏿¯æç»ç®çï¼æä»¥å¨èµé±è¿ä»¶äºä¸ç¸å¯¹ææ°ãæ¯å¦ä¹å鿩工使¶ï¼æä¼æ¯«ä¸ç¹è±«æ¾å¼ååèªèµçå¸å®è廿´ç¬¦åç±å¥½çåå©åå©ï¼åæ¯å¦åå¹´å Web3 ç叿»¡å°æ¡é±ï¼æå´æ å¨äºè¡·ãè¿ä¹å¯¼è´æè¿å»å¨ä¸ªäººè´¢å¡ä¸ä¸ç´æºå¤±è´¥ã\n\nç°å¨çè¿ç§ååæç¹å仿 æè°ç´æ¥æ»å°äºè¿åº¦è¡¥å¿ãæå¼å§æ´å¨æå®å
¨æï¼ä¹æ´å®¹ææå®å
¨æåéé±ç»å®ï¼é±å¯¹æçä¼å
级被æå¤§æåï¼æä¹æ´æ¸
æ¥å°æè¯å°ï¼å¾å¤éæ©çåºæ°æç»è¿æ¯æ¥èªç°éæµåé£é©æ¿åè½åã\n\nä»å¹´æå¼å§æ´ä¸»å¨å°æèµå å¯è´§å¸ãåå¹´åå
¥è¡ Web3ï¼å»å¹´æå¼å§ä¸»å¨ä¹°å¸ï¼è¿ä»¶äºæ¬èº«ä¹æºç¥å¥ãè¿ç¨éå¸¸æ²æï¼ä¸é´æä¸æ®µæ¶é´äºäºå¾å¤é±ï¼ä¹ä¹°å°äºå¾å¤æè®ã好卿ç»ç»æè¿ä¸éï¼èé£äºæè®çè³æ¯é¶æ®µæ§çæ¶çæ´å®è´µã\n\nä»å¹´çæ¶ççæ²çº¿ï¼å®ç°æ¹æ³è§ [ä¸å¤ç¥å¨ Beancountï¼Crypto ä¸ AI æ¶ä»£çå¤å¼è®°è´¦ç»ææ¹æ¡](/beancount)ï¼ï¼\n\n\n\n**ä»åæè§å°æä½ç³»**\n\næçæèµç»åå¯ä»¥ç²ç¥åæä¸¤æ®µï¼ä»¥ä¸æä¸ºåæ°´å²ã\n\n䏿ä¹åï¼æå¯¹çç¥å K 线è¿äºç¥è¯å ä¹ä¸æ æç¥ï¼ä¹æ²¡ç¨ä»»ä½åæå·¥å
·ï¼åºæ¬åæè§åæ
绪买åï¼åä¸ç§å®æï¼è·äºåç¹ï¼æ¶¨äºåç¹ãå 为å¸åºæ´ä½åä¸ãæ³¢å¨ä¸ç®å§çï¼æä»¥åªæéç¼çä¹°ï¼æ¶çä¹è¿ä¸éï¼çè³è®©ææç¹æ²¾æ²¾èªåã\n\nä½èµåææçå°±æ¯ä¸å¼å§ç»ä½ ä¸ç¹ç头ã\n\n忥éå°äºæå
³ç¨æå¸¦æ¥çå¸åºææ
大è·ï¼ææå¤±æ¨éãæå½æ¶çå¿è·¯å¤§æ¦æ¯è¿æ ·çï¼ç¬¬ä¸æ®µä¸è·æ¶æè§å¾æ¯ç»ä½³æåºæºä¼ï¼å 乿åºå
¨é¨å®¶å½æåºï¼å¸åºç»§ç»ä¸è·æ¶æå¼å§å¿æå´©ï¼ä½è¿æ³æä¸æï¼æç»æ¢æï¼ç¬¬ä¸æ®µæ´çæ¶æå½»åºå´©æºï¼ææææä»å²èåæãç»æä¹°å¨é«ç¹ï¼
318å卿ä½ç¹ï¼å¸åºåå¾å¿«åå¼¹ã\n\nç°å¨åçï¼æåå¾ç¨å¾®å¯¹çä¸ç¹æ¯èåå°ï¼æ²¡æä¸æ æï¼å¦åæ´æ¨ãæ´å¤çæ¯ç¯äºä¸å å
¸åéè¯¯ï¼æ²¡æçç¥ï¼è¢«æ
绪æ§å¶ï¼å¤§ä»ä½æåºï¼æ²¡æä»ä½ç®¡çï¼è¿½æ¶¨æè·...\n\n䏿ä¹åï¼æå¼å§ç³»ç»å¦ä¹ åææ¹æ³åå·¥å
·ï¼å¼å§è®¾ç½®æ¢ææ¢çãæ§å¶ä»ä½ãæ§å¶æ
绪ï¼ä¸åç²ç®æåºå追涨æè·ï¼æ
¢æ
¢æèµ·ä¸å¥æ´å¯æç»ç交æä½ç³»ï¼äºçèµåæ¥äºï¼è¿é¢å¤èµäºä¸äºï¼å°äºä»å¹´ç 1011 éªå´©ï¼æè
å¹´åºççå°¾è¡æ
ï¼è¿äºä¸è·å¹
度æ¯äºæä»½æ´çï¼æä¹æ²¡æåææ¾äºé±ã\n\n**å·¥å
·ä¸çç¥**\n\n交æå¹³å°æä¸»è¦ç¨ [OKX](https://www.bjwebptyiou.com/join/1876626)ï¼æç»è´¹ä½ï¼é²é±ç¨ç®åèµå¸åå¶å°éªèµåç¹ä½é£é©æ¶çä¹ä¸éãè¡æ
åæä¸»è¦ç¨ [TradingView](https://cn.tradingview.com/pricing/?share_your_love=DIYgod)ï¼åè½å¼ºå¤§ãææ ä¸°å¯ãå·é±å
ç¨ [OneKey](https://onekey.so/r/N9AHU3)ï¼çé¨å·é±å
å®å
¨æ§é½è¿å
³ï¼ä½ OneKey çæä½ä½éªå¯¹ææ¥è¯´æ¯æå´é¢å
ã\n\n[](https://x.com/DIYgod/status/1901239258331169099)\n\nè³äºçç¥ï¼æç°å¨æ´åæ¯å¨ä¸æç»èªå·±å æ¤æ ï¼è䏿¯è¿½æ±æç§ç¥å¥å£æ¯ãæä¼æéèªå·±ï¼æ 论å½ä¸å¤ä¹æææ¡ï¼å¸åºé½å¯è½ä¸æ¶¨ï¼ä¹å¯è½ä¸è·ï¼ä½æ¯ä¸æé¤æ¨ªççå¯è½ãæä¼åç宿并ç»å¸¸å顾ç°éã屯å¸ãé£é©æèµçæ¯ä¾ãæå®æ¿å°èµé±ä¹ä¸ç¢°èªå·±ä¸çè§£ãææªç»å
ååå¼çä¸è¥¿ï¼æèå¿ï¼çè§£æ
¢å³æ¯å¿«ï¼æ´»ä¸æ¥æéè¦ï¼æä»¥ç°å¨åºæ¬åªäº¤æ BTCãETHã\n\n[](https://x.com/DIYgod/status/2000744194747588621)\n\næä¹ä¼ä¸¥æ ¼æ§å¶æ æï¼ç»å¤§å¤æ°æ¯ 1 åï¼æå¤ä¸è¶
è¿ 3 åãæ¢æè¦æ¸
æ°ï¼æ¿æè®¤éï¼ä¸æåãDeFi å°½éå°ç¢°ï¼å 为å½ä½ ä¸ç¥éçè´¢ç婿¶¦ä»åªéæ¥æ¶ï¼è¯´æä½ å°±æ¯é£ä¸ªå©æ¶¦ã\n\n[](https://x.com/DIYgod/status/1990353824192843862)\n\næå¨äº¤æåªç 4 å°æ¶ä»¥ä¸çä¸é¿çº¿ï¼ç线交ç»èªå¨åçç¥ï¼å°½éåå°çææ
绪çå½±åã\n\n[](https://x.com/DIYgod/status/1948375038517727446)\n\nä¸äºç段ç念ï¼\n\n[](https://x.com/DIYgod/status/1972109779322745148)\n[](https://x.com/DIYgod/status/1959155822518206531)\n[](https://x.com/DIYgod/status/1993890218555134464)\n[](https://x.com/DIYgod/status/1962515701245337648)\n[](https://x.com/DIYgod/status/1937436310995894571)\n\n## ä¸åæ¶å®ç弿ºæç»´\n\nç¸æ¯éé±è§çå¿«é转åï¼æå¨ææ¯å产åä¸çè§å¿µè½¬å¾æ²¡é£ä¹é¡ºå©ãä»å¹´æä¸»è¦ç工使¯ FoloãFolo æ¬èº«åäºå¾å¤ï¼æ°ç§»å¨ç«¯ãæ¬å°ä¼å
æ¶æãAI ççãä½åä¸åç宿½åéªè¯æ¨è¿å¤ªæ
¢ï¼åå ä¸ä¸äºç°å®å ç´ ï¼åæ¥ä¸å¾ä¸ååºä¸äºä»ä¿è½¬åãå¾å¤ææ¯ä¸çæå
¥çèµ·æ¥åèªå¨±èªä¹ãæ´ç³çæ¯ï¼å¢ééä¹åºç°è¿è®©äººå¤´ç¼çåä½é®é¢ï¼çè³æå工离èåçèåºï¼æå¾é¸¡é£çè·³ï¼è¿æ´çè¡å°çµæ¯åºå
¶ä»å¹å黿åä¸ä¸²è®©äººåç¬ä¸å¾çé´è°æ
äºï¼è¿éå°±ä¸å±å¼äºã\n\n[](https://x.com/DIYgod/status/1995843301757604043)\n\nå头çï¼åä¸åå»¶è¿ä¸è½¬åä»ä¿å¹¶éå¶ç¶ï¼èæ¯ä»å§è³ç»æ ¹æ·±èåºå¨æåå¢éç弿ºæç»´åææ¯æç»´éã\n\n弿ºæ¬èº«å½ç¶æ²¡æé®é¢ã弿ºæ¯ä¸ä¸ªå¾å¥½çæ¹å¼ï¼ç¨æ¥å®ç°ç±å¥½ãå side projectãå¦ä¹ æ°ç¥è¯ãé®é¢å¨äºæè¿å¤å¼æºæç»´æ··è¿ä¸ä¸ªéè¦ä¸¥è°¨åä¸éç¯ç产åéï¼ä¸åºå¾å¾ä¸ä¼å¥½ãå ä¸ºå¼æºé»è®¤çæ¯è´æ¶çççæ
驱å¨ã社åºé©±å¨ãé¿ææ
¢éæç£¨ï¼èåä¸é»è®¤çæ¯èµæ¬é©±å¨ãèµæºæéä¸çå¿«éåèã\n\n妿æè¿ç§éé
å
·ä½åï¼å®ä¼ä½ç°å¨å¾å¤å°æ¹ãæ¯å¦äº§åä¼ç¼ºå°ä¸¥è°¨çåå¤ï¼æ¹åæ´å®¹æææï¼ç¨æ·æ··å
¥å¤§éä½ä»è´¹ææ¿äººç¾¤ï¼åç»è½¬åé»åè¾å¤§ï¼è¿äºçéå°ä¼åé¦ï¼äº§å容æè¢«æåå°ä¼æ¹åï¼å¢éæåä¸ç®¡çè¿äºå®½æ¾ï¼æ§è¡åä¸è¶³ãå
è严éï¼æµªè´¹å¤§éæ¶é´è¿½æ±æ²¡äººå¨æçææ¯ä¸è®¾è®¡ç»èçå®ç¾ï¼ä»åºå·¨å¤§çæ¶é´æºä¼ææ¬ççã\n\n[](https://x.com/DIYgod/status/2003389654951952683)\n\nå¯¹ææ¥è¯´ï¼ä»å¹´åæ¯ä¸å å»¶è¿å¾ä¹
çåä¸å¸¸è¯è¯¾ãå®å¹¶ä¸åå¯¹çæ³ï¼ä¹ä¸å坹弿ºï¼ä½å®é¼çææ¿è®¤ï¼çæ³éè¦è¾¹çï¼çç±éè¦ææ¬è¡¨ï¼éæ©éè¦å¯¹ç»æè´
318è´£ãæè¿äºè®²æ¸
æ¥å¾ä¿ï¼å¯å®å°±æ¯ç°å®ã\n\nèå³ä½¿è±ç¦»ç°å®ï¼å¨å¼æºè±¡çå¡ä¹å
ï¼å¯¹äºä»¥ä¸ªäººå
´è¶£ä¸ºä¸»ç弿ºé¡¹ç®æ¥è¯´ï¼ä½è
çç±å¥½ä¹å¾å¾ä¼å¨é¿æå¤ç¬çç»´æ¤ä¸ï¼å¨ç½å«è
å伸æå
ççç´æ°å£®ä¸ï¼è¢«ä¸ç¹ç¹æ¶ç£¨æ®å°½ã\n\n[](https://x.com/DIYgod/status/1932703374283284812)\n\nç»åè¿äºäºæ
ä¹åï¼æå¼å§éæ°å®¡è§å¼æºå¯¹æèè¨ç©¶ç«æå³çä»ä¹ãæå¯¹å¼æºçæåº¦ï¼ä¹ä»è¿å»çç»å¯¹æ¨å´ï¼åæäºä¸ç§å¸¦çè¦æçè³è½»å¾® PTSD ç夿æ
绪ãä»å坹弿ºçæå
¥æåºè¯¥ä¹ä¼æ´å å
¼é¡¾ç°å®ãå
å¶åæéæ©æ§ã\n\n## èµåçæ´»\n\næ¥ç¹è½»æ¾çï¼ææ¯ä¾ï¼æ»ç»ä¸ä¸ä»å¹´ç书影鳿¸¸æååºç¨ã\n\n### åºç¨\n\n年度åºç¨å½ç¶æ¯ Foloã\n\n\n\n\nå®è±æäºæä»å¹´å¤§é¨åæ¶é´åç²¾åï¼ä¹çä¸äºä¸äºçè¦åå¿ãä½å¦æä½ æç¨³å®çé
è¯»ä¹ æ¯ï¼ä¹æç®¡çä¿¡æ¯æºçè½åï¼Folo ä¾ç¶æ¯æå¿éç®åæå¥½çä¿¡æ¯èååºç¨ã\n\næ¡é¢åºç¨ï¼é¡ºä¾¿ä¸æï¼AI åºç¨æ¯ä¾æºé«ï¼6/13ï¼ï¼\n\n- Notion Calendarï¼æ¥å客æ·ç«¯ï¼ä½éªæ¯ Apple Calendar 好ä¸å°ï¼UI 乿´ç®æ´ã\n- Sparkï¼é®ä»¶å®¢æ·ç«¯ãSpark V2 ç¨äºå¾ä¹
ï¼V3 ååºæ¶å¤ªé¾ç¨ï¼æ¢å° Mimestreamï¼ä½ Mimestream 太贵ï¼ä¸å¹´ 50 åï¼ï¼ç¨äºä¸å¹´åæ¢å Sparkï¼åç°ç°å¨å·²ç»æçå¾å¤ï¼è½ç¶é»è®¤è®¾ç½®ä¾ç¶å¾å人类ï¼ä½åºæ¬é½è½å¨é项鿹æã\n- TickTickï¼å¾
åäºé¡¹ã\n- ~~ChatGPT Atlasï¼æµè§å¨ãåªè½ç®ææ¶æä¼è§£ï¼é®é¢ä¾ç¶å¾å¤ï¼å°¤å
¶ DevTools å¤ªå·®ãææè§è¿æ¯åºè¯¥è¿çå½çï¼å¦æ Chrome æ£å¼æ¯æç«æ ç¾é¡µï¼æå°±ä¼æ¢å Chromeã~~\n- Chromeï¼æµè§å¨ãArc â Dia â ChatGPT Atlas â Chromeï¼ååå®è¿ç¯å¹´ç»æ»ç» Atlas èªå·±çç¸äºï¼æ£å¥½è¿çå½çäºã\n [](https://x.com/DIYgod/status/2001635623812370563)\n- Warpï¼ç»ç«¯ã\n- Foloï¼èªå·±åçé
读å¨ã\n- VSCodeï¼ä»£ç ç¼è¾å¨ãVSCode â Cursor â Codex åºæ¥å忢å VSCodeã\n- Notionï¼åæ¥è®°ãæ©äºå¹´å°±æ¯ Notionï¼åæ¥çå° Obsidian æä»¶çæå¥½ï¼æ¢å° Obsidianï¼è§ [åºäº Obsidian ççæ´»è®°å½ç³»ç»](/obsidian)ï¼ï¼ä½åæ¥åç°è¿äºé½ä¸éè¦ââåä½ä½éªæå³å®ä½ æ¿ä¸æ¿æåãè½åå¤å°ãObsidian åéäº Markdown è½åï¼å§ç»è¿½ä¸ä¸ Notionï¼å ä¸ Notion å¨ AI ä¸è¶æå
¥è¶å¤ï¼äºæ¯åæ¢åæ¥äºã\n- Plexï¼åªä½æå¡å¨ï¼ç NAS ä¸ççµå½±ãçµè§å§åçªå§ã\n- ç½æäºé³ä¹ï¼æç说å¨å½å¤åºè¯¥ç¨ Spotifyï¼ä½ Spotify çæ¨èå®å¨ä¸å¯¹æèå£ãç½æäºé³ä¹åå 为çæä¸æä¾æµ·å¤æå¡ï¼åªè½å¨ NAS è· UnblockNeteaseMusic å代çï¼å¾éº»ç¦ã\n- Telegram / Discord / Slack / WhatsApp / 微信ï¼å³æ¶é讯ï¼è¶æ¥è¶åæ£äºã\n- [OneKey](https://onekey.so/r/N9AHU3)ï¼å·é±å
ï¼ä½éªæå´é¢å
ï¼ä¸ä¸è乿è¿ï¼ã\n- Eagleï¼å¾ç管çã\n- Googly Eyesï¼ä¸åç¼çã\n [](https://x.com/DIYgod/status/1899649650841571686)\n\nNAS å¨è·çæå¡ï¼\n\n- AdGuard Homeï¼å¹¿åå±è½ + å®¶åºç½ç»æ´å¿«ç DNSã\n- Favaï¼è®°è´¦ï¼è§ [ä¸å¤ç¥å¨ Beancountï¼Crypto ä¸ AI æ¶ä»£çå¤å¼è®°è´¦ç»ææ¹æ¡](/beancount)ã\n- Giteaï¼æç®¡ä¸äºä¸éåå
¬å¼ç代ç ã\n- Home Assistantï¼æºè½å®¶å±
æ§å¶ãç»å¸¸æ¬å®¶æ²¡æä¹ææºè½å®¶å±
äºï¼ä¸»è¦ç¨æ¥åå¤ç¨æºå
çµç®¡çã设å¤å®æ¶å¼å
³æºã\n- [homepage](https://gethomepage.dev)ï¼æå¡å¤ªå¤ï¼ç¨ä¸ä¸ªå
¥å£éä¸ç®¡çã\n- Nginx Proxy Managerï¼ç»åæå¡åé
ååï¼è®¿é®æ´æ¹ä¾¿ã\n- OpenListï¼èªå¨ä¸è½½é¿éäºçãPikPak çä¿åçå
å®¹å° NASã\n- UnblockNeteaseMusicï¼è®©ç½æäºé³ä¹å¨å½å¤ä¹è½ç¨ã\n- Uptime Kumaï¼çæ§æå¡å¯ç¨æ§ã\n- ANI-RSSï¼è¿½çªèªå¨ä¸è½½è®¢é
çªå§ã\n- bili-syncï¼ä¸è½½åå©å婿¶è夹è§é¢å° NASã\n\n### çµå产å\n\n年度çµåäº§åæ¯ OneKey Proã\n\n\n\n- é·é¸ V3 让ææç¹å¤±æãæä¸ç´å¯¹ Meta ç AI ç¼é徿å
´è¶£ï¼ä»¥ä¸ºè¿äºè¿ä¹ä¹
ï¼å½äº§ç«å伿´æçï¼ç»ææºæçã\n\n [](https://x.com/DIYgod/status/1895461087652581702)\n [](https://x.com/DIYgod/status/1938871051859173499)\n\n- iPhone 13 mini å·²ç»ç¨äºåå¹´å¤ï¼æè§è¿è½åæå å¹´ã\n\n [](https://x.com/DIYgod/status/1965676625888235925)\n\n- OPPO Watch X2 忝徿»¡æãå°ç±³æç¯ç¨è
»äºï¼æ¢äºä¸ä¸ªå±å¹æ´å¤§çæºè½æè¡¨ï¼ç¨èµ·æ¥å¾é¡ºæã宿å
¨æºè½åè½»æºè½ä¸¤ç§æ¨¡å¼ï¼
318å
¨æºè½æ¯å®æ´ Androidï¼è½»æºè½å大巿ç¯ï¼ç»èªè¶
强ï¼å¥åº·åè½ä¹ä¸éï¼è¿è½æéæé«è¡åé£é©ã\n\n [](https://x.com/DIYgod/status/1908104944160555401)\n [](https://x.com/DIYgod/status/1921387552634869763)\n\n- 以å OneKey Pro å OneKey Classic 1S Pureã\n\n [](https://x.com/DIYgod/status/1926533360794394849)\n\n### å½±è§\n\nå¹´åº¦å½±è§æ¯ãé¾é¯äºº æ»éç¯ãã\n\n\n\nè奿¯ TV ç好å¾å¤ï¼ä¸å°ææ²é¨åè¢«åªæï¼æ´ä½è§ææåææ¾ãç叿鬼çä¹è½åºä¸ªæ»éç¯ã\n\nä»å¹´æ¶é´åºæ¬é½è±å¨ Folo ä¸äºï¼æä»¥å½±è§æ°é徿¨æ·¡ã\n\nçªå§ï¼\n\n- é¾é¯äºº å§åºçï¼è¾å¡ç¯ï¼ç¬¬äºå欢ï¼è¾å¡å¥½å¥³äººï¼\n [](https://x.com/DIYgod/status/1966451474348507570)\n- é¾é¯äºº æ»éç¯\n- 鬼çä¹åï¼æ éåç¯ ç¬¬ä¸ç« ççªåº§åè¢ï¼ä¸é¨å»çµå½±é¢çäºãå¯è½ææå¤ªé«ï¼æç¹å¤±æï¼å¯¹ççªåº§æ æï¼\n [](https://x.com/DIYgod/status/1956229077934989788)\n- ç« é±¼å¼çåç½ªï¼æ°çªéæå欢ï¼\n [](https://x.com/DIYgod/status/1957666854098596130)\n- æ°¸ä¹
ç黿\n- é´è°è¿å®¶å®¶ 第ä¸å£\n- å
éå»çå¤å¤©\n [](https://x.com/DIYgod/status/1941803538507759698)\n- çççå®ç³\n- å¯ç¤ºå½é
åº\n\nçµè§å§ï¼\n\n- è¡å°¸èµ°è 1-11 å£\n- æªå¥ç©è¯ 1-4 å£ï¼å¨æ°å å¡ç¯çå½±åä¸å£èæ´»å¨çå°æªå¥ç©è¯ä¸»é¢é¬¼å±ï¼ä»¥ä¸ºæ²¡çè¿ï¼å°±è¡¥äºï¼ç»æåç°ä¸å¹´åå·²ç»çè¿â¦â¦ï¼\n- é»é 第ä¸å£\n- ç±ï¼æ»äº¡åæºå¨äºº 第åå£\n- æ è»ä¹å¾ 1-3 å£\n- é¿å®çèæ\n- æåçè¿è
第äºå£\n\nçµå½±ï¼\n\n- 浪浪山å°å¦æª\n- åªåä¹éç«¥é¹æµ·\n\n### å¾ä¹¦ä¸æ¸¸æ\n\nä»å¹´ä¸æ¬ä¹¦é½æ²¡çå®ï¼ç¥è¿ã\n\n游æååå°æäºå ä¸ªå°æ¶ãåå½±å¥å¢ãï¼è¿æ²¡éå
³ï¼è¿æäºå 天ãçè
è£èãï¼æ²¡æå
¶ä»çäºã\n\n## å
¶ä»å¼å¾ä¸æç\n\n### å¥åº·\n\nå»å¹´ä½æ£åç°èææ é常差ï¼åè¿æ ·ä¸å»å¯è½è¦åºå¤§é®é¢ãä¹å被åå°å¼ºå¶è¦æ± 10 ç¹ä¸åºï¼ä½æ¯è§å¾å¾å¤ï¼ç°å¨å¤§æ¦æ¯ 12 ç¹ç¡ã8 ç¹èµ·ãä½ä»å¹´æ²¡ä½æ£ï¼è¿ä¸ç¥éææ ææ²¡ææ¹åã\n\nåååºçåå®¶éæå¥³ä½£åé¥ï¼é¥®é£æ´å¥åº·äºãæè¿æäºç¢³æ°´ï¼æè±æµå½ä¸»é£ï¼ä½éè½»äº 10 æ¤ï¼ä½ç¦»æ åä½éè¿å·® 10 æ¤ãè¿å¨ä¾ç¶å 乿²¡æï¼ä¸è¿æ¯å¤©åºé¨éå¨ï¼æ¥æ°è¿æ¯å¤äºä¸ç¹ã\n\nå¦ä¸æ¹é¢èº«ä½æºè½çè¡°éä¹è¶æ¥è¶ææ¾ã主è¦ä½ç°å¨ç²¾åçä¸éåå·²ç¥èå¼±é¨ä½ä¸ãçèçã颿¤ç
ãèçç¼çãçå¨ççèæ¯ç
齿æå éï¼ç²¾åä¹å¤§ä¸å¦ä»åï¼ä»å¹´å¼å§ä¹ æ¯éè¿å¤åï¼åå¡å ãç磺é
¸ï¼æ¥ç»´æå·¥ä½æçï¼ä½ä¹å¯¼è´äºä¾èµï¼å°è¯åæ¢ç磺é
¸æå
¥æ¶å°±ä¼åºç°å§ç头çï¼åªè½éè¿æ¢çè¯æ¥ç¼è§£ã\n\n### å±
ä½\n\nå®¶éå¤äºååä¹ååå¾å¼å¸¸æ¥æ¤ï¼äºæ¯æ¢äºæ´å¤§çæ¿åï¼ä»æ°å å¡å¥³ç鿬å°åè¿çè£å»è¥¿ãå 为ä½ç½®æ´åï¼ç©ºé´æ´å¤§ï¼æ¿ç§åèæ´ä¾¿å®ï¼èªç¶ç¯å¢ä¹æ´å¥½ãæè¾¹è¿æä¸ª Jurong Lake Gardens çè¶
大å½å®¶å
¬åï¼å¾éåéå¨ã\n\n\n\n### æ
游\n\nåå°æå䏿å¨å®¶æå¾å¿«æéäºï¼è䏿乿¯ç¸å¯¹éååºé¨çé¶æ®µï¼äºæ¯æç´§å®æäºä¸¤ä¸ªè½»æ¾çå°æ¹ã\n\n**大ç**ç䏻颿¯åãåäºå¥½å¤èåï¼è汤è¶
级é²ç¾ï¼ä¹ç¡®å®å¯è½æå±é©ãåä¹åé¥åºè¿ä¼åæ ·ï¼å¦æä¸æ¯è¦å¸¦çæ ·æ¬ä¸èµ·å»å»é¢ã\n\n[](https://x.com/justjustjustcc/status/1907051362036465763)\n[](https://x.com/DIYgod/status/1907053924626072055)\n\n卿°å å¡å¯æ²¡é£ä¹å¤å¥½åçã\n\n[](https://x.com/justjustjustcc/status/1909977000980385808)\n[](https://x.com/justjustjustcc/status/1911989885998895249)\n\n洱海æä¸è¡è®©äººå¹³éçåéãä¹åè·åå°ç§å®ç»èº«å°±æ¯å¨æ´±æµ·ä¸ï¼å忥ï¼å·²ç»æ¯ä¸å®¶ä¸å£äºã洱海ä¹è§è¯äºæä»¬ä»åå°ï¼å°æ
ä¾£ï¼åå°å¤«å¦»ï¼åå°ç¶æ¯çååï¼æå¯¹åå°çç±ä¹éçæ¶é´æ²æ·è¶æ¥è¶æ·±æ²ã\n\n[](https://x.com/justjustjustcc/status/1910216881304392131)\n[](https://x.com/justjustjustcc/status/1910689980516839724)\n[](https://x.com/DIYgod/status/1911599563041095989)\n\n**å·´åå²**åæ¯å½»åºæ¾ç©ºãæ¾äºä¸ªè±ªå度ååºï¼å¤©å¤©æ¸¸æ³³ãæå¤ªé³ï¼è®©äººçæå°å¿è®°æ¥å¸¸çå éã\n\n[](https://x.com/justjustjustcc/status/1921916021662765358)\n[](https://x.com/justjustjustcc/status/1922654327950168089)\n[](https://x.com/DIYgod/status/1921451501660033114)\n\n以å**æ°å å¡ç¯çå½±åä¸å£èæéå¤**ãä»å¹´æå个主é¢é¬¼å±ï¼æªå¥ç©è¯ãæ°å 塿å¶çµä¹å°ãé诡å¼ä»ãæ³°å½æ»äº¡ä½è¯è
ï¼é叏坿ï¼å
¨ç¨å¨å°å«ã\n\n\n\n### æè¶£çå°äº\n\nNAS åäºä¸å硬çï¼èªå¨å¼ºå¶åªè¯»äºï¼ä½æ°æ®æ²¡ä¸¢ã\n\n[](https://x.com/DIYgod/status/1981460911304167588)\n\nè¿çæ¥å°å¤å»è
ç¾æ¯ã\n\n[](https://x.com/DIYgod/status/1932084384540102892)\n\nçåå°æ¼ä¹é«ã\n\n[](https://x.com/DIYgod/status/1935675896821899268)\n\n## 2026 æ¿æ\n\næå¯¹ 2026 çæ¿æå¾æ´ç´ ãå¸æèº«ä½å«åç¨åæ¶æ¯æéæï¼å¸æè½ç»§ç»èµå°é±ï¼å¸æè½æ©ç¹æ¿å°æ°å å¡èº«ä»½ï¼è®©æªæ¥å°ä¸äºä¸ç¡®å®æ§ã\n\n<style>\n .prose :where(img):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border: 1px solid #eee;\n }\n</style>"},{"slug":"europe-travel","title":"欧洲æ
游VLOG | å·´å¡ç½é£ ç½é©¬ 梵èå å¨å°¼æ¯ ç±³å
° èé»ä¸ å ç¹æè¯ å·´é»","tags":["vlog"],"body":"2022å¹´12æ"},{"slug":"beancount","title":"ä¸å¤ç¥å¨ Beancountï¼Crypto ä¸ AI æ¶ä»£çå¤å¼è®°è´¦ç»ææ¹æ¡","tags":[],"body":"## è®°è´¦\n\nè®°è´¦è¿ä»¶äºï¼æ¬è´¨ä¸æ¯å¨åçä¸ä¸ªé®é¢ï¼\n\n- é±ä»åªæ¥ï¼\n- é±ç°å¨å¨åªï¼\n- 鱿åå»åªäºï¼\n\nå¬èµ·æ¥å¾ç®åï¼ä½åªè¦ä½ çéèæ´»å¨ç¨å¾®å¤æä¸ç¹ï¼è¿ä¸é®ç«å»åæä¸éãå¤åéæ¹ç¨ãï¼\n\n- å¤ä¸ªè´¦æ·ï¼é¶è¡å¡ãæ¯ä»å®ãä¿¡ç¨å¡ã交ææãé¾ä¸é±å
â¦â¦\n- å¤ç§èµäº§ç±»åï¼å¨èã贷款ãæèµâ¦â¦\n- å¤ç§è´§å¸ï¼CNYãUSDãBTCãåç§å±±å¯¨å¸â¦â¦\n- å¤ä¸ªæ¶é´ç»´åº¦ï¼åæã颿¯ãåè´·â¦â¦\n\n乿£å ä¸ºå¦æ¤ï¼æå忢è¿å¥½å 奿¹æ¡ã\n\n2016â2021ï¼ç½ææé± - 彿¶éæ±å¾æ´ç´ ï¼è®°äººæ°å¸æ¶å
¥ãå¨èãæ¥å¸¸å¼éãå®è½èªå¨åæ¥é¶è¡æµæ°´ãæ¯ä»å®å¾®ä¿¡è´¦åï¼å¯¹å½å
åºæ¯é常æ¹ä¾¿ã\n\n2021â2024ï¼MoneyWiz - åºå½åæéè¦å¤å¸ç§ï¼å¹¶ä¸ä¸»è¦ä½¿ç¨è±å½çé¶è¡è´¦æ·ãMoneyWiz å¨å¤å¸ç§ãæµ·å¤è´¦æ·åæ¥ä¸å¾é¡ºæã\n\n2024ï¼æå¼å§è®°å½å å¯èµäº§ï¼è¿æ¶åæ
åµå¼å§é叏夿äºï¼æä¸åªæ³ç¥éãæ»é¢æ¶¨äºå¤å°ãï¼èæ¯æ³è¦ï¼æ¯ä¸ç¬ä¹°å
¥/ååºçæç»ãä¸åèµäº§çå æ¯ãæ¯æ¥çæµ®çæµ®äºãæ´ä¸¥è°¨çæ¶çç计ç®ã\n\nMoneyWiz 对æèµ/å å¯èµäº§æ¯æå¾æéï¼æåè¯äºæç¥æè¡ï¼å®è½è®°å½æèµååæ»é¢å¹¶ç®æ¶ççï¼ä½æ æ³è®°å½å°æ¯ç¬æç»ï¼å¾å¤ä»·æ ¼éè¦æå¨ç»´æ¤ï¼æµ®çæµ®äºä¹æ æ³èªå¨è®¡ç®ã\n\næåææ¥è§¦å°å¤å¼è®°è´¦å Beancountï¼å½»åºè§£å³äºæçé®é¢ã\n\næææè¯å°ï¼å¾å¤æ¶åæä»¬è§å¾è®°è´¦éº»ç¦ï¼å¹¶ä¸æ¯ UI ä¸å¤æ¼äº®ã交äºä¸å¤é¡ºæ»ï¼èæ¯è®°è´¦æ¹æ³ä¸å¤ç§å¦ã彿¹æ³è¶³å¤ç§å¦æ¶ï¼ä½ çè³ä¸éè¦ UIï¼ä¸ä¸ª CLI + å ä¸ªçº¯ææ¬æä»¶ + ä¸å¥æ¸
æ°è¯æ³ï¼å°±è½æè´¢å¡ä¸çæè¿°å¾é常åç¡®ã\n\n---\n\n## å¤å¼è®°è´¦æ³\n\nå¤å¼è®°è´¦ä¹çå¾åç´è§ï¼ä½ä¸æ¦ææ¡ï¼ä¼åç°å®é常强大åçµæ´»ï¼èä¸ä¼è¿«ä½¿ä½ ç¨æ´æ¸
æ°çæ¹å¼çè§£éèæ´»å¨ã\n\n### äºä¸ªæ¡¶ï¼è´¦æ·ç±»åï¼\n\nå¤å¼è®°è´¦ä¼æææè´¦æ·å½å°äºç±»ï¼å¯ä»¥çè§£æäºä¸ªè£
è±åçæ¡¶ï¼ï¼\n\n- **èµäº§ Assets**ï¼ç°éãé¶è¡å款ãæä»·è¯å¸ãé¾ä¸èµäº§â¦â¦\n- **è´åº Liabilities**ï¼ä¿¡ç¨å¡æ¬ æ¬¾ãæ¿è´·ã车贷â¦â¦\n- **æ¶å
¥ Income**ï¼å·¥èµãå¥éã婿¯â¦â¦\n- **è±è´¹ Expenses**ï¼åé¥ãè´ç©ãæ
è¡ã订é
â¦â¦\n- **æç Equity**ï¼è°è/彿¡£ç¨çãåºåº§ãï¼ä¾å¦æåä½é¢ã误差修æ£ç\n\n### ææéèæ´»å¨é½æ¯ãæ¡¶ä¹é´ç转移ã\n\n- **æ¶å
¥ â èµäº§**ï¼åå·¥èµï¼æ¶
318å
¥æ¡¶åå°ï¼èµäº§æ¡¶å¢å ï¼\n- **èµäº§ â è±è´¹**ï¼ä¹°ä¸è¥¿ï¼èµäº§æ¡¶åå°ï¼è±è´¹æ¡¶å¢å ï¼\n- **è´åº â èµäº§**ï¼åé±ï¼è´åºæ¡¶å¢å ï¼èµäº§æ¡¶å¢å ï¼\n- **èµäº§ â è´åº**ï¼è¿æ¬¾ï¼èµäº§æ¡¶åå°ï¼è´åºæ¡¶åå°ï¼\n- **è±è´¹ â èµäº§**ï¼éè´§ï¼è±è´¹æ¡¶åå°ï¼èµäº§æ¡¶å¢å ï¼\n- **èµäº§ â æ¶å
¥**ï¼æèµäºæï¼èµäº§æ¡¶åå°ï¼æ¶å
¥æ¡¶åå°ï¼\n\nä½ ä¼åç°ï¼æè¿ç§ç¬¦å·çº¦å®ï¼æ¶å
¥è´¦æ·çä½é¢ç»å¸¸æ¯è´æ°ãè¿ä¸æ¯ bugï¼èæ¯è®°è´¦è§è§ä¸åã\n\nå¯ä»¥è¿æ ·æ³è±¡ï¼æãæ¶å
¥ãæ³æä¸ä¸ªè£
çä½ ä¸çï¼è¿å»åæªæ¥ï¼å³å¨ææçæ¡¶ãæ¯æ¬¡ä½ æ¿å°å·¥èµï¼å
¶å®æ¯å¨ä»è¿ä¸ªæ¡¶éååºä¸é¨åï¼æ¾è¿ä½ çèµäº§éãä½ è½åçè¶å¤ï¼æ¶å
¥æ¡¶éçæ°å¼å°±è¶å¾è´çæ¹åèµ°ã\n\næä»¥æ¶å
¥ä¸ºè´æ°å¹¶ä¸è¡¨ç¤ºãä½ æ¬ äºæ¶å
¥ãï¼åªæ¯å ä¸ºä½ å¨ä»è¿ä¸ªæ¡¶ååºèµäº§ãè¿ä¹æ¶åå°å¤å¼è®°è´¦æ³çä¸ä¸ªæ ¸å¿è§åï¼ä¸ç¬äº¤æéï¼æææ°åç¸å å¿
é¡»çäº 0ãè¿ä¹æ¯å®æ£éªæ£ç¡®æ§çå
³é®ï¼ä½ å°åä¸ç¬ãåéä¸ä½æ°ï¼ç³»ç»å°±ä¼å½åºæ¥è¦ã\n\nå¨ Beancount 常è§ç符å·çº¦å®ä¸ï¼ä½ ä¼çå°ç±»ä¼¼è¿æ ·çãä¼è®¡æçå¼ãåæ³ï¼\n\n```\n(æ¶å
¥ + è´åº) + (èµäº§ + è±è´¹) = 0\n```\n\nä½ ä¹å¯ä»¥æå®ç解为æ´ä¼ ç»ç表达ï¼ä½ èµå°çã忥çï¼æç»è¦ä¹åæä½ æ¥æçèµäº§ï¼è¦ä¹è¢«è±æã\n\n---\n\n## Beancount\n\n[Beancount](https://github.com/beancount/beancount) æ¯ç®åæç¨è¿æèæã乿éåå¤æè´¢å¡ä¸çççº¯ææ¬å¤å¼è®°è´¦å·¥å
·ã\n\nå®ä¸æ¯å¤å¼è®°è´¦è½¯ä»¶çå¼åè
ï¼æ´æ©çä»£è¡¨æ¯ [Ledger](https://github.com/ledger/ledger)ãä½ Beancount å¨ Ledger çæ¦å¿µä¸åäºä¸å°æ¹è¯ï¼ä¹ç»åäºæ¶é´çèéªï¼2007 å¹´å¼å§ï¼ã\n\nå¦ä¹ Beancount æç´æ¥çæ¹æ³æ¯ç宿¹ææ¡£ï¼[Getting Started with Beancount](https://docs.google.com/document/d/1P5At-z1sP8rgwYLHso5sEy3u4rMnIUDDgob9Y_BYuWE)ã[Beancount Language Syntax](https://docs.google.com/document/d/1wAMVrKIA2qtRGmoVDSUBJGmYZSygUaR0uOMW1GV3YE0)ï¼æè
çè¿ç¯æç« ä¹å¾ä¸éï¼[Beancount ââ å½ä»¤è¡å¤å¼ç°¿è®° | wzyboyâs blog](https://wzyboy.im/post/1063.html)\n\nè¿ç¯å客æä¸ä¼å±å¼è®²è¯æ³å使ç¨ç»èï¼èæ¯ç¨å 个ä¾åè®©ä½ å¿«éæå Beancount ç强大ä¹å¤å为ä»ä¹è¯´å®æ´éå Crypto å AI æ¶ä»£ã\n\n### å¤çå¤æäº¤æ\n\nä½¿ç¨ Beancount å¯ä»¥ä¼é
å¤çå¤æäº¤æï¼ä»¥ä¸ä¾åæ¶åå¤å¯¹å¤ï¼å¤è´¦æ· + å¤äººå¤æäº¤æï¼ä½æ¯å¯ä»¥æè¿°å¾æ¸
æ¥\n\n```ts\n2016-02-05 * \"é¥åº\" \"å室ååé¥\"\n Assets:Cash:Wallet -300.00 CNY ; æç¨ç°éæ¯ä»\n Assets:Receivables:Bob -200.00 CNY ; 室å帮æä»çç°é\n Expenses:Food:DiningOut +250.00 CNY ; AA æçä¸å\n Assets:Receivables:Bob +250.00 CNY ; AA 室åçä¸å\n```\n\nè¿éåæ¶åçäºï¼\n\n- ä½ ä»äºé¨åç°é\n- 室åä¹ä»äºé¨åç°é\n- AA åæ\n- ä½ å¯¹å®¤å产ç/æµæ¶åºæ¶\n\næååªéè¦ç `Assets:Receivables:Bob` ä½é¢å°±å¯ä»¥ç¥éä½ æ¬ å®¤åå¤å°é±ï¼ç `Expenses:Food:DiningOut` ä½é¢å°±å¯ä»¥ç¥éæ¯ä¸ªæåé¥å¼éè±äºå¤å°é±ã\n\n妿ç¨ãåå¼è®°è´¦ + 夿³¨ã硬å ï¼åé¢åºæ¬ä¸å®ç®ä¸æ¸
ï¼èå¤å¼è®°è´¦æç»æç´æ¥ååºæ¥ï¼ä¹åç»è®¡å°±åå¾é常èªç¶ã\n\n### å¤çå¤å¸ç§äº¤æ\n\nè·¨å¸ç§äº¤æé常æ¶åæ±çé®é¢ï¼Beancount ä¹è½ä¼é
å¤ç\n\n```ts\n2016-02-10 * \"ååº\" \"ä¹°ä¸è¥¿\"\n Assets:Cash -200.00 USD\n Liabilities:CMB:CreditCards -650.00 CNY @@ 100.00 USD\n Expenses:Clothing:Pants +150.00 USD\n Expenses:Clothing:Shoes +150.00 USD\n```\n\nè¿ç±»ãå·å¡ä»¥äººæ°å¸è®°è´¦ãä½å®é
æ¶è´¹ä»¥ç¾å
计价ãçåºæ¯ï¼å¨è·¨å¢çæ´»éé常常è§ãBeancount ç表达æ¹å¼å¾ç´æ¥ï¼ç¨ä¸æ¡è®°å½æä¸¤è¾¹å¸ç§çå
³ç³»å彿¶æ±çç»å®ä½ï¼ä¹åæ¥è¯¢/æ¥è¡¨é½è½åºäºå®ç»§ç»æ¨å¯¼ã\n\n### æ´éå Crypto 交æ\n\nBeancount ä¸éå¶è´§å¸åä½ï¼USDãCNYãBTCãUSDTãçè³ä»»ä½ä½ èªå®ä¹ç token é½å¯ä»¥ãåé
å类似 SQL çæ¥è¯¢å·¥å
· `bean-query`ï¼æ¿æ¥åå å¯èµäº§æèµåæé常顺æã\n\n举ä¸ä¸ªçèµ·æ¥å¾å¤æï¼ä½è®°å½å¾ç®æ´çä¾åï¼\n\n```ts\n2025-07-23 price BTC 1 USD\n\n2025-07-24 * \"OKX\" \"ä¹°BTC\"\n Assets:Crypto:USD -150 USD\n Assets:Crypto:BTC 149 BTC {1 USD}\n Expenses:TradingFee:Crypto 1 USD\n\n2025-07-24 * \"OKX\" \"ä¹°BTC\"\n Assets:Crypto:USD -60 USD\n Assets:Crypto:BTC 19 BTC {3 USD}\n Expenses:TradingFee:Crypto 3 USD\n\n2025-07-24 * \"OKX\" \"åBTC\"\n Assets:Crypto:BTC -198 BTC {} @ 2 USD\n Assets:Crypto:USD 298 USD\n Income:Investment\n\n2025-07-25 price BTC 4 USD\n```\n\nè¿ä¸ªä¾åéå
å«äºï¼\n\n- 夿¬¡ä¹°å
¥ï¼ææ¬ä¸å\n- æç»è´¹\n- ååºæ¶èªå¨å¹é
ææ¬ï¼`{}` 让 Beancount èªå·±å»æ¾ï¼\n- å¸ä»·ï¼`price`ï¼éæ¶é´åå\n\nä»
åºäºè¿äºè®°å½ï¼Beancount å¯ä»¥èªå¨ç®åºï¼\n\n- æ»æ¶ç/å·²å®ç°æ¶ç/æªå®ç°æ¶ç\n- åç±»æ¶ççï¼ä¾å¦èµéå ææ¶çç Modified Dietzãæ¶é´å ææ¶çç TWRRãçè³ä½ èªå®ä¹çä»»ææ¶ç计ç®ï¼\n\næ¢å¥è¯è¯´ï¼ä½ åªè´è´£æäºå®åæ¸
æ¥ï¼ä»»ä½å¤æè®¡ç®é½å¯ä»¥äº¤ç» Beancountã\n\n---\n\n## æç Beancount å®è·µ\n\næè´¦æ¬å½ä»£ç 管çã\n\n### ç¼è¾å¨\n\næç¨ VSCodeï¼é
å [Beancount](https://marketplace.visualstudio.com/items?itemName=Lencerf.beancount)ã[Beancount Formatter](https://marketplace.visualstudio.com/items?itemName=dongfg.vscode-beancount-formatter) å以ä¸é
ç½®å®ç°è¯æ³é«äº®ãèªå¨è¡¥å
¨ãéè¯¯æ£æ¥ãæ ¼å¼åçã\n\n```json\n{\n \"beancount.mainBeanFile\": \"main.bean\",\n \"beancount.runFavaOnActivate\": false,\n \"beancount.completePayeeNarration\": true,\n \"beancount.fixedCJKWidth\": true,\n \"beancount.inputMethods\": [\"pinyin\"],\n \"beancount.instantAlignment\": false,\n \"editor.formatOnSave\": true\n}\n```\n\n\n\n### 项ç®ç»æ\n\nBeancount å¤©ç¶æ¯ææ¨¡ååï¼ä¸åç±»å交ææå°ä¸åæä»¶ï¼å `include` è¿ä¸»å
¥å£ï¼
318ç»´æ¤ææ¬é常ä½ã\n\n```ts\n.\nâââ books\nâ âââ 2025\nâ â âââ 2025.bean\nâ â âââ cn.bean\nâ â âââ crypto.bean\nâ â âââ daily.bean\nâ â âââ periodic.bean\nâ â âââ prices.bean\nâ âââ books.bean\nâââ scripts\nâ âââ importer-dbs-credit.js\nâ âââ importer-dbs-debit.js\nâ âââ importer-okx.js\nâââ accounts.bean\nâââ commodity.bean\nâââ config.pbtxt\nâââ dashboards.yaml\nâââ main.bean\n```\n\n`main.bean` æ¯å
¥å£æä»¶ï¼é䏿¾é
ç½®ãæä»¶å includeï¼\n\n```ts\noption \"title\" \"DIYgod's Book\"\noption \"operating_currency\" \"USD\"\noption \"booking_method\" \"LIFO\"\noption \"account_rounding\" \"Equity:Rounding-Error\"\n\nplugin \"beancount_periodic.recur\"\nplugin \"beancount_periodic.split\"\n\n2024-01-01 custom \"fava-option\" \"auto-reload\" \"true\"\n2024-01-01 custom \"fava-option\" \"default_page\" \"income_statement/?conversion=units&interval=day\"\n\n2024-01-01 custom \"fava-extension\" \"fava_portfolio_returns\" \"{\n 'beangrow_config': 'config.pbtxt',\n}\"\n\n2024-01-01 custom \"fava-extension\" \"fava_dashboards\" \"{\n 'config': 'dashboards.yaml'\n}\"\n\ninclude \"accounts.bean\"\ninclude \"books/books.bean\"\ninclude \"commodity.bean\"\n```\n\n`accounts.bean` å®ä¹ææè´¦æ·ï¼ç¥å»é¨åï¼ï¼\n\n```ts\n; Expenses è´¹ç¨ ââ å¤åºå°±é¤ãè´ç©ãæ
è¡ç\n1995-06-09 open Expenses:Food:Restaurant\n; ... çç¥è¥å¹²è¡ ...\n\n; Income æ¶å
¥ ââ å·¥èµãå¥éç\n2020-04-01 open Income:Salary\n; ... çç¥è¥å¹²è¡ ...\n\n; Assets èµäº§ ââ ç°éãé¶è¡å款ãæä»·è¯å¸ç\n2024-01-01 open Assets:Bank:DBS SGD\n2024-01-01 open Assets:Crypto:OKX:BTC BTC\n; ... çç¥è¥å¹²è¡ ...\n\n; Liabilities è´åº ââ ä¿¡ç¨å¡ãæ¿è´·ã车贷ç\n2024-01-01 open Liabilities:Bank:DBS SGD\n; ... çç¥è¥å¹²è¡ ...\n\n; Equity æç ââ ç¨äºãåæ¾ãæä¸ªæ¶é´æ®µå¼å§åå·²æçè±å\n2024-01-01 open Equity:Opening-Balances\n2024-01-01 open Equity:Rounding-Error\n```\n\n`commodity.bean` å®ä¹è´§å¸/èµäº§ï¼å¹¶ç¨ `price` æå®ä»·æ ¼æ¥æºï¼åé¢ä¼è®²èªå¨æ´æ°ï¼ï¼\n\n```ts\n2025-01-01 commodity USDT\n name: \"Tether\"\n\n2025-01-01 commodity BTC\n name: \"Bitcoin\"\n price: \"USD:coinbase/BTC-USD\"\n\n2025-01-01 commodity USD\n name: \"United States Dollar\"\n\n2025-01-01 commodity QQQ\n name: \"NASDAQ-100 Index\"\n price: \"USD:alphavantage/price:QQQ:USD\"\n```\n\n`books/2025/prices.bean` ç¨äºè®°å½æ¯æ¥ä»·æ ¼ï¼èªå¨çæï¼ï¼è®©æä»æµ®çæµ®äºå¯è¢«è®¡ç®ï¼\n\n```ts\n2025-01-01 price BTC 93346.48 USD\n2025-01-02 price BTC 94384.76 USD\n; ... çç¥è¥å¹²è¡ ...\n```\n\n### å ç§å¸¸è§ç Crypto 交æ\n\nä¸é¢è¿äºä¾åæ¥èªæçå®é
ä¹ æ¯ï¼äº¤æä¸æ¯æå¡«çï¼èæ¯éè¿ `scripts/importer-okx.js` ä» OKX 交æè®°å½èªå¨çæã\n\n#### 稳å®å¸ç°è´§äº¤æ\n\n1ï¼ä¹°å
¥ï¼ç¨ USDT ä¹° BTC + æç»è´¹\n\n```ts\n2025-11-14 * \"OKX\" \"Buy BTC with USDT\"\n Assets:Crypto:OKX:USDT -3022.493 USDT\n Assets:Crypto:OKX:BTC 0.0302113288 BTC {100000 USDT}\n Expenses:TradingFee:Crypto:OKX\n```\n\nè¿éæææç»è´¹ç空ï¼è®© Beancount èªå¨è¡¥é½ï¼å©ç¨ãæ¯ç¬äº¤æå èµ·æ¥ä¸º 0ãçè§åï¼ã\n\nä½å¦æä½ ç BTC å¯è½æ¥èª USDTãUSDC çä¸å稳å®å¸ï¼ä¹åç»è®¡æ¶ç伿¶åæ±çä¸å¸ç§è½¬æ¢ã为äºè®©åææ´ç»ä¸ï¼æå¸¸ç¨ä¸ä¸ªè¿æ¸¡è´¦æ·æææ¬ç»ä¸æ USDï¼\n\n```ts\n2025-11-14 * \"OKX\" \"Buy BTC with USDT\"\n Assets:Crypto:OKX:USDT -3022.493 USDT\n Equity:Exchange 3022.493 USDT\n Equity:Exchange -3022.493 USDT @ 1 USD\n Assets:Crypto:OKX:BTC 0.0302113288 BTC {100000 USD}\n Expenses:TradingFee:Crypto:OKX\n```\n\n`Equity:Exchange` çä½ç¨å¾åãç»ä¸æ¢ç®å±ãï¼æä¸å稳å®å¸äº¤æé½æç®æ USD å£å¾ï¼åç»æ¥è¡¨ä¼é常èæã\n\n2ï¼ååºï¼å BTC å¾ USDC + èªå¨ç®æ¶ç\n\n```ts\n2025-09-18 * \"OKX\" \"Sell BTC for USDC\"\n Assets:Crypto:OKX:BTC -0.
318100011 BTC {} @ 117600 USD\n Equity:Exchange 11756.00101788 USD\n Equity:Exchange -11756.00101788 USD @ 1 USDC\n Assets:Crypto:OKX:USDC 11756.00101788 USDC\n Expenses:TradingFee:Crypto:OKX -5.29258212 USD\n Income:Investment\n```\n\n- `{} @ 117600 USD`ï¼ææ¬ä»·ç± Beancount èªå¨ä»åå²è®°å½éå¹é
ï¼ååºä»·æ¯ 117600 USD\n- å¤åºæ¥çé¨åè¿ `Income:Investment`ï¼æ¶çå°±è¿æ ·èªç¶åºæ¥äº\n\nå¦æä½ ä¸éè¦ç»ä¸æ¢ç®ï¼ä¹å¯ä»¥ç®åæï¼\n\n```ts\n2025-09-18 * \"OKX\" \"Sell BTC for USDC\"\n Assets:Crypto:OKX:BTC -0.100011 BTC {} @ 117600 USDC\n Assets:Crypto:OKX:USDC 11756.00101788 USDC\n Expenses:TradingFee:Crypto:OKX -5.29258212 USDC\n Income:Investment\n```\n\n#### å¸å¸ç°è´§äº¤æ\n\nç¨ BTC ä¹° ETH\n\n```ts\n2025-08-22 * \"OKX\" \"Buy ETH with BTC\"\n Assets:Crypto:OKX:BTC -0.025828016279999998 BTC {} @ 112480.295 USD\n Equity:Exchange 2,905.1428904392 USD\n Equity:Exchange -2,905.1428904392 USD\n Assets:Crypto:OKX:ETH 0.6820274505 ETH {4224.16 USD}\n Income:Investment\n Expenses:TradingFee:Crypto:OKX 0.0001705495 ETH {4224.16 USD}\n```\n\nå¸å¸äº¤æçææ¬/æ¶çæ´å®¹æä¹±ï¼ä½æè¿ç¨ç»ä¸å° USD å£å¾åï¼å°±ä¼åå¾é常æ¸
æ°ï¼ç¨ BTC æ¢å°ç ETHï¼ææç¡®ç USD ææ¬ï¼æç»è´¹åä¹åçæ¶çä¹è½è¢«æ£ç¡®è®¡å
¥ã\n\n#### U æ¬ä½å约\n\nU æ¬ä½å约å¨äº¤ææå
é¨ä¸æ¯ççååº BTCï¼ä½ä¸ºäºæçäºè½å°èµäº§ååä¸ï¼æç¨ä¸ä¸ªãåå¸ååº/ä¹°åãè¿ä¼¼æ¨¡åæ¥è¡¨è¾¾ï¼\n\n- å¼ä»å空ï¼çä»·äºãå BTC ååºï¼æ¢æ USDTã\n- å¹³ä»ï¼çä»·äºãç¨ USDT ä¹°å BTC å½è¿ã\n- çäºä¼èªç¶ä½ç°å¨æåå¤åºæ¥ï¼æå°äºï¼çé¨åä¸\n\n```ts\n2025-12-01 * \"OKX\" \"å约 BTC-USDT å空å¼ä»\"\n Assets:Crypto:OKX:Futures:BTC -10 BTC @ 100000 USD\n Equity:Exchange 1000000 USD\n Equity:Exchange -1000000 USD @ 1 USDT\n Assets:Crypto:OKX:Futures:USDT 1000000 USDT\n\n2025-12-10 * \"OKX\" \"å约 BTC-USDT å空平ä»\"\n Assets:Crypto:OKX:Futures:USDT 1000000 USDT\n Equity:Exchange 1000000 USDT\n Equity:Exchange -1000000 USDT @ 1 USD\n Assets:Crypto:OKX:Futures:BTC -10 BTC {80000 USD}\n Income:Investment\n```\n\nçå®å约è¿ä¼æ¶åä¿è¯éãèµéè´¹ã强平ãç»ç®å¸ç§å·®å¼çãæ´ä¸¥è°¨çåæ³å¯ä»¥ç»§ç»æåè´¦æ·æ¨¡åï¼ä½è¿å¥åæ³å·²ç»è½å¨å¤§å¤æ°åºæ¯éæç»æè®°æ¸
æ¥ãç®åºæ¥ã\n\n#### 叿¬ä½å约\n\n叿¬ä½å约æ´å¤æï¼ä»ä½é常æ¯ãUSD 计价ç BTC ä»·æ ¼æå£ãï¼è䏿¯åºå®æ°é BTCãæ³ææ¯æ¥ä»·æ ¼è®¡ç®æµ®çæµ®äºä¼å¾å¤æï¼éè¦ãå账模åãï¼äºå®è´¦ + ä¼°å¼è´¦ï¼ã\n\næç®åéæ©å
æå®ç®åæï¼å¹³ä»æ¶æå¨ç®åºä»¥ BTC 为åä½çæ¶çï¼åªè®°å½æç» BTC ååï¼åªæ¯è¿æ ·ä¼çºç²å½åæä»æªå®ç°çå©çæ°æ®ï¼\n\n```ts\n2025-11-21 * \"OKX\" \"å约 BTC-USD 1.0\"\n Income:Investment\n Assets:Crypto:OKX:BTC 0.007433571994392 BTC {85400 USD}\n```\n\n### èªå¨åèæ¬ + AI è®°è´¦\n\néè¿èªå¨åèæ¬å AIï¼å¯ä»¥æå¤§ç®å记账工ä½éï¼è®©ãè®°è´¦ãåæã对账ãã\n\n**èªå¨çæäº¤æè®°å½**\n\nBeancount æ¯çº¯ææ¬ï¼è¿æå³çå®å¤©çéåèªå¨åçæè®°å½åæ´æ°èµäº§ä»·æ ¼ã\n\n社åºéæå¾å¤å¯¼å
¥å·¥å
·ï¼æ¯å¦ï¼[beangulp](https://github.com/beancount/beangulp)ã[smart_importer](https://github.com/beancount/smart_importer)ã\n\n使èªå·±ç¨å¾æå¤çè¿æ¯èªåèæ¬ï¼ä¾å¦ OKX ç `scripts/importer-okx.js`ãDBS ç `scripts/importer-dbs.js`ï¼ãåçé½ç±»ä¼¼ï¼ä»æ¥å£æè
ç½é¡µè·åäº¤ææ°æ® â 转æ Beancount ææ¬ã\n\n对äºä¸äºæ²¡ææ¥å£ãçè³æ²¡æè´¦å导åºçè´¦æ·ï¼æ¯å¦æç°å¨ç¨ç Trustï¼ï¼ç´æ¥æªå¾ä¸¢ç» AI è¯å«ä¹å¾çå¿ï¼\n\n\n\n**èªå¨æ´æ°ä»·æ ¼**\n\nBeancount æ¬èº«æ¯ç¦»ç
318º¿ç³»ç»ï¼ä¸ä¼èªå¨ä»äºèç½æä»·æ ¼ï¼æä»¥ææ¯å¤©ä¼æææ°çå¸ä»·/è¡ä»·åè¿ `books/2025/prices.bean`ï¼è®©æ¥è¡¨è½è®¡ç®å½æ¥ä¼°å¼ä¸æªå®ç°çå©ã\n\n宿¹æä¾äºå¼ç®±å³ç¨ç [beanprice](https://github.com/beancount/beanprice)ï¼æ¯æ CoinbaseãCoinmarketcapãAlphavantage çæ¥æºï¼ä¸ä¸ªå½ä»¤å°±è½æ´æ°ï¼\n\n```sh\nbean-price -i --update-rate daily --no-cache main.bean >> books/2025/prices.bean\n```\n\n### AI åæä¸å¯è§å\n\nå¾å¤äººæè®°è´¦åå¨ãè®°ä¸æ¥ãå°±ç»æäºï¼ä½çæ£æä»·å¼å容æè¢«éå¿çæ¯è®°å½ä¹åå¦ä½åæã\n\nBeancount å¨åæåå¯è§åè½åä¸éå¸¸å¤¸å¼ ï¼\n\n- å¯ä»¥è£
æä»¶ç Web çé¢ï¼[Fava](https://github.com/beancount/fava)\n- ç±» SQL æ¥è¯¢è¯è¨ï¼BQLï¼Beancount Query Languageï¼\n\nå
çä¸äºæå¸¸ç¨çææï¼\n\næèµåçä»·æ ¼èµ°å¿å¾ï¼Fava èªå¸¦ï¼ï¼\n\n\n\nä¸åæèµåçæ¶çæ²çº¿ï¼ä»¥ååç§å ææ¶ççï¼æä»¶ [Fava Portfolio Returns](https://github.com/andreasgerstmayr/fava-portfolio-returns)ï¼ï¼\n\n\n\n\nç¹å®èµäº§çååæ²çº¿ãåå¸å æ¯ãåè¡¨ï¼æä»¶ [Fava Dashboards](https://github.com/andreasgerstmayr/fava-dashboards) + èªå®ä¹ BQLï¼ï¼\n\n\n\n\næ´ç½çæ¯ï¼ç°å¨æäº vibe codingï¼æ¶ä»£åäºã\nç°å¨çè³ä¸éè¦å
å¦ä¼ BQL æä¹åââå¯ä»¥ç´æ¥è®© AI åã\n\næ¯å¦æä¼è¿æ ·æéæ±ï¼\n\n> å©ç¨ Fava Dashboards æä»¶ï¼å¨ dashboards.yaml ç¼å BQL å®ç°ä¸ä¸ªå±ç¤ºæææå å¯è´§å¸æä»éæ¶é´ååçæ²çº¿å¾ã\n\næ¾ç»è¦æè
¾å¥½ä¹
ç个æ§åè´¢å¡åæï¼ç°å¨å¯è½å°±æ¯ä¸å¥è¯ã\n\n---\n\n## ç»è¯\n\næç¨äº Beancount ä¸å¹´ï¼å ä¹å
¨é¨éæ±é½å¾å¥½å¾å°äºæ»¡è¶³ï¼é常满æï¼ä¹å¨å
¬å¸å
é¨åè¿å享ãè¿ç¯åå®¢å°±æ¯æå享å
容æ´çææåï¼å¸æè½æå®æ¨èç»æ´å¤äººã\n\næä¹æ¿è®¤ï¼Beancount ç鍿§å¯¹å¤§å¤æ°äººæ¥è¯´ä¸ä½ââ宿´åãåè´¦æ¬çç¼ç¨è¯è¨ãï¼è䏿¯ä¸ä¸ªç¹ç¹ç¹ç Appã\nä½æåæ ·ç¸ä¿¡ï¼éç AI åå±ï¼è¿äºé¨æ§ä¼è¶æ¥è¶ä½ãæªæ¥æ¯ä¸ªäººé½å¯ä»¥ç¨æ´ä½ææ¬é©¾é©è¿ç§å¼ºå¤§çå·¥å
·ï¼å®ç°å¯¹èªå·±è´¢å¡çå
¨é¢ææ§ã\n\nå¦æä½ ä¹æ£å¨ç»åï¼\n\n- å¤å¸ç§çæ´»\n- æèµåè¶æ¥è¶å¤\n- è´¦è¶è®°è¶ä¹±\n- åæè¶æ¥è¶å¤æ\n\né£æå»ºè®®ä½ è³å°è±å天æ¶é´è¯è¯ Beancountã\nå®å¯è½ä¼è®©ä½ ç¬¬ä¸æ¬¡è§å¾ï¼åæ¥æç»äºè½æé±è®²æ¸
æ¥äºã"},{"slug":"6-year-of-rsshub","title":"ä¸ä¸ªå
å²å¼æºé¡¹ç®çå´©æºä¸æ°ç","tags":[],"body":"ææä¸ä¸ªç»´æ¤äºå
å¹´ç弿ºé¡¹ç®ââ RSSHubï¼å®æ£å¨é¢ä¸´å´©æº\n\n## èæ¯\n\n表é¢ä¸ï¼å®ææ¥è¿ 30k Starsã900 å¤ Contributorsãæ¯æ 3 äº¿å¤æ¬¡è¯·æ±åæ°ä¸æ¸
çç¨æ·ãæ¯æå ååçèµå©ãææºæºä¸æç issue å prã代ç å 乿¯å¤©æ´æ°ï¼é常å¥åº·åå
满活åï¼ä½å¨ä¸å¯è§çå°æ¹ï¼æç»æ°å¹´é«æçç»´æ¤æ¶é´ææ¬ãæ¯æä¸åå¤åçæå¡å¨è´¹ç¨ãæ¯å¤©éå¤ç¹çä¸éæ¸ç§¯ç´¯çç»´æ¤å·¥ä½ï¼é½è®©å®å¨å´©æºçè¾¹ç¼å夿¨ªè·³\n\né¡¹ç®æ¯å
å¹´åå¼åçï¼ä¸å°å½æ¶ä»¥ Next Generation 为å£å·çæ¶é«¦ Node.js ææ¯æ åä¾èµåºå·²ç»æä¸ºæ¶ä»£ç¼æ³ªï¼ç°å¨çé叏鿧ï¼å¾å¤ç°å¨æµè¡çæ°ææ¯æ²¡æ³åºç¨ï¼æ¯å¦ JSXãTypeScriptãServerless çï¼å®çæ¶æä¹é常ä¸åçï¼æ¯ä¸ªè·¯ç±çä¿¡æ¯æ£è½å¨å¤ä¸ªå°æ¹ï¼å¼åæè
åæ´ä¸ä¸ªè·¯ç±éè¦å¤å¤ä¿®æ¹ï¼ä¸ä¸ªå°æ¹å»æ³¨åè·¯ç±ï¼ä¸ä¸ªå°æ¹å»ç¼åè·¯ç±èæ¬ï¼ä¸ä¸ªå°æ¹å»ç¼å Radar è§åï¼ä¸ä¸ªå°æ¹å»ç¼åææ¡£......è¿å¢å äºå¾å¤å·¥ä½éï¼ä¹å¾å®¹æåºéï¼ä¹åè·¯ç±å°çæ¶å并䏿¯ä¸ªé®é¢ï¼ä½ç°å¨å·²ç»åå¾é¾ä»¥å¿å\n\nå¨å¦æ¤ç³ç³çåºç¡æ¶æä¸è½ä¿æç°ç¶å·²ç»æ¯ç«å°½å
¨åï¼å¼åæ°åè½æ´æ¯æ æ¬ä¹æ¨ï¼åªä¼å¢å 以忴æ°çé¾åº¦ï¼æä»¥æææ¶åèå蹦åºçæ°å¥æ³æ³ä¹å¾é¾å®ç°\n\nè¦è§£å³è¿äºé®é¢ï¼å¯ä¸çåæ³æ¯ä½¿ç¨ç°ä»£åçæ¡æ¶åæ°è®¾è®¡çæ¶ææ¥éåå
æ ¸ï¼ä½éçè·¯ç±è¶æ¥è¶å¤ï¼æ¹é ææ¬ä¹è¶æ¥è¶é«ï¼æ¯ä¸ªåºç¡æ¹å¨å¯è½é½éè¦å¤è¾¾æ°æçå·¥ä½éï¼æä»¥è½ç¶é®é¢è¶æ¥è¶ä¸¥éï¼ä½ç§æ¿çå䏿¯ä¸è½ç¨çåå䏿åæ\n\nä½è¿åæ¯ä¸å¾ä¸åçäºæ
ï¼æä»¥ææ½ç©ºè±äºå 个æçæ¶é´éæ°è®¾è®¡åéåäºå®\n\n## ææ¯æ æ´æ°\n\n### koa -> Hono\n\nç¬¬ä¸æ¥ä¹æ¯æåºç¡åé¾åº¦æå¤§çæ¯æ¢æä¹å使ç¨ç Web æ¡æ¶ [koa](https://github.com/koajs/koa)ï¼ä½ä¸ºå
å¹´åæµè¡çä¸ä¸ä»£ Web æ¡æ¶ï¼ä½è
æ©å°±å¼åäºï¼è°ç ä¹åå³å®æ¢ç¨å¯¹ JSXãTypeScriptãServerless æ¯ææå¥½ç [Hono](https://github.com/honojs/hono)\n\nå®ä»¬ç API å·®å¼å¾å¤§ï¼éè¦éåææä¸é´ä»¶åæ¿æ¢ææè·¯ç±ä¸ä½¿ç¨ç koa API\n\nä¸»è¦æ¹å¨ï¼\nhttps://github.com/DIYgod/RSSHub/pull/14295\n\n\n\nHono ä½è
ä¹å¾å欢è¿ä¸ªæ¹é \n\nhttps://twitter.com/yusukebe/status/1762801106340782222\n\n### JavaScript -> TypeScript\n\næ¹ç¨ TypeScript å¯ä»¥é¿å
å¾å¤ç±»åé®é¢åä½çº§éè¯¯ï¼æéè¦çæ¯å¯ä»¥ä¿è¯æ°ç¾åè´¡ç®è
ä¿æä¸è´é¾ä»¥åºéååç»è´¡ç®çè·¯ç±ä»£ç è´¨éä¸è³äºå¤ªç³ç³\n\nä¸»è¦æ¹å¨ï¼\n\n- https://github.com/DIYgod/RSSHub/pull/14295\n- https://github.com/DIYgod/RSSHub/pull/14632\n\n\n\nhttps://twitter.com/DIYgod/status/1764360942035312879\n\n### CommonJS -> ESM\n\nESM æ¯å å¹´åä¸äº Node.js æ ¸å¿å¼åè
强æ¨çè§èï¼å®æä¸äºä¼ç¹ï¼ä½æå¤çæ¯ä¸ä¹å CommonJS ä¸å
¼å®¹å¸¦æ¥ççæå²è£ååè½ç®å带æ¥çè¯ç
\n\nç»è¿è¿å å¹´çåå±ï¼ç°å¨å¯ä»¥è¯´å¤§é¨ååºæ¯å强å¯ç¨äºï¼[tsx](https://github.com/privatenumber/tsx) ä¹ä¸º CommonJS å ESM æ··ç¨çåºæ¯æä¾äºæ¯æ\n\nè½ç¶å·²ç»å°½äºæå¤§åªåï¼ä½è¿æ¯æä¸äº CommonJS ä»£ç ææ¶é¾ä»¥è¿ç§»ï¼å¯¼è´ç°å¨åªè½ä½¿ç¨ tsx è¿è¡ï¼ä¸ä¸äº Serverless æ¯å¦ Vercel 没æ³å
¼å®¹ï¼ä½ä¹ææºä¼åç»æ
¢æ
¢è§£å³\n\nä¸»è¦æ¹å¨ï¼\n\n- https://github.com/DIYgod/RSSHub/pull/14619\n- https://github.com/DIYgod/RSSHub/pull/14691\n- https://github.com/DIYgod/RSSHub/pull/14632\n\n\n\n\n\n### art-template -> JSX\n\n[art-template](https://github.com/aui/art-template) æ¯ä¸ä¸ªæ¯æ koa çæ¨¡æ¿å¼æï¼è®°å¾å
å¹´åè¿æä¸ä¸ªæ´æµè¡ç模æ¿å¼æï¼ä½æ¯ä¸è®°å¾ååäºï¼éç¨ art-template æ¯å 为é£ä¸ªæ´æµè¡çæå½æ¶æ²¡çæï¼è¿ä¸ªå¾ç®å\n\nHono èªå¸¦äº JSX æ¯æï¼JSX å°±ä¸ç¨å¤ä»ç»äºï¼æ ¹æ£è红ç JavaScript çè¯æ³æ©å±ï¼çåäºç¨ React\n\nä¸»è¦æ¹å¨ï¼\n\n- https://github.com/DIYgod/RSSHub/commit/3bfdf9427cb8cf063cf7d231ec621278495f5a44\n- https://github.com/DIYgod/RSSHub/commit/94cf0742afa8bf18510ad9ded9b76dcd2ad52c90\n\n### Jest -> Vitest\n\nJest æ¯æ¾ç»æµè¡çæµè¯æ¡æ¶ï¼ä½æ¯å¨ ESM æ¶ä»£å°æ¥ä¹åå°±è¶æ¥è¶ä¸è¡äºï¼å¯¹ ESM çæ¯æä¸ç´æ¯å®ç°æ§ãexperimental supportãï¼ç°å¨æ´æµè¡çæ¯ Vitest äº\n\nä¸»è¦æ¹å¨ï¼\nhttps://github.com/DIYgod/RSSHub/commit/38e42156a0622a2cd09f328d2d60623813b8df28\n\n### Got -> ?\n\nç®å使ç¨ç [Got](https://github.com/sindresorhus/got) ä¹å·²ç»æ¯ä¸ç§¯æç»´æ¤çç¶æäºï¼ä¹æ²¡ææ¾å°å¥½çæ¿ä»£åï¼åç»ä¹è®¸ä¼æ¢æåç Fetch æè
èªå°è£
ç Fetchï¼è¿æ²¡æå¨æ\n\n## æ°è·¯ç±æ å\n\næèªå·±è½åè¿æ¯ä¸å¤çï¼å¨ä¸ç¤¾åºå¼åè
们讨论çè¿ç¨ä¸å¦ä¹ åæ¹è¿äºå¾å¤ï¼è¿ç¨å¾æææï¼https://github.com/DIYgod/RSSHub/issues/14685\n\nä¸»è¦æ¹å¨ï¼\nhttps://github.com/DIYgod/RSSHub/pull/14718\n\n\n\n### åå²\
318n\næ°æ å主è¦ä¸ºäºè§£å³è·¯ç±ä¿¡æ¯è¿äºåæ£çé®é¢ï¼è¿æ¬¡åºè¯¥ç®ç¬¬ä¸ç\n\n第ä¸çæ¥èª RSSHub å¼åé¶æ®µï¼å½æ¶æ²¡æé¢è§å°è·¯ç±æ°é伿è¿ä¹å¤ï¼æä»¥å 乿²¡ä»ä¹è§åï¼ææè·¯ç±å¨åä¸ä¸ªæä»¶ä¸æ³¨åï¼ç¶ååå»å¢å è·¯ç±èæ¬åææ¡£ï¼åæ¥è¿ä¸ªæä»¶è¶æ¥è¶å¤§ï¼å¾å®¹æå²çªï¼å¦å¤ææè·¯ç±èæ¬é½ä¼å¨å¯å¨é¶æ®µè¢«å è½½ï¼ç¨åºæ§è½è¶æ¥è¶å·®\n\n第äºçæ¥èª [NeverBehave](https://github.com/NeverBehave) ç»´æ¤çæ¶æï¼å¼å
¥äºå½å空é´ï¼åå²äº router.jsãradar.jsï¼åå½å空é´çè·¯ç±éä¸å¨äºä¸ä¸ªåæä»¶å¤¹ä¸åä¸ä¸ªæå¤ä¸ª Markdown ææ¡£ä¸ï¼è¿å®ç°äºæå è½½ï¼æå¤§æåäºå¯ç»´æ¤æ§åæ§è½ï¼ä½è¿æ¯ä¼åæ£å¨å¤ä¸ªæä»¶ä¸ï¼ä¸åæä»¶çä¿¡æ¯ä¹å®¹æåºç°ä¸ä¸è´å¯¼è´é误\n\n### ç°å¨\n\næ¬æ¬¡æè·¯ç±æä»¶å为äºä¸¤ç±»ï¼namespace.ts åä»»æååçè·¯ç±æä»¶\n\nnamespace.ts ä¼éè¿å¯¼åºå为 namespace ç对象æ¥å®ä¹å½å空é´çä¿¡æ¯\n\n```ts\nimport type { Namespace } from \"@/types\";\n\nexport const namespace: Namespace = {\n // ...\n};\n```\n\nnamespace å
å«çåæ®µéè¿ TypeScript éå¶ä¸º\n\n```ts\ninterface Namespace {\n name: string;\n url?: string;\n categories?: string[];\n description?: string;\n}\n```\n\nè¿äºä¿¡æ¯ä¼ç»è¿ç¼è¯åè¢«ææ¡£å RSSHub Radar å©ç¨\n\nè·¯ç±æä»¶ä¼éè¿å¯¼åºå为 route ç对象æ¥å®ä¹è·¯ç±çä¿¡æ¯\n\n```ts\nimport { Route } from \"@/types\";\n\nexport const route: Route = {\n // ...\n};\n```\n\nroute å
å«çåæ®µéè¿ TypeScript éå¶ä¸º\n\n```ts\ninterface Route {\n path: string | string[];\n name: string;\n url?: string;\n maintainers: string[];\n handler: (ctx: Context) => Promise<Data> | Data;\n example: string;\n parameters?: Record<string, string>;\n description?: string;\n categories?: string[];\n\n features: {\n requireConfig?: string[] | false;\n requirePuppeteer?: boolean;\n antiCrawler?: boolean;\n supportRadar?: boolean;\n supportBT?: boolean;\n supportPodcast?: boolean;\n supportScihub?: boolean;\n };\n radar?: {\n source: string[];\n target?: string;\n };\n}\n```\n\nä¹å route.js mantainer.js radar.js åææ¡£çä¿¡æ¯é½è¢«éä¸å¨è¿ä¸ä¸ªæä»¶ä¸ï¼åå°äºå¤å¤å®ä¹ä¹åå°äºåºéçå¯è½\n\n### å®ç°\n\nå®ç°é»è¾å°±æ¯å¼åç¯å¢éè¿éåæ´ä¸ª route æä»¶å¤¹ï¼æ¾å°ææ namespace.ts åè·¯ç±æä»¶ï¼è¯»åä¿¡æ¯ï¼å 载路ç±ï¼å¨çæç¯å¢ä½¿ç¨æåç¼è¯å¥½çè·¯å¾å表æ¥é¿å
éååä¸å¿
è¦çå è½½è¿ç¨ï¼ä»£ç å¨ï¼https://github.com/DIYgod/RSSHub/blob/master/lib/registry.ts\n\nææ¡£ä¹æ¯éè¿éå route æä»¶å¤¹ï¼æ¾å°ææéè¦çä¿¡æ¯ç¶ååæä¸ç³»åç Markdown æä»¶ï¼ä¸åéè¦æå¨ç»´æ¤ï¼ä»£ç å¨ï¼https://github.com/DIYgod/RSSHub/blob/master/scripts/workflow/build-routes.ts\n\nå½ç¶ä½¿ç¨ä¹åè·¯ç±æ åå¼åçè·¯ç±é½éè¦è¿ç§»å°æ°æ åè䏿¯ç´æ¥æ¾å¼æï¼å·²ç»éè¿èæ¬æ¹éæåæ´çä¿¡æ¯ååäºæ¿æ¢ï¼ä½ç¹å«æ¯ææ¡£æ¯è¾æ··ä¹±ä¹æå¾å¤éè¯¯ï¼æä»¥æåçä¿¡æ¯ä¹æå¾å¤é误ï¼åªè½å¨åç»éæ¸äººå·¥ä¿®æ¹äº\n\n## æªæ¥\n\néè¿è¿ä¸ç³»åæ¹è¿ï¼RSSHub ç»äºè½å¤ææåå²å
袱ï¼å®å¿å¼åæ°åè½äºï¼è¿éååºæç§¯ç´¯çä¸äºæ³æ³æç å¼çï¼\n\n- æ¢ç¶ RSSHub æ¯ä¸ä¸ªæ°æ®éåï¼ç¨éä¸ä¸å®åªæ RSSï¼JSON è¾åºåè½å¯ä»¥åä¸äºå¢å¼ºï¼ä½ä¸ºéç¨ç RESTful API æ¥ä½¿ç¨ï¼æ¯å¦å¯ä»¥æä¾è·åä¸ä¸é¡µæ¥å£æè
è¾åºç±»ä¼¼ Twitter å
³æ³¨æ°çé feed æ°æ®\n- ç¨æ·ç³»ç»åç¨æ·èªå®ä¹é
ç½®ï¼çæèªå·±çç§æè®¢é
å°å [#14706](https://github.com/DIYgod/RSSHub/issues/14706)\n- è·¯ç±é误éç¥åå¥åº·åº¦æ£æµ [#14712](https://github.com/DIYgod/RSSHub/issues/14712)\n- ä¸ RSS3 èç¹çèå¨åå å¯è´§å¸æ¶çå
±äº« https://twitter.com/rss3_/status/1731822029199094012\n- AI ç¿»è¯åæè¦\n- æ´è¯¦ç»çå®ä¾æ°æ®åæåå忍坼èªå¨æ¨èç Radar è§å\n- 䏿¬å°æµè§å¨æå®¢æ·ç«¯ç»å®ç RSSHub å®ä¾ï¼æå¸æçæ£è§£å³åç¬é¾é¢\n- ...\n\næåï¼å¼æºæ¯ä¸ä»¶å¾æè´µçäºæ
ï¼RSSHub è½æ´»å°ç°å¨ç¦»ä¸å¼è¿äºå¼åè
ç帮å©\n\n[](https://github.com/DIYgod/RSSHub/graphs/contributors)\n\n以åè¿äºèµå©ç好å¿äºº\n\n[](https://github.com/DIYgod/sponsors)\n\n妿 RSSHub æ£å¨å¸®å©ä
318½ ï¼ä¹å¸æä½ å¯ä»¥ç§¯æåä¸è¿æ¥ï¼ä¸ºä¿¡æ¯èªç±çæªæ¥è´¡ç®ä¸ä»½èªå·±çå¾®å°åé"},{"slug":"palworld","title":"åå¸é²çæ´»å¨ä¸èµ·ç两å¨","tags":[],"body":"## å®å¯æ¢¦å¹»æ³\n\n\n\nåªä¸ªå°ç·å©æ²¡å¹»æ³è¿çæ´»å¨è¿æ ·ä¸ä¸ªå
满å®å¯æ¢¦ä¼ä¼´çä¸çï¼å®ä»¬è½å¬æä¸æ¿æå¾å¬æä»¬è¯´è¯ï¼æçä¸åçç¹ç¹å强大çæè½ï¼èä¸é½å¾å¯ç±ï¼æä»¬å¯ä»¥è·å®ä»¬ç¡è§åé¥ãå¹¶è©ä½ææ¢ç´¢ä¸çï¼æ°¸è¿ä¸åå¤ç¬ï¼ä¸ç®¡æ¯è°é½å¯ä»¥æ¾å°æéåèªå·±çå®å¯æ¢¦\n\nè¿ä¸åæ©å°±å¯ä»¥åçï¼ä½è¿ä¸åç»ç©¶æ²¡æåçï¼å®å¯æ¢¦å¤æççæé®é¢å躺平å¨åå³ç°¿ä¸ççæå
¬å¸ Game Freak 让æä»¬çå¹»æ³ä¸ç´ä¹ä»
ä»
æ¯å¹»æ³\n\nå½ç¶ä¹æäººè¯´æè¿çå 个æ°ä½é¿å°å®æ¯ãæ±ç´«æ¯ä¹å好å¤äºï¼âè½ç¶å¥½å¤äºï¼ä½åªæ¯èå³ç¨èä¸ç¹ççå±ç½¢äºâï¼åç¾ãé¿å°å®æ¯ãæ±ç´«ãPokemon Sleep æ¸¸ææ¶é¿å¹¶ä¸ççå®å¯æ¢¦ç©å®¶ DIYgod 乿¤å¡«èºå°è¯´é\n\n## å¸é²å®ç°\n\n\n\nä½åªè¦å¹»æ³ä¸ç´åå¨ï¼åæç°å®ä¹åªæ¯æ¶é´é®é¢ï¼æ¨ªç©ºåºä¸çå¹»å
½å¸é²ç»ææå®å¯æ¢¦ç²ä¸å¸¦æ¥äºä¸ä¸ªä¸æ¬æ»¡è¶³çå¹³è¡å¹»æ³ä¸çï¼ç»äºè¦äºæ²¡æ Windows çæä¹ä¸é¨ä¹°äºä¸å° ROG Ally æ¥æ²è¿·å
¶ä¸\n\n游æä¸ä¸å¸é²çäºå¨æ¯åæ ä»
æçï¼è¡£é£ä½è¡æææ¢ç´¢çè¿ç¨é½ä¸å¸é²æ·±åº¦èå
¥ï¼ççæ¯åå¸é²çæ´»å¨ä¸èµ·\n\nä»åè½å°è¿å
¥åå§å°å°äºå¨å°±å¼å§äºï¼æä»¬ç第ä¸ä¸ªè½èç¹ä¸æ¯èªå·±é çï¼èæ¯è·æ£èç«ä¸èµ·é ç\n\n\n\n\n\nåå°åæ¥å¸é²å
åæä»¬çä¸ååå¤ï¼æä»¬çæ¯ä¸é¡¿å¤§é¤ï¼é½éè¦ç»åæç§ãæµæ°´ãæ¶å²ãæ¬è¿ãåå¨ãç¹é¥ªï¼åå«ç±æçä¸åç¹é¿ååå·¥çå¸é²æ¥å®æï¼ä¼å¶å·çä¼ä¸¸ä¸¸å»è¿è¡å°ç®±ï¼ä¼å·ç«ççç«é¹¿å»ç¹é¥ª\n\n\n\n\n\n卿们å¤åºæ¢ç´¢æ¶ï¼è¿æ²³éªæ»æ°´èï¼èµ¶è·¯éªäºæµ·é¹¿ï¼ç¿»å±±è¶å²éªç½æé¾\n\n\n\n\n\nå¨æä»¬æææ¶ï¼ä¸¾çç«ç»çå
å½ãå·ç«å¨ï¼éªçæ´çµçæ«å°æºå
³æªï¼çè³è½ç¶ä¸å¤ªäººéï¼å¯ä»¥æçµæ£é¼ å½ä½ææ¦´å¼¹æåºå»ï¼åæ¶æ®ç¹éçç°ç
å¨å¸®æä»¬ç¼é¢é æªï¼é¿åªæ¯æ¯å¨å¸®æä»¬ææåå¼¹\n\n\n\n\n\nä»å¾ææ¸æ å°æºå
³æªæ¨ªçèµ°ï¼
318仿 äººé®æ´¥å°äººæ»¡ä¸ºæ£ï¼å¨ä¸ç¥ä¸è§ç建é 䏿已ç»å¨å¸é²ä¸çä¸å¾æ³¨äºå¤ªå¤çææ
\n\nä»é¥¿çèåç第ä¸å¤©\n\n\n\nå°ç°å¨\n\n\n\n\n\n## ä¸äºé¢å¤çæ¢ç´¢\n\n### æ°æ®å±ç¤º\n\n\n\næ¯ç«æ¯åæºæ¸¸æï¼æ°æ®é½å¨æ¬å°ï¼å¯ä»¥å¾æ¹ä¾¿å°åå¤ç\n\næä¸ä¸ªå¼æºé¡¹ç®å¯ä»¥æåæ¡£æä»¶è§£ææ JSON æ¹ä¾¿ç¬¬ä¸æ¹å¼ååå±ç¤º https://github.com/cheahjs/palworld-save-tools\n\nè¿æä¸ä¸ªå¼æºé¡¹ç®å¯ä»¥æ JSON åçæä¸ä¸ªåç«¯é¡µé¢ https://github.com/zaigie/palworld-server-tool\n\näºæ¯ææåæ¡£åæ¥å° NAS ä¸ï¼åå¨ NAS ä¸é¨ç½²ä¸ä¸ªå±ç¤ºé¡µé¢ï¼å°±å¯ä»¥å¾æ¹ä¾¿å°æ¥çæçå¸é²ä»¬äº https://pal.diygod.me\n\n### 模ç»\n\nå¸é²æå¾ä¸°å¯çç¤¾åºæ¨¡ç»ï¼æ¯å¦æç®ç®é¸¡åæå¤æè
æå¸é²åæå®å¯æ¢¦ä»ä¹çï¼è¿æä¸äºå¯ä»¥å¨ä¸å½±å游æå¹³è¡¡çåæä¸æå¤§æå游æä½éª\n\næç¨çä¸»è¦æ¥èªä¸ä¸ªæ¨¡ç»ç¤¾åº [Nexus Mods](https://www.nexusmods.com/palworld)ï¼ä»ä»¬æä¸ä¸ªå¾æ¹ä¾¿ç模ç»å®è£
å管çå·¥å
· [Vortex Mod Manager](https://www.nexusmods.com/about/vortex/)ï¼ä»¥ä¸æ¯ææ£å¨ä½¿ç¨ç模ç»\n\n- [Basic MiniMap](https://www.nexusmods.com/palworld/mods/146)ï¼å¢å ä¸ä¸ªä¸ç¥é为ä»ä¹å®æ¹æ²¡åçæè§å¾åºç¡çå°å°å¾åè½ï¼ä½æ¯è®°å¾å°è®¾ç½®éææè½¬å
³æ\n\n- [Better Night Light](https://www.nexusmods.com/palworld/mods/550)ï¼æä¸å¤ªç¼çäºï¼å¥é½çä¸è§ï¼åå¾äºå¤ç²ç䏿 ·ï¼ç¨è¿ä¸ªæ¨¡ç»å¯ä»¥å亮ä¸äºï¼è¿æ¹äºä¸ä¸ªç»ç¾çæç©º\n\n \n\n- [Golden Statue of Power](https://www.nexusmods.com/palworld/mods/507)ï¼æåéç³ååå¾éç¿ç¿çæ´æè´¨æ\n\n \n\n- [Play as Zoe](https://www.nexusmods.com/palworld/mods/53) å [Hide All Human Hair All female Head All HeadEquip](https://www.nexusmods.com/palworld/mods/353)ï¼éèæåæçè£
æ®ï¼èªå·±åæèå©ä½ä¼\n\n- [Paimon Replace DaeDream](https://www.nexusmods.com/palworld/mods/312)ï¼æå¯éåææ´¾è\n\n \n\n- [Pal Analyzer](https://www.nexusmods.com/palworld/mods/336)ï¼ææåå°±å¯ä»¥çå°å¸é²ç屿§åç¹è´¨ï¼ææºéè¦å°è®¾ç½®éæ¹ä¸æ¾ç¤ºä¸º always on\n\n \n\n- [Stuck Pal Rescuer](https://www.nexusmods.com/palworld/mods/585)ï¼æå½æ¨¡ç»ï¼æ®ç¹éçå¸é²ç»å¸¸è¢« bug å¡ä½ç¶å饿æ»ï¼è¿ä¸ªæ¨¡ç»å¯ä»¥èªå¨æ£æµå¸é²æ¯å¦å¡ä½å¹¶éç½®\n- [FSR3 æ¯æ](https://afdian.net/album/47414d3eb9a111eeb82252540025c377)ï¼å®æ¹ä¸æ¯æ A å¡ç帧çæï¼ç¨ä¸è¿ä¸ª Roy Ally å¯ä»¥å¨ä¸çç»è´¨ä» 40 å¤å¸§æåå° 70 å¤å¸§"},{"slug":"twitter-ddos","title":"Twitter 坹弿ºé¡¹ç®åèµ· DDoS æ»å»","tags":[],"body":"## èæ¯\n\nTwitter 被马æ¯å
æ¶è´åï¼ä»å»å¹´ 8 æå¼å§ï¼ä»ä»¬å¯¹å¼æºç¬¬ä¸æ¹éæåç¬¬ä¸æ¹å®¢æ·ç«¯è¿è¡äºä¸ç³»åæé[æé](https://github.com/zedeus/nitter/issues/1150)çæååæ»å»ï¼è¿æ ·åæ¯ä¸ºäºé»æ¢ç¨æ·éè¿é宿¹å®¢æ·ç«¯è®¿é®åä½¿ç¨ Twitterï¼æ¥å¢å å
¬å¸ç广ååä¼åè¥æ¶\n\nè弿ºç¤¾åºä¸ä»¥ Nitter å RSSHub 为代表ç弿ºé¡¹ç®å¹¶æ²¡ææ¾å¼åä¿¡æ¯èªç±çåªåï¼éè¿ä¼å¤èªæç弿ºå¼åè
们æ³åºæ¥çä¸ä¸ªä¸ªå¥å¦æä½ï¼[issue](https://github.com/zedeus/nitter/issues/983)ï¼ï¼å¨ä¸è½®è½®å°éååå°éç对æä¸çæå äºä¸é£ï¼å
¶ä¸ææµè¡çåæ³æ¯éè¿ Android 客æ·ç«¯ä½¿ç¨çæ¥å£åè½çæä¸´æ¶è´¦å·ï¼[ç»è](https://diygod.cc/10k-twitter-accounts)ï¼\n\n## ç»è¿\n\nå¨ä¸¤å¤©åï¼1æ26æ¥ï¼ï¼è®¸å¤ Nitter å®ä¾çè¿è¡è
åå¼åè
æ¥åç§°ï¼ä»ä»¬æ£å¨ä½¿ç¨çæ¥å£å·²è¢«å°éã䏿¤**åæ¶**ï¼ä»ä»¬çå®ä¾ä¹å¼å§é忥夿§ DDoS æ»å»\n\n\n\n\n\nèµ·åï¼æå¹¶æ²¡æå¤ªå¨æè¿ä»¶äºæ
ãæ¯ç«ï¼è°ä¼ç¸ä¿¡ Twitter 宿¹ä¼ååºå¦æ¤ä»¤äººä¸è»ä¸èªé身段ç DDoS è¡ä¸ºå¢ï¼æå¯¹æ¤æ·±ææç\n\nç¶èï¼æ¨å¤©å½ææå¼ RSSHub ç GitHub ä»åºæ¶ï¼å´æå¤å°åç°äºä»¥ä¸å
容\n\n\n\næè¿ä¸ä¸ªæçè¯·æ±æ°è¾¾å°äº 4.5 äº¿ï¼æ¯æ£å¸¸æ°´å¹³é«åº 50%ï¼æ£å¸¸æ°´å¹³ä»
为 3 亿å¤ï¼\n\nç¶åç»å½ Cloudflare æ¥çæ¥å¿\n\n\n\nèªä» 26 æ¥ 0 ç¹ï¼å½å¤©å®æ¹æ¥å£è¢«å°éå Nitter éå DDoS æ»å»ï¼ä»¥æ¥ï¼RSSHubä¹ä¸ç´éåå¤§è§æ¨¡ç DDoS æ»å»ãæè¿ä¸¤å¤©ï¼è¯·æ±éæ¯å¹³æ¶ç 170 å¤åï¼æ¯ç§çº¦ 1 忬¡è¯·æ±\n\n尽管æ°éçèµ·æ¥å¯æï¼ä½ Cloudflare åºè²çç¼ååè½å·²ç»æåç¼åäºè¶
è¿ 99% ç DDoS 请æ±ï¼çè³æ²¡æè§¦åæ¥è¦\n\n\n\nRSSHub çè´è½½åè¡¡åèªå¨æ©å®¹åè½é常å®åï¼æ²¡æåå°å¤ªå¤§çåå\n\nhttps://twitter.com/DIYgod/status/1745090590419619865\n\nð¤£ å°±è¿æ ·ä¸ç´æ²¡æåç°\n\nè¿ä¸æ¥åæåç°ï¼ææè¯·æ±é½æ¥èª IP å°å为 139.255.221.98 ç设å¤ãè¿äºè¯·æ±é½æ¯é对 `/twitter/keyword` è·¯ç±ï¼å¹¶ä¸åé¢è·çä¸ä¸²ä¸å䏿 æä¹çåæ°\n\n\n\næå¾æ¸
æ¥ä¸ºä»ä¹åªé对 keyword è·¯ç±ï¼å°½ç®¡ä»£ç 䏿²¡ææç¡®è¡¨è¾¾ï¼ä½æ ¹æ®æç使ç¨ç»éªï¼æ¤è·¯ç±ä½¿ç¨çæç´¢æ¥å£åå°æä¸¥æ ¼ç访é®é¢çéå¶ï¼éè¿æ»å»è¯¥è·¯ç±å¯ä»¥å®ç°æå¤§åææãç±æ¤å¯ä»¥æ¨æåº DDoS æ»å»è
ä¹å¯¹ Twitter çæ¥å£é常çæ\n\nè½ç¶æ æ³ç´æ¥è¯ææ¯å®æ¹äººåæä¸ºï¼ä½åç§æ æ³è§£éçâå·§åâå·²ç»æ¸
æ¥å°è¡¨æäºäºæ
ççç¸ï¼é©¬æ¯å
çç®åç²æ´è¡äºé£æ ¼ä¹æ£å¨æ·±å»å½±åè¿å®¶å
¬å¸\n\n## å½±å\n\nè¿ä¸æ¥å°é API åè¿è¡ DDoS æ»å»è¿ä¸¤ä¸ªæä½å¯ä»¥è¯´é常ææ\n\nNitter å¼åè
zedeus 表示 Nitter å·²æ»\n\n\n\nTwitter Monitor å¼åè
MANKA è¡¨ç¤ºä¸æ¿æå浪费æ¶é´\n\nhttps://twitter.com/manka_takami/status/1751450519829418342\n\nnitter-status å¼åè
æ´æ
318¯ç´æ¥æ¾åºäºåå«é¡µé¢\n\n\n\nçèµ·æ¥å°±å°æ¤ä¸ºæ¢äºåï¼ä¸ï¼è¿è¿éç»ç¹ãèªç±æ æ³è¢«é»æ¡ï¼æä»¬è¿æå¾å¤äºæ
å¯ä»¥å\n\n\n\n29æ¥ æ´æ°ï¼RSSHub å·²ç»æ¢å¤\n\nhttps://twitter.com/DIYgod/status/1751941869616148806"},{"slug":"unified-markdown","title":"å¦ä½ä¼é
ç¼è¯ä¸ä¸ª Markdown ææ¡£","tags":[],"body":"Markdown æ¯ä¸ç§å¹¿æ³ä½¿ç¨çè½»é级æ è®°è¯è¨ï¼å
è®¸äººä»¬ä½¿ç¨æè¯»æåççº¯ææ¬æ ¼å¼ç¼åææ¡£ï¼ä¹æ¯ [xLog](https://xlog.app) 主è¦ä½¿ç¨çæç« æ ¼å¼ï¼æ¬æå°±ä»¥ [xLog Flavored Markdown](https://github.com/Crossbell-Box/xLog/blob/dev/src/markdown/index.ts) ä¸ºä¾æ¥è¯´æå¦ä½ä¼é
å°è§£æä¸ä¸ª Markdown ææ¡£\n\n### æ¶æ\n\nè§£æè¿ç¨å¯ä»¥ç¨è¿æ ·ä¸ä¸ªæ¶ææ¥è¡¨ç¤ºï¼\n\n```mermaid\nflowchart TB\n subgraph input\n Markdown\n end\n subgraph unified\n subgraph remark\n Markdown:::inputClass --string--> remark-parse:::remarkClass --mdast--> remarkPlugins[remark plugins]:::remarkClass\n remarkPlugins --mdast--> remark-rehype:::remarkClass & mdast-util-toc:::remarkClass\n end\n subgraph rehype\n remark-rehype --hast--> rehypePlugins[rehype plugins]:::rehypeClass\n rehypePlugins --hast--> hast-util-to-text:::rehypeClass & hast-util-to-html:::rehypeClass & hast-util-to-jsx-runtime:::rehypeClass\n end\n rehypePlugins --hast--> unist-util-visit:::rehypeClass\n end\n subgraph output\n mdast-util-toc --tocResult--> TOC:::inputClass\n hast-util-to-text --string--> plainText[Plain Text]:::inputClass\n hast-util-to-html --string--> HTML:::inputClass\n hast-util-to-jsx-runtime --JSX.Element--> ReactElement[React Element]:::inputClass\n unist-util-visit --custom--> Metadata:::inputClass\n end\nstyle input fill:#bbf7d0,stroke:#4ade80,color:#15803d\nclassDef inputClass fill:#22c55e,stroke:#16a34a\nstyle output fill:#bbf7d0,stroke:#4ade80,color:#15803d\nstyle unified fill:#bfdbfe,stroke:#60a5fa,color:#1d4ed8\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\nstyle rehype fill:#fef08a,stroke:##facc15,color:#a16207\nclassDef rehypeClass fill:#facc15,stroke:#ca8a04\n```\n\nå
³é®æ¦å¿µï¼\n\n- [unified](https://github.com/unifiedjs)ï¼éè¿è¯æ³æ åæä»¶æ¥è§£æãæ£æ¥ã转æ¢ååºååå
容çåº\n- [remark](https://github.com/remarkjs)ï¼unified ççæé¡¹ç®ä¹ä¸ï¼ç±æä»¶é©±å¨ç Markdown å¤çåº\n- [rehype](https://github.com/rehypejs)ï¼unified ççæé¡¹ç®ä¹ä¸ï¼ç±æä»¶é©±å¨ç HTML å¤çåº\n- [mdast](https://github.com/syntax-tree/mdast)ï¼remark 使ç¨çç¨äºè¡¨ç¤º Markdown çæ½è±¡è¯æ³æ è§è\n- [hast](https://github.com/syntax-tree/hast)ï¼rehype 使ç¨çç¨äºè¡¨ç¤º HTML çæ½è±¡è¯æ³æ è§è\n\nç®åæ¥è¯´å°±æ¯æ Markdown ææ¡£äº¤ç»ä¸ä¸ª unified çæçè§£æå¨è§£ææ unified å¯è¯å«çè¯æ³æ ï¼åéè¿ä¸ç³»å unified çæçæä»¶è½¬æ¢ä¸ºéè¦çå
容ï¼åéè¿ä¸ç³»å unified çæçå·¥å
·åºè¾åºä¸ºéè¦çæ ¼å¼ï¼ä¸é¢å°±ä» è§£æã转æ¢ãè¾åº è¿ä¸ä¸ªæ¥éª¤æ¥åå«è¯´æ\n\n### è§£æ Parse\n\n```mermaid\nflowchart TB\n subgraph input\n Markdown\n end\n subgraph unified\n subgraph remark\n Markdown:::inputClass --string--> remark-parse:::remarkClass\n end\n end\nstyle input fill:#bbf7d0,stroke:#4ade80,color:#15803d\nclassDef inputClass fill:#22c55e,stroke:#16a34a\nstyle unified fill:#bfdbfe,stroke:#60a5fa,color:#1d4ed8\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\n```\n\n> æ 论è¾å
¥æ¯ MarkdownãHTML è¿æ¯çº¯ææ¬ï¼é½éè¦å°å
¶è§£æä¸ºå¯æä½çæ ¼å¼ãè¿ç§æ ¼å¼è¢«ç§°ä¸ºè¯æ³æ ãè§èï¼ä¾å¦mdastï¼å®ä¹äºè¿æ ·ä¸ä¸ªè¯æ³æ çå¤è§ãå¤çå¨ï¼å¦mdastçremarkï¼è´è´£å建å®ä»¬ã\n\næç®åç䏿¥ï¼æä»¬éè¦è§£æçæ¯ Markdownï¼æä»¥è¿éå°±åºè¯¥ä½¿ç¨ [remark-parse](https://github.com/remarkjs/remark/tree/main/packages/remark-parse) æ¥æ Markdown ææ¡£ç¼è¯æ mdast æ ¼å¼çè¯æ³æ \n\nå¯¹åº [xLog Flavored Markdown](https://github.com/Crossbell-Box/xLog/blob/dev/src/markdown/index.ts) ä¸ç\n\n```ts\nconst processor = unified().use(remarkParse);\n\nconst file = new VFile(content);\nconst mdastTree = processor.parse(file);\n```\n\n### è½¬æ¢ Transform\n\n```mermaid\nflowchart TB\n subgraph remark\n remark-parse:::remarkClass --mdast--> remarkPlugins[remark plugins]:::remarkClass\n remarkPlugins --mdast--> remark-rehype:::remarkClass\n end\n subgraph rehype\n remark-rehype --hast--> rehypePlugins[rehype plugins]:::rehypeClass\n end\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\nstyle rehype fill:#fef08a,stroke:##facc15,color:#a16207\nclassDef rehypeClass fill:#facc15,stroke:#ca8a04\n```\n\n> è¿å°±æ¯éæ³åççå°æ¹ãç¨æ·ç»åæä»¶ä»¥åå®ä»¬è¿è¡ç顺åºãæä»¶å¨æ¤é¶æ®µæå
¥å¹¶è½¬æ¢åæ£æ¥å®ä»¬è·å¾çæ ¼å¼ã\n\nè¿ä¸æ¥æä¸ºå
³é®ï¼ä¸ä»
å
å«äºä» Markdown å° HTML ç转æ¢ï¼è¿å
嫿们æ³å¨ç¼è¯è¿ç¨ä¸å¤¹å¸¦çç§è´§ï¼æ¯å¦å¢å ä¸äºéæ åçè¯æ³ç³ãæ¸
ç HTML 鲿¢ XSSãå¢å è¯æ³é«äº®ãåµå
¥èªå®ä¹ç»ä»¶ç\n\nunified çæä»¶é常å¤ï¼æ´æ°ä¹æ¯è¾åæ¶ï¼åºæ¬éæ±å ä¹é½è½æ»¡è¶³ï¼å¯¹äºä¸è½æ»¡è¶³çç¹å®éæ±ï¼èªå·±ç¼å转æ¢èæ¬ä¹
318å¾å®¹æå®ç°\n\né颿ä¸ä¸ªç¹æ®çæä»¶æ¯ remark-rehypeï¼å®ä¼æ mdast è¯æ³æ 转为 hast è¯æ³æ ï¼æä»¥å¨å®ä¹åå¿
须使ç¨å¤ç Markdown ç remark æä»¶ï¼å¨å®ä¹åå¿
须使ç¨å¤ç HTML ç rehype æä»¶\n\n[xLog Flavored Markdown](https://github.com/Crossbell-Box/xLog/blob/dev/src/markdown/index.ts) ä¸å°±å å
¥äºé常å¤çè½¬æ¢æä»¶\n\n```ts\nconst processor = unified()\n .use(remarkParse)\n .use(remarkGithubAlerts)\n .use(remarkBreaks)\n .use(remarkFrontmatter, [\"yaml\"])\n .use(remarkGfm, {\n singleTilde: false,\n })\n .use(remarkDirective)\n .use(remarkDirectiveRehype)\n .use(remarkCalloutDirectives)\n .use(remarkYoutube)\n .use(remarkMath, {\n singleDollarTextMath: false,\n })\n .use(remarkPangu)\n .use(emoji)\n .use(remarkRehype, { allowDangerousHtml: true })\n .use(rehypeRaw)\n .use(rehypeIpfs)\n .use(rehypeSlug)\n .use(rehypeAutolinkHeadings, {\n behavior: \"append\",\n properties: {\n className: \"xlog-anchor\",\n ariaHidden: true,\n tabIndex: -1,\n },\n content(node) {\n return [\n {\n type: \"text\",\n value: \"#\",\n },\n ];\n },\n })\n .use(rehypeSanitize, strictMode ? undefined : sanitizeScheme)\n .use(rehypeTable)\n .use(rehypeExternalLink)\n .use(rehypeMermaid)\n .use(rehypeWrapCode)\n .use(rehypeInferDescriptionMeta)\n .use(rehypeEmbed, {\n transformers,\n })\n .use(rehypeRemoveH1)\n .use(rehypePrism, {\n ignoreMissing: true,\n showLineNumbers: true,\n })\n .use(rehypeKatex, {\n strict: false,\n })\n .use(rehypeMention);\n\nconst hastTree = pipeline.runSync(mdastTree, file);\n```\n\nä¸é¢ä»ç»é¨åç¨å°çæä»¶\n\n- [remarkGithubAlerts](https://github.com/hyoban/remark-github-alerts)ï¼å¢å GitHub 飿 ¼ç Alerts è¯æ³ï¼[æ¼ç¤º](https://xlog.xlog.app/xfm#alerts)\n- [remarkBreaks](https://github.com/remarkjs/remark-breaks)ï¼ä¸åéè¦ç©ºä¸è¡æè½è¢«è¯å«ä¸ºæ°çèªç¶æ®µ\n- [remarkFrontmatter](https://github.com/remarkjs/remark-frontmatter)ï¼æ¯æåç½®å
容ï¼YAMLãTOML çï¼\n- [remarkGfm](https://github.com/remarkjs/remark-gfm)ï¼æ¯æéæ åç GitHub å¨åç Markdown è¯æ³ä¸æ©å±çä¸ç³»å[è¯æ³](https://github.github.com/gfm/)ï¼ä½å
¶å®è¿ç³»åè¯æ³å·²ç»è¢«é常广æ³ä½¿ç¨ï¼æä¸ºäºäºå®æä¹ä¸çæ åï¼\n- [remarkDirective](https://github.com/remarkjs/remark-directive?tab=readme-ov-file) [remarkDirectiveRehyp](https://github.com/IGassmann/remark-directive-rehype)ï¼æ¯æéæ åç Markdown [éç¨æä»¤ææ¡ ](https://talk.commonmark.org/t/generic-directives-plugins-syntax/444)\n- [remarkMath rehypeKatex](https://github.com/remarkjs/remark-math)ï¼æ¯æå¤æçæ°å¦å
¬å¼ï¼[æ¼ç¤º](https://xlog.xlog.app/xfm#supp
318orts-mathematical-expressions)\n- [rehypeRaw](https://github.com/rehypejs/rehype-raw)ï¼æ¯æ Markdown ä¸å¤¹æçèªå®ä¹ HTML\n- rehypeIpfsï¼èªå®ä¹æä»¶ï¼ä¸ºå¾çãé³é¢ãè§é¢æ¯æ `ipfs://` åè®®çå°å\n- [rehypeSlug](https://github.com/rehypejs/rehype-slug)ï¼ä¸ºæ 颿·»å id\n- [rehypeAutolinkHeadings](https://github.com/rehypejs/rehype-autolink-headings)ï¼ä¸ºæ 颿·»å æåèªèº«ç龿¥rel = \"noopener noreferrer\"\n- [rehypeSanitize](https://github.com/rehypejs/rehype-sanitize)ï¼æ¸
çHTMLï¼ç¨äºç¡®ä¿ HTML å®å
¨é¿å
XSS æ»å»\n- rehypeExternalLinkï¼èªå®ä¹æä»¶ï¼ç»å¤é¨é¾æ¥æ·»å `target=\"_blank\"` å `rel=\"noopener noreferrer\"`\n- rehypeMermaidï¼èªå®ä¹æä»¶ï¼æ¸²æç»å¾åå¶è¡¨å·¥å
· [Mermaid](https://mermaid.js.org/)ï¼æ¬æçæ¶æå¾å°±æ¯éè¿ Mermaid 渲æç\n- [rehypeInferDescriptionMeta](https://github.com/rehypejs/rehype-infer-description-meta)ï¼ç¨äºèªå¨çæææ¡£çæè¿°\n- rehypeEmbedï¼èªå®ä¹æä»¶ï¼ç¨äºæ ¹æ®é¾æ¥èªå¨åµå
¥ YouTubeãTwitterãGitHub çå¡ç\n- rehypeRemoveH1ï¼èªå®ä¹æä»¶ï¼ç¨äºæ h1 转为 h2\n- [rehypePrism](https://github.com/timlrx/rehype-prism-plus)ï¼æ¯æè¯æ³é«äº®\n- rehypeMentionï¼èªå®ä¹æä»¶ï¼æ¯æ @DIYgod è¿æ ·è¾ç¹å
¶ä» xLog ç¨æ·\n\n### è¾åº Stringify\n\n```mermaid\nflowchart TB\n subgraph unified\n subgraph remark\n remarkPlugins[remark plugins]:::remarkClass --mdast--> mdast-util-toc:::remarkClass\n end\n subgraph rehype\n rehypePlugins[rehype plugins]:::rehypeClass\n rehypePlugins --hast--> hast-util-to-text:::rehypeClass & hast-util-to-html:::rehypeClass & hast-util-to-jsx-runtime:::rehypeClass\n end\n rehypePlugins --hast--> unist-util-visit:::rehypeClass\n end\n subgraph output\n mdast-util-toc --tocResult--> TOC:::inputClass\n hast-util-to-text --string--> plainText[Plain Text]:::inputClass\n hast-util-to-html --string--> HTML:::inputClass\n hast-util-to-jsx-runtime --JSX.Element--> ReactElement[React Element]:::inputClass\n unist-util-visit --custom--> Metadata:::inputClass\n end\nclassDef inputClass fill:#22c55e,stroke:#16a34a\nstyle output fill:#bbf7d0,stroke:#4ade80,color:#15803d\nstyle unified fill:#bfdbfe,stroke:#60a5fa,color:#1d4ed8\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\nstyle rehype fill:#fef08a,stroke:##facc15,color:#a16207\nclassDef rehypeClass fill:#facc15,stroke:#ca8a04\n```\n\n> æå䏿¥æ¯å°ï¼è°æ´åçï¼æ ¼å¼è½¬æ¢ä¸ºMarkdownãHTMLæçº¯ææ¬ï¼å¯è½ä¸è¾å
¥æ ¼å¼ä¸åï¼ï¼\n\nunified çå·¥å
·åºä¹å¾å¤ï¼å¯ä»¥è¾åºåç§æä»¬éè¦çæ ¼å¼\n\næ¯å¦ xLog éè¦å¨æç« å³ä¾§å±ç¤ºèªå¨çæçç®å½ãéè¦è¾åºçº¯ææ¬æ¥è®¡ç®é¢ä¼°é
读æ¶é´åçæ AI æè¦ãéè¦çæ HTML æ¥ç» RSS 使ç¨ãéè¦çæ React Element æ¥æ¸²æå°é¡µé¢ãéè¦æåæç« çå¾çåæè¿°æ¥å±ç¤ºæç« å¡çï¼å°±åå«ä½¿ç¨äº mdast-util-tocãhast-util-to-textãhast-util-to-htmlãhast-util-to-jsx-runtimeãunist-util-visit è¿äºå·¥å
·\n\nå¯¹åº [xLog Flavored Markdown](https://github.com/Crossbell-Box/xLog/blob/dev/src/markdown/index.ts) ä¸ç\n\n```ts\n{\n toToc: () =>\n mdastTree &&\n toc(mdastTree, {\n tight: true,\n ordered: true,\n }),\n toHTML: () => hastTree && toHtml(hastTree),\n toElement: () =>\n hastTree &&\n toJsxRuntime(hastTree, {\n Fragment,\n components: {\n // @ts-expect-error\n img: AdvancedImage,\n mention: Mention,\n mermaid: Mermaid,\n // @ts-expect-error\n audio: APlayer,\n // @ts-expect-error\n video: DPlayer,\n tweet: Tweet,\n \"github-repo\": GithubRepo,\n \"xlog-post\": XLogPost,\n // @ts-expect-error\n style: Style,\n },\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passNode: true,\n }),\n toMetadata: () => {\n let metadata = {\n frontMatter: undefined,\n images: [],\n audio: undefined,\n excerpt: undefined,\n } as {\n frontMatter?: Record<string, any>\n images: string[]\n audio?: string\n excerpt?: string\n }\n\n metadata.excerpt = file.data.meta?.description || undefined\n\n if (mdastTree) {\n visit(mdastTree, (node, index, parent) => {\n if (node.type === \"yaml\") {\n metadata.frontMatter = jsYaml.load(node.value) as Record<\n str
318ing,\n any\n >\n }\n })\n }\n if (hastTree) {\n visit(hastTree, (node, index, parent) => {\n if (node.type === \"element\") {\n if (\n node.tagName === \"img\" &&\n typeof node.properties.src === \"string\"\n ) {\n metadata.images.push(node.properties.src)\n }\n if (node.tagName === \"audio\") {\n if (typeof node.properties.cover === \"string\") {\n metadata.images.push(node.properties.cover)\n }\n if (!metadata.audio && typeof node.properties.src === \"string\") {\n metadata.audio = node.properties.src\n }\n }\n }\n })\n }\n\n return metadata\n },\n}\n```\n\nè¿æ ·æä»¬å°±ä¼é
å°ä»åå§ Markdown ææ¡£å¼å§ï¼è·å¾äºæä»¬éè¦çåç§æ ¼å¼çè¾åº\n\n餿¤ä¹å¤ï¼æä»¬è¿è½å©ç¨è§£æåºç unified è¯æ³æ æ¥ç¼åä¸ä¸ªå¯ä»¥å·¦å³åæ¥æ»å¨å宿¶é¢è§ç Markdown ç¼è¾å¨ï¼å¯ä»¥åè xLog çåæ Markdown ç¼è¾å¨ï¼[代ç ](https://github.com/Crossbell-Box/xLog/blob/dev/src/components/dashboard/DualColumnEditor.tsx)ï¼ï¼ææºä¼æä»¬ä¸æ¬¡åè"},{"slug":"2023","title":"2023 å¹³ç¨³è¿æ¸¡","tags":["å¹´ç»æ»ç»"],"body":"import { Tweet } from \"astro-embed\";\n\n```\n</2023>\n<2024>\n```\n\nåå°è§å¾ä»å¹´ç»åäºå·¨å¤§çååï¼ä»èæ ¼å
°æ¬å°æ°å å¡ï¼ä»æªå©å°å·²å©ï¼ä»ä¸å®¶ä¸¤å£åæäºä¸å®¶ä¸å£ï¼ä½æè§å¾é½å¨é¢æä¹ä¸ï¼æä»¥æè§è¿ç®å¾å¹³ç¨³\n\n身边çç©åæè½åæ ä¸ä¸ªäººçç¶æï¼æä»¥è¿æ¯è· 2022 䏿 ·ä»å¹´åº¦æä½³å¼å§\n\n## ð 年度æä½³\n\n### ð¿ å½±è§\n\nçè¿ç 28 é¨å¨æ¼«å 12 é¨å§éå 8 é¨çµå½±ï¼https://movie.douban.com/people/62759792/collect?mode=list\n\nèå»å¹´æ¯ 19 é¨å¨æ¼«å 18 é¨å§éå 6 é¨çµå½±ï¼äºæ¬¡å
å«éæ¾èä¸åäº\n\n**DIY 年度çªå§ï¼ [ã鬼çä¹å é»åæç¯ã](https://movie.douban.com/subject/35769236/)**\n\n\n\n
318<script\n async\n src=\"https://platform.twitter.com/widgets.js\"\n charset=\"utf-8\"\n><\/script>\n\n<div class=\"flex gap-2\">\n <Tweet id=\"https://twitter.com/DIYgod/status/1645271426318979074\" />\n <Tweet id=\"https://twitter.com/DIYgod/status/1650844643997646852\" />\n</div>\n<div class=\"flex gap-2\">\n <Tweet id=\"https://twitter.com/DIYgod/status/1653023791759458307\" />\n <Tweet id=\"https://twitter.com/DIYgod/status/1655603106464387079\" />\n</div>\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1670792856720535554\" />\n\nå°½ç®¡ææ°éèå¥è¿ç¼ï¼ç¶è该å§ççç¹ççï¼æ³ªç¹äº¦å¬äººæ³ªç®ï¼å°¤ä»¥æåä»¥ä¸ºä¼æ¯è人çå§æ
å´å丽é转为çèç»å±ï¼ä»¤äººå¿æ½®æ¾æ¹ï¼é¾ä»¥èªæ\n\nå»å¹´æä½³æ¯ã鬼çä¹å 游éç¯ãï¼ä»å¹´æ¯ã鬼çä¹å é»åæç¯ãï¼å·²ç»å¯ä»¥é¢æå°äºæå¹´æ¯ã鬼çä¹å æ±è®ç»ç¯ãï¼å¸æå¯ä»¥ä¿æä¸å»\n\n餿¤ä¹å¤è¿æã天å½å¤§éå¢ãããé´è°è¿å®¶å®¶ããããææ¨çå©åããï¼ç¬¬ä¸éï¼ãã为ç¾å¥½çä¸çç®ä¸çç°ï¼ãä¹é叏忬¢\n\n**DIY 年度å§éï¼ [ãæåçè¿è
第ä¸å£ã](https://movie.douban.com/subject/25848328/)**\n\n\n\né常è¿å游æï¼åèäºæ¸¸æï¼ä¸»è§ä¹é常å¥åè§è²ï¼å®ç¾çä¸å£ï¼HBO 太强äº\n\n### ð å¾ä¹¦\n\n\n\nä»å¹´çè¿ç 22 æ¬ä¹¦ï¼\n\n- ã被讨åçåæ°ã\n- ãé¿å®çèæã\n- ãé£äºå¤æªå让人忧å¿çé®é¢ã\n- ãä¸å¸æ·éª°ååã\n- ã人类çç»ã\n- ãæ¥èªæ°ä¸çã ï¼ä¸¤æ¬ï¼\n- ãè±åç»´è¨çèµæã\n- ã赡å
»äººç±»ã\n- ãæé»éã\n- ãåé·马æ¯å
ä¼ ã\n- ã巨人çé¨è½ãï¼ä¸æ¬ï¼\n- ãä¸ççåå¬ãï¼ä¸æ¬ï¼\n- ã翦åãï¼å¨è¯»ï¼\n- ãèªç§çåºå ãï¼å¨è¯»ï¼\n- ã䏿³å°è¿æ95%çé®é¢çç»äººç±»ï¼æå°±æ¾å¿äºãï¼å¨è¯»ï¼\n- ãç«åªå®¶åºå»å¦å¤§ç¾ç§ãï¼å¨è¯»ï¼\n- ãæªæ¥ç®å²ãï¼å¨è¯»ï¼\n\nå»å¹´æ¯ 9 æ¬ï¼æ²¡æ³å°ä»å¹´ä¸ç¥ä¸è§çäºè¿ä¹å¤ï¼å¤§é¨åæ¯æ
游å Boox Leaf 3 çåå³\n\n**DIY 年度å¾ä¹¦ï¼[ã人类çç»ã](https://book.douban.com/subject/36136689)**\n\n\n\nå·®ç¹è¢«å¥æªçæ é¢åå°é¢éè¿ï¼æ¯æçè¿ææ¬çãè¡è
¥ãèæ´ç䏿¬ä¹¦ï¼ä½è
ä»ä¸æ¡çä¼¼ä¸ç¸å
³ç线åå«å±å¼ï¼æååå®ç¾èåï¼æé²ä¸ä¸ªæå¤§çé´è°\n\n妿æä¸å¤©æºäººä¸åæ¯å°çæèªæçç©ç§ï¼æºäººä¸å®ä¼æ¯«ä¸ç¹è±«æ´é²åºæ®å¿ä¸æå¤©æ§ï¼ä¸ä¸å®æ¯å 为书éå设çè¶
人类æ°ç©ç§çåºç°ï¼AI çææ¯çç¸ä¹è®¸ä¼è®©è¿ä¸å¤©é©¬ä¸å°æ¥\n\né常æå¾
æä¸å¤©è¢«ææçµè§å§\n\næå第äºçæ¯ [ãä¸å¸æ·éª°ååã](https://book.douban.com/subject/1467022)\n\n读å°äºå¾å¤é¾ä»¥ç½®ä¿¡çç©çç¥è¯åçæ³ï¼æ¯å¦ç©ºé´åæ¶é´æ æ³æ éåå²ä¸å»ï¼å®ä»¬ä¸æ¯è¿ç»çï¼ææè§æµè
æ»æçä¸ç齿²¡æä¹ï¼æä»¥è§æµè
åªä¼ä¸ç´æ´»ä¸æ¥ï¼æ æ³èªæï¼æ æ³æ»äº¡ï¼ææäººé½ä¼éåæ°¸çï¼ä¸çæ¯ä¸ç¡®å®çï¼ä¸ççåºè²ä¸æ¯å æå¾èæ¯æ¦çï¼ä¸å¸æ¯æ·éª°åçãç®ç´æ¯ç§å¹»è¿è¦éå¹»\n\næå第ä¸çæ¯[ã巨人çé¨è½ã](https://book.douban.com/subject/26698660/)\n\nä¸çºªä¸é¨æ²ä¸ç第ä¸é¨ï¼æ¯é£ç§å¼å¤´æ¯è¾é¾è¯»ä¸å»ä½æ¯ä¸æ¦æå
¥è¿å»å°±æ æ³èªæç书ï¼å¦å°äºå¾å¤æ¬§æ´²åå²çå°äºæ¶ä»£åè¿\n\n### ð¹ï¸ 好ç©\n\n**DIY 年度好ç©ï¼ [Boox Leaf 3](https://m.tb.cn/h.5oipXLN?tk=C5hFW6ikj5X)**\n\n\n\nç¬¬ä¸æ¬¡ç¨çµçº¸ä¹¦ï¼ç»èªè¶³å¤é¿ï¼å·æ°é度ä¹å¾å¿«ï¼å
置墨水å±ç微信读书ï¼è®©æå¤çäºå¾å¤ä¹¦ï¼ç¼ºç¹å°±æ¯é¿æ¶é´æ¿çæç¹ç¡å°ææï¼è¿å¥½ä¹°äº Randy [æ¨è](https://twitter.com/randyloop/status/1723942659331596587)çææºæ°åæ¯æ¶è§£å³äº\n\nå
¶ä»è¿æä¸äºå¼å¾æ¨èçå°ä¸è¥¿\n\n[Followcat ç«åªé¡¹å](https://m.tb.cn/h.5MGDbVa?tk=lfvlW6iqb8F)\n\n\n\nå¯ä»¥é
å¥ä¸ä¸ª [AirTag 壳](https://m.tb.cn/h.5oiFokQ?tk=3WAnW6iqHNQ)è£
å
¥ AirTag æ¥å®ä½ç«åªï¼ä¸ä»
å¯ä»¥é¢é²åºé¨è·ä¸¢ï¼å¨å®¶éä¸ç¥éèå¨åªéçæ¶å乿´å¥½æ¾äº\n\nå士ç¼é\n\n\n\n线ä¸é
ç¼éè¦å ååï¼ä¸ç´è®©æè§å¾ç¼éæ¯ä¸ªå¾çè´µçç©åï¼å¹³æ¶éè¦å°å¿ç¿¼ç¿¼å°ä¿æ¤ï¼ä½åç°å·®ä¸å¤çè¡å¸éçå éæ¡çº¿ä¸å
318ªè¦ 200 å¤ï¼å·®ä»·å¾å¤¸å¼ ï¼å®é
使ç¨ä¹æè§ä¸åºä»ä¹åºå«\n\n[索尼 ZV1 M2](https://m.tb.cn/h.5oixsbm?tk=T3sGW6isGfY) [Twitter](https://twitter.com/DIYgod/status/1705977747498217811)\n\n\n\nä»ç¬¬ä¸ä»£ ZV1 æ¢å°äºç¬¬äºä»£ï¼è½ç¶ç»è´¨æ²¡ä»ä¹å级ï¼ä½è§£å³äºå¾å¤çç¹ï¼ä½¿ç¨ä½éªå¥½äºé常å¤ï¼å
æ¬äººç±»å¯ä»¥ä½¿ç¨çæ°çèåãæ´éå vlog ç 18mm ç¦è·ãå
ç½®æåæ§éº¦å
é£ãè§é¢æç
§åæ¢å®ä½æé®ãUSB-C ç\n\n### ð©ð»âð» åºç¨\n\n**DIY 年度åºç¨ï¼Arc**\n\n\n\nç«åæ ç¾æ ãå·¥ä½åºç¨äºå°±åä¸å»ï¼èä¸å¹¶ä¸æ¯ç®åå°ææ ç¾æ ç«è¿æ¥ï¼å¾å¤äº¤äºç»èè¿æ¯æºç¨å¿ç\n\nå¦å¤å享ä¸äºèªå·±å¨ä½¿ç¨ç忬¢çåºç¨\n\n- é®ä»¶å®¢æ·ç«¯ï¼Mimestream\n- æµè§å¨ï¼Arc\n- å½ä»¤è¡ï¼Warp\n- Docker 管çï¼OrbStack\n- æ¶é´è¿½è¸ªï¼Toggl Track\n- ç¬è®°ï¼Obsidian\n- RSS é
读ï¼RSSHubãReederãMinifluxãRSS to Telegram BotãRSSHub Radar\n- å¾
åäºé¡¹ï¼TickTick\n- å¾ç管çï¼Eagle\n- è®°è´¦ï¼MoneyWiz\n- å½±é³ï¼PlexãAlistãAutoBangumiãUnblockNeteaseMusicãXiaoya\n- èªå¨åï¼n8n\n- ç½ç«ç»è®¡ï¼Umami\n- å å¯é±å
ï¼OneKeyãMetaMask\n- ç¿»è¯ï¼Bobãæ²æµ¸å¼ç¿»è¯\n- å¹¿åæ¦æªï¼AdGuard HomeãAdGuard for Mac\n- æªå¾ï¼Snip\n- 伿¯æéï¼BreakTimer\n- 足迹ï¼ä¸çè¿·é¾\n- ç¡ç è®°å½ï¼Pokemon Sleep\n- åºç¨ç®¡çï¼Homebrew Cask\n\n### ð® æ¸¸æ\n\n**DIY 年度游æï¼ãå¡å°è¾¾ä¼ 说ï¼çå½ä¹æ³ªã**\n\n\n\nä»å¹´ç©çå¯ä¸ç游æ\n\n## ð§¸ çæ´»\n\n### ð¡ 饮é£å±
ä½\n\n<div class=\"flex gap-2\">\n <Tweet id=\"https://twitter.com/DIYgod/status/1700259244665356348\" />\n <Tweet id=\"https://twitter.com/DIYgod/status/1722655633449816289\" />\n</div>\n\n11 æä»è´«ç çèæ ¼å
°æ¥å°äºç活便å©çæ°å å¡ï¼ç活质éè¿æ¯é«äºä¸å¤§å¤§å¤§æª\n\n- 饮é£ï¼è·è±å½æ¯æ°å å¡ç®ç´æ¯å¤©å ï¼ç»äºæäºä¾¿å®å¥½åçå¤ååé¤å
\n- ä½ï¼ç§æ¿æ´è´µæ´å°äºï¼ä½å¤äºæ¸¸æ³³æ± åå¥èº«æ¿ï¼ä½ç½®ä¹å¾å¥½ï¼ä¹ç®ä¸ä¸æ
°è\n\n### ð« æ
游\n\nåå°å»å¹´12ææ»éªæä¼¤äºè
¿ï¼æä»¥åå 个æåªé½æ²¡å»\n\n1. 5 æè· Harry å» **Lochgelly** ä¸å±±å¾æ¥ [Twitter](https://twitter.com/DIYgod/status/1654635361333542914)\n\næå Harry èçä¸å¤§æ¡¶æ°´ç´¯å¾å¨å°ä¸ç¬ï¼åå°å¥æ¥å¦é£\n\n\n\n\n\n\n\n2. è·ç²ç²å»äº**åè³å
¶** [Twitter](https://x.com/justjustjustcc/status/1662918472567775232) [Twitter](https://x.com/justjustjustcc/status/1663229739195047937) [Twitter](https://x.com/justjustjustcc/status/1663638670224523264) [Twitter](https://x.com/justjustjustcc/status/1664169779433730049) [Twitter](https://x.com/justjustjustcc/status/1664374527906783232) [Twitter](https://x.com/justjustjustcc/status/1665363657885114368) [Twitter](https://x.com/justjustjustcc/status/1666057417283497984)\n\næ¯åºé好ç©çå¾å¤ï¼å±±è·¯èªé©¾ã游泳ã跳海ãè·³ä¼ãéªé©¬ãçæ°çãæå¤ªé³ï¼å¤§æµ·åçæ°ç飿¯ä¹è¶
好çï¼å°±æ¯ä»·æ ¼å¾æäººï¼æ¯ç¹ç©ä»·å¾é«ï¼ä¼å®°æ¸¸å®¢ï¼ç¦»å¼æ¯ç¹åºååå¾è´«ç \n\nå¸¦çæ¸¸æ³³å卿°´é泡äºå 天ï¼å·®ä¸ç¹å¦ä¼äºæ¸¸æ³³\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n3. 8 æå»äº**伦æ¦ãåæ¡¥ãå©å
¹ã约å
** [Twitter](https://twitter.com/DIYgod/status/1689040150754467840) [Twitter](https://twitter.com/DIYgod/status/1690727624836829184) [Twitter](https://x.com/justjustjustcc/status/1686787558930366479) [Twitter](https://x.com/justjustjustcc/status/1689427212842274817) [Twitter](https://x.com/justjustjustcc/status/1690731524453208064) [Twitter](https://x.com/justjustjustcc/status/1686787558930366479)\n\n带åå°å¦å¦å¨è±å½å°å¤ç©\n\nçæ²æ¨ä¸çè¯å§ Do You Hear the People Sing [Twitter](https://twitter.com/DIYgod/status/1689040150754467840)\n\n\n\nåé¡¿åºåéé¢
318Cosplay [Twitter](https://twitter.com/DIYgod/status/1690727624836829184)\n\n\n\n4. 被 Harry 带çéäº**ç±ä¸å ¡**ç¥å¥çåç³åºåå¤ç§ææ¯åç©é¦\n\nå¤ç§ææ¯åç©é¦å±ç¤ºäºæ³¡å¨ç¦å°é©¬æä¸æå çå°¸ä½åå个é¨ä½è¢ä½ï¼åå°ç徿´¥æ´¥æå³\n\n<div class=\"flex gap-2\">\n <Tweet id=\"https://twitter.com/justjustjustcc/status/1693011714755711117\" />\n <Tweet id=\"https://twitter.com/DIYgod/status/1693055863567634692\" />\n</div>\n\nè· Harry å¨ç±ä¸å ¡æµ·è¾¹æ¾ç«ç¤æ£è±ç³ [Twitter](https://twitter.com/DIYgod/status/1693049066572128512) [Twitter](https://x.com/justjustjustcc/status/1693011714755711117)\n\nç¤æ£è±ç³æ¯å¤é¢èèçéé¢è½¯ç»µç»µçå¾å¥å¦ï¼Harry åçé
¥èä¹è¶
级好å\n\n\n\n5. 9 æå»äº**æ³å½ãå¾·å½ã奥å°å©ãåçå©ãæ·å
**\n\n该ç©çé½ç©äºä½æ¶é´å¾èµ¶ï¼èµ°é©¬è§è±\n\n<div class=\"flex gap-2\">\n <Tweet id=\"https://twitter.com/justjustjustcc/status/1697289338545910061\" />\n <Tweet id=\"https://twitter.com/justjustjustcc/status/1697944978784231460\" />\n</div>\n<div class=\"flex gap-2\">\n <Tweet id=\"https://twitter.com/justjustjustcc/status/1699342897185796415\" />\n <Tweet id=\"https://twitter.com/justjustjustcc/status/1699439673108488398\" />\n</div>\n\n6. 10 æå»äº**æé½ãéåºãéå·ãä¹é²æ¨é½ã䏿µ·**\n\n卿é½è§äº[Tyzual](https://twitter.com/TyzuaL) å [ä¸å¤æµ
ç¬](https://www.julydate.com/)ï¼å»çäºå¤§çç«ï¼å¨éåºå¤§åç¹åï¼å¨ä¹é²æ¨é½åç¾èé
ç®è½å\n\næé½å¤§çç«åºå°\n\n\n\nä¹é²æ¨é½ç大èå\n\n\n\n7. 11 æå»äº**馿¸¯**\n\n馿¸¯éèç§æå¨è§å°äºå¾å¤åäºï¼æ¶¨äºå¾å¤è§è¯ï¼ä¹
318æ¯æç«äºä¸¤å¹´å¤çå
¬å¸çèååå§äººä»¬ç¬¬ä¸æ¬¡å¢è\n\n\n\n### ð¤¼ââï¸ ç¤¾äº¤\n\nä»å¹´ä¸ä½å»äºå¾å¤å°æ¹è¿è§äºå¾å¤æå\n\n[Harry](https://twitter.com/harrywang9917)ã[ç²ä¸ç²](https://twitter.com/isCuBuCu)ã[Tyzual](https://twitter.com/TyzuaL)ã[ä¸å¤æµ
ç¬](https://www.julydate.com/)ã[è±ç](https://pea3nut.info/)ã[ch](https://www.chen9.info/)ã[Tony](https://github.com/TonyRL)ã[Bruce](https://twitter.com/brucexu_eth)ãAnniãAtlasãbirdringãDmooãJeffãJoshuaãKateãMaggieãUsagiãYingziãbirdringãyingziï¼å¤§é¨åæ¯åäºï¼é½æ¯è¿ç¨å·¥ä½è§ä¸é¢çå®ä¸å®¹æ\n\n### ð± å®¶åº\n\nåèå®¶ç»å©äºï¼è¿ç¨å¾ç´¯ï¼ä½çå°åå°ç©¿ä¸å©çº±ææ®ä¸çªä¸åé½å¼äº [Twitter](https://twitter.com/DIYgod/status/1709044839638331768)\n\n\n\n\n\nä¸åå½å°±è·é
¸å¥¶å¢èäºï¼è¿ä¸èµ·æ¥äºæ°å å¡ [Twitter](https://twitter.com/DIYgod/status/1701847494144196818)\n\n被é®çæå¤çæ¯âåå¼äºä¸¤å¹´å¤ï¼é
¸å¥¶è¿è®¤è¯ä½ ä¹âï¼è½ç¶ææ°¸è¿æ æ³ç¥éçæ¡ï¼ä½ä»é»äººç¨åº¦æ¥çï¼æå¾åäºæ¯è®¤è¯ç\n\n\n\n### ð æè½\n\n**游泳**\n\nä»å°å¦è¿å 次ï¼å¤§å¦è¿ä¸è¿æ¸¸æ³³è¯¾ï¼ä½é½æ²¡æå¦ä¼\n\nå¦ä¸æè¿°ï¼ä»å¹´å¨åè³å
¶æ
游æ¶åå¥ä¸ªæ¸¸æ³³å泡äºå 天大海ï¼å
æäºå¯¹æ¸¸æ³³çææ§ï¼å¤§æ¦å¦ä¼äºèªç±æ³³çå§¿å¿ä½æ¯ä¸ä¼æ¢æ°\n\nå°æ°å å¡ä¹ååå¨å°åºçæ¸¸æ³³æ± æ³¡äºå å¨åå®å
¨å¦ä¼äºï¼ç°å¨æ¯å¤©é½ä¼è·åå°å»æ¸¸æ³³ï¼è¿å¨å¼ºåº¦è¶³å¤å¤§åææ°´å·ï¼å·²ç»æ¯ææå欢çè¿å¨äºï¼æè§ä¹åéè¿äºå¾å¤ä¹è¶£\n\n\n\n**æå®¢**\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1656211483796045824\" />\n\n为äºå®£ä¼ xLogï¼æ¥åäº Web Worker çé请å½äºäººçç¬¬ä¸æ¬¡æå®¢ï¼ä¸»æè¾å®ãåå¨ãå°ç½èé½å¾ä¸ä¸ï¼è¿ç¨æå¤å°é常顺å©ï¼ä¹æ²¡æä»»ä½å·åº\n\n使¯ä½ä¸ºä¸ä¸ªèµæ·±ç¤¾æï¼è½ç¶ç¬¬ä¸æ¬¡å¾é¡ºå©ï¼åºè¯¥ä¹å¾é¾é¼èµ·åæ°è¿è¡ä¸ä¸æ¬¡äº\n\n**æéº»å°åææ¼è**\n\nè·çåå°åå»äºä¸æ¬¡æéº»å°åææ¼èï¼å¦ä¼äºè¿ä¸¤ç§æ¸¸æï¼ä½æ¯è¦è¯´è¯æä»¥é½æ²¡æç¬¬äºæ¬¡äº\n\n### ð å°è±¡æ·±å»çæ¥å¸¸\n\nè¿çæ¥åå°ç²¾å¿è®¾è®¡ç DIY 诱æå¨\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1666957700360486912\" />\n\nè¿çæ¥ st éçé»å¥å¥ç¥ç¦\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1667124433641779200\" />\n\nå¨åå°å¦æ ¡ç©¿èæ ¼å
°è£æå©çº±ç
§\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1690049704791310336\" />\n\n卿 ¼ææ¯å¥åå äºåå°çæ¯ä¸å
¸ç¤¼\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1732502102868377882\" />\n\n卿°å å¡è¿å£è¯è\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1738995099336589596\" />\n\n卿°å å¡è·¨å¹´ççè±è¡¨æ¼ï¼å¥½åè¿æ¯ç¬¬ä¸æ¬¡çè¿ä¹ç大ççè±è¡¨æ¼ï¼ä¹åçè¿æå¤§çæ¯è¿ªå£«å°¼\n\n<Tweet id=\"https://twitter.com/DIYgod/status/1741534082209923239\" />\n\nè¿æéªåå°ç¬¬ä¸æ¬¡å»çæ¼å±ä¼ï¼ç¬¬ä¸æ¬¡å»æå¨å¨\n\n### ðª çæ´»ç®¡ç\n\nè·å»å¹´å·®ä¸å¤ï¼ä¸»è¦è¿æ¯å¨ä½¿ç¨è¿ä¸å¥[åºäº Obsidian ççæ´»è®°å½ç³»ç»](https://diygod.cc/obsidian)ï¼ç°å¨æ¥è®°æ¯è¿æ ·çç»æ\n\nå½å¤©åççäºæ
ãæ£å¨è¿è¡ä¸çäºé¡¹ãæ¥ç¨è¡¨ãå¯å
°å
æç¾å¾·è¡¨\n\n\n\nåè¡¥å
ä¸ç¨ TickTick ç Habit æ¥è®°å½æ¯å¤©æ¯å¨å个 OKR ç®æ 宿徿乿 ·ï¼ç¨ Toggl Track è®°å½ååä¸ªäºæ
çæ¶é´ï¼æ¯ä¹åçå¨ Obsidian é all in one æ¹ä¾¿å¾å¤\n\n\n\n## ð¿ è¾åº\n\n### ð©ð»âð» 代ç
318\n\nContributions å¿«èµ¶ä¸ 2019 å¹´å·
å³°æ¶æäº\n\n\n\nåæ¯æ²¡ææ°é¡¹ç®çä¸å¹´ï¼ä»å¹´ä¸åæè¿æ¯ä»¥ xLog 为主ï¼åæä¹åäºä¸äº RSSHub å RSSHub Radar çå·¥ä½ï¼å为å
¬å¸ 2024 å¹´çä¸äºè½¬åååå¤\n\nxLog å¼åå¾çç«æå¤©ï¼[ç¸å
³ Twitter å表](<https://twitter.com/search?q=%22xLog%22%20(from:DIYgod)%20until:2023-12-31%20-filter:replies&src=typed_query&f=live>)ï¼ï¼æå举åäº 10000 åçåä½è
æ¿å±æ´»å¨ï¼å¸å¼äºå¤§æ¹ä¼ç§çåä½è
ï¼æå¤æ¶åè¿æ¯å¨æåå 个社åºå¼åè
æ¥è´¡ç®ä»£ç ä¸èµ·å®å xLogï¼å®æäºæ°ä¸æ¸
ç Featureãç°å¨æ 3k å¤åä½è
å¨ä¸é¢åå¸äº 26k å¤é«è´¨éå
容\n\nRSSHub éæäºææ¡£ï¼è®©å®æ´å®¹æè¢«ç»´æ¤ï¼æ¹é æäºä»¥è±æä¸ºä¼å
è¯è¨ï¼ç¨æ´ç°ä»£åçæ¶æ Plasmo å®å
¨éåäº RSSHub Radarï¼å徿´å¥½çæ´ç¨³å®æ´å®¹æç»´æ¤ï¼è¿è½èªå¨åå¸å°å大åºç¨ååºãç°å¨ RSSHub 宿¹å®ä¾æ¯ææ¿è½½ä¸äº¿å¤æ¬¡è¯·æ±ï¼docker æä¸åäºç¾å¤ä¸æ¬¡ä¸è½½ï¼RSSHub Radar æå·®ä¸å¤ 9 ä¸å¨æ´»ç¨æ·\n\n### ð æå\n\nè¿ä¸å¹´æåä¹é常é«äº§\n\n认çåäº 9 ç¯å客\n\n- [2022 å¹´ç»æ»ç»](https://diygod.cc/2022)\n- [ä½ ä½ ä½ ä½ è¦è·³èåï¼](https://diygod.cc/do-you-want-to-dance)\n- [令æçå¿çä¸é¨å乿é¦å¨æ¼«](https://diygod.cc/dystopian-anime)\n- [æå¾äºè½¯ä»¶æ´æ°å¼ºè¿«ç](https://diygod.cc/software-update)\n- [4 ææ°çªå¤ªå¥½çäºï¼å¹çï¼](https://diygod.cc/anime-2023-april)\n- [对 Newsletter 说ä¸](https://diygod.cc/say-no-to-newsletter)\n- [å¨å客èå
¥ä¸ä¸ªè·¨å¹³å°ä½åé](https://diygod.cc/xlog-portfolios)\n- [ä¼é
ä½¿ç¨ Cloudflare WARP åºå¯¹ RSSHub åç¬é¾é¢](https://diygod.cc/rsshub-with-warp)\n- [è½»æ¾å建ä¸ä¸ä¸ª Twitter è´¦å·](
318https://diygod.cc/10k-twitter-accounts)\n\næ°´äº 243 æ¡ Twitter\n\n[å表](<https://twitter.com/search?f=live&q=(from:DIYgod)%20until:2024-01-01%20since:2023-01-01%20-filter:replies&src=typed_query>)\n\n### ð¥ å½±é³\n\nä»å¹´å¨ B ç«åå¸äºä¸¤ä¸ª Vlogï¼æ
游积æäºå¥½å¤ç´ æï¼è³å°è¿æ 6 个è§é¢è¿æ²¡åªï¼å¾ææ§\n\nã女念´å®¤æ²æå½ï¼éæ£å¸¸å½é³ã\n\nhttps://www.bilibili.com/video/BV1yz4y147Ht/\n\nãè±å½æ
游VLOG | ç±ä¸å ¡å£è¯èã\n\nhttps://www.bilibili.com/video/BV1DH4y1m7oJ/\n\nå½äºä¸ä¸ªæå®¢ãå xlog.app çä½è
DIYgod èåºåé¾åå客平å°ãå端å¦ä¹ åçæ´»ææã\n\nhttps://www.xiaoyuzhoufm.com/episode/645a76f67d934b85051081c8\n\n## ð 2024\n\n### âï¸ OKR\n\n- O1: In excellent health\n - KR1: Body control, body weight 70kg and body fat 17%\n - KR2: Early to bed and early to rise, 12:00-8:00\n - KR3: Healthy Eating, light and less, increase the proportion of white meat and reduce the sugar\n - KR4: More exercise, at least 3 times per week\n\n- O2: Highly productive like a sow\n - KR1: Blog, at least 1 blog per month\n - KR2: Vlog, publish the 6 vlogs from last year\n\n- O3: Knowledge overflows my brain\n - KR1: Reading, at least 7 hours per week\n - KR2: Professional learning, at least 5 hours per week\n - KR3: English learning, at least 5 hours per week\n\n- O4: I am Franklin\n - KR1: Guarantee 1 virtue per week\n - KR2: Record virtue status daily\n\n- O5: Run like clockwork\n - KR1: Write bullet journal daily\n - KR2: Bookkeep weekly and monthly\n - KR3: Do things on a daily schedule\n\n- O6: Writing code is like writing the poem of life\n - KR1: Focused work for at least 7 hours per day\n - KR2: Actively maintain and contribute to open source projects for at least 3 hours per week\n - KR3: Develop a new RSS reader using Tauri, with comprehensive support for RSSHub and AI\n\n- O7: Combat inflation\n - KR1: Achieve a 10% annual return through simple and healthy financial management strategies"},{"slug":"10k-twitter-accounts","title":"è½»æ¾å建ä¸ä¸ä¸ª Twitter è´¦å·","tags":[],"body":"> Information freedom does not naturally evolve, it degrades.\n> ââ [Open Information Manifesto](https://openinformation.eth.limo)\n\nTwitter å¨ 8 æå³å®äºå
¨é¢éå¶å
¬å¼è®¿é®å API æ¥å£ï¼å¯¼è´ç¬¬ä¸æ¹éæåæ æ³åæ£å¸¸å·¥ä½ã弿¾ç¨æ·æ°æ®è¢«ç»æ¶æç§äººæè´¢å·¥å
·ï¼æ¾ç»ç Open Web æ æ Twitter ç«æ²¦è½å°è¿ç§å¢å°ï¼æ°å奴é¶å¶å¨æä¸åºè¯¥çå°æ¹åºç°ï¼ä»¤äººååãè¿ä¹è´ä½¿è®¸å¤ç¨æ·æµå Fediverseï¼ä½ç¤¾äº¤å
³ç³»åä¹ æ¯ä¸æ¦å½¢æï¼è¦è®©å
¶è¿
éæ¹åå¹¶ä¸æï¼æ´å¤äººè¿æ¯éæ©äºå¿åï¼Musk 乿¯çç©¿äºè¿ä¸ç¹ææææ æ\n\n\n\n\n\nç¶èï¼æä»¬ä¹ä¸è½æ¦æå°è¯´ Twitter å°éï¼æ¯ç«å®ä»ç¶å¼æ¾äºä¸ä¸ªèµ·æ¥ä»·ä¸º**æ¯æ 4 ä¸ç¾å
**ï¼ä¸éä¸è®¾çä¼ä¸ API\n\n\n\nä»ä¹ï¼ä½ 说ç¨ä¸èµ·ï¼\n\né£ä¹ä½ å¯ä»¥åæä¸æ ·ï¼éè¿å建ä¸ä¸ä¸ªè´¦å·ä»¥ç»å¼å°é\n\n尽管 Twitter éå¶äºææå
¬å¼è®¿é®ï¼ä½æä»¬åç°æ°ä¸è½½ç Twitter ç§»å¨å®¢æ·ç«¯ä»å¯ä»¥æ£å¸¸æ¥çç¨æ·å¨æãè¿ä¸ºæä»¬æä¾äºæ½å¨çå©ç¨æ¹æ³ï¼éè¿æå
ï¼æä»¬å¯ä»¥çå°å®¢æ·ç«¯æ¯éè¿è¯·æ±ä¸ç³»åç¹æ®æ¥å£æ¥å建ä¸ä¸ªæéè¾ä½ãé¢çéå¶ä¸¥æ ¼ç临æ¶è´¦å·ãæä»¬å¯ä»¥ç¨è¿ä¸ªè´¦å·è·åæä»¬éè¦ç大é¨åæ°æ®ãç¶èï¼è¿ç§è´¦å·å¯¹è¯·æ±é¢ççéå¶éå¸¸ä¸¥æ ¼ï¼å æ¤éè¦å¤§éçè¿æ ·çè´¦å·æè½æ»¡è¶³åºæ¬ç使ç¨éæ±ãåæ¶ï¼æ¯ä¸ª IP å¨ä¸æ®µæ¶é´å
åªè½è·åä¸ä¸ªä¸´æ¶è´¦å·ï¼å æ¤æä»¬ä¹éè¦å¤§éç IP 代ç\n\nå
·ä½æå
åæå
è¿ç¨å¯ä»¥åè BANKA ç[ãæä¹ç¬ Twitterï¼Androidï¼ã](https://blog.nest.moe/posts/how-to-crawl-twitter-with-android)ãç«å¨ BANKA è©èä¸ï¼æä»¬å¯ä»¥ååºä¸ä¸ªè¿æ ·ç注åèæ¬ï¼æ¥èª [Nitter - Guest Account Branch Deployment](https://github.com/zedeus/nitter/wiki/Guest-Account-Branch-Deployment)ï¼ï¼\n\n```sh\n#!/bin/bash\n\nguest_token=$(curl -s -XPOST https://api.twitter.com/1.1/guest/activate.json -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F' | jq -r '.guest_token')\n\nflow_token=$(curl -s -XPOST 'https://api.twitter.com/1.1/onboarding/task.json?flow_name=welcome' \\\n -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F' \\\n -H 'Content-Type: application/json' \\\n -H \"User-Agent: TwitterAndroid/10.10.0\" \\\n -H \"X-Guest-Token: ${guest_token}\" \\\n -d '{\"flow_token\":null,\"input_flow_data\":{\"flow_context\":{\"start_location\":{\"location\":\"splash_screen\"}}}}' | jq -r .flow_token)\n\ncurl -s -XPOST 'https://api.twitter.com/1.1/onboarding/task.json' \\\n -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F' \\\n -H 'Content-Type: application/json' \\\n -H \"User-Agent: TwitterAndroid/10.10.0\" \\\n -H \"X-Guest-Token: ${guest_token}\" \\\n -d \"{\\\"flow_token\\\":\\\"${flow_token}\\\",\\\"subtask_inputs\\\":[{\\\"open_link\\\":{\\\"link\\\":\\\"next_link\\\"},\\\"subtask_id\\\":\\\"NextTaskOpenLink\\\"}]}\" | jq -c -r '.subtasks[0]|if(.open_account) then {oauth_token: .open_account.oauth_token, oauth_token_secret: .open_account.oauth_token_secret} else empty end'\n```\n\n以åè¿æ ·çæ¹é注åèæ¬ï¼æ¥èªæèªå·±ï¼ï¼\n\n```js\nconst got = require(\"got\");\nconst { HttpsProxyAgent } = require(\"https-proxy-agent\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst concurrency = 5; // Please do not set it too large to avoid Twitter discovering our little secret\nconst proxyUrl = \"\"; // Add your proxy here\n\nconst baseURL = \"https://api.twitter.com/1.1/\";\nconst headers = {\n Authorization:\n \"Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F\",\n \"User-Agent\": \"TwitterAndroid/10.10.0\",\n};\n\nconst accounts = [];\n\nfunction generateOne() {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n const timeout = setTimeout(() =>
318 {\n // eslint-disable-next-line no-console\n console.log(`Failed to generate account, continue... timeout`);\n resolve();\n }, 30000);\n\n const agent = {\n https: proxyUrl && new HttpsProxyAgent(proxyUrl),\n };\n\n try {\n const response = await got.post(`${baseURL}guest/activate.json`, {\n headers: {\n Authorization: headers.Authorization,\n },\n agent,\n timeout: {\n request: 20000,\n },\n });\n const guestToken = JSON.parse(response.body).guest_token;\n\n const flowResponse = await got.post(\n `${baseURL}onboarding/task.json?flow_name=welcome`,\n {\n json: {\n flow_token: null,\n input_flow_data: {\n flow_context: {\n start_location: {\n location: \"splash_screen\",\n },\n },\n },\n },\n headers: {\n ...headers,\n \"X-Guest-Token\": guestToken,\n },\n agent,\n timeout: {\n request: 20000,\n },\n },\n );\n const flowToken = JSON.parse(flowResponse.body).flow_token;\n\n const finalResponse = await got.post(`${baseURL}onboarding/task.json`, {\n json: {\n flow_token: flowToken,\n subtask_inputs: [\n {\n open_link: {\n link: \"next_link\",\n },\n subtask_id: \"NextTaskOpenLink\",\n },\n ],\n },\n headers: {\n ...headers,\n \"X-Guest-Token\": guestToken,\n },\n agent,\n timeout: {\n request: 20000,\n },\n });\n\n const account = JSON.parse(finalResponse.body).subtasks[0].open_account;\n\n if (account) {\n accounts.push({\n t: account.oauth_token,\n s: account.oauth_token_secret,\n });\n } else {\n // eslint-disable-next-line no-console\n console.log(`Failed to generate account, continue... no account`);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(`Failed to generate account, continue... ${error}`);\n }\n\n clearTimeout(timeout);\n resolve();\n });\n}\n\n(async () => {\n const oldAccounts = fs.readFileSync(path.join(__dirname, \"accounts.txt\"));\n const tokens = oldAccounts.toString().split(\"\\n\")[0].split(\"=\")[1].split(\",\");\n const secrets = oldAccounts\n .toString()\n .split(\"\\n\")[1]\n .split(\"=\")[1]\n .split(\",\");\n for (let i = 0; i < tokens.length; i++) {\n accounts.push({\n t: tokens[i],\n s: secrets[i],\n });\n }\n\n for (let i = 0; i < 1000; i++) {\n // eslint-disable-next-line no-console\n console.log(\n `Generating accounts ${i * concurrency}-${(i + 1) * concurrency - 1}, total ${accounts.length}`,\n );\n\n // eslint-disable-next-line no-await-in-loop\n await Promise.all(Array.from({ length: concurrency }, () => generateOne()));\n fs.writeFileSync(\n path.join(__dirname, \"accounts.txt\"),\n [\n `TWITTER_OAUTH_TOKEN=${accounts.map((account) => account.t).join(\",\")}`,\n `TWITTER_OAUTH_TOKEN_SECRET=${accounts.map((account) => account.s).join(\",\")}`,\n ].join(\"\\n\"),\n );\n }\n})();\n```\n\nè¿äºèæ¬å·²æ¾å°äº RSSHub ä»åºï¼ https://github.com/DIYgod/RSSHub/blob/master/scripts/twitter-token/generate.js\n\nå¨ä½¿ç¨åï¼ä½ éè¦å¡«å
¥ä½ è´ä¹°ç IP 代çæå¡å°åãèæ¬ä¼èªå¨å¤çè¶
æ¶ã请æ±çé误ï¼å¹¶ä¸ä»¥ 5 并忥èªå¨è·å临æ¶è´¦å·ï¼å½è·åå° 1000 个账å·åå°ä¼åæ¢ãéæ³¨æå¹¶åä¸è¦è®¾ç½®å¾è¿é«ï¼æä»è§å¯åç°ï¼å½ Twitter åç°å¤§éè¯·æ±æ¶ä¼æåæ¥å£ä¸æ®µæ¶é´\n\næè´ä¹°äº 5 家代çæå¡ä»¥è¿è¡æµè¯ï¼æè§ææç¸å·®æ å ï¼éæ©ä¸ä¸ªæä¾¿å®çæå¡å°±å¯ä»¥ãéå¸¸ï¼æä½ä»·ç 1G å¥é¤å°±è¶³å¤è·å大约å ä¸å°åå ä¸ä¸ªè´¦å·äºãæç®åæ¾å°çæä¾¿å®çæå¡æ¯ [proxy-cheap](https://app.proxy-cheap.com/r/4plbks)ï¼å¦æä½ ææ´å¥½çéæ©è¯·åç¥æ\n\nè¿ç§æ¹æ³å·²ç»å¨ Nitter ä¸ç¨³å®è¿è¡äºä¸æ®µæ
318¶é´ï¼ç°å¨ä¹å·²å®è£
å°äº RSSHub åå
¶å®æ¹ç¤ºä¾ä¸ï¼æä»¬å¯ä»¥å®£å¸ä¸éªæ¶ Twitter 奴é¶ä¸»çæäºå·²ç»é¶æ®µæ§èå©"},{"slug":"uk-travel-edinburgh","title":"è±å½æ
游VLOG | ç±ä¸å ¡å£è¯è","tags":["vlog"],"body":"2021å¹´12æææ"},{"slug":"rsshub-with-warp","title":"ä¼é
ä½¿ç¨ Cloudflare WARP åºå¯¹ RSSHub åç¬é¾é¢","tags":[],"body":"ðï¸ æ¬æéç»æ´å¼æ¾çäºèç½\n\n---\n\nèµ·å æ¯çå° @geekbb ä»ç» Warp ç[æ¨æ](https://twitter.com/geekbb/status/1663443373544583168)ã尽管 Warp å·²ç»åå¸äºå¾é¿æ¶é´ï¼å°±ä¿æ¤ IP éç§èè¨ï¼å®å¹¶æ²¡æ iCloud Private Relay 好ç¨ï¼æä¹æ²¡æéæ³ä¸ç½çéæ±ã使¯æçªç¶æè¯å°ï¼æè¿æ¯æéè IP çéæ±ã\n\nå¨å¼å RSSHub çå å¹´ä¸ï¼æåç°æä¾å
Œ
± API çç«ç¹é常å°ï¼è®¸å¤ç«ç¹è¿ä¼éåä¸¥æ ¼çåç¬æ§å¶æ¥éå¶å
¶å¹³å°å
容çè·åãæäºç«ç¹ä¼å±è½åä¸ IP ååºè¿å¤è¯·æ±ï¼èè¿æä¸äºç«ç¹åä¼å
¨é¢å±è½å¸¸è§äºæå¡å¨ååç IP å°åãå æ¤ï¼ä»
ä»
为äºè·åææ°å æ¡å
å®¹æ´æ°å´åå¾é常å°é¾ã\n\n\n\nè¿ç§æ
åµéè¦ä½¿ç¨ä»£çï¼ä½æ¯ä¸é¨çç¬è«ä»£çéå¸¸ä»·æ ¼æè´µï¼æ§ä»·æ¯æä½ï¼å¦æ Cloudflare WARP çæ éæµéå丰å¯ç IP èµæºè½è¢« RSSHub å©ç¨å°±å¤ªæ£äºãRSSHub å·²ç»æ¯æäºéç¨ç代çåè®®ï¼åªè¦è½å° WARP å
è£
为éç¨ç proxy å°±å¯ä»¥ã\n\n\n\nè½ç¶æ æ³ç´æ¥å¨å½ä»¤è¡ç¯å¢ä¸æ¹ä¾¿å°ä½¿ç¨å®æ¹å®¢æ·ç«¯ï¼ä½è¿ä¹å®¹ææ³å°çç¹åè¯å®å·²ç»è¢«å«äººå®ç°è¿äºãæå¨ GitHub 䏿¾å°äºä¸ä¸ªå°è£
ç Dockerã\n\nhttps://github.com/Mon-ius/Docker-Warp-Socks\n\nç¶ååªéè¦å¨ RSSHub ç `docker-compose.yml` ä¸åæ·»å è¿æ ·ä¸ä¸ª service æ¥å¯ç¨ä»£çæå¡\n\n```yml\nwarp-socks:\n image: monius/docker-warp-socks:latest\n privileged: true\n volumes:\n - /lib/modules:/lib/modules\n cap_add:\n - NET_ADMIN\n - SYS_ADMIN\n sysctls:\n net.ipv6.conf.all.disable_ipv6: 0\n net.ipv4.conf.all.src_valid_mark: 1\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"https://www.cloudflare.com/cdn-cgi/trace\"]\n interval: 30s\n timeout: 10s\n retries: 5\n```\n\næåç» RSSHub å ä¸ä¸ª PROXY_URI ç¯å¢åéæ¥ä½¿ç¨ä»£ç\n\n```yml\nPROXY_URI: \"socks5h://warp-socks:9091\"\n```\n\næéåäºä¸ä¸ªæç»å¸¸ä½¿ç¨ç hotukdeals è·¯ç±ï¼è±å½ççä»ä¹å¼å¾ä¹°ï¼è¿è¡æµè¯ã该ç«ç¹ä¼å±è½ææ DigitalOcean ç IPï¼å æ¤ä¸ç´å¤äº 403 ç¶æã\n\n\n\nå ä¸ WARP åå¯é¡ºå©è®¿é®\n\n\n\næ¤å¤ï¼æåç°æ¯æ¬¡éå¯ WARP æ¶ï¼é½ä¼è¾åºæ°ç IPãå°½ç®¡ææ²¡ææ¶é´éªè¯ï¼ä½ææè§ IP åºè¯¥ä¼ç»å¸¸èªå¨æ´æ¹ï¼è¿å¯¹è§£å³åç¬æ¯ä¸ä¸ªå¥½æ¶æ¯ã\n\n\n\nè¿å¯ä»¥è¿ä¸æ¥èªå®ä¹ WireGuard çé
ç½®ï¼å
æ¬ä½¿ç¨ä»è´¹ç WARP+ åèªå®ä¹ endpointï¼ä»¥è·åå¯è½æ´å¥½çç»æã\n\nçæ WireGuard é
ç½®æä»¶å¯ä»¥ä½¿ç¨\n\nhttps://github.com/ViRb3/wgcf\n\nå· WARP+ æµéåçé endpoint å¯ä»¥ä½¿ç¨\n\nhttps://github.com/fscarmen/warp\n\næè¯´æ³æ¯ WARP+ çéåº¦å¹¶æ ææ¾å·®å¼ï¼[ãWARPãWARP+é度对æ¯ï¼ä»¥åWARPé度ä¸éã](https://www.nodeseek.com/post-9449-1)ï¼ï¼ä½æ¯æ¯å¦å½±ååç¬ææè¿éè¦è¿ä¸æ¥éªè¯ã\n\n妿ä¸å顺å©ï¼RSSHub宿¹å®ä¾ä¸è®¸å¤ä¸¥æ ¼åç¬çè·¯ç±åºè¯¥è½éæ°ä½¿ç¨ãæå°å¨å 天å
è¿è¡éªè¯å¹¶å¨æ¤æ´æ°ã\n\n"},{"slug":"xlog-portfolios","title":"å¨å客èå
¥ä¸ä¸ªè·¨å¹³å°ä½åé","tags":[],"body":"## é¿ä¹
以æ¥\n\næä¸ç´å°ä¸ªäººå客è§ä¸ºä¸ä¸ªçæ³çå±ç¤ºä¸ªäºº IP çâ个人ç½ç«âï¼èä¸ä»
ä»
æ¯åå¸æç« çå¹³å°ãææ¾å¨ 2014 å¹´åå¦ç¼ç¨æ¶ä½¿ç¨ WordPress å»ºç« [ãä¸çï¼ä½ 好ï¼ã](https://diygod.cc/1)ï¼å
¥äºå端ååï¼å¨ 2017 å¹´æè½¬åäº Hexo [ãåäºä¸ç¹å¾®å°çæ¹å¨ã](https://diygod.cc/new-blog)ï¼Web3 é£åå 2022 å¹´ææ¢æäº xLog [ã第ä¸ä¸ªå¼æºé¾ä¸åå®¢ç³»ç» xLogã](https://diygod.cc/xlog)ãç¶èï¼æ 论æä½¿ç¨ä»ä¹å客系ç»ï¼ä¸ç´é½åå¨ä¸ä¸ªé®é¢ï¼é£å°±æ¯å¦ä½ä¼é
å°æ±éåå±ç¤ºæå¨å
¶ä»å¹³å°åå¸çä½åï¼æå¥½è¿è½ç´æ¥æ¾ç¤ºå¤ç«çæ°æ®ãæä¹åé常以æç« å½¢å¼åå¸ä½åï¼å¹¶å¨æç« ä¸éä¸é¾æ¥ï¼
318ç¶èè¿æ ·åæ¾ç¶ä¸å¤ä¼é
ï¼è¯»è
è¿éè¦é¢å¤ç¹å»é¾æ¥è¿è¡è·³è½¬ã\n\n## çµæé临\n\næå¨å¦ä¹ è¾¾è¬å¥åªè¾æ¶ï¼åç°äºå½±è§é£é£ç[ç½ç«](https://www.ysjf.com/video-list)ï¼å®éè¿å¤é¾æ¹å¼ååºäºä»ä»¬å¨ B ç«åå¸çè§é¢ï¼å
¶ä¸å
æ¬æ é¢ãå°é¢å¾ãå叿¶é´ãææ¾éçä¿¡æ¯ãè¿ä¸ªåç°ç»äºæå¯åï¼æå®å
¨å¯ä»¥å¨ xLog ä¸å¶ä½ä¸ä¸ªè£
è½½äºæå¨å个平å°ä½åçä½åéï¼è¿éé¢å¯ä»¥ææåå¸å¨ B ç«çè§é¢ãæå¨ GitHub ä¸ç»´æ¤çä»åºãæåä¸çå°å®å®æå®¢çè³æ¯æå¨ pixiv ä¸åä½çç»ä½ãè¿æ ·ï¼å½äººä»¬è®¿é®æçå客æ¶ï¼å°ä¸åªæ¯çå°æç« ï¼èæ¯ä¼çå°æ´ä¸°å¯å¤å
çæï¼è¿è®©æçåå®¢æ´æ¥è¿ä¸ä¸ªçæ£æä¹ä¸çâ个人ç½ç«âã\n\n## 䏿\n\næ³æ³èååï¼å®ç°å°±ç®åäºã\n\n1. 对 xLog åå°è¿è¡äºä¼å忏
æ°çåç±»ï¼æç« ã页é¢ãä½åéï¼ä»¥æ¶é¤ç±»åå¢å¤åå¯è½å¸¦æ¥çç¨æ·å°æ°ã\n\n\n\n2. 设计äºä¸ä¸ªå
¨æ°çç¼è¾é¡µï¼ä¸åäºæç« å页é¢ï¼è¿éåªä¿çå°é¢ãæ é¢ãæè¦ãå叿¶é´ï¼å¹¶æ°å¢å¤é¨é¾æ¥å段ã\n\n\n\n3. å®ç°äºä½åä¿¡æ¯çèªå¨å¡«å
åè½ï¼åè½»äºæå¨è¾å
¥çè´æ
ãè¿æ¯éè¿è·å龿¥ç Open Graph ä¿¡æ¯å®ç°çï¼æ¶åå°çåæ®µå
æ¬ `og:image` `og:title` `og:description` `og:date`\n\n\n\n4. æä½åå±ç¤ºå¨é¦é¡µåç¬ç«ç[ä½åé页](https://diygod.cc/portfolios)\n\n\n\n5. æ°æ®çè·ååå±ç¤ºï¼å¯¹äºâå·æ°æ®âç»éªä¸°å¯ç RSSHub ä½è
æ¥è¯´ï¼è¿æ¯å¾å¿åºæçä¸ç¯ï¼é¦å
é对 bilibiliãå°å®å®ãGitHubãpixivãTwitter è¿å 个平å°è¿è¡äº[æå](https://github.com/Crossbell-Box/xLog/blob/7634df9359dafbf9e9b28b8ad3bc8b214f4e380f/src/app/api/portfolio-stats/route.ts#L32)ï¼è·åå°ææ¾éåè¯è®ºæ°å¹¶å¨ xLog çå¡çä¸è¿è¡å±ç¤ºï¼åæ¶èèå°æºç«å¯è½çååååç¬ï¼æç¹å«è®¾ç½®äºè¶³å¤é¿çæ°æ®ç¼åã\n\n\n\nå¦ä»ï¼è¿ä¸ªç®åå®ç¨çå°åè½å·²ç»è½å°å®ç°äºï¼å¯ä»¥ççæç[ä½åé页](https://diygod.cc/portfolios)ï¼ä½ æ¯å¦ä¹æ³è¦å°è¯å¨ xLog 建ç«å±äºèªå·±ç个人ä½åéå¢ï¼"},{"slug":"gf-bathroom","title":"女念´å®¤æ²æå½ï¼éæ£å¸¸å½é³","tags":[],"body":"å·å½çå¥³åæ´æ¾¡å¼å¼ï¼å¤ªå¯ç±äº\n\nä½ ä¹è§å¾å¯ç±çè¯è¯·å»æ¨ç¹å¤¸å¤¸ justjustjustcc\n\næ±ä¸ªä¸é®ä¸è¿"},{"slug":"say-no-to-newsletter","title":"对 Newsletter 说ä¸","tags":[],"body":"\n\nè¡°éæ å¤ä¸å¨ï¼è¿æ¯å¾æ£å¸¸çç°è±¡ã人们èªç¶èç¶å°æ´å¾åäºçå¹³å¿«çæ¶è´¹æ¹å¼ãç¶èï¼æä¸ç´æ æ³å¿åçä¸ç§å¥æªè¶å¿æ¯ï¼å¨ä¸äºå°æ¹ï¼äººä»¬å° RSS æå¼ï¼è½¬èä½¿ç¨ Newsletterã\n\næ¬è´¨ä¸ï¼çµåé®ä»¶æ¯ä¸ç§ç§å¯çååéä¿¡æºå¶ï¼è RSS æ¯ä¸ç§å¼æ¾çååéä¿¡æºå¶ã使ç¨çµåé®ä»¶è¿è¡ç§å¯çæ´æ°åæç« æ¨éæ¯æ²¡ææä¹çï¼RSS æ¯æ´èªç¶çéæ©ã强è¡å°è¿äºåè½åºç¨äºçµåé®ä»¶å¯è½ä¼å¯¼è´è®¸å¤é®é¢ãè¿äºé®é¢è®©æè§å¾ Newsletter å°±åä¸ä¸ªæ²¡æè½åä½å´æ¼å½æ³è¯æèªå·±çæ´åï¼æ æ³å¾å¥½è¾¾å°åå¸è
ææçææï¼åè¿åä¾µç¯äºç¨æ·çéæ©åæçã\n\n## äºå®ç½ª\n\n### å°ééå¶\n\nRSS æ¯ä¸ç§å¼æ¾åè®®ï¼å®å
è®¸ç¨æ·èªä¸»è®¢é
åæåæå
´è¶£çç½ç«ç RSS æºï¼è·åææ°çæ´æ°åæç« ï¼æ éä»äººç许å¯ãç¨æ·è¿å¯ä»¥éè¿é
读å¨ç个æ§å设置èªç±éæ©æéå
容ï¼å¹¶ä¸å¯ä»¥ä½¿ç¨å¤ç§æ¸ 鿥æ¶éç¥ï¼çè³å¯ä»¥ä½¿ç¨ Telegram Bot è¿è¡è®¢é
ã\n\n\n\nè Newsletter æ¯ç±åå¸è
æ¨éå°ç¨æ·ç§äººé®ç®±ç订é
ä¿¡æ¯ï¼æ´ä¸ªè¿ç¨ä¾èµäºå¹³å°æ¹ï¼æ¸ éå
¨ç¨å°éãè¿ç§å°éæå¤§å°éå¶äºç¨æ·çéæ©æï¼ç¨æ·è¢«è¿«å¨å¹³å°ç**许å¯ä¸**ï¼éè¿**ç¹å®æ¸ é**å**ç¹å®æ ¼å¼**æ¥æ¶**åºå®ä¿¡æ¯**ã\n\n### ç¹ç使\n\nç¸æ¯ä¹ä¸ï¼RSS æ´å ç®æ´é«æã订é
æºå¯ä»¥éä¸ç®¡çï¼åç±»ãæ¶èã订é
ååæ¶è®¢é
çè¿ç¨ä¹é常ç®åã\n\n\n\nè Newsletter åä¼å°åç§åæ ·çé®ä»¶æ··åå¨ä¸èµ·ï¼é叏忣ä¸é¾ä»¥ç®¡çãä½ å¾é¾ç¥éèªå·±å°åºè®¢é
äºåªäºå
容ï¼å®ä»¬ä»ä¹æ¶åä¼çªç¶åºç°ãèä¸ï¼å
å®¹æ ¼å¼ä¹æ¯åç§åæ ·çï¼æ¥çåé
读起æ¥éå¸¸æ··ä¹±ï¼æä»¥ä½ ä¹ä¸è½å°ä¸ç¯æç« è¿è¡æ¶èï¼æ´ä¸ç¨è¯´æ¹ä¾¿çç¬¬ä¸æ¹éæäºã\n\n### ä¿¡æ¯è¿è½½\n\nNewsletter å¾é¾å¯¹å
容è¿è¡ææåç±»åè¿æ»¤ï¼åä¸æææ£å¸¸é®ä»¶æ··åå¨ä¸èµ·ï¼éè¦è±è´¹ç²¾åæå¨æ´çãè¿å¾å®¹æå¯¼è´ä¿¡æ¯è¿è½½ååå¾é®ä»¶çé®é¢ã\n\nè RSS å¯ä»¥å¾æ¹ä¾¿å°è¿è¡åç±»åè¿æ»¤ï¼å¯¹äºä¸éè¦çå
容ï¼ä½ ä¹å¯ä»¥ä¸é®å
¨é¨æ 记为已读ç¬é´è§£è±ï¼å®å
¨æ²¡æååã\n\n\n\n\n\n### æ´æ°å¨æé¿\n\n对äºRSSçæ´æ°è½ç¶ä¸ç®å®æ¶ï¼ä½ä¸è¬ä»¥å°æ¶è®¡ï¼ç±»ä¼¼RSSHubçèªå»ºæå¡ï¼çè³å¯ä»¥åå°æ¯åéæ´æ°ãç¸æ¯ä¹ä¸, Newsletter çæ´æ°å¨æï¼ä»¥å¤©çè³å¨æè®¡ï¼ææ¾æ»åäºè®¸å¤ã\n\n### éç§åå®å
¨é£é©\n\nRSSç弿¾æ§ä½ç°å¨å®ä¸éè¦ç¨æ·æä¾ä¸ªäººä¿¡æ¯ï¼ä»èç¡®ä¿äºæ´å¥½çéç§æ§åå®å
¨æ§ãç¶èï¼Newsletter è³å°éè¦æä¾ä¸ä¸ªé®ç®±å°åï¼è¿å¢å äºæ°æ®æ³é²ææ»¥ç¨çé£é©ãæ´æçè
ï¼çµåé®ä»¶å¯è½å
嫿¶æé¾æ¥æéä»¶ã\n\n## 乿ä¸äºä¼ç¹\n\n尽管æå¯¹ Newsletter ç使åå±éæ§ææ¹è¯æåº¦ï¼ä½æä¹æ¿è®¤å®æå
¶ä¼ç¹ï¼å®çæµè¡ä¹æä¸äºåçæ§ï¼ç¹å«æ¯å¨åæ¹å¸åºçæ
åµä¸å¯¹äºä¸äºåå¸è
æ¥è¯´ãNewsletter å¯ä»¥è®©ä»ä»¬è·å¾æ´å¤çæ§å¶æåç¹å»çï¼å¯ä»¥æ´å®¹æç¥éæè°è®¢é
äºä»ä»¬çå
容ï¼å¹¶éè¿é®ä»¶éç¥æ´å¼ºçå°å¤èµ·ç¨æ·ç注æã\n\nç¶èï¼ç«å¨ç¨æ·çè§åº¦ï¼æå¿
é¡»æç¡®è¡¨ç¤ºï¼ææ´åç± RSSãæä¸æ¿æä»¥æ¾å¼èªå·±çéæ©æåæçæ¥è¿ååå¸è
çæ§å¶æ¬²ãå¨æçæ¥ï¼è·åä¿¡æ¯çæååºè¯¥ææ¡å¨æèªå·±æä¸ï¼èéå
¶ä»äººææºæãæä»¥ï¼æå¨è¿é对 Newsletter 说ä¸ã"},{"slug":"anime-2023-april","title":"4 ææ°çªå¤ªå¥½çäºï¼å¹çï¼","tags":[],"body":"<iframe style=\"border-radius:12px\" src=\"https://open.spotify.com/embed/playlist/0gF2xmTxiBKqtuKWsw2iZG?utm_source=generator\" width=\"100%\" height=\"152\" frameBorder=\"0\" allowfullscreen=\"\" allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\"></iframe>\n\nä»å¹´ä» 1 æå°±ä¸ç´æ²¡ä»ä¹å¥½ççä½åï¼å°äº4æçªç¶çåï¼è®©æé常æ¿å¨ãç°å¨æåºè¿åäºï¼æ¯æ¶å好好说说æåäº\n\n以ä¸å½ç¶ä¸è½åæ¬ 4 æææç好ä½åï¼å 为å®å¨å¤ªå¤äºï¼åªæ¯è¯´ä¸è¯´ç¬¦åæå£å³çå é¨ï¼ææä¸ªäººçåç±ç¨åº¦æ¥æåº\n\n以ä¸ä¼å
å«å¤§éå§éï¼è¿æ²¡ççå°ä¼ä¼´è¯·é
æ
è§ç\n\n## 鬼çä¹ååå æç¯\n\nåå ææ¯ä¸ºé¬¼æéé»é æ¥è½®åçåå 们å±
ä½çå°æ¹ï¼ä½ç½®åå
¶éè½ä¸é«åº¦ä¿å¯ï¼è¿é¨è®²çæ¯åå æè¢«ä¸å¼¦ä¹è·å天çåä¸å¼¦ä¹ä¼Â·ç壶æ¾å°å¹¶åå¨å·è¢ï¼æ£å¨åå æççæ²»éãææ±Â·çé²å¯ºèçãéæ±Â·æ¶éæ ä¸éã䏿»å·çå¼¥åªåä¿æ¤åå 们ï¼å¯¹æä¸å¼¦çæ
äº\n\nä¸å¼¦ä¹è·å天çè¿ä¸ªè§è²é常æè¶£ï¼æ¬ä½åå°åä¸ï¼é叏弱尿 å©åèå°ï¼æ»æè§åæ¯æ¥é人头ç\n\n ![[BeanSub&FZSD&LoliHouse] Kimetsu no Yaiba - 51 [WebRip 1080p HEVC-10bit AAC ASSx2]-0001](./attachments/bafybeietuj3qkd5jwoenjzt4xeosy7dxqp2rmlxh4ap3otziq7aprnwb6m.jpeg) \n\nä½å®é
ä¸é常æ®çªåèèï¼æ§å¶çå 个鬼ï¼è¿ä¸ç¥éä»ä»¬æ¯ä»ä¹å
³ç³»ï¼åãæãåãä¹ãæï¼é½é常强ï¼åè¿«æå¾è¶³ï¼æ¬ä½é²å¾¡å乿 æï¼è¢«å¤§å®¶æçéç ä¹ç 䏿»\n\n \n\nå¼¥è±åç表ç°ä¹å¾äº®ç¼ï¼é¬¼åå¼¥è±åè¶
å¸
\n\nhttps://twitter.com/DIYgod/status/1653023791759458307\n\n\n\n\n\nè¿æå¯ç±çèç\n\nhttps://twitter.com/DIYgod/status/1655603106464387079\n\nè½ç¶æ´ä½èå¥è¿æ¯ç¥æ¾ææ²ï¼ä½ç»è¿æ¸¸éç¯çæ´ç¤¼ï¼ææ¬èº«é¢æä¹å¾ä½ï¼ç®åå·²ç»è¿
318è¿è¶
åºäºæçé¢æï¼æææ¯ä¹åææ¾å°äºå¥½å¤ï¼ææä¹æ´å ççï¼çå¾é常ä¸å¤´\n\n\n\n\n\nåå 䏿æç²ä¸å æï¼è£ç»æçå¨ææ´»æå第ä¸å\n\n谢谢é£ç¢ç¤¾æ¬¾å¾
\n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 7 |\n| ç»é¢ | 10 |\n| ä¸ªäººå æ | 10 |\n\n## 为ç¾å¥½çä¸çç®ä¸çç°ï¼\n\nèåæé®é¢ç红éæç¬¬ä¸å¤©æä¸äºç
鿳叿
§æ
§çæ
äºï¼å欢çä¸è¥¿æ¯çè£éæ³ï¼ç¹ææ¯çè£éæ³ï¼å
´è¶£æ¯çè£éæ³ï¼å¯ä¸ççç±ä¹æ¯çè£éæ³\n\nhttps://twitter.com/DIYgod/status/1643718650392608779\n\næ
§æ
§å°æ¶å被ä¸ä½ä½¿ç¨çè£éæ³ç巍乳鿳叿æèç±ä¸äºçè£éæ³\n\n![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 01 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0008](./attachments/bafkreia2tjbppxq3wf27ku7ytzwtv77fdbpb7wz5vohtsu3t7cx7or2ooe.jpeg)\n\nè½ç¶çè£éæ³æä¸å®ç¨ä¸é¾ä»¥æçºµï¼æ¯åºäºåçæç¬éæ³ï¼âåªæå¦å¾ä¸çº§éæ³æè½ç¬å½ä¸é¢ãçè£éæ³ä¹æµä¸è¿æ¯æç¬éæ³ç½¢äºâï¼ä½æ
§æ
§è¿æ¯ä¸é¡¾å²ç¬ï¼ä¸ºäºç±å¥½èç¬èªåªå\n\n![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 01 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0002](./attachments/bafkreifdwsoilenz6g2xujt75g5qmxfb5cr6ngihw7ff7w755i3syw2deq.jpeg) ![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 01 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0147](./attachments/bafkreifixqofyang5qup7yqrgnnayg6rqknstm5xd6ahzdijlife7z6nbi.jpeg)\n\næåä½¿ç¨æææè½ç¹æ°å¦å°äºçè£éæ³\n\n> æ¯é»è²è¿è¦é» æä¹æ¼é»\n> èåèæä¹ç红å§\n> è§éçæ¶å»å·²ç»å°æ¥\n> å å
¥æ è°¬ä¹å¢ç\n> å½¢ææ å½¢ä¹ææ²\n> åºç°å§ï¼\n> Explosion!\n\n![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 05 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0055](./attachments/bafkreid4wj22fbwbhnlktle2ocedrtdea2cnamdhcmhtmsbikq432b4b7y.jpeg)\n\nhttps://twitter.com/DIYgod/status/1653819521034080256\n\nä¹åçå¤åºåé©ä¹å¾æè¶£\n\n![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 07 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0012](./attachments/bafybeiayozbqela7gvrxligsxsk7aipuwz5f26aqbxep7uf2ty2zsf274q.jpeg)\n\n![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 08 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0021](./attachments/bafybeibjfz26t4ygjzorm2ktl4xoyw4oohtuzcpcgtqc4a2sovebhotivm.jpeg)\n\nä¹åçã为ç¾å¥½çä¸çç®ä¸ç¥ç¦ï¼ã就被æ
§æ
§çä¸äºå¸å¼äºï¼ç»æå¨çº¢é乡åç°æ
§æ
§çä¸äºåªæ¯ä¸ä¸ªæ®éæ°´å¹³ï¼å°è±¡ææ·±çæ¯éæ³å¦æ ¡æéè¦çä¸èè¯¾æ¯ææåè¦æä»ä¹æ ·çä¸äºå§¿å¿\n\n![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 01 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0096](./attachments/bafkreifel7jvdcybkougjzghz5boyrs4v2wqfos7wunrahwkgvrjiy2pme.jpeg) ![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 01 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0094](./attachments/bafkreife535lqhho5qvfj33kljus3yw267wsh5zybfs6mbvmtnbymeu26y.jpeg) ![[Lilith-Raws] Kono Subarashii Sekai ni Bakuen wo! - 01 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]-0190](./attachments/bafybeia6okdapze2hapgshd64nf7pzp5zstoray3qiorlun274yyavchqe.jpeg)\n\n缺ç¹ä¹æ¯æçï¼ä½ç»ç©·äºç¹ï¼æä¸å°å´©åçå°æ¹ï¼æäºç»é¢è¿æ¯æºåºæçï¼ç¹å«æ¯æå å¨ä½ç»å
¨é½ä¸è¦é±ä¸æ ·ç 4 ææ°çªä¸æ¾å¾æ´æ¨äºï¼ä½è¿ç®è¯´å¾è¿å»ï¼ï¼åé¢è¿æä¸ªè¯´ä¸è¿å»çï¼\n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 8 |\n| ç»é¢ | 6 |\n| ä¸ªäººå æ | 10 |\n\n## 天å½å¤§éå¢\n\nå说çç²¾ç¾ä½ç»å°±æ¥äºï¼ä»ç¬¬ä¸éå°±è¢«éæ¼å°äºï¼ä¸è¦é±ä¸æ ·çä½ç»ï¼æ«æ¥åºå乿é¦å§æ
ï¼æµç
çææå®ç¾çè¿éï¼è½»æ¾æå¿«å ç®åçæ¶©æ¶©åä¸å¤±ç´§å¼ åºæ¿çæ°å´ææ§ï¼å°±åå®ç¾çèè¯æ åçæ¡ä¸æ ·ï¼åå¼å§è¿æ
å¿å¼å¤´è´¨éè¿äºé«äºåé¢ä¼ä¸ä¼è´¨éä¸éï¼ä½æ¯å®å
¨æ²¡æï¼\n\nhttps://twitter.com/DIYgod/status/1643618955406241799\n\nå§æ
è¿æ²¡æå®å
¨æç§ï¼ç°å¨ç¥éçæ¯æä¸ºåºå¢çæ¥æ¬æ æ¯çä¸ç§é£äººçæªç©èåï¼äººä»¬è°é¾å°çåçï¼è¿æä¸ä¸ªå·ç§° â天å½â ç乿é¦ï¼è¢«å®å
¨çå´å¢è¦çï¼éé¢ç§æåè¾¾ï¼è¢«åå
»çå©åä»¬çæ´»å¯è¶³\n\nå¢å¤å¾å±é
318©\n\n\n\nå¢å
ç似天å½ä½å§æ
æç¤ºäºæ´å¤§çå±é©\n\n![[SweetSub&LoliHouse] Heavenly Delusion - 05 [WebRip 1080p HEVC-10bit AAC ASSx2]-0006](./attachments/bafkreiad3gcq4cia7f7iot5hg4azctip2hitqtw4iqwqgmckmk5erj6mbm.jpeg) \n\nçæ´»å¨å¢å¤ç主è§çæµåæ©å被æä»åå¾å¤©å½å¯»æ¾åçæµé¿ç¸ä¸æ ·çäººï¼æé´éå°äºåç§åæ ·ç人\n\n䏿¿ç¸ä¿¡å¿åå·²ç»åææ²¡æäººæ§çæªç©èåçæ¯äº²ï¼è¯±éªè·¯äººåç»å¿ååï¼æå被å¿ååæçèåææ»\n\n ![[SweetSub&LoliHouse] Heavenly Delusion - 02 [WebRip 1080p HEVC-10bit AAC ASSx2]-0001](./attachments/bafybeiamfjgkkix3kym6runtvdfo6x3jsbjy5tz62bmf6cx47jtqplgoju.jpeg)\n\n梦æ³è·çä¸ç客人ç±ç±æ¥èµå¤§é±çé
åºå°èæ¿ï¼ä¹ä¼è·éªå强çåä½è¯±æåé©è
\n\n \n\nå人ä½å®éªçå·è¡å»çï¼ååªæ¯ä¸ä¸ªä¸ºäºè®©å¦»åå¯ä»¥ä½ä¸ºäººç±»æå°ä¸¥æ»å»çç´æ
ç·ï¼æåè®©å¦»åæ»å»åæ±ç妻åçå°¸ä½èªæ\n\n  \n\nè乿£ä¸¥è¯å对人ä½å®éªç伦çç»ç»é¦é¢åªæ¯ä¸ºäºç»å»çä¸å奿¢å¤ºèµæº\n\n ![[SweetSub&LoliHouse] Heavenly Delusion - 08 [WebRip 1080p HEVC-10bit AAC ASSx2]-0013](./attachments/bafybeid4lemdygg2lr5e2mllqss4664777sms67se52d2zwliqs4ezpq5u.jpeg)\n\næ¯ä¸ªäººé½è½è¢«ä¸é¿çç¯å¹
å»ç»å°å¦æ¤é²æ´»ï¼å¨è¿æ ·çåºåä¸çï¼åªåè°é¾ä¸æ©ææ®µå°æ´»çï¼å³ä½¿ç½ªå¤§æ¶æä¹è½è®©ææ·±æ·±çè§£ï¼æå°åæ
åææ\n\n让æå¯¹å¶ä½ç»ç®ä¸æå¤§çæ¬æï¼å¦ææé¤ä¸ªäººå ç´ ï¼è¿é¨ä½åå°æ¯é¥é¥é¢å
ç 4 æé¸æ\n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 10 |\n| ç»é¢ | 10 |\n| ä¸ªäººå æ | 5 |\n\n## å°ç±ä¹\n\nå¨å¾·å·å¹åºæ¶æï¼æä¸ä¸ªé²è±éå°ï¼è´è¶ç¿©é£çå为âç¥ä»å²âçå°æ¹ï¼åå¾è¯¥å²çè°æ¥éåªææå°æ°çæ®è¢åé²è±è½å¤éçå°è¹æ¼æµåæ¥\n\næå¼ºæ»åç¯å¿è
ç»ç丸ä¸å¤åäººå±±ç°æµ
å³å«é¨ä½åä¸åè¢«æ´¾å¾æ¤å²ï¼å¯»æ¾ä¸è䏿»çä»è¯ä»¥æ¢åæ ç½ªéæ¾ï¼å¹¶å¨å²ä¸ä¸æªç©ä»¥åå
¶ä»æ»åç¯äºç¸æ®æ\n\nhttps://twitter.com/DIYgod/status/1643976154435694594\n\néé¢çæªç©æ¯è¿æ ·çç»é£\n\nç¶ç¥\n\n  ![[BeanSub&FZSD&LoliHouse] Jigokuraku - 05 [WebRip 1080p HEVC-10bit AAC ASSx2]-0035](./attachments/bafybeifn46n6cc5hzl5u7wm4zzlwckuyda4fdvbazc5es3swsy3a4yf7ii.jpeg)\n\n天ä»\n\n![[BeanSub&FZSD&LoliHouse] Jigokuraku - 07 [WebRip 1080p HEVC-10bit AAC ASSx2]-0032](./attachments/bafybeiah5azf7vh3ie2eg4lehw2bvnmbuxh2xvjl7pij24byabbbjxthey.jpeg)\n\nè¢«å¤©ä»æå°ä¼è¢«ç¼æä¸¹\n\n![[BeanSub&FZSD&LoliHouse] Jigokuraku - 07 [WebRip 1080p HEVC-10bit AAC ASSx2]-0031](./attachments/bafybeib4nu3c5j2elcfexkxstcetc6sv4csvvr4dup5rptcgs5qtskzovu.jpeg) ![[BeanSub&FZSD&LoliHouse] Jigokuraku - 05 [WebRip 1080p HEVC-10bit AAC ASSx2]-0033](./attachments/bafybeiapymxr6dxgyka2h3triktwup3rnrxl6vezkgymy25wmfwup2rb2m.jpeg)\n\né常诡å¼èè¯\n\næ¯ä¸ªæ»åä¹é½æèªå·±çæ
äºï¼å¹¶ä¸æ¯é»ç½åæï¼ç»åé½å¾æè¶£\n\n \n\nè¿åºç°äºä¸ä¸ªæªåèè\n\n\n\nä»è¯åå°å²ççç¸ä¾ç¶ææè¿·ç¦»ï¼åé¢è¯å®è¿ä¼ææ´è¯¡å¼æ´å¼ºå¤§çæªç©ï¼å¾æå¾
\n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 8 |\n| ç»é¢ | 8 |\n| ä¸ªäººå æ | 0 |\n\n## ãææ¨çå©åã\n\nå¦ç§ç·å»çåæ©é女ç
人éé¾è½¬ç为èªå·±åæ¨å¶åæéç±çåèèå©åé¿åºäºå鲿¯ï¼ä¸å¹´åæéç±è¢«å®³èº«äº¡ï¼é¿åºäºç«å¿å¯»æ¾æ¯äº²é害ççç¸åçå¶ï¼é²æ¯æ¢¦æ³çæä¸ºæ¯äº²é£æ ·çå¶åï¼å
妹åºå¯¹æ¼èºåçåç§çº·äºåé´è°\n\nä¸ä¸ªå¤å°æ¶çé¦é太æåäºï¼åçäºä¸é¨çµå½±ï¼æè§å¾å¯ä»¥ç®å¾ä¸ 4 ææä½³åéäº\n\nhttps://twitter.com/DIYgod/status/1646495376919101441\n\nä½å¯è½æ¯å¼å¤´è°èµ·å¤ªé«äºï¼æå¾
乿å¾å¾é«ï¼åé¢å éç¥æ¾å¹³æ·¡äºä¸ç¹ï¼ä¼°è®¡æ¯é«ä½é«çèå¥ï¼ç°å¨æ¯æå¤
318§æä¸ï¼æå伿ä¸ä¸ªè¶
æäººåççç»å±ï¼åå¤å¥½çº¸å·¾äº\n\nè½ç¶å¦æ¤ï¼ä½å¦æä¸é´ä¹è½åå¤ç»æéç±ä¸äºç»é¢å°±æ´å¥½äº\n\n\n\nå¦å¤å®ç OP ä¹è¶
好å¬ï¼æåæ²å¾ªç¯äºå¥½å 天\n\n<iframe style=\"border-radius:12px\" src=\"https://open.spotify.com/embed/track/7ovUcF5uHTBRzUpB6ZOmvt?utm_source=generator\" width=\"100%\" height=\"152\" frameBorder=\"0\" allowfullscreen=\"\" allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\"></iframe>\n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 7 |\n| ç»é¢ | 7 |\n| ä¸ªäººå æ | 0 |\n\n## æå®¶çè±é\n\n> ç¼ç±ç¬ç女é¶è±çå¾®ä¸è¶³éä¸çæâ§é¸æ å²éï¼æå¤©å 为工ä½å
³ç³»åå¼å§ä¸ä¸ªäººçæ´»çé¶è±ç¸çº¦è§é¢ï¼å´åç°å¥¹è¸ä¸æè¢«æ®´æçç迹ãå¨åå®¶çè·¯ä¸ï¼å²éçè§äºåæ¯ç¯äººçç·äººï¼å¹¶å°¾éå¨å
¶å¾ãé天å·å·åå°å¥³å¿çå
¬å¯ï¼ç»æå´åçäºä½¿æ´ä¸ªå®¶åºçå½è¿ä¸ºä¹ä¸åçäºä»¶ãç¶äº²ä¸ºäºå¥³å¿ã为äºå®¶åºï¼èµ°ä¸äºä¿®ç½ä¹éã髿½®è¿èµ·çæ¬çæ
äºå¼å¹ã\n\n\n\nå§æ
å¾ç²¾å½©ï¼ä½å¶ä½é常éå¸¸è´«ç©·ï¼æºå¯æçï¼å°±æ¯åæè¯´ç说ä¸è¿å»çé£ä¸ª\n\n好å¨å§æ
åºåé常强ï¼ååå¾çå¶ä½ä¹è½æåå°æºå¼ºçç´§å¼ æï¼ä¹è½æç鼻忴¥æ´¥æå³å°çä¸å»\n\n就䏿ªå¾äºï¼ç»é¢å®å¨çä¸ä¸å»\n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 8 |\n| ç»é¢ | 1 |\n| ä¸ªäººå æ | 0 |\n\n## å¶åå¤§å¸ ç°å§å¨å¥³å© U149\n\n> 讲述ä¸ç¾¤å°å¦çå¶å卿©ææ²¡æå¶ä½äººã没æå·¥ä½çæ
åµä¸ï¼ä»ç¶ä¸æ¥æ¥åçæ¢¦æ³åè¿çæ
äºã\n\nå
¶å®ä¹æ²¡ä»ä¹å§æ
ï¼å°±æ¯è¿å®¶å®¶... 使¯å¾å¯ç±ï¼é常å\n\n    \n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 1 |\n| ç»é¢ | 9 |\n| ä¸ªäººå æ | 0 |\n\n## è·å¨éæ¥\n\n> 岩ä»ç¾æ´¥æªä»ä¹¡ä¸çå°åä¸ï¼ä»¥ç¬¬ä¸åçæç»©èå
¥äºä¸äº¬çé«åå¦çé«ä¸ã\n> è¿ä½ä¹¡æç¥ç«¥å¿æå®ç¾ç人çèå¾ãç¬èªæ¥å°ä¸äº¬ã她æç»©ä¼å¼ï¼å´ä¸ä»äººæçç¬ç¹çè·ç¦»æï¼ç¨æ¾æ ¼æ ¼ä¸å
¥ã\n> 她è½ç¶å¶å°ä¼å¤±è´¥ï¼ä½è¿æ¯åå天ççæ§æ ¼ä¸ç¹ç¹æå¨çä¸çåå¦ï¼ä½¿ä»ä»¬é£åä¸ç¸åçæ§æ ¼éæ¸äº¤å ã\n> ç¸éãç¸ç¥ãæç»å¿æç¸éã\n> 人人é½ä¼æå¿ç¦åç¦èºä¹æ¶ãèæ å¯æ¿ä»£çæåï¼å®å°å¸¦æ¥äºç¸çè§£ç奿ºã\n> è¿æ¯ä¸ªå¶ææé³å´è½è®©äººä¸ç¥ä¸è§å¿«ä¹èµ·æ¥çæ ¡åçæ´»åå§ï¼\n\n\n\nä¸ç®¡æ¯ç»é¢è¿æ¯å§æ
ççé½å¾èæï¼ä½åæ¬èº«æ¯é常æ£çï¼å欢ï¼ä½è¿ç§å¹³æ·¡å§æ
䏿¯æå欢çç±»åï¼åªè½ç®åå¹ç\n\n| ç±»å« | è¯å/10 |\n| -------- | ------- |\n| å§æ
| 8 |\n| ç»é¢ | 8 |\n| ä¸ªäººå æ | -5 |\n\n## å
¶ä»\n\nå¦å¤è¿æãæºå¨æå£«é«è¾¾ æ°´æçé女ããæå¿éå±é©çä¸è¥¿ããæ¾å¦å失ç çä½ ã乿¯ææ£å¨è¿½çï¼ä½æå¹³æ¶è½ççªçç©ºé²æ¶é´æ²¡é£ä¹å¤ï¼è¿å é¨è¿åº¦è¿æ²¡è·ä¸ï¼çæå
¨çå®å¯è½ä¼åä¸ç¯ 4 ææ°çªçæ»ç»ï¼ææºä¼å°æ¶ååä¸èµ·è¯´\n\næåç¥å¤§å®¶è¿½çªæå¿«ï¼ç©çå½ä¹æ³ªä¹ä½ä¹ä¸è¦å¿è®°è¿½çªå¦ï¼"},{"slug":"webworker-xlog","title":"å xlog.app çä½è
DIYgod èåºåé¾åå客平å°ãå端å¦ä¹ åçæ´»ææ","tags":[],"body":"æ°ä¸ææå®¢æ¥å¦ï¼æ¬ææä»¬é请å°äº xlog.app èåçä½è
DIYGOD ä¸èµ·èèä»åçåºåé¾å客平å°ï¼ä»¥åèåçéåèéåæè¶£çæ
äºãé¤äºç§æ®èåç¨ç web3.0 ææ¯ç»èï¼æä»¬è¿å¯¹éåè¿è¡ä¸çªå¤§è®¨è®ºï¼ä¹å¯¹ yy çä¸ªäººçæ´»åå¾ä¸å·²ï¼æ¬¢è¿æ¥ xlog ä¸èµ·åå客ï¼å¬æå®¢ï¼
318"},{"slug":"software-update","title":"æå¾äºè½¯ä»¶æ´æ°å¼ºè¿«ç","tags":[],"body":"æå¿
须让身边ææè½¯ä»¶é½ä¿æææ°çæ¬ï¼å°±åèµ°è·¯ä¸è½è¸©å°å°ç ç¼ç¼ä¸æ ·ï¼æ²¡ææä¹ï¼ä½ä¹å±å®³ä¸å¤§ï¼æä»¥ææ¾ä»»å®åå±\n\n<div style=\"display: none\">\n\n\n\n</div>\n\n## æä½ç³»ç»ååºä»¶\n\næåºç¡çï¼å¤§å°ä¸»åç产å MacBookï¼å°å°åç°ç Dockcase æ©å±åï¼é½è¦æ´æ°ï¼è¿æ¯æç Checklistï¼åºæ¬ä¸é æ´æ°æéå°±å¤äº\n\n<div class=\"os-screenshots\">\n\n| è®¾å¤ | æªå¾ |\n| --------------- | ------------------------------------------------------------------------------------------------------------- |\n| MacBook |  |\n| NAS |  |\n| è·¯ç±å¨ |  |\n| iPad |  |\n| iPhone |  |\n| å°ç±³æç¯ |  |\n| å°ç±³å®¶å±
|  |\n| ç¸æº |  |\n| PS5 |  |\n| Switch |  |\n| Dockcase æ©å±å |  |\n\n</div>\n\n## åºç¨\n\næä½ç³»ç»ä¸çåºç¨ä¹éè¦æ´æ°\n\n### MacBook\n\nHomebrew Cask åºç°ä¹å macOS çåºç¨æ´æ°ä¸ç´æ¯ä¸ä¸ªé¾é¢ï¼App Store çèªå¨æ´æ°æå¥½ç¨ä½æ¯åºç¨å¾å°ï¼æ¾ç»å°æ°äºæå¾ä¹
ï¼ä½ç°å¨æ²¡é®é¢äº\n\n对 macOS çåºç¨æç§æè¿æ ·çååï¼\n\n- 第ä¸é¡ºä½ Web çï¼æ¯å¦ï¼DiscordãSlackãTelegramãSpotify\n- 第äºé¡ºä½ App Store ç\n- 第ä¸é¡ºä½ Homebrew\n- 餿¤ä¹å¤ä¸å®è£
\n\nå
¶ä¸ Web çä¸éè¦æ´æ°ï¼App Store ä¼èªå¨æ´æ°ï¼Homebrew åªéè¦æ¯å¤©æ§è¡ä¸å½ä»¤\n\n```sh\nbrew update && brew upgrade && brew cu -a -y && brew cleanup\n```\n\nä½ App Store ææ¶åä¼å¥½å 天æè½èªå¨æ´æ°ä¸ï¼è¿ä¸è½å¿ï¼å®è£
ä¸ [mas](https://github.com/mas-cli/mas/) ç¨å½ä»¤è¡è§¦åå¼ºå¶æ´æ°ï¼åå ä¸é¼ 须管çè¯åºæ´æ°å aliasï¼ä¸é¢å°±æ¯æçæ»å½ä»¤äº\n\n```\nalias up=\"brew update && brew upgrade && brew cu -a -y && brew cleanup && mas upgrade && ~/plum/rime-install iDvel/rime-ice:others/recipes/full\"\n```\n\n \n\n### NAS\n\næä¸¤é¨åï¼ç¾¤æçå¥ä»¶ä¼èªå¨æ´æ°ï¼Docker é¨åç¨ [Watchtower](https://containrrr.dev/watchtower/) èªå¨æ´æ°\n\n\n\n### å
¶ä»\n\niPad å iPhone åºç¨è½ç¶ä¹ä¼èªå¨æ´æ°ï¼ä½ä¹æ¯ç»å¸¸å¥½å å¤©ææ´æ°ï¼æä»¥æ¯å¤©æ©ä¸èµ·åºç¬¬ä¸ä»¶äºå°±æ¯æå¨å·ä¸ä¸è¿ä¸¤ä¸ªçæ´æ°ï¼å
¶ä»ä¸é£ä¹å¸¸ç¨ç设å¤å°±çæéæèªå¨æ´æ°ï¼è¿ä¸ªè¿æ¯è½å¿çï¼æ¯ç«æç强迫çè¿æ²¡é£ä¹ä¸¥é\n\n## æä»¶\n\nåºç¨å
çæä»¶ä¹éè¦æ´æ°\n\n### æµè§å¨\n\né常ä¼èªå¨æ´æ°ï¼ä½ä¹æéå°å¡ä½å 天齿²¡æ´æ°çæ
åµï¼è¿ä¸æ¯å¾æï¼å¶å°ä¼å»æå¨ç¹ä¸ Updateï¼è¿äºæ¯æç®åç¨å°çæµè§å¨æä»¶\n\n\n\n### Obsidian\n\nObsidian ç community plugins å themes é½éè¦æ´æ°ï¼å®æ¹æ²¡æèªå¨æ´æ°çæ¹æ³ï¼å¯ä»¥éè¿åè£
ä¸ä¸ªæä»¶ [Beta Reviewers Auto-update Tester](https://github.com/TfTHacker/obsidian42-brat) æ¥å®ç°èªå¨æ´æ°ï¼è¿äºæ¯æç®åç¨å°ç Obsidian æä»¶\n\n\n\n### VS Code\n\nVS Code æå¾å¥½çèªå¨æ´æ°ï¼è¿äºæ¯æç®åç¨å°ç VS Code æä»¶\n\n \n\n### Home Assistant\
318n\nHome Assistant 就没é£ä¹é¡ºå©äºï¼æè£
äºä¸ä¸ª Home Assistant Community Store(HACS) æ¥è·åæ´å¤çéæï¼ä½å®æ²¡æèªå¨æ´æ°ï¼ä¹æ²¡ææ´æ°æéï¼è¦ç¹è¿å»æè½çå°\n\n\n\n## 项ç®ä¾èµ\n\n项ç®çä¾èµä¹éè¦æ´æ°ï¼æç¨ Dependabot æ¥èªå¨æäº¤ä¾èµæ´æ°ç prï¼å¯¹äºæå®åèªå¨åæµè¯ç项ç®ï¼æ¯å¦ RSSHubï¼å°±å¯ä»¥åç¨ [Github Action Merge Dependabot](https://github.com/fastify/github-action-merge-dependabot) èªå¨åå¹¶ï¼ä¸ç§é½ä¸ç¨å¤ç\n\n```yml\nautomerge:\n if: github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'\n needs: [jest, puppeteer, docs, all]\n runs-on: ubuntu-latest\n permissions:\n pull-requests: write\n contents: write\n steps:\n - uses: fastify/github-action-merge-dependabot@v3\n with:\n github-token: ${{ secrets.GITHUB_TOKEN }}\n target: patch\n```\n\n## Changelog\n\né»é»æ´æ°ææ¶åè¿æ¯ä¸å¤çï¼å¯¹ä¸äºéè¦æè
æå
´è¶£ç软件æä¼ç¨ RSS 订é
å®ä»¬ç Changelogï¼åæ¶äºè§£å®ä»¬é½æ´æ°äºä»ä¹\n\n\n\nç®åæ³å°çåªæè¿äºäºï¼ä¹ æ¯äºçè¯æ£æ¥ä¸éå¾å¿«çï¼å°±è½æ¢æ¥ä¸æ´å¤©çèé\n\nä¸è¦å¦æï¼å³ä½¿å¦äºä¹ä¸è¦è¯´æ¯ææç\n\n<style>\n .os-screenshots thead th:first-child {\n width: 10px;\n }\n .os-screenshots td > span {\n height: 100px;\n display: flex;\n align-items: center;\n overflow: hidden;\n }\n @media (min-width: 640px) {\n .os-screenshots td > span {\n height: 200px;\n }\n }\n .os-screenshots td > span > span {\n height: auto;\n }\n</style>"},{"slug":"dystopian-anime","title":"令æçå¿çä¸é¨å乿é¦å¨æ¼«","tags":[],"body":"<div style=\"display: none\">\n\n\n\n</div>\n\n> è¯·æ¬£èµ ãDIY çå¤ºå½æåã\n\n<iframe style=\"border-radius:12px\" src=\"https://open.spotify.com/embed/playlist/1dkOjgIAuwxIG75v6QyrpN?utm_source=generator\" width=\"100%\" height=\"352\" frameBorder=\"0\" allowfullscreen=\"\" allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\"></iframe>\n\nåæå¯¹æèè¨æ¯ä¸ä¸ªå
满æ²ä¼¤çæä»½ã尽管ãåææ¯ä½ çè°è¨ãå·²ç»è¿å»äºå¾å¤å¹´ï¼ä½æ¯å½çå°ãåæãè¿ä¸¤ä¸ªåï¼ä»ä¼ç«å»è§¦åæç PTSDï¼åå ä¸ä»å¤©æå读å®ä¸æ¬å乿é¦é¢æçå°è¯´ãæ¥èªæ°ä¸çããå¤ç§æç»ªç³
æå¨ä¸èµ·ï¼è®©æä¸ç¦åæ³èµ·äºé£äºä»¤æçå¿çãéé级ãå乿é¦å¨æ¼«ã\n\n## DARLING in the FRANXX\n\n> â妿æå¨ç»æ¯ä½è¶³ççè¯ï¼è¿é¨å¨ç»å¤§æ¦å°±æ¯æ¥æ¬å½å®¶éäºï¼å°±æ¯æ®éä¸çè¶³çç人ä¹ä¼æå¾
æ¥æ¬éç表ç°ï¼ä¹ä¼å»è°è®ºè¶³çï¼æä»¥å¸æèªå·±çå¨ç»ä¹è½è¢«è¿æ ·å¯¹å¾
ãä¸ååé¦ç»æ¦å²çç²ä¸ãTRIGGERçç²ä¸ãA-1çç²ä¸è¿äºå¹³æ¶çå¨ç»çè§ä¼ï¼å¸æå¹³æ¶ä¸çå¨ç»çè§ä¼ä¹è½äº«åè¿é¨ä½åãâ â é¸ç¾½æ´å
¸\n\nå¶ç人çè¿çªè¯ä¸ç¹ä¹ä¸å¤¸å¼ ãè¿é¨å¨æ¼«çå¶ä½éµå®¹æä¸ºè±ªåï¼éç»äºä¸çç大佬å顶级声ä¼ï¼å æ¤å¨å°æªæåºä¹å就被ææäººå¯äºåæï¼ä»¥è³äºè¿æ²¡æåºå°±å·²è¢«æ¨ä¸ç¥åã\n\nç¶èï¼ç¥ä½çé路并é顺å©ãä»ç±å¥èºåBç«ç鏿äºå¤ºï¼å°é©¾é©¶å§¿å¿å¼åç女æäºè®®ï¼æåå¨ B ç« UP 主 Lexburner çå£å¨å群ä¼çæ¶æä¸¾æ¥ä¸è¾¾å°é«æ½®ï¼èµµå¼¹æ¥è¢ã\n\n<div class=\"full-image\">\n\n\n\n</div>\n\nè¿äºåå²èæ¯ç°å¨çæ¥å
¶å®é½ä¸å¼ä¸æï¼åªæ¯è¯´æå½æ¶çç度åäºè®®ä¹é«ãæ¯ç«æåè¿æ¯ç¨ä½å说è¯ï¼èè¿é¨ä½åç®ç´å¤ªç¬¦åæçå£å³äºï¼å乿é¦çèæ¯ãæ´»æ³¼å¯ç±æç ´å¸¸è§ç02ãæ°å°å¥½å¤çæ¶©æ¶©ãç§å¹»ãé¬¼ãæ¬ç...\n\n<div class=\"full-image\">\n\n\n\n</div>\n\n彿¶çæè¶ä¸æé¥ä¸æ³ï¼å¨ä¸å£°å£° Darling Darling ä¸éæ¸è¿·å¤±äºèªæï¼æ¯å¨å°±æç Darling æ´»äºï¼ææå客䏻颿¹æäº Darling çé
è²åé
å¾
318ï¼å¤´åååå乿¢æäºDarlingï¼ä¹°äºæåãç»åä¸åè½ä¹°çå¨è¾¹ï¼çè³å¦çç»ç»ä¸é¨ä¸´æ¹ 02ï¼é¢äººå°±å¹çï¼åªè¦çäº Darling æä»¬å°±æ¯å¥½æåç§ç§\n\n\n\n\n\nååè¿ç¥æ¥å°±æ¯æ¨ç»äººå¯°ççå°¾äºï¼å°±åååºå¼ææ¶çè½°è½°çç䏿 ·ï¼çå¾ä¹å½»å½»åºåºæ²¡æä»»ä½ä½å°ï¼ä½å¯è½æ¯å¤§è对强çåºæ¿çèªæä¿æ¤ï¼æç°å¨å·²ç»ä¸å¤ªè®°å¾å½æ¶çå
·ä½æ
æ¯äºï¼åªè®°å¾ä¸ä¸ªå·¨å¤§çè±å«æå¤å©æ¢¦...\n\nè¿é¨ç±å¦æ¤è±ªåçå¶ä½å¢éæé çä½åï¼ç«ç¶å¦æ¤ä»¤äººå¤±æãè³ä»æä»æ æ³çè§£ã\n\n## 约å®ç梦幻å²\n\nä¸å¹´åï¼æååç°äºä¸é¨ç»èµçå乿é¦çªå§\n\n<div class=\"full-image\">\n\n\n\n</div>\n\n卿å¹çã约å®ç梦幻å²ã第ä¸å£çæ¶åå°±æäººæéæï¼Darling 尸骨æªå¯ï¼ä½ æä¹æ¢ãæå´ä¸ä»¥ä¸ºæï¼è®¤ä¸ºè¿åªæ¯å·§åãæ¯ç«ï¼æ¢¦å¹»å²æ¯æ ¹æ®å¹¿å好è¯çæ¼«ç»æ¹ç¼çï¼æçåå®çå§æ
åºç¡ï¼ä¸ååå¨ç» Darling æ ¹æ¬ä¸è½ç¸æå¹¶è®ºï¼ç¬¬ä¸å£æå®æè¿æ²¾æ²¾èªåï¼çï¼è¿æ¬¡æ²¡äºå§ã\n\nç¶èï¼ä¸¤å¹´åï¼ç¬¬äºå£å¼æäºã\n\næä»ç¶æ¸
æ°å°è®°å¾å弿æ¶ï¼æåå¨çµèåæ¿å¨å°ç¬¬ä¸æ¶é´è§çãç¶èï¼è¶çè¶è§å¾ä¸å¯¹å²ãå°äºç¬¬åéï¼å§æ
å·²ç»æ æ³æ½åã忥æå强æçé¼»ååçäºå éï¼ä½åç°æçæå¿åå®å¨ä¸è¶³ä»¥æ¯ææç»§ç»è§çã\n\næçè¯´ï¼æ¼«ç»å·²ç»å徿åï¼å§æ
䏿é®é¢ï¼ç¬¬ä¸å£å¨ç»ä¹è·å¾äºå¥½è¯ï¼æ¥æå¹¿æ³çç²ä¸åºç¡ãåªè¦æé¨å°±çå°å¶ä½ç¬¬äºå£ï¼ç»å¯¹ä¼æä¸ºå¦ä¸é¨ç¥ä½ãç¶èï¼å¨ç»å§æ
å´ç æäºè®¸å¤ååæ¡¥æ®µï¼æ¢ä¸äºæ¯«æ é»è¾çç¼å§æç¼ç»çå§æ
ãå®å¨é¾ä»¥æ³è±¡å¶ä½è¿ç¨ä¸ç©¶ç«åçäºä»ä¹ã\n\nè¿å¥½ï¼åæææ¾ç巨人稳å¾å¾ï¼è®©ææ²¡æè¿äºæ²ä¼¤ã\n\n\n\n## è¿å»ç巨人\n\nè¿æ¯ä¸é¨æä» 2013 å¹´ä¸ç´å¹å° 2022 å¹´çä½åã\n\n\n\n\n\nä½ä¸ºä¸é¨èª 2013 年就弿ç卿¼«ï¼ãè¿å»ç巨人ã卿æå¨æ¼«ä¸ä¸ç´æ¥ææé«çå°ä½ï¼å ªç§°å
è级åå¨ã许å¤äººæ£æ¯ä»è¿é¨ä½åå¼å§å
¥åç卿¼«ï¼å®æ¯å¾å¤äººçâå¯èâä½åï¼ä¹æ¯ææåæ¨èç»åå°è§çç第ä¸é¨å¨æ¼«ãè¿é¨å¨æ¼«ä¹æ¯æ ¹æ®æ¼«ç»æ¹ç¼çï¼ä½ä¸æ¢¦å¹»å²ä¸åçæ¯ï¼å
¶å§æ
ã设å®ã丰å¯åº¦åç度é½é«åºå¥½å ä¸ªå±æ¬¡ãæ´éè¦çæ¯ï¼æ¥ææç»å£å¶ä½ç MAPPA å
¬å¸å¨è´¨éåå£ç¢ä¸é½ç»å¯¹ä»¤äººæ¾å¿ï¼ä¸ä¼åºç°æ¢¦å¹»å²é£æ ·çé®é¢ãå®çå§æ
è¿è½½äºé£ä¹é¿æ¶é´ï¼ä¹
ç»æ¶é´èéªï¼ä¹ä¸ä¼åºç° Darling çæ
åµï¼å æ¤æä¸ç´ä¿¡å¿æ»¡æ»¡å°æ¾å¿å¹çã\n\nç¶è忥çäºæ
许å¤äººé½ç¥éäºï¼å¨ç»å²ä¸ç©ºåç»åçæ¶å£äºä»¶åçäºãè¿ä¸æ¯æ¶æï¼ä¸æ¯å¼ç©ç¬ï¼æ´ä¸æ¯çå°¾ï¼èæ¯ä¸ä¸ªå
æ»¡ä»æ¨ã对ç±ãæ£ä¹ååå¹³ç人类主æµä»·å¼è§ææææçç²¾ç¥åæä½è
ï¼å¯¹åç±ä»åä»çä½åçè§ä¼è¿è¡äºæ·±æçèãèè°å·²ä¹
çæç«¯æ¶æä¼¤å®³ãåï¼\n\n\n\n\n\n\n\n\n\nè½ç¶å·²ç»è¿äºå¾ä¹
äºï¼ä½æè¿æ¯ä¹
ä¹
æ æ³å¹³éï¼ææ¨åï¼ä¸ä»
ä»
æ¯çå¿ï¼æ´æ¯å¬çå齿ç仿¨ã\n\n<div class=\"full-image\">\n\n\n\n</div>\n\n## å
¶å®\n\n\n\n\n\n\n\n\n\n<div class=\"half-image\">\n\n\n\n</div>\n\nå½ç¶ï¼è¿äºåªæ¯ç©æ¢ã\n\næåï¼çè¯ç¥æ¿åææ°çªå¼é¨å¤§åãä¸å顺å©ï¼\n\n<style>\n.full-image span {\n max-width: 100% !important;\n}\n.half-image span {\n max-width: 563px !important;\n}\n</style>"},{"slug":"do-you-want-to-dance","title":"ä½ ä½ ä½ ä½ è¦è·³èåï¼","tags":[],"body":"<div style=\"display: none\">\n\n\n\n</div>\n\n<div style=\"position: relative; padding-bottom: 56.25%; height: 0px;margin-bottom:20px;\">\n<iframe style=\"position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;\" src=\"//player.bilibili.com/player.html?aid=499541297&bvid=BV1pK411K7J9&cid=234657690&page=1&autoplay=false\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"> </iframe>\n</div>\n\nå¾®å°å¾®ä¸ç´æ¯ææå欢ç UP ä¸»ï¼æ²¡æä¹ä¸ã\n\nè®°å¾å
¥å使¯ [ãå¾®å°å¾®ã鬼çèè¹ æ±åç®é©ååéäº ï¼çº¯å±å¥½ç©ï¼](https://www.bilibili.com/video/BV1vs411Q7m3/)ï¼ç¶ååçäºä¸äºç¾è»çâ广åºèâï¼å°±æ¯å¨å¤§åºå¹¿ä¼ä¸è·³ç¾è»çèè¹ãçå¾®å°å¾®çè§é¢æä¸ä¸ªé¶æ®µï¼åå¼å§å¤§èä¼ç¬é´è¢«ç¯ç溢åºçå¿«ä¹ççå²å»ï¼
318å¼å§å´è§ä¸æ¬ï¼ç¼ççªå¤§ï¼çæºè¢«å¿«ä¹å æ®ï¼ç¶åæ¯ç¾è»ï¼å¤§èå¨é¢¤æææææï¼æ®åççæºè®©ä½ ç¾è»å¾æ³å
³æè§é¢ï¼ä½è¿æ¶åå·²ç»æäºï¼èº«ä½æ æ³æ¿åçè¶
éå¿«ä¹è®©ä½ æ æ³è¡å¨ï¼è®©ä½ ç»§ç»â人çä¸ææ¼«é¿çä¸åéâï¼æåè§é¢ç»æï¼ä½ ä¼éæï¼ä¸ºä»ä¹ï¼ä¸ºä»ä¹ä¼å¨å¤§åºå¹¿ä¼åè¿ç§äºï¼ä¸ºä»ä¹ä¼è¿ä¹ç¾è»è¿ä¹å°´å°¬ï¼ä¸ºä»ä¹æçå®äºï¼ä¸ºä»ä¹æè¿ä¹å¿«ä¹ï¼\n\nç¶èå½±åè¿æ²¡æç»æï¼ä½ ççæ´»å¨æ½ç§»é»åä¸è¢«æ²»æäºï¼è½ç¶æ²¡ææè¯å°åçäºä»ä¹ï¼ä½ä½ 对çç±çäºç©å¤äºä¸ç¹åæ°ï¼å¯¹çæ´»å¤äºä¸ç¹çæ
ï¼è¿æç®ä»æ¹æäº âåä»£ç æ¯çç±ï¼åå°ä¸çå
满ç±ï¼âï¼åè¿ç¥æ¥ï¼åæ¥æ¯å¨ç¬¨ææ¨¡ä»¿å¾®å°å¾®çç®ä» âè·³èæ¯çç±ï¼è·³å°ä¸çå
满ç±ï¼âï¼å¾®å°å¾®æèè¹åå¿«ä¹è·³å°äºä¸çåå°ï¼ä½ ä¹å弿ºé¡¹ç®å¸®å©å°äºä¸çåå°ç人ã\n\nçæ¯ä¸ªç¾å¥½çæ
äºï¼ç°å¨ç»æäºä¹ï¼ï¼æ¯çè¯ä¹ä¸ä¼æä»å¤©çæç« äº ð¤£\n\nè¿ä¹èªä¿¡é³å
ç女å©åä¸å®ä»å°å°±éªéªåå
ï¼å¨èç½é¿å¤§çå§ï¼ææäººé½ä¼è¿æ ·çæå½ç¶å°è®¤ä¸ºï¼æä¹æ¯ï¼ç´å°çå°äºå¾®å°å¾®ä»å¤©åå¸çè§é¢ã\n\n<div style=\"position: relative; padding-bottom: 56.25%; height: 0px;margin-bottom:20px;\">\n<iframe style=\"position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;\" src=\"//player.bilibili.com/player.html?aid=652804160&bvid=BV1LY4y1175J&cid=1033555861&page=1&autoplay=false\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"> </iframe>\n</div>\n\næ³°æå°è¯´ç âä¸ç以çå»æï¼æè¦æ¥ä¹ä»¥æâ å¨è¿éå¾å°äºå®ç¾çè¯ éï¼éæ°ç âè·³èæ¯çç±ï¼è·³å°ä¸çå
满ç±ï¼â è¿å¥è¯åæäºä¸ä¸æ ·çæåï¼æ´å æè§èªå·±åªæ¯ä¸ä¸ªæå£ç模仿è
ã\n\næ£å¥½å 个æåçäºä¸æ¬ä¹¦ã被讨åçåæ°ãä¹è®²äºè¿æ ·çè§ç¹ï¼âå³å®æä»¬èªèº«ç䏿¯è¿å»çç»åï¼èæ¯æä»¬èªå·±èµäºç»åçæä¹âãæå½æ¶ç§æäºä¸äºæçï¼ç°å¨æäºæ´æ·±ççè§£ãäººä¹æä»¥æä¸å¹¸å¹¶ä¸æ¯å 为è¿å»æè
ç¯å¢ï¼
318æ´ä¸æ¯å 为è½åä¸è¶³ï¼åªä¸è¿æ¯ç¼ºä¹åæ°ï¼ç¼ºä¹è·å¾å¹¸ç¦çåæ°ãè¿æ ·çå¾®å°å¾®æ¯æè§è¿ææåæ°çäººï¼æä¹è¦ç»§ç»æé¿ï¼æ´æåæ°åçæ
ã\n\næå被é¼èäºï¼ææææè¦è·³èäºã"},{"slug":"2022","title":"2022 å¹´ç»æ»ç»","tags":["å¹´ç»æ»ç»"],"body":"ç¸æ¯å½å
çéå¹»æ¥å¸¸ï¼ä»å¹´å¨èæ ¼å
°ççæ´»è¿æ¯å¾å®ç¨³ç\n\n<div style=\"display: none\">\n \n\n</div>\n\n## 年度æä½³\n\nå
ä»å¿«ä¹ç DIY 年度æä½³é¢å¥ä»ªå¼å¼å§å§\n\n### å½±è§\n\nçè¿ç 19 é¨å¨æ¼«å 18 é¨å§éå 6 é¨çµå½±ï¼https://movie.douban.com/people/62759792/collect?mode=list\n\n**DIY 年度çªå§ï¼ ã鬼çä¹å 游éç¯ã**\n\nä»å¹´å¨æ¼«ç¥ä»ææ¶ï¼ã夿¥éç°ãããæ¥èªæ·±æ¸ãããèµåæå
ãããé´è°è¿å®¶å®¶ãããæ´è¡£äººå¶å å
¥ç±æ²³ãããçµé¯äººã...太å¤ä¼ç§çä½åï¼ä½å
¶ä¸æå欢çè¿æ¯ã鬼çä¹å 游éç¯ã\n\n鬼çèç²äºï¼çç¹å泪ç¹é½å¾æ³æï¼å¯æèå½ï¼è°¢è°¢é£ç¢ç¤¾æ¬¾å¾
\n\n<div style=\"max-width: 400px\">\n \n\n</div>\n\n**DIY 年度å§éï¼ ã人æ°å
¬ä»ã**\n\néªéªåå
çå§éå主è§ï¼ä½çæ´»æ°¸è¿æ¯æå§æ´éå¹»ï¼æ¿ä¸ç没ææäº\n\n<div style=\"max-width: 400px\">\n \n\n</div>\n\n**DIY 年度çµå½±ï¼æ **\n\nä»å¹´çµå½±çå¾å®å¨å¤ªå°äºï¼æ²¡æéå°è½æ¬§å¼ä¸æ´å¹´ç¨åº¦ççµå½±\n\n### å¾ä¹¦\n\nä»å¹´çè¿ç 9 æ¬ä¹¦ï¼\n\n- ã髿è½äººå£«çä¸ä¸ªä¹ æ¯ã\n- ãéå¾å¥´å½¹ä¹è·¯ã\n- ãç®ç»é¿å°å侬çè±æã\n- ãé»éæ¶ä»£ã\n- ãå¯å
°å
æèªä¼ ã\n- ãé»å®¢ä¸ç»å®¶ã\n- ãæ°¸æçç»ç»ã\n- ã人类ç®å²ã\n- ã被讨åçåæ°ã\n\nè½ç¶æ°é屿坿°ï¼ä½ç¸æ¯ 2021 å¹´ç 1 æ¬è¿æ¯æäºå¾å¤§çè¿æ¥ï¼å¸¦æ¥çæ¶è·åå¿«ä¹ä¹ä¸å°\n\n**DIY 年度å¾ä¹¦ï¼ãå¯å
°å
æèªä¼ ã**\n\nãå¯å
°å
æèªä¼ ãæ¯å¯¹æå½±åæå¤§ç䏿¬ï¼æ´å®æ åçè¯å¥ä¸å¤å¤éæ¼çäººçæºæ
§åå®ç¨ä¸»ä¹ææ³ï¼ç»æå¸¦æ¥äºå¾å¤æèï¼å
¶ä¸æ¯æ¥èªçç 13 æ¡ç¾å¾·ä¹è¢«ææ²¿ç¨\n\n<div style=\"max-width: 400px\">\n \n\n</div>\n\n### çµå产å\n\n**DIY 年度çµå产åï¼ ç±³å®¶PGG颿¤ææ©ä»ª**\n\nç¸æ¯äºã颿¤ç
åº·å¤æåãï¼ææ©ä»ªè¦å®ç¨å¾å¤ï¼ ç¨åºåå¿
å¤ï¼æ³¨æä¸å®æ¯å¸¦å
¨èº«ææ©è´´ç米家 APP 款ï¼è
°é
¸èçæ¶åçæå½ç¥å¨ï¼åè颿¤ææ©åè½æè§æ²¡é£ä¹å¥½ç¨\n\n产å龿¥ï¼https://www.mi.com/shop/buy/detail?product_id=14282\n\n<div style=\"max-width: 400px\">\n \n\n</div>\n\n### åºç¨\n\n**DIY 年度åºç¨ï¼Obsidian**\n\nå¨ Notion åº bug å¼ä¸¢äºæä¸å ç¬è®°åï¼æå¼å§å¯»æ¾æ¬å°ç¬è®°åºç¨ï¼å°±è¿æ ·åç°äº Obsidianï¼ ç¬é´è¢«å®å¼ºå¤§çèªå¨åè½ååæé«çèªç±åº¦å¸å¼ï¼å
·ä½è§[ãåºäº Obsidian ççæ´»è®°å½ç³»ç»ã](/obsidian)ãä½ç¼ºç¹ä¹å¾ææ¾ï¼åéäº Markdown æ ¼å¼ï¼è¡¨æ ¼åæçè½åæ¯ Notion å¼±äºå¾å¤ï¼æ¬å°ä¸ºä¸»æä»¥åä½åå享åå¾ä¹ä¸å¤\n\n<div style=\"max-width: 400px\">\n \n\n</div>\n\n### 游æ\n\nä»å¹´ç©ç游æï¼\n\n- ãå®å¯æ¢¦ä¼ 说 é¿å°å®æ¯ã\n- ãæåçè¿è
ã\n- ãææ°§æ³å»2ã\n- ãè¾å°ç»æ³ç¯ã\n- ãæç¥ã\n\n**DIY 年度游æï¼è¾å°ç»æ³ç¯**\n\n弿¾ä¸çãéç³»ï¼ææ®ä¹è½ç©ï¼è¾å°ç»æ³ç¯æ¯ç¥\n\nå°è±¡ææ·±çæ¯ç¼å¥çå§æ
ï¼å®å¨ä¸å¿å¿ï¼ææå¤´å°±è·ï¼å¼ºè¡ happy ending\n\n<div style=\"max-width: 400px\">\n \n\n</div>\n\n### æå\n\n**DIY 年度æåï¼ç»ç± Hello World éåVer. æå**\n\n太å¯ç±äºï¼è½ç¶ä¸ç´å¨å»¶æï¼è¦çäºä¸¤å¹´ï¼çå°ç»ç±æ¬å°é½ä¼ç äºï¼ä½çå°å®ç©çä¸å»ä¸åé½å¼å¾äº\n\n<div style=\"max-width: 400px\">\n \n\n</div>\n\n## çæ´»\n\nå»å¹´å¹´åºç»äºç»æäºå¼å½æè·åå°å¢èäºï¼å¿çå¥åº·åçæ´»è´¨é齿¹åäºä¸å°\n\nè¿æä½é\n\n\n\né
¸å¥¶å¾éæ¾æ²¡è½å¸¦æ¥ï¼åç§æç»æ©å°±åå¤å¥½äºï¼ä½ä¸ç´æ²¡çå°ä¸è±çç´èªï¼ä¸ä»ç»çæå¥½æ¹æ¡æ¯ä»é©¬æ¥è¥¿äºä¸è½¬ï¼èæ¶å¾
318é¿ï¼å¾æ
å¿å®å
¨å°±å
ç®äº\n\n### é£\n\nè±å½çé£ç©ä¸ç´è®©æå¾çè¦ï¼ä½ä¸ä¸ªäººçæ¶åå饿¶é´æçå¾ä½ï¼ä¸¤ä¸ªäººå°±ä¸ä¸æ ·äºï¼å饿¶é´å·®ä¸å¤ä½æ¶çå åï¼è¿çäºæ´ç¢çæ¶é´\n\nä¸å¼å§æ¯åå°åï¼ä½åå°å®å¨æ²¡ä»ä¹åé¥å¤©èµï¼è¿å¶å°è§¦åç«è¦ï¼è®©æåçè¦å害æï¼åæ¥å°±æ¢æäºæå\n\nèµ·æ¥æ¯ä»Bç«ç [æ³¡å¨æ¿ç顾å°è](https://space.bilibili.com/474803476) å [ç¾é£ä½å®¶çåR](https://space.bilibili.com/290526283) å¦çï¼åå¼å§æç¹æè¶³æ æªï¼å
¥é¨ä¹ååç°å¾å¤ä¸è¥¿é½æ¯éç¨çï¼è¿æ¯æºå®¹æç\n\næ¯è¾æ»¡æçæçªèè
è çé¥ãçªè鸡èé¢çç©æ±¤ãå¯ä¹é¸¡ç¿
ãè¾£æ¤çèãå
èçèã寿åé
ãçªèèé
±è士æé¢\n\n\n\n### ä½\n\nèæ ¼å
°ç§æ¿çæ³å¾ä¿éå¾å®åï¼ä½æ¾æ¿åç¹å«éº»ç¦ï¼ä¸æ¹é¢å 为æ¿ä¸éè¦è´å¾å¤æ³å¾è´£ä»»ï¼å°±ä¼å¾è°¨æ
ï¼å¦ä¸æ¹é¢èæ ¼å
°äººå£ç¨å°ï¼æ¿åæµå¨æ§å·®ï¼åå ä¸ä»å¹´ææå¨åå¸ç大å¦ä¸è´è´£ä»»å°æ©æäºå¾å¤å¾å¤ï¼ç¼å¤èå°\n\n\n\nå¨èæ ¼å
°æ£å¸¸ç§æ¿æ¿ä¸ä¸è¬ä¼è¦æ±ææ¯è¾é«çæ¶å
¥ãæ¬å°æ
ä¿äººãå·¥ä½è¯æãå
¬å¸æ¨èä¿¡ãä¸ä»»æ¿ä¸æ¨èä¿¡ãç¬¬ä¸æ¹ä¿¡ç¨æ£æ¥ççä¸å¤§å èµæï¼å
¶ä¸ä¿¡ç¨æ£æ¥ä¸è¬è¿ä¼è¦æ±å¨è±å½æ 6 个æä»¥ä¸ç稳å®ä½æï¼é½æ»¡è¶³æ¡ä»¶åå°±æèµæ ¼ç³è¯·çæ¿äºï¼çæ¿æ¯å¿
é¡»çï¼ç¸å½äºæ¾å·¥ä½çé¢è¯ï¼å¨åæ¹é½æ»¡æåï¼å°±æèµæ ¼æäº¤ç§æ¿ç³è¯·äºï¼æ¿ä¸å¨æ¶å°è¶³å¤çç³è¯·åï¼ä¼ä»ä¸æéä¸ä¸ªæåæ¬¢ææ¡ä»¶æå¥½çç³è¯·è
æ¥ç§ï¼å¦ææå¹¸è¢«éä¸ï¼è¿æå®æäºç§æ¿çè¿ç¨\n\næä»¥è¿ç¨ä¸æ¯ä¸è¬çå°é¾ï¼æä» 8 æä»½å¼å§å°±æ¯å¤©æ²æµ¸å¨åå¤§ç§æ¿ç½ç«ï¼ä¸å°å°ç§ä¿¡ä¸ééçµè¯ï¼å¨è¾¹ Airbnb é½å¿«ä½éäºï¼å¿é
¸æ²æé½æ¯å¯»å¸¸ï¼å¥½å¨ç»å±æ¯å¥½çï¼ç»äºå¨ 10 æç§å°äºè¿è¶
é¢ææ»¡æçæ¿åï¼æ¿ä¸æ¯ä¸ªå¾ä¼çæ´»ç室å
建çå¸ï¼å¸å±ãè£
ä¿®é½è¶
æ£ï¼è¡åºå®å
¨ä¾¿å©ï¼å
线å
è¶³ï¼æå°æå大çµè§ï¼è¿å¸¦ä¸ä¸ªå¾å¥½ç©ç鿥¼\n\n### è¡\n\nä»å¹´è¢«åå°æçå»äºå¾å¤å°æ¹\n\n\n\n**1 æ**\n\nå¨è¯ºä¸æ±å Henry ä¸å®¶è¿å¹´ï¼æ¾çè±åçé¹¿ææ¶\n\n\n\n**4 æ**\n\nå Henry ä¸å®¶å¨æ¹åºå½å®¶å
¬åèªé©¾æ¸¸\n\n\n\n<div style=\"position: relative; padding-bottom: 56.25%;\">\n<iframe style=\"position: absolute; width: 100%; height: 100%; left: 0; top: 0;\" src=\"https://player.bilibili.com/player.html?bvid=BV1UT411E762&autoplay=false\" frameborder=\"no\" scrolling=\"no\"></iframe>\n</div>\n\næ¥çè¿å»äºä¼¦æ¦\n\n\n\n<div style=\"position: relative; padding-bottom: 56.25%;\">\n<iframe style=\"position: absolute; width: 100%; height: 100%; left: 0; top: 0;\" src=\"https://player.bilibili.com/player.html?bvid=BV1iv4y1M7iu&autoplay=false\" frameborder=\"no\" scrolling=\"no\"></iframe>\n</div>\n\n**5 æ**\n\næ¼å½»æ¯ç¹ï¼GAY è¡åä¸å®¶æ¼«ç»åºï¼å½æ¶è¿ä¸ç¥éé¾é¯äººï¼\n\n\n\n**7 æ**\n\nå Henry ä¸å®¶å»åç±å°å
°åèæ ¼å
°é«å°ï¼è¿éææ´äºä¸ä¸ª vlogï¼\n\n\n\n\n\nè·åå°åå¦å»å¨è¾¹ç¬å±±åéé¤\n\n\n\n**8 æ**\n\nå Henry ä¸å®¶ãå¹´å¹´å»äºä¼¯æç¿°ï¼æ²¡å»æåå°æ³ç©çå®å¼¹å°å»ï¼ç¼©å¨é
åºé宵ç©å§æ¬æ\n\n\n\n**12 æ**\n\nå»äºå©ç©æµ¦ãå·´å¡ç½é£ï¼åç²ç²å»äºç½é©¬ã梵èåãå¨å°¼æ¯ãç±³å
°ãèé»ä¸ãå ç¹æè¯ãå·´é»\n\nå¨å·´å¡ç½é£è¢«å·äºææºï¼ä½æ¯æ³¢çå©äºå¸åºä¾¿å®å好åï¼å¥½åç鲿¦¨ææ±åªè¦ä¸æ¬§ï¼å¨ç½é©¬åç°æå¤§å©çæå¤§å©é¢å¾é¾åï¼å¨æ¢µèåè¿äºå£è¯èï¼è¿ç¬¬äºæ¬¡å¾äºæ°å ï¼å¨å°¼æ¯å°å¤é½æ¯æ°´ï¼æ²¡æå
¬äº¤è½¦åªæå
¬äº¤è¹ï¼å¨ç±³å
°åå°äºå¾å¥½åçå京ç¤é¸ï¼ä½ç²ç²ä½ä¸ºä¸ä¸ªå京人åå¾å¾çæ°ï¼åå°å¨å ç¹æè¯æ»éªæä¼¤äºè
¿ï¼è¢«å 个ç士好å¿äººä»éªå±±ä¸èçæ»ä¸æ¥ï¼åæ¶äºå°å²çè¡ç¨ï¼å¨å·´é»çæ¥è¯å®¤è·¨å¹´ï¼å¨æºåºåå°ä½ä¸ºæ®ç¾äººäº«åå°äºè¶
VIP æå¡...\n\nåé¢è¿ä¼è¡¥ä¸ä¸ª vlog\n\n\n\n### ä¸äºå°äº\n\nè¿æä¸äºè®©æå°è±¡æ·±å»çå°äº\n\n**1 æ**\n\n妿 ¡å
¬åçæ¾é¼ å¾äº²äººï¼è·å¯ç±çå°æ¾é¼ å»äºæ [Twitter](https://twitter.com/DIYgod/status/1483523439721910273)\n\n\n\n**6 æ**\n\nææäºæ°å ï¼åäºå 天ç§ï¼ä½ä¹æ²¡ä»ä¹å¤§ä¸äºç [Twitter](https://twitter.com/DIYgod/status/1535961154266271744)\n\n\n\n**7 æ**\n\nå°ç±³ 10 Pro çµæ± é¼å
ï¼å¨è±å½æ²¡å°æ¹ä¿®ï¼å°±å¨æ·å®è½¬è¿äºä¸åç¬¬ä¸æ¹çµæ± ï¼æåæ¢ä¸ [Twitter](https://twitter.com/DIYgod/status/1547328083933515784)\n\n\n\n**10 æ**\n\n空ä¸åºç°çé»éæ è®°ï¼å¥æªçäºï¼\n\n\n\n**11 æ**\n\néåå°ä¸å¦è·¯ä¸çå°äºåå½©è¹ [Twitter](https://twitter.com/DIYgod/status/1589994997553975297)\n\n\n\nè
äº 20TB æºæ¢°ç¡¬çï¼è§[æ°ç©æ | 2022 é»äºä¹°äºå¥ï¼](/new-stuff-2022-black-friday)\n\n\n\n**12 æ**\n\n[ãèæ ¼å
°å±
æ°å¯ä¸æ¥¼æ´»å¨ã](/scottish-residents-can-move-around-downstairs) è¿ç¯å客åºä¸å½æ¿åºè¦æ±å é¤ï¼æä¸ºäº âæ£ç¡®çéä½è®°å¿â çä¸é¨å\n\nï¼åæ¥è¢«å¢äºä¹ä¼è¢«ç¯çï¼ä¹å¯è½è¢«ç¯å¾æ´ç´§\n\n\n\n### çæ´»ç®¡ç\n\nä» 2020 å¹´å°±å¼å§ä½¿ç¨åå¼¹ç¬è®°è®°å½æ¯å¤©ççæ´»ï¼è§[ã2020 å¹´ç»æ»ç»\nã](/2020)ã[ãåºäº Obsidian ççæ´»è®°å½ç³»ç»ã](/obsidian)ï¼ï¼è¿å¯¹æå¸®å©å¾å¤§ï¼å¯ä»¥å¸®å©æåæ¶äºè§£æè¿ççæ´»ç¶æï¼è¿é¨åå¼¥è¡¥äºæè®°å¿åå·®ç缺ç¹\n\n\n\nä¹åæçå° [æ°ä¸](https://a-wing.top/) æ¯å¨ä¼å
¬å¼åå¸èªå·±ç[卿¥](https://twitter.com/search?q=%40_a_wing%20%23%E5%91%A8%E6%8A%A5&src=typed_query&f=live)ï¼æè§ä¹æ¯ä¸ªå¾å¥½çå½¢å¼ï¼å
¬å¼è½è®©èªå·±æ´è®¤çå°å¯¹å¾
çæ´»åå¯ä»¥è·å¾ä¸äºæåçåé¦ï¼æä»¥ä¹å¨èèå¼å§å
¬å¼å卿¥æææ¥\n\nè¶æ¥è¶æè§çæ´»è®°å½ all-in-one ä¸å¤ªå¯è¡ï¼æä»¥æä¸äºåè½åç»äº Toggl å TickTickï¼ä½¿ç¨ Toggl è®°å½æ¯ä¸ªæ¶é´ç¹å¨åä»ä¹åæäºäºé¡¹è±è´¹äºå¤å°æ¶é´ï¼ä½¿ç¨ TickTick åä»»å¡ç®¡ç\n\nå¦å¤è¿å¨ä½¿ç¨ Eagle 管çå¾çï¼æå¾
ä¸ä¸ªå¤§çæ¬çæä»¶ç³»ç»ï¼ï¼Anybox 管ç书ç¾ï¼MoneyWiz 管çé±\n\n## ç产\n\nä»å¹´å
¬å¸åå±å¾é常快ï¼ä¹é¢ä¸´äºå¾å¤ææï¼åå¾è¶æ¥è¶å¼ºäºï¼å
·ä½è§ [ãç»RSS3社åºçä¸å°ä¿¡ã](https://joshua.xlog.app/gei-RSS3-she-qu-de-yi-feng-xin)ï¼å¾é«å
´ç叿²¡ç»æä»¬é æå¤ªå¤§çå½±åï¼æä»¬è¿å¯ä»¥ç»§ç»å忬¢åææä¹çäºæ
\n\nå
¬å¸é¡¹ç®ï¼å ä¹ï¼é½æ¯å¼æºçæä»¥ç°å¨ä¹ä¸ç¨å弿»ç»äºï¼è¿ä¹è®©ä»å¹´åä¸çä»åºæå¾å¤ï¼æå¾å¤æææç项ç®ï¼èå
¶ä¸æè±äºæ¯è¾å¤æ¶é´åæåæ¬¢çæ¯ xLogï¼å®æ¯ä¸ä¸ªä¾æäº Crossbell åºåé¾çå客平å°ï¼æææç« ã订é
ãè¯è®ºçé½ä¼ä¸é¾ï¼ä¹æ¯å½åå客ç¨çå¹³å°ï¼
318ä½ å¯ä»¥å¨é¡µé¢åºé¨çå°æ¬æçåºåé¾ä¿¡æ¯\n\nä½ä»å¹´å¯¹æ§é¡¹ç®çç»´æ¤ç¼ºå¸äºå¾å¤ï¼RSSHub å·¥ä½ä¸è½åæä»¥åºé±æ¾äº TonyRL æ¥åæ¥å¸¸ç»´æ¤ï¼èå
¶ä»é¡¹ç®çç»´æ¤å ä¹ä¸ºé¶\n\n\n\n## 2023\n\nå¨è±å½çæåä¸å¹´ï¼ä¸åå¹´ä¼å»æ°å å¡äº\n\n### æ¿æ\n\næå¤§çæ¿ææ¯å¯ä»¥æ©æ¥è·é
¸å¥¶å¢è ð\n\nå·²ç»è¿äºèº«ä½å·
å³°å¹´é¾ï¼ç¬¬äºæ¿ææ¯èº«ä½å¥åº·\n\n### OKR\n\n2023 Q1 ç个人 OKR\n\n- O1: In excellent health\n - KR1: Body control, body weight 70kg and body fat 17%\n - KR2: Early to bed and early to rise, 12:00-9:00\n - KR3: Healthy Eating, light and less, increase the proportion of white meat and reduce the sugar\n - KR4: More exercise, at least 2 times per week\n\n- O2: Highly productive like a sow\n - KR1: Blog, at least 1 blog per month\n - KR2: Painting, at least 1 painting per month\n - KR2: Vlog, at least 1 vlog per two months\n\n- O3: Knowledge overflows my brain\n - KR1: Reading, at least 7 hours per week\n - KR2: Professional learning, at least 14 hours per week\n - KR2: English learning, at least 7 hours per week\n\n- O4: Explore new horizons\n - KR1: Try 1 new thing per month\n\n- O5: I am Franklin\n - KR1: Guarantee 1 virtue per week\n - KR2: Record virtue status daily\n\n- O6: Run like clockwork\n - KR1: Write bullet journal daily\n - KR2: Bookkeep weekly and monthly\n - KR3: Do things on a daily schedule\n\n- O7: Writing code is like writing the poem of life\n - KR1: Focused work for at least 7 hours per day\n - KR2: Actively maintain and contribute to open source projects, this week's issue will not be left until next week\n - KR3: Expand the scope of coding knowledge\n\n𥳠2023 å¿«ä¹ï¼"},{"slug":"new-stuff-2022-black-friday","title":"æ°ç©æ | 2022 é»äºä¹°äºå¥ï¼","tags":[],"body":"<div style=\"display: none\">\n\n\n\n</div>\n\nåå°æ°æ´¾ [æ°ç©æç³»å](https://sspai.com/tag/%E7%BC%96%E8%BE%91%E9%83%A8%E7%9A%84%E6%96%B0%E7%8E%A9%E6%84%8F) å¯åï¼æä¹åäº«ä¸æè¿æé»äºè´ä¹°çæ°ç©æã\n\nå
¶å®å³ä½¿æ¯é»äºï¼è±å½ç»å¤§å¤æ°åå乿¯å½å
å¹³æ¶è´µå¾å¤ï¼å°±å¾ä¸ä¹ã\n\n## Chromecast with Google TV 4K\n\n- å
¥ææ¸ éï¼Amazon\n- ä»·æ ¼ï¼~~£59.99~~ £39.99\n\n\n\nç§æ¿åæ¶åæ¿ä¸çäºä¸å°çµè§ï¼èªå¸¦ç³»ç»åè½å¾å°ï¼çæµåªä½åè¿ PS5 æææ¸¸æè¿è¡ï¼ç NAS éçè§é¢å°±ä¸è¡äºãæ¬æ¥å¯¹åæ´æ°ç Apple TV å¾å¿å¨ï¼ä½çå° Chromecast ç´éäº Â£20ï¼é½æ¯ç个 4K è§é¢ï¼ååä¹ä¸çä»·æ ¼è¿ä¸æ¯ç¾æ»æ»ï¼æ¯ç«æ¯ Google 亲å¿åï¼Google TV ç³»ç»è·æ®é Android TV ä¹ä¸ä¸æ ·ï¼è¯´ä¸å®ææåã\n\n\n\n\n\nçå¤è§åå·¥è¿æ¯æºç²¾è´çï¼ç¬å»å»å¼æºä¹åï¼è¿ä»ä¹é½æ²¡åï¼å°±åç°ç³»ç»ååºæææ¾çå»¶è¿åå¡é¡¿ï¼ç¬å®¹éæ¸æ¶å¤±ãè¿çå°ä¸è½½å® Jellyfinï¼å°è¯æå¼ä¸ä¸ª 4K è§é¢ä¹å\n\nçµååå¾ï¼éé±ï¼\n\n\n\nï¼æåæ¥åä»èªå·±èº«ä¸æ¾åå ï¼æçæ¯ä¸æ¯æè§é¢çç ç太é«äºï¼å°±ç¨Bç«è§é¢è¯äºä¸ï¼åç°å°±è¿Bç«é£ä¹ä½ç çç 4K 齿ä¸å¨ï¼æ´ä¸å¨æ´ä¸å¨ï¼\n\n## Western Digital 20TB æ¡é¢å¤ç½®ç¡¬ç\n\n- å
¥ææ¸ éï¼Amazon\n- ä»·æ ¼ï¼~~£304.99~~ £45.99\n\n\n\n广å NAS ç¨æ·åç±çä¸å硬çï¼å ä¸ºä¼æå¨ç¥ï¼è½ç¶å®è®¾è®¡ä¸æ¯æ¾æ¡é¢ä¸ç»çµèæçº¿ç¨çï¼ä½æå®å
é¨ç硬çæåºæ¥ç» NAS ç¨ååéä¸è¿äºï¼ä¸æ¹é¢ä»·æ ¼å¾ä½ï¼å¦ä¸æ¹é¢å®ç硬件水平ä¸è¥¿é¨æ°ç æé«æ¡£çä¼ä¸çº§ Gold æ NAS Red Pro ç¸å½ ï¼[reddit](https://www.reddit.com/r/DataHoarder/comments/up2lki/wd_easystore_20tb_shucked_heres_whats_inside/)ï¼ï¼é¤äºåªé³å¤§ç¹æ²¡ä»ä¹ç¼ºç¹ã\n\nå°±æ¯è¿ä¸¤æ¬¾\n\n\n\n\n\nç¸æ¯è¿ä¸¤æ¬¾ä»·æ ¼ £515.99 å £545.99 ï¼å® £304.99 çä»·æ ¼å°±è·ç½é䏿 ·ï¼æä»¥å®ä¸ç´å¨æç [Keepa](https://keepa.com/) 订é
å表éï¼åå¤çå®åééä»·å
¥æã\n\nç¶å就卿ä¸å¤©æ©ä¸æ¶å°äºè¿æ¡æé\n\n\n\n£45.99ï¼å½ç¶ç¬¬ä¸ååºæ¯æç Keepa åºéäºï¼æå¼ Amazonï¼å±
ç¶æ¯çç\n\n\n\n没æç¹è±«ï¼æä½æ¿å¨å¾é¢¤æçåæï¼ä¹°äº 8 åï¼è³äºè¯´ä¸ºä»ä¹åªä¹°äº 8 åï¼å 为æåªæä¸¤ä¸ªè´¦å·ï¼æå¤åªè½ä¹° 8 åã\n\nä½åæ¥æ 5 å被ç åäºï¼åªæ¶å°äº 3 åã\n\n\n\næåºæ¥ç¡¬çï¼æ¢æä¹åç两å 4T é
·ç¼ã\n\n\n\n\n\nå¿æ»¡æè¶³ã\n\næ¬æ¥å°è¿éå°±ç»æäºï¼å°±æ¯ä¸ä¸ªå¹¸è¿çè
ç¾æ¯æ
äºï¼ä½æ¯ç¬¬äºå¤©ï¼ç¾¤ææ
鿥è¦ã\n\n\n\nç¡¬çæ¿åºæ¥ä¹æå¾ææ¾çå¼åï¼çèµ·æ¥æ¯æ²¡æäºï¼ä¹ä¸ç¥éè¿è¿è½ä¸è½ä¿ä¿®ï¼æ¯ç«æ¯è
æ¥çãè¿å¥½ç³è¯·å®åä¹å Amazon åç»æå
è´¹å¯äºä¸åã\n\n\n\næåæ»ï¼Amazon æ¯ä»ä¹æ
åå®¶ã\n\n忥ä¸äºç¹ 4K çµå½±ï¼åç° 20T 好å乿²¡å¤å°ã\n\n\n\n## Plex Lifetime Pass\n\n- å
¥ææ¸ éï¼Plex\n- ä»·æ ¼ï¼~~$119.99~~ $68\n\nChromecast å·²ç»è¢«æéäºï¼ç°å¨åæäºå
è¶³ç硬çï¼é®é¢åæ¥äºï¼æä¹å¨çµè§ä¸çå¢ï¼æå次é·å
¥äºè¿·è«ã\n\nææ³èµ·äºæå®¶é£å°ä¼ç§çè¶
髿¸
èå
ææ¾å¨ â PS5ï¼ç个 4K è§é¢è¯å®ä¸å¨è¯ä¸ï¼è½ç¶è£
ä¸äº Jellyfin ä½è¿å¥½æ Plexã\n\nå¨ç¾¤æè£
好 Plex æå¡ç«¯ï¼å¯¼å
¥è§é¢ï¼å®è£
PS5 客æ·ç«¯ï¼è´ä¹° Passã\n\n\n\n\n\n\n\n\n\nè½ç¶ Plex æ¯è¾å°éï¼ä»£ç 乿²¡æå¼æºï¼å¾å¤åä¸åå
容令人å¾ä¸æ¾å¿ï¼ä½ä¸å¾ä¸è¯´ä½éªæ¯ Jellyfin 好ä¸å°ï¼è§é¢åå®å好åå¿«ï¼å®¢æ·ç«¯ä½éªæ´å¥½ï¼å è½½åå¹ä¹å¾æ¹ä¾¿ï¼ä¹ç®æå¼æå©ã\n\n## PlayStation 5 DualSense å
çµåºåº§\n\n- å
¥ææ¸ éï¼Amazon\n- ä»·æ ¼ï¼~~£24.99~~ £16.99\n\n\n\n讨åå®¶éçå
çµåºåº§å¾ä¹
äºï¼å®å
¨èººå¹³å¾å 空é´ï¼è¿ä½¿ç¨æå
¥å¼å
çµï¼æ¯æ¬¡é½è¦ç¨åå¾éæ¼ï¼æ¹åä¹ä¸é¡ºæï¼é常ä¸ä¼é
ã\n\n\n\n宿¹ç就好å¤äºï¼æ¥è§¦å¼å
çµä¸ç¨è´¹åæ°éææ¾ä¸é¢å°±å¯ä»¥ã\n\n\n\n## This Works 深度ç¡ç æå¤´å·é¾\n\n- å
¥ææ¸ éï¼Amazon\n- ä»·æ ¼ï¼~~£16.8~~ £13.44\n\n\n\næä¸ç´ä¸å欢ç¡è§ï¼æè¿ä¹å¨å»æå缩ç¡ç æ¶é´ï¼æ¯å¤©ç¡ 6 个å¤å°æ¶ï¼è½ç¶æ»ä½é®é¢ä¸å¤§ï¼ä½æ¯å¶å°ä¼æå 天精ç¥ä¸å¤ªå¥½ï¼æä»¥ä¹°äºè¿ä¸è¥¿å¸ææé«ä¸äºç¡ç è´¨éã\n\n\n\n宿¹ä»ç»æ¯è°è¡£èãæ´çèå馿 ¹èçå³éï¼æå
¶å®ä¸ç¥éè¿äºä¸è¥¿æ¯ä»ä¹å³éï¼å®é
æåå°±æ¯èæ¨çå³éï¼ç»äººçæè§æ¯æ¯è¾æ¸
æ°åæåï¼ä¹æä»¤äººééçæè§ï¼è½ç¶ææ²¡æ³æé¤å¿ççå½±åï¼ï¼æè¿æ¯æºå欢çã\n\nç®åå·²ç»ä½¿ç¨äºåå¤©ï¼ææè§æ¯ææçï¼ä½ä¸ºäºæé¤å¿çå½±åï¼è¿æ¯éè¿å°ç±³æç¯çç¡ç æ°æ®æ¥éªè¯ï¼\n\n使ç¨å 4 å¤©çæ·±ç¡æ¯ä¾ï¼(15+21+15+11)/4=15.5(%)\n\n使ç¨å 4 å¤©çæ·±ç¡æ¯ä¾ï¼(13+19+16+23)/4=17.5(%)\n\nè½ç¶çèµ·æ¥å¾çå¦ï¼æ°æ®æ ·æ¬ä¹ä¸å¤å¤ï¼ä½ç®åçæ°æ®ç¡®å®ææåï¼åå 䏿å¾å欢è¿ä¸ªå³éï¼è¿æ¯æ¨èçã\n\n## Crucial å
å 16GB DDR4 3200MHz\n\n- å
¥ææ¸ éï¼Amazon\n- ä»·æ ¼ï¼~~£48.49~~ £36.99\n\n\n\nNAS 硬çå大äºå
åä¹ä¸è½è½ä¸ï¼è½ç¶ç°å¨ 8G ä¹å¤ç¨äºï¼ä½ Linux çå
忝ä¼å
¨å满ä½ç¼åçï¼å¤ç¹æ»æ¯å¥½çãæéè¦çæ¯å®å®å¨æ¯å¤ªä¾¿å®äºã\n\n\n\n\n\nè£
ä¸åä¸å
± 20G å
åï¼å©ç¨ç稳å®å¨ 16%ã\n\n\n\nåå对æ¯ã\n\n\n\n\n\n## SanDisk 512GB Ultra microSDXC card\n\n- å
¥ææ¸ éï¼Amazon\n- ä»·æ ¼ï¼~~£69.99~~ £34.99\n\n\n\nå®ä¹å®å¨æ¯å¤ªä¾¿å®äºï¼512GB 容é 150 MB/s 读åé度ï¼ç¸æºéç 128GB åå¨å¡æ¯æ¬¡åºå»ç©é½ä¸å¤ç¨ï¼æ¢æã\n\nåå½±\n\n\n\n## Cyberpower UT650EIG UPS\n\n- å
¥ææ¸ éï¼Amazon\n- ä»·æ ¼ï¼~~£46.94~~ £37.08\n\n\n\n䏿¬¡æè¾¹è¡éçµè·¯ç»´ä¿® NAS æå¤æçµä¸¤æ¬¡ï¼è®©æå¾å¿çï¼çå°äºé©¬éæäºæ UPS å就买äºä¸å°ã\n\né¦å
å
è£
å°±å¾ä¼æå
ã\n\n\n\næä¸çµæºåç°æ æ³å
çµï¼æ¯åç ð¤¡\n\n\n\nåå ä¸åç°å®æ²¡æ USB å£ï¼æ æ³å®ç°æçµ NAS èªå¨å
³æºï¼ééä¹å®å¨æ¯å¤ªéäºï¼å¯åº¦ççå°±åä¸åéï¼è¿æ¯ä»¥åå¨å½å
ä¹°å§ï¼éè´§äºã\n\nå¦å¤è¿æä¸é¦çé¦è°è¡çãæ¤
åãåå°ä¹°çä¸å è¡£æï¼å°±æ¯æä»å¹´é»äºçå
¨é¨äºï¼æ¬¢è¿å¨è¯è®ºéä¹åè¯æä½ æè¿çæ°ç©ææè
çä¸ä½ çæç« 龿¥ã"},{"slug":"scottish-residents-can-move-around-downstairs","title":"èæ ¼å
°å±
æ°å¯ä¸æ¥¼æ´»å¨","tags":[],"body":"\n\nä»å¤©è·ç¦»å£è¯èæ£å¥½è¿æä¸ä¸ªæï¼ä½æ ¼ææ¯å¥ä¸»è¡ä¸æ©æ©å°±å¸ç½®äºå¾å¤å£è¯èè£
饰åå£è¯èæé´ä¸å±ç游ä¹è®¾æ½ï¼æå®¶å¯¹é¢çä¸å®¶å°åç©é¦ä¹ä¸ºä»å¹´çå£è¯èä¸é¨å»ºäºä¸ªæ»éªåºå
¼å£è¯éå¸ãåå ä¸ä»å¤©æ¯é»è²ææäºï¼ååºå¾å¤ææ£ï¼è½ç¶ä¸çé¨ï¼è¿æ¯é»æ¡ä¸ä½å±
æ°çº·çº·åºé¨æ¢è´ï¼è¡ä¸å¾æ¯çé¹ï¼æ¯ä¸ªäººçè¸ä¸é½æçä¹°å°ä¾¿å®ååç忦ãä»å¤©åæ¯å平忦çä¸å¤©ã\n\n..."},{"slug":"flowers-for-algernon","title":"ãç®ç»é¿å°å侬çè±æã读书å享","tags":[],"body":"\n\n\n\nä¸ä¸ªå£åº¦è¯»ç书䏿忬¢ç䏿¬ï¼åç±»æ¯ç§å¹»å°è¯´ï¼ä½éç¹å¨äºæ¢è®¨æé¿ã人çæä¹ç人æè¯é¢ã\n\næ
äºè®²è¿°äºå¨æºåæåå®éªå¨å°é¼ é¿å°å侬身ä¸è·åæåä¹åï¼ç§å¦å®¶ä»¬å¯¹ä¸ä¸ªæºååªæ 68 çç¬¨èæ¥çè¿è¡äºææ¯ï¼æ¥çæºåå¾å¿«æåå°äº 185 æä¸ºäºè¶
级天æï¼åå 为å®éªç¼ºé·å次åæç¬¨èçæ
äºï¼å°è¯´éè¿ä¸ç¯ç¯æ¥çç¬ä¸çå®éªæ¥è®°ãè¿æ¥æ¥åãå读è
第ä¸äººç§°è®²è¿°äºæ¥çä»ç¬¨èå°å¤©æåå°ç¬¨èçå¿è·¯åç¨åçæ´»çä¸ç³»åååã\n\n### æé¿\n\næ
äºä¸æ¥ççæé¿æ¥èªäºæºåçæåï¼ä»ä¸å¼å§æ¥è®°å
满éå«åï¼çæ´»ä¸å¤å¤å人å²ç¬å欺åèä¸èªç¥ï¼å°åæ¥éå«åè¶æ¥è¶å°ï¼å¥åè¶æ¥è¶é顺ï¼å¦å°äºè¶æ¥è¶å¤çç¥è¯ï¼éæ¸å¼å§è®¤è¯ååæèªå·±ï¼åç°çæ´»çç¾å¥½åçè¦ã\n\n> æäºå¸¸è¯ç人é½ä¼è®°å¾ï¼ç¼ççå°ææä¸¤ç§ï¼ä¹æ¥èªä¸¤ç§èµ·å ï¼ä¸æ¯å 为走åºå
æï¼å°±æ¯å 为走è¿å
ææè´ï¼ä¸è®ºæ¯äººä½çç¼çæå¿çµçç¼çï¼é½æ¯å¦æ¤ãââãçæ³å½ã\n\næé¿çè¿ç¨ç»å¸¸æ¯æ®å¿çï¼æ¥ççç»å乿¯æä»¬æé¿çè¿ç¨ï¼æä»¬ä¹æä»å¤©ççæ¼«ç童年å¼å§éæ¸çè§£è¿ä¸ªä¸ç黿é¢çç»åï¼æä»¬ä¹ä¼åæ ·æå°å°æåçè¦ã\n\n书䏿䏿®µæ¯æ¥çåèªæè¿ç¨ä¸éæ¸æ³èµ·èªå·±ä¹åå人欺åï¼å½æ¶å´ä¸ç¥éåçäºä»ä¹ï¼è¿ä»¥ä¸ºå¤§å®¶å¨è·ä»ç©èï¼æ¥çæç½è¿æ¥ä¹åæå°é常æ²ä¼¤ãè¿è®©ææ³èµ·æåä¸ä¹æç±»ä¼¼ç»åï¼å½æ¶æå¹´é¾æ¯å
¶ä»åå¦é½å°ï¼ç»å¸¸è¢«äººæ¬ºè´ï¼ä½è¢«æ¬ºè´äºè¿ä»¥ä¸ºæ¯èªå·±â忬¢è¿âï¼ä»¥ä¸ºå¤§å®¶å°±æ¯è¿æ ·ç¸å¤çã\n\næé¿åæ¯å¿
è¦çï¼å 为å®å¯ä»¥å¸®å©æä»¬è®¤è¯èªå·±ï¼è·å¾äººæ§å°ä¸¥åé«çº§å¿«ä¹ã\n\n### å¿«ä¹\n\n> æä¸ç¥éåªç§æ
嵿´ç³ï¼ä¸äºè§£èªæä½å¾å¿«ä¹ï¼è¿æ¯å®ç°çæ³ä½æå°å¤ç¬\n\n笨æ¥çå¨é¢å
åºå·¥ä½ï¼æä¸ç¾¤â好æåâï¼æ å¿§æ èï¼æè§æ´ä¸ªä¸çæ æ¯ç¾å¥½ãä½å¨åèªæè¿ç¨ä¸ï¼åç§é®é¢åçè¦ä¹éçåºç°ï¼ä»æå°ä»ç工使²¡ææä¹ï¼ä»çâ好æåâä¹å ä¸ºæ æ³æå¼ä»è离ä»èå»ï¼ä»è¿åå¿èµ·ä¹å被æååéç人å²ç¬åæå¼ã被家人æå¼çç»åï¼å¾ä¸å°æ³è¦çç±æ
ãå°ä¸¥ãå卿ä¹ï¼è¿äºé½è®©ä»æå°çè¦ï¼ç¦»å¿«ä¹è¶æ¥è¶è¿ã\n\nå¿«ä¹æ¯æä»¬çæ´»ç追æ±ä¹ä¸ï¼ä½è®½åºçæ¯äººçå¿æºè¶æçä¼¼ä¹è¶é¾è·å¾å¿«ä¹ï¼æä»¬å¨ç«¥å¹´æ´å®¹æè·å¾å¿«ä¹ï¼é¿å¤§åææç¥éçæ´å¤ãæ¥æçæ´å¤å´åæäºçè¦ç大人ã\n\n对æ¤ï¼æèµå[ç½ç¿çè§ç¹](https://www.bilibili.com/video/BV1r7411o7XD/)ï¼å¿«ä¹æè´¨åéçåºå«ï¼è¶è½ä½ç°äººæ§å°ä¸¥çå¿«ä¹ï¼è¶æ¯ä¸ç§æå¤§çå¿«ä¹ãææ±é«çº§å¿«ä¹çè¿ç¨ä¸å¯è½ä¼éå°å¾å¤å°æåçè¦ï¼ä½æ´è½ä½ç°äººæ§å°ä¸¥å人çæä¹ï¼è¿ç§å¿«ä¹ä¹æ¯æ´å¼ºå¤§åæä¹
çãæ¥çæ»¡è¶³æ±ç¥æ¬²åçå¿«ä¹åæåå¦ä¼å»ç±çå¿«ä¹æ¯ä¹åçå»ä¹æ æ³ç¸æ¯çã\n\n~~åæ¶æä¹è§å¾ä½çº§å¿«ä¹å¿
ä¸å¯å°ï¼è¿ä¹æ¯ä¸ºä»ä¹æä¹çè¡·äºçæ¶©å¾ã~~\n\n### ç±æ
\n\n> æºæ
§æ¯äººç±»æä¼å¤§çæ©èµä¹ä¸ï¼åªæ¯å¨è¿½å¯»ç¥è¯çè¿ç¨ä¸ï¼å¯¹ç±ç追寻å¾å¾å°±è¢«æå¨ä¸æãè¿æ¯æèªå·±æè¿åç°çç»è®ºãæå¯ä»¥æè¿ä¸ªå设æä¾ä½ åèï¼æ²¡æè½åç»äºåæ¥åç±æ
çæºæ
§ï¼ä¼ä¿æå¿æºä¸éå¾·ä¸çå´©æºï¼å½¢æç¥ç»å®è½çï¼çè³ç²¾ç¥ç
ãè䏿è¿è¦è¯´ï¼åªç¥ä¸æ³¨å¨å¿æºæ¬èº«ï¼ä»¥è´æé¤äººé
å
³ç³»å¹¶å æ¤å½¢æå°éçèªæä¸å¿ï¼åªä¼å¯¼è´æ´åä¸çè¦ã\n\næè®©æ¥çå°æçä¸ä»¶äºå°±æ¯ç±æ
ï¼æ¥çæºå鿏åé«ï¼ä½ä»é¢å¯¹ç±æ
çæ å¯å¥ä½åå°æ°å´æ²¡ææ¹åï¼ä»åç°äºç±æ
䏿ºåæ å
³ã\n\nå°è¯´ä¸æ¥ç身边åºç°äºä¸¤ä¸ªå¥³äººãæ¥çä¸é»å±
è´¹ä¼ç¸å¤çº¯ç²¹ãå
æ»¡æ¿æ
ãæ æé¡¾èï¼ç似幸ç¦ç¾å¥½ï¼ä½è´¹ä¼å¨åç°æ¥çå笨ä¹åæ¯
ç¶ç¦»å»ãè䏿æè¾ä¸½æ¯çææ
è¦å¤æå¾å¤ï¼è¿ä¹è®©æ¥çåç°äºèªå·±çå¿çé®é¢ï¼åç°èªå·±å¹¶æ²¡æç±ä¸è¢«ç±çè½åï¼çæ£çç±æ
ä¸åçº¯çæ¿æ
ä¸åï¼æ¥çä¸è¾ä¸½æ¯æçæ´æ·±çç¾ç»ï¼æ´æ¿æä¸ºå¯¹æ¹ååºçºç²ï¼è¾ä¸½æ¯å¨æ¥çå笨ä¹åä¸ç¦»ä¸å¼ï¼æ¥ç失å»è®°å¿ä¹åæå
³å¿çä»ç¶æ¯è¾ä¸½æ¯ãä½è
éè¿ä¸¤äººçå¯¹æ¯æ·±å»å°è¯ éäºæ¿æ
åç±æ
çåºå«ã\n\n> è¾ä¸½æ¯å䏿¬¡æ¥å°é¨å£ä½æè¯´èµ°å¼æä¸è¦è§ä½ ã她åäºèµ·æ¥æä¹è·çå使ä¸è®©å¥¹è¿æ¥å 为æä¸è¦å¥¹æç¬æãæåè¯å¥¹æä¸å¨å欢她è䏿å¨ä¹ä¸è¦åèªæãè¿ä¸æ¯ççãæä»ç¶ç
318±å¥¹ä»ç¶æ³è¦åèªæä½æå¿
é¡»è¿æ ·è¯´æè½è®©å¥¹ç¦»å¼ãç©å°¼å¤ªå¤ªåè¯æè¾ä¸½æ¯å¸¦äºæ´å¤é±è¦æ¥ç
§æ
æå¹¶ä¸ä»æ¿ç§ãæä¸è¦æå¿
须廿¾å·¥ä½ã\n\n> ä»å¤©æåäºä¸ä»¶å¾ç¬¨çäºæå¿äºæå·²ç»ä¸å¨çºªå°¼å®å°å§çæäººä¸å¿ç级ä¸è¯¾ãæèµ°è¿å»å卿室åé¢çèä½åä¸å¥¹çå°ææ¶è¡¨æ
徿ªç¶åé®è¯´æ¥çä½ é½å°é£éå»äºãæä»¥æè¯´åç½çºªå°¼å®å°å§æä»å¤©å·²åå¤å¥½è¦ä¸è¯¾åªæ¯æå¼ä¸¢äºæä»¬å¨ç¨ç书æ¬ã她å¼å§åèµ·æ¥å¹¶ä¸è·åºå»æå®¤ã大家é½è½¬å¤´çæèæåç°å¾å¤äººé½ä¸æ¯æä»¥åçä¸çåå¦ã......é£å°±æ¯æä¸ºä»ä¹è¦æ°¸è¿ç¦»å¼è¿é廿²ä¼¦ä¹å®¶çåå ãæä¸è¦å¨ååºè¿æ ·çäºæ¥ãæä¸è¦çºªå°¼å®å°å§ä¸ºæé¾è¿ãæç¥å°é¢å
åºéçæ¯ä¸ªäººé½ä¸ºæé¾è¿ä½æä¹ä¸è¦è¿ä¸ªã\n\nè¿æ®µççç»·ä¸ä½ã\n\n### 人çæä¹\n\n> ææ¥å°è¿ä¸ªä¸ä¸ï¼æ 鿝æ³è¦æç½äºéçï¼éè§äºæè¶£çäºãåè½å¦ææ¿ï¼æçä¸çå°±ç®æåãââçå°æ³¢\n\næ¥è®°å次åºç°éå«åï¼å½è¿æ®å¿å°å¥å¤ºä»æçæçå
æçæ´»åç¾å¥½è®°å¿ã\n\nè½ç¶æ¥ççç»å±å¹¶ä¸é£ä¹ç¾å¥½ï¼å´©å¡çè¿ç¨å
满çè¦ãæ£æåç»æï¼ä½ä»ç»ä¸åæè¿è¡äºæºåæåææ¯ï¼ä»å¦ä¼äºç±ä¸è¢«ç±ï¼ä¸è¿å»çèªå·±åè§£ï¼æ´å¥½å°è®¤è¯äºèªå·±ï¼ä½ä¼å°äºçæ´»çé
¸çè¦è¾£ï¼æç½äºå¾å¤éçï¼å³ä½¿è¿äºæç»é½å°æ¶å¤±ãå°±åæä»¬ç人çå
满æä¹ï¼å³ä½¿æä»¬ä¹æ»æä¸å¤©ä¼æ»äº¡ä¼å½äºå°åã\n\n> æ¾å°æå®æ´åå¨çæä¹ï¼é¤äºè¦ææ¡è¿å»ï¼ä¹å¾ç¥éæªæ¥çå¯è½åå±ï¼ä¸ä»
è¦ç¥éèªå·±æ¥èªä½æ¹ï¼ä¹å¾ç¥éä¼å»åªéãè½ç¶æä»¬ç¥éï¼å¨è¿·å®«å°½å¤´ççæä»¬çæ¯æ»äº¡ãæç°å¨è®¤ä¸ºï¼æå¨è¿·å®«ä¸éæ©çéè·¯é å°±äºç°å¨çæãæä¸åªæ¯ä¸ä»¶äºç©ï¼ä¹æ¯ç§å卿¹å¼ï¼ä¼å¤æ¹å¼çä¸ç§ï¼äºè§£èªå·±éæ©çéè·¯ï¼ä»¥åé£äºææ²¡è¸ä¸çéè·¯ï¼é½è½å¤å婿äºè§£èªå·±ç转åã\n\n> 纪尼å®å°å§å¦æä½ ææºä¼è¯»å°è¿ä¸ªè¯·ä¸è¦ä¸ºæé¾è¿ãæå¾ææºæå°±åä½ è¯´çå¾å°çå½ä¸çå¼äºæ¬¡æºä¼ãå 为æå¦å°å¾å¤æä»¥åçè³ä¸ç¥å°è¿ä¸çä¸ççåå¨çäºæ
ãæå¾é«å
´è½å¤çå°è¿äºå³ä½¿åªæ¯å¾ççæ¶é´ãæå¾é«å
´æåç°äºææå
³äºæç家人åæçäºã好å卿æ³èµ·ä»ä»¬å¹¶ä¸çè¿ä»ä»¬ä¹åæå¹¶æ²¡æå®¶äººä¼¼çä½ç°å¨æç¥å°ææå®¶äººè䏿å大家䏿 ·ä¹æ¯ä¸ä¸ªäººã\n\nè½ç¶æ»äº¡æ æ³é¿å
ï¼ä½æä»¬å¯ä»¥å¨é¿å°å侬ååæ¾ä¸ä¸æè±æï¼è¯ææä»¬æ¾ç»ææä¹å°æ¥è¿æé¿è¿ã\n\nð"},{"slug":"xlog","title":"第ä¸ä¸ªå¼æºé¾ä¸åå®¢ç³»ç» xLog","tags":["æ°å"],"body":"## Talk is cheap\n\nGitHubï¼https://github.com/Crossbell-Box/xLog\n\n宿¹å®ä¾ï¼https://xlog.app\n\nä½¿ç¨æ¡ä¾\n\n- https://blog.rss3.io/\n- https://blog.diygod.me/\n- https://usagiryu.com/\n- https://crossbell-blog.xlog.app/\n- https://song.xlog.app/\n- https://atlas-thinking.xlog.app/\n\n## 卿º\n\næç[个人å客](https://diygod.me/)å·²ç»è¿è¡äºæ¥è¿ 9 å¹´ï¼è·çææ
¢æ
¢åå±ï¼ç°å¨å ä¹å·²ç»æä¸ºäºæç个人åå±å²ï¼æè
¾å客ä¹ä»å¾ä¹
以åå°±æä¸ºäºæçä¸ä¸ªç±å¥½ï¼ä½éç对 Hexo çè¶æ¥è¶ä¸æ»¡ï¼æå³å®åä¸ä¸ªæ´ç°ä»£åçå
¨æ°çå客系ç»ã\n\næä¸æ³ä»
ä»
满足èªå·±çéè¦ï¼å®éè¦å¼æºåè¶³å¤å¼æ¾ï¼æ¥æ»¡è¶³æ´å¤äººçéæ±ã\n\næä¸æ³è®©æçè´µçæ°æ®è¢«ä¸å¿åå¹³å°ç»æ¶ï¼å䏿³éº»ç¦ç»´æ¤ä¸ä¸ªæ°æ®åºææå¡å¨ï¼å®éè¦å
¼é¡¾æ°æ®æææå便å©ï¼æä»¥æéæ©äºåºåé¾ã\n\næåï¼å®éè¦ä½¿ç¨è¾æ°çææ¯æ ï¼æä¾ä¸ä¸ªæ´å¥½çå¼ååç»´æ¤ä½éªã\n\n## åè½\n\nåºåé¾ï¼ææåå®¢æ°æ®ï¼å
æ¬ç½ç«é
318
ç½®ãæç« ãå
³æ³¨ãè¯è®ºãç¹èµçï¼é½ç±ä½ ç¾åå¹¶åå¨å¨åºåé¾ä¸ï¼ä»¥ NFT çå½¢å¼åå¨ï¼åªè½ç±æç®¡ç§é¥çä½ èªå·±æ§å¶ã\n\n> ä¸ [Mirror.xyz](https://mirror.xyz/) çåºå«ï¼ç¡ç¾çä¸ç¹æ¯ï¼Mirror æ¯éè¿ä»ä»¬ç宿¹è´¦å·è䏿¯ç¨æ·èªå·±åèµ·ç交ææå
容åå°äºé¾ä¸ãè¿ä½¿å¾ç¨æ·éè¦ä¾èµ Mirror è¿ä¸ªä¸å¿å平尿è½åå¸åä¿®æ¹èªå·±çå
容ï¼å
容å¨é¾ä¸çæ§å¶æä¹æ¯å±äº Mirror å¹³å°è䏿¯ç¨æ·èªå·±ã\n\n\n\n丰å¯ç交äºï¼ä½ å¯ä»¥å¨åºåé¾ä¸å
³æ³¨ä½ 忬¢çå客ï¼è¯è®ºãç¹èµæç« æææç« é¸é 为 NFTã\n\n\n\né«åº¦å¯å®å¶ï¼èªå®ä¹ååãå¯¼èªæ ãèªå®ä¹æ ·å¼çï¼å½ç¶ï¼å®ä»¬é½æ¯åå¨å¨åºåé¾ä¸çã\n\n\n\n## ææ¯å®ç°\n\nxLog åºäºå¦ä¸ä¸ªå¼æºé¡¹ç® [proselog](https://github.com/proselog/proselog) å¼åï¼ä½¿ç¨ Next.js + Tailwind CSS + TypeScript + TanStack Query æå»ºï¼æçå®åç SPAãSSRãç¶æç®¡çåä¼ç§çå¼åä½éªã\n\nåºåé¾ä½¿ç¨çæ¯ä¸ç¨äºç¤¾äº¤æ´»å¨ç EVM å
¼å®¹åºåé¾ [Crossbell](https://crossbell.io/)ï¼é度æ´å¿«ä¸æ éè´ä¹° gas å
费使ç¨ãè¿è½ä¸ Crossbell å
¶ä»çæé¡¹ç®æ ç¼è¡æ¥ï¼æ¯å¦ä½ å°±å¯ä»¥å¨ [Crossbell.io feed](https://crossbell.io/feed) ä¸ä»¥ä¿¡æ¯æµç形弿¥çä½ è®¢é
çææ xLog ç卿ã\n\næ¯ä¸ªå客齿¯ä¸ä¸ªå±äºä½ ç NFTï¼å®çé
ç½®åæç« é½ä»¥ç¬¦å Crossbell è§èçæ ¼å¼åå¨å¨ NFT ä¸ãå建ä¸ä¸ªåå®¢å°±æ¯ mint ä¸ä¸ª NFTï¼åå¸ä¸ç¯æç« æä¸æ¡è¯è®ºå°±æ¯å¯¹ NFT å¢å ä¸é¡¹å
容ï¼å
³æ³¨ä¸ä¸ªå客就æ¯ä¿®æ¹ä½ çå
³æ³¨å表 NFTã\n\n宿¯å®å
¨å¼æºçï¼å¦ææå
´è¶£å¯ä»¥ç´æ¥å» GitHub çæºç ã\n\n## åå¨é®é¢\n\n1. éè¦å®è£
ä¸ä¸ªä»¥å¤ªåé±å
æè½è¿è¡æä½ï¼è¿å¯¹æ²¡ææ¥è§¦è¿åºå龿¦å¿µçæ®éç¨æ·å¯è½æ¯ä¸ä¸ªè¾å¤§çè´æ
ãè½ç¶åºå龿¯ä¸ä¸ªé常éåçè§£å³æ¹æ¡ï¼ä½ç®ååºåé¾å¨å¾å¤æ®é人ç¼ä¸å·²ç»ä¸å²éèãçå¸ç»ä¸çå·ï¼è¿æ´å¢å äºéæ©åºåé¾ä½ä¸ºå®ç°ç xLog è¢«å¹¿æ³æ¥åçé¾åº¦ã\n2. é¾ä¸æä½é½æ¯éæåä¸å¯æ¤éçï¼è¿å¯¼è´ç¨æ·æ æ³çæ£å é¤ä¸ç¯æç« ï¼éè¿åºåé¾åå²å¯ä»¥çå°æç« çä¿®æ¹è®°å½ã\n\n## æªæ¥è®¡å\n\nç®åè¿åªæ¯ä¸ä¸ªæå°åå¯ç¨äº§åï¼åè½å¯è½è¿ä¸å¤ªä¸°å¯ï¼ä½æªæ¥ä¼å¢å 主é¢ç³»ç»åæä»¶ç³»ç»ï¼æ¥æä¾æ´ä¸°å¯çæ ·å¼ååè½éæ©ã\n\nå¦å¤è¿è®¡åå¨è·åæ¶çåå客ä¹é´çè¿æ¥ä¸åæ´å¤æ¢ç´¢ï¼å¸æå¯ä»¥è®©åå客(~~è䏿¯æè
¾å客~~)è¿ä»¶äºå徿´æè¶£ä¸äºã"},{"slug":"uk-travel-lake-district","title":"è±å½æ
游VLOG | è±æ ¼å
°æ¹åº","tags":["vlog"],"body":"ð 2022 å¹´ 4 æ 10 æ¥ - 2022 å¹´ 4 æ 14 æ¥\nð The Lake District in North West England"},{"slug":"obsidian","title":"åºäº Obsidian ççæ´»è®°å½ç³»ç»","tags":[],"body":"æ£å¦æå¨ [2020 å¹´ç»æ»ç»](/2020) 䏿å°ï¼æä¸ç´å¨ç¨ Notion ååå¼¹ç¬è®°ï¼ç°å¨å®æäºäº¿ç¹ç¹ä¸ä¸æ ·ï¼ç°å¨æä»¬å°±æ¥éæ°çª¥æ¢ä¸ä¸æç®åççæ´»è®°å½ç³»ç»\n\n**æ¥è®°**\n\n\n\n**å¨è®°**å**æè®°**\n\n\n\n**å¹´è®°**\n\n\n\nå Notion åå¼¹ç¬è®°\n\n<div style=\"width: 50%\" >\n<img src=\"./attachments/bafybeie4dklkwdhw7ch3hcrucsj4oanecti53px7i454kaeeihkyjsfjy4.png\" />\n</div>\n\nåçäº Obsidian 强大çèªå¨åè½ååæé«çèªç±åº¦ï¼æ¥/å¨/æ/å¹´ç¬è®°éè¿é¢è®¾æ¨¡æ¿èªå¨çæï¼äºç¸èå¨ï¼éè¦æå¨å¤ççé¨åå¾å°\n\nå
¨é¨æä»¶å·²ä¸ä¼ è³ GitHubï¼<https://github.com/DIYgod/DIYgod-Obsidian-Starter>ï¼å
æ¬ä¸»é¢ãæä»¶ãé
ç½®æä»¶ãèªå·±å®å¶çæ ·å¼ãæ¨¡æ¿æä»¶ãç¤ºä¾æä»¶çï¼åªæ¯ä½ä¸ºä¸ä¸ªç¤ºä¾ï¼è¯·æ ¹æ®èªå·±å®é
æ
åµä¿®æ¹\n\nè¿äºä¸è¥¿ä¹ä¸çæ¯æä¸äºå¤æï¼ä½å
¶å®ç¨èµ·æ¥å¾ç®åï¼èªç±åº¦å坿©å±æ§ä¹å¾å¼ºï¼ä¸é¢ææ¥è¯¦ç»ä»ç»\n\n## ç»æ\n\nç®å½ç»æå¦æ¥è®°å¾å·¦ä¾§æ æç¤º\n\n```\nâââ OKR.md\nâââ Journal\n âââ 2022\n âââ W1\n | âââ 2022-01-01.md\n | âââ 2022-W1.md\n âââ 2022-01.md\n âââ 2022.md\n```\n\næ¯å¤©ä¼èªå¨å¨æ¬å¨çæä»¶å¤¹ä¸çæå½å¤©çæ¥è®°æä»¶ `YYYY-MM-DD.md`ï¼æ¯å¨ä¼èªå¨æ°å»ºä¸ä¸ªå¨æä»¶å¤¹ `[W]ww` åå¨è®° `YYYY-[W]ww.md`ï¼æ¯æä¼èªå¨çææè®° `YYYY-MM.md`ï¼æ¯å¹´ä¼èªå¨æ°å»ºä¸ä¸ªå¹´æä»¶å¤¹ `YYYY` åå¹´è®° `YYYY.md`ï¼æ´æ£ï¼ä¸æ¯èªå¨ï¼ä»ç¶éè¦å½ä»¤é¢æ¿æå¨è§¦åï¼\n\nè¿äºæä»¶çå
容ä¹é½æ¯æ¨¡æ¿é¢è®¾å¥½çï¼å·²ç»èªå¨å¡«å
äºæ¥æãæ¬å¨æ OKR åæ°åå¾è¡¨ï¼çè³å½å¤©çä½ç½®ã天æ°ãæç¸çä¿¡æ¯ï¼è¿çåºäºè®°å½å½å¤©ç¶æå卿çä½ç½®\n\nå¤é¢æä¸ä¸ª OKR æä»¶ï¼å¤§æ¦åå¹´æ´æ°ä¸æ¬¡ï¼éé¢è®°å½è¿åå¹´ç人çç®æ ï¼å
¶ä¸æä¸äºç®æ æ¯éè¦æ¯å¤©æç»åªåçï¼æ¥è®°ç³»ç»çå¾å¤§é¨åå°±æ¯å´ç»è¿äºç®æ æ¥æå»ºç\n\nç®å½ç»æä¸»è¦éè¿ [Periodic Notes](https://github.com/liamcain/obsidian-periodic-notes) å®ç°ï¼æ¨¡æ¿ä¸»è¦éè¿ [Templater](https://github.com/SilentVoid13/Templater) å [Dataview](https://github.com/blacksmithgu/obsidian-dataview) åæ ¸å¿æä»¶ Templates å®ç°\n\n## æ¥è®°\n\n\n\n### Info\n\nInfo æ¯èªå¨çæçå½å¤©ä¿¡æ¯ï¼å
æ¬æåå¹´æå¨è®°å OKR ç龿¥ï¼ä½ç½®ã天æ°ãæç¸çä¿¡æ¯\n\nä½ç½®ã天æ°ãæç¸ä¿¡æ¯æ¥èª Templater çè°ç¨ç³»ç»å½ä»¤åè½\n\nè·åä½ç½®å天æ°\n\n```sh\ncurl wttr.in/\"$(curl -s --header \"user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36\" https://api.ip.sb/geoip | /opt/homebrew/bin/jq -r \".city\" | sed 's/ /%20/')\"\\?format=\"%l+%c%t\"\n```\n\nè·åæç¸\n\n```sh\ncurl wttr.in/\"$(curl -s --header \"user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36\" https://api.ip.sb/geoip | /opt/homebrew/bin/jq -r \".city\" | sed 's/ /%20/')\"\\?format=\"%m\"\n```\n\n### OKR Tracker\n\nOKR Tracke è·è¸ªè®°å½å½å¤©å½åé¶æ®µç OKR 宿ç¶åµï¼æ¯å¦ `Sleep:: 10.3` 代表ä»å¤©ç¡äº 10.3 å°æ¶ï¼`Healthy Eating:: 5` 代表ä»å¤©åå¾å¾å¥åº·ï¼`::` æ¯ Dataview è¯æ³ï¼ä¼ç»å½å页é¢å¢å \n\n```js\npage = {\n ...\n \"Sleep\": 10.3,\n \"Healthy Eating\": 5,\n}\n```\n\nè¿æ ·ç屿§ï¼æ¹ä¾¿æ¥ä¸æ¥å¨å¨æå¹´è®°ä¸ååæåå¤ç\n\nå
¶ä¸ O1 KR2 䏿ä¸ä¸ªç¹æ®çå表ï¼éè¿ API å±ç¤ºäºå½å¤© Toggl Track æ°æ®ï¼ Toggl Track æ¯ä¸ä¸ªæ¶é´è®°å½åºç¨ï¼è®°å½ææ¯å¤©å¨å项äºå¡ä¸è±è´¹çæ¶é´ï¼æ¯å¦ççªæ¶é´ãå·Bç«æ¶é´ã工使¶é´çï¼è¿äºæ°æ®åæ ·å¯ä»¥åæ æä»å¤©ççäº§åæ¯å¦ç¬¦å颿\n\n### Notes\n\nè¿éæ¯çæ£åæ¥è®°çå°æ¹ï¼å¤æ°æ¯ä¸äºæµæ°´è´¦ï¼æ¥å¼¥è¡¥æå¤©çç³ç³çè®°å¿åï¼å¶å°ä¹ä¼åä¸äºæ³æ³\n\n## å¨è®°åæè®°\n\n\n\n### Jornal List\n\nJornal List æ¯èªå¨çæçæ¬å¨/æå
¨é¨æ¥è®°çå表ï¼éè¿ Dataview å®ç°\n\nè·åå
¨é¨æ¥è®°\n\n```js\n// Week\nwindow.pages = dv\n .pages(`\"${dv.current().file.folder}\"`)\n .where((p) =>\n p.file.name.match(\n new RegExp(`${dv.current().file.name.split(\"-\")[0]}-\\\\d{2}-\\\\d{2}`),\n ),\n )\n .sort((p) => p.file.name);\n\n// Month\nwindow.pages = dv\n .pages()\n .where((p) =>\n p.file.name.match(new RegExp(`${dv.current().file.name}-\\\\d{2}`)),\n )\n .sort((p) => p.file.name);
318\n```\n\n渲æå表\n\n```js\ndv.paragraph(window.pages.file.link.join(\", \"));\n```\n\n### Summary\n\nè¿éæ¯ææ«åæ»ç»ååæçå°æ¹ï¼å¯¹åºæ¥è®°éç Notes\n\n### OKR Tracker\n\nå¨è¿éå¤çååæå
¨é¨æ¥è®°éç OKR æ°æ®ï¼æåçæåæ°ï¼å¯¹åºæ¥è®°éç OKR Tracker\n\nå®éè¿ Dataview å®ç°ï¼ä»¥ç¡ç 为ä¾ï¼â¥ 6.5 å°æ¶ä¸ ⤠8.5 å°æ¶è®¡ä¸ºææç¡ç ï¼ææç¡ç 天æ°å æ»å¤©æ°çç¾åæ¯å³ä¸ºå¾å\n\n```js\nlet count = 0;\nlet total = 0;\nfor (let page of window.pages) {\n if (page[\"Sleep\"]) {\n count++;\n if (page[\"Sleep\"] >= 6.5 && page[\"Sleep\"] <= 8.5) {\n total++;\n }\n }\n}\nconst score = ((total / count) * 100).toFixed(2);\ndv.el(\"div\", score + \"%\", {\n cls:\n score > 80 ? \"score-class1\" : score > 50 ? \"score-class2\" : \"score-class3\",\n});\n```\n\nåèªå·±å ä¸ç¹ CSSï¼> 80 åæ¾ç¤ºä¸ºç»¿è²ï¼50-80 åæ¾ç¤ºä¸ºé»è²ï¼< 50 åæ¾ç¤ºä¸ºçº¢è²ï¼è¿æ ·å°±å¯ä»¥å¾æ¸
æ¥çåºæ¬å¨/æçç¡è§æ
åµï¼å¾éæ¯é»è²åºé´ï¼ä¸å¤ªå¥½ä½è¿å¯ä»¥æ¥åï¼ä¸ä¸ªæéè¦å¤çæ\n\n### Statistics\n\nå¨è¿éæç¡ç åè¿å¨æ°æ®çæç»è®¡å¾ï¼å¯ä»¥æ¸
æ¥çåºç¡ç æ¶é¿è¿æ¯æºä¸ç¨³å®çï¼è¿å¨å¤©æ°åæ¶é¿é½å¾å°\n\nç»è®¡å¾éè¿ [Obsidian Charts](https://github.com/phibr0/obsidian-charts) ç»å¶ï¼ç¡ç ç»è®¡å¾ä»£ç å¦ä¸\n\n```js\nconst times = [];\nfor (let page of window.pages) {\n times.push(page[\"Sleep\"]);\n}\n\nconst chartData = {\n type: \"line\",\n data: {\n labels: window.pages.file.name.array(),\n datasets: [\n {\n label: \"Sleep Time\",\n data: times,\n pointBackgroun
318dColor: \"#6c40d6\",\n borderColor: \"#6c40d65c\",\n tension: 0.4,\n spanGaps: true,\n },\n ],\n },\n options: {\n scales: {\n y: {\n type: \"linear\",\n min: 2,\n max: 13,\n },\n },\n },\n};\n\nwindow.renderChart(chartData, this.container);\n```\n\n### Finance\n\næ¬æçè´¢å¡æ°æ®é¥¼ç¶å¾ï¼éè¿ MoneyWiz çæ\n\n## å¹´è®°\n\n\n\nå¹´è®°ä¸å¨è®°æè®°ç¸ä¼¼åº¦ä¹å¾é«ï¼ä½éè¿æ©å¤§æ¶é´å°ºåº¦ï¼å¯ä»¥å¾åºå¾å¤æ°çæç¨ç»è®º\n\næ¯å¦åæ ·çç¡ç åè¿å¨ç»è®¡å¾ï¼å¨å¹´ç尺度éå°±å¯ä»¥çåºææ¯å¨ 5 æåºç¡ç å¼å§å¤±æ§ï¼å¨è¿æé´è¿å¨ä¹ä¸æäºï¼åä» 6 æä¸æ¬å¾å°ç¼è§£\n\nè¿ææ°çä½éä½èç»è®¡å¾ï¼å¯ä»¥çåºæçä½éåä½èé½å¨ç¨³æ¥ä¸éï¼å¥åº·ç¶åµæææ¾æ¹å\n\nå¹´è®°è¿åºç°äºæ°çä¸ç§çå¾ï¼è®°å½è¾¾å°ç®æ çæ¥åï¼éè¿ [Heatmap Calendar](https://github.com/Richardsl/heatmap-calendar-obsidian) ç»å¶ï¼ä»¥ç¡ç 为ä¾\n\n```js\nconst calendarData = {\n entries: [],\n};\n\nconst pages = window.pages\n .where((p) => p.Sleep && p.Sleep >= 6.5 && p.Sleep <= 8.5)\n .sort((p) => p.file.name);\n\nfor (let page of pages) {\n calendarData.entries.push({\n date: page.file.name,\n intensity: page.Sleep,\n });\n}\n\nrenderHeatmapCalendar(this.container, calendarData);\n```\n\n## å±é\n\nåå¼¹ç¬è®°æä¸ä¸ªå¾éè¦ç任塿¸
忍¡åï¼å¦ä¸é¢åå¼¹ç¬è®°æªå¾æç¤ºï¼æä¹å伿ä¸å¨ç任塿¸
å齿ååå¨ç¬è®°éï¼ä½ç°å¨æ¥è®°é½æ¯å½å¤©èªå¨çæï¼æ æ³æå计åï¼æä»¥ææä»»å¡æ¸
å齿¹ç¨äºæ»´çæ¸
åæ¥ç®¡çï¼æ»´çæ¸
åå½ç¶ä¹å¾å¥½ç¨ï¼ä½æ¯è¿æ ·å°±å°äºä¸æ¥è®°çèå¨ï¼æå¨æ·»å åä¼é æå¾å¤éå¤å·¥ä½ï¼å°±ä¸æ¯å¾ç½\n\næåéè¦æ³¨æçæ¯ï¼å³ä½¿æè¿æ ·ççæ´»ç®¡çç³»ç»ä¹ä¸æå³ççæ´»å°±ä¼ä¸åæç
§é¢æï¼å°±åä¸é¢ä¸¾ä¾ç 5 æåºç¡ç 失æ§äºä»¶ï¼ä¸æ¦æ¾æ¾å¤±æ§ä»ä¼åçï¼ç¬è®°ä¼åè¯æçæ´»æ£å¨å¤±æ§ï¼ä½å¦ä½åå°æ£è½¨åè¿½èµ¶ä¸ OKR è¿æ¯è¦é èªæ§åååæç宿æ»ç»ãåæåæ¹è¿"},{"slug":"uk-travel-hp","title":"è±å½æ
游VLOG | åå°å¸¦ä½ éå婿³¢ç¹å¶çå","tags":["vlog"],"body":"ð 2022 å¹´ 4 æ 19 æ¥\nð Warner Bros. Studio Tour London - The Making of Harry Potter"},{"slug":"unidata","title":"ð¡ Unidata - æä¾äººç±»å好ç Web3 æ°æ®ç便æ·è®¿é®","tags":["æ°å"],"body":"Web3 çé
åå¨äºæ°æ®å±äºç¨æ·èªå·±ï¼ä½ç±äºåºåé¾ä½æçæçå设计ï¼åå 䏿°æ®æ ¼å¼æ åç缺失ï¼è®¿é®åå±ç¤ºèªå·±æç¨æ·ç Web3 æ°æ®æ¯ä¸ä»¶æåº¦å°é¾çäºæ
ãæä»¥æåäºå¼æºé¡¹ç® [Unidata](https://unidata.app/)ï¼ç» Web3 å¼åè
æä¾äººç±»å好ç Web3 æ°æ®ç便æ·è®¿é®ã\n\nEthereum NFT æ°æ®æ¯ç®å Web3 æå¸¸ä½¿ç¨çæ°æ®ï¼æä»¥æä½¿ç¨ Ethereum NFT æ¥ä¸¾ä¾ã<!--more-->\n\n1. Ethereum NFT ä½¿ç¨ EIP-721 æ åï¼å®çæ°æ®æ ¼å¼é常âçµæ´»âï¼æ¯å¦ä¸ä¸ª NFT çå¾çå¯è½æ ¹æ®åå¸è
ä¸åçåå¥½ä½¿ç¨ `image` `image_url` æ `animation_url` çåç§ä¸ç»ä¸çåæ®µï¼çè³æ ¹æ¬ä¸æ¯ä¸ä¸ªå¾çï¼è¿å¯è½æ¯è§é¢ã3D 模åçï¼è¿ç»å端å±ç¤ºå¸¦æ¥äºå¾å¤éº»ç¦ã\n\n2. è·åä¸ä¸ªå°åæ¥æçå
¨é¨ Ethereum NFT ä¹é常麻ç¦ï¼ç±äº Ethereum çè®¾è®¡ï¼æ³è¦è·åå®éè¦è¯»åè¿ä¸ªå°åçå
¨é¨äº¤æè®°å½ï¼èä¸ Ethereum 䏿¢ä¸»ç½ï¼è¿æ PolygonãBSCãArbitrumãfantomãGnosis çåç§ä¾§é¾ï¼è¿å¯¹å端æ¯ä¸ä¸ªä¸å¯è½çå·¥ä½ï¼ç®ååç§åæ ·çæ°æ®ç´¢å¼æå¡å¯ä»¥é¨åè§£å³è¿ä¸ªé®é¢ï¼ä½è¿äºæå¡è¿åçæ°æ®æ ¼å¼åä¸ç¸åãåè½åæä¼å£ã忝æäºä¸åçé¾ï¼åºè¯¥å¦ä½éæ©å¢ï¼\n\né对第ä¸ä¸ªé®é¢ï¼Unidata 设计äºä¸ç³»åå好åç»ä¸çæ°æ®æ ¼å¼ï¼å为 ProfilesãLinksãAssetsãNotes å个é¨åãEthereum NFT å±äº Assets çæ ¼å¼ãéè¿ Unidata è¿åçåºå®çæ°æ®æ ¼å¼ï¼å端ä¸åéè¦å麻ç¦çéé
æ··ä¹±çæ°æ®æ ¼å¼çå·¥ä½ã\n\nå¦å¤å¼å¾ä¸æçæ¯ä¸æ¢ Ethereum NFTï¼Unidata ç®åè¿æ¯æäº Solana NFTï¼Ethereum NFT å Solana NFT çæ°æ®æ ¼å¼ä¹æ¯ç»ä¸çï¼Unidata è¿å°ç»§ç»æ¯ææ´å¤ç Assets æ¥æºï¼ä»ä»¬çæ ¼å¼ä¹é½ä¼æ¯ç»ä¸çã\n\nè§£å³å®ç¬¬ä¸ä¸ªé®é¢ï¼ç¬¬äºä¸ªé®é¢ä¹å°±å¾å®¹æè§£å³äºãUnidata çåæ³æ¯æå个æå¡è¿åçæ°æ®ç»ä¸æç¸åçæ ¼å¼å¹¶åèåãæ¯å¦ OpenSea æå¡æ¯æäºä¸»ç½ï¼Alchemy æå¡æ¯æäº Polygonï¼Moralis æå¡æ¯æäº BSCãArbitrumãfantomï¼POAP æå¡æ¯æäº Gnosis é¾ç POAP NFTãéè¿ Unidata ä¸è¡ä»£ç å°±å¯ä»¥åæ¶ä½¿ç¨è¿äºæå¡åæ¶è·åå°ä¸»ç½ãPolygonãBSCãArbitrumãfantomãPOAP çææ NFT äºãå¯ä»¥[å¨è¿éçå¨çº¿æ¼ç¤º](https://unidata.app/guide/assets/ethereum-nft/#live-demo)ã\n\n\n\né¤äº Assetsï¼Unidata è¿æ ProfilesãLinksãNotes ä¸ä¸ªé¨åã\n\n[Assets](https://unidata.app/guide/assets/) ç®åæ¯æäº Ethereum NFTï¼MainnetãPolygonãBSCãArbitrumãFantomãGnosisãPOAPï¼ãSolana NFTãAlchemyãSolscanãMoralisãOpenSeaã\n\n[Notes](https://unidata.app/guide/notes/) ç®åæ¯æäº Mirror EntryãEthereum NFT Activityï¼MainnetãPolygonãBSCãArbitrumãFantomãGnosisãPOAPï¼ãRSS3ã\n\n[Profiles](https://unidata.app/guide/profiles/) ç®åæ¯æäº ENSãCrossbellãInfuraã\n\n[Links](https://unidata.app/guide/links/) ç®åæ¯æäº CyberConnectã\n\nè¿æå¾å¤æ£å¨ä¸ææ·»å ä¸ï¼å¯ä»¥[å¨ææ¡£çç®åæ¯æçæææå¡åæ°æ®æº](https://unidata.app/guide/#supported-sources)ã\n\n[](https://github.com/DIYgod/Unidata) [](https://discord.gg/ggrfhdS9Fe) [](https://twitter.com/Unidata_)\n\n"},{"slug":"job","title":"RSS3 æä¾æé
·æçæ³æèªç±ç弿ºè¿ç¨å·¥ä½","tags":[],"body":"> â妿æå¤©å ï¼é£ä¸å®æ¯å¾ä¹¦é¦çæ¨¡æ ·ãé£éä¿¡æ¯èªç±å°æµéï¼ä¹¦ç±èªç±å°åºçï¼äººä¸äººèªç±å°è®¨è®ºãâ\n\n人类ç产ï¼ä¼ æåååä¿¡æ¯çæå©ä¸åºè¯¥è¢«ææ¡å¨ä»»ä½æ°æ®åäºèç½å¹³å°æä¸ï¼è¿æ¯å±äºæ°å人类çåºæ¬æå©\n\næä»¬é½æè¯å°ç°å¨äºèç½è¿ä¸è¿ç§çæ³ç¸å·®çè¿ï¼å¦æä½ æ¿æä¸ºå®ååºäº¿ç¹ç¹æ¹åï¼ä¸èµ·æ¥å§ ð\n\n<!--more-->\n\n## æä»¬æ¯è°ï¼\n\næä»¬æ¯ Natural Selection Labs èªç¶éæ©å®éªå®¤ï¼è´åäºæé ä¸ä¸ªä¿¡æ¯èªç±æµéçäºèç½\n\næä»¬**ææä½åé½ä¼å¼æº**å¨ GitHubï¼[https://github.com/NaturalSelectionLabs](https://github.com/NaturalSelectionLabs)\n\næä»¬è´åäºä¿¡æ¯èªç±æä»¥å½ç¶ä¹ä¼å¸®å©æåèªèº«è·å¾æå¤§çèªç±åº¦ï¼\n\næä»¬æ¯ä¸ªåå¸å¼ç»ç»ï¼æææå齿¯**è¿ç¨å·¥ä½**ï¼æååå¸å¨ä¸å½ãæ¥æ¬ãæ°è¥¿å
°ãè±å½ãç¾å½ãå æ¿å¤§çå°ï¼æä»¬é¼å±æåèªç±æµéï¼ä¸ç®¡å¨åªï¼æä»¬é½ä¼å°½åæä¾å
æ¬ä½ä¸éäºç¾è¯ç»¿å¡ç§»æ°åå©åå¯ä»¥å¨å½å°èªç±èéçæ´»çå¾
é\n\næä»¬æå¡**å¼¹æ§å·¥ä½æ¶é´**ï¼å欢ç½å¤©ç¡è§æä¸å·¥ä½æè
ç½å¤©ç©èæä¸å·¥ä½çæºæ¢°äººä¹å®å
¨æ²¡é®é¢\n\næä»¬æè¶³å¤çèµæ¬å¹¶å¯¹ç¬¦åæä»¬ææç人ææçæå¤§çå°é忝«ä¸åå¬çå¾
é\n\næä»¬æåç®åå
æ¬ä¸ä½æ°è°£è¯´å±ææ [St.Z æ¡è¤](https://music.163.com/#/artist?id=12701196)ï¼ä¼æ¶é´ç©¿æ¢çèªç±å¼æºè¿½å¯»è
[Atlas](https://atlasoin.xyz)ï¼æ
åæé«ç [Usagi](https://tuzi.moe)ï¼æä¼ç
§é¡¾ç«ç«åçæ´»ç [Anny](http://zui-c.com) ï¼42k GitHub Star çèæ° [DIYgod](https://github.com/DIYgod)ï¼ææä»¬èå¨ä¸èµ·å´å¤©å¤©è£
èç [Joshua](https://joshua.rss3.bio/)ï¼ä¸ä¸ªé¡¶å个ä»ä¹é½ä¼ç[ç³åµ](https://candinya.com)ï¼ç¨³éé è°±åæ§åºç Albert ï¼æ¸©æç´ç·åå¤ï¼ä½è°æè¶£çå§å§ Raina æé³......\n\nå¯ä»¥ç¹[è¿é](https://gather.town/invite?token=qK0VM80sY7Aj0-hbBUCLaRt7qg6m55W2)åè§æä»¬ç线ä¸åå
¬å®¤\n\n\n\n## æä»¬å
·ä½å¨åä»ä¹ï¼\n\nåå£å·ã忢¦äººäººé½ä¼ï¼ä½åè¿å¤§ççæ³ä¹éè¦ä¸æ¥æ¥èè¸å®å°æ¥å®ç°ï¼è¿ä¹æ¯ä¸ºä»ä¹æä»¬éè¦æ´å¤å¿åéåçæåï¼æä»¬ç®ååäºè¿äºå·¥ä½ï¼ä½è¿æå¾å¤å·¥ä½åªé ç°æçåéå¾é¾å®æ\n\n### RSS3\n\nRSS3 æºäº RSS ï¼æ¯ Web3 æ¶ä»£çä¿¡æ¯æµãä½ä¸º Web 3.0 æ¶ä»£çä¿¡æ¯åå弿¾åè®®ï¼å®éè¿æä¾å
容ãå忏 éä¸ç»æµç¯å¢ï¼æ¨å¨æä¸ºæªæ¥ç¤¾äº¤ãå
å®¹ãæ¸¸æåçµååå¡åºç¨çæ¯æ±\n\nå®ç½ï¼[https://rss3.io](https://rss3.io)\n\nGitHubï¼[https://github.com/NaturalSelectionLabs/RSS3](https://github.com/NaturalSelectionLabs/RSS3)\n\n### Web3 Name Service\n\nä¸ä¸ªä¸º Web3 ä¸çæä¾çå
¼å®¹å
容çç¨æ·åæå¡ï¼è´åäºå
¼å®¹ææç¨æ·ååè®®ï¼å
æ¬ ENS å RNS ï¼ä¸º RSS3 æä»»ä½éè¦ç¨æ·åç Decentralized application æä¾åºç¡æå¡\n\nGitHubï¼[https://github.com/NaturalSelectionLabs/Web3-Name-Service](https://github.com/NaturalSelectionLabs/Web3-Name-Service)\n\n### Web3 Pass\n\nRSS3 åè®® v0.2.x çè½å°æ¢ç´¢äº§å\n\n> RSS3 Bio - ä½ å¨ Web1 ä¸æä¸ªäººç½ç«ï¼å¨ Web2 䏿 Twitter å Instagram 页é¢ï¼ç°å¨å¨ Web3 䏿 RSS3 Bio\n\nå®ç½ï¼[https://rss3.bio](https://rss3.bio/)\n\nGitHubï¼[https://github.com/NaturalSelectionLabs/Web3Pass](https://github.com/NaturalSelectionLabs/Web3Pass)\n\n### Re: ID\n\nRSS3 åè®® v0.1.x çè½å°æ¢ç´¢äº§å\n\n> Re:ID æ¯ä¸ä¸ªæµè§å¨æ©å±ï¼å¯ä»¥å°ä½ çæ¨æåæ¥å°å±äºä½ çåºäºå å¯ç RSS3 æä»¶ä¸ã\n\nå®ç½ï¼[https://reid.town](https://reid.town/)\n\nGitHubï¼[https://github.com/NaturalSelectionLabs/Re-ID](https://github.com/NaturalSelectionLabs/Re-ID)\n\n### Revery\n\nRSS3 åè®® v0.3.x çè½å°æ¢ç´¢äº§åï¼ç®å主åå¼åä¸\n\nå
318®ç½å GitHub ææ \n\n### RSS3-Hub-Data\n\nå¨åå¸å¼èç¹ä¸çº¿ä¹åï¼éè¿å¨ GitHub å
¬å¼ææ RSS3 ç¨æ·æ°æ®æ¥å®ç°ä¿¡æ¯èªç±åå
¬å¼ï¼æªæ¢åè¿ç¯æç« æ¶æ 13000+ ç¨æ·ï¼51000+ æ¡å
³ç³»ï¼643000+ æ¡èµäº§ï¼å¯ä»¥å¨[è¿é](https://dashboard.rss3.dev/)å[è¿é](https://github.com/NaturalSelectionLabs/RSS3-Hub-Data/blob/main/statistics/overall.json)æ¥ç宿¶ç»è®¡æ°æ®\n\nGitHubï¼[https://github.com/NaturalSelectionLabs/RSS3-Hub-Data](https://github.com/NaturalSelectionLabs/RSS3-Hub-Data)\n\nå¦å¤è¿æ RSS3 é
å¥ç SDK ãHub ãæä»¶çï¼å¯ä»¥å¨å¢éç [GitHub](https://github.com/NaturalSelectionLabs/RSS3) æ¾å°æ´å¤ï¼ä¹å¯ä»¥éè¿[å客](https://www.notion.so/fcbc0cea4cc4487c88f1872066254bf3)å [Twitter](https://twitter.com/rss3_) æ´å¤å°äºè§£æä»¬\n\n## æä»¬ä¼ç»ä½ æä¾ä»ä¹ï¼\n\n- ç´æ¥åä¸äºèç½åºå±é©å½ã让ä¸çå徿´å¥½çæºä¼\n- ä¸ä¸ç顶级ç Web3 项ç®ä¼é¢åå使ºä¼\n- ä¸ç¾¤æç±ä¸æå®åçå°ä¼ä¼´\n- ä¸ä¸ªä½å**å
¨é¨å¼æº**çå¼åæ¹å¼\n- ä¸ä¸ªå¯ä»¥**æ°¸è¿è¿ç¨**ãå
¼é¡¾è¯ä¸è¿æ¹ãæ¶é´çµæ´»ç工使¨¡å¼\n- é常æç«äºåï¼è®©ä½ è¿ç¦»âçæ´»çèä¸âçèªé
¬\n- ä¸å è¶
æå¿çç¥ç§ç¦å©å¤§ç¤¼å
\n- çæ´»ãç¾è¯ã绿å¡ãç§»æ°åå©\n- ä¸éå¶å½ç±ãç±å¥½æä»»ä½ä¸ªäººå好... LGBTQ+ 群ä½å好\n- è½»æ¾çæ°å´ãæä»¬ä¸ºæä»¬çå¢éåé çæåæå°èªè±ª\n- ä¸ä¸ªèäºä¹åå¯ä»¥ååè¾è®²çæ
äº :D\n\n## æä»¬å¸æä½ ï¼\n\n- 认åæä»¬çä»·å¼è§ï¼ç¸ä¿¡äººç±»è½å¤æå¹¶ä¸éè¦ææ´å¥åº·ï¼æ´å
¬æ£çæ¹å¼æ¥ç产ï¼ä¼ æåååä¿¡æ¯\n- 对信æ¯èªç±æµéçç®æ æè¶³å¤ççæ
åè§æ\n- è¶
è¶åé¾äººçç¼ç¨ /设计è½å\n- 积æä¸»å¨ãæ´»è·çæç»´è½åï¼ä¸æ¯ææå½ä¸ªæ èç工使ºå¨ãèºä¸é\n- é常强çå¦ä¹ è½ååææ¿ï¼å¯ä»¥å¿«é䏿æªç¥é¢å\n- æè¶³å¤çåæ°ææéæ§è§ååå»ºç«æ°äºç©\n- æ£å¸¸äººçæ²éååä½è½å\n- 对 Web3.0 é¢åæåºç¡çäºè§£å认ç¥\n- 对å¢éåç»æè´è´£ï¼èªå¾ï¼æåæè½åï¼æåä½ç²¾ç¥\n- æåºæ¬çè±è¯å¬è¯´è¯»åè½å\n- ä¸ä»½å¯ä»¥è®©æä»¬æ´å¥½äºè§£ä½ çç®å\n\n## æä»¬éè¦çæè½ï¼\n\n- **å端**ï¼çç»ä½¿ç¨ Vue React ä¹ä¸ï¼åä¸è¿å¼æºé¡¹ç®\n- **å
¨æ **ï¼çç»ä½¿ç¨ Vue React ä¹ä¸ï¼çç»ä½¿ç¨ Node.js ï¼çç»ä½¿ç¨ Go æå¯ä»¥å¿«é䏿ï¼åä¸è¿å¼æºé¡¹ç®\n- **å»ä¸å¿åç³»ç»**ï¼ æå¯ç å¦è®¡ç®æºç½ç»ç论åºç¡ï¼çç»ä½¿ç¨ Go Node.js ä¹ä¸æå¯ä»¥å¿«é䏿ï¼å
³äºå»ä¸å¿åç³»ç»æç¬ç«çæ³æ³ï¼å¦ç论ãè®¾è®¡ãæªæ¥ãåºæ¯ççï¼åä¸è¿å¼æºé¡¹ç®\n- **ç§»å¨ç«¯**ï¼ç®ååªé iOS æ Android é«çº§å¼åå·¥ç¨å¸ï¼æè½åè´è´£å带é¢ä¸ä¸ªå®æ´äº§åçå¼åï¼åä¸è¿å¼æºé¡¹ç®\n- **è¿è¥**ï¼è³å°ä¸¤å¹´å
¨èäºèç½è¿è¥å·¥ä½ç»éª åä¸è¿åå¸å¼ãåºåé¾é¡¹ç®çè¿è¥ï½å®ä¹ ãåºå± â å¸åºè¥éå¦ãä¼ æå¦ å å项 conjoint or double major è®¡ç®æºç§å¦ã软件工ç¨\n- **å¸åº**ï¼è³å°ä¸¤å¹´å
¨èå䏿å±ãå¸åºå·¥ä½ç»éª åä¸è¿åå¸å¼ãåºåé¾é¡¹ç®çå䏿å±ãå¸åºå·¥ä½ ï½ å®ä¹ ãåºå± â åä¸ãå¸åºè¥é å å项 conjoint or double major è®¡ç®æºç§å¦ã软件工ç¨\n- **设计**ï¼ä¸ä»½æ¼äº®çä½åé\n- **è¡æ¿å©çï¼å®ä¹ ï¼**ï¼çµæ´»çåºååè§£å³é®é¢çè½åï¼æçæé«çèªæäºº\n\n**ç®åæéå°åï¼ [email protected]**\n\n```\nâ\n â â\n ''' â²â± '''\n```\n\næç¸ä¿¡ä½ ä¸å®ä¼æä¸ºæä¼å¤§çå½çï¼æ³¢åï¼"},{"slug":"2020","title":"2020 å¹´ç»æ»ç»","tags":["å¹´ç»æ»ç»"],"body":"ä»å¹´å¯¹å¾å¤äººæ¥è¯´é½æ¯éå寻常çä¸å¹´ï¼å¯¹ææ´æ¯å¦æ¤\n\n### ð¦ æ°å ç«æ
\n\n1 æçåçæ°å ç«æ
ç´å°ä»å¤©è¿å¨æç»ï¼ç«æ
åæçææ
åç»æè¿ååå¨ç®ï¼1 æ 20 æ¥ä¸å¤ä¹é´å
¨å½çå£ç½©åæ¿èæ ¹åé»è¿è¢«æ¢è´ä¸ç©ºãäºèç½å®å
¨è¢«è´é¢ç«æ
è¯é¢å æ®ãææäººæ°åç«ç®ä¸æ ·çå¢ãåçº¿é²æ¤ç¨å严é紧缺ãä¸å®¶ç»æå被ææãæ¦æ±å°åãé³å°ä¸ç©¿çç¡è¡£æ²é£ææ¯ç女å¿ãè¿½çææ¤è½¦æå¿è£èºåå¦çå§å¨ãç»æçæ¹èå»é¢ã躲å¨å®¶é䏿¢ç¹å¤ååäºå 个ææçèªçç±³é¥...\n\nä¸ç«æ
ç¸å
³çäºä»¶ä¹å¤ªå¤äºï¼å
¶ä¸æå 件让æå°è±¡æ·±å»ï¼å¹å¨äººææäº®è¢«è®è¯«ãææäººæ°è¢«éçãæç»çº¢ååä¼çé²ç«ç©èµè¢«ä¼å
ä¾åºæ¿åºå®åè䏿¯ä¸çº¿å»æ¤äººåã#æä»¬è¦è¨è®ºèªç±# è¯é¢å¨å¾®åæè±ä¸ç°ãä¸åå¹´è½»äººå¨æ¹èå»é¢ç
åºä¸è¯»ãæ¿æ²»ç§©åºçèµ·æºããå½å®¶å¤§åæ¨å¹¿âæ²»çâèºççä¸è¯å¶åãå
¬å¸å¨ä¸ä¾åºå£ç½©çæ
åµä¸è¦æ±ç¬¬ä¸å¤©å°±å¤å·¥ãäºä¸ªä¸æ¿çå对çå¦ççå¦éåãæ£è
被æå
éç§åè¢«ç½æ´...\n\nä¸è¿å¹¸è¿çæ¯ï¼æ
åµä¹æ£å¨å¥½è½¬ï¼å½å
ç«æ
æ©å·²è¢«åºæ¬æ§å¶ä½ï¼è¾çç«èä¹å¨å¼è¶³é©¬åçäº
318§å¹¶å·²ç»å¨è±å½ãç¾å½æå
¥ä½¿ç¨ï¼2021 å¤å£åä¸å®é½ä¼å¥½èµ·æ¥ç\n\n### ð å¨ç©æ£®åä¼\n\n3 æ 19 æ¥å¨æ£®åå®ï¼æ¯«ä¸å¤¸å¼ å°è¯´ï¼ç©å¨æ£®çé£ä¸ä¸ªææ¯æçæç 25 å¹´çå½ä¸æå¿«ä¹çæ¶å
ä¹ä¸ï¼åå ä¸ä»
å¨äºæ¸¸ææ¬èº«å¾æ£ï¼æ´éè¦çæ¯å®è¿è®©æç»è¯äºä¸å¤§ç¾¤æè¶£çæåï¼å
·ä½å
容è§[ãæç卿£®æ¥è®°ã](https://diygod.me/animal-crossing/)ï¼ï¼æ¯å¤©è·ä¸ç¾¤æåå°å¤ä¸²é¨ï¼äºé礼ç©ãåä¿¡ï¼ä¸èµ·éé±¼ãçæµæé¨ãç«èèªå·±çæ°è¡£æï¼äº¤æµå¤§å¤´èèµ°å¿ï¼çè°å²ä¸åæ¥äºéªé©¼åäººåæµæé¨ãè°å²ä¸åæ¬è¿æ¥äºå¯ç±çå°å¨ç©ãè°å²ä¸æå¥½ççå®¶å
·å¯ä»¥æ¸æ¸...妿ä»å¤©æ²¡æä»ä¹æ°é²äºï¼åäºä¸ªäººå´çä¸ä¸ªç«æä¹å¯ä»¥ç©ä¸æä¸ï¼ä¸èæºæ¶æå°±èªå·±å¨å²ä¸æ¼«æ ç®çå°è½¬æ¥è½¬å»ï¼å»æ¾å°å¨ç©è¯´è¯´è¯ï¼å»å°å¨ç©å®¶ä¸²ä¸²é¨ï¼ä¹ æ¯äºç°å®åååå¿«èå¥çæ´»çæå¨è¿éåæå®å
¨ä¸ä¸æ ·çèªå·±\n\nå¯æå¿«ä¹çæ¶å
æ»æ¯å¾çæï¼ææ¸¸æçåå ï¼ä¹æç©å®¶ä»¬çåå ï¼ä¸ä¸ªæåï¼æ°é²æè¤ªå»ï¼å¤§å®¶éæ¸åå½ç°å®çæ´»ï¼çç»å¨æ£®çæ¶é´è¶æ¥è¶å°ï¼æä¹æ¸æ¸ä¸åæå¼å¨æ£®ï¼è·å¾å¤æå乿¸æ¸å¤±å»äºèç³»\n\nè½ç¶ç¥éä¸å¯è½åå°é£æ®µæ¶é´äºï¼å¤©ä¸æ²¡æä¸æ£ççµå¸ï¼éçæé½æï¼ä½æè¿æ¯ä¸ç´æ æ³éæï¼å¹»æ³çæä¸å¤©å次æå¼å¨æ£®ï¼å²æ°åæåè¿å¨é£éï¼ä»ä¹é½æ²¡æå\n\nä¸ä¼å¥¢æ±ä¸åéå°è¿ç§äºï¼åªæ¯å¸æä¸æ¬¡åéå°æ¶å¯ä»¥æ´ä»å®¹å°é¢å¯¹\n\n### ð¬ð§ çå¦\n\n7 æ 12 æ¥æ©ä¸ï¼ä¸ä»¶å¯æçäºæ
æç ´äºæçæä¸¤ä¸ªæçå¹³éçæ´»ï¼ä¸¤åèªå¦ä¸ä»è¶æç¡è§ï¼å¨èªå¦å®æ¹çææä¸ï¼ç¨èªå¦å®æ¹ç»çåé¨å¯ç æå¼äºæçæ¿é¨å¹¶å
¥ä¾µæå§å®¤ï¼åæ°åâå®å
¨æ£æ¥âï¼ä¹åæç¨å°½å
¨åéè¿è论ãè¡æ¿å叿³éå¾ç»´æä½å¤å¤ç¢°å£ï¼éå°äºå¾å¤éå¹»çäºæ
ï¼æåæç»äºæè¯å°ä¸ç®¡æä¹åªåè¿ä»¶äºé½ä¸ä¼æä¸ä¸ªå¥½ç»å±ï¼æä»¥æè¡¡å©å¼åææ¾å¼äºç»´æï¼åæ¶å³å®ç§»æ°\n\nå½ç¶ä¸æ¯åå被å
¥ä¾µå§å®¤åç»´æç¢°å£è¿ä¸ç³»åäºæ
让æååºç§»æ°çå³å®ï¼å®ä»¬åªæ¯ä¸ä¸ªå¯¼ç«ç´¢ï¼åå æå¾å¤ï¼ä½å½æ ¹ç»åºé½æååä¸ä»¶äºï¼æ³æ²»\n\nè½ä¿æ¤å
¬æ°ä½å®
ä¸åä¾µç¯çæ¯æ³æ²»ï¼è½ä¿æ¤å³å¨è
ä¸è¢« 996 ICU çæ¯æ³æ²»ï¼è½ä¿æ¤æ°å æ£è
éç§ä¸è¢«ä¼ 徿»¡å¤§è¡çæ¯æ³æ²»ï¼è½ä¿æ¤å
¬æ°ä¸è¢«å£è¢ç½ªéæå¤ç½çæ¯æ³æ²»ï¼è½ä¿æ¤å
¬æ°åé¡¹åºæ¬æå©åèªç±ç乿¯æ³æ²»\n\næ³æ²»ç缺å¸ä¼å¯¼è´å¾å¤é®é¢ï¼å®ä¸ä»
ä½ç°å¨æå©æ æ³å¾å°ä¿éï¼è¿ä½ç°å¨æ°ä¼ä¹é´ç¨ç¼ºçæ³å¾æè¯åäºç¸å°éä¸ï¼èè¿ç±äºå½æ
çåå æ¯ä¸è½å¤è½»ææ¹åçï¼ç½ç¿æ¾ç»å¨ä¸ä¸ªèç®éè¯´å°æ³æ²»çå½¢æï¼ãå¾å¤§ç¨åº¦ä¸ï¼æ³æ²»æ¯èªä¸èä¸åèªä¸èä¸ç»åçè¿ç¨ï¼æ³æ²»é¦å
å¼ºè°æåæ¬èº«æ¯è¦åå°çº¦æçï¼ç¶åå¨è¿æ ·çä¸ç§çº¦æçèæ¯ä¸ï¼æ
¢æ
¢å°å
¶ä»äººä¹ä¼æ¿æå»çº¦æèªå·±ï¼å®æ¯ä¸ä¸ªååçè¿ç¨ï¼å®ä¸å¯è½æ¯ä¸ä¸ªååçã\n\næå¾æ¸
æ¥ç§»æ°æå³çä»ä¹ï¼å®ä¼ææå¤å¹´ç积累åä½ç»æµå¦éçæ²æ²¡ææ¬ï¼è¿
éèå°½æå·¥ä½å¤å¹´ç§¯æçå
¨é¨ç§¯èã使æè¢«è¿«æ¹åå¾å¤ç±å¥½åçæ´»ä¹ æ¯ã让æå¤±å»å¤§é¨åæåå人èï¼æçè³æ æ³ç¡®å®å®æ¯ä¸ä¸ªæ£ç¡®çéæ©ï¼ä½æ¯ï¼ãè¿å»ç巨人ã第ä¸å£ä¹åè¯æä»¬ï¼ã人è¥ä¸è½ææèå¼ï¼å°±æ æ³æ¹åç°ç¶ãï¼ç°å¨æ£æ¯é£éè¦åæ¢çæ¶å»\n\nè§åæ¯è¿æ ·çï¼è±å½çå¦ (â è±å½å·¥ä½)? â å æ¿å¤§å·¥ä½ â å æ¿å¤§ç»¿å¡ â å æ¿å¤§å
¥ç±ï¼æå¿« 2029 å¹´å¯ä»¥å®æ\n\nè¿éçä¸ªç©ºç» 2024 å¹´åçï¼æ«å¶å¡è¿é¡ºå©ä¹ï¼\n\n- [ ] 顺å©\n\nå°ç®å为æ¢ä¸åé½å¾é¡ºå©ï¼é¤äºåæè§åèµ°äºä¸äºå¼¯è·¯ï¼çå¦å夿¯ææ³è±¡ä¸ç®åå¾å¤ï¼ç°å¨å·²ç»åå
æå¤§å¦æäº¤äºç³è¯·ï¼å¨ç offerï¼åå°å·²ç»æ¿å°äºä¸¤ä¸ª offerï¼é
¸å¥¶çº¦å¥½äºå¯å
»å¨è±å½ç Henry å®¶éãæå¹´çè¿æ¶ååºè¯¥å¨è±å½çæä¸ªè§è½æå¿«å°è¿å£è¯èäºå§\n\n卿ç§ç¨åº¦ä¸ï¼æå¾åºå¹¸åçäºè¿ä»¶äºï¼è¿å¥½æ¯å¨ 25 å²è䏿¯ 35 å²ï¼å®è®©æè±ç¦»äºå±é©çèéåºã寻æ±åæåæ¹åï¼å徿´å¼ºå¤§äºï¼æ£å¦æè¿ççãååãé说çï¼ãææ¶åï¼å¯æçäºæ
åçå¨æä»¬èº«ä¸ï¼å®å¯ä»¥æ¯ææä»¬ï¼ä¹å¯ä»¥è®©æä»¬å徿´å¥½ï¼è¿åå³äºæä»¬å¦ä½å¤çå®ä»¬ããå¦ææ²¡æéå°è¿ä»¶äºï¼æå¯è½ä¼ä¸ç´æ²è¿·å¨ç°å¨çèéåºï¼è§å¾éæ³æ°¸è¿ä¸ä¼ç ¸å°èªå·±ï¼åä¹åæ¯å¹´çå¹´ç»æ»ç»ä¸æ ·åéï¼åï¼ä»å¹´åæ¯ä¸äºæ æä¹æ²¡æä»ä¹æ³æ³çä¸å¹´ï¼åå ä¸ç¹å¡å°èµå¼çæ ç
å»åï¼[ã2019 æåäºä»ä¹ã](/2019/)ã[ã2018 å¹´ç»æ»ç»ã](/2018/)ï¼ï¼ç´å°æåæ³æ¹åç°ç¶ä¹æ åå天äº\n\n### ð åå¼¹ç¬è®°\n\n没äºèéåºï¼æççæ´»ä¹å徿æ¡çäºèµ·æ¥ï¼æå¼å§äºååå¼¹ç¬è®°ï¼å®ææ»ç»èªå·±åçäºæ
å¹¶ç»ä¸ä¸ªå¨æå计åï¼å®å¤§æ¦é¿è¿æ ·ï¼\
318n\n\n\nå¨ç¬è®°å³ä¸è§ä¼å䏿¬å¨è¦å®æåªäºäºæ
ï¼åå¾ä¸ææ¯å¤©ç To Do List å Notesï¼åå¾ä¸æ¯ä¸ä¸ª Habit Tracker è¡¨æ ¼ï¼é忝天çç¶æï¼æ¯å¨ç»æåå¨å¼å¤´å䏿¬å¨çæ»ç»å计åä¸å¨è¦å®æåªäºäºæ
ï¼æ¯ä¸ªæç»å°¾åææ»ç»\n\néæ¶çéåèªå·±ï¼ççæ¯å¾å¥½çèªçæ¹å¼ï¼ç¹å«æ¯å¯¹æè¿ç§è®°å¿åä¸å¥½ç人ï¼é¤äºä½¿æå¯¹èªå·±æäºæ´æ¸
æ°ç认ç¥ååæï¼å®è¿éè¿æ¯å¤©çæéåæ°æ®éå叮婿å¹å
»äºä¸äºå¥½ä¹ æ¯åæ¹æä¸äºåä¹ æ¯\n\néè¿åè¿äºäºæè¿æå¾äºä¸ä¸ªéçï¼è¦å好ä¸ä»¶äºæå¹å
»ä¸ä¸ªä¹ æ¯ï¼æå
³é®æ¯æ¾å°èªå·±åèªå
å¿çè¶³å¤å¼ºå¤§ç驱å¨åï¼å¹¶ä¸è¦å¿è®°å®ï¼ä»¥è¿å¨ä¸ºä¾ï¼ãæ¹åæ¥çç³ç³çå¥åº·ç¶åµï¼éä½çæ»é£é©ãç驱å¨åå°±æ¯ãæè¦åç¦ãæç¨å¾å¤ï¼åè
å°±æå¾å¤§å¯è½ä¼å¤±è´¥\n\n### ð» æ°åçæ´»\n\n**弿º**\n\nåèªå¦äºä»¶çå½±åï¼ä» GitHub Contributions Calendar å¯ä»¥çåº 7 ææ¯ä¸ªå¾ææ¾çåæ°´å²ï¼7 æå RSSHub 齿¯ Henry å¨ç»´æ¤\n\n\n\n**NAS**\n\n6 æçæ¶åä»ç¾¤æ DS2018play æ¢å°äºå¨èé TS-453Bminiï¼æäº Docker å¯ç©æ§å¤§å¤§åé«äº\n\nå®è£
äº [Jellyfin](https://jellyfin.org/) ååªä½åºï¼å®å¯ä»¥èªå¨çæå¾è¯¦ç»çå
æ°æ®ï¼å¨ Android TVãiPadãWeb ä¸é½æçä¸è´ä¸ä¸éçä½éª\n\n\n\n\n\n\n\næäºä¸ªæè·¯ç½å
³ï¼ä»èåæ¶æ¯æäºè·¯ç±å¨çº§ç Clash å AdGuard\n\n\n\n\n\n**å½±è§**\n\nçäº 29 é¨çµè§å§ 26 é¨çªå§ 16 é¨çµå½±ï¼å®æ´å表è§è±ç£ï¼<https://movie.douban.com/people/62759792/>\n\n年度æä½³çµè§å§æ¯ãèåè®°ãã使女çæ
äºã\n\n年度æä½³çªå§æ¯ãè¿å»ç巨人ã\n\n年度æä½³çµå½±æ \n\n**游æ**\n\nç©äº 16 款游æï¼å®æ´å表è§è±ç£ï¼<https://www.douban.com/people/62759792/games>\n\n年度æä½³æ¯ãéåå¦ï¼å¨ç©æ£®åä¼ã\n\n**Vlog**\n\nåäºç¬¬ä¸ä¸ªç®å¾ä¸æ¯ Vlog çè§é¢ï¼[ã带åå°åç²ç²ä¸èµ·æ»ç¿ä¼ï¼èµ·é£ï¼ã](https://www.bilibili.com/video/BV1pf4y1q782)\n\n忥åè¶ååä¸ä¹°äº Sony ZV-1 åä¸å é
ä»¶ï¼æç®æå¹´å°è±å½åéç¼æä¸ç¹ Vlog\n\n### ðª ç°å
çæ´»\n\nä»å¹´çç°å
çæ´»é常å®ä¹ï¼ä½æå ä¸ªè¿æ¯å¼å¾ä¸æ\n\nåä¸ï¼è·åå°åç²ç²å»äºå¾å¤å°æ¹ç©ï¼7 天å±
ç¶ä¸å¤©é½æ²¡é²çï¼æ¬å®¶ãæ»ç¿ä¼ã迪士尼...\n\n<blockquote class=\"twitter-tweet\"><p lang=\"zh\" dir=\"ltr\">çæ´»ççæ³å°±æ¯çæ³ççæ´»<br>ï¼»åæå°ç»ï¼½ <a href=\"https://t.co/D2ctRhpr2m\">pic.twitter.com/D2ctRhpr2m</a></p>— justcc (@justjustjustcc) <a href=\"https://twitter.com/justjustjustcc/status/1314332893351563264?ref_src=twsrc%5Etfw\">October 8, 2020</a></blockquote>\n\n<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Now you know why birds are always happy and singingï½ <a href=\"https://t.co/oiGiGAzGkR\">pic.twitter.com/oiGiGAzGkR</a></p>— justcc (@justjustjustcc) <a href=\"https://twitter.com/justjustjustcc/status/1313714188666040320?ref_src=twsrc%5Etfw\">October 7, 2020</a></blockquote>\n\nä¸ä½å±ï¼æå¾å¤ä¸ä½ç令人ææå«ç»çç»å¦è®¾è®¡ï¼ä¸ä½ç²ä¸æ¬æ»¡è¶³\n\n<blockquote class=\"twitter-tweet\"><p lang=\"zh\" dir=\"ltr\">æ¶çäººç±»æ´æ¿ï¼<br>ä¸çå±äºä¸ä½ï¼ <a href=\"https://t.co/aENPVrsJhy\">pic.twitter.com/aENPVrsJhy</a></p>— justcc (@justjustjustcc) <a href=\"https://twitter.com/justjustjustcc/status/1256859381494214656?ref_src=twsrc%5Etfw\">May 3, 2020</a></blockquote>\n\nåé¥ï¼æ°å®¶æäºç¬ç«å¨æ¿ï¼ä¹ä¸ºäºæå¹´ç妿åç»ä¹ ï¼å¦çåäºä¸äºç®åä¸è¥¿ï¼çªèé¸¡èæ±¤ãå°çèã宫ä¿é¸¡ä¸ãç¸é
±é¢ãåå±é¥ãç
饺ãçæ...å·²ç»å¯ä»¥å
»æ´»èªå·±äº\n\n### ð è´è°¢\n\nä»å¹´æ¯ä¸ä¸ªæ¿è大家å
³ç
§çä¸å¹´\n\næè°¢åå°å¯¹è¿æ ·ä¸ä¸ªææ¬å·¨å¤§ä¸å
满èªç§åä¸ç¡®å®çç§»æ°å³å®çæ æ¡ä»¶æ¯æï¼æå¾æ¸
æ¥è¿ä¸ªæ¯æéè¦ä»åºçå¤ä¹å¤§ççºç²ï¼æä¸ä¼æå®å½ä½çæå½ç¶ï¼æä¼å¸¦çè¿ä»½ä¿¡ä»»åªåä¸å»\n\næè°¢åå°å¨ä»å¹´æå°æçä¸äºä¸è¥¿ï¼å
±æ
è½åãèªææè¯ãåæ¶è¡ä¹å积æåä¸ççæ´»æåº¦ï¼å¾å¤æ¹é¢å¦å¾è¿ä¸å¤å¥½ï¼è¿å¨æ
¢æ
¢å¦ä¹ ä¸\n\næè°¢ Henry 对æçå¦ç 360 度å
¨æ¹ä½å¸®å©ï¼ä¸ä»
对æåæè§åæä¾äºå¾å
³é®ç帮å©ï¼è®©æå°èµ°äºå¾å¤å¼¯è·¯ï¼è¿å¯¹ä¹åççå¦åå¤ä¹æä¾äºå¾å¤å¸®å©ï¼è¿å¸®å©è§£å³äºå¾å¤å顾ä¹å¿§ï¼å¦ RSSHub çç»´æ¤ãæå¹´é
¸å¥¶çæ¶å
»\n\næè°¢é»å¸ãFallenhhãUucky 卿åå¤ç妿书éå°å°é¾æ¶ä¸»å¨æä¾äºå¾å¤å¸®å©åé叏夿ç¨çæ
æ¥ï¼åæ ·è®©æå°èµ°äºå¾å¤å¼¯è·¯\n\næè°¢ä¸ä½å¤±èå¤å¾ç䏿¿æéé²å§åçæå对æä»¬åæ
ççæåä¿¡ä»»\n\næè°¢ç²ç²å¸®å©åéªä¼´æåº¦è¿äºä¸ä¸ªå®ç¾çåä¸åæ\n\næè°¢è·æä¸èµ·ç©å¨æ£®çæå们ï¼éªä¼´æåº¦è¿äºä¸æ®µæå¿«ä¹çæ¶å
\n\næè°¢ä¸ºèªå¦äºä»¶å声ç大家ï¼ä¸ºææé»æçæ¶å»ç
§äº®äºä¸æå
\n\n \n\n**2021ï¼å¨è¿ä¸ªå½è¿ä¹ç¥æææ¨ååæ¢çæ¶å»ï¼å¸ææè½å¤åæ³è±¡ä¸é£ä¹åæ¢ï¼åçç®æ åè¿ï¼åè¿**\n\n
318<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"><\/script>"},{"slug":"paragliding","title":"带åå°åç²ç²ä¸èµ·æ»ç¿ä¼ï¼èµ·é£ï¼","tags":["vlog"],"body":"åä¸è·åå°åç²ç²ä¸èµ·èªé©¾å»äºæ»ç¿ä¼ï¼èµ·é£ç¬é´å¤ªåºæ¿äºï¼ä¸ºäºé£ä¸å»é¿éè·æ¶ä¹å¼äºç¬¬ä¸æ¬¡é²è¸ vlog â(â ââ¢âÏââ¢â â)â æ±ä¸è¿ï¼æ±è½¬åï¼"},{"slug":"my-last-fight-against-this-world","title":"æä¸è¿ä¸ªä¸ççæå䏿¬¡æäº","tags":[],"body":"å¨è¢«èªå¦å
¥ä¾µå§å®¤çä¸å¨å
ï¼æéåäºæå¤§çç²¾ç¥å伤ãè¶
è¿ä¸ä¸å
çç»æµæå¤±åå
æ¤ä½éï¼æå°è¯äºæè½åçææäºæ
ï¼å¤æ¬¡æ¥è¦ãåç§æ¸ éæè¯ãç½ç»æå
ãèç³»åªä½ãåå¤è¯è®¼ï¼ææå¿åå®ãä¸å±ä¸æ ï¼æåèªä¸å®è¦è®©ä»ä»¬ä»åºä»£ä»·ï¼ä¸è§£å³èªä¸ç½¢ä¼ï¼æåä¿¡è¿ä¸ªäºæ
ä¸å®ä¼æä¸ä¸ªå®ç¾ç»å±\n\nç¶èç°å¨äºæ
å·²ç»è¿å»äº 20 å¤å¤©ï¼æè¿ä¸å¥éæå认é齿²¡å¾å°\n\næä¸ç´å¨æèï¼è±äºè¿ä¹å¤ç²¾ååéé±ï¼åæäºè¿ä¹ä¹
ï¼ææ³è¦çå°åºæ¯ä»ä¹ï¼\n\næ¯ä¸ºäºåºä¸å£æ°ï¼ææ©å°±æ¾ä¸äº\næ¯èªå¦å
¬å¸çéæï¼å
¶å®æä¹ä¸ç¨ç½äº\næ¯ç»æµèµå¿ï¼æä¹ä¸ç¼ºé£ç¹é±\n\nç°å¨æç¥éçæ¡äºï¼ææ³è¦çæ¯ç»§ç»å¨è¿éçæ´»ä¸å»çä¿¡å¿\n\næ§æ³é¨é¨å欢åç¨æ³¥ãæ°ä¼æ¬ 缺æ³å¾æè¯ã人ä¸äººä¹é´ç¼ºä¹æåºæ¬çå°éæ¯åçè¿ç§äºçæ ¹æ¬åå ï¼è¿äºé®é¢çæå
æ ¹æ¬æ è§£ï¼ç±»ä¼¼äºæ
åªä¼å±¡è§ä¸é²\n\næå¤±å»äºè¿ç§ä¿¡å¿ï¼ä»ä»¬è¯´çæ¯å¯¹çï¼è¿ä¸ªä¸çå°±æ¯è¿æ ·ï¼æ¹åä¸äºçï¼**ç®äºå§**\n\n以ä¸å°±æ¯æä¸è¿ä¸ªä¸ççæå䏿¬¡æäºï¼æå¹´æå¯è½å°±å»è±å½è¯»ç äºï¼å伿æ\n\n"},{"slug":"web-debugging-proxy","title":"ç§å¦ç Web è°è¯ä»£çå®è·µ","tags":[],"body":"å端ç»å¸¸éè¦ä¸äºç¹æ®çè°è¯ç¯å¢ï¼è¿æ¶æä¸ä¸ªç§å¦ç Web è°è¯ä»£çå·¥å
·ï¼ä»¥ä¸ç§°ä»£çå·¥å
·ï¼æ¾å¾å°¤å
¶éè¦\n\næç¨ç第ä¸ä¸ªä»£çå·¥å
·æ¯ [Charles](https://www.charlesproxy.com/)ï¼åè½å¤ä½ç¼ºç¹ä¹å¾ææ¾ï¼ç¬¨éãé
置麻ç¦ï¼ç¬\n\n忥æ¢å°äº [Zan Proxy](https://github.com/youzan/zan-proxy)\n\nZan Proxy æ¯ä¸ä¸ª Node.js ç¼åç代çå·¥å
·ï¼è·å¤§æç© Charles ä¸ä¸æ ·ï¼ä¸æ³¨äº Web è°è¯ï¼è½»éãé
ç½®æ¹ä¾¿ï¼è½ç¶åè½å¾ç®åï¼ä½å¯¹ææ¥è¯´å¤ç¨äº\n\né
ç½®é½æ¯å¨ä¸ä¸ª Web 页è¿è¡ï¼çé¢å¾èæï¼æç¨å®åä¸äºç®åç转å请æ±ãä¿®æ¹ååºå¤´ãmock æ°æ®\n\n\n\nä½éçå·¥ä½å
容çåå±ï¼éè¦çè°è¯ç¯å¢ä¹è¶æ¥è¶å¤æï¼Zan Proxy å·²ç»æ
¢æ
¢ä¸è½æ»¡è¶³æçéæ±\n\n \n\n[LightProxy](https://github.com/alibaba/lightproxy) éæ¶å°åºç°å¨äºæçè§é\n\n\n\nLightProxy æ¯ä¸æ¬¾åºäº [whistle](https://github.com/avwo/whistle)Â çæ¬å°ä»£çæå
软件ï¼~~å
¶å®ç´æ¥ç¨ whistle ä¹å·®ä¸å¤~~\n\nä¸é¢éè¿ä¸äºæèªå·±ä½¿ç¨çè§åæ¥ä»ç»å®\n\n**请æ±è½¬å**\n\n```\nplayer.bilibili.com http://127.0.0.1:8080\n\n^*s1.hdslb.com/bfs/static/player/main/video*.js file:///Users/diygod/Code/bilibili/js-common/packages/video/dist/release/video.js\n^*s1.hdslb.com/bfs/static/player/main/video*.js.map file:///Users/diygod/Code/bilibili/js-common/packages/video/dist/release/video.js.map\n```\n\nï¼1ï¼é¡¹ç®æ¥å£å CDN é½è¢«éå¶æäºååå¯ä»¥ç¨ï¼æä»¥éè¦è¿æ ·ä¸ä¸ªä¸è¥¿åå¼åç¯å¢\n\næ¯ç¨ webpack å¼ä¸ä¸ª 80 端å£ç server åç» hosts ä¼é
80 å\n\nï¼2ï¼å¯ä»¥ç¨æ¥ä»£ççº¿ä¸æä»¶\n\nææ¬å°ç¼è¯å¥½çé¡¹ç®æä»¶ä»£çå°çå®çº¿ä¸ç¯å¢ï¼è¿éç¨å°äºéé
符æ¥å¹é
è·¯å¾\n\n**ä¿®æ¹ååºå
容**\n\n```\nm.bilibili.com resAppend://`\n
318<script src=\"https://cdn.jsdelivr.net/npm/eruda\"><\/script>\n
318<script>eruda.init();<\/script>\n`\n```\n\nä¿®æ¹ç§»å¨ç«¯é¡µé¢çååºå
容ï¼è®©é¡µé¢å è½½è°è¯å·¥å
· Erudaï¼æ¹ä¾¿ç§»å¨ç«¯è°è¯\n\nå¼å¾ä¸æçæ¯ whistle æä¸ªå¾ç¥ç»ç
çå°æ¹ï¼whistle æ¬èº«å¹¶ä¸æ¯æè¿æ ·çè¡å
åæ³ï¼éè¦å¾éº»ç¦å°å¨å¦ä¸ä¸ªé¢æ¿è®¾ç½® {key} æè
ä½¿ç¨æ¬å°æä»¶\n\næä»¥ LightProxy åäºä¸å±è½¬ä¹ï¼æè¡å
代ç ä¿åæäºä¸ä¸ªä¸´æ¶æä»¶ï¼æå¼ whistle å¯ä»¥çå°å®é
åç» whistle çé
ç½®æ¯ç±»ä¼¼è¿æ ·ç\n\n```\nm.bilibili.com resAppend:///var/folders/_l/hbcxcqh522s_vls68417h2m40000gn/T/lightproxy/0-152.txt\n```\n\n**ä¿®æ¹ååºå¤´**\n\n```\n/.*bilivideo\\.com\\/.*300(\\d){2}\\.m4s/ resHeaders://`{\n 'x-service-module': 'test-video'\n}`\n/.*bilivideo\\.com\\/.*302(\\d){2}\\.m4s/ resHeaders://`{\n 'x-service-module': 'test-audio'\n}`\n/.*bilivideo\\.com\\/.*\\.flv/ resHeaders://`{\n 'x-service-module': 'test-flv'\n}`\n```\n\nè¿éç¨äºæ£åæ¥ç»ä¸åç±»åçæä»¶å¹é
ä¸åçè§å\n\n**ä¿®æ¹ cookie**\n\n```\nm.bilibili.com/video/ resCookies://`{\n ab: '0000test',\n}`\n```\n\nå¨ç§»å¨ç«¯ä¿®æ¹ cookie 并䏿¯é£ä¹æ¹ä¾¿ï¼æä»¥æç¨äºè¿ä¸ªè§åï¼æ¬è´¨ä¸æ¯ä¿®æ¹ååºå¤´ç `Set-Cookie`\n\n**host 转å**\n\n```\n172.22.33.166 s1.hdslb.com player.bilibili.com static.hdslb.com\n```\n\né¤äºæ¯æåç§å¹é
模å¼ï¼è¿æ¯æä¼ ç» hosts è¯æ³è§åï¼[SwitchHosts](https://github.com/oldj/SwitchHosts) å¯ä»¥ææäº\n\n**模æç½ç»å¼å¸¸**\n\n```\n*.bilivideo.com replaceStatus://403 includeFilter://m:get\n\n*.bilivideo.com resSpeed://2000\n\n*.bilivideo.com resDelay://3000\n```\n\nåç§æ¨¡æç½ç»å¼å¸¸çåè½æ·±æ·±æ³ä¸äºæççç¹\n\nä¾åä¸ç `*.bilivideo.com` å¹é
bilibili è§é¢ CDN å°å\n\nï¼1ï¼æ¨¡æ CDN ç¶æç ï¼ç¨æ¥è°è¯ CDN å°åè¶
æ¶æå¼å¸¸ï¼æ²¡æ LightProxy çæ¥åéåªè½å¨ä»£ç é mock æå¾è ¢å°çå¾ä¹
çè§é¢å°åè¶
æ¶\n\nï¼2ï¼æ¨¡ææ
¢éï¼ç¨æ¥è°è¯å¡é¡¿æèªå¨æ¸
æ°åº¦åæ¢ï¼å¯ä»¥ç¨æ¥ä»£æ¿ Chrome Network Throttling\n\nï¼3ï¼æ¨¡æ CDN 请æ±è¶
æ¶ï¼ç¨æ¥è°è¯ CDN ææµè¶
æ¶ï¼æ²¡æ LightProxy çæ¶ååªè½å°å¿ç¿¼ç¿¼å°æ§å¶ Chrome Network Throttlingï¼å¤ªå°äºä¼å¯¼è´è¯·æ±å¤±è´¥ï¼å¤ªå¤§äºè¶
æ¶åä¸å¤é¿\n\n**Node.js è§å**\n\nLightProxy è¿æä¸ä¸ªå¾é
·çåè½ï¼ä½¿ç¨ Node.js 书åè§åï¼ä»¥ä¸æ¯å®æ¹çä¸ä¸ª demoï¼æææ¶è¿æ²¡æè¿ä¸ªåè½ç使ç¨åºæ¯ï¼ä½å°±æ¯æè§å¾é
·\n\n```\ngithub.com/alibaba/lightproxy scriptfile://`\n\nexports.handleRequest = async (ctx, next) => {\n // do sth\n // ctx.fullUrl å¯ä»¥è·å请æ±url\n // ctx.headers å¯ä»¥è·å请æ±å¤´\n // ctx.options éé¢å
å«ä¸äºç¹æ®ç请æ±å¤´å段ï¼åå«å¯ä»¥è·åä¸äºé¢å¤ä¿¡æ¯ï¼å¦è¯·è®¾ç½®çè§åç\n // ctx.method è·ååè®¾ç½®è¯·æ±æ¹æ³\n // const reqBody = await ctx.getReqBody(); è·å请æ±bodyçBufferæ°æ®ï¼å¦ææ²¡ææ°æ®è¿ånull\n // const reqText = await ctx.getReqText(); è·å请æ±bodyçææ¬ï¼å¦ææ²¡æè¿å''\n // const formData = await ctx.getReqForm(); è·å表å对象ï¼å¦æä¸æ¯è¡¨åï¼è¿å空对象{}\n // ctx.req.body = String| Buffer | Stream | nullï¼ä¿®æ¹è¯·æ±çå
容\n // nextæ¹æ³å¯ä»¥è®¾ç½®next({ host, port });\n // åªææ§è¡nextæ¹æ³åæå¯ä»¥ææ£å¸¸ç请æ±åéåºå»\n const { statusCode, headers } = await next();\n // do sth\n // const resBody = yield ctx.getResBody();\n // const resText = yield ctx.getResText();\n // ctx.status = 404; ä¿®æ¹ååºç¶æç \n // ctx.set(headers); æ¹éä¿®æ¹ååºå¤´\n // ctx.set('x-test', 'abc'); ä¿®æ¹ååºå¤´\n // ctx.body = String| Buffer | Stream | null; ä¿®æ¹ååºå
容\n ctx.body = 'test';\n };`\n```\n\nä»ä»¥ä¸ä¾åä¸ç¸ä¿¡å¤§å®¶å·²ç»å¯¹ LightProxy / whistle çç¨æ³æäºèªå·±ççè§£\n\n \n\næåè¿æä¸ä¸ªå¼å¾ä¸æçäºæ
æ¯ï¼ç¨äºè¿äºè°è¯ä»£çå·¥å
·ä¹åéæ³ä¸ç½æä¹åï¼\n\nè°è¯åéæ³ä¸ç½ç¨çæ¯ä¸åç代çï¼ææ¯ä¸ä¸ªé¢å Google ç¼ç¨ç人ï¼ä»£çä¸ç´åæ¥åå»å¤ªéº»ç¦ï¼æçåæ³æ¯ç³»ç»ä»£çäº¤ç» Surge æ¥ç®¡ï¼å©ç¨ Surge åæµï¼æ°å»ºä¸ä¸ª LightProxy 代çï¼ç¶åç¼è¾ Surge è§åï¼åªæéè¦è°è¯ç请æ±åç» LightProxy\n\n\n\n\n\n以ä¸å°±æ¯æç®åç Web è°è¯ä»£çå®è·µ"}
318,{"slug":"animal-crossing","title":"æç卿£®æ¥è®°","tags":[],"body":"> DIY 对è¿éççæ´»ç»å¯¹æå¾å¤§ç帮å©ï¼\n\n\n\n~~æ¥è®°ä¼æç»æ´æ°ï¼ä¹æ¬¢è¿å ç¾¤æ¥æçæ©åå°æ·æ·æ¨±è±å°æç´å²ä¸èµ·ç©: 947956902~~\n\n<style>\nh2 {\n color: #fc6423 !important;\n}\n</style>\n\n## 第ä¸å¤© 3æ19æ¥ ä¸å²ç¬¬ä¸å¤©ï¼DIY对è¿éççæ´»ç»å¯¹æå¾å¤§ç帮å©\n\nä»å¤©æ¯ä¸å²ç¬¬ä¸å¤©ï¼\n\nåå¦ãéå²ãåºåï¼\n\n\n\n\n\n\n\nç¨èªå·±æå欢çå 个ç©åè¿èµ·æ¥ç»å°å²åäºååï¼æ©åå°æ·æ·æ¨±è±å°æç´å²ï¼å²ä¸è¿æå¦å¤ä¸¤ä¸ªå²æ°ï¼å°ç´å¤©ä½åéèå°ç«\n\n\n\næå¥½äºå¸ç¯·ï¼ä¹èä¸äºç¬¬ä¸ä¸ªæ¿è´·\n\n\n\n\n\néå°ç¬¬ä¸åªé±¼ãæå°ç¬¬ä¸åªæè«ãç¬¬ä¸æ¬¡è¢«èèèå°æ»¡è¸å
\n\n\n\n\n\n\n\nDIY 对è¿éççæ´»ç»å¯¹æå¾å¤§ç帮å©ï¼ï¼åå
³ï¼\n\n\n\n## 第äºå¤© 3æ20æ¥ æºåºå¼æ¾å¦ï¼æ¥äºå¥½å¤å
¶ä»å²çæå\n\næ¨å¤©æç¬¬ä¸ç¬æ¿è´·è¿å®äºæä»¥ä»å¤©çäºæ°æ¿åï¼ä½é©¬ä¸åèä¸äºæ°çæ¿è´·\n\n\n\n\n\nä»å¤©å¦ä¼äºææè·³ï¼å¯ä»¥å»å°æ²³å¯¹é¢ç©äºï¼æå°äºç¬¬ä¸ä¸ªåç³\n\n\n\n\n\nä»å¤©æºåºä¹ç»äºå¼æ¾äºï¼æ¥äºå¥½å¤å
¶ä»å²çæå\n\n\n\n\n\n\n\n\n\n\n\nåé¶é
±èææå°éæèµ·æ¥\n\n\n\n追æ Jemair\n\n\n\néèå°ç«å¨è·æå
«å¦å°éçå°ç§å¯\n\n\n\næå飿ºä¹å»äºå
¶ä»æ 人å²çéï¼æé´è¿éå°äºå°çé¿å¦¹ï¼é请äºå¥¹æ¥æå²ä¸å®å±
\n\n\n\næä¸å¨å²ä¸éå°äºä¸åªå¯ç±çå¹½çµå¹½å¹½\n\n\n\n## 第ä¸å¤© 3æ21æ¥ ååºå¼å¼ å¦ãéå°æµ·é¸¥å游\n\næ¨å¤©æç¬¬äºç¬æ¿è´·è¿å®äºæä»¥ä»å¤©æ©å»ºäºæ¿åï¼ä½é©¬ä¸åèä¸äºæ°çæ¿è´·ï¼çæçå§æ
ï¼ï¼198000 éé±ï¼\n\nä¸å¤§æ©å¨æ²æ»©ä¸éå°äºæµ·é¸¥å游ï¼å游éé¾é£å°äºæå®¶å°å²æ²æ»©ï¼å¸®ä»æçµè¯ç»ä»æåæ¥æ¥ä»ï¼ä½æ¯...çæ¿ä»æ
å¿\n\n\n\n\n\nå夿¥è¿ééé±¼çæ¶åï¼çå°å游è¿å¨è¿éç...\n\n\n\nä»å¤©ååºå¼å¼ å¦ï¼ååºè¿è¯´æå¤©ä¼æäººè¿æ¥å大头èï¼ååå¯ä»¥èµå¾å¤é±ï¼åæè¦åè´¢äº\n\n\n\næ¾å°äºä¸å¥é¬¼çä¹åçè¡£æï¼\n\n\n\n\n\n\n\n\n\nè· Jemair æç
§\n\n\n\nè· Jemair å»ä¸ä¸ªååçæå Anakin é£ééé±¼ï¼ååçè·ååçå£èä¸åï¼æä»¥å¯ä»¥éå°å¥½å¤ååçæ²¡æçé±¼\n\n\n\n## 第å天 3æ22æ¥ æ°å²æ°å°çé¿å¦¹ãåç©é¦å¼ä¸å¦\n\nå¨å®¶é¨å£ç§çè±å
¨å¼äºï¼\n\n\n\nå»ååºæåç°å大头èçå人æ¯åªæä¸åæå¨ï¼å»çæ¶åå·²ç»èµ°äºï¼ç失䏿¬¡åè´¢çæºä¼\n\nå天é请çå°çé¿å¦¹æ¬è¿æ¥å®å±
äºï¼æ©åå°æ·æ·æ¨±è±å°æç´å²å±
æ°+1ï¼\n\n\n\nçå°é¶é
±å®¶çååºä»å¤©å¨åæ½çº¸ï¼æä»ä¹°äºä¸å
é®å¯è¿æ¥\n\n\n\næ¾å¨å®¶éé¡¿æ¶å¤äºå¾å¤çæ´»æ°æ¯\n\n\n\næä¸ç»§ç»å» Anakin å®¶éé±¼ï¼éå°äºä¸åªé²¨é±¼ï¼\n\n\n\nå²ä¸æ¥äºææåè¡£æçåºç¬å¨å¿\n\n\n\nåç©é¦å¼ä¸å¦ï¼éé¢è¶
级大ï¼å¸ç½®ä¹è¶
级精ç¾ï¼æå°çé±¼ãè«åãåç³é½å¯ä»¥æ¾å¨éé¢å±è§\n\n\n\n\n\nå²ä¸ç第ä¸åº§æ¡¥ä¹å®å·¥å¦\n\n\n\n## 第äºå¤© 3æ23æ¥ æ°å²æ°å°çç®ç³\n\næ¨å¤©æç¬¬ä¸ç¬æ¿è´·è¿å®äºæä»¥ä»å¤©æ©å»ºäºæ¿åï¼æ¿åå¤äºä¸ä¸ªæ¿é´ï¼ä½é©¬ä¸åèä¸äºæ°çæ¿è´·ï¼çæçå§æ
ï¼ï¼348000 éé±ï¼\n\nå°å²è¿æ¥äºç¬¬äºåæ°å²æ° ââ å°çç®ç³ï¼å¥¹å¥½åæ¯ä¸åææï¼æå¾
她çæå£°ï¼\n\n\n\n\n\n忏¸åéé¾å°äºæå®¶å°å²æ²æ»©ï¼æçä»è¢«æå欺åäº...\n\n\n\nå·´çé请æå»ä»çå°å²ç©ï¼ä»å¼äºä¸å®¶æå½±æ£ï¼è¯´æå¯ä»¥éæå¨é颿ç
§\n\n\n\næ¨å¤©æ¥çå°çé¿å¦¹éäºæä¸ç¶ç馿¡ï¼\n\n\n\n\n\n\n\n\n\nåäºä¸ä¸ªè¡£æï¼å¯ä»¥æ´æ¹ä¾¿æ¢è¡£æäº\n\n\n\næå°äºéç¿ç³ï¼è½ç¶è¿ä¸ç¥éæä»ä¹ç¨ï¼ä½è¯å®å¾å害\n\n\n\néå°äºå¾å害çç带鱼åé²·é±¼\n\n\n\n\n\n## 第å
天 3æ24æ¥ æ°å²æ°å°ç«å°å
\n\næå¡å¤ç»äºè¦æ¬è¿äºï¼æå¤©ä¼æåè¥ä¸ä¸å¤©\n\n\n\n\n\nå°å²æ¬æ¥äºç¬¬ä¸åæ°æå ââ å°ç«å°å
ï¼å°å
ãè³å
ï¼ï¼\n\n\n\nå¨é¨å£çè±ç°æå°äºä¸åªé
·èè\n\n\n\nåé»å±
è天\n\n\n\n\n\n天ä½å¨å
«å¦ Jemair\n\n\n\n\n\n\n\nåå°éå»çç 奶ç«å®¶æé±¼ï¼çæä»¬ç©å¾å¤å¼å¿\n\n\n\n\n\nå¨çç 奶ç«å®¶éå°äºä¸åªè¶
级大ç巨骨èé±¼ï¼å¥½å¥æªçååï¼\n\n\n\n\n\n第äºå¤©ç§çæ°´ææ å·²ç»ç»æäºï¼ç°å¨å²ä¸ 5 ç§æ°´æå
¨é½å¦\n\n\n\n## 第ä¸å¤© 3æ25æ¥ çæµæé¨ãéªé©¼åäººãæ°æåæ¥ä¿¡\n\næ©ä¸èµ·åºä¸åºé¨æå°ä¸åªèèï¼æ©èµ·çèè被ææï¼\n\n\n\nå»ååºä¹°äºä¸ä¸ªçç±³è±æº\n\n\n\næ¾æ°å²æ°æ¶~~ä¿æ¤è´¹~~礼ç©\n\n\n\nä¸åå¬å°é说 Rememme å®¶å¨ä¸æµæé¨ï¼èµ¶ç´§å飿ºå»ç\n\n\n\nå大家ä¸èµ·åæµæè®¸æ¿ï¼ä¸å®ä¼å®ç°çï¼\n\n\n\n\n\n\n\nå¦ä¼äºæææ£çå¶ä½æ¹æ³ï¼æ®è¯´åæµæè®¸æ¿åç第äºå¤©å¯ä»¥å¨æ²æ»©ä¸æ¡å°ææç¢ç\n\n\n\næä¸å»ä¸¤ä¸ª NGA ååå®¶æ¾éªé©¼å人买äºä¸¤å¥ä¸å¯æè®®å£çº¸åä¸å¯æè®®å°æ¯¯\n\n\n\n\n\nå£çº¸åå°æ¯¯è±è±ç»¿ç»¿çï¼ä¼å¨ä¼åå
ï¼å¾ç«é
·\n\n\n\n\n\nä¸ä¸ªå«ä¹æ©ä¹é¾ç好忥æå®¶ç©ï¼æ¯ç¬¬ä¸æ¬¡æ¥ï¼çææ®åºè¯¥æ¯ä¸ªå°å§å§ï¼ä¸å¾ä¸è¯´ï¼ç·å©åå女å©åçç©¿è¡£åå³å·®è·è¿æ¯å¾ææ¾çï¼\n\n\n\næ£å¥½ä¸å¤æµ
梦åçç 奶ç«ä¹å¨æå®¶ï¼ä¸èµ·æ¬¢è¿æ°æå\n\n\n\nè¿æå®¶å°å¨ç©ä¹å¾æ¬¢è¿æ°æå\n\n\n\n乿©ä¹é¾åå»ä¹åè¿ç»æåäºä¸å°ä¿¡ï¼æ¯åäºå°å§å§ï¼\n\n\n\nç»ä¹æ©ä¹é¾åäºä¿¡\n\n\n\nä»å¤©è®¤è¯äºå¥½å¤å¯ç±çæ°æåï¼æé·å
¥äºæ²æï¼è¿éç大家é½é£ä¹å¯ç±ï¼æ¯å 为å¯ç±ç人æä¼æ¥è¿ä¸ªä¸çï¼è¿æ¯å 为è¿ä¸ªä¸ç让大
318å®¶åå¯ç±äºï¼\n\n## 第å
«å¤© 3æ26æ¥ æå¡å¤å级ãè¥¿æ½æ ãåºé¨å°å¤ç©\n\nä¸å¤§æ©ç¸å
宣叿å¡å¤å级好äºï¼è䏿¥äºä¸ä¸ªæ°åå·¥ ââ 西!!æ½!!æ !!\n\n\n\n\n\n\n\nç¸å
æ³éè¯·äººæ°ææ K.K. æ¥åæ¼å±ä¼ï¼è¦æå»ºä¸ä¸ªé²è¥å°\n\n\n\n\n\né¿å¦¹çå¯ç±\n\n\n\nå两天ç§çæé±æ é¿å¥½å¦\n\n\n\nä¸åå»ä¹æ©ä¹é¾å®¶äº¤æ¢äºå¥½å¤å¥½ççæ°å®¶å
·ï¼æä¸äºæå¤©æè½é®å¯å°ï¼è¶
çº§åæ¬¢è¿å¼ 大åºï¼å¯ä»¥æ»æ¥æ»å»ï¼\n\n\n\n\n\næä¸å»æµ·è¾¹ç©åç°äºæ¨å¤©çæµæé¨è·å¾çææ\n\n\n\nå»å°éå®¶ç©ï¼Mitt ä¹å¨ï¼ä¸èµ·æ¼å¥ä¹å¨ï¼å°é没æä¹å¨åªè½å¨æè¾¹é¼æ hhhhï¼\n\n\n\nåç
§\n\n\n\nç²ç²ä¹æ¥äºï¼ååç²ç²ç
§ä¸å¼ \n\n\n\n\n\nç¶åå»è¨æ©å®¶éé±¼ï¼éå°äºä¹å没è§è¿çå°é¾è¾åé¦é±¼\n\n\n\n\n\n\n\nå¬è¯´é¶é
±å®¶éå¨ä¸æµæé¨ï¼èµ¶ç´§è·å»çï¼å¨é¶é
±å®¶ç山顶ä¸åé¶é
±ãçç 奶ç«ä¸èµ·è®¸æ¿\n\n\n\n\n\nç宿µæé¨åå»äº Rememme å®¶ç©ï¼ææ¶å·®æä»¥æ¯ç½å¤©ï¼ï¼Mitt ä¹å¨\n\n\n\n\n\nRememme å®¶çä¼é¹
达好å¯ç±\n\n\n\nåå®¶ä¹å忬äºä¸ªå®¶ï¼ä¹å没è§å好ï¼è·å
¶ä»å²æ°ä½ç太è¿äºï¼ç°å¨æç®æ¬å°é¿å¦¹å®¶æè¾¹\n\n\n\nä»å¤©åäºå¥½å¤äºåï¼çæ¯å
å®çä¸å¤©ï¼\n\n## 第ä¹å¤© 3æ27æ¥ éè´äºå¥½å¤å£çº¸åå°æ¿\n\næ©ä¸å¹¿æåæäºè¥¿æ½æ ï¼éæ¥ç¬¬ä¸ä¸ªè§å°ç人æ¯è¥¿æ½æ è䏿¯ç¸å
çæ¯å¤ªæ£äº hhhh\n\n\n\nåºé¨åç°éªé©¼åäººæ¥æå®¶äºï¼ä¹°å°äºè¶
级好ççäºæµå£çº¸åèèå·§å
åå°æ¿ï¼æ¨å¤©è·ä¹æ©ä¹é¾æ¸æ¥çæ°å®¶å
·ä¹å°äº\n\n\n\n\n\n\n\nä¸é¨å¤©å¨ç³å¤´ä¸æå°äºèç\n\n\n\nä¸åè·ä¹æ©ä¹é¾ãå°å©ãé¿å¹´ä¸èµ·äºæ¢å®¶å
·ãäºéååºï¼åä¹°äºå¥½å¤æ°çå£çº¸åå°æ¿\n\n\n\n\n\n\n\n\n\nå¨ååççé¿å¹´å®¶æå°äºå¥½å¤æ²¡è§è¿çæè«\n\n\n\n\n\n\n\n\n\n\n\næä¸é²è¥å°å®å·¥å¦\n\n\n\nå¨å¹¿åºå¬å°ç´å¤©ä½å±æï¼æè§ä¸å¤ªè¡ï¼è¿éè¦å¤ç»ç»å hhh\n\n\n\nç»å¯ç±çé¿å¦¹éäºä¸æ¡å¥½ççå°è£åï¼é¿å¦¹åé
318äºæä¸ä»¶è¡¬è¡«ï¼è¿æ®µæ¶é´è¿è¦è¯·æå好åçï¼ä¸ç¥éæ¯ä¸æ¯åªæ¯å®¢æ°ä¸ä¸\n\n\n\n\n\n\n\nå¨éèå°ç«é¢å被ç¼èå¬äºï¼å¥½ä¸¢äºº\n\n\n\nåæå°ä¸ä¸ªéç¿ç³å»å»\n\n\n\næ´çä¸è¿ä¸¤å¤©ä¹°å°çå£çº¸åå°æ¿ï¼ç¨å
¶ä¸ä¸é¨åé便æé
äºå å¥ç»åï¼æè§æå¥½ççè¿æ¯ä»å¤©å¨èªå·±å®¶ä¹°çäºæµå£çº¸åèèå·§å
åå°æ¿\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 第å天 3æ28æ¥ æ°å²æ°å¯ç±å¤ãå¼è¾è±ç°ãæé±ä¹°å¤§å¤´è\n\n\n\næ©ä¸èµ·åºç»å²æ°éå°ç¤¼ç©\n\n\n\n\n\nä¸ååå°å¯ç±å¤ä¹æ¬å°å²ä¸å®å±
äºï¼\n\n\n\n被å£åäº\n\n\n\nä¸èµ·éé±¼\n\n\n\nåæåºç¬å¨å¿æ¾å°æè¯´æ³å¨å²ä¸å¼ä¸å®¶è£ç¼åº\n\n\n\n\n\næä¸å»ä¹æ©ä¹é¾å®¶ä¹°åæï¼ç¶åç»å¥¹ç»äºç»\n\n\n\n\n\nå交æ¢å°äºä¸äºæ°å®¶å
·\n\n\n\né¿å¦¹ä¹å å
¥äºå±æç»ä¹ ï¼å¥½å¬å¥½å¬\n\n\n\nå¦å°äºè±æµæäº¤çæ¹æ³ï¼è±æµæäº¤å¯ä»¥å¼åºå¥½å¤æ°çé¢è²çè±ï¼äºæ¯æç
§æ¹æ³å¼è¾äºä¸ä¸ªè±ç°ï¼ç«ç°ãééé¦ãç¾å\n\n\n\næ³é ä¸ä¸ªç¼è岿ç¼èèµé±ï¼æå¤©æ¶è´å¤§å¤´èï¼ä½æäºå¥½ä¹
ä¸ç´é½æ²¡æåï¼å¥½å¨è¿è¿ç¨ä¸æå¾å¤æå¤æ¶è·\n\nç¬¬ä¸æ¬¡æåæå°é»è\n\n\n\n\n\néå°äºè¶
çº§ç¨æçé²é±¼åé¦é²¤\n\n\n\n\n\néäºè¿ä¹å¤ï¼çæå¤©ååºå¼é¨åç»ååºèµé±ï¼å¤§å¤´èææ¥å¦\n\n\n\n## 第åä¸å¤© 3æ29æ¥ æ¢å大头èï¼æä»¬é½æç¾å¥½çæªæ¥ï¼\n\n\n\nä»å¤©æ¯å¤§å¤´èçä¸å¤©ï¼æå®¶å¤§å¤´è 104 é鱿ç¹è´µï¼æä»¥å»é¶é
±å®¶ä»¥ 95 éé±çåä»·ä¹°äº 4000 棵ï¼è±äº 38 ä¸ï¼ä¹°å®ä¹å身ä¸åªå© 7000 å¤éé±äºï¼æ¢åæ¢å\n\n\n\n\n\nçä¸ä¸ª 600+ èä»·ï¼æä»¬é½æç¾å¥½çæªæ¥ï¼\n\n\n\nå¨å°å²é«å°åç°äºç¨æçæ©è²ç«ç°è±ï¼æ£å¥½å¨è¿éæ´æ°ä¸æ¤ç
§ç
§ç\n\n\n\n\n\nå¦ä¼äºæå¾ç转ææç设计\n\n\n\n\n\n\n\n\n\næä¸å» 16.7 å®¶çæµæé¨ï¼çæ»¡äº 200 次\n\n\n\n\n\n\n\n\n\n廿¾è¥¿æ½æ è天ãæç
§ï¼è¥¿æ½æ çç太å¯ç±äºï¼\n\n\n\nåç°ç®ç³å¨ç¨æç½å¤©åå¨å¹¿åºæ¾ç麦å
é£ç»æï¼ç®ç³è¿ä¹æè¿ä¸ç¡çæ¯å»è¦\n\n\n\nçå°é¿å¦¹å®¶ç¯è¿äº®çï¼å»é¿å¦¹å®¶å客ï¼é¿å¦¹å¨ç书ï¼é£æå°±èººå¨åºä¸çç£é¿å¦¹è¯»ä¹¦å§\n\n\n\n## 第åäºå¤© 3æ30æ¥ è£ç¼å±å¼å¼ å¦\n\n\n\nå¹¿åºæ¥äºä¸åªå«èé©ççç¸ï¼ï¼ï¼ï¼ç»§æ¿å¨å¿å¨è¿ææåä¸è¥¿\n\n\n\n害ï¼ä¸ç¹é½ä¸å¥½çï¼æä¸æ¯å ä¸ºææ¢åå¤§å¤´èæ²¡é±äºï¼\n\n\n\nè£ç¼å±å¼å¼ å¦\n\n\n\nè£ç¼å±çè¯è¡£é´çæ¯å¤ªæ¹ä¾¿äºï¼è½ç¶æ²¡é±è¿æ¯å¿ä¸ä½é
äºä¸å¥è¶
级ä»çè¡£æ\n\n\n\n\n\n害ï¼å¤©ä½éè¦æ¾æè¯´è¯ï¼ç»æç»æä¼ æä¹æé¿åäº\n\n\n\n\n\nç¬¬ä¸æ¬¡æ¡å°å¤§ææç¢çï¼ç¨å®åäºä¸ä¸ªæææ£\n\n\n\n\n\nåå°éãMittãä»éºä¸èµ·å» 16.7 å®¶çæµæé¨\n\n\n\n\n\nå 为æé¿å被强å¶é离äºï¼å\n\n\n\n16.7 å®¶ä»å¤©æ¥äºé¾å
æ¯ï¼å¥½å¸
ç䏿¡é¾ï¼å¯æä¸è½æ±åå®¶\n\n\n\n## 第åä¸å¤© 3æ31æ¥ æ¶è·äºå¤§æäº®\n\n\n\næç°å¨æ¯å¤©è·è¥¿æ½æ æå®æå¼ç¬¬ä¸ä»¶äºå°±æ¯å»è£ç¼å±ä¹°è¡£æï¼è¿«ä¸åå¾
å»è£ç¼å±åæé
äºå å¥å¥½ççè¡£æ\n\n\n\n\n\n\n\n忏¸åååéé¾äº\n\n\n\næ¶æé±æ ãè·æåäºæ¢å°ç¤¼ç©ã廿åå®¶çæµæé¨\n\n\n\n\n\n\n\n\n\næéè¦çäºï¼ä»å¤©æ¶è·äºä¸ä¸ªå¤§æäº®ï¼ï¼åæé
çäºæµå°æ¿ï¼ï¼å¤ªå¥½çäºååå\n\næäº®æ¯å¥¶ç«æ¿å°çå¾çº¸ï¼éè¦ 1 个大ææå 15 ä¸ªå°ææï¼åæ¾ Mitt è¦äºä¸ä¸ªå¤§æææååºæ¥ï¼å¤ªä¸å®¹æäºï¼äºæµå°æ¿æ¯ä»æ¬§ç 16.7 å®¶çéªé©¼ä¹°å°çï¼ç»äºå¸å°äºæ¬§æ°\n\n\n\n\n\n## 第åå天 4æ1æ¥ å¤æ´»è忍±è±å£æ¥å¦\n\n\n\n\n\n\n\n\n\n\n\n4 ææ¥ä¸´ï¼å¤æ´»è忍±è±å£é½å°äºï¼å²ä¸å¼æ»¡äºå¥½ççæ¨±è± ð¸\n\n忏¸éæ¥äºå°ç¤¼ç©\n\n\n\néå°äºå¹¸è¿å
蹦蹦ï¼ä»åè¯æå²ä¸èäº 6 ç§å¤æ´»è彩èï¼å¯ä»¥ç¨å½©èåå®¶å
·\n\n\n\n\n\n\n\né½è¢«ææ¾å°å¦ï¼é£å¤©èãå°é¢èãå¶åèã岩ç³èãæ£®æèãé±¼å¿è\n\n\n\n\n\n\n\n\n\n\n\n\n\nå²ä¸è¿æå¥½å¤æ¨±è±è±ç£å¯ä»¥æ\n\n\n\n\n\nå²ä¸æ¬æ¥äºä¸åªå°é¹¿æ±¤å§\n\n\n\nå»ç å®¶éç©åç°äºä¸åªèèï¼è¸©æ»è¸©æ»\n\n\n\n\n\n\n\n## 第åäºå¤© 4æ2æ¥ é«ä»·åæäºå¤
318§å¤´èï¼åè´¢å¦\n\n\n\n\n\nè¥¿æ½æ ç好çï¼è±ç´è¸ï¼\n\nè§£éäºå°å²è¯ä»·ç³»ç»ï¼è¥¿æ½æ åè¯æç°å¨è¿æ¯æä½ççº§ä¸æï¼æåç级è¦å¢å å±
æ°æ°é\n\n\n\n\n\n群åè´´è´´å®¶å¤§å¤´èæ¶¨å°äº 573ï¼èµ¶ç´§è䏿»¡ä»å¤§å¤´èå»è´´è´´å®¶åï¼åæäº 573 _ 4000 = 2292000 éé±ï¼ç®æ¥ä¸åèµ (573 - 95) _ 4000 = 1912000 éé±ï¼åè´¢å¦ï¼ï¼\n\n\n\n\n\n\n\n\n\n大èè´ç©ãç»æåé礼ç©\n\n\n\n\n\n\n\n\n\næ¥å·¨èµå级æ¿å\n\n\n\n\n\n\n\næ¥å·¨èµå»ºæ¡¥\n\n\n\n\n\n\n\n\n\nåï¼æé±ç好\n\n\n\n\n\n## 第åå
天 4æ3æ¥ æ é¢\n\nå¨äºå¦ï¼å¨æ«æå¿«å¦ï¼\n\n\n\n\n\n\n\nç»§ç»è¿ä»å¤©çæ¿è´·ï¼æ¿è´·å°±åä¸ä¸ªæ åºæ´\n\n\n\n\n\n\n\næ¨å¤©ç桥建好äºï¼ä»å¤©å建ä¸ä¸ª\n\n\n\n\n\nåå°è¡¨ç¤ºå¾é«å
´ï¼âæ¯çå¢â\n\n\n\n\n\næå欢çé¿å¦¹è·æè¯´æ³æ¬èµ°ï¼æå¥½é¾è¿ï¼è¿æ¯æå¥¹ç䏿¥äº\n\n\n\n\n\nç¡®å®è¿æ¯æ³¡æ¾¡æ¡¶ä¹ï¼æä¹ç齿¯éé
çèªå·±å§\n\n\n\nè· Mitt å°å¯ç±äºæ¢ç¤¼ç©\n\n\n\n\n\nææ°æåæ¥å²ä¸ç©ï¼å
éåæ åå\n\n\n\n\n\n\n\n\n\n\n\nè¿ä¸¤å¤©æäºå¥½å¤å¤æ´»èå®¶å
·\n\n\n\n\n\nè¿å¨æåå®¶æ¸å°äºç®åè§è¿çæè´µç奢ä¾åé¢ç´ï¼è½ç¶æ¨å¤©åäºè´¢ä½è¿ä¹è´µè¿æ¯å¾èä¸å¾\n\n\n\n## 第åä¸å¤© 4æ4æ¥ æ é¢\n\n\n\n\n\n卿«æå¿«ï¼\n\næä¸ä¸ªæ¿é´æ¹æäºä¹å¨æ¿\n\n\n\nä»å¤©è£ç¼åºæåå¾é
·ççç²\n\n\n\næå°äºä¸åªç²ç²çèè\n\n\n\nåç°è¿ä¸ªå¤æ´»èæéæ´ç¹æ¥æ¶æ¶åä¼å¼¹åºä¸ä¸ªå¯ç±çå°é¸¡ï¼ç¶åå½å½å½å½\n\n\n\n夿´»èå®¶å
·è¶æ¥è¶å¤äºï¼é½å¿«æä¸ä¸äº\n\n\n\næ¥å¸¸è·æåäºé礼ç©\n\n\n\n\n\n\n\nç«å¤´é¹°å¦¹å¦¹ç»äºæ¥æå®¶äº\n\n\n\nå·çè¥¿æ½æ ï¼è¥¿æ½æ å¨å
å
\n\n\n\næ¨å¤©ç桥建好äºï¼ä½ä»å¤©è¿æ¯ä¸è¦è¿æ¿è´·å建桥äºï¼çæå¤©åæ¢å大头è\n\n\n\nåäºä¸åå°ï¼å¥½åé请å
¶ä»å°å¨ç©è¿æ¥å®å±
\n\n\n\n卿 人å²éå°ä¸åªååè³åï¼emmmï¼æªæªçï¼è¿æ¯ä¸è¦é请äº\n\n\n\n## 第åå
«å¤© 4æ5æ¥ å
æ»¡å¸æçå¤§å¤´èæ¥\n\n\n\nä»å¤©æ¯å
æ»¡å¸æçå¤§å¤´èæ¥ï¼ è¿æ¬¡ç»§ç»æ¢åï¼ä¹°äº 3 èå
ï¼è±äº 92 _ 4000 _ 3 = 1104000 éå
ï¼æèµè¿ä¹å¤§ï¼ä¸å®è¦åä¸ªå¥½ä»·æ ¼\n\n\n\n\n\n\n\nå°ååºä¹°äºä¸å¥æ¤å£«å§å§è£
\n\n\n\n\n\nå°æ 人å²çéï¼éå°äºä¸ä¸ªéé±å²ï¼è¿æå°äºçè¾ãé³é¾\n\n\n\n\n\n\n\n\n\nåäºä¸ä¸ªå¥½ççè´å£³é¨ï¼æ¾å¨æºåºé¨å£\n\n\n\n## 第åä¹å¤© 4æ6æ¥ æ°å²æ°å°é¹¿å¸é¹¿æ¯\n\n\n\n\n\nå°å²æ¥äºä¸åªå«å¸é¹¿æ¯çå°é¹¿ï¼å»æè®¿ä¸ä¸å§\n\nå¸é¹¿æ¯ä¹å¤ªè¡å¤´äºï¼åå°æäºï¼ä¸è¦è¿æ ·åååï¼ä½ èµ°ä½ å¿«èµ°\n\n\n\næ°æå ch æ¥å²ä¸ç©ï¼ch åç§»å±
ï¼è¡£æä¹å¤ªä¸äºï¼é她å 件好康çå§\n\n\n\n\n\nè¿æä¸ä¸ªæ°æåäºè±è\n\n\n\nä¹°æ°è¡£æ\n\n\n\n\n\n\n\nä»å¤©å°å²ä¹æ¥äºæµæ\n\n\n\nåè£
æ®ä¸ä¸ä¹å¨å®¤\n\n\n\næ¾ç²ç²è¦äºä¸ä¸ªæ¯è¨æå¡å»å»\n\n\n\n\n\né²è¥å°æ¥äºä¸åªå«è¥¿çç®çé¼ é¼ ï¼å¥½å¯ç±\n\n\n\n西çç®æçæç©äº 3 æç纸çï¼é½è¾äº...\n\n\n\n\n\n\n\n西çç®å¥½å¯ç±ï¼æ³æå¥¹æ¥æå²ä¸å®å±
ï¼ä½...å¼ï¼è¯¸å¤åå£\n\n\n\n\n\n\n\nä¸è¦è¥¿çç®äºï¼æè¦å»æ¾å
¶ä»å°å¨ç©\n\n\n\n\n\n\n\n\n\n\n\næè§é½ä¸å¤ªå¯¹èå£\n\nåéå°äºä¸åªé¼ é¼ ï¼å¯ï¼å°±å¥¹äºï¼\n\n\n\n\n\n## 第äºå天 4æ7æ¥ æ°å²æ°ä¸¸åãè¿æ¬¡ççæ´å¯äºï¼\n\n\n\n\n\næ¨å¤©é请ç䏏忥å¦\n\n\n\nä¸åå¬è¯´ Mitt 家大头è 607ï¼è
318µ¶ç´§è·å»å¾é大头èï¼æ 3 èå
ç大头èé½åäºï¼åèµäº (607 - 92) _ 4000 _ 3 = 6180000ï¼è¿æ¬¡ççæ´å¯äºï¼é±é½è£
ä¸ä¸äº\n\n\n\n\n\n\n\n\n\nç»å¤§åè£ Mitt å¯ä¸å°æå²ä¸æè´µç奢ä¾åé¢ç´è¡¨ç¤ºæè°¢\n\n\n\n\n\nä»å¤©ä¹æ¶å°äºå¾å¤ç¤¼ç©\n\n\n\nå²ä¸åæ¥äºæµæ\n\n\n\næä¸ Mitt åå°éè¿æ¥ç©\n\n\n\nè¶å°é䏿³¨æè· Mitt ç¡è§è¢«å°éæå°äº\n\n\n\nåè¶ Mitt 䏿³¨æè·å°éç¡è§è¢« Mitt æå°äº\n\n\n\n\n\næ´å¯äºåå¯ä»¥æ©å»ºæ¿åäº\n\n\n\n\n\nè¥¿æ½æ æ¶å°äºä¸å°ä¿¡ï¼çªç¶åç°è¿å°ä¿¡æ¯ kk åçï¼ç¸å
马ä¸ç» kk æäºçµè¯ï¼æå¤© kk è¦æ¥å°å²å¼æ¼å±ä¼äºï¼\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\næå¾
æå¤©çæ¼å±ä¼\n\n\n\n\n\n## 第äºåä¸å¤© 4æ8æ¥ K.K.æ¼å±ä¼\n\n\n\n\n\n\n\nK.K.æ¥å¼æ¼å±ä¼å¦ï¼æ¯ä¸é¦ä¸»é¢æ²ã大家éåå§ãï¼å¥½å¬å¥½å¬\n\n\n\n\n\n\n\n\n\næ¼å±ä¼è±¡å¾çå°å²çæ´»æå䏿®µè½äºï¼è¿å
¥äºä¸ä¸ªæ°é¶æ®µ\n\n\n\n\n\nç¸å
å
è®¸äºæ¹é å°å²å°å½¢ï¼æè§è¦è¿è¡ä¸ä¸ªå¾å¤§çå·¥ç¨\n\n\n\n\n\næ¿å乿©å»ºå¥½äºï¼å¤äºä¸ä¸ªè¶
级大çäºæ¥¼\n\n\n\n\n\nç»§ç»è¿æ¿è´·ï¼è¿å¯ä»¥æ©å»ºä¸ä¸ªå°ä¸å®¤åºæ¥\n\n\n\n\n\næ¥å¸¸ä¹°è¡£æ\n\n\n\nä»å¤©å¥½å¤å°å¨ç©æ¥å¹¿åºå±æï¼å¤§æ¦æ¯å K.K. ä¼ æ\n\n\n\n\n\n\n\n丸ååè³å
好åé½å¯¹è¿ä¸ªåç³å¾æå
´è¶£\n\n\n\n\n\næä¸å»äºè±èçå²ä¸ç©\n\n\n\n\n\n\n\n\n\n\n\n## 第äºåäºå¤© 4æ9æ¥ æåå½çäº\n\n\n\n\n\n\n\nä»å¤©æ©å»ºå®æäºå°ä¸å®¤ï¼å·²ç»æ²¡æ³ç»§ç»æ©å»ºäºï¼è¿æç¹æå¿µææ¿è´·è¿çæ¥å\n\n\n\n诶è¿ä¸æ¯å游ä¹ï¼ä½ 忥äº\n\n\n\n\n\nä¸çé£ä¹å¤§ï¼æ±¤å§æ³å»ççï¼è¯´å®è¯ï¼æ±¤å§åæ¥çæ¶åå¹¶ä¸å欢æä¹ä»ï¼ä½è¿äºè¿ä¹ä¹
æå·²ç»æææ
äºï¼è¿æ¯èä¸å¾ï¼ä¸è®¸èµ°\n\n\n\n\n\n\n\nå¸é¹¿æ¯å®¶éæ´å¥æªäºï¼ä¸ç¥éå¸é¹¿æ¯æç®ä»ä¹æ¶åå»å
¶ä»å°æ¹çç\n\n\n\né¿å¦¹è¿æ¯å¯ç±\n\n\n\n汤å§å¼å§å½©è¹å±äºï¼å»å»\n\n\n\n\n\näºè±èç»æéäºå¥½å¤ä¸è¥¿å\n\n\n\n\n\nå±
ç¶æ¯å½çæåçå ï¼æåå½çäºåå\n\n\n\n## 第äºåä¸å¤© 4æ10æ¥ èè²é¥å¢\n\n\n\nä»å¤©æ¯å¨å
ï¼K.K.忥å²ä¸å±æäº\n\n\n\nä»å¤©å¿æ
æç¹ä¸å¥½ï¼ç¹äºä¸é¦å¿§éçæï¼K.K.éäºãèè²é¥å¢ã\n\n\n\n\n\n\n\nè¶
级好å¬ï¼å®æ´è§é¢å¨[è¿é](https://www.bilibili.com/video/BV1ce41147u5/)\n\n## 第äºåå天 4æ11æ¥ é鱼大èµ\n\n\n\n\n\n\n\n\n\n\n\nä»å¤©æé鱼大èµåï¼è¿æï¼å¯ç±çè³å
çæ¥å¿«ä¹ï¼\n\né鱼大èµç主å人å«ä¿å¸å»¶ï¼ååçä¸é\n\n\n\n\n\n\n\næè¯äºä¸ä¸ï¼ä¸ç¨é±¼é¥µ 3 åéæå¤å¯ä»¥é䏿¥ 5 æ¡\n\n\n\n\n\n妿æ¯å¤äººä¸èµ·éè¿æé¢å¤çå¢éç¹æ°å¥å±ï¼æä»¥çº¦äºå¥½å¤äººä¸èµ·é\n\nä¸è½®ç»æå大家卿éé¢ç¹æ°\n\n\n\nè·æå们éäºä¸å¤©é±¼ï¼é¢äºå¥½å¤å¥å±ï¼å¾å¼å¿ï¼ 6 ç¹é鱼大èµåæ»¡ç»æ\n\n\n\næä¸ kookxiang æ¥æå²ä¸ç©ï¼ä¸èµ·å¨æå®¶éæ¼å¥ä¹å¨\n\n\n\n## 第äºåäºå¤© 4æ12æ¥ å¤æ´»èãå¤§å¤´èæ¥\n\n\n\n\n\næ¿å
è¿ä¸ªç¬å®¹\n\n\n\nä»å¤©æ¯å¤§å¤´èæ¥ï¼æ©ä¸ä¸èµ·åºå°±è·å» Aaron å®¶æ¶è´ä¾¿å®ç大头èï¼è¿æ¬¡ä¸å
±ä¹°äº 90 _ 4000 _ 4 = 1440000 éé±ç大头è\n\n\n\n\n\n\n\n\n\nAaron å®¶å¸ç½®å¾å¤ªç²¾è´äºï¼å·æä¸æ¥åå»å¦ä¸å¦\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\næ¶å°äºæ¨å¤©é鱼大èµèµ¢å¾çé¶å¥æ¯\n\n\n\nè¿ä¸ªå¤æ´»èä¸åç¿è¿æºå¥½ç©ç\n\n\n\nåç°ç¦»è¹¦è¹¦æ¯è¾è¿çæ¶å蹦蹦ä¼å¹æ°ï¼å¾æ²®ä¸§çæ ·åï¼èµ°è¿ä¹ååä¼å¾å¼å¿å°è¹¦è¹¦è·³è·³ï¼æè§å¥½å¯æï¼æåä¹ä¸å«ä»ç¦äº\n\n\n\n\n\n忥å¸é¹¿æ¯ä¹åç°äºï¼ä½æ¯ä¸è¦å½ç蹦蹦çé¢è¯´ååï¼è¹¦è¹¦å°±å¨ä½ åé¢åï¼å¿«ä¸è¦å说äºï¼\n\n\n\n\n\næ¶å°äºäºè±èç豪ååææ¶\n\n\n\n\n\n## 第äºåå
天 4æ13æ¥ ææ£ç礼ç©\n\n\n\næå¤æ¶å°äºç²ç²ç礼ç©ï¼è½ç¶åªæ¯ä¸ä¸ªåæ®éä¸è¿çå¶åé¨ä¼ï¼æå´è¢«æå¨å¾åäºåºæ¥\n\nææ£ç礼ç©ï¼æä¼æ°¸è¿è®°å¨å¿éç\n\n> æ©å°±æ³éç»ä½ è¿ä¸ªå¦ï¼è¿æ¯æè·å¾ç第ä¸ä¸ªDIYå¦ï¼å¤§çªè¹å~\n\n\n\n\n\nä»å¤©ååºå¨åä¸ä¸ªå¥æªçé³ç®±\n\n\n\nå«ï¼å¨é¿å¦¹èº«ä¸æå°äºè·³è¤\n\n\n\n\n\nMitt å²ä¸çé¿ä¸åè¯äºæä¸ä¸ªæè¶£çäºï¼ä½æç
§åäºä¹å Mitt 表示并没ææå°é«å
´\n\n\n\n\n\n\n\nè°çæ³\n\n\n\n\n\n## 第äºåä¸å¤© 4æ14æ¥ å¤§å¤´èåæ´å¯å¦\n\n\n\n\n\nä»å¤©è驿¥äºï¼æåä¸ä¸ªå¥½ççæ´ä¸½å¡éï¼éåé
å°è£å\n\n\n\nMitt ä¹éæ¥äºå¶åé¨ä¼ï¼æå¨\n\n\n\nå¨ Aaron å²ä¸å¬å°äºãK.K.å¶åãï¼è¶
级好å¬ï¼æ¯ãèè²é¥å¢ãä¸ç¸ä¸ä¸ï¼ä¸æ¬¡ K.K. æ¥ä¸å®è¦è®©ä»å±ä¸ä¸è¿é¦\n\n\n\nå¦ä¼äºåè¶
é
·çæç车\n\n\n\nJemair éäºå¥½ççé¶æ²³ç³»å°æ¿\n\n\n\nåå¤ 1 ç¹å°åç¾çæåç¾æ¶å®¶å¾é大头èï¼587 éé±ï¼åèµäº (587 - 90) _ 4000 _ 4 = 7952000 éé±ï¼æç°å¨æ¯ä¸ªåä¸å¯ç¿å¦ï¼\n\n\n\n\n\n\n\n## 第äºåå
«å¤© 4æ15æ¥ é»è²ç«ç°\n\n\n\n\n\næäº¤åºæ¥äºçè´µçé»è²ç«ç°\n\n\n\né¾å
æ¯æ¥äº\n\n\n\næäºäºè±èå¨å²ä¸æé»å·¥ï¼æ²¡æå·¥èµï¼äºè±è带äºä¸èº«æ¤å£«è£
è¿æ¥æµè±ãææèï¼å¿å¿\n\n\n\n\n\n\n\n## 第äºåä¹å¤© 4æ16æ¥ è¡å¾å¤å带è£
\n\n\n\næ¨å¤©å§æé¾å
æ¯åçè³è模åå°äº\n\n\n\nå¨ååºéçå°äºè¡å¾å¤å带è£
\n\n\n\n## 第ä¸å天 4æ17æ¥ é·é¨å¤©æ°\n\n\n\n\n\næ¶å°äº Mitt é常ç¨å¿ç礼ç©\n\n\n\n\n\nWinfred æ¥ä¹ä¸æç礼ç©\n\n\n\n\n\nå°è¯æé
äºå å¥è¡£æï¼ä½æ¯ä¸è¬è¬\n\n\n\n\n\n\n\nMitt å²ä¸æ¥äºé·é¨å¤©æ°ï¼åçå æºå±é©å飿ºå»ç\n\n\n\n\n\nåå®¶ä¹åå°å
æäºæâä¸å¥½ææâ\n\n\n\n## 第ä¸åä¸å¤© 4æ18æ¥ K.K.å¶å\n\n\n\n\n\næ¶å°äº Mitt çé»éææï¼è·æè¿ä¸èº«å½çå¥è£
å¾é
\n\n\n\n\n\nè¿æ Tyzual çç«ç®è¡£æãAaron çå®èªå头çãMitt çè¶
级è±éè¡£æãMitt çé»éå¼¹å¼ï¼æ¥æäºç¬¬ä¸ä¸ªéè²éå
·\n\n\n\n\n\n\n\n\n\n\n\nååºå¨åææçéª¨éª¼æ æ¬\n\n\n\næé
äºå å¥å¥½ççè¡£æ\n\n\n\n\n\n\n\nä»å¤©æ¯å¨å
ï¼K.K.æ¥å²ä¸äºï¼å« Mitt è¿æ¥ä¸èµ·å¬äºä¸æ¬¡ä» Aaron å²ä¸å¬å°çå¿å¿å¿µçãK.K.å¶åãï¼å®æ´è§é¢å¨[è¿é](https://www.bilibili.com/video/BV1vA411b7ip)\n\n\n\n\n\n## 第ä¸åäºå¤© 4æ19æ¥ å¸é¹¿æ¯è¦èµ°äº\n\n\n\nä¸çé£ä¹å¤§ï¼å¸é¹¿æ¯è¯´æ³å»ççï¼çº ç»äºå¥½ä¹
è¿æ¯åæäºï¼ä½è¿æ¯æºä¸èç\n\n\n\nååºåºäºä¸ä»¶å¥½çç带家徽åæè¢´\n\n\n\nåç°äºå°ç«å K.K.åä½çåæ²ï¼æ²¡æ³å°å°ç«è¿æè¿æ ·çä¸é¢ï¼å¹³æ¶å®å
¨çä¸åºæ¥\n\n\n\næ¶å°äºæ¨å¤© K.K.å¯çãK.K.å¶åãCDï¼å¼å¿\n\n\n\nè¿æ Mitt 亲æéå»çæ¨éé¸\n\n\n\nå¨ç»ç«¯ä¹°äº 100 ä»¶ä¸è¥¿ï¼ææºå¯ä»¥å®è£
äº~~æ·å®~~ Nook è´ç©\n\n\n\n\n\n\n\n\n\næ¯å¤ªé³é¨\n\n\n\n## 第ä¸åä¸å¤© 4æ20æ¥ å夿©å»ºå¤§ååºå¦\n\n\n\nç»äºæ»¡ 30 天å¯ä»¥æ©å»ºååºå¦ï¼å¿å¿å¿µäºå¥½ä¹
\n\n\n\n\n\nå¸é¹¿æ¯è¦èµ°äºï¼å²ä¸ç¬¬ä¸æ¬¡æ¬èµ°å°å¨ç©ï¼æç¹ä¼¤æ\n\n\n\n\n\n\n\n\n\n汤å§å¾éæ¶å°æäºæå¿ç¢çå¨ä½ï¼ä½å¥½å并没è½è®©æåå¾ç§¯æèµ·æ¥\n\n\n\n\n\n\n\nä¹°å°äºå¥½ççå
æ°æ²åå两身衣æ\n\n\n\n\n\n\n\næ¶å°äº Mitt ç礼ç©\n\n\n\n卿±¤åå®¶ç©\n\n\n\n\n\n天ä½åç®ç³åå¨åµæ¶...\n\n\n\n## 第ä¸åå天 4æ21æ¥ æ°å²æ°æ¾é¼ å°æ\n\n\n\né²è¥å°æ¥äºæ°æå\n\n\n\n大ååºå¨å»ºå¦\n\n\n\n\n\nä»å¤©çååº\n\n\n\n忏¸ä½ 忥äº\n\n\n\né²è¥å°æ¥äºä¸åªå«å°æçå¯ç±æ¾é¼ ï¼é请äºå°ææ¥å²ä¸å®å±
\n\n\n\n\n\n\n\n廿 人å²ä¸æåæ°å²æ°ï¼éå°äºå¥½å¤å°å¨ç©ï¼æåä¸ä¸ªé½æ²¡é请ï¼è¿æ¯å°ææå¯ç±\n\n\n\n\n\n\n\n\n\n\n\nä»å¤©æ¯éç座äºï¼æ²æ»©æ¡å°äºéçåº§çææ\n\n\n\nWayne å²ä¸çæ´ç»´æäºæé»éå¢çåæ³ï¼è¿æè®¿äºå¶å·´å·´çå¤çï¼å¬ Wayne 说å¤çæ¥å²ä¸ä¹åæ¯æ··ç¤¾ä¼çï¼é¾æª\n\n\n\n\n\nMitt éçè¶
é
·ç太空æ¢\n\n\n\néå°äºç带鱼\n\n\n\nå»äºè±èå²ä¸ç©ï¼äºè±èæè¶
级å¤çè¡£æï¼ææå欢çè¿æ¯è¡å¾å¤å¥è£
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 第ä¸åäºå¤© 4æ22æ¥ å¤§ååºå¼ä¸å¦\n\n\n\n\n\n\n\n大ååºå¼ä¸å¦ï¼å¤è¡¨ä¹å徿´æ°æ´¾äºï¼åå åºç¥ä»ªå¼\n\n\n\nè¿å»ççå§ï¼éé¢å®½æäºå¥½å¤å¥½å¤\n\n\n\nè±ç¸åç²ç¸ç»äºç©¿ä¸äºæ°è¡£æ\n\n\n\nåçä¸è¥¿ä¹å¤äºï¼æ¯å¤©å¤ä¸ä¸ªå¾è´µçé«çº§ååï¼è¿æé«çº§å·¥å
·å\n\n\n\n汤å§ä¹å¥½å欢æ°ååº\n\n\n\n\n\nå°ææ¬å°å²ä¸æ¥å¦ï¼ä»å¤©çæ¯å¥½äºä¸æ\n\n\n\næè£
åºæåè¶
é
·çé£è¡åå¥è£
\n\n"},{"slug":"handshake","title":"ä¸ä»½ç¹å«ç弿ºé¡¹ç®èµå©","tags":[],"body":"\n\nä¸å¤å§å§å¨ç¾¤éå享äºä¸ä¸ª[å¸å龿¥](https://www.v2ex.com/t/645480)ï¼å¤§ææ¯ ~~æï¼Handshakeï¼æé±ï¼æå¸~~ Handshake ç¹å«æé±ï¼ç°å¨ç» GitHub ä¸ç¬¦åè¦æ±çå¼åè
éèæè´§å¸ï¼åªè¦è¶
è¿ 15 个 followers ä¸ä¸ä¼ è¿ SSH keys å°±è½é¢åä»·å¼ 1000 åçèæè´§å¸ HNSï¼ç¶åå¯ä»¥æ¢ææ¯ç¹å¸æç°\n\nå¼ï¼å¨åç§çµåå¹³å°åçµä¿¡è¯éªçå¥è·¯ä¸æé¿èµ·æ¥çææä¹å¯è½ä¸è¿ç§å½ï¼è¯å®ä¸æ¯è¯éªå°±æ¯ç±»ä¼¼æ¼å¤å¤ç 100 å
æç°çå¥è·¯ï¼ææä¸ä¼ç¨æé«è´µç GitHub è´¦å·åè¿ç§äº\n\næå¯¹ä¸å¤å§å§å¤ä¹ä»¥é¼»<!--more-->\n\n第äºå¤©ï¼ææ¶å°äºä¸å°åå¾é®ä»¶\n\n\n\n让ææè¯å°ï¼è¿ä»¶äºæ
ï¼å®å¯è½æ¯ççï¼\n\nç¶åä¹çå°ç¡®å®[æäººæç°æå](https://shidenggui.com/articles/namebase-airdrop)äºï¼åæ¥ççæè¿ç§å¥½äº\n\n\n\nä¸å¤å§å§å¯¹æå¤ä¹ä»¥é¼»\n\n## é¢å HNS\n\næç
§ [Handshake 宿¹ç说æ](https://www.namebase.io/airdrop)ï¼çæå å¯è¯æãæäº¤å° Handshake åºåé¾å£°æ HNS è´§å¸\n\n\n\næåèæ¬è¾åºäºä¸ä¸ª Base64 åç¬¦ä¸²ï¼æäº¤ç» Handshakeï¼é¢å HNS\n\n\n\nçå¾
大约 16 ä¸ªå°æ¶å°è´¦\n\n## å
æ¢æ¯ç¹å¸\n\n第ä¸å¤©ï¼æ©ä¸èµ·åºåç°å·²ç»å°è´¦äº\n\n\n\nå夿 HNS æ¢ææ¯ç¹å¸ï¼åç°å¯è½åæ´»å¨å½±åï¼è¿å 天 HNS ä»·æ ¼ä¸ç´å¨æ´è·ï¼ä»æ´»å¨åå¼å§æ¶ç 2000 åï¼çå°å¸åæ¶ 1000 åï¼é¢åæ¶ 700 åï¼å°è´¦æ¶ 600 åï¼åè¿ç¯æç« æ¶åªæ 400 åäº\n\næ¢æ¯ç¹å¸æä¸¤ç§æ¹å¼ï¼å®æ¹æ¸ éç´æ¥å
æ¢åæå¨äº¤ææååº\n\n\n\nç´æ¥å
æ¢ä¼å°å¾å¤ï¼æä»¥æéæ©äºæå¨äº¤ææå\n\nåå°äº 0.06431673 BTC å¹¶è½¬å° [OKEX](https://www.okex.me/join/1876626) ç BTC è´¦æ·é\n\n\n\n\n\n## å
æ¢äººæ°å¸\n\næåéè¿ [OKEX](https://www.okex.me/join/1876626) çæ³å¸äº¤æåææ¯ç¹å¸ï¼è·å¾ 4370.59 å
人æ°å¸\n\n\n\n## å
³äºè¿ç¬é±\n\nå 为é¢åçè¦æ±æ¯ GitHub followersï¼æä»¥æä¸ä¼æè¿ç¬é±å½ä½çæå½ç¶ï¼æè
è·å
¶ä»äººä¸æ ·å«å®ç¾æ¯ï¼è伿è¿ç¬é±çä½ä¸ä»½ç¹å«ç弿ºé¡¹ç®èµå©ï¼å®å°åå
¶ä»èµå©ä¸èµ·è¢«ç¨äºæ¯æææå
¥æ´å¤æ¶é´å°å¼æºé¡¹ç®ä¸åå¸®å©ææ©æ¥å®ç°æä¸ºå
¨è弿ºä½è
ççæ³\n\næè°¢ Handshake"},{"slug":"painting-nezuko","title":"ã临æ¹ã祢è±å","tags":["ç»ç»"],"body":"åå¾ï¼https://weibo.com/5251489751/IbMlieN4K"},{"slug":"2019","title":"2019 æåäºä»ä¹","tags":["å¹´ç»æ»ç»"],"body":"2019 å·²ç»ç»æäºï¼å¨è¿éå顾ä¸ä¸ 2019 æåäºä»ä¹\n\n## 弿º\n\n\n\nè½ç¶ç»´æ¤çé¡¹ç®æä¿æå¥åº·çæé¿ï¼ä½æ²¡æåä
318»ä¹æ°ä¸è¥¿\n\n**[RSSHub](https://github.com/DIYgod/RSSHub)**\n\né¡¹ç®æ»ä½å·²ç»æ¯è¾ç¨³å®äºï¼æ¥å¸¸å°±åä¸ä¸ prï¼ä¿®ä¸ä¿®å° bug\n\næ´å®æ å䏿¯ç¥çæ°æ®ï¼\n\nStar æ°è¾¾å°äº 10k+\n\n\n\nå
Œ
±æå¡ rsshub.app çæè¯·æ±éè¾¾å°äº 1 亿+\n\n\n\n**[RSSHub Radar](https://github.com/DIYgod/RSSHub-Radar)**\n\n2019 å¯ä¸çæ°é¡¹ç®ï¼è®©è®¢é
RSS æºå徿´ç®å\n\nå¨å°æ°æ´¾åäºä»ç»æç« å¹¶è·å¾ Matrix ç²¾éï¼https://sspai.com/post/56079\n\næ´å®æ å䏿¯ç¥çæ°æ®ï¼\n\nChrome Web Store æ¯å¨ç¨æ·æ° 7000+\n\n\n\n2020 æç®æå
¥æ´å¤çæ¶é´å¨å¼æºé¡¹ç®ä¸ï¼ä¸åæ æ°äºç°æé¡¹ç®çæ¥å¸¸ç»´æ¤ï¼èæ¯åä¸äºæ°ä¸è¥¿ï¼ï¼å¯è½ï¼æ DPlayer éæãTelegram Bot å¹³å°ãRSS 客æ·ç«¯ç\n\né常æè°¢ 2019 æé´ç弿ºèµå©è
们ï¼[rixCloud](https://rixcloud.app/rsshub)ã[æå¾
](https://angelia.codeeer.com/)ã[èææ°ç ](https://lizhi.io/store)ã[å¿«ç¥](https://kzfeed.com/?from=rsshub)ã[WeRss](https://werss.app/?utm_source=rsshub)ã[é¢å
å¤](https://mianbaoduo.com/)ã[Liuyang](https://github.com/lingllting)ã[Sayori Studio](https://t.me/SayoriStudio)ã[çè´è¿](https://www.shaoyaoju.org/)ã[Rolly RSS é
读å¨](https://www.coolapk.com/apk/239500)ãZuyangã[Eternal Proxy](https://proxy.eternalstudio.cn/?from=rsshub) åå
¶ä» 10 å Patreon èµå©è
å 100 å¤å䏿¬¡æ§èµå©è
ï¼ç®åæ¯ä¸ªæå¼æºèµå©æ¶å
¥å·²ç»å¯ä»¥å å°ææ»æ¶å
¥ç 5%-10%ï¼è¿å¸®å©äºææå
¥æ´å¤çæ¶é´å°å¼æºé¡¹ç®ä¸ï¼ä¹è®©æç¦»å
¨è弿ºä½è
ççæ³æ´è¿äºä¸æ¥\n\n## 足迹\n\n\n\n**é¿é**\n\næ¥æ¬\n\nå®æäº [2018 å¹´ç»æ»ç»](https://diygod.me/2018/)éçæå¤§å¿æ¿ï¼å»æ¥æ¬çäºæ¨±è± ð¸ï¼9 天èªç±è¡ï¼å»äºå¤§éªãå¥è¯ã京é½ãä¸äº¬\n\n2020 æç®å»ä¿ç½æ¯çæ©å°æ¼æ¯å
çæå
ð\n\n**çé**\n\n[BILIBILI WORLD](https://twitter.com/EEEEYHN/status/1180997347972485122)\nChinaJoy\n[æ´å¤©ä¾Ãæææ¼å±ä¼](https://twitter.com/DIYgod/status/1099273603265097728)\n[RSS
318Hub é¢åºå¤§ä¼](https://twitter.com/DIYgod/status/1081496706577883136)\n[迪士尼ä¸å£è](https://twitter.com/DIYgod/status/1190619091158986752)\n\nè·[æ»ç¨½](http://eyhn.in/)ã[FHYunCai](https://oxz.me/)ã[ç©æ°´](https://imjad.cn/)ã[Free](https://twitter.com/FreeMagico)ã[Henry](https://henry.wang/) ç人é¢äºåº\n\n## æè½\n\nð¤¸ââï¸ HIPHOP è¡èï¼ææç»ç»ä¸äº 7 è大课å 7 èç§æè¯¾ï¼å¾ç´¯ä½å¾æè¶£çä¸é¡¹æè½ï¼å¯è½ä¼ç»§ç»å¦ä¸å»\n\nð è®°è´¦ï¼ä» 8 æä»½å¼å§è®°è´¦ï¼å·²ç»å
»æä¹ æ¯äºï¼è®©æå¾æ¸
æ¥æ¯ä¸ªæçé±é½è±å¨äºåªé\n\nð¨ ç»ç»ï¼å¶å°ä¼æç»ç»çå²å¨ï¼ä½ä¸ç´æ²¡æè¡å¨èµ·æ¥ï¼2020 æç®éæ¾è¿é¡¹æè½ï¼ç®æ æ¯æ¯ä¸ªæç»ä¸å¼ \n\n## å¥åº·\n\n\n\nå¹´ååäºä¸æ®µæ¶é´ç keepï¼æ²¡æåæä¸æ¥ï¼ä½æè¿æ²è¿·äºå¥èº«ç¯å¤§åé©ï¼å¥èº«è®¡åéç叿\n\n2019 åèäºï¼2020 叿å¯ä»¥å¨å¥èº«ç¯ç帮å©ä¸åæ 10 æ¤\n\n## ææ
\n\n<p><img style=\"width: 100%; max-width: 400px\" src=\"./attachments/bafkreiatq2acgzepalb6vxcx42glctxtqr7bewkumlkbkdpwkm4xjudwtm.jpeg\"></p>\n\nåå°å»é¢çå·¥ä½å¾å¿ï¼ä½ä¼æ¯æ¥é½ä¼è¿æ¥ä¸èµ·ç©ï¼ç°å¨ä¼æ¯æ¥ä¸åé£ä¹æ èäºï¼è¿å®å¹´ä¼æ¬å°ä¸èµ·ä½ï¼è¿æå¯è½ä¼è®¢å©\n\né
¸å¥¶è¶æ¥è¶ç²äººäºï¼å¥½åä¸åªçï¼ä½æ¯éæè¶æ¥è¶èäºï¼æç®ç»å¥¹èé£\n\n## 游æ\n\n\n\n2019 ç©äºé常å¤ç游æï¼ç»æå¢æ·»å¾å¤ä¹è¶£\n\nPS4ï¼\n\nãå°å¹³çº¿ï¼é¶ä¹æå
ãï¼æä½³ï¼[Twitter1](https://twitter.com/DIYgod/status/1165702536667385856) [Twitter2](https://twitter.com/DIYgod/status/1188086500505743360)\nãæªç©ç人ï¼ä¸çã&ãæªç©ç人ä¸çï¼å°åãï¼æä½³ï¼æè¿å½äºå 个[游æå®åµ](https://space.bilibili.com/2267573/channel/detail?cid=91177)ï¼ä½æ¯æ²¡ä»ä¹äººçï¼[Twitter](https://twitter.com/DIYgod/status/1179127591912931328)\nãåºç¹å¾ï¼å人ã\nãæåçè¿è
ã\nãå·«å¸3ï¼ççã\nãé常è±éã\nãæ¯çº¿å°ç²¾çµ2ã\n\nSwitchï¼\n\nãå¥èº«ç¯å¤§åé©ãï¼æä½³\nãå¡å°è¾¾ä¼ 说ã\nã马忬§å索尼å
å¨ 2020 ä¸äº¬å¥¥è¿ä¼ã\nãå®å¯æ¢¦ç¾ã\nãä¿ç½æ¯æ¹å99ã\nãå
«æ¹æ
人ã\n\n~~ä½èªå·±ç©æ¸¸æè¿æ¯æç¹å¤ç¬ï¼æä»¥å»ºäºä¸ä¸ªä¸èµ·ç©æ¸¸æç QQ 群ï¼947956902ï¼æ¬¢è¿å å
¥~~\n\n## å½±è§\n\n\n\nçµè§å§ï¼\n\n2019 好å¤è´¨éçç¸çå§ï¼æä½³å¾é¾éï¼4 个并åå§\n\nãå»ä»å¦çä¸çãï¼æä½³\nãé¿å®åäºæ¶è¾°ãï¼æä½³ï¼[Twitter](https://twitter.com/DIYgod/status/1147730847530803200)\nãç±ï¼æ»äº¡åæºå¨äººãï¼æä½³\nã亿ä¸ãï¼æä½³\nãæåçæ¸¸æãï¼çå°¾çå°¾çå°¾çå°¾ï¼æ°æ»æäºï¼[Twitter](https://twitter.com/DIYgod/status/1130514418444279808)\nãæï¼å°ç¹ä¸çã\nãåå°è¯ºè´å©ã\nãå
¨è£¸å¯¼æ¼ã\nãå
åå
±åå½ã\nãæå°¸æé²ã\nãæ§ç±èªä¿®å®¤ã\nãè¡ç«ã\n\nçªå§ï¼\n\nä¸ç¥éæ¯æç¼å
åäºè¿æ¯ä¸çççè¯ä¸¸ï¼2019 å¾å°æè½çå¾ä¸å»ççª\n\nã鬼çä¹åãï¼æä½³ï¼æ¯åº¸ç½®çç 2019 鏿çªï¼å¹çï¼æ²¡ççèµ¶ç´§ç\nã鿥çªå¤´å°å¹´ä¸ä¼æ¢¦å°ææ¢¦ç¾å°å¥³ã\nã约å®ç梦幻å²ã\nãå¤ç½ç½ã\nãå¨ç©çæ³æ² / BEASTARSã\nã笨æä¹æçä¸éã\nãæµæ±å§ï¼å¥èº«å°å¥³ã\n\né¨åçµå½±ï¼\n\nçµå½±å¤ªå¤äºæä»¥åªæå 个å°è±¡æ·±å»ç\n\nãåªåä¹éç«¥éä¸ãï¼æä½³ï¼æå
åä¸ºæ¬ [Twitter](https://twitter.com/DIYgod/status/1155510269952401408)\nãè°é³å¸ãï¼ä»
次äºåªå\nãå个åå§ã\nãæµ·ä¸é¢ç´å¸ã\nãå°å¹´çä½ ã\nãåä¸å寻ã\nãé¿ä¸½å¡ï¼ææå¤©ä½¿ã\nãç¯ççå¤æäººã\nãæµæµªå°çã\nãé¶ç¿¼ææã\nãé¦è 派对ã\n\n## é
读\n\nç书å°è¯äºä¸ä¸ªæï¼å°½åäºï¼è¿æ¯æ²¡è½æåå
»æä¹ æ¯ï¼2020 顺å
¶èªç¶\n\nãåç»å¤§å®¶çç设计书ã\nãæè离ã\nãä¸ä½ã\nãä¸åªç¹ç«ç¬è¡ççªã\n\n## æå\n\næ¬å½å¹´è¿å¾æäººç顺å©ï¼ä¹å¤§è´å®æäºå»å¹´çç®æ ã让èªå·±åå¾å
å®æè¶£èµ·æ¥ãï¼å¸æ 2020 ç»§ç»ä¿æï¼åæ¶å¯ä»¥å®æä¸é¢çå 个å°ç®æ å°±æ´å¥½äºï¼å\n\n"},{"slug":"android","title":"æå®¶ Android åå
»æ","tags":[],"body":"æè¿æç¨äºä¸¤å¹´ç iPhone X æ¢æäº Redmi K20 Proï¼ä½éªä¸ä¸ Android èªç±é¦çç空æ°\n\n<p><img style=\"width: 100%; max-width: 300px\" src=\"./attachments/bafkreigdo5h6km6mcagm4jfx3lhny5bkbm7cauo4oyfvludoxuk372jwoy.jpeg\"></p>\n\n## è§£é Bootloader\n\nå°ç±³ææºåºå齿¯é Bootloader çï¼éè¦å°[å®ç½](http://www.miui.com/unlock/index.html)ä¸è½½è§£éå·¥å
·è§£é\n\nå·æºãROOT é½éè¦è§£é Bootloaderï¼è¿æ¯æè
¾ææä¸è¥¿çç¬¬ä¸æ¥\n\næä»¥æä¸æ¿å°ææºç¬¬ä¸ä»¶äºå°±æ¯å
´å²å²å°è¿æ¥çµèãä¸è½½è§£éå·¥å
·ãè¿è¡è§£éç¨åºï¼\n\n\n\n\n\n游æç»æ\n\nâââââââââââââââââââââââ\n\n7 天åï¼\n\n\n\n## å·å
¥ TWRP\n\nRecovery æ¯å®åçæ¢å¤ç³»ç»ï¼ç±»ä¼¼ [Windows ç PE](https://docs.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/winpe-intro) å [macOS çæ¢å¤åè½](https://support.apple.com/zh-cn/HT201314)ï¼å¯ä»¥ç¨æ¥ç³»ç»å级åéç½®ææº\n\nå·å
¥ç¬¬ä¸æ¹ç Recovery å¯ä»¥è·å¾æ´å¤çåè½ï¼æ¯å¦ Root å å·å
¥ç¬¬ä¸æ¹ ROM\n\nå
¶ä¸ [TWRP](https://twrp.me/) æ¯ä¸ä¸ªèåç弿º Recovery æ åï¼å¨ TWRP å®ç½æç´¢ `Redm
318i K20` å¯ä»¥çå° TWRP 宿¹å·²ç»æä¾äºå¯¹ Redmi K20 Pro çæ¯æ\n\n\n\n使¯å 为è¿ç¯æç« åå太ä¹
äºï¼æå· TWRP çæ¶å宿¹è¿æ²¡ææ¯æ Redmi K20 Proï¼æç¨çæ¯ä¸ä½å½å
å¼åè
[wzsx150](https://weibo.com/u/6033736159) éé
ç [TWRP æ å](https://weibo.com/ttarticle/p/show?id=2309404160776561631202)\n\n\n\nwzsx150 å¢éæä¾äºé常æ¹ä¾¿çä¸é®å·å
¥å·¥å
·ï¼æå¼ `recovery-twrpä¸é®å·å
¥å·¥å
·`\n\n\n\næ ¹æ®æç¤ºä¸ä¸æ¥ä¸ä¸æ¥\n\n\n\n\n\næé´ææºéå¯ä¸æ¬¡ï¼åå¯å¨èªå¨è¿å
¥äº TWRPï¼è¯æå·å
¥æå\n\n\n\n## å·å
¥ Magisk\n\nMagisk æ¯ä¸ä¸ªå
¼å
·ç¨³å®æ§åå¯ç©æ§çç¥å¨ï¼ä½ä¸ºä¸ä¸ª Root æ¹æ¡ï¼å®è½ä¸ç ´åç³»ç»å®ç°æ ç OTAï¼ä½ä¸ºä¸ä¸ªæä»¶æ©å±å¹³å°ï¼å®åè½æä¾ä¸°å¯çèªå®ä¹æ¨¡åæ¥æ»¡è¶³å¤æ ·åçå®å¶éæ±\n\nåèé
读ï¼[å°æ°æ´¾ - æ¯ä¸ª Android ç©å®¶é½ä¸å¯éè¿çç¥å¨](https://sspai.com/post/53043)\n\nMagisk åæ ·ä¹æ¯å¼æºé¡¹ç®ï¼å¨ [GitHub](https://github.com/topjohnwu/Magisk/releases) ä¸ä¸è½½ææ°çç Magisk å®è£
å
导å
¥ææºä¸ï¼ç¶åç¹å» TWRP ç `å®è£
` æé®ï¼æ¾å° Magisk å®è£
å
ï¼å°±å¯ä»¥å·å
¥äº\n\n\n\néå¯ç³»ç»åï¼ä¼åç°æ¡é¢å¤äºä¸ä¸ª `Magisk Manager`ï¼è¯æå·å
¥æå\n\n\n\n## Magisk\n\nåé¢åå¤äºé£ä¹å¤ï¼ç»äºå¯ä»¥å®è£
Magisk 模åäºï¼Magisk 模åé常丰å¯ï¼ç½ä¸èµæä¹å¾å¤ï¼æä»¥è¿éåªä»ç»ä¸ä¸æä½¿ç¨çå 个模å\n\n<p><img style=\"width: 100%; max-width: 400px\" src=\"./attachments/bafkreibfr3x5o62s6wdvo5xaa6tdkqqlhju7o2haszdq6fdohywolducqq.png\"></p>\n\nçç´«A丸ï¼å
¨å±æ¿æ¢ç³»ç»åä½ï¼åä½åå«çç´«A丸ã³ãã·ãã¯ï¼ææå°±å¦å¾æç¤ºï¼å¾å¯ç±ï¼ä»ç»åä¸è½½å¨[è¿é](https://mp.weixin.qq.com/s/zGaX15vRE-ZPoHtAiXawhQ)\n\nGoogle Lens Enablerï¼æ¬ºéª Google ç¸åè¿ä¸ªè®¾å¤æ¯ä¸å° Pixel 设å¤ï¼æ¥å¼å¯ Google æºè½é头çåè½ï¼ç¶åè¿æä¸ä¸ªéè¦çé¢å¤ææï¼è®© Google ç¸åæ¥ææ é空é´\n\n<p><img style=\"width: 100%; max-width: 400px\" src=\"./attachments/bafkreieooko6b55dwb2s4q7icpf7mctvuhmzhuubnehbu2z4eqmo3cic4e.jpeg\"></p>\n\nRiru - Coreï¼Riru æ¯ä¸ä¸ªç³»å模åï¼ä½¿ç¨ Riru 模åé½éè¦å
å®è£
Riru - Core\n\nRiru - Storage Redirectï¼åå¨éå®åï¼å 乿æç Android åºç¨é½ä¼å¨æä»¬çææºä¸å¨åä¿¡æ¯ï¼ä¸ºæ¤ï¼Android ç³»ç»æä¾äº `/data` å `sdcard/Android/data` è¿ä¸¤ä¸ªç®å½æ¥è¿è¡åºç¨æ°æ®æä»¶åæ¾ï¼éæ¾çæ¯ï¼å¾å¤åºç¨å¼åè
å¹¶ä¸ä¼éµä»è¿ä¸ªè§èï¼è¿è®©ææºå
é¨å¨åç®å½æ¾å¾æä¸ºæä¹±ä¸æä»¶ç®¡çæçä½ä¸ï¼ä½¿ç¨ Storage Redirect è½å¾å¥½å°è§£å³ä¸è¿°é®é¢ï¼å®å°æ£è½äºåå¤çåºç¨ç§ææä»¶å¤¹éæ°å®ä½å°æå®çä½ç½®ï¼[è¿é](https://sr.rikka.app/zh-hans/)æå®ç宿¹ä»ç»åææ¡£\n\n<p><img style=\"width: 100%; max-width: 400px\" src=\"./attachments/bafkreifuh7g3hn54jrachug4jx7gf36fm4lafafx5xf2gk4mervfdmn3oa.jpeg\"></p>\n\nTai Chiï¼å¤ªææ¨¡åï¼è§ä¸ä¸è\n\n## 太æ\n\nä»ç»å¤ªæè¦å
ä» Xposed æ¡æ¶å¼å§\n\nå¾å¤äººé½å¯¹ Xposed ç大忿è³é»ï¼å®éè¿å¯¹ç³»ç»æ¡æ¶çå·å¤©æ¢æ¥ï¼å¯ä»¥ä¿®æ¹ç³»ç»ä¸åºç¨çåç§æ°æ®ï¼ç±æ¤å®ç°æ æ°ç§å¯è½æ§ï¼åæ¶ä¹å¤§å¤§å°æåäº Android ç³»ç»çå¯ç©æ§ï¼èä¸ææ¯ Magisk æ´ä¸°å¯ç模å\n\n使¯ Xposed æ¡æ¶æ²¡æå Android ç³»ç»çæ¬ä¸æ ·è½å¤å¿«éçæ´æ°ï¼ææ°çæ¬å
318çå¨äº Android 8.0/8.1 beta3 çæ¬ï¼å¯¹äº Android 9.0/10.0 ç¨æ·ï¼åªè½éæ©ç¬¬ä¸æ¹å®ç°ï¼ç°å¨å¸¸ç¨çæ[太æ](https://taichi.cool/README_CN.html)å [Edxposed](https://github.com/ElderDrivers/EdXposed) ä¸¤ç§æ¹æ¡\n\næä¸å¼å§è£
çæ¯ Edxposedï¼ä½æ¯è²ä¼¼è· MIUI 11 æå
¼å®¹æ§é®é¢æ æ³ä½¿ç¨ï¼æä»¥æ¢äºå¤ªæ\n\nä¸é¢æ¯æä½¿ç¨çå 个模åï¼\n\n<p><img style=\"width: 100%; max-width: 400px\" src=\"./attachments/bafkreifd34v6prirt7eahea5lrugmzzrmzzdaato4p55gghly365wlejjm.jpeg\"></p>\n\n大å£åååå»ä½ 大ç·çå
ç½®æµè§å¨é常é¦\n\n## Google ç¸æº\n\nRedmi K20 Pro æ¯æ Camera2 APIï¼æä»¥ä¸éè¦é¢å¤æè
¾å°±å¯ä»¥å®è£
Google ç¸æº\n\nå½å
å¼åè
[é¿çé
±](https://weibo.com/u/5213532617)æå享ä¸é¨ä¸º Redmi K20 Pro è°æçè°·æç¸æº\n\n<p><img style=\"width: 100%; max-width: 400px\" src=\"./attachments/bafkreiftfkft33yg3qyu4lzdoedklwquemtgj4fwgpftn2dnqvggpscuum.jpeg\"></p>\n\nå¾çäº HDR+ ç®æ³ï¼æåéå¸¸ææ¾ï¼Google çç太强äº\n\nMIUI èªå¸¦ç¸æº vs Google ç¸æº\n\n\n\niPhone 11 èªå¸¦ç¸æº vs Google ç¸æº\n\n\n\nç»¼ä¸æè¿°ï¼Android ä¸å¾å¤é»ç§æç¡®å®å¾é¦ï¼ä½æ´ä¸ªç³»ç»çç²¾è´ç¨åº¦ã设计æã人æ§åå软件çæè¿æ¯è· iOS æé常大çå·®è·ï¼è¿è®©æçè¦å°éåºäºä¸ä¸ªå¤æææå¼å§æ
¢æ
¢å¯ä»¥æ¥åï¼è¦ä¸æ¯æ¼å¤å¤æå°ä¸ç»éæå¯è½ç¬¬äºå¤©å°±æ¢å iPhone äº\n\nä½ä¸æ¦æ¥åäºè¿ç§è®¾å®ï¼é¦"},{"slug":"rsshub-radar","title":"RSSHub Radar â 订é
ä¸ä¸ª RSS æºä¸åºè¯¥è¿ä¹é¾","tags":["æ°å"],"body":"\n\n> å¦æä½ é®æï¼RSSHub è½å¦æ¹å RSS çå½è¿ï¼æä¹ä¸æå¾ï¼ä½ææå¾ï¼ä¸è®¤å½ï¼å°±æ¯ RSSHub çå½ã ââãåªåä¹éç«¥éä¸ã\n\nå¦æä½ è¿ä¸ç¥é RSSï¼[ãææç¹å«ç RSS ä½¿ç¨æå·§ã](https://diygod.me/ohmyrss/)\nå¦æä½ è¿ä¸ç¥é RSSHubï¼[ãéè¿ RSSHub 订é
䏿¯æ RSS çç½ç«ã](https://sspai.com/post/47100)\n\né¦å
æå¤§ç respect ç®ç» RSSHub ç [244 ååä¸è
](https://docs.rsshub.app/#contributors)\n\n## 订é
ä¸ä¸ª RSS æºå¤ªé¾äº\n\né¦å
éè¦ç½ç«æä¾äº RSSï¼è¿ä¸åæéå¸¸å°±æ æ³æ»¡è¶³ï¼ï¼ç¶åæä»¬è¦éç¼å¨é¡µé¢ä¸æ¾å° RSS 龿¥ï¼ç¶åå¤å¶é¾æ¥ãæå¼å¦ Feedly Inoreader ç RSS æå¡ãç¹å»æ·»å 订é
ãç²è´´é¾æ¥ãæ·»å \n\nçï¼é¡ºå©è®¢é
ä¸ä¸ª RSS æºéè¦å¤©æ¶ï¼éç¼æ¾å°äº RSSï¼å°å©ï¼ç½ç«æä¾äº RSSï¼äººåï¼ä¸å 为订é
æ¥éª¤è¿äºéº»ç¦èä¸éæ¾å¼ï¼ï¼ç¼ºä¸ä¸å¯\n\né½ 9102 å¹´äºï¼ä¸çä¸åºè¯¥è¿æ ·\n\n## è§£å³è¿ä¸ªé®é¢\n\n为äºè§£å³è¿ä¸ªé®é¢ï¼RSSHub Radar è¯çäº\n\n[Chrome Web Store](https://chrome.google.com/webstore/detail/rsshub-radar/kefjpfngnndepjbopdmoebkipbgkggaa) | [GitHub](https://github.com/DIYgod/RSSHub-Radar)\n\nRSSHub Radar æ¯ RSSHub çè¡ç项ç®ï¼å¥¹æ¯ä¸ä¸ªå¯ä»¥å¸®å©ä½ å¿«éåç°å订é
å½åç½ç« RSS å RSSHub çæµè§å¨æ©å±\n\n\n\n使ç¨å¾ç®åï¼æä»¬å¨è¿å
¥ä¸ä¸ªæ°é¡µé¢æ¶ï¼RSSHub Radar ä¼**èªå¨æ£æµ**å½åé¡µé¢ææ²¡æ RSS å RSSHub æ¯æï¼æ£æµå°åä¼å¨å³ä¸è§æ¾ç¤ºä¸ä¸ªè§æ ï¼å¦ææä»¬æ³è®¢é
å½å页é¢ç RSSï¼ç¹å»æ©å±å¾æ ï¼ä¼å¼¹åºä¸ä¸ªå表ï¼å¦å¾æç¤ºï¼å表æä¸é¡¹å
容ï¼**å½å页é¢ä¸ç RSSãéç¨äºå½å页é¢ç RSSHubãéç¨äºå½åç½ç«ç RSSHub**ï¼ä½ å¯ä»¥éæ©å¤å¶é¾æ¥æ**ä¸é®è®¢é
**å° Feedly Inoreader TinyTinyRSS\n\n\n\n设置页å
è®¸ä½ ä½¿ç¨èªå»ºç RSSHub ååã设置快æ·é®ãç«å³æ´æ°è§åãéæ©ä¸é®è®¢é
å° TinyTinyRSS è¿æ¯ Feedly Inoreaderãéæ©æ¯å¦å¼å¯è§æ æéç\n\n\n\næ¯æå表ååºäºå½åæ¯æç RSSHub è§å\n\n## RSSHub Radar æ¯å¦ä½å·¥ä½ç\n\nRSSHub Radar æ¯å¼æºçï¼ä½ å¯ä»¥ç´æ¥å» [GitHub](https://github.com/DIYgod/RSSHub-Radar) çæºç \n\n彿们è¿å
¥ä¸ä¸ªæ°é¡µé¢æ¶ï¼RSSHub Radar å¼å§æ£æµå½å页é¢ç RSS å RSSHub\n\n**å½å页é¢èªå¸¦ç RSS**\n\nåæé¡µé¢ä¸çæ¯ä¸ªé¾æ¥æ¾ç¶æ¯ä¸ç°å®çï¼å¥½å¨æ å䏿å®äºä¸ç§ç¹æ® MIME ç±»åç link æ ç¾æ¥ææ RSS 龿¥ï¼`link[type=\"application/rss+xml\"]` å `link[type=\"application/atom+xml\"]`ï¼RSSHub Radar æ£æ¯éè¿è¿ä¸ªæ ç¾æ¥æ£æµé¡µé¢æ¯å¦æèªå¸¦ RSSï¼å
·ä½å®ç°å¨[è¿é](https://github.com/DIYgod/RSSHub-Radar/blob/master/src/js/content/utils.js#L14)\n\n**éç¨äºå½å页é¢ç RSSHub**\n\n使ç¨[ç»å®è§å](https://github.com/DIYgod/RSSHub/blob/master/assets/radar-rules.js)ï¼æ ¹æ®å½å页é¢ç URL æ DOM æ¥è·å RSSHub 龿¥ï¼è§ååä¸ªåæ®µçå
·ä½å«ä¹è§[ææ¡£](https://docs.rsshub.app/joinus/#%E6%8F%90%E4%BA%A4%E6%96%B0%E7%9A%84-rsshub-radar-%E8%A7%84%E5%88%99)ï¼å
·ä½å®ç°å¨[è¿é](https://github.com/DIYgod/RSSHub-Radar/blob/master/src/js/background/utils.js#L111)\n\næ¯é 5 ä¸ªå°æ¶ä» GitHub è¿ç¨æ´æ°ä¸æ¬¡è§å\n\n**ä¸é®è®¢é
**\n\nFeedly Inoreader TinyTinyRSS 齿ä¾äºç¨äºè®¢é
çæ¥å£ï¼ä¸åçæ¯ Feedly éè¦è¿å
¥é¡µé¢ç¡®è®¤ä¸ä¸ï¼èå¦å¤ä¸¤ä¸ªä¼ç´æ¥è®¢é
ä¸\n\næ¯å¦è®¿é®è¿ä¸ª URL å¯ä»¥å¿«éä½¿ç¨ Feedly 订é
æçå客ï¼éè¦ç¹ FOLLOW 确认ï¼ï¼\nhttps://feedly.com/i/subscription/feed/https://diygod.me/atom.xml\n\nè¿ä¸ª URL å¯ä»¥å¿«éä½¿ç¨ Inoreader 订é
æçå客ï¼\nhttps://www.inoreader.com/feed/https://diygod.me/atom.xml\n\n## å䏿们\n\nå¦æä½ å¯¹ RSSHub æå
´è¶£ï¼æ¬¢è¿[åä¸](https://docs.rsshub.app/joinus/)æ[æ¯æ](https://docs.rsshub.app/support/)æä»¬\n\næåç¥åªå票æ¿ç ´ 50 亿ï¼è¿æ²¡ççä¸å®è¦å»çå·ï¼\n\n"},{"slug":"pn532","title":"å°ç±³æç¯ 4 NFC 模æå å¯å¡æ¢ç´¢","tags":[],"body":"å°ç±³æç¯ 4 NFC çä¸åå®å°±è¿«ä¸åå¾
æ¾é»çä¹°äºä¸åª\n\næç¯ç NFC ä¸»è¦æä¸ä¸ªåè½ï¼å°ç±åå¦ãå
¬äº¤å¡ã模æé¨ç¦å¡\n\nç»ææç¯çå°ç±åå¦å¾é¾ç¨ï¼åè½ç¼ºå¤±ãååºæ
¢[è¿èéªæ](https://twitter.com/DIYgod/status/1141718298658086913)ï¼ä¸æµ·å
¬äº¤ä¹ä¸æ¯æï¼é¨ç¦å¡é¡¿æ¶æä¸ºäºå
¨æäººçå¸æï¼æ£å¥½ææä¸¤ä¸ªé¨ç¦å¡ï¼è¯ç模æä¸ä¸å§\n\n\n\nè¿ NFC ä¸äºæ æï¼åæäºäººç\n\n<!--more-->\n\n第ä¸å¼ æ¯ ID å¡ï¼é宿²¡æäºï¼å¸æå
¨å¨ç¬¬äºå¼ å å¯ IC å¡ä¸ï¼ä¸ºäºæ¯æé¸¡èç NFCï¼æå°æ·å®ä¹°äºä¸ä¸ª NFC 读åå¨ PN532\n\næå å¯å¡æ¾å° PN532 ä¸è¯»åæ°æ®\n\n\n\nä½¿ç¨ MifareOne Tool è§£å¡\n\n\n\nè§£å¡å¤±è´¥...æ ¹æ®ç½ä¸ç说æ³å¯è½æ¯ PN532 è¿ç导è´çï¼é£ä¹åªéæåå¿«å¢ï¼\n\nå°ç®±\n\n\n\nç»è¿æ¼«é¿ççå¾
ï¼æåäº\n\n\n\nå¾å°å å¯å¡æ°æ®\n\n\n\nç¶åæå
¶ä¸ç 0 æåº 0 åºåæ°æ®åå
¥ä¸å¼ 空ç½å¡\n\n\n\n\n\nç¶ååæç©ºç½å¡çæ°æ®åå
¥æç¯\n\n\n\n\n\nè¿æ¶åæç¯ä¸å°±æå¡äºï¼ä½æ¯éé¢åªæ 0 æåº 0 åºåæ°æ®ï¼è¿æ¶ååæå©ä¸çæ°æ®åå°æç¯é就好äº\n\n\n\n\n\néªè¯ï¼å¯¹æ¯åå¡åæç¯å¡çæ°æ®ï¼\n\n\n\n\n\nåªæ 0 æåº 0 åºåçé¨åæ°æ®ï¼ååå·ï¼ä¸åï¼ä¸
31815 æåºçå 坿°æ®ç¸åï¼è¯´æå·²ç»æ¨¡ææå\n\nNFC ç»äºæ²¡ç½ä¹°"},{"slug":"download-webhook","title":"ä¼é
å°ä¸è½½æçBç«æå¸è§é¢","tags":[],"body":"ä¸è½½Bç«è§é¢å¾ç®åï¼you-get ä¸è¡å½ä»¤çäºï¼ä½æå·²ç»æå°å½ä»¤é½ä¸æ³è¾äºï¼å¦ææå¸ä¹å NAS å¯ä»¥èªå·±å»ä¸è½½å°±å¥½äº\n\n<style>\ntwitter-widget {\n margin: 0 auto !important;\n}\n</style>\n<blockquote class=\"twitter-tweet\" data-cards=\"hidden\" data-lang=\"zh-cn\"><p lang=\"zh\" dir=\"ltr\">Bç«æ¶è夹ä¸å 失æè§é¢ï¼æ³åä¸ä¸ªæ¶èåèªå¨ä¸è½½çå°å·¥å
·ð¤<br><br>RSS+IFTTT+Webhooks+ffmpeg?</p><a href=\"https://twitter.com/DIYgod/status/1131898671111450625?ref_src=twsrc%5Etfw\">— DIYgod (@DIYgod) 2019å¹´5æ24æ¥</a></blockquote>\n\n## 设æ³\n\næ´ä¸ªè®¾æ³æ¯è¿æ ·çï¼æå¸æä½ -> RSS æ´æ° -> IFTTT 触å Webhook -> æå¡å¨ä¸è½½\n\næå¸å° RSS æ´æ°å¯ä»¥ç´æ¥ç¨ [RSSHub](https://docs.rsshub.app/social-media.html#up-%E4%B8%BB%E6%8A%95%E5%B8%81%E8%A7%86%E9%A2%91) å®ç°ï¼RSS æ´æ°å°è§¦å Webhook ä¹å¯ä»¥ç´æ¥å¨ IFTTT éé
ç½®ï¼æ´ä¸ªå¤ç±³è¯ºéª¨çå°±åªç¼ºå° Webhook å°ä¸è½½è¿ä¸å\n\n## è¡å¨\n\näºæ¯åäºä¸ä¸ªç®åçå°å·¥å
· ââ [download-webhook](https://github.com/DIYgod/download-webhook)ï¼å®å¯ä»¥éè¿ä¸ä¸ªç®åç post 请æ±ï¼è§¦åæå¡å¨æ§è¡ you-getï¼ä¸è½½è§é¢å°æå®ç®å½\n\n## ææ\n\n1. ç»å¬äººç«æå¸\n\n\n\n2. RSS æ´æ°\n\n\n\n3. IFTTT 触å\n\n\n\n4. download-webhook æ¶å°ä¸è½½è¯·æ±\n\n\n\n5. ä¸è½½å®æ\n\n\n\n## è¿ä¸æ¥\n\n以ä¸åæ ·éç¨äºèªå¨ä¸è½½ YouTube \\ Instagram \\ Tumblr è§é¢ãç½æäºé³ä¹ææ²çï¼åªè¦ RSSHub å you-get æ¯æ\n\nå¦å¤å¯¹äºå¾çï¼Webhook URL åæ°ç´æ¥ä¼ å
¥å¾çå°åä¹å¯ä»¥ä¸è½½ï¼æä»¥ä¹å¯ä»¥è½»æ¾å®ç°èªå¨ä¸è½½ Bing æ¯æ¥å£çº¸ãçè³ Telegram çæ¶©å¾é¢éï¼è¿éå°±ä¸åæ¨èäºï¼"},{"slug":"ohmyrss","title":"ææç¹å«ç RSS ä½¿ç¨æå·§","tags":[],"body":"大家é½ç¥é RSS æ¯ä¸ç§ç¨æ¥æ¶æ¯èåçæ ¼å¼è§èï¼æçæ´é«çé
读æçãæ´å¥½çé
读ä½éªãå¯ä»¥ææ¡ä¸»å¨æççä¼ç¹ã\n\næ¬æä¸ä¼ä»ç» RSS çåç§å¥½å¤ååå¼åæ ·çé
读å¨ï¼å 为ç¸å
³ç½ç»èµæå·²ç»è¶³å¤å¤äºãè¿éæä»ç»ä¸ä¸ææ ·å
åææ RSS ç使ç¨ä»·å¼ï¼å 为å®çç¨éä¸ç´è¢«å¤§å®¶ä½ä¼°ã\n\n## é
读å¨\n\n仿ç®åçå¼å§ï¼æä»¬å¯ä»¥ççå¦ä½ç¨ RSS 订é
ä¸ä¸ªå客ã\n\nåè®¾ä½ æ³è®¢é
ä¸ç䏿å¯ç±çå客 [Hi, DIYgod](https://diygod.me/)ï¼å·§çæ¯å®å·²ç»å¾è´´å¿å°æä¾äº [RSS å°å](https://diygod.me/atom.xml)ï¼ä½ åªéè¦æ¾ä¸ä¸ªéåèªå·±ç RSS é
读å¨ã\n\nè¿éæå 个æ¨èï¼\n\niOS å macOS å¹³å° - Reeder\n\nAndroid å¹³å° - Palabre å FeedMe\n\næå¼é
读å¨ï¼è¾å
¥é¾æ¥ï¼ç¹å»è®¢é
\n\n\n\n\n\næä»¬ä¾¿å¦ä¼äº RSS æåºç¡çä½¿ç¨æ¹æ³ã\n\n## äºæå¡\n\nè¿æ¶åä½ å¯è½ä¼åç°ä¸äºé®é¢ã\n\nåªæä¸ç´å¼ççµèæææºæè½è·åå°æ´æ°ï¼å¦æå¤å³ç DIYgod ä¸å¤©æ´æ°äº 100 ç¯æç« ï¼è RSS çè¾åºæ°éæ¯æéçï¼çä¸å¤©ååå¼çµèï¼è¿æ¶åé
读å¨å·æ°ï¼ä½ åªè½çå°ææ°çå ç¯äºï¼å½ç¶ DIYgod ä¸å¯è½ä¸å¤©æ´æ° 100 ç¯ï¼è¿ä¸ªä¾å䏿¯å¾å¥½ï¼ã\n\nè¿æï¼ä½ 忶卿æºåçµèä¸è®¢é
äº DIYgodï¼å¨çµèä¸çå®ï¼ææºä¸è¿æ¯æªè¯»ç¶æï¼å¦æè®¢é
äºå¾å¤å
容ï¼è¿ä¼å¾ç³ç³ã\n\næä»¥æä»¬éè¦ä¸ä¸ªæå¡ç«¯æ¥åæ¥åå·æ° RSS å
容ã\n\nå
¶ä¸ç¨çäººæ°æå¤çæ¯ Feedly å Inoreaderã\n\nå®ä»¬åºç¶å¾å¥½ï¼ä½ææ´æ¨èåè½æ´å¼ºèªç±åº¦æ´é«çèªå»º [Tiny Tiny RSS](https://github.com/HenryQW/docker-ttrss-plugins)ã\n\nèªå»ºä¸ä»
å¯ä»¥ä½¿æ°æ®æ´å¯æ§ï¼å®è¿æä¸°å¯çæä»¶å¯ä»¥æ»¡è¶³åç§åæ ·çéæ±ï¼æ¯å¦å
¨æå
容æåãFever API 模æãDOM ææ§ãç¹ä½è½¬ç®ä½ãä¸é¢æå°çé
读å¨é½å¯ä»¥é
åå®ä½¿ç¨ã\n\n\n\n## RSSHub\n\nçèµ·æ¥å¾ç¾å¥½ï¼ä½æä¾ RSS 订é
çç½ç«å®å¨æ¯å¤ªå°äºï¼åå å¾å¥½çè§£ï¼RSS ä¸å©äºç½ç«æ¹çå¹¿åææ¾ãéç§æéãç¨æ·åççåä¸è¡ä¸ºã\n\næä»¬å½ç¶ä¸æ»¡äºæ¤ï¼äºæ¯æåèµ·äº [RSSHub](https://github.com/DIYgod/RSSHub) 项ç®ï¼é¡¹ç®åçå¾ç®åï¼RSSHub 请æ±ä½ æ³è¦çæºç«æ°æ®ï¼ç¶åæå®ä»¬ä»¥ RSS æ ¼å¼è¾åºï¼åå°äºä¸ç©ç
318å¯ RSSã\n\nç»è¿è¿ 200 åå¼åè
åæ¶ä¸å¹´å¤çæ´»è·å¼åï¼RSSHub å·²ç»æ¯æäº 300 å¤ä¸ªç½ç«çè¿ 600 ç§æ°æ®ï¼èä¸è¿äºæ°åè¿å¨å¿«éå¢é¿ä¸ã\n\nè¿éå享ä¸é¨åæå¸¸ç¨çè·¯ç±ï¼\n\n- ä»ä¹å¼å¾ä¹°æè¡æ¦ï¼è°¨æ
订é
ï¼å®æµªè´¹äºæä¸å°é±\n\n- åç§èå©çæåæ´æ°ï¼éçç¼ä¹°å°±å®äºäº\n\n- å¾®å°å¾®åç«é¥¼ç bilibili 卿\n\n- DIYgod å
³æ³¨è§é¢å¨æï¼DIYgod å
³æ³¨ç UP 主们ç卿ï¼ä¸ç¨å·å¾è ¢ç B ç«å¨æäº\n\n- JFlaMusic ç Youtube è§é¢\n\n- Dcard 论åï¼ä¸ä¸ªè¶
级æè¶£çå°æ¹¾è®ºåï¼éåé
å Tiny Tiny RSS çç¹ä½è½¬ç®ä½æä»¶ä½¿ç¨\n\n- PlayStation Store ä¼åéå
游æï¼åä¹ä¸æå¿è®°é¢å
费游æï¼è½ç¶é¢äºä¹ä¸ä¼ç©ï¼\n\n- RSSHub ææ°è·¯ç±å¦\n\n- himitsu ç Twitter 卿ï¼NSFW\n\n- åå°çå¾®åï¼ä¸ä¼åå 为éè¿åå°çå¾®å被éªäº\n\n- å³å»å·¥ä½æ¥é¹é设置æé\n\n- å
¬ä¼å·âå¾®å°å¾®âæ´æ°\n\n- è±ç£æ£å¨ä¸æ çè¶
è¿ 7.5 åççµå½±\n\n- ç¥ä¹çæ¦\n\n## BT ä¸è½½\n\nåè®¾ä½ æ¯ä¸ä¸ªç¾å§ç±å¥½è
ï¼æä»¬å¯ä»¥ççå¦ä½ç¨ RSS æ¥è¿½æå©ç游æç¬¬ 8 å£ã\n\nRSSHub æä¸äºæ¯æ BT ä¸è½½çè·¯ç±ï¼æ¯å¦æå©ç游æåå¹ç»æºè®¢é
å°å为ï¼<https://rsshub.app/zimuzu/resource/10733>ï¼æ¥çæä»¬å ä¸ä¸ª filter åæ°è¿æ»¤åºç¬¬ 8 å£å
容ï¼<https://rsshub.app/zimuzu/resource/10733?filter=S08>ã\n\nç¶åæéä¸ä¸ªæ£å¸¸ç BT 客æ·ç«¯ï¼è¿
é·ä¸ç®ï¼ï¼æç¨çæ¯ç¾¤æç Download Stationã\n\næå°åæ·»å å° BT 客æ·ç«¯ç RSS 订é
ï¼è¿æ ·ç¾å§æ´æ°å BT 客æ·ç«¯å°±ä¼èªå¨æææ°ä¸éä¸è½½å°ç¡¬çéï¼æä¸ä¸çåå®¶æå¼çµè§å°±å¯ä»¥ç´æ¥çäºã\n\næè¿æè®¢é
çç¾å§åæ¥å§\n\n\n\nè·åå°æ´æ°å¹¶ä¸è½½å®æç¾¤æä¼åé®ä»¶åè¯æ\n\n\n\n## æå®¢\n\nåè®¾ä½ æ¯ä¸ä¸ªæå®¢ç±å¥½è
ï¼æä»¬å¯ä»¥ççå¦ä½ç¨ RSS æ¥æ©å
ä½ çæå®¢åºã\n\næå®¢å®¢æ·ç«¯å¯ä»¥è®¿é® RSS æ£æ¥æ´æ°ï¼ä»¥ä¸è½½ç³»å䏿°çéæ°æ¶å¬ï¼RSSHub æ [getpodcast](https://getpodcast.xyz/) æä¸äºæ¯ææå®¢ç RSS å¯ä»¥ç´æ¥ä½¿ç¨ï¼æ¯å¦ç¨ iOS èªå¸¦çæå®¢åºç¨è®¢é
ä¸ä¸ªç½æäºé³ä¹ç ASMR çµå°ï¼\n\n\n\n## èå¨\n\nRSS å¯ä»¥éè¿ IFTTT è·åç§å¥å¥æªæªçä¸è¥¿èå¨ã\n\nå
¶ä¸ä¸ä¸ªä½¿ç¨æ¡ä¾æ¯æç Telegram é¢éï¼<https://t.me/awesomeDIYgod>ï¼å®éè¿ IFTTT çå¬äºå¾å¤ RSS æ´æ°ï¼æ DIYgod çåå®¢æ´æ°ãDIYgod çæè´æå¡ãDIYgod ç Twitter æ´æ°ãDIYgod 忬¢çç½æäºé³ä¹ãDIYgod ç bilibili æå¸è§é¢...\n\nè¿æ ·ä½ çè³å¯ä»¥å¾å®¹æå®ç°éè¿ RSS æ§å¶å¼å
³ç¯ãåå鸡èªå¨æå°å°å§å§çå¾®åãææå©ç游æå·®è¯èªå¨åæ¨ç¹è¾ç¹ç¼å§ççæä½ï¼è½ç¶å¯è½æ²¡ä»ä¹ç¨å°±æ¯äºã\n\n6 æ 2 æ¥æ´æ°ï¼\n\n䏿¬¡ä¼ç§çèå¨ï¼[ãä¼é
å°ä¸è½½æçBç«æå¸è§é¢ã](/download-webhook)\n\n \n\n以䏿¯æå举çå 个éå RSS 使ç¨çåºæ¯åæ¹å¼ï¼ç°å¨å¤§å®¶æ¯ä¸æ¯å¯¹ âRSS æ¯ä¸ç§ç¨æ¥æ¶æ¯èåçæ ¼å¼è§èâ è¿å¥è¯æäºæ´æ·±ççè§£å¢ï¼"},{"slug":"rsshub-1year","title":"RSSHub ä¸å¨å¹´å¼åå¯è§å","tags":[],"body":"RSSHub â ä¸ç©çå¯ RSS\nhttps://github.com/DIYgod/RSSHub\n\n- è§é¢åºäº 2018 å¹´ 4 æ - 2019 å¹´ 4 æç commit è®°å½ï¼ä½¿ç¨ Gource ç»å¶\n- BGM: ããªã«ã´"},{"slug":"mai-tour","title":"ã鿥çªå¤´å°å¹´ä¸ä¼æ¢¦å°å
女éå¦å§ãå£å°å·¡ç¤¼","tags":[],"body":"<iframe style=\"border-radius:12px\" src=\"https://open.spotify.com/embed/episode/31yuCkRxJqYD4eSEtOyMiB?utm_source=generator\" width=\"100%\" height=\"152\" frameBorder=\"0\" allowfullscreen=\"\" allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\"></iframe>\n\nä¹å廿¥æ¬ç©äºå å¤©ï¼æåä¸å¤©æ²¡ä»ä¹äºäºï¼åéªè¯´æä»¬å»çå
女éå§\n\n4æ7æ¥ï¼æ¸
æ¨ 11 ç¹åï¼æä»¬ä¾¿æ©æ©å°èµ·åºåä¸äºå徿¹åç JRï¼å¼å§äºè¿æ¬¡ã鿥çªå¤´å°å¹´ä¸ä¼æ¢¦å°å
女éå¦å§ã æ±ä¹å² ~ é°ä
318»é«æ ¡å ~ ä¸é滨 ~ è¤æ³½è½¦ç« çå£å°å·¡ç¤¼ä¹æ
\n\n\n\n## æ±ä¹å²\n\næä»¬ä»æ°å®¿å JR ä¸è·¯åä¸å°äºæ±ä¹å²ï¼è¿æ¯æºè¿çï¼å
¨ç¨è±äºä¸ä¸ªå¤å°æ¶ï¼è¿å¥½æä»¬èµ·å¾æ©ï¼ä¸å 1 ç¹å°±å°äº\n\né¤äºå
女éå¦å§ä¹å¤ï¼æ±ä¹å²ä¹æ¯è¯¸å¤å¨ç»ä¸æ¥å§ç忝å£å°ï¼ä»¥è³äºæ±ä¹å²è§å
æ¡å
æä¸é¨æä¸æ¬å¨æ¼«å·¡ç¤¼å°å¾\n\n\n\nä¸å²ä¹å第ä¸ä»¶äºå°±æ¯æ¾éº»è¡£ä»£è¨çé宿¡å峿±½æ°´\n\næ¾äºå¥½å å°èªå¨å®åæºææ¾å°ï¼è¶
级å¼å¿ï¼æ²¡éäºï¼æ¯å¦å§çå³éï¼\n\n\n\næå¯ä»¥ä¸å£æ°å 10 ç¶\n\nç»§ç»å¾åèµ°ï¼å¯ä»¥ç»è¿æ±ä¹å²ä¸ç诸å¤ç¥ç¤¾ï¼å¨ç»ç¬¬ 6 è¯ä¸å¸å
ä¸å¦å¦¹åæçæ¯ä¸»å¹²éä¸çæ±å²ç¥ç¤¾\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251081?t=14m36s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251081?t=14m51s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251081?t=15m28s)\n\n第 6 è¯å§æ
髿½®ç屿å°\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251081?t=16m42s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251081?t=15m47s)\n\nç¶å~~åçµæ¢¯~~ç¬å°å±±é¡¶å¯ä»¥ç»ä¸ä¸ä¸ªé«å¡ï¼å¡ä¸å¯ä»¥çå°å¾è¿\n\n\n\næ±ä¹å²æ¸¸è§å®æ¯åï¼åè·¯ä»å¤§æ¡¥è¿åå°éç«ï¼ä¼ç»è¿ä¸æ®µå°ä¸éé\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251081?t=14m02s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251081?t=14m07s)\n\n## é°ä»é«æ ¡å\n\nç°å¨åå°æ±ä¹å²ç«ï¼åæ±ä¹å²çµé线å°ä¸ä¸ç« ââ é°ä»é«æ ¡åç«\n\næ±ä¹çµæ¯å¾ç¹å«ç绿ç®ç«è½¦ï¼ä¸è·¯ä¸ç飿¯ç¹å«å¥½ï¼è¡éãæµ·å²¸\n\né°ä»é«æ ¡åç«ä¸è½¦ï¼æ²¿çé路线åè
°è¶æ¹åæ¥è¡ï¼ä¸åé便å¯å°è¾¾ OP 䏿å
ç»åºçè¸¢ä½ çè¾åºæ¯\n\nè¿éä¸ºäºæå°åºæ¯ä¸ä¸æ ·çç«è½¦å¨è·¯è¾¹ç«äºå¥½ä¹
ï¼æå®ä¹åæåå°åç°è¿å·¦è¾¹çæ±½è½¦é½æäººçç¸ä¼¼\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251076?t=58s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251076?t=1m52s)\n\næ¥çè¿åé°ä»é«æ ¡åç«å
ï¼è¿éæ¯å¨ç»ç¬¬ 9 è¯ä¸ï¼å°å§¨å代æ¿éº»è¡£åå CM çæå½±ææå°\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251084?t=18m18s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251084?t=18m11s)\n\nå¨é°ä»é«æ ¡åç«åä¸éæ»¨ç«æ¹åèµ°ä¸åéï¼åç°è¿éæå¾å¤å°å§å§å¨æç
§ï¼è¿éæ£æ¯èåçãçç¯®é«æã忝å°ï¼æ¨±æ¨è±éä¸èµ¤æ¨æ´åç¸éçééå£\n\n\n\nééå£å¯¹é¢å°±æ¯ä¸é滨海滩ï¼ç«å¨æ²æ»©ä¸å¯ä»¥çè§ä¸è¿å¤çæ±ä¹å²ï¼å¨ç»ä¸å¨æ²æ»©ä¸ç诸å¤åºæ¯ï¼çæ¯åæ¯äºæ¤ï¼ä½æ¯æ²¡æ¶é´å»äº\n\n## ä¸é滨\n\næ¥çåæ±ä¹å²çµé线å°ä¸ä¸ç«ï¼ä¾¿å¯ä»¥æ¥å°å¨ç»ä¸åºç°æ¬¡æ°æå¤çè½¦ç« ââ ä¸é滨ç«\n\nå¨ç»ä¸å¯¹äºä¸é滨车ç«è¶
级è¿åï¼æ 论æ¯åºå
¥å£è¿æ¯ç«å°å
çèªå¨è´©åæºï¼ç»æä¸ç§è½¬å¤´å°±å¯ä»¥çå°éº»è¡£å¦å§çéè§\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251076?t=9m6s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251076?t=8m33s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251076?t=8m31s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251076?t=9m33s)\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251080?t=20m5s)\n\nåé¢è¿æå¸å
ä¸å¦å§ä¸å¦çå³°åé«ä¸ãED ä¸ç海岸å
¬åã忬¡ç¸éå
女éçè¤æ³½å¸ç»¼å叿°å¾ä¹¦é¦ãåå¦å¦¹äºè¸¢å±è¡ç御æè°·å
¬åãå¸å
æå·¥çé¤å
çä¼å¤æå¡ç¹ï¼ä½çæ¶é´å¿«è¦è¯¯æºäºï¼æ¤æ¬¡å·¡ç¤¼ä¹æ
就尿¤ä¸ºæ¢\n\n## è¤æ³½è½¦ç«\n\nåä¸äº¬çæ¶åè·¯è¿äºè¤æ³½è½¦ç«ï¼å¸å
ä¸å¦å°±æ¯ä»è¿éåºåï¼ä¹åæ±ä¹å²çµé线å°ä¸é滨ç«\n\nè¤æ³½è½¦ç«åå
¶éè¿è¿æå¾å¤åºæ¯ï¼ä½è¿æ¶å快误æºäºï¼ç´§å¼ ç䏿¹ï¼æ²¡æ¶é´ä»ç»çäºï¼åªé便æäºä¸å¼ \n\nå¸å
è·å¦å§ç¬¬ä¸æ¬¡çº¦ä¼è¿å°çæ¹æå£\n\n\n\n[è§é¢ç´è¾¾](https://www.bilibili.com/bangumi/play/ep251076?t=12m29s)\n\nåå°ä¸äº¬ç«æ¿å°è¡æååæç°æºåºä¸è·¯çå¥\n\n卿ç°ç¹å¿« Express ä¸é¢å§¬åç
§\n\n\n\nèµ¶å°æºåºç»æºå£æ¶åå·²ç»å¼å§ç»æºäºï¼è¿å¥½èµ¶ä¸äºï¼ä¸ç¶åæ 10 åéåªè½å»åéªå®¶ç¡äº\n\n \n\nä¸éé¢åï¼æä»¬å¨æ¥æ¬ä¸å
±ç©äº 9 å¤©ï¼æ¬ææ¯æåä¸å¤©çå
容ï¼è¿ä¸ä¸¤å¨ä¼åªä¸ä¸ª 9 天ç vlog åºæ¥ï¼9 åçå¿«ä¹ï¼è®°å¾çå\n\n \n\n巡礼åèæ»ç¥ï¼\n\n[âãèå°ããã - ã¢ãã¡èå°å·¡ç¤¼ã»ã³ã³ãã³ããã¼ãªãºã ã¢ããªããApp Storeã§](https://itunes.apple.com/jp/app/%E8%88%9E%E5%8F%B0%E3%82%81%E3%81%90%E3%82%8A-%E3%82%A2%E3%83%8B%E3%83%A1%E8%81%96%E5%9C%B0%E5%B7%A1%E7%A4%BC-%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%84%E3%83%BC%E3%83%AA%E3%82%BA%E3%83%A0%E3%82%A2%E3%83%97%E3%83%AA/id680489568)\n\n[ã鿥çªå¤´å°å¹´ä¸ä¼æ¢¦å°å
女éå¦å§ãå£å°å·¡ç¤¼æ»ç¥ï¼è¯¦ï¼ - ç¥ä¹](https://zhuanlan.zhihu.com/p/52373529)\n\n[ã鿥æç¬¨èä¸ä¼åå
女éå¦å§ç梦ãå¨ç»ãå£å°å·¡ç¤¼ã - 穷游ç½](https://bbs.qyer.com/thread-3102232-1.html)"},{"slug":"headlesschrome","title":"HeadlessChrome èªå¨åæµè¯æ¢ç´¢","tags":[],"body":"åç¹ä¸ç´æ¯Bç« HTML5 ææ¾å¨å¼ååæµè¯è¿ç¨ä¸çä¸ä¸ªçç¹ï¼åç¹çç§ç±»åæ¥å£åæ°å¾å¤ï¼æµè¯å¾éº»ç¦ä¹å¾å®¹æåºé\n\nè½ç¶æµè¯å¾éº»ç¦ï¼ä½å®ä»¬çè§åé½å¾
318ç®åï¼æ¯å¦ç¹å»æ hover ä¸ä¸ªæé®ãéè¯¯ä¸æ¥ãææ¾åæ§è½ä¸æ¥ï¼é£ä¹è½ä¸è½éè¿èªå¨åç E2E æµè¯æ¥ä»£æ¿è¿äºåç¹çåæºæ¢°åå容æåºéçæµè¯å·¥ä½å¢ï¼\n\nå¨ä¸æ¬¡åç¹çº¿ä¸äºæ
åï¼æè±äºä¸å¤©æ¶é´åäºä¸äºæ¢ç´¢ï¼æåææè¿ä¸éï¼å¨è¿éåä¸ä¸ç®åçæ»ç»\n\n## ç¼åæµè¯èæ¬\n\n模æç¨æ·æä½å°±éè¦ç¨å°æ 头æµè§å¨ï¼æéç¨äº Jest + Puppeteer çç»å\n\nJest æ¯ä¸ä¸ªæµè¯æ¡æ¶ï¼Puppeteer æ¯ç¨æ¥æ§å¶ Chrome æ Chromium\n\néæ© Jest æ¯å 为æå¯¹ Jest æçæï¼ç¶ååæ¾å°äºä¸ä¸ª preset: [jest-puppeteer](https://github.com/smooth-code/jest-puppeteer)ï¼ä¸æ¯å¿
éçï¼ä½å®å¯ä»¥ç®åå¾å¤ Puppeteer æä½\n\nå®è£
ä¾èµï¼\n\n```bash\nnpm install --save-dev jest jest-puppeteer puppeteer\n```\n\næµè¯èæ¬å¾ç®åï¼\n\n```js\ndescribe(\"log\", () => {\n beforeAll(async () => {\n page.goto(\"https://www.bilibili.com/video/av44890855\");\n });\n\n it(\"play_screen\", async (done) => {\n page.on(\"request\", (request) => {\n if (\n request\n .url()\n .match(\n /^https:\\/\\/data\\.bilibili\\.com\\/log\\/web\\?play_screen...åæ°åæ°/,\n )\n ) {\n done();\n }\n });\n page.click(\"video\");\n });\n});\n```\n\n让 HeadlessChrome æå¼ä¸ä¸ªææ¾é¡µï¼çæ§é¡µé¢è¯·æ±çæ¥å£ï¼æ¨¡æç¹å» video å
ç´ ï¼çæ§å°æµè§å¨è¯·æ±äº play_screen åç¹å³æµè¯æå\n\nçèµ·æ¥æ²¡ä»ä¹é®é¢ï¼å¼å¼å¿å¿å°æ§è¡äºæµè¯ï¼ç»æ failed\n\nåçäºä»ä¹ï¼é
ç½® `headless: false` è§çäºä¸ä¸æµè¯è¿ç¨\n\n\n\nåç°æ¯å ä¸ºæ£æµå°æµè§å¨ä¸æ¯æ HTML5 ææ¾å¨ï¼å è½½äº Flash ææ¾å¨\n\nPuppeteer [ææ¡£é说é](https://github.com/GoogleChrome/puppeteer#q-what-features-does-puppeteer-not-support)\n\n> Puppeteer is bundled with Chromium--not Chrome...Puppeteer does not support licensed formats such as AAC or H.264\n\nè§£å³æ¹æ³ä¹å¾ç®åï¼æ Puppeteer èªå¸¦ç Chromium æ¢ææ¬å°ç Chrome\n\n```js\nlaunch: {\n executablePath: \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\";\n}\n```\n\næµè¯éè¿\n\n\n\n## Chrome as a service\n\nåæä½¿ç¨äºæ¬å°ç Chromeï¼ä¼ä¾èµæ¬å°ç¯å¢ï¼è䏿³ä½ä¸ºèªå¨åæµè¯è·å¨æµè¯æºä¸ä¹æ¯ä¸è¡ç\n\næä»¥æå卿µè¯æºä¸è·äºä¸ä¸ª docker 容å¨ï¼[browserless/chrome](https://hub.docker.com/r/browserless/chrome)ï¼å®å¯ä»¥æ Chrome å½åä¸ä¸ª serviceï¼æµè¯èæ¬ä½¿ç¨ websocket åè®®æä½ docker éç Chromeï¼è¿æ ·å°±é¿å
äºä¾èµæ¬å° Chrome\n\nå¯å¨å®¹å¨ï¼\n\n```bash\ndocker pull browserless/chrome:release-chrome-stable\ndocker run -d -p 3000:3000 browserless/chrome:release-chrome-stable\n```\n\n使ç¨ï¼\n\n```js\nconnect: {\n browserWSEndpoint: \"ws://localhost:3000\";\n}\n```\n\n## 嫿 js\n\nè¿æ ·ç¨çæ¯çº¿ä¸çæ¬ï¼æ ¹æ¬æ²¡ææµè¯æ¬å°ä»£ç åï¼\n\nå¦ï¼å¿äºè¯´äºï¼è¿éè¦æçº¿ä¸ js å«æä¸ºæ¬å°çæ¬\n\n```js\nawait page.setRequestInterception(true);\n\npage.goto(\"https://www.bilibili.com/video/av44890855\");\npage.on(\"request\", (request) => {\n if (request.url().match(/player\\.js/)) {\n request.respond({\n status: 200,\n contentType: \"application/javascript\",\n body: fs.readFileSync(\"dist/release/player.js\").toString(),\n });\n } else {\n request.continue();\n }\n});\n```"},{"slug":"2018","title":"2018 å¹´ç»æ»ç»","tags":["å¹´ç»æ»ç»"],"body":"2018ï¼æ æäºäºå带ç¹ä¸§çä¸å¹´ï¼æè§å¾å¯¹ä¸èµ· 23 å²è¿ä¸ªå¹´çºªï¼è¦è·èªå·±è¯´å£°å¯¹ä¸èµ·äº\n\n## 弿º\n\nä»å¹´ 4 æå¼åäº [RSSHub](https://github.com/DIYgod/RSSHub)ï¼è®©èªå·±å¦å°äºçå¾å¤ä¸è¥¿ï¼è®¤è¯äºå¾å¤äººï¼ç®æ¯ä»å¹´ä¸ºæ°ä¸å¤çæè¶£çäºæ
ä¹ä¸äº\n\n[APlayer](https://github.com/MoePlayer/APlayer) å [DPlayer](https://github.com/MoePlayer/DPlayer) æåå¹´æ¶é´å¨ååå\n\n2019 ææåå¼ä¸ä¸ª LTS ä¸å¹´ä»¥ä¸çåï¼ææ¶è¿æ²¡ä»ä¹æ³æ³ ð¤¯\n\n\n\n\n\n## 足迹\n\nåå±ï¼\n\n[æ´èµ° yu 人è](https://diygod.me/2018-bao-zou-yu-ren-jie/)\n[bw & bml](https://diygod.me/bw2018/)\n[ChinaJoy](https://diygod.me/cj2018/)\nCP22\n[CP2018SP](https://diygod.me/cp2018sp/)\nGoogle å¼åè
大ä¼\nCP23\n\næ
游ï¼\n\næ \n\n漫å±é½å¿«å»ç¦äºï¼å´æ²¡æè¯å°ä»å¹´ä¸æ¬¡é½æ²¡åºå»æ
游ï¼2019 è¦å¥½å¥½å¶å®ä¸ä¸åºè¡è®¡åäºï¼æ³ 3 æåºå»æ¥æ¬çæ¨±è± ð¸ï¼æ³å»æé½æ¾é¿ç«åä¸å¤å§å§åç«é
ï¼æ³
318廿·±å³æ¾æ±¤åéä¸è
¾è®¯ï¼ç¶å廿¾³é¨å¡è¹¦æ\n\n\n\n## æè½\n\nð¨ ç»ç»ï¼[ä¸](https://twitter.com/DIYgod/status/1005134065412943872) [äº](https://twitter.com/DIYgod/status/1006221633470660608) [ä¸](https://twitter.com/DIYgod/status/1011283860930215941)ï¼éæ¾äºå°å¦æ¾ä¸çç»ç¬ï¼~~iPad Pencil~~ï¼ï¼ç»ç»ç好ç©ï¼å¯æ darling çå°¾ä¹åå¾çæ°ï¼æ²¡ä»ä¹æ³ç»çäºï¼å°±æ²¡è½åæä¸æ¥ï¼2019 åç»æä¸ä¸ªç»ç»çå¨åå§\n\nð¤¸ââï¸ HIPHOP è¡èï¼è¿å¨å¼ºåº¦æå¤§ï¼ä¸å®ä½éªè¯¾æµèº«ç¼äºå¥½å 天ï¼ä½æ¯å¾é
·ï¼æ¥äº 10 èç§æè¯¾å 9 è大课ï¼è¿æ²¡å¼å§æ£å¼ä¸è¯¾ï¼2019 åºè¯¥å¯ä»¥åæä¸æ¥ï¼æ¯ç«æºè´µçï¼è¿å è课就è±äº 8000 åå·¦å³ï¼ä¸¤ä¸ªäººï¼\n\nð¬ vlogï¼[ä¸](https://diygod.me/bw2018/) [äº](https://diygod.me/cj2018/) [ä¸](https://diygod.me/cp2018sp/)ï¼ä¹°äº Osmo Mobile 2ï¼æ¼«å±æäºå 次ï¼å·²ç»å¤±å»å
´è¶£äº\n\nð åé¥ï¼å¨å®¤åçæå¯¼ä¸åäºä¸ç[å°çè](https://twitter.com/DIYgod/status/1044928336802136064)ï¼æ¯æ³è±¡ä¸ç®åå\n\nð ååçç¯ï¼[ä¸](https://twitter.com/DIYgod/status/1057545543252041728) [äº](https://twitter.com/DIYgod/status/1057614657169514496)ï¼æ¾è¿ç¯çä¸ç¬é´æåå°è·³äºèµ·æ¥ï¼å¾ææå°±æï¼æåä¸ç´æ¾çäºæè徿\n\n## å¥åº·\n\n12 ææå¼å§å¥èº«ï¼ä¸å¤© keep ä¸å¤©è·æ¥ï¼ç»æå¼ºåº¦è®¾ç½®å¤ªå¤§ï¼åé»ä¹è§å°ä¼¤å°äºï¼ä¼æ¯ä¸å¨åäºï¼æ²¡æå¤çè¯ä¸å¨ä¼æ¢å¤\n\nä½é没å䏿¥ï¼ä½ä¹æ²¡å¢å \n\næ©ç¡ï¼å¤§å¤±è´¥\n\n2019 æ³æå¤´åæææ©é»è² ð©âð¦°\n\n\n\n## 游æ\n\n宿å
éç»æäºä¸ææ æå¼ºçæ³é¸¡ï¼ä½å¨ä¸å¤å§å§ä¸ç©äºä¹åä¹å¥½å ä¸ªææ²¡ç©è¿äº\n\nä¹°äº PS4ï¼èäº 60 å¤ä¸ªå°æ¶åéå
³ï¼åºæ°ææï¼äºæªç©ç人ä¸çï¼ç»å°¾ç BGM ç好å¬ï¼éå
³åå被åçé³é¾åçå¦é¾æèªéäº ð¤\n\nå ¡åä¹å¤ãåæå¨æ¿ 2ãçè
è£èãå¤§è¡¨å¥ 2ã跳楼å°å¥³ã太é¼è¾¾äººä¹ç¨å¾®ç©äºä¸ä¸ä¸\n\n\n\n## å½±è§\n\nè¯å§ï¼\n\nãä¹é¾å±±ä¼¯çµãï¼æä½³\nãæè¶çå§å¦ã\nãçå¸çæ°å¨ã\n\nçµè§å§ï¼\n\nãææ¯å¤§å¥å¤§ãï¼æä½³\nãä¿éã\nãè¿·é¾ã\nãéé¿è½å¯è»ä½æç¨ã\nãé»éã\nãè¿ä»½ææ
æç½ªåï¼ï¼ã\nãæ æ³æä¸ºéå
½çæä»¬ã\nã西é¨ä¸çã\nãéæ³è§éã\nã人类æ¸
é¤è®¡åã\n\nçªå§ï¼\n\nãDARLING in the FRANXXãï¼æä½³ï¼å强ï¼\nã齿¨æ¥ éçç¾é¾ 第äºå£ã\nã鿥çªå¤´å°å¹´ä¸ä¼æ¢¦å°å
女éå¦å§ã\nãå绪çä¸å¦è·¯ã\nãcitrusï½ææ©å³é¦æ°ï½ã\nãå·¥ä½ç»èã\nã路人女主çå
»ææ¹æ³ã\nãNO GAME NO LIFEã\nãæå®¶å¥³ä»æå¤ç¦ï¼ã\nã鲿ç巨人 第ä¸å£ã\nãå¸åè±éã\nãJOJOçå¥å¦åé© é»éä¹é£ã\nãOVERLORDã\nãåå¤è±éª¨æé¢å¢ã\nãpopååpipiç¾çæ¥å¸¸ã\nãå»å»ã\n\nçµå½±ï¼\n\n太å¤äºï¼ç¥è¿\n\nä¸å
± 3 é¨è¯å§ï¼10 é¨çµè§å§ï¼16 é¨çªå§ï¼è¶
åºé¢æ ðââï¸\n\næå¾å¤æ³è¯»ç书䏿¬é½æ²¡è¯»ï¼2019 ææå¯ä»¥å¤è¯»ä¸äºä¹¦\n\n\n\n## ææ
\n\nè·é
¸å¥¶çææ
ä¾ç¶å¾å¥½ï¼å¥¹ç°å¨å°±å¨ææè¾¹ç¡è§ ð±\n\nè·åå°çå°çè·ç¦»åè¿äºï¼ä½æ¯...äºæ
å徿ªæªçï¼å¸æåªæ¯ææ¶ç\n\nè¿æå¾å¤æ³è¯´çï¼ä¸è½ååºæ¥\n\n## æå\n\nå»å¹´ ch å¨å¥¹ 23 å²çå¹´ç»æ»ç»éåå°\n\n> ç°å¨ç年纪\n>\n> å·²ç»æ¯ä¸è½å马马èèçæ´»å·¥ä½ç年纪äº\n>\n> åä¹ä¸æ¯å¿æ
ä¸å¥½èµ·æ¥ ä»ä¹é½ä¼å¥½èµ·æ¥ç年纪\n\n䏿¬¡çå°è¿ä¸ä»¥ä¸ºæï¼ç°å¨æè§çæ¯ä¸éè§è¡\n\n2019 叿å¯ä»¥æ´»å¾æ´è®¤çä¸ç¹ï¼å°½é让èªå·±åå¾å
å®æè¶£èµ·æ¥ï¼ä½è¯´å®è¯æä¹æ²¡ä»ä¹ä¿¡å¿"},{"slug":"nas","title":"ä»é¶å¼å§ç NAS çæ´»","tags":[],"body":"徿©å°±æ³ç»ä¸ä¸ªå®¶åº NAS
318设å¤ï¼è¶çè¿æ¬¡ååä¸ï¼å¨äº¬ä¸ä¹°äºä¸å°ç¾¤æ DS218play åä¸åé
·ç¼ 4T 硬çï¼å·²ç»ç¨äºä¸¤å¤©äºï¼æçæåæ¯ï¼\n\n**ç½ç**\n\n## 使ç¨\n\nç®å常ç¨çæä¸é¢å 个åè½\n\n### Time Machine\n\n\n\nä¹åç¨ Time Machine åå¤ä»½è¦ä¸ç´è¿çç§»å¨ç¡¬çï¼å¾éº»ç¦èä¸å®¹æå¿è®°ï¼ç»å¸¸æ¯ Mac æéæå·²ç» 10 å¤å¤©æ²¡å¤ä»½äºææ³èµ·æ¥æä¸ç§»å¨ç¡¬çå¤ä»½ä¸ä¸ï¼æ NAS ä¹åå¯ä»¥å®ç°æ 线åè¿ç¨å¤ä»½ï¼å¨ä»»ä½å°æ¹é½å¯ä»¥è®© Mac æ¯å°æ¶èªå¨å¤ä»½å°å®¶éç NAS é\n\n### BT ä¸è½½\n\n\n\nä½¿ç¨ RSS 订é
忬¢ççªå§æç¾å§ï¼ææ´æ°å¯ä»¥èªå¨ä¸è½½ï¼æè
å¨å
¬å¸~~æ¸é±¼~~çæ¶åçå°ä¸é¨å欢ççµå½±ï¼å¯ä»¥è¿ç¨ç»å½å°å®¶éç群æï¼æ·»å BT ä»»å¡ï¼æä¸åå®¶å°±å¯ä»¥ç´æ¥çäº\n\n### åå¨\n\nè¿æ¯ NAS æåºç¡çåè½äºï¼å®æå¤§ç好夿¯å¯ä»¥å¿«éå¨ä¸å设å¤é´å
±äº«\n\næ¯å¦æå¨çµèä¸ææ¨±å²éº»è¡£çç
§çåå° NAS éï¼æå¼ææºå¯ä»¥éæ¶ç\n\n\n\n忝妿ä¸è½½äºä¸é¨æ¥å§ï¼æ ¹æ®æå¿æ
çä¸åï¼ææå¯è½æ³å卿¡ååç¨çµèçï¼ä¹æå¯è½æ³èººå¨åºä¸ç¨ iPad ç\n\n\n\nè卿 NAS ä¹åï¼æå¿
é¡»æ iPad ç¨æ°æ®çº¿è¿å°çµèä¸ï¼æå¼é¾ç¨çè¦æ»ç iTunesï¼ç¶åæè§é¢æ·è´å° iPad éæè½ç\n\n## é¨ç½²\n\n群ææä¸ä¸ªå« QuickConnect çä¸è¥¿ï¼å¯ä»¥åé
ä¸ä¸ªç¾¤æçååï¼å¯ä»¥ç´æ¥ç¨å®å¨å
¬ç½è¿ç¨è¿æ¥\n\n使æ³ç»å®èªå·±çååï¼è¿æ¯æè
¾äºä¸ä¸ï¼æ²¡æ³å°é£ä¹éº»ç¦\n\n### 端å£è½¬å\n\n为äºå°å¤ç½å¯¹åºå°å
ç½ç NAS ä¸\n\nå®¶éççµä¿¡å®½å¸¦å·²ç»æäºå
¬ç½ IPï¼è®¾ç½®ä¸ç«¯å£è½¬åå°±è¡äºï¼ä»¥ä¸ºå¾ç®åï¼æ²¡æ³å°æ¯ä¸ªå¤§å\n\n\n\nç¨è·¯ç±å¨ç DMZ åè½è®¾ç½®å¥½è½¬åä¹åï¼åç°æ²¡ææï¼è®¿é®å
¬ç½ IP è¿åçæ¯å
ç«çç»å½çé¢ï¼æç¥éå
ç«åè·¯ç±å¨ä¸æ¯æ¡¥æ¥ï¼è¿éè¦å¨å
ç«ä¸è®¾ç½®è½¬åï¼å°è¯äºä¸åç°ææ²¡æå
ç«çè¶
级管çåè´¦å·ï¼æ²¡ææé设置\n\nGoogle 䏿¥å°äºå ç§çµä¿¡å
ç«çç ´è§£æ¹æ³ï¼è¯äºé½æ æï¼åæ¨4ç¹å¤ç»çµä¿¡å®¢ææçµè¯ï¼å±
ç¶æäººæ¥...çº¦äºæ©ä¸çµä¿¡å¸å
ä¸é¨å¤ç\n\næ©ä¸çµä¿¡å¸å
è¿æ¥ç»äºè¶
级管çåè´¦å·\n\nè¶
级管çåè´¦å·è¿äºå
ç«åå°ï¼æå
ç«åè·¯ç±å¨è®¾ç½®ææ¡¥æ¥å端å£è½¬åæ£å¸¸äº\n\n### DDNS\n\n为äºå°å¨æçå
¬ç½ IP æ å°å°æçååä¸\n\n\n\n\n\n群æåè·¯ç±å¨é½å¸¦äº DDNS åè½ï¼å´åç°é½ä¸æ¯æ CloudXNS...åªè½èªå·±å¨æäº\n\næåå°åç°äºè¿ä¸ªä¸è¥¿ï¼https://github.com/lixuy/CloudXNS-DDNS-with-BashShell\n\n\n\nå©ç¨ç¾¤æçä»»å¡è®¡ååè½ 10 åéè·ä¸ä¸è¿ä¸ªèæ¬ï¼å®ç°äº CloudXNS ç DDNS\n\n### SSL è¯ä¹¦\n\n\n\n群æèªå¸¦äºèªå¨ä» Let's Encrypt è·åè¯ä¹¦çåè½ï¼çé¦\n\nå´åç°ç¾¤æç¨çéªè¯æ¹å¼å¿
é¡»ç¨ 80 端å£ï¼å½å
æ ¹æ¬ä¸è½ç¨ï¼çè\n\n\n\n乿¾å°äºè§£å³æ¹æ¡ï¼http://www.up4dev.com/2018/05/29/synology-ssl-wildcard-cert-update/\n\nåæ ·æ¯å©ç¨ç¾¤æçä»»å¡è®¡ååè½ä¸ä¸ªæè·ä¸ä¸è¿ä¸ªèæ¬ï¼è§£å³äº SSL è¯ä¹¦åèªå¨ç»ç¾\n\n\n\næåå®ç°äºéè¿èªå·±çåå https://nas.diygod.me:2222 è¿ç¨è®¿é® NASï¼ç»å¿çå°å¯ç±åæå·²ç»å¨æç« 第ä¸å¼ å¾éçå°äºè¿ä¸ªåå"},{"slug":"cp2018sp","title":"C94 & CP2018SP å屿¥è®°","tags":[],"body":"C94 å CP2018SP 䏿¯åä¸å¤©ï¼ä½é½æ¯å人å±ï¼æ¶é´åå¾è¿ï¼å°±åå¨ä¸èµ·äº\n\n## C94\n\nComic Marketï¼å
¨çæå¤§çå人å±ï¼8 æ 10 æ¥å¨ä¸äº¬ä¸¾åï¼æå½ç¶æ²¡é±å»ï¼ä¸å¤©é½å¨ Twitter äºåå±ï¼å£æ°´æµäºä¸å°\n\nææåå° Aniplex å±å°ä¹°äºç¢å¹å¥å¤ªæç darling æ¬åï¼æ¯ç«å®æ¹ç»å¸è´¨éè¶
级æ£ï¼èçï¼\n\n妿åç»æä¸æ¬¡æºä¼ï¼æåºè¯¥ä¼ä¹°ä¸æ¬ï¼ä¸æ¬èªè䏿¬æ¶è䏿¬ä¼ æ\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/
318player.html?vcode=596384de52393e72&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n \n\n## CP2018SP\n\nåºåååç°äºå°åäºï¼è¾£é¸¡å¤§çï¼æä»¥è¿æ¬¡æ²¡æ vlog äº\n\nComicupï¼8 æ 25 æ¥å¨ä¸æµ·ä¸¾åï¼CP2018SP è§æ¨¡æ¯ä»å¹´5æä»½ç CP22 å°äºå¾å¤ï¼è· C94 æ´æ²¡æ³æ¯ï¼å
¨åºä¸¤ä¸ªå¤å°æ¶å°±éå®äºï¼ç¶åå®å¨æ èåé头éäºä¸é...\n\nè½ç¶è§æ¨¡å°ä½è¿æ¯ä¹°å°äºå¾å¤åæ¬¢çæ¬åï¼æéå°ç darling é½ä¹°äºï¼èçï¼\n\n\n\nå¯¹æ¯ CP22\n\n\n\nåºæ¥ä¹ååæåå»åäºçèç«é
ï¼ç¶åçè人ï¼ç¶ååæ¸ä¸²ï¼æ¸ä¸²è¿å®¶æ£è£
çèèå¤é
è¶
级好åï¼è®¨ååé
çæé½åäºä¸å¤§æ¯ï¼ç Freddy å¼å¿å¾æèè¶³è¹å°±ç¥éæå¤å¥½åäº\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=af7819dc291a5920&userId=17&autoPlay=true&loop=true&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>"},{"slug":"cj2018","title":"2018 ChinaJoy å屿¥è®°","tags":[],"body":"8æ4æ¥å»äº ChinaJoyï¼äººè¿æ¯ä¸å¦æ¢å¾çå¤\n\nAC å¨çå¯ç±ï¼èç\n\nç¬¬äºæ¬¡æ vlogï¼ç¶åæå®æå¾åªï¼è¿æ¯ Freddy 帮æåªçï¼æå¨è§é¢éçå¯ç±\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=10c5de157e5129c0&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n\n\nåè§å°äºçå°¼çåå
¨ä½æ´èµ°å®¶ææåï¼ä½è¿æ¬¡å¿æ
å¾å¤æ\n\nç»äºä¹°å°äºä¹åä¸ç´ç¢ç¢å¿µç AC å¨å
å头ï¼ç¶å被ä¸ä¸ä¸ªäººé®å¨åªéå¼ç\n\n~~软磨硬泡æ±~~æ¿å°äºå¾å欢ç触æç´æçæ¯ç»è§¦æï¼æå¾æç
§äºä½ 们èªå·±æ³è±¡å§\n\nç¶åæä¸å[ç»å¸ç群](https://wj.qq.com/s2/3318631/2970)éçç»å¸ç们åäºé¥ï¼ç¬¬äºå±ç»å¸ç线ä¸py\n\n"},{"slug":"bw2018","title":"2018 bw & bml å屿¥è®°","tags":[],"body":"7æ21æ¥å22æ¥å»äº bw å bmlï¼é¢åºäºä¸ä¸ä¸ªäººï¼py é红\n\n### BILIBILI WORLD\n\n2233 çå¯ç±ï¼èç\n\nç¬¬ä¸æ¬¡æ vlogï¼ç¶åæå®æå¾åªï¼è¿æ¯ Freddy 帮æåªç\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=e831056159c1f1a4&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\nç¶åæä¸å[ç»å¸ç群](https://wj.qq.com/s2/3318631/2970)éç8个ç»å¸ç们åäºæµ·åºæï¼ç¬¬ä¸å±ç»å¸ç线ä¸py\n\n说好ç齿¯è¥å®
ï¼ç»æä¸ä¸ªæ¯ä¸ä¸ª~~å~~ï¼ä¸å¯¹ï¼ç¦\n\nå°æ¡æ¡ãæèæãSikiãå°èãç·ãå°åµãäºä¹ãDIYgodãFreddy\n\n\n\n### BILIBILI MACRO LINK\n\nç½å¤©åçå°é£è·å¯ç±ç lwl é¢åºï¼å¸¦ lwl éäºBç«æ»é¨åæ¸é
¸å¥¶\n\n\n\nåè· [richCloud](https://www.rixcloud.com/) èæ¿ Zero æ¸äºä¸²\n\n\n\nBML!\n\n\n\nä¸è¿åºå°±è¢«éæ¼å°äºï¼æ°æ°è¶
级å¨ï¼æ¯ä¸ªäººé½å¨ç¨è§å
æ£ä¼´éè奿ç callï¼ç¹å«æ¯æä¹åååºç°çæ¶åï¼é常æ¿å¨ï¼
318ååé½è¦ååäº\n\n坿åç太é åäºï¼å宾çè¸é½ç䏿¸
ï¼å¸ææå¹´å¯ä»¥ä¹°å¾èµ·åé¢çä½åï¼ä¸è¦é®æä¸ºä»ä¹å
¬å¸ä¸å票ï¼ç¨ç±åçµï¼"},{"slug":"painting-02","title":"ã临æ¹ã02 - pixiv","tags":["ç»ç»"],"body":"åå¾ï¼DARLING in the FRANXX EP#04 00:16:48"},{"slug":"polymer","title":"Polymer åä½éª","tags":[],"body":"ä½ä¸ºå¼åè
ï¼æä»¬é½ç¥éç»ä»¶åãæ ååå代ç å¤ç¨çéè¦æ§ï¼å端ä¹ä»æªåæ¢è¿å¯¹å端ç»ä»¶åçå°è¯ï¼äº§çäºåå¼åæ ·çç»ä»¶åææ¯ï¼ä» Vue React çåç«¯æ¡æ¶ï¼å° webpack è¿æ ·çå
¨ç«æå
å·¥å
·\n\nä½å端ä¸ç´ç¼ºä¹è¿æ ·ä¸ä¸ªæ¨¡ååæ ååæµè§å¨çº§å«çåçç»ä»¶åæ¹æ¡\n\nWeb Components æ¯ WHATWG å W3C æ£å¨å°è¯ç Web ç»ä»¶åæ¹æ¡ï¼ä¸ºç»ä»¶åçå端å¼åæä¾æµè§å¨çº§å«çæ¯æãå®ç±åé¡¹ä¸»è¦ææ¯ç»æï¼Shadow DOMãCustom ElementsãHTML ImportãHTML Template\n\nPolymer é¡¹ç®æ¯ Google çåºäº Web Components æºå¶çæ¡æ¶ï¼å®ä½äºç®åç Polyfill åæç¨æ§å°è£
ï¼å
æ¬æ°æ®ç»å®ï¼æ¨¡æ¿å£°æï¼äºä»¶ç³»ç»çãGoogle å¨å»å¹´å°±å·²ç»å°å
¶åºç¨å°äº YouTube ä¸\n\nPolymer 3.0 å¨ 20 天ååååå¸ï¼æ£å¥½ B ç«ææ¾å¨è¿æéè¦éæææ UI ç»ä»¶ï¼æä»¥åäºè¿æ ·çä¸ä¸ªè°ç ï¼ä¸æææ demo æç®¡å¨ [polymer-demos](https://github.com/DIYgod/polymer-demos)ï¼è¿äºå° demo åªä½ä¸ºä¸äºç®åä½éªï¼æ³äºè§£ Polymer ç宿´åè½å»ºè®®é
读[宿¹ææ¡£](https://www.polymer-project.org/3.0/docs/devguide/feature-overview)\n\n<!--more-->\n\n## æµè§å¨æ¯æ\n\nç®åä½¿ç¨ Web Components çæå¤§é»ç¢å°±æ¯æµè§å¨æ¯æç¨åº¦ä½ï¼ä¸ Polyfills ä½ç§¯ç¸å¯¹å大ï¼90+kbï¼\n\nç®ååªææ°ç Chrome Opera å Safari å¯ä»¥æä¾å®æ´çåçæ¯æï¼å
·ä½æ¯ææ
åµå¯ä»¥åè [caniuse.com](https://caniuse.com/#search=web%20components)ï¼ä½¿ç¨ [Polyfills](https://github.com/webcomponents/webcomponentsjs) åå¯ä»¥æ¯æå° Edge IE11+ Firefox Safari9+\n\nPolyfills æä¸ä¸ªä¸»è¦çæä»¶ï¼\n\n- `webcomponents-bundle.js`: å
å«äºææ polyfills\n- `webcomponents-loader.js`: å¯ä»¥æ£æµæµè§å¨æ¯ææ
åµï¼ç¶åå»å 载对åºç polyfillsï¼å¯¹æåçæ¯æçæµè§å¨å¯ä»¥åå°ä¸å¿
è¦ç浪费\n- `custom-elements-es5-adapter.js`: 注å Custom Elements æ¶éè¦ä½¿ç¨ ES6 è¯æ³ï¼æä»¥å½æµè§å¨ä¸æ¯æ ES6 æ¶éè¦åé¢å¤çå¤çï¼åå¼ç¨è¿ä¸ªæä»¶å°±å¥½äº\n\næ»çæ¥è¯´å
¼å®¹æå¤æµè§å¨çæä½³å®è·µæ¯è¿æ ·çï¼\n\n```html\n<scirpt src=\"webcompoments-loader.js\"></scirpt>\n<scirpt src=\"custom-elements-es5-adapter.js\"></scirpt>\n
318<script src=\"index.js\"><\/script>\n```\n\nå
¶ä¸ `webcompoments-loader.js` å¿
é¡»åç¬å¼ç¨ï¼`custom-elements-es5-adapter.js` å¯ä»¥è· `polymer` åä½ ç代ç ç¨ Webpack åå°ä¸èµ·ï¼ä½æ³¨æ `custom-elements-es5-adapter.js` ä¸è¦åé¢å¤çç¼è¯ï¼å
¶ä»ä»£ç ç¨ babel ç¼è¯æ ES5ï¼å®æ´å®è·µå¯ä»¥åè [polymer-demos](https://github.com/DIYgod/polymer-demos)\n\n## Custom elements\n\nä¸é¢å°è¯å®ä¹ä¸ä¸ªæç®åçèªå®ä¹å
ç´ ï¼ä» `PolymerElement` ç»§æ¿ä¸ä¸ªç±»ï¼ç¶åä¼ ç» `window.customElements.define`\n\n**ææ**\n\n{% raw %}\n<demo-custom-elements></demo-custom-elements>\n{% endraw %}\n\n**HTML 代ç **\n\n```html\n<demo-custom-elements></demo-custom-elements>\n```\n\n**JS 代ç **\n\n```js\nimport { PolymerElement } from \"@polymer/polymer\";\n\nclass DemoCustomElements extends PolymerElement {\n constructor() {\n super();\n this.textContent = `I'm a custom element.`;\n }\n}\n\nwindow.customElements.define(\"demo-custom-elements\", DemoCustomElements);\n```\n\n## Shadow dom\n\nShadow dom æ¯ä¸ä¸ªéèãç¬ç«ç DOMï¼å®ç HTML CSS åè¡ä¸ºä¸å¸¸è§ç DOM æ å离ï¼è¿æ ·ä¸åçåè½ä¸ä¼æ··å¨ä¸èµ·ï¼å
å¤ç CSS ä¹äºä¸å½±å\n\nShadow dom 䏿¯ä¸ä¸ªæ°äºç©ï¼ä¸ç´ä»¥æ¥ï¼æµè§å¨ç¨å®æ¥å°è£
ä¸ä¸ªå
ç´ çå
é¨ç»æã以 `<video>` å
ç´ ä¸ºä¾ãä½ æè½çå°çåªæ¯ä¸ä¸ª `<video>` æ ç¾ï¼å®é
ä¸ï¼å¨å®ç Shadow dom ä¸å
å«ä¸ç³»åçæé®åæ§å¶å¨\n\nä¸é¢ä¾åä¸ï¼Shadow dom éç p æ ç¾å®ä¹äº CSS 屿§ `color`ï¼å®ä¸ä¼æ³é²å°å¤é¨\n\n**ææ**\n\n{% raw %}\n\n<style>\n html {\n --my-background: #eee;\n }\n</style>\n\n<demo-shadow-dom></demo-shadow-dom>\n\n<p>I am outside of demo-shadow-dom. Because of encapsulation, demo-shadow-dom's styles won't leak to me.</p>\n{% endraw %}\n\n**HTML 代ç **\n\n```html\n<style>\n html {\n --my-background: #eee;\n }\n</style>\n<demo-shadow-dom></demo-shadow-dom>\n<p>\n I am outside of demo-shadow-dom. Because of encapsulation, demo-shadow-dom's\n styles won't leak to me.\n</p>\n```\n\n**JS 代ç **\n\n```js\nimport { PolymerElement, html } from \"@polymer/polymer\";
318\n\nexport class DemoShadowDom extends PolymerElement {\n static get template() {\n return html`\n <style>\n p {\n color: #f5712c;\n background-color: var(--my-background);\n }\n </style>\n <p>I'm a DOM element.</p>\n <p>This is my shadow DOM!</p>\n `;\n }\n}\n\nwindow.customElements.define(\"demo-shadow-dom\", DemoShadowDom);\n```\n\n## HTML templates\n\nä½¿ç¨ `<template>` å `<slot>` ç»æ shadow DOM\n\n**ææ**\n\n{% raw %}\n<demo-html-template>\n\n<p>I'm a custom slot.</p>\n</demo-html-template>\n{% endraw %}\n\n**HTML 代ç **\n\n```html\n<demo-html-template>\n <p>I'm a custom slot.</p>\n</demo-html-template>\n```\n\n**JS 代ç **\n\n```js\nimport { PolymerElement, html } from \"@polymer/polymer\";\nimport \"@polymer/polymer/lib/elements/dom-repeat.js\";\nimport { DemoShadowDom } from \"./demo-shadow-dom\";\n\nclass DemoHTMLTemplate extends DemoShadowDom {\n constructor() {\n super();\n\n this.employees = [\n {\n name: \"Blog\",\n link: \"https://diygod.me\",\n },\n {\n name: \"GitHub\",\n link: \"https://github.com/DIYgod\",\n },\n ];\n }\n static get template() {\n return html`\n <strong>Template:</strong>\n <template is=\"dom-repeat\" items=\"{{employees}}\">\n <p><a href=\"{{item.link}}\">{{item.name}}</a></p>\n </template>\n <strong>Slot:</strong>\n <slot></slot>\n <strong>Super template:</strong>\n ${super.template}\n `;\n }\n}\n\nwindow.customElements.define(\"demo-html-template\", DemoHTMLTemplate);\n```\n\n## æ°æ®ç»å®\n\næ¯æååçæ°æ®ç»å®ï¼ä½ å¯ä»¥å°è¯ç¼è¾ä¸é¢çè¾å
¥æ¡ï¼æè
ç´æ¥å¨æ§å¶å°ä¿®æ¹å±æ§ `document.querySelector('demo-data').owner1 = 'DIYgay'`ï¼å±æ§æ¹åä¼å³æ¶åæ å° DOM é\n\n**ææ**\n\n{% raw %}\n<demo-data owner1=\"DIYgod1\"></demo-data>\n{% endraw %}\n\n**HTML 代ç **\n\n```html\n<demo-data owner1=\"DIYgod1\"></demo-data>\n```\n\n**JS 代ç **\n\n```js\nimport { PolymerElement, html } from \"@polymer/polymer\";\nimport \"@polymer/iron-input\";\n\nclass DemoData extends PolymerElement {\n constructor() {\n super();\n this.owner3 = \"DIYgod3\";\n }\n\n static get properties() {\n return {\n owner1: {\n type: String,\n value: \"DIYgod\",\n },\n owner2: {\n type: String,\n value: \"DIYgod2\",\n },\n };\n }\n\n static get template() {\n return html`\n <p>This is <b>[[owner1]]</b>'s element.</p>\n <p>This is <b>[[owner2]]</b>'s element.</p>\n <p>This is <b>{{owner3}}</b>'s element.</p>\n <iron-input bind-value=\"{{owner1}}\">\n <input is=\"iron-input\" placeholder=\"Your name here...\" />\n </iron-input>\n `;\n }\n}\n\nwindow.customElements.define(\"demo-data\", DemoData);\n```\n\n## èªå®ä¹äºä»¶\n\nä¸é¢æä»¬æ¥ç»æä»¬çèªå®ä¹å
ç´ å®ä¹ä¸ä¸ªå为 `diygod` çäºä»¶ï¼ç»å®äºä»¶åè°çæ¹æ³è·æ£å¸¸äºä»¶ä¸æ ·\n\n**ææ**\n\n{% raw %}\n<demo-events></demo-events>\n\n
318<script>\n document.querySelector('demo-events').addEventListener('diygod', function (e) {\n alert(e.detail.msg);\n });\n<\/script>\n\n{% endraw %}\n\n**HTML 代ç **\n\n```html\n<demo-events></demo-events>\n
318<script>\n document\n .querySelector(\"demo-events\")\n .addEventListener(\"diygod\", function (e) {\n alert(e.detail.msg);\n });\n<\/script>\n```\n\n**JS 代ç **\n\n```js\nimport { PolymerElement, html } from \"@polymer/polymer\";\n\nexport class DemoEvents extends PolymerElement {\n static get template() {\n return html` <button on-click=\"handleClick\">Kick Me</button> `;\n }\n\n handleClick(e) {\n this.dispatchEvent(\n new CustomEvent(\"diygod\", {\n detail: {\n msg: \"diygod event fired\",\n },\n }),\n );\n }\n}\n\nwindow.customElements.define(\"demo-events\", DemoEvents);\n```\n\n<scirpt src=\"https://cdn.jsdelivr.net/gh/DIYgod/[email protected]/dist/webcomponents-loader.js\"></scirpt>\n\n
318<script src=\"https://cdn.jsdelivr.net/gh/DIYgod/[email protected]/dist/polymer-demos.js\"><\/script>"},{"slug":"goodnight","title":"æ©å®æå®èªå¨å","tags":[],"body":"ä¸ä¸éï¼[女æåçå¾®åæ
ç»ªçæ§](https://diygod.me/2920/)\n\nåå°ä¸ç´å¾å欢说æ©å®æå®ï¼å½ç¶æ¯æè¯´ç»å¥¹ï¼ï¼ä½æç»å¸¸ä¼å¿è®°ï¼æè¿çµæºä¸å¨ï¼æ³åºæ¥è¿æ ·ä¸ä¸ªç§å¦é«ææ¹ä¾¿å¿«æ·ç¨³å®å°è¯´æ©å®æå®çåæ³ï¼\n\næå¾®ä¿¡æå¨æå¡å¨ä¸ï¼æ¯å¤©åºå®æ¶é´ï¼èªå¨æ§è¡åéæ©æå®ææ¬æ¶æ¯çå½ä»¤ï¼\n\n代ç å¾ç®åï¼æ¾å¨äº [GitHub](https://github.com/DIYgod/GoodNight) ä¸ï¼å
·ä½æææ¯æ¯å¤©æ©ä¸ 9 ç¹ååä¸ä¸ª âæ©å®âï¼ç¶åæä¸ 12 ç¹ååä¸ä¸ª âæå®âã\n\n太好äºï¼ä»¥ååä¹ä¸ä¼å¿è®°è¯´æ©å®æå®äºï¼å¼å¿ï¼\n\n\n\nèæ¬å·²ç»é¨ç½²å°æå¡å¨ä¸äºï¼æå¤©æ©ä¸ç»åå°ä¸ä¸ªæåï¼\n\nå®é
使ç¨çæææå¤©ä¼æ´æ°å°ä¸é¢ï¼è¯å®æ²¡é®é¢ï¼ç¨³å¾å¾ï¼ï¼ï¼"},{"slug":"rsshub","title":"RSSHub - ä½¿ç¨ RSS è¿æ¥å
¨ä¸ç","tags":["æ°å"],"body":"**[项ç®å°å](https://github.com/DIYgod/RSSHub)**\n\n## ä»ç»\n\nRSSHub æ¯ä¸ä¸ªè½»éãæäºæ©å±ç RSS çæå¨ï¼å¯ä»¥ç»ä»»ä½å¥å¥æªæªçå
å®¹çæ RSS 订é
æº\n\nå½åæ¯æå表ï¼\n\n- bilibili\n - çªå§\n - UP 主æç¨¿\n - UP 䏻卿\n - UP 主æ¶è夹\n - ååºè§é¢\n- å¾®å\n - å主\n- ç½æäºé³ä¹\n - æå\n- æé\n - åç±»\n- èªå¦\n - æ¿æº\n- å¿«é\n\n<!--more-->\n\n## å䏿们\n\n妿æä»»ä½æ³æ³æéæ±ï¼å¯ä»¥å¨ [issue](https://github.com/DIYgod/RSSHub/issues) ä¸åè¯æä»¬ï¼åæ¶æä»¬æ¬¢è¿åç§ pull requests\n\nå¯ä»¥éè¿ä»¥ä¸éå¾åä¸è®¨è®ºï¼\n\n- [Telegram 群](https://t.me/rsshub)"},{"slug":"2018-bao-zou-yu-ren-jie","title":"2018 æ´èµ° yu 人èå屿¥è®°","tags":[],"body":"æ´èµ° yu äººèæ¯æ´èµ°æ¼«ç»é¦å±äºå¨å¨±ä¹å±ä¼ï¼ä½ä¸ºæ´èµ°ç²å½ç¶ä¸è½éè¿ï¼å¾æ©å°±ä¹°äºç¥¨ã\n\næ»ä½æè§è¿æ¯å¾æ£çï¼å宾éµå®¹å¼ºå¤§ï¼äºå¨å¾å¤ï¼è¿å¯ä»¥è·çå°¼çä¸èµ·ä¸åæï¼ï¼è¯ææ»¡æ»¡ï¼ä½ä¸è¶³ä¹å¾ææ¾ï¼æ´èµ° yu 人è主è¦å
容éä¸å¨ä¸»èå°çèç®è¡¨æ¼ï¼ä½ä¸æµ·æ°å½é
åè§ä¸å¿çç°åºåº§ä½è¿è¿ä¸å¤ï¼æè§è¿æ¯æ´éåå¨ç±»ä¼¼ BML ç举åå°æ¢
èµå¾·æ¯-å¥é©°æåä¸å¿è¿ç§å°æ¹ä¸¾åã\n\n\n\nä¸åå»å¾æ¯è¾æï¼éäºä¸ååå±å°
318ï¼æ²¡çèç®ï¼ä¸åæ´èµ°å®¶æå¨ä¸»èå°äºå¨äºä¸æ³¢ï¼ç¶åå°±æ¯ä¸åçèç®ã\n\n### éé\n\nè¶
级å¯ç±ï¼è¢«åç²äº\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=8bec03c44fed9768&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n::br\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=94d01db8c201e02c&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n### éé¦é¿\n\nå¦åååååå\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=2db33acf3779cf0e&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n::br\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=b0edcab2a0eb5b50&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n### æ´èµ°å®¶æ\n\nå
¨éµå®¹ï¼æ¿å¨\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=82f561eaa0c1209b&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n### å¬äººç« 赤ä¹ç æå©é
±\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=f90c1e0c6121a82a&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n::br\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=78d10096fc0c1550&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n::br\n\n<iframe id=\"dogePlayerFrame\" src=\"https://player.dogecloud.com/web/player.html?vcode=cb5d5124d3f04a3a&userId=17&autoPlay=false&inFrame=true\" allowfullscreen=\"true\" msallowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" oallowfullscreen=\"true\" allowtransparency=\"true\" scrolling=\"no\" width=\"728\" height=\"409\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\" referrerPolicy=\"unsafe-url\"></iframe>\n\n### 山䏿ºå\n\nç¾å®ä¼ï¼ç¾å åç
§ getâ\n\n\n\næå离åºçæ¶åè¿å¨åæééå°äºçå°¼çï¼ä¸åæä¹å¸¦ç头å¥ï¼èº«è¾¹æä¸ªå·¥ä½äººåï¼å¾æ¿å¨ï¼åä½äºå¥½å ç§...åç°çå°¼çæ¯æç®å¥½å¤ï¼åºè¯¥å¨170以ä¸ð"},{"slug":"open-source-project-donation","title":"å
³äºå¼æºé¡¹ç®èµå©è¿ä»¶äº","tags":[],"body":"ç¸ä¿¡æ²¡äººå弿ºé¡¹ç®æ¯ä¸ºäºèµé±ï¼å 为å®è¿ä¸å¦å»å¤©æ¡¥è´´èèµå¾å¿«ã\n\nä½å³ä½¿æ²¡æè¿ç§æ³æ³ï¼ç»´æ¤ä¸ä¸ªå¼æºé¡¹ç®ä¹ä¼éå°ä¸äºå¾å¤´ç¼çç°å®é®é¢ï¼æ¯å¦æå¡å¨å CDN çå¼éã以 DPlayer 为ä¾ï¼å¼¹å¹æ¥å£æå¡å¨æ¯å¹´éè¦è±è´¹ 2000 å¤åï¼ææ¡£éçè§é¢ CDN è´¹ç¨æ¯å¹´ä¹éè¦è±è´¹ 1500 å¤åï¼å¹¶ä¸éçç¨æ·å¢å¤è¿äºè±è´¹åªå¢ä¸åã\n\nè½ç¶ä¸ç´å¨ README çæ¾èä½ç½®æçèµå©æ¹å¼ï¼ä½ä¹æ²¡æ±å¤ªå¤§å¸æï¼æ¯ç« DPlayer ç¨æ·å ä¹é½æ¯å½äººï¼è½éå°ä¸ä¸ªå¯ä»¥æè¿°æ¸
æ¥èªå·±é®é¢çç¨æ·å°±å·²ç»å¾ä¸å®¹æäºï¼ç»æä¹ä¸åºæææï¼ä¸å¹´éé¶ææ¶å°çèµå©åªä¸è¿æ¯æ¯æ°´è½¦èªã说å®è¯ï¼è®©æèªå·±æ¿æ
è¿äºè±è´¹ææ¯ä¸ä¹æçï¼åå ä¸ç¨æ·å¤§å¤æ¯ççç«åå°é»ç«ï¼è¿æ¾ä¸åº¦è®©æäº§çäºå¼åçæ³æ³ã<!--more-->\n\nåé¢çäºæ
å¾å¤æåé½ç¥éäºï¼[åæäº](https://www.upyun.com/)å[梨享计ç®](https://pear.hk/)å
åèµå©äº DPlayerï¼åæäºèµå©äº DPlayer çå
¨é¨ CDN è´¹ç¨ï¼æ¢¨äº«è®¡ç®åæ¯ææä¾ä¸ç¬æ°éå¯è§çéé±èµå©ã\n\nä¸è¬æ¥è¯´ï¼å¦æä¸ä¸ªå¢ä½æä¼ä¸å°å¼æºé¡¹ç®ç¨å¨åä¸äº§åä¸ï¼é£ä¹èµå©å¼æºé¡¹ç®æç´æ¥çåä¸ä¸ççå¤ï¼å¯ä»¥è®©äº§åæä¾èµçæ¡æ¶ä¿æå¥åº·å¹¶å¾å°ç§¯æçç»´æ¤ã
318ä¸åçæ¯åæäºå¹¶æ²¡æç¨å° DPlayerï¼çæå
ä¹ä¸ä¼æä»»ä½ç´æ¥çåä¸åæ¥ï¼å¯è½æ´å¤çæ¯ä¸ç§æ
æï¼åæäºä½ä¸ºä¸å®¶åä¸å
¬å¸ï¼å
¶ä¸æ±åæ¥çæ
·æ
¨èµå©æ¯æå°¤å
¶æå¨çã\n\nè¿ç¯æç« å½ç¶ä¸æ¯ä¸ºäºå·å¬å¤§å®¶è¿è¡èµå©æå»å¤©æ¡¥è´´èï¼ç®å两家å
¬å¸çèµå©å·²ç»è¶³å¤äººå以å¤çæ¥å¸¸å¼éï¼é¤äºèµå©ï¼è´¡ç®ä»£ç ãæä¸ä¸ªæè¿°æ¸
æ¥ç bug ææè§ãä¸å¥é¼å±ãæè
ä»
ä»
æ¯ä½¿ç¨æç弿ºé¡¹ç®é½åæ ·å¯ä»¥è®©æå¾å¼å¿ï¼è¿äºé½æ¯è®©æç»§ç»è±æ¶é´å弿ºçå¨åã\n\n以ä¸ç¡¬å¹¿ï¼\n\n> [梨享计ç®](https://pear.hk/)æ¯ä¸å®¶é¾è®¡ç®ææ¯ç ååï¼ä¸æ³¨äºä¸ºç¨æ·æä¾ IaaS æ¶æãPaaS å¹³å°ãSaaS 软件æå¡ãPear Fog ä¸ä»
æ¯è·¨è¶ç½ç»ä¸å¿å°è¾¹ç¼çèµæºæ± ï¼ä¹æ¯æ°åç P2P ç³»ç»ãå
¶ä¸ Fog CDN å¨ä»¥éæä¸ Web åå¥½çæ¹å¼å¸®è§é¢ååéä½å
容ååææ¬ãæé«è´¨éã\n\n> [åæäº](https://www.upyun.com/)æ¯å½å
ç¥åä¼ä¸çº§äºæå¡åï¼è´åäºä¸ºå®¢æ·æä¾ä¸ç«å¼çå¨çº¿ä¸å¡å éæå¡ï¼ä¸ºå®¢æ·æä¾å¯¹è±¡åå¨ãHTTPSï¼SSL è¯ä¹¦ãå¤åªä½å¤çï¼WebP èªéåºãH.265 èªéåºçï¼ãå½±åè¯å«ãæåè¯å«ãçè§é¢ SDKãç´æ SDKãè¿éº¦ SDK çæå¡ãåæäºæ¥æ 6 ä¸ªæ°æ®å¤çä¸å¿ã300 å¤ä¸ªå½å
CDNèç¹ã15 个海å¤CDNèç¹ã5000 å°æå¡å¨ã5TB ä¿æå¸¦å®½ï¼æ¥å请æ±è¶
è¿ 1000 亿次ã"},{"slug":"darling-in-the-franxx-style","title":"DARLING in the FRANXX åå®¢æ ·å¼","tags":[],"body":"<iframe style=\"border-radius:12px\" src=\"https://open.spotify.com/embed/track/5KAI6nfg3wQRmtwJ0PPaEW?utm_source=generator\" width=\"100%\" height=\"152\" frameBorder=\"0\" allowfullscreen=\"\" allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\"></iframe>\n\n**ç¹å»<a href=\"javascript:;\" id=\"darling-trigger\">è¿é</a>åæ¢æ ·å¼**\n\n{% raw %}\n\n
318<script>\n$('#darling-trigger').click(function () {\n var $body = $('body');\n if ($body.hasClass('theme-darling')) {\n $body.removeClass('theme-darling');\n }\n else {\n $body.addClass('theme-darling');\n }\n});\n<\/script>\n\n{% endraw %}\n\næå½åï¼æè¢«æ©å°äºï¼\n没éï¼æå°±æ¯å¥¹ç Darlingï¼\n天åªï¼ä¸ç䏿ä¹ä¼æé£ä¹å¯ç±ç女å©åï¼\næç°å¨åªæ³ç DITF 第äºéå«çä»ä¹é½ä¸æ³å¹².jpg\n\n"},{"slug":"web-workers","title":"Web Workers åä½éª","tags":[],"body":"[è¿ä¸ªè§é¢](https://www.bilibili.com/video/av18682336/)æ 15+MB ç BAS å¼¹å¹èæ¬éè¦è§£æï¼è¿ä¼å¯¼è´é¡µé¢å¡æ» 7 ç§å·¦å³çæ¶é´ï¼æé´ UI 被å»ç»ï¼ä½éªå¾ç³ç³ï¼å¦æä½¿ç¨ Web Workers è¿è¡ä¼åï¼æè§£ææ¾å
¥ Web Workers æ§è¡ï¼å°±å¯ä»¥é¿å
UI 线ç¨é»å¡é æç页é¢å»ç»ã\n\n<!--more-->\n\n## å线ç¨\n\nä½¿ç¨ parse æ¥æ¨¡æè§£æå½æ°\n\n**index.js**\n\n```js\nfunction parse(time) {\n const start = new Date();\n while (new Date() - start < time) {}\n return \"DIYgod\";\n}\nconsole.log(parse(1000));\n```\n\næ¤æ¶é¡µé¢ä¼å¡æ» 1sï¼ç¶åè¾åºä¸ä¸ª 'DIYgod'ã\n\n## ä½¿ç¨ Web Workers\n\n**index.js**\n\n```js\nconst wk = new Worker(\"worker.js\");\nwk.postMessage(1000);\nwk.addEventListener(\"message\", (e) => {\n console.log(e.data);\n});\n```\n\n**worker.js**\n\n```js\nfunction parse(time) {\n const start = new Date();\n while (new Date() - start < time) {}\n return \"DIYgod\";\n}\n\nonmessage = function (e) {\n postMessage(parse(e.data));\n};\n```\n\nè¿æ¯ Web Workers çä¸ä¸ªæåºç¡ç¨æ³ï¼index.js æ 1000 ä¼ ç» worker.jsï¼worker.js å¨åå°è§£æ 1000 msï¼åæç»æ 'DIYgod' ä¼ å index.jsï¼è¿æ ·è§£æå°±ä¸ä¼åå ç¨ js 主线ç¨ï¼é¿å
äºé¡µé¢å¡æ»ã\n\n## å
åµ Worker\n\nä¸ä¸æ¥æä»¬å è½½äºä¸¤ä¸ª js æä»¶ï¼index.js å worker.jsï¼å¨ HTML éå¼ç¨ index.jsï¼ç¶å index.js ä¼å è½½ worker.jsï¼é£ä¹ä¸æ³å建åç¬ç Worker æä»¶æä¹åå¢ï¼\n\n**index.js**\n\n```js\nconst workerBlob = new Blob(\n [\n `function parse (time) {\n const start = new Date();\n while(new Date() - start < time) {}\n return 'DIYgod';\n}\n\nonmessage = function (e) {\n postMessage(parse(e.data));\n}`,\n ],\n { type: \"application/javascript\" },\n);\nconst workerURL = URL.createObjectURL(workerBlob);\n\nconst wk = new Worker(workerURL);\nwk.postMessage(1000);\nwk.addEventListener(\"message\", (e) => {\n console.log(e.data);\n});\n```\n\nURL.createObjectURL(blob) ä¼å建ä¸ä¸ª DOMStringï¼å®å
å«ä¸ä¸ªè¡¨ç¤º blob ç URLã\n\næå¼æ§å¶å°ç Network æ ç¾é¡µï¼ä½ ä¼çå°æµè§å¨å è½½äºä¸ä¸ªå½¢å¦ `blob:http://example.com/16215a1e-21d4-450c-b441-070e1981b69d` ç奿ªé¾æ¥ç js æä»¶ï¼è¿ä¸ª js æä»¶çå
å®¹æ£æ¯æä»¬ä¼ ç» workerBlob çå符串å
容ã\n\nè¿ä¸ª URL æ¯å¯ä¸çï¼ä¸å®ççå½å¨æåå建å®ççªå£ä¸ç document ç»å®ï¼åªè¦é¡µé¢åå¨ï¼è¯¥ç½åå°±ä¼ä¸ç´ææã\n\n## ä½¿ç¨ webpack worker-loader\n\nä¸ä¸æ¥ä¸æä»¬æ js ä»£ç æ¾å¨äºå符串éï¼å®ä¸è½æå模åï¼ä¹ä¸å©äºåæç»´æ¤ï¼å¦æé¡¹ç®æ£å¨ä½¿ç¨ webpackï¼å®è£
[worker-loader](https://github.com/webpack-contrib/worker-loader) å¯ä»¥è§£å³è¿ä¸ªé®é¢ã\n\n**index.js**\n\n```js\nimport WK from \"worker-loader?inline=true&fallback=false!./worker.js\";\n\nconst wk = new WK();\nwk.postMessage(1000);\nwk.addEventListener(\"message\", (e) => {\n console.log(e.data);\n});\n```\n\n**worker.js**\n\n```js\nimport Parse from \"./parse.js\";\n\nself.addEventListener(\"message\", (e) => {\n self.postMessage(Parse(e.data));\n});\n```\n\n**parse.js**\n\n```js\nfunction Parse(time) {\n const start = new Date();\n while (new Date() - start < time) {}\n return \"DIYgod\";\n}\n\nexport default Parse;\n```\n\nåªéè¦ä½¿ç¨ worker-loader å¼ç¨ worker.js 模åï¼å©ä¸ç worker-loader ä¼å¸®æä»¬èªå¨å¤çï¼æåç¼è¯çç»æç±»ä¼¼æä»¬ä¸ä¸æ¥ç代ç ã\n\n对æ¯ä¸ä½¿ç¨ Web Workers æ¶ï¼\n\n**index.js**\n\n```js\nimport Parse from \"./parse.js\";\n\nconsole.log(Parse(1000));\n```\n\n**parse.jsï¼ä¸åï¼**\n\n```js\nfunction Parse(time) {\n const start = new Date();\n while (new Date() - start < time) {}\n return \"DIYgod\";\n}\nexport default Parse;\n```\n\nè¿æ ·ä¸ç¨ä¿®æ¹åæçè§£ææ¨¡åï¼éä¾µå
¥å¼ï¼åªéè¦å 个 worker.js ä¸è½¬æ¨¡åï¼åæ¹ä¸è°ç¨æ¹æ³å³å¯ï¼ç»´æ¤èµ·æ¥ä¹å¾æ¹ä¾¿ã\n\n## æ§è½\n\n妿ææä¸ä¸ªè®¡ç®æ¾å
¥ 4 个 Workerï¼é£ä¹è¿ä¸ªè®¡ç®ä¼å¿« 4 åï¼\n\nä¸ï¼å®ä¸ä»
ä¸ä¼å¿« 4 åï¼èä¸ä¼å徿´æ
¢ã\n\nWeb Workers 䏿¯ä¸ºäºç¼©çè®¡ç®æ¶é´ï¼èæ¯ä¸ºäºé¿å
UI 线ç¨å»ç»ãå建线ç¨ã线ç¨è°åº¦ãä¼ è¾æ°æ®çè¡ä¸ºä¼å¯¼è´è®¡ç®å徿¯å线ç¨ç¨å¾®æ´æ
¢ä¸ç¹ã\n\næè®°å½äºå¼å¤´é£ä¸ªè§é¢å¨ä¸å Worker æ°éä¸è§£æ 100 æ¡å¼¹å¹çæ¶é´ï¼7 次记å½åå¹³åå¼ï¼\n\n| Worker æ°é | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 10 |\n| ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |\n| 平忶é´(ms) | 6085 | 8216 | 6310 | 6388 | 6483 | 6317 | 6475 | 7233 |\n\nä¸ä½¿ç¨ Worker çè§£æé度æå¿«ï¼1 个 Worker çé度æ¯å
¶ä»ææ¾æ´æ
¢ï¼2 3 4 5 6 个 Worker éåº¦æ²¡æææ¾å·®å¼ï¼ä½ Worker æ°éä¸ç´å¢å é度åä¼éæ¸åæ
¢ã\n\nå¦å¤åæµè¯äºå¼¹å¹æ¯è¾å°çè§é¢ï¼ç»ææ¯ 1 2 3 4 5 个 Worker çé度é½å·®ä¸å¤ã\n\næåä¸é è°±å°å³å®ä½¿ç¨ 2 个 Worker è¿è¡è§£æã\n\nä¼åç»æå¦ä¸å¯è¨ï¼ä¸éè¦çå¾
è§£æå®ææè½è¿è¡å
¶ä»æä½ï¼ä¹
318å¯ä»¥ä¸è¾¹ææ¾è§é¢ä¸è¾¹è§£æï¼åºå«åªæ¯ææ¾å°æ²¡è§£æå¥½çå¼¹å¹ä¸ä¼æ¾ç¤ºï¼è§£æå®ææä¼æ¾ç¤ºã"},{"slug":"neteasecloudmusic2rss","title":"NetEaseCloudMusic2RSS â 使ç¨RSS订é
她忬¢çç½æäºé³ä¹","tags":[],"body":"é³ä¹ï¼äººç±»çæ´»ä¸æ°¸æç主é¢ãé³ä¹å¯ä»¥å¾å¤§ç¨åº¦ä¸ä½ç°ä¸ä¸ªäººçå好ãåå³ï¼æ´æ¯ææåéçæ
æä¼ è¾å¨ã\n\nç°å¨å¿«ä½¿ç¨RSS订é
æå欢çç½æäºé³ä¹å§ï¼[https://api.prprpr.me/necm2rss/playlist/35798529](https://api.prprpr.me/necm2rss/playlist/35798529)ï¼è·ç½çº¢ DIYgod å¬ä¸æ ·çé³ä¹ï¼\n\n项ç®åå« NetEaseCloudMusic2RSSï¼å¼æºå¨ [GitHub](https://github.com/DIYgod/NetEaseCloudMusic2RSS)ã\n\nå¦å¤å¯ä»¥ä½¿ç¨ç¸å
³é¡¹ç® [Weibo2RSS](https://github.com/DIYgod/Weibo2RSS) 订é
忬¢çå¾®åå主ï¼[bilibili2RSS](https://github.com/DIYgod/bilibili2RSS) 订é
Bç«UPä¸»ãæ¶è夹ãæå¸è§é¢ãçªå§ãååºçã\n\nRSS å¹²æ¯ï¼"},{"slug":"bas","title":"BAS é«çº§å¼¹å¹","tags":[],"body":"## åå¨åé¢\n\nå¦æä½ å¥½å¥ B ç«çå·¥ä½æä¸æè¶£ï¼æè
ææ¥ B ç«ä¹åé½å¨åä»ä¹ï¼é£ä¹è¿ç¯æç« æè®¸å¯ä»¥è§£çä½ çé¨åçé®ã\n\næ¥ B ç«åï¼é¤äºè´è´£ HTML5 ææ¾å¨çä¸äºæ¨¡åãéæåæ¥å¸¸ç»´æ¤ä»¥å¤ï¼BAS é«çº§å¼¹å¹ç®æ¯æåå¹´æ¥è´è´£å¼åçæå¤§ä¸ä¸ªé¡¹ç®äºã\n\næ¬ææ´çèªä»å¤©å¨å
¬å¸çè¶
æçµç£æ³¢åäº«ï¼æ®è¯´æè¿æ¯æå²ä»¥æ¥å¹´é¾æå°ç讲å¸(=ã»Ïã»=)ï¼ä¹ç®æ¯å¯¹è¿ä¸ªé¡¹ç®çä¸ä¸ªé¶æ®µæ§æ»ç»ã\n\n<!--more-->\n\n## ä»ä¹æ¯ BAS å¼¹å¹\n\nBASï¼å
¨ç§° Bilibili Animation Scriptï¼æ¯æ°ä¸ä»£ bilibili é«çº§å¼¹å¹èæ¬è¯è¨ï¼æ¯ä¸ç§ç¨æ¥æè¿°é«çº§å¼¹å¹æ ·å¼ã交äºåå¨ç»çææ¬ã\n\nBAS 弹广¯ç¨ BAS æè¿°çé«çº§å¼¹å¹ï¼ç±å
ç´ åå¨ç»ç»æï¼å
ç´ åä¸ºææ¬å¯¹è±¡ãäº¤äºæé®ãpath 对象ï¼å¨ç»å为ç®åå¨ç»ã串èå¨ç»ãå¹¶èå¨ç»ã\n\nBAS å¼¹å¹ä¸»è¦é¢ååå¹åçé«ç«¯ç©å®¶ï¼å¯ä»¥ç¨äºåå¹ãç¹æã交äºåºç¨ã游æã纯弹å¹ä½åçåºæ¯ã\n\nç®å Web 端已ç»ä¸çº¿ï¼ç§»å¨ç«¯ä¹åºæ¬å¼åå®æï¼ææå¨æå¹´çæ´»å¨ææå¹´ç¥ä¸è½å¤ç¨å°ã\n\næä»¬åäºå 个è§é¢æ¥ç´è§å±ç¤º BAS å¼¹å¹ï¼\n\n第ä¸ä¸ªæ¯æ¯é
±å¤§ä½¬åçå¼¹å¹ PVï¼[https://www.bilibili.com/video/av257649/](https://www.bilibili.com/video/av257649/)\n\n第äºä¸ªæ¯å¼¹å¹å®ç°ççè¹æï¼[https://www.bilibili.com/video/av18682336/](https://www.bilibili.com/video/av18682336/)\n\n第ä¸ä¸ªæ¯äº¤äºæé®çæ¼ç¤ºï¼[https://www.bilibili.com/video/av16558829/index_3.html#page=3](https://www.bilibili.com/video/av16558829/index_3.html#page=3) ï¼å¦å¤ååå©åå©æè¡æ¦å¨åè¿ç§ä¹æ¯å¾å¥½çåºç¨åºæ¯\n\nåå¹åºç¨æ¹é¢å¯ä»¥å¾å®¹æå®ç°ä¸ä¸ªåå¹æä»¶è½¬ BAS ä¹ç±»çå·¥å
·ï¼ä»åä¼ç»§ç»åè¿æ ·çäºæ
ã\n\n### å ç§é«çº§å¼¹å¹æ¯è¾\n\n#### mode7\n\nå¼¹å¹éè¿çé¢è®¾ç½®ï¼ä¸éè¦ç¼å代ç ï¼ä½¿ç¨ç®åä½åè½æ¯è¾å±éã\n\n\n\n#### mode8\n\nå³ä»£ç å¼¹å¹ï¼åè½é常强大ä½éè¦ç¼å代ç ï¼ä½¿ç¨å¤æãå®å
¨æ§è¾å·®ï¼èä¸åªæ¯æ Flash å¹³å°ã\n\n\n\n#### mode9\n\nå³ BAS å¼¹å¹ï¼æ¯ mode 7 å mode 8 çæä¸æ¹æ¡ã\n\nè· mode 7 ç¸æ¯ï¼mode 9 éè¦ç¼åèæ¬ï¼ä½¿ç¨ç¨å¤æï¼ä½æ¯æäº¤äºãå¾å½¢åæ´å¤æçå¨ç»ï¼åè½è¦å¼ºå¤§å¾å¤ã\n\nè· mode 8 ç¸æ¯ï¼mode 9 ç®åäºè¯æ³ï¼æ¹ç¨å£°æå¼ï¼ä½¿ç¨æ´ç®åï¼æ´å®å
¨ï¼ææ¾å¨è§£æå®ç°ï¼ä¸åæ³èæ¬ä¸ä¼æ¾è¡ï¼ç¨åºå¯æ§ï¼è䏿¯ç´æ¥æä½å¼¹å¹ï¼å¯ä»¥è·¨å¹³å°ã\n\n\n\n## ä½¿ç¨ BAS å¼¹å¹\n\n### åéæé\n\né¦å
æéä¸å¯¹ BAS å¼¹å¹çåéæéæçä¸¥æ ¼çéå¶ï¼è®¾è®¡ä¸ä¸è¬ç¨æ·éè¦å
ç¨ç¡¬å¸è´ä¹°ï¼ç¶åçå¾
UP 主确认ä¹åæå¯ä»¥ä½¿ç¨ï¼åå¹åçæç¹æ®æéçç¨æ·æå¯ä»¥ç´æ¥ä½¿ç¨ï¼ä½ç®ååªå¼æ¾ç»åå¹å使ç¨ï¼åå¹å使ç¨å¹¶å®åä¹ååèèæ©å¤§ä½¿ç¨åºæ¯ã\n\n| | 硬å¸è´ä¹° | UP 主确认 |\n| ------------- | -------- | --------- |\n| ä¸è¬ä¼å | â | â |\n| UP 主 | â | à |\n| VIP | à | â |\n| åå¹å/管çå | à | à |\n\n### åéå
¥å£\n\n1. \n2. \n\næ³¨ææ²¡æåéæéæ¶å
¥å£æ¯éèçï¼è¿æ¶åå¯ä»¥å¨[è¯éªå®¤](https://bilibili.github.io/bas/#/playground)ä¸è¿è¡å°è¯ã\n\n### ç¼åèæ¬\n\nä¸é¢æä»¬æ¥å°è¯ç¼åä¸äºç®åçèæ¬ï¼
318BAS èæ¬é常ç®åï¼å®æ¯ä¸ç§å£°æå¼æè¿°æ§çèæ¬ï¼è¯æ³æç¨ï¼ä¿è¯äºå¯¹è±¡ååæä½åçç¬ç«æ§ã\n\nå°è¯ BAS 弹广ç®åçæ¹æ³æ¯ä½¿ç¨[ææ¡£](https://bilibili.github.io/bas)ä¸çä¾ååè¯éªå®¤ï¼ä½ å¯ä»¥å¨æµè§å¨æ°æ ç¾é¡µä¸æå¼å®ï¼è·çä¾åå°è¯ä¸äºåºç¡ç¨æ³ã\n\nä»¥ææ¬å¯¹è±¡ä¸ºä¾ï¼ä¸ä¸ªç®åç带æ¸éå¨ç»çææ¬å¯¹è±¡æ¯è¿æ ·çï¼\n\n```\ndef text demo {\n content = \"BAS\"\n}\nset demo {\n alpha = 0\n} 5s\n```\n\nè¿æ ·æä»¬å°±æåå建äºä¸æ¡æ¸éç BAS å¼¹å¹ï¼çèµ·æ¥å¾ç®åï¼ä½æ¯ js å¨èååäºå¤§éå·¥ä½ï¼js ä¼å
æ BAS èæ¬è§£ææ js å¯è¯å«ç对象ï¼åºç¨ä¸é»è®¤å±æ§ï¼åæå®æ¸²æå°ææ¾å¨éï¼åæ¶å¼å§å¨ç»ï¼è¿æ¶åå°±å¯ä»¥å¨ææ¾å¨å·¦ä¸è§çå°ä¸ä¸ªæ¸éçç½è²ææ¬ã\n\n#### å®ä½\n\nå®ä½ä¹é常ç®åï¼BAS å¼¹å¹çå®ä½ç±å¼¹å¹éç¹ï¼anchorX anchorYï¼åèå°ä½ç½®ï¼x yï¼å
±åå³å®ãéç¹æ¯å¼¹å¹çä¸å¿ç¹ï¼(0, 0)为弹å¹çå·¦ä¸è§ï¼(1, 1)为弹å¹çå³ä¸è§ã\n\n```\ndef text tl {\n content = \"å·¦ä¸\"\n x = 0\n y = 0\n anchorX = 0\n anchorY = 0\n}\ndef text tr {\n content = \"å³ä¸\"\n x = 100%\n y = 0\n anchorX = 1\n anchorY = 0\n}\ndef text bl {\n content = \"å·¦ä¸\"\n x = 0\n y = 100%\n anchorX = 0\n anchorY = 1\n}\ndef text br {\n content = \"å³ä¸\"\n x = 100%\n y = 100%\n anchorX = 1\n anchorY = 1\n}\ndef text c {\n content = \"ä¸å¿\"\n x = 50%\n y = 50%\n anchorX = 0.5\n anchorY = 0.5\n}\n```\n\n#### å¼¹å¹èå°\n\nå¼¹å¹èå°æ¯å¼¹å¹çç»å¶èå´ï¼å¼¹å¹èå°é»è®¤ä¸ºè§é¢ççå®åºåï¼æ¤å¤ææ¬å¯¹è±¡å¯ä»¥éè¿ parent 屿§æå
¶ä»ææ¬å¯¹è±¡æå®ä¸ºç¶çº§å
ç´ ï¼ä»¥ç¶çº§å
ç´ ä½ä¸ºèå°è¿è¡ç»å¶ï¼ç¶çº§å
ç´ ä¼å½±åå级å
ç´ çå®ä½ã缩æ¾çã\n\n```\ndef text a {\n content = \"â¡\"\n fontSize = 40%\n x = 0\n y = 0\n color = 0xffff00\n}\ndef text b {\n parent = \"a\"\n content = \"â¡\"\n fontSize = 20%\n x = 0\n y = 0\n color = 0xff00ff\n}\nset a {\n x = 50%\n y = 0\n} 2s\nthen set a {} 3s\nset b {\n y = 50%\n} 3s\nthen set b {} 3s\n```\n\n#### çå½å¨æ\n\nçå½å¨ææ¯ BAS çå¦ä¸ä¸ªéè¦æ¦å¿µï¼çå½å¨ææ¯å¼¹å¹åæ´»çæ¶é´ï¼æ²¡ææå® duration 屿§æ¶ï¼å
ç´ çå½å¨æä¸ºå¨ç»æ»æ¶é´ï¼æ²¡æå¨ç»æ¶é»è®¤ä¸º4sãçå½å¨æç»æåå
ç´ å°±ä¼å¨èå°ä¸è¢«æ¸
é¤ã\n\n```\ndef text a {\n content = \"BAS\"\n}\n```\n\n```\ndef text a {\n content = \"BAS\"\n duration = 10s\n}\n```\n\n```\ndef text a {\n content = \"BAS\"\n}\nset a {} 10s\n```\n\n#### èªéåº\n\nä½ç½®ååå·ä¸ºç¾åæ¯å¼æ¶å¯ä»¥æ ¹æ®èå°å¤§å°èªéåºï¼å¯ä»¥å®ç°å个平å°ãä¸åææ¾å¨å¤§å°æ¶å¼¹å¹çä¸è´æ§ææï¼ä½¿å¼¹å¹å¨ä¸åæ
åµä¸ç¸å¯¹äºè§é¢çä½ç½®å大尿¯åºå®çï¼ä½ç½®åæ 为å½åèå°å®½é« _ ç¾åæ¯å¼ pxï¼åå·ä¸ºå½åèå°å®½åº¦ _ ç¾åæ¯å¼ pxã\n\n```\ndef text c {\n content = \"BAS\"\n x = 50%\n y = 50%\n anchorX = 0.5\n anchorY = 0.5\n fontSize = 5%\n}\n```\n\nè¿æ¶åæ¹åææ¾å¨å¤§å°ï¼å¼¹å¹å¤§å°ä¹ä¼è·éææ¾å¨æ¹åï¼ç»ææ¯å®ç¸å¯¹äºè§é¢çä½ç½®å大尿¯åºå®çã\n\n#### 交äº\n\nç®ååªæäº¤äºæé®æ¯æä¸äºç®åçç¹å»ææï¼è½¬è·³å°è§é¢æä¸ªæ¶é´ç¹ãæ°çªå£æå¼å
¶ä»è§é¢çã\n\nseek æé®ï¼\n\n```\ndef button c {\n text = \"跳转å°30åé\"\n x = 35%\n y = 45%\n fontSize = 5%\n textColor = 0xffffff\n fillColor = 0x80D8FF\n target = seek {\n time = 30m\n }\n}\n```\n\nav 跳转æé®ï¼\n\n```\ndef button c {\n text = \"av1714157\"\n x = 35%\n y = 45%\n fontSize = 5%\n textColor = 0xffffff\n fillColor = 0x80D8FF\n duration = 2s\n target = av {\n av = 1714157\n page = 1\n time = 20.5s500ms\n }\n}\n```\n\nbangumi 跳转æé®ï¼\n\n```\ndef button c {\n text = \"第22è¯ æ¥é£\"\n x = 35%\n y = 45%\n fontSize = 5%\n textColor = 0xffffff\n fillColor = 0x80D8FF\n duration = 2s\n target = bangumi {\n seasonId = 1699\n episodeId = 8004
3181\n time = 1m30s\n }\n}\n```\n\n#### å¾å½¢\n\nå¯ä»¥ä½¿ç¨ path 对象ç»å¶ svg å¾å½¢ï¼d 屿§å¯¹åº svg çè·¯å¾ã\n\n```\ndef path p {\n d = \"M30.828,30.422 18.997,16.260 Z\"\n viewBox=\"0 0 32 34\"\n x = 45%\n y = 45%\n scale = 3\n borderWidth = 1\n borderColor = 0xffffff\n borderAlpha = 0.8\n fillColor = 0x00a1d6\n fillAlpha = 0.8\n}\n```\n\n#### å¨ç»\n\nå¨ç»å为ç®åå¨ç»ã串èå¨ç»ãå¹¶èå¨ç»ã\n\nå¼¹å¹ç屿§æå¯æ¸åãä¸å¯æ¸åãä¸å¯åä¹åï¼åªæå¯æ¸å屿§æææ£å¸¸çå¨ç»ææï¼å¯¹éæ¸å屿§è®¾ç½®æ°å¼ä¼ç«å³çæï¼å¯¹ä¸å¯åç屿§è®¾å¼å°è¢«å¿½ç¥ãåå䏿ä¸å±æ§å¨ä¸ä¸ª set è¯å¥ä¸æå¤åªè½åºç°ä¸æ¬¡ï¼å¨å®ç°ä¸ï¼å¦æå¤æ¬¡åºç°ï¼ä»¥æå䏿¬¡ä¸ºåã\n\n串èå¨ç»ä»¥å
å顺åºè¿è¡ã\n\n```\ndef text a {\n content = \"BAS\"\n}\nset a {\n color = 0x000000\n} 1s\nthen set a {\n alpha = 0\n} 1s\n```\n\nå¹¶èå¨ç»åæ¶è¿è¡ï¼å¹¶èç¸å屿§æ¶ï¼ä»¥æå䏿¬¡ä¸ºåï¼ä¹åå²çªçå¨ç»ä¼è¢«å¿½ç¥ï¼ç±äºææ¯éå¶ï¼x y rotateX rotateY rotateZ scale è§ä¸ºç¸å屿§ã\n\n```\ndef text a {\n content = \"BAS\"\n}\nset a {\n color = 0x000000\n}
318 1s\nset a {\n alpha = 0\n} 1s\n```\n\n## BAS å¼¹å¹çå端å®ç°\n\nä» BAS èæ¬å°æ¸²æå¨æµè§å¨ç DOM å
ç´ ä¸»è¦æä»¥ä¸æ¥éª¤ï¼\n\n1. å° BAS èæ¬è§£ææ js 对象ï¼[https://github.com/aristotle9/as3cc](https://github.com/aristotle9/as3cc)ï¼\n2. åºç¨é»è®¤å¼ã计ç®ç¾åæ¯å¼\n3. çæ§çå½å¨æ\n4. è§£å³å±æ§å²çª\n5. ç»å¶å
ç´ ãåºç¨æ ·å¼åå¨ç»\n6. ç»å®äº¤äºäºä»¶\n\n### å®ä½\n\nå®ä½ç± BAS èæ¬çéç¹ï¼anchorX anchorYï¼åä½ç½®ï¼x yï¼å
±åå³å®ï¼å®ç°ä¸ä½¿ç¨ä¸¤ä¸ªåµå¥ç DOM å
ç´ ï¼å¤é¨å
ç´ å®ä½èå°ä½ç½®ï¼å
é¨å
ç´ å®ä½å¼¹å¹éç¹ï¼æ¯å¦ä¸ä¸ªå±
ä¸çææ¬å¯¹è±¡ï¼\n\n```\ndef text c {\n content = \"BAS\"\n x = 50%\n y = 50%\n anchorX = 0.5\n anchorY = 0.5\n}\n```\n\n渲æåºç DOM ç»æå¤§æ¦æ¯è¿æ ·ï¼\n\n```html\n<div style=\"transform:translate((èå°å®½åº¦*50%)px, (èå°é«åº¦*50%)px);\">\n <div style=\"transform:translate(-50%,-50%);\">BASå¼¹å¹</div>\n</div>\n```\n\n### å¨ç»\n\nå¨ç»ä¸èèå°æµè§å¨å
¼å®¹æ§åæç¨æ§ï¼CSS3 ç animation æ¯æä½³çéæ©ï¼å
¶ä¸æ¶å屿§æï¼\n\n| 屿§ | æè¿° |\n| :------------------------ | -------------------------- |\n| @keyframes | å®ä¹å¨ç» |\n| animation-name | å¯¹åº @keyframes å¨ç»çåç§° |\n| animation-duration | å¨ç»å®æä¸ä¸ªå¨æçæ¶é´ |\n| animation-play-state | å¨ç»è¿è¡æè
æå |\n| animation-timing-function | å¨ç»çé度æ²çº¿ |\n\n#### ç®åå¨ç»\n\n沿ç¨ä¸é¢çä¾åï¼\n\n```\ndef text demo {\n content = \"BAS\"\n}
318\nset demo {\n alpha = 0\n} 5s\n```\n\nè¿æ ·ä¸æ¡ BAS èæ¬æ¸²æåºç DOM ç»æå¤§æ¦æ¯è¿æ ·ï¼\n\n```html\n<style>\n @keyframes a1 {\n 100% {\n opacity: 0;\n }\n }\n</style>\n<div style=\"animation-name:a1;animation-duration:5s;opacity:1;\">BAS</div>\n```\n\nkeyframes å®ä¹å¨ç»å
³é®å¸§ï¼å¨ç»ç»ææ¶éæåº¦ä¸ºé¶ï¼animation-duration 对åºå¨ç»çæ¶é´ 5sã\n\n#### å¹¶èå¨ç»\n\nå®ä¹å¤ä¸ªkeyframeså®ç°å¤ä¸ªå¨ç»åæ¶è¿è¡ã\n\n```\ndef text a {\n content = \"BAS\"\n}\nset a {\n color = 0x000000\n} 1s\nset a {\n alpha = 0\n} 1s\n```\n\n```html\n<style>\n @keyframes a1 {\n 100% {\n color: #000000;\n }\n }\n @keyframes a2 {\n 100% {\n opacity: 0;\n }\n }\n</style>\n<div\n style=\"animation-name:a1,a2;animation-duration:1s,1s;opacity:1;color:#ffffff;\"\n>\n BAS\n</div>\n```\n\n#### 串èå¨ç»\n\nä½¿ç¨ animation-delay éå¼ä¸åå¨ç»å¼å§çæ¶é´ï¼å®ç°ä¸²èçææã\n\n```\ndef text a {\n content = \"BAS\"\n}\nset a {\n color = 0x000000\n}
318 1s\nthen set a {\n alpha = 0\n} 1s\n```\n\n```html\n<style>\n @keyframes a1 {\n 100% {\n color: #000000;\n }\n }\n @keyframes a2 {\n 0% {\n color: #000000;\n }\n 100% {\n color: #000000;\n opacity: 0;\n }\n }\n</style>\n<div\n style=\"animation-name:a1,a2;animation-duration:1s,1s;animation-delay:0s,1s;opacity:1;color:#ffffff;\"\n>\n BAS\n</div>\n```\n\n### ç¶ææ§å¶\n\n#### å¼å§\n\nanimation-play-state: running\n\n#### æå\n\nanimation-play-state: paused\n\n#### ä¸é´ç¶æ\n\n设置 animation-delay 为è´å¼å°±å¯ä»¥å®ç°ä»æä¸ªä¸é´ç¶æå¼å§å¨ç»ã\n\næ¯å¦å¼¹å¹ççå½å¨æå¯¹åºè§é¢ç 1s å° 5sï¼è§é¢è·³è½¬å° 4s æ¶ï¼éè¦è®¾ç½®å¼¹å¹ animation-delay 屿§ä¸º -1sã\n\n#### ç»æ\n\nçå½å¨æç»æéè¦åæ¶æ¸
é¤å
ç´ ï¼åçæ¯ animation å¨ç»ç»æä¼è§¦å animationend äºä»¶ï¼è¯¥äºä»¶è§¦åæ¶æ¸
餿å
ç´ å³å¯ãå
ç´ æ²¡æå¨ç»æ¶éè¦æå®ä¸ä¸ªç©ºå¨ç»ã\n\n```html\n<style>\n @keyframes a1 {\n 100% {\n }\n }\n</style>\n```\n\nEnd."},{"slug":"best-players-in-hexo","title":"å¯è½æ¯ç®åæå¥½ç¨ç两个 Hexo ææ¾å¨æä»¶","tags":[],"body":"æå®å¨ä¹ä¸æ¯è°¦èï¼è¿~~å¯è½~~æ¯ç®åæå¥½ç¨ç两个 Hexo ææ¾å¨æä»¶ï¼æè°¢æä»¶ä½è
ï¼ç»å¤§ä½¬ä»¬é女è£
\næ¬æåªä½ä¸ºæ¼ç¤ºï¼ä½¿ç¨æ¹æ³å issue è¯·ç§»æ¥ GitHub\n\n<!--more-->\n\n```sh\nnpm install hexo-tag-aplayer --save\n```\n\nHexo ç [APlayer](https://github.com/MoePlayer/APlayer) æ ç¾æä»¶ï¼ç± [@grzhan](https://github.com/grzhan) ç»´æ¤\n\n{% raw %}\n\n<div class=\"aplayer\" id=\"aplayer1\"></div>\n
318<script>\n$(function () {\n var ap = new APlayer({\n element: document.getElementById('aplayer1'),\n showlrc: 3,\n theme: '#ad7a86',\n music: [\n {\n title: 'ãã£ã¡ã
ï½ã¾éæ¥!',\n author: '䏿£®ä¸âãããé¨',\n url: 'https://cdn1.diygod.me/yuruyuri.mp3',\n pic: 'https://cdn1.diygod.me/yuruyuri.jpg',\n lrc: 'https://cdn1.diygod.me/yuruyuri.lrc'\n },\n {\n title: 'secret base~åãããããã®~',\n author: 'è
éæè¡£',\n url: 'https://cdn1.diygod.me/secretbase.mp3',\n pic: 'https://cdn1.diygod.me/secretbase.jpg',\n lrc: 'https://cdn1.diygod.me/secretbase.lrc'\n },\n {\n title: 'åã¬ï¼éªæè±',\n author: 'å°åå¯',\n url: 'https://cdn1.diygod.me/snowmoonflowers.mp3',\n pic: 'https://cdn1.diygod.me/snowmoonflowers.jpg',\n lrc: 'https://cdn1.diygod.me/snowmoonflowers.lrc'\n }\n ]\n });\n window.aplayers || (window.aplayers = []);\n window.aplayers.push(ap);\n});\n<\/script>\n{% endraw %}\n\n```sh\nnpm install hexo-tag-dplayer --save\n```\n\nHexo ç [DPlayer](https://github.com/MoePlayer/DPlayer) æ ç¾æä»¶ï¼ç± [@Myer921](https://github.com/Myer921) [@dixyes](https://github.com/dixyes) ç»´æ¤\n\n{% raw %}\n\n<div class=\"dplayer\" id=\"dplayer1\"></div>\n
318<script>\n$(function () {\n var dp = new DPlayer({\n container: document.getElementById('dplayer1'),\n video:{\n url: 'https://cdn1.diygod.me/hikarunara.mp4',\n pic: 'https://cdn1.diygod.me/hikarunara.png',\n thumbnails: 'https://cdn1.diygod.me/hikarunara_thumbnails.jpg'\n },\n danmaku:{\n id: 'diygodme1',\n api: 'https://api.diygod.me/dplayer/'\n }\n });\n window.dplayers || (window.dplayers = []);\n window.dplayers.push(dp);\n});\n<\/script>\n{% endraw %}"},{"slug":"new-blog","title":"åäºä¸ç¹å¾®å°çæ¹å¨","tags":[],"body":"æ°çå¼å§ï¼åªåäºä¸ç¹å¾®å°çæ¹å¨\n\n### åå\n\nä» www.anotherhome.net æ¢æäº diygod.me\nanotherhome.net èµ·æºäºé«ä¸æ¯è¾å欢çä¸é¨çªãAnotherãï¼å¹´ä»£æäºä¹
è¿ï¼ç°å¨å§æ
é½å·²ç»è®°ä¸æ¸
äº\n\n<!--more-->\n\n### å客ç¨åº\n\nä» WordPress æ¢å°äº Hexo\nHexo æ¯åºäº Node.js çéæåå®¢æ¡æ¶ï¼ä½ä¸ºä¸åä¸ä¼ php ç弱鸡å端ï¼è¿æ¯ Hexo ç¨èµ·æ¥æ´æ¹ä¾¿\nç°å¨å客æç®¡å¨ GitHubï¼ç¨åæäºä½ CDNï¼ä¸ç¨åèªå·±ç»´æ¤æå¡å¨äº\n\n### 主é¢\n\næ ·å¼åºæ¬ä¿æäºä¸è´\nåºäº [Next](https://github.com/iissnan/hexo-theme-next) éæäºä¹å使ç¨ç WordPress 主é¢ï¼åå [Sagiri](https://github.com/DIYgod/hexo-theme-sagiri)ï¼æç主é¢è·çº±é¾ä¸æ ·å¯ç±\né¤äºæ´å¯ç±ï¼åå¨å主é¢åºç¡ä¸å äºä½¿ç¨ Webpack æå
js çæ¹è¿å pjax çå¤ç\n\n主é¢è½ç¶å¼æºäºï¼ä½æ¯å±äºèªç¨æ§è´¨ç项ç®ï¼å¾å¤åºè¯¥åæå¯å®å¶åçå°æ¹é½æ²¡æåï¼ä»å¼æºé¡¹ç®çè§è§æ¥çåå¾å¹¶ä¸å¥½ï¼èæç®åå对å¶ä½ä¸»é¢å¹¶æ²¡æå¤ªé«çå
´è´ï¼æä»¥ä½¿ç¨ä¹åè¿è¯·æ
éèè\n\n### å客å\n\næ¢ç¶åå齿¢äºï¼å客åå°±ä¹ä» Anotherhome æ¢æäº Hi, DIYgod\n\n### è¯è®º\n\næ²¡äº WordPress çåçè¯è®ºï¼è¿ä¸ªè¿æ¯æºå¤´ç¼çï¼çº ç»äºå¾ä¹
æåéäº disqusï¼ç¶åæä¹åçè¯è®ºé½è¿ç§»è¿æ¥äº\næ³è¦æ£å¸¸ä½¿ç¨éè¦é对 disq.us | disquscdn.com | disqus.com å¯ç¨ä»£ç\n\n### æç« \n\nå¾å¤èæç« å·²ç»å¤±å»äºæä¹ï¼å°±å äºä¸å¤§å\n\n### åé¾\n\néè¦éæ°ç³è¯·\n叿å
ååé¾ï¼ååä¸ä¸åæ¥åä¸å¤ªçæç人\n\n### æ§åæ¡£\n\nhttps://archive.anotherhome.net\nåæ¡£å
³éäºææè¯è®ºï¼å¯è½ä¼éæ¶ææ"},{"slug":"hello-world","title":"Hello World","tags":[],"body":"Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).\n\n## Quick Start\n\n### Create a new post\n\n```bash\n$ hexo new \"My New Post\"\n```\n\nMore info: [Writing](https://hexo.io/docs/writing.html)\n\n<!--more-->\n\n### Run server\n\n```bash\n$ hexo server\n```\n\nMore info: [Server](https://hexo.io/docs/server.html)\n\n### Generate static files\n\n```bash\n$ hexo generate\n```\n\nMore info: [Generating](https://hexo.io/docs/generating.html)\n\n### Deploy to remote sites\n\n```bash\n$ hexo deploy\n```\n\nMore info: [Deployment](https://hexo.io/docs/deployment.html)"},{"slug":"3264","title":"bilibili2RSS â ä½¿ç¨ RSS 订é
bilibili up主åçªå§","tags":[],"body":"ä½ä¸ºä¸ç§è¿æ°ææ¯ï¼æä¾ RSS 订é
æºçç½ç«è¶æ¥è¶å°ï¼æ¯ä¸ªç½ç«é½æ³æç¨æ·å°½å¯è½é¿æ¶é´å°ç»å¨èªå·±é£éï¼è RSS å¯è½ä¼é æè´é¢ææ\n\nä½å¨è¿ä¸ªå
容çç¸æ¶ä»£ï¼åªè¦æè¯å°äºãæè¢«ä¿¡æ¯æç»æ¶ãè¿ä¸ªé®é¢åï¼ç¨æ·èªç¶ä¼æ³è¦ä¸ç§æ´é«çº§çèåä¿¡æ¯åå¨ææ´æ°è§£å³æ¹æ¡ï¼æ¯å¦ RSS\n\nè¿éæä¾äºä½¿ç¨ RSS 订é
bilibili up主åçªå§çè§£å³æ¹æ¡\n\n订é
up主ï¼[https://api.prprpr.me/bilibili2rss/user/6997378](https://api.prprpr.me/bilibili2rss/user/6997378)\n\n订é
çªå§ï¼[https://api.prprpr.me/bilibili2rss/bangumi/6446](https://api.prprpr.me/bilibili2rss/bangumi/6446)\n\n订é
ååºï¼[https://api.prprpr.me/bilibili2rss/partion/33](https://api.prprpr.me/bilibili2rss/partion/33)\n\n项ç®åå« bilibili2RSSï¼å¼æºå¨ [GitHub](https://github.com/DIYgod/bilibili2RSS)\n\nå¦å¤å¯ä»¥ä½¿ç¨ç¸å
³é¡¹ç® [Weibo2RSS](https://github.com/DIYgod/Weibo2RSS) 订é
忬¢çå¾®åå主\n\nEnjoy!"},{"slug":"3207","title":"æä»¬èµ°è¿ç","tags":[],"body":"<style>\n #love-map {\n width: 100%;\n }\n\n #love-time {\n text-align: center;\n margin-bottom: 20px;\n font-size: 14px;\n color: #EF9A9A;\n display: none;\n }\n</style>\n\n<div id=\"love-time\">è¿æ¯æä»¬å
±å度è¿ç第<span></span></div>\n<div id=\"love-map\"></div>\n\nä¸é¢æ¯ä¸äºæä»¬ä¸èµ·å»è¿çå°æ¹ï¼å
¶ä¸æä¸ä¸ªå°ç¹æ çæ¯ 1996 å¹´ï¼è¿å¹¶ä¸æ¯æåéäºï¼é£å¹´æ 1 å²ï¼æä»¬æ¯é»å±
ï¼éæ¾çæ¯æä»¬å¯¹é£å 年齿²¡æä»»ä½è®°å¿äº<!--more-->\n\n \n\nä¹å䏿 13 å¹´ï¼åä¸é«ä¸ï¼æå®¶æ¬å°äºé«ä¸æè¾¹çä¸ä¸ªå°åºï¼ä¸å¤©æä¸æå¦å
´å¥å°è·æè¯´ï¼ä½ çææä¸æ£æ¥éå°äºè°ï¼\n\næè¯å®æ¯çä¸åºæ¥çï¼å 为æä»ä¹é½ä¸è®°å¾\n\nå忥åç°å¥¹è·æä¸ä¸ªçï¼å°±è¿æ ·æ
äºç»§ç»äº\n\n飿¶åæ¯å¤©æ¾å¦ä¸èµ·åå®¶ï¼å
³ç³»å¾äº²å¯ï¼å®¶é¿èå¸é½å¾ç´§å¼ ï¼ä»¥ä¸ºæä»¬å¨æ©æï¼ä½æä¸ç´å¨æ²è¿·å¦ä¹ ï¼å®é
ä¸ä»ä¹é½æ²¡åçï¼æ¾å¦è·¯ä¸èçæå¤ç乿¯å课ï¼ç°å¨æ³èµ·æ¥çè³æäºéæ¾\n\n \n\nä½æè¶£ççµéç»ä¼ç¸éï¼5 年以åï¼è¿ä¸ªäººå被æè¯±éªæäºå¥³ç¥¨ï¼æä»¬çæ
äºè¿ä¼ç»§ç»ä¸å»\n\n \n\nåæ³ä¸ä¸ï¼è¿äºæ
èå±
ç¶è·ä½ çååæä¸äºç¥ä¼¼\n\nï¼æ¯ä¸ä¼æ¾ç
§ççï¼é¿ç¸åæ§æ ¼å¯ä»¥èè¡¥æçå马尾çå²çº³äº¬å\n\n
318<script>\n $('#love-time').show();\n function love_time() {\n window.setTimeout(function () {\n love_time();\n }, 1000);\n var BirthDay = new Date(\"5/11/2017 00:00:00\");\n var today = new Date();\n var timeold = (today.getTime() - BirthDay.getTime());\n var msPerDay = 24 * 60 * 60 * 1000;\n var e_daysold = timeold / msPerDay;\n var daysold = Math.floor(e_daysold);\n var e_hrsold = (e_daysold - daysold) * 24;\n var hrsold = Math.floor(e_hrsold);\n var e_minsold = (e_hrsold - hrsold) * 60;\n var minsold = Math.floor((e_hrsold - hrsold) * 60);\n var seconds = Math.floor((e_minsold - minsold) * 60);\n $('#love-time span').html(daysold + \"天\" + hrsold + \"å°æ¶\" + minsold + \"å\" + seconds + \"ç§\");\n }\n love_time();\n function myEcharts() {\n $('#love-map').height($('#love-map').width() * 0.8)\n var myChart = echarts.init(document.getElementById(\"love-map\"));\n var app = {};\n option = null;\n var data = [\n {name: '临æ²', value: '1996'},\n {name: 'æ¦æ±', value: '2015.12'},\n {name: 'æå·', value: '2017.01'},\n {name: '䏿µ·', value: '2017.02'},\n {name: 'ææ', value: '2017.05'},\n {name: '大ç', value: '2017.05'},\n {name: 'æµå', value: '2017.05'},\n {name: 'å京', value: '2020.10'}\n ];\n var geoCoordMap = {\n '临æ²':[118.35,35.05],\n 'æ¦æ±':[114.31,30.52],\n 'æå·':[120.19,30.26],\n '䏿µ·':[121.48,31.22],\n 'ææ':[102.73,25.04],\n '大ç':[100.225668,25.589449],\n 'æµå':[117,36.65],\n 'å京':[118.78,32.04]\n };
318\n var convertData = function (data) {\n var res = [];\n for (var i = 0; i < data.length; i++) {\n var geoCoord = geoCoordMap[data[i].name];\n if (geoCoord) {\n res.push({\n name: data[i].name,\n value: geoCoord.concat(data[i].value)\n });\n }\n }\n return res;\n };\n option = {\n backgroundColor: '#A7B1CA',\n geo: {\n map: 'china',\n label: {\n emphasis: {\n show: false\n }\n },\n roam: false,\n itemStyle: {\n normal: {\n areaColor: '#fff',\n borderColor: '#C9CED9'\n },\n emphasis: {\n areaColor: '#DFE0E3'\n }\n }\n },\n tooltip: {\n trigger: 'item',\n formatter: function (params) {\n return params.name + ' - ' + params.value[2];\n }\n },\n series : [\n {\n type: 'effectScatter',\n coordinateSystem: 'geo',\n data: convertData(data),\n symbolSize: 8,\n showEffectOn: 'render',\n rippleEffect: {\n brushType: 'stroke'\n },\n hoverAnimation: true,\n label: {\n normal: {\n formatter: '{b}',\n position: 'right',\n fontSize: 14,\n show: true\n }\n },\n itemStyle: {\n normal: {\n color: '#FD8888',\n // shadowBlur: 10,\n // shadowColor: '#333'\n }\n }\n }\n ]\n };\n myChart.setOption(option, true);\n }\n if (!window.echarts) {\n $.getScript('https://cdn.bootcss.com/echarts/3.8.5/echarts.min.js', function () {\n $.getScript('https://cdn.jsdelivr.net/npm/[email protected]/map/js/china.js', function () {\n myEcharts();\n });\n });\n }\n else {\n myEcharts();\n }\n<\/script>"},{"slug":"3116","title":"让ååæºåæ¬¡ä¼å¤§","tags":[],"body":"<style>\n .gugu-print {\n display: none;\n margin-top: 20px;\n }\n .gugu-btn {\n cursor: pointer;\n border: 1px solid #eee;\n display: inline-block;\n padding: 5px 10px;\n background: #fff;\n border-radius: 4px;\n }\n .gugu-login-btn-wrap {\n text-align: center;\n }\n .gugu-login-btn {\n cursor: pointer;\n }\n .gugu-user {\n display: none;\n text-align: center;\n }\n .gugu-avatar {\n display: inline-block;\n height: 50px;\n width: 50px;\n background-size: contain;\n border-radius: 50%;\n }\n .gugu-info {\n padding-top: 25px;\n font-weight: bold;\n line-height: 25px;\n }\n .gugu-name {\n font-size: 18px;\n }\n .gugu-textarea {\n width: 100%;\n height: 100px;\n font-size: 14px;\n padding: 10px;\n box-sizing: border-box;\n }\n .gugu-input {\n width: 100%;\n font-size: 14px;\n padding: 10px;\n box-sizing: border-box;\n }\n</style>\n\nååæºç宿¹åéå¹³å°é常å人类ï¼å鿥壿²¡æä»»ä½é¿åº¦åé¢çéå¶ï¼åå¯ä»¥å¿ååé...æä»¥ç»å¸¸è¢«äººå·åå¾ä¿¡æ¯...群éç»å¸¸æäººåé¦ä½å®æ¹å°±æ¯ä¸æ¹...好å¨ååæºæ¯å¼åæ¥å£ç\n\nå°±è¿æ ·æå°è£
äºä¸ä¸ªå¢å¼ºç
318 APIï¼å¼æºå¨ GitHubï¼ [https://github.com/DIYgod/gugu-node-api](https://github.com/DIYgod/gugu-node-api)\n\nç¹æ§ï¼å¼ºå¶å¾®åç»å½ãä¸å
许å¿åãé¿åº¦éå¶ãåéé¢çéå¶ãè·¨åéå¶ãé»ååæºå¶\n\n好äºï¼ç¹å»ä¸é¢æé®ï¼ç»å½åç»§ç»è·æè¡¨ç½å§ï¼\n\n<div class=\"gugu-login-btn-wrap\"><img class=\"no-fancybox gugu-login-btn\" src=\"./attachments/bafkreigpucjepfxkw4valfdlbgedeu6qu6voe4s2sq5paahldwxby3bg3y.png\"></div>\n<div class=\"gugu-user\">\n <div class=\"gugu-info\">\n <div class=\"gugu-avatar\"></div>\n <div class=\"gugu-name\"></div>\n </div>\n <div class=\"gugu-btn gugu-logout-btn\">éåºç»å½</div>\n</div>\n<div class=\"gugu-print\">\n <textarea class=\"gugu-textarea\" placeholder=\"è¾å
¥ææ¬å
容\"></textarea>\n <div class=\"gugu-btn gugu-send-btn-text\">ååæå</div>\n <input type=\"text\" class=\"gugu-input\" placeholder=\"è¾å
¥å¾çå°å\">\n <div class=\"gugu-btn gugu-send-btn-pic\">ååå¾ç</div>\n</div>\n
318<script>\nfunction gugushow (data) {\n $.ajax({\n url: 'https://api.anotherhome.net/gugu/account',\n xhrFields: {\n withCredentials: true\n },\n success: function (data) {\n if (data) {\n $('.gugu-avatar').css('background-image', 'url(' + data._json.avatar_large.replace('http', 'https') + ')');\n $('.gugu-name').html('Hi, ' + data.displayName);\n $('.gugu-user').show();\n $('.gugu-print').show();\n $('.gugu-login-btn-wrap').hide();\n }\n }\n });\n}\ngugushow();\n$('.gugu-login-btn').click(function () {\n window.location.href = 'https://api.anotherhome.net/gugu/login';\n});\n$('.gugu-logout-btn').click(function () {\n window.location.href = 'https://api.anotherhome.net/gugu/logout';\n});\n$('.gugu-send-btn-text').click(function () {\n if ($('.gugu-textarea').val()) {\n $.ajax({\n url: 'https://api.anotherhome.net/gugu/print',\n type: 'post',\n data: JSON.stringify({\n type: '1',\n content: $('.gugu-textarea').val()\n }),\n xhrFields: {\n withCredentials: true\n }
318,\n success: function (data) {\n if (data) {\n if (data.code && data.msg) {\n notie('error', data.msg);\n }\n else if (data.msg) {\n notie('success', data.msg);\n }\n else {\n notie('error', 'æå°å¤±è´¥');\n }\n }\n else {\n notie('error', 'æå°å¤±è´¥');\n }\n },\n error: function () {\n notie('error', 'æå°å¤±è´¥');\n }\n });\n }\n});\n$('.gugu-send-btn-pic').click(function () {\n $.ajax({\n url: 'https://api.anotherhome.net/gugu/print',\n type: 'post',\n data: JSON.stringify({\n type: '2',\n content: $('.gugu-input').val()\n }),\n xhrFields: {\n withCredentials: true\n },\n success: function (data) {\n if (data) {\n if (data.code && data.msg) {\n notie('error', data.msg);\n }\n else if (data.msg) {\n notie('success', data.msg);\n }\n else {\n notie('error', 'æå°å¤±è´¥');\n }\n }\n else {\n notie('error', 'æå°å¤±è´¥');\n }\n },\n error: function () {\n notie('error', 'æå°å¤±è´¥');\n }\n });\n});\n<\/script>"},{"slug":"2978","title":"ç°å¨å¯ä»¥ç»ç½çº¢åå°çº¸æ¡è¡¨ç½äºï¼","tags":[],"body":"æè¿è·æè¡¨ç½ç人太å¤äºï¼æä»¥æä¹°äºä¸ä¸ª[ååæº](http://www.memobird.cn)ï¼ç°å¨è®¿é® [让ååæºåæ¬¡ä¼å¤§](/make-gugu-great-again) 就å¯ä»¥å¾æ¹ä¾¿å°åå°çº¸æ¡è·æè¡¨ç½äºã\n\næ¯å¦\n\n\n\nå°±åå°æ¶åå·å·å¨è¯¾æ¡é´ä¼ éçå°çº¸æ¡ä¸æ ·æ¸©æã\n\n \n\n餿¤ä¹å¤ï¼ååæºè¿å¯ä»¥åå¾å¤æè¶£çäºæ
ï¼[MEMOBIRD ååæºæåªäºæè¶£çç©æ³ï¼](https://www.zhihu.com/question/39529878)\n\nåå ä¸ååæºæ¯[弿¾API](http://open.memobird.cn/)çï¼åå¯ä»¥è¿æ¥ [IFTTT](https://ifttt.com/)ï¼å¯¹ä¸ä¸ªå¼åè
æ¥è¯´å¯ä»¥åçäºæ
å°±æ´å¤äºï¼æ¯å¦é
å [Weibo2RSS](https://github.com/DIYgod/Weibo2RSS) å IFTTT è¿å¯ä»¥ç¨æ¥å®æ¶æå°å欢çå°å§å§æ°åçå¾®åã\n\n \n\nä»å¹´çéæä¿¡çæ´»å¨ä¹æç®ç¨è¿ä¸ªæ¥æ¥åï¼è¯¶å¿å¿ã\n\n[hermit autoplay=\"false\" mode=\"circulation\"]netease_songlist#:28445467[/hermit]\n\n以ä¸ï¼ç»ææå°å®ªæ³ï¼æ¯é误çç¨æ³ï¼\n\n"},{"slug":"2954","title":"Service Workers å®ç°ç½ç«å éå离线ç¼å","tags":[],"body":"æè¿çå°äº Service Workers è¿ä¸ªä¸è¥¿ï¼å®å¯ä»¥æ ¹æ®é
ç½®ä¸ºç¨æ·ç¼åç½ç«éæä¸å¨æèµæºï¼æªè·ç¨æ·çææç½ç»è¯·æ±ï¼æ ¹æ®ç¼åé
ç½®æ¥å³å®æ¯ä»ç¼åè¿æ¯ç½ç»è·åç¸åºèµæºï¼ä»èå¯ä»¥æå¤§æé«ç½é¡µçå è½½é度ãä¼ç¹æå¯å®å¶æ§é«ãä¸éè¦æå¡ç«¯æ¯æãæææ¾èã\n\næåçææå°±æ¯å½ä½ ç¬¬äºæ¬¡è®¿é®æçç½ç«æ¶åªä¼å 载大约80k çèµæºï¼é¤å» AdSense çæ
åµä¸ï¼ï¼è¿å
¶ä¸å
æ¬äºææå¾çåé³é¢è§é¢ï¼è¿ 80k ä¸»è¦æ¯ HTML åæä½¿ç¨ç [DPlayer](https://github.com/DIYgod/DPlayer) ç APIã\n\n\n\n\n\nçè³å¯ä»¥å¨æå¼ç½ç»æ¶è®¿é®ï¼åªæç½çº¿è¯è¯å§ï¼ï¼\n\n\n\n<!--more-->å½ç¶å±éæ§ä¹æ¯æçï¼\n\nåªæ¯æ HTTPSï¼å 为å¯ä»¥æªè·ç¨æ·çç½ç»è¯·æ±ï¼éè¦å¨ä¸ä¸ªå®å
¨çç¯å¢ã\n\nå
¼å®¹æ§ä¸å¤ªå¥½ï¼[ç¹å»æ¥çå
¼å®¹æ§æ¥å](http://caniuse.com/#search=service%20worker)ï¼ç®ååªæ Chrome Firefox Opera åé¨å Android æµè§å¨ æ¯æã\n\n\n\nä½¿ç¨æ¹æ³ç½ä¸æå¾å¤æç¨ï¼è¿éä¸èµè¿°äºï¼æ¨èè¿å ç¯å§ï¼\n\n[使ç¨service worker+sw-precacheå®ç°ç½ç«å é](https://metaquant.org/service%20worker-web%20performance-cache.html)\n\n[使ç¨Service workerå®ç°å é/离线访é®éæblogç½ç«](https://yangbo.tech/2017/01/15/2017-01-15-speedy-and-offline-site-by-service-worker/)\n\n[Service Workers ä¸ç¦»ç
318º¿ç¼å](https://segmentfault.com/a/1190000008491458)"},{"slug":"2939","title":"ä¸åªå«é
¸å¥¶çåµ","tags":[],"body":"é
¸å¥¶æ¯æå®¶æ°æçç«å¥³ä»ï¼å¥¹æä¸ä¸ªå客ï¼[https://suannai.cat](https://suannai.cat/)\n\n\n\nQ: ä½ æ¯è°ï¼\nA: ææ¯é
¸å¥¶ï¼æ¥èªåµæï¼æ¯ä¸ªå¯ç±ç女å©åï¼æçé²å±å®æ¯ DIYgodï¼å¯¹ä»å¥½ç¹ï¼ä»æ¯æç½©çã\n\nQ: ä½ çèº«ä¸æ¯ææ ·çï¼\nA: æè¿æ6个å
å¼å§å¦¹ï¼æä¸ä¸ªå§å§ï¼[èç³](http://blog.zanyuyu.com/tags/%E7%8C%AB/)ï¼å¨[èµé±¼é±¼](http://weibo.com/zanyuyu)å®¶ï¼2017 å¹´ 2 æ 23 æ¥èµ·æ£å¼éä½£ DIYgod 为æçé²å±å®ã\n\nQ: ä½ å¤å¤§äºï¼\nA: 50å¤å¤©äºï¼æä»¥ä¸è¦ææå½ä¸ä¸ªæçå°å±åµçå¾
äºã\n\nQ: ä½ æ¯ä»ä¹åç§çï¼\nA: ç¾çï¼å ç½ï¼é纯ç§ã\n\nQ: ä½ æå欢ä»ä¹ï¼\nA: åèã"},{"slug":"2920","title":"女æåçå¾®åæ
ç»ªçæ§","tags":[],"body":"\n\nå°±æ¯è¿æ ·ï¼ä»£ç å好äºï¼å°±å·®ä¸ªå¥³æåäºã\n\næåçææå°±æ¯æ£æµæä¸å¾®åå主æ°åçå¾®åï¼å¦æå¤æä¸ºæ¶ææ
绪就ååºè¦åï¼ææºéç¥ãé®ä»¶éç¥ãèªå¨å䏿¡ä¸å¾é£æ ·çå¾®åä¹ç±»çï¼ã\n\n## 项ç®å°å\n\n[https://github.com/DIYgod/Weibo2RSS](https://github.com/DIYgod/Weibo2RSS) 以 RSS å½¢å¼è¾åºæ¶ææ
绪çå¾®å\n\n[https://github.com/DIYgod/Text2Emotion](https://github.com/DIYgod/Text2Emotion) åæä¸å
318¥è¯çæ
绪å¼<!--more-->\n\n## ä½¿ç¨æ¹æ³\n\næ¶ææ
绪微å RSS é
å IFTTT 使ç¨ï¼å
·ä½è®¾ç½®å¦ä¸å¾ï¼æ¡ä»¶æ¯ RSS åºç°æ°å
容ï¼è¡ä¸ºæ¯å䏿¡å¾®åéç¥ï¼ä¹å¯ä»¥æ¹æææºéç¥æè
é®ä»¶éç¥çï¼ã\n\n\n\n \n\n## å¼åè¿ç¨\n\nä¸é¢æ¯æçå¼åè¿ç¨ã\n\n### ä¸ãåè¯\n\nè¿ä¸è¥¿èªå·±å䏿¥ï¼æä»¥åªå¥½æ¾ç°æçè§£å³æ¹æ¡ï¼æ¾å°äºä¸é¢å 个ï¼\n\n[ç»å·´ä¸æåè¯](https://github.com/fxsjy/jieba)\n\n[å工大è¯è¨ææ¯å¹³å°äº](http://www.ltp-cloud.com/)\n\n[æ°æµªäºä¸æåè¯](http://www.sinacloud.com/doc/sae/python/segment.html)\n\n[讯é£è¯è¨äº](https://www.xfyun.cn/services/ltp)\n\n[è
¾è®¯ææº](https://www.qcloud.com/document/product/271)\n\né¤äºè
¾è®¯ææºå
¶ä»é½æ¯å
è´¹æè
弿ºçï¼ç®åæ¯è¾ä¹åéæ©äºé¤å Big Bang ä¹å¨ç¨ç讯é£ã\n\n### äºãæ
绪åæ\n\nè¿ä¸ªå
³é®å¨äºè¯å
¸ï¼ä¹æ¯æ¾ç°æçï¼\n\n[䏿æ
æææ§è¯å
¸ NTUSD](http://www.datatang.com/data/44317)\n\n[大è¿çå·¥æ
æè¯æ±æ¬ä½åº](http://大è¿çå·¥æ
æè¯æ±æ¬ä½åº)\n\n大è¿çå·¥çæ¬ä½åºæ 注äºè¶
è¿ä¸¤ä¸è¯è¯ï¼å
æ¬è¿äºè¯è¯è¯æ§ç§ç±»ãæ
æç±»å«ãæ
æå¼ºåº¦åææ§çä¿¡æ¯ï¼åä¸é¢è¿æ ·ï¼\n\n\n\nçèµ·æ¥å¾ä¸éï¼å°±éæ©äºè¿ä¸ªã\n\nè¯å
¸ä¸è½½ä¸æ¥æ¯ä¸ä¸ª excel è¡¨æ ¼ï¼æå®å
å¦å为æ csv æ ¼å¼ï¼ç¶åå°±å¯ä»¥å¯¼å
¥å° mongodb æ°æ®åºéäºã\n\n```sh\nmongoimport -d emotion -c emo --type csv --headerline --file emotion.csv\n```\n\n### ä¸ãæ
绪å¼è®¡ç®\n\næè¦åæçè¯è¿è¡åè¯å¤çï¼åææ¯ä¸ªè¯è¯çæ
绪å¼è¿è¡ç´¯å ï¼å°±å¯ä»¥å¾åºä¸æ¡å¾®åçæ
绪å¼ã\n\nè¿éå
¶å®è¿æå¾å¤ç®æ³å·¥ä½å¯ä»¥åï¼ä½ç®åèµ·è§ï¼æåªæ¯è¿è¡äºç´¯å ã\n\nç¶ååå®åç°ææå¾å·®ï¼åå æ¯è¯å
¸å
容太å°ï¼å¾å¤è¯è¯é½æ²¡æï¼æä»¥å¾å¤å¥åæ ¹æ¬å¤æä¸åºæ¥ã\n\n \n\næååºå¼äºä¸é¢çææä¸è¥¿ï¼ç´æ¥ä½¿ç¨è
¾è®¯ææºçæ¶è´¹æå¡ããã\n\n### åãåºç¨å°å¾®å\n\næåå¾®åå
容çåçå¾ç®åï¼æ°æµªå¾®åç[å¾®åç§](http://service.weibo.com/widget/widget_blog.php?uid=3306934123)æ¯ä¸éè¦ç»å½å°±å¯ä»¥è®¿é®çï¼ç´æ¥ä½¿ç¨ Node.js è§£æé¡µé¢å°±å¯ä»¥æ¿å°å¾®åå
容ã\n\nç¶å对微åå
容è¿è¡æ
绪å¼è®¡ç®ï¼ææ¶ææ
绪çå¾®åè¾åºæ RSSã\n\n### äºãçæ§\n\nè¾åºæ RSSï¼çæ§ä¹å®¹æäºï¼å
¶ä¸Â [IFTTT](https://ifttt.com)Â æææä½³ï¼æ£æµå° RSS ææ°å
容æ¶ï¼å¯ä»¥è§¦åææºéç¥ãé®ä»¶éç¥ãå䏿¡å¾®åçè¡ä¸ºã\n\n \n\n以ä¸ï¼å
¶å®æå¤§çé®é¢è¿æ¯ï¼æå·®ä¸ªå¥³æåã"},{"slug":"2837","title":"Weibo2RSS â ä½¿ç¨ RSS 订é
忬¢çå¾®åå主","tags":[],"body":"ä½¿ç¨ RSS 订é
忬¢çå¾®ååä¸»ï¼æ¯å¦æï¼å§~\n\nDemoï¼[https://api.prprpr.me/weibo/rss/3306934123](https://api.prprpr.me/weibo/rss/3306934123)\n\nRSS æ ¼å¼è¾åºä¸ä¸ªå¾®ååä¸»ææ°ç 15 æ¡å¾®åï¼å¯ä»¥ä½¿ç¨ RSS é
è¯»å¨æ¥è·ååæ¶æ¨éï¼é
å [IFTTT](https://ifttt.com/) è¿å¯ä»¥å®ç°æ´å¤å¥½ç©çåè½ã\n\nåçï¼æ°æµªå¾®åç[å¾®åç§](http://service.weibo.com/widget/widget_blog.php?uid=3306934123)æ¯ä¸éè¦ç»å½å°±å¯ä»¥è®¿é®çï¼ä½¿ç¨ Node.js è§£æé¡µé¢ï¼ç¶åè¾åº RSS æ ¼å¼ã\n\n使ç¨åæå»ºæ¹æ³ï¼è§ [GitHub](https://github.com/DIYgod/Weibo2RSS)ã"},{"slug":"2805","title":"å¾®å°å¾®ç´æåæ¾ç DPlayer å®ç°","tags":[],"body":"以ä¸ä¸º10æ19æ¥[å¾®å°å¾®](http://weibo.com/u/2025479687)å¨[ä¸ç´æ](http://m.yizhibo.com/l/n6VHhuJoCbMf41Nx.html)çç´æåæ¾ï¼è¿·å¦¹è¸ï¼å¼¹å¹ä¹æåæä¸æ¥è½¬æ [DPlayer](https://github.com/DIYgod/DPlayer) å¯ä»¥è¯å«çæ ¼å¼å¦ã\n\nè§é¢ææ¶åºç°å¡é¡¿æ¯ç´æçåå ï¼å¼¹å¹æ»è®¡ 15768 æ¡ã弹广件 1.7 MBï¼ç¬¬ä¸æ¡å¼¹å¹å¨ 13 ç§åºç°ã\n\nä¸ç´æå¼¹å¹æ± ä¸ DPlayer 弹广± äºä¸å½±åï¼ä¹å¯ä»¥å¨ä¸é¢åå¼¹å¹åã\n\n<!--more-->\n\n<style>\n.dplayer-time {\n display: inline-block !important;\n}\n</style>\n\n<div class=\"dplayer\" id=\"dplayer4\"></div>\n\n \n\n## è§é¢å弹广¬è¿\n\nç´æç¬¬äºå¤©åç°ä¸ç´æææ¨å¤©çåæ¾ï¼å¼å¿å°ææï¼éè¿æ¥ä¹åå¼å§æ³åæ³ä¸è½½è§é¢åå¼¹å¹ã\n\n### è§é¢\n\nç½ä¸æ¾ä¸å°ä¸è½½ä¸ç´æè§é¢çå·¥å
·ï¼åªå¥½èªå·±å¨æï¼æµè§å¨å¼åè
å·¥å
·çå°é¡µé¢å è½½äºä¸ä¸ª m3u8 æä»¶ï¼ç¶åå°±æ¯ä¸è½½ m3u8 æä»¶éç 354 个è§é¢ç段就好äºã\n\nåäºä¸ª shell èæ¬æ¹éä¸è½½ï¼\n\n```sh\n#!/bin/bash\nfor k in $( seq 1 354 )\ndo\n wget http://xxx/${k}.ts\ndone\n```\n\nDPlayer æ©å°±åäºå¯¹ m3u8 æ ¼å¼çæ¯æï¼ä¸ç¨å¯¹è§é¢ç段åä»»ä½åç»å¤çã\n\nè§é¢ä¸è½½å®æã\n\n### å¼¹å¹\n\nåæ ·ç¨å¼åè
å·¥å
·æå
ï¼æ¾å°å¼¹å¹æä»¶è¯·æ±çè§å¾ã\n\n第ä¸ä¸ªå¼¹å¹çæ®µæ¯ http://xxx?ts=1 ï¼å
¶ä»çå¼¹å¹ç段ä¹åªætsåæ°ä¸åãç¶åtsåæ°çè§å¾æ¯è¿æ ·çï¼ä¸ä¸ä¸ªç段çåæ°æ¯ä¸ä¸ä¸ªç段è¿åå¼éçæåä¸ä¸ªtså¼ã\n\nç¥éè§å¾åå°±åäºä¸ª js èæ¬æ¥ä¸è½½å¼¹å¹åæå¼¹å¹è½¬æ¢æ DPlayer çæ ¼å¼ã\n\n```js\nfunction ajaxDan(ts) {\n $.ajax({\n url: `http://xxx?ts=${ts}
318`,\n success: function (data) {\n var tli = parseInt(data.data.list[data.data.list.length - 1].ts) + 1;\n console.log(tli);\n data.data.list.map(function (i) {\n dan[index] = {\n author: \"yizhibon\" + i.nickname,\n time: parseInt(i.ts) / 1000,\n text: i.content,\n color: \"#fff\",\n type: \"right\",\n };\n index++;\n });\n ajaxDan(tli);\n },\n });\n}\nvar dan = [];\nvar index = 0;\najaxDan(1);\n```\n\nè¿è¡ç»æï¼536 个è§é¢ç段ï¼15768 æ¡å¼¹å¹\n\n\n\nç¶åæå¼¹å¹å¯¹è±¡å符串åï¼å¤å¶å° json æä»¶éã\n\n宿ã\n\n
318<script src=\"https://cdn.bootcss.com/hls.js/0.8.7/hls.min.js\"><\/script>\n
318<script>\n$(function () {\n function myDPlayer() {\n var dp4 = new DPlayer({\n element: document.getElementById('dplayer4'),\n autoplay: true,\n theme: '#FADFA3',\n loop: true,\n screenshot: true,\n video: {\n url: 'https://cdn1.diygod.me/wxwlive/1019/index.m3u8',\n pic: 'https://cdn1.diygod.me/wxwlive/1019/poster.png'\n },\n danmaku: {\n id: '02d53ea190dc8583',\n api: 'https://api.diygod.me/dplayer/',\n token: 'tokendemo',\n maximum: 3000,\n addition: ['https://cdn1.diygod.me/wxwlive/1019/danmaku.json']\n }\n });\n window.dplayers || (window.dplayers = []);\n window.dplayers.push(dp4);\n }\n if (!window.Hls) {\n $.getScript('https://cdn.bootcss.com/hls.js/0.8.7/hls.min.js', function () {\n myDPlayer();\n });\n }\n else {\n myDPlayer();\n }\n});\n<\/script>"},{"slug":"2770","title":"WordPress ååå¾è¯è®ºå¤§ä½æ","tags":[],"body":"WordPress åå¾è¯è®ºä¸ç´æ¯è¶
级å¤è¶
级ç¦äººçï¼å¦ææ²¡æææçæ¦æªæ¹æ¡ï¼ç½ç«å°±ä¼ç¬é´è¢«æ¯å¤©å ç¾æ¡çåå¾è¯è®ºæ·¹æ²¡ã\n\nå ä¸ºæ¯æ¯ä¸ª WordPress ç«ç¹é½æ æ³é¿å
çé®é¢ï¼å¤§å®¶åæ¾ç¥éï¼ååºçè§£å³æ¹æ¡ä¹æºå¤çï¼è¿éæ»ç»ä¸ä¸æ¯ç§æ¹æ³çç¹ç¹åå©å¼ï¼\n\n### è¯å«åå¾è¯è®º\n\n以 Akismet æä»¶ä¸ºä»£è¡¨ï¼æ ¹æ®è¯è®ºå
容æè¯è®ºè
çä¿¡æ¯å¤æè¯è®ºæ¯å¦ä¸ºåå¾è¯è®ºï¼åå³å®æ¯å¦æ¦æªãå¼å¯åè½æ¦æªæå 乿æåå¾è¯è®ºï¼ä½è¿ç§æ¹æ³æå¤§çç¼ºé·æ¯**误å¤**ï¼æ¬ç«ä¹åä¸ç´å¨ç¨Â Akismet æä»¶ï¼è¯¯å¤çæ¦çè¿æ¯æºå¤§çï¼å³ä½¿ç»å¸¸å»åå¾ç®±æ¥çï¼å¶å°ä¸æ¡çæ£å¸¸è¯è®ºåä¸å¤§å åå¾è¯è®ºä¸èµ·æ··å¨åå¾ç®±ä¹å¾å®¹æè¢«éæ¼ï¼å
¶æ¬¡ä¼ææ
¢æäº¤è¯è®ºçé度ï¼å ä¸ºæ¯æ¡è¯è®ºé½è¦å
被åå° Akismet çå½å¤æå¡å¨åè¯å«ã\n\n \n\n### ç¦æ¢é䏿è¯è®º\n\n90%以ä¸çåå¾è¯è®ºé½æ¥èªå½å¤ï¼æä»¥è¿ç§æ¹æ³å¯ä»¥æ¦æªæ90%以ä¸çåå¾è¯è®ºï¼ä½ç¼ºç¹æ¯æ æ³åé纯表æ
å类似â2333âãâThanksâè¿ç§æ£å¸¸è¯è®ºäºï¼èä¸ä¸æçåå¾è¯è®ºä¹æ æ³æ¦æªæã\n\n \n\n### ä¿®æ¹è¯è®º post å°å\n\nè¿ç§æ¹æ³è½ç¶çèµ·æ¥æç¹èªæ¬ºæ¬ºäººï¼ä½ææåºå¥å°å¥½ï¼å 为ç»å¤§é¨åçåå¾è¯è®ºé½æ¯æºé䏿 ·åªç¥ééè¿ post ç½ç«æ ¹ç®å½ç wp-comments-post.php æ¥æäº¤åå¾è¯è®ºçãç¨å¾®éº»ç¦ä¸ç¹çæ¯ WordPress æ¯æ¬¡å级é½è¦éæ°ä¿®æ¹ã\n\n \n\n### 人工éªè¯æä»¶\n\næ¯å¦æå¨è§£éãæ¼å¾ãéªè¯ç ï¼æææ¯ä¸éï¼ä½çºç²äºç¨æ·ä½éªï¼å¯¹å°ç«æ¥è¯´æ²¡å¿
è¦ã\n\n \n\n### 设置 token\n\næ¬ç«ç°å¨æ¢ç¨äºè¿ç§æ¹æ³ï¼åçæ¯æ¯æ¬¡å·æ°é¡µé¢ï¼å端é½ä¼è¿åä¸ä¸ªä¸åç token æ¾å°é¡µé¢ä¸ä»»æä½ç½®ï¼ç¶åå¨åéçæ¶æºç¨ JavaScript å° token å¡«å
å°ä¸ä¸ªéèç input éé¢ï¼æäº¤è¯è®ºæ¶å°éè input çå¼ï¼æ£å¸¸æ
嵿¯ tokenï¼ä¸èµ·æäº¤ï¼å端éè¿å¤æè¯¥å¼æ¯å¦åæ³æ¥å¤æè¯è®ºæ¯ä¸æ¯éè¿æ£å¸¸éå¾æäº¤çãè½ç¶è¿ç§æ¹æ³ä¹æ¯å¯ä»¥ç ´è§£çï¼ä½ç ´è§£é¾åº¦ææ¾é«äºå¾å¤ï¼æ´éè¦çæ¯ token ç®æ³åéè input çç»æå®¹ææ´æ¹ï¼æ¯æ¬¡ç®åçå°ä¿®æ¹é½å¯ä»¥è®©ç ´è§£å¤±æã\n\n使ç¨ä¹å¾ç®åï¼å°å¦ä¸ä»£ç æ¾å°ä¸»é¢ç function.php å³å¯ï¼ä»£ç å¦ä¸ï¼\n\n```php\n$leonax_magic_lower = 328; // token æå°å¼ï¼èªå·±éæä¿®æ¹\n$leonax_magic_upper = 3450709; // token æå¤§å¼ï¼èªå·±éæä¿®æ¹\nfunction leonax_anti_spam_form($fields){\n global $leonax_magic_lower, $leonax_magic_upper;\n $leonax_magic = mt_rand($leonax_magic_lower, $leonax_magic_upper); // æ¾å¨é¡µé¢çtokenå¼ï¼æ¯ä¸ä¸ªéæºæ°ï¼æ¯æ¬¡é½ä¸å\n $fields['leonax_magic'] = <<<EOT\n <input type=\"hidden\" id=\"leonax-magic\" name=\"leonax-magic\" value=\"0\"> // éèç input\n <script>
318\n $(function() {\n $(\"#comment-content\").on(\"keyup\", function() { // js æ£æµå°è§¦å keyupãclick æ touch äºä»¶æ¶å¡«å
token\n $(\"#leonax-magic\").val(\"$leonax_magic\");\n });\n $('body').on('click touch', function () {\n $(\"#leonax-magic\").val(\"$leonax_magic\");\n });\n })\n </script>\nEOT;\n return $fields;\n}\nadd_filter('comment_form_default_fields', 'leonax_anti_spam_form');\n\nfunction leonax_anit_spam_caught() {\n wp_die('<strong>è¯è®ºå¤±è´¥</strong>: åå¾è¯è®ºä»ä¹ç廿»å§ï¼');\n}\n\nfunction leonax_anti_spam_check( $commentdata ) {\n $comment_type = '';\n if ( isset($commentdata['comment_type']) ) {\n $comment_type = trim($commentdata['comment_type']);\n }\n\n if ( ($comment_type == 'pingback') || ($comment_type == 'trackback') ) {\n return $commentdata;\n }\n $content = '';\n if ( isset($commentdata['comment_content']) ) {\n $content = trim($commentdata['comment_content']);\n }\n if (!strlen($content)) {\n leonax_anit_spam_caught();\n }\n\n global $leonax_magic_lower, $leonax_magic_upper;\n\n if ( isset($commentdata['user_ID']) && $commentdata['user_ID'] ) { // ç»éç¨æ·ä¸å夿\n return $commentdata;\n }\n\n if ( !isset($_POST['leonax-magic']) ) {\n leonax_anit_spam_caught();\n }\n $magic = intval($_POST['leonax-magic']);\n if ($magic < $leonax_magic_lower || $magic > $leonax_magic_upper) { // token å¼å¨ä¸é¢è®¾ç½®çæå¤§å¼åæå°å¼ä¹é´æåæ³\n leonax_anit_spam_caught();\n }\n return $commentdata;\n}\n\nadd_filter( 'preprocess_comment' , 'leonax_anti_spam_check' );\n```\n\n以ä¸ä»£ç æ¥èªÂ [LEONA+](https://leonax.net/p/6732/block-spam-comments-from-web-page/) å [JustYY.com](https://justyy.com/archives/1558)ã\n\n \n\nç®ååªæ¾å°è¿å ç§æ¹æ³ï¼æ¬¢è¿è¡¥å
ã"},{"slug":"2648","title":"DPlayer â æå¥½çç弹广æ¾å¨éç»æå¥½çç宫åè°","tags":["æ°å"],"body":"<link href=\"https://cdn.bootcss.com/dplayer/1.16.0/DPlayer.min.css\" rel=\"stylesheet\">\n\n<div id=\"dplayer1\" class=\"dplayer\"></div>\n\næå¥½ççHTML5弹广æ¾å¨éç»æå¥½çç宫åè°ã\n\nDPlayeræ¥æºäºæçæ¯ä¸è®¾è®¡ï¼DPlayeråå¸åï¼æçå¦ççæ¶¯ä¹éä¹ç»æã<!--more-->\n\n \n\n**Qï¼**å½å为ä»ä¹è¦åä¸ä¸ªè¿ä¹å¥½çç弹广æ¾å¨ï¼\n\n**Aï¼**æ¯ä¸è®¾è®¡éå°çé¢ç®ã\n\n \n\n**Qï¼**5æåºå°±å¨GitHubåå¸äºï¼ä¸ºä»ä¹ç´å°ç°å¨ï¼8æåºï¼æåå客ï¼\n\n**Aï¼**åå¼å§è§å¾DPlayerè¿ä¸å¤ªå®åï¼ä¸éåç¨å¨ç产ç¯å¢ï¼å°±æ²¡åå客ã\n\n \n\n**Qï¼**æä»¥æ¯åç»è¿äº3个æçå®åæå¨å客æ£å¼åå¸çä¹ï¼\n\n**Aï¼**䏿¯ï¼ä¸»è¦æ¯å 为æä¹°äºå®æå
é...\n\n \n\n**Qï¼**æä¹å¾å¥½çï¼ä¸ºä»ä¹ä¸éç»æï¼\n\n**Aï¼**å¯ä»¥ï¼é£åæ¶éç»ç±æç70亿人类å§ã\n\n \n\n\bGitHubï¼\n\n[https://github.com/DIYgod/DPlayer](https://github.com/DIYgod/DPlayer)\n\nDemoï¼\n\n[http://dplayer.js.org](http://dplayer.js.org/)\n\n \n\n**Qï¼**è¿æä»ä¹æ³è¯´çä¹ï¼\n\n**Aï¼**å·®ç¹å¿äºæéè¦çäºæ
ï¼æçæç½ID **DIYgod#5922**ï¼å æä¸èµ·å±è¡å¼é»åï¼\n\n
318<script>\n var dp1 = new DPlayer({\n element: document.getElementById('dplayer1'),\n autoplay: false,\n theme: '#FADFA3',\n loop: true,\n screenshot: false,\n preload: 'none',\n video: {\n url: 'https://cdn1.diygod.me/è¥è½ç»½æ¾å
è.mp4',\n pic: 'https://cdn1.diygod.me/è¥è½ç»½æ¾å
è.png'\n },\n danmaku: {\n id: '9E2E3368B56CDBB4',\n api: 'https://api.diygod.me/dplayer/',\n token: 'tokendemo',\n maximum: 3000\n }\n });\n window.dplayers || (window.dplayers = []);\n window.dplayers.push(dp);\n<\/script>"},{"slug":"2449","title":"ç»å欢æä¿¡ççä½ â ä¸å¹´ä¸åº¦çéæä¿¡çæ´»å¨ï¼å·²å®ç»ï¼","tags":[],"body":"\n\n### Q: æä¸ºä»ä¹è¦ä½ çæä¿¡çï¼å¦å¦è¯´ä¸è½é便æ¿éç人çä¸è¥¿ã\n\n**A:**Â ä½ æä½éªè¿å°ç¡®å¹¸çæè§åï¼\n\næ¯å¦å¨æ¯«æ åå¤çæ
åµä¸çªç¶æ¶å°ä¸å¼ æä¿¡çï¼ä¸é¢åªæä¸å¥è¯ï¼ç»å欢æä¿¡ççä½ ã\n\næ¯å¦å¨ä¸æ±å¸æçæ
åµä¸çªç¶æ¶å°è¿å°å¥½ä¹
çæä¿¡çã\n\næ¯å¦å¨å
³ç³»å°æµ
çæ
åµä¸çå°äººå®¶åç»ä½ 满å°è¦æº¢åºæ¥çæåã\n\nè¿äºä½ æåè¿åï¼\n\nææåè¿ï¼å°±æ¯éè¿æä¿¡çæåçã\n\n<!--more-->\n\nææ¯ä¸ææä¿¡çç±å¥½è
ï¼æ¯å»ä¸ä¸ªå°æ¹ï¼ç¬¬ä¸ä»¶äºå°±æ¯ä¹°æå
³å½å°èªç¶äººæçæä¿¡çã\n\n\n\n**ä½è¿äºå¡ççä»·å¼ï¼è¿ä¸æ¢æ¯æ¶èåç«èé£ä¹ç®åã**\n\næé£ä¹ä¸ç¬ï¼æç¹å«å¸æä¸å¨åä¸å°æ çä½ å¯ä»¥äº²ç¼è§è¯æä»¬çæ
è°ï¼ææ¯æåå°ä¸ä¸æ¥èªéçäººçæ¸©æã\n\næé£ä¹ä¸ç¬ï¼æç¹å«å¸æä½éªä¸ä¸æ
¢æ æ ççæ´»æ¹å¼ï¼ä¸å°ä¿¡ï¼ä¸å¼ æä¿¡çï¼ä¹è®¸æ¯å¯ç»æä¸ªæå¿µç人ï¼ä¹è®¸æ¯å¯ç»æ£å¨è¿·è«ä¸å®ä¸çå¼å°å¥½åï¼ä¹è®¸æ¯å¯ç»ç¥å¥æ
å¢ä¸è®¤è¯çæä¸ªæå¥½æçæåã\n\n### Q: ææ³è¦ï¼æææ ·æè½æ¶å°ä½ çæä¿¡çï¼\n\n**A:** è¿æ¬¡æä¸å
±å®å¶äº100å¤å¼ æä¿¡çï¼è§æç« 头å¾ï¼ï¼<del>ç®æµè¶³å¤éäºï¼å³ä½¿ççä¸å¤æä¼å廿å°</del>ï¼æåæäºï¼æ¹æéå®ä¸ºæ¢ï¼ï¼æä»¥**ç论ä¸**ææï¼æå¿«çï¼äººé½è½æ¶å°ã\n\n~~é¤äºæå°æ°åºåææé¢çï¼å
¶ä»ä»»ä½äººé½å¯ä»¥éè¿[å¾®åç§ä¿¡](http://weibo.com/anotherhome)ãQQã微信ã[é®ä»¶](mailto:[email protected])ã[Telegram](https://telegram.me/DIYgod)Â çæ¹å¼åè¯æä½ ç**çå®å§åãæµç§°ãå°åï¼ä½åå¿
é¡»å
·ä½å°é¨çå·ï¼å¦æ ¡å¿
é¡»å
·ä½å°ç级ï¼åé®ç¼**ï¼å¾
æç¡®è®¤ï¼æ¹å¼å¦ä¸ï¼ä¹åï¼ä½ å°±ççæä¿¡çä¸è·¯ç¿»å±±è¶å²å»æ¾ä½ å§ã~~\n\n \n\n### Q: ææä¹ç¥éä½ çå°äºæçæä¿¡çç³è¯·ï¼\n\n**A:** æä¼å¨æç« çæåæ´æ°ç¡®è®¤å表ï¼åªåæµç§°ï¼ï¼é¢è®¡äººä¼å¾å¤ï¼æä»¥ç³è¯·3天åè¿æªçå°ä½ çæµç§°è¯·åæ¬¡è·æèç³»ã\n\n \n\n### Q: æä»ä¹æ¶åæè½æ¶å°ä½ çæä¿¡çï¼\n\n**A:** å°åå个æï¼å¤åä¸è¾åã\n\n \n\n### Q: ä½ ç¨ä»ä¹å¿«éï¼\n\n**A:** [æä¿¡ç - ç»´åºç¾ç§](https://zh.wikipedia.org/wiki/%E6%98%8E%E4%BF%A1%E7%89%87)ã\n\n \n\n### Q: å¯ä»¥å¤ç»æå å¼ ä¹ï¼\n\n**A:** å¯ä»¥ï¼å¤äºä¸å¼ çé¨å请æç
§ä¸å¼ 100å
çä»·æ ¼[å¾®ä¿¡ææ¯ä»å®è½¬è´¦](https://www.anotherhome.net/donate)ã\n\n \n\n### Q: æä¸å欢æä¿¡çï¼ä½ å¯ä»¥éæå«çä¸è¥¿ä¹ï¼\n\n**A:** ä¸å¯ä»¥ã\n\n \n\n### Q: ä½ åªéæä¿¡çï¼æ¯ä¸æ¯å ä¸ºä½ ç©·ï¼\n\n**A:** æ¯ï¼æ¬¢è¿[å¾®ä¿¡ææ¯ä»å®è½¬è´¦](https://www.anotherhome.net/donate)ã\n\n \n\n### Q: ä½ åæè¯´ä½ ç»äºæäºäººé¢çï¼æ¯ä¸æ¯æè®èç py 交æï¼\n\n**A:** ..."},{"slug":"2298","title":"çæç鿣 â 仿ç¥ä¹å¤å¶ææ¬èªå¸¦çæå£°æ","tags":[],"body":"### ä»ä¹é¬¼ï¼\n\nçæç鿣ï¼å¦å¦åä¹ä¸ç¨æ
å¿æè¢«ä¾µæäºï¼å
¶å®åªé²ååä¸é²å°äººï¼ã\n\n类似ç¥ä¹ï¼å¨ç½ç«å¤å¶é¿åº¦å¤§äº42çææ¬æ¶èªå¨å ä¸è¿æ ·ççæå£°æï¼\n\n```\nè使å½ä½è
ææã\nåä¸è½¬è½½è¯·èç³»ä½è
è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã\nä½è
ï¼DIYgod\n龿¥ï¼https://www.anotherhome.net/\næ¥æºï¼Anotherhome\n```\n\n### åç\n\n- çå¬copyäºä»¶\n\n- 使ç¨Â window.getSelection() è·åéä¸çææ¬\n\n- 使ç¨Â clipboardData.setData æä½åªè´´æ¿çå
容<!--more-->\n\n### 代ç \n\n```js\ndocument.body.addEventListener('copy', function (e) {\n if (window.getSelection().toString() && window.getSelection().toString().length > 42) {\n setClipboardText(e);\n alert('åä¸è½¬è½½è¯·èç³»ä½è
è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ï¼è°¢è°¢åä½ã');\n }\n});\n\nfunction setClipboardText(event) {\n var clipboardData = event.clipboardData || window.clipboardData;
318\n if (clipboardData) {\n event.preventDefault();\n\n var htmlData = ''\n + 'è使å½ä½è
ææã<br>'\n + 'åä¸è½¬è½½è¯·èç³»ä½è
è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã<br>'\n + 'ä½è
ï¼DIYgod<br>'\n + '龿¥ï¼' + window.location.href + '<br>'\n + 'æ¥æºï¼Anotherhome<br><br>'\n + window.getSelection().toString();\n var textData = ''\n + 'è使å½ä½è
ææã\\n'\n + 'åä¸è½¬è½½è¯·èç³»ä½è
è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã\\n'\n + 'ä½è
ï¼DIYgod\\n'\n + '龿¥ï¼' + window.location.href + '\\n'\n + 'æ¥æºï¼Anotherhome\\n\\n'\n + window.getSelection().toString();\n\n clipboardData.setData('text/html', htmlData);\n clipboardData.setData('text/plain',textData);\n }\n}\n```\n\n### å·²ç¥é®é¢\n\niOS Safari ä¸å
¼å®¹ clipboardData.setData() æ¹æ³ï¼æä»¥å¨ iOS Safari 䏿 æ\n\n### ç¥ä¹åç\n\nå¦éç¥ä¹åçå
³é®ä»£ç ï¼åçç±»ä¼¼ï¼æå
´è¶£ä¹å¯ä»¥ççï¼\n\n```js\nvar lz = function (a, b, c) {\n function d(a, b) {\n return [\"è使å½ä½è
ææã\", \"åä¸è½¬è½½è¯·èç³»ä½è
è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã\", \"ä½è
ï¼\" + b, \"龿¥ï¼\" + a, \"æ¥æºï¼ç¥ä¹\", \"\", \"\"]\n }\n\n function f(a, b, c) {\n return \"\\x3cdiv\\x3e\" + d(b, c).join(\"\\x3cbr /\\x3e\") + a + \"\\x3c/div\\x3e\"\n }\n\n function g(a) {\n var g = z.Wq(), m = g && (0, z.ib)(g.Ed());\n if (m && !(42 > m.length)) {\n if (\"object\" === typeof a.originalEvent.clipboardData && (a.originalEvent.clipboardData.setData(\"text/html\", f(g.Of(), b, c)), a.originalEvent.clipboardData.setData(\"text/plain\", d(b, c).join(\"\\n\") + m), 0 < a.originalEvent.clipboardData.getData(\"text/plain\").length)) {\n a.preventDefault();\n return\n }\n if (window.getSelection) {\n a = g.Of();\n var n = (0, window.$)(f(a, b, c)).css({position: \"fixed\", left: \"-9999px\"}).appendTo(\"body\");\n window.getSelection().selectAllChildren(n.get(0));\n (0, window.setTimeout)(function () {\n g.select();\n n.remove()\n }, 200)\n }\n }\n }\n\n a && b && c && (z.Fa(b, \"http\") || (b = window.location.protocol + \"//\" + window.location.host + b), a.on(\"copy\", g))\n};\n```"},{"slug":"2167","title":"APlayer - éç»å°çç¸åå°å
åç HTML5 ææ¾å¨","tags":["æ°å"],"body":"å°çç¸åå°å
忝å¾å¥½å¾å¥½çæåã\n\nä¸èµ·æ£æ¥çæ¶å,ä¸å·§éå°äºç人ã\n\nä»ä»¬è½¬èº«å°±è·,é½å¸æç人æ´å®¹æåç°èªå·±ã\n\nå°çç¸è·è¿äºè²å
¬è±ç¾¤ï¼ç½è²çè²å
¬è±æ¼«å¤©é£èµ·ã\n\nå°å
åéè¿ç«ç°è±åï¼çº¢è²çç«ç°è±ç£æ£è½ä¸å°ã\n\n仿¤å¤±æ£å¨å½¼æ¤çä¸çéã\n\n幸è¿çæ¯ï¼åæ¥ï¼å°çç¸éå°äºå°çåï¼å°å
åéè§äºç±ä¸½ä¸ã\n\n \n\n**\bGitHub项ç®ä¸»é¡µï¼å欢就ç»ä¸ªstarå§~ï¼ï¼**\n\n[https://github.com/DIYgod/APlayer](https://github.com/DIYgod/APlayer)\n\n**Demoï¼**\n\n[https://www.anotherhome.net/file/APlayer/](https://www.anotherhome.net/file/APlayer/)\n\n**GitHub Trendingï¼ç鍿¦ï¼ç¬¬8使ªå¾ç念2333ï¼**\n\n"},{"slug":"2153","title":"æè好äºå¦","tags":[],"body":"\n\nå¨Â [Sonic 853](http://853.bronya.net/) çå°çç¥å¥çä¸å¹ï¼ä¸é¢èµèï¼ææææ¥æ°´ä¸è´´\n\n**åä½è
ï¼**[æå¤©ä¸é«å
´çæ å±±æªæ¥](http://chitanda.me/)\n\n**ä»ä¹é¬¼ï¼**离å¼åè¿å
¥é¡µé¢æ¶æ¹åtitle\n\n**åçï¼**\n\n\b使ç¨äºHTML5çPage Visibility API\n\nç®å页é¢å¯è§æ§APIæä¸¤ä¸ªå±æ§ï¼ä¸ä¸ªäºä»¶ï¼å¦ä¸ï¼\n\ndocument.hidden: Booleanå¼ï¼è¡¨ç¤ºå½å页é¢å¯è§è¿æ¯ä¸å¯è§\n\ndocument.visibilityState: è¿åå½å页é¢çå¯è§ç¶æï¼åå¼æÂ hidden visible prerender preview\n\nvisibilitychange: å½å¯è§ç¶ææ¹åæ¶å触åçäºä»¶\n\n以å\båªç¥éå¯ä»¥éè¿ iframe + onblur/onfocusäºä»¶ æ¥æ£æµé¡µé¢å¯è§æ§ï¼æäºè¿ä¸ª API çæ¯æ¹ä¾¿ä¼é
äºå¾å¤å\n\n**代ç ï¼**\n\n```js\nvar OriginTitile = document.title;\nvar titleTime;
318\ndocument.addEventListener(\"visibilitychange\", function () {\n if (document.hidden) {\n document.title = \"(ã¤ã§â)æè好äºå¦~ \" + OriginTitile;\n clearTimeout(titleTime);\n } else {\n document.title = \"(*´âï½*) è¢«ä½ åç°å¦~ \" + OriginTitile;\n titleTime = setTimeout(function () {\n document.title = OriginTitile;\n }, 2000);\n }\n});\n```"},{"slug":"2125","title":"论 IFTTT çæ£ç¡®é£ç¨å§¿å¿","tags":[],"body":"### ä»ä¹æ¯IFTTT\n\nå®ç½ï¼[https://ifttt.com](https://ifttt.com)\n\nè¿æ¯ä¸ä¸ª2011å¹´å¨ç¾å½ä¸çº¿çç½ç«ï¼IFTTT æ¯ _If This Then That_ ç缩åãéä¿çæ¥è®²ï¼IFTTT çä½ç¨å°±æ¯å¦æè§¦åäºä¸ä»¶äºï¼åæ§è¡è®¾å®å¥½çå¦ä¸ä»¶äºã\n\n\n\nç»åä¸å¾ï¼Recipes çç®çæ¯æé ãthisã å ãthatã 两个ç½ç»æå¡ï¼ç½ç»æå¡å¨è¿é称为 Channels (é¢é)ï¼åè
称为 Trigger Channel (触åå¨é¢é)ï¼åè
称为 Action Channel (å¨ä½é¢é)ï¼å½è§¦åå¨é¢éæ»¡è¶³è§¦åæ¡ä»¶ï¼é£ä¹å°±ä¼æ§è¡å¨ä½é¢éæå®çå¨ä½ã\n\næä»¥ï¼IFTTT å建ä¸ä¸ªãRecipes æµç¨ãçæµç¨å¦ä¸ï¼éæ©ä¸ä¸ªè§¦åå¨é¢éï¼è®¾ç½®å®çè§¦åæ¡ä»¶ï¼åéæ©ä¸ä¸ªå¨ä½é¢éï¼ç¶å设置å®è¦æ§è¡çå¨ä½ï¼OKï¼è¿æ ·å°±æå®äºã\n\næ¯å¦æè®¾ç½®äºè¿æ ·ä¸ä¸ªRecipesï¼\n\n\n\næ´ä¸ªRecipeçæææ¯ _\"**If** new feed item from https://www.anotherhome.net/feed, **then** publish a post to @DIYgodé
±\"_ã\n\nè¿æ ·çæè¿ç¯æç« åå¸ä¹åï¼ä¸æ¡å¾®åå°±ä¼èªå¨åéäºã\n\nç¶èè¿æ²¡å®ï¼æè¿æä¸¤ä¸ªæ¶åå¾®åç Recipesï¼\n\n\n\nä¸åºæå¤çè¯æç Facebook å Twitter 马ä¸é½ä¼åºç°è¿ç¯æç« çæ¨éã\n\n#### IFTTTå¯ä»¥åä»ä¹\n\nç®å IFTTT ææ¯æç Channels ä¹ç®æ¯è¾ä¸°å¯äºï¼å¦ Feed (RSS)ãGitHubãå¾®åãå°è±¡ç¬è®°ãDropboxãé®ä»¶ã\bSMSãGmailãInstagramãPocketãWordPressãOneDriveãOneNoteãTwitterãFacebookã天æ°é¢æ¥ççï¼æ»æ°å¤è¾¾230å¤ä¸ªãå®ä»¬ä¹ä¸å¤§å¤æ°æ¢å¯ä»¥å½è§¦åå¨ï¼ä¹è½ä½ä¸ºå¨ä
318½æ¥ä½¿ç¨çã\n\n\n\nè¿éè¦åæ§½ä¸ä¸ï¼230 å¤ä¸ªé¢ééåªæä¸ä¸ªä¸å½åºç¨ï¼æ°æµªå¾®åï¼å¯æ³å½å
åºç¨\bæå¤ä¹å°æ°ï¼âè¯¶ï¼æå¹²åè¦æä¾æ¥å£åï¼ä½ æä½ çæå¡æ¥å°æçå¹³å°é就好äºâï¼è¯ºï¼å¤§å®¶é½æ¯è¿ä¹æ³çã\n\nå¦å¤å¾çäºåå¸ç Android ç以å iOS çç客æ·ç«¯ï¼ç°å¨ IFTTT çé¢ééä¸ä»
ä»
æ¯ä¸äºäºèç½æå¡äºï¼å®è¿æ°å¢äºè¯¸å¦çææºçè系人ãç
§çãçä¿¡ãå°çä½ç½®ãéç¥æ¨éçãé¢éãï¼è¿è®© IFTTT å徿´å çå®ç¨ã\n\n### IFTTTçæè¶£ç©æ³\n\nè¿æ¯ä¸ä¸ªå¾é
·ä¸å
·æé«èªç±åº¦çæå¡ï¼ä½ å¯ä»¥å©ç¨å®åå¾å¤å¾å¤æè¶£çäºæ
ãèä¸è½ç¶å½å
å¾å¤æå¡æ²¡æå¼æ¾APIï¼ä½æä»¬å¯ä»¥ç¨Â RSS 让å¾å¤äºæ
åæå¯è½ã\n\n- [æå¤©ä¸é¨/ä¸éª/ä½äº0ææ°åº¦/é«äº35ææ°åº¦ï¼ç»æå䏿¡iOSç³»ç»éç¥](https://ifttt.com/connect/weather/if_notifications)\n\n- 妿[å¨Facebook䏿 è®°](https://ifttt.com/connect/facebook/dropbox)ã[å¨Instagramä¸ç¹äºâ忬¢âä¸å¼ ç
§ç](https://ifttt.com/connect/instagram/dropbox)ï¼åä¿åå°Dropboxç¸åºæä»¶å¤¹\n\n- [妿æäººç»æåäºä¸å°å¸¦éä»¶ç\bGmailï¼åæéä»¶ä¿åå¨Dropbox](https://ifttt.com/recipes/98759-save-all-your-gmail-attachments-to-dropbox)\n\n- YouTubeä¸å欢äºä¸ä¸ªè§é¢ï¼å[å享å°Facebook](https://ifttt.com/connect/youtube/facebook)ã [Twitter](https://ifttt.com/connect/youtube/twitter)ä¸å¹¶ä¸[ä¿å龿¥å°å°è±¡ç¬è®°](https://ifttt.com/connect/youtube/evernote)\n\n- [æææºæªå¾å¾çèªå¨å½ç±»å°âæªå¾âç¸åä¸](https://ifttt.com/recipes/140665-organize-screenshots-in-an-ios-photo-album)\n\n- [æ¯å½æ·»å ä¸å¼ ç
§çæ¶ï¼æç
§çä¸ä¼ å°Dropbox](https://ifttt.com/connect/ios_photos/dropbox)\n\n- [彿·»å ä¸ä¸ªGoogle Calendar äºä»¶æ¶ï¼æ·»å ä¸ä¸ªåæ ·çiPhone æ¥åäºä»¶](https://ifttt.com/connect/google_calendar/ios_reminders)\n\n- æ¯å¤©æä¸æéæç¡è§\n\n \n\n\bå¦å¤IFTTT ç½ç«ä¸ä¹æå¾å¤ç½ååäº«åºæ¥ç Recipes å¯ä»¥ä¾ä½ åèæç´æ¥ä½¿ç¨ã\n\n### æ©å±é
读\n\n- [IFTTT - çé¨é®ç - ç¥ä¹](http://www.zhihu.com/topic/19607376)\n\n- [触åä½ çæºè½çæ´»ï¼IFTTT å
¥é¨ - å°æ°æ´¾](http://sspai.com/25270)\n\n- [iFTTT å
¥é¨ä»ç»ä¸ç®å使ç¨è®¾ç½®æç¨ - 让äºèç½æå¡æ´å æºè½èªå¨åå°ä¸ºä½ å·¥ä½ï¼ | 弿¬¡å
软件ä¸è½½](http://www.iplaysoft.com/ifttt.html)\n\n- [ä½ ä¸ç¥éè¿ä¸ªå«IFTTTçä¸è¥¿å°åºæå¤å¥½ç©](http://mp.weixin.qq.com/s?__biz=MzA3NDYwMjk5NQ==&mid=204868306&idx=1&sn=f6f78d5858b6f50cc3c32886b2b74cb3&scene=2&from=timeline&isappinstalled=0#rd)"},{"slug":"2073","title":"ãJavaScripté«çº§ç¨åºè®¾è®¡ã读书ç¬è®°","tags":[],"body":"è士æ¯äºæ¾ç»è¯´è¿ï¼â好记æ§ä¸å¦çç¬å¤´ãâ\n\n## 第ä¸ç« JavaScriptç®ä»\n\n### 1.1 JavaScriptç®å²\n\n### 1.2 JavaScriptå®ç°\n\n1. ä¸ä¸ªå®æ´çJavaScriptå®ç°åºè¯¥ç±ä¸ä¸ªä¸åçé¨åç»æï¼æ ¸å¿ï¼ECMAScriptï¼ãææ¡£å¯¹è±¡æ¨¡åï¼DOMï¼ãæµè§å¨å¯¹è±¡æ¨¡åï¼BOMï¼ã\n\n2. ECMAScriptï¼æä¾æ ¸å¿è¯è¨åè½ï¼DOMï¼æä¾è®¿é®åæä½ç½é¡µå
å®¹çæ¹æ³åæ¥å£ï¼BOMï¼æä¾ä¸æµè§å¨äº¤äºçæ¹æ³åæ¥å£ã\n\n### 1.3 JavaScriptçæ¬\n\n \n\n## 第äºç« å¨HTMLä¸ä½¿ç¨JavaScript\n\n### 2.1 scriptå
ç´ \n\n1. æ ç¾çä½ç½®ï¼ä¸ºäºé¿å
æµè§å¨å¨åç°é¡µé¢æ¶åºç°ææ¾çå»¶è¿ï¼ç°ä»£Webåºç¨ç¨åºä¸è¬é½æå
¨é¨JavaScriptå¼ç¨æ¾å¨<body>å
ç´ ä¸é¡µé¢å
容çåé¢ã\n\n2. å»¶è¿èæ¬ï¼defer屿§è¡¨æèæ¬å¨æ§è¡æ¶ä¸ä¼å½±å页é¢çæé ï¼èæ¬ä¼è¢«å»¶è¿å°æ´ä¸ªé¡µé¢é½è§£æå®æ¯ååè¿è¡ï¼åªéç¨äºå¤é¨èæ¬æä»¶ã\n\n```html\n
318<script defer=\"defer\" src=\"example.js\"><\/script>\n```\n\n3. 弿¥èæ¬ï¼async屿§è¡¨ç¤ºå½åèæ¬ä¸å¿
çå¾
å
¶ä»èæ¬ï¼ä¹ä¸å¿
é»å¡ææ¡£åç°ï¼åè¯æµè§å¨ç«å³ä¸è½½æä»¶ï¼ä¸å¹¶ä¸ä¿è¯æ 记为asyncçèæ¬æç
§ä»ä»¬çå
åé¡ºåºæ§è¡ï¼åªéç¨äºå¤é¨èæ¬æä»¶ã\n\n```html\n
318<script async src=\"example1.js\"><\/script>\n
318<script async src=\"example2.js\"><\/script>\n```\n\n### 2.2 åµå
¥ä»£ç ä¸å¤é¨æä»¶\n\n### 2.3 ææ¡£æ¨¡å¼\n\n4. æ··ææ¨¡å¼ä¸æ 忍¡å¼ï¼å¼å¯æ 忍¡å¼ï¼\n\n```html\n<!-- HTML 5 -->\n<!DOCTYPE html>\n```\n\n### 2.4 noscriptå
ç´ \n\n \n\n## 第ä¸ç« åºæ¬æ¦å¿µ\n\n### 3.1 è¯æ³\n\n1. åºå大å°åï¼ECMAScriptä¸çä¸åé½åºå大å°åã\n\n2. ä¸¥æ ¼æ¨¡å¼ï¼å¨ä¸¥æ ¼æ¨¡å¼ä¸ï¼ECMAScript 3 ä¸çä¸äºä¸ç¡®å®çè¡ä¸ºå°å¾å°å¤çï¼èä¸å¯¹æäºä¸å®å
¨çæä½ä¹ä¼æåºé误ãå¨é¡¶é¨æ·»å å¦ä¸ä»£ç ï¼\n\n```js\n\"use strict\";\n```\n\n### 3.2 å
³é®ååä¿çå\n\n### 3.3 åé\n\n3. ç»æªç»å£°æçåéèµå¼å¨ä¸¥æ ¼æ¨¡å¼ä¸ä¼å¯¼è´æåº ReferenceError é误ã\n\n### 3.4 æ°æ®ç±»å\n\n4. typeofæä½ç¬¦ï¼ç¨æ¥æ£æµåéçæ°æ®ç±»åã\n\n5. 5ç§ç®åæ°æ®ç±»åï¼UndefinedãNullãBooleanãNumberãStringï¼1ç§å¤ææ°æ®ç±»åï¼å¼ç¨ç±»åï¼ï¼Objectã\n\n- Undefinedç±»åï¼ä½¿ç¨var声æåé使ªå¯¹å
¶å 以åå§åæ¶ï¼è¿ä¸ªåéçå¼å°±æ¯undefinedã\n\n- Nullç±»åï¼nullå¼è¡¨ç¤ºä¸ä¸ªç©ºå¯¹è±¡æéï¼åªè¦æå¨ä¿å对象çåéè¿æ²¡æçæ£ä¿å对象ï¼å°±åºè¯¥æç¡®å°è®©è¯¥åéä¿ånullå¼ã\n\n- Booleanç±»åï¼å
¶ä»ç±»å转æ¢ä¸ºBooleanç±»åï¼ä½¿ç¨å½æ°Boolean()ã\n\n- Numberç±»åï¼å
¶ä»ç±»å转æ¢ä¸ºNumberç±»åï¼å¸¸ç¨å½æ°parseInt()ï¼è½¬æ¢å符串æ¶ï¼å¦æç¬¬ä¸ä¸ªåç¬¦ä¸æ¯æ°åå符æè
è´å·ï¼ä¼è¿åNaNï¼ç¬¬äºä¸ªåæ°å¯éï¼è¡¨ç¤ºè¿å¶\n\n- Stringç±»åï¼å符串æ¯ä¸å¯åçï¼å
¶ä»ç±»å转æ¢ä¸ºStringç±»åï¼ä½¿ç¨å½æ°toString()æString()æå ä¸ä¸ªç©ºå符串ï¼1+''ï¼ã\n\n- Objectç±»å\n\nåå»ºå¯¹è±¡çæ¹æ³ï¼\n\n```js\nvar o = new Object();\n```\n\nå建Object对象çå®ä¾å¹¶ä¸ºå
¶æ·»å 屿§ææ¹æ³ï¼å°±å¯ä»¥å建èªå®ä¹å¯¹è±¡ï¼\n\nObjectç±»åæ¯ææå®çå®ä¾çåºç¡ï¼å
·æä¸å屿§åæ¹æ³ï¼\n\n- constructorï¼ä¿ççç¨äºå建å½å对象ç彿°å³æé 彿°ï¼\n\n- hasOwnProperty(propertyName)ï¼ç¨äºæ£æ¥ç»å®ç屿§å¨å½å对象å®ä¾ä¸æ¯å¦åå¨ï¼\n\n- isPrototypeOf(object)ï¼ç¨äºæ£æ¥ä¼ å
¥ç对象æ¯å¦æ¯ä¼ å
¥å¯¹è±¡çååï¼\n\n- propertyIsEnumerable()ï¼toLocaleString()ï¼\n\n- toString()ï¼è¿å对象çå符串表示ï¼\n\n- valueOf()ï¼è¿å对象çåç¬¦ä¸²ãæ°å¼æå¸å°å¼è¡¨ç¤ºï¼\n\n### 3.5 æä½ç¬¦\n\n6. 卿¯
318è¾å符串æ¶ï¼å®é
æ¯è¾çæ¯ä¸¤ä¸ªå符串ä¸å¯¹åºä½ç½®çæ¯ä¸ªå符çå符ç¼ç å¼ã\n\n```js\n\"23\" < \"3\"; // true\n```\n\n7. 卿¯è¾æ°å¼åå符串æ¶ï¼å符串é½ä¼è¢«è¢«è½¬æ¢ææ°å¼ï¼ç¶åå以æ°å¼æ¹å¼ä¸å¦ä¸ä¸ªæ°å¼æ¯è¾ï¼å¦æä¸è½è½¬æ¢ææ°å¼ï¼å°±è½¬æ¢æNaNã\n\n8. 任使使°ä¸NaNè¿è¡æ¯è¾ï¼ç»æé½æ¯falseã\n\n```js\nNaN == NaN; // false\nNaN === NaN; // false\nNaN & gt;\nNaN; // false\nNaN & lt;\nNaN; // false\n```\n\n9. ç¸çï¼==ï¼ å
¨çï¼===ï¼ï¼å
¨çåªå¨ä¸¤ä¸ªæä½æ°æªç»è½¬æ¢å°±ç¸ççæ
åµä¸è¿åtrueã\n\n```js\n\"55\" == 55; // true\n\"55\" === 55; // false\n```\n\n10. æ¡ä»¶æä½ç¬¦\n\n```js\nvariable = boolean_expression ? true_value : false_value;\n```\n\n### 3.6 è¯å¥\n\n11. ç±äºECMAScriptä¸ä¸åå¨å级ä½ç¨åï¼å æ¤å¨å¾ªç¯å
é¨å®ä¹çåéä¹å¯ä»¥å¨å¤é¨è®¿é®å°ï¼\n\n```js\nfor (var i = 0; i < 10; i++) {\n\tvar j = 1;\n}\nconsole.log(i, j); // 10 1\n```\n\n12. for-in è¯å¥å¯ä»¥ç¨æ¥æä¸¾å¯¹è±¡ç屿§ã\n\n```js\nfor (property in expression) {\n ...\n}\n```\n\n13. break å continue è¯å¥ä¸ label è¯å¥èå使ç¨ï¼å¤åçå¨å¾ªç¯åµå¥çæ
åµä¸ã\n\n```js\nvar num = 0;\n\noutermost:\nfor (var i = 0; i < 10; i++) {\n\tfor (var j = 0; j < 10; j++) {\n\t\tif (i == 5 && j ==5) {\n\t\t\tbreak outermost;\n\t\t}\n\t\tnum++;\n\t}\n}\n\nconsole.log(num); // 55\n```\n\n### 3.7 彿°\n\n14. 彿°åæ°ï¼åæ°å¨å
鍿¯ç¨ä¸ä¸ªæ°ç»æ¥è¡¨ç¤ºçï¼å½æ°æ¥æ¶å°çå§ç»é½æ¯è¿ä¸ªæ°ç»ï¼èä¸å
³å¿æ°ç»ä¸å
å«åªäºå½æ°ï¼éè¿arguments对象æ¥è®¿é®è¿ä¸ªåæ°æ°ç»ï¼å½åçåæ°åªæä¾ä¾¿å©ï¼ä½ä¸æ¯å¿
éçï¼arguments对象ä¸çå¼ä¸å¯¹åºçå½ååæ°çå
åç©ºé´æ¯ç¬ç«çï¼ä½å®ä»¬çå¼ä¼åæ¥ã\n\n```js\nfunction example(name, age) {\n console.log(\"arguments:\", arguments);\n console.log(\"name:\", name, \"age:\", age);\n name = \"DIYgod\";\n console.log(arguments[0]);\n}\nexample(\"Anotherhome\", \"556\", \"www.anotherhome.net\");\n\n// arguments: [\"Anotherhome\", \"556\", \"www.anotherhome.net\"]\n// name: Anotherhome age: 556\n// DIYgod\n```\n\n \n\n## 第åç« åéãä½ç¨ååå
åé®é¢\n\n### 4.1 åºæ¬ç±»ååå¼ç¨ç±»åçå¼\n\n1. 卿ä½å¯¹è±¡æ¶ï¼å®é
䏿¯å¨æä½å¯¹è±¡çå¼ç¨è䏿¯å®é
ç对象ã\n\n2.ä»ä¸ä¸ªåéåå¦ä¸ä¸ªåéå¤å¶åºæ¬ç±»åç弿¶ï¼ä¼å建è¿ä¸ªå¼çä¸ä¸ªå¯æ¬ï¼ä»ä¸ä¸ªåéåå¦ä¸ä¸ªåéå¤å¶å¼ç¨ç±»åç弿¶ï¼å¤å¶çæ¯æååå¨å¨å ä¸çä¸ä¸ªå¯¹è±¡çæéï¼å¤å¶ä¹å两个åéæååä¸ä¸ªå¯¹è±¡ã\n\n```js\nvar o1 = {};\nvar o2 = o1;\no1.name = \"DIYgod\";\nconsole.log(o2.name); // DIYgod\n\nvar n1 = 1;\nvar n2 = n1;\nn1 = 2;\nconsole.log(n2); // 1\n```\n\n3. ä¼ éåæ°ï¼åæ°åªè½æå¼ä¼ éï¼åæ°ä¸ºå¯¹è±¡æ¶ï¼å¨å½æ°å
é¨è®¿é®çæ¯åä¸ä¸ªå¯¹è±¡ã\n\n```js\nfunction setName(o) {\n o.name = \"DIYgod\";\n o = {};\n o.name = \"Anotherhome\";\n}\n\nvar p = {};\nsetName(p);\nconsole.log(p.name); // DIYgod\n```\n\n4. ç¡®å®ä¸ä¸ªå¼æ¯åªç§åºæ¬ç±»åå¯ä»¥ä½¿ç¨typeofæä½ç¬¦ï¼èç¡®å®ä¸ä¸ªå¼æ¯åªç§å¼ç¨ç±»åå¯ä»¥ä½¿ç¨instanceofæä½ç¬¦ã\n\n### 4.2 æ§è¡ç¯å¢åä½ç¨å\n\n5. æ§è¡ç¯å¢æå
¨å±æ§è¡ç¯å¢å彿°æ§è¡ç¯å¢ä¹åï¼æ¯ä¸ªæ§è¡ç¯å¢é½æä¸ä¸ªä¸ä¹å
³èçåéå¯¹è±¡ï¼æ¯æ¬¡è¿å
¥ä¸ä¸ªæ°æ§è¡ç¯å¢ï¼é½ä¼å建ä¸ä¸ªç¨äºæç´¢åéå彿°çä½ç¨åé¾ï¼ä½ç¨é¾çå端æ¯å½åæ§è¡çä»£ç æå¨çåéç¯å¢ï¼æåä¸ä¸ªå¯¹è±¡æ¯å
¨å±æ§è¡ç¯å¢çåé对象ã\n\n6. æ¥è¯¢æ è¯ç¬¦ï¼ä»ä½ç¨åé¾çå端å¼å§ï¼åä¸é级æ¥è¯¢ï¼æ¾å°åæç´¢ç»æåæ¢ï¼æ²¡ææ¾å°åä¸ç´è¿½æº¯å°å
¨å±ç¯å¢çåé对象ã\n\n### 4.3 åå¾åæ¶\n\n7. æå¸¸ç¨çå徿鿹弿¯æ è®°æ¸
é¤ï¼åå¾åæ¶å¨å¨è¿è¡æ¶ä¼ç»åå¨å¨å
åä¸çææåéé½å 䏿 è®°ï¼ç¶å廿ç¯å¢ä¸çåé以å被ç¯å¢ä¸çåéå¼ç¨çåéçæ è®°ï¼è卿¤ä¹åè¿ææ è®°çåé被è§ä¸ºåå¤å é¤çåéï¼å 为è¿äºåéæ æ³è¢«è®¿é®å°äºã\n\n8. ä¼åå
åå ç¨ï¼ä¸ºæ§è¡ä¸ç代ç åªä¿åå¿
è¦çæ°æ®ï¼ä¸æ¦æ°æ®ä¸åæç¨ï¼æå¥½éè¿å°å
¶å¼è®¾ç½®ä¸ºnullæ¥éæ¾å
¶å¼ç¨ââè§£é¤å¼ç¨ï¼è§£é¤å¼ç¨çä½ç¨æ¯è®©å
¶å¼è±ç¦»æ§è¡ç¯å¢ï¼
318以便å徿éå¨ä¸æ¬¡è¿è¡æ¶å°å
¶åæ¶ã\n\n \n\n## 第äºç« å¼ç¨ç±»å\n\n### 5.1 Objectç±»å\n\n1. å建Objectå®ä¾ï¼ä½¿ç¨Objectæé 彿°ï¼å¯¹è±¡åé¢éã\n\n```js\n// new æä½ç¬¦æ³\nvar o1 = new Object();\no1.name = \"DIYgod\";\no1.age = 20;\n\n// 对象åé¢é表示æ³\nvar o1 = {\n name: \"DIYgod\",\n age: 20,\n};\n```\n\n2. 访é®å¯¹è±¡å±æ§ï¼ç¹è¡¨ç¤ºæ³ï¼æ¹æ¬å·è¡¨ç¤ºæ³ã建议使ç¨ç¹è¡¨ç¤ºæ³ã\n\n```js\n// ç¹è¡¨ç¤ºæ³\nconsole.log(o.name);\n\n// æ¹æ¬å·è¡¨ç¤ºæ³\nconsole.log(o['name']);\n\nvar n = 'name';\nconsole.log(o[n]);\n\nconsole.log(o['first name'];\n```\n\n### 5.2 Arrayç±»å\n\n3. å建æ°ç»ï¼ä½¿ç¨Arrayæé 彿°ï¼ä½¿ç¨æ°ç»åé¢é表示æ³ã\n\n```js\nvar a1 = new Array();\nvar a2 = new Array(20);\nvar a3 = new Array(\"red\", \"blue\", \"green\");\n\nvar a4 = [];\nvar a5 = [\"red\", \"blue\", \"green\"];\n```\n\n4. å©ç¨length卿«å°¾æ·»å æ°é¡¹ã\n\n```js\nvar a = [\"a\", \"b\"];\na[a.length] = \"c\";\n```\n\n5. æ£æµæ°ç»ï¼Array.isArray()ï¼è§£å³äºåå¨ä¸¤ä¸ªä»¥ä¸å
¨å±æ§è¡ç¯å¢æ¶instanceofæ£æµç»æåºéçæ
åµï¼ã\n\n6. æ æ¹æ³åéåæ¹æ³ï¼push()æ·»å ä¸é¡¹å°æ°ç»æ«å°¾ï¼pop()ç§»é¤æ°ç»æ«å°¾ä¸é¡¹ï¼shift()ç§»é¤æ°ç»ç¬¬ä¸é¡¹ï¼unshift()ï¼æ·»å ä¸é¡¹å°æ°ç»å端ã\n\n7. éæåº\n\n- reverse()ï¼å转æ°ç»é¡¹ç顺åºã\n\n- sort()ï¼é»è®¤å°æ°ç»é¡¹è½¬æ¢æå符串ç¶åååºæåãå¯ä»¥æ¥æ¶ä¸ä¸ªæ¯è¾å½æ°ä½ä¸ºåæ°ã\n\næ¯è¾å½æ°æ¥æ¶ä¸¤ä¸ªåæ°ï¼å¦æç¬¬ä¸ä¸ªåæ°ä½äºç¬¬äºä¸ªåæ°ä¹ååè¿åä¸ä¸ªè´æ°ï¼ç¸çåè¿å0ï¼ç¬¬äºä¸ªåæ°ä½äºç¬¬ä¸ä¸ªåæ°ä¹ååè¿åä¸ä¸ªè´æ°ã\n\n```js\nvar a = [0, 1, 15, 10, 5];\na.sort();\nconsole.log(a); // [0, 1, 10, 15, 5]\n\nfunction compare(value1, value2) {\n return value1 - value2;\n}\na.sort(compare);\nconsole.log(a); // [0, 1, 5, 10, 15]\n```\n\n8. æä½æ¹æ³\n\n- concat()ï¼æ·»å 项\n\n```js\nvar a1 = [\"red\", \"green\", \"blue\"];\nvar a2 = a1.concat(\"yellow\", [\"black\", \"brown\"]);\nconsole.log(a2); // [\"red\", \"green\", \"blue\", \"yellow\", \"black\", \"brown\"]\n```\n\n- slice()ï¼æªå\n\n```js\nvar a = [\"red\", \"green\", \"blue\", \"yellow\", \"black\", \"brown\"];\nconsole.log(a.slice(1), a.slice(1, 4)); // [\"green\", \"blue\", \"yellow\", \"black\", \"brown\"] [\"green\", \"blue\", \"yellow\"]\n```\n\n- splice()ï¼å 餿å
¥æ¿æ¢\n\n```js\nvar a = [\"red\", \"green\", \"blue\", \"yellow\", \"black\", \"brown\"];\nconsole.log(a.splice(2, 1), a); // å é¤é¡¹; [\"blue\"] [\"red\", \"green\", \"yellow\", \"black\", \"brown\"]\nconsole.log(a.splice(1, 0, \"yellow\", \"orange\"), a); // æå
¥é¡¹; [] [\"red\", \"yellow\", \"orange\", \"green\", \"yellow\", \"black\", \"brown\"]\nconsole.log(a.splice(1, 1, \"red\", \"purple\"), a); // æ¿æ¢é¡¹; [\"yellow\"] [\"red\", \"red\", \"purple\", \"orange\", \"green\", \"yellow\", \"black\", \"brown\"]\n```\n\n9. ä½ç½®æ¹æ³ï¼indexOf() lastIndexOf() æ¥æ¶ä¸¤ä¸ªåæ°ï¼è¦æ¥æ¾ç项åï¼å¯éï¼æ¥æ¾èµ·ç¹ä½ç½®çç´¢å¼ï¼indexOf()ä»åå¾åæ¥æ¾ï¼lastIndexOf()ä»åå¾åæ¥æ¾ï¼è¿åè¦æ¥æ¾ç项çä½ç½®ï¼æ²¡æ¾å°åè¿å-1ã\n\n```js\nvar a = [\"red\", \"purple\", \"orange\", \"green\", \"red\", \"yellow\", \"black\", \"brown\"];\nconsole.log(a.indexOf(\"red\")); // 0\nconsole.log(a.lastIndexOf(\"red\")); // 4\nconsole.log(a.indexOf(\"red\", 1)); // 4\nconsole.log(a.lastIndexOf(\"red\", 1)); // 0\n```\n\n10. è¿ä»£æ¹æ³ï¼every() some() filter() map() forEach()ã\n\n```js\nvar a = [1, 2, 3, 4, 5, 4, 3, 2, 1];\n\nvar everyResult = a.every(function (item, index, array) {\n\treturn (item > 2);\n});\nconsole.log(everyResult); // false\n\nvar someResult = a.some(function (item, index, array) {\n\treturn (item > 2);\n});\nconsole.log(someResult); // true\n\nvar filterResult = a.filter(function (item, index, array) {\n\treturn (item > 2);\n});\nconsole.log(filterResult); // [3, 4, 5, 4, 3]\n\nvar mapResult = a.map(function (item, index, array) {\n\treturn (item * 2);\n});\nconsole.log(mapResult);
318 // [2, 4, 6, 8, 10, 8, 6, 4, 2]\n\nvar forEachResult = a.forEach(function (item, index, array) {\n\tconsole.log(item);\n});\nconsole.log(forEachResult); // undefined\n```\n\n11. å½å¹¶æ¹æ³\n\n```js\nvar a = [1, 2, 3, 2, 1];\n\nvar sum1 = a.reduce(function (prev, cur, index, array) {\n console.log(index); // 1 2 3 4\n return prev + cur;\n});\nconsole.log(sum1); // 9\n\nvar sum2 = a.reduceRight(function (prev, cur, index, array) {\n console.log(index); // 3 2 1 0\n return prev + cur;\n});\nconsole.log(sum2); // 9\n```\n\n### 5.3 Dateç±»å\n\n1. åå»ºæ¥æå¯¹è±¡ï¼æä»½åºäº0ï¼ä¸ææ¯0ï¼äºææ¯1...ï¼ã\n\n```js\nvar d1 = new Date();\n\nvar d2 = new Date(2015, 2, 5, 17, 55, 55); // 2015å¹´3æ5æ¥ä¸å5ç¹55å55ç§\n```\n\n2. è·åè°ç¨æ¶çæ¥æåæ¶é´åæ¯«ç§æ°ï¼å¯ä»¥ç¨æ¥åæä»£ç ã\n\n```js\nvar start = Date.now();\ndoSomething();\nvar stop = Date.now();\nvar result = stop - start;\n```\n\n3. æ¥ææ ¼å¼åæ¹æ³ï¼local表示以ç¹å®äºå°åºçæ ¼å¼æ¾ç¤ºã\n\n```js\nvar d2 = new Date(2015, 2, 5, 17, 55, 55);\nd2.toString(); // \"Thu Mar 05 2015 17:55:55 GMT+0800 (CST)\"\nd2.toDateString(); // \"Thu Mar 05 2015\"\nd2.toTimeString(); // \"17:55:55 GMT+0800 (CST)\"\nd2.toLocaleString(); // \"2015/3/5 ä¸å5:55:55\"\nd2.toLocaleDateString(); // \"2015/3/5\"\nd2.toLocaleTimeString(); // \"ä¸å5:55:55\"\n```\n\n### 5.4 RegExpç±»å\n\n1. å建ä¸ä¸ªæ£å表达å¼ï¼\n\npatterné¨åæ¯æ£å表达å¼\n\nflagsï¼æ å¿ï¼æ ææ£å表达å¼çè¡ä¸ºï¼g å
¨å±æ¨¡å¼ï¼i ä¸åºå大å°åï¼m å¤è¡æ¨¡å¼\n\n```js\nvar exp1 = / pattern / flags\nvar exp2 = new RegExp('pattern', 'flags');\n```\n\n2. å®ä¾æ¹æ³ï¼\n\n- exec()ï¼è¿å第ä¸ä¸ªå¹é
项信æ¯çæ°ç»ï¼æ°ç»ç¬¬ä¸é¡¹æ¯ä¸æ´ä¸ªæ¨¡å¼å¹é
çå符串ï¼å
¶ä»é¡¹æ¯ä¸æ¨¡å¼ä¸çæè·ç»å¹é
çå符串ï¼è¿å
å«ä¸¤ä¸ªé¢å¤ç屿§ï¼index å inputã\n\n```js\nvar text = \"I'm DIYgod, and this is Anotherhome\";\nvar pattern = /and( this( is)?)?/gi;\nvar matches = pattern.exec(text);\nconsole.log(matches.index); // 12\nconsole.log(matches.input); // I'm DIYgod, and this is Anotherhome\nconsole.log(matches[0]); // and this is\nconsole.log(matches[1]); // this is\nconsole.log(matches[2]); // is\n```\n\n- test()ï¼å¨æ¨¡å¼ä¸è¯¥åæ°å¹é
çæ
åµä¸è¿åtrueï¼å¦åè¿åfalseã\n\n```js\nvar text = \"I'm DIYgod, and this is Anotherhome\";\nvar pattern = /DIYgod/;\nvar matches = pattern.test(text);\nconsole.log(matches); // true\n```\n\n3. RegExpæé 彿°å
å«ä¸äºå±æ§ï¼éç¨äºä½ç¨åä¸çæææ£å表达å¼ï¼è®°å½ä¸äºæè¿ä¸æ¬¡æ£åè¡¨è¾¾å¼æä½çä¿¡æ¯ã\n\n### 5.5 Functionç±»å\n\n1. å®ä¹å½æ°ï¼å½æ°å®é
䏿¯ Function ç±»åçå®ä¾ï¼å æ¤å½æ°ä¹æ¯å¯¹è±¡ã\n\n```js\n// 使ç¨å½æ°å£°æè¯æ³\nfunction f1(n1, n2) {\n return n1 + n2;\n}\n\n// 使ç¨å½æ°è¡¨è¾¾å¼\nvar f2 = function (n1, n2) {\n return n1 + n2;\n};\n\n// ä½¿ç¨æé 彿°ï¼ä¸æ¨è\nvar f3 = new Function(\"n1\", \"n2\", \"return n1 + n2\");\n```\n\n2. 彿°åæ¯ä¸ä¸ªæå彿°å¯¹è±¡çæéã\n\n```js\nfunction f1(n1, n2) {\n return n1 + n2;\n}\nvar f2 = f1;\nf1 = null;\nconsole.log(f2(1, 1)); // 2\n```\n\n3. ECMAScript䏿²¡æå½æ°éè½½ã\n\n4. 彿°å£°æä¸å½æ°è¡¨è¾¾å¼çåºå«ï¼è§£éå¨ä¼çå
读å彿°å£°æï¼å¹¶ä½¿å
¶å¨æ§è¡ä»»ä½ä»£ç ä¹åå¯ç¨ï¼å½æ°å£°ææåï¼ï¼å½æ°è¡¨è¾¾å¼å¿
é¡»çå°è§£é卿§è¡å°å®æå¨è¡æä¼çæ£è¢«è§£éæ§è¡ã\n\n```js\nconsole.log(f1(1, 1)); // 2\nfunction f1(n1, n2) {\n return n1 + n2;\n}\n\nconsole.log(f2(1, 1)); // Uncaught TypeError: f2 is not a function\nvar f2 = function (n1, n2) {\n return n1 + n2;\n};\n```\n\n5. 彿°å
é¨å±æ§\n\n- 彿°çarguments对象çcallee屿§ï¼æ¯ä¸ä¸ªæéï¼æåæ¥æè¿ä¸ªarguments对象ç彿°ãå¯ä»¥å¨é彿¶åå°å½æ°å彿°åçè¦åã\n\n```js\n// ææ¾ç¬¬äºç§åæ³æ´å¥½ä¸äº\n\nfunction factorial1 (num) {\n\tif (num <= 1) {\n\t\treturn 1;\n\t}\n\telse {\n\t\treturn num * factorial1(num - 1);\n\t}\n}\n\nfunction factorial2 (num) {\n\tif (num <= 1) {\n\t\treturn 1;\n\t}\n\telse {\n\t\treturn num * arguments.callee(num - 1);\n\t}\n}\n```\n\n- caller屿§ï¼ä¿åçå½å彿°ç彿°çå¼ç¨ã\n\n```js\nfunction outer() {\n inner();\n}\nfunction inner() {\n console.log(arguments.callee.caller); // function outer()...\n}\nouter();\n```\n\n6. 彿°å±æ§åæ¹æ³\n\n- length屿§ï¼è¡¨ç¤ºå½æ°å¸ææ¥æ¶çå½ååæ°ç个æ°ã\n\n```js\nfunction f(n1, n2) {\n return n1 + n2;\n}\nconsole.log(f.length); // 2\n```\n\n- apply() call()ï¼ç¨æ¥æ¹å彿°çthis对象çå¼ã\n\n```js\nwindow.color = \"red\";\nvar o = {\n color: \"blue\",\n};\n\nfunction sayColor(n1, n2) {\n console.log(this.color);\n return n1 + n2;\n}\n\nsayColor(1, 1); // red\no.sayColor = sayColor;\no.sayColor(); // blue\n\n// 使ç¨callåapplyå¯ä»¥æ¶é¤å¯¹è±¡ä¸æ¹æ³çè¦åå
³ç³»\nsayColor.call(window, 1, 1); // red\nsayColor.call(o, 1, 1); // blue\n\nsayColor.apply(window, [1, 1]); // red\nsayColor.apply(o, [1, 1]); // blue\n```\n\n### 5.6 åºæ¬å
è£
ç±»å\n\nBooleanç±»åãNumberç±»åãStringç±»å\n\nææ¶è·³è¿\n\n### 5.7 åä½å
置对象\n\nGlobal对象ãMath对象\n\nææ¶è·³è¿\n\n \n\n## 第å
ç« é¢å对象çç¨åºè®¾è®¡\n\n### 6.1 ç解对象\n\n1. 两ç§å±æ§ï¼æ°æ®å±æ§å访é®å¨å±æ§ãç¹æ§ï¼æè¿°å±æ§çåç§ç¹å¾ï¼æ¯ä¸ºäºå®ç°JavaScript弿ç¨çï¼ä¸è½ç´æ¥è®¿é®ã\n\n- æ°æ®å±æ§ï¼æ4ä¸ªç¹æ§ï¼\n\n* [[Configurable]]ï¼è¡¨ç¤ºè½å¦éè¿ delete å é¤å±æ§ä»èéæ°å®ä¹å±æ§ï¼è½å¦ä¿®æ¹å±æ§çç¹æ§ï¼è½å¦æå±æ§ä¿®æ¹ä¸ºè®¿é®å¨å±æ§ã\n\n* [[Enumerable]]ï¼è¡¨ç¤ºè½å¦éè¿ for-in 循ç¯è¿å屿§ã\n\n* [[Writeable]]ï¼è¡¨ç¤ºè½å¦ä¿®æ¹å±æ§çå¼ã\n\n* [[Value]]ï¼å
å«è¿ä¸ªå±æ§çæ°æ®å¼ã\n\n- è
318®¿é®å¨å±æ§ï¼æ4ä¸ªç¹æ§ï¼\n\n* [[Configurable]]ï¼è¡¨ç¤ºè½å¦éè¿ delete å é¤å±æ§ä»èéæ°å®ä¹å±æ§ï¼è½å¦ä¿®æ¹å±æ§çç¹æ§ï¼è½å¦æå±æ§ä¿®æ¹ä¸ºæ°æ®å±æ§ã\n\n* [[Enumerable]]ï¼è¡¨ç¤ºè½å¦éè¿ for-in 循ç¯è¿å屿§ã\n\n* [[Get]]ï¼å¨è¯»å屿§æ¶è°ç¨ç彿°ã\n\n* [[Set]]ï¼å¨åå
¥å±æ§æ¶è°ç¨ç彿°ã\n\n2. å®ä¹å读åç¹æ§ï¼Object.defineProperty() Object.defineProperties() Object.getOwnPropertyDescriptor()\n\n### 6.2 å建对象\n\n1. 工忍¡å¼ï¼è½ç¶è§£å³äºå建å¤ä¸ªç¸ä¼¼å¯¹è±¡çé®é¢ï¼ä½å´æ²¡æè§£å³å¯¹è±¡è¯å«çé®é¢ã\n\n```js\nfunction createPerson(name, age, job) {\n var o = new Object();\n o.name = name;\n o.age = age;\n o.job = job;\n o.sayName = function () {\n console.log(this.name);\n };\n return o;\n}\nvar p1 = createPerson(\"DIYgod\", 20, \"Software Engineer\");\nvar p2 = createPerson(\"Anotherhome\", 2, \"Website\");\n```\n\n2. æé 彿°æ¨¡å¼ãï¼æé 彿°åºè¯¥ä»¥å¤§å忝å¼å¤´ï¼\n\n```js\nfunction Person(name, age, job) {\n this.name = name;\n this.age = age;\n this.job = job;\n this.sayName = function () {\n console.log(this.name);\n };\n}\nvar p1 = new Person(\"DIYgod\", 20, \"Software Engineer\");\nvar p2 = new Person(\"Anotherhome\", 2, \"Website\");\n\n// p1 p2 åå«ä¿åç Person çä¸ä¸ªä¸åçå®ä¾ï¼è¿ä¸¤ä¸ªå¯¹è±¡é½æä¸ä¸ª constructor 屿§ï¼è¯¥å±æ§æåPerson\nconsole.log(p1.constructor); // function Person(name, age, job) {...\n\nconsole.log(p1 instanceof Object); // true\nconsole.log(p1 instanceof Person); // true\n```\n\nè¿ç§æ¹æ³ä¼ç»å4个æ¥éª¤ï¼\n\n- å建ä¸ä¸ªæ°å¯¹è±¡\n\n- å°æé 彿°çä½ç¨åèµç»æ°å¯¹è±¡ï¼thisæåè¿ä¸ªæ°å¯¹è±¡ï¼\n\n- æ§è¡æé 彿°ä¸ç代ç ï¼ä¸ºæ°å¯¹è±¡æ·»å 屿§ï¼\n\n- è¿åæ°å¯¹è±¡\n\næé 彿°çé®é¢ï¼æ¯ä¸ªæ¹æ³é½è¦å¨æ¯ä¸ªå®ä¾ä¸éæ°å建ä¸éã\n\n```js\nconsole.log(p1.sayName === p2.sayName); // false\n```\n\n3. å忍¡å¼ï¼æ¯ä¸ªå½æ°é½æä¸ä¸ª prototype 屿§ï¼è¿ä¸ªå±æ§æ¯ä¸ä¸ªæéï¼æåä¸ä¸ªå¯¹è±¡ï¼å½æ°çåå对象ï¼ï¼è¿ä¸ªå¯¹è±¡å
å«å¯ä»¥ç±è¯¥ç±»åçææå®ä¾å
±äº«ç屿§åæ¹æ³ã\n\n```js\n// ç»åä½¿ç¨æé 彿°æ¨¡å¼ä¸å忍¡å¼\nfunction Person(name, age, job) {\n this.name = name;\n this.age = age;\n this.job = job;\n}\nPerson.prototype.sayName = function () {\n console.log(this.name);\n};\nvar p1 = new Person(\"DIYgod\", 20, \"Software Engineer\");\nvar p2 = new Person(\"Anotherhome\", 2, \"Website\");\n\nconsole.log(p1.sayName === p2.sayName); // true\n```\n\n- çè§£åå对象ï¼\n\n* åªè¦å建ä¸ä¸ªæ°å½æ°ï¼å°±ä¼æ ¹æ®ä¸ç»ç¹å®çè§åä¸ºè¯¥å½æ°å建ä¸ä¸ª prototype 屿§ï¼æååå对象\n\n* é»è®¤ææåå对象é½ä¼è·å¾ä¸ä¸ª constructor 屿§ï¼æå prototype 屿§æå¨å½æ°\n\n* è°ç¨æé 彿°å建æ°å®ä¾åï¼å®ä¾å°æä¸ä¸ª **proto** 屿§ï¼æåæé 彿°çååå¯¹è±¡ï¼æéå«[[Prototype]]ï¼é»è®¤ååæåObject\n\n* å®ä¾ä¸æé 彿°æ²¡æç´æ¥å
³ç³»\n\n* 读å屿§ï¼æç´¢å
ä»å¯¹è±¡å®ä¾æ¬èº«å¼å§ï¼å¦ææ²¡æ¾å°ï¼æç´¢åå对象\n\n* ä½¿ç¨ isPrototype() æ¥æ£æµæé 彿°åå®ä¾ä¹é´æ¯å¦æå
³ç³»\n\n* ä½¿ç¨ hasOwnProperty() æ¥æ£æµå±æ§åå¨äºå®ä¾ä¸è¿æ¯ååä¸\n\n- ååä¸ in æä½ç¬¦\n\n```js\n// inæä½ç¬¦ä¼å¨éè¿å¯¹è±¡è½å¤è®¿é®å°å±æ§æ¶è¿åtrue\nconsole.log(\"name\" in p1); // true\n\n// æä¸¾å±æ§\nfor (var prop in p1) {\n console.log(prop); // name age job sayName\n}\n```\n\n- ç¨å¯¹è±¡åé¢ééååå对象\n\n```js\nfunction Person() {}\nPerson.prototype = {\n constructor: Person, // è¿ééåäºprototypeï¼ä¸åé»è®¤æconstructor屿§\n name: \"DIYgod\",\n age: 20,\n};\n```\n\n4. 卿å忍¡å¼ãå¯çæé 彿°æ¨¡å¼ã稳妥æé 彿°æ¨¡å¼\n\n### 6.3 ç»§æ¿\n\n5. JavaScript䏿叏ç¨çç»§æ¿ï¼ç»åç»§æ¿ãèåäºååé¾åæé 彿°çä¼ç¹ã\n\n```js\nfunction SuperType(name) {\n this.name = name;\n this.color = [\"red\", \"blue\", \"green\"];\n}\nSuperType.prototype.sayName = function () {\n console.log(this.name);\n};\n\nfunction SubType(name, age) {\n SuperType.call(this, name); // åç¨æé 彿°\n this.age = age;\n}\nSubType.prototype = new SuperType(); // ååé¾\nSubType.prototype.constructor = SubType; // construcotrå¨ä¸ä¸å¥ä¸è¢«éå\nSubType.prototype.sayAge = function () {\n console.log(this.age);\n};\n\nvar instance = new SubType(\"DIYgod\", 20);\ninstance.sayName(); // DIYgod\ninstance.sayAge(); // 20\n```\n\n6. ç¡®å®åååå®ä¾çå
³ç³»ãæ¥ä¸ä¾ï¼\n\n```js\nconsole.log(instance instanceof SuperType); // true\nconsole.log(SuperType.prototype.isPrototypeOf(instance)); // true\n```\n\n7. ååå¼ç»§æ¿ãå¯çå¼ç»§æ¿ãå¯çç»åå¼ç»§æ¿\n\n## 第ä¸ç« 彿°è¡¨è¾¾å¼\n\n### 7.1 éå½\n\n### 7.2 éå
\n\n1. éå
æ¯ææè®¿é®å¦ä¸ä¸ªå½æ°ä½ç¨åä¸çåéç彿°ã\n\n2. ï¼ä½ç¨åé¾è§4.2ï¼å¨å¤é¨å½æ°å
é¨å®ä¹çå
é¨å½æ°å°å
å«å¤é¨å½æ°çæ´»å¨å¯¹è±¡æ·»å å°å®çä½ç¨åä¸ï¼å¤é¨å½æ°æ§è¡å®æ¯åï¼å
¶æ´»å¨å¯¹è±¡ä¸ä¼è¢«éæ¯ï¼å 为å
é¨å½æ°çä½ç¨åé¾ä»ç¶å¨å¼ç¨è¿ä¸ªæ´»å¨å¯¹è±¡ï¼å¤é¨å½æ°æ§è¡å®æ¯åï¼å
é¨å½æ°ä»ç¶å¯ä»¥è®¿é®å°å
¶å®ä¹çææåéã\n\n```js\nfunction outer() {\n var name = \"DIYgod\";\n return function () {\n console.log(name);\n };\n}\nvar inner = outer();\ninner(); // DIYgod\ninner = null; // è§£é¤å¯¹outerå
é¨çå¿å彿°çå¼ç¨ï¼ä»¥ä¾¿éæ¾å
å\n```\n\n3. éå
åªè½åå¾å
å«å½æ°ä¸ä»»ä½åéçæåä¸ä¸ªå¼ã\n\n```js\nfunction createFunction () {\n\tvar result = [];\n\tfor (var i = 0; i < 10;
318 i++) {\n\t\tresult[i] = function () {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn result;\n}\nconsole.log(createFunction()[0]()); // 10\nconsole.log(createFunction()[1]()); // 10\n// è¿åç齿¯åä¸ä¸ªåéi\n```\n\n4. å¿å彿°çthisé叏伿åwindowã\n\n```js\nvar name = \"The Window\";\nvar object = {\n name: \"My Object\",\n getNameFunc: function () {\n return function () {\n return this.name;\n };\n },\n};\nconsole.log(object.getNameFunc()()); // The Window\n```\n\n### 7.3 模仿å级ä½ç¨å\n\n5. ç¨å¿å彿°æ¥æ¨¡ä»¿å级ä½ç¨åï¼ç¬¬ä¸ä¸ªæ¬å·çä½ç¨æ¯å°å½æ°å£°æè½¬æ¢æå½æ°è¡¨è¾¾å¼ï¼å½æ°å£°æä¸è½éè¿åé¢å æ¬å·æ¥è°ç¨ï¼ï¼ç¬¬äºä¸ªæ¬å·æ¥è°ç¨è¿ä¸ªå½æ°ã\n\n```js\n(function () {\n var i = 9;\n console.log(i); // 9\n})();\nconsole.log(i); // Uncaught ReferenceError: i is not defined\n```\n\n### 7.4 éæå¯¹è±¡\n\n6. ä»»ä½å¨å½æ°ä¸å®ä¹çåéï¼é½å¯ä»¥è®¤ä¸ºæ¯ç§æåéã\n\n7. ææè®¿é®ç§æåéåç§æå½æ°çå
¬ææ¹æ³ç§°ä¸ºç¹ææ¹æ³ã\n\n```js\nfunction MyObject() {\n // ç§æåéåç§æå½æ°\n var privateVariable = \"DIYgod\";\n function privateFunction() {\n console.log(\"lalala\");\n }\n\n // ç¹ææ¹æ³\n this.publicMethod = function () {\n console.log(privateVariable);\n privateFunction();\n };\n}\nvar o = new MyObject();\no.publicMethod(); // DIYgod lalala\no.privateFunction(); // Uncaught TypeError: o.privateFunction is not a function\n```\n\n...\n\n## 第åä¸ç« äºä»¶\n\n### 13.1äºä»¶æµ\n\n1. äºä»¶å泡ï¼äºä»¶å¼å§æ¶ç±æå
·ä½çå
ç´ æ¥æ¶ï¼ç¶åé级åä¸ä¼ æå°è¾ä¸ºä¸å
·ä½çèç¹ï¼IE9ãFireFoxãChrome å Safari å°äºä»¶ä¸ç´åæ³¡å° window 对象ã\n\n2. äºä»¶æè·ï¼ç±äºèçæ¬çæµè§å¨ä¸æ¯æï¼å æ¤å¾å°æäººä½¿ç¨äºä»¶æè·ã\n\n3. âDOM2级äºä»¶âè§å®çäºä»¶æµå
æ¬ä¸ä¸ªé¶æ®µï¼äºä»¶æè·é¶æ®µãå¤äºç®æ é¶æ®µåäºä»¶åæ³¡é¶æ®µã\n\n###
31813.2 äºä»¶å¤çç¨åº\n\n4. HTMLäºä»¶å¤çç¨åºï¼æ©å±ä½ç¨åï¼å¨å½æ°å
é¨å¯ä»¥å访é®å±é¨åé䏿 ·è®¿é®documentå该å
ç´ æ¬èº«çæåï¼æ åï¼\n\n```js\n<input type=\"button\" value=\"Click Me\" onclick=\"alert(value)\">\n```\n\n妿æ¯ä¸ä¸ªè¡¨åè¾å
¥å
ç´ ï¼åä½ç¨åä¸è¿ä¼å
å«è®¿é®è¡¨åå
ç´ çå
¥å£ï¼æ åï¼\n\n```js\n<form method=\"post\">\n <input type=\"text\" name=\"username\" value=\"\">\n <input type=\"button\" value=\"Echo username\" onclick=\"alert(username.value)\">\n</form>\n```\n\n缺ç¹ï¼â å卿¶å·®é®é¢ï¼è§£æå½æ°ä¹å就触åäºä»¶ä¼å¼åé误 â¡æ©å±å¤çç¨åºçä½ç¨åé¾å¨ä¸åæµè§å¨ä¸ä¼å¯¼è´ä¸åç»æ â¢å¯¼è´HTMLåJavaScript代ç ç´§å¯è¦åã\n\n5. DOM0级äºä»¶å¤çç¨åº\n\n```js\n// ç»å®äºä»¶å¤çç¨åº\nvar btn = document.getElementById(\"myButton\");\nbtn.onclick = function () {\n console.log(this.id); // myButton\n};\n\n// å é¤äºä»¶å¤çç¨åº\nbtn.onclick = null;\n```\n\n以è¿ç§æ¹å¼æ·»å çäºä»¶å¤çç¨åºä¼å¨äºä»¶æµçåæ³¡é¶æ®µè¢«å¤çã\n\n6. DOM2级äºä»¶å¤çç¨åº\n\naddEventListener() å removeEventListener()\n\nä¸ä¸ªåæ°ï¼è¦å¤ççäºä»¶åãä½ä¸ºäºä»¶å¤çç¨åºç彿°ã卿è·é¶æ®µè°ç¨å½æ°(true)è¿æ¯å¨åæ³¡é¶æ®µè°ç¨å½æ°(falseï¼é»è®¤)\n\n好夿¯å¯ä»¥æ·»å å¤ä¸ªäºä»¶å¤çç¨åºï¼ä½¿ç¨Â addEventListener æ·»å çäºä»¶å¤çç¨åºåªè½ä½¿ç¨ removeEventListenerç§»é¤ï¼å¿å彿°æ æ³ç§»é¤ã\n\n7. IEäºä»¶å¤çç¨åº\n\nattachEvent() å detachEvent()\n\n```js\nvar btn = document.getElementById(\"myButton\");\nbtn.attachEvent(\"onclick\", function () {\n console.log(this === window); // myButton\n});\n```\n\n以è¿ç§æ¹å¼æ·»å çäºä»¶å¤çç¨åºä¼å¨äºä»¶æµçåæ³¡é¶æ®µè¢«å¤çã\n\n### 13.3 äºä»¶å¯¹è±¡\n\n8. å¨è§¦åDOMä¸çæä¸ªäºä»¶æ¶ï¼ä¼äº§çä¸ä¸ªäºä»¶å¯¹è±¡eventï¼è¿ä¸ªå¯¹è±¡å
å«çææä¸äºä»¶æå
³çä¿¡æ¯ãåªæå¨äºä»¶å¤çç¨åºæ§è¡æé´ï¼event对象æä¼åå¨ï¼ä¸æ¦äºä»¶å¤çç¨åºæ§è¡å®æï¼event对象就ä¼è¢«éæ¯ã\n\n9. 屿§/æ¹æ³ï¼\n\ncurrentTargetï¼æ£å¨å¤çäºä»¶çé£ä¸ªå
ç´ \n\ntargetï¼äºä»¶çç®æ \n\ntypeï¼äºä»¶ç±»å\n\ncancelableï¼å¯ä»¥é»æ¢ç¹å®äºä»¶çé»è®¤è¡ä¸º\n\npreventDefault()ï¼é»æ¢ç¹å®äºä»¶çé»è®¤è¡ä¸º\n\nstopPropagation()ï¼åæ¢äºä»¶å¨DOM屿¬¡ä¸çä¼ æï¼å³åæ¶è¿ä¸æ¥çäºä»¶æè·æå泡\n\neventPhaseï¼äºä»¶åºäºäºä»¶æµçé¶æ®µ æè·é¶æ®µä¸º1 å¤äºç®æ 对象为2 åæ³¡é¶æ®µä¸º3\n\n### 13.4 äºä»¶ç±»å\n\n10. UIäºä»¶ãç¦ç¹äºä»¶ãé¼ æ äºä»¶ãæ»è½®äºä»¶ãææ¬äºä»¶ãé®çäºä»¶ãåæäºä»¶ãåå¨äºä»¶ã\n\n \n\n...\n\n## 第äºåä¸ç« Ajaxä¸Comet\n\n### 21.1 XMLHttpRequest对象\n\n1. ç¨æ³\n\n```js\nvar xhr = new XMLHttpRequest();\nxhr.onreadystatechange = function () {\n\tif (xhr.readState === 4) {\n\t\tif (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n\t\t\tconsole.log(xhr.responseText);\n\t\t}\n\t\telse {\n\t\t\tconsole.log('Request was unsuccessful: ' + xhr.status);\n\t\t}\n\t}\n};\nxhr.open('get', 'example.php', true);\nxhr.send(null);\n```\n\n- å建XHR对象ï¼new XMLHttpRequest();\n\n- open()ï¼å¯å¨ä¸ä¸ªè¯·æ±ä»¥å¤åéï¼3ä¸ªåæ°ï¼è¯·æ±ç±»åã请æ±çURLãæ¯å¦å¼æ¥åé请æ±ï¼åæ¥å¿
é¡»çå°æå¡å¨ååºååç»§ç»æ§è¡ï¼ï¼ä¸ä¼çæ£åé请æ±ã\n\n- send()ï¼åé请æ±ï¼1ä¸ªåæ°ï¼åéçæ°æ®ï¼ä¸éè¦åéæ°æ®åå¿
é¡»ä¼ å
¥nullã\n\n- XHR对象ç屿§ï¼\n\n* responseText è¿åçææ¬\n\n* status ååºçHTTPç¶æã\n\n- HTTPç¶æç ï¼\n\n* 2xx æå\n\n* 3xx éå®åï¼304 Not Modified 表示请æ±çèµæºæ²¡æè¢«ä¿®æ¹ï¼å¯ä»¥ç´æ¥ç¨æµè§å¨ä¸ç¼åççæ¬ï¼302 Found 表示请æ±çèµæºç°å¨ä¸´æ¶ä»ä¸åçURIååºè¯·æ±\n\n* 4xx 客æ·ç«¯é误ï¼403 Forbiddenï¼404 Not Found\n\n* 5xx æå¡å¨é误ï¼500 Internal Server Errorï¼503 Service Unavailableã\n\n- XHRçreadyState屿§ï¼\n\n* 0ï¼æªåå§å\n\n* 1ï¼å¯å¨ï¼å·²è°ç¨open()\n\n* 2ï¼åéï¼å·²è°ç¨send()\n\n* 3ï¼æ¥æ¶å°é¨åååºæ°æ®\n\n* 4ï¼æ¥æ¶å°å
¨é¨ååºæ°æ®\n\n- readystatechangeäºä»¶ï¼readystate屿§çå¼ç±ä¸ä¸ªå¼åæå¦ä¸ä¸ªå¼ï¼
318é½ä¼è§¦åreadystatechangeäºä»¶ã\n\n### 21.4 è·¨åèµæºå
±äº«\n\n1. CORSï¼ä½¿ç¨èªå®ä¹çHTTP头é¨è®©æµè§å¨ä¸æå¡å¨è¿è¡æ²éï¼ä»èå³å®è¯·æ±æååºæ¯åºè¯¥æåè¿æ¯åºè¯¥å¤±è´¥ãIEä¸è¦ä½¿ç¨XDR对象å®ç°ï¼å
¶ä»æµè§å¨XHR对象åçæ¯æã\n\n2. å¾åPingï¼åªè½åéGET请æ±ï¼æ æ³è®¿é®æå¡å¨çååºææ¬ã\n\n```js\nvar img = new Image();\nimg.onload = img.onerror = function () {\n console.log(\"Done!\");\n};\nimg.src = \"http://api.hitokoto.us/rand?encode=jsc\";\n```\n\n3. JSONPï¼ä¸¤é¨åç»æ åè°å½æ°åæ°æ®ã\n\n```js\nfunction myCallBack(data) {\n console.log(data.hitokoto); // å平常çä½ ä¸æ ·å¼åå¥è¿¹å§-\n}\nvar script = document.createElement(\"script\");\nscript.src = \"http://api.hitokoto.us/rand?encode=jsc&fun=myCallBack\"; // è¿åä¸ä¸ªå
å«å¨å½æ°è°ç¨ä¸çJSONï¼è°ç¨äºmyCallBack彿°ï¼myCallBack({\"hitokoto\":\"...\",\"author\":\"...\",....});\ndocument.body.insertBefore(script, document.body.firstChild);\n```\n\n缺ç¹ï¼å®å
¨æ§ä¸å¯é ï¼ä¸å®¹æå¤æè¯·æ±å¤±è´¥ã\n\n \n\n \n\nTo Be Continued..."},{"slug":"126","title":"ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0004ï¼","tags":[],"body":"ä»»å¡4ï¼æç»ææï¼å·²ç»åå¸ï¼ä»»å¡deadlineæ¯6æ10æ¥è³6æ30æ¥ã\n\nTASK 0004 å
容ï¼[https://github.com/baidu-ife/ife/tree/master/task/task0004](https://github.com/baidu-ife/ife/tree/master/task/task0004)\n\næåçï¼[https://github.com/DIYgod/ife-work/tree/master/task0004](https://github.com/DIYgod/ife-work/tree/master/task0004)\n\nå¨çº¿Demoï¼Â [https://www.anotherhome.net/file/ife/task0004](https://www.anotherhome.net/file/ife/task0004)\n\næ¬æ¬¡ä»»å¡ææç»ç»è±è´¹äº20天ï¼5.20-6.9ï¼çæ¶é´ã\n\nä¸é¢æ¯æå TASK 0004 è¿ç¨ä¸çä¸äºè®°å½ã\n\n---\n\n### ç§»å¨ç«¯éé
\n\nâå¾åæ¨2å°3å¹´ï¼å端工ç¨å¸è¿å¨å¿§å¿å¿¡å¿¡å°æ³ï¼ç§»å¨äºèç½æ¶ä»£ä¸ï¼å端æ¯ä¸æ¯æ²¡æçå空é´äºãä½ä»å¤©ä¸çï¼å¨æä»¬å¢éï¼å端工ç¨å¸è¶
è¿ä¸åçå·¥ä½é½æ¯å¨åç§»å¨ç«¯çWebæè
APPçå¼åãç§»å¨Webæè
APPå¨ææ¯æ¬è´¨ä¸æ¯ååæ¡é¢ç«¯Webæ²¡ææ¬è´¨åºå«ï¼ä½æ¯ç§»å¨ç«¯çå飿¯é
318常çå¤ï¼éè¿å¦ä¹ è¿é¨åå
容ï¼è®©ä½ æä¸ºä¸åæ¡é¢ç§»å¨éåçå端å¼åå·¥ç¨å¸ãâ\n\nè¦æ±æ´ä¸ªäº§å为SPAï¼åå¼å§å®å
¨æ²¡æè·¯ï¼çäºä¸¤å¤©AngularJSï¼æåè¿æ¯å³å®èªå·±å®ç°ã\n\nåèGmailï¼\n\n\n\n\n\n忢å°å¦ä¸ä¸ªéç¹çæ¶åï¼åªæ¾ç¤ºè¿ä¸ªéç¹å¯¹åºçé¨åï¼å
¶ä»é¨åç¨ display:none éèèµ·æ¥ã使¯æ²¡çæå
·ä½æ¯æä¹å®ç°çãå¨consoleéæ§è¡ `location.href = '#mn';` ä¹å¯ä»¥èªå¨ä¿®æ¹displayï¼è¯´ææ¯ç»å®äºéç¹è䏿¯éè¿ç¹å»äºä»¶æ¥åæ¢çã\n\næèèè£åè¯ææ¯å®éè¿çå¬urlå®ç°ï¼ç±»ä¼¼MVCä¸çè·¯ç±ãæè§èªå·±å®ç°èµ·æ¥æºå°é¾çããã使¯æ³å°äºå¦å¤ä¸ç§æ¹æ³ï¼ç®åå°è¯´å°±æ¯å©ç¨CSS3éçtarget伪类ï¼demoå¦ä¸ï¼\n\nSee the Pen [jPMgre](http://codepen.io/DIYgod/pen/jPMgre/) by DIYgod ([@DIYgod](http://codepen.io/DIYgod)) on [CodePen](http://codepen.io).\n\n
318<script src=\"//assets.codepen.io/assets/embed/ei.js\" async=\"\"><\/script>\n\näºæ¯åæ¹æ¹CSSï¼å°±è½»æ¾å®ç°äºç§»å¨ç«¯çéé
ã\n\n\n\n\n\n\n\n\n\n忝æèèè£å¸¦æé£ï¼éè¿åæå¼ 髿èè£çMobileboneæ¡æ¶ï¼[å®ç½](http://www.mobilebone.org/)ï¼ï¼ææ¾å°äºæ´å¥½çå®ç°ï¼ä»¥ä¸å®ç°ä½åº23333ã\n\nåçæ¯è¿æ ·çï¼åæ¢éç¹æ¶ä¼è§¦åonhashchangeäºä»¶ï¼æä»¥æå°±å¨onhashchangeäºä»¶ä¸ç»å®äºä¸ä¸ªå½æ°ï¼è¿ä¸ªå½æ°ä¼è®°å½åæ¢åçéç¹å忢åçéç¹ï¼éè¿å¤æååéç¹æ¥åç¸åºçå¨ä½ï¼å¨åæ¢è¿ç¨ä¸ä¼ç»å页é¢å ä¸ slide out in reverse ä¸çæå 个classï¼éè¿è¿å 个classå®ç°æ»å¨ææï¼å
·ä½å®ç°è§ä¸é¢çCSSé¨åï¼åæ¢å®æåéèä¸éè¦æ¾ç¤ºçå页é¢åæ¸
é¤ä¹åå ä¸çclassãå°±è¿æ ·ã\n\nJSé¨åï¼\n\n```js\n/* æ»å¨ææ */\nwindow.onhashchange = function () {\n var newHash = location.hash;\n var oldEle = $('.' + oldHash.substr(1));\n var newEle = $('.' + newHash.substr(1));\n if ((oldHash == '#type' && newHash == '#task') || (oldHash == '#task' && newHash == '#details') ) {\n oldEle.className += ' slide out';\n newEle.className += ' slide in';\n newEle.style.display = 'block';\n oldEle.style.display = 'block';\n setTimeout(function () {\n newEle.style.display = 'block';\n oldEle.style.display = 'none';\n oldEle.className = oldEle.className.replace(/ slide out/, '');\n newEle.className = newEle.className.replace(/ slide in/, '');\n }, 225);\n }\n else if ((oldHash == '#task' && newHash == '#type') || (oldHash == '#details' && newHash == '#task')) {\n newEle.className += ' slide reverse in';\n oldEle.className += ' slide reverse out';\n oldEle.style.display = 'block';\n newEle.style.display = 'block';\n setTimeout(function () {\n oldEle.style.display = 'none';\n newEle.style.display = 'block';\n newEle.className = newEle.className.replace(/ slide reverse in/, '');\n oldEle.className = oldEle.className.replace(/ slide reverse out/, '');\n }, 225);\n }\n oldHash = newHash;\n}\n```\n\nCSSé¨åï¼\n\n```css\n/* æ»å¨ææ from mobilebone */\n.slide.out,\n.slide.in {\n animation-timing-function: ease-out;\n animation-duration: 225ms;\n}\n\n.slide.in {\n animation-name: slideinfromright;\n}\n\n.slide.out {\n animation-name: slideouttoleft;\n}\n\n.slide.reverse.out {\n animation-name: slideouttoright;\n}\n\n.slide.reverse.in {\n animation-name: slideinfromleft;\n}\n\n/* keyframes for slidein from sides */\n@-webkit-keyframes slideinfromright {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideinfromright {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@-webkit-keyframes slideinfromleft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideinfromleft {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n/* keyframes for slideout to sides */\n@-webkit-keyframes slideouttoleft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n }\n to {\n -webkit-transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes slideouttoleft {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n}\n\n@-webkit-keyframes slideouttoright {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n }\n to {\n -webkit-transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes slideouttoright {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n```\n\næ´æ°ï¼å®æµè¿ç§æ¹æ³å¨Safariä¸è¡¨ç°å¹¶ä¸å¥½ã\n\nåæ´æ°ï¼è¡¥å
ä¸é¢ï¼è¿ç§æ¹æ³å¨è²ä¼¼å¨ç§»å¨ç«¯çSafari表ç°å¹¶ä¸å¥½ï¼ä½å¨Mac端çSafariè¡¨ç°æ£å¸¸ã\n\n \n\n### CSS Processing\n\nâCSSè¯è¨ç±äºå
¶èªèº«è¯è¨è®¾è®¡çé®é¢ï¼å ä¸ä¸äºæµè§å¨å
¼å®¹æ§é®é¢ï¼å¾å¾ä¼ä½¿å¾æä»¬å¨åå®çæ¶åï¼è¦åå¾å¤åä½ä»£ç ï¼æè
为äºå
¼å®¹æ§å¯¹åä¸ä¸ªæ ·å¼è®¾å®å好å éãé对è¿äºé®é¢ï¼è¯çäºCSSé¢å¤çååå¤ççæ¦å¿µåç¸å
³æ¹æ³ãå·¥å
·ã\n\nè¿äºå·¥å
·åæ¹æ³å¸®å©æä»¬è½å¤æ´å 髿å°ä¹¦åå¯ç»´æ¤æ§æ´å¼ºçCSS代ç ãâ\n\nç»è¿è°ç ï¼ææåå³å®ä½¿ç¨æ´å¹¿æ³çLessã\n\næ ¹æ®æ
è¯¾ç½æç¨ï¼[lesså³å¦å³ç¨](http://www.imooc.com/learn/102)ï¼æ´ççLessæç»´å¯¼å¾ï¼\n\n\n\nCSSé¨åéæå®æ¯ï¼
318ç»äºå¯ä»¥å¤ç¨äºï¼DRY (Don't repeat yourself)ã\n\nå¦å¤ç»åGrunt使ç¨autoprefixerå¤çæµè§å¨åç¼ï¼ç®ç´ä¸è½åç½ã\n\n \n\n### å®å
¨\n\nâå®å
¨æ¯å¤§å®¶ç»å¸¸å®¹æå¿½è§ï¼ä½å
¶å®ä¸æ¦åºç°å½±åä¼é常大çé®é¢ï¼å°¤å
¶å¯¹äºæ²¡æç»åè¿ä¼ä¸å¼åï¼æè
没æè¸©è¿åçåå¦ï¼å¦æçå°å
¬å¸å·¥ä½ï¼åå®é
项ç®åé常容æåçå®å
¨é®é¢ãâ\n\nç°æç¨åºå卿¼æ´ï¼æ¯å¦å¨ä»»å¡å
容éè¾å
¥ä»¥ä¸å
容ç¶åä¿åï¼å°±ä¼æ§è¡æä»¬èªå®ä¹çscriptèæ¬ã\n\n```html\n<iframe src=javascript:alert('xss');height=0 width=0></iframe>\n```\n\næ\n\n```html\n<img src=\"./attachments/1.html\" onerror=eval(\"\\x61\\x6c\\x65\\x72\\x74\\x28\\x27\\x78\\x73\\x73\\x27\\x29\")>\n```\n\næä»¥è¦ç®ååä¸ XSS 鲿¤ï¼\n\n大夿°æ
åµå¯¹ç¨æ·çè¾å
¥è¿è¡å¤çï¼åªå
许è¾å
¥åæ³çå¼ï¼å
¶å®å¼ä¸æ¦è¿æ»¤æãç¶èæ´è¿ä¸æ¥çè¯ï¼å¯ä»¥å¯¹æ ç¾è¿è¡è½¬æ¢ã\n\n对è¾å
¥çå
容åHtml encodeå¤çï¼\n\n```js\nfunction htmlEncode(str) {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#x27;\")\n .replace(/\\//g, \"&#x2f;
318\")\n .replace(/\\n/g, \"<br>\");\n}\n```\n\næ¯å¦ç¨æ·è¾å
¥ï¼\n\n```html\n<iframe src=javascript:alert('xss');height=0 width=0></iframe>\n```\n\nä¿ååæç»åå¨ç伿¯ï¼\n\n```html\n<iframe\n src=\"javascript:alert(&#x27;xss&#x27;);height\"\n =\"0\"\n width=\"0\"\n></iframe>\n```\n\nä¹åå¨å±ç°æ¶æµè§å¨ä¼å¯¹è¿äºåç¬¦è½¬æ¢æææ¬å
容æ¾ç¤ºï¼è䏿¯ä¸æ®µå¯æ§è¡ç代ç ã\n\nå¦å¤èªå¸¦SSLå æ2333\n\n \n\n### æ§è½ä¼å\n\nâå¨èªå·±åä¸äºå°é¡¹ç®æ¶ï¼å¯è½æ¯å¦æ ¡çä¸äºç½ç«é¡¹ç®ï¼æµéå¯è½æ¥åé½ä¸è¶
è¿500ï¼èä¸å¤§å¤æ¯æ ¡åå±åç½å
访é®ï¼æè
æ¯å¼åä¸äºå®éªå®¤çMISç³»ç»ï¼è¿è¾åä½ é½ä¸ä¼å»ä½¿ç¨ä½ å¼åçè¿ä¸ªç³»ç»ãå¨è¿æ ·ä¸äºé¡¹ç®ä¸ï¼æ§è½ä¼åå¾å¾ä¼è¢«ä½ 忽ç¥ã\n\n使¯å¦æä½ æ¯åä¸ä¸ªæ¥åPVæ°ä¸ãæ°åä¸ãçè³æ´å¤§çé级ï¼å¼åç页é¢ä¼è¢«å
¨å½åå°ï¼ä¸åç½ç»æ¡ä»¶çç¨æ·æ¥è¿è¡è®¿é®ãè¿ä¸ªæ¶åï¼æ§è½é®é¢å°±æ æ³å¿½è§äºãå¨å½ä»çç½ç»æ¡ä»¶ä¸ï¼å¦æä½ ç页é¢3ç§é½æ æ³å®æé¦å±æ¸²æ
318ï¼ä¸å®ä¼è®©ä½ çç½ç«æµå¤±å¾å¤ç¨æ·ã\n\næ´ä¸ªç½ç«çæ§è½ä¼åæå¾å¤çç¯èåå·¥ä½ï¼å¤§å¤æ°æ¶åï¼ä¸æ¯å端工ç¨å¸åç¬å°±è½å®æçï¼å°¤å
¶å¨èè½ååæç¡®çå
¬å¸ä¸ï¼å¾å¾éè¦åå端ãè¿ç»´ãDBAçå¤ä¸ªèä½åå宿ãæä»¥ï¼å¨æä»¬ç课ç¨ä¸ï¼ä¸»è¦è®©ä½ äºè§£æ´ä¸ªæ§è½ä¼å齿¶ååªäºæ¹é¢çå·¥ä½ï¼åæ¶ï¼æä»¬ä¼ä¸æ³¨ä»ç»ä¸äºå¨å端é¢åå¯ä»¥éç¹å
³æ³¨çææ¯ç¹ãâ\n\n \n\n### 模åå\n\nâ对äºä¸ä¸ªå¤æé¡¹ç®ï¼ç¹å«æ¯å¤äººåä½ç夿项ç®ï¼å¦ä½åçå忍¡åï¼å¦ä½æ´å æ¹ä¾¿å°è¿è¡æ¨¡åå è½½ï¼å¦ä½ç®¡ç模åä¹é´çä¾èµï¼æ¯ä¸ä¸ªé¡¹ç®å¢éé½ä¼é¢ä¸´çé®é¢ï¼ç®åä¸çå·²ç»æäºä¸äºè¾ä¸ºæ®éçè§£å³æ¹æ¡ï¼å¦AMDãè¿ä¸ªé¨åå¸æä½ è½å¤éè¿å¦ä¹ JavaScriptçæ¨¡ååï¼å¦ä¹ å¦ä½åçå°è§åé¡¹ç®æ¨¡åï¼åçä½¿ç¨æ¨¡ååå·¥å
·æ¥ä¼åä½ ç项ç®ä»£ç ç»æãâ\n\nç»è¿è°ç ï¼æå³å®ä½¿ç¨RequireJSæ¥å®ç°ã\n\nå°JSçå¼ç¨æ¹å¼æ¹æè¿æ ·\n\n```html\n
318<script src=\"scripts/require.js\" data-main=\"scripts/main\"><\/script>\n```\n\nåæ¹åä¸JSï¼æJSå为å个模åï¼ä¸»æ¨¡å gtd util selectorã使»æè§åå¾ä¸å¤ªå¥½ãããåªè½åå¤ç辩æ¶åé®ä¸å¯¼å¸äºã\n\nå
¶ä¸éå°äºä¸ä¸ªé®é¢ï¼\n\næè¿æ ·ä¸ä¸ªHTMLç»æ\n\n```html\n<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\" />\n <title>Demo</title>\n <style>\n div {\n height: 100px;\n width: 100px;\n background: #eee;\n margin: 10px;\n }\n </style>\n </head>\n <body>\n <div onclick=\"myClick();\"></div>\n <div onclick=\"myClick();\"></div>\n <div onclick=\"myClick();\"></div>\n
318<script src=\"js/main.js\"><\/script>\n </body>\n</html>\n```\n\n对å
¶è¿è¡æ¨¡ååæ¹é ä¹åï¼æ¾èæè§çmyClickä¸ä¼åæ¯å
¨å±å½æ°ï¼æä»¥æ æ³è¿æ ·è°ç¨ã\n\näºæ¯æå°è¯å¨æ¨¡åéè¿è¡clickäºä»¶ç»å®ï¼\n\n```js\ndefine(function () {\n function init() {\n var myDiv = document.getElementsByTagName(\"div\");\n for (var i = 0; i < myDiv.length; i++) {\n myDiv[i].addEventListener(\"click\", myClick(myDiv[i]));\n }\n myDiv[0].click();\n }\n\n function myClick(ele) {\n ele.innerHTML = ele.innerHTML + \"click\";\n }\n\n return {\n init: init,\n };\n});\n```\n\nç¶èåé»ä¹è§å°ç»å®éäºï¼ä½ 们è¯å®çåºæ¥äºï¼ä½æ¯æå½æ¶æ²¡çåºæ¥ï¼èä¸ç±äºç¬¬5è¡é£å¥é´æ¥è°ç¨äºmyClick(myDiv[i])ï¼è®©æè¯¯ä»¥ä¸ºæ¯ç¬¬10è¡è°ç¨çç»æï¼è¿åªæ¯ä¸ªDemoï¼å½æ¶çæ
嵿¯è¿ä¸ªå¤æä¸äºï¼è¿ä¸¤å¥è°ç¨çç»æç确差ä¸å¤ï¼ã\n\nè¿æ ·çç»æå°±æ¯clickç»å®ç彿°å¨æ¨¡åå
å¯ä»¥è°ç¨ï¼è¯¯ä»¥ä¸ºï¼ï¼ä½å¨é¡µé¢ä¸ç¹å»å´æ²¡ååºã\n\nç¶åæèªä½èªæå°è¿è¡äºä¸çªæ¨çï¼clickäºä»¶ç»å®çmyClick彿°ä¸æ¯å
¨å±å½æ°ï¼åªå¨æ¨¡åå
ææï¼èå¨é¡µé¢ä¸ç¹å»æ¶ä¼å¨å
¨å±è°ç¨myClick彿°ï¼æä»¥æ²¡ååºã\n\nçä¼¼æéçå´ä¸æ¯è¿æ ·çï¼[å¨V2EXåå¸è¯¢é®](https://www.v2ex.com/t/196957)ä¹åï¼çå¿ç½å [7anshuai](http://7anshuai.js.org/) çåºäºç»å®æè¯¯çé®é¢ãã\n\nç¶åæ¹æè¿æ ·å°±å¥½äºï¼\n\n```js\ndefine(function () {\n function init() {\n var myDiv = document.getElementsByTagName(\"div\");\n for (var i = 0; i < myDiv.length; i++) {\n myDiv[i].addEventListener(\"click\", myClick);\n }\n myDiv[0].click();\n }\n\n function myClick() {\n this.innerHTML = this.innerHTML + \"click\";\n }\n\n return {\n init: init,\n };\n});\n```\n\næé´æè¿å°è¯è¿å¨æ¨¡åé主å¨å°å½æ°æ´é²å¨å
¨å±ç©ºé´éï¼åè¿æ ·ï¼\n\n```js\nwindow.myClick = myClick;\n```\n\nè½ç¶ææï¼ä½çæ¯ççäºï¼å¹¸äºæ²¡å°±è¿æ ·ç®äºããã\n\n \n\n**6. å端工ç¨å**\n\nâä¸çç®åæé常å¤çå端å¼åå·¥å
·ï¼å®æä¸äºå¼åè¿ç¨ä¸å¯ä»¥èªå¨å宿çå·¥ä½ï¼æé«ç åæçï¼å¹¶ä¸å¯ä»¥æé«å¤äººå使¶çå¼åè¿ç¨ä¸è´æ§ï¼æé«æ´ä¸ªé¡¹ç®çè¿ç»´æçãâ\n\nç»è¿è°ç ï¼æç»å³å®éç¨Â Yeoman, Bower, Grunt ä¸ä¸ªå·¥å
·ç»åæ¥è¿è¡å·¥ç¨åæ¹é ã\n\næ ¹æ®æ
è¯¾ç½æç¨ï¼[Grunt-beginnerå端èªå¨åå·¥å
·](http://www.imooc.com/learn/30)ï¼æ´ççæç»´å¯¼å¾ï¼\n\nç¨ Yeoman æ°å»ºä¸ä¸ª webapp 项ç®ï¼éç¿»å¢ï¼ï¼å®è£
å
¶ä»éè¦çå
ï¼æ¹æ¹é
ç½®æä»¶ï¼ç¶åå°±å¯ä»¥äº«ååç§èªå¨åå·¥å
·å¸¦æ¥çæ æ¯é«æãéæ¼çä½éªå¦~\n\næè¿é主è¦å¯¹ä»£ç åäº lessç¼è¯ å¤çCSSåç¼ HTMLãCSSãJSå缩 æä»¶åæ·»å md5å¼ è¿å 个å¤çï¼å
¶ä¸å¤çåçæä»¶å¨appæä»¶å¤¹ï¼å¤çåçæä»¶å¨diskæä»¶å¤¹ã\n\n \n\nDoneï¼çå¾
æ¯ä¸ç辩å½~"},{"slug":"1989","title":"ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0003ï¼","tags":[],"body":"ä»»å¡3å·²ç»åå¸ï¼å级çç任塿¶é´æ¯ä»5æ7æ¥è³5æ18æ¥ï¼ä¸çº§ç为4æ30æ¥è³5æ10æ¥ã\n\nTASK 0003 å
容ï¼[https://github.com/baidu-ife/ife/tree/master/task/task0003](https://github.com/baidu-ife/ife/tree/master/task/task0003)\n\næåçï¼[https://github.com/DIYgod/ife-work/tree/master/task0003](https://github.com/DIYgod/ife-work/tree/master/task0003)\n\nå¨çº¿Demoï¼Â [https://www.anotherhome.net/file/ife/task0003/](https://www.anotherhome.net/file/ife/task0003/)\n\næ¬æ¬¡ä»»å¡ç´¯è®¡è±è´¹æ¶é´10天ï¼5.6-5.16 ï¼\n\nä¸é¢æ¯æå TASK 0003 è¿ç¨ä¸çä¸äºè®°å½ã\n\n---\n\n**1. JavaScriptä½ç¨å** ï¼åè [é¸å¥ï¼Javascriptä½ç¨ååç](http://www.laruence.com/2009/05/28/863.html) [çè§£ JavaScript ä½ç¨ååä½ç¨åé¾](http://www.cnblogs.com/lhb25/archive/2011/09/06/javascript-scope-chain.html)ï¼\n\nJavaScriptä¸ç彿°è¿è¡å¨å®ä»¬è¢«å®ä¹çä½ç¨åé,è䏿¯å®ä»¬è¢«æ§è¡çä½ç¨åéã\n\nJS æ¯æé¢ç¼è¯çè¿ç¨ç, JS卿§è¡æ¯ä¸æ®µJS代ç ä¹å, é½ä¼é¦å
å¤çvarå
³é®ååfunctionå®ä¹å¼(彿°å®ä¹å¼å彿°è¡¨è¾¾å¼)ã\nå¨è°ç¨å½æ°æ§è¡ä¹å, ä¼é¦å
å建ä¸ä¸ªæ´»å¨å¯¹è±¡, ç¶åæå¯»è¿ä¸ªå½æ°ä¸çå±é¨åéå®ä¹,å彿°å®ä¹, å°åéåå彿°åé½å为è¿ä¸ªæ´»å¨å¯¹è±¡çåå屿§, 对äºå±é¨åéå®ä¹,åéçå¼ä¼å¨çæ£æ§è¡çæ¶åæè®¡ç®, æ¤æ¶åªæ¯ç®åçèµä¸ºundefinedã\n\n对代ç ä¼åçå¯ç¤ºï¼\n\nä»ä½ç¨åé¾çç»æå¯ä»¥çåºï¼å¨è¿è¡æä¸ä¸æçä½ç¨åé¾ä¸ï¼æ è¯ç¬¦æå¨çä½ç½®è¶æ·±ï¼è¯»åé度就ä¼è¶æ
¢ãå 为å
¨å±åéæ»æ¯åå¨äºè¿è¡æä¸ä¸æä½ç¨åé¾çææ«ç«¯ï¼å æ¤å¨æ è¯ç¬¦è§£æçæ¶åï¼æ¥æ¾å
¨å±å鿝ææ
¢çãæä»¥ï¼å¨ç¼å代ç çæ¶ååºå°½éå°ä½¿ç¨å
¨å±åéï¼å°½å¯è½ä½¿ç¨å±é¨åéãä¸ä¸ªå¥½çç»éªæ³åæ¯ï¼å¦æä¸ä¸ªè·¨ä½ç¨åç对象被å¼ç¨äºä¸æ¬¡ä»¥ä¸ï¼åå
æå®åå¨å°å±é¨åééå使ç¨ã\n\nä¾å¦ä¸é¢ç代ç ï¼\n\n<pre class=\"lang:default decode:true \">function changeColor(){\n document.getElementById(\"btnChange\").onclick=function(){\n document.getElementById(\"targetCanvas\").style.backgroundColor=\"red\";\n };\n}</pre>\n\nè¿ä¸ªå½æ°å¼ç¨äºä¸¤æ¬¡å
¨å±åédocumentï¼æ¥æ¾è¯¥å
318éå¿
é¡»éåæ´ä¸ªä½ç¨åé¾ï¼ç´å°æåå¨å
¨å±å¯¹è±¡ä¸æè½æ¾å°ãè¿æ®µä»£ç å¯ä»¥éåå¦ä¸ï¼\n\n<pre class=\"lang:default decode:true \">function changeColor(){\n var doc=document;\n doc.getElementById(\"btnChange\").onclick=function(){\n doc.getElementById(\"targetCanvas\").style.backgroundColor=\"red\";\n };\n}</pre>\n\nè¿æ®µä»£ç æ¯è¾ç®åï¼éååä¸ä¼æ¾ç¤ºåºå·¨å¤§çæ§è½æåï¼ä½æ¯å¦æç¨åºä¸æå¤§éçå
¨å±åé被ä»åå¤è®¿é®ï¼é£ä¹éååçä»£ç æ§è½ä¼ææ¾èæ¹åã\n\n \n\n**2. é«åº¦èªéåº** ï¼åè [CSSå¸å±å¥æ·«æå·§ä¹-é«åº¦èªéåº](http://www.cnblogs.com/2050/archive/2012/07/30/2615260.html)ï¼\n\né«åº¦èªéåºä¸å宽度èªéåºé£æ ·ç®åï¼å¨å
¼å®¹æµè§å¨æ¹é¢ä¹ç¨å¾®å¤æä¸äºã\n\nç¶èç´æ¥å height: 100%; 并没æä»ä¹åµç¨ï¼è¦è¿æ ·åï¼\n\n<pre class=\"lang:default decode:true \">position: absolute;\ntop: 60px;\nbottom: 0;</pre>\n\n \n\n**3\\. è«åå
¶å¦åºç°åè«åå
¶å¦èªå·±æ¶å¤±ç空é**\n\näºæ
æ¯è¿æ ·çï¼æ¨å¤©ï¼5æ12æ¥ï¼é¡µé¢ä¸åæ£å¸¸ï¼ä»å¤©æ©ä¸èµ·åºå并没æ¹å¨ä»£ç ï¼å·æ°äºä¸ä¸é¡µé¢ï¼é¡µé¢å±
ç¶åäºï¼è®¾ç½®Â overflow: scroll CSS屿§çå
ç´ å³ä¾§åä¸ä¾§é½åºç°äºç©ºéï¼å¦å¾æç¤ºï¼\n\n\n\n\n\nè妿æoverflow: scroll屿§å»æç©ºéå°±æ¶å¤±ãæµè¯ Chrome Safari ååºç°äºè¿ç§æ
åµï¼èä¸å°è¯äºæ¸
空ç¼åï¼æ è§£ãäºæ¯å°æ¤æ¶ç代ç commitå¹¶pushå°äºgithubã\n\nå°äºä¸åï¼å䏿 ç¾é¡µï¼åä¸é¡µé¢ï¼å·æ°ï¼bugèªå·±æ¶å¤±äºï¼èæ¤æ¶ä»£ç ä¸ä¸åç¸æ¯åªæå¾å°ä¸æ å
³ç´§è¦çæ¹å¨ï¼å次commitå¹¶pushå°githubï¼æææ¹å¨[å¨githubæè®°å½](https://github.com/DIYgod/ife-work/commit/df0e0bf051852bb1e4593c6dae3ff11cfa9c34ce)ï¼ï¼å次æªå¾ï¼\n\n\n\n注æï¼ä¸¤æ¬¡åºç°åååé½å°è¯æµè¯äºChromeåSafariæµè§å¨å¹¶æ¸
空äºç¼åã\n\nå°æ¤ä¸ºæ¢æ¯«æ å¤´ç»ªå¹¶æ æ³éç°ï¼å®å¨æ²¡åæ³å深究ä¸å»ã\n\nçæµæ¯MacçBugã\n\n \n\n**4. JavaScript对象ä¸JSONææ¬çç¸äºè½¬æ¢** ï¼åè [JavaScript对象ä¸JSONå符串çç¸äºè½¬æ¢](http://blog.csdn.net/yaerfeng/article/details/7292000) [JSON æç¨ - W3CSCHOOL](http://www.w3cschool.cc/json/json-tutorial.html)ï¼\n\neval彿°ï¼JSONææ¬è½¬æ¢ä¸ºJavaScript对象ï¼è°ç¨JavaScriptç¼è¾å¨ï¼é常快éï¼ä½å¯è½ä¼åºç°å®å
¨æ§é®é¢\n\n<pre class=\"lang:js decode:true\">var obj = eval('(' + JSONTest + ')');</pre>\n\n使ç¨JSONè§£æå¨ï¼\n\nJSON.parse 彿°ï¼å°JSONææ¬è½¬æ¢ä¸ºJavaScript对象\n\n<pre class=\"lang:js decode:true\">JSON.parse(text[, reviver])</pre>\n\nJSON.stringify 彿°ï¼å°JavaScript对象转æ¢ä¸ºJSONææ¬\n\n<pre class=\"lang:js decode:true\">JSON.stringify(value[, replacer[, space]])</pre>\n\n \n\n**5. textarea å input 大尿¯é¢æå¤§äºä¸äº**\n\nå¤è°¢[æè](http://www.lishengcn.cn/)ç帮å©\n\nè¿ä¸ªé®é¢å
¶å®å¾ç®åä½ææ²¡æ³å°ï¼åå¼å§æºè«åå
¶å¦çï¼å¦ä¸ï¼\n\nSee the Pen [RPaJpb](http://codepen.io/DIYgod/pen/RPaJpb/) by DIYgod ([@DIYgod](http://codepen.io/DIYgod)) on [CodePen](http://codepen.io).\n\n
318<script src=\"//assets.codepen.io/assets/embed/ei.js\" async=\"\"><\/script>\n\né®é¢æ¯textareaåinputæ¯è®¾ç½®ç宽度å¤äº6pxï¼å¼ºè¿«ççäºæµèº«é¾åãå®é
䏿¯å 为è¿ä¸¤ä¸ªå
ç´ æé»è®¤ç 2px paddingå 1px borderï¼å¨è¿ä¸¤ä¸ªå
ç´ çCSSé¨åå ä¸\n\n<pre class=\"lang:default decode:true \">padding: 0;\nborder: 0;</pre>\n\næè
æ´ä¼é
ä¸äº\n\n<pre class=\"lang:default decode:true \">-webkit-box-sizing: border-box;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;</pre>\n\n就好äºã\n\n \n\nâï¾(o\\*ï½¥Ïï½¥)ï¾å®ç»æ£è± çå¾
review"},{"slug":"1982","title":"ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0002ï¼","tags":[],"body":"TASK 0002 å·²ç»åå¸ï¼å级çç任塿¶é´æ¯ä»4æ24æ¥è³5æ7æ¥ï¼ä¸çº§ç为4æ18æ¥è³4æ25æ¥ã\n\nTASK 0002 å
容ï¼[https://github.com/baidu-ife/ife/tree/master/task/task0002](https://github.com/baidu-ife/ife/tree/master/task/task0002)\n\næåçï¼[https://github.com/DIYgod/ife-work/tree/master/task0002](https://github.com/DIYgod/ife-work/tree/master/task0002)\n\nå¨çº¿Demoï¼Â [https://www.anotherhome.net/file/ife/task0002/task0002_1.html](https://www.anotherhome.net/file/ife/task0002/task0002_1.html)\n\næ¬æ¬¡ä»»å¡ç´¯è®¡è±è´¹æ¶é´17天ï¼4.19-5.6 ï¼\n\nä¸é¢æ¯æå TASK 0002 è¿ç¨ä¸çä¸äºè®°å½ã<!--more-->\n\n---\n\n**1. JavaScript çæ§è½ä¼å **ï¼åè [JavaScript çæ§è½ä¼åï¼å è½½åæ§è¡](http://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/index.html)ï¼\n\n· Web å¼å人åä¸è¬ä¹ æ¯å¨ <head> ä¸å è½½å¤é¾ç JavaScriptï¼æ¥çç¨ <link> æ ç¾ç¨æ¥å è½½å¤é¾ç CSS æä»¶æè
å
¶ä»é¡µé¢ä¿¡æ¯ãç¶èè¿ç§å¸¸è§çåæ³å´éèç严éçæ§è½é®é¢ââèæ¬ä¼é»å¡é¡µé¢å
¶ä»èµæºçä¸è½½ãå æ¤æ¨èå°ææ<script>æ ç¾å°½å¯è½æ¾å°<body>æ ç¾çåºé¨ï¼ä»¥å°½éåå°å¯¹æ´ä¸ªé¡µé¢ä¸è½½çå½±åã\n\n· ç±äºæ¯ä¸ª<script>æ ç¾åå§ä¸è½½æ¶é½ä¼é»å¡é¡µé¢æ¸²æï¼æä»¥åå°é¡µé¢å
å«ç<script>æ ç¾æ°éæå©äºæ¹åè¿ä¸æ
åµã\n\n· åå° JavaScript 对æ§è½çå½±åå
¶ä»æ¹æ³è§åèã\n\n \n\n**2\\. `==` ä¸ `===`** ï¼åè [Javascriptä¸åçå·â==âåä¸çå·â===âçåºå«](http://www.weste.net/2013/3-1/89405.html) [JavaScriptéé¢ä¸ä¸ªçå·å两个çå·çåºå«](http://www.cnblogs.com/litsword/archive/2010/07/22/1782933.html) [JavaScriptç¼ç è§è](https://github.com/ecomfe/spec/blob/master/javascript-style-guide.md#%E5%BC%BA%E5%88%B6-%E5%9C%A8-equality-expression-%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%B1%BB%E5%9E%8B%E4%B8%A5%E6%A0%BC%E7%9A%84-%E4%BB%85%E5%BD%93%E5%88%A4%E6%96%AD-null-%E6%88%96-undefined-%E6%97%B6%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8--null)ï¼\n\n`==`ï¼çäºè¿ç®ï¼ä½æ¯ä¸æ¯è¾å¼çç±»åï¼\n`===`ï¼å®å
¨çäºè¿ç®ï¼ä¸ä»
æ¯è¾å¼ï¼èä¸è¿æ¯è¾å¼çç±»åï¼åªæä¸¤è
ä¸è´æä¸ºçã\n\nç¾åº¦JavaScriptç¼ç è§èä¹è§å®ï¼å¨ Equality Expression ä¸å¼ºå¶ä½¿ç¨ç±»åä¸¥æ ¼ç `===`ãä»
å½å¤æ null æ undefined æ¶ï¼å
è®¸ä½¿ç¨ `== null`ãå ä¸ºä½¿ç¨ `===` å¯ä»¥é¿å
çäºå¤æä¸éå¼çç±»å转æ¢ã\n\n \n\n**3.Â ç±»åæ£æµ** ï¼åè [JavaScriptç¼ç è§è](https://github.com/ecomfe/spec/blob/master/javascript-style-guide.md#%E5%BC%BA%E5%88%B6-%E5%9C%A8-equality-expression-%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%B1%BB%E5%9E%8B%E4%B8%A5%E6%A0%BC%E7%9A%84-%E4%BB%85%E5%BD%93%E5%88%A4%E6%96%AD-null-%E6%88%96-undefined-%E6%97%B6%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8--null) [Javascriptæ°ç»ç±»åæ£æµï¼ç¼åæ´å¼ºå£®çisArray彿°](http://scriptfans.iteye.com/blog/318821) [Javascript 夿彿°ç±»åå®ç¾è§£å³æ¹æ¡](http://www.jb51.net/article/19841.htm)ï¼\n\néç¨çç®æåæ³ï¼ç±»åæ£æµä¼å
ä½¿ç¨ `typeof`ãå¯¹è±¡ç±»åæ£æµä½¿ç¨ `instanceof`ãnull æ undefined çæ£æµä½¿ç¨ `== null`\n\n<pre class=\"lang:default decode:true \">// string\ntypeof variable === 'string'\n\n// number\ntypeof variable === 'number'\n\n// boolean\ntypeof variable === 'boolean'\n\n// Function\ntypeof variable === 'function'\n\n// Object\ntypeof variable === 'object'\n\n// RegExp\nvariable instanceof RegExp\n\n// Array\nvariable instanceof Array\n\n// null\nvariable === null\n\n// null or undefined\nvariable == null\n\n// undefined\ntypeof variable === 'undefined'</pre>\n\n夿æ°ç»ç±»åï¼å¾å°å¯¹è±¡çå符串表示ï¼ç¶åå¯¹æ¯æ¤å符串æ¯å¦æ¯'[object Array]'\n\n<pre class=\"lang:default decode:true \">function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}</pre>\n\n9.20æ´æ°ï¼ä¸é¢è¿æ ·ä¹å¯ä»¥\n\n<pre class=\"lang:default decode:true\">function isArray(arr) {\n return Array.isArray(arr);\n}</pre>\n\n夿彿°ç±»åï¼é¦å
ä¿è¯æµè¯ç对象åå¨ï¼å¹¶å°å
¶åºååæå«æâfunctionâçå符串ï¼è¿ä¸ªæ¯æä»¬æ£æµçåºç¡(fn.constructor != String,fn.constructor != Array, and fn.constructor != RegExp)ãå¦å¤ï¼æä»¬éè¦ä¿è¯å£°æç彿°ä¸æ¯ä¸ä¸ªDOMèç¹ï¼fn.nodeNameï¼ãç¶åï¼æä»¬å°±å¯ä»¥ä½toStringæµè¯ã妿æä»¬å°ä¸ä¸ªå½æ°è½¬æ¢æå符串ï¼å¨ä¸ä¸ªæµè§å¨ä¸ï¼fn+\"\"ï¼ç»æä»¬çç»æå°±åè¿æ ·âfunction name(){...}âãç°å¨ï¼å¤æå®æ¯å¦ä¸ºå½æ°å°±å¾ç®åï¼ä»
ä»
åªéè¦å¤æåç¬¦ä¸²ä¸æ¯å¦å
å«åè¯âfunctionâãè¿å¾ç¥å¥ï¼å¯¹äºä»»ä½æé®é¢ç彿°ï¼å¨æææµè§å¨ä¸é½è½å¾å°æä»¬æéè¦çç»æãè¿ä¸ªå½æ°è¾ä¹äºä¼ ç»çæ¹æ³ï¼è¿è¡é度æäºä¸å°½äººæï¼ä½è
ï¼John Resig
318ï¼å»ºè®®æä»¬ä¿å®ä½¿ç¨ã\n\n<pre class=\"lang:default decode:true\">function isFunction(fn) {\n return !!fn\n && !fn.nodeName\n && fn.constructor != String\n && fn.constructor != RegExp\n && fn.constructor != Array\n && /function/i.test(fn + '');\n}</pre>\n\n9.20æ´æ°ï¼ä¸é¢é£ç§å¤ªéº»ç¦ï¼å¯ä»¥ç±»ä¼¼Array飿 ·å¤æ\n\n<pre class=\"lang:default decode:true\">function isFunction(fn) {\n return Object.prototype.toString.call(fn) === '[object Function]';\n}</pre>\n\nå¤å¶Arrayçç®ååæ³ï¼\n\n<pre class=\"lang:default decode:true\">var a1 = [1, 2, 3]\nvar a2 = a1.slice(0);</pre>\n\n \n\n**4. 类å转æ¢** ï¼åè [JavaScriptç¼ç è§è](https://github.com/ecomfe/spec/blob/master/javascript-style-guide.md#%E5%BC%BA%E5%88%B6-%E5%9C%A8-equality-expression-%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%B1%BB%E5%9E%8B%E4%B8%A5%E6%A0%BC%E7%9A%84-%E4%BB%85%E5%BD%93%E5%88%A4%E6%96%AD-null-%E6%88%96-undefined-%E6%97%B6%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8--null)ï¼\n\nnumber -> string:\n\n<pre class=\"lang:default decode:true \">num + '';</pre>\n\nstring -> number:\n\n<pre class=\"lang:default decode:true \">+str;\n\nvar width = '200px'; // è¦è½¬æ¢çå符串ç»å°¾å
å«éæ°åå¹¶ææå¿½ç¥æ¶ï¼ä½¿ç¨ parseInt\nparseInt(width, 10);</pre>\n\n-> boolean:\n\n<pre class=\"lang:default decode:true \">var num = 3.14;\n!!num;</pre>\n\nnumber å»é¤å°æ°ç¹:\n\n<pre class=\"lang:default decode:true \">var num = 3.14;\nMath.ceil(num);</pre>\n\n \n\n**5. 对æåºéåè¿è¡éåæ¶ï¼ç¼å length** ï¼åè [JavaScriptç¼ç è§è](https://github.com/ecomfe/spec/blob/master/javascript-style-guide.md#%E5%BC%BA%E5%88%B6-%E5%9C%A8-equality-expression-%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%B1%BB%E5%9E%8B%E4%B8%A5%E6%A0%BC%E7%9A%84-%E4%BB%85%E5%BD%93%E5%88%A4%E6%96%AD-null-%E6%88%96-undefined-%E6%97%B6%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8--null)ï¼\n\nè½ç¶ç°ä»£æµè§å¨é½å¯¹æ°ç»é¿åº¦è¿è¡äºç¼åï¼ä½å¯¹äºä¸äºå®¿ä¸»å¯¹è±¡åèæ§æµè§å¨çæ°ç»å¯¹è±¡ï¼å¨æ¯æ¬¡ length è®¿é®æ¶ä¼å¨æè®¡ç®å
ç´ ä¸ªæ°ï¼æ¤æ¶ç¼å length è½æææé«ç¨åºæ§è½ã\n\n<pre class=\"lang:default decode:true \">for (var i = 0, len = elements.length; i < len; i++) {\n var element = elements[i];\n // ......\n}</pre>\n\n \n\n**6\\. document.body.scrollTopä¸document.documentElement.scrollTopè·åæ»å¨æ¡æ»å¨çè·ç¦»çå** ï¼åè [document.body.scrollTopä¸document.documentElement.scrollTopå
¼å®¹](http://jo2.org/document-body-scrolltop%E4%B8%8Edocument-documentelement-scrolltop%E5%85%BC%E5%AE%B9/) [ç¨Javascriptè·å页é¢å
ç´ çä½ç½®](http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html) [ç«çãè°·æãIEå
³äºdocument.body.scrollTopådocument.documentElement.scrollTop 以åå¼ä¸º0çé®é¢](http://www.csdn123.com/html/blogs/20130516/13275.htm)ï¼\n\nåèé®ä¸å³°çæç¨åäºä¸é¢ä¸æ®µï¼\n\n<pre class=\"lang:default decode:true\">if (document.compatMode == \"BackCompat\"){\n var elementScrollLeft=document.body.scrollLeft;\n} else {\n var elementScrollLeft=document.documentElement.scrollLeft; \n}</pre>\n\n没æ³å°éå°äºåï¼ç»æelementScrollLeftæ»æ¯0ï¼è°è¯ç»æå¦ä¸ï¼\n\n\n\n好ååï¼è¯´å¥½çå¦ææææ¡£å£°æï¼å³ç½é¡µç¬¬ä¸å¥çdocTypeï¼çæ
åµä¸ï¼document.compatMode çå¼çäº \"CSS1compat\"ï¼æ åæµè§å¨æ¯åªè®¤è¯documentElement.scrollTopçåã\n\nå¦å¤è¯äºä¸ä¸IEåFirefoxï¼åå¯è®¤documentElement.scrollTopï¼chromeçéï¼\n\nè¿å¥½document.body.scrollTopä¸document.documentElement.scrollTop两è
æä¸ªç¹ç¹ï¼å°±æ¯åæ¶åªä¼æä¸ä¸ªå¼çæãæ¯å¦document.body.scrollTopè½åå°å¼çæ¶åï¼document.documentElement.scrollTopå°±ä¼å§ç»ä¸º0ï¼åä¹äº¦ç¶ãæä»¥å¯ä»¥è¿æ ·åï¼\n\n<pre class=\"lang:default decode:true\">var scrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft;\nvar scrollTop = document.body.scrollTop + document.documentElement.scrollTop;</pre>\n\n \n\n**7\\. è·åææDOMå
ç´ **\n\nçªç¶èæ´å¤§å¼æ³å°ç\n\n<pre class=\"lang:default decode:true \">var ele = document.getElementsByTagName('*');</pre>\n\n \n\n**8\\. çå夿**\n\n对象æ»ä¸ºtrueï¼åºç¡ç±»åçæ¯å¦ä¸ºç©º\n\n<pre class=\"lang:js decode:true \">!![] // true\n!!{} // true\n!!'' // false\n!!0 // false</pre>
318\n\n容ææç©ºæ°ç»è¯¯ä»¥ä¸ºæ¯falseï¼\n\n容ææç©ºæ°ç»è¯¯ä»¥ä¸ºæ¯falseï¼\n\n容ææç©ºæ°ç»è¯¯ä»¥ä¸ºæ¯falseï¼\n\néè¦çäºæ
è¦è¯´ä¸éï¼\n\n \n\n**9. éå½è·åææåå
ç´ **\n\nè¿ä¸ªæ¯æé®é¢çï¼åªè½è·åå°ä¸ä¸çº§çåå
ç´ ï¼\n\n<pre class=\"lang:default mark:2 decode:true\">var childs = function (element) {\n var allchilds = [];\n var childn = element.childNodes;\n if (childn.length !== 0) {\n for (var i = 0, len = childn.length; i < len; i++) {\n allchilds.push(childn[i]);\n allchilds.concat(childs(childn[i]));\n }\n }\n return allchilds;\n}</pre>\n\nä½å¦ææ¹æè¿æ ·å°±è½è·åææåå
ç´ äºï¼\n\n<pre class=\"lang:default mark:1 decode:true\">var allchilds = [];\nvar childs = function (element) {\n var childn = element.childNodes;\n if (childn.length !== 0) {\n for (var i = 0, len = childn.length; i < len; i++) {\n allchilds.push(childn[i]);\n allchilds.concat(childs(childn[i])); //æè
childs(childn[i]);\n }\n }\n return allchilds;\n}</pre>\n\n<del>ç¬¬ä¸æ®µä»£ç åºç°é®é¢çåå æªç¥ï¼å·²ç»æ³ä¸æä¸äºï¼å¹¶æ è¿å±ã</del>\n\nå¦å¤è°è¯è¿ç¨ä¸åç°ç诡å¼ç°è±¡ï¼\n\n\n\nè§£éä¸ï¼éå½è°ç¨æ¶è¿åå¼allchildsæ¯æ£ç¡®çï¼ä½è¿åå°ä¸ä¸å±æ¶å¹¶æ²¡æå å°ä¸ä¸å±çallchildsä¸ã\n\n[ææ](http://blog.yueyue.moe/archives/17/) åè¯æè¿å¥è¯æé®é¢ï¼\n\n<pre class=\"lang:default mark:2 decode:true\">allchilds.concat(childs(childn[i]));</pre>\n\nw3school妿¯è¯´ï¼concat() æ¹æ³ç¨äºè¿æ¥ä¸¤ä¸ªæå¤ä¸ªæ°ç»ã\nè¯¥æ¹æ³ä¸ä¼æ¹åç°æçæ°ç»ï¼èä»
ä»
ä¼è¿åè¢«è¿æ¥æ°ç»çä¸ä¸ªå¯æ¬ãä»
ä»
ä¼è¿åè¢«è¿æ¥æ°ç»çä¸ä¸ªå¯æ¬ãä»
ä»
ä¼è¿åè¢«è¿æ¥æ°ç»çä¸ä¸ªå¯æ¬ã\n\nä¸åé½è¯´éäºãã\n\næä»¥æ ¹æ¬ä¸å
³allchilds声æä½ç½®çäºï¼debugçæ¹åä¸ç´é½ä¸å¯¹ï¼è¦è¿æ ·æ¹ï¼\n\n<pre class=\"lang:default decode:true \">var childs = function (element) {\n var allchilds = [];\n var childn = element.childNodes;\n if (childn.length !== 0) {\n for (var i = 0, len = childn.length; i < len; i++) {\n allchilds.push(childn[i]);\n allchilds = allchilds.concat(childs(childn[i]));\n }\n }\n return allchilds;\n}</pre>\n\nä¸ä¸æ²¡æ³å°ï¼å¨Â [ææ](http://blog.yueyue.moe/archives/17/) [æè](http://www.lishengcn.cn/) [èçé¥](http://blog.wedc.cc/) ç帮å©ä¸åè¾ä¸è¦ç»äºå®æäºè¿ä¸ªå°å½æ°ããã\n\nåç»ï¼çªç¶æ³å°è¿æ ·å°±è½è½»æè·åå°\n\n<pre class=\"lang:default decode:true \">element.getElementsByTagName('*');</pre>\n\nå·²åè¡\n\n \n\n**10\\. æ°ç»åå¹¶** ï¼åè [JavaScript concat() æ¹æ³](http://www.w3school.com.cn/jsref/jsref_concat_array.asp)ï¼\n\néè¦çäºæ
è¦å¦å¤åç¬è¯´ãå ä¸ºè¢«åæ¨äºã\n\nconcat() æ¹æ³ç¨äºè¿æ¥ä¸¤ä¸ªæå¤ä¸ªæ°ç»ã\n\nè¯¥æ¹æ³ä¸ä¼æ¹åç°æçæ°ç»ï¼èä»
ä»
ä¼è¿åè¢«è¿æ¥æ°ç»çä¸ä¸ªå¯æ¬ã\n\nè¯¥æ¹æ³ä¸ä¼æ¹åç°æçæ°ç»ï¼èä»
ä»
ä¼è¿åè¢«è¿æ¥æ°ç»çä¸ä¸ªå¯æ¬ã\n\nè¯¥æ¹æ³ä¸ä¼æ¹åç°æçæ°ç»ï¼èä»
ä»
ä¼è¿åè¢«è¿æ¥æ°ç»çä¸ä¸ªå¯æ¬ã\n\néè¯¯ç¨æ³ï¼\n\n<pre class=\"lang:default decode:true\">arr1.concat(arr2);</pre>\n\næ£ç¡®ç¨æ³ï¼\n\n<pre class=\"lang:default decode:true\">arr1 = arr1.concat(arr2);</pre>\n\n \n\n**11\\. äºä»¶ä»£ç** ï¼åè [javascriptäºä»¶ä»£ç](http://www.cnblogs.com/rubylouvre/archive/2009/08/09/1542174.html)ï¼\n\nå¨ç¼ç¨ä¸ï¼å¦ææä»¬ä¸æ³æä¸è½å¤ç´æ¥æçºµç®æ å¯¹è±¡ï¼æä»¬å¯ä»¥å©ç¨delegateå建ä¸ä¸ªä»£ç对象æ¥è°ç¨ç®æ å¯¹è±¡çæ¹æ³ï¼ä»èè¾¾å°æçºµç®æ 对象çç®çãæ¯åº¸ç½®çï¼ä»£çå¯¹è±¡è¦æ¥æç®æ 对象çå¼ç¨ã\n\n<del>å¯ä»¥ç¨äºä»¶ä»£ççæ¹æ³æ¥ä¼é
å°ç¨ä¸ä¸ªå½æ°ä»£çå¦ä¸ä¸ªå½æ°ï¼æ¯å¦ï¼</del>\n\n<pre class=\"lang:default decode:true\"><del>
318var delegate = function (method) {\n return function() {\n return method.apply(null, arguments);\n }\n}\n\nvar on = delegate(addEvent);\nvar un = delegate(removeEvent);</del></pre>\n\n<del>è¿æ ·å°±è½ä¼é
å°ç¨ on un 彿°ä»£ç addEvent removeEvent 彿°äºãè¿æ ·å®ç°äºç®æ 对象çéèï¼è¿å¯¹äºæä»¬ä¿æ¤ä¸äºæ ¸å¿å¯¹è±¡æ¯é常æç¨çã</del>\n\næéäºï¼ç´æ¥è¿æ ·å°±è¡äºãã\n\n \n\n<pre class=\"lang:default decode:true \">var on = addEvent;\nvar un = removeEvent;</pre>\n\n \n\n**12. Objectç¸å
³** ï¼åè [jsçObjectå°åºæ¯ä»ä¹å¢?](http://www.cnblogs.com/coolicer/archive/2010/10/13/1850131.html)ï¼\n\nArrayãBooleanãDateãFunctionãNumberçç对象ï¼å
¶å®é½æ¯ä»Objectæ¥çï¼å®ä»¬çç¥å
齿¯Objectãå®ä»¬è¡¨ç°ä¸åçè¯è¨ç¹æ§ï¼æ¯å¦Arrayæè¢«èªå¨ç®¡ççlength屿§ï¼Booleanåªætrueæfalseåå¼ï¼Date表示æ¶é´ç»æï¼Functionå¯ä»¥è¢«è¿è¡ï¼é½æ¯å®ä»¬çåå§ç±»å(valueOf)èµäºå®ä»¬çè½åã\n\næä»¥æäºæè¶£çä¸è¥¿ï¼\n\n<pre class=\"lang:default decode:true\">function f() {\n alert('f1');\n}\nf.c = function() {\n alert('c1');\n}\n\nf();\nf.c();</pre>\n\nå¯ä»¥ç»å½æ°è®¾ç½®ä¸ä¸ªä¹æ¯å½æ°ç屿§ã\n\n \n\n**13\\. JavaScriptæ£å表达å¼åç»** ï¼åè [JavaScript æ£åè¡¨è¾¾å¼ éæ©ãåç»åå¼ç¨](http://www.xiaoxiaozi.com/2009/08/04/1306/)ï¼\n\nä¾ï¼\n\n<pre class=\"lang:default decode:true\">function getCookie(cookieName) {\n var re = new RegExp(cookieName + '=(.*?)($|;)');\n return re.exec(document.cookie)[1];\n}</pre>\n\nå
¶ä¸re.exec(document.cookie)æ¯ä¸ä¸ªæ°ç»ï¼ç¬¬ä¸ä¸ªå
ç´ æ¯æ£å弿æå¹é
åºçå符ï¼ç¬¬äºä¸ªå
ç´ æ¯å¹é
ç第ä¸ä¸ªåç»ï¼å³ç¬¬ä¸ä¸ªæ¬å·éçå
容ï¼(.\\*?)\n\nåç»å°±å°±æ¯æ£å表达å¼ä¸çå表达å¼ï¼å¯ä»¥ç¨æ¥è·åæ£åå¼å¹é
åºçå符串ä¸çç¹å®é¨åã\n\n9.20æ´æ°ï¼å½ä½¿ç¨æé 彿°åé æ£å对象æ¶ï¼éè¦å¸¸è§çå符转ä¹è§åï¼å¨åé¢å åææ \\ï¼ãæ¯å¦ï¼ä»¥ä¸æ¯çä»·çï¼\n\n<pre class=\"lang:default decode:true \">var re = new RegExp(\"\\\\w+\");\nvar re = /\\w+/;</pre>\n\n \n\n**14. JavaScriptè·¨å** ï¼åè [JavaScriptè·¨åæ»ç»ä¸è§£å³åæ³](http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html)ï¼\n\nJavaScriptåºäºå®å
¨æ¹é¢çèèï¼ä¸å
许跨åè°ç¨å
¶ä»é¡µé¢ç对象ãä½å¨å®å
¨éå¶çåæ¶ä¹ç»æ³¨å
¥iframeææ¯ajaxåºç¨ä¸å¸¦æ¥äºä¸å°éº»ç¦ã\n\nå
·ä½éå¶åè§£å³åæ³è§åèã\n\n \n\n**15\\. JavaScriptæä»½å¤åºä¸** ï¼åè [JS ä¸ new Date æä¹å°±å¤ä¸ä¸ªæäºï¼](http://www.cftea.com/c/2010/06/4KJ75KPG9NBFEIA1.asp) [JavaScriptââæçç¹å¾ä½¿ç¨ Date 对象æ¶éå°çé®é¢](http://www.cnblogs.com/liuning8023/archive/2012/12/15/2819728.html)ï¼\n\n\n\nææè®¾ç½®çæ¶5æï¼ç»æå´æ¯6æã\n\nå®é
ä¸ï¼æä»¬æ°æä»½ä¸æ¯ä» 0 å¼å§ï¼ä½æ¯ JavaScript å´æ¯ä» 0 å¼å§ãJSä¸ç0ææ¯æä»¬ç1æï¼JSä¸ç1ææ¯æä»¬ç2æ...\n\næä»¥è®¾ç½®æä»½æ¶è®°å¾åä¸ï¼è·åæä»½æ¶è®°å¾å ä¸ãã\n\n \n\n**15\\. 计æ¶å¨ä¸ä¼é»å¡ä»£ç æ§è¡**\n\n\n\næçæ¬ææ¯æ§è¡å® a() åè¾åºbï¼æ²¡æ³å°bå
è¾åºäºï¼ä»è¿éä¹å¯ä»¥æ¨æµåºï¼è®¡æ¶å¨å¹¶ä¸ä¼é»å¡åé¢è¯å¥çæ§è¡ã\n\n \n\nâï¾(o\\*ï½¥Ïï½¥)ï¾å®ç»æ£è± çå¾
review"},{"slug":"1969","title":"ç¾åº¦åç«¯ææ¯å¦é¢ç¼ç ææï¼TASK 0001ï¼","tags":[],"body":"[ç¾åº¦Webåç«¯ææ¯å¦é¢](https://github.com/baidu-ife/ife)ï¼Baidu Institute of Front-End Technologyç®ç§°IFEï¼æ¯ä¸ä¸ªç±ç¾åº¦EFEå¢éãç¾åº¦äººåèµæºé¨æ ¡åæèç»èååºåçãé¢å卿 ¡å¤§å¦ççå端å¹è®ç»ç»ï¼åå©ç¾åº¦å¤§éä¼ç§çå端工ç¨å¸ä»¥å丰å¯çå端ç¥è¯ç§¯ç´¯ï¼å¸®å©å¤§å¦ç们æ´å 髿ãç³»ç»å°å¦ä¹ Webåç«¯ææ¯ã\n\nç¾åº¦Webåç«¯ææ¯å¦é¢å·²æ£å¼å¼å¦ï¼ææå¹¸æä¸ºäºç¬¬ä¸æçå级çå¦åï¼å¯ä»¥åèè£ä»¬ä¸èµ·ç©èå¦ï½\n\næ³ä¸èµ·å¦ä½æ¯æ²¡å½åçå¯ä»¥å 群ï¼438966405\n\n---\n\nTASK 0001 åå¸ï¼å级çReviewæäº¤æªæ¢æ¶é´ä¸º4æ23æ¥ï¼ä¸çº§ç为4æ16æ¥ã\n\nTASK 0001 å
容ï¼[https://github.com/baidu-ife/ife/tree/master/task/task0001](https://github.com/baidu-ife/ife/tree/master/task/task0001)ï¼è¿è®¾ç½®äº1-6å°èç
§é¡¾æè¿æ ·çå¼±èï¼å¤§èµï½ï¼\n\næåçï¼[https://github.com/DIYgod/ife-work/tree/master/task0001](https://github.com/DIYgod/ife-work/tree/master/task0001)\n\nå¨çº¿Demoï¼Â [https://www.anotherhome.net/file/ife/task0001/](https://www.anotherhome.net/file/ife/task0001/)\n\næ¬æ¬¡ä»»å¡ç´¯è®¡è±è´¹æ¶é´6天ï¼4.13-4.19 ï¼\n\nä¸é¢æ¯æå TASK 0001 è¿ç¨ä¸çä¸äºè®°å½ã\n\n<!--more-->\n\n \n\n**1. position 屿§**ï¼åè [CSS å®ä½-W3School](http://www.w3school.com.cn/css/css_positioning.as
318p)ã[CSS+DIVå¸å±ä¸absoluteårelative](http://selfcontroller.iteye.com/blog/1826119)ï¼\n\nposition 屿§æ¯è¾éè¦ï¼ä½èªå·±ççæ¶åæ²¡ç徿ç½ï¼é©¬é©¬èèç¥è¿äºï¼äºæ¯åä»»å¡çæ¶åå°±åºäºè«åå
¶å¦çé®é¢ï¼å¨èçé¥ç叮婿åç°æ¯å 为 position 屿§æ²¡ææã\n\nç¨èªå·±çè¯ç®åæ»ç»ä¸ä¸ï¼position屿§æåä¸ªå±æ§å¼ï¼static relative absolute fixedã static 为é»è®¤ï¼å
ç´ æ¡æ£å¸¸çæï¼åºç°å¨Â normal flow ä¸ï¼relative 使å
ç´ æ¡åç§»æä¸ªè·ç¦»ï¼åæ¬æå ç空é´ä»ä¿çï¼ä¹æ¯åºç°å¨Â normal flow ä¸ï¼absolute 使å
ç´ æ¡è·³åºÂ normal flow å®å
¨å é¤ï¼å¹¶ç¸å¯¹äºå
¶å
å«åå®ä½ï¼åæ¬æå çç©ºé´æ¶å¤±ï¼fixed åæ ·ä½¿å
ç´ æ¡è·³åºÂ normal flowï¼ç¸å¯¹äºæµè§å¨çªå£è¿è¡å®ä½ã\n\n \n\n**2\\. æµ®å¨å
ç´ åå
¶åç»éæµ®å¨å
ç´ å¡«å
çä½ç½®**ï¼åè [CSS float æµ®å¨å±æ§](http://www.cnblogs.com/polk6/archive/2013/07/25/3142187.html)ï¼\n\n彿¶çæ
嵿¯è¿æ ·çï¼HTMLé¨åï¼\n\n<pre class=\"lang:default decode:true\"><div id=\"div6\">\n <div class=\"div6-a\"></div>\n <div class=\"div6-b\"></div>\n <div class=\"div6-c\"></div>\n</div></pre>\n\nCSSé¨åï¼\n\n<pre class=\"lang:css decode:true\">#div6 {\n margin-bottom: 10px;\n}\n.div6-a {\n float: left;\n width: 50px;\n height: 50px;\n background: #f00;\n}\n.div6-b {\n margin: 0 50px;\n height: 50px;\n background: #00f;\n}\n.div6-c {\n float: right;\n width: 50px;\n height: 50px;\n background: #ff0;\n}</pre>\n\nç»æåºç°é®é¢ï¼\n\n\né»è²çCå
ç´ è·å°ä¸ä¸è¡å»äº\n\nå°è¯äºä¸å
æCå
ç´ flowå°å³ä¾§åå¡«å
Bå
ç´ ï¼å³ï¼\n\nHTMLé¨åï¼\n\n<pre class=\"lang:default decode:true\"><div id=\"div6\">\n <div class=\"div6-a\"></div>\n <div class=\"div6-c\"></div>\n <div class=\"div6-b\"></div>\n</div></pre>\n\nè¾¾å°é¢æç»æï¼Â \n\n\nåå ï¼æµ®å¨å
ç´ å¨ææ¡£æµç©ºåºçä½ç½®ï¼ç±åç»ç(éæµ®å¨)å
ç´ å¡«å
ä¸å»ï¼å级å
ç´ ç´æ¥å¡«å
ä¸å»ï¼è¥è·æµ®å¨å
ç´ çèå´åçéå ï¼æµ®å¨å
ç´ è¦çå级å
ç´ ï¼å
èå
ç´ åæç©ºéå°±æå
¥ã\n\næä»¥å å
¥Cå
ç´ ååå å
¥Bå
ç´ æ¶ï¼Bå
ç´ ç´æ¥å¡«å
å°A Cå
ç´ çåä¸è¡ï¼å å
¥Bå
ç´ ååå å
¥Cå
ç´ æ¶ï¼ç±äºBå
ç´ ä¸è¡æ²¡æç©ºéï¼Cå
ç´ æµ®å¨å°ä¸ä¸è¡ã\n\n \n\n**3\\. è´è¾¹è·(negative margin)**ï¼åè [CSSå¸å±å¥æ·«å·§è®¡ä¹-强大çè´è¾¹è·](http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html)ï¼\n\n[壿¯å¸å±ãåé£ç¿¼å¸å±](http://www.imooc.com/wenda/detail/254035)é½ç¨äºè´è¾¹è·å¯¹æµ®å¨å
ç´ çå½±åçåçï¼æä¸ªå
ç´ è½ç¶åå¨äºåé¢ï¼ä½å¯ä»¥éè¿è´è¾¹è·è®©å®å¨æµè§å¨æ¾ç¤ºçæ¶åæ¯å¨åé¢çï¼å
·ä½è§åèï¼åå¾é常好ã\n\n \n\n**4. æ¸
餿µ®å¨**ï¼åè [é£äºå¹´æä»¬ä¸èµ·æ¸
é¤è¿çæµ®å¨](http://www.iyunlu.com/view/css-xhtml/55.html)ï¼\n\nåæµ®å¨å¸å±é£é¢æ¶ï¼è£
èè²æ¹åç红è²å®¹å¨æ»æ¯æ¾ç¤ºä¸åºæ¥ï¼ç¨F12çå°çº¢è²å®¹å¨çé«åº¦ä¸ç¥é为ä»ä¹åæäº0ï¼äºæ¯åèåé£ç¿¼å¸å±ç代ç ï¼åç°åé£ç¿¼å¸å±å¨ç¶çº§å
ç´ è®¾ç½®äºä¸ä¸ªÂ overflow: hidden ç屿§ï¼æå°è¯äºä¸ä¸ç»çº¢è²å®¹å¨ä¹å ä¸Â overflow: hidden 屿§ï¼é«åº¦å±
ç¶ç¥å¥å°å¯ä»¥èªéåºäºï¼ååä¸çè§£ã\n\nç»è¿èçé¥çæç¹ç¥éäºï¼å级å
ç´ é½æ¯ flow 屿§çæ¶åï¼ä¼é æç¶çº§å
ç´ æ²¡æé«åº¦ï¼è overflow: hidden ææ¸
餿µ®å¨çææï¼æä»¥å ä¸åä¼ä½¿ç¶çº§æ¢å¤é«åº¦ï¼overflow: hidden æ¸
餿µ®å¨çåçè§åèï¼ã\n\n \n\nå°æ¤ä¸ºæ¢ï¼è±äºä¸¤å¤©æ¶é´ï¼å·²ç»å®æäº1-6è宿å°ç»ä¹ çå
å®¹ï¼ææè§ï¼[https://www.anotherhome.net/file/ife/task0001-16/task0001.html](https://www.anotherhome.net/file/ife/task0001-16/task0001.html)\n\nä¸é¢å°±æ¯ç»¼åç»ä¹ äºï¼çèµ·æ¥å°±å¥½é¾ãã\n\n \n\n**5. absolute å
ç´ çå®ä½**ï¼åè [CSS ä¸ï¼ä¸ºä»ä¹ç»å¯¹å®ä½ï¼absoluteï¼çç¶çº§å
ç´ å¿
é¡»æ¯ç¸å¯¹å®ä½ï¼relativeï¼ï¼-ç¥ä¹](http://www.zhihu.com/question/19926700)ï¼\n\nå第ä¸é¢ä¸å¯¼èªæ çæ¶åéè¦ç¨å°ç»å¯¹å®ä½ï¼ä½ç»å¯¹å®ä½æ¯ç¸å¯¹è°å®ä½å¢ï¼ä¹åä¸ç´æ²¡ææ¸
æ¥ã\n\nabsolute å
ç´ çå®ä½æ¯ä¸æº¯ç¶çº§å
ç´ ï¼æ¾ç¬¬ä¸ä¸ªä¸æ¯ static çå
ç´ ï¼ä»¥å
¶ä¸º absolute çåºåã妿ç¶çº§å
ç´ å
¨é½æ²¡æè®¾ç½®ï¼staticï¼ï¼åéé¢çç»å¯¹å®ä½ä»¥ body å®ä½ã\n\næä»¥ä¸è¬çåæ³æ¯å°æ³ä½ä¸ºåºåçç¶çº§å
ç´ å ä¸Â position: relative 屿§ã\n\n \n\n**6. å¾çç 4px 空ç½é´è·**ï¼åè [Why does container div insist on being slightly larger than its content? -stackoverflow](http://stackoverflow.com/questions/11126685/why-does-container-div-insist-on-being-slightly-larger-than-its-content)ï¼\n\næå
¥é¡¶é¨å¾çæ¶ååç°äºä¸ä¸ªå¾è¯¡å¼çé®é¢ï¼è§å¾ï¼\n\nå¾çé«åº¦500px\n\n\nç¶çº§é«åº¦504px\n\n\nå¤åºæ¥4pxããã\n\nç½ä¸æäºä¸åºæ¬ä¸é½æ¯å 为设置[inline-blockå
ç´ æåºç°ç空ç½é´è·](http://www.w3cplus.com/css/fighting-the-space-between-inline-block-elements)ï¼ä½ææ²¡æinline-blockå
ç´ åã使¯å¯ä»¥éè¿ç±»ä¼¼çæ¹æ³æ¶é¤4pxé´è·ï¼æç¨äºè®¾ç½®ç¶å
ç´ çåä½å¤§å°ä¸º0çæ¹æ³è§£å³ã\n\næå·²ç»å°ä¸è¿°é®é¢ç代ç åç®åä¼ å°äºæå¡å¨ä¸ï¼æå
´è¶£çå¯ä»¥å¸®æçä¸ä¸ï¼[https://www.anotherhome.net/file/ife/task0001-7_problem/](https://www.anotherhome.net/file/ife/task0001-7_problem/)\n\nUpdateï¼å¤è°¢Â [天ç¶å²å¨](http://saintwinkle.com/)ï¼åå å·²äºè§£
318ï¼<img> é»è®¤æ¯inlineå
ç´ ï¼å
èå
ç´ ãè¡å
å
ç´ ï¼ï¼è®¡ç®é«åº¦æ¶è¦å ä¸Â line-height çé»è®¤å¼ï¼4pxï¼ã\n\næ¥èªstackoverflowï¼\n\n> Since an <img> is an inline element by default, it's height is calculated differently as related to the default line-height value.\n>\n> On inline elements, the line-height CSS property specifies the height that is used in the calculation of the line box height.\n>\n> On block level elements, line-height specifies the minimal height of line boxes within the element.\n> \n\n**7. CSSæ§å¶DIV两åå·¦å³é«åº¦ä¸è´**ï¼åè [CSSæ§å¶DIV两åå·¦å³é«åº¦ä¸è´](http://www.l3c.cn/plus/view.php?aid=8)ï¼\n\ncontent为ç¶çº§å
ç´ ï¼å¤ä¸ªpostä½ä¸ºå级å
ç´ ï¼ç®çæ¯ä½¿posté«åº¦ä¿æä¸è´ã\n\n<pre class=\"lang:default decode:true\">.content {\n width: 980px;\n overflow: hidden;\n}\n\n.post {\n width: 320px;\n float: left;\n margin-bottom: -10000px;\n padding-bottom: 10000px;\n background: #fff;\n}</pre>\n\nææ¯è¿æ ·çè§£çï¼éè¿Â padding-bottom: 10000pxï¼å¤è¾¹è·åå
è¾¹è·åæ¶å 10000pxï¼åéè¿Â margin: -10000pxï¼å
è¾¹è·åæ¶å10000pxï¼ç¶åï¼å¨æ²¡è¾¾å°åä¸é«åº¦æ¶ï¼è¾é¿çå
ç´ çå¤è¾¹è·è·çåå°ï¼èè¾ççå
ç´ å¤è¾¹è·ä¸åï¼è¾¾å°åä¸é«åº¦åï¼è¾é¿å
ç´ åè¾çå
ç´ å¤è¾¹è·åæ¶åå°ãç»æå°±é«åº¦ä¸è´äºã\n\n \n\n**8. trè¾¹æ¡**ï¼åè [CSSå¦ä½ä¿®æ¹trè¾¹æ¡å±æ§](http://blog.csdn.net/chenssy/article/details/8453495)ï¼\n\nåè¿æ ·å¨CSSä¸ç´æ¥ç»tr设置边æ¡ä¸èµ·ä½ç¨ï¼è妿æå®tdçè¾¹æ¡å伿鴿çç°
318象åºç°\n\n<pre class=\"lang:default decode:true\">tr {\n border: 1px solid #000;\n}</pre>\n\n妿忶ç»table设置border-collapse屿§ï¼tr设置çè¾¹æ¡å°±è½åºç°äº\n\n<pre class=\"lang:default decode:true\">table { \n border-collapse: collapse;\n}\n\ntr {\n border: 1px solid #000;\n}</pre>\n\nåå è§åè\n\n \n\n**TASK0001 å
¨é¨å®æï¼**\n\n第ä¸é¢ Demoï¼[https://www.anotherhome.net/file/ife/task0001/](https://www.anotherhome.net/file/ife/task0001/)\n\n1-6é¢ Demoï¼[https://www.anotherhome.net/file/ife/task0001-16/task0001.html](https://www.anotherhome.net/file/ife/task0001-16/task0001.html)\n\n \n\nâï¾(o\\*ï½¥Ïï½¥)ï¾å®ç»æ£è± çå¾
review\n\n \n\nReviewç»æï¼æ ¹æ®å¯¼å¸ç建议修æ¹åæ»ç»å¦ä¸ï¼\n\n**9\\. å é¤Â lang=\"zh-CN\"** ï¼åè [ç½é¡µå¤´é¨ç声æåºè¯¥æ¯ç¨ lang=\"zh\" è¿æ¯ lang=\"zh-cn\"ï¼](http://www.zhihu.com/question/20797118)ï¼\n\nä¿®æ¹ï¼\n\n<pre class=\"lang:default decode:true \"><head lang=\"zh-CN\">\n\n<head></pre>\n\nåä¸ç zh å zh-CN åå±äºåºå¼ç¨æ³ã\n\nçäºä¸ç¾åº¦ æ·å® å¾®åçç½ç«å没æålang屿§ï¼å¯ä»¥æ¾å¿å æå¦ã\n\n \n\n**10\\. 使ç¨h1æ ç¾** ï¼åè [HTMLä¹h1 h2 h3 h4æ ç¾ç¥è¯ç»éªç¯ - DIVCSS5](http://www.divcss5.com/html/h328.shtml)ï¼\n\nä¿®æ¹ï¼\n\n<pre class=\"lang:default decode:true\"><div class=\"logo\">\n <a href=\"index.html\"><img src=\"img/logo.png\" alt=\"logo\" width=\"200px\"></a>\n</div>\n\n<h1 class=\"logo\">\n <a href=\"index.html\"><img src=\"img/logo.png\" alt=\"logo\" width=\"200px\"></a>\n</h1></pre>\n\nh1 h2 h3 h4 æ 颿 ç¾å¸¸å¸¸ä½¿ç¨å¨ä¸ä¸ªç½é¡µä¸å¯ä¸æ é¢ãéè¦æ ç®ãéè¦æ é¢çæ
å½¢ä¸ã\n\nå
¶ä¸ h1 å¨ä¸ä¸ªç½é¡µä¸æå¥½åªä½¿ç¨ä¸æ¬¡ï¼å¦å¯¹ä¸ä¸ªç½é¡µå¯ä¸æ é¢ä½¿ç¨ã\n\nå¨ä¸ä¸ªç½é¡µä¸å¯ä»¥éå½ä½¿ç¨h1 h2 h3 h4æ ç¾ï¼æå©äºç½é¡µçéç¹é¨åçªåºï¼åæ¶ä¹å©äºæç´¢å¼ææåã\n\nçå°æ·å®ä¹æ¯è¿æ ·åçï¼å¨logoç代ç å¤å
äºä¸ä¸ªh1æ ç¾ã\n\n \n\n**11\\. å
¶ä»ä¿®æ¹**\n\n没æ³å°å¨aæ ç¾ä¸ç¨classï¼å¤å¥äºä¸å±divï¼\n\n<pre class=\"lang:default decode:true \"><div class=\"icon-github\">\n <a href=\"https://github.com/DIYgod\" target=\"_blank\"><img src=\"img/icon-github.png\"></a>\n</div>\n\n<a class=\"icon-github\" href=\"https://github.com/DIYgod\" target=\"_blank\"><img src=\"img/icon-github.png\"></a></pre>\n\nå½åï¼\n\n<pre class=\"lang:default decode:true\"><div class=\"description\">\n\n<div class=\"banner\"></pre>\n\nå°<hr>ç¨border代æ¿ï¼\nâ䏿¨è<hr>ï¼ç¨ä¸ä¸å®¹å¨çborderæ¥ä»£æ¿å§\n彿ä¸éè¦è¿æ¡çº¿çæ¶åï¼åªéè¦æ¹åæ ·å¼å³å¯ï¼ä¸éè¦æ¹å¨htmlâ\n\n使ç¨ul liæè
dlä¹ç±»çå表è¯ä¹çdomã\n\n "},{"slug":"1826","title":"å客忬æ°å®¶å¦","tags":[],"body":"ç¼ç Google Adsense å·²ç»100å¤ç¾å
马ä¸å°±è½æç°äºï¼å 䏿³ä¹°ä¸ªvpsè·Pythonç¬è«ï¼å°±æ°å
¥äº Linode 1GBï¼æè§è¶
ç½ã\n\næè°¢ç¦»å¼æåè¿æ®µæ¶é´æ¶çæç [TECHNETCAL](http://technetcal.com/) [é³ç¬¦](https://freedom.moe/) ï¼è¿æä¸ä¸ªå¥è©è¯´æ¯è¦èµå©æç¶åè¿å 天就ææèµ¶èµ°äºç主æºå\n\nå¦å¤æ´çäºä¸ä¸åé¾ï¼ç§»é¤é¨å 软件å享类 ç½èµç±» ç§èªç§»é¤æç龿¥ çåé¾ï¼æä¸å¦è¡éç¥ï¼å¦æçé®è¯·èç³»æï¼ï¼è¿æä¸äºè²ä¼¼æ»æçï¼\n\n<pre class=\"lang:default decode:true \">http://wanan.me/\nhttp://www.12s.me/\nhttp://blog.juanzii.me/\nhttp://www.gazyip.com/\nhttp://blog.aixinyongshi.cn/\nhttp://shana.me/\nhttp://waysmaker.com/</pre>\n\nå¦æè¿æ´»ç请马ä¸ä¸æèç³»ã\n\né´äºåé¾å·²ç»å¤è³80å¤ä¸ªï¼ä¸ºäºéå¶æ°éï¼æä»¥åé¾ä»æ¤ä¸åæ¥è
ä¸æï¼æ°å¢åé¾è¦æ±å¦ä¸ï¼\n\n1\\. æ ä¾µæå
容ï¼å
æ¬ä½ä¸éäº çç软件 ççè§é¢ æªç½²å转载æç« ï¼è·æç©å¾å¥½çå
许å°éåå¨ï¼æå°±æ¯è¦åéæ åï¼ä¸æå¬æåÙ©(à¹`н´à¹)Û¶ï¼\n2\\. é ç½èµ åä¸åä¸¥é æä»¥çå©ä¸ºç®ç\n3\\. çæ£ç¨å¿å»ç»´æ¤\n4\\. è·æå¤äº¤æµ\n5\\. å¾
è¡¥å
ï¼è¿æ²¡æ³å¥½á¦(à¹â¯â¡â°à¹á¦)"},{"slug":"1764","title":"ä¸ä¸ªå®æ´ç¼è¯å¨çå®ç°(äº) è¯æ³åæ","tags":[],"body":"**1 ç³»å说æ**\n\n[GitHubå°å](https://github.com/DIYgod/Compiler) [åé¶æ®µæºç ](http://www.anotherhome.net/file/compiler/) [åé¶æ®µè¯´æéå](http://www.anotherhome.net/1751)\n\n**2 è¯æ³åæè¯´æ**\n\nè¯æ³ï¼ç»ååè¯ä»¥å½¢æè¯ç» ä»å¥ æå¥åçæ¹æ³ã\n\nç»è¿è¯æ³åæï¼æä»¬å·²ç»å¯ä»¥å°è¾å
¥ææ¬è¯å«æä¸ä¸ªä¸ªçåè¯ï¼æ¬é¶æ®µçç®æ æ¯å°è¿äºåè¯è¯å«æå¥åï¼å¤æåè¯çè¿ç§ç»å形弿¯å¦ç¬¦åæä»¬å®ä¹çè¯æ³ã\n\n_2.1 ç¨ææ³æ¥å®ä¹è¯æ³_\n\nè¯æ³åæéè¦ç±éå½èè·å¾çé¢å¤çè
318¡¨ç¤ºè½åï¼æ¾ç¶æ£å表达å¼å·²ç»ä¸è½æ»¡è¶³æä»¬çéæ±ã\n\näºå®ä¸ï¼ææ³ä¹å¯ä»¥ç¨æ¥æè¿°è¯æ³åè¯çç»æï¼ä½æ£å表达å¼å·²ç»å¯ä»¥æ»¡è¶³éæ±ï¼è¿æ¶ä½¿ç¨æ£åè¡¨è¾¾å¼æ´ä¸ºç®ç»ã\n\n_2.2 LR(1) åææ³_\n\n@%â¦â¦ï¿¥&%#ï¿¥å¤ªå¤æä¸æ³è¯´\n\næ»ä¹ï¼LR(1) æ¯ä¸ç§é常é常强大çåæç®æ³ï¼è½å¤è§£å³å¾å¤å½çº¦-å½çº¦å²çªï¼å¤§å¤æ°ç¨ä¸ä¸ææ å
³ææ³æè¿°å
¶è¯æ³çç¨åºè®¾è®¡è¯è¨é½æä¸ä¸ª LR(1) ææ³ã<!--more-->\n\n_2.3 ä½¿ç¨ Yacc çæè¯æ³åæå¨_\n\næé LR(1)åæè¡¨çç®æ³ç®åå¾è¶³ä»¥ç¨è®¡ç®æºæ¥èªå¨å®æï¼è䏿工æé ååéº»ç¦æ è¶£ï¼æä»¥ä½¿ç¨Yaccæ¯ä¸ä¸ªææºçå³å®ã\n\n类似Lexï¼Yaccè§èå为ä¸é¨å\n\n<pre class=\"lang:default decode:true \">%{\n...\n%}\n...\n%%\n...</pre>\n\n第ä¸é¨ååLexï¼å
å«includeå声æ\n\n第äºé¨åå®ä¹ä»è¯æ³åæä¸æ¥æ¶çç»ç»ç¬¦ï¼å¼å§ç¬¦å·ï¼ä¼å
级ç\n\n第ä¸é¨åå®ä¹ææ³åè¯ä¹å¨ä½ï¼è¯æ³åæé¶æ®µåªå®ä¹ææ³ï¼è¯ä¹å¨ä½å°è¯ä¹åææ¶åå宿ã\n\n2.3.1 å²çª\n\nYacc éæ©ç§»è¿æ¥è§£å³ç§»è¿-å½çº¦å²çªï¼éæ©ä½¿ç¨å¨ææ³ä¸å
åºç°çè§åæ¥è§£å³å½çº¦-å½çº¦å²çªã\n\n2.3.2 ä¼å
级æå¯¼\n\nå®ä¹ä¼å
级æ¯ä¸ºäºè§£å³äºä¹æ§ï¼è¿æ ·åææ³çæ¶åæ¹ä¾¿çå¤ã\n\nYaccå¨ç¬¬äºé¨åå¯ä»¥åå¦ä¼å
级æå¯¼å½ä»¤\n\n<pre>%left COMMA\n%right PLUSASSIGN MINUSASSIGN TIMESASSIGN DIVIDEASSIGN ASSIGN\n%left OR\n%left AND\n%left EQ NEQ\n%left LE GE LT GT\n%left PLUS MINUS\n%left TIMES DIVIDE MOD\n%right INC DEC NOT\n%left LPAREN RPAREN LBRACK RBRACK</pre>\n\nèªä¸èä¸ä¼å
级éä½ï¼left right 说æåè¯æ¯å·¦ç»åè¿æ¯å³ç»åã\n\n**3 å
·ä½å®ç°**\n\nè¯æ³åæå¨åæ¹è¿è¿çè¯æ³åæå¨æºç è§æç« å¼å¤´ã\n\nè¿è¡å°æ¬é¶æ®µï¼ç¼è¯å¨åå±ä¸ºå个模åï¼\n\n1.é误å¤ç模åï¼errormsg.c errormsg.hï¼ï¼ç¨æ¥äº§ç嫿件ååè¡å·çæ¥éä¿¡æ¯2.常ç¨å·¥å
·æ¨¡åï¼util.c util.hï¼ï¼å®ä¹ä¸äºå¸¸ç¨ç彿°3.è¯æ³åææ¨¡åï¼simplec.lexï¼ï¼éè¿Lexè¿è¡è¯æ³åæ4.è¯æ³åææ¨¡åï¼simplec.yaccï¼ï¼éè¿Yaccè¿è¡è¯æ³åæ\n\nå
¶ä¸ä¸ä¸é¶æ®µç token.h å·²ç»ä¸åéè¦ï¼ä½ä¸ºä»£æ¿ï¼Yacc伿 ¹æ®æä»¬åçææ³çåè¯è§èèªå¨çæä¸ä¸ªä¸åè¯ç¸å
³ç头æä»¶ y.tab.h ï¼parsetest.cæ¯ä¸ä¸ªé©±å¨ç¨åºï¼æ£å¸¸æ
åµä¸ä¼è¾åºÂ Parsing successful!\n\néï¼[ANSI C grammar (Lex)](http://www.lysator.liu.se/c/ANSI-C-grammar-l.html) [ANSI C grammar (Yacc)](http://www.lysator.liu.se/c/ANSI-C-grammar-y.html)\n\n \n\nè¯æ³åæ Done."},{"slug":"1754","title":"ä¸ä¸ªå®æ´ç¼è¯å¨çå®ç°(ä¸) è¯æ³åæ","tags":[],"body":"[GitHubå°å](https://github.com/DIYgod/Compiler) [åé¶æ®µæºç ](http://www.anotherhome.net/file/compiler/) [åé¶æ®µè¯´æéå](http://www.anotherhome.net/1751)\n\n为äºå°ä¸ä¸ªç¨åºä»ä¸ç§è¯è¨ç¿»è¯æå¦ä¸ç§è¯è¨ï¼ç¼è¯å¨å¿
é¡»é¦å
æç¨åºçåç§æåæå¼ï¼å¹¶ææ¸
å
¶ç»æåå«ä¹ï¼ç¶ååç¨å¦ä¸ç§æ¹å¼æè¿äºæåç»åèµ·æ¥ãç¼è¯å¨çå端æ§è¡åæï¼å端è¿è¡åæã\n\nèåæä¸è¬å为3ç§ï¼è¯æ³åæ è¯æ³åæ è¯ä¹åæ\n\næ¬é¶æ®µè¿è¡çæ¯è¯æ³åæï¼ç®çæ¯å°è¾å
¥æä»¶åè§£æä¸ä¸ªä¸ªç¬ç«çè¯æ³ç¬¦å·ï¼å³åè¯ã\n\n**æ ¹æ®è书çæç¤ºï¼å¨æ¬é¶æ®µåäºä¸ä¸ªæ¨¡åï¼**\n\n1.é误å¤ç模åï¼errormsg.c errormsg.hï¼ï¼ç¨æ¥äº§ç嫿件ååè¡å·çæ¥éä¿¡æ¯2.è¯æ³åææ¨¡åï¼lexical.lex token.hï¼ï¼éè¿Lexè¿è¡è¯æ³åæ3.常ç¨å·¥å
·æ¨¡åï¼util.c util.hï¼ï¼å®ä¹ä¸äºå¸¸ç¨ç彿°\n\nè¯æ³åææ¨¡åä¸é误å¤ç模åï¼ä¸¤è
éè¿ errormsg.h ä¸å£°æçåéå彿°è¿è¡éä¿¡ï¼EM_tokPos åéä¼ éæ¯ä¸ªåè¯ä»¥å符为åä½çä½ç½®ï¼EM_newline()彿°è®°å½è¡å·ï¼EM_error() è¾åºæ¥éä¿¡æ¯ã\n\né误å¤ç模åä¸å¸¸ç¨å·¥å
·æ¨¡åï¼é误å¤ç模åä½¿ç¨ util.h ä¸å£°æç checked_malloc() åé
å
å彿°\n\nå¦å¤è¿å
å«äº 驱å¨ç¨åºï¼driver.cï¼æµè¯æä»¶ï¼test.cï¼ makefile<!--more-->\n\n**ä¸é¢ä¸»è¦ä»ç»æ¬é¶æ®µæéè¦çè¯æ³åææ¨¡åã**\n\n**tokens.h**ï¼å®ä¹è¯æ³åè¯å¸¸é以åyylval\n\n<pre class=\"lang:default decode:true\">typedef union {\n\tint ival;\n \tchar cval;\n \tdouble dval;\n\tstring sval;\n\t} YYSTYPE;\nextern YYSTYPE yylval;</pre>\n\nä¸è¿°ä»£ç å®ä¹äºyylvalï¼yylvalæ¯ä¸ä¸ªè¡¨ç¤ºä¸åè¯ä¹å¼çé
318åï¼å
¶ä¸çival cval dval sval åå«ç¨æ¥ä¿å æ´æ° å符 æµ®ç¹æ° å符串 åè¯çè¯ä¹å¼ã\n\n<pre class=\"lang:default decode:true \"># define ID 128\n... ... ... ...</pre>\n\nè¿æ®µå®ä¹äºä¸äºå¸¸æ°ï¼è¿äºå¸¸æ°ä¾ lexical.lex 使ç¨ï¼å®ä»¬ææè¢«å¹é
çæ¯ä½ç§ç±»åçåè¯ã\n\n**lexical.lex**ï¼Lexçæºæä»¶ï¼å¯ä»¥éè¿Lexçæä¸ä¸ªè¯æ³åæå¨\n\nLexæ¯ä¸ä¸ªå¯ä»¥å°æ£å表达å¼è½¬æ¢åè¯æ³åæå¨ççæå¨ï¼å®ç±è¯æ³è§èçæä¸ä¸ªCç¨åºï¼lex.yy.cï¼ã该è§èå
å«ä¸ä¸ªæ£å表达å¼åä¸ä¸ªå¨ä½ãè¿ä¸ªå¨ä½å°åè¯ç±»åï¼å¯è½åå
¶ä»ä¿¡æ¯ä¸èµ·ï¼ä¼ ç»ç¼è¯å¨çä¸ä¸å¤çé¶æ®µã\n\n<pre class=\"lang:default decode:true \">%{\n#include <string.h>\n#include \"util.h\"\n#include \"tokens.h\"\n#include \"errormsg.h\"\n\nint charPos=1; //è®°å½æ¯ä¸ªåè¯çä½ç½®\n\nint yywrap(void) //Lex彿°, è¿å1å°±åæ¢è§£æ, å¯ä»¥ç¨æ¥è§£æå¤ä¸ªæä»¶\n{\n charPos=1;\n return 1;\n}\n\nvoid adjust(void) //计ç®åè¯ä½ç½®, å¹¶éè¿EM_tokPosä¼ ç»éè¯¯ä¿¡æ¯æ¨¡å\n{\n EM_tokPos=charPos;\n charPos+=yyleng;\n}\n\n%}\n\n%%\n[\" \"\"\\t\"] {adjust(); continue;}\n\"\\n\" {adjust(); EM_newline(); continue;}\n(\\\")([A-Za-z0-9])*(\\\") {adjust(); yylval.sval = yytext; return STRING_V;}\nstring {adjust(); return STRING;}\n'[A-Za-z0-9]' {adjust(); yylval.cval = yytext[1]; return CHAR_V;}\nchar {adjust(); return CHAR;}\nshort {adjust(); EM_error(EM_tokPos, \"æä¸æ¯æshortç±»å\");}\n-?[0-9]+ {adjust(); yylval.ival=atoi(yytext); return INT_V;}\nint {adjust(); return INT;}\nunsigned {adjust(); EM_error(EM_tokPos, \"æä¸æ¯æunsignedç±»å\");}\nlong {adjust(); EM_error(EM_tokPos, \"æä¸æ¯ælongç±»å\");}\nfloat {adjust(); EM_error(EM_tokPos, \"æä¸æ¯æfloatç±»å\");}\n-?[0-9]+(\\.[0-9]+)? {adjust(); yylval.dval = atof(yytext); return DOUBLE_V;}\ndo {adjust(); return DO;}\ndouble {adjust(); return DOUBLE;}\nstruct {adjust(); return STRUCT;}\nunion {adjust(); return UNION;}\nvoid {adjust(); return VOID;}\nenum {adjust(); return ENUM;}\nsigned {adjust(); EM_error(EM_tokPos, \"æä¸æ¯æsignedç±»å\");}\nconust {adjust(); return CONUST;}\nvolatile {adjust(); EM_error(EM_tokPos, \"æä¸æ¯ævolatile\");}\ntypedef {adjust(); return TYPEDEF;}\nauto {adjust(); EM_error(EM_tokPos, \"æä¸æ¯æauto\");}\nregister {adjust(); EM_error(EM_tokPos, \"æä¸æ¯æregister\");}\nstatic {adjust(); return STATIC;}\nextern {adjust(); return EXTERN;}\nbreak {adjust(); return BREAK;}\ncase {adjust(); return CASE;}\ncontinue {adjust(); return CONTINUE;}\ndefault {adjust(); return DEFAULT;}\nelse {adjust(); return ELSE;}\nfor {adjust(); return FOR;}\ngoto {adjust(); return GOTO;}\nif {adjust(); return IF;}\nreturn {adjust(); return RETURN;}\nswitch {adjust(); return SWITCH;}\nwhile {adjust(); return WHILE;}\nsizeof {adjust(); return SIZEOF;}\n[A-Za-z]+\\[[0-9]+\\] {adjust(); return ARRAY;}\n[A-Za-z_]([A-Za-z0-9_])* {adjust(); yylval.sval = yytext; return ID;}\n\",\" {adjust(); return COMMA;}\n\":\" {adjust(); return COLON;}\n\";\" {adjust(); return SEMICOLON;}\n\"(\" {adjust(); return LPAREN;}\n\")\" {adjust(); return RPAREN;}\n\"[\" {adjust(); return LBRACK;}\n\"]\" {adjust(); return RBRACK;}\n\"{\" {adjust(); return LBRACE;}\n\"}\" {adjust(); return RBRACE;}\n\".\" {adjust(); return DOT;}\n\"+\" {adjust(); return PLUS;}\n\"-\" {adjust(); return MINUS;}\n\"*\" {adjust(); return TIMES;}\n\"/\" {adjust(); return DIVIDE;}\n\"!=\" {adjust(); return NEQ;}\n\"==\" {adjust(); return ASSIGN;}\n\"=\" {adjust(); return EQ;}\n\"<=\" {adjust(); return LE;}\n\"<\" {adjust(); return LT;}\n\">=\" {adjust(); return GE;}\n\">\" {adjust(); return GT;}\n\"&\" {adjust(); return AND;}\n\"|\" {adjust(); return OR;}</pre>\n\n第ä¸é¨åï¼å³ä½äº%{...%}ä¹é´çé¨åï¼å
嫿è¥å¹²ç±æ¤æä»¶å
¶ä½é¨åC代ç 使ç¨çincludeå声æã\n\n第äºé¨åï¼å³ä½äº%}...%%ä¹é´çé¨åï¼å
嫿£å表达å¼çç®åå½¢å¼åç¶æè¯´æï¼æ¯å¦ä½ å¯ä»¥åä¸\n\n<pre class=\"lang:default decode:true \">digits [0-9]+</pre>\n\né£ä¹ç¬¬ä¸é¨åä¸å°±å¯ä»¥ç¨{digits}代æ¿[0-9]+äºã\n\n第ä¸é¨åï¼å³ä½äº%%åé¢çé¨åï¼å
嫿£å表达å¼åå¨ä½ãæ¯ä¸ªå¨ä½è¿åä¸ä¸ª int ç±»åçå¼ï¼token.hå®ä¹ç常æ°ï¼ï¼æåºå¹é
çæ¯åªä¸ç§åè¯ã\nå
¶ä¸æä¸¤æ¡å¹é
çå忥æ¶é¤äºä¹æ§ï¼\nè§åä¼å
ï¼å¯¹äºä¸ä¸ªç¹å®çæé¿åå§å串ï¼ç¬¬ä¸ä¸ªä¸ä¹å¹é
çæ£åå¼å³å®è¿ä¸ªå串çåè¯ç±»åï¼\næé¿å¹é
ï¼éè¿è§åä¼å
ç¡®å®æ£åå¼ä¹åï¼å串å䏿£åå¼å¹é
çæé¿çå符串ã\n\nå 个åéï¼yytextæ¯æ£åå¼å¹é
çå符串ï¼yylengæ¯æå¹é
çå符串çé¿åº¦ï¼charPos追踪æ¯ä¸ä¸ªåè¯çä½ç½®ï¼å¹¶åç¥EM_tokPosã\n\n \n\nè¯æ³åæ Done."},{"slug":"1751","title":"ä¸ä¸ªå®æ´ç¼è¯å¨çå®ç°","tags":[],"body":"_å¾çµçæºå¨ï¼æºå¨çæ±ç¼ï¼æ±ç¼ç Cï¼C çä¸ç©\n(æ¥èªç¥ä¹ç¨æ· Joy Neop)_\n\næ¬ç³»åå°å±ç¤ºä¸ä¸ªå®æ´ç¼è¯å¨ä»æ å°æçå®ç°è¿ç¨.\n\nç®æ æ¯ä»ä¸ä¸ªCè¯è¨çä¸å®å
¨åéç¿»è¯å°x86æ±ç¼è¯è¨, å°åå© Lex Yacc LLVM çå·¥å
·, å¦å¤æå®å®ç°åå¾åæ¶åé¢å对象.\n\nå
¨é¨ä»£ç æç®¡å¨Â [GitHub](https://github.com/DIYgod/Compiler).   åé¶æ®µçæºä»£ç å¨ [è¿é](http://www.anotherhome.net/file/compiler/) æ¥ç.\n\n主è¦åè è书(ãç°ä»£ç¼è¯åç--Cè¯è¨å®ç°ã), æ ¹æ®æ¤ä¹¦, æå°å®ç°å为11ä¸ªé¶æ®µ: è¯æ³åæ è¯æ³åæ è¯ä¹å¨ä½ è¯ä¹åæ æ 帧å¸å± ç¿»è¯ è§èå æä»¤éæ© æ§å¶æµåæ æ°æ®æµåæ å¯åå¨åé
318
ä»£ç æµåº.\n\n已宿ï¼\n\n[ãä¸ä¸ªå®æ´ç¼è¯å¨çå®ç°âè¯æ³åæ | Anotherhomeã](http://www.anotherhome.net/1754)\n\n[ãä¸ä¸ªå®æ´ç¼è¯å¨çå®ç°âè¯æ³åæ | Anotherhomeã](http://www.anotherhome.net/1764)\n\nTo be continued..."},{"slug":"1","title":"ä¸çï¼ä½ 好ï¼","tags":[],"body":"欢è¿ä½¿ç¨WordPressãè¿æ¯ç³»ç»èªå¨çæçæ¼ç¤ºæç« ãç¼è¾æè
å é¤å®ï¼ç¶åå¼å§æ¨çå客ï¼"}]</script>
318
318<script> 319 const searchInput = document.getElementById("searchInput"); 320 const resultsContainer = document.getElementById("searchResults"); 321 const emptyState = document.getElementById("searchEmpty"); 322 const resultsCount = document.getElementById("resultsCount"); 323 const rawData = document.getElementById("search-data")?.textContent || "[]"; 324 let parsedIndex = []; 325 326 try { 327 parsedIndex = JSON.parse(rawData); 328 } catch { 329 parsedIndex = []; 330 } 331 332 const indexBySlug = {}; 333 parsedIndex.forEach((item) => { 334 indexBySlug[item.slug] = { 335 ...item, 336 searchable: (item.title + " " + (item.tags?.join(" ") || "") + " " + item.body).toLowerCase(), 337 }; 338 }); 339 340 const cards = Array.from( 341 resultsContainer.querySelectorAll("[data-post-slug]"), 342 ); 343 344 cards.forEach((card) => { 345 const targetHref = card.dataset.postLink; 346 347 card.addEventListener("click", (event) => { 348 if (event.target instanceof Element && event.target.closest("a")) { 349 return; 350 } 351 352 if (targetHref) { 353 window.location.href = targetHref; 354 } 355 }); 356 357 card.addEventListener("keydown", (event) => { 358 const isActivatingKey = event.key === "Enter" || event.key === " "; 359 360 if ( 361 !isActivatingKey || 362 (event.target instanceof Element && event.target.closest("a")) 363 ) { 364 return; 365 } 366 367 if (targetHref) { 368 event.preventDefault(); 369 window.location.href = targetHref; 370 } 371 }); 372 }); 373 374 const applySearch = (value) => { 375 const query = value.trim().toLowerCase(); 376 const terms = query.split(/\\s+/).filter(Boolean); 377 let visible = 0; 378 379 cards.forEach((card) => { 380 const slug = card.dataset.postSlug; 381 const entry = indexBySlug[slug]; 382 const matches = 383 terms.length === 0 || 384 terms.every((term) => entry?.searchable.includes(term)); 385 386 card.classList.toggle("hidden", !matches); 387 388 if (matches) { 389 visible += 1; 390 } 391 }); 392 393 resultsCount.textContent = visible; 394 emptyState.classList.toggle("hidden", visible !== 0 || terms.length === 0); 395 }; 396 397 const params = new URLSearchParams(window.location.search); 398 const initialQuery = params.get("q") || ""; 399 400 if (initialQuery) { 401 searchInput.value = initialQuery; 402 } 403 404 applySearch(initialQuery); 405 406 searchInput.addEventListener("input", (event) => { 407 applySearch(event.target.value || ""); 408 }); 409 </script>
409 </section> <section class="text-gray-700 bg-white border-t sm:mt-20 dark:bg-neutral-950 border-neutral-200 dark:border-neutral-800"> <div class="container flex flex-col items-center py-8 mx-auto px-7 max-w-7xl sm:flex-row justify-center"> <a href="/" class="h-5 text-base group relative z-30 flex items-center space-x-2 text-black dark:text-white font-semibold"> <img src="/favicon.ico" alt="DIYgod" width="20" height="20" decoding="async" class="size-5 object-contain"> <span class="text-nowrap">Hi, DIYgod</span> </a> <p class="mt-4 text-sm text-neutral-700 dark:text-neutral-100 sm:ml-4 sm:pl-4 sm:border-l sm:border-neutral-300 dark:sm:border-neutral-700 sm:mt-0"> å·²è¿è¡ 4362 天 </p> <p class="mt-4 text-sm text-neutral-700 dark:text-neutral-100 sm:ml-4 sm:pl-4 sm:border-l sm:border-neutral-300 dark:sm:border-neutral-700 sm:mt-0"> © 2026 DIYgodï¼çæææï¼ç¦æ¢è½¬è½½ï¼è½¬åéæ³¨æåºå¤ </p> <a href="/sitemap.xml" class="mt-4 text-sm text-neutral-700 dark:text-neutral-100 sm:ml-4 sm:pl-4 sm:border-l sm:border-neutral-300 dark:sm:border-neutral-700 sm:mt-0 hover:text-neutral-900 dark:hover:text-neutral-50 transition-colors"> 410Sitemap 411</a> </div> </section> <div id="langPrompt" class="fixed bottom-4 right-4 z-50 hidden bg-white dark:bg-neutral-900 border border-neutral-200 dark:border-neutral-700 rounded-xl shadow-xl p-4 w-72" data-astro-cid-auakvm2o> <button id="langPromptClose" class="absolute top-3 right-3 text-neutral-400 hover:text-neutral-600 dar
411k:hover:text-neutral-300 transition-colors" data-astro-cid-auakvm2o> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-auakvm2o> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-astro-cid-auakvm2o></path> </svg> </button> <div class="flex items-center gap-3 pr-4" data-astro-cid-auakvm2o> <div class="flex-shrink-0 w-10 h-10 flex items-center justify-center rounded-full bg-blue-50 dark:bg-blue-900/30" data-astro-cid-auakvm2o> <svg class="w-5 h-5 text-blue-500" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" data-astro-cid-auakvm2o> <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 20c.9-3.068 2.116-6.272 3.689-9.118a.92.92 0 0 1 1.622 0C17.884 13.728 19.1 16.932 20 20m-7.65-3h6.3M4 6h5m0 0h3M9 6V4m3 2h2m-2 0c0 2.39-1.071 4.78-3 6.744m0 0C7.7 14.066 6.012 15.195 4 16m5-3.256C7.887 11.61 7.06 10.335 6.559 9M9 12.744c1 1.018 2.23 1.92 3.662 2.65" data-astro-cid-auakvm2o></path> </svg> </div> <div data-astro-cid-auakvm2o> <p class="text-sm font-medium text-neutral-900 dark:text-white" data-astro-cid-auakvm2o> 412Switch to English? 413</p> <p class="text-xs text-neutral-500 dark:text-neutral-400" data-astro-cid-auakvm2o> 414Your browser is not in Chinese. 415</p> </div> </div> <div class="mt-3 flex items-center gap-2" data-astro-cid-auakvm2o> <button id="langPromptYes" class="flex-1 px-4 py-2 text-sm font-medium text-white bg-blue-500 rounded-lg hover:bg-blue-600 transition-colors" data-astro-cid-auakvm2o> 416Yes 417</button> <button id="langPromptNo" class="flex-1 px-4 py-2 text-sm font-medium text-neutral-600 dar
417k:text-neutral-300 bg-neutral-100 dark:bg-neutral-800 rounded-lg hover:bg-neutral-200 dark:hover:bg-neutral-700 transition-colors" data-astro-cid-auakvm2o> 418No 419</button> </div> <button id="langPromptDismiss" class="mt-2 w-full text-center text-xs text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 transition-colors" data-astro-cid-auakvm2o> 420Don't ask again 421</button> </div>
421<script> 422 (function () { 423 const STORAGE_KEY = "lang-prompt-dismissed"; 424 const prompt = document.getElementById("langPrompt"); 425 426 // Check if user has dismissed the prompt before 427 if (localStorage.getItem(STORAGE_KEY) === "true") { 428 return; 429 } 430 431 // Check browser language 432 const browserLang = navigator.language || navigator.userLanguage || ""; 433 const isChineseBrowser = 434 browserLang.toLowerCase().startsWith("zh") || 435 browserLang.toLowerCase().includes("chinese"); 436 437 // Only show prompt for non-Chinese browsers 438 if (isChineseBrowser) { 439 return; 440 } 441 442 // Show the prompt after a short delay 443 setTimeout(() => { 444 prompt.classList.remove("hidden"); 445 prompt.classList.add("animate-slide-up"); 446 }, 500); 447 448 // Handle "Yes" button 449 document.getElementById("langPromptYes").addEventListener("click", () => { 450 const currentPath = window.location.pathname; 451 const englishPath = currentPath === "/" ? "/en" : `/en${currentPath}`; 452 window.location.href = englishPath; 453 }); 454 455 // Handle "No" button 456 document.getElementById("langPromptNo").addEventListener("click", () => { 457 prompt.classList.add("hidden"); 458 }); 459 460 // Handle "Don't ask again" button 461 document.getElementById("langPromptDismiss").addEventListener("click", () => { 462 localStorage.setItem(STORAGE_KEY, "true"); 463 prompt.classList.add("hidden"); 464 }); 465 466 // Handle close button 467 document.getElementById("langPromptClose").addEventListener("click", () => { 468 prompt.classList.add("hidden"); 469 }); 470 })(); 471</script>
471
471<script type="module">window.darkMode=!1;const d=["fixed","h-14"],s=["absolute","h-20"],o=["border-neutral-300/50","bg-white/80","dark:border-neutral-600/40","dark:bg-neutral-900/60","backdrop-blur-2xl"],l=["border-transparent"];let n=null;document.addEventListener("DOMContentLoaded",()=>{n=document.getElementById("header"),localStorage.getItem("dark_mode")&&localStorage.getItem("dark_mode")==="true"?(window.darkMode=!0,a()):i(),stickyHeaderFuncionality(),applyMenuItemClasses(),evaluateHeaderPosition(),m()});window.stickyHeaderFuncionality=()=>{window.addEventListener("scroll",()=>{evaluateHeaderPosition()})};window.evaluateHeaderPosition=()=>{window.scrollY>16?(n.firstElementChild.classList.add(...o),n.firstElementChild.classList.remove(...l),n.classList.add(...d),n.classList.remove(...s),document.getElementById("menu").classList.add("top-[56px]"),document.getElementById("menu").classList.remove("top-[75px]")):(n.firstElementChild.classList.remove(...o),n.firstElementChild.classList.add(...l),n.classList.add(...s),n.classList.remove(...d),document.getElementById("menu").classList.remove("top-[56px]"),document.getElementById("menu").classList.add("top-[75px]"))};document.getElementById("darkToggle").addEventListener("click",()=>{document.documentElement.classList.add("duration-300"),document.documentElement.classList.contains("dark")?(localStorage.removeItem("dark_mode"),i(!0)):(localStorage.setItem("dark_mode",!0),a(!0))});function i(t){document.getElementById("sun").classList.remove("setting"),document.getElementById("moon").classList.remove("rising");let e=0;t&&(e=500,document.getElementById("moon").classList.add("setting")),setTimeout(()=>{document.getElementById("dayText").classList.remove("hidden"),document.getElementById("nightText").classList.add("hidden"),document.getElementById("moon").classList.add("hidden"),document.getElementById("sun").classList.remove("hidden"),t&&(document.documentElement.classList.remove("dark"),document.getElementById("sun").classList.add("rising"))},e)}function a(t){document.getElementById("moon").classList.remove("setting"),document.getElementById("sun").classList.remove("rising");let e=0;t&&(e=500,document.getElementById("sun").classList.add("setting")),setTimeout(()=>{document.getElementById("nightText").classList.remove("hidden"),document.getElementById("dayText").classList.add("hidden"),document.getElementById("sun").classList.add("hidden"),document.getElementById("moon").classList.remove("hidden"),t&&(document.documentElement.classList.add("dark"),document.getElementById("moon").classList.add("rising"))},e)}window.applyMenuItemClasses=()=>{const t=document.querySelectorAll("#menu a");for(let e=0;e<t.length;e++)(t[e].pathname===window.location.pathname||t[e].pathname+"/"===window.location.pathname)&&t[e].classList.add("text-neutral-900","dark:text-white")};function m(){document.getElementById("openMenu").addEventListener("click",()=>{openMobileMenu()}),document.getElementById("closeMenu").addEventListener("click",()=>{closeMobileMenu()})}window.openMobileMenu=()=>{document.getElementById("openMenu").classList.add("hidden"),document.getElementById("closeMenu").classList.remove("hidden"),document.getElementById("menu").classList.remove("hidden"),document.getElementById("mobileMenuBackground").classList.add("opacity-0"),document.getElementById("mobileMenuBackground").classList.remove("hidden"),setTimeout(()=>{document.getElementById("mobileMenuBackground").classList.remove("opacity-0")},1)};window.closeMobileMenu=()=>{document.getElementById("closeMenu").classList.add("hidden"),document.getElementById("openMenu").classList.remove("hidden"),document.getElementById("menu").classList.add("hidden"),document.getElementById("mobileMenuBackground").classList.add("hidden")};</script>
471
471<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":"80eda129e93f431b873b3cd72548e8a0","r":1,"spa":2}' crossorigin="anonymous"></script>
471 472</body></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.