Linux @ 22 November 2008, “No Comments”

上周把我的 T60 上的 Ubuntu 升级到了最新版本 Intrepid,对比上个版本的升级过程,相对顺利了很多。

新版本中最大的改版之一,就是网络管理器的更换。新的管理器使用起来更加简单,不过在使用公司的 vpn 的时候却碰到了一些麻烦,在网上搜索了一下,大部分人都有类似的问题,不过还没有找到好的解决办法。 趁着周末的时间,找了一些国外的相关资料,终于把 vpn 给搞定了,我下面描述下我的方法,不一定对所有人有效,大家权当参考。

1.需要安装的软件包

很多人反馈 vpn 添加的按钮是灰色不可用的,是因为你的相应的软件包没安装完整,使用新立得安装 network-manager-pptp,或者使用以下命令行:

sudo apt-get install network-manager-pptp

也有些同学是像我这样从低版本升级上来的,可能也会有一些杂七杂八的问题,有碰到问题找不到头绪的时候,建议把以下软件包重新安装:

network-manager、network-manager-gnome

2.新建 VPN 连接

按下面截图的步骤开始,新连接类型要选择 pptp

3.设置 VPN 属性

按下图所示,“Getway” 是你的网关地址,“User name” 也不能为空,注意密码这里先暂时保持为空,连接的时候会提示你填写,这里填写的话可能会导致连接失败。

然后点击 “Advanced”,打开高级选项,选中 “Use Point-to-Point encryption(MPPE)”,如下图所示,其它选项不用改动:

到这里就配置结束了,不出意外的话,连接应该是正常的。

4.路由问题

正常情况下,拔上 vpn 后,本地的网络会不正常,这是因为本地网络默认会走 vpn 的路由的关系,我们需要设置只有远程地址才需要走远程的网关。 在设置对话框中选择 “IPV4 Setting”,然后点击 “Route”,参考下面的截图: 我这里是设置了 172.20.1.x 和 172.20.2.x 的网段才通过远程网关,你需要根据你的情况来做相应的修改:

到这里如果你还有问题,还可以通过查看系统日志(dmesg 或 cat /var/log/syslog)来进一步判断问题所在。

Linux, Programming @ 30 October 2008, “1 Comment”

lifesinger 的 blog 上看到淘宝内部使用的 TBCompressor,自己还傻乎乎的留言问有没有 for Linux 版本的。

YUI Compressor 本身就是一个 jar 包,可以方便的跨平台运行,不过每次都要打开控制台来运行,也有些不爽,参考了 TBCompressor,作了一个 nautilus-script,这下就可以直接对 js 和 css 文件点击右键进行操作了。

效果截图如下:

下载地址MinJS

使用方法:下载后的文件放到 ~/.gnome2/nautilus-scripts 目录下即可,需要先打开文件配置你的 YUI Compressor jar 文件所在的路径。

IT, Linux @ 14 April 2008, “4 Comments”

一宁的 blog 上看到这么好玩的命令:

$history | awk '{a[$2]++} END{for(i in a){printf %5d\t%s\n,a[i],i}}'|sort -rn|head

82 ls
64 cd
44 sudo
42 vim
37 svn
25 lftp
22 ./test.sh
17 memcached-tool.pl
11 ping
11 gvim

下面是改进版,可以加入百分比统计:

$history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a]   CMD[a]/count*100 %  a;}' | grep -v ./ | column -c3 -s   -t | sort -nr | nl | head -n10

1 82 16.4% ls
2 64 12.8% cd
3 44 8.8% sudo
4 42 8.4% vim
5 37 7.4% svn
6 25 5% lftp
7 17 3.4% memcached-tool.pl
8 11 2.2% ping
9 11 2.2% gvim
10 10 2% exit

是不是很有意思,快点回复让我看看你的吧。:)

Internet, IT, Linux @ 01 April 2008, “2 Comments”

以下列表使用 FEBE 生成:




