Total Pageviews

Wednesday, 26 March 2014

编译stunnel

Compile the software:

        ./configure
        make
        make install

   (see potential options for 'configure' at the end of this file)

3. Create stunnel configuration file (stunnel.conf).

4. Add stunnel invocation to your system's startup files.
   For SysV-compatible init you can use stunnel.init script.

     or

   Modify /etc/services and /etc/inetd.conf, restart inetd (inetd mode).

   See the manual for details.

5. There are a variety of compile-time options you may supply when
   running configure. Most commonly used are:

   --with-ssl=DIR
        where your SSL libraries and include files are installed

   --with-random=FILE
        read randomness from FILE for PRNG seeding

   --with-egd-socket=FILE
        location of Entropy Gathering Daemon socket, if running EGD
        (for example on a machine that lacks a /dev/urandom device)

   Use `./configure --help' to see all the options.
from https://github.com/copiousfreetime/stunnel/blob/master/INSTALL
The stunnel program is designed to work as an SSL encryption
     wrapper between remote client and local (inetd-startable) or
     remote servers. The goal is to facilitate SSL encryption and
     authentication for non-SSL-aware programs.
     stunnel can be used to add  SSL  functionality  to  commonly
     used  inetd  daemons  like  POP-2,  POP-3  and  IMAP servers
     without any changes in the programs' code.
from https://github.com/copiousfreetime/stunnel 
 -------------------

用stunnel+tinyproxy 搭建 https proxy服务器


用于实现https proxy的服务端软件很多,可以用老掉牙但很稳定的 squid,也可以随便用一个轻量级的http proxy程序(比如tinyproxy)搭配stunnel.
下面介绍一下比较简单的方案:轻量级的http proxy程序 tinyproxy + stunnel 。

1、安装 tinyproxy 和 stunnel

首先使用各个 Linux 发行版的包管理器安装 tinyproxy 和 stunnel,比如:
$ sudo yum install tinyproxy stunnel // 对于 centos linux

$ sudo pacman -S tinyproxy stunnel // 对于 arch linux
安装完成后顺便设置它们随开机启动(可选)。

2、设置 stunnel

把你证书私钥和购买的证书扔到 /etc/stunnel 里,然后编辑文件 stunnel.conf,先指定私钥和证书文件名:
cert = /etc/stunnel/mycert.pem
key = /etc/stunnel/mykey.pem
需要注意的是从证书服务商购买回来的证书通常是几个小文件,大概有是:一个你的域名证书,一个证书链证书,一个root证书。把它们用文本编辑器打开,然后按照上述的顺序复制粘贴成一个文件,这个文件就是上面 ”cert=“ 这行所需的文件。
然后指定端口转换,比如将端口 443 (https 的默认端口)绑定并转换到 tinyproxy 的默认端口 8888:
[https]
accept = 443
connect = 127.0.0.1:8888
其中 https 这个一项绑定的名称,可以随便起,accept 表示本机监听的端口,connect 表示转换到哪里。完整的意思就是为 127.0.0.1:8888 添加 SSL 加密层,然后通过 443 端口对外服务。

3、客户端设置

目前默认支持 https代理的只有chrome浏览器(其他浏览器需要在客户端运行 stunnel程序把 https 翻译为 http 才能使用)。而且很诡异的是 chrome 没有自己独立设置 proxy 的地方,使用系统全局的那个 https 设置是不行的(因为系统那个 https 代理指的是当你访问 https 的网站时所走的 http 代理通道,跟我们这篇说的 https proxy 是两码事),所以你还得在 chrome 浏览器里安装插件TunnelSwitch或switchyomega,然后在这个插件里设置 https代理为:“你的域名:443”,这样所有工作都完成,你可以翻墙了。

4、一个给爱折腾的人的省钱方案

如果想节省购买 SSL 证书的花费,那么自己生成一个“自签名”的证书也是可以的,不过如果你的 proxy 想共享给其他人使用的话,要慎重考虑这种方式,因为它会让不爱折腾的人觉得很折腾。
用下面命令即可生成一个自签名证书:
openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -subj "/CN=localhost" -out req.pem
openssl x509 -req -days 365 -in req.pem -signkey key.pem -out cert.pem
注意要将上面的 localhost 更改为你的域名,最终有用的分别是私钥文件 key.pem 和证书文件 cert.pem,把这两个文件替换上面第二步所提到的位置即可。
然后在客户端需要导入这个 cert.pem 才能顺利使用你所搭建的 https proxy 服务。各个操作系统的导入证书方法都不太相同。
  • 在 linux 里比较麻烦,需要用 libnss3 工具 certutil 来完成,命令如下:
$ certutil -d "sql:$HOME/.pki/nssdb" -A -n dummy -i cert.pem -t C
  • 在 mac osx 里使用 keychain 工具,把证书拖进”证书“一栏里。
  • 在 windows 里双击证书文件,在选择“导入到位置”那一步选择”根信任“。
然后重启你的 chrome 浏览器就可以了.

在linux vps上搭建基于纯linux命令的静态博客程序-pagegen

wget http://pagegen.phnd.net/include/downloads/pagegen_0.8.6.tar.gz
tar zxvf pagegen_0.8.6.tar.gz
cd pagegen_0.8.6
chmod 777 *
mkdir ~/pagegen

as3:~/pagegen_0.8.6# ls
compilesite              html_filter_tag_contents  numbering-filter
content_variable-filter  main_menu                 pagegen
COPYING                  mkfilename                parsesitemap
crumb_trail              mklinktext                pextile-filter
cut_header-filter        mksite                    README
html_entity-filter       mksitedirs                sub_menu
as3:~/pagegen_0.8.6# ./pagegen
Usage: pagegen [ gen <site_name> | list | create <site_name> ]
as3:~/pagegen_0.8.6# ./pagegen gen pagegen-site (这个就是生成/更新静态网站的命令)
Creating /root/pagegen/pagegen-site/templates
Creating default header template (/root/pagegen/pagegen-site/templates/header)
Creating default footer template (/root/pagegen/pagegen-site/templates/footer)
Creating 400_page template (/root/pagegen/pagegen-site/templates/error_page_400)
Creating 403_page template (/root/pagegen/pagegen-site/templates/error_page_403)
Creating 404_page template (/root/pagegen/pagegen-site/templates/error_page_404)
Creating 500_page template (/root/pagegen/pagegen-site/templates/error_page_500)
Creating /root/pagegen/pagegen-site/site
Creating /root/pagegen/pagegen-site/content
Creating default page (/root/pagegen/pagegen-site/content/default)
Creating /root/pagegen/pagegen-site/include
Creating /root/pagegen/pagegen-site/include/css
Creating /root/pagegen/pagegen-site/include/images
Creating /root/pagegen/pagegen-site/include/javascript
Creating /root/pagegen/pagegen-site/content_variables
Creating /root/pagegen/pagegen-site/include/css/pagegen.css
as3:~/pagegen_0.8.6# cd ~/pagegen/pagegen-site/

as3:~/pagegen/pagegen-site# ls
content  content_variables  include  site  site.conf  templates
as3:~/pagegen/pagegen-site# ls site
20140326062823  live
as3:~/pagegen/pagegen-site# cd content
as3:~/pagegen/pagegen-site/content# ls
default
as3:~/pagegen/pagegen-site/content# echo "This is the front page." > default
as3:~/pagegen/pagegen-site/content# cd ~/pagegen/pagegen-site/site/live/
as3:~/pagegen/pagegen-site/site/live# (this is the static site's root dir)
~/pagegen/pagegen-site/site/live/里的default文件重命名为index.html

项目地址:http://pagegen.phnd.net/

中国人究竟制造了什么?(第14条让我大笑)


  1、有人说,中国人几乎制造了整个世界。你不相信吗?让我们一起看看中国人究竟制造了什么?

2、90%的星条旗。(2012年数据)

3、全球60%的奢侈品大牌。

4、全球33%手机。

5、80%的人造圣诞树。

6、全球95%笔记本电脑。

7、全球23%茶叶。

 8、全球制鞋业130亿双鞋的中的70亿双。

 9、全球每4件玩具中有3件产自中国深圳特区。

10、全球40%的香烟。

11、每年超过1亿吨纸张和纸箱,出口471.2万。(2012年数据)

12、“辽宁号”航母。

13、巨量的山寨品,譬如山寨拉菲每年产值近百亿。

14、PM2.5。

south:一个可用来提供数据迁移的django程序


This is South, a Django application to provide schema and data migrations.

Documentation on South is currently available on our project site;
you can find it at http://south.aeracode.org/docs/

South is compatable with Django 1.2 and higher, and Python 2.6 and higher.
 
from https://github.com/lambdafu/django-south 

在日本生活的中国人的感受是什么样的(真没想到,日本是如此之好!)

在吃这个问题上,只要你习惯日本的饮食,营养,安全性等等绝对不是问题。唯一的缺点是饮食单调。日本菜也好,中华菜也好,吃一次很喜欢,吃多了就觉 得很单调,吃上个四五年,保准你连下馆子都不想下。连锁快餐,大众食堂六七百日元可以吃得很好,贵一点的餐厅也多在中午提供廉价午餐。由于连锁店星罗棋 布,到哪基本都能吃到熟悉的餐馆。
住房上需要担心的事情不多,租房过一辈子都行,日本的房子布局合理,小而精致,管理规范。没有那么多乱七八糟的事。只要别贪便宜住七八十年代的木头 房子,地震也没什么可担心的。如果你要买房,实际相对于北京来说或许还便宜不少。当你工作久了收入稳定了,为了避税你也会去贷款买房。三四千万日元可以在 东京以外的地方买一栋相当不错的房子了。要么带花园带车库两层小楼,要么高层建筑免震构造外加停车位。日本住宅贷款利率不高且二手房交易十分完善,用连租 带买的方式也不失为一个很好的选择。
环境方面,实在是比北京好太多,没法比的程度。郊外的空气比我家大草原都好。
交通方面,三大都市没什么好说的,地铁巴士星罗棋布,想去哪里都能去。但是三大都市以外的地方,没有车等于没有腿。好在日本二手车不贵,一个月月薪 可以买个中古 RX-8 了。相比中国,很少有违章超速酒驾,只要遵守交通规则,实在没什么可担忧的。汽油最近涨的很厉害,160 日元一升,不过去郊区还是能看到 150 日元一升的。
医疗方面,国民健康保险,减免最高 70%,自己只需要支付最高 30%而且还有上限。习惯喝中药的话药店也有,未在日本发售的药品允许个人进口。急救方面救护车和消防车是一起的(避免打不开门或者火灾有伤者需要救 助),大多数城市都有 7 分钟宣言 –7 分钟我们肯定到。
安全上,我出门一般都经常不锁门,送来的快递塞在信箱里也没人会动,就算是狂风暴雨,随意扔在外面的雨伞也不会被人偷。至于暴走族黑社会?他们见你 是外国人都要躲着你。(原因是最近十几年来中国系黑社会和部分在日华人恶性犯罪频发,自 1989 年开始基本是日本外国人里恶性犯罪率第一,比如 94 年的快活林青龙刀事件,02 年住吉会刺杀事件,03 年福冈灭门事件,近到本月的中国留学生用板砖拍女高中生脑袋意图强奸杀人未遂和池袋绑架事件,都给日本人留下了很深刻的印象,为了避免麻烦,黑社会等等知 道你不是日本人,会躲着你。)
网络上,日本网络十分发达,每月 4000 日元左右 100Mbps 光纤或者 LTE 无流量限制,你有需求的话现在连 2Gbps 的光纤都有。通常情况下,下载是不违法的。就算是新著作权法实施之后也只是故意下载在日本登记过著作权的盗版音乐和电影,且有人提出证据举报之后才算违 法。简单说来就是除了有些软件屏蔽海外 IP 以外,在中国有的那些“自由”,这里全都有。
消费上,日本可以很方便买到大部分外国货。香港的中文版游戏,东南亚的针织活,印度的正统咖喱,欧洲默默无闻的铁匠铺做的马蹄铁,中国的包子馒头馅 饼。想开德国车,原装进口给你开,想买美国的球鞋,ebay 说买就买。想吃热腾腾的巴西烤肉..这个难了点,但是对于你的收入来说,机票钱根本不算什么。某种意义上来说你不是来到日本,而是来到了外面的世界。
收入和税收方面,日常开销占用你的收入比例很少。只要不是沉醉于吃喝玩乐,成为月光族的几率不高,对于爱储蓄的中国人来说,几乎每个人都能攒下一笔 钱来。税收略高但是可以减免的幅度非常大,比如占你收入 10%的住民税,在抚养名单里填满 7 个人几乎就能全免。开公司的情况下避税手段更是五花八门(详情请咨询税理士)日本是一个鼓励消费的社会,对于日本人来说,消费是美德。与其交那么多的税, 不如为了自己尽快花掉。高级商场里 7 万日元一个的玻璃杯,照样有人买来用来避税。占大头的国民年金(养老金),如果你不准备留在日本,在走的时候是可以申请返还的。
政府补助,当你遇到了事故,政府补助你,你家里添新丁,政府补助你。你缺钱,政府借你钱甚至补助给你钱。你觉得不公平,可以找律师起诉政府。政府不会欺压你,只会讨好你。
再谈精神方面:
来了日本,你面临两个选择,要么融入中国人的圈子,要么融入日本社会。大多数情况下,这两个圈子,是互相冲突互相排斥的。要安稳,和中国人一起过中国式的日子,要上进,和日本人混日本人的交际圈。
日本人的交际圈用一个词可以很好的概括就是マナー,就是社会上的规矩,明的暗的,法律上规定的或者是人们默默遵守的,存在太多太多的规矩。起码遵守了规矩,才能让日本人放下防备与你来往。无论是生活还是职场。
语言上,日本是一个哑巴也能生活得很好的社会。日本人内向的居多,去超市买个菜,去便利店买个酒,不说话也能全部办得到。这也是我一直认为的外国人学日语困难的一个重要原因。
不知道你有什么爱好,但是你的所有兴趣,几乎都能在日本找到同好。日本的物质生活十分富足,所以大多数人都会有时间培养各种各样的精神爱好。爬爬山 打打球玩玩车唱唱歌,一切都是正规而专业的。大到体育项目民族乐器吉尼斯记录奥运冠军,小到集瓶盖吃热狗收集女高中生内裤。因为专业,所以你不会觉得无 聊。
意识形态方面,大多数日本人对政治毫无兴趣,夸张到菅直人当了一个月首相,还有人觉得首相是福田康夫的地步。但是日本是一个言论自由,出版自由,思 想自由的国家,在电车上看到 OO 教宣传世界末日信我者得永生或者是幸福实现党要解放朝鲜建造直通欧洲的海底隧道也不是什么稀奇事。对政治有研究的学者教授,则是因为思想自由有着各种各样 不同的意见。有的能到你觉得他是个“日奸”的地步。
个人发展:
日本是一个知识的宝库,专业主义的文化造就了这一切。如果你想通过学习不断完善自己,日本会是一个理想选择。哪怕你觉得你看的日文书是二手知识,想要获取第一手资料,也能轻易得到。
个人修养方面,坐禅,音乐,武道,应有尽有。
要说不太理想的,是缺少一夜暴富成名的机会,因为社会实在是高度成熟。
日本永住或者国籍要求不高,可以用来当作移民欧美,港澳的一个跳板。
大多数日本人受过良好的教育,在专业领域都有相当的积累。平时多聊聊,所获颇丰。
这么说下去会被网友们说成是精神日本人,所以我还是得说点坏的。
日本人实在是太形式主义,什么时候都要说场合话,虽然这是他们的习惯,但是会让中国人觉得有隔阂。开个无关紧要的会,日本人都能给你写满三页密密麻麻的感想出来。很多时候他们的活动会让我们觉得很幼稚,很可笑,但是他们仍然乐在其中。
久而久之,你会觉得日本人非常脸谱化,说话的语气,给出的反应,谈话的内容,似乎都在哪里见过,似乎今天这个渡边和昨天那个佐藤没有什么区别。不光 人是这样,环境也是这样,东京的便利店,和乡下的便利店,卖着一模一样的东西,一模一样的装修,一模一样的用语。到处都是全国性的连锁便利店,连锁饭店, 连锁商场,甚至连卖拖拉机的都是连锁的。每一个城市都有几乎一模一样的东西,甚至连所在位置都是紧挨着。让你不禁怀疑你到底出没出城。
日本的社会实在是很死气沉沉,没有多管闲事的大妈,没有主动和你闲聊的人,不会有人来打扰你,极少有突发事件,一切都是已知的。可能最开始你会觉得很美好,但是过一段时间,你会怀念这些被打扰的时光的。
日本的营业时间很古怪,就连政府机关都是 9 点 10 点才开门下午 5 点就下班周末过节还休息。运气不好刚好和你的上班时间重合,我曾经有一个包裹要寄,耽误了一个多月才终于找到个空闲时间寄了出去。
大部分饭馆只有中午 11 点~下午 2 点, 以及晚上 5 点~半夜才营业,下午三四点钟肚子饿了想找点吃的,除了快餐真的没有什么可吃的。最令人发指的,恐怕就是 ATM 都不是 24 小时的吧…
扔垃圾也一样,垃圾袋要买,一般都是市里专用的分类垃圾袋,周一周五扔可燃,周二扔易拉罐,周三扔塑料瓶,周四扔不可燃,瓶子标签要拆下内部要清 洗,扔掉的报纸要捆装好,电池灯管要专门去回收点扔,粗大垃圾还要去政府买许可,预约时间才能扔…想想一袋生活垃圾因为你错过了早上 8 点 30 的收垃圾时间而不得不在你的小屋里呆 3 到 4 天的可怕情景。
家具店默认不送货上门,但是会借给你小卡车让你自己运回家,运完当然还要开回来还…
旅馆什么的大多都是预约制,多数旅馆夸张到不能当场订房。
早上的乌鸦很吵很吵,而且是巨大的乌鸦。就算是可爱的小鸟,也可能会在空中轰炸你…
再次强调,在乡下,没有车等于没有腿,乡下的电车一天只有一趟也是不稀奇的!堂堂一个市政府,就是没有站点离它近也是不稀奇的!日本的城市比较分散,很多店都藏在郊区或者人迹罕至的小胡同里。乡下没有车,你的痛苦指数直线上升!

Tuesday, 25 March 2014

又一个网页设计软件webdesigner

又一个网页设计软件webdesigner。支持win,mac。看起来不错
http://www.google.com/webdesigner/
爬代码的工具这个不错:
http://www.dcloud.net.cn/
现成的框架:
http://nec.netease.com/
还有
http://www.keqie.com

http://www.icsser.com/

http://purecss.io/

No package 'fuse' found

Package fuse was not found in the pkg-config search path.
Perhaps you should add the directory containing `fuse.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fuse' found

