December 23rd, 2009 | Tags:

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

November 22nd, 2009 | Tags:

首先,如果你使用的是 Windows XP ,那么我要向你推荐 TinyPDF 这个虚拟打印机,极为小巧,但功能足够用。如果你和我一样使用的是 Windows 7 ,那么 TinyPDF 就不能正常工作了,必须使用 PDF Creator.

PDF Creator 是一款简单的 PDF 虚拟打印机,提供将任何文档文件打印成 PDF 文件的功能。

官方介绍:

PDFCreator is a free tool to create PDF files from nearly any Windows application.

软件特点:

从任何具备打印功能的程序生成 PDF 文件
可对 PDF 进行加密,防止被非法打开或打印
可对 PDF 进行数字签名,防止作者信息被非法修改
创建 PDF/A 文件以便长期归档
将生成的 PDF 文件通过 Email 发送
可生成的文件格式不限于 PDF ,还支持 PNG, JPG, TIFF, BMP, PCX, PS, EPS 等
自动根据用户名、机器名、日期和时间等信息将文件保存到指定的文件夹
合并多个 PDF 文件
安装方便
可以用作终端打印服务器
精髓:PDFCreator 是免费软件,对于商业应用也同样是免费的。它是开源软件,以 GNU/GPL 协议发布。

屏幕截图:

PDFCreator Monitor

PDFCreator Monitor


PDFCreator Print

PDFCreator Print


PDFCreator Settings

PDFCreator Settings

相关链接:
PDFForge
PDFCreator on sourceforge

November 8th, 2009 | Tags:

见文末“相关链接”。 Google Maps Mobile 的下载地址,可以从电脑上下载。我需要的是 Google Maps Mobile for BlackBerry。点击 BlackBerry 黑莓后,得到一个黑莓型号列表,选择对应的机型和 ROM (7105T/4.1OS, 亦即 7100/4.1),得到一个 .zip 文件,解压后得到 .alx 和 .cod 文件,安装即可。本文发表时,所得文件版本为 v3.0.2 ,虽与最新的 v3.2.1 有差距,但已经足够用了。

相关链接
Google Maps Mobile Download Link

November 5th, 2009 | Tags:

本文仅讨论在命令行下配置的问题。

系统添加新网卡之后,连接物理网络,会在 /etc/sysconfig/network-scripts/ 下生成针对新网卡的配置文件 ifcfg-eth1。打开此配置文件,可更改此网卡的参数,如下

$sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 #网卡名称
BOOTPROTO=static #若为 dynamic ,则通过 dhcp 获取 ip 地址
HWADDR=00:00:00:00:00:00 #网卡 Mac 号
ONBOOT=yes #启动时是否激活此网卡
TYPE=Ethernet #网络类型
DHCP_HOSTNAME=localhost.local #DHCP 服务器的主机名
IPADDR=1.1.1.2 #此网卡的 IP 地址
NETMASK=255.255.255.0 #子网掩码
USERCTL=no #普通用户是否有权限更改此网卡的状态,建议 no
IPV6INIT=no #是否启用 IPV6
PEERDNS=yes #如果通过 DHCP 获取 IP ,是否将 DNS 信息写入 /etc/resolv.conf (覆盖)
GATEWAY=1.1.1.1 #网关的 IP 地址

在配置好以后,用以下命令使其生效:

$sudo ifconfig eth1 down #假设目前其处于活动状态
$sudo ifconfig eth1 up
$sudo /etc/init.d/network restart

October 31st, 2009 | Tags:

昨天晚上的《项目管理》,让我受益匪浅。其中令我印象比较深刻的部分就是项目管理老师,以一个小公司老板的身份来给我们讲述他自己的公司和项目从无到有的过程。讲述过程中,他提到了他曾经雇佣的前两个工程师问题比较大,严重滞后了项目的进度。针对这一点,我比较有兴趣,因为很可能我毕业之后也要做一个工程师,所以就在后面的提问过程中请他着重讲解前两个工程师的问题所在。他提出以下几点:

一,“沟通能力差”。我们老师要了解项目进展速度,打个电话过去问,结果伊在电话上支支吾吾说不出个所以然来。

二,“项目做不出来就懵了”。也就是说,在做项目的过程中遇到困难就不知道该怎么进行了,索性就放下来不做了。老师三个月前交给他的任务,到截止期限一问,伊说没做,然后列出一大堆借口。

