[{"categories":["today_i_learned"],"content":"Scenario Source Database running on Docker (Linux Server) Traget Database running on Azure Server Prerequisites 源database 的結構和目標database 的結構、表、限制等都相同 對源database 和目標database 具有訪問權限 SQL Server Management Studio Step by Step On Source Database Generate Scripts Select specific database objects Scripting Options Note: 根據需求調整Scripting Options！！！！\n目前場景需求的option 是這樣設置的\nTypes of data to script：选择 Data only（因为结构已经存在） Script DROP statements：设置为 False Script Indexes：设置为 False Script Primary Keys：设置为 False Script Foreign Keys：设置为 False Save as Script file 然後點擊next 就可以保存腳本了\nOn target database Disconnect the Source database connect .\nRun script in target database\nFile \u0026gt; Open \u0026gt; File ..(sql_script.sql\n選中你需要執行的sql 腳本 然後會自動在sql manaagement query窗口打開。\n檢查腳本沒問題之後， 點擊執行就可以看到輸出結果。\n這個時候， 再回去查表數據\n-- Check table data and return row counts SELECT COUNT(*) AS [Row Count] FROM dbo.employees; SELECT COUNT(*) AS [Row Count] FROM dbo.jobs; SELECT COUNT(*) AS [Row Count] FROM dbo.departments;","permalink":"https://www.dukehsu.com/posts/docker-sql-to-azure.html","summary":"\u003ch2 id=\"scenario\"\u003eScenario\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSource Database running on Docker (Linux Server)\u003c/li\u003e\n\u003cli\u003eTraget Database running on Azure Server\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"prerequisites\"\u003ePrerequisites\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e源database 的結構和目標database 的結構、表、限制等都相同\u003c/li\u003e\n\u003cli\u003e對源database 和目標database 具有訪問權限\u003c/li\u003e\n\u003cli\u003eSQL Server Management Studio\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"step-by-step\"\u003eStep by Step\u003c/h2\u003e\n\u003ch3 id=\"on-source-database\"\u003eOn Source Database\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGenerate Scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"Pasted image 20260319141730\" loading=\"lazy\" src=\"/posts/docker-sql-to-azure/images/Pasted-image-20260319141730.webp\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSelect specific database objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"Pasted image 20260319142035\" loading=\"lazy\" src=\"/posts/docker-sql-to-azure/images/Pasted-image-20260319142035.webp\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eScripting Options\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"Pasted image 20260319142309\" loading=\"lazy\" src=\"/posts/docker-sql-to-azure/images/Pasted-image-20260319142309.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eNote: 根據需求調整Scripting Options！！！！\u003c/p\u003e\n\u003cp\u003e目前場景需求的option 是這樣設置的\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eTypes of data to script：选择 Data only（因为结构已经存在）\u003c/li\u003e\n\u003cli\u003eScript DROP statements：设置为 False\u003c/li\u003e\n\u003cli\u003eScript Indexes：设置为 False\u003c/li\u003e\n\u003cli\u003eScript Primary Keys：设置为 False\u003c/li\u003e\n\u003cli\u003eScript Foreign Keys：设置为 False\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cul\u003e\n\u003cli\u003eSave as Script file\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"Pasted image 20260319142556\" loading=\"lazy\" src=\"/posts/docker-sql-to-azure/images/Pasted-image-20260319142556.webp\"\u003e\u003c/p\u003e","tags":["azyure","docker","mssql","sql"],"title":"將docker 中的SQL database 遷移到ms Azure"},{"categories":["today_i_learned"],"content":"1) Setup MkDocs environment # Create MkDocs virtual environment python3 -m venv mkdoc_venv # Activate venv source mkdoc_venv/bin/activate # Deactivate venv deactivate # Install MkDocs + Material theme pip3 install mkdocs mkdocs-material # Install Mermaid plugin pip install mkdocs-mermaid2-plugin # Create a new MkDocs project mkdocs new duke-note # Run MkDocs local server mkdocs serve # Run server for external access mkdocs serve --dev-addr=0.0.0.0:80002) Create GitHub repository # Run in your notes directory git init git add . git commit -m \u0026#34;Initial commit of my study notes\u0026#34;3)Connect to remote GitHub repo # Format: # git remote set-url origin https://\u0026lt;token\u0026gt;@github.com/\u0026lt;owner\u0026gt;/\u0026lt;repository\u0026gt;.git # Example: git remote set-url origin https://ghp_yourTokenHere@github.com/dukehug/mkdocs_dknotes.git git branch -M main git push -u origin main # Deploy to GitHub Pages mkdocs gh-deploy4)Deploy script (deploy.sh) #!/bin/bash # Stop if any error happens set -e # Build site mkdocs build sleep 10 # Push updates git add . git commit -m \u0026#34;update notes: $(date)\u0026#34; git push origin main sleep 10 # Deploy to GitHub Pages mkdocs gh-deploy5)Math formula support (MathJax) References:\nMkDocs Material Math https://squidfunk.github.io/mkdocs-material/reference/math/#mathjax-docsjavascriptsmathjaxjs\nHackMD https://hackmd.io/cNmSPyWlTqGaQdX8eKCZew\nGitHub Repo: https://github.com/dukehug/mkdocs_dknotes\n","permalink":"https://www.dukehsu.com/posts/deploy-mkdocs-to-github-pages-github-io.html","summary":"\u003ch2 id=\"1-setup-mkdocs-environment\"\u003e1) Setup MkDocs environment\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Create MkDocs virtual environment\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epython3 -m venv mkdoc_venv\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Activate venv\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003esource\u003c/span\u003e mkdoc_venv/bin/activate\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Deactivate venv\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edeactivate\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Install MkDocs + Material theme\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epip3 install mkdocs mkdocs-material\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Install Mermaid plugin\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epip install mkdocs-mermaid2-plugin\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Create a new MkDocs project\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdocs new duke-note\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Run MkDocs local server\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdocs serve\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Run server for external access\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdocs serve --dev-addr\u003cspan class=\"o\"\u003e=\u003c/span\u003e0.0.0.0:8000\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"2-create-github-repository\"\u003e2) Create GitHub repository\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Run in your notes directory\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit init\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit add .\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit commit -m \u003cspan class=\"s2\"\u003e\u0026#34;Initial commit of my study notes\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"3connect-to-remote-github-repo\"\u003e3)Connect to remote GitHub repo\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Format:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# git remote set-url origin https://\u0026lt;token\u0026gt;@github.com/\u0026lt;owner\u0026gt;/\u0026lt;repository\u0026gt;.git\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Example:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit remote set-url origin https://ghp_yourTokenHere@github.com/dukehug/mkdocs_dknotes.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit branch -M main\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit push -u origin main\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Deploy to GitHub Pages\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdocs gh-deploy\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"4deploy-script-deploysh\"\u003e4)Deploy script (deploy.sh)\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#!/bin/bash\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Stop if any error happens\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eset\u003c/span\u003e -e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Build site\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdocs build\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esleep \u003cspan class=\"m\"\u003e10\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Push updates\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit add .\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit commit -m \u003cspan class=\"s2\"\u003e\u0026#34;update notes: \u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003edate\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit push origin main\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esleep \u003cspan class=\"m\"\u003e10\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Deploy to GitHub Pages\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdocs gh-deploy\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"5math-formula-support-mathjax\"\u003e5)Math formula support (MathJax)\u003c/h2\u003e\n\u003cp\u003eReferences:\u003c/p\u003e","tags":["github","mkdocs"],"title":"Deploy MkDocs to GitHub Pages (github.io)"},{"categories":["today_i_learned"],"content":"Prerequisites 轻量云创建镜像，并共享 通过轻量云创建的镜像，创建一个云服务器实例 在该镜像下创建的云服务器再制作一个镜像 创建一个新的存储桶作为镜像导出的存储对象 通过存储桶下载备份出来的镜像 导入到 PVE Get start 为轻量云中的erpnext 主机制作一个镜像 将该镜像在该实例的地域开启共享 在该地域创建一个云服务器，（云服务器- 非 轻量云） 选用该镜像 开通之后，等待启动，并确认服务正常 将实例停机，再在当前实例创建一个镜像（云服务器- 非 轻量云） 等待镜像创建完成 来到对象存储- 存储桶列表- 创建存储桶 返回云服务中的镜像，选择第5步已经创建好的镜像 在镜像选项中选择镜像导出 导出时选择 QCOW2 格式，等待导出完成之后，会存储到存储桶中 回到对象存储- 选择存储桶列表 - 找到刚刚导出的 镜像 - 选择下载镜像 将导出的镜像下载到本地，再导入到PVE 即可 PVE Import USB Disk mount Import qcow2 to vm Config VM lsblk mkdir -p /mnt/usb mount /dev/sdb1 /mnt/usb ls /mnt/usb/iso/*.qcow2 ## import to vm - qm importdisk \u0026lt;源文件路径\u0026gt; \u0026lt;目标存储ID\u0026gt; qm importdisk 101 /mnt/usb/iso/vps-backup.qcow2 local-lvm返回PVE 界面， 将导入的磁盘添加到创建的空的vm中， 设置启动磁盘即可\nERP Next Backup and Restore Restore 切换到 ERPNext 用户 配置 backup path，默认在 sites/erpnext/private/backup 目录 将源服务器的备份数据下载到新的服务器 进入 frappe-bench 进行 restore bench restore 20251231_180001-erpnext-database.sql.gz //输入mysql root 的密码 //等待3-5 分钟， 就会提示 site ***** has been restored 在前端刷新ui 即可看到新的数据MySQL 更改 root 密码 退出 ERPNext 用户 切换到 root 使用 root 进入 MySQL 通过 ALTER USER 修改 root 密码 -- 使用 sudo 以系统管理员身份直接登入 MySQL sudo mysql -u root -- 切换到 mysql 库 USE mysql; -- MariaDB 10.4+：启用密码认证并设置新密码 ALTER USER \u0026#39;root\u0026#39;@\u0026#39;localhost\u0026#39; IDENTIFIED VIA mysql_native_password USING PASSWORD(\u0026#39;你的新密码123\u0026#39;); -- 刷新权限并退出 FLUSH PRIVILEGES; EXIT;Backup 进入frappe-bench中进行 backup 即可 检查备份文件 cd frappe-bench bench backup ls sites/itiohub.com/private/backups Reference 腾讯云服务器离线迁移 https://cloud.tencent.com/document/product/213/19233\nHow to backup and restore in Erpnext https://www.youtube.com/watch?v=3qSnwLJmgmg\n","permalink":"https://www.dukehsu.com/posts/cloud_to_pve.html","summary":"\u003ch2 id=\"prerequisites\"\u003ePrerequisites\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e轻量云创建镜像，并共享\u003c/li\u003e\n\u003cli\u003e通过轻量云创建的镜像，创建一个云服务器实例\u003c/li\u003e\n\u003cli\u003e在该镜像下创建的云服务器再制作一个镜像\u003c/li\u003e\n\u003cli\u003e创建一个新的存储桶作为镜像导出的存储对象\u003c/li\u003e\n\u003cli\u003e通过存储桶下载备份出来的镜像\u003c/li\u003e\n\u003cli\u003e导入到 PVE\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"get-start\"\u003eGet start\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e为轻量云中的erpnext 主机制作一个镜像\u003c/li\u003e\n\u003cli\u003e将该镜像在该实例的地域开启共享\u003c/li\u003e\n\u003cli\u003e在该地域创建一个云服务器，（云服务器- 非 轻量云） 选用该镜像\u003c/li\u003e\n\u003cli\u003e开通之后，等待启动，并确认服务正常\u003c/li\u003e\n\u003cli\u003e将实例停机，再在当前实例创建一个镜像（云服务器- 非 轻量云）\u003c/li\u003e\n\u003cli\u003e等待镜像创建完成\u003c/li\u003e\n\u003cli\u003e来到对象存储- 存储桶列表- 创建存储桶\u003c/li\u003e\n\u003cli\u003e返回云服务中的镜像，选择第5步已经创建好的镜像\u003c/li\u003e\n\u003cli\u003e在镜像选项中选择镜像导出\u003c/li\u003e\n\u003cli\u003e导出时选择 \u003cstrong\u003eQCOW2\u003c/strong\u003e 格式，等待导出完成之后，会存储到存储桶中\u003c/li\u003e\n\u003cli\u003e回到对象存储- 选择存储桶列表 - 找到刚刚导出的 镜像 - 选择下载镜像\u003c/li\u003e\n\u003cli\u003e将导出的镜像下载到本地，再导入到PVE 即可\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"pve-import\"\u003ePVE Import\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eUSB Disk mount\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003eqcow2\u003c/code\u003e to vm\u003c/li\u003e\n\u003cli\u003eConfig VM\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003elsblk\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdir -p /mnt/usb\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emount /dev/sdb1 /mnt/usb\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003els /mnt/usb/iso/*.qcow2\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e## import to vm - qm importdisk \u0026lt;源文件路径\u0026gt; \u0026lt;目标存储ID\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eqm importdisk 101 /mnt/usb/iso/vps-backup.qcow2 local-lvm\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e返回PVE 界面， 将导入的磁盘添加到创建的空的vm中， 设置启动磁盘即可\u003c/p\u003e","tags":["cloud","erpnext","pve","vps"],"title":"ERP Next 搬家 - 从腾讯云迁移到PVE"},{"categories":["today_i_learned"],"content":" Fixing CUPS Print Server Issue on Ubuntu 24.04 Date: 2025-11-30 12:42 Tags: #Linux #cups #printserver\nTable of Contents What happened How I fixed it Prerequisites Step-by-step guide What Happened I was running CUPS 2.4.7 on Ubuntu 24.04. The client suddenly couldn’t print anything. After checking the server, I found that CUPS had shut down unexpectedly. How I Fixed It Logged into Ubuntu Checked the CUPS service status Restarted the required services Tested printing afterward to confirm everything was working again Prerequisites A keyboard A monitor Your Ubuntu user account and password Getting Started If you forgot your root password You can reset it through GRUB.\n# Edit \u0026#39;ro\u0026#39; to \u0026#39;rw\u0026#39;, then append: rw init=/bin/bash # Press Ctrl+X, then run: ls /home passwd {user} exec /sbin/init Check CUPS Status Use these commands to find the problem:\nsystemctl status cups sudo cupsd -t sudo cat /var/log/cups/error_logTriggeredBy: cups.socket and Dependency failed sudo systemctl stop cups.service cups.socket cups.path sudo systemctl start cups.socket sudo systemctl start cups.service sudo systemctl status cups ","permalink":"https://www.dukehsu.com/posts/cups_note.html","summary":"\u003chr\u003e\n\u003ch2 id=\"fixing-cups-print-server-issue-on-ubuntu-2404\"\u003eFixing CUPS Print Server Issue on Ubuntu 24.04\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDate:\u003c/strong\u003e 2025-11-30 12:42 \u003cstrong\u003eTags:\u003c/strong\u003e #Linux #cups #printserver\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"table-of-contents\"\u003e\u003cstrong\u003eTable of Contents\u003c/strong\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eWhat happened\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHow I fixed it\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrerequisites\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStep-by-step guide\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"what-happened\"\u003e\u003cstrong\u003eWhat Happened\u003c/strong\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eI was running \u003cstrong\u003eCUPS 2.4.7\u003c/strong\u003e on \u003cstrong\u003eUbuntu 24.04\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003eThe client suddenly couldn’t print anything.\u003c/li\u003e\n\u003cli\u003eAfter checking the server, I found that \u003cstrong\u003eCUPS had shut down unexpectedly\u003c/strong\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"how-i-fixed-it\"\u003e\u003cstrong\u003eHow I Fixed It\u003c/strong\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLogged into Ubuntu\u003c/li\u003e\n\u003cli\u003eChecked the CUPS service status\u003c/li\u003e\n\u003cli\u003eRestarted the required services\u003c/li\u003e\n\u003cli\u003eTested printing afterward to confirm everything was working again\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"prerequisites\"\u003e\u003cstrong\u003ePrerequisites\u003c/strong\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eA keyboard\u003c/li\u003e\n\u003cli\u003eA monitor\u003c/li\u003e\n\u003cli\u003eYour Ubuntu user account and password\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"getting-started\"\u003e\u003cstrong\u003eGetting Started\u003c/strong\u003e\u003c/h2\u003e\n\u003ch3 id=\"if-you-forgot-your-root-password\"\u003e\u003cstrong\u003eIf you forgot your root password\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eYou can reset it through \u003cstrong\u003eGRUB\u003c/strong\u003e.\u003c/p\u003e","tags":["cups","printerserver"],"title":"Cups 維護筆記"},{"categories":["today_i_learned"],"content":"Table of Contents Create and activate the Python environment Install Python modules Install MS SQL Start coding \u0026amp; Run Prerequisites 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.\nPython 3.12 Windows OS MS SQL Express Internet Get started Create and activate the Python environment # Create the virtual environment python -m venv c:\\project\\event # Activate it cd c:\\project\\event\\Scripts .\\activate # Deactivate it when finished deactivateInstall Python modules You can install these modules step by step, or use pip install -r requirement.txt.\nInstall modules step by step pip install numpy pip install pymssql pip install pandas pip install python-dotenv pip install streamlit pip listPython modules install via requirement.txt numpy pymssql pandas python-dotenv streamlit Install MS SQL MS SQL Download site Microsoft® SQL Server® 2022 Express https://www.microsoft.com/en-us/download/details.aspx?id=104781\nSQL Server installation guide https://learn.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server?view=sql-server-ver16\u0026culture=en-us\u0026country=us\nMS SQL Remote https://www.itiohub.com/log/437.html\nStart coding First streamlit app Example:\nimport streamlit as st st.title(\u0026#34;Hello, there!\u0026#34;) st.write(\u0026#34;Welcome to my website\u0026#34;)Save it, then go back to PowerShell or run it in your VS Code. streamlit run app.py\nThe default port is 8501, but you can change the port if you want.\nstreamlit run app.py --server.port 80\nMore example and more tuorials\nhttps://docs.streamlit.io/develop/tutorials\nConnect to the SQL Exmaple:\nimport streamlit as st import pymssql DB_SERVER = \u0026#39;localhost\u0026#39; DB_USER = \u0026#39;sa\u0026#39; DB_PASSWORD = \u0026#39;AdamsonUniversity\u0026#39; DB_NAME = \u0026#39;Event_manage\u0026#39; def get_connection(): try: return pymssql.connect( server=DB_SERVER, user=DB_USER, password=DB_PASSWORD, database=DB_NAME, tds_version=\u0026#39;7.0\u0026#39;, as_dict=True, ) except Exception as error: st.error(f\u0026#34;Cannot connect to database: {error}\u0026#34;) return NoneSQL connect issue: TLS1.2 Error https://learn.microsoft.com/en-us/answers/questions/275585/tls-1-2-error-schannel-event-id-36874-and-36888\n","permalink":"https://www.dukehsu.com/posts/using-python-and-streamlit-with-mssql.html","summary":"\u003ch2 id=\"table-of-contents\"\u003eTable of Contents\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eCreate and activate the Python environment\u003c/li\u003e\n\u003cli\u003eInstall Python modules\u003c/li\u003e\n\u003cli\u003eInstall MS SQL\u003c/li\u003e\n\u003cli\u003eStart coding \u0026amp; Run\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch2 id=\"prerequisites\"\u003ePrerequisites\u003c/h2\u003e\n\u003cp\u003eFor 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.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003ePython 3.12\u003c/li\u003e\n\u003cli\u003eWindows OS\u003c/li\u003e\n\u003cli\u003eMS SQL Express\u003c/li\u003e\n\u003cli\u003eInternet\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch2 id=\"get-started\"\u003eGet started\u003c/h2\u003e\n\u003ch3 id=\"create-and-activate-the-python-environment\"\u003eCreate and activate the Python environment\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-powershell\" data-lang=\"powershell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c\"\u003e# Create the virtual environment\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003epython\u003c/span\u003e \u003cspan class=\"n\"\u003e-m\u003c/span\u003e \u003cspan class=\"n\"\u003evenv\u003c/span\u003e \u003cspan class=\"n\"\u003ec:\u003c/span\u003e\u003cspan class=\"p\"\u003e\\\u003c/span\u003e\u003cspan class=\"n\"\u003eproject\u003c/span\u003e\u003cspan class=\"p\"\u003e\\\u003c/span\u003e\u003cspan class=\"n\"\u003eevent\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c\"\u003e# Activate it\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd \u003c/span\u003e\u003cspan class=\"n\"\u003ec:\u003c/span\u003e\u003cspan class=\"p\"\u003e\\\u003c/span\u003e\u003cspan class=\"n\"\u003eproject\u003c/span\u003e\u003cspan class=\"p\"\u003e\\\u003c/span\u003e\u003cspan class=\"n\"\u003eevent\u003c/span\u003e\u003cspan class=\"p\"\u003e\\\u003c/span\u003e\u003cspan class=\"n\"\u003eScripts\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e.\\\u003c/span\u003e\u003cspan class=\"n\"\u003eactivate\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c\"\u003e# Deactivate it when finished\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003edeactivate\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"install-python-modules\"\u003eInstall Python modules\u003c/h3\u003e\n\u003cp\u003eYou can install these modules step by step, or use \u003ccode\u003epip install -r requirement.txt\u003c/code\u003e.\u003c/p\u003e","tags":["mssql","python","steamlit","windows"],"title":"Using Python and Streamlit with MS SQL"},{"categories":["today_i_learned"],"content":"Git and Github 筆記 Git fast version control 一些基本概念\n版本管理和跟蹤\n版本控制系統是軟件工具\n可以幫助團隊管理源代碼\nStatus of Version 版本狀態 Untracked 未追蹤 Tracked 已追蹤 Staged 已暫存 Committed 已提交 HEAD -\u0026gt; master / branch HEAD ： 目前進度，最新狀態 Master : 主線 git 追蹤的是檔案的變化，不是檔案本身 刪除檔案也需要\u0026quot;add\u0026quot; 和 \u0026ldquo;commit\u0026rdquo; 需要忽略的版本管理的文件 在projec 目錄下 新增 .gitignore 在.gitignore 文件中寫入不需要進行版本管理控制的文件後綴或者文件名 Github 是平台 / 相當於Server Git 工具將文檔或者代碼 託管到github 平台 - Install 安裝 Mac os Mac OS 自帶 git 輸入 git -- version 就可以看到git 版本 Windows 下載最新的 https://git-for-windows.github.io/ git for windows 根據指示完成git 的安裝 完成安裝之後就可以看到git bash 的圖標 Ubuntu /Debian 根據下方命令進行安裝 $ sudo apt-get update $ sudo apt-get install git $ git --versionUse 使用 基礎配置 使用以下命令配置git 用戶名和電子郵件\n$ git config --global user.name \u0026#34;Your name\u0026#34; $ git config --global user.email \u0026#34;your_email@example.com\u0026#34;基礎使用 # 加入 Git $ git add app.py $ git add init.py main.py $ git status $ git commit -m \u0026#34;初始化，建立 project\u0026#34; # 查看提交記錄 $ git log $ git log --oneline # 比較及還原檔案 $ git diff fd0b510 -- app.py $ git checkout fd0b510 -- app.py # 重設版本；此操作不可逆，請先備份 $ git reset --hard 55f7a26將代碼或文檔備份到github $ git remote add origin https://github.com/dukehug/{repository}/{project_name.git} $ git branch -M main $ git push -u origin main $ git push多人協作 在github 邀請協作者 協作者clone project 到本地 （clone） 主作者 pull 協作者的更新到本地 （pull) 分支管理 $ git clone https://github.com/dukehug/{repository}/{project_name.git} $ git checkout -b branch2 $ git add . $ git commit -m \u0026#34;新增和更改文件\u0026#34; $ git push origin branch2 分支回出現2個 協作者在他負責的分支下提交\u0026quot;Pull request\u0026quot; 協作者請求將這些修改和變更合併到主分支 主作者可以同意或者不同意，或者request change 同意請求 ， 將會執行\u0026quot;Merge pull request\u0026quot; 合併完成之後 branch2 分支就會被deleted 每次更新遠端的代碼或者檔案之後， 都需要執行 pull Reference: https://youtu.be/FKXRiAiQFiY?si=QP6wm_S9diztgIWm - 程式與網頁開發者必備技能！Git 和 GitHub 零基礎快速上手，輕鬆掌握版本控制的要訣！ - papaya電腦教室\nhttps://www.atlassian.com/zh/git/tutorials/atlassian-git-cheatsheet - Git cheat sheet\nhttps://git-scm.com/docs - Complete list of all commands\nhttps://education.github.com/git-cheat-sheet-education.pdf - Github GIT CHEAT SHEET - Github education\n","permalink":"https://www.dukehsu.com/posts/git_and_github_note.html","summary":"\u003ch2 id=\"git-and-github-筆記\"\u003eGit and Github 筆記\u003c/h2\u003e\n\u003ch3 id=\"git-fast-version-control\"\u003eGit fast version control\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e一些基本概念\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e版本管理和跟蹤\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e版本控制系統是軟件工具\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e可以幫助團隊管理源代碼\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"status-of-version-版本狀態\"\u003eStatus of Version 版本狀態\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUntracked 未追蹤\u003c/li\u003e\n\u003cli\u003eTracked 已追蹤\u003c/li\u003e\n\u003cli\u003eStaged 已暫存\u003c/li\u003e\n\u003cli\u003eCommitted 已提交\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"head---master--branch\"\u003eHEAD -\u0026gt; master / branch\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHEAD ： 目前進度，最新狀態\u003c/li\u003e\n\u003cli\u003eMaster : 主線\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"git-追蹤的是檔案的變化不是檔案本身\"\u003egit 追蹤的是檔案的變化，不是檔案本身\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e刪除檔案也需要\u0026quot;add\u0026quot; 和 \u0026ldquo;commit\u0026rdquo;\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"需要忽略的版本管理的文件\"\u003e需要忽略的版本管理的文件\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e在projec 目錄下 新增 \u003ccode\u003e.gitignore\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e在\u003ccode\u003e.gitignore\u003c/code\u003e 文件中寫入不需要進行版本管理控制的文件後綴或者文件名\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"github-是平台--相當於server\"\u003eGithub 是平台 / 相當於Server\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eGit 工具將文檔或者代碼 託管到github 平台 -\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"install-安裝\"\u003eInstall 安裝\u003c/h3\u003e\n\u003ch4 id=\"mac-os\"\u003eMac os\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eMac OS 自帶 git 輸入 \u003ccode\u003egit -- version\u003c/code\u003e 就可以看到git 版本\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"windows\"\u003eWindows\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e下載最新的 \u003ca href=\"https://git-for-windows.github.io/\"\u003ehttps://git-for-windows.github.io/\u003c/a\u003e git for windows\u003c/li\u003e\n\u003cli\u003e根據指示完成git 的安裝\u003c/li\u003e\n\u003cli\u003e完成安裝之後就可以看到git bash 的圖標\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"ubuntu-debian\"\u003eUbuntu /Debian\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e根據下方命令進行安裝\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ sudo apt-get update\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ sudo apt-get install git\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ git --version\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"use-使用\"\u003eUse 使用\u003c/h3\u003e\n\u003ch4 id=\"基礎配置\"\u003e基礎配置\u003c/h4\u003e\n\u003cp\u003e使用以下命令配置git 用戶名和電子郵件\u003c/p\u003e","tags":["git","github","version-control"],"title":"Git and Github 筆記"},{"categories":["today_i_learned"],"content":"References:\nVultr\nHow to Install Jupyter Notebook on Ubuntu 24.04\nhttps://docs.vultr.com/how-to-install-jupyter-notebook-on-ubuntu-24-04\nPrerequisites Ubuntu 24.04 Internet access Install Jupyter Notebook with pip Update the APT package index: sudo apt update Install the virtualenv package: sudo apt install python3-virtualenv -y Create a virtual environment: virtualenv jupyter_env Activate the virtual environment: source jupyter_env/bin/activate Install Jupyter Notebook: pip install jupyter Verify the installed version: jupyter-notebook --version You can deactivate the virtual environment at any time by running deactivate.\nIf u need more gudelines please visit Vultr\nModify the configuration # Edit the configuration file vim ~/.jupyter_notebook_config.py c.ServerApp.open_browser = False c.ServerApp.allow_remote_access = True # Set a password jupyter notebook password cat ~/.jupyter_server_config.json vim ~/.jupyter_notebook_config.py c.ServerApp.password = \u0026#39;___your password hash___\u0026#39; # Create a startup script #!/bin/bash source __yourenvname__/bin/activate CURRENT_IP=$(hostname -I | awk \u0026#39;{print $1}\u0026#39;) echo \u0026#34;IP Address: $CURRENT_IP\u0026#34; jupyter notebook --no-browser --port 8888 --ip=\u0026#34;$CURRENT_IP\u0026#34;","permalink":"https://www.dukehsu.com/posts/install_jupyter_notebook_on_ubuntu_24-04.html","summary":"\u003cp\u003e\u003cstrong\u003eReferences:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVultr\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eHow to Install Jupyter Notebook on Ubuntu 24.04\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://docs.vultr.com/how-to-install-jupyter-notebook-on-ubuntu-24-04\"\u003ehttps://docs.vultr.com/how-to-install-jupyter-notebook-on-ubuntu-24-04\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"prerequisites\"\u003ePrerequisites\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUbuntu 24.04\u003c/li\u003e\n\u003cli\u003eInternet access\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"install-jupyter-notebook-with-pip\"\u003eInstall Jupyter Notebook with pip\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eUpdate the APT package index:\n\u003ccode\u003esudo apt update\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eInstall the virtualenv package:\n\u003ccode\u003esudo apt install python3-virtualenv -y\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCreate a virtual environment:\n\u003ccode\u003evirtualenv jupyter_env\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eActivate the virtual environment:\n\u003ccode\u003esource jupyter_env/bin/activate\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eInstall Jupyter Notebook:\n\u003ccode\u003epip install jupyter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eVerify the installed version:\n\u003ccode\u003ejupyter-notebook --version\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eYou can deactivate the virtual environment at any time by running \u003ccode\u003edeactivate\u003c/code\u003e.\u003c/p\u003e","tags":["jupyter-notebook","linux","python","ubuntu"],"title":"Install Jupyter notebook on Ubuntu 24.04  and allow remote access."},{"categories":["today_i_learned"],"content":"这篇笔记记录了日常使用ubuntu时需要设置的笔记\nsystemd-networkd-wait-online.service systemd-networkd-wait-online.service 是 Systemd 的一个服务单元，主要用于在系统启动时等待网络连接就绪。\n作用：该服务会等待 systemd-networkd 完成网络配置，并确认至少有一个网络接口在线后，才会标记为 ready，从而允许其他依赖网络的服务启动。默认情况下，它会监视所有由 systemd-networkd 管理的网络接口，直到连线成功或超时。 常见问题：如果 DHCP 获取 IP 耗时较长，可能导致系统启动卡在该服务；没有网络连接时，也可能会一直等待到超时。 优化方法：可以调整超时时间、禁用服务，或者检查网络配置。 调整超时时间 将 TimeoutStartSec 设置为 2sec：\nsudo vim /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service在 [Service] 部分添加：\nTimeoutStartSec=2sec保存后重新加载配置：\nsudo systemctl daemon-reload禁用服务 如果不需要严格等待网络就绪，可以禁用并屏蔽服务：\nsudo systemctl disable systemd-networkd-wait-online.service sudo systemctl mask systemd-networkd-wait-online.service优化网络配置 检查 /etc/netplan/50-cloud-init.yaml 或类似文件，确保 DHCP 配置正确。例如：\nethernets: eth0: dhcp4: true对于固定 IP 环境，改用静态 IP 可避免 DHCP 延迟‌。\ntimedatectl 设置时区 sudo timedatectl set-timezone Asia/Shanghai timedatectl status #验证 开启时间同步并设置 NTP 服务器 apt-get install chrony -y cd /etc/chrony vim chrony.conf server time.google.com iburst server time2.google.com iburst server time3.google.com iburst systemctl enable chronyd systemctl restart chronyd # 检查服务状态、同步源及同步状态 sudo systemctl status chronyd chronyc sources -v chronyc trackingusermod usermod -aG lpadmin username # 将用户名添加到 lpadmin cat /etc/group","permalink":"https://www.dukehsu.com/posts/ubuntu-server-%E7%AC%94%E8%AE%B0.html","summary":"\u003cp\u003e这篇笔记记录了日常使用ubuntu时需要设置的笔记\u003c/p\u003e\n\u003ch3 id=\"systemd-networkd-wait-onlineservice\"\u003esystemd-networkd-wait-online.service\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003esystemd-networkd-wait-online.service\u003c/code\u003e 是 Systemd 的一个服务单元，主要用于在系统启动时等待网络连接就绪。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e作用\u003c/strong\u003e：该服务会等待 systemd-networkd 完成网络配置，并确认至少有一个网络接口在线后，才会标记为 ready，从而允许其他依赖网络的服务启动。默认情况下，它会监视所有由 systemd-networkd 管理的网络接口，直到连线成功或超时。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e常见问题\u003c/strong\u003e：如果 DHCP 获取 IP 耗时较长，可能导致系统启动卡在该服务；没有网络连接时，也可能会一直等待到超时。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e优化方法\u003c/strong\u003e：可以调整超时时间、禁用服务，或者检查网络配置。\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch4 id=\"调整超时时间\"\u003e调整超时时间\u003c/h4\u003e\n\u003cp\u003e将 \u003ccode\u003eTimeoutStartSec\u003c/code\u003e 设置为 \u003ccode\u003e2sec\u003c/code\u003e：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo vim /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e在 \u003ccode\u003e[Service]\u003c/code\u003e 部分添加：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-ini\" data-lang=\"ini\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"na\"\u003eTimeoutStartSec\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e2sec\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e保存后重新加载配置：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemctl daemon-reload\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"禁用服务\"\u003e禁用服务\u003c/h4\u003e\n\u003cp\u003e如果不需要严格等待网络就绪，可以禁用并屏蔽服务：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemctl disable systemd-networkd-wait-online.service\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemctl mask systemd-networkd-wait-online.service\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"优化网络配置\"\u003e优化网络配置\u003c/h4\u003e\n\u003cp\u003e检查 \u003ccode\u003e/etc/netplan/50-cloud-init.yaml\u003c/code\u003e 或类似文件，确保 DHCP 配置正确。例如：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eethernets\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003eeth0\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003edhcp4\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e对于固定 IP 环境，改用静态 IP 可避免 DHCP 延迟‌。\u003c/p\u003e\n\u003ch3 id=\"timedatectl\"\u003etimedatectl\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e设置时区\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo timedatectl set-timezone Asia/Shanghai\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etimedatectl status \u003cspan class=\"c1\"\u003e#验证\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003col start=\"2\"\u003e\n\u003cli\u003e开启时间同步并设置 NTP 服务器\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eapt-get install chrony -y\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e /etc/chrony\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evim chrony.conf\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eserver time.google.com iburst\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eserver time2.google.com iburst\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eserver time3.google.com iburst\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl \u003cspan class=\"nb\"\u003eenable\u003c/span\u003e chronyd\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl restart chronyd\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 检查服务状态、同步源及同步状态\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemctl status chronyd\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echronyc sources -v\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echronyc tracking\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"usermod\"\u003eusermod\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eusermod -aG lpadmin username \u003cspan class=\"c1\"\u003e# 将用户名添加到 lpadmin\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat /etc/group\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["linux","ubuntu"],"title":"Ubuntu Server 笔记"},{"categories":["today_i_learned"],"content":"在vps中安裝ikuai的操作步驟如下 命令操作部分 查看當前vps的ip地址和網關地址 ip route default via 10.0.0.1 dev eth0 proto dhcp src 10.0.0.14 metric 100 10.0.0.0/22 dev eth0 proto kernel scope link src 10.0.0.14新增腳本 #!/bin/bash # 檢查是否以 root 用戶運行 if [ \u0026#34;$EUID\u0026#34; -ne 0 ]; then echo \u0026#34;請以 root 用戶運行此腳本\u0026#34; exit 1 fi # 詢問用戶下載 32 位或 64 位版本 read -p \u0026#34;請選擇要下載的 iKuai8 版本 (32/64): \u0026#34; arch # 根據用戶選擇下載對應的 ISO 鏡像 if [ \u0026#34;$arch\u0026#34; == \u0026#34;32\u0026#34; ]; then url=\u0026#34;https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x32_3.7.20_Build202506041743.iso\u0026#34; filename=\u0026#34;ikuai8_x32.iso\u0026#34; elif [ \u0026#34;$arch\u0026#34; == \u0026#34;64\u0026#34; ]; then url=\u0026#34;https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.7.20_Build202506041743.iso\u0026#34; filename=\u0026#34;ikuai8_x64.iso\u0026#34; else echo \u0026#34;無效的選擇，請重試\u0026#34; exit 1 fi # 下載 ISO 鏡像 echo \u0026#34;正在下載 $filename...\u0026#34; wget \u0026#34;$url\u0026#34; -O \u0026#34;$filename\u0026#34; echo \u0026#34;下載完成\u0026#34; # 掛載 ISO 鏡像 echo \u0026#34;正在掛載 $filename...\u0026#34; sudo mount -o loop \u0026#34;$filename\u0026#34; /mnt if [ $? -ne 0 ]; then echo \u0026#34;掛載 $filename 失敗，請手動檢查\u0026#34; exit 1 fi echo \u0026#34;掛載成功\u0026#34; # 複製啟動文件 echo \u0026#34;正在複製啟動文件...\u0026#34; sudo cp -rpf /mnt/boot / # 檢查操作結果 echo \u0026#34;檢查操作結果:\u0026#34; if [ -f \u0026#34;$filename\u0026#34; ]; then echo \u0026#34;- $filename 存在\u0026#34; else echo \u0026#34;- $filename 不存在\u0026#34; fi if mountpoint -q /mnt; then echo \u0026#34;- 掛載成功\u0026#34; else echo \u0026#34;- 掛載失敗\u0026#34; fi if [ -d \u0026#34;/boot\u0026#34; ]; then echo \u0026#34;- 啟動文件已複製\u0026#34; else echo \u0026#34;- 啟動文件複製失敗\u0026#34; fi # 檢查主機 IP 地址和網關地址 ip_address=$(ip addr show | grep \u0026#39;inet \u0026#39; | awk \u0026#39;{print $2}\u0026#39; | cut -d\u0026#39;/\u0026#39; -f1) gateway=$(ip route show | grep default | awk \u0026#39;{print $3}\u0026#39;) echo \u0026#34;- IP 地址: $ip_address\u0026#34; echo \u0026#34;- 網關地址: $gateway\u0026#34; echo \u0026#34;所有操作完成，請執行 reboot 重啟 VPS，並通過 VNC 連接控制台\u0026#34;執行腳本 chmod +x install_ikuai.sh bash install_ikuai.sh根據提示重啟vps 並通過vns 控制台連結vps\n控制台操作部分 解除lan口绑定 绑定wan口 设置wan口地址和网关 （輸入第一步驟獲取到的地址和網關） 輸入o ，開啟WAN口访问 在瀏覽器輸入vps 的公網地址進行訪問 ","permalink":"https://www.dukehsu.com/posts/ikuai_install_sh.html","summary":"\u003ch2 id=\"在vps中安裝ikuai的操作步驟如下\"\u003e在vps中安裝ikuai的操作步驟如下\u003c/h2\u003e\n\u003ch2 id=\"命令操作部分\"\u003e命令操作部分\u003c/h2\u003e\n\u003ch3 id=\"查看當前vps的ip地址和網關地址\"\u003e查看當前vps的ip地址和網關地址\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eip route\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edefault via 10.0.0.1 dev eth0 proto dhcp src 10.0.0.14 metric \u003cspan class=\"m\"\u003e100\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e10.0.0.0/22 dev eth0 proto kernel scope link src 10.0.0.14\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"新增腳本\"\u003e新增腳本\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#!/bin/bash\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 檢查是否以 root 用戶運行\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$EUID\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e -ne \u003cspan class=\"m\"\u003e0\u003c/span\u003e \u003cspan class=\"o\"\u003e]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;請以 root 用戶運行此腳本\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 詢問用戶下載 32 位或 64 位版本\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eread\u003c/span\u003e -p \u003cspan class=\"s2\"\u003e\u0026#34;請選擇要下載的 iKuai8 版本 (32/64): \u0026#34;\u003c/span\u003e arch\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 根據用戶選擇下載對應的 ISO 鏡像\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$arch\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;32\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nv\"\u003eurl\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x32_3.7.20_Build202506041743.iso\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nv\"\u003efilename\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;ikuai8_x32.iso\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eelif\u003c/span\u003e \u003cspan class=\"o\"\u003e[\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$arch\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;64\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nv\"\u003eurl\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.7.20_Build202506041743.iso\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nv\"\u003efilename\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;ikuai8_x64.iso\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eelse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;無效的選擇，請重試\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 下載 ISO 鏡像\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;正在下載 \u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e...\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ewget \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$url\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e -O \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;下載完成\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 掛載 ISO 鏡像\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;正在掛載 \u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e...\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo mount -o loop \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e /mnt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[\u003c/span\u003e \u003cspan class=\"nv\"\u003e$?\u003c/span\u003e -ne \u003cspan class=\"m\"\u003e0\u003c/span\u003e \u003cspan class=\"o\"\u003e]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;掛載 \u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e 失敗，請手動檢查\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;掛載成功\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 複製啟動文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;正在複製啟動文件...\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo cp -rpf /mnt/boot /\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 檢查操作結果\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;檢查操作結果:\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[\u003c/span\u003e -f \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- \u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e 存在\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eelse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- \u003c/span\u003e\u003cspan class=\"nv\"\u003e$filename\u003c/span\u003e\u003cspan class=\"s2\"\u003e 不存在\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e mountpoint -q /mnt\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- 掛載成功\u0026#34;\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- 掛載失敗\u0026#34;\u003c/span\u003e \u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[\u003c/span\u003e -d \u003cspan class=\"s2\"\u003e\u0026#34;/boot\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- 啟動文件已複製\u0026#34;\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- 啟動文件複製失敗\u0026#34;\u003c/span\u003e \u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 檢查主機 IP 地址和網關地址\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eip_address\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003eip addr show \u003cspan class=\"p\"\u003e|\u003c/span\u003e grep \u003cspan class=\"s1\"\u003e\u0026#39;inet \u0026#39;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e awk \u003cspan class=\"s1\"\u003e\u0026#39;{print $2}\u0026#39;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e cut -d\u003cspan class=\"s1\"\u003e\u0026#39;/\u0026#39;\u003c/span\u003e -f1\u003cspan class=\"k\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003egateway\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003eip route show \u003cspan class=\"p\"\u003e|\u003c/span\u003e grep default \u003cspan class=\"p\"\u003e|\u003c/span\u003e awk \u003cspan class=\"s1\"\u003e\u0026#39;{print $3}\u0026#39;\u003c/span\u003e\u003cspan class=\"k\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- IP 地址: \u003c/span\u003e\u003cspan class=\"nv\"\u003e$ip_address\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;- 網關地址: \u003c/span\u003e\u003cspan class=\"nv\"\u003e$gateway\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;所有操作完成，請執行 reboot 重啟 VPS，並通過 VNC 連接控制台\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"執行腳本\"\u003e執行腳本\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echmod +x install_ikuai.sh bash install_ikuai.sh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e根據提示重啟vps 並通過vns 控制台連結vps\u003c/p\u003e","tags":["ikuairouter","sd-wan","ubuntu","vps","ikuai","爱快sd-wan"],"title":"ikuai安裝腳本"},{"categories":["today_i_learned"],"content":"Pangolin 安装和使用示范 前提条件 为了跟随视频中的操作和配置教学，以下条件是可选的。 视频内容： https://www.bilibili.com/video/BV1cAJHz8EAj/\n一台有独立公网IP地址的云服务器 一个域名 一台在本地局域网中运行的Linux服务器 （博主的是Ubuntu 20.0.1) 一台运行Ollama / Deepseek 的Windows电脑 保持微笑 图： 简单的图示\n简介 Project: https://docs.fossorial.io/overview\nFossorial 系统以 Pangolin 为核心，是一个自托管的隧道反向代理，具有身份和访问管理功能，旨在通过运行在用户空间的加密 WireGuard 隧道安全地公开私有资源。想象一下自托管的 Cloudflare 隧道。 Pangolin 在底层使用 Traefik 进行实际的 HTTP 代理。Badger 插件提供了一种使用 Pangolin 验证每个请求的方法。第二个服务 Gerbil 提供了一个 WireGuard 管理服务器，Pangolin 可以使用它来创建对等体进行连接。最后，还有 Newt，这是一个 CLI 工具和 Docker 容器，它完全在用户空间通过 WireGuard 连接到 Newt 和 Gerbil，并代理您的本地资源。这意味着您无需运行特权进程或容器即可公开您的服务！\n图： Fossorial system Diagram\n开始 在腾讯云服务器下载 Pangolin 服务端 的安装脚本 # 下载并执行 wget -O installer \u0026#34;https://github.com/fosrl/pangolin/releases/download/1.2.0/installer_linux_$(uname -m | sed \u0026#39;s/x86_64/amd64/;s/aarch64/arm64/\u0026#39;)\u0026#34; \u0026amp;\u0026amp; chmod +x ./installer添加DNS 记录 注意：需要关闭Proxy\n图： Cloudflare DNS Records\n云服务器安全组开放端口 TCP 80 , 443 UDP 51820 访问Pangolin 管理界面进行配置 你在安装Pangolin服务端时配置的管理域名\n例如：https://pangolin.example.com\n输入你设置的 Pangolin管理员帐户密码\n创建ORG 创建Site 连接隧道 创建资源 添加 目标和授权 开始通过子域名访问内网服务 小结 Pangolin的安装过程简单便捷，无需复杂配置，通过 Docker 容器化 部署，独立运行且不影响其他服务。\n在使用过程中，能在很短的时间内公开内网的服务，且不需要在内网的目标服务器安装任何程序；同时提供灵活的权限控制，便于管理用户访问与操作权限，总的来说，Pangolin兼顾了易用性、效率与安全性需求。\n","permalink":"https://www.dukehsu.com/posts/pangolin_install.html","summary":"\u003ch2 id=\"pangolin-安装和使用示范\"\u003ePangolin 安装和使用示范\u003c/h2\u003e\n\u003ch2 id=\"前提条件\"\u003e前提条件\u003c/h2\u003e\n\u003cp\u003e为了跟随视频中的操作和配置教学，以下条件是可选的。 视频内容： \u003ca href=\"https://www.bilibili.com/video/BV1cAJHz8EAj/\"\u003ehttps://www.bilibili.com/video/BV1cAJHz8EAj/\u003c/a\u003e\u003c/p\u003e\n\u003ciframe src=\"//player.bilibili.com/player.html?isOutside=true\u0026amp;aid=114551609689505\u0026amp;bvid=BV1cAJHz8EAj\u0026amp;cid=30094263026\u0026amp;p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"\u003e\u003c/iframe\u003e\n\u003cul\u003e\n\u003cli\u003e一台有独立公网IP地址的云服务器\u003c/li\u003e\n\u003cli\u003e一个域名\u003c/li\u003e\n\u003cli\u003e一台在本地局域网中运行的Linux服务器 （博主的是Ubuntu 20.0.1)\u003c/li\u003e\n\u003cli\u003e一台运行Ollama / Deepseek 的Windows电脑\u003c/li\u003e\n\u003cli\u003e保持微笑\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"pangolin\" loading=\"lazy\" src=\"/posts/pangolin_install/images/pangolin.webp\"\u003e\u003c/p\u003e\n\u003cp\u003e图： 简单的图示\u003c/p\u003e\n\u003ch2 id=\"简介\"\u003e简介\u003c/h2\u003e\n\u003cp\u003eProject: \u003ca href=\"https://docs.fossorial.io/overview\"\u003ehttps://docs.fossorial.io/overview\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFossorial 系统以 Pangolin 为核心，是一个自托管的隧道反向代理，具有身份和访问管理功能，旨在通过运行在用户空间的加密 WireGuard 隧道安全地公开私有资源。想象一下自托管的 Cloudflare 隧道。 Pangolin 在底层使用 Traefik 进行实际的 HTTP 代理。Badger 插件提供了一种使用 Pangolin 验证每个请求的方法。第二个服务 Gerbil 提供了一个 WireGuard 管理服务器，Pangolin 可以使用它来创建对等体进行连接。最后，还有 Newt，这是一个 CLI 工具和 Docker 容器，它完全在用户空间通过 WireGuard 连接到 Newt 和 Gerbil，并代理您的本地资源。这意味着您无需运行特权进程或容器即可公开您的服务！\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cimg alt=\"Fossorial System Diagram\" loading=\"lazy\" src=\"/posts/pangolin_install/images/Fossorial-System-Diagram.webp\"\u003e\u003c/p\u003e\n\u003cp\u003e图： Fossorial system Diagram\u003c/p\u003e\n\u003ch2 id=\"开始\"\u003e开始\u003c/h2\u003e\n\u003ch3 id=\"在腾讯云服务器下载-pangolin-服务端-的安装脚本\"\u003e在腾讯云服务器下载 Pangolin 服务端 的安装脚本\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 下载并执行\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ewget -O installer \u003cspan class=\"s2\"\u003e\u0026#34;https://github.com/fosrl/pangolin/releases/download/1.2.0/installer_linux_\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003euname -m \u003cspan class=\"p\"\u003e|\u003c/span\u003e sed \u003cspan class=\"s1\"\u003e\u0026#39;s/x86_64/amd64/;s/aarch64/arm64/\u0026#39;\u003c/span\u003e\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echmod +x ./installer\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"添加dns-记录\"\u003e添加DNS 记录\u003c/h3\u003e\n\u003cp\u003e注意：需要关闭Proxy\u003c/p\u003e","tags":["home-lab","linux","pangolin","wireguard","内网穿透"],"title":"Pangolin 安装和使用示范"},{"categories":["today_i_learned"],"content":"緣起 显示器为 4K 将 “Make text bigger” 的值调整到了 150% Windows 的缩放 Bug Windows 操作系统在高分辨率显示器下的缩放一直存在一些问题。更改 “Make text bigger” 后，会影响桌面图标的选择框，情况如下：\n图片来自微软社区。\n由于我已经更改了注册表，之前的 Bug 没有截屏，所以使用社区图片作为示例。\n解决办法 修改注册表 注册表位置：\nHKEY_CURRENT_USER\\Control Panel\\Desktop\\WindowMetrics\n将 IconSpacing 和 IconVerticalSpacing 的值修改为 -1125 出现 Bug 时，这两个值通常在 5500 左右，所以选择框会很宽 修改后重新启动计算机 参考 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\n","permalink":"https://www.dukehsu.com/posts/windows10_icon_fix.html","summary":"\u003ch2 id=\"緣起\"\u003e緣起\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e显示器为 4K\u003c/li\u003e\n\u003cli\u003e将 “Make text bigger” 的值调整到了 150%\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"Make text bigger 设置\" loading=\"lazy\" src=\"/posts/windows10_icon_fix/images/1.webp\"\u003e\u003c/p\u003e\n\u003ch3 id=\"windows-的缩放-bug\"\u003eWindows 的缩放 Bug\u003c/h3\u003e\n\u003cp\u003eWindows 操作系统在高分辨率显示器下的缩放一直存在一些问题。更改 “Make text bigger” 后，会影响桌面图标的选择框，情况如下：\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"桌面图标选择框变宽\" loading=\"lazy\" src=\"/posts/windows10_icon_fix/images/aa5cd5cb-1a81-4771-b1c9-1e8a20575ec8.webp\"\u003e\u003c/p\u003e\n\u003cp\u003e图片来自微软社区。\u003c/p\u003e\n\u003cp\u003e由于我已经更改了注册表，之前的 Bug 没有截屏，所以使用社区图片作为示例。\u003c/p\u003e\n\u003ch3 id=\"解决办法\"\u003e解决办法\u003c/h3\u003e\n\u003ch4 id=\"修改注册表\"\u003e修改注册表\u003c/h4\u003e\n\u003cp\u003e注册表位置：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eHKEY_CURRENT_USER\\Control Panel\\Desktop\\WindowMetrics\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"注册表设置\" loading=\"lazy\" src=\"/posts/windows10_icon_fix/images/2.png\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e将 \u003ccode\u003eIconSpacing\u003c/code\u003e 和 \u003ccode\u003eIconVerticalSpacing\u003c/code\u003e 的值修改为 \u003ccode\u003e-1125\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e出现 Bug 时，这两个值通常在 \u003ccode\u003e5500\u003c/code\u003e 左右，所以选择框会很宽\u003c/li\u003e\n\u003cli\u003e修改后重新启动计算机\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"参考\"\u003e参考\u003c/h3\u003e\n\u003cp\u003e\u003ca 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\"\u003ehttps://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\u003c/a\u003e\u003c/p\u003e","tags":["windows-bug","windows-缩放","windows10"],"title":"Windows10桌面图标选择框变宽的处理办法"},{"categories":["today_i_learned"],"content":"准备工作 Typecho 数据导出插件 Byetyp https://github.com/sunxiyuan/ByeTyp\n打包备份Typecho中/usr/uploads 的数据\n备份统计代码和ADsense 代码\n步骤 注： 因为是迁移完之后才写的笔记，所以没有截图了，接下来的内容就只有文字步骤了。\n文字步骤 将Byetyp插件上传到Typecho博客中的插件目录(Plug)， 并去掉版本号修改目录名（否则无法正常启用） 将Typecho中/usr/uploads 用户上传的文件打包下载备份到本地 ，稍后要上传到Wordpress 的 wp-content/uploads 目录 激活Byetyp插件导出Typecho博客的数据，格式为xml 安装好Wordpress 并导入Typecho中的数据 执行数据库命令 ，将post-content 表中的附件路径（图片路径）替换成Wordpress SQL command UPDATE wp_posts SET post_content = REPLACE( post_content, \u0026#39;/usr/uploads/\u0026#39;, \u0026#39;/wp-content/uploads/\u0026#39;);注： wp_posts是Wordpress表名 , 请根据你的实际情况来\n1pannel PHP 容器运行环境部署的网站 权限问题 问题现象：\n上传主题 或者文件 、 插件到Wordpress 会提示权限不足、或者需要你填写FTP信息 解决办法：\n通过 PHP 容器运行环境部署的网站，需要将 index 和子目录下的所有文件、文件夹所有者和用户组设置为 1000，本地 PHP 环境需要参考本地 PHP-FPM 用户和用户组设置 如果VPS中没有id为1000的用户或者组，请新建一个并设置其ID为1000,再到1panel的网站目录配置界面，将其设置为1000 小结 之前因为嫌 WordPress 麻烦，所以用了很多年的 Typecho。今年有一些想要的插件或者功能无法在 Typecho 实现，所以又换回 WordPress。目前的访问速度还能接受；因为采用了 Cloudflare proxy，图片显示可能会稍慢。\n编辑器：采用的是MarkupMarkdown， 主题：Theme Kratos Made By Seaton Jiang 参考： 将Typecho无缝迁移到WordPress https://www.csl88.top/archives/987/\nByetyp https://github.com/sunxiyuan/ByeTyp\n","permalink":"https://www.dukehsu.com/posts/typecho_tranferto_wordpress.html","summary":"\u003ch2 id=\"准备工作\"\u003e准备工作\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eTypecho 数据导出插件 \u003ccode\u003eByetyp\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/sunxiyuan/ByeTyp\"\u003ehttps://github.com/sunxiyuan/ByeTyp\u003c/a\u003e\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e\n\u003cp\u003e打包备份Typecho中\u003ccode\u003e/usr/uploads\u003c/code\u003e 的数据\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e备份统计代码和ADsense 代码\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"步骤\"\u003e步骤\u003c/h2\u003e\n\u003cp\u003e注： 因为是迁移完之后才写的笔记，所以没有截图了，接下来的内容就只有文字步骤了。\u003c/p\u003e\n\u003ch3 id=\"文字步骤\"\u003e文字步骤\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e将Byetyp插件上传到Typecho博客中的插件目录(Plug)， 并去掉版本号修改目录名（否则无法正常启用）\u003c/li\u003e\n\u003cli\u003e将Typecho中\u003ccode\u003e/usr/uploads\u003c/code\u003e 用户上传的文件打包下载备份到本地 ，稍后要上传到Wordpress 的 \u003ccode\u003ewp-content/uploads\u003c/code\u003e 目录\u003c/li\u003e\n\u003cli\u003e激活Byetyp插件导出Typecho博客的数据，格式为\u003ccode\u003exml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e安装好Wordpress 并导入Typecho中的数据\u003c/li\u003e\n\u003cli\u003e执行数据库命令 ，将\u003ccode\u003epost-content\u003c/code\u003e 表中的附件路径（图片路径）替换成\u003ccode\u003eWordpress\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"sql-command\"\u003eSQL command\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eUPDATE\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003ewp_posts\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"k\"\u003eSET\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003epost_content\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"k\"\u003eREPLACE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003epost_content\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;/usr/uploads/\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;/wp-content/uploads/\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e注： \u003ccode\u003ewp_posts\u003c/code\u003e是Wordpress表名 , 请根据你的实际情况来\u003c/p\u003e\n\u003ch3 id=\"1pannel\"\u003e1pannel\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePHP 容器运行环境部署的网站 权限问题\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e问题现象：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e上传主题 或者文件 、 插件到Wordpress 会提示权限不足、或者需要你填写FTP信息\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e解决办法：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e通过 PHP 容器运行环境部署的网站，需要将 index 和子目录下的所有文件、文件夹所有者和用户组设置为 1000，本地 PHP 环境需要参考本地 PHP-FPM 用户和用户组设置\u003c/li\u003e\n\u003cli\u003e如果VPS中没有id为1000的用户或者组，请新建一个并设置其ID为1000,再到1panel的网站目录配置界面，将其设置为1000\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"小结\"\u003e小结\u003c/h2\u003e\n\u003cp\u003e之前因为嫌 WordPress 麻烦，所以用了很多年的 Typecho。今年有一些想要的插件或者功能无法在 Typecho 实现，所以又换回 WordPress。目前的访问速度还能接受；因为采用了 Cloudflare proxy，图片显示可能会稍慢。\u003c/p\u003e","tags":["1panel","blog迁移","typecho","wordpress"],"title":"Typecho 迁移到 WordPress 笔记"},{"categories":["today_i_learned"],"content":"文章目录 先决条件\nWireGuard 安装（Wg-easy)\ndocker 常用命令\nVPS安装Wireguard的先决条件 带公网IP地址的设备 / IPV6 也可以 （该笔记使用的Ubuntu18.04 操作系统的VPS 作为例子）\nVPS 启用SSH\nVPS安装Docker\nVPS Wireguard 的安装步骤 1. Docker 安装 sudo apt install docker.io docker-compose sudo service docker start whoami sudo usermod -aG docker {ubuntu} //添加用户进docker组 exec su - $USER //输入密码2. 创建Wg-easy 密码和密匙 docker run -it ghcr.io/wg-easy/wg-easy wgpw {你的密码} PASSWORD_HASH=\u0026#39;$2a$12$NJOIUwURc7qX4XnihBNKqOTSqKVxGJahAmwg6FUuboLvxzapBCYHK\u0026#39; //{你的密码} //系统自动开始拉取镜像并返回密码密匙 //复制保存好密匙3. 运行wg-easy docker 镜像 docker run --detach \\ --name wg-easy \\ --env LANG=en \\ --env WG_HOST={你的服务器地址} \\ --env PASSWORD_HASH=\u0026#39;{步骤2中获取的密码密匙}\u0026#39; \\ --env PORT=51821 \\ --env WG_PORT=65534 \\ --volume ~/.wg-easy:/etc/wireguard \\ --publish 65534:65534/udp \\ --publish 51821:51821/tcp \\ --cap-add NET_ADMIN \\ --cap-add SYS_MODULE \\ --sysctl \u0026#39;net.ipv4.conf.all.src_valid_mark=1\u0026#39; \\ --sysctl \u0026#39;net.ipv4.ip_forward=1\u0026#39; \\ --restart unless-stopped \\ ghcr.io/wg-easy/wg-easy docker ps //查看容器 运行状态 以及列表 docker stop wg-easy //停止容器 docker start wg-easy // 启动容器 docker rm wg-easy //删除容器4. 登录wg-easy 添加peer 当容器运行正常之后，可以在浏览器中访问服务器地址带上端口进行访问\n例如： http://{服务器地址}:51821\n密码请输入步骤2中你设置的密码即可添加\npeer的配置信息在下载下来的cnf文件中， 使用notepad++查看\nDocker 常用命令 docker ps //查看容器 运行状态 以及列表 docker stop wg-easy //停止容器 docker start wg-easy // 启动容器 docker rm wg-easy //删除容器","permalink":"https://www.dukehsu.com/posts/wireguard.html","summary":"\u003ch2 id=\"文章目录\"\u003e文章目录\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e先决条件\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWireGuard 安装（Wg-easy)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocker 常用命令\u003c/p\u003e\n\u003ch3 id=\"vps安装wireguard的先决条件\"\u003eVPS安装Wireguard的先决条件\u003c/h3\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e带公网IP地址的设备 / IPV6 也可以 （该笔记使用的Ubuntu18.04 操作系统的VPS 作为例子）\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVPS 启用SSH\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVPS安装Docker\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"vps-wireguard-的安装步骤\"\u003eVPS Wireguard 的安装步骤\u003c/h3\u003e\n\u003ch4 id=\"1-docker-安装\"\u003e1. Docker 安装\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt install docker.io docker-compose\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo service docker start\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ewhoami\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo usermod -aG docker \u003cspan class=\"o\"\u003e{\u003c/span\u003eubuntu\u003cspan class=\"o\"\u003e}\u003c/span\u003e //添加用户进docker组\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eexec\u003c/span\u003e su - \u003cspan class=\"nv\"\u003e$USER\u003c/span\u003e //输入密码\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"2-创建wg-easy-密码和密匙\"\u003e2. 创建Wg-easy 密码和密匙\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edocker run -it ghcr.io/wg-easy/wg-easy wgpw \u003cspan class=\"o\"\u003e{\u003c/span\u003e你的密码\u003cspan class=\"o\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003ePASSWORD_HASH\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;$2a$12$NJOIUwURc7qX4XnihBNKqOTSqKVxGJahAmwg6FUuboLvxzapBCYHK\u0026#39;\u003c/span\u003e //\u003cspan class=\"o\"\u003e{\u003c/span\u003e你的密码\u003cspan class=\"o\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e//系统自动开始拉取镜像并返回密码密匙\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e//复制保存好密匙\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"3-运行wg-easy-docker-镜像\"\u003e3. 运行wg-easy docker 镜像\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edocker run --detach \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --name wg-easy \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --env \u003cspan class=\"nv\"\u003eLANG\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003een \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --env \u003cspan class=\"nv\"\u003eWG_HOST\u003c/span\u003e\u003cspan class=\"o\"\u003e={\u003c/span\u003e你的服务器地址\u003cspan class=\"o\"\u003e}\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --env \u003cspan class=\"nv\"\u003ePASSWORD_HASH\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;{步骤2中获取的密码密匙}\u0026#39;\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --env \u003cspan class=\"nv\"\u003ePORT\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e51821\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --env \u003cspan class=\"nv\"\u003eWG_PORT\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --volume ~/.wg-easy:/etc/wireguard \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --publish 65534:65534/udp \u003cspan class=\"se\"\u003e\\ \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --publish 51821:51821/tcp \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --cap-add NET_ADMIN \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --cap-add SYS_MODULE \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --sysctl \u003cspan class=\"s1\"\u003e\u0026#39;net.ipv4.conf.all.src_valid_mark=1\u0026#39;\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --sysctl \u003cspan class=\"s1\"\u003e\u0026#39;net.ipv4.ip_forward=1\u0026#39;\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  --restart unless-stopped \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ghcr.io/wg-easy/wg-easy\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  docker  ps  //查看容器 运行状态 以及列表\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  docker stop wg-easy //停止容器\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  docker start wg-easy // 启动容器\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  docker rm wg-easy //删除容器\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"4-登录wg-easy-添加peer\"\u003e4. 登录wg-easy 添加peer\u003c/h4\u003e\n\u003cp\u003e当容器运行正常之后，可以在浏览器中访问服务器地址带上端口进行访问\u003c/p\u003e","tags":["vpn","wireguard","组网"],"title":"Wireguard安装笔记"},{"categories":["today_i_learned"],"content":"文章目录 | Table of Contents ERPnext 简介 先决条件 安装步骤 总结 \u0026amp; 引用 先决条件 | Prerequisites 系统环境要求 Ubuntu 24.04 A user with sudo privileges Python 3.11+ pip 20+ MariaDB 10.3.x Node.js 18 Yarn 1.12+ 硬件要求 2 Process 2 Core 4GB ram 40GB Storage Intenet 安装步骤 | Installtion Steps 包升级和创建新用户 Update and Upgrade Packages\nsudo apt-get update -y \u0026amp;\u0026amp; sudo apt-get upgrade -y Create a New user\nsudo adduser **Your-user-name** #Fill in the information as prompted sudo usemod -aG sudo **Your-user-name** su **Your-user-name** #Enter your password cd ~ 安装环境需要的包 Install Git\nsudo apt-get install git -y Install Python Dependencies\nsudo apt-get install python3-dev -y sudo apt-get install python3-setuptools -y sudo apt-get install python3-pip -y sudo apt install python3.12-venv -y Install MariaDB and Configuration it\nsudo apt-get install software-properties-common -y sudo apt install mariadb-server -y sudo mysql_secure_installtion在执行mysql_secure_installtion 之后请按以下步骤设置\n设置root密码\n删除 anonymous users\n允许root 远程登录\n删除test database\nReload privilege tables\n编辑 MariaDB 配置文件\nsudo cp /etc/mysql/my.cnf /opt/my.cnf.back sudo nano /etc/mysql/my.cnf #ctrl +x y save sudo systemctl restart mariadb在my.cnf最末行添加如下内容\n[mysqld] innodb-file-format=barracuda innodb-file-per-table=1 innodb-large-prefix=1 character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [mysql] default-character-set = utf8mb4 Install Redis Server\nsudo apt-get install redis-server -y Install CURL, Node.js, NPM, and Yarn and wkhtmltopdf\n#CURL sudo apt install curl #Node js curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash source ~/.profile nvm install 18 #NPM sudo apt-get install npm -y #Yarn sudo npm install -g yarn -y #wkhtmltopdf sudo apt-get install xvfb libfontcofig wkhtmltopdf -y Setting Up Frappe Bench Install Frappe Bench\nsudo -H pip3 install frappe-bench --break-system-packages sudo -H pip3 install ansible --break-system-packages Initialize Frappe Bench\nbench init frappe-bench --frappe-branch version-15 ls cd frappe-bench #change directory permissions chmod -R o+rx /home/**Your-erp-users** Create a New site\nbench new-site **site-name** #enter you database root password #setings Administrator password Install ERPnext APPS\nbench get-app payments bench get-app --branch version-15 erpnext bench --site **site-name** install-app erpnext bench use **site-name** 启用调度程序并禁用维护模式 bench --site [site-name] enable-scheduler\n启用 ERPNext 站点的后台任务调度程序。 ERPNext 依赖调度程序执行定时任务（如生成报告、发送邮件、处理队列任务等）。 如果不启用调度程序，某些功能可能无法正常工作。 bench --site [site-name] set-maintenance-mode off\n将站点从维护模式切换到正常模式。 在维护模式下，站点对普通用户不可用，只有管理员可以访问。 关闭维护模式后，站点恢复正常运行，用户可以访问。 配置生产环境 sudo bench setup production **erp-user**\n将 ERPNext 配置为生产模式。\n该命令会：\n配置 Gunicorn（用于处理 Python 请求的 WSGI 服务器）。 配置 Supervisor（用于管理后台进程）。 确保站点在生产环境中以最佳性能运行。 [**erp-user**] 是运行 Frappe/ERPNext 的系统用户（通常为 frappe）。\nbench setup nginx\n配置 Nginx 作为反向代理服务器。 Nginx 负责处理外部请求并将其转发给 Gunicorn。 该命令会自动生成 Nginx 配置文件并启用站点。 sudo supervisorctl restart all\n重启所有由 Supervisor 管理的进程。 确保所有服务（如 Gunicorn、后台工作进程等）使用最新的配置。 sudo bench setup production **erp-user**（重复）\n再次运行以确保所有生产配置已正确应用。 访问站点 在生产模式下，ERPNext 通过 Nginx 提供服务，默认使用 HTTP（80 端口）或 HTTPS（443 端口）。 你可以直接通过服务器的 IP 地址或域名访问站点，无需指定端口号（如 http://your-server-ip）。 总结 和 引用 | Conclusion \u0026amp; References References: How to Install ERPNext Version 15 on Ubuntu 24.04: A Step-by-Step Guide - https://syncbricks.com/how-to-install-erpnext-version-15-on-ubuntu-24-04-a-step-by-step-guide/\nYoutube - https://www.youtube.com/watch?v=Q9D2wbrC6i8\nChat GPT \u0026amp; DeepSeek\n","permalink":"https://www.dukehsu.com/posts/erpnext_installtion.html","summary":"\u003ch2 id=\"文章目录--table-of-contents\"\u003e文章目录 | Table of Contents\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eERPnext 简介\u003c/li\u003e\n\u003cli\u003e先决条件\u003c/li\u003e\n\u003cli\u003e安装步骤\u003c/li\u003e\n\u003cli\u003e总结 \u0026amp; 引用\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"先决条件--prerequisites\"\u003e先决条件 | Prerequisites\u003c/h2\u003e\n\u003ch3 id=\"系统环境要求\"\u003e系统环境要求\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUbuntu 24.04\u003c/li\u003e\n\u003cli\u003eA user with sudo privileges\u003c/li\u003e\n\u003cli\u003ePython 3.11+\u003c/li\u003e\n\u003cli\u003epip 20+\u003c/li\u003e\n\u003cli\u003eMariaDB 10.3.x\u003c/li\u003e\n\u003cli\u003eNode.js 18\u003c/li\u003e\n\u003cli\u003eYarn 1.12+\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"硬件要求\"\u003e硬件要求\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 Process 2 Core\u003c/li\u003e\n\u003cli\u003e4GB ram\u003c/li\u003e\n\u003cli\u003e40GB Storage\u003c/li\u003e\n\u003cli\u003eIntenet\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"安装步骤--installtion-steps\"\u003e安装步骤 | Installtion Steps\u003c/h2\u003e\n\u003ch3 id=\"包升级和创建新用户\"\u003e包升级和创建新用户\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate and Upgrade Packages\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get update -y \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e sudo apt-get upgrade -y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCreate a New user\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo adduser **Your-user-name**\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#Fill in the information as prompted\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo usemod -aG sudo **Your-user-name**\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esu **Your-user-name**\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#Enter your password\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e ~ \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"安装环境需要的包\"\u003e安装环境需要的包\u003c/h3\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e\n\u003cp\u003eInstall Git\u003c/p\u003e","tags":["erp","erpnext","erpnext15","linux","ubuntu"],"title":"在 Ubuntu 24.04 LTS 中的安装ERPNext 笔记 Step by Step"},{"categories":["today_i_learned"],"content":"故障现象 Proxmox 性能显示界面无数据，且时间为1970-01-01\n解决方法 同步系统时间和硬件时间： 先确保系统时间和硬件时间是正确且同步的：\n# 设置正确的系统时间（例如：2025-01-13 10:00:00） date -s \u0026#34;2025-01-13 10:00:00\u0026#34; # 同步系统时间到硬件时钟 hwclock -w # 检查硬件时钟时间 hwclock 重启 PVE 服务： 修改时间后，重启相关服务以确保正常运行：\nsystemctl restart pve-cluster systemctl restart pveproxy systemctl restart pvedaemon 清理 rrd 数据缓存（可选）： 如果时间错乱严重，可能需要清理并重建 RRD 数据：\nsystemctl stop pve-cluster rm -rf /var/lib/rrdcached/db/pve2-node/ rm -rf /var/lib/rrdcached/db/pve2-storage/ rm -rf /var/lib/rrdcached/db/pve2-vm/ systemctl start pve-cluster 验证 NTP 配置： 使用 NTP 服务确保系统时间自动同步：\napt update apt install ntp systemctl enable ntp systemctl start ntp ntpq -p如果不需要 NTP，可以手动设置时间，但建议保持系统和硬件时钟同步。\n刷新 Web 界面： 重新登录 Proxmox 的 Web UI，查看内存图表是否恢复正常。\n","permalink":"https://www.dukehsu.com/posts/proxmox_fix.html","summary":"\u003ch3 id=\"故障现象\"\u003e故障现象\u003c/h3\u003e\n\u003cp\u003eProxmox 性能显示界面无数据，且时间为1970-01-01\u003c/p\u003e\n\u003ch3 id=\"解决方法\"\u003e解决方法\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e同步系统时间和硬件时间\u003c/strong\u003e： 先确保系统时间和硬件时间是正确且同步的：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 设置正确的系统时间（例如：2025-01-13 10:00:00）\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edate -s \u003cspan class=\"s2\"\u003e\u0026#34;2025-01-13 10:00:00\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 同步系统时间到硬件时钟\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ehwclock -w\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 检查硬件时钟时间\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ehwclock\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e重启 PVE 服务\u003c/strong\u003e： 修改时间后，重启相关服务以确保正常运行：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl restart pve-cluster\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl restart pveproxy\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl restart pvedaemon\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e清理 rrd 数据缓存\u003c/strong\u003e（可选）： 如果时间错乱严重，可能需要清理并重建 RRD 数据：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl stop pve-cluster\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003erm -rf /var/lib/rrdcached/db/pve2-node/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003erm -rf /var/lib/rrdcached/db/pve2-storage/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003erm -rf /var/lib/rrdcached/db/pve2-vm/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl start pve-cluster\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e验证 NTP 配置\u003c/strong\u003e： 使用 NTP 服务确保系统时间自动同步：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eapt update\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eapt install ntp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl \u003cspan class=\"nb\"\u003eenable\u003c/span\u003e ntp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl start ntp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003entpq -p\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e如果不需要 NTP，可以手动设置时间，但建议保持系统和硬件时钟同步。\u003c/p\u003e","tags":["proxmox"],"title":"Proxmox 内存图表等性能监控无数据显示的解决办法"},{"categories":["today_i_learned"],"content":"VMware Station 遷移到 Proxmox PVE 筆記 必要條件 VMware Station 中有VMS VMware Station宿主機和Proxmox 服務器有足夠的磁盤空間 一些基本的Linux命令知識 當前的軟件版本 VMware Station： VMware® Workstation 17 Pro 17.0.0 build-20800274\nProxmox : Proxmox Virtual Environment 8.3.0\n操作步驟 從VMware Station 導出VMS ，文件為*.ovf 將VMware Station 導出的*.ovf 下載到Proxmox 節點中 執行導入命令 新增網絡設備，複製MAC地址 Step by Step 從VMware Station 導出VMS 點擊導出按鈕\n導出文件到目錄\n等待導出到目錄\n通過Shell下載ovf 和vmdk文件 mf 在宿主服務器中建立HFS服務，將導出的ovf文件和vmdk文件添加到HFS服務中 在Proxmox 服務器中下載文件 wget http://10.253.253.100/Windwos10_wechat.ovf #依次將其下載到proxmox服務器中\nUbuntu ID: 100\nWindows 10\n導入到Proxmox root@pve:qm importovf \u0026lt;vmid\u0026gt; \u0026lt;manifest\u0026gt; \u0026lt;storage\u0026gt; [OPTIONS] #Create a new VM using parameters read from an OVF manifest #https://pve.proxmox.com/pve-docs/qm.1.html參數說明： \u0026ldquo;vmid:\u0026rdquo; 虛擬機在PVE 中的ID，Proxmox 中初始第一台VM的ID 為100， 這個100就是VMID \u0026ldquo;manifest:\u0026rdquo; ovf格式文件，從VMware Station中導出的虛擬機文件 \u0026ldquo;storage:\u0026rdquo; PVE的存儲池， 例如 \u0026rsquo;local-lvm\u0026rsquo; \u0026ldquo;[OPTOPNS]:\u0026rdquo; \u0026mdash;format qcow2 | raw | vmdk Target format 詳細請參考： https://pve.proxmox.com/pve-docs/qm.1.html\n示例: qm importovf 101 \u0026#39;Windows10_wechat.ovf\u0026#39; local-lvm --format vmdk執行完該命令等待數據轉移，完成之後會自動回到命令執行界面，如下圖\n轉換完成，在Proxmox 控制台中即可看到這台VM\n添加新的網絡設備\n注意： 記得將原來的MAC地址複製到新的網絡設備中\n其它 如果是Windows操作系統，卡在 “booting from Hard Disk” 無法啟動，請先將VM停止， 再將BIOS 改成\u0026quot;UEFI\u0026quot;即可 檢查核對Proxmox 的時區、時間同步 基本的安全設置 總結 之前一直用的VMWare Station 和 ESXi，猶豫這次換了聯想Staiton S30 ,就開始使用Proxmox。\n在Windows上使用VMWare Station 和單獨的服務器使用 ESXi ， 就算是上M2和 SSD 效率和啟動速度不如Proxmox；\n遠程虛擬主機(windows) 操作起來比VMWare 的流暢， 已經能滿足日常辦公使用了。 在易用性方面，ESXi 和 Sation 會比Proxmox 好一些（對於沒有Linux 基礎的人來說）；\nRenfrence vmware-VM迁移至Proxmox VE教程\nhttps://foxi.buduanwang.vip/virtualization/375.html/\npve document\nhttps://pve.proxmox.com/pve-docs/qm.1.html\n","permalink":"https://www.dukehsu.com/posts/vmwaretransition.html","summary":"\u003ch1 id=\"vmware-station-遷移到-proxmox-pve-筆記\"\u003eVMware Station 遷移到 Proxmox PVE 筆記\u003c/h1\u003e\n\u003ch2 id=\"必要條件\"\u003e必要條件\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eVMware Station 中有VMS\u003c/li\u003e\n\u003cli\u003eVMware Station宿主機和Proxmox 服務器有足夠的磁盤空間\u003c/li\u003e\n\u003cli\u003e一些基本的Linux命令知識\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"當前的軟件版本\"\u003e當前的軟件版本\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eVMware Station：\u003c/strong\u003e VMware® Workstation 17 Pro 17.0.0 build-20800274\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eProxmox :\u003c/strong\u003e Proxmox Virtual Environment 8.3.0\u003c/p\u003e\n\u003ch2 id=\"操作步驟\"\u003e操作步驟\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e從VMware Station 導出VMS ，文件為*.ovf\u003c/li\u003e\n\u003cli\u003e將VMware Station 導出的*.ovf 下載到Proxmox 節點中\u003c/li\u003e\n\u003cli\u003e執行導入命令\u003c/li\u003e\n\u003cli\u003e新增網絡設備，複製MAC地址\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"step-by-step\"\u003eStep by Step\u003c/h2\u003e\n\u003ch3 id=\"從vmware-station-導出vms\"\u003e從VMware Station 導出VMS\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"image-20250113112019918.png\" loading=\"lazy\" src=\"/posts/vmwaretransition/images/3686120474.png\" title=\"image-20250113112019918.png\"\u003e\u003cbr\u003e\n點擊導出按鈕\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20250113115714045.png\" loading=\"lazy\" src=\"/posts/vmwaretransition/images/2307567632.png\" title=\"image-20250113115714045.png\"\u003e\u003cbr\u003e\n導出文件到目錄\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20250113115805201.png\" loading=\"lazy\" src=\"/posts/vmwaretransition/images/3627284714.png\" title=\"image-20250113115805201.png\"\u003e\u003cbr\u003e\n等待導出到目錄\u003c/p\u003e\n\u003ch3 id=\"通過shell下載ovf-和vmdk文件-mf\"\u003e通過Shell下載ovf 和vmdk文件 mf\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e在宿主服務器中建立HFS服務，將導出的ovf文件和vmdk文件添加到HFS服務中\u003c/li\u003e\n\u003cli\u003e在Proxmox 服務器中下載文件\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ewget http://10.253.253.100/Windwos10_wechat.ovf\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#依次將其下載到proxmox服務器中\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"image-20250113100327994.png\" loading=\"lazy\" src=\"/posts/vmwaretransition/images/2481538126.png\" title=\"image-20250113100327994.png\"\u003e\u003c/p\u003e\n\u003cp\u003eUbuntu ID: 100\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20250113134044506.png\" loading=\"lazy\" src=\"/posts/vmwaretransition/images/307253254.png\" title=\"image-20250113134044506.png\"\u003e\u003c/p\u003e\n\u003cp\u003eWindows 10\u003c/p\u003e\n\u003ch3 id=\"導入到proxmox\"\u003e導入到Proxmox\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   root@pve:qm importovf \u0026lt;vmid\u0026gt; \u0026lt;manifest\u0026gt; \u0026lt;storage\u0026gt; [OPTIONS]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   #Create a new VM using parameters read from an OVF manifest\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   #https://pve.proxmox.com/pve-docs/qm.1.html\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"參數說明\"\u003e參數說明：\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026ldquo;vmid:\u0026rdquo; 虛擬機在PVE 中的ID，Proxmox 中初始第一台VM的ID 為100， 這個100就是VMID\u003c/li\u003e\n\u003cli\u003e\u0026ldquo;manifest:\u0026rdquo; ovf格式文件，從VMware Station中導出的虛擬機文件\u003c/li\u003e\n\u003cli\u003e\u0026ldquo;storage:\u0026rdquo; PVE的存儲池， 例如 \u003cstrong\u003e\u0026rsquo;local-lvm\u0026rsquo;\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u0026ldquo;[OPTOPNS]:\u0026rdquo; \u0026mdash;format qcow2 | raw | vmdk Target format\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e詳細請參考： \u003ca href=\"https://pve.proxmox.com/pve-docs/qm.1.html\"\u003ehttps://pve.proxmox.com/pve-docs/qm.1.html\u003c/a\u003e\u003c/p\u003e","tags":["exsi","proxmox","vmware","虚拟化","迁移"],"title":"VMware Station 遷移到 Proxmox PVE 筆記"},{"categories":["today_i_learned"],"content":"故障现象 在登录WordPress 后台时 浏览器显示 “ERR_TOO_MANY_REDIRECTS”\n导致无法正常登录后台\n解决思路和步骤 检查Cloud Flare HTTPS 配置 - - OK 检查WEB 服务器中HTTPS 配置 - - OK 检查Wordpress 数据库中的 siteurl 和 home 值 是否为https 开头 检查WP-Config.php 中 HTTPS = \u0026lsquo;on\u0026rsquo; 的值 结果验证 检查Wordpress 数据库中的 siteurl 和 home 值 是否为https 开头\n这条数据因为之前关掉了https， 导致无法登录到后台去修改默认的url。所以只能进入数据库修改\n检查WP-Config.php 中 HTTPS = \u0026lsquo;on\u0026rsquo; 的值\n原因也是因为为了关闭https，这个值修改成了off ， 重新更改为on 之后，浏览器清除cookie ， 按F5就能正常访问了。\n","permalink":"https://www.dukehsu.com/posts/wordpress_https.html","summary":"\u003ch2 id=\"故障现象\"\u003e故障现象\u003c/h2\u003e\n\u003cp\u003e在登录WordPress 后台时 浏览器显示 “ERR_TOO_MANY_REDIRECTS”\u003cbr\u003e\n导致无法正常登录后台\u003c/p\u003e\n\u003ch2 id=\"解决思路和步骤\"\u003e解决思路和步骤\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e检查Cloud Flare HTTPS 配置 - - OK\u003c/li\u003e\n\u003cli\u003e检查WEB 服务器中HTTPS 配置 - - OK\u003c/li\u003e\n\u003cli\u003e检查Wordpress 数据库中的 siteurl 和 home 值 是否为https 开头\u003c/li\u003e\n\u003cli\u003e检查WP-Config.php 中 HTTPS = \u0026lsquo;on\u0026rsquo; 的值\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"结果验证\"\u003e结果验证\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e检查Wordpress 数据库中的 siteurl 和 home 值 是否为https 开头\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e这条数据因为之前关掉了https， 导致无法登录到后台去修改默认的url。所以只能进入数据库修改\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e检查WP-Config.php 中 HTTPS = \u0026lsquo;on\u0026rsquo; 的值\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e原因也是因为为了关闭https，这个值修改成了off ， 重新更改为on 之后，浏览器清除cookie ， 按F5就能正常访问了。\u003c/p\u003e","tags":["https","web","wordpress","运维"],"title":"Wordpress  ERR_TOO_MANY_REDIRECTS  解决办法"},{"categories":["today_i_learned"],"content":"Linux 真好用 与Windows 相比， Linux 的效率实在太好了。为了避免自己忘记用过的命令，避免手忙脚乱又到处去找，特意写一下笔记。\n最近在忙别的~ 11月好快，就要过完了，所以及时来水一篇。\nVim 配置 以下命令可以对齐VIM编辑器，会高亮输入光标\nsudo echo set nu ts=2 et sw=2 cuc autoindent \u0026gt; ~/.vimrc修改root 密码 sudo passwd root #之后根据提示输入2次密码即可网络配置 #显示网卡 nmcli con show #修改网卡IP地址 nmcli con mod \u0026#34;Wire connection 1\u0026#34; ipv4.method manual ipv4.address 172.25.250.100/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.250 autoconnect yes #禁用和启用网卡 nmcli con down \u0026#34;Wire connection 1\u0026#34; nmcli con up \u0026#34;Wire connection 1\u0026#34; #修改 允许root 访问 ssh sudo echo \u0026#34;PermitRootLogin yes\u0026#34; \u0026gt;\u0026gt; /etc/ssh/sshd_config.d/01-permitrootlogin sudo systemd restart sshd 进程管理 #查找名为qcloud 的进程 ps aux | grep qcloud #根据进程ID 强制杀死进程 kill -9 1588","permalink":"https://www.dukehsu.com/posts/linuxcommand.html","summary":"\u003ch2 id=\"linux-真好用\"\u003eLinux 真好用\u003c/h2\u003e\n\u003cp\u003e与Windows 相比， Linux 的效率实在太好了。为了避免自己忘记用过的命令，避免手忙脚乱又到处去找，特意写一下笔记。\u003cbr\u003e\n最近在忙别的~ 11月好快，就要过完了，所以及时来水一篇。\u003c/p\u003e\n\u003ch2 id=\"vim-配置\"\u003eVim 配置\u003c/h2\u003e\n\u003cp\u003e以下命令可以对齐VIM编辑器，会高亮输入光标\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"nb\"\u003eset\u003c/span\u003e nu \u003cspan class=\"nv\"\u003ets\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e et \u003cspan class=\"nv\"\u003esw\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e cuc autoindent \u0026gt; ~/.vimrc\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"修改root-密码\"\u003e修改root 密码\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo passwd root  \u003cspan class=\"c1\"\u003e#之后根据提示输入2次密码即可\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"网络配置\"\u003e网络配置\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#显示网卡\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enmcli con show  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#修改网卡IP地址\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enmcli con mod \u003cspan class=\"s2\"\u003e\u0026#34;Wire connection 1\u0026#34;\u003c/span\u003e ipv4.method manual ipv4.address 172.25.250.100/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.250 autoconnect yes \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#禁用和启用网卡\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enmcli con down \u003cspan class=\"s2\"\u003e\u0026#34;Wire connection 1\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enmcli con up \u003cspan class=\"s2\"\u003e\u0026#34;Wire connection 1\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#修改 允许root 访问 ssh\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;PermitRootLogin yes\u0026#34;\u003c/span\u003e \u0026gt;\u0026gt; /etc/ssh/sshd_config.d/01-permitrootlogin\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemd restart sshd \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"进程管理\"\u003e进程管理\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e#查找名为qcloud 的进程\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eps aux | grep qcloud\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e#根据进程ID 强制杀死进程\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekill -9 1588\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["linux","linux-command"],"title":"Linux 常用命令笔记"},{"categories":["today_i_learned"],"content":"在本地PC使用遠程PC的軟件 起因是因為在日常工作的時候，有一個需求是要用到遠程計算機中的某一個應用程序。正常的操作是通過RD（remote desktop ）來遠程目的PC，再進行操作。這樣對我來說有點麻煩， 我想直接在我本地的PC直接執行遠程PC的應用程序。\n於是就找到了“RemoteApp Tool” ;\n在這篇文章中，會簡單的介紹“RemoteApp Tool”這個項目，以及它的使用方法和部分配置說明。以及使用後的一些體驗感受；\nRemoteAPP Tool RemoteAPP Tool 是Windows操作系統下的一款基於微軟遠程桌面 Microsoft Remote Desktop (RDP) 協議，可以實現“在本機桌面無縫運行遠程電腦的應用程序”。\n項目地址： https://github.com/kimmknight/remoteapptool 軟件截圖\n使用步驟 先決條件 遠程電腦已經開啟遠程桌面，且用戶有訪問權限 本機可以正常訪問遠程電腦 能夠完美支持的操作系統版本請參加下圖，如果你的操作系統不是受支持的版本，那可能要更換遠程電腦的操作系統了\n服務端操作 運行“RemoteAPP Tool” 安裝程序，執行安裝 在“RemoteAPP Tool”主界面 點擊左下角的綠色“+”按鈕 添加你想要被遠程使用的應用軟件\n在“RemoteAPP Tool” 的主界面選中剛剛添加到應用軟件，再點擊右下角的“Create client Connection” ，然後將rdp 文件拷貝到本機就可以在本機電腦使用遠程電腦的應用軟件了 本機操作 將遠程電腦創建的RDP文件 拷貝到本機直接 運行，輸入用戶名和密碼之後就可以了 當你執行的是遠程電腦的軟件的時候， 任務欄的軟件會顯示一個遠程連接的小的icon\n總結 以上就是基本的使用指南情況\n使用情況\n廣域網遠程的情況下\n這種聊天桌面軟件沒什麼延遲感受，但是瀏覽器看視頻，或者瀏覽器加載內容的時候會感受到延遲。 局域網遠程的情況下\n體驗很好\n可以用Adobe photoshop 沒問題 在這之前，也就是疫情期間，因為維護網吧的緣故，也是想盡一些辦法給在家無法出門的小伙伴們能遠程玩遊戲.\n參考 Windows 10 開啟多人同時遠端桌面連線，最新1903、1909版適用- RDPWrap\nhttps://iqmore.tw/windows-10-rdp-multiple-users-login#www.itiohubwww\nRemoteApp Tool 开源远程神器 - 在本机运行另一台电脑上的软件 (类似PD融合模式)\nhttps://www.iplaysoft.com/remoteapp-tool.html#www.itiohubwww\nhttps://blog.caomingjun.com/use-remoteapp-to-access-apps-in-virtual-machine/\n","permalink":"https://www.dukehsu.com/posts/remoteapp-tool.html","summary":"\u003ch1 id=\"在本地pc使用遠程pc的軟件\"\u003e在本地PC使用遠程PC的軟件\u003c/h1\u003e\n\u003cp\u003e起因是因為在日常工作的時候，有一個需求是要用到遠程計算機中的某一個應用程序。正常的操作是通過RD（remote desktop ）來遠程目的PC，再進行操作。這樣對我來說有點麻煩， 我想直接在我本地的PC直接執行遠程PC的應用程序。\u003cbr\u003e\n於是就找到了“RemoteApp Tool” ;\u003c/p\u003e\n\u003cp\u003e在這篇文章中，會簡單的介紹“RemoteApp Tool”這個項目，以及它的使用方法和部分配置說明。以及使用後的一些體驗感受；\u003c/p\u003e\n\u003ch2 id=\"remoteapp-tool\"\u003eRemoteAPP Tool\u003c/h2\u003e\n\u003cp\u003eRemoteAPP Tool 是Windows操作系統下的一款基於微軟遠程桌面 Microsoft Remote Desktop (RDP) 協議，可以實現“在本機桌面無縫運行遠程電腦的應用程序”。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e項目地址： \u003ca href=\"https://github.com/kimmknight/remoteapptool\"\u003ehttps://github.com/kimmknight/remoteapptool\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e軟件截圖\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/remoteapp-tool/images/70417507.png\"\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"使用步驟\"\u003e使用步驟\u003c/h2\u003e\n\u003ch3 id=\"先決條件\"\u003e先決條件\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e遠程電腦已經開啟遠程桌面，且用戶有訪問權限\u003c/li\u003e\n\u003cli\u003e本機可以正常訪問遠程電腦\u003c/li\u003e\n\u003cli\u003e能夠完美支持的操作系統版本請參加下圖，如果你的操作系統不是受支持的版本，那可能要更換遠程電腦的操作系統了\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/remoteapp-tool/images/2796479004.png\"\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"服務端操作\"\u003e服務端操作\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e運行“RemoteAPP Tool” 安裝程序，執行安裝\u003c/li\u003e\n\u003cli\u003e在“RemoteAPP Tool”主界面 點擊左下角的綠色“+”按鈕 添加你想要被遠程使用的應用軟件\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/remoteapp-tool/images/1858562483.png\"\u003e\u003c/li\u003e\n\u003cli\u003e在“RemoteAPP Tool” 的主界面選中剛剛添加到應用軟件，再點擊右下角的“Create client Connection” ，然後將rdp 文件拷貝到本機就可以在本機電腦使用遠程電腦的應用軟件了\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"本機操作\"\u003e本機操作\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e將遠程電腦創建的RDP文件 拷貝到本機直接 運行，輸入用戶名和密碼之後就可以了\u003c/li\u003e\n\u003cli\u003e當你執行的是遠程電腦的軟件的時候， 任務欄的軟件會顯示一個遠程連接的小的icon\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/remoteapp-tool/images/3609806288.png\"\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"總結\"\u003e總結\u003c/h2\u003e\n\u003cp\u003e以上就是基本的使用指南情況\u003cbr\u003e\n使用情況\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e廣域網遠程的情況下\u003cbr\u003e\n這種聊天桌面軟件沒什麼延遲感受，但是瀏覽器看視頻，或者瀏覽器加載內容的時候會感受到延遲。\u003c/li\u003e\n\u003cli\u003e局域網遠程的情況下\u003cbr\u003e\n體驗很好\u003cbr\u003e\n可以用Adobe photoshop 沒問題\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e在這之前，也就是疫情期間，因為維護網吧的緣故，也是想盡一些辦法給在家無法出門的小伙伴們能遠程玩遊戲.\u003c/p\u003e\n\u003ch2 id=\"參考\"\u003e參考\u003c/h2\u003e\n\u003cp\u003eWindows 10 開啟多人同時遠端桌面連線，最新1903、1909版適用- RDPWrap\u003cbr\u003e\n\u003ca href=\"https://iqmore.tw/windows-10-rdp-multiple-users-login#www.itiohubwww\"\u003ehttps://iqmore.tw/windows-10-rdp-multiple-users-login#www.itiohubwww\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRemoteApp Tool 开源远程神器 - 在本机运行另一台电脑上的软件 (类似PD融合模式)\u003cbr\u003e\n\u003ca href=\"https://www.iplaysoft.com/remoteapp-tool.html#www.itiohubwww\"\u003ehttps://www.iplaysoft.com/remoteapp-tool.html#www.itiohubwww\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://blog.caomingjun.com/use-remoteapp-to-access-apps-in-virtual-machine/\"\u003ehttps://blog.caomingjun.com/use-remoteapp-to-access-apps-in-virtual-machine/\u003c/a\u003e\u003c/p\u003e","tags":["remoteapp","remoteapp-tool","newsletter"],"title":"在本地PC使用遠程PC的軟件"},{"categories":["today_i_learned"],"content":"Deep Live cam 笔记 项目地址： https://github.com/hacksider/Deep-Live-Cam\n在本篇笔记中不会涉及cuda,Python,Conda,Git,等相关的计算机知识。只有步骤记录和在使用部署时遇到的问题记录。\n以下操作都是在Windows操作系统下进行的，我的系统版本号为：\nMicrosoft Windows 11 Pro\n10.0.22631 Build 22631\n先决条件 带有Nvidia 显卡的桌面电脑或者笔记本电脑\n稳定的网络环境\nDeepLiveCam所需的软件或编译工具\nPython 3.10.0 CUDA cuDNN Git ffmpeg Conda-Py 3.10 Microsoft C++ Build Tools DeepLiveCam项目本体\n模型下载\nGFPGANv1.4 inswapper_128_fp16.onnx 环境安装 Python 3.10.0 下载地址： https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe\n像正常安装应用软件那样安装即可，记得勾选添加到系统变量\nCUDA 下载地址： https://developer.nvidia.com/cuda-toolkit-archive\n安装完成之后在命令行运行 nvidia-smi 检查显卡支持的最大CUDA 版本\nnvidia-smi\ncuDNN 需要下载CUDA支持的版本\n下载地址： http://developer.nvidia.com/rdp/cudnn-archive\n安装完成之后在命令行运行 nvcc -V cuDNN的版本号\n如果提示命令不存在，请检查系统的环境变量和用户变量\nnvcc -V\nGit 下载地址： https://git-scm.com/downloads\n安装完成之后在命令行运行 git --version 检查Git的版本号\ngit --version如果提示命令不存在，请检查系统的环境变量和用户变量\nConda 下载地址： https://docs.anaconda.com/miniconda/\n选择Miniconda3-py310_24.7.1-0-Windows-x86_64.exe\n安装完成之后在命令行运行 conda --version 检查conda的版本号\nconda --version\n注意： 若提示命令不存在，请检查环境变量和用户变量\n路径如下： C:\\ProgramData\\miniconda3\\Scripts\nffmpeg 下载地址： https://www.ffmpeg.org/download.html\n安装完成之后在命令行运行 ffmpeg --version 检查conda的版本号\nffmpeg -version\n注意： 若提示命令不存在，请检查环境变量和用户变量\n路径为：yourpath\\ffmpeg-6.1.1-essentials_build\\bin\nMicrosoft C++ Build Tools 下载地址： https://visualstudio.microsoft.com/visual-cpp-build-tools/\n在安裝過程中，確保選擇了 \u0026ldquo;C++ build tools\u0026rdquo; 和 \u0026ldquo;Windows 10 SDK\u0026rdquo;（或相應的版本）\n修改Windows PowerShell 的执行策略 查看当前执行策略\nGet-ExecutionPolicy -List 设置执行策略：\n可以将执行策略设置为 Unrestricted 或 RemoteSigned。Unrestricted 允许所有脚本运行，而 RemoteSigned 仅要求从互联网下载的脚本必须经过签名。\n设置为 Unrestricted：\nSet-ExecutionPolicy Unrestricted -Scope LocalMachine 或者设置为 RemoteSigned：\nSet-ExecutionPolicy RemoteSigned -Scope LocalMachine 确认更改：\n在提示时输入 Y 确认更改。\n验证执行策略：\n再次运行以下命令以确认执行策略已更改：\nGet-ExecutionPolicy -List 项目部署 管理员运行PowerShell 在命令行你想要指定的位置创建一个英文目录\ncd到你创建的目录下进行项目克隆\n注意： 整个环境都不应该有中文目录或名称\n克隆项目\ngit clone https://github.com/hacksider/Deep-Live-Cam.git CD 到 项目目录\ncd /yourpath/Deep-Live-Cam 使用conda创建名为DeepLiveCam的 env\n#初始化conda 环境 conda init #创建DeepLiveCam的 env conda create -n deeplivecam python=3.10.0 #查看env 列表 conda env list #根据提示按Y #等待创建完成之后激活env conda activate deeplivecam #激活之后，命令行前会显示(deeplivecam) 安装DeepLiveCam项目 的requriements.txt\n确认在项目目录内 yourpath/deeplivecam 执行以下命令\n#安装环境包 （需要完全稳定的互联网） pip install -r requirements.txt #等待安装完成之后 重新安装一下以下软件包 pip uninstall onnxruntime onnxruntime-gpu #指定安装onnxruntime-gpu版本 pip install onnxruntime-gpu==1.16.3 拷贝模型文件\n如果以上步骤和命令都已经完成安装且没有任何报错，将之前下载好的模型文件拷贝到项目的models 目录下, 文件树如下\nDirectory: D:\\Deep-Live-Cam\\models Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 9/2/2024 9:09 AM 348632874 GFPGANv1.4.pth -a---- 9/2/2024 10:27 PM 34 instructions.txt -a---- 9/2/2024 9:11 AM 277288649 inswapper_128_fp16.onnx 启动DeepLiveCam 项目 管理员运行Windows Power Shell 在 Windows Power Shell 中执行以下命令\n#进入DeepLiveCam项目目录 cd D:\\Deep-Live-Cam\\ #根据自己的实际路径操作 conda activate deeplivecam # 激活deeplivecam 的env python run.py --execution-provider cuda #运行deeplivecam 项目最终，在项目界面中选择一张照片进行Live验证 效果了\n注意： 功能选项中的其它功能第一次运行时需要下载其他资源，请注意检查网络的稳定性\n","permalink":"https://www.dukehsu.com/posts/deeplivecaminstallnote.html","summary":"\u003ch1 id=\"deep-live-cam-笔记\"\u003eDeep Live cam 笔记\u003c/h1\u003e\n\u003cp\u003e项目地址： \u003ca href=\"https://github.com/hacksider/Deep-Live-Cam\"\u003ehttps://github.com/hacksider/Deep-Live-Cam\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在本篇笔记中不会涉及cuda,Python,Conda,Git,等相关的计算机知识。只有步骤记录和在使用部署时遇到的问题记录。\u003c/p\u003e\n\u003cp\u003e以下操作都是在Windows操作系统下进行的，我的系统版本号为：\u003c/p\u003e\n\u003cp\u003eMicrosoft Windows 11 Pro\u003cbr\u003e\n10.0.22631 Build 22631\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240906221442070.png\" loading=\"lazy\" src=\"/posts/deeplivecaminstallnote/images/3366180621.png\" title=\"image-20240906221442070.png\"\u003e\u003c/p\u003e\n\u003ch2 id=\"先决条件\"\u003e先决条件\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e带有Nvidia 显卡的桌面电脑或者笔记本电脑\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e稳定的网络环境\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeepLiveCam所需的软件或编译工具\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.10.0\u003c/li\u003e\n\u003cli\u003eCUDA\u003c/li\u003e\n\u003cli\u003ecuDNN\u003c/li\u003e\n\u003cli\u003eGit\u003c/li\u003e\n\u003cli\u003effmpeg\u003c/li\u003e\n\u003cli\u003eConda-Py 3.10\u003c/li\u003e\n\u003cli\u003eMicrosoft C++ Build Tools\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeepLiveCam项目本体\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e模型下载\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://huggingface.co/hacksider/deep-live-cam/resolve/main/GFPGANv1.4.pth\"\u003eGFPGANv1.4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://huggingface.co/hacksider/deep-live-cam/resolve/main/inswapper_128_fp16.onnx\"\u003einswapper_128_fp16.onnx\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"环境安装\"\u003e环境安装\u003c/h2\u003e\n\u003ch3 id=\"python-3100\"\u003ePython 3.10.0\u003c/h3\u003e\n\u003cp\u003e下载地址： \u003ca href=\"https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe\"\u003ehttps://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e像正常安装应用软件那样安装即可，记得勾选添加到系统变量\u003c/p\u003e\n\u003ch3 id=\"cuda\"\u003eCUDA\u003c/h3\u003e\n\u003cp\u003e下载地址： \u003ca href=\"https://developer.nvidia.com/cuda-toolkit-archive\"\u003ehttps://developer.nvidia.com/cuda-toolkit-archive\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e安装完成之后在命令行运行 \u003ccode\u003envidia-smi\u003c/code\u003e 检查显卡支持的最大CUDA 版本\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003envidia-smi\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"image-20240906212930253.png\" loading=\"lazy\" src=\"/posts/deeplivecaminstallnote/images/1102144062.png\" title=\"image-20240906212930253.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"cudnn\"\u003ecuDNN\u003c/h3\u003e\n\u003cp\u003e需要下载CUDA支持的版本\u003c/p\u003e\n\u003cp\u003e下载地址： \u003ca href=\"http://developer.nvidia.com/rdp/cudnn-archive\"\u003ehttp://developer.nvidia.com/rdp/cudnn-archive\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e安装完成之后在命令行运行 \u003ccode\u003envcc -V\u003c/code\u003e cuDNN的版本号\u003c/p\u003e\n\u003cp\u003e如果提示命令不存在，请检查系统的环境变量和用户变量\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003envcc -V\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"image-20240906213133117.png\" loading=\"lazy\" src=\"/posts/deeplivecaminstallnote/images/451047190.png\" title=\"image-20240906213133117.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"git\"\u003eGit\u003c/h3\u003e\n\u003cp\u003e下载地址： \u003ca href=\"https://git-scm.com/downloads\"\u003ehttps://git-scm.com/downloads\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e安装完成之后在命令行运行 \u003ccode\u003egit --version\u003c/code\u003e 检查Git的版本号\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit --version\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e如果提示命令不存在，请检查系统的环境变量和用户变量\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240906213419363.png\" loading=\"lazy\" src=\"/posts/deeplivecaminstallnote/images/1811688303.png\" title=\"image-20240906213419363.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"conda\"\u003eConda\u003c/h3\u003e\n\u003cp\u003e下载地址： \u003ca href=\"https://docs.anaconda.com/miniconda/\"\u003ehttps://docs.anaconda.com/miniconda/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e选择\u003ccode\u003eMiniconda3-py310_24.7.1-0-Windows-x86_64.exe\u003c/code\u003e\u003c/p\u003e","tags":["ai","ai换脸","conda","deepfake","deeplivecam","python"],"title":"Deep Live cam 笔记"},{"categories":["today_i_learned"],"content":"Markdown 语法知识 Markdown 标题 使用# 的数量来标识标题的等级\n/# 一级标题\n/## 二级标题\n以此类推\nMarkdown 段落 段落没有特殊的格式，一般直接回车就是一个段落。但是你可以在句子末尾后面留2格空格即可\n是的吧\nMarkdown 分割线 *** * * * ***** - - - -------------------- 以上符号都可以作为分割线使用，但是分割线中不可有任何内容\nMarkdown 删除线 使用波浪线括住内容，即可实现删除线的样式。\n格式\nitiohub.com GOOGLE.COM ~~BAIDU.COM~~效果\nITIOHUB.COM\nGOOGLE.COM ~~BAIDU.COM~~Markdown 下划线 使用 HTML \u0026lt;u\u0026gt; 标签实现\n格式\n\u0026lt;u\u0026gt; 看我有下划线般的滑板鞋哦\u0026lt;/u\u0026gt;\n效果\n看我有下划线般的滑板鞋哦\nMarkdown 脚注 脚注可以用来对文章内容做补充说明，相当于word的引用，鼠标移动到你要做脚注的词汇中，就会显示。或者写refrence 时可以用到， 格式如下\n格式\n[^我是可爱的脚注~]\n又一个效果示例：\n究竟什么是真理呢？ [^真理] [^真理]:真理是指与事实相符合的观点、陈述或信念。在哲学和认知科学中，真理通常被定义为与现实相一致的陈述或信念。真理是客观存在的，不受主观看法或情感影响，它是独立于个人观点的普遍准则。人们通过逻辑推理、科学方法和经验观察来寻求真理，以便更好地理解世界和解决问题。然而，有时真理可能是主观的，因为不同的人可能有不同的看法和信念。在哲学上，对真理的探讨是一个复杂而深刻的议题，各种学派和思想家对真理的本质和性质有着不同的见解。究竟什么是真理呢？ 1\n(图片待补全)\nMarkdown 列表 有序列表 意思就是有序号的，例如，1，2，3，4，这样的呀~ 记得在序号后面加一个. 并在. 后面留一个空格哟\n格式\n1. 我是可爱的第一项 2. 我第二项，但是我也很可爱 3. 呵呵，第三项表示白眼🙄效果\n我是可爱的第一项 我第二项，但是我也很可爱 呵呵，第三项表示白眼🙄 无序列表 无序列表没有序号，只有符号表示。无序列表使用星号 (*)、加号 (+) 或是减号 (-)`作为列表标记，这些标记后面要添加一个空格，然后再填写内容， 跳到下一个列表的时候直接回车即可哦~\n格式\n* 无序列表一 * 无序列表一 * 无序列表一 + 无序列表一 + 无序列表一 + 无序列表一 - 无序列表一 - 无序列表一 - 无序列表一以上格式我比较喜欢用-\n效果\n无序列表一类型 无序列表一类型 无序列表一类型 无序列表二类型 无序列表二类型 无序列表二类型 无序列表三类型 无序列表三类型 无序列表三类型 列表嵌套 列表嵌套需要在子列表中的选项前添加 2个或者 4个空格。\n格式\n1. 今天要做的事情： - 吃饭 - 睡觉 - 打豆豆 2. 明天要做的事情： - Book 《The Diary of a Young Girl》 - Python coding practice - Library效果\n今天要做的事情：\n吃饭\n睡觉\n打豆豆\n明天要做的事情： Book 《The Diary of a Young Girl》 Python coding practice Library Markdown 区块 引用名言 当我们要引用鲁迅大哥的句子的时候，我们就要用到区块（引用功能）了。 它是用\u0026gt; 来实现的，就在键盘M 的右边。记得要在\u0026gt; 符号后 留一个空格哦~\n格式\n\u0026gt; “面具戴太久，就会长到脸上，再想揭下来，除非伤筋动骨扒皮。” - 周树人效果\n“面具戴太久，就会长到脸上，再想揭下来，除非伤筋动骨扒皮。” - 周树人\n多层级区块 多层级区块就是区块里面还有一个区块， 用多个\u0026gt;\u0026gt; 实现， 格式如下\n格式\n\u0026gt; “墨写的谎说，决掩不住血写的事实。” - 周树人 （最外层 比如外套 😄） \u0026gt;\u0026gt; “猛兽总是独行，牛羊才成群结队。” - 周树人 （第一层嵌套 比如毛衣 🤭） \u0026gt;\u0026gt;\u0026gt; “人类的悲欢并不相通，我只觉得他们吵闹。” 周树人 (最里层 比如内裤 😄)效果\n“墨写的谎说，决掩不住血写的事实。” - 周树人 （最外层 比如外套 😄）\n“猛兽总是独行，牛羊才成群结队。” - 周树人 （第一层嵌套 比如毛衣 🤭）\n“人类的悲欢并不相通，我只觉得他们吵闹。” 周树人 (最里层嵌套 比如内裤 😄)\n同样，区块中可以插入列表，列表中也可以插入区块。\n试试看，要怎么操作呢？\n格式\n1. 周吓唬人说的话 \u0026gt; “墨写的谎说，决掩不住血写的事实。” - 周树人 \u0026gt; “人类的悲欢并不相通，我只觉得他们吵闹。” - 周树人 2. 装逼王最可爱 \u0026gt; 年轻人仍然所见极有限，又迷失在太多讯息中，讯息不等于眼界。-陈丹青 \u0026gt; 鲁迅是一个早已被简化的脸谱。鲁迅很早就说过，你要灭一个人，一是骂杀，一是捧杀。大家现在看见了，过去半世纪，胡适被骂杀，鲁迅被捧杀。 -陈丹青效果\n周吓唬人说的话\n墨写的谎说，决掩不住血写的事实。 - 周树人\n人类的悲欢并不相通，我只觉得他们吵闹。 - 周树人\n装逼王最可爱\n年轻人仍然所见极有限，又迷失在太多讯息中，讯息不等于眼界。-陈丹青\n鲁迅是一个早已被简化的脸谱。鲁迅很早就说过，你要灭一个人，一是骂杀，一是捧杀。大家现在看见了，过去半世纪，胡适被骂杀，鲁迅被捧杀。 -陈丹青\n那区块里面藏一个无序列表呢？\n\u0026gt; 老有人来问我，你是怎么成功的？妈的我没想到成功。我画画，因为我喜欢。我不记得小时候有过“成功”的说法。成功观害死人。 - 陈丹青 \u0026gt;\u0026gt; 1. 我他妈没说过这个 \u0026gt;\u0026gt; 2. 还有王法吗？效果\n老有人来问我，你是怎么成功的？妈的我没想到成功。我画画，因为我喜欢。我不记得小时候有过“成功”的说法。成功观害死人。 - 陈丹青\n我他妈没说过这个 还有王法吗？ Markdown 代码块 单行代码块 Markdown插入代码块很爽~！ 😍 只要输入2个反引号 将代码块包含在里面就可以实现了哦~ 例如（``）\n格式\n`print(\u0026#34;i love my life\u0026#34;)`效果\nprint(\u0026quot;i love my life\u0026quot;)\n多行代码块 多行代码块可以使用 在编辑器中连续按3个反引号 ，再按一下回车键就可以进去多行代码块了\n格式\n效果import cv2\nimport numpy as np\n使用VideoCapture捕获实时视频流 cap = cv2.VideoCapture(0) # 0表示第一个摄像头，如果有多个摄像头，可以尝试不同的索引\nwhile True:\nret, frame = cap.read() # 读取视频流的帧 # 将帧转换为灰度图像 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 使用Canny边缘检测算法 edges = cv2.Canny(gray, 50, 150) # 使用霍夫变换检测圆形物体（鸡蛋） circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, dp=1, minDist=30, param1=70, param2=30, minRadius=118, maxRadius=196) # 统计检测到的鸡蛋数量 if circles is not None: num_eggs = len(circles[0]) print(\u0026#34;Number of eggs: \u0026#34;, num_eggs) else: print(\u0026#34;No eggs detected.\u0026#34;) # 在帧中绘制检测到的鸡蛋 if circles is not None: circles = np.uint16(np.around(circles)) for i in circles[0, :]: center = (i[0], i[1]) radius = i[2] cv2.circle(frame, center, radius, (0, 255, 0), 2) # 显示结果帧 cv2.imshow(\u0026#39;Egg Counting\u0026#39;, frame) if cv2.waitKey(1) \u0026amp; 0xFF == ord(\u0026#39;q\u0026#39;): # 按下\u0026#39;q\u0026#39;键退出循环 break释放摄像头并关闭所有窗口 cap.release()\ncv2.destroyAllWindows()\n--- ## Markdown 超链接 超链接就是一个URL ，在这个URL上有设定一些内容。 真理是指与事实相符合的观点、陈述或信念。在哲学和认知科学中，真理通常被定义为与现实相一致的陈述或信念。真理是客观存在的，不受主观看法或情感影响，它是独立于个人观点的普遍准则。人们通过逻辑推理、科学方法和经验观察来寻求真理，以便更好地理解世界和解决问题。然而，有时真理可能是主观的，因为不同的人可能有不同的看法和信念。在哲学上，对真理的探讨是一个复杂而深刻的议题，各种学派和思想家对真理的本质和性质有着不同的见解。 ↩ ","permalink":"https://www.dukehsu.com/posts/markdown.html","summary":"\u003ch1 id=\"markdown-语法知识\"\u003eMarkdown 语法知识\u003c/h1\u003e\n\u003chr\u003e\n\u003ch2 id=\"markdown-标题\"\u003eMarkdown 标题\u003c/h2\u003e\n\u003cp\u003e使用# 的数量来标识标题的等级\u003c/p\u003e\n\u003cp\u003e/# 一级标题\u003c/p\u003e\n\u003cp\u003e/## 二级标题\u003c/p\u003e\n\u003cp\u003e以此类推\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"markdown-段落\"\u003eMarkdown 段落\u003c/h2\u003e\n\u003cp\u003e段落没有特殊的格式，一般直接回车就是一个段落。但是你可以在句子末尾后面留2格空格即可\u003cbr\u003e\n是的吧\u003c/p\u003e\n\u003ch2 id=\"markdown-分割线\"\u003eMarkdown 分割线\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e***\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e* * *\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e*****\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e- - - \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e--------------------\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003cp\u003e以上符号都可以作为分割线使用，但是分割线中不可有任何内容\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"markdown-删除线\"\u003eMarkdown 删除线\u003c/h2\u003e\n\u003cp\u003e使用波浪线括住内容，即可实现删除线的样式。\u003c/p\u003e\n\u003cp\u003e格式\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eitiohub.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eGOOGLE.COM\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e~~BAIDU.COM~~\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e效果\u003c/p\u003e\n\u003cp\u003eITIOHUB.COM\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   GOOGLE.COM   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   ~~BAIDU.COM~~\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"markdown-下划线\"\u003eMarkdown 下划线\u003c/h2\u003e\n\u003cp\u003e使用 HTML \u003ccode\u003e\u0026lt;u\u0026gt;\u003c/code\u003e 标签实现\u003c/p\u003e\n\u003cp\u003e格式\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e\u0026lt;u\u0026gt; 看我有下划线般的滑板鞋哦\u0026lt;/u\u0026gt;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e效果\u003c/p\u003e\n\u003cp\u003e看我有下划线般的滑板鞋哦\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"markdown-脚注\"\u003eMarkdown 脚注\u003c/h2\u003e\n\u003cp\u003e脚注可以用来对文章内容做补充说明，相当于word的引用，鼠标移动到你要做脚注的词汇中，就会显示。或者写refrence 时可以用到， 格式如下\u003c/p\u003e\n\u003cp\u003e格式\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e[^我是可爱的脚注~]\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e又一个效果示例：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e究竟什么是真理呢？ [^真理]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e[^真理]:真理是指与事实相符合的观点、陈述或信念。在哲学和认知科学中，真理通常被定义为与现实相一致的陈述或信念。真理是客观存在的，不受主观看法或情感影响，它是独立于个人观点的普遍准则。人们通过逻辑推理、科学方法和经验观察来寻求真理，以便更好地理解世界和解决问题。然而，有时真理可能是主观的，因为不同的人可能有不同的看法和信念。在哲学上，对真理的探讨是一个复杂而深刻的议题，各种学派和思想家对真理的本质和性质有着不同的见解。\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e究竟什么是真理呢？ \u003ca href=\"/posts/markdown.html#fn-1\"\u003e1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"./image-20240717153614897\" loading=\"lazy\" src=\"images/image-20240717153614897.png\" title=\"./image-20240717153614897\"\u003e (图片待补全)\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"markdown-列表\"\u003eMarkdown 列表\u003c/h2\u003e\n\u003ch4 id=\"有序列表\"\u003e有序列表\u003c/h4\u003e\n\u003cp\u003e意思就是有序号的，例如，1，2，3，4，这样的呀~ 记得在序号后面加一个\u003ccode\u003e.\u003c/code\u003e 并在\u003ccode\u003e.\u003c/code\u003e 后面留一个空格哟\u003c/p\u003e\n\u003cp\u003e格式\u003c/p\u003e","tags":["markdown","写作"],"title":"Markdown 语法知识"},{"categories":["today_i_learned"],"content":"离线安装MicroSoft APP Store 中的应用 先决条件 操作系统版本在Windows10 或者以上 能正常访问互联网 PowerShell 步骤概要 在MircroSoft APP Store 获取应用APP 连接 下载APP应用 在PowerShell中添加应用 操作步骤 打开Microsoft Store 页面搜索你想要下载的APP\nhttps://apps.microsoft.com/home?hl=en-us\u0026amp;gl=US\n例如Spotify：\n将地址栏复制 去除？ 后面的内容\n粘贴到 https://store.rg-adguard.net/ 网址的搜索栏中 点击搜索\n右侧选择框中的四个选项分别代表：\nFast：Windows Insider Fast 通道，属于最新开发版； Slow：Windows Insider Slow 通道，相对 Fast 较稳定； RP：Release Review 也是微软软件发布的一个通道，软件成熟度较高，待 RP 过后，就会正式发布。 Retail：指正式发布的包，也是系统默认的等级。 点击appx格式的即可下载\n文件拓展名为 .eappx、.appxbundle、.emsix、.emsixbundle 的均为加密安装包，如果没有购买许可是无法直接安装的（比如付费应用或游戏）\n在PowerShell中安装APP\n在Powershell中输入命令\n# 使用命令 Add-AppxPackage -Path [文件路径]，比如 Add-AppxPackage -Path \u0026#34;C:\\Tools\\SpotifyAB.SpotifyMusic_1.192.647.0_x86__zpdnekdrzrea0.Appx\u0026#34;\n接着 你就可以在开始菜单栏中看到你刚刚安装的应用了\n参考：\nhttps://blog.dejavu.moe/posts/install-uwp-offline/\nhttps://eblog.ink/archives/343/\nhttps://www.cnblogs.com/jruing/p/17340431.html\n","permalink":"https://www.dukehsu.com/posts/msappstore.html","summary":"\u003ch1 id=\"离线安装microsoft-app-store-中的应用\"\u003e离线安装MicroSoft APP Store 中的应用\u003c/h1\u003e\n\u003ch2 id=\"先决条件\"\u003e先决条件\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e操作系统版本在Windows10 或者以上\u003c/li\u003e\n\u003cli\u003e能正常访问互联网\u003c/li\u003e\n\u003cli\u003ePowerShell\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"步骤概要\"\u003e步骤概要\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e在MircroSoft APP Store 获取应用APP 连接\u003c/li\u003e\n\u003cli\u003e下载APP应用\u003c/li\u003e\n\u003cli\u003e在PowerShell中添加应用\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"操作步骤\"\u003e操作步骤\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e打开Microsoft Store 页面搜索你想要下载的APP\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://apps.microsoft.com/home?hl=en-us\u0026amp;gl=US\"\u003ehttps://apps.microsoft.com/home?hl=en-us\u0026amp;gl=US\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e例如Spotify：\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240731180051342.png\" loading=\"lazy\" src=\"/posts/msappstore/images/2820793894.png\" title=\"image-20240731180051342.png\"\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e将地址栏复制 去除？ 后面的内容\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e\n\u003cp\u003e粘贴到 \u003ca href=\"https://store.rg-adguard.net/\"\u003ehttps://store.rg-adguard.net/\u003c/a\u003e 网址的搜索栏中 点击搜索\u003c/p\u003e\n\u003cp\u003e右侧选择框中的四个选项分别代表：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eFast：Windows Insider Fast 通道，属于最新开发版；\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eSlow：Windows Insider Slow 通道，相对 Fast 较稳定；\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e RP：Release Review 也是微软软件发布的一个通道，软件成熟度较高，待 RP 过后，就会正式发布。\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eRetail：指正式发布的包，也是系统默认的等级。\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240731180208628.png\" loading=\"lazy\" src=\"/posts/msappstore/images/3143933977.png\" title=\"image-20240731180208628.png\"\u003e\u003c/p\u003e\n\u003cp\u003e点击appx格式的即可下载\u003c/p\u003e\n\u003cp\u003e文件拓展名为 \u003ccode\u003e.eappx\u003c/code\u003e、\u003ccode\u003e.appxbundle\u003c/code\u003e、\u003ccode\u003e.emsix\u003c/code\u003e、\u003ccode\u003e.emsixbundle\u003c/code\u003e 的均为加密安装包，如果没有购买许可是无法直接安装的（比如付费应用或游戏）\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e\n\u003cp\u003e在PowerShell中安装APP\u003c/p\u003e\n\u003cp\u003e在Powershell中输入命令\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e# 使用命令 Add-AppxPackage -Path [文件路径]，比如\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eAdd-AppxPackage -Path \u0026#34;C:\\Tools\\SpotifyAB.SpotifyMusic_1.192.647.0_x86__zpdnekdrzrea0.Appx\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"image-20240731180614918.png\" loading=\"lazy\" src=\"/posts/msappstore/images/1134076033.png\" title=\"image-20240731180614918.png\"\u003e\u003c/p\u003e\n\u003cp\u003e接着 你就可以在开始菜单栏中看到你刚刚安装的应用了\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240731180823501.png\" loading=\"lazy\" src=\"/posts/msappstore/images/1368708800.png\" title=\"image-20240731180823501.png\"\u003e\u003c/p\u003e\n\u003cp\u003e参考：\u003c/p\u003e","tags":["app-store","microsoft","microsoft-app-store","offline"],"title":"离线安装MicroSoft APP Store  中的应用"},{"categories":["today_i_learned"],"content":"Setting Up SMB Service on Ubuntu 18.04 Table of Contents Install SMB and enable the SMB server and restart it.\nAdd an SMB user.\nEdit the SMB configuration file.\nPermission configuration:\nRead (R) Read/Write (RW) Firewall configuration.\nVisit the SMB server on your local network.\nInstall SMB server sudo apt update sudo apt install samba sudo systemctl enable smbd sudo systemctl restart smbdAdd an SMB user sudo smbpasswd -a usernameEdit the SMB configuration file sudo vim /etc/samb/smb.conf[WiKiFolder_for_Client] comment = Shared Folder path = /home/username/wiki browseable = yes valid users = @username[WiKiFolder_for_Client]: The name of the shared folder being defined.\ncomment = Shared Folder: Description of the shared folder.\npath = /home/username/wiki: Specifies the path of the shared folder.\nbrowseable = yes: Allows the shared folder to be visible on the network.\nvalid users = @username: Specifies that only users belonging to the username group can access the shared folder.\n[WiKiFolder_for_Client] comment = Shared Folder path = /home/ccdcam/wiki browseable = yes valid users = ccdcam writable = yesvalid users = username: Specifies that only users belonging to the username group can access the shared folder.\nwritable = yes: Allows users to write to the shared folder.\nFirewall configuration Allowed th 445/tcp\nsudo ufw allow 444/tcp\nAccessing the SMB Share on your local network For Windows:\nEnter \\\\\u0026lt;serverIPaddress\u0026gt; in the file explorer\u0026rsquo;s address bar, then proceed to log in.\nViewing the SMB User List Using the pdbedit Command:\nTo list the users in Samba, enter the following command in the terminal:\nsudo pdbedit -L -vThis will display detailed information about Samba users, including usernames, UID, GID, home directories, and more.\nUsing the getent Command:\nYou can also list Samba users using the getent command. Enter the following command:\ngetent passwd | grep \u0026#39;/bin/false\u0026#39;This will display the usernames of Samba users and other relevant information.\nDeleting an SMB User To delete a user in Samba, you can use the pdbedit command. Here are the steps to delete an SMB user:\nsudo pdbedit -x usernameYou will be prompted to confirm the deletion. Enter y to confirm.\nAfter the deletion is complete, restart the Samba service to apply the changes:\nsudo systemctl restart smbd","permalink":"https://www.dukehsu.com/posts/ubuntu_smb.html","summary":"\u003ch1 id=\"setting-up-smb-service-on-ubuntu-1804\"\u003eSetting Up SMB Service on Ubuntu 18.04\u003c/h1\u003e\n\u003ch2 id=\"table-of-contents\"\u003eTable of Contents\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eInstall SMB and enable the SMB server and restart it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an SMB user.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEdit the SMB configuration file.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePermission configuration:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRead (R)\u003c/li\u003e\n\u003cli\u003eRead/Write (RW)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFirewall configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVisit the SMB server on your local network.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"install-smb-server\"\u003eInstall SMB server\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt update\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt install samba\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemctl \u003cspan class=\"nb\"\u003eenable\u003c/span\u003e smbd\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemctl restart smbd\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"add-an-smb-user\"\u003eAdd an SMB user\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo smbpasswd -a username\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"edit-the-smb-configuration-file\"\u003eEdit the SMB configuration file\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo vim /etc/samb/smb.conf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003eWiKiFolder_for_Client\u003cspan class=\"o\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003ecomment\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e Shared Folder\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003epath\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e /home/username/wiki\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003ebrowseable\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e yes\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evalid \u003cspan class=\"nv\"\u003eusers\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e @username\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ccode\u003e[WiKiFolder_for_Client]\u003c/code\u003e: The name of the shared folder being defined.\u003c/p\u003e","tags":["linux","smb","windows共享","共享服务"],"title":"Setting Up SMB Service on Ubuntu 18.04"},{"categories":["today_i_learned"],"content":"Flash OpenIPC firmware onto SigmaStar SSC335 SoC and Sony IMX307 IPC module. Requirements IPC module USB to TTL cable Windows laptop or computer Running a TFTP server on your Windows computer Results IPC module specifications Flash:\nGD25Q64CSIG:\nhttps://www.digikey.cn/zh/products/detail/gigadevice-semiconductor-hk-limited/GD25Q64CSIG/9484942\nSoc:\nSigmaStar SSC335\nhttps://linux-chenxing.org/infinity6/ssc335_pb_v03.pdf\nSensor:\n1/2.8\u0026quot; 2MP CMOS Sony IMX307\nLAN Windows computer TFTP SERVER directory structure The \u0026ldquo;bin\u0026rdquo; directory serves as the current directory for the TFTP server, used to store firmware files. Disable the firewall on the Windows computer and run tftp64.exe. Step 1: Welding the UART interface. Here is the TTL connection.\nStep 2: Connect the IPC module to your Windows computer using a USB to TTL cable. Connect the IPC module to your computer using a USB to TTL cable. Open PuTTY. Configure the serial port information. Restart the IPC module. In the PuTTY window, continuously press the \u0026ldquo;Enter\u0026rdquo; key on the keyboard. Step 3: Enter the following command in the PuTTY window # Enter commands line by line! Do not copy and paste multiple lines at once! setenv ipaddr 192.168.8.200; setenv serverip 192.168.8.250 mw.b 0x21000000 0xff 0x800000 tftpboot 0x21000000 openipc-ssc335-lite-8mb.bin #如果上面的命令执行不成功，请执行下面的。sf lock 0； 会提示失败， 不过没关系，继续下面的 # if there is no tftpboot but tftp then run this instead tftp 0x21000000 openipc-ssc335-lite-8mb.bin sf probe 0; sf lock 0; sf erase 0x0 0x800000; sf write 0x21000000 0x0 0x800000 resetNote If you cannot input in serial port mode, please close the serial port first. Before re-entering, turn off flow control. ","permalink":"https://www.dukehsu.com/posts/openipc_ssc335.html","summary":"\u003ch2 id=\"flash-openipc-firmware-onto-sigmastar-ssc335-soc-and-sony-imx307-ipc-module\"\u003eFlash OpenIPC firmware onto SigmaStar SSC335 SoC and Sony IMX307 IPC module.\u003c/h2\u003e\n\u003ch3 id=\"requirements\"\u003eRequirements\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003eIPC module\u003c/li\u003e\n\u003cli\u003eUSB to TTL cable\u003c/li\u003e\n\u003cli\u003eWindows laptop or computer\u003c/li\u003e\n\u003cli\u003eRunning a TFTP server on your Windows computer\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"results\"\u003eResults\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240712185451240.png\" loading=\"lazy\" src=\"/posts/openipc_ssc335/images/2158464686.png\" title=\"image-20240712185451240.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240712190215930.png\" loading=\"lazy\" src=\"/posts/openipc_ssc335/images/319271948.png\" title=\"image-20240712190215930.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240712190239974.png\" loading=\"lazy\" src=\"/posts/openipc_ssc335/images/3131038306.png\" title=\"image-20240712190239974.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"image-20240712190443909.png\" loading=\"lazy\" src=\"/posts/openipc_ssc335/images/1791547843.png\" title=\"image-20240712190443909.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"ipc-module-specifications\"\u003eIPC module specifications\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFlash:\u003cbr\u003e\nGD25Q64CSIG:\u003cbr\u003e\n\u003ca href=\"https://www.digikey.cn/zh/products/detail/gigadevice-semiconductor-hk-limited/GD25Q64CSIG/9484942\"\u003ehttps://www.digikey.cn/zh/products/detail/gigadevice-semiconductor-hk-limited/GD25Q64CSIG/9484942\u003c/a\u003e\u003cbr\u003e\nSoc:\u003cbr\u003e\nSigmaStar SSC335\u003cbr\u003e\n\u003ca href=\"https://linux-chenxing.org/infinity6/ssc335_pb_v03.pdf\"\u003ehttps://linux-chenxing.org/infinity6/ssc335_pb_v03.pdf\u003c/a\u003e\u003cbr\u003e\nSensor:\u003cbr\u003e\n1/2.8\u0026quot; 2MP CMOS Sony IMX307\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"lan-windows-computer-tftp-server-directory-structure\"\u003eLAN Windows computer TFTP SERVER directory structure\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u0026ldquo;bin\u0026rdquo; directory serves as the current directory for the TFTP server, used to store firmware files.\u003c/li\u003e\n\u003cli\u003eDisable the firewall on the Windows computer and run tftp64.exe.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/openipc_ssc335/images/2070423656.png\"\u003e\u003c/p\u003e","tags":["iot","ipc","linux","openipc","uart"],"title":"Flash OpenIPC firmware onto SigmaStar SSC335 SoC and Sony IMX307 IPC module."},{"categories":["today_i_learned"],"content":"In this article, I will share with you about my second time installing CUPS on Ubuntu.\nRequriement Ubuntu 18.04 LTS Install on an Old Computer Canon E410 Series Printer Internet CUPS Installation and Configuration Step by Step Install CUPS on your system #install cups sudo apt-get install cups cups-pdf cups-bsd Back up the configuration file #copy configuration file sudo cp /etc/cups/cupsd.conf cupsd.conf.bak Editing the CUPS configuration file #add user simith to lpadmin group sudo usermod -aG lpadmin simith #edit cupsd.conf sudo vim cupsd.conf Edited cupsd.conf contents.\n（Configuration options not mentioned should be left as default.） #allow access port Port 63100 LogLevel warn PageLogFormat MaxLogSize 200 # Show shared printers on the local network. Browsing on BrowseLocalProtocols dnssd # Web interface setting... WebInterface Yes # Restrict access to the server... \u0026lt;Location /\u0026gt; Order Allow,deny Allow @LOCAL Allow From 127.0.0.1 Allow From 192.168.0.0/16 \u0026lt;/Location\u0026gt; # Restrict access to the admin pages... \u0026lt;Location /admin\u0026gt; #access user simith can visit admin page Require user simith Order Allow,deny Allow @LOCAL Allow 127.0.0.1 Allow From 192.168.0.0/16 \u0026lt;/Location\u0026gt; # Restrict access to configuration files... \u0026lt;Location /admin/conf\u0026gt; AuthType Default Require user simith Order allow,deny Allow @LOCAL Allow 127.0.0.1 Allow From 192.168.0.0/16 \u0026lt;/Location\u0026gt; # Restrict access to log files... \u0026lt;Location /admin/log\u0026gt; AuthType Default Require user simith Order allow,deny Allow @LOCAL Allow 192.168.0.0/16 \u0026lt;/Location\u0026gt; Restart CUPS service and add to starup sudo systemctl restart cups sudp systemctl enable cupsEnd Finally, you can visit the Ubuntu IP address and configuration\nExample: http://{ubuntu_ip_address}:63100 Another article 打印服务器cups安装笔记\nhttps://www.itiohub.com/log/413.html\n","permalink":"https://www.dukehsu.com/posts/cupsinstall.html","summary":"\u003cp\u003eIn this article, I will share with you about my second time installing CUPS on Ubuntu.\u003c/p\u003e\n\u003ch2 id=\"requriement\"\u003eRequriement\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUbuntu 18.04 LTS Install on an Old Computer\u003c/li\u003e\n\u003cli\u003eCanon E410 Series Printer\u003c/li\u003e\n\u003cli\u003eInternet\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"cups-installation-and-configuration-step-by-step\"\u003eCUPS Installation and Configuration Step by Step\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInstall CUPS on your system\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#install cups\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get install cups cups-pdf cups-bsd \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eBack up the configuration file\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#copy configuration file\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo cp /etc/cups/cupsd.conf cupsd.conf.bak\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eEditing the CUPS configuration file\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#add user simith to lpadmin group\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo usermod -aG lpadmin simith\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#edit cupsd.conf\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo vim cupsd.conf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eEdited cupsd.conf contents.\u003cbr\u003e\n（Configuration options not mentioned should be left as default.）\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#allow access port\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ePort \u003cspan class=\"m\"\u003e63100\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eLogLevel warn\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ePageLogFormat\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eMaxLogSize \u003cspan class=\"m\"\u003e200\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Show shared printers on the local network.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eBrowsing on\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eBrowseLocalProtocols dnssd\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Web interface setting...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eWebInterface Yes\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to the server...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Order Allow,deny\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow From 127.0.0.1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow From 192.168.0.0/16\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;/Location\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to the admin pages...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /admin\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"c1\"\u003e#access user simith can visit admin page\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Require user simith\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Order Allow,deny\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow 127.0.0.1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow From 192.168.0.0/16\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;/Location\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to configuration files...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /admin/conf\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  AuthType Default\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Require user simith\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Order allow,deny\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow 127.0.0.1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow From 192.168.0.0/16\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;/Location\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to log files...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /admin/log\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  AuthType Default\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Require user simith\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Order allow,deny\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow 192.168.0.0/16\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;/Location\u0026gt;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eRestart CUPS service and add to starup\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo systemctl restart cups\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudp systemctl \u003cspan class=\"nb\"\u003eenable\u003c/span\u003e cups\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"end\"\u003eEnd\u003c/h3\u003e\n\u003cp\u003eFinally, you can visit the Ubuntu IP address and configuration\u003c/p\u003e","tags":["cups","linux","old-printer","ubuntu"],"title":"Share an Old Printer on Your Local Network - CUPS"},{"categories":["today_i_learned"],"content":" 因为Frp client 之前是使用批处理启动的，所以每次电脑重启之后，需要等到登录之后才能启动。 目的是要操作系统启动之后就直接启动Frp client。为了解决这个问题，所以使用nssm来将Frp client安装到windows的服务，使它作为服务启动。这样就可以实现当电脑启动之后就可以直接启动。\n目录 先决条件 安装过程 验证和引用 先决条件 Frp 服务端 与客户端 https://github.com/fatedier/frp nssm 程序 https://nssm.cc/download 根据Frp服务端的信息配置好相对应的Frp客户端信息 安装过程 Step 1 在 Windows 操作系统下配置好 Frp 客户端信息之后，使用命令行进入 nssm 目录，如下图：\n注：请根据实际情况进入相对应的目录。\nStep 2 通过命令行安装服务：\nnssm install MyFirstServiceStep 3 输入 Step 2 的命令后，系统会打开 nssm GUI。填写服务的相关信息即可：\n程序路径 程序工作目录 额外参数 顶部的 “Details” 是服务的详细描述和设置。填完以上信息后，服务就安装完成了。记得以管理员模式运行 nssm。\n验证和应用 在windows 的命令行输入“services.msc” 打开windows 的服务管理窗口 通过上图就可以判断 服务已经添加成功。 另外你还可以在frp 根目录下查看frp运行的日志。 引用 Frp 服务端 与客户端 https://github.com/fatedier/frp nssm 程序 https://nssm.cc/download 这就是使用nssm 在windows下，快速的创建服务的简单使用笔记。\n","permalink":"https://www.dukehsu.com/posts/nssminsallation.html","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/nssminsallation/images/2727162793.png\"\u003e\n因为Frp client 之前是使用批处理启动的，所以每次电脑重启之后，需要等到登录之后才能启动。\n目的是要操作系统启动之后就直接启动Frp client。为了解决这个问题，所以使用nssm来将Frp client安装到windows的服务，使它作为服务启动。这样就可以实现当电脑启动之后就可以直接启动。\u003c/p\u003e\n\u003ch2 id=\"目录\"\u003e目录\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e先决条件\u003c/li\u003e\n\u003cli\u003e安装过程\u003c/li\u003e\n\u003cli\u003e验证和引用\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"先决条件\"\u003e先决条件\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFrp 服务端 与客户端\n\u003ca href=\"https://github.com/fatedier/frp\"\u003ehttps://github.com/fatedier/frp\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003enssm 程序\n\u003ca href=\"https://nssm.cc/download\"\u003ehttps://nssm.cc/download\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e根据Frp服务端的信息配置好相对应的Frp客户端信息\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"安装过程\"\u003e安装过程\u003c/h4\u003e\n\u003ch5 id=\"step-1\"\u003eStep 1\u003c/h5\u003e\n\u003cp\u003e在 Windows 操作系统下配置好 Frp 客户端信息之后，使用命令行进入 nssm 目录，如下图：\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/nssminsallation/images/387264339.png\"\u003e\u003c/p\u003e\n\u003cp\u003e注：请根据实际情况进入相对应的目录。\u003c/p\u003e\n\u003ch5 id=\"step-2\"\u003eStep 2\u003c/h5\u003e\n\u003cp\u003e通过命令行安装服务：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enssm install MyFirstService\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch5 id=\"step-3\"\u003eStep 3\u003c/h5\u003e\n\u003cp\u003e输入 Step 2 的命令后，系统会打开 nssm GUI。填写服务的相关信息即可：\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/nssminsallation/images/980108514.png\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e程序路径\u003c/li\u003e\n\u003cli\u003e程序工作目录\u003c/li\u003e\n\u003cli\u003e额外参数\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e顶部的 “Details” 是服务的详细描述和设置。填完以上信息后，服务就安装完成了。记得以管理员模式运行 nssm。\u003c/p\u003e\n\u003ch4 id=\"验证和应用\"\u003e验证和应用\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e在windows 的命令行输入“services.msc” 打开windows 的服务管理窗口\n\u003cimg loading=\"lazy\" src=\"/posts/nssminsallation/images/2352057980.png\"\u003e\u003c/li\u003e\n\u003cli\u003e通过上图就可以判断 服务已经添加成功。 另外你还可以在frp 根目录下查看frp运行的日志。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch6 id=\"引用\"\u003e引用\u003c/h6\u003e\n\u003cul\u003e\n\u003cli\u003eFrp 服务端 与客户端\n\u003ca href=\"https://github.com/fatedier/frp\"\u003ehttps://github.com/fatedier/frp\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003enssm 程序\n\u003ca href=\"https://nssm.cc/download\"\u003ehttps://nssm.cc/download\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这就是使用nssm 在windows下，快速的创建服务的简单使用笔记。\u003c/p\u003e","tags":["frp","linux","nssm","windows"],"title":"Nssm在Windows操作系统中安装系统服务"},{"categories":["today_i_learned"],"content":"简介: 这篇文章记录了自己在解决VALORANT 游戏在Windows 11上VALORANT的反外挂程序\u0026quot;Riot Vanguard\u0026quot;错误代码: VAN9005 or VAN9003的处理过程.\n参考: 在Windows 10作業系統上調整虛擬化型安全性（簡稱VBS）設定 | VAN9005 |《特戰英豪》\nhttps://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\nWindows 11「VAN9001」或「VAN 9003」錯誤疑難排解 |《特戰英豪》\nhttps://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\nWindows 11 关闭基于虚拟化的安全(VBS) 问题疑惑\nhttps://answers.microsoft.com/zh-hans/windows/forum/all/windows-11/3864f584-4090-4793-8a5b-34fd73605c91\n解决过程: 客户操作系统为Windows11, 笔记本电脑支持TPM2.0\n根据上面官方支持文档操作,打开TPM2.0之后.\n通过msinfo32 命令查看安全启动状态,仍然显示未开启.Riot Vanguard 无法正常运行.\n于是将客户的操作系统更换成Windows10 关闭VBS 之后就可以正常运行游戏了.\n总结: 如果你的操作系统是Windows11 ,请开启TPM2.0, 并使用UEFI启动,通过msinfo32 命令查看安全启动状态.如果已经是开启状态则可以正常进行游戏. 如果你是操作系统是Windows10 ,请直接关闭VBS,卸载Riot Vanguard 重新进游戏测试即可. ","permalink":"https://www.dukehsu.com/posts/valoranterror.html","summary":"\u003ch4 id=\"简介\"\u003e简介:\u003c/h4\u003e\n\u003cp\u003e这篇文章记录了自己在解决VALORANT 游戏在Windows 11上VALORANT的反外挂程序\u0026quot;Riot Vanguard\u0026quot;错误代码: VAN9005 or VAN9003的处理过程.\u003c/p\u003e\n\u003ch4 id=\"参考\"\u003e参考:\u003c/h4\u003e\n\u003cp\u003e在Windows 10作業系統上調整虛擬化型安全性（簡稱VBS）設定 | VAN9005 |《特戰英豪》\u003cbr\u003e\n\u003ca 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\"\u003ehttps://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\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWindows 11「VAN9001」或「VAN 9003」錯誤疑難排解 |《特戰英豪》\u003cbr\u003e\n\u003ca 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\"\u003ehttps://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\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWindows 11 关闭基于虚拟化的安全(VBS) 问题疑惑\u003cbr\u003e\n\u003ca href=\"https://answers.microsoft.com/zh-hans/windows/forum/all/windows-11/3864f584-4090-4793-8a5b-34fd73605c91\"\u003ehttps://answers.microsoft.com/zh-hans/windows/forum/all/windows-11/3864f584-4090-4793-8a5b-34fd73605c91\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"解决过程\"\u003e解决过程:\u003c/h4\u003e\n\u003cp\u003e客户操作系统为Windows11, 笔记本电脑支持TPM2.0\u003cbr\u003e\n根据上面官方支持文档操作,打开TPM2.0之后.\u003cbr\u003e\n通过\u003cstrong\u003emsinfo32\u003c/strong\u003e 命令查看安全启动状态,仍然显示未开启.Riot Vanguard 无法正常运行.\u003cbr\u003e\n于是将客户的操作系统更换成Windows10 关闭VBS 之后就可以正常运行游戏了.\u003c/p\u003e\n\u003ch4 id=\"总结\"\u003e总结:\u003c/h4\u003e\n\u003col\u003e\n\u003cli\u003e如果你的操作系统是Windows11 ,请开启TPM2.0, 并使用UEFI启动,通过\u003cstrong\u003emsinfo32\u003c/strong\u003e 命令查看安全启动状态.如果已经是开启状态则可以正常进行游戏.\u003c/li\u003e\n\u003cli\u003e如果你是操作系统是Windows10 ,请直接关闭VBS,卸载Riot Vanguard 重新进游戏测试即可.\u003c/li\u003e\n\u003c/ol\u003e","tags":["riot-vanguard","valorant","van9001","van9003","van9005","特戰英豪","瓦罗兰"],"title":"《特戰英豪》VAN9005/ VAN9003错误"},{"categories":["today_i_learned"],"content":"\n简介: 在这篇文章记录了在C sharp 编程中使用IniParse 对ini配置文件进行读写的操作.\n读取ini文件中的Mysql数据库配置文件进行数据库连接: 如果你想从一个 .ini 文件中读取配置信息，可以使用第三方库，如 IniParser。以下是如何使用 IniParser 库来实现：\n首先，你需要使用 NuGet 包管理器安装 IniParser。在 Visual Studio 中，可以通过 NuGet 包管理器控制台执行以下命令：\nInstall-Package IniParser\n然后，创建一个 config.ini 文件，并添加以下内容：\n[Database] Server=your_server User=your_user Password=your_password Database=your_database接着，修改你的 mysqldata 类如下：\nusing System; using IniParser; using IniParser.Model; using MySql.Data.MySqlClient; using Sunny.UI; namespace ExpressManageSystem { internal class mysqldata { private static readonly string configFile = \u0026#34;config.ini\u0026#34;; private static readonly FileIniDataParser parser = new FileIniDataParser(); private static readonly IniData configData = parser.ReadFile(configFile); public static string connection_string { get { var databaseSection = configData[\u0026#34;Database\u0026#34;]; return $\u0026#34;server={databaseSection[\u0026#34;Server\u0026#34;]};user={databaseSection[\u0026#34;User\u0026#34;]};password={databaseSection[\u0026#34;Password\u0026#34;]};database={databaseSection[\u0026#34;Database\u0026#34;]}\u0026#34;; } } public MySqlConnection mySqlConnection = new MySqlConnection(connection_string); //连接数据库 public bool connect_db() { try { mySqlConnection.Open(); return true; } catch (Exception ex) { UIMessageBox.Show(ex.Message); return false; } } //关闭数据库链接 public bool close_db() { try { mySqlConnection.Close(); return true; } catch (Exception ex) { UIMessageBox.Show(ex.Message); return false; } } } }在这个修改后的代码中，使用了 IniParser 库来读取 config.ini 文件中的配置信息。这样，你就可以通过修改 config.ini 文件来更改数据库连接信息，而无需修改代码。\n读取ini文件中的信息保存到变量中: 请参考示例代码\nprivate void CopyExpressInfo() { try { if (datagridview_main_information.SelectedRows.Count == 0) { MessageBox.Show(\u0026#34;请先选择客户\u0026#34;); return; } // 获取选中的行 DataGridViewRow selectedRow = datagridview_main_information.SelectedRows[0]; // 获取选中行的数据 string customercode = selectedRow.Cells[\u0026#34;customercode\u0026#34;].Value.ToString(); //所需要复制的内容 var configFile = \u0026#34;config.ini\u0026#34;; //定义ini配置文件名称 var parser = new FileIniDataParser(); IniData configData = null; if (File.Exists(configFile)) { configData = parser.ReadFile(configFile); //读取CompanyInfo 部分的信息 var companyInfoSection = configData[\u0026#34;CompanyInfo\u0026#34;]; string receiverAir = companyInfoSection[\u0026#34;Receiver_air\u0026#34;]; string addressAir = companyInfoSection[\u0026#34;Address_air\u0026#34;].ToString(); string phoneNumberAir = companyInfoSection[\u0026#34;Phonenumber_air\u0026#34;]; string receiverSea = companyInfoSection[\u0026#34;Receiver_sea\u0026#34;]; string addressSea = companyInfoSection[\u0026#34;Address_sea\u0026#34;].ToString(); string phoneNumberSea = companyInfoSection[\u0026#34;Phonenumber_sea\u0026#34;]; string cnShippinginfo = $\u0026#34;收件人:{receiverAir}\\r\\n收货地址:{addressAir}({customercode})+空运部\\r\\n手机号:{phoneNumberAir} \\n\u0026#34; + $\u0026#34; \\r\\n收件人:{receiverSea} \\r\\n收货地址:{addressSea}({customercode})+海运部 \\r\\n手机号:{phoneNumberSea}\u0026#34;; //保存到粘贴板 Clipboard.SetText(cnShippinginfo); MessageBox.Show($\u0026#34;已成功复制地址信息到剪贴板。\u0026#34;); } else { MessageBox.Show(\u0026#34;配置文件 config.ini 不存在,系统正在为你重新创建!\u0026#34;); configData = new IniData(); MessageBox.Show(\u0026#34;创建config.ini 成功,请在软件根目录填写相关信息!\u0026#34;); } } catch (Exception ex) { MessageBox.Show($\u0026#34;Error: {ex.Message}\u0026#34;); } }","permalink":"https://www.dukehsu.com/posts/iniparserlog.html","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/iniparserlog/images/3034772590.png\"\u003e\u003c/p\u003e\n\u003ch4 id=\"简介\"\u003e简介:\u003c/h4\u003e\n\u003cp\u003e在这篇文章记录了在C sharp 编程中使用IniParse 对ini配置文件进行读写的操作.\u003c/p\u003e\n\u003ch4 id=\"读取ini文件中的mysql数据库配置文件进行数据库连接\"\u003e读取ini文件中的Mysql数据库配置文件进行数据库连接:\u003c/h4\u003e\n\u003cp\u003e如果你想从一个 .ini 文件中读取配置信息，可以使用第三方库，如 IniParser。以下是如何使用 IniParser 库来实现：\u003c/p\u003e\n\u003cp\u003e首先，你需要使用 NuGet 包管理器安装 IniParser。在 Visual Studio 中，可以通过 NuGet 包管理器控制台执行以下命令：\u003cbr\u003e\n\u003ccode\u003eInstall-Package IniParser\u003c/code\u003e\u003cbr\u003e\n然后，创建一个 config.ini 文件，并添加以下内容：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e[Database]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eServer=your_server\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eUser=your_user\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ePassword=your_password\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eDatabase=your_database\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e接着，修改你的 mysqldata 类如下：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-csharp\" data-lang=\"csharp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eIniParser\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eIniParser.Model\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eMySql.Data.MySqlClient\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSunny.UI\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003enamespace\u003c/span\u003e \u003cspan class=\"nn\"\u003eExpressManageSystem\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003einternal\u003c/span\u003e \u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003emysqldata\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003ereadonly\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003econfigFile\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;config.ini\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003ereadonly\u003c/span\u003e \u003cspan class=\"n\"\u003eFileIniDataParser\u003c/span\u003e \u003cspan class=\"n\"\u003eparser\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eFileIniDataParser\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003ereadonly\u003c/span\u003e \u003cspan class=\"n\"\u003eIniData\u003c/span\u003e \u003cspan class=\"n\"\u003econfigData\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparser\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003econfigFile\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003econnection_string\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eget\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003edatabaseSection\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003econfigData\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Database\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e];\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;server={databaseSection[\u0026#34;\u003c/span\u003e\u003cspan class=\"n\"\u003eServer\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;]};user={databaseSection[\u0026#34;\u003c/span\u003e\u003cspan class=\"n\"\u003eUser\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;]};password={databaseSection[\u0026#34;\u003c/span\u003e\u003cspan class=\"n\"\u003ePassword\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;]};database={databaseSection[\u0026#34;\u003c/span\u003e\u003cspan class=\"n\"\u003eDatabase\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;]}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eMySqlConnection\u003c/span\u003e \u003cspan class=\"n\"\u003emySqlConnection\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eMySqlConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003econnection_string\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e//连接数据库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"n\"\u003econnect_db\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003etry\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003emySqlConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eOpen\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003ecatch\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eException\u003c/span\u003e \u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003eUIMessageBox\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eShow\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eMessage\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e//关闭数据库链接\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"n\"\u003eclose_db\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003etry\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003emySqlConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eClose\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003ecatch\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eException\u003c/span\u003e \u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003eUIMessageBox\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eShow\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eMessage\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e在这个修改后的代码中，使用了 IniParser 库来读取 config.ini 文件中的配置信息。这样，你就可以通过修改 config.ini 文件来更改数据库连接信息，而无需修改代码。\u003c/p\u003e","tags":["c","coding"],"title":"在C sharp中使用IniParser对ini配置文件进行读写操作"},{"categories":["today_i_learned"],"content":"记得上次被MySQL教训还是在10年前，如今又一次被MySQL折腾一次。早9点开始到现在下午5点。总算是把MySQL装好在Windows10上了。\nMySQL安装 https://dev.mysql.com/downloads/installer/\n选择你要的版本安装即可\n一切安装完成之后，通过CMD登录或者Navicat 登录会提示\n---date [ERROR] [MY-011084] [Server] Keyring migration failed.\n---date [ERROR] [MY-010119] [Server] Aborting\n于是跟着stackoverflow 开始操作\nhttps://stackoverflow.com/questions/51448958/mysql-server-8-0-keyring-migration-error-at-login\n跟着Sabito的操作可以直接在cmd中登录，但是当启动WindowsService再来用cmd登录的时候会出现以下错误\nERROR 1045 (28000) Access denied for user root@localhost (using password: YES)\n解决办法 停止MySQL服务 新增一个文本文档命名为‘mysqlinit.txt’\n在文档中写入以下内容\nALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'\n将该文档拷贝到C: CMD管理员权限进入MySQL Server 的 bin目录\n在cmd窗口输入以下命令 然后回车\n--defaults-file=\u0026quot;C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini\u0026quot; --init-file=C:\\\\mysqlinit.txt --console\n等待命令执行完成，按Ctrl+C 退出CMD 并关闭 重新启动MySQL服务\n这个时候就可以使用CMD或者Navicat 登录了\n参考 How to Fix \u0026quot; access denied for user \u0026lsquo;root\u0026rsquo;@\u0026rsquo;localhost\u0026rsquo; (using password: yes) \u0026quot; in MySQL Window 10\nhttps://www.youtube.com/watch?v=8l2NUwm-OIk\nmysql server 8.0 keyring migration error at login\nhttps://stackoverflow.com/questions/51448958/mysql-server-8-0-keyring-migration-error-at-login\n","permalink":"https://www.dukehsu.com/posts/mysql1045error.html","summary":"\u003cp\u003e记得上次被MySQL教训还是在10年前，如今又一次被MySQL折腾一次。早9点开始到现在下午5点。总算是把MySQL装好在Windows10上了。\u003c/p\u003e\n\u003ch3 id=\"mysql安装\"\u003eMySQL安装\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://dev.mysql.com/downloads/installer/\"\u003ehttps://dev.mysql.com/downloads/installer/\u003c/a\u003e\u003cbr\u003e\n选择你要的版本安装即可\u003c/p\u003e\n\u003cp\u003e一切安装完成之后，通过CMD登录或者Navicat 登录会提示\u003cbr\u003e\n\u003ccode\u003e---date [ERROR] [MY-011084] [Server] Keyring migration failed.\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e---date [ERROR] [MY-010119] [Server] Aborting\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e于是跟着stackoverflow 开始操作\u003cbr\u003e\n\u003ca href=\"https://stackoverflow.com/questions/51448958/mysql-server-8-0-keyring-migration-error-at-login\"\u003ehttps://stackoverflow.com/questions/51448958/mysql-server-8-0-keyring-migration-error-at-login\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e跟着Sabito的操作可以直接在cmd中登录，但是当启动WindowsService再来用cmd登录的时候会出现以下错误\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eERROR 1045 (28000) Access denied for user root@localhost (using password: YES)\u003c/code\u003e\u003c/p\u003e\n\u003ch3 id=\"解决办法\"\u003e解决办法\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e停止MySQL服务\u003c/li\u003e\n\u003cli\u003e新增一个文本文档命名为‘mysqlinit.txt’\u003cbr\u003e\n在文档中写入以下内容\u003cbr\u003e\n\u003ccode\u003eALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'\u003c/code\u003e\u003cbr\u003e\n将该文档拷贝到\u003cstrong\u003eC:\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eCMD管理员权限进入MySQL Server 的 bin目录\u003cbr\u003e\n在cmd窗口输入以下命令 然后回车\u003cbr\u003e\n\u003ccode\u003e--defaults-file=\u0026quot;C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini\u0026quot; --init-file=C:\\\\mysqlinit.txt --console\u003c/code\u003e\u003cbr\u003e\n等待命令执行完成，按Ctrl+C 退出CMD 并关闭\u003c/li\u003e\n\u003cli\u003e重新启动MySQL服务\u003cbr\u003e\n这个时候就可以使用CMD或者Navicat 登录了\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/mysql1045error/images/1773920245.png\"\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"参考\"\u003e参考\u003c/h3\u003e\n\u003cp\u003eHow to Fix \u0026quot; access denied for user \u0026lsquo;root\u0026rsquo;@\u0026rsquo;localhost\u0026rsquo; (using password: yes) \u0026quot; in MySQL Window 10\u003cbr\u003e\n\u003ca href=\"https://www.youtube.com/watch?v=8l2NUwm-OIk\"\u003ehttps://www.youtube.com/watch?v=8l2NUwm-OIk\u003c/a\u003e\u003c/p\u003e","tags":["error-1045","mysql"],"title":"MySQL ERROR 1045 (28000) Access denied for user 解决办法"},{"categories":["today_i_learned"],"content":"这篇笔记主要记录了作为一个新手如何使用Arduino IDE对ESP32S3开发板进行开发,以及ESP32连接到电脑,在Arduino IDE 中添加附加开发板, 通过示例代码点亮ESP32中的LED灯 .以下操作都是在Windows系统环境中进行.\n准备工作 ESP32 S3 开发板\nArduino IDE\nUSB To Type C\nWindows 操作系统电脑\n可以正常访问Github的互联网环境\n步骤 Arduino IDE 下载 Arduino 下载地址\nhttps://www.arduino.cc/en/software\n选择Windows操作系统下载\n安装好之后如下\n在IDE中添加附加开发板 点击 “文件”-“首选项”，在 “附加开发板管理器网址” 中输入以下地址\nEspressif ESP32: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json 如下图所示\n点击 “工具”-“开发板”-“开发板管理器”，在 “开发板管理器” 中搜索 “ESP32”,选择\u0026quot;esp32 by Espressif Systems\u0026quot; 点击安装即可\n如下图所示\n等待安装完成之后就可以开始连接ESP32 开发板.\n将ESP32开发板连接到你的电脑 驱动程序安装\n由于我使用的是USB A TO Type C, ESP开发板上用的是CH343p芯片,所以要提前安装驱动\n源地官方 驱动地址:\nhttp://vcc-gnd.com/ 将设备通过USB A TO Type C的数据线插入到电脑的USB口\n切记使用正确的数据线,不是电源线,电源线里面只有2芯,无法传输数据 在设备管理器中检查开发板是否连接正常\n如果你可以在你电脑的设备管理器中的端口选项中看到该设备,那说明ESP32开发板已经正确的连接到你的电脑了 在Arduino IED中连接开发板并使用示例 通过Arduino IED连接开发板\n在Arduino IDE左上角点击\u0026quot;选择开发板\u0026quot; 在\u0026quot;开发板\u0026quot;下方搜索\u0026quot;esp32s3\u0026quot; 并且找到相对应的开发板型号, 在右侧选择端口,点击确定即可.\n如下图所示.\n连接完成如下图所示\n通过Arduino IDE中的实例点亮开发板的LED\n操作步骤如下图所示\n接下来IDE 会新增一个窗口,展示BlinkRGB的项目\n如下图\n在确认开发板是正常连接的情况下,可以点击左上角的上传按钮将代码上传到开发板.\n通过以上步骤,你的ESP32 开发板中的LED 开始闪烁了哦\n参考: 如何安装Arduino IDE？添加附加开发板？以 ESP32 为例 - 小栋同学\nhttps://xd.sh.cn/arduino-ide-esp32/\n","permalink":"https://www.dukehsu.com/posts/esp32s3int.html","summary":"\u003cp\u003e这篇笔记主要记录了作为一个新手如何使用Arduino IDE对ESP32S3开发板进行开发,以及ESP32连接到电脑,在Arduino IDE 中添加附加开发板, 通过示例代码点亮ESP32中的LED灯 .以下操作都是在Windows系统环境中进行.\u003c/p\u003e\n\u003ch3 id=\"准备工作\"\u003e准备工作\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eESP32 S3 开发板\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eArduino IDE\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUSB To Type C\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWindows 操作系统电脑\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e可以正常访问Github的互联网环境\u003c/p\u003e\n\u003ch3 id=\"步骤\"\u003e步骤\u003c/h3\u003e\n\u003ch5 id=\"arduino-ide-下载\"\u003eArduino IDE 下载\u003c/h5\u003e\n\u003cp\u003eArduino 下载地址\u003cbr\u003e\n\u003ca href=\"https://www.arduino.cc/en/software\"\u003ehttps://www.arduino.cc/en/software\u003c/a\u003e\u003cbr\u003e\n选择Windows操作系统下载\u003c/p\u003e\n\u003cp\u003e安装好之后如下\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/esp32s3int/images/3692928640.png\"\u003e\u003c/p\u003e\n\u003ch5 id=\"在ide中添加附加开发板\"\u003e在IDE中添加附加开发板\u003c/h5\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e点击 “文件”-“首选项”，在 “附加开发板管理器网址” 中输入以下地址\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEspressif ESP32: \u003ca href=\"https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json\"\u003ehttps://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e如下图所示\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/esp32s3int/images/8909271.png\"\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e点击 “工具”-“开发板”-“开发板管理器”，在 “开发板管理器” 中搜索 “ESP32”,选择\u0026quot;esp32 by Espressif Systems\u0026quot; 点击安装即可\u003cbr\u003e\n如下图所示\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/esp32s3int/images/2299094174.png\"\u003e\u003cbr\u003e\n等待安装完成之后就可以开始连接ESP32 开发板.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5 id=\"将esp32开发板连接到你的电脑\"\u003e将ESP32开发板连接到你的电脑\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e驱动程序安装\u003cbr\u003e\n由于我使用的是USB A TO Type C, ESP开发板上用的是CH343p芯片,所以要提前安装驱动\u003cbr\u003e\n源地官方 驱动地址:\u003cbr\u003e\n\u003ca href=\"http://vcc-gnd.com/\"\u003ehttp://vcc-gnd.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e将设备通过USB A TO Type C的数据线插入到电脑的USB口\u003cbr\u003e\n切记使用正确的数据线,不是电源线,电源线里面只有2芯,无法传输数据\u003c/li\u003e\n\u003cli\u003e在设备管理器中检查开发板是否连接正常\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/esp32s3int/images/4190968287.png\"\u003e\u003cbr\u003e\n如果你可以在你电脑的设备管理器中的端口选项中看到该设备,那说明ESP32开发板已经正确的连接到你的电脑了\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5 id=\"在arduino-ied中连接开发板并使用示例\"\u003e在Arduino IED中连接开发板并使用示例\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e通过Arduino IED连接开发板\u003cbr\u003e\n在Arduino IDE左上角点击\u0026quot;选择开发板\u0026quot; 在\u0026quot;开发板\u0026quot;下方搜索\u0026quot;esp32s3\u0026quot; 并且找到相对应的开发板型号, 在右侧选择端口,点击确定即可.\u003cbr\u003e\n如下图所示.\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/esp32s3int/images/1482773676.png\"\u003e\u003c/p\u003e","tags":["arduino","esp32","esp32s3","ied","iot","vcc-gnd","源地"],"title":"使用Arduino IDE对ESP32S3开发板进行开发"},{"categories":["life"],"content":"眼鏡使用小貼士 定期清潔眼鏡： 使用專用眼鏡清潔液或溫和的肥皂水清洗眼鏡。避免使用含酒精或強酸性物質的清潔劑。 正確佩戴和摘掉眼鏡： 使用雙手握住眼鏡的雙腿，避免單手拿取框架，以防變形。 遠離高溫和潮濕環境： 避免將眼鏡長時間置於高溫環境中，也不要將它們放在浴室等潮濕的地方。 避免用衣物擦拭眼鏡： 使用專用眼鏡布或清潔紙巾擦拭眼鏡，避免使用衣物或紙巾，以防划伤鏡片。 注意鼻托和腿部調整： 確保鼻托和腿部的調整合適，以保持眼鏡的穩固和舒適。 避免戴眼鏡入睡： 長時間戴眼鏡可能導致鏡腿變形，避免戴著眼鏡入睡。 防護眼鏡： 在進行運動或有風塵的環境中，佩戴防護眼鏡，保護眼睛免受外界傷害。 這些建議有助於延長眼鏡的使用壽命，同時確保您的眼睛保持在良好的健康狀態。\n眼睛保健小貼士 保持充足的睡眠： 睡眠對眼睛的恢復至關重要。每晚爭取7-8小時的良好睡眠。 遠離煙草： 吸煙可能增加患白內障、黃斑變性等眼疾的風險。戒煙有助於眼部健康。 保持適當的屏幕距離： 使用電子設備時，將屏幕保持在眼睛的合適距離，通常是20英寸遠。 多食用富含抗氧化物的食物： 如胡蘿蔔、菠菜、草莓等，有助於減緩眼部衰老過程。 佩戴太陽鏡： 戴上防紫外線的太陽鏡，保護眼睛免受陽光傷害。 眼保健操： 定期進行眼保健操，如遠近對焦、眨眼操等，有助於緩解眼部肌肉。 用眼休息： 長時間用電子設備或進行近距離工作後，進行眼部休息。每隔20分鐘注視遠處，眨眼，緩解眼部疲勞。 保持房間濕度： 保持室內 濕度，避免眼部因空氣過於乾燥而不適。\n定期眼部檢查： 年齡到了40歲，每兩年進行一次眼部檢查，可早發現眼疾。 及時治療眼部不適： 如眼乾、紅、癢等症狀，及時就醫，防患眼疾。 **佩戴防藍光眼鏡：**使用電子器材儘量配戴鏡片 減少光線直射眼睛造成眼睛病變。 **推薦閱讀紙質書本：**減少屏幕光線直射。 以上小貼士有助於維護眼部健康，建議根據個人情況適度採納。\n關於眼睛的一些其他知識 近視手術不管哪一種都會把角膜磨平、磨平的地方變薄了、以後尤其到了更年期之後內分泌改變、角膜壓力不一樣、薄的部分被擠出去、造成角膜變形、變形的角膜不管配什麼度數的鏡片都不對勁，除了等待眼角膜移植沒有別的方式可以處理.\n白內障的手術成功之后就是老花250度。\n電腦跟手機也是發光體，就類似弱了很多的太陽，但是一段時間還是會有損害的；\n感謝：Six分享 和 ChatGPT的整理\n引申閱讀：\n眼睛疲勞- 妙佑醫療國際\nhttps://www.mayoclinic.org/zh-hans/diseases-conditions/eyestrain/symptoms-causes/syc-20372397\n","permalink":"https://www.dukehsu.com/posts/eyes_tips.html","summary":"\u003ch3 id=\"眼鏡使用小貼士\"\u003e眼鏡使用小貼士\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e定期清潔眼鏡：\u003c/strong\u003e 使用專用眼鏡清潔液或溫和的肥皂水清洗眼鏡。避免使用含酒精或強酸性物質的清潔劑。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e正確佩戴和摘掉眼鏡：\u003c/strong\u003e 使用雙手握住眼鏡的雙腿，避免單手拿取框架，以防變形。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e遠離高溫和潮濕環境：\u003c/strong\u003e 避免將眼鏡長時間置於高溫環境中，也不要將它們放在浴室等潮濕的地方。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e避免用衣物擦拭眼鏡：\u003c/strong\u003e 使用專用眼鏡布或清潔紙巾擦拭眼鏡，避免使用衣物或紙巾，以防划伤鏡片。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e注意鼻托和腿部調整：\u003c/strong\u003e 確保鼻托和腿部的調整合適，以保持眼鏡的穩固和舒適。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e避免戴眼鏡入睡：\u003c/strong\u003e 長時間戴眼鏡可能導致鏡腿變形，避免戴著眼鏡入睡。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e防護眼鏡：\u003c/strong\u003e 在進行運動或有風塵的環境中，佩戴防護眼鏡，保護眼睛免受外界傷害。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e這些建議有助於延長眼鏡的使用壽命，同時確保您的眼睛保持在良好的健康狀態。\u003c/p\u003e\n\u003ch3 id=\"眼睛保健小貼士\"\u003e眼睛保健小貼士\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e保持充足的睡眠：\u003c/strong\u003e 睡眠對眼睛的恢復至關重要。每晚爭取7-8小時的良好睡眠。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e遠離煙草：\u003c/strong\u003e 吸煙可能增加患白內障、黃斑變性等眼疾的風險。戒煙有助於眼部健康。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e保持適當的屏幕距離：\u003c/strong\u003e 使用電子設備時，將屏幕保持在眼睛的合適距離，通常是20英寸遠。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e多食用富含抗氧化物的食物：\u003c/strong\u003e 如胡蘿蔔、菠菜、草莓等，有助於減緩眼部衰老過程。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e佩戴太陽鏡：\u003c/strong\u003e 戴上防紫外線的太陽鏡，保護眼睛免受陽光傷害。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e眼保健操：\u003c/strong\u003e 定期進行眼保健操，如遠近對焦、眨眼操等，有助於緩解眼部肌肉。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e用眼休息：\u003c/strong\u003e 長時間用電子設備或進行近距離工作後，進行眼部休息。每隔20分鐘注視遠處，眨眼，緩解眼部疲勞。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e保持房間濕度：\u003c/strong\u003e 保持室內\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e濕度，避免眼部因空氣過於乾燥而不適。\u003c/p\u003e\n\u003col start=\"9\"\u003e\n\u003cli\u003e\u003cstrong\u003e定期眼部檢查：\u003c/strong\u003e 年齡到了40歲，每兩年進行一次眼部檢查，可早發現眼疾。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e及時治療眼部不適：\u003c/strong\u003e 如眼乾、紅、癢等症狀，及時就醫，防患眼疾。\u003c/li\u003e\n\u003cli\u003e**佩戴防藍光眼鏡：**使用電子器材儘量配戴鏡片 減少光線直射眼睛造成眼睛病變。\u003c/li\u003e\n\u003cli\u003e**推薦閱讀紙質書本：**減少屏幕光線直射。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e以上小貼士有助於維護眼部健康，建議根據個人情況適度採納。\u003c/p\u003e\n\u003ch3 id=\"關於眼睛的一些其他知識\"\u003e關於眼睛的一些其他知識\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e近視手術不管哪一種都會把角膜磨平、磨平的地方變薄了、以後尤其到了更年期之後內分泌改變、角膜壓力不一樣、薄的部分被擠出去、造成角膜變形、變形的角膜不管配什麼度數的鏡片都不對勁，除了等待眼角膜移植沒有別的方式可以處理.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e白內障的手術成功之后就是老花250度。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e電腦跟手機也是發光體，就類似弱了很多的太陽，但是一段時間還是會有損害的；\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e感謝：Six分享 和 ChatGPT的整理\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e引申閱讀：\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e眼睛疲勞- 妙佑醫療國際\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.mayoclinic.org/zh-hans/diseases-conditions/eyestrain/symptoms-causes/syc-20372397\"\u003ehttps://www.mayoclinic.org/zh-hans/diseases-conditions/eyestrain/symptoms-causes/syc-20372397\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e","tags":["白内障","眼睛","眼镜","秒佑医疗国际","老花","蓝光","近视眼","sharing"],"title":"眼镜和眼睛的使用小贴士"},{"categories":["today_i_learned"],"content":"使用Google map的链接， 当用户点击时直接导航到该地址 在Google Maps上生成一个导航链接可以通过在URL中使用特定的参数来实现。以下是一个示例链接，当用户点击它时，将直接导航到指定的地址：\nhttps://www.google.com/maps/dir/?api=1\u0026amp;destination=目标地址\n请将 目标地址 替换为您想要导航到的确切地址。确保使用百分号编码（percent encoding）处理地址中的特殊字符。例如，空格可以编码为 %20。\n例如，如果您想导航到纽约时代广场，链接可能如下所示：\nhttps://www.google.com/maps/dir/?api=1\u0026amp;destination=Times%20Square,%20New%20York,%20NY\n用户点击这个链接后，将被重定向到Google Maps应用程序或网页版，并显示从当前位置到目标地址的导航路线。\n请注意，Google Maps API key（api=1参数中的API密钥）是可选的，但如果您拥有API密钥，可以使用它以获得更多的功能和更高的配额。\n使用Google map的链接， 当用户点击时直接导航到该坐标 在Google Maps上生成一个导航链接，直接导航到指定坐标，您可以使用以下URL格式：\nhttps://www.google.com/maps/dir/?api=1\u0026amp;destination=纬度,经度\n将 纬度 和 经度 替换为您要导航的具体坐标。例如：\nhttps://www.google.com/maps/dir/?api=1\u0026amp;destination=37.7749,-122.4194\n这个链接将导航到纬度37.7749，经度-122.4194的位置。用户点击这个链接后，将被重定向到Google Maps应用程序或网页版，并显示从当前位置到指定坐标的导航路线。\n与之前提到的一样，api=1 参数是可选的，但如果您拥有Google Maps API密钥，可以使用它以获得更多的功能和更高的配额。\n使用WAZE导航， 当用户点击链接时直接导航到该地址或者坐标 Waze使用不同的URL参数来实现导航。以下是使用Waze进行导航的基本URL格式：\nhttps://www.waze.com/ul?ll=纬度,经度\u0026amp;navigate=yes\n将 纬度 和 经度 替换为您要导航的具体坐标。例如：\nhttps://www.waze.com/ul?ll=37.7749,-122.4194\u0026amp;navigate=yes\n这个链接将导航到纬度37.7749，经度-122.4194的位置。与Google Maps类似，用户点击这个链接后，将被重定向到Waze应用程序并显示从当前位置到指定坐标的导航路线。\n","permalink":"https://www.dukehsu.com/posts/googlemapnote.html","summary":"\u003ch2 id=\"使用google-map的链接-当用户点击时直接导航到该地址\"\u003e使用Google map的链接， 当用户点击时直接导航到该地址\u003c/h2\u003e\n\u003cp\u003e在Google Maps上生成一个导航链接可以通过在URL中使用特定的参数来实现。以下是一个示例链接，当用户点击它时，将直接导航到指定的地址：\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehttps://www.google.com/maps/dir/?api=1\u0026amp;destination=目标地址\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e请将 目标地址 替换为您想要导航到的确切地址。确保使用百分号编码（percent encoding）处理地址中的特殊字符。例如，空格可以编码为 %20。\u003c/p\u003e\n\u003cp\u003e例如，如果您想导航到纽约时代广场，链接可能如下所示：\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehttps://www.google.com/maps/dir/?api=1\u0026amp;destination=Times%20Square,%20New%20York,%20NY\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e用户点击这个链接后，将被重定向到Google Maps应用程序或网页版，并显示从当前位置到目标地址的导航路线。\u003c/p\u003e\n\u003cp\u003e请注意，Google Maps API key（api=1参数中的API密钥）是可选的，但如果您拥有API密钥，可以使用它以获得更多的功能和更高的配额。\u003c/p\u003e\n\u003ch3 id=\"使用google-map的链接-当用户点击时直接导航到该坐标\"\u003e使用Google map的链接， 当用户点击时直接导航到该坐标\u003c/h3\u003e\n\u003cp\u003e在Google Maps上生成一个导航链接，直接导航到指定坐标，您可以使用以下URL格式：\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehttps://www.google.com/maps/dir/?api=1\u0026amp;destination=纬度,经度\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e将 纬度 和 经度 替换为您要导航的具体坐标。例如：\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehttps://www.google.com/maps/dir/?api=1\u0026amp;destination=37.7749,-122.4194\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e这个链接将导航到纬度37.7749，经度-122.4194的位置。用户点击这个链接后，将被重定向到Google Maps应用程序或网页版，并显示从当前位置到指定坐标的导航路线。\u003c/p\u003e\n\u003cp\u003e与之前提到的一样，api=1 参数是可选的，但如果您拥有Google Maps API密钥，可以使用它以获得更多的功能和更高的配额。\u003c/p\u003e\n\u003ch3 id=\"使用waze导航-当用户点击链接时直接导航到该地址或者坐标\"\u003e使用WAZE导航， 当用户点击链接时直接导航到该地址或者坐标\u003c/h3\u003e\n\u003cp\u003eWaze使用不同的URL参数来实现导航。以下是使用Waze进行导航的基本URL格式：\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehttps://www.waze.com/ul?ll=纬度,经度\u0026amp;navigate=yes\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e将 纬度 和 经度 替换为您要导航的具体坐标。例如：\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehttps://www.waze.com/ul?ll=37.7749,-122.4194\u0026amp;navigate=yes\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e这个链接将导航到纬度37.7749，经度-122.4194的位置。与Google Maps类似，用户点击这个链接后，将被重定向到Waze应用程序并显示从当前位置到指定坐标的导航路线。\u003c/p\u003e","tags":["google","googlemap","map","waze","导航"],"title":"Google Map 笔记"},{"categories":["today_i_learned"],"content":"重新安装Windows操作系统之后,有时候会忘记安装一些软件,索性今天写一篇笔记来专门记录.\n在这篇文章中,我会分成以下几个类目来列出Windows操作系统下必备\u0026amp;常用的软件清单,以及软件的官方链接或者Github页面\n软件类目 Windows常用运行库\nDirectX\nhttps://www.microsoft.com/en-us/download/details.aspx?id=35 Microsoft Visual 运行库\nhttps://www.ghxi.com/yxkhj.html 办公软件\nOffice365 \u0026amp; Microsoft\nhttps://www.microsoft.com/zh-cn/download/office WPS 金山软件 国内版\nhttps://www.wps.cn/ WPS 海外版\nhttps://www.wps.com/ Typora\nhttps://typora.io/ 系统增强\nDism++\nhttps://github.com/Chuyu-Team/Dism-Multi-language Wub\nhttps://www.itiohub.com/log/windowsUpdateBlock.html BandiZIP\nhttps://cn.bandisoft.com/bandizip/ 7z\nhttps://www.7-zip.org/ Snipaste\nhttps://www.snipaste.com/ Anydesk\nhttps://www.anydesk.com 社交通讯\nMessenger\nhttps://www.messenger.com/ Telegram\nhttps://www.telegram.org WhatsAPP\nhttps://www.whatsapp.com/ LINE\nhttps://line.me/en/ QQ\nhttps://im.qq.com/pcqq 微信\nhttps://www.wechat.com/ 媒体应用\nVLC\nhttps://www.videolan.org/vlc/ Potplayer\nhttps://potplayer.daum.net/ Spotify\nhttps://open.spotify.com SoundCloud\nhttps://soundcloud.com/ 龙卷风收音机\nhttps://cradio.live/ OBS Studio\nhttps://obsproject.com/ SAO FM\nhttps://sao.fm/ 街声\nhttps://streetvoice.com/ 编程工具\nNotepad++\nhttps://notepad-plus-plus.org/ VS Code online\nhttps://vscode.dev/ VS Code desktop\nhttps://code.visualstudio.com/ Visual Studio 2022\nhttps://visualstudio.microsoft.com/zh-hans/downloads/ PyCharm\nhttps://www.jetbrains.com/pycharm/ Scratch 3\nhttps://scratch.mit.edu/ Mind+\nhttps://mindplus.cc/ 3D绘图\nDesignspark Mechanical\nhttps://www.rs-online.com/designspark/mechanical-software 照片编辑和管理\nAdobe Lightroom Classic\nhttps://www.adobe.com/products/photoshop-lightroom-classic.html Adobe Photoshop\nhttps://www.adobe.com/products/photoshop.html BandiView\nhttps://cn.bandisoft.com/bandiview/ 结尾 希望大家可以多多支持原版,正版软件,从官方渠道购买或下载,避免给自己带来不必要的损失.\n也推荐大家在使用windows的时候, 使用微软应用商店去安装下载应用,那样就会减少流氓软件的侵害.\n以上内容可能会不断更新,如果你有好用的也可以在下方留言推荐.\n","permalink":"https://www.dukehsu.com/posts/windows10popularsoftware.html","summary":"\u003cp\u003e重新安装Windows操作系统之后,有时候会忘记安装一些软件,索性今天写一篇笔记来专门记录.\u003cbr\u003e\n在这篇文章中,我会分成以下几个类目来列出Windows操作系统下必备\u0026amp;常用的软件清单,以及软件的官方链接或者Github页面\u003c/p\u003e\n\u003ch3 id=\"软件类目\"\u003e软件类目\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWindows常用运行库\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDirectX\u003cbr\u003e\n\u003ca href=\"https://www.microsoft.com/en-us/download/details.aspx?id=35\"\u003ehttps://www.microsoft.com/en-us/download/details.aspx?id=35\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMicrosoft Visual 运行库\u003cbr\u003e\n\u003ca href=\"https://www.ghxi.com/yxkhj.html\"\u003ehttps://www.ghxi.com/yxkhj.html\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e办公软件\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOffice365 \u0026amp; Microsoft\u003cbr\u003e\n\u003ca href=\"https://www.microsoft.com/zh-cn/download/office\"\u003ehttps://www.microsoft.com/zh-cn/download/office\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWPS 金山软件 国内版\u003cbr\u003e\n\u003ca href=\"https://www.wps.cn/\"\u003ehttps://www.wps.cn/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWPS 海外版\u003cbr\u003e\n\u003ca href=\"https://www.wps.com/\"\u003ehttps://www.wps.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypora\u003cbr\u003e\n\u003ca href=\"https://typora.io/\"\u003ehttps://typora.io/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e系统增强\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDism++\u003cbr\u003e\n\u003ca href=\"https://github.com/Chuyu-Team/Dism-Multi-language\"\u003ehttps://github.com/Chuyu-Team/Dism-Multi-language\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWub\u003cbr\u003e\n\u003ca href=\"https://www.itiohub.com/log/windowsUpdateBlock.html\"\u003ehttps://www.itiohub.com/log/windowsUpdateBlock.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBandiZIP\u003cbr\u003e\n\u003ca href=\"https://cn.bandisoft.com/bandizip/\"\u003ehttps://cn.bandisoft.com/bandizip/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e7z\u003cbr\u003e\n\u003ca href=\"https://www.7-zip.org/\"\u003ehttps://www.7-zip.org/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSnipaste\u003cbr\u003e\n\u003ca href=\"https://www.snipaste.com/\"\u003ehttps://www.snipaste.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnydesk\u003cbr\u003e\n\u003ca href=\"https://www.anydesk.com\"\u003ehttps://www.anydesk.com\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e社交通讯\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMessenger\u003cbr\u003e\n\u003ca href=\"https://www.messenger.com/\"\u003ehttps://www.messenger.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTelegram\u003cbr\u003e\n\u003ca href=\"https://www.telegram.org\"\u003ehttps://www.telegram.org\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhatsAPP\u003cbr\u003e\n\u003ca href=\"https://www.whatsapp.com/\"\u003ehttps://www.whatsapp.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLINE\u003cbr\u003e\n\u003ca href=\"https://line.me/en/\"\u003ehttps://line.me/en/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eQQ\u003cbr\u003e\n\u003ca href=\"https://im.qq.com/pcqq\"\u003ehttps://im.qq.com/pcqq\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e微信\u003cbr\u003e\n\u003ca href=\"https://www.wechat.com/\"\u003ehttps://www.wechat.com/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e媒体应用\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVLC\u003cbr\u003e\n\u003ca href=\"https://www.videolan.org/vlc/\"\u003ehttps://www.videolan.org/vlc/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePotplayer\u003cbr\u003e\n\u003ca href=\"https://potplayer.daum.net/\"\u003ehttps://potplayer.daum.net/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpotify\u003cbr\u003e\n\u003ca href=\"https://open.spotify.com\"\u003ehttps://open.spotify.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSoundCloud\u003cbr\u003e\n\u003ca href=\"https://soundcloud.com/\"\u003ehttps://soundcloud.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e龙卷风收音机\u003cbr\u003e\n\u003ca href=\"https://cradio.live/\"\u003ehttps://cradio.live/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOBS Studio\u003cbr\u003e\n\u003ca href=\"https://obsproject.com/\"\u003ehttps://obsproject.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSAO FM\u003cbr\u003e\n\u003ca href=\"https://sao.fm/\"\u003ehttps://sao.fm/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e街声\u003cbr\u003e\n\u003ca href=\"https://streetvoice.com/\"\u003ehttps://streetvoice.com/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e编程工具\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNotepad++\u003cbr\u003e\n\u003ca href=\"https://notepad-plus-plus.org/\"\u003ehttps://notepad-plus-plus.org/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVS Code online\u003cbr\u003e\n\u003ca href=\"https://vscode.dev/\"\u003ehttps://vscode.dev/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVS Code desktop\u003cbr\u003e\n\u003ca href=\"https://code.visualstudio.com/\"\u003ehttps://code.visualstudio.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVisual Studio 2022\u003cbr\u003e\n\u003ca href=\"https://visualstudio.microsoft.com/zh-hans/downloads/\"\u003ehttps://visualstudio.microsoft.com/zh-hans/downloads/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePyCharm\u003cbr\u003e\n\u003ca href=\"https://www.jetbrains.com/pycharm/\"\u003ehttps://www.jetbrains.com/pycharm/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eScratch 3\u003cbr\u003e\n\u003ca href=\"https://scratch.mit.edu/\"\u003ehttps://scratch.mit.edu/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMind+\u003cbr\u003e\n\u003ca href=\"https://mindplus.cc/\"\u003ehttps://mindplus.cc/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e3D绘图\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDesignspark Mechanical\u003cbr\u003e\n\u003ca href=\"https://www.rs-online.com/designspark/mechanical-software\"\u003ehttps://www.rs-online.com/designspark/mechanical-software\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e照片编辑和管理\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdobe Lightroom Classic\u003cbr\u003e\n\u003ca href=\"https://www.adobe.com/products/photoshop-lightroom-classic.html\"\u003ehttps://www.adobe.com/products/photoshop-lightroom-classic.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdobe Photoshop\u003cbr\u003e\n\u003ca href=\"https://www.adobe.com/products/photoshop.html\"\u003ehttps://www.adobe.com/products/photoshop.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBandiView\u003cbr\u003e\n\u003ca href=\"https://cn.bandisoft.com/bandiview/\"\u003ehttps://cn.bandisoft.com/bandiview/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"结尾\"\u003e结尾\u003c/h3\u003e\n\u003cp\u003e希望大家可以多多支持原版,正版软件,从官方渠道购买或下载,避免给自己带来不必要的损失.\u003cbr\u003e\n也推荐大家在使用windows的时候, 使用微软应用商店去安装下载应用,那样就会减少流氓软件的侵害.\u003c/p\u003e","tags":["windows","常用软件","newsletter"],"title":"Windows操作系统下必备常用软件清单"},{"categories":["today_i_learned"],"content":"使用iKuai的Docker 安装Uptime 监控网络状况并设置通知提醒 Uptime Kuma 简介 我爱开源\nUptime Kuma 是一个开源项目,它的项目地址是在这里\nhttps://github.com/louislam\n开发者是以为香港Coder, 该项目已经有了43.4k star. 大家再给他多一些星星吧!\n缘由 有时候有些服务器因为某些原因离线了，忘记检查了。 然后造成服务器无法正常服务。\n于是就有了想法在iKuai的 Docker 中安装Uptime 来监控服务器和网络设备的在线状态\n先决条件 路由器要有空闲磁盘来存储Docker数据， 不然无法正常安装Docker插件 iKuai 版本要在3.5以上 在iKuai云平台绑定设备,并安装好Docker插件 安装步骤 在路由器的USB口插入一张USB磁盘\n并在\u0026quot;系统设置\u0026quot; - \u0026quot; 磁盘管理- 磁盘分区中\u0026quot; 将磁盘分区并挂载 绑定业务选择\u0026quot; 普通存储\u0026quot; 即可\n在云平台的\u0026quot; 插件应用 \u0026quot; 插件市场中选择要安装docker的设备\n在云平台 \u0026ldquo;插件管理\u0026rdquo; 检查插件安装状态, 显示安装成功则可以进行下一步操作\n回到路由器中的\u0026quot;高级应用\u0026quot; - \u0026ldquo;插件管理\u0026rdquo; 点击蓝色的 \u0026ldquo;docker\u0026rdquo; (需要在云平台安装好docker插件成功才能看到) - \u0026quot; 服务设置 \u0026quot;\n将镜像库URL 设置为微软的\nhttps://mcr.microsoft.com/ 点击确认保存\n回到Docker 界面 点击 \u0026ldquo;镜像管理\u0026rdquo; 点击添加, 选择\u0026quot;镜像库下载\u0026quot; 在搜索框中输入Uptime\n选择: louislam/uptime-kuma 下载, 然后等待提示下载成功\n下载时间取决于您的网络状况和磁盘速度\n回到Docker 界面 点击 \u0026ldquo;接口管理\u0026rdquo; 添加新的接口 如下图:\n(可以根据您的自身需求设置,但是不可以与路由器本身的LAN地址冲突)\n回到Docker 界面, 点击\u0026quot;容器列表\u0026quot; 添加新的容器如下图\n添加完容器之后启动即可\n容器端口映射 端口映射只要将容器的3001端口映射出去就可以使用外网地址访问了\n参考: https://www.ikuai8.com/zhic/ymgn/lyym/2019-12-13-06-35-05/2021-03-08-07-27-41.html\n基本使用 Uptime Kuma 自带多国语言 配置简单 使用方便 , 大大减低了运维人员的学习成本.\n总的来说, uptime的基本使用分为4部分\n创建管理员账号 添加需要监控的设备或者服务 创建状态页面给非运维人员查看 若有需求,可以设置通知渠道进行提醒 更高级的API功能就大家自己去研究啦\n基本使用如图所示\n通知提醒设置 请参考设置页面中的链接, 有具体文档, 其中本人是使用的Telegram Bot , 因为Telegram Bot 是最简单,最方便的.\n最后感谢 感谢张品正同学的分享, 感谢iKuai的产品. 是因为他们我才想到把它部署到iKuai并完成我的需求.\n","permalink":"https://www.dukehsu.com/posts/uptime_kuma.html","summary":"\u003ch2 id=\"使用ikuai的docker-安装uptime-监控网络状况并设置通知提醒\"\u003e使用iKuai的Docker 安装Uptime 监控网络状况并设置通知提醒\u003c/h2\u003e\n\u003ch4 id=\"uptime-kuma-简介\"\u003eUptime Kuma 简介\u003c/h4\u003e\n\u003cp\u003e\u003cstrong\u003e我爱开源\u003c/strong\u003e\u003cbr\u003e\nUptime Kuma 是一个开源项目,它的项目地址是在这里\u003cbr\u003e\n\u003ca href=\"https://github.com/louislam\"\u003ehttps://github.com/louislam\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e开发者是以为香港Coder, 该项目已经有了43.4k star. 大家再给他多一些星星吧!\u003c/p\u003e\n\u003ch4 id=\"缘由\"\u003e缘由\u003c/h4\u003e\n\u003cp\u003e有时候有些服务器因为某些原因离线了，忘记检查了。 然后造成服务器无法正常服务。\u003cbr\u003e\n于是就有了想法在iKuai的 Docker 中安装Uptime 来监控服务器和网络设备的在线状态\u003c/p\u003e\n\u003ch4 id=\"先决条件\"\u003e先决条件\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e路由器要有空闲磁盘来存储Docker数据， 不然无法正常安装Docker插件\u003c/li\u003e\n\u003cli\u003eiKuai 版本要在3.5以上\u003c/li\u003e\n\u003cli\u003e在iKuai云平台绑定设备,并安装好Docker插件\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"安装步骤\"\u003e安装步骤\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e在路由器的USB口插入一张USB磁盘\u003cbr\u003e\n并在\u0026quot;系统设置\u0026quot; - \u0026quot; 磁盘管理- 磁盘分区中\u0026quot; 将磁盘分区并挂载 绑定业务选择\u0026quot; 普通存储\u0026quot; 即可\u003cbr\u003e\n\u003cimg alt=\"1.png\" loading=\"lazy\" src=\"/posts/uptime_kuma/images/1634400243.png\" title=\"1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"2.png\" loading=\"lazy\" src=\"/posts/uptime_kuma/images/948630914.png\" title=\"2.png\"\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e在云平台的\u0026quot; 插件应用 \u0026quot; 插件市场中选择要安装docker的设备\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e在云平台 \u0026ldquo;插件管理\u0026rdquo; 检查插件安装状态, 显示安装成功则可以进行下一步操作\u003cbr\u003e\n\u003cimg alt=\"3.png\" loading=\"lazy\" src=\"/posts/uptime_kuma/images/2670504042.png\" title=\"3.png\"\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e回到路由器中的\u0026quot;高级应用\u0026quot; - \u0026ldquo;插件管理\u0026rdquo; 点击蓝色的 \u0026ldquo;docker\u0026rdquo; (需要在云平台安装好docker插件成功才能看到) - \u0026quot; 服务设置 \u0026quot;\u003cbr\u003e\n将镜像库URL 设置为微软的\u003cbr\u003e\n\u003ca href=\"https://mcr.microsoft.com/\"\u003ehttps://mcr.microsoft.com/\u003c/a\u003e 点击确认保存\u003cbr\u003e\n\u003cimg alt=\"4.png\" loading=\"lazy\" src=\"/posts/uptime_kuma/images/770769736.png\" title=\"4.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"5.png\" loading=\"lazy\" src=\"/posts/uptime_kuma/images/2075424476.png\" title=\"5.png\"\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e回到Docker 界面 点击 \u0026ldquo;镜像管理\u0026rdquo; 点击添加, 选择\u0026quot;镜像库下载\u0026quot; 在搜索框中输入Uptime\u003cbr\u003e\n\u003cimg alt=\"6.png\" loading=\"lazy\" src=\"/posts/uptime_kuma/images/3634615697.png\" title=\"6.png\"\u003e\u003cbr\u003e\n选择: louislam/uptime-kuma 下载, 然后等待提示下载成功\u003cbr\u003e\n下载时间取决于您的网络状况和磁盘速度\u003cbr\u003e\n\u003cimg alt=\"9.png\" loading=\"lazy\" src=\"/posts/uptime_kuma/images/483563110.png\" title=\"9.png\"\u003e\u003c/p\u003e","tags":["ikuairouter","ping监控","uptime","ikuai","爱快路由","router","运维"],"title":"使用iKuai的Docker 安装Uptime 监控网络状况并设置通知提醒"},{"categories":["today_i_learned"],"content":"缘由 因为11月份是快递量比较大时候，会有有很多快递单需要查询快递状态；之前是因为单量少，每一个单每一个单去baidu 直接看百度查询到的结果。这两个月由于快递单特别多，于是就打算用Python 结合快递100的API 来查询快递状态\n代码 快递100 API 实时查询状态\n# coding = utf-8 import hashlib import json import requests class KuaiDi100: def __init__(self): self.key = \u0026#39;\u0026#39; # TODO 客户授权key self.customer = \u0026#39;\u0026#39; # TODO 查询公司编号 self.url = \u0026#39;https://poll.kuaidi100.com/poll/query.do\u0026#39; # 请求地址 def track(self, com, num, phone, ship_from, ship_to): \u0026#34;\u0026#34;\u0026#34; 物流轨迹实时查询 :param com: 查询的快递公司的编码，一律用小写字母 :param num: 查询的快递单号，单号的最大长度是32个字符 :param phone: 收件人或寄件人的手机号或固话（也可以填写后四位，如果是固话，请不要上传分机号） :param ship_from: 出发地城市，省-市-区，非必填，填了有助于提升签收状态的判断的准确率，请尽量提供 :param ship_to: 目的地城市，省-市-区，非必填，填了有助于提升签收状态的判断的准确率，且到达目的地后会加大监控频率，请尽量提供 :return: requests.Response.text \u0026#34;\u0026#34;\u0026#34; param = { \u0026#39;com\u0026#39;: com, \u0026#39;num\u0026#39;: num, \u0026#39;phone\u0026#39;: phone, \u0026#39;from\u0026#39;: ship_from, \u0026#39;to\u0026#39;: ship_to, \u0026#39;resultv2\u0026#39;: \u0026#39;1\u0026#39;, # 添加此字段表示开通行政区域解析功能。0：关闭（默认），1：开通行政区域解析功能，2：开通行政解析功能并且返回出发、目的及当前城市信息 \u0026#39;show\u0026#39;: \u0026#39;0\u0026#39;, # 返回数据格式。0：json（默认），1：xml，2：html，3：text \u0026#39;order\u0026#39;: \u0026#39;desc\u0026#39; # 返回结果排序方式。desc：降序（默认），asc：升序 } param_str = json.dumps(param) # 转json字符串 # 签名加密， 用于验证身份， 按param + key + customer 的顺序进行MD5加密（注意加密后字符串要转大写）， 不需要“+”号 temp_sign = param_str + self.key + self.customer md = hashlib.md5() md.update(temp_sign.encode()) sign = md.hexdigest().upper() request_data = {\u0026#39;customer\u0026#39;: self.customer, \u0026#39;param\u0026#39;: param_str, \u0026#39;sign\u0026#39;: sign} return requests.post(self.url, request_data).text # 发送请求 result = KuaiDi100().track(\u0026#39;yuantong\u0026#39;, \u0026#39;YT9693083639795\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;广东省江门市\u0026#39;, \u0026#39;广东省深圳市\u0026#39;) print(result)接口文档\nhttps://api.kuaidi100.com/document/5f0ffb5ebc8da837cbd8aefc\n导入快递单和填写结果 # coding = utf-8 import openpyxl from openpyxl import Workbook from kuaidi1000_function import KuaiDi100 import json import time wb = Workbook() ws = wb.active # 定义表头 title = [\u0026#39;客户名称\u0026#39;,\u0026#39;快递单号\u0026#39;,\u0026#39;快递状态\u0026#39;,\u0026#39;最后更新时间\u0026#39;,\u0026#39;快递开始时间\u0026#39;,\u0026#39;详情\u0026#39;,\u0026#39;时效/天\u0026#39;] ws.append(title) start_time = time.time() #读取excel表格 customer_file_path = \u0026#39;F:/EXCEL/info/Customer.xlsx\u0026#39; customer_workbook = openpyxl.load_workbook(customer_file_path) # 获取工作表的Sheet customer_sheet = customer_workbook[\u0026#39;海运SEA\u0026#39;] sheet = customer_sheet.title #顺丰快递需要手机号验证 air = 2699 sea = 8166 phone = \u0026#39;\u0026#39; #判断当前表格是否海运还是空运并赋值给phone if sheet == \u0026#39;海运SEA\u0026#39;: phone = sea else: phone = air # 获取Customer.xlsx中A2:A100列的所有客户名字和B2:B100列的相对应的快递单号 customer_names =[(customer_sheet.cell(row=i, column=1).value) for i in range(2,100)] express_numbers = [(customer_sheet.cell(row=i, column=2).value) for i in range(2,100)] # 将快递单号使用for循环查询快递状态 ，并append 到 infomation_first中 for express_number, customer_name in zip(express_numbers,customer_names): response = KuaiDi100().track(\u0026#39;\u0026#39;,express_number,phone,\u0026#39;\u0026#39;,\u0026#39;\u0026#39;) #定义获取到的数据 api_data = json.loads(response) #判断数据是否存在 if \u0026#39;data\u0026#39; in api_data and api_data[\u0026#39;data\u0026#39;]: last_data = api_data[\u0026#39;data\u0026#39;][-1] #取最末尾的数据 first_data = api_data[\u0026#39;data\u0026#39;][0] #取最前面的数据 #imfromation_last = [] 最末尾的数据[] infomation_first = [customer_name,express_number, first_data[\u0026#39;status\u0026#39;], first_data[\u0026#39;time\u0026#39;], last_data[\u0026#39;time\u0026#39;], first_data[\u0026#39;context\u0026#39;] ] ws.append(infomation_first) else: break #在G栏 填入Excel 函数来计算时效 天数为单位 for row in range(2,ws.max_row + 1): formula = f\u0026#39;=DATEDIF(E{row},D{row},\u0026#34;D\u0026#34;)\u0026#39; ws[f\u0026#39;G{row}\u0026#39;] = formula # #格式化日期和时间 formatted_time = time.strftime(\u0026#34;%H_%M_%S\u0026#34;, time.localtime(time.time())) formatted_date = time.strftime(\u0026#34;%Y_%m_%d\u0026#34;, time.localtime(time.time())) #定义 文件路径和文件名 output_path = \u0026#39;F:/EXCEL/output/快递更新状态\u0026#39;+formatted_date+\u0026#34;_\u0026#34;+formatted_time+\u0026#39;.xlsx\u0026#39; #保存文件 wb.save(output_path) end_time = time.time() total_time = end_time - start_time print(f\u0026#34;执行程序所花时间为: {total_time}\u0026#34;) print(\u0026#39;=====Done====\u0026#39;)结果演示 ","permalink":"https://www.dukehsu.com/posts/pythonandexcel.html","summary":"\u003ch3 id=\"缘由\"\u003e缘由\u003c/h3\u003e\n\u003cp\u003e因为11月份是快递量比较大时候，会有有很多快递单需要查询快递状态；之前是因为单量少，每一个单每一个单去baidu 直接看百度查询到的结果。这两个月由于快递单特别多，于是就打算用Python 结合快递100的API 来查询快递状态\u003c/p\u003e\n\u003ch3 id=\"代码\"\u003e代码\u003c/h3\u003e\n\u003ch4 id=\"快递100-api\"\u003e快递100 API\u003c/h4\u003e\n\u003cp\u003e\u003cstrong\u003e实时查询状态\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# coding = utf-8\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003ehashlib\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003ejson\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003erequests\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003eKuaiDi100\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003edef\u003c/span\u003e \u003cspan class=\"fm\"\u003e__init__\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"p\"\u003e):\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;\u0026#39;\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# TODO 客户授权key\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecustomer\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;\u0026#39;\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# TODO 查询公司编号\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;https://poll.kuaidi100.com/poll/query.do\u0026#39;\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# 请求地址\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003edef\u003c/span\u003e \u003cspan class=\"nf\"\u003etrack\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ecom\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003enum\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ephone\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eship_from\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eship_to\u003c/span\u003e\u003cspan class=\"p\"\u003e):\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        物流轨迹实时查询\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        :param com: 查询的快递公司的编码，一律用小写字母\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        :param num: 查询的快递单号，单号的最大长度是32个字符\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        :param phone: 收件人或寄件人的手机号或固话（也可以填写后四位，如果是固话，请不要上传分机号）\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        :param ship_from: 出发地城市，省-市-区，非必填，填了有助于提升签收状态的判断的准确率，请尽量提供\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        :param ship_to: 目的地城市，省-市-区，非必填，填了有助于提升签收状态的判断的准确率，且到达目的地后会加大监控频率，请尽量提供\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        :return: requests.Response.text\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e        \u0026#34;\u0026#34;\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eparam\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;com\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003ecom\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;num\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003enum\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;phone\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003ephone\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;from\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eship_from\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;to\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eship_to\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;resultv2\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;1\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# 添加此字段表示开通行政区域解析功能。0：关闭（默认），1：开通行政区域解析功能，2：开通行政解析功能并且返回出发、目的及当前城市信息\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;show\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;0\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# 返回数据格式。0：json（默认），1：xml，2：html，3：text\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"s1\"\u003e\u0026#39;order\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;desc\u0026#39;\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# 返回结果排序方式。desc：降序（默认），asc：升序\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eparam_str\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003ejson\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003edumps\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# 转json字符串\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e# 签名加密， 用于验证身份， 按param + key + customer 的顺序进行MD5加密（注意加密后字符串要转大写）， 不需要“+”号\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003etemp_sign\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparam_str\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecustomer\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003emd\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003ehashlib\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003emd5\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003emd\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eupdate\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etemp_sign\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eencode\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003esign\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003emd\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ehexdigest\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eupper\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003erequest_data\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;customer\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecustomer\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;param\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eparam_str\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;sign\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003esign\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003erequests\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"bp\"\u003eself\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003erequest_data\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etext\u003c/span\u003e  \u003cspan class=\"c1\"\u003e# 发送请求\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eresult\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eKuaiDi100\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etrack\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;yuantong\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;YT9693083639795\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;广东省江门市\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;广东省深圳市\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eresult\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003e接口文档\u003c/strong\u003e\u003c/p\u003e","tags":["kuaidi100","python","快递100api","批量查询快递"],"title":"Python 批量查询快递单号，并将查询结果填入Excel中"},{"categories":["today_i_learned"],"content":"\n缘由 好久没给网吧维护了，最近给日本网吧维护的时候， 由于要在工作站开机启动之后执行一些初始化程序，要用到一个延迟启动程序。（程序是前辈写的，帮了很多忙。鞠躬）\n但是在日本语系统下无法正常运行\n报错如下：\n如果要解决该错误，需要在区域选项中，将程式区域改为中国即可。如此一来会产生一个新的问题， 某些程式会用区域来判断用户的location, 会导致一些软件无法正常运行。\n于是我依葫芦画瓢，手搓了一个能在日本语系统下正常运行的延迟启动工具\n功能和用法 简介\n该延迟启动工具的本体只有一个exe执行文件和ini配置文件 执行文件会读取ini文件中的配置，然后执行相关任务 配置文件说明\n配置文件包含TargetPath，FileExtensions，Timeout选项 TargetPath： 所需要执行的目录路径（绝对路径） FileExtenions: 需要执行的文件格式 Timeout: 延迟时间 毫秒为单位 用法\n在给工作站开超级时，将Hiderun.exe 添加到系统启动项 根据你自身需求，在配置文件中“config.ini”填写相对应的路径和文件格式，以及时间。 日志\n程序会在程序根目录生成log文件记录执行状态和报错，遇到问题可以在日志中查看明细。 程序执行演示 程序下载 解压密码： www.itiohub.com\nHideRun.zip\n源代码 using System; using System.IO; using System.Diagnostics; using System.Threading; using System.Runtime.ExceptionServices; class Program { static string logFilePath; static void Main() { // 在程序根目录生成日志文件 string logFilePath = GenerateLogFilePath(); CreateLogFile(logFilePath); // 隐藏自身窗口 IntPtr handle = Process.GetCurrentProcess().MainWindowHandle; ShowWindow(handle, SW_HIDE); LogToFile(logFilePath, \u0026#34;延迟启动工具 By 小四 www.itiohub.com\u0026#34;); // 读取配置文件 var configFile = \u0026#34;config.ini\u0026#34;; var config = ReadConfig(configFile); if (config != null) { // 获取配置信息 string targetPath = config[\u0026#34;TargetPath\u0026#34;]; string[] fileExtensions = config[\u0026#34;FileExtensions\u0026#34;].Split(\u0026#39;,\u0026#39;); int timeout = int.Parse(config[\u0026#34;Timeout\u0026#34;]); // 后台运行 RunInBackground(logFilePath, targetPath, fileExtensions, timeout); } else { LogToFile(logFilePath, \u0026#34;配置文件读取失败。 请检查配置文件config.ini是否存在\u0026#34;); } Thread.Sleep(5000); } //创建日志文件 static void CreateLogFile(string logFilePath) { try { using (StreamWriter sw = File.CreateText(logFilePath)) { sw.WriteLine(\u0026#34;程序启动时间: \u0026#34; + DateTime.Now.ToString(\u0026#34;yyyy-MM-dd HH:mm:ss\u0026#34;)); } } catch (Exception ex) { Console.WriteLine($\u0026#34;创建日志文件时发生错误: {ex.Message}\u0026#34;); } } //后台运行 static void RunInBackground(string logFilePath, string targetPath, string[] fileExtensions, int timeout) { try { // 在目标路径中查找并运行匹配的文件 foreach (var fileExtension in fileExtensions) { var files = Directory.GetFiles(targetPath, $\u0026#34;*.{fileExtension}\u0026#34;); foreach (var file in files) { LogToFile(logFilePath, $\u0026#34;运行文件: {file}\u0026#34;); var processStartInfo = new ProcessStartInfo(file); processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; var process = Process.Start(processStartInfo); if (process != null) { // 等待超时时间 if (!process.WaitForExit(timeout)) { LogToFile(logFilePath, $\u0026#34;文件 {file} 运行超时。\u0026#34;); } // 可以添加其他处理逻辑，例如记录日志等 } else { LogToFile(logFilePath, $\u0026#34;无法启动文件 {file}。\u0026#34;); } } } // 执行完所有文件后，延迟5秒并退出 LogToFile(logFilePath, \u0026#34;所有文件已执行，程序将在5秒后退出。\u0026#34;); Thread.Sleep(5000); } catch (Exception ex) { LogToFile(logFilePath, $\u0026#34;发生错误: {ex.Message}\u0026#34;); } } //读取配置文件 static IniConfig ReadConfig(string filePath) { try { var config = new IniConfig(); var lines = File.ReadAllLines(filePath); foreach (var line in lines) { var parts = line.Split(\u0026#39;=\u0026#39;); if (parts.Length == 2) { config.Add(parts[0].Trim(), parts[1].Trim()); } } return config; } catch (Exception ex) { LogToFile(logFilePath, $\u0026#34;读取配置文件时发生错误: {ex.Message}\u0026#34;); return null; } } //日志文件 static void LogToFile(string logFilePath, string message) { try { using (StreamWriter sw = File.AppendText(logFilePath)) { string logMessage = $\u0026#34;{DateTime.Now.ToString(\u0026#34;yyyy_MM_dd_HH_mm\u0026#34;)}: {message}\u0026#34;; Console.WriteLine(logMessage); sw.WriteLine(logMessage); } } catch (Exception ex) { Console.WriteLine($\u0026#34;写入日志文件时发生错误: {ex.Message}\u0026#34;); } } //日志文件名称generate static string GenerateLogFilePath() { string fileName = $\u0026#34;hiderun{DateTime.Now.ToString(\u0026#34;yyyy_MM_dd_HH_mm\u0026#34;)}.log\u0026#34;; return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); } [System.Runtime.InteropServices.DllImport(\u0026#34;user32.dll\u0026#34;)] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private const int SW_HIDE = 0; } //ini配置文件 ky value class IniConfig { private readonly System.Collections.Generic.Dictionary\u0026lt;string, string\u0026gt; config; public IniConfig() { config = new System.Collections.Generic.Dictionary\u0026lt;string, string\u0026gt;(); } public string this[string key] { get { return config.ContainsKey(key) ? config[key] : null; } } public void Add(string key, string value) { if (!config.ContainsKey(key)) { config.Add(key, value); } } }","permalink":"https://www.dukehsu.com/posts/hiderun.html","summary":"\u003cp\u003e\u003cimg alt=\"Image.jpg\" loading=\"lazy\" src=\"/posts/hiderun/images/3748064671.jpg\" title=\"Image.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"缘由\"\u003e缘由\u003c/h3\u003e\n\u003cp\u003e好久没给网吧维护了，最近给日本网吧维护的时候， 由于要在工作站开机启动之后执行一些初始化程序，要用到一个延迟启动程序。（程序是前辈写的，帮了很多忙。鞠躬）\u003cbr\u003e\n但是在日本语系统下无法正常运行\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e报错如下：\u003c/strong\u003e\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/hiderun/images/4185044155.png\"\u003e\u003cbr\u003e\n如果要解决该错误，需要在区域选项中，将程式区域改为中国即可。如此一来会产生一个新的问题， 某些程式会用区域来判断用户的location, 会导致一些软件无法正常运行。\u003c/p\u003e\n\u003cp\u003e于是我依葫芦画瓢，手搓了一个能在日本语系统下正常运行的延迟启动工具\u003c/p\u003e\n\u003ch3 id=\"功能和用法\"\u003e功能和用法\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e简介\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e该延迟启动工具的本体只有一个exe执行文件和ini配置文件\u003c/li\u003e\n\u003cli\u003e执行文件会读取ini文件中的配置，然后执行相关任务\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e配置文件说明\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e配置文件包含TargetPath，FileExtensions，Timeout选项\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTargetPath\u003c/strong\u003e： 所需要执行的目录路径（绝对路径）\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFileExtenions\u003c/strong\u003e: 需要执行的文件格式\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTimeout\u003c/strong\u003e: 延迟时间 毫秒为单位\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e用法\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e在给工作站开超级时，将Hiderun.exe 添加到系统启动项\u003c/li\u003e\n\u003cli\u003e根据你自身需求，在配置文件中“config.ini”填写相对应的路径和文件格式，以及时间。\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e日志\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e程序会在程序根目录生成log文件记录执行状态和报错，遇到问题可以在日志中查看明细。\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"程序执行演示\"\u003e程序执行演示\u003c/h3\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/hiderun/images/3052070011.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"程序下载\"\u003e程序下载\u003c/h3\u003e\n\u003cp\u003e解压密码： \u003ca href=\"https://www.itiohub.com\"\u003ewww.itiohub.com\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2023/12/2264728640.zip\"\u003eHideRun.zip\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"源代码\"\u003e源代码\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-csharp\" data-lang=\"csharp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem.IO\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem.Diagnostics\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem.Threading\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem.Runtime.ExceptionServices\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003eProgram\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eMain\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e// 在程序根目录生成日志文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eGenerateLogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eCreateLogFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e// 隐藏自身窗口\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eIntPtr\u003c/span\u003e \u003cspan class=\"n\"\u003ehandle\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eProcess\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eGetCurrentProcess\u003c/span\u003e\u003cspan class=\"p\"\u003e().\u003c/span\u003e\u003cspan class=\"n\"\u003eMainWindowHandle\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eShowWindow\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehandle\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eSW_HIDE\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;延迟启动工具 By 小四 www.itiohub.com\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e// 读取配置文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003econfigFile\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;config.ini\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eReadConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003econfigFile\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003econfig\u003c/span\u003e \u003cspan class=\"p\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enull\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e// 获取配置信息\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003etargetPath\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;TargetPath\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e];\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"n\"\u003efileExtensions\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;FileExtensions\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003eSplit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;,\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003etimeout\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eParse\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Timeout\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e// 后台运行\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eRunInBackground\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003etargetPath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003efileExtensions\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003etimeout\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eelse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;配置文件读取失败。 请检查配置文件config.ini是否存在\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eThread\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eSleep\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"m\"\u003e5000\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//创建日志文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eCreateLogFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003etry\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eStreamWriter\u003c/span\u003e \u003cspan class=\"n\"\u003esw\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eFile\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eCreateText\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003esw\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;程序启动时间: \u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eDateTime\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eNow\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;yyyy-MM-dd HH:mm:ss\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ecatch\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eException\u003c/span\u003e \u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e$\u0026#34;创建日志文件时发生错误: {ex.Message}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//后台运行\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eRunInBackground\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003etargetPath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"n\"\u003efileExtensions\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003etimeout\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003etry\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e// 在目标路径中查找并运行匹配的文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eforeach\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003efileExtension\u003c/span\u003e \u003cspan class=\"k\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003efileExtensions\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003efiles\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eDirectory\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eGetFiles\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etargetPath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;*.{fileExtension}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"k\"\u003eforeach\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003efile\u003c/span\u003e \u003cspan class=\"k\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003efiles\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;运行文件: {file}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003eprocessStartInfo\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eProcessStartInfo\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efile\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"n\"\u003eprocessStartInfo\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWindowStyle\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eProcessWindowStyle\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHidden\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003eprocess\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eProcess\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eStart\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eprocessStartInfo\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eprocess\u003c/span\u003e \u003cspan class=\"p\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enull\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                        \u003cspan class=\"c1\"\u003e// 等待超时时间\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(!\u003c/span\u003e\u003cspan class=\"n\"\u003eprocess\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWaitForExit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etimeout\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                            \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;文件 {file} 运行超时。\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                        \u003cspan class=\"c1\"\u003e// 可以添加其他处理逻辑，例如记录日志等\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"k\"\u003eelse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                        \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;无法启动文件 {file}。\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e// 执行完所有文件后，延迟5秒并退出\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;所有文件已执行，程序将在5秒后退出。\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eThread\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eSleep\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"m\"\u003e5000\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ecatch\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eException\u003c/span\u003e \u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;发生错误: {ex.Message}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//读取配置文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"n\"\u003eIniConfig\u003c/span\u003e \u003cspan class=\"n\"\u003eReadConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003efilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003etry\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eIniConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003elines\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eFile\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadAllLines\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eforeach\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003eline\u003c/span\u003e \u003cspan class=\"k\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003elines\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003eparts\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eline\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eSplit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;=\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparts\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLength\u003c/span\u003e \u003cspan class=\"p\"\u003e==\u003c/span\u003e \u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                    \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eAdd\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparts\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"m\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003eTrim\u003c/span\u003e\u003cspan class=\"p\"\u003e(),\u003c/span\u003e \u003cspan class=\"n\"\u003eparts\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003eTrim\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ecatch\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eException\u003c/span\u003e \u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;读取配置文件时发生错误: {ex.Message}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"kc\"\u003enull\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//日志文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eLogToFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003etry\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eStreamWriter\u003c/span\u003e \u003cspan class=\"n\"\u003esw\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eFile\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eAppendText\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003elogMessage\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;{DateTime.Now.ToString(\u0026#34;\u003c/span\u003e\u003cspan class=\"n\"\u003eyyyy_MM_dd_HH_mm\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;)}: {message}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogMessage\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003esw\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elogMessage\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ecatch\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eException\u003c/span\u003e \u003cspan class=\"n\"\u003eex\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e$\u0026#34;写入日志文件时发生错误: {ex.Message}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//日志文件名称generate\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003eGenerateLogFilePath\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003efileName\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e$\u0026#34;hiderun{DateTime.Now.ToString(\u0026#34;\u003c/span\u003e\u003cspan class=\"n\"\u003eyyyy_MM_dd_HH_mm\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;)}.log\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003ePath\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eCombine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eAppDomain\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eCurrentDomain\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eBaseDirectory\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003efileName\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"na\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"na\"\u003e    [System.Runtime.InteropServices.DllImport(\u0026#34;user32.dll\u0026#34;)]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"kd\"\u003eextern\u003c/span\u003e \u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"n\"\u003eShowWindow\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eIntPtr\u003c/span\u003e \u003cspan class=\"n\"\u003ehWnd\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003enCmdShow\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"kd\"\u003econst\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eSW_HIDE\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"m\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e//ini配置文件 ky  value\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003eIniConfig\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"k\"\u003ereadonly\u003c/span\u003e \u003cspan class=\"n\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eCollections\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eGeneric\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eDictionary\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eIniConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003econfig\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eCollections\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eGeneric\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eDictionary\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eget\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eContainsKey\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e?\u003c/span\u003e \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"kc\"\u003enull\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eAdd\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"k\"\u003evalue\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(!\u003c/span\u003e\u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eContainsKey\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eAdd\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"k\"\u003evalue\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["c","c-练习","延迟启动","日本语网吧系统","源代码","网吧小工具","网吧工具"],"title":"网吧延迟启动工具以及源代码"},{"categories":["today_i_learned"],"content":"\nIntuduction 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?\nIn this article . I\u0026rsquo;m goinG to use python with IP GUIDE to check ipaddres information .This much better before.\nLet\u0026rsquo;s started Install Python found what version can be match your OS , download it and installl .\nhttps://www.python.org/downloads/\nInstall requests library website: https://pypi.org/project/requests/\n$ python -m pip install requests Code #import requests library import requests #get data from ip guide response = requests.get(f\u0026#39;https://ip.guide/\u0026#39;).json() #function get_ip def get_ip(): return response[\u0026#34;ip\u0026#34;] #function get_location def get_location(): location_data = { \u0026#34;Latitude\u0026#34;:response[\u0026#34;location\u0026#34;][\u0026#34;latitude\u0026#34;], \u0026#34;Longitude\u0026#34; : response[\u0026#34;location\u0026#34;][\u0026#34;longitude\u0026#34;], \u0026#34;City\u0026#34;: response[\u0026#34;location\u0026#34;][\u0026#34;city\u0026#34;], \u0026#34;Country\u0026#34;: response[\u0026#34;location\u0026#34;][\u0026#34;country\u0026#34;] } return location_data #function get_network def get_network(): network_data = { \u0026#34;Cidr\u0026#34;: response[\u0026#34;network\u0026#34;][\u0026#34;cidr\u0026#34;], \u0026#34;Host Start\u0026#34; : response[\u0026#34;network\u0026#34;][\u0026#34;hosts\u0026#34;][\u0026#34;start\u0026#34;], \u0026#34;Host end\u0026#34; : response[\u0026#34;network\u0026#34;][\u0026#34;hosts\u0026#34;][\u0026#34;end\u0026#34;] } return network_data #dictionary variable network_data = get_network() location_data = get_location() ipaddress = get_ip() # output information print(f\u0026#34;Your internet IPaddress is :{ipaddress}\\n and below is this IPaddress other informations\\n\u0026#34;) # for loop for key,value in network_data.items(): print(f\u0026#34;{key}: {value}\u0026#34;) print(\u0026#34; \\n\u0026#34;) for key,value in location_data.items(): print(f\u0026#34;{key}: {value}\u0026#34;) print(\u0026#34; \\n\u0026#34;)Refrence https://ip.guide/\nhttps://pypi.org/project/requests/\n","permalink":"https://www.dukehsu.com/posts/462.html","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/462/images/2048183383.png\"\u003e\u003c/p\u003e\n\u003ch2 id=\"intuduction\"\u003eIntuduction\u003c/h2\u003e\n\u003cp\u003eWhen 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?\u003c/p\u003e\n\u003cp\u003eIn this article . I\u0026rsquo;m goinG to use python with IP GUIDE to check ipaddres information .This much better before.\u003c/p\u003e\n\u003ch2 id=\"lets-started\"\u003eLet\u0026rsquo;s started\u003c/h2\u003e\n\u003ch3 id=\"install-python\"\u003eInstall Python\u003c/h3\u003e\n\u003cp\u003efound what version can be match your OS , download it and installl .\u003cbr\u003e\n\u003ca href=\"https://www.python.org/downloads/\"\u003ehttps://www.python.org/downloads/\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"install-requests-library\"\u003eInstall requests library\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ewebsite: \u003ca href=\"https://pypi.org/project/requests/\"\u003ehttps://pypi.org/project/requests/\u003c/a\u003e\u003cbr\u003e\n\u003ccode\u003e$ python -m pip install requests\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"code\"\u003eCode\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#import requests library\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003erequests\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#get data from ip guide\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eresponse\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003erequests\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sa\"\u003ef\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;https://ip.guide/\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ejson\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#function get_ip\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003edef\u003c/span\u003e \u003cspan class=\"nf\"\u003eget_ip\u003c/span\u003e\u003cspan class=\"p\"\u003e():\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;ip\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#function get_location\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003edef\u003c/span\u003e \u003cspan class=\"nf\"\u003eget_location\u003c/span\u003e\u003cspan class=\"p\"\u003e():\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003elocation_data\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;Latitude\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;location\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;latitude\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;Longitude\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;location\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;longitude\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;City\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;location\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;city\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;Country\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;location\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;country\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003elocation_data\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#function get_network\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003edef\u003c/span\u003e \u003cspan class=\"nf\"\u003eget_network\u003c/span\u003e\u003cspan class=\"p\"\u003e():\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003enetwork_data\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;Cidr\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;network\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;cidr\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;Host Start\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;network\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hosts\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;start\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"s2\"\u003e\u0026#34;Host end\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eresponse\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;network\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hosts\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;end\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003enetwork_data\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#dictionary variable\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003enetwork_data\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eget_network\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003elocation_data\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eget_location\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eipaddress\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eget_ip\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# output  information \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sa\"\u003ef\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Your internet IPaddress is :\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e\u003cspan class=\"n\"\u003eipaddress\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"se\"\u003e\\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e and below is this IPaddress other informations\u003c/span\u003e\u003cspan class=\"se\"\u003e\\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# for loop\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"n\"\u003evalue\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003enetwork_data\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eitems\u003c/span\u003e\u003cspan class=\"p\"\u003e():\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sa\"\u003ef\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e: \u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e\u003cspan class=\"n\"\u003evalue\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34; \u003c/span\u003e\u003cspan class=\"se\"\u003e\\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"n\"\u003evalue\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003elocation_data\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eitems\u003c/span\u003e\u003cspan class=\"p\"\u003e():\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sa\"\u003ef\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e\u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e: \u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e\u003cspan class=\"n\"\u003evalue\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34; \u003c/span\u003e\u003cspan class=\"se\"\u003e\\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"refrence\"\u003eRefrence\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://ip.guide/\"\u003ehttps://ip.guide/\u003c/a\u003e\u003c/p\u003e","tags":["coding","ipinformation","practice","python"],"title":"Coding Practice. Use an IP Guide retrieve your ip information"},{"categories":["today_i_learned"],"content":"小米盒子3 ADB 调试笔记 2025.06.19 更新 缘由 广告太多 偶尔卡住不动（hung up） 盒子内存只有4GB, RAM 只有800M 根据以上一些缘由，所以想通过ADB调试来删减一些无用的资源，扩充一些资源来装Kodi和Smart tube。\n准备工作 一条USB双公头的线 一个小米盒子3 型号为MZD-16-AA 一台笔记本 开始 打开盒子的ADB 调试模式 使用遥控器进入设置 关于 在“关于”选项中连续按“ok” 7次即可进入开发模式 在“設備名稱”中連續按多次“ok” 可開啟工廠模式 返回设置的 ”用户与安全“ 設置工廠模式功能 在 ”ADB调试“中将”关闭“调整为”开启“ USB 模式下的ADB 调试 下载SDK Platform tools SDK Platform tools 下载 Google USB driver Google USB driver 进入工具目录使用命令进行ADB调试 进入ADB 调试命令 $adb devices //显示设备 会以序列号开头在下方显示 （盒子会显示是否授权该电脑进行调试，请使用遥控器选择） $adb shell //进入shell 命令，到这里就可以通过命令去操作了 其它命令请见下方“常见命令” 网络模式下的ADB 调试 先决条件 盒子和其它调试电脑在同一局域网中 通过USB 模式下的ADB 调试，开启设备在5555端口监听 TCP/IP 连接 $adb tcpip 5555 通过局域网其它调试电脑进行连接 $adb connect 192.168.5.220 // 将地址改为盒子的IP地址即可。会默认连接目标地址的5555端口 其它命令请见下方的“常见命令” 常见命令 adb shell pm list packages -[option] 这个命令用于查看已经安装的应用并列出包名，后面添加不同选项可以输出不同信息。\nadb shell pm list packages adb shell pm list packages -d adb shell pm list packages -e adb shell pm list packages -s adb shell pm list packages -i adb shell pm list packages -u adb shell pm list packages -f adb shell pm list packages -3 adb shell pm list packages -[option] \u0026#34;sina\u0026#34; pm uninstall -k --user 0 \u0026lt;包名\u0026gt;总结 小米并没有因为删除了相关的小米包之后就老实了。重启设备之后还是一如既往地推送一些垃圾信息。不想折腾了，目前已经能够接受，装好 Kodi 看 4K《West World》不卡，69￥咸鱼收的也不亏。\n参考 Android Debug Bridge (adb) ADB useful commands list Awesome ADB——一份超全超详细的 ADB 用法大全 ADB Android Device Unauthorized 解决 adb 网络连接中出现“由于目标计算机积极拒绝，无法连接”的错误 ","permalink":"https://www.dukehsu.com/posts/459.html","summary":"\u003ch2 id=\"小米盒子3-adb-调试笔记-20250619-更新\"\u003e小米盒子3 ADB 调试笔记 2025.06.19 更新\u003c/h2\u003e\n\u003ch3 id=\"缘由\"\u003e缘由\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e广告太多\u003c/li\u003e\n\u003cli\u003e偶尔卡住不动（hung up）\u003c/li\u003e\n\u003cli\u003e盒子内存只有4GB, RAM 只有800M\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e根据以上一些缘由，所以想通过ADB调试来删减一些无用的资源，扩充一些资源来装Kodi和Smart tube。\u003c/p\u003e\n\u003ch3 id=\"准备工作\"\u003e准备工作\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e一条USB双公头的线\u003c/li\u003e\n\u003cli\u003e一个小米盒子3 型号为MZD-16-AA\u003c/li\u003e\n\u003cli\u003e一台笔记本\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"开始\"\u003e开始\u003c/h3\u003e\n\u003ch4 id=\"打开盒子的adb-调试模式\"\u003e打开盒子的ADB 调试模式\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e使用遥控器进入设置\u003c/li\u003e\n\u003cli\u003e关于\u003c/li\u003e\n\u003cli\u003e在“关于”选项中连续按“ok” 7次即可进入开发模式\u003c/li\u003e\n\u003cli\u003e在“設備名稱”中連續按多次“ok” 可開啟工廠模式\u003c/li\u003e\n\u003cli\u003e返回设置的 ”用户与安全“\u003c/li\u003e\n\u003cli\u003e設置工廠模式功能\u003c/li\u003e\n\u003cli\u003e在 ”ADB调试“中将”关闭“调整为”开启“\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"usb-模式下的adb-调试\"\u003eUSB 模式下的ADB 调试\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e下载SDK Platform tools \u003ca href=\"https://developer.android.com/tools/releases/platform-tools\"\u003eSDK Platform tools\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e下载 Google USB driver \u003ca href=\"https://developer.android.com/studio/run/win-usb\"\u003eGoogle USB driver\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e进入工具目录使用命令进行ADB调试\u003c/li\u003e\n\u003cli\u003e进入ADB 调试命令\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e$adb devices\u003c/code\u003e\u003c/strong\u003e //显示设备 会以序列号开头在下方显示 （盒子会显示是否授权该电脑进行调试，请使用遥控器选择）\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e$adb shell\u003c/code\u003e\u003c/strong\u003e //进入shell 命令，到这里就可以通过命令去操作了\u003c/li\u003e\n\u003cli\u003e其它命令请见下方“常见命令”\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"网络模式下的adb-调试\"\u003e网络模式下的ADB 调试\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e先决条件\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e盒子和其它调试电脑在同一局域网中\u003c/li\u003e\n\u003cli\u003e通过USB 模式下的ADB 调试，开启设备在5555端口监听 TCP/IP 连接\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e$adb tcpip 5555\u003c/code\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e通过局域网其它调试电脑进行连接\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e$adb connect 192.168.5.220\u003c/code\u003e\u003c/strong\u003e // 将地址改为盒子的IP地址即可。会默认连接目标地址的5555端口\u003c/li\u003e\n\u003cli\u003e其它命令请见下方的“常见命令”\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"常见命令\"\u003e常见命令\u003c/h4\u003e\n\u003ch5 id=\"adb-shell-pm-list-packages--option\"\u003e\u003ccode\u003eadb shell pm list packages -[option]\u003c/code\u003e\u003c/h5\u003e\n\u003cp\u003e这个命令用于查看已经安装的应用并列出包名，后面添加不同选项可以输出不同信息。\u003c/p\u003e","tags":["androidtv","google","xiaomi","xiaomibox"],"title":"小米盒子3 ADB 调试笔记 - MZD-16-AA  debuging note"},{"categories":["today_i_learned"],"content":"当遇到这种菜单需要组合数据，然后导入到收银软件数据库的时候。 我们可以 使用**\u0026quot;\u0026amp;\u0026quot;**号来组合数据\n原表格数据如下 使用”\u0026amp;“符号组合数据 如下\n在N5单元格中输入以下内容，及可将I7，J7，J8的数据组合在N5. =I7\u0026amp;J7\u0026amp;J8\n使用“分列”功能拆分数据 根据ChatGPT生成翻译之后直接粘贴到表格的数据中如下\n这个时候我们就可以使用**\u0026ldquo;分列\u0026rdquo;**功能来处理数据\n一\n二\n三\n四 此时已经到最后一步， 可以根据自身需求选择。 如果不需要，点击完成即可。\n五 最终效果如下\n参考： 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\u0026amp;rs=en-US\u0026amp;ad=US\n","permalink":"https://www.dukehsu.com/posts/officesoftware.html","summary":"\u003cp\u003e当遇到这种菜单需要组合数据，然后导入到收银软件数据库的时候。 我们可以 使用**\u0026quot;\u0026amp;\u0026quot;**号来组合数据\u003c/p\u003e\n\u003ch3 id=\"原表格数据如下\"\u003e原表格数据如下\u003c/h3\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/3512929433.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"使用符号组合数据\"\u003e使用”\u0026amp;“符号组合数据\u003c/h3\u003e\n\u003cp\u003e如下\u003cbr\u003e\n在N5单元格中输入以下内容，及可将I7，J7，J8的数据组合在N5.\n\u003ccode\u003e=I7\u0026amp;J7\u0026amp;J8\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/646103391.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"使用分列功能拆分数据\"\u003e使用“分列”功能拆分数据\u003c/h3\u003e\n\u003cp\u003e根据ChatGPT生成翻译之后直接粘贴到表格的数据中如下\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/4203305910.png\"\u003e\u003c/p\u003e\n\u003cp\u003e这个时候我们就可以使用**\u0026ldquo;分列\u0026rdquo;**功能来处理数据\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e一\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/1286555283.png\"\u003e\u003c/li\u003e\n\u003cli\u003e二\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/2896041476.png\"\u003e\u003c/li\u003e\n\u003cli\u003e三\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/2613998011.png\"\u003e\u003c/li\u003e\n\u003cli\u003e四 此时已经到最后一步， 可以根据自身需求选择。 如果不需要，点击完成即可。\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/2487332793.png\"\u003e\u003c/li\u003e\n\u003cli\u003e五 最终效果如下\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/officesoftware/images/3384291016.png\"\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e参考： \u003ca 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\u0026amp;rs=en-US\u0026amp;ad=US\"\u003ehttps://support.microsoft.com/en-us/office/combine-text-from-two-or-more-cells-into-one-cell-81ba0946-ce78-42ed-b3c3-21340eb164a6?ui=en-US\u0026amp;rs=en-US\u0026amp;ad=US\u003c/a\u003e\u003c/p\u003e","tags":["excel","表格技巧"],"title":"Excel日常小技巧"},{"categories":["today_i_learned"],"content":"Using Python with the OpenWeathermap.org API 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.\nWhat You Need to Install and Obtain Python and the \u0026lsquo;requests\u0026rsquo; package Access to a Weather API Basic coding knowledge Install requests package $ python -m pip install requests #install package $ python -m pip show requests #display requests version\nWeather API Login to openWeathermap.org or register a new account .\nhttps://home.openweathermap.org/users/sign_in\nGet your API Key\nIn those images, the key is your API key from OpenWeatherMap.org\nCoding import datetime as dt import requests #api key api_key = \u0026#39;YOUR API KEY\u0026#39; # 温度转换 function def kelvin_to_celsius_fahrenheit(kelvin): celsius = kelvin - 273.15 fahrenheit = celsius * (9/5) +32 return celsius, fahrenheit #等待用户输入城市名称 location = input(\u0026#39;Please enter a city name: \u0026#39;) #请求 base_url = \u0026#39;https://api.openweathermap.org/data/2.5/weather?\u0026#39; url = base_url + \u0026#39;appid=\u0026#39; + api_key + \u0026#39;\u0026amp;q=\u0026#39; + location #获取API结果（数据） response = requests.get(url).json() # print(response) # check API information #取数据中的值（字典） temp_kelvin = response[\u0026#39;main\u0026#39;][\u0026#39;temp\u0026#39;] temp_celsius, temp_fahrenheit = kelvin_to_celsius_fahrenheit(temp_kelvin) feels_like_kelvin = response[\u0026#39;main\u0026#39;][\u0026#39;feels_like\u0026#39;] feels_like_celsius, feels_like_fahrenheit = kelvin_to_celsius_fahrenheit(feels_like_kelvin) wind_speed = response[\u0026#39;wind\u0026#39;][\u0026#39;speed\u0026#39;] humidity = response[\u0026#39;main\u0026#39;][\u0026#39;humidity\u0026#39;] description = response[\u0026#39;weather\u0026#39;][0][\u0026#39;description\u0026#39;] sunrise_time = dt.datetime.utcfromtimestamp(response[\u0026#39;sys\u0026#39;][\u0026#39;sunrise\u0026#39;]+response[\u0026#39;timezone\u0026#39;]) sunset_time = dt.datetime.utcfromtimestamp(response[\u0026#39;sys\u0026#39;][\u0026#39;sunset\u0026#39;]+response[\u0026#39;timezone\u0026#39;]) country = response[\u0026#39;sys\u0026#39;][\u0026#39;country\u0026#39;] #formart and print information print(f\u0026#39;Temperature in {location}: {temp_celsius:.2f}°C or {temp_fahrenheit}°F\u0026#39;) print(f\u0026#39;Feels like in {location}: {feels_like_celsius:.2f}°C or {feels_like_fahrenheit}°F\u0026#39;) print(f\u0026#39;Wind speed in {location}: {wind_speed}m/s\u0026#39;) print(f\u0026#39;Humidity in {location}: {humidity}%\u0026#39;) print(f\u0026#39;The weather in {location}: {description}\u0026#39;) print(f\u0026#39;Sunrise time in {location}: {sunrise_time}\u0026#39;) print(f\u0026#39;Sunset time in {location}: {sunset_time}\u0026#39;) print(f\u0026#39;Country: {country}\u0026#39;)Output Reference：\nhttps://www.youtube.com/watch?v=9P5MY2i7K8\n","permalink":"https://www.dukehsu.com/posts/pythonwithapi.html","summary":"\u003ch2 id=\"using-python-with-the-openweathermaporg-api\"\u003eUsing Python with the OpenWeathermap.org API\u003c/h2\u003e\n\u003cp\u003eIn 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.\u003c/p\u003e\n\u003ch2 id=\"what-you-need-to-install-and-obtain\"\u003eWhat You Need to Install and Obtain\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython and the \u0026lsquo;requests\u0026rsquo; package\u003c/li\u003e\n\u003cli\u003eAccess to a Weather API\u003c/li\u003e\n\u003cli\u003eBasic coding knowledge\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"install-requests-package\"\u003eInstall requests package\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ python -m pip install requests  #install package\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ python -m pip show requests #display requests version\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"image-20230927111555155.png\" loading=\"lazy\" src=\"/posts/pythonwithapi/images/4088264047.png\" title=\"image-20230927111555155.png\"\u003e\u003c/p\u003e","tags":["api","python","weather"],"title":"Using Python with the OpenWeather.org AP"},{"categories":["today_i_learned"],"content":"解決辦法 进入discuz的安装目录，找到 ./uc_server/data/config.inc.php 文件\n可以通过FTP连接服务器，或者直接登录服务器操作\n使用下列两行替换 config.inc.php 文件中 UC_FOUNDERPW 和 UC_FOUNDERSALT 两行配置\n这两行代表的是加密后的 UCenter 密码，这里的密码是 Discuz@2019\ndefine(\u0026#39;UC_FOUNDERPW\u0026#39;, \u0026#39;6a8d7f5a1cc2a62ca6550adf2f1f421f\u0026#39;); define(\u0026#39;UC_FOUNDERSALT\u0026#39;, \u0026#39;208491\u0026#39;);复制\n刷新登录页面，再次输入重置后的 Discuz@2019 密码进行登录，已经可以成功登陆至 UCenter 后台\n成功登陆后，就可以在后台直接修改密码了\n来源： https://cloud.tencent.com/developer/article/1605905\n","permalink":"https://www.dukehsu.com/posts/discuzucpasswordchange.html","summary":"\u003ch2 id=\"解決辦法\"\u003e解決辦法\u003c/h2\u003e\n\u003cp\u003e进入discuz的安装目录，找到 \u003ccode\u003e./uc_server/data/config.inc.php\u003c/code\u003e 文件\u003cbr\u003e\n可以通过FTP连接服务器，或者直接登录服务器操作\u003c/p\u003e\n\u003cp\u003e使用下列两行替换 \u003ccode\u003econfig.inc.php\u003c/code\u003e 文件中 UC_FOUNDERPW 和 UC_FOUNDERSALT 两行配置\u003cbr\u003e\n这两行代表的是加密后的 UCenter 密码，这里的密码是 \u003ccode\u003eDiscuz@2019\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edefine(\u0026#39;UC_FOUNDERPW\u0026#39;, \u0026#39;6a8d7f5a1cc2a62ca6550adf2f1f421f\u0026#39;);\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edefine(\u0026#39;UC_FOUNDERSALT\u0026#39;, \u0026#39;208491\u0026#39;);\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e复制\u003cbr\u003e\n刷新登录页面，再次输入重置后的 Discuz@2019 密码进行登录，已经可以成功登陆至 UCenter 后台\u003c/p\u003e\n\u003cp\u003e成功登陆后，就可以在后台直接修改密码了\u003c/p\u003e\n\u003ch2 id=\"来源\"\u003e来源：\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://cloud.tencent.com/developer/article/1605905\"\u003ehttps://cloud.tencent.com/developer/article/1605905\u003c/a\u003e\u003c/p\u003e","tags":["discuz-x3-4","discuz密码"],"title":"修改Discuz 中 UC center的创始人密码"},{"categories":["today_i_learned"],"content":"为什么要关闭Windows更新 微软有时候推送的更新会导致系统奔溃 影响正常工作、资料丢失 会有漏洞 更新失败导致的各种问题 关闭Windows更新之后会有什么影响 无法自动更新驱动程式 微软应用商店无法正常使用，微软商店的app 无法正常更新 无法自动更新.Net 运行库 我已经在设置里面关闭了自动更新， 它有效吗？ 无用，Windows 的贴心服务会为你再次开启 如何彻底关闭Windows更新？ 正常情况下 在系统设置、服务管理、注册表中设置好Windows的自动更新之后即可 在这里推荐使用sordum的 wub 软件的简单操作来实现一键关闭，而且永久有效哦。\n复制下方链接到浏览器即可自动下载wub， 解压之后即可直接使用。\nhttps://www.sordum.org/downloads/?st-windows-update-blocker\n","permalink":"https://www.dukehsu.com/posts/windowsupdateblock.html","summary":"\u003ch3 id=\"为什么要关闭windows更新\"\u003e为什么要关闭Windows更新\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e微软有时候推送的更新会导致系统奔溃\u003c/li\u003e\n\u003cli\u003e影响正常工作、资料丢失\u003c/li\u003e\n\u003cli\u003e会有漏洞\u003c/li\u003e\n\u003cli\u003e更新失败导致的各种问题\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"关闭windows更新之后会有什么影响\"\u003e关闭Windows更新之后会有什么影响\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e无法自动更新驱动程式\u003c/li\u003e\n\u003cli\u003e微软应用商店无法正常使用，微软商店的app 无法正常更新\u003c/li\u003e\n\u003cli\u003e无法自动更新.Net 运行库\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"我已经在设置里面关闭了自动更新-它有效吗\"\u003e我已经在设置里面关闭了自动更新， 它有效吗？\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e无用，Windows 的贴心服务会为你再次开启\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"如何彻底关闭windows更新\"\u003e如何彻底关闭Windows更新？\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e正常情况下 在系统设置、服务管理、注册表中设置好Windows的自动更新之后即可\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e在这里推荐使用sordum的 wub 软件的简单操作来实现一键关闭，而且永久有效哦。\u003c/p\u003e\n\u003cp\u003e复制下方链接到浏览器即可自动下载wub， 解压之后即可直接使用。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.sordum.org/downloads/?st-windows-update-blocker\"\u003ehttps://www.sordum.org/downloads/?st-windows-update-blocker\u003c/a\u003e\u003c/p\u003e","tags":["updateblock","windowsblock","windowsupdate","wub","禁止windows自动更新"],"title":"有效的关闭Windows操作系统的更新"},{"categories":["today_i_learned"],"content":"ReIcon 一款桌面图标整理和布局软件 软件介绍 Reicon是便携式免费软件，使您能够保存和还原桌面布局。 如果您经常更改屏幕分辨率（例如，玩游戏或使用需要特定分辨率的应用程序），则您可能会熟悉桌面图标的问题，因为您切换回正常的分辨率后会陷入混乱。 Reicon通过允许您保存桌面布局来解决此问题，然后单击按钮（或使用右键单击上下文菜单）还原它。\nReicon非常易于使用。 设置您的图标，按照您喜欢它们的方式，保存布局，然后在需要时稍后还原该布局。\n如何使用 GUI操作\n将你想要的图标位置摆至你想要的坐标 点开Reicon程序，将布局保存好 选择你想要恢复的布局 ，在布局列表中鼠标右键选择恢复即可 命令行使用\nReicon还支持命令行操作 以下是命令操作指南\nUsage: \u0026lt;command\u0026gt; [\u0026lt;additional commands\u0026gt;] Commands: /S : Save desktop icons layout /R : Restore desktop icon layout /File : Icon layout file location /ID : Desktop icon layout ID or order /Name : Desktop icon layout name Examples: ReIcon_x64.exe /S ReIcon_x64.exe /S /File C:\\Test.ini /Name New icon layout /ID abc ReIcon_x64.exe /R ReIcon_x64.exe /R /ID abc ReIcon_x64.exe /R /ID 1 ReIcon_x64.exe /R /File C:\\Test.ini /ID abc 以下批处理示例了使用Reicon命令行恢复图标布局\nD:\\ReIcon\\ReIcon\\ReIcon_x64.exe /R /ID nmj更多用法可以参考软件官方说明:\nhttps://www.sordum.org/8366/reicon-v2-0-restore-desktop-icon-layouts/\n参考 https://www.sordum.org/8366/reicon-v2-0-restore-desktop-icon-layouts/\n","permalink":"https://www.dukehsu.com/posts/419.html","summary":"\u003ch2 id=\"reicon-一款桌面图标整理和布局软件\"\u003eReIcon 一款桌面图标整理和布局软件\u003c/h2\u003e\n\u003ch3 id=\"软件介绍\"\u003e软件介绍\u003c/h3\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/419/images/2139886198.png\"\u003e\u003cbr\u003e\nReicon是便携式免费软件，使您能够保存和还原桌面布局。 如果您经常更改屏幕分辨率（例如，玩游戏或使用需要特定分辨率的应用程序），则您可能会熟悉桌面图标的问题，因为您切换回正常的分辨率后会陷入混乱。 Reicon通过允许您保存桌面布局来解决此问题，然后单击按钮（或使用右键单击上下文菜单）还原它。\u003c/p\u003e\n\u003cp\u003eReicon非常易于使用。 设置您的图标，按照您喜欢它们的方式，保存布局，然后在需要时稍后还原该布局。\u003c/p\u003e\n\u003ch3 id=\"如何使用\"\u003e如何使用\u003c/h3\u003e\n\u003cp\u003eGUI操作\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e将你想要的图标位置摆至你想要的坐标\u003c/li\u003e\n\u003cli\u003e点开Reicon程序，将布局保存好\u003c/li\u003e\n\u003cli\u003e选择你想要恢复的布局 ，在布局列表中鼠标右键选择恢复即可\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e命令行使用\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eReicon还支持命令行操作 以下是命令操作指南\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Usage: \u0026lt;command\u0026gt; [\u0026lt;additional commands\u0026gt;]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Commands: \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  /S    : Save desktop icons layout\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  /R    : Restore desktop icon layout\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  /File : Icon layout file location\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  /ID   : Desktop icon layout ID or order\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  /Name : Desktop icon layout name\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Examples:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ReIcon_x64.exe /S\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ReIcon_x64.exe /S /File C:\\Test.ini /Name New icon layout /ID abc\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ReIcon_x64.exe /R\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ReIcon_x64.exe /R /ID abc\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ReIcon_x64.exe /R /ID 1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ReIcon_x64.exe /R /File C:\\Test.ini /ID abc\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e以下批处理示例了使用Reicon命令行恢复图标布局\u003c/p\u003e","tags":["windows","图标同步","桌面图标","桌面图标自定义同步工具","网吧桌面图标","newsletter"],"title":"ReIcon 一款桌面图标整理和布局软件"},{"categories":["today_i_learned"],"content":"Windows11 基本设置 Windows11 鼠标右键显示更多选项 以管理员权限运行终端 在终端中输入以下内容 回车 系统会提示操作完成 reg.exe add \u0026#34;HKCU\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32\u0026#34; /f /ve\n操作完成之后重启exporer进程即可 Windwos11 安装系统跳过联机账户登录 安装Windows 11时 将设备离线 按住Shift+F10 呼出终端界面 在终端界面中输入一下内容 然后回车 oobe\\BypassNRO.cmd\n设备会自动重启，重启完成之后即可 ","permalink":"https://www.dukehsu.com/posts/windows11.html","summary":"\u003ch3 id=\"windows11-基本设置\"\u003eWindows11 基本设置\u003c/h3\u003e\n\u003ch5 id=\"windows11-鼠标右键显示更多选项\"\u003eWindows11 鼠标右键显示更多选项\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e以管理员权限运行终端\u003c/li\u003e\n\u003cli\u003e在终端中输入以下内容 回车 系统会提示操作完成\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ereg.exe add \u003cspan class=\"s2\"\u003e\u0026#34;HKCU\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32\u0026#34;\u003c/span\u003e /f /ve\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"image-20230224212117490.png\" loading=\"lazy\" src=\"/posts/windows11/images/3860960130.png\" title=\"image-20230224212117490.png\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e操作完成之后重启exporer进程即可\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5 id=\"windwos11-安装系统跳过联机账户登录\"\u003eWindwos11 安装系统跳过联机账户登录\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e安装Windows 11时 将设备离线\u003c/li\u003e\n\u003cli\u003e按住\u003ccode\u003eShift\u003c/code\u003e+\u003ccode\u003eF10\u003c/code\u003e 呼出终端界面 在终端界面中输入一下内容 然后回车\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eoobe\\BypassNRO.cmd\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"image-20230224212154509.png\" loading=\"lazy\" src=\"/posts/windows11/images/3197818211.png\" title=\"image-20230224212154509.png\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e设备会自动重启，重启完成之后即可\u003c/li\u003e\n\u003c/ul\u003e","tags":["windows11","注册表"],"title":"Get the Old Right Click Menu Back in Windows 11"},{"categories":["today_i_learned"],"content":"CUP 安装笔记 CUP 介绍 CUPS 是Apple inc 开源的打印服务 ,你可以将它部署在您的局域网内，将打印机接入该服务器，其它工作站可以通过局域网来访问打印机。\nOfficial website:\nhttp://www.cups.org/index.html\nGithub page:\nhttps://github.com/apple/cups\nCUPS支持局域网内打印服务共享,无需再繁琐的设置打印机共享了，并且还能将老打印机也接入局域网。同时还支持mac os， linux，windows，安卓以及ios air print；\n笔记概要 Linux服务器版本 Ubuntu 18.4 下载并安装CUP CUP配置修改 使用WEB GUI 添加打印机 通过局域网访问打印机 配置文件说明 下载安装 sudo apt-get install cups cups-pdf cups-bsd #下载安装CUP 配置修改 sudo cp /etc/cups/cupsd.conf cupsd.conf.bak #备份配置文件 sudo nano /etc/cups/cupsd.conf #修改配置文件# # Configuration file for the CUPS scheduler. See \u0026#34;man cupsd.conf\u0026#34; for a # complete description of this file. # # Log general information in error_log - change \u0026#34;warn\u0026#34; to \u0026#34;debug\u0026#34; # for troubleshooting... LogLevel warn PageLogFormat # Deactivate CUPS\u0026#39; internal logrotating, as we provide a better one, especially # LogLevel debug2 gets usable now MaxLogSize 0 # Only listen for connections from the local machine. Listen 631 #更改监听端口 Listen /run/cups/cups.sock # Show shared printers on the local network. Browsing on #打开局域网发现打印机 BrowseLocalProtocols dnssd # Default authentication type, when authentication is required... DefaultAuthType Basic # Web interface setting... WebInterface Yes # Restrict access to the server... \u0026lt;Location /\u0026gt; #Order allow,deny Allow @LOCAL #允许LOCAL \u0026lt;/Location\u0026gt; # Restrict access to the admin pages... \u0026lt;Location /admin\u0026gt; #Order allow,deny Allow @LOCAL #同上 \u0026lt;/Location\u0026gt; # Restrict access to configuration files... \u0026lt;Location /admin/conf\u0026gt; #AuthType Default # Require user @SYSTEM #Order allow,deny Allow @LOCAL \u0026lt;/Location\u0026gt; # Restrict access to log files... \u0026lt;Location /admin/log\u0026gt; #AuthType Default #Require user @SYSTEM #Order allow,deny Allow @LOCAL \u0026lt;/Location\u0026gt;修改完配置之后重启服务\nsudo systemctl retsart cups #重启服务 sudo systemctl enable cups #设置开机启动到这里就可以使用局域网访问WEBGUI并添加打印机\n配置文件说明 MaxLogSize 2000000000 #最大日志，当日志文件超过此值时，开始循环 LogLevel info #需要记录的日志等级 SystemGroup sys root #CUPS的系统管理组名称 Listen localhost:631 #WEB管理监听的IP和端口号 Browsing On #允许客户端浏览打印机 BrowseOrder allow,deny #访问权限设置，deny列表取代allow BrowseAllow @LOCAL #除了以@LOCAL结尾的帐号外 DefaultAuthType Basic \u0026lt;Location /\u0026gt; #系统默认认证 Order allow,deny Allow localhost #只允许本机访问 \u0026lt;/Location\u0026gt; \u0026lt;Location /admin\u0026gt; #基于管理功能的访问认证 Encryption Required Order allow,deny Allow localhost #限制只允许本机访问 \u0026lt;/Location\u0026gt;","permalink":"https://www.dukehsu.com/posts/413.html","summary":"\u003ch2 id=\"cup-安装笔记\"\u003eCUP 安装笔记\u003c/h2\u003e\n\u003ch3 id=\"cup-介绍\"\u003eCUP 介绍\u003c/h3\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/413/images/4239048401.png\"\u003e\u003cbr\u003e\nCUPS 是Apple inc 开源的打印服务 ,你可以将它部署在您的局域网内，将打印机接入该服务器，其它工作站可以通过局域网来访问打印机。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOfficial website:\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"http://www.cups.org/index.html\"\u003ehttp://www.cups.org/index.html\u003c/a\u003e\u003cbr\u003e\n\u003cstrong\u003eGithub page:\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/apple/cups\"\u003ehttps://github.com/apple/cups\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eCUPS支持局域网内打印服务共享,无需再繁琐的设置打印机共享了，并且还能将老打印机也接入局域网。同时还支持mac os， linux，windows，安卓以及ios air print；\u003c/p\u003e\n\u003ch3 id=\"笔记概要\"\u003e笔记概要\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLinux服务器版本 Ubuntu 18.4\u003c/li\u003e\n\u003cli\u003e下载并安装CUP\u003c/li\u003e\n\u003cli\u003eCUP配置修改\u003c/li\u003e\n\u003cli\u003e使用WEB GUI 添加打印机\u003c/li\u003e\n\u003cli\u003e通过局域网访问打印机\u003c/li\u003e\n\u003cli\u003e配置文件说明\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"下载安装\"\u003e下载安装\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e sudo apt-get install cups cups-pdf cups-bsd \u003cspan class=\"c1\"\u003e#下载安装\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"cup-配置修改\"\u003eCUP 配置修改\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo cp /etc/cups/cupsd.conf  cupsd.conf.bak \u003cspan class=\"c1\"\u003e#备份配置文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo nano /etc/cups/cupsd.conf  \u003cspan class=\"c1\"\u003e#修改配置文件\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Configuration file for the CUPS scheduler.  See \u0026#34;man cupsd.conf\u0026#34; for a\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# complete description of this file.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Log general information in error_log - change \u0026#34;warn\u0026#34; to \u0026#34;debug\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# for troubleshooting...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eLogLevel warn\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ePageLogFormat\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Deactivate CUPS\u0026#39; internal logrotating, as we provide a better one, especially\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# LogLevel debug2 gets usable now\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eMaxLogSize \u003cspan class=\"m\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Only listen for connections from the local machine.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eListen \u003cspan class=\"m\"\u003e631\u003c/span\u003e  \u003cspan class=\"c1\"\u003e#更改监听端口\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eListen /run/cups/cups.sock\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Show shared printers on the local network.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eBrowsing on \u003cspan class=\"c1\"\u003e#打开局域网发现打印机\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eBrowseLocalProtocols dnssd\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Default authentication type, when authentication is required...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eDefaultAuthType Basic\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Web interface setting...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eWebInterface Yes\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to the server...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e#Order allow,deny\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL  \u003cspan class=\"c1\"\u003e#允许LOCAL \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;/Location\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to the admin pages...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /admin\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e#Order allow,deny\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL  \u003cspan class=\"c1\"\u003e#同上\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;/Location\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to configuration files...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /admin/conf\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e#AuthType Default\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e# Require user @SYSTEM\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e#Order allow,deny\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u0026lt;/Location\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Restrict access to log files...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;Location /admin/log\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e#AuthType Default\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e#Require user @SYSTEM\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e#Order allow,deny\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  Allow @LOCAL\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;/Location\u0026gt;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e修改完配置之后重启服务\u003c/p\u003e","tags":["apple","cups-instal","打印服务","打印机共享"],"title":"打印服务器cups安装笔记"},{"categories":["today_i_learned"],"content":"公有云安装Panabit 专业版 笔记 Release date: Dec 22,2022 Th .\nPanabit Version: R0.00[TANG(大唐)r3]，Build date 20221031.132102 [Linux 3.10]\nAuthor: Duke Hsu\n此笔记记录了使用单网卡轻量云服务器安装panabit的过程。\n准备工作 云服务器 操作系统： Centos 7.6 x64\n配置： 2C 8G 1 eth\nPanabit 材料 Panabit一键上传 云服务器工具（包含安装和解压 GUI.exe）\nPanabit专业版Linux安装包（LPanabitOEM_WUDAIr1_20201125_Linux3.tar.gz）\n云服务器的IP地址和密码\n云服务器需要开启SSH 端口和服务\n安装步骤 云服务器初始化 关闭防火墙\n#停止防火墙 systemctl stop firewalld #关闭开机自启动 systemctl disable firewalld检查网卡配置\n#打印IP地址信息 ifconfig #查看网卡详细信息(ifcfg-eth0为网卡名，有些不一样，视情况而定) cat /etc/sysconfig/network-scripts/ifcfg-eth0记录下来IP地址信息以备稍后做Panabit配置使用\nPanabit安装 使用GUI.exe 工具根据提示 将安装包上传到云服务器 全自动安装\n重启服务器之后即可使用web登入Panabit进行管理\n如果无法访问请检查管理口名称是否与云服务器网卡名不一致 如果提示安全问题，请使用低版本的chrome浏览器访问，比如360急速浏览器 Panabit 配置 网络接口配置 在\u0026lt;系统概况\u0026gt;将eth接口方向更改为接外\n在应用路由-接口线路-WAN线路 添加一个接口 如下图\n请注意\nWAN线路的IP地址是填写云服务器的内网地址 需要克隆mac地址 使用ping来验证配置是否正确有效 SD-WAN配置 在panabit中 他们把整合进panabit的sd-wan功能称为 iWAN服务，win客户端基于gretunnel协议（wintun.dll）进行与服务端通信（若有误请删除）\nPanabit 的SD-WAN服务端配置 用户认证-账号管理-组织构架\n创建组织构架\u0026gt; 添加用户组 \u0026gt;为用户组设置地址池\n用户认证-账号管理-组织构架-本地账号\n添加用户账号-设定用户组-其它信息\n应用路由-iWAN服务-服务列表\n新增一个iWAN服务-设置服务名称和网关(服务网关和地址池不能与其他内网冲突)\n应用路由-iWAN服务-服务映射\n将你设置好的服务名称。设置好你需要的服务端口，然后点击添加即可\n请注意\n需要在云服务防火墙中配置允许改端口访问权限 UDP\u0026amp;TCP\n应用路由-策略路由-IPv4路由\n添加一个策略将iWAN的服务网关转发到WAN(如果你有多条线路可以设置你想要的线路)\n跟着以上步骤，Pnabait的SD-WAN服务端就配置完成了。在客户端，Pnabit提供了多平台，多方式的连接方案\nLinux客户端 Windows客户端 Panabit所有版本 都有提供iWAN接口的选项 SD-WAN客户端连接 Panabit设备\n应用路由-接口线路-WAN线路\n新增一条iWAN类型的外网线路 ，设置好服务端地址和端口以及MTU ，账号密码，连通之后你可以使用ping来验证是否工作。\n请注意\n如果无法连接 请检查服务端地址池配置是否有冲突 账号密码是否不正确 云服务防火墙是否已经配置并允许服务端口 无法上网请检查应用路由中的策略路由是否配置了转发 至此，在公有云中安装Panabit并配置SD-WAN的笔记就完成了。我使用一张网卡配置完成SD-WAN 比官方说明的需求的3-4张网卡成本更低。当然目前业务量小，还没出现问题。不知道到当业务量大了之后会不会出现其它问题。\n","permalink":"https://www.dukehsu.com/posts/panabit-install.html","summary":"\u003ch2 id=\"公有云安装panabit-专业版-笔记\"\u003e公有云安装Panabit 专业版 笔记\u003c/h2\u003e\n\u003chr\u003e\n\u003cp\u003e\u003cstrong\u003eRelease date:\u003c/strong\u003e Dec 22,2022 Th .\u003cbr\u003e\n\u003cstrong\u003ePanabit Version:\u003c/strong\u003e R0.00[TANG(大唐)r3]，Build date 20221031.132102 [Linux 3.10]\u003cbr\u003e\n\u003cstrong\u003eAuthor:\u003c/strong\u003e Duke Hsu\u003cbr\u003e\n此笔记记录了使用单网卡轻量云服务器安装panabit的过程。\u003c/p\u003e\n\u003ch3 id=\"准备工作\"\u003e准备工作\u003c/h3\u003e\n\u003ch4 id=\"云服务器\"\u003e云服务器\u003c/h4\u003e\n\u003cp\u003e操作系统： Centos 7.6 x64\u003cbr\u003e\n配置： 2C 8G 1 eth\u003c/p\u003e\n\u003ch4 id=\"panabit-材料\"\u003ePanabit 材料\u003c/h4\u003e\n\u003cp\u003ePanabit一键上传 云服务器工具（包含安装和解压 GUI.exe）\u003cbr\u003e\n\u003cimg alt=\"示例.jpg\" loading=\"lazy\" src=\"/posts/panabit-install/images/2709048572.jpg\" title=\"示例.jpg\"\u003e\u003cbr\u003e\nPanabit专业版Linux安装包（LPanabitOEM_WUDAIr1_20201125_Linux3.tar.gz）\u003cbr\u003e\n云服务器的IP地址和密码\u003cbr\u003e\n云服务器需要开启SSH 端口和服务\u003c/p\u003e\n\u003ch3 id=\"安装步骤\"\u003e安装步骤\u003c/h3\u003e\n\u003ch4 id=\"云服务器初始化\"\u003e云服务器初始化\u003c/h4\u003e\n\u003cp\u003e关闭防火墙\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#停止防火墙\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl stop firewalld\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#关闭开机自启动\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl disable firewalld\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e检查网卡配置\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e#打印IP地址信息\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eifconfig\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e#查看网卡详细信息(ifcfg-eth0为网卡名，有些不一样，视情况而定)\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat /etc/sysconfig/network-scripts/ifcfg-eth0\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e记录下来IP地址信息以备稍后做Panabit配置使用\u003c/p\u003e\n\u003ch4 id=\"panabit安装\"\u003ePanabit安装\u003c/h4\u003e\n\u003cp\u003e使用GUI.exe 工具根据提示 将安装包上传到云服务器 全自动安装\u003c/p\u003e\n\u003cp\u003e重启服务器之后即可使用web登入Panabit进行管理\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e如果无法访问请检查管理口名称是否与云服务器网卡名不一致\u003c/li\u003e\n\u003cli\u003e如果提示安全问题，请使用低版本的chrome浏览器访问，比如360急速浏览器\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"panabit-配置\"\u003ePanabit 配置\u003c/h3\u003e\n\u003ch4 id=\"网络接口配置\"\u003e网络接口配置\u003c/h4\u003e\n\u003cp\u003e在\u0026lt;系统概况\u0026gt;将eth接口方向更改为接外\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/panabit-install/images/53889127.png\"\u003e\u003c/p\u003e\n\u003cp\u003e在应用路由-接口线路-WAN线路 添加一个接口 如下图\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/panabit-install/images/3950524992.png\"\u003e\u003c/p\u003e","tags":["panabit","panabit-vps安装","sd-wan","vps","单网卡"],"title":"公有云安装Panabit 专业版笔记"},{"categories":["today_i_learned"],"content":"\n由于某些游戏在运行时候会检测显卡驱动版本，如果不是最新版本就需要更新，某些时候太麻烦了，索性使用批处理更改文件名来实现跳过显卡驱动版本检测。下面的示例以Windows操作系统为主。\nTips: 将下面的命令保存为批处理(bat)格式的文件即可在Windows下执行。\n重命名NVAPI文件 if exist C:\\Windows\\System32\\nvapi64.Old goto Old chdir /d C:\\Windows\\System32 ren nvapi64.dll nvapi64.Old echo @ Named pause goto End恢复NVAPI文件名 :Old chdir /d C:\\Windows\\System32 ren nvapi64.Old nvapi64.dll echo @ Renamed pause goto End :End","permalink":"https://www.dukehsu.com/posts/387.html","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/387/images/4112067166.png\"\u003e\u003c/p\u003e\n\u003cp\u003e由于某些游戏在运行时候会检测显卡驱动版本，如果不是最新版本就需要更新，某些时候太麻烦了，索性使用批处理更改文件名来实现跳过显卡驱动版本检测。下面的示例以Windows操作系统为主。\u003c/p\u003e\n\u003cp\u003eTips: 将下面的命令保存为批处理(bat)格式的文件即可在Windows下执行。\u003c/p\u003e\n\u003ch3 id=\"重命名nvapi文件\"\u003e重命名NVAPI文件\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eif exist C:\\Windows\\System32\\nvapi64.Old goto Old\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echdir /d C:\\Windows\\System32\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eren nvapi64.dll nvapi64.Old\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eecho @ Named\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epause\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egoto End\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"恢复nvapi文件名\"\u003e恢复NVAPI文件名\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e:Old\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echdir /d C:\\Windows\\System32\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eren nvapi64.Old nvapi64.dll\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eecho @ Renamed\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epause\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egoto End\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e:End\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["批处理","驱动更新"],"title":"批处理跳过显卡驱动版本检测"},{"categories":["today_i_learned"],"content":"TCPING介绍 tcping 是由美国人 Eli Fulkerson先生用C++ 编写的一个开源网络检测工具;你可以下载可执行文件， 也可以下载源码自行编译。\nOffical website: https://download.elifulkerson.com/files/tcping/0.39/\ntcping和ping类似，也是用于检测网络连通性的一个工具。不同于ping的是，tcping 可以检查端口，更多的用法请在程序中执行 ？ 来查阅。\n程序的帮助信息 使用tcping检测应用程序的端口延迟 从Eli Fulkerson 的网站下载下来，通过命令行的方式来运行\n在程序所在目录输入程序 和目标地址进行检测\n.\\tcping.exe google.com 443 //.\\tcping.exe 目标地址/域名 目标端口即可获得结果，也可以在程序后面添加参数\n.\\tcping.exe -t google.com 443 //.\\tcping.exe -t 目标地址/域名 目标端口 (-t长ping).\\tcping.exe -h google.com //.\\tcping.exe -h 目标地址/域名 目标端口示例图 使用tcping来检查网络游戏的网络波动 当我接到有用户反馈网络游戏延迟高或者连接不上的时候，通常我会使用tcping，tracert，nslookup，ping 这几个命令来协助排查故障；总结一下几个步骤如下\n拿到与游戏相关的服务器地址\n有时候游戏服务器是通过域名连接，我会使用nslookup检查解析地址 使用ping检查基本的延迟状态\n有些游戏服务器禁ping，我会使用tracert 来跟踪路由，顺便找一下游戏连接的端口（后面使用tcping检查端口） 使用tracert跟踪路由\n运营商链路调整 有时候会影响游戏体验；某个节点断掉\ntracert可以协助你判断路由节点的问题 使用tcping检查游戏服务器端口延迟和是否开放\n有些游戏是UDP协议，我会用hping，或者nc。基本上tcping已经很够用所以我这里只介绍tcping。 前面的文章\n使用 PsPing进行网络测试\nhttps://www.itiohub.com/share/psping.html\n以上所述内容均以Windows操作系统为主。\n如果你有其它更好用的工具 ，欢迎在下方留言分享。\n","permalink":"https://www.dukehsu.com/posts/381.html","summary":"\u003ch2 id=\"tcping介绍\"\u003eTCPING介绍\u003c/h2\u003e\n\u003cp\u003etcping 是由美国人 Eli Fulkerson先生用C++ 编写的一个开源网络检测工具;你可以下载可执行文件， 也可以下载源码自行编译。\u003c/p\u003e\n\u003cp\u003eOffical website: \u003ca href=\"https://download.elifulkerson.com/files/tcping/0.39/\"\u003ehttps://download.elifulkerson.com/files/tcping/0.39/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003etcping和ping类似，也是用于检测网络连通性的一个工具。不同于ping的是，tcping 可以检查端口，更多的用法请在程序中执行 ？ 来查阅。\u003c/p\u003e\n\u003ch3 id=\"程序的帮助信息\"\u003e程序的帮助信息\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"tcping.jpg\" loading=\"lazy\" src=\"/posts/381/images/1461758271.jpg\" title=\"tcping.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"使用tcping检测应用程序的端口延迟\"\u003e使用tcping检测应用程序的端口延迟\u003c/h3\u003e\n\u003cp\u003e从Eli Fulkerson 的网站下载下来，通过命令行的方式来运行\u003c/p\u003e\n\u003cp\u003e在程序所在目录输入程序 和目标地址进行检测\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e.\\tcping.exe google.com 443\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e//.\\tcping.exe 目标地址/域名  目标端口\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e即可获得结果，也可以在程序后面添加参数\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e.\\tcping.exe -t google.com 443\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e//.\\tcping.exe -t 目标地址/域名  目标端口 (-t长ping)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e.\\tcping.exe -h google.com \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e//.\\tcping.exe -h 目标地址/域名  目标端口\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"示例图\"\u003e示例图\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"tcping1.jpg\" loading=\"lazy\" src=\"/posts/381/images/2549479965.jpg\" title=\"tcping1.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"使用tcping来检查网络游戏的网络波动\"\u003e使用tcping来检查网络游戏的网络波动\u003c/h3\u003e\n\u003cp\u003e当我接到有用户反馈网络游戏延迟高或者连接不上的时候，通常我会使用tcping，tracert，nslookup，ping 这几个命令来协助排查故障；总结一下几个步骤如下\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e拿到与游戏相关的服务器地址\u003cbr\u003e\n有时候游戏服务器是通过域名连接，我会使用nslookup检查解析地址\u003c/li\u003e\n\u003cli\u003e使用ping检查基本的延迟状态\u003cbr\u003e\n有些游戏服务器禁ping，我会使用tracert 来跟踪路由，顺便找一下游戏连接的端口（后面使用tcping检查端口）\u003c/li\u003e\n\u003cli\u003e使用tracert跟踪路由\u003cbr\u003e\n运营商链路调整 有时候会影响游戏体验；某个节点断掉\u003cbr\u003e\ntracert可以协助你判断路由节点的问题\u003c/li\u003e\n\u003cli\u003e使用tcping检查游戏服务器端口延迟和是否开放\u003cbr\u003e\n有些游戏是UDP协议，我会用hping，或者nc。基本上tcping已经很够用所以我这里只介绍tcping。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e前面的文章\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e使用 PsPing进行网络测试\u003cbr\u003e\n\u003ca href=\"https://www.itiohub.com/share/psping.html\"\u003ehttps://www.itiohub.com/share/psping.html\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e以上所述内容均以Windows操作系统为主。\u003cbr\u003e\n如果你有其它更好用的工具 ，欢迎在下方留言分享。\u003c/p\u003e","tags":["deskhelp","tcping","tcping使用","windows","提示网络延迟过高","网络检测","运维"],"title":"TCP端口连通性检测工具-tcping"},{"categories":["today_i_learned"],"content":"What is Classes in C#? Objects Access Modifiers https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers\nhttps://www.cnblogs.com/xinaixia/p/5775471.html\nCode using System; //class declaration public class Car { //instance 6 variables String name; String color; String transmission; String bodytype; int seat; int year; //constructor declaration of class public Car(String name, String color, String transmission, String bodytype, int seat, int year) { this.name = name; this.color = color; this.transmission = transmission; this.bodytype = bodytype; this.seat = seat; this.year = year; } //property 6 public String getName() { return name; } public String getColor() { return color; } public String getTransmission() { return transmission; } public String getType() { return bodytype; } public int getSeat() { return seat; } public int getYear() { return year; } //method public String ToString() { return (\u0026#34;This is Car detail- CarName:\u0026#34; + this.getName() + \u0026#34;\\n Color :\u0026#34; + this.getColor() + \u0026#34;\\n Transmission: \u0026#34; + this.getTransmission() + \u0026#34;\\n Body type: \u0026#34; + this.getType() + \u0026#34;\\n Seat : \u0026#34; + this.getSeat() + \u0026#34;\\n Year: \u0026#34; + this.getYear())+\u0026#34;\\n =================\u0026#34;; } //main method public static void Main(string[] args) { // 5 object Car Toyota = new Car(\u0026#34;Toyota Rush\u0026#34;, \u0026#34;Silver\u0026#34;, \u0026#34;Auto\u0026#34;, \u0026#34;SUV\u0026#34;, 7, 2020); Car Bmw = new Car(\u0026#34;BMX X1\u0026#34;, \u0026#34;Silver\u0026#34;, \u0026#34;Auto\u0026#34;, \u0026#34;SUV\u0026#34;, 7, 2022); Car Honda = new Car(\u0026#34;Accord\u0026#34;, \u0026#34;Black\u0026#34;, \u0026#34;Auto\u0026#34;, \u0026#34;Sedan\u0026#34;, 4, 2016); Car Tesla = new Car(\u0026#34;Tesla S\u0026#34;, \u0026#34;Red\u0026#34;, \u0026#34;Auto\u0026#34;, \u0026#34;Sedan\u0026#34;, 4, 2017); Car Mazda = new Car(\u0026#34;Mazda 929 Legato\u0026#34;, \u0026#34;White\u0026#34;, \u0026#34;Manual\u0026#34;, \u0026#34;Sedan\u0026#34;, 4, 1980); //output Console.WriteLine(Toyota.ToString()); Console.WriteLine(Bmw.ToString()); Console.WriteLine(Honda.ToString()); Console.WriteLine(Tesla.ToString()); Console.WriteLine(Mazda.ToString()); Console.WriteLine(\u0026#34;==============\\n Thank you !\u0026#34;); //out put date and time DateTime now = DateTime.Now; Console.WriteLine(\u0026#34;Print date: \u0026#34; + now); Console.ReadLine(); } }","permalink":"https://www.dukehsu.com/posts/378.html","summary":"\u003ch2 id=\"what-is-classes-in-c\"\u003eWhat is Classes in C#?\u003c/h2\u003e\n\u003ch3 id=\"objects\"\u003eObjects\u003c/h3\u003e\n\u003ch3 id=\"access-modifiers\"\u003eAccess Modifiers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers\"\u003ehttps://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.cnblogs.com/xinaixia/p/5775471.html\"\u003ehttps://www.cnblogs.com/xinaixia/p/5775471.html\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"code\"\u003eCode\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-c#\" data-lang=\"c#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e//class declaration\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003eCar\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//instance 6 variables\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003ecolor\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003etransmission\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003ebodytype\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eseat\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eyear\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//constructor declaration of class\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eCar\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003ecolor\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003etransmission\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003ebodytype\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eseat\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eyear\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ename\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecolor\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003ecolor\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etransmission\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003etransmission\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebodytype\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003ebodytype\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eseat\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eseat\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eyear\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eyear\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//property 6\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003egetName\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003egetColor\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003ecolor\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003egetTransmission\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003etransmission\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003egetType\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003ebodytype\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003egetSeat\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003eseat\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003egetYear\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003eyear\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//method \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;This is Car detail- CarName:\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetName\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\\n Color :\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetColor\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\\n Transmission: \u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetTransmission\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\\n Body type: \u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetType\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\\n Seat : \u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetSeat\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\\n Year: \u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"k\"\u003ethis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetYear\u003c/span\u003e\u003cspan class=\"p\"\u003e())+\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\\n =================\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//main method\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eMain\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"n\"\u003eargs\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e// 5 object\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eCar\u003c/span\u003e \u003cspan class=\"n\"\u003eToyota\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eCar\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Toyota Rush\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Silver\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Auto\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;SUV\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e7\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e2020\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eCar\u003c/span\u003e \u003cspan class=\"n\"\u003eBmw\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eCar\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;BMX X1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Silver\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Auto\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;SUV\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e7\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e2022\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eCar\u003c/span\u003e \u003cspan class=\"n\"\u003eHonda\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eCar\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Accord\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Black\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Auto\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Sedan\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e2016\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eCar\u003c/span\u003e \u003cspan class=\"n\"\u003eTesla\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eCar\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Tesla S\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Red\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Auto\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Sedan\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e2017\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eCar\u003c/span\u003e \u003cspan class=\"n\"\u003eMazda\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"n\"\u003eCar\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Mazda 929 Legato\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;White\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Manual\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Sedan\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e1980\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e//output \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eToyota\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eBmw\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eHonda\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eTesla\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eMazda\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;==============\\n Thank you !\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e//out put date and time\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eDateTime\u003c/span\u003e \u003cspan class=\"n\"\u003enow\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eDateTime\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eNow\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Print date: \u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003enow\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadLine\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["c","classes","objects"],"title":"C# Classes and Objects"},{"categories":["today_i_learned"],"content":"IDEA User input data Convert to index Using index number fund element vaule Output element vaule Screenshot Code using System; namespace array2d { public class array2d { public static void Main(string[] args) { //initilizing arrays string[,] platenumber = new string[5,3] { {\u0026#34;ZJI163\u0026#34;,\u0026#34;USA1008\u0026#34;,\u0026#34;PHA101\u0026#34;}, {\u0026#34;PJ130108\u0026#34;, \u0026#34;USA1006\u0026#34;,\u0026#34;JAP118\u0026#34; }, {\u0026#34;MAX168\u0026#34;, \u0026#34;USA1002\u0026#34; ,\u0026#34;TWD120\u0026#34;}, { \u0026#34;AZZ9756\u0026#34;, \u0026#34;USA1005\u0026#34;,\u0026#34;KOR119\u0026#34; }, {\u0026#34;NAS1223\u0026#34;,\u0026#34;USA109\u0026#34;,\u0026#34;DDT886\u0026#34;} }; //wait for user input,convert to int Console.WriteLine(\u0026#34;Welcome use DK parking system!\\n Solt: 0-4 \\n floor: 0-2\u0026#34;); Console.WriteLine(\u0026#34;Plz type slot: \u0026#34;); int solt = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(\u0026#34;Plz type floor: \u0026#34;); int floor = Convert.ToInt32(Console.ReadLine()); // decision the length of the element if (solt \u0026lt; 5 \u0026amp;\u0026amp; floor \u0026lt; 3) { string car = platenumber[solt, floor]; Console.WriteLine(\u0026#34;Found platenumber is :\u0026#34; + car); } else { Console.WriteLine(\u0026#34;\\nThe value you entered does not exist\u0026#34;); } Console.WriteLine(\u0026#34;Thank you !\u0026#34;); Console.ReadLine(); } } }","permalink":"https://www.dukehsu.com/posts/377.html","summary":"\u003ch2 id=\"idea\"\u003eIDEA\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUser input data\u003c/li\u003e\n\u003cli\u003eConvert to index\u003c/li\u003e\n\u003cli\u003eUsing index number fund element vaule\u003c/li\u003e\n\u003cli\u003eOutput element vaule\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"screenshot\"\u003eScreenshot\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2022-10-16_15-07-42.png\" loading=\"lazy\" src=\"/posts/377/images/674726809.png\" title=\"Snipaste_2022-10-16_15-07-42.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"code\"\u003eCode\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-c#\" data-lang=\"c#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003enamespace\u003c/span\u003e \u003cspan class=\"nn\"\u003earray2d\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003earray2d\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eMain\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"n\"\u003eargs\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e//initilizing arrays \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e[,]\u003c/span\u003e \u003cspan class=\"n\"\u003eplatenumber\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"m\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;ZJI163\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;USA1008\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;PHA101\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e},\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;PJ130108\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;USA1006\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;JAP118\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                                                    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;MAX168\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;USA1002\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;TWD120\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e},\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;AZZ9756\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;USA1005\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;KOR119\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                                                    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;NAS1223\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;USA109\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;DDT886\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                                                  \u003cspan class=\"p\"\u003e};\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e//wait for user input,convert to int\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Welcome use DK parking system!\\n Solt: 0-4 \\n floor: 0-2\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Plz type  slot: \u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003esolt\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eConvert\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToInt32\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadLine\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Plz type  floor: \u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003efloor\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eConvert\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToInt32\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadLine\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e// decision   the length of the element\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esolt\u003c/span\u003e \u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e \u003cspan class=\"m\"\u003e5\u003c/span\u003e \u003cspan class=\"p\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e \u003cspan class=\"n\"\u003efloor\u003c/span\u003e \u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e \u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003ecar\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eplatenumber\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003esolt\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003efloor\u003c/span\u003e\u003cspan class=\"p\"\u003e];\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Found platenumber is :\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003ecar\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eelse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\\nThe value you entered does not exist\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Thank you !\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadLine\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["2darrays","arrays","c"],"title":"C# Find the value of an element using the index"},{"categories":["today_i_learned"],"content":" C# Multidimensional Arrays 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.\nIn 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.\nC# Multi-Dimensional Array Declaration 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.\nQuestion: Create a complete C# program that will compute the average of all elements in array x\nint [,] x = new int[4, 5] { { 4, 5, 6, 2, 12 }, { 10, 25, 33, 22, 11 },{ 211, 32, 43, 54, 65 }, { 3, 2, 1, 5, 6 } };Average Solution Use for loop get array x elements values Add values Divide results by no. of values Code using System; namespace Module7 { public class Module7 { public static void Main(string[] args) { //initilizing array int[,] x = new int[4, 5] { { 4, 5, 6, 2, 12 }, { 10, 25, 33, 22, 11 }, { 211, 32, 43, 54, 65 }, { 3, 2, 1, 5, 6 } }; Console.WriteLine(\u0026#34;---Two dimensional array elements---\u0026#34;); // use for loop get array x elements for(int y=0; y\u0026lt;4; y++) { int sum = 0; double avg = 0; for (int z = 0; z \u0026lt; 5; z++) { Console.WriteLine(\u0026#34;X[{0},{1}] = {2}\u0026#34;, y, z, x[y, z]); // sum the values in the array sum += x[y, z]; } // compute the average of all elements in array x avg = (double)sum / 5; Console.WriteLine(\u0026#34;Average is \u0026#34; + avg); } Console.ReadLine(); } } } Reference C# Sharp Exercises: Print the average of four numbers\nhttps://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-9.php\nC# Multidimensional Arrays\nhttps://www.tutlane.com/tutorial/csharp/csharp-multidimensional-arrays\nHow to calculate the average of each row in multidimensional array\nhttps://stackoverflow.com/questions/41582366/how-to-calculate-the-average-of-each-row-in-multidimensional-array\n","permalink":"https://www.dukehsu.com/posts/373.html","summary":"\u003cblockquote\u003e\n\u003ch3 id=\"c-multidimensional-arrays\"\u003eC# Multidimensional Arrays\u003c/h3\u003e\n\u003cp\u003eAs 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.\u003cbr\u003e\nIn 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.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"c-multi-dimensional-array-declaration\"\u003eC# Multi-Dimensional Array Declaration\u003c/h3\u003e\n\u003cp\u003eIn 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.\u003c/p\u003e","tags":["arrays","c","mulitidimensional"],"title":"C# Multidimensional Arrays"},{"categories":["today_i_learned"],"content":"Question: 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”\nFlowChart: C# Logical Operators: Code Answer: using System; namespace Module6 { class module6 { static void Main(string[] args) { string emailid, password; //use readline get user input Console.WriteLine(\u0026#34;Plz enter u Emaill address :\u0026#34;); emailid = Console.ReadLine(); Console.WriteLine(\u0026#34;Plz enter u Password\u0026#34;); password = Console.ReadLine(); //use if else to decision input data contains value if (emailid.Contains(\u0026#34;ydsgsdg@dsadas.edu.ph\u0026#34;) \u0026amp;\u0026amp; (password.Contains(\u0026#34;d123456\u0026#34;))) { Console.WriteLine(\u0026#34;Your Log-in Was Successful!\u0026#34;); } else { Console.WriteLine(\u0026#34;Invalid Log-in details\u0026#34;); } Console.ReadLine(); } } } Reference C# Logical Operators with Examples\nhttps://www.tutlane.com/tutorial/csharp/csharp-logical-operators-with-examples\nC# String Contains()\nhttps://www.javatpoint.com/csharp-string-contains\n","permalink":"https://www.dukehsu.com/posts/csharp.html","summary":"\u003ch2 id=\"question\"\u003eQuestion:\u003c/h2\u003e\n\u003cp\u003eCreate 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”\u003c/p\u003e\n\u003ch2 id=\"flowchart\"\u003eFlowChart:\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"20221003.jpg\" loading=\"lazy\" src=\"/posts/csharp/images/2267246583.jpg\" title=\"20221003.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"c-logical-operators\"\u003eC# Logical Operators:\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"logic table c#.jpg\" loading=\"lazy\" src=\"/posts/csharp/images/2735591399.jpg\" title=\"logic table c#.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"code-answer\"\u003eCode Answer:\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-C#\" data-lang=\"C#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eusing\u003c/span\u003e \u003cspan class=\"nn\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003enamespace\u003c/span\u003e \u003cspan class=\"nn\"\u003eModule6\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003emodule6\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003estatic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eMain\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"n\"\u003eargs\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e           \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003eemailid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003epassword\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e//use readline get user input\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Plz enter u Emaill address :\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eemailid\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadLine\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Plz enter u Password\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003epassword\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadLine\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e           \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"c1\"\u003e//use if  else to decision input data contains value\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eemailid\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eContains\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;ydsgsdg@dsadas.edu.ph\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003epassword\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eContains\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;d123456\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Your Log-in Was Successful!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eelse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWriteLine\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Invalid Log-in details\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eConsole\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eReadLine\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch2 id=\"reference\"\u003eReference\u003c/h2\u003e\n\u003cp\u003eC# Logical Operators with Examples\u003cbr\u003e\n\u003ca href=\"https://www.tutlane.com/tutorial/csharp/csharp-logical-operators-with-examples\"\u003ehttps://www.tutlane.com/tutorial/csharp/csharp-logical-operators-with-examples\u003c/a\u003e\u003c/p\u003e","tags":["assessment","c","contains","mainpulating-string-values"],"title":"C# String Contains Assessment"},{"categories":["today_i_learned"],"content":"此博文记录了如何在网页中简单提取视频源地址的方法，起因是STS 课程中有一个Assessment是要观看影片去回答问题。\nYoutube没有资源，网页操作不方便，我想把他放到VLC中播放。\n软件环境 Chrome浏览器 VLC打开网络链接（视频源地址 M3U8） Windows 10 操作步骤 使用Chrome浏览器在视频播放页面按F12进入开发模式(如上图所示)。 在控制台找到Network 在搜索框输入M3U8 复制Request URL中的值在VLC中打开即可 Reference How do we download a blob url video [closed]\nhttps://stackoverflow.com/questions/42901942/how-do-we-download-a-blob-url-video\n如何下载 blob 地址的视频资源\nhttps://www.cnblogs.com/mq0036/p/14953209.html\n","permalink":"https://www.dukehsu.com/posts/blob-m3u8.html","summary":"\u003cp\u003e此博文记录了如何在网页中简单提取视频源地址的方法，起因是STS 课程中有一个Assessment是要观看影片去回答问题。\u003cbr\u003e\nYoutube没有资源，网页操作不方便，我想把他放到VLC中播放。\u003c/p\u003e\n\u003ch3 id=\"软件环境\"\u003e软件环境\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChrome浏览器\u003c/li\u003e\n\u003cli\u003eVLC打开网络链接（视频源地址 M3U8）\u003c/li\u003e\n\u003cli\u003eWindows 10\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"操作步骤\"\u003e操作步骤\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"2022-09-30_22-42-59.jpg\" loading=\"lazy\" src=\"/posts/blob-m3u8/images/535252403.jpg\" title=\"2022-09-30_22-42-59.jpg\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e使用Chrome浏览器在视频播放页面按\u003cstrong\u003eF12\u003c/strong\u003e进入开发模式(如上图所示)。\u003c/li\u003e\n\u003cli\u003e在控制台找到\u003cstrong\u003eNetwork\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e在搜索框输入\u003cstrong\u003eM3U8\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e复制\u003cstrong\u003eRequest URL\u003c/strong\u003e中的值在VLC中打开即可\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"reference\"\u003eReference\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eHow do we download a blob url video [closed]\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://stackoverflow.com/questions/42901942/how-do-we-download-a-blob-url-video\"\u003ehttps://stackoverflow.com/questions/42901942/how-do-we-download-a-blob-url-video\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e如何下载 blob 地址的视频资源\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://www.cnblogs.com/mq0036/p/14953209.html\"\u003ehttps://www.cnblogs.com/mq0036/p/14953209.html\u003c/a\u003e\u003c/p\u003e","tags":["blob","youtube"],"title":"blob视频资源的简单提取"},{"categories":["today_i_learned"],"content":"\nCreate an new windwos forms project. Design Size. Add panel.\ndesign panel color,size,style. Add button.\ncalculartor button and oper button. Coding button function. Declaring variables double fstNum,secNum; string oper;Identify button function btnCE\nprivate void btnCE_Click(object sender, EventArgs e) { textDisplay.Text = \u0026#34;0\u0026#34;; string f, s; f = Convert.ToString(fstNum); s = Convert.ToString(secNum); f = \u0026#34;\u0026#34;; s = \u0026#34;\u0026#34;; }backspace\nprivate void backspace_Click(object sender, EventArgs e) { if (textDisplay.Text.Length \u0026gt; 0) { textDisplay.Text = textDisplay.Text.Remove(textDisplay.Text.Length - 1, 1); } if (textDisplay.Text == \u0026#34;\u0026#34;) { textDisplay.Text = \u0026#34;0\u0026#34;; } }btn9\nprivate void btn9_Click(object sender, EventArgs e) { if (textDisplay.Text == \u0026#34;0\u0026#34;) { textDisplay.Text = \u0026#34;9\u0026#34;; } else { textDisplay.Text = textDisplay.Text + \u0026#34;9\u0026#34;; } }btnAdd\nprivate void btnAdd_Click(object sender, EventArgs e) { fstNum = double.Parse(textDisplay.Text); oper = \u0026#34;+\u0026#34;; textDisplay.Text = \u0026#34;\u0026#34;; }btnPM\nprivate void btnPM_Click(object sender, EventArgs e) { double q = Convert.ToDouble(textDisplay.Text); textDisplay.Text = Convert.ToString(-1 * q); }btnC\nprivate void btnC_Click(object sender, EventArgs e) { textDisplay.Text = \u0026#34;0\u0026#34;; }benDec\nprivate void benDec_Click(object sender, EventArgs e) { if (benDec.Text == \u0026#34;.\u0026#34;) { if (!textDisplay.Text.Contains(\u0026#34;.\u0026#34;)) { textDisplay.Text = textDisplay.Text + benDec.Text; } } }use switch statement out put equal\nprivate void btnEuq_Click(object sender, EventArgs e) { secNum = double.Parse(textDisplay.Text); switch (oper) { case \u0026#34;+\u0026#34;: textDisplay.Text = (fstNum + secNum).ToString(); break; case \u0026#34;-\u0026#34;: textDisplay.Text = (fstNum - secNum).ToString(); break; case \u0026#34;*\u0026#34;: textDisplay.Text = (fstNum * secNum).ToString(); break; case \u0026#34;/\u0026#34;: textDisplay.Text = (fstNum / secNum).ToString(); break; default: break; } }Code download：\ncaluclator.zip\nReference https://www.youtube.com/watch?v=TYN_Pk9VKIo\n","permalink":"https://www.dukehsu.com/posts/353.html","summary":"\u003cp\u003e\u003cimg alt=\"202209251.jpg\" loading=\"lazy\" src=\"/posts/353/images/3246224253.jpg\" title=\"202209251.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"screenshots.gif\" loading=\"lazy\" src=\"/posts/353/images/294359013.gif\" title=\"screenshots.gif\"\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCreate an new windwos forms project.\u003c/li\u003e\n\u003cli\u003eDesign Size.\u003c/li\u003e\n\u003cli\u003eAdd panel.\u003cbr\u003e\ndesign panel color,size,style.\u003c/li\u003e\n\u003cli\u003eAdd button.\u003cbr\u003e\ncalculartor button and oper button.\u003c/li\u003e\n\u003cli\u003eCoding button function.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"declaring-variables\"\u003eDeclaring variables\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-c#\" data-lang=\"c#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003edouble\u003c/span\u003e \u003cspan class=\"n\"\u003efstNum\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"n\"\u003esecNum\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003eoper\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"identify-button-function\"\u003eIdentify button function\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003ebtnCE\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-c#\" data-lang=\"c#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003ebtnCE_Click\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eobject\u003c/span\u003e \u003cspan class=\"n\"\u003esender\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eEventArgs\u003c/span\u003e \u003cspan class=\"n\"\u003ee\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;0\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003ef\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003es\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003ef\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eConvert\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efstNum\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003es\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eConvert\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esecNum\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003ef\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003es\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003ebackspace\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-c#\" data-lang=\"c#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003ebackspace_Click\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eobject\u003c/span\u003e \u003cspan class=\"n\"\u003esender\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eEventArgs\u003c/span\u003e \u003cspan class=\"n\"\u003ee\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLength\u003c/span\u003e \u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"m\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eRemove\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLength\u003c/span\u003e \u003cspan class=\"p\"\u003e-\u003c/span\u003e \u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;0\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003ebtn9\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-c#\" data-lang=\"c#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003ebtn9_Click\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eobject\u003c/span\u003e \u003cspan class=\"n\"\u003esender\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eEventArgs\u003c/span\u003e \u003cspan class=\"n\"\u003ee\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;0\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;9\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003eelse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;9\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003ebtnAdd\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-c#\" data-lang=\"c#\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"kd\"\u003eprivate\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003ebtnAdd_Click\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eobject\u003c/span\u003e \u003cspan class=\"n\"\u003esender\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eEventArgs\u003c/span\u003e \u003cspan class=\"n\"\u003ee\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e           \u003cspan class=\"n\"\u003efstNum\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"kt\"\u003edouble\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eParse\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eoper\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;+\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003etextDisplay\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003ebtnPM\u003c/strong\u003e\u003c/p\u003e","tags":["c-charp"],"title":"Make a calculartor in c sharp"},{"categories":["today_i_learned"],"content":"\n云服务器配置 CPU 2核 - 内存 4GB - 系统盘 60GB\nCentos7.6\n安装docker #/bin/bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum-config-manager --enable docker-ce-nightly sudo yum install docker-ce docker-ce-cli containerd.io systemctl start docker #启动容器 systemctl enable docker #开机自启 sudo curl -L \u0026#34;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)\u0026#34; -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker --version docker-compose --version安装Jumpserver curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.21.2/quick_start.sh | bash等待安装完成之后即可访问HOST的地址进行登录管理配置资产\n","permalink":"https://www.dukehsu.com/posts/jumpserver.html","summary":"\u003cp\u003e\u003cimg alt=\"Image.png\" loading=\"lazy\" src=\"/posts/jumpserver/images/2745785247.png\" title=\"Image.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"云服务器配置\"\u003e云服务器配置\u003c/h3\u003e\n\u003cp\u003eCPU 2核 - 内存 4GB - 系统盘 60GB\u003cbr\u003e\nCentos7.6\u003c/p\u003e\n\u003ch3 id=\"安装docker\"\u003e安装docker\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e#/bin/bash\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo yum install -y yum-utils\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo    \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo yum-config-manager --enable docker-ce-nightly\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo yum install docker-ce docker-ce-cli containerd.io\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl start docker  \u003cspan class=\"c1\"\u003e#启动容器\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl \u003cspan class=\"nb\"\u003eenable\u003c/span\u003e docker \u003cspan class=\"c1\"\u003e#开机自启\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo curl -L \u003cspan class=\"s2\"\u003e\u0026#34;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003euname -s\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e-\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003euname -m\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e -o /usr/local/bin/docker-compose\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo chmod +x /usr/local/bin/docker-compose\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edocker --version\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edocker-compose --version\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"安装jumpserver\"\u003e安装Jumpserver\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecurl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.21.2/quick_start.sh \u003cspan class=\"p\"\u003e|\u003c/span\u003e bash\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e等待安装完成之后即可访问HOST的地址进行登录管理配置资产\u003c/p\u003e","tags":["jumpserver","堡垒机"],"title":"JumpServer 开源堡垒机安装记录"},{"categories":["today_i_learned"],"content":"Intel UHD 630 Driver for Windows 7 CPU: Intel® Core™ i7-8700\nVideo: Intel UHD 630\nOS: Windows 7 64-bit\nDriver Download\nhttps://www.biostar.com.tw/app/en/event/H310_windowstool/win7_8th_i3_i5_Driver_2.0.rar Thanks\nhttps://www.sevenforums.com/drivers/424720-intel-uhd-630-driver-windows-7-a.html https://www.intel.com/content/www/us/en/download/18799/28436/intel-graphics-driver-for-windows-15-45.html ","permalink":"https://www.dukehsu.com/posts/windows7driver.html","summary":"\u003ch2 id=\"intel-uhd-630-driver-for-windows-7\"\u003eIntel UHD 630 Driver for Windows 7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eCPU:\u003c/strong\u003e Intel® Core™ i7-8700\u003cbr\u003e\n\u003cstrong\u003eVideo:\u003c/strong\u003e Intel UHD 630\u003cbr\u003e\n\u003cstrong\u003eOS:\u003c/strong\u003e Windows 7 64-bit\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDriver Download\u003cbr\u003e\n\u003ca href=\"https://www.biostar.com.tw/app/en/event/H310_windowstool/win7_8th_i3_i5_Driver_2.0.rar\"\u003ehttps://www.biostar.com.tw/app/en/event/H310_windowstool/win7_8th_i3_i5_Driver_2.0.rar\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.sevenforums.com/drivers/424720-intel-uhd-630-driver-windows-7-a.html\"\u003ehttps://www.sevenforums.com/drivers/424720-intel-uhd-630-driver-windows-7-a.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.intel.com/content/www/us/en/download/18799/28436/intel-graphics-driver-for-windows-15-45.html\"\u003ehttps://www.intel.com/content/www/us/en/download/18799/28436/intel-graphics-driver-for-windows-15-45.html\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","tags":["uhd630","windows7driver"],"title":"Intel UHD 630 Driver for Windows 7"},{"categories":["today_i_learned"],"content":"\n【Steam不再提供中国内地的CM服务器】CM（Connection Manager）服务器，用于 Steam 帐户登录认证、好友在线状态、聊天和游戏邀请等等方面。目前 Steam 获取的服务器列表已不存在中国内地服务器。\n由于steam不再提供中国内地的CM服务器，导致每周末晚高峰的时期，steam登录及其困难。写这篇文章是为了记录处理这个问题的过程和解决办法，希望能帮到大家；\n解决方案如下 方法一 指定客户端连接协议启动客户端 直接给steam.exe的快捷方式加参数-tcp或-websocket来指定连接协议启动客户端\n-tcp模式\n-websocket模式\n为改善使用体验，我添加了一个启动目录，使得在启动时候可以选择启动模式\n如果此方法无法连接登录，请选择方法二\n方法二 添加hosts,在默认情况下指定CM服务器 / 强制指定使用WS连接启动客户端 使用Dogfight360的工具添加host 指定MC服务器 ，然后通过WS连接模式启动客户端即可\n点击检测延迟选择延迟较低的服务（晚高峰建议避开新加坡，日本，香港 我这里选择卢森堡，具体根据您的互联网运营商选择） 选择指定的MC服务器 点击应用选中 通过-websocket连接模式启动即可 此文章并不能保证百分之百可以解决。通过希望通过此文章能够让您尝试多一个方法去解决此问题。\n参考阅读：\nDogfight 360的博客\nhttps://www.dogfight360.com/blog/knowledge-base/fix_steamlogin/\nSteam status\nhttps://steamstat.us/\n其乐\nhttps://keylol.com/\n","permalink":"https://www.dukehsu.com/posts/steamgame-1.html","summary":"\u003cp\u003e\u003cimg alt=\"Image (1).png\" loading=\"lazy\" src=\"/posts/steamgame-1/images/3925120165.png\" title=\"Image (1).png\"\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e【Steam不再提供中国内地的CM服务器】CM（Connection Manager）服务器，用于 Steam 帐户登录认证、好友在线状态、聊天和游戏邀请等等方面。目前 Steam 获取的服务器列表已不存在中国内地服务器。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e由于steam不再提供中国内地的CM服务器，导致每周末晚高峰的时期，steam登录及其困难。写这篇文章是为了记录处理这个问题的过程和解决办法，希望能帮到大家；\u003c/p\u003e\n\u003ch2 id=\"解决方案如下\"\u003e解决方案如下\u003c/h2\u003e\n\u003ch4 id=\"方法一-指定客户端连接协议启动客户端\"\u003e方法一 指定客户端连接协议启动客户端\u003c/h4\u003e\n\u003cp\u003e直接给steam.exe的快捷方式加参数-tcp或-websocket来指定连接协议启动客户端\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e-tcp模式\u003c/strong\u003e\u003cbr\u003e\n\u003cimg alt=\"tcp.jpg\" loading=\"lazy\" src=\"/posts/steamgame-1/images/15209569.jpg\" title=\"tcp.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e-websocket模式\u003c/strong\u003e\u003cbr\u003e\n\u003cimg alt=\"-websocket.jpg\" loading=\"lazy\" src=\"/posts/steamgame-1/images/162499230.jpg\" title=\"-websocket.jpg\"\u003e\u003cbr\u003e\n为改善使用体验，我添加了一个启动目录，使得在启动时候可以选择启动模式\u003cbr\u003e\n\u003cimg alt=\"luanchmenu.jpg\" loading=\"lazy\" src=\"/posts/steamgame-1/images/1088052938.jpg\" title=\"luanchmenu.jpg\"\u003e\u003cbr\u003e\n如果此方法无法连接登录，请选择方法二\u003c/p\u003e\n\u003ch4 id=\"方法二-添加hosts在默认情况下指定cm服务器--强制指定使用ws连接启动客户端\"\u003e方法二 添加hosts,在默认情况下指定CM服务器 / 强制指定使用WS连接启动客户端\u003c/h4\u003e\n\u003cp\u003e使用Dogfight360的工具添加host 指定MC服务器 ，然后通过WS连接模式启动客户端即可\u003cbr\u003e\n\u003cimg alt=\"luanchclient.jpg\" loading=\"lazy\" src=\"/posts/steamgame-1/images/2935382895.jpg\" title=\"luanchclient.jpg\"\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e点击检测延迟选择延迟较低的服务（晚高峰建议避开新加坡，日本，香港 我这里选择卢森堡，具体根据您的互联网运营商选择）\u003c/li\u003e\n\u003cli\u003e选择指定的MC服务器\u003c/li\u003e\n\u003cli\u003e点击应用选中\u003c/li\u003e\n\u003cli\u003e通过-websocket连接模式启动即可\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e此文章并不能保证百分之百可以解决。通过希望通过此文章能够让您尝试多一个方法去解决此问题。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e参考阅读：\u003cbr\u003e\n\u003cstrong\u003eDogfight 360的博客\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://www.dogfight360.com/blog/knowledge-base/fix_steamlogin/\"\u003ehttps://www.dogfight360.com/blog/knowledge-base/fix_steamlogin/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSteam status\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://steamstat.us/\"\u003ehttps://steamstat.us/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e其乐\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://keylol.com/\"\u003ehttps://keylol.com/\u003c/a\u003e\u003c/p\u003e","tags":["steam","steam无法登录到服务器","steam登录"],"title":"Steam客户端无法登录解决办法"},{"categories":["today_i_learned"],"content":"前言 在开发Web项目当中，浏览器必不可少，而浏览器的启动参数可以帮我们实现很多功能。\n常用参数 常用参数请参考下表。\n序号 参数 说明 1 \u0026ndash;allow-outdated-plugins 不停用过期的插件。 2 \u0026ndash;allow-running-insecure-content 默认情况下，https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。 3 \u0026ndash;allow-scripting-gallery 允许拓展脚本在官方应用中心生效。默认情况下，出于安全因素考虑这些脚本都会被阻止。 4 \u0026ndash;disable-desktop-notifications 禁用桌面通知，在 Windows 中桌面通知默认是启用的。 5 \u0026ndash;disable-file-system 停用 FileSystem API。 6 \u0026ndash;disable-preconnect 停用 TCP/IP 预连接。 7 \u0026ndash;disable-remote-fonts 关闭远程字体支持。SVG 中字体不受此参数影响。 8 \u0026ndash;disable-web-security 不遵守同源策略。 9 \u0026ndash;disk-cache-dir 将缓存设置在给定的路径。 10 \u0026ndash;disk-cache-size 设置缓存大小上限，以字节为单位。 11 \u0026ndash;dns-prefetch-disable 停用DNS预读。 12 \u0026ndash;enable-print-preview 启用打印预览。 13 \u0026ndash;extensions-update-frequency 设定拓展自动更新频率，以秒为单位。 14 \u0026ndash;incognito 让浏览器直接以隐身模式启动。 15 \u0026ndash;keep-alive-for-test 最后一个标签关闭后仍保持浏览器进程。（某种意义上可以提高热启动速度，不过你最好得有充足的内存） 16 \u0026ndash;kiosk 启用kiosk模式。（一种类似于全屏的浏览模式） 17 \u0026ndash;lang 使用指定的语言。 18 \u0026ndash;no-displaying-insecure-content 默认情况下，https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。 19 \u0026ndash;no-referrers 不发送 Http-Referer 头。 20 \u0026ndash;no-startup-window 启动时不建立窗口。 21 \u0026ndash;proxy-server 使用给定的代理服务器，这个参数只对 http 和 https 有效。 22 \u0026ndash;start-maximized 启动时最大化。 23 \u0026ndash;single-process 以单进程模式运行 Chromium。（启动时浏览器会给出不安全警告）。 24 \u0026ndash;user-agent 使用给定的 User-Agent 字符串。 25 \u0026ndash;process-per-tab 每个分页使用单独进程。 26 \u0026ndash;process-per-site 每个站点使用单独进程。 27 \u0026ndash;in-process-plugins 插件不启用单独进程。 28 \u0026ndash;disable-popup-blocking 禁用弹出拦截。 29 \u0026ndash;disable-javascript 禁用JavaScript。 30 \u0026ndash;disable-java 禁用Java。 31 \u0026ndash;disable-plugins 禁用插件。 32 –disable-images 禁用图像。 更多参数 由于水平有限，下表为网络翻译，了解跟多可根基参数，查找相关资料。\n序号 参数 说明 1 \u0026ndash; 报告伪分配跟踪。伪跟踪从当前活动的跟踪事件派生。 2 \u0026ndash;/prefetch:1 /prefetch:启动各种流程类型时使用的＃arguments。已经观察到，当文件读取与具有相同/prefetch:＃参数的3个进程启动一致时，Windows预取器开始在进程启动时批量发出读取。因为读取取决于进程类型，如果没有/prefetch:＃arguments使用了预取器，则预取器将无法观察到一致的读取。请注意，浏览器进程没有/prefetch:＃参数; 因此，所有其他过程必须有一个，以避免污染其配置文件。注意:＃必须始终在[1,8]; 否则Windows预取器会忽略它。 3 \u0026ndash;/prefetch:5 /prefetch:在后台模式和观察程序进程中启动的浏览器进程的#refact。 4 \u0026ndash;/prefetch:8 Windows预取程序使用预取参数来消除相同可执行映像的不同执行模式（即进程类型）的歧义，以便不同类型的进程不会践踏彼此的预取行为。合法值是[1,8]范围内的整数。我们保留8表示“无论什么”，这将最终导致具有/prefetch的进程:8具有不一致的行为，因此在实践中禁用预取。TODO（rockot）:使嵌入器能够在每个服务的基础上覆盖此参数。 5 \u0026ndash;accept-resource-provider 指示必须设置资源提供程序以向投射接收器提供资源的标志。在提供资源之前，应用无法启动。该标志表示\u0026ndash;alsa-check-close-timeout=0。 6 \u0026ndash;account-consistency 用于启用帐户一致性的命令行标志。默认模式已禁用。镜像是一种传统模式，其中Google帐户始终会添加到Chrome，然后Chrome会将其添加到Google身份验证Cookie中。骰子是一项新的实验，Chrome可以识别Google身份验证Cookie中的帐户。 7 \u0026ndash;agc-startup-min-volume 覆盖与getUserMedia中的音轨一起使用的WebRTC中的自动增益控制算法的默认最小起始音量。有效范围是12-255。超出该范围的值将被限制在WebRTC内的最低或最高有效值。 8 \u0026ndash;allow-cross-origin-auth-prompt 允许页面中包含的第三方内容提示输入HTTP基本身份验证用户名/密码对。 9 \u0026ndash;allow-external-pages 允许在布局测试期间访问外部页面。 10 \u0026ndash;allow-failed-policy-fetch-for-test 如果传递此标志，则失败的策略提取不会导致配置文件初始化失败。这对测试很有用，因为这意味着测试不必模拟策略基础结构。 11 \u0026ndash;allow-file-access-from-files 默认情况下，file://URIs无法读取其他file://URI。这是对需要旧行为进行测试的开发人员的覆盖。 12 \u0026ndash;allow-hidden-media-playback 允许媒体播放隐藏的Web内容 13 \u0026ndash;allow-http-background-page 允许托管应用的background_page的非https网址。 14 \u0026ndash;allow-http-screen-capture 允许非安全源使用屏幕捕获API和desktopCapture扩展API。 15 \u0026ndash;allow-insecure-localhost 允许忽略localhost上的TLS/SSL错误（无插页式，不阻止请求）。 16 \u0026ndash;allow-legacy-extension-manifests 允许浏览器加载缺少现代清单的扩展，否则将被禁止。 17 \u0026ndash;allow-loopback-in-peer-connection 允许在网络列表中添加环回接口以进行对等连接。 18 \u0026ndash;allow-nacl-crxfs-api 指定以逗号分隔的扩展ID或主机列表，以授予对CRX文件系统API的访问权限。 19 \u0026ndash;allow-nacl-file-handle-api 指定以逗号分隔的扩展ID或主机列表，以授予对文件句柄API的访问权限。 20 \u0026ndash;allow-nacl-socket-api 指定以逗号分隔的扩展ID或主机列表，以授予对TCP/UDP套接字API的访问权限。 21 \u0026ndash;allow-no-sandbox-job 使沙箱进程能够在不分配作业对象的情况下运行。需要此标志才能允许Chrome在RemoteApps或Citrix中运行。此标志可以降低沙盒进程的安全性，并允许它们执行某些API调用，如关闭Windows或访问剪贴板。此外，我们失去了杀死某些进程的机会，直到拥有它们的外部作业完成。 22 \u0026ndash;allow-outdated-plugins 不要阻止过时的插件。 23 \u0026ndash;allow-ra-in-dev-mode 允许在开发模式下进行远程证明（RA）以进行测试。通常RA在开发模式下被禁用，因为它总是会失败。但是，在测试的情况下，即使在开发模式下我们也希望通过权限流程。这个标志可以启用此功能。 24 \u0026ndash;allow-running-insecure-content 默认情况下，https页面无法从httpURL运行JavaScript，CSS或插件。这提供了一个覆盖来获取旧的不安全行为。 25 \u0026ndash;allow-sandbox-debugging 允许调试沙盒进程。 26 \u0026ndash;allow-silent-push 允许不显示通知的Web推送通知。 27 \u0026ndash;alsa-check-close-timeout 当没有剩余混频器输入时，在关闭PCM手柄之前等待的时间（以ms为单位）。如果\u0026ndash;accept-resource-provider存在，则假定为0。 28 \u0026ndash;alsa-enable-upsampling 标志，可以重新采样音频，采样率低于32kHz，最高可达48kHz。对于内部音频产品，应设置为true。 29 \u0026ndash;alsa-fixed-output-sample-rate 可选标志，用于为alsa设备设置固定的采样率。 30 \u0026ndash;alsa-input-device 打开音频输入流时使用的Alsa设备。 31 \u0026ndash;alsa-mute-device-name 应打开静音混音器的设备名称。如果未指定此标志，则它将默认为与kAlsaVolumeDeviceName相同的设备。 32 \u0026ndash;alsa-mute-element-name 基于ALSA的媒体库用于静音系统的简单混音器控制元素的名称。 33 \u0026ndash;alsa-output-avail-min 用于安排传输的最小可用帧数。 34 \u0026ndash;alsa-output-buffer-size ALSA输出缓冲区的大小（以帧为单位）。这直接设置输出设备的延迟。可以通过将采样率乘以输出缓冲区大小来计算延迟。 35 \u0026ndash;alsa-output-device 打开音频流时使用的Alsa设备。 36 \u0026ndash;alsa-output-period-size ALSA输出周期的大小（以帧为单位）。ALSA输出设备的周期确定硬件中断之间经过的帧数。 37 \u0026ndash;alsa-output-start-threshold 输出开始前输出缓冲区中需要多少帧。 38 \u0026ndash;alsa-volume-device-name 应打开音量控制混音器的设备名称。如果没有提供kAlsaOutputDevice，将使用与kAlsaOutputDevice相同的设备并回退到“default”。 39 \u0026ndash;alsa-volume-element-name 基于ALSA的媒体库用于控制音量的简单混音器控制元素的名称。 40 \u0026ndash;also-emit-success-logs 还会发出完整事件跟踪日志以进行成功测试 41 \u0026ndash;alternative 数据缩减代理使用Chrome-Proxy“exp”指令值来接收备用后端实现。 42 \u0026ndash;always-authorize-plugins 防止Chrome需要授权才能运行某些广泛安装但不太常用的插件。 43 \u0026ndash;always-use-complex-text 始终使用复杂的文本路径进行布局测试。 44 \u0026ndash;android-fonts-path 在linux上使用androidSkFontManager。指定的目录应包含名为“fonts.xml”的配置xml文件。这在blimp中用于在linux上模拟android字体。 45 \u0026ndash;android-stderr-port 将stderr重定向到给定端口。仅在Android上受支持。 46 \u0026ndash;android-stdin-port 将stdin重定向到给定端口。仅在Android上受支持。 47 \u0026ndash;android-stdout-port 将stdout重定向到给定端口。仅在Android上受支持。 48 \u0026ndash;app 指定应在“应用程序”模式下启动关联值。 49 \u0026ndash;app-auto-launched 指定以自助服务终端模式启动的应用是否自动启动且零延迟。用于在会话还原流程期间正确还原自动启动状态。 50 \u0026ndash;app-id 指定应根据其配置启动具有指定标识的extension-app。 51 \u0026ndash;app-mode-auth-code GAIAauth代码对\u0026ndash;force-app-mode的价值。 52 \u0026ndash;app-mode-oauth-token OAuth2刷新令牌对于\u0026ndash;force-app-mode的价值。 53 \u0026ndash;app-mode-oem-manifest app的OEM清单文件的路径。 54 \u0026ndash;app-shell-allow-roaming 允许在蜂窝网络中漫游。 55 \u0026ndash;app-shell-host-window-size 要创建的主机窗口的大小（即“800x600”）。 56 \u0026ndash;app-shell-preferred-network 首选WiFi网络的SSID。 57 \u0026ndash;app-shell-refresh-token 刷新当前用户的身份API调用令牌。用于测试。 58 \u0026ndash;app-shell-user 当前用户的用户电子邮件地址。 59 \u0026ndash;apps-gallery-download-url WebstoreAPI从中下载扩展的URL。注意:URL必须包含一个\u0026rsquo;％s\u0026rsquo;作为扩展ID。 60 \u0026ndash;apps-gallery-update-url gallery/webstore扩展使用的更新URL。 61 \u0026ndash;apps-gallery-url 用于应用启动器中图库链接的URL。 62 \u0026ndash;apps-keep-chrome-alive-in-tests ChromeApps打开时阻止Chrome退出。 63 \u0026ndash;arc-availability 在此设备上发出ARC支持状态信号。这可以采用以下三个值之一。 -none:此设备上未安装ARC。（默认）-已安装:ARC已安装在此设备上，但尚未获得官方支持。用户只有在启用Finch实验时才能启用ARC。 -官方支持:此设备上安装并支持ARC。因此用户可以通过设置等启用ARC. 64 \u0026ndash;arc-available 已弃用:请使用\u0026ndash;arc-availability=已安装。在此设备上发出ARC实例的可用性信号。 65 \u0026ndash;arc-start-mode 定义如何启动ARC。这可以采用以下值之一:-always-start自动从Play商店UI支持开始。 -总是在没有Play商店用户界面的情况下自动启动游戏商店。在这两种情况下，ARC几乎在所有情况下都在登录屏幕后启动 辅助配置文件是ARC无法启动的例外情况。如果未设置，则ARC以默认模式启动。 66 \u0026ndash;artifacts-dir 屏幕截图测试:指定将存储工件的directoru。 67 \u0026ndash;ash-animate-from-boot-splash-screen 启用从启动闪屏（白色背景上的Chrome徽标）到登录屏幕的动画过渡。 68 \u0026ndash;ash-copy-host-background-at-boot 在启动时将主机窗口的内容复制到系统背景层。 69 \u0026ndash;ash-debug-shortcuts 启用对调试有用的键盘快捷键。 70 \u0026ndash;ash-dev-shortcuts 仅启用开发人员使用的键盘快捷键。 71 \u0026ndash;ash-disable-smooth-screen-rotation 禁用更平滑的动画以进行屏幕旋转。 72 \u0026ndash;ash-disable-touch-exploration-mode 禁用触摸探索模式。当设置此标志时，如果启用了语音反馈，则触摸探索模式将不再自动打开。 73 \u0026ndash;ash-enable-magnifier-key-scroller 启用键绑定以滚动放大屏幕。 74 \u0026ndash;ash-enable-mirrored-screen 启用镜像屏幕。 75 \u0026ndash;ash-enable-night-light 启用夜灯功能。 76 \u0026ndash;ash-enable-palette-on-all-displays 在每个显示器上启用调色板，而不是仅在内部显示器上。 77 \u0026ndash;ash-enable-scale-settings-tray 启用显示比例托盘设置。这使用force-device-scale-factor标志将设备的dsf修改为任何非离散值。 78 \u0026ndash;ash-enable-software-mirroring 启用基于软件的镜像。 79 \u0026ndash;ash-enable-unified-desktop 启用统一桌面模式。 80 \u0026ndash;ash-estimated-presentation-delay 指定从VSYNC事件到用户可以注意到可见光的估计时间（以毫秒为单位）。 81 \u0026ndash;ash-hide-notifications-for-factory 隐藏与ChromeOS设备工厂测试无关的通知，例如电池级更新。 82 \u0026ndash;ash-host-window-bounds 设置窗口大小，可选位置和可选比例因子。“1024x768”创建一个大小为1024x768的窗口。“100+200-1024x768”将窗口定位在100,200。对于高DPI显示，“1024x768*2”将比例因子设置为2。“800,0+800-800x800”适用于800x800分辨率的两个显示器。“800,0+800-800x800,0+1600-800x800”适用于800x800分辨率的三个显示器。 83 \u0026ndash;ash-shelf-color 允许从壁纸派生货架颜色。 84 \u0026ndash;ash-shelf-color-scheme |kAshShelfColor|时使用的颜色方案 功能已启用。 85 \u0026ndash;ash-touch-hud 启用抬头显示器以跟踪触摸点。 86 \u0026ndash;ash-webui-init 如果未禁用壁纸启动动画，则此开关用于覆盖WebUI初始化类型中的OOBE/签名。可能的值:parallel|postpone。默认值:parallel。 87 \u0026ndash;attestation-server 确定要用于证明的Google隐私CA. 88 \u0026ndash;audio-buffer-size 允许用户指定自定义缓冲区大小以进行调试。 89 \u0026ndash;audio-output-channels 音频输出通道数。这将用于将具有特定通道数的音频缓冲区发送到ALSA并生成环回音频。默认值为2. 90 \u0026ndash;aura-legacy-power-button （大多数）ChromeOS硬件正确报告ACPI电源按钮释放。压力后立即发布标准硬件报告。如果设置，我们会立即锁定屏幕或关闭系统以响应按下而不是显示交互式动画。 91 \u0026ndash;auth-ext-path 启用覆盖默认身份验证扩展的路径。 92 \u0026ndash;auth-server-whitelist 协商Auth服务器的白名单 93 \u0026ndash;auth-spnego-account-type 用于SPNEGO身份验证的Android身份验证帐户类型 94 \u0026ndash;auto kTouchEventFeatureDetection开关可能具有的值，如\u0026ndash;touch-events=disabled。auto:启用附加触摸屏时启动时启用。 95 \u0026ndash;auto-open-devtools-for-tabs 此标记使每个标签的Chrome自动打开DevTools窗口。它旨在供开发人员和自动化使用，不需要用户交互来打开DevTools。 96 \u0026ndash;auto-select-desktop-capture-source 当扩展程序要求启动桌面捕获权限时，此标记会使Chrome自动选择提供的选项。只应用于测试。例如，-auto-select-desktop-capture-source=“整个屏幕”将自动选择以英语语言环境共享整个屏幕。 97 \u0026ndash;autoplay-policy 命令行标志名称以设置自动播放策略。 98 \u0026ndash;blink-settings 设置闪烁设置。 99 \u0026ndash;bootstrap kExtensionContentVerification标志的值。 100 \u0026ndash;browser-startup-dialog 使浏览器进程在启动时显示对话框。 101 \u0026ndash;browser-subprocess-path 为渲染器和插件子进程运行的exe的路径。 102 \u0026ndash;browser-test 告诉ContentShell它正在作为content_browsertest运行。 103 \u0026ndash;bwsi 表示浏览器处于“无需登录浏览”（访客会话）模式。应该完全禁用扩展，同步和书签。 104 \u0026ndash;bypass-app-banner-engagement-checks 此标志会导致用户参与检查以显示绕过的应用横幅。 105 \u0026ndash;canvas-msaa-sample-count canvas2D的MSAA样本数量。需要GPU支持MSAA才能产生效果。0禁用MSAA。 106 \u0026ndash;cast-initial-screen-width 用于将初始屏幕分辨率传递给GPU进程。这允许我们正确设置屏幕大小（因此在创建第一个窗口时无需调整大小）。 107 \u0026ndash;cc-layer-tree-test-long-timeout 增加内存检查器的超时。 108 \u0026ndash;cc-layer-tree-test-no-timeout 防止层树单元测试超时。 109 \u0026ndash;cc-rebaseline-pixeltests 使像素测试写出输出而不是读取它。 110 \u0026ndash;cellular-first 如果设置了此标志，则表示此设备是“蜂窝优先”设备。 111 \u0026ndash;check-for-update-interval 检查更新的频率（以秒为单位）。只应用于测试目的。 112 \u0026ndash;check-layout-test-sys-deps 检查是否满足运行布局测试的所有系统依赖性。 113 \u0026ndash;child-wallpaper-large 用于孩子帐户的默认大型壁纸（作为可信，非用户可写JPEG文件的路径）。 114 \u0026ndash;child-wallpaper-small 用于孩子帐户的默认小型壁纸（作为可信，非用户可写JPEG文件的路径）。 115 \u0026ndash;chrome-home-swipe-logic 用于SPNEGO身份验证的Android身份验证帐户类型 116 \u0026ndash;ChromeOSMemoryPressureHandling 内存压力阈值选择，用于决定是否以及何时需要触发内存压力事件。 117 \u0026ndash;cipher-suite-blacklist 要禁用的以逗号分隔的SSL密码套件列表。 118 \u0026ndash;class 与X应用程序中的\u0026ndash;class参数相同。使用给定值覆盖WM_CLASS窗口属性。 119 \u0026ndash;clear-token-service 在使用之前清除令牌服务。这允许在测试期间模拟凭证的到期。 120 \u0026ndash;cloud-print-file 告诉chrome显示云打印对话框并上传指定的文件进行打印。 121 \u0026ndash;cloud-print-file-type 指定从cloud-print-file引用的文件上载数据时要使用的mime类型。如果未指定，则默认为“application/pdf”。 122 \u0026ndash;cloud-print-job-title 与kCloudPrintFile一起使用，以指定生成的打印作业的标题。 123 \u0026ndash;cloud-print-print-ticket 与kCloudPrintFile一起使用，为生成的打印作业指定JSON打印票证。如果未指定，则默认为null。 124 \u0026ndash;cloud-print-setup-proxy 为提供的打印机设置云打印代理。这不会启动服务或注册自动启动代理。 125 \u0026ndash;cloud-print-url 要使用的云打印服务的URL，将覆盖存储在首选项中的任何值以及默认值。仅在启用了云打印服务时使用。用于测试。 126 \u0026ndash;cloud-print-xmpp-endpoint 云打印服务将使用的XMPP端点。仅在启用了云打印服务时使用。用于测试。 127 \u0026ndash;compensate-for-unstable-pinch-zoom 为不稳定的捏拉变焦启用补偿。当手指沿直线移动时，一些触摸屏显示大量摆动。这使得两个手指滚动触发振荡捏缩放。 128 \u0026ndash;compile-shader-always-succeeds 编译着色器时始终返回成功。链接仍然会失败。 129 \u0026ndash;component-updater 用逗号分隔的选项来排除组件更新程序的故障。仅对浏览器进程有效。 130 \u0026ndash;connectivity-check-url 用于网络连接检查的URL。 131 \u0026ndash;content-image-texture-target CHROMIUM_image支持内容纹理的纹理目标。 132 \u0026ndash;content-shell-host-window-size content_shell主机窗口的大小（即“800x600”）。 133 \u0026ndash;crash-dumps-dir 目录破解板应该存储小型转储器. 134 \u0026ndash;crash-on-failure 当指定为“enable-leak-detection”命令行选项时，如果发现泄漏，则会导致检漏仪立即崩溃。 135 \u0026ndash;crash-on-hang-threads 以逗号分隔的BrowserThreads列表，如果给定的浏览器线程没有响应，则导致浏览器进程崩溃。UI，IO，DB，FILE，CACHE是受支持的BrowserThreads列表。 136 \u0026ndash;crash-server-url 将崩溃数据上传到的服务器URL。 137 \u0026ndash;crash-test 导致浏览器进程在启动时崩溃。 138 \u0026ndash;crashpad-handler 一个进程类型（switch::kProcessType），表示chrome.exe或setup.exe正在作为crashpad_handler启动。这仅适用于Windows。我们将处理程序捆绑到Windows上的chrome.exe中，因为“新”.exe很可能被应用程序防火墙，AV软件等阻止或干扰。在其他平台上，crashpad_handler是一个独立的可执行文件。 139 \u0026ndash;create-browser-on-startup-for-tests 某些平台（如ChromeOS）默认为空桌面。 140 \u0026ndash;create-default-gl-context 向GLX驱动程序询问默认上下文，而不是尝试获得最高版本。 141 \u0026ndash;cros-gaia-api-v1 强制使用ChromeOSGaiaAPIv1。 142 \u0026ndash;cros-region 强制CrOS区域值。 143 \u0026ndash;cros-regions-mode 控制区域数据加载。 144 \u0026ndash;crosh-command 自定义crosh命令。 145 \u0026ndash;cryptauth-http-host 覆盖CryptAuth使用的GoogleAPI的默认网址。 146 \u0026ndash;custom-devtools-frontend 为devtools测试指定devtools的自定义路径 147 \u0026ndash;custom-launcher-page 指定chrome-extension://URL，用于添加到应用启动器的其他页面的内容。 148 \u0026ndash;custom_summary 强制自定义摘要显示在更新菜单项下方。 149 \u0026ndash;data-path 使内容Shell使用其数据目录的给定路径。 150 \u0026ndash;data-reduction-proxy-config-url 从中检索数据缩减代理配置的URL。 151 \u0026ndash;data-reduction-proxy-experiment 要运行的数据缩减代理实验的名称。这些实验由代理服务器定义。使用\u0026ndash;force-fieldtrials进行数据缩减代理现场试验。 152 \u0026ndash;data-reduction-proxy-http-proxies 以分号分隔的代理服务器URI列表，用于覆盖DataSaverAPI返回的HTTP代理列表。 153 \u0026ndash;data-reduction-proxy-lo-fi 数据缩减代理Lo-Fi的模式。各种模式始终开启，仅限蜂窝，仅缓慢连接和禁用。 154 \u0026ndash;data-reduction-proxy-secure-proxy-check-url 在提交使用数据缩减代理之前，设置要测试的安全代理检查URL。请注意，此检查不会通过数据缩减代理。 155 \u0026ndash;data-reduction-proxy-server-experiments-disabled 禁用可通过现场试用启用的服务器实验。 156 \u0026ndash;dbus-stub 强制dbus客户端的存根实现。 157 \u0026ndash;debug-devtools 在调试模式下运行devtools测试（不捆绑和缩小） 158 \u0026ndash;debug-enable-frame-toggle 启用框架上下文菜单项，可以将框架切换为玻璃模式（仅限WindowsVista和更高版本）。 159 \u0026ndash;debug-packed-apps 将InspectElement等调试条目添加到打包应用程序的上下文菜单中。 160 \u0026ndash;debug-print 支持调试打印子系统。 161 \u0026ndash;default-background-color 如果页面未指定背景颜色，则使用背景颜色。提供为十六进制的RGBA整数值，例如\u0026rsquo;ff0000ff\u0026rsquo;表示红色或'00000000\u0026rsquo;表示透明。 162 \u0026ndash;default-tile-width 设置合成图层使用的图块大小。 163 \u0026ndash;default-wallpaper-is-oem 表示由kAshDefaultWallpaper{Large，Small}指定的壁纸图像是OEM特定的（即它们不能从Google下载）。 164 \u0026ndash;default-wallpaper-large 要使用的默认大型壁纸（作为可信，非用户可写JPEG文件的路径）。 165 \u0026ndash;default-wallpaper-small 要使用的默认小型壁纸（作为可信，非用户可写JPEG文件的路径）。 166 \u0026ndash;demo 蜂窝网络上DataSaver提示的可选值。 167 \u0026ndash;derelict-detection-timeout 在OOBE的机器被认为是废弃之前的时间（以秒为单位）。 168 \u0026ndash;derelict-idle-timeout 在废弃机器启动演示模式之前的秒数。 169 \u0026ndash;desktop-window-1080p 当存在时，桌面cast_shell将创建1080p窗口（提供的显示分辨率足够高）。否则，cast_shell默认为720p。 170 \u0026ndash;deterministic-fetch 指示headless_shell使网络提取按创建顺序完成。这消除了网络相关的非确定性的重要来源，代价是较慢的页面加载。 171 \u0026ndash;device-management-url 指定从设备管理后端获取配置策略的URL。 172 \u0026ndash;device-scale-factor 设备比例因子传递给某些过程，如渲染器等. 173 \u0026ndash;devtools-flags 将命令行参数传递给DevTools前端。 174 \u0026ndash;diagnostics 触发过多的诊断模式。 175 \u0026ndash;diagnostics-format 设置诊断标志启用的诊断模式的输出格式。 176 \u0026ndash;diagnostics-recovery 告知诊断模式执行请求的恢复步骤。 177 \u0026ndash;disable kShowSavedCopy标志的值。 178 \u0026ndash;disable-2d-canvas-clip-aa 在2d画布剪辑上禁用抗锯齿 179 \u0026ndash;disable-2d-canvas-image-chromium 禁用Canvas2D渲染到扫描输出缓冲区以支持叠加。 180 \u0026ndash;disable-3d-apis 禁用客户端可见的3DAPI，特别是WebGL和Pepper3D。这由策略控制，并与其他启用/禁用开关分开，以避免意外地回退策略支持以控制对这些API的访问。 181 \u0026ndash;disable-accelerated-2d-canvas 禁用gpu-accelerated2d画布。 182 \u0026ndash;disable-accelerated-jpeg-decoding 使用GPU禁用部分解码jpeg图像。不使用此标志时，至少会加速YUV解码。除非启用GPU光栅化，否则无效。 183 \u0026ndash;disable-accelerated-mjpeg-decode 在可用的情况下，禁用捕获帧的mjpeg解码的硬件加速。 184 \u0026ndash;disable-accelerated-video-decode 在可用的情况下禁用视频解码的硬件加速。 185 \u0026ndash;disable-app-info-dialog-mac 禁用Mac的工具箱视图应用程序信息对话框。 186 \u0026ndash;disable-app-list-dismiss-on-blur 如果设置，则应用程序列表在失去焦点时不会被解除。这在测试应用列表或自定义启动器页面时非常有用。它仍然可以通过其他方法（如Esc键）解除。 187 \u0026ndash;disable-app-window-cycling 禁用平台应用和托管应用的自定义Cmd+`窗口循环。 188 \u0026ndash;disable-arc-data-wipe 禁用Android用户数据擦除选择退出。 189 \u0026ndash;disable-arc-opt-in-verification 禁用ARCOpt-in验证过程，默认情况下启用ARC。 190 \u0026ndash;disable-avfoundation-overlays 禁止使用AVFoundation绘制视频内容。 191 \u0026ndash;disable-background-networking 禁用在后台运行网络请求的多个子系统。这用于进行网络性能测试以避免测量中的噪声。 192 \u0026ndash;disable-background-timer-throttling 从后台页面禁用任务限制计时器任务。 193 \u0026ndash;disable-backing-store-limit 禁用后备存储数量限制。可以防止具有许多窗口/标签和大量内存的用户闪烁。 194 \u0026ndash;disable-blink-features 禁用一个或多个启用Blink运行时的功能。 195 \u0026ndash;disable-bookmark-reordering 禁用书签重新排序。 196 \u0026ndash;disable-boot-animation 禁用壁纸启动动画（OOBE情况除外）。 197 \u0026ndash;disable-breakpad 禁用崩溃报告。 198 \u0026ndash;disable-bundled-ppapi-flash 禁用捆绑的PPAPI版本的Flash。 199 \u0026ndash;disable-canvas-aa 在2d画布上禁用抗锯齿。 200 \u0026ndash;disable-captive-portal-bypass-proxy 禁用旁路代理以进行强制门户授权。 201 \u0026ndash;disable-cast-streaming-hw-encoding 禁用CastStreaming的硬件编码支持。 202 \u0026ndash;disable-checker-imaging 禁用延迟图像解码到图像解码服务。 203 \u0026ndash;disable-clear-browsing-data-counters 在“清除浏览数据”对话框中禁用数据量计数器。 204 \u0026ndash;disable-client-side-phishing-detection 禁用客户端网络钓鱼检测功能。 205 \u0026ndash;disable-cloud-import 禁用云备份功能。 206 \u0026ndash;disable-component-cloud-policy 禁用为组件提取和存储云策略。 207 \u0026ndash;disable-component-extensions-with-background-pages 禁用带有背景页面的默认组件扩展-对于这些页面可能会干扰perf结果的性能测试非常有用。 208 \u0026ndash;disable-composited-antialiasing 禁用合成器中的图层边缘消除锯齿。 209 \u0026ndash;disable-contextual-search 禁用上下文搜索。 210 \u0026ndash;disable-d3d11 禁用D3D11。 211 \u0026ndash;disable-databases 禁用HTML5数据库支持。 212 \u0026ndash;disable-datasaver-prompt 在蜂窝网络上禁用DataSaver提示。 213 \u0026ndash;disable-default-apps 首次运行时禁用默认应用程序的安装。这在自动化测试期间使用。 214 \u0026ndash;disable-demo-mode 停用Chrome操作系统演示。 215 \u0026ndash;disable-device-disabling 如果设置此开关，则其所有者无法远程禁用该设备。 216 \u0026ndash;disable-device-discovery-notifications 禁用设备发现通知。 217 \u0026ndash;disable-dinosaur-easter-egg 禁用离线插页式广告中的恐龙复活节彩蛋。 218 \u0026ndash;disable-direct-composition 禁止使用DirectComposition绘制到屏幕。 219 \u0026ndash;disable-direct-composition-layers 禁用使用DirectComposition图层。 220 \u0026ndash;disable-directwrite-for-ui 禁用一般UI元素的DirectWrite字体呈现。 221 \u0026ndash;disable-distance-field-text 禁用距离字段文本。 222 \u0026ndash;disable-domain-blocking-for-3d-apis GPU重置后禁用3DAPI的每域阻止。此开关仅用于测试。 223 \u0026ndash;disable-domain-reliability 禁用域可靠性监视。 224 \u0026ndash;disable-dwm-composition 禁用顶级窗口使用DWM合成。 225 \u0026ndash;disable-encryption-migration 禁用用户加密的加密迁移以运行最新的Arc。 226 \u0026ndash;disable-eol-notification 设备处于寿命终止状态时禁用通知。 227 \u0026ndash;disable-es3-apis 禁用OpenGLES3API。这反过来将禁用WebGL2。 228 \u0026ndash;disable-es3-gl-context 禁用ES3后端（改为使用ES2后端）。 229 \u0026ndash;disable-extensions 禁用扩展程序 230 \u0026ndash;disable-extensions-except 禁用除逗号分隔列表中指定的扩展名以外的扩展名。 231 \u0026ndash;disable-extensions-file-access-check 禁止检查用户选择加入想要将脚本注入文件URL的扩展（即始终允许）。这在自动化测试期间使用。 232 \u0026ndash;disable-extensions-http-throttling 对源自扩展的请求禁用net::URLRequestThrottlerManager功能。 233 \u0026ndash;disable-features 列表以逗号分隔要禁用的要素的名称。有关详细信息，请参阅base::FeatureList::InitializeFromCommandLine。 234 \u0026ndash;disable-field-trial-config 禁用fieldtrial_testing_config.json中配置的现场试验测试。 235 \u0026ndash;disable-file-manager-touch-mode “文件”应用的触摸屏特定交互。 236 \u0026ndash;disable-file-system 禁用FileSystemAPI。 237 \u0026ndash;disable-flash-3d 在挡板内禁用3D。 238 \u0026ndash;disable-flash-stage3d 在挡板内禁用Stage3D。 239 \u0026ndash;disable-fullscreen-low-power-mode 在Mac上禁用全屏低功耗模式。 240 \u0026ndash;disable-fullscreen-tab-detaching 在Mac上禁用全屏模式下的选项卡分离。 241 \u0026ndash;disable-gaia-services 禁用GAIA服务，例如注册和OAuth会话还原。由“假”遥测登录使用。 242 \u0026ndash;disable-gesture-requirement-for-presentation 禁用演示文稿的用户手势要求。 243 \u0026ndash;disable-gl-drawing-for-tests 禁用产生像素输出的GL绘图操作。 244 \u0026ndash;disable-gl-error-limit 禁用GL错误日志限制。 245 \u0026ndash;disable-gl-extensions 如果找到，则禁用指定的逗号分隔GL扩展。 246 \u0026ndash;disable-glsl-translator 禁用GLSL转换器。 247 \u0026ndash;disable-gpu 禁用GPU硬件加速。如果软件渲染器不到位，则GPU进程将无法启动。 248 \u0026ndash;disable-gpu-compositing 阻止合成器使用其GPU实现。 249 \u0026ndash;disable-gpu-driver-bug-workarounds 禁用各种GPU驱动程序错误的变通方法。 250 \u0026ndash;disable-gpu-early-init 禁用GPU进程的主动早期初始化。 251 \u0026ndash;disable-gpu-memory-buffer-compositor-resources 不要强制所有合成器资源都由GPU内存缓冲区支持。 252 \u0026ndash;disable-gpu-memory-buffer-video-frames 禁用GpuMemoryBuffer支持的VideoFrames。 253 \u0026ndash;disable-gpu-process-crash-limit 禁用GPU进程重启次数的限制。适用于禁用软件回退的测试和平台。 254 \u0026ndash;disable-gpu-program-cache 关闭gpu程序缓存 255 \u0026ndash;disable-gpu-rasterization 禁用GPU光栅化，即仅在CPU上进行光栅化。覆盖kEnableGpuRasterization和kForceGpuRasterization标志。 256 \u0026ndash;disable-gpu-sandbox 禁用GPU进程沙箱。 257 \u0026ndash;disable-gpu-shader-disk-cache 禁用磁盘缓存上的GPU着色器。 258 \u0026ndash;disable-gpu-vsync 在呈现之前阻止GPU在vsync上进行同步。 259 \u0026ndash;disable-gpu-watchdog 如果线程停止响应消息，则禁用崩溃GPU进程的线程。 260 \u0026ndash;disable-hang-monitor 禁止在渲染器进程中挂起监视器对话框。 261 \u0026ndash;disable-hid-detection-on-oobe 禁用HID检测OOBE屏幕。 262 \u0026ndash;disable-histogram-customizer 禁用RenderThread的HistogramCustomizer。 263 \u0026ndash;disable-hosted-app-shim-creation 禁用Mac上托管应用程序的应用程序填充程序创建。 264 \u0026ndash;disable-hosted-apps-in-windows 防止在Mac上的Windows中打开托管应用程序。 265 \u0026ndash;disable-in-process-stack-traces 禁用进程内堆栈跟踪。 266 \u0026ndash;disable-infobars 防止信息栏出现。 267 \u0026ndash;disable-ios-password-suggestions 当关注表单字段时，禁用在键盘附件视图中显示可用的密码凭据。 268 \u0026ndash;disable-ios-physical-web 禁用附近URL的物理Web扫描。 269 \u0026ndash;disable-javascript-harmony-shipping 禁用最新的运输ECMAScript6功能。 270 \u0026ndash;disable-kill-after-bad-ipc 发送错误的IPC消息时不要杀死子进程。 271 \u0026ndash;disable-lcd-text 禁用LCD文本。 272 \u0026ndash;disable-legacy-window 禁用与WebContents大小相对应的旧版窗口。 273 \u0026ndash;disable-local-storage 禁用LocalStorage。 274 \u0026ndash;disable-logging 强制日志记录被禁用。默认情况下，在调试版本中启用日志记录。 275 \u0026ndash;disable-logging-redirect 禁用日志记录重定向以进行测试。 276 \u0026ndash;disable-login-animations 登录时避免使用昂贵的动画。 277 \u0026ndash;disable-login-screen-apps 在登录屏幕上禁用应用程序。默认情况下，它们是允许的，可以通过策略安装。 278 \u0026ndash;disable-low-end-device-mode 设置时强制禁用低端设备模式。 279 \u0026ndash;disable-low-latency-dxva 创建DXVA解码器时禁用CODECAPI_AVLowLatencyMode。 280 \u0026ndash;disable-low-res-tiling 使用CPU光栅化时禁用低分辨率平铺。 281 \u0026ndash;disable-mac-overlays 回退使用CAOpenGLLayers显示内容，而不是基于IOSurface的叠加显示路径。 282 \u0026ndash;disable-mac-views-native-app-windows 禁用基于工具箱视图的本机应用程序窗口。 283 \u0026ndash;disable-machine-cert-request 在证明期间禁用对企业计算机证书的请求。 284 \u0026ndash;disable-main-frame-before-activation 禁用在上一次提交激活之前发送下一个BeginMainFrame。 285 \u0026ndash;disable-md-oobe 禁用材质设计OOBEUI。 286 \u0026ndash;disable-media-session-api 禁用媒体会话API 287 \u0026ndash;disable-merge-key-char-events 禁用将键事件（WM_KEY*）与char事件（WM_CHAR）合并。 288 \u0026ndash;disable-mojo-local-storage 不要使用基于Mojo的LocalStorage实现。 289 \u0026ndash;disable-mojo-renderer 而不是使用在媒体服务中远程托管的渲染器，而是回退到content_renderer中的默认渲染器。不会更改媒体服务的行为。 290 \u0026ndash;disable-mtp-write-support 禁用mtp写支持。 291 \u0026ndash;disable-multi-display-layout 禁用多显示布局UI。 292 \u0026ndash;disable-namespace-sandbox 禁用命名空间沙箱的使用。 293 \u0026ndash;disable-native-gpu-memory-buffers 禁用本机GPU内存缓冲区支持。 294 \u0026ndash;disable-network-portal-notification 在会话中禁用有关强制网络门户的通知。 295 \u0026ndash;disable-new-channel-switcher-ui 禁用新的频道切换器UI。 296 \u0026ndash;disable-new-korean-ime 在chrome://settings/languages中禁用新的韩语IME。 297 \u0026ndash;disable-new-virtual-keyboard-behavior 禁用虚拟键盘的新窗口行为（不要在非粘滞模式下更改工作区）。 298 \u0026ndash;disable-new-zip-unpacker 禁用基于新的基于文件系统提供程序API的ZIP解包程序。 299 \u0026ndash;disable-notifications 禁用Web通知和推送API。 300 \u0026ndash;disable-ntp-most-likely-favicons-from-server 禁用新的Googlefavicon服务器，以便在“新标签页”上获取“最可能”图块的图标。 301 \u0026ndash;disable-ntp-popular-sites 禁用在NTP上显示热门网站。 302 \u0026ndash;disable-nv12-dxgi-video 禁用视频解码器绘制到NV12纹理而不是ARGB。 303 \u0026ndash;disable-offer-store-unmasked-wallet-cards 强制隐藏自动填充对话框中的本地保存复选框，以获取钱包卡的完整信用卡号。该卡永远不会存储在本地。 304 \u0026ndash;disable-offer-upload-credit-cards 禁止提供上传信用卡。 305 \u0026ndash;disable-office-editing-component-extension 禁用文档，表格和幻灯片组件应用程序的Office编辑，因此不会注册处理程序，从而可以安装另一个版本进行测试。 306 \u0026ndash;disable-offline-auto-reload 如果脱机，则禁用错误页面的自动重新加载。 307 \u0026ndash;disable-offline-auto-reload-visible-only 当选项卡可见时，仅禁用自动重新加载错误页面。 308 \u0026ndash;disable-origin-trial-controlled-blink-features 禁用可通过OriginTrials启用的所有RuntimeEnabledFeatures。 309 \u0026ndash;disable-overscroll-edge-effect 禁用像Android视图中那样的过度滚动边缘效果。 310 \u0026ndash;disable-panel-fitting 禁用面板拟合（用于镜像模式）。 311 \u0026ndash;disable-partial-raster 禁用渲染器中的部分栅格。 312 \u0026ndash;disable-password-generation 当我们检测到用户正在创建帐户时禁用密码生成。 313 \u0026ndash;disable-pepper-3d 禁用Pepper3D。 314 \u0026ndash;disable-pepper-3d-image-chromium 禁用辣椒3d的图像铬。 315 \u0026ndash;disable-per-user-timezone 禁用每个用户的时区。 316 \u0026ndash;disable-permission-action-reporting 禁用向选择加入的用户的安全浏览服务器报告权限操作。 317 \u0026ndash;disable-permissions-api 禁用权限API。 318 \u0026ndash;disable-physical-keyboard-autocorrect 在物理键盘上键入时禁用建议。 319 \u0026ndash;disable-pinch 禁用合成器加速的触摸屏捏合手势。 320 \u0026ndash;disable-pnacl-crash-throttling 禁用PortableNativeClient的崩溃限制。 321 \u0026ndash;disable-popup-blocking 禁用弹出窗口阻止。 322 \u0026ndash;disable-prefer-compositing-to-lcd-text 当它会阻止LCD文本时，禁止创建合成图层。 323 \u0026ndash;disable-presentation-api 禁用PresentationAPI。 324 \u0026ndash;disable-print-preview 禁用打印预览（用于测试，以及不喜欢我们的用户。 325 \u0026ndash;disable-prompt-on-repost 通常，当用户尝试导航到作为帖子结果的页面时，我们会提示确保他们想要。此开关可用于禁用该检查。在自动测试期间使用此开关。 326 \u0026ndash;disable-proximity-auth-bluetooth-low-energy-discovery 禁用通过蓝牙低功耗发现手机。 327 \u0026ndash;disable-pull-to-refresh-effect 垂直过度滚动内容时禁用拉动刷新效果。 328 \u0026ndash;disable-push-api-background-mode 启用PushAPI的后台模式。 329 \u0026ndash;disable-reading-from-canvas 无论原点如何，都会污染所有 330 \u0026ndash;disable-remote-core-animation 禁止使用跨进程CALayers直接从Mac上的GPU进程显示内容。 331 \u0026ndash;disable-remote-fonts 禁用远程Web字体支持。无论是否指定此选项，SVG字体应始终有效。 332 \u0026ndash;disable-remote-playback-api 禁用RemotePlaybackAPI。 333 \u0026ndash;disable-renderer-accessibility 关闭渲染器中的辅助功能。 334 \u0026ndash;disable-renderer-backgrounding 设置时阻止渲染器进程后台处理。 335 \u0026ndash;disable-renderer-priority-management 设置时，根本不管理渲染器进程优先级。 336 \u0026ndash;disable-resize-lock 是否禁用了调整大小锁定。默认值为false。这通常仅对想要强制禁用的测试有用。 337 \u0026ndash;disable-rgba-4444-textures 禁用RGBA_4444纹理。 338 \u0026ndash;disable-rollback-option 禁用重置屏幕上的回滚选项。 339 \u0026ndash;disable-rtc-smoothness-algorithm 禁用webrtc的新渲染算法，该算法旨在提高渲染的平滑度。 340 \u0026ndash;disable-screen-orientation-lock 禁用屏幕方向API的锁定功能。 341 \u0026ndash;disable-search-geolocation-disclosure 禁用显示搜索地理位置公开UI。用于性能测试。 342 \u0026ndash;disable-seccomp-filter-sandbox 禁用seccomp过滤器沙箱（seccomp-bpf）（仅限Linux）。 343 \u0026ndash;disable-setuid-sandbox 禁用setuid沙箱（仅限Linux）。 344 \u0026ndash;disable-shader-name-hashing 在着色器中关闭用户定义的名称哈希。 345 \u0026ndash;disable-shared-workers 禁用共享工作者。 346 \u0026ndash;disable-signin-promo 禁用登录促销。 347 \u0026ndash;disable-signin-scoped-device-id 禁用使用刷新令牌请求将登录范围的设备ID发送到LSO。 348 \u0026ndash;disable-single-click-autofill kEnableSingleClickAutofill的“禁用”标志。 349 \u0026ndash;disable-skia-runtime-opts 不要在Skia中使用运行时检测到的高端CPU优化 350 \u0026ndash;disable-slim-navigation-manager 禁用基于WKBackForwardList的导航管理器实验。 351 \u0026ndash;disable-slimming-paint-invalidation 禁用基于减肥涂料的油漆失效。请参阅kEnableSlimmingPaintInvalidation。 352 \u0026ndash;disable-smooth-scrolling 禁用平滑滚动进行测试。 353 \u0026ndash;disable-software-rasterizer 禁用3D软件光栅化器。 354 \u0026ndash;disable-speech-api 禁用WebSpeechAPI。 355 \u0026ndash;disable-suggestions-ui 禁用建议UI 356 \u0026ndash;disable-surface-references 使用曲面参考禁用曲面寿命管理。这样可以添加曲面序列并禁用添加临时参考。 357 \u0026ndash;disable-sync 禁用将浏览器数据同步到Google帐户。 358 \u0026ndash;disable-sync-types 禁用同步默认启用的一个或多个同步数据类型。 359 \u0026ndash;disable-system-timezone-automatic-detection 禁用SystemTimezoneAutomaticDetection策略。 360 \u0026ndash;disable-tab-for-desktop-share 启用桌面共享选项卡。 361 \u0026ndash;disable-third-party-keyboard-workaround 禁用第三方键盘多功能框解决方法。 362 \u0026ndash;disable-threaded-compositing 禁用多线程GPU合成Web内容。 363 \u0026ndash;disable-threaded-scrolling 禁用Web内容的多线程，合成器滚动。 364 \u0026ndash;disable-timeouts-for-profiling 禁用可能导致浏览器在运行缓慢时死亡的超时。 365 \u0026ndash;disable-touch-adjustment 禁用触摸调整。 366 \u0026ndash;disable-touch-drag-drop 禁用基于拖放的触摸事件。 367 \u0026ndash;disable-translate-new-ux 禁用翻译替换信息栏的实验性新用户体验。 368 \u0026ndash;disable-usb-keyboard-detect 禁用USB键盘检测以阻止Win8+上的OSK。 369 \u0026ndash;disable-v8-idle-tasks 禁用V8空闲任务。 370 \u0026ndash;disable-vaapi-accelerated-video-encode 禁用VA-API加速视频编码。 371 \u0026ndash;disable-volume-adjust-sound 禁用音量调节声音。 372 \u0026ndash;disable-wake-on-wifi 禁用WiFi功能唤醒。 373 \u0026ndash;disable-web-notification-custom-layouts 禁用Web通知自定义布局。 374 \u0026ndash;disable-web-security 不要强制执行同源策略。（由测试他们网站的人使用。） 375 \u0026ndash;disable-webgl 禁用实验性WebGL支持。 376 \u0026ndash;disable-webgl-image-chromium 禁用WebGL渲染到扫描输出缓冲区以支持叠加。 377 \u0026ndash;disable-webrtc-encryption 禁用WebRTC的RTP媒体加密。 378 \u0026ndash;disable-webrtc-hw-decoding 禁用WebRTC的HW解码加速。 379 \u0026ndash;disable-webrtc-hw-encoding 禁用WebRTC的HW编码加速。 380 \u0026ndash;disable-win32k-lockdown 禁用子进程的Win32K进程缓解策略。 381 \u0026ndash;disable-xss-auditor 禁用Blink的XSSAuditor。XSSAuditor减轻了反射XSS。 382 \u0026ndash;disable-zero-browsers-open-for-tests 某些测试似乎要求应用程序在最后一个浏览器窗口关闭时关闭。因此，我们需要一个开关来强制ChromeOSAura的这种行为，禁用“零窗口模式”。TODO（pkotwicz）:调查是否可以删除此错误。 383 \u0026ndash;disable-zero-copy 禁用直接写入与磁贴关联的GPU内存的光栅化器。 384 \u0026ndash;disable-zero-copy-dxgi-video 禁用视频解码器直接绘制到纹理。 385 \u0026ndash;disabled 禁用:触摸事件已禁用。 386 \u0026ndash;disallow-non-exact-resource-reuse 禁用重复使用非精确资源以完成ResourcePool请求。仅用于布局或像素测试以降低噪音。 387 \u0026ndash;disk-cache-dir 使用特定的磁盘缓存位置，而不是从UserDatadir派生的位置。 388 \u0026ndash;disk-cache-size 强制磁盘高速缓存使用的最大磁盘空间（以字节为单位）。 389 \u0026ndash;display 哪个X11显示器连接到。模拟GTK+“-display=”命令行参数。 390 \u0026ndash;dmg-device 当switch::kProcessType为switches::kRelauncherProcess时，如果此开关也存在，则relauncher进程将卸载并弹出已装入的磁盘映像并将其磁盘映像文件移至废纸篓。参数的值必须是“diskN”或“diskNsM”形式的BSD设备名称。 391 \u0026ndash;document-user-activation-required 需要文档用户激活的自动播放策略。 392 \u0026ndash;dom-automation 指定是否|DOMAutomationController| 需要在渲染器中绑定。 393 \u0026ndash;draw-view-bounds-rects 绘制半透明矩形以指示每个视图的边界。 394 \u0026ndash;duck-flash 该值用作|kEnableAudioFocus|的选项。失去音频焦点时，闪光灯会被淹没。 395 \u0026ndash;dump-blink-runtime-call-stats 记录闪烁的运行时呼叫统计信息。\u0026ndash;single-process也需要与此一起使用才能记录统计数据。 396 \u0026ndash;dump-browser-histograms 请求正在运行的浏览器进程将其收集的直方图转储到给定文件。如果文件存在，则覆盖该文件。 397 \u0026ndash;dump-dom 指示headless_shell将document.body.innerHTML打印到stdout。 398 \u0026ndash;eafe-path 用于EasyBootstrapping的EAFE路径。 399 \u0026ndash;eafe-url 用于EasyBootstrapping的EAFEURL。 400 \u0026ndash;easy-unlock-app-path 覆盖EasyUnlock组件应用程序的路径。 401 \u0026ndash;edge-touch-filtering 告诉Chrome进行边缘触摸过滤。适用于可转换平板电脑。 402 \u0026ndash;embedded-extension-options 允许将扩展选项嵌入chrome://扩展名而不是新选项卡。 403 \u0026ndash;emphasize-titles-in-omnibox-dropdown 使多功能框下拉列表强调类似查询输入的URL建议的标题。 404 \u0026ndash;emulate-shader-precision 通过将着色器变为ANGLE中的圆形中间值来模拟ESSLlowp和mediump浮点精度。 405 \u0026ndash;enable-accelerated-2d-canvas 启用加速2D画布。 406 \u0026ndash;enable-accelerated-vpx-decode 为VP8/VP9视频解码实现实验性硬件加速。位掩码-0x1=Microsoft，0x2=AMD，0x03=全部尝试。 407 \u0026ndash;enable-accessibility-tab-switcher 启用辅助功能选项卡切换器。 408 \u0026ndash;enable-adaptive-selection-handle-orientation 启用反转选择控制柄，以便它们不会被视口边界剪切。 409 \u0026ndash;enable-aggressive-domstorage-flushing 启用积极刷新DOM存储以最大限度地减少数据丢失。 410 \u0026ndash;enable-android-wallpapers-app 启用Android壁纸应用作为ChromeOS上的默认应用。 411 \u0026ndash;enable-app-info-dialog-mac 为Mac启用工具箱视图应用程序信息对话框。 412 \u0026ndash;enable-app-list 如果设置，将启用应用程序列表，就像从CWS启用一样。 413 \u0026ndash;enable-app-window-cycling 为平台应用和托管应用启用自定义Cmd+`窗口循环。 414 \u0026ndash;enable-arc 已过时。请使用\u0026ndash;arc-availability=官方支持。允许在会话开始时启动ARC实例。 415 \u0026ndash;enable-arc-oobe-optin 在OOBE中启用ARCOptIn流程。 416 \u0026ndash;enable-async-event-targeting WindowServer使用异步事件定向逻辑。 417 \u0026ndash;enable-audio-debug-recordings-from-extension 如果WebRTC日志记录专用API处于活动状态，则启用音频调试记录。 418 \u0026ndash;enable-audio-focus 在选项卡之间启用内部音频焦点管理，使两个选项卡无法在彼此之上播放。允许的值为:“”（空）或|kEnableAudioFocusDuckFlash|。 419 \u0026ndash;enable-automation 通知用户他们的浏览器是由自动测试控制的。 420 \u0026ndash;enable-background-blur 如果设置，则应用列表将具有背景模糊。 421 \u0026ndash;enable-benchmarking TODO（asvitkine）:考虑删除或重命名此功能。启用基准测试扩展。 422 \u0026ndash;enable-ble-advertising-in-apps 在应用中启用BLE广告。 423 \u0026ndash;enable-blink-features 启用一个或多个启用Blink运行时的功能。 424 \u0026ndash;enable-bookmark-reordering 启用书签重新排序。 425 \u0026ndash;enable-bookmark-undo 为书签启用多级撤消系统。 426 \u0026ndash;enable-browser-side-navigation PlzNavigate:使用实验性浏览器侧导航路径。 427 \u0026ndash;enable-cast-receiver 启用Cast接收器。 428 \u0026ndash;enable-checker-imaging 允许将图像解码延迟到图像解码服务。 429 \u0026ndash;enable-chromevox-arc-support 启用对Arc的原生ChromeVox支持。 430 \u0026ndash;enable-clear-browsing-data-counters 在“清除浏览数据”对话框中启用数据量计数器。 431 \u0026ndash;enable-cloud-print-proxy 仅当流程类型为“服务”时才适用。在服务流程中启用云打印代理组件。 432 \u0026ndash;enable-cloud-print-xps 回退到XPS。默认情况下，连接器使用CDD。 433 \u0026ndash;enable-consumer-kiosk 为Chrome操作系统启用消费者信息亭模式。 434 \u0026ndash;enable-contextual-search 启用上下文搜索。 435 \u0026ndash;enable-crash-reporter 让无头的chrash记者。 436 \u0026ndash;enable-crash-reporter-for-testing 用于在调试环境中打开Breakpad崩溃报告，其中通常编译崩溃报告但禁用崩溃报告。 437 \u0026ndash;enable-crx-hash-check 启用包哈希检查:.crx文件sha256哈希值应该等于从更新清单收到的哈希值。 438 \u0026ndash;enable-data-reduction-proxy-bypass-warning 启用数据缩减代理旁路警告。 439 \u0026ndash;enable-data-reduction-proxy-force-pingback 在每次加载页面后启用发送页面加载度量标准pingback。 440 \u0026ndash;enable-data-reduction-proxy-lite-page 从数据缩减代理启用lite页面。这意味着只要Lo-Fi模式打开，就应该请求lite页面而不是占位符。还必须通过旗帜或现场试验启用低保真音响。 441 \u0026ndash;enable-data-reduction-proxy-savings-promo 为数据缩减代理启用1MB节省促销。 442 \u0026ndash;enable-datasaver-prompt 在蜂窝网络上启用DataSaver提示。 443 \u0026ndash;enable-device-discovery-notifications 启用设备发现通知。 444 \u0026ndash;enable-devtools-experiments 如果启用了真正的devtools实验设置。 445 \u0026ndash;enable-direct-composition-layers 即使不支持硬件覆盖，也可以使用DirectComposition图层。 446 \u0026ndash;enable-display-list-2d-canvas 启用基于显示列表的2d画布实现。选项:1。启用:允许浏览器使用2d画布的显示列表（浏览器做出决定）。2.强制:浏览器总是使用2d画布的显示列表。 447 \u0026ndash;enable-distance-field-text 在渲染文本时启用使用带符号的距离字段。仅在启用GPU光栅化时有效。 448 \u0026ndash;enable-domain-reliability 启用域可靠性监控。 449 \u0026ndash;enable-drive-search-in-app-launcher 在chrome启动器中启用/禁用驱动器搜索。 450 \u0026ndash;enable-drm-atomic 尝试启用drmatomic。这仅适用于drm平台。 451 \u0026ndash;enable-embedded-extension-options Hack，以便功能切换可以使用about_flags。 452 \u0026ndash;enable-encryption-migration 为用户的cryptohome启用加密迁移以运行最新的Arc。 453 \u0026ndash;enable-encryption-selection 启用允许用户通过设置禁用后端的功能。 454 \u0026ndash;enable-es3-apis 启用OpenGLES3API。 455 \u0026ndash;enable-exclusive-audio 使用WindowsVista及更高版本的独占模式音频流。 456 \u0026ndash;enable-experimental-accessibility-features 在“设置”中显示其他复选框，以启用尚未启动的Chrome操作系统辅助功能。 457 \u0026ndash;enable-experimental-canvas-features 启用实验画布功能，例如画布2D上下文属性 458 \u0026ndash;enable-experimental-extension-apis 启用正在开发的扩展API。 459 \u0026ndash;enable-experimental-fullscreen-exit-ui 启用实验性全屏退出UI，以允许从鼠标或触摸退出全屏。 460 \u0026ndash;enable-experimental-web-platform-features 启用正在开发的Web平台功能。 461 \u0026ndash;enable-extension-activity-logging 启用扩展活动的日志记录。 462 \u0026ndash;enable-extension-assets-sharing 为已安装的默认应用程序启用共享资产。 463 \u0026ndash;enable-fast-unload 启用快速卸载控制器，通过独立于GUI运行选项卡的onunloadjs处理程序来加速选项卡/窗口关闭。 464 \u0026ndash;enable-features 列表以逗号分隔要禁用的要素的名称。 465 \u0026ndash;enable-first-run-ui-transitions 在首次运行的教程中启用动画过渡。 466 \u0026ndash;enable-font-antialiasing 为像素测试启用字体抗锯齿。 467 \u0026ndash;enable-fullscreen-app-list 如果设置，将启用全屏应用列表，就像设置了功能标志一样。 468 \u0026ndash;enable-fullscreen-tab-detaching 在Mac上以全屏模式启用标签分离。 469 \u0026ndash;enable-fullscreen-toolbar-reveal 启用全屏工具栏以显示标签条更改。 470 \u0026ndash;enable-google-branded-context-menu 在由Google服务提供支持的上下文菜单项旁边显示Google图标。 471 \u0026ndash;enable-gpu-async-worker-context 通过使用单独的流使GL工作线程上下文异步运行。 472 \u0026ndash;enable-gpu-benchmarking 启用GPU基准测试扩展 473 \u0026ndash;enable-gpu-client-logging 启用GPU客户端日志记录 474 \u0026ndash;enable-gpu-client-tracing 在渲染器中为GL调用启用TRACE。 475 \u0026ndash;enable-gpu-command-logging 打开LoggingGPU命令。 476 \u0026ndash;enable-gpu-debugging 每个命令后打开调用GL错误。 477 \u0026ndash;enable-gpu-driver-debug-logging 启用GPU驱动程序调试消息的记录。 478 \u0026ndash;enable-gpu-memory-buffer-compositor-resources 指定所有合成器资源都应由GPU内存缓冲区支持。 479 \u0026ndash;enable-gpu-memory-buffer-video-frames 启用GpuMemoryBuffer支持的VideoFrames。 480 \u0026ndash;enable-gpu-rasterization 允许启发式确定何时应使用SkiaGPU后端绘制图层磁贴。 481 \u0026ndash;enable-gpu-service-logging 打开GPU日志记录（仅限调试版本）。 482 \u0026ndash;enable-gpu-service-tracing 打开每个GL呼叫的TRACE呼叫。 483 \u0026ndash;enable-hardware-overlays 在设备允许的情况下，通过硬件覆盖启用合成单个元素。 484 \u0026ndash;enable-harfbuzz-rendertext 在Mac上启用RenderText的HarfBuzz端口（它已经仅用于文本编辑;这使其可以用于其他所有内容）。 485 \u0026ndash;enable-heap-profiling 使内存分配器跟踪其分配和上下文，因此在启用memory-infra类别时，可以在chrome://tracing中显示内存使用情况的详细分类。 486 \u0026ndash;enable-hosted-app-quit-notification 退出Chrome时，会显示运行托管应用的通知。默认行为是也退出所有托管应用程序。 487 \u0026ndash;enable-hosted-apps-in-windows 允许在Mac上的Windows中打开托管应用程序。 488 \u0026ndash;enable-hotword-hardware 启用特定于永远在线的实验性热门词功能。 489 \u0026ndash;enable-hung-renderer-infobar 启用挂起的渲染器InfoBar，允许用户关闭或等待无响应的Web内容。 490 \u0026ndash;enable-inband-text-tracks 支持媒体内容中的带内文本轨道。 491 \u0026ndash;enable-internal-media-session 打开内部媒体会话后端。这应该由想要使用媒体会话接口控制媒体播放的嵌入器使用。 492 \u0026ndash;enable-ios-handoff-to-other-devices 支持从iOS上的Chrome切换到其他Apple设备的默认浏览器。 493 \u0026ndash;enable-ios-physical-web 为附近的URL启用物理Web扫描。 494 \u0026ndash;enable-layer-lists 切换cc机器使用层列表而不是层树 495 \u0026ndash;enable-lcd-text 启用LCD文本。 496 \u0026ndash;enable-leak-detection 启用加载网页的泄漏检测。 497 \u0026ndash;enable-local-file-accesses 启用文件访问。不应该为大多数Cast设备启用它。 498 \u0026ndash;enable-local-sync-backend 启用LoopbackServer实现的本地同步后端。 499 \u0026ndash;enable-lock-screen-apps 在锁定屏幕上启用动作处理程序应用程序（例如创建新笔记）。 500 \u0026ndash;enable-logging 控制是否启用控制台日志记录，并可选择配置其路由的位置。 501 \u0026ndash;enable-longpress-drag-selection 启用对长按触发的文本选择的拖动操作。 502 \u0026ndash;enable-low-end-device-mode 设置时强制低端设备模式。 503 \u0026ndash;enable-low-res-tiling 使用CPU光栅化时会生成低分辨率平铺。在快速滚动期间可以显示低分辨率瓦片，尤其是在较慢的设备上。 504 \u0026ndash;enable-mac-views-native-app-windows 允许使用基于工具箱视图的本机应用程序窗口。 505 \u0026ndash;enable-main-frame-before-activation 允许在上一次提交激活之前发送下一个BeginMainFrame。 506 \u0026ndash;enable-md-feedback 启用“材料设计”反馈表单。 507 \u0026ndash;enable-media-suspend 暂停背景选项卡上的媒体管道。 508 \u0026ndash;enable-merge-key-char-events 允许将键事件（WM_KEY*）与char事件（WM_CHAR）合并。 509 \u0026ndash;enable-message-center-always-scroll-up-upon-notification-removal 无论消息中心是否自上而下显示，都可以使消息中心在删除通知时始终向上移动其他通知。 510 \u0026ndash;enable-nacl 在渲染器进程内运行NativeClient并启用GPU插件（在内部将lEnableGpuPlugin添加到命令行）。 511 \u0026ndash;enable-nacl-debug 通过套接字启用RSP调试。 512 \u0026ndash;enable-nacl-nonsfi-mode 启用非SFI模式，其中程序可以在没有NaCl的SFI沙箱的情况下运行。 513 \u0026ndash;enable-native-gpu-memory-buffers 在可用时启用本机GPU内存缓冲支持。 514 \u0026ndash;enable-natural-scroll-default 默认情况下启用自然滚动。 515 \u0026ndash;enable-navigation-tracing 为每个导航启用跟踪。它将尝试跟踪每个导航10秒，直到缓冲区已满，或直到下一个导航。它仅适用于\u0026ndash;trace-upload-url提供的URL。 516 \u0026ndash;enable-net-benchmarking 启用与网络相关的基准测试扩展。 517 \u0026ndash;enable-network-information-downlink-max 启用NetInfoAPI的type，downlinkMax属性。此外，当连接类型发生更改时，可以触发NetInfoAPI的change属性。 518 \u0026ndash;enable-network-portal-notification 在会话中启用有关强制网络门户的通知。 519 \u0026ndash;enable-ntp-most-likely-favicons-from-server 启用新的Googlefavicon服务器，以便在“新标签页”上获取“最可能”图块的图标。 520 \u0026ndash;enable-ntp-popular-sites 允许在NTP上显示热门网站。 521 \u0026ndash;enable-ntp-search-engine-country-detection 允许使用默认搜索引擎国家/地区在NTP上显示特定国家/地区的热门网站。 522 \u0026ndash;enable-offer-store-unmasked-wallet-cards 强制在自动填充对话框中显示本地保存复选框，以获取钱包卡的完整信用卡号。 523 \u0026ndash;enable-offer-upload-credit-cards 允许提供上传信用卡。 524 \u0026ndash;enable-offline-auto-reload 如果脱机，则启用错误页面的自动重新加载。 525 \u0026ndash;enable-offline-auto-reload-visible-only 仅当选项卡可见时，才会自动重新加载错误页面。 526 \u0026ndash;enable-osk-overscroll 在Android上启用OSK的过度滚动。 527 \u0026ndash;enable-override-bookmarks-ui 启用扩展程序以隐藏书签UI元素。 528 \u0026ndash;enable-partial-raster 在渲染器中启用部分栅格。 529 \u0026ndash;enable-password-generation 当我们检测到用户正在创建帐户时启用密码生成。 530 \u0026ndash;enable-pepper-testing 启用PPAPI的测试界面。 531 \u0026ndash;enable-permission-action-reporting 为选择加入的用户启用向安全浏览服务器的权限操作报告。 532 \u0026ndash;enable-physical-keyboard-autocorrect 在物理键盘上键入时启用建议。 533 \u0026ndash;enable-picture-in-picture 为视频启用画中画功能。 534 \u0026ndash;enable-pinch 启用合成器加速的触摸屏捏合手势。 535 \u0026ndash;enable-pixel-canvas-recording 如果启用，则在画布上记录的所有绘制命令都以像素对齐的测量完成。 536 \u0026ndash;enable-pixel-output-in-tests 强制测试在通常不会产生像素输出。 537 \u0026ndash;enable-plugin-placeholder-testing 启用插件占位符的测试功能。仅限内部使用。 538 \u0026ndash;enable-potentially-annoying-security-features 启用许多可能令人讨厌的安全功能（严格的混合内容模式，强大的功能限制等） 539 \u0026ndash;enable-power-overlay 在“设置”中启用“电源”叠加。 540 \u0026ndash;enable-precise-memory-info 使返回到window.performance.memory的值在共享工作程序中更精细，更新。如果没有此标志，内存信息仍然可用，但它会被更加频繁地更新和更新。此标志也适用于工人。 541 \u0026ndash;enable-prefer-compositing-to-lcd-text 在阻止LCD文本时启用合成图层的创建。 542 \u0026ndash;enable-print-browser 启用PrintBrowser模式，其中所有内容都呈现为打印。 543 \u0026ndash;enable-print-preview-register-promos 允许在打印预览中显示未注册的打印机 544 \u0026ndash;enable-profile-shortcut-manager 强制启用配置文件快捷方式管理器。这是测试所必需的，因为它们使用自定义用户数据目录来禁用此功能。 545 \u0026ndash;enable-profiling 允许跟踪探查器中的任务，以便通过about:profiler进行查看。要主要禁用跟踪（分析），请使用命令行开关:-enable-profiling=0某些跟踪仍将在启动时进行，但在chrome_browser_main期间将关闭。 546 \u0026ndash;enable-push-api-background-mode 启用PushAPI的后台模式。 547 \u0026ndash;enable-reader-mode-toolbar-icon 在工具栏中启用上下文相关的阅读器模式按钮。 548 \u0026ndash;enable-request-tablet-site 启用平板电脑网站请求（通过用户代理覆盖）。 549 \u0026ndash;enable-rgba-4444-textures 启用RGBA_4444纹理。 550 \u0026ndash;enable-sandbox 在此过程中启用沙箱。 551 \u0026ndash;enable-sandbox-logging 每次沙箱拒绝访问资源时，OSX沙箱都会写入syslog。 552 \u0026ndash;enable-screenshot-testing-with-mode 允许在测试和seets模式下使用屏幕截图。 553 \u0026ndash;enable-scripts-require-action FeatureSwitch和about_flags打得不好。功能开关需要\u0026ndash;enable-或-=1，但about_flags需要命令行参数启用它（或选择）。将其解压缩，因此在about_flags中启用它可启用该功能。附加此标志与\u0026ndash;scripts-require-action=1具有相同的效果。 554 \u0026ndash;enable-scroll-prediction 为滚动更新事件启用滚动预测。 555 \u0026ndash;enable-service-manager-tracing 启用跟踪服务。 556 \u0026ndash;enable-sgi-video-sync 启用SGI_video_sync扩展，该扩展可能存在驱动程序/沙箱/窗口管理器兼容性问题。 557 \u0026ndash;enable-signin-promo 启用登录促销。 558 \u0026ndash;enable-single-click-autofill 启用/禁用建议而不键入任何内容（第一次单击时）。 559 \u0026ndash;enable-site-settings 在Chrome设置界面中启用网站设置所有网站列表和网站详细信息页面。 560 \u0026ndash;enable-skia-benchmarking 启用Skia基准测试扩展 561 \u0026ndash;enable-slim-navigation-manager 启用基于WKBackForwardList的导航管理器实验。 562 \u0026ndash;enable-smooth-scrolling 在支持它的平台上，启用平滑滚动动画。 563 \u0026ndash;enable-spatial-navigation 启用空间导航 564 \u0026ndash;enable-spdy-proxy-auth 启用数据缩减代理。 565 \u0026ndash;enable-speech-dispatcher 允许向语音调度程序（一种常见的Linux语音服务）发送文本到语音请求。因为它有问题，用户必须明确启用它，以便访问随机网页不会导致不稳定。 566 \u0026ndash;enable-spelling-feedback-field-trial 允许参与现场试验以获得用户对拼写服务的反馈。 567 \u0026ndash;enable-spotlight-actions 启用Spotlight操作。 568 \u0026ndash;enable-stats-collection-bindings 指定|StatsCollectionController| 需要在渲染器中绑定。这种绑定以每帧为基础发生，因此可能成为性能瓶颈。只应在运行需要访问提供的统计信息的测试时启用它。 569 \u0026ndash;enable-stats-table 启用StatsTable，将统计信息记录到全局命名共享内存表。 570 \u0026ndash;enable-strict-mixed-content-checking 阻止来自安全上下文的所有不安全请求，并阻止用户覆盖该决定。 571 \u0026ndash;enable-strict-powerful-feature-restrictions 阻止我们尚未弃用的一些强大功能（例如，设备方向）的不安全使用 572 \u0026ndash;enable-suggestions-with-substring-match 使用子字符串匹配而不是前缀匹配启用建议。 573 \u0026ndash;enable-supervised-user-managed-bookmarks-folder 启用受监管用户管理的书签文件夹。 574 \u0026ndash;enable-surface-synchronization 启用多客户端Surface同步。 575 \u0026ndash;enable-swap-buffers-with-bounds 如果支持，则启用SwapBuffersWithBounds。 576 \u0026ndash;enable-sync-app-list 启用/禁用应用列表的同步，与扩展无关。 577 \u0026ndash;enable-tab-audio-muting 允许用户控制标签条中的静音标签音频。 578 \u0026ndash;enable-tablet-splitview 在平板电脑模式下启用拆分视图。 579 \u0026ndash;enable-tcp-fastopen 允许使用实验性TCP套接字API在SYN数据包中发送数据。 580 \u0026ndash;enable-third-party-keyboard-workaround 启用第三方键盘多功能框解决方案。 581 \u0026ndash;enable-threaded-compositing 为布局测试启用了线程合成。 582 \u0026ndash;enable-threaded-texture-mailboxes 共享组不可用时模拟共享纹理。 583 \u0026ndash;enable-tile-compression 压缩支持它的GPU的切片纹理。 584 \u0026ndash;enable-touch-calibration-setting 在MD设置UI中启用触摸校准选项以获得有效的触摸显示。 585 \u0026ndash;enable-touch-drag-drop 启用基于触摸事件的拖放操作。 586 \u0026ndash;enable-touchpad-three-finger-click 启用触摸板三指单击作为中间按钮。 587 \u0026ndash;enable-touchview 使观察加速度计事件进入触摸视图模式。 588 \u0026ndash;enable-trace-app-source 将启动源传递给平台应用。 589 \u0026ndash;enable-tracing 在执行浏览器测试期间启用跟踪。 590 \u0026ndash;enable-tracing-output 用于将测试跟踪的输出写入的文件名。 591 \u0026ndash;enable-translate-new-ux 启用Translate实验性新UX，取代信息栏。 592 \u0026ndash;enable-ui-devtools 为UI（mus，ash等）启用DevTools服务器。值应该是服务器启动的端口。默认端口是9332. 593 \u0026ndash;enable-use-zoom-for-dsf 启用使用缩放的模式来实现设备比例因子行为。 594 \u0026ndash;enable-user-metrics 从安装程序中启用用户指标。 595 \u0026ndash;enable-usermedia-screen-capturing 启用MediaStreamAPI的屏幕捕获支持。 596 \u0026ndash;enable-video-player-chromecast-support 为视频播放器应用启用chromecast支持。 597 \u0026ndash;enable-viewport 允许使用@viewportCSS规则，该规则允许页面控制自己布局的各个方面。 598 \u0026ndash;enable-voice-interaction 启用VoiceInteraction支持。 599 \u0026ndash;enable-vtune-support 启用Vtune探查器支持。 600 \u0026ndash;enable-vulkan 启用Vulkan支持，还必须定义ENABLE_VULKAN。 601 \u0026ndash;enable-wayland-server 启用Wayland显示服务器支持。 602 \u0026ndash;enable-web-notification-custom-layouts 启用Web通知自定义布局。 603 \u0026ndash;enable-webfonts-intervention-trigger 启用WebFonts干预并始终触发信号。 604 \u0026ndash;enable-webfonts-intervention-v2 WebFonts干预v2标志和值。 605 \u0026ndash;enable-webgl-draft-extensions 启用尚未获得社区批准的WebGL扩展。 606 \u0026ndash;enable-webgl-image-chromium 启用WebGL渲染到扫描输出缓冲区以支持叠加。 607 \u0026ndash;enable-webrtc-event-logging-from-extension 如果WebRTC日志记录专用API处于活动状态，则启用WebRTC事件日志记录。 608 \u0026ndash;enable-webrtc-srtp-aes-gcm 在WebRTC中为SRTP启用RFC7714的GCM密码套件协商。 609 \u0026ndash;enable-webrtc-stun-origin 在WebRTC的Stun消息中启用Origin标头。 610 \u0026ndash;enable-webvr 实现与虚拟现实设备的交互。 611 \u0026ndash;enable-wifi-credential-sync 使用Chrome同步功能，可以跨设备同步WiFi凭据。 612 \u0026ndash;enable-win7-webrtc-hw-h264-decoding 在Win7上为WebRtc启用H264硬件解码加速. 613 \u0026ndash;enable-zero-copy 启用直接写入与磁贴关联的GPU内存的光栅化器。 614 \u0026ndash;enable-zip-archiver-on-file-manager 启用zip存档。 615 \u0026ndash;enabled 已启用:始终启用触摸事件。 616 \u0026ndash;enabled-new-style-notification 用于启用或禁用新式通知的标志。一旦功能稳定，该标志将被删除。 617 \u0026ndash;encode-binary 使用base64编码二进制布局测试结果（图像，音频）。 618 \u0026ndash;enforce-gl-minimums 实施GL最低要求。 619 \u0026ndash;enforce-webrtc-ip-permission-check 执行IP权限检查。TODO（guoweis）:一旦该功能不在雀色下并且成为默认设置，请将其删除。 620 \u0026ndash;enterprise-disable-arc 为托管帐户禁用ARC。 621 \u0026ndash;enterprise-enable-forced-re-enrollment 是否启用强制企业重新注册。 622 \u0026ndash;enterprise-enable-license-type-selection 在注册期间启用用户选择的许可证类型。 623 \u0026ndash;enterprise-enable-zero-touch-enrollment 启用零接触企业注册流程。 624 \u0026ndash;enterprise-enrollment-initial-modulus 自动注册客户端将使用的2次幂初始模数的功率。例如“4”表示模量为2^4= 16. 625 \u0026ndash;enterprise-enrollment-modulus-limit 自动注册客户端将使用的2次幂最大模数的功率。 626 \u0026ndash;error-console 允许ErrorConsole收集运行时和清单错误，并在chrome:extensions页面中显示它们。 627 \u0026ndash;explicitly-allowed-ports 使用以逗号分隔的端口号列表显式允许其他端口。 628 \u0026ndash;expose-internals-for-testing 将window.internals对象公开给JavaScript，以进行交互式开发和调试依赖它的布局测试。 629 \u0026ndash;extension-content-verification 命令行标志的名称，用于强制内容验证在各种模式之一中打开。 630 \u0026ndash;extension-process 将渲染器标记为扩展过程。 631 \u0026ndash;extensions-install-verification 如果不能打开扩展安装验证，则打开它。 632 \u0026ndash;extensions-multi-account 启用chrome.identityAPI的多个帐户版本。 633 \u0026ndash;extensions-not-webstore 指定以逗号分隔的扩展名列表，在执行安装验证时，应强制将其视为不从Webstore处理。 634 \u0026ndash;extensions-on-chrome-urls 启用在chrome://URL上运行脚本的扩展程序。 635 \u0026ndash;extensions-update-frequency Extensions自动更新的频率（以秒为单位）。 636 \u0026ndash;extra-search-query-params 要在搜索和即时URL中插入的其他查询参数。有用于测试。 637 \u0026ndash;fake-variations-channel 伪造浏览器的频道以进行变体过滤。 638 0 指示命令行开关中的标志是否为false的值。 639 \u0026ndash;fast 定义MaterialDesign视觉反馈动画应该快速。 640 \u0026ndash;fast-start 如果此标志存在，则此命令行将通过快速路径委派给已经运行的chrome进程，即:在加载chrome.dll之前。为跟踪目的而区分它是有用的。 641 \u0026ndash;feedback-server 提交用户反馈时使用的备用反馈服务器 642 \u0026ndash;field-trial-handle 处理包含要在进程之间共享的字段试用状态的共享内存段。此开关的参数是句柄id（Windows上的指针）作为字符串，后跟逗号，然后是共享内存段的大小作为字符串。 643 \u0026ndash;first-exec-after-boot 在系统启动后第一次运行时传递给Chrome。注销后未通过重启。 644 \u0026ndash;flag-switches-begin 在开关周围添加了这两个标志:flags添加到命令行。这有助于查看about:flagsonabout:version上添加了哪些开关。它们没有任何影响。 645 \u0026ndash;font-cache-shared-handle DirectWriteFontCache由浏览器共享使用共享内存的渲染器。此开关允许我们将共享内存句柄传递给渲染器。 646 \u0026ndash;force-android-app-mode 强制Android应用程序模式。这会隐藏某些系统UI元素并强制安装应用程序（如果尚未安装）。 647 \u0026ndash;force-app-mode 强制应用模式。这会隐藏某些系统UI元素并强制安装应用程序（如果尚未安装）。 648 \u0026ndash;force-clamshell-power-button 即使设备具有可转换的外形，也会强制执行非平板电脑类型的电源按钮行为。 649 \u0026ndash;force-color-profile 强制所有监视器都被视为具有指定的颜色配置文件。可接受的值是“srgb”和“generic-rgb”（目前由Mac布局测试使用）和“color-spin-gamma24”（由布局测试使用）。 650 \u0026ndash;force-desktop-ios-promotion 强制桌面到iOS促销在触发入口点时显示在窗口中。 651 \u0026ndash;force-dev-mode-highlighting 是否强制开发者模式扩展突出显示。 652 \u0026ndash;force-device-scale-factor 覆盖浏览器UI和内容的设备比例因子。 653 \u0026ndash;force-effective-connection-type 强制网络质量估算器（NQE）返回特定的有效连接类型。 654 \u0026ndash;force-enable-metrics-reporting 强制启用指标报告。 655 \u0026ndash;force-enable-stylus-tools 启用状态区域旁边的手写笔工具。 656 \u0026ndash;force-fieldtrial-params 在本地测试更改时，此选项可用于强制现场试验的参数。参数是由关联（试验，组）对前缀的（键，值）对的参数列表。您可以使用逗号分隔符为多个（试用，组）对指定参数列表。 657 \u0026ndash;force-first-run 在浏览器启动时显示FirstRun体验，无论它是否实际上是FirstRun（这将覆盖kNoFirstRun）。 658 \u0026ndash;force-first-run-ui 强制为每次登录显示首次运行的UI。 659 \u0026ndash;force-gpu-mem-available-mb 设置可为GPU资源分配的内存总量 660 \u0026ndash;force-gpu-rasterization 始终使用SkiaGPU后端绘制图层切片。仅适用于GPU加速合成+impl-side绘画。覆盖kEnableGpuRasterization标志。 661 \u0026ndash;force-happiness-tracking-system Force为设备启用幸福跟踪系统。这会忽略用户配置文件检查和时间限制，并且每次都会为任何类型的用户显示通知。应该只用于测试。 662 \u0026ndash;force-load-easy-unlock-app-in-tests 在测试中强制轻松解锁app加载。TODO（xiyuan）:当应用程序可以与Chrome捆绑在一起时删除它。 663 \u0026ndash;force-local-ntp 强制Chrome使用localNTP而不是服务器（GWS）NTP。 664 \u0026ndash;force-login-manager-in-tests 通常在浏览器测试中，会跳过通常的登录管理器启动，以便测试可以改变它的启动方式。此标志禁用该标志。 665 \u0026ndash;force-overlay-fullscreen-video 强制使用硬件覆盖进行全屏视频播放。用于在其他平台上测试Android叠加层全屏功能。 666 \u0026ndash;force-password-reauth 在没有密码输入的情况下，允许用户在X小时（例如20）之后强制用户输入密码。 667 \u0026ndash;force-pnacl-subzero 强制使用Subzero作为PNaCl转换器而不是LLC。 668 \u0026ndash;force-presentation-receiver-for-testing 这会强制将页面作为演示文稿接收器加载。用于测试特定于表示接收器的行为。 669 \u0026ndash;force-renderer-accessibility 强制渲染器可访问性打开，而不是在检测到屏幕阅读器时按需启用它。disable-renderer-accessibility开关会覆盖此项（如果存在）。 670 \u0026ndash;force-show-update-menu-badge 强制显示更新菜单标记。 671 \u0026ndash;force-show-update-menu-item 强制显示更新菜单项。 672 \u0026ndash;force-system-compositor-mode 设置时强制系统合成器模式。 673 \u0026ndash;force-tablet-mode 无论Chromebook当前是否处于选定的UI模式，都可以为所选的UI模式启用所需的内容。 674 \u0026ndash;force-text-direction 强制文本呈现到特定方向。有效值为“ltr”（从左到右）和“rtl”（从右到左）。仅对RTL进行了有意义的测试。 675 \u0026ndash;force-ui-direction 将UI强制为特定方向。有效值为“ltr”（从左到右）和“rtl”（从右到左）。 676 \u0026ndash;force-variation-ids 强制将在X-Client-Data标头中发送的其他ChromeVariationID，指定为64位编码的数字实验ID列表。以字符“t”为前缀的Ids将被视为TriggerVariationIds。 677 \u0026ndash;force-video-overlays 在Android上使用SurfaceView而不是SurfaceTexture强制媒体播放器。 678 \u0026ndash;force-wave-audio 即使支持CoreAudio，也请使用WindowsWaveOut/In音频API。 679 \u0026ndash;force-webrtc-ip-handling-policy 覆盖WebRTCIP处理策略以模拟在“首选项”中指定WebRTCIP处理策略时的行为。 680 \u0026ndash;full-memory-crash-report 生成完整内存崩溃转储。 681 \u0026ndash;gcm-checkin-url 设置将用于执行GoogleCloudMessaging签入的签入服务端点。 682 \u0026ndash;gcm-mcs-endpoint 设置将用于GoogleCloudMessaging的MobileConnectionServer端点。 683 \u0026ndash;gcm-registration-url 设置将用于创建新的GoogleCloudMessaging注册的注册端点。 684 \u0026ndash;gl-composited-overlay-candidate-quad-border TODO（dcastagna）:只有当它实际上是覆盖候选时才绘制调试四边形边框。渲染GL合成叠加候选四边形周围的边框，以帮助调试和研究叠加支持。 685 \u0026ndash;gl-shader-interm-output 在着色器编译信息日志中包含ANGLE的中间表示（AST）输出。 686 \u0026ndash;golden-screenshots-dir 屏幕截图测试:指定存储黄金屏幕截图的目录。 687 \u0026ndash;google-base-url 指定用于与Google通话的备用URL。有用于测试。 688 \u0026ndash;google-doodle-url 覆盖用于获取当前GoogleDoodle的网址。 689 \u0026ndash;gpu-active-device-id 将活动的gpu设备ID从浏览器进程传递到GPU进程。 690 \u0026ndash;gpu-active-vendor-id 将活动的gpu供应商ID从浏览器进程传递到GPU进程。 691 \u0026ndash;gpu-device-id 将gpudevice_id从浏览器进程传递到GPU进程。 692 \u0026ndash;gpu-driver-bug-workarounds 传递一组GpuDriverBugWorkaroundTypeids，由\u0026rsquo;，\u0026lsquo;分隔。 693 \u0026ndash;gpu-driver-date 将gpudriver_date从浏览器进程传递到GPU进程。 694 \u0026ndash;gpu-driver-vendor 将gpudriver_vendor从浏览器进程传递到GPU进程。 695 \u0026ndash;gpu-driver-version 将gpudriver_version从浏览器进程传递到GPU进程。 696 \u0026ndash;gpu-launcher 用于启动GPU进程的额外命令行选项（通常用于调试）。使用像renderer-cmd-prefix。 697 \u0026ndash;gpu-no-complete-info-collection 测试切换到不启动gpu进程以获取完整的gpu信息集合。 698 \u0026ndash;gpu-no-context-lost 告知Chrome在省电模式，屏幕保护模式等情况下不会丢失GPU上下文。请注意，此标志不能确保GPU上下文在任何情况下都不会丢失，例如GPU重置。 699 \u0026ndash;gpu-process 使此过程成为GPU子流程。 700 \u0026ndash;gpu-program-cache-size-kb 设置内存中gpu程序缓存的最大大小，单位为kb 701 \u0026ndash;gpu-rasterization-msaa-sample-count 用于GPU光栅化的多重采样抗锯齿样本数。需要GPU上的MSAA支持才能生效。0禁用MSAA。 702 \u0026ndash;gpu-sandbox-allow-sysv-shm 允许在GPU沙箱中调用shmat（）系统。 703 \u0026ndash;gpu-sandbox-failures-fatal 使GPU沙箱失败致命。 704 \u0026ndash;gpu-sandbox-start-early 在创建GL上下文之前启动GPU沙箱。 705 \u0026ndash;gpu-secondary-device-ids 将二级gpu设备ID从浏览器进程传递到GPU进程。 706 \u0026ndash;gpu-secondary-vendor-ids 将二级gpu供应商ID从浏览器进程传递到GPU进程。 707 \u0026ndash;gpu-startup-dialog 使GPU进程在启动时显示对话框。 708 \u0026ndash;gpu-testing-device-id 覆盖GpuInfoCollector中的gpu设备ID。 709 \u0026ndash;gpu-testing-driver-date 从GpuInfoCollector覆盖gpu驱动程序日期。 710 \u0026ndash;gpu-testing-gl-renderer 从GpuInfoCollector覆盖gl渲染器。 711 \u0026ndash;gpu-testing-gl-vendor 从GpuInfoCollector覆盖gl供应商。 712 \u0026ndash;gpu-testing-gl-version 从GpuInfoCollector覆盖gl版本。 713 \u0026ndash;gpu-testing-os-version 从GpuControlList::MakeDecision覆盖os版本。 714 \u0026ndash;gpu-testing-secondary-device-ids 从GpuInfoCollector覆盖辅助gpu设备ID。 715 \u0026ndash;gpu-testing-secondary-vendor-ids 从GpuInfoCollector覆盖辅助gpu供应商ID。 716 \u0026ndash;gpu-testing-vendor-id 从GpuInfoCollector覆盖gpu供应商ID。 717 \u0026ndash;gpu-vendor-id 将gpuvendor_id从浏览器进程传递到GPU进程。 718 \u0026ndash;guest-wallpaper-large 在访客模式下使用的大型墙纸。 719 \u0026ndash;guest-wallpaper-small 在访客模式下使用的小型墙纸。 720 \u0026ndash;has-chromeos-diamond-key 如果为true，Chromebook会有一个带有菱形键的键盘。 721 \u0026ndash;has-chromeos-keyboard 如果设置，系统是带有“标准ChromeOS键盘”的Chromebook，这通常意味着在左Shift键上方的标准CapsLock位置中有一个Search键。对于同时使用搜索和大写锁定键（例如粗壮）的Chromebook，以及仅使用外部键盘的Chromebox等设备，应该取消设置。 722 \u0026ndash;has-internal-stylus 此设备是否具有内置手写笔。 723 \u0026ndash;headless 在无头模式下运行，即没有UI或显示服务器依赖性。 724 \u0026ndash;hide kCrosRegionsMode的“隐藏”值（隐藏了VPD值）。 725 \u0026ndash;hide-icons 通过允许它在“添加/删除程序”-\u0026gt;“设置程序访问和默认值”中显示“启用对此程序的访问”复选框，使Windows高兴。这只显示一个错误框，因为隐藏Chrome的唯一方法是卸载它。 726 \u0026ndash;hide-scrollbars 隐藏屏幕截图中的滚动条。 727 \u0026ndash;history-entry-requires-user-gesture 不允许内容随意附加到后退/前进列表。页面必须在添加条目之前执行用户手势。 728 \u0026ndash;homedir 定义用户homedir。默认为主用户homedir。 729 \u0026ndash;homepage 指定将在新打开的选项卡中显示的页面。我们需要将其用于测试目的，以便UI测试不依赖于http://google.com的内容。 730 \u0026ndash;host-pairing-oobe 使用此开关，使用配对屏幕启动remoraOOBE。 731 \u0026ndash;host-resolver-rules 这些映射仅适用于主机解析程序。 732 \u0026ndash;icu-data-dir 可以找到ICU初始化数据的路径。如果未提供，则假定服务二进制文件的目录。 733 \u0026ndash;ignore-autocomplete-off-autofill 对自动填充数据（配置文件+信用卡）忽略autocomplete=“off”。 734 \u0026ndash;ignore-autoplay-restrictions 忽略所有自动播放限制。它将忽略当前的自动播放策略以及所有限制，例如在后台选项卡中播放。它应该只能用于测试。 735 \u0026ndash;ignore-certificate-errors 忽略与证书相关的错误。 736 \u0026ndash;ignore-certificate-errors-spki-list 一组公钥哈希，可忽略与证书相关的错误。如果服务器提供的证书链未验证，并且一个或多个证书具有与此列表中的密钥匹配的公钥哈希值，则忽略该错误。switch值必须是以逗号分隔的Base64编码的SHA-256SPKI指纹列表（RFC7469，第2.4节）。除非\u0026ndash;user-data-dir（由内容嵌入器定义）也存在，否则此开关无效。 737 \u0026ndash;ignore-gpu-blacklist 忽略GPU黑名单。 738 \u0026ndash;ignore-urlfetcher-cert-requests 导致net::URLFetchers忽略SSL客户端证书的请求，导致他们尝试未经身份验证的SSL/TLS会话。这适用于测试各种服务URL（例如:kPromoServerURL，kSbURLPrefix，kSyncServiceURL等）。 739 \u0026ndash;ignore-user-profile-mapping-for-tests 如果为true，则UserManager中的配置文件选择将始终返回活动用户的配置文件。 740 \u0026ndash;in-process-gpu 在浏览器进程中将GPU进程作为线程运行。 741 \u0026ndash;incognito 导致浏览器以隐身模式直接启动。 742 \u0026ndash;install-chrome-app 导致Chrome启动给定应用程序的安装流程。 743 \u0026ndash;install-supervised-user-whitelists 要为受监管用户安装的白名单列表，以供测试。该列表具有以下形式:[:]，[[:]，\u0026hellip;] 744 \u0026ndash;instant-process 将渲染器标记为即时进程。 745 \u0026ndash;invalidation-use-gcm-channel 即使未启用实验，失效服务也应使用GCM网络通道。 746 \u0026ndash;ipc-connection-timeout 覆盖子进程在终止之前等待来自浏览器的连接的超时（以秒为单位）。 747 \u0026ndash;ipc-dump-directory 将从渲染器进程发送的IPC消息转储到给定目录的浏览器进程。主要用于收集IPC模糊测试的样本。 748 \u0026ndash;ipc-fuzzer-testcase 指定IPCfuzzer使用的测试用例。 749 \u0026ndash;is-running-in-mash Chrome正在使用Mash运行。 750 \u0026ndash;isolate-origins 需要针对一组源的专用进程，指定为以逗号分隔的列表。 751 \u0026ndash;isolate-sites-for-testing 为站点子集启用站点隔离（-每个进程的站点风格隔离）。 752 \u0026ndash;javascript-harmony 启用实验性Harmony（ECMAScript6）功能。 753 \u0026ndash;js-flags 指定传递给JS引擎的标志 754 \u0026ndash;keep-alive-for-test 用于测试-在最后一个浏览器窗口关闭后保持浏览器活动 755 \u0026ndash;kiosk 启用自助服务终端模式。请注意，这不是ChromeOS信息亭模式。 756 \u0026ndash;kiosk-printing 在打印预览中自动按下打印按钮。 757 \u0026ndash;lang 我们想要尝试打开的语言文件。形式语言[-country]，其中语言是ISO-639的2字母代码。 758 \u0026ndash;last-launched-app 将appid信息传递给渲染器进程，以用于记录。last-initiated-app应该是刚刚推出的应用程序并且正在生成渲染器。 759 \u0026ndash;limit-fps 限制合成器每秒输出一定数量的帧，最大值。 760 \u0026ndash;load-and-launch-app 从指定目录加载应用程序并启动它。 761 \u0026ndash;load-apps 以逗号分隔的应用程序在启动时加载的路径列表。列表中的第一个应用程序将启动。 762 \u0026ndash;load-extension 以逗号分隔的扩展路径列表，以便在启动时加载。 763 \u0026ndash;load-media-router-component-extension 在启动时加载媒体路由器组件扩展。 764 \u0026ndash;local-heuristics-only-for-password-generation 删除了我们从自动填充服务器收到ping的要求，并且用户没有将给定的表单列入黑名单。用于测试。 765 \u0026ndash;local-ntp-reload 为本地NTP资源启用实时重新加载。这仅适用于Chrome从Chrome源目录运行的情况。 766 \u0026ndash;local-sync-backend-dir 指定本地同步后端目录。选择该名称来模仿user-data-dir等。只有当enable-local-sync-backend标志存在时，该标志才有意义。 767 \u0026ndash;log-gpu-control-list-decisions 在执行黑名单规则时记录GPU控制列表决策。 768 \u0026ndash;log-level 设置最小日志级别。有效值为0到3:INFO=0，WARNING=1，LOG_ERROR=2，LOG_FATAL= 3. 769 \u0026ndash;log-net-log 允许将网络日志事件保存到文件并设置要使用的文件名。 770 \u0026ndash;login-manager 启用Chrome-as-a-login-manager行为。 771 \u0026ndash;login-profile 指定chromeos用户登录后要使用的配置文件。如果用户通过登录屏幕，则忽略此参数，因为user_id哈希定义了要使用的配置文件目录。如果浏览器在活动会话中重新启动，则此参数用于为主用户传递user_id哈希。 772 \u0026ndash;login-user 指定已登录的用户. 773 \u0026ndash;loopback-i2s-bits 用于传递I2S输入的配置以启用AEC的环回。 774 \u0026ndash;main-frame-resizes-are-orientation-changes 主框架的大小是由横向和纵向模式（即Android）之间的更改引起的，因此页面应该重新调整以适应。 775 \u0026ndash;make-chrome-default 指示在安装期间是否应将Chrome设置为默认浏览器。 776 \u0026ndash;make-default-browser 使Chrome默认浏览器 777 \u0026ndash;managed-user-id 将任何已加载或新创建的配置文件的受监督用户ID设置为给定值。传递空字符串以将配置文件标记为非监督。用于测试。 778 \u0026ndash;managed-user-sync-token 用于向受监管用户验证对Sync服务的请求。设置此开关还会导致为受监管用户设置同步。 779 \u0026ndash;mark-non-secure-as 用于选择将HTTP标记为非安全。 780 \u0026ndash;market-url-for-testing 设置Chrome的市场URL以用于测试。 781 \u0026ndash;mash 用于启用Mus+ash。 782 \u0026ndash;material |kTopChromeMD|的材料设计模式 开关。 783 \u0026ndash;material-design-ink-drop-animation-speed 定义MaterialDesign视觉反馈动画的速度。 784 \u0026ndash;material-hybrid 材料设计混合模式为|kTopChromeMD| 开关。针对鼠标/触控混合设备。 785 \u0026ndash;max-gum-fps 覆盖可在getUserMedia调用中指定的最大帧速率。此标志需要一个值。例如:- max -gum-fps= 17.5 786 \u0026ndash;max-output-volume-dba1m 校准1米处语音内容的最大输出音量dBa（如果已知）。 787 \u0026ndash;max-untiled-layer-height 设置合成图层将在其上方平铺的宽度和高度。 788 \u0026ndash;media-cache-size 强制媒体缓存使用的最大磁盘空间（以字节为单位）。 789 \u0026ndash;mem-pressure-system-reserved-kb 有些平台通常只有很少的“空闲”内存，但缓冲区+缓存中有很多可用内存。对于此类平台，请将此数量配置为应视为不可用的缓冲区+缓存内存部分。如果不使用此开关，将使用纯粹基于空闲存储器的简单压力启发式。 790 \u0026ndash;memlog 启用进程外内存日志记录。 791 \u0026ndash;memory-pressure-thresholds 内存压力阈值选择，用于决定是否以及何时需要触发内存压力事件。 792 \u0026ndash;memory-pressure-thresholds-mb 设置可用内存阈值，低于该阈值时系统被认为处于中等和临界内存压力之下。在浏览器进程中使用，如果无效则忽略。指定为一对逗号分隔的整数。有关默认值，请参阅base/win/memory_pressure_monitor.cc。 793 \u0026ndash;message-center-changes-while-open 标记以在消息中心打开时启用或禁用通知更改。一旦功能稳定，该标志将被删除。 794 \u0026ndash;metrics-client-id 这是度量标准客户端ID从浏览器进程传递到其子进程的方式。使用Crashpad，度量标准客户端ID与崩溃客户端ID不同。 795 \u0026ndash;metrics-recording-only 启用度量标准报告的记录但禁用报告。与kDisableMetrics相比，它执行普通客户端用于报告的所有代码，但报告被删除而不是发送到服务器。这对于在UI和性能测试期间查找度量标准代码中的问题非常有用。 796 \u0026ndash;mhtml-generator-option 设置MHTML生成器跳过无存储资源的选项:“skip-nostore-main”-如果主框架为“no-store”，则无法保存页面“skip-nostore-all”-也会跳过无存储子资源。 797 \u0026ndash;mirror kAccountConsistency标志的值。 798 \u0026ndash;mojo-local-storage 使用基于Mojo的LocalStorage实现。 799 \u0026ndash;monitoring-destination-id 允许为连接监视GCM消息设置不同的目标ID。在非prod管理服务器上运行时很有用。 800 \u0026ndash;mse-audio-buffer-size-limit 允许显式指定MSE音频/视频缓冲区大小。视频的默认值为150M，音频的默认值为12M。 801 \u0026ndash;mus 用于使mus作为一个单独的过程，但铬+灰仍然在一起。 802 \u0026ndash;mus-config 这被添加到从mash或mus启动的子进程中。此开关的值为kMus或kMash。例如，如果使用\u0026rsquo;\u0026ndash;mash\u0026rsquo;运行chrome，则使用开关\u0026rsquo;\u0026ndash;mus-config=mash\u0026rsquo;启动表示灰的子进程。 803 \u0026ndash;mute-audio 使发送到音频设备的音频静音，使其在自动测试期间无法听到。 804 \u0026ndash;nacl-broker \u0026ndash;type的值，使进程作为NativeClient代理运行（用于在64位Windows上启动NaCl加载程序进程）。 805 \u0026ndash;nacl-dangerous-no-sandbox-nonsfi 即使对于非SFI模式，也禁用沙箱。这特别不安全，因为非SFINaCl严重依赖于seccomp沙箱。 806 \u0026ndash;nacl-debug-mask 使用NaCl清单URL选择是否通过调试存根调试NaCl程序。切换值格式:[！]pattern1，pattern2，\u0026hellip;，patternN。每个模式使用与Chrome扩展程序清单中的模式相同的语法。唯一的区别是*scheme匹配所有方案，而不是仅匹配http和https。如果该值不以！开头，则如果清单URL与任何模式匹配，则将调试程序。如果值以！开头，则如果清单URL与任何模式都不匹配，则将调试程序。 807 \u0026ndash;nacl-gdb NativeClientGDB调试器，将在需要时自动启动。 808 \u0026ndash;nacl-gdb-script 在启动时传递给nacl-gdb调试器的GDB脚本。 809 \u0026ndash;native 报告本机（遍历堆栈）分配跟踪。默认情况下，会报告从跟踪事件派生的伪堆栈。 810 \u0026ndash;native-crx-bindings 允许使用基于C++的扩展绑定（而不是JS生成）。 811 \u0026ndash;need-arc-migration-policy-check 如果存在，设备需要检查策略以查看是否允许迁移到Ext4forARC。它应该仅存在于最初发布了ecrypfs加密并且具有ARC（N+）可用的设备上。对于其他类别的设备，必须缺少此标志。 812 \u0026ndash;net-log-capture-mode 设置要在网络日志中捕获的事件的粒度。模式可以设置为以下值之一:“Default”“IncludeCookiesAndCredentials”“IncludeSocketBytes”有关其含义的说明，请参阅net_log_capture_mode.h中相应名称的功能。 813 \u0026ndash;netifs-to-ignore 要忽略的网络接口列表。忽略的接口不会用于网络连接。 814 \u0026ndash;network-country-iso 用于电话号码检测的电话区域（ISO国家/地区代码）。 815 \u0026ndash;network-settings-config 在MD设置中启用基于设置的网络配置。 816 \u0026ndash;new-window 在新的浏览器窗口中启动URL。 817 \u0026ndash;no-default-browser-check 禁用默认浏览器检查。对于我们希望避免显示默认浏览器信息栏的UI/浏览器测试很有用。 818 \u0026ndash;no-experiments 禁用在about:flags上设置的所有实验。不禁用about:flags本身。如果实验在启动时使chrome崩溃有用:可以使用\u0026ndash;no-experiments启动chrome，在about:flags处禁用有问题的实验室，然后重新启动chrome而不再使用此开关。 819 \u0026ndash;no-first-run 跳过首次运行任务，无论它是否实际上是第一次运行。被kForceFirstRun覆盖。这不会丢弃FirstRun标记，因此不会阻止在下次没有此标志的情况下启动chrome时首次运行。 820 \u0026ndash;no-managed-user-acknowledgment-check 在注册受监管用户时，禁止检查我们是否收到确认。同时在注册期间禁用等待ack的超时。在针对不支持通知的服务器进行调试时很有用。 821 \u0026ndash;no-network-profile-warning 浏览器是否应该在配置文件位于网络共享上时发出警告。此标志仅适用于Windows。 822 \u0026ndash;no-pings 不要发送超链接审计ping 823 \u0026ndash;no-proxy-server 不要使用代理服务器，始终建立直接连接。覆盖传递的任何其他代理服务器标志。 824 \u0026ndash;no-referrers 不要发送HTTP-Referer标头。 825 \u0026ndash;no-sandbox 为通常为沙盒的所有进程类型禁用沙箱。 826 \u0026ndash;no-service-autorun 禁止服务进程将自身添加为自动运行进程。这不会删除现有的自动运行注册，只会阻止服务注册新的注册。 827 \u0026ndash;no-startup-window 不会在启动时自动打开浏览器窗口（在启动Chrome以托管后台应用程序时使用）。 828 \u0026ndash;no-user-gesture-required 自动播放策略，不需要任何用户手势。 829 \u0026ndash;no-wifi 禁用需要WiFi管理的功能。 830 \u0026ndash;no-zygote 禁用使用zygote进程来分叉子进程。相反，子进程将被分叉并直接执行。请注意，-no-sandbox也应该与此标志一起使用，因为沙箱需要zygote才能工作。 831 \u0026ndash;noerrdialogs 当存在时，禁止所有错误对话框。 832 \u0026ndash;non-material |kTopChromeMD|的经典非物质模式 开关。 833 \u0026ndash;note-taking-app-ids 可选的以逗号分隔的应用ID列表，可用于记录笔记。如果未设置，则使用硬编码列表。 834 \u0026ndash;ntp-snippets-add-incomplete 如果设置了此标志，我们会将下载的一些关键数据片段添加到列表中。 835 \u0026ndash;ntp-switch-to-existing-tab 切换到现有选项卡，以获取从“新标签页”打开的建议。 836 \u0026ndash;num-raster-threads 用于栅格化内容的工作线程数。 837 \u0026ndash;oobe-bootstrapping-master 表示我们是否应该开始引导MasterOOBE。 838 \u0026ndash;oobe-force-show-screen 强制OOBE/login强制显示oobe_screen.cc中chromeos::kScreenNames的以逗号分隔的屏幕列表。支持的屏幕有:user- image 839 \u0026ndash;oobe-guest-session 表示在OOBE完成之前已启动访客会话。 840 \u0026ndash;oobe-skip-postlogin 用户登录后跳过所有其他OOBE页面。 841 \u0026ndash;oobe-timer-interval 我们检查OOBE总时间的时间间隔。 842 \u0026ndash;origin-trial-disabled-features 包含应禁用原始试验实验的功能名称列表。名称应以“|”分隔 字符。 843 \u0026ndash;origin-trial-disabled-tokens 包含应禁用原始试验实验的令牌签名列表。标记应以“|”分隔 字符。 844 \u0026ndash;origin-trial-public-key 覆盖用于检查原始试用令牌的默认公钥。 845 \u0026ndash;original-process-start-time 开始委派已经运行的chrome进程的新chrome进程的时间。（有关详细信息，请参阅ProcessSingleton。） 846 \u0026ndash;override kCrosRegionsMode的“覆盖”值（首先读取区域的数据）。 847 \u0026ndash;override-metrics-upload-url 覆盖将度量标准日志发送到的URL以进行调试。 848 \u0026ndash;override-plugin-power-saver-for-testing 覆盖插件限制的行为以进行测试。默认情况下，仅对插件的硬编码列表启用限制器。将值设置为“always”以始终限制每个插件实例。将值设置为“never”以禁用限制。 849 \u0026ndash;override-use-software-gl-for-tests 强制使用软件GL而不是硬件gpu。 850 \u0026ndash;overscroll-history-navigation 控制历史导航的行为以响应水平过度滚动。将值设置为“0”以禁用。将值设置为“1”以启用页面滑入和滑出以响应水平过度滚动手势的行为，并显示目标页面的屏幕截图。将值设置为“2”以启用简化的过度滚动UI，其中导航箭头从屏幕侧面滑入以响应水平过滚动手势。默认为“1”。 851 \u0026ndash;overscroll-start-threshold 控制阈值的值以相对于默认值开始水平过度滚动。例如，将值设置为“133”，使过卷开始阈值为默认阈值的133％。 852 \u0026ndash;ozone-dump-file 指定图像转储的位置。 853 \u0026ndash;ozone-platform 指定要使用的臭氧平台实施。 854 \u0026ndash;pack-extension 从给定目录打包到.crx可安装文件的扩展。 855 \u0026ndash;pack-extension-key 用于签名打包.crx的可选PEM私钥。 856 \u0026ndash;parent-profile 指定父配置文件的用户数据文件夹的路径。 857 \u0026ndash;passive-listeners-default 覆盖javascriptaddEventListener调用中“被动”字段的默认值。值定义为:\u0026lsquo;documentonlytrue\u0026rsquo;，仅对文档级节点设置默认值为true。\u0026rsquo;true\u0026rsquo;在所有节点上将默认值设置为true（未指定时）。\u0026lsquo;forcealltrue\u0026rsquo;强制所有节点上的值。 858 \u0026ndash;password-store 指定要使用的加密存储后端。可能的值是kwallet，kwallet5，gnome，gnome-keyring，gnome-libsecret，basic。任何其他值都会导致Chrome自动检测到最佳后端。TODO（crbug.com/571003）:一旦PasswordStore不再使用密钥环或KWallet存储密码，请重命名此标志以停止引用密码。但是，不要尽快重命名; 开发人员和测试人员可能会依赖它将大量测试密码保存在他们的Keyrings或KWallets之外。 859 \u0026ndash;permission-request-api-scope 许可请求API的开发标志。API最终确定之前需要此标志。TODO（bauerb）:当不再需要此标志时删除。 860 \u0026ndash;permission-request-api-url 许可请求API的开发标志。API最终确定之前需要此标志。TODO（bauerb）:当不再需要此标志时删除。 861 \u0026ndash;ppapi 表示PPAPI插件进程类型的进程类型的参数。 862 \u0026ndash;ppapi-antialiased-text-enabled 要传递给Ppapi进程的FontRenderParams::antialiasing的布尔值（0/1）。 863 \u0026ndash;ppapi-broker 对指示PPAPI代理进程类型的进程类型的参数。 864 \u0026ndash;ppapi-flash-args PPAPIFlash的“命令行”参数; 用于调试选项。 865 \u0026ndash;ppapi-flash-path 使用在给定路径中找到的PPAPI（Pepper）Flash。 866 \u0026ndash;ppapi-flash-version 报告PPAPI（Pepper）Flash的给定版本。版本应该是以\u0026rsquo;。\u0026rsquo;（例如，“12.3.456.78”）分隔的数字。如果未指定，则默认为“10.2.999.999”。 867 \u0026ndash;ppapi-in-process 在进程中运行PPAPI（Pepper）插件。 868 \u0026ndash;ppapi-plugin-launcher 指定应该用于启动ppapi插件进程的命令。通过净化或量化运行插件过程很有用。例如:\u0026ndash;ppapi-plugin-launcher=“path\\to\\purify/Run=yes” 869 \u0026ndash;ppapi-startup-dialog 使PPAPI子进程在启动时显示对话框。一定要使用\u0026ndash;no-sandbox，否则沙箱将不允许显示对话框。 870 \u0026ndash;ppapi-subpixel-rendering-setting 要传递给Ppapi进程的FontRenderParams::subpixel_rendering的枚举值。 871 \u0026ndash;prerender-from-omnibox 触发从多功能框中的建议中预渲染页面。仅当Instant被禁用或限制为搜索时，以及启用了预渲染时才有效。 872 \u0026ndash;previous-app previous-app应该是上次启动应用程序启动时运行的应用程序。 873 \u0026ndash;print-to-pdf 保存已加载页面的pdf文件。 874 \u0026ndash;privet-ipv6-only 仅将IPv6用于privetHTTP。 875 \u0026ndash;process-per-site 为所有域启用“每站点进程”流程模型。此模式合并同一站点页面，以便它们共享一个进程。 876 \u0026ndash;process-per-tab 在自己的渲染器进程中运行每组脚本连接的选项卡（即BrowsingInstance）。我们默认为每个站点实例使用渲染器进程（即，来自相同注册域的页面组，其中脚本连接相互连接）。TODO（creis）:这个标志目前是无操作的。我们应该重构它以避免跨站点导航的“不必要的”进程交换，但在安全需要时仍然交换（例如，孤立的起源）。 877 \u0026ndash;product-version 输出产品版本信息并退出。用作内部API以检测Linux上已安装的Chrome版本。 878 \u0026ndash;profile-directory 选择要与启动的第一个浏览器关联的配置文件目录。 879 \u0026ndash;profiler-timing 配置chrome://profiler是否包含计时信息。默认情况下启用此选项。值“0”将禁用分析器定时，而所有其他值将启用它。 880 \u0026ndash;profiling-at-start 在启动时为浏览器进程启动基于采样的探查器。这仅在使用gyp变量profiling=1构建chrome时才有效。输出将转到kProfilingFile的值。 881 \u0026ndash;profiling-file 指定分析输出的位置。只有在使用gyp变量profiling=1或gnargenable_profiling=true构建chrome时，这才有效。{pid}如果存在将被进程的pid替换。每次为此过程生成配置文件时，{count}（如果存在）将递增。对于浏览器，默认值为chrome-profile-{pid}，对于测试，默认值为test-profile-{pid}。 882 \u0026ndash;profiling-flush 控制是否定期将配置文件数据刷新到文件。通常情况下，数据会在退出时写入，但是存在chrome不能干净地退出的情况（特别是在使用单进程时）。可以指定以秒为单位的时间。 883 \u0026ndash;progress-bar-animation 指定Android手机页面加载进度条动画。 884 \u0026ndash;progress-bar-completion 当闪烁时，应为进度条的目的声明加载“已完成”。 885 \u0026ndash;prompt-for-external-extensions 我们应该在允许外部扩展安装之前提示用户吗?此标志在Chromium上可用于测试目的。 886 \u0026ndash;proxy-auto-detect 强制代理自动检测。 887 \u0026ndash;proxy-bypass-list 指定我们绕过代理设置并使用直接连接的主机列表。除非还指定了\u0026ndash;proxy-server，否则忽略。这是以逗号分隔的旁路规则列表。有关这些规则的格式，请参阅:“net/proxy/proxy_bypass_rules.h”。 888 \u0026ndash;proxy-pac-url 使用给定URL的pac脚本 889 \u0026ndash;proxy-server 使用指定的代理服务器，覆盖系统设置。此交换机仅影响HTTP和HTTPS请求。 890 \u0026ndash;pull-to-refresh 启用或禁用拉动到刷新手势以响应垂直过度滚动。将值设置为“1”以启用该功能，并设置为“0”以禁用。默认为禁用。 891 \u0026ndash;rebaseline-pixel-tests 如果参考不匹配，则使浏览器像素测试覆盖引用。 892 \u0026ndash;reduce-security-for-testing 在不安全的连接上启用更多Web功能。旨在仅用于测试目的。 893 \u0026ndash;reduced-referrer-granularity 减少默认的referer标头的粒度。 894 \u0026ndash;register-font-files 在Windows上注册其他字体文件（对于通常％WINDIR％\\Fonts位置之外的字体）。可以使用分号（;）分隔多个文件。 895 \u0026ndash;register-pepper-plugins 注册Pepper插件（请参阅pepper_plugin_list.cc的格式）。 896 \u0026ndash;relauncher 重新启动浏览器的进程类型（switch::kProcessType）。请参阅chrome/browser/mac/relauncher.h。 897 \u0026ndash;remote-debugging-address 使用给定的地址而不是默认的环回来接受远程调试连接。应与\u0026ndash;remote-debugging-port一起使用。请注意，远程调试协议不执行任何身份验证，因此将其暴露得过于宽泛可能会带来安全风险。 898 \u0026ndash;remote-debugging-port 在指定端口上启用HTTP远程调试。 899 \u0026ndash;remote-debugging-socket-fd 给定值是父进程已经打开的套接字的fd。这允许自动化为客户端提供一个侦听套接字，以便在完全启动chrome之前连接到该套接字。特别是，父进程可以打开端口，execheadleschrome，并立即连接到devtools端口。等待镀铬准备好然后通过端口的第一次读取来处理，这将阻止直到镀铬准备就绪。不需要民意调查。 900 \u0026ndash;remote-debugging-socket-name 在指定的套接字名称上启用HTTP远程调试。 901 \u0026ndash;remote-debugging-targets 提供发现DevTools远程调试目标的地址列表。格式为:，\u0026hellip;，:port。 902 \u0026ndash;renderer 使进程作为渲染器而不是浏览器运行。 903 \u0026ndash;renderer-cmd-prefix 此标志的内容前置于渲染器命令行。有用的值可能是“valgrind”或“xterm-egdb\u0026ndash;args”。 904 \u0026ndash;renderer-process-limit 将默认/计算限制覆盖为渲染器进程数。此设置的非常高的值可能导致高内存/资源使用或不稳定。 905 \u0026ndash;renderer-startup-dialog 使渲染器进程在启动时显示对话框。传递此标志还会在Windows非官方版本上添加kNoSandbox，因为需要显示对话框。 906 \u0026ndash;renderer-wait-for-java-debugger 阻止渲染器的ChildProcessService的ChildProcessMain线程，直到附加Java调试器。 907 \u0026ndash;repl 运行一个read-eval-print循环，允许用户评估Javascript表达式。 908 \u0026ndash;report-vp9-as-an-unsupported-mime-type 强制将VP9报告为不受支持的MIME类型。 909 \u0026ndash;require-audio-hardware-for-testing 在没有所需硬件或库的系统上运行测试时，此标志将导致测试失败。否则，他们默默地成功。 910 \u0026ndash;reset-app-list-install-state 如果设置，应用列表将忘记它已在启动时安装。请注意，这并不会阻止应用列表运行，只是让Chrome认为应用列表尚未启用（如在kEnableAppList中）。 911 \u0026ndash;reset-variation-state 强制在此客户端上重置一次性随机化FieldTrials，也称为ChromeVariations状态。 912 \u0026ndash;restore-last-session 表示应在启动时恢复上次会话。这会覆盖首选项值。请注意，这不会强制在崩溃后自动恢复会话，以防止崩溃循环。此开关用于在OSX和Windows上实现对特定于操作系统的“继续中断”功能的支持。 913 \u0026ndash;root-layer-scrolls 通过根RenderLayer而不是FrameView处理框架滚动。 914 \u0026ndash;run-all-compositor-stages-before-draw 通过在完成框架之前等待每个阶段完成来有效地禁用合成器框架生产阶段的流水线操作。 915 \u0026ndash;run-layout-test 请求页面的渲染树在完成加载后作为文本转储。 916 \u0026ndash;safebrowsing-disable-auto-update 如果存在，则safebrowsing仅在显式调用SafeBrowsingProtocolManager::ForceScheduleNextUpdate（）时执行更新。这仅用于测试。 917 \u0026ndash;safebrowsing-disable-extension-blacklist 禁用检查列入黑名单的扩展程序的安全浏览功能。 918 \u0026ndash;safebrowsing-manual-download-blacklist 可执行文件的逗号分隔的sha256哈希列表，下载保护服务应将其视为“危险”。对于要显示警告的文件，它也必须被视为危险文件类型，否则不会列入白名单（通过签名或URL），并且必须位于支持的操作系统上。哈希是十六进制的。在寻找绕过下载保护的方法时，这用于手动测试。 919 \u0026ndash;sandbox-ipc 使进程作为沙箱IPC子进程运行。 920 \u0026ndash;save-page-as-mhtml 禁止将页面保存为仅HTML，禁用将页面保存为HTMLComplete（具有子资源目录）。仅启用将页面保存为MHTML。 921 \u0026ndash;screen-config 指定FakeDisplayDelegate的初始屏幕配置或所有显示的状态，有关格式详细信息，请参阅类。 922 \u0026ndash;screenshot 保存已加载页面的屏幕截图。 923 \u0026ndash;scripts-require-action 通知用户并要求同意运行脚本的扩展。附加\u0026ndash;scripts-require-action=1与\u0026ndash;enable-scripts-require-action具有相同的效果。 924 \u0026ndash;search-provider-logo-url 使用静态URL作为默认搜索引擎的徽标。 925 \u0026ndash;secondary-display-layout 指定用于测试的辅助显示器的布局模式和偏移。格式为“\u0026lt;t|r|b|l\u0026gt;，”，其中t=TOP，r=RIGHT，b=BOTTOM，L=LEFT。例如，\u0026lsquo;r，-100\u0026rsquo;表示辅助显示器位于右侧，偏移量为-100。（高于初级） 926 \u0026ndash;secondary-ui-md 将通过\u0026ndash;top-chrome-md传递的材料设计模式应用于整个Chrome中的元素（不仅仅是顶级Chrome）。 927 \u0026ndash;service 流程类型值，使流程作为云打印服务流程运行。请勿更改此值。云打印依赖于使用此流程类型启动Chrome的外部二进制文件。 928 \u0026ndash;service-manager |kProcessType|的值 switch，告诉可执行文件承担独立ServiceManager实例的角色。 929 \u0026ndash;service-name 在服务进程的命令行上指定，以指示应运行哪个服务。当服务进程二进制文件可以充当许多不同的嵌入式服务之一时很有用。 930 \u0026ndash;service-pipe-token 为子进程提供一个令牌字符串，它们可以为消息管道交换，消息管道的另一端绑定到ServiceManager中的service_manager::Service绑定。 931 \u0026ndash;service-request-channel-token 用于为子进程中的服务构造消息管道的令牌。 932 \u0026ndash;service-runner |kProcessType|的值 switch告诉可执行文件承担服务实例的角色。 933 \u0026ndash;shared-files 以下列列表格式描述传递给子进程的文件描述符:\u0026lt;file_id\u0026gt;:\u0026lt;descriptor_id\u0026gt;，\u0026lt;file_id\u0026gt;:\u0026lt;descriptor_id\u0026gt;，\u0026hellip;其中\u0026lt;file_id\u0026gt;是正在启动的服务清单中的ID字符串和\u0026lt;descriptor_id\u0026gt;是子进程可用于从全局描述符表中检索文件描述符的描述符的数字标识符。 934 \u0026ndash;shill-stub 覆盖网络存根行为。默认情况下，启用以太网，wifi和VPN，并立即进行转换。多个选项可以逗号分隔（无空格）。 935 \u0026ndash;show-app-list 如果为true，将显示应用列表。 936 \u0026ndash;show-autofill-signatures 使用自动填充签名注释表单和字段。 937 \u0026ndash;show-autofill-type-predictions 使用自动填充字段类型预测注释表单。 938 \u0026ndash;show-cert-link 如果为true，则证书链接将显示在HTTPS页面的页面信息中。 939 \u0026ndash;show-component-extension-options 使组件扩展显示在chrome://settings/extensions中。 940 \u0026ndash;show-composited-layer-borders 在合成器图层周围渲染边框以帮助调试和研究图层合成。 941 \u0026ndash;show-fps-counter 绘制一个抬头显示器，显示每秒帧数以及GPU内存使用情况。如果还使用\u0026ndash;enable-logging=stderr\u0026ndash;vmodule=“head*=1”，则FPS也将输出到控制台日志。 942 \u0026ndash;show-icons 见kHideIcons。 943 \u0026ndash;show-layer-animation-bounds 渲染表示图层动画的边界框的边框。 944 \u0026ndash;show-login-dev-overlay 如果为true，则将显示登录/锁定屏幕的开发人员工具覆盖图。这样可以更轻松地测试布局逻辑。 945 \u0026ndash;show-mac-overlay-borders 显示CALayers周围的边框，对应于叠加和部分损坏。 946 \u0026ndash;show-md-login 如果为true，将显示基于视图的md登录和锁定屏幕。 947 \u0026ndash;show-non-md-login 如果为true，将显示非md登录和锁定屏幕。 948 \u0026ndash;show-overdraw-feedback 通过颜色编码元素可视化过度绘制，基于它们是否在下面绘制了其他元素。这有助于显示UI可能正在执行的渲染工作超出必要的范围。颜色暗示每个像素在屏幕上的透支量，如下所示:真彩色:没有透支。蓝色:透支一次。格林:透支两次。粉红色:透支三次。红色:透支四次或更多次。 949 \u0026ndash;show-paint-rects 在网页中可视化地渲染绘制区域周围的边框，以帮助调试和研究绘画行为。 950 \u0026ndash;show-property-changed-rects 在属性已更改的图层周围显示HUD。 951 \u0026ndash;show-saved-copy 命令行标志，如果脱机，则向用户提供“显示已保存的副本”选项。各种模式已禁用，主要或辅助。主要/次要是指按钮放置（用于实验）。 952 \u0026ndash;show-screenspace-rects 在每个图层的屏幕空间转换边界周围显示HUD中的rects。 953 \u0026ndash;show-surface-damage-rects 当HUD记录到每个渲染表面时，显示HUD周围的损伤。 954 \u0026ndash;silent-debugger-extension-api 当扩展程序使用chrome.debugger页面附加到页面时，不显示信息栏。需要附加到扩展背景页面。 955 \u0026ndash;silent-launch 默认情况下，Chrome无需打开任何窗口即可启动。如果有人希望将Chrome用作灰烬服务器，则非常有用。 956 \u0026ndash;simulate-critical-update 模拟可用的关键更新。 957 \u0026ndash;simulate-elevated-recovery 模拟恢复升级通道需要提升。 958 \u0026ndash;simulate-outdated 模拟当前版本已过时。 959 \u0026ndash;simulate-outdated-no-au 模拟当前版本已过时且自动更新已关闭。 960 \u0026ndash;simulate-upgrade 模拟可用的更新。 961 \u0026ndash;single-process 在与浏览器same相同的过程中运行渲染器和插件 962 \u0026ndash;site-per-process 实施每个进程的单站点安全策略:每个渲染器进程在其整个生命周期内专用于仅为一个站点呈现页面。因此，来自不同站点的页面永远不会在同一个过程中。渲染器进程的访问权限基于其站点受到限制。所有跨站点导航都强制进行交换。 963 \u0026ndash;skip-gpu-data-loading 浏览器启动时跳过gpu信息收集，黑名单加载和黑名单自动更新调度。因此，所有GPU功能都可用，并且:关于:gpu页面显示空内容。该开关仅用于布局测试。TODO（gab）:完全摆脱这个开关。 964 \u0026ndash;skip-reencoding-on-skp-capture 当SKP捕获期间编码数据不可用时，跳过将位图重新编码为PNG。这允许获得网络上的图像类型的准确样本，而不是对我们自己编码的PNG进行加权。 965 \u0026ndash;slow 定义MaterialDesign视觉反馈动画应该很慢。 966 \u0026ndash;slow-down-raster-scale-factor 多次重新扫描所有内容以模拟速度慢得多的机器。给出比例因子以使栅格花费更长的时间来完成，例如\u0026ndash;slow-down-raster-scale-factor=25。 967 \u0026ndash;sms-test-messages 在第一次调用RequestUpdate时发送测试消息（仅存根）。 968 \u0026ndash;spdy-proxy-auth-fallback 数据简化代理回退的起源。 969 \u0026ndash;spdy-proxy-auth-origin 数据缩减代理的起源。 970 \u0026ndash;spdy-proxy-auth-value 用于数据缩减代理验证的测试密钥。 971 \u0026ndash;spelling-service-feedback-interval-seconds 指定将批量反馈发送到拼写服务之间的秒数。默认值为30分钟。最短为5秒。此开关仅用于临时测试。TODO（rouslan）:反馈测试完成后删除此标志。重新访问2013年8月. 972 \u0026ndash;spelling-service-feedback-url 指定将发送拼写服务反馈数据的URL而不是默认URL。此开关仅用于临时测试。TODO（rouslan）:反馈测试完成后删除此标志。重新访问2013年8月. 973 \u0026ndash;spurious-power-button-accel-count 必须达到或超过阈值的最近加速度样本数，以便将电源按钮事件视为虚假。 974 \u0026ndash;spurious-power-button-keyboard-accel 键盘加速度必须达到或超过电源按钮事件的阈值（以m/s^2为单位，忽略重力）才被视为虚假。 975 \u0026ndash;spurious-power-button-lid-angle-change 盖子角度的变化（即键盘和屏幕之间的铰链）必须超过电源按钮事件被认为是虚假的。 976 \u0026ndash;spurious-power-button-screen-accel 屏幕加速度必须达到或超过电源按钮事件才能被视为虚假的阈值（以m/s^2为单位，忽略重力）。 977 \u0026ndash;spurious-power-button-window 要检查的最近加速度计样本数，以确定电源按钮事件是否是虚假的。 978 \u0026ndash;ssl-key-log-file 使SSL密钥材料记录到指定的文件以进行调试。 979 \u0026ndash;ssl-version-max 指定最大SSL/TLS版本（“tls1”，“tls1.1”，“tls1.2”或“tls1.3”）。 980 \u0026ndash;ssl-version-min 指定最小SSL/TLS版本（“tls1”，“tls1.1”，“tls1.2”或“tls1.3”）。 981 \u0026ndash;stable-release-mode 这使我们禁用了一些Web平台运行时功能，以便我们测试content_shell，就像它是一个稳定版本一样。仅在设置kRunLayoutTest时才会执行此操作。 982 \u0026ndash;start-fullscreen 指定浏览器是否应以全屏模式启动，就像用户在启动后立即按下F11一样。 983 \u0026ndash;start-maximized 无论先前的设置如何，都启动浏览器最大化。 984 \u0026ndash;start-stack-profiler 在子进程中启动堆栈采样分析器。 985 \u0026ndash;started kTestCrosGaiaIdMigration的值，表示已开始迁移（即所有存储的用户密钥将转换为GaiaId） 986 \u0026ndash;stub-cros-settings 指示应使用CrosSettings的存根实现，该存根实现将设置存储在内存中而不进行签名，将当前用户视为所有者。这还修改了OwnerSettingsServiceChromeOS::HandlesSetting，以便OwnerSettingsServiceChromeOS不处理任何设置。此选项仅用于在桌面上测试chrome的chromeos版本。 987 \u0026ndash;supports-dual-gpus 指示是否支持双GPU切换。 988 \u0026ndash;sync-allow-insecure-xmpp-connection 允许不安全的XMPP连接进行同步（用于测试）。 989 \u0026ndash;sync-deferred-startup-timeout-seconds 允许覆盖延迟的init回退超时。 990 \u0026ndash;sync-disable-deferred-startup 启用延迟同步后端初始化，直到发生用户启动的更改。 991 \u0026ndash;sync-enable-get-update-avoidance 启用功能以避免不必要的GetUpdate请求。 992 \u0026ndash;sync-notification-host-port 覆盖用于通知的默认主机:端口。 993 \u0026ndash;sync-short-initial-retry-override 这个标志导致sync在遇到错误时非常快速地重试（参见polling_constants.h），这是迈向指数退避的第一步。 994 \u0026ndash;sync-short-nudge-delay-for-test 该标志显着缩短了微移周期之间的延迟。其主要目的是加速集成测试。正常的延迟允许合并和防止服务器过载，所以除非你真的确定它是你想要的，否则不要使用它。 995 \u0026ndash;sync-url 覆盖用于配置文件同步的默认服务器。 996 \u0026ndash;system-developer-mode 表示系统正在开发模式下运行。开发模式探测由会话管理器完成。 997 \u0026ndash;system-log-upload-frequency 系统日志上载的频率（以毫秒为单位）。只应用于测试目的。 998 \u0026ndash;tab-management-experiment-type-disabled 指定要启用的特定选项卡管理实验。 999 \u0026ndash;task-manager-show-extra-renderers 设置任务管理器以跟踪通常不会在任务管理器中显示的额外渲染器进程。 1000 \u0026ndash;task-profiler 在任务分析器中报告每个任务堆的使用和流失。与默认和本机模式不同，不跟踪单个分配。仅保留任务分析器（chrome://profiler）中汇总的流失统计数据的跟踪。 1001 \u0026ndash;team-drives 启用或禁用TeamDrives集成。 1002 \u0026ndash;test-auto-update-ui 启用自动更新UI测试。 1003 \u0026ndash;test-child-process 运行生成子进程的某些测试时，此开关向测试框架指示当前进程是子进程。 1004 \u0026ndash;test-cros-gaia-id-migration 控制CrOSGaiaId迁移进行测试（默认为“”）。 1005 \u0026ndash;test-do-not-initialize-icu 当运行生成子进程的某些测试时，此开关向测试框架指示当前进程不应初始化ICU以避免在启动时过早创建任何作用域句柄。 1006 \u0026ndash;test-encryption-migration-ui 启用加密迁移UI测试。 1007 \u0026ndash;test-gl-lib 用于Linux测试的标志:对于桌面GL绑定，首先尝试加载此GL库，但如果加载失败则回退到常规库。 1008 \u0026ndash;test-name 将当前运行的自动化测试的名称传递给Chrome。 1009 \u0026ndash;test-type 当前测试工具的类型（“浏览器”或“ui”）。 1010 \u0026ndash;testing-fixed-http-port 允许强制套接字连接到http/https以使用固定端口。 1011 \u0026ndash;tether-stub 用存根服务覆盖Tether。为所需的假网络数提供整数参数，例如\u0026rsquo;tether-stub=2\u0026rsquo;。 1012 \u0026ndash;timeout 在指定的毫秒数后发出停止。这将取消所有导航并导致DOMContentLoaded事件触发。 1013 \u0026ndash;tls13-variant 指定启用的TLS1.3变体（“禁用”，“草稿”，“实验”）。 1014 \u0026ndash;top-chrome-md 启用顶级Chrome材质设计元素。 1015 \u0026ndash;top-controls-hide-threshold 浏览器控件的百分比需要隐藏才能自动隐藏。 1016 \u0026ndash;top-controls-show-threshold 浏览器控件的百分比需要在自动显示之前显示。 1017 \u0026ndash;touch-calibration 校准因子给出为“，，，”。 1018 \u0026ndash;touch-devices 告诉chrome将这些设备中的事件解释为触摸事件。仅适用于XInput2（即X服务器1.8或更高版本）。可以从“xinputlist”中检索设备的ID。 1019 \u0026ndash;touch-events 启用对触摸事件功能检测的支持。 1020 \u0026ndash;touch-noise-filtering 告诉Chrome进行额外的触摸噪音过滤。仅在驱动程序级别过滤不足时才应使用。 1021 \u0026ndash;touch-selection-strategy 控制拖动触摸文本选择控制柄时文本选择粒度的更改方式。应该是“性格”或“方向”。如果未指定，则使用平台默认值。 1022 \u0026ndash;trace-config-file 导致从启动时记录TRACE_EVENT标志。如果提供了\u0026ndash;trace-startup或\u0026ndash;trace-shutdown，则将忽略此标志。 1023 \u0026ndash;trace-export-events-to-etw 允许将跟踪事件导出到ETW。仅在WindowsVista及更高版本上支持此功能。 1024 \u0026ndash;trace-shutdown 导致从关闭开始记录TRACE_EVENT标志。 1025 \u0026ndash;trace-shutdown-file 如果提供，则设置将存储关闭跟踪的文件，如果省略，则默认将在当前目录中使用“chrometrace.log”。除非还提供了\u0026ndash;trace-shutdown，否则无效。 1026 \u0026ndash;trace-startup 导致从启动时记录TRACE_EVENT标志。可选地，可以指定要包括的特定跟踪类别（例如\u0026ndash;trace-startup=base，net），否则，记录所有事件。设置此标志会导致第一次调用BeginTracing（）以接收自启动以来的所有跟踪事件。在Chrome中，您可以找到\u0026ndash;trace-startup-file和\u0026ndash;trace-startup-duration来控制跟踪的自动保存（仅限基于TraceLog的组件不支持）。 1027 \u0026ndash;trace-startup-duration 设置启动跟踪结束前的时间（以秒为单位）。如果省略，则使用默认值5秒。没有\u0026ndash;trace-startup，或者如果提供了\u0026ndash;startup-trace-file=none，则无效。 1028 \u0026ndash;trace-startup-file 如果提供，则设置将存储启动跟踪的文件，如果省略，则默认将在当前目录中使用“chrometrace.log”。除非还提供了\u0026ndash;trace-startup，否则无效。示例:-trace-startup\u0026ndash;trace-startup-file=/tmp/trace_event.log作为一种特殊情况，可以设置为\u0026rsquo;none\u0026rsquo;-这会禁用自动将结果保存到文件中，并且第一个手动记录的跟踪将然后从启动后接收所有事件。 1029 \u0026ndash;trace-to-console 向控制台发送漂亮打印的跟踪信息版本。 1030 \u0026ndash;trace-to-file 将这些类别中的跟踪事件发送到文件。\u0026ndash;trace-to-file自己发送到默认类别。 1031 \u0026ndash;trace-to-file-name 指定\u0026ndash;trace-to-file的文件名。如果未指定，它将转到默认文件名。 1032 \u0026ndash;trace-upload-url 设置用于上载跟踪数据的目标URL。 1033 \u0026ndash;translate-ranker-model-url 覆盖从中下载翻译排名器模型的URL。 1034 \u0026ndash;translate-script-url 覆盖用于Google翻译的默认服务器。 1035 \u0026ndash;translate-security-origin 覆盖Translate在孤立的世界中运行的安全源。 1036 \u0026ndash;trusted-download-sources 将下载源列表标识为受信任，但仅在设置了适当的组策略时。 1037 \u0026ndash;try-supported-channel-layouts 而不是始终使用硬件通道布局，检查驱动程序是否支持源通道布局。避免输出空通道并允许驱动程序启用立体声到多通道扩展。保留在标志后面，因为一些驱动程序谎言支持布局并在使用时挂起。 1038 \u0026ndash;type 指示要运行的进程的类型。这可以是“服务管理器”，“服务运行器”或嵌入器支持的任何其他任意值。 1039 \u0026ndash;ui-disable-partial-swap 禁用某些OpenGL驱动程序/模拟器所需的部分交换。 1040 \u0026ndash;ui-prioritize-in-gpu-process 在GPU进程中优先考虑UI的命令流 1041 \u0026ndash;uninstall 运行chrome首次运行完成的卸载步骤。 1042 \u0026ndash;unlimited-storage 将每个来源的配额设置覆盖为任何应用/来源的无限存储。这应该仅用于测试目的。 1043 \u0026ndash;unsafe-pac-url 将完整的https://URL传递给PAC（代理自动配置）脚本。与在传递给PAC脚本之前去除路径和查询组件的默认行为相反。 1044 \u0026ndash;unsafely-allow-protected-media-identifier-for-domain 对于受保护内容的自动测试，此交换机允许特定域（例如example.com）跳过询问用户是否允许共享受保护的媒体标识符。在此上下文中，域不包含端口号。启用此开关不会影响用户的内容设置。 1045 \u0026ndash;unsafely-treat-insecure-origin-as-secure 将给定（不安全）的起源视为安全起源。可以提供多个来源。除非还提供了\u0026ndash;user-data-dir，否则无效。 1046 \u0026ndash;use-angle 选择要使用的ANGLE后端。 1047 \u0026ndash;use-cras 使用CRAS，ChromeOS音频服务器。 1048 \u0026ndash;use-fake-device-for-media-stream 使用假设备进行MediaStream替换实际的摄像头和麦克风。 1049 \u0026ndash;use-fake-jpeg-decode-accelerator 使用虚假设备加速JPEG的解码。这允许例如测试与GPU服务的通信，而不需要存在实际的加速器硬件。 1050 \u0026ndash;use-fake-ui-for-media-stream 通过选择媒体流的默认设备（例如WebRTC）来绕过媒体流信息量。与\u0026ndash;use-fake-device-for-media-stream一起使用。 1051 \u0026ndash;use-file-for-fake-audio-capture 播放.wav文件作为麦克风。请注意，对于WebRTC调用，我们会将这些位视为来自麦克风，这意味着您应禁用音频处理（以免音频文件播放失真）。如有必要，输入文件将转换为适合Chrome的音频总线，因此大多数理智的.wav文件都可以正常工作。您可以传递 1052 \u0026ndash;use-file-for-fake-video-capture 使用.y4m文件作为网络摄像头播放。有关详细信息，请参阅media/capture/video/file_video_capture_device.h中的注释。 1053 \u0026ndash;use-first-display-as-internal 使用\u0026ndash;ash-host-window-bounds中的第一个显示作为内部显示。这是用于在Linux桌面上进行调试。 1054 \u0026ndash;use-gl 选择GPU进程应该使用的GL实现。选项包括:桌面:用户安装的任何桌面OpenGL（Linux和Mac默认）。egl:用户安装的任何EGL/GLES2（Windows默认-实际上是ANGLE）。osmesa:OSMesa软件渲染器。swiftshader:SwiftShader软件渲染器。 1055 \u0026ndash;use-gpu-in-tests 使用硬件gpu（如果可用）进行测试。 1056 \u0026ndash;use-ime-service 默认情况下，我们在kMus中使用经典IME（即InputMethodChromeOS）。该标志代替启用IME服务（即InputMethodMus）。 1057 \u0026ndash;use-mobile-user-agent 在Chromium应该使用移动用户代理时设置。 1058 \u0026ndash;use-passthrough-cmd-decoder 使用传递命令解码器，跳过所有验证和状态跟踪。 1059 \u0026ndash;use-skia-renderer 使用SkiaRenderer而不是GLRenderer进行直接渲染。 1060 \u0026ndash;use-system-default-printer 使用系统默认打印机作为打印预览中最初选择的目标，而不是最近使用的目标。 1061 \u0026ndash;use-test-config 在线程模式下初始化X11，并设置|override_redirect| 创建X11窗口时标记。此外，使用此标志启动时，会将WindowServerTest接口公开给客户端。 1062 \u0026ndash;use-viz-hit-test WindowServer使用viz命中测试逻辑（HitTestAggregator和HitTestQuery）。 1063 \u0026ndash;user-agent 用于使用自定义用户代理覆盖默认用户代理的字符串。 1064 \u0026ndash;user-always-affiliated 始终将用户视为附属。TODO（antrim）:删除一次测试服务器正确生成联属ID。 1065 \u0026ndash;user-data-dir 浏览器存储用户配置文件的目录。 1066 \u0026ndash;user-gesture-required 自动播放策略要求用户手势才能播放。 1067 \u0026ndash;user-gesture-required-for-cross-origin 自动播放政策要求ordor中的用户手势播放跨源iframe。 1068 \u0026ndash;utility 使进程作为实用程序子进程运行。 1069 \u0026ndash;utility-allowed-dir 当实用程序进程被沙箱化时，仍然可以访问一个目录。该标志指定可以访问的目录。 1070 \u0026ndash;utility-cmd-prefix 此标志的内容前置于实用程序进程命令行。有用的值可能是“valgrind”或“xterm-egdb\u0026ndash;args”。 1071 \u0026ndash;utility-sandbox-type 要应用于实用程序进程的沙箱类型。选项为“无”，“网络”或“实用程序”（默认值）。 1072 \u0026ndash;utility-startup-dialog 使实用程序进程在启动时显示对话框。 1073 \u0026ndash;v 提供默认的最大活动V-logging级别; 0是默认值。通常，正值用于V-logging级别。 1074 \u0026ndash;v2-sandbox 在辅助程序可执行文件初始化期间启用V2沙箱。 1075 \u0026ndash;v2-sandbox-enabled 命令行参数，指示已启用v2沙箱。这必须与“v2-sandbox”标志不同，以避免无休止的重新执行。该标志告诉Chrome中的沙箱初始化代码，沙箱应该已经启用。TODO（kerrnel）:V2沙箱迁移完成后删除此选项，因为假定进程在V2沙箱下运行。 1076 \u0026ndash;v8-cache-options 设置缓存V8数据的选项。（关闭，预分析数据或代码） 1077 \u0026ndash;v8-cache-strategies-for-cache-storage 设置策略以在CacheStorage中缓存V8数据。（关闭，正常或激进） 1078 \u0026ndash;validate-crx 检查.crx的有效性并打印结果。 1079 \u0026ndash;validate-input-event-stream 在调试版本中，断言输入事件流是有效的。 1080 \u0026ndash;variations-override-country 允许覆盖用于评估变体的国家/地区。 1081 \u0026ndash;variations-server-url 指定将变体数据报告给客户端的服务器的自定义URL。指定此开关可在非官方构建上启用Variations服务。请参阅variations_service.cc。 1082 \u0026ndash;video-image-texture-target CHROMIUM_image支持视频帧纹理的纹理目标。 1083 \u0026ndash;video-threads 设置用于视频解码的线程数。 1084 \u0026ndash;video-underflow-threshold-ms 允许客户端覆盖媒体渲染器在音频存在时声明视频流的下溢状态的阈值 1085 \u0026ndash;virtual-time-budget 如果设置，系统在认为页面准备好之前等待指定的虚拟毫秒数。对于确定性，当存在未决的网络提取时，虚拟时间不会提前（即，不会触发定时器）。一旦所有网络提取完成，定时器就会触发，如果系统用尽虚拟时间，则会快速转发，以便下一个定时器触发immediatley，直到指定的虚拟时间预算耗尽。 1086 \u0026ndash;vmodule 给出每个模块的最大V-logging级别以覆盖-v给出的值。 1087 \u0026ndash;voice-interaction-supported-locales 语音交互支持的语言环境列表。 1088 \u0026ndash;wait-for-debugger 将等待60秒以使调试器附加到进程。 1089 \u0026ndash;wait-for-debugger-children 将kWaitForDebugger添加到每个子进程。如果传递了一个值，它将用作过滤器来确定子进程是否应该传递kWaitForDebugger标志。 1090 \u0026ndash;wake-on-wifi-packet 启用wifi数据包唤醒功能，可在收到来自白名单源的网络数据包时唤醒设备。 1091 \u0026ndash;wallet-service-use-sandbox 使用沙箱在线钱包服务URL（用于开发人员测试）。 1092 \u0026ndash;watcher 使进程作为观察程序进程运行。 1093 \u0026ndash;waveout-buffers WaveOut使用的缓冲区数。 1094 \u0026ndash;webapk-server-url 为了测试，自定义WebAPK服务器URL。 1095 \u0026ndash;webrtc-stun-probe-trial 用于WebRTC的渲染器过程参数Stun探测试验以确定间隔。有关更多详细信息，请参阅chrome_browser_field_trials_desktop.cc中的SetupStunProbeTrial。 1096 \u0026ndash;webview-enable-safebrowsing-support 用于在webview中启用安全浏览功能 1097 \u0026ndash;whitelisted-extension-id 将给定的扩展ID添加到所有权限白名单。 1098 \u0026ndash;win-jumplist-action 指定在Windows跳转列表中单击了哪个类别选项导致浏览器启动。 1099 \u0026ndash;window-position 指定初始窗口位置:-窗口位置=x，y 1100 \u0026ndash;window-size 设置初始窗口大小。提供格式为“800,600”的字符串。 1101 \u0026ndash;window-workspace 指定初始窗口工作空间:-window-workspace= id 1102 \u0026ndash;windows10-custom-titlebar 允许自定义绘制标题栏和标签条背景，这样它就不像Windows10中默认的那样# FFFFFF 1103 \u0026ndash;winhttp-proxy-resolver 使用WinHTTP获取和评估PAC脚本。否则，默认情况下使用Chromium的网络堆栈进行提取，使用V8进行评估。 1104 \u0026ndash;wm-window-animations-disabled 如果当前动画被禁用。 1105 \u0026ndash;yield-between-content-script-runs 是否将内容脚本注入分成多个任务。 1106 \u0026ndash;zygote 使进程作为渲染器zygote运行。 參考 https://www.cnblogs.com/gurenyumao/p/14721035.html\n","permalink":"https://www.dukehsu.com/posts/chrome.html","summary":"\u003ch1 id=\"前言\"\u003e前言\u003c/h1\u003e\n\u003cp\u003e在开发Web项目当中，浏览器必不可少，而浏览器的启动参数可以帮我们实现很多功能。\u003c/p\u003e\n\u003ch2 id=\"常用参数\"\u003e常用参数\u003c/h2\u003e\n\u003cp\u003e常用参数请参考下表。\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003e序号\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e参数\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e说明\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;allow-outdated-plugins\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e不停用过期的插件。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e2\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;allow-running-insecure-content\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e默认情况下，https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;allow-scripting-gallery\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e允许拓展脚本在官方应用中心生效。默认情况下，出于安全因素考虑这些脚本都会被阻止。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e4\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-desktop-notifications\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e禁用桌面通知，在 Windows 中桌面通知默认是启用的。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-file-system\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e停用 FileSystem API。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e6\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-preconnect\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e停用 TCP/IP 预连接。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e7\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-remote-fonts\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e关闭远程字体支持。SVG 中字体不受此参数影响。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e8\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-web-security\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e不遵守同源策略。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e9\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disk-cache-dir\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e将缓存设置在给定的路径。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e10\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disk-cache-size\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e设置缓存大小上限，以字节为单位。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e11\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;dns-prefetch-disable\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e停用DNS预读。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e12\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;enable-print-preview\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e启用打印预览。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e13\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;extensions-update-frequency\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e设定拓展自动更新频率，以秒为单位。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e14\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;incognito\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e让浏览器直接以隐身模式启动。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e15\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;keep-alive-for-test\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e最后一个标签关闭后仍保持浏览器进程。（某种意义上可以提高热启动速度，不过你最好得有充足的内存）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e16\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;kiosk\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e启用kiosk模式。（一种类似于全屏的浏览模式）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e17\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;lang\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e使用指定的语言。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e18\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;no-displaying-insecure-content\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e默认情况下，https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e19\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;no-referrers\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e不发送 Http-Referer 头。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e20\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;no-startup-window\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e启动时不建立窗口。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e21\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;proxy-server\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e使用给定的代理服务器，这个参数只对 http 和 https 有效。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e22\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;start-maximized\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e启动时最大化。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e23\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;single-process\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e以单进程模式运行 Chromium。（启动时浏览器会给出不安全警告）。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e24\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;user-agent\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e使用给定的 User-Agent 字符串。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e25\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;process-per-tab\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e每个分页使用单独进程。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e26\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;process-per-site\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e每个站点使用单独进程。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e27\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;in-process-plugins\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e插件不启用单独进程。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e28\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-popup-blocking\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e禁用弹出拦截。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e29\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-javascript\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e禁用JavaScript。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e30\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-java\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e禁用Java。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e31\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u0026ndash;disable-plugins\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e禁用插件。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e32\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e–disable-images\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e禁用图像。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch1 id=\"更多参数\"\u003e更多参数\u003c/h1\u003e\n\u003cp\u003e由于水平有限，下表为网络翻译，了解跟多可根基参数，查找相关资料。\u003c/p\u003e","tags":[],"title":"Google Chrome 參數大全"},{"categories":["today_i_learned"],"content":"为什么要创建符号链接 部分游戏无法识别中文路径\n需要从第三方游戏库加载到官方游戏库\n节省时间提高效率\n使用Linkexe链接 配置文件说明\n[Count] ;文件个数 FileCount=1 [PathInfo] ;SourceFile源文件相对于本exe所在目录 DriveLetter映射目标路径 SourceFile0=Battle.net DriveLetter0=C:\\ProgramData\\ ;注意序号默认从0开始，如果设置非0会报错无法正常运行注： 该程序非公开，此配置文件只做记录\n使用Powershell脚本创建符号链接 待更新完善\nNew-Item -ItemType SymbolicLink -Path \u0026quot;Symbolic\\Link\\Path\u0026quot; -Target \u0026quot;New\\Target\\For\\Link\u0026quot; -Force\n相关阅读 How to change the drive in a symbolic link?\nhttps://superuser.com/questions/1362951/how-to-change-the-drive-in-a-symbolic-link#\n微软知识中心\nhttps://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink\nPowershell\nhttps://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/new-item?view=powershell-7.2\u0026amp;viewFallbackFrom=powershell-6\n应用实例\nhttps://www.itiohub.com/log/steamgame.html\n","permalink":"https://www.dukehsu.com/posts/linkfile.html","summary":"\u003ch4 id=\"为什么要创建符号链接\"\u003e为什么要创建符号链接\u003c/h4\u003e\n\u003cp\u003e部分游戏无法识别中文路径\u003cbr\u003e\n需要从第三方游戏库加载到官方游戏库\u003cbr\u003e\n节省时间提高效率\u003c/p\u003e\n\u003ch4 id=\"使用linkexe链接\"\u003e使用Linkexe链接\u003c/h4\u003e\n\u003cp\u003e配置文件说明\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e[Count]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e;文件个数\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eFileCount=1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e[PathInfo]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e;SourceFile源文件相对于本exe所在目录   DriveLetter映射目标路径\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eSourceFile0=Battle.net\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eDriveLetter0=C:\\ProgramData\\\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e;注意序号默认从0开始，如果设置非0会报错无法正常运行\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e注： 该程序非公开，此配置文件只做记录\u003c/p\u003e\n\u003ch4 id=\"使用powershell脚本创建符号链接\"\u003e使用Powershell脚本创建符号链接\u003c/h4\u003e\n\u003cp\u003e待更新完善\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eNew-Item -ItemType SymbolicLink -Path \u0026quot;Symbolic\\Link\\Path\u0026quot; -Target \u0026quot;New\\Target\\For\\Link\u0026quot; -Force\u003c/code\u003e\u003c/p\u003e\n\u003ch4 id=\"相关阅读\"\u003e相关阅读\u003c/h4\u003e\n\u003cp\u003e\u003cstrong\u003eHow to change the drive in a symbolic link?\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://superuser.com/questions/1362951/how-to-change-the-drive-in-a-symbolic-link\"\u003ehttps://superuser.com/questions/1362951/how-to-change-the-drive-in-a-symbolic-link#\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e微软知识中心\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink\"\u003ehttps://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePowershell\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/new-item?view=powershell-7.2\u0026amp;viewFallbackFrom=powershell-6\"\u003ehttps://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/new-item?view=powershell-7.2\u0026amp;viewFallbackFrom=powershell-6\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e应用实例\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://www.itiohub.com/log/steamgame.html\"\u003ehttps://www.itiohub.com/log/steamgame.html\u003c/a\u003e\u003c/p\u003e","tags":["windows10"],"title":"Windows10 创建符号链接相关笔记"},{"categories":["today_i_learned"],"content":"服务器配置 镜像: Ubuntu 18.04 64位\nCPU: 1核\n内存: 2G\n带宽：2mbps\n系统盘总容量: 20GB\n数据盘总容量: 0GB\n安装步骤 查看云服务器网络配置 cat /etc/network/interfaces\n或者\nnetstat -rn\n下载ISO安装包 x32位\nwge thttps://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x32_3.5.11_Build202112031159.iso -O ikuai8.iso\nx64位\nwget https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.5.11_Build202112031159.iso -O ikuai8.iso\n挂载ISO镜像 sudo mount ikuai8.iso /mnt\n复制ISO镜像启动文件 sudo cp -rpf /mnt/boot /\n重启服务器 sudo reboot\n通过VNC控制进入服务器面板 正常ISO安装爱快系统\n解除LAN口绑定，将网卡绑定到WAN口\n设置WAN口的IP地址为云服务器的内网IP地址\n在安装好的路由控制台开启外网访问WEB 进入控制台\\\u0026ldquo;开启外网访问WEB\\\u0026rdquo;\no、其他选项 \u0026ndash;\u0026gt; 2、开启外网访问web\n安装完成之后使用云服务器的外网IP地址即可访问你的ikuai路由\n","permalink":"https://www.dukehsu.com/posts/ikuairouter.html","summary":"\u003ch4 id=\"服务器配置\"\u003e服务器配置\u003c/h4\u003e\n\u003cp\u003e镜像: Ubuntu 18.04 64位\u003cbr\u003e\nCPU: 1核\u003cbr\u003e\n内存: 2G\u003cbr\u003e\n带宽：2mbps\u003cbr\u003e\n系统盘总容量: 20GB\u003cbr\u003e\n数据盘总容量: 0GB\u003c/p\u003e\n\u003ch4 id=\"安装步骤\"\u003e安装步骤\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e查看云服务器网络配置\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003ecat /etc/network/interfaces\u003c/code\u003e\u003cbr\u003e\n或者\u003cbr\u003e\nnetstat -rn\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e下载ISO安装包\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003ex32位\u003c/strong\u003e\u003cbr\u003e\n\u003ccode\u003ewge thttps://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x32_3.5.11_Build202112031159.iso -O ikuai8.iso\u003c/code\u003e\u003cbr\u003e\n\u003cstrong\u003ex64位\u003c/strong\u003e\u003cbr\u003e\n\u003ccode\u003ewget https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.5.11_Build202112031159.iso -O ikuai8.iso\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e挂载ISO镜像\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003esudo mount ikuai8.iso /mnt\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e复制ISO镜像启动文件\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003esudo cp -rpf /mnt/boot /\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e重启服务器\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003esudo reboot\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e通过VNC控制进入服务器面板\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e正常ISO安装爱快系统\u003cbr\u003e\n解除LAN口绑定，将网卡绑定到WAN口\u003cbr\u003e\n设置WAN口的IP地址为云服务器的内网IP地址\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e在安装好的路由控制台开启外网访问WEB\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e进入控制台\\\u0026ldquo;开启外网访问WEB\\\u0026rdquo;\u003cbr\u003e\no、其他选项 \u0026ndash;\u0026gt; 2、开启外网访问web\u003c/p\u003e\n\u003cp\u003e安装完成之后使用云服务器的外网IP地址即可访问你的ikuai路由\u003c/p\u003e\n\u003chr\u003e","tags":["云服务器","ikuai"],"title":"云服务器安装ikuai路由"},{"categories":["today_i_learned"],"content":"故障现象 故障发生前操作 使用Symantec ghost磁盘对拷之后新磁盘上的系统无法 进入系统出现以上错误\n设备情况 联想ThinkPad E580 源磁盘和新的目标磁盘都是MBR模式 2TB磁盘有9个分区，每一个分区一个操作系统 解决步骤 使用PE系统里面的引导修复修复其中一个分区 使用磁盘管理工具重建引导（注意备份分区表） 重启电脑进入BIOS关闭快速启动，选择传统模式启动即可（如果需要UEFI启动请根据实际情况设置） 在当前进入的操作系统中使用EasyBCD 添加和编辑引导即可\n将引导添加到相对应的分区即可 参考阅读 EsayBCD\nhttps://neosmart.net/EasyBCD/\n磁碟分割MBR、GPT是什麼？\nhttps://www.linwei.com.tw/forum-detail/76/\n声明 此文章作为本人日常笔记，不对读者负责；\n数据无价，谨慎操作\n","permalink":"https://www.dukehsu.com/posts/windowsboot.html","summary":"\u003ch4 id=\"故障现象\"\u003e故障现象\u003c/h4\u003e\n\u003cp\u003e\u003cimg alt=\"89c245fe-f41d-46c7-a45b-28d7872f967e.png\" loading=\"lazy\" src=\"/posts/windowsboot/images/392482735.png\" title=\"89c245fe-f41d-46c7-a45b-28d7872f967e.png\"\u003e\u003c/p\u003e\n\u003ch4 id=\"故障发生前操作\"\u003e故障发生前操作\u003c/h4\u003e\n\u003cp\u003e使用Symantec ghost磁盘对拷之后新磁盘上的系统无法 进入系统出现以上错误\u003c/p\u003e\n\u003ch4 id=\"设备情况\"\u003e设备情况\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e联想ThinkPad E580\u003c/li\u003e\n\u003cli\u003e源磁盘和新的目标磁盘都是MBR模式\u003c/li\u003e\n\u003cli\u003e2TB磁盘有9个分区，每一个分区一个操作系统\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"解决步骤\"\u003e解决步骤\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e使用PE系统里面的引导修复修复其中一个分区\u003c/li\u003e\n\u003cli\u003e使用磁盘管理工具重建引导（注意备份分区表）\u003c/li\u003e\n\u003cli\u003e重启电脑进入BIOS关闭快速启动，选择传统模式启动即可（如果需要UEFI启动请根据实际情况设置）\u003c/li\u003e\n\u003cli\u003e在当前进入的操作系统中使用EasyBCD 添加和编辑引导即可\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2022-03-04_01-16-13.jpg\" loading=\"lazy\" src=\"/posts/windowsboot/images/685272366.jpg\" title=\"Snipaste_2022-03-04_01-16-13.jpg\"\u003e\u003c/li\u003e\n\u003cli\u003e将引导添加到相对应的分区即可\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch4 id=\"参考阅读\"\u003e参考阅读\u003c/h4\u003e\n\u003cp\u003eEsayBCD\u003cbr\u003e\n\u003ca href=\"https://neosmart.net/EasyBCD/\"\u003ehttps://neosmart.net/EasyBCD/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e磁碟分割MBR、GPT是什麼？\u003cbr\u003e\n\u003ca href=\"https://www.linwei.com.tw/forum-detail/76/\"\u003ehttps://www.linwei.com.tw/forum-detail/76/\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"声明\"\u003e声明\u003c/h4\u003e\n\u003cp\u003e此文章作为本人日常笔记，不对读者负责；\u003cbr\u003e\n数据无价，谨慎操作\u003c/p\u003e","tags":["windowsboot","启动修复","多系统","引导修复"],"title":"无法加载应用程序或操作系统，原因是所需文件丢失或包含错误 解决笔记"},{"categories":["today_i_learned"],"content":"說明 該shell 腳本能從apnic獲取ip地址導出到txt文檔中 #!/bin/bash wget -c http://ftp.apnic.net/stats/apnic/delegated-apnic-latest cat delegated-apnic-latest | awk -F \u0026#39;|\u0026#39; \u0026#39;/CN/\u0026amp;\u0026amp;/ipv4/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39; | cat \u0026gt; ipv4.txt cat delegated-apnic-latest | awk -F \u0026#39;|\u0026#39; \u0026#39;/CN/\u0026amp;\u0026amp;/ipv6/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39; | cat \u0026gt; ipv6.txt cat delegated-apnic-latest | awk -F \u0026#39;|\u0026#39; \u0026#39;/HK/\u0026amp;\u0026amp;/ipv4/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39; | cat \u0026gt; ipv4-hk.txt cat delegated-apnic-latest | awk -F \u0026#39;|\u0026#39; \u0026#39;/HK/\u0026amp;\u0026amp;/ipv6/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39; | cat \u0026gt; ipv6-hk.txt","permalink":"https://www.dukehsu.com/posts/linuxsh.html","summary":"\u003ch2 id=\"說明\"\u003e說明\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e該shell 腳本能從apnic獲取ip地址導出到txt文檔中\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#!/bin/bash\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ewget -c http://ftp.apnic.net/stats/apnic/delegated-apnic-latest\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat delegated-apnic-latest \u003cspan class=\"p\"\u003e|\u003c/span\u003e awk -F \u003cspan class=\"s1\"\u003e\u0026#39;|\u0026#39;\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;/CN/\u0026amp;\u0026amp;/ipv4/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e cat \u0026gt; ipv4.txt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat delegated-apnic-latest \u003cspan class=\"p\"\u003e|\u003c/span\u003e awk -F \u003cspan class=\"s1\"\u003e\u0026#39;|\u0026#39;\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;/CN/\u0026amp;\u0026amp;/ipv6/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e cat \u0026gt; ipv6.txt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat delegated-apnic-latest \u003cspan class=\"p\"\u003e|\u003c/span\u003e awk -F \u003cspan class=\"s1\"\u003e\u0026#39;|\u0026#39;\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;/HK/\u0026amp;\u0026amp;/ipv4/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e cat \u0026gt; ipv4-hk.txt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat delegated-apnic-latest \u003cspan class=\"p\"\u003e|\u003c/span\u003e awk -F \u003cspan class=\"s1\"\u003e\u0026#39;|\u0026#39;\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;/HK/\u0026amp;\u0026amp;/ipv6/ {print $4 \u0026#34;/\u0026#34; 32-log($5)/log(2)}\u0026#39;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e cat \u0026gt; ipv6-hk.txt\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":[],"title":"使用脚本从APNIC获取中国IP地址列表"},{"categories":["today_i_learned"],"content":"\n将盖伦游戏平台下的STEAM游戏连接到你的STEAM游戏库 复制\u0026quot;acf\u0026quot;文件 将盖伦更新好的STEAM游戏目录下的acf 文件拷贝到 STEAM库SteamLibrary\\steamapps\\目录下\n使用批处理命令将acf文件拷贝到SteamLibrary\\steamapps\\目录下 copy \u0026#34;Z:\\我的游戏\\单机游戏\\NARAKA BLADEPOINT\\appmanifest_1203220.acf\u0026#34; \u0026#34;Z:\\SteamLibrary\\steamapps\u0026#34;(实际路径请根据自身磁盘路径填写)\n创建软连接，将游戏目录连接到STEAM库 将盖伦更新好的STEAM游戏目录下的游戏本体目录通过mklink命令联接到STEAM库SteamLibrary\\steamapps\\common\\目录\n使用mklink命令创建软链接将盖伦的STEAM游戏本体文件联接到STEAM库目录 mklink /J \u0026#34;Z:\\SteamLibrary\\steamapps\\common\\NARAKA BLADEPOINT\u0026#34; \u0026#34;Z:\\我的游戏\\单机游戏\\NARAKA BLADEPOINT\\NARAKA BLADEPOINT\\\u0026#34;(实际路径请根据自身磁盘路径填写)\n只需要以上两条命令即可将盖伦平台的STEAM游戏联接到自己的STEAM库里\n常见问题 命令不生效 请检查批处理语法或者文件目录是否正确 请检查文件编码，如果有中文目录请保存为ANSI编码格式 ","permalink":"https://www.dukehsu.com/posts/steamgame.html","summary":"\u003cp\u003e\u003cimg alt=\"Image.png\" loading=\"lazy\" src=\"/posts/steamgame/images/183440702.png\" title=\"Image.png\"\u003e\u003c/p\u003e\n\u003ch2 id=\"将盖伦游戏平台下的steam游戏连接到你的steam游戏库\"\u003e将盖伦游戏平台下的STEAM游戏连接到你的STEAM游戏库\u003c/h2\u003e\n\u003ch4 id=\"复制acf文件\"\u003e复制\u0026quot;acf\u0026quot;文件\u003c/h4\u003e\n\u003cp\u003e将盖伦更新好的STEAM游戏目录下的acf 文件拷贝到 STEAM库SteamLibrary\\steamapps\\目录下\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e使用批处理命令将acf文件拷贝到SteamLibrary\\steamapps\\目录下\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecopy \u0026#34;Z:\\我的游戏\\单机游戏\\NARAKA BLADEPOINT\\appmanifest_1203220.acf\u0026#34;  \u0026#34;Z:\\SteamLibrary\\steamapps\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e(实际路径请根据自身磁盘路径填写)\u003c/p\u003e\n\u003ch4 id=\"创建软连接将游戏目录连接到steam库\"\u003e创建软连接，将游戏目录连接到STEAM库\u003c/h4\u003e\n\u003cp\u003e将盖伦更新好的STEAM游戏目录下的游戏本体目录通过mklink命令联接到STEAM库SteamLibrary\\steamapps\\common\\目录\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e使用mklink命令创建软链接将盖伦的STEAM游戏本体文件联接到STEAM库目录\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emklink /J   \u0026#34;Z:\\SteamLibrary\\steamapps\\common\\NARAKA BLADEPOINT\u0026#34;  \u0026#34;Z:\\我的游戏\\单机游戏\\NARAKA BLADEPOINT\\NARAKA BLADEPOINT\\\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e(实际路径请根据自身磁盘路径填写)\u003c/p\u003e\n\u003cp\u003e只需要以上两条命令即可将盖伦平台的STEAM游戏联接到自己的STEAM库里\u003c/p\u003e\n\u003ch4 id=\"常见问题\"\u003e常见问题\u003c/h4\u003e\n\u003ch5 id=\"命令不生效\"\u003e命令不生效\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e请检查批处理语法或者文件目录是否正确\u003c/li\u003e\n\u003cli\u003e请检查文件编码，如果有中文目录请保存为ANSI编码格式\u003c/li\u003e\n\u003c/ul\u003e","tags":["steam","steam库","盖伦游戏更新"],"title":"将盖伦游戏平台下的STEAM游戏联接到你的STEAM游戏库"},{"categories":["today_i_learned"],"content":"海康威视NVR解绑萤石解决办法 经常遇到店家转让门店， NVR 绑定原先业主的手机号等等，导致现有业主无法添加设备，于是就需要解绑设备；\n思路 已经带解绑程序的设备可直接在设备的**“网络配置-云平台”中进行解绑（需要设备管理员密码）\n未带解绑程序需要去官网下载带解绑程序的固件包(4.0版本以上默认支持解绑)\n下载于设备匹配的固件\n使用U盘插入设备进行设备升级\n使用Web管理端进行设备升级\n升级完成之后设备自动重启 进入“网络配置-云平台”**中进行解绑即可\n升级包下载地址 中文\nhttps://www.hikvision.com/cn/support/Downloads/Device-upgrade-package/\n","permalink":"https://www.dukehsu.com/posts/hikvison.html","summary":"\u003ch3 id=\"海康威视nvr解绑萤石解决办法\"\u003e海康威视NVR解绑萤石解决办法\u003c/h3\u003e\n\u003cp\u003e经常遇到店家转让门店， NVR 绑定原先业主的手机号等等，导致现有业主无法添加设备，于是就需要解绑设备；\u003c/p\u003e\n\u003ch4 id=\"思路\"\u003e思路\u003c/h4\u003e\n\u003cp\u003e已经带解绑程序的设备可直接在设备的**“网络配置-云平台”\u003cstrong\u003e中进行解绑（需要设备管理员密码）\u003cbr\u003e\n未带解绑程序需要去官网下载带解绑程序的固件包(4.0版本以上默认支持解绑)\u003cbr\u003e\n下载于设备匹配的固件\u003cbr\u003e\n使用U盘插入设备进行设备升级\u003cbr\u003e\n使用Web管理端进行设备升级\u003cbr\u003e\n升级完成之后设备自动重启 进入\u003c/strong\u003e“网络配置-云平台”**中进行解绑即可\u003c/p\u003e\n\u003ch4 id=\"升级包下载地址\"\u003e升级包下载地址\u003c/h4\u003e\n\u003cp\u003e中文\u003cbr\u003e\n\u003ca href=\"https://www.hikvision.com/cn/support/Downloads/Device-upgrade-package/\"\u003ehttps://www.hikvision.com/cn/support/Downloads/Device-upgrade-package/\u003c/a\u003e\u003c/p\u003e","tags":["hikvison","海康威视","萤石解绑"],"title":"海康威视NVR解绑萤石解决办法"},{"categories":["today_i_learned"],"content":"\n因测试Kodi中Youtube插件的功能需要用到GoogleAPI， 故记录一下Google个人API的申请笔记\n此笔记编辑日期2021/09/02\n若Google有更新，请以Google为准\n具体步骤 凭证基本信息填写 登录https://console.cloud.google.com/\n创建一个项目\n启用API和服务\n选择YouTube Data API v3 服务并启用\n在YouTube Data API v3 服务中选择左边栏的凭据\n配置OAuth同意屏幕\nUser Type 我选的外部 (因为不是GoogleWorkSpace用户)\n填写应用信息（带红色星号选项必填）\n添加范围(根据需求自己选择即可)\n添加测试用户（我加的我自己）\n保存之后即可\nAPI密匙和OAuth客户端ID创建 在凭据中直接创建API密匙和OAuth客户端ID(客户端根据自身需求选择)即可\n根据Google API 给的密匙依次填入Kodi中的Youtube应用中即可使用\n在Kodi中使用Youtube的体验 优点 无广告 搜索结果精准 操作简便 缺点 加载速度极慢(非大陆网路环境) 参考阅读\nhttps://www.yinxiang.com/everhub/note/53490d9c-fb0a-4652-a109-7cc119ad9593\nhttps://github.com/anxdpanic/plugin.video.youtube/wiki/Personal-API-Keys\n","permalink":"https://www.dukehsu.com/posts/googleapi.html","summary":"\u003cp\u003e\u003cimg alt=\"20210902.png\" loading=\"lazy\" src=\"/posts/googleapi/images/2686517536.png\" title=\"20210902.png\"\u003e\u003cbr\u003e\n因测试Kodi中Youtube插件的功能需要用到GoogleAPI， 故记录一下Google个人API的申请笔记\u003cbr\u003e\n此笔记编辑日期2021/09/02\u003cbr\u003e\n若Google有更新，请以Google为准\u003c/p\u003e\n\u003ch3 id=\"具体步骤\"\u003e具体步骤\u003c/h3\u003e\n\u003ch5 id=\"凭证基本信息填写\"\u003e凭证基本信息填写\u003c/h5\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e登录\u003ca href=\"https://console.cloud.google.com/\"\u003ehttps://console.cloud.google.com/\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e创建一个项目\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e启用API和服务\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e选择YouTube Data API v3 服务并启用\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e在YouTube Data API v3 服务中选择左边栏的凭据\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e配置OAuth同意屏幕\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUser Type 我选的外部 (因为不是GoogleWorkSpace用户)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e填写应用信息（带红色星号选项必填）\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e添加范围(根据需求自己选择即可)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e添加测试用户（我加的我自己）\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e保存之后即可\u003c/p\u003e\n\u003ch5 id=\"api密匙和oauth客户端id创建\"\u003eAPI密匙和OAuth客户端ID创建\u003c/h5\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e在凭据中直接创建API密匙和OAuth客户端ID(客户端根据自身需求选择)即可\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e根据Google API 给的密匙依次填入Kodi中的Youtube应用中即可使用\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"在kodi中使用youtube的体验\"\u003e在Kodi中使用Youtube的体验\u003c/h3\u003e\n\u003ch5 id=\"优点\"\u003e优点\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e无广告\u003c/li\u003e\n\u003cli\u003e搜索结果精准\u003c/li\u003e\n\u003cli\u003e操作简便\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5 id=\"缺点\"\u003e缺点\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e加载速度极慢(非大陆网路环境)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cp\u003e参考阅读\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.yinxiang.com/everhub/note/53490d9c-fb0a-4652-a109-7cc119ad9593\"\u003ehttps://www.yinxiang.com/everhub/note/53490d9c-fb0a-4652-a109-7cc119ad9593\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/anxdpanic/plugin.video.youtube/wiki/Personal-API-Keys\"\u003ehttps://github.com/anxdpanic/plugin.video.youtube/wiki/Personal-API-Keys\u003c/a\u003e\u003c/p\u003e","tags":["google-personal-api-keys","googleapi","kodi","youtube","电视盒子"],"title":"Google个人API 申请笔记 -Google Personal API Keys Apply"},{"categories":["today_i_learned"],"content":"v2rayN（Windows） Github\nhttps://github.com/2dust/v2rayN/releases\nV2rayU（Mac） Github\nhttps://github.com/yanue/V2rayU/releases\nv2rayNG（Android） Github\nhttps://github.com/2dust/v2rayNG/releases\nGoogle Play\nhttps://play.google.com/store/apps/details?id=com.v2ray.ang\nKitsunebi（Android） Github\nhttps://github.com/eycorsican/kitsunebi-android/releases\nGoogle Play\nhttps://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android\nBifrostV（Android） Google Play\nhttps://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv\nKitsunebi（iOS） App store\nhttps://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8\ni2Ray（iOS） App store\nhttps://itunes.apple.com/us/app/i2ray/id1445270056?mt=8\nShadowrocket（iOS） App store\nhttps://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8\nPepi（iOS） App store\nhttps://itunes.apple.com/us/app/pepi/id1283082051?mt=8\nQuantumult（iOS） App store\nhttps://itunes.apple.com/us/app/quantumult/id1252015438?mt=8\n","permalink":"https://www.dukehsu.com/posts/goodguys.html","summary":"\u003ch5 id=\"v2raynwindows\"\u003ev2rayN（Windows）\u003c/h5\u003e\n\u003cp\u003eGithub\u003cbr\u003e\n\u003ca href=\"https://github.com/2dust/v2rayN/releases\"\u003ehttps://github.com/2dust/v2rayN/releases\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"v2rayumac\"\u003eV2rayU（Mac）\u003c/h5\u003e\n\u003cp\u003eGithub\u003cbr\u003e\n\u003ca href=\"https://github.com/yanue/V2rayU/releases\"\u003ehttps://github.com/yanue/V2rayU/releases\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"v2rayngandroid\"\u003ev2rayNG（Android）\u003c/h5\u003e\n\u003cp\u003eGithub\u003cbr\u003e\n\u003ca href=\"https://github.com/2dust/v2rayNG/releases\"\u003ehttps://github.com/2dust/v2rayNG/releases\u003c/a\u003e\u003cbr\u003e\nGoogle Play\u003cbr\u003e\n\u003ca href=\"https://play.google.com/store/apps/details?id=com.v2ray.ang\"\u003ehttps://play.google.com/store/apps/details?id=com.v2ray.ang\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"kitsunebiandroid\"\u003eKitsunebi（Android）\u003c/h5\u003e\n\u003cp\u003eGithub\u003cbr\u003e\n\u003ca href=\"https://github.com/eycorsican/kitsunebi-android/releases\"\u003ehttps://github.com/eycorsican/kitsunebi-android/releases\u003c/a\u003e\u003cbr\u003e\nGoogle Play\u003cbr\u003e\n\u003ca href=\"https://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android\"\u003ehttps://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"bifrostvandroid\"\u003eBifrostV（Android）\u003c/h5\u003e\n\u003cp\u003eGoogle Play\u003cbr\u003e\n\u003ca href=\"https://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv\"\u003ehttps://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"kitsunebiios\"\u003eKitsunebi（iOS）\u003c/h5\u003e\n\u003cp\u003eApp store\u003cbr\u003e\n\u003ca href=\"https://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8\"\u003ehttps://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"i2rayios\"\u003ei2Ray（iOS）\u003c/h5\u003e\n\u003cp\u003eApp store\u003cbr\u003e\n\u003ca href=\"https://itunes.apple.com/us/app/i2ray/id1445270056?mt=8\"\u003ehttps://itunes.apple.com/us/app/i2ray/id1445270056?mt=8\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"shadowrocketios\"\u003eShadowrocket（iOS）\u003c/h5\u003e\n\u003cp\u003eApp store\u003cbr\u003e\n\u003ca href=\"https://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8\"\u003ehttps://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"pepiios\"\u003ePepi（iOS）\u003c/h5\u003e\n\u003cp\u003eApp store\u003cbr\u003e\n\u003ca href=\"https://itunes.apple.com/us/app/pepi/id1283082051?mt=8\"\u003ehttps://itunes.apple.com/us/app/pepi/id1283082051?mt=8\u003c/a\u003e\u003c/p\u003e\n\u003ch5 id=\"quantumultios\"\u003eQuantumult（iOS）\u003c/h5\u003e\n\u003cp\u003eApp store\u003cbr\u003e\n\u003ca href=\"https://itunes.apple.com/us/app/quantumult/id1252015438?mt=8\"\u003ehttps://itunes.apple.com/us/app/quantumult/id1252015438?mt=8\u003c/a\u003e\u003c/p\u003e","tags":["github","v2ray","newsletter"],"title":"Github上那些V2ray客户端们"},{"categories":["today_i_learned"],"content":"如何解决 kisboot.sys蓝屏 故障现象： 计算机无法进入操作系统\n蓝屏提示无法验证文件或其某个xxx项的数字签名\n文件：C：\\windoiws\\system32\\drivers\\kisboot.sys\n错误代码：0xc0000428\n无法进入安全模式\n解决办法 使用U盘的Windows PE 系统，删除计算机操作系统中\nC：\\windoiws\\system32\\drivers\\\n目录下的 kisboot.sys 文件 重新启动即可\n参考阅读：\nhttps://www.fujieace.com/computer-practical/kisboot-sys.html\n","permalink":"https://www.dukehsu.com/posts/kisboot_windows10.html","summary":"\u003ch2 id=\"如何解决-kisbootsys蓝屏\"\u003e如何解决 kisboot.sys蓝屏\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"20210828202508.jpg\" loading=\"lazy\" src=\"/posts/kisboot_windows10/images/3896742626.jpg\" title=\"20210828202508.jpg\"\u003e\u003c/p\u003e\n\u003ch4 id=\"故障现象\"\u003e故障现象：\u003c/h4\u003e\n\u003cp\u003e计算机无法进入操作系统\u003cbr\u003e\n蓝屏提示无法验证文件或其某个xxx项的数字签名\u003cbr\u003e\n文件：C：\\windoiws\\system32\\drivers\\kisboot.sys\u003cbr\u003e\n错误代码：0xc0000428\u003c/p\u003e\n\u003cp\u003e无法进入安全模式\u003c/p\u003e\n\u003ch4 id=\"解决办法\"\u003e解决办法\u003c/h4\u003e\n\u003cp\u003e使用U盘的Windows PE 系统，删除计算机操作系统中\u003cbr\u003e\n\u003ccode\u003eC：\\windoiws\\system32\\drivers\\\u003c/code\u003e\u003cbr\u003e\n目录下的 \u003ccode\u003ekisboot.sys\u003c/code\u003e 文件 \u003cstrong\u003e重新启动即可\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e参考阅读：\u003c/strong\u003e\u003cbr\u003e\n\u003ca href=\"https://www.fujieace.com/computer-practical/kisboot-sys.html\"\u003ehttps://www.fujieace.com/computer-practical/kisboot-sys.html\u003c/a\u003e\u003c/p\u003e","tags":["kisboot-sys","windows10","蓝屏"],"title":"Windows10kisboot.sys蓝屏解决办法"},{"categories":["today_i_learned"],"content":"云服务器 通用计算型\n| s6.medium.2 | 1vCPUs | 2GiB\n镜像\nUbuntu 16.04 server 64bit\n操作步骤 在ssh命令行中下载一键脚本\nwget -O install_ikiso.sh\n给脚本权限\nchmod +x install_ikiso.sh\n下载并安装爱快\n./install_ikiso.sh x32\n通过云平台远程登录服务器运行\nreboot\n选择爱快启动 进行安装配置\n-解除lan口绑定 -绑定wan口 -设置wan口地址和网关 -若不开启WAN口访问请从内网进入web设置 进入WEB 管理界面改密码 绑定云平台之后就可以组SD-WAN了\n参考阅读：https://bbs.ikuai8.com/thread-121888-1-1.html\n","permalink":"https://www.dukehsu.com/posts/sd-wan.html","summary":"\u003ch3 id=\"云服务器\"\u003e云服务器\u003c/h3\u003e\n\u003cp\u003e通用计算型\u003cbr\u003e\n| s6.medium.2 | 1vCPUs | 2GiB\u003cbr\u003e\n镜像\u003cbr\u003e\nUbuntu 16.04 server 64bit\u003c/p\u003e\n\u003ch3 id=\"操作步骤\"\u003e操作步骤\u003c/h3\u003e\n\u003cp\u003e在ssh命令行中下载一键脚本\u003cbr\u003e\n\u003ccode\u003ewget -O install_ikiso.sh\u003c/code\u003e\u003cbr\u003e\n给脚本权限\u003cbr\u003e\n\u003ccode\u003echmod +x install_ikiso.sh\u003c/code\u003e\u003cbr\u003e\n下载并安装爱快\u003cbr\u003e\n\u003ccode\u003e./install_ikiso.sh x32\u003c/code\u003e\u003cbr\u003e\n通过云平台远程登录服务器运行\u003cbr\u003e\n\u003ccode\u003ereboot\u003c/code\u003e\u003cbr\u003e\n选择爱快启动 进行安装配置\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e-解除lan口绑定\u003c/li\u003e\n\u003cli\u003e-绑定wan口\u003c/li\u003e\n\u003cli\u003e-设置wan口地址和网关\u003c/li\u003e\n\u003cli\u003e-若不开启WAN口访问请从内网进入web设置\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e进入WEB 管理界面改密码 绑定云平台之后就可以组SD-WAN了\u003c/p\u003e\n\u003cp\u003e参考阅读：\u003ca href=\"https://bbs.ikuai8.com/thread-121888-1-1.html\"\u003ehttps://bbs.ikuai8.com/thread-121888-1-1.html\u003c/a\u003e\u003c/p\u003e","tags":["sd-wan","ikuai"],"title":"云服务器安装爱快组建SD-WAN"},{"categories":["today_i_learned"],"content":"最近不少外卖商家被盗号然后进行勒索，原因是商家接受了被控程序，具体操作是程序控制了商家已登录Telegram的电脑，然后打包telegram，回传到服务器，在服务器那边上号开二次验证，将商家这边的设备全部踢下线。然后开始勒索。\nTelegram基本的安全设置 将【设置-高级-自动下载媒体文件(私聊，群组，频道)】下载文件选项全部关闭\n火绒安全规则设置 在【安全设置-高级防护-自定义规则】中添加规则\n防止Telegram自动下载媒体文件到电脑\n验证 ","permalink":"https://www.dukehsu.com/posts/telegram.html","summary":"\u003cp\u003e最近不少外卖商家被盗号然后进行勒索，原因是商家接受了被控程序，具体操作是程序控制了商家已登录Telegram的电脑，然后打包telegram，回传到服务器，在服务器那边上号开二次验证，将商家这边的设备全部踢下线。然后开始勒索。\u003c/p\u003e\n\u003ch3 id=\"telegram基本的安全设置\"\u003eTelegram基本的安全设置\u003c/h3\u003e\n\u003cp\u003e将【设置-高级-自动下载媒体文件(私聊，群组，频道)】下载文件选项全部关闭\u003cbr\u003e\n\u003cimg alt=\"1.jpg\" loading=\"lazy\" src=\"/posts/telegram/images/3299485023.jpg\" title=\"1.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"火绒安全规则设置\"\u003e火绒安全规则设置\u003c/h3\u003e\n\u003cp\u003e在【安全设置-高级防护-自定义规则】中添加规则\u003cbr\u003e\n防止Telegram自动下载媒体文件到电脑\u003cbr\u003e\n\u003cimg alt=\"2.jpg\" loading=\"lazy\" src=\"/posts/telegram/images/355256707.jpg\" title=\"2.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"验证\"\u003e验证\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"3.png\" loading=\"lazy\" src=\"/posts/telegram/images/1898755064.png\" title=\"3.png\"\u003e\u003c/p\u003e","tags":["telegram","安全设置","火绒"],"title":"Telegram基本的安全设置和搭配火绒安全规则过滤下载文件"},{"categories":["today_i_learned"],"content":"勒索病毒通用防范措施建议 摘自：2020年 中国互联网网络安全报告 85-86页\n从主要勒索病毒家族传播方式来看，安全性较差的远程桌面协议（Remote Desktop Protocol，RDP）是最常见的攻击媒介。其次为利用垃圾邮件、钓鱼邮件、水坑网站等方式传播，诱导受害者下载运行勒索病毒。针对主要以远程桌面登录爆破方式传播的勒索病毒，\n建议防范措施如下： ● 设备登录口令应为强口令（字母+数字+特殊符号的长组合），定期修改口令；\n● 不同的设备应使用不同的强口令，避免一个口令重复使用的情况；\n● 定期进行数据备份并异地保存;\n● 关闭或者修改135～139、445等高危端口，关闭服务器之间的文件共享；\n● 定期对资产进行安全自查，及时安装漏洞补丁；\n● 对内网的安全域进行合理的划分，域之间做好访问控制列表（Access Control Lists，ACL）限制，尤其是域管理员的计算机，如果其被攻破，会带来整个局域网沦陷的风险；\n● 做好全流量日志的记录和监控，定期检查设备是否存在异常情况；\n● 安装安全软件，提高服务器的安全性，以防核心数据被加密，造成重大损失。针对主要以钓鱼等方式传播的勒索病毒，建议防范措施如下：\n● 不要下载网络上不明的档案、文件、图片或影片，谨慎对待陌生邮件、短信 中的链接；\n● 从正规渠道下载安装软件；\n● 注意规范U盘等移动介质的使用，关闭自动播放功能，使用前先进行查杀；\n● 定期进行安全培训，提升网络管理员和普通用户的安全意识。\n摘自：2020年 中国互联网网络安全报告 85-86页\n","permalink":"https://www.dukehsu.com/posts/memo.html","summary":"\u003ch3 id=\"勒索病毒通用防范措施建议\"\u003e勒索病毒通用防范措施建议\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e摘自：2020年 中国互联网网络安全报告 85-86页\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e从主要勒索病毒家族传播方式来看，安全性较差的远程桌面协议（Remote Desktop Protocol，RDP）是最常见的攻击媒介。其次为利用垃圾邮件、钓鱼邮件、水坑网站等方式传播，诱导受害者下载运行勒索病毒。针对主要以远程桌面登录爆破方式传播的勒索病毒，\u003c/p\u003e\n\u003ch4 id=\"建议防范措施如下\"\u003e建议防范措施如下：\u003c/h4\u003e\n\u003cp\u003e● 设备登录口令应为强口令（字母+数字+特殊符号的长组合），定期修改口令；\u003cbr\u003e\n● 不同的设备应使用不同的强口令，避免一个口令重复使用的情况；\u003cbr\u003e\n● 定期进行数据备份并异地保存;\u003cbr\u003e\n● 关闭或者修改135～139、445等高危端口，关闭服务器之间的文件共享；\u003cbr\u003e\n● 定期对资产进行安全自查，及时安装漏洞补丁；\u003cbr\u003e\n● 对内网的安全域进行合理的划分，域之间做好访问控制列表（Access Control Lists，ACL）限制，尤其是域管理员的计算机，如果其被攻破，会带来整个局域网沦陷的风险；\u003cbr\u003e\n● 做好全流量日志的记录和监控，定期检查设备是否存在异常情况；\u003cbr\u003e\n● 安装安全软件，提高服务器的安全性，以防核心数据被加密，造成重大损失。针对主要以钓鱼等方式传播的勒索病毒，建议防范措施如下：\u003cbr\u003e\n● 不要下载网络上不明的档案、文件、图片或影片，谨慎对待陌生邮件、短信 中的链接；\u003cbr\u003e\n● 从正规渠道下载安装软件；\u003cbr\u003e\n● 注意规范U盘等移动介质的使用，关闭自动播放功能，使用前先进行查杀；\u003cbr\u003e\n● 定期进行安全培训，提升网络管理员和普通用户的安全意识。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e摘自：2020年 中国互联网网络安全报告 85-86页\u003c/strong\u003e\u003c/p\u003e","tags":["信息安全","勒索病毒"],"title":"勒索病毒通用防范措施建议"},{"categories":["today_i_learned"],"content":"需求 A访问D延迟很大，需要降低A-B之间的延迟，提高访问速度\n实现目的 用C服务器转发A的流量到B，通过B访问D\n路径 访问端A - C服务器 - B服务器 - D目标服务器\n环境 C B 服务器\nCentOS 7.6 64bit\niptables命令 编辑\u0026#34;/etc/sysctl.conf\u0026#34;，将net.ipv4.ip_forward改成1 sysctl -p iptables -t nat -A PREROUTING -p tcp --dport 源端口 -j DNAT --to-destination 目标地址:目标端口 iptables -t nat -A POSTROUTING -j MASQUERADE参考： 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/\n","permalink":"https://www.dukehsu.com/posts/iptables.html","summary":"\u003ch3 id=\"需求\"\u003e需求\u003c/h3\u003e\n\u003cp\u003eA访问D延迟很大，需要降低A-B之间的延迟，提高访问速度\u003c/p\u003e\n\u003ch3 id=\"实现目的\"\u003e实现目的\u003c/h3\u003e\n\u003cp\u003e用C服务器转发A的流量到B，通过B访问D\u003c/p\u003e\n\u003ch3 id=\"路径\"\u003e路径\u003c/h3\u003e\n\u003cp\u003e访问端A - C服务器 - B服务器 - D目标服务器\u003c/p\u003e\n\u003ch3 id=\"环境\"\u003e环境\u003c/h3\u003e\n\u003cp\u003eC B 服务器\u003cbr\u003e\nCentOS 7.6 64bit\u003c/p\u003e\n\u003ch3 id=\"iptables命令\"\u003eiptables命令\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e编辑\u003cspan class=\"s2\"\u003e\u0026#34;/etc/sysctl.conf\u0026#34;\u003c/span\u003e，将net.ipv4.ip_forward改成1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esysctl -p\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eiptables -t nat -A PREROUTING -p tcp --dport 源端口 -j DNAT --to-destination 目标地址:目标端口\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eiptables -t nat -A POSTROUTING -j MASQUERADE\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch6 id=\"参考\"\u003e参考：\u003c/h6\u003e\n\u003cp\u003e\u003ca 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/\"\u003ehttps://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/\u003c/a\u003e\u003c/p\u003e","tags":[],"title":"用iptables 转发流量到另外一台服务器"},{"categories":["today_i_learned"],"content":"子网 Subnets CIDR 子网掩码 地址数 通配符 /32 255.255.255.255 1 0.0.0.0 /31 255.255.255.254 2 0.0.0.1 /30 255.255.255.252 4 0.0.0.3 /29 255.255.255.248 8 0.0.0.7 /28 255.255.255.240 16 0.0.0.15 /27 255.255.255.224 32 0.0.0.31 /26 255.255.255.192 64 0.0.0.63 /25 255.255.255.128 128 0.0.0.127 /24 255.255.255.0 256 0.0.0.255 /23 255.255.254.0 512 0.0.1.255 /22 255.255.252.0 1,024 0.0.3.255 /21 255.255.248.0 2,048 0.0.7.255 /20 255.255.240.0 4,096 0.0.15.255 /19 255.255.224.0 8,192 0.0.31.255 /18 255.255.192.0 16,384 0.0.63.255 /17 255.255.128.0 32,768 0.0.127.255 /16 255.255.0.0 65,536 0.0.255.255 /15 255.254.0.0 131,072 0.1.255.255 /14 255.252.0.0 262,144 0.3.255.255 /13 255.248.0.0 524,288 0.7.255.255 /12 255.240.0.0 1,048,576 0.15.255.255 /11 255.224.0.0 2,097,152 0.31.255.255 /10 255.192.0.0 4,194,304 0.63.255.255 /9 255.128.0.0 8,388,608 0.127.255.255 /8 255.0.0.0 16,777,216 0.255.255.255 /7 254.0.0.0 33,554,432 1.255.255.255 /6 252.0.0.0 67,108,864 3.255.255.255 /5 248.0.0.0 134,217,728 7.255.255.255 /4 240.0.0.0 268,435,456 15.255.255.255 /3 224.0.0.0 536,870,912 31.255.255.255 /2 192.0.0.0 1,073,741,824 63.255.255.255 /1 128.0.0.0 2,147,483,648 127.255.255.255 /0 0.0.0.0 4,294,967,296 255.255.255.255 IP 地址类 IP Address Classes Class 地址段 A 0.0.0.0 - 127.255.255.255 B 128.0.0.0 - 191.255.255.255 C 192.0.0.0 - 223.255.255.255 D 224.0.0.0 - 239.255.255.255 E 240.0.0.0 - 255.255.255.255 保留（私有）地址段 Class A 10.0.0.0 - 10.255.255.255 Class B 172.16.0.0 - 172.31.255.255 Class C 192.168.0.0 - 192.168.255.255 localhost 127.0.0.0 - 127.255.255.255 zeroconf 169.254.0.0 - 169.254.255.255 内部路由 (RFC 6598) 100.64.0.0 - 100.127.255.255 十进制到二进制对应表 十进制子网掩码 对应二进制 十进制通配符 对应二进制 255 1111 1111 0 0000 0000 254 1111 1110 1 0000 0001 252 1111 1100 3 0000 0011 248 1111 1000 7 0000 0111 240 1111 0000 15 0000 1111 224 1110 0000 31 0001 1111 192 1100 0000 63 0011 1111 128 1000 0000 127 0111 1111 0 0000 0000 255 1111 1111 术语表 通配符掩码 在用二进制表示的通配符掩码中，0 表示要检查的位，1 表示不需要检查的位。 CIDR Classless Inter Domain Routing 提供了比传统的 IP 地址类更细致的地址划分。CIDR 标记写法是 /XX ","permalink":"https://www.dukehsu.com/posts/ipv4subnets.html","summary":"\u003ch3 id=\"子网-subnets\"\u003e子网 Subnets\u003c/h3\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eCIDR\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e子网掩码\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e地址数\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e通配符\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/32\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.255\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.0\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/31\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.254\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.1\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/30\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.252\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e4\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.3\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/29\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.248\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e8\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.7\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/28\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.240\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e16\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.15\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/27\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.224\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e32\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.31\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/26\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.192\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e64\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.63\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/25\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.128\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e128\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.127\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/24\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e256\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/23\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.254.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e512\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.1.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/22\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.252.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1,024\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.3.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/21\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.248.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2,048\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.7.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/20\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.240.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e4,096\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.15.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/19\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.224.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e8,192\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.31.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/18\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.192.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e16,384\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.63.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/17\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.128.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e32,768\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.127.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/16\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e65,536\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/15\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.254.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e131,072\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.1.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/14\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.252.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e262,144\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.3.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/13\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.248.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e524,288\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.7.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/12\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.240.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1,048,576\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.15.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/11\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.224.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2,097,152\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.31.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/10\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.192.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e4,194,304\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.63.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/9\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.128.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e8,388,608\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.127.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/8\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e16,777,216\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/7\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e254.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e33,554,432\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/6\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e252.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e67,108,864\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e3.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e248.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e134,217,728\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e7.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/4\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e240.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e268,435,456\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e15.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e224.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e536,870,912\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e31.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/2\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e192.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1,073,741,824\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e63.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e128.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2,147,483,648\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e127.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e/0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e4,294,967,296\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"ip-地址类-ip-address-classes\"\u003eIP 地址类 IP Address Classes\u003c/h3\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eClass\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e地址段\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eA\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0.0.0.0 - 127.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eB\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e128.0.0.0 - 191.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eC\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e192.0.0.0 - 223.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eD\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e224.0.0.0 - 239.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eE\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e240.0.0.0 - 255.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"保留私有地址段\"\u003e保留（私有）地址段\u003c/h3\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eClass A\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e10.0.0.0 - 10.255.255.255\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eClass B\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e172.16.0.0 - 172.31.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eClass C\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e192.168.0.0 - 192.168.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003elocalhost\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e127.0.0.0 - 127.255.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003ezeroconf\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e169.254.0.0 - 169.254.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e内部路由 (\u003ca href=\"https://tools.ietf.org/html/rfc6598\"\u003eRFC 6598\u003c/a\u003e)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e100.64.0.0 - 100.127.255.255\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"十进制到二进制对应表\"\u003e十进制到二进制对应表\u003c/h3\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003e十进制子网掩码\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e对应二进制\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e十进制通配符\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e对应二进制\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e255\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1111 1111\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0000 0000\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e254\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1111 1110\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0000 0001\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e252\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1111 1100\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0000 0011\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e248\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1111 1000\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e7\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0000 0111\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e240\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1111 0000\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e15\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0000 1111\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e224\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1110 0000\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e31\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0001 1111\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e192\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1100 0000\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e63\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0011 1111\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e128\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1000 0000\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e127\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0111 1111\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e0000 0000\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e255\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1111 1111\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"术语表\"\u003e术语表\u003c/h3\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003e通配符掩码\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e在用二进制表示的通配符掩码中，0 表示要检查的位，1 表示不需要检查的位。\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eCIDR\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eClassless Inter Domain Routing 提供了比传统的 IP 地址类更细致的地址划分。CIDR 标记写法是 /XX\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e","tags":["ipv4子网查询"],"title":"IPv4 子网查询-转载自V2EX"},{"categories":["today_i_learned"],"content":"Cisco SG220-52 Command Configur VLAN Network Topology Calayst 3650 configuration Port 24 Trunk Allowed VLAN ID 20-42 VLAN 20-42 Port 20-23 Trunk Allowed VLAN ID 20-42 SG-220-52 configuration Port 48 Trunk Allowed VLAN ID 20-23 VLAN 20-23 Show VLAN \u0026amp; Copy configur Configur Trunk and VLAN en #进入特权模式 conf terminal #进入全局模式 vlan 20-23 #创建VLAN20-23 inter g48 #进入48口 sw mode trunk #设置为Trunk 口 sw trunk all vlan add 20-23 #允许vlan 20-23通过 no shut #开启接口 Configur Port to VLAN inter ran g16-25 #进入16-25口 sw mode acc #设置为access 口 sw acc vlan 20 #设置 vlan20 為access Check configur \u0026amp; Copy configur end #直接退出到特权模式 show run #查看所有配置 show vlan #查看VLAN配置信息 copy run st #保存配置","permalink":"https://www.dukehsu.com/posts/ciscosg220.html","summary":"\u003ch1 id=\"cisco-sg220-52-command-configur-vlan\"\u003eCisco SG220-52 Command Configur VLAN\u003c/h1\u003e\n\u003ch2 id=\"network-topology\"\u003eNetwork Topology\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"07-05_23-02-35.jpg\" loading=\"lazy\" src=\"/posts/ciscosg220/images/1553175382.jpg\" title=\"07-05_23-02-35.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"calayst-3650-configuration\"\u003eCalayst 3650 configuration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort 24 Trunk Allowed VLAN ID 20-42\u003c/li\u003e\n\u003cli\u003eVLAN 20-42\u003c/li\u003e\n\u003cli\u003ePort 20-23 Trunk Allowed VLAN ID 20-42\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"sg-220-52-configuration\"\u003eSG-220-52 configuration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort 48 Trunk Allowed VLAN ID 20-23\u003c/li\u003e\n\u003cli\u003eVLAN 20-23\u003c/li\u003e\n\u003cli\u003eShow VLAN \u0026amp; Copy configur\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"configur-trunk-and-vlan\"\u003eConfigur Trunk and VLAN\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    en  \u003cspan class=\"c1\"\u003e#进入特权模式\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    conf terminal \u003cspan class=\"c1\"\u003e#进入全局模式\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    vlan 20-23 \u003cspan class=\"c1\"\u003e#创建VLAN20-23\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    inter g48  \u003cspan class=\"c1\"\u003e#进入48口\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    sw mode trunk \u003cspan class=\"c1\"\u003e#设置为Trunk 口\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    sw trunk all vlan add 20-23  \u003cspan class=\"c1\"\u003e#允许vlan 20-23通过 \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    no shut  \u003cspan class=\"c1\"\u003e#开启接口\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"configur-port-to-vlan\"\u003eConfigur Port to VLAN\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    inter ran g16-25 \u003cspan class=\"c1\"\u003e#进入16-25口\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    sw mode acc   \u003cspan class=\"c1\"\u003e#设置为access 口\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    sw  acc vlan \u003cspan class=\"m\"\u003e20\u003c/span\u003e   \u003cspan class=\"c1\"\u003e#设置 vlan20 為access \u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"check-configur--copy-configur\"\u003eCheck configur \u0026amp; Copy configur\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\tend   \u003cspan class=\"c1\"\u003e#直接退出到特权模式\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    show run  \u003cspan class=\"c1\"\u003e#查看所有配置\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    show vlan \u003cspan class=\"c1\"\u003e#查看VLAN配置信息\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    copy run st   \u003cspan class=\"c1\"\u003e#保存配置\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["cisco","sg-220"],"title":"Cisco SG220-52 VLAN Commands"},{"categories":["today_i_learned"],"content":"Ra2.ini Finally worked for me, here\u0026rsquo;s what I did:\nhttp://bitpatch.com/ddwrapper.html - Just copy aqrit.cfg and ddraw.dll into the game folder. My settings.\nPut the following code into RA2.ini and RA2MD.ini after\n[Video]: AllowHiResModes=yes AllowVRAMSidebar=yes ScreenHeight=1080 ScreenWidth=1920 StretchMovies=no VideoBackBuffer=noSource：https://www.reddit.com/r/commandandconquer/comments/3ljf74/origin_ra2_on_windows_10_unplayable/\nCompatibility Mode @echo off rem 设置兼容性为WinXPSP3 reg add \u0026#34;HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\u0026#34; /v \u0026#34;Z:\\单机游戏\\红警共和国之辉\\ra2.exe\u0026#34; /d WINXPSP3 /f reg add \u0026#34;HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\u0026#34; /v \u0026#34;Z:\\单机游戏\\红警共和国之辉\\game.exe\u0026#34; /d WINXPSP3 /fSource https://itekblog.com/red-alert-2-windows-8-fix/\nhttp://www.bathome.net/thread-19813-1-1.html\nhttp://bitpatch.com/ddwrapper.html\n","permalink":"https://www.dukehsu.com/posts/279.html","summary":"\u003ch2 id=\"ra2ini\"\u003eRa2.ini\u003c/h2\u003e\n\u003cp\u003eFinally worked for me, here\u0026rsquo;s what I did:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://bitpatch.com/ddwrapper.html\"\u003ehttp://bitpatch.com/ddwrapper.html\u003c/a\u003e - Just copy aqrit.cfg and ddraw.dll into the game folder. My settings.\u003c/p\u003e\n\u003cp\u003ePut the following code into RA2.ini and RA2MD.ini after\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003eVideo\u003cspan class=\"o\"\u003e]\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eAllowHiResModes\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eyes\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eAllowVRAMSidebar\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eyes\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eScreenHeight\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e1080\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eScreenWidth\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e1920\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eStretchMovies\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eno\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eVideoBackBuffer\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eno\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSource：\u003ca href=\"https://www.reddit.com/r/commandandconquer/comments/3ljf74/origin_ra2_on_windows_10_unplayable/\"\u003ehttps://www.reddit.com/r/commandandconquer/comments/3ljf74/origin_ra2_on_windows_10_unplayable/\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"compatibility-mode\"\u003eCompatibility Mode\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e@echo off\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003erem 设置兼容性为WinXPSP3\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ereg add \u003cspan class=\"s2\"\u003e\u0026#34;HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\u0026#34;\u003c/span\u003e /v \u003cspan class=\"s2\"\u003e\u0026#34;Z:\\单机游戏\\红警共和国之辉\\ra2.exe\u0026#34;\u003c/span\u003e /d WINXPSP3 /f\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ereg add \u003cspan class=\"s2\"\u003e\u0026#34;HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\u0026#34;\u003c/span\u003e /v \u003cspan class=\"s2\"\u003e\u0026#34;Z:\\单机游戏\\红警共和国之辉\\game.exe\u0026#34;\u003c/span\u003e /d WINXPSP3 /f\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"source\"\u003eSource\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://itekblog.com/red-alert-2-windows-8-fix/\"\u003ehttps://itekblog.com/red-alert-2-windows-8-fix/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.bathome.net/thread-19813-1-1.html\"\u003ehttp://www.bathome.net/thread-19813-1-1.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://bitpatch.com/ddwrapper.html\"\u003ehttp://bitpatch.com/ddwrapper.html\u003c/a\u003e\u003c/p\u003e","tags":["ra2","windows10","winxp3","games"],"title":"RA2 on windows 10 unplayable"},{"categories":["today_i_learned"],"content":"\n准备工作： 1、旧的PS4(马来西亚账号，非大陆国行版)\n2、PS5 （无账号新机，大陆国行版）\n3、同一网络下的wifi或者一根网线把PS4和PS5连在一起。\n方法： 第一步：在PS5或者PS大陆官网注册PS账号。并且实名认证。\n第二步：在PS4登陆马来西亚账号。\n第三步：在PS4上登陆第一步注册的大陆账号（此时PS4里应该有两个或以上的账号）\n第四步：初始化PS5，重新进入载入界面，在登陆账号页面登陆第一步注册好的大陆账号。\n第五步：此时系统会提示此账号在PS4上有数据，是否传输，选择是，这里会提示你在PS4上所有注册的账号。\n第六步：选择马来西亚账号，然后传输。\n等待传输完成即可\n参考阅读 https://www.zhihu.com/question/458832795\n","permalink":"https://www.dukehsu.com/posts/ps5.html","summary":"\u003cp\u003e\u003cimg alt=\"119461355_3351832848172680_4403054339510228428_o_1024.jpg\" loading=\"lazy\" src=\"/posts/ps5/images/3588940290.jpg\" title=\"119461355_3351832848172680_4403054339510228428_o_1024.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"准备工作\"\u003e准备工作：\u003c/h2\u003e\n\u003cp\u003e1、旧的PS4(马来西亚账号，非大陆国行版)\u003c/p\u003e\n\u003cp\u003e2、PS5 （无账号新机，大陆国行版）\u003c/p\u003e\n\u003cp\u003e3、同一网络下的wifi或者一根网线把PS4和PS5连在一起。\u003c/p\u003e\n\u003ch2 id=\"方法\"\u003e方法：\u003c/h2\u003e\n\u003cp\u003e第一步：在PS5或者PS大陆官网注册PS账号。并且实名认证。\u003c/p\u003e\n\u003cp\u003e第二步：在PS4登陆马来西亚账号。\u003c/p\u003e\n\u003cp\u003e第三步：在PS4上登陆第一步注册的大陆账号（此时PS4里应该有两个或以上的账号）\u003c/p\u003e\n\u003cp\u003e第四步：初始化PS5，重新进入载入界面，在登陆账号页面登陆第一步注册好的大陆账号。\u003c/p\u003e\n\u003cp\u003e第五步：此时系统会提示此账号在PS4上有数据，是否传输，选择是，这里会提示你在PS4上所有注册的账号。\u003c/p\u003e\n\u003cp\u003e第六步：选择马来西亚账号，然后传输。\u003c/p\u003e\n\u003cp\u003e等待传输完成即可\u003c/p\u003e\n\u003ch4 id=\"参考阅读\"\u003e参考阅读\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://www.zhihu.com/question/458832795\"\u003ehttps://www.zhihu.com/question/458832795\u003c/a\u003e\u003c/p\u003e","tags":["ps5国行","ps5国行通过备份上港服","ps5港版"],"title":"PS5国行通过备份上港服"},{"categories":["today_i_learned"],"content":"原有目录 无法在同目录再新增库文件夹 找到Steam 程序根目录此文件 D:\\Steam\\steamapps\\libraryfolders.vdf在后面新增一个你需要添加的目录如下 \u0026#34;LibraryFolders\u0026#34; { \u0026#34;TimeNextStatsReport\u0026#34; \u0026#34;1622886485\u0026#34; \u0026#34;ContentStatsID\u0026#34; \u0026#34;1329782524506893618\u0026#34; \u0026#34;1\u0026#34; \u0026#34;F:\\\\SteamLibrary\u0026#34; \u0026#34;2\u0026#34; \u0026#34;D:\\\\SteamLibrary\u0026#34; #新增的目录 }完成 扩展阅读 https://keylol.com/t525765-1-1\n","permalink":"https://www.dukehsu.com/posts/steam.html","summary":"\u003ch2 id=\"原有目录\"\u003e原有目录\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"2.jpg\" loading=\"lazy\" src=\"/posts/steam/images/1305404086.jpg\" title=\"2.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"无法在同目录再新增库文件夹\"\u003e无法在同目录再新增库文件夹\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-06-10_21-58-05.jpg\" loading=\"lazy\" src=\"/posts/steam/images/704318993.jpg\" title=\"Snipaste_2021-06-10_21-58-05.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"找到steam-程序根目录此文件\"\u003e找到Steam 程序根目录此文件\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eD:\\Steam\\steamapps\\libraryfolders.vdf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"在后面新增一个你需要添加的目录如下\"\u003e在后面新增一个你需要添加的目录如下\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026#34;LibraryFolders\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u0026#34;TimeNextStatsReport\u0026#34;        \u0026#34;1622886485\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u0026#34;ContentStatsID\u0026#34;        \u0026#34;1329782524506893618\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u0026#34;1\u0026#34;        \u0026#34;F:\\\\SteamLibrary\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u0026#34;2\u0026#34;        \u0026#34;D:\\\\SteamLibrary\u0026#34; #新增的目录\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"完成\"\u003e完成\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-06-10_22-00-06.jpg\" loading=\"lazy\" src=\"/posts/steam/images/884299178.jpg\" title=\"Snipaste_2021-06-10_22-00-06.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"扩展阅读\"\u003e扩展阅读\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://keylol.com/t525765-1-1\"\u003ehttps://keylol.com/t525765-1-1\u003c/a\u003e\u003c/p\u003e","tags":["steam","steam库文件"],"title":"所选硬盘已存在一个Steam文件夹的解决办法"},{"categories":["today_i_learned"],"content":"今天在给客户处理问题的时候遇到一个新的问题，某个程序没有以管理员运行的话就不会正常工作，所以想设置所有程序默认管理员运行，（注意：所有程序默认以管理员运行之后会有风险，不建议普通用户这样操作）于是Google搜索得到答案之后，操作验证了一遍。证明它是有效的。现在将它作为笔记记录下来，以免后面忘记。\n图形界面 以管理员运行cmd 输入secpol.msc\n依次找到“用户帐户控制：以管理员批准模式运行所有管理员”更改为禁用\n重启之后生效\n转载自：https://hulinhong.com/2020/01/01/windows_run_everything_as_admin/\n专业版系统具体步骤如下: 使用小娜搜索 secpol 或 “本地安全策略” （或运行 secpol.msc ），右键选择以管理员身份打开（或许需要）；\n展开 本地策略，选择 安全选项，在右边找到“用户帐户控制：以管理员批准模式运行所有管理员”，双击它，将本地安全设置更改为“已禁用”；\n然后重新启动计算机即可\n完成操作后，通过 Win + R 执行命令 cmd 会发现输入框下面有一行小字”以管理员身份运行”\n家庭版系统步骤如下 (如果是家庭版用户没有组策略是无法像上述的专业版系统一样操作的):\n打开注册表编辑器(运行 regedit)，展开注册表到\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System 选择项 System 后，在右侧找到 EnableLUA ，将其值更改为0；\n然后重新启动计算机即可。\n完成操作后，通过 Win + R 执行命令 cmd 会发现输入下面有一行小字”以管理员身份运行”\n","permalink":"https://www.dukehsu.com/posts/windows10uac.html","summary":"\u003cp\u003e今天在给客户处理问题的时候遇到一个新的问题，某个程序没有以管理员运行的话就不会正常工作，所以想设置所有程序默认管理员运行，（注意：所有程序默认以管理员运行之后会有风险，不建议普通用户这样操作）于是Google搜索得到答案之后，操作验证了一遍。证明它是有效的。现在将它作为笔记记录下来，以免后面忘记。\u003c/p\u003e\n\u003ch4 id=\"图形界面\"\u003e图形界面\u003c/h4\u003e\n\u003cp\u003e以管理员运行cmd 输入\u003cstrong\u003esecpol.msc\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"１20210609005112.png\" loading=\"lazy\" src=\"/posts/windows10uac/images/3476204900.png\" title=\"１20210609005112.png\"\u003e\u003cbr\u003e\n依次找到“用户帐户控制：以管理员批准模式运行所有管理员”更改为禁用\u003cbr\u003e\n\u003cimg alt=\"２_20210609005157.png\" loading=\"lazy\" src=\"/posts/windows10uac/images/1397429012.png\" title=\"２_20210609005157.png\"\u003e\u003cbr\u003e\n重启之后生效\u003c/p\u003e\n\u003cp\u003e转载自：\u003ca href=\"https://hulinhong.com/2020/01/01/windows_run_everything_as_admin/\"\u003ehttps://hulinhong.com/2020/01/01/windows_run_everything_as_admin/\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"专业版系统具体步骤如下\"\u003e专业版系统具体步骤如下:\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e使用小娜搜索 secpol 或 “本地安全策略” （或运行 secpol.msc ），右键选择以管理员身份打开（或许需要）；\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e展开 本地策略，选择 安全选项，在右边找到“用户帐户控制：以管理员批准模式运行所有管理员”，双击它，将本地安全设置更改为“已禁用”；\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e然后重新启动计算机即可\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e完成操作后，通过 Win + R 执行命令 cmd 会发现输入框下面有一行小字”以管理员身份运行”\u003c/p\u003e\n\u003ch4 id=\"家庭版系统步骤如下\"\u003e家庭版系统步骤如下\u003c/h4\u003e\n\u003cp\u003e(如果是家庭版用户没有组策略是无法像上述的专业版系统一样操作的):\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e打开注册表编辑器(运行 regedit)，展开注册表到\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e选择项 System 后，在右侧找到 EnableLUA ，将其值更改为0；\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e然后重新启动计算机即可。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e完成操作后，通过 Win + R 执行命令 cmd 会发现输入下面有一行小字”以管理员身份运行”\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e","tags":["uac","windows10","管理员"],"title":"Windows10系统设置所有程序默认以管理员身份运行"},{"categories":["today_i_learned"],"content":"\nGlobe Broadband Super administrator password By default, Globe doesn\u0026rsquo;t even let you change your router\u0026rsquo;s wifi password and doesn\u0026rsquo;t give you full access to the router\u0026rsquo;s capabilities and you\u0026rsquo;re locked in to this crappy-unoptimised settings.\nYou will then call their hotline: 211 and customer service will only give you the credentials enough to change your router\u0026rsquo;s password and the wifi. As you look around you\u0026rsquo;ll find yourself frustrated not having the option to at least organize your ip-address ranger (e.g., 192.168.1.1 ~ 192.168.1.100), have no fear, the internet is here!.\nLog out the noob access (username: user | password: user) and use the access details below.\nhttp://192.168.254.254/ username: admin password: 3UJUh2VemEfUtesEchEC2d2emake sure you only modify the shit you know, doing otherwise could fuck up your connection, and will end up with the customer service which is completely useless so you\u0026rsquo;ll just ask for the technical guys to visit.\nGlobe 4G LTE (Internet Only) Noob access to administer your local area network and wifi access:\nhttp://192.168.254.254 username: user password: @l03e1t3Does anybody know access details to Admin?\nFrom Pongstr Ordillo\nhttps://gist.github.com/pongstr/8168585\n","permalink":"https://www.dukehsu.com/posts/globe.html","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/globe/images/Globe-LH-logo-1605780915178-546.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"globe-broadband-super-administrator-password\"\u003eGlobe Broadband Super administrator password\u003c/h2\u003e\n\u003cp\u003eBy default, \u003ca href=\"http://www.globe.com.ph\"\u003eGlobe\u003c/a\u003e doesn\u0026rsquo;t even let you change your router\u0026rsquo;s wifi password and doesn\u0026rsquo;t give you full access to the router\u0026rsquo;s capabilities and you\u0026rsquo;re locked in to this crappy-unoptimised settings.\u003c/p\u003e\n\u003cp\u003eYou will then call their hotline: \u003ccode\u003e211\u003c/code\u003e and customer service will only give you the credentials enough to change your router\u0026rsquo;s password and the wifi. As you look around you\u0026rsquo;ll find yourself frustrated not having the option to at least organize your ip-address ranger (e.g., \u003ccode\u003e192.168.1.1 ~ 192.168.1.100\u003c/code\u003e), \u003cstrong\u003ehave no fear, the internet is here!\u003c/strong\u003e.\u003c/p\u003e","tags":["globe","globe-change-wifi","globe-paassword"],"title":"Globe Broadband Super administrator password"},{"categories":["today_i_learned"],"content":"如何设置Centos7网络\n进入系统配置目录 cd /etc/sysconfif/network-scripts/ ls #查看目錄\n备份网卡文件 cp ifcfg-ens192 ifcfg-ens192.bak编辑网卡文件 vi ifcfg-ens192\n保存之后重启网络服务即可 :wq systemctl restart netwrok网卡配置说明 TYPE=Ethernet # 网卡类型：为以太网 PROXY_METHOD=none # 代理方式：关闭状态 BROWSER_ONLY=no # 只是浏览器：否 BOOTPROTO=dhcp # 网卡的引导协议：DHCP[中文名称: 动态主机配置协议] DEFROUTE=yes # 默认路由：是, 不明白的可以百度关键词 `默认路由` IPV4_FAILURE_FATAL=no # 是不开启IPV4致命错误检测：否 IPV6INIT=yes # IPV6是否自动初始化: 是[不会有任何影响, 现在还没用到IPV6] IPV6_AUTOCONF=yes # IPV6是否自动配置：是[不会有任何影响, 现在还没用到IPV6] IPV6_DEFROUTE=yes # IPV6是否可以为默认路由：是[不会有任何影响, 现在还没用到IPV6] IPV6_FAILURE_FATAL=no # 是不开启IPV6致命错误检测：否 IPV6_ADDR_GEN_MODE=stable-privacy # IPV6地址生成模型：stable-privacy [这只一种生成IPV6的策略] NAME=ens33 # 网卡物理设备名称 UUID=f47bde51-fa78-4f79-b68f-d5dd90cfc698 # 通用唯一识别码, 每一个网卡都会有, 不能重复, 否两台linux只有一台网卡可用 DEVICE=ens33 # 网卡设备名称, 必须和 `NAME` 值一样 ONBOOT=no # 是否开机启动， 要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes` 参考阅读 https://segmentfault.com/a/1190000011954814\n","permalink":"https://www.dukehsu.com/posts/centosnetwork.html","summary":"\u003cp\u003e如何设置Centos7网络\u003c/p\u003e\n\u003ch3 id=\"进入系统配置目录\"\u003e进入系统配置目录\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e /etc/sysconfif/network-scripts/  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003els \u003cspan class=\"c1\"\u003e#查看目錄\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"Snipaste_2021-06-04_10-55-38.jpg\" loading=\"lazy\" src=\"/posts/centosnetwork/images/1642040443.jpg\" title=\"Snipaste_2021-06-04_10-55-38.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"备份网卡文件\"\u003e备份网卡文件\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecp ifcfg-ens192 ifcfg-ens192.bak\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"编辑网卡文件\"\u003e编辑网卡文件\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evi ifcfg-ens192\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"Snipaste_2021-06-04_10-57-37.jpg\" loading=\"lazy\" src=\"/posts/centosnetwork/images/1807554444.jpg\" title=\"Snipaste_2021-06-04_10-57-37.jpg\"\u003e\u003c/p\u003e\n\u003ch4 id=\"保存之后重启网络服务即可\"\u003e保存之后重启网络服务即可\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e:wq\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl restart netwrok\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"网卡配置说明\"\u003e网卡配置说明\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eTYPE\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eEthernet                \u003cspan class=\"c1\"\u003e# 网卡类型：为以太网\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003ePROXY_METHOD\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003enone            \u003cspan class=\"c1\"\u003e# 代理方式：关闭状态\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eBROWSER_ONLY\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eno                \u003cspan class=\"c1\"\u003e# 只是浏览器：否\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eBOOTPROTO\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003edhcp                \u003cspan class=\"c1\"\u003e# 网卡的引导协议：DHCP[中文名称: 动态主机配置协议]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eDEFROUTE\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eyes                \u003cspan class=\"c1\"\u003e# 默认路由：是, 不明白的可以百度关键词 `默认路由` \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eIPV4_FAILURE_FATAL\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eno        \u003cspan class=\"c1\"\u003e# 是不开启IPV4致命错误检测：否\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eIPV6INIT\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eyes                \u003cspan class=\"c1\"\u003e# IPV6是否自动初始化: 是[不会有任何影响, 现在还没用到IPV6]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eIPV6_AUTOCONF\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eyes            \u003cspan class=\"c1\"\u003e# IPV6是否自动配置：是[不会有任何影响, 现在还没用到IPV6]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eIPV6_DEFROUTE\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eyes            \u003cspan class=\"c1\"\u003e# IPV6是否可以为默认路由：是[不会有任何影响, 现在还没用到IPV6]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eIPV6_FAILURE_FATAL\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eno        \u003cspan class=\"c1\"\u003e# 是不开启IPV6致命错误检测：否\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eIPV6_ADDR_GEN_MODE\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003estable-privacy            \u003cspan class=\"c1\"\u003e# IPV6地址生成模型：stable-privacy [这只一种生成IPV6的策略]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eNAME\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eens33                    \u003cspan class=\"c1\"\u003e# 网卡物理设备名称\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eUUID\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003ef47bde51-fa78-4f79-b68f-d5dd90cfc698    \u003cspan class=\"c1\"\u003e# 通用唯一识别码, 每一个网卡都会有, 不能重复, 否两台linux只有一台网卡可用\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eDEVICE\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eens33                    \u003cspan class=\"c1\"\u003e# 网卡设备名称, 必须和 `NAME` 值一样\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eONBOOT\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eno                        \u003cspan class=\"c1\"\u003e# 是否开机启动， 要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes` \u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"参考阅读\"\u003e参考阅读\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://segmentfault.com/a/1190000011954814\"\u003ehttps://segmentfault.com/a/1190000011954814\u003c/a\u003e\u003c/p\u003e","tags":["centos7","网络配置"],"title":"Centos7设置网络"},{"categories":["today_i_learned"],"content":"开启网卡直通之后卡在\ndma_mapper_iommu loaded successfully\n无法进入管理界面\n无法ping通ESXi管理口\n简述 使用U盘的Ubuntu desktop挂载ESXI系统磁盘 更改esx.conf文件中的passthru选项\n将Ubuntu desktop写入U盘 工具\nRufus\nhttps://rufus.ie/\nUbuntu 18.04 Desktop\nhttps://releases.ubuntu.com/18.04/\n使用Rufus将ubuntu写入U盘之后 设置服务器从U盘启动选择\nTry ubuntu\n操作步骤 打开Terminal\n在Terminal 输入\nlspci #查找pci设备 网卡的是Ethernet controller 查看硬盘并挂载分区\nsudo parted -l #查看硬盘 sudo mount /dev/sda5 /mnt #挂载解压文件并编辑esx.conf\nls /mnt/ #查看mnt 目录 cp /mnt/state.tgz ~/ #cp到~ cd ~ #进入到~ tar xvf state.tgz tar xvf local.tgz #解压 cd etc/vmware/ #进入到VMWARE目录 nano esx.conf #编辑esx.conf 文件将passthru 更改为vmkernel\n找到/device/\u0026lt;PCI_ID\u0026gt;/owner = \u0026ldquo;passthru\u0026rdquo; #PCI_ID就是上面使用lspci找到的0000:06:00.0和0000:00:06.0\n使用 vmkernel 代替 passthru\nctrl+x 退出 按Y 确认回车 即可\n将更改好的文件打包\ncd ~ tar czf local.tgz etc/ tar czf state.tgz local.tgz sudo cp state.tgz /mnt/ reboot 拔掉U盘即可恢复正常\n参考阅读|引用 http://www.cxyzjd.com/article/ID_Rin/105341206\nhttps://wp.gxnas.com/9454.html\nhttps://www.vediotalk.com/archives/2172\n","permalink":"https://www.dukehsu.com/posts/esxi6.html","summary":"\u003cp\u003e开启网卡直通之后卡在\u003cbr\u003e\ndma_mapper_iommu loaded successfully\u003cbr\u003e\n无法进入管理界面\u003cbr\u003e\n无法ping通ESXi管理口\u003c/p\u003e\n\u003ch2 id=\"简述\"\u003e简述\u003c/h2\u003e\n\u003cp\u003e使用U盘的Ubuntu desktop挂载ESXI系统磁盘 更改esx.conf文件中的passthru选项\u003c/p\u003e\n\u003ch2 id=\"将ubuntu-desktop写入u盘\"\u003e将Ubuntu desktop写入U盘\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e工具\u003c/strong\u003e\u003cbr\u003e\nRufus\u003cbr\u003e\n\u003ca href=\"https://rufus.ie/\"\u003ehttps://rufus.ie/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eUbuntu 18.04 Desktop\u003cbr\u003e\n\u003ca href=\"https://releases.ubuntu.com/18.04/\"\u003ehttps://releases.ubuntu.com/18.04/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e使用Rufus将ubuntu写入U盘之后 设置服务器从U盘启动选择\u003cbr\u003e\nTry ubuntu\u003c/p\u003e\n\u003ch2 id=\"操作步骤\"\u003e操作步骤\u003c/h2\u003e\n\u003cp\u003e打开Terminal\u003cbr\u003e\n在Terminal 输入\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003elspci #查找pci设备  网卡的是Ethernet controller \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e查看硬盘并挂载分区\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo parted -l \u003cspan class=\"c1\"\u003e#查看硬盘\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo mount /dev/sda5 /mnt \u003cspan class=\"c1\"\u003e#挂载\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e解压文件并编辑esx.conf\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003els /mnt/ #查看mnt 目录\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecp /mnt/state.tgz ~/ #cp到~\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecd ~ #进入到~\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etar xvf state.tgz\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etar xvf local.tgz #解压\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecd etc/vmware/ #进入到VMWARE目录\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enano esx.conf #编辑esx.conf 文件\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e将passthru 更改为vmkernel\u003cbr\u003e\n找到/device/\u0026lt;PCI_ID\u0026gt;/owner = \u0026ldquo;passthru\u0026rdquo; #PCI_ID就是上面使用lspci找到的0000:06:00.0和0000:00:06.0\u003cbr\u003e\n使用 vmkernel 代替 passthru\u003cbr\u003e\nctrl+x 退出 按Y 确认回车 即可\u003c/p\u003e","tags":["dma_mapper_iommu-loaded-successfully","esxi6","esxi直通","虚拟化"],"title":"ESXi6.7网卡直通导致无法启动"},{"categories":["today_i_learned"],"content":"在吃灰的NUC中使用一块240G SSD 安装了ESXi7 之后 可用空间只有95G，在系统存储中看到VMFSL 空间占了100多G,对于要开多个虚拟机的我，这点空间是不够的；\n经过Google搜索查到，如果更改VMFSL空间，需要在安装的时候操作。所以一下操作是在ESXi7安装之前的操作步骤。\n解决办法 1，在安装时ESXI 7.0启动的第一个画面，按shift + O组合键，在启动安装之前的5秒内；\n2，在显示的cdromBoot runweasel后输入(有空格)\nautoPartitionOSDataSize=8192完整显示：\ncdromBoot runweasel autoPartitionOSDataSize=8192注意大小写，8192表示指定OSDataSzie为8GB，对比6.7系统，给出8GB完全可以满足VMware tools、scratch以及coredump空间的需求。\n然后按照正常安装流程即可\n参考阅读 https://www.azurew.com/vmware/esxi-7-0/3792.html\nhttps://hqyman.cn/post/1659.html\n","permalink":"https://www.dukehsu.com/posts/esxi7.html","summary":"\u003cp\u003e在吃灰的NUC中使用一块240G SSD 安装了ESXi7 之后 可用空间只有95G，在系统存储中看到VMFSL 空间占了100多G,对于要开多个虚拟机的我，这点空间是不够的；\u003c/p\u003e\n\u003cp\u003e经过Google搜索查到，如果更改VMFSL空间，需要在安装的时候操作。所以一下操作是在ESXi7安装之前的操作步骤。\u003c/p\u003e\n\u003ch2 id=\"解决办法\"\u003e解决办法\u003c/h2\u003e\n\u003cp\u003e1，在安装时ESXI 7.0启动的第一个画面，按shift + O组合键，在启动安装之前的5秒内；\u003c/p\u003e\n\u003cp\u003e2，在显示的cdromBoot runweasel后输入(有空格)\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eautoPartitionOSDataSize=8192\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e完整显示：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecdromBoot runweasel autoPartitionOSDataSize=8192\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e注意大小写，8192表示指定OSDataSzie为8GB，对比6.7系统，给出8GB完全可以满足VMware tools、scratch以及coredump空间的需求。\u003c/p\u003e\n\u003cp\u003e然后按照正常安装流程即可\u003c/p\u003e\n\u003ch4 id=\"参考阅读\"\u003e参考阅读\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://www.azurew.com/vmware/esxi-7-0/3792.html\"\u003ehttps://www.azurew.com/vmware/esxi-7-0/3792.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://hqyman.cn/post/1659.html\"\u003ehttps://hqyman.cn/post/1659.html\u003c/a\u003e\u003c/p\u003e","tags":["esxi7","vmfsl"],"title":"ESXi7 更改VMFSL 空间"},{"categories":["today_i_learned"],"content":"如何卸載 Edge 瀏覽器 不喜欢Edge 浏览器的理由很多\n这里有供大家卸载Edge浏览器的解决办法和操作步骤\n以管理员身份运行Windows PowerShell\n进入Edge 浏览器目录 cd \u0026#34;C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\90.0.818.66\\Installer\u0026#34;每个人的版本不一样，如果提示路径不存在，请检查你电脑上Edge 浏览器的实际目录\n执行卸载命令 .\\setup.exe --uninstall --system-level --verbose-logging --force-uninstall建议重启一次电脑即可完成卸载\n","permalink":"https://www.dukehsu.com/posts/edgebrowser.html","summary":"\u003ch2 id=\"如何卸載-edge-瀏覽器\"\u003e如何卸載 Edge 瀏覽器\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"edge-water-large.jpg\" loading=\"lazy\" src=\"/posts/edgebrowser/images/2204134542.jpg\" title=\"edge-water-large.jpg\"\u003e\u003cbr\u003e\n不喜欢Edge 浏览器的理由很多\u003cbr\u003e\n这里有供大家卸载Edge浏览器的解决办法和操作步骤\u003c/p\u003e\n\u003cp\u003e以管理员身份运行Windows PowerShell\u003c/p\u003e\n\u003ch3 id=\"进入edge-浏览器目录\"\u003e进入Edge 浏览器目录\u003c/h3\u003e\n\u003cp\u003e\u003cimg alt=\"w20210527213914.png\" loading=\"lazy\" src=\"/posts/edgebrowser/images/2986859440.png\" title=\"w20210527213914.png\"\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\90.0.818.66\\Installer\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e每个人的版本不一样，如果提示路径不存在，请检查你电脑上Edge 浏览器的实际目录\u003c/p\u003e\n\u003ch4 id=\"执行卸载命令\"\u003e执行卸载命令\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e.\u003cspan class=\"se\"\u003e\\s\u003c/span\u003eetup.exe --uninstall --system-level --verbose-logging --force-uninstall\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e建议重启一次电脑即可完成卸载\u003c/p\u003e","tags":["edge","edge浏览器","windows10","浏览器"],"title":"Windwos10 卸载Edge浏览器"},{"categories":["today_i_learned"],"content":"梅林固件安装科学上网 提示含非法字符\n有2个方法可以解决\n手动上传安装包，手动解压安装\n更改脚本屏蔽内容\n设备型号 ASUS RT-AC5300\n梅林固件版本 RT-AC5300_384.18_0_koolshare.trx\n操作步骤 在这里下载相对应版本的离线安装包\nhttps://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384\n上传离线安装包到设备tmp目录\n这里使用Winscp 具体步骤就不详细描述了。大家Google搜索一下\n通过SSH 登录到设备,解压缩安装\ntar -zxvf /tmp/shadowsocks.tar.gz进入软件目录\ncd shadowsocks给install.sh权限\nchmod +x install.sh运行install.sh 安装脚本\n更改脚本屏蔽内容 sed -i \u0026#39;s/\\tdetect_package/\\t# detect_package/g\u0026#39; /koolshare/scripts/ks_tar_install.sh安装好之后进入路由页面，按Ctrl+F5刷新就可以在软件中心看到科学上网\n参考阅读 https://github.com/hq450/fancyss\nhttps://github.com/Litangren/ssr_for_router\nhttps://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384\n","permalink":"https://www.dukehsu.com/posts/shadowsocks.html","summary":"\u003cp\u003e梅林固件安装科学上网 提示含非法字符\u003cbr\u003e\n有2个方法可以解决\u003cbr\u003e\n手动上传安装包，手动解压安装\u003cbr\u003e\n更改脚本屏蔽内容\u003cbr\u003e\n\u003cimg alt=\"images.png\" loading=\"lazy\" src=\"/posts/shadowsocks/images/3384541273.png\" title=\"images.png\"\u003e\u003c/p\u003e\n\u003ch2 id=\"设备型号\"\u003e设备型号\u003c/h2\u003e\n\u003cp\u003eASUS RT-AC5300\u003c/p\u003e\n\u003ch2 id=\"梅林固件版本\"\u003e梅林固件版本\u003c/h2\u003e\n\u003cp\u003eRT-AC5300_384.18_0_koolshare.trx\u003c/p\u003e\n\u003ch2 id=\"操作步骤\"\u003e操作步骤\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e在这里下载相对应版本的离线安装包\u003cbr\u003e\n\u003ca href=\"https://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384\"\u003ehttps://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e上传离线安装包到设备tmp目录\u003cbr\u003e\n这里使用Winscp 具体步骤就不详细描述了。大家Google搜索一下\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e通过SSH 登录到设备,解压缩安装\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etar -zxvf /tmp/shadowsocks.tar.gz\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e进入软件目录\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecd shadowsocks\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e给install.sh权限\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echmod +x install.sh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e运行install.sh 安装脚本\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"更改脚本屏蔽内容\"\u003e更改脚本屏蔽内容\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esed -i \u0026#39;s/\\tdetect_package/\\t# detect_package/g\u0026#39; /koolshare/scripts/ks_tar_install.sh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003e安装好之后进入路由页面，按Ctrl+F5刷新就可以在软件中心看到科学上网\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"参考阅读\"\u003e参考阅读\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/hq450/fancyss\"\u003ehttps://github.com/hq450/fancyss\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/Litangren/ssr_for_router\"\u003ehttps://github.com/Litangren/ssr_for_router\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384\"\u003ehttps://github.com/hq450/fancyss_history_package/tree/master/fancyss_arm384\u003c/a\u003e\u003c/p\u003e","tags":["asus","shadowsocks","梅林固件","科学上网","科学上网-提示含非法字符","router"],"title":"梅林固件安装Shadowsocks"},{"categories":["today_i_learned"],"content":"\n因一次断网之后发现运营商给了IPV6\n于是就顺便记一下\n用Cloudflare解析自用电脑的ipv6地址\nDDNS解析开源项目 DDNS-go\nhttps://github.com/jeessy2/ddns-go\n具体使用请查阅项目页面\n特性 支持Mac、Windows、Linux系统，支持ARM、x86架构\n支持的域名服务商 Alidns(阿里云) Dnspod(腾讯云) Cloudflare 华为云\n支持接口/网卡获取IP\n支持以服务的方式运行(v2.8.0后支持)\n默认间隔5分钟同步一次\n支持多个域名同时解析，公司必备\n支持多级域名\n网页中配置，简单又方便，可设置 登录用户名和密码 / 禁止从公网访问\n网页中方便快速查看最近50条日志，不需要跑docker中查看\n支持webhook\n使用展示 配置好token之后就可以直接通过已经有ipv6地址的朋友直接访问自己的域名了。\n当然，如果访问端还没有ipv6的话，是无法访问的。\n计划 计划学习一下Mikrotik用Cloudeflare解析 WAN的ipv6\n参考阅读 Comparison of IPv4 and IPv6\nhttps://www.ibm.com/docs/en/i/7.3?topic=6-comparison-ipv4-ipv6\nDDNSGO\nhttps://github.com/jeessy2/ddns-go\n","permalink":"https://www.dukehsu.com/posts/ipv6ddns.html","summary":"\u003cp\u003e\u003cimg alt=\"Snipaste_2021-05-24_20-49-59.jpg\" loading=\"lazy\" src=\"/posts/ipv6ddns/images/4145552999.jpg\" title=\"Snipaste_2021-05-24_20-49-59.jpg\"\u003e\u003cbr\u003e\n因一次断网之后发现运营商给了IPV6\u003cbr\u003e\n于是就顺便记一下\u003cbr\u003e\n用Cloudflare解析自用电脑的ipv6地址\u003c/p\u003e\n\u003ch4 id=\"ddns解析开源项目\"\u003eDDNS解析开源项目\u003c/h4\u003e\n\u003cp\u003eDDNS-go\u003cbr\u003e\n\u003ca href=\"https://github.com/jeessy2/ddns-go\"\u003ehttps://github.com/jeessy2/ddns-go\u003c/a\u003e\u003cbr\u003e\n具体使用请查阅项目页面\u003c/p\u003e\n\u003ch2 id=\"特性\"\u003e特性\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e支持Mac、Windows、Linux系统，支持ARM、x86架构\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e支持的域名服务商 \u003ccode\u003eAlidns(阿里云)\u003c/code\u003e \u003ccode\u003eDnspod(腾讯云)\u003c/code\u003e \u003ccode\u003eCloudflare\u003c/code\u003e \u003ccode\u003e华为云\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e支持接口/网卡获取IP\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e支持以服务的方式运行(v2.8.0后支持)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e默认间隔5分钟同步一次\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e支持多个域名同时解析，公司必备\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e支持多级域名\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e网页中配置，简单又方便，可设置 \u003ccode\u003e登录用户名和密码\u003c/code\u003e / \u003ccode\u003e禁止从公网访问\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e网页中方便快速查看最近50条日志，不需要跑docker中查看\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e支持webhook\u003c/p\u003e\n\u003ch2 id=\"使用展示\"\u003e使用展示\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-05-24_20-54-09.jpg\" loading=\"lazy\" src=\"/posts/ipv6ddns/images/137365283.jpg\" title=\"Snipaste_2021-05-24_20-54-09.jpg\"\u003e\u003cbr\u003e\n配置好token之后就可以直接通过已经有ipv6地址的朋友直接访问自己的域名了。\u003cbr\u003e\n当然，如果访问端还没有ipv6的话，是无法访问的。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"计划\"\u003e计划\u003c/h2\u003e\n\u003cp\u003e计划学习一下Mikrotik用Cloudeflare解析 WAN的ipv6\u003c/p\u003e\n\u003ch2 id=\"参考阅读\"\u003e参考阅读\u003c/h2\u003e\n\u003cp\u003eComparison of IPv4 and IPv6\u003cbr\u003e\n\u003ca href=\"https://www.ibm.com/docs/en/i/7.3?topic=6-comparison-ipv4-ipv6\"\u003ehttps://www.ibm.com/docs/en/i/7.3?topic=6-comparison-ipv4-ipv6\u003c/a\u003e\u003cbr\u003e\nDDNSGO\u003cbr\u003e\n\u003ca href=\"https://github.com/jeessy2/ddns-go\"\u003ehttps://github.com/jeessy2/ddns-go\u003c/a\u003e\u003c/p\u003e","tags":["cloudlare","ddns","ipv6"],"title":"ipv6DDNS解析到Cloudflare域名"},{"categories":["today_i_learned"],"content":"因panabit的硬件标准不够。机房不让放panabit设备。\n所以将panabit安装在阿里云公有服务器上。\n然后部署iWAN服务，通过iWAN服务将对端数据转发到阿里云公有服务器。为了日后忘记，现将笔记记录如下。\n服务器要求 Centos 7.6\n2核CPU,2G内存,带宽按需求配置\n安装步骤 使用官方给的上传和安装工具以及Panabit 版本(请联系官方)\n一键操作，重启云服务器之后即可通过访问公网ip进行访问web管理界面进行配置和管理\n接口配置 由于公有云服务器只有一个网卡所以在添加WAN口的时候记得要克隆mac地址，网口地址写私有地址即可，详细设置如下图\niWAN服务配置 配置地址池 (注意iWAN服务端分配的地址不能与对端的局域网IP地址冲突)\n配置认证账户\n创建一个iWAN服务,以及映射到WAN口（官方有说明只能映射到 PPPOE类型或静态IP类型的线路,也就是必须要有公网IP，不能映射到DHCP类型的线路）\n映射iWAN服务\n在服务端新建策略路由 使得客户端通过服务端访问互联网 到这里iWAN的服务端就配置完成了\niWAN客户端连接 在对端的Panabit新增一个WAN口，协议选择iWAN\n填写相对应的服务器信息即可连接。\n","permalink":"https://www.dukehsu.com/posts/panabitecs.html","summary":"\u003cp\u003e因panabit的硬件标准不够。机房不让放panabit设备。\u003cbr\u003e\n所以将panabit安装在阿里云公有服务器上。\u003cbr\u003e\n然后部署iWAN服务，通过iWAN服务将对端数据转发到阿里云公有服务器。为了日后忘记，现将笔记记录如下。\u003c/p\u003e\n\u003ch4 id=\"服务器要求\"\u003e服务器要求\u003c/h4\u003e\n\u003cp\u003eCentos 7.6\u003cbr\u003e\n2核CPU,2G内存,带宽按需求配置\u003c/p\u003e\n\u003ch4 id=\"安装步骤\"\u003e安装步骤\u003c/h4\u003e\n\u003cp\u003e使用官方给的上传和安装工具以及Panabit 版本(请联系官方)\u003cbr\u003e\n一键操作，重启云服务器之后即可通过访问公网ip进行访问web管理界面进行配置和管理\u003c/p\u003e\n\u003ch4 id=\"接口配置\"\u003e接口配置\u003c/h4\u003e\n\u003cp\u003e由于公有云服务器只有一个网卡所以在添加WAN口的时候记得要克隆mac地址，网口地址写私有地址即可，详细设置如下图\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2021-05-12_16-25-46.jpg\" loading=\"lazy\" src=\"/posts/panabitecs/images/2886209416.jpg\" title=\"Snipaste_2021-05-12_16-25-46.jpg\"\u003e\u003c/p\u003e\n\u003ch4 id=\"iwan服务配置\"\u003eiWAN服务配置\u003c/h4\u003e\n\u003col\u003e\n\u003cli\u003e配置地址池 (注意iWAN服务端分配的地址不能与对端的局域网IP地址冲突)\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2021-05-12_16-30-28.jpg\" loading=\"lazy\" src=\"/posts/panabitecs/images/2225105680.jpg\" title=\"Snipaste_2021-05-12_16-30-28.jpg\"\u003e\u003c/li\u003e\n\u003cli\u003e配置认证账户\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2021-05-12_16-33-02.jpg\" loading=\"lazy\" src=\"/posts/panabitecs/images/3987792963.jpg\" title=\"Snipaste_2021-05-12_16-33-02.jpg\"\u003e\u003c/li\u003e\n\u003cli\u003e创建一个iWAN服务,以及映射到WAN口（官方有说明只能映射到 PPPOE类型或静态IP类型的线路,也就是必须要有公网IP，不能映射到DHCP类型的线路）\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2021-05-12_16-34-04.jpg\" loading=\"lazy\" src=\"/posts/panabitecs/images/3759845272.jpg\" title=\"Snipaste_2021-05-12_16-34-04.jpg\"\u003e\u003c/li\u003e\n\u003cli\u003e映射iWAN服务\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2021-05-12_16-36-49.jpg\" loading=\"lazy\" src=\"/posts/panabitecs/images/1093447079.jpg\" title=\"Snipaste_2021-05-12_16-36-49.jpg\"\u003e\u003c/li\u003e\n\u003cli\u003e在服务端新建策略路由 使得客户端通过服务端访问互联网\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e到这里iWAN的服务端就配置完成了\u003c/p\u003e\n\u003ch4 id=\"iwan客户端连接\"\u003eiWAN客户端连接\u003c/h4\u003e\n\u003cp\u003e在对端的Panabit新增一个WAN口，协议选择iWAN\u003cbr\u003e\n填写相对应的服务器信息即可连接。\u003c/p\u003e","tags":["iwan","panabit","sd-wan"],"title":"Panabit阿里公有云安装笔记"},{"categories":["today_i_learned"],"content":"\nSoftEther 是一个由日本筑波大学开发的开源VPN 项目，\n你可以自由的使用它为你的家庭或者公司组建虚拟局域网。\n它拥有多平台服务端和客户端，方便简易的操作界面，得到了很多人的喜爱。接下来就跟着我的操作一起来学习一下吧。\nSoftEther 简介 https://www.softether.org/9-about\nSoftEher下载 https://www.softether.org/5-download\n服务端环境 Ubuntu 16.4.1 \u0026amp; Centos 7.6\n操作步骤 通过SSH 客户端连接到Linux服务器，更新下载gcc工具\nsudo apt-get update sudo apt-get install build-essential 将SoftEther服务端下载到Linux服务器(需要科学上网环境,根据你的系统版本下载相对应版本)\nwget 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 解压SoftEther服务端\ntar -zxvf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz 进入VPNserver 目录 进行make（make后会有3个问题询问。一直同意按1回车即可）\ncd vpnserver make 在vpnserver目录启动VPNServer\n./vpnserver start #启动服务 ./vpnserver stop #停止服务启动服务之后可以直接通过Softher管理工具进行连接管理和初始化配置了。 这里就不一一介绍了。此笔记只记录服务端配置。\nubuntu 设置开机启动（编辑rc.local 目录把vpnserver 启动添加进去即可）\nvi /etc/rc.local /home/ubuntu/vpnserver/vpnserver start #exit 0 之前写入 Centos 7.6设置开机启动\n请参阅此文章\nhttps://www.itiohub.com/log/centos6run.html\n这样一来服务端就配置完成。 接下来就可以根据自己需求来通过SoftEther 管理工具进行配置和管理了。\n参考文章： https://dmesg.app/softether-vpnserver.html\nhttps://www.softether.org/\n","permalink":"https://www.dukehsu.com/posts/softether.html","summary":"\u003cp\u003e\u003cimg alt=\"1.0_vpnserver.jpg\" loading=\"lazy\" src=\"/posts/softether/images/1111183263.jpg\" title=\"1.0_vpnserver.jpg\"\u003e\u003cbr\u003e\nSoftEther 是一个由日本筑波大学开发的开源VPN 项目，\u003cbr\u003e\n你可以自由的使用它为你的家庭或者公司组建虚拟局域网。\u003cbr\u003e\n它拥有多平台服务端和客户端，方便简易的操作界面，得到了很多人的喜爱。接下来就跟着我的操作一起来学习一下吧。\u003c/p\u003e\n\u003ch4 id=\"softether-简介\"\u003eSoftEther 简介\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://www.softether.org/9-about\"\u003ehttps://www.softether.org/9-about\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"softeher下载\"\u003eSoftEher下载\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://www.softether.org/5-download\"\u003ehttps://www.softether.org/5-download\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"服务端环境\"\u003e服务端环境\u003c/h4\u003e\n\u003cp\u003eUbuntu 16.4.1 \u0026amp; Centos 7.6\u003c/p\u003e\n\u003ch4 id=\"操作步骤\"\u003e操作步骤\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e通过SSH 客户端连接到Linux服务器，更新下载gcc工具\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get update\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get install build-essential\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e将SoftEther服务端下载到Linux服务器(需要科学上网环境,根据你的系统版本下载相对应版本)\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ewget 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\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e解压SoftEther服务端\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etar -zxvf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e进入VPNserver 目录 进行make（make后会有3个问题询问。一直同意按1回车即可）\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecd vpnserver \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e在vpnserver目录启动VPNServer\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e./vpnserver start #启动服务\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e./vpnserver stop  #停止服务\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e启动服务之后可以直接通过Softher管理工具进行连接管理和初始化配置了。 这里就不一一介绍了。此笔记只记录服务端配置。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eubuntu 设置开机启动（编辑rc.local 目录把vpnserver 启动添加进去即可）\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evi /etc/rc.local\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e/home/ubuntu/vpnserver/vpnserver start     #exit 0 之前写入\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCentos 7.6设置开机启动\u003cbr\u003e\n请参阅此文章\u003cbr\u003e\n\u003ca href=\"https://www.itiohub.com/log/centos6run.html\"\u003ehttps://www.itiohub.com/log/centos6run.html\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这样一来服务端就配置完成。 接下来就可以根据自己需求来通过SoftEther 管理工具进行配置和管理了。\u003c/p\u003e\n\u003ch4 id=\"参考文章\"\u003e参考文章：\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://dmesg.app/softether-vpnserver.html\"\u003ehttps://dmesg.app/softether-vpnserver.html\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://www.softether.org/\"\u003ehttps://www.softether.org/\u003c/a\u003e\u003c/p\u003e","tags":["centos","linux","softether","ubuntu","vpn-server","笔记"],"title":"SoftEther VPN Server Ubuntu 安装笔记"},{"categories":["today_i_learned"],"content":"\n问题： 某些易语言辅助工具\u0026amp;系统调试工具\n在Windows Defender 开启的状态下经常被误删\n下面步骤记录了如何Windows Defender添加排除项\u0026amp;白名单\n操作系统版本： Windows 10 专业工作站版\n20H2\n操作步骤图示如下 点击开始菜单定位到安全中心\n定位到“病毒威胁和防护设置”\n添加排除项\n这样操作完成之后，文件就不会被删除了。\n","permalink":"https://www.dukehsu.com/posts/windowsdefender.html","summary":"\u003cp\u003e\u003cimg alt=\"windows-defender.png\" loading=\"lazy\" src=\"/posts/windowsdefender/images/2938565325.png\" title=\"windows-defender.png\"\u003e\u003c/p\u003e\n\u003ch4 id=\"问题\"\u003e问题：\u003c/h4\u003e\n\u003cp\u003e某些易语言辅助工具\u0026amp;系统调试工具\u003cbr\u003e\n在Windows Defender 开启的状态下经常被误删\u003cbr\u003e\n下面步骤记录了如何Windows Defender添加排除项\u0026amp;白名单\u003c/p\u003e","tags":["windows-defender","windows白名单","微软杀毒","白名单"],"title":"Windows Defender添加排除项\u0026白名单"},{"categories":["today_i_learned"],"content":"\n注意：此笔记在以下环境进行操作设置\n宿主机操作系统 Windows 10\nVMware 版本 14.0\nVirtualBox 6.0\nVmware设置批处理 (Vmware安装目录已经在环境变量中)\nvmrun -T ws start \u0026#34;E:\\Centos7\\Centos7.vmx\u0026#34; noguiVirtualBox 设置批处理 (VirtualBox安装目录已经在环境变量中)\nvboxmanage startvm \u0026#34;虚拟机名称\u0026#34; [--type gui|sdl|headless|separate]参考文章：\nhttps://www.xstui.com/read/920\nhttps://blog.csdn.net/lixiaotao_1/article/details/105744011\n","permalink":"https://www.dukehsu.com/posts/vmware.html","summary":"\u003cp\u003e\u003cimg alt=\"3e41-article-210226-vmware-body-text.jpg\" loading=\"lazy\" src=\"/posts/vmware/images/234654439.jpg\" title=\"3e41-article-210226-vmware-body-text.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e注意：此笔记在以下环境进行操作设置\u003c/p\u003e\n\u003ch4 id=\"宿主机操作系统\"\u003e宿主机操作系统\u003c/h4\u003e\n\u003cp\u003eWindows 10\u003cbr\u003e\nVMware 版本 14.0\u003cbr\u003e\nVirtualBox 6.0\u003c/p\u003e","tags":["virtualbox","vmware","虚拟机"],"title":"VMware和VirtualBox 设置开机后台运行虚拟机"},{"categories":["today_i_learned"],"content":"\n需求 访问网关 A 的内网资源、监控服务以及 NAS 服务等。\n爱快 SD-WAN 开通 爱快 SD-WAN 开通链接\n网络拓扑图 爱快云 SD-WAN 配置信息 爱快云 SD-WAN 拓扑图 访问异地局域网功能测试 NAS 服务器和监控都访问正常。\nPing 质量测试 表现不错，很少丢包。在用网高峰期偶尔会掉包，因为手机端 A 离其他两个网关太远。Tracert 测试为直连，MTR 测试质量正常。\n最后再说两句 内网穿透最先使用的是Frp, 然后N2N, 还用了Zerotier，这些都是开源或者免费的服务需要一定的动手能力。 爱快SD-WAN操作简单，能让更多人享受到异地组网的乐趣！ Good Job!! Ikuai.!\n","permalink":"https://www.dukehsu.com/posts/ikuaisdwan.html","summary":"\u003cp\u003e\u003ca href=\"https://www.ikuai8.com/netWork.php\"\u003e\u003cimg alt=\"爱快SD-WAN\" loading=\"lazy\" src=\"https://www.ikuai8.com/templates/ikuaitemplate/images/index/sd-wan_pc.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"需求\"\u003e需求\u003c/h2\u003e\n\u003cp\u003e访问网关 A 的内网资源、监控服务以及 NAS 服务等。\u003c/p\u003e\n\u003ch2 id=\"爱快-sd-wan-开通\"\u003e爱快 SD-WAN 开通\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://bbs.ikuai8.com/thread-123581-1-1.html\"\u003e爱快 SD-WAN 开通链接\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"网络拓扑图\"\u003e网络拓扑图\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"SDwan huitu.png\" loading=\"lazy\" src=\"https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/2988348191.png\"\u003e\u003c/p\u003e\n\u003ch2 id=\"爱快云-sd-wan-配置信息\"\u003e爱快云 SD-WAN 配置信息\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-05-02.jpg\" loading=\"lazy\" src=\"https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/601409932.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"爱快云-sd-wan-拓扑图\"\u003e爱快云 SD-WAN 拓扑图\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"te_2021-05.jpg\" loading=\"lazy\" src=\"https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/2110826125.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"访问异地局域网功能测试\"\u003e访问异地局域网功能测试\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-05-02_1.jpg\" loading=\"lazy\" src=\"https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/3718491530.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003eNAS 服务器和监控都访问正常。\u003c/p\u003e\n\u003ch2 id=\"ping-质量测试\"\u003ePing 质量测试\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-05-02_2.jpg\" loading=\"lazy\" src=\"https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2021/05/1621741833.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e表现不错，很少丢包。在用网高峰期偶尔会掉包，因为手机端 A 离其他两个网关太远。Tracert 测试为直连，MTR 测试质量正常。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e最后再说两句 内网穿透最先使用的是Frp, 然后N2N, 还用了Zerotier，这些都是开源或者免费的服务需要一定的动手能力。 爱快SD-WAN操作简单，能让更多人享受到异地组网的乐趣！ Good Job!! Ikuai.!\u003c/p\u003e","tags":["sd-wan","异地组网","ikuai","爱快sd-wan","爱快路由"],"title":"使用爱快SD-WAN访问异地局域网资源"},{"categories":["today_i_learned"],"content":"AdGuardHome 简介 基于 Golang 编写的 AdGuard Home，官方支持 运行在 Linux 32 位 / 64 位 / ARM（v6 / v7）/ MIPS、FreeBSD、Windows、macOS、Docker 内，以及由第三方开发者维护的 OpenWrt 软件包 、Home Assistant 拓展 和 Arch Linux。\n下载、安装 AdGuard Home 系统环境： ubuntu 18.04\n下载AdGuard Home wget https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_amd64.tar.gz -O AdGuardHome.tar.gz注意： 根据你的系统下载相对应的版本\n解压和安装AdGuard Home sudo tar zxvf AdGuardHome.tar.gz sudo chmod +x AdGuardHome cd AdGuardHome sudo ./AdGuardHome --service install当提示AdGuard Home is successfully installed and will automatically start on boot. 即表示 AdGuard Home 在当前系统上安装成功。在终端上会显示管理后台的地址与端口，默认为 http://IP:3000\nAdGuardHome 常用命令 AdGuardHome -s uninstall # 卸载服务 AdGuardHome -s start # 启动服务 AdGuardHome -s stop # 停止服务 AdGuardHome -s restart # 重启服务 AdGuardHome -s status # 显示服务状态已知DNS提供商 https://kb.adguard.com/zh/general/dns-providers\n常用规则 规则名称 描述 链接 AdGuard DNS Filter AdGuard 官方维护的广告规则，涵盖多种过滤规则 规则地址 EasyList Adblock Plus 官方维护的广告规则 规则地址 EasyList China 面向中文用户的 EasyList 去广告规则 规则地址 EasyPrivacy 反隐私跟踪、挖矿规则 规则地址 Halflife 规则 涵盖 EasyList China、EasyList Lite、CJX\u0026rsquo;s Annoyance、乘风视频过滤规则等 规则地址 Xinggsf 乘风过滤 国内网站广告过滤规则 规则地址 Xinggsf 乘风视频过滤 视频网站广告过滤规则 规则地址 MalwareDomainList 恶意软件过滤规则 规则地址 Adblock Warning Removal List 去除禁止广告拦截提示规则 规则地址 Anti-AD 命中率高、兼容性强 规则地址 Fanboy\u0026rsquo;s Annoyances List 去除页面弹窗广告规则 规则地址 参考文章 少数派 腾讯云开发者社区 ","permalink":"https://www.dukehsu.com/posts/adguardhome.html","summary":"\u003ch2 id=\"adguardhome-简介\"\u003eAdGuardHome 简介\u003c/h2\u003e\n\u003cp\u003e\u003cimg 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\"\u003e\u003c/p\u003e\n\u003cp\u003e基于 Golang 编写的 AdGuard Home，官方支持 运行在 Linux 32 位 / 64 位 / ARM（v6 / v7）/ MIPS、FreeBSD、Windows、macOS、Docker 内，以及由第三方开发者维护的 OpenWrt 软件包 、Home Assistant 拓展 和 Arch Linux。\u003c/p\u003e\n\u003ch2 id=\"下载安装-adguard-home\"\u003e下载、安装 AdGuard Home\u003c/h2\u003e\n\u003cp\u003e系统环境： ubuntu 18.04\u003c/p\u003e\n\u003ch3 id=\"下载adguard-home\"\u003e下载AdGuard Home\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ewget https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_amd64.tar.gz -O AdGuardHome.tar.gz\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e注意： 根据你的系统下载相对应的版本\u003c/p\u003e\n\u003ch3 id=\"解压和安装adguard-home\"\u003e解压和安装AdGuard Home\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo tar zxvf AdGuardHome.tar.gz\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo chmod +x AdGuardHome\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e AdGuardHome\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo ./AdGuardHome --service install\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e当提示\u003ccode\u003eAdGuard Home is successfully installed and will automatically start on boot.\u003c/code\u003e 即表示 AdGuard Home 在当前系统上安装成功。在终端上会显示管理后台的地址与端口，默认为 \u003ca href=\"http://IP:3000\"\u003ehttp://IP:3000\u003c/a\u003e\u003c/p\u003e","tags":["adguardhome","dns"],"title":"AdGuard Home-DNS解析服务器搭建笔记"},{"categories":["today_i_learned"],"content":"在写批处理的时候常常会用到C:\\ProgramData ，C:\\Users\\Home\\AppData\\Local 等目录，有时候会遇到用户名不一样，这个时候我们就需要使用变量了。\n变量对比表 参考阅读：\nhttps://www.askvg.com/list-of-environment-variables-in-windows-xp-vista-and-7/ https://windowsloop.com/list-of-all-environment-variables-in-windows-10/ https://ss64.com/nt/syntax-variables.html ","permalink":"https://www.dukehsu.com/posts/windowspath.html","summary":"\u003cp\u003e在写批处理的时候常常会用到C:\\ProgramData ，C:\\Users\\Home\\AppData\\Local 等目录，有时候会遇到用户名不一样，这个时候我们就需要使用变量了。\u003c/p\u003e\n\u003ch4 id=\"变量对比表\"\u003e变量对比表\u003c/h4\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-04-13_22-59-20.jpg\" loading=\"lazy\" src=\"/posts/windowspath/images/4116056183.jpg\" title=\"Snipaste_2021-04-13_22-59-20.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e参考阅读：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.askvg.com/list-of-environment-variables-in-windows-xp-vista-and-7/\"\u003ehttps://www.askvg.com/list-of-environment-variables-in-windows-xp-vista-and-7/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://windowsloop.com/list-of-all-environment-variables-in-windows-10/\"\u003ehttps://windowsloop.com/list-of-all-environment-variables-in-windows-10/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://ss64.com/nt/syntax-variables.html\"\u003ehttps://ss64.com/nt/syntax-variables.html\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","tags":["windowspath","windows系统变量"],"title":"Windows 系统环境变量"},{"categories":["today_i_learned"],"content":"Set 1 1 Open Command press Win+R\ntype\nrundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0\nSet 2 choose icon show on desktop\n","permalink":"https://www.dukehsu.com/posts/187.html","summary":"\u003ch3 id=\"set-1\"\u003eSet 1\u003c/h3\u003e\n\u003cp\u003e1 Open Command\npress Win+R\u003cbr\u003e\ntype\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003erundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0\u003c/code\u003e\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2021-04-11_13-43-03.jpg\" loading=\"lazy\" src=\"/posts/187/images/3905389808.jpg\" title=\"Snipaste_2021-04-11_13-43-03.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"set-2\"\u003eSet 2\u003c/h3\u003e\n\u003cp\u003echoose icon show on desktop\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2021-04-11_13-43-21.jpg\" loading=\"lazy\" src=\"/posts/187/images/3449217660.jpg\" title=\"Snipaste_2021-04-11_13-43-21.jpg\"\u003e\u003c/p\u003e","tags":["how-to-show-desktop-icon-on-windows-server-2012","windows-server"],"title":"How to show desktop icon on windows server 2012"},{"categories":["today_i_learned"],"content":"Windows如何更改DNS 在日常使用电脑的过程中，偶尔会遇到部分网站、游戏无法连接或者网站、游戏访问很慢，这个时候我们就可以尝试更换DNS测试和验证。\nWindows 如何更改DNS 按Win+R 呼出命令行\n输入ncpa.cpl 然后回车\n根据图示更改你喜欢的DNS即可 相关链接： What Is DNS? | How DNS Works\nhttps://www.cloudflare.com/learning/dns/what-is-dns/\nAliDNS\nhttps://www.alidns.com/\nDNS相关工具：\nDNSDataView v1.60\nhttps://www.nirsoft.net/utils/dns_records_viewer.html\nDNSQuerySniffer v1.81\nhttps://www.nirsoft.net/utils/dns_query_sniffer.html\n","permalink":"https://www.dukehsu.com/posts/dnschange.html","summary":"\u003ch2 id=\"windows如何更改dns\"\u003eWindows如何更改DNS\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"DNS-Server.png\" loading=\"lazy\" src=\"/posts/dnschange/images/1707147016.png\" title=\"DNS-Server.png\"\u003e\u003cbr\u003e\n在日常使用电脑的过程中，偶尔会遇到部分网站、游戏无法连接或者网站、游戏访问很慢，这个时候我们就可以尝试更换DNS测试和验证。\u003c/p\u003e\n\u003ch3 id=\"windows-如何更改dns\"\u003eWindows 如何更改DNS\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e按Win+R 呼出命令行\u003cbr\u003e\n\u003cimg alt=\"run.jpg\" loading=\"lazy\" src=\"/posts/dnschange/images/2573215443.jpg\" title=\"run.jpg\"\u003e\u003c/li\u003e\n\u003cli\u003e输入ncpa.cpl 然后回车\u003cbr\u003e\n\u003cimg alt=\"DNS.jpg\" loading=\"lazy\" src=\"/posts/dnschange/images/1586992504.jpg\" title=\"DNS.jpg\"\u003e\u003c/li\u003e\n\u003cli\u003e根据图示更改你喜欢的DNS即可\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch3 id=\"相关链接\"\u003e相关链接：\u003c/h3\u003e\n\u003cp\u003eWhat Is DNS? | How DNS Works\u003cbr\u003e\n\u003ca href=\"https://www.cloudflare.com/learning/dns/what-is-dns/\"\u003ehttps://www.cloudflare.com/learning/dns/what-is-dns/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAliDNS\u003cbr\u003e\n\u003ca href=\"https://www.alidns.com/\"\u003ehttps://www.alidns.com/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDNS相关工具：\u003c/strong\u003e\u003cbr\u003e\nDNSDataView v1.60\u003cbr\u003e\n\u003ca href=\"https://www.nirsoft.net/utils/dns_records_viewer.html\"\u003ehttps://www.nirsoft.net/utils/dns_records_viewer.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eDNSQuerySniffer v1.81\u003cbr\u003e\n\u003ca href=\"https://www.nirsoft.net/utils/dns_query_sniffer.html\"\u003ehttps://www.nirsoft.net/utils/dns_query_sniffer.html\u003c/a\u003e\u003c/p\u003e","tags":["dns","dns修改","windows改dns"],"title":"Windows如何更改DNS,电脑打不开网页"},{"categories":["today_i_learned"],"content":" 相关文章：https://www.itiohub.com/lifelog/bitcoins.html\n下载挖矿软件\n获取钱包地址\n选择矿池\n以下教学默认跳过前面以上三个步骤\n步骤 将配置好的挖矿软件设置到工作站开机启动项即可\n挖矿软件：\n松之宅挖矿者\nhttp://www.topool.top\n启动就开始挖矿\n息屏设置为开启2分钟息屏\n以机器名为矿工号\n锁屏软件：\n深蓝挂机锁 - V1.7\nhttps://slsup.com/post/20.html\n设置开机命令运行\n支持在服务端直接写密码\n","permalink":"https://www.dukehsu.com/posts/btcfornetbar.html","summary":"\u003cblockquote\u003e\n\u003cp\u003e相关文章：\u003ca href=\"https://www.itiohub.com/lifelog/bitcoins.html\"\u003ehttps://www.itiohub.com/lifelog/bitcoins.html\u003c/a\u003e\u003cbr\u003e\n下载挖矿软件\u003cbr\u003e\n获取钱包地址\u003cbr\u003e\n选择矿池\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e以下教学默认跳过前面以上三个步骤\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"步骤\"\u003e步骤\u003c/h2\u003e\n\u003cp\u003e将配置好的挖矿软件设置到工作站开机启动项即可\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e挖矿软件：\u003c/strong\u003e\u003cbr\u003e\n松之宅挖矿者\u003cbr\u003e\n\u003ca href=\"http://www.topool.top\"\u003ehttp://www.topool.top\u003c/a\u003e\u003cbr\u003e\n启动就开始挖矿\u003cbr\u003e\n息屏设置为开启2分钟息屏\u003cbr\u003e\n以机器名为矿工号\u003cbr\u003e\n\u003cstrong\u003e锁屏软件：\u003c/strong\u003e\u003cbr\u003e\n深蓝挂机锁 - V1.7\u003cbr\u003e\n\u003ca href=\"https://slsup.com/post/20.html\"\u003ehttps://slsup.com/post/20.html\u003c/a\u003e\u003cbr\u003e\n设置开机命令运行\u003cbr\u003e\n支持在服务端直接写密码\u003c/p\u003e","tags":["以太坊","比特币","网吧挖矿","网咖"],"title":"网吧如何挖矿？网吧挖矿指南"},{"categories":["today_i_learned"],"content":"\nMaye是一款体积小巧、简单易用的快速启动工具。不要看体积小巧，它的功能还是非常多样化的，比如：多文件拖拽添加启动、快捷键呼出、自动多列显示、lnk 文件解析等等。软件没有繁杂的功能，操作中也不会产生任何垃圾文件，绿色无污染，只专注于文件的快速启动，是用户提升 Windows 操作体验的好帮手。\n功能 多文件拖拽添加启动\n快捷键呼出\n快捷键运行项目\n列表滚轮滚动\n自动多列显示\n快捷方式编辑\nlnk 、url 文件解析\n参数变量、环境变量\n开机启动\n分类\n排序\n跨分组拖拽项目\n自定义布局\n自定义主题\n自定义缩放\n运行 参数变量\nMaye 支持 Win 环境变量同时并内置 2 个 参数变量 (变量尾不含 \\ ) ，涉及范围：目录、起始位置、启动参数。\n变量名 说明 支持版本\n%mp% 所在目录 1.0.2+\n%mr% 所在盘根目录 1.0.2+\n搜索命令 命令头 说明 支持版本\n[\u0026gt;] 执行终端命令，如：\u0026gt;ping arae.cc 1.0.5+\n[\u0026lt;] 调用运行，如：\u0026lt;c:/ 打开 c 盘 1.1.4+\n[s ] 可用搜索列表 1.1.4+\n[bd ] 通过 百度 搜索 1.1.4+\n[b ] 通过 必应 搜索 1.1.4+\n[g ] 通过 谷歌 搜索 1.1.4+\n[d ] 通过 DuckDuckGo 搜索 1.1.4+\nps：主窗口显示后，直接输入即可，无需手动打开搜索页。\n官方网站 \u0026amp;\u0026amp; 下载地址 官方网站： https://blog.arae.cc/post/25830.html\n第三方下载-1： https://github.com/25H/Maya/releases/latest\n第三方下载-2： https://wwa.lanzous.com/b0bqwqjvg\n第三方下载-3： https://share.weiyun.com/1tjpvaTo\n原文链接：\nhttps://www.v2ex.com/t/758164\n","permalink":"https://www.dukehsu.com/posts/maye.html","summary":"\u003cp\u003e\u003cimg alt=\"Snipaste_2021-03-07_22-32-11.jpg\" loading=\"lazy\" src=\"/posts/maye/images/1568634674.jpg\" title=\"Snipaste_2021-03-07_22-32-11.jpg\"\u003e\u003cbr\u003e\nMaye是一款体积小巧、简单易用的快速启动工具。不要看体积小巧，它的功能还是非常多样化的，比如：多文件拖拽添加启动、快捷键呼出、自动多列显示、lnk 文件解析等等。软件没有繁杂的功能，操作中也不会产生任何垃圾文件，绿色无污染，只专注于文件的快速启动，是用户提升 Windows 操作体验的好帮手。\u003c/p\u003e","tags":["maye","启动工具","软件分享","newsletter"],"title":"Maye 一个简洁小巧的快速启动工具-By 25H"},{"categories":["today_i_learned"],"content":"\n瞎忙活了半天，注册了n多账户。也没开始挖。\n到下午才明白大概流程。\n流程 下载挖矿软件 获取钱包地址 选择矿池 开始挖矿 下载挖矿软件 Github 有很多开源的内核和 基于各种内核编译好的带GUI的挖矿软件\nnicehash.com 自带有 挖矿软件，但是在GTX1060 5G显卡下面无法正常工作。\n于是我更换了使用NBMiner 内核的松之宅挖矿者。\n小白专用\n获取钱包地址 nicehash.com 注册账户之后就可以获得钱包地址。可以直接使用。\n也可以通过交易所（例如火币，币安等）获得钱包地址，亦可以通过imtoken等手机钱包获取地址。\n连接矿池 没用GUI的挖矿软件需要在配置文件中填写矿池和钱包的地址。\n松之宅挖矿者支持多矿池， 可以根据自己的需要选择不同矿池。注：有些矿池需要您注册账号。\n配置好之后就可以点击开始挖矿了 你可以在矿池中看到你的矿机状态，个人觉得nicehash.com 是做的很好的。\n","permalink":"https://www.dukehsu.com/posts/bitcoins.html","summary":"\u003cp\u003e\u003cimg alt=\"Snipaste_2021-02-27_00-54-16.jpg\" loading=\"lazy\" src=\"/posts/bitcoins/images/3945489174.jpg\" title=\"Snipaste_2021-02-27_00-54-16.jpg\"\u003e\u003cbr\u003e\n瞎忙活了半天，注册了n多账户。也没开始挖。\u003cbr\u003e\n到下午才明白大概流程。\u003c/p\u003e\n\u003ch2 id=\"流程\"\u003e流程\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e下载挖矿软件\u003c/li\u003e\n\u003cli\u003e获取钱包地址\u003c/li\u003e\n\u003cli\u003e选择矿池\u003c/li\u003e\n\u003cli\u003e开始挖矿\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"下载挖矿软件\"\u003e下载挖矿软件\u003c/h3\u003e\n\u003cp\u003eGithub 有很多开源的内核和 基于各种内核编译好的带GUI的挖矿软件\u003cbr\u003e\nnicehash.com 自带有 挖矿软件，但是在GTX1060 5G显卡下面无法正常工作。\u003cbr\u003e\n于是我更换了使用NBMiner 内核的松之宅挖矿者。\u003cbr\u003e\n小白专用\u003c/p\u003e\n\u003ch3 id=\"获取钱包地址\"\u003e获取钱包地址\u003c/h3\u003e\n\u003cp\u003enicehash.com 注册账户之后就可以获得钱包地址。可以直接使用。\u003cbr\u003e\n也可以通过交易所（例如火币，币安等）获得钱包地址，亦可以通过imtoken等手机钱包获取地址。\u003c/p\u003e\n\u003ch3 id=\"连接矿池\"\u003e连接矿池\u003c/h3\u003e\n\u003cp\u003e没用GUI的挖矿软件需要在配置文件中填写矿池和钱包的地址。\u003cbr\u003e\n松之宅挖矿者支持多矿池， 可以根据自己的需要选择不同矿池。注：有些矿池需要您注册账号。\u003c/p\u003e\n\u003ch3 id=\"配置好之后就可以点击开始挖矿了\"\u003e配置好之后就可以点击开始挖矿了\u003c/h3\u003e\n\u003cp\u003e你可以在矿池中看到你的矿机状态，个人觉得nicehash.com 是做的很好的。\u003c/p\u003e","tags":["nicehash-com","小白挖矿","挖矿","比特币","蜜蜂矿池"],"title":"一个不想挖矿的矿工笔记"},{"categories":["today_i_learned"],"content":"Discuz 版本 Discuz X3.4\nList 更改 头部的 -Power By Discuz 进入目录/template/default/common 找到\nheader_common.htm 文件 将title内部的 -Power By Discuz 改成你自己想要的即可 保存刷新 不允许非管理员访问admin.php 在网站根目录找到admin.php 并编辑 找到$admincp-\u0026gt;core = \u0026amp; $discuz; 换行之后输入以下代码 保存刷新之后, 非管理员用户访问直接跳到根目录 if(!$_G[\u0026#39;uid\u0026#39;] || !getstatus($_G[\u0026#39;member\u0026#39;][\u0026#39;allowadmincp\u0026#39;], 1)) { header(\u0026#39;Location: /\u0026#39;); }","permalink":"https://www.dukehsu.com/posts/discuz.html","summary":"\u003ch2 id=\"discuz-版本\"\u003eDiscuz 版本\u003c/h2\u003e\n\u003cp\u003eDiscuz X3.4\u003c/p\u003e\n\u003ch2 id=\"list\"\u003eList\u003c/h2\u003e\n\u003ch3 id=\"更改-头部的--power-by-discuz\"\u003e更改 头部的 -Power By Discuz\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e进入目录\u003ccode\u003e/template/default/common\u003c/code\u003e 找到\u003cbr\u003e\n\u003ccode\u003eheader_common.htm\u003c/code\u003e 文件\u003c/li\u003e\n\u003cli\u003e将\u003ccode\u003etitle\u003c/code\u003e内部的 \u003ccode\u003e-Power By Discuz\u003c/code\u003e 改成你自己想要的即可\u003c/li\u003e\n\u003cli\u003e保存刷新\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"不允许非管理员访问adminphp\"\u003e不允许非管理员访问admin.php\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e在网站根目录找到\u003cstrong\u003eadmin.php\u003c/strong\u003e 并编辑\u003c/li\u003e\n\u003cli\u003e找到\u003ccode\u003e$admincp-\u0026gt;core = \u0026amp; $discuz;\u003c/code\u003e 换行之后输入以下代码\u003c/li\u003e\n\u003cli\u003e保存刷新之后, 非管理员用户访问直接跳到根目录\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-php\" data-lang=\"php\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"nv\"\u003e$_G\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;uid\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e||\u003c/span\u003e \u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"nx\"\u003egetstatus\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nv\"\u003e$_G\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;member\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e][\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;allowadmincp\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nx\"\u003eheader\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;Location: /\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["discuz-x3-4","折腾笔记"],"title":"Discuz  折腾手记"},{"categories":["today_i_learned"],"content":"\n某些时候电源的模式会直接影响部分游戏体验。\n在此，如果你没有对省电的需求的话，为了提高游戏体验。\n请直接输入这项\n（卓越性能）High performance powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61其他选项以及用法，请参考官方文档\nhttps://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options\n","permalink":"https://www.dukehsu.com/posts/powercfg.html","summary":"\u003cp\u003e\u003cimg alt=\"power.png\" loading=\"lazy\" src=\"/posts/powercfg/images/1272074419.png\" title=\"power.png\"\u003e\u003cbr\u003e\n某些时候电源的模式会直接影响部分游戏体验。\u003cbr\u003e\n在此，如果你没有对省电的需求的话，为了提高游戏体验。\u003cbr\u003e\n请直接输入这项\u003c/p\u003e\n\u003ch4 id=\"卓越性能high-performance\"\u003e（卓越性能）High performance\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epowercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e其他选项以及用法，请参考官方文档\u003cbr\u003e\n\u003ca href=\"https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options\"\u003ehttps://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options\u003c/a\u003e\u003c/p\u003e","tags":["powercfg","windows"],"title":"Powercfg command-line options  For Windows"},{"categories":["today_i_learned"],"content":"Centos 6.9 手动添加开机启动配置\n启动目录\n/etc/init.d/\n新建启动文件\nvi /etc/init.d/frps内容如下\n#! /bin/bash # chkconfig: 2345 90 10 # description: Starts/Stops the Frps Server /usr/frp/frps -c /usr/frp/frps.ini \u0026amp;给执行权限\nchmod +x frps添加到启动项\nchkconfig --add frps #添加 chkconfig --del frps #删除设置启动\nchkconfig frps on #启动 chkconfig frps off #关闭","permalink":"https://www.dukehsu.com/posts/centos6run.html","summary":"\u003cp\u003eCentos 6.9 手动添加开机启动配置\u003c/p\u003e\n\u003cp\u003e启动目录\u003cbr\u003e\n\u003ccode\u003e/etc/init.d/\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e新建启动文件\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evi /etc/init.d/frps\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e内容如下\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#! /bin/bash\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# chkconfig: 2345 90 10\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# description: Starts/Stops the Frps Server\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e/usr/frp/frps -c /usr/frp/frps.ini \u003cspan class=\"p\"\u003e\u0026amp;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e给执行权限\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echmod +x frps\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e添加到启动项\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echkconfig --add frps \u003cspan class=\"c1\"\u003e#添加\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echkconfig --del frps \u003cspan class=\"c1\"\u003e#删除\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e设置启动\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echkconfig frps on \u003cspan class=\"c1\"\u003e#启动\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003echkconfig frps off \u003cspan class=\"c1\"\u003e#关闭\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["centos6-9","开机启动"],"title":"Centos 6.9 手动添加开机启动配置"},{"categories":["today_i_learned"],"content":"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.\nFrom:\nhttps://www.ws.afnog.org/afnog2010/unix-intro/references/netmask-table.html\nand https://www.pawprint.net/designresources/netmask-converter.php\n","permalink":"https://www.dukehsu.com/posts/netmask.html","summary":"\u003cp\u003eIf 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.\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"netmask.png\" loading=\"lazy\" src=\"/posts/netmask/images/316367986.png\" title=\"netmask.png\"\u003e\u003c/p\u003e\n\u003cp\u003eFrom:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.ws.afnog.org/afnog2010/unix-intro/references/netmask-table.html\"\u003ehttps://www.ws.afnog.org/afnog2010/unix-intro/references/netmask-table.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eand \u003ca href=\"https://www.pawprint.net/designresources/netmask-converter.php\"\u003ehttps://www.pawprint.net/designresources/netmask-converter.php\u003c/a\u003e\u003c/p\u003e","tags":["netmask","子网掩码"],"title":"Netmask Conversions"},{"categories":["today_i_learned"],"content":"场景需求 Frp客户端正常情况下是在cmd界面运行\n容易被客户端误关闭\n不美观\n现在通过Nssm 将它以服务的形式在后台运行\n下载 NSSM https://nssm.cc/download\n安装 NSSM 解压 nssm-2.24-101-g897c7ad.zip，里面分为 win32 和 win64 两个文件夹。\n根据系统的判断，此处以 Windows 10 x64 演示，将文件夹 win64 复制到 D 盘根目录下。\n并将文件夹 win64 改名为 nssm，此时的目录结构如下：\n通过nssm安装frpc服务 以管理员模式打开 cmd（命令提示符）窗口，输入下列命令即可：\nD:\\nssm\\nssm.exe install Frp C:\\frp\\frpc.exe D:\\nssm\\nssm.exe set Frp AppDirectory C:\\frp D:\\nssm\\nssm.exe set Frp AppParameters -c frp.ini D:\\nssm\\nssm.exe set Frp Description \u0026#34;这个是Frp内网穿透客户端\u0026#34;然后就可以在Windows服务管理中看到自己创建的服务了\n试试启动它吧\n参考：\nNSSM - the Non-Sucking Service Manager\nhttps://nssm.cc/commands\n在 Windows 系统里轻松创建自定义服务\nhttps://teddysun.com/595.html\n","permalink":"https://www.dukehsu.com/posts/nssm.html","summary":"\u003ch3 id=\"场景需求\"\u003e场景需求\u003c/h3\u003e\n\u003cp\u003eFrp客户端正常情况下是在cmd界面运行\u003cbr\u003e\n容易被客户端误关闭\u003cbr\u003e\n不美观\u003cbr\u003e\n现在通过Nssm 将它以服务的形式在后台运行\u003c/p\u003e\n\u003ch3 id=\"下载-nssm\"\u003e下载 NSSM\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://nssm.cc/download\"\u003ehttps://nssm.cc/download\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"安装-nssm\"\u003e安装 NSSM\u003c/h3\u003e\n\u003cp\u003e解压 nssm-2.24-101-g897c7ad.zip，里面分为 win32 和 win64 两个文件夹。\u003cbr\u003e\n根据系统的判断，此处以 Windows 10 x64 演示，将文件夹 win64 复制到 D 盘根目录下。\u003cbr\u003e\n并将文件夹 win64 改名为 nssm，此时的目录结构如下：\u003cbr\u003e\n\u003cimg loading=\"lazy\" src=\"/posts/nssm/images/nssm1.png\"\u003e\u003c/p\u003e","tags":["frp","nssm安装服务","windows","内网穿透","客户端"],"title":"NSSM - 在Windows平台手动安装Frp服务"},{"categories":["today_i_learned"],"content":"\nwebp2jpg convert the .webp to .jpg|.bmp|.png|.gif|.tiff\nDependence golang.org/x/image/bmp golang.org/x/image/tiff golang.org/x/image/webp gopkg.in/urfave/cli.v1 go get gopkg.in/urfave/cli.v1 git clone https://github.com/golang/image $GOPATH/src/golang.org/x/image cd $GOPATH/src/golang.org/x/image/webp \u0026amp;\u0026amp; go install cd $GOPATH/src/golang.org/x/image/bmp \u0026amp;\u0026amp; go install cd $GOPATH/src/golang.org/x/image/tiff \u0026amp;\u0026amp; go installDownload go get github.com/sndnvaps/webp2jpgBuild \u0026amp;\u0026amp; Run cd $GOPATH/src/github.com/sndnvaps/webp2jpg/cli go buildConvert the webp file to jpeg | png | gif | bmp | tiff put the test.webp file into webp2jpg folder ./webp2jpg -t jpg -s test.webp ./webp2jpg -t bmp -s test.webp ./webp2jpg --type jpg --source test.webp ./webp2jpg --type jpeg --source test.webp ./webp2jpg --type png --source test.webp ./webp2jpg --type gif --source test.webp ./webp2jpg --type tiff --source test.webp ./webp2jpg --type jpg --source test.png ./webp2jpg --type jpg --source test.gif ./webp2jpg --type jpg --source test.tiffGithub: https://github.com/sndnvaps/webp2jpg\n","permalink":"https://www.dukehsu.com/posts/webptools.html","summary":"\u003cp\u003e\u003cimg alt=\"Snipaste_2020-11-22_14-32-35.png\" loading=\"lazy\" src=\"/posts/webptools/images/1188163495.png\" title=\"Snipaste_2020-11-22_14-32-35.png\"\u003e\u003c/p\u003e\n\u003ch1 id=\"webp2jpg\"\u003ewebp2jpg\u003c/h1\u003e\n\u003cp\u003econvert the \u003cem\u003e.webp to\u003c/em\u003e .jpg|\u003cem\u003e.bmp|\u003c/em\u003e.png|\u003cem\u003e.gif|\u003c/em\u003e.tiff\u003c/p\u003e\n\u003ch1 id=\"dependence\"\u003eDependence\u003c/h1\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  golang.org/x/image/bmp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  golang.org/x/image/tiff\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  golang.org/x/image/webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  gopkg.in/urfave/cli.v1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  go get gopkg.in/urfave/cli.v1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  git clone https://github.com/golang/image \u003cspan class=\"nv\"\u003e$GOPATH\u003c/span\u003e/src/golang.org/x/image\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003ecd\u003c/span\u003e \u003cspan class=\"nv\"\u003e$GOPATH\u003c/span\u003e/src/golang.org/x/image/webp \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e go install\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003ecd\u003c/span\u003e \u003cspan class=\"nv\"\u003e$GOPATH\u003c/span\u003e/src/golang.org/x/image/bmp \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e go install\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003ecd\u003c/span\u003e \u003cspan class=\"nv\"\u003e$GOPATH\u003c/span\u003e/src/golang.org/x/image/tiff \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e go install\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch1 id=\"download\"\u003eDownload\u003c/h1\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  go get github.com/sndnvaps/webp2jpg\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch1 id=\"build--run\"\u003eBuild \u0026amp;\u0026amp; Run\u003c/h1\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003ecd\u003c/span\u003e \u003cspan class=\"nv\"\u003e$GOPATH\u003c/span\u003e/src/github.com/sndnvaps/webp2jpg/cli\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  go build\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch1 id=\"convert-the-webp-file-to-jpeg--png--gif--bmp--tiff\"\u003eConvert the webp file to jpeg | png | gif | bmp | tiff\u003c/h1\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  put the test.webp file into webp2jpg folder\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg -t jpg -s test.webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg -t bmp -s test.webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type jpg --source test.webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type jpeg --source test.webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type png --source test.webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type gif --source test.webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type tiff --source test.webp\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type jpg --source test.png\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type jpg --source test.gif\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ./webp2jpg --type jpg --source test.tiff\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eGithub: \u003ca href=\"https://github.com/sndnvaps/webp2jpg\"\u003ehttps://github.com/sndnvaps/webp2jpg\u003c/a\u003e\u003c/p\u003e","tags":["webp","webp格式","webp转换","newsletter"],"title":"webp convert to jpg"},{"categories":["today_i_learned"],"content":"文章内容中的运行系统环境是CentOS7.2\n以Frps.service为例\n创建frps.service: vi frps.service\n路径： /etc/systemd/system/frps.service\nfrps.service 内容： [Unit] Description=frps After=network.target [Service] TimeoutStartSec=30 ExecStart=/usr/www/frp/frps -c /usr/www/frp/frps.ini ExecStop=/bin/kill $MAINPID [Install] WantedBy=multi-user.target用法： # 启动服务 systemctl start frps # 查看状态 systemctl status frps # 开机启动 systemctl enable frpsfrp_0.34.3_linux_amd64.tar.gz\n参考文章 https://canwdev.github.io/manual/setup-frp.html#%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF-%C2%B7-frps\n","permalink":"https://www.dukehsu.com/posts/centoslog.html","summary":"\u003cp\u003e文章内容中的运行系统环境是CentOS7.2\u003cbr\u003e\n以Frps.service为例\u003c/p\u003e\n\u003ch3 id=\"创建frpsservice\"\u003e创建frps.service:\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003evi frps.service\u003c/code\u003e\u003c/p\u003e\n\u003ch3 id=\"路径\"\u003e路径：\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003e/etc/systemd/system/frps.service\u003c/code\u003e\u003c/p\u003e\n\u003ch3 id=\"frpsservice-内容\"\u003efrps.service 内容：\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003eUnit\u003cspan class=\"o\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eDescription\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003efrps\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eAfter\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003enetwork.target\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003eService\u003cspan class=\"o\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eTimeoutStartSec\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e30\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eExecStart\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr/www/frp/frps -c /usr/www/frp/frps.ini\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eExecStop\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e/bin/kill \u003cspan class=\"nv\"\u003e$MAINPID\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003eInstall\u003cspan class=\"o\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eWantedBy\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003emulti-user.target\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"用法\"\u003e用法：\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 启动服务\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl start frps\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 查看状态\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl status frps\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 开机启动\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl \u003cspan class=\"nb\"\u003eenable\u003c/span\u003e frps\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ca href=\"https://itiohub.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2020/12/1465606862.gz\"\u003efrp_0.34.3_linux_amd64.tar.gz\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"参考文章\"\u003e参考文章\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://canwdev.github.io/manual/setup-frp.html#%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF-%C2%B7-frps\"\u003ehttps://canwdev.github.io/manual/setup-frp.html#%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF-%C2%B7-frps\u003c/a\u003e\u003c/p\u003e","tags":["centos","centos7-2"],"title":"在CentOS7.2上手动添加服务"},{"categories":["today_i_learned"],"content":"\nWindows10_x64_1909Pro版系统包 更新内容： 1、系统默认不激活！默认搜狗拼音+搜狗五笔；\n2、修改DriverStore为最高权限，能解决Apxe在显卡PNP下报错！\n3、集成Edge浏览器，可以有效的防止劫持，看斗鱼，虎牙直播不再卡！\n4、精简系统，移除网吧用不上的功能和驱动，有效的减少CF闪退问题！\n网盘下载链接： 链接: https://pan.baidu.com/s/1ou25P982A62-BQfu35UCfg\n提取码: yv9t\n精简如下： 移除 Cortana（小娜） 移除 Print3D 移除 Edge(浏览器) 移除 Recovery Reset 支持 移除 Windows Defender（杀毒） 移除 ScreenSketch 移除 Windows Mail(Windows 邮件) 移除 SecureAssessmentBrowser 移除 Windows Mixed Reality(混合现实) 移除 Shared PC 模式 移除 Windows Reader (PDF) 移除 Skype ORTC 移除 Windows Recovery(Windows 恢复) 移除 SkypeApp 移除 Windows 光盘映像刻录工具 移除 SolitaireCollection 移除 Windows 系统评估工具 (WinSAT) 移除 SoundRecorder 移除 Windows客户体验改善计划 CEIP 移除 StickyNotes 移除 .NET assembly 缓存 移除 StorePurchaseApp 移除 3DViewer 移除 Targeted Content service(定向内容服务) 移除 AAD.BrokerPlugin 移除 Telnet 客户端 移除 AddSuggestedFoldersToLibraryDialog 移除 TFTP 客户端 移除 Alarms 移除 Time Travel Debugger (时间旅行调试TTD) 移除 AllJoyn Router Service 移除 TV Tuner 编码与支持 移除 AppResolverUX 移除 VP9VideoExtensions 移除 AssignedAccessLockApp 移除 Webcam Experience(网络摄像头体验) 移除 BingWeather 移除 WebMediaExtensions 移除 CallingShellApp 移除 WebpImageExtension 移除 Camera 移除 Win32WebViewHost 移除 CapturePicker 移除 Xbox 应用 移除 CredDialogHost 移除 Xbox.TCUI 移除 DesktopAppInstaller 移除 XboxGameOverlay 移除 DirectX WARP JIT 服务 移除 XboxGamingOverlay 移除 ECApp 移除 XboxIdentityProvider 移除 EdgeDevToolsClient 移除 XboxSpeechToTextOverlay 移除 Embedded Mode(嵌入模式) 移除 XGpuEjectDialog 移除 FeedbackHub 移除 YourPhone 移除 File Revocation Manager – 32-位 移除 ZuneMusic 移除 FileExplorer 移除 ZuneVideo 移除 FilePicker 移除 不常用键盘 移除 GetHelp 移除 不常用语言 移除 HEIFImageExtension 移除 步骤记录器 移除 Holo MDL2 Assets 移除 付款和 NFC/SE 管理器 移除 Intel Indeo 编码器 移除 缓存与临时文件 移除 LockApp 移除 空间音效 (3D Audio) 移除 Manifest 备份 (WinSxS\\Backup) 移除 零售演示内容 移除 Maps 移除 钱包服务 移除 Messaging 移除 轻松传送 移除 MixedReality.Portal 移除 设备锁定 (Embedded Experience-嵌入式体验) 移除 MMGA MAPI 移除 视频压缩管理器(VCM)编码器 移除 MultiPoint Connector 移除 适用于 Linux 的 Windows 子系统 移除 NarratorQuickStart 移除 提示(Win10 1607之前叫“入门”) 移除 Office.OneNote 移除 图片密码 移除 OfficeHub 移除 显示切换 移除 OneDrive(微软云盘) 移除 写字板 移除 OOBENetworkCaptivePortal 移除 移动计划 移除 OOBENetworkConnectionFlow 移除 应用程序虚拟化(App-V) 移除 Paint 3D 移除 用户体验虚拟化(UE-V) 移除 Peer Networking(对等网络) 移除 游戏资源管理器 移除 People 移除 语音 TTS 移除 PeopleExperienceHost 移除 语音识别 移除 Photos 移除 远程协助 移除 PinningConfirmationDialog 移除 远程注册表 移除 PPIProjection 移除 桌面图片下载器 移除 Windows 生物识别服务 移除 隔离用户模式(IUM) 移除 容器(Container) 移除 BioEnrollment 移除 Device Guard(设备保护) 移除 Microsoft GS 波表合成器 (MIDI) 移除 工作文件夹客户端(Work Folders Client) 移除 NFS 管理工具 移除 企业数据保护 (EDP/WIP) 移除 脱机文件 移除 面部识别 移除 Phone Service(电话服务) 移除 文件服务器资源管理器(File Server Resource Manager) 移除 Point of Service(服务点，POS机相关) 移除 首次登录动画 移除 远程访问自动拨号管理器(RasAuto服务) 移除 受保护的主机 移除 BitLocker 磁盘加密 移除 Hyper-V 移除 设置同步 移除 Hyper-V 来宾 移除 Storage Quality of Service (Storage QoS) 移除 (IIS)(Internet 信息服务) 移除 同步中心 移除 CBSPreview 移除 Windows To GoWindows10_x64_2019LTSC版系统包 更新内容： 1、系统默认不激活！默认QQ拼音+QQ五笔；\n2、修改DriverStore为最高权限，能解决Apxe在显卡PNP下报错！\n3、集成Edge浏览器，可以有效的防止劫持，看斗鱼，虎牙直播不再卡！\n4、精简系统，移除网吧用不上的功能和驱动，有效的减少CF闪退问题！\n网盘下载链接： 链接: https://pan.baidu.com/s/1ou25P982A62-BQfu35UCfg\n提取码: yv9t\n精简内容： 移除 Cortana （小娜） 移除 .NET assembly 缓存 移除 Windows Defender（杀毒） 移除 AddSuggestedFoldersToLibraryDialog 移除 Windows Mixed Reality(混合现实) 移除 AllJoyn Router Service 移除 Windows Reader (PDF) 移除 AppResolverUX 移除 Windows Recovery(Windows 恢复) 移除 AssignedAccessLockApp 移除 Windows 光盘映像刻录工具 移除 CBSPreview 移除 Windows 系统评估工具 (WinSAT) 移除 CredDialogHost 移除 Windows客户体验改善计划 CEIP (SQM) 移除 DVD 播放 移除 Xbox 应用 移除 ECApp 移除 流媒体 移除 EdgeDevToolsClient 移除 Hyper组件 移除 FileExplorer 移除 地图控制 移除 FilePicker 移除 安全中心 移除 Intel Indeo 编码器 移除 钱包服务 移除 LockApp 移除 轻松传送 移除 NarratorQuickStart 移除 图片密码 移除 NFS 管理工具 移除 语音 TTS 移除 OOBENetworkCaptivePortal 移除 语音识别 移除 OOBENetworkConnectionFlow 移除 发送到ZIP压缩文件 移除 PeopleExperienceHost 移除 发送到传真收件人 移除 PinningConfirmationDialog 移除 远程注册表 移除 Recovery Reset 支持 移除 不常用键盘 移除 Shared PC 模式 移除 不常用语言 移除 Skype ORTC 移除 步骤记录器 移除 Targeted Content service(定向内容服务) 移除 应用程序虚拟化(App-V) 移除 Telnet 客户端 移除 视频压缩管理器(VCM)编码器 移除 TFTP 客户端 移除 零售演示内容 移除 Time Travel Debugger (时间旅行调试TTD) 移除 游戏资源管理器 移除 TV Tuner 编码与支持 移除 缓存与临时文件 移除 Webcam Experience(网络摄像头体验) 移除 隔离用户模式(IUM) 移除 Win32WebViewHost 移除 空间音效 (3D Audio) 移除 XGpuEjectDialog 移除 文件服务器资源管理器 移除 工作文件夹客户端(Work Folders Client) 移除 付款和 NFC/SE 管理器 移除 适用于 Linux 的 Windows 子系统 移除 用户体验虚拟化(UE-V) 移除 设备锁定 (Embedded Experience-嵌入式体验) 移除 指纹 面部识别 移除 权限管理支持 移除 首次登录动画 移除 设置同步 移除 (IIS)(Internet 信息服务) 移除 同步中心 移除 BioEnrollment 移除 脱机文件 移除 Microsoft GS 波表合成器 (MIDI) 移除 Point of Service(服务点，POS机相关) 移除 Phone Service(电话服务) 移除 远程访问自动拨号管理器(RasAuto服务)","permalink":"https://www.dukehsu.com/posts/pxecnnetimg.html","summary":"\u003cp\u003e\u003cimg alt=\"20201008.jpg\" loading=\"lazy\" src=\"/posts/pxecnnetimg/images/846265922.jpg\" title=\"20201008.jpg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"windows10_x64_1909pro版系统包\"\u003eWindows10_x64_1909Pro版系统包\u003c/h2\u003e\n\u003ch4 id=\"更新内容\"\u003e更新内容：\u003c/h4\u003e\n\u003cp\u003e1、系统默认不激活！默认搜狗拼音+搜狗五笔；\u003cbr\u003e\n2、修改DriverStore为最高权限，能解决Apxe在显卡PNP下报错！\u003cbr\u003e\n3、集成Edge浏览器，可以有效的防止劫持，看斗鱼，虎牙直播不再卡！\u003cbr\u003e\n4、精简系统，移除网吧用不上的功能和驱动，有效的减少CF闪退问题！\u003c/p\u003e\n\u003ch4 id=\"网盘下载链接\"\u003e网盘下载链接：\u003c/h4\u003e\n\u003cp\u003e\u003cstrong\u003e链接:\u003c/strong\u003e \u003ca href=\"https://pan.baidu.com/s/1ou25P982A62-BQfu35UCfg\"\u003ehttps://pan.baidu.com/s/1ou25P982A62-BQfu35UCfg\u003c/a\u003e\u003cbr\u003e\n\u003cstrong\u003e提取码:\u003c/strong\u003e yv9t\u003c/p\u003e","tags":["share","原来我不帅","系统镜像","newsletter"],"title":"原来我不帅 无盘公包v2021正式版系统镜像包分享"},{"categories":["today_i_learned"],"content":"PLDT AN5506-04 Set Lanbind This manual tutorial works for PLDTHOMEFIBR\nModel: AN5506-04-FA\nSoftware Version: RP2646\nStep 1 Login https://192.168.1.1/fh\nRe-enable web admin access.\nUser:f9!6b1e1rhO3es~u!p@e#r$a%d^m*i(n\nPassword: s)f_U+h|g{u@5h2o1q0b1l\n[ enable web admin access ] and [apply] then quit.\nStep 2 To go advance settings\nhttps://192.168.1.1/fh\nuser: adminpldt\nPassword: z6dUABtl270qRxt7a2uGTiw\nPrompt you to change the default password ,Plz don\u0026rsquo;t forget it .\n","permalink":"https://www.dukehsu.com/posts/pldt.html","summary":"\u003ch2 id=\"pldt-an5506-04-set-lanbind\"\u003ePLDT AN5506-04 Set Lanbind\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"PLDT Fibr.jpg\" loading=\"lazy\" src=\"/posts/pldt/images/4115467083.jpg\" title=\"PLDT Fibr.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003eThis manual tutorial works for PLDTHOMEFIBR\u003c/p\u003e","tags":["an5506-04","pldt"],"title":"PLDT  AN5506-04 Lan bind [Fiber home]"},{"categories":["today_i_learned"],"content":"如何設置 windows10 自動登錄 有些用户在安装win10 2004系统之后，无法设置自动登录。 发现【要使用本计算机，用户必须输入用户名和密码】 选项不见 。\n现在我就教大家如何设置自动登录。\n按Win+R 输入regedit 进入注册表编辑\n找到键值\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\PasswordLess\\Device 再找到右侧，双击DevicePasswordLessBuildVersion 把值改成0确定！\n再按Win+R 输入netplwiz 把【要使用本计算机，用户必须输入用户名和密码】取消勾选即可\n重启之后就可以自动登录拉！\n","permalink":"https://www.dukehsu.com/posts/win10login.html","summary":"\u003ch2 id=\"如何設置-windows10-自動登錄\"\u003e如何設置 windows10 自動登錄\u003c/h2\u003e\n\u003cp\u003e有些用户在安装win10 2004系统之后，无法设置自动登录。 发现【要使用本计算机，用户必须输入用户名和密码】 选项不见 。\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Snipaste_2020-08-17_21-48-18.jpg\" loading=\"lazy\" src=\"/posts/win10login/images/R481UQwSzHNvjkM.jpg\" title=\"Snipaste_2020-08-17_21-48-18.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e现在我就教大家如何设置自动登录。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e按Win+R 输入regedit 进入注册表编辑\u003cbr\u003e\n\u003cimg alt=\"Snipaste_2020-08-17_21-43-56.jpg\" loading=\"lazy\" src=\"/posts/win10login/images/Ov3f6WmNCZxLDcP.jpg\" title=\"Snipaste_2020-08-17_21-43-56.jpg\"\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e找到键值\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\PasswordLess\\Device\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e再找到右侧，\u003cstrong\u003e双击DevicePasswordLessBuildVersion\u003c/strong\u003e 把值改成\u003cstrong\u003e0\u003c/strong\u003e确定！\u003cbr\u003e\n\u003cimg alt=\"2.jpg\" loading=\"lazy\" src=\"/posts/win10login/images/xQ1ZMV5tK6S9qCf.jpg\" title=\"2.jpg\"\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e再按Win+R 输入netplwiz 把【要使用本计算机，用户必须输入用户名和密码】取消勾选即可\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e重启之后就可以自动登录拉！\u003c/p\u003e","tags":["win102004","win10自动登录"],"title":"Win10 2004设置开机自动登录"},{"categories":["today_i_learned"],"content":"\n本文主要介绍微软的测试工具Psping，\n该工具功能主要包括：ICMP Ping、TCP Ping、延迟测试、带宽测试\n需要说明一种应用场景：由于Windows Azure数据中心禁ICMP，使用Psping的TCP Ping的功能来测试联通性或者故障排查就非常有用了。\n工具下载地址： http://technet.microsoft.com/en-us/sysinternals/jj729731\n下载完PSTools.zip包之后，放到任意本地磁盘内，解压；\n使用CMD命令行工具进入PSTools所在的文件夹路径，单独输入psping，可见psping四个主要功能的帮助命令，四个功能分别是ICMP Ping、TCP Ping、延迟测试、带宽测试。\n【Part.1】ICMP ping功能 输入psping -? i获取ICMP ping相关参数\npsping -4 -n 10 -w 2 -h 180.76.76.76\n-4 代表强制使用IPv4联机 -n 代表正式ping包的个数，或者定义使用秒s作为单位 -w 代表热身ping包的个数，即正式测试前先进行多少次热身测试连接 -h 代表最小与最大延迟毫秒数 另外几个参数解释如下：\n-i 代表间隔秒数，快ping则设置为0 -l 代表ping包大小，默认单位是byte。使用 k为单位代表kilobytes(KB)，使用m为单位代表megabytes(MB) -q 代表ping过程中不一个个输出值 -t 代表长ping不停 -6 代表强制使用IPv6联机 psping -i 0 -4 -n 10 -w 2 -h 10 -q 180.76.76.76 由于设置了-i 0这个参数，瞬间出结果\n设置了-q则不再显示中间的输出过程，直接输出结果\n-l和-t和-6不在此演示了。\n【Part.2】TCP Ping功能 使用psping -? t获取帮助信息\npsping -n 10 -w 2 -h 10 42.159.27.213:443与ping功能相同的参数定义：\n-n 代表正式ping包的个数，或者定义使用秒s作为单位 -w 代表热身ping包的个数，即正式测试前先进行多少次热身测试连接 -h 代表最小与最大延迟毫秒数 -i 代表间隔秒数，快ping则设置为0 -l 代表ping包大小，默认单位是byte。使用 k为单位代表kilobytes(KB)，使用m为单位代表megabytes(MB) -q 代表ping过程中不一个个输出值 -t 代表长ping不停 -4 代表强制使用IPv4联机 -6 代表强制使用IPv6联机 【Part.3】延迟测试 使用psping -? l获取延迟测试时的帮助信息。\n我使用Azure VM搭建了网站部署在8081端口，42.159.27.213:8081\npsping -l 1500 -n 300 -h 10 42.159.27.213:8081 -l 1500代表我发送的数据包大小为每个1500 Bytes，TCP联机在Layer 2 Ethernet中的MTU (Maximum Transmission Unit)通常以1500 Bytes为一个单位 -n 300代表放松300个封包 那么300*1500Bytes=450000Bytes，绝大多数在5ms内响应 【Part.4】带宽测试 psping -? b\npsping -b -l 1500 -n 15000 42.159.27.213:8081 -b代表将进行带宽测试 -l 1500代表使用大小1500Bytes的数据包 -n 15000代表使用15000个数据包 输出结果显示我测试我的PC与Azure VM之间带宽为470KB/s，其实是因为我的工位的PC被公司IT限速为500KB/s了，所以压到了我PC带宽的极限。\n","permalink":"https://www.dukehsu.com/posts/psping.html","summary":"\u003cp\u003e\u003cimg alt=\"psping.jpg\" loading=\"lazy\" src=\"/posts/psping/images/3254903661.jpg\" title=\"psping.jpg\"\u003e\u003cbr\u003e\n本文主要介绍微软的测试工具Psping，\u003cbr\u003e\n该工具功能主要包括：ICMP Ping、TCP Ping、延迟测试、带宽测试\u003c/p\u003e\n\u003cp\u003e需要说明一种应用场景：由于Windows Azure数据中心禁ICMP，使用Psping的TCP Ping的功能来测试联通性或者故障排查就非常有用了。\u003c/p\u003e\n\u003cp\u003e工具下载地址： \u003ca href=\"http://technet.microsoft.com/en-us/sysinternals/jj729731\"\u003ehttp://technet.microsoft.com/en-us/sysinternals/jj729731\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e下载完PSTools.zip包之后，放到任意本地磁盘内，解压；\u003c/p\u003e\n\u003cp\u003e使用CMD命令行工具进入PSTools所在的文件夹路径，单独输入psping，可见psping四个主要功能的帮助命令，四个功能分别是ICMP Ping、TCP Ping、延迟测试、带宽测试。\u003c/p\u003e\n\u003ch4 id=\"part1icmp-ping功能\"\u003e【Part.1】ICMP ping功能\u003c/h4\u003e\n\u003cp\u003e输入psping -? i获取ICMP ping相关参数\u003cbr\u003e\n\u003cimg alt=\"psping.jpg\" loading=\"lazy\" src=\"/posts/psping/images/3254903661.jpg\" title=\"psping.jpg\"\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epsping -4 -n 10 -w 2 -h 180.76.76.76\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"psping 1.jpg\" loading=\"lazy\" src=\"/posts/psping/images/1336111479.jpg\" title=\"psping 1.jpg\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e-4 代表强制使用IPv4联机\u003c/li\u003e\n\u003cli\u003e-n 代表正式ping包的个数，或者定义使用秒s作为单位\u003c/li\u003e\n\u003cli\u003e-w 代表热身ping包的个数，即正式测试前先进行多少次热身测试连接\u003c/li\u003e\n\u003cli\u003e-h 代表最小与最大延迟毫秒数\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e另外几个参数解释如下：\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e-i 代表间隔秒数，快ping则设置为0\u003c/li\u003e\n\u003cli\u003e-l 代表ping包大小，默认单位是byte。使用 k为单位代表kilobytes(KB)，使用m为单位代表megabytes(MB)\u003c/li\u003e\n\u003cli\u003e-q 代表ping过程中不一个个输出值\u003c/li\u003e\n\u003cli\u003e-t 代表长ping不停\u003c/li\u003e\n\u003cli\u003e-6 代表强制使用IPv6联机\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epsping -i 0 -4 -n 10 -w 2 -h 10 -q 180.76.76.76\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e由于设置了-i 0这个参数，瞬间出结果\u003cbr\u003e\n设置了-q则不再显示中间的输出过程，直接输出结果\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e-l和-t和-6不在此演示了。\u003c/strong\u003e\u003c/p\u003e\n\u003ch4 id=\"part2tcp-ping功能\"\u003e【Part.2】TCP Ping功能\u003c/h4\u003e\n\u003cp\u003e使用psping -? t获取帮助信息\u003cbr\u003e\n\u003cimg alt=\"psping2.jpg\" loading=\"lazy\" src=\"/posts/psping/images/3982250798.jpg\" title=\"psping2.jpg\"\u003e\u003c/p\u003e","tags":["网络测试"],"title":"使用 PsPing进行网络测试"},{"categories":["today_i_learned"],"content":"显示器接口科普 懒人结论：对自己好一点，买更好的线～\nVGA \u0026amp; DVI VGA：2048*1536 - 60 帧 双通道 DVI: 2560*1600(略高于2K) HDMI 2.0 最高带宽：14.4Gbps 支持 4K 60Hz / 2K 144Hz HDR、10bit 色深、FreeSync 技术 DP(DisplayPort) 1.4 最高带宽：25.92 Gbps 支持 8K 30Hz / 5K 60Hz / 4K 120Hz HDR、P3 色域、Rec2020 色彩空间、G-SYNC 技术 支持「菊花链」技术 雷电 3 接支持 DP 1.4 HDMI 2.1 最高带宽: 42.6 Gbps 最高支持 10K (10240*5400) 支持动态 HDR 和 DSC 显示 进入量化生产阶段 DisplayPort 2.0 最高带宽：77.37 Gbps 最高支持 16K (15360*8460) 60Hz 支持 HDR 10 目前只是一个概念参数 主流显示器所需要的带宽 Apple XDR 6K 8bit 60Hz：29.31Gbps\n4K 8bit 60Hz：11.94Gbps\n2K 8bit 144Hz：12.74Gbps\n2K 8bit 60Hz：5,3Gbps\n1080P 8bit 240Hz：11.94Gbps\n好马配好鞍，线材只是一部分，超清显示还需要显卡和显示器的加持\n原文： https://mp.weixin.qq.com/s/E_qPmNapS1RiDYLZDLlacg\n","permalink":"https://www.dukehsu.com/posts/65.html","summary":"\u003ch2 id=\"显示器接口科普\"\u003e显示器接口科普\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"ioio.png\" loading=\"lazy\" src=\"/posts/65/images/968099386.png\" title=\"ioio.png\"\u003e\u003cbr\u003e\n懒人结论：对自己好一点，买更好的线～\u003c/p\u003e\n\u003ch3 id=\"vga--dvi\"\u003eVGA \u0026amp; DVI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVGA：2048*1536 - 60 帧\u003c/li\u003e\n\u003cli\u003e双通道 DVI: 2560*1600(略高于2K)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"hdmi-20\"\u003eHDMI 2.0\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e最高带宽：14.4Gbps\u003c/li\u003e\n\u003cli\u003e支持 4K 60Hz / 2K 144Hz\u003c/li\u003e\n\u003cli\u003eHDR、10bit 色深、FreeSync 技术\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"dpdisplayport-14\"\u003eDP(DisplayPort) 1.4\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e最高带宽：25.92 Gbps\u003c/li\u003e\n\u003cli\u003e支持 8K 30Hz / 5K 60Hz / 4K 120Hz\u003c/li\u003e\n\u003cli\u003eHDR、P3 色域、Rec2020 色彩空间、G-SYNC 技术\u003c/li\u003e\n\u003cli\u003e支持「菊花链」技术\u003c/li\u003e\n\u003cli\u003e雷电 3 接支持 DP 1.4\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"hdmi-21\"\u003eHDMI 2.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e最高带宽: 42.6 Gbps\u003c/li\u003e\n\u003cli\u003e最高支持 10K (10240*5400)\u003c/li\u003e\n\u003cli\u003e支持动态 HDR 和 DSC 显示\u003c/li\u003e\n\u003cli\u003e进入量化生产阶段\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"displayport-20\"\u003eDisplayPort 2.0\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e最高带宽：77.37 Gbps\u003c/li\u003e\n\u003cli\u003e最高支持 16K (15360*8460) 60Hz\u003c/li\u003e\n\u003cli\u003e支持 HDR 10\u003c/li\u003e\n\u003cli\u003e目前只是一个概念参数\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"主流显示器所需要的带宽\"\u003e主流显示器所需要的带宽\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eApple XDR 6K 8bit 60Hz：29.31Gbps\u003c/p\u003e","tags":["显示器接口","科普"],"title":"显示器接口科普"},{"categories":["today_i_learned"],"content":"\nKMS KMS激活服务，slmgr命令激活Windows系统、Office\n激活步骤（管理员命令执行） 设置服务　slmgr -skms kms.03k.org 安装密钥　slmgr -ipk 版本对应秘钥 激活系统　slmgr -ato 可用服务 kms.cangshui.net kms.zme.ink 推荐使用，维护 CNAME 指向有效的服务 telnet kms.zme.ink 1688 测试服务是否可用 vlmcs-Windows Linux一条命令安装KMS服务 slmgr命令详解 密钥 https://docs.microsoft.com/zh-cn/windows-server/get-started/kmsclientkeys\nWindows Server 半年频道版本 Windows Server、 版本 1903年和 Windows Server 版本 1809 操作系统版本 KMS 客户端安装密钥 Windows Server Datacenter 6NMRW-2C8FM-D24W7-TQWMY-CWH2D Windows Server Standard N2KJX-J94YW-TQVFB-DG9YT-724CC Windows Server 版本 1803 操作系统版本 KMS 客户端安装密钥 Windows Server Datacenter 2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG Windows Server Standard PTXN8-JFHJM-4WC78-MPCBR-9W4KR Windows Server 版本 1709 操作系统版本 KMS 客户端安装密钥 Windows Server Datacenter 6Y6KB-N82V8-D8CQV-23MJW-BWTG6 Windows Server Standard DPCNP-XQFKJ-BJF7R-FRC8D-GF6G4 Windows Server LTSC/LTSB 版本 Windows Server 2019 操作系统版本 KMS 客户端安装密钥 Windows Server 2019 Datacenter WMDGN-G9PQG-XVVXX-R3X43-63DFG Windows Server 2019 Standard N69G4-B89J2-4G8F4-WWYCC-J464C Windows Server 2019 Essentials WVDHN-86M7X-466 P 6-VHXV7-YY726 Windows Server 2016 操作系统版本 KMS 客户端安装密钥 Windows Server 2016 Datacenter CB7KF-BWN84-R7R2Y-793K2-8XDDG Windows Server 2016 Standard WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY Windows Server 2016 Essentials JCKRF-N37P4-C2D82-9YXRT-4M63B Windows 10 中，所有受支持的半年频道版本 操作系统版本 KMS 客户端安装密钥 Windows 10 专业版 W269N-WFGWX-YVC9B-4J6C9-T83GX Windows 10 专业版 N MH37W-N47XK-V7XM9-C7227-GCQG9 Windows 10 专业工作站 NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J Windows 10 专业工作站 N 9FNHH-K3HBT-3W4TD-6383H-6XYWF Windows 10 专业教育版 6TP4R-GNPTD-KYYHQ-7B7DP-J447Y Windows 10 专业教育版 N YVWGF-BXNMC-HTQYQ-CPQ99-66QFC Windows 10 教育版 NW6C2-QMPVW-D7KKK-3GKT6-VCFB2 Windows 10 教育版 N 2WH4N-8QGBV-H22JP-CT43Q-MDWWJ Windows 10 企业版 NPPR9-FWDCX-D2C8J-H872K-2YT43 Windows 10 企业版 N DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4 Windows 10 企业版 G YYVX9-NTFWV-6MDM3-9PT4T-4M68B Windows 10 企业版 G N 44RPN-FTY23-9VTTB-MP9BX-T84FV Windows 10 LTSC/LTSB 版本 Windows 10 LTSC 2019 操作系统版本 KMS 客户端安装密钥 Windows 10 企业版 LTSC 2019 M7XTQ-FN8P6-TTKYV-9D4CC-J462D Windows 10 企业版 N LTSC 2019 92NFX-8DJQP-P6BBQ-THF9C-7CG2H Windows 10 LTSB 2016 操作系统版本 KMS 客户端安装密钥 Windows 10 企业版 LTSB 2016 DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ Windows 10 企业版 N LTSB 2016 QFFDN-GRT3P-VKWWX-X7T3R-8B639 Windows 10 LTSB 2015 操作系统版本 KMS 客户端安装密钥 Windows 10 企业版 2015 长期服务 WNMTR-4C88C-JK8YV-HQ7T2-76DF9 Windows 10 企业版 2015 长期服务 N 2F77B-TNFGY-69QQF-B8YKP-D69TJ 较早版本的 Windows Server Windows Server 2012 R2 操作系统版本 KMS 客户端安装密钥 Windows Server 2012 R2 Server Standard D2N9P-3P6X9-2R39C-7RTCD-MDVJX WindowsServer 2012 R2 Datacenter W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9 WindowsServer 2012 R2 Essentials KNC87-3J2TX-XB4WP-VCPJV-M4FWM Windows Server 2012 操作系统版本 KMS 客户端安装密钥 Windows Server 2012 BN3D2-R7TKB-3YPBD-8DRP2-27GG4 Windows Server 2012 N 8N2M2-HWPGY-7PGT9-HGDD8-GVGGY Windows Server 2012 单语言版 2WN2H-YGCQR-KFX6K-CD6TF-84YXQ Windows Server 2012 特定国家/地区版 4K36P-JN4VD-GDC6V-KDT89-DYFKP Windows Server 2012 Server Standard XC9B7-NBPP2-83J2H-RHMBY-92BT4 Windows Server 2012 MultiPoint Standard HM7DN-YVMH3-46JC3-XYTG7-CYQJJ Windows Server 2012 MultiPoint Premium XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G Windows Server 2012 Datacenter 48HP8-DN98B-MYWDG-T2DCC-8W83P Windows Server 2008 R2 操作系统版本 KMS 客户端安装密钥 Windows Server 2008 R2 Web 版 6TPJF-RBVHG-WBW2R-86QPH-6RTM4 Windows Server 2008 R2 HPC 版 TT8MH-CG224-D3D7Q-498W2-9QCTX WindowsServer 2008 R2 Standard YC6KT-GKW9T-YTKYR-T4X34-R7VHC WindowsServer 2008 R2 企业版 489J6-VHDMP-X63PK-3K798-CPX3Y WindowsServer 2008 R2 Datacenter 74YFP-3QFB3-KQT8W-PMXWJ-7M648 面向基于 Itanium 系统的 Windows Server 2008 R2 GT63C-RJFQ3-4GMB6-BRFB9-CB83V Windows Server 2008 操作系统版本 KMS 客户端安装密钥 Windows Web Server 2008 WYR28-R7TFJ-3X2YQ-YCY4H-M249D Windows Server 2008 Standard TM24T-X9RMF-VWXK6-X8JC9-BFGM2 不带 Hyper-V 的 Windows Server 2008 Standard W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ Windows Server 2008 企业版 YQGMW-MPWTJ-34KDK-48M3W-X4Q6V 不带 Hyper-V 的 Windows Server 2008 企业版 39BXF-X8Q23-P2WWT-38T2F-G3FPG Windows Server 2008 HPC RCTX3-KWVHP-BR6TB-RB6DM-6X7HP Windows Server 2008 Datacenter 7M67G-PC374-GR742-YH8V4-TCBY3 不带 Hyper-V 的 Windows Server 2008 Datacenter 22XQ2-VRXRG-P8D42-K34TD-G3QQC 面向基于 Itanium 系统的 Windows Server 2008 4DWFP-JF3DJ-B7DTH-78FJB-PDRHK 早期版本的 Windows Windows 8.1 操作系统版本 KMS 客户端安装密钥 Windows 8.1 专业版 GCRJD-8NW9H-F2CDX-CCM8D-9D6T9 Windows 8.1 专业版 N HMCNV-VVBFX-7HMBH-CTY9B-B4FXY Windows 8.1 企业版 MHF9N-XY6XB-WVXMC-BTDCT-MKKG7 Windows 8.1 企业版 N TT4HM-HN7YT-62K67-RGRQJ-JFFXW Windows 8 操作系统版本 KMS 客户端安装密钥 Windows 8 专业版 NG4HW-VH26C-733KW-K6F98-J8CK4 Windows 8 专业版 N XCVCF-2NXM9-723PB-MHCB7-2RYQQ Windows 8 企业版 32JNW-9KQ84-P47T8-D8GGY-CWCK7 Windows 8 企业版 N JMNMF-RHW7P-DMY6X-RF3DR-X2BQT Windows 7 操作系统版本 KMS 客户端安装密钥 Windows 7 专业版 FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4 Windows 7 专业版 N MRPKT-YTG23-K7D7T-X2JMM-QY7MG Windows 7 专业版 E W82YF-2Q76Y-63HXB-FGJG9-GF7QX Windows7 企业版 33PXH-7Y6KF-2VJC9-XBBR8-HVTHH Windows 7 企业版 N YDRBP-3D83W-TY26F-D46B2-XCKRJ Windows 7 企业版 E C29WB-22CC8-VJ326-GHFJW-H9DH4 激活说明 KMS 激活有 180 天期限，此期限称为激活有效间隔 若要保持激活状态，您的系统必须通过至少每 180 天连接一次 KMS 服务器来续订激活 默认情况下，系统每 7 天自动进行一次激活续订尝试 在续订客户端激活之后，激活有效间隔重新开始 综上所述，只要您不超过 180 天以上无法连接互联网，系统会自行续期保持激活状态 Office（VOL 版本）激活步骤（管理员命令执行） 进入安装目录　cd \u0026quot;C:\\Program Files (x86)\\Microsoft Office\\Office16\u0026quot;\n32 位默认一般为 C:\\Program Files (x86)\\Microsoft Office\\Office16 64 位默认一般为 C:\\Program Files\\Microsoft Office\\Office16 Office16 是 Office 2016 Office15 是 Office 2013 Office14 是 Office 2010 打开以上所说的目录，应该有个 OSPP.VBS 文件 注册KMS服务　cscript ospp.vbs /sethst:kms.zme.ink\n激活 Office　cscript ospp.vbs /act\nOffice 密钥列表 Office 2019 \u0026amp; Office 2016 https://docs.microsoft.com/en-us/DeployOffice/vlactivation/gvlks Office 2013 https://technet.microsoft.com/zh-cn/library/dn385360.aspx Office 2010 https://technet.microsoft.com/zh-cn/library/ee624355(v=office.14).aspx Help https://teddysun.com/530.html https://03k.org/kms.html http://kms.cangshui.net Source https://github.com/netnr/kms https://gitee.com/netnr/kms 原文链接：https://kms.netnr.com/\n","permalink":"https://www.dukehsu.com/posts/kms.html","summary":"\u003cp\u003e\u003cimg alt=\"KMS Process_2.jpg\" loading=\"lazy\" src=\"/posts/kms/images/1404575963.jpg\" title=\"KMS Process_2.jpg\"\u003e\u003c/p\u003e\n\u003ch1 id=\"kms\"\u003eKMS\u003c/h1\u003e\n\u003cblockquote\u003e\n\u003cp\u003eKMS激活服务，slmgr命令激活Windows系统、Office\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"激活步骤管理员命令执行\"\u003e激活步骤（管理员命令执行）\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e设置服务　　\u003ccode\u003eslmgr -skms kms.03k.org\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e安装密钥　　\u003ccode\u003eslmgr -ipk 版本对应秘钥\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e激活系统　　\u003ccode\u003eslmgr -ato\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e","tags":["kms","office激活","激活windows"],"title":"KMS激活科普，什么是KMS激活,KMS 激活指南"},{"categories":["today_i_learned"],"content":"Win10远程桌面出现 身份验证错误，要求的函数不受支持，这可能是由于CredSSP加密Oracle修正 解决方法 解决方法： 运行 gpedit.msc 本地组策略： 计算机配置\u0026gt;管理模板\u0026gt;系统\u0026gt;凭据分配\u0026gt;加密Oracle修正 选择启用并选择易受攻击。\n","permalink":"https://www.dukehsu.com/posts/63.html","summary":"\u003ch2 id=\"win10远程桌面出现-身份验证错误要求的函数不受支持这可能是由于credssp加密oracle修正-解决方法\"\u003eWin10远程桌面出现 身份验证错误，要求的函数不受支持，这可能是由于CredSSP加密Oracle修正 解决方法\u003c/h2\u003e\n\u003cp\u003e\u003cimg alt=\"1.jpg\" loading=\"lazy\" src=\"/posts/63/images/2471017731.jpg\" title=\"1.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"解决方法\"\u003e解决方法：\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e运行 gpedit.msc\u003c/li\u003e\n\u003cli\u003e本地组策略：\u003c/li\u003e\n\u003cli\u003e计算机配置\u0026gt;管理模板\u0026gt;系统\u0026gt;凭据分配\u0026gt;加密Oracle修正\u003c/li\u003e\n\u003cli\u003e选择启用并选择易受攻击。\u003cbr\u003e\n\u003cimg alt=\"2.jpg\" loading=\"lazy\" src=\"/posts/63/images/3272543785.jpg\" title=\"2.jpg\"\u003e\u003c/li\u003e\n\u003c/ul\u003e","tags":["win10远程桌面","windows","要求的函数不受支持","身份验证错误"],"title":"Win10远程桌面出现 身份验证错误"},{"categories":["today_i_learned"],"content":"\n由于win10升级，apple官网已经主动推广win 10应用商店下载了\n对于旧系统来说无法正常使用windows客户端\n现在请在这里下载\niTunes 64位Windows 客户端\nhttps://www.apple.com/itunes/download/win64\niTunes 32位Windows 客户端\nhttps://www.apple.com/itunes/download/win32\n","permalink":"https://www.dukehsu.com/posts/itunes.html","summary":"\u003cp\u003e\u003cimg alt=\"apple.jpg\" loading=\"lazy\" src=\"/posts/itunes/images/4058769736.jpg\" title=\"apple.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e由于win10升级，apple官网已经主动推广win 10应用商店下载了\u003cbr\u003e\n对于旧系统来说无法正常使用windows客户端\u003cbr\u003e\n现在请在这里下载\u003c/p\u003e\n\u003cp\u003eiTunes 64位Windows 客户端\u003cbr\u003e\n\u003ca href=\"https://www.apple.com/itunes/download/win64\"\u003ehttps://www.apple.com/itunes/download/win64\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eiTunes 32位Windows 客户端\u003cbr\u003e\n\u003ca href=\"https://www.apple.com/itunes/download/win32\"\u003ehttps://www.apple.com/itunes/download/win32\u003c/a\u003e\u003c/p\u003e","tags":["apple","itunes","newsletter"],"title":"Itunes客户端Windows版本"},{"categories":["today_i_learned"],"content":"Copy the batch script code,\nthen save as .bat, double click it .\ngood luck .\n@echo off color f title CSGO VAC Tools -By Xiaosi www.itiohub.com echo ◤━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◥ echo ┃ ┃ echo ┃ ███████ ███████ ███████ ███████ ┃ echo ┃ ██ ██ ● ██ ██ ██ ┃ echo ┃ ██ ███████ ██ ████ ██ ██ ┃ echo ┃ ██ ██ ● ██ ██ ██ ██ ┃ echo ┃ ███████ ███████ ███████ ███████ ┃ echo ┃ ┃ echo ◣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◢ echo ┏━━━━━━━━━━┓ echo ┃ 解除VAC屏蔽工具 ┃ echo ┗━━━━━━━━━━┛ sc config Netman start= AUTO sc start Netman sc config rasman start= AUTO sc start rasman sc config tapisrv start= AUTO sc start tapisrv sc config mpssvc start= AUTO sc start mpssvc netsh advfirewall set allprofiles state on bcdedit.exe /set {current} nx alwayson cls echo ◤━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◥ echo ┃ ┃ echo ┃ ███████ ███████ ███████ ███████ ┃ echo ┃ ██ ██ ● ██ ██ ██ ┃ echo ┃ ██ ███████ ██ ████ ██ ██ ┃ echo ┃ ██ ██ ● ██ ██ ██ ██ ┃ echo ┃ ███████ ███████ ███████ ███████ ┃ echo ┃ ┃ echo ◣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◢ echo ┏━━━━━━━━━━┓ echo ┃VAC-Tools By Xiaosi ┃ echo ┗━━━━━━━━━━┛ echo. echo 请输入你的Steam文件夹所在位置,然后按回车 echo. echo Please enter your Steam folder location and press Enter echo ----------------------------------------------------------------------- echo (例: Z:\\Steam Games\\Steam 格式一定要正确，若出错请重启本软件!) echo. echo Example: \u0026#34;Z: \\ Steam Games\\Steam\u0026#34; format must be correct, if an error please restart the software echo. set /p steampath= cd /d %steampath%\\bin echo. echo == 操作中，请等待 == echo ====Please wait==== echo. steamservice.exe /install echo. steamservice.exe /repair echo. echo. echo == 操作完成 == echo ===OK Game Happy=== echo. pause","permalink":"https://www.dukehsu.com/posts/vac.html","summary":"\u003cp\u003eCopy the batch script code,\u003cbr\u003e\nthen save as .bat, double click it .\u003cbr\u003e\ngood luck .\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-batch\" data-lang=\"batch\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e@\u003c/span\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e off\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003ecolor\u003c/span\u003e f\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003etitle\u003c/span\u003e CSGO VAC  Tools      -By Xiaosi  www.itiohub.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ◤━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◥\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃                                                                        ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ███████  ███████    ███████  ███████    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ██            ██           ● ██            ██      ██    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ██            ███████    ██  ████  ██      ██    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ██                      ██ ● ██      ██  ██      ██    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ███████  ███████    ███████  ███████    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃                                                                        ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ◣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◢\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e                            ┏━━━━━━━━━━┓\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e                            ┃  解除VAC屏蔽工具   ┃  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e                            ┗━━━━━━━━━━┛                   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc config Netman start= AUTO\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc start Netman\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc config rasman start= AUTO\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc start rasman\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc config tapisrv start= AUTO\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc start tapisrv\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc config mpssvc start= AUTO\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esc start mpssvc\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enetsh advfirewall set allprofiles state on\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ebcdedit.exe /set {current} nx alwayson\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003ecls\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ◤━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◥\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃                                                                        ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ███████  ███████    ███████  ███████    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ██            ██           ● ██            ██      ██    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ██            ███████    ██  ████  ██      ██    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ██                      ██ ● ██      ██  ██      ██    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃    ███████  ███████    ███████  ███████    ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ┃                                                                        ┃\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  ◣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◢\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e                            ┏━━━━━━━━━━┓\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e                            ┃VAC-Tools By Xiaosi ┃  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e                            ┗━━━━━━━━━━┛   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e 请输入你的Steam文件夹所在位置,然后按回车\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  Please enter your Steam folder location and press Enter\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e -----------------------------------------------------------------------\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  (例: Z:\\Steam Games\\Steam  格式一定要正确，若出错请重启本软件!)\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e  Example: \u003cspan class=\"s2\"\u003e\u0026#34;Z: \\ Steam Games\\Steam\u0026#34;\u003c/span\u003e format must be correct, if an error please restart the software  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eset\u003c/span\u003e \u003cspan class=\"k\"\u003e/p\u003c/span\u003e \u003cspan class=\"nv\"\u003esteampath\u003c/span\u003e\u003cspan class=\"p\"\u003e=\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003ecd\u003c/span\u003e /d \u003cspan class=\"nv\"\u003e%steampath%\u003c/span\u003e\\bin\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e == 操作中，请等待 ==\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e ====Please wait====\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esteamservice.exe /install\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esteamservice.exe /repair\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e ==    操作完成    ==\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e ===OK Game Happy===\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eecho\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epause\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","tags":["csgo","vac"],"title":"CSGO国际服VAC错误 ， Batch Script for Fixing the \"VAC\" Error."},{"categories":["today_i_learned"],"content":"\n五分钟将Panabit云平台安装在阿里云服务器\n仅需要简单4个步骤\n准备工作 你需要准备好以下\n服务器\n阿里云Freebsd系统云服务器一台 [1G1核1M即可]\n服务器链接软件\nPutty \u0026amp; WinScp用来上传文件和操作服务器\n[你也可以使用其他的软件]\nPanaCloud独立包\nPanaCloud.tgz\n步骤总结 使用Winscp将独立包上传到云服务器 解压缩PanaCloud 独立包 将云平台设置为开机启动 阿里云服务器安全组开放端口 使用Winscp将独立包上传到云服务器\n解压缩PanaCloud 独立包\ntar zxvf PanaCloud.tgz -C / 将云平台设置为开机启动 使用cd命令进入/etc 目录，在rc.local文件中加入\n/usr/logd/bin/logd \u0026amp;\ncrtl+c 输入exit 退出保存，重启云服务器即可使用云服务器IP访问\n阿里云服务器安全组开放端口为\n22 TCP 24568-34567 UDP 24565-34567感谢Panabit 刘俊波，以及群内的小伙伴们的解答。\nCloud 独立版文件请咨询Panabit工作人员。\n","permalink":"https://www.dukehsu.com/posts/panacloud.html","summary":"\u003cp\u003e\u003cimg alt=\"index1.png\" loading=\"lazy\" src=\"/posts/panacloud/images/164892201.png\" title=\"index1.png\"\u003e\u003cbr\u003e\n五分钟将Panabit云平台安装在阿里云服务器\u003cbr\u003e\n仅需要简单4个步骤\u003c/p\u003e\n\u003ch4 id=\"准备工作\"\u003e准备工作\u003c/h4\u003e\n\u003cp\u003e你需要准备好以下\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e服务器\u003c/strong\u003e\u003cbr\u003e\n阿里云Freebsd系统云服务器一台 [1G1核1M即可]\u003c/p\u003e","tags":["panabit","aliyun"],"title":"如何在阿里云安装PanaCloud独立版"}]