中科院通了 IPv6 试验网,现在我们可以用 IPv6 网络看免费的高速网络电视,将近四十个台。还可以用 IPv6 打免费电话,固定电话有点儿杂音,效果还不错,手机貌似不好打。最重要的是,连流量费都不算,哈哈!!!
希望免费的午餐持续时间越长越好!*_*
中科院通了 IPv6 试验网,现在我们可以用 IPv6 网络看免费的高速网络电视,将近四十个台。还可以用 IPv6 打免费电话,固定电话有点儿杂音,效果还不错,手机貌似不好打。最重要的是,连流量费都不算,哈哈!!!
希望免费的午餐持续时间越长越好!*_*
——Windows 下常用盗版软件的替代免费软件列表
最后更新时间:2009年8月30日
本文不是一篇对开源软件或者 Linux 的宣传,本文仅仅针对那些在 Windows 下不愿意使用盗版软件,和不能忍耐寻找盗版软件注册码、注册机带来的麻烦的用户。本文的主要内容就是介绍一些用来替代 Windows 下流行盗版软件的开源和免费软件。请注意替代的免费软件并不一定比流行的盗版软件功能差,很多甚至比商业软件还要好。
当您看完这篇文章,我相信您完全可以把您 Windows 系统里安装的盗版软件清理干净而不影响您的任何工作。如果您仍然希望并且喜欢、享受做一个盗版软件用户的话,那也没有办法,但是请您记住,非常非常重要的一点:您已经不是一个历史清白的人,因为一打开电脑,您就在犯罪(侵犯知识产权,侵犯软件版权)。以后像“我是一个遵纪守法的好公民”这种话,想想再说吧!
目录:
1. 压缩解压缩软件
2. 文本编辑软件
3. 杀毒软件
4. 软件防火墙
5. 辞典软件
6. FTP 下载工具
7. 邮件客户端 & RSS 阅读器
8. 办公软件
9. 图片查看器
10. 集成开发环境
11. C/CPP 编译器
12. 科技文献排版
13. 图片编辑软件
14. 远程登录软件
15. 统计计算软件
16. 数学计算软件
17. 反汇编软件
18. 参考文献管理
19. 影音播放
20. 刻录工具
内容:
1. 压缩解压缩软件
流行盗版软件:WinRAR
替代开源软件:7-Zip http://www.7-zip.org
7-Zip 在 2007 年被 SourceForge 网站评为社区选择最佳项目奖,最佳技术设计奖。7-Zip 可以说是能完美替换 WinRAR(甚至更好),它可以解压所有流行压缩格式的压缩文件,可以解压或压缩 7z, ZIP, GZIP, BZIP2 和 TAR 压缩文件格式。注意,7-Zip 不可压缩为 rar 文件格式,这样做有版权问题。
2. 文本编辑软件
流行盗版软件:UltraEdit
替代开源软件:Notepad++ http://notepad-plus.sourceforge.net
文本比较软件:WinMerge http://winmerge.org
相信用过 UltraEdit 的人都会赞不绝口,因为它强大的语法高亮,十六进制编辑,文件对比等等功能令人爱不释手,但是可以的是,它是一个收费软件。那么开源社区有没有相应的替代品呢,答案是肯定的,Notepad++ 一定不会让你失望。更强大的语法高亮,更具扩展性的插件,除了文件对比功能还比不上 UE,我真的是挑不出来一点儿毛病,这篇文章就是在 Notepad++ 中写的,赶快去下载一个尝试一把吧。而且 Notepad++ 还带有很多插件,如果你的 Notepad++ 带有 Nppexec 插件,那么你就可以在 Notepad++ 中打开一个类似于命令行的窗口,想想用这个写 Latex 文档多爽吧,在侧栏中直接输入 latex xx.tex 就可以直接调用 latex 进行编译了,这总比打开一个新的命令行窗口要省事多了吧。
感谢 bbbush 推荐的开源软件 WinMerge,这是一个强大的文本比较和整合工具。
3. 杀毒软件
流行杀毒软件:Kaspersky, Norton, NOD32, Rising 等等太多了
替代开源软件:ClamWin http://www.clamwin.com
替代免费软件:AVG http://free.grisoft.com
替代免费软件:Avira AntiVir Personal http://www.free-av.com
替代免费软件:Avast Home Edition http://www.avast.com
相信大家对病毒都一直很头痛,杀毒软件这个东西,平常用不着,真到用着时候却发现起不了啥作用。上面推荐的杀毒软件中,第一款是开源软件,所以功能稍微弱一些,后面三款都是有商业公司支持的,包括收费版和个人用户免费版两种,所以软件的质量还是可以保证的。感谢 Abcx 推荐 Avira AntiVir. 我个人比较推荐 Avast,功能真的很强大,不比某些软件的商业版本少什么东西。
4. 软件防火墙
流行盗版软件:ZoneAlarm, 天网,瑞星 等等也太多了
替代免费软件:COMODO Firewall Pro http://www.personalfirewall.comodo.com
如果说 COMODO Firewall Pro 是“完美替代”瑞星防火墙,我都觉得侮辱它了。COMODO Firewall Pro 曾获得 Web User 杂志 2007 年金奖,它不仅仅是一个防火墙,而且还可以监视系统文件的更改,它监视文件范围之广泛简直都让我崩溃了,总之它是一个防火墙,但是包含了一些杀毒软件才有的功能,至于它的强大,用了才知道。用 COMODO Firewall Pro 和 Avast 可以帮你打造一个不逊于任何杀毒软件和防火墙组合的安全系统。COMODO 在 2009 后将杀毒功能也引入了防火墙功能中,它的安全套件目前显得比较臃肿,已经不太适合追求简约的用户使用了。
5. 辞典软件
流行盗版软件:金山词霸
替代开源软件:StarDict(星际译王) http://stardict.sourceforge.net
替代免费软件:灵格斯词霸 http://www.lingoes.cn
替代免费软件:谷歌金山词霸合作版 http://g.ciba.com
如果你用过 StarDict,我相信你不会再夸金山词霸好。StarDict 可以自定义辞典库,仅仅中英互译辞典你就有二十多种选择(其中包含金山词霸的辞典库哎),还有其它很多语言的辞典库,而且翻译中有很好玩的词义发散树。为什么它叫译王呢?因为它还有全文翻译功能,动心了吧,把金山词霸删了吧,换 StarDict,我保证你不会失望。
感谢 SteamedFish 推荐灵格斯词霸,这也是一款相当不错的辞典软件,尤其适合 Windows 下的用户习惯。灵格斯和星际译王最大的问题是没有解决好辞典的 license 问题,尤其是灵格斯词霸,这是它以后发展的隐忧。
2008年5月 Google 联合金山公司推出谷歌金山词霸合作版,虽然自带辞典少了点儿,但是有在线辞典功能。也许你想尝试一把!
6. FTP 下载工具
流行盗版软件:FlashFXP
替代开源软件:FileZilla http://filezilla-project.org
替代免费软件:UltraFXP http://www.click-now.net/html/UltraFXP.htm
FTP 下载工具,其实这个东西没什么讲头,大家用起来都差不多,只是换一个软件换一个使用方式而已。窗口布局,菜单内容变一变,基本功能都没差别。世事真的很多变,我以前强烈推荐 SmartFTP 在 2008 年 7 月全面转向了收费软件,这件事让我很伤心,因为这个软件我用的很舒服,sigh!不过幸好我们有开源软件 FileZilla,FileZilla 也支持 IPV6 协议以及使用代理服务器,唯一有点儿不舒服的是它的窗口分布有点儿乱,不过相信会很容易适应的。
7. 邮件客户端 & RSS 阅读器
流行盗版软件:Outlook, FeedDemon
替代开源软件:ThunderBird http://www.mozilla.com/thunderbird
ThunderBird,其实算是 Firefox 的兄弟,两者同是 mozilla 的开源项目。要说邮件客户端,ThunderBird 可能不是最优秀的,但是要说邮件客户端 + RSS 阅读器,恐怕直接支持两者的不太多吧。我之所以用它有一个很重要的理由,ThunderBird 是一款跨平台的阅读器,这样我就不用在 Windows 下和 Linux 下分别设置两次邮件客户端了,只需要把一个平台下的数据文件拷贝到另一平台下,就完全可以使用了。
8. 办公软件
流行盗版软件:MS Office
替代开源软件:OpenOffice http://www.openoffice.org
替代开源软件:AbiWord http://www.abisource.com
替代免费软件:WPS Office 2007 个人版http://www.wps.com.cn
替代免费软件:永中 Office 2009 个人版http://www.evermoresw.com/webch/product/personal.jsp
MS Office 我就不说了,有几个人不是盗版?正版 Office 2007 可是最便宜 400 多美元一套呢!用微软的口吻来说,您可是每年给微软带来好几百美元的直接经济损失啊(再加上Visual Studio, Windows 呢,上千美元了吧)!OpenOffice 现在虽然不敢说完美支持 MS Office 文档,但至少大部分兼容是没有问题的,而且 OpenOffice 文档可以直接保存成多种文件格式,像小气的微软在 2007 里还需要安装插件支持输出 pdf,太吝啬了吧。所以呢,OpenOffice 给你提供了替换 MS Office 的绝大部分功能,为什么还做一个盗版者呢?下载一个吧,至少可以当作一个 pdf 转换工具,要知道低于 2007 的 MS Office 可必须得安装 Adobe Acrobat 才能实现转换 pdf 功能,sigh,又是一个盗版软件!
对于中文用户,在这里我特别推荐金山公司的 WPS Office 套装个人版,对 MS Office 文档的支持到让人吃惊的地步,也没有 OpenOffice 一些启动速度慢等一些问题,非常适合一般用户使用;永中 Office 也在 2008 年 10 月 13 日宣布了个人版免费这一令人振奋的消息,这一消息使得 Linux 用户们有福了,因为永中不仅有 Windows 版,也有 Linux 版,对中文的支持要比 OpenOffice 好很多。但是从测试效果来看,Linux 版本对文档字体兼容性不如 Windows 下的 WPS,不知道 Windows 下的永中表现怎么样。
9. 图片查看器
流行盗版软件:ACDSee
替代开源软件:IrfanView http://www.irfanview.com
其实我对图片浏览软件并不感冒,因为 GFans 都是用 Picasa 嘛!但是看到很多人用 ACDSee 就让我很不爽,IrfanView 挺好的啊,而且速度更快。note:第一次看到有人用 IrfanView,是西门子公司 PSE 的工程师演示流程图。
10. 集成开发环境
流行盗版软件:MS Visual Studio, Intel C++, Turbo C, Delphi
替代开源软件:Eclipse(Almost Every Language) http://www.eclipse.org
替代开源软件:Code::Blocks (Only C/C++) http://www.codeblocks.org/
替代开源软件:NetBeans (Only JAVA) http://www.netbeans.org
如果你是个程序员,还没听说过 Eclipse?太老土了吧。先别说 eclipse 好不好,就拿现在大部分软件公司(尤其是JAVA软件开发公司)都在用 eclipse 来说,你也应该使用它。别给我说 Visual Studio 更顺手,我宁愿用 Notepad++ 写代码再调用命令行编译也不愿意用 Visual Studio 的代码编辑器(当然我这里指 Visual Studio 6.0,俺太土,就用过古董)。Eclipse 强大的插件功能,代码管理功能,自动补全功能,支持多种程序语言...好处我就不列举了(因为我发现自己总是经常不经意发现 Eclipse 的优点,点点惊喜太多了),自己用吧。
但是 Eclipse 最大的缺点就是“慢”!Code::Blocks 作为一个跨平台的 IDE,在速度上要比 Eclipse 好上很多。Code::Blocks 某些版本自带 C/C++ 编译器,如果您是个 C++ Programmer,您可以选择 Code::Blocks。
11. C/C++ 编译器
流行盗版软件:MS Visual Studio, Turbo C
替代开源软件:DevC++ http://www.bloodshed.net/devcpp.html
其实这个真的不好说,我没用过 DevC++,因为我基本上不在 windows 下写 C 代码了。但是 DevC++ 的编译器基础 GCC,我是太经常用了,我不相信你没听说过它,所以我就不解释了。为了写一段 hello world 满世界找注册码,找盗版光盘,值得吗?而且 VC6 对 C++ 标准的实现那么差,而 VS2003 以上动辄几个 G 的大小,相比而言 DevC++ 要比它们好很多。
12. 科技文献排版
流行盗版软件:MS Word
你应该使用的开源软件:LaTeX http://www.latex-project.org
中文 TeX 套装:CTeX http://www.ctex.org
如果我说 LaTex 是 MS Word 的替代软件,肯定有人会骂我:“有没有搞错?MS Word 能算科技文献排版软件?”所以对于那些习惯于用 word + Mathtype(哦,又是一个盗版软件!)写论文的同学,温习一下 LaTeX 的历史吧。你可以仔细看一下下载的 ieee, acm 论文,pdf 文件请看属性,有多少是用 word 的 adobe acrobat 插件生成的?又有多少是 TeX 相关程序或者 dvi, ghostscript 转化成的?当然了,中文的垃圾杂志就不要看了。如果是写中文文章,你可以更欢迎 CTeX 这一省去很多中文配置的套装,学了 LaTeX 你就会知道,什么叫做漂亮的科技文献排版!
13. 图片编辑软件
流行盗版软件:Photoshop
替代免费软件:Paint.net http://www.getpaint.net
替代开源软件:Gimp http://www.gimp.org
用 Linux 的人对 Gimp 不陌生,这是 Linux 下标准的图片编辑程序,这里指其 Windows 版本,Gimp 功能非常强大,但是编辑方式和习惯与 Photoshop 有些区别,可能需要稍微长点儿的学习周期。感谢 Cofyc 推荐 Paint.net,Paint.net 是一个更轻量级的图片编辑工具,功能比 Gimp 和 PS 都弱一点儿,但是编辑习惯和 PS 比较相似,用起来较为容易。有人会说,Photoshop 有这个,有那个,它们有吗?但是请问,你是专业的 PSer 吗?如果你是专业的 PSer,为什么不用苹果机再装个 Photoshop 进行处理呢?对于一般非专业人士的使用,我相信上面两款软件提供的功能足够你探索了。
14. 远程登录软件
流行盗版软件:SecureCRT
替代开源软件:Poderosa http://en.poderosa.org/
不喜欢 Putty 的黑色界面和难操作性?又不想使用盗版的 Secure CRT?这里像你隆重推荐终端登陆器 Poderosa,Poderosa 对 Telnet, SSH 各种登录方式均支持,还支持标签窗口,如果你电脑上还安装有 Cygwin,那么别再用那个黑黑的 Cygwin 启动窗口了,Poderosa 内建有对本地 Cygwin Shell 的支持,而且,Poderosa 支持插件扩展哦,你可以自己为它设置更多功能。
15. 统计计算软件
流行盗版软件:SAS
替代开源软件:R http://www.r-project.org/
大概学统计的学生都会很头痛使用什么软件做统计计算,SAS 那庞大的体积让人望而生畏,再加上用它的人不多,注册码和破解版也非常难找。其实你不必担心,R 软件在统计学领域的使用范围绝对要比 SAS 要广,因为不是每个教授都有钱买正版的 SAS 的,而且基于 R 开发的软件包也是多如牛毛,相信你一定能找到你需要的函数包,在这点上,SAS 要差一些。
16. 数学计算软件
流行盗版软件:Matlab, Mathematica
替代开源软件:GNU Octave+GNUPlot http://www.gnu.org/software/octave/ + http://www.gnuplot.info
虽然 Matlab 在数学计算领域非常流行,但是它的价钱也太贵了。这里我向您隆重推出 GNU Octave,一款开源数学计算软件,它兼容 Matlab 大部分语法,在它的发行版中您能找到很多 .m 文件,所以也许您写的 .m 文件都可以不加修改地在 Octave 上运行。如果需要画图功能,GNUPlot 会给您提供强大的画图工具支持。
17. 反汇编软件
流行盗版软件:Win32Dasm
替代免费软件:IDA Pro(旧版本) http://www.hex-rays.com/idapro/
其实 IDA Pro 更应该说是流行的盗版软件,但是 IDA Pro 的低版本是个人免费使用的,比如现在可以免费使用 IDA Pro 4.9 版,对于一般用户,旧的版本功能已经“非常非常非常”强大了。
18. 参考文献管理
流行盗版软件:Endnote
替代开源软件:JabRef http://jabref.sourceforge.net/
EndNote 是差不多 Windows 下文献管理的权威软件,某些学校可能会买下来这个软件给学生用。但是总有一些学校没钱,或者用户希望保持文献数据库在 Linux 下和 Windows 下的兼容性,那么 JabRef 可能是你最好的选择,因为 JabRef 使用 JAVA 语言编写,是跨平台的。尤其是对 bibtex 论文数据库的支持上,JabRef 已经相当完美了。
19. 影音播放
流行软件:暴风影音
替代开源软件:SMplayer http://smplayer.sourceforge.net/
替代免费软件:K-Lite Codec Pack http://www.codecguide.com/
其实暴风影音也是免费软件,但是暴风影音做的很多事情实在令人不敢恭维。因此我认为有必要推荐一下一些开源软件。SMplayer 是一个 mplayer 的前端,它将 mplayer 包装得更加用户友好,但是中文用户使用的话,有必要配置一下:字幕编码和文件缓存,否则在加载中文字幕或者高清电影时,会有一些问题。K-Lite Codec Pack 是著名的编解码库,很多播放器包括暴风影音、KMplayer 对媒体文件编解码都是使用的它。K-Lite Codec Pack 自带的 Media Player Classic 是经典的短小精悍型播放器,媒体加载速度极快,但是在控制功能上要少一些。
20. 刻录工具
流行盗版软件:Nero
替代免费软件:Nero Free Version http://www.nero.com/enu/downloads-nero9-free.php
本项内容是最奇怪的,盗版软件也是 Nero,免费软件也是 Nero。主要是因为 2009 年 Nero 推出了 Nero 9 的免费版本。我自己的刻录经验告诉我,很多看似很好的刻录软件都难以让人信任,很容易刻坏盘,而 Nero 是一款我足够信任的软件,它推出的免费版本包括了一般刻录时需要的基本功能,很值得使用。
本人的经验也就写到这里了,如果您有什么想补充的,您可以在本博客最底下的 CC 协议的基础上自由转载、修改或者添加内容。
最后更新时间:2009年7月1日
摘要:
这份文档主要描述了我在 Ubuntu 7.10 上安装部署 Snort 入侵检测系统和 acid 基于 PHP 的网页入侵检测数据库分析控制台的过程。
目录
1. 介绍
2. 安装过程
3. 总结
4. 参考文章
1. 介绍
Snort 是一款非常优秀的开源主机入侵检测系统软件,可以用来对主机的网络状况进行记录、分析和报警,并且支持用户自定义规则库。Snort 在 Windows 平台和 Linux 平台上均可运行,详细介绍请访问 Snort 的官方网站:http://www.snort.org 。
Snort的默认记录是存放在 log 文本文件中,而为了观察监控方便起见,一般使用 acidbase 这个网页控制台来查看(好像 MySQL 的 phpmyadmin)。所以整个过程需要:安装 snort 和相应包;安装 LAMP(Linux, Apache, MySQL, PHP) 服务器;在MySQL数据库中建立好Snort数据库并配置 Snort 使其将 log 存放在 MySQL 数据库中;为基于 PHP 的入侵检测数据库分析控制台 (acidbase) 配置好数据库连接。
2. 安装过程
[安装LAMP,Snort和一些软件库]
由于 Ubuntu 是 Debian 系的 Linux,安装软件非常简单,而且 Ubuntu 在中国科技大学有镜像,在教育网和科技网下载速度非常快(2~6M/s),就省掉了出国下载安装包的麻烦,只需要一个命令即可在几十秒钟内安装好所有软件。这里使用 Ubuntu 默认命令行软件包管理器 apt 来进行安装。
$ sudo apt-get install libpcap0.8-dev libmysqlclient15-dev mysql-client-5.0 mysql-server-5.0 bison flex apache2 libapache2-mod-php5 php5-gd php5-mysql libphp-adodb php-pear pcregrep snort snort-rules-default
需要注意的是在安装 MySQL 数据库时会弹出设置 MySQL 根用户口令的界面,临时设置其为“test”。
[在 MySQL 数据库中为 Snort 建立数据库]
Ubuntu 软件仓库中有一个默认的软件包 snort-mysql 提供辅助功能,用软件包管理器下载安装这个软件包。
$ sudo apt-get install snort-mysql
安装好之后查看帮助文档:
$ less /usr/share/doc/snort-mysql/README-database.Debian
根据帮助文档中的指令,在 MySQL 中建立 Snort 的数据库用户和数据库。所使用的命令如下:
$ mysql –u root –p
在提示符处输入上面设置的口令 test
mysql> CREATE DATABASE snort;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort@localhost;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort;
mysql> SET PASSWORD FOR snort@localhost=PASSWORD('snort-db');
mysql> exit
以上命令的功能是在 MySQL 数据库中建立一个 snort 数据库,并建立一个 snort 用户来管理这个数据库,设置 snort 用户的口令为 snort-db。
然后根据 README-database.Debian 中的指示建立 snort 数据库的结构。
$ cd /usr/share/doc/snort-mysql
$ zcat create_mysql.gz | mysql -u snort -D snort -psnort-db
这样就为 snort 在 MySQL 中建立了数据库的结构,其中包括各个 snort 需要使用的表。
[设置 snort 把 log 文件输出到 MySQL 数据库中]
修改 Snort 的配置文件:/etc/snort/snort.conf
$ sudo vim /etc/snort/snort.conf
在配置文件中将 HOME_NET 有关项注释掉,然后将 HOME_NET 设置为本机 IP 所在网络,将 EXTERNAL_NET 相关项注释掉,设置其为非本机网络,如下所示:
#var HOME_NET any
var HOME_NET 192.168.0.0/16
#var EXTERNAL_NET any
var EXTERNAL_NET !$HOME_NET
将 output database 相关项注释掉,将日志输出设置到 MySQL 数据库中,如下所示:
output database: log, mysql, user=snort password=snort-db dbname=snort host=localhost
#output database: log, mysql
这样,snort 就不再向 /var/log/snort 目录下的文件写记录了,转而将记录存放在 MySQL 的snort数据库中。这时候可以测试一下 Snort 工作是否正常:
$ sudo snort -c /etc/snort/snort.conf
如果出现一个用 ASCII 字符画出的小猪,那么 Snort 工作就正常了,可以使用 Ctrl-C 退出;如果 Snort 异常退出,就需要查明以上配置的正确性了。
[测试 Web 服务器 Apache 和 PHP 是否工作正常]
配置 apache 的 php 模块,添加 msql 和 gd 的扩展。
$ sudo vim /etc/php5/apache2/php.ini
extension=msql.so
extension=gd.so
重新启动 apache
$ /etc/init.d/apache2 restart
在/var/www/目录下新建一个文本文件test.php
$ sudo vim /var/www/test.php
输入内容:
<?php
phpinfo();
?>
然后在浏览器中输入 http://localhost/test.php,如果配置正确的话,就会出现 PHP INFO 的经典界面,就标志着 LAMP 工作正常。
[安装和配置 acid-base]
安装 acid-base 很简单,使用 Ubuntu 软件包管理器下载安装即可:
$ sudo apt-get install acidbase
安装过程中需要输入 acidbase 选择使用的数据库,这里选 MySQL,根用户口令 test,和 acid-base 的口令(貌似也可以跳过不设置)。
将acidbase从安装目录中拷贝到www目录中,也可以直接在apache中建立一个虚拟目录指向安装目录,这里拷贝过来主要是为了安全性考虑。
sudo cp –R /usr/share/acidbase/ /var/www/
因为 acidbase 目录下的 base_conf.php 原本是一个符号链接指向 /etc/acidbase/ 下的base_conf.php,为了保证权限可控制,我们要删除这个链接并新建 base_conf.php 文件。
$ rm base_conf.php
$ touch base_conf.php
暂时将 /var/www/acidbase/ 目录权限改为所有人可写,主要是为了配置 acidbase 所用。
$ sudo chmod 757 acidbase/
现在就可以开始配置 acid-base 了,在浏览器地址栏中输入 http://localhost/acidbase,就会转入安装界面,然后就点击 continue 一步步地进行安装:
选择语言为 english,adodb 的路径为:/usr/share/php/adodb;选择数据库为 MySQL,数据库名为 snort,数据库主机为 localhost,数据库用户名为 snort 的口令为 snort-db;设置 acidbase 系统管理员用户名和口令,设置系统管理员用户名为 admin,口令为 test。然后一路继续下去,就能安装完成了。
安装完成后就可以进入登录界面,输入用户名和口令,进入 acidbase 系统。
这里需要将 acidbase 目录的权限改回去以确保安全性,然后在后台启动 snort,就表明 snort 入侵检测系统的安装完成并正常启动了:
$ sudo chmod 775 acidbase/
$ sudo snort -c /etc/snort/snort.conf -i eth0 –D
[检查入侵检测系统工作状况,更改入侵检测规则]
正常情况下在一个不安全的网络中,登录 acidbase 后一会儿就能发现网络攻击。如果没有发现网络攻击,可以添加更严格的规则使得正常的网络连接也可能被报攻击,以测试 Snort IDS 的工作正确性,比如在 /etc/snort/rules/web-misc.rules 的最后添加下面的话:
$ sudo vi /etc/snort/rules/web-misc.rules
alert tcp any :1024 -> $HTTP_SERVER 500:
这一行的意思是:对从任何地址小于 1024 端口向本机 500 以上端口发送的 tcp 数据包都报警。杀死 Snort 的后台进程并重新启动,就应该能检测到正常的包也被当作攻击了。
$ sudo kill `pgrep snort`
$ sudo snort –c /etc/snort/snort.conf –i eth0 -D
3. 总结
使用 Ubuntu 部署 Snort 入侵检测系统和网页控制台是相当容易的,因为 Ubuntu 提供了很方便的软件包安装功能,只是有时候定制性能太差,需要用户手动去寻找软件包的安装位置。
4. 参考文章
http://www.howtoforge.com/intrusion-detection-with-snort-mysql-apache2-on-ubuntu-7.10
最近没什么写字的欲望,上上课,上上班,看看书,晚上回去和女友视频一会儿,日子过得挺轻松自在的。唯一比较痛苦的是考试的临近,已经定下十二月有四门课考试,不过,早考早超生 :-)。
由于 yo2 在调整服务器(鬼知道在怎么调整),我的 WordPress 博客间歇性地抽风,要么完全访问不了,要么从 500 到 504 的错误轮着来,没办法只能耐心地多刷新几次。今天更好,貌似 css 样式单没了,侧栏直接挂中心栏上了,快点调整完吧!
昨天心血来潮想给女友做个生日倒计时,Google 搜一下没找到合适的,不过一想用 Javascript 应该很简单,就自己写了一个,放到了我的 WordPress 博客侧栏最下方。下面是源代码,可以插入到支持 Javascript 的博客侧栏中,比如 Blogspot 或者自己用开源 WordPress 建的博客。
<div id="counter" style="padding: 5px 0px 0px 0px; background:
url(图片地址) no-repeat scroll 0%; width: 200px; height: 130px; text-align: center; font-family: Georgia;
font-size: 14px; font-weight: normal;">
<a href="http://blog.solrex.org/articles/birthday-counter.html" style="color: #FF6600;">
<script type="text/javascript">
var today = new Date();
var birthday = new Date(today.getFullYear(), 生日月份-1, 生日日期);
var diff = birthday - today;
var greeting = "距离 某人 生日还有";
if (diff <= 0 && diff >= -86400000){
greeting = "今天是 某人 的生日!<br />祝 某人 生日快乐!";
} else {
if (diff < 0) {
birthday = new Date(today.getFullYear()+1, 生日月份-1, 生日日期);
diff = birthday - today;
}
greeting += Math.ceil(diff/86400000);
greeting += "天";
}
document.write(greeting);
</script></a></div>
其实代码很简单,而且 Javascript 使用用户计算资源,不用加重服务器负担。唉,本来还想使用 Javascript 调整一下 div 的 css 样式可以支持每个月更换图片呢,只是好久没写过 web 程序了,老做不对,又没有个顺手的 JS 调试器,只好作罢 :-)。
PS: 今天买了一个据说是工包的森海塞尔 MX500 耳机,35RMB还送卷线盒,买过来后对着网上的的辨别真伪教程对比了半天(除了没拆开),分辨不出来真假。听了一下,就我这样的耳朵,居然觉得比 M6 带的据魅族官方说质量相当于MX500 的 PT850 声音效果还要好,中国人造假的能力真彪悍。
魅族 PT850 的设计是绝对有问题的:一是白色的耳机线不够柔软,弹性太好,黑色的稍微好些;二是耳机插头的根部内导线太容易断了,网上 n 多人抱怨,据说是魅族为了促销它的配件故意做成这样的。我第一根 PT850 只用了两个月,现在用的这根只好专门用胶带把插头根部缠上,不然估计里面也早断了;三是佩戴很不舒适,尤其是我这种耳朵眼小的,虽然看起来很好看。
不知道现在世界上有多少人正坐在电脑前,等待着编译结束。如果把所有的软件按照规模来排名的话,编译器至少应该在最大那一批的角落里,想想自己动手编译 GNU 工具链需要的时间吧!难怪有人抗议说 gcc 应该附带音乐以便编译时候打发时间 ^_^
但是还有比 gcc 更变态的,就比如 Open64(原为 SGIPro64,开源后叫 Open64,Intel 和中科院改的叫 ORC,Pathscale 改的叫 EkoPath,特拉华大学改的叫 KylinC),Open64 前端使用的是修改后的 gcc,然后对生成的 WHIRL 文件进行处理,生成 .s 文件再让 as 去汇编。在编译 Open64 时什么稀奇古怪的问题都可能出来,最主要的原因可能是 gcc, binutils 源代码版本不对应,或者只能使用某个版本的 gcc 去编译,某个版本的 ld 去连接。看看 Open64 中的源代码就可以发现,什么风格的代码都有,gcc 的代码可能是 K&R 的,也可能是 ANSI 的,有 C 风格的 C++,还有数不清的 csh,代码的混乱程度比 gcc 有过之而无不及,warning 一大堆,我每次都奇怪它是如何编译过去的。
我没有具体计算过 Open64 的编译时间,但是从感觉上来看,如果全部编译的话,Open64 至少需要一个小时(双核3.4G,2G内存)。平常我改编译器的源代码,最多的就是改 Dwarf 相关的调试信息输出。GNU make 会增量构建,改个 c/cxx 问题还不大,顶多重编一下模块,我最怕的就是改动哪个头文件。因为如果动了头文件,尤其是那种比较关键的头文件,就意味这下面一个小时就等编译结果吧。
一般情况下 make 的逻辑是:如果源文件被更新,只需要重编这个文件生成目标文件,然后用其重新构建可执行文件;如果头文件被更新,那么所有依赖此头文件的源文件都要被重新编译。这个依赖关系是写在 Makefile 中的,为了避免无谓的重编译,一定要在 Makefile 中确定正确的依赖关系。而这个依赖关系的依据是程序中头文件的包含关系和模块之间的联系,所以在写程序时一定要谨慎地选择包含头文件。多 include 一个头文件,错误地声明一个全局变量,都会造成程序的臃肿。
其实在这一点上 GNU 的东西做得就比较不错,头文件的包含,文件的依赖关系都很清楚,而且本身做为 Linux 下的程序员来说,了解依赖关系就是理解 Makefile 的第一步。相比而言 Windows 程序员就差很多,Win 程序员太依赖 IDE(集成开发环境) 了,没有 IDE 什么都干不了。经常有人问 Linux 下没有 VC,那怎么写程序?天那,比 VC 优秀的编译器有很多,而且没有图形界面不意味着写不出图形界面的程序,VC 编译程序也是调用命令行的。VC 的编译器叫做 CL, 连接器叫做 LINK,VC 也有 make,叫做 NMAKE。不相信的人可以尝试一下:如果你安装了 VC 并且选择了将 VC 可执行文件路径加入到环境变量里,那么就可以用 CL hello.cpp 来编译你的 hello world 程序,根本没有必要为了一个单文件的命令行程序创建一个工程。
Linux 并不拒绝 IDE,从 Eclipse 的流行可以看到这一点,但是不要让 IDE 把程序员变傻。如果不了解程序编译的整个过程和逻辑,那么写程序就成了一件盲目的事情。很多 VC 的程序员都不能区分什么是 assembly file, object file, executable file,什么是 preprocess,一个程序的源文件是怎么组织起来的,最终的二进制文件是怎样生成的。他们所知道的就是把一个文件往工程里一拉,乱七八糟的头文件一包含,就希望程序能编译过去。一旦遇到问题,马上抱怨怎么报那么多错误,就算很明显的错误也要到论坛上叽叽歪歪一番,怎么能期望得到一个可靠又高效的程序呢?
从 VC 自动生成的源程序来看,本身就有很多问题,就拿 VC 自动生成的类来说,鲜有 private 类型的成员变量和方法,大多数都是 public 或者 protect 了事,因为这样它不容易出错。但是这样一来 C++ 面向对象的特性又去哪儿了?MFC 里一堆一堆的宏,又如何了解真正的 API?
IDE 仅仅是一个加强版的文本编辑器,它提供的功能是高效写代码,但需要程序员自己保证写高效的代码!
细节很重要!
我发现自己做事情老是有虎头蛇尾的习惯,就像文章标题的这篇实验报告一样,本来我的题目是 Differential Cryptanalytic Attacks of Reduced Round DES,后来发现写对更多轮的 DES 攻击代码太困难。其实密码分析很简单,都是别人做过的东西,拿来抄抄就是了,但是实际写起来代码才发现完全不是那么回事。文章中一句话带过的东西可能需要你编码好长时间再加调试,而且还很难找到正确代码做比较,所以写到后来实在泄气,就只写好了一个3轮的攻击,再加上我时间本来就不多,只好作罢。等以后有闲功夫了我再恢复原来那标题吧 :)
鉴于自己在做作业时找代码样例对比的难处,像上次的大作业一样,我把我对 3 轮 DES 差分攻击的实验报告又放到了我的个人网站共享空间里,可以从 https://github.com/solrex/solrex/blob/master/dc_des/dc_des_lr.pdf 下载。这篇文章主要内容是对 3 轮 DES 差分攻击特征的分析和实现,文章里面有全部 DES 加密解密和 3 轮攻击的源代码。本来我觉得我的实验报告够挫的了,因为都是别人已经做出来的东西。后来我发现在 2003 年 8 月份的《计算机工程》杂志上登过这样一篇文章《数据加密标准DES分析及其攻击研究》,基本信息量为0,连引用文献都没有写到 Eli Biham 和 Adi Shamir 经典文章,我庆幸我好歹还附上了代码...希望能对某些对密码学有点兴趣的人有所帮助。
顺便说几句废话,看到 Eric师兄在博客里说 PageRank,我查看了一下我 WordPress 博客的 PageRank,嘿嘿,居然有到 2 ?我怀疑自己是不是看花了眼,在 Win 下的 Firefox Google 工具栏,IE Google 工具栏,Linux 下的 Firefox Google 工具栏查看了三遍,都是显示 2(希望 Google Toolbar 没有耍我)。哈哈,我的博客网站居然也有 PageRank 了!大家以后多到 这里 踩我吧,另外链接我博客时候最好也用这个链接,别用 Space 或者 Blogspot 的博客链接(那个网站是人家的...) :).
这几天相当之忙,好多事情要做,每天都要熬很晚,觉得都有点儿在崩溃的边缘了。
才写完一个大作业,Windows 下基于 WinPcap 库的图形界面网络嗅探器。以前从来没有摸过 MFC 编程,忽然让写这种程序,都要头痛死了。十一回南京也没时间做,只有回来猛补,从网上抄些,自己写些,拼拼凑凑算是写出来一个很简单的网络嗅探器程序。不过我也不想再花工夫了,其实用 WinPcap 库写嗅探器简单到了极点,最难做的是图形界面,了解 MFC 编程对我价值不是很大,不准备再深入了。我把代码包放到我的网站上了,这里是链接地址:
http://share.solrex.org/MyWork/Eavesdrop_Windows_Sniffer_Based_on_Winpcap_VC6.rar
有兴趣了解如何写网络嗅探器的可以下载下来看看。至于使用网络嗅探器,最好还是用 Ethereal,现在好像改名叫做 Wireshark 了,那才是真正强大的网络嗅探和协议分析工具,我们这种东西都是小儿科。
今天抽空把上一篇博客里给出的在 Linux 下安装 Windows 中文字体的脚本稍微完善了下,也根据师兄的建议把源代码放在了网站上(用 Google translate 访问了一下我的 blogspot 才发现上面显示的代码全乱套了)
http://share.solrex.org/scripts/install_win_CN_fonts_to_linux.sh
,修改了一下上一篇博客内容。之所以喜欢把代码放在文章里主要是经常搜索一些示例代码时发现源代码的下载链接不能使用,还是放在文章里一份拷贝比较有利于知识共享。
估计这个星期还会很忙,有一个对 DES 进行差分攻击的报告,有一个希腊哲学史方面的课程论文,还有很多书和 paper 要看。就算我不兼职,研究生生活也并不轻松啊...
首先,非常感谢 Eric You Xu 师兄在博客里推荐我的博客,但嵌入式开发高手不敢当,我只能说在 GDB 的移植和远程调试方面有比较多的经验,离高手还有很大距离(不是谦虚,我一直想成为那种无论在哪儿都能独挡一面的程序员,努力中 ^_^)。
下面我开始发牢骚:
有一个人,中国某家公司的员工,大概也从事 GDB 的移植,前段时间一直问我有关 GDB 移植方面的问题,我也一直非常耐心的回答他。但是,但是,搞得我非常非常不爽,条缕如下:
1. 刚开始通过 Gtalk 与我联系,在我的状态为 busy 时给我发消息,而我工作时总是使用全屏的远程桌面,自然看不到消息。
2. 问我问题前不知道自我介绍一番,在我强调更喜欢邮件联系时仍给我发送 Gtalk 消息。
3. 由于对方没有自我介绍,我委婉地劝他最好使用公司信箱跟我联系,他说公司信箱不准向外发信,但你邮件总得有个签名吧,连签名都没有。
4. 在我使用公司信箱和他联系后,仍然发送工作邮件到我的私人信箱中,谁想在私人信箱中看到工作上的联系啊?
5. 后来总算有了签名,却是英文名,但没有公司信息,没有个人联系方式;我给他签名叫做 Wenbo,他抬头仍然使用 Hi Yang。
6. 最后我回答了他很多问题,忍无可忍了,因为谁也不希望帮助的人是自己的竞争对手,就算是义务劳动,也得搞清楚对方是谁吧。请他告诉我他的中文名字和公司,并且开玩笑说说不定哪天我可以到他们那里找工作呢。结果呢,就没有回应了。我猜,难道是怕我抢他的饭碗?太荒谬了吧。
其实我最不爽的就是他没有自我介绍,因为我觉得这是提问时,尤其是一对一提问时候起码的礼貌,唉!
所以我真的很希望大家都能看看 How To Ask Questions The Smart Way,晓得怎么做才是礼貌的问问题的方法。为别人也为自己,想想要是自己碰到这样的情况会有什么感觉。
至于自我介绍其实也不一定需要,只要养成在邮件中附加自己联系方式签名的习惯,像下面这样:
--
Wenbo Yang
SimpLight Nanoelectronics Ltd. 6 Zhichun Road, 10th Floor, Beijing, China
Phone: +86-10-5126-6989 --- Email: wenbo.yang@simplnano.com
一是方便别人,从邮件签名就能了解你的基本情况;二是方便自己,省得专门的自我介绍;三是宣传自己和宣传公司,不相信你 Google 一下 "Wenbo Yang" 和 "simplnano"。有这么多好处,为什么不使用呢?
一周无事,要实现一个支持双硬件线程的 gdb stub,全是在写 interrupt 和 exception handler ,纯汇编编程,纯 trace 调试,16 和 32 bits 指令夹杂,总会有千奇百怪的问题,机器代码看得眼睛痛苦地要命,下班以后一会儿也不想多呆。有 GDB 用是多么幸福的事情啊,可是我需要给 GDB remote debug 提供支持,好歹算完了,大概只需要解决最后几个 BUG。
回去会看一会儿高达,因为室友喜欢看,而对于我这个定力不足的人来说,计算机书自然没那个有吸引力。还挺刺激,大机器就是男人的玩具啊!唉,下星期我一定要把我的美嘉影城的兑换券给兑了,变形金刚也好哈里波特也好,不然真浪费了。
买了几本书,Design Pattern,Artificial Intelligence,师兄豆列中推荐的。不过还是眼高手低,看完不知要何时了。
周末会出去走走,最近感冒的人挺多,要小心。
至于奥运那档子事,管它一周年也罢,几百天也罢,确定了,不掺和。什么东西到中国总会变味,既然被打上 me generation 的标签,还是 me 下去吧。
从 baosheng 的博客上看到一篇颇具灵性的文章《世上最短的距离... 》,特转载之.
Original post: [href: http://bbs.nju.edu.cn/vd45799/blogcon?userid=baosheng&file=1184249302 ]
Baosheng 者,鲍盛也,更多请看其个人主页:[href: http://forrest.bao.googlepages.com/]
PNN充分贯彻了Simple is beauty的原则:第一层求距离,第二层找最近的这也就是聚类识别的基本思路。这就带来一个问题,你如何定义距离? dot product? Euclidean distance?
所以,这世界上最短的距离不是我站在你面前而你不知道我爱你,而是我站在你面前,你却不知道如何定义距离。
近期准备写一篇文章,Why PNN is awesome? (为什么PNN帅呆了? )偶很喜欢把awesome翻译成帅呆了而不是令人敬畏的....
PNN: Probabilistic Neural Network(概率神经网络), 一种基于Radial Basis Network(径向基网络)修改过的网络,号称有下列优点:
1. 1000 times faster than back-propagation network
2. robust to noise
附H. Zhu研究small world时作的一篇文章:
偶大一时候还不懂什么叫greedy algorithm,那时居然想做研究,寒...
更多的信息请参考:
[1] J. M. Kleinberg, Nature 406, 845 (2000).
[2] M. Granovetter, Science 301, 773 (2003).
[3] Han Zhu and Zhuangxiong Huang, cond-mat:0404377 (available at arxiv.org)
[4] 成龙,舒淇,《玻璃樽》。
女孩子为了求得冥冥中的如意郎君,会作出种种傻事,据说其中第四十八傻的一种,是把求爱信放在一个瓶子里,投入大海,盼望在这种超越人和人的穿梭中,爱情能找到归宿。
之所以说这只是第四十八傻,因为这其实还并不算特别傻(相比于其他)。爱情是一种近邻双体相互作用,所以这种漫无目的的穿梭,由于其超越了人的因素,反而可能会快很多。
那么怎样才是最有效的传递方式呢?现在大家可能都听说过小世界的概念。人类社会是一个小世界,是因为在近邻联系之外,还存在着很小一部分长程联系。因此,表面上看起来千山万水的距离,也许就隐藏着一个很巧妙的快捷路径。
但是人类社会何其复杂,我们渺小的个人,怎能通晓所有的结构。世上人来人往,单纯的女孩,又何处寻找藏匿的他?很遗憾,即便是真的有很短的路径,我们也很可能茫然不知。
泰戈尔听说这一点以后,欣然修改了他的诗句:
世界上最遥远的距离,不是天涯海角,
而是有快捷路径,我却不知道。
先来考察一下,我们是怎样传递信息的?这是一个很基本的问题,每个人都有过体会。譬如说,我们要把一个信息传递给一个不认识的住在北京的医生。我们总是先把信息传给一个北京的朋友,他考虑了一下,再把信息传递给一个在医疗系统里工作的朋友,而由于这个人仍然不认识那个医生,只能把信息传给在那个医院里工作的熟人,最后才终于交给目标。每一次的传递,都是试图交给和目标最接近的人,曲线救国永远是不被考虑的。实际上,也许就存在着短得多的路径,比如说那个目标也许就是某个人的小舅子,但是由于是曲线救国,而没有被考虑到。
千万年来,人类都是采用这样一种方式(有个名字,叫greedy algorithm)。也许你已经猜到了,这种方式,只有在某一些网络里面才是有效的。条件很简单,在这些网络中,长程的联系出现的概率一定要随距离衰减(衰减不能太快,也不能太慢)。只有这样,北京人和北京人,医生和医生之间相互认识的概率才会比一般情况大。这样才能发挥greedy algorithm的优势。在真正随机建立起来的小世界网络中,它的效率是很低的。因此,在随机的小世界网络中,虽然真正的平均距离很小,但这毫无用处,因为我们根本找不到路径。
也许人类社会就是这样一种情况,也许还不够optimal。这是一个根本问题,要搞清楚它很不容易。
说到这里,我给仍然待字闺中,准备送出玻璃樽的女孩子们一个建议。我相信你们心目中肯定都对理想郎君有了很明确的标准。比如说,如果你们想要找帅哥,你们不妨可以采用greedy algorithm,因为南大帅哥是比较多的,你们可以先把求爱信交给南大的同学,然后南大的同学一看,帅哥物理系最多阿,再把这封信交给物理系,在物理系内部,帅哥之间的联系是很密切的,大家交流一下,很容易就能推选出符合你要求的人选。
泰戈尔了解到这一点,欣然改了他的诗句:
世界上最遥远的距离,不是有快捷路径你却不知道,
而是有物理系同学,你却不懂他的好。
好些天没有更新博客了(针对我的更新频率而言),原因很简单,有更重要的事情去做 :-)。
1 号到的北京,把寄放在同学那里的被子拖到租住的公寓,请邓飞、丽君吃了顿饭。2 号到公司报到,换了个办公桌,换了个电话。寄来的包裹和录取通知书同时到达,纳闷不已,为什么北京往南京挂号需要七天而南京挂号到北京只需要三天?害得我为了一张纸折腾(中科院的录取通知书着实简陋,信封是牛皮小信封,通知书就是一张请柬大小)。我原以为是通知书的那玩意儿是入学须知,但搞不明白的是,为什么入学须知要寄给我两次?
一毕业,这同学们好久不更新的博客都重新拾起来了,反而显得我有点儿懒。这下到公司工作,晚上的时间就多了些,可能又要恢复我正常的更新速度了。
这两天工作也没干什么事,FPGA 调试还不太熟练,模拟器又改了不少,而且更新中工作不太正常,所以就随便看看代码、看看邮件列表和一些 patch。GDB 的 mailing list 里这两天挺有意思的,有个人发了一个希望把 GDB 代码用 C++ 重写的邮件,然后一群大佬说这个问题别讨论了,各持己见讨论起来会没个头的。但是某个邮件里有巨牛的一句话:“The more C++ code I see, the more convinced I get that the language should die. ”让我叹服不已,哈哈。
重装了一个 Ubuntu,当然也装上了 beryl,比原来用着更方便了。Google desktop for linux 推出了,试用了一下,挺好的,特别喜欢它的两下 ctrl 就可以弹出搜索框,这样就免得我还得用鼠标把光标定位在 Google toolbar 里去。Google desktop 的 sidebar 没有在 Linux 版本上体现出来比较遗憾,那些小工具很有意思,但其实 Linux 本身就带有很多有一些的小玩意儿,喜欢玩的能把桌面配置得很 cool 或者 cute。为 Firefox 装了一个 IE7 的主题,看起来还是蛮好的,看来 Microsoft 的 UI 工程师也不是吃干饭的。但是 wine 现在还不支持 IE7,用 ies4linux 测试版装上之后,IE7 的 UI 效果一点儿也没有,真没劲。
毕业了,大家都在干不同的事,还有人(XHO)感叹没假期了,哈哈,准备成家立业的时候已经开始了,慢慢就该习惯了。
先引用一段著名的对话:
A: 你有博客吗?
B: 有。
A: 你介意换一个 BSP(Blog Service Provider) 吗?
B: 介意。
A: 你介意多一个 BSP 吗?
B: ......
总之呢,就是想说,在和菜头的竭力推荐下,在 GFW 的竭力阻拦下,在 Live Space 的竭力变慢下,我又在 yo2.cn 申请了一个博客。至于 yo2.cn 有什么好,请访问 http://www.hecaitou.net ,翻翻以前的文章,你就可以大致了解了。
现在算是把域名 blog.solrex.cn 绑定到了 yo2.cn 的博客上了,不是原来的域名转向,是绑定,就是所有文章什么的都可以用这个域名访问。据说这项服务以后要收费,其实收费没什么,自己申请一个空间一年还得好几百呢,还得自己配置 WP(WordPress),我也是因为懒得配置才不愿意找这个麻烦。最关键的是服务,QoS,我可不再希望自己花费了很多心血在上面的博客说被封就被封了,而且还不是我的责任,是 BSP 没有做好公关。这两年 livespace 和 blogspot 经常性的出问题已经很讨厌了,希望 yo2.cn 这个国内的博客服务商在这方面能做好一些。稍微慢一点儿没关系,发文章麻烦一点儿没关系,但别不能访问。
WP 挺好的,用起来很舒服,而且可以有很多自由度。我还把以前所有的文章都迁移到了现在的站点上,加起来有两百七十多篇吧。哈哈,两年,看来写的不少。
如果 yo2.cn 能保持现在这种服务,年费我愿意交。本想等用一段稳定了再重烧 feedburner,但昨天还是忍不住重烧了一下,所以可能使用 feedburner 订阅我的博客的就看到了今天有很多旧的更新 :)。不过这下再从 feed 中点进去到网站就不是 live space 了,留言也不用登录了,可惜的是,feedburner 教育网还是无法访问。唉,为什么在中国上个网就那么难呢?
最后重申一下,欢迎访问新博客。Live Space 和 Blogspot 仍然保持同步更新,没办法啊,我对中国小网站的风险抵抗能力还是持怀疑态度的。如果 yo2.cn 能保持一年不频繁停机、不被封站、并保持服务质量,我就放弃那两个博客。
Google Maps 推出了 Street View,就是在查询地点的时候,可以查看一条街的照片,然后一路走下去。感觉真是太震撼了,这样可以足不出户就把某些地方旅游一遍。不过可惜的是,Google Maps 并不支持中国市场而 Google Ditu 并不提供本类服务。
唉,最近被毕业的事情弄的好烦,老是碰上些没谱的人,做事情出力不讨好。算了算了,不说了,都是同学。
在计算机科学中,Callstack 是指存放某个程序的正在运行的函数的信息的栈。Call stack 由 stack frames 组成,每个 stack frame 对应于一个未完成运行的函数。
在当今流行的计算机体系架构中,大部分计算机的参数传递,局部变量的分配和释放都是通过操纵程序栈来实现的。栈用来传递函数参数,存储返回值信息,保存寄存器以供恢复调用前处理机状态。每次调用一个函数,都要为该次调用的函数实例分配栈空间。为单个函数分配的那部分栈空间就叫做 stack frame,也就是说,stack frame 这个说法主要是为了描述函数调用关系的。
Stack frame 组织方式的重要性和作用体现在两个方面:第一,它使调用者和被调用者达成某种约定。这个约定定义了函数调用时函数参数的传递方式,函数返回值的返回方式,寄存器如何在调用者和被调用者之间进行共享;第二,它定义了被调用者如何使用它自己的 stack frame 来完成局部变量的存储和使用。
|------------------|<--high address
| ...... | Previous
| ...... | frames
|------------------|<-----------
| registers and |
| local variables |
|------------------| Caller's
| argument 6 |
| argument 5 | frame
| argument 4 |
| argument 3 |
| argument 2 |
| argument 1 |
|------------------|<--previous sp
| return address |(n-4)sp
|------------------|(n-8)sp
| saved registers |
| ...... | Current
|------------------| frame
| local variables |(Callee's
| ...... | frame )
|------------------|
| next calling |
| arguments list |
|------------------|<--sp
| ...... |
|__________________|<--low address
图片链接:http://solrex.googlepages.com/frame.jpg
上图描述的是一种典型的(MIPS O32)嵌入式芯片的 stack frame 组织方式。在这张图中,计算机的栈空间采用的是向下增长的方式,SP(stack pointer) 就是当前函数的栈指针,它指向的是栈底的位置。Current Frame 所示即为当前函数(被调用者)的 frame ,Caller’s Frame 是当前函数的调用者的 frame 。每个 frame 中所存放的内容和存放顺序,则由目标体系架构的调用约定(calling convention)定义。如图所示,MIPS O32调用约定规定了所占空间不大于4 个字节的参数应该放在从 $4到 $8 的寄存器中,剩下的参数应该依次放到调用者 stack frame 的参数域中,并且在参数域中需要为前四个参数保留栈空间;如果被调用者需要使用 $16 到 $23 这些保留寄存器(saved register),就必须先将这些保留寄存器的值保存在被调用者 stack frame 的保留寄存器域中,当被调用者返回时恢复这些寄存器值;当被调用者不是叶子函数时,即被调用者中存在对其它函数的调用,需要将 RA(return address) 寄存器 ($31) 值保存到被调用者 stack frame 的返回值域中;被调用者所需要使用的局部变量,应保存在被调用者 stack frame 的本地变量域中。
在没有 BP(base pointer) 寄存器的目标架构中,进入一个函数时需要将当前栈指针向下移动 n 字节,这个大小为 n 字节的存储空间就是此函数的 stack frame 的存储区域。此后栈指针便不再移动,只能在函数返回时再将栈指针加上这个偏移量恢复栈现场。由于不能随便移动栈指针,所以寄存器压栈和出栈都必须指定偏移量,这与 x86 架构的计算机对栈的使用方式有着明显的不同。
在 RISC 计算机中主要参与计算的是寄存器,saved registers 就是指在进入一个函数后,如果某个保存原函数信息的寄存器会在当前函数中被使用,就应该将此寄存器保存到堆栈上,当函数返回时恢复此寄存器值。而且由于 RISC 计算机大部分采用定长指令或者定变长指令,一般指令长度不会超过32个位。而现代计算机的内存地址范围已经扩展到 32 位,这样在一条指令里就不足以包含有效的内存地址,所以RISC计算机一般借助于一个返回地址寄存器 RA(return address) 来实现函数的返回。几乎在每个函数调用中都会使用到这个寄存器,所以在很多情况下 RA 寄存器会被保存在堆栈上以避免被后面的函数调用修改,当函数需要返回时,从堆栈上取回 RA 然后跳转。移动 SP 和保存寄存器的动作一般处在函数的开头,叫做 function prologue;恢复这些寄存器状态的动作一般放在函数的最后,叫做 function epilogue。
这星期算是比较闲的一个星期,很多工作要等别人的进度,而且 ^_^,我自己也有想偷懒的因素。中间我居然花了一整天时间浏览了一下 《See Mips Run》,因为是 MIPS 的老员工出的书,写得还算不错,好像去年 10 月份还出了第二版:《See Mips Run Linux》,只是电子书现在还不太好找。
《See Mips Run》可以作为一本了解 MIPS 体系架构和编程的教材,甚至可以作为加深理解计算机体系架构的参考书。因为它几乎涵盖了体系结构设计和程序底层实现的所有方面,而且能将 RISC 结合某种特定的 CPU 进行探讨,又没有一般手册的枯燥,在这本书中可以了解到各种理论模型的实际实现方式。也有个缺陷就是它不够新,它所关注的是 R10000 以前的 MIPS,特别注重的是 R4xxx,但这些也是 MIPS 的经典之作。
在当前很多的嵌入式芯片中的设计中都可以看到 MIPS 的影子,包括计算所的龙芯(Loongson),更是受到 MIPS 的深刻影响。从一则新闻就可以看出来:2007年3月28日下午,中科院计算所与意法半导体在人民大会堂举行龙芯处理器技术合作签约仪式。龙芯通过该合作获得了 MIPS64 架构全部许可使用权,而意法半导体通过合作取得龙芯处理器芯片在全球制造和销售的授权。
随便扯点龙芯的话题,最近慢慢地了解了一些龙芯神话,也算揭开了一点龙芯的面纱。不是说龙芯不好,计算所的研究人员的确很优秀,龙芯做得也很好,很厉害。但是作为中国的科研机构,总会有一些很有意思的现象,就比如龙芯总是拿自己跟奔腾比。有这样的话:"最高主频达到1.0GHz,实测性能超过1.5GHz奔腾IV处理器的水平。"我以前看到这种说法总是觉得,哦,好厉害。只是现在慢慢懂了,龙芯和奔腾的 x86 根本不是同一个架构,这种比较可以说毫无意义。拿寄存器来说,龙芯 2E 总共有 64 个定点寄存器,64 个浮点寄存器,而奔腾 IV 是 16 个定点寄存器和 16 个浮点寄存器,可以想象四条腿的马和两条腿的人赛跑的景象。
当然,不是寄存器多就肯定快,也不是寄存器多就好,只是采用 MIPS 体系架构的 CPU, 使用了那么多快速存储设备,主频相同情况下某些方面性能高点当然是很正常的事情。作为 RISC 的龙芯和 CISC (相对) 的奔腾,它们两个的流水线技术、指令集、内存访问基本不同,可以说没有什么可比性。但是为什么连用户手册里龙芯都是拿自己和奔腾系列比较呢,而且只比主频?显然是看起来好看,就像很多公司发布 CPU 都会专门找测试集合一样,这样能忽悠人。
我不相信龙芯的开发人员会真拿与奔腾系列的参数比较当事儿。但很显然的是,中科院、科技部和国家领导们希望它与奔腾比,因为砸下了那么多钱却只看到和一个自己都没有听说过的芯片比性能,谁爽啊?也没办法跟上头交代啊!中国老百姓也希望它与奔腾比,因为是人都知道奔3奔4,你说别的咱老百姓也不懂啊。就拿算是精英阶层的大学生们来说,不知道 PSP,iPod 是什么东西的大概没几个,但知道 PSP 用的是两块 MIPS CPU, 知道 iPod 用的是 PortalPlayer(NVIDIA now),nano 用的是 ARM9, shuffle 用的是 SigmaTel STMP 的有几个,听说过这几个名词的又有几个?龙芯相关公司也希望它跟奔腾比,因为总是要糊弄老百姓的,让科研人员和媒体忽悠一下比自己忽悠效果好多了。
还有一句中国的科研机构经常挂在嘴边的话:"拥有全部自主知识产权。"这句话说起来很有气势,但做起来有那么容易吗?像龙芯,采用了多少 MIPS 架构的东西,连指令集都那么的相似,我不懂这些方面知识产权保护的方式和内容,但说龙芯拥有全部自主知识产权,我不信。就像中国的麒麟操作系统一样,你是改的别人的内核,在宣传中说"该系统已通过自由标准组织Linux标准基认证"的同时还说拥有自主知识产权,真当老百姓是傻子啊。
可以这样说,如果不使用 Linux,基本上没有亲切了解龙芯电脑的机会,因为龙芯上现在只能跑 Linux,而且我想,龙芯在可以预见的时间内,基本不可能赢得 Windows 的支持,就算是 Linux,它也只是支持一小部分。所以,龙芯的存在,和老百姓的 PC 没有太大关系,龙芯的市场也只能是在嵌入式和服务器领域,很难进入桌面市场。但是,龙芯的存在,给了中国一个机会,在处理器市场上竞争的机会,谁知道未来是什么样呢,别管手中的东西是好是坏,总比从敌人那里拿来的用着顺手。只是很难那,计算所的老师都说,想达到 Intel 的水平,那得至少 20 个计算所去做,还得国家鼎力支持。龙芯能做的现在的样子,很不容易了。只要别重蹈汉芯的覆辙,为了赢得国家和民众的支持,吹牛也吹点吧,只是别吹破了就行。我的同事有好多计算所出来的,有的还担过教职,他们对龙芯评价也很高,但都说,龙芯项目现在没多少真正厉害的人了,有能力的都跑国外了,看来龙芯的发展也并没有那么乐观。
呵呵,之所以聊龙芯的话题是因为好像公司下星期会来几个参与过龙芯项目组的计算所毕业生,忽然想起来了就扯点。毕竟算是中国芯片产业的希望啊,关注的人越多,才有可能变得越好。
忍了几天,又想写点东西了。论文初稿已近完成,这些天倒也充实,白天工作,晚上写论文。只是因为公司在装修一个硬件实验室,好几天吵吵地不行,不然大概已经完成,也不必为食言而发愁了。
刚看了一个新闻,什么 Google 又出拼音输入法,还为词库和什么狗纠缠不清。只可惜常用 Linux 系统,那个 EXE 在我电脑上也没甚用处。其实我对输入法要求相当低,只要能支持智能 ABC 的双拼规则,我就愿意使用。以前发现过一个紫光可以自定义双拼规则的,我把回忆到的智能 ABC 的所有双拼对应的键填进去,费了老半天劲了,结果发现紫光会让我的系统崩溃着玩,立马放弃了。自从用过了 Scim,在 Linux 下我再也不会选择别的输入法了。为什么呢?就因为 Scim 可以选择很多种双拼方案,而且非常友好地支持了智能 ABC 的双拼。从实践上来说,我甚至认为 Scim 比智能 ABC 做的还要好,因为它的词频记忆绝对比智能 ABC 的更智能。当然了,和王三表同志所弘扬的黑马输入法没法比,但是黑马支持智能 ABC 的双拼吗?如果黑马支持,我立马就去买套用。其实对于习惯于词输入的人来说,整句的词库并没多大意义,不过,说不定我会改变一下这个习惯。我很期待 Windows 的 Scim,但如果 Google 的输入法能像 Scim 一样,我也会把自己在 Win 下的首选改为它。其实选择输入法可不像葛优选手机一样,哪家人多选哪家,而是哪家符合自己习惯和需要就用哪家。从 N 年前养成的输入习惯到了现在,改起来有那么容易吗?
还是一个软件的问题。偶然看到孙燕姿又出了新专辑,心中痒痒地慌,又偶然看到心仪很久的魅族 M6 降价,心中又痒了一下,几痒几不痒就让我到村里搞了一台 4G 的,看着爱不释手啊。咱的耳朵不是金耳朵,硬件好不好也听不出来,不过我算是充分地认识到了魅族软件的垃圾,那是相当的垃圾啊!!!不知道魅族软件工程师是怎么想的,一插到 USB 上就屏蔽掉所有的按键,也只能怪我一直无所谓于所谓的"安全删除硬件"。直接把线从电脑上拔下来,然后发现所有按键依然被屏蔽,屏幕上依然显示"USB 连接中",NND 直到电耗完。怎一个变态逻辑了得???要不是咱想支持国产,而 iPod 又不支持 FM,我真后悔没买个 Nano,水 2G 才 900 。
又是一个软件的问题,不过是和软件工程师有关的问题(咳咳,我的意思是程序员)。天宝兄弟两天前在博客上发泄了一通,http://www.liongg.net/?p=104 ,大肆宣扬对某个国内知名 GIS 公司对待实习生方式的不满,一肚子苦水啊。看过一本书,好像叫什么 Extreme Programming xxxx ,里面谈到了如何能让团队成员高效率地开发程序,如何让团队成员有满足感。想想我能进现在的公司很幸运啊,虽然公司不大,但做的事情很厉害,员工也全都是精英,而且工作的氛围相当的好。怎么说呢,能有一种被别人重视的和需要感觉真的能让工作起来开心许多。我也和很多在北京工作的程序员交流过,能够有我现在这样的工作环境的还没有遇见过,尤其是在上地中关村产业园的那些小公司,我基本没留下什么好印象。所有的都是 N 多人坐一排,不准上网,不准做和程序无关的事,电脑没有光驱,USB 口被封掉,N 多人一个电话,天天加班没有加班费,工资很低,总之就是把员工当贼看待,当民工使唤。不知道像 Google 这样的公司是不是真如宣传中那样,反正微软和 IBM 除了有钱也不是什么太好的地方。唉,找到一个适合自己的公司也不易。反正啊,我在这也干的不错,也打算毕业以后马上来公司继续做事。经理昨天还问我,毕业以后什么打算啊?我说,毕业以后还想过来干,反正在家也没什么事做。经理说,好,等你毕业过来我们就不把你当 intern 了,当我们的正式员工对待。我就在琢磨,难道是在暗示我再来会加薪,那敢情好!^_^
不罗嗦了,赶紧把论文整完。
(之所以在标题总包括英文,是因为我不喜欢 blogspot 把我的日志链接变成 blog-post_nn.html。)
最近写字很痛苦,像是强迫症一样,不想写,但养成的习惯又觉得不写少点什么,还是记下点东西好些。主要的原因是没有静心的时间和空闲,上班,下班,有时候周末也会来公司做些事,大概是无聊吧。本身也不是很喜欢闹腾的场景,在学校时候还有一群哥们在一起扯,现在基本无语了。除了工作的交流,一天没多少话,对于我这种话多的人,实在是一种痛苦。
论文算有眉目了,本来因为觉得 GDB 移植和数学没什么相关,而研究生读网络安全,想做一些密码学的东西,但吴老师说,既然做了很多工作,也比较深入了,就写 GDB 的移植和原理吧。后来在网上搜到一个上交大的计算机硕士发在国内一个叫《计算机工程》杂志的论文,讲的是 AS 的移植,人家硕士还发这种论文,我本科论文写个 GDB 移植看来也不是很掉价。工作已经完成了,而且完全是我自己做的,写下来基本没什么难度,我还顺便尝试一下用 SVN 来维护论文的版本,tex 文件也是文本,除了中文编码问题,和程序文件也没什么区别。
最近也比较忙,公司的两种芯片都是 Multi-Core 的 RISC CPU,老板一直想要一个支持多核的调试器,但是现在很多对多核的调试机理都是多个调试器对应多个核。我本来想用一种cheat的方法来实现专注于单核但可切换多核的功能,就是在 GDB 的角度来看是单核的,但实际上可以运行时切换到另外的核上。这个工作量应该不大,但这样会有一些问题,比如 break point 只能实现在一个核上。项目经理想得非常好,他希望 GDB 能 load 多套 symbol fie,而且能同时控制多个核。谈何容易啊,要能做那帮 GNU 的 MAINTAINER 们早就做了,有很多 mail 讨论这个问题的,但一直没有一个有效的机制来描述多核,因为多核的情况太复杂了,有各种各样的实现方式。不过具体到某种体系结构来说,并不是不可能实现的,IBM 的一个工程师就说他们实现了 SPU 和 PPC 的双核调试。GDB 是不可能根据某种特定情形修改自己的,它必须到有一种数据结构描述能够兼容大部分多核 CPU 时候才会更改自己现有的架构。我不知道这个 hacking 的工作我能不能做到,但恐怕在回学校前是做不完的了,只有等读研究生时候来北京再接着做了。现在正在疯狂地读代码中,移植的时候只需要考虑 back-end 的东西,像 symbol, breakpoint 啦根本不用管,这会儿也得看了。
也有一件很不爽的事,看到一个人在博客里理直气壮地说自己从来不给应聘者回拒绝信,而且还非常鄙视应届生。唉,还是 JavaEye 的资深会员,以前 JavaEye 的资深会员在我心中是多崇高的地位啊,现在看来某些人也就 just so so。而且他在 JavaEye 的博客上的评论基本上一片赞成声调,我不知道是不是我错了,难道出于礼貌回一封格式固定的拒绝信就那么难吗?难道非得让应聘者享受等待的痛苦就那么让人开心吗?JavaEye 上基本上都是大老,这些大老们都会这么看待问题,那么中国的公司做不过别人也是可想而知了。其实从我的应聘实习生经历来看,虽然不多,但是大公司都会给拒信的,我收过 Unilever 的拒信,Google 的拒信,Microsoft 的拒信。小公司也有几个,不过小公司给拒信的真不多,我记得只有一家做 Java 报表的公司给过拒信。没收到拒信真的没什么,我会以为公司 HR 比较忙,或者邮件服务器有问题,或者其它种种问题,但是如果我知道一家公司的 HR 理直气壮地说我就懒得给你拒信,我真的是对这家公司很反感。三十年河东,三十年河西,公司和 HR 把自己当爷,总有一天会有人让你们自己拿自己当孙子的。一个人能力有问题没什么,但做人有问题就会让人厌恶了。
顺便再说一个趣事,我也当了回神童!公司的一个同事那天和我聊天,问我硕士论文什么题目,我就纳闷了,我是本科啊。结果知道他一直以为我是硕士,还告诉他同学,我们公司有一个20岁就硕士毕业的实习生,笑死我了。
SVN 是 Subversion 的缩写,一个开源的版本管理工具,类似于 CVS 和 Visual Studio 的 Source Safe。不过据它的作者称是因为忍受不了 CVS 的缺点所写的,可能会比 CVS 表现好一点,因为我只有在 check out 某些开源代码时候才会用到 CVS,并不经常,所以只是猜测。不过肯定是比 Source Safe 表现要好,因为两者的理念是不同的,Visual Source Safe 管理小型项目还可以,是不适合管理多用户的大项目的,再说,Source Safe 也只能在 VS 里面用,而 SVN 的客户端有 Linux 和 Window 的版本。顺便提一下的是,WIN 下有种最流行的 SVN 客户端就是集成在右键菜单的一个小乌龟,很有意思的。
SVN 有非常好的使用文档,相比其它的开源项目来说,SVN 的中文化也做的很好,有专门的中文站,可以搜一下。SVN book 介绍的相当全面,但是,读完那么长的文档也没有必要。我这里就介绍一些常用且是最常用到的命令(Linux 下,Win 下就不说了,都是 GUI 操作)。
建立版本库:svnadmin create /data/svnpool
这是指定版本库存放的位置,貌似必须是一个绝对路径,建立好以后里面会建立起一些配置和数据库的文件。
指定编辑器:export EDITOR=vim
因为每次的版本操作都要添加一些信息在 log 里,把 EDITOR 放在环境变量里可以使用自己熟悉的编辑器来编辑这些信息。这句话经常放在 .bashrc 里。
导入项目:svn import file:///data/svnpool
在当前目录下的所有目录和文件都会导入到版本库里。
列表查询:svn list file:///data/svnpool
一般情况下都要先查询一下某个目录存在不存在才去导出。
导出项目:svn co file:///data/svnpool/project
这时候会在当前目录下建立一个 project 的目录,里面存有 SVN 的信息。
更新项目:svn update
使当前目录下的所有文件和目录版本与版本库中保持一致。
查看不同:svn diff
查看当前目录下的所有文件和目录与版本库中有那些不同,也可以加上版本参数 -r revision1:revision2 查看两个版本有什么不同。
添加文件和目录到当前项目:svn add subdir/file
把当前目录下的 subdir/file 添加到当前目录对应的项目中去。
删除、移动或复制当前项目中的目录和文件: svn rm/mv/cp ...
把某个文件或目录更改名字、复制或从版本库中删除。
提交更改:svn commit
把更改后的文件提交到版本库中形成新的版本。
在初始导出和导入的时候,可能需要给出 URL,主要有几种格式,file:///, http://, svn://, svn+ssh://user@host。当项目已经导出时候,就不需要打路径名了,有可能需要密码,如果验证的话。
这些是最常用的命令,像其它的一些命令,比如 merge 之类的,用到时候再查 svn book 和 man page 也不晚。版本控制很有用的,比如自己平常写的代码,放到版本库里就比较好查询和撤销修改,而不用每次都保存个备份。而且增量修改时当代码发生错误时候可以很快定位更改在哪里,找到错误原因。其实所有文档都可以放在 SVN 库里的,只是某些文件类型不好做 diff 罢了。
才发现把 picasa Web 相册中的 image location 放在 blogspot 是看得到的,在 spaces 里是看不到的,在百合也是看不到的,除非你在浏览器中打开过这些图片,浏览器中有缓存才可以看到。看来 google 也并不想别人分享它的流量,不过比百度好一点的是只是不显示图片而已,没有再给显示出来一个大叉,上面写着"这是百度的",NND。我不知道是不是我的环境问题,如果真的 picasa web album 有防盗链措施的话,我只有舍弃它了。不知道别的相册怎么样,已经注册了个 flickr,没时间用,有空再说吧。
在 space 上看不了图片的可以暂时先访问相册:http://picasaweb.google.com/solrex/RandomBeijingImage ,或者到 blogspot 的博客。
北京不可多得的好天气,蒙蒙细雨,三个月来第一次见到
本打算找个公园转转,早起的小雨打乱了我的计划
去北航里的工行给小黑打完我的奖学金税,便又踱步到公司了
灯都没开,一个人都没有,似乎没人愿意在雨天里到公司加班
摁亮显示器,进入 SUSE,检查一下 Kmail,仿佛又无所事事了
打开 Firefox,又开始我的程式之旅:
lilybbs, blogspot, WLM space, google reader
今天忽然想到,许多未订阅的朋友的 blog 好久不曾逛了
于是乎,从 link list 中一个一个点入
然后一个一个加到 google reader 的 rss list 中
我的 link list 一直在加长, rss item 也在增加
有个冲动,想发起一个 share rss list 的运动
让大家把订阅的 blog 列表用XML或OPML文件格式共享出来
不过那样会泄露很多隐私的
当然了,可以有选择的共享
不知道有没有人欢迎?
脱离了 windows 系统之后,msn 上的小星星也看不到了
只能通过 rss reader 刷刷刷
加之也离开了南京
所以 google reader 就成了看别人生活的窗口
进入大四以后,几乎所有人的博客更新都放缓甚至停止了
互相之间的访问也少了
我又换了 BSP
也不知道有多少人会看到这篇 blog
我把我的 RSS 订阅列表 opml 文件放到了博客主页面右侧的最下
链接名为:Solrex is reading...
我会不定期的更新这个文件
你可以查看我正在阅读哪些人的博客,并把它加到你的阅读列表中
也可以把这个文件导入到你的阅读器中然后做取舍
如果你愿意参加这个运动,可以采用同样的方式
也可以把我的共享链接加到你的页面上
如果不知道如何上载文件,也可以放在博客文章里
总之,Hope everyone enjoy your reading!