Thinkpad 上的仿 'SMS' 应用演示
还记得上次对 MacBook 做的关于 SMS 的介绍吗?IBM 的 dw 刚刚放了一篇关于如何用 perl 检测 HDAPS(硬盘主动保护系统) 传感数据并控制程序的例子。同时 YouTube 上也有演示:
从 YouTube 的相似链接来看,还有用 ruby 实现的例子... 当然,目前这一切只能在 linux 上实现
技术
还记得上次对 MacBook 做的关于 SMS 的介绍吗?IBM 的 dw 刚刚放了一篇关于如何用 perl 检测 HDAPS(硬盘主动保护系统) 传感数据并控制程序的例子。同时 YouTube 上也有演示:
从 YouTube 的相似链接来看,还有用 ruby 实现的例子... 当然,目前这一切只能在 linux 上实现
我是在搜索 mysql 的一个功能的时候发现 mysql 居然有了官方的中文手册,然后顺藤摸瓜,知道这个手册是万里开源这个公司提供的。
从缺乏创意的名字,这个公司实在无法在第一时间内获得我们的尊重,但它却是 MySQL 在中国的金牌合作伙伴,真是让人大跌眼镜。在 google 上搜索,关于这个共创和 Turbolinux 合作产物的介绍是少之又少,首页也是很没有诚意的 "Under constructing....",直接输入 http://greatlinux.com 更是直接去了 turbolinux,不由得让人们对其是否能承担 mysql 金牌合作伙伴(可能还是中国大陆唯一)这一使命而心存疑虑.
但无论如何,对于中国现在如火如荼的以 MySQL 开始其基础架构的创业公司而言,现在有了一个可以近距离获得现场支持的可能,另一方面,这类基于开源产品的专业服务也是中国难能可贵的尝试。至少万里开源的血统还算高贵纯正,如果您确实在担心存储在 MySQL 中的数据有一天可能突然无法访问,那么可以考虑联系一下万里开源,看看他们的实力和姿态是否足以打动你们的 CIO。当然价格也是需要考虑的因素,MySQL 的白金服务也不过 5000$/Year,不晓得万里开源是怎么定义其服务项目和收费标准的。
虽然我得承认我个人并不喜欢它,但这里还是先为其鼓掌吧。
==================================================
后记:这样的写作风格是不是所谓的华尔街体?
由于编译过程中需要生成的临时文件 xpidl.exe 要链接 glib 和 libIDL,对应 MOZILLA_1_8_BRANCH 来说,用 vc8 链接它们有些问题(Visual C++ 2005 Express Edition),需要的 patch 都在 trunk 里面。所以如果是编译 Firefox 1.x,1.5.x,甚至以后的 2.0.x 的话,最好还是用 Visual C++ Toolkit 2003
但另一方面,Visual C++ Toolkit 2003 是一个很不完整的开发平台,欠缺不少编译需要的工具和库,下面是我的编译环境配置过程,供参考:
1. 安装 Visual C++ Toolkit 2003,30兆安装包.
2. 安装 .NET Framework Redistributable Package version 1.1,20兆安装包(当然可能你的 XP 在升级过程中已经具备了这个环境)
3. 安装 .NET Framework SDK version 1.1,100 兆安装包
4. 安装 Platform SDK. 我半年前只有"Microsoft® Windows Server 2003 SP1 Platform SDK - April 2005 Edition",现在最新版是"Windows Server 2003 R2 SDK - March 2006 Edition". 我只安装了:
Configuration Options(但没有安装 Register Environment Variables)
Microsoft Windows Core SDK(Tools、Build Environment、Redistributable Components)
Microsoft Web Workshop (IE) SDK(只安装了 Build Environment)
5. 安装 MASM32,半年前是 8.2,现在最新版本是 9。免费下载,3兆安装包。这包里面提供了 ML.EXE 和 DUMPBIN.EXE 是编译需要的
6. 下载 moztools-static.zip ,以及 vc71-libIDL-0.6.8-bin.zip、vc71-glib-1.2.10-bin.zip. 安装方法为:
6.a 解压 moztools-static.zip 到 C:\moztools
6.b 解压缩 vc71-libIDL-0.6.8-bin.zip、vc71-glib-1.2.10-bin.zip. 比如到 C:\vc71 目录
7. 安装 cygwin,除了缺省包以外只需要
Devel 类别下选:patchutils, make 3.80 (not 3.81!)
Interpreters 类别下选:perl
Archive 列表下选择:zip, unzip
安装完以后把 cygwin 环境里面的 link.exe 改个名字,因为路径上可能有冲突
基本上免费工具就这么多了,但是还是缺,需要 hack.....
1. VC Toolkit 2003 没有缺省带 lib.exe, 要获得有两个方法
1.a 要么是安装 Platform SDK 的时候选择 Microsoft Windows Core SDK -> Tools -> Tools (AMD 64-bit) 来获取
1.b 而我当时看到 64bit 就害怕,就自己创建了一个 lib.bat,内容为:
link /lib %*
然后修改 mozilla 关于 lib.exe 的相关配置
修改 configure、nsprpub/configure,寻找 ""AR=lib"" 以及 ""HOST_AR=lib"" 的地方,修改成 lib.bat
修改 security/coreconf/WIN32.mk,寻找 ""AR = lib"",修改成 lib.bat
以上方法参考链接
2. 生成 msvcprt.lib (在 Cygwin 环境下..)。
进入 ""C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin"",执行
echo ""LIBRARY msvcp71.dll"" >msvcprt.def
echo ""EXPORTS"" >> msvcprt.def
dumpbin /exports msvcp71.dll | awk '{ if (FNR > 19 && $4 ) print $4}' | sed -e 's/\r//' >> msvcprt.def
link /lib /def:msvcprt.def
mv msvcprt.lib ../lib
参考 链接
在 cygwin 自己的 home 目录下创建 .mozconfig
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/my_firefox
ac_add_options --enable-optimize
ac_add_options --enable-crypto
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --disable-activex
ac_add_options --disable-activex-scripting
ac_add_options --disable-xpconnect-idispatch
ac_add_options --disable-accessibility
ac_add_options --disable-test
设置编译所必须的环境,比如创建一个 vc71.bat 文件
@echo off
rem --- Basic config, with VC7 libIDL files
SET MOZ_TOOLS=C:\moztools
SET GLIB_PREFIX=C:\vc71
SET LIBIDL_PREFIX=C:\vc71
SET CYGWINBASE=C:\cygwin
rem --- Clean slate start
SET INCLUDE=
SET LIB=
SET PATH=C:\;C:\windows\system32;C:\windows;C:\windows\system32\wbem;
rem --- Then prepend Cygwin path
SET PATH=%CYGWINBASE%\bin;%PATH%
rem --- Set VC7 compiler environment vars
CALL ""C:\Program Files\Microsoft Visual C++ Toolkit 2003\vcvars32.bat""
CALL ""C:\Program Files\Microsoft Platform SDK\SetEnv.Cmd"" /XP32 /RETAIL
CALL ""C:\Program Files\Microsoft.NET\SDK\v1.1\Bin\sdkvars.bat""
rem --- Add glib/libidl to build environment
SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%;
SET LIB=%GLIB_PREFIX%\lib;%LIB%
rem -- moztools comes last after glib/libIDL
SET PATH=%PATH%;%MOZ_TOOLS%\bin;C:\MASM32\bin
bash --login -i
最后执行这个 bat 进入编译环境,进入 mozilla 源代码目录,
make -f client.mk build
如果编译过程中报告什么没有 comsupp.lib,可以打个 patch 让程序不去找它.
参考http://www.koka-in.org/~zophos/SideB/daytripper/index.rhtml?date=20050208
--- browser/components/build/nsModule.cpp.orig 2005-02-07 14:50:22.350250000 +0900
+++ browser/components/build/nsModule.cpp 2005-02-08 18:34:08.470375000 +0900
@@ -58,7 +58,7 @@
#include ""nsPhoenixProfileMigrator.h""
#include ""nsSeamonkeyProfileMigrator.h""
#if defined(XP_WIN) && !defined(__MINGW32__)
-#include ""nsIEProfileMigrator.h""
+//#include ""nsIEProfileMigrator.h""
#elif defined(XP_MACOSX)
#include ""nsSafariProfileMigrator.h""
#include ""nsOmniWebProfileMigrator.h""
@@ -89,7 +89,7 @@
NS_GENERIC_FACTORY_CONSTRUCTOR(nsProfileMigrator)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSeamonkeyProfileMigrator)
#if defined(XP_WIN) && !defined(__MINGW32__)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEProfileMigrator)
+//NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEProfileMigrator)
#elif defined(XP_MACOSX)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafariProfileMigrator)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsOmniWebProfileMigrator)
@@ -136,11 +136,10 @@
nsProfileMigratorConstructor },
#if defined(XP_WIN) && !defined(__MINGW32__)
- { ""Internet Explorer (Windows) Profile Migrator"",
- NS_WINIEPROFILEMIGRATOR_CID,
- NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX ""ie"",
- nsIEProfileMigratorConstructor },
-
+// { ""Internet Explorer (Windows) Profile Migrator"",
+// NS_WINIEPROFILEMIGRATOR_CID,
+// NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX ""ie"",
+// nsIEProfileMigratorConstructor },
#elif defined(XP_MACOSX)
{ ""Safari Profile Migrator"",
NS_SAFARIPROFILEMIGRATOR_CID,
--- browser/components/migration/src/Makefile.in.orig 2005-02-07 14:50:22.787750000 +0900
+++ browser/components/migration/src/Makefile.in 2005-02-08 09:00:43.763625000 +0900
@@ -84,8 +84,7 @@
ifeq ($(OS_ARCH)_$(GNU_CXX),WINNT_)
DEFINES += -DPSTOREC_DLL=\""$(subst \,\\,$(WINDIR))\\system32\\pstorec.dll\""
-CPPSRCS += nsIEProfileMigrator.cpp \
- $(NULL)
+CPPSRCS += $(NULL)
endif
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
虽然已经有 Cygwin 和 MinGW 的 gcc/g++,但在 Win32 平台下,被广泛接受的还是 Microsoft 的 VC。而且 firefox、python 这样的重量级开源项目,win32 平台上的二进制版本,也仍然是用 VC 系列编译的.. 因为 VC 更加稳定.
在当今一片免费开源的潮流下,微软也为贫穷的程序员们提供了免费 VC 工具,先后是 "Visual C++ Toolkit 2003" 和 "Visual C++ 2005 Express Edition". 或者说 "VC 7.1" 和 "VC 8".
现在在 Visual C++ Toolkit 2003 的主页上,下载链接已经被去掉,转而劝告人们使用 Visual C++ 2005 Express。但实际上,VC 7.1 还是很有用处的,比如 Python 2.4 和未来 Python 2.5 的扩展编译都应该在 7.1 下完成。
这里提供一个下载使用 vctoolkit 2003 的方法,去 google 上搜索 VCToolkitSetup.exe,还是很有一些下载链接的... 它的 MD5SUM 为: 90d8b963ca196aa9855b2ca6c3174c14
计划下篇 blog 介绍用免费工具编译 firefox , sigh.. 还是很麻烦的. 大半年前试着编译了一下,然后顺手更新了 Mozilla developer center 上的中文版 Windows Build Prerequisites. 好像国内在 win32 上编译 fx 的很少很少的说.
由于下决心不在新买的这台 R51e 上安装没有许可证的软件,所以也就没有了 outlook,因此我的手机也无法和 PC 同步了。
本来对于 Ericsson/SonyEricsson 的手机而言,有一款 FMA 是不错滴,可是它对中文的支持有故障,同步的地址本会丢失,于是只能自己动手了...
最终计划是用 Python 完成一个能和 ThunderBird 同步的程序。近两周来课余时间一直在尝试,完成的东西包括:
1. Python 的 irda socket patch. 目前已经能在 win32 下工作的很好,还特意加入了 python-dev 邮件列表,结果有些受打击——python 2.5肯定没戏了,看 python 2.6 会不会有维护人员对这个特性感兴趣吧
2. 基于 irda socket 的 irda 类
3. 实现 obex 协议的 obex 类,目前包括 connect/disconnect/get
4. 定义了一个承载 obex 的传输层接口类,以及从它继承来的 irda 的实现
5. 正准备开始实现 IRMC-SYNC, 基本协议已经了解七七八八了,感谢某牛人翻译的资料
6. 开始研究 sqlite,计划先实现 phone 和 sqlite 之间的同步再说.
对于 oo 我可以说完全是一个白痴,这次是第一次用类实现比较复杂的结构,战战兢兢,也没有信心把这个东西的源码给别人看 :)
关于手机同步研究到这里,已经感觉有些吃不消了,还有一个及其麻烦的操作 thunderbird 地址本的问题,以及最终的 GUI 操作界面.. 估计整个七月都搭进去了. :(
打算尝试一下和手机作同步,在 Windows 下开发,语言显然只能选择 Python 了。首先下载了 fMA 的源代码(它是用 Delphi 写的),找到可能和 Irda 相关的文件,仔细看了看它的代码和注释,然后又从注释里面找到了 MSDN 关于红外编程的链接。
查找 Windows 下开发方法的同时也参考了 MultiSync 中关于红外部分的代码。现在可以确认无论是在 Linux 下还是在 Windows 下,操作红外 IrCOMM 都是通过 socket 完成的,下面展示一下 win32 获取红外设备列表的代码。
一般来说,班车都是只有一个门的巴士(除司机的门外)。从外型上看,这是一个典型的栈。可它真是一个栈么?
就我的经验,班车来后,下面的人鱼贯而入,先进车门的为了先下车,会挑选靠近车门的位子坐。这样,班车从实际的功能上看,它就成了一个队!
当人太多车上座位不够时,会有一批人站在车里,那么下车时,站着的人当然不是后入后出,所以这时候班车就成为了一个混合栈的队,或着说是一个混合队的栈。
人真是一种可爱的动物,可以把一个本来是甲的东东硬生生的做成乙。
呜呼,为什么会这样?套用btsb的结尾方式,这个现象告诉我们,什么事物只要人掺乎进来了,那就复杂了,人越多,越复杂。
附件 | 大小 |
---|---|
shuttle.jpg | 29.18 KB |
觉得放到 link.eyou.com/qiuyingbo 不大合适,还是写到 blog 里面罢
1. google 访问不通畅和局域网内有人安装 Google Desktop 有关系
2. firefox trunk nightly build 已经开始支持 javascript 以外的脚本语言来操作 DOM 了... 够 cool 吧。首先支持的是 python,用 type="application/x-python" 来表示内嵌的脚本不是 JavaScript 而是 python. 不过我还没有尝试...
3. 利用 SVG 来操作网页对象的功能已经实现,比如旋转网页什么的,可以看这个链接的截图。该功能我已经运行最新的 trunk build 验证过,没有问题
前不久 trunk build 浏览 dup2.org/blog 就 crash 的 bug 也解决了,虽然 opera 9 也有很多好的特性,但比来比去,还是 firefox 看起来更酷一些
这里说的 SMS 可不是那种用来抢钱东西,而是 Mac 笔记本上的 Sudden Motion Sensor (紧急动作感应器),IBM 从 R50/T41/X40 开始也装备了类似的技术,不过名字叫 APS (Active_Protection_System)
上周为了解决 AMD64 下网卡不通的问题,亲自动手下载了最新的 linux kernel source 去编译,结果在查看编译选项的时候看到了支持 IBM ThinkPad 硬盘主动保护的模块。立刻就想起前不久同事说的苹果笔记本上,拍屏幕即可切换桌面的技术。上网搜索,发现这项技术最热门的应用是 MacSaber,模拟星球大战里面光剑的嗖嗖声的效果. 见下面的演示:
切换桌面的程序叫SmackBook Pro. 效果见下面的演示:
对于 ThinkPad 用户来说,好消息是类似的开发已经有人在进行了,但是还不够好用.. 呵呵,希望有一天可以在 ThinkPad 上拍屏幕来切换 Gnome 桌面..
也有别人在尝试用这个技术研制笔记本防盗,呵呵,比上述的两个应用有用多了,但是就不够酷了..
1. >2GB 文件
碰到过好几次 apache log 撑爆 2G 的悲惨事件... 那么,怎么开发支持 >2G 的文件呢??
找到一个关于此问题的站点,http://ac-archive.sourceforge.net/largefile/index.html,刚刚发现。强烈推荐...这里仔细介绍了 Largefile 在各个平台上支持的情况
研究下来,觉得支持 >2GB 不难,现代的 C 库都已经包装的很好了。http://ac-archive.sourceforge.net/largefile/programming.html 说的很清楚
2. 虚拟化
VMware Player是一款免费产品,但它不能创建虚拟机,只能运行一个已经存在的虚拟系统。有人介绍了两个创建虚拟机的方法,一个是 VMX Builder 这个本地应用程序来运行,另一个就更酷,EasyVMX.COM 可以在线定制一个虚拟机下载.
vmmatrix的开源软件镜像下载服务用过不少次,昨天才想起来看看这个到底是一个做什么的公司. 发现他们原来是提供虚拟主机服务,就是用 VMware 或 XEN 让虚拟主机使用起来类似一个真正的主机,甚至可以自由的远程关机,重装操作系统. 这样在传统的独立主机和虚拟主机两个产品之间,虚拟机对于 Geek 来说,可能真是不错的东东.
最新评论