技术

梦想中的资源管理器——ExplorerXP

一两个月前,一哥们给我推荐了一个软件Total Commander,优点是可以在里面打开多个页显示文件文件夹,有了它就不用打开好几个资源管理器了。安装后,发现原来曾经见过一个台湾人用过这个东东。仔细尝试各种功能,调整设置,兴冲冲琢磨了一两个小时,刚开始很兴奋,可是后来发现它对目录树的处理非常不好,简直让我无法忍受。

IE7是支持多页的,我开始遐想,是不是vista里面的资源管理器就是左边一棵树,右边可以是多页的呢?前两天突然又想起这茬,vista不是有不少人试用过吗,看看别人是怎么说资源管理器的变化的?看了几个评测,没有发现新的资源管理器有这个功能。正当我沮丧的时候,看到搜索结果中有一个ExplorerXP,网页里的截图就是我希望的那样,把Groups的panel关掉,样子跟资源管理器就没什么区别了。oh yeah,这样就可以直接在2000和XP系统中用这个多页的资源管理器了。vista里面没有这个也好,反正我也用不起vista,免得看到眼馋。

它可以设置很多的快捷键,其中Ctrl+T,Ctrl+W是一定要设的,跟FxNotepad++一样;剪切、拷贝、粘贴设成连在一起的三个F*键也挺好;另外获得某个文件的路径、获得路径+文件名、只获得文件名这三个操作设上快捷键也很有用;Groups可以用来当做bookmarks用;[View]->[Folders]->[Make All as This Folder]把排列的版式变得一致。

Topic: 技术

Softpedia Editorial Team 发来的信!!


没想到已经决定暂时中止开发的程序居然获得了承认.

Hello,

Your product "DV-2-XviD 0.8" has been tested by the Softpedia labs and found to be
completely clean of adware/spyware components.

We are impressed with the quality of your product and encourage you to keep
this high standards in the future.

To assure our visitors that "DV-2-XviD 0.8" is clean, we have granted it with the
"100% FREE" Softpedia award. Moreover, to let your users know about this
certification, you may display this award on your website, on software boxes
or inside your product.

More information about your product's certification and the award is available
on this page: http://www.softpedia.com/progClean/DV-2-XviD-Clean-57206.html

Your product review page is located at:
http://www.softpedia.com/get/Multimedia/Video/Encoders-Converter-DIVX-Related/DV-2-XviD.shtml

Please feel free to link to us using the URL above.
If you choose to link to the award page for your product, you may use the
award graphic or a text link such as: "100% FREE award granted by Softpedia"

Don't hesitate to contact us for more information.

Sincerely,
       The Softpedia Team
Topic: 技术 网络

用 libevent 实现一个简单的 http server

今天由于要查询 memcached 的使用,转到了 libevent,发现它大概一个月前发布了 1.2 版本,一个很重要的更新就是增加了对 http 协议的封装。

于是尝试自己写一个 http server,查看 manual 无迹可循。google 之,看到一个人写的 sample,而且他还写了其它一些的 libevent 的例程。强烈推荐学习。

嘻嘻,练好 google 大法很重要哦。用 google generate 代码的能力比 Visual Studio 的 wizard 强多了。以后写程序之前首先打开浏览器 search,然后 copy & paste 到编辑器里面去.... (YY 中)

最后要说的是,感觉用 libevent 来完成一个 http application server 似乎也是相当的可行呢。至少上手比 apache module 简单多了。比如 JEP/XEP-0124 , http binding. 传统上都是在 java 上实现的,现在我看到了 C 上实现的曙光。可惜最近业余实在没有精力去写什么程序了。

Topic: 技术

secure cookie

你还记得服务器端发送 Set-Cookie: 头部的时候可以包括哪些属性么?name=value、path、domain、Expire...这就是全部么?

不知道有多少人能记得这个 secure,并且能第一时间正确说出它的用途,hoho

