1<!DOCTYPE html> 2<html> 3 <!-- meta/link... --> 4 5 6 7 8<head> 9 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 10 <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"> 11 <!-- Global site tag (gtag.js) - Google Analytics --> 12 13 14 <meta name="referrer" content="no-referrer" /> 15 <title>彿¡£ | åædeèçª</title> 16 17 <link rel="icon" type="image/x-icon, image/vnd.microsoft.icon" href="/favicon.ico"> 18 <link rel="stylesheet" href="https://at.alicdn.com/t/font_1911880_c1nvbyezg17.css"> 19 <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> 20 <link href="/js/swiper/[email protected]" rel="stylesheet"> 21 22 23
23<script> 24 var themeModelId = '0'; 25 if (themeModelId) { 26 localStorage.setItem('modelId', themeModelId); 27 } 28 </script>
28 29 30
30<script defer src="/cdn/live2d-widget/autoload.js"></script>
30 31
31<script> 32 var live2dOpen = eval('true') || false; 33 if (!live2dOpen) { 34 localStorage.setItem('waifu-display', 1609323474481); 35 } 36 </script>
36 37 38 39 40<link rel="stylesheet" href="/css/animate.min.css"> 41 42 43<link rel="stylesheet" href="/css/style.css"> 44 45 46 47 <link href="https://fastly.jsdelivr.net/npm/@fancyapps/[email protected]/dist/fancybox/fancybox.css" rel="stylesheet"> 48 49 50 51<link rel="stylesheet" href="/js/shareJs/share.min.css"> 52 53 54 <style> 55 @media (max-width: 992px) { 56 #waifu { 57 display: none; 58 } 59 } 60 </style> 61
61<script defer src="https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/pace.min.js"></script>
61 62 <link href="https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/themes/black/pace-theme-flash.min.css" rel="stylesheet"> 63 64 65
65<script src="/js/valine/index.js"></script>
65 66 67 68 <!-- ä¾èµäºjqueryåvue --> 69 70
70<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
70 71 72 73 74
74<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.9/vue.min.js"></script>
74 75 76 77 <!-- import link --> 78 79 80 81 82 83 84 85 <!-- import script --> 86 87 88 89 90 91 92 93 94<meta name="generator" content="Hexo 7.3.0"><link rel="alternate" href="/atom.xml" title="åædeèçª" type="application/atom+xml"> 95</head> 96 97 98 <!-- é¢å è½½å¨ç» --> 99 <!-- 页é¢é¢å è½½å¨ç» --> 100 101 102 <div id='loader'> 103 <link rel="stylesheet" href="/js/loaded/index.css" > 104 <div class="loading-left-bg"></div> 105 <div class="loading-right-bg"></div> 106 <div class="spinner-box"> 107 <div class="configure-border-1"> 108 <div class="configure-core"></div> 109 </div> 110 <div class="configure-border-2"> 111 <div class="configure-core"></div> 112 </div> 113 <div class="loading-word">å è½½ä¸...</div> 114 </div> 115</div> 116
117<script> 118 var endLoading = function () { 119 document.body.style.overflow = 'auto'; 120 document.getElementById('loader').classList.add("loading"); 121 } 122 window.addEventListener('DOMContentLoaded',endLoading); 123</script>
123 124 125 <body> 126 <!-- 夿æ¯å¦ä¸ºæé»é£æ ¼ --> 127 <!-- 夿æ¯å¦ä¸ºé»å¤æ¨¡å¼ -->
128<script> 129 let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false'); 130 131 if (isDark) { 132 $(document.body).addClass('darkModel'); 133 } 134</script>
134 135 136 <!-- éè¦å¨ä¸é¢å è½½çjs --> 137
137<script> 138 function loadScript(src, cb) { 139 return new Promise(resolve => { 140 setTimeout(function () { 141 var HEAD = document.getElementsByTagName("head")[0] || document.documentElement; 142 var script = document.createElement("script"); 143 script.setAttribute("type", "text/javascript"); 144 if (cb) { 145 if (JSON.stringify(cb)) { 146 for (let p in cb) { 147 if (p == "onload") { 148 script[p] = () => { 149 cb[p]() 150 resolve() 151 } 152 } else { 153 script[p] = cb[p] 154 script.onload = resolve 155 } 156 } 157 } else { 158 script.onload = () => { 159 cb() 160 resolve() 161 }; 162 } 163 } else { 164 script.onload = resolve 165 } 166 script.setAttribute("src", src); 167 HEAD.appendChild(script); 168 }); 169 }); 170 } 171 172 //https://github.com/filamentgroup/loadCSS 173 var loadCSS = function (src) { 174 return new Promise(resolve => { 175 setTimeout(function () { 176 var link = document.createElement('link'); 177 link.rel = "stylesheet"; 178 link.href = src; 179 link.onload = resolve; 180 document.getElementsByTagName("head")[0].appendChild(link); 181 }); 182 }); 183 }; 184 185</script>
185 186 187<!-- è½®æå¾æéè¦çjs -->
188<script src="/js/swiper/swiper.min.js"></script>
vendor: 1 bytes, line 188
188
189<script src="/js/swiper/vue-awesome-swiper.js"></script>
vendor: 1 bytes, line 189
189
190<script src="/js/swiper/swiper.animate1.0.3.min.js"></script>
190 191
192<script type="text/javascript"> 193 Vue.use(window.VueAwesomeSwiper) 194</script>
194 195 196 197
197<script src="/js/vue-typed-js/index.js"></script>
197 198 199 200<!-- é¦é¡µçå ¬åæ»å¨æä»¶çjséè¦éæ°å è½½ -->
201<script src="/js/vue-seamless-scroll/index.js"></script>
201 202 203<!-- æåæºææjs -->
204<script src="https://cdn.bootcdn.net/ajax/libs/typed.js/2.0.12/typed.min.js"></script>
204 205 206 207 <div id="safearea"> 208 <main class="main" id="pjax-container"> 209 <!-- 头é¨å¯¼èª --> 210 211<header class="header " 212 id="navHeader" 213 style="position: fixed; 214 left: 0; top: 0; z-index: 10;width: 100%;" 215> 216 <div class="header-content"> 217 <div class="bars"> 218 <div id="appDrawer" class="sidebar-image"> 219 <div class="drawer-box-icon"> 220 <i class="fas fa-bars" aria-hidden="true" @click="showDialogDrawer"></i> 221 </div> 222 223 <transition name="fade"> 224 <div class="drawer-box_mask" v-cloak style="display: none;" v-show="visible" @click.self="cancelDialogDrawer"> 225 </div> 226 </transition> 227 <div class="drawer-box" :class="{'active': visible}"> 228 <div class="drawer-box-head bg-color"> 229 <img class="drawer-box-head_logo lazyload placeholder" src="https://img2.covear.top/2023-05-21-favicon.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-favicon.svg" srcset="/img/loading.min.svg" alt="logo"> 230 <h3 class="drawer-box-head_title">åædeèçª</h3> 231 <h5 class="drawer-box-head_desc">David H. Deng's Blog</h5> 232 </div> 233 234 <div class="drawer-box-content"> 235 <ul class="drawer-box-content_menu"> 236 237 238 <li class="drawer-box-content_item" style="position: relative;"> 239 240 <a href="/" class="drawer-menu-item-link"> 241 242 <i class="fas fa-home" aria-hidden="true"></i> 243 244 <span class="name">é¦é¡µ</span> 245 </a> 246 247 </li> 248 249 <li class="drawer-box-content_item" style="position: relative;"> 250 251 <a href="/archives" class="drawer-menu-item-link"> 252 253 <i class="fas fa-archive" aria-hidden="true"></i> 254 255 <span class="name">彿¡£</span> 256 </a> 257 258 </li> 259 260 <li class="drawer-box-content_item" style="position: relative;"> 261 262 <a href="/tags" class="drawer-menu-item-link"> 263 264 <i class="fas fa-tags" aria-hidden="true"></i> 265 266 <span class="name">æ ç¾</span> 267 </a> 268 269 </li> 270 271 <li class="drawer-box-content_item" style="position: relative;"> 272 273 <a href="/categories" class="drawer-menu-item-link"> 274 275 <i class="fas fa-bookmark" aria-hidden="true"></i> 276 277 <span class="name">åç±»</span> 278 </a> 279 280 </li> 281 282 <li class="drawer-box-content_item" style="position: relative;"> 283 284 <a href="/about" class="drawer-menu-item-link"> 285 286 <i class="fas fa-user" aria-hidden="true"></i> 287 288 <span class="name">å ³äº</span> 289 </a> 290 291 </li> 292 293 <li class="drawer-box-content_item" style="position: relative;"> 294 295 <a href="/friends" class="drawer-menu-item-link"> 296 297 <i class="fas fa-up-right-from-square" aria-hidden="true"></i> 298 299 <span class="name">åæ é¾æ¥</span> 300 </a> 301 302 </li> 303 304 305 306 </ul> 307 </div> 308 </div> 309</div> 310
311<script> 312 var body = document.body || document.documentElement || window; 313 var vm = new Vue({ 314 el: '#appDrawer', 315 data: { 316 visible: false, 317 top: 0, 318 openArr: [], 319 }, 320 computed: { 321 }, 322 mounted() { 323 }, 324 methods: { 325 isOpen(index) { 326 if (this.openArr.includes(index)) { 327 return true; 328 } else { 329 return false; 330 } 331 }, 332 openOrCloseMenu(curIndex) { 333 const index = this.openArr.indexOf(curIndex); 334 if (index !== -1) { 335 this.openArr.splice(index, 1); 336 } else { 337 this.openArr.push(curIndex); 338 } 339 }, 340 showDialogDrawer() { 341 this.visible = true; 342 // 鲿¢é¡µé¢æ»å¨ï¼åªè½è®©å¼¹æ¡æ»å¨ 343 this.top = $(document).scrollTop() 344 body.style.cssText = 'width: 100%; height: 100%;overflow: hidden;'; 345 }, 346 cancelDialogDrawer() { 347 this.visible = false; 348 body.removeAttribute('style'); 349 $(document).scrollTop(this.top) 350 } 351 }, 352 created() {} 353 }) 354</script>
354 355 356 </div> 357 <div class="blog-title" id="author-avatar"> 358 359 <div class="avatar"> 360 <img src="https://img2.covear.top/2023-05-21-favicon.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-favicon.svg" srcset="/img/loading.min.svg" alt="logo"> 361 </div> 362 363 <a href="/" class="logo">åædeèçª</a> 364 </div> 365 <nav class="navbar"> 366 <ul class="menu"> 367 368 369 <li class="menu-item" style="position: relative;"> 370 371 <a href="/" class="menu-item-link" title="é¦é¡µ"> 372 373 <i class="fas fa-home" aria-hidden="true"></i> 374 375 <span class="name">é¦é¡µ</span> 376 </a> 377 378 </li> 379 380 <li class="menu-item" style="position: relative;"> 381 382 <a href="/archives" class="menu-item-link" title="彿¡£"> 383 384 <i class="fas fa-archive" aria-hidden="true"></i> 385 386 <span class="name">彿¡£</span> 387 </a> 388 389 </li> 390 391 <li class="menu-item" style="position: relative;"> 392 393 <a href="/tags" class="menu-item-link" title="æ ç¾"> 394 395 <i class="fas fa-tags" aria-hidden="true"></i> 396 397 <span class="name">æ ç¾</span> 398 </a> 399 400 </li> 401 402 <li class="menu-item" style="position: relative;"> 403 404 <a href="/categories" class="menu-item-link" title="åç±»"> 405 406 <i class="fas fa-bookmark" aria-hidden="true"></i> 407 408 <span class="name">åç±»</span> 409 </a> 410 411 </li> 412 413 <li class="menu-item" style="position: relative;"> 414 415 <a href="/about" class="menu-item-link" title="å ³äº"> 416 417 <i class="fas fa-user" aria-hidden="true"></i> 418 419 <span class="name">å ³äº</span> 420 </a> 421 422 </li> 423 424 <li class="menu-item" style="position: relative;"> 425 426 <a href="/friends" class="menu-item-link" title="åæ é¾æ¥"> 427 428 <i class="fas fa-up-right-from-square" aria-hidden="true"></i> 429 430 <span class="name">åæ é¾æ¥</span> 431 </a> 432 433 </li> 434 435 436 </ul> 437 438 439 <div id="appSearch"> 440 <div class="search" @click="showDialog()"><i class="fas fa-search" aria-hidden="true"></i></div> 441 <transition name="fade"> 442 <div class="message-box_wrapper" style="display: none;" v-cloak v-show="dialogVisible" @click.self="cancelDialogVisible()"> 443 <div class="message-box animated bounceInDown"> 444 <h2> 445 <span> 446 <i class="fas fa-search" aria-hidden="true"></i> 447 <span class="title">æ¬å°æç´¢</span> 448 </span> 449 <i class="fas fa-times close" pointer style="float:right;" aria-hidden="true" @click.self="cancelDialogVisible()"></i> 450 </h2> 451 <form class="site-search-form"> 452 <input type="text" 453 placeholder="请è¾å ¥å ³é®å" 454 id="local-search-input" 455 @click="getSearchFile()" 456 class="st-search-input" 457 v-model="searchInput" 458 /> 459 </form> 460 <div class="result-wrapper"> 461 <div id="local-search-result" class="local-search-result-cls"></div> 462 </div> 463 </div> 464 </div> 465 </transition> 466</div>
467<script src="/js/local_search.js"></script>
vendor: 1 bytes, line 467
467
468<script> 469 var body = document.body || document.documentElement || window; 470 var vm = new Vue({ 471 el: '#appSearch', 472 data: { 473 dialogVisible: false, 474 searchInput: '', 475 top: 0, 476 }, 477 computed: { 478 }, 479 mounted() { 480 window.addEventListener('pjax:complete', () => { 481 this.cancelDialogVisible(); 482 }) 483 }, 484 methods: { 485 showDialog() { 486 this.dialogVisible = true; 487 // 鲿¢é¡µé¢æ»å¨ï¼åªè½è®©å¼¹æ¡æ»å¨ 488 this.top = $(document).scrollTop() 489 body.style.cssText = 'overflow: hidden;'; 490 }, 491 getSearchFile() { 492 if (!this.searchInput) { 493 getSearchFile("/search.xml"); 494 } 495 }, 496 cancelDialogVisible() { 497 this.dialogVisible = false; 498 body.removeAttribute('style'); 499 $(document).scrollTop(this.top) 500 }, 501 }, 502 created() {} 503 }) 504</script>
504 505<!-- è§£å³å·æ°é¡µé¢éªçé®é¢ï¼å¯ä»¥å¨å ç´ ä¸æ·»å display: none, æè ç¨vue.extendæ¹æ³ï¼è¯¦æ ï¼https://blog.csdn.net/qq_31393401/article/details/81017912 --> 506<!-- ä¸é¢æ¯æç´¢åºæ¬åæ³ --> 507<!--
507<script type="text/javascript" id="local.search.active"> 508 var inputArea = document.querySelector("#local-search-input"); 509 inputArea.onclick = function(){ getSearchFile(); this.onclick = null } 510 inputArea.onkeydown = function(){ if(event.keyCode == 13) return false } 511</script>
511 --> 512 513 514 515 </nav> 516 </div> 517 518 519</header> 520 <!-- å 容åºå --> 521 <div class="bg-dark-floor" style="position: fixed;left: 0;top: 0;width: 100%;height: 100%;z-index: -2;"></div> 522<div class="bg-light-floor-archive" style="position: fixed;left: 0;top: 0;width: 100%;height: 100%;z-index: -3;"></div> 523<div class="archive-header" style="background-image:url('https://pic1.zhimg.com/80/v2-1414b3a4b205e19060db18a20d08723a_1440w.jpg?source=1940ef5c')"> 524 <div class="archive-header-title"> 525 Archive 526 </div> 527 <div class="archive-header-desc"> 528 529 <span class="title" id="archive-header-desc"></span> 530
530<script> 531 function typedFn() { 532 const el = '#archive-header-desc'; 533 const type = 'archive'; 534 let desc = 'æ¿ä½ å¦é£ï¼è¢«äººæ¸©æä»¥å¾ ' 535 var typed = new Typed(el, { 536 strings: [desc], 537 startDelay: 100, 538 typeSpeed: 100, 539 loop: true, 540 backSpeed: 50, 541 showCursor: true 542 }); 543 } 544 typedFn(); 545</script>
545 546 547 </div> 548 <div class="mask-box"></div> 549</div> 550 551<div class="archive-video"> 552 <video class="full-video" autoplay loop muted> 553 <source style="width: 100%;height: 100vh;" src="/"> 554 </video> 555 <div class="video-header-title"> 556 Archive 557 </div> 558 <div class="video-header-desc"> 559 560 <span class="title" id="archive-video-header-desc"></span> 561
561<script> 562 function typedFn() { 563 const el = '#archive-video-header-desc'; 564 const type = 'archive'; 565 let desc = 'æ¿ä½ å¦é£ï¼è¢«äººæ¸©æä»¥å¾ ' 566 var typed = new Typed(el, { 567 strings: [desc], 568 startDelay: 100, 569 typeSpeed: 100, 570 loop: true, 571 backSpeed: 50, 572 showCursor: true 573 }); 574 } 575 typedFn(); 576</script>
576 577 578 </div> 579 <div class="mask-box"></div> 580</div> 581 582<!-- hashç®æ³ --> 583 584 585<div class="archive-main"> 586 <section class="archive"> 587 <div class="archive-content"> 588 <ul class="post-archive"> 589 590 591 592 593 <div class="year" data-aos="zoom-in-up"> 594 <div class="bullet"></div> 595 <a href="/archives/2025">2025</a> 596 </div> 597 598 <li class="post-item" data-aos="fade-left"> 599 600 <div class="post-img-box"> 601 <a href="/posts/60050" class="post-img " style="background-size: cover; 602 background-position: center center;"> 603 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2025-03-02-IMG_20250302_114858.jpg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2025-03-02-IMG_20250302_114858.jpg" srcset="/img/loading.min.svg" alt=""> 604 </a> 605 </div> 606 <div class="post-date-title"> 607 <div> 608 <span class="post-date">01-21</span> 609 </div> 610 <a class="post-title" href="/posts/60050">Macé ç½®éï¼çå®ï¼</a> 611 </div> 612 </li> 613 614 615 616 <div class="year" data-aos="zoom-in-up"> 617 <div class="bullet"></div> 618 <a href="/archives/2024">2024</a> 619 </div> 620 621 <li class="post-item" data-aos="fade-left"> 622 623 <div class="post-img-box"> 624 <a href="/posts/39668" class="post-img " style="background-size: cover; 625 background-position: center center;"> 626 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-13-1728763917565.jpg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-13-1728763917565.jpg" srcset="/img/loading.min.svg" alt=""> 627 </a> 628 </div> 629 <div class="post-date-title"> 630 <div> 631 <span class="post-date">10-13</span> 632 </div> 633 <a class="post-title" href="/posts/39668">Ubuntu for WSL2 å¯ç¨å¾å½¢æ¡é¢</a> 634 </div> 635 </li> 636 637 638 <li class="post-item" data-aos="fade-left"> 639 640 <div class="post-img-box"> 641 <a href="/posts/36147" class="post-img " style="background-size: cover; 642 background-position: center center;"> 643 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-09-20241009231337.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-09-20241009231337.png" srcset="/img/loading.min.svg" alt=""> 644 </a> 645 </div> 646 <div class="post-date-title"> 647 <div> 648 <span class="post-date">10-09</span> 649 </div> 650 <a class="post-title" href="/posts/36147">WSL2æ æ³è¿è¡GUI软件cannot open display: :0</a> 651 </div> 652 </li> 653 654 655 <li class="post-item" data-aos="fade-left"> 656 657 <div class="post-img-box"> 658 <a href="/posts/25438" class="post-img " style="background-size: cover; 659 background-position: center center;"> 660 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/%E6%88%AA%E5%B1%8F2024-02-06%2023.25.28.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/%E6%88%AA%E5%B1%8F2024-02-06%2023.25.28.png" srcset="/img/loading.min.svg" alt=""> 661 </a> 662 </div> 663 <div class="post-date-title"> 664 <div> 665 <span class="post-date">02-06</span> 666 </div> 667 <a class="post-title" href="/posts/25438">å¨Fedoraä¸å®è£ NVIDIA驱å¨è¯¦ç»æç¨åè§£æ</a> 668 </div> 669 </li> 670 671 672 673 <div class="year" data-aos="zoom-in-up"> 674 <div class="bullet"></div> 675 <a href="/archives/2023">2023</a> 676 </div> 677 678 <li class="post-item" data-aos="fade-left"> 679 680 <div class="post-img-box"> 681 <a href="/posts/41981" class="post-img " style="background-size: cover; 682 background-position: center center;"> 683 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2
683023-05-29-20230529205207.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-29-20230529205207.png" srcset="/img/loading.min.svg" alt=""> 684 </a> 685 </div> 686 <div class="post-date-title"> 687 <div> 688 <span class="post-date">03-21</span> 689 </div> 690 <a class="post-title" href="/posts/41981">æ¢å¤âæ¤çµèâä¸ç个人æä»¶å¤¹æ¾ç¤º</a> 691 </div> 692 </li> 693 694 695 <li class="post-item" data-aos="fade-left"> 696 697 <div class="post-img-box"> 698 <a href="/posts/10117" class="post-img " style="background-size: cover; 699 background-position: center center;"> 700 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2023-05-29-20230529205922.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-29-20230529205922.png" srcset="/img/loading.min.svg" alt=""> 701 </a> 702 </div> 703 <div class="post-date-title"> 704 <div> 705 <span class="post-date">01-31</span> 706 </div> 707 <a class="post-title" href="/posts/10117">Windows æä½³ææ¡£ Fedora Remix for WSL2</a> 708 </div> 709 </li> 710 711 712 713 <div class="year" data-aos="zoom-in-up"> 714 <div class="bullet"></div> 715 <a href="/archives/2022">2022</a> 716 </div> 717 718 <li class="post-item" data-aos="fade-left"> 719 720 <div class="post-img-box"> 721 <a href="/posts/49828" class="post-img " style="background-size: cover; 722 background-position: center center;"> 723 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-06-20241006223603.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-06-20241006223603.png" srcset="/img/loading.min.svg" alt=""> 724 </a> 725 </div> 726 <div class="post-date-title"> 727 <div> 728 <span class="post-date">04-11</span> 729 </div> 730 <a class="post-title" href="/posts/49828">Microsoft 365 E5 ç½å«æç¨ï¼äºï¼</a> 731 </div> 732 </li> 733 734 735 <li class="post-item" data-aos="fade-left"> 736 737 <div class="post-img-box"> 738 <a href="/posts/21214" class="post-img " style="background-size: cover; 739 background-position: center center;"> 740 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-06-QQ_1728223762972.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-06-QQ_1728223762972.png" srcset="/img/loading.min.svg" alt=""> 741 </a> 742 </div> 743 <div class="post-date-title"> 744 <div> 745 <span class="post-date">04-10</span> 746 </div> 747 <a class="post-title" href="/posts/21214">Microsoft 365 E5 ç½å«æç¨ï¼ä¸ï¼</a> 748 </div> 749 </li> 750 751 752 753 <div class="year" data-aos="zoom-in-up"> 754 <div class="bullet"></div> 755 <a href="/archives/2020">2020</a> 756 </div> 757 758 <li class="post-item" data-aos="fade-left"> 759 760 <div class="post-img-box"> 761 <a href="/posts/19242" class="post-img " style="background-size: cover; 762 background-position: center center;"> 763 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2023-05-29-20230529211752.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-29-20230529211752.png" srcset="/img/loading.min.svg" alt=""> 764 </a> 765 </div> 766 <div class="post-date-title"> 767 <div> 768 <span class="post-date">05-27</span> 769 </div> 770 <a class="post-title" href="/posts/19242">PCèææºå¿«éä½éªmacOS Catalina(10.15)</a> 771 </div> 772 </li> 773 774 775 776 <div class="year" data-aos="zoom-in-up"> 777 <div class="bullet"></div> 778 <a href="/archives/2019">2019</a> 779 </div> 780 781 <li class="post-item" data-aos="fade-left"> 782 783 <div class="post-img-box"> 784 <a href="/posts/19687" class="post-img " style="background-size: cover; 785 background-position: center center;"> 786 <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2
786018/02/v2-5dd7e4067bf9542f78b324af4d99138b_hd.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2018/02/v2-5dd7e4067bf9542f78b324af4d99138b_hd.png" srcset="/img/loading.min.svg" alt=""> 787 </a> 788 </div> 789 <div class="post-date-title"> 790 <div> 791 <span class="post-date">09-30</span> 792 </div> 793 <a class="post-title" href="/posts/19687">é«å¤§ä¸ç微信æç« </a> 794 </div> 795 </li> 796 797 </ul> 798 </div> 799 </section> 800 <div class="w-70"> 801 802 <!-- <nav class="page-nav"> 803 <span class="page-number current">1</span><a class="page-number" href="/archives/page/2/">2</a><a class="extend next" rel="next" href="/archives/page/2/">ä¸ä¸é¡µ</a> 804 </nav> --> 805 <div class="page-nav"> 806 807 <div class="page-info"> 808 <div class="page-info-text">1 / 2</div> 809 </div> 810 811 <a href="/archives/page/2/" 812 class="page-nav-next"> 813 <span class="mr-5">ä¸ä¸é¡µ</span><i class="fas fa-angle-right"></i> 814 </a> 815 816 </div> 817 818 </div> 819</div> 820 821 </main> 822 </div> 823 824 <!-- 页è --> 825 826 827 828 <!-- åºé¨é±¼å¿è·³å¨ææï¼ä¾èµäºjquery--> 829<div id="j-fish-skip" style=" position: relative;height: 153px;width: auto;"></div>
830<script> 831 var RENDERER = { 832 POINT_INTERVAL: 5, 833 FISH_COUNT: 3, 834 MAX_INTERVAL_COUNT: 50, 835 INIT_HEIGHT_RATE: .5, 836 THRESHOLD: 50, 837 FISH_COLOR: '', 838 init: function () { 839 this.setFishColor(); this.setParameters(), this.reconstructMethods(), this.setup(), this.bindEvent(), this.render() 840 }, 841 setFishColor: function () { 842 let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false'); 843 if (isDark) { 844 this.FISH_COLOR = '#222'; // æé»è²ï¼ææ¶é´æè¿æ´æä¸ä¸ªåé 845 } else { 846 this.FISH_COLOR = '' || 'rgba(66, 185, 133, 0.8)'; 847 } 848 }, 849 setParameters: function () { 850 this.$window = $(window), this.$container = $("#j-fish-skip"), this.$canvas = $("<canvas />"), this.context = this.$canvas.appendTo(this.$container).get(0).getContext("2d"), this.points = [], this.fishes = [], this.watchIds = [] 851 }, 852 createSurfacePoints: function () { 853 var t = Math.round(this.width / this.POINT_INTERVAL); 854 this.pointInterval = this.width / (t - 1), this.points.push(new SURFACE_POINT(this, 0)); 855 for (var i = 1; i < t; i++) { 856 var e = new SURFACE_POINT(this, i * this.pointInterval), 857 h = this.points[i - 1]; 858 e.setPreviousPoint(h), h.setNextPoint(e), this.points.push(e) 859 } 860 }, 861 reconstructMethods: function () { 862 this.watchWindowSize = this.watchWindowSize.bind(this), this.jdugeToStopResize = this.jdugeToStopResize.bind(this), this.startEpicenter = this.startEpicenter.bind(this), this.moveEpicenter = this.moveEpicenter.bind(this), this.reverseVertical = this.reverseVertical.bind(this), this.render = this.render.bind(this) 863 }, 864 setup: function () { 865 this.points.length = 0, this.fishes.length = 0, this.watchIds.length = 0, this.intervalCount = this.MAX_INTERVAL_COUNT, this.width = this.$container.width(), this.height = this.$container.height(), this.fishCount = this.FISH_COUNT * this.width / 500 * this.height / 500, this.$canvas.attr({ 866 width: this.width, 867 height: this.height 868 }), this.reverse = !1, this.fishes.push(new FISH(this)), this.createSurfacePoints() 869 }, 870 watchWindowSize: function () { 871 this.clearTimer(), this.tmpWidth = this.$window.width(), this.tmpHeight = this.$window.height(), this.watchIds.push(setTimeout(this.jdugeToStopResize, this.WATCH_INTERVAL)) 872 }, 873 clearTimer: function () { 874 for (; this.watchIds.length > 0;) clearTimeout(this.watchIds.pop()) 875 }, 876 jdugeToStopResize: function () { 877 var t = this.$window.width(), 878 i = this.$window.height(), 879 e = t == this.tmpWidth && i == this.tmpHeight; 880 this.tmpWidth = t, this.tmpHeight = i, e && this.setup() 881 }, 882 bindEvent: function () { 883 this.$window.on("resize", this.watchWindowSize), this.$container.on("mouseenter", this.startEpicenter), this.$container.on("mousemove", this.moveEpicenter) 884 }, 885 getAxis: function (t) { 886 var i = this.$container.offset(); 887 return { 888 x: t.clientX - i.left + this.$window.scrollLeft(), 889 y: t.clientY - i.top + this.$window.scrollTop() 890 } 891 }, 892 startEpicenter: function (t) { 893 this.axis = this.getAxis(t) 894 }, 895 moveEpicenter: function (t) { 896 var i = this.getAxis(t); 897 this.axis || (this.axis = i), this.generateEpicenter(i.x, i.y, i.y - this.axis.y), this.axis = i 898 }, 899 generateEpicenter: function (t, i, e) { 900 if (!(i < this.height / 2 - this.THRESHOLD || i > this.height / 2 + this.THRESHOLD)) { 901 var h = Math.round(t / this.pointInterval); 902 h < 0 || h >= this.points.length || this.points[h].interfere(i, e) 903 } 904 }, 905 reverseVertical: function () { 906 this.reverse = !this.reverse; 907 for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].reverseVertical() 908 }, 909 controlStatus: function () { 910 for (var t = 0, i = this.points.length; t < i; t++) this.points[t].updateSelf(); 911 for (t = 0, i = this.points.length; t < i; t++) this.points[t].updateNeighbors(); 912 this.fishes.length < this.fishCount && 0 == --this.intervalCount && (this.intervalCount = this.MAX_INTERVAL_COUNT, this.fishes.push(new FISH(this))) 913 }, 914 render: function () { 915 requestAnimationFrame(this.render), this.controlStatus(), this.context.clearRect(0, 0, this.width, this.height), this.context.fillStyle = this.FISH_COLOR; 916 for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].render(this.context); 917 this.context.save(), this.context.globalCompositeOperation = "xor", this.context.beginPath(), this.context.moveTo(0, this.reverse ? 0 : this.height); 918 for (t = 0, i = this.points.length; t < i; t++) this.points[t].render(this.context); 919 this.context.lineTo(this.width, this.reverse ? 0 : this.height), this.context.closePath(), this.context.fill(), this.context.restore(
vendor: 4,264 bytes, lines 919-973
919) 920 } 921 }, 922 SURFACE_POINT = function (t, i) { 923 this.renderer = t, this.x = i, this.init() 924 }; 925 SURFACE_POINT.prototype = { 926 SPRING_CONSTANT: .03, 927 SPRING_FRICTION: .9, 928 WAVE_SPREAD: .3, 929 ACCELARATION_RATE: .01, 930 init: function () { 931 this.initHeight = this.renderer.height * this.renderer.INIT_HEIGHT_RATE, this.height = this.initHeight, this.fy = 0, this.force = { 932 previous: 0, 933 next: 0 934 } 935 }, 936 setPreviousPoint: function (t) { 937 this.previous = t 938 }, 939 setNextPoint: function (t) { 940 this.next = t 941 }, 942 interfere: function (t, i) { 943 this.fy = this.renderer.height * this.ACCELARATION_RATE * (this.renderer.height - this.height - t >= 0 ? -1 : 1) * Math.abs(i) 944 }, 945 updateSelf: function () { 946 this.fy += this.SPRING_CONSTANT * (this.initHeight - this.height), this.fy *= this.SPRING_FRICTION, this.height += this.fy 947 }, 948 updateNeighbors: function () { 949 this.previous && (this.force.previous = this.WAVE_SPREAD * (this.height - this.previous.height)), this.next && (this.force.next = this.WAVE_SPREAD * (this.height - this.next.height)) 950 }, 951 render: function (t) { 952 this.previous && (this.previous.height += this.force.previous, this.previous.fy += this.force.previous), this.next && (this.next.height += this.force.next, this.next.fy += this.force.next), t.lineTo(this.x, this.renderer.height - this.height) 953 } 954 }; 955 var FISH = function (t) { 956 this.renderer = t, this.init() 957 }; 958 FISH.prototype = { 959 GRAVITY: .4, 960 init: function () { 961 this.direction = Math.random() < .5, this.x = this.direction ? this.renderer.width + this.renderer.THRESHOLD : -this.renderer.THRESHOLD, this.previousY = this.y, this.vx = this.getRandomValue(4, 10) * (this.direction ? -1 : 1), this.renderer.reverse ? (this.y = this.getRandomValue(1 * this.renderer.height / 10, 4 * this.renderer.height / 10), this.vy = this.getRandomValue(2, 5), this.ay = this.getRandomValue(.05, .2)) : (this.y = this.getRandomValue(6 * this.renderer.height / 10, 9 * this.renderer.height / 10), this.vy = this.getRandomValue(-5, -2), this.ay = this.getRandomValue(-.2, -.05)), this.isOut = !1, this.theta = 0, this.phi = 0 962 }, 963 getRandomValue: function (t, i) { 964 return t + (i - t) * Math.random() 965 }, 966 reverseVertical: function () { 967 this.isOut = !this.isOut, this.ay *= -1 968 }, 969 controlStatus: function (t) { 970 this.previousY = this.y, this.x += this.vx, this.y += this.vy, this.vy += this.ay, this.renderer.reverse ? this.y > this.renderer.height * this.renderer.INIT_HEIGHT_RATE ? (this.vy -= this.GRAVITY, this.isOut = !0) : (this.isOut && (this.ay = this.getRandomValue(.05, .2)), this.isOut = !1) : this.y < this.renderer.height * this.renderer.INIT_HEIGHT_RATE ? (this.vy += this.GRAVITY, this.isOut = !0) : (this.isOut && (this.ay = this.getRandomValue(-.2, -.05)), this.isOut = !1), this.isOut || (this.theta += Math.PI / 20, this.theta %= 2 * Math.PI, this.phi += Math.PI / 30, this.phi %= 2 * Math.PI), this.renderer.generateEpicenter(this.x + (this.direction ? -1 : 1) * this.renderer.THRESHOLD, this.y, this.y - this.previousY), (this.vx > 0 && this.x > this.renderer.width + this.renderer.THRESHOLD || this.vx < 0 && this.x < -this.renderer.THRESHOLD) && this.init() 971 }, 972 render: function (t) { 973 t.save(), t.translate(this.x, this.y), t.rotate(Math.PI + Math.atan2(this.vy, this.vx)), t.scale(1, this.direction ? 1 : -1), t.beginPath(), t.moveTo(-30, 0), t.bezierCurveTo(-20, 15, 15, 10, 40, 0), t.bezierCurveTo(15, -10, -20, -15, -30, 0), t.fill(), t.save(), t.translate(40, 0), t.scale(.9 + .2 * Math.sin(this.theta), 1), t.beginPath(), t.moveTo(0, 0), t.quadraticCurveTo(5, 10, 20, 8), t.quadraticCurveTo(12, 5, 10, 0), t.quadraticCurveTo(12, -5, 20, -8), t.quadraticCurveTo(5, -10, 0, 0), t.fill(), t.restore(), t.save(), t.translate(-3, 0), t.rotate((Math.PI / 3 + Math.PI / 10 * Math.sin(this.phi)) * (this.renderer.reverse ? -1 : 1)), t.beginPath(), this.renderer.reverse ? (t.moveTo(5, 0), t.bezierCurveTo(10, 10, 10, 30, 0, 40), t.bezierCurveTo(-12, 25, -8, 10, 0, 0)) : (t.moveTo(-5, 0), t.bezierCurveTo(-10, -10, -10, -30, 0, -40), t.bezierCurveTo(12, -25, 8, -10, 0, 0)), t.closePath(), t.fill(), t.restore(
973), t.restore(), this.controlStatus(t) 974 } 975 }, $(function () { 976 RENDERER.init() 977 $('.dark').click(function () { 978 setTimeout(() => { 979 RENDERER.setFishColor(); 980 RENDERER.context.fill(); 981 }); 982 }) 983 }); 984</script>
984 985 986 <div class="footer bg-color"> 987 <div class="footer-main"> 988 989 990 <div class="link"> 991 992 993 <a href="/atom.xml" class="social"> 994 995 <i class="fas fa-rss" aria-hidden="true"></i> 996 997 </a> 998 999 1000 1001 <a href="mailto:[email protected]" class="social"> 1002 1003 <i class="fas fa-envelope" aria-hidden="true"></i> 1004 1005 </a> 1006 1007 1008 1009 <a target="_blank" rel="noopener" href="https://gitee.com/hnest/hnest" class="social"> 1010 1011 <i class="fab fa-github" aria-hidden="true"></i> 1012 1013 </a> 1014 1015 1016 1017 <a href="tencent://AddContact/?fromId=50&fromSubId=1&subcmd=all&uin=1187523442" class="social"> 1018 1019 <i class="fab fa-qq" aria-hidden="true"></i> 1020 1021 </a> 1022 1023 1024 </div> 1025 1026 1027 1028 <div class="footer-copyright"> 1029 <p>Copyright © 2014 -
1029<script type="text/javascript">document.write((new Date()).getFullYear());</script>
1029 <a href="https://hnest.eu.org" target="_blank">åædeèçª</a></p> 1030 1031 </div> 1032 1033 1034 1035 <div class="footer-custom"> 1036 1037 <div><p><br/><img style="display: inline; width: 1rem; object-fit: contain; vertical-align: top; opacity: 1; margin: 0 5px;" src="/img/icpba.png" class="lazyload placeholder" data-srcset="/img/icpba.png" srcset="/img/loading.min.svg"><a href="https://beian.miit.gov.cn/" target="_blank" title="åædeèçª">æ¹ICPå¤17019987å·</a><br/><img style="display: inline; width: 1rem; object-fit: contain; vertical-align: top; opacity: 1; margin: 0 5px;" src="/img/gaba.png" class="lazyload placeholder" data-srcset="/img/gaba.png" srcset="/img/loading.min.svg" ><a href="https://beian.mps.gov.cn/#/query/webSearch?code=43020002000058" rel="noreferrer" target="_blank">æ¹å ¬ç½å®å¤43020002000058</a></p> 1038</div> 1039 1040 <div><p><br>æ¬ç½ç«ç±</p> 1041</div> 1042 1043 <div> <!--a href="https://gitee.com/" title="Gitee Pages" target="_blank"><img src="https://img2.covear.top/2023-05-21-gitee_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-gitee_logo.svg" srcset="/img/loading.min.svg" style="height: 2rem;"></a> <span style="margin-right: 1rem;"></span> <a href="https://github.com/" title="GitHub Pages" target="_blank"><img src="https://img2.covear.top/2023-05-21-github_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-github_logo.svg" srcset="/img/loading.min.svg" style="height: 2rem;"></a> <span style="margin-right: 1rem;"></span> <a href="https://www.qiniu.com/" title="ä¸çäº" target="_blank"><img src="https://img2.covear.top/2023-05-21-qiniu_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-qiniu_logo.svg" srcset="/img/loading.min.svg" style="height: 2rem;"></a> <span style="margin-right: 1rem;"></span--> <a href="https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral" title="å å ¥åæäºèçï¼" target="_blank"><img src="https://img2.covear.top/2023-05-21-upyun_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-upyun_logo.svg" srcset="/img/loading.min.svg" style="height: 2.0rem;"></a> </div> 1044 1045 <div><p>æä¾CDNå é/äºå¨åæå¡<br><br></p> 1046</div> 1047 1048 <div><p> <a target="_blank" rel="noopener" href="https://gitee.com/hnest/hnest/commits/master" title="Gitee Commits"><img src="https://gitee.badge.hnest.eu.org/svg/commits/hnest/hnest" class="lazyload placeholder" data-srcset="https://gitee.badge.hnest.eu.org/svg/commits/hnest/hnest" srcset="/img/loading.min.svg" alt="Gitee Commits"></a><br> <a target="_blank" rel="noopener" href="https://github.com/DavidDengHui/HNest/commits/master" title="GitHub Commits"><img src="https://github.com/DavidDengHui/HNest/actions/workflows/deploy_pages.yml/badge.svg" class="lazyload placeholder" data-srcset="https://github.com/DavidDengHui/HNest/actions/workflows/deploy_pages.yml/badge.svg" srcset="/img/loading.min.svg" alt="GitHub Pages Status"></a><br> <a target="_blank" rel="noopener" href="https://vercel.com/daviddenghui/hnest/deployments" title="Vercel Status"><img src="https://vercel.badge.hnest.eu.org/api/daviddenghui/hnest" class="lazyload placeholder" data-srcset="https://vercel.badge.hnest.eu.org/api/daviddenghui/hnest" srcset="/img/loading.min.svg" alt="Vercel Status"></a><br> <a target="_blank" rel="noopener" href="https://app.netlify.com/sites/hnest/deploys" title="Netlify Status"><img src="https://api.netlify.com/api/v1/badges/13dc7751-4d7d-424e-8d04-e6e5263b093f/deploy-status" class="lazyload placeholder" data-srcset="https://api.netlify.com/api/v1/badges/13dc7751-4d7d-424e-8d04-e6e5263b093f/deploy-status" srcset="/img/loading.min.svg" alt="Netlify Status"></a><br> </p> 1049</div> 1050 1051 </div> 1052 1053 1054 </div> 1055 </div> 1056 1057 1058 1059 <!-- 渲ææé»æé® --> 1060 1061 <div class="dark"> 1062 <div class="dark-content"> 1063 <i class="fas fa-moon" aria-hidden="true"></i> 1064 <!-- <span>å ³ç¯</span> --> 1065 </div> 1066 1067</div> 1068
1069<script> 1070 $(function() { 1071 let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false'); 1072 if (isDark) { 1073 $(".dark-content").replaceWith( 1074 ` 1075 <div class='dark-content'> 1076 <i class="fas fa-lightbulb" aria-hidden="true"></i> 1077 </div> 1078 ` 1079 ); 1080 } 1081 $('.dark').click(function() { 1082 if ($(document.body).is('.darkModel')) { 1083 $(document.body).removeClass('darkModel'); 1084 localStorage.setItem('dark', false); 1085 $(".dark-content").replaceWith( 1086 ` 1087 <div class='dark-content'> 1088 <i class="fas fa-moon" aria-hidden="true"></i> 1089 </div> 1090 ` 1091 ); 1092 } else { 1093 $(document.body).addClass('darkModel'); 1094 localStorage.setItem('dark', true); 1095 $(".dark-content").replaceWith( 1096 ` 1097 <div class='dark-content'> 1098 <i class="fas fa-lightbulb" aria-hidden="true"></i> 1099 </div> 1100 ` 1101 ); 1102 } 1103 }) 1104 }) 1105</script>
1105 1106 1107 <!-- 渲æåå°é¡¶é¨æé® --> 1108 1109 <div class="goTop top-btn-color" pointer> 1110 <i class="fas fa-arrow-up" aria-hidden="true"></i> 1111</div>
1112<script src="/js/goTop.js"></script>
1112 1113 1114 1115 <!-- 渲æå·¦ä¸è§é³ä¹ææ¾å¨ --> 1116 1117 1118 <!-- å¾çæ¾å¤§ --> 1119 1120
1120<script src="https://fastly.jsdelivr.net/npm/@fancyapps/[email protected]/dist/fancybox/fancybox.umd.js"></script>
1120 1121 1122 1123 <!-- ç¾åº¦è§£æ --> 1124 <!-- Baidu Analytics --> 1125 1126 <!-- Baidu Push --> 1127
1128<script> 1129 (function () { 1130 var bp = document.createElement('script'); 1131 var curProtocol = window.location.protocol.split(':')[0]; 1132 if (curProtocol === 'https') { 1133 bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; 1134 } else { 1135 bp.src = 'http://push.zhanzhang.baidu.com/push.js'; 1136 } 1137 var s = document.getElementsByTagName("script")[0]; 1138 s.parentNode.insertBefore(bp, s); 1139 })(); 1140</script>
1140 1141 1142 1143 <!-- èæ¯å½©å¸¦ --> 1144 1145
1145<script type="text/javascript" size="100" alpha='0.4' zIndex="-1" src="/js/ribbon.min.js"></script>
1145 1146 1147 1148
1148<script src="/js/utils/index.js"></script>
1148 1149
1149<script src="/js/app.js"></script>
1149 1150 1151 <!-- æç« ç®å½æéjs --> 1152<!-- <link href="/js/tocbot/tocbot.css" rel="stylesheet">
1153<script src="/js/tocbot/tocbot.min.js"></script>
1153 --> 1154
1155<script src="https://cdn.bootcdn.net/ajax/libs/tocbot/4.21.0/tocbot.min.js"></script>
1155 1156 1157 1158<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/tocbot/4.21.0/tocbot.css"> 1159
1160<script> 1161 var headerEl = 'h2, h3, h4', //headers 1162 content = '.post-detail',//æç« å®¹å¨ 1163 idArr = {}; //æ 颿°ç»ä»¥ç¡®å®æ¯å¦å¢å ç´¢å¼id 1164 //add #id 1165 var option = { 1166 // Where to render the table of contents. 1167 tocSelector: '.toc', 1168 // Where to grab the headings to build the table of contents. 1169 contentSelector: content, 1170 // Which headings to grab inside of the contentSelector element. 1171 headingSelector: headerEl, 1172 scrollSmooth: true, 1173 scrollSmoothOffset: -70, 1174 // headingsOffset: -($(window).height() * 0.4 - 45), 1175 headingsOffset: -($(window).height() * 0.4 - 70), 1176 // positionFixedSelector: '.toc-main', 1177 // positionFixedClass: 'is-position-fixed', 1178 fixedSidebarOffset: 'auto', 1179 activeLinkClass: 'is-active-link', 1180 orderedList: true, 1181 collapseDepth: 20, 1182 // onClick: function (e) {}, 1183 } 1184 if ($('.toc').length > 0) { 1185 1186 $(content).children(headerEl).each(function () { 1187 //å»é¤ç©ºæ ¼ä»¥åå¤ä½æ ç¹ 1188 var headerId = $(this).text().replace(/[\s|\~|`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\||\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?|\ï¼|\ï¼|\ã]/g, ''); 1189 1190 headerId = headerId.toLowerCase(); 1191 if (idArr[headerId]) { 1192 //idå·²ç»åå¨ 1193 $(this).attr('id', headerId + '-' + idArr[headerId]); 1194 idArr[headerId]++; 1195 } 1196 else { 1197 //idæªåå¨ 1198 idArr[headerId] = 1; 1199 $(this).attr('id', headerId); 1200 } 1201 }); 1202 1203 document.addEventListener("DOMContentLoaded", function () { 1204 tocbot.init(option); 1205 mobileTocClick(); 1206 }); 1207 1208 } 1209 1210 window.tocScrollFn = function () { 1211 return bamboo.throttle(function () { 1212 findHeadPosition(); 1213 }, 100)() 1214 } 1215 window.addEventListener('scroll', tocScrollFn); 1216 1217 const findHeadPosition = function (top) { 1218 if ($('.toc-list').length <= 0) { 1219 return false; 1220 } 1221 setTimeout(() => { // or DOMContentLoaded 1222 autoScrollToc(); 1223 }, 0); 1224 } 1225 1226 const autoScrollToc = function () { 1227 const $activeItem = document.querySelector('.is-active-link'); 1228 const $cardToc = document.querySelector('.toc-content'); 1229 const activePosition = $activeItem.getBoundingClientRect().top 1230 const sidebarScrollTop = $cardToc.scrollTop 1231 if (activePosition > (document.documentElement.clientHeight - 100)) { 1232 $cardToc.scrollTop = sidebarScrollTop + 150 1233 } 1234 if (activePosition < 150) { 1235 $cardToc.scrollTop = sidebarScrollTop - 150 1236 } 1237 } 1238 1239 document.addEventListener('pjax:send', function () { 1240 if ($('.toc').length) { 1241 tocbot.destroy(); 1242 } 1243 }); 1244 1245 document.addEventListener('pjax:complete', function () { 1246 if ($('.toc').length) { 1247 tocbot.init(option); 1248 mobileTocClick(); 1249 } 1250 }); 1251 1252 // ææºç«¯tocæé®ç¹å»åºç°ç®å½ 1253 const mobileTocClick = function () { 1254 const $cardTocLayout = document.getElementsByClassName('side_toc')[0]; 1255 const $cardToc = $cardTocLayout.getElementsByClassName('toc-content')[0]; 1256 let right = '45px'; 1257 if (window.innerWidth >= 551 && window.innerWidth <= 992) { 1258 right = '100px' 1259 } 1260 const mobileToc = { 1261 open: () => { 1262 $cardTocLayout.style.cssText = 'animation: toc-open .3s; opacity: 1; right: ' + right 1263 }, 1264 1265 close: () => { 1266 $cardTocLayout.style.animation = 'toc-close .2s' 1267 setTimeout(() => { 1268 $cardTocLayout.style.cssText = "opacity:''; animation: ''; right: ''" 1269 }, 100) 1270 } 1271 } 1272 document.getElementById('toc-mobile-btn').addEventListener('click', () => { 1273 if (window.getComputedStyle($cardTocLayout).getPropertyValue('opacity') === '0') mobileToc.open() 1274 else mobileToc.close() 1275 }) 1276 1277 $cardToc.addEventListener('click', (e) => { 1278 if (window.innerWidth < 992) { // å°äº992pxçæ¶å 1279 mobileToc.close() 1280 } 1281 }) 1282 } 1283</script>
1283 1284 1285<style> 1286 /* .is-position-fixed { 1287 position: sticky !important; 1288 top: 74px; 1289 } 1290 1291 .toc-main ul { 1292 counter-reset: show-list; 1293 } 1294 1295 .toc-main ul li::before { 1296 content: counter(item)"."; 1297 display: block; 1298 position: absolute; 1299 left: 12px; 1300 top: 0; 1301 } */ 1302</style> 1303 1304 1305<!-- 设置导èªèæ¯ -->
1306<script> 1307 let setHeaderClass = () => { 1308 const nav = $('#navHeader'); 1309 const navTop = nav.outerHeight(); 1310 const winTop = $(window).scrollTop(); 1311 if(winTop > navTop) { 1312 nav.addClass('header-bg-color'); 1313 } 1314 else { 1315 nav.removeClass('header-bg-color'); 1316 } 1317 }; 1318 1319 let scrollCollect = () => { 1320 return bamboo.throttle(function (e) { 1321 setHeaderClass(); 1322 }, 200)() 1323 } 1324 1325 let initHeaderBg = () => { 1326 setHeaderClass(); 1327 } 1328 1329 setHeaderClass(); 1330 window.addEventListener('scroll', scrollCollect); 1331 1332 document.addEventListener('pjax:send', function () { 1333 window.removeEventListener('scroll', scrollCollect) 1334 }) 1335 document.addEventListener('pjax:complete', function () { 1336 window.addEventListener('scroll', scrollCollect); 1337 setHeaderClass(); 1338 }) 1339</script>
1339 1340 1341<!-- 渲æissuesæ ç¾éçå 容 -->
1342<script> 1343 function loadIssuesJS() { 1344 if ($(".post-detail").find(".issues-api").length == 0) { 1345 return; 1346 } 1347 loadScript('/js/issues/index.js'); 1348 }; 1349 $(function () { 1350 loadIssuesJS(); 1351 }); 1352 document.addEventListener('pjax:complete', function () { 1353 if (typeof IssuesAPI == "undefined") { 1354 loadIssuesJS(); 1355 } 1356 }) 1357</script>
1357 1358 1359<!-- 渲æè¿ç¨jsonå è½½çå¾çæ ç¾(getPhotoOnline)éçå 容 -->
1360<script> 1361 function loadPhotoOnlineJS() { 1362 if ($(".post-detail").find(".getJsonPhoto-api").length == 0) { 1363 return; 1364 } 1365 loadScript('/js/getPhotoOnline/index.js'); 1366 }; 1367 $(function () { 1368 loadPhotoOnlineJS(); 1369 }); 1370 document.addEventListener('pjax:complete', function () { 1371 if (typeof getPhotoJson == "undefined") { 1372 loadPhotoOnlineJS(); 1373 } 1374 }) 1375</script>
1375 1376 1377<!-- 渲æè¿ç¨jsonå è½½çtalkæ ç¾(getTalkOnline)éçå 容 -->
1378<script> 1379 function loadTalkOnlineJS() { 1380 if ($(".post-detail").find(".getJsonTalk-api").length == 0) { 1381 return; 1382 } 1383 loadScript('https://cdnjs.cloudflare.com/ajax/libs/waterfall.js/1.0.2/waterfall.min.js'); // ç叿µæä»¶ï¼https://raphamorim.io/waterfall.js/ 1384 loadScript('/js/getTalkOnline/index.js'); 1385 }; 1386 $(function () { 1387 loadTalkOnlineJS(); 1388 }); 1389 document.addEventListener('pjax:complete', function () { 1390 if (typeof getTalkJson == "undefined") { 1391 loadTalkOnlineJS(); 1392 } 1393 }) 1394</script>
1394 1395 1396<!-- 渲æè¿ç¨jsonå è½½çsite-cardæ ç¾(getSiteOnline)éçå 容 -->
1397<script> 1398 function loadSiteOnlineJS() { 1399 if ($(".post-detail").find(".getJsonSite-api").length == 0) { 1400 return; 1401 } 1402 loadScript('/js/getSiteOnline/index.js'); 1403 }; 1404 $(function () { 1405 loadSiteOnlineJS(); 1406 }); 1407 document.addEventListener('pjax:complete', function () { 1408 if (typeof getSiteJson == "undefined") { 1409 loadSiteOnlineJS(); 1410 } 1411 }) 1412</script>
1412 1413 1414<!-- è¾å ¥æ¡æåç¹æ --> 1415<!-- è¾å ¥æ¡æåç¹æ --> 1416 1417
1417<script src="/js/activate-power-mode.js"></script>
1417 1418
1418<script> 1419 POWERMODE.colorful = true; // æå¼éæºé¢è²ç¹æ 1420 POWERMODE.shake = false; // å ³éè¾å ¥æ¡æå¨ 1421 document.body.addEventListener('input', POWERMODE);//ç嬿åäºä»¶ 1422 </script>
1422 1423 1424 1425<!-- markdown代ç ä¸é®å¤å¶åè½ --> 1426 1427 <link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/v-plugs-ayu/lib/ayu.css"> 1428
1428<script src="https://fastly.jsdelivr.net/npm/v-plugs-ayu/lib/ayu.umd.min.js"></script>
1428 1429
1429<script src="/js/clipboard/clipboard.min.js"></script>
1429 1430 <div id="appCopy"> 1431 </div> 1432
1432<script data-pjax> 1433 var vm = new Vue({ 1434 el: '#appCopy', 1435 data: { 1436 }, 1437 computed: { 1438 }, 1439 mounted() { 1440 const that = this; 1441 var copy = 'å¤å¶'; 1442 /* code */ 1443 var initCopyCode = function () { 1444 var copyHtml = ''; 1445 copyHtml += '<button class="btn-copy" data-clipboard-snippet="" style="position:absolute;top:0;right:0;z-index:1;">'; 1446 copyHtml += '<i class="fas fa-copy"></i><span>' + copy + '</span>'; 1447 copyHtml += '</button>'; 1448 $(".post-detail pre").not('.gutter pre').wrap("<div class='codeBox' style='position:relative;width:100%;'></div>") 1449 $(".post-detail pre").not('.gutter pre').before(copyHtml); 1450 new ClipboardJS('.btn-copy', { 1451 target: function (trigger) { 1452 return trigger.nextElementSibling; 1453 } 1454 }); 1455 } 1456 initCopyCode(); 1457 $('.btn-copy').unbind('click').bind('click', function () { 1458 doSomething(); 1459 }) 1460 $(document).unbind('keypress').bind('keypress', function (e) { 1461 if (e.ctrlKey && e.keyCode == 67) { 1462 doSomething(); 1463 } 1464 }) 1465 1466 function doSomething() { 1467 that.$notify({ 1468 title: "æå", 1469 content: "代ç å·²å¤å¶ï¼è¯·éµå®ç¸å ³ææåè®®ã", 1470 type: 'success' 1471 }) 1472 } 1473 }, 1474 methods: { 1475 }, 1476 created() { } 1477 }) 1478 </script>
1478 1479 1480 1481<!-- å¾çæå è½½ -->
1482<script defer src="https://cdn.bootcdn.net/ajax/libs/vanilla-lazyload/17.8.3/lazyload.min.js"></script>
vendor: 1 bytes, line 1482
1482
1483<script> 1484 // https://www.npmjs.com/package/vanilla-lazyload 1485 // Set the options globally 1486 // to make LazyLoad self-initialize 1487 window.lazyLoadOptions = { 1488 elements_selector: ".lazyload", 1489 threshold: 0 1490 }; 1491 // Listen to the initialization event 1492 // and get the instance of LazyLoad 1493 window.addEventListener( 1494 "LazyLoad::Initialized", 1495 function (event) { 1496 window.lazyLoadInstance = event.detail.instance; 1497 }, 1498 false 1499 ); 1500 document.addEventListener('DOMContentLoaded', function () { 1501 lazyLoadInstance.update(); 1502 }); 1503 document.addEventListener('pjax:complete', function () { 1504 lazyLoadInstance.update(); 1505 }); 1506</script>
1506 1507 1508 1509<!-- å¡çæ»å¨å¨ç» --> 1510 1511 1512<!-- è¯è®ºæéjs --> 1513 1514 1515 <!-- 弹广éçcssåjs --> 1516 1517 <!-- 弹广件 --> 1518 <link href="/js/danmu/barrager.css" rel="stylesheet"> 1519
1519<script src="/js/danmu/jquery.barrager.js"></script>
1519 1520 1521<!-- å ·ä½jsï¼è¯·åå¾valine/script.ejsæ¥ç --> 1522 1523
1523<script> 1524 var requiredFields = 'nick,mail'; 1525 requiredFields = requiredFields.split(','); 1526 comment_el = '.comment'; 1527 let looperValine = null; 1528 load_valine = function () { 1529 if ($(comment_el).length) { 1530 var valine = new Valine({ 1531 el: '#vcomment', 1532 path: window.location.pathname, 1533 notify: false, 1534 verify: false, 1535 app_id: "YB5xLlbIQPI9Ww6S61s5myDA-gzGzoHsz", 1536 app_key: "JTZGgcmrFzsuDCr27pXLxZ5h", 1537 placeholder: "客å®ï¼è¯´ç¹ä»ä¹å§~", 1538 avatar: "retro", 1539 master: "0e175053e9faac02e451b300a4655270", //å主é®ç®±md5 1540 tagMeta: ["å主","å°ä¼ä¼´","访客"], //æ è¯å段å 1541 friends: "", 1542 metaPlaceholder: { "nick": "æµç§°/QQå·", "mail": "é®ç®±" }, 1543 requiredFields: requiredFields, 1544 enableQQ: true, 1545 }); 1546 function debounce(fn) { 1547 var timerID = null 1548 return function () { 1549 var arg = arguments[0] //è·åäºä»¶ 1550 if (timerID) { 1551 clearTimeout(timerID) 1552 } 1553 timerID = setTimeout(function () { 1554 fn(arg) //äºä»¶ä¼ å ¥å½æ° 1555 }, 200) 1556 } 1557 } 1558 //æ¥è¯¢è¯è®º valine.Q('*').limit(7) -- æ¥è¯¢ææï¼éå¶7æ¡, ä¸é¢ççä»£ç æ¯æ¥è¯¢å½åé¡µé¢ 1559 var themeDanmu = eval('true'); 1560 var themeLoop = eval('true'); 1561 var themeLooperTime = '5000' || 5000; 1562 var speed = '40' || 20; 1563 var isBarrager = true; 1564 if (themeDanmu == true) { 1565 do_barrager(); 1566 if ($('.danmuBox').length <= 0) { 1567 $('.navbar').append('<div class="danmuBox"><div class="danmuBtn open"><span class="danmuCircle"></span><span class="danmuText">å¼¹å¹</span></div></div>'); 1568 } 1569 $('.danmuBtn').on('click', debounce( 1570 function () { 1571 if ($('.danmuBtn').hasClass('open')) { 1572 $('.danmuBtn').removeClass('open') 1573 clearInterval(looperValine); 1574 $.fn.barrager.removeAll(); 1575 } else { 1576 $('.danmuBtn').addClass("open"); 1577 do_barrager(); 1578 } 1579 } 1580 )) 1581 } 1582 function do_barrager() { 1583 isBarrager && valine.Q(window.location.pathname).find().then(function (comments) { 1584 // var num = 0; // å¯ä»¥è®°å½æ¡æ°ï¼å¾ªç¯è°ç¨çæ¶ååªåææ°çè¯è®ºæ¾å ¥å¼¹å¹ä¸ 1585 var run_once = true; 1586 var looper_time = themeLooperTime; 1587 var total = comments.length; 1588 // var looper = null; 1589 var index = 0; 1590 if (total > 0) { 1591 barrager(); 1592 } else { 1593 // å½è¯è®ºæ°ä¸º0çæ¶åï¼èªå¨å ³éå¼¹å¹ 1594 // $('.danmuBtn').removeClass('open'); 1595 } 1596 function barrager() { 1597 if (run_once) { 1598 //妿æ¯é¦æ¬¡æ§è¡,å设置ä¸ä¸ªå®æ¶å¨,并䏿馿¬¡æ§è¡ç½®ä¸ºfalse 1599 looperValine = setInterval(barrager, looper_time); 1600 run_once = false; 1601 } 1602 var content = comments[index]._serverData.comment; 1603 var email = comments[index]._serverData.mail; 1604 var link = comments[index]._serverData.link; 1605 var newcontent = content.substring(0, 50).replace(/<[^>]+>/g, ""); 1606 //åå¸ä¸ä¸ªå¼¹å¹ 1607 const item = { 1608 img: `https://q1.qlogo.cn/g?b=qq&nk=${email}&s=640`, //å¾ç 1609 info: newcontent, //æå 1610 href: link, //龿¥ 1611 close: true, //æ¾ç¤ºå ³éæé® 1612 speed: speed, //å»¶è¿,åä½ç§,é»è®¤6 1613 color: '#fff', //é¢è²,é»è®¤ç½è² 1614 old_ie_color: '#000000', //ieä½çå ¼å®¹è²,ä¸è½ä¸ç½é¡µèæ¯ç¸å,é»è®¤é»è² 1615 } 1616 $('body').barrager(item); 1617 //ç´¢å¼èªå¢ 1618 index++; 1619 //ææå¼¹å¹åå¸å®æ¯ï¼æ¸ é¤è®¡æ¶å¨ã 1620 if (index == total) { 1621 clearInterval(looperValine); 1622 if (themeLoop === true) { 1623 setTimeout(function () { 1624 do_barrager(); 1625 }, 5000); 1626 } else { 1627 $('.danmuBtn').removeClass('open'); 1628 } 1629 return false;
1630 } 1631 1632 } 1633 }) 1634 } 1635 } 1636 }; 1637 $(document).ready(load_valine); 1638 document.addEventListener('pjax:send', function (e) { 1639 1640 $('.danmuBox').length > 0 && $('.danmuBox').remove() 1641 looperValine && clearInterval(looperValine); 1642 $.fn.barrager.removeAll(); 1643 1644 }) 1645 document.addEventListener('pjax:complete', function () { 1646 load_valine(); 1647 }); 1648</script>
1648 1649 1650 1651 1652 1653<!-- é¼ æ ç¹å»ç¹æ --> 1654<!-- ç±å¿ç¹å» --> 1655 1656 1657
1657<script src="/js/cursor/fireworks.js"></script>
1657 1658 1659 1660 1661 1662 1663
1663<script async src="/cdn/busuanzi/busuanzi.pure.mini.js" data-pjax></script>
1663 1664 1665 1666<!-- è½®æå¾æ ç¾ -->
1667<script> 1668 var bambooSwiperTag = {}; 1669 function load_swiper() { 1670 if (!document.querySelectorAll(".post-swiper-container")[0]) return; 1671 loadCSS("https://cdn.bootcdn.net/ajax/libs/Swiper/9.2.4/swiper-bundle.min.css") 1672 loadScript("https://cdn.bootcdn.net/ajax/libs/Swiper/9.2.4/swiper-bundle.min.js").then(() => { 1673 pjax_swiper(); 1674 }); 1675 } 1676 1677 load_swiper(); 1678 1679 function pjax_swiper() { 1680 bambooSwiperTag.swiper = new Swiper('.post-swiper-container', { 1681 slidesPerView: 'auto', 1682 spaceBetween: 8, 1683 centeredSlides: true, 1684 loop: true, 1685 autoplay: true ? { 1686 delay: 3000, 1687 stopOnLastSlide: false, 1688 disableOnInteraction: false, 1689 } : false, 1690 pagination: { 1691 el: '.swiper-pagination', 1692 clickable: true, 1693 }, 1694 navigation: { 1695 nextEl: '.swiper-button-next', 1696 prevEl: '.swiper-button-prev', 1697 }, 1698 on:{ 1699 init: function(){ 1700 swiperAnimateCache(this); //éèå¨ç»å ç´ 1701 swiperAnimate(this); //åå§å宿å¼å§å¨ç» 1702 }, 1703 slideChangeTransitionEnd: function(){ 1704 swiperAnimate(this); //æ¯ä¸ªslideåæ¢ç»ææ¶ä¹è¿è¡å½åslideå¨ç» 1705 //this.slides.eq(this.activeIndex).find('.ani').removeClass('ani'); å¨ç»åªå±ç°ä¸æ¬¡ï¼å»é¤aniç±»å 1706 } 1707 } 1708 }); 1709 } 1710 1711 document.addEventListener('pjax:complete', function () { 1712 if (!document.querySelectorAll(".post-swiper-container")[0]) return; 1713 if (typeof bambooSwiperTag.swiper === "undefined") { 1714 load_swiper(); 1715 } else { 1716 pjax_swiper(); 1717 } 1718 }); 1719</script>
1719 1720 <!-- pjax --> 1721 1722 1723<!-- pjax --> 1724 1725 1726
1726<script src="/js/[email protected]/index.js"></script>
1726 1727 1728 <!-- æ ·å¼ä½äºï¼source/css/_third-party/pjaxanimate.styl --> 1729 1730<div class="pjax-animate"> 1731 1732 <div class="loading-circle"><div id="loader-circle"></div></div> 1733
1733<script> 1734 window.ShowLoading = function() { 1735 $(".loading-circle").css("display", "block"); 1736 }; 1737 window.HideLoading = function() { 1738 $(".loading-circle").css("display", "none"); 1739 } 1740 </script>
1740 1741 1742
1742<script> 1743 document.addEventListener('pjax:complete', function () { 1744 window.HideLoading(); 1745 }) 1746 document.addEventListener('pjax:send', function () { 1747 window.ShowLoading(); 1748 }) 1749 document.addEventListener('pjax:error', function () { 1750 window.HideLoading(); 1751 }) 1752 </script>
1752 1753</div> 1754 1755 1756 1757
1757<script> 1758 var pjax = new Pjax({ 1759 elements: 'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([no-pjax])', // æ¦æªæ£å¸¸å¸¦é¾æ¥ç a æ ç¾ 1760 selectors: ["#pjax-container","title"], // æ ¹æ®å®é éè¦ç¡®è®¤éè½½åºå 1761 cacheBust: false, // url å°åè¿½å æ¶é´æ³ï¼ç¨ä»¥é¿å æµè§å¨ç¼å 1762 timeout: 5000 1763 }); 1764 1765 document.addEventListener('pjax:send', function (e) { 1766 1767 try { 1768 var currentUrl = window.location.pathname; 1769 var targetUrl = e.triggerElement.href; 1770 var banUrl = [""]; 1771 if (banUrl[0] != "") { 1772 banUrl.forEach(item => { 1773 if(currentUrl.indexOf(item) != -1 || targetUrl.indexOf(item) != -1) { 1774 window.location.href = targetUrl; 1775 } 1776 }); 1777 } 1778 } catch (error) {} 1779 1780 $(window).unbind('resize'); 1781 $(window).unbind('scroll'); 1782 $(document).unbind('scroll'); 1783 $(document).unbind('click'); 1784 $('body').unbind('click'); 1785 1786 }) 1787 1788 document.addEventListener('pjax:complete', function () { 1789 $('script[data-pjax], .pjax-reload script').each(function () { 1790 $(this).parent().append($(this).remove()); 1791 }); 1792 }); 1793 1794 document.addEventListener('pjax:error', function (e) { 1795 window.location.href = e.triggerElement.href; 1796 }) 1797 1798 // å·æ°ä¸ä»é¡¶é¨å¼å§ 1799 document.addEventListener("DOMContentLoaded", function () { 1800 history.scrollRestoration = 'auto'; 1801 }) 1802 </script>
1802 1803 1804 1805 1806 </body> 1807</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.