三,“不知变通”。这四个字是我概括的,不是十分准确,就是说当那个工程师明知道做不出来的时候,他还是会拖到最后期限,然后告诉老板没做、做不了、不会做。他不知道知难而退,在明知自己无法完成的时候提前向老师通知,以便老师换个能力更强的工程师,继续把项目做下去。

四,“自尊心强”。工程师的自尊心都很强。如果你没有两把刷子镇住他,他就想镇住你。

这就是我们老师从一个老板的角度来评论工程师的好坏,虽不甚全面,但也具备足够的警醒意义。

October 23rd, 2009 | Tags:

在 Windows 7 里,系统预先定义了“高对比度”模式,此模式可以通过 Alt(左) + Shift(左) + PrtSc SysRq 启用,见截图。

设置高对比度

设置高对比度

启用后系统就变成了这个样子

启用高对比度

启用高对比度

如图红色框显示,Alt(左) + Shift(左) + PrtSc SysRq 既可以启用高对比度模式,也可以关闭高对比度模式。但实际上,你是没办法通过 Alt(左) + Shift(左) + PrtSc SysRq 三个组合键关闭高对比度模式,不知道是系统 Bug 还是我的操作问题。

那么如何关闭呢?很简单,通过更换系统主题即可解决。

October 23rd, 2009 | Tags:

先把实际截图放出来

Virtual CloneDrive

Virtual CloneDrive

官方介绍如下:

虚拟CloneDrive工作表现就象是实际存在的CD/DVD外设, 尽管它不是以实物形式存在. CloneDVD或者CloneCD生成的镜像文件可以被从硬盘上或者网络盘上”装入”到虚拟设备,因此可以被当作普通的CD/DVD使用.

虚拟CloneDrive也许是最好的虚拟外设软件, 允许你享受到虚拟外设的自由,并且是免费的.

是不是 the best virtual drive software ,这个见仁见智吧,毕竟还有很多优秀的类似软件,比如免费的 Daemon Tools 等等。但是它的特点还是很不错的:

支持所有的通用镜像格式,例如ISO, BIN, CCD
同时支持最多八个虚拟外设
容易使用 – 只要双击镜像文件,载入为虚拟外设
虚拟CloneDrive是免费软件, 你不需要支付任何费用就可以使用.

在 System Requirements 里,官方并未明确标明支持 64bit Windows 7 ,但经过实际测试,它在 64 位 Windows 7 上运行完全良好,未出现任何问题。

那么相对于 Daemon Tools ,它有什么好处呢?

首先,安装软件较小。Daemon Tools 的安装包已经做到了 7.xMB,而 Virtual CloneDrive 才 1.xMB。

其次,不含无用组件。我记得 Daemon Tools 会偷偷安装一个 search bar ,这个 search bar 指的是出现在桌面上,紧靠任务栏上方的那个搜索工具条,而不是 ie 工具条。在安装的过程中还会显示另外一个 ie 插件,所幸后者是可选的。

最后,与 64 位 Windows 7 兼容良好,还没遇到过任何问题。我没在 Windows 7 上用过 Daemon Tools,不知道后者是不是存在兼容性问题。

好处列了三条,缺点也有

首先是支持的文件格式可能没有Daemon Tools 多,Virtual CloneDrive 并未明确注明支持哪些文件格式,但在我印象中 Daemon Tools 几乎支持所有的镜像格式。

其次是对一些受版权保护光盘支持可能不如 Daemon Tools。我没有实际测试,印象中 Daemon Tools 对一些应用了特殊保护的光盘也能很好的支持,这是一个很优秀的特性,Virtual CloneDrive 可能并不具备。

最后,Daemon Tools 已经免费发布多年,在软件界有口皆碑,而这个 Virtual CloneDrive 似乎就没有那么悠久的历史了。

Anyway, it’s up to you.

相关链接
Virtual CloneDrive Homepage

October 19th, 2009 | Tags:

今天听了某个讲座,讲座人和题目都不介绍了,容易泄漏我个人信息。

讲座内容的 Abstract 如下:

The wealth of data available on the Internet changes the way we think about multimedia. Never before has there been so much data available for training models and answering questions. But these new riches bring with it a change in the problems we must think about. The data is noisy and largely unlabeled — we must make sense of it, often returning an answer in hundreds of milliseconds. How do we take into account context and do it at the scale of the Internet? In this talk I’d like to share with you Yahoo’s experiences in this brave new world of multimedia everywhere, describe promising new technologies, and discuss open research directions. I will describe the need for better models, the kinds of algorithms needed for today’s large databases, and how the Internet is changing multimedia retrieval.

