<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>hiDandelion&apos;s Space</title><description>Shall we take a minute?</description><link>https://www.hidandelion.com/</link><language>zh_CN</language><item><title>如何使用NodePass iOS App实现NAT穿透</title><link>https://www.hidandelion.com/posts/nodepass-ios-nat-passthrough/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/nodepass-ios-nat-passthrough/</guid><pubDate>Sun, 12 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;背景&lt;/h1&gt;
&lt;p&gt;NodePass是一个强大的网络工具，能够非常方便地在设备之间转发流量。这篇文章将会借助NodePass Linux服务端、NodePass Windows服务端和NodePass iOS客户端，实现Windows PC 3389端口的NAT穿透和端口转发，让我们即使是在家里网络无公网IP的情况下，也可以在任意网络下访问内网远程桌面服务。&lt;/p&gt;
&lt;h1&gt;准备&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;一台拥有公网IP的服务器（推荐Debian 13/Ubuntu 24.04系统）&lt;/li&gt;
&lt;li&gt;你的本地Windows PC（推荐Windows 11系统）&lt;/li&gt;
&lt;li&gt;你的iPhone/iPad（推荐iOS/iPadOS 26系统）&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;部署中转服务器&lt;/h1&gt;
&lt;p&gt;这里我们需要一台拥有公网IP的服务器作为中转服务器，这里推荐&lt;a href=&quot;https://buy.cloud.tencent.com/lighthouse&quot;&gt;腾讯云轻量应用服务器&lt;/a&gt;或&lt;a href=&quot;https://swasnext.console.aliyun.com/buy&quot;&gt;阿里云轻量应用服务器&lt;/a&gt;。建议选择国内地区以降低连接延迟，带宽选择5M及以上。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;系统建议选择Debian 13或Ubuntu 24.04。如果你选择了Windows系统，请先阅读完此章节，然后按照下一章节《部署本地PC》中介绍的同样方法来部署中转服务器即可。&lt;/p&gt;
&lt;p&gt;准备好服务器后，需要手动在控制台中配置防火墙放行你需要使用的端口。这篇教程将会使用到1024、3389和11001端口，所以你至少需要将这三个端口的入站流量设置为允许。这里以腾讯云轻量应用服务器的防火墙为例：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;设置完成后通过SSH连接到服务器，并执行以下脚本安装NodePass服务端：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(wget -qO- https://run.nodepass.eu/np.sh)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;根据脚本的指引安装NodePass服务端，可以参考笔者在这里的配置选项。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装完成后将显示NodePass服务端信息二维码。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;现在你需要使用你的iPhone/iPad添加中转服务器。来到NodePass iOS App服务器页面，点击工具栏中的&lt;strong&gt;加号&lt;/strong&gt;，然后点击&lt;strong&gt;扫描二维码&lt;/strong&gt;按钮，扫描刚才的二维码。服务器信息会自动填写。为你的服务器取一个名字，点击&lt;strong&gt;完成&lt;/strong&gt;即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果你刚才使用的是你的iPhone/iPad通过SSH App连接到服务器，只需截图后在相册中长按二维码，然后点击&lt;strong&gt;在NodePass中打开&lt;/strong&gt;菜单按钮，也可以实现同样的效果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
&lt;p&gt;能看到中转服务器的系统资源指标，即代表已经添加成功并连接上。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./7.png&quot; alt=&quot;7&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;部署本地PC&lt;/h1&gt;
&lt;p&gt;双击&lt;strong&gt;NodePass.msix&lt;/strong&gt;安装包并点击&lt;strong&gt;安装&lt;/strong&gt;。还没下载？&lt;a href=&quot;https://resource.hidandelion.com/NodePass.msix&quot;&gt;点击这里&lt;/a&gt;下载。注意在安装之前你可能需要信任该软件的证书，&lt;a href=&quot;https://b23.tv/xmcxxPA&quot;&gt;点击这里&lt;/a&gt;查看教程，或者v我1000买一个证书以节省此步骤。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./8.png&quot; alt=&quot;8&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装完成后NodePass Windows App窗口将自动打开，点击&lt;strong&gt;Start&lt;/strong&gt;启动NodePass服务端。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./9.png&quot; alt=&quot;9&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keep Running Background&lt;/strong&gt;将默认勾选，允许你在关闭NodePass Windows App窗口后依然维持NodePass服务端的运行（NodePass服务端在NAT穿透期间必须保持运行）。如果你想完全退出NodePass Windows App及NodePass服务端，取消勾选此选项并关闭窗口即可，或者你也可以通过系统状态栏右键菜单点击&lt;strong&gt;Exit&lt;/strong&gt;来完全退出。&lt;/p&gt;
&lt;p&gt;随后使用你的iPhone/iPad使用与上一章节相同的方法扫描二维码并添加服务器（此时服务器即为你的本地PC）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./10.png&quot; alt=&quot;10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;注意此时添加完成后iOS/iPadOS可能会询问是否允许本地网络的访问，请务必选择&lt;strong&gt;允许&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./11.png&quot; alt=&quot;11&quot; /&gt;&lt;/p&gt;
&lt;p&gt;能看到本地PC的系统资源指标，即代表已经添加成功并连接上（虽然可能所有的指标均显示为0，因为NodePass服务端暂不支持收集Windows系统资源信息）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./12.png&quot; alt=&quot;12&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;部署NAT穿透服务&lt;/h1&gt;
&lt;p&gt;来到NodePass iOS App服务页面，点击工具栏中的&lt;strong&gt;加号&lt;/strong&gt;，然后选择&lt;strong&gt;NAT穿透&lt;/strong&gt;菜单按钮。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./13.png&quot; alt=&quot;13&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在&lt;strong&gt;添加NAT穿透&lt;/strong&gt;表格中，按照图示配置服务，然后点击&lt;strong&gt;完成&lt;/strong&gt;。当然，你也可以选择自己喜欢的端口，只需确保端口未被占用且防火墙已经正确设置即可。这里我们就以3389端口的远程桌面服务NAT穿透为例，选用11001作为隧道的端口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./14.png&quot; alt=&quot;14&quot; /&gt;&lt;/p&gt;
&lt;p&gt;能看到已经添加的服务示意图且未出现错误，即代表已经添加成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./15.png&quot; alt=&quot;15&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;连接到内网PC&lt;/h1&gt;
&lt;p&gt;点击刚才添加的服务进入详情页面，并复制&lt;strong&gt;你应该连接到&lt;/strong&gt;一栏中的地址。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./16.png&quot; alt=&quot;16&quot; /&gt;&lt;/p&gt;
&lt;p&gt;进入Windows App（或任何你想要使用的远程桌面软件），添加一台PC，在主机名处粘贴刚才复制的地址。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./17.png&quot; alt=&quot;17&quot; /&gt;&lt;/p&gt;
&lt;p&gt;启动远程桌面连接，即可成功连接到内网PC。无论你在什么网络环境下，都可以通过这个地址连接。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./18.png&quot; alt=&quot;18&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;总结&lt;/h1&gt;
&lt;p&gt;今天我们一起借助NodePass这项强大的软件服务和其配套生态，将我们的内网PC远程桌面端口暴露于公网，方便我们在任何地点、任何网络下连接，这对我们家里云的发展、壮大和繁荣将是不可或缺的一步！&lt;/p&gt;
</content:encoded></item><item><title>VRChat如何上传自己的Windows/Android双端角色模型Avatar</title><link>https://www.hidandelion.com/posts/vrchat-how-to-upload-avatar-for-both-windows-and-android/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/vrchat-how-to-upload-avatar-for-both-windows-and-android/</guid><pubDate>Mon, 02 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;背景&lt;/h1&gt;
&lt;p&gt;在&lt;a href=&quot;/posts/vrchat-how-to-upload-avatar/&quot;&gt;上一篇文章&lt;/a&gt;中，我们讨论了如何将自定义角色模型的Windows版本上传至VRChat。然而，有些角色模型不仅支持Windows平台，还为Android平台（如Quest平台）做了特别优化。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;对于支持Windows/Android双端的角色模型，我们还需要完成一些额外的步骤来完成角色模型的上传。这篇文章将会讲述在已上传角色模型Windows版本的情况下，继续上传角色模型的Android版本。如果你还没有上传角色模型的Windows版本，请先按照&lt;a href=&quot;/posts/vrchat-how-to-upload-avatar/&quot;&gt;这篇文章&lt;/a&gt;完成相应的步骤并确保看到Windows版本上传成功的提示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;取得和绑定模型Blueprint ID&lt;/h1&gt;
&lt;p&gt;在上传Windows版本角色模型完成后，选择角色模型在Scene Hierarchy中的Prefab实例，此时Unity右侧&lt;strong&gt;Inspector&lt;/strong&gt;中的 &lt;strong&gt;Pipeline Manager (Script)&lt;/strong&gt; 栏目中将会显示模型的&lt;strong&gt;Blueprint ID&lt;/strong&gt;。记下这个&lt;strong&gt;Blueprint ID&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在Scene Hierarchy中，右键删除Windows版本的Prefab实例。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在Unity界面下方的&lt;strong&gt;Project&lt;/strong&gt;选项卡中的&lt;strong&gt;Assets&lt;/strong&gt;文件夹中找到模型Android版本的&lt;strong&gt;Prefab Asset&lt;/strong&gt;（作者也可能将其命名为Quest版本，但实际上等同于Android版本），拖拽Prefab Asset将其放置于&lt;strong&gt;Scene Hierarchy&lt;/strong&gt;中。我们会发现 &lt;strong&gt;Pipeline Manager (Script)&lt;/strong&gt; 栏目中的&lt;strong&gt;Blueprint ID&lt;/strong&gt;为未填写的状态。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这时需要我们填入刚才记下的Blueprint ID并点击&lt;strong&gt;Attach (Optional)&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
&lt;p&gt;填写完成后的效果如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./7.png&quot; alt=&quot;7&quot; /&gt;&lt;/p&gt;
&lt;p&gt;小贴士：这时如果你丢失了刚才的Blueprint ID也不用慌张，在VRChat SDK的Control Panel中来到&lt;strong&gt;Content Manager&lt;/strong&gt;选项卡，找到上传的Windows版本模型，点击&lt;strong&gt;Copy ID&lt;/strong&gt;即可复制模型的Blueprint ID。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./8.png&quot; alt=&quot;8&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;上传Android版本模型&lt;/h1&gt;
&lt;p&gt;再次上传模型，在VRChat SDK Control Panel的&lt;strong&gt;Build&lt;/strong&gt;分区中，取消勾选&lt;strong&gt;Platform&lt;/strong&gt;选择框的Windows选项并勾选&lt;strong&gt;Android&lt;/strong&gt;选项。选择过程中，Unity会提示切换Android构建目标将花费一些时间，点击&lt;strong&gt;Confirm&lt;/strong&gt;确认。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./9.png&quot; alt=&quot;9&quot; /&gt;&lt;/p&gt;
&lt;p&gt;切换平台完成后，勾选底部的声明，然后点击&lt;strong&gt;Build &amp;amp; Publish&lt;/strong&gt;构建并上传模型。看到成功提示则代表上传已经完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./10.png&quot; alt=&quot;10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这时在网站上和游戏中就可以看到我们的角色模型已支持Windows平台和Android平台。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./11.png&quot; alt=&quot;11&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;最后&lt;/h1&gt;
&lt;p&gt;至此，我们就成功上传了自己的Windows/Android双端角色模型到VRChat。赶紧使用你的角色模型，在VRChat中找到属于你的好朋友吧！&lt;/p&gt;
</content:encoded></item><item><title>VRChat如何上传自己的角色模型Avatar</title><link>https://www.hidandelion.com/posts/vrchat-how-to-upload-avatar/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/vrchat-how-to-upload-avatar/</guid><pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;背景&lt;/h1&gt;
&lt;p&gt;在VRChat中，我们可以上传自己的角色模型来使用。如果在booth等网站购买了角色模型的功能文件，则还需要自行完成上传的步骤。这些步骤涉及到较为繁琐的环境配置，对于新手来说可能会有些困惑。但是没关系，这篇文章将会详细地讲述从Unity的安装与配置到使用VRChat SDK上传模型的方法。&lt;/p&gt;
&lt;h1&gt;安装Unity&lt;/h1&gt;
&lt;h2&gt;安装Unity Hub&lt;/h2&gt;
&lt;p&gt;Unity Hub是配置Unity许可证和一键安装和管理Unity不同版本的实用工具。&lt;a href=&quot;https://unity.com/download&quot;&gt;点击此处&lt;/a&gt;来到Unity Hub下载页面。点击&lt;strong&gt;DOWNLOAD FOR WINDOWS&lt;/strong&gt;下载安装包。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;下载完成后，找到安装包并打开，随后按照安装包的指引完成安装。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装完成后，安装包会自动打开Unity Hub。如果Unity Hub未启动，也可以在桌面找到其快捷方式并启动。启动后，点击&lt;strong&gt;Sign In&lt;/strong&gt;跳转到浏览器后登录Unity账号。如果还没有Unity账号，则可以点击Create account以注册一个新账号。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;登录完成后，浏览器会自动导航回Unity Hub，记得点击&lt;strong&gt;Open Unity Hub&lt;/strong&gt;以允许浏览器打开Unity Hub。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;安装Unity Editor&lt;/h2&gt;
&lt;p&gt;登录完成导航回到Unity Hub后，Unity Hub会自动弹出Unity Editor的安装页面。此时&lt;strong&gt;不要直接点击Install Unity Editor&lt;/strong&gt;，点击右下角的&lt;strong&gt;Skip installation&lt;/strong&gt;跳过安装。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Unity Hub会提示许可证问题，点击&lt;strong&gt;Agree&lt;/strong&gt;接受并获取一个Unity Personal许可证，这个许可证是免费供个人使用的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
&lt;p&gt;之所以我们刚才没有安装Unity Editor，是因为VRChat使用的是特定版本的Unity，我们需要到&lt;a href=&quot;https://creators.vrchat.com/sdk/upgrade/current-unity-version/&quot;&gt;VRChat官网&lt;/a&gt;来查看Unity版本。可以看到，VRChat使用的是2022.3.22f1版本，点击页面上的绿色链接&lt;strong&gt;2022.3.22f1&lt;/strong&gt;或&lt;a href=&quot;https://unity.com/releases/editor/whats-new/2022.3.22&quot;&gt;点击这里&lt;/a&gt;进入Unity的下载页。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./7.png&quot; alt=&quot;7&quot; /&gt;&lt;/p&gt;
&lt;p&gt;来到下载页，点击&lt;strong&gt;INSTALL&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./8.png&quot; alt=&quot;8&quot; /&gt;&lt;/p&gt;
&lt;p&gt;浏览器会自动打开Unity Hub来完成下载和安装，点击&lt;strong&gt;Open Unity Hub&lt;/strong&gt;允许浏览器打开Unity Hub。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./9.png&quot; alt=&quot;9&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里Unity Hub会让我们选择需要安装的功能，我这里由于后续可能需要上传Android版本的角色模型，所以同时勾选了Android Build Support模块。如果不需要使用到Android平台，则无需选择Android Build Support，只需选择默认已经选择的第一项Microsoft Visual Studio Community 2022即可。点击&lt;strong&gt;Continue&lt;/strong&gt;以继续安装。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./10.png&quot; alt=&quot;10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里安装的过程比较长，需要耐心等待。安装过程中会弹出Visual Studio Installer，点击&lt;strong&gt;Continue&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./11.png&quot; alt=&quot;11&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio Installer也要求选择要安装的模块。这里我们可以都不选择，直接点击&lt;strong&gt;Install&lt;/strong&gt;。如果Installer提示未选择Workloads，直接点击Continue即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./12.png&quot; alt=&quot;12&quot; /&gt;&lt;/p&gt;
&lt;p&gt;看到Unity Hub中的&lt;strong&gt;Install Complete&lt;/strong&gt;，则表示所有组件都已安装完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./13.png&quot; alt=&quot;13&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;安装Creator Companion&lt;/h1&gt;
&lt;p&gt;来到&lt;a href=&quot;https://vcc.docs.vrchat.com/#download-it&quot;&gt;Creator Companion下载页面&lt;/a&gt;，点击页面上的绿色链接&lt;strong&gt;download the latest version directly&lt;/strong&gt;或&lt;a href=&quot;https://vrchat.com/download/vcc&quot;&gt;点击这里&lt;/a&gt;下载Creator Companion。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./14.png&quot; alt=&quot;14&quot; /&gt;&lt;/p&gt;
&lt;p&gt;下载完成后，找到安装包并打开，随后按照安装包的指引完成安装。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./15.png&quot; alt=&quot;15&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装包会自动打开Creator Companion。如果Creator Companion未启动，也可以在开始菜单找到其快捷方式并启动。启动后跟随向导一路点击&lt;strong&gt;Continue&lt;/strong&gt;并完成Unity检测，即可来到Creator Companion起始页面。点击&lt;strong&gt;Create New Project&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./16.png&quot; alt=&quot;16&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择&lt;strong&gt;Unity 2022 Avatar Project&lt;/strong&gt;模版，起一个喜欢的项目名称，点击&lt;strong&gt;Create Project&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./17.png&quot; alt=&quot;17&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里需要选择插件，选择默认已经选择的三个即可。点击&lt;strong&gt;Open Project&lt;/strong&gt;打开项目。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./18.png&quot; alt=&quot;18&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;下载模型和所需插件&lt;/h1&gt;
&lt;p&gt;这时我们需要准备好购买的模型工程文件。这里以booth为例，点击&lt;strong&gt;ダウンロード&lt;/strong&gt;下载工程文件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./19.png&quot; alt=&quot;19&quot; /&gt;&lt;/p&gt;
&lt;p&gt;同时我们需要仔细阅读模型的需求。以 &lt;em&gt;シフォン -Chiffon-【オリジナル3Dモデル】&lt;/em&gt; 为例，在商品描述&lt;strong&gt;導入方法&lt;/strong&gt;章节中可以看到，这个模型需要用到lilToon插件和VRChat SDK - Avatar 3.0插件。由于VRChat SDK - Avatar 3.0刚才在打开项目时已经默认选择，我们只需要另外下载&lt;strong&gt;lilToon插件&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./20.png&quot; alt=&quot;20&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里商品描述中给出了插件商品链接，点击链接或&lt;a href=&quot;https://lilxyzw.booth.pm/items/3087170&quot;&gt;点击此处&lt;/a&gt;前往插件商品链接，点击&lt;strong&gt;無料ダウンロード&lt;/strong&gt;下载插件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./21.png&quot; alt=&quot;21&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;将插件和角色模型导入Unity项目&lt;/h1&gt;
&lt;h2&gt;导入插件&lt;/h2&gt;
&lt;p&gt;回到刚才通过Creator Companion打开的Unity项目，确保&lt;strong&gt;空项目已成功打开&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./22.png&quot; alt=&quot;22&quot; /&gt;&lt;/p&gt;
&lt;p&gt;找到刚刚下载的插件工程文件&lt;strong&gt;lilToon_1.x.x.zip&lt;/strong&gt;（以liltoon插件为例，若同时需要更多插件重复以下的步骤即可），解压并找到其中的&lt;strong&gt;Unity package file&lt;/strong&gt;类型的文件，&lt;strong&gt;双击打开&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./23.png&quot; alt=&quot;23&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;strong&gt;Import&lt;/strong&gt;导入插件安装包（是的，这只是插件的安装包，还不是插件）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./24.png&quot; alt=&quot;24&quot; /&gt;&lt;/p&gt;
&lt;p&gt;导入完成后点击&lt;strong&gt;Install&lt;/strong&gt;完成插件安装。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./25.png&quot; alt=&quot;25&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;导入模型&lt;/h2&gt;
&lt;p&gt;找到刚刚下载的模型工程文件&lt;strong&gt;Chiffon_v1.00_20240102.zip&lt;/strong&gt;（以Chiffon模型为例），解压并找到其中的&lt;strong&gt;Unity package file&lt;/strong&gt;类型的文件，&lt;strong&gt;双击打开&lt;/strong&gt;并&lt;strong&gt;按照导入插件的相同方法导入模型&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./26.png&quot; alt=&quot;26&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;将模型放置于Scene&lt;/h2&gt;
&lt;p&gt;在Unity界面下方的&lt;strong&gt;Project&lt;/strong&gt;选项卡中的&lt;strong&gt;Assets&lt;/strong&gt;文件夹中找到模型的&lt;strong&gt;Prefab Asset&lt;/strong&gt;（蓝色的正方体图标，名称一般就是模型的名字）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./27.png&quot; alt=&quot;27&quot; /&gt;&lt;/p&gt;
&lt;p&gt;拖拽Prefab Asset将其放置于&lt;strong&gt;Scene Hierarchy&lt;/strong&gt;中。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./28.png&quot; alt=&quot;28&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;使用VRChat SDK上传角色模型&lt;/h1&gt;
&lt;p&gt;在Unity上方菜单栏中找到&lt;strong&gt;VRChat SDK&lt;/strong&gt;菜单，点击&lt;strong&gt;Show Control Panel&lt;/strong&gt;打开控制面板。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./29.png&quot; alt=&quot;29&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在控制面板的&lt;strong&gt;Authentication&lt;/strong&gt;选项卡中，登录VRChat账号。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./30.png&quot; alt=&quot;30&quot; /&gt;&lt;/p&gt;
&lt;p&gt;确认你的账号有权限上传模型（即&lt;strong&gt;Allowed to publish avatars&lt;/strong&gt;标识）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./31.png&quot; alt=&quot;31&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在&lt;strong&gt;Builder&lt;/strong&gt;选项卡中的&lt;strong&gt;Prepare Your Content&lt;/strong&gt;分区中，填写角色模型名称、上传角色模型图片并按照实际情况设置其他的元数据。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./32.png&quot; alt=&quot;32&quot; /&gt;&lt;/p&gt;
&lt;p&gt;完成基本信息设置后，在&lt;strong&gt;Build&lt;/strong&gt;分区中，勾选底部的声明，然后点击&lt;strong&gt;Build &amp;amp; Publish&lt;/strong&gt;构建并上传模型。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./33.png&quot; alt=&quot;33&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Unity会弹出窗口询问Scene的文件名和保存位置，起一个喜欢的名称保存即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./34.png&quot; alt=&quot;34&quot; /&gt;&lt;/p&gt;
&lt;p&gt;等待模型构建和上传完成。看到成功提示则代表上传已经完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./35.png&quot; alt=&quot;35&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这时在网站上和游戏中就可以看到角色模型了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./36.png&quot; alt=&quot;36&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;最后&lt;/h1&gt;
&lt;p&gt;至此，我们就成功上传了自己的角色模型到VRChat。在游戏中选择上传的角色模型即可使用。不过在这篇文章中我们上传的是仅支持Windows平台的角色模型，在&lt;a href=&quot;/posts/vrchat-how-to-upload-avatar-for-both-windows-and-android/&quot;&gt;下一篇文章&lt;/a&gt;中，我们将讨论如何将&lt;strong&gt;支持Windows/Android双端的角色模型&lt;/strong&gt;上传至VRChat。&lt;/p&gt;
</content:encoded></item><item><title>双极型晶体管BJT的掺杂方式、少子分布与理想直流特性</title><link>https://www.hidandelion.com/posts/bjt-doping-mc-dc-characteristics/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/bjt-doping-mc-dc-characteristics/</guid><description>没人看系列之无聊晶体管碎碎念。</description><pubDate>Wed, 14 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在研究过程中，我们忽略产生、复合电流，并且只研究小注入情况。&lt;/p&gt;
&lt;h1&gt;扩散型晶体管&lt;/h1&gt;
&lt;h2&gt;掺杂方式&lt;/h2&gt;
&lt;p&gt;扩散型晶体管采用均匀基区的掺杂方式。&lt;/p&gt;
&lt;h2&gt;少子分布&lt;/h2&gt;
&lt;p&gt;扩散方程：&lt;/p&gt;
&lt;p&gt;$\frac{\partial u}{\partial t}=D\nabla^2 u-\frac{u-u_0}{\tau}$&lt;/p&gt;
&lt;p&gt;由扩散方程和稳态条件即可得到少子浓度方程：&lt;/p&gt;
&lt;p&gt;$\frac{d^2 u}{dx^2}-\frac{u-u_0}{L^2}=0$&lt;/p&gt;
&lt;p&gt;$L^2=D\tau$&lt;/p&gt;
&lt;p&gt;为了表达上的简便，在上面的公式中，少子浓度统一用$u$表示，平衡少子浓度浓度统一用$u_0$表示。&lt;/p&gt;
&lt;p&gt;解少子浓度方程，即可计算出在不同的$x$处少子的浓度。&lt;/p&gt;
&lt;h2&gt;直流特性&lt;/h2&gt;
&lt;p&gt;饱和电流公式：&lt;/p&gt;
&lt;p&gt;$J_s=\frac{q D_p p_{n0}}{L_p}+\frac{q D_n n_{p0}}{L_n}=\frac{q D_p n_i^2}{L_p N_D}+\frac{q D_n n_i^2}{L_n N_A}$&lt;/p&gt;
&lt;p&gt;理想二极管方程：&lt;/p&gt;
&lt;p&gt;$J=J_s[\exp(\frac{qV}{kT})-1]$&lt;/p&gt;
&lt;h1&gt;漂移型晶体管&lt;/h1&gt;
&lt;h2&gt;掺杂方式&lt;/h2&gt;
&lt;p&gt;扩散型晶体管采用非均匀基区的掺杂方式。&lt;/p&gt;
&lt;p&gt;在研究过程中我们将假设$N_b(x)$为指数分布：&lt;/p&gt;
&lt;p&gt;$N_b(x)=N_b(0)\exp(\frac{-\eta x}{W_b})$&lt;/p&gt;
&lt;p&gt;由于非均匀的掺杂会导致基区的内建电场，用基区电场因子$\eta$来表征掺杂方式与内建电场强弱。&lt;/p&gt;
&lt;h2&gt;少子分布&lt;/h2&gt;
&lt;p&gt;由于计算上的复杂性，这里实际上是无法得到基区少子分布$n(x)$的，只能通过$J_{nb}$来表示。&lt;/p&gt;
&lt;p&gt;$J_{nb}(x)N_b(x),dx=qD_{nb},d[N_b(x)n_{pb}(x)]$&lt;/p&gt;
&lt;p&gt;$n_{pb}(x)=-\frac{J_{nb}}{qD_{nb}}(\frac{W_b}{\eta}){1-\exp[-\frac{\eta}{W_b}(W_b-x)]}$&lt;/p&gt;
&lt;h2&gt;直流特性&lt;/h2&gt;
&lt;p&gt;这里首要关注基区电流$J_{nb}$，由于不考虑势垒区复合电流，因此有$J_{nb}=J_{ne}$。&lt;/p&gt;
&lt;p&gt;在漂移型晶体管中，$J_{nb}$不仅由扩散电流组成，还包括漂移电流。&lt;/p&gt;
&lt;p&gt;$J_{nb}=J_{d_{nb}}+J_{D_{nb}}=q\mu_{nb}n_{pb}(x)E_b(x)+qD_{nb}\frac{dn_{pb}}{dx}$&lt;/p&gt;
&lt;p&gt;值得注意的是，引起漂移电流的电场强度为一个常数。&lt;/p&gt;
&lt;p&gt;$E_b(x)=-\frac{kT}{q\lambda}$&lt;/p&gt;
&lt;p&gt;$\lambda=\frac{W_b}{\eta}$&lt;/p&gt;
&lt;p&gt;计算扩散电流时，由于直接使用浓度梯度计算已经不再现实。这里需要利用$J_{nb}=J_{ne}$，计算时用Gummel数$Q_b$代替$L_n N_A$。&lt;/p&gt;
&lt;p&gt;$J_{ne}=-\frac{qD_{nb}n_i^2}{Q_b}[\exp(\frac{qV_e}{kT})-1]$&lt;/p&gt;
&lt;p&gt;$Q_b=\int_0^{W_b}N_b(x),dx$&lt;/p&gt;
&lt;h1&gt;扩散型晶体管与漂移型晶体管的区别&lt;/h1&gt;
&lt;p&gt;在扩散型晶体管中，电子在基区主要通过扩散运动，而在漂移型晶体管中，电子主要通过漂移运动。由于在漂移型晶体管中内建电场加速电子向集电极移动，电子在基区的停留时间更短，响应速度更快。&lt;/p&gt;
</content:encoded></item><item><title>DigitalOcean入门机型Basic Regular $6评测</title><link>https://www.hidandelion.com/posts/do-basic-review/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/do-basic-review/</guid><pubDate>Fri, 09 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;DigitalOcean在海外论坛中一直是很热门的存在，因为相比于大厂的天价垃圾服务器和天价流量费，DigitalOcean则只需较低的价格即可买到入门机型的服务器而且还自带一定的流量包。那么DigitalOcean的服务器究竟性价比如何呢？今天就拿DigitalOcean的入门级DigitalOcean入门机型Basic Regular机型进行评测吧！&lt;/p&gt;
&lt;h1&gt;配置&lt;/h1&gt;
&lt;h2&gt;机型配置&lt;/h2&gt;
&lt;p&gt;由于512MB的机型在4202年实在是有点显得寒酸了，这次就选择一个1CPU+1GB的机型，这样也好和其他厂商的入门机型进行对比。&lt;a href=&quot;/posts/gcp-e2-micro-review/&quot;&gt;上一次评测的GCP&lt;/a&gt;记得是2vCPU(12.5%)+1GB的配置，还没看过的话不要错过！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里DigitalOcean没有明确说明1CPU究竟是指一个线程还是一个物理核心，不过我猜这大概率是一个线程，也就是1vCPU，0.5个物理核心。不过纠结这个也没太大必要，等一下给CPU跑个分就是了。&lt;/p&gt;
&lt;p&gt;由于套餐里面已经搭配好了CPU、内存、磁盘和流量，所以后面其实没什么特别需要配置的东西了。&lt;/p&gt;
&lt;h2&gt;备份配置&lt;/h2&gt;
&lt;p&gt;DigitalOcean还有一个独特的备份选项可供选择。支付20%的机型费用就可以每周备份1次，留存4个备份；支付30%的机型费用就可以每天备份1次，留存7个备份。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;单纯从存储量来说，日备份看上去要划算一些。从整体上来看这个备份还是相对来说便宜，可以考虑的（当然你要跟云存储比，不能跟网盘比），不过这回就没必要了。&lt;/p&gt;
&lt;h2&gt;网络配置&lt;/h2&gt;
&lt;p&gt;DigitalOcean可以一键启用IPv6，这一点还是相当方便的，要给个好评。大厂都是不默认启用IPv6的，如果要打开的话还得进行一系列繁琐的配置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;价格&lt;/h2&gt;
&lt;p&gt;不超出规定的套餐流量的话，就只要支付$6每月的固定套餐费用就可以了。超出套餐流量后是每$0.01/GB，价格也不算贵，大厂流量一般是这个的十倍还多。&lt;/p&gt;
&lt;h1&gt;评测&lt;/h1&gt;
&lt;h2&gt;流媒体&lt;/h2&gt;
&lt;p&gt;流媒体中规中矩，正常机房水平。不过竟然还可以不被Reddit封锁，这一点是还是比较令人意外的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;性能&lt;/h2&gt;
&lt;p&gt;这个CPU性能其实没有很强，1000分也是中低端的水平了，但也并不是差到能够明显感知的程度。内存的读写中规中矩。磁盘1.22GB/s的512k速度就是让人满意的SSD速度了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;网络&lt;/h2&gt;
&lt;p&gt;网络是2Gbps的上行和10Gbps的下行，速度还算是令人满意的，尽管2Gbps的上行可能会不敌大厂。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;总结&lt;/h1&gt;
&lt;p&gt;DigitalOcean的入门机型Basic Regular $6评测算是一个甜点的套餐吧，尽管CPU的表现稍微有些不足，整体来说没有明显短板的地方，1TB的流量也是相当够用，$6也算是一个比较实惠的价格。&lt;/p&gt;
&lt;p&gt;良好易用的控制面板和实惠的套餐都能带来不错的用户体验，可能不足的话就是灵活性不高，没法特别选择CPU强劲或是内存容量大的方案。&lt;/p&gt;
&lt;p&gt;让我给这款DigitalOcean的机型打分的话可能会给75分吧（跟&lt;a href=&quot;/posts/gcp-e2-micro-review/&quot;&gt;上一次评测的GCP&lt;/a&gt;比可谓是完完全全的碾压）。&lt;/p&gt;
</content:encoded></item><item><title>双极型晶体管BJT的直流电流关系与EM模型</title><link>https://www.hidandelion.com/posts/bjt-dc-characteristics-em-model/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/bjt-dc-characteristics-em-model/</guid><description>没人看系列之无聊晶体管碎碎念。</description><pubDate>Sun, 28 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在本文讨论双极型晶体管BJT的直流电流关系时，默认讨论NPN型晶体管。&lt;/p&gt;
&lt;h1&gt;电流关系图&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;电流组成关系&lt;/h1&gt;
&lt;p&gt;$I_e = I_{ne} + I_{pe}$&lt;/p&gt;
&lt;p&gt;$I_b = I_{pe} + I_{vb} - I_{cbo}$&lt;/p&gt;
&lt;p&gt;$I_c = I_{nc} + I_{cbo}$&lt;/p&gt;
&lt;h1&gt;电流放大关系&lt;/h1&gt;
&lt;p&gt;$I_e = I_b + I_c$&lt;/p&gt;
&lt;p&gt;$\alpha = \frac{I_c}{I_e}$&lt;/p&gt;
&lt;p&gt;$\beta = \frac{I_c}{I_b}$&lt;/p&gt;
&lt;p&gt;$\gamma = \frac{I_{ne}}{I_e}$&lt;/p&gt;
&lt;p&gt;$\beta^* = \frac{I_{nc}}{I_{ne}}$&lt;/p&gt;
&lt;h1&gt;Ebers-Moll模型&lt;/h1&gt;
&lt;p&gt;Ebers-Moll模型对载流子的扩散电流做了抽象，将电流分为了Forward和Reverse两个方向，并指出了连接它们的桥梁。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;$I_e = - I_{F0} [\exp(\frac{qV_{be}}{kT}) - 1] + \alpha_R I_{R0} [\exp(\frac{qV_{bc}}{kT}) - 1]$&lt;/p&gt;
&lt;p&gt;$I_e = - I_{F} + \alpha_R I_{R}$&lt;/p&gt;
&lt;p&gt;$I_c = \alpha_F I_{F0} [\exp(\frac{qV_{be}}{kT}) - 1] - I_{R0} [\exp(\frac{qV_{bc}}{kT}) - 1]$&lt;/p&gt;
&lt;p&gt;$I_c = - I_{R} + \alpha_F I_{F}$&lt;/p&gt;
&lt;p&gt;$\alpha_F$：Forward电流增益，表征从发射极注入到基极的电子，有多大比例能够到达集电极。&lt;/p&gt;
&lt;p&gt;$\alpha_R$：Reverse电流增益，表征从集电极注入到基极的电子中，有多大比例能够到达发射极。&lt;/p&gt;
&lt;p&gt;当忽略Reverse电流时，$\alpha_F$几乎可以近似为$\alpha$。&lt;/p&gt;
</content:encoded></item><item><title>双极型晶体管BJT非理想性能合集</title><link>https://www.hidandelion.com/posts/bjt-non-ideal-perf-collection/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/bjt-non-ideal-perf-collection/</guid><description>没人看系列之无聊晶体管碎碎念。</description><pubDate>Sun, 28 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;电压/电流相关&lt;/h1&gt;
&lt;h2&gt;Webster效应&lt;/h2&gt;
&lt;p&gt;发生在：基区&lt;/p&gt;
&lt;p&gt;原因：$I_b$向基区大注入&lt;/p&gt;
&lt;p&gt;结果：基区少数载流子浓度上升，集电区难以收集到载流子&lt;/p&gt;
&lt;p&gt;最终结果：$\beta$（$\beta = \frac{I_c}{I_b}$）降低&lt;/p&gt;
&lt;p&gt;影响趋势：$I_c \uparrow \rightarrow \beta \downarrow$（在$I_c$较大时）&lt;/p&gt;
&lt;p&gt;指标：$I_c \propto \exp(\frac{q V_{be}}{2kT})$（对比在$I_c$较小时$I_c \propto \exp(\frac{q V_{be}}{kT})$）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Early效应（基区调制效应）&lt;/h2&gt;
&lt;p&gt;发生在：集电结耗尽层&lt;/p&gt;
&lt;p&gt;原因：集电结偏压$V_{bc}$&lt;/p&gt;
&lt;p&gt;结果：耗尽层宽度变化，基区宽度变化&lt;/p&gt;
&lt;p&gt;最终结果：集电极电流变化&lt;/p&gt;
&lt;p&gt;影响趋势：$V_{cb} \uparrow \Rightarrow W_b^* \downarrow$&lt;/p&gt;
&lt;p&gt;指标：$V_A$（Early电压）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Kirk效应（基区展宽效应）&lt;/h2&gt;
&lt;p&gt;发生在：集电结耗尽层&lt;/p&gt;
&lt;p&gt;原因：发射区向基区大注入&lt;/p&gt;
&lt;p&gt;结果：耗尽区边界处因杂质电离产生的多数载流子浓度受到注入载流子的影响&lt;/p&gt;
&lt;p&gt;最终结果：耗尽区向集电区延伸，基区宽度变大&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;发射结复合电流影响&lt;/h2&gt;
&lt;p&gt;发生在：发射结耗尽层&lt;/p&gt;
&lt;p&gt;原因：发射结存在复合电流&lt;/p&gt;
&lt;p&gt;结果：$\gamma$降低&lt;/p&gt;
&lt;p&gt;指标：$I_{re}/I_{ne} \gg 1$时认为影响显著&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;形状/构造相关&lt;/h2&gt;
&lt;p&gt;发射结电流集边效应&lt;/p&gt;
&lt;p&gt;发生在：平面管发射结&lt;/p&gt;
&lt;p&gt;原因：发射结边缘与中心之间存在电阻&lt;/p&gt;
&lt;p&gt;结果：更多电流从发射结边缘通过&lt;/p&gt;
&lt;p&gt;指标：当发射结边缘与中心电势差$\Delta V &amp;gt; \frac{kT}{q}$时认为效应显著。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;发射结结面积影响&lt;/h2&gt;
&lt;p&gt;发生在：发射结&lt;/p&gt;
&lt;p&gt;原因：发射结与非本征基区（水平方向）存在电流&lt;/p&gt;
&lt;p&gt;结果：$\gamma$降低&lt;/p&gt;
&lt;p&gt;指标：$A_{jeo}/A_{je}^*$&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>如何升级甲骨文Oracle Cloud Infrastructure为付费账户</title><link>https://www.hidandelion.com/posts/oci-how-to-upgrade-to-paid-account/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/oci-how-to-upgrade-to-paid-account/</guid><pubDate>Sun, 28 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;背景&lt;/h1&gt;
&lt;p&gt;升级甲骨文OCI的付费账户可以享受：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;不需要与免费用户争抢Compute实例Capacity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;同时使用3个不同区域&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同时，升级到付费账户也不会丢失免费账户的Free Tier权益。&lt;/p&gt;
&lt;p&gt;如此诱人的perk，简直就没有不升级的理由！&lt;/p&gt;
&lt;h1&gt;升级流程&lt;/h1&gt;
&lt;p&gt;首先肯定还是要准备好信用卡或者借记卡，因为先要绑定支付方式才能升级（这不废话，要不怎么能叫“付费账户”）。&lt;/p&gt;
&lt;p&gt;然后就可以点击招摇已久的banner来升级了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;来到Upgrade and Manage Payment页面，一开始Payment Method下是没有卡片的，需要点击Add Payment Method添加一张卡片。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;添加完卡片会立刻扣费$100，由于我用的是美国卡，扣的是USD100。如果是中国卡的话应该会扣SGD100，嗯，毕竟主体公司都不一样。扣完就会秒退款。&lt;/p&gt;
&lt;p&gt;然后选择Pay As You Go栏目下的individual，勾选同意条款，点击Upgrade your account就可以完成升级。最后就是in progress漫长的等待咯～&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;大约5小时以后，Oracle就会发邮件告诉你新的服务已经添加咯～往下一翻有一大串激活的服务，怪不得那么慢。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;又过了40分钟，就收到升级成功的邮件了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;最后&lt;/h1&gt;
&lt;p&gt;接下来当然就可以快乐玩耍咯～想开几台ARM实例就开几台ARM实例，限制是不存在的～&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但是注意你的账单！&lt;/p&gt;
</content:encoded></item><item><title>如何删除GCP Logging中的日志 - 一次被GCP Ops Agent坑惨的经历</title><link>https://www.hidandelion.com/posts/gcp-how-to-delete-logging-logs/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/gcp-how-to-delete-logging-logs/</guid><pubDate>Sat, 27 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;上一次评测GCP飘了，以为已经将GCP的如意算盘谙熟于心，结果发现还是自己太年轻，不懂得社会的险恶。GCP你能不能别那么坑啊！&lt;/p&gt;
&lt;h1&gt;起因&lt;/h1&gt;
&lt;p&gt;VM Instances的instance详情页有个Observability（太擅长观察了故取Google特色名Observability），用来监控机器状态的。硕大的两个Install可太有诱惑力了，我以为Ops Agent就是一个简单的监控，监控一下memory和disk的，就开心地点了一下。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;不寻常的账单&lt;/h1&gt;
&lt;p&gt;第二天起来一看，账单里居然有$0.3待付金额，一开始我还以为是Free Tier的Credit还没来得及Apply，就没管。下午一看居然变成了$0.5。这样一算一个月我得花费$30，就算正价机器也没那么贵啊（按照上一篇文章应该在$10之内）！&lt;/p&gt;
&lt;p&gt;必须再吐槽一下Billing页面的Report，翻遍了所有页面都看不出是什么产生的问题。就这报表，只要有那么一点点关系的全给我分类到Compute Engine，还没有子分类。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;端倪&lt;/h1&gt;
&lt;p&gt;后来我手动搜索Log来到了Monitoring页面，终于发现了一些端倪。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;妙啊，Fluent Bit for logs和high-throughput  logging是吧，你是一点都不提价格啊。一看Logs Explorer，一千多条带有&quot;opsagent&quot;字样的Log，全是INFO级别的System Log，没什么信息含量（还那么贵！）。一千多条在计算机角度也不算很多，但是对GCP可是一大块肥肉呢！&lt;/p&gt;
&lt;h1&gt;解决方法&lt;/h1&gt;
&lt;p&gt;好吧，那接下来怎么办==看了一下文档，改Ops Agent的Config可以禁用Log（GCP你为什么要默认开启Log！我可没同意！），但是这太危险了，万一改了不生效或者还自带有其他收费项那可太麻烦了，干脆销毁了重开这台机器好了。&lt;/p&gt;
&lt;p&gt;为了防止已经生成的Log产生费用，并且满足一下我的小小强迫症，我还是想着删掉这些Log。于是再一次翻遍了Log相关的页面，硬是没找着删除的地方。你猜怎么着？根本就没有删除的地方，只能通过命令行删除！真有你的GCP，欺负我文化水平低是吧！下面我就详细说一下怎么删除。&lt;/p&gt;
&lt;h2&gt;打开Web Shell&lt;/h2&gt;
&lt;p&gt;点击Activate以后等它加载，要一点时间，可以先进行下一步。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;找到Project栏&lt;/h2&gt;
&lt;p&gt;就是搜索栏左边写着你的项目名称的复选框。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;记下Project ID&lt;/h2&gt;
&lt;p&gt;记下右边ID栏的当前Project ID，像我就是&quot;hidandelion&quot;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Web Shell切换Project&lt;/h2&gt;
&lt;p&gt;在Web Shell里，需要先切换到目前的Project才能执行命令。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcloud config set project &amp;lt;Project ID&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./7.png&quot; alt=&quot;7&quot; /&gt;&lt;/p&gt;
&lt;p&gt;成功会提示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Updated property [core/project].
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Web Shell删除Log&lt;/h2&gt;
&lt;p&gt;运行删除代码删除syslog，然后输入Y确认。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcloud logging logs delete projects/&amp;lt;Project ID&amp;gt;/logs/syslog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./8.png&quot; alt=&quot;8&quot; /&gt;&lt;/p&gt;
&lt;p&gt;成功会提示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Deleted [projects/&amp;lt;Project ID&amp;gt;/logs/syslog].
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里删除的只是占大头的syslog，如果要删除其他的，还得进入Logs Explorer，点开Expand this log entry。这里我是随便找了个Network Logging，实际上只需要删除Ops Agent相关的可疑Log就可以了。因为其他的已经全被我删了，就暂时拿这个当例子咯～&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./9.png&quot; alt=&quot;9&quot; /&gt;&lt;/p&gt;
&lt;p&gt;找到logName项，复制里面的内容。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./10.png&quot; alt=&quot;10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;再运行相应的指令删除。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcloud logging logs delete &amp;lt;logName&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除完成就可以了，虽然Log buckets还是会显示有storage，但是点进去实际上已经没有了（这又是什么奇怪bug啊喂）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./11.png&quot; alt=&quot;11&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;小贴士&lt;/h1&gt;
&lt;p&gt;遇到Ops Agent千万不要轻易开启，不仅仅是在上面的机器详情页面，开机的时候也千万不要勾选！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./12.png&quot; alt=&quot;12&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;总结&lt;/h1&gt;
&lt;p&gt;今天体验了GCP莫名其妙的收费项目和贴心的用户体验（指的是让你学习一下Shell指令，有助于你的Linux学习）。GCP，我饶不了你，这事可没完！&lt;/p&gt;
</content:encoded></item><item><title>谷歌云GCP入门机型E2.micro评测</title><link>https://www.hidandelion.com/posts/gcp-e2-micro-review/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/gcp-e2-micro-review/</guid><pubDate>Fri, 26 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天来评测Google Cloud Platform谷歌云GCP入门机型E2.micro。便宜的入门机型它到底能干什么，有几分实力呢？Google能否超越Apple，为我这样的贫穷人士带来全新的刀法体验呢？&lt;/p&gt;
&lt;h1&gt;配置&lt;/h1&gt;
&lt;h2&gt;机型配置&lt;/h2&gt;
&lt;p&gt;话不多说，机型选起！哇🎊，2vCPU+1GB内存的机型一定很高端吧！秒选上！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./1.png&quot; alt=&quot;1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但是，这0.25-2vCPU是个什么意思？琢磨很久，看文档也看不出所以然，那我就大胆猜测一下吧！应该是物理机上是1个核心，2个线程，切分为2个vCPU（也就是1个逻辑核心=1个vCPU），然后分给8个人用，每个人平均能分到0.25个vCPU，也就是平均0.125个物理核心，但是最高你能占满一整个物理核心，当然你还得征得邻居的同意（这怎么可能……）。&lt;/p&gt;
&lt;h2&gt;磁盘配置&lt;/h2&gt;
&lt;p&gt;好了，接下来就是选择磁盘了。选个标准磁盘应该没逝吧，大厂的标准怎么会和咱普通人一样呢，标准肯定就是精品的意思。要个最小的10GB磁盘。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;2&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;网络配置&lt;/h2&gt;
&lt;p&gt;网络方面整个标准网络层就行了，谁家VPS还不是走公网，要求要那么高干嘛！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;还有200GB免费传输呢！还是每个区域！多良心！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;（指的是超出后就可以免费帮你拆家的良心）&lt;/p&gt;
&lt;h2&gt;价格&lt;/h2&gt;
&lt;p&gt;大功告成，看一眼价格，嗯，是凉心价没错了，0.125 Core + 1GB memory也就卖6块钱（$6），谁家大厂没点倔强嘛！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;5&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;评测&lt;/h1&gt;
&lt;h2&gt;连接&lt;/h2&gt;
&lt;p&gt;经过一番精挑细选，终于可以开机进行快乐玩耍了。直接先用Web SSH连接一下吧，省得我再配置密钥了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;6&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这个Web SSH还是要表扬一下的，体验做得还不错，至少能复制粘贴已经是超越很多noVNC的Console了。&lt;/p&gt;
&lt;h2&gt;流媒体&lt;/h2&gt;
&lt;p&gt;流媒体中规中矩，正常机房水平。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./7.png&quot; alt=&quot;7&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;性能&lt;/h2&gt;
&lt;p&gt;这个性能才是真的最炸裂的环节。CPU得到了单核416，多核235才单核一半的好成绩，内存读写2GB/s更是还没我笔记本的SSD读写快，磁盘大概是100MB/s的读写水平。这个性能配置只能说是能开机，赚了！性能的劣势在使用的过程中感觉还是比较明显的，体现在很明显的命令执行的卡顿感。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./8.png&quot; alt=&quot;8&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;总结&lt;/h1&gt;
&lt;p&gt;这就是今天高端大厂Google Cloud Platform的E2.micro（等我复制一下广告词）：Featuring dynamic resource management to deliver reliable and sustained performance, flexible configurations, and the best total cost of ownership of any of our VMs. 怎么样，你心动了吗？赶紧下单成为终极冤大头吧！&lt;/p&gt;
&lt;p&gt;哦对了，忘记提到一件事，每个账户都可以免费开一台永久免费的E2.micro。这真是终极反转！一切又变得良心了起来！不过先别急着去开，只有三个特定美国区可以享受免费，不过磁盘可以开到30GB的标准磁盘（本文同款石头盘），建议仔细跟着其他博主的教程开！本文不是开机教程，难免会有不直观和疏漏的地方！&lt;/p&gt;
</content:encoded></item><item><title>如何使用growpart扩展Linux的系统分区容量</title><link>https://www.hidandelion.com/posts/linux-how-to-expand-system-partition/</link><guid isPermaLink="true">https://www.hidandelion.com/posts/linux-how-to-expand-system-partition/</guid><description>本文将介绍如何使用growpart，以在线扩展的方式进行Linux系统分区容量扩展。</description><pubDate>Tue, 09 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;背景&lt;/h1&gt;
&lt;p&gt;当我们为运行Linux系统的计算机进行磁盘还原或为主机更换更大容量硬盘时，有时会遇到系统分区小于磁盘大小的情况，从而无法有效利用整块磁盘，这时我们需要扩展Linux系统分区。为了最大可能简化操作，我们将采用在线扩展的方式，即可以先进入系统，在分区已挂载的情况下进行扩展。&lt;/p&gt;
&lt;h1&gt;操作&lt;/h1&gt;
&lt;h2&gt;查看磁盘和分区&lt;/h2&gt;
&lt;p&gt;使用以下指令以查看磁盘信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fdisk -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将输出磁盘和分区信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Disk /dev/vda: 2 TiB, 2199023255552 bytes, 4294967296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 744D726A-2AC1-7744-89B3-072E6920B57A

Device       Start      End  Sectors Size Type
/dev/vda1     2048     6143     4096   2M BIOS boot
/dev/vda2     6144  2103295  2097152   1G Linux filesystem
/dev/vda3  2103296 20971486 18868191   9G Linux filesystem
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这里，/dev/vda是我们的磁盘，可见我们的磁盘空间为2TB。&lt;/p&gt;
&lt;p&gt;使用以下指令以查看分区信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;df -h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将输出分区和目录信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Filesystem      Size  Used Avail Use% Mounted on
udev             24G     0   24G   0% /dev
tmpfs           4.8G  524K  4.8G   1% /run
/dev/vda3       8.8G  2.2G  6.2G  27% /
tmpfs            24G     0   24G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda2       974M   87M  820M  10% /boot
tmpfs           4.8G     0  4.8G   0% /run/user/0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可见，/dev/vda3是根目录所在分区，也是我们的目标系统分区。&lt;/p&gt;
&lt;h2&gt;调整分区表&lt;/h2&gt;
&lt;p&gt;使用growpart指令扩展分区，需要指定磁盘和分区编号。由于在上面的步骤我们已确认磁盘为/dev/vda，分区为/dev/vda3，使用以下指令以扩展/dev/vda3，注意在这行命令中，/dev/vda与3之间存在一个空格：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;growpart /dev/vda 3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将输出调整后的结果：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CHANGED: partition=3 start=2103296 old: size=18868191 end=20971486 new: size=4292863967 end=4294967262
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;写入文件系统&lt;/h2&gt;
&lt;p&gt;使用以下指令将对/dev/vda3的更改写入文件系统&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;resize2fs /dev/vda3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将输出调整后的内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/vda3 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 256
The filesystem on /dev/vda3 is now 536607995 (4k) blocks long.
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;检查&lt;/h1&gt;
&lt;p&gt;再次使用以下指令检查已完成的更改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fdisk -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将输出磁盘和分区信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Disk /dev/vda: 2 TiB, 2199023255552 bytes, 4294967296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 744D726A-2AC1-7744-89B3-072E6920B57A

Device       Start        End    Sectors Size Type
/dev/vda1     2048       6143       4096   2M BIOS boot
/dev/vda2     6144    2103295    2097152   1G Linux filesystem
/dev/vda3  2103296 4294967262 4292863967   2T Linux filesystem
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可见系统分区已更改为目标大小。&lt;/p&gt;
</content:encoded></item></channel></rss>