1. AdblockPlus{0.7.5.3}:广告过滤
2. DownThemAll{1.0}:多线程下载工具
3. FEBE:定时备份插件及使用偏好,这个列表就是它生成的
4. FEBE{5.3.1}:同上
5. Firebug{1.05}:强大的客户端调试工具
6. FoxyProxy{2.7.1}:自动代理切换,“翻墙”用
7. FreeAccessPlus{1.0.5}:访问被屏弊的 Flickr 用,现在好像没啥用
8. HideMenubar{1.0.20080310}:可以把多余的菜单栏隐藏起来
9. MozillaArchiveFormat{0.6.3}:查看和保存为微软的mht格式
10. Paragrasp{1.43}:辅助阅读
11. RememberTheMilkforGmail{1.0.1}:一个GTD工具,For Gmail 的插件
12. Screengrab{0.93}:Linux下用来截网页的软件
13. SearchStatus{1.21}:查看Alexa排名和PageRank
14. SessionManager{0.6.1.13}:会话管理,可以把当前打开的标签保存成一个会话
15. Stop-or-ReloadButton{0.2.2}:把重载按钮和停止按钮整合在一起
16. SuperDragAndGo{0.2.6}:用来拖动链接在后台打开
17. TWSStopper{0.1.1}:时间管理,让你在工作时间可以安心做事,推荐~
18. TabMixLiteCE{2.0.1}:增强标签功能
19. UserAgentSwitcher{0.6.11}:浏览器的 Agent 模拟和切换
20. WebDeveloper{1.1.5}:辅助WEB开发的工具集
21. YSlow{0.9.4}:Yahoo基于FireBug的页面分析器
22. ZendStudioToolbar{2.0.2}:这个不是我装的~~
23. del.icio.usBookmarks{1.5.44}:用Delicious来代替你的书签菜单

用户代理: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1.13) Gecko/20080325 Ubuntu/7.10 (gutsy) Firefox/2.0.0.13

这篇算凑数……

Linux @ 18 November 2007, “No Comments”

偶在 译言 网站上看到一篇“Linux中5个优秀的博客工具”的文章。之前写 blog 一直都是登录到 wordpress 的后台发布,自己虽然算不上一名职业 blogger,不过绝对算得上一个职业懒虫,这种可以偷懒的工具,绝对不能错过。 😀

文章上介绍了五个工具,除去一个 KDE 下的和一个 FF 的插件(还是要打开浏览器嘛),其它三个在 ubuntu 下都是可以用的。于是,马上全部试用了一下,没办法,要怪就怪 ubuntu 下安装软件太方便了~

QTM
http://qtm.blogistan.co.uk/

基于 qt4 开发的,界面上就打了个折扣,如果你也看的不爽,可以再下载一个 qtconfig 来调整。功能是三个工具中最全的,不过作者好像只顾着增加功能,实际用起来并不是很容易上手。

优点:功能最齐全、草稿、trackback、tag都能支持
缺点:易用性不够,不能编译之前的条目

GNOME Blog
http://www.gnome.org/~seth/gnome-blog/

这个其实就是一个对话框,打开后就是一个发布界面,写上标题和内容,点发布就是了,没有其它功能。我想应该比较适用于那些爱唠叨的 blogger 们。呵呵。

优点:功能单一
缺点:功能单一

Drivel Journal Editor
http://www.dropline.net/drivel/

第一感觉很好,界面做的不错。没有 tag 和 trackback 的功能,让其可用性打了点折扣。不过有一些比较贴心的功能,比如编辑之前的条目,HTML 高亮(我尤其喜欢这个)等。

优点:界面友好,细节功能贴心
缺点:发布和更新时稍有延迟

实际用一了遍后,还没有让我完全满意的,不过,权衡了 QTM 和 DJE,最后我还是留下了 DJE。看起来一个好的用户界面甚至比功能还要重要,在竞争中的确是能占到不少便宜啊。希望 DJE 的后续版本中可以加入 trackback 和 tag 的支持,就差不多完美了。

另外,说到用户界面,顺便联想到刚开始内测的 海内,UI 真是没得说,起码我看起来比 facebook 还顺眼,功能上也都比较单一,不过针对性比较强,相对再来看看功能上日益臃肿的 若邻,我更看好海内,这个扯远了……

Tags: ,
Linux @ 10 November 2007, “3 Comments”

Ubuntu Gutsy 下默认是开启了 Compiz 桌面效果的,在我的 T60 上安装 Google Earth 的过程中碰到点麻烦,记录如下:

1.从 http://earth.google.com/download-earth.html 下载到一个后缀为 bin 的安装包,chmod +x 后执行;

2.安装过程很顺利,装完后会在程序组和桌面上建立快捷方式;

3.第一次运行的时候,发现停留在启动画面,没了反应;

4.切换到终端下,运行 googleearth,发现出现以下错误信息:"Xlib: extension "XFree86-DRI" missing on display ":1.0". ";

5. 猜想可能是显卡驱动的问题,google了一下,发现有人提到先运行 DISPLAY=:0 再运行 googleearth 的方式,试了一下,是可以通过启动画面了,不过启动好的窗口,没有标题栏,也不能最大化最小化,除非把窗口退出,也没办法操作其它窗口;

6.在 ubuntu 中文论坛上寻找了好久,也没找到解决办法。最终在国外一个邮件列表中看到有人提到这种情况,罪魁祸首原来还是 T60 的 ati 显卡,新版的 ati 驱动有一点小问题,导致刚才的情况发生;

