显示标签为“技术”的博文。显示所有博文
显示标签为“技术”的博文。显示所有博文

2010/09/26

懒人翻墙

GFW(Great FireWall)是个无所不能的家伙,它把中国的互联网变成了一个大的局域网。如果你偶尔想访问网外的东西,那么没有一个代理是不行的。由于人的欲望是无穷的,于是当我找到这样的代理的时候,我仍然不满意:我觉得手动去切换代理十分不方便。例如我要访问twitter.com,那么我得事先把代理设一下,等访问完毕再设回来。如果不这样的话,那么通过代理访问国内网站的时候就显得太慢了。要是有一个东西能够自动帮我设置代理就好了。

后来还真被我找到Firefox浏览器上的一个好东西——Foxyproxy。简单地说,当浏览器要访问一个URL的时候,它先经手一下,根据事先确定的规则来对不同的URL选择使用不同的代理。如此一来,我需要做的只是设置好规则就可以了。由于人的欲望仍然是无穷的,于是我还是觉得这样太麻烦。有些网站的URL不是那么显而易见的。比如www.youtube.com,页面里面的图片都是从ytimg.com来的,如果没有把后者加入到规则里,那么youtube的页面将丑陋不堪。即便我设好了所有的规则,但当我更换电脑的时候,我就需要把所有规则重设一遍。要是有人能帮我设置这些URL规则就好了。

这里就要隆重推出Firefox的AutoProxy这个插件了。它除了完成FoxyProxy的功能之外,还预设了一个被GFW挡在墙外的URL列表,而这个列表是在被很多人一起维护的。简单地说,如果GFW新封禁了某个网站,那么这个网站地址很快就会被志愿者加入到列表里;反之就从列表里剔除。最完美的方案终于被我找到了。

2010/06/24

老是记不住网站密码吗?

上网时间长了,终归免不了在各个网站注册了很多账号的。有些人喜欢到哪儿都用同一个密码,方便是方便,但这样会有很大的安全问题:假如有个网站不负责任,获取了你的唯一密码,那么理论上你在其他所有网站的账号就对他门户大开了。如果你的账号已经使用多年了,那么可能的损失还是挺大的。一个解决办法是使用不同的密码登录不同的网站,但一个人很难记得住那么多密码的;即便密码是通过一定规则产生的,但规则复杂了使用有困难,规则简单了则难保不被别人猜到。

但根据所登录的网站不同来根据一定规则产生密码的这个思想是很好的,而且多年前就已经有人在制造专门的工具,并且现在这种工具也越来越多,越来越成熟了。它的思想是:你可以给定一个主密码,据此在你登录不同网站时自动生成不同的复杂密码。这样一来,用户只要记住自己的主密码就够了。这种工具的另一个好处是:即便密码和网站等信息都被人知道了,他也几乎不可能反推得到你的主密码,因而也不可能知道你是怎么登录其他网站的。

Firefox有个Password Hasher插件,安装之后它会自动在网页密码输入框旁边设一个快捷方式,输入账号名之后点击“#”就可以打开Password Hasher主窗口了。它会根据域名自动生成当前网站的一个标记(“Live”),然后等待你输入主密码,点击“OK”,生成的网站密码就自动被输入到密码框中了。它还可以定制密码长度,是否包含特殊字符,是否包含数字等等,适合绝大多数网站的密码规则要求。

Password Hasher还有Android版本,叫做“Hash It”,用Android手机上网的时候用起来很方便。如果你既不用Android也不用Firefox,那么这里还有网页版,把它加入收藏夹,这样的话只要能上网就可以使用了。

类似的优秀工具还有好几种,比如Password Maker就令人难以取舍。

2010/05/27

让Google搜索不再抽风