Internet正以其前所未有的方式向我们提供着丰富的数据资源,这些可用数据的出现改变着我们对多媒体信息的思考方式。一方面,这些数据为我们提供了新的机遇,我们可以利用它们来训练模型、发现其中蕴含的知识等。而另一方面,海量数据的涌现也让我们必须面对由噪声数据的影响、标注信息的缺乏所带来问题,并需要在很短的时间内理解其含义。由此,一个值得我们思考的问题是:如何将上下文的情境信息与互联网上的信息结合?在这个报告中,我将与各位分享雅虎(Yahoo!)在这方面的研究经验,讨论如何面对当今随处可见的多媒体数据、有关技术前景和将来可能的研究方向等。同时,我也会分析市场对于新模型的需求,处理大规模数据库所需的各种算法,以及Internet为多媒体信息搜索所带来的影响等。

本来这个讲座被安排到了小教室,因为这边做图像方面的人不多,而且考虑到下午还有课。结果去听的人的确不是很多,但一个小教室断然是不够用的,后来换到了大教室。

演讲者为美国人,讲的纯英文,而且语速很快。这个时候,外语水平的优劣就显现出来了,我英语水平较差,只听懂了大概 30%~40% 的样子,不过也小有收获,至少通过这次讲座,我弄明白了一个我一直弄不明白的问题– Google 的图像搜索是如何实现的。简单说来,分三步。

一,根据图片相似度选取图片,并分组。把内容相似的图片分到一个组中去,便于进一步整理。

二,对于一组图片,根据各个图片的 Tags 识别图片内容。这里面有个问题,相近的图片,它们的 Tags 并不一样。这个时候,就需要进行筛选,其目的是选取最接近图片内容的 Tags 。怎么选取呢?就是把这些 Tags 分别整理出来,并统计,出现频率最高的 Tags 即被视为最接近图片内容;那么,这一组图片的 Tags 就确定了。如果某次的搜索请求的关键词中含有某个 Tag ,只需要把对应的图片返回即可。

三,具体到搜索结果的时候,以 Google 为例,还会牵涉到 PageRank 技术–Google 会优先显示那些出现在高 PageRank 页面的图片。

演讲者还提到了 Flickr — Yahoo! 旗下的图片分享网站,其中有一句话我记忆比较深刻,大致的意思是说,Flickr 需要的 “NOT better search BUT connections(among pictures)” 。也就是说,相对于专业的搜索引擎(比如 Google/Yahoo! Image Search)而言,Flickr 需要的不是更精准的搜索结果,而是为图片建立相互的关联性。说实话,这大大超出了我的概念,因为我一直以为,在进行信息检索的时候,结果的精准和全面是绝对第一位的;现在才知道,技术的发展和研究方向被实际需求所决定。

Update: 追加一点,相对于文本搜索,用户对于图像搜索结果的行为显得更为盲目。比如,某个人只是想搜一下麦当娜,凑巧,返回结果里返回了 Britney Spears ,大家知道,布兰妮对大部分人的吸引力还是要比麦当娜大一些的,这样就有可能出现很多人去点击查看布兰妮图片的现象。这个时候,如果按照文本搜索的思想,点击量高的链接所占权重大,这个错误的图片就有可能被“顶”上首页,这是我们所不希望的。所以,在图像搜索领域,或者说多媒体搜索领域,必须降低用户行为对搜索结果的影响这一权重。

October 13th, 2009 | Tags:

称之为“教程”其实很惭愧,我其实才第二次使用 MySQL 命令。第一次使用的时候是十几天前,很多命令都已经忘了。这一次不能在“重蹈覆辙”,必须记下来。

假设环境如下,MySQL 服务器安装在本地,我们有一个适当权限的用户,账号为 proftpd ,密码为 123456。该用户对 proftpd 库有完全控制权限,我们的任务是,在 proftpd 库的某一个表里添加一条数据。换句话说,其实就是给 proftpd 服务器加一个管理员账号。

步骤如下:

[root@localhost ~]# mysql -h localhost -u proftpd -p #连接 MySQL
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 29342 to server version: 5.0.18

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> SHOW DATABASES; #列出所有数据库的名字
+——————–+
| Database |
+——————–+
| information_schema |
| proftpd |
| test |
+——————–+
3 rows in set (0.00 sec)