基本上我们所有的 web 安全都是依靠 cookie 维系的,虽然多多少少会有一些方法来保证攻击者不能随便生成一个 cookie,但对于非加密的 HTTP 来说,监听到别人的 cookie 后然后伪造身份是非常容易的事情。

即使用户通过 https 提交用户名/口令,但 cookie 一旦在 http 通道上被传递给服务器,安全隐患就随之而来了。

Set-Cookie 的 secure 属性就是处理这方面的情况用的,它表示创建的 cookie 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以绝对不会被窃听到。凡是计划采用 HTTPS 来保证用户帐户安全的同志们都要注意对这个参数的使用,搞不好木桶上的最短板就在这里。

附:SOHU Passport 这个项目的 Web 技术和 cookie 关系很大,最近也着重研究了这方面的东西,下一篇 blog 仍然是和 cookie 相关的。

Topic: 技术

解压缩 Install Shield 打包的 .cab 文件

Install Shield 会把原始文件打包成 data1.cab, data2.cab 这样的文件名.. 恶心的是这东西虽然后缀叫 .cab,但不是微软的 cab 格式,用 7-Zip 等是无法解压的。

开源项目SynCE 推出了一个 UNIX 下的工具 unshield 来解压这种格式。在 Win32 平台上,目前似乎只有一个命令行工具 i6comp 来解压。

Topic: 技术

恢复 Ubuntu 6.06 的 grub 菜单

重装 Windows 后,grub 引导菜单会被覆盖掉。对于别的操作系统都好说,但 Ubuntu 6.06 的安装 CD 是没有 rescue 选项的,这个就让事情变得稍微有点恶心。

在我上周的分区表灾难恢复后,我就开始头疼怎么来恢复我的 grub。最后方法如下:

1. 从 Ubuntu CD 引导
2. 手工 Mount 原来的 / 分区
3. 执行 chroot,到那个目录
4. 执行 /sbin/grub-install /dev/hda
... 什么"无此设备". 这是因为 /dev 目录下的设备现在都是在启动过程中内核去自动加载
5. 打开另外一个窗口,ls -l /dev/hda 看看这个块设备的 major/minor 是多少,然后在 chroot 环境里用 mknod 去手工创建块设备
6. 最后 /sbin/grub-install /dev/hda 执行成功了!
7. 删除刚刚创建的设备文件,退出 chroot 环境,重启系统,一切都恢复了,阿门

Topic: 技术

介绍一个 GPL 的分区表修复工具 TestDisk

其实大约一年前,我就用过一次 TestDisk,当时是恢复了 FreeBSD 上的分区,感觉很牛,不过由于 Win32 下类似的软件相当多,所以这次我的分区出问题,一开始并没有考虑用它来做恢复。

事情的起因是这样的:
Thinkpad 上随机会附带一个隐藏分区,用来做系统恢复用。前不久我在安装 ubuntu 的时候,用自带的 gparted 分区工具把它喀嚓掉了,分成两个 primary 分区,一个 ext3,一个 swap,来安装我的 ubuntu。顺便把原来那个 30 多G 的 C 盘划了一个 extended 分区出来,然后在上面创建了 1个 FAT32 和 2 个 NTFS 分区。
上周一我决定重新安装 XP,但 grub 似乎无法认出新安装 XP 的引导记录,一怒之下用 FreeDOS 启动,"fdisk /mbr" 重写了主引导记录。麻烦来了,安装完 XP 后,我发现3个逻辑分区里丢了两个。
于是开始找分区表修复工具,"Partition Table Doctor"到是很容易的发现了我丢失的两个分区,于是执行 recover —— 那两个分区没有被恢复,反而硬盘最后的两个 linux 分区也没有了!!!

我几乎都要崩溃了,开始去搜索 Linux 分区的恢复工具,就这样又找到了 TestDisk。它不像 Win32 下常见恢复工具那样带有漂亮的图形界面以及向导模式,只是提供一个 DOS-提示符窗口,显示对磁道扫描的情况,以及所有可能的分区布局。扫描完成后选择那些正确的布局方案就好了。最终我找回了所有的分区。

