如何在命令行中使用 proxy

国内的网络形势你懂的,要翻墙,无法是 VPN 或者 proxy。我个人还是用 proxy 比较多,浏览器里装个插件就能自动适应。但是那只是针对浏览器,命令行也很常用,遇墙就会卡着不动了。

有一个软件可以帮助你在 Command Line 里使用 proxy,叫 ProxyChains-NG (new generation)

在 Mac 上安装超简单(只要你机器上装好了 brew

brew install proxychains-ng

==> Downloading https://downloads.sourceforge.net/project/proxychains-ng/proxychains-4.7.tar.bz2
 ######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/proxychains-ng/4.7 --sysconfdir=/usr/local/Cellar/proxychains-ng/4.7/etc
==> make
==> make install
==> make install-config
==> /usr/local/Cellar/proxychains-ng/4.7: 9 files, 92K, built in 10 seconds

其它平台的安装大同小异,先找找有没有一个命令能搞掂的,没有的话参考一下其文档的 Installation 部分。

然后,做一个简单配置,打开配置文件

vi /usr/local/etc/proxychains.conf

视乎你的安装方式不同,配置文件的地方略有不同,但会遵从平台的一般规范,例如在 Linux 上安装,配置文件的位置可能在 /etc/proxychains.conf

打开配置文件之后,略过前面所有,直奔最后一行,默认配置是使用 tor 的,根据你机器上 proxy 的种类配置好就可以了。常见的配置

http    127.0.0.1  8080
socks5  127.0.0.1  1080

其实上面几行就有 example ,找到合适的照抄就是了。

最后,使用也非常简单,只要在命令前面加个 proxychains4,比如

proxychains4 telnet targethost.com

PS. 还有个名字接近但更加老牌的同类软件, ProxyChains ,使用方法几乎一样。

栅格系统计算器

栅格系统(Grid System)的辅助工具不少,而那些工具多数让人填栏宽,间距,栏数这些。但是我在实际应用栅格系统的时候,是知道页宽并估计 12 栏会比较适合,虽然有公式去计算,都会觉得麻烦。

为什么就没有这么一个工具:输入页宽和分栏数,自动计算出所有可能的情况呢?因为不会有半个像素的情况,精准到像素的话,还是可能有几种情况的,还夹杂一些不实际的情况。那么根据具体效果去选择,会比埋头计算然后看效果要方便得多。

于是做了这个 webapp:Grid System Calculator
grid-system-calculator

参考了 Bootstrap960 Grid System 两种 CSS 实现方案,感觉更加倾向于 Bootstrap 的方案,于是参照其做法,用于生成显示效果。

为了方便 Bootstrap 的用户,以其参数配置方式输出具体参数。也提供了基于 960 Grid System 的 CSS 下载服务链接(引用 grids.heroku.com 的服务)。

这个 栅格系统计算器 采用 MIT 协议开源使用。

TimeMachineEditor

Time Machine 是个好东西,使用上也极其便利,基本上只有一个配置选择,ON / OFF。一旦选择 ON 并连接好外接设备之后,后面的事情就不用操心了。

为什么 Time Machine 没有地方让我们自己去设定备份周期呢?也许设计本意是好的,只要备份设备有空间,免得太费神。只是,喜欢折腾的人就喜欢折腾。一番 google 之下,找到了这个 TimeMachineEditor

TimeMachineEditor 使用起来特简单,可以选择定期Interval)的方式,可以设定每隔 N 个小时备份一次;也可以选择日程定期Calendar Interval)的方式,比如每天的什么时候,每周星期几,每个月几号。但是只是这样设定是还不够的,必须先关闭了 Time Machine 的自动备份,并且开启它自己的开关,才会生效。

这里我觉得这个软件的 UI 设定是有点问题的。左下角的开关,和右下角的 Apply 按钮两个都存在的会让我感觉混乱,必须看一下 FAQ 才搞清楚到底是怎么一回事。而且,如果它可以在我们选择了启用的时候自动关闭 Time Machine 那就更好了。像它这样简单的功能的软件,在打开软件的时候有个提示就可以让用户更加清楚怎么操作了。而且只需要三个按钮就够了,开启ON),应用设置Apply)和 关闭OFF)。一开始只有开启按钮,开启了之后,变成两个按钮,应用和关闭。这样操作起来更加自然。

TimeMachineEditor 的功能还是不错的,还是免费的哦。

小工具:生成半透明背景色的 CSS 代码

如果希望使用半透明背景色,又觉得用24-bit PNG 太笨重,RGBA 这个时候就可以帮到你了。这个来自于 CSS3 的好东西。

应用它还有个最大的好处是,不用担心设置半透明背景会一刀切影响到子元素的透明度。

实现方案与兼容性见这篇 blog

就是应用起来,不是那么的方便,涉及到一些数值换算,比如通常我用十六进制的颜色值,小数表示的 alpha 值,而十进制的 RGB 颜色值和十六进制的 alpha 值就显得很特别,每次都进行换算比较不符合懒人的做法。

于是就有了这个小工具页

还有就是实现细节上和上面的 blog 介绍的有点区别。

欢迎使用。Enjoy!

