以史为镜

2010/06/11 | 00:07 | 分类:IT杂谈 | 标签: | 398次阅读

  不知大家看了有关部门前几天发布的《中国互联网状况》白皮书之后是什么想法。文字亦真亦幻,但反映的实现你我都懂。
  有些人经历过中国互联网传说中的“the good old days”,而我只经历了它的尾巴,那是在中国石油网接入 Internet 之前,用 modem 长途拨到一些 BBS 上下载石油网里找不到的软件。有些东西那时迫切追求,现在已经得到;有些东西那时毫不在意,现在却已失去。
  我上周在淘宝上偶然发现有人出售一些旧软盘,电话咨询了一下,感觉里面有些软件有点意思,于是花不多点钱就收了。其中比较有历史意义的要算这两套:《Internet 网络&多媒体电脑函授教材》、《国家级 Internet 证书培训考试——Internet 全真模拟上网系统》。这两套软件是由“天津市福克斯 Internet 培训中心”在 1996、1997 年出品的,分别是 DOS 和 Windows 版的模拟上网环境、考试教程以及一些小工具。历史总是在螺旋式上升,“办证上网”和“模拟上网”这些听起来好笑的概念,说不定哪天历史轮转回来,又会被赋予新的含义。要赞的是这两套软盘质量真是过硬,居然全部被我成功地 dd 出来了。按照现行版权法规,我不能在这里提供软盘映像下载,但有欢迎兴趣的朋友与我私下探讨。
  上次说到 kaopulity 的问题。我一直没有找到国内哪个归档网站或是 abandonweb 较为完整地收藏了中国互联网、或是其某一子领域的数字遗产。倒是国外的华人圈子里能发掘到一些东西:寄存在 ibiblio 数字档案馆的 CCIC(Chinese Community Information Center)是上世纪 90 年代一群留美中国学生创办的面向华人(主要是海外华人)的网络服务组织。其 FTP 上保存了大量 90 年代的网络软件、中文工具以及与网络、中文相关的技术资料。另外由于这个网站主办者具有特殊的背景,这个 FTP 上还有其他方面的一些史料,有兴趣的朋友可以去挖掘。
  以史为镜,可以知兴替。数字遗产和数字历史理应更容易保存和传播,无奈于这个浮躁的中国互联网游乐场。无论如此,先把今年这份《中国互联网状况》白皮书保存下来,等到某些人的预言成真时,再翻出来对照。

以史为镜

以史为镜

三亚印象

2010/05/30 | 20:59 | 分类:生活空间 | 标签: | 480次阅读

  从三亚回来半个月了,一直在忙项目,今天抽空贴点照片,写点印象。
  理论上说,这是我第一次离开欧亚大陆。当然,海南作为一个大陆岛,它与欧亚大陆脱不开干系。到达南海之滨也使我在游览了渤海、黄海、东海之后,完成了对中国四大领海的探访。
  到达三亚,从凤凰机场到宾馆的路上,最令我感到惊异的是这里居然有一个穆斯林聚居区。沿路尽是清真餐馆、回民学校和围着头巾的女子,仿佛穿越回了大西北。到宾馆上网一查,原来这里居住的是回辉人,一个与西北穆斯林并不同源、但也被归入回族的南岛语系聚落,长见识了。第二天我们又一次路过这里时,导游在车上开起了回民的玩笑,又拿一些汉族人对穆斯林常见的误解来说事。这也就是在海南、在车上,她要是敢在西北的穆斯林聚居区这样调侃,恐怕不会有什么好结果。
  三亚城市规模不大,从地图上看与西部的一些二、三线城市差不多,但人口密度和建筑的高度则明显高于西部。从城市街景和接触到的居民来看,这里还是有一定的生产和生活气息的。不像某些旅游城市,几乎所有商店都是为游客而设,所有人都在大街上拉客。但据导游说,三亚这几年的扩张集中在海岸圈地:海滩瓜分给高档度假酒店,近海修建别墅和高档楼盘,而居民的生活空间,特别是当地人享受当地自然资源的权利正在受到排挤。不知这座城市未来还是否适合人居,是否会堕落成纯粹的旅游城或富人城。
  三亚给我带来新鲜感觉的,当属各种各样的热带植物。在静僻的街道穿行,仿佛来到了植物园。有些椰子树上的椰子没有摘,真怕会掉下来砸到人。由于是原产地,所以这里的热带水果比北京便宜很多,各种知名不知名的都可以买来大吃一斤。当然,到海南肯定不会错过吃海鲜,那几天吃下来,我们最渴望的就是绿色蔬菜了……还有一些之前没有听说过的特产,比如黄辣椒、白胡椒,也改变了我对南方沿海吃甜食为主的印象。吃了几天不过瘾,又带回来一些。
