gentoo 里的 wget ,从1.12版本开始,就一直有个不影响功能的小毛病:由于中文翻译的失误,进度提示的时候,会被拉成很多行。原因就是原来英文的ETA这3个字母,被翻译成了 “eta(英国中部时间)” 这么长,所以引起断行出错。
zh_CN.po 里,其实还是有说明的,只不过翻译人员疏忽了。如下:
#. TRANSLATORS: "ETA" is English-centric, but this must
#. be short, ideally 3 chars. Abbreviate if necessary.
#: src/progress.c:805
#, c-format
msgid " eta %s"
msgstr " eta(英国中部时间) %s" |
#. TRANSLATORS: "ETA" is English-centric, but this must
#. be short, ideally 3 chars. Abbreviate if necessary.
#: src/progress.c:805
#, c-format
msgid " eta %s"
msgstr " eta(英国中部时间) %s"
既然这个小毛病不影响功能,之前也就没太在意,一直在等上游更新,不过到了 1.12-r1 版本,仍旧还有这个毛病,我也渐渐的看不下去了,就决定动手自己改掉它了。
方法也很简单,用之前我介绍过的命令就可以了,具体如下:
msgunfmt /usr/share/locale/zh_CN/LC_MESSAGES/wget.mo -o - | sed 's/eta(英国中部时间)/ETA/' | msgfmt - -o /tmp/zh_CN.mo
sudo cp /tmp/zh_CN.mo /usr/share/locale/zh_CN/LC_MESSAGES/wget.mo |
msgunfmt /usr/share/locale/zh_CN/LC_MESSAGES/wget.mo -o - | sed 's/eta(英国中部时间)/ETA/' | msgfmt - -o /tmp/zh_CN.mo
sudo cp /tmp/zh_CN.mo /usr/share/locale/zh_CN/LC_MESSAGES/wget.mo
搞定。
发表于:2010年02月11日 12:10 | 分类: gentoo, 流水帐 | 12 个评论 »
前几天,把许久没有升级的gentoo系统更新了一下,乖乖,居然有500多M的更新,呵呵,也才20来天嘛。。。
其他软件升级了倒都没啥问题,只是我用的邮件客户端──thunderbird,在升级到 3.0.1 以后,中文翻译都没有了,于是去网上搜了一下,发现貌似还没有适用于 mozilla-thunderbird-3.0.1 的中文语言包,只找到一个 3.0b3 的包,但是在强行改了版本以后,装上就不能正常启动了,于是打算根据这个包,自己做一个 3.0.1 的包,现在只完成了一小半的工作量。
写这个文章的目的,是想看看另外还有没有人要需要这个的?或者是有没有人已经做好了的?我可不想重复造轮子,哈。
========20100209 16:26:00 update========
谢谢“唾弃”,我在这个包里,找到了3.0.1版本的完整中文翻译,做了一个单独的语言包,如果你用linux的包管理工具装上了3.0.1的主程序,可以下载这个xpi,单独安装中文。
发表于:2010年02月07日 23:22 | 分类: 流水帐 | 7 个评论 »
今天看到@pengjiayou发的一个网站速度测试的链接,觉得挺好玩的,于是我也申请了一个,呵呵。
这个方法不同于之前的这个测试方法,这次是让别人帮你测试你的网站速度,并能把结果汇总、统计,这样的好处是可以了解全国各地(好像没有统计国外的访问量)的人,打开你的网站会是什么样的速度,而不只是你自己打开的速度。
方法就是在监控宝免费注册一个用户,然后在你站上放一个10k左右的图片,将几个必要的信息填在监控宝的后台,就可以了。你可以手工把链接发给别人让人家帮你测试,也可以在你的网站上放置一段js代码,这样所有访客访问你的网站都会产生一条监控记录。我目前用的是后者,也就是说,如果你现在是用浏览器打开这文章在看的话,你的这次访问,就已经帮我生成了一条记录了,哈哈。
监控宝的UI做得也是很赞的,可以把监控结果清晰地呈现出来,如下是我站速度情况,数据还不是很多,好多省都还是空白状态,呵呵。
图中也可以看到大陆的网速和香港比,还是有较大差距的,唉,万恶的资本主义!
另外,监控宝除了可以监控访问速度以外,还可以监控网站的可用率、服务器状态(需要snmp)、服务的状态等;不仅会给你email日报,还可以购买短信告警提醒。如果你也是站长的话,也是可以考虑的哦。
发表于:2010年02月02日 22:59 | 分类: 网站收集 | 7 个评论 »
贴一些这两天我和老婆在三亚游玩的照片,图片均可点击放大。
欢迎评论,哈哈。
点击查看全文 »
发表于:2010年01月27日 23:00 | 分类: 流水帐 | 26 个评论 »
最近,也快有半个月没有更新博客了,为了证明我还存在于这个网络世界里,也得出来冒个泡了。
那到底这半个月我干嘛去了呢?其实,最近我请了婚假,一来是要完成老家的喜酒;二来是为了好好休息休息,度个蜜月。
所以,从1.14开始,我就回到老家了,发现老家在短短半年的时间里,已经变了一个样子了:屋顶盖上瓦了、外墙贴上瓷砖了、围墙重新做过了、墙也重新刷了一遍、大大小小的门也都基本上换掉了。不过,和房子一起变化的还有我爸妈的面容,变得更憔悴了,头上的白发也明显了不少,看得出这段时间他们的辛苦劳作,真的要谢谢他们。
老家的婚宴是在1.16,农历腊月初二,话说这个日子貌似挺好,只在我村里就还有好几对也是这个日子办酒。当天天气也算不错,虽然没有很大的阳光,但是温度不低,老婆穿起婚纱也不觉得非常冷,算是老天给的好礼了吧。这天,很多亲朋好友都来了,大家也都比较尽兴。
接下来几天,我带着老丈人等几人,把我老家附近好玩的地方都转了一圈,每天也跑得比较累,所以,虽然家里也有宽带和wifi,但是也没啥心思上网了,即使上来,也只是东看看西看看,没有静下心来写点东西,呵呵。
然后,到了昨天,就开始了我们的蜜月旅行:昨天早上还在老家,中午赶到杭州,直接去了机场,傍晚就飞到了三亚,真快。发现这边好热好舒服啊,感觉和浙江的夏末秋初的天气差不多(当然,没那么闷),中午大概能到30度,早晚稍微凉快些,空气质量很不错,潮潮的,总觉得有海的气息。
今天,去了一趟天涯海角,感觉还是不错的,捡捡贝壳,在沙滩上随便走走,都觉得很惬意。哦,对了,还发现这边的很多贝壳里面,都有寄居蟹,哈哈,很好玩哦,各种各样不一样的贝壳里,都可能有同一种寄居蟹呢。
明天去哪玩还没想好,恩,为了明天能更有精力,得早点睡了,哈哈。
发表于:2010年01月26日 23:06 | 分类: 流水帐 | 11 个评论 »
本文是我看了可能吧的诱导性虚假下载链接不完全评测的一些感想,是写给windows用户的,linuxer请自觉忽略,呵呵。
下面通过一个表格来对比windows和linux的软件安装过程:
linux |
windows |
sudo apt-get install XXX 或者 sudo emerge XXX |
搜索: 打开baidu(也许部分是用谷歌的,估计马上也没得用了)?输入XXX,挨个找,找到XX软件站 |
下载: 或许,你已经通过搜索找到了一个软件下载站了,现在,你点开这个站,就会发生诱导性虚假下载链接不完全评测所描述的一幕,你必须凭借你多年的上网经验(说上网经验是好听的,其实就是就是被骗的经验),分辨真假。 |
安装: 也许你一不小心就下到病毒了,哦,可能你买了杀毒软件,一扫描,确认无毒。就开始安装了,然后安装过程中的每一步(一般都有很多个“下一步”吧?)你都得小心了,因为可能会有安装XX工具栏的选项隐藏在安装界面,默认勾着,需要你点掉呢。还有其他的陷阱不一一叙述。 |
最后,也许你历尽千辛万苦,终于装好了,一打开,却发现是XXX汉化版,试用n天,请输入注册码;或者干脆在使用过程中弹出广告。 |
呵呵,写着写着,发现自己不是写这类评论文章的料,还是算了。不过,本来也不算什么评论,只是我看了那文章的一点点感想而已,希望不要有太多的口水。
发表于:2010年01月13日 21:59 | 分类: 流水帐 | 29 个评论 »
今天,我给大家介绍两款自动化的网盘下载工具,用于自动下载Megaupload、Rapidshare等网盘的文件。
首先是有图形界面的FreeRapid,这是采用java编写的,所以可以跨平台使用,而且有比较良好的图形界面和多语言支持,改下设置,就可以出来中文界面,所以使用非常方便,也很容易上手,适合普通用户使用。
而且,FreeRapid还有个好处是支持的网盘网站非常的多,国外的大大小小的网盘站点几乎都能搞定。对各网站的支持还是以插件的形式出现的,也就是说,即使你的网盘站点的下载方式有变化,或者有新的网盘站点出现,FreeRapid也能很轻松地升级,以适应这个变化。事实上,在使用FreeRapid的过程中,也确实经常会看到有插件要更新的。
好了,大致说完了FreeRapid,这个的优点,刚说了,就是易用,因为有GUI嘛,不过,某些时候这样正是它的缺点所在(哲学中,矛盾性的普遍性得到了很好的验证,哈哈。),如果我的机器没有X怎么办呢?呵呵,不用着急,我们还有Plowshare。
Plowshare已经默认包含在了gentoo或者arch的官方源里了,可以直接emerge或者yaourt,但是ubuntu源里,却还未包含,所以使用ubuntu的朋友需要自己下载deb包或者源码进行安装了。
这个的Plowshare比起FreeRapid来,支持的站点稍微少些,不过人家是bash脚本,不用拖个jre也不用X,还是很不错的,而且,它不止支持下载,其实还是支持上传的,哈。
使用起来也不烦,一般情况下只需要
就好了,更详细的使用说明──比如支持某些站点的用户名、密码之类的──可以看官方说明。
再说一句,这个也是模块化支持多站点的哦,而且作者还提供API,鼓励大家都去写模块呢。
怎么样,方便吧?
发表于:2010年01月11日 00:46 | 分类: CLI软件, GUI软件 | 10 个评论 »
今天,吼吼来找我说,他的硬盘,有个分区一共有234G,但是只用了222G,就报满了,无法继续使用了。
其实这个问题,我不久前刚看过一下,只要你仔细看 mkfs.ext3 的man page,就可以知道原因了,其中有这么一句:
-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks reserved for the
super-user. This avoids fragmentation, and allows root-owned
daemons, such as syslogd(8), to continue to function correctly
after non-privileged processes are prevented from writing to the
filesystem. The default percentage is 5%. |
-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks reserved for the
super-user. This avoids fragmentation, and allows root-owned
daemons, such as syslogd(8), to continue to function correctly
after non-privileged processes are prevented from writing to the
filesystem. The default percentage is 5%.
也就是说,ext文件系统,包括ext2、ext3、ext4都会默认预留5%的磁盘空间,留给root用户维护系统或者记录系统关键日志的时候使用,这也就是导致普通用户无法使用部分磁盘空间的原因了。
我个人觉得,这个选项用在根分区或者/var之类的分区,还是有一定的必要性的。但是如果是/home、/opt或者干脆是/data之类的数据分区,就显得有点多此一举了。而且,现在的磁盘空间越来越大,5%往往会有10多G,都可以存一部高清了。这么多空间浪费了,是不是太可惜了呢?
于是,就去找相关资料,看能可否在不格式化的情况下改变保留区块的大小。
吼吼找到了这个,比我想像得还要简单,甚至都不需要umount分区,就可以进行修改。
具体操作过程如下,已经加了详细注释:
#之前的保留区有 732463 块
lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count"
Reserved block count: 732463
#已用空间+可用空间 和 总空间 相比,还少了近3个G
lily@LLY:~$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda7 57677500 47662588 7085060 88% /home
#调整:
lily@LLY:~$ sudo tune2fs -r 25600 /dev/sda7
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks count to 25600
#再来看看空间,哈哈
lily@LLY:~$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda7 57677500 47662584 9912516 83% /home
#确认调整成功
lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count"
Reserved block count: 25600 |
#之前的保留区有 732463 块
lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count"
Reserved block count: 732463
#已用空间+可用空间 和 总空间 相比,还少了近3个G
lily@LLY:~$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda7 57677500 47662588 7085060 88% /home
#调整:
lily@LLY:~$ sudo tune2fs -r 25600 /dev/sda7
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks count to 25600
#再来看看空间,哈哈
lily@LLY:~$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda7 57677500 47662584 9912516 83% /home
#确认调整成功
lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count"
Reserved block count: 25600
看到了吧?就一眨眼的功夫,我就多了3G多的空间,哈哈。而且我还不是直接完全去掉保留区块呢,也留了百多兆以防不时之需呢,呵呵。
算了一下,吼吼那个3.4T的磁盘阵列,省出来的空间居然比我的整个硬盘都大。嗨。。。
发表于:2010年01月08日 20:19 | 分类: 经验技巧 | 13 个评论 »
为了说明这个问题,先来看下这个简单的C程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #include <stdio.h>
#include <stdarg.h>
void writeLogInfo(const char *sFormat, ...){
char sOutBuffer[4196];
va_list lvalist;
va_start(lvalist, sFormat);
vsnprintf(sOutBuffer, sizeof(sOutBuffer)-2, sFormat, lvalist);
va_end(lvalist);
printf("log: %s\n", sOutBuffer);
}
int main(){
writeLogInfo("int=%s", 123);
return 0;
} |
#include <stdio.h>
#include <stdarg.h>
void writeLogInfo(const char *sFormat, ...){
char sOutBuffer[4196];
va_list lvalist;
va_start(lvalist, sFormat);
vsnprintf(sOutBuffer, sizeof(sOutBuffer)-2, sFormat, lvalist);
va_end(lvalist);
printf("log: %s\n", sOutBuffer);
}
int main(){
writeLogInfo("int=%s", 123);
return 0;
}
这程序用gcc编译,即使是用 -Wall 打开所有的警告,也是不会有任何报错的。
但是执行结果是什么呢?由于 writeLogInfo 的是一个参数里指定的是 %s ,而第二个参数确是整型数字 123。所以程序义无反顾地出现了“段错误”而崩溃掉。这种问题在项目代码超过万行以后,要debug起来,也是会浪费很多时间的。
有的人会发现,如果把main里的writeLogInfo直接换成printf,那么在编译的时候,gcc会报一个警告:“警告:格式‘%s’需要类型‘char *’,但实参 2 的类型为‘int’”(Gcc4.x默认就会报,Gcc3.x要加 -Wall 选项才报),如果我们自己的定义的writeLogInfo函数也能有这个警告,那么这种bug将在编译的时候就可以完美解决了。
那么具体怎么实现呢?先来看下面这段代码,功能是和上面的完全一样的,连错误都一样,呵呵:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <stdio.h>
#include <stdarg.h>
#ifndef __GNUC__
# define __attribute__(x) /*NOTHING*/
#endif
void writeLogInfo(const char *sFormat, ...){
char sOutBuffer[4196];
va_list lvalist;
va_start(lvalist, sFormat);
vsnprintf(sOutBuffer, sizeof(sOutBuffer)-2, sFormat, lvalist);
va_end(lvalist);
printf("log: %s\n", sOutBuffer);
}
void writeLogInfo(const char *sFormat, ...) __attribute__((format(printf,1,2)));
int main(){
writeLogInfo("int=%s", 123);
return 0;
} |
#include <stdio.h>
#include <stdarg.h>
#ifndef __GNUC__
# define __attribute__(x) /*NOTHING*/
#endif
void writeLogInfo(const char *sFormat, ...){
char sOutBuffer[4196];
va_list lvalist;
va_start(lvalist, sFormat);
vsnprintf(sOutBuffer, sizeof(sOutBuffer)-2, sFormat, lvalist);
va_end(lvalist);
printf("log: %s\n", sOutBuffer);
}
void writeLogInfo(const char *sFormat, ...) __attribute__((format(printf,1,2)));
int main(){
writeLogInfo("int=%s", 123);
return 0;
}
当你尝试用gcc编译这个文件的时候,你就可以看到警告了,哈哈。
可以看到,这里的关键就是“__attribute__((format(printf,1,2)))” ,这句话的作用就是告诉编译器,前面这个函数呢,参数类型是类似printf的,格式化字符串在参数的第1个位置,扩展参数从第2个位置开始,然后编译器就明白了~
然后,上面的4~6行呢,是为了兼容非Gcc的编译器而加的,这样其他的编译器就会直接无视整个 __attribute__ 了,这样至少不会报错。
其实,这个检查格式化字串的功能(format),只是“函数属性”的一个而已,另外还有许多有用又有意思的属性,比如函数的别名啊(alias),是否已经过时啊(deprecated),等等~要了解这些用法的话,建议去看看官方文档。
发表于:2010年01月04日 17:32 | 分类: 编程相关 | 16 个评论 »
昨天,我喝醉了。
直到现在,才基本缓过神来,所以,起来写点东西纪念一下。
昨天是我大喜的日子,请了大学、高中同学们喝我的喜酒,对了,还有网友代表TualatriX也来了。虽然规模不是很大,但是,觉得大家的气氛都蛮好的。非常感谢所有到场的人。
其实,在酒店里,我还没怎么醉,但是后来大伙又提议去K歌,于是,在包厢里,唱了几首歌,又喝了几瓶,就彻底醉了。
呃,觉得脑子还不是很清醒,再睡一觉再说,哈哈。
发表于:2010年01月03日 14:15 | 分类: 流水帐 | 31 个评论 »