Maven-jetty-plugin 中多 webapp 资源目录的配置问题

开发中经常用到 maven jetty:run,特别是它支持 多个 webapp 资源目录 的特性,在开发环境中相当有用。比如,src/main/webapp 是 prod 的资源,而有些开发或者测试时用到的资源可以安心的放在 src/test/webapp。可以 参考这里 详细了解怎么使用。

但是,迁移了环境之后,发现它总是报错:

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to configure plugin parameters for: org.mortbay.jetty:maven-jetty-plugin:6.1.22

    (found static expression: 'src/main/webapp,src/test/webapp' which may act as a default value).

Cause: Cannot assign configuration entry 'resources' to 'class [Lorg.mortbay.resource.Resource;' from 'src/main/webapp,src/test/webapp', which is of type class java.lang.String

但是奇怪就在于,在 eclipse 的 maven 插件里面报错,但在命令行执行却没有问题。基于懒人原则,只要有路可走,不深究这个问题。可是当我再一次迁移至 linux 环境下时,命令行报错了。无路可逃的我只好 向 google 求救

经过一番扫描,发现有先行者了,评论将矛头指向 JAVA 的版本以及操作系统,还有提供了一个可以尝试的修改:

<baseResource implementation="org.mortbay.resource.ResourceCollection">
    <resourcesAsCSV>src/main/webapp,src/test/webapp</resourcesAsCSV>
</baseResource>

试之,可行。这是传说中的 maven overloading bug。文中还提到了和 contextPath 的设置有关,敬请留意。
很多小蚜虫

Jscombiner 0.4

另一片天空

乱贴图:1月2日 网师园


分析新的需求,确实需要增强 jscombiner 了。之前写了一半,时间不够,大家急着看效果。今天把另外一半补上。再修补一下,可以升级到 0.4-SNAPSHOT 了。工具,好用是最实在的。

这次主要是增强了 classpath 的概念。原先使用时不需要设置根类路径,根据文件中的 @class 声明来反向定义根类路径。相应地,入口调整为 buildHierarchy(String className)。外表看来变动很小,而且实现着一样的效果,但是里面整个寻址方式都变了。

代码本身没什么值得深究的。不过结构变了。几番修改,有些共通点:

  1. 重要的功能需要规划
  2. 实现的进度是看需求的
  3. 不到最后不得不修改结构,不会乱动
  4. 测试用例需要有一定的抽象
  5. 重构很重要
  6. 结构发生变化,重写比重构快

Jscombiner

为自己写个工具 Jscombiner,除了帮助自己高效完成任务,可以自娱自乐,还可以开源,和别人分享。

这个工具前一个版本是命令行方式的,一方面技术所限,另一方面是一直坚持认为前台和后台开发是可以而且应该分开进行的。

当然思考的结果是会变的,该分开的还是分开,但有时后台也应该为前台开发提供一些帮助,而单纯的apache httpd提供不了,也有想过用asp, php,但是按照目前的态势,java应该更熟手一点。而且我主要是想和公司的其它同事分享这种开发方式,他们的机器上大多有tomcat而没有apache。

Jscombiner 的基本目标就是减少程序员开发 javascript 项目时所需要投入的管理成本。让 javascript 脚本采取自描述的方式来方便进行管理。因此,开发者可以在开发过程中,随心所欲地更新脚本,而无需担心重构或者脚本规模增长所带来的管理成本。是不是已经有同样的东西存在,我不确定,有是正常的,多个选择,多个竞争,才会有进步的。也许是有开发者像我这样不善推广的。

现在的状况是基本功能以及有了,自己一直在用,我期望的使用感受是感觉不到它的存在。

不过,不是为了做这个东西而做的,还有其它的目标任务,而且只有我一个人在瞎搞,而且主要的更新都是针对自己的实际应用需求的(我相信我所遇到的问题,其它人也会在某个时刻遇到),所以更新会比较慢。

等当前任务完成了,再做一个example出来。不过其实想想也很简单的,mvn archetype:generate一个项目出来,加入依赖,将脚本丢进去,然后mvn jetty:run,立马就可以着手开发了。

关于这个项目的改进计划会在Issue里面发起。目前想到的一个就是先实现前一版本中的一个功能,合并大脚本,这个应该不难,只是怎么提供出来,会更实用,更有趣呢?敬请期待啦!

如何批量修改MySQL表的Collation

Phoca Changing collation tool

Phoca Changing collation tool


刚装上drupal,发现自动安装好后,输入的中文是”?”,直觉说是编码问题。

于是打开phpMyAdmin一看,果然,数据库及其表的 collation 均为 latin1_swedish_ci ,欲改之。

但表太多,手动,费时失事,即使脑海中立刻浮现出 excel 这个伟大的工具,我也先google一下。

还真的有,从 这里 发现这个名叫 Phoca Changing Collation 的php工具,它自我介绍:

“The Phoca Changing collation tool changes the database collation of database, tables and columns.”

试之,输入数据库连接信息,选择目标collation,提交之后稍等片刻就搞定了。
不过,它不会帮忙做数据转换,那是另外一个问题了。

心动?官方下载 或者 本站下载