1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="utf-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <meta name="google-site-verification" content="xBT4GhYoi5qRD5tr338pgPM5OWHHIDR6mNg1a3euekI" /> 8 <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> 9 <meta name="description" content="è¿éæ¯ @OLDK ç个人å客ï¼ä¸ä½ ä¸èµ·åç°æ´å¤§çä¸ç | 䏿å¦ä¹ ç¡é鲿¥"> 10 <meta name="keywords" content=" oldk Blog, å客, 个人ç½ç«, äºèç½, Web, NAS, 软路ç±"> 11 <meta name="theme-color" content="#000000"> 12 13 <!-- Open Graph --> 14 <meta property="og:title" 15 content="èKçå客 | OLDK Blog"> 16 17 <meta property="og:type" content="website"> 18 <meta property="og:description" 19 content="ã离å¼ä¸çä¹å ä¸å齿¯è¿ç¨ã"> 20 21 <meta property="og:image" content="https://111586.xyz/https://github.com/KEVINJ1E.png"> 22 <meta property="og:url" content="https://111586.xyz//"> 23 <meta property="og:site_name" content="èKçå客 | OLDK Blog"> 24 25 <title>èKçå客 | OLDK Blog</title> 26 27 <!-- Web App Manifest --> 28 <link rel="manifest" href="/pwa/manifest.json"> 29 30 <!-- Favicon --> 31 <link rel="shortcut icon" href="/img/favicon.ico"> 32 33 <!-- Canonical URL --> 34 <link rel="canonical" href="https://111586.xyz//"> 35 36 <!-- Bootstrap Core CSS --> 37 <link rel="stylesheet" href=" /css/bootstrap.min.css"> 38 39 <!-- Custom CSS --> 40 <link rel="stylesheet" href=" /css/hux-blog.min.css"> 41 42 <!-- Custom Fonts --> 43 <!-- <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"> --> 44 <!-- Hux change font-awesome CDN to qiniu --> 45 <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" 46 type="text/css"> 47 48 49 <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> 50 <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 51 <!--[if lt IE 9]> 52
52<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
52 53
53<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
53 54 <![endif]--> 55 56 <!-- ga & ba script hoook --> 57
57<script></script>
57 58 59 <!-- Google AdSense --> 60
60<script data-ad-client="ca-pub-6487568398225121" async 61 src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
61 62</head> 63 64 65<!-- hack iOS CSS :active style --> 66<body ontouchstart=""> 67 68 <!-- Navigation --> 69 70 <nav class="navbar navbar-default navbar-custom navbar-fixed-top"> 71 72 <div class="container-fluid"> 73 <!-- Brand and toggle get grouped for better mobile display --> 74 <div class="navbar-header page-scroll"> 75 <button type="button" class="navbar-toggle"> 76 <span class="sr-only">Toggle navigation</span> 77 <span class="icon-bar"></span> 78 <span class="icon-bar"></span> 79 <span class="icon-bar"></span> 80 </button> 81 <a class="navbar-brand" href="/">OLDK Blog</a> 82 </div> 83 84 <!-- Collect the nav links, forms, and other content for toggling --> 85 <div id="huxblog_navbar"> 86 <div class="navbar-collapse"> 87 <ul class="nav navbar-nav navbar-right"> 88 <li> 89 <a href="/">Home</a> 90 </li> 91 92 93 94 95 <li> 96 <a href="/about/">About</a> 97 </li> 98 99 100 101 <li> 102 <a href="/archive/">Archive</a> 103 </li> 104 105 106 107 108 109 110 111 112 113 114 115 116 <li class="search-icon"> 117 <a href="javascript:void(0)"> 118 <i class="fa fa-search"></i> 119 </a> 120 </li> 121 </ul> 122 </div> 123 </div> 124 <!-- /.navbar-collapse --> 125 </div> 126 <!-- /.container --> 127 </nav> 128 129
129<script> 130 // Drop Bootstarp low-performance Navbar 131 // Use customize navbar with high-quality material design animation 132 // in high-perf jank-free CSS3 implementation 133 var $body = document.body; 134 var $toggle = document.querySelector('.navbar-toggle'); 135 var $navbar = document.querySelector('#huxblog_navbar'); 136 var $collapse = document.querySelector('.navbar-collapse'); 137 138 var __HuxNav__ = { 139 close: function () { 140 $navbar.className = " "; 141 // wait until animation end. 142 setTimeout(function () { 143 // prevent frequently toggle 144 if ($navbar.className.indexOf('in') < 0) { 145 $collapse.style.height = "0px" 146 } 147 }, 400) 148 }, 149 open: function () { 150 $collapse.style.height = "auto" 151 $navbar.className += " in"; 152 } 153 } 154 155 // Bind Event 156 $toggle.addEventListener('click', function (e) { 157 if ($navbar.className.indexOf('in') > 0) { 158 __HuxNav__.close() 159 } else { 160 __HuxNav__.open() 161 } 162 }) 163 164 /** 165 * Since Fastclick is used to delegate 'touchstart' globally 166 * to hack 300ms delay in iOS by performing a fake 'click', 167 * Using 'e.stopPropagation' to stop 'touchstart' event from 168 * $toggle/$collapse will break global delegation. 169 * 170 * Instead, we use a 'e.target' filter to prevent handler 171 * added to document close HuxNav. 172 * 173 * Also, we use 'click' instead of 'touchstart' as compromise 174 */ 175 document.addEventListener('click', function (e) { 176 if (e.target == $toggle) return; 177 if (e.target.className == 'icon-bar') return; 178 __HuxNav__.close(); 179 }) 180 </script>
180 181 <!-- Search --> 182<div class="search-page"> 183 <div class="search-icon-close-container"> 184 <span class="search-icon-close"> 185 <i class="fa fa-chevron-down"></i> 186 </span> 187 </div> 188 <div class="search-main container"> 189 <div class="row"> 190 <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 191 <form></form> 192 <input type="text" id="search-input" placeholder="$ grep..."> 193 </form> 194 <div id="search-results" class="mini-post-list"></div> 195 </div> 196 </div> 197 </div> 198</div> 199 200 <!-- Page Header --> 201 202 203 204<style type="text/css"> 205 header.intro-header{ 206 position: relative; 207 background-image: url('/img/home-bg.jpg'); 208 background: ; 209 } 210 211 212</style> 213 214 215 216 217 218 219 220<header class="intro-header" style="background-image: url('/img/home-bg.jpg')"> 221 <div class="header-mask"></div> 222 <div class="container"> 223 <div class="row"> 224 <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 225 226 <div class="site-heading"> 227 228 <h1>OLDK Blog</h1> 229 <span class="subheading">ã离å¼ä¸çä¹å ä¸å齿¯è¿ç¨ã</span> 230 </div> 231 </div> 232 </div> 233 </div> 234</header> 235 236 237 238<!-- Main Content --> 239<div class="container"> 240 <div class="row"> 241 242 243 <!-- USE SIDEBAR --> 244 <!-- PostList Container --> 245 <div class="col-lg-8 col-lg-offset-1 col-md-8 col-md-offset-1 col-sm-12 246 col-xs-12 postlist-container"> 247 248<div class="post-preview"> 249 <a href="/2025/04/12/%E4%B8%AD%E5%85%B4-F7015-%E5%85%89%E7%8C%AB-%E5%BC%80Telnet-%E4%BF%AE%E6%94%B9%E6%95%B0%E6%8D%AE/"> 250 <h2 class="post-title"> 251 ä¸å ´F7015å ç«å¼Telnetä¿®æ¹æ°æ® 252 </h2> 253 254 <h3 class="post-subtitle"> 255 "让èéç¨ä¸çµä¿¡2.5Gç½å£å ç«çªç ´åå ç¶é¢" 256 </h3> 257 258 <div class="post-content-preview"> 259 260 è§é¢æç¨ 261 262 263 264åè¨ 265 266éç 10G-EPON / XGPON å çº¤çº¿è·¯çæ®åï¼åå å®½å¸¦ä»·æ ¼è¶æ¥è¶ä½ï¼æ´å¤çä¼ä¼´åçäºåå 宽带ï¼ä½å¾å¾è¿è¥åæä¾çå ç«æ²¡æ 2.5GE ç½å£ï¼æä¸ºéå¶å¤é¨ç½éè¶ è¿ 1000Mbps æ æ³è·¨è¶çç¶é¢ã 267 268é对è¿ç§æ åµï¼åæ¶é¿å åè¿è¥åè´¹åæ¯ç®ï¼æç´æ¥ææç忳就æ¯èªè¡è´ä¹°ä¸æ¬¾å¸¦æ 2.5GE ç½å£çä¸å å ç«ï¼ç°å¨ä¸å ´ç´æ¥æä¸å 忍¡å ç«ä»·æ ¼æå° 120 å å·¦å³ï¼æ§... 269 270 </div> 271 </a> 272 <p class="post-meta"> 273 Posted by OLDK on April 12, 2025 274 </p> 275</div> 276<hr> 277 278<div class="post-preview"> 279 <a href="/2025/03/15/immortalwrt%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA/"> 280 <h2 class="post-title"> 281 immortalwrtåºä»¶æå»º 282 </h2> 283 284 <h3 class="post-subtitle"> 285 "å¿«éæå»ºå±äºèªå·±çimmortalwrtåºä»¶" 286 </h3> 287 288 <div class="post-content-preview"> 289 290 æ¹æ³ä¸ 291 292宿¹ç½ç«æå»º 293 294å°å龿¥ 295 2961 297https://firmware-selector.immortalwrt.org/?version=24.10.0&target=x86%2F64&id=generic 298 299 300é¢å®è£ ç软件å 301 3021 303autocore automount base-files block-mount ca-bundle default-settings-... 304 305 </div> 306 </a> 307 <p class="post-meta"> 308 Posted by OLDK on March 15, 2025 309 </p> 310</div> 311<hr> 312 313<div class="post-preview"> 314 <a href="/2025/01/01/hello-2015/"> 315 <h2 class="post-title"> 316 Hello 2025 317 </h2> 318 319 <h3 class="post-subtitle"> 320 "Hello World, Hello Blog" 321 </h3> 322 323 <div class="post-content-preview"> 324 325 326 âYeah Itâs on. â 327 328 329OLDK ç Blog å°±è¿ä¹å¼éäºã 330 331è·³è¿åºè¯ï¼ç´æ¥çææ¯å®ç° 332 333 334 335æ£æ 336 337æ¥ä¸æ¥è¯´è¯´æå»ºè¿ä¸ªåå®¢çææ¯ç»èã 338 339æ£å¥½ä¹åå°±æå ³æ³¨è¿ GitHub Pages + Jekyll å¿«é Building Blog çææ¯æ¹æ¡ï¼éå¸¸è½»æ¾æ¶å°ã 340 341å ¶ä¼ç¹éå¸¸ææ¾ï¼ 342 343 344 Markdown 带æ¥çä¼é åä½ä½éª 345 é常çæç Git workfl... 346 347 </div> 348 </a> 349 <p class="post-meta"> 350 Posted by OLDK on January 1, 2025 351 </p> 352</div> 353<hr> 354 355 356<!-- Pager --> 357 358 359 </div> 360 <!-- Sidebar Container --> 361 <div class="col-lg-3 col-lg-offset-0 col-md-3 col-md-offset-0 col-sm-12 362 col-xs-12 sidebar-container"> 363 <!-- Featured Tags --> 364 365 366 367<section> 368 369 <h5><a href="/archive/">FEATURED TAGS</a></h5> 370 <div class="tags"> 371 372 373 374 375 376 377 <a data-sort="0002" 378 href="/archive/?tag=Meta" 379 title="Meta" 380 rel="1">Meta</a> 381 382 <a data-sort="0001" 383 href="/archive/?tag=%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF" 384 title="ç½ç»ææ¯" 385 rel="2">ç½ç»ææ¯</a> 386 387 <a data-sort="0002" 388 href="/archive/?tag=Telnet" 389 title="Telnet" 390 rel="1">Telnet</a> 391 392 <a data-sort="0002" 393 href="/archive/?tag=immortalwrt" 394 title="immortalwrt" 395 rel="1">immortalwrt</a> 396 397 <a data-sort="0002" 398 href="/archive/?tag=modem" 399 title="modem" 400 rel="1">modem</a> 401 402 <a data-sort="0002" 403 href="/archive/?tag=openwrt" 404 title="openwrt" 405 rel="1">openwrt</a> 406 </div> 407</section> 408 409 410 <!-- Short About --> 411 <section class="visible-md visible-lg"> 412 <hr> 413 <h5><a href="/about/">ABOUT ME</a></h5> 414 <div class="short-about"> 415 416 <img src="https://github.com/KEVINJ1E.png" /> 417 418 419 <p>䏿å¦ä¹ ç¡é鲿¥ <br> [Keep Learning, Infinite Progress]</p> 420 421 <!-- SNS Link --> 422 423 424 425<ul class="list-inline"> 426 427 428 429 430 431 432 433 434 435</ul> 436 </div> 437</section> 438 439 <!-- Friends Blog --> 440 441<hr> 442<h5>FRIENDS</h5> 443<ul class="list-inline"> 444 445 <li><a href="https://github.com/huxpro">Hux pro</a></li> 446 447</ul> 448 449 450 <!-- Ads --> 451
451<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
451 452<!-- first shot --> 453<!-- <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6487568398225121" data-ad-slot="4814308751" 454 data-ad-format="auto" data-full-width-responsive="true"></ins> -->
455<script> 456 (adsbygoogle = window.adsbygoogle || []).push({}); 457</script>
457 458 459 </div> 460 461 </div> 462</div> 463 464 465 466 467 <!-- Footer --> 468<footer> 469 <div class="container"> 470 <div class="row"> 471 <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 472 <!-- SNS Link --> 473 474 475 476<ul class="list-inline text-center"> 477 478 479 480 481 482 483 484 485 486</ul> 487 488 <p class="copyright text-muted"> 489 Copyright © OLDK Blog 2026 490 <br> 491 <!-- Powered by <a href="http://huangxuan.me">Hux Blog</a> | --> 492 <!-- <iframe style="margin-left: 2px; margin-bottom:-5px;" frameborder="0" scrolling="0" width="100px" 493 height="20px" 494 src="https://ghbtns.com/github-btn.html?user=huxpro&repo=huxpro.github.io&type=star&count=true"> --> 495 </iframe> 496 </p> 497 </div> 498 </div> 499 </div> 500</footer> 501 502<!-- jQuery -->
503<script src="/js/jquery.min.js "></script>
503 504 505<!-- Bootstrap Core JavaScript --> 506<!-- Currently, only navbar scroll-down effect at desktop still depends on this -->
507<script src="/js/bootstrap.min.js "></script>
507 508 509<!-- Custom Theme JavaScript -->
510<script src="/js/hux-blog.min.js "></script>
510 511 512<!-- Simple Jekyll Search -->
513<script src="/js/simple-jekyll-search.min.js"></script>
513 514 515<!-- Service Worker --> 516
517<script src="/js/snackbar.js "></script>
vendor: 1 bytes, line 517
517
518<script src="/js/sw-registration.js "></script>
518 519 520 521<!-- async load function -->
522<script> 523 function async(u, c) { 524 var d = document, t = 'script', 525 o = d.createElement(t), 526 s = d.getElementsByTagName(t)[0]; 527 o.src = u; 528 if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); } 529 s.parentNode.insertBefore(o, s); 530 } 531</script>
531 532 533<!-- 534 Because of the native support for backtick-style fenced code blocks 535 right within the Markdown is landed in Github Pages, 536 From V1.6, There is no need for Highlight.js, 537 so Huxblog drops it officially. 538 539 - https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0 540 - https://help.github.com/articles/creating-and-highlighting-code-blocks/ 541 - https://github.com/jneen/rouge/wiki/list-of-supported-languages-and-lexers 542--> 543<!-- 544
544<script> 545 async("http://cdn.bootcss.com/highlight.js/8.6/highlight.min.js", function(){ 546 hljs.initHighlightingOnLoad(); 547 }) 548 </script>
548 549 <link href="http://cdn.bootcss.com/highlight.js/8.6/styles/github.min.css" rel="stylesheet"> 550--> 551 552 553 554 555 556 557 558<!--fastClick.js -->
559<script> 560 async("//cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.6/fastclick.min.js", function () { 561 var $nav = document.querySelector("nav"); 562 if ($nav) FastClick.attach($nav); 563 }) 564</script>
564 565 566 567<!-- Google Analytics --> 568
569<script> 570 // dynamic User by Hux 571 var _gaId = 'G-90DP1D7ER8'; 572 var _gaDomain = 'oldk.us.kg'; 573 574 // Originial 575 (function (i, s, o, g, r, a, m) { 576 i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { 577 (i[r].q = i[r].q || []).push(arguments) 578 }, i[r].l = 1 * new Date(); a = s.createElement(o), 579 m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) 580 })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); 581 582 ga('create', _gaId, _gaDomain); 583 ga('send', 'pageview'); 584</script>
584 585 586 587 588<!-- Baidu Tongji --> 589 590 591 592<!-- Side Catalog --> 593
594<script type="text/javascript"> 595 function generateCatalog(selector) { 596 597 // interop with multilangual 598 if ('' == 'true') { 599 _containerSelector = 'div.post-container.active' 600 } else { 601 _containerSelector = 'div.post-container' 602 } 603 604 // init 605 var P = $(_containerSelector), a, n, t, l, i, c; 606 a = P.find('h1,h2,h3,h4,h5,h6'); 607 608 // clean 609 $(selector).html('') 610 611 // appending 612 a.each(function () { 613 n = $(this).prop('tagName').toLowerCase(); 614 i = "#" + $(this).prop('id'); 615 t = $(this).text(); 616 c = $('<a href="' + i + '" rel="nofollow">' + t + '</a>'); 617 l = $('<li class="' + n + '_nav"></li>').append(c); 618 $(selector).append(l); 619 }); 620 return true; 621 } 622 623 generateCatalog(".catalog-body"); 624 625 // toggle side catalog 626 $(".catalog-toggle").click((function (e) { 627 e.preventDefault(); 628 $('.side-catalog').toggleClass("fold") 629 })) 630 631 /* 632 * Doc: https://github.com/davist11/jQuery-One-Page-Nav 633 * Fork by Hux to support padding 634 */ 635 async("/js/jquery.nav.js", function () { 636 $('.catalog-body').onePageNav({ 637 currentClass: "active", 638 changeHash: !1, 639 easing: "swing", 640 filter: "", 641 scrollSpeed: 700, 642 scrollOffset: 0, 643 scrollThreshold: .2, 644 begin: null, 645 end: null, 646 scrollChange: null, 647 padding: 80 648 }); 649 }); 650</script>
650 651 652 653 654<!-- Multi-Lingual --> 655 656 657<!-- Simple Jekyll Search -->
658<script> 659 // https://stackoverflow.com/questions/1912501/unescape-html-entities-in-javascript 660 function htmlDecode(input) { 661 var e = document.createElement('textarea'); 662 e.innerHTML = input; 663 // handle case of empty input 664 return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; 665 } 666 667 SimpleJekyllSearch({ 668 searchInput: document.getElementById('search-input'), 669 resultsContainer: document.getElementById('search-results'), 670 json: '/search.json', 671 searchResultTemplate: '<div class="post-preview item"><a href="{url}"><h2 class="post-title">{title}</h2><h3 class="post-subtitle">{subtitle}</h3><hr></a></div>', 672 noResultsText: 'No results', 673 limit: 50, 674 fuzzy: false, 675 // a hack to get escaped subtitle unescaped. for some reason, 676 // post.subtitle w/o escape filter nuke entire search. 677 templateMiddleware: function (prop, value, template) { 678 if (prop === 'subtitle' || prop === 'title') { 679 if (value.indexOf("code")) { 680 return htmlDecode(value); 681 } else { 682 return value; 683 } 684 } 685 } 686 }); 687 688 $(document).ready(function () { 689 var $searchPage = $('.search-page'); 690 var $searchOpen = $('.search-icon'); 691 var $searchClose = $('.search-icon-close'); 692 var $searchInput = $('#search-input'); 693 var $body = $('body'); 694 695 $searchOpen.on('click', function (e) { 696 e.preventDefault(); 697 $searchPage.toggleClass('search-active'); 698 var prevClasses = $body.attr('class') || ''; 699 setTimeout(function () { 700 $body.addClass('no-scroll'); 701 }, 400) 702 703 if ($searchPage.hasClass('search-active')) { 704 $searchClose.on('click', function (e) { 705 e.preventDefault(); 706 $searchPage.removeClass('search-active'); 707 $body.attr('class', prevClasses); // from closure 708 }); 709 $searchInput.focus(); 710 } 711 }); 712 }); 713</script>
713 714 715 716<!-- Image to hack wechat --> 717<img src="/img/icon_wechat.png" width="0" height="0" /> 718<!-- Migrate from head to bottom, no longer block render and still work --> 719
720<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"e9469b82953841bb8e96b9609e8e9efe","r":1,"spa":2}' crossorigin="anonymous"></script>
720 721</body> 722 723</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.