三亚印象
  说到旅游,我们来的时机也不算旺季,南山寺、天涯海角等景区旅客并不是很多,至少多数景点照相不需要排队。说是国际旅游岛,但我也没有见到太多外国人,倒是发现 foursquare 上面尽是英文地标。我原计划标注更多中文的上去,可当天的《焦点访谈》一播,我看还是不给这个优秀的社会化服务添乱了。
  南山寺是一座新时期修建的新寺庙。虽说这里因鉴真法师而有千年佛缘,但一座新寺加之耗资数十亿元的整个南山佛教文化园,难免让人怀疑,宗教和旅游哪个的意味更重?不过海上观音确实壮观,这让我回想起了 DOS 版仙剑奇侠传中刻着“苦海无涯,回头是岸”的海上观音像。
三亚印象
  天涯海角景区的那几块石头同样承载的是历史和文化,但相比海上观音,其视觉冲击力就有些逊色了。我们过来更多是在看海、踏浪。然而也就是在这个景区内,我们发现了疑似的排污口和周围发黑的海滩。这些东西呀,早已见怪不怪了。
三亚印象
  时间有限,又有工作任务,因此没有去其他知名旅游景点。带回来的除了照片,就是成箱的水果。对于我,这次去三亚的一项重要收获就是在师兄师姐的指导下学习了游泳的基本要领。在宾馆的游泳池里经过三天、每天一小时左右的练习,我能够蛙泳带换气地游上若干米了,在海边也能实验性地扑腾两下了。感觉到学游泳的关键就在于——不怕。

★ 更多照片点击这里 ★

将海峰五笔码表转换到 iBus 下使用

2010/05/13 | 23:09 | 分类:Linux与开源 | 标签: | 683次阅读

  Ubuntu 早已使用 iBus 取代 SCIM 作为默认的输入平台了。但我一直还在用 SCIM,原因就是 iBus 的五笔码表实在有些问题:生僻字或繁体字常常排在常用的简体字前面。它默认会自动调节词频,虽说调节词频是解决上述问题的办法,但这与很多五笔用户的习惯不符。不过其实 SCIM 也有几处用得不爽,例如不方便输入书名号、破折号等。
  我今天简单研究了一下 iBus,发现自动调节词频是可以关闭的(在码表中,而不在界面或配置文件中);而它的标点符号输入也相对自然。因此,决定找一套好用的码表替代原有码表,进而尝试用 iBus 取代 SCIM。我选择了 Windows 下的海峰五笔(86版)码表:其一,它的词库规模适中,我在 Windows 下用过感觉不错;其二,它使用标准的 Windows 码表格式,便于提取数据;其三,作者在主页上宣布“鼓励大家反编译,定制自己的专用输入法”,这种开放的态度让我选择了它。
  将海峰五笔码表转换到 iBus 下,步骤如下:
  1.在 Windows 下使用海峰五笔自带的 ImegenU.exe 工具将编译过的 Sun86.mb 码表逆转换为文本码表 Sun86.txt。不要用 Windows 自带的 Imegen.exe,在实验时发现 Imegen.exe 会产生部分错误的编码,比如“跑”字,暂不知其中原因。
  2.将基于 UTF16LE.DOS.BOM 编码的 Sun86.txt 转换为 UTF8.UNIX.NON-BOM 编码,命名为 Sun86-u.txt。在 Linux 下可使用以下命令:

  1. iconv --from-code=utf16 --to-code=utf8 --output=Sun86-u.txt Sun86.txt
  2. fromdos Sun86-u.txt

  3.编辑 Sun86-u.txt,删除头信息,只保留码表。
  4.编写一个小程序(trans),将 Windows 文本码表转换为 iBus 文本码表,命名为 Sun86-i.txt。

  1. ./trans Sun86-u.txt > Sun86-i.txt

  5.下载 iBus 码表源代码(ibus-table-xingyin),从中提取出原版五笔的文本码表 wubi.txt。
  6.使用 Sun86-i.txt 中的内容覆盖 wubi.txt 的 Table 段。可保留 wubi.txt 中以 zz 开头的一系列非汉字符号的编码定义。
  7.修改 wubi.txt,禁用词频调整:

  1. DYNAMIC_ADJUST = FALSE

  8.编译并覆盖码表:

  1. bus-table-createdb -s wubi86.txt
  2. sudo cp wubi86.db /usr/share/ibus-table/tables

  9.重新登录桌面环境,新的码表即可生效。

  另外,在使用中发现 iBus 默认没有启用无重码自动上屏的选项。Google 了一下,可参考这篇的方法。直接修改 /usr/share/ibus-table/engine/table.py,找到:

  1. self._auto_commit = self.db.get_ime_property('auto_commit').lower() == u'true'

