<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dev Tool &#8211; HU Xiaoxu</title>
	<atom:link href="https://blog.ihuxu.com/category/computer-science/dev-tool/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ihuxu.com</link>
	<description>a software engineer&#039;s blog</description>
	<lastBuildDate>Mon, 22 Sep 2025 08:14:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
	<item>
		<title>The Advantages of UV over PIP</title>
		<link>https://blog.ihuxu.com/the-advantages-of-uv-over-pip/</link>
					<comments>https://blog.ihuxu.com/the-advantages-of-uv-over-pip/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Mon, 22 Sep 2025 04:57:00 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[uv]]></category>
		<guid isPermaLink="false">https://blog.ihuxu.com/?p=12673</guid>

					<description><![CDATA[Let&#8217;s go through the advantages of uv (github) over pip with the following a few aspects. Positioning Performance Virtual Environment Support Dependency Resolution Cross-Platform Experiences In summary, while pip remains the standard and most widely adopted tool, uv offers a modern, high-performance alternative that simplifies Python package management. It&#8217;s still early days for uv, but it&#8217;s worth keeping an eye on as the ecosystem matures.]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/the-advantages-of-uv-over-pip/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>利用内网穿透 frp 工具实现外网链接（ssh）内网树莓派设备</title>
		<link>https://blog.ihuxu.com/the-use-of-intranet-through-frp-tools-to-achieve-external-network-access-to-the-network-raspberry-equipment/</link>
					<comments>https://blog.ihuxu.com/the-use-of-intranet-through-frp-tools-to-achieve-external-network-access-to-the-network-raspberry-equipment/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Tue, 17 Oct 2017 04:50:03 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Others]]></category>
		<category><![CDATA[FRP]]></category>
		<category><![CDATA[Original]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[SSH]]></category>
		<guid isPermaLink="false">http://blog.ihuxu.com/?p=9628</guid>

					<description><![CDATA[内网穿透原理 内网穿透（Net 穿透）也即端口映射，笔者粗暴理解是一种能够将外网机器与内网机器（外网无法直接访问的设备）建立通信的一种技术解决方案。 百度百科 尽管有许多穿越 NAT 的技术，但没有一项是完美的，这是因为 NAT 的行为是非标准化的。这些技术中的大多数都要求有一个公共服务器，而且这个服务器使用的是一个众所周知的、从全球任何地方都能访问得到的 IP 地址。一些方法仅在建立连接时需要使用这个服务器，而其它的方法则通过这个服务器中继所有的数据 —— 这就引入了带宽开销的问题。 具体原理详见百度百科=&#62;&#160;https://baike.baidu.com/item/NAT%E7%A9%BF%E8%B6%8A 需要资源 一台公网服务器（可以通过 IP 直接访问） 树莓派（也可以是电脑，以树莓派为例） 安装 本文以 frp v 0.13.0 为例（具体版本可以自己定，但不保证其他版本能够成功）。 笔者在 go 1.7.4 版本下编译 frp v 0.13.0 时会出现如下编译错误，根据 frp 作者留言，改用 go 1.8.3 版本编译。 *ht.Server has no field or method Close() 安装 golang 环境 由于 frp 工具是基于 golang 编写，所以需要安装 golang 环境。 以 go1.8.3 版本为例（亲测有效） 由于下载的是编译好的包，所以安装很简单。下载后，进行解压，并设置一些环节变量即可。 具体安装步骤详见：https://golang.org/doc/install 安装 frp 工具 启动 &#38; 使用 frp工具 使用起来很简单，只需要简单修改配置文件后，执行启动命令即可。 具体步骤详见：https://github.com/fatedier/frp/blob/master/README_zh.md]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/the-use-of-intranet-through-frp-tools-to-achieve-external-network-access-to-the-network-raspberry-equipment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>工作效率之动态 IP 域名化篇</title>
		<link>https://blog.ihuxu.com/work-efficiency-dynamic-ip-to-domain-name/</link>
					<comments>https://blog.ihuxu.com/work-efficiency-dynamic-ip-to-domain-name/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Mon, 13 Feb 2017 13:51:57 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Others]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Launchd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Original]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=9460</guid>

					<description><![CDATA[在公司里，RD 们不免会使用一些代理服务来进行抓包操作。那么就需要获取代理服务器（一般为自己的电脑）的内网 IP。然而，这个内网 IP 并不是固定不变的。所以，每次配置代理 IP 时就略显麻烦。那么，下面就来聊聊如何解决这个尴尬，提升效率。 方案 将非固定 IP 实时解析到域名中。利用阿里云的域名解析开发者 API 进行定时的更新。其中的定时用本机（Mac）的 Launchd 实现（类似 Linux 下的 Crontab）。 原材料 步骤 下载阿里云 SDK &#38; 编写更新脚本 代码库：https://github.com/aliyun/aliyun-openapi-php-sdk.git 官方的接口文档：https://help.aliyun.com/document_detail/29774.html?spm=5176.doc29740.6.615.ADurH2 其中有个简要的文档，确实文档比较“简陋”，还会看到 github 中 issues 骂娘的。 在调用使用 SDK 编写脚本的过程中，会用到一个秘钥。这个秘钥可以到阿里云的管理控制台中获取。如下图： 配置 Mac 的 Timed Job 打开 Mac 终端，进入目录 /System/Library/LaunchDaemons 下。会看到很多 plist 为后缀的文件。每一个文件都是一个定时任务。具体的定时任务的写法，请参见苹果开发中中心文档：Scheduling Timed Jobs 结束语 这样一来，在任何情况下配置代理时填入一个固定的域名就搞定了。其实，除此之外还可以把一些有变动的或者不好记的IP都解析成域名，这样在使用时会顺手些。比如登陆一些开发机： 文章来源：工作效率之动态IP域名化篇]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/work-efficiency-dynamic-ip-to-domain-name/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Powerline 插件安装之 Vim 篇（Mac）</title>
		<link>https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/</link>
					<comments>https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/#comments</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Thu, 23 Jun 2016 07:23:57 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Original]]></category>
		<category><![CDATA[Powerline]]></category>
		<category><![CDATA[VIM]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=912</guid>

					<description><![CDATA[Powerline 是 Vim 的状态栏插件，同时也提供状态栏和提示窗口功能给其他一些应用，包括 zsh，bash，Tmux，IPython，Awesome，i3 和 Qtile。这篇文字只谈 Vim 上的安装。 环境与工具 系统：OS X EI Capitan version 10.11.5 终端：Terminal Vim ：v7.4.1914 Xcode: 7.3.1（Xcode 的版本过低会影响一些依赖库的安装，我在 6.5 的情况下安装一些软件会出些问题，避免麻烦升级下） Python：3.5.1 源码： python: https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz vim: https://github.com/vim/vim/archive/v7.4.1949.tar.gz 安装 Python ./configure&#160; --prefix=/usr/local/python351 make &#38; make install Vim Vim 的安装需要使用 Python 的配置 ./configure --prefix=/usr/local/vim741949 --enable-multibyte --with-tlib=ncurses --enable-cscope --with-features=big --with-python3-config-dir=/usr/local/python351/lib/python3.5/config-3.5m --enable-pythoninterp make &#38; make install 字体 将源码（https://github.com/powerline/fonts）clone 到本地后，执行如下命令： ./install.sh 配置 .vimrc 我是用 Vundle 来管理 Vim 插件的，所以需要配置如下项: Plugin 'powerline/powerline'&#160; 在 Vim<div class="read-more"><a class="btn read-more-btn" href="https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/">Read More</a></div>]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Vim 使用技巧之只有用了才会懂“最好的 IDE 是 Vim”</title>
		<link>https://blog.ihuxu.com/once-you-have-used-vim-you-would-think-other-ides-are-so-bad/</link>
					<comments>https://blog.ihuxu.com/once-you-have-used-vim-you-would-think-other-ides-are-so-bad/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Mon, 06 Jun 2016 11:16:19 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Original]]></category>
		<category><![CDATA[TMUX]]></category>
		<category><![CDATA[VIM]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=865</guid>

					<description><![CDATA[半年前，我还在诸如 Eclipse、ZendStudio 等 IDE 里徘徊。然而，这半年对于 Vim 的使用，不得不说，Vim 的效率是更高的。代价是需要时间来自定义并熟悉自己的 Vim。 这里，只写下迄今为止对于 Vim + Tmux 的使用感受，以及展示 Vim 的使用技巧（至于如何入门 Vim 请自行 Google）。 为什么要用 Vim？ 随时随地，摆脱环境的束缚，你只需要一个终端（Terminal）。 你不必在键盘和鼠标之前来回切换（我压根就觉得鼠标是不服务于“编码工作”的产品），所有的操作都在指尖下的按键。 高程度的自定义，所以不要来拷贝他人的配置文件，很伤。 其他 IDE 中的功能在 Vim 里基本能找到替代品，幸福指数飙升~ 耳听十遍，不如亲眼一见 winmanager, ftaglist, neardtree, bufexplorer和tmux等的应用 ctrlp的应用 Vim 使用技巧 看到好多人，为了学习技术买了 n 多本书。可是有没有考虑过，书本带来的学习效果真的会高于互联网学习方式么？为什么要买那么多书呢？ 个人而言，对于互联网技术，更适合我的方式是 Google + 社区 + Github + 等等。所以，在 Youtube 上的两个关于 Vim + Tmux 的视频我推荐给大家，我已经传到土豆上了。 Vim + Tmux: http://www.tudou.com/programs/view/WqYvxcISogQ tmux:&#160;http://www.tudou.com/listplay/eLwVUsV5A-M/3irTcoFS19k.html 建议 用Vundle来管理你的插件 不要拷贝其他人的配置文件 看完这篇文章的疑问利用google来解决（如果你愿意等待，可以在下方留言）]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/once-you-have-used-vim-you-would-think-other-ides-are-so-bad/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>关于 rsync 工具的安装、配置与进行文件同步与备份的使用流程</title>
		<link>https://blog.ihuxu.com/synchronization-and-backup-process-installation-and-configuration-files-on-rsync-tools/</link>
					<comments>https://blog.ihuxu.com/synchronization-and-backup-process-installation-and-configuration-files-on-rsync-tools/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Wed, 02 Mar 2016 10:04:13 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Others]]></category>
		<category><![CDATA[Original]]></category>
		<category><![CDATA[RSYNC]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=746</guid>

					<description><![CDATA[安装 linux yum install rsync 配置 编辑文件: vim /etc/xinetd.d/rsync 内容如下： # default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = no flags = IPv6 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } 创建配置文件 touch /etc/rsyncd.conf 内容如下 # rsync 服务执行的所属用户 ID<div class="read-more"><a class="btn read-more-btn" href="https://blog.ihuxu.com/synchronization-and-backup-process-installation-and-configuration-files-on-rsync-tools/">Read More</a></div>]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/synchronization-and-backup-process-installation-and-configuration-files-on-rsync-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Git 与 SVN 的使用感受</title>
		<link>https://blog.ihuxu.com/the-feeling-of-using-the-git-and-the-svn/</link>
					<comments>https://blog.ihuxu.com/the-feeling-of-using-the-git-and-the-svn/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Tue, 19 May 2015 05:40:52 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Original]]></category>
		<category><![CDATA[SVN]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=203</guid>

					<description><![CDATA[工作环境需要，分别接触了 Git 和 SVN 版本控制工具。接触不久，尽管这两种工具都不是很熟悉，目前仅能达到满足简单的工作需求（有时还需要查引擎）。但，还是有一些感受以记录。 分支（branches）与里程碑（tags） Git 的分支和里程碑很有趣和简单，可以快速地在当前工作区切换不同的分支和里程碑。 SVN 的分支和里程碑本身就是一个目录（拷贝），目录下分别有一个 .svn 的文件夹以存储版本信息。 所以，SVN 切换分支很麻烦，需要切换工作区(每一个工作区只对应服务器的某一分支）。而 Git 却很方便。 集中式与分布式 这个事情和上面的分支和里程碑是有重叠的地方的。 Git 采取的是分布式。简单的说就是每台 checkout 过代码的笔记本上都有着一个完整的代码库。 而 SVN 却是集中式的，只有一个是代码仓库，就是服务器。 所以，Git可以本地提交，SVN需联网提交。 Git 是没有中心服务器的，每个人机器上都是一个完整的库，我们平时开发代码时的中央服务器其实和我们自己机器上的库内容是完全一样的（格式有点不同，是 bare 的）。虽然平时大家都是将代码提交到中央服务器上再统一pull别人的代码，但实际情况你可以总是 pull 张三的库，然后 push 给李四等等操作。个人认为去中心化是 Git（也包括其他分布式 VCS）最伟大的改变。去中心化意味着没有权威、没有主力，所有人都是平等的。这概念本身看起来好像没什么，但实际对社区影响是巨大的，去看看 http://github.com 上的fork功能，你可以fork任何一个你喜欢的项目，接着按自己的喜好修改成自己的项目，或是发起 pull request 请原作者 merge 你的功能到他们项目里去（这同样也得益于 Git 另一项与 SVN 很大不同的功能——分支策略），而且大多数开源项目都会鼓励你去 fork 它们。这里面没有权威，没有主从，所有人只要有兴趣都可以在其他人的基础上去构建更强大或是更有领域针对性的项目。大家不是为了开发某个项目而来，而是为了贡献更强的功能给社区，这样最终的项目将是整个社区所有人共同努力的结果，将生生世世繁衍不息。当然，去中心化也可能会引发一些问题，比如 Linux 的各种发行版本有时候让人难以抉择，但相信市场之手会帮我们出选择。 本地版本控制系统 分布式的版本控制系统 集中式的版本控制系统 参考 如何理解 Git 的分布式？ Git与svn的区别 蒋鑫：为什么 Git 比 SVN 好 GIT和SVN之间的五个基本区别 Git详解之一：Git起步]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/the-feeling-of-using-the-git-and-the-svn/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