在linux上编程时,很多时候会用到一些非标准的库(即自己装上去的库),这些非标准的库安装位置可能不尽相同,这就给我们编写程序时带来了麻烦。
本文就是旨在替和我一样的菜鸟解决这一问题,水平有限,行文难免谬误,望大虾们不吝赐教。

在linux上编程时,很多时候会用到一些非标准的库(即自己装上去的库),这些非标准的库安装位置可能不尽相同,这就给我们编写程序时带来了麻烦。
本文就是旨在替和我一样的菜鸟解决这一问题,水平有限,行文难免谬误,望大虾们不吝赐教。

1。头文件的位置
gcc 默认会在 /usr/include目录下寻找头文件,这是标准库的头文件的路径,但非标准的库一般不会把头文件直接放在该目录下,一般的作法是在该目录下创建一个 自己的目录,然后在此目录下直接或分门别类(即再创建更深层次的目录,gtk+即一例证)放自己的头文件。如果是这样,gcc编译时是不会找到这些头文件 的,我们会看到有“×××: No such file or directory”的出错信息。解决的方法就是用gcc的-I选项列出这些非标准的路径(实际编程当中一般是由pkg-config --cflags 完成这一工作的)。
2。库的位置
gcc默认会链接标准c语言库,但如果所用的库是“舶来品”,gcc自然不会自动链接,如果也没有显式链接的话,在链接阶段就会出现诸如“: undefined reference to `gtk_container_set_border_width'
/tmp/ccvHaxUx.o(.text+0x1af): In function `main':”的错误。解决的方法就是利用gcc的-l参数显式链接需要链接的库。这样gcc就会按照一种特定的命名规则到默认的目录 (/usr/lib和/lib等目录)下去寻找这些库,并自动链接。但如果库放在自己的定义的目录下,gcc还是不能找到的,这种情况下可以用gcc -L来列出非标准库的路径。实际编程中这一工作是由pkg-config --libs完成的。
上面两次提到pkg-config命令,各位可能就会有疑问了:难道pkg-config前知八百年,后知八百年,无所不能?非也,其实pkg-config也有自己的一套规则来提供关于所查询库的信息
当 要查询指定库(如gtk+-2.0库)的信息时,我们要以gtk+-2.0为参数运行pkg-config命令(如pkg-config --libs --cflags gtk+-2.0)。此时,pkg-config会到默认目录(如/usr/lib/pkgconfig目录)以及PKG_CONFIG_PATH指定的 目录去找一个配置文件,该文件就记录了所查询的库在该系统上信息。该配置文件的命名规则是:所查询库的名字加上后缀.pc。若要查询gtk+-2.0的信 息,则pkg-config会按上面所说的寻找gtk+-2.0.pc。如果找到,万事大吉,直接根据找到的文件的内容显式库的信息。如果找不到以.pc 为后缀的配置文件,则显示出错信息提示用户继续寻找。例如:
代码:[leo@leo ~]$ pkg-config --libs --cflags gtkmm-2.0
Package gtkmm-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-2.0' found这就有两种可能:一是gtkmm-2.0.pc没有放在/usr/lib/pkg-config下。二就是gtkmm-2.0根本就没有装。
对 应的解决方法:第一种情况直接用find,locate等命令把gtkmm-2.0.pc找出来,把路径加入环境变量PKG_CONFIG_PATH 中,再运行命令pkg-config --libs --cflags gtkmm-2.0。第二种情况就只能安装gtkmm-2.0库了。
关pkg-config的更详细的用法请参加pkg-config的manpage:)