修改为:

  1. self._auto_commit = False

然后使用以下 python 程序:

  1. import py_compile
  2. py_compile.compile(r'table.py')

将其 table.py 编译为字节码文件 table.pyc 即可。

  编译好的海峰五笔(86版)for iBus 码表以及上面提到的 trans 程序源代码可在以下位置下载:
  http://files.linjian.org/c_cpp/SunWB-iBus.tar.gz
  http://www.linjian.cn/files/c_cpp/SunWB-iBus.tar.gz

使用智器 V5 实现山寨 MiFi

2010/05/04 | 23:30 | 分类:Web与移动平台 | 标签: | 915次阅读

  上个月 iPad 上市后,我就常听到 idealeeheqian 同学鼓吹 MiFi 及其类似设备。说白了,那就是一个 3G-to-WiFi Adaptor。只要有一台同时支持 3G 和 WiFi 的设备,并且其系统相对开放,实现 MiFi 的功能就不难。笔记本电脑当然可以,不过体积大了点。正好我年前购入一台智器 V5,就用它来山寨一台 MiFi 吧。
  智器 V5 的三个系统中,只有 Ubuntu 预装了 3G 驱动和拨号程序,那就在 Ubuntu 中实现。首先使用 USB OTG 连接 3G Modem,我这里是华为的 WCDMA Modem。智器最新版的固件不需要显式拨号,Modem 插入之后自动联网。然后使用 NetworkMananger 创建新的无线网络,为其设定名称(“miffy”如何?)和密钥,这样一来智器摇身一变成了无线 AP。现在试用笔记本电脑搜索周围的无线网络,很快就会发现智器的信号。连接之,密钥校验通过之后笔记本和智器便构成了局域网,使用 /sbin/ifconfig 可查看各自的 IP(在我这里为 10.42.43.*)。Ping 一下,连接正常。

使用智器 V5 实现山寨 MiFi

  下一步理应在智器上配置 iptables,将来自笔记本的数据包转发到 WCDMA 网络。智器的 Ubuntu 中虽然有 iptables 命令,然而运行后才发现这个 Linux Kernel 中的 ip_tables 模块已被裁减。用不了 iptables,就先找点简单的办法连接外网,比如 SSH 转发。智器的 Ubuntu 中预装了 OpenSSH 服务端,使用 sudo /etc/init.d/ssh start 命令启动即可。在笔记本上使用 ssh user@10.42.43.1 -D 7474 登录智器(不知道密码?那就先用 sudo passwd user 设置一下密码),然后将浏览器的 Socks 代理服务器设置为本地的 7474 端口。实验一下,访问网页正常。
  智器电力相当有限,特别是同时打开 WiFi 和 3G 的时候。要把它当 MiFi 用的,最好加一个移动电源,比如我用的这块 4400mAh 锂电池。最终三个设备加其来的体积比 MiFi 大不少,但比起笔记本电脑还是可以接受的。其续航能力与笔记本相当,当然比不过专业的 MiFi。

使用智器 V5 实现山寨 MiFi

  哪位朋友有空研究着重新编译一下智器的 Linux Kernel,加入 ip_tables 模块?这样我们山寨的 MiFi 就更加完美易用了。从智器粉丝团的相关帖子看应该不难,有个 Mer-SmartQ 可用,需要的可能只是经验和时间。
  附,iptables 可用之后,数据包转发所需要的配置:

  1. sudo su
  2. iptables -F
  3. iptables -P INPUT ACCEPT
  4. iptables -P FORWARD ACCEPT
  5. iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  6. echo 1 > /proc/sys/net/ipv4/ip_forward