mysql> USE proftpd; #选择 proftpd 数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SHOW TABLES; #列出 proftpd 数据库中的所有表
+——————-+
| Tables_in_proftpd |
+——————-+
| ftpadmin |
| ftpgroups |
| ftphomework |
| ftpusers |
+——————-+
4 rows in set (0.00 sec)

mysql> DESCRIBE ftpadmin; #显示 ftpadmin 表的结构
+———–+———+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———–+———+——+—–+———+——-+
| userid | text | NO | | | |
| passwd | text | NO | | | |
| uid | int(11) | NO | | | |
| gid | int(11) | NO | | | |
| home | text | YES | | NULL | |
| shell | text | YES | | NULL | |
| count | int(11) | YES | | NULL | |
| host | text | YES | | NULL | |
| lastlogin | text | YES | | NULL | |
+———–+———+——+—–+———+——-+
9 rows in set (0.04 sec)

mysql> SELECT * FROM ftpadmin; #显示 ftpadmin 表的内容
+———–+————+—–+——+—————+————-+——-+—————–+———————+
| userid | passwd | uid | gid | home | shell | count | host | lastlogin |
+———–+————+—–+——+—————+————-+——-+—————–+———————+
| w******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 527 | x.x.x.50 | 2009-10-13 16:55:56 |
| l******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 103 | x.x.x.197 | 2007-10-13 23:45:50 |
| z******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 28 | x.x.x.102 | 2007-11-24 08:00:28 |
| s******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 28 | x.x.x.70 | 2008-12-04 08:25:18 |
| i******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 18 | x.x.x.44 | 2008-09-22 09:48:56 |
| m******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 586 | x.x.x.10 | 2009-10-12 11:32:34 |
| h******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 5 | x.x.x.146 | 2007-09-02 19:46:51 |
| d******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 135 | x.x.x.239 | 2008-01-13 22:46:25 |
| c******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 47 | x.x.x.52 | 2008-09-16 21:20:24 |
| l******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 28 | x.x.x.12 | 2008-01-02 10:10:43 |
+———–+————+—–+——+—————+————-+——-+—————–+———————+
10 rows in set (0.00 sec)

mysql> INSERT INTO ftpadmin VALUES (‘j*’,'******’,'666′,’1000′,’/home/proftpd’,'/sbin/false’,0,NULL,NULL); #添加一条数据,实际上是添加用户。注意不要把 0 和 NULL 混用。
Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM ftpadmin; #检查所添加的数据
+———–+————+—–+——+—————+————-+——-+—————–+———————+
| userid | passwd | uid | gid | home | shell | count | host | lastlogin |
+———–+————+—–+——+—————+————-+——-+—————–+———————+
| w******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 527 | x.x.x.50 | 2009-10-13 16:55:56 |
| l******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 103 | x.x.x.197 | 2007-10-13 23:45:50 |
| z******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 28 | x.x.x.102 | 2007-11-24 08:00:28 |
| s******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 28 | x.x.x.70 | 2008-12-04 08:25:18 |
| i******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 18 | x.x.x.44 | 2008-09-22 09:48:56 |
| m******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 586 | x.x.x.10 | 2009-10-12 11:32:34 |
| j******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 0 | NULL | NULL |
| h******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 5 | x.x.x.146 | 2007-09-02 19:46:51 |
| d******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 135 | x.x.x.239 | 2008-01-13 22:46:25 |
| c******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 47 | x.x.x.52 | 2008-09-16 21:20:24 |
| l******** | ****** | 666 | 1000 | /home/proftpd | /sbin/false | 28 | x.x.x.12 | 2008-01-02 10:10:43 |
+———–+————+—–+——+—————+————-+——-+—————–+———————+
11 rows in set (0.00 sec)

mysql> exit
Bye

October 13th, 2009 | Tags:

从 PowerPoint 2007 中复制了部分文字,粘贴到 Word 2007 时,被 Word 阻止,并跳出如下警告blockquote>Microsoft Visual Basic
该工程中的宏被禁止。请参阅联机帮助或主应用程序的文档来决定如何激活宏。

解决办法
主菜单 -> Word 选项 -> 信任中心 -> 信任中心设置 -> 宏设置 -> 启用所有宏。然后重新启动 Word 程序

需要注意的是,对于不安全文档,启用所有宏可能会带来安全性问题。