Google搜索最近终于开始支持SSL访问了,也就是说当你访问Google时,无论你提交给Google的关键字还是Google返回的页面都是经过加密的。那么如果有人想在中途截获你和Google之间通信内容的话,他肯定得比现在再努力一些了。如果中途没人能够知道你和Google之间说了些什么,那么就没人能够通过过滤关键字来阻止你访问Google。当然,Google抽风也许是个好事情,因为如果它从此不再抽风的话,它就有可能从此在高墙之内消失。暂不管它,先看看怎么访问Google搜索的SSL服务吧:打开浏览器,访问https://www.google.com就可以了。但如果你想把它设成默认搜索引擎,那么还得多费一点功夫。

如果你用的是Firefox,那么可以到Firefox网站下载安装“Add to Search Bar”插件。重启Firefox之后再访问https://www.google.com,找到那个搜索框,在里面点右键,此时右键菜单里里会多出一个“Add to Search Bar”的选项。点击之后,就可以在Firefox自带的搜索框里使用加密的Google搜索服务了。

如果你使用的是IE或者是Chrome,那么这里有较完备的教程,不过是英文的,我就不翻译了。

2010/05/26

尝试“云存储”

早就听说过Dropbox,也知道它是一个类似网络硬盘的服务,但因为没有需求,一直都没有尝试过。直到最近听说Dropbox被伟大的GFW封了,才跑去试用了一下,结果一试用就离不开了,生生地被Dropbox制造出了一个需求。

我平时备份文件用的最多的是移动硬盘,然后是GMail,Google Doc以及开心网的网络硬盘等等。所有这些方法都存在一个弊病,那就是文件的备份是手动的,并且有些还不能备份文件夹。以GMail为例,当需要备份一些文件时,我会将其打包成一个压缩文档,然后确保其大小不超过20兆,然后作为附件写一个邮件发送给自己。这个过程是全手动的,并且由于网速的限制,我必须要等一些文件上传完之后才能继续上传剩余文件。

Dropbox则从另一个角度出发,解决了上面这些问题。使用它的话需要先下载安装一个客户端,这个客户端是在后台运行的,不需要用户干预。它的唯一职责就是监视本地硬盘上的一个目录,负责维持这个目录里的内容与网络硬盘内容的同步。这样一来,当我要备份一些文件时,我需要做的就是将这些文件拷贝到硬盘的指定目录就完事了。客户端会将所有文件上传到服务器,并且这一过程完全不需要用户的干预。同理,如果此时还有一台计算机运行了Dropbox的客户端,那么这台计算机稍后会在指定目录里看到我刚刚拷贝过的那些内容。至于安全性,据Dropbox所说,数据传输的整个过程以及服务器上保存的文件都是经过加密的。

Dropbox最大的特点就是简单(以及所谓安全)。这个简单不仅体现在界面上,还体现在使用过程上:一个账号,一个几乎不需要交互的客户端,以及一个本地的同步目录。Dropbox的免费容量是2G,这对一般应用而言够用了,而且推荐其他用户使用Dropbox可以得到额外的免费容量。如果你想帮我增加免费容量,就点这个链接吧:https://www.dropbox.com/referrals/NTczNzI5MjY5

如果需要更复杂一些的功能,可以使用SugarSync。SugarSync是另一个有名的云存储服务,是Dropbox的一个大敌。SugarSync也需要安装一个客户端,但它支持本地的多个同步目录,还支持通过邮件上传文件,而且目前暂时还没有被“墙”。不过从Dropbox被墙而SugarSync没有被墙的现状来看,似乎Dropbox更好一点点。SugarSync的容量也是2G,而如果你点击https://www.sugarsync.com/referral?rf=fsk9fx3wkzobm来注册的话,你我都会得到额外的250M容量。

2010/02/08

在Windows里通过在鼠标右键菜单打开Emacs

虽然通过使用IBuffer已经可以很方便地在Emacs里随机访问文件夹里的某个文件了,但有的时候还是想在文件夹里直接通过Windows鼠标右键菜单在Emacs里打开特定文件。网上有很多地方介绍了方法,但没有能直接试成功的,总需要自己再稍微做一些修改。由于颇花了些时间,值得在这里记录一下,免得日后忘掉,或者给后来人做参考:

首先要修改注册表,为文件和目录添加鼠标右键菜单:创建一个reg文件,双击导入注册表就可以了。我的reg文件的内容如下:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\openwemacs]
@="Edit with &Emacs"
[HKEY_CLASSES_ROOT\*\shell\openwemacs\command]
@="c:\\green\\emacs-22.3\\bin\\emacsclientw.exe --server-file=d:\\.emacs.d\\server\\server --alternate-editor=C:\\green\\emacs-22.3\\bin\\Emacs.bat -n \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs]
@="Edit &with Emacs"
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs\command]
@="c:\\green\\emacs-22.3\\bin\\emacsclientw.exe --server-file=d:\\.emacs.d\\server\\server --alternate-editor=C:\\green\\emacs-22.3\\bin\\Emacs.bat -n \"%1\""

emacsclientw的意义是通知emacs服务打开指定的某个文件。它通过"--server-file"来找到后台运行的emacs服务,在连接emacs服务失败之后使用"--alternate-editor"来打开指定的文件。因此其具体效果就是当有emacs实例在运行时,在该实例里打开指定文件,否则新建一个emacs实例,然后在其中打开文件。可以通过执行

"emacsclientw.exe --help"

来查看emacsclientw命令的帮助。很显然,emacs服务在启动时应该设置一个跟"--server-file"对应的标记,以便emacsclientw稍后能够检测到它。这可以通过设置全局变量"EMACS_SERVER_FILE"来完成,这里马上就会讲到它。

其次,在emacs启动的时候,顺带启动emacs服务,以便将来emacsclientw可以与之交互。这可以通过在emacs设置文件".emacs"里添加一句话来完成

(server-start)

最后要设置相应的环境变量。我不喜欢在系统环境变量里添加太多的东西,因此写了一个批处理文件,每次试图启动emacs时执行这个批处理文件,将环境变量的作用域局限在这个Shell中。如果你使用了别的路径或者文件,那么前面的注册表文件需要做相应的修改:

@echo off
set HOME=D:\
set EMACS_SERVER_FILE=D:\.emacs.d\server
set PATH=C:\green\unixUtils;%PATH%
start c:\green\emacs-22.3\bin\runemacs.exe %1 %2 %3 %4

跟直接用runemacs打开文件不同,使用上述方法可以只在一个emacs的实例里打开多个文件,这不光使得emacs窗口更加紧凑,在某些情况下还会有额外的便利(比如使用”desktop”插件时)。上述方法的一个缺点是当emacsclientw连接emacs服务失败时,在启动一个新的emacs实例之前会跳出一个错误对话框。不过没什么影响,直接点掉就可以了。几个参考链接:

Setting up Emacs on Windows | irisquest.net
EmacsWiki: Emacs Client
How to create a right-click context shell shortcut "edit with Emacs"? - Stack Overflow

2009/05/15

你的优盘暂时无法卸载吗?

在平时用电脑的时候,经常会碰见无法卸载优盘或者无法删除某个目录或文件的情况。这一般是因为优盘上的程序正在运行,或者是有程序正在访问这个目录或文件。这个时候比较头疼的是不知道到底是什么进程在使用它。不过幸好有一个免费工具可以帮我们得到这个信息甚至直接操作目标,这就是Unlocker

以删除目录为例。下载安装了这个小软件之后,只需要在要删除的目录上点右键,就可以看到多了一个"Unlocker"选项:

点击它,然后你就可以看到弹出一个对话框,列出了当前有哪些程序正在使用这个目录。下面你就可以手工退出程序,或者通过这个对话框来杀掉进程(Kill Process)、释放进程对目录的锁定(Unlock [All]),之后就可以对目录进行各种操作了。简单吧?

2009/03/18

快速定位本机文件