GINA 与 pGINA——实现自定义的 Windows 用户身份认证

2010/05/03 | 01:08 | 分类:Windows开发 | 标签: | 599次阅读

  最近接触到一个 Windows 平台下的开源项目——pGINA。鉴于网上没有较为完整的中文介绍,特在此推介一下。
  要知道 pGINA 做什么,首先需要了解 Windows 的用户管理框架。相关资料推荐阅读 Microsoft Windows Internals,这里不再赘述,只给出我列的一张 Linux 与 Windows 用户管理中的对应技术表格供熟悉 Linux 的开发人员参考。其实 Windows 也像 Linux 一样,开放了用户身份认证与用户管理系统的接口,允许第三方如同开发 Linux PAM/NSS 那样,为 Windows 开发新的认证入口(GINA)与认证包(Windows Authentication Packages)。

Linux 与 Windows 用户管理中的对应技术
  Linux Windows
登录程序 * login Winlogon
认证入口 PAM (Pluggable Authentication Modules) GINA (Graphical Identification and Authentication)
默认认证模块 pam_unix.so msgina.dll
用户系统入口 # NSS (Name Service Switch) LSASS (Local Security Authority Subsystem Service)
默认本地用户系统 files (/etc/passwd, /etc/group, /etc/shadow) SAM (Security Account Manager)
常用目录用户系统 LDAP (Lightweight Directory Access Protocol) AD (Active Directory)
* 仅以 Linux 本地 shell 登录和 Windows 本地图形界面登录为例
# NSS 与 LSASS 功能并不相同,只在用户认证的流程中的位置相似

 
  然而,我们能在网上找到的开源的 GINA 模块和认证包的相关资料远不如 PAM/NSS 丰富,找到的第三方实现几乎都是软硬件厂商用于接入自己基础设施的闭源专有软件(例如某些笔记本电脑的指纹认证)。这一方面可能出于微软商业风格与 Linux 开源风格的差异;而单从技术上看,微软“大而全”的 API 风格相比 Linux 的 KISS 风格对于简单的示例性或改进性开发无疑是一道壁垒。完整的 GINA 模块需要实现数十个接口,而系统中一次只能配置一个有效的 GINA,不像 PAM 那样可以通过配置文件灵活地组合使用只关注特定功能(认证、账户、密码或会话)的小模块。因此连微软自己的文档也告诫开发者,在编写新的 GINA 模块之前看看能不能用 Hook 之类偏 Hack 的技术实现自己所需的功能。
  正是由于 GINA 开发的繁琐性,才蕴生了开源的 pGINA 框架。pGINA 本身是一个 GINA 模块,它提供了一致的图形界面,并将 GINA 的数十个接口二次抽象为几个简单易懂的接口(密码认证、密码修改、会话 Hook 等),允许二次开发人员利用这些接口开发插件,实现自定义的认证交互程序。pGINA 只适用于以密码作为认证凭证,在这一前提下,其功能可以涵盖 GINA 接口的主要功能点(认证管理、密码管理、屏幕锁定等),而且图形界面交互的开发也由必须变为可选。因此,使用 pGINA 将在很大程度上简化自定义用户认证机制的开发。对于最终用户,只需要安装 pGINA 并配置指定的插件,即可使用新的用户名/密码源取代 Windows 默认的 SAM 用户名/密码认证。
  pGINA 的作者和其他志愿者已提供了十余种开源的 Windows 用户认证插件,例如基于既有 LDAP、MySQL、FTP、SSH 用户系统的认证,甚至基于 Slashdot 账号的认证等,可供开发者学习或修改。对于认证通过但在本地系统中尚不存在的用户,pGINA 的默认行为是为之自动创建新账户,这在一些公共计算机中比较有用。
  pGINA 针对 Windows XP 的 1.X 版本代码已在 2006 年底稳定冻结,我测试多个插件(包括自己实验开发的插件)工作正常。而针对 Windows Vista 和 Windows 7 的 2.X 版本目前正在持续开发中(Alpha 阶段),我测试发现部分旧插件不能正确运行。
  有关 pGINA 的 GINA 模块、插件、源代码和开发资源,可在其 SourceForge.net 页面下载。pGINA 给出了 M$ Style to KISS Style 的一个良好范例。

页面存档: 上页 1 2 3 4 5 6 7 8 ...47 48 49 下页