鉴于 TestDisk 已经成功两次挽救回我的分区,所以我这里强烈推荐这个软件,作为分区表恢复的第一选择。

使用提示:缺省扫描中,TestDisk 可能并不是扫描所有的扇区,未必能找全潜在的正确分区布局,在完成普通扫描结果后,屏幕底部会有一个"[Search! ]"的选项,执行它就是扫描所有扇区。我的分区表就是这么恢复的。

事后我试图找出灾难的原因,以及为什么普通的恢复工具反而导致更大的灾难。感觉可能是 Windows 和 Ubuntu(或许包括 FreeDOS) 对硬盘磁道参数识别不一致导致的。Windows 认为硬盘是 240 Heads,但 Ubuntu 说只有 16 Heads。最后我是在 Ubuntu 下执行的 TestDisk 搞定的。

Topic: 技术

Win32 下的蓝牙——开发事项、外设购买

作为项目 MobileSync 的一部分,我计划增加对蓝牙通信的支持。结果经过一段时间的尝试,我发现 Win32 平台上针对蓝牙开发简直太让人郁闷了。

红外的支持看 MSDN 的文档下很容易就完成了,所以我也首先去参考 MSDN 上蓝牙相关的部分,结果在创建一个 BTH 的套接字的时候返回了 10047 错误——"Address family not supported by protocol family"。接下来从网上搜索得知这是因为我的机器上还没有安装本机协议栈(native bluetooth stack)的缘故。太奇怪了,我明明已经安装了驱动并可以传送文件啊,为什么说我不支持蓝牙?

再进一步查找,这才知道在 Windows XP SP1 之前,微软是不支持蓝牙的。直到 SP2,native stack 也仅仅支持少数的几种设备。可以想象蓝牙刚刚问世的时候,微软的反应是:“谁知道这项技术会不会最终成功,俺先等等看吧”。于是后来 IVTWidcomm先后开发了自己的协议栈和管理应用程序,来配合蓝牙外设在 Win32 平台上的使用。而我的蓝牙适配器的问题就是,它可以在 IVT 下工作,但 SP2 不支持(ISSC 芯片)。

对于蓝牙软件开发商来说,问题就很棘手。市场上有三种协议栈,最好是全都支持以适应最大可能的应用范围。我现在才明白为什么我的 Nokia 3650 的 PC 同步程序无法用蓝牙通信,这是因为它用的 mRouter 协议层只支持 Widcomm 和 Native,不支持设备附带的 IVT 驱动。

后来还找到 Jon Cellini 的一篇文章,描述如何让并没有被 MS 官方支持的设备在 native 协议栈下工作的。虽然有人报告他的 ISSC 设备可以如法炮制,但我的适配器却不能这样去工作。

为了能继续我的开发工作,我只好重新买了一个 CSR 芯片的适配器。很便宜,不过 50 元(加上快递费),芯片版本还是 BlueCore4-ROM,似乎能支持蓝牙 2.0。它很顺利就在 XP 下自动检测出来了,同时"Control Panel"里面多了一个"Bluetooth Devices"的控件。然后我就发现微软缺省的管理程序比 IVT 差太多了,很明显 Microsoft Native Stack 将是未来开发的主流,但要想得到用户的广泛应用,还差一套完善的设备管理程序。不知道未来是 Vista 去改进,还是独立的第三方厂商做开发。

故事讲完了,如果你计划购买蓝牙适配器,我建议还是选择一个 SP2 官方支持的,比如 CSR 就挺好。市场上的主流好像是 ISSC,它的确更便宜一些,但我不敢保证 SP3 或者 Vista 就一定会支持..

最后要说的是,从这个事例里面看到,微软对外设的支持也就那么回事情,Linux 的 BlueZ 栈好像在 2.4.x 时代就确定了主流地位,是不是未来对新型硬件的支持以后 Linux 的优势会越来越明显?

Topic: 技术
订阅 RSS - 技术 | BT的花