使用电脑的人肯定会遇到过这样的问题:想找以前保存过的一个文件,但问题是不记得放在硬盘的什么地方了,而且记不清文件的确切名字,那么怎么能快速找到它呢?你当然可以用Windows自带的搜索功能,也可以用Google Desktop,但是前者搜索时太慢,后者建索引时太慢,反正都是会把机器搞得很慢。在这里我推荐一个工具:Everything

  • 软件非常小(约300K),并且是自由软件(免费)
  • 基本不需要建立索引的过程,安装完就可以使用
  • 文件定位非常快
  • 支持中文文件名
  • 支持自定义快捷键
  • 搜索时支持路径名、不完整的文件名、通配符以及正则表达式
  • 可以在本机建立http或者ftp服务,供远程机器搜索本地文件用
  • 可以排除某些目录,不索引其中的文件
  • 仅支持NTFS的文件系统 (不知道如何将文件系统转换成NTFS?点这里

下面是软件界面,简洁有效,没有一点多余的东西,用过喜欢的话别忘了顶一下:

2009/01/29

有趣的Google SpreadSheets

原先一直以为Google的SpreadSheets只是一个网络版的Excel。近来由于某些原因去使用了一下,感觉虽然作为一个数据表格功能上跟MS的Excel差的还很远,但是也有很多MS Excel所不具备的有意思的概念。Google的SpreadSheets可以在线发布,这样别人可以看到一个只读版本的工作表,并且工作表的内容即时更新。我做了一个我们篮球俱乐部的经费清单,这样所有人都可以随时获得俱乐部的运行状况了。还抽空做了一个油耗统计工具,见这里,有人需要的话我可以免费共享啊,呵呵。

Google SpreadSheets还可以通过email分发格式化的表单,在用户填写之后自动汇总到工作表里面。这个功能也蛮有意思的,要做市场调查的人有福了。忽然想起来它还可以作为一个很简陋的留言板使用,待会儿做个试试去。

该发生的还是发生了

今天忽然发现我曾推崇备至的TOR的网站也被the Great FireWall封禁了,真是没人性啊。还好我对这个项目已经有了充足的了解,封禁的不怕。只是苦了那些象曾经的我一样到处找国外代理的人了。

2007/10/08

从国内访问被屏蔽的网站:Through "Tor"

假期在家看书的时候忽然很需要查阅维基百科,因为几个月前英文的维基百科是解封了的,中文的不可以。谁知道上网才发现连英文维基百科也无法访问了。郁闷之余,开始寻找破解GFW屏蔽的办法。手动找国外代理太麻烦了,以前听说过一个软件可以自动寻找并使用国外代理的,叫做无.界.浏览。我用google搜索了一下,却发现这其实是个悖论:某某浏览这个关键词本身就是被屏蔽的,想通过google找到它的话除非是自己在已使用它的情况下访问google!

努力了很久又发现一个叫做自由.门的软件可以达到同样的效果。下载下来可以用,却发现是为某某功摇旗呐喊的,心中不爽,于是继续寻找更好的办法,结果还真给我找到了:Tor就是这么个东西。

我对Tor的理解是这样的:当你安装了Tor客户端之后,你就成了Tor网络中的一个节点。当你的浏览器要访问一个站点的时候,它并不直接向该站点索取数据,而是在Tor网络中寻找一个加密的路径,这个路径最终指向你所要访问的站点。这样做下来有两个特点:第一个特点其实就是Tor的主要目的,也就是说该站点无法获得访问者的信息,譬如IP地址;第二个特点就是Tor网络中的节点实际上起到了一个代理的作用,这样就避开了GFW的封锁。

Tor推荐使用Firefox浏览器,因为TorButton插件可以方便地切换代理。这个对我不是问题,因为我本来一直就是Firefox的拥趸。Tor的软件包可以从官方网站下载页面上拿到。安装包里面包含几个组件:Tor是肯定要装的,这是核心引擎;Vidalia是Tor的一个图形化管理软件,这也是需要的;Privoxy按照我的理解就是基于Tor的一个代理服务器,这个东西不安装的话上网的时候会显示代理拒绝连接;TorButton是Firefox的一个插件,用来很方便地切换Firefox的代理。安装包里的TorButton我装了之后不能使用,最后到Firefox官网上搜了个最新版本才搞定。

安装之后运行Validia,Privoxy,然后运行Firefox,如果TorButton安装成功,那么Firefox状态栏右侧会有绿色"Tor Enabled"的文字,这个时候直接打开要访问的网页就可以了,你的请求会在加密后进入Tor网络,从最后一个节点出来后变成明码,然后发送给目标站点;而目标站点的内容在进入最后一个节点之后就变成加密的,通过Tor网络最终到达本机时被本机解密。由于分布式架构的原因,Tor刚启动的时候网速会很慢,过段时间会快一些。另外,点击绿色"Tor Enabled"之后它就变成红色的"Tor Disabled",这个时候Firefox就和往常一样了,不通过代理而直接访问站点。

我试了下,用这个方法维基百科可以访问了,而google.com搜索一些关键字也不会被屏蔽,更重要的一点,我好几年没用过的google快照也恢复功能了!Tor真是个有大想法的好东西!

2007/09/20

补漏拾遗:Bash的一些技巧

越来越懒了,轻易不写blog,好不容易写一次主要内容还是从别处copy来的。

* 从历史中执行命令

有时候,我们需要在 Bash
中重复执行先前的命令。你当然可以使用上方向键来查看之前曾经运行过的命令。但这里有一种更好的方式:你可以按 Ctrl + r 组合键进入历史搜索模式,一旦找到需要重复执行的命令,按回车键即可。 * 重复命令参数

先来看一个例子:

mkdir /path/to/exampledir
cd !$

本例中,第一行命令将创建一个目录,而第二行的命令则转到刚创建的目录。这里,"!$"的作用就是重复前一个命令的参数。事实上,不仅是命令的参数可以重复,命令的选项同样可以。另外,Esc+ . 快捷键可以切换这些命令参数或选项。 * 用于编辑的快捷键
o Ctrl + a:将光标定位到命令的开头
o Ctrl + e:与上一个快捷键相反,将光标定位到命令的结尾
o Ctrl + u:剪切光标之前的内容
o Ctrl + k:与上一个快捷键相反,剪切光标之后的内容
o Ctrl + y:粘贴以上两个快捷键所剪切的内容
o Ctrl + t:交换光标之前两个字符的顺序
o Ctrl + w:删除光标左边的参数(选项)或内容
o Ctrl + l:清屏

要是能有在bash上移动一个word的命令就好了,就像Windows console窗口的 Ctrl+左右键 一样。

2007/07/31

补漏拾遗:在Windows下访问Linux的图形应用

以前在学校的时候了解过这个方法,但实在没遇到很实在的应用,后来就慢慢忘记了。最近在使用ClearCase的过程中经常遇到这个需求,于是到网上搜了搜,罗列如下:

首先在Windows上安装Hummingbird Exceed(这是个商业软件,还好我们公司买了它的license),然后通过Exceed在Windows上建立XServer,当它与Linux Client建立连接之后Client就可以把图形窗口发送到XServer上进行显示和控制了。

1. 设置Exceed
1.1 通过"开始 -> 程序 -> Hummingbird Connectivity V7.1 -> Exceed -> Xconfig,打开"Communication",在Mode 项中选择"XDMCP Broadcast";
1.2 启动Exceed,如果跳出"XDMCP Display Manager Chooser"则选择Passive模式,此时Exceed会显示一个空的桌面。

2. 启动Linux上的图形应用
2.1 登录Linux服务器,成功之后设置环境变量
# export DISPLAY=Windows机器IP地址:0.0
2.2 启动图形应用
# startkde
or
# clt lsvtree -g foo.c

此时Linux机器的图形界面就显示到本地Windows的Exceed窗口里了。

2007/07/19

Google Reader是个好东西

GoogleReader虽然已经知道并且注册很久了,但一直没有怎么用过。相比聚合器,我更喜欢直接到网站上去浏览。最近在关注一些博客,不定期更新的那种,所以经常有白跑一趟的经历。更关键的一点是不同的网站一般有不同的浏览方式,我必须频繁改变自己的习惯去适应它们。现在我把这些都聚合到GoogleReader里了,只需要打开一个页面就可以看到所有订阅的更新,并且所有这些订阅的内容都有统一的浏览方式。现在Reader对于我而言终于从一个花架子变成了一个真正实用并且逐渐离不开的东西了。

2007/07/03

关于我的电脑

早上9点过几分钟到了公司,打开显示器,动了下桌上的鼠标,发现显示器没有显示。想起来原来昨天走之前把电脑关闭了。于是按下电源键开始启动电脑。我有心理准备的,知道这个时间会比较长,于是就拿出早晨准备的面包开始享受早餐了。吃到一半的时候,登录界面显现出来了。这个时候电脑还没有响应,我又稍等了一下,开始输入用户名密码,完工后继续吃早饭。电脑就此开始它艰苦的历程了。这个历程是如此之长,以至于在我吃完早饭的时候桌面还没有完全被显示出来。干点什么呢?泡杯咖啡吧:冲了下杯子,加咖啡,加伴侣,不加糖,跑去添了水,回来一看,桌面刚刚显示出来。又过了一会儿,Outlook终于显示完全了,桌面达到了一种稳定的状态,但这个时候硬盘还在不停地响。虽然电脑还时不时地停止响应,但毕竟可以开始工作了。看了下时间,这个时候是9点20。

我的电脑不算差了,Dell Precision 380,P4 3.4G,1G RAM,WinXP SP2。我承认启动项有点多,先是公司IT的脚本,然后是ClearCase的mount、doctor,然后是输入法、金山词霸、GoogleTalk、Outlook,当然还少不了杀毒软件什么的。启动完毕之后任务管理器里有60个进程,恐怖。不过也就开机有点慢,其他时候还是很不错的,忍了。硬盘速度是个问题,什么时候硬盘速度和内存速度达到同级别的话就世界大同了。

2007/06/01

Putty style shell for Cygwin

以前一直想找一个Windows下的shell程序,能够象putty那样方便的,能够最大化到窗口全部的面积,能够通过双击智能选择文本块。今天终于被我找到最完美的解决方式了。PuttyCyg就是一个这样的东西。它其实是一个Putty的扩展,除了能实现Putty所有的功能之外,还能够连接到本地的cygwin服务上,这样就可以通过与putty一模一样的操作方式来进行本地操作了。 首先要下载并安装Cygwin。然后下载PuttyCyg并将其解压到合适的目录里,无需安装。这个时候执行     putty -cygterm - 就可以了。我一开始运行的时候并不成功,提示     "The procedure entry point __getreent could not be located in the dynamic link library cygwin1.dll" 这句话说的是某个方法无法在cygwin1.dll里找到,其实真正原因大半是cygwin1.dll文件本身无法找到而已。我的解决办法是把cygwin/bin/cygwin1.dll拷贝一份到putty当前目录。 一个小tip:Cygwin默认是通过路径/cygdrive/x来访问x:的,路径太长使得敲起来很不方便。但可以通过执行     mount --change-cygdrive-prefix / 改变默认的mount点,之后就可以通过/x来访问x:了。我的mount结果是这样子的:     C:\cygwin\bin on /usr/bin type system (binmode)     C:\cygwin\lib on /usr/lib type system (binmode)     C:\cygwin on / type system (binmode)     c: on /c type system (binmode,noumount)     d: on /d type system (binmode,noumount)     f: on /f type system (binmode,noumount)     m: on /m type system (binmode,noumount)     x: on /x type system (binmode,noumount)     y: on /y type system (binmode,noumount)     z: on /z type system (binmode,noumount)

2007/05/16

RAZR的平方

                         在Razr全球即将卖到一亿部的时候,Razr的继承者终于现身了,这就是号称Razr2的V8、V9以及V9m。以V8为例,跟V3比起来,这款手机更薄,更长一些。键盘很大,手小的怕是握不住,发消息时你会感叹缺少一根超长的大拇指。V3的上盖并不能完全盖住机身,但V8可以,它的上盖更长,屏幕也更大。外屏分辨率应该和内屏差不多,只是尺寸稍小一些,作用应该和Ming关盖之后相似,可以看时间、阅读短消息以及控制媒体播放器等等。机身的质感非常不错,看文章是用了什么“真空工艺金属镜膜技术”,看不懂,反正挺高级的,跟V3的金属酷感比起来,这款手机更为华丽。从软件上来讲,它更应该像是一款智能手机。它比V3功能更强,比Rokr E2速度更快,比Ming更加专业。确实很值得期待啊。 这里有一个Flash的宣传片,华丽得一塌糊涂:

http://direct.motorola.com/hellomoto/razr2/experience/default.asp?WT.mc_id=motobsrazr2
-------------------- 2007/5/23 今天忽然发现,V8的外屏竟然是触摸屏!并且外屏在被操作时同侧键一样都有震动反馈。触摸屏应该是电容感应式的,因为用笔尖触摸是无效的,必须用手指触摸,隔着一层薄布也可以,这样就避免了手机放在包里被误操作的问题。看见主题第一张图片里的媒体播放器了吗?屏幕下方的三个按钮是可以通过触摸来操作的!这下V8上市价格估计不会低于4000人民币了。

2007/04/09

Google拼音抄袭搜狗?

据说Google拼音是Google China Research迄今为止最重要的成果,但Google拼音刚发布,负面新闻就来了。有人提出Google拼音输入法的词库有抄袭搜狗的嫌疑。我用搜狗时间不长,不太能感觉得到两者的相似性。但两个独立个体提供相同的正确答案是很容易的事情,而提供相同的错误答案确实是太偶然了。搜狗在自己的词库里存了一些很偏僻甚至是错误的词组,而Google拼音在拼写这些词组的时候结果竟然完全相同。不知道Google如何洗白自己。如果真的被证明是抄袭,那真是太令人失望了。

附相关链接:

谷歌拼音确实抄袭搜狗拼音?

2007/04/05

Google发布输入法

Google于4月2日发布了传说中的Google输入法。除了具有一般输入法都具有的功能外,还不出意外地具有网络同步功能。这样只要你拥有一个Google帐户,就可以在所有计算机上使用“完全一样的”输入法了。下载:

2007/03/28

获取微秒级的系统时间

一个大前提是需要系统硬件支持,似乎我遇到的大多数系统都是支持的。在Linux下,使用gettimeofday函数。函数的声明如下: #include <sys/time.h> int gettimeofday(struct timeval *tv, struct timezone *tz); int settimeofday(const struct timeval *tv , const struct timezone *tz); 而参数 struct timeval *tv 的定义如下: struct timeval { long tv_sec; /* 秒 */ long tv_usec; /* 微秒(1e-6秒) */ }; 第二个参数暂无效,设置成NULL即可。例子: struct timeval t_start, t_end; gettimeofday(&t_start, NULL); foo(); gettimeofday(&t_end, NULL); printf("Time consumed by function \"foo()\" is %d macroseconds\n", (t_end.tv_sec - t_start.tv_sec) * 1000000 + (t_end.tv_usec - t_start.tv_usec)); 详细介绍可以参考http://linuxreviews.org/man/gettimeofday/index.html.en. 而在Win32下,类似功能可使用GetTickCount()实现,但精度只到毫秒。

通过Google翻译访问Blogspot

今天通过电信和联通两个网络都无法通过PKBLOGS访问我的Blog(http://pkblogs.com/novelx),不知道是暂时的网络问题还是永久性被封。不过还有一个好办法来访问blogspot,那就是通过Google翻译。 访问http://www.google.com/translate_t,在“Translate a web page”一栏里写上要访问的地址,这里是http://novelx.blogspot.com;语言不用选择(缺省是"Spanish to English"),点"Translate"。这时就可以轻松访问blogspot的内容了,如果页面内容为汉字,那么翻译后的页面和原页面是基本一样的。