Monday, May 28, 2007
Friday, May 25, 2007
我的致谢
感谢赐予我生活的世界;
感谢赠予我帮助的朋友;
感谢给予我爱情的女友。
当人生失意的时候,你会明白什么是值得珍惜的,什么是不得不放弃的,什么是应该铭记的;而当人生得意的时候,你会学到的只有一个词—— “感谢”。
当我结束五年硕士与博士研究生生涯的时候,我必须要感谢我的师长们,不论是给我高屋建瓴的言传身教张平老师,还是约束、关心我们一言一行的刘宝玲老师,更有亦师亦友的纪阳老师、唐晓晟老师、李亦农老师、冯智勇老师,你们或激昂、或平易、或严谨、或理性的言行无时无刻不在引导我前进。我也会感谢无线新技术研究所给我这片成长的土壤、这个挥洒的舞台,我从这里获得了很多、赢得了很多,也留下了一份永久的美好印象。
我当然还要感谢曾经的师兄师姐们,张新的领导风范、柴慧娟的古道热肠、王黎敏的热忱执着都在影响着我,永远也不会忘记他们所给我的教诲。还有同一级的挚友们:小白、大黄、小毕、老战、阿呆、罗总、胡峥……永远怀念我们一同拼搏的日子。
还不能忘记给我快乐、给我支持的师弟师妹们,也祝福你们。
当这份论文完成的时候,我不能不感谢帮助我完成整篇论文的那些开源软件的作者和贡献者们,他们包括但不限于:
- Linus Torvalds, FSF 和其他无数贡献者开发的GNU/Linux 操作系统,是我完成整个论文的基础平台;
- D. Knuth 教授和Leslie Lamport 的杰出发明:TEX 和LATEX 这是我所使用的排版系统,论文完成后,作者为论文所开发的模板将会留下来供其他人使用,这个模板还参考并部分使用了清华的王磊设计的清华大学博士论文模板的内容;
- Werner Lamberg 的CJK是论文中文排版的核心支持;
- 张林波老师的CCT 中文TEX 排版支持中的很多工具都被用在论文档中了,还要感谢oseen的打包工作;
- NS-2 的开发者和贡献者们,以John W. Eaton 为首的Octave 的开发者,还有Maxima 的开发者们,他们提供的工具分别是论文中进行离散事件仿真、数值分析和符号运算所使用的工具。
- Thomas Williams, Colin Kelley 和其他很多贡献者开发的Gnuplot,所有曲线、直方图、三位曲面图的绘制都由Gnuplot 完成,而精美的状态图、示意图大多由John Hobby 开发的Metapost 完成,此外其他的图片制造工具还有Dia, LATEX msc宏包等。
- Bram Moolenaar等开发的VIM是本论文所用的编辑器,还有它的扩展LATEXsuit
最后,我更要感谢这位伴我度过三年博士生涯的女孩—— 王海娟,她即将成为我的新娘,三年之中我们一起走过,不论是一同徜徉于校园还是天各一方、远隔重洋,我们的心间总有剪不断的红线。患难见真情,当我受尽挫折、接近放弃的时候,是她的坚定和果敢感染了我,让我义无反顾地向前冲,去挑战自我的顽疾,去战胜人性的弱点,她不仅是我疼爱的对象,更是我一同战斗一生的坚定伙伴。
Saturday, May 05, 2007
忙里偷闲解决了一个笔记本温度传感器的问题
后经过检查,认定是 ACPI DSDT 中 SMBL 字段导致的问题 [2],PCI 总线分配的 SMBus IO 空间为 0xe800 - 0xe81f 共 32 字节,而 ACPI BIOS DSDT 表中却有
Name (SMBS, 0xE800)
Name (SMBL, 0x10)
的字段,即,SMBus IO 空间长度 16 字节,使用 Intel ASL 编译器 (IASL) [3] 修改 DSDT 中 SMBL 为 0x20 并使用此定制 DSDT 后,问题被解决。[2]
此 问题刚刚初现的原因是 [4] 中补丁进入 Linux 内核之前,驱动申请该该 IO 区域长度是固定为 16 字节的,无论 PCI 总线给予多大空间,这样尽管 DSDT 和 PCI 总线不一致,但没有暴露出冲突,不过,自从新的内核采用了更灵活的地址空间确定方式后,此问题被暴露出来 [5]。这对于一般 的 ACPI BIOS 来说,不是一个常见问题,所以没有其他人报告过。
我已经将自己修改过的对应华硕 M2Ne 笔记本(M2400Ne, Intel Dophin Pentium M CPU, 855GM/ICH4) 0204 版本 BIOS 的 DSDT 上传至 Linux ACPI 网站 [6]
[1] http://lists.lm-sensors.org/pipermail/i2c/2007-May/001118.html
[2] http://lists.lm-sensors.org/pipermail/i2c/2007-May/001129.html
[3] http://www.intel.com/technology/IAPC/acpi/downloads.htm
[4] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=6dcc19dfbc84b2ea5428711b7a47146b5b1788bb
[5] http://lists.lm-sensors.org/pipermail/i2c/2007-May/001134.html
[6] http://acpi.sourceforge.net/dsdt/view.php?id=787
Friday, March 16, 2007
[译文] 使用 Cscope 和 SilentBob 分析源代码
| Title | | Using Cscope and SilentBob to analyze source code |
| Date | | 2007.03.09 4:01 |
| Author | | StoneLion |
| Topic | | |
当你开始研究一个不熟悉的项目的源代码的时候,对源代码的结构、函数和类的名称的含义等都不甚了解。这时,虽然我们可以使用 tags 来查看他们的定义,但是却很难通过一个一个看这些定义来得到全句的信息。Cscope 和 SilentBob 就是两个可以帮助我们分析不熟悉的源代码的工具。他们可以帮助你查找符号的定义,判断某个函数在哪里被调用了,发现某个给定的函数调用了哪些其他函数,以及在源代码中进行字符串模式匹配。使用这两个工具,你可以通过高速、有目的性的阅读代码来节省大量的时间,而不需要去手工 grep 所有代码文件。
使用 Cscope
Cscope 是一个非常流行的实用工具,大部分现代发行版都包含它。虽然 Cscope 最初被设计用来分析 C 代码,不过实际上,它在分析其他语言,诸如 C++ 和 Java 的时候同样好用。Cscope 拥有一个基于 ncurses 的界面,不过,它同样支持命令行模式,以便和其他前端程序一同工作,这些前端包含很多主流编辑器,如 Emacs 和 Vim。
当你调用 Cscope 的时候,它自动扫描当前目录之中的源文件,并把收集到的信息存储在一个内部数据库里面。如果需要递归扫描子目录,可以使用 -R 开关。如果你不需要 Cscope 的界面,只想从其它程序里查询其数据库,可以使用 -b 参数。如果你需要在一个大型或系统相关项目中使用,可以通过参考链接中的指南来查询一些优化参数,以提高速度。
在下面的面版上,可以使用方向键切换不同的查找域。使用这个面板,你可以:
- 查找某特定符号的出现位置;
- 查找全局定义 (如果找到的话,自动打开编辑器)
- 查找特定函数调用过的函数
- 查找调用某个特定函数的函数
- 查找文本字符串
- 替换字符串
- 查找一个 egrep 正则表达式
- 在编辑器里打开一个特定文件
- 查找 #include 了某个文件的文件
每当你进行一次查询,Cscope 会把查找结果进行编号,和文件名、函数名 (如果有的话)、行号以及代码行本身一起显示出来。如果使用方向键选择了一个查询结果并敲回车或是直接敲对应的数字键,Cscope 会启动系统缺省的编辑器 (由 EDITOR 环境变量确定) 打开该文件,并把光标定位到该行 (某些编辑器可能不支持定位到行,不过至少 Emacs 和 Vim 没有问题)。
使用 (X)Emacs 作为前端
在 Emacs 中使用 Cscope 非常容易。如果你没有运行着 cscope 开头的程序,而 Emacs 中已经有 Cscope 菜单了,你可以通过安装 xcscope.el 在 Emacs 中集成 Cscope。xcscope.el 可以在 Cscope 源码包中的 contrib/xcscope 子目录中得到。安装的方法是把 cscope-indexer 脚本放到 $PATH 中的路径之中,并把 xcscope.el 放到 Emacs 的脚本路径 (路径相关帮助可以在 Emacs 里面运行 ``C-h v load-path`` 来查询 load-path 相关说明)。先在,把 (require 'xcscope') 这行放到 ~/.emace 或 ~/emacs.d/init.el 当中就可以了。xcscope.el 文件的开头部分的注释可以作为文档。
这个包把所有 Cscope 的查找命令添加导了 Emacs 菜单中的 Cscope 子菜单当中,并且可以在你编辑文件的时候使用快捷键调用。比如,如果你想查找一个符号,可以直接在菜单中选择 Cscope -> Symbol 或是输入 M-x cscope-find-this-symbol,或按快捷键 C-c s s,之后输入符号的名字 (如果什么都不输入,就使用光标下的名字)。搜索的结果会显示在 *cscope* buffer 之中, 按照文件名分组,并以 <函数名>[行号] <整行内容> 的形式显示。把光标移动到想查看的搜索结果上,按空格键,将会在另一个 buffer 中打开该文件,并定位光标到搜索的行。如果你按的是回车而不是空格,你将会直接从 *cscope* buffer 中跳到相应的 buffer (鼠标点击搜索结果也可以)。你可以使用 n 和 p 来选择下一个或上一个搜索结果 (当 *cscope* buffer 不是当前 buffer 的时候可以用 C-c s n 和 C-c s p)。N 或 P 可以用于选择下一个和上一个文件 (或 C-c s N 和 C-c s P)。
在 Vim 中使用 Cscope
如果你更喜欢用 Vim,你还是可以用 Cscope。首先,你的 Vim 应该是使用 --enable-cscope 开关编译的。大部分二进制形式的 Linux 发布版都打开了这个开关。Gentoo 的用户则应该打开 cscope USE 标志。这里假设你使用的是 Vim 6.x 或 7.x。Vim 参考手册里包含了一篇使用 Cscope 接口的文章,你可以在 /usr/share/vim/vim&version/doc/if_cscop.txt找到它。你还可以看另一个简短的教程 (参考链接)。
在 Vim 中,你可以使用如下形式调用 Cscope: :cscope find search type search string (可以用 :cs f 来代替 :cscope find),这里的 search type 包括:
-
symbolors-- 所有引用这个符号的地方; -
globalorg--查找全局符号 -
callsorc--查找特定函数的所有调用 -
calledord--查找特定函数调用的所有函数 -
textort--查找文本 -
fileorf--打开文件 -
includeori--查找 #include 了指定文件的文件
在 Vim 之中,从 Cscope 查询中跳到一个结果和跳到任意的 tag 没有什么区别; 你可以用 Ctrl-T 条回到查找之前的地方,也可以用 :tnext 和 :tprevious 在查找结果间来回跳。
如果你想调对光标下的词进行查找,你应该安装 cscope_maps.vim 插件 (把这个文件放在 $HOME/.vim/plugin 目录即可)。这个文件里面的注释说明了它的用法。使用这个插件,你可以用 Ctrl- 代替 :cscope,用 Ctrl-space 代替 :scscope,搜索将意光标下的词作为搜索词 (比如,你把光标挪到 "initialize" 上面,输入 Ctrl- s,就可以找到所有引用 initialize 符号的地方了。
SilentBob
SilentBob 是一个用于分析源代码的新工具,目前支持 C/C++, Perl 以及 Python,不过它的插件框架 (目前尚无文档)允许用户方便地添加新语言和新功能。
你可以从该软件的官方网站获取源码包或 deb 包。安装之后,在源码目录运行三次 SilentBob:
bob --make-ctags这样会生成三个文件: tags, 一般标签表格; cfiles, C/C++ 文件列表; calltags, 调用标签表。 调用标签表用于函数调用,所以,如果你希望查找某个函数的所有调用,你可以让 Vim 使用 调用标签表 (:set tags=./call_tags) 并使用内建命令用于查找标签 (
bob --cfiles
bob -L cfiles --call-tags
:tag function-name 以及用 :tnext 和 :tprevious循环查找)。这三个索引文件可以被 SilentBob 用于构建调用树和反向调用树。对于 Perl 和 Python,只支持标签表和文件列表:
bob <--perl | --python> --make-ctags第二个命令会生成 generate a
bob <--perl | --python> --files
perl_files 或 python_files 文件。一旦生成了一个标签表,SilentBob 可以显示出一个调用树:
bob [--depth N] function
--depth 选项允许你限制调用树的深度。如果你之希望知道哪些函数被给定函数调用了,使用 --depth 0 参数即可。否则,被调用的函数会被依次列出来。
注意,你可以对 SilentBob 为 Python 和 Perl 文件生成的标签表加上这个参数。不过,使用 Exuberant Ctags 生成的表是不被支持的。
调用标签表还可以用于生成反向调用树
bob [--depth N] -u function
这将依次显示调用给定函数的函数。这时,指定 --depth 1 则只显示调用此函数的函数。SilentBob 也可以使用创建的 cfiles 文件查找 C/C++代码种的文本。它检查操作符,字符串和注释会被省略掉。
bob list of files --cgrep pieces of text, separated by comma
你可以指定 -L ./cfiles 来使用生成的文件列表。几个文本应该来自于同一个操作符,所以,如果你要找检验 T 变量的地方,可以使用:
bob -L ./cfiles --cgrep if,TSilentBob 还包含一个 tags 工具,让你可以在一个控制台查看标签的定义。调用
tags tag1 tag2 ... tagN 可以从代码中取出你感兴趣的片段 -- 函数定义、全局变量声明等等 -- 你将会看到你需要的代码片段。为什么使用 SilentBob 生成标签?
SilentBob 使用语法分析器来解析源文件,这使得它比使用正则表达式定位文件中的某行的工具,如 Exuberant Ctags 要快很多。在对 Linux 内核源文件 (2.6.19) 的测试中,Exuberant Ctags 生成标签表需要 90 秒,而 SilentBob 仅需 10 秒钟 (测试机使用 2.6GHz 的赛扬处理器)。SilentBob 还支持多线程优化。另一个不同来自于标签表的格式: Exuberant Ctags 生成的表中,使用正则表达式定位特定行。这就意味着,如果你编辑该文件,某些定义的位置可能会改变,但你不需要重新生成标签表。这对于 Exuberant Ctags 来说很理想,因为这样你就不需要频繁地重新生成表格了,不过,这也意味着如果你在浏览一个大型文件,在标签定义之间的跳转相对于记录行号的方式会非常慢。这就是 SilentBob 为什么在标签表中使用行号; 不过,这就意味着你必须在较大的编辑之后重新生成标签表了。
参考链接
- "tags" - http://applications.linux.com/article.pl?sid=07/01/22/167212&tid=13
- "Cscope" - http://cscope.sourceforge.net/
- "在大型项目中使用 Cscope" - http://cscope.sourceforge.net/large_projects.html
- "关于在 Vim 里使用 Cscope 的简短教程" - http://cscope.sourceforge.net/cscope_vim_tutorial.html
- "cscope_maps.vim" - http://cscope.sourceforge.net/cscope_maps.vim
- "SilentBob" - http://silentbob.sourceforge.net/
写了一个LDAP教程
在这里可以下载到打印版:
http://gnawux.googlepages.com/ldap.handout.pdf
用 beamer 写的。
Monday, March 12, 2007
[译文] Wiki 企业应用之演化
By Gabe Minton
Mortgage Banking
03/11/07 4:00 AM PT
http://www.linuxinsider.com/rsstory/56207.html
为避免错误的编辑操作,wiki 所引入的另一个功能是健壮性的修改控制机制和审计手段。这些机制不紧包括谁修改了、从某个页面添加或删除了什么,通常还包括获取变更历史以及为了检查而取出较早版本等。
协作效用 (Collaborative Effort)
Wikipedia 是这么定义 wiki 的: “一个允许访问者便捷地自行添加、删除、编辑、修改内容的网站,通常情况下,上述操作甚至不需要注册。交互与操作的便捷性使得 wiki 成为了一个高效的大型共同写作工具。”
该网站还记述: “Wiki 这个名词通常也用于指代支持上述网站运营的协作软件本身 (wiki 引擎),或指代某些特定的 wiki 站点,如计算机科学站点 WikiWikiWeb (最早的 wiki) 和在线百科全书 Wikipedia。”
本质上说,wiki 是一个支持内部链接 Web 服务器应用,交叉组织着一个可以不断扩充的信息集。Wiki 中一个包含某个特定主题的特定页面被称为一篇“文章 (article)”。
而使一个 Wiki 独一无二的正是网站中所包含的内容和这些内容到内部的其他文章之间的链接。
以 Wikipedia 为例,一篇关于加利福尼亚的文章会链接到该州首府萨克拉门托的一个页面。
传统的 wiki 之中,"驼峰词" (形如 UpperCamelCase) 会自动链接到另一个主题或文章。大多数情况下,拥有帐号的任何人都可以访问、修改或编辑一个页面。这是 wiki 的又一个特有的特征。
所有的内容都是用户创建的。这让 wiki 网站的内容成为“社区共有”的。这页同时允许了恶意用户来登录并篡改内容,这在 Wikipedia 上曾经发生过。
为避免错误的编辑操作,wiki 所引入的另一个功能是健壮性的修改控制机制和审计手段。这些机制不紧包括谁修改了、从某个页面添加或删除了什么,通常还包括获取变更历史以及为了检查而取出较早版本等。大多数时间,wiki 也提供强健的主题和全文搜索能力。
企业级应用 (Enterprise-Level Use)
没有设么理由会组织你把这项技术用于企业。通常情况下,你会利用 wiki 存储一些需要多个实名帐号访问更新其内容的技术文档。
Wiki 不是一个文档共享平台,不能用与诸如微软 SharePoint 等软件来合作。它也不是一个用于文档和源代码管理的版本管理系统 (诸如 CVS 或微软 Visual SourceSafe)。它是一个内容共享系统,良好地组织内容之间的关系。
如果你的组织中有多人添加、维护的协作知识库是,并且这些知识是相关的,这种情况下,你就可以考虑使用 wiki 了。
一个典型的例子就是软件公司中的开发方法。每个公司有自己的不同的软件生命周期模型和开发过程,通常这个模型还是不断演化的。对于一个放贷者,风险或贷款准则也是一个例子,其中的各种名词是相关的,并且一组业务员可能共同负责内容的修订。
Wiki 软件既有自由版本也有商业版本——其选择依赖于你想得到些什么。对于我所知道的大多数工业界的案例,诸如 JSPWiki 之类的自由软件就足够了 (包括 Mismo 的案例)。
简与繁 (Simple and Complex)
Mismo 使用 wiki 来存放、更新他们的工程守则。工程守则由所有的导师所共同创作,来成为一个工业标准。这些守则可以非常简单 (如使用全大写字母和下划线作为容器名称的命名常规),也可能相当复杂 (如 Mismo 如何使用 XML 名字空间第三版)。
这是当前 Mismo 工程守则的一个列表,有的还在起草中:
- Mismo business terminology
- XML profile
- Namespaces
- Unicode
- Class words
- Approved acronyms
- Mismo technical terminology
- Filenames-namespaces
- Attribute and element names
- Personal information meta data tag
- Document type definition (DTD) and zero-delta schema
- Implementation guides
- Document data mapping
- Embedded file profile
要访问Mismo wiki, 可以去这里 wiki.mismo.org/mismowiki.
如果你想在个人层次上研究 wiki 技术,看看 TiddlyWiki 吧。这是一个很不错的、自完备的 wiki,使用 html 来保存所有东西,非常易于迁移。我使用它来作为个人笔记和技术文档工具。
© 2007 Mortgage Banking. All rights reserved.
© 2007 ECT News Network. All rights reserved.
Monday, March 05, 2007
mutt 转发邮件的设置
set mime_forward=yes
set mime_forward_rest=yes
参考: Mutt FAQ
Mutt 中自动显示 word 文档
通过使用 wvHtml 可以把 doc 转换成 html,然后浏览,下面是 ~/.mailcap 设置
application/msword; wvHtml --charset=utf8 %s - | w3m -T text/html; nametemplate=%s.doc; copiousoutput不过,有的时候,MIME 会显示 doc 附件为 application/octet-stream ,这时可以让 mutt 进一步判断 MIME 类型,在 mutt 配置文件中写:
mime_lookup application/octet-stream就可以了。
参考,王垠的介绍,还有就是 mutt 用户手册。
Mutt 中根据编码不同,自动用不同命令显示附件内容
好在 mutt 会把 MIME 参数传送给 mailcap 的处理语句,这样,比如
Content-Type: text/html; charset=gb2312这个 charset 也会作为变量 %{charset} 传送给命令行,所以,我们在 ~/.mailcap 里面设置
text/html; w3m -I %{charset} -T text/html ; nametemplate=%s.html; copiousoutput;就可以把任意 text/html 内容转换成 utf-8,然后用 w3m 显示。
参考文献: 《Mutt 用户手册》第五章。
Sunday, February 18, 2007
新年许愿
- 改几个坏毛病, 嗯, 尤其是自己的时间管理方面, 提高一点自制力.
- 为求学生涯划上一个好看的句号.
- 为职业生涯开个好头, 找到一份好工作.
- 完成我的 linux 书.
- 来一个甜蜜幸福的婚礼.
新年, 新生活
Sunday, February 11, 2007
[译文] 使用加密工具提高系统安全性
Thursday February 08, 2007
By: Rui Lopes
多数情况下,诸如 SELinux, AppArmor, Bastille 以及 grsecurity 系统级的安全解决方案能够让你的 Linux 桌面系统相当地安全。不过,有些情况下,文件或是目录的加密还是必要的。当你需要把包含你的私人数据的文件通过可以动存储介质或是网络复制到其他什么地方的时候,有些工具能得上忙的。
这些工具大部分是命令行方式工作的,不过,它们确实很简单,大部分患有命令行恐惧正的新手在经过一定的努力之后都能使用它们。所有这些工具都很小、需要极少的依赖库 (如果确实需要的话),可以说都是高度便携的。
Bcrypt
我的 U 盘里总会放着一份 Bcrypt. 这是个极为简单易用的基本工具。一旦装上了 bcrypt, 你惟一要做的就是在命令行依次输入 bcrypt 和你要加密的文件名。之后,Bcrypt 会要求你提供一个密码,仅此而已。加密之后,Bcrypt 会给文件加上 .bfe 的扩展名。同样的命令也可以用于解密,bcrypt 仅仅通过文件的扩展名来决定是要加密还是解密。
Bcrypt 使用 Blowfish 。算法。密码通常要有 8 到 56 个字符,并被内部哈希为一个 448 位密钥以增强安全性。缺省条件下,加密文件的时候,原始文件将被删除并在原来存储文件的位置覆写 3 次,以避免通过反删除工具发现原始文件,你可以增加或减少重写的次数。
Bcrypt 缺乏灵活性和各种开关,所以可能不是你加密军火库中的首选武器,不过,简单是它的强项。根据 Bcrypt 的项目网站介绍,它可以用于 Linux 和 *BSD, 没有 Windows 版本; 不过,这个网站似乎有年头没更新过了。
Ncrypt
Ncrypt 是另一个简单的文件加密/解密程序。你可以选择三个 AES 加密标准候选加密算法: Rijndael, Twofish, 和 Serpent 中的任何一个。开发者特别注意了生成密码的安全性: 当一个文本密码被用于加密文件的时候,它首先被转换为 SHA-1 哈希值,而原文被立刻清除出内存。之后,这个哈希值被用于密钥,随后,也会被清除出内存。
Ncrypt 同时有 Unix 和 Windows 版本。它的用法很直接: 使用 ncrypt 命令,用开关选择加密算法,是要加密、解密、还是要清除文件,以及输入输出文件名。。原始文件将被从磁盘上彻底清除;Ncrypt 也有一个非常有用的文件清除功能,你可以用它安全删除文件。
Pad
与 Bcrypt 和 Ncrypt 不同,Pad 使用 on-time pad (OTP) 加密。一个文件会被分成两个乃至更多独立的"pads", 没一个都类似于白噪声。两个文件看起来只是混入了无害的随机数据,可以在用户喜欢的任何时候被重新组装起来。
OTP 有非常悠久的历史了。理论上讲,它是惟一真正不可破解的加密手段。不过,它有一些实际应用上的弱点: 每个 pad 尽可以被使用一次,而且必须是真正的随机数 (这实际上非常困难),并且它很容易受到中间人工具。这样,它不被推荐用于日常加密任务。不过,有一个场合下,OTP 被认为是有价值的: 自由语音加密。比如,如果有人希望自由分发一个机密文件,它可以将文件拆成不同的 pad,并将多个部分存放在不同的一同里,并告诉别人如何获取它们并组合成原始文件。(译注: 这段翻译的不怎么好,因为译者根本不懂什么是 OTP, 查了半天还是不怎么明白,欢迎解释。)
GnuPG对于多数人来说,GnuPG 是开源文件加密的不二选择。一些发布版还把它随发布版预装。引用其 FAQ 中的原文,"GnuPG 代表 GNU 隐私卫士,是用于安全通信与数据存储的 GNU 工具。它可以被用于数据加密和创建数字签名。它包含一个先进的密钥管理工具并与 RFC 2440 所描述的 OpenPGP Internet 标准提案相兼容。因而,它的目标是兼容 NAI 公司的 PGP。."
Bcrypt, Ncrypt 和很多其它加密工具使用对称密钥加密文件。而 GnuPG 和 PGP 一样,使用公钥密钥加密,尽管它也支持对称加密。公钥加密使得加密和签名多个文件并和其他用户交换它们变得很容易。对于对称密钥和公钥密钥的综述以及它们的工作机制,可以参考 GnuPG 手册的第二章和 FAQ 的 7.1 节。
GnuPG 可以独自地作为命令行工具使用,它有很多功能,并可以满足各种挑剔的用户。不过,它也有各种不错的前端工具可用。其中,我所用的是 KGpg, 集成在 KDE 之中,这方便了我很多日常加密工作。比如,其它我提到的加密工具只能加密文件,而不能加密目录。你可以用 KGpg 加密目录中的所有文件,或者创建一个 .tar.gz 或是 .zip 文件,并对它进行加密 。使用 KGpg, 我只要双击一个目录并告诉程序打包加密之即可。KGpg 也允许你在桌面创建一个碎纸机,用于安全删除你放在里面的文件 (而不是目录)。这非常方便,尽管我建议你阅读作者的关于破碎文件的安全说明。KGpg 的易用性非常优秀;即使对新手来说,学习曲线也非常短。
GnuPG 的开发步伐非常文鼎,而且支持多种操作系统。它在多种 Unix 系统上都可以编译,而且通过 Gpg4Win 提供了 Windows 移植版本。对于 Unix 系统的邮件加密的支持性也非常可靠: 查询 GnuPG FAQ 的 4.15 节,可以看到提供 GnuPG 集成的邮件客户端的列表 (很遗憾,支持 OpenPGP 标准的 Windows 客户端十分少见)。关于更多的邮件工具,可以看看 Aegypten 项目。
关于加密的更多信息,两个不错的起点是对应的 Wikipedia 文章和 Cryptography FAQ.
Rui Lopes 是一个葡萄牙网页设计师和独立纸片人,在技术领域有广泛兴趣。
Wednesday, February 07, 2007
发现一个兼容性问题
降级回到 Debian Sid 的 Iceweasel 2.0.0.1 (也就是 Firefox 2.0.0.1) 才解决了问题,啥都正常了。
Wednesday, January 03, 2007
应用层再分层
对很多应用层应用案例,可能可以分三个子层面,暂时按照王氏命名法,命名为
语义子层 semantics
表达子层 express
传输子层 transport
传输子层包含应用层信令, 传输内容的规格、长度等,例如 HTTP, SMTP 等
表达子层是应用层内容的基本表示形式、语法表达规范等,例如 MIME/Base64, XML 等
语义子层是应用层内容的与语义相对应的具体语法格式,例如 XHTML, RDF 等
对于传统的协议,可能有的协议会对应其中的多个子层,嗯,呵呵
偶也不知道 SOAP, SDP, WSDL 啥的到底应该怎么对应,不过,应该能对应上吧,至于那些不能对应的,呵呵,偶因为还不清楚,说不好怎么弄
Saturday, December 30, 2006
技术分类学问题
可是,伊仍然希望我们给出一个漂亮的分类学体系,然后再把知识添加进去。而实际上,我个人相信,以自组织方式,通过多次迭代,建立几组索引,进行不完全分类可能更有利,我的立足点是:
- 可类比性: 每组索引/分类尺度要使得纳入范围的知识条目具有可类比性。
- 易于发现: 如果有人希望通过索引找到需要的东西,他不需要一个完整的分类法,而需要按照他希望的思路找到一个他可以接受的分类法,从而尽快找到目标就好。
Wednesday, December 27, 2006
Saturday, December 23, 2006
禁用盗版谁是赢家
盗版用户不会都转化成Linux用户,微软开心,毕竟基数足够大,而大部分人宁可付费也不会去掌握Linux的。
会有一部分人开始参与Linux, 对Linux有潜在的推动力,Linux现在具有购买成本的优势了。不过,Linux真的繁荣要靠拥有Linux思维方式的人的增加,这不是一时半会的事。
呵呵,还是没影的事呢,不琢磨了。
转一则新闻
出处: http://www.ben.com.cn/bjxw/fzxx/200612/t20061223_141476.htm
| 一科长使用盗版软件被撤职 | ||||||
| ||||||
| 作者: | ||
| 京报网讯(记者方芳)记者昨天从市使用正版软件工作领导小组办公室获悉,平谷区某单位一科长因在办公电脑里装载盗版软件被撤职,这是本市首个使用盗版软件被撤职的公务员。 平谷区是全市最早完成政府部门使用正版软件工作的区县之一。全部装上正版国产软件后,为巩固成果,平谷信息办等相关职能部门加大了管理监控力度,专门成立了一个监督小组。 平谷区某单位一位科长就撞到了监督小组的手上。这位科长为了能够玩游戏,数次卸载国产软件,换上盗版软件。监督小组查到后,第一次给予警告,之后又连续查到三四次,其单位给予这位科长撤职处分。 市使用正版软件工作领导小组办公室有关负责人表示,对类似情况给予严肃处理反映了政府部门打击盗版的决心和力度,随着今年全市三级党政机关使用正版软件工作的全部结束,今后还将开发一些技术手段加强对党政机关办公系统的监督管理。 |
Thursday, December 21, 2006
简单说说DNS配置
上一级域名服务器的设置,如果需要通过其他服务器的辅助来提供对自己不管辖的域名提供解析,那么:
修改 /etc/named.conf.options 写下这么点东东:
forwarders {
211.68.71.4;
}
里面写上上级的域名服务器,有多个也可以写多个。
解析自己管辖地域的域名,修改 /etc/named.conf.local , 在里面加入自己解析的区域
zone "your.domain" {
type master;
file "db.yourname";
};
如果你的主机都是 xx.your.domain , 那就把你的域名写在这里。
还可以加域名的反向解析
zone "168.192.in-addr.arpa" {
type master;
file "db.reverse";
};
反向解析的意思就是,如果你管理的IP网段是 A.B.C.D , 那反向解析的域名就是 D.C.B.A.in-addr.arpa , 这里,区域是后面的部分,也就是网段的部分。
地址数据库的写法:
$TTL 604800
这个是更新时限,然后后面是一些这个域名数据库文件的更新时间的,设置
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
再往后就是域名更新会报告给谁
IN NS ns
ns IN A 127.0.0.1
IN是指internet地址,NS 是域名服务器,A 记录是主机名对应的ip地址,对于其他主机的解析
your.domain区域数据库里面
www IN A 192.168.10.8
是指 www.your.domain 对应的IP
168.192.in-addr.arpa 区域数据库里面
8.10 IN PTR www.your.domain.
是指 192.168.10.8 对应 www.your.domain
域名的最后有个点表示后面不需要加其他后缀了,否则还要把区域加上,如果要写全名,上面的A记录还可以写成
www.your.domain. IN A 192.168.10.8
MX记录,也就是邮件域名解析,这是邮件传递用的,比如 wangxu@a.b.c 中 a.b.c 对应的邮件传送主机一般和其他服务直接访问的主机不是同一台,而需要特殊的域名解析,比如:
your.domain. MX 10 mail.your.domain.
这里 10 是优先级,数字越小,优先级就越高,后面的 mail.your.domain. 就是邮件传送服务器,这里放的是域名,还要为他准备一个A记录,来找到主机
mail.your.domain. A 192.168.10.2
好了,就这么简单 :)