Win7 虚拟机装配

<img src="https://localfreedom.pages.dev/img/Windows7SP1.png" alt="Featured image of post Win7 虚拟机装配" /><p>Windows 7 是 Microsoft 推出的一款非常经典的作业系统。 随着 Intel 8代以后的 CPU 不再支持安装 Win7, 现在想重温这款作业系统或者运行只兼容 Windows 7 的程式,那么就主要依靠虚拟机软件来实现了。</p> <p>这里介绍在桌面虚拟机软件中安装并配置 Windows 7 的参考流程,对于物理机安装也同样适用。</p> <h2 id="虚拟机软件设定">虚拟机软件设定 </h2><h3 id="virtualbox">Virtualbox </h3><ul> <li>General -&gt; Advanced-&gt; SharedClipboard共享剪贴簿</li> <li>System -&gt; MotherBoard: BaseMemory大于4096M, 禁用Floppy, 启用I/O APIC, 不要EFI</li> <li>System -&gt; Processer: 数量2, 峰值100%, 启用PAE/NX</li> <li>System -&gt; Acceleration: 启用NestedPaging</li> <li>Display -&gt; Screen: 启用3D加速, 显存最大</li> <li>Storage: 预设40GiB即可,建议至少32GiB。</li> <li>Network: Host-Only</li> <li>UserInterface: 顶部显示</li> </ul> <h3 id="vmware-workstation">VMWare Workstation </h3><ul> <li>Processors: 数量1, 核心2, 开启三项虚拟化</li> <li>Floppy: Remove</li> <li>Network Adapter: Host-only</li> <li>Printer: Remove</li> <li>USB Controller: 不要启动连接新USB设备</li> <li>Display: 3D Graphics</li> </ul> <h2 id="windows-7-system">Windows 7 System </h2><p>正常安装Windows7并激活。</p> <ul> <li>组织 -&gt; 资料夹和搜索选项: 显示隐藏档案、显示副档名</li> <li>控制面板 -&gt; 系统和安全 -&gt; 不允许远程协助、电源选项从不睡眠</li> <li>(可选)服务: 禁用SuperFetch</li> <li>操作中心: 关闭消息(已不再支援无需理会更新等提醒)</li> <li>InternetOptions -&gt; General -&gt; DeleteHistory</li> <li>安装硬件驱动</li> <li>安装SHA2更新kb4474419</li> <li>安装服务堆栈更新kb4490628(SSU)更新数字证书</li> <li>安装便捷补丁合集包kb3125574(包括2011SP1发布到2016年4月的几乎所有补丁,2019版已集成)</li> <li>安装最终月度汇总kb4534310包含几乎所有之前月度汇总</li> <li>安装IE11(2019版已全面集成) <ul> <li>(如果没安装以上补丁)安装kb2533623(必须第一个装),kb2731771,kb2786081</li> <li>安装kb2670838,kb2729094-v2,kb2834140-v2</li> <li><a class="link" href="https://www.microsoft.com/en-us/download/details.aspx?id=41628" target="_blank" rel="noopener" >IE11</a></li> </ul> </li> <li>(可选)安装语言包</li> <li>(可选)安装最后的SSU更新kb4536952</li> <li>(可选)安装<a class="link" href="https://support.microsoft.com/en-us/topic/microsoft-net-framework-4-8-offline-installer-for-windows-9d23f658-3b97-68ab-d013-aa3c3e7495e0" target="_blank" rel="noopener" >.Net4.8</a></li> </ul> <h2 id="application-software">Application Software </h2><ul> <li><a class="link" href="https://learn.microsoft.com/en-us/sysinternals/downloads/sdelete" target="_blank" rel="noopener" >SDelete</a> <ul> <li>Start -&gt; cmd -&gt; <code>sdelete64.exe -z c:</code></li> <li>关机并压缩虚拟磁盘占用空间 <ul> <li>VirtualBox: <code>VBoxManage modifyhd [VM名称].vdi --compact</code></li> <li>VMware: 介面中可直接选择点击。</li> </ul> </li> </ul> </li> </ul> <blockquote> <p>建议在此做快照(清理浏览器历史、磁盘清理、磁盘碎片整理)</p> </blockquote> <ul> <li>虚拟机增强工具 <ul> <li>VirtualBox: 6.1.28-6.1.36因签名问题无法在Win7安装,之后及7.x版本需要确认签名告警。</li> <li>VMware: 15版本的增强工具<code>11.0.6-15940789</code>直接可用,之后因签名问题需要安装SHA2更新kb4474419。</li> </ul> </li> <li><a class="link" href="https://www.microsoft.com/zh-cn/download/details.aspx?id=30390" target="_blank" rel="noopener" >微软输入法2010</a> <ul> <li>如果之后要安装Office64位,需要安装同为64位版本。</li> </ul> </li> <li>浏览器 Edge109(FirefoxESR115) <ul> <li>设置下载询问位置</li> <li>隐私相关</li> </ul> </li> <li>WinRAR(7Zip)</li> <li>MSOffice2016 <ul> <li>以Word,Excel,PowerPoint,OneNote为主</li> <li>本机KMS激活可设置IP为127.0.0.2</li> </ul> </li> </ul> <blockquote> <p>装好常用软件后建议在此做快照</p> </blockquote> <p>之后就可以随意安装想要运行的程式了,有问题随时回退快照。</p>

2026/7/2
阅读更多

VirtualBox 设定和使用指南

<img src="https://localfreedom.pages.dev/img/virtualbox.png" alt="Featured image of post VirtualBox 设定和使用指南" /><h2 id="简介">简介 </h2><p>VirtualBox是由德国InnoTek公司出品的自由开源的虚拟机软件,现在被甲骨文Orcale公司收购发行。 VirtualBox是易用性、开源可信的最佳平衡,支援Windows/Linux/MacOS/Solaris等各种桌面操作系统,性能足够,迁移配置方便友好。</p> <p>作为系统级软件,开源是非常重要的,一般应用可以丢到容器或虚拟机中,但虚拟机软件本身必然是获取最高许可的。</p> <h3 id="增强工具">增强工具 </h3><p>虚拟机软件通常会配套增强工具,用以提供虚拟机和物理机的互动功能,通常共享剪贴板、拖拽等需要增强工具支援。 增强工具还通常包含虚拟硬件特定的驱动。 一般增强工具随虚拟机软件包以ISO格式提供。</p> <h2 id="下载安装">下载&amp;安装 </h2><h3 id="下载">下载 </h3><p><a class="link" href="https://www.virtualbox.org/wiki/Downloads" target="_blank" rel="noopener" >官网直接提供</a>针对各OS的安装包,还有适配各种小众Linux的通用安装包。</p> <h3 id="硬件设定">硬件设定 </h3><p>通常虚拟化软件需要打开CPU的虚拟化功能,尽管VirtualBox支援完全软件虚拟化,没有硬件支援也能运行x86虚拟机,但性能会非常糟糕。</p> <p>CPU虚拟化功能在Intel系列叫 <code>VT-x</code> 在 AMD 系列叫 <code>AMD-V</code>,通常在BIOS中预设启用。</p> <h3 id="安装">安装 </h3><p>Windows/Linux/MacOS 都可以直接用安装包简易安装。</p> <p>对于Linux发行版,如果仓库中有VirtualBox,建议安装发行版官方仓库维护的版本。</p> <ul> <li>Arch <ul> <li>从发行版仓库安装 <code>sudo pacman -S virtualbox</code></li> </ul> </li> <li>Ubuntu <ul> <li>确认启用multiverse通道 <code>/etc/apt/sources.list</code></li> <li>从发行版仓库安装 <code>sudo apt install virtualbox</code></li> </ul> </li> </ul> <h3 id="扩展">扩展 </h3><p>Orcale将部分高阶功能以专有许可发布,通过扩充套件的方式强化VirtualBox功能,主要包括USB3.0的支援等。 扩展包可以从<a class="link" href="https://www.virtualbox.org/wiki/Downloads" target="_blank" rel="noopener" >官网下载页面</a>免费下载,需要接受专有协议。</p> <p>最新版本USB3.0也转移到自由开源部分了,所以扩充套件已经没什么安装必要了。</p> <h2 id="全局设定">全局设定 </h2><p>打开软件介面,左上角 File-&gt;Preferences 进入全局设定。 这里简介常用设定项,不同版本名称和分级略有区别,这里以7.2.8版本为参考。</p> <ul> <li>General <ul> <li>Default Machine Folder <ul> <li>预设虚拟机存放位置,每个虚拟机会在里面的一个子档案夹中存放虚拟磁盘、设定档案等</li> <li>建议改到空间充裕的分区,虚拟机档案体积通常很大。</li> </ul> </li> <li>VRDP Authentication Library <ul> <li>虚拟机软件自带远程桌面的认证库选择</li> <li>预设就好</li> </ul> </li> </ul> </li> <li>Input <ul> <li>快捷键设定</li> <li>只有 Virtual Machine 的 Host Key Combo 常用,预设右侧Ctrl,不习惯可以改。</li> </ul> </li> <li>Update <ul> <li>更新策略和周期</li> <li>当然不自动检查更新</li> </ul> </li> <li>Language <ul> <li>介面语言</li> <li>这里可以改成中文,但不是每个OS都有效,翻译也不全面,所以本文以英文为准。</li> </ul> </li> <li>Display <ul> <li>虚拟显示器的设定</li> <li>预设就好</li> </ul> </li> <li>Proxy <ul> <li>虚拟机软件本身的代理设定,和虚拟机无关。</li> </ul> </li> </ul> <h2 id="vm设定详解">VM设定详解 </h2><p>每个VM都有一套单独的设定档案,在对应档案夹中的 <code>VMname.vdi</code>。 虚拟机条目右键或上方点击 Settings 进入设定。</p> <ul> <li>General <ul> <li>Identity <ul> <li>设定名称和OS类型</li> <li>OS类型会自动调整之后设定的兼容性提示</li> </ul> </li> <li>Features <ul> <li>截图档案夹、剪贴板、拖拽</li> <li>启用与否可以运行时修改</li> <li>启用后需要增强工具才能实际有效</li> </ul> </li> <li>Description <ul> <li>给虚拟机写一些说明</li> </ul> </li> <li>Disk Encryption <ul> <li>虚拟磁盘加密</li> <li>预设不启用适合绝大多数用户</li> </ul> </li> </ul> </li> <li>System <ul> <li>Motherboard <ul> <li>Base Memory <ul> <li>内存</li> <li>可以设定超越物理机真实内存,当然不能真用超。</li> </ul> </li> <li>Boot Device order <ul> <li>启动顺序,可以把Floppy去掉了</li> </ul> </li> <li>Chipset <ul> <li>晶片组,预设即可</li> </ul> </li> <li>TPM Version <ul> <li>加密模组,Win11需要2.0</li> </ul> </li> <li>Point Device <ul> <li>鼠标,预设即可</li> </ul> </li> <li>Features <ul> <li>选好OS类型这里会自动设置好</li> <li>Linux需要UTC</li> <li>Win11需要UEFI和SecureBoot</li> </ul> </li> </ul> </li> <li>Processor <ul> <li>CPU核心数</li> <li>可设置超越物理真实规模,当然实际使用超不了,可以骗骗测试的OS</li> <li><code>ested VT-x/AMD-v</code> 如果启用则虚拟机中可以再装虚拟机并加速。</li> </ul> </li> <li>Acceleration <ul> <li>CPU加速方式,虚拟机跑的跟物理机差不多快就靠这个。</li> <li>预设即可,Linux通常会是KVM,Windows则为Hyper-V。</li> </ul> </li> </ul> </li> <li>Display <ul> <li>Screen <ul> <li>Video Memory 显存建议直接拉到最大。</li> <li>Number of Virtual Monitors 虚拟显示器数目,预设1即可。</li> <li>Scale Factor 放缩</li> <li>Graphics Controller 虚拟显卡,根据OS类型预设的即可。</li> <li>3D Acceleration 运行3D游戏需要,但VirtualBox这方面很弱,几乎不可用。</li> </ul> </li> <li>Remote Display <ul> <li>虚拟机软件直接提供的远端桌面没什么用</li> </ul> </li> <li>Recording <ul> <li>录屏一般用不到</li> </ul> </li> </ul> </li> <li>Storage <ul> <li>Controller控制器类型按照OS类型预设的即可</li> <li>硬盘可以虚拟成HDD或SSD</li> <li>光驱通常只用来安装系统和增强工具</li> </ul> </li> <li>Audio <ul> <li>Host Audio Driver <ul> <li>主机驱动,预设即可,选错了主机放不出VM的声音。</li> </ul> </li> <li>Audio Controller <ul> <li>虚拟声卡</li> <li>按OS类型的预设即可,错了VM内OS不识别</li> </ul> </li> <li>Features <ul> <li>通常仅输出比较隐私友好</li> </ul> </li> </ul> </li> <li>Network <ul> <li>共可配置4块网卡</li> <li>Attached to 网络模式 <ul> <li>NAT 预设通过主机上网,虚拟机可以通过网关地址访问主机,主机不能访问虚拟机。</li> <li>Bridged Adapter 桥接,将虚拟机直接和所桥接的物理网卡平级暴露给外部,其他网络设备可以直接访问VM。</li> <li>Internal Network 内部网络,只能虚拟机共用互联,和主机或外部都不通。</li> <li>Host-only Adapter 主机网络,虚拟机和主机上的一块虚拟网卡组网互联,不直接外联。</li> <li>Generic Driver 通用驱动,扩展用法一般用不到。</li> <li>NAT Network 更高级的NAT模式设定,提供主机访问虚拟机等方法。</li> <li>Not attached 只虚拟接口不插入网卡。</li> </ul> </li> <li>Name 网卡名称 <ul> <li>选择同样名称虚拟网卡的虚拟机可以互联</li> </ul> </li> <li>Adapter Type <ul> <li>虚拟网卡型号</li> <li>预设 <code>Intel PRO/1000 MTDesktop (82540EM)</code> 兼容性最好</li> <li>Linux Guest 选 virtio-net 可能性能更好</li> </ul> </li> <li>Promiscuous Mode 黑客功能预设即可</li> <li>MAC Address <ul> <li>MAC地址可以随意设定,建议预设的080027开头的即可。</li> </ul> </li> </ul> </li> <li>Serial Ports <ul> <li>古老的序列埠,通常用不到。</li> </ul> </li> <li>USB <ul> <li>不想启用USB功能,需要把鼠标改成PS/2。</li> <li>USB2.0/3.0支援需要安装专有扩展包,免费但不完全开源。</li> <li>这里还可以将一些主机的USB附件直接绑定到VM。</li> </ul> </li> <li>Shared Folders <ul> <li>共享档案夹,有只读模式,需VM安装增强工具起效。</li> </ul> </li> <li>User Interface <ul> <li>一些窗口排版、按钮之类的设置,可以运行时修改。</li> </ul> </li> </ul> <h2 id="vm装机">VM装机 </h2><ul> <li>New一个新的VM</li> <li>初始设定 <ul> <li>首先起名字并设定OS类型,会决定之后的预设和兼容性提示。</li> <li>对于支援的系统可以设定自动安装,建议都手动,略过此项。</li> <li>硬件设定内存和CPU核心数,后期都好改。</li> <li>虚拟磁盘设定很重要,尤其是档案类型和容量后期修改很麻烦。</li> </ul> </li> <li>参考上一节设定VM并指定系统ISO</li> <li>像在物理机上一样用虚拟光盘安装系统</li> <li>[可选]安装增强工具 <ul> <li>LinuxVM 依赖内核头档案可不提供,剪切板/拖拽等常用功能仍然可用。</li> <li>为了便捷使用共享档案夹等功能Linux客户机需要将user添加到vboxsf组。 <ul> <li><code>sudo usermod -aG vboxsf $USER</code></li> </ul> </li> <li>Windows7 可能遇到驱动签名问题,7.x版本强行确认安装即可。</li> </ul> </li> </ul> <h2 id="隔离指南">隔离指南 </h2><p>虚拟机的主要用途就是模拟测试OS,或者隔离不可信的程序。</p> <p>很多发行版借助虚拟机技术来实现隐私强化和匿名访问,如果自行配置虚拟机隔离环境可以参考这些发行版。 其中比较知名的推荐参考是 <a class="link" href="https://www.qubes-os.org" target="_blank" rel="noopener" >Qubes OS</a> 和 <a class="link" href="https://www.whonix.org/" target="_blank" rel="noopener" >Whonix</a></p> <h2 id="实用技巧">实用技巧 </h2><h3 id="压缩虚拟磁盘占用空间">压缩虚拟磁盘占用空间 </h3><p>虚拟磁盘通常几十GiB大小,预设的vdi格式会只存储用过的(非全0)的部分而减小真实硬盘占用。 但随着使用体积会越来越大,但VirtualBox的图形界面没有VMware那样的虚拟磁盘压缩功能。 这就需要用命令行来进行 <code>vboxmanage modifyhd --compact 虚拟磁盘路径.vdi</code> 在压缩前可以打开虚拟机用 <a class="link" href="https://learn.microsoft.com/en-us/sysinternals/downloads/sdelete" target="_blank" rel="noopener" >SDelete(Windows)</a> 或 dd(Linux/MacOS) 将闲置空间写入全0.</p>

2026/6/20
阅读更多

Firefox 基本设定参考

<img src="https://localfreedom.pages.dev/img/mozilla-firefox-logo-evolution.png" alt="Featured image of post Firefox 基本设定参考" /><h2 id="简介">简介 </h2><p>Firefox 是当前最知名、最重要的自由开源浏览器,由 Mozilla 基金会开发维护。 Firefox 使用独立的 Gecko 渲染引擎,而非常见的 Chromium 或 WebKit,这也使得 Firefox 是主流浏览器中唯一不依赖大公司核心引擎的浏览器,也成为大多数提倡自由的开源OS的默认浏览器。</p> <p>这里主要记录Firefox的基本配置作为日常使用参考。</p> <h3 id="更新周期">更新周期 </h3><p><del>wiki.mozilla.org/Release_Management/Calendar</del> <a class="link" href="https://whattrainisitnow.com/calendar/" target="_blank" rel="noopener" >https://whattrainisitnow.com/calendar/</a></p> <p>Firefox 大版本周期更新并在周期中提供补丁。 还有特色的长期支持版 Extended Support Release,ESR则在同版本号大版本更新结束后,一般继续提供安全补丁直至下一个ESR到来满3个周期。 Android版本68及之前跟随ESR走,之后滚动更新暂无长期支持版。</p> <h2 id="下载">下载 </h2><p>官方FTP,GIthub,开源镜像站等都可下载。 这里当然推荐ESR长期支持版,只做安全更新不加功能引入Bug,适合局域自由。</p> <ul> <li>桌面端各版本离线安装包 <ul> <li>推荐<a class="link" href="https://ftp.mozilla.org/pub/firefox/releases" target="_blank" rel="noopener" >官方FTP</a></li> <li>支持XP最终版本52.9.0-esr</li> <li>支持Win7最终版本115.x.x-esr并不断延长支持周期</li> </ul> </li> <li>移动端Android版 <ul> <li><a class="link" href="https://ftp.mozilla.org/pub/fenix/releases/" target="_blank" rel="noopener" >官方FTP安卓版</a>父目录不同。</li> <li><a class="link" href="https://sunsite.icm.edu.pl/pub/www/firefox-android" target="_blank" rel="noopener" >波兰学校镜像</a></li> </ul> </li> </ul> <h2 id="profile">Profile </h2><p>可以将不同用途的网络浏览分配不同的 Profile 进行隔离避免广告追踪,强化隐私防护。 比如生活和工作在不同的 Profile 配置不同的按钮、策略等。</p> <p>新版Firefox已经在启动时有了 Profile 管理介面,但ESR还是直接进入预设Profile。 ESR或老版本启动 Profile 管理介面需要通过命令行执行并添加参数 <code>-ProfileManager</code></p> <h2 id="介面定义">介面定义 </h2><ul> <li>顶部右侧三个横线下拉设定菜单-&gt;<code>More tools</code>-&gt;<code>Customize toolbar</code>,考虑重要性、固定性、常用程度,从右到左参考 <ul> <li>Extensions、New private window、Sidebars、Screenshot、Downloads</li> <li>为了 Local Freedom 不要 Pocket 和 Account。</li> </ul> </li> <li>添加搜索引擎 <ul> <li>打开搜索引擎首页,如 <code>www.startpage.com</code>, <code>www.youtube.com</code></li> <li>搜索框或地址栏会出现绿色小加号点击即可添加搜索引擎</li> </ul> </li> </ul> <h2 id="基本设定">基本设定 </h2><p>about:preferences</p> <ul> <li>General <ul> <li>Downloads <ul> <li>Always ask you where to save files</li> </ul> </li> <li>Updates <ul> <li>手动</li> </ul> </li> <li>Network Settings <ul> <li>Proxy DNS when using SOCKS v5</li> </ul> </li> </ul> </li> <li>Search <ul> <li>Add search bar in toolbar</li> <li>Default Search Engine <ul> <li>Startpage</li> </ul> </li> </ul> </li> <li>Privacy &amp; Security <ul> <li>Enhanced Tracking Protection <ul> <li>Strict</li> <li>Always &ldquo;Do Not Track&rdquo;</li> </ul> </li> <li>Cookies and Site Data <ul> <li>Delete cookies and site data when Firefox is closed</li> </ul> </li> <li>History <ul> <li>Use custom settings for history <ul> <li>Remember browsing and download history</li> <li>Remember search and form history</li> <li>Clear history when Firefox closes <ul> <li>History <ul> <li>102esr-115esr Cookie与之前设定不关联变为关联</li> </ul> </li> <li>Data <ul> <li>默认即可,115esr开始站点设定与之前设定关联</li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> <li>Firefox Data Collection and Use <ul> <li>常用和涉及帐号的时候都不选</li> <li>偏测试和仅浏览环境都选做贡献</li> </ul> </li> <li>HTTPS-Only Mode <ul> <li>Enable HTTPS-Only Mode in all windows</li> </ul> </li> <li>Enable secure DNS using <ul> <li>Increased Protection 优先使用DoH</li> <li>provider 之前版本预设的Cloudflare如今需要联网从Mozilla官方获取 <ul> <li>预设 <a class="link" href="https://mozilla.cloudflare-dns.com/dns-query" target="_blank" rel="noopener" >https://mozilla.cloudflare-dns.com/dns-query</a></li> <li><a class="link" href="https://firefox.dns.nextdns.io/" target="_blank" rel="noopener" >https://firefox.dns.nextdns.io/</a></li> <li>谷歌 https://8.8.8.8/dns-query</li> </ul> </li> </ul> </li> </ul> </li> </ul> <h2 id="扩展">扩展 </h2><p>Firefox有Mozilla自家扩展,还有Mozilla主动审计后推荐的扩展,一般主要安装这两类扩展,且通常不启用。 其他扩展主要可分为商店中不被推荐的扩展和桌面应用需要的扩展,如安装其他扩展,建议新建Profile。 离线扩展建议安装在离线使用的 Profile 中,<a class="link" href="https://localfreedom.pages.dev/p/firefox%E6%B5%8F%E8%A7%88%E5%99%A8%E7%A6%BB%E7%BA%BF%E4%BD%BF%E7%94%A8%E6%89%A9%E5%B1%95%E6%8E%A8%E8%8D%90/" >本博客之前做过推荐</a>。</p> <ul> <li>Mozilla自家扩展</li> <li>Mozilla主动审计后推荐扩展 <ul> <li>SingleFile, Feedpro, Flagfox, EPUBReader, Emoji</li> </ul> </li> <li>三方应用配合扩展 <ul> <li>JoplinWebClipper, Zotero, Kiwix</li> </ul> </li> <li>商店中普通扩展 <ul> <li>Tampermonkey</li> </ul> </li> <li>离线扩展 <ul> <li>OfflineQRCodeGenerator, EPUBReader, Emoji, Kiwix, PageAssist</li> </ul> </li> </ul> <h2 id="高级设定">高级设定 </h2><p>about:config</p> <ul> <li>修改 User Agent <ul> <li>general.useragent.override</li> </ul> </li> <li>解除安装扩展的认证要求(可以安装下载的zip包) <ul> <li>xpinstall.signatures.required=false</li> </ul> </li> </ul> <h2 id="加固">加固 </h2><p>user.js玩法太高级,之后单写一篇介绍。</p> <h2 id="移动端">移动端 </h2><p>官方Android的稳定版已无法打开 <code>about:config</code>。</p> <p>开发板和隔夜版能使用 <code>about:config</code> 设定 DoH,从147版本开始稳定版UI介面设定支持DoH。</p> <p>推荐使用完全开源社区版本 <a class="link" href="https://f-droid.org/packages/org.mozilla.fennec_fdroid/" target="_blank" rel="noopener" >Fennec F-droid</a> 去除了数据收集还可以打开 <code>about:config</code>。</p>

2026/6/7
阅读更多

E-book 资源站分享

<img src="https://localfreedom.pages.dev/img/Ebook.jpg" alt="Featured image of post E-book 资源站分享" /><p>离线生活不能缺少阅读,电子书的出现让我们可以相对廉价且方便的购置并存储所需要的书籍。 为了能持续获得自己喜欢的、所需的书目资料的电子版,需要电子出版市场蓬勃发展,我们要购买可离线阅读的正版书目,让把作品提供电子版的作者和出版商获得应有的回报。 但还是有很多资源没有正式的电子版或采用租赁方式提供电子版,或者是已经购买过纸质书但难以保存。</p> <p><strong>这里分享一些电子资料搜索下载站点,便于读者收纳自己喜爱的电子书和其他资料,建立个人化的离线图书馆,享受不受在线服务约束监视的自由阅读。</strong></p> <h2 id="annas-archive">Anna&rsquo;s Archive </h2><p>目前域名 <a class="link" href="https://annas-archive.gl/" target="_blank" rel="noopener" >https://annas-archive.gl/</a></p> <p>安娜的档案(Anna&rsquo;s Archive)是一家自由、非营利的影子图书馆元搜索引擎,由假名Anna的人在得知美国当局查封 Z-Library 后所创建。 该网站汇集了Z-library、Sci-Hub、LibGen等影子图书馆的资源索引,自称为&quot;人类历史上最大的真正开放的图书馆&quot;,是如今最广泛、最好用的电子书下载平台。 尽管该平台不直接存储盗版资源,但因其索引广泛规模庞大仍然被各国执法机构打击,<a class="link" href="https://annas-archive.org/" target="_blank" rel="noopener" >原始域名</a>也遭到查封。</p> <h2 id="library-genesis">Library Genesis </h2><p>由于遭到各国打击,目前没有稳定可用的域名,博主认为完全被 Anna&rsquo;s Archive 取代。</p> <p>用默认的LibGen搜索找各专业教科书几乎百发百中。支持诸如Author, ISBN, MD5等等高级搜索方法供你花式搜书。 LibGen 早期都是一群开源自由主义者自发架设私服做镜像来支撑存储池的(致敬在背后默默付出的每一位志士仁人),后来LibGen的存储池升级到了IPFS的分布式网络上,稳定性大增。</p> <p>在其下载镜像列表中有一个 <strong>Z-Library</strong> 本身也是一个著名的电子书分发网站,不过 Z-lib 和 LibGen 的重合度很高而且是个商业网站所以博主并不推荐,感兴趣的朋友可以看下 reddit 社区对Z-lib的评价。</p> <h2 id="sci-hub">Sci-Hub </h2><p>由于遭到各国打击,目前没有稳定可用的域名。</p> <p>专注学术刊物和文章的免费分发,由一位来自哈萨克斯坦的女生创办。 与Libgen其实是二位一体的存在。很多后台接口和数据都是放在一起的,因为创办和维护这两个网站的都是同一群人。</p> <h2 id="pdfdrive"><del>PDFDRIVE</del> </h2><p>这个网站的存书量很大,和LibGen重合度比较低,所以主要是能够互补使用。日文书的命中率要略高于LibGen。 2021年关停后已彻底无法访问。</p> <h2 id="welib">WeLib </h2><p><a class="link" href="https://welib.org/" target="_blank" rel="noopener" >https://welib.org/</a></p> <p>疑似 PDFDRIVE 的继承,提供上亿的图书文章下载,以PDF格式为主,有一些整理合并。</p> <h2 id="project-gutenberg">Project Gutenberg </h2><p><a class="link" href="https://www.gutenberg.org/" target="_blank" rel="noopener" >https://www.gutenberg.org/</a></p> <p>专注版权失效(公有领域)的经典著作,几乎所有旧书都能找到高质量的版本,是一个稳定高质量的电子书获取平台。 当然盗版书籍这里是没有的。</p> <h2 id="internet-archive">Internet Archive </h2><p><a class="link" href="https://archive.org/" target="_blank" rel="noopener" >https://archive.org/</a></p> <p>这个网站相信大家都不会太陌生,有人叫它网络档案馆。 最出名的功能应该是时光机,可以回溯查看网页曾经的样子。 我觉得它是互联网精神初始之火在当今最后的延存,是信仰者仅存的圣城。 这里有各种资源的收录,包罗万象,合规方面也比较稳妥,没有太激进的盗版分发。 在电子书方面,这里难得的集成了一些评论功能。</p> <p>IA的搜书可以直接使用高级搜索功能,也可以用下面这些入口简化操作难度:</p> <ul> <li>eBooks and Texts of Internet Archive: <a class="link" href="https://archive.org/details/texts" target="_blank" rel="noopener" >https://archive.org/details/texts</a></li> <li>Internet Archive Books collection: <a class="link" href="https://archive.org/details/books" target="_blank" rel="noopener" >https://archive.org/details/books</a></li> <li>Openlibrary by Internet Archive: <a class="link" href="https://openlibrary.org/" target="_blank" rel="noopener" >https://openlibrary.org/</a></li> </ul> <p>很多大型机构组织的过期内部文档、专业技术手册都能在IA找到各种格式下载并可以在线预览。</p> <h2 id="其他特殊的获取渠道">其他特殊的获取渠道 </h2><h3 id="the-eye">The Eye </h3><p><a class="link" href="https://the-eye.eu/public/Books/" target="_blank" rel="noopener" >https://the-eye.eu/public/Books/</a></p> <blockquote> <p>官方介绍:The-Eye is a non-profit, community driven platform dedicated to the archiving and long-term preservation of any and all data including but by no means limited to&hellip; websites, books, games, software, video, audio, other digital-obscura and ideas.</p> </blockquote> <p>原本是 Retro Gamer 囤积分享 ROM 的档案库,后来逐渐扩展到各种方面的资料。 图书存档分类下保存了很多出于各种原因被关停封禁的档案库网站的整站资源备份,基本上就是个在跑在网际网络上的暗网资料库。 比如神秘学、阴谋论、无政府主义、军政相关的美国禁书,该看的不该看的各种内容什么都有。 但这索引对找书就不友好了,建议搭配第三方搜索引擎。 此外,The Eye的维护团队也参与到了Sci-Hub拯救行动当中,因为两个社区的核心理念都非常的相近。</p> <h3 id="higher-intellect">Higher Intellect </h3><p><a class="link" href="https://preterhuman.net/" target="_blank" rel="noopener" >https://preterhuman.net/</a></p> <p>这是一例还没被取缔的档案网站,自带搜索和目录索引,由于是现存状态所以比在 The Eye 里翻找全站备份要易用得多。 各种专业技术文档,能随便学的和不能随便学的技术都有。</p> <h3 id="global-security">Global Security </h3><p><a class="link" href="https://www.globalsecurity.org/" target="_blank" rel="noopener" >https://www.globalsecurity.org/</a></p> <p>专注军事和安全领域,有各种军事手册和情报资料。 军事爱好者应该会很感兴趣。</p> <h3 id="archive-of-our-own">Archive of Our Own </h3><p><a class="link" href="https://archiveofourown.org/" target="_blank" rel="noopener" >https://archiveofourown.org/</a></p> <p>一个亚文化档案库,曾经只闻名于同人圈的AO3。 其实每个开放社区建立的档案库都是非常伟大的,都有着各自的曲折故事,AO3只是其中之一。</p> <h3 id="the-trove"><del>The Trove</del> </h3><p>Archive桌游相关的文档、手册、地图等等资料。</p> <p>原网站已停止运营可从互联网档案馆了解并下载部分内容 <a class="link" href="https://web.archive.org/web/20210506160042/https://thetrove.is/Books/" target="_blank" rel="noopener" >https://web.archive.org/web/20210506160042/https://thetrove.is/Books/</a></p> <h3 id="海盗湾">海盗湾 </h3><p><a class="link" href="https://thepiratebay.org/index.html" target="_blank" rel="noopener" >https://thepiratebay.org/index.html</a></p> <p>全世界最知名、最经典的 P2P 资源站,汇集了海量资源,尤其是各种影视剧、游戏等。 不是专门的电子书网站,不那么好搜索到电子书资源,还可能没有人做种上传。</p> <h3 id="rutracker">RuTracker </h3><p><a class="link" href="https://rutracker.org" target="_blank" rel="noopener" >https://rutracker.org</a></p> <p>北极熊的盗版资源索引站。 不要一想bt下载就觉得只能下影视音乐资源,也不要一想下书就到网站上找。 很多书都能在p2p网络上找到资源,只是不保证一定能有人做种,所以只是放最后提一下。 如果是老练的电驴用户或者PT社区用户的话资源获取渠道会更宽的。</p>

2026/6/4
阅读更多

Ubuntu中的浏览器无法播放视频

<h2 id="what">What </h2><p>Ubuntu的安装映像越来越大了,所以选择了最小化安装以节省磁盘空间。 打开预设的浏览器进入视频网站,视频区域黑屏无法播放。</p> <h2 id="why">Why </h2><p>Ubuntu不愿意在预设安装中包含 non-free 的多媒体元件。 播放的视频的编码格式在Ubuntu中没有对应的解码器。 浏览器或视频播放前端直接调用系统工具找不到,且通常不返回错误原因。</p> <h2 id="how">How </h2><p>安装视频解码包 <strong><code>sudo apt install ubuntu-restricted-extras</code></strong></p> <p>这是一个 <code>meta package</code> 会关联安装一系列多媒体元件。 以前还会自动装上邋遢的Flash,2026年已经不会了。</p> <h2 id="where">Where </h2><p>经测试在Kubuntu等衍生版本没有此问题,可能是Ubuntu的最小化安装或预设安装将不完全开源的视频解码器排除在外了。</p>

2026/5/24
阅读更多

Fcitx5输入法中文标点设定

<img src="https://localfreedom.pages.dev/img/fcitx.png" alt="Featured image of post Fcitx5输入法中文标点设定" /><h2 id="fcitx-introduction">Fcitx Introduction </h2><p>非字母文字用户使用计算机都需要输入法。 在Linux类OS中,Fcitx输入法框架是最主流的方案之一,也是目前发展最好的框架,其基于Qt开发与KDE桌面非常搭。</p> <p>fcitx和fcitx5有些版本默认的中文标点和Windows上的使用习惯不一致,比如</p> <ul> <li>[ ·</li> <li>] 「 」</li> </ul> <h2 id="设定方式">设定方式 </h2><p>本文介绍配置Fcitx输入法框架标点符号映射关系的方法,如果默认不习惯,或者有自己喜欢的风格,可以自定义标点符号按键的中文/全角字符。</p> <p>Fcitx系列的中英文标点映射是在 <code>punc.mb.zh_CN</code> 中设定的,可以修改。</p> <ul> <li>fcitx在 <code>/usr/share/fcitx/data/punc.mb.zh_CN</code></li> <li>fcitx5为 <code>/usr/share/fcitx5/punctuation/punc.mb.zh_CN</code></li> </ul> <p>以上是全局设定,建议修改用户设定。</p> <ul> <li>fcitx在 <code>~/.config/fcitx/data/punc.mb.zh_CN</code></li> <li>fcitx5为 <code>~/.local/share/fcitx5/punctuation/punc.mb.zh_CN</code></li> </ul> <p>设定文件格式很简单,就是每行一个英文标点,空格后是对应的中文标点。 对于引号这样一对多的关系,只要接着用空格隔开多个中文标点即可实现按多次依次出现不同的中文标点,实现引号配对等需要。</p> <p>设定好了 <code>fcitx5 -r</code> 重启输入法框架即可,对于其承载的各种中文输入法均有效。</p> <h2 id="参考">参考 </h2><p>修改默认设定,需要合适的预设才能输入相应的符号,对于默认设定中没有的标点就变成了先有鸡还是先有蛋的问题。 这里给出参考设置,省去各位读者找符号的麻烦。</p> <ul> <li>推荐设定</li> </ul> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span><span class="lnt">14 </span><span class="lnt">15 </span><span class="lnt">16 </span><span class="lnt">17 </span><span class="lnt">18 </span><span class="lnt">19 </span><span class="lnt">20 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">. 。 </span></span><span class="line"><span class="cl">, , </span></span><span class="line"><span class="cl">? ? </span></span><span class="line"><span class="cl">&#34; “ ” </span></span><span class="line"><span class="cl">: : </span></span><span class="line"><span class="cl">; ; </span></span><span class="line"><span class="cl">&#39; ‘ ’ </span></span><span class="line"><span class="cl">&lt; 《 </span></span><span class="line"><span class="cl">&gt; 》 </span></span><span class="line"><span class="cl">\ 、 </span></span><span class="line"><span class="cl">! ! </span></span><span class="line"><span class="cl">$ ¥ </span></span><span class="line"><span class="cl">^ …… </span></span><span class="line"><span class="cl">_ —— </span></span><span class="line"><span class="cl">( ( </span></span><span class="line"><span class="cl">) ) </span></span><span class="line"><span class="cl">[ 【 </span></span><span class="line"><span class="cl">] 】 </span></span><span class="line"><span class="cl">~ ~ </span></span><span class="line"><span class="cl">^ …… </span></span></code></pre></td></tr></table> </div> </div><ul> <li>参考字符</li> </ul> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span><span class="lnt">14 </span><span class="lnt">15 </span><span class="lnt">16 </span><span class="lnt">17 </span><span class="lnt">18 </span><span class="lnt">19 </span><span class="lnt">20 </span><span class="lnt">21 </span><span class="lnt">22 </span><span class="lnt">23 </span><span class="lnt">24 </span><span class="lnt">25 </span><span class="lnt">26 </span><span class="lnt">27 </span><span class="lnt">28 </span><span class="lnt">29 </span><span class="lnt">30 </span><span class="lnt">31 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">~ ~ </span></span><span class="line"><span class="cl">` · </span></span><span class="line"><span class="cl">! ! </span></span><span class="line"><span class="cl">@ ※ </span></span><span class="line"><span class="cl"># □ </span></span><span class="line"><span class="cl">$ ¥ </span></span><span class="line"><span class="cl">% ␣ </span></span><span class="line"><span class="cl">^ …… </span></span><span class="line"><span class="cl">&amp; ÷ </span></span><span class="line"><span class="cl">* × </span></span><span class="line"><span class="cl">( ( ) </span></span><span class="line"><span class="cl">) 〔 〕 </span></span><span class="line"><span class="cl">_ —— </span></span><span class="line"><span class="cl">- - </span></span><span class="line"><span class="cl">+ + </span></span><span class="line"><span class="cl">= = </span></span><span class="line"><span class="cl">| ≠ </span></span><span class="line"><span class="cl">\ 、 </span></span><span class="line"><span class="cl">{ 『 』 </span></span><span class="line"><span class="cl">[ 「 」 </span></span><span class="line"><span class="cl">} 〖 〗 </span></span><span class="line"><span class="cl">] 【 】 </span></span><span class="line"><span class="cl">: : </span></span><span class="line"><span class="cl">; ; </span></span><span class="line"><span class="cl">&#34; “ ” </span></span><span class="line"><span class="cl">&#39; ‘ ’ </span></span><span class="line"><span class="cl">&lt; 《 》 </span></span><span class="line"><span class="cl">&gt; 〈 〉 </span></span><span class="line"><span class="cl">, , </span></span><span class="line"><span class="cl">. 。 </span></span><span class="line"><span class="cl">? ? </span></span></code></pre></td></tr></table> </div> </div>

2026/5/14
阅读更多

关于Windows汇总累积更新以Win7为例

<img src="https://localfreedom.pages.dev/img/microsoft-update-catalog.jpg" alt="Featured image of post 关于Windows汇总累积更新以Win7为例" /><h2 id="前言">前言 </h2><p>【转】 这是积累的一篇老文,可能大量参考了他人的文章,但都经过博主实践检验。 可以作为在虚拟机里回味Win7准备补丁的参考。</p> <h2 id="认识误区">认识误区 </h2><p>及时打补丁特别是操作系统的安全补丁是很有很有必要的。所以,我一直都开启着Windows的自动更新检查,也很少遇到因为打补丁引起其他问题。 然而,一旦重装系统,打补丁就非常头疼,因为太慢了。但是又不放心第三方的打补丁软件,必竟该打哪些补丁还是开发方才最具权威性。 所以,2016年5月微软发布Windows 7 SP1 和 Windows Server 2008 R2 SP1 的方便使用汇总更新(KB3125574)时,赶紧制作了一张整合这个补丁的镜像,以为像是发布了SP2一样,安装之后自动更新会一个补丁都没有。然而,用这个镜像装出来的系统当时自动更新大约找到了四十几个补丁。 仔细想一下,也好理解,发布SP版本就相当于发布一个新产品,就会有针对该产品的维护周期,那么发布时应该暂时不会有补丁。但是汇总补丁表明产品并没有变,那么找到没有汇总进去的补丁就很正常。 汇总补丁不大可能把所有的补丁都汇总,必竟一个挺复杂的软件由多个可选择的部分组成,如果一个用户根本没有安装某个部分,那么针对这一部分的补丁自然就打不上去,即便忽略这个问题,强制打了补丁,那用户以后再安装这一部分怎么算?从补丁上看是已经打过补丁了,但实际显然是没有打的,就乱套了。 所以,汇总更新很显然只能包含系统核心部分或者说所有人都必须安装的部分的补丁。 总之,汇总更新不能也不可能汇总所有的补丁,以前认为汇总应该是所有补丁的汇总明显是一个认识误区。</p> <h2 id="汇总累积更新早期使用经历">汇总累积更新早期使用经历 </h2><p>随着时间的推移,使用集成了方便汇总更新(KB3125574)的安装盘安装的系统,自动更新检查出来的补丁数量越来越多,记得有一次看到检查出二百多个补丁。</p> <p>特别是2016年10月微软采用月度累积汇总方式发布更新后还检查出这么多补丁就非常不理解了。因为无论是从字面上理解还是网上的介绍,每个月的累积汇总更新都包含了上一个月的累积汇总更新,那么最新的累积汇总更新应该就包含了所有补丁至少是从采用累积更新方式以来的所有补丁,即便汇总更新只能包含核心的补丁,但外围的补丁应该也不会太多,而且也没有启用很多功能,就不应该检查出太多补丁啊。所以曾经认为,所谓的累积更新方式是骗人的。 直到由于 Windows 7 和 Windows Server 2008 R2 技术支持已到期,准备自己汇总一下默认情况下系统会自动打多少补丁,这些补丁应该就是最基本的,集成到安装盘里面的话,基本就不用纠结补丁问题了,因为不会再有补丁了。</p> <p>结果才惊奇地发现,虽然安装完系统后检查出一百七十几个补丁,但是更新完之后实际只安装了几十个而已,后面陆陆续续又检查到一些补丁,但是这些补丁打了之后,总的已安装更新数量并没有增加,仍然是很稳定的几十个(60个左右),这就说明后面的补丁的确是替代了前面的补丁,并且连已安装补丁列表都被替代了。也就是说累积补丁是真的。</p> <h2 id="剖析汇总累积更新">剖析汇总累积更新 </h2><h3 id="汇总累积更新与原有单体更新">汇总累积更新与原有单体更新 </h3><p>那么问题来了,既然累积补丁是真的,那为什么还要检查出一两百个补丁来而不是直接就安装最新的累积补丁呢? 仔细琢磨了半天才想明白,直接装最新的累积补丁手工安装可以但是自动安装不行或者说行不通。为什么呢?</p> <p>首先,补丁是针对存在的问题进行修补,那么问题是否存在总要判断一下,至少没理由用旧的版本去替换新的版本吧。也就是补丁是要有先决条件的,不满足先决条件就不执行修补,这样虽然有问题至少还可以用,如果随便修改反而可能造成混乱而不可用。 其次,补丁可能针对同一个地方进行多次修补,这样的话,每个补丁只能把上一个版本作为先决条件,否则,如果把更早的版本作为先决条件,那么相对较新的版本反而得不到更新了。所以,自动更新只能依次更新,而人工更新的话,就可以跳过中间的更新而直接用最新的版本来更新。 当然,这里用文件版本号作为先决条件来判断只是举个例子,实际的判断肯定更复杂更严谨,除了文件版本号可能还有其他条件,仅就版本号来说有可能是小于x.x.x或者等于x.x.x等等,并且打补丁也不一定就是替换文件,有可能是修改某个配置参数而已。</p> <p>总之,对于自动更新,如果随意跳过某个中间补丁,有可能这个补丁能成功打上,但是由于可能由于漏掉了中间的补丁,造成后续无法继续更新。 所以要确保自动更新能持续正常工作,必须很严格的依次更新,而人工更新的话,出了问题再人工撤回呗。</p> <p>这就是安装系统后检查出很多补丁,但是补丁打完之后已安装的补丁数量少得多的原因,也是我们在 Windows 7 时代感受不到累积补丁好处的原因,因为系统并不原生采用积累更新方式,汇总积累更新只是为离线自由补丁提供方便,并不能取代单个补丁。</p> <h3 id="更新的更新">更新的更新 </h3><p>顺便补充一下服务堆栈更新(SSU)的概念,服务堆栈更新往往是新补丁的先决条件之一。 服务堆栈更新本身也有先决条件,就是上一次的服务堆栈更新。也就是服务堆栈更新把更新的范围分成了一段一段的,只有把前面的补丁打了,才能打后面的。 这样就防止自动更新一次更新太多,老是更新不完。当然,更新程序本身也需要升级也是服务堆栈更新存在的原因。 由于它是新补丁的先决条件,所以不会包含在累积更新里,是单独发布的。 SSU有可能代替以前的SSU,有时候又不会,所以哪些需要哪些不需要还得手工安装或集成进行测试。 在原始安装盘上集成较新的SSU或者在用原始安装盘新装的系统上直接安装了较新的SSU之后,由于更新堆栈变长了,前几次检查更新往往会失败,需要多检查几次才行。而逐步更新上来的话,虽然更新堆栈仍然变长,但是以前的补丁已经打过了,补丁信息也已经下载过了,所以也不太会出现检查更新失败的情况。</p> <h3 id="汇总累积更新也是一个补丁">汇总累积更新也是一个补丁 </h3><p>实际上,累积更新虽然包含了很多更新并且有自己的补丁号,但并不是说被汇总的补丁就不存在了,每一个具体的补丁都依然单独存在,汇总补丁作为一种方便的打补丁方式,只是把多个补丁集中在一起打而已,其先决条件必然也是所有补汇总补丁的先决条件,只要其中一个条件不满足,汇总补丁就不可能执行,这时候仍然可能分散的打其中一部分补丁的。</p> <p>根据前面的分析,使用自动更新的话,实际上是一个一个的小补丁打完,再打汇总补丁的。 如果汇总补丁的先决条件满足,那么其中的每个补丁实际上都已经打上了,汇总补丁可能也就是更新一下已安装补丁的信息而已,而如果汇总补丁的先决条件不满足,那也没关系,反正所有能补的都补上了。只不过如果出现这种情况,恐怕后续的汇总补丁都没办法打了,这可能也是某些电脑上仍然有几百个补丁的原因吧。</p> <p>另外,服务堆栈更新可以就看成是更新程序的升级,新的服务堆栈总是包含旧的服务,所以前面虽然说更新的范围是一段一段的,像一个栈,但是如果服务堆栈更新后不能使用老的补丁,那就相当于更新之后就不允许启用以前没有启用的功能了,因为这些已经无法更新了。 所以,直接把服务堆栈更新到最新是不应该有问题的。 当然,作为某一个补丁先决条件的即便较旧的SSU也需要打。</p> <h2 id="汇总累积更新的正确使用方式">汇总累积更新的正确使用方式 </h2><p>正确的打补丁的方式是:安装完系统之后先手工安装最新的累积补丁(当然还得先打这个累积补丁的先决条件需要的补丁)。这样才能节约打补丁的时间。当然,这样做并不会影响累积补丁中未包含的补丁的,因为系统自动更新仍然会从当前产品第一个补丁开始检查是否需要更新的。 原理前面已经说过了,为了保证自动更新的可持续和系统稳定,Windows 7 自动更新只能依次一个一个地检查,然后一个一个的安装,检查花的时间只会越来越长的,但关键的重要的补丁已经打好,其他的就让它后台慢慢地检查慢慢地安装吧,无所谓了。</p> <h2 id="以-win7-为例">以 Win7 为例 </h2><p>以 Windows 7 SP1 为基础,打补丁或者集成补丁的正确顺序应该是下面这样:</p> <ol> <li>安装KB3020369、KB3125574。(2015 年 4 月 Windows 7 和 Windows Server 2008 R2 的服务堆栈更新、Windows 7 SP1 和 Windows Server 2008 R2 SP1 的方便使用汇总更新)。</li> <li>安装KB4490628、KB4474419。(2019 年 3 月 12 日服务堆栈更新、2019 年 9 月 10 日最新 SHA-2 更新)这两个是最后的月度汇总更新的先决条件。</li> <li>安装KB4534310、KB4534314。(2020 年 1 月 14 日月度汇总和仅安全更新,<a class="link" href="https://support.microsoft.com/en-us/topic/windows-7-sp1-and-windows-server-2008-r2-sp1-update-history-720c2590-fd58-26ba-16cc-6d8f3b547599" target="_blank" rel="noopener" >累积汇总更新的历史</a>,但是,2020年1月14日是 Windows 7 和 Windows Server 2008 R2 的支持中止日期,之后的补丁只有购买了扩展安全更新 (ESU)的才能安装成功。</li> </ol> <p>其他的补丁就视需要而定,下面是用按上述顺序安装补丁后又自动检查安装的补丁列表。其中一些不适用于Windows 7一些不适用于Windows Server 2008 R2。其中包含了 <strong>NVMe</strong> 支持补丁KB2990941、KB3087873。</p> <table> <thead> <tr> <th>KID</th> <th>描述</th> <th>Windows 7 SP1</th> <th>Windows Server 2008 R2</th> </tr> </thead> <tbody> <tr> <td>KB977238</td> <td>用于Windows Server 2008R2 x64 Edition的HYPER-V最佳实践分析工具更新程序(KB977238)</td> <td>×</td> <td></td> </tr> <tr> <td>KB981390</td> <td>用于Windows Server 2008R2 x64 Edition的Windows Server Update Services最佳实践分析工具更新程序(KB981390)</td> <td>×</td> <td></td> </tr> <tr> <td>KB981391</td> <td>用于Windows Server 2008R2 x64 Edition的Active Directory Rights Management Services最佳实践分析工具更新程序(KB981391)</td> <td>×</td> <td></td> </tr> <tr> <td>KB981392</td> <td>用于Windows Server 2008R2 x64 Edition的应用程序服务器最佳实践分析工具更新程序(KB981392)</td> <td>×</td> <td></td> </tr> <tr> <td>KB2386667</td> <td>用于Windows Server 2008R2 x64 Edition的应用程序服务器最佳实践分析工具更新程序(KB2386667)</td> <td>×</td> <td></td> </tr> <tr> <td>KB2533552</td> <td>尝试安装Windows 7 SP1、Windows Server 2008 R2 SP1或Windows Embedded Standard 7 SP1时可阻止“0xC0000034”错误消息的更新已发布</td> <td></td> <td>×</td> </tr> <tr> <td>KB2534111</td> <td>“当您使用Windows 7 SP1安装Windows 7的”“计算机名不能包含数字”“错误信息集成安装介质”</td> <td></td> <td>×</td> </tr> <tr> <td>KB2545698</td> <td>运行Windows Vista、Windows Server 2008、Windows 7或Windows Server 2008 R2的计算机的Internet Explorer 9中以某些核心字体显示的文本模糊</td> <td></td> <td></td> </tr> <tr> <td>KB2547666</td> <td>在运行Windows 7或Windows Server 2008 R2的计算机上无法从Internet Explorer浏览历史记录中删除长URL</td> <td></td> <td></td> </tr> <tr> <td>KB2574819</td> <td>针对Windows 7 SP1和Windows Server 2008 R2 SP1中的DTLS添加支持的更新</td> <td></td> <td></td> </tr> <tr> <td>KB2592687</td> <td>Remote Desktop Protocol 8.0更新程序</td> <td></td> <td></td> </tr> <tr> <td>KB2603229</td> <td>32位版本的两个注册表项的值在64位版本的Windows 7或Windows Server 2008 R2中错误</td> <td></td> <td></td> </tr> <tr> <td>KB2667402</td> <td>MS12-020:终端服务器拒绝服务漏洞的安全更新说明:2012年3月13日</td> <td></td> <td></td> </tr> <tr> <td>KB2670838</td> <td>Windows 7 SP1和Windows Server 2008 R2 SP1的平台更新</td> <td></td> <td></td> </tr> <tr> <td>KB2676562</td> <td>MS12-034:Microsoft Office、Windows、.NETFramework和Silverlight的组合安全更新</td> <td></td> <td></td> </tr> <tr> <td>KB2685811</td> <td>适用于Windows Vista、Windows Server2008、Windows 7和Windows Server 2008 R2的1.11版内核模式驱动程序框架更新</td> <td></td> <td></td> </tr> <tr> <td>KB2685813</td> <td>适用于Windows Vista、Windows Server2008、Windows 7和Windows Server 2008 R2的1.11版用户模式驱动程序框架更新</td> <td></td> <td></td> </tr> <tr> <td>KB2698365</td> <td>MS12-045:Microsoft数据访问组件中的漏洞可能允许远程执行代码:2012年7月10日</td> <td></td> <td></td> </tr> <tr> <td>KB2706045</td> <td>MS12-056:JScript和VBScript引擎中的漏洞可能允许远程执行代码:2012年8月14日</td> <td></td> <td></td> </tr> <tr> <td>KB2729094</td> <td>现提供对Windows 7和Windows Server 2008 R2中SegoeUI符号字体的更新</td> <td></td> <td></td> </tr> <tr> <td>KB2732059</td> <td>You cannot openan.oxps file in Windows 7 or in Windows Server 2008 R2</td> <td></td> <td></td> </tr> <tr> <td>KB2750841</td> <td>已推出用于Windows 7和Windows Server 2008 R2的IPv6准备就绪更新</td> <td></td> <td></td> </tr> <tr> <td>KB2761217</td> <td>已推出可向Windows 7和Windows Server 2008 R2添加Calibri Light和Calibri LightItalic字体的更新</td> <td></td> <td></td> </tr> <tr> <td>KB2773072</td> <td>更新更改在Windows 7 中的游戏分级系统</td> <td></td> <td>×</td> </tr> <tr> <td>KB2813347</td> <td>MS13-029:远程桌面连接7.0客户端的安全更新</td> <td></td> <td></td> </tr> <tr> <td>KB2830477</td> <td>Remote Desktop Protocol 8.1更新程序</td> <td></td> <td>×</td> </tr> <tr> <td>KB2834140</td> <td>在运行Windows 7 SP1或Windows Server 2008 R2 SP1的计算机上安装更新2670838后出现“0x00000050”停止错误</td> <td></td> <td></td> </tr> <tr> <td>KB2841134</td> <td>Internet Explorer11</td> <td></td> <td></td> </tr> <tr> <td>KB2841134</td> <td>Internet Explorer11zh_cn语言包</td> <td></td> <td></td> </tr> <tr> <td>KB2862330</td> <td>MS13-081:USB驱动程序安全更新说明:2013年10月8日</td> <td></td> <td></td> </tr> <tr> <td>KB2894844</td> <td>Windows 7 Service Pack1和Windows Server 2008 R2 Service Pack1上.NET Framework3.5.1的安全更新说明:2013年12月10日</td> <td></td> <td></td> </tr> <tr> <td>KB2900986</td> <td>MS13-090:ActiveX KillBits累积安全更新:2013年11月12日</td> <td></td> <td></td> </tr> <tr> <td>KB2912390</td> <td>MS14-007:Direct2D中的漏洞可能允许远程代码执行:2014年2月11日</td> <td></td> <td></td> </tr> <tr> <td>KB2919469</td> <td>Canada country code is incorrectin Windows 7 SP1 or Windows Server 2008 R2 SP1</td> <td></td> <td></td> </tr> <tr> <td>KB2923545</td> <td>RDP8.1更新补丁</td> <td>×</td> <td></td> </tr> <tr> <td>KB2970228</td> <td>用以在Windows中支持俄罗斯卢布新货币符号的更新</td> <td></td> <td></td> </tr> <tr> <td>KB2984972</td> <td>用于支持Windows 7和Windows Server 2008 R2上的受限管理登录的RDC7.1更新</td> <td></td> <td></td> </tr> <tr> <td>KB2990941</td> <td>更新以在 NVM 速成版 Windows 7 和 Windows Server 2008 R2 中添加本地驱动程序支持</td> <td></td> <td></td> </tr> <tr> <td>KB2993651</td> <td>MS14-045:内核模式驱动程序的安全更新</td> <td></td> <td></td> </tr> <tr> <td>KB2999226</td> <td>Windows中的Universal C Runtime更新</td> <td></td> <td></td> </tr> <tr> <td>KB3004375</td> <td>Microsoft安全公告:用于改善Windows命令行审核的更新:2015年2月10日</td> <td></td> <td></td> </tr> <tr> <td>KB3006137</td> <td>在Windows中,此更新将立陶宛的货币符号从立陶宛litas(Lt)更改为欧元(€)</td> <td></td> <td></td> </tr> <tr> <td>KB3018238</td> <td>MS14-066:Schannel中的漏洞可能允许远程执行代码</td> <td>×</td> <td></td> </tr> <tr> <td>KB3020369</td> <td>2015年4月Windows 7和Windows Server2008 R2的服务堆栈更新</td> <td></td> <td></td> </tr> <tr> <td>KB3020388</td> <td>MS15-004:安装了远程桌面连接8.1客户端更新时Windows 7和Windows Server 2008 R2的安全更新</td> <td></td> <td></td> </tr> <tr> <td>KB3021917</td> <td>更新到Windows7SP1的性能改进</td> <td></td> <td>×</td> </tr> <tr> <td>KB3035126</td> <td>“MS15-029:Vulnerabilityin Windows Photo Decoder component could allowinformationdisclosure:March10 2015”</td> <td></td> <td></td> </tr> <tr> <td>KB3046269</td> <td>MS15-037:Windows任务计划程序中的漏洞可能允许特权提升:2015年4月14日</td> <td></td> <td></td> </tr> <tr> <td>KB3054205</td> <td>WinVerifyTrust函数的SIP的更新</td> <td>×</td> <td></td> </tr> <tr> <td>KB3059317</td> <td>MS15-060:Microsoft常用控件中的漏洞可能允许远程执行代码:2015年6月9日</td> <td></td> <td></td> </tr> <tr> <td>KB3068708</td> <td>更新的客户体验和诊断遥测</td> <td></td> <td></td> </tr> <tr> <td>KB3075226</td> <td>MS15-082:WindowsRDP安全更新</td> <td></td> <td></td> </tr> <tr> <td>KB3080149</td> <td>更新的客户体验和诊断遥测</td> <td></td> <td></td> </tr> <tr> <td>KB3087873</td> <td>&ldquo;0x0000007E&quot;stop 错误之后在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 安装修补程序 2990941</td> <td></td> <td></td> </tr> <tr> <td>KB3102429</td> <td>在Windows中支持阿塞拜疆马纳特和格鲁吉亚语拉里货币符号的更新</td> <td></td> <td></td> </tr> <tr> <td>KB3110329</td> <td>MS16-007:适用于Windows的安全更新程序说明:2016年1月12日</td> <td></td> <td></td> </tr> <tr> <td>KB3118401</td> <td>Windows中的Universal C Runtime更新</td> <td></td> <td></td> </tr> <tr> <td>KB3123479</td> <td>对Microsoft根证书程序弃用SHA-1哈希算法</td> <td></td> <td></td> </tr> <tr> <td>KB3124275</td> <td>MS16-001:Internet Explorer安全更新程序:2016年1月12日</td> <td></td> <td></td> </tr> <tr> <td>KB3125574</td> <td>Windows7SP1和Windows Server 2008 R2 SP1的方便使用汇总更新</td> <td></td> <td></td> </tr> <tr> <td>KB3138612</td> <td>Windows7和Windows Server 2008 R2的Windows更新客户端:2016年3月</td> <td></td> <td></td> </tr> <tr> <td>KB3140245</td> <td>启用TLS1.1和TLS1.2作为默认WinHTTP在Windows中的安全协议</td> <td></td> <td></td> </tr> <tr> <td>KB3150513</td> <td>Windows的最新兼容性定义更新</td> <td></td> <td>×</td> </tr> <tr> <td>KB3155178</td> <td>MS16-056:Windows日记本的安全更新程序说明:2016年5月10日</td> <td></td> <td></td> </tr> <tr> <td>KB3156016</td> <td>MS16-055:Microsoft图形组件的安全更新程序说明:2016年5月10日</td> <td></td> <td></td> </tr> <tr> <td>KB3159398</td> <td>“MS16-072:DescriptionofthesecurityupdateforGroupPolicy:June142016”</td> <td></td> <td></td> </tr> <tr> <td>KB3161102</td> <td>Windows日记本中删除组件的更新</td> <td></td> <td></td> </tr> <tr> <td>KB3161949</td> <td>MS16-077:WPAD安全更新程序说明:2016年6月14日</td> <td></td> <td></td> </tr> <tr> <td>KB3170735</td> <td>Windows日记本的2016年7月更新</td> <td></td> <td>×</td> </tr> <tr> <td>KB3172605</td> <td>2016年7月Windows 7 SP1和Windows Server 2008 R2 SP1更新汇总</td> <td></td> <td></td> </tr> <tr> <td>KB3179573</td> <td>8月2016年的Windows 7 SP1和Windows Server 2008 R2 SP1更新汇总</td> <td></td> <td></td> </tr> <tr> <td>KB3184143</td> <td>删除与Windows 10免费升级优惠活动相关的软件</td> <td></td> <td>×</td> </tr> <tr> <td>KB3185319</td> <td>MS16-104:Internet Explorer安全更新程序:2016年9月13日</td> <td></td> <td></td> </tr> <tr> <td>KB4019990</td> <td>在Windows Server 2012、Windows Server 7和Windows Server 2008 R2上的d3dcompiler_47.dll组件的更新</td> <td></td> <td></td> </tr> <tr> <td>KB4040980</td> <td>适用于Windows 7 SP1和Windows Server 2008 R2 SP1的.NET Framework3.5.1的安全与质量汇总(KB4040980)</td> <td></td> <td></td> </tr> <tr> <td>KB4474419</td> <td>针对Windows Server 2008 R2、Windows 7和Windows Server 2008的SHA-2代码签名支持更新:2019年9月23日</td> <td></td> <td></td> </tr> <tr> <td>KB4490628</td> <td>Windows 7 SP1和Windows Server 2008 R2 SP1的服务堆栈更新:2019年3月12日</td> <td></td> <td></td> </tr> <tr> <td>KB4493132</td> <td>Windows 7 SP1支持通知</td> <td></td> <td>×</td> </tr> <tr> <td>KB4532945</td> <td>Windows 7 SP1和Windows Server 2008 R2 SP1的.NET Framework 3.5.1的安全与质量汇总(KB4532945)</td> <td></td> <td></td> </tr> <tr> <td>KB4534310</td> <td>2020年1月14日-KB4534310(月度汇总)</td> <td></td> <td></td> </tr> <tr> <td>KB4534314</td> <td>2020年1月14日-KB4534314(仅安全更新)</td> <td></td> <td></td> </tr> <tr> <td>KB4536952</td> <td>Windows7SP1和Server2008R2SP1的服务堆栈更新:2020年1月14日</td> <td></td> <td></td> </tr> </tbody> </table>

2026/5/7
阅读更多

Docker 推荐后端 WSL2 完全离线安装

<img src="https://localfreedom.pages.dev/img/wsl2.jpeg" alt="Featured image of post Docker 推荐后端 WSL2 完全离线安装" /><p>这里介绍的适用于Linux的Windows子系统的离线安装使用方法,适用于 Windows 10 2004 及以上版本,含 LTSC 2021。 安装完成后可以直接作为Docker引擎的后端。</p> <ol> <li>从 <a class="link" href="https://github.com/microsoft/wsl/releases" target="_blank" rel="noopener" >GitHub 发行页面</a>下载 WSL 的 MSI 套件</li> <li>从 <a class="link" href="https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json" target="_blank" rel="noopener" >DistributionInfo.json</a> 中找到下载发行版的 .wsl 文件URL并下载所选发行版</li> <li>在控制面板 -&gt; 程序和功能 -&gt; 启用或关闭Windows功能 <ul> <li>启用 虚拟机平台VirtualMachinePlatform</li> <li>启用 适用于Linux的Windows子系统</li> </ul> </li> <li>双击运行MSI包安装WSL <ul> <li>开始菜单会多出WSL的图标,可进入GUI进行一些设置。</li> <li>打开 cmd 或 powershell 可以执行命令查看帮助 <code>wsl --help</code></li> </ul> </li> <li>安装发行版 <ul> <li>用管理员权限运行 <code>wsl --install --from-file &lt;location of wsl File&gt;</code></li> <li>如 <code>wsl --install --from-file C:\Users\John\Downloads\ubuntu-24.04.4-wsl-amd64.wsl</code></li> <li>会提示创建Linux发行版的用户名并设置密码</li> <li>不同发行版不共享账号和存储</li> </ul> </li> <li>启动WSL的发行版 <code>wsl -d &lt;DistroName&gt;</code></li> <li>关闭WSL的发行版 <code>wsl -t &lt;DistroName&gt;</code></li> <li>关闭所有在运行的发行版 <code>wsl --shudown</code></li> </ol>

2026/4/25
阅读更多

远端BT设定

<h2 id="introduce">Introduce </h2><p>Linux系列发行版以稳定著称,常在 Server 上年复一年的运行。 自己的日常主用设备运行 BitTorrent 当然是不方便的,而如果有一台运行 Linux 的 Server 就非常适合运行 BitTorrent 客户端下载和分享。 这里介绍两种常见的 BitTorrent 桌面客户端在 Linux Server 的初始设置方法。</p> <h2 id="transmission">Transmission </h2><p>Transmission 常与 Gnome 桌面环境搭配,是 Ubuntu 等发行版的默认软件。</p> <ol> <li>远端使用需安装 transmission-daemon 套件</li> <li>编辑设定档 <code>~/.config/transmission-daemon/settings.json</code> 中的几项 <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rpc-whitelist&#34;</span><span class="p">:</span> <span class="s2">&#34;0.0.0.0&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></td></tr></table> </div> </div></li> <li>建议禁止相关 systemd 服务</li> <li>直接在当前命令行运行 transmission-daemon</li> <li>访问 http://[ServerIP如1.2.3.4]:9091 即可</li> </ol> <blockquote> <p>参考 <a class="link" href="https://thatman.life/transmission-web/" target="_blank" rel="noopener" >https://thatman.life/transmission-web/</a></p> </blockquote> <h2 id="qbittorrent">qBittorrent </h2><p>qBittorrent本身GUI可以开启WebUI,这里主要介绍完全远端无桌面环境的操作。</p> <ol> <li>远端使用需安装 qbittorrent-nox 套件</li> <li>直接运行 <code>qbittorrent-nox --webui-port=端口默认8080</code> 命令可以完成初始化配置。 <ul> <li>首次运行会监听所有IP地址,给出webui的默认用户名<code>admin</code>和一个随机密码。</li> </ul> </li> <li>WebUI和桌面版基本一致,在 Tools-&gt;Options 中进行设置。</li> <li>默认设定档于 <code>~/.config/qBittorrent/qBittorrent.conf</code> 首次访问 WebUI 会生成。</li> <li>预设没有集成systemd服务,建议每次用tmux等手动运行更好。</li> </ol> <blockquote> <p>参考 <a class="link" href="https://github.com/qbittorrent/qBittorrent/wiki/Running-qBittorrent-without-X-server-%28WebUI-only,-systemd-service-set-up,-Ubuntu-15.04-or-newer%29" target="_blank" rel="noopener" >https://github.com/qbittorrent/qBittorrent/wiki/Running-qBittorrent-without-X-server-(WebUI-only,-systemd-service-set-up,-Ubuntu-15.04-or-newer)</a></p> </blockquote> <h2 id="summary">Summary </h2><ul> <li>博主更推荐 qBittorrent 功能更全面,支持更多进阶功能。</li> <li>记得检查防火墙是否开放对应的 Port (Transmission 预设 9091,qBittorrent 预设 8080)。</li> <li>安全性方面,建议将Server端监听IP设置为 127.0.0.1 通过 ssh 端口转发访问 <code>ssh -L 8080:127.0.0.1:8080 user@server</code>。</li> </ul>

2026/4/16
阅读更多

Windows 10 LTSC 安装和基本配置要点

<img src="https://localfreedom.pages.dev/img/windows_10_desktop.png" alt="Featured image of post Windows 10 LTSC 安装和基本配置要点" /><blockquote> <p>Windows 10 的各个版本走向了生命的尽头。 本文主要备忘 Windows 10 安装时的注意事项,以作纪念。</p> </blockquote> <h2 id="download--bootable">Download &amp; Bootable </h2><p>有一个网站 <a class="link" href="https://msdn.itellyou.cn/" target="_blank" rel="noopener" >MSDN, I tell you!</a> 提供各种版本多语言的Windows安装镜像下载。 知名破解工具网站提供的<a class="link" href="https://massgrave.dev/windows_ltsc_links" target="_blank" rel="noopener" >LTSC下载</a>,经对比验证也是可靠的。</p> <p>MSDN消费者版本可看作官网下载的延续,但是商业版不能 HWID 激活。</p> <p>LTSC 启动U盘直接格式化成<code>fat32</code>格式,然后将iso安装镜像内的文件复制进去即可。 Win10新版中有大于4GiB的档案,需要<code>NTFS</code>格式,并将<code>EFI</code>文件夹单独放在<code>fat32</code>分区。 建议直接使用 <a class="link" href="https://rufus.ie" target="_blank" rel="noopener" >Rufus</a> 制作。</p> <h3 id="其他安装辅助资料">其他安装辅助资料 </h3><p>为了顺利的执行整个安装和初始化过程应准备好一些资料。</p> <ul> <li>更新(LCS+.Net+Defender)</li> <li>驱动(显卡、声卡、网卡等)</li> <li>注册表脚本(时间UTC、图片打开等) <a class="link" href="https://localfreedom.pages.dev/p/windows-%E6%B3%A8%E5%86%8C%E8%A1%A8%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/" >注册表脚本教程</a></li> <li>激活工具</li> <li>基础软件安装包 RAR+Firefox+Office+Rufus</li> </ul> <h2 id="system-setting">System Setting </h2><ul> <li>When installing, shutdown all the privacy items.</li> <li>开启飞行模式</li> <li>在控制面板电源管理中检查并[如果有]关闭睡眠和快速启动</li> <li>关闭休眠以腾出C盘中内存一般体积的 <code>hiberfil.sys</code> 内存缓存文件: <code>powercfg -h off</code></li> <li>Enable random hardware address(WLAN) <em>可能需要现安装无线网卡驱动才出现此选项</em>. <ul> <li><em>在保存的网络中配置每日变化随机MAC地址。</em></li> </ul> </li> <li><em>使用UTC时间和Linux一致</em> <ul> <li>新建 Registry Item <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal</code> 设置为十六进制1</li> </ul> </li> <li>Settings <ul> <li>System 电源选项忽略合盖从不睡眠</li> <li>Privacy 检查所有项目尽可能关闭</li> <li>Search 最小化</li> <li>Devices 关闭蓝牙和自动播放</li> </ul> </li> <li>资源管理器上方选项 <ul> <li>显示隐藏文件</li> <li>显示已知的文件扩展名</li> <li>打开此电脑</li> </ul> </li> <li>右键个性化: 桌面显示图标+启动菜单档案夹</li> <li>任务管理器显示GPU</li> <li>任务栏: 不显示人脉,搜索只显示图标,关闭资讯</li> <li><em>微软拼音输入法设置-&gt;按键-&gt;中英文切换 取消<code>Shift</code>便于游戏</em></li> <li><em>IE11浏览器选项每次删除浏览记录</em></li> <li>应用商店关闭自动更新</li> <li>Edge <ul> <li>Homepage</li> <li>Download</li> <li>Privacy</li> </ul> </li> <li><em>LTSC解锁图片查看器</em> <ul> <li>Registry <code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations</code> 新建Key为图片后缀名如 <code>.jpg</code> 的字符串值 <code>PhotoViewer.FileAssoc.Tiff</code> 即可</li> </ul> </li> </ul> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-reg" data-lang="reg"><span class="line"><span class="cl">Windows Registry Editor Version 5.00 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">[</span><span class="nb">HKEY_LOCAL_MACHINE</span><span class="k">\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;RealTimeIsUniversal&#34;</span><span class="o">=</span><span class="nv">dword</span><span class="p">:</span><span class="m">00000001</span> </span></span><span class="line"><span class="cl"><span class="c1">;设置硬件时钟为UTC</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">[</span><span class="nb">HKEY_LOCAL_MACHINE</span><span class="k">\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.bmp&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.ico&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.jpeg&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.jpg&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.png&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="c1">;LTSC将图片关联到自带的图片查看器打开</span> </span></span></code></pre></td></tr></table> </div> </div><h2 id="updates">Updates </h2><p>1809和LTSC共用更新,但1809安装更新会在重启时失败,应该是普通版限制安装延长更新。</p> <ul> <li><del>删除Flash更新KB4577586,2025年已并入LCU不需要单独安装。</del></li> <li>最新的服务堆栈更新(SSU),普通1809最后是KB5003243,最终是kb5005112,之后SSU并入LCU。</li> <li>Intel微码更新,目前是KB4589208</li> <li>最新的积累更新(LCU),普通1809最后是KB5003171。 <ul> <li>22H2安装2025年10月后的积累更新需激活ESU</li> <li>其他非LTSC版本需升级至22H2的2025年10月版本</li> </ul> </li> <li>最新的.Net积累更新 <ul> <li>1809LTSC版本2025年10月是KB5066143至2026年3月没再更新</li> <li>1809和LTSC建议首先安装.Net4.8再安装4.8系列2025年10月更新KB5066137</li> <li>21H2/22H2/LTSC2021版本2025年10月是KB5066135至2026年3月没再更新</li> </ul> </li> <li><del>SecureBootDBX更新KB5012170已并入LCU不需要单独安装</del></li> <li><em><a class="link" href="https://www.microsoft.com/en-us/wdsi/defenderupdates" target="_blank" rel="noopener" >Defender病毒库更新</a>KB2267602(mpam-fe.exe),执行后查看defender更新日期确认</em></li> <li><em>Defender反恶意软件KB4052623</em></li> </ul> <h3 id="ltsc-引导文件bug">LTSC 引导文件Bug </h3><p>LTSC(2019)引导文件Bug可通过LCU解决。</p> <h3 id="ltsc2021-中-wsappx-占用过高问题">LTSC2021 中 wsappx 占用过高问题 </h3><ul> <li><del>LTSC2021因为默认少装运行库导致高占用,需要额外安装</del> <ul> <li><del>管理员身份运行Powershell <code>Add-AppxPackage -Path 文件路径</code></del></li> <li><del>Microsoft.VCLibs.x86.14.00.Desktop.appx</del></li> <li><del>Microsoft.VCLibs.x64.14.00.Desktop.appx</del></li> </ul> </li> <li><del>将 <code>HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\AppXSvc Start</code> 的值从3改到4可以解决wsappx,但资源管理器又占用高了。</del></li> <li>2022年9月13日的21H2更新 KB5017308 成功解决了 wsappx 占用高的问题,直接安装即可。</li> </ul> <h2 id="drivers">Drivers </h2><p>由于引导和高占用等Bug需要安装积累更新解决,所以完成更新补丁安装后在安装驱动。 驱动安装完成后,建议再检查 <code>System Settings</code> 的部分。</p> <h2 id="software-configure">Software Configure </h2><p>软件配置因人而异,这里罗列一些博主认为有必要考虑的。</p> <ul> <li>.Net3.5(2.0+3.0) <ul> <li>挂载安装镜像可离线启用</li> <li><strong>建议随系统安装启用以免后期需要找不到安装镜像</strong></li> <li>dism.exe /online /enable-feature /featurename:netfx3 /Source:<a class="link" href="ISO%e7%9b%98%e7%ac%a6%e5%a6%82" >E</a>:\sources\sxs</li> </ul> </li> <li>MSOffice(LibreOffice/OnlyOffice) <ul> <li>using <a class="link" href="https://localfreedom.pages.dev/p/office-deployment-tool/" >Office Deployment Tool</a></li> </ul> </li> <li>Firefox(Edge) <ul> <li>Profile is in the ~/AppData/Roaming/Mozilla/Firefox/Profiles/<em>&lt;profile names like *.default&gt;</em></li> <li>Bookmarks</li> </ul> </li> <li>7Zip(WinRAR)</li> <li>VLC(WindowsMediaPlayer)</li> <li>Rufus</li> <li>git</li> <li>Thunderbird <ul> <li>Offline Calendar / Task / Book</li> </ul> </li> <li>GOGGalaxy(Steam)</li> <li>Hyper-V(VMware/VirtualBox)</li> <li>VScode</li> <li>VisualStudio</li> <li>Anaconda</li> <li>Sumatra PDF</li> </ul>

2026/4/10
阅读更多

llama.cpp LLM时代核心引擎指南

<img src="https://localfreedom.pages.dev/img/llamacpp.png" alt="Featured image of post llama.cpp LLM时代核心引擎指南" /><h2 id="简介">简介 </h2><p>llama.cpp 是ChatGPT火爆后最早也是最核心的LLM推理引擎。 配套的还有 ggml/gguf 等适用于个人电脑的量化LLM模型档案格式。 用C++实现,小巧高校,社区活跃,对新模型有很及时的支持,是很多LLM本地运行工具的上游引擎。</p> <h3 id="优势">优势 </h3><ul> <li>体积小,占用磁盘空间少。</li> <li>可控性强,基础引擎可以定义所有参数。</li> <li>直接使用 gguf 格式模型档案,便于模型收录档案管理。</li> </ul> <h3 id="劣势">劣势 </h3><ul> <li>用户不够友好,毕竟是核心引擎,虽然出了WebUI但远没有其他集成软件用户友好。</li> <li>配置门槛高,运行模型本身就是命令行执行,配套的 Agent/SCP/RAG 等都需要自行组装。</li> </ul> <h2 id="版本">版本 </h2><p>项目的<a class="link" href="https://github.com/ggml-org/llama.cpp" target="_blank" rel="noopener" >开发</a>和<a class="link" href="https://github.com/ggml-org/llama.cpp/releases" target="_blank" rel="noopener" >分发</a>都在Github进行。</p> <p>引擎本身支持不同的硬件加速:</p> <ul> <li>cpu 最精简状态,纯CPU推理。</li> <li>cuda 支持 Nvidia GPU 加速。</li> <li>rocm 支持 AMD GPU 加速。</li> <li>vulkan 支持开源GPU驱动加速。</li> <li>opencl 支持开源GPU驱动加速。</li> </ul> <p>docker镜像发行分三类方式:</p> <ul> <li>light 轻量级,仅仅核心推理引擎,<code>llama-cli</code>命令行交互对话。</li> <li>server 服务端,运行引擎搭配Web服务器,提供API接口,新推出的WebUI也是server的一部分。</li> <li>full 全功能,包含以上内容,以及量化转换等各种辅助工具。</li> </ul> <h3 id="衍生">衍生 </h3><p>日常用到的各种LLM本地运行的应用程序,几乎都是基于 <strong>llama.cpp</strong> 封装开发的。</p> <ul> <li><a class="link" href="https://www.jan.ai/" target="_blank" rel="noopener" >Jan</a> <ul> <li>曾经自研引擎,现在自研引擎项目 <a class="link" href="https://github.com/janhq/cortex.cpp" target="_blank" rel="noopener" >cortex</a> 已停滞,就直接打包llama.cpp。</li> </ul> </li> <li><a class="link" href="https://ollama.com/" target="_blank" rel="noopener" >Ollama</a> <ul> <li>重写了llama.cpp,提供了更集成的封装和配置,如今引擎越来越向llama.cpp靠拢。</li> <li>模型采用自己的存储格式,有官方<a class="link" href="https://ollama.com/library" target="_blank" rel="noopener" >模型库</a>,可以从GGUF导入,但会有效果差异。</li> <li>更新不如llama.cpp及时,比如qwen的多模态暂无法支持gguf导入。</li> </ul> </li> <li><a class="link" href="https://lmstudio.ai/" target="_blank" rel="noopener" >LM Studio</a> <ul> <li>商业软件,就是对llama.cpp的封装,提供用户友好的操作界面和API服务。</li> </ul> </li> <li>GPT4ALL <ul> <li>早期基于llama.cpp的GUI,现在<a class="link" href="https://github.com/nomic-ai/gpt4all" target="_blank" rel="noopener" >开源版本</a>似乎停止更新了。</li> </ul> </li> </ul> <h2 id="安装">安装 </h2><ul> <li><a class="link" href="https://github.com/ggml-org/llama.cpp/blob/master/docs/docker.md" target="_blank" rel="noopener" >Docker/Podman</a> <ul> <li>pull镜像即可,镜像在<a class="link" href="https://github.com/ggml-org/llama.cpp/pkgs/container/llama.cpp" target="_blank" rel="noopener" >Github的托管</a>发布,官方没有在DockerHub上发布,不便于查询版本和体积,这里列出来。 <ul> <li>目前项目更新非常频繁,没有大版本号,所以直接用 light/server/full 最新版即可。</li> <li>light 不到100M,-cuda 需要额外约2GiB, full-cuda 最大约5GiB。</li> </ul> </li> <li>官方的参考命令有些问题,比如交互后无限回车,运行容器时加上 <code>-it</code> 参数即可。</li> </ul> </li> <li>Linux <ul> <li>目前llama.cpp并没有收录进各发行版的仓库。</li> <li>从<a class="link" href="https://github.com/ggml-org/llama.cpp/releases" target="_blank" rel="noopener" >Github发布页</a>根据自己硬件的情况下载最新的二进制包解压运行即可,没有额外依赖。</li> </ul> </li> <li>MacOS <ul> <li>可以借助包管理工具安装 <ul> <li>brew install llama.cpp</li> <li>sudo port install llama.cpp</li> <li>nix profile install nixpkgs#llama-cpp</li> </ul> </li> </ul> </li> <li>Windows <ul> <li>从<a class="link" href="https://github.com/ggml-org/llama.cpp/releases" target="_blank" rel="noopener" >Github发布页</a>根据自己硬件的情况下载最新的二进制包解压运行即可。</li> <li>也可以选择 <a class="link" href="https://www.jan.ai/" target="_blank" rel="noopener" >Jan</a> 或 <a class="link" href="https://lmstudio.ai/" target="_blank" rel="noopener" >LM Studio</a> 等集成应用。</li> </ul> </li> <li>自行编译/Android <ul> <li>llama.cpp 由C++编写,依赖几乎只有显卡加速驱动库,按照<a class="link" href="https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md" target="_blank" rel="noopener" >说明</a>编译不难。</li> <li>Android 可借助 Termux 类应用编译运行,这里不做详细介绍。</li> <li>Android也有很多应用封装了 llama.cpp 如 Maid/PocketPal 。</li> </ul> </li> </ul> <h2 id="使用">使用 </h2><h3 id="参数">参数 </h3><ul> <li>通用参数 <ul> <li><code>-ngl auto</code> 多少层加载到GPU,默认auto即可,目前引擎自动分配已足够智能。</li> <li><code>-c 0</code> 上下文长度,默认0采用GGUF档案中自带的默认值。</li> <li><code>-fa auto</code> 是否启用 fast attention 加速,默认auto即可能启用就用。</li> <li><code>--jinja</code> 指定使用GGUF中包含的对话模板,省得自己拼装prompt。</li> <li><code>-m path/to/gguf</code> 指定模型权重档案位置。</li> <li><code>-mm path/to/mmproj/file</code> 指定配套的多模态权重档案位置。</li> <li><code>--host 0.0.0.0</code> server/full版本指定服务监听的IP,目前有BUG仅监听 localhost/127.0.0.1 本机无法访问</li> <li><code>--port 8033</code> server/full版本指定服务监听的端口,早期默认8080官方WebUI推荐8033,可任选一个空闲的自己喜欢的端口。</li> </ul> </li> <li>模型超参数参考官方建议或保持默认 <ul> <li>unsloth 提供的<a class="link" href="https://unsloth.ai/docs/models" target="_blank" rel="noopener" >使用指南</a>中通常都包含 llama.cpp 的参数设置,通常和官方推荐一致,而且gguf档案目前也是这家的版本最受欢迎。</li> <li>&ndash;temp 温度,控制模型的生成发散性,越高越发散。</li> <li>&ndash;top-p 候选概率阈值,越低约发散。</li> <li>&ndash;top-k 候选数量阈值,越高越发散。</li> <li>&ndash;min-p 候选词最小概率。</li> <li>&ndash;presence-penalty 存在惩罚,降低已生成的token再次出现的概率,越低越可能重复。</li> <li>&ndash;repeat-penalty 重复惩罚,已生成的越多惩罚越强,越低越可能重复。</li> <li>&ndash;chat-template-kwargs 为聊天模板设定参数,通常控制是否思考,传入json字符串</li> </ul> </li> </ul> <h3 id="参考命令">参考命令 </h3><p>这里给出通过 docker 运行 server-cuda 镜像的示例命令行,直接运行把 docker 的部分去掉即可。 容器也可以查看帮助 <code>docker run --rm llama.cpp:server-cuda -h</code> 运行命令启动容器后,访问 http://localhost:8033 即可看到 llama.cpp 的官方WebUI。</p> <h4 id="qwen35-9b-unsloth">Qwen3.5-9B-unsloth </h4><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">=</span><span class="s1">&#39;&#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; -p 8033:8033 -v /path/to/gguf/folder:/models:ro --gpus=all --name=LlamaCpp --rm &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; llama.cpp:server-cuda &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; -c 0 -fa auto --jinja --host 0.0.0.0 --port 8033 &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; -m /models/Qwen3.5-9B-Q4_K_M.gguf -mm /models/mmproj-BF16.gguf &#39;</span> </span></span><span class="line"><span class="cl"><span class="c1">#ARGS+=&#39; --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0.0 --presence-penalty 1.5 --repeat-penalty 1.0 &#39; # 思考通用任务|非思考推理任务</span> </span></span><span class="line"><span class="cl"><span class="c1">#ARGS+=&#39; --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.0 --presence-penalty 0.0 --repeat-penalty 1.0 &#39; # 思考精确编码任务</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.0 --presence-penalty 1.5 --repeat-penalty 1.0 &#39;</span> <span class="c1"># 非思考通用任务</span> </span></span><span class="line"><span class="cl"><span class="c1">#ARGS+=&#39; --chat-template-kwargs &#39;&#39;{&#34;enable_thinking&#34;:true}&#39; # 思考</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; --chat-template-kwargs &#39;&#39;{&#34;enable_thinking&#34;:false}&#39;</span> <span class="c1"># 不思考</span> </span></span><span class="line"><span class="cl">docker run <span class="nv">$ARGS</span> </span></span></code></pre></td></tr></table> </div> </div><h4 id="gemma-4-26b-a4b-it-unsloth">gemma-4-26B-A4B-it-unsloth </h4><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span><span class="lnt">6 </span><span class="lnt">7 </span><span class="lnt">8 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">=</span><span class="s1">&#39;&#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; -p 8033:8033 -v /path/to/gguf/folder:/models:ro --gpus=all --name=LlamaCpp --rm &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; llama.cpp:server-cuda &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; -c 0 -fa auto --jinja --host 0.0.0.0 --port 8033 &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; -m /models/gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf -mm /models/mmproj-BF16.gguf &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; --temp 1.0 --top-p 0.95 --top-k 64 &#39;</span> </span></span><span class="line"><span class="cl"><span class="nv">ARGS</span><span class="o">+=</span><span class="s1">&#39; --chat-template-kwargs &#39;&#39;{&#34;enable_thinking&#34;:false}&#39;</span> <span class="c1"># 是否思考</span> </span></span><span class="line"><span class="cl">docker run <span class="nv">$ARGS</span> </span></span></code></pre></td></tr></table> </div> </div><h3 id="配套">配套 </h3><p>llama.cpp 项目本身并没有集成方便的配套工具。 如果集成多了软件和镜像的体积也就大了,所以还是自行组装更好。 之后在新开博文介绍如何基于 llama.cpp 搭建智能体。</p>

2026/4/5
阅读更多

Git 代码及一切文本档案的管理神器

<img src="https://localfreedom.pages.dev/img/git.png" alt="Featured image of post Git 代码及一切文本档案的管理神器" /><h2 id="简介">简介 </h2><p><a class="link" href="https://git-scm.com" target="_blank" rel="noopener" >Git</a> 是 Linux 之父设计的分布式版本控制软件,最出色的代码管理利器。 Git不只能用于代码的管理,一切配置文件、文本档案,甚至多媒体大文件,都很适合用Git来追踪变化,异步写作开发。 本文介绍 Git 的基本操作,并记录一些复杂需求的操作流程。</p> <h3 id="discern">Discern </h3><p>Github 是一个使用Git机制提供集中代码和文档追踪服务的平台,和Git没有官方联系。</p> <h2 id="安装">安装 </h2><ul> <li>Windows <ul> <li>Windows版本在<a class="link" href="https://github.com/git-for-windows/git/releases" target="_blank" rel="noopener" >Github分发</a> <ul> <li>2.46.2是最后支持Windows7的版本</li> </ul> </li> <li>使用setup安装时建议换行符方式选择 <code>Checkout as is, commit as is</code></li> </ul> </li> <li>Linux发行版仓库中一般带有 git <ul> <li>建议<a class="link" href="https://git-scm.com/install/linux" target="_blank" rel="noopener" >从发行版仓库安装</a></li> </ul> </li> </ul> <h3 id="相关配套工具和插件">相关配套工具和插件 </h3><ul> <li><a class="link" href="https://git-lfs.com/" target="_blank" rel="noopener" >git-lfs</a> <ul> <li>集成在Windows版本中,Linux需额外从发行版仓库安装。</li> <li>用于追踪大文件减少空间消耗</li> </ul> </li> </ul> <h2 id="配置">配置 </h2><h3 id="配置文件位置">配置文件位置 </h3><ul> <li>当前用户的配置在 <code>.gitconfig</code></li> <li>每个仓库的配置文件在 <code>.git/config</code></li> <li>每个文件夹中的配置文件 <ul> <li>.gitignore 设置追踪变更时忽视的路径</li> <li>.gitattribution 设置每个文件追踪属性如不记录差异</li> </ul> </li> </ul> <h3 id="配置命令">配置命令 </h3><p>git config [级别] [选项] 变量 值</p> <ul> <li>级别有 &ndash;system &ndash;global &ndash;local &ndash;worktree &ndash;file 等</li> <li>选项有 &ndash;list &ndash;unset 等</li> <li>全局快速合并 git config &ndash;global pull.ff=only</li> <li>设置基本信息 <ul> <li>git config user.name [用户名]</li> <li>git config user.email [电子邮件]</li> </ul> </li> <li>设置http/https协议的代理 git config http.[网址.]proxy &ldquo;协议://IP地址:端口&rdquo; <ul> <li>git config http.proxy &ldquo;socks5h://127.0.0.1:1080&rdquo;</li> <li>git config http.https://github.com.proxy &ldquo;socks5h://127.0.0.1:1080&rdquo;</li> <li>git config &ndash;local remote.&lt;远端名称&gt;.proxy &quot;&quot;</li> </ul> </li> <li>设置SSH(代理用ssh方式设置) <ul> <li>git config &ndash;local core.sshCommand &ldquo;ssh -F path/to/config&rdquo;</li> <li><a class="link" href="https://localfreedom.pages.dev/p/ssh%E8%BF%9C%E7%A8%8B%E7%99%BB%E5%85%A5%E7%A5%9E%E5%99%A8%E7%9A%84%E5%88%9D%E6%AD%A5%E4%BD%BF%E7%94%A8/" >SSH远程登入神器的初步使用</a></li> </ul> </li> </ul> <h2 id="基本使用">基本使用 </h2><h3 id="创建本地仓库">创建本地仓库 </h3><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">git init </span></span><span class="line"><span class="cl">git config --local --add user.name <span class="o">[</span>意向使用的用户名如user<span class="o">]</span> </span></span><span class="line"><span class="cl">git config --local --add user.email <span class="o">[</span>意向使用的邮箱如user@example.com<span class="o">]</span> </span></span><span class="line"><span class="cl">git branch -M <span class="o">[</span>主分支名,如main<span class="o">]</span> </span></span><span class="line"><span class="cl">git remote add <span class="o">[</span>远端名称,默认origin<span class="o">]</span> <span class="o">[</span>远端URL<span class="o">]</span> </span></span></code></pre></td></tr></table> </div> </div><h3 id="克隆和拉取">克隆和拉取 </h3><ul> <li>子模块 <ul> <li>直接一起克隆 git clone &ndash;recurse-submodules</li> <li>克隆后在拉取 <ul> <li><code>git clone 链接</code></li> <li><code>git submodule init</code></li> <li><code>git submodule update</code> <ul> <li><code>--remote</code> 选项可以解决 <code>did not contain xxxxxxxxx</code> 类的问题</li> </ul> </li> </ul> </li> </ul> </li> <li>精简克隆 <ul> <li>设置不包含文件变更暂不检出(仅概况)深度为1 <code>git clone --filter=blob:none --no-checkout --depth=1 --sparse 链接</code></li> <li><code>cd 仓库名</code></li> <li><code>git sparse-checkout set 想克隆的路径</code></li> <li><code>git sparse-checkout add 想克隆的路径</code></li> <li>手动维护想克隆的路径 <code>.git/info/sparse-checkout</code></li> <li><code>git checkout</code></li> <li><a class="link" href="https://stackoverflow.com/questions/4114887/is-it-possible-to-do-a-sparse-checkout-without-checking-out-the-whole-repository" target="_blank" rel="noopener" >https://stackoverflow.com/questions/4114887/is-it-possible-to-do-a-sparse-checkout-without-checking-out-the-whole-repository</a></li> </ul> </li> </ul> <h3 id="提交">提交 </h3><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">git add 文件 </span></span><span class="line"><span class="cl">git commit <span class="s2">&#34;说明&#34;</span> </span></span><span class="line"><span class="cl">git reset --soft HEAD^ <span class="c1"># 本地撤销commit</span> </span></span><span class="line"><span class="cl">git push -u <span class="o">[</span>远端名称,默认origin<span class="o">]</span> <span class="o">[</span>本地分支,如main<span class="o">]</span> </span></span></code></pre></td></tr></table> </div> </div><h3 id="分支">分支 </h3><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span><span class="lnt">14 </span><span class="lnt">15 </span><span class="lnt">16 </span><span class="lnt">17 </span><span class="lnt">18 </span><span class="lnt">19 </span><span class="lnt">20 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="c1"># 查看分支</span> </span></span><span class="line"><span class="cl">git branch -a </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># 创建分支</span> </span></span><span class="line"><span class="cl">git checkout -b <span class="o">[</span>分支名<span class="o">]</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># 列出标签</span> </span></span><span class="line"><span class="cl">git tag <span class="o">[</span>-l <span class="p">|</span> --list<span class="o">]</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># 创建标签</span> </span></span><span class="line"><span class="cl">git tag -a 标签名 <span class="o">[</span>-m 信息 <span class="p">|</span> -F 信息文件<span class="o">]</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># 删除标签</span> </span></span><span class="line"><span class="cl">git tag -d 标签名 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># 切换分支</span> </span></span><span class="line"><span class="cl">git checkout <span class="o">[</span>分支名<span class="o">]</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># 切换到标签</span> </span></span><span class="line"><span class="cl">git checkout <span class="o">[</span>标签名 <span class="p">|</span> tags/标签名<span class="o">]</span> </span></span></code></pre></td></tr></table> </div> </div><h2 id="流程参考">流程参考 </h2><h3 id="pullrequest">PullRequest </h3><p>通常实在网络平台上使用git用此操作进行贡献</p> <ul> <li>fork别人的仓库</li> <li>做修改并提交</li> <li>在自己fork的仓库新建PullRequest</li> <li>[可选]跟进上游进展 git remote add upstream https://[上游仓库地址].git</li> </ul> <blockquote> <p><a class="link" href="https://github.com/firstcontributions/first-contributions" target="_blank" rel="noopener" >https://github.com/firstcontributions/first-contributions</a></p> </blockquote> <h3 id="gitlfs">GitLFS </h3><ul> <li>追踪 <code>git lfs track 文件在仓库路径如Patch/test.bin</code></li> <li>添加配置 <code>git add .gitattributes</code></li> <li>正常添加 <code>it add 文件在仓库路径如Patch/test.bin</code></li> <li>正常提交 <code>git commit -m &quot;说明备注&quot;</code></li> </ul> <h3 id="不小心提交敏感信息">不小心提交敏感信息 </h3><ul> <li>本地撤销commit <code>git reset --soft HEAD^</code></li> <li>创建新分支 <code>git branch -b master</code></li> <li>重新提交 <code>git push</code></li> <li>在github中Settings切换默认分支</li> <li>在github中Code的分支菜单中<code>View all branches</code>删除原分支</li> <li>可以考虑再把新分支master重命名回去 <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">git branch -m master 原分支名 </span></span><span class="line"><span class="cl">git fetch github </span></span><span class="line"><span class="cl">git branch -u github/原分支名 原分支名 </span></span><span class="line"><span class="cl">git remote set-head github -a </span></span></code></pre></td></tr></table> </div> </div></li> </ul> <h2 id="其他">其他 </h2><p>Git相关的 GUI、WebUI、Server 等另开一篇博文介绍。</p>

2026/4/2
阅读更多

Chinese character 简繁转换

<p>简体是中文字的简化写法,大陆为了普及文化而推广了简化字,简化版的汉字与正规写法之间是字字对应的,转换很直接,也确实有很多办公软件集成了此功能,这里做收录总结。</p> <p>同时由于简体用于大陆、新加坡,繁体或者说正体中文用于台湾和港澳,所以一些表述上有习惯性差异的,这里也列举一些常用表述差异的转换措施。</p> <h2 id="opencc">OpenCC </h2><ul> <li>下载安装 <ul> <li><a class="link" href="https://github.com/BYVoid/OpenCC" target="_blank" rel="noopener" >https://github.com/BYVoid/OpenCC</a></li> </ul> </li> <li>使用 <ul> <li>opencc -c 配置文件 -i 输入文件 -o 输出文件</li> <li>不指定配置文件则根据输入逐字转换成另一种</li> <li>如果不指定输入输出文件则流式处理每输入一行输出一行结果</li> <li>预设配置文件 <ul> <li><code>s2t.json</code> Simplified Chinese to Traditional Chinese 简体到繁体</li> <li><code>t2s.json</code> Traditional Chinese to Simplified Chinese 繁体到简体</li> <li><code>s2tw.json</code> Simplified Chinese to Traditional Chinese (Taiwan Standard) 简体到台湾正体</li> <li><code>tw2s.json</code> Traditional Chinese (Taiwan Standard) to Simplified Chinese 台湾正体到简体</li> <li><code>s2hk.json</code> Simplified Chinese to Traditional Chinese (Hong Kong variant) 简体到香港繁体</li> <li><code>hk2s.json</code> Traditional Chinese (Hong Kong variant) to Simplified Chinese 香港繁体到简体</li> <li><code>s2twp.json</code> Simplified Chinese to Traditional Chinese (Taiwan Standard) with Taiwanese idiom 简体到繁体(台湾正体标准)并转换为台湾常用词汇</li> <li><code>tw2sp.json</code> Traditional Chinese (Taiwan Standard) to Simplified Chinese with Mainland Chinese idiom 繁体(台湾正体标准)到简体并转换为中国大陆常用词汇</li> <li><code>t2tw.json</code> Traditional Chinese (OpenCC Standard) to Taiwan Standard 繁体(OpenCC 标准)到台湾正体</li> <li><code>hk2t.json</code> Traditional Chinese (Hong Kong variant) to Traditional Chinese 香港繁体到繁体(OpenCC 标准)</li> <li><code>t2hk.json</code> Traditional Chinese (OpenCC Standard) to Hong Kong variant 繁体(OpenCC 标准)到香港繁体</li> <li><code>t2jp.json</code> Traditional Chinese Characters (Kyūjitai) to New Japanese Kanji (Shinjitai) 繁体(OpenCC 标准,旧字体)到日文新字体</li> <li><code>jp2t.json</code> New Japanese Kanji (Shinjitai) to Traditional Chinese Characters (Kyūjitai) 日文新字体到繁体(OpenCC 标准,旧字体)</li> <li><code>tw2t.json</code> Traditional Chinese (Taiwan standard) to Traditional Chinese 台湾正体到繁体(OpenCC 标准)</li> </ul> </li> </ul> </li> <li>评价 <ul> <li>精巧专业预置转换词典</li> <li>全系统支持</li> <li>命令行为主</li> </ul> </li> </ul> <h2 id="libreoffice">LibreOffice </h2><ul> <li>启用亚洲语言支持 <ul> <li>Tools -&gt; Options -&gt; Languages and Locales -&gt; General</li> </ul> </li> <li>使用 <ul> <li>选中带转换文本</li> <li>工具 -&gt; 语言 -&gt; 中文简繁转换</li> <li>[可选]勾选翻译常用词汇并编辑词典</li> </ul> </li> <li>评价 <ul> <li>多系统支持 Linux/Windows/MacOS 免费开源可靠</li> <li>无预制词典且无法导入</li> </ul> </li> </ul> <h2 id="microsoft-office">Microsoft Office </h2><ul> <li>365等部分版本需要额外启用 <ul> <li>文件 -&gt; 选项 -&gt; 加载项 -&gt; 中文繁简转换增益集</li> <li>管理 -&gt; COM加载项 -&gt; 转到</li> <li>勾选 中文繁简转换增益集</li> </ul> </li> <li>使用 <ul> <li>选中要转换的文本、单元格、区域</li> <li>审阅 -&gt; 中文简繁转换</li> <li>[可选]勾选转换常用词汇</li> <li>[可选]自定义词典</li> </ul> </li> <li>评价 <ul> <li>仅限于Windows</li> <li>用户友好自带转换常用词汇词典</li> </ul> </li> </ul>

2026/3/24
阅读更多

Github GitHub 个人资料徽章和成就一览

<img src="https://localfreedom.pages.dev/img/github-achievements.jpg" alt="Featured image of post Github GitHub 个人资料徽章和成就一览" /><p>浏览 Github 时,会见到有些用户 Profile 左侧头像下有一些徽章,或者自己的 Profile 也会出现徽章。 这是 Github 的成就系统,算是商业产品一种激发用户兴趣的策略,本文简要罗列一些,有兴趣的可以玩玩。</p> <h2 id="官方介绍">官方介绍 </h2><p>博客: <a class="link" href="https://github.blog/news-insights/product-news/introducing-achievements-recognizing-the-many-stages-of-a-developers-coding-journey/" target="_blank" rel="noopener" >https://github.blog/news-insights/product-news/introducing-achievements-recognizing-the-many-stages-of-a-developers-coding-journey/</a></p> <p>论坛: <a class="link" href="https://github.com/community/community/discussions/categories/profile" target="_blank" rel="noopener" >https://github.com/community/community/discussions/categories/profile</a></p> <h2 id="简短列表">简短列表 </h2><p>生动形象参考 <a class="link" href="https://github.com/gomzyakov/github-achievements" target="_blank" rel="noopener" >https://github.com/gomzyakov/github-achievements</a></p> <h3 id="所有-github-个人资料徽章和成就的完整列表">所有 GitHub 个人资料徽章和成就的完整列表 </h3><table> <thead> <tr> <th>名称</th> <th>获取方式</th> </tr> </thead> <tbody> <tr> <td><strong>Heart On Your Sleeve</strong></td> <td>使用 ❤️ 表情符号对 GitHub 上的内容做出反应 <strong>(正在测试中)</strong></td> </tr> <tr> <td><strong>Open Sourcerer</strong></td> <td>用户已将 PR 合并到多个公共存储库中 <strong>(正在测试中)</strong></td> </tr> <tr> <td><strong>Starstruck</strong></td> <td>创建一个有 <strong>16 颗星</strong> 或<a class="link" href="#%e6%88%90%e5%b0%b1%e5%be%bd%e7%ab%a0%e7%ad%89%e7%ba%a7" >更多星</a> 的仓库.</td> </tr> <tr> <td><strong>Quickdraw</strong></td> <td>在打开后 5 分钟内关闭问题或拉取请求.</td> </tr> <tr> <td><strong>Pair Extraordinaire</strong></td> <td>在 <strong>一个</strong> 或 <a class="link" href="#%e6%88%90%e5%b0%b1%e5%be%bd%e7%ab%a0%e7%ad%89%e7%ba%a7" >更多</a> 合并拉取请求中共同创作。</td> </tr> <tr> <td><strong>Pull Shark</strong></td> <td><strong>2 个PR</strong> 或<a class="link" href="#%e6%88%90%e5%b0%b1%e5%be%bd%e7%ab%a0%e7%ad%89%e7%ba%a7" >以上</a>被合并.</td> </tr> <tr> <td><strong>Galaxy Brain</strong></td> <td>两个或<a class="link" href="#%e6%88%90%e5%b0%b1%e5%be%bd%e7%ab%a0%e7%ad%89%e7%ba%a7" >两个以上</a>的回答被标记为“答案”.</td> </tr> <tr> <td><strong>YOLO</strong></td> <td>在不进行代码审查的情况下合并 <strong>至少一个</strong> PR.</td> </tr> <tr> <td><strong>Public Sponsor</strong></td> <td>通过 <a class="link" href="https://github.com/sponsors" target="_blank" rel="noopener" >GitHub Sponsors</a> 打赏开源项目.</td> </tr> <tr> <td><strong>Mars 2020 Contributor</strong></td> <td>向用于 <a class="link" href="https://github.com/readme/featured/nasa-ingenuity-helicopter" target="_blank" rel="noopener" >Mars 2020 Helicopter Mission</a> 的存储库贡献了代码 <em>已无法再获取。</em></td> </tr> <tr> <td><strong>Arctic Code Vault Contributor</strong></td> <td>向用于 <a class="link" href="https://archiveprogram.github.com/" target="_blank" rel="noopener" >2020 GitHub Archive Program</a> 的存储库贡献了代码. <em>已无法再获取。</em></td> </tr> </tbody> </table> <h3 id="成就徽章等级">成就徽章等级 </h3><p>一些徽章不仅具有基础版,还可以继续升级。</p> <table> <thead> <tr> <th>成就等级</th> <th style="text-align:center">默认</th> <th style="text-align:center">黄铜</th> <th style="text-align:center">白银</th> <th style="text-align:center">黄金</th> </tr> </thead> <tbody> <tr> <td><strong>Starstruck</strong></td> <td style="text-align:center">16 星</td> <td style="text-align:center">128 星</td> <td style="text-align:center">512 星</td> <td style="text-align:center">4096 星 <br><a class="link" href="https://github.com/torvalds?achievement=starstruck&amp;tab=achievements" target="_blank" rel="noopener" >@torvalds</a></td> </tr> <tr> <td><strong>Pair Extraordinaire</strong></td> <td style="text-align:center">1 个拉取请求 <br><a class="link" href="https://github.com/gomzyakov?achievement=pair-extraordinaire&amp;tab=achievements" target="_blank" rel="noopener" >@gomzyakov</a></td> <td style="text-align:center">10 个拉取请求</td> <td style="text-align:center">24 个拉取请求</td> <td style="text-align:center">48 个拉取请求 <br><a class="link" href="https://github.com/Rongronggg9?achievement=pair-extraordinaire&amp;tab=achievements" target="_blank" rel="noopener" >@Rongronggg9</a></td> </tr> <tr> <td><strong>Pull Shark</strong></td> <td style="text-align:center">2 个拉取请求</td> <td style="text-align:center">16 个拉取请求</td> <td style="text-align:center">128 个拉取请求</td> <td style="text-align:center">1024 个拉取请求 <br><a class="link" href="https://github.com/ljharb?achievement=pull-shark&amp;tab=achievements" target="_blank" rel="noopener" >@ljharb</a></td> </tr> <tr> <td><strong>Galaxy Brain</strong></td> <td style="text-align:center">2 个答案</td> <td style="text-align:center">8 个答案</td> <td style="text-align:center">16 个答案</td> <td style="text-align:center">32 个答案 <br><a class="link" href="https://github.com/ljharb?achievement=galaxy-brain&amp;tab=achievements" target="_blank" rel="noopener" >@ljharb</a></td> </tr> <tr> <td><strong>Heart On Your Sleeve</strong></td> <td style="text-align:center">???</td> <td style="text-align:center">???</td> <td style="text-align:center">???</td> <td style="text-align:center">???</td> </tr> <tr> <td><strong>Open Sourcerer</strong></td> <td style="text-align:center">???</td> <td style="text-align:center">???</td> <td style="text-align:center">???</td> <td style="text-align:center">???</td> </tr> </tbody> </table> <h3 id="高亮成就">高亮成就 </h3><table> <thead> <tr> <th>名称</th> <th>是否可以获取</th> <th>如何获得</th> </tr> </thead> <tbody> <tr> <td><strong>Pro</strong></td> <td>是</td> <td>使用 <a class="link" href="https://docs.github.com/en/get-started/learning-about-github/githubs-products#github-pro" target="_blank" rel="noopener" >GitHub Pro</a></td> </tr> <tr> <td><strong>Developer Program Member</strong></td> <td>是</td> <td>成为 <a class="link" href="https://docs.github.com/en/developers/overview/github-developer-program" target="_blank" rel="noopener" >GitHub Developer Program</a> 的注册会员</td> </tr> <tr> <td><strong>Security Bug Bounty Hunter</strong></td> <td>是</td> <td>在 <a class="link" href="https://bounty.github.com/" target="_blank" rel="noopener" >GitHub Security</a> 中寻找安全漏洞</td> </tr> <tr> <td><strong>GitHub Campus Expert</strong></td> <td>是</td> <td>参与 <a class="link" href="https://education.github.com/experts" target="_blank" rel="noopener" >GitHub Campus Program</a>(开放于<a class="link" href="https://education.github.com/campus_experts" target="_blank" rel="noopener" >2024年8月</a>)</td> </tr> <tr> <td><strong>Security Advisory Credit</strong></td> <td>是</td> <td>提交给 <a class="link" href="https://github.com/advisories" target="_blank" rel="noopener" >GitHub Advisory Database</a> 的安全性建议被接受</td> </tr> <tr> <td><strong>GitHub Star</strong></td> <td>是</td> <td>成为 <a class="link" href="https://stars.github.com" target="_blank" rel="noopener" >GitHub Star</a></td> </tr> <tr> <td><strong>Discussion answered</strong></td> <td>否</td> <td>在讨论中的回复被标记为答案</td> </tr> </tbody> </table>

2026/3/16
阅读更多

搭建 KMS 服务器激活微软软件

<img src="https://localfreedom.pages.dev/img/kms.jpeg" alt="Featured image of post 搭建 KMS 服务器激活微软软件" /><h2 id="introduction">Introduction </h2><p>KMS(Key Management Service)是微软密钥管理服务,是在Windows Vista之后的产品中的一种新型产品激活机制。 诞生之后微软批量版软件不再能用序列号永久激活,而是需要定期连接 KMS 服务器,通常是180天。</p> <p>搭建自己的KMS服务器可以提供免费甚至自主可控的激活,而避免激活工具可能包含病毒,享受原版系统。 XP可以直接序列号激活,Win7可以用OEM-SLIC2.1激活,Win10及Office则不能用以上方式完美激活,在TSforge但生前,伪造KMS成为最佳选项。</p> <h2 id="dependence">Dependence </h2><h3 id="微软官方原版镜像">微软官方原版镜像 </h3><ul> <li>Windows 10/11 在官网提供镜像下载,且有<a class="link" href="https://massgrave.dev/genuine-installation-media" target="_blank" rel="noopener" >MAS镜像</a></li> <li>MSDN,我告诉你 <a class="link" href="https://msdn.itellyou.cn/" target="_blank" rel="noopener" >https://msdn.itellyou.cn/</a> 长期免费分享所有者自订的MSDN,需要P2P下载</li> <li>利用学生身份可以尝试参与微软学生计划以更可靠的获得原版镜像的校验码</li> </ul> <h3 id="kms工具包">KMS工具包 </h3><ul> <li><a class="link" href="forums.mydigitallife.net" >My Digital Life</a> 论坛发起了伪造KMS的项目</li> <li>这里推荐博主审计过的几个可靠实现: <ul> <li>C版本 <a class="link" href="https://github.com/Wind4/vlmcsd" target="_blank" rel="noopener" >https://github.com/Wind4/vlmcsd</a></li> <li>python版本 <a class="link" href="https://github.com/SystemRage/py-kms" target="_blank" rel="noopener" >https://github.com/SystemRage/py-kms</a></li> <li>python版本fork继承(将GUI改为WebUI) <a class="link" href="https://github.com/Py-KMS-Organization/py-kms" target="_blank" rel="noopener" >https://github.com/Py-KMS-Organization/py-kms</a></li> </ul> </li> </ul> <h3 id="密钥">密钥 </h3><ul> <li>如果安装文件就是批量版一般自带一个VLK</li> <li>如果是官网下的普通版本则需要搜一个VLK,任意皆可,这里给出参考 <ul> <li>Win7: FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4</li> <li>Win10: W269N-WFGWX-YVC9B-4J6C9-T83GX</li> <li>Office2016: XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99</li> <li>Office2019: NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP</li> </ul> </li> </ul> <h2 id="process">Process </h2><h3 id="准备kms服务器">准备KMS服务器 </h3><ul> <li>服务器可以是一台正经服务器,也可以是路由器或虚拟机,只要有待激活机器可到达的IP和端口即可</li> <li>推荐使用 VirtualBox 或 VMware 安装 Ubuntu 虚拟机</li> </ul> <h3 id="部署kms服务">部署KMS服务 </h3><h4 id="下载kms工具包任选一个">下载KMS工具包(任选一个) </h4><ul> <li>C版本 <a class="link" href="https://github.com/Wind4/vlmcsd/releases" target="_blank" rel="noopener" >https://github.com/Wind4/vlmcsd/releases</a></li> <li>python版本 <a class="link" href="https://github.com/SystemRage/py-kms" target="_blank" rel="noopener" >https://github.com/SystemRage/py-kms</a></li> </ul> <h4 id="将kms工具包复制到kms服务器">将KMS工具包复制到KMS服务器 </h4><ul> <li>真实服务器可用 RDP 或 Fileilla</li> <li>虚拟机可用共享文件夹甚至直接拖拽</li> <li>如果只复制需要的文件别忘了附属的DLL文件</li> </ul> <h4 id="启动kms服务">启动KMS服务 </h4><ul> <li>C版本根据操作系统和CPU选择相应可执行文件 <ul> <li>如 binaries/Linux/intel/static/vlmcsd-x64-musl-static 不需要root权限</li> <li>不报错即成功,否则请检查端口占用</li> <li>服务会后台运行,注销可解除,但结束进程好像难以停止</li> </ul> </li> <li>python版本的执行 <code>python3 pykms_Server.py</code> <ul> <li>Ubuntu18.04 开始自带默认 Python3, 也有 Python2 需要用 <code>whereis</code> 查找</li> <li>logging 可能不能正确打印日志,不报错可认为正常</li> <li>服务会随进程运行,结束进程即停止服务并解除端口占用</li> </ul> </li> </ul> <h3 id="安装原版系统并激活">安装原版系统并激活 </h3><ul> <li>先正确安装Windows,可不输入密钥或输入任意VLK</li> <li>连接网络</li> <li>用管理员权限运行cmd或powershell</li> </ul> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">slmgr /ipk 批量版密钥(如果已经自带或输入过则不用,可在计算机属性中查看,如W269N-WFGWX-YVC9B-4J6C9-T83GX) </span></span><span class="line"><span class="cl">slmgr /skms KMS服务器IP </span></span><span class="line"><span class="cl">slmgr /ato </span></span><span class="line"><span class="cl">slmgr /xpr </span></span></code></pre></td></tr></table> </div> </div><ul> <li>/ato可能需要几分种,成功激活会提示,py-kms也会打印提示</li> <li>/xpr显示激活状态,剩余多少天</li> </ul> <h3 id="安装批量版office并激活">安装批量版Office并激活 </h3><ul> <li>首先正常安装 MS Office 的批量版 <ul> <li>2016及以上的 C2R 版本可以<a class="link" href="https://localfreedom.pages.dev/p/office-deployment-tool/" >使用ODT配置下载</a></li> </ul> </li> <li>Office2016 VLK: XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99</li> <li>用管理员权限运行 cmd 或 powershell</li> </ul> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cscript ospp.vbs /inpkey:批量版密钥(如果已经自带或输入过则不用) </span></span><span class="line"><span class="cl">cscript ospp.vbs /sethst:KMS的IP或域名 </span></span><span class="line"><span class="cl">cscript ospp.vbs /act </span></span><span class="line"><span class="cl">cscript ospp.vbs /dstatus </span></span></code></pre></td></tr></table> </div> </div><ul> <li>其中 csript.exe 在 <code>C:\Windows\system32</code> , ospp.vbs 在MS Office 安装目录(例如C:\Program Files\Microsoft Office\Office16)</li> </ul> <h2 id="hint">Hint </h2><ul> <li>vlmcsd-x64-musl-static中vlmcsd的字母d</li> <li>win7本机激活Office2016,IP应避开 127.0.0.1 和 localhost ,可选 127.0.0.2 等</li> <li>Anaconda 的 python 如果出问题,试试操作系统的 python3</li> <li>Win10 目前不能本机激活</li> <li>Win7 旗舰版尚未发现KMS激活方法</li> <li>py-kms 对于 21H2 和 Office2021 及以后需要自行补丁,在pykms_Base.py的164添加。 <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-pykms_Base.py" data-lang="pykms_Base.py"><span class="line"><span class="cl"> <span class="c1"># Get a name for SkuId, AppId. </span> </span></span><span class="line"><span class="cl"> <span class="n">kmsdb</span> <span class="o">=</span> <span class="n">kmsDB2Dict</span><span class="p">()</span> </span></span><span class="line"><span class="cl"><span class="mi">164</span><span class="o">+</span> <span class="n">appName</span><span class="p">,</span> <span class="n">skuName</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">applicationId</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">skuId</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">appitems</span> <span class="o">=</span> <span class="n">kmsdb</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">appitem</span> <span class="ow">in</span> <span class="n">appitems</span><span class="p">:</span> </span></span></code></pre></td></tr></table> </div> </div></li> </ul>

2026/3/1
阅读更多

用 Ohook 激活微软 Office 全套

<img src="https://localfreedom.pages.dev/img/MAS-Ohook.jpeg" alt="Featured image of post 用 Ohook 激活微软 Office 全套" /><h2 id="officehook方法">OfficeHook方法 </h2><h3 id="原理">原理 </h3><p><a class="link" href="https://massgrave.dev/ohook#how-does-it-work" target="_blank" rel="noopener" >https://massgrave.dev/ohook#how-does-it-work</a></p> <p>有人发现了 MS Office 产品的激活验证统一通过一个函数进行,于是逆向破解了其所在的DLL文件,通过hook该函数让所有Office产品在查询激活状态的时候得到已激活的结果。</p> <h3 id="支持的产品">支持的产品 </h3><p>由于微软并没有修改Office的激活检查方式,在 Windows Vista 或更高 Windows/Server 版本上安装的 Office 都支持。 UWP也就是应用商店的版本当然不支持。</p> <h3 id="实现">实现 </h3><p>该hook的代码<a class="link" href="https://github.com/asdcorp/ohook" target="_blank" rel="noopener" >开源</a>且及其简单,只修改了相关几个函数的返回参数。</p> <p><strong>经博主审查无任何风险,是激活 MS Office 的绝佳方法。</strong></p> <h2 id="复现">复现 </h2><h3 id="关键二进制补丁-sppc">关键二进制补丁 SPPC </h3><p>MAS官方提供了<a class="link" href="https://massgrave.dev/ohook#custom-sppcdll-info" target="_blank" rel="noopener" >复现其所内嵌的dll的指南</a>。</p> <p>其中要求的编译工具看起来不是官方的;具体到<a class="link" href="https://www.mingw-w64.org" target="_blank" rel="noopener" >MinGW官网</a>可以看到官方在SourceForge(<a class="link" href="https://sourceforge.net/projects/mingw-w64/files" target="_blank" rel="noopener" >https://sourceforge.net/projects/mingw-w64/files</a>)只提供源代码下载,预编译版本则通过发行版仓库和第三方提供,在官方背书的<a class="link" href="https://www.mingw-w64.org/downloads/#mingw-w64-builds" target="_blank" rel="noopener" >预编译工具链下载页面</a>可以找到<code>WinLibs.com</code>;进入<a class="link" href="https://winlibs.com/" target="_blank" rel="noopener" >WinLibs.com</a>可以看到其通过Github分发预编译版,链接和MAS指南中一致。</p> <p>控制时间<code>Set-TimeZone -Id 'UTC'; $date=[datetime]'2023/8/7 12:00';while($true){set-date $date; start-sleep -milliseconds 10;}</code>,使用<code>WinLibs.com</code>预编译工具链的相应版本编译ohook的0.5版本成功复现MAS中内嵌DLL。</p> <p>可以认为MAS的AIO脚本中内嵌DLL可信如其源代码。 MAS组织集成的AIO脚本其他部分多是辅助功能,无可疑之处。</p> <h3 id="pipeline">Pipeline </h3><p>MAS的<a class="link" href="https://github.com/massgravel/Microsoft-Activation-Scripts/blob/master/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd" target="_blank" rel="noopener" >一键运行脚本</a>运行时会有提示输出。 博主根据输出手动复制替换相关文件成功达到激活效果,如果对MAS脚本不放心完全可以手动逐步操作。</p> <h2 id="使用">使用 </h2><h3 id="逐步手动激活office">逐步手动激活Office </h3><p><a class="link" href="https://massgrave.dev/manual_ohook_activation" target="_blank" rel="noopener" >https://massgrave.dev/manual_ohook_activation</a> 亲自动手更可信,但一些额外步骤可能不够完善。</p> <h4 id="一般-c2r-版本激活">一般 C2R 版本激活 </h4><ul> <li>首先完成Office的安装,一般应选择64位版本。</li> <li>准备好 <code>sppc64.dll</code> 文件,建议从ohook项目release提取。</li> <li>以管理员权限在待激活Office的系统打开命令行。</li> <li>将系统自带的 <code>sppc.dll</code> 创建软链接到 Office C2R 系统目录并重命名为 <code>sppcs.dll</code>: <ul> <li><code>mklink &quot;%ProgramFiles%\Microsoft Office\root\vfs\System\sppcs.dll&quot; &quot;%windir%\System32\sppc.dll&quot;</code></li> </ul> </li> <li>将准备好的 <code>sppc64.dll</code> 复制到 Office C2R 系统目录并重命名为 <code>sppc.dll</code>。 <ul> <li><code>copy /y sppc64.dll &quot;%ProgramFiles%\Microsoft Office\root\vfs\System\sppc.dll&quot;</code></li> </ul> </li> <li><em>(可选)避免Office365联网检查产生冲突添加注册表项</em> <ul> <li><code>reg add HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v &quot;TimeOfLastHeartbeatFailure&quot; /t REG_SZ /d &quot;2040-01-01T00:00:00Z&quot; /f</code></li> </ul> </li> <li>添加序列号,如果是<a class="link" href="https://config.office.com/" target="_blank" rel="noopener" >ODT配置</a>的一般自带序列号。</li> <li>现在激活已经完成了。 <ul> <li><strong>注意</strong>: 如果所在Windows没有激活也会提示未激活,用TSforge或KMS激活Windows系统即可。</li> </ul> </li> </ul> <h4 id="win7-激活-office2016proplus-的-msi-版本">Win7 激活 Office2016ProPlus 的 MSI 版本 </h4><ul> <li>首先完成Office的安装,一般应选择64位版本。</li> <li>准备好 <code>sppc64.dll</code> 文件,建议从ohook项目release提取。</li> <li>以管理员权限在待激活Office的系统打开命令行。</li> <li>进入Office保护平台目录 <code>C:\Program Files\Common Files\Microsoft Shared\OfficeSoftwareProtectionPlatform</code></li> <li>重命名备份关键文件 <code>OSPPC.DLL</code>, 建议重命名为<code>OSPPC.DLL.bak</code>。</li> <li>将准备好的 <code>sppc64.dll</code> 复制到Office保护平台目录并重命名为 <code>OSPPC.DLL</code>。 <ul> <li><code>copy /y sppc64.dll &quot;C:\Program Files\Common Files\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPC.DLL&quot;</code></li> </ul> </li> <li>将系统原来的 <code>OSPPC.DLL</code> 创建软链接到 Office MSI 安装目录并重命名为 <code>sppcs.dll</code>: <ul> <li><code>mklink &quot;%ProgramFiles%\Microsoft Office\Office16\sppcs.dll&quot; &quot;%ProgramFiles%\Common Files\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPC.DLL.bak&quot;</code></li> </ul> </li> <li>现在激活已经完成了。 <ul> <li><strong>注意</strong>: 如果所在Windows没有激活也会提示未激活,用TSforge或KMS激活Windows系统即可。</li> </ul> </li> </ul> <h3 id="使用mas的aio脚本">使用MAS的AIO脚本 </h3><p>直接运行 <code>Ohook_Activation_AIO.cmd</code> 选择1安装Ohook激活即可自动完成激活。 脚本会提示文件操作,根据输出也可进行手动激活。</p> <h2 id="各版本office参考key">各版本Office参考Key </h2><ul> <li>Office 365 <ul> <li>O365AppsBasicRetail 3HYJN-9KG99-F8VG9-V3DT8-JFMHV</li> <li>O365BusinessRetail Y9NF9-M2QWD-FF6RJ-QJW36-RRF2T</li> <li>O365EduCloudRetail W62NQ-267QR-RTF74-PF2MH-JQMTH</li> <li>O365HomePremRetail 3NMDC-G7C3W-68RGP-CB4MH-4CXCH</li> <li>O365ProPlusRetail H8DN8-Y2YP3-CR9JT-DHDR9-C7GP3</li> <li>O365SmallBusPremRetail 2QCNB-RMDKJ-GC8PB-7QGQV-7QTQJ</li> </ul> </li> <li>Office 2016 <ul> <li>AccessRetail WHK4N-YQGHB-XWXCC-G3HYC-6JF94</li> <li>AccessRuntimeRetail RNB7V-P48F4-3FYY6-2P3R3-63BQV</li> <li>AccessVolume JJ2Y4-N8KM3-Y8KY3-Y22FR-R3KVK</li> <li>ExcelRetail RKJBN-VWTM2-BDKXX-RKQFD-JTYQ2</li> <li>ExcelVolume FVGNR-X82B2-6PRJM-YT4W7-8HV36</li> <li>HomeBusinessPipcRetail 2WQNF-GBK4B-XVG6F-BBMX7-M4F2Y</li> <li>HomeBusinessRetail HM6FM-NVF78-KV9PM-F36B8-D9MXD</li> <li>HomeStudentARMRetail PBQPJ-NC22K-69MXD-KWMRF-WFG77</li> <li>HomeStudentPlusARMRetail 6F2NY-7RTX4-MD9KM-TJ43H-94TBT</li> <li>HomeStudentRetail PNPRV-F2627-Q8JVC-3DGR9-WTYRK</li> <li>HomeStudentVNextRetail YWD4R-CNKVT-VG8VJ-9333B-RC3B8</li> <li>MondoRetail VNWHF-FKFBW-Q2RGD-HYHWF-R3HH2</li> <li>MondoVolume FMTQQ-84NR8-2744R-MXF4P-PGYR3</li> <li>OneNoteFreeRetail XYNTG-R96FY-369HX-YFPHY-F9CPM</li> <li>OneNoteRetail FXF6F-CNC26-W643C-K6KB7-6XXW3</li> <li>OneNoteVolume 9TYVN-D76HK-BVMWT-Y7G88-9TPPV</li> <li>OutlookRetail 7N4KG-P2QDH-86V9C-DJFVF-369W9</li> <li>OutlookVolume 7QPNR-3HFDG-YP6T9-JQCKQ-KKXXC</li> <li>PersonalPipcRetail 9CYB3-NFMRW-YFDG6-XC7TF-BY36J</li> <li>PersonalRetail FT7VF-XBN92-HPDJV-RHMBY-6VKBF</li> <li>PowerPointRetail N7GCB-WQT7K-QRHWG-TTPYD-7T9XF</li> <li>PowerPointVolume X3RT9-NDG64-VMK2M-KQ6XY-DPFGV</li> <li>ProPlusRetail GM43N-F742Q-6JDDK-M622J-J8GDV</li> <li>ProPlusVolume FNVK8-8DVCJ-F7X3J-KGVQB-RC2QY</li> <li>ProfessionalPipcRetail CF9DD-6CNW2-BJWJQ-CVCFX-Y7TXD</li> <li>ProfessionalRetail NXFTK-YD9Y7-X9MMJ-9BWM6-J2QVH</li> <li>ProjectProRetail WPY8N-PDPY4-FC7TF-KMP7P-KWYFY</li> <li>ProjectProVolume PKC3N-8F99H-28MVY-J4RYY-CWGDH</li> <li>ProjectProXVolume JBNPH-YF2F7-Q9Y29-86CTG-C9YGV</li> <li>ProjectStdRetail NTHQT-VKK6W-BRB87-HV346-Y96W8</li> <li>ProjectStdVolume 4TGWV-6N9P6-G2H8Y-2HWKB-B4G93</li> <li>ProjectStdXVolume N3W2Q-69MBT-27RD9-BH8V3-JT2C8</li> <li>PublisherRetail WKWND-X6G9G-CDMTV-CPGYJ-6MVBF</li> <li>PublisherVolume 9QVN2-PXXRX-8V4W8-Q7926-TJGD8</li> <li>SkypeServiceBypassRetail 6MDN4-WF3FV-4WH3Q-W699V-RGCMY</li> <li>SkypeforBusinessEntryRetail 4N4D8-3J7Y3-YYW7C-73HD2-V8RHY</li> <li>SkypeforBusinessRetail PBJ79-77NY4-VRGFG-Y8WYC-CKCRC</li> <li>SkypeforBusinessVolume DMTCJ-KNRKR-JV8TQ-V2CR2-VFTFH</li> <li>StandardRetail 2FPWN-4H6CM-KD8QQ-8HCHC-P9XYW</li> <li>StandardVolume WHGMQ-JNMGT-MDQVF-WDR69-KQBWC</li> <li>VisioProRetail NVK2G-2MY4G-7JX2P-7D6F2-VFQBR</li> <li>VisioProVolume NRKT9-C8GP2-XDYXQ-YW72K-MG92B</li> <li>VisioProXVolume G98Q2-B6N77-CFH9J-K824G-XQCC4</li> <li>VisioStdRetail NCRB7-VP48F-43FYY-62P3R-367WK</li> <li>VisioStdVolume XNCJB-YY883-JRW64-DPXMX-JXCR6</li> <li>VisioStdXVolume B2HTN-JPH8C-J6Y6V-HCHKB-43MGT</li> <li>WordRetail P8K82-NQ7GG-JKY8T-6VHVY-88GGD</li> <li>WordVolume YHMWC-YN6V9-WJPXD-3WQKP-TMVCV</li> </ul> </li> <li>Office 2019 <ul> <li>Access2019Retail WRYJ6-G3NP7-7VH94-8X7KP-JB7HC</li> <li>Access2019Volume 6FWHX-NKYXK-BW34Q-7XC9F-Q9PX7</li> <li>AccessRuntime2019Retail FGQNJ-JWJCG-7Q8MG-RMRGJ-9TQVF</li> <li>Excel2019Retail KBPNW-64CMM-8KWCB-23F44-8B7HM</li> <li>Excel2019Volume 8NT4X-GQMCK-62X4P-TW6QP-YKPYF</li> <li>HomeBusiness2019Retail QBN2Y-9B284-9KW78-K48PB-R62YT</li> <li>HomeStudentARM2019Retail DJTNY-4HDWM-TDWB2-8PWC2-W2RRT</li> <li>HomeStudentPlusARM2019Retail NM8WT-CFHB2-QBGXK-J8W6J-GVK8F</li> <li>HomeStudent2019Retail XNWPM-32XQC-Y7QJC-QGGBV-YY7JK</li> <li>Outlook2019Retail WR43D-NMWQQ-HCQR2-VKXDR-37B7H</li> <li>Outlook2019Volume RN3QB-GT6D7-YB3VH-F3RPB-3GQYB</li> <li>Personal2019Retail NMBY8-V3CV7-BX6K6-2922Y-43M7T</li> <li>PowerPoint2019Retail HN27K-JHJ8R-7T7KK-WJYC3-FM7MM</li> <li>PowerPoint2019Volume 29GNM-VM33V-WR23K-HG2DT-KTQYR</li> <li>ProPlus2019Retail BN4XJ-R9DYY-96W48-YK8DM-MY7PY</li> <li>ProPlus2019Volume T8YBN-4YV3X-KK24Q-QXBD7-T3C63</li> <li>Professional2019Retail 9NXDK-MRY98-2VJV8-GF73J-TQ9FK</li> <li>ProjectPro2019Retail JDTNC-PP77T-T9H2W-G4J2J-VH8JK</li> <li>ProjectPro2019Volume TBXBD-FNWKJ-WRHBD-KBPHH-XD9F2</li> <li>ProjectStd2019Retail R3JNT-8PBDP-MTWCK-VD2V8-HMKF9</li> <li>ProjectStd2019Volume RBRFX-MQNDJ-4XFHF-7QVDR-JHXGC</li> <li>Publisher2019Retail 4QC36-NW3YH-D2Y9D-RJPC7-VVB9D</li> <li>Publisher2019Volume K8F2D-NBM32-BF26V-YCKFJ-29Y9W</li> <li>SkypeforBusiness2019Retail JBDKF-6NCD6-49K3G-2TV79-BKP73</li> <li>SkypeforBusiness2019Volume 9MNQ7-YPQ3B-6WJXM-G83T3-CBBDK</li> <li>SkypeforBusinessEntry2019Retail N9722-BV9H6-WTJTT-FPB93-978MK</li> <li>Standard2019Retail NDGVM-MD27H-2XHVC-KDDX2-YKP74</li> <li>Standard2019Volume NT3V6-XMBK7-Q66MF-VMKR4-FC33M</li> <li>VisioPro2019Retail 2NWVW-QGF4T-9CPMB-WYDQ9-7XP79</li> <li>VisioPro2019Volume 33YF4-GNCQ3-J6GDM-J67P3-FM7QP</li> <li>VisioStd2019Retail 263WK-3N797-7R437-28BKG-3V8M8</li> <li>VisioStd2019Volume BGNHX-QTPRJ-F9C9G-R8QQG-8T27F</li> <li>Word2019Retail JXR8H-NJ3MK-X66W8-78CWD-QRVR2</li> <li>Word2019Volume 9F36R-PNVHH-3DXGQ-7CD2H-R9D3V</li> </ul> </li> <li>Office 2021 <ul> <li>Access2021Retail P286B-N3XYP-36QRQ-29CMP-RVX9M</li> <li>AccessRuntime2021Retail MNX9D-PB834-VCGY2-K2RW2-2DP3D</li> <li>Access2021Volume JBH3N-P97FP-FRTJD-MGK2C-VFWG6</li> <li>Excel2021Retail V6QFB-7N7G9-PF7W9-M8FQM-MY8G9</li> <li>Excel2021Volume WNYR4-KMR9H-KVC8W-7HJ8B-K79DQ</li> <li>HomeBusiness2021Retail JM99N-4MMD8-DQCGJ-VMYFY-R63YK</li> <li>HomeStudent2021Retail N3CWD-38XVH-KRX2Y-YRP74-6RBB2</li> <li>OneNoteFree2021Retail CNM3W-V94GB-QJQHH-BDQ3J-33Y8H</li> <li>OneNote2021Retail NB2TQ-3Y79C-77C6M-QMY7H-7QY8P</li> <li>OneNote2021Volume THNKC-KFR6C-Y86Q9-W8CB3-GF7PD</li> <li>Outlook2021Retail 4NCWR-9V92Y-34VB2-RPTHR-YTGR7</li> <li>Outlook2021Volume JQ9MJ-QYN6B-67PX9-GYFVY-QJ6TB</li> <li>Personal2021Retail RRRYB-DN749-GCPW4-9H6VK-HCHPT</li> <li>PowerPoint2021Retail 3KXXQ-PVN2C-8P7YY-HCV88-GVM96</li> <li>PowerPoint2021Volume 39G2N-3BD9C-C4XCM-BD4QG-FVYDY</li> <li>ProPlus2021Retail 8WXTP-MN628-KY44G-VJWCK-C7PCF</li> <li>ProPlus2021Volume RNHJY-DTFXW-HW9F8-4982D-MD2CW</li> <li>ProPlusSPLA2021Volume JRJNJ-33M7C-R73X3-P9XF7-R9F6M</li> <li>Professional2021Retail DJPHV-NCJV6-GWPT6-K26JX-C7PBG</li> <li>ProjectPro2021Retail QKHNX-M9GGH-T3QMW-YPK4Q-QRWMV</li> <li>ProjectPro2021Volume HVC34-CVNPG-RVCMT-X2JRF-CR7RK</li> <li>ProjectStd2021Retail 2B96V-X9NJY-WFBRC-Q8MP2-7CHRR</li> <li>ProjectStd2021Volume 3CNQX-T34TY-99RH4-C4YD2-KW6WH</li> <li>Publisher2021Retail CDNFG-77T8D-VKQJX-B7KT3-KK28V</li> <li>Publisher2021Volume 2KXJH-3NHTW-RDBPX-QFRXJ-MTGXF</li> <li>SkypeforBusiness2021Retail DVBXN-HFT43-CVPRQ-J89TF-VMMHG</li> <li>SkypeforBusiness2021Volume R3FCY-NHGC7-CBPVP-8Q934-YTGXG</li> <li>Standard2021Retail HXNXB-J4JGM-TCF44-2X2CV-FJVVH</li> <li>Standard2021Volume 2CJN4-C9XK2-HFPQ6-YH498-82TXH</li> <li>StandardSPLA2021Volume BQWDW-NJ9YF-P7Y79-H6DCT-MKQ9C</li> <li>VisioPro2021Retail T6P26-NJVBR-76BK8-WBCDY-TX3BC</li> <li>VisioPro2021Volume JNKBX-MH9P4-K8YYV-8CG2Y-VQ2C8</li> <li>VisioStd2021Retail 89NYY-KB93R-7X22F-93QDF-DJ6YM</li> <li>VisioStd2021Volume BW43B-4PNFP-V637F-23TR2-J47TX</li> <li>Word2021Retail VNCC4-CJQVK-BKX34-77Y8H-CYXMR</li> <li>Word2021Volume BJG97-NW3GM-8QQQ7-FH76G-686XM</li> </ul> </li> <li>Office 2024 <ul> <li>Access2024Retail P6NMW-JMTRC-R6MQ6-HH3F2-BTHKB</li> <li>Access2024Volume CXNJT-98HPP-92HX7-MX6GY-2PVFR</li> <li>Excel2024Retail 82CNJ-W82TW-BY23W-BVJ6W-W48GP</li> <li>Excel2024Volume 7Y287-9N2KC-8MRR3-BKY82-2DQRV</li> <li>Home2024Retail N69X7-73KPT-899FD-P8HQ4-QGTP4</li> <li>HomeBusiness2024Retail PRKQM-YNPQR-77QT6-328D7-BD223</li> <li>Outlook2024Retail 2CFK4-N44KG-7XG89-CWDG6-P7P27</li> <li>Outlook2024Volume NQPXP-WVB87-H3MMB-FYBW2-9QFPB</li> <li>PowerPoint2024Retail CT2KT-GTNWH-9HFGW-J2PWJ-XW7KJ</li> <li>PowerPoint2024Volume RRXFN-JJ26R-RVWD2-V7WMP-27PWQ</li> <li>ProjectPro2024Retail GNJ6P-Y4RBM-C32WW-2VJKJ-MTHKK</li> <li>ProjectPro2024Volume WNFMR-HK4R7-7FJVM-VQ3JC-76HF6</li> <li>ProjectStd2024Retail C2PNM-2GQFC-CY3XR-WXCP4-GX3XM</li> <li>ProjectStd2024Volume F2VNW-MW8TT-K622Q-4D96H-PWJ8X</li> <li>ProPlus2024Retail VWCNX-7FKBD-FHJYG-XBR4B-88KC6</li> <li>ProPlus2024Volume 4YV2J-VNG7W-YGTP3-443TK-TF8CP</li> <li>SkypeforBusiness2024Volume XKRBW-KN2FF-G8CKY-HXVG6-FVY2V</li> <li>Standard2024Volume GVG6N-6WCHH-K2MVP-RQ78V-3J7GJ</li> <li>VisioPro2024Retail HGRBX-N68QF-6DY8J-CGX4W-XW7KP</li> <li>VisioPro2024Volume GBNHB-B2G3Q-G42YB-3MFC2-7CJCX</li> <li>VisioStd2024Retail VBXPJ-38NR3-C4DKF-C8RT7-RGHKQ</li> <li>VisioStd2024Volume YNFTY-63K7P-FKHXK-28YYT-D32XB</li> <li>Word2024Retail XN33R-RP676-GMY2F-T3MH7-GCVKR</li> <li>Word2024Volume WD8CQ-6KNQM-8W2CX-2RT63-KK3TP</li> </ul> </li> </ul>

2026/2/22
阅读更多

Firefox浏览器用户配置手动迁移

<img src="https://localfreedom.pages.dev/img/firefox-profile.jpeg" alt="Featured image of post Firefox浏览器用户配置手动迁移" /><p>Firefox数据文件夹通常在 <code>~/.mozilla/firefox/</code>,其中每个<code>xxxxxxxx.name</code>文件夹是一套Profile,ESR版本的默认配置是 .default-esr。 需要离线手动迁移部分配置的时候,了解配置文件夹中文件的含义十分有必要。</p> <h2 id="书签下载历史记录和浏览历史记录">书签、下载历史记录和浏览历史记录 </h2><ul> <li>places.sqlite <ul> <li>该文件包含了您在 Firefox 中所有的书签、下载文件的记录和浏览网页的记录。了解更多信息,请查阅<a class="link" href="https://support.mozilla.org/zh-CN/kb/bookmarks-firefox" target="_blank" rel="noopener" >创建,管理书签</a>。</li> </ul> </li> <li>favicons.sqlite <ul> <li>这个文件夹存储了网站的图标,最好在恢复 places.sqlite 时也包要括这个文件。</li> </ul> </li> </ul> <h2 id="密码">密码 </h2><p>密码存放在两个文件中,缺一不可:</p> <ul> <li>key4.db——该文件保存了密码的密钥数据库,请务必把它和下面这个文件一并复制。</li> <li>logins.json——保存的密码。</li> </ul> <p>了解更多信息,请查阅<a class="link" href="https://support.mozilla.org/zh-CN/kb/password-manager-remember-delete-change-passwords" target="_blank" rel="noopener" >密码管理器——在 Firefox 中记住、删除和更改已保存的密码</a>。</p> <h2 id="站点设置">站点设置 </h2><ul> <li>permissions.sqlite <ul> <li>该文件保存了每个站点在 Firefox 中的相关许可。比如这个文件记录了哪些站点可以储存 Cookie、安装扩展程序或者显示弹出窗口等,哪些则不能。</li> </ul> </li> <li>content-prefs.sqlite <ul> <li>该文件补充了关于站点缩放的设置。</li> </ul> </li> </ul> <h2 id="搜索引擎">搜索引擎 </h2><ul> <li>search.json.mozlz4 <ul> <li>此文件保存用户安装的搜索引擎。更多信息,参看<a class="link" href="https://support.mozilla.org/zh-CN/kb/add-or-remove-search-engine-firefox" target="_blank" rel="noopener" >在 Firefox 中添加、删除搜索引擎</a>。</li> </ul> </li> </ul> <h2 id="个人词典">个人词典 </h2><ul> <li>persdict.dat <ul> <li>该文件保存着您添加到 Firefox 拼写检查词典的个人词汇。如果您从未向词典添加过自定义词汇,这个文件也就不会存在。</li> </ul> </li> </ul> <h2 id="自动完成历史记录">自动完成历史记录 </h2><ul> <li>formhistory.sqlite <ul> <li>该文件记录了您在搜索栏和网站表单中曾经输入过的信息。详情参见<a class="link" href="https://support.mozilla.org/zh-CN/kb/control-whether-firefox-automatically-fills-forms" target="_blank" rel="noopener" >表单自动完成</a>。</li> </ul> </li> </ul> <h2 id="cookie">Cookie </h2><ul> <li>cookies.sqlite <ul> <li>Cookie 在不同站点有不同用处:有的网站使用 Cookie 让您保持登录状态;有的用它记录您在网站上的偏好设置;还有的网站用 Cookie 识别您曾经访问过某个特点的网站。</li> </ul> </li> </ul> <h2 id="dom存储">DOM存储 </h2><p>DOM存储是对Cookie的补充和替代,涉及两个文件:</p> <ul> <li>webappsstore.sqlite <ul> <li>每个网站的信息都被存储在此文件中。</li> </ul> </li> <li>chromeappsstore.sqlite <ul> <li>该文件存储着 about:* 页面的信息。</li> </ul> </li> </ul> <p>DOM存储是一种更现代化的方法,在老版本中可能不存在。</p> <h2 id="安全证书设置">安全证书设置 </h2><ul> <li>cert9.db <ul> <li>该文件保存了您所有的安全证书设置和导入到 Firefox 的 SSL 证书。</li> </ul> </li> </ul> <h2 id="安全设备设置">安全设备设置: </h2><ul> <li>pkcs11.txt <ul> <li>该文件是保存安全模块配置的文件。</li> </ul> </li> </ul> <h2 id="各类文件的下载动作">各类文件的下载动作 </h2><ul> <li>handlers.json <ul> <li>该文件保存的设置可以告诉 Firefox 遇到特定类型文件时该做什么,比如您想保存这种文件还是想用特定程序打开它。</li> </ul> </li> </ul> <h2 id="扩展">扩展 </h2><ul> <li>extensions <ul> <li>该文件夹保存着已安装的<a class="link" href="https://addons.mozilla.org/firefox/extensions" target="_blank" rel="noopener" >扩展</a>。</li> </ul> </li> </ul> <h2 id="离线翻译语言包">离线翻译语言包 </h2><p>离线翻译是128版本后加入的新功能,并在140esr中加入了中文支持。 迁移涉及翻译包数据文件夹和两个索引文件。 <a class="link" href="https://support.mozilla.org/en-US/questions/1487296" target="_blank" rel="noopener" >https://support.mozilla.org/en-US/questions/1487296</a></p> <ul> <li>storage/permanent/chrome/idb/3870112724rsegmnoittet-es.files/ <ul> <li>这个文件夹中看起来像翻译包的数据文件</li> </ul> </li> <li>storage/permanent/chrome/idb/3870112724rsegmnoittet-es.sqlite <ul> <li>数据库索引已下载的翻译资料</li> </ul> </li> <li>storage/permanent/chrome/idb/3870112724rsegmnoittet-es.sqlite-wal <ul> <li>空文件估计用于运行时</li> </ul> </li> </ul> <hr> <p><a class="link" href="https://support.mozilla.org/zh-CN/kb/about-your-important-data-and-their-files" target="_blank" rel="noopener" >https://support.mozilla.org/zh-CN/kb/about-your-important-data-and-their-files</a></p>

2026/2/15
阅读更多

将Win10安装到移动硬盘

<img src="https://localfreedom.pages.dev/img/win-to-go.jpeg" alt="Featured image of post 将Win10安装到移动硬盘" /><h2 id="wintogo">WinToGo </h2><p>更换PC的时候将磁盘改装到新PC,如果驱动差异不大便可以无缝使用之前习惯的环境。那如果将系统直接安装到移动磁盘岂不是更容易享受这种方便? Windows官方是提供这种功能的,叫做 WinToGo,但仅限企业版。 Windows系统非企业版默认是不能安装到USB接入的驱动器的,本文介绍一种借助虚拟机将 Windows 10 系统安装到移动磁盘的方法。</p> <h2 id="可以直接用vmware使用物理硬盘装系统直接将系统装到移动硬盘上">可以直接用vmware使用物理硬盘装系统直接将系统装到移动硬盘上。 </h2><p>VMware需要以管理员身份运行。</p> <p>在虚拟机界面像正常安装 Windows 10 那样装好系统。 主机所需驱动可以考虑在虚拟机界面直接装好,以免之后缺少驱动移动硬盘无法在物理机启动。</p> <p>关闭虚拟机。 重启物理机通过USB直接启动装好的移动磁盘上的Win10即可。</p> <h2 id="在虚拟机的虚拟磁盘至少20g中安装好再用磁盘克隆软件克隆到移动硬盘">在虚拟机的虚拟磁盘(至少20G)中安装好,再用磁盘克隆软件克隆到移动硬盘。 </h2><p>这样用VMware或VirtualBox都可以,也无需管理员权限。 系统及驱动安装过程同上,和一般安装没什么区别。</p> <p>磁盘克隆可以用Linux系统比如Manjaro的Live镜像启动虚拟机,使用其自带的的dd命令将虚拟磁盘拷贝到主机共享文件夹中成为镜像文件。 <code>dd if=/dev/sda of=/path/to/file.img</code></p> <p>主机也可以使用<a class="link" href="https://reboottools.com/programs/dd-for-windows/" target="_blank" rel="noopener" >DD软件</a>将磁盘镜像原样拷贝到移动硬盘中。 <code>dd if=/path/to/file.img of=\\.\PhysicalDriveX</code></p> <h2 id="处理引导异常">处理引导异常 </h2><p>LTSC(仅2019版本)因为 <code>wpprecorder.sys</code> 的Bug从移动硬盘启动引导会出故障。 自行安装需要用其他Windows10的同名文件替换,或者在虚拟机装好后再把系统更新装了会修复这个文件的bug。</p> <hr> <p>流程参考 <a class="link" href="https://zhuanlan.zhihu.com/p/59194720" target="_blank" rel="noopener" >https://zhuanlan.zhihu.com/p/59194720</a> 引导修复 <a class="link" href="https://blog.csdn.net/NetMicrobe/article/details/109382083" target="_blank" rel="noopener" >https://blog.csdn.net/NetMicrobe/article/details/109382083</a></p>

2026/2/5
阅读更多

配置数据科学研究环境

<img src="https://localfreedom.pages.dev/img/data-science-env.jpeg" alt="Featured image of post 配置数据科学研究环境" /><h2 id="简介">简介 </h2><p>数据科学研究环境主要是基于 conda 搭建便于数据科学和人工智能研究的计算机开发环境。 数据科学和人工智能主要是用 Python 程式语言,而 OS 的 python 包管理完全不能适应前沿研究的需要。 尽管 Python 本身就有灵活的包管理和虚拟环境功能,但数据科学研究所依赖的 scipy, cuda 等工具链安装非常容易出错。 这里主要介绍数据科学所涉及的开发环境配置注意事项。</p> <h3 id="主要包括">主要包括 </h3><ul> <li>包管理工具 conda</li> <li>集成开发环境 jupyter</li> <li>远程终端管理 tmux。</li> </ul> <h2 id="conda">conda </h2><p>conda是一个包管理器,主要为了管理数据科学所需要的 Python 包而设计。 早先是为了解决 pip 安装 numpy 和 scipy 时复杂的编译问题。 后来更广泛的支持了基于 Python 的数据科学和人工智能研究。</p> <p>conda 不限于 Python 包管理,其能解决 scipy 等复杂的编译问题,是因为其顺便支持了相关 C\C++ 包的管理。</p> <p>如果把 conda 比作 apt, 那么 anaconda 和 miniconda 就是发行版,pip 可以安装发行版以外的包。 conda 也有类似 main, contrib, non-free 之类的通道的概念,类似 Ubuntu 的 ppa。</p> <h3 id="优点">优点 </h3><ul> <li>无需管理员权限,无需依赖,直接执行sh安装包即可安装到用户目录</li> <li>多虚拟环境支持,可以创建不同的环境安装不同的包,尤其是不同版本的cuda,甚至是不同版本的Python</li> <li>比较好的解决Python包的依赖问题</li> <li>兼容用 pip 安装额外的包</li> </ul> <h3 id="安装">安装 </h3><p>conda 通常选择 Anaconda 或 miniconda 之一进行安装。 Anaconda 预先包含常用的数据科学相关 Python 包,miniconda 如名字所示只包含精简环境。 Anaconda 有商业公司支持,miniconda 是衍生出来的发行版,其中的包都是一样的,只是初始内容的不同。 为了便于离线开箱即用,这里推荐 Anaconda。</p> <p>安装默认位置是主目录,可以修改。 安装结束的时候问是否添加初始化,如果添加会在Linux服务器当前用户Home的 <code>.bashrc</code> 或 <code>.zshrc</code> 添加 conda 的初始化命令。 目前初始化主要是加载环境变量和激活默认环境,建议添加初始化。</p> <h3 id="功能">功能 </h3><ul> <li>包操作 <ul> <li>list install update remove <ul> <li>-c 指定通道</li> </ul> </li> <li>也可以用pip安装包,包会被安装到当前环境,而不会污染系统或用户空间。</li> </ul> </li> <li>环境操作 <ul> <li>config # 创建配置文件.condarc</li> <li>create -n 环境名称 包名=版本 # 创建包含所指定包的新环境</li> <li>info # 显示信息</li> <li>activate 环境名称 # 进入指定环境</li> <li>deactivate # 退出当前环境</li> <li>remove -n 环境名称 &ndash;all # 删除环境</li> </ul> </li> </ul> <h3 id="配置">配置 </h3><ul> <li>参考配置</li> </ul> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">channels: </span></span><span class="line"><span class="cl"> - defaults </span></span><span class="line"><span class="cl">show_channel_urls: true </span></span></code></pre></td></tr></table> </div> </div><ul> <li>不同环境划分建议 <ul> <li>base 主要安装 jupyter 等默认包和公共包</li> <li>pytorch tensorflow 等包分别装到不同的子环境</li> <li>不同项目考虑使用不同子环境</li> </ul> </li> </ul> <h3 id="注意">注意 </h3><p>用pip安装conda里没有的包,尽量用环境中的pip而不是系统的pip。</p> <blockquote> <p>pip换源 <code>pip config set global.index-url https://mirror.url.link/simple</code></p> </blockquote> <h2 id="jupyter">jupyter </h2><p>Jupyter Notebook (此前被称为 IPython notebook) 是一个交互式笔记本,支持运行 40 多种编程语言。后来又开发了 <code>Jupyter Lab</code> 成为更加集成,功能更加服务的交互工作环境。</p> <h3 id="部署">部署 </h3><p>直接安装Anaconda就会附带它们。 miniconda或新环境需要手动安装<code>conda install jupyter-lab</code>。</p> <p>Jupyter Lab比Jupyter Notebook更加集成和方便,主要是多了文件夹浏览侧边栏。 Jupyter套件的不同部分共享很多配置,通常设置命令采用notebook。 比如生成配置文件 <code>jupyter notebook --generate-config</code> 通过配置文件可以进行更多配置,所有jupyter系列共用配置文件。 主要配置端口、密码、监听地址等。</p> <p>进入想启动 jupyter 服务的目录,通过 <code>--ip</code> 参数即可配置远程。其实不用 <code>--ip</code> 也是可以的,但是默认配置文件限制只能本地访问。 如果使用 Jupyter Notebook 输入: <code>jupyter notebook --ip='*'</code> 如果使用 Jupyter Lab 输入: <code>jupyter-lab –ip='*'’</code></p> <p><code>--ip</code> 是指定服务要监听的ip,应当写服务器的某个ip地址(对于多网卡情况)。 指定*监听所有ip,会警告但自己用没什么事儿。 使用期间服务不能关,也就是ssh不能断或挂nohup,或者用Tmux来运行。 推荐使用Tmux,既可以避免意外中断连接没保存,也能查看控制台输出检查问题。</p> <p>如果服务器安装了字符界面浏览器,执行命令后可能会弹出一个字符浏览器界面,按Q退出。 默认是8888端口,如果被占用了,会自动分配别的端口和地址。 不用理会这些,反正之后会给出一个web地址(如果是<code>--ip=’*’</code>要把 localhost 换成服务器IP),把地址复制到个人电脑的浏览器里就可以使用服务器的 Jupyter 了,用服务器的 GPU 和 Disk 就像用本机一样方便。</p> <h3 id="注意-1">注意 </h3><p>在浏览器使用jupyter就像本机似的,可以删除东西,所以尽量在项目根目录启动服务,而不直接在系统根目录启动。 这样虽然是使用服务器的算力,但是浏览器加载还是在个人电脑,而jupyter的加载又很耗内存,所以本机加载不出来的ipynb文档用这个方法以然加载不出来。好处只是便于使用GPU等硬件资源。</p> <h2 id="tmux">Tmux </h2><p>数据科学和人工智能的研究经常需要长时间的在服务器上训练模型,这就需要在断开连接后保持程序继续运行。 服务器安装的Linux类OS通常自带的nohup可以保持程序运行但是没有交互功能。 tmux和screen是两个持久终端软件,功能类似,这里推荐tmux。</p> <h3 id="配置-1">配置 </h3><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">set -g mouse on # 启用鼠标滚动 </span></span></code></pre></td></tr></table> </div> </div><h3 id="命令参数">命令参数 </h3><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span><span class="lnt">6 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">tmux <span class="c1"># 打开一个默认命名的窗口</span> </span></span><span class="line"><span class="cl">tmux new -s 窗口名称 <span class="c1"># 新建一个持久终端窗口,exit即可推出</span> </span></span><span class="line"><span class="cl"><span class="c1"># attach可以简写为a</span> </span></span><span class="line"><span class="cl">tmux attach <span class="c1"># 进入上一次的窗口</span> </span></span><span class="line"><span class="cl">tmux attach -t 窗口名称 <span class="c1"># 进入指定名称的窗口</span> </span></span><span class="line"><span class="cl">tmux ls <span class="c1"># 列出所有窗口</span> </span></span></code></pre></td></tr></table> </div> </div><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-vim" data-lang="vim"><span class="line"><span class="cl"><span class="p">:</span><span class="k">set</span> <span class="nx">mouse</span> <span class="nx">on</span> # <span class="nx">启用鼠标滚动</span> </span></span></code></pre></td></tr></table> </div> </div><h3 id="快捷键">快捷键 </h3><p>Tmux的快捷键基于Ctrl+B,类似的screen的快捷键基于Ctrl+A。 用法是按住Ctrl,先按B再按另一个表示所需功能的字母。</p> <ul> <li>C 窗口中创建新的标签页</li> <li>D 返回外部环境但不结束窗口</li> <li>W 进入窗口和标签页的导航</li> <li>: 进入输入命令模式</li> </ul>

2026/1/29
阅读更多

下载网站 Logo 图标

<img src="https://localfreedom.pages.dev/img/logo.svg" alt="Featured image of post 下载网站 Logo 图标" /><p>最近给博客的文章和Links页面尽可能的配置了图示,以显得更美观一些。 下面分享给Links页面配网站图标时的经验。</p> <h2 id="直接下载">直接下载 </h2><p>网站的logo通常是通过根目录的favicon.ico来实现的。只要访问 https://[域名]/favicon.ico 即可下载。</p> <p>⚠️注意: 有些喜欢追踪的网站每次得到的favicon.ico会变化,实现类似cookie的功能。</p> <h2 id="专门的下载站">专门的下载站 </h2><p>如果遇到了不能直接访问下载的网站,或者想要更简单的下载方法,那么一些 favicon下载的网站是非常好的选择,这样的网站有很多,比如:</p> <ul> <li><a class="link" href="https://favicongrabber.com/" target="_blank" rel="noopener" >https://favicongrabber.com/</a> 简洁易用</li> <li><a class="link" href="https://besticon-demo.herokuapp.com/" target="_blank" rel="noopener" >https://besticon-demo.herokuapp.com/</a> 可以抓取全尺寸logo</li> </ul> <h2 id="api服务">API服务 </h2><p>还有网站提供API服务来得到你目标网站的logo,比如:</p> <ul> <li><del><code>https://www.google.com/s2/favicons?domain=[域名]</code></del></li> <li><code>https://besticon-demo.herokuapp.com/icon?url=[域名]</code> <ul> <li>高级说明 <a class="link" href="https://github.com/mat/besticon" target="_blank" rel="noopener" >https://github.com/mat/besticon</a></li> </ul> </li> </ul>

2025/12/21
阅读更多

Windows 注册表使用指南

<img src="https://localfreedom.pages.dev/img/registry.png" alt="Featured image of post Windows 注册表使用指南" /><h2 id="简介">简介 </h2><p>注册表是Windows系统的管理机制,集中存储管理系统和应用软件的配置。 甚至对于Linux的兼容环境Wine的使用而言,甚至有人说用好注册表比懂Linux更有效。</p> <h2 id="结构">结构 </h2><h3 id="数据类型">数据类型 </h3><p>注册表的数据类型主要有以下五种:</p> <table> <thead> <tr> <th>显示类型</th> <th>数据类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>REG_SZ</td> <td>字符串</td> <td>文本字串</td> </tr> <tr> <td>REG_BINARY</td> <td>二进制数</td> <td>不定长度的二进制值,以十六进制显示</td> </tr> <tr> <td>REG_DWORD</td> <td>双字</td> <td>一个 32 位的二进制值,显示为 8 位的十六进制值</td> </tr> <tr> <td>REG_MULTI_SZ</td> <td>多字符串</td> <td>含有多个文本值的字符串,此名来源于字符串间用 nul 分隔、结尾两个 nul</td> </tr> <tr> <td>REG_EXPAND_SZ</td> <td>可擴充字符串</td> <td>含有环境变量的字符串</td> </tr> </tbody> </table> <p>注册表还有其他的数据类型,但是均不常用:</p> <ul> <li>REG_DWORD_BIG_ENDIAN - DWORD 的大头版本</li> <li>REG_DWORD_LITTLE_ENDIAN</li> <li>REG_FULL_RESOURCE_DESCRIPTOR</li> <li>REG_QWORD - DWORD 的四字(64 位)版本</li> <li>REG_FILE_NAME</li> </ul> <h3 id="分支">分支 </h3><p>注册表有五个一级分支:</p> <ul> <li>HKEY_CLASSES_ROOT 存储Windows可识别的文件类型的详细列表,以及相关联的程序。</li> <li>HKEY_CURRENT_USER 存储当前用户设置的信息。</li> <li>HKEY_LOCAL_MACHINE 包括安装在计算机上的硬件和软件的信息。</li> <li>HKEY_USERS 包含使用计算机的用户的信息。</li> <li>HKEY_CURRENT_CONFIG 这个分支包含计算机当前的硬件配置信息。</li> </ul> <h3 id="存储">存储 </h3><p>XP及以后注册表配置文件存放在 <code>C:\WINDOWS\SYSTEM32\CONFIG</code></p> <table> <thead> <tr> <th>名称</th> <th>注册表分支</th> <th>作用</th> </tr> </thead> <tbody> <tr> <td>DEFAULT</td> <td>HKEY_USERS.DEFAULT</td> <td>缺省启动用户的信息</td> </tr> <tr> <td>NTUSER.DAT</td> <td>HKEY_CURRENT_USER</td> <td>存储用户参数选择的信息(此文件放置于用户个人目录,和其他注册表文件是分开的)</td> </tr> <tr> <td>SAM</td> <td>HKEY_LOCAL_MACHINE\SAM</td> <td>用户及密码的数据库</td> </tr> <tr> <td>SECURITY</td> <td>HKEY_LOCAL_MACHINE\SECURITY</td> <td>安全性设置信息</td> </tr> <tr> <td>SOFTWARE</td> <td>HKEY_LOCAL_MACHINE\SOFTWARE</td> <td>安装的软件信息</td> </tr> <tr> <td>SYSTEM</td> <td>HKEY_LOCAL_MACHINE\SYSTEM</td> <td>存储计算机硬件和系统的信息</td> </tr> <tr> <td>USERDIFF</td> <td>HKEY_USERS</td> <td>管理员对用户强行进行的设置</td> </tr> </tbody> </table> <h2 id="操作">操作 </h2><p>通常由系统自带的注册表编辑器操作注册表。</p> <h3 id="reg文件编辑">.reg文件编辑 </h3><p>注册表可以通过<code>.reg</code>的文件来实现批量导入修改。 <code>.reg</code>文件通常为如下格式,首先声明版本并空一行,其中@可指定默认值,<code>&quot;</code> <code>\</code>需要转义。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-reg" data-lang="reg"><span class="line"><span class="cl">Windows Registry Editor Version 5.00 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="err">[KEY1]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;ValueName1&#34;</span><span class="o">=</span><span class="s">{Value Type}:{data}</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;ValueName2&#34;</span><span class="o">=</span><span class="s">{Value Type}:{data}</span> </span></span><span class="line"><span class="cl"><span class="err">[KEY2]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;ValueName1&#34;</span><span class="o">=</span><span class="s">{Value Type}:{data}</span> </span></span><span class="line"><span class="cl"><span class="err">[KEY3]</span> </span></span><span class="line"><span class="cl"><span class="na">@</span> <span class="o">=</span> <span class="s">&#34;default value name&#34;</span> </span></span><span class="line"><span class="cl"><span class="k">[</span><span class="nb">HKEY_LOCAL_MACHINE</span><span class="k">\key4\key5]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;slashes\\in\\the\\name&#34;</span> <span class="o">=</span> <span class="s">&#34;slashes\\in\\the\\data&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;quotes\&#34;in\&#34;the\&#34;name&#34;</span> <span class="o">=</span> <span class="s">&#34;quotes\&#34;in\&#34;the\&#34;data&#34;</span> </span></span></code></pre></td></tr></table> </div> </div><p>不同数据类型的书写格式</p> <table> <thead> <tr> <th>Value type</th> <th>Format</th> </tr> </thead> <tbody> <tr> <td>REG_SZ</td> <td>&ldquo;my string&rdquo;</td> </tr> <tr> <td>REG_DWORD</td> <td>dword: NNNNN (hex number)</td> </tr> <tr> <td>REG_MULTI_SZ</td> <td>multi_sz: &ldquo;my string&rdquo;, &ldquo;my string&rdquo;</td> </tr> <tr> <td>REG_BINARY</td> <td>hex: xx,xx,xx,xx &hellip;</td> </tr> <tr> <td>HEX</td> <td>hex(xxxxxxxx): xx,xx,xx,xx The hex(xx) types should correspond to the remaining Microsoft® Win32® registry types.</td> </tr> </tbody> </table> <p>甚至还可以使用条件语句</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-reg" data-lang="reg"><span class="line"><span class="cl"><span class="c1">;分号后面的是注释</span> </span></span><span class="line"><span class="cl"><span class="na">IF environment variable [</span><span class="o">=</span> <span class="s">value] [!]</span> </span></span><span class="line"><span class="cl"><span class="err">[KEY1]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;ValueName1&#34;</span><span class="o">=</span><span class="s">{Value Type}:{data}</span> </span></span><span class="line"><span class="cl"><span class="err">ENDIF</span> </span></span></code></pre></td></tr></table> </div> </div><p>可以用分号<code>;</code>为reg文件做注释,减号<code>-</code>表示删除操作。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-reg" data-lang="reg"><span class="line"><span class="cl"><span class="err">[-KEY1]</span> <span class="c1">;删去一个键</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="err">[KEy2]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;ValueName1&#34;</span><span class="o">=-</span> <span class="err">删去键中的一个值</span> </span></span></code></pre></td></tr></table> </div> </div><h2 id="常用配置reg文件参考">常用配置reg文件参考 </h2><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span><span class="lnt">14 </span><span class="lnt">15 </span><span class="lnt">16 </span><span class="lnt">17 </span><span class="lnt">18 </span><span class="lnt">19 </span><span class="lnt">20 </span><span class="lnt">21 </span><span class="lnt">22 </span><span class="lnt">23 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-SetupReference.reg" data-lang="SetupReference.reg"><span class="line"><span class="cl">Windows Registry Editor Version 5.00 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">[</span><span class="nb">HKEY_LOCAL_MACHINE</span><span class="k">\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\这里根据DriverDesc确定编号\NDI\params\NetworkAddress]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;LimitText&#34;</span><span class="o">=</span><span class="s">&#34;12&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;optional&#34;</span><span class="o">=</span><span class="s">&#34;1&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;ParamDesc&#34;</span><span class="o">=</span><span class="s">&#34;NetworkAddress&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;type&#34;</span><span class="o">=</span><span class="s">&#34;edit&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;UpperCase&#34;</span><span class="o">=</span><span class="s">&#34;1&#34;</span> </span></span><span class="line"><span class="cl"><span class="c1">;无线网卡可手动指定地址,第二位只能是2,6,A,E之一</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">[</span><span class="nb">HKEY_LOCAL_MACHINE</span><span class="k">\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.bmp&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.ico&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.jpeg&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.jpg&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;.png&#34;</span><span class="o">=</span><span class="s">&#34;PhotoViewer.FileAssoc.Tiff&#34;</span> </span></span><span class="line"><span class="cl"><span class="c1">;LTSC将图片关联到自带的图片查看器打开</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">[</span><span class="nb">HKEY_LOCAL_MACHINE</span><span class="k">\SYSTEM\Setup\LabConfig]</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;BypassTPMCheck&#34;</span><span class="o">=</span><span class="nv">dword</span><span class="p">:</span><span class="m">00000001</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;BypassRAMCheck&#34;</span><span class="o">=</span><span class="nv">dword</span><span class="p">:</span><span class="m">00000001</span> </span></span><span class="line"><span class="cl"><span class="na">&#34;BypassSecureBootCheck&#34;</span><span class="o">=</span><span class="nv">dword</span><span class="p">:</span><span class="m">00000001</span> </span></span><span class="line"><span class="cl"><span class="c1">;win11跳过硬件安装检测</span> </span></span></code></pre></td></tr></table> </div> </div><h2 id="技巧">技巧 </h2><p>在其他系统中直接进入目标系统盘运行注册表编辑器修改的仍然是运行的系统的注册表,应该运行当前系统的注册表编辑器,然后任意选择一项,然后点击文件-加载配置单元-浏览目标盘<code>C:\Windows\System32\Config</code>选择SYSTEM文件用别名挂载然后修改其中的内容。完成后再卸载配置单元。</p>

2025/12/17
阅读更多

VSCode扩展离线安装包直链下载

<img src="https://localfreedom.pages.dev/img/vsix.jpeg" alt="Featured image of post VSCode扩展离线安装包直链下载" /><p><a class="link" href="https://marketplace.visualstudio.com/vscode" target="_blank" rel="noopener" >VSCode官方扩展市场</a>和VS家族是共用的。 扩展的安装包为vsix格式文件,可以通过VSCode内置的扩展界面搜索安装也可以直接根据版本要求下载vsix包离线导入。 微软毕竟是商业大公司,当VSCode生态蓬勃发展后,便开始限制扩展市场与VSCodium等开源替代品的联系。 首先是提供的插件历史版本只限制在不到10个,且不提示扩展的历史版本要求的VSCode版本,这对于离线使用老版本的VSCode/VSCodium的用户已经不友好了。 接着甚至直接取消了商店网页的下载按钮,为了保障离线本地使用VSCode/VSCodium的自由,本博主研究了一下其下载链接用以获得插件的离线安装包。</p> <p>有<a class="link" href="https://stackoverflow.com/questions/37071388/how-can-i-install-visual-studio-code-extensions-offline/38866913" target="_blank" rel="noopener" >stackoverflow回答</a>提供了以下直链模板: <code>https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage</code></p> <p>其中<code>${publisher}</code>是发布者名称,<code>${extension name}</code>是扩展名称,<code>${version}</code>是版本号。 在早期直接从商店页面下载的离线安装包命名格式通常是<code>${publisher}.${extension name}-${version}.vsix</code>。 发布者名称和扩展名称很容易得到,商店页面或者其URL即可看出。 版本号目前还可以从商店查询最近几个,如果不确定<code>${version}</code>替换为latest即可。</p> <p>但是这个链接有个问题,无法指定架构信息,即x86或arm之类的。 对于大多数扩展支持架构为Universal,架构信息可以省略,但有些如C/C++扩展就要指定架构信息,尤其是默认架构居然是<code>win-arm32</code>。 有不同架构区别的扩展离线安装包的命名也会多处指示架构的部分,如<code>${publisher}.${extension name}-${version}@${target_platform}.vsix</code></p> <p>后来有<a class="link" href="https://stackoverflow.com/questions/79359919/how-can-i-download-vsix-files-now-that-the-visual-studio-code-marketplace-no-lo" target="_blank" rel="noopener" >stackoverflow回答</a>提供了更好的模板: <strong><code>https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${extension name}/${version}/vspackage?targetPlatform=${target_platform}</code></strong> 其中${target_platform}可选<code>win-x64</code>,<code>linux-x64</code>等,可以参考商店页面的介绍。 该模板不仅能指定架构信息,而且下载的离线安装包的名称和早期直接从商店页面下载的格式一样,都省的重命名了。</p> <p>为了更好的享受本地优先的离线使用软件的自由,请使用VSCodium版本,结合此方法安装扩展。 作者在此当然希望<a class="link" href="https://open-vsx.org" target="_blank" rel="noopener" >社区替代市场</a> (<a class="link" href="https://open-vsx.org" target="_blank" rel="noopener" >https://open-vsx.org</a>) 也能蓬勃发展,不过目前扩展的广泛程度和更新的及时性都不太好。</p>

2025/12/11
阅读更多

Github Flag Repeal by Online Free SMS Receive Service

<img src="https://localfreedom.pages.dev/img/github-flagged.png" alt="Featured image of post Github Flag Repeal by Online Free SMS Receive Service" /><h2 id="tldr">TL;DR </h2><p>In 2025 GitHub flagged my account and prompted me to complete SMS verification before I could submit an appeal. I managed to receive the code by using a free online SMS receiving service that let me complete the verification with a Canadian share phone number, filed a support ticket, and ultimately had the flag lifted.</p> <p>Notably, the SMS I received did not state it came from GitHub.</p> <p>This whole process proves that GitHub still allows anonymous users to finish SMS verification and file appeals without the need to purchase a phone number or provide a personal device. The SMS play a role that simply routes the request to the appropriate regional team and limits the gross appeals. So Github permits shared phone numbers.</p> <h2 id="background">Background </h2><p>The blogger is a privacy activist and heavy Tor user. Accessing GitHub is almost always via Tor, so the IP address changes constantly. The flagged account is the one used for this blog’s GitHub page.</p> <p>Like the blog’s name <strong>Local Freedom</strong>, I seeks to avoid dependence on large companies and enjoy an anonymous web experience. Although a novice, I&rsquo;m a hacker who wants to share custom tools and practical experience on public platforms like GitHub, both to help others and to keep anonymous access at all times.</p> <p>I registered my static‑blog account through Tor. Unfortunately, the “many users abusing Tor” situation meant that when the account’s email was verified, the first login was met with a banner that the account was flagged. I responded by opening a ticket on the <a class="link" href="https://support.github.com" target="_blank" rel="noopener" >support page</a>, wrote a short note, and the appeal succeeded. The support staff suggested that the flag was a consequence of a Tor exit IP and that it might happen again.</p> <h2 id="when-the-flag-appeared">When the flag appeared </h2><h3 id="what-seemed-odd">What seemed odd </h3><p>One day, while using a script I had written on the Github account, I was unexpectedly greeted with a 404 page. Let’s call that “day 0.</p> <p>I then visited the account’s profile page and the blog’s home page, both rendering 404 (perhaps I mistyped the URL). I returned to the login browser, used bookmarks and cookies to log into GitHub, and everything appeared normal. Copying that URL into the Tor browser still yielded 404. A foreboding feeling crept in my brain, since my account had being flagged once before. However, there was no banner, so I wasn’t sure whether the account was flagged. While logged in, I visited a repository page and, when I clicked into the blocg page, it returned 404 again. Maybe GitHub was temporarily down.</p> <h3 id="acknowledge-flagged">Acknowledge flagged </h3><p>The next day, after logging in once more, everything worked normally. But when I visited the site without logging in, the blog and the profile still stayed stuck on 404. I saw no email from GitHub and my account dashboard appeared untouched.c</p> <p>I searched online and found a <a class="link" href="https://www.reddit.com/r/github/comments/1fv8pgp/need_help_my_github_profile_is_not_accessible/" target="_blank" rel="noopener" >Reddit discussion</a>. It explained that when a page is not visible while logged out but works for a logged‑in view, that usually means the account has been “flagged.” The comment also listed the <a class="link" href="https://support.github.com/contact/reinstatement" target="_blank" rel="noopener" >support link</a> for filing an appeal. Because I didn’t see a banner again, I wasn’t 100% sure an appeal was the best next step. So I opened a ticket at the [official support page]((<a class="link" href="https://support.github.com" target="_blank" rel="noopener" >https://support.github.com</a>), hoping to get a clearer explanation. GitHub’s ticket system prompted me to enable 2‑factor authentication first. After adding 2‑FA, a notice popped up: <code>Your account has been flagged and we need some additional information before we are able to direct your support query to the right place. Please supply your mobile number below so that we are able to verify you via text message</code></p> <p>I acknowledge my account flagged now. Completing SMS verification in a way that preserves my anonymity seemed nearly impossible.</p> <h3 id="retrospective">Retrospective </h3><p>When and Why was my Github account flagged?</p> <p>It can’t have been long ago. I occasionally access content in the account without logging in. I updated the blog on day -4 and two utility scripts on day -2. The Internet told me that flagged prevents repository actions from triggering. My last blog update had triggered an action, so the flag must have occurred in the past three days, perhaps due to a script anomaly. Recent large‑scale network attacking on GitHub could have also contributed.</p> <p>I was furious! GitHub seemed unkind to anonymous users. Ten days after the flag, I removed the GitHub link from the blog and confirmed that actions were indeed halted by the way.</p> <h2 id="multiple-appeal-attempts">Multiple appeal attempts </h2><p>Because my account is anonymous, I couldn’t give the support team an actual phone number or use a personal device. I had to remain within the Tor tunnel. Looking online, there were many free online SMS receivers work out of the box when you’re in Tor. I tried several but never received a code.</p> <h3 id="first-try-at-an-alternate-channelfailed">First try at an alternate channel(Failed) </h3><p>The first idea that came to mind was to email the support team directly. But the support page says those emails are handled by bots and nobody looks at them. Community posts confirm that only tickets generated through the official form would get a human response.</p> <p>I found an alternative contact link <strong><a class="link" href="https://github.com/contact" target="_blank" rel="noopener" >https://github.com/contact</a></strong> in the <a class="link" href="https://github.com/orgs/community/discussions/159882" target="_blank" rel="noopener" >GitHub community</a>, that lets you contact support without an account. But the tightened policy forces you to verify the flagged email address with SMS. As a seven‑day response window, a disposable E-mail simply won’t do it.</p> <p>Testing the appeal process with another account, legitimate GitHub account revealed a neat restriction: the ticket can only be filed from an account that is already linked to the E-mail. If you try to appeal from a different account and skip the SMS step, the appeal is usually rejected, and you may even risk hurting your own clean account. Creating a fresh “test” account for this is a hassle, I didn’t feel worth the effort.</p> <p>After all, I realized I’d need to go through the normal appeal form, which required a phone number for SMS verification anyway.</p> <h3 id="phone-numbers-are-hard-to-keep-anonymous-and-theyre-not-always-accepted">Phone numbers are hard to keep anonymous, and they’re not always accepted </h3><p>Because GitHub throttles the number of tickets via SMS verification, the key to staying anonymous is the phone number you hand it. There are paid “receive‑code” services that claim they’ll reliably get your message and let you pay with cryptocurrency. A few comments, however, say even those services can’t guarantee receiving a GitHub code, so that level of restriction felt excessive to me.</p> <p>Being a complete beginner, I didn’t have any crypto on hand. My only option was to buy a prepaid number that promised a high level of anonymity. After purchasing, I didn’t immediately request the SMS verification. Instead, I first tried using the number to set up two‑factor authentication on another GitHub account, just to see if the code would even come through. If that didn’t work, there was no point tying the number to the account, because it would break the anonymity I was trying to preserve. Surprisingly, the real number didn&rsquo;t caught the GitHub verification SMS, so I didn’t even need to consider a personal phone number after all.c</p> <p>I also ran into an odd quirk: the country selector on the SMS‑verification page doesn’t show every country, such as China and Malaysia are missing. I spent time and money trying to procure a Malaysian number, only to discover GitHub doesn’t support it. In my case I was in Europe, so some European numbers were rejected too. If you want to buy a number, please try to a +1 number directly.</p> <h3 id="try-sms-receiving-online-services-continuously">Try SMS receiving online services continuously </h3><p>First, a broad search on any search engine will surface dozens of “receive‑sms” services. Click on a service and you can check whether the particular number is still active in the last few hours. A good service should have a record of receiving messages within the past few hours. Some platforms immediately display whether the number is active, the number of messages it has accumulated, the time of the most recent receipt, etc., which is quite user‑friendly. If that information isn’t shown, you need to look for it yourself. What&rsquo;s more, picking a handful of countries at a time, and optionally cross‑checking with another provider to confirm that the code truly arrives instead of being a fabricated random example.</p> <p>I found a few solid options and logged them here:</p> <ul> <li><a class="link" href="https://www.sms-ol.com/en-US/phone/TW/0-928231013/" target="_blank" rel="noopener" >https://www.sms-ol.com/en-US/phone/TW/0-928231013/</a></li> <li><a class="link" href="https://text-verification.net/number/76146182969" target="_blank" rel="noopener" >https://text-verification.net/number/76146182969</a></li> <li><a class="link" href="https://www.sms-ol.com/en-US/phone/PL/0-722823101/" target="_blank" rel="noopener" >https://www.sms-ol.com/en-US/phone/PL/0-722823101/</a> &ndash;successfully received a Discord verification code</li> </ul> <p>Next, I turned to free, online “receive‑sms” services that specifically mention GitHub verification. Some services even list which sites’SMS have been successfully received, so you can jump straight to a number that’s already proven to work for GitHub that dramatically increases the odds.</p> <p>Search terms like: <strong>sms receive github free flagged</strong></p> <p>Logged some good services:</p> <ul> <li><a class="link" href="https://www.smsonline.cloud/zh/service/github" target="_blank" rel="noopener" >https://www.smsonline.cloud/zh/service/github</a> &ndash;with google sms</li> <li><a class="link" href="https://receivesmsfast.com/service/GI/US" target="_blank" rel="noopener" >https://receivesmsfast.com/service/GI/US</a> &ndash;with 3 specialized github number</li> <li><a class="link" href="https://tempsmsonline.com/messages/github" target="_blank" rel="noopener" >https://tempsmsonline.com/messages/github</a></li> <li><a class="link" href="https://sms24.me/en/messages/GitHub/1" target="_blank" rel="noopener" >https://sms24.me/en/messages/GitHub/1</a> &ndash;with github 2fa records.</li> </ul> <p>From the related threads I read, it’s clear that U.S./Canadian numbers tend to have a higher success rate when receiving GitHub SMS.</p> <h3 id="repeated-attempts-eventually-completed-sms-verification">Repeated attempts eventually completed SMS verification </h3><p>It was said that after GitHub sends a one‑time code, you’re not allowed to try again for 24 hours if it fails. In practice, when I logged in via Tor, it was stable trigger that 24‑hour limit. By switching to a VPN, I could usually attempts two or three times in succession. During that window it was handy to draft the appeal email that I would later write in the ticket.</p> <p>When the SMS code finally arrived, I didn’t have high hopes. After all, I was dealing with a shared phone number that would likely be snapped up by someone else. I kept trying for a couple of days. Unexpectedly, as I sent code requests, I occasionally received the text on a shared number, but the code I entered was wrong. The pattern suggested that other people had claimed the same phone’s verification window before I could complete it.</p> <p>That experience also explained why <strong>US/Canada numbers have a higher success rate</strong>. GitHub is a U.S. company, so its support teams are primarily located in North America, meaning those regions receive more SMS‑verification traffic. Realizing this, I switched to a +1 mobile number.</p> <p>Because GitHub says the SMS is only for routing the appeal to the appropriate regional team, and not for persistent record. It seemed plausible that GitHub simply limits how many appeals can be submitted via SMS, without strictly banning shared numbers, and that the SMS doesn’t even need to label itself as “GitHub” like a 2‑FA code. Indeed, the final successful SMS didn’t mention GitHub at all. At the same time, the same number sent me a second four‑digit code. That strongly indicates GitHub outsourced the flag‑removal SMS verification to a third‑party service.</p> <h3 id="submitting-the-support-ticket">Submitting the support ticket </h3><p>On day +35, I completed SMS verification and open a ticket immediately. After “Open Ticket”, it immediately asked if the problem was an account issue. The 2025 appeal form asked me to choose options, attach a few sentences if I wished, that explain to improve success. I clarified that I was a Tor user.</p> <blockquote> <p><strong>Does your claim involve content on GitHub or npm.js?</strong></p> <p>GitHub</p> <p><strong>What is the username and repository or package name that was impacted?</strong></p> <p>LocalFreedom</p> <p><strong>Why are you requesting reinstatement? If you are requesting support for your account not related to moderation limits made on your account by GitHub please raise a support ticket instead.</strong></p> <p>I can login, but my profile and contributions aren&rsquo;t visible to others</p> <p><strong>Have you previously contacted GitHub about this claim?</strong></p> <p>No</p> <p><strong>Would you like to provide any additional information or context that would be helpful for our review of your reinstatement request?</strong></p> <p>I am writing to seek your help. My GitHub account has been flagged recently. I think it is because of logging in to GitHub using a TOR node. I would appreciate your help if you unlock the hidden profile as soon as possible. Thank you so much!</p> <p><strong>I have reviewed and understand the GitHub Acceptable Use Policies and Community Guidelines.</strong></p> </blockquote> <h2 id="36-days-later----flag-removed">36 days later &ndash; Flag removed </h2><p>The following day, after opening the ticket, I received an email from support team, confirming the flag had been removed and my account was restored. Support team explained that GitHub’s automated defense system occasionally flags a batch of accounts for manual review. My account had no violations, and it was simply flagged because of a shared Tor exit by other bad actors.</p> <h2 id="future-work">Future work </h2><p>Expecting large companies to act purely for the common good is unrealistic. GDPR does not fully protect us, especially for the anonymous.</p> <h3 id="network-strengthening">Network strengthening </h3><p>I began considering ProtonVPN as an alternative to Tor for sustained anonymity. I’m grateful for Proton’s services, which let me access Google‑style internet products anonymously, such as email, calendar, cloud drive, and VPN, which friendly to Tor users and privacy‑savvy individuals.</p> <h3 id="site-consolidation">Site consolidation </h3><p>A flagged GitHub account means my custom tools become inaccessible, and my personal creative influence is abruptly cut. I cannot survive multiple flags. Git was designed to be egalitarian and fully local. Each code repository is kept locally, and copies can be uploaded to platforms such as GitLab or Codeberg.</p> <p>Blogs were the most troublesome. Luckily, this blog is a static‑HTML generator that doesn&rsquo;t rely on GitHub’s deployment service. I can upload a backup copy to another platform for personal use. Even so, the blog is my “child”, embodying my values and influence; it deserves a continuous reader experience. I’m contemplating moving the domain to Cloudflare Workers to keep the page online even if GitHub account gets flagged again.</p> <p>It was sadly that the gradual loss of the internet utopia and hacker culture I once knew.</p>

2025/12/1
阅读更多

记录一次Github被flag,通过免费SMS接码服务提交申诉成功恢复的经历

<img src="https://localfreedom.pages.dev/img/github-flagged.png" alt="Featured image of post 记录一次Github被flag,通过免费SMS接码服务提交申诉成功恢复的经历" /><h2 id="tldr">TL;DR </h2><p>2025年Github账号flagged申诉需要SMS验证,这次是通过网上免费、免注册的SMS接收服务通过一个加拿大手机号成功收到验证码,向Github支持团队提交工单,申诉成功解除flag标记状态。</p> <p>特殊的是,我收到SMS的6位验证码并没有标明来自Github。</p> <p>这次的成功经历说明,Github至少目前还是可以不用自己的手机号,不用付费,就完成SMS验证并提交申诉的;Github的SMS验证主要是根据号码分配相应语言的支持团队,并适当限制申诉总量,对共享手机号是宽容的。</p> <h2 id="背景">背景 </h2><p>博主是一位隐私主义者,Tor重度用户。 访问Github一般都是通过Tor进行,所以IP会不断发生变化。 这次被flag的账号就是本博客的 Github 的账号。</p> <p>就像本博客的名字——局域自由,博主追求摆脱对大公司集中服务的依赖,享受匿名网络生活。 虽然菜鸟,但毕竟是一个黑客,所以想在github等共享平台分享自己开发的小工具和实践经验,一方面帮助有需要的人,另一方面便于自己随时匿名取用。</p> <p>我写静态博客的账号就是通过Tor注册的,很不幸当时滥用Tor的人已经非常多了,所以验证邮箱后第一次登陆就横幅提示被标记flag。 当时直接前往<a class="link" href="https://support.github.com" target="_blank" rel="noopener" >支持页面</a>提交ticket,写一段话就申诉回来了,当时支持团队的对接员工就提示我是被Tor出口IP连累的,并可能再次被标记。</p> <h2 id="flag-发生">Flag 发生 </h2><h3 id="异常">异常 </h3><p>有一天在Tor浏览器上取用自己开发的脚本的时候居然返回404页面,就记作第0天吧。</p> <p>接着访问账号主页和博客page的首页都是404,可能记错URL了,抽空回到登陆的浏览器,用书签和cookie登陆github账号查看,一切正常。 复制URL到Tor浏览器访问仍然是404,开始有不祥的感觉,毕竟有过 flag 经验。 但是没有横幅提示,我也不确定到底是不是flag。 在登陆状态进入page仓库,点击进入博客页面也是404,也许是github暂时服务出现问题。</p> <h3 id="实锤">实锤 </h3><p>1天后,再次登陆账号仍然正常,但不登陆博客就是404的,账号主页也是404。 但邮箱没有收到任何github的邮件,账号也没有异常提示。</p> <p>开始在网上搜索类似情况,通过一篇<a class="link" href="https://www.reddit.com/r/github/comments/1fv8pgp/need_help_my_github_profile_is_not_accessible/" target="_blank" rel="noopener" >reddit帖子</a>得知不登陆页面不可见大概是被flag限制了,帖子中提到了<a class="link" href="https://support.github.com/contact/reinstatement" target="_blank" rel="noopener" >申诉地址</a>,不过这次没有刚注册那次flag的横幅提示,我还是有些侥幸心理的。 我没有直接去申诉而是到<a class="link" href="https://support.github.com" target="_blank" rel="noopener" >支持页面</a>想着先提交一个ticket问问。 Open Ticket 时提示需要开启 2FA 想到之前好像github有政策强推2FA也许是我一直没开启2FA给我一点提醒。 开启 2FA 后,在 Open Ticket 时明确提示 <code>Your account has been flagged and we need some additional information before we are able to direct your support query to the right place. Please supply your mobile number below so that we are able to verify you via text message</code>。</p> <p>终于实锤,当时心里想这个匿名github账号估计废了,保持匿名几乎不可能完成SMS验证。</p> <h3 id="复盘">复盘 </h3><p>我的github是何时被flag的呢?又是为何被flag?</p> <p>应该不会太久,毕竟我时不时会不登陆直接取用写脚本或经验。 第-4天更新了本博客,-2天更新了几个实用脚本。 在网上搜索得知被flag后博客commit的action就不会触发,而我上次更新博客是触发action的。 所以flag是近3天的事情,很可能是脚本有什么异常。 而近期github又遭遇大规模网络攻击,被连累也有可能。</p> <p>气愤!github居然对匿名使用如此不友好,第+10天,我移除了本博客对github网站的推荐link,也通过这次更新确认flagged下确实不触发action。</p> <h2 id="八仙过海各种申诉">八仙过海各种申诉 </h2><p>由于是匿名账号,所以我不应该用自己的手机号或通过实名的金融网络协助申诉,最好全程不离开tor网络的保护。 免费的线上SMS接收服务通常支持Tor,但找了几个试试当然是没有收到验证码。</p> <h3 id="sms验证对匿名不友好首先尝试找其他申诉渠道">SMS验证对匿名不友好,首先尝试找其他申诉渠道 </h3><p>首先想到的当然是直接邮件联系Github支援团队,回复是这些直接发送的邮件会被自动系统处理,员工不会看见,还强调在社区的发帖也不会加快申诉处理流程。</p> <p>搜索到<a class="link" href="https://github.com/orgs/community/discussions/159882" target="_blank" rel="noopener" >Github社区中有人</a>给出了其他联系渠道 <strong><a class="link" href="https://github.com/contact" target="_blank" rel="noopener" >https://github.com/contact</a></strong> 这个链接可以非注册联系支持团队,但同样因为政策收紧,用注册过的邮箱联系会提示已有账号flagged并要求验证SMS。 以期望时长一周的响应时间,临时邮箱无法用于此场景。</p> <p>用其他正常Github账号测试申诉流程,<strong>发现申诉账户只能从邮箱绑定的账号中选择</strong>,想替其他账号申诉而绕过SMS验证只能写在留言中。 这样很可能不被受理还连累正常账号,新注册小号也有些麻烦,不再继续尝试。</p> <h3 id="手机号难以匿名且不一定有效">手机号难以匿名且不一定有效 </h3><p>既然Github全面通过SMS验证限制ticket总量,那么想保持匿名就要从SMS验证所需手机号入手。 网上有收费的接码服务,号称能保证接码效率,还能通过加密货币付款。 不过也有评论表示付费的接码服务也不一定能收到Github验证码,顿时心中凉凉,如果这样限制也太严格了。</p> <p>由于本菜鸟实在太菜并没有加密货币储蓄,只好拿着现金购买匿名性高的预付费手机号。 买好手机号并不是直接去收被flag账号的SMS验证,先用其他Github账号的2FA之类的试试。 如果这都不成功,就没必要去关联破坏本Github账号匿名性了。 没想到居然真的没成功,<strong>真实购买的手机号居然没受到Github的SMS验证</strong>,那就完全不必考虑真手机号了。</p> <p>这里也提醒一下,github的SMS验证页面选国家并不包含所有的国家,比如中国和马来西亚就没有。 期间我费劲费钱搞来一个匿名的马来西亚手机号,才发现github居然不支持马来西亚。 由于我自身在欧洲,所以测试的是欧洲的手机号,欧洲都不行,除非北美,其他地区就更不可能了。</p> <h3 id="接下来只好硬刚sms验证">接下来只好硬刚SMS验证 </h3><p>首先通过搜索引擎可以找到很多SMS接码服务,点开可以看看其中的号码是否近期仍然活跃,可用的服务应当近几小时也有收到SMS。 有些服务直接展示号码是否活跃,累计接收,最近收到时间等,就比较友好,不展示的就需要进去查看,挑选几个国家的看看,还可以用其他服务测试一下是真能收到还是伪装的随机样例。</p> <p>找到了几个不错的记录一下:</p> <ul> <li><a class="link" href="https://www.sms-ol.com/en-US/phone/TW/0-928231013/" target="_blank" rel="noopener" >https://www.sms-ol.com/en-US/phone/TW/0-928231013/</a></li> <li><a class="link" href="https://text-verification.net/number/76146182969" target="_blank" rel="noopener" >https://text-verification.net/number/76146182969</a></li> <li><a class="link" href="https://www.sms-ol.com/en-US/phone/PL/0-722823101/" target="_blank" rel="noopener" >https://www.sms-ol.com/en-US/phone/PL/0-722823101/</a> 测试成功收到Discord验证码</li> </ul> <p>进一步针对Github验证找免费的在线SMS接收服务,还有一些SMS服务会列出成功收到哪些网站SMS的情况,直接找成功收到过Github验证码的号码成功率将大很多。</p> <p>搜索关键词如: <strong>sms receive github free flagged</strong></p> <p>记录一下搜索结果:</p> <ul> <li><a class="link" href="https://www.smsonline.cloud/zh/service/github" target="_blank" rel="noopener" >https://www.smsonline.cloud/zh/service/github</a> 华人创办看起来不错,有Google记录,但Github无记录</li> <li><a class="link" href="https://receivesmsfast.com/service/GI/US" target="_blank" rel="noopener" >https://receivesmsfast.com/service/GI/US</a> 一共三个号码可接收Github不过目前都离线状态</li> <li><a class="link" href="https://tempsmsonline.com/messages/github" target="_blank" rel="noopener" >https://tempsmsonline.com/messages/github</a></li> <li><a class="link" href="https://sms24.me/en/messages/GitHub/1" target="_blank" rel="noopener" >https://sms24.me/en/messages/GitHub/1</a> 有多个号码有成功收到Github验证码的记录,甚至还有绑定2FA的记录</li> </ul> <p>在搜到的相关帖子中,得知用美国/加拿大的号码收到SMS成功率高一些。</p> <h3 id="不断尝试终于free完成sms验证">不断尝试终于free完成SMS验证 </h3><p>据说Github发送一次验证码后如果不成功24小时内不能再次尝试,经测试tor出口稳定会有24小时的超限提示,如果用VPN出口可能可以连续尝试2-3次。 期间可以根据账号具体情况把申诉邮件准备一下。</p> <p>我当时对成功收到SMS并不报什么希望,2-3天尝试一下。 居然碰到几次我发送验证码,共享手机号也受到SMS,但我输入就错误的情况,结合上下多条SMS,可能其他人就抢在同时比我先占用了这个号码的SMS验证机会。</p> <p>同时我也理解为什么<strong>美国/加拿大的号码收到SMS成功率高一些</strong>。 原因正如Github页面提示,SMS只是为了把申诉转交到正确地区,而github是美国公司,当然是北美区的支援人员最多,分配的SMS接收机会也更多。 于是我也开始改用+1的手机号码。</p> <p>既然github说SMS验证是为了分配地区而不是存储记录,那么我联想到也许github只是用SMS限制一下申诉量,可能并不严格封禁共享的手机号,而且可能不像2FA那样标明短信的用途。 果然最终成功完成验证的那条SMS,就没有标明Github,而且同时间还有来自同一个号码的另一个4位验证码,应该是Github把flag的SMS验证外包了。</p> <h3 id="提交工单">提交工单 </h3><p>在第+35天完成SMS验证后,心情格外机动,Github也很友好的在 Open Ticket 后直接提示是否账户问题。 2025年flag申诉页面都是选择即可,可以附加几句话,也可以不附加,为了增加成功率,我还是解释了一下自己是tor用户。</p> <blockquote> <p><strong>Does your claim involve content on GitHub or npm.js?</strong></p> <p>GitHub</p> <p><strong>What is the username and repository or package name that was impacted?</strong></p> <p>LocalFreedom</p> <p><strong>Why are you requesting reinstatement? If you are requesting support for your account not related to moderation limits made on your account by GitHub please raise a support ticket instead.</strong></p> <p>I can login, but my profile and contributions aren&rsquo;t visible to others</p> <p><strong>Have you previously contacted GitHub about this claim?</strong></p> <p>No</p> <p><strong>Would you like to provide any additional information or context that would be helpful for our review of your reinstatement request?</strong></p> <p>I am writing to seek your help. My GitHub account has been flagged recently. I think it is because of logging in to GitHub using a TOR node. I would appreciate your help if you unlock the hidden profile as soon as possible. Thank you so much!</p> <p><strong>I have reviewed and understand the GitHub Acceptable Use Policies and Community Guidelines.</strong></p> </blockquote> <h2 id="历时36天解除flag">历时36天解除flag </h2><p>Open Ticket 次日就受到邮件,支持团队已经解除了账户的flag,我的账户恢复正常。 Ticket和邮件中,支援团队表示Github的自动防御系统会时不时的标记一批用户由人工审核解封。 所以我的账户没有违规行为,只是被公用Tor出口的其他恶人连累了。</p> <h2 id="后续">后续 </h2><p>看看Google的作为,指望大公司不作恶是不可能的,GDPR也不能很好的保护我们,尤其是对于匿名者。</p> <h3 id="网络强化">网络强化 </h3><p>之后考虑使用Proton的VPN服务来代替Tor以实现更持续的匿名网络活动。 这里非常感谢Proton公司的服务,让我可以方便匿名的获得类似Google的互联网产品服务,邮箱-日历-云盘-VPN等产品都非常棒,最关键的是对匿名用户、Tor用户友好。</p> <h3 id="站点巩固">站点巩固 </h3><p>Github账号一旦被标记,自己开发的实用软件无法随时取用,个人创作的影响力直接中断,真的经不起几次flag的折磨。 号在git设计初衷就是平等的,本地完全数据的,局域自由的。 代码仓库、实用软件本地都有一份,再在Gitlab/Codeberg等平台上传一份即可。</p> <p>比较麻烦的是博客,好在这个博客是直接生成html的,不依赖Github的部署服务,在其他平台上传一份自用足以。 但毕竟博客这份艺术作品就像自己的孩子,是自己价值观和影响力的传承,还是要让读者有更连续的体验。 博客考虑改用Cloudflare的域名和worker,以实现Github不幸被flag博客页面不中断,并能由其他平台接续。</p> <p>不经感叹曾经的互联网乌托邦和黑客文化在渐渐逝去!</p>

2025/11/30
阅读更多

Ollama模型部署

<img src="https://localfreedom.pages.dev/img/ollama-cloud.png" alt="Featured image of post Ollama模型部署" /><p>Ollama是一个流行的LLM本地部署推理软件,从其<a class="link" href="https://github.com/ollama/ollama" target="_blank" rel="noopener" >Github仓库</a>可以下载安装程式或直接运行其<a class="link" href="https://docker.io/ollama/ollama" target="_blank" rel="noopener" >Docker映像</a>。 本文介绍将<a class="link" href="https://huggingface.co/models" target="_blank" rel="noopener" >HuggingFace上的模型</a>导入离线环境中的Ollama部署推理的3种方法。</p> <h2 id="导入gguf格式">导入GGUF格式 </h2><p>创建一个modelfile文档,尽量和模型文档在同一个文档夹。 格式分为三部分:</p> <ol> <li>模型权重文档路径,以FROM开头,多模态可以有多行。</li> <li>对话模板,以TEMPLATE开头用引号包裹,配置提示词等。</li> <li>参数,以PARAMETER开头每行1个,配置温度、停止词等。</li> </ol> <p>模板和参数建议使用<a class="link" href="https://ollama.com/library" target="_blank" rel="noopener" >Ollama官方</a>同名模型的配置,通常不同尺寸和量化精度的配置是一样的。</p> <p>例如Google的Gemma3模型12b尺寸的配置文档:</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span><span class="lnt">14 </span><span class="lnt">15 </span><span class="lnt">16 </span><span class="lnt">17 </span><span class="lnt">18 </span><span class="lnt">19 </span><span class="lnt">20 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">FROM gemma-3-12b-it-q4_0.gguf </span></span><span class="line"><span class="cl">FROM mmproj-google_gemma-3-12b-it-qat-f16.gguf </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">TEMPLATE &#34;{{- range $i, $_ := .Messages }} </span></span><span class="line"><span class="cl">{{- $last := eq (len (slice $.Messages $i)) 1 }} </span></span><span class="line"><span class="cl">{{- if or (eq .Role &#34;user&#34;) (eq .Role &#34;system&#34;) }}&lt;start_of_turn&gt;user </span></span><span class="line"><span class="cl">{{ .Content }}&lt;end_of_turn&gt; </span></span><span class="line"><span class="cl">{{ if $last }}&lt;start_of_turn&gt;model </span></span><span class="line"><span class="cl">{{ end }} </span></span><span class="line"><span class="cl">{{- else if eq .Role &#34;assistant&#34; }}&lt;start_of_turn&gt;model </span></span><span class="line"><span class="cl">{{ .Content }}{{ if not $last }}&lt;end_of_turn&gt; </span></span><span class="line"><span class="cl">{{ end }} </span></span><span class="line"><span class="cl">{{- end }} </span></span><span class="line"><span class="cl">{{- end }} </span></span><span class="line"><span class="cl">&#34; </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">PARAMETER stop &lt;end_of_turn&gt; </span></span><span class="line"><span class="cl">PARAMETER temperature 1 </span></span><span class="line"><span class="cl">PARAMETER top_k 64 </span></span><span class="line"><span class="cl">PARAMETER top_p 0.95 </span></span></code></pre></td></tr></table> </div> </div><p>执行命令 <code>ollama create 模型名 -f 配置文档.modelfile</code> ollama就会将GGUF格式的模型文档导入成内部数据。</p> <h2 id="迁移已有模型">迁移已有模型 </h2><p>Ollama存储模型分为配置索引和数据块两部分。 将已经下载部署好的模型迁移到新安装环境,只需要复制配置文档和数据块即可。 模型配置文档根据路径可以看出保存在 <code>.ollama/models/manifests/registry.ollama.ai/library/模型名:参数</code> 中,其中模型名如gemma3,参数如12b-it-qat,也就是run时冒号前后的部分。 打开配置文档是json格式,找到其中的<code>sha256:xxx...</code>就是对应的数据块,在 <code>.ollama/models/blobs/</code> 中找到相应的文档便是该模型的数据块。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span><span class="nt">&#34;schemaVersion&#34;</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span><span class="nt">&#34;mediaType&#34;</span><span class="p">:</span><span class="s2">&#34;application/vnd.docker.distribution.manifest.v2+json&#34;</span><span class="p">,</span><span class="nt">&#34;config&#34;</span><span class="p">:{</span><span class="nt">&#34;mediaType&#34;</span><span class="p">:</span><span class="s2">&#34;application/vnd.docker.container.image.v1+json&#34;</span><span class="p">,</span><span class="nt">&#34;digest&#34;</span><span class="p">:</span><span class="s2">&#34;sha256:505f8883abf333a307ed4120ef5f3116f442e6c537e5c4332d9044492e2d637c&#34;</span><span class="p">,</span><span class="nt">&#34;size&#34;</span><span class="p">:</span><span class="mi">414</span><span class="p">},</span><span class="nt">&#34;layers&#34;</span><span class="p">:[{</span><span class="nt">&#34;mediaType&#34;</span><span class="p">:</span><span class="s2">&#34;application/vnd.ollama.image.model&#34;</span><span class="p">,</span><span class="nt">&#34;digest&#34;</span><span class="p">:</span><span class="s2">&#34;sha256:1fb99eda86dc48a736567406253769fdc75f01e65cde7c65fa5563e4bdf156e0&#34;</span><span class="p">,</span><span class="nt">&#34;size&#34;</span><span class="p">:</span><span class="mi">8928674496</span><span class="p">,</span><span class="nt">&#34;from&#34;</span><span class="p">:</span><span class="s2">&#34;/Users/pdevine/.ollama/models/blobs/sha256-1fb99eda86dc48a736567406253769fdc75f01e65cde7c65fa5563e4bdf156e0&#34;</span><span class="p">},{</span><span class="nt">&#34;mediaType&#34;</span><span class="p">:</span><span class="s2">&#34;application/vnd.ollama.image.template&#34;</span><span class="p">,</span><span class="nt">&#34;digest&#34;</span><span class="p">:</span><span class="s2">&#34;sha256:5be6630b666f007a127a456fb3958da5fbd7cf547204188bc4690fedc837af0b&#34;</span><span class="p">,</span><span class="nt">&#34;size&#34;</span><span class="p">:</span><span class="mi">359</span><span class="p">},{</span><span class="nt">&#34;mediaType&#34;</span><span class="p">:</span><span class="s2">&#34;application/vnd.ollama.image.params&#34;</span><span class="p">,</span><span class="nt">&#34;digest&#34;</span><span class="p">:</span><span class="s2">&#34;sha256:3116c52250752e00dd06b16382e952bd33c34fd79fc4fe3a5d2c77cf7de1b14b&#34;</span><span class="p">,</span><span class="nt">&#34;size&#34;</span><span class="p">:</span><span class="mi">77</span><span class="p">}]}</span> </span></span></code></pre></td></tr></table> </div> </div><p>将配置文档和数据块复制到新安装环境即可正常使用之前下载好的模型。</p> <blockquote> <p>数据块有大有小,大的就是下载的LLM参数文档,小的可以打开看,通常是模板和参数,所以复制后模板等配置也原封不动。</p> </blockquote> <h2 id="离线下载模型文档">离线下载模型文档 </h2><p>有时候需要下载Ollama的官方模型,但并不便于安装一个Ollama,就需要直接通过URL下载模型配置和权重文档。 虽然目前官方没有在文档中说明下载链接格式,但是对于run时的 <code>模型名:参数</code> 可以根据规则推测其直链。</p> <ul> <li>配置文档如 <code>https://registry.ollama.ai/v2/library/模型名/manifests/参数</code>。</li> <li>权重数据块文档如 <code>https://registry.ollama.ai/v2/library/模型名/blobs/sha256:配置文档中的数据块散列值</code>。</li> </ul> <blockquote> <p><a class="link" href="https://github.com/Gholamrezadar/ollama-direct-downloader" target="_blank" rel="noopener" >Gholamreza Dar</a>制作了<a class="link" href="https://ollama-direct-downloader.vercel.app/" target="_blank" rel="noopener" >提取Ollama直链的网页</a></p> </blockquote> <p>下载好配置文档和权重数据块后,按照规律放到个人文档夹中 <code>.ollama/models/</code> 相应位置即可被Ollama运行时调用。</p> <ul> <li>配置文档如 <code>.ollama/models/manifests/registry.ollama.ai/library/模型名:参数</code>。</li> <li>权重数据块文档如 <code>.ollama/models/blobs/sha256:配置文档中的数据块散列值</code>。</li> </ul>

2025/10/4
阅读更多

MSOffice 清除文件作者等

<h2 id="背景">背景 </h2><p>微软Office是最流行最常用的电子办公套件,使用的时候会很自觉的将当前用户信息作为作者或编辑添加到所处理的资料中。 这是便于留下版权和痕迹追踪的默认操作,然而对于隐私,尤其是匿名编辑带来不必要的麻烦。</p> <h2 id="操作">操作 </h2><p>对于Office2010及以上版本</p> <ul> <li>打开编辑的Office文档</li> <li>左上角点击 <code>文件</code></li> <li>左侧选择 <code>信息</code></li> <li>点击 <code>检查问题</code> 方块按钮展开下拉菜单</li> <li>选择 <code>检查文档</code></li> <li>在弹出的 <code>文档检查器</code> 窗口当中把所有项目都勾选上</li> <li>点击右下角 <code>检查</code></li> <li><code>文档属性和个人信息</code> 一栏会提示附带的作者和编辑信息</li> <li>点击栏目旁边的 <code>全部删除</code> 即可删去这些痕迹</li> </ul> <h2 id="推广">推广 </h2><p>可见微软是在意隐私和匿名的需求的。 以后处理Office要注意 <code>信息</code> 中包含的后设数据,更需要通过 <code>文档检查器</code> 了解新兴的痕迹去除事项。 对于其他的办公软件,比如 <a class="link" href="www.libreoffice.org" >LibreOffice</a> 等也应注意相似问题。 既然默认是包含作者和编辑信息的,那么去除的太干净也是一种此地无银三百两。</p>

2025/9/30
阅读更多

LibreTranslate

<h2 id="简介">简介 </h2><p><a class="link" href="https://libretranslate.com/" target="_blank" rel="noopener" >LibreTranslate</a> 是一个轻量、开源的机器翻译服务,可以在本地部署或部署到云服务器,实现低延迟、无外部依赖的翻译系统。 LibreTranslate 自身是 <a class="link" href="https://www.argosopentech.com/" target="_blank" rel="noopener" >Argos Translate</a> 官方推荐的 WebUI,而 Argos Translate 则基于 <a class="link" href="https://opennmt.net/" target="_blank" rel="noopener" >OpenNMT</a> 开源架构训练翻译模型。</p> <p>相比于如今火爆的大语言模型LLM提供的翻译,LibreTranslate提供的传统的轻巧的翻译服务更加便捷,无需独立显卡,只占用少量内存,尤其便于在个人终端上配合LLM使用,比如生成图片的LLM通常基于英文提示词,且可能直接耗尽显存无力在笔电上再起其他LLM用于翻译,那么使用LibreTranslate即可方便的将中文想法转换为英文提示词。 LibreTranslate 官方提供Container部署方式,可以更加轻易的完成本地部署,本文聚焦使用Docker在个人设备部署可离线使用的轻便翻译服务。</p> <h2 id="docker环境">Docker环境 </h2><p><a class="link" href="https://docs.docker.com/desktop/release-notes/" target="_blank" rel="noopener" >下载</a>并安装Docker可以参见前一篇博文。</p> <h2 id="libretranslate镜像">LibreTranslate镜像 </h2><p>从v1.6.3版本开始LibreTranslate镜像的体积异常变大,不知道是打包过程出了什么bug。 本着轻量级可靠的原则,这里推荐v1.6.2和v1.7.2版本,寻求更新的版本建议先在 <a class="link" href="https://hub.docker.com/r/libretranslate/libretranslate/tags" target="_blank" rel="noopener" >DockerHub</a> 上看看镜像尺寸。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># 联网Pull镜像 </span></span><span class="line"><span class="cl">docker pull docker.io/libretranslate/libretranslate:v1.6.2 </span></span><span class="line"><span class="cl"># 导出镜像可迁往离线环境 </span></span><span class="line"><span class="cl">docker save -o LibreTranslate.tar libretranslate:v1.6.2 </span></span></code></pre></td></tr></table> </div> </div><h2 id="下载翻译模型">下载翻译模型 </h2><p>LibreTranslate只是WebUI,Docker镜像中集成了 Argos Translate 翻译引擎,工作所需的翻译模型需要单独下载。 Argos官方<a class="link" href="https://www.argosopentech.com/argospm/index/" target="_blank" rel="noopener" >列出了所有支持的语言翻译模型</a>。从结构上可以看出此工具是通过英文过渡的方式实现不同语言之间的翻译的,选择自己需要的语言和英语之间的翻译包下载。 下载的 <code>.argosmodel</code> 格式翻译模型包存放到一个资料夹中,如 <code>C:\Users\UserName\Downloads\MTpackages</code></p> <p>从1.9版本开始,官方引入了MiniSDB分句模型,离线启动需要额外下载MiniSBD的模型。 目前MiniSBD的模型<a class="link" href="https://github.com/LibreTranslate/MiniSBD/releases/tag/v0.0.1" target="_blank" rel="noopener" >在Github仓库分发</a>。 具体而言,需要哪种源语言就下载相应的 <code>.onnx</code> 即可。 下载好后也是集中放到一个资料夹中,如<code>C:\Users\UserName\Downloads\MiniSBD</code></p> <h2 id="启动服务">启动服务 </h2><p>在个人设备上装好Docker打开命令行,我们需要将下载的翻译模型包通过卷的方式挂载到容器内,由于默认联网检查并下载所有翻译模型,所以需要通过 &ndash;load-only 限制只加载已下载好的翻译语言模型。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="c1"># 导入镜像(假设放在U盘Z:中)</span> </span></span><span class="line"><span class="cl"><span class="n">docker</span> <span class="nb">load</span> <span class="o">-</span><span class="n">i</span> <span class="n">Z</span><span class="p">:</span>\<span class="n">LibreTranslate</span><span class="o">.</span><span class="n">tar</span> </span></span><span class="line"><span class="cl"><span class="c1"># 从镜像启动容器</span> </span></span><span class="line"><span class="cl"><span class="n">docker</span> <span class="n">run</span> <span class="o">-</span><span class="n">d</span> <span class="o">-</span><span class="n">m</span> <span class="mi">2</span><span class="n">g</span> <span class="o">-</span><span class="n">p</span> <span class="mi">5000</span><span class="p">:</span><span class="mi">5000</span> <span class="o">-</span><span class="n">v</span> <span class="n">C</span><span class="p">:</span>\<span class="n">Users</span>\<span class="n">UserName</span>\<span class="n">Downloads</span>\<span class="n">MTpackages</span><span class="p">:</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">libretranslate</span><span class="o">/.</span><span class="n">local</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">argos</span><span class="o">-</span><span class="n">translate</span><span class="o">/</span><span class="n">packages</span> <span class="o">-</span><span class="n">v</span> <span class="n">C</span><span class="p">:</span>\<span class="n">Users</span>\<span class="n">UserName</span>\<span class="n">Downloads</span>\<span class="n">MiniSBD</span><span class="p">:</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">libretranslate</span><span class="o">/.</span><span class="n">local</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">argos</span><span class="o">-</span><span class="n">translate</span><span class="o">/</span><span class="n">minisbd</span> <span class="o">-</span><span class="n">w</span> <span class="o">/</span><span class="n">app</span> <span class="o">--</span><span class="n">name</span><span class="o">=</span><span class="s2">&#34;LibreTranslate&#34;</span> <span class="n">libretranslate</span><span class="o">/</span><span class="n">libretranslate</span><span class="p">:</span><span class="n">v1</span><span class="o">.</span><span class="mf">6.2</span> <span class="o">--</span><span class="nb">load</span><span class="o">-</span><span class="n">only</span> <span class="n">en</span><span class="p">,</span><span class="n">zh</span> </span></span></code></pre></td></tr></table> </div> </div><p>打开浏览器,在地址栏输入 <code>localhost:5000</code> 即可访问WebUI,体验LibreTranslate的机器翻译服务。如果5000端口被其他程式占用了,修改 -p 参数的第一个5000为其他空闲端口号即可。</p> <h2 id="持久运行">持久运行 </h2><p>首次启动后,LibreTranslate会将翻译包解压到同一个资料夹,之后再 -v 挂载可以加上 :ro 选项限制容器写入存储翻译模型包的资料夹。 从命令行启动服务后,即可在 DockerDesktop 的图形界面中停止/启动这一服务,之前的启动命令当然也可以在图形界面配置,但似乎图形界面的配置还不是很完善。</p> <h2 id="效果体验">效果体验 </h2><p>毕竟轻量级,不是大语言模型,但对于配合其他LLM等重型应用,是非常充足的。 翻译结果可能有些机器味,结合个人理解润色一下即可,毕竟用LLM画图的你英文不会太差的。</p>

2025/9/12
阅读更多

Docker的安装与日常使用技巧

<img src="https://localfreedom.pages.dev/img/docker.jpeg" alt="Featured image of post Docker的安装与日常使用技巧" /><h2 id="为什么在-windows-上使用-docker">为什么在 Windows 上使用 Docker? </h2><ul> <li>开发环境一致:将应用与依赖打包成容器,无论你在 Windows、Linux 还是 macOS 上都能得到一模一样的运行环境。</li> <li>资源隔离:每个容器都是独立进程,避免了传统方式中“软件冲突”的麻烦,也限制了恶意软件的活动范围。</li> <li>快速构建:通过 Dockerfile 只需几行指令即可定义完整的运行时,CI/CD 流水线也能一键部署。</li> <li>用户友好:Docker Desktop 为 Windows 开发者提供了 GUI、WSL2 集成、图形化的容器管理和镜像管理等一站式体验。</li> </ul> <h2 id="前置条件系统准备">前置条件:系统准备 </h2><ul> <li>系统版本 <ul> <li>Windows10的1809版本及以上,或Windows11</li> <li>Windows Server 2019 及以上</li> </ul> </li> <li>虚拟化 <ul> <li>BIOS中开启硬件Intel或AMD的CPU虚拟化,新电脑通常默认已开启。</li> <li>OS模块 <ul> <li>Windows需要启用WSL2或Hyper-V,在控制面板-添加和删除应用-开启或关闭Windows功能中勾选。</li> <li>Linux需要KVM,常见发行版所使用的内核都是带KVM的。</li> </ul> </li> </ul> </li> <li>磁盘应有充足的空间,没有几十GiB空间很多有趣的Docker镜像就玩不成了。</li> </ul> <h2 id="下载安装">下载安装 </h2><ol> <li>下载安装包 <a class="link" href="https://docs.docker.com/desktop/release-notes/" target="_blank" rel="noopener" >https://docs.docker.com/desktop/release-notes/</a></li> <li>安装 <ul> <li>Windows <a class="link" href="https://docs.docker.com/desktop/setup/install/windows-install/" target="_blank" rel="noopener" >https://docs.docker.com/desktop/setup/install/windows-install/</a> <ul> <li>可选WSL2或Hyper-V后端,推荐WSL2。</li> <li>结束时可让DockerInstaller自动开始WSL2的初始化,可能需要重启系统。</li> </ul> </li> <li>Linux <a class="link" href="https://docs.docker.com/desktop/setup/install/linux/" target="_blank" rel="noopener" >https://docs.docker.com/desktop/setup/install/linux/</a> <ul> <li>可以按照docker官方建议添加源,使用类似Windows的体验。</li> <li>建议直接从发行版软件仓库安装使用命令行版本,通常如ubuntu包名是docker.io。</li> </ul> </li> </ul> </li> <li>初始化 <ul> <li>WSL2首次使用默认需联网下载更新。</li> <li>本博客当然建议<a class="link" href="https://localfreedom.pages.dev/p/docker-%E6%8E%A8%E8%8D%90%E5%90%8E%E7%AB%AF-wsl2-%E5%AE%8C%E5%85%A8%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85/" >离线安装WLS2后端</a>。</li> </ul> </li> </ol> <h2 id="基本使用">基本使用 </h2><p>在Windows双击桌面上的图表即可打开DockerDesktop,可以在界面左侧看到一排按钮。 镜像管理页面可以从DockerHub上下载镜像。 容器管理页面可以运行镜像成为容器,运行时可能需要选择映射的端口和档案。</p> <p><strong>镜像</strong>是一个基础,有了镜像便可以运行它得到,每次运行可以得到一个容器,就像每次运行软件打开一个窗口。 <strong>容器</strong>会提供一些服务,通常通过浏览器访问本地相应端口来使用。当结束容器,试用期间产生的数据和变化一并消除,就像浏览器的隐私模式,但比浏览器能提供的功能花样多多了。</p> <p>DockerDesktop除了图形界面,也继承Docker的命令行程序,并且命令行有更全面的功能。 Windows安装的时候记得勾选添加命令到PATH。 具体命令格式在Windows/Linux/MacOS都是一致的。</p> <p>从DockerHub上下载镜像可以用pull命令,如:</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker pull 镜像名:版本号(默认latest) </span></span></code></pre></td></tr></table> </div> </div><p>运行则是run命令,如:</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker run 镜像名 </span></span><span class="line"><span class="cl">docker run [选项如-itd] 镜像名[:版本号默认latest] </span></span><span class="line"><span class="cl">docker run [选项如-itd] [-n 容器名默认随即英文单词] 镜像名[:版本号默认latest] </span></span></code></pre></td></tr></table> </div> </div><p>由于Docker是来自Linux生态的技术,所以镜像通常都是Linux内核,即使在Windows也是通过WSL或Hyper-V使用虚拟的Linux内核。 当然对于运行的容器可以进入其中,使用其Linux命令行界面。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker exec -it 容器名或ID </span></span></code></pre></td></tr></table> </div> </div><h2 id="离线迁移">离线迁移 </h2><h3 id="导出save导入load-镜像">导出save/导入load 镜像 </h3><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">docker save -o 文件名.tar 镜像名1:版本号1 镜像名2:版本号2 ... </span></span><span class="line"><span class="cl">docker load -i 文件名.tar </span></span></code></pre></td></tr></table> </div> </div><h3 id="导出export导入import-容器">导出export/导入import 容器 </h3><div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">docker <span class="nb">export</span> -o 文件名.tar 容器名或容器ID </span></span><span class="line"><span class="cl">docker import 文件名.tar 参考镜像:版本号 </span></span></code></pre></td></tr></table> </div> </div><h3 id="导出导入-卷">导出/导入 卷 </h3><p>-v 参数挂载的卷就是一个本地文件夹,直接复制或打包复制即可。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">-v 主机路径:容器路径:权限 </span></span><span class="line"><span class="cl">-v D:<span class="se">\D</span>ata:/data:ro </span></span></code></pre></td></tr></table> </div> </div><h2 id="镜像推荐">镜像推荐 </h2><p>官方提供了集中分发镜像的平台 <code>https://hub.docker.com</code> ,其中有趋势排序推荐。</p> <p>这里推荐一些博主认为好用有趣的镜像:</p> <ul> <li>docker.io/continuumio/anaconda3</li> <li>ocker.io/library/nextcloud</li> <li>docker.io/ollama/ollama</li> <li>docker.io/jgraph/drawio</li> <li>docker.io/library/alpine</li> </ul> <p>使用pull命令,或者在图形界面检索,即可拉取体验。</p> <h2 id="docker">Docker </h2><p>新世界的大门,快来下载打开它吧!</p>

2025/8/30
阅读更多

SSH远程登入神器的初步使用

<h2 id="简介">简介 </h2><p>SSH是安全shell的缩写,提供加密传输访问远程服务器的功能。 SSH几乎是所有类似UNIX系统远程登入的方式,当前的Windows 10/11 已经集成了SSH客户端可选组件。 SSH同时支持者scp、git、https、vpn等很多应用。</p> <h2 id="用法">用法 </h2><ul> <li> <p>直接使用</p> <ul> <li>ssh 用户名@目标主机:端口</li> <li>用户名和当前用户名相同可省略</li> <li>目标主机可以是ip或域名</li> <li>端口默认22可不写</li> </ul> </li> <li> <p>配置密钥访问</p> <ul> <li>生成密钥对 ssh-keygen</li> <li>拷贝公钥到目标主机 ssh-copy-id</li> <li>配置使用的密钥对</li> </ul> </li> <li> <p>端口转发</p> <ul> <li>本地转发 LocalForward <ul> <li>-L [本地主机:]本地主机端口:远程网络主机:远程网络主机端口</li> <li>例如 <code>ssh -L 0.0.0.0:30000:host2:8000 user@host1</code></li> <li>这条命令将host2的8000端口映射到本地的30000端口前提是待登录主机host1上可以正常连接到host2的8000端口</li> </ul> </li> <li>远程转发 RemoteForward <ul> <li>-R [登录主机:]登录主机端口:本地网络主机:本地网络主机端口</li> <li>例如 <code>ssh -R 0.0.0.0:8080:host2:80 user@host1</code></li> <li>这条命令将host2的80端口映射到待登录主机host1的8080端口前提是本地主机可以正常连接host2的80端口</li> </ul> </li> <li>动态转发 DynamicForward <ul> <li>-D [本地主机:]本地主机端口</li> <li><code>ssh -D 0.0.0.0:50000 user@host1</code></li> <li>这条命令创建了一个SOCKS代理(默认127.0.0.1)通过该SOCKS代理发出的数据包将经过host1转发出去</li> </ul> </li> </ul> </li> <li> <p>专门复制文件</p> <ul> <li>scp [-4/-6] [-r] [-P 端口号] 源地址 目的地</li> <li>范例 <ul> <li><code>scp -r 文件夹 user@1.2.3.4:~</code></li> <li><code>scp -6 -P 22 文件 user@[I:P::v:6]:~</code></li> </ul> </li> </ul> </li> </ul> <h2 id="配置文件">配置文件 </h2><h3 id="客户端">客户端 </h3><ul> <li>文件位置 <ul> <li>默认在 <code>~/.ssh/config</code></li> <li>Windows/Linux/MacOS同样</li> </ul> </li> <li>有一些公共配置 <ul> <li>HashKnownHosts 散列记住的主机信息,默认<code>yes</code>,建议<code>no</code>以便于手工维护<code>known_hosts</code>文件</li> </ul> </li> <li>每个服务器各是一段配置,常用配置项目如下 <ul> <li>Host 服务器简称</li> <li>User 登陆用户名,默认当前用户名</li> <li>Hostname 服务器地址</li> <li>Port 服务器端口,默认22</li> <li>IdentityFile 需要使用的密钥,相对路径从执行命令的位置为基准</li> <li>LocalForward 端口转发本地</li> <li>RemoteForward 端口转发远端</li> <li>ProxyCommand 应用代理额外命令</li> </ul> </li> <li>范例</li> </ul> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span><span class="lnt">6 </span><span class="lnt">7 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Host my_server </span></span><span class="line"><span class="cl"> User root </span></span><span class="line"><span class="cl"> Hostname 10.11.12.13 </span></span><span class="line"><span class="cl"> Port 22 </span></span><span class="line"><span class="cl"> IdentityFile ~/.ssh/id_rsa </span></span><span class="line"><span class="cl"> LocalForward 30000 localhost:30000 </span></span><span class="line"><span class="cl"> RemoteForward 8000 localhost:8000 </span></span></code></pre></td></tr></table> </div> </div><h3 id="服务端">服务端 </h3><ul> <li>文件位置 <ul> <li>类Unix系统通常在<code>/etc/ssh/sshd_config</code></li> <li>Windows系统一般不使用SSH,而是RDP远程桌面。</li> </ul> </li> <li>配置项 <ul> <li>文件中有详细的注释和范例</li> <li>不建议修改服务端的配置</li> </ul> </li> </ul> <h2 id="技巧">技巧 </h2><ul> <li>查看服务器公钥指纹 <code>ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub</code> <ul> <li>首次连接一台服务器的时候会询问是否接受公钥,显示的指纹可以通过这条命令查看。</li> <li>核对指纹可以避免中间人攻击。</li> </ul> </li> <li>通过socks5代理 <code>ssh -o ProxyCommand='nc -x 127.0.0.1:1080 %h %p' my_server</code></li> <li>开启socks5代理并显示连接信息 <code>ssh -v -D 1080 my_server</code></li> </ul>

2025/6/13
阅读更多

台湾和大陆IT术语对照表

<p>虽然简化字和正体中文是一一对应的,但是中国大陆与台湾在翻译英语世界科技上形成了不同的习惯。 本文收集IT术语方便的差异,便于写作和阅读时避免歧义。</p> <table> <thead> <tr> <th style="text-align:left">English</th> <th style="text-align:left">台湾</th> <th style="text-align:left">中国大陆</th> </tr> </thead> <tbody> <tr> <td style="text-align:left">Abstract</td> <td style="text-align:left">摘要;抽象的</td> <td style="text-align:left">摘要;抽象的</td> </tr> <tr> <td style="text-align:left">Abstraction</td> <td style="text-align:left">抽象</td> <td style="text-align:left">抽象</td> </tr> <tr> <td style="text-align:left">Access</td> <td style="text-align:left">存取 (win);取用 (mac)</td> <td style="text-align:left">访问</td> </tr> <tr> <td style="text-align:left">Accessibility</td> <td style="text-align:left">无障碍;协助工具 (win);辅助功能 (mac)</td> <td style="text-align:left">无障碍;辅助功能 (win/mac)</td> </tr> <tr> <td style="text-align:left">Activate, Activation</td> <td style="text-align:left">启用,启动</td> <td style="text-align:left">激活</td> </tr> <tr> <td style="text-align:left">Active</td> <td style="text-align:left">使用中的;现行的;有效的;启用的</td> <td style="text-align:left">使用中的;现用的;有效的;激活的</td> </tr> <tr> <td style="text-align:left">Adapter, Adaptor</td> <td style="text-align:left">界面卡,配接器 (win);转接器 (mac)</td> <td style="text-align:left">适配卡,适配器</td> </tr> <tr> <td style="text-align:left">Add</td> <td style="text-align:left">加入</td> <td style="text-align:left">添加</td> </tr> <tr> <td style="text-align:left">Address</td> <td style="text-align:left">位址,地址</td> <td style="text-align:left">位址,地址</td> </tr> <tr> <td style="text-align:left">Advanced</td> <td style="text-align:left">进阶的</td> <td style="text-align:left">高级的</td> </tr> <tr> <td style="text-align:left">Aggregation</td> <td style="text-align:left">聚合</td> <td style="text-align:left">聚合</td> </tr> <tr> <td style="text-align:left">AI (Artificial intelligence)</td> <td style="text-align:left">人工智能</td> <td style="text-align:left">人工智能</td> </tr> <tr> <td style="text-align:left">Algorithm</td> <td style="text-align:left">算法</td> <td style="text-align:left">算法</td> </tr> <tr> <td style="text-align:left">Allocate</td> <td style="text-align:left">配置</td> <td style="text-align:left">分配</td> </tr> <tr> <td style="text-align:left">Allocator</td> <td style="text-align:left">配置器</td> <td style="text-align:left">分配器</td> </tr> <tr> <td style="text-align:left">Annotation</td> <td style="text-align:left">注释 (win);注解 (mac);诠释 (web)</td> <td style="text-align:left">注释 (win);注解 (mac)</td> </tr> <tr> <td style="text-align:left">App bundle</td> <td style="text-align:left">应用程序套件组合 (win);App 套件 (mac)</td> <td style="text-align:left">应用程序包 (win);App 捆绑包 (mac)</td> </tr> <tr> <td style="text-align:left">Application</td> <td style="text-align:left">应用;应用程序</td> <td style="text-align:left">应用;应用程序</td> </tr> <tr> <td style="text-align:left">Apply</td> <td style="text-align:left">套用</td> <td style="text-align:left">应用</td> </tr> <tr> <td style="text-align:left">Architecture</td> <td style="text-align:left">架构;结构</td> <td style="text-align:left">架构;结构</td> </tr> <tr> <td style="text-align:left">Argument</td> <td style="text-align:left">引数</td> <td style="text-align:left">参数(也称为实际参数,实参)</td> </tr> <tr> <td style="text-align:left">Arity</td> <td style="text-align:left">元数(所需算子的数量)</td> <td style="text-align:left">参数数量</td> </tr> <tr> <td style="text-align:left">Artifact</td> <td style="text-align:left">成品 (win/mac);产出物 (web)</td> <td style="text-align:left">项目 (win);成品 (mac)</td> </tr> <tr> <td style="text-align:left">Array</td> <td style="text-align:left">阵列</td> <td style="text-align:left">数组</td> </tr> <tr> <td style="text-align:left">Assembly language</td> <td style="text-align:left">组合语言</td> <td style="text-align:left">汇编语言</td> </tr> <tr> <td style="text-align:left">Assert, Assertion</td> <td style="text-align:left">判断提示(win);宣告(win/mac);声明(mac)</td> <td style="text-align:left">断言(win);声明(win/mac);论断(mac)</td> </tr> <tr> <td style="text-align:left">Assign, Assignment</td> <td style="text-align:left">指派;(程式设计)赋值</td> <td style="text-align:left">分配;(编程)赋值</td> </tr> <tr> <td style="text-align:left">Assignment operator</td> <td style="text-align:left">指派运算子</td> <td style="text-align:left">赋值运算符</td> </tr> <tr> <td style="text-align:left">Asynchronize</td> <td style="text-align:left">异步</td> <td style="text-align:left">异步</td> </tr> <tr> <td style="text-align:left">Asynchronous</td> <td style="text-align:left">异步的</td> <td style="text-align:left">异步的</td> </tr> <tr> <td style="text-align:left">Atomic</td> <td style="text-align:left">不可分割的</td> <td style="text-align:left">原子的</td> </tr> <tr> <td style="text-align:left">Attribute</td> <td style="text-align:left">属性</td> <td style="text-align:left">属性;特性</td> </tr> <tr> <td style="text-align:left">Audio</td> <td style="text-align:left">音讯;音效</td> <td style="text-align:left">音频</td> </tr> <tr> <td style="text-align:left">Authenticate, Authentication</td> <td style="text-align:left">验证,认证</td> <td style="text-align:left">验证,认证</td> </tr> <tr> <td style="text-align:left">Authorize, Authorization</td> <td style="text-align:left">授权</td> <td style="text-align:left">授权</td> </tr> <tr> <td style="text-align:left">Autoboxing</td> <td style="text-align:left">自动装箱</td> <td style="text-align:left">自动装箱</td> </tr> <tr> <td style="text-align:left">Background processes</td> <td style="text-align:left">背景程序,背景处理程序</td> <td style="text-align:left">后台进程</td> </tr> <tr> <td style="text-align:left">Bandwidth</td> <td style="text-align:left">带宽</td> <td style="text-align:left">带宽</td> </tr> <tr> <td style="text-align:left">Base class</td> <td style="text-align:left">基底类别</td> <td style="text-align:left">基类</td> </tr> <tr> <td style="text-align:left">Batch</td> <td style="text-align:left">批次(处理)</td> <td style="text-align:left">批(处理)</td> </tr> <tr> <td style="text-align:left">Binary function</td> <td style="text-align:left">二元函式</td> <td style="text-align:left">二元函数</td> </tr> <tr> <td style="text-align:left">Binary operator</td> <td style="text-align:left">二元运算子</td> <td style="text-align:left">二元运算符</td> </tr> <tr> <td style="text-align:left">Binary search</td> <td style="text-align:left">二元搜寻法</td> <td style="text-align:left">二分查找</td> </tr> <tr> <td style="text-align:left">Binary tree</td> <td style="text-align:left">二元树</td> <td style="text-align:left">二叉树</td> </tr> <tr> <td style="text-align:left">Bind</td> <td style="text-align:left">系结 (win);绑定 (mac)</td> <td style="text-align:left">绑定</td> </tr> <tr> <td style="text-align:left">Bit</td> <td style="text-align:left">位元</td> <td style="text-align:left">位</td> </tr> <tr> <td style="text-align:left">Bitrate</td> <td style="text-align:left">位元率</td> <td style="text-align:left">码率</td> </tr> <tr> <td style="text-align:left">Block</td> <td style="text-align:left">封锁;阻挡</td> <td style="text-align:left">屏蔽;阻止</td> </tr> <tr> <td style="text-align:left">Block</td> <td style="text-align:left">(程式码)区块</td> <td style="text-align:left">(代码)块</td> </tr> <tr> <td style="text-align:left">Blocker</td> <td style="text-align:left">封锁程式 (win);阻挡器 (mac)</td> <td style="text-align:left">阻止程序 (win);拦截器 (mac)</td> </tr> <tr> <td style="text-align:left">Boolean</td> <td style="text-align:left">布林</td> <td style="text-align:left">布尔</td> </tr> <tr> <td style="text-align:left">Bounce</td> <td style="text-align:left">退回;弹跳</td> <td style="text-align:left">退回;弹跳</td> </tr> <tr> <td style="text-align:left">Breakpoint</td> <td style="text-align:left">中断点</td> <td style="text-align:left">断点</td> </tr> <tr> <td style="text-align:left">Build (verb)</td> <td style="text-align:left">建构 (mac);建置,组建 (win)</td> <td style="text-align:left">构建</td> </tr> <tr> <td style="text-align:left">Build (noun)</td> <td style="text-align:left">构件;版本(号)</td> <td style="text-align:left">构件;版本(号)</td> </tr> <tr> <td style="text-align:left">Build-in</td> <td style="text-align:left">内建</td> <td style="text-align:left">内置 (win);内建 (mac)</td> </tr> <tr> <td style="text-align:left">Bundle (noun)</td> <td style="text-align:left">组合包 (win);套件 (mac);套组</td> <td style="text-align:left">捆绑包</td> </tr> <tr> <td style="text-align:left">Bundle (verb)</td> <td style="text-align:left">整合</td> <td style="text-align:left">整合</td> </tr> <tr> <td style="text-align:left">Bus</td> <td style="text-align:left">总线</td> <td style="text-align:left">总线</td> </tr> <tr> <td style="text-align:left">Burn</td> <td style="text-align:left">烧录</td> <td style="text-align:left">刻录</td> </tr> <tr> <td style="text-align:left">Byte</td> <td style="text-align:left">字节</td> <td style="text-align:left">字节</td> </tr> <tr> <td style="text-align:left">Cache</td> <td style="text-align:left">快取记忆体,快取</td> <td style="text-align:left">高速缓存,缓存</td> </tr> <tr> <td style="text-align:left">Call</td> <td style="text-align:left">呼叫</td> <td style="text-align:left">调用</td> </tr> <tr> <td style="text-align:left">Callback</td> <td style="text-align:left">回呼</td> <td style="text-align:left">回调</td> </tr> <tr> <td style="text-align:left">Carriage-return</td> <td style="text-align:left">回车字元</td> <td style="text-align:left">回车符</td> </tr> <tr> <td style="text-align:left">Certificate</td> <td style="text-align:left">凭证</td> <td style="text-align:left">证书</td> </tr> <tr> <td style="text-align:left">Character</td> <td style="text-align:left">字元</td> <td style="text-align:left">字符</td> </tr> <tr> <td style="text-align:left">Check</td> <td style="text-align:left">查看</td> <td style="text-align:left">查看</td> </tr> <tr> <td style="text-align:left">Check box, Checkbox</td> <td style="text-align:left">核取方块 (win);注记框 (mac)</td> <td style="text-align:left">复选框</td> </tr> <tr> <td style="text-align:left">Class</td> <td style="text-align:left">类别</td> <td style="text-align:left">类</td> </tr> <tr> <td style="text-align:left">Point &amp; Click (noun)</td> <td style="text-align:left">点按</td> <td style="text-align:left">点按</td> </tr> <tr> <td style="text-align:left">Click</td> <td style="text-align:left">nan</td> <td style="text-align:left">nan</td> </tr> <tr> <td style="text-align:left">(vs. Tap)</td> <td style="text-align:left">点选 (win);按一下,点/选按 (mac)</td> <td style="text-align:left">点击 (win);点按 (mac)</td> </tr> <tr> <td style="text-align:left">Tap</td> <td style="text-align:left">nan</td> <td style="text-align:left">nan</td> </tr> <tr> <td style="text-align:left">(vs. Click)</td> <td style="text-align:left">轻触 (win);点一下 (mac)</td> <td style="text-align:left">触碰 (win);轻点 (mac)</td> </tr> <tr> <td style="text-align:left">Client-side</td> <td style="text-align:left">用户端</td> <td style="text-align:left">客户端</td> </tr> <tr> <td style="text-align:left">Clipboard</td> <td style="text-align:left">剪贴簿 (win);剪贴板 (mac)</td> <td style="text-align:left">剪贴板</td> </tr> <tr> <td style="text-align:left">Clone</td> <td style="text-align:left">复制</td> <td style="text-align:left">克隆</td> </tr> <tr> <td style="text-align:left">Cloud computing</td> <td style="text-align:left">云端运算</td> <td style="text-align:left">云计算</td> </tr> <tr> <td style="text-align:left">Cohesion</td> <td style="text-align:left">内聚</td> <td style="text-align:left">内聚</td> </tr> <tr> <td style="text-align:left">Collaborate, Collaboration</td> <td style="text-align:left">(协同)合作</td> <td style="text-align:left">协作</td> </tr> <tr> <td style="text-align:left">Combo box</td> <td style="text-align:left">组合方块;下拉式方块 (win)</td> <td style="text-align:left">组合框</td> </tr> <tr> <td style="text-align:left">Come with</td> <td style="text-align:left">随附</td> <td style="text-align:left">随附</td> </tr> <tr> <td style="text-align:left">Command</td> <td style="text-align:left">指令</td> <td style="text-align:left">命令</td> </tr> <tr> <td style="text-align:left">Command line</td> <td style="text-align:left">命令列</td> <td style="text-align:left">命令行</td> </tr> <tr> <td style="text-align:left">Comment</td> <td style="text-align:left">留言;注解,注释</td> <td style="text-align:left">评论;注释 (win),注解,批注 (mac)</td> </tr> <tr> <td style="text-align:left">Commit</td> <td style="text-align:left">提交</td> <td style="text-align:left">提交</td> </tr> <tr> <td style="text-align:left">Communication</td> <td style="text-align:left">通讯</td> <td style="text-align:left">通信</td> </tr> <tr> <td style="text-align:left">Community</td> <td style="text-align:left">社群</td> <td style="text-align:left">社区</td> </tr> <tr> <td style="text-align:left">Compatibility</td> <td style="text-align:left">相容性</td> <td style="text-align:left">兼容性</td> </tr> <tr> <td style="text-align:left">Compatible</td> <td style="text-align:left">相容的</td> <td style="text-align:left">兼容的</td> </tr> <tr> <td style="text-align:left">Compile, Compilation</td> <td style="text-align:left">编译</td> <td style="text-align:left">编译</td> </tr> <tr> <td style="text-align:left">Compile time, Compile-time</td> <td style="text-align:left">编译期</td> <td style="text-align:left">编译期,编译时</td> </tr> <tr> <td style="text-align:left">Compiler</td> <td style="text-align:left">编译器</td> <td style="text-align:left">编译器</td> </tr> <tr> <td style="text-align:left">Component</td> <td style="text-align:left">组件;元件</td> <td style="text-align:left">组件</td> </tr> <tr> <td style="text-align:left">Composition</td> <td style="text-align:left">组合</td> <td style="text-align:left">组合</td> </tr> <tr> <td style="text-align:left">Compress</td> <td style="text-align:left">压缩</td> <td style="text-align:left">压缩</td> </tr> <tr> <td style="text-align:left">Concurrency</td> <td style="text-align:left">并行性,并行</td> <td style="text-align:left">并发性,并发</td> </tr> <tr> <td style="text-align:left">Concurrent</td> <td style="text-align:left">并行的;同时的</td> <td style="text-align:left">并发的;同时的</td> </tr> <tr> <td style="text-align:left">Configuration</td> <td style="text-align:left">配置;设定 (mac);组态 (win)</td> <td style="text-align:left">配置</td> </tr> <tr> <td style="text-align:left">Connect, Connection</td> <td style="text-align:left">连接;(网络、数据库)连线</td> <td style="text-align:left">连接</td> </tr> <tr> <td style="text-align:left">Constant</td> <td style="text-align:left">常数</td> <td style="text-align:left">常量</td> </tr> <tr> <td style="text-align:left">Constraint</td> <td style="text-align:left">约束;限制</td> <td style="text-align:left">约束;限制</td> </tr> <tr> <td style="text-align:left">Constructor</td> <td style="text-align:left">建构子,建构式,建构函式</td> <td style="text-align:left">构造函数</td> </tr> <tr> <td style="text-align:left">Container</td> <td style="text-align:left">容器</td> <td style="text-align:left">容器</td> </tr> <tr> <td style="text-align:left">Context</td> <td style="text-align:left">背景(关系);环境;上下文;内容</td> <td style="text-align:left">背景(关系);环境;上下文;内容</td> </tr> <tr> <td style="text-align:left">Continuous delivery</td> <td style="text-align:left">持续交付</td> <td style="text-align:left">持续交付</td> </tr> <tr> <td style="text-align:left">Continuous deployment</td> <td style="text-align:left">持续部署</td> <td style="text-align:left">持续部署</td> </tr> <tr> <td style="text-align:left">Continuous integration</td> <td style="text-align:left">持续整合</td> <td style="text-align:left">持续集成</td> </tr> <tr> <td style="text-align:left">Control</td> <td style="text-align:left">控制元件,控件</td> <td style="text-align:left">控件</td> </tr> <tr> <td style="text-align:left">Copy</td> <td style="text-align:left">复制 (win);拷贝 (mac)</td> <td style="text-align:left">复制 (win);拷贝 (mac)</td> </tr> <tr> <td style="text-align:left">Coroutine</td> <td style="text-align:left">协程,协同程式</td> <td style="text-align:left">协程,协同程序</td> </tr> <tr> <td style="text-align:left">Coupling</td> <td style="text-align:left">耦合</td> <td style="text-align:left">耦合</td> </tr> <tr> <td style="text-align:left">Crash</td> <td style="text-align:left">当机 (win/mac);毁损 (win)</td> <td style="text-align:left">崩溃 (win/mac);故障 (win)</td> </tr> <tr> <td style="text-align:left">Create</td> <td style="text-align:left">建立</td> <td style="text-align:left">创建</td> </tr> <tr> <td style="text-align:left">Cursor</td> <td style="text-align:left">游标</td> <td style="text-align:left">光标</td> </tr> <tr> <td style="text-align:left">Custom</td> <td style="text-align:left">自订</td> <td style="text-align:left">自定义</td> </tr> <tr> <td style="text-align:left">Data</td> <td style="text-align:left">资料</td> <td style="text-align:left">数据</td> </tr> <tr> <td style="text-align:left">Data link layer</td> <td style="text-align:left">资料连结层</td> <td style="text-align:left">数据链路层</td> </tr> <tr> <td style="text-align:left">Data structure</td> <td style="text-align:left">资料结构</td> <td style="text-align:left">数据结构</td> </tr> <tr> <td style="text-align:left">Database</td> <td style="text-align:left">数据库</td> <td style="text-align:left">数据库</td> </tr> <tr> <td style="text-align:left">Database schema</td> <td style="text-align:left">数据库纲要 (mac);数据库结构描述 (win)</td> <td style="text-align:left">数据库架构,数据库模式</td> </tr> <tr> <td style="text-align:left">Deadlock</td> <td style="text-align:left">死结;锁死</td> <td style="text-align:left">死锁</td> </tr> <tr> <td style="text-align:left">Debug</td> <td style="text-align:left">除错 (win/mac);侦错 (win)</td> <td style="text-align:left">调试</td> </tr> <tr> <td style="text-align:left">Debugger</td> <td style="text-align:left">除错器</td> <td style="text-align:left">调试器</td> </tr> <tr> <td style="text-align:left">Declare, Declaration</td> <td style="text-align:left">宣告,声明</td> <td style="text-align:left">声明</td> </tr> <tr> <td style="text-align:left">Default</td> <td style="text-align:left">预设</td> <td style="text-align:left">默认</td> </tr> <tr> <td style="text-align:left">Definition</td> <td style="text-align:left">定义;分辨率</td> <td style="text-align:left">定义;清晰度</td> </tr> <tr> <td style="text-align:left">Delegate, Delegation</td> <td style="text-align:left">委派</td> <td style="text-align:left">委托</td> </tr> <tr> <td style="text-align:left">Dependency</td> <td style="text-align:left">相依性;依赖关系</td> <td style="text-align:left">依赖</td> </tr> <tr> <td style="text-align:left">Derived class</td> <td style="text-align:left">衍生类别</td> <td style="text-align:left">派生类</td> </tr> <tr> <td style="text-align:left">Design pattern</td> <td style="text-align:left">设计模式</td> <td style="text-align:left">设计模式</td> </tr> <tr> <td style="text-align:left">Destructor</td> <td style="text-align:left">解构式,解构函式</td> <td style="text-align:left">析构函数</td> </tr> <tr> <td style="text-align:left">Detect, Detection</td> <td style="text-align:left">侦测</td> <td style="text-align:left">检测</td> </tr> <tr> <td style="text-align:left">Device</td> <td style="text-align:left">装置</td> <td style="text-align:left">设备</td> </tr> <tr> <td style="text-align:left">Dialog</td> <td style="text-align:left">对话方块 (win);对话框 (mac)</td> <td style="text-align:left">对话框</td> </tr> <tr> <td style="text-align:left">Digital</td> <td style="text-align:left">数位的;数字化</td> <td style="text-align:left">数字的;数字化</td> </tr> <tr> <td style="text-align:left">Digital signature</td> <td style="text-align:left">数位签章</td> <td style="text-align:left">数字签名</td> </tr> <tr> <td style="text-align:left">Digital certificate</td> <td style="text-align:left">数位凭证</td> <td style="text-align:left">数字证书</td> </tr> <tr> <td style="text-align:left">Directory</td> <td style="text-align:left">目录</td> <td style="text-align:left">目录</td> </tr> <tr> <td style="text-align:left">Disk</td> <td style="text-align:left">碟</td> <td style="text-align:left">盘</td> </tr> <tr> <td style="text-align:left">Disk image</td> <td style="text-align:left">磁盘映像档</td> <td style="text-align:left">磁盘映像</td> </tr> <tr> <td style="text-align:left">Dispatch</td> <td style="text-align:left">分派</td> <td style="text-align:left">分派;调度</td> </tr> <tr> <td style="text-align:left">Distributed</td> <td style="text-align:left">分散式</td> <td style="text-align:left">分布式</td> </tr> <tr> <td style="text-align:left">Distribute, Distribution</td> <td style="text-align:left">分发;分配;分散</td> <td style="text-align:left">分发;分配;分布</td> </tr> <tr> <td style="text-align:left">Distribution</td> <td style="text-align:left">发布/发行(版本);发行套件</td> <td style="text-align:left">发行(版本)</td> </tr> <tr> <td style="text-align:left">Document</td> <td style="text-align:left">文件</td> <td style="text-align:left">文档;文稿</td> </tr> <tr> <td style="text-align:left">Domain</td> <td style="text-align:left">网域</td> <td style="text-align:left">域</td> </tr> <tr> <td style="text-align:left">Driver</td> <td style="text-align:left">驱动程式</td> <td style="text-align:left">驱动程序</td> </tr> <tr> <td style="text-align:left">Drop-down, Dropdown (noun)</td> <td style="text-align:left">下拉式选单</td> <td style="text-align:left">下拉菜单</td> </tr> <tr> <td style="text-align:left">Drop-down, Dropdown (verb)</td> <td style="text-align:left">下拉</td> <td style="text-align:left">下拉</td> </tr> <tr> <td style="text-align:left">Drop-down menu</td> <td style="text-align:left">下拉式功能表 (win);下拉式选单 (mac)</td> <td style="text-align:left">下拉菜单 (win/mac)</td> </tr> <tr> <td style="text-align:left">Drop-down list</td> <td style="text-align:left">下拉式清单</td> <td style="text-align:left">下拉列表</td> </tr> <tr> <td style="text-align:left">Dynamic binding</td> <td style="text-align:left">动态系结,动态连结,动态绑定</td> <td style="text-align:left">动态绑定</td> </tr> <tr> <td style="text-align:left">Element</td> <td style="text-align:left">元素;元件</td> <td style="text-align:left">元素;元件</td> </tr> <tr> <td style="text-align:left">Email, E-mail</td> <td style="text-align:left">电子邮件</td> <td style="text-align:left">电子邮件</td> </tr> <tr> <td style="text-align:left">Enable</td> <td style="text-align:left">启用</td> <td style="text-align:left">启用</td> </tr> <tr> <td style="text-align:left">Encapsulation</td> <td style="text-align:left">封装</td> <td style="text-align:left">封装</td> </tr> <tr> <td style="text-align:left">Enter</td> <td style="text-align:left">确认;进入</td> <td style="text-align:left">回车键</td> </tr> <tr> <td style="text-align:left">Entity</td> <td style="text-align:left">实体</td> <td style="text-align:left">实体</td> </tr> <tr> <td style="text-align:left">Enumeration</td> <td style="text-align:left">列举</td> <td style="text-align:left">枚举</td> </tr> <tr> <td style="text-align:left">Equal</td> <td style="text-align:left">相等的</td> <td style="text-align:left">相等的</td> </tr> <tr> <td style="text-align:left">Equality</td> <td style="text-align:left">相等性,相等</td> <td style="text-align:left">相等性,相等</td> </tr> <tr> <td style="text-align:left">Escape code</td> <td style="text-align:left">跳脱码,逸出码,转义码</td> <td style="text-align:left">转义码</td> </tr> <tr> <td style="text-align:left">Event</td> <td style="text-align:left">事件</td> <td style="text-align:left">事件</td> </tr> <tr> <td style="text-align:left">Exception</td> <td style="text-align:left">例外</td> <td style="text-align:left">异常</td> </tr> <tr> <td style="text-align:left">Explicit</td> <td style="text-align:left">明确的 (win);显式 (mac)</td> <td style="text-align:left">显式</td> </tr> <tr> <td style="text-align:left">Export</td> <td style="text-align:left">汇出</td> <td style="text-align:left">导出</td> </tr> <tr> <td style="text-align:left">Expression</td> <td style="text-align:left">运算式 (win);表示式 (mac);表达式</td> <td style="text-align:left">表达式</td> </tr> <tr> <td style="text-align:left">Extension</td> <td style="text-align:left">扩充(程式、功能)</td> <td style="text-align:left">扩展(程序、功能)</td> </tr> <tr> <td style="text-align:left">Extension</td> <td style="text-align:left">副档名</td> <td style="text-align:left">扩展名</td> </tr> <tr> <td style="text-align:left">Feature</td> <td style="text-align:left">特色,特点,特征</td> <td style="text-align:left">特色,特点</td> </tr> <tr> <td style="text-align:left">Feature</td> <td style="text-align:left">nan</td> <td style="text-align:left">nan</td> </tr> <tr> <td style="text-align:left">(vs. Function)</td> <td style="text-align:left">(特殊的)功能</td> <td style="text-align:left">(特殊的)功能</td> </tr> <tr> <td style="text-align:left">Feedback</td> <td style="text-align:left">回馈</td> <td style="text-align:left">反馈</td> </tr> <tr> <td style="text-align:left">Field</td> <td style="text-align:left">栏位;域</td> <td style="text-align:left">字段,栏位;域</td> </tr> <tr> <td style="text-align:left">File</td> <td style="text-align:left">档案</td> <td style="text-align:left">文件</td> </tr> <tr> <td style="text-align:left">File system</td> <td style="text-align:left">档案系统</td> <td style="text-align:left">文件系统</td> </tr> <tr> <td style="text-align:left">Filter</td> <td style="text-align:left">过滤器</td> <td style="text-align:left">过滤器</td> </tr> <tr> <td style="text-align:left">Find</td> <td style="text-align:left">寻找</td> <td style="text-align:left">查找</td> </tr> <tr> <td style="text-align:left">Firmware</td> <td style="text-align:left">固件</td> <td style="text-align:left">固件</td> </tr> <tr> <td style="text-align:left">Flag</td> <td style="text-align:left">旗标</td> <td style="text-align:left">标记</td> </tr> <tr> <td style="text-align:left">Flash memory</td> <td style="text-align:left">闪存</td> <td style="text-align:left">闪存</td> </tr> <tr> <td style="text-align:left">Flush</td> <td style="text-align:left">排清,清除</td> <td style="text-align:left">刷新</td> </tr> <tr> <td style="text-align:left">对齐,齐平</td> <td style="text-align:left">对齐,齐平</td> <td style="text-align:left">nan</td> </tr> <tr> <td style="text-align:left">Folder</td> <td style="text-align:left">资料夹 (win);档案夹 (mac)</td> <td style="text-align:left">文件夹</td> </tr> <tr> <td style="text-align:left">Font</td> <td style="text-align:left">字型 (win);字体 (mac)</td> <td style="text-align:left">字体</td> </tr> <tr> <td style="text-align:left">Form</td> <td style="text-align:left">表单</td> <td style="text-align:left">表单</td> </tr> <tr> <td style="text-align:left">Format (noun)</td> <td style="text-align:left">格式</td> <td style="text-align:left">格式</td> </tr> <tr> <td style="text-align:left">Format (verb)</td> <td style="text-align:left">格式化</td> <td style="text-align:left">格式化</td> </tr> <tr> <td style="text-align:left">Forward</td> <td style="text-align:left">转发,转送,转寄</td> <td style="text-align:left">转发,转送,转寄</td> </tr> <tr> <td style="text-align:left">Fragment</td> <td style="text-align:left">片段</td> <td style="text-align:left">片段</td> </tr> <tr> <td style="text-align:left">Frame</td> <td style="text-align:left">影格,画面;框架</td> <td style="text-align:left">帧;框架</td> </tr> <tr> <td style="text-align:left">Frame rate</td> <td style="text-align:left">nan</td> <td style="text-align:left">nan</td> </tr> <tr> <td style="text-align:left">FPS (frames per second)</td> <td style="text-align:left">影格率,画面更新率</td> <td style="text-align:left">帧率</td> </tr> <tr> <td style="text-align:left">Framework</td> <td style="text-align:left">框架</td> <td style="text-align:left">框架</td> </tr> <tr> <td style="text-align:left">Frozen</td> <td style="text-align:left">(软件或影片)画面定格;冻结,锁定</td> <td style="text-align:left">冻结,锁定</td> </tr> <tr> <td style="text-align:left">Full screen, Fullscreen</td> <td style="text-align:left">全萤幕</td> <td style="text-align:left">全屏</td> </tr> <tr> <td style="text-align:left">Function</td> <td style="text-align:left">函式,函数</td> <td style="text-align:left">函数</td> </tr> <tr> <td style="text-align:left">Function</td> <td style="text-align:left">nan</td> <td style="text-align:left">nan</td> </tr> <tr> <td style="text-align:left">(vs. Feature)</td> <td style="text-align:left">(一般的)功能</td> <td style="text-align:left">(一般的)功能</td> </tr> <tr> <td style="text-align:left">Functionality</td> <td style="text-align:left">功能</td> <td style="text-align:left">功能</td> </tr> <tr> <td style="text-align:left">Game</td> <td style="text-align:left">游戏</td> <td style="text-align:left">游戏</td> </tr> <tr> <td style="text-align:left">Gateway</td> <td style="text-align:left">闸道器</td> <td style="text-align:left">网关</td> </tr> <tr> <td style="text-align:left">General</td> <td style="text-align:left">一般的</td> <td style="text-align:left">通用的</td> </tr> <tr> <td style="text-align:left">Generate</td> <td style="text-align:left">产生,生成</td> <td style="text-align:left">生成</td> </tr> <tr> <td style="text-align:left">Generic</td> <td style="text-align:left">通用的</td> <td style="text-align:left">通用的</td> </tr> <tr> <td style="text-align:left">Generics</td> <td style="text-align:left">泛型</td> <td style="text-align:left">泛型</td> </tr> <tr> <td style="text-align:left">Global</td> <td style="text-align:left">全域的;总体的,整体的,通用的</td> <td style="text-align:left">全局的</td> </tr> <tr> <td style="text-align:left">Group box</td> <td style="text-align:left">群组方块</td> <td style="text-align:left">分组框,群组框</td> </tr> <tr> <td style="text-align:left">Graph</td> <td style="text-align:left">图</td> <td style="text-align:left">图</td> </tr> <tr> <td style="text-align:left">Handle</td> <td style="text-align:left">控制代码</td> <td style="text-align:left">句柄</td> </tr> <tr> <td style="text-align:left">Handler</td> <td style="text-align:left">处理常式,处理程式,处理器</td> <td style="text-align:left">处理程序,处理器</td> </tr> <tr> <td style="text-align:left">Hardware</td> <td style="text-align:left">硬件</td> <td style="text-align:left">硬件</td> </tr> <tr> <td style="text-align:left">Hash</td> <td style="text-align:left">杂凑</td> <td style="text-align:left">哈希</td> </tr> <tr> <td style="text-align:left">Header file</td> <td style="text-align:left">标头档</td> <td style="text-align:left">头文件</td> </tr> <tr> <td style="text-align:left">Heap</td> <td style="text-align:left">堆积</td> <td style="text-align:left">堆</td> </tr> <tr> <td style="text-align:left">Help</td> <td style="text-align:left">使用说明;说明;帮助</td> <td style="text-align:left">帮助</td> </tr> <tr> <td style="text-align:left">Hierarchy</td> <td style="text-align:left">阶层</td> <td style="text-align:left">层次结构</td> </tr> <tr> <td style="text-align:left">High Definition</td> <td style="text-align:left">高分辨率,高清</td> <td style="text-align:left">高清晰度,高清</td> </tr> <tr> <td style="text-align:left">Host file</td> <td style="text-align:left">主机档案,host 档案</td> <td style="text-align:left">主机文件</td> </tr> <tr> <td style="text-align:left">Home folder</td> <td style="text-align:left">主资料夹 (win);个人专属档案夹 (mac)</td> <td style="text-align:left">主文件夹 (win);个人文件夹 (mac)</td> </tr> <tr> <td style="text-align:left">Home page</td> <td style="text-align:left">首页,主页</td> <td style="text-align:left">主页</td> </tr> <tr> <td style="text-align:left">Icon</td> <td style="text-align:left">图示 (win);图像 (mac)</td> <td style="text-align:left">图标</td> </tr> <tr> <td style="text-align:left">IDE</td> <td style="text-align:left">整合式开发环境</td> <td style="text-align:left">集成开发环境</td> </tr> <tr> <td style="text-align:left">Identifier</td> <td style="text-align:left">识别字</td> <td style="text-align:left">标识符</td> </tr> <tr> <td style="text-align:left">Idle</td> <td style="text-align:left">闲置</td> <td style="text-align:left">闲置</td> </tr> <tr> <td style="text-align:left">Image</td> <td style="text-align:left">影像;图像,图片;映像档</td> <td style="text-align:left">影像;图像,图片;映像</td> </tr> <tr> <td style="text-align:left">Immutable</td> <td style="text-align:left">不可变的;无法更改的</td> <td style="text-align:left">不可变的;不可更改的</td> </tr> <tr> <td style="text-align:left">Implement</td> <td style="text-align:left">实作</td> <td style="text-align:left">实现</td> </tr> <tr> <td style="text-align:left">Implementation</td> <td style="text-align:left">实作(品)</td> <td style="text-align:left">实现</td> </tr> <tr> <td style="text-align:left">Implicit</td> <td style="text-align:left">隐含的 (win);隐式 (mac)</td> <td style="text-align:left">隐式</td> </tr> <tr> <td style="text-align:left">Import</td> <td style="text-align:left">汇入</td> <td style="text-align:left">导入</td> </tr> <tr> <td style="text-align:left">Indent</td> <td style="text-align:left">缩排</td> <td style="text-align:left">缩进</td> </tr> <tr> <td style="text-align:left">Info</td> <td style="text-align:left">资讯</td> <td style="text-align:left">简介</td> </tr> <tr> <td style="text-align:left">Information</td> <td style="text-align:left">资讯</td> <td style="text-align:left">信息</td> </tr> <tr> <td style="text-align:left">Inheritance</td> <td style="text-align:left">继承</td> <td style="text-align:left">继承</td> </tr> <tr> <td style="text-align:left">Initialization</td> <td style="text-align:left">初始化</td> <td style="text-align:left">初始化</td> </tr> <tr> <td style="text-align:left">Inline</td> <td style="text-align:left">行内;内嵌</td> <td style="text-align:left">内联</td> </tr> <tr> <td style="text-align:left">Instance</td> <td style="text-align:left">实体;实例</td> <td style="text-align:left">实例</td> </tr> <tr> <td style="text-align:left">Integrate</td> <td style="text-align:left">整合</td> <td style="text-align:left">集成</td> </tr> <tr> <td style="text-align:left">Integrated</td> <td style="text-align:left">整合式,整合的</td> <td style="text-align:left">集成的</td> </tr> <tr> <td style="text-align:left">Integrity</td> <td style="text-align:left">完整性</td> <td style="text-align:left">完整性</td> </tr> <tr> <td style="text-align:left">Interact, Interaction</td> <td style="text-align:left">互动</td> <td style="text-align:left">交互</td> </tr> <tr> <td style="text-align:left">Interface</td> <td style="text-align:left">界面</td> <td style="text-align:left">接口</td> </tr> <tr> <td style="text-align:left">Internal Storage</td> <td style="text-align:left">内部储存</td> <td style="text-align:left">内存 (仅手机等便携装置,民间称谓)</td> </tr> <tr> <td style="text-align:left">Internationalization (I18N)</td> <td style="text-align:left">国际化</td> <td style="text-align:left">国际化</td> </tr> <tr> <td style="text-align:left">Internet</td> <td style="text-align:left">互联网</td> <td style="text-align:left">互联网</td> </tr> <tr> <td style="text-align:left">Interpreter</td> <td style="text-align:left">直译器</td> <td style="text-align:left">解释器</td> </tr> <tr> <td style="text-align:left">Invoke</td> <td style="text-align:left">呼叫(mac);执行,叫用(win)</td> <td style="text-align:left">调用</td> </tr> <tr> <td style="text-align:left">Iterate</td> <td style="text-align:left">迭代;反复(运算)</td> <td style="text-align:left">迭代;重复、循环(访问)</td> </tr> <tr> <td style="text-align:left">Iteration</td> <td style="text-align:left">迭代</td> <td style="text-align:left">迭代</td> </tr> <tr> <td style="text-align:left">Iterator</td> <td style="text-align:left">迭代器</td> <td style="text-align:left">迭代器</td> </tr> <tr> <td style="text-align:left">Kernel</td> <td style="text-align:left">核心</td> <td style="text-align:left">内核</td> </tr> <tr> <td style="text-align:left">Key</td> <td style="text-align:left">金钥,密钥</td> <td style="text-align:left">密钥</td> </tr> <tr> <td style="text-align:left">Keybind</td> <td style="text-align:left">快速键</td> <td style="text-align:left">快捷键</td> </tr> <tr> <td style="text-align:left">Lag</td> <td style="text-align:left">延迟</td> <td style="text-align:left">延迟</td> </tr> <tr> <td style="text-align:left">Layout</td> <td style="text-align:left">布局,配置</td> <td style="text-align:left">布局,配置</td> </tr> <tr> <td style="text-align:left">Lazy loading</td> <td style="text-align:left">惰性载入;消极式载入;延迟载入;懒载入</td> <td style="text-align:left">延迟加载;懒加载</td> </tr> <tr> <td style="text-align:left">Lexer, Lexical analyzer</td> <td style="text-align:left">词法分析器</td> <td style="text-align:left">词法分析器</td> </tr> <tr> <td style="text-align:left">Lexical analysis</td> <td style="text-align:left">词法分析</td> <td style="text-align:left">词法分析</td> </tr> <tr> <td style="text-align:left">Library</td> <td style="text-align:left">程式库,函式库</td> <td style="text-align:left">程序库,函数库</td> </tr> <tr> <td style="text-align:left">Link</td> <td style="text-align:left">连结</td> <td style="text-align:left">链接</td> </tr> <tr> <td style="text-align:left">Link time</td> <td style="text-align:left">连结期</td> <td style="text-align:left">链接期</td> </tr> <tr> <td style="text-align:left">Linked list</td> <td style="text-align:left">连结串列</td> <td style="text-align:left">链表</td> </tr> <tr> <td style="text-align:left">Linker</td> <td style="text-align:left">连结器</td> <td style="text-align:left">链接器</td> </tr> <tr> <td style="text-align:left">List</td> <td style="text-align:left">清单;列表</td> <td style="text-align:left">列表</td> </tr> <tr> <td style="text-align:left">Listener</td> <td style="text-align:left">监听器</td> <td style="text-align:left">监听器</td> </tr> <tr> <td style="text-align:left">Literals</td> <td style="text-align:left">字面值,定数,常值</td> <td style="text-align:left">字面值,字面量</td> </tr> <tr> <td style="text-align:left">Literal constant</td> <td style="text-align:left">字面常数,字面常值</td> <td style="text-align:left">字面常量</td> </tr> <tr> <td style="text-align:left">Load</td> <td style="text-align:left">载入</td> <td style="text-align:left">加载</td> </tr> <tr> <td style="text-align:left">Load time</td> <td style="text-align:left">载入期</td> <td style="text-align:left">加载期</td> </tr> <tr> <td style="text-align:left">Loader</td> <td style="text-align:left">载入器</td> <td style="text-align:left">加载器</td> </tr> <tr> <td style="text-align:left">Local</td> <td style="text-align:left">区域的,本地的;本机</td> <td style="text-align:left">局部的,本地的;本地(主机)</td> </tr> <tr> <td style="text-align:left">Localization (L10N)</td> <td style="text-align:left">在地化</td> <td style="text-align:left">本地化</td> </tr> <tr> <td style="text-align:left">Local variable</td> <td style="text-align:left">区域变数</td> <td style="text-align:left">局部变量</td> </tr> <tr> <td style="text-align:left">Lock</td> <td style="text-align:left">锁定</td> <td style="text-align:left">锁定</td> </tr> <tr> <td style="text-align:left">Log</td> <td style="text-align:left">记录</td> <td style="text-align:left">日志</td> </tr> <tr> <td style="text-align:left">Log in, Login</td> <td style="text-align:left">登入</td> <td style="text-align:left">登录</td> </tr> <tr> <td style="text-align:left">Log out, Logout</td> <td style="text-align:left">登出</td> <td style="text-align:left">退出;注销</td> </tr> <tr> <td style="text-align:left">Loop</td> <td style="text-align:left">循环;重复;循环</td> <td style="text-align:left">循环</td> </tr> <tr> <td style="text-align:left">Map, Mapping</td> <td style="text-align:left">对应;映射</td> <td style="text-align:left">映射</td> </tr> <tr> <td style="text-align:left">Match</td> <td style="text-align:left">配对;符合;配合;比对;匹配</td> <td style="text-align:left">匹配</td> </tr> <tr> <td style="text-align:left">Macro</td> <td style="text-align:left">巨集</td> <td style="text-align:left">宏</td> </tr> <tr> <td style="text-align:left">Memory</td> <td style="text-align:left">记忆体</td> <td style="text-align:left">内存</td> </tr> <tr> <td style="text-align:left">Menu</td> <td style="text-align:left">选单;功能表</td> <td style="text-align:left">菜单</td> </tr> <tr> <td style="text-align:left">Message</td> <td style="text-align:left">讯息</td> <td style="text-align:left">消息;信息</td> </tr> <tr> <td style="text-align:left">Metadata</td> <td style="text-align:left">中继资料(win);后设资料(mac);诠释资料</td> <td style="text-align:left">元数据</td> </tr> <tr> <td style="text-align:left">Middleware</td> <td style="text-align:left">中介层,中介软件</td> <td style="text-align:left">中间件,中间软件</td> </tr> <tr> <td style="text-align:left">Mobile</td> <td style="text-align:left">行动</td> <td style="text-align:left">移动</td> </tr> <tr> <td style="text-align:left">Moderate, Moderation</td> <td style="text-align:left">审核</td> <td style="text-align:left">审核</td> </tr> <tr> <td style="text-align:left">Modifier</td> <td style="text-align:left">修饰子,修饰词</td> <td style="text-align:left">修饰符</td> </tr> <tr> <td style="text-align:left">Module</td> <td style="text-align:left">模组</td> <td style="text-align:left">模块</td> </tr> <tr> <td style="text-align:left">Monomorphism</td> <td style="text-align:left">单型</td> <td style="text-align:left">单态</td> </tr> <tr> <td style="text-align:left">Motherboard</td> <td style="text-align:left">主板</td> <td style="text-align:left">主板</td> </tr> <tr> <td style="text-align:left">Mouse</td> <td style="text-align:left">鼠标</td> <td style="text-align:left">鼠标</td> </tr> <tr> <td style="text-align:left">Mouse pointer</td> <td style="text-align:left">鼠标指标</td> <td style="text-align:left">鼠标指针</td> </tr> <tr> <td style="text-align:left">Multitasking</td> <td style="text-align:left">多工(处理)</td> <td style="text-align:left">多任务(处理)</td> </tr> <tr> <td style="text-align:left">Mutable</td> <td style="text-align:left">可变的</td> <td style="text-align:left">可变的</td> </tr> <tr> <td style="text-align:left">Mutex</td> <td style="text-align:left">互斥</td> <td style="text-align:left">互斥</td> </tr> <tr> <td style="text-align:left">Native</td> <td style="text-align:left">原生</td> <td style="text-align:left">原生</td> </tr> <tr> <td style="text-align:left">Navigate, Navigation</td> <td style="text-align:left">导览</td> <td style="text-align:left">导航</td> </tr> <tr> <td style="text-align:left">Navigator</td> <td style="text-align:left">导览器</td> <td style="text-align:left">导航器</td> </tr> <tr> <td style="text-align:left">Nested</td> <td style="text-align:left">巢状的</td> <td style="text-align:left">嵌套的</td> </tr> <tr> <td style="text-align:left">Network</td> <td style="text-align:left">网络</td> <td style="text-align:left">网络</td> </tr> <tr> <td style="text-align:left">New</td> <td style="text-align:left">新增</td> <td style="text-align:left">新建</td> </tr> <tr> <td style="text-align:left">Notarization</td> <td style="text-align:left">公证</td> <td style="text-align:left">公证</td> </tr> <tr> <td style="text-align:left">Object</td> <td style="text-align:left">物件</td> <td style="text-align:left">对象</td> </tr> <tr> <td style="text-align:left">Object code</td> <td style="text-align:left">目的码</td> <td style="text-align:left">目标代码</td> </tr> <tr> <td style="text-align:left">Object file</td> <td style="text-align:left">目的档,目的码档</td> <td style="text-align:left">目标文件</td> </tr> <tr> <td style="text-align:left">Object-oriented</td> <td style="text-align:left">物件导向</td> <td style="text-align:left">面向对象</td> </tr> <tr> <td style="text-align:left">Online</td> <td style="text-align:left">线上</td> <td style="text-align:left">在线</td> </tr> <tr> <td style="text-align:left">Operand</td> <td style="text-align:left">算子</td> <td style="text-align:left">操作数,运算元</td> </tr> <tr> <td style="text-align:left">Operating system</td> <td style="text-align:left">操作系统</td> <td style="text-align:left">操作系统</td> </tr> <tr> <td style="text-align:left">Operator</td> <td style="text-align:left">运算子</td> <td style="text-align:left">操作符,运算符</td> </tr> <tr> <td style="text-align:left">Optimize, Optimization</td> <td style="text-align:left">最佳化</td> <td style="text-align:left">优化</td> </tr> <tr> <td style="text-align:left">Option</td> <td style="text-align:left">选项</td> <td style="text-align:left">参数</td> </tr> <tr> <td style="text-align:left">Overflow</td> <td style="text-align:left">溢位(上限溢位)</td> <td style="text-align:left">溢出(上溢出)</td> </tr> <tr> <td style="text-align:left">Overlay</td> <td style="text-align:left">嵌入界面</td> <td style="text-align:left">叠加面板</td> </tr> <tr> <td style="text-align:left">Overload</td> <td style="text-align:left">多载,覆载,重载</td> <td style="text-align:left">重载</td> </tr> <tr> <td style="text-align:left">Override</td> <td style="text-align:left">覆写,重写</td> <td style="text-align:left">覆盖,重写</td> </tr> <tr> <td style="text-align:left">Pack</td> <td style="text-align:left">封装,压缩</td> <td style="text-align:left">打包,压缩</td> </tr> <tr> <td style="text-align:left">Package (noun)</td> <td style="text-align:left">套件,软件包</td> <td style="text-align:left">(程序、软件)包</td> </tr> <tr> <td style="text-align:left">Package (verb)</td> <td style="text-align:left">封装</td> <td style="text-align:left">打包,封装</td> </tr> <tr> <td style="text-align:left">Pane</td> <td style="text-align:left">窗格(win);面板(mac)</td> <td style="text-align:left">窗格(win);面板(mac)</td> </tr> <tr> <td style="text-align:left">Parallelism</td> <td style="text-align:left">平行性,平行</td> <td style="text-align:left">并行性,并行</td> </tr> <tr> <td style="text-align:left">Parameter</td> <td style="text-align:left">参数</td> <td style="text-align:left">参数(也称为形式参数,形参)</td> </tr> <tr> <td style="text-align:left">Parse</td> <td style="text-align:left">分析;剖析;解析</td> <td style="text-align:left">解析</td> </tr> <tr> <td style="text-align:left">Parser</td> <td style="text-align:left">语法剖析器</td> <td style="text-align:left">语法分析器</td> </tr> <tr> <td style="text-align:left">Partition</td> <td style="text-align:left">分割;(硬盘)分割区</td> <td style="text-align:left">分割;(硬盘)分区</td> </tr> <tr> <td style="text-align:left">Paste</td> <td style="text-align:left">贴上</td> <td style="text-align:left">粘贴</td> </tr> <tr> <td style="text-align:left">Patch</td> <td style="text-align:left">更新档(win);修补程式(mac)</td> <td style="text-align:left">补丁(win);修补程序(mac)</td> </tr> <tr> <td style="text-align:left">Pattern</td> <td style="text-align:left">模式;样式</td> <td style="text-align:left">模式;样式</td> </tr> <tr> <td style="text-align:left">Performance</td> <td style="text-align:left">效能</td> <td style="text-align:left">性能</td> </tr> <tr> <td style="text-align:left">Persistence</td> <td style="text-align:left">持续性</td> <td style="text-align:left">持久性</td> </tr> <tr> <td style="text-align:left">Photo</td> <td style="text-align:left">照片</td> <td style="text-align:left">照片</td> </tr> <tr> <td style="text-align:left">Physical layer</td> <td style="text-align:left">实体层</td> <td style="text-align:left">物理层</td> </tr> <tr> <td style="text-align:left">Picklist</td> <td style="text-align:left">挑选清单 (win);选取列表 (mac)</td> <td style="text-align:left">选择列表</td> </tr> <tr> <td style="text-align:left">Placeholder</td> <td style="text-align:left">占位符号;预留位置(win);暂存区(mac)</td> <td style="text-align:left">占位符</td> </tr> <tr> <td style="text-align:left">Pluggability</td> <td style="text-align:left">可拔插性</td> <td style="text-align:left">可插入性</td> </tr> <tr> <td style="text-align:left">Plugin</td> <td style="text-align:left">插件(win);外挂模组(mac)</td> <td style="text-align:left">插件 扩展</td> </tr> <tr> <td style="text-align:left">Pointer</td> <td style="text-align:left">指标</td> <td style="text-align:left">指针</td> </tr> <tr> <td style="text-align:left">Polymorphism</td> <td style="text-align:left">多型</td> <td style="text-align:left">多态</td> </tr> <tr> <td style="text-align:left">Port</td> <td style="text-align:left">(连接)埠</td> <td style="text-align:left">端口</td> </tr> <tr> <td style="text-align:left">Power bank</td> <td style="text-align:left">行动电源</td> <td style="text-align:left">移动电源,充电宝</td> </tr> <tr> <td style="text-align:left">Presentation layer</td> <td style="text-align:left">表现层</td> <td style="text-align:left">表示层</td> </tr> <tr> <td style="text-align:left">Preset</td> <td style="text-align:left">预设</td> <td style="text-align:left">预设</td> </tr> <tr> <td style="text-align:left">Print</td> <td style="text-align:left">打印</td> <td style="text-align:left">打印</td> </tr> <tr> <td style="text-align:left">Printer</td> <td style="text-align:left">打印机,打印机</td> <td style="text-align:left">打印机</td> </tr> <tr> <td style="text-align:left">Procedure</td> <td style="text-align:left">程序</td> <td style="text-align:left">过程</td> </tr> <tr> <td style="text-align:left">Process</td> <td style="text-align:left">行程;程序</td> <td style="text-align:left">进程</td> </tr> <tr> <td style="text-align:left">Profile</td> <td style="text-align:left">设定档(win);描述档(mac)</td> <td style="text-align:left">配置文件(win);描述文件(mac)</td> </tr> <tr> <td style="text-align:left">Profile</td> <td style="text-align:left">评测</td> <td style="text-align:left">评测</td> </tr> <tr> <td style="text-align:left">Profile (or Personal profile)</td> <td style="text-align:left">个人档案</td> <td style="text-align:left">个人资料</td> </tr> <tr> <td style="text-align:left">Profiler</td> <td style="text-align:left">(效能)分析工具</td> <td style="text-align:left">(性能)分析器</td> </tr> <tr> <td style="text-align:left">Program</td> <td style="text-align:left">程式</td> <td style="text-align:left">程序</td> </tr> <tr> <td style="text-align:left">Project</td> <td style="text-align:left">专案</td> <td style="text-align:left">项目,工程</td> </tr> <tr> <td style="text-align:left">Protocol</td> <td style="text-align:left">协定</td> <td style="text-align:left">协议</td> </tr> <tr> <td style="text-align:left">Provision, Provisioning</td> <td style="text-align:left">布建</td> <td style="text-align:left">预配</td> </tr> <tr> <td style="text-align:left">Proxy (or Proxy server)</td> <td style="text-align:left">代理服务器</td> <td style="text-align:left">代理服务器</td> </tr> <tr> <td style="text-align:left">Pseudo code</td> <td style="text-align:left">虚拟码</td> <td style="text-align:left">伪代码</td> </tr> <tr> <td style="text-align:left">Pull-down list</td> <td style="text-align:left">下拉式清单</td> <td style="text-align:left">下拉列表</td> </tr> <tr> <td style="text-align:left">Quality</td> <td style="text-align:left">品质</td> <td style="text-align:left">质量</td> </tr> <tr> <td style="text-align:left">Queue</td> <td style="text-align:left">伫列</td> <td style="text-align:left">队列</td> </tr> <tr> <td style="text-align:left">Quit unexpectedly</td> <td style="text-align:left">(App)闪退</td> <td style="text-align:left">意外退出</td> </tr> <tr> <td style="text-align:left">Radian</td> <td style="text-align:left">径度</td> <td style="text-align:left">弧度</td> </tr> <tr> <td style="text-align:left">Radio button</td> <td style="text-align:left">选项按钮(win);圆形按钮(mac)</td> <td style="text-align:left">单选按钮</td> </tr> <tr> <td style="text-align:left">RAM (Random Access Memory)</td> <td style="text-align:left">随机存取记忆体</td> <td style="text-align:left">随机存取存储器</td> </tr> <tr> <td style="text-align:left">Read</td> <td style="text-align:left">读取</td> <td style="text-align:left">读</td> </tr> <tr> <td style="text-align:left">Read-only</td> <td style="text-align:left">只读</td> <td style="text-align:left">只读</td> </tr> <tr> <td style="text-align:left">Recovery</td> <td style="text-align:left">复原,还原</td> <td style="text-align:left">还原 (win),恢复 (mac)</td> </tr> <tr> <td style="text-align:left">Recursion</td> <td style="text-align:left">递回</td> <td style="text-align:left">递归</td> </tr> <tr> <td style="text-align:left">Redirect, Redirection</td> <td style="text-align:left">重新导向;转址</td> <td style="text-align:left">重定向</td> </tr> <tr> <td style="text-align:left">Reference</td> <td style="text-align:left">参照,参考</td> <td style="text-align:left">参考</td> </tr> <tr> <td style="text-align:left">Register</td> <td style="text-align:left">暂存器;注册</td> <td style="text-align:left">寄存器;注册</td> </tr> <tr> <td style="text-align:left">Regular expression</td> <td style="text-align:left">正规表示法;正规表达式;规则运算式</td> <td style="text-align:left">正则表达式</td> </tr> <tr> <td style="text-align:left">Release</td> <td style="text-align:left">(发行、发布)版本</td> <td style="text-align:left">(发行、发布)版本</td> </tr> <tr> <td style="text-align:left">Remote</td> <td style="text-align:left">远端</td> <td style="text-align:left">远程</td> </tr> <tr> <td style="text-align:left">Render</td> <td style="text-align:left">算绘;渲染</td> <td style="text-align:left">渲染</td> </tr> <tr> <td style="text-align:left">Resolution</td> <td style="text-align:left">分辨率</td> <td style="text-align:left">分辨率</td> </tr> <tr> <td style="text-align:left">Response</td> <td style="text-align:left">回应</td> <td style="text-align:left">响应</td> </tr> <tr> <td style="text-align:left">Response body</td> <td style="text-align:left">回应本文</td> <td style="text-align:left">响应正文</td> </tr> <tr> <td style="text-align:left">Response header</td> <td style="text-align:left">回应标头</td> <td style="text-align:left">响应头</td> </tr> <tr> <td style="text-align:left">Restore</td> <td style="text-align:left">还原 (win),回复 (mac)</td> <td style="text-align:left">还原 (win),恢复 (mac)</td> </tr> <tr> <td style="text-align:left">Return</td> <td style="text-align:left">回传,传回;恢复</td> <td style="text-align:left">返回;恢复</td> </tr> <tr> <td style="text-align:left">Revoke, Revocation</td> <td style="text-align:left">撤销</td> <td style="text-align:left">撤销</td> </tr> <tr> <td style="text-align:left">Rollback</td> <td style="text-align:left">复原</td> <td style="text-align:left">回滚,回退</td> </tr> <tr> <td style="text-align:left">Routine</td> <td style="text-align:left">常式</td> <td style="text-align:left">程序</td> </tr> <tr> <td style="text-align:left">Run</td> <td style="text-align:left">执行</td> <td style="text-align:left">运行</td> </tr> <tr> <td style="text-align:left">Runtime, Run-time</td> <td style="text-align:left">执行期;执行环境</td> <td style="text-align:left">运行期,运行时;运行环境</td> </tr> <tr> <td style="text-align:left">Runtime environment (RTE),</td> <td style="text-align:left">执行环境</td> <td style="text-align:left">运行环境</td> </tr> <tr> <td style="text-align:left">Runtime system</td> <td style="text-align:left">执行系统</td> <td style="text-align:left">运行系统</td> </tr> <tr> <td style="text-align:left">Save</td> <td style="text-align:left">储存</td> <td style="text-align:left">保存</td> </tr> <tr> <td style="text-align:left">Sampling</td> <td style="text-align:left">取样</td> <td style="text-align:left">取样</td> </tr> <tr> <td style="text-align:left">Scalar</td> <td style="text-align:left">纯量</td> <td style="text-align:left">标量</td> </tr> <tr> <td style="text-align:left">Schedule</td> <td style="text-align:left">排程</td> <td style="text-align:left">调度</td> </tr> <tr> <td style="text-align:left">Scheduler</td> <td style="text-align:left">排程器,排程程式</td> <td style="text-align:left">调度器,调度程序</td> </tr> <tr> <td style="text-align:left">Scope</td> <td style="text-align:left">(作用、有效)范围,域</td> <td style="text-align:left">(作用、有效)范围,域</td> </tr> <tr> <td style="text-align:left">Scroll bar</td> <td style="text-align:left">卷轴</td> <td style="text-align:left">滚动条</td> </tr> <tr> <td style="text-align:left">Script</td> <td style="text-align:left">指令码(win);工序指令(mac)</td> <td style="text-align:left">脚本</td> </tr> <tr> <td style="text-align:left">SDK (Software Development Kit)</td> <td style="text-align:left">软件开发工具包;软件开发套件</td> <td style="text-align:left">软件开发工具包;软件开发套件</td> </tr> <tr> <td style="text-align:left">Search engine</td> <td style="text-align:left">搜索引擎</td> <td style="text-align:left">搜索引擎</td> </tr> <tr> <td style="text-align:left">Security</td> <td style="text-align:left">安全性</td> <td style="text-align:left">安全性</td> </tr> <tr> <td style="text-align:left">Segment</td> <td style="text-align:left">区段</td> <td style="text-align:left">段</td> </tr> <tr> <td style="text-align:left">Semaphore</td> <td style="text-align:left">号志</td> <td style="text-align:left">信号量</td> </tr> <tr> <td style="text-align:left">Server</td> <td style="text-align:left">服务器</td> <td style="text-align:left">服务器</td> </tr> <tr> <td style="text-align:left">Server-side</td> <td style="text-align:left">服务器端</td> <td style="text-align:left">服务器端,服务端</td> </tr> <tr> <td style="text-align:left">Session</td> <td style="text-align:left">工作阶段,作业阶段</td> <td style="text-align:left">会话</td> </tr> <tr> <td style="text-align:left">Session</td> <td style="text-align:left">(电脑网络)对谈/话,会谈/话;连线阶段</td> <td style="text-align:left">会话</td> </tr> <tr> <td style="text-align:left">Session layer</td> <td style="text-align:left">会议层</td> <td style="text-align:left">会话层</td> </tr> <tr> <td style="text-align:left">Set up</td> <td style="text-align:left">设定</td> <td style="text-align:left">设置</td> </tr> <tr> <td style="text-align:left">Settings</td> <td style="text-align:left">设定</td> <td style="text-align:left">设置</td> </tr> <tr> <td style="text-align:left">Shortcut</td> <td style="text-align:left">捷径</td> <td style="text-align:left">快捷</td> </tr> <tr> <td style="text-align:left">Shortcut key</td> <td style="text-align:left">快速键</td> <td style="text-align:left">快捷键</td> </tr> <tr> <td style="text-align:left">Sign in, sign-in</td> <td style="text-align:left">登入</td> <td style="text-align:left">登录</td> </tr> <tr> <td style="text-align:left">Sign out, sign-out</td> <td style="text-align:left">登出</td> <td style="text-align:left">退出,注销</td> </tr> <tr> <td style="text-align:left">Silicon</td> <td style="text-align:left">硅</td> <td style="text-align:left">硅</td> </tr> <tr> <td style="text-align:left">Simulation</td> <td style="text-align:left">模拟</td> <td style="text-align:left">模拟</td> </tr> <tr> <td style="text-align:left">Signature</td> <td style="text-align:left">签章;签名</td> <td style="text-align:left">签名</td> </tr> <tr> <td style="text-align:left">Slider</td> <td style="text-align:left">滑杆</td> <td style="text-align:left">滑块</td> </tr> <tr> <td style="text-align:left">Smart</td> <td style="text-align:left">智慧</td> <td style="text-align:left">智能</td> </tr> <tr> <td style="text-align:left">Smartphone</td> <td style="text-align:left">智能手机</td> <td style="text-align:left">智能手机</td> </tr> <tr> <td style="text-align:left">SMS (Short Message Service)</td> <td style="text-align:left">简讯</td> <td style="text-align:left">短信</td> </tr> <tr> <td style="text-align:left">Snip</td> <td style="text-align:left">撷图</td> <td style="text-align:left">截图</td> </tr> <tr> <td style="text-align:left">Source code</td> <td style="text-align:left">源代码</td> <td style="text-align:left">源代码,源码</td> </tr> <tr> <td style="text-align:left">Stack</td> <td style="text-align:left">堆叠</td> <td style="text-align:left">栈</td> </tr> <tr> <td style="text-align:left">Star rating</td> <td style="text-align:left">星级评等(win);星号评等(mac)</td> <td style="text-align:left">星级评分</td> </tr> <tr> <td style="text-align:left">Statement</td> <td style="text-align:left">叙述,陈述(句)</td> <td style="text-align:left">语句</td> </tr> <tr> <td style="text-align:left">Status bar</td> <td style="text-align:left">状态列</td> <td style="text-align:left">状态栏</td> </tr> <tr> <td style="text-align:left">Stepper</td> <td style="text-align:left">步进器</td> <td style="text-align:left">步进器</td> </tr> <tr> <td style="text-align:left">Stream</td> <td style="text-align:left">串流;资料流</td> <td style="text-align:left">(数据)流</td> </tr> <tr> <td style="text-align:left">String</td> <td style="text-align:left">字串</td> <td style="text-align:left">字符串</td> </tr> <tr> <td style="text-align:left">String interpolation</td> <td style="text-align:left">字串插值</td> <td style="text-align:left">字符串插值</td> </tr> <tr> <td style="text-align:left">Stuttering</td> <td style="text-align:left">(软件或影片的画面)断断续续</td> <td style="text-align:left">-</td> </tr> <tr> <td style="text-align:left">Subclass</td> <td style="text-align:left">子类别</td> <td style="text-align:left">子类</td> </tr> <tr> <td style="text-align:left">Subroutine</td> <td style="text-align:left">副程式</td> <td style="text-align:left">子例程</td> </tr> <tr> <td style="text-align:left">Superclass</td> <td style="text-align:left">父类别</td> <td style="text-align:left">超类</td> </tr> <tr> <td style="text-align:left">Support</td> <td style="text-align:left">支援</td> <td style="text-align:left">支持</td> </tr> <tr> <td style="text-align:left">Suspend</td> <td style="text-align:left">暂停(权限)</td> <td style="text-align:left">暂停(权限)</td> </tr> <tr> <td style="text-align:left">Synchronize</td> <td style="text-align:left">同步</td> <td style="text-align:left">同步</td> </tr> <tr> <td style="text-align:left">Synchronous</td> <td style="text-align:left">同步的</td> <td style="text-align:left">同步的</td> </tr> <tr> <td style="text-align:left">Syntactic analysis</td> <td style="text-align:left">语法分析;语法剖析</td> <td style="text-align:left">语法分析</td> </tr> <tr> <td style="text-align:left">Tab</td> <td style="text-align:left">索引标签,分页,标签(页)</td> <td style="text-align:left">标签(页)</td> </tr> <tr> <td style="text-align:left">Tag</td> <td style="text-align:left">标记</td> <td style="text-align:left">标签</td> </tr> <tr> <td style="text-align:left">Task</td> <td style="text-align:left">工作</td> <td style="text-align:left">任务</td> </tr> <tr> <td style="text-align:left">Template</td> <td style="text-align:left">范本</td> <td style="text-align:left">模板</td> </tr> <tr> <td style="text-align:left">Text</td> <td style="text-align:left">文字</td> <td style="text-align:left">文本</td> </tr> <tr> <td style="text-align:left">Text box</td> <td style="text-align:left">文字框</td> <td style="text-align:left">文本框</td> </tr> <tr> <td style="text-align:left">Thread</td> <td style="text-align:left">执行绪</td> <td style="text-align:left">线程</td> </tr> <tr> <td style="text-align:left">Top-up</td> <td style="text-align:left">加值,储值</td> <td style="text-align:left">充值</td> </tr> <tr> <td style="text-align:left">Token</td> <td style="text-align:left">标记(win);代号(mac)</td> <td style="text-align:left">标记(win);令牌(mac)</td> </tr> <tr> <td style="text-align:left">Traverse</td> <td style="text-align:left">走访</td> <td style="text-align:left">遍历</td> </tr> <tr> <td style="text-align:left">Tray (or System tray)</td> <td style="text-align:left">系统匣</td> <td style="text-align:left">系统托盘</td> </tr> <tr> <td style="text-align:left">Tree</td> <td style="text-align:left">树</td> <td style="text-align:left">树</td> </tr> <tr> <td style="text-align:left">Tuple</td> <td style="text-align:left">元组</td> <td style="text-align:left">元组</td> </tr> <tr> <td style="text-align:left">Tutorial</td> <td style="text-align:left">教学</td> <td style="text-align:left">教程</td> </tr> <tr> <td style="text-align:left">Type</td> <td style="text-align:left">型别,型态</td> <td style="text-align:left">类型</td> </tr> <tr> <td style="text-align:left">Universal</td> <td style="text-align:left">通用的</td> <td style="text-align:left">通用的</td> </tr> <tr> <td style="text-align:left">Variable</td> <td style="text-align:left">变数</td> <td style="text-align:left">变量</td> </tr> <tr> <td style="text-align:left">Video</td> <td style="text-align:left">影片;视讯</td> <td style="text-align:left">视频</td> </tr> <tr> <td style="text-align:left">View</td> <td style="text-align:left">检视;显示;视图</td> <td style="text-align:left">查看;显示;视图</td> </tr> <tr> <td style="text-align:left">Voice</td> <td style="text-align:left">语音</td> <td style="text-align:left">语音</td> </tr> <tr> <td style="text-align:left">Volume</td> <td style="text-align:left">磁盘区 (win);卷宗 (mac)</td> <td style="text-align:left">卷 (win);宗卷 (mac)</td> </tr> <tr> <td style="text-align:left">Window</td> <td style="text-align:left">视窗</td> <td style="text-align:left">窗口</td> </tr> <tr> <td style="text-align:left">Widget</td> <td style="text-align:left">视窗元件;小工具</td> <td style="text-align:left">窗口部件;小部件</td> </tr> <tr> <td style="text-align:left">Wildcard</td> <td style="text-align:left">万用字元</td> <td style="text-align:left">通配符</td> </tr> <tr> <td style="text-align:left">Workspaces</td> <td style="text-align:left">工作区;工作空间</td> <td style="text-align:left">工作区</td> </tr> <tr> <td style="text-align:left">Write</td> <td style="text-align:left">写入</td> <td style="text-align:left">写</td> </tr> </tbody> </table>

2025/6/11
阅读更多

被博通收购后免费的 VMware Workstation Pro 下载方法

<img src="https://localfreedom.pages.dev/img/vmware-logo-grey.svg" alt="Featured image of post 被博通收购后免费的 VMware Workstation Pro 下载方法" /><p>VMware是著名的个人桌面虚拟机软件,有友好的用户界面,强大的虚拟显卡能力。 尤其是用虚拟机运行3D游戏,几乎是便捷可行的唯一选择。</p> <p>市面上一直流传着VMware产品的激活码,PC用这些激活码直接可以离线永久激活。 被收购后,博通索性直接将针对PC的虚拟机产品 VMware Workstation Pro / VMware Fusion Pro 针对个人免费,直接去掉了注册激活步骤。 然而,之前流传的下载直连链接不可用了,博通网站不仅强制登陆,而且下载位置特别难找,本文就介绍免费时代的VMware桌面虚拟机产品。</p> <h2 id="官方站点">官方站点 </h2><p>VMware的<a class="link" href="https://www.vmware.com" target="_blank" rel="noopener" >官方首页</a>想点出来VMwareFusion或VMwareWorkstation的产品页面着实不容易。 还是直接用搜索引擎搜索 VMware+Fusion 或 VMware+Workstation 直接来到<a class="link" href="https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion" target="_blank" rel="noopener" >产品页面</a>。 点击醒目的 <code>DOWNLOAD FUSION OR WORKSTATION</code> 就会跳转到博通的<a class="link" href="https://access.broadcom.com" target="_blank" rel="noopener" >登陆页面</a> 如果没有博通账号需要注册,右上角的<code>LOGIN</code>按钮右边箭头可以下拉菜单,点击看似不能点的灰色<code>REGISTER</code>按钮即可进入注册流程。这配色设计简直&hellip;</p> <p><img src="https://localfreedom.pages.dev/img/vmware-reg.png" loading="lazy" ></p> <h2 id="注册账号">注册账号 </h2><ol> <li>填写邮箱,可以考虑用临时邮箱以保护个人隐私。</li> <li>填写邮箱收到的验证码</li> <li>填写基本信息,包括姓名、国家、职业、密码,建议选择美国;创建账户后菜单会变长问一些附加服务,选择<code>I'll do it later</code>即可。 <img src="https://localfreedom.pages.dev/img/vmware-reg-info.png" loading="lazy" ></li> <li>用刚才填写的邮箱和密码登陆。</li> </ol> <h2 id="定位下载">定位下载 </h2><ol> <li>在右上角登陆用户名旁边的按钮下拉菜单选择 <code>VMware Cloud Foundation</code> <img src="https://localfreedom.pages.dev/img/vmware-select.png" loading="lazy" ></li> <li>在左侧选择 <code>All Products</code></li> <li>在右侧产品列表上方的搜索框搜索相关产品,在搜索框中输入 &lsquo;Fusion&rsquo; 搜索 MacOS 版本,输入 &lsquo;Workstation&rsquo; 搜索 Windows 或 Linux 版本。</li> <li>Fusion系列就是<code>VMware Fusion</code></li> <li>Workstation系列选择<code>VMware Workstation Pro</code>功能最全,点击右侧<code>Product Detail</code>。</li> <li>在详情页,在Release列选择想下载的版本点击即可进入下载页面</li> <li>终于进入下载页面,下载按钮是灰色的,点击栏目左上方勾选<code>I agree to theTerms and Conditions</code>即可点击并开始下载。 <img src="https://localfreedom.pages.dev/img/vmware-dl.png" loading="lazy" ></li> </ol> <h3 id="免费产品下载页面">免费产品下载页面 </h3><p>博通可能会直接提示免费产品的下载连接,还可以看看其他免费产品。 <a class="link" href="https://support.broadcom.com/group/ecx/free-downloads" target="_blank" rel="noopener" >https://support.broadcom.com/group/ecx/free-downloads</a></p> <h3 id="1763版本下载页面链接">17.6.3版本下载页面链接 </h3><ul> <li>Linux: <a class="link" href="https://support.broadcom.com/group/ecx/productfiles?subFamily=VMware%20Workstation%20Pro&amp;displayGroup=VMware%20Workstation%20Pro%2017.0%20for%20Linux&amp;release=17.6.3&amp;os=&amp;servicePk=&amp;language=EN&amp;freeDownloads=true" target="_blank" rel="noopener" >https://support.broadcom.com/group/ecx/productfiles?subFamily=VMware%20Workstation%20Pro&displayGroup=VMware%20Workstation%20Pro%2017.0%20for%20Linux&release=17.6.3&os=&servicePk=&language=EN&freeDownloads=true</a></li> <li>Windows: <a class="link" href="https://support.broadcom.com/group/ecx/productfiles?subFamily=VMware%20Workstation%20Pro&amp;displayGroup=VMware%20Workstation%20Pro%2017.0%20for%20Windows&amp;release=17.6.3&amp;os=&amp;servicePk=&amp;language=EN&amp;freeDownloads=true" target="_blank" rel="noopener" >https://support.broadcom.com/group/ecx/productfiles?subFamily=VMware%20Workstation%20Pro&displayGroup=VMware%20Workstation%20Pro%2017.0%20for%20Windows&release=17.6.3&os=&servicePk=&language=EN&freeDownloads=true</a></li> </ul> <h2 id="安装激活">安装激活 </h2><p>VMware是非常用户友好的商业产品,安装类似其他软件:</p> <ul> <li>MacOS上拖拽</li> <li>Windows双击后根据提示下一步即可</li> <li>Linux用sudo运行后根据提示进行即可,如果有桌面和Windows一样,如果用字符界面,你还能看不懂提示?</li> </ul> <h2 id="附校验信息">附:校验信息** </h2><ul> <li> <p>VMware Workstation Pro for Linux</p> <ul> <li> <p>16.2.5</p> <ul> <li>Name: VMware-Workstation-Full-16.2.5-20904516.x86_64.bundle</li> <li>Release Date: 2022-12-13</li> <li>Build Number: 20904516</li> <li>MD5SUM: 0a69f5cff1f7c36d2d80f6393230effa</li> <li>SHA1SUM: b010b67e1bf79bd63bad4d2e2047bc89a51266fa</li> <li>SHA256SUM: 3ee36946b15e3093fd032115f5b6e5dabf4081f54756d5e795b4534473ea53e7</li> </ul> </li> <li> <p>17.6.3</p> <ul> <li>File Name: VMware-Workstation-Full-17.6.3-24583834.x86_64.bundle(335.21 MB)</li> <li>Build Number: 24583834</li> <li>Release Date: Mar 04, 2025</li> <li>Last Updated: Feb 27, 2025</li> <li>SHA2: 79575917728ded4c6d0b89f4ab6a81be9a773c00eeb68d1d12ac0db125478ee0</li> <li>MD5: 01559c427a4b47547e67026320c77738</li> </ul> </li> </ul> </li> <li> <p>VMware Workstation Pro for Windows</p> <ul> <li> <p>16.2.5</p> <ul> <li>Name: VMware-workstation-full-16.2.5-20904516.exe</li> <li>Release Date: 2022-12-13</li> <li>Build Number: 20904516</li> <li>MD5SUM: b72276af0d1f093c146c6623c463218f</li> <li>SHA1SUM: 01ddbeb179444bb6bf9ee41e070de362c6134ce9</li> <li>SHA256SUM: 380b0fa8a0f37ade496573cdc2ad922d3985bc83664f94431a9e513444b6c377</li> </ul> </li> <li> <p>17.6.3</p> <ul> <li>File Name: VMware-workstation-full-17.6.3-24583834.exe(401.43 MB)</li> <li>Build Number: 24583834</li> <li>Release Date: Mar 04, 2025</li> <li>Last Updated: Feb 24, 2025</li> <li>SHA2: d7c04b4dd1e6bf551693897d4805e99c45198a830c6361d9af8267b40906857b</li> <li>MD5: de592b18a39513e3414f197ec1a4cb1c</li> </ul> </li> </ul> </li> </ul>

2025/5/10
阅读更多

操作系统选型

<img src="https://localfreedom.pages.dev/img/OS-example.jpeg" alt="Featured image of post 操作系统选型" /><h2 id="背景">背景 </h2><p>从信息时代来到人工智能时代,掌握自己的信息系统越来越重要。 将自己的数据握在自己手中,摆脱大公司的监视干预是本站的价值观。 操作系统可以说是个人信息系统的重要基础,尤其是微软的Windows越来越绑定网络,将用户束缚在微软的服务中,探寻一下非大公司控制,可自己掌握支配的操作系统愈加必要。 今天咱就来聊聊操作系统选型,希望帮大伙找到适合自己的能够把握的操作系统。</p> <h2 id="概览">概览 </h2><p>Windows应该是存在感最强的操作系统,伴随着PC的普及走进千家万户。 随着移动互联网发展Android和iOS也走进千家万户。 除了这些大公司运营的操作系统生态,其实还有Linux、BSD等系列操作系统,它们通常开源,将一切权力交给用户,有些用户体验已经打磨的不输商业操作系统,尤其是在服务器领域Linux更是占据霸主地位。 本文讨论的重点就是Linux操作系统。</p> <h3 id="各个系列的操作系统">各个系列的操作系统 </h3><ul> <li>Windows <ul> <li>微软公司开发的商业软件,简单易用普及。</li> <li>Windows 98/XP/7/10/11 等面向PC的操作系统,包括家庭版、商业版等。</li> <li>Windows Server 2008/2016/2019/2022 等面向服务器的操作系统。</li> </ul> </li> <li>Linux <ul> <li>源自芬兰大学生Linus,在GPL许可证约束下开放源代码。</li> <li>debian/arch/gentoo/alpine 等依靠开源社区自发演进的。</li> <li>RedHat/SUSE 等依靠商业公司运营服务。</li> </ul> </li> <li>BSD <ul> <li>老Unix操作系统的社区维护版本,源自Berkeley校区。</li> <li>OpenBSD/FreeBSD 等。</li> </ul> </li> <li>MacOS <ul> <li>苹果公司运营的商业操作系统,大公司包办一切。</li> <li>只有主线版本。</li> </ul> </li> <li>Android <ul> <li>Google采用Linux内核为移动设备开发的操作系统,在GPL约束下开源。</li> <li>各手机厂商基于开源部分定制自己的专属系统。</li> <li>LineageOS/eOS 等社区开发的操作系统。</li> </ul> </li> <li>iOS <ul> <li>苹果公司移动设备的操作系统,极度封闭。</li> <li>欧盟正在撼动其封闭生态。</li> </ul> </li> <li>Other <ul> <li>操作系统其实并不复杂,好好学习也可以写出自己的操作系统。</li> <li>ChromeOS/FirefoxOS 就是厂商新推出的小众操作系统。</li> </ul> </li> </ul> <h2 id="如何选择属于自己的操作系统">如何选择属于自己的操作系统 </h2><p>属于自己的操作系统最重要的是自己想用就可以用,最好想怎么用就怎么用。 过于依赖网络的操作系统,比如ChromeOS/iOS当然就要排除在外了。 即使大公司不作恶,也有可能停止服务。</p> <p>属于自己的操作系统应当能够在硬件上自行安装,最好安装好就附带常用功能。 不得不说这方面Windows还是不错的,就像他们广告中说的,买了Windows同时拥有了计算器、日历、文本编辑器等等一系列软件功能。</p> <p>PC和移动设备面对的情况大相径庭,即使都是Linux也是差异很大的分支。 针对不同类型的设备还是要用不同的标准来选型。 尤其是硬件驱动,在移动设备上比较难搞,而PC上Windows驱动必然都有,Linux通常也不缺什么。 本文主要针对PC设备,其他设备有空再详细介绍。</p> <p>PC的操作系统也通常称为桌面端的操作系统,主要有Windows/Linux/BSD/MacOS四类。 BSD太过于小众,就暂不多介绍了。 MacOS几乎没得选,捆绑苹果设备,也没有分支。 接下来先简单回顾一下Windows,然后着重介绍Linux系列操作系统选型。</p> <h2 id="windows">Windows </h2><p>Windows操作系统分为面向PC的版本和面向服务器的Server版本。</p> <p>Server版本继承了很多服务器的功能,且有严格的重启和断电管理,但对于个人使用反而缺少很多功能,激活和安装软件也比较麻烦。</p> <p>面向PC的版本分为家庭版、专业版、旗舰版、企业版、工作站版等,根据地域还有区分,比如中文定制版或欧盟的版本。 这些版本随着价格增加功能也越多,通常功能上: 家庭版&lt;专业版&lt;旗舰版~=企业版~=工作站版本。 欧盟的版本由于反垄断通常去掉了媒体播放器等一些自带软件。 中文定制版就不用理会了,没人会主动选择它的。</p> <p>值得一提的是自Win10开始出现的LTSC——长期支持版。 这算是官方精简版,去掉了应用商店和各种奇奇怪怪的应用,原始风味的Windows体验,基础功能等同于企业版。 在Win7时代也有类似的Thin版本。</p> <p>这里推荐<a class="link" href="https://msdn.itellyou.cn" target="_blank" rel="noopener" >MSDN,Itellyou</a>,一个提供Windows官方镜像P2P链接的网站。</p> <h2 id="linux">Linux </h2><h3 id="内核发行版">内核+发行版 </h3><p>所谓的“内核”,通俗地说就是操作系统最核心最关键的部件。 它负责一些最基本的工作,比如: 管理硬件驱动、管理内存、管理文件系统、管理进程等等。 这些东西只要少了任何一样,整个操作系统就不能正常运转。</p> <p>Linux系列操作系统的内核一直是由 Linus 领导开发,采用GPLv2开源协议,任何人都可以随意获取、免费获取、参与开发。 同时所有基于Linux内核开发的操作系统也必须开源,允许大伙获得源代码。 Windows也有其NT内核,但Windows通常整体打包发布,所以其内核没有存在感。</p> <p>操作系统在除了内核,通常还应当提供命令行、图形界面、运行库等。 由于Linux内核高质量且开放,有很多爱好者和商业公司基于Linux内核整合配套软件打包发布形成发行版。 选择Linux操作系统就是选择一个适合自己的发行版。</p> <h3 id="发行版的选择">发行版的选择 </h3><p>首先推荐网站 <code>https://distrowatch.com</code>。 这是知名的操作系统排名网站,收录并列出各个操作系统的新闻,根据访客点击不同操作系统(发行版)的次数给出一个排名。 这个网站主要收录Unix/Linux及其衍生品,并不包含Windows和MacOS。</p> <p>DistroWatch的<a class="link" href="https://distrowatch.com/search.php" target="_blank" rel="noopener" >搜索页面</a>提供了很多选项用于筛选发行版,可以作为我们选择发行版时的首要参考。</p> <ul> <li>OS Type <ul> <li>操作系统的派系,这里当然选Linux。</li> </ul> </li> <li>Distribution category <ul> <li>发行版类型或者说面向的需求,比如新手(Beginners)、桌面(Desktop)、瘦客户端(Thin Client)、游戏(Gaming)、移动设备(Mobile)等。</li> <li>个人认为这个分类不够完善,很可能漏掉或冗余。</li> </ul> </li> <li>Country of origin <ul> <li>源自哪个国家,开源社区无国界开发者有国籍:)</li> </ul> </li> <li>Based on <ul> <li>基于哪个发行版,发行版的衍生类似树状,如果偏爱哪个基础发行版,可以通过这个选项看看他的变种。</li> </ul> </li> <li>Not based on <ul> <li>不基于哪个发行版,同上,排除你从根上就不喜欢的发行版。</li> </ul> </li> <li><strong>Desktop interface</strong> <ul> <li>桌面,或者说图形介面更完整。</li> <li>Linux的多样化也体现在桌面环境,可以搭配完全不同的桌面,这可不是换换壁纸或者主题,类似从Windows桌面和MacOS桌面的那种区别。</li> <li>其中的选项也不都是严格意义上的桌面,有些则是窗口管理器(可以简单的理解为没有任务栏的桌面)等桌面组件;因为Linux的自由,桌面不必都是完整的,可以自由搭配窗口管理器、登陆管理器、合成渲染、菜单栏、任务栏等。</li> <li>这里列举三种主流桌面方案: <ul> <li>KDE 模仿Windows,提供完善的图形化设置,附带很多高质量配套软件。</li> <li>GNOME 越来越像MacOS,模仿Linux的发展方式,专注桌面核心组件,默认精简。</li> <li>Xfce 相对轻量级的桌面环境,有点像WinXP的风格,低资源占用。</li> </ul> </li> <li>主流发行版通常都提供这三种桌面可选,如果从Windows迁移过来,推荐从KDE入手,复刻Windows的体验,默认配置通常也最完善好用。</li> </ul> </li> <li>Architecture <ul> <li>架构,通常都是 <code>x86_64</code>。</li> </ul> </li> <li><strong>Package management</strong> <ul> <li>包管理方式,发行版的软件包基于哪种模式管理,也算是选择发行版的派系。</li> <li>DEB由Debian发行版社区创建,也被Ubuntu等发行版继承,历史悠久,社区文化,配置文件可读友好。</li> <li>RPM有红帽公司开发用于其RHEL发行版,Fedora/SUSE等也采用,配置方式大量采用二进制文件。</li> <li>Pacman是Arch发行版的包管理方式,衍生至Manjaro等发行版,结构相对扁平简洁。</li> </ul> </li> <li><strong>Release model</strong> <ul> <li>发行模式,是定期发布版本还是滚动更新,有没有长期支持LTS本</li> <li>滚动更新提供最新版本的软件,但也意味着频繁的更新和更多的漏洞。</li> <li>推荐有 <strong>LTS</strong> 支持的定期发布版本的发行版,LTS会在新的版本发布后仍然对老版本提供几年的安全补丁,运行也会更稳定。</li> <li>就像Windows,面向企业的Linux发行版RHEL/SUSE等都是LTS模式。</li> </ul> </li> <li>Install media size <ul> <li>安装介质大小,通常都比Windows安装盘小,这个选项本身没什么意义。</li> </ul> </li> <li><strong>Install method</strong> <ul> <li>安装方式,分为Local(本地安装),Net-Install(网络安装),OEM(出厂自带)。</li> <li>当然选择本地安装喽,也可以看看OEM有哪些硬件厂家提供。</li> <li>本地安装介质通常分为两种Installer和Live。 <ul> <li>Installer安装镜像通常4GB,有一定的定制空间和额外软件包,就像Windows的安装盘。</li> <li>Live安装镜像通常能提供不错的开箱即用的体验,是强化的PE系统。</li> <li>Web安装镜像通常最小但如果没有网络可能无法完成最小化安装。</li> </ul> </li> </ul> </li> <li>Multi-language support <ul> <li>多语言支持,主流发行版都支持中文,如果不支持中文可以pass掉。</li> </ul> </li> <li>Init software <ul> <li>初始化软件,这个选项是给资深有追求的用户准备的,暂且不管。</li> <li>当前红帽公司主导的Systemd是最主流的选择。</li> </ul> </li> <li>Status <ul> <li>状态,当然要是活跃Active的发行版。</li> </ul> </li> </ul> <h3 id="推荐部分发行版">推荐部分发行版 </h3><ul> <li>Debian <ul> <li>DEB包管理框架,大约每2年发布一个版本并提供5年的LTS支持,本地安装以Installer为主,最近也开始提供Live镜像,默认GNOME桌面,在Installer镜像中同时包含选择KDE和Xfce所需文件。</li> <li>完全社区开发的发行版,自由分为浓厚,其软件源也着重区分包是否开源,到12版才官方集成非开源的驱动程序。</li> <li>Debian是通用操作系统,能稳定的运行于服务器上,对PC也有友好的界面。</li> <li>软件源相对保守,版本发布后只提供安全补丁,不引入新功能,安全稳定的同时可能略显陈旧,debian虽然有backports通道提供新版本软件包,但默认是不启用的,当然也可以自己用deb包安装软件或者添加第三方软件源。</li> <li>在Linux内核选择上,使用版本发布当年的LTS内核并随内核社区一起提供长期支持。</li> </ul> </li> <li>Linux Mint <ul> <li>DEB包管理框架,基于Debian/Ubuntu,随UbuntuLTS版本每两年发布,提供Live镜像,暂无Installer镜像,默认Cinnamon桌面从GNOME分支而来保留GNOME2风格。</li> <li>社区为了摆脱Ubuntu背后商业公司的影响而分支的发行版,有着Ubuntu的友好,更加自由,曾登顶DistroWatch榜首;Ubuntu强推snap商店并把软件源中的包搬到商店的行为让我们选择LinuxMint。</li> <li>在Ubuntu软件源基础上,将移动到snap商店的软件包恢复到deb源,还提供额外的驱动管理等用户友好组件。</li> <li>LTS支持跟随Ubuntu,与Debian略有不同,会提供软件包的小版本更新,用于PC可以尝试较新的版本,内核版本与Ubuntu同步并不一定是LTS内核而是有Ubuntu提供内核的长期支持。</li> </ul> </li> <li>OpenSUSE <ul> <li>RPM包管理框架,来自德国,随企业版SUSE发布,提供滚动更新的Tumbleweed版和定期更新的Leap版,本地安装以Installer为主,同时也提供Live镜像,默认KDE桌面,Installer中多种桌面可选,提供非常全面的开箱即用体验。</li> <li>非常稳定精良的设计,尤其是其Yast可比Windows的控制面板,几乎可以平替Windows。</li> <li>提供很多图形化的服务器管理功能,用于PC可能显得过于完善。</li> </ul> </li> <li>Manjaro <ul> <li>Pacman包管理框架,基于Arch滚动更新,相对保守一些进行更多测试放慢节奏,提供Live镜像,默认KDE桌面,开箱即用。</li> <li>官方号称给Arch的软件包增加额外的测试和缓冲器,只同步安全补丁。</li> <li>在Arch基础上对商业软件更加友好,软件源中有discord等热门商业软件。</li> </ul> </li> </ul> <h2 id="实现局域自由的关键路径">实现局域自由的关键路径 </h2><p>操作系统是自由使用计算机设备的基础,也算是实现局域自由的关键一环。 Linux以其开源自由的特点,广泛活跃的社区,可以作为操作系统的首选,尤其是提供LTS支持的发行版作为主力系统真是非常靠谱。 Windows虽然是封闭商业软件,但本地自由使用难度并不大,考虑其广泛的生态,尤其是游戏娱乐,值得收录镜像以备用。</p> <p>未来有空再细谈Linux镜像源和Windows激活的话题。</p>

2025/4/20
阅读更多

Win10/11 不联网强制开启移动热点

<h2 id="背景">背景 </h2><p>话说,现在个人电脑开启移动热点,大家通常是为了分享网路,但更重要的,其实是打造一个属于自己的无线局域网啊!Windows 提供的热点功能,一直以来都只能用来分享网路,没法直接用在局域网里。以前还能在连接 WiFi 或有线网络的时候开启热点并保持,但现在微软越来越严格,一旦上行连接断掉,移动热点就自动关掉,真是让人头大!</p> <p>Windows 电脑通常不当做局域网服务提供者,但现在 AI 这么火,像 LM Studio 这样的软件可以提供局域网服务,仅仅开启移动热点就能满足需求,这需求量可真大啊!</p> <h2 id="方法-1利用底层命令挑战微软的限制">方法 1:利用底层命令,挑战微软的限制 </h2><p>这个方法就是利用无线网卡驱动提供的功能,通过命令行开启热点。不过,随着无线网卡更新,尤其是 Intel 网卡配合微软,这个功能经常被阉割掉。如果降级驱动还是不行,那就只能试试方法二了。</p> <ol> <li>以管理员权限启动终端(也就是CMD或PowerShell)</li> <li>确认系统支持本地热点功能 <ul> <li>输入 <code>netsh wlan show drivers</code></li> <li>如果输出中 <code>Hosted network supported(支持的承载网路)</code> 的值为 <code>Yes</code>,就说明可以继续使用这个方法。如果为 <code>No</code>,那很遗憾,只能换方法了。</li> </ul> </li> <li>配置热点信息 <ul> <li><code>netsh wlan set hostednetwork mode=allow ssid=%名称% key=%密码% keyUsage=persistent</code></li> <li>如 <code>netsh wlan set hostednetwork mode=allow ssid=HotPoint key=Strongest keyUsage=persistent</code></li> <li><strong>注意:密码至少要8位哦!</strong> (别想着用 123456 这种弱密码,会被干掉的!)</li> </ul> </li> <li>启动热点 <ul> <li><code>netsh wlan start hostednetwork</code></li> <li>启动成功后,就可以用手机等终端设备连接局域网啦!</li> <li>主机IP通常默认为 <code>192.168.137.1</code>, 可以用 <code>ipconfig</code> 命令查看。</li> </ul> </li> <li>关闭热点 <ul> <li><code>netsh wlan stop hostednetwork</code></li> </ul> </li> </ol> <blockquote> <p><a class="link" href="https://superuser.com/questions/1195436/use-windows-10-wifi-hotspot-with-no-internet-connection" target="_blank" rel="noopener" >Use Windows 10 wifi hotspot with no internet connection</a></p> </blockquote> <h2 id="方法-2用虚拟设备欺骗系统开启离线热点">方法 2:用虚拟设备“欺骗”系统,开启离线热点 </h2><p>Windows 检测是否有活动的 WiFi 或有线连接,才能开启移动热点。我们可以用虚拟设备来“欺骗”它,让它以为是有网络连接。常规的虚拟机网卡是无法通过检测的,这里我们用一个老旧的虚拟测试设备。</p> <ul> <li>添加虚拟测试设备 <ul> <li>打开设备管理器</li> <li>操作-&gt;添加过时硬件(如果菜单中只有<code>帮助</code>点击一下任一设备或类别就会刷新)</li> <li>安装我手动从列表选择的硬件-&gt;显示所有的硬件</li> <li>左侧厂商选择 <code>Microsoft</code> 右侧设备选择 <code>Microsoft KM-TEST 回环适配器</code></li> </ul> </li> <li>重命名虚拟测试设备 <ul> <li>控制面板-&gt;网络和Internet-&gt;网络和共享中心-&gt;更改适配器设置(左侧)</li> <li>将KM-TEST设备重命名为<code>Loopback</code>(如果右键重命名无效那么选中按F2键入新名称)</li> </ul> </li> <li>重启电脑或其他方式传播网路名称。</li> <li>开启热点 <ul> <li>在cmd执行以下命令,或者直接用PowerShell执行引号中的部分。 <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">powershell -ExecutionPolicy -ByPass &#34;$profile = [Windows.Networking.Connectivity.NetworkInformation,Windows.Networking.Connectivity,ContentType=WindowsRuntime]::GetConnectionProfiles() | where {$_.profilename -eq &#39;loopback&#39;}; $tether = [Windows.Networking.NetworkOperators.NetworkOperatorTetheringManager,Windows.Networking.NetworkOperators,ContentType=WindowsRuntime]::createFromConnectionProfile($profile); $tether.StartTetheringAsync()&#34; </span></span></code></pre></td></tr></table> </div> </div><ul> <li>WLAN也会同时开启。</li> </ul> </li> </ul> </li> <li>保持热点 <ul> <li>设备管理器-&gt;网络适配器-&gt;你的无线网卡(不是MK-TEST而是实际物理网卡) 【右键属性】</li> <li>电源管理-&gt;允许计算机关闭此设备以节约电源 【解除勾选】</li> </ul> </li> <li>关闭热点 <ul> <li>直接用任务栏上的操作按钮即可。</li> <li>关闭热点是虚开的WLAN也会关闭。</li> </ul> </li> </ul> <blockquote> <p><a class="link" href="https://answers.microsoft.com/zh-hans/windows/forum/all/win11%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E6%97%A0/9f4f8052-1009-4c1f-9229-3b8a741070e2" target="_blank" rel="noopener" >win11如何才能无网络开启移动热点</a></p> </blockquote> <h2 id="吐槽一下-windows-的离线工作体验">吐槽一下 Windows 的离线工作体验 </h2><p>说实话,现在 Windows 对离线工作的支持越来越差了。每次想在没有网络的情况下用电脑,都要跟它死磕一下。这让我对 Linux 的兴趣越来越浓厚了。看来,是时候考虑换系统了,体验一下真正的自由了!</p> <p>尤其是Win11即将进一步限制不联网安装,Windows 越来越云化,越来越限制用户,真的让人很无奈啊!</p>

2025/4/10
阅读更多

LM Studio

<img src="https://localfreedom.pages.dev/img/lmstudio-app-logo.webp" alt="Featured image of post LM Studio" /><h2 id="简介">简介 </h2><p>LM Studio 是一个桌面应用程序,它允许你轻松下载、管理和运行各种GGUF格式的开源 LLM,无需连接互联网。 它提供了一个非常友好的配置界面,让你能够探索huggingface,快速体验不同模型的特性,并根据自己的需求进行调整。 在对各类新型模型的支持中,LM Studio 总是非常迅速完美的。 不过 LM Studio 是一个免费的<strong>专有软件</strong>,并不开放源代码。</p> <h2 id="安装">安装 </h2><p>官网的<a class="link" href="https://lmstudio.ai/download" target="_blank" rel="noopener" >下载页面</a>提供Windows、Linux和MacOS的下载,除了x86还支持arm64架构的CPU。 安装包是离线的,包含需要的各类运行库,安装过程完全无需联网。 第一次运行的时候会提示选项级别,默认的 <code>Power User</code> 即可。</p> <h2 id="准备模型">准备模型 </h2><p>LM Studio 支持从<a class="link" href="https://huggingface.co" target="_blank" rel="noopener" >huggingface.co</a>搜索并直接下载运行GGUF格式的 LLM,即量化压缩后的LLM。 但本文的重点是<strong>完全离线运行</strong>,当然应避免联网功能。</p> <p>一个理所当然的方法是下载GGUF模型文件放置在 LM Studio 的模型文件夹 <code>~\.lmstudio\models\</code> 中,不过这样并不能直接被软件识别。 LM Studio 的解析方式是按照 Hugging Face 模型仓库的 URI 格式来识别模型文件,所以只要按照 <code>~\.lmstudio\models\作者\模型名\参数文件.gguf</code> 的方式导入 LLM 文件即可。</p> <p>作者和模型名可以自己命名,也可以就按照默认方式来,如从 <code>https://huggingface.co/bartowski/mistralai_Mistral-Small-3.1-24B-Instruct-2503-GGUF/blob/main/mistralai_Mistral-Small-3.1-24B-Instruct-2503-Q4_K_M.gguf</code> 下载的文件放在 <code>~\.lmstudio\models\bartowski\mistralai_Mistral-Small-3.1-24B-Instruct-2503-GGUF\mistralai_Mistral-Small-3.1-24B-Instruct-2503-Q4_K_M.gguf</code></p> <p>将模型文件放置完成后,打开 LM Studio 点击左侧文件夹图表的 <code>Models</code> 标签页即可看到下载的文件。 列表中还会列出模型的各项参数和功能。</p> <p><img src="https://localfreedom.pages.dev/img/lm-studio.webp" loading="lazy" alt="chat ui" ></p> <h2 id="对话">对话 </h2><p>在打开的初始界面,上方选择模型文件加载,可以配置一些参数,通常默认的就足够好了。 等待加载完成就可以在下方与 LLM 对话了。 目前支持上传图片和附件,只要LLM支持相关功能就可以使用。</p> <h2 id="提供服务">提供服务 </h2><p>LM Studio 可以提供兼容 OpenAI v1 的API服务,可以作为局域网中便捷的LLM基础服务,与各种客户端应用程序配合使用。 点击左侧第二个按钮,进入开发者界面即可开启OpenAI兼容API服务。 默认其监听0.0.0.0的1234端口,图形界面提供复制的IP地址可能不合适。</p>

2025/3/27
阅读更多

Office Deployment Tool

<h2 id="背景">背景 </h2><p>MS Office 是日常工作和生活的重要工具,离线部署激活当然必不可少。 微软越来越在线化Office业务,甚至从2016版本后不再提供官方ISO了。 为了实现局域的自由,当然不可随便整点盗版安装包来部署Office,本篇就介绍用官方的方式离线部署MS Office。 Office Deployment Tool 是微软官方推出的Office套件部署工具。 微软从Office2016后期开始推出C2R模式,不再维护离线文件替换式补丁,同时向企业系统管理员推广ODT工具用来部署Office。</p> <h2 id="用法">用法 </h2><h3 id="获取odt">获取ODT </h3><p><a class="link" href="https://www.microsoft.com/en-in/download/details.aspx?id=49117" target="_blank" rel="noopener" >官网下载页面</a> 下载的是一个exe可执行档,记得用管理员权限执行,会解压出 setup.exe 和样例配置文件。</p> <h3 id="准备配置文件">准备配置文件 </h3><p>可以根据样例配置来修改自己的配置文件。 推荐在官方提供的配置创建页面 <code>https://config.office.com</code> 用视觉化的方式选择你需要的软体和语言。</p> <p>由于配置中不是包含各组件,而是排除各组件,所以生成配置的时候关闭所有组件可以获得最好的模板效果。 这里以 Office LTSC 2021 为例。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span><span class="lnt">14 </span><span class="lnt">15 </span><span class="lnt">16 </span><span class="lnt">17 </span><span class="lnt">18 </span><span class="lnt">19 </span><span class="lnt">20 </span><span class="lnt">21 </span><span class="lnt">22 </span><span class="lnt">23 </span><span class="lnt">24 </span><span class="lnt">25 </span><span class="lnt">26 </span><span class="lnt">27 </span><span class="lnt">28 </span><span class="lnt">29 </span><span class="lnt">30 </span><span class="lnt">31 </span><span class="lnt">32 </span><span class="lnt">33 </span><span class="lnt">34 </span><span class="lnt">35 </span><span class="lnt">36 </span><span class="lnt">37 </span><span class="lnt">38 </span><span class="lnt">39 </span><span class="lnt">40 </span><span class="lnt">41 </span><span class="lnt">42 </span><span class="lnt">43 </span><span class="lnt">44 </span><span class="lnt">45 </span><span class="lnt">46 </span><span class="lnt">47 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-xml" data-lang="xml"><span class="line"><span class="cl"><span class="nt">&lt;Configuration&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Add</span> <span class="na">OfficeClientEdition=</span><span class="s">&#34;64&#34;</span> <span class="na">Channel=</span><span class="s">&#34;PerpetualVL2021&#34;</span> <span class="na">Version=</span><span class="s">&#34;16.0.14332.20812&#34;</span><span class="nt">&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Product</span> <span class="na">ID=</span><span class="s">&#34;ProPlus2021Volume&#34;</span> <span class="na">PIDKEY=</span><span class="s">&#34;FXYTK-NJJ8C-GB6DW-3DYQT-6F7TH&#34;</span><span class="nt">&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Language</span> <span class="na">ID=</span><span class="s">&#34;zh-cn&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Access&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Excel&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Lync&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;OneDrive&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;OneNote&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Outlook&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;PowerPoint&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Publisher&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Word&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;/Product&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Product</span> <span class="na">ID=</span><span class="s">&#34;VisioPro2021Volume&#34;</span> <span class="na">PIDKEY=</span><span class="s">&#34;KNH8D-FGHT4-T8RK3-CTDYJ-K2HT4&#34;</span><span class="nt">&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Language</span> <span class="na">ID=</span><span class="s">&#34;zh-cn&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Access&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Excel&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Lync&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;OneDrive&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;OneNote&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Outlook&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;PowerPoint&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Publisher&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Word&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;/Product&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Product</span> <span class="na">ID=</span><span class="s">&#34;ProjectPro2021Volume&#34;</span> <span class="na">PIDKEY=</span><span class="s">&#34;FTNWT-C6WBT-8HMGF-K9PRX-QV9H8&#34;</span><span class="nt">&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Language</span> <span class="na">ID=</span><span class="s">&#34;zh-cn&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Access&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Excel&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Lync&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;OneDrive&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;OneNote&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Outlook&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;PowerPoint&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Publisher&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;ExcludeApp</span> <span class="na">ID=</span><span class="s">&#34;Word&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;/Product&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;/Add&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Property</span> <span class="na">Name=</span><span class="s">&#34;SharedComputerLicensing&#34;</span> <span class="na">Value=</span><span class="s">&#34;0&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Property</span> <span class="na">Name=</span><span class="s">&#34;FORCEAPPSHUTDOWN&#34;</span> <span class="na">Value=</span><span class="s">&#34;FALSE&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Property</span> <span class="na">Name=</span><span class="s">&#34;DeviceBasedLicensing&#34;</span> <span class="na">Value=</span><span class="s">&#34;0&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Property</span> <span class="na">Name=</span><span class="s">&#34;SCLCacheOverride&#34;</span> <span class="na">Value=</span><span class="s">&#34;0&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Property</span> <span class="na">Name=</span><span class="s">&#34;AUTOACTIVATE&#34;</span> <span class="na">Value=</span><span class="s">&#34;1&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;Updates</span> <span class="na">Enabled=</span><span class="s">&#34;TRUE&#34;</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"> <span class="nt">&lt;RemoveMSI</span> <span class="nt">/&gt;</span> </span></span><span class="line"><span class="cl"><span class="nt">&lt;/Configuration&gt;</span> </span></span></code></pre></td></tr></table> </div> </div><p>独立的Visio和Project会沿用主体的排除项,其实没有作用。 官方页面生成的配置文件开头有个ID,建议去掉以免追踪。</p> <h3 id="获取office">获取Office </h3><p>新建一个用于存放office的资料夹并进入。 将XML配置文件(如<code>config.xml</code>)和ODT的<code>setup.exe</code>放在这个资料夹中。 打开命令提示字元(cmd or PowerShell),进去你的资料夹后,执行<code>setup.exe /download config.xml</code>。 命令提示字元中无提示,打开任务管理器可以看到流量,文件会下载到当前资料夹的<code>Office\Data</code>中,此路径不能重命名。 PowerShell有时候会莫名卡住,所以下载中可以在命令提示字元里按按<code>退格BackSpace</code>等无影响的键。</p> <h3 id="可选制作iso光碟映像档">(可选)制作ISO光碟映像档 </h3><p>你可以用一些脚本程式来自动化安装过程。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-install.bat" data-lang="install.bat"><span class="line"><span class="cl">powershell Start-Process -Verb RunAs -FilePath setup.exe -ArgumentList <span class="s2">&#34;&#34;&#34;/configure config.xml&#34;&#34;&#34;</span> </span></span></code></pre></td></tr></table> </div> </div><p>建议将ODT、下载的Office、安装配置文件和其他需要打包的放在同一个资料夹,然后用UltraISO等工具制作ISO光碟映像档。</p> <h3 id="部署office">部署Office </h3><p>将ODT下载完成时的资料夹整体接入目标系统,主要保持 <code>setup.exe</code>, <code>Office\Data</code>, <code>config.xml</code> 在同一资料夹中。 进入命令提示字元到该资料夹,以管理员权限执行<code>setup.exe /configure config.xml</code>。 会显示安装进度和所包含组件,但这一过程不能中断或配置,只能看着。 等待完成就可以使用所安装的Office了。</p> <h2 id="评测">评测 </h2><p>ODT工具是不断更新的,所以存档时的必要测试,以免收录bug版本。</p> <ul> <li>样例配置文件和前一版是否有变化,增加或减少,内容修改。</li> <li>setup.exe 是否支持了新版本的Office,比如LTSC2024之前的setup.exe无法下载。</li> <li>setup.exe是否仍保留了对Office2021等老版本的支援。</li> <li>setup.exe能否正常完成所需Office的安装。</li> </ul>

2024/12/22
阅读更多

加密货币

<img src="https://localfreedom.pages.dev/img/crypto-example.jpeg" alt="Featured image of post 加密货币" /><h2 id="背景">背景 </h2><p>一提到加密货币与挖矿,很多中国读者有着很深的误解与偏见,这实际上与中国政府及其控制的媒体、自媒体的宣传导向有关。</p> <p>非常感谢<a class="link" href="https://archlinuxstudio.github.io/ArchLinuxTutorial/#/exclusive/mine" target="_blank" rel="noopener" >自由之心社区的科普文章</a></p> <h3 id="定义">定义 </h3><p>加密货币是一种使用密码学原理来确保交易安全及控制交易单位创造的交易介质。这种维基百科式的描述较难懂。我们尝试用更简单的语言进行描述。加密货币的鼻祖是比特币(BTC),其始发与 2009 年。在比特币的创世区块中,嵌入了一句话<code>The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.</code>。这对传统金融行业进行了讽刺,同时表明了创始人中本聪的立场。符合比特币理念的加密货币一般都有如下特点:</p> <ul> <li>去中心化,货币的分布和决策不由中心化的组织,如政府,银行等任何集权形式的组织决定。参与挖矿,就能得到属于自己的一份收益。</li> <li>在正确使用的前提下,一般都能很大程度的保护使用者的个人隐私。</li> <li>货币本身<strong>真正</strong>由其拥有者所持有,真正实现了私有财产不可侵犯。货币的拥有者持有私钥,其他没有私钥的人无法扣押、冻结、没收其加密货币资产。</li> </ul> <h3 id="离线意义">离线意义 </h3><p>金融之于社会,犹如血管之于人体。 金融和货币的最大特点就是流动和在线,经济情况也可以看作金融货币流通速度。 我们的大额金融资产都被掌控在中心化的银行手中,有效率上的好处,但也失去了对财产和储蓄的掌控。 银行可以冻结我们的金融财产,还可以滥发货币稀释大家的储蓄。 以比特币为代表的加密货币,给我们一种新的方式掌控自己的金融资产。 加密货币通常被设计为总量有限或增速有限,也就不会通货膨胀。 加密货币通过公钥和私钥将金融账户的&quot;读写&quot;权限分开,私钥能操作和支付,而公钥能查阅和收款。 只要销毁自己的私钥,任何人或组织都无法再夺走私钥保护的财产。 这也导致如果有钱人销毁私钥或死亡前没传承私钥,那么通货紧缩就难以避免。 这里佩服中本聪的伟大设计,比特币随着开采量增加而开采速度下降,既抑制了快速通胀,又避免了终极通缩。</p> <p>加密货币最大的离线意义在于其基于区块链的分布式账本,用户可以完整的获取整个账本,不仅保存自己的财产,还能离线掌握整个系统的交易历史,离线作做各种有趣的事情。 同样加密货币的离线保存和携带,也因密码学而可靠和便捷。</p> <h3 id="区别于数字货币">区别于&quot;数字货币&quot; </h3><p>有个概念<code>数字货币</code>和加密货币很像,尤其中国人民银行大肆鼓吹所谓&quot;央行数字货币优于比特币等数字货币&quot;。 当然这些概念确实还有争议,但中国的央行数字货币完全就是蹭热度的玩意儿。 数字货币通常局限于采用区块链等密码学技术的银行发行控制的货币,相比于比特币代表的正经加密货币,缺少了区中心化的关键特性,从而损害了用户的掌控能力。 中国的所谓&quot;数字人民币&quot;,博主认为连数字货币也算不上,充气量就是个用电脑记账的电子货币。 尤其是数字人民币背道而驰,设计初衷就是为了奴役社会经济。</p> <h2 id="使用">使用 </h2><h3 id="基本概念">基本概念 </h3><p><strong>密语</strong>即<strong>助记词</strong>,约等于<strong>私钥</strong>,可以互相转化。 密语通过一定方式由私钥编码,一条密语通常由十几个单词组成,可对应多个私钥。</p> <p><strong>公钥</strong>和<strong>私钥</strong>是成对生成的,<strong>地址</strong>是公钥的散列。 地址不能反推出公钥。</p> <p><strong>收款</strong>只需要<strong>地址</strong>,<strong>付款</strong>才需要公开<strong>公钥</strong>,一个钱包只要消费一次公钥就公开</p> <h3 id="存储">存储 </h3><p>如果要使用加密货币,首先要拥有一个钱包来存钱。 钱包是存储私钥的介质,分为热钱包(软件)和冷钱包(硬件)。 各个加密货币的节点软件就是全量热钱包,不仅能生成并记录自己的私钥,还保存账本,能参与挖矿。 为了方便一般使用可以采用只记录私钥,查看账目的软件,比如目前来说使用最广泛的浏览器钱包是<a class="link" href="https://metamask.io/" target="_blank" rel="noopener" >Metamask</a>。 冷钱包是类似USBkey的硬件,通常可以用U盘写入相应工具软件自行制作。</p> <p>私钥本质上是很长很长的随机数,所以钱包使用必然是无需手机号或邮箱注册的。 甚至生成账户也是无需联网的。</p> <h3 id="获取">获取 </h3><p>可以通过购买、交易、挖矿的方式获取加密货币。</p> <p>购买即通过类似<a class="link" href="https://www.binance.com" target="_blank" rel="noopener" >币安</a>这样的平台用人民币等传统货币来购买加密货币。 这一过程会将自己的实名金融账户和加密货币账户关联起来,对于中国用户更是高风险。</p> <p>交易是用已有的加密货币或商品通过市场兑换其他人手中的加密货币。 暗网中的黑市中加密货币流通规模日益增长,各类加密货币兑换平台也层出不穷,比如<a class="link" href="https://changenow.io/" target="_blank" rel="noopener" >changenow</a>。</p> <p>挖矿是参与加密货币交易的确认过程,从机制中获得相应的回馈。 加密货币因为离线的特性,可以同时将一笔钱付给多人,只有优先算出结果的分支交易会被确认。 为了鼓励用户提供算力完成交易,参与交易确认(挖矿)的用户会获取一些手续费,而且越是小额的交易费率越高。</p> <h3 id="消费">消费 </h3><p>加密货币目前主要适合购买数字产品,比如<a class="link" href="https://bitcoin-vps.com/" target="_blank" rel="noopener" >支持加密货币购买的VPS</a>。 GOG等游戏平台也支持一些主流加密货币付款。 当然,还可以将加密货币换回自己的法币,实现类似炒股的效果。</p> <h2 id="典型加密货币">典型加密货币 </h2><p>最后介绍三种各具特色的加密货币。</p> <h3 id="btc">BTC </h3><p>Bitcoin <a class="link" href="https://bitcoin.org" target="_blank" rel="noopener" >https://bitcoin.org</a></p> <p>比特币,加密货币的始祖,世界上首个加密货币,也是目前总市值最大的加密货币。</p> <h3 id="eth">ETH </h3><p>Ethereum <a class="link" href="https://ethereum.org" target="_blank" rel="noopener" >https://ethereum.org</a></p> <p>以太坊,基于加密货币的平台,极大的扩展了加密货币的功能和社区。 各种智能合约、分布式游戏、数字藏品就来自于以太坊的开创性贡献。</p> <h3 id="xmr">XMR </h3><p>monero <a class="link" href="https://www.getmonero.org" target="_blank" rel="noopener" >https://www.getmonero.org</a></p> <p><img src="https://localfreedom.pages.dev/img/monero-logo.png" loading="lazy" alt="XMRlogo" ></p> <p>门罗币,主打隐私的货币,通过环等技术混淆转账过程,让监控者难以在公开的账本上追踪账户。 同时,读取账户金额的过程也需要更大流量,有损便利性。</p> <p>如果你需要匿名购买加密货币的渠道,可以考虑使用<a class="link" href="https://localmonero.co/" target="_blank" rel="noopener" >localmonero</a>提供的购买门罗币的服务。在购买后门罗币地址间的互转是匿名的,对外部不可见的。 当然也不绝对,追求匿名的用户还是应该尽量避免金融操作。</p>

2023/12/18
阅读更多

GOG 游戏库

<img src="https://localfreedom.pages.dev/img/GOG-galaxy.jpeg" alt="Featured image of post GOG 游戏库" /><h2 id="简介">简介 </h2><p>想要离线自由怎么能少了娱乐呢?</p> <p>固然可以收集各种盗版单击游戏,但现在有了正版的提供完全可离线的游戏的平台,在享受离线自由的同时还能用自己的购买为游戏投票和赞助,这就是本文要推荐的<a class="link" href="https://www.gog.com" target="_blank" rel="noopener" >GOG</a>。</p> <p>GOG.com是一家提供电子游戏等数位商品发行平台,它由GOG公司运营,母公司为<a class="link" href="https://www.cdprojekt.com" target="_blank" rel="noopener" ><code>CD Projekt</code>(波兰蠢驴)</a>,总部位于波兰华沙。GOG.com通过无数字版权管理(DRM-free)的方式提供适用于Windows、OS X和Linux平台的电子游戏。在早期,GOG只發行年代較久的遊戲,自2012年3月,它开始售卖较为新款的游戏。 2017年6月22日,GOG.com加入了简体中文支持以及人民币结算,包括支付宝、银联、微信支付等方式。</p> <p>DRM-free意味着从GOG.com购买的电子游戏可以直接获得离线安装包,没有任何安装次数或设备的限制。当然正规平台也没有版权风险或被捆绑恶意软体的风险。也便于充分实现单机游戏的匿名游玩,你完全可以注册账号购买游戏,用钱行使赞助的权利,然后从任意渠道获得的安装包进行游戏。</p> <h2 id="离线用法">离线用法 </h2><p>从GOG.com的网页就可以直接下载游戏安装包,购买游戏后在库里选择下载,避开醒目提示的Galaxy客户端提示,选择下载离线安装文件即可。 也可以通过BT等手段从其他地方获取安装文件,Windows版本的可以通过数字签名来确认是否来自官网。 GOG官方还特别良心的提供了安装前校验功能,并将安装包拆分为安装器和多个数据文件。如果官网速度不佳,可以只下载安装器然后校验其他方式得到的数据文件并安装即可。</p> <p>这里的安装包都是无需联网验证和激活的,即免DRM。 只要在任意满足基本要求的电脑上运行安装包即可游玩儿。 当然离线游玩是没有成就之类的在线功能的。</p> <p>通常离线安装包会携带必要的依赖库,但自己储备一些常用的以来库对于离线娱乐等也是很必要的,考虑有空另写一篇博文将将离线库文件的收集整理。</p> <h2 id="游戏推荐">游戏推荐 </h2><h3 id="自家作品">自家作品 </h3><p>创建GOG的公司CDProjekt自身就出品很多高质量游戏,最近对简体中文支持越来越好,即使不玩游戏也建议去视频网站上体验一下普通话配音效果。</p> <ul> <li>巫师系列 <ul> <li><a class="link" href="https://www.gog.com/en/game/the_witcher" target="_blank" rel="noopener" >The Witcher: Enhanced Edition</a></li> <li><a class="link" href="https://www.gog.com/en/game/the_witcher_2" target="_blank" rel="noopener" >The Witcher 2: Assassins of Kings Enhanced Edition</a></li> <li><a class="link" href="https://www.gog.com/en/game/the_witcher_3_wild_hunt_game_of_the_year_edition" target="_blank" rel="noopener" >The Witcher 3: Wild Hunt - Complete Edition</a></li> </ul> </li> <li>赛博朋克系列 <ul> <li><a class="link" href="https://www.gog.com/en/game/cyberpunk_2077_ultimate_edition" target="_blank" rel="noopener" >Cyberpunk 2077: Ultimate Edition</a></li> </ul> </li> </ul> <h3 id="经典上架">经典上架 </h3><p>也有很多经典游戏在GOG上架。</p> <ul> <li>上古卷轴系列 <ul> <li><a class="link" href="https://www.gog.com/en/game/elder_scrolls_iv_oblivion_game_of_the_year_edition_deluxe_the" target="_blank" rel="noopener" >The Elder Scrolls IV: Oblivion - Game of the Year Edition Deluxe</a></li> <li><a class="link" href="https://www.gog.com/en/game/the_elder_scrolls_v_skyrim_anniversary_edition" target="_blank" rel="noopener" >The Elder Scrolls V: Skyrim Anniversary Edition</a></li> </ul> </li> <li>骑马与砍杀 <ul> <li><a class="link" href="https://www.gog.com/en/game/mount_blade_warband" target="_blank" rel="noopener" >Mount &amp; Blade: Warband</a></li> </ul> </li> <li>博德之门系列 <ul> <li><a class="link" href="https://www.gog.com/en/game/baldurs_gate_iii" target="_blank" rel="noopener" >Baldur&rsquo;s Gate 3</a></li> </ul> </li> </ul> <h3 id="值得期待">值得期待 </h3><p>也有很多游戏被大众期待,GOG上有个<a class="link" href="https://www.gog.com/wishlist/games" target="_blank" rel="noopener" >愿望汇总列表</a>。暗黑破坏神、侠盗猎车手、全面战争等都在榜上。 吐槽一句,玩儿了赛博朋克,博主已经决定侠盗猎车手不上架GOG绝不买。</p>

2023/12/9
阅读更多

kiwix

<h2 id="离线知识库工具">离线知识库工具 </h2><p><a class="link" href="https://kiwix.org" target="_blank" rel="noopener" >kiwix</a>是一个离线查看维基百科的自由软件,采用zim格式压缩维基百科数据以供离线使用。 当然,任何网页文档如果压缩成zim格式都可以用kiwix查看,社区也制作了各种软件、服务等的文档。 可以说kiwix是<strong>实现自由的离线生活的重要基础设施</strong>。 关键kiwix还集成实现了全文检索功能。</p> <p>kiwix<a class="link" href="https://kiwix.org/en/applications/" target="_blank" rel="noopener" >支持Windows、MacOS/iOS、GNU/Linux、Android等</a>,可以说是完全跨平台软件,也有很好的国际化多语言支持。 软件很小巧值得收藏。 kiwix还有<a class="link" href="https://addons.mozilla.org/en-US/firefox/addon/kiwix-offline" target="_blank" rel="noopener" >Firefox插件版本</a>可以体验。 博主测试浏览器插件使用效果目前还不太稳定。</p> <h2 id="离线知识库">离线知识库 </h2><h3 id="资源网址">资源网址 </h3><p><a class="link" href="https://library.kiwix.org" target="_blank" rel="noopener" >https://library.kiwix.org</a> 列出了官方背书的知识库,可以筛选查找。</p> <p><a class="link" href="https://download.kiwix.org/zim/" target="_blank" rel="noopener" >https://download.kiwix.org/zim/</a> 这里可以下载官方的资源。</p> <h3 id="各种版本">各种版本 </h3><p>维基百科是分语言的,可以选择只下载自己常用的语言和英语版本。 每种语言有完全版本(all)和精选版本(top)。 网站还区分了最大版(maxi)、无图片版本(nopic)和精简版(mini)。</p> <p>比如 <a class="link" href="https://download.kiwix.org/zim/wikipedia/wikipedia_zh_all_nopic_2023-10.zim" target="_blank" rel="noopener" >https://download.kiwix.org/zim/wikipedia/wikipedia_zh_all_nopic_2023-10.zim</a> 就是维基百科-中文-完全-无图片版本。</p> <p>其他各种资源基本都有语言的区分,但通常没有维基的那么大,也就不分有无图片了。 目前官网已经收录了超过1000种百科文档,比如各种Linux发行版的wiki、mooc、问答社区等。</p> <h3 id="下载方式">下载方式 </h3><ul> <li>直接下载,从<a class="link" href="https://download.kiwix.org/zim/" target="_blank" rel="noopener" >网页</a>直接点击下载。</li> <li>BT下载,在zim下载连接后面加上<code>.torrent</code>即可下载种子文件,然后用喜欢的BT工具下载即可。</li> <li>镜像下载,很多镜像站会镜像整个<a class="link" href="https://download.kiwix.org/" target="_blank" rel="noopener" >数据网站</a>也可以去那里下载。</li> </ul> <p>zim文件不必及时更新,反正就是离线查看。但每次更新一定要检查打开后图片展示、连接跳转等是否正常。如果发现新版本zim体积减小也要留意,毕竟知识库这种东西一般应该是单调递增的,减小了不免怀疑是否有删减。</p> <h2 id="kiwix的意义">kiwix的意义 </h2><p>kiwix可以让我们不依赖网络而高效的查阅知识,实现离线的自由。 既然离线使用,当然避免了各种广告、追踪等,是ungoogle的隐私主义者的利器。 离线资源的传播可以让真理走向世界的每一个角落,启蒙缺乏互联网的难民儿童,当然还有天朝的愚民。</p>

2023/12/3
阅读更多

LaTeX 环境搭建

<img src="https://localfreedom.pages.dev/img/latex-project-logo.svg" alt="Featured image of post LaTeX 环境搭建" /><h2 id="latex介绍">LaTeX介绍 </h2><p>LaTeX(LATEX,音译“拉泰赫”)是一种基于ΤeΧ的排版系统。区别于MSOfficeWord这类的所见即所得形式的编辑,LaTeX是一种代码式的排版工具,善于用命令精确规范文档的格式。 可以把LaTeX和TeX的关系比作STL和C++的关系。这里配置的环境当然也是包括TEX的。</p> <p>LaTeX的写作环境就像编程,分为编译引擎和编辑工具。 编译引擎现在通常选择TexLive发行版。 编辑工具可以使用任意文本编辑器,如notepad,vim,emacs,gedit,vscode等。 有一些专门用于LaTeX的编辑软件,按<a class="link" href="https://alternativeto.net" target="_blank" rel="noopener" >alternativeto</a>的排序如LyX,TexMaker,TeXstudio,MiKTeX,Kile,Gummi,TeXworks,Latexila等。</p> <h2 id="安装latextexlive">安装LaTeX(TexLive) </h2><h3 id="下载">下载 </h3><p><a class="link" href="https://www.latex-project.org" target="_blank" rel="noopener" >LaTeX官网</a> 并不直接提供下载,而是像Linux一样<a class="link" href="https://www.tug.org/interest.html#free" target="_blank" rel="noopener" >选择发行版</a>。 这里推荐最跨平台的<a class="link" href="https://www.tug.org/texlive/" target="_blank" rel="noopener" >TexLive</a>版本,网页很朴素可以看到如下获取选项:</p> <ul> <li><strong>Ways to acquire TeX Live:</strong> <ul> <li><a class="link" href="https://www.tug.org/texlive/acquire-netinstall.html" target="_blank" rel="noopener" >download</a>,</li> <li><a class="link" href="https://www.tug.org/texlive/acquire-dvd.html" target="_blank" rel="noopener" >on DVD</a>,</li> <li><a class="link" href="https://www.tug.org/texlive/acquire-iso.html" target="_blank" rel="noopener" >an ISO image or via torrent</a>,</li> <li><a class="link" href="https://www.tug.org/texlive/acquire.html" target="_blank" rel="noopener" >other methods</a>.</li> </ul> </li> </ul> <p>完全安装大约有7G,联网安装很慢容易断,所以不要直接点download,而是选择<code>an ISO image or via torrent</code>。</p> <p>接下来随便怎么下载,下好后用页面上提供的sha256或其他checksum检验一下就好。 如此伟大的软件当然应该把其签名<a class="link" href="https://www.tug.org/texlive/files/texlive.asc" target="_blank" rel="noopener" >公钥</a>纳入自己的GPG。这里就不详谈密码学和公钥信任体系了。</p> <p>下载好ISO文件并用sha256检验完整后,用虚拟光驱打开光盘。现在Ubuntu和Win10等系统应该都是自带虚拟光驱功能的。</p> <h3 id="安装">安装 </h3><p>进入光盘根目录。</p> <p>Linux/MacOS上执行<code>install-tl</code>,Windows执行<code>install-tl-windows.bat</code>。 Linux如果安装了<code>perl-tk</code>包的话可以加上<code>-gui</code>参数开启图形界面,不过字符界面安装已经足够好用了。</p> <pre><code>Installing TeX Live 2023 from: ... Platform: x86_64-linux =&gt; ’GNU/Linux on x86_64’ Distribution: inst (compressed) Directory for temporary files: /tmp ... Detected platform: GNU/Linux on Intel x86_64 &lt;B&gt; binary platforms: 1 out of 16 &lt;S&gt; set installation scheme: scheme-full &lt;C&gt; customizing installation collections 40 collections out of 41, disk space required: 7620 MB (free: 138718 MB) &lt;D&gt; directories: TEXDIR (the main TeX directory): /usr/local/texlive/2023 ... &lt;O&gt; options: [ ] use letter size instead of A4 by default ... &lt;V&gt; set up for portable installation Actions: &lt;I&gt; start installation to hard disk &lt;P&gt; save installation profile to ’texlive.profile’ and exit &lt;H&gt; help &lt;Q&gt; quit </code></pre> <p>看说明可选择V进行可移动安装,这个看个人习惯,后续步骤一样。</p> <p>大写字母D设置安装路径。</p> <p>然后再输入大写字母I就可以安装到磁盘。</p> <p>注意P选项,暂存配置但下次打开运行安装程序并不会自动读取,最好一气呵成,反正也没几个设置的。</p> <p>这一套装完几乎会用到的宏包(依赖)就都齐全了,而且包括<a class="link" href="https://ctex.org" target="_blank" rel="noopener" >CTEX</a>中文套件。</p> <h3 id="注意">注意 </h3><ul> <li>安装结束的时候会有提示将路径加入环境变量<code>$PATH</code>。</li> <li>Linux也可以考虑从发行版仓库里安装texlive-full。</li> <li>建议不要精简安装,中文涉及的依赖很复杂。</li> </ul> <h2 id="编辑器vscode">编辑器VSCode </h2><h3 id="选择理由">选择理由 </h3><ul> <li>轻量,占用资源少。</li> <li>用户多,文档和资料多,便于调试。</li> <li>免费,微软开源软件,官方有移动版,还有更自由的替代品<a class="link" href="https://vscodium.com/" target="_blank" rel="noopener" >VSCodium</a>。</li> <li>有很好的插件<a class="link" href="https://github.com/James-Yu/LaTeX-Workshop" target="_blank" rel="noopener" >latex-workshop</a>,便于对中文特殊情况做灵活的配置,而且在VSCodium也默认可用。</li> </ul> <h3 id="安装-1">安装 </h3><ul> <li><a class="link" href="https://code.visualstudio.com/" target="_blank" rel="noopener" >VSCode</a>或<a class="link" href="https://vscodium.com/" target="_blank" rel="noopener" >VSCodium</a> <ul> <li>官网下载</li> <li>推荐非管理员权限的安装方式。</li> <li>官方Linux<a class="link" href="https://github.com/microsoft/vscode/blob/main/resources/linux/code.desktop" target="_blank" rel="noopener" >desktop文件</a></li> </ul> </li> <li>latex插件 <ul> <li>点开左侧的EXTENSION按钮</li> <li>搜索<code>latex</code>,选择<code>latex-workshop</code>安装。</li> </ul> </li> <li>fonts字体 <ul> <li>通常作品的编译需要adobe字体,Linux下可能需要Windows字体</li> <li>Linux下建议用字体管理器安装到用户目录</li> <li>Linux下可能出现字体文件名大小写的问题</li> <li>adobe的opentype字体可以考虑复制到<code>C:\texlive\2023\texmf-dist\fonts\opentype\adobe</code></li> </ul> </li> </ul> <h3 id="配置">配置 </h3><ul> <li>vscode <ul> <li>File-&gt;Preferences-&gt;Settings</li> <li>搜索tele,禁用远程遥测</li> <li>搜索auto,禁用自动更新</li> </ul> </li> <li>latex-workshop <ul> <li>左侧插件菜单点击设置,搜索<code>recipes</code>,或在全局设置搜索<code>latex-workshop.latex.recipes</code></li> <li>点击<code>Edit in settings.json</code></li> <li>设置包含recipes和tools两部分,如果没看见tools再搜索结果里找一下点击。</li> <li>recipes对应左侧扩展操作面板里的BUILD方法</li> <li>recipes里每一项的内容为依次调用tools里的定义 <ul> <li>name 面板中显示的名称</li> <li>tools 依次调用的项目(tools定义)数组</li> <li>如 <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span><span class="lnt">6 </span><span class="lnt">7 </span><span class="lnt">8 </span><span class="lnt">9 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;tools&#34;</span><span class="err">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;xelatex&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;bibtex&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;bibtex-jrnl.aux&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;bibtex-conf.aux&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;bibtex-patent.aux&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;makeindex&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;xelatex&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"><span class="p">]</span> </span></span></code></pre></td></tr></table> </div> </div></li> </ul> </li> <li>tools <ul> <li>name 项目名称</li> <li>command 命令名称,即一个tools项目是一条命令行,这里填命令名</li> <li>args 参数数组,命令行中的空格都改成逗号分隔</li> </ul> </li> </ul> </li> <li>部分编译组件的用途 <ul> <li>xelatex 编译包含中文的正文</li> <li>bibtex 编译参考文献</li> <li>makeindex 生成图表索引及目录</li> </ul> </li> </ul> <h2 id="后记">后记 </h2><p>装好编译引擎(TexLive)和编辑工具(VSCode)后就可以尝试LaTeX写作了,也许<a class="link" href="https://latex-tutorial.com/" target="_blank" rel="noopener" >教程</a>学习曲线比较陡峭,但相信各位读者尤其是程序员读者会逐渐感受到这一工具的魅力。 记笔记写博客常用的<code>markdown </code>可以看作LaTeX的简化版,其中包括嵌入LaTeX数学公式,可见其表达能力是非常强的。 LaTeX有各种各样的宏包,有机会再写博文深入介绍各类宏包资源与使用。</p>

2023/11/28
阅读更多

中国身份证校验

<h2 id="号码组合含义">号码组合含义 </h2><p>目前中国使用的18位身份证号由6位地址码+8位生日+3位顺序码+1位校验码组成。</p> <p>地址码指的是公民出生地所在县(市、镇、区)的行政区划代码,如310110是上海市杨浦区。但港澳臺地區居民的身份號碼只精確到省級。</p> <p>出生日期码表示公民出生的公历年(4位)、月(2位)、日(2位)。</p> <p>顺序码是给同地址码同出生日期码的人编定的顺序号,其中奇数分配给男性,偶数分配给女性。</p> <p>最后一位是校验码,这里采用的是ISO 7064:1983, MOD 11-2校验码系统。校验码为一位数,但如果最后采用校验码系统计算的校验码是“10”,碍于身份证号码为18位的规定,则以“X”代替校验码“10”。</p> <h2 id="校验码计算方法">校验码计算方法 </h2><ol> <li>将身份证号码从左至右标记为 a1, a2, ⋯, a18,a_{18}即为校验码;</li> <li>计算权重系数 $W_i = 2^{18 − i} \mod 11$</li> </ol> <table> <thead> <tr> <th>i</th> <th>1</th> <th>2</th> <th>3</th> <th>4</th> <th>5</th> <th>6</th> <th>7</th> <th>8</th> <th>9</th> <th>10</th> <th>11</th> <th>12</th> <th>13</th> <th>14</th> <th>15</th> <th>16</th> <th>17</th> <th>18</th> </tr> </thead> <tbody> <tr> <td>W</td> <td>7</td> <td>9</td> <td>10</td> <td>5</td> <td>8</td> <td>4</td> <td>2</td> <td>1</td> <td>6</td> <td>3</td> <td>7</td> <td>9</td> <td>10</td> <td>5</td> <td>8</td> <td>4</td> <td>2</td> <td>1</td> </tr> </tbody> </table> <ol start="3"> <li>计算 $S = \sum\limits_{i=1}^{17} a_i * W_i$</li> <li>$a_{18} = (12 - (S \mod 11)) \mod 11$</li> </ol> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span><span class="lnt">5 </span><span class="lnt">6 </span><span class="lnt">7 </span><span class="lnt">8 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">check_china_id</span><span class="p">(</span><span class="n">id_num</span><span class="p">:</span><span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">id_num</span><span class="p">)</span> <span class="o">==</span> <span class="mi">18</span> </span></span><span class="line"><span class="cl"> <span class="n">S</span> <span class="o">=</span> <span class="mi">0</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">17</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">S</span> <span class="o">+=</span> <span class="nb">int</span><span class="p">(</span><span class="n">id_num</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">**</span> <span class="p">(</span><span class="mi">17</span> <span class="o">-</span> <span class="n">i</span><span class="p">)</span> <span class="o">%</span> <span class="mi">11</span> </span></span><span class="line"><span class="cl"> <span class="n">checksum</span> <span class="o">=</span> <span class="p">(</span><span class="mi">12</span> <span class="o">-</span> <span class="p">(</span><span class="n">S</span> <span class="o">%</span> <span class="mi">11</span><span class="p">))</span> <span class="o">%</span> <span class="mi">11</span> </span></span><span class="line"><span class="cl"> <span class="n">checkchar</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">checksum</span><span class="p">)</span> <span class="k">if</span> <span class="n">checksum</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="k">else</span> <span class="s1">&#39;X&#39;</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">checkchar</span> <span class="o">==</span> <span class="n">id_num</span><span class="p">[</span><span class="mi">17</span><span class="p">]</span> </span></span></code></pre></td></tr></table> </div> </div><h2 id="一些奇怪的用处">一些奇怪的用处 </h2><p>首先当然是基本查验接触到的中国身份证号是否正确。</p> <p>中国网络实行普遍的实名制,尤其电子游戏需要绑定身份信息,而游戏公司是不能也不应该实时接入公安数据库的,那么就可以按照这一规则生成一个假的身份证通过验证。 金融领域也可以这样申请一些账户,但由于金融行业和公安数据对接更紧密,会定期对比身份信息,随机生成的身份证号很快会露出破绽。</p>

2023/11/24
阅读更多

GPT4ALL

<h2 id="简介">简介 </h2><p>GPT4All是一个本地软件,用于将大语言模型(LargeLanguageModel)通过浮点优化等方法在本地离线提供服务。</p> <p>在ChatGPT大火之后,很多厂商模仿推出了开源或专有的大语言对话模型,但这些模型要么以web服务方式提供要么过于需要计算资源而难以本地使用。</p> <p>随着facebook的llama的泄漏,一个不错的离线替代品出现,同时<a class="link" href="https://github.com/ggerganov/llama.cpp" target="_blank" rel="noopener" >llama.cpp</a>项目通过浮点计算优化让笔记本也能勉强运行起大模型来。 GPT4All项目将相关技术和资源整合制作了QT桌面软件,让用户能方便的本地离线运行公开的大语言模型,当然它也提供OpenAI的接口以同时使用线上服务。</p> <h2 id="安装">安装 </h2><p>官网会提供<a class="link" href="https://gpt4all.io/installers/gpt4all-installer-win64.exe" target="_blank" rel="noopener" >Windows</a>、<a class="link" href="https://gpt4all.io/installers/gpt4all-installer-darwin.dmg" target="_blank" rel="noopener" >MacOS</a>、<a class="link" href="https://gpt4all.io/installers/gpt4all-installer-linux.run" target="_blank" rel="noopener" >Linux</a>的安装包,但每次安装还是会联网检索信息,无法离线安装,只要官网能访问就可以简单的“下一步”安装完成。 也可以从<a class="link" href="https://github.com/nomic-ai/gpt4all" target="_blank" rel="noopener" >源代码</a>编译。</p> <h2 id="下载模型">下载模型 </h2><p>官方会预配置一些模型可供直接使用,由于网络的封锁这一步可以离线进行。</p> <p>模型列表来自官网,下载时会跳转到一个github地址 <a class="link" href="https://gpt4all.io/models/models.json" target="_blank" rel="noopener" >https://gpt4all.io/models/models.json</a> 可以手动下载后放到 <code>~/AppData/Roaming/nomic.ai/models.json</code> 之后点击界面左侧的 <code>Download</code> 按钮就可以看到可选模型列表了。</p> <p>由于huggingface被彻底封锁,只能手动科学下载。 在<a class="link" href="https://gpt4all.io/index.html" target="_blank" rel="noopener" >官网首页</a>下来可以看到模型介绍,选择想下载的模型,点击下方卡片的箭头按钮就可以下载。 下载后放到<code>~/AppData/Local/nomic.ai/GPT4ALL/</code>里就能被软件自动识别到。</p> <h2 id="对话">对话 </h2><p><img src="https://localfreedom.pages.dev/img/gpt4all.gif" loading="lazy" alt="UI" ></p> <p>从上方的菜单选择已经下载好被识别的模型,即可像ChatGPT一样对话。 这些模型通常要求16G的内存即可。 对话效果差强人意,而且基本只支持英文输出。</p>

2023/11/21
阅读更多

Firefox浏览器离线使用扩展推荐

<p>火狐(Firefox)是著名的浏览器,也是现今最重要最符合自由精神的浏览器。 浏览器通常是用来浏览上网的,但也具备越来越多的离线功能。 这里推荐一些可以完全离线使用的火狐浏览器扩展,以在离线环境中使用火狐。 本文会优先选择Mozilla官方推荐的扩展。</p> <p>这篇博文算是首篇非常符合本博客名号的文章了。 建议在Firefox中新建一个Profile体验这些扩展。</p> <h2 id="epubreader">EPUBReader </h2><ul> <li><a class="link" href="https://addons.mozilla.org/en-US/firefox/addon/epubreader/" target="_blank" rel="noopener" >https://addons.mozilla.org/en-US/firefox/addon/epubreader/</a></li> <li>非常不错的EPUB电子书格式阅读器。</li> <li>不用担心服务商统计自己看了哪些书。</li> </ul> <h2 id="offline-qr-code">Offline QR code </h2><ul> <li><a class="link" href="https://addons.mozilla.org/en-US/firefox/addon/offline-qr-code-generator" target="_blank" rel="noopener" >https://addons.mozilla.org/en-US/firefox/addon/offline-qr-code-generator</a></li> <li>输入文本生成二维码,简单易用。</li> <li>离线环境下避免二维码相关信息泄漏。</li> </ul> <h2 id="emoji">Emoji </h2><ul> <li><a class="link" href="https://addons.mozilla.org/en-US/firefox/addon/emoji-sav" target="_blank" rel="noopener" >https://addons.mozilla.org/en-US/firefox/addon/emoji-sav</a></li> <li>提供大量表情。</li> <li>离线编写带表情的文章时可以通过Emoji快捷查找输入表情符号。</li> </ul> <h2 id="kiwix">Kiwix </h2><ul> <li><a class="link" href="https://addons.mozilla.org/en-US/firefox/addon/kiwix-offline" target="_blank" rel="noopener" >https://addons.mozilla.org/en-US/firefox/addon/kiwix-offline</a></li> <li>Kiwix提供的用以阅读zim文件的插件。</li> <li>经测试目前不如桌面版kiwix好用,但可以省去安装软件。</li> </ul> <h2 id="joplin-web-clipper">Joplin Web Clipper </h2><ul> <li><a class="link" href="https://addons.mozilla.org/en-US/firefox/addon/joplin-web-clipper" target="_blank" rel="noopener" >https://addons.mozilla.org/en-US/firefox/addon/joplin-web-clipper</a></li> <li>Joplin提供的网页剪辑插件,用来将网页转换为适合Joplin的markdown格式笔记。</li> <li>可以用于将<a class="link" href="https://addons.mozilla.org/en-US/firefox/addon/single-file" target="_blank" rel="noopener" >SingleFile</a>或各种方式缓存的离线网页转换成Joplin笔记。</li> </ul>

2023/11/18
阅读更多

RAR 妙用

<h2 id="简介">简介 </h2><p>RAR是最知名、使用最为广泛的压缩软件之一。 官网是 <a class="link" href="https://www.rarlab.com" target="_blank" rel="noopener" >https://www.rarlab.com</a></p> <h2 id="获取旧版本">获取旧版本 </h2><p>虽然官网只有最新release和beta版本的下载连接,但官方也提供了FTP可以下载以前的版本。</p> <p><a class="link" href="ftp://ftp.rarlab.com/rar" >ftp://ftp.rarlab.com/rar</a></p> <p>鉴于当前主流浏览器不再支持ftp可能需要filezilla等软件来获取旧版本安装包。 6.10开始不再支持XP,XPsp3只能使用32位版本。</p> <p>比较特殊的是<strong>5.91</strong>版本,这是5系列最后一版本,同时也是Win7SP1可以直接识别数字签名的版本,非常时候收藏以离线安装使用。 但是当年RAR的数字签名除了问题,ftp上提供的是重新签名后的版本,并不能被Win7SP1识别。 作者在这里放上当年从官网下载的<code>winrar-x64-591.exe</code>的SHA256值<code>1c30d74f20ea721d63061d2a06ac00a9270fc7823004ff4f572d354990d4c1ae</code>。</p> <h2 id="激活">激活 </h2><p>RAR是专有收费软件,尽管很多人都没有意识到。 RAR作者也非常良心,只要忍受每次开起的广告就可以一直试用。 购买正版对于很多国家可能并不简单,不过激活还是很容易做到的。 在RAR安装目录<code>C:\Program Files\WinRAR</code>下新建<code>rarreg.key</code>,输入纯文本注册信息即可激活。 注册信息就麻烦读者自行检索吧。</p> <h2 id="防乱码">防乱码 </h2><p>使用最广泛的开源的ZIP格式,没有在压缩包中包含字符编码的说明。 对于中文用户,从WinXP或Win7打包的文件可能在MacOS或Linux上文件名目录乱码。 而RAR格式是包含字符编码信息的,便于在其他语言或默认字符编码的系统中正确识别文件名和目录的字符编码。</p>

2023/11/15
阅读更多

Windows 驱动备份

<h2 id="前言">前言 </h2><p>如果想重装系统后离线使用,除了系统安装盘,通常还需要准备驱动。 计算机制造商通常会提供驱动,但这可能不全面或已经过时。 导出当前正常运行状态的驱动,并在重装系统后再次导入,能期望获得最完美的硬件连续使用体验。 就像制造商网站提供的驱动区分系统版本,这一方法在前后系统大版本不一致时很可能出现兼容性问题。</p> <h2 id="导出当前驱动">导出当前驱动 </h2><p>有很多工具软件可以实现这一功能。 既然Windows系统自带了这一功能,从信任链和攻击面的角度当然尽可能使用自带功能。 用管理员权限运行cmd或powershell,执行下列命令即可导出当前系统的驱动。</p> <div class="highlight"><div class="chroma"> <table class="lntable"><tr><td class="lntd"> <pre tabindex="0" class="chroma"><code><span class="lnt">1 </span></code></pre></td> <td class="lntd"> <pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">dism</span> <span class="p">/</span><span class="n">online</span> <span class="p">/</span><span class="nb">export-driver</span> <span class="p">/</span><span class="n">destination</span><span class="err">:</span><span class="n">E:</span><span class="p">\</span><span class="n">MyDrivers</span> </span></span></code></pre></td></tr></table> </div> </div><p>其中<code>E:\MyDrivers</code>是你想导出的位置目录。</p> <p>导出的文件原位置在<code>C:\Windows\System32\DriverStore\FileRepository</code>,也可以尝试手动复制。</p> <h2 id="optional去掉旧版本驱动">[Optional]去掉旧版本驱动 </h2><p>如果驱动在计算机使用过程中更新了,那么所有使用过的驱动版本都会被保留一并导出。 为了节省存储空间,可以考虑删掉旧版本的驱动。</p> <p>进入导出驱动的目录,每个驱动会存放在一个名为<code>[驱动名].inf_amd64_[编译号]</code>的文件夹。 驱动名相同,编译号不同的文件夹即是同一驱动的不同版本。</p> <p>编译号字典序并不表示先后关系,需要进入文件夹对比<code>[驱动名].inf</code>文件中的日期和版本号。 也可以借助驱动管理软件来快捷分析,如<code>Sanppy Driver Installer Origin</code>。</p> <p>博主编写了一个自动化<a class="link" href="https://github.com/LocalFreedom/python-utils/blob/main/archive_win_driver.py" target="_blank" rel="noopener" >python脚本</a>来抽取所有驱动的最新版本复制到一个新的文件夹,并提示异常如版本号和日期顺序不一致等。</p> <h2 id="在新系统中重新安装驱动">在新系统中重新安装驱动 </h2><p><strong>有些驱动如果被系统安装过程依赖,要提前并入安装介质,如硬盘驱动!</strong></p> <p>安装好新系统后将导出驱动的文件夹拷贝,依次进入每个文件夹<code>[驱动名].inf_amd64_[编译号]</code>,右键<code>[驱动名].inf</code>选择<code>安装</code>即可安装每个驱动,恢复之前的硬件驱动状态。</p> <p>也可以在设备管理器中针对每个未知设备搜索驱动,选择从本地存放导出驱动的文件夹搜索即可。 这样可以省略一些不那么关键的驱动,同时很多优化更新类的驱动容易被忽略,因为这类设备不会被标记为未知设备。</p> <h2 id="optional备份存储优化">[Optional]备份存储优化 </h2><p>这样导出的驱动是不压缩的,手动压缩可能比例也不高。 其中占用空间较大的通常是显卡驱动,可以考虑显卡驱动采用Intel或Nvidia等厂商的官方安装包,可节省存储空间。 而且显卡驱动的厂商安装包通常支持多个大版本的系统,可以在不同驱动备份中复用。</p>

2023/11/14
阅读更多

Windows 11 使用技巧

<img src="https://localfreedom.pages.dev/img/windows11-laptop.avif" alt="Featured image of post Windows 11 使用技巧" /><h2 id="跳过联网">跳过联网 </h2><p>Windows从11版本开始,强化在线功能。 家庭版安装时强制建立在线微软账户,专业版才有Win10那样隐蔽离线帐号功能。 家庭版安装时的强制联网目前可以用bug跳过,进入离线账户的步骤。</p> <ol> <li>在要求联网的界面,按Shift+F10打开命令行。</li> <li>执行 <code>taskmgr</code> 开启任务管理器。</li> <li>在详细信息中结束进程 <code>OOBENetworkConnectionFlow.exe</code>。</li> </ol> <p>22h2进一步限制,专业版也要求联网,上面方法失效。 可以在要求联网的界面按Shift+F10打开命令行,执行<code>oobe\bypassnro</code>,重启后可跳过。</p> <h2 id="虚拟机安装">虚拟机安装 </h2><p>Win11由于对TPM的要求导致虚拟机安装出现困难,在等待虚拟机软件厂商支持的过程中有一些技巧可以实现虚拟机安装。</p> <h3 id="vmware">VMware </h3><p>从16.2版本开始官方加入了TPM支持,可以直接安装。 但是TPM支持需要配置加密比较麻烦可以通过如下方法免配置加密开启TPM支持。 .vmx中加入<code>managedvm.autoAddVTPM=&quot;software&quot;</code></p> <h3 id="virtualbox">Virtualbox </h3><p>从7.0版本开始Virtualbox继承了TPM组件,可直接安装。</p> <h4 id="win11-硬件限制跳过">Win11 硬件限制跳过 </h4><ol start="0"> <li>此方法在Win11v1测试可用,更新后不可用。</li> <li>跳过密钥后按<code>Shift+F10</code>打开终端。</li> <li>输入<code>regedit</code>进入注册表编辑器。</li> <li>在<code>HKEY_LOCAL_MACHINE\SYSTEM\Setup</code>新建项<code>LabConfig</code>。</li> <li>在<code>LabConfig</code>中新建三个<code>DWORD(32-bit)</code>值。 <ul> <li>BypassTPMCheck = 1</li> <li>BypassRAMCheck = 1</li> <li>BypassSecureBootCheck = 1</li> </ul> </li> <li>退回到安装界面即可继续。</li> </ol> <h2 id="移动硬盘插上没反应">移动硬盘插上没反应 </h2><p>Win11似乎有不自动分配盘符的bug,需要在设备管理器-磁盘管理中手动分配盘符。</p> <h2 id="随机mac地址">随机Mac地址 </h2><p>可以在连上的Wifi中设置随机mac地址每日更换。 该功能需要网卡驱动配合支持。</p>

2023/11/12
阅读更多

Hello World

<h2 id="hello-world">Hello World </h2><p>一直想分享自己在信息技术和隐私方面折腾的经验。 隐私向的创作分享,当然应当有比较可靠而持久的匿名方式。</p> <p>终于发现github上的静态博客是一个比较均衡的方式, 支持匿名,平台稳定,无费用,用户多,聚集了目标读者。</p> <p>经历了一系列大大小小的变故,不知道意外和明天哪一个先到来,终于在双十一开启了博客。 希望这个博客能让读者有所收获。</p> <h2 id="写作目的">写作目的 </h2><p>传播数字权利意识,普及隐私保护技术,塑造匿名生活方式。</p> <h2 id="内容规划">内容规划 </h2><p>初步考虑以技术笔记分享为主:</p> <ul> <li>折腾各种自由软件和开源软件的一些技巧</li> <li>数字工具栈的参考配置流程</li> <li>匿名化生活的方式方法</li> <li>收集的一些有趣的资源</li> <li>发展趋势、管理、社区建设、八卦等</li> </ul>

2023/11/11
阅读更多

Archives

2022/3/6
阅读更多

Links

2001/1/1
阅读更多

Search

2001/1/1
阅读更多