如前所述,当显式链接库时,gcc会按自己的规则去寻找库的名字,现在就来说说库的命名规则。
系 统中的库分两类,静态库和动态库(关于动态库和静态库的区别以及如何添加自己的库,我想需要用另一篇文章来专门叙述了,以后有时间再详细写下来吧)。静 态库和动态库在命名上的区别就是后缀名不同而已。动态库以.so(意为shared object)结尾,而静态库一.a(意为archive)结尾。由于种种原因,链接时是优先链接动态库的,如果不成功,则链接静态库。
除了有相区别的后缀外,动态和静态库都有相同的前缀lib,这样动态库就有形如libXX.so的形式,相应的,静态库的名字看起来会是这样libXX.a。
比如,用-lm参数链接数学库时,gcc就会去寻找libm.so或libm.a
-------------------------------
 编译fuse

FUSE是用户空间文件系统的简称,使用Fuse,您可以在用户空间创建功能完备的文件系统,而无需具备内核编程的知识。目前的Linux发行版本大多都默认安装了FUSE,不过今天我们要下载最新的源代码进行安装。

 wget http://sourceforge.net/projects/fuse/files/fuse-2.X/2.8.3/fuse-2.8.3.tar.gz
tar zxvf fuse-2.8.3.tar.gz
cd fuse-2.8.3
./configure --prefix=/usr
make
make install
modprobe fuse (意思是加载fuse.ko模块)

http://fuse.sourceforge.net/,  http://sourceforge.net/projects/fuse/