<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Today I Learned ｜ 今天我學到的 on Duke Hsu ｜ Learn • Build • Share</title><link>https://www.dukehsu.com/categories/today_i_learned.html</link><description>Recent content in Today I Learned ｜ 今天我學到的 on Duke Hsu ｜ Learn • Build • Share</description><image><title>Duke Hsu ｜ Learn • Build • Share</title><url>https://www.dukehsu.com/images/og-default.jpg</url><link>https://www.dukehsu.com/images/og-default.jpg</link></image><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 19 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.dukehsu.com/categories/today_i_learned/index.xml" rel="self" type="application/rss+xml"/><item><title>將docker 中的SQL database 遷移到ms Azure</title><link>https://www.dukehsu.com/posts/docker-sql-to-azure.html</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/docker-sql-to-azure.html</guid><description>&lt;h2 id="scenario"&gt;Scenario&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Source Database running on Docker (Linux Server)&lt;/li&gt;
&lt;li&gt;Traget Database running on Azure Server&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;源database 的結構和目標database 的結構、表、限制等都相同&lt;/li&gt;
&lt;li&gt;對源database 和目標database 具有訪問權限&lt;/li&gt;
&lt;li&gt;SQL Server Management Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-by-step"&gt;Step by Step&lt;/h2&gt;
&lt;h3 id="on-source-database"&gt;On Source Database&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Generate Scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Pasted image 20260319141730" loading="lazy" src="https://www.dukehsu.com/posts/docker-sql-to-azure/images/Pasted-image-20260319141730.webp"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Select specific database objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Pasted image 20260319142035" loading="lazy" src="https://www.dukehsu.com/posts/docker-sql-to-azure/images/Pasted-image-20260319142035.webp"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scripting Options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Pasted image 20260319142309" loading="lazy" src="https://www.dukehsu.com/posts/docker-sql-to-azure/images/Pasted-image-20260319142309.webp"&gt;&lt;/p&gt;
&lt;p&gt;Note: 根據需求調整Scripting Options！！！！&lt;/p&gt;
&lt;p&gt;目前場景需求的option 是這樣設置的&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Types of data to script：选择 Data only（因为结构已经存在）&lt;/li&gt;
&lt;li&gt;Script DROP statements：设置为 False&lt;/li&gt;
&lt;li&gt;Script Indexes：设置为 False&lt;/li&gt;
&lt;li&gt;Script Primary Keys：设置为 False&lt;/li&gt;
&lt;li&gt;Script Foreign Keys：设置为 False&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Save as Script file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Pasted image 20260319142556" loading="lazy" src="https://www.dukehsu.com/posts/docker-sql-to-azure/images/Pasted-image-20260319142556.webp"&gt;&lt;/p&gt;</description></item><item><title>Deploy MkDocs to GitHub Pages (github.io)</title><link>https://www.dukehsu.com/posts/deploy-mkdocs-to-github-pages-github-io.html</link><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/deploy-mkdocs-to-github-pages-github-io.html</guid><description>&lt;h2 id="1-setup-mkdocs-environment"&gt;1) Setup MkDocs environment&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create MkDocs virtual environment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -m venv mkdoc_venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Activate venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; mkdoc_venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deactivate venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deactivate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Install MkDocs + Material theme&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip3 install mkdocs mkdocs-material
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Install Mermaid plugin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install mkdocs-mermaid2-plugin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a new MkDocs project&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs new duke-note
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run MkDocs local server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs serve
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run server for external access&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs serve --dev-addr&lt;span class="o"&gt;=&lt;/span&gt;0.0.0.0:8000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-create-github-repository"&gt;2) Create GitHub repository&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run in your notes directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Initial commit of my study notes&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3connect-to-remote-github-repo"&gt;3)Connect to remote GitHub repo&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Format:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# git remote set-url origin https://&amp;lt;token&amp;gt;@github.com/&amp;lt;owner&amp;gt;/&amp;lt;repository&amp;gt;.git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Example:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote set-url origin https://ghp_yourTokenHere@github.com/dukehug/mkdocs_dknotes.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git branch -M main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deploy to GitHub Pages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs gh-deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4deploy-script-deploysh"&gt;4)Deploy script (deploy.sh)&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Stop if any error happens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; -e
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Build site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sleep &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Push updates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;update notes: &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;date&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push origin main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sleep &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deploy to GitHub Pages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs gh-deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="5math-formula-support-mathjax"&gt;5)Math formula support (MathJax)&lt;/h2&gt;
&lt;p&gt;References:&lt;/p&gt;</description></item><item><title>ERP Next 搬家 - 从腾讯云迁移到PVE</title><link>https://www.dukehsu.com/posts/cloud_to_pve.html</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/cloud_to_pve.html</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;轻量云创建镜像，并共享&lt;/li&gt;
&lt;li&gt;通过轻量云创建的镜像，创建一个云服务器实例&lt;/li&gt;
&lt;li&gt;在该镜像下创建的云服务器再制作一个镜像&lt;/li&gt;
&lt;li&gt;创建一个新的存储桶作为镜像导出的存储对象&lt;/li&gt;
&lt;li&gt;通过存储桶下载备份出来的镜像&lt;/li&gt;
&lt;li&gt;导入到 PVE&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="get-start"&gt;Get start&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;为轻量云中的erpnext 主机制作一个镜像&lt;/li&gt;
&lt;li&gt;将该镜像在该实例的地域开启共享&lt;/li&gt;
&lt;li&gt;在该地域创建一个云服务器，（云服务器- 非 轻量云） 选用该镜像&lt;/li&gt;
&lt;li&gt;开通之后，等待启动，并确认服务正常&lt;/li&gt;
&lt;li&gt;将实例停机，再在当前实例创建一个镜像（云服务器- 非 轻量云）&lt;/li&gt;
&lt;li&gt;等待镜像创建完成&lt;/li&gt;
&lt;li&gt;来到对象存储- 存储桶列表- 创建存储桶&lt;/li&gt;
&lt;li&gt;返回云服务中的镜像，选择第5步已经创建好的镜像&lt;/li&gt;
&lt;li&gt;在镜像选项中选择镜像导出&lt;/li&gt;
&lt;li&gt;导出时选择 &lt;strong&gt;QCOW2&lt;/strong&gt; 格式，等待导出完成之后，会存储到存储桶中&lt;/li&gt;
&lt;li&gt;回到对象存储- 选择存储桶列表 - 找到刚刚导出的 镜像 - 选择下载镜像&lt;/li&gt;
&lt;li&gt;将导出的镜像下载到本地，再导入到PVE 即可&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="pve-import"&gt;PVE Import&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;USB Disk mount&lt;/li&gt;
&lt;li&gt;Import &lt;code&gt;qcow2&lt;/code&gt; to vm&lt;/li&gt;
&lt;li&gt;Config VM&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lsblk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /mnt/usb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/sdb1 /mnt/usb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /mnt/usb/iso/*.qcow2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;## import to vm - qm importdisk &amp;lt;源文件路径&amp;gt; &amp;lt;目标存储ID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm importdisk 101 /mnt/usb/iso/vps-backup.qcow2 local-lvm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回PVE 界面， 将导入的磁盘添加到创建的空的vm中， 设置启动磁盘即可&lt;/p&gt;</description></item><item><title>Cups 維護筆記</title><link>https://www.dukehsu.com/posts/cups_note.html</link><pubDate>Sun, 30 Nov 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/cups_note.html</guid><description>&lt;hr&gt;
&lt;h2 id="fixing-cups-print-server-issue-on-ubuntu-2404"&gt;Fixing CUPS Print Server Issue on Ubuntu 24.04&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt; 2025-11-30 12:42 &lt;strong&gt;Tags:&lt;/strong&gt; #Linux #cups #printserver&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="table-of-contents"&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What happened&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How I fixed it&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Step-by-step guide&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="what-happened"&gt;&lt;strong&gt;What Happened&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I was running &lt;strong&gt;CUPS 2.4.7&lt;/strong&gt; on &lt;strong&gt;Ubuntu 24.04&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The client suddenly couldn’t print anything.&lt;/li&gt;
&lt;li&gt;After checking the server, I found that &lt;strong&gt;CUPS had shut down unexpectedly&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="how-i-fixed-it"&gt;&lt;strong&gt;How I Fixed It&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Logged into Ubuntu&lt;/li&gt;
&lt;li&gt;Checked the CUPS service status&lt;/li&gt;
&lt;li&gt;Restarted the required services&lt;/li&gt;
&lt;li&gt;Tested printing afterward to confirm everything was working again&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="prerequisites"&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A keyboard&lt;/li&gt;
&lt;li&gt;A monitor&lt;/li&gt;
&lt;li&gt;Your Ubuntu user account and password&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="getting-started"&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/h2&gt;
&lt;h3 id="if-you-forgot-your-root-password"&gt;&lt;strong&gt;If you forgot your root password&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;You can reset it through &lt;strong&gt;GRUB&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Using Python and Streamlit with MS SQL</title><link>https://www.dukehsu.com/posts/using-python-and-streamlit-with-mssql.html</link><pubDate>Sat, 22 Nov 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/using-python-and-streamlit-with-mssql.html</guid><description>&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Create and activate the Python environment&lt;/li&gt;
&lt;li&gt;Install Python modules&lt;/li&gt;
&lt;li&gt;Install MS SQL&lt;/li&gt;
&lt;li&gt;Start coding &amp;amp; Run&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;For this project, we used MS SQL, so the operating system is Windows Server 2012. I installed MS SQL Server 2012 Advanced. If your system is Windows 10 or Windows 11, install the latest version of MS SQL Express instead.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Python 3.12&lt;/li&gt;
&lt;li&gt;Windows OS&lt;/li&gt;
&lt;li&gt;MS SQL Express&lt;/li&gt;
&lt;li&gt;Internet&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="get-started"&gt;Get started&lt;/h2&gt;
&lt;h3 id="create-and-activate-the-python-environment"&gt;Create and activate the Python environment&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Create the virtual environment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;-m&lt;/span&gt; &lt;span class="n"&gt;venv&lt;/span&gt; &lt;span class="n"&gt;c:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Activate it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;&lt;span class="n"&gt;c:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;activate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Deactivate it when finished&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;deactivate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="install-python-modules"&gt;Install Python modules&lt;/h3&gt;
&lt;p&gt;You can install these modules step by step, or use &lt;code&gt;pip install -r requirement.txt&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Git and Github 筆記</title><link>https://www.dukehsu.com/posts/git_and_github_note.html</link><pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/git_and_github_note.html</guid><description>&lt;h2 id="git-and-github-筆記"&gt;Git and Github 筆記&lt;/h2&gt;
&lt;h3 id="git-fast-version-control"&gt;Git fast version control&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一些基本概念&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;版本管理和跟蹤&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;版本控制系統是軟件工具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以幫助團隊管理源代碼&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="status-of-version-版本狀態"&gt;Status of Version 版本狀態&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Untracked 未追蹤&lt;/li&gt;
&lt;li&gt;Tracked 已追蹤&lt;/li&gt;
&lt;li&gt;Staged 已暫存&lt;/li&gt;
&lt;li&gt;Committed 已提交&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="head---master--branch"&gt;HEAD -&amp;gt; master / branch&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;HEAD ： 目前進度，最新狀態&lt;/li&gt;
&lt;li&gt;Master : 主線&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="git-追蹤的是檔案的變化不是檔案本身"&gt;git 追蹤的是檔案的變化，不是檔案本身&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;刪除檔案也需要&amp;quot;add&amp;quot; 和 &amp;ldquo;commit&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="需要忽略的版本管理的文件"&gt;需要忽略的版本管理的文件&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;在projec 目錄下 新增 &lt;code&gt;.gitignore&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在&lt;code&gt;.gitignore&lt;/code&gt; 文件中寫入不需要進行版本管理控制的文件後綴或者文件名&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="github-是平台--相當於server"&gt;Github 是平台 / 相當於Server&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Git 工具將文檔或者代碼 託管到github 平台 -&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="install-安裝"&gt;Install 安裝&lt;/h3&gt;
&lt;h4 id="mac-os"&gt;Mac os&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Mac OS 自帶 git 輸入 &lt;code&gt;git -- version&lt;/code&gt; 就可以看到git 版本&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="windows"&gt;Windows&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;下載最新的 &lt;a href="https://git-for-windows.github.io/"&gt;https://git-for-windows.github.io/&lt;/a&gt; git for windows&lt;/li&gt;
&lt;li&gt;根據指示完成git 的安裝&lt;/li&gt;
&lt;li&gt;完成安裝之後就可以看到git bash 的圖標&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="ubuntu-debian"&gt;Ubuntu /Debian&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;根據下方命令進行安裝&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get install git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="use-使用"&gt;Use 使用&lt;/h3&gt;
&lt;h4 id="基礎配置"&gt;基礎配置&lt;/h4&gt;
&lt;p&gt;使用以下命令配置git 用戶名和電子郵件&lt;/p&gt;</description></item><item><title>Install Jupyter notebook on Ubuntu 24.04 and allow remote access.</title><link>https://www.dukehsu.com/posts/install_jupyter_notebook_on_ubuntu_24-04.html</link><pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/install_jupyter_notebook_on_ubuntu_24-04.html</guid><description>&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vultr&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;How to Install Jupyter Notebook on Ubuntu 24.04&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.vultr.com/how-to-install-jupyter-notebook-on-ubuntu-24-04"&gt;https://docs.vultr.com/how-to-install-jupyter-notebook-on-ubuntu-24-04&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 24.04&lt;/li&gt;
&lt;li&gt;Internet access&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="install-jupyter-notebook-with-pip"&gt;Install Jupyter Notebook with pip&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Update the APT package index:
&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install the virtualenv package:
&lt;code&gt;sudo apt install python3-virtualenv -y&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create a virtual environment:
&lt;code&gt;virtualenv jupyter_env&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Activate the virtual environment:
&lt;code&gt;source jupyter_env/bin/activate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install Jupyter Notebook:
&lt;code&gt;pip install jupyter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Verify the installed version:
&lt;code&gt;jupyter-notebook --version&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can deactivate the virtual environment at any time by running &lt;code&gt;deactivate&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Ubuntu Server 笔记</title><link>https://www.dukehsu.com/posts/ubuntu-server-%E7%AC%94%E8%AE%B0.html</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ubuntu-server-%E7%AC%94%E8%AE%B0.html</guid><description>&lt;p&gt;这篇笔记记录了日常使用ubuntu时需要设置的笔记&lt;/p&gt;
&lt;h3 id="systemd-networkd-wait-onlineservice"&gt;systemd-networkd-wait-online.service&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;systemd-networkd-wait-online.service&lt;/code&gt; 是 Systemd 的一个服务单元，主要用于在系统启动时等待网络连接就绪。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：该服务会等待 systemd-networkd 完成网络配置，并确认至少有一个网络接口在线后，才会标记为 ready，从而允许其他依赖网络的服务启动。默认情况下，它会监视所有由 systemd-networkd 管理的网络接口，直到连线成功或超时。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;常见问题&lt;/strong&gt;：如果 DHCP 获取 IP 耗时较长，可能导致系统启动卡在该服务；没有网络连接时，也可能会一直等待到超时。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优化方法&lt;/strong&gt;：可以调整超时时间、禁用服务，或者检查网络配置。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="调整超时时间"&gt;调整超时时间&lt;/h4&gt;
&lt;p&gt;将 &lt;code&gt;TimeoutStartSec&lt;/code&gt; 设置为 &lt;code&gt;2sec&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo vim /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在 &lt;code&gt;[Service]&lt;/code&gt; 部分添加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;TimeoutStartSec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;2sec&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存后重新加载配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl daemon-reload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="禁用服务"&gt;禁用服务&lt;/h4&gt;
&lt;p&gt;如果不需要严格等待网络就绪，可以禁用并屏蔽服务：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl disable systemd-networkd-wait-online.service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl mask systemd-networkd-wait-online.service&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="优化网络配置"&gt;优化网络配置&lt;/h4&gt;
&lt;p&gt;检查 &lt;code&gt;/etc/netplan/50-cloud-init.yaml&lt;/code&gt; 或类似文件，确保 DHCP 配置正确。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;ethernets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;eth0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dhcp4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;对于固定 IP 环境，改用静态 IP 可避免 DHCP 延迟‌。&lt;/p&gt;
&lt;h3 id="timedatectl"&gt;timedatectl&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;设置时区&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo timedatectl set-timezone Asia/Shanghai
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl status &lt;span class="c1"&gt;#验证&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;开启时间同步并设置 NTP 服务器&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-get install chrony -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /etc/chrony
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim chrony.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server time.google.com iburst
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server time2.google.com iburst
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server time3.google.com iburst
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; chronyd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart chronyd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查服务状态、同步源及同步状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl status chronyd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chronyc sources -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chronyc tracking&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="usermod"&gt;usermod&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;usermod -aG lpadmin username &lt;span class="c1"&gt;# 将用户名添加到 lpadmin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /etc/group&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>ikuai安裝腳本</title><link>https://www.dukehsu.com/posts/ikuai_install_sh.html</link><pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ikuai_install_sh.html</guid><description>&lt;h2 id="在vps中安裝ikuai的操作步驟如下"&gt;在vps中安裝ikuai的操作步驟如下&lt;/h2&gt;
&lt;h2 id="命令操作部分"&gt;命令操作部分&lt;/h2&gt;
&lt;h3 id="查看當前vps的ip地址和網關地址"&gt;查看當前vps的ip地址和網關地址&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip route
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;default via 10.0.0.1 dev eth0 proto dhcp src 10.0.0.14 metric &lt;span class="m"&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10.0.0.0/22 dev eth0 proto kernel scope link src 10.0.0.14&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="新增腳本"&gt;新增腳本&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 檢查是否以 root 用戶運行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$EUID&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -ne &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;請以 root 用戶運行此腳本&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 詢問用戶下載 32 位或 64 位版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -p &lt;span class="s2"&gt;&amp;#34;請選擇要下載的 iKuai8 版本 (32/64): &amp;#34;&lt;/span&gt; arch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 根據用戶選擇下載對應的 ISO 鏡像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$arch&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;32&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x32_3.7.20_Build202506041743.iso&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ikuai8_x32.iso&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$arch&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;64&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.7.20_Build202506041743.iso&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ikuai8_x64.iso&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;無效的選擇，請重試&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 下載 ISO 鏡像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;正在下載 &lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$url&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -O &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;下載完成&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 掛載 ISO 鏡像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;正在掛載 &lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount -o loop &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt; -ne &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;掛載 &lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt; 失敗，請手動檢查&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;掛載成功&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 複製啟動文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;正在複製啟動文件...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp -rpf /mnt/boot /
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 檢查操作結果&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;檢查操作結果:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- &lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt; 存在&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- &lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="s2"&gt; 不存在&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; mountpoint -q /mnt&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- 掛載成功&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- 掛載失敗&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -d &lt;span class="s2"&gt;&amp;#34;/boot&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- 啟動文件已複製&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- 啟動文件複製失敗&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 檢查主機 IP 地址和網關地址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ip_address&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;ip addr show &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s1"&gt;&amp;#39;inet &amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; cut -d&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt; -f1&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;gateway&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;ip route show &lt;span class="p"&gt;|&lt;/span&gt; grep default &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $3}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- IP 地址: &lt;/span&gt;&lt;span class="nv"&gt;$ip_address&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;- 網關地址: &lt;/span&gt;&lt;span class="nv"&gt;$gateway&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;所有操作完成，請執行 reboot 重啟 VPS，並通過 VNC 連接控制台&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="執行腳本"&gt;執行腳本&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x install_ikuai.sh bash install_ikuai.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;根據提示重啟vps 並通過vns 控制台連結vps&lt;/p&gt;</description></item><item><title>Pangolin 安装和使用示范</title><link>https://www.dukehsu.com/posts/pangolin_install.html</link><pubDate>Fri, 30 May 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/pangolin_install.html</guid><description>&lt;h2 id="pangolin-安装和使用示范"&gt;Pangolin 安装和使用示范&lt;/h2&gt;
&lt;h2 id="前提条件"&gt;前提条件&lt;/h2&gt;
&lt;p&gt;为了跟随视频中的操作和配置教学，以下条件是可选的。 视频内容： &lt;a href="https://www.bilibili.com/video/BV1cAJHz8EAj/"&gt;https://www.bilibili.com/video/BV1cAJHz8EAj/&lt;/a&gt;&lt;/p&gt;
&lt;iframe src="//player.bilibili.com/player.html?isOutside=true&amp;amp;aid=114551609689505&amp;amp;bvid=BV1cAJHz8EAj&amp;amp;cid=30094263026&amp;amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"&gt;&lt;/iframe&gt;
&lt;ul&gt;
&lt;li&gt;一台有独立公网IP地址的云服务器&lt;/li&gt;
&lt;li&gt;一个域名&lt;/li&gt;
&lt;li&gt;一台在本地局域网中运行的Linux服务器 （博主的是Ubuntu 20.0.1)&lt;/li&gt;
&lt;li&gt;一台运行Ollama / Deepseek 的Windows电脑&lt;/li&gt;
&lt;li&gt;保持微笑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="pangolin" loading="lazy" src="https://www.dukehsu.com/posts/pangolin_install/images/pangolin.webp"&gt;&lt;/p&gt;
&lt;p&gt;图： 简单的图示&lt;/p&gt;
&lt;h2 id="简介"&gt;简介&lt;/h2&gt;
&lt;p&gt;Project: &lt;a href="https://docs.fossorial.io/overview"&gt;https://docs.fossorial.io/overview&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fossorial 系统以 Pangolin 为核心，是一个自托管的隧道反向代理，具有身份和访问管理功能，旨在通过运行在用户空间的加密 WireGuard 隧道安全地公开私有资源。想象一下自托管的 Cloudflare 隧道。 Pangolin 在底层使用 Traefik 进行实际的 HTTP 代理。Badger 插件提供了一种使用 Pangolin 验证每个请求的方法。第二个服务 Gerbil 提供了一个 WireGuard 管理服务器，Pangolin 可以使用它来创建对等体进行连接。最后，还有 Newt，这是一个 CLI 工具和 Docker 容器，它完全在用户空间通过 WireGuard 连接到 Newt 和 Gerbil，并代理您的本地资源。这意味着您无需运行特权进程或容器即可公开您的服务！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="Fossorial System Diagram" loading="lazy" src="https://www.dukehsu.com/posts/pangolin_install/images/Fossorial-System-Diagram.webp"&gt;&lt;/p&gt;
&lt;p&gt;图： Fossorial system Diagram&lt;/p&gt;
&lt;h2 id="开始"&gt;开始&lt;/h2&gt;
&lt;h3 id="在腾讯云服务器下载-pangolin-服务端-的安装脚本"&gt;在腾讯云服务器下载 Pangolin 服务端 的安装脚本&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 下载并执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -O installer &lt;span class="s2"&gt;&amp;#34;https://github.com/fosrl/pangolin/releases/download/1.2.0/installer_linux_&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;uname -m &lt;span class="p"&gt;|&lt;/span&gt; sed &lt;span class="s1"&gt;&amp;#39;s/x86_64/amd64/;s/aarch64/arm64/&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x ./installer&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="添加dns-记录"&gt;添加DNS 记录&lt;/h3&gt;
&lt;p&gt;注意：需要关闭Proxy&lt;/p&gt;</description></item><item><title>Windows10桌面图标选择框变宽的处理办法</title><link>https://www.dukehsu.com/posts/windows10_icon_fix.html</link><pubDate>Fri, 30 May 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windows10_icon_fix.html</guid><description>&lt;h2 id="緣起"&gt;緣起&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;显示器为 4K&lt;/li&gt;
&lt;li&gt;将 “Make text bigger” 的值调整到了 150%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Make text bigger 设置" loading="lazy" src="https://www.dukehsu.com/posts/windows10_icon_fix/images/1.webp"&gt;&lt;/p&gt;
&lt;h3 id="windows-的缩放-bug"&gt;Windows 的缩放 Bug&lt;/h3&gt;
&lt;p&gt;Windows 操作系统在高分辨率显示器下的缩放一直存在一些问题。更改 “Make text bigger” 后，会影响桌面图标的选择框，情况如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="桌面图标选择框变宽" loading="lazy" src="https://www.dukehsu.com/posts/windows10_icon_fix/images/aa5cd5cb-1a81-4771-b1c9-1e8a20575ec8.webp"&gt;&lt;/p&gt;
&lt;p&gt;图片来自微软社区。&lt;/p&gt;
&lt;p&gt;由于我已经更改了注册表，之前的 Bug 没有截屏，所以使用社区图片作为示例。&lt;/p&gt;
&lt;h3 id="解决办法"&gt;解决办法&lt;/h3&gt;
&lt;h4 id="修改注册表"&gt;修改注册表&lt;/h4&gt;
&lt;p&gt;注册表位置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="注册表设置" loading="lazy" src="https://www.dukehsu.com/posts/windows10_icon_fix/images/2.png"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将 &lt;code&gt;IconSpacing&lt;/code&gt; 和 &lt;code&gt;IconVerticalSpacing&lt;/code&gt; 的值修改为 &lt;code&gt;-1125&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;出现 Bug 时，这两个值通常在 &lt;code&gt;5500&lt;/code&gt; 左右，所以选择框会很宽&lt;/li&gt;
&lt;li&gt;修改后重新启动计算机&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="参考"&gt;参考&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://answers.microsoft.com/zh-hans/windows/forum/all/%E6%A1%8C%E9%9D%A2%E5%9B%BE%E6%A0%87%E9%80%89/92d70e9a-151f-407c-8c81-aacad4d66633"&gt;https://answers.microsoft.com/zh-hans/windows/forum/all/%E6%A1%8C%E9%9D%A2%E5%9B%BE%E6%A0%87%E9%80%89/92d70e9a-151f-407c-8c81-aacad4d66633&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Typecho 迁移到 WordPress 笔记</title><link>https://www.dukehsu.com/posts/typecho_tranferto_wordpress.html</link><pubDate>Thu, 17 Apr 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/typecho_tranferto_wordpress.html</guid><description>&lt;h2 id="准备工作"&gt;准备工作&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Typecho 数据导出插件 &lt;code&gt;Byetyp&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://github.com/sunxiyuan/ByeTyp"&gt;https://github.com/sunxiyuan/ByeTyp&lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;p&gt;打包备份Typecho中&lt;code&gt;/usr/uploads&lt;/code&gt; 的数据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;备份统计代码和ADsense 代码&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="步骤"&gt;步骤&lt;/h2&gt;
&lt;p&gt;注： 因为是迁移完之后才写的笔记，所以没有截图了，接下来的内容就只有文字步骤了。&lt;/p&gt;
&lt;h3 id="文字步骤"&gt;文字步骤&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将Byetyp插件上传到Typecho博客中的插件目录(Plug)， 并去掉版本号修改目录名（否则无法正常启用）&lt;/li&gt;
&lt;li&gt;将Typecho中&lt;code&gt;/usr/uploads&lt;/code&gt; 用户上传的文件打包下载备份到本地 ，稍后要上传到Wordpress 的 &lt;code&gt;wp-content/uploads&lt;/code&gt; 目录&lt;/li&gt;
&lt;li&gt;激活Byetyp插件导出Typecho博客的数据，格式为&lt;code&gt;xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装好Wordpress 并导入Typecho中的数据&lt;/li&gt;
&lt;li&gt;执行数据库命令 ，将&lt;code&gt;post-content&lt;/code&gt; 表中的附件路径（图片路径）替换成&lt;code&gt;Wordpress&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="sql-command"&gt;SQL command&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;wp_posts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;post_content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;REPLACE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;post_content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/usr/uploads/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/wp-content/uploads/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注： &lt;code&gt;wp_posts&lt;/code&gt;是Wordpress表名 , 请根据你的实际情况来&lt;/p&gt;
&lt;h3 id="1pannel"&gt;1pannel&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PHP 容器运行环境部署的网站 权限问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;问题现象：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;上传主题 或者文件 、 插件到Wordpress 会提示权限不足、或者需要你填写FTP信息&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;解决办法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通过 PHP 容器运行环境部署的网站，需要将 index 和子目录下的所有文件、文件夹所有者和用户组设置为 1000，本地 PHP 环境需要参考本地 PHP-FPM 用户和用户组设置&lt;/li&gt;
&lt;li&gt;如果VPS中没有id为1000的用户或者组，请新建一个并设置其ID为1000,再到1panel的网站目录配置界面，将其设置为1000&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="小结"&gt;小结&lt;/h2&gt;
&lt;p&gt;之前因为嫌 WordPress 麻烦，所以用了很多年的 Typecho。今年有一些想要的插件或者功能无法在 Typecho 实现，所以又换回 WordPress。目前的访问速度还能接受；因为采用了 Cloudflare proxy，图片显示可能会稍慢。&lt;/p&gt;</description></item><item><title>Wireguard安装笔记</title><link>https://www.dukehsu.com/posts/wireguard.html</link><pubDate>Fri, 11 Apr 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/wireguard.html</guid><description>&lt;h2 id="文章目录"&gt;文章目录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;先决条件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WireGuard 安装（Wg-easy)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docker 常用命令&lt;/p&gt;
&lt;h3 id="vps安装wireguard的先决条件"&gt;VPS安装Wireguard的先决条件&lt;/h3&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;带公网IP地址的设备 / IPV6 也可以 （该笔记使用的Ubuntu18.04 操作系统的VPS 作为例子）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VPS 启用SSH&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VPS安装Docker&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="vps-wireguard-的安装步骤"&gt;VPS Wireguard 的安装步骤&lt;/h3&gt;
&lt;h4 id="1-docker-安装"&gt;1. Docker 安装&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install docker.io docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo service docker start
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;whoami
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG docker &lt;span class="o"&gt;{&lt;/span&gt;ubuntu&lt;span class="o"&gt;}&lt;/span&gt; //添加用户进docker组
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exec&lt;/span&gt; su - &lt;span class="nv"&gt;$USER&lt;/span&gt; //输入密码&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="2-创建wg-easy-密码和密匙"&gt;2. 创建Wg-easy 密码和密匙&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it ghcr.io/wg-easy/wg-easy wgpw &lt;span class="o"&gt;{&lt;/span&gt;你的密码&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PASSWORD_HASH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;$2a$12$NJOIUwURc7qX4XnihBNKqOTSqKVxGJahAmwg6FUuboLvxzapBCYHK&amp;#39;&lt;/span&gt; //&lt;span class="o"&gt;{&lt;/span&gt;你的密码&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//系统自动开始拉取镜像并返回密码密匙
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//复制保存好密匙&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-运行wg-easy-docker-镜像"&gt;3. 运行wg-easy docker 镜像&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --detach &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name wg-easy &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --env &lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;en &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --env &lt;span class="nv"&gt;WG_HOST&lt;/span&gt;&lt;span class="o"&gt;={&lt;/span&gt;你的服务器地址&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --env &lt;span class="nv"&gt;PASSWORD_HASH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;{步骤2中获取的密码密匙}&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --env &lt;span class="nv"&gt;PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;51821&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --env &lt;span class="nv"&gt;WG_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;65534&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --volume ~/.wg-easy:/etc/wireguard &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --publish 65534:65534/udp &lt;span class="se"&gt;\ &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --publish 51821:51821/tcp &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cap-add NET_ADMIN &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cap-add SYS_MODULE &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --sysctl &lt;span class="s1"&gt;&amp;#39;net.ipv4.conf.all.src_valid_mark=1&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --sysctl &lt;span class="s1"&gt;&amp;#39;net.ipv4.ip_forward=1&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart unless-stopped &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ghcr.io/wg-easy/wg-easy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; docker ps //查看容器 运行状态 以及列表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; docker stop wg-easy //停止容器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; docker start wg-easy // 启动容器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; docker rm wg-easy //删除容器&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="4-登录wg-easy-添加peer"&gt;4. 登录wg-easy 添加peer&lt;/h4&gt;
&lt;p&gt;当容器运行正常之后，可以在浏览器中访问服务器地址带上端口进行访问&lt;/p&gt;</description></item><item><title>在 Ubuntu 24.04 LTS 中的安装ERPNext 笔记 Step by Step</title><link>https://www.dukehsu.com/posts/erpnext_installtion.html</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/erpnext_installtion.html</guid><description>&lt;h2 id="文章目录--table-of-contents"&gt;文章目录 | Table of Contents&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;ERPnext 简介&lt;/li&gt;
&lt;li&gt;先决条件&lt;/li&gt;
&lt;li&gt;安装步骤&lt;/li&gt;
&lt;li&gt;总结 &amp;amp; 引用&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="先决条件--prerequisites"&gt;先决条件 | Prerequisites&lt;/h2&gt;
&lt;h3 id="系统环境要求"&gt;系统环境要求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 24.04&lt;/li&gt;
&lt;li&gt;A user with sudo privileges&lt;/li&gt;
&lt;li&gt;Python 3.11+&lt;/li&gt;
&lt;li&gt;pip 20+&lt;/li&gt;
&lt;li&gt;MariaDB 10.3.x&lt;/li&gt;
&lt;li&gt;Node.js 18&lt;/li&gt;
&lt;li&gt;Yarn 1.12+&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="硬件要求"&gt;硬件要求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2 Process 2 Core&lt;/li&gt;
&lt;li&gt;4GB ram&lt;/li&gt;
&lt;li&gt;40GB Storage&lt;/li&gt;
&lt;li&gt;Intenet&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装步骤--installtion-steps"&gt;安装步骤 | Installtion Steps&lt;/h2&gt;
&lt;h3 id="包升级和创建新用户"&gt;包升级和创建新用户&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Update and Upgrade Packages&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update -y &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get upgrade -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a New user&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo adduser **Your-user-name**
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Fill in the information as prompted&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usemod -aG sudo **Your-user-name**
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;su **Your-user-name**
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Enter your password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~ &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="安装环境需要的包"&gt;安装环境需要的包&lt;/h3&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;Install Git&lt;/p&gt;</description></item><item><title>Proxmox 内存图表等性能监控无数据显示的解决办法</title><link>https://www.dukehsu.com/posts/proxmox_fix.html</link><pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/proxmox_fix.html</guid><description>&lt;h3 id="故障现象"&gt;故障现象&lt;/h3&gt;
&lt;p&gt;Proxmox 性能显示界面无数据，且时间为1970-01-01&lt;/p&gt;
&lt;h3 id="解决方法"&gt;解决方法&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;同步系统时间和硬件时间&lt;/strong&gt;： 先确保系统时间和硬件时间是正确且同步的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 设置正确的系统时间（例如：2025-01-13 10:00:00）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;date -s &lt;span class="s2"&gt;&amp;#34;2025-01-13 10:00:00&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 同步系统时间到硬件时钟&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hwclock -w
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查硬件时钟时间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hwclock&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;重启 PVE 服务&lt;/strong&gt;： 修改时间后，重启相关服务以确保正常运行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart pve-cluster
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart pveproxy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart pvedaemon&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;清理 rrd 数据缓存&lt;/strong&gt;（可选）： 如果时间错乱严重，可能需要清理并重建 RRD 数据：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl stop pve-cluster
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf /var/lib/rrdcached/db/pve2-node/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf /var/lib/rrdcached/db/pve2-storage/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf /var/lib/rrdcached/db/pve2-vm/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start pve-cluster&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;验证 NTP 配置&lt;/strong&gt;： 使用 NTP 服务确保系统时间自动同步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install ntp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; ntp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start ntp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ntpq -p&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果不需要 NTP，可以手动设置时间，但建议保持系统和硬件时钟同步。&lt;/p&gt;</description></item><item><title>VMware Station 遷移到 Proxmox PVE 筆記</title><link>https://www.dukehsu.com/posts/vmwaretransition.html</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/vmwaretransition.html</guid><description>&lt;h1 id="vmware-station-遷移到-proxmox-pve-筆記"&gt;VMware Station 遷移到 Proxmox PVE 筆記&lt;/h1&gt;
&lt;h2 id="必要條件"&gt;必要條件&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;VMware Station 中有VMS&lt;/li&gt;
&lt;li&gt;VMware Station宿主機和Proxmox 服務器有足夠的磁盤空間&lt;/li&gt;
&lt;li&gt;一些基本的Linux命令知識&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="當前的軟件版本"&gt;當前的軟件版本&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;VMware Station：&lt;/strong&gt; VMware® Workstation 17 Pro 17.0.0 build-20800274&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proxmox :&lt;/strong&gt; Proxmox Virtual Environment 8.3.0&lt;/p&gt;
&lt;h2 id="操作步驟"&gt;操作步驟&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;從VMware Station 導出VMS ，文件為*.ovf&lt;/li&gt;
&lt;li&gt;將VMware Station 導出的*.ovf 下載到Proxmox 節點中&lt;/li&gt;
&lt;li&gt;執行導入命令&lt;/li&gt;
&lt;li&gt;新增網絡設備，複製MAC地址&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="step-by-step"&gt;Step by Step&lt;/h2&gt;
&lt;h3 id="從vmware-station-導出vms"&gt;從VMware Station 導出VMS&lt;/h3&gt;
&lt;p&gt;&lt;img alt="image-20250113112019918.png" loading="lazy" src="https://www.dukehsu.com/posts/vmwaretransition/images/3686120474.png" title="image-20250113112019918.png"&gt;&lt;br&gt;
點擊導出按鈕&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20250113115714045.png" loading="lazy" src="https://www.dukehsu.com/posts/vmwaretransition/images/2307567632.png" title="image-20250113115714045.png"&gt;&lt;br&gt;
導出文件到目錄&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20250113115805201.png" loading="lazy" src="https://www.dukehsu.com/posts/vmwaretransition/images/3627284714.png" title="image-20250113115805201.png"&gt;&lt;br&gt;
等待導出到目錄&lt;/p&gt;
&lt;h3 id="通過shell下載ovf-和vmdk文件-mf"&gt;通過Shell下載ovf 和vmdk文件 mf&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;在宿主服務器中建立HFS服務，將導出的ovf文件和vmdk文件添加到HFS服務中&lt;/li&gt;
&lt;li&gt;在Proxmox 服務器中下載文件&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://10.253.253.100/Windwos10_wechat.ovf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#依次將其下載到proxmox服務器中&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image-20250113100327994.png" loading="lazy" src="https://www.dukehsu.com/posts/vmwaretransition/images/2481538126.png" title="image-20250113100327994.png"&gt;&lt;/p&gt;
&lt;p&gt;Ubuntu ID: 100&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20250113134044506.png" loading="lazy" src="https://www.dukehsu.com/posts/vmwaretransition/images/307253254.png" title="image-20250113134044506.png"&gt;&lt;/p&gt;
&lt;p&gt;Windows 10&lt;/p&gt;
&lt;h3 id="導入到proxmox"&gt;導入到Proxmox&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; root@pve:qm importovf &amp;lt;vmid&amp;gt; &amp;lt;manifest&amp;gt; &amp;lt;storage&amp;gt; [OPTIONS]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; #Create a new VM using parameters read from an OVF manifest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; #https://pve.proxmox.com/pve-docs/qm.1.html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="參數說明"&gt;參數說明：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;vmid:&amp;rdquo; 虛擬機在PVE 中的ID，Proxmox 中初始第一台VM的ID 為100， 這個100就是VMID&lt;/li&gt;
&lt;li&gt;&amp;ldquo;manifest:&amp;rdquo; ovf格式文件，從VMware Station中導出的虛擬機文件&lt;/li&gt;
&lt;li&gt;&amp;ldquo;storage:&amp;rdquo; PVE的存儲池， 例如 &lt;strong&gt;&amp;rsquo;local-lvm&amp;rsquo;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;[OPTOPNS]:&amp;rdquo; &amp;mdash;format qcow2 | raw | vmdk Target format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;詳細請參考： &lt;a href="https://pve.proxmox.com/pve-docs/qm.1.html"&gt;https://pve.proxmox.com/pve-docs/qm.1.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Wordpress ERR_TOO_MANY_REDIRECTS 解决办法</title><link>https://www.dukehsu.com/posts/wordpress_https.html</link><pubDate>Wed, 18 Dec 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/wordpress_https.html</guid><description>&lt;h2 id="故障现象"&gt;故障现象&lt;/h2&gt;
&lt;p&gt;在登录WordPress 后台时 浏览器显示 “ERR_TOO_MANY_REDIRECTS”&lt;br&gt;
导致无法正常登录后台&lt;/p&gt;
&lt;h2 id="解决思路和步骤"&gt;解决思路和步骤&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;检查Cloud Flare HTTPS 配置 - - OK&lt;/li&gt;
&lt;li&gt;检查WEB 服务器中HTTPS 配置 - - OK&lt;/li&gt;
&lt;li&gt;检查Wordpress 数据库中的 siteurl 和 home 值 是否为https 开头&lt;/li&gt;
&lt;li&gt;检查WP-Config.php 中 HTTPS = &amp;lsquo;on&amp;rsquo; 的值&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="结果验证"&gt;结果验证&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;检查Wordpress 数据库中的 siteurl 和 home 值 是否为https 开头&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这条数据因为之前关掉了https， 导致无法登录到后台去修改默认的url。所以只能进入数据库修改&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;检查WP-Config.php 中 HTTPS = &amp;lsquo;on&amp;rsquo; 的值&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;原因也是因为为了关闭https，这个值修改成了off ， 重新更改为on 之后，浏览器清除cookie ， 按F5就能正常访问了。&lt;/p&gt;</description></item><item><title>Linux 常用命令笔记</title><link>https://www.dukehsu.com/posts/linuxcommand.html</link><pubDate>Fri, 22 Nov 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/linuxcommand.html</guid><description>&lt;h2 id="linux-真好用"&gt;Linux 真好用&lt;/h2&gt;
&lt;p&gt;与Windows 相比， Linux 的效率实在太好了。为了避免自己忘记用过的命令，避免手忙脚乱又到处去找，特意写一下笔记。&lt;br&gt;
最近在忙别的~ 11月好快，就要过完了，所以及时来水一篇。&lt;/p&gt;
&lt;h2 id="vim-配置"&gt;Vim 配置&lt;/h2&gt;
&lt;p&gt;以下命令可以对齐VIM编辑器，会高亮输入光标&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt; nu &lt;span class="nv"&gt;ts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt; et &lt;span class="nv"&gt;sw&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt; cuc autoindent &amp;gt; ~/.vimrc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="修改root-密码"&gt;修改root 密码&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo passwd root &lt;span class="c1"&gt;#之后根据提示输入2次密码即可&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="网络配置"&gt;网络配置&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#显示网卡&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nmcli con show
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#修改网卡IP地址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nmcli con mod &lt;span class="s2"&gt;&amp;#34;Wire connection 1&amp;#34;&lt;/span&gt; ipv4.method manual ipv4.address 172.25.250.100/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.250 autoconnect yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#禁用和启用网卡&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nmcli con down &lt;span class="s2"&gt;&amp;#34;Wire connection 1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nmcli con up &lt;span class="s2"&gt;&amp;#34;Wire connection 1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#修改 允许root 访问 ssh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PermitRootLogin yes&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/ssh/sshd_config.d/01-permitrootlogin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemd restart sshd &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="进程管理"&gt;进程管理&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#查找名为qcloud 的进程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ps aux | grep qcloud
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#根据进程ID 强制杀死进程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kill -9 1588&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>在本地PC使用遠程PC的軟件</title><link>https://www.dukehsu.com/posts/remoteapp-tool.html</link><pubDate>Fri, 25 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/remoteapp-tool.html</guid><description>&lt;h1 id="在本地pc使用遠程pc的軟件"&gt;在本地PC使用遠程PC的軟件&lt;/h1&gt;
&lt;p&gt;起因是因為在日常工作的時候，有一個需求是要用到遠程計算機中的某一個應用程序。正常的操作是通過RD（remote desktop ）來遠程目的PC，再進行操作。這樣對我來說有點麻煩， 我想直接在我本地的PC直接執行遠程PC的應用程序。&lt;br&gt;
於是就找到了“RemoteApp Tool” ;&lt;/p&gt;
&lt;p&gt;在這篇文章中，會簡單的介紹“RemoteApp Tool”這個項目，以及它的使用方法和部分配置說明。以及使用後的一些體驗感受；&lt;/p&gt;
&lt;h2 id="remoteapp-tool"&gt;RemoteAPP Tool&lt;/h2&gt;
&lt;p&gt;RemoteAPP Tool 是Windows操作系統下的一款基於微軟遠程桌面 Microsoft Remote Desktop (RDP) 協議，可以實現“在本機桌面無縫運行遠程電腦的應用程序”。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;項目地址： &lt;a href="https://github.com/kimmknight/remoteapptool"&gt;https://github.com/kimmknight/remoteapptool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;軟件截圖&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/remoteapp-tool/images/70417507.png"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="使用步驟"&gt;使用步驟&lt;/h2&gt;
&lt;h3 id="先決條件"&gt;先決條件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;遠程電腦已經開啟遠程桌面，且用戶有訪問權限&lt;/li&gt;
&lt;li&gt;本機可以正常訪問遠程電腦&lt;/li&gt;
&lt;li&gt;能夠完美支持的操作系統版本請參加下圖，如果你的操作系統不是受支持的版本，那可能要更換遠程電腦的操作系統了&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/remoteapp-tool/images/2796479004.png"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="服務端操作"&gt;服務端操作&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;運行“RemoteAPP Tool” 安裝程序，執行安裝&lt;/li&gt;
&lt;li&gt;在“RemoteAPP Tool”主界面 點擊左下角的綠色“+”按鈕 添加你想要被遠程使用的應用軟件&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/remoteapp-tool/images/1858562483.png"&gt;&lt;/li&gt;
&lt;li&gt;在“RemoteAPP Tool” 的主界面選中剛剛添加到應用軟件，再點擊右下角的“Create client Connection” ，然後將rdp 文件拷貝到本機就可以在本機電腦使用遠程電腦的應用軟件了&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="本機操作"&gt;本機操作&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;將遠程電腦創建的RDP文件 拷貝到本機直接 運行，輸入用戶名和密碼之後就可以了&lt;/li&gt;
&lt;li&gt;當你執行的是遠程電腦的軟件的時候， 任務欄的軟件會顯示一個遠程連接的小的icon&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/remoteapp-tool/images/3609806288.png"&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="總結"&gt;總結&lt;/h2&gt;
&lt;p&gt;以上就是基本的使用指南情況&lt;br&gt;
使用情況&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;廣域網遠程的情況下&lt;br&gt;
這種聊天桌面軟件沒什麼延遲感受，但是瀏覽器看視頻，或者瀏覽器加載內容的時候會感受到延遲。&lt;/li&gt;
&lt;li&gt;局域網遠程的情況下&lt;br&gt;
體驗很好&lt;br&gt;
可以用Adobe photoshop 沒問題&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在這之前，也就是疫情期間，因為維護網吧的緣故，也是想盡一些辦法給在家無法出門的小伙伴們能遠程玩遊戲.&lt;/p&gt;
&lt;h2 id="參考"&gt;參考&lt;/h2&gt;
&lt;p&gt;Windows 10 開啟多人同時遠端桌面連線，最新1903、1909版適用- RDPWrap&lt;br&gt;
&lt;a href="https://iqmore.tw/windows-10-rdp-multiple-users-login#www.itiohubwww"&gt;https://iqmore.tw/windows-10-rdp-multiple-users-login#www.itiohubwww&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;RemoteApp Tool 开源远程神器 - 在本机运行另一台电脑上的软件 (类似PD融合模式)&lt;br&gt;
&lt;a href="https://www.iplaysoft.com/remoteapp-tool.html#www.itiohubwww"&gt;https://www.iplaysoft.com/remoteapp-tool.html#www.itiohubwww&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.caomingjun.com/use-remoteapp-to-access-apps-in-virtual-machine/"&gt;https://blog.caomingjun.com/use-remoteapp-to-access-apps-in-virtual-machine/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Deep Live cam 笔记</title><link>https://www.dukehsu.com/posts/deeplivecaminstallnote.html</link><pubDate>Fri, 06 Sep 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/deeplivecaminstallnote.html</guid><description>&lt;h1 id="deep-live-cam-笔记"&gt;Deep Live cam 笔记&lt;/h1&gt;
&lt;p&gt;项目地址： &lt;a href="https://github.com/hacksider/Deep-Live-Cam"&gt;https://github.com/hacksider/Deep-Live-Cam&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在本篇笔记中不会涉及cuda,Python,Conda,Git,等相关的计算机知识。只有步骤记录和在使用部署时遇到的问题记录。&lt;/p&gt;
&lt;p&gt;以下操作都是在Windows操作系统下进行的，我的系统版本号为：&lt;/p&gt;
&lt;p&gt;Microsoft Windows 11 Pro&lt;br&gt;
10.0.22631 Build 22631&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20240906221442070.png" loading="lazy" src="https://www.dukehsu.com/posts/deeplivecaminstallnote/images/3366180621.png" title="image-20240906221442070.png"&gt;&lt;/p&gt;
&lt;h2 id="先决条件"&gt;先决条件&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;带有Nvidia 显卡的桌面电脑或者笔记本电脑&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;稳定的网络环境&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DeepLiveCam所需的软件或编译工具&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.10.0&lt;/li&gt;
&lt;li&gt;CUDA&lt;/li&gt;
&lt;li&gt;cuDNN&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;ffmpeg&lt;/li&gt;
&lt;li&gt;Conda-Py 3.10&lt;/li&gt;
&lt;li&gt;Microsoft C++ Build Tools&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DeepLiveCam项目本体&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模型下载&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/hacksider/deep-live-cam/resolve/main/GFPGANv1.4.pth"&gt;GFPGANv1.4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/hacksider/deep-live-cam/resolve/main/inswapper_128_fp16.onnx"&gt;inswapper_128_fp16.onnx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="环境安装"&gt;环境安装&lt;/h2&gt;
&lt;h3 id="python-3100"&gt;Python 3.10.0&lt;/h3&gt;
&lt;p&gt;下载地址： &lt;a href="https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe"&gt;https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;像正常安装应用软件那样安装即可，记得勾选添加到系统变量&lt;/p&gt;
&lt;h3 id="cuda"&gt;CUDA&lt;/h3&gt;
&lt;p&gt;下载地址： &lt;a href="https://developer.nvidia.com/cuda-toolkit-archive"&gt;https://developer.nvidia.com/cuda-toolkit-archive&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完成之后在命令行运行 &lt;code&gt;nvidia-smi&lt;/code&gt; 检查显卡支持的最大CUDA 版本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvidia-smi&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image-20240906212930253.png" loading="lazy" src="https://www.dukehsu.com/posts/deeplivecaminstallnote/images/1102144062.png" title="image-20240906212930253.png"&gt;&lt;/p&gt;
&lt;h3 id="cudnn"&gt;cuDNN&lt;/h3&gt;
&lt;p&gt;需要下载CUDA支持的版本&lt;/p&gt;
&lt;p&gt;下载地址： &lt;a href="http://developer.nvidia.com/rdp/cudnn-archive"&gt;http://developer.nvidia.com/rdp/cudnn-archive&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完成之后在命令行运行 &lt;code&gt;nvcc -V&lt;/code&gt; cuDNN的版本号&lt;/p&gt;
&lt;p&gt;如果提示命令不存在，请检查系统的环境变量和用户变量&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvcc -V&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image-20240906213133117.png" loading="lazy" src="https://www.dukehsu.com/posts/deeplivecaminstallnote/images/451047190.png" title="image-20240906213133117.png"&gt;&lt;/p&gt;
&lt;h3 id="git"&gt;Git&lt;/h3&gt;
&lt;p&gt;下载地址： &lt;a href="https://git-scm.com/downloads"&gt;https://git-scm.com/downloads&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完成之后在命令行运行 &lt;code&gt;git --version&lt;/code&gt; 检查Git的版本号&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果提示命令不存在，请检查系统的环境变量和用户变量&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20240906213419363.png" loading="lazy" src="https://www.dukehsu.com/posts/deeplivecaminstallnote/images/1811688303.png" title="image-20240906213419363.png"&gt;&lt;/p&gt;
&lt;h3 id="conda"&gt;Conda&lt;/h3&gt;
&lt;p&gt;下载地址： &lt;a href="https://docs.anaconda.com/miniconda/"&gt;https://docs.anaconda.com/miniconda/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择&lt;code&gt;Miniconda3-py310_24.7.1-0-Windows-x86_64.exe&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Markdown 语法知识</title><link>https://www.dukehsu.com/posts/markdown.html</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/markdown.html</guid><description>&lt;h1 id="markdown-语法知识"&gt;Markdown 语法知识&lt;/h1&gt;
&lt;hr&gt;
&lt;h2 id="markdown-标题"&gt;Markdown 标题&lt;/h2&gt;
&lt;p&gt;使用# 的数量来标识标题的等级&lt;/p&gt;
&lt;p&gt;/# 一级标题&lt;/p&gt;
&lt;p&gt;/## 二级标题&lt;/p&gt;
&lt;p&gt;以此类推&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="markdown-段落"&gt;Markdown 段落&lt;/h2&gt;
&lt;p&gt;段落没有特殊的格式，一般直接回车就是一个段落。但是你可以在句子末尾后面留2格空格即可&lt;br&gt;
是的吧&lt;/p&gt;
&lt;h2 id="markdown-分割线"&gt;Markdown 分割线&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;***
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;* * *
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*****
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- - -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------------------&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;以上符号都可以作为分割线使用，但是分割线中不可有任何内容&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="markdown-删除线"&gt;Markdown 删除线&lt;/h2&gt;
&lt;p&gt;使用波浪线括住内容，即可实现删除线的样式。&lt;/p&gt;
&lt;p&gt;格式&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;itiohub.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GOOGLE.COM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~~BAIDU.COM~~&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;效果&lt;/p&gt;
&lt;p&gt;ITIOHUB.COM&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; GOOGLE.COM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ~~BAIDU.COM~~&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="markdown-下划线"&gt;Markdown 下划线&lt;/h2&gt;
&lt;p&gt;使用 HTML &lt;code&gt;&amp;lt;u&amp;gt;&lt;/code&gt; 标签实现&lt;/p&gt;
&lt;p&gt;格式&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;u&amp;gt; 看我有下划线般的滑板鞋哦&amp;lt;/u&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;效果&lt;/p&gt;
&lt;p&gt;看我有下划线般的滑板鞋哦&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="markdown-脚注"&gt;Markdown 脚注&lt;/h2&gt;
&lt;p&gt;脚注可以用来对文章内容做补充说明，相当于word的引用，鼠标移动到你要做脚注的词汇中，就会显示。或者写refrence 时可以用到， 格式如下&lt;/p&gt;
&lt;p&gt;格式&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[^我是可爱的脚注~]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;又一个效果示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;究竟什么是真理呢？ [^真理]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[^真理]:真理是指与事实相符合的观点、陈述或信念。在哲学和认知科学中，真理通常被定义为与现实相一致的陈述或信念。真理是客观存在的，不受主观看法或情感影响，它是独立于个人观点的普遍准则。人们通过逻辑推理、科学方法和经验观察来寻求真理，以便更好地理解世界和解决问题。然而，有时真理可能是主观的，因为不同的人可能有不同的看法和信念。在哲学上，对真理的探讨是一个复杂而深刻的议题，各种学派和思想家对真理的本质和性质有着不同的见解。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;究竟什么是真理呢？ &lt;a href="https://www.dukehsu.com/posts/markdown.html#fn-1"&gt;1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="./image-20240717153614897" loading="lazy" src="images/image-20240717153614897.png" title="./image-20240717153614897"&gt; (图片待补全)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="markdown-列表"&gt;Markdown 列表&lt;/h2&gt;
&lt;h4 id="有序列表"&gt;有序列表&lt;/h4&gt;
&lt;p&gt;意思就是有序号的，例如，1，2，3，4，这样的呀~ 记得在序号后面加一个&lt;code&gt;.&lt;/code&gt; 并在&lt;code&gt;.&lt;/code&gt; 后面留一个空格哟&lt;/p&gt;
&lt;p&gt;格式&lt;/p&gt;</description></item><item><title>离线安装MicroSoft APP Store 中的应用</title><link>https://www.dukehsu.com/posts/msappstore.html</link><pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/msappstore.html</guid><description>&lt;h1 id="离线安装microsoft-app-store-中的应用"&gt;离线安装MicroSoft APP Store 中的应用&lt;/h1&gt;
&lt;h2 id="先决条件"&gt;先决条件&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;操作系统版本在Windows10 或者以上&lt;/li&gt;
&lt;li&gt;能正常访问互联网&lt;/li&gt;
&lt;li&gt;PowerShell&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="步骤概要"&gt;步骤概要&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在MircroSoft APP Store 获取应用APP 连接&lt;/li&gt;
&lt;li&gt;下载APP应用&lt;/li&gt;
&lt;li&gt;在PowerShell中添加应用&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="操作步骤"&gt;操作步骤&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开Microsoft Store 页面搜索你想要下载的APP&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apps.microsoft.com/home?hl=en-us&amp;amp;gl=US"&gt;https://apps.microsoft.com/home?hl=en-us&amp;amp;gl=US&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;例如Spotify：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20240731180051342.png" loading="lazy" src="https://www.dukehsu.com/posts/msappstore/images/2820793894.png" title="image-20240731180051342.png"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;将地址栏复制 去除？ 后面的内容&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;p&gt;粘贴到 &lt;a href="https://store.rg-adguard.net/"&gt;https://store.rg-adguard.net/&lt;/a&gt; 网址的搜索栏中 点击搜索&lt;/p&gt;
&lt;p&gt;右侧选择框中的四个选项分别代表：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fast：Windows Insider Fast 通道，属于最新开发版；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Slow：Windows Insider Slow 通道，相对 Fast 较稳定；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; RP：Release Review 也是微软软件发布的一个通道，软件成熟度较高，待 RP 过后，就会正式发布。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Retail：指正式发布的包，也是系统默认的等级。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="image-20240731180208628.png" loading="lazy" src="https://www.dukehsu.com/posts/msappstore/images/3143933977.png" title="image-20240731180208628.png"&gt;&lt;/p&gt;
&lt;p&gt;点击appx格式的即可下载&lt;/p&gt;
&lt;p&gt;文件拓展名为 &lt;code&gt;.eappx&lt;/code&gt;、&lt;code&gt;.appxbundle&lt;/code&gt;、&lt;code&gt;.emsix&lt;/code&gt;、&lt;code&gt;.emsixbundle&lt;/code&gt; 的均为加密安装包，如果没有购买许可是无法直接安装的（比如付费应用或游戏）&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;在PowerShell中安装APP&lt;/p&gt;
&lt;p&gt;在Powershell中输入命令&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 使用命令 Add-AppxPackage -Path [文件路径]，比如
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Add-AppxPackage -Path &amp;#34;C:\Tools\SpotifyAB.SpotifyMusic_1.192.647.0_x86__zpdnekdrzrea0.Appx&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image-20240731180614918.png" loading="lazy" src="https://www.dukehsu.com/posts/msappstore/images/1134076033.png" title="image-20240731180614918.png"&gt;&lt;/p&gt;
&lt;p&gt;接着 你就可以在开始菜单栏中看到你刚刚安装的应用了&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20240731180823501.png" loading="lazy" src="https://www.dukehsu.com/posts/msappstore/images/1368708800.png" title="image-20240731180823501.png"&gt;&lt;/p&gt;
&lt;p&gt;参考：&lt;/p&gt;</description></item><item><title>Setting Up SMB Service on Ubuntu 18.04</title><link>https://www.dukehsu.com/posts/ubuntu_smb.html</link><pubDate>Thu, 25 Jul 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ubuntu_smb.html</guid><description>&lt;h1 id="setting-up-smb-service-on-ubuntu-1804"&gt;Setting Up SMB Service on Ubuntu 18.04&lt;/h1&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install SMB and enable the SMB server and restart it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add an SMB user.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Edit the SMB configuration file.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Permission configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read (R)&lt;/li&gt;
&lt;li&gt;Read/Write (RW)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Firewall configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Visit the SMB server on your local network.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="install-smb-server"&gt;Install SMB server&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install samba
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; smbd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart smbd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="add-an-smb-user"&gt;Add an SMB user&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo smbpasswd -a username&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="edit-the-smb-configuration-file"&gt;Edit the SMB configuration file&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo vim /etc/samb/smb.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;WiKiFolder_for_Client&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;comment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; Shared Folder
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; /home/username/wiki
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;browseable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;valid &lt;span class="nv"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; @username&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;[WiKiFolder_for_Client]&lt;/code&gt;: The name of the shared folder being defined.&lt;/p&gt;</description></item><item><title>Flash OpenIPC firmware onto SigmaStar SSC335 SoC and Sony IMX307 IPC module.</title><link>https://www.dukehsu.com/posts/openipc_ssc335.html</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/openipc_ssc335.html</guid><description>&lt;h2 id="flash-openipc-firmware-onto-sigmastar-ssc335-soc-and-sony-imx307-ipc-module"&gt;Flash OpenIPC firmware onto SigmaStar SSC335 SoC and Sony IMX307 IPC module.&lt;/h2&gt;
&lt;h3 id="requirements"&gt;Requirements&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;IPC module&lt;/li&gt;
&lt;li&gt;USB to TTL cable&lt;/li&gt;
&lt;li&gt;Windows laptop or computer&lt;/li&gt;
&lt;li&gt;Running a TFTP server on your Windows computer&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="results"&gt;Results&lt;/h3&gt;
&lt;p&gt;&lt;img alt="image-20240712185451240.png" loading="lazy" src="https://www.dukehsu.com/posts/openipc_ssc335/images/2158464686.png" title="image-20240712185451240.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20240712190215930.png" loading="lazy" src="https://www.dukehsu.com/posts/openipc_ssc335/images/319271948.png" title="image-20240712190215930.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20240712190239974.png" loading="lazy" src="https://www.dukehsu.com/posts/openipc_ssc335/images/3131038306.png" title="image-20240712190239974.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image-20240712190443909.png" loading="lazy" src="https://www.dukehsu.com/posts/openipc_ssc335/images/1791547843.png" title="image-20240712190443909.png"&gt;&lt;/p&gt;
&lt;h3 id="ipc-module-specifications"&gt;IPC module specifications&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Flash:&lt;br&gt;
GD25Q64CSIG:&lt;br&gt;
&lt;a href="https://www.digikey.cn/zh/products/detail/gigadevice-semiconductor-hk-limited/GD25Q64CSIG/9484942"&gt;https://www.digikey.cn/zh/products/detail/gigadevice-semiconductor-hk-limited/GD25Q64CSIG/9484942&lt;/a&gt;&lt;br&gt;
Soc:&lt;br&gt;
SigmaStar SSC335&lt;br&gt;
&lt;a href="https://linux-chenxing.org/infinity6/ssc335_pb_v03.pdf"&gt;https://linux-chenxing.org/infinity6/ssc335_pb_v03.pdf&lt;/a&gt;&lt;br&gt;
Sensor:&lt;br&gt;
1/2.8&amp;quot; 2MP CMOS Sony IMX307&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="lan-windows-computer-tftp-server-directory-structure"&gt;LAN Windows computer TFTP SERVER directory structure&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The &amp;ldquo;bin&amp;rdquo; directory serves as the current directory for the TFTP server, used to store firmware files.&lt;/li&gt;
&lt;li&gt;Disable the firewall on the Windows computer and run tftp64.exe.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/openipc_ssc335/images/2070423656.png"&gt;&lt;/p&gt;</description></item><item><title>Share an Old Printer on Your Local Network - CUPS</title><link>https://www.dukehsu.com/posts/cupsinstall.html</link><pubDate>Sun, 16 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/cupsinstall.html</guid><description>&lt;p&gt;In this article, I will share with you about my second time installing CUPS on Ubuntu.&lt;/p&gt;
&lt;h2 id="requriement"&gt;Requriement&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 18.04 LTS Install on an Old Computer&lt;/li&gt;
&lt;li&gt;Canon E410 Series Printer&lt;/li&gt;
&lt;li&gt;Internet&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="cups-installation-and-configuration-step-by-step"&gt;CUPS Installation and Configuration Step by Step&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Install CUPS on your system&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#install cups&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install cups cups-pdf cups-bsd &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Back up the configuration file&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#copy configuration file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp /etc/cups/cupsd.conf cupsd.conf.bak&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Editing the CUPS configuration file&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#add user simith to lpadmin group&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG lpadmin simith
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#edit cupsd.conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo vim cupsd.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Edited cupsd.conf contents.&lt;br&gt;
（Configuration options not mentioned should be left as default.）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#allow access port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Port &lt;span class="m"&gt;63100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LogLevel warn
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PageLogFormat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MaxLogSize &lt;span class="m"&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show shared printers on the local network.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Browsing on
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BrowseLocalProtocols dnssd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Web interface setting...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WebInterface Yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to the server...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Order Allow,deny
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow From 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow From 192.168.0.0/16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to the admin pages...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /admin&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#access user simith can visit admin page&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Require user simith
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Order Allow,deny
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow From 192.168.0.0/16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to configuration files...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /admin/conf&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; AuthType Default
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Require user simith
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Order allow,deny
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow From 192.168.0.0/16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to log files...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /admin/log&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; AuthType Default
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Require user simith
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Order allow,deny
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow 192.168.0.0/16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Location&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Restart CUPS service and add to starup&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart cups
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudp systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; cups&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="end"&gt;End&lt;/h3&gt;
&lt;p&gt;Finally, you can visit the Ubuntu IP address and configuration&lt;/p&gt;</description></item><item><title>Nssm在Windows操作系统中安装系统服务</title><link>https://www.dukehsu.com/posts/nssminsallation.html</link><pubDate>Sun, 02 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/nssminsallation.html</guid><description>&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/nssminsallation/images/2727162793.png"&gt;
因为Frp client 之前是使用批处理启动的，所以每次电脑重启之后，需要等到登录之后才能启动。
目的是要操作系统启动之后就直接启动Frp client。为了解决这个问题，所以使用nssm来将Frp client安装到windows的服务，使它作为服务启动。这样就可以实现当电脑启动之后就可以直接启动。&lt;/p&gt;
&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;先决条件&lt;/li&gt;
&lt;li&gt;安装过程&lt;/li&gt;
&lt;li&gt;验证和引用&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="先决条件"&gt;先决条件&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Frp 服务端 与客户端
&lt;a href="https://github.com/fatedier/frp"&gt;https://github.com/fatedier/frp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;nssm 程序
&lt;a href="https://nssm.cc/download"&gt;https://nssm.cc/download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;根据Frp服务端的信息配置好相对应的Frp客户端信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="安装过程"&gt;安装过程&lt;/h4&gt;
&lt;h5 id="step-1"&gt;Step 1&lt;/h5&gt;
&lt;p&gt;在 Windows 操作系统下配置好 Frp 客户端信息之后，使用命令行进入 nssm 目录，如下图：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/nssminsallation/images/387264339.png"&gt;&lt;/p&gt;
&lt;p&gt;注：请根据实际情况进入相对应的目录。&lt;/p&gt;
&lt;h5 id="step-2"&gt;Step 2&lt;/h5&gt;
&lt;p&gt;通过命令行安装服务：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nssm install MyFirstService&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="step-3"&gt;Step 3&lt;/h5&gt;
&lt;p&gt;输入 Step 2 的命令后，系统会打开 nssm GUI。填写服务的相关信息即可：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/nssminsallation/images/980108514.png"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;程序路径&lt;/li&gt;
&lt;li&gt;程序工作目录&lt;/li&gt;
&lt;li&gt;额外参数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;顶部的 “Details” 是服务的详细描述和设置。填完以上信息后，服务就安装完成了。记得以管理员模式运行 nssm。&lt;/p&gt;
&lt;h4 id="验证和应用"&gt;验证和应用&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;在windows 的命令行输入“services.msc” 打开windows 的服务管理窗口
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/nssminsallation/images/2352057980.png"&gt;&lt;/li&gt;
&lt;li&gt;通过上图就可以判断 服务已经添加成功。 另外你还可以在frp 根目录下查看frp运行的日志。&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="引用"&gt;引用&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Frp 服务端 与客户端
&lt;a href="https://github.com/fatedier/frp"&gt;https://github.com/fatedier/frp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;nssm 程序
&lt;a href="https://nssm.cc/download"&gt;https://nssm.cc/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是使用nssm 在windows下，快速的创建服务的简单使用笔记。&lt;/p&gt;</description></item><item><title>《特戰英豪》VAN9005/ VAN9003错误</title><link>https://www.dukehsu.com/posts/valoranterror.html</link><pubDate>Mon, 18 Mar 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/valoranterror.html</guid><description>&lt;h4 id="简介"&gt;简介:&lt;/h4&gt;
&lt;p&gt;这篇文章记录了自己在解决VALORANT 游戏在Windows 11上VALORANT的反外挂程序&amp;quot;Riot Vanguard&amp;quot;错误代码: VAN9005 or VAN9003的处理过程.&lt;/p&gt;
&lt;h4 id="参考"&gt;参考:&lt;/h4&gt;
&lt;p&gt;在Windows 10作業系統上調整虛擬化型安全性（簡稱VBS）設定 | VAN9005 |《特戰英豪》&lt;br&gt;
&lt;a href="https://support-valorant.riotgames.com/hc/zh-tw/articles/16941220890899-%E5%9C%A8Windows-10%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1%E4%B8%8A%E8%AA%BF%E6%95%B4%E8%99%9B%E6%93%AC%E5%8C%96%E5%9E%8B%E5%AE%89%E5%85%A8%E6%80%A7-%E7%B0%A1%E7%A8%B1VBS-%E8%A8%AD%E5%AE%9A-VAN9005-%E7%89%B9%E6%88%B0%E8%8B%B1%E8%B1%AA"&gt;https://support-valorant.riotgames.com/hc/zh-tw/articles/16941220890899-%E5%9C%A8Windows-10%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1%E4%B8%8A%E8%AA%BF%E6%95%B4%E8%99%9B%E6%93%AC%E5%8C%96%E5%9E%8B%E5%AE%89%E5%85%A8%E6%80%A7-%E7%B0%A1%E7%A8%B1VBS-%E8%A8%AD%E5%AE%9A-VAN9005-%E7%89%B9%E6%88%B0%E8%8B%B1%E8%B1%AA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows 11「VAN9001」或「VAN 9003」錯誤疑難排解 |《特戰英豪》&lt;br&gt;
&lt;a href="https://support-valorant.riotgames.com/hc/zh-tw/articles/10088435639571-Windows-11-VAN9001-%E6%88%96-VAN-9003-%E9%8C%AF%E8%AA%A4%E7%96%91%E9%9B%A3%E6%8E%92%E8%A7%A3-%E7%89%B9%E6%88%B0%E8%8B%B1%E8%B1%AA"&gt;https://support-valorant.riotgames.com/hc/zh-tw/articles/10088435639571-Windows-11-VAN9001-%E6%88%96-VAN-9003-%E9%8C%AF%E8%AA%A4%E7%96%91%E9%9B%A3%E6%8E%92%E8%A7%A3-%E7%89%B9%E6%88%B0%E8%8B%B1%E8%B1%AA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows 11 关闭基于虚拟化的安全(VBS) 问题疑惑&lt;br&gt;
&lt;a href="https://answers.microsoft.com/zh-hans/windows/forum/all/windows-11/3864f584-4090-4793-8a5b-34fd73605c91"&gt;https://answers.microsoft.com/zh-hans/windows/forum/all/windows-11/3864f584-4090-4793-8a5b-34fd73605c91&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="解决过程"&gt;解决过程:&lt;/h4&gt;
&lt;p&gt;客户操作系统为Windows11, 笔记本电脑支持TPM2.0&lt;br&gt;
根据上面官方支持文档操作,打开TPM2.0之后.&lt;br&gt;
通过&lt;strong&gt;msinfo32&lt;/strong&gt; 命令查看安全启动状态,仍然显示未开启.Riot Vanguard 无法正常运行.&lt;br&gt;
于是将客户的操作系统更换成Windows10 关闭VBS 之后就可以正常运行游戏了.&lt;/p&gt;
&lt;h4 id="总结"&gt;总结:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;如果你的操作系统是Windows11 ,请开启TPM2.0, 并使用UEFI启动,通过&lt;strong&gt;msinfo32&lt;/strong&gt; 命令查看安全启动状态.如果已经是开启状态则可以正常进行游戏.&lt;/li&gt;
&lt;li&gt;如果你是操作系统是Windows10 ,请直接关闭VBS,卸载Riot Vanguard 重新进游戏测试即可.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>在C sharp中使用IniParser对ini配置文件进行读写操作</title><link>https://www.dukehsu.com/posts/iniparserlog.html</link><pubDate>Mon, 18 Mar 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/iniparserlog.html</guid><description>&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/iniparserlog/images/3034772590.png"&gt;&lt;/p&gt;
&lt;h4 id="简介"&gt;简介:&lt;/h4&gt;
&lt;p&gt;在这篇文章记录了在C sharp 编程中使用IniParse 对ini配置文件进行读写的操作.&lt;/p&gt;
&lt;h4 id="读取ini文件中的mysql数据库配置文件进行数据库连接"&gt;读取ini文件中的Mysql数据库配置文件进行数据库连接:&lt;/h4&gt;
&lt;p&gt;如果你想从一个 .ini 文件中读取配置信息，可以使用第三方库，如 IniParser。以下是如何使用 IniParser 库来实现：&lt;/p&gt;
&lt;p&gt;首先，你需要使用 NuGet 包管理器安装 IniParser。在 Visual Studio 中，可以通过 NuGet 包管理器控制台执行以下命令：&lt;br&gt;
&lt;code&gt;Install-Package IniParser&lt;/code&gt;&lt;br&gt;
然后，创建一个 config.ini 文件，并添加以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Database]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Server=your_server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;User=your_user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Password=your_password
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Database=your_database&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接着，修改你的 mysqldata 类如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IniParser&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IniParser.Model&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;MySql.Data.MySqlClient&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Sunny.UI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;ExpressManageSystem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;internal&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;mysqldata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;configFile&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;config.ini&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="n"&gt;FileIniDataParser&lt;/span&gt; &lt;span class="n"&gt;parser&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;FileIniDataParser&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="n"&gt;IniData&lt;/span&gt; &lt;span class="n"&gt;configData&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configFile&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;connection_string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;get&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;databaseSection&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;configData&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Database&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;server={databaseSection[&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;Server&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;]};user={databaseSection[&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;]};password={databaseSection[&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;Password&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;]};database={databaseSection[&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;Database&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;]}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;MySqlConnection&lt;/span&gt; &lt;span class="n"&gt;mySqlConnection&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;MySqlConnection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connection_string&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//连接数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;connect_db&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mySqlConnection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Open&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UIMessageBox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//关闭数据库链接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;close_db&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mySqlConnection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UIMessageBox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在这个修改后的代码中，使用了 IniParser 库来读取 config.ini 文件中的配置信息。这样，你就可以通过修改 config.ini 文件来更改数据库连接信息，而无需修改代码。&lt;/p&gt;</description></item><item><title>MySQL ERROR 1045 (28000) Access denied for user 解决办法</title><link>https://www.dukehsu.com/posts/mysql1045error.html</link><pubDate>Sat, 10 Feb 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/mysql1045error.html</guid><description>&lt;p&gt;记得上次被MySQL教训还是在10年前，如今又一次被MySQL折腾一次。早9点开始到现在下午5点。总算是把MySQL装好在Windows10上了。&lt;/p&gt;
&lt;h3 id="mysql安装"&gt;MySQL安装&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://dev.mysql.com/downloads/installer/"&gt;https://dev.mysql.com/downloads/installer/&lt;/a&gt;&lt;br&gt;
选择你要的版本安装即可&lt;/p&gt;
&lt;p&gt;一切安装完成之后，通过CMD登录或者Navicat 登录会提示&lt;br&gt;
&lt;code&gt;---date [ERROR] [MY-011084] [Server] Keyring migration failed.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;---date [ERROR] [MY-010119] [Server] Aborting&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;于是跟着stackoverflow 开始操作&lt;br&gt;
&lt;a href="https://stackoverflow.com/questions/51448958/mysql-server-8-0-keyring-migration-error-at-login"&gt;https://stackoverflow.com/questions/51448958/mysql-server-8-0-keyring-migration-error-at-login&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;跟着Sabito的操作可以直接在cmd中登录，但是当启动WindowsService再来用cmd登录的时候会出现以下错误&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ERROR 1045 (28000) Access denied for user root@localhost (using password: YES)&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="解决办法"&gt;解决办法&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;停止MySQL服务&lt;/li&gt;
&lt;li&gt;新增一个文本文档命名为‘mysqlinit.txt’&lt;br&gt;
在文档中写入以下内容&lt;br&gt;
&lt;code&gt;ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'&lt;/code&gt;&lt;br&gt;
将该文档拷贝到&lt;strong&gt;C:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;CMD管理员权限进入MySQL Server 的 bin目录&lt;br&gt;
在cmd窗口输入以下命令 然后回车&lt;br&gt;
&lt;code&gt;--defaults-file=&amp;quot;C:\ProgramData\MySQL\MySQL Server 8.0\my.ini&amp;quot; --init-file=C:\\mysqlinit.txt --console&lt;/code&gt;&lt;br&gt;
等待命令执行完成，按Ctrl+C 退出CMD 并关闭&lt;/li&gt;
&lt;li&gt;重新启动MySQL服务&lt;br&gt;
这个时候就可以使用CMD或者Navicat 登录了&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/mysql1045error/images/1773920245.png"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="参考"&gt;参考&lt;/h3&gt;
&lt;p&gt;How to Fix &amp;quot; access denied for user &amp;lsquo;root&amp;rsquo;@&amp;rsquo;localhost&amp;rsquo; (using password: yes) &amp;quot; in MySQL Window 10&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=8l2NUwm-OIk"&gt;https://www.youtube.com/watch?v=8l2NUwm-OIk&lt;/a&gt;&lt;/p&gt;</description></item><item><title>使用Arduino IDE对ESP32S3开发板进行开发</title><link>https://www.dukehsu.com/posts/esp32s3int.html</link><pubDate>Thu, 08 Feb 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/esp32s3int.html</guid><description>&lt;p&gt;这篇笔记主要记录了作为一个新手如何使用Arduino IDE对ESP32S3开发板进行开发,以及ESP32连接到电脑,在Arduino IDE 中添加附加开发板, 通过示例代码点亮ESP32中的LED灯 .以下操作都是在Windows系统环境中进行.&lt;/p&gt;
&lt;h3 id="准备工作"&gt;准备工作&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ESP32 S3 开发板&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arduino IDE&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;USB To Type C&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows 操作系统电脑&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以正常访问Github的互联网环境&lt;/p&gt;
&lt;h3 id="步骤"&gt;步骤&lt;/h3&gt;
&lt;h5 id="arduino-ide-下载"&gt;Arduino IDE 下载&lt;/h5&gt;
&lt;p&gt;Arduino 下载地址&lt;br&gt;
&lt;a href="https://www.arduino.cc/en/software"&gt;https://www.arduino.cc/en/software&lt;/a&gt;&lt;br&gt;
选择Windows操作系统下载&lt;/p&gt;
&lt;p&gt;安装好之后如下&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/esp32s3int/images/3692928640.png"&gt;&lt;/p&gt;
&lt;h5 id="在ide中添加附加开发板"&gt;在IDE中添加附加开发板&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击 “文件”-“首选项”，在 “附加开发板管理器网址” 中输入以下地址&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Espressif ESP32: &lt;a href="https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json"&gt;https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如下图所示&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/esp32s3int/images/8909271.png"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击 “工具”-“开发板”-“开发板管理器”，在 “开发板管理器” 中搜索 “ESP32”,选择&amp;quot;esp32 by Espressif Systems&amp;quot; 点击安装即可&lt;br&gt;
如下图所示&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/esp32s3int/images/2299094174.png"&gt;&lt;br&gt;
等待安装完成之后就可以开始连接ESP32 开发板.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="将esp32开发板连接到你的电脑"&gt;将ESP32开发板连接到你的电脑&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;驱动程序安装&lt;br&gt;
由于我使用的是USB A TO Type C, ESP开发板上用的是CH343p芯片,所以要提前安装驱动&lt;br&gt;
源地官方 驱动地址:&lt;br&gt;
&lt;a href="http://vcc-gnd.com/"&gt;http://vcc-gnd.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;将设备通过USB A TO Type C的数据线插入到电脑的USB口&lt;br&gt;
切记使用正确的数据线,不是电源线,电源线里面只有2芯,无法传输数据&lt;/li&gt;
&lt;li&gt;在设备管理器中检查开发板是否连接正常&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/esp32s3int/images/4190968287.png"&gt;&lt;br&gt;
如果你可以在你电脑的设备管理器中的端口选项中看到该设备,那说明ESP32开发板已经正确的连接到你的电脑了&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="在arduino-ied中连接开发板并使用示例"&gt;在Arduino IED中连接开发板并使用示例&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;通过Arduino IED连接开发板&lt;br&gt;
在Arduino IDE左上角点击&amp;quot;选择开发板&amp;quot; 在&amp;quot;开发板&amp;quot;下方搜索&amp;quot;esp32s3&amp;quot; 并且找到相对应的开发板型号, 在右侧选择端口,点击确定即可.&lt;br&gt;
如下图所示.&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/esp32s3int/images/1482773676.png"&gt;&lt;/p&gt;</description></item><item><title>Google Map 笔记</title><link>https://www.dukehsu.com/posts/googlemapnote.html</link><pubDate>Sun, 07 Jan 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/googlemapnote.html</guid><description>&lt;h2 id="使用google-map的链接-当用户点击时直接导航到该地址"&gt;使用Google map的链接， 当用户点击时直接导航到该地址&lt;/h2&gt;
&lt;p&gt;在Google Maps上生成一个导航链接可以通过在URL中使用特定的参数来实现。以下是一个示例链接，当用户点击它时，将直接导航到指定的地址：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://www.google.com/maps/dir/?api=1&amp;amp;destination=目标地址&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;请将 目标地址 替换为您想要导航到的确切地址。确保使用百分号编码（percent encoding）处理地址中的特殊字符。例如，空格可以编码为 %20。&lt;/p&gt;
&lt;p&gt;例如，如果您想导航到纽约时代广场，链接可能如下所示：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://www.google.com/maps/dir/?api=1&amp;amp;destination=Times%20Square,%20New%20York,%20NY&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;用户点击这个链接后，将被重定向到Google Maps应用程序或网页版，并显示从当前位置到目标地址的导航路线。&lt;/p&gt;
&lt;p&gt;请注意，Google Maps API key（api=1参数中的API密钥）是可选的，但如果您拥有API密钥，可以使用它以获得更多的功能和更高的配额。&lt;/p&gt;
&lt;h3 id="使用google-map的链接-当用户点击时直接导航到该坐标"&gt;使用Google map的链接， 当用户点击时直接导航到该坐标&lt;/h3&gt;
&lt;p&gt;在Google Maps上生成一个导航链接，直接导航到指定坐标，您可以使用以下URL格式：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://www.google.com/maps/dir/?api=1&amp;amp;destination=纬度,经度&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;将 纬度 和 经度 替换为您要导航的具体坐标。例如：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://www.google.com/maps/dir/?api=1&amp;amp;destination=37.7749,-122.4194&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这个链接将导航到纬度37.7749，经度-122.4194的位置。用户点击这个链接后，将被重定向到Google Maps应用程序或网页版，并显示从当前位置到指定坐标的导航路线。&lt;/p&gt;
&lt;p&gt;与之前提到的一样，api=1 参数是可选的，但如果您拥有Google Maps API密钥，可以使用它以获得更多的功能和更高的配额。&lt;/p&gt;
&lt;h3 id="使用waze导航-当用户点击链接时直接导航到该地址或者坐标"&gt;使用WAZE导航， 当用户点击链接时直接导航到该地址或者坐标&lt;/h3&gt;
&lt;p&gt;Waze使用不同的URL参数来实现导航。以下是使用Waze进行导航的基本URL格式：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://www.waze.com/ul?ll=纬度,经度&amp;amp;navigate=yes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;将 纬度 和 经度 替换为您要导航的具体坐标。例如：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://www.waze.com/ul?ll=37.7749,-122.4194&amp;amp;navigate=yes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这个链接将导航到纬度37.7749，经度-122.4194的位置。与Google Maps类似，用户点击这个链接后，将被重定向到Waze应用程序并显示从当前位置到指定坐标的导航路线。&lt;/p&gt;</description></item><item><title>Windows操作系统下必备常用软件清单</title><link>https://www.dukehsu.com/posts/windows10popularsoftware.html</link><pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windows10popularsoftware.html</guid><description>&lt;p&gt;重新安装Windows操作系统之后,有时候会忘记安装一些软件,索性今天写一篇笔记来专门记录.&lt;br&gt;
在这篇文章中,我会分成以下几个类目来列出Windows操作系统下必备&amp;amp;常用的软件清单,以及软件的官方链接或者Github页面&lt;/p&gt;
&lt;h3 id="软件类目"&gt;软件类目&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Windows常用运行库&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DirectX&lt;br&gt;
&lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=35"&gt;https://www.microsoft.com/en-us/download/details.aspx?id=35&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft Visual 运行库&lt;br&gt;
&lt;a href="https://www.ghxi.com/yxkhj.html"&gt;https://www.ghxi.com/yxkhj.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;办公软件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Office365 &amp;amp; Microsoft&lt;br&gt;
&lt;a href="https://www.microsoft.com/zh-cn/download/office"&gt;https://www.microsoft.com/zh-cn/download/office&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WPS 金山软件 国内版&lt;br&gt;
&lt;a href="https://www.wps.cn/"&gt;https://www.wps.cn/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WPS 海外版&lt;br&gt;
&lt;a href="https://www.wps.com/"&gt;https://www.wps.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Typora&lt;br&gt;
&lt;a href="https://typora.io/"&gt;https://typora.io/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;系统增强&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dism++&lt;br&gt;
&lt;a href="https://github.com/Chuyu-Team/Dism-Multi-language"&gt;https://github.com/Chuyu-Team/Dism-Multi-language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wub&lt;br&gt;
&lt;a href="https://www.itiohub.com/log/windowsUpdateBlock.html"&gt;https://www.itiohub.com/log/windowsUpdateBlock.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;BandiZIP&lt;br&gt;
&lt;a href="https://cn.bandisoft.com/bandizip/"&gt;https://cn.bandisoft.com/bandizip/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;7z&lt;br&gt;
&lt;a href="https://www.7-zip.org/"&gt;https://www.7-zip.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Snipaste&lt;br&gt;
&lt;a href="https://www.snipaste.com/"&gt;https://www.snipaste.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anydesk&lt;br&gt;
&lt;a href="https://www.anydesk.com"&gt;https://www.anydesk.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;社交通讯&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Messenger&lt;br&gt;
&lt;a href="https://www.messenger.com/"&gt;https://www.messenger.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Telegram&lt;br&gt;
&lt;a href="https://www.telegram.org"&gt;https://www.telegram.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WhatsAPP&lt;br&gt;
&lt;a href="https://www.whatsapp.com/"&gt;https://www.whatsapp.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LINE&lt;br&gt;
&lt;a href="https://line.me/en/"&gt;https://line.me/en/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;QQ&lt;br&gt;
&lt;a href="https://im.qq.com/pcqq"&gt;https://im.qq.com/pcqq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;微信&lt;br&gt;
&lt;a href="https://www.wechat.com/"&gt;https://www.wechat.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;媒体应用&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VLC&lt;br&gt;
&lt;a href="https://www.videolan.org/vlc/"&gt;https://www.videolan.org/vlc/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Potplayer&lt;br&gt;
&lt;a href="https://potplayer.daum.net/"&gt;https://potplayer.daum.net/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Spotify&lt;br&gt;
&lt;a href="https://open.spotify.com"&gt;https://open.spotify.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SoundCloud&lt;br&gt;
&lt;a href="https://soundcloud.com/"&gt;https://soundcloud.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;龙卷风收音机&lt;br&gt;
&lt;a href="https://cradio.live/"&gt;https://cradio.live/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OBS Studio&lt;br&gt;
&lt;a href="https://obsproject.com/"&gt;https://obsproject.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SAO FM&lt;br&gt;
&lt;a href="https://sao.fm/"&gt;https://sao.fm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;街声&lt;br&gt;
&lt;a href="https://streetvoice.com/"&gt;https://streetvoice.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;编程工具&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notepad++&lt;br&gt;
&lt;a href="https://notepad-plus-plus.org/"&gt;https://notepad-plus-plus.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;VS Code online&lt;br&gt;
&lt;a href="https://vscode.dev/"&gt;https://vscode.dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;VS Code desktop&lt;br&gt;
&lt;a href="https://code.visualstudio.com/"&gt;https://code.visualstudio.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Visual Studio 2022&lt;br&gt;
&lt;a href="https://visualstudio.microsoft.com/zh-hans/downloads/"&gt;https://visualstudio.microsoft.com/zh-hans/downloads/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PyCharm&lt;br&gt;
&lt;a href="https://www.jetbrains.com/pycharm/"&gt;https://www.jetbrains.com/pycharm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Scratch 3&lt;br&gt;
&lt;a href="https://scratch.mit.edu/"&gt;https://scratch.mit.edu/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mind+&lt;br&gt;
&lt;a href="https://mindplus.cc/"&gt;https://mindplus.cc/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;3D绘图&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Designspark Mechanical&lt;br&gt;
&lt;a href="https://www.rs-online.com/designspark/mechanical-software"&gt;https://www.rs-online.com/designspark/mechanical-software&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;照片编辑和管理&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adobe Lightroom Classic&lt;br&gt;
&lt;a href="https://www.adobe.com/products/photoshop-lightroom-classic.html"&gt;https://www.adobe.com/products/photoshop-lightroom-classic.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Adobe Photoshop&lt;br&gt;
&lt;a href="https://www.adobe.com/products/photoshop.html"&gt;https://www.adobe.com/products/photoshop.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;BandiView&lt;br&gt;
&lt;a href="https://cn.bandisoft.com/bandiview/"&gt;https://cn.bandisoft.com/bandiview/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="结尾"&gt;结尾&lt;/h3&gt;
&lt;p&gt;希望大家可以多多支持原版,正版软件,从官方渠道购买或下载,避免给自己带来不必要的损失.&lt;br&gt;
也推荐大家在使用windows的时候, 使用微软应用商店去安装下载应用,那样就会减少流氓软件的侵害.&lt;/p&gt;</description></item><item><title>使用iKuai的Docker 安装Uptime 监控网络状况并设置通知提醒</title><link>https://www.dukehsu.com/posts/uptime_kuma.html</link><pubDate>Fri, 29 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/uptime_kuma.html</guid><description>&lt;h2 id="使用ikuai的docker-安装uptime-监控网络状况并设置通知提醒"&gt;使用iKuai的Docker 安装Uptime 监控网络状况并设置通知提醒&lt;/h2&gt;
&lt;h4 id="uptime-kuma-简介"&gt;Uptime Kuma 简介&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;我爱开源&lt;/strong&gt;&lt;br&gt;
Uptime Kuma 是一个开源项目,它的项目地址是在这里&lt;br&gt;
&lt;a href="https://github.com/louislam"&gt;https://github.com/louislam&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;开发者是以为香港Coder, 该项目已经有了43.4k star. 大家再给他多一些星星吧!&lt;/p&gt;
&lt;h4 id="缘由"&gt;缘由&lt;/h4&gt;
&lt;p&gt;有时候有些服务器因为某些原因离线了，忘记检查了。 然后造成服务器无法正常服务。&lt;br&gt;
于是就有了想法在iKuai的 Docker 中安装Uptime 来监控服务器和网络设备的在线状态&lt;/p&gt;
&lt;h4 id="先决条件"&gt;先决条件&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;路由器要有空闲磁盘来存储Docker数据， 不然无法正常安装Docker插件&lt;/li&gt;
&lt;li&gt;iKuai 版本要在3.5以上&lt;/li&gt;
&lt;li&gt;在iKuai云平台绑定设备,并安装好Docker插件&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="安装步骤"&gt;安装步骤&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在路由器的USB口插入一张USB磁盘&lt;br&gt;
并在&amp;quot;系统设置&amp;quot; - &amp;quot; 磁盘管理- 磁盘分区中&amp;quot; 将磁盘分区并挂载 绑定业务选择&amp;quot; 普通存储&amp;quot; 即可&lt;br&gt;
&lt;img alt="1.png" loading="lazy" src="https://www.dukehsu.com/posts/uptime_kuma/images/1634400243.png" title="1.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2.png" loading="lazy" src="https://www.dukehsu.com/posts/uptime_kuma/images/948630914.png" title="2.png"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在云平台的&amp;quot; 插件应用 &amp;quot; 插件市场中选择要安装docker的设备&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在云平台 &amp;ldquo;插件管理&amp;rdquo; 检查插件安装状态, 显示安装成功则可以进行下一步操作&lt;br&gt;
&lt;img alt="3.png" loading="lazy" src="https://www.dukehsu.com/posts/uptime_kuma/images/2670504042.png" title="3.png"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;回到路由器中的&amp;quot;高级应用&amp;quot; - &amp;ldquo;插件管理&amp;rdquo; 点击蓝色的 &amp;ldquo;docker&amp;rdquo; (需要在云平台安装好docker插件成功才能看到) - &amp;quot; 服务设置 &amp;quot;&lt;br&gt;
将镜像库URL 设置为微软的&lt;br&gt;
&lt;a href="https://mcr.microsoft.com/"&gt;https://mcr.microsoft.com/&lt;/a&gt; 点击确认保存&lt;br&gt;
&lt;img alt="4.png" loading="lazy" src="https://www.dukehsu.com/posts/uptime_kuma/images/770769736.png" title="4.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="5.png" loading="lazy" src="https://www.dukehsu.com/posts/uptime_kuma/images/2075424476.png" title="5.png"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;回到Docker 界面 点击 &amp;ldquo;镜像管理&amp;rdquo; 点击添加, 选择&amp;quot;镜像库下载&amp;quot; 在搜索框中输入Uptime&lt;br&gt;
&lt;img alt="6.png" loading="lazy" src="https://www.dukehsu.com/posts/uptime_kuma/images/3634615697.png" title="6.png"&gt;&lt;br&gt;
选择: louislam/uptime-kuma 下载, 然后等待提示下载成功&lt;br&gt;
下载时间取决于您的网络状况和磁盘速度&lt;br&gt;
&lt;img alt="9.png" loading="lazy" src="https://www.dukehsu.com/posts/uptime_kuma/images/483563110.png" title="9.png"&gt;&lt;/p&gt;</description></item><item><title>Python 批量查询快递单号，并将查询结果填入Excel中</title><link>https://www.dukehsu.com/posts/pythonandexcel.html</link><pubDate>Fri, 08 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/pythonandexcel.html</guid><description>&lt;h3 id="缘由"&gt;缘由&lt;/h3&gt;
&lt;p&gt;因为11月份是快递量比较大时候，会有有很多快递单需要查询快递状态；之前是因为单量少，每一个单每一个单去baidu 直接看百度查询到的结果。这两个月由于快递单特别多，于是就打算用Python 结合快递100的API 来查询快递状态&lt;/p&gt;
&lt;h3 id="代码"&gt;代码&lt;/h3&gt;
&lt;h4 id="快递100-api"&gt;快递100 API&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;实时查询状态&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# coding = utf-8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;hashlib&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;KuaiDi100&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# TODO 客户授权key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# TODO 查询公司编号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;https://poll.kuaidi100.com/poll/query.do&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# 请求地址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;track&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ship_from&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ship_to&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 物流轨迹实时查询
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; :param com: 查询的快递公司的编码，一律用小写字母
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; :param num: 查询的快递单号，单号的最大长度是32个字符
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; :param phone: 收件人或寄件人的手机号或固话（也可以填写后四位，如果是固话，请不要上传分机号）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; :param ship_from: 出发地城市，省-市-区，非必填，填了有助于提升签收状态的判断的准确率，请尽量提供
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; :param ship_to: 目的地城市，省-市-区，非必填，填了有助于提升签收状态的判断的准确率，且到达目的地后会加大监控频率，请尽量提供
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; :return: requests.Response.text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;param&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;num&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;phone&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;from&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ship_from&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;to&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ship_to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;resultv2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 添加此字段表示开通行政区域解析功能。0：关闭（默认），1：开通行政区域解析功能，2：开通行政解析功能并且返回出发、目的及当前城市信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;show&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 返回数据格式。0：json（默认），1：xml，2：html，3：text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;order&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;desc&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# 返回结果排序方式。desc：降序（默认），asc：升序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;param_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 转json字符串&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 签名加密， 用于验证身份， 按param + key + customer 的顺序进行MD5加密（注意加密后字符串要转大写）， 不需要“+”号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;temp_sign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;param_str&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md5&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;md&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temp_sign&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;md&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;request_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;customer&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;param&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;param_str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sign&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="c1"&gt;# 发送请求&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;KuaiDi100&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;track&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;yuantong&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;YT9693083639795&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;广东省江门市&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;广东省深圳市&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;接口文档&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>网吧延迟启动工具以及源代码</title><link>https://www.dukehsu.com/posts/hiderun.html</link><pubDate>Wed, 06 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/hiderun.html</guid><description>&lt;p&gt;&lt;img alt="Image.jpg" loading="lazy" src="https://www.dukehsu.com/posts/hiderun/images/3748064671.jpg" title="Image.jpg"&gt;&lt;/p&gt;
&lt;h3 id="缘由"&gt;缘由&lt;/h3&gt;
&lt;p&gt;好久没给网吧维护了，最近给日本网吧维护的时候， 由于要在工作站开机启动之后执行一些初始化程序，要用到一个延迟启动程序。（程序是前辈写的，帮了很多忙。鞠躬）&lt;br&gt;
但是在日本语系统下无法正常运行&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;报错如下：&lt;/strong&gt;&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/hiderun/images/4185044155.png"&gt;&lt;br&gt;
如果要解决该错误，需要在区域选项中，将程式区域改为中国即可。如此一来会产生一个新的问题， 某些程式会用区域来判断用户的location, 会导致一些软件无法正常运行。&lt;/p&gt;
&lt;p&gt;于是我依葫芦画瓢，手搓了一个能在日本语系统下正常运行的延迟启动工具&lt;/p&gt;
&lt;h3 id="功能和用法"&gt;功能和用法&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;该延迟启动工具的本体只有一个exe执行文件和ini配置文件&lt;/li&gt;
&lt;li&gt;执行文件会读取ini文件中的配置，然后执行相关任务&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配置文件说明&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置文件包含TargetPath，FileExtensions，Timeout选项&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TargetPath&lt;/strong&gt;： 所需要执行的目录路径（绝对路径）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FileExtenions&lt;/strong&gt;: 需要执行的文件格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeout&lt;/strong&gt;: 延迟时间 毫秒为单位&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;用法&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在给工作站开超级时，将Hiderun.exe 添加到系统启动项&lt;/li&gt;
&lt;li&gt;根据你自身需求，在配置文件中“config.ini”填写相对应的路径和文件格式，以及时间。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;日志&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;程序会在程序根目录生成log文件记录执行状态和报错，遇到问题可以在日志中查看明细。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="程序执行演示"&gt;程序执行演示&lt;/h3&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/hiderun/images/3052070011.png"&gt;&lt;/p&gt;
&lt;h3 id="程序下载"&gt;程序下载&lt;/h3&gt;
&lt;p&gt;解压密码： &lt;a href="https://www.itiohub.com"&gt;www.itiohub.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2023/12/2264728640.zip"&gt;HideRun.zip&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="源代码"&gt;源代码&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.IO&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Diagnostics&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Runtime.ExceptionServices&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 在程序根目录生成日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;logFilePath&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GenerateLogFilePath&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;CreateLogFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 隐藏自身窗口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt; &lt;span class="n"&gt;handle&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetCurrentProcess&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;MainWindowHandle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ShowWindow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SW_HIDE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;延迟启动工具 By 小四 www.itiohub.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 读取配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;configFile&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;config.ini&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ReadConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configFile&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 获取配置信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;targetPath&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;TargetPath&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;fileExtensions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;FileExtensions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Timeout&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 后台运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;RunInBackground&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;targetPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fileExtensions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;配置文件读取失败。 请检查配置文件config.ini是否存在&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//创建日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;CreateLogFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;StreamWriter&lt;/span&gt; &lt;span class="n"&gt;sw&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;程序启动时间: &amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;yyyy-MM-dd HH:mm:ss&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$&amp;#34;创建日志文件时发生错误: {ex.Message}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//后台运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;RunInBackground&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;targetPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;fileExtensions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 在目标路径中查找并运行匹配的文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;fileExtension&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;fileExtensions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Directory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetFiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;targetPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;*.{fileExtension}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;运行文件: {file}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;processStartInfo&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ProcessStartInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;processStartInfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WindowStyle&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ProcessWindowStyle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;process&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;processStartInfo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;process&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 等待超时时间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WaitForExit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;文件 {file} 运行超时。&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 可以添加其他处理逻辑，例如记录日志等&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;无法启动文件 {file}。&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 执行完所有文件后，延迟5秒并退出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;所有文件已执行，程序将在5秒后退出。&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;发生错误: {ex.Message}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//读取配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;IniConfig&lt;/span&gt; &lt;span class="n"&gt;ReadConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;IniConfig&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadAllLines&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;=&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;Trim&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;Trim&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;读取配置文件时发生错误: {ex.Message}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;LogToFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;StreamWriter&lt;/span&gt; &lt;span class="n"&gt;sw&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AppendText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logFilePath&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;logMessage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;{DateTime.Now.ToString(&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;yyyy_MM_dd_HH_mm&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;)}: {message}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logMessage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logMessage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$&amp;#34;写入日志文件时发生错误: {ex.Message}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//日志文件名称generate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;GenerateLogFilePath&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;fileName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;$&amp;#34;hiderun{DateTime.Now.ToString(&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;yyyy_MM_dd_HH_mm&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;)}.log&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AppDomain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentDomain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BaseDirectory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fileName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; [System.Runtime.InteropServices.DllImport(&amp;#34;user32.dll&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;extern&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;ShowWindow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IntPtr&lt;/span&gt; &lt;span class="n"&gt;hWnd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;nCmdShow&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;SW_HIDE&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//ini配置文件 ky value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;IniConfig&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Collections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Generic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;IniConfig&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Collections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Generic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;get&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ContainsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ContainsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Coding Practice. Use an IP Guide retrieve your ip information</title><link>https://www.dukehsu.com/posts/462.html</link><pubDate>Sat, 02 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/462.html</guid><description>&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/462/images/2048183383.png"&gt;&lt;/p&gt;
&lt;h2 id="intuduction"&gt;Intuduction&lt;/h2&gt;
&lt;p&gt;When we need to check some IP address information , do we have to open the browser, then type the googl domain and copy-paste the IP address?&lt;/p&gt;
&lt;p&gt;In this article . I&amp;rsquo;m goinG to use python with IP GUIDE to check ipaddres information .This much better before.&lt;/p&gt;
&lt;h2 id="lets-started"&gt;Let&amp;rsquo;s started&lt;/h2&gt;
&lt;h3 id="install-python"&gt;Install Python&lt;/h3&gt;
&lt;p&gt;found what version can be match your OS , download it and installl .&lt;br&gt;
&lt;a href="https://www.python.org/downloads/"&gt;https://www.python.org/downloads/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="install-requests-library"&gt;Install requests library&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;website: &lt;a href="https://pypi.org/project/requests/"&gt;https://pypi.org/project/requests/&lt;/a&gt;&lt;br&gt;
&lt;code&gt;$ python -m pip install requests&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="code"&gt;Code&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#import requests library&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#get data from ip guide&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://ip.guide/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#function get_ip&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_ip&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ip&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#function get_location&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_location&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;location_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Latitude&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;latitude&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Longitude&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;longitude&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;City&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;city&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Country&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;country&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;location_data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#function get_network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_network&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;network_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Cidr&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;network&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cidr&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Host Start&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;network&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;hosts&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;start&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Host end&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;network&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;hosts&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;end&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;network_data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#dictionary variable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;network_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_network&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;location_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_location&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ipaddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_ip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# output information &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Your internet IPaddress is :&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ipaddress&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt; and below is this IPaddress other informations&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# for loop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;network_data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34; &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;location_data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34; &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="refrence"&gt;Refrence&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://ip.guide/"&gt;https://ip.guide/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>小米盒子3 ADB 调试笔记 - MZD-16-AA debuging note</title><link>https://www.dukehsu.com/posts/459.html</link><pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/459.html</guid><description>&lt;h2 id="小米盒子3-adb-调试笔记-20250619-更新"&gt;小米盒子3 ADB 调试笔记 2025.06.19 更新&lt;/h2&gt;
&lt;h3 id="缘由"&gt;缘由&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;广告太多&lt;/li&gt;
&lt;li&gt;偶尔卡住不动（hung up）&lt;/li&gt;
&lt;li&gt;盒子内存只有4GB, RAM 只有800M&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;根据以上一些缘由，所以想通过ADB调试来删减一些无用的资源，扩充一些资源来装Kodi和Smart tube。&lt;/p&gt;
&lt;h3 id="准备工作"&gt;准备工作&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;一条USB双公头的线&lt;/li&gt;
&lt;li&gt;一个小米盒子3 型号为MZD-16-AA&lt;/li&gt;
&lt;li&gt;一台笔记本&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="开始"&gt;开始&lt;/h3&gt;
&lt;h4 id="打开盒子的adb-调试模式"&gt;打开盒子的ADB 调试模式&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;使用遥控器进入设置&lt;/li&gt;
&lt;li&gt;关于&lt;/li&gt;
&lt;li&gt;在“关于”选项中连续按“ok” 7次即可进入开发模式&lt;/li&gt;
&lt;li&gt;在“設備名稱”中連續按多次“ok” 可開啟工廠模式&lt;/li&gt;
&lt;li&gt;返回设置的 ”用户与安全“&lt;/li&gt;
&lt;li&gt;設置工廠模式功能&lt;/li&gt;
&lt;li&gt;在 ”ADB调试“中将”关闭“调整为”开启“&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="usb-模式下的adb-调试"&gt;USB 模式下的ADB 调试&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;下载SDK Platform tools &lt;a href="https://developer.android.com/tools/releases/platform-tools"&gt;SDK Platform tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;下载 Google USB driver &lt;a href="https://developer.android.com/studio/run/win-usb"&gt;Google USB driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;进入工具目录使用命令进行ADB调试&lt;/li&gt;
&lt;li&gt;进入ADB 调试命令&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$adb devices&lt;/code&gt;&lt;/strong&gt; //显示设备 会以序列号开头在下方显示 （盒子会显示是否授权该电脑进行调试，请使用遥控器选择）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$adb shell&lt;/code&gt;&lt;/strong&gt; //进入shell 命令，到这里就可以通过命令去操作了&lt;/li&gt;
&lt;li&gt;其它命令请见下方“常见命令”&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="网络模式下的adb-调试"&gt;网络模式下的ADB 调试&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;先决条件&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;盒子和其它调试电脑在同一局域网中&lt;/li&gt;
&lt;li&gt;通过USB 模式下的ADB 调试，开启设备在5555端口监听 TCP/IP 连接&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$adb tcpip 5555&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通过局域网其它调试电脑进行连接&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$adb connect 192.168.5.220&lt;/code&gt;&lt;/strong&gt; // 将地址改为盒子的IP地址即可。会默认连接目标地址的5555端口&lt;/li&gt;
&lt;li&gt;其它命令请见下方的“常见命令”&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="常见命令"&gt;常见命令&lt;/h4&gt;
&lt;h5 id="adb-shell-pm-list-packages--option"&gt;&lt;code&gt;adb shell pm list packages -[option]&lt;/code&gt;&lt;/h5&gt;
&lt;p&gt;这个命令用于查看已经安装的应用并列出包名，后面添加不同选项可以输出不同信息。&lt;/p&gt;</description></item><item><title>Excel日常小技巧</title><link>https://www.dukehsu.com/posts/officesoftware.html</link><pubDate>Fri, 20 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/officesoftware.html</guid><description>&lt;p&gt;当遇到这种菜单需要组合数据，然后导入到收银软件数据库的时候。 我们可以 使用**&amp;quot;&amp;amp;&amp;quot;**号来组合数据&lt;/p&gt;
&lt;h3 id="原表格数据如下"&gt;原表格数据如下&lt;/h3&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/3512929433.png"&gt;&lt;/p&gt;
&lt;h3 id="使用符号组合数据"&gt;使用”&amp;amp;“符号组合数据&lt;/h3&gt;
&lt;p&gt;如下&lt;br&gt;
在N5单元格中输入以下内容，及可将I7，J7，J8的数据组合在N5.
&lt;code&gt;=I7&amp;amp;J7&amp;amp;J8&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/646103391.png"&gt;&lt;/p&gt;
&lt;h3 id="使用分列功能拆分数据"&gt;使用“分列”功能拆分数据&lt;/h3&gt;
&lt;p&gt;根据ChatGPT生成翻译之后直接粘贴到表格的数据中如下&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/4203305910.png"&gt;&lt;/p&gt;
&lt;p&gt;这个时候我们就可以使用**&amp;ldquo;分列&amp;rdquo;**功能来处理数据&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/1286555283.png"&gt;&lt;/li&gt;
&lt;li&gt;二&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/2896041476.png"&gt;&lt;/li&gt;
&lt;li&gt;三&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/2613998011.png"&gt;&lt;/li&gt;
&lt;li&gt;四 此时已经到最后一步， 可以根据自身需求选择。 如果不需要，点击完成即可。&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/2487332793.png"&gt;&lt;/li&gt;
&lt;li&gt;五 最终效果如下&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/officesoftware/images/3384291016.png"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;参考： &lt;a href="https://support.microsoft.com/en-us/office/combine-text-from-two-or-more-cells-into-one-cell-81ba0946-ce78-42ed-b3c3-21340eb164a6?ui=en-US&amp;amp;rs=en-US&amp;amp;ad=US"&gt;https://support.microsoft.com/en-us/office/combine-text-from-two-or-more-cells-into-one-cell-81ba0946-ce78-42ed-b3c3-21340eb164a6?ui=en-US&amp;amp;rs=en-US&amp;amp;ad=US&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Using Python with the OpenWeather.org AP</title><link>https://www.dukehsu.com/posts/pythonwithapi.html</link><pubDate>Wed, 27 Sep 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/pythonwithapi.html</guid><description>&lt;h2 id="using-python-with-the-openweathermaporg-api"&gt;Using Python with the OpenWeathermap.org API&lt;/h2&gt;
&lt;p&gt;In these notes, we will explore how to utilize Python with a free weather API (Application Programming Interface) to retrieve the current weather for a specific city.&lt;/p&gt;
&lt;h2 id="what-you-need-to-install-and-obtain"&gt;What You Need to Install and Obtain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Python and the &amp;lsquo;requests&amp;rsquo; package&lt;/li&gt;
&lt;li&gt;Access to a Weather API&lt;/li&gt;
&lt;li&gt;Basic coding knowledge&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="install-requests-package"&gt;Install requests package&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python -m pip install requests #install package
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python -m pip show requests #display requests version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image-20230927111555155.png" loading="lazy" src="https://www.dukehsu.com/posts/pythonwithapi/images/4088264047.png" title="image-20230927111555155.png"&gt;&lt;/p&gt;</description></item><item><title>修改Discuz 中 UC center的创始人密码</title><link>https://www.dukehsu.com/posts/discuzucpasswordchange.html</link><pubDate>Mon, 18 Sep 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/discuzucpasswordchange.html</guid><description>&lt;h2 id="解決辦法"&gt;解決辦法&lt;/h2&gt;
&lt;p&gt;进入discuz的安装目录，找到 &lt;code&gt;./uc_server/data/config.inc.php&lt;/code&gt; 文件&lt;br&gt;
可以通过FTP连接服务器，或者直接登录服务器操作&lt;/p&gt;
&lt;p&gt;使用下列两行替换 &lt;code&gt;config.inc.php&lt;/code&gt; 文件中 UC_FOUNDERPW 和 UC_FOUNDERSALT 两行配置&lt;br&gt;
这两行代表的是加密后的 UCenter 密码，这里的密码是 &lt;code&gt;Discuz@2019&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;define(&amp;#39;UC_FOUNDERPW&amp;#39;, &amp;#39;6a8d7f5a1cc2a62ca6550adf2f1f421f&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;define(&amp;#39;UC_FOUNDERSALT&amp;#39;, &amp;#39;208491&amp;#39;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;复制&lt;br&gt;
刷新登录页面，再次输入重置后的 Discuz@2019 密码进行登录，已经可以成功登陆至 UCenter 后台&lt;/p&gt;
&lt;p&gt;成功登陆后，就可以在后台直接修改密码了&lt;/p&gt;
&lt;h2 id="来源"&gt;来源：&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://cloud.tencent.com/developer/article/1605905"&gt;https://cloud.tencent.com/developer/article/1605905&lt;/a&gt;&lt;/p&gt;</description></item><item><title>有效的关闭Windows操作系统的更新</title><link>https://www.dukehsu.com/posts/windowsupdateblock.html</link><pubDate>Sun, 23 Jul 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windowsupdateblock.html</guid><description>&lt;h3 id="为什么要关闭windows更新"&gt;为什么要关闭Windows更新&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;微软有时候推送的更新会导致系统奔溃&lt;/li&gt;
&lt;li&gt;影响正常工作、资料丢失&lt;/li&gt;
&lt;li&gt;会有漏洞&lt;/li&gt;
&lt;li&gt;更新失败导致的各种问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="关闭windows更新之后会有什么影响"&gt;关闭Windows更新之后会有什么影响&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;无法自动更新驱动程式&lt;/li&gt;
&lt;li&gt;微软应用商店无法正常使用，微软商店的app 无法正常更新&lt;/li&gt;
&lt;li&gt;无法自动更新.Net 运行库&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="我已经在设置里面关闭了自动更新-它有效吗"&gt;我已经在设置里面关闭了自动更新， 它有效吗？&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;无用，Windows 的贴心服务会为你再次开启&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="如何彻底关闭windows更新"&gt;如何彻底关闭Windows更新？&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;正常情况下 在系统设置、服务管理、注册表中设置好Windows的自动更新之后即可&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在这里推荐使用sordum的 wub 软件的简单操作来实现一键关闭，而且永久有效哦。&lt;/p&gt;
&lt;p&gt;复制下方链接到浏览器即可自动下载wub， 解压之后即可直接使用。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sordum.org/downloads/?st-windows-update-blocker"&gt;https://www.sordum.org/downloads/?st-windows-update-blocker&lt;/a&gt;&lt;/p&gt;</description></item><item><title>ReIcon 一款桌面图标整理和布局软件</title><link>https://www.dukehsu.com/posts/419.html</link><pubDate>Sun, 05 Mar 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/419.html</guid><description>&lt;h2 id="reicon-一款桌面图标整理和布局软件"&gt;ReIcon 一款桌面图标整理和布局软件&lt;/h2&gt;
&lt;h3 id="软件介绍"&gt;软件介绍&lt;/h3&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/419/images/2139886198.png"&gt;&lt;br&gt;
Reicon是便携式免费软件，使您能够保存和还原桌面布局。 如果您经常更改屏幕分辨率（例如，玩游戏或使用需要特定分辨率的应用程序），则您可能会熟悉桌面图标的问题，因为您切换回正常的分辨率后会陷入混乱。 Reicon通过允许您保存桌面布局来解决此问题，然后单击按钮（或使用右键单击上下文菜单）还原它。&lt;/p&gt;
&lt;p&gt;Reicon非常易于使用。 设置您的图标，按照您喜欢它们的方式，保存布局，然后在需要时稍后还原该布局。&lt;/p&gt;
&lt;h3 id="如何使用"&gt;如何使用&lt;/h3&gt;
&lt;p&gt;GUI操作&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将你想要的图标位置摆至你想要的坐标&lt;/li&gt;
&lt;li&gt;点开Reicon程序，将布局保存好&lt;/li&gt;
&lt;li&gt;选择你想要恢复的布局 ，在布局列表中鼠标右键选择恢复即可&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;命令行使用&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Reicon还支持命令行操作 以下是命令操作指南&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Usage: &amp;lt;command&amp;gt; [&amp;lt;additional commands&amp;gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Commands:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /S : Save desktop icons layout
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /R : Restore desktop icon layout
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /File : Icon layout file location
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /ID : Desktop icon layout ID or order
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /Name : Desktop icon layout name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Examples:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ReIcon_x64.exe /S
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ReIcon_x64.exe /S /File C:\Test.ini /Name New icon layout /ID abc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ReIcon_x64.exe /R
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ReIcon_x64.exe /R /ID abc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ReIcon_x64.exe /R /ID 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ReIcon_x64.exe /R /File C:\Test.ini /ID abc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以下批处理示例了使用Reicon命令行恢复图标布局&lt;/p&gt;</description></item><item><title>Get the Old Right Click Menu Back in Windows 11</title><link>https://www.dukehsu.com/posts/windows11.html</link><pubDate>Fri, 24 Feb 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windows11.html</guid><description>&lt;h3 id="windows11-基本设置"&gt;Windows11 基本设置&lt;/h3&gt;
&lt;h5 id="windows11-鼠标右键显示更多选项"&gt;Windows11 鼠标右键显示更多选项&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;以管理员权限运行终端&lt;/li&gt;
&lt;li&gt;在终端中输入以下内容 回车 系统会提示操作完成&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reg.exe add &lt;span class="s2"&gt;&amp;#34;HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&amp;#34;&lt;/span&gt; /f /ve&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image-20230224212117490.png" loading="lazy" src="https://www.dukehsu.com/posts/windows11/images/3860960130.png" title="image-20230224212117490.png"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;操作完成之后重启exporer进程即可&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="windwos11-安装系统跳过联机账户登录"&gt;Windwos11 安装系统跳过联机账户登录&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;安装Windows 11时 将设备离线&lt;/li&gt;
&lt;li&gt;按住&lt;code&gt;Shift&lt;/code&gt;+&lt;code&gt;F10&lt;/code&gt; 呼出终端界面 在终端界面中输入一下内容 然后回车&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;oobe\BypassNRO.cmd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image-20230224212154509.png" loading="lazy" src="https://www.dukehsu.com/posts/windows11/images/3197818211.png" title="image-20230224212154509.png"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设备会自动重启，重启完成之后即可&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>打印服务器cups安装笔记</title><link>https://www.dukehsu.com/posts/413.html</link><pubDate>Fri, 20 Jan 2023 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/413.html</guid><description>&lt;h2 id="cup-安装笔记"&gt;CUP 安装笔记&lt;/h2&gt;
&lt;h3 id="cup-介绍"&gt;CUP 介绍&lt;/h3&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/413/images/4239048401.png"&gt;&lt;br&gt;
CUPS 是Apple inc 开源的打印服务 ,你可以将它部署在您的局域网内，将打印机接入该服务器，其它工作站可以通过局域网来访问打印机。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Official website:&lt;/strong&gt;&lt;br&gt;
&lt;a href="http://www.cups.org/index.html"&gt;http://www.cups.org/index.html&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Github page:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/apple/cups"&gt;https://github.com/apple/cups&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CUPS支持局域网内打印服务共享,无需再繁琐的设置打印机共享了，并且还能将老打印机也接入局域网。同时还支持mac os， linux，windows，安卓以及ios air print；&lt;/p&gt;
&lt;h3 id="笔记概要"&gt;笔记概要&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Linux服务器版本 Ubuntu 18.4&lt;/li&gt;
&lt;li&gt;下载并安装CUP&lt;/li&gt;
&lt;li&gt;CUP配置修改&lt;/li&gt;
&lt;li&gt;使用WEB GUI 添加打印机&lt;/li&gt;
&lt;li&gt;通过局域网访问打印机&lt;/li&gt;
&lt;li&gt;配置文件说明&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="下载安装"&gt;下载安装&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sudo apt-get install cups cups-pdf cups-bsd &lt;span class="c1"&gt;#下载安装&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="cup-配置修改"&gt;CUP 配置修改&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp /etc/cups/cupsd.conf cupsd.conf.bak &lt;span class="c1"&gt;#备份配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/cups/cupsd.conf &lt;span class="c1"&gt;#修改配置文件&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Configuration file for the CUPS scheduler. See &amp;#34;man cupsd.conf&amp;#34; for a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# complete description of this file.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Log general information in error_log - change &amp;#34;warn&amp;#34; to &amp;#34;debug&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# for troubleshooting...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LogLevel warn
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PageLogFormat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deactivate CUPS&amp;#39; internal logrotating, as we provide a better one, especially&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# LogLevel debug2 gets usable now&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MaxLogSize &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Only listen for connections from the local machine.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Listen &lt;span class="m"&gt;631&lt;/span&gt; &lt;span class="c1"&gt;#更改监听端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Listen /run/cups/cups.sock
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show shared printers on the local network.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Browsing on &lt;span class="c1"&gt;#打开局域网发现打印机&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BrowseLocalProtocols dnssd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Default authentication type, when authentication is required...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DefaultAuthType Basic
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Web interface setting...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WebInterface Yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to the server...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#Order allow,deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL &lt;span class="c1"&gt;#允许LOCAL &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to the admin pages...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /admin&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#Order allow,deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL &lt;span class="c1"&gt;#同上&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to configuration files...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /admin/conf&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#AuthType Default&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Require user @SYSTEM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#Order allow,deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/Location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict access to log files...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Location /admin/log&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#AuthType Default&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#Require user @SYSTEM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#Order allow,deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Allow @LOCAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/Location&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;修改完配置之后重启服务&lt;/p&gt;</description></item><item><title>公有云安装Panabit 专业版笔记</title><link>https://www.dukehsu.com/posts/panabit-install.html</link><pubDate>Thu, 22 Dec 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/panabit-install.html</guid><description>&lt;h2 id="公有云安装panabit-专业版-笔记"&gt;公有云安装Panabit 专业版 笔记&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Release date:&lt;/strong&gt; Dec 22,2022 Th .&lt;br&gt;
&lt;strong&gt;Panabit Version:&lt;/strong&gt; R0.00[TANG(大唐)r3]，Build date 20221031.132102 [Linux 3.10]&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; Duke Hsu&lt;br&gt;
此笔记记录了使用单网卡轻量云服务器安装panabit的过程。&lt;/p&gt;
&lt;h3 id="准备工作"&gt;准备工作&lt;/h3&gt;
&lt;h4 id="云服务器"&gt;云服务器&lt;/h4&gt;
&lt;p&gt;操作系统： Centos 7.6 x64&lt;br&gt;
配置： 2C 8G 1 eth&lt;/p&gt;
&lt;h4 id="panabit-材料"&gt;Panabit 材料&lt;/h4&gt;
&lt;p&gt;Panabit一键上传 云服务器工具（包含安装和解压 GUI.exe）&lt;br&gt;
&lt;img alt="示例.jpg" loading="lazy" src="https://www.dukehsu.com/posts/panabit-install/images/2709048572.jpg" title="示例.jpg"&gt;&lt;br&gt;
Panabit专业版Linux安装包（LPanabitOEM_WUDAIr1_20201125_Linux3.tar.gz）&lt;br&gt;
云服务器的IP地址和密码&lt;br&gt;
云服务器需要开启SSH 端口和服务&lt;/p&gt;
&lt;h3 id="安装步骤"&gt;安装步骤&lt;/h3&gt;
&lt;h4 id="云服务器初始化"&gt;云服务器初始化&lt;/h4&gt;
&lt;p&gt;关闭防火墙&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#停止防火墙&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl stop firewalld
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#关闭开机自启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl disable firewalld&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查网卡配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#打印IP地址信息
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ifconfig
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#查看网卡详细信息(ifcfg-eth0为网卡名，有些不一样，视情况而定)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /etc/sysconfig/network-scripts/ifcfg-eth0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;记录下来IP地址信息以备稍后做Panabit配置使用&lt;/p&gt;
&lt;h4 id="panabit安装"&gt;Panabit安装&lt;/h4&gt;
&lt;p&gt;使用GUI.exe 工具根据提示 将安装包上传到云服务器 全自动安装&lt;/p&gt;
&lt;p&gt;重启服务器之后即可使用web登入Panabit进行管理&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果无法访问请检查管理口名称是否与云服务器网卡名不一致&lt;/li&gt;
&lt;li&gt;如果提示安全问题，请使用低版本的chrome浏览器访问，比如360急速浏览器&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="panabit-配置"&gt;Panabit 配置&lt;/h3&gt;
&lt;h4 id="网络接口配置"&gt;网络接口配置&lt;/h4&gt;
&lt;p&gt;在&amp;lt;系统概况&amp;gt;将eth接口方向更改为接外&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/panabit-install/images/53889127.png"&gt;&lt;/p&gt;
&lt;p&gt;在应用路由-接口线路-WAN线路 添加一个接口 如下图&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/panabit-install/images/3950524992.png"&gt;&lt;/p&gt;</description></item><item><title>批处理跳过显卡驱动版本检测</title><link>https://www.dukehsu.com/posts/387.html</link><pubDate>Thu, 17 Nov 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/387.html</guid><description>&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/387/images/4112067166.png"&gt;&lt;/p&gt;
&lt;p&gt;由于某些游戏在运行时候会检测显卡驱动版本，如果不是最新版本就需要更新，某些时候太麻烦了，索性使用批处理更改文件名来实现跳过显卡驱动版本检测。下面的示例以Windows操作系统为主。&lt;/p&gt;
&lt;p&gt;Tips: 将下面的命令保存为批处理(bat)格式的文件即可在Windows下执行。&lt;/p&gt;
&lt;h3 id="重命名nvapi文件"&gt;重命名NVAPI文件&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;if exist C:\Windows\System32\nvapi64.Old goto Old
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chdir /d C:\Windows\System32
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ren nvapi64.dll nvapi64.Old
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo @ Named
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pause
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;goto End&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="恢复nvapi文件名"&gt;恢复NVAPI文件名&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;:Old
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chdir /d C:\Windows\System32
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ren nvapi64.Old nvapi64.dll
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo @ Renamed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pause
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;goto End
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;:End&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>TCP端口连通性检测工具-tcping</title><link>https://www.dukehsu.com/posts/381.html</link><pubDate>Tue, 15 Nov 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/381.html</guid><description>&lt;h2 id="tcping介绍"&gt;TCPING介绍&lt;/h2&gt;
&lt;p&gt;tcping 是由美国人 Eli Fulkerson先生用C++ 编写的一个开源网络检测工具;你可以下载可执行文件， 也可以下载源码自行编译。&lt;/p&gt;
&lt;p&gt;Offical website: &lt;a href="https://download.elifulkerson.com/files/tcping/0.39/"&gt;https://download.elifulkerson.com/files/tcping/0.39/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;tcping和ping类似，也是用于检测网络连通性的一个工具。不同于ping的是，tcping 可以检查端口，更多的用法请在程序中执行 ？ 来查阅。&lt;/p&gt;
&lt;h3 id="程序的帮助信息"&gt;程序的帮助信息&lt;/h3&gt;
&lt;p&gt;&lt;img alt="tcping.jpg" loading="lazy" src="https://www.dukehsu.com/posts/381/images/1461758271.jpg" title="tcping.jpg"&gt;&lt;/p&gt;
&lt;h3 id="使用tcping检测应用程序的端口延迟"&gt;使用tcping检测应用程序的端口延迟&lt;/h3&gt;
&lt;p&gt;从Eli Fulkerson 的网站下载下来，通过命令行的方式来运行&lt;/p&gt;
&lt;p&gt;在程序所在目录输入程序 和目标地址进行检测&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.\tcping.exe google.com 443
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//.\tcping.exe 目标地址/域名 目标端口&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;即可获得结果，也可以在程序后面添加参数&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.\tcping.exe -t google.com 443
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//.\tcping.exe -t 目标地址/域名 目标端口 (-t长ping)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.\tcping.exe -h google.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//.\tcping.exe -h 目标地址/域名 目标端口&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="示例图"&gt;示例图&lt;/h3&gt;
&lt;p&gt;&lt;img alt="tcping1.jpg" loading="lazy" src="https://www.dukehsu.com/posts/381/images/2549479965.jpg" title="tcping1.jpg"&gt;&lt;/p&gt;
&lt;h3 id="使用tcping来检查网络游戏的网络波动"&gt;使用tcping来检查网络游戏的网络波动&lt;/h3&gt;
&lt;p&gt;当我接到有用户反馈网络游戏延迟高或者连接不上的时候，通常我会使用tcping，tracert，nslookup，ping 这几个命令来协助排查故障；总结一下几个步骤如下&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拿到与游戏相关的服务器地址&lt;br&gt;
有时候游戏服务器是通过域名连接，我会使用nslookup检查解析地址&lt;/li&gt;
&lt;li&gt;使用ping检查基本的延迟状态&lt;br&gt;
有些游戏服务器禁ping，我会使用tracert 来跟踪路由，顺便找一下游戏连接的端口（后面使用tcping检查端口）&lt;/li&gt;
&lt;li&gt;使用tracert跟踪路由&lt;br&gt;
运营商链路调整 有时候会影响游戏体验；某个节点断掉&lt;br&gt;
tracert可以协助你判断路由节点的问题&lt;/li&gt;
&lt;li&gt;使用tcping检查游戏服务器端口延迟和是否开放&lt;br&gt;
有些游戏是UDP协议，我会用hping，或者nc。基本上tcping已经很够用所以我这里只介绍tcping。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前面的文章&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;使用 PsPing进行网络测试&lt;br&gt;
&lt;a href="https://www.itiohub.com/share/psping.html"&gt;https://www.itiohub.com/share/psping.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;以上所述内容均以Windows操作系统为主。&lt;br&gt;
如果你有其它更好用的工具 ，欢迎在下方留言分享。&lt;/p&gt;</description></item><item><title>C# Classes and Objects</title><link>https://www.dukehsu.com/posts/378.html</link><pubDate>Thu, 20 Oct 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/378.html</guid><description>&lt;h2 id="what-is-classes-in-c"&gt;What is Classes in C#?&lt;/h2&gt;
&lt;h3 id="objects"&gt;Objects&lt;/h3&gt;
&lt;h3 id="access-modifiers"&gt;Access Modifiers&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers"&gt;https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.cnblogs.com/xinaixia/p/5775471.html"&gt;https://www.cnblogs.com/xinaixia/p/5775471.html&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="code"&gt;Code&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//class declaration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//instance 6 variables&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;transmission&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;bodytype&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;seat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//constructor declaration of class&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;transmission&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;bodytype&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;seat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transmission&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;transmission&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bodytype&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bodytype&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seat&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;seat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//property 6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;getName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;getColor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;getTransmission&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;transmission&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;getType&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;bodytype&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;getSeat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;seat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;getYear&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//method &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;This is Car detail- CarName:&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\n Color :&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getColor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\n Transmission: &amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getTransmission&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\n Body type: &amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getType&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\n Seat : &amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getSeat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\n Year: &amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getYear&lt;/span&gt;&lt;span class="p"&gt;())+&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;\n =================&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//main method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 5 object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;Toyota&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Toyota Rush&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Silver&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Auto&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;SUV&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;Bmw&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;BMX X1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Silver&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Auto&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;SUV&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2022&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;Honda&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Accord&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Black&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Auto&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Sedan&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;Tesla&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Tesla S&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Red&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Auto&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Sedan&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2017&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;Mazda&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Mazda 929 Legato&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;White&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Manual&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Sedan&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1980&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//output &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Toyota&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Bmw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Honda&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Tesla&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Mazda&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;==============\n Thank you !&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//out put date and time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Print date: &amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadLine&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>C# Find the value of an element using the index</title><link>https://www.dukehsu.com/posts/377.html</link><pubDate>Sun, 16 Oct 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/377.html</guid><description>&lt;h2 id="idea"&gt;IDEA&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;User input data&lt;/li&gt;
&lt;li&gt;Convert to index&lt;/li&gt;
&lt;li&gt;Using index number fund element vaule&lt;/li&gt;
&lt;li&gt;Output element vaule&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="screenshot"&gt;Screenshot&lt;/h3&gt;
&lt;p&gt;&lt;img alt="Snipaste_2022-10-16_15-07-42.png" loading="lazy" src="https://www.dukehsu.com/posts/377/images/674726809.png" title="Snipaste_2022-10-16_15-07-42.png"&gt;&lt;/p&gt;
&lt;h3 id="code"&gt;Code&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;array2d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;array2d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//initilizing arrays &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[,]&lt;/span&gt; &lt;span class="n"&gt;platenumber&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;ZJI163&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;USA1008&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;PHA101&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;PJ130108&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;USA1006&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;JAP118&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;MAX168&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;USA1002&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;TWD120&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;AZZ9756&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;USA1005&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;KOR119&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;NAS1223&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;USA109&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;DDT886&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//wait for user input,convert to int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Welcome use DK parking system!\n Solt: 0-4 \n floor: 0-2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Plz type slot: &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;solt&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToInt32&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadLine&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Plz type floor: &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;floor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToInt32&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadLine&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// decision the length of the element&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;solt&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;floor&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;platenumber&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;solt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Found platenumber is :&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;\nThe value you entered does not exist&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Thank you !&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadLine&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>C# Multidimensional Arrays</title><link>https://www.dukehsu.com/posts/373.html</link><pubDate>Tue, 04 Oct 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/373.html</guid><description>&lt;blockquote&gt;
&lt;h3 id="c-multidimensional-arrays"&gt;C# Multidimensional Arrays&lt;/h3&gt;
&lt;p&gt;As discussed in the previous chapter, Arrays in C# will support multi-dimensional arrays. In c#, a multidimensional array is an array that contains more than one dimension to represent the elements in a tabular format like rows and columns.&lt;br&gt;
In c#, multidimensional arrays can support either two or three-dimensional series. To create multi-dimensional arrays, we need to use a comma (,) separator inside the square brackets.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="c-multi-dimensional-array-declaration"&gt;C# Multi-Dimensional Array Declaration&lt;/h3&gt;
&lt;p&gt;In c#, Multidimensional Arrays can be declared by specifying the data type of elements followed by the square brackets [] with comma (,) separator. The following are examples of creating two or three-dimensional arrays in the c# programming language.&lt;/p&gt;</description></item><item><title>C# String Contains Assessment</title><link>https://www.dukehsu.com/posts/csharp.html</link><pubDate>Mon, 03 Oct 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/csharp.html</guid><description>&lt;h2 id="question"&gt;Question:&lt;/h2&gt;
&lt;p&gt;Create a complete C# program that will simulate a log-in process. If the username and password are both correct the program will display “Log-in Successful”, otherwise it will display “Invalid Log-in details”&lt;/p&gt;
&lt;h2 id="flowchart"&gt;FlowChart:&lt;/h2&gt;
&lt;p&gt;&lt;img alt="20221003.jpg" loading="lazy" src="https://www.dukehsu.com/posts/csharp/images/2267246583.jpg" title="20221003.jpg"&gt;&lt;/p&gt;
&lt;h2 id="c-logical-operators"&gt;C# Logical Operators:&lt;/h2&gt;
&lt;p&gt;&lt;img alt="logic table c#.jpg" loading="lazy" src="https://www.dukehsu.com/posts/csharp/images/2735591399.jpg" title="logic table c#.jpg"&gt;&lt;/p&gt;
&lt;h2 id="code-answer"&gt;Code Answer:&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-C#" data-lang="C#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;Module6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;module6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;emailid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//use readline get user input&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Plz enter u Emaill address :&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;emailid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadLine&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Plz enter u Password&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadLine&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//use if else to decision input data contains value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emailid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;ydsgsdg@dsadas.edu.ph&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;d123456&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Your Log-in Was Successful!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Invalid Log-in details&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadLine&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="reference"&gt;Reference&lt;/h2&gt;
&lt;p&gt;C# Logical Operators with Examples&lt;br&gt;
&lt;a href="https://www.tutlane.com/tutorial/csharp/csharp-logical-operators-with-examples"&gt;https://www.tutlane.com/tutorial/csharp/csharp-logical-operators-with-examples&lt;/a&gt;&lt;/p&gt;</description></item><item><title>blob视频资源的简单提取</title><link>https://www.dukehsu.com/posts/blob-m3u8.html</link><pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/blob-m3u8.html</guid><description>&lt;p&gt;此博文记录了如何在网页中简单提取视频源地址的方法，起因是STS 课程中有一个Assessment是要观看影片去回答问题。&lt;br&gt;
Youtube没有资源，网页操作不方便，我想把他放到VLC中播放。&lt;/p&gt;
&lt;h3 id="软件环境"&gt;软件环境&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Chrome浏览器&lt;/li&gt;
&lt;li&gt;VLC打开网络链接（视频源地址 M3U8）&lt;/li&gt;
&lt;li&gt;Windows 10&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="操作步骤"&gt;操作步骤&lt;/h3&gt;
&lt;p&gt;&lt;img alt="2022-09-30_22-42-59.jpg" loading="lazy" src="https://www.dukehsu.com/posts/blob-m3u8/images/535252403.jpg" title="2022-09-30_22-42-59.jpg"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用Chrome浏览器在视频播放页面按&lt;strong&gt;F12&lt;/strong&gt;进入开发模式(如上图所示)。&lt;/li&gt;
&lt;li&gt;在控制台找到&lt;strong&gt;Network&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;在搜索框输入&lt;strong&gt;M3U8&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;复制&lt;strong&gt;Request URL&lt;/strong&gt;中的值在VLC中打开即可&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="reference"&gt;Reference&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;How do we download a blob url video [closed]&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://stackoverflow.com/questions/42901942/how-do-we-download-a-blob-url-video"&gt;https://stackoverflow.com/questions/42901942/how-do-we-download-a-blob-url-video&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如何下载 blob 地址的视频资源&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.cnblogs.com/mq0036/p/14953209.html"&gt;https://www.cnblogs.com/mq0036/p/14953209.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Make a calculartor in c sharp</title><link>https://www.dukehsu.com/posts/353.html</link><pubDate>Sun, 25 Sep 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/353.html</guid><description>&lt;p&gt;&lt;img alt="202209251.jpg" loading="lazy" src="https://www.dukehsu.com/posts/353/images/3246224253.jpg" title="202209251.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="screenshots.gif" loading="lazy" src="https://www.dukehsu.com/posts/353/images/294359013.gif" title="screenshots.gif"&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an new windwos forms project.&lt;/li&gt;
&lt;li&gt;Design Size.&lt;/li&gt;
&lt;li&gt;Add panel.&lt;br&gt;
design panel color,size,style.&lt;/li&gt;
&lt;li&gt;Add button.&lt;br&gt;
calculartor button and oper button.&lt;/li&gt;
&lt;li&gt;Coding button function.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="declaring-variables"&gt;Declaring variables&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;fstNum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;secNum&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;oper&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="identify-button-function"&gt;Identify button function&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;btnCE&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;btnCE_Click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fstNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;secNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;backspace&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;backspace_Click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;btn9&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;btn9_Click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;9&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;9&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;btnAdd&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;btnAdd_Click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fstNum&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;oper&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;+&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;textDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;btnPM&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>JumpServer 开源堡垒机安装记录</title><link>https://www.dukehsu.com/posts/jumpserver.html</link><pubDate>Mon, 27 Jun 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/jumpserver.html</guid><description>&lt;p&gt;&lt;img alt="Image.png" loading="lazy" src="https://www.dukehsu.com/posts/jumpserver/images/2745785247.png" title="Image.png"&gt;&lt;/p&gt;
&lt;h3 id="云服务器配置"&gt;云服务器配置&lt;/h3&gt;
&lt;p&gt;CPU 2核 - 内存 4GB - 系统盘 60GB&lt;br&gt;
Centos7.6&lt;/p&gt;
&lt;h3 id="安装docker"&gt;安装docker&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#/bin/bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install -y yum-utils
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum-config-manager --enable docker-ce-nightly
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install docker-ce docker-ce-cli containerd.io
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start docker &lt;span class="c1"&gt;#启动容器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; docker &lt;span class="c1"&gt;#开机自启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo curl -L &lt;span class="s2"&gt;&amp;#34;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;uname -s&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;-&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;uname -m&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -o /usr/local/bin/docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod +x /usr/local/bin/docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="安装jumpserver"&gt;安装Jumpserver&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.21.2/quick_start.sh &lt;span class="p"&gt;|&lt;/span&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;等待安装完成之后即可访问HOST的地址进行登录管理配置资产&lt;/p&gt;</description></item><item><title>Intel UHD 630 Driver for Windows 7</title><link>https://www.dukehsu.com/posts/windows7driver.html</link><pubDate>Sat, 18 Jun 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windows7driver.html</guid><description>&lt;h2 id="intel-uhd-630-driver-for-windows-7"&gt;Intel UHD 630 Driver for Windows 7&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;CPU:&lt;/strong&gt; Intel® Core™ i7-8700&lt;br&gt;
&lt;strong&gt;Video:&lt;/strong&gt; Intel UHD 630&lt;br&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Windows 7 64-bit&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Driver Download&lt;br&gt;
&lt;a href="https://www.biostar.com.tw/app/en/event/H310_windowstool/win7_8th_i3_i5_Driver_2.0.rar"&gt;https://www.biostar.com.tw/app/en/event/H310_windowstool/win7_8th_i3_i5_Driver_2.0.rar&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sevenforums.com/drivers/424720-intel-uhd-630-driver-windows-7-a.html"&gt;https://www.sevenforums.com/drivers/424720-intel-uhd-630-driver-windows-7-a.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.intel.com/content/www/us/en/download/18799/28436/intel-graphics-driver-for-windows-15-45.html"&gt;https://www.intel.com/content/www/us/en/download/18799/28436/intel-graphics-driver-for-windows-15-45.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Steam客户端无法登录解决办法</title><link>https://www.dukehsu.com/posts/steamgame-1.html</link><pubDate>Sat, 21 May 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/steamgame-1.html</guid><description>&lt;p&gt;&lt;img alt="Image (1).png" loading="lazy" src="https://www.dukehsu.com/posts/steamgame-1/images/3925120165.png" title="Image (1).png"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;【Steam不再提供中国内地的CM服务器】CM（Connection Manager）服务器，用于 Steam 帐户登录认证、好友在线状态、聊天和游戏邀请等等方面。目前 Steam 获取的服务器列表已不存在中国内地服务器。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;由于steam不再提供中国内地的CM服务器，导致每周末晚高峰的时期，steam登录及其困难。写这篇文章是为了记录处理这个问题的过程和解决办法，希望能帮到大家；&lt;/p&gt;
&lt;h2 id="解决方案如下"&gt;解决方案如下&lt;/h2&gt;
&lt;h4 id="方法一-指定客户端连接协议启动客户端"&gt;方法一 指定客户端连接协议启动客户端&lt;/h4&gt;
&lt;p&gt;直接给steam.exe的快捷方式加参数-tcp或-websocket来指定连接协议启动客户端&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-tcp模式&lt;/strong&gt;&lt;br&gt;
&lt;img alt="tcp.jpg" loading="lazy" src="https://www.dukehsu.com/posts/steamgame-1/images/15209569.jpg" title="tcp.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-websocket模式&lt;/strong&gt;&lt;br&gt;
&lt;img alt="-websocket.jpg" loading="lazy" src="https://www.dukehsu.com/posts/steamgame-1/images/162499230.jpg" title="-websocket.jpg"&gt;&lt;br&gt;
为改善使用体验，我添加了一个启动目录，使得在启动时候可以选择启动模式&lt;br&gt;
&lt;img alt="luanchmenu.jpg" loading="lazy" src="https://www.dukehsu.com/posts/steamgame-1/images/1088052938.jpg" title="luanchmenu.jpg"&gt;&lt;br&gt;
如果此方法无法连接登录，请选择方法二&lt;/p&gt;
&lt;h4 id="方法二-添加hosts在默认情况下指定cm服务器--强制指定使用ws连接启动客户端"&gt;方法二 添加hosts,在默认情况下指定CM服务器 / 强制指定使用WS连接启动客户端&lt;/h4&gt;
&lt;p&gt;使用Dogfight360的工具添加host 指定MC服务器 ，然后通过WS连接模式启动客户端即可&lt;br&gt;
&lt;img alt="luanchclient.jpg" loading="lazy" src="https://www.dukehsu.com/posts/steamgame-1/images/2935382895.jpg" title="luanchclient.jpg"&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击检测延迟选择延迟较低的服务（晚高峰建议避开新加坡，日本，香港 我这里选择卢森堡，具体根据您的互联网运营商选择）&lt;/li&gt;
&lt;li&gt;选择指定的MC服务器&lt;/li&gt;
&lt;li&gt;点击应用选中&lt;/li&gt;
&lt;li&gt;通过-websocket连接模式启动即可&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此文章并不能保证百分之百可以解决。通过希望通过此文章能够让您尝试多一个方法去解决此问题。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;参考阅读：&lt;br&gt;
&lt;strong&gt;Dogfight 360的博客&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.dogfight360.com/blog/knowledge-base/fix_steamlogin/"&gt;https://www.dogfight360.com/blog/knowledge-base/fix_steamlogin/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Steam status&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://steamstat.us/"&gt;https://steamstat.us/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其乐&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://keylol.com/"&gt;https://keylol.com/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Google Chrome 參數大全</title><link>https://www.dukehsu.com/posts/chrome.html</link><pubDate>Mon, 21 Mar 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/chrome.html</guid><description>&lt;h1 id="前言"&gt;前言&lt;/h1&gt;
&lt;p&gt;在开发Web项目当中，浏览器必不可少，而浏览器的启动参数可以帮我们实现很多功能。&lt;/p&gt;
&lt;h2 id="常用参数"&gt;常用参数&lt;/h2&gt;
&lt;p&gt;常用参数请参考下表。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;序号&lt;/th&gt;
&lt;th&gt;参数&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&amp;ndash;allow-outdated-plugins&lt;/td&gt;
&lt;td&gt;不停用过期的插件。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&amp;ndash;allow-running-insecure-content&lt;/td&gt;
&lt;td&gt;默认情况下，https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&amp;ndash;allow-scripting-gallery&lt;/td&gt;
&lt;td&gt;允许拓展脚本在官方应用中心生效。默认情况下，出于安全因素考虑这些脚本都会被阻止。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-desktop-notifications&lt;/td&gt;
&lt;td&gt;禁用桌面通知，在 Windows 中桌面通知默认是启用的。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-file-system&lt;/td&gt;
&lt;td&gt;停用 FileSystem API。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-preconnect&lt;/td&gt;
&lt;td&gt;停用 TCP/IP 预连接。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-remote-fonts&lt;/td&gt;
&lt;td&gt;关闭远程字体支持。SVG 中字体不受此参数影响。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-web-security&lt;/td&gt;
&lt;td&gt;不遵守同源策略。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&amp;ndash;disk-cache-dir&lt;/td&gt;
&lt;td&gt;将缓存设置在给定的路径。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&amp;ndash;disk-cache-size&lt;/td&gt;
&lt;td&gt;设置缓存大小上限，以字节为单位。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&amp;ndash;dns-prefetch-disable&lt;/td&gt;
&lt;td&gt;停用DNS预读。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&amp;ndash;enable-print-preview&lt;/td&gt;
&lt;td&gt;启用打印预览。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&amp;ndash;extensions-update-frequency&lt;/td&gt;
&lt;td&gt;设定拓展自动更新频率，以秒为单位。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&amp;ndash;incognito&lt;/td&gt;
&lt;td&gt;让浏览器直接以隐身模式启动。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&amp;ndash;keep-alive-for-test&lt;/td&gt;
&lt;td&gt;最后一个标签关闭后仍保持浏览器进程。（某种意义上可以提高热启动速度，不过你最好得有充足的内存）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&amp;ndash;kiosk&lt;/td&gt;
&lt;td&gt;启用kiosk模式。（一种类似于全屏的浏览模式）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&amp;ndash;lang&lt;/td&gt;
&lt;td&gt;使用指定的语言。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&amp;ndash;no-displaying-insecure-content&lt;/td&gt;
&lt;td&gt;默认情况下，https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&amp;ndash;no-referrers&lt;/td&gt;
&lt;td&gt;不发送 Http-Referer 头。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&amp;ndash;no-startup-window&lt;/td&gt;
&lt;td&gt;启动时不建立窗口。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;&amp;ndash;proxy-server&lt;/td&gt;
&lt;td&gt;使用给定的代理服务器，这个参数只对 http 和 https 有效。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&amp;ndash;start-maximized&lt;/td&gt;
&lt;td&gt;启动时最大化。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;&amp;ndash;single-process&lt;/td&gt;
&lt;td&gt;以单进程模式运行 Chromium。（启动时浏览器会给出不安全警告）。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&amp;ndash;user-agent&lt;/td&gt;
&lt;td&gt;使用给定的 User-Agent 字符串。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&amp;ndash;process-per-tab&lt;/td&gt;
&lt;td&gt;每个分页使用单独进程。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&amp;ndash;process-per-site&lt;/td&gt;
&lt;td&gt;每个站点使用单独进程。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&amp;ndash;in-process-plugins&lt;/td&gt;
&lt;td&gt;插件不启用单独进程。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-popup-blocking&lt;/td&gt;
&lt;td&gt;禁用弹出拦截。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-javascript&lt;/td&gt;
&lt;td&gt;禁用JavaScript。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-java&lt;/td&gt;
&lt;td&gt;禁用Java。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&amp;ndash;disable-plugins&lt;/td&gt;
&lt;td&gt;禁用插件。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;–disable-images&lt;/td&gt;
&lt;td&gt;禁用图像。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id="更多参数"&gt;更多参数&lt;/h1&gt;
&lt;p&gt;由于水平有限，下表为网络翻译，了解跟多可根基参数，查找相关资料。&lt;/p&gt;</description></item><item><title>Windows10 创建符号链接相关笔记</title><link>https://www.dukehsu.com/posts/linkfile.html</link><pubDate>Wed, 09 Mar 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/linkfile.html</guid><description>&lt;h4 id="为什么要创建符号链接"&gt;为什么要创建符号链接&lt;/h4&gt;
&lt;p&gt;部分游戏无法识别中文路径&lt;br&gt;
需要从第三方游戏库加载到官方游戏库&lt;br&gt;
节省时间提高效率&lt;/p&gt;
&lt;h4 id="使用linkexe链接"&gt;使用Linkexe链接&lt;/h4&gt;
&lt;p&gt;配置文件说明&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Count]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;文件个数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FileCount=1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[PathInfo]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;SourceFile源文件相对于本exe所在目录 DriveLetter映射目标路径
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SourceFile0=Battle.net
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DriveLetter0=C:\ProgramData\
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;;注意序号默认从0开始，如果设置非0会报错无法正常运行&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注： 该程序非公开，此配置文件只做记录&lt;/p&gt;
&lt;h4 id="使用powershell脚本创建符号链接"&gt;使用Powershell脚本创建符号链接&lt;/h4&gt;
&lt;p&gt;待更新完善&lt;/p&gt;
&lt;p&gt;&lt;code&gt;New-Item -ItemType SymbolicLink -Path &amp;quot;Symbolic\Link\Path&amp;quot; -Target &amp;quot;New\Target\For\Link&amp;quot; -Force&lt;/code&gt;&lt;/p&gt;
&lt;h4 id="相关阅读"&gt;相关阅读&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;How to change the drive in a symbolic link?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://superuser.com/questions/1362951/how-to-change-the-drive-in-a-symbolic-link"&gt;https://superuser.com/questions/1362951/how-to-change-the-drive-in-a-symbolic-link#&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;微软知识中心&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink"&gt;https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Powershell&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/new-item?view=powershell-7.2&amp;amp;viewFallbackFrom=powershell-6"&gt;https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/new-item?view=powershell-7.2&amp;amp;viewFallbackFrom=powershell-6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应用实例&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.itiohub.com/log/steamgame.html"&gt;https://www.itiohub.com/log/steamgame.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>云服务器安装ikuai路由</title><link>https://www.dukehsu.com/posts/ikuairouter.html</link><pubDate>Wed, 09 Mar 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ikuairouter.html</guid><description>&lt;h4 id="服务器配置"&gt;服务器配置&lt;/h4&gt;
&lt;p&gt;镜像: Ubuntu 18.04 64位&lt;br&gt;
CPU: 1核&lt;br&gt;
内存: 2G&lt;br&gt;
带宽：2mbps&lt;br&gt;
系统盘总容量: 20GB&lt;br&gt;
数据盘总容量: 0GB&lt;/p&gt;
&lt;h4 id="安装步骤"&gt;安装步骤&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;查看云服务器网络配置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;cat /etc/network/interfaces&lt;/code&gt;&lt;br&gt;
或者&lt;br&gt;
netstat -rn&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下载ISO安装包&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;x32位&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;wge thttps://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x32_3.5.11_Build202112031159.iso -O ikuai8.iso&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;x64位&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;wget https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.5.11_Build202112031159.iso -O ikuai8.iso&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;挂载ISO镜像&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;sudo mount ikuai8.iso /mnt&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复制ISO镜像启动文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;sudo cp -rpf /mnt/boot /&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重启服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;sudo reboot&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过VNC控制进入服务器面板&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;正常ISO安装爱快系统&lt;br&gt;
解除LAN口绑定，将网卡绑定到WAN口&lt;br&gt;
设置WAN口的IP地址为云服务器的内网IP地址&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在安装好的路由控制台开启外网访问WEB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;进入控制台\&amp;ldquo;开启外网访问WEB\&amp;rdquo;&lt;br&gt;
o、其他选项 &amp;ndash;&amp;gt; 2、开启外网访问web&lt;/p&gt;
&lt;p&gt;安装完成之后使用云服务器的外网IP地址即可访问你的ikuai路由&lt;/p&gt;
&lt;hr&gt;</description></item><item><title>无法加载应用程序或操作系统，原因是所需文件丢失或包含错误 解决笔记</title><link>https://www.dukehsu.com/posts/windowsboot.html</link><pubDate>Thu, 03 Mar 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windowsboot.html</guid><description>&lt;h4 id="故障现象"&gt;故障现象&lt;/h4&gt;
&lt;p&gt;&lt;img alt="89c245fe-f41d-46c7-a45b-28d7872f967e.png" loading="lazy" src="https://www.dukehsu.com/posts/windowsboot/images/392482735.png" title="89c245fe-f41d-46c7-a45b-28d7872f967e.png"&gt;&lt;/p&gt;
&lt;h4 id="故障发生前操作"&gt;故障发生前操作&lt;/h4&gt;
&lt;p&gt;使用Symantec ghost磁盘对拷之后新磁盘上的系统无法 进入系统出现以上错误&lt;/p&gt;
&lt;h4 id="设备情况"&gt;设备情况&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;联想ThinkPad E580&lt;/li&gt;
&lt;li&gt;源磁盘和新的目标磁盘都是MBR模式&lt;/li&gt;
&lt;li&gt;2TB磁盘有9个分区，每一个分区一个操作系统&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="解决步骤"&gt;解决步骤&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;使用PE系统里面的引导修复修复其中一个分区&lt;/li&gt;
&lt;li&gt;使用磁盘管理工具重建引导（注意备份分区表）&lt;/li&gt;
&lt;li&gt;重启电脑进入BIOS关闭快速启动，选择传统模式启动即可（如果需要UEFI启动请根据实际情况设置）&lt;/li&gt;
&lt;li&gt;在当前进入的操作系统中使用EasyBCD 添加和编辑引导即可&lt;br&gt;
&lt;img alt="Snipaste_2022-03-04_01-16-13.jpg" loading="lazy" src="https://www.dukehsu.com/posts/windowsboot/images/685272366.jpg" title="Snipaste_2022-03-04_01-16-13.jpg"&gt;&lt;/li&gt;
&lt;li&gt;将引导添加到相对应的分区即可&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="参考阅读"&gt;参考阅读&lt;/h4&gt;
&lt;p&gt;EsayBCD&lt;br&gt;
&lt;a href="https://neosmart.net/EasyBCD/"&gt;https://neosmart.net/EasyBCD/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;磁碟分割MBR、GPT是什麼？&lt;br&gt;
&lt;a href="https://www.linwei.com.tw/forum-detail/76/"&gt;https://www.linwei.com.tw/forum-detail/76/&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="声明"&gt;声明&lt;/h4&gt;
&lt;p&gt;此文章作为本人日常笔记，不对读者负责；&lt;br&gt;
数据无价，谨慎操作&lt;/p&gt;</description></item><item><title>使用脚本从APNIC获取中国IP地址列表</title><link>https://www.dukehsu.com/posts/linuxsh.html</link><pubDate>Thu, 17 Feb 2022 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/linuxsh.html</guid><description>&lt;h2 id="說明"&gt;說明&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;該shell 腳本能從apnic獲取ip地址導出到txt文檔中&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -c http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat delegated-apnic-latest &lt;span class="p"&gt;|&lt;/span&gt; awk -F &lt;span class="s1"&gt;&amp;#39;|&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/CN/&amp;amp;&amp;amp;/ipv4/ {print $4 &amp;#34;/&amp;#34; 32-log($5)/log(2)}&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; cat &amp;gt; ipv4.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat delegated-apnic-latest &lt;span class="p"&gt;|&lt;/span&gt; awk -F &lt;span class="s1"&gt;&amp;#39;|&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/CN/&amp;amp;&amp;amp;/ipv6/ {print $4 &amp;#34;/&amp;#34; 32-log($5)/log(2)}&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; cat &amp;gt; ipv6.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat delegated-apnic-latest &lt;span class="p"&gt;|&lt;/span&gt; awk -F &lt;span class="s1"&gt;&amp;#39;|&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/HK/&amp;amp;&amp;amp;/ipv4/ {print $4 &amp;#34;/&amp;#34; 32-log($5)/log(2)}&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; cat &amp;gt; ipv4-hk.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat delegated-apnic-latest &lt;span class="p"&gt;|&lt;/span&gt; awk -F &lt;span class="s1"&gt;&amp;#39;|&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/HK/&amp;amp;&amp;amp;/ipv6/ {print $4 &amp;#34;/&amp;#34; 32-log($5)/log(2)}&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; cat &amp;gt; ipv6-hk.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>将盖伦游戏平台下的STEAM游戏联接到你的STEAM游戏库</title><link>https://www.dukehsu.com/posts/steamgame.html</link><pubDate>Wed, 15 Dec 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/steamgame.html</guid><description>&lt;p&gt;&lt;img alt="Image.png" loading="lazy" src="https://www.dukehsu.com/posts/steamgame/images/183440702.png" title="Image.png"&gt;&lt;/p&gt;
&lt;h2 id="将盖伦游戏平台下的steam游戏连接到你的steam游戏库"&gt;将盖伦游戏平台下的STEAM游戏连接到你的STEAM游戏库&lt;/h2&gt;
&lt;h4 id="复制acf文件"&gt;复制&amp;quot;acf&amp;quot;文件&lt;/h4&gt;
&lt;p&gt;将盖伦更新好的STEAM游戏目录下的acf 文件拷贝到 STEAM库SteamLibrary\steamapps\目录下&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用批处理命令将acf文件拷贝到SteamLibrary\steamapps\目录下&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;copy &amp;#34;Z:\我的游戏\单机游戏\NARAKA BLADEPOINT\appmanifest_1203220.acf&amp;#34; &amp;#34;Z:\SteamLibrary\steamapps&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(实际路径请根据自身磁盘路径填写)&lt;/p&gt;
&lt;h4 id="创建软连接将游戏目录连接到steam库"&gt;创建软连接，将游戏目录连接到STEAM库&lt;/h4&gt;
&lt;p&gt;将盖伦更新好的STEAM游戏目录下的游戏本体目录通过mklink命令联接到STEAM库SteamLibrary\steamapps\common\目录&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用mklink命令创建软链接将盖伦的STEAM游戏本体文件联接到STEAM库目录&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mklink /J &amp;#34;Z:\SteamLibrary\steamapps\common\NARAKA BLADEPOINT&amp;#34; &amp;#34;Z:\我的游戏\单机游戏\NARAKA BLADEPOINT\NARAKA BLADEPOINT\&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(实际路径请根据自身磁盘路径填写)&lt;/p&gt;
&lt;p&gt;只需要以上两条命令即可将盖伦平台的STEAM游戏联接到自己的STEAM库里&lt;/p&gt;
&lt;h4 id="常见问题"&gt;常见问题&lt;/h4&gt;
&lt;h5 id="命令不生效"&gt;命令不生效&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;请检查批处理语法或者文件目录是否正确&lt;/li&gt;
&lt;li&gt;请检查文件编码，如果有中文目录请保存为ANSI编码格式&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>海康威视NVR解绑萤石解决办法</title><link>https://www.dukehsu.com/posts/hikvison.html</link><pubDate>Wed, 15 Sep 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/hikvison.html</guid><description>&lt;h3 id="海康威视nvr解绑萤石解决办法"&gt;海康威视NVR解绑萤石解决办法&lt;/h3&gt;
&lt;p&gt;经常遇到店家转让门店， NVR 绑定原先业主的手机号等等，导致现有业主无法添加设备，于是就需要解绑设备；&lt;/p&gt;
&lt;h4 id="思路"&gt;思路&lt;/h4&gt;
&lt;p&gt;已经带解绑程序的设备可直接在设备的**“网络配置-云平台”&lt;strong&gt;中进行解绑（需要设备管理员密码）&lt;br&gt;
未带解绑程序需要去官网下载带解绑程序的固件包(4.0版本以上默认支持解绑)&lt;br&gt;
下载于设备匹配的固件&lt;br&gt;
使用U盘插入设备进行设备升级&lt;br&gt;
使用Web管理端进行设备升级&lt;br&gt;
升级完成之后设备自动重启 进入&lt;/strong&gt;“网络配置-云平台”**中进行解绑即可&lt;/p&gt;
&lt;h4 id="升级包下载地址"&gt;升级包下载地址&lt;/h4&gt;
&lt;p&gt;中文&lt;br&gt;
&lt;a href="https://www.hikvision.com/cn/support/Downloads/Device-upgrade-package/"&gt;https://www.hikvision.com/cn/support/Downloads/Device-upgrade-package/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Google个人API 申请笔记 -Google Personal API Keys Apply</title><link>https://www.dukehsu.com/posts/googleapi.html</link><pubDate>Wed, 01 Sep 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/googleapi.html</guid><description>&lt;p&gt;&lt;img alt="20210902.png" loading="lazy" src="https://www.dukehsu.com/posts/googleapi/images/2686517536.png" title="20210902.png"&gt;&lt;br&gt;
因测试Kodi中Youtube插件的功能需要用到GoogleAPI， 故记录一下Google个人API的申请笔记&lt;br&gt;
此笔记编辑日期2021/09/02&lt;br&gt;
若Google有更新，请以Google为准&lt;/p&gt;
&lt;h3 id="具体步骤"&gt;具体步骤&lt;/h3&gt;
&lt;h5 id="凭证基本信息填写"&gt;凭证基本信息填写&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;登录&lt;a href="https://console.cloud.google.com/"&gt;https://console.cloud.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创建一个项目&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;启用API和服务&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择YouTube Data API v3 服务并启用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在YouTube Data API v3 服务中选择左边栏的凭据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置OAuth同意屏幕&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;User Type 我选的外部 (因为不是GoogleWorkSpace用户)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;填写应用信息（带红色星号选项必填）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;添加范围(根据需求自己选择即可)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;添加测试用户（我加的我自己）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保存之后即可&lt;/p&gt;
&lt;h5 id="api密匙和oauth客户端id创建"&gt;API密匙和OAuth客户端ID创建&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在凭据中直接创建API密匙和OAuth客户端ID(客户端根据自身需求选择)即可&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据Google API 给的密匙依次填入Kodi中的Youtube应用中即可使用&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="在kodi中使用youtube的体验"&gt;在Kodi中使用Youtube的体验&lt;/h3&gt;
&lt;h5 id="优点"&gt;优点&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;无广告&lt;/li&gt;
&lt;li&gt;搜索结果精准&lt;/li&gt;
&lt;li&gt;操作简便&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="缺点"&gt;缺点&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;加载速度极慢(非大陆网路环境)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;参考阅读&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.yinxiang.com/everhub/note/53490d9c-fb0a-4652-a109-7cc119ad9593"&gt;https://www.yinxiang.com/everhub/note/53490d9c-fb0a-4652-a109-7cc119ad9593&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/anxdpanic/plugin.video.youtube/wiki/Personal-API-Keys"&gt;https://github.com/anxdpanic/plugin.video.youtube/wiki/Personal-API-Keys&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Github上那些V2ray客户端们</title><link>https://www.dukehsu.com/posts/goodguys.html</link><pubDate>Mon, 30 Aug 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/goodguys.html</guid><description>&lt;h5 id="v2raynwindows"&gt;v2rayN（Windows）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/2dust/v2rayN/releases"&gt;https://github.com/2dust/v2rayN/releases&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="v2rayumac"&gt;V2rayU（Mac）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/yanue/V2rayU/releases"&gt;https://github.com/yanue/V2rayU/releases&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="v2rayngandroid"&gt;v2rayNG（Android）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/2dust/v2rayNG/releases"&gt;https://github.com/2dust/v2rayNG/releases&lt;/a&gt;&lt;br&gt;
Google Play&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.v2ray.ang"&gt;https://play.google.com/store/apps/details?id=com.v2ray.ang&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="kitsunebiandroid"&gt;Kitsunebi（Android）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/eycorsican/kitsunebi-android/releases"&gt;https://github.com/eycorsican/kitsunebi-android/releases&lt;/a&gt;&lt;br&gt;
Google Play&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android"&gt;https://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="bifrostvandroid"&gt;BifrostV（Android）&lt;/h5&gt;
&lt;p&gt;Google Play&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv"&gt;https://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="kitsunebiios"&gt;Kitsunebi（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8"&gt;https://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="i2rayios"&gt;i2Ray（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/i2ray/id1445270056?mt=8"&gt;https://itunes.apple.com/us/app/i2ray/id1445270056?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="shadowrocketios"&gt;Shadowrocket（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8"&gt;https://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="pepiios"&gt;Pepi（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/pepi/id1283082051?mt=8"&gt;https://itunes.apple.com/us/app/pepi/id1283082051?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="quantumultios"&gt;Quantumult（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/quantumult/id1252015438?mt=8"&gt;https://itunes.apple.com/us/app/quantumult/id1252015438?mt=8&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Windows10kisboot.sys蓝屏解决办法</title><link>https://www.dukehsu.com/posts/kisboot_windows10.html</link><pubDate>Sat, 28 Aug 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/kisboot_windows10.html</guid><description>&lt;h2 id="如何解决-kisbootsys蓝屏"&gt;如何解决 kisboot.sys蓝屏&lt;/h2&gt;
&lt;p&gt;&lt;img alt="20210828202508.jpg" loading="lazy" src="https://www.dukehsu.com/posts/kisboot_windows10/images/3896742626.jpg" title="20210828202508.jpg"&gt;&lt;/p&gt;
&lt;h4 id="故障现象"&gt;故障现象：&lt;/h4&gt;
&lt;p&gt;计算机无法进入操作系统&lt;br&gt;
蓝屏提示无法验证文件或其某个xxx项的数字签名&lt;br&gt;
文件：C：\windoiws\system32\drivers\kisboot.sys&lt;br&gt;
错误代码：0xc0000428&lt;/p&gt;
&lt;p&gt;无法进入安全模式&lt;/p&gt;
&lt;h4 id="解决办法"&gt;解决办法&lt;/h4&gt;
&lt;p&gt;使用U盘的Windows PE 系统，删除计算机操作系统中&lt;br&gt;
&lt;code&gt;C：\windoiws\system32\drivers\&lt;/code&gt;&lt;br&gt;
目录下的 &lt;code&gt;kisboot.sys&lt;/code&gt; 文件 &lt;strong&gt;重新启动即可&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;参考阅读：&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.fujieace.com/computer-practical/kisboot-sys.html"&gt;https://www.fujieace.com/computer-practical/kisboot-sys.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>云服务器安装爱快组建SD-WAN</title><link>https://www.dukehsu.com/posts/sd-wan.html</link><pubDate>Sun, 01 Aug 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/sd-wan.html</guid><description>&lt;h3 id="云服务器"&gt;云服务器&lt;/h3&gt;
&lt;p&gt;通用计算型&lt;br&gt;
| s6.medium.2 | 1vCPUs | 2GiB&lt;br&gt;
镜像&lt;br&gt;
Ubuntu 16.04 server 64bit&lt;/p&gt;
&lt;h3 id="操作步骤"&gt;操作步骤&lt;/h3&gt;
&lt;p&gt;在ssh命令行中下载一键脚本&lt;br&gt;
&lt;code&gt;wget -O install_ikiso.sh&lt;/code&gt;&lt;br&gt;
给脚本权限&lt;br&gt;
&lt;code&gt;chmod +x install_ikiso.sh&lt;/code&gt;&lt;br&gt;
下载并安装爱快&lt;br&gt;
&lt;code&gt;./install_ikiso.sh x32&lt;/code&gt;&lt;br&gt;
通过云平台远程登录服务器运行&lt;br&gt;
&lt;code&gt;reboot&lt;/code&gt;&lt;br&gt;
选择爱快启动 进行安装配置&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-解除lan口绑定&lt;/li&gt;
&lt;li&gt;-绑定wan口&lt;/li&gt;
&lt;li&gt;-设置wan口地址和网关&lt;/li&gt;
&lt;li&gt;-若不开启WAN口访问请从内网进入web设置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;进入WEB 管理界面改密码 绑定云平台之后就可以组SD-WAN了&lt;/p&gt;
&lt;p&gt;参考阅读：&lt;a href="https://bbs.ikuai8.com/thread-121888-1-1.html"&gt;https://bbs.ikuai8.com/thread-121888-1-1.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Telegram基本的安全设置和搭配火绒安全规则过滤下载文件</title><link>https://www.dukehsu.com/posts/telegram.html</link><pubDate>Wed, 28 Jul 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/telegram.html</guid><description>&lt;p&gt;最近不少外卖商家被盗号然后进行勒索，原因是商家接受了被控程序，具体操作是程序控制了商家已登录Telegram的电脑，然后打包telegram，回传到服务器，在服务器那边上号开二次验证，将商家这边的设备全部踢下线。然后开始勒索。&lt;/p&gt;
&lt;h3 id="telegram基本的安全设置"&gt;Telegram基本的安全设置&lt;/h3&gt;
&lt;p&gt;将【设置-高级-自动下载媒体文件(私聊，群组，频道)】下载文件选项全部关闭&lt;br&gt;
&lt;img alt="1.jpg" loading="lazy" src="https://www.dukehsu.com/posts/telegram/images/3299485023.jpg" title="1.jpg"&gt;&lt;/p&gt;
&lt;h3 id="火绒安全规则设置"&gt;火绒安全规则设置&lt;/h3&gt;
&lt;p&gt;在【安全设置-高级防护-自定义规则】中添加规则&lt;br&gt;
防止Telegram自动下载媒体文件到电脑&lt;br&gt;
&lt;img alt="2.jpg" loading="lazy" src="https://www.dukehsu.com/posts/telegram/images/355256707.jpg" title="2.jpg"&gt;&lt;/p&gt;
&lt;h3 id="验证"&gt;验证&lt;/h3&gt;
&lt;p&gt;&lt;img alt="3.png" loading="lazy" src="https://www.dukehsu.com/posts/telegram/images/1898755064.png" title="3.png"&gt;&lt;/p&gt;</description></item><item><title>勒索病毒通用防范措施建议</title><link>https://www.dukehsu.com/posts/memo.html</link><pubDate>Wed, 28 Jul 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/memo.html</guid><description>&lt;h3 id="勒索病毒通用防范措施建议"&gt;勒索病毒通用防范措施建议&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;摘自：2020年 中国互联网网络安全报告 85-86页&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从主要勒索病毒家族传播方式来看，安全性较差的远程桌面协议（Remote Desktop Protocol，RDP）是最常见的攻击媒介。其次为利用垃圾邮件、钓鱼邮件、水坑网站等方式传播，诱导受害者下载运行勒索病毒。针对主要以远程桌面登录爆破方式传播的勒索病毒，&lt;/p&gt;
&lt;h4 id="建议防范措施如下"&gt;建议防范措施如下：&lt;/h4&gt;
&lt;p&gt;● 设备登录口令应为强口令（字母+数字+特殊符号的长组合），定期修改口令；&lt;br&gt;
● 不同的设备应使用不同的强口令，避免一个口令重复使用的情况；&lt;br&gt;
● 定期进行数据备份并异地保存;&lt;br&gt;
● 关闭或者修改135～139、445等高危端口，关闭服务器之间的文件共享；&lt;br&gt;
● 定期对资产进行安全自查，及时安装漏洞补丁；&lt;br&gt;
● 对内网的安全域进行合理的划分，域之间做好访问控制列表（Access Control Lists，ACL）限制，尤其是域管理员的计算机，如果其被攻破，会带来整个局域网沦陷的风险；&lt;br&gt;
● 做好全流量日志的记录和监控，定期检查设备是否存在异常情况；&lt;br&gt;
● 安装安全软件，提高服务器的安全性，以防核心数据被加密，造成重大损失。针对主要以钓鱼等方式传播的勒索病毒，建议防范措施如下：&lt;br&gt;
● 不要下载网络上不明的档案、文件、图片或影片，谨慎对待陌生邮件、短信 中的链接；&lt;br&gt;
● 从正规渠道下载安装软件；&lt;br&gt;
● 注意规范U盘等移动介质的使用，关闭自动播放功能，使用前先进行查杀；&lt;br&gt;
● 定期进行安全培训，提升网络管理员和普通用户的安全意识。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;摘自：2020年 中国互联网网络安全报告 85-86页&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>用iptables 转发流量到另外一台服务器</title><link>https://www.dukehsu.com/posts/iptables.html</link><pubDate>Wed, 28 Jul 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/iptables.html</guid><description>&lt;h3 id="需求"&gt;需求&lt;/h3&gt;
&lt;p&gt;A访问D延迟很大，需要降低A-B之间的延迟，提高访问速度&lt;/p&gt;
&lt;h3 id="实现目的"&gt;实现目的&lt;/h3&gt;
&lt;p&gt;用C服务器转发A的流量到B，通过B访问D&lt;/p&gt;
&lt;h3 id="路径"&gt;路径&lt;/h3&gt;
&lt;p&gt;访问端A - C服务器 - B服务器 - D目标服务器&lt;/p&gt;
&lt;h3 id="环境"&gt;环境&lt;/h3&gt;
&lt;p&gt;C B 服务器&lt;br&gt;
CentOS 7.6 64bit&lt;/p&gt;
&lt;h3 id="iptables命令"&gt;iptables命令&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;编辑&lt;span class="s2"&gt;&amp;#34;/etc/sysctl.conf&amp;#34;&lt;/span&gt;，将net.ipv4.ip_forward改成1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iptables -t nat -A PREROUTING -p tcp --dport 源端口 -j DNAT --to-destination 目标地址:目标端口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iptables -t nat -A POSTROUTING -j MASQUERADE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="参考"&gt;参考：&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.zhangguangtong.cn/2016/03/%E7%94%A8iptables%E5%B0%86%E6%B5%81%E9%87%8F%E8%BD%AC%E5%8F%91%E5%88%B0%E5%8F%A6%E5%A4%96%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8/"&gt;https://www.zhangguangtong.cn/2016/03/%E7%94%A8iptables%E5%B0%86%E6%B5%81%E9%87%8F%E8%BD%AC%E5%8F%91%E5%88%B0%E5%8F%A6%E5%A4%96%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>IPv4 子网查询-转载自V2EX</title><link>https://www.dukehsu.com/posts/ipv4subnets.html</link><pubDate>Wed, 21 Jul 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ipv4subnets.html</guid><description>&lt;h3 id="子网-subnets"&gt;子网 Subnets&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CIDR&lt;/th&gt;
&lt;th&gt;子网掩码&lt;/th&gt;
&lt;th&gt;地址数&lt;/th&gt;
&lt;th&gt;通配符&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/32&lt;/td&gt;
&lt;td&gt;255.255.255.255&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.0.0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/31&lt;/td&gt;
&lt;td&gt;255.255.255.254&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.0.0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/30&lt;/td&gt;
&lt;td&gt;255.255.255.252&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0.0.0.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/29&lt;/td&gt;
&lt;td&gt;255.255.255.248&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;0.0.0.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/28&lt;/td&gt;
&lt;td&gt;255.255.255.240&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;0.0.0.15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/27&lt;/td&gt;
&lt;td&gt;255.255.255.224&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;0.0.0.31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/26&lt;/td&gt;
&lt;td&gt;255.255.255.192&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;0.0.0.63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/25&lt;/td&gt;
&lt;td&gt;255.255.255.128&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;0.0.0.127&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/24&lt;/td&gt;
&lt;td&gt;255.255.255.0&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;td&gt;0.0.0.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/23&lt;/td&gt;
&lt;td&gt;255.255.254.0&lt;/td&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;0.0.1.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/22&lt;/td&gt;
&lt;td&gt;255.255.252.0&lt;/td&gt;
&lt;td&gt;1,024&lt;/td&gt;
&lt;td&gt;0.0.3.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/21&lt;/td&gt;
&lt;td&gt;255.255.248.0&lt;/td&gt;
&lt;td&gt;2,048&lt;/td&gt;
&lt;td&gt;0.0.7.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/20&lt;/td&gt;
&lt;td&gt;255.255.240.0&lt;/td&gt;
&lt;td&gt;4,096&lt;/td&gt;
&lt;td&gt;0.0.15.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/19&lt;/td&gt;
&lt;td&gt;255.255.224.0&lt;/td&gt;
&lt;td&gt;8,192&lt;/td&gt;
&lt;td&gt;0.0.31.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/18&lt;/td&gt;
&lt;td&gt;255.255.192.0&lt;/td&gt;
&lt;td&gt;16,384&lt;/td&gt;
&lt;td&gt;0.0.63.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/17&lt;/td&gt;
&lt;td&gt;255.255.128.0&lt;/td&gt;
&lt;td&gt;32,768&lt;/td&gt;
&lt;td&gt;0.0.127.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/16&lt;/td&gt;
&lt;td&gt;255.255.0.0&lt;/td&gt;
&lt;td&gt;65,536&lt;/td&gt;
&lt;td&gt;0.0.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/15&lt;/td&gt;
&lt;td&gt;255.254.0.0&lt;/td&gt;
&lt;td&gt;131,072&lt;/td&gt;
&lt;td&gt;0.1.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/14&lt;/td&gt;
&lt;td&gt;255.252.0.0&lt;/td&gt;
&lt;td&gt;262,144&lt;/td&gt;
&lt;td&gt;0.3.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/13&lt;/td&gt;
&lt;td&gt;255.248.0.0&lt;/td&gt;
&lt;td&gt;524,288&lt;/td&gt;
&lt;td&gt;0.7.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/12&lt;/td&gt;
&lt;td&gt;255.240.0.0&lt;/td&gt;
&lt;td&gt;1,048,576&lt;/td&gt;
&lt;td&gt;0.15.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/11&lt;/td&gt;
&lt;td&gt;255.224.0.0&lt;/td&gt;
&lt;td&gt;2,097,152&lt;/td&gt;
&lt;td&gt;0.31.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/10&lt;/td&gt;
&lt;td&gt;255.192.0.0&lt;/td&gt;
&lt;td&gt;4,194,304&lt;/td&gt;
&lt;td&gt;0.63.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/9&lt;/td&gt;
&lt;td&gt;255.128.0.0&lt;/td&gt;
&lt;td&gt;8,388,608&lt;/td&gt;
&lt;td&gt;0.127.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/8&lt;/td&gt;
&lt;td&gt;255.0.0.0&lt;/td&gt;
&lt;td&gt;16,777,216&lt;/td&gt;
&lt;td&gt;0.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/7&lt;/td&gt;
&lt;td&gt;254.0.0.0&lt;/td&gt;
&lt;td&gt;33,554,432&lt;/td&gt;
&lt;td&gt;1.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/6&lt;/td&gt;
&lt;td&gt;252.0.0.0&lt;/td&gt;
&lt;td&gt;67,108,864&lt;/td&gt;
&lt;td&gt;3.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/5&lt;/td&gt;
&lt;td&gt;248.0.0.0&lt;/td&gt;
&lt;td&gt;134,217,728&lt;/td&gt;
&lt;td&gt;7.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/4&lt;/td&gt;
&lt;td&gt;240.0.0.0&lt;/td&gt;
&lt;td&gt;268,435,456&lt;/td&gt;
&lt;td&gt;15.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/3&lt;/td&gt;
&lt;td&gt;224.0.0.0&lt;/td&gt;
&lt;td&gt;536,870,912&lt;/td&gt;
&lt;td&gt;31.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/2&lt;/td&gt;
&lt;td&gt;192.0.0.0&lt;/td&gt;
&lt;td&gt;1,073,741,824&lt;/td&gt;
&lt;td&gt;63.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/1&lt;/td&gt;
&lt;td&gt;128.0.0.0&lt;/td&gt;
&lt;td&gt;2,147,483,648&lt;/td&gt;
&lt;td&gt;127.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/0&lt;/td&gt;
&lt;td&gt;0.0.0.0&lt;/td&gt;
&lt;td&gt;4,294,967,296&lt;/td&gt;
&lt;td&gt;255.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ip-地址类-ip-address-classes"&gt;IP 地址类 IP Address Classes&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Class&lt;/th&gt;
&lt;th&gt;地址段&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;0.0.0.0 - 127.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;128.0.0.0 - 191.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;192.0.0.0 - 223.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;224.0.0.0 - 239.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;240.0.0.0 - 255.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="保留私有地址段"&gt;保留（私有）地址段&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Class A&lt;/th&gt;
&lt;th&gt;10.0.0.0 - 10.255.255.255&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Class B&lt;/td&gt;
&lt;td&gt;172.16.0.0 - 172.31.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Class C&lt;/td&gt;
&lt;td&gt;192.168.0.0 - 192.168.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;localhost&lt;/td&gt;
&lt;td&gt;127.0.0.0 - 127.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zeroconf&lt;/td&gt;
&lt;td&gt;169.254.0.0 - 169.254.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内部路由 (&lt;a href="https://tools.ietf.org/html/rfc6598"&gt;RFC 6598&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;100.64.0.0 - 100.127.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="十进制到二进制对应表"&gt;十进制到二进制对应表&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;十进制子网掩码&lt;/th&gt;
&lt;th&gt;对应二进制&lt;/th&gt;
&lt;th&gt;十进制通配符&lt;/th&gt;
&lt;th&gt;对应二进制&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;255&lt;/td&gt;
&lt;td&gt;1111 1111&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0000 0000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;254&lt;/td&gt;
&lt;td&gt;1111 1110&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0000 0001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;252&lt;/td&gt;
&lt;td&gt;1111 1100&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0000 0011&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;248&lt;/td&gt;
&lt;td&gt;1111 1000&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;0000 0111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;240&lt;/td&gt;
&lt;td&gt;1111 0000&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;0000 1111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;224&lt;/td&gt;
&lt;td&gt;1110 0000&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;0001 1111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;192&lt;/td&gt;
&lt;td&gt;1100 0000&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;0011 1111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;1000 0000&lt;/td&gt;
&lt;td&gt;127&lt;/td&gt;
&lt;td&gt;0111 1111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0000 0000&lt;/td&gt;
&lt;td&gt;255&lt;/td&gt;
&lt;td&gt;1111 1111&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="术语表"&gt;术语表&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;通配符掩码&lt;/th&gt;
&lt;th&gt;在用二进制表示的通配符掩码中，0 表示要检查的位，1 表示不需要检查的位。&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CIDR&lt;/td&gt;
&lt;td&gt;Classless Inter Domain Routing 提供了比传统的 IP 地址类更细致的地址划分。CIDR 标记写法是 /XX&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Cisco SG220-52 VLAN Commands</title><link>https://www.dukehsu.com/posts/ciscosg220.html</link><pubDate>Mon, 05 Jul 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ciscosg220.html</guid><description>&lt;h1 id="cisco-sg220-52-command-configur-vlan"&gt;Cisco SG220-52 Command Configur VLAN&lt;/h1&gt;
&lt;h2 id="network-topology"&gt;Network Topology&lt;/h2&gt;
&lt;p&gt;&lt;img alt="07-05_23-02-35.jpg" loading="lazy" src="https://www.dukehsu.com/posts/ciscosg220/images/1553175382.jpg" title="07-05_23-02-35.jpg"&gt;&lt;/p&gt;
&lt;h2 id="calayst-3650-configuration"&gt;Calayst 3650 configuration&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Port 24 Trunk Allowed VLAN ID 20-42&lt;/li&gt;
&lt;li&gt;VLAN 20-42&lt;/li&gt;
&lt;li&gt;Port 20-23 Trunk Allowed VLAN ID 20-42&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sg-220-52-configuration"&gt;SG-220-52 configuration&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Port 48 Trunk Allowed VLAN ID 20-23&lt;/li&gt;
&lt;li&gt;VLAN 20-23&lt;/li&gt;
&lt;li&gt;Show VLAN &amp;amp; Copy configur&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="configur-trunk-and-vlan"&gt;Configur Trunk and VLAN&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; en &lt;span class="c1"&gt;#进入特权模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; conf terminal &lt;span class="c1"&gt;#进入全局模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; vlan 20-23 &lt;span class="c1"&gt;#创建VLAN20-23&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inter g48 &lt;span class="c1"&gt;#进入48口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sw mode trunk &lt;span class="c1"&gt;#设置为Trunk 口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sw trunk all vlan add 20-23 &lt;span class="c1"&gt;#允许vlan 20-23通过 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; no shut &lt;span class="c1"&gt;#开启接口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="configur-port-to-vlan"&gt;Configur Port to VLAN&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inter ran g16-25 &lt;span class="c1"&gt;#进入16-25口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sw mode acc &lt;span class="c1"&gt;#设置为access 口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sw acc vlan &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="c1"&gt;#设置 vlan20 為access &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="check-configur--copy-configur"&gt;Check configur &amp;amp; Copy configur&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; end &lt;span class="c1"&gt;#直接退出到特权模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; show run &lt;span class="c1"&gt;#查看所有配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; show vlan &lt;span class="c1"&gt;#查看VLAN配置信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; copy run st &lt;span class="c1"&gt;#保存配置&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>RA2 on windows 10 unplayable</title><link>https://www.dukehsu.com/posts/279.html</link><pubDate>Sat, 26 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/279.html</guid><description>&lt;h2 id="ra2ini"&gt;Ra2.ini&lt;/h2&gt;
&lt;p&gt;Finally worked for me, here&amp;rsquo;s what I did:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bitpatch.com/ddwrapper.html"&gt;http://bitpatch.com/ddwrapper.html&lt;/a&gt; - Just copy aqrit.cfg and ddraw.dll into the game folder. My settings.&lt;/p&gt;
&lt;p&gt;Put the following code into RA2.ini and RA2MD.ini after&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Video&lt;span class="o"&gt;]&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;AllowHiResModes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;AllowVRAMSidebar&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ScreenHeight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ScreenWidth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1920&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;StretchMovies&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;VideoBackBuffer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;no&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Source：&lt;a href="https://www.reddit.com/r/commandandconquer/comments/3ljf74/origin_ra2_on_windows_10_unplayable/"&gt;https://www.reddit.com/r/commandandconquer/comments/3ljf74/origin_ra2_on_windows_10_unplayable/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="compatibility-mode"&gt;Compatibility Mode&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;@echo off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rem 设置兼容性为WinXPSP3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reg add &lt;span class="s2"&gt;&amp;#34;HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers&amp;#34;&lt;/span&gt; /v &lt;span class="s2"&gt;&amp;#34;Z:\单机游戏\红警共和国之辉\ra2.exe&amp;#34;&lt;/span&gt; /d WINXPSP3 /f
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reg add &lt;span class="s2"&gt;&amp;#34;HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers&amp;#34;&lt;/span&gt; /v &lt;span class="s2"&gt;&amp;#34;Z:\单机游戏\红警共和国之辉\game.exe&amp;#34;&lt;/span&gt; /d WINXPSP3 /f&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="source"&gt;Source&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://itekblog.com/red-alert-2-windows-8-fix/"&gt;https://itekblog.com/red-alert-2-windows-8-fix/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bathome.net/thread-19813-1-1.html"&gt;http://www.bathome.net/thread-19813-1-1.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bitpatch.com/ddwrapper.html"&gt;http://bitpatch.com/ddwrapper.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PS5国行通过备份上港服</title><link>https://www.dukehsu.com/posts/ps5.html</link><pubDate>Tue, 15 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ps5.html</guid><description>&lt;p&gt;&lt;img alt="119461355_3351832848172680_4403054339510228428_o_1024.jpg" loading="lazy" src="https://www.dukehsu.com/posts/ps5/images/3588940290.jpg" title="119461355_3351832848172680_4403054339510228428_o_1024.jpg"&gt;&lt;/p&gt;
&lt;h2 id="准备工作"&gt;准备工作：&lt;/h2&gt;
&lt;p&gt;1、旧的PS4(马来西亚账号，非大陆国行版)&lt;/p&gt;
&lt;p&gt;2、PS5 （无账号新机，大陆国行版）&lt;/p&gt;
&lt;p&gt;3、同一网络下的wifi或者一根网线把PS4和PS5连在一起。&lt;/p&gt;
&lt;h2 id="方法"&gt;方法：&lt;/h2&gt;
&lt;p&gt;第一步：在PS5或者PS大陆官网注册PS账号。并且实名认证。&lt;/p&gt;
&lt;p&gt;第二步：在PS4登陆马来西亚账号。&lt;/p&gt;
&lt;p&gt;第三步：在PS4上登陆第一步注册的大陆账号（此时PS4里应该有两个或以上的账号）&lt;/p&gt;
&lt;p&gt;第四步：初始化PS5，重新进入载入界面，在登陆账号页面登陆第一步注册好的大陆账号。&lt;/p&gt;
&lt;p&gt;第五步：此时系统会提示此账号在PS4上有数据，是否传输，选择是，这里会提示你在PS4上所有注册的账号。&lt;/p&gt;
&lt;p&gt;第六步：选择马来西亚账号，然后传输。&lt;/p&gt;
&lt;p&gt;等待传输完成即可&lt;/p&gt;
&lt;h4 id="参考阅读"&gt;参考阅读&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.zhihu.com/question/458832795"&gt;https://www.zhihu.com/question/458832795&lt;/a&gt;&lt;/p&gt;</description></item><item><title>所选硬盘已存在一个Steam文件夹的解决办法</title><link>https://www.dukehsu.com/posts/steam.html</link><pubDate>Thu, 10 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/steam.html</guid><description>&lt;h2 id="原有目录"&gt;原有目录&lt;/h2&gt;
&lt;p&gt;&lt;img alt="2.jpg" loading="lazy" src="https://www.dukehsu.com/posts/steam/images/1305404086.jpg" title="2.jpg"&gt;&lt;/p&gt;
&lt;h2 id="无法在同目录再新增库文件夹"&gt;无法在同目录再新增库文件夹&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-06-10_21-58-05.jpg" loading="lazy" src="https://www.dukehsu.com/posts/steam/images/704318993.jpg" title="Snipaste_2021-06-10_21-58-05.jpg"&gt;&lt;/p&gt;
&lt;h2 id="找到steam-程序根目录此文件"&gt;找到Steam 程序根目录此文件&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;D:\Steam\steamapps\libraryfolders.vdf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="在后面新增一个你需要添加的目录如下"&gt;在后面新增一个你需要添加的目录如下&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;LibraryFolders&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;TimeNextStatsReport&amp;#34; &amp;#34;1622886485&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;ContentStatsID&amp;#34; &amp;#34;1329782524506893618&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;1&amp;#34; &amp;#34;F:\\SteamLibrary&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;2&amp;#34; &amp;#34;D:\\SteamLibrary&amp;#34; #新增的目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="完成"&gt;完成&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-06-10_22-00-06.jpg" loading="lazy" src="https://www.dukehsu.com/posts/steam/images/884299178.jpg" title="Snipaste_2021-06-10_22-00-06.jpg"&gt;&lt;/p&gt;
&lt;h2 id="扩展阅读"&gt;扩展阅读&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://keylol.com/t525765-1-1"&gt;https://keylol.com/t525765-1-1&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Windows10系统设置所有程序默认以管理员身份运行</title><link>https://www.dukehsu.com/posts/windows10uac.html</link><pubDate>Tue, 08 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windows10uac.html</guid><description>&lt;p&gt;今天在给客户处理问题的时候遇到一个新的问题，某个程序没有以管理员运行的话就不会正常工作，所以想设置所有程序默认管理员运行，（注意：所有程序默认以管理员运行之后会有风险，不建议普通用户这样操作）于是Google搜索得到答案之后，操作验证了一遍。证明它是有效的。现在将它作为笔记记录下来，以免后面忘记。&lt;/p&gt;
&lt;h4 id="图形界面"&gt;图形界面&lt;/h4&gt;
&lt;p&gt;以管理员运行cmd 输入&lt;strong&gt;secpol.msc&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="１20210609005112.png" loading="lazy" src="https://www.dukehsu.com/posts/windows10uac/images/3476204900.png" title="１20210609005112.png"&gt;&lt;br&gt;
依次找到“用户帐户控制：以管理员批准模式运行所有管理员”更改为禁用&lt;br&gt;
&lt;img alt="２_20210609005157.png" loading="lazy" src="https://www.dukehsu.com/posts/windows10uac/images/1397429012.png" title="２_20210609005157.png"&gt;&lt;br&gt;
重启之后生效&lt;/p&gt;
&lt;p&gt;转载自：&lt;a href="https://hulinhong.com/2020/01/01/windows_run_everything_as_admin/"&gt;https://hulinhong.com/2020/01/01/windows_run_everything_as_admin/&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="专业版系统具体步骤如下"&gt;专业版系统具体步骤如下:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用小娜搜索 secpol 或 “本地安全策略” （或运行 secpol.msc ），右键选择以管理员身份打开（或许需要）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;展开 本地策略，选择 安全选项，在右边找到“用户帐户控制：以管理员批准模式运行所有管理员”，双击它，将本地安全设置更改为“已禁用”；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后重新启动计算机即可&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完成操作后，通过 Win + R 执行命令 cmd 会发现输入框下面有一行小字”以管理员身份运行”&lt;/p&gt;
&lt;h4 id="家庭版系统步骤如下"&gt;家庭版系统步骤如下&lt;/h4&gt;
&lt;p&gt;(如果是家庭版用户没有组策略是无法像上述的专业版系统一样操作的):&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开注册表编辑器(运行 regedit)，展开注册表到&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择项 System 后，在右侧找到 EnableLUA ，将其值更改为0；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后重新启动计算机即可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完成操作后，通过 Win + R 执行命令 cmd 会发现输入下面有一行小字”以管理员身份运行”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Globe Broadband Super administrator password</title><link>https://www.dukehsu.com/posts/globe.html</link><pubDate>Sun, 06 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/globe.html</guid><description>&lt;p&gt;&lt;img loading="lazy" src="https://www.dukehsu.com/posts/globe/images/Globe-LH-logo-1605780915178-546.jpg"&gt;&lt;/p&gt;
&lt;h2 id="globe-broadband-super-administrator-password"&gt;Globe Broadband Super administrator password&lt;/h2&gt;
&lt;p&gt;By default, &lt;a href="http://www.globe.com.ph"&gt;Globe&lt;/a&gt; doesn&amp;rsquo;t even let you change your router&amp;rsquo;s wifi password and doesn&amp;rsquo;t give you full access to the router&amp;rsquo;s capabilities and you&amp;rsquo;re locked in to this crappy-unoptimised settings.&lt;/p&gt;
&lt;p&gt;You will then call their hotline: &lt;code&gt;211&lt;/code&gt; and customer service will only give you the credentials enough to change your router&amp;rsquo;s password and the wifi. As you look around you&amp;rsquo;ll find yourself frustrated not having the option to at least organize your ip-address ranger (e.g., &lt;code&gt;192.168.1.1 ~ 192.168.1.100&lt;/code&gt;), &lt;strong&gt;have no fear, the internet is here!&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Centos7设置网络</title><link>https://www.dukehsu.com/posts/centosnetwork.html</link><pubDate>Fri, 04 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/centosnetwork.html</guid><description>&lt;p&gt;如何设置Centos7网络&lt;/p&gt;
&lt;h3 id="进入系统配置目录"&gt;进入系统配置目录&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /etc/sysconfif/network-scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls &lt;span class="c1"&gt;#查看目錄&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="Snipaste_2021-06-04_10-55-38.jpg" loading="lazy" src="https://www.dukehsu.com/posts/centosnetwork/images/1642040443.jpg" title="Snipaste_2021-06-04_10-55-38.jpg"&gt;&lt;/p&gt;
&lt;h3 id="备份网卡文件"&gt;备份网卡文件&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp ifcfg-ens192 ifcfg-ens192.bak&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="编辑网卡文件"&gt;编辑网卡文件&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vi ifcfg-ens192&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="Snipaste_2021-06-04_10-57-37.jpg" loading="lazy" src="https://www.dukehsu.com/posts/centosnetwork/images/1807554444.jpg" title="Snipaste_2021-06-04_10-57-37.jpg"&gt;&lt;/p&gt;
&lt;h4 id="保存之后重启网络服务即可"&gt;保存之后重启网络服务即可&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;:wq
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart netwrok&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="网卡配置说明"&gt;网卡配置说明&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;TYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Ethernet &lt;span class="c1"&gt;# 网卡类型：为以太网&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PROXY_METHOD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;none &lt;span class="c1"&gt;# 代理方式：关闭状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;BROWSER_ONLY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;no &lt;span class="c1"&gt;# 只是浏览器：否&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;BOOTPROTO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dhcp &lt;span class="c1"&gt;# 网卡的引导协议：DHCP[中文名称: 动态主机配置协议]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DEFROUTE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;yes &lt;span class="c1"&gt;# 默认路由：是, 不明白的可以百度关键词 `默认路由` &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IPV4_FAILURE_FATAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;no &lt;span class="c1"&gt;# 是不开启IPV4致命错误检测：否&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IPV6INIT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;yes &lt;span class="c1"&gt;# IPV6是否自动初始化: 是[不会有任何影响, 现在还没用到IPV6]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IPV6_AUTOCONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;yes &lt;span class="c1"&gt;# IPV6是否自动配置：是[不会有任何影响, 现在还没用到IPV6]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IPV6_DEFROUTE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;yes &lt;span class="c1"&gt;# IPV6是否可以为默认路由：是[不会有任何影响, 现在还没用到IPV6]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IPV6_FAILURE_FATAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;no &lt;span class="c1"&gt;# 是不开启IPV6致命错误检测：否&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IPV6_ADDR_GEN_MODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;stable-privacy &lt;span class="c1"&gt;# IPV6地址生成模型：stable-privacy [这只一种生成IPV6的策略]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ens33 &lt;span class="c1"&gt;# 网卡物理设备名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;f47bde51-fa78-4f79-b68f-d5dd90cfc698 &lt;span class="c1"&gt;# 通用唯一识别码, 每一个网卡都会有, 不能重复, 否两台linux只有一台网卡可用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ens33 &lt;span class="c1"&gt;# 网卡设备名称, 必须和 `NAME` 值一样&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ONBOOT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;no &lt;span class="c1"&gt;# 是否开机启动， 要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes` &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="参考阅读"&gt;参考阅读&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://segmentfault.com/a/1190000011954814"&gt;https://segmentfault.com/a/1190000011954814&lt;/a&gt;&lt;/p&gt;</description></item><item><title>ESXi6.7网卡直通导致无法启动</title><link>https://www.dukehsu.com/posts/esxi6.html</link><pubDate>Fri, 04 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/esxi6.html</guid><description>&lt;p&gt;开启网卡直通之后卡在&lt;br&gt;
dma_mapper_iommu loaded successfully&lt;br&gt;
无法进入管理界面&lt;br&gt;
无法ping通ESXi管理口&lt;/p&gt;
&lt;h2 id="简述"&gt;简述&lt;/h2&gt;
&lt;p&gt;使用U盘的Ubuntu desktop挂载ESXI系统磁盘 更改esx.conf文件中的passthru选项&lt;/p&gt;
&lt;h2 id="将ubuntu-desktop写入u盘"&gt;将Ubuntu desktop写入U盘&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;工具&lt;/strong&gt;&lt;br&gt;
Rufus&lt;br&gt;
&lt;a href="https://rufus.ie/"&gt;https://rufus.ie/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ubuntu 18.04 Desktop&lt;br&gt;
&lt;a href="https://releases.ubuntu.com/18.04/"&gt;https://releases.ubuntu.com/18.04/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;使用Rufus将ubuntu写入U盘之后 设置服务器从U盘启动选择&lt;br&gt;
Try ubuntu&lt;/p&gt;
&lt;h2 id="操作步骤"&gt;操作步骤&lt;/h2&gt;
&lt;p&gt;打开Terminal&lt;br&gt;
在Terminal 输入&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lspci #查找pci设备 网卡的是Ethernet controller &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看硬盘并挂载分区&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo parted -l &lt;span class="c1"&gt;#查看硬盘&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount /dev/sda5 /mnt &lt;span class="c1"&gt;#挂载&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解压文件并编辑esx.conf&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /mnt/ #查看mnt 目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /mnt/state.tgz ~/ #cp到~
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd ~ #进入到~
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar xvf state.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar xvf local.tgz #解压
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd etc/vmware/ #进入到VMWARE目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano esx.conf #编辑esx.conf 文件&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将passthru 更改为vmkernel&lt;br&gt;
找到/device/&amp;lt;PCI_ID&amp;gt;/owner = &amp;ldquo;passthru&amp;rdquo; #PCI_ID就是上面使用lspci找到的0000:06:00.0和0000:00:06.0&lt;br&gt;
使用 vmkernel 代替 passthru&lt;br&gt;
ctrl+x 退出 按Y 确认回车 即可&lt;/p&gt;</description></item><item><title>ESXi7 更改VMFSL 空间</title><link>https://www.dukehsu.com/posts/esxi7.html</link><pubDate>Fri, 04 Jun 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/esxi7.html</guid><description>&lt;p&gt;在吃灰的NUC中使用一块240G SSD 安装了ESXi7 之后 可用空间只有95G，在系统存储中看到VMFSL 空间占了100多G,对于要开多个虚拟机的我，这点空间是不够的；&lt;/p&gt;
&lt;p&gt;经过Google搜索查到，如果更改VMFSL空间，需要在安装的时候操作。所以一下操作是在ESXi7安装之前的操作步骤。&lt;/p&gt;
&lt;h2 id="解决办法"&gt;解决办法&lt;/h2&gt;
&lt;p&gt;1，在安装时ESXI 7.0启动的第一个画面，按shift + O组合键，在启动安装之前的5秒内；&lt;/p&gt;
&lt;p&gt;2，在显示的cdromBoot runweasel后输入(有空格)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;autoPartitionOSDataSize=8192&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;完整显示：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cdromBoot runweasel autoPartitionOSDataSize=8192&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意大小写，8192表示指定OSDataSzie为8GB，对比6.7系统，给出8GB完全可以满足VMware tools、scratch以及coredump空间的需求。&lt;/p&gt;
&lt;p&gt;然后按照正常安装流程即可&lt;/p&gt;
&lt;h4 id="参考阅读"&gt;参考阅读&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.azurew.com/vmware/esxi-7-0/3792.html"&gt;https://www.azurew.com/vmware/esxi-7-0/3792.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hqyman.cn/post/1659.html"&gt;https://hqyman.cn/post/1659.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Windwos10 卸载Edge浏览器</title><link>https://www.dukehsu.com/posts/edgebrowser.html</link><pubDate>Thu, 27 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/edgebrowser.html</guid><description>&lt;h2 id="如何卸載-edge-瀏覽器"&gt;如何卸載 Edge 瀏覽器&lt;/h2&gt;
&lt;p&gt;&lt;img alt="edge-water-large.jpg" loading="lazy" src="https://www.dukehsu.com/posts/edgebrowser/images/2204134542.jpg" title="edge-water-large.jpg"&gt;&lt;br&gt;
不喜欢Edge 浏览器的理由很多&lt;br&gt;
这里有供大家卸载Edge浏览器的解决办法和操作步骤&lt;/p&gt;
&lt;p&gt;以管理员身份运行Windows PowerShell&lt;/p&gt;
&lt;h3 id="进入edge-浏览器目录"&gt;进入Edge 浏览器目录&lt;/h3&gt;
&lt;p&gt;&lt;img alt="w20210527213914.png" loading="lazy" src="https://www.dukehsu.com/posts/edgebrowser/images/2986859440.png" title="w20210527213914.png"&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;C:\Program Files (x86)\Microsoft\Edge\Application\90.0.818.66\Installer&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;每个人的版本不一样，如果提示路径不存在，请检查你电脑上Edge 浏览器的实际目录&lt;/p&gt;
&lt;h4 id="执行卸载命令"&gt;执行卸载命令&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.&lt;span class="se"&gt;\s&lt;/span&gt;etup.exe --uninstall --system-level --verbose-logging --force-uninstall&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建议重启一次电脑即可完成卸载&lt;/p&gt;</description></item><item><title>梅林固件安装Shadowsocks</title><link>https://www.dukehsu.com/posts/shadowsocks.html</link><pubDate>Tue, 25 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/shadowsocks.html</guid><description>&lt;p&gt;梅林固件安装科学上网 提示含非法字符&lt;br&gt;
有2个方法可以解决&lt;br&gt;
手动上传安装包，手动解压安装&lt;br&gt;
更改脚本屏蔽内容&lt;br&gt;
&lt;img alt="images.png" loading="lazy" src="https://www.dukehsu.com/posts/shadowsocks/images/3384541273.png" title="images.png"&gt;&lt;/p&gt;
&lt;h2 id="设备型号"&gt;设备型号&lt;/h2&gt;
&lt;p&gt;ASUS RT-AC5300&lt;/p&gt;
&lt;h2 id="梅林固件版本"&gt;梅林固件版本&lt;/h2&gt;
&lt;p&gt;RT-AC5300_384.18_0_koolshare.trx&lt;/p&gt;
&lt;h2 id="操作步骤"&gt;操作步骤&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在这里下载相对应版本的离线安装包&lt;br&gt;
&lt;a href="https://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384"&gt;https://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上传离线安装包到设备tmp目录&lt;br&gt;
这里使用Winscp 具体步骤就不详细描述了。大家Google搜索一下&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过SSH 登录到设备,解压缩安装&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -zxvf /tmp/shadowsocks.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;进入软件目录&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd shadowsocks&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;给install.sh权限&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行install.sh 安装脚本&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="更改脚本屏蔽内容"&gt;更改脚本屏蔽内容&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &amp;#39;s/\tdetect_package/\t# detect_package/g&amp;#39; /koolshare/scripts/ks_tar_install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;安装好之后进入路由页面，按Ctrl+F5刷新就可以在软件中心看到科学上网&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="参考阅读"&gt;参考阅读&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/hq450/fancyss"&gt;https://github.com/hq450/fancyss&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Litangren/ssr_for_router"&gt;https://github.com/Litangren/ssr_for_router&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384"&gt;https://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384&lt;/a&gt;&lt;/p&gt;</description></item><item><title>ipv6DDNS解析到Cloudflare域名</title><link>https://www.dukehsu.com/posts/ipv6ddns.html</link><pubDate>Mon, 24 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ipv6ddns.html</guid><description>&lt;p&gt;&lt;img alt="Snipaste_2021-05-24_20-49-59.jpg" loading="lazy" src="https://www.dukehsu.com/posts/ipv6ddns/images/4145552999.jpg" title="Snipaste_2021-05-24_20-49-59.jpg"&gt;&lt;br&gt;
因一次断网之后发现运营商给了IPV6&lt;br&gt;
于是就顺便记一下&lt;br&gt;
用Cloudflare解析自用电脑的ipv6地址&lt;/p&gt;
&lt;h4 id="ddns解析开源项目"&gt;DDNS解析开源项目&lt;/h4&gt;
&lt;p&gt;DDNS-go&lt;br&gt;
&lt;a href="https://github.com/jeessy2/ddns-go"&gt;https://github.com/jeessy2/ddns-go&lt;/a&gt;&lt;br&gt;
具体使用请查阅项目页面&lt;/p&gt;
&lt;h2 id="特性"&gt;特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;支持Mac、Windows、Linux系统，支持ARM、x86架构&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持的域名服务商 &lt;code&gt;Alidns(阿里云)&lt;/code&gt; &lt;code&gt;Dnspod(腾讯云)&lt;/code&gt; &lt;code&gt;Cloudflare&lt;/code&gt; &lt;code&gt;华为云&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持接口/网卡获取IP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持以服务的方式运行(v2.8.0后支持)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;默认间隔5分钟同步一次&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持多个域名同时解析，公司必备&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持多级域名&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;网页中配置，简单又方便，可设置 &lt;code&gt;登录用户名和密码&lt;/code&gt; / &lt;code&gt;禁止从公网访问&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;网页中方便快速查看最近50条日志，不需要跑docker中查看&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持webhook&lt;/p&gt;
&lt;h2 id="使用展示"&gt;使用展示&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-05-24_20-54-09.jpg" loading="lazy" src="https://www.dukehsu.com/posts/ipv6ddns/images/137365283.jpg" title="Snipaste_2021-05-24_20-54-09.jpg"&gt;&lt;br&gt;
配置好token之后就可以直接通过已经有ipv6地址的朋友直接访问自己的域名了。&lt;br&gt;
当然，如果访问端还没有ipv6的话，是无法访问的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="计划"&gt;计划&lt;/h2&gt;
&lt;p&gt;计划学习一下Mikrotik用Cloudeflare解析 WAN的ipv6&lt;/p&gt;
&lt;h2 id="参考阅读"&gt;参考阅读&lt;/h2&gt;
&lt;p&gt;Comparison of IPv4 and IPv6&lt;br&gt;
&lt;a href="https://www.ibm.com/docs/en/i/7.3?topic=6-comparison-ipv4-ipv6"&gt;https://www.ibm.com/docs/en/i/7.3?topic=6-comparison-ipv4-ipv6&lt;/a&gt;&lt;br&gt;
DDNSGO&lt;br&gt;
&lt;a href="https://github.com/jeessy2/ddns-go"&gt;https://github.com/jeessy2/ddns-go&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Panabit阿里公有云安装笔记</title><link>https://www.dukehsu.com/posts/panabitecs.html</link><pubDate>Wed, 12 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/panabitecs.html</guid><description>&lt;p&gt;因panabit的硬件标准不够。机房不让放panabit设备。&lt;br&gt;
所以将panabit安装在阿里云公有服务器上。&lt;br&gt;
然后部署iWAN服务，通过iWAN服务将对端数据转发到阿里云公有服务器。为了日后忘记，现将笔记记录如下。&lt;/p&gt;
&lt;h4 id="服务器要求"&gt;服务器要求&lt;/h4&gt;
&lt;p&gt;Centos 7.6&lt;br&gt;
2核CPU,2G内存,带宽按需求配置&lt;/p&gt;
&lt;h4 id="安装步骤"&gt;安装步骤&lt;/h4&gt;
&lt;p&gt;使用官方给的上传和安装工具以及Panabit 版本(请联系官方)&lt;br&gt;
一键操作，重启云服务器之后即可通过访问公网ip进行访问web管理界面进行配置和管理&lt;/p&gt;
&lt;h4 id="接口配置"&gt;接口配置&lt;/h4&gt;
&lt;p&gt;由于公有云服务器只有一个网卡所以在添加WAN口的时候记得要克隆mac地址，网口地址写私有地址即可，详细设置如下图&lt;br&gt;
&lt;img alt="Snipaste_2021-05-12_16-25-46.jpg" loading="lazy" src="https://www.dukehsu.com/posts/panabitecs/images/2886209416.jpg" title="Snipaste_2021-05-12_16-25-46.jpg"&gt;&lt;/p&gt;
&lt;h4 id="iwan服务配置"&gt;iWAN服务配置&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;配置地址池 (注意iWAN服务端分配的地址不能与对端的局域网IP地址冲突)&lt;br&gt;
&lt;img alt="Snipaste_2021-05-12_16-30-28.jpg" loading="lazy" src="https://www.dukehsu.com/posts/panabitecs/images/2225105680.jpg" title="Snipaste_2021-05-12_16-30-28.jpg"&gt;&lt;/li&gt;
&lt;li&gt;配置认证账户&lt;br&gt;
&lt;img alt="Snipaste_2021-05-12_16-33-02.jpg" loading="lazy" src="https://www.dukehsu.com/posts/panabitecs/images/3987792963.jpg" title="Snipaste_2021-05-12_16-33-02.jpg"&gt;&lt;/li&gt;
&lt;li&gt;创建一个iWAN服务,以及映射到WAN口（官方有说明只能映射到 PPPOE类型或静态IP类型的线路,也就是必须要有公网IP，不能映射到DHCP类型的线路）&lt;br&gt;
&lt;img alt="Snipaste_2021-05-12_16-34-04.jpg" loading="lazy" src="https://www.dukehsu.com/posts/panabitecs/images/3759845272.jpg" title="Snipaste_2021-05-12_16-34-04.jpg"&gt;&lt;/li&gt;
&lt;li&gt;映射iWAN服务&lt;br&gt;
&lt;img alt="Snipaste_2021-05-12_16-36-49.jpg" loading="lazy" src="https://www.dukehsu.com/posts/panabitecs/images/1093447079.jpg" title="Snipaste_2021-05-12_16-36-49.jpg"&gt;&lt;/li&gt;
&lt;li&gt;在服务端新建策略路由 使得客户端通过服务端访问互联网&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;到这里iWAN的服务端就配置完成了&lt;/p&gt;
&lt;h4 id="iwan客户端连接"&gt;iWAN客户端连接&lt;/h4&gt;
&lt;p&gt;在对端的Panabit新增一个WAN口，协议选择iWAN&lt;br&gt;
填写相对应的服务器信息即可连接。&lt;/p&gt;</description></item><item><title>SoftEther VPN Server Ubuntu 安装笔记</title><link>https://www.dukehsu.com/posts/softether.html</link><pubDate>Mon, 10 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/softether.html</guid><description>&lt;p&gt;&lt;img alt="1.0_vpnserver.jpg" loading="lazy" src="https://www.dukehsu.com/posts/softether/images/1111183263.jpg" title="1.0_vpnserver.jpg"&gt;&lt;br&gt;
SoftEther 是一个由日本筑波大学开发的开源VPN 项目，&lt;br&gt;
你可以自由的使用它为你的家庭或者公司组建虚拟局域网。&lt;br&gt;
它拥有多平台服务端和客户端，方便简易的操作界面，得到了很多人的喜爱。接下来就跟着我的操作一起来学习一下吧。&lt;/p&gt;
&lt;h4 id="softether-简介"&gt;SoftEther 简介&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.softether.org/9-about"&gt;https://www.softether.org/9-about&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="softeher下载"&gt;SoftEher下载&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.softether.org/5-download"&gt;https://www.softether.org/5-download&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="服务端环境"&gt;服务端环境&lt;/h4&gt;
&lt;p&gt;Ubuntu 16.4.1 &amp;amp; Centos 7.6&lt;/p&gt;
&lt;h4 id="操作步骤"&gt;操作步骤&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;通过SSH 客户端连接到Linux服务器，更新下载gcc工具&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install build-essential&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将SoftEther服务端下载到Linux服务器(需要科学上网环境,根据你的系统版本下载相对应版本)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解压SoftEther服务端&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -zxvf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;进入VPNserver 目录 进行make（make后会有3个问题询问。一直同意按1回车即可）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd vpnserver
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在vpnserver目录启动VPNServer&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./vpnserver start #启动服务
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./vpnserver stop #停止服务&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启动服务之后可以直接通过Softher管理工具进行连接管理和初始化配置了。 这里就不一一介绍了。此笔记只记录服务端配置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ubuntu 设置开机启动（编辑rc.local 目录把vpnserver 启动添加进去即可）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vi /etc/rc.local
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/ubuntu/vpnserver/vpnserver start #exit 0 之前写入&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Centos 7.6设置开机启动&lt;br&gt;
请参阅此文章&lt;br&gt;
&lt;a href="https://www.itiohub.com/log/centos6run.html"&gt;https://www.itiohub.com/log/centos6run.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样一来服务端就配置完成。 接下来就可以根据自己需求来通过SoftEther 管理工具进行配置和管理了。&lt;/p&gt;
&lt;h4 id="参考文章"&gt;参考文章：&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://dmesg.app/softether-vpnserver.html"&gt;https://dmesg.app/softether-vpnserver.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.softether.org/"&gt;https://www.softether.org/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Windows Defender添加排除项&amp;白名单</title><link>https://www.dukehsu.com/posts/windowsdefender.html</link><pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windowsdefender.html</guid><description>&lt;p&gt;&lt;img alt="windows-defender.png" loading="lazy" src="https://www.dukehsu.com/posts/windowsdefender/images/2938565325.png" title="windows-defender.png"&gt;&lt;/p&gt;
&lt;h4 id="问题"&gt;问题：&lt;/h4&gt;
&lt;p&gt;某些易语言辅助工具&amp;amp;系统调试工具&lt;br&gt;
在Windows Defender 开启的状态下经常被误删&lt;br&gt;
下面步骤记录了如何Windows Defender添加排除项&amp;amp;白名单&lt;/p&gt;</description></item><item><title>VMware和VirtualBox 设置开机后台运行虚拟机</title><link>https://www.dukehsu.com/posts/vmware.html</link><pubDate>Wed, 05 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/vmware.html</guid><description>&lt;p&gt;&lt;img alt="3e41-article-210226-vmware-body-text.jpg" loading="lazy" src="https://www.dukehsu.com/posts/vmware/images/234654439.jpg" title="3e41-article-210226-vmware-body-text.jpg"&gt;&lt;/p&gt;
&lt;p&gt;注意：此笔记在以下环境进行操作设置&lt;/p&gt;
&lt;h4 id="宿主机操作系统"&gt;宿主机操作系统&lt;/h4&gt;
&lt;p&gt;Windows 10&lt;br&gt;
VMware 版本 14.0&lt;br&gt;
VirtualBox 6.0&lt;/p&gt;</description></item><item><title>使用爱快SD-WAN访问异地局域网资源</title><link>https://www.dukehsu.com/posts/ikuaisdwan.html</link><pubDate>Sun, 02 May 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/ikuaisdwan.html</guid><description>&lt;p&gt;&lt;a href="https://www.ikuai8.com/netWork.php"&gt;&lt;img alt="爱快SD-WAN" loading="lazy" src="https://www.ikuai8.com/templates/ikuaitemplate/images/index/sd-wan_pc.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="需求"&gt;需求&lt;/h2&gt;
&lt;p&gt;访问网关 A 的内网资源、监控服务以及 NAS 服务等。&lt;/p&gt;
&lt;h2 id="爱快-sd-wan-开通"&gt;爱快 SD-WAN 开通&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://bbs.ikuai8.com/thread-123581-1-1.html"&gt;爱快 SD-WAN 开通链接&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="网络拓扑图"&gt;网络拓扑图&lt;/h2&gt;
&lt;p&gt;&lt;img alt="SDwan huitu.png" loading="lazy" src="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/2988348191.png"&gt;&lt;/p&gt;
&lt;h2 id="爱快云-sd-wan-配置信息"&gt;爱快云 SD-WAN 配置信息&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-05-02.jpg" loading="lazy" src="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/601409932.jpg"&gt;&lt;/p&gt;
&lt;h2 id="爱快云-sd-wan-拓扑图"&gt;爱快云 SD-WAN 拓扑图&lt;/h2&gt;
&lt;p&gt;&lt;img alt="te_2021-05.jpg" loading="lazy" src="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/2110826125.jpg"&gt;&lt;/p&gt;
&lt;h2 id="访问异地局域网功能测试"&gt;访问异地局域网功能测试&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-05-02_1.jpg" loading="lazy" src="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/3718491530.jpg"&gt;&lt;/p&gt;
&lt;p&gt;NAS 服务器和监控都访问正常。&lt;/p&gt;
&lt;h2 id="ping-质量测试"&gt;Ping 质量测试&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-05-02_2.jpg" loading="lazy" src="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/1621741833.jpg"&gt;&lt;/p&gt;
&lt;p&gt;表现不错，很少丢包。在用网高峰期偶尔会掉包，因为手机端 A 离其他两个网关太远。Tracert 测试为直连，MTR 测试质量正常。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;最后再说两句 内网穿透最先使用的是Frp, 然后N2N, 还用了Zerotier，这些都是开源或者免费的服务需要一定的动手能力。 爱快SD-WAN操作简单，能让更多人享受到异地组网的乐趣！ Good Job!! Ikuai.!&lt;/p&gt;</description></item><item><title>AdGuard Home-DNS解析服务器搭建笔记</title><link>https://www.dukehsu.com/posts/adguardhome.html</link><pubDate>Fri, 30 Apr 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/adguardhome.html</guid><description>&lt;h2 id="adguardhome-简介"&gt;AdGuardHome 简介&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-04-30_17-43-37.jpg" loading="lazy" src="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/04/1831010211.jpg"&gt;&lt;/p&gt;
&lt;p&gt;基于 Golang 编写的 AdGuard Home，官方支持 运行在 Linux 32 位 / 64 位 / ARM（v6 / v7）/ MIPS、FreeBSD、Windows、macOS、Docker 内，以及由第三方开发者维护的 OpenWrt 软件包 、Home Assistant 拓展 和 Arch Linux。&lt;/p&gt;
&lt;h2 id="下载安装-adguard-home"&gt;下载、安装 AdGuard Home&lt;/h2&gt;
&lt;p&gt;系统环境： ubuntu 18.04&lt;/p&gt;
&lt;h3 id="下载adguard-home"&gt;下载AdGuard Home&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_amd64.tar.gz -O AdGuardHome.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意： 根据你的系统下载相对应的版本&lt;/p&gt;
&lt;h3 id="解压和安装adguard-home"&gt;解压和安装AdGuard Home&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tar zxvf AdGuardHome.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod +x AdGuardHome
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; AdGuardHome
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ./AdGuardHome --service install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当提示&lt;code&gt;AdGuard Home is successfully installed and will automatically start on boot.&lt;/code&gt; 即表示 AdGuard Home 在当前系统上安装成功。在终端上会显示管理后台的地址与端口，默认为 &lt;a href="http://IP:3000"&gt;http://IP:3000&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Windows 系统环境变量</title><link>https://www.dukehsu.com/posts/windowspath.html</link><pubDate>Tue, 13 Apr 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/windowspath.html</guid><description>&lt;p&gt;在写批处理的时候常常会用到C:\ProgramData ，C:\Users\Home\AppData\Local 等目录，有时候会遇到用户名不一样，这个时候我们就需要使用变量了。&lt;/p&gt;
&lt;h4 id="变量对比表"&gt;变量对比表&lt;/h4&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-04-13_22-59-20.jpg" loading="lazy" src="https://www.dukehsu.com/posts/windowspath/images/4116056183.jpg" title="Snipaste_2021-04-13_22-59-20.jpg"&gt;&lt;/p&gt;
&lt;p&gt;参考阅读：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.askvg.com/list-of-environment-variables-in-windows-xp-vista-and-7/"&gt;https://www.askvg.com/list-of-environment-variables-in-windows-xp-vista-and-7/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://windowsloop.com/list-of-all-environment-variables-in-windows-10/"&gt;https://windowsloop.com/list-of-all-environment-variables-in-windows-10/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ss64.com/nt/syntax-variables.html"&gt;https://ss64.com/nt/syntax-variables.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to show desktop icon on windows server 2012</title><link>https://www.dukehsu.com/posts/187.html</link><pubDate>Sun, 11 Apr 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/187.html</guid><description>&lt;h3 id="set-1"&gt;Set 1&lt;/h3&gt;
&lt;p&gt;1 Open Command
press Win+R&lt;br&gt;
type&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0&lt;/code&gt;&lt;br&gt;
&lt;img alt="Snipaste_2021-04-11_13-43-03.jpg" loading="lazy" src="https://www.dukehsu.com/posts/187/images/3905389808.jpg" title="Snipaste_2021-04-11_13-43-03.jpg"&gt;&lt;/p&gt;
&lt;h3 id="set-2"&gt;Set 2&lt;/h3&gt;
&lt;p&gt;choose icon show on desktop&lt;/p&gt;
&lt;p&gt;&lt;img alt="Snipaste_2021-04-11_13-43-21.jpg" loading="lazy" src="https://www.dukehsu.com/posts/187/images/3449217660.jpg" title="Snipaste_2021-04-11_13-43-21.jpg"&gt;&lt;/p&gt;</description></item><item><title>Windows如何更改DNS,电脑打不开网页</title><link>https://www.dukehsu.com/posts/dnschange.html</link><pubDate>Tue, 16 Mar 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/dnschange.html</guid><description>&lt;h2 id="windows如何更改dns"&gt;Windows如何更改DNS&lt;/h2&gt;
&lt;p&gt;&lt;img alt="DNS-Server.png" loading="lazy" src="https://www.dukehsu.com/posts/dnschange/images/1707147016.png" title="DNS-Server.png"&gt;&lt;br&gt;
在日常使用电脑的过程中，偶尔会遇到部分网站、游戏无法连接或者网站、游戏访问很慢，这个时候我们就可以尝试更换DNS测试和验证。&lt;/p&gt;
&lt;h3 id="windows-如何更改dns"&gt;Windows 如何更改DNS&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;按Win+R 呼出命令行&lt;br&gt;
&lt;img alt="run.jpg" loading="lazy" src="https://www.dukehsu.com/posts/dnschange/images/2573215443.jpg" title="run.jpg"&gt;&lt;/li&gt;
&lt;li&gt;输入ncpa.cpl 然后回车&lt;br&gt;
&lt;img alt="DNS.jpg" loading="lazy" src="https://www.dukehsu.com/posts/dnschange/images/1586992504.jpg" title="DNS.jpg"&gt;&lt;/li&gt;
&lt;li&gt;根据图示更改你喜欢的DNS即可&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="相关链接"&gt;相关链接：&lt;/h3&gt;
&lt;p&gt;What Is DNS? | How DNS Works&lt;br&gt;
&lt;a href="https://www.cloudflare.com/learning/dns/what-is-dns/"&gt;https://www.cloudflare.com/learning/dns/what-is-dns/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AliDNS&lt;br&gt;
&lt;a href="https://www.alidns.com/"&gt;https://www.alidns.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DNS相关工具：&lt;/strong&gt;&lt;br&gt;
DNSDataView v1.60&lt;br&gt;
&lt;a href="https://www.nirsoft.net/utils/dns_records_viewer.html"&gt;https://www.nirsoft.net/utils/dns_records_viewer.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;DNSQuerySniffer v1.81&lt;br&gt;
&lt;a href="https://www.nirsoft.net/utils/dns_query_sniffer.html"&gt;https://www.nirsoft.net/utils/dns_query_sniffer.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>网吧如何挖矿？网吧挖矿指南</title><link>https://www.dukehsu.com/posts/btcfornetbar.html</link><pubDate>Tue, 16 Mar 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/btcfornetbar.html</guid><description>&lt;blockquote&gt;
&lt;p&gt;相关文章：&lt;a href="https://www.itiohub.com/lifelog/bitcoins.html"&gt;https://www.itiohub.com/lifelog/bitcoins.html&lt;/a&gt;&lt;br&gt;
下载挖矿软件&lt;br&gt;
获取钱包地址&lt;br&gt;
选择矿池&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;以下教学默认跳过前面以上三个步骤&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="步骤"&gt;步骤&lt;/h2&gt;
&lt;p&gt;将配置好的挖矿软件设置到工作站开机启动项即可&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;挖矿软件：&lt;/strong&gt;&lt;br&gt;
松之宅挖矿者&lt;br&gt;
&lt;a href="http://www.topool.top"&gt;http://www.topool.top&lt;/a&gt;&lt;br&gt;
启动就开始挖矿&lt;br&gt;
息屏设置为开启2分钟息屏&lt;br&gt;
以机器名为矿工号&lt;br&gt;
&lt;strong&gt;锁屏软件：&lt;/strong&gt;&lt;br&gt;
深蓝挂机锁 - V1.7&lt;br&gt;
&lt;a href="https://slsup.com/post/20.html"&gt;https://slsup.com/post/20.html&lt;/a&gt;&lt;br&gt;
设置开机命令运行&lt;br&gt;
支持在服务端直接写密码&lt;/p&gt;</description></item><item><title>Maye 一个简洁小巧的快速启动工具-By 25H</title><link>https://www.dukehsu.com/posts/maye.html</link><pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/maye.html</guid><description>&lt;p&gt;&lt;img alt="Snipaste_2021-03-07_22-32-11.jpg" loading="lazy" src="https://www.dukehsu.com/posts/maye/images/1568634674.jpg" title="Snipaste_2021-03-07_22-32-11.jpg"&gt;&lt;br&gt;
Maye是一款体积小巧、简单易用的快速启动工具。不要看体积小巧，它的功能还是非常多样化的，比如：多文件拖拽添加启动、快捷键呼出、自动多列显示、lnk 文件解析等等。软件没有繁杂的功能，操作中也不会产生任何垃圾文件，绿色无污染，只专注于文件的快速启动，是用户提升 Windows 操作体验的好帮手。&lt;/p&gt;</description></item><item><title>一个不想挖矿的矿工笔记</title><link>https://www.dukehsu.com/posts/bitcoins.html</link><pubDate>Fri, 26 Feb 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/bitcoins.html</guid><description>&lt;p&gt;&lt;img alt="Snipaste_2021-02-27_00-54-16.jpg" loading="lazy" src="https://www.dukehsu.com/posts/bitcoins/images/3945489174.jpg" title="Snipaste_2021-02-27_00-54-16.jpg"&gt;&lt;br&gt;
瞎忙活了半天，注册了n多账户。也没开始挖。&lt;br&gt;
到下午才明白大概流程。&lt;/p&gt;
&lt;h2 id="流程"&gt;流程&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;下载挖矿软件&lt;/li&gt;
&lt;li&gt;获取钱包地址&lt;/li&gt;
&lt;li&gt;选择矿池&lt;/li&gt;
&lt;li&gt;开始挖矿&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="下载挖矿软件"&gt;下载挖矿软件&lt;/h3&gt;
&lt;p&gt;Github 有很多开源的内核和 基于各种内核编译好的带GUI的挖矿软件&lt;br&gt;
nicehash.com 自带有 挖矿软件，但是在GTX1060 5G显卡下面无法正常工作。&lt;br&gt;
于是我更换了使用NBMiner 内核的松之宅挖矿者。&lt;br&gt;
小白专用&lt;/p&gt;
&lt;h3 id="获取钱包地址"&gt;获取钱包地址&lt;/h3&gt;
&lt;p&gt;nicehash.com 注册账户之后就可以获得钱包地址。可以直接使用。&lt;br&gt;
也可以通过交易所（例如火币，币安等）获得钱包地址，亦可以通过imtoken等手机钱包获取地址。&lt;/p&gt;
&lt;h3 id="连接矿池"&gt;连接矿池&lt;/h3&gt;
&lt;p&gt;没用GUI的挖矿软件需要在配置文件中填写矿池和钱包的地址。&lt;br&gt;
松之宅挖矿者支持多矿池， 可以根据自己的需要选择不同矿池。注：有些矿池需要您注册账号。&lt;/p&gt;
&lt;h3 id="配置好之后就可以点击开始挖矿了"&gt;配置好之后就可以点击开始挖矿了&lt;/h3&gt;
&lt;p&gt;你可以在矿池中看到你的矿机状态，个人觉得nicehash.com 是做的很好的。&lt;/p&gt;</description></item><item><title>Discuz 折腾手记</title><link>https://www.dukehsu.com/posts/discuz.html</link><pubDate>Thu, 25 Feb 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/discuz.html</guid><description>&lt;h2 id="discuz-版本"&gt;Discuz 版本&lt;/h2&gt;
&lt;p&gt;Discuz X3.4&lt;/p&gt;
&lt;h2 id="list"&gt;List&lt;/h2&gt;
&lt;h3 id="更改-头部的--power-by-discuz"&gt;更改 头部的 -Power By Discuz&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入目录&lt;code&gt;/template/default/common&lt;/code&gt; 找到&lt;br&gt;
&lt;code&gt;header_common.htm&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;将&lt;code&gt;title&lt;/code&gt;内部的 &lt;code&gt;-Power By Discuz&lt;/code&gt; 改成你自己想要的即可&lt;/li&gt;
&lt;li&gt;保存刷新&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="不允许非管理员访问adminphp"&gt;不允许非管理员访问admin.php&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;在网站根目录找到&lt;strong&gt;admin.php&lt;/strong&gt; 并编辑&lt;/li&gt;
&lt;li&gt;找到&lt;code&gt;$admincp-&amp;gt;core = &amp;amp; $discuz;&lt;/code&gt; 换行之后输入以下代码&lt;/li&gt;
&lt;li&gt;保存刷新之后, 非管理员用户访问直接跳到根目录&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nv"&gt;$_G&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;uid&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;getstatus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_G&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;member&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;allowadmincp&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Location: /&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Powercfg command-line options For Windows</title><link>https://www.dukehsu.com/posts/powercfg.html</link><pubDate>Sun, 31 Jan 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/powercfg.html</guid><description>&lt;p&gt;&lt;img alt="power.png" loading="lazy" src="https://www.dukehsu.com/posts/powercfg/images/1272074419.png" title="power.png"&gt;&lt;br&gt;
某些时候电源的模式会直接影响部分游戏体验。&lt;br&gt;
在此，如果你没有对省电的需求的话，为了提高游戏体验。&lt;br&gt;
请直接输入这项&lt;/p&gt;
&lt;h4 id="卓越性能high-performance"&gt;（卓越性能）High performance&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其他选项以及用法，请参考官方文档&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options"&gt;https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Centos 6.9 手动添加开机启动配置</title><link>https://www.dukehsu.com/posts/centos6run.html</link><pubDate>Mon, 07 Dec 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/centos6run.html</guid><description>&lt;p&gt;Centos 6.9 手动添加开机启动配置&lt;/p&gt;
&lt;p&gt;启动目录&lt;br&gt;
&lt;code&gt;/etc/init.d/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;新建启动文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vi /etc/init.d/frps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;内容如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#! /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# chkconfig: 2345 90 10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# description: Starts/Stops the Frps Server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/frp/frps -c /usr/frp/frps.ini &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;给执行权限&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x frps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;添加到启动项&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chkconfig --add frps &lt;span class="c1"&gt;#添加&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chkconfig --del frps &lt;span class="c1"&gt;#删除&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;设置启动&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chkconfig frps on &lt;span class="c1"&gt;#启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chkconfig frps off &lt;span class="c1"&gt;#关闭&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Netmask Conversions</title><link>https://www.dukehsu.com/posts/netmask.html</link><pubDate>Wed, 02 Dec 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/netmask.html</guid><description>&lt;p&gt;If you have ever needed to know what a netmask looks like expressed in some other format this table of equivalents should help. It contains common IPv4 netmasks expressed in four different formats.&lt;/p&gt;
&lt;p&gt;&lt;img alt="netmask.png" loading="lazy" src="https://www.dukehsu.com/posts/netmask/images/316367986.png" title="netmask.png"&gt;&lt;/p&gt;
&lt;p&gt;From:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.ws.afnog.org/afnog2010/unix-intro/references/netmask-table.html"&gt;https://www.ws.afnog.org/afnog2010/unix-intro/references/netmask-table.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and &lt;a href="https://www.pawprint.net/designresources/netmask-converter.php"&gt;https://www.pawprint.net/designresources/netmask-converter.php&lt;/a&gt;&lt;/p&gt;</description></item><item><title>NSSM - 在Windows平台手动安装Frp服务</title><link>https://www.dukehsu.com/posts/nssm.html</link><pubDate>Tue, 24 Nov 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/nssm.html</guid><description>&lt;h3 id="场景需求"&gt;场景需求&lt;/h3&gt;
&lt;p&gt;Frp客户端正常情况下是在cmd界面运行&lt;br&gt;
容易被客户端误关闭&lt;br&gt;
不美观&lt;br&gt;
现在通过Nssm 将它以服务的形式在后台运行&lt;/p&gt;
&lt;h3 id="下载-nssm"&gt;下载 NSSM&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://nssm.cc/download"&gt;https://nssm.cc/download&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="安装-nssm"&gt;安装 NSSM&lt;/h3&gt;
&lt;p&gt;解压 nssm-2.24-101-g897c7ad.zip，里面分为 win32 和 win64 两个文件夹。&lt;br&gt;
根据系统的判断，此处以 Windows 10 x64 演示，将文件夹 win64 复制到 D 盘根目录下。&lt;br&gt;
并将文件夹 win64 改名为 nssm，此时的目录结构如下：&lt;br&gt;
&lt;img loading="lazy" src="https://www.dukehsu.com/posts/nssm/images/nssm1.png"&gt;&lt;/p&gt;</description></item><item><title>webp convert to jpg</title><link>https://www.dukehsu.com/posts/webptools.html</link><pubDate>Sun, 22 Nov 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/webptools.html</guid><description>&lt;p&gt;&lt;img alt="Snipaste_2020-11-22_14-32-35.png" loading="lazy" src="https://www.dukehsu.com/posts/webptools/images/1188163495.png" title="Snipaste_2020-11-22_14-32-35.png"&gt;&lt;/p&gt;
&lt;h1 id="webp2jpg"&gt;webp2jpg&lt;/h1&gt;
&lt;p&gt;convert the &lt;em&gt;.webp to&lt;/em&gt; .jpg|&lt;em&gt;.bmp|&lt;/em&gt;.png|&lt;em&gt;.gif|&lt;/em&gt;.tiff&lt;/p&gt;
&lt;h1 id="dependence"&gt;Dependence&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; golang.org/x/image/bmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; golang.org/x/image/tiff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; golang.org/x/image/webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gopkg.in/urfave/cli.v1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; go get gopkg.in/urfave/cli.v1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; git clone https://github.com/golang/image &lt;span class="nv"&gt;$GOPATH&lt;/span&gt;/src/golang.org/x/image
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$GOPATH&lt;/span&gt;/src/golang.org/x/image/webp &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; go install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$GOPATH&lt;/span&gt;/src/golang.org/x/image/bmp &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; go install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$GOPATH&lt;/span&gt;/src/golang.org/x/image/tiff &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; go install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="download"&gt;Download&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; go get github.com/sndnvaps/webp2jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="build--run"&gt;Build &amp;amp;&amp;amp; Run&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$GOPATH&lt;/span&gt;/src/github.com/sndnvaps/webp2jpg/cli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; go build&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="convert-the-webp-file-to-jpeg--png--gif--bmp--tiff"&gt;Convert the webp file to jpeg | png | gif | bmp | tiff&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; put the test.webp file into webp2jpg folder
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg -t jpg -s test.webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg -t bmp -s test.webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type jpg --source test.webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type jpeg --source test.webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type png --source test.webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type gif --source test.webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type tiff --source test.webp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type jpg --source test.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type jpg --source test.gif
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./webp2jpg --type jpg --source test.tiff&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Github: &lt;a href="https://github.com/sndnvaps/webp2jpg"&gt;https://github.com/sndnvaps/webp2jpg&lt;/a&gt;&lt;/p&gt;</description></item><item><title>在CentOS7.2上手动添加服务</title><link>https://www.dukehsu.com/posts/centoslog.html</link><pubDate>Tue, 17 Nov 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/centoslog.html</guid><description>&lt;p&gt;文章内容中的运行系统环境是CentOS7.2&lt;br&gt;
以Frps.service为例&lt;/p&gt;
&lt;h3 id="创建frpsservice"&gt;创建frps.service:&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;vi frps.service&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="路径"&gt;路径：&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;/etc/systemd/system/frps.service&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="frpsservice-内容"&gt;frps.service 内容：&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Unit&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;Description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;frps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;After&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;network.target
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Service&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;TimeoutStartSec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/www/frp/frps -c /usr/www/frp/frps.ini
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ExecStop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/bin/kill &lt;span class="nv"&gt;$MAINPID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Install&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;WantedBy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;multi-user.target&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="用法"&gt;用法：&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start frps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查看状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl status frps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 开机启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; frps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2020/12/1465606862.gz"&gt;frp_0.34.3_linux_amd64.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="参考文章"&gt;参考文章&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://canwdev.github.io/manual/setup-frp.html#%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF-%C2%B7-frps"&gt;https://canwdev.github.io/manual/setup-frp.html#%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF-%C2%B7-frps&lt;/a&gt;&lt;/p&gt;</description></item><item><title>原来我不帅 无盘公包v2021正式版系统镜像包分享</title><link>https://www.dukehsu.com/posts/pxecnnetimg.html</link><pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/pxecnnetimg.html</guid><description>&lt;p&gt;&lt;img alt="20201008.jpg" loading="lazy" src="https://www.dukehsu.com/posts/pxecnnetimg/images/846265922.jpg" title="20201008.jpg"&gt;&lt;/p&gt;
&lt;h2 id="windows10_x64_1909pro版系统包"&gt;Windows10_x64_1909Pro版系统包&lt;/h2&gt;
&lt;h4 id="更新内容"&gt;更新内容：&lt;/h4&gt;
&lt;p&gt;1、系统默认不激活！默认搜狗拼音+搜狗五笔；&lt;br&gt;
2、修改DriverStore为最高权限，能解决Apxe在显卡PNP下报错！&lt;br&gt;
3、集成Edge浏览器，可以有效的防止劫持，看斗鱼，虎牙直播不再卡！&lt;br&gt;
4、精简系统，移除网吧用不上的功能和驱动，有效的减少CF闪退问题！&lt;/p&gt;
&lt;h4 id="网盘下载链接"&gt;网盘下载链接：&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;链接:&lt;/strong&gt; &lt;a href="https://pan.baidu.com/s/1ou25P982A62-BQfu35UCfg"&gt;https://pan.baidu.com/s/1ou25P982A62-BQfu35UCfg&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;提取码:&lt;/strong&gt; yv9t&lt;/p&gt;</description></item><item><title>PLDT AN5506-04 Lan bind [Fiber home]</title><link>https://www.dukehsu.com/posts/pldt.html</link><pubDate>Sat, 12 Sep 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/pldt.html</guid><description>&lt;h2 id="pldt-an5506-04-set-lanbind"&gt;PLDT AN5506-04 Set Lanbind&lt;/h2&gt;
&lt;p&gt;&lt;img alt="PLDT Fibr.jpg" loading="lazy" src="https://www.dukehsu.com/posts/pldt/images/4115467083.jpg" title="PLDT Fibr.jpg"&gt;&lt;/p&gt;
&lt;p&gt;This manual tutorial works for PLDTHOMEFIBR&lt;/p&gt;</description></item><item><title>Win10 2004设置开机自动登录</title><link>https://www.dukehsu.com/posts/win10login.html</link><pubDate>Mon, 17 Aug 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/win10login.html</guid><description>&lt;h2 id="如何設置-windows10-自動登錄"&gt;如何設置 windows10 自動登錄&lt;/h2&gt;
&lt;p&gt;有些用户在安装win10 2004系统之后，无法设置自动登录。 发现【要使用本计算机，用户必须输入用户名和密码】 选项不见 。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Snipaste_2020-08-17_21-48-18.jpg" loading="lazy" src="https://www.dukehsu.com/posts/win10login/images/R481UQwSzHNvjkM.jpg" title="Snipaste_2020-08-17_21-48-18.jpg"&gt;&lt;/p&gt;
&lt;p&gt;现在我就教大家如何设置自动登录。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;按Win+R 输入regedit 进入注册表编辑&lt;br&gt;
&lt;img alt="Snipaste_2020-08-17_21-43-56.jpg" loading="lazy" src="https://www.dukehsu.com/posts/win10login/images/Ov3f6WmNCZxLDcP.jpg" title="Snipaste_2020-08-17_21-43-56.jpg"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;找到键值&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再找到右侧，&lt;strong&gt;双击DevicePasswordLessBuildVersion&lt;/strong&gt; 把值改成&lt;strong&gt;0&lt;/strong&gt;确定！&lt;br&gt;
&lt;img alt="2.jpg" loading="lazy" src="https://www.dukehsu.com/posts/win10login/images/xQ1ZMV5tK6S9qCf.jpg" title="2.jpg"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再按Win+R 输入netplwiz 把【要使用本计算机，用户必须输入用户名和密码】取消勾选即可&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重启之后就可以自动登录拉！&lt;/p&gt;</description></item><item><title>使用 PsPing进行网络测试</title><link>https://www.dukehsu.com/posts/psping.html</link><pubDate>Fri, 22 May 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/psping.html</guid><description>&lt;p&gt;&lt;img alt="psping.jpg" loading="lazy" src="https://www.dukehsu.com/posts/psping/images/3254903661.jpg" title="psping.jpg"&gt;&lt;br&gt;
本文主要介绍微软的测试工具Psping，&lt;br&gt;
该工具功能主要包括：ICMP Ping、TCP Ping、延迟测试、带宽测试&lt;/p&gt;
&lt;p&gt;需要说明一种应用场景：由于Windows Azure数据中心禁ICMP，使用Psping的TCP Ping的功能来测试联通性或者故障排查就非常有用了。&lt;/p&gt;
&lt;p&gt;工具下载地址： &lt;a href="http://technet.microsoft.com/en-us/sysinternals/jj729731"&gt;http://technet.microsoft.com/en-us/sysinternals/jj729731&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载完PSTools.zip包之后，放到任意本地磁盘内，解压；&lt;/p&gt;
&lt;p&gt;使用CMD命令行工具进入PSTools所在的文件夹路径，单独输入psping，可见psping四个主要功能的帮助命令，四个功能分别是ICMP Ping、TCP Ping、延迟测试、带宽测试。&lt;/p&gt;
&lt;h4 id="part1icmp-ping功能"&gt;【Part.1】ICMP ping功能&lt;/h4&gt;
&lt;p&gt;输入psping -? i获取ICMP ping相关参数&lt;br&gt;
&lt;img alt="psping.jpg" loading="lazy" src="https://www.dukehsu.com/posts/psping/images/3254903661.jpg" title="psping.jpg"&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;psping -4 -n 10 -w 2 -h 180.76.76.76&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="psping 1.jpg" loading="lazy" src="https://www.dukehsu.com/posts/psping/images/1336111479.jpg" title="psping 1.jpg"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-4 代表强制使用IPv4联机&lt;/li&gt;
&lt;li&gt;-n 代表正式ping包的个数，或者定义使用秒s作为单位&lt;/li&gt;
&lt;li&gt;-w 代表热身ping包的个数，即正式测试前先进行多少次热身测试连接&lt;/li&gt;
&lt;li&gt;-h 代表最小与最大延迟毫秒数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;另外几个参数解释如下：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-i 代表间隔秒数，快ping则设置为0&lt;/li&gt;
&lt;li&gt;-l 代表ping包大小，默认单位是byte。使用 k为单位代表kilobytes(KB)，使用m为单位代表megabytes(MB)&lt;/li&gt;
&lt;li&gt;-q 代表ping过程中不一个个输出值&lt;/li&gt;
&lt;li&gt;-t 代表长ping不停&lt;/li&gt;
&lt;li&gt;-6 代表强制使用IPv6联机&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;psping -i 0 -4 -n 10 -w 2 -h 10 -q 180.76.76.76&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;由于设置了-i 0这个参数，瞬间出结果&lt;br&gt;
设置了-q则不再显示中间的输出过程，直接输出结果&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;-l和-t和-6不在此演示了。&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id="part2tcp-ping功能"&gt;【Part.2】TCP Ping功能&lt;/h4&gt;
&lt;p&gt;使用psping -? t获取帮助信息&lt;br&gt;
&lt;img alt="psping2.jpg" loading="lazy" src="https://www.dukehsu.com/posts/psping/images/3982250798.jpg" title="psping2.jpg"&gt;&lt;/p&gt;</description></item><item><title>显示器接口科普</title><link>https://www.dukehsu.com/posts/65.html</link><pubDate>Thu, 21 May 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/65.html</guid><description>&lt;h2 id="显示器接口科普"&gt;显示器接口科普&lt;/h2&gt;
&lt;p&gt;&lt;img alt="ioio.png" loading="lazy" src="https://www.dukehsu.com/posts/65/images/968099386.png" title="ioio.png"&gt;&lt;br&gt;
懒人结论：对自己好一点，买更好的线～&lt;/p&gt;
&lt;h3 id="vga--dvi"&gt;VGA &amp;amp; DVI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;VGA：2048*1536 - 60 帧&lt;/li&gt;
&lt;li&gt;双通道 DVI: 2560*1600(略高于2K)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="hdmi-20"&gt;HDMI 2.0&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最高带宽：14.4Gbps&lt;/li&gt;
&lt;li&gt;支持 4K 60Hz / 2K 144Hz&lt;/li&gt;
&lt;li&gt;HDR、10bit 色深、FreeSync 技术&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="dpdisplayport-14"&gt;DP(DisplayPort) 1.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最高带宽：25.92 Gbps&lt;/li&gt;
&lt;li&gt;支持 8K 30Hz / 5K 60Hz / 4K 120Hz&lt;/li&gt;
&lt;li&gt;HDR、P3 色域、Rec2020 色彩空间、G-SYNC 技术&lt;/li&gt;
&lt;li&gt;支持「菊花链」技术&lt;/li&gt;
&lt;li&gt;雷电 3 接支持 DP 1.4&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="hdmi-21"&gt;HDMI 2.1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最高带宽: 42.6 Gbps&lt;/li&gt;
&lt;li&gt;最高支持 10K (10240*5400)&lt;/li&gt;
&lt;li&gt;支持动态 HDR 和 DSC 显示&lt;/li&gt;
&lt;li&gt;进入量化生产阶段&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="displayport-20"&gt;DisplayPort 2.0&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最高带宽：77.37 Gbps&lt;/li&gt;
&lt;li&gt;最高支持 16K (15360*8460) 60Hz&lt;/li&gt;
&lt;li&gt;支持 HDR 10&lt;/li&gt;
&lt;li&gt;目前只是一个概念参数&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="主流显示器所需要的带宽"&gt;主流显示器所需要的带宽&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Apple XDR 6K 8bit 60Hz：29.31Gbps&lt;/p&gt;</description></item><item><title>KMS激活科普，什么是KMS激活,KMS 激活指南</title><link>https://www.dukehsu.com/posts/kms.html</link><pubDate>Sun, 17 May 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/kms.html</guid><description>&lt;p&gt;&lt;img alt="KMS Process_2.jpg" loading="lazy" src="https://www.dukehsu.com/posts/kms/images/1404575963.jpg" title="KMS Process_2.jpg"&gt;&lt;/p&gt;
&lt;h1 id="kms"&gt;KMS&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;KMS激活服务，slmgr命令激活Windows系统、Office&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="激活步骤管理员命令执行"&gt;激活步骤（管理员命令执行）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;设置服务　　&lt;code&gt;slmgr -skms kms.03k.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装密钥　　&lt;code&gt;slmgr -ipk 版本对应秘钥&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;激活系统　　&lt;code&gt;slmgr -ato&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Win10远程桌面出现 身份验证错误</title><link>https://www.dukehsu.com/posts/63.html</link><pubDate>Sun, 17 May 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/63.html</guid><description>&lt;h2 id="win10远程桌面出现-身份验证错误要求的函数不受支持这可能是由于credssp加密oracle修正-解决方法"&gt;Win10远程桌面出现 身份验证错误，要求的函数不受支持，这可能是由于CredSSP加密Oracle修正 解决方法&lt;/h2&gt;
&lt;p&gt;&lt;img alt="1.jpg" loading="lazy" src="https://www.dukehsu.com/posts/63/images/2471017731.jpg" title="1.jpg"&gt;&lt;/p&gt;
&lt;h3 id="解决方法"&gt;解决方法：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;运行 gpedit.msc&lt;/li&gt;
&lt;li&gt;本地组策略：&lt;/li&gt;
&lt;li&gt;计算机配置&amp;gt;管理模板&amp;gt;系统&amp;gt;凭据分配&amp;gt;加密Oracle修正&lt;/li&gt;
&lt;li&gt;选择启用并选择易受攻击。&lt;br&gt;
&lt;img alt="2.jpg" loading="lazy" src="https://www.dukehsu.com/posts/63/images/3272543785.jpg" title="2.jpg"&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Itunes客户端Windows版本</title><link>https://www.dukehsu.com/posts/itunes.html</link><pubDate>Wed, 13 May 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/itunes.html</guid><description>&lt;p&gt;&lt;img alt="apple.jpg" loading="lazy" src="https://www.dukehsu.com/posts/itunes/images/4058769736.jpg" title="apple.jpg"&gt;&lt;/p&gt;
&lt;p&gt;由于win10升级，apple官网已经主动推广win 10应用商店下载了&lt;br&gt;
对于旧系统来说无法正常使用windows客户端&lt;br&gt;
现在请在这里下载&lt;/p&gt;
&lt;p&gt;iTunes 64位Windows 客户端&lt;br&gt;
&lt;a href="https://www.apple.com/itunes/download/win64"&gt;https://www.apple.com/itunes/download/win64&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;iTunes 32位Windows 客户端&lt;br&gt;
&lt;a href="https://www.apple.com/itunes/download/win32"&gt;https://www.apple.com/itunes/download/win32&lt;/a&gt;&lt;/p&gt;</description></item><item><title>CSGO国际服VAC错误 ， Batch Script for Fixing the "VAC" Error.</title><link>https://www.dukehsu.com/posts/vac.html</link><pubDate>Sat, 25 Apr 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/vac.html</guid><description>&lt;p&gt;Copy the batch script code,&lt;br&gt;
then save as .bat, double click it .&lt;br&gt;
good luck .&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="k"&gt;echo&lt;/span&gt; off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;color&lt;/span&gt; f
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;title&lt;/span&gt; CSGO VAC Tools -By Xiaosi www.itiohub.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ◤━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◥
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ███████ ███████ ███████ ███████ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ██ ██ ● ██ ██ ██ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ██ ███████ ██ ████ ██ ██ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ██ ██ ● ██ ██ ██ ██ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ███████ ███████ ███████ ███████ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ◣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◢
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┏━━━━━━━━━━┓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ 解除VAC屏蔽工具 ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┗━━━━━━━━━━┛
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc config Netman start= AUTO
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc start Netman
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc config rasman start= AUTO
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc start rasman
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc config tapisrv start= AUTO
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc start tapisrv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc config mpssvc start= AUTO
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc start mpssvc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;netsh advfirewall set allprofiles state on
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bcdedit.exe /set {current} nx alwayson
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;cls&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ◤━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◥
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ███████ ███████ ███████ ███████ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ██ ██ ● ██ ██ ██ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ██ ███████ ██ ████ ██ ██ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ██ ██ ● ██ ██ ██ ██ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ███████ ███████ ███████ ███████ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃ ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ◣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◢
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┏━━━━━━━━━━┓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┃VAC-Tools By Xiaosi ┃
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ┗━━━━━━━━━━┛
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; 请输入你的Steam文件夹所在位置,然后按回车
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; Please enter your Steam folder location and press Enter
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; -----------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; (例: Z:\Steam Games\Steam 格式一定要正确，若出错请重启本软件!)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; Example: &lt;span class="s2"&gt;&amp;#34;Z: \ Steam Games\Steam&amp;#34;&lt;/span&gt; format must be correct, if an error please restart the software
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="k"&gt;/p&lt;/span&gt; &lt;span class="nv"&gt;steampath&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;cd&lt;/span&gt; /d &lt;span class="nv"&gt;%steampath%&lt;/span&gt;\bin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; == 操作中，请等待 ==
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ====Please wait====
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;steamservice.exe /install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;steamservice.exe /repair
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; == 操作完成 ==
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt; ===OK Game Happy===
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;echo&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pause&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>如何在阿里云安装PanaCloud独立版</title><link>https://www.dukehsu.com/posts/panacloud.html</link><pubDate>Tue, 21 Apr 2020 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/panacloud.html</guid><description>&lt;p&gt;&lt;img alt="index1.png" loading="lazy" src="https://www.dukehsu.com/posts/panacloud/images/164892201.png" title="index1.png"&gt;&lt;br&gt;
五分钟将Panabit云平台安装在阿里云服务器&lt;br&gt;
仅需要简单4个步骤&lt;/p&gt;
&lt;h4 id="准备工作"&gt;准备工作&lt;/h4&gt;
&lt;p&gt;你需要准备好以下&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;服务器&lt;/strong&gt;&lt;br&gt;
阿里云Freebsd系统云服务器一台 [1G1核1M即可]&lt;/p&gt;</description></item></channel></rss>