2011年09月16日 18:16
UPDATE:
用dnsmasq,把需要自定义的IP放在/etc/hosts文件中即可。可以更简单的满足类似需求。
有的时候我们需要使用特定的IP访问特定的网站。现在比较流行的方法是修改hosts文件。但这方法需要对每一个客户端做修改,比较麻烦。为了方便起见,我在自己的服务器上尝试了配置DNS服务器来为特定网址提供特定IP的方法。
首先安装bind,在Ubuntu服务器上当然就是:
sudo apt-get install bind9
然后我们将服务器先配置成缓存模式,在 named.conf.options 文件中增加以下内容:
forwarders {
8.8.8.8;
8.8.4.4;
};
allow-recursion { any; };
其中forwarders是将DNS请求转发,allow-recursion是设置客户端的访问权限,如果是内网使用,也可以设置网址段。
然后我们使用一个新的配置文件 named.conf.redirect 专门处理特定网址转发请求。在named.conf中增加一句:
include "/etc/bind/named.conf.redirect";
然后新建一个 named.conf.redirect 文件,将特定的网址变成master类型(由本机处理):
zone "plus.google.com" {
type master;
file "/etc/bind/redirect/zone_plus.google.com";
};
然后我们去 /etc/bind/redirect 目录下新建一个 zone_plus.google.com 文件,配置DNS规则,简单起见,我们可以这样配置:
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 1.2.3.4
* IN A 1.2.3.4
上面的部分可以作为模板,关键就是配置 @ 和 * 两个A地址解析而已。其中 * 可以作为泛域名配置,匹配全部的子域名。
that's all.
注:在named.conf.redirect里可以配置多个zone,他们使用的规则file可以相同也可以不同,可以视情况而定。
注2:如果DNS服务器在国外,这样做仍然无法解决DNS污染的问题。
注3:文中所用IP为演示用,并非真实IP。
推送到[go4pro.org]
2011年04月23日 00:09
升级到Ubuntu 11.04之后,每次做hg操作都会出现一个warning信息:
warning: fanfoudroid.googlecode.com certificate with fingerprint 34:4b:90:e7:e3:36:81:0d:52:1f:10:c0:4c:98:66:90:4a:9e:05:c9 not verified (check hostfingerprints or web.cacerts config setting)
不胜其烦。
今天终于忍不住去找了一下解决方法:
http://kiln.stackexchange.com/questions/2816/mercurial-certificate-warning-certificate-not-verified-web-cacerts
Debian/Ubuntu
On Debian and Ubuntu you can use this global configuration:
[web]
cacerts = /etc/ssl/certs/ca-certificates.crt
2011年03月16日 10:59
这篇似乎没有什么技术含量,就不收录到go4pro了。
虽然写着(一),但是我自己也不知道能写到几,也许就这么一篇吧。
那天看到pypy进了python.org官网的Download下载区,成为了Alternative Implementations的一员,心头又痒了。于是打算把自己的python环境切换成pypy,用上一阵子,如果好用,以后就这么用了,如果实在不好用,那就换回来,也没什么了不起。
先在工作电脑的Windows系统上折腾。安装没什么好说的,下载解压配置路径,一切OK。
写了几行代码,也没什么不一样,只是把原来的python命令改成了pypy。
然后想起来自己有一个基于web.py的小页面,要不就把它跑起来吧。
pypy server.py 失败。说web.py没安装。好吧,去web.py的安装目录,pypy setup.py install,搞定。
再来,还是失败,说sqlite3.dll加载错误。原来pypy没有自带dll,去sqlite网站下载sqlite3.dll放到系统路径,搞定。
再来,还是失败,说Mako库没有安装。囧。好吧,去折腾mako库。mako推荐是使用easy_install安装的,但是pypy貌似没办法折腾出来,于是就下载了源码,用pypy setup.py install的方式安装。其中有一个库给出了warning,说无法编译带C扩展的部分,改用纯python的模式编译成功。并且给出了一个错误码。开始还以为是安装失败了,后来一看,似乎已经装上了。而且尝试运行了一下,也没有问题。
虽然第一个脚本迁移成功,不过感觉还是存在很多侥幸因素的。主要是第三方库的问题,如果第三方库用到了C-API,极有可能会安装失败。不知道会对未来的工作产生多大的影响,再用一段时间试试了。
2011年03月08日 14:01
(本文收录于[go4pro.org])
一直很不喜欢使用Word做文档制作工具。除了平台相关性太严重之外,二进制文件也给版本管理带来了很多麻烦。于是这次在新的项目里,就尝试使用格式化文本制作工具。
选工具的时候,在asciidoc和txt2tags之间犹豫了一下。最终选择了txt2tags。有几个理由:
- asciidoc从功能上来说比txt2tags强大很多,但是强大的功能带来了写作时的不流畅感,你要在内容之外考虑太多的东西,非常不舒服。而且其实对于我写的大部分文档来说,txt2tags够用了。
- txt2tags工具链配置简单,编译速度非常快。
- txt2tags我之前用过,比较熟悉。
txt2tags的语法规则其实没几条,去网站上看一下,10分钟就可以学会了。所以这一点我就不罗嗦了。txt2tags可以直接产生网页,我之前的很多文档也是用它写的。这个也没什么好说。
但是公司文档用html一个是不方便,另外一个也显得太不正式。所以,我需要一个工具链,来把它转换成PDF。
txt2tags不支持直接到PDF的转换,但是它可以转换成很容易生成pdf文件的latex格式。所以我就非常自然的想走 txt2tags -> latex -> PDF 这条路了。
首先去下载了了一个CTEX安装包,避免在latex中文问题上做过多的纠缠。
然后将txt2tags文件转换成latex文件:
python "d:\Program Files\txt2tags-2.6\txt2tags" -t tex README_deploy.t2t
没错,Windows下就是这么麻烦,在Linux下简单很多:
txt2tags -t tex README_deploy.t2t
就行了。不过还好我们可以写脚本,这个下面再提。
这样会生成 README_deploy.tex 文件,但是这个文件默认是无法编译的,因为里面没有引用中文的相关包。所以我们需要对这个tex文件做一些预处理。我写了一个简单的python脚本来自动完成这件事:
#encoding:utf-8
import sys
# 在\usepackage{graphicx}的后面加上一行\usepackage{CJKutf8}
# 将\usepackage[urlcolor=blue,colorlinks=true]{hyperref}
# 替换成\usepackage[unicode,urlcolor=blue,colorlinks=true]{hyperref}
# 用于支持中文书签和目录
# 在\begin{document}的后面加上一行\begin{CJK}{UTF8}{song}
# 并加上\CJKcaption{zh-Hans}用于生成中文目录
# 在\end{document}的前面加上两行:\newpage(中文目录hack)和\end{CJK}
input_file, output_file = sys.argv[1:3]
content = open(input_file, "rt").read()
content = content.replace("\\usepackage{graphicx}", "\\usepackage{graphicx}\n\\usepackage{CJKutf8}")
content = content.replace("\\usepackage[urlcolor=blue,colorlinks=true]{hyperref}", "\\usepackage[unicode,urlcolor=blue,colorlinks=true]{hyperref}")
content = content.replace("\\begin{document}", "\\begin{document}\n\\begin{CJK}{UTF8}{song}\n\\CJKcaption{zh-Hans}")
content = content.replace("\\end{document}", "\\newpage\n\\end{CJK}\n\\end{document}")
open(output_file, "wt").write(content)
经过这样处理之后的tex,我们就可以使用pdflatex命令直接生成pdf了。
下面给出我用于这个文件的批处理脚本,有进一步的应用可以在这个基础上改进。
set PYTHON=d:\python27\python.exe
set TXT2TAGS="d:\Program Files\txt2tags-2.6\txt2tags"
set PDFLATEX="D:\CTEX\MiKTeX\miktex\bin\pdflatex.exe"
rem generate latex source file
%PYTHON% %TXT2TAGS% -t tex README_deploy.t2t
rem Patch tex file for Chinese support
%PYTHON% pdf_cjk_patch.py README_deploy.tex temp.tex
copy temp.tex README_deploy.tex
rm temp.tex
rem Generate PDF file
%PDFLATEX% README_deploy.tex
另外要注意的一点是,latex不支持“没有编号的章节”生成目录。所以在标识章节的时候,一定要记得用"+"而不是"="
2011年03月01日 22:17
自从有了Kindle3之后恨不得把所有可看的东西都放上去。想起家里还有一套丁丁在美洲,于是也想弄到Kindle上去。
不过Kindle似乎看漫画并不像想象的那么方便,我用的是多看系统,如果把图片都扔到DK_Picture目录则无法使用分类统一管理,如果放到DK_Documents则只能把图片打成zip包,但是看的时候那个顺序非常诡异。
装懒人而不得,只能自己动手了。查了一点资料,发现最合适的方式应该是将图片按顺序做成PDF,不过大部分资料介绍的都是Windows的软件。终于找到一个Ubuntu下可用的方法,实际非常简单:
前提:1. 图片本身大小合适、对比度合适,不用做进一步处理。2. 图片严格按顺序命名
其实只要安装imagemagik这个软件包,然后使用其中的convert命令就能批量将图片转换为pdf:
convert *.jpg dingding_1.pdf
就这么简单。有了这个命令,写一个脚本对所有书做批处理也不难了。
BTW:实际上imagemagik也非常适合用于做图片的增强处理,因此即使不满足前提1,也可以用它做一些预处理的。只是我这次没有试。
2011年02月23日 15:39
(本文收录于[go4pro.org])
原来以为比较简单,没想到遇到了一些麻烦。
言简意赅言简意赅。
其实本来按理说在Linux上做XServer显示远程窗口应该比Windows更简单才对。但是现在大多发行版因为安全原因,默认禁止了XServer的TCP监听功能,所以有了一些麻烦。
所以我们首先要去掉这个禁止项:
对于Ubuntu这种配置了gdm的系统来说,在 /etc/gdm/custom.conf中增加两行:
[security]
DisallowTCP=false
然后重启就行了。重启之后X就有了TCP监听的能力。
接下来的事情就简单了,是XServer的基本操作:(假设远程电脑(XClient)IP为192.168.0.100,本地端(XServer)为192.168.0.2)
首先在本地机(XServer端)增加客户端IP认证:
xhost + 192.168.0.100
允许客户端的X通讯
然后在客户端指定XServer:
export DISPLAY=192.168.0.2:0
然后在客户端执行X程序,界面就会显示到本地了。
可以执行一个 xclock 看一下效果。
就这样。
言简意赅,嗯。
2011年01月16日 12:41
今天安能饭否发布了0.6版。这个版本带来的全新的界面和很多新的功能,称之为一个里程碑式的版本我觉得并不为过。
最早我做安能饭否,只是希望自己在手机上能用客户端访问饭否,节省流量并获得后台提醒的功能。于是就找了一个开源的软件twitta,在它的代码基础上修改并稍稍增强了一下。当时我并没有什么宏图大志,纯粹是想弄个东东自己用而已。所以我也遵循twitta的协议开源了。
正是因为代码开源,所以三日坊主同学在我的代码基础上又做了新的界面。在这个基础上,才有了今天的安能饭否。新的界面激发了我的热情,也使得这个项目真正焕发了活力。到了今天,我已经不满足于仅仅做一个能用的饭否客户端了。我希望能做一个受大家喜爱的饭否android客户端。
三日坊主是一个优秀的开发者,今天这个版本里大量的工作都是由他完成。感谢他。我也同样希望有更多的高手来帮助我们一同将这个项目做得更好。当然,如果有人能从我们的代码中获益,我也会感到开心。
新的版本在这里下载。如果访问Google Code网站有困难,那么这里还有一个墙内镜像地址。感谢.rex同学提供的镜像资源。
安能饭否的项目主页:http://code.google.com/p/fanfoudroid/
2010年12月18日 19:13
饭否重开之后,我们的感觉一瞬间回到了一年前。除了那些被时间冻结的发言,还有一年前的各种技术。
然而一年之间发生了太多的事。一年前我还在用着200块的黑莓手机,用Opera Mini孜孜不倦的追饭,而一年后的今天,我已经成了一个android资深玩家,早已习惯了各种android客户端提供的后台提醒功能。
可惜目前饭否还用不上。
于是,我打算自己动手。
受到猛禽的饭坚勤的启发,我去网上找了几个twitter的客户端,打算从twitter客户端改一个过来。几经比较之后,我选择了 twitta 。选择的原因是因为它看起来比较好看,而且思路简单,改动容易。
但是twitta提供的功能太少,所以把基本功能改完之后,还远远达不到我的需要。所以我又自己增加了一部分功能。现在,这个客户端已经基本满足我自己的需要了,于是打算发布出来。
安能饭否目前的功能包括:
- 查看自己和好友消息
- 查看提到我的消息
- 查看特定用户的消息
- 回复
- 热饭
- 私信
- 发言
- 拍照/从图库选择照片 并上传
未来打算完成的功能:
我的业余时间不算太多,因此也许不会弄得很快,不过我会慢慢改进,至少要满足我自己个人的需要。
随后我会将代码开放
项目源代码在http://code.google.com/p/fanfoudroid/,欢迎协作开发。
下载地址 (Google Code)