7.解决办法:把 libGL.tar.gz 中的两个文件 cp 到你的 google earth 安装目录下(我的在 /opt/google-earth),重新启动你的 X 即可。

附效果截图和 libGL.tar.gz 包本地下载。

Linux, Programming @ 25 October 2007, “No Comments”

公司的版本库由 CVS 转到了 SVN,转的过程就不说了,Google 上一搜一把。 为了实时看到 SVN 版本库的状态,在网上找了一个很好用的工具叫 StatSVN,会把当前 SVN 库的状态用数据和图表的方式展现出来,可以按开发者、目录、commit log 分别展示,很是强大。 在计划写个脚本每天凌晨自动生成前一年的报表的时候,碰到一些麻烦。刚开始的脚本是这样的:

#!/bin/bash
(/usr/bin/svn update /root/SVN)
(/usr/bin/svn log /root/SVN --xml -v > /root/SVN/svn.log)
(/usr/local/jdk/jre/bin/java -jar /root/statsvn-0.3.1/statsvn.jar /root/SVN/svn.log /root/SVN/ -out
put-dir /usr/local/apache2/htdocs/SVN/svnstat/ -title CNFOL -threads 50 -mantis http://xxx.com/bugs
/ -no-developer admin -include **/*.php:**/*.java:**/*.html:**/*.htm:**/*.js:**/*.css:**/*
.shtml:**/*.xml:**/*.sql:**/*.jsp:**/*.do:**/*.cfg)
(/bin/rm -f /root/SVN/svn.log)

第二天发现脚本没有自动运行,再尝试着把所有和 PATH 有关的环境变量都加进去,还是不行。后来在 winger 的协助下,通过记录日志的方式,把脚本的错误输出都记录了下来,发现出错的脚本在 /usr/local/jdk/jre/bin/java -jar /root/statsvn-0.3.1/statsvn.jar 这行,错误信息如下:

Parsing SVN log '/root/SVN/svn.log' exclude pattern ''
Logfile parsing failed.
svn log: svn info: XML document structures must start and end within the same entity.

奇怪的是,在控制台下手工运行都没问题,放到脚本里面就报错。看起来还是环境变量有问题,最终还是 winger 帮忙发现了问题,只要在脚本的头部加入

export LANG=en_US.UTF-8

就一切正常了。

Internet, Linux @ 27 September 2007, “2 Comments”

最近在用 memcache,不可否认,memcache 在实际应用中的表现非常出色。不过也许正是因为其对速度和性能的要求过于严格,导致 memcache 的可操作性不是那么强。PHP 在使用的时候,也只能有限的使用 add、delete、replace、flush 等几个简单的方法。

memcache 官方是不建议我们手动去删除缓冲内容的, 因为官方的 api 中有关删除的方法只有 delete 和flush,前者是在知道 key 的情况下删除一个对象的值,后面是清除服务器上所有对象。

不过很多情况下,我们需要从服务器上删除一部分对象,又不希望把整个服务器上的对象都清空,官方的 FAQ 上提供了一个“伪命名空间(Simulating Namespaces)” 的作法。

示例代码如下:

//生成一个用来保存 namespace 的 key
$ns_key = $memcache->get("foo_namespace_key");
//如果 key 不存在,则创建
if($ns_key===false) $memcache->set("foo_namespace_key", rand(1, 10000));
//根据 namespace_key 生成真正的 key
$my_key = "foo_".$ns_key."_12345";
//需要删除整个 namespace 里的对象的时候,这样处理即可:
$memcache->increment("foo_namespace_key");

Linux @ 21 May 2007, “2 Comments”

ubuntu 的速度还是挺快的,上次寄过来的 6 张光盘还没来得及拍照就被同事和朋友们瓜分了,这次申请了 10 张,没想到速度还是这么快……

福州有需要的朋友可以联系我。:)

dscf6289.jpg

Tags: , ,
Linux, Programming @ 27 October 2003, “1 Comment”

在任务计划 (crontab) 中,@reboot 这个简单却有效的单词可以让你的程序在系统每次启动的时候自动运行。很方便,不是吗?

这个被称为 "Vixie cron"(Vixie cron is named after Paul Vixie, the creator of BIND and other Unix goodness.)

下面是一个 Vixie cron 的列表:

Instead of the first five fields, one of eight special strings may appear:

string    meaning
------    -------
@reboot   Run once, at startup.
@yearly   Run once a year, "0 0 1 1 *".
@annually    (same as @yearly)
@monthly    Run once a month, "0 0 1 * *".
@weekly    Run once a week, "0 0 * * 0".
@daily    Run once a day, "0 0 * * *".
@midnight    (same as @daily)
@hourly    Run once an hour, "0 * * * *".

Tags: ,