Change the mirror of HomeBrew to AliYun’s

简介Homebrew 是一款自由及开放源代码的软件包管理系统,用以简化 macOS 系统上的软件安装过程。它拥有安装、卸载、更新、查看、搜索等很多实用的功能,通过简单的一条指令,就可以实现包管理,十分方便快捷。配置方法首先确保你已经安装好了 Homebrew 了, 如果没有, 请参考 OPSX 指引页的 Homebrew 文档;然后你只需要粘贴下述命令在对应终端运行。 Read More

Exuberant Ctags Manual

Thectagsandetagsprograms (hereinafter collectively referred to asctags, except where distinguished) generate an index (or "tag") file for a variety of language objects found infile(s). This tag file allows these items to be quickly and easily located by a text editor or other utility. A "tag" signifies a language object for which an index entry is available (or, alternatively, the index entry crea... Read More

Mac(Linux)下解压(Unzip)文件时出现乱码解决方案

由于zip格式中并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此,导致这些zip文件在Linux下解压时出现乱码问题,因为Linux下的默认编码是UTF8。Python方案这个方案很简单,因为如果你是*nix系统,那么python环境很有可能已经装好了。如果没有安装的话,可以到下面地址下载对应的安装包https://wiki.python.org/moin/BeginnersGuide/Downloa然后,创建python脚本文件myunzip.py,并写入如下内容[code lang="python"#作者:Latm Ak#链接:https://www.zhihu.com/question/20523036/answer/3522592#来源:知乎#著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。#!/usr/bin/env pytho... Read More

跟我一起写Makefile

概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的集成开发环境(integrated development environment, IDE)都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,并且按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为ma... Read More

内网穿透工具的原理与开发实战

在我国,由于网民众多,运营商无法保证为每一个宽带用户提供全球唯一的公网IPv4地址。因此很多用户会发现通过路由器端查看到的WAN端IP与百度“IP”关键词所得到的IP不一致,并且前者的IP为一个私有IP。而还有一些情况下,公网IP比较昂贵,企业虽然本身也持有少量的独立的公网IP,但是由于成本限制无法为企业内每一台主机都提供一个公网IP,或者内网并不是所有服务都需要暴露到公网中进行访问,那么企业有可能就会使用NAT技术将大量的内网IP通过一定规则映射到公网IP上。而最常见的其中一种技术就是NAPT,也叫“网络端口地址转换”。因为一般一个服务都是通过一个端口来提供,因此通过这种方式可以将特定的服务通过特定的规则开放到少量的公网IP上。 Read More

利用内网穿透frp工具实现外网链接(ssh)内网树莓派设备

内网穿透原理内网穿透(Net穿透)也即端口映射,笔者粗暴理解是一种能够将外网机器与内网机器(外网无法直接访问的设备)建立通信的一种技术解决方案。百度百科尽管有许多穿越NAT的技术,但没有一项是完美的,这是因为NAT的行为是非标准化的。这些技术中的大多数都要求有一个公共服务器,而且这个服务器使用的是一个众所周知的、从全球任何地方都能访问得到的IP地址。一些方法仅在建立连接时需要使用这个服务器,而其它的方法则通过这个服务器中继所有的数据——这就引入了带宽开销的问题。具体原理详见百度百科=> https://baike.baidu.com/item/NAT%E7%A9%BF%E8%B6%8需要资源一台公网服务器(可以通过IP直接访问树莓派(也可以是电脑,以树莓派为例安装本文以frp v 0.13.0为例(具体版本可以自己定,但不保证其他版本能够成功)。笔者在go 1.7.4版本下编译frp... Read More

禁止tmux窗口自动命名

关于tmux的多窗口,用起来可谓非常方便。但,也许在默认的tmux配置下,一样和我被一个小问题困扰。那就是,tmux的窗口名称总是会随着执行的命令不同而变动。关于这一点,可用如下的方式来解决更改tmux配置文件打开~/tmux.conf文件,增加(或修改)如下内容[code lang="shell"set allow-rename of[/code更改oh-my-zsh配置文件当然,如果你在用oh-my-zsh的话。那么,还需要进行如下修改打开~/.zshrc文件,增加(或修改)如下内容[code lang="shell"DISABLE_AUTO_TITLE="[/code参考文章:https://stackoverflow.com/questions/38543763/tmux-will-not-stop-auto-renaming-window Read More

TDD(测试驱动开发)的好处

你会更加站在用户的角度去看你将要完成的产品,你要尽可能想到用户所有进行的操作。而不是从程序员的角度想用户应该会如何去使用我们的产品。测试用例是在对功能进行测试。在写代码之前先写测试用例,可以对我们编写代码提供指导性的参考。防止我们漏掉一些功能。它使我们对自己代码有了信心,因为我们事先设计好的所有测试用例都Pass了。如果在更改代码后测试用例不能通过,我们可以根据不能通过的测试用例精确的定位问题,并轻而易举的解决的这个bug。哈!我们的一整套完备的测试用例在这里替我们把关(把的什么关?),我们就可以十分安全的使用极限编程的另一个最重要的工具——重构。重构改变的是代码的内部结构,而不会改变外部接口功能。知道在做重构时测试用例是把的什么关了吧!很明显,测试用例是保证我们在进行重构时,不会影响到代码的外部接口功能。所以我刚刚说,我们进行的重构是十分安全的。基于第5点,我们找到了重构的信心,必要时候... Read More