想当摄影师的程序员 - Part 3

和老婆一起做了一个Blog主题,暂命名为Clear Red

这两天晚上和老婆一起做了一个Blog主题。尽管只完成了50%不到,但我还是先用上了,在日常使用中测试这款主题。

该主题是基于Sandbox制作的。

如果你看到回复界面比较乱,请凑合用一下。过两天就好了。呵呵

Update: 这款主题后来没修改过. 点此下载此主题.

  • Share/Bookmark

为何1024*768分辨率下网页的宽度为960px

昨天在学习用 {zh:栅格设计|栅格系统} 进行网页排版。
里面提到了适合1024宽度屏幕时,一般采用960px作为网页的宽度。
请到网页栅格系统研究(1):960的秘密看原因。
我下面这段程序就是为了证明为什么960是比较合适的。

#!/usr/bin/python
# -*- coding: utf-8 -*-

#此代码证明使用栅格系统设计网页时, 为何1024分辨率最佳网页宽度是960px
MaxWidth = 1024
group = {}
#总宽度
for width in range(2, MaxWidth):
    count = 0
    #栅格宽度
    for gridWidth in range(2, MaxWidth):
        #如果可以有整数个栅格
        if width % gridWidth == 0:
            count = count + 1

    if group.has_key(count):
        group[count] = group[count] + ', ' + str(width);
    else:
        group[count] = str(width);

print group
#通过结果可知
#网页宽度为1008时, 最多可以设计含有29个纵向栅格的系统. 但是1008和1024之间只差了16px, 考虑到滚动条宽度 + 浏览器边框肯定大于16px, 所以不能使用1008px.
#使用960px最多可以设计含有27个纵向栅格的系统.
#使用990px最多可以设计含有23个纵向栅格的系统.

根据程序的运行结果以及我的一点简单分析,可以知道960px是很合适的。为什么不用990px宽呢?因为它仅仅比960px宽了30px,也就是几个字的宽度,但是减少了4个有效的栅格(也就是每个栅格的宽度变宽了,所以用的栅格少了),这可能会给某些情况下的排版会带来一定的问题。

  • Share/Bookmark

电脑的网络唤醒(Wake On Lan)及关机

现在绝大多数电脑都支持 {zh:网络唤醒} 了。也就是在电脑插上电源,但是没有开机的情况下,通过网络开机。

网络开机的好处不言而喻,那么需要怎么做呢?

0. 准备

首先需要确定你的电脑支持网络开机. 这个需要在BIOS里设置一下,我公司电脑的BIOS中有个选项叫S5 wake on lan,家里电脑BIOS中的选项叫WOL,把这些选项开启即可。

其次还需要知道需要唤醒电脑的 {zh:MAC地址} 以及 {zh:IP地址} . 在Windows中可以这样获得:

点击[开始]-[运行], 输入cmd, 回车. 输入ipconfig /all, 如图所示(黄色框中是你输入的命令)

command window

你会看到第一个绿色框中用横线连接的字母和数字那一串就是 {zh:MAC地址} 08-00-27-D5-A8-C5,也叫物理地址,是每个网卡唯一的一个地址。全世界没有重复的。

第二个框里是这台电脑的 {zh:IP地址} 10.0.2.15。

第三个框里是电脑所在网段的 {zh:子网掩码} 255.255.255.0,用来表示哪些IP地址是在同一个网段里的。

记下这三个地址,等会儿会用到。为了方便起见,我们叫这台需要被唤醒的电脑为A电脑。

1. 唤醒工具

你还需要一台B电脑来运行唤醒程序,通过唤醒程序唤醒令A电脑。不同的系统中有不同的唤醒程序。

在Ubuntu中,可以使用wakeonlan;在windows中可以使用wolcmd。

wakeonlan可以通过apt安装。在Ubuntu的命令行下输入sudo apt-get install wakeonlan,根据提示安装即可。

然后输入wakeonlan -i 10.0.2.255 -p 9 08:00:27:D5:A8:C5就能把A电脑唤醒了。

command window

我来解释一下这个命令。wakeonlan就是主程序,-i 10.0.2.255就是A电脑所在网段的广播地址。为什么是这个地址呢?A电脑的IP地址为10.0.2.15,再加上它的子网掩码为255.255.255.0,学过网络的都知道子网掩码是怎么回事,所以A电脑所在网段的广播地址就为10.0.2.255,-p 9表示用9号端口来叫醒,在局域网中,端口号无所谓,但如果A电脑和B电脑之间有防火墙,就需要在防火墙上把某个端口打开,比如9号端口,命令里就必须输入9了。因为一般防火墙的默认规则就是阻止所有端口,只根据需要开放特定端口。最后的那一串就是A电脑的MAC地址了。我们在A电脑上看到的MAC地址形式是08-00-27-D5-A8-C5,但是这里我们需要把MAC地址里的横线换成: 冒号即可。

Windows上的唤醒程序很多,我们随便挑一个,我用wolcmd。这个程序有命令行版本,也有图形界面版本。请点击下面的连接打开下载页面,使用方法也在那个页面上。

2. 关机

开机后,你就可以通过远程桌面连接过去了。但是你会发现如果你A电脑运行的是Windows XP,当你想关机的时候却发现没有关机的选项。

no shutdown button

怎么办?还是用命令行搞定。点击[开始]--[运行],输入cmd,在命令行窗口输入shutdown -s -t 0

解释一下这个命令:shutdown关机命令(也可以是重启),-s表示关机(如果这里用-r表示重启),-t 0表示立即重启,后面的0表示执行关机或重启命令之前等待多少秒。具体的使用说明请输入shutdown -h来查看。

Update: 你也可以通过VPN拨到公司网络,然后用上述方法打开自己公司电脑。

  • Share/Bookmark

Ubuntu 8.04的VPN连接

我经常在Ubuntu使用VPN连接到公司电脑,这在8.04的时候是好的,但是我升级到8.10的时候,发现无法使用VPN了。

经过一番搜索,才发现原来没添加VPN插件。

在命令行下输入sudo apt-get install network-manager-pptp,安装network manager的pptp插件。之后重启电脑

之后就可以左键点击网络连接的图标建立VPN了。

刚装好8.10的时候死活也无法连接上VPN,发现好多人问这个问题,但是都没有找到解决方法。我估计这是个Bug。我最近升级后,发现VPN连接好了。很奇怪。

还有一个问题,在Ubuntu中连接VPN之后,通过远程桌面连接Windows总是界面无响应。我估计是MTU的问题,因为今年春节回家的时候遇到过这个问题,MTU默认为576,而路由器默认MTU为1500,所以会出现丢包严重的情况。在使用sudo ifconfig wlan0 mtu 1500之后,就正常了。现在远程连接有问题,我估计是相同的原因造成。手工改了wlan0的MTU之后,问题解决,上网速度好像也有所提高。

  • Share/Bookmark

关于Amazon Kindle 2

Amazon Kindle 2现在接受预定了。

当Kindle一出来的时候我就想败一个,但是仔细想想,我好像也不大需要。

去年六级考试作文的题目是电子书会取代传统书吗?我写的会,举的例子就是Kindle。

现在Kindle 2出来了,想败一个送给喜欢看小说的老婆。她成天抱着一个小屏幕的手机看小说,真担心她会把眼睛看坏了。所以就先打听一下Kindle 2的规格和特点。

我在Amazon给客服写了封邮件,下面我把问答写出来,供参考:

  1. 问:Kindle 支持中文吗?
    答:Kindle只能从Amazon的Kindle商店里购买书,书店里只有少数的几种非英语书籍。Kindle支持ISO-8859-1编码,如果你需要把你自己的文件放到Kindle上显示,请把编码改成ISO-8859-1。目前Kindle商店不支持美国以外的客户购买电子书籍。如果你想在Amazon买Kindle,请确保你提供的是一个有效的美国地址。
  2. 问:Kindle支持PDF文件吗?
    答:PDF文件可以当作附件通过Email发送到Amazon特定的一个信箱来进行转换成Kindle可以识别的格式,Kindle就可以读取这个PDF文件内容了。但是PDF转换有很多问题,如果是一个复杂的PDF文件,转换后它的布局可能会错乱。
  3. 问:Kindle可以读取SD卡上的txt文件吗?
    答:不可以。目前Kindle仅能从Kindle商店里购买电子书籍/报纸/杂志/Blog内容
  4. 问:Kindle支持Wifi吗?
    答:不支持。Kindle通过类似手机上网的方式购买/下载内容

看来Kindle 2这个东西在中国用的话不太现实啊。如果要买的话,还是买个国产的使用E-Ink技术的产品吧,肯定能适合国情的。

  • Share/Bookmark

Ubuntu下Skype和Twhirl声音设备冲突的解决

在Ubuntu下一直没有同时开着Skype和Twhirl,所以一直没发现这个问题。

今天把这两个程序都打开了。先开的Skype,再开的Twhirl,当我想跟别人语音聊天的时候,Skype提示我“声音回放失败”。因为刚刚还能打电话,现在就不行了,肯定是音频设备冲突了。

打开Twhirl的设置,里面没有选择音频设备的选项。于是打开Skype的选项,看到了有个列表,可以选择音频设备。分别为声音输入、声音输出、铃声。默认选择的是Default。我就改变铃声下拉框里的设备,改变一个点一下“测试声音”的按钮,最终发现一个可以用的,我就把那三项都选择了这个设备。当我点击“拨打测试电话”的时候,发现录音有问题。于是又做了一次选择,最终结果为:

声音输入:HDA Intel(plughw:intel,0)
声音输出:Pulse
铃声:Pulse

  • Share/Bookmark

永远的记忆

很艰难的送走2008年, 这个多灾多难的年份. 我们迎接了2009年第一份曙光. 然而有个人却永远见不到2009年了.

他就是我们团队中最优秀的领导Yves Long.

他的中文名是龙霖雨, 给自己起了一个特别容易读错的英文名(实际上是法文名)Yves. 如果不熟悉这个名字的人读出来肯定是/ivs/, 而正确的读法应该是/if/. 作为复旦的高材生,一毕业就到微软做了Support. 有次一起吃饭的时候他跟我说: 做Support的时候经常看别人写的代码, 给人指出哪里有问题, 后来觉得写代码没意思, 就转做管理方面的工作.

因为我们12月份需要发布一个新的升级版产品, 而且这次是和南京分公司协同开发, 所以Yves出差去南京也是件很平常的事情. 临近产品发布的几天看不到他, 我以为他出差去了. 过了两天, Sean找Michael问知不知道Yves去哪里了. 我当时就在想, 难道Yves没出差? 或许在工作上有着跟谁不可调和的矛盾不想干了? 还是想跳槽去别的公司, 但是找不到理由索性就不来了? 还是他出了什么意外. 12月31号中午, Michael在吃饭的时候跟我说: Yves失踪了你知道吗. 我说知道, 并且把我的想法说出来. 他说应该不会吧, 工作上的问题都好说, 只是现在年底了, 希望Yves别出什么意外. 他的一句话让我一下午都在想着Yves别出什么意外.

1月6号早上10点多,Sean把我们组员叫到会议室宣布了这个噩耗。

我实在想不通为什么这么优秀的人会突然离开我们。

公司为了悼念他,把原来的宣传墙变成了思念墙。我们把包含Yves的照片贴到了墙上,还有同事写的悼念他的话。

我到现在也无法接受他已经离开了我们这个现实。

就像一个同事说的:他其实没离开我们,只是出差去了。

现实是残酷的,明天就是他的追悼会了。

思绪很乱,这篇文章应该是1月6号就写好的。但是一直没有勇气写完。现在我都不敢看那面思念墙,一看就会哭。

Yves平时爱说的话:

  1. FreeBSD是最安全的,我就用它作服务器。他发布几年来只有几个高危漏洞。
  2. 恩,好吧。
  3. 那你先做一下research
  4. 哦~~~(喜欢大彻大悟的那种“哦”)

关于Yves的一些事情:

  1. 有时我加班,和他一起去吃饭,好像每次都是味千拉面。他很喜欢吃吗?
  2. 他有台小服务器,说是300多买的,虽然CPU是P3的,但是有512M内存,电源用笔记本的那种,只有35w。他说巨省电,可以一直不关机下BT。他的服务器上装着OpenSSH,平时可以拨VPN连回去。服务器是动态IP,所以他写了个程序,发现IP地址变的时候就自动放到一个地方。
  • Share/Bookmark

电脑城的JS

今天看到一个同学说: 去买笔记本, 自己看好的一个型号JS说已经停产了, 给他推荐了其他型号.

我来说说我的经验.

一般我们能看中的都是网上热评的东西, 商家就利用这点.

如果他们有存货, 就先报低价, 然后在附件上宰你.

如果你不肯买他们的附件, 你是不可能以这么低的价格买到机器的.如果他们没有会说停产了, 劝你买他推荐的型号, 都是新出的, 配置可能还没停产的那款高, 但利润高.

如果一开始给你报个价格, 他们觉得低了, 一般就会打电话到仓库, 然后跟你说不好意思, 仓库里只剩下样品或者次品了. 问你要不要. 你不要的话, 第二天再去问, 价格就涨上去了.

另外, 买的时候, 多看看包装上是否有经销商自己的贴纸或者其他记号什么的, 如果有, 八成是别人挑剩下的有问题的东西. 另外, 货物的摆放位置也要注意看一下, 如果是从一个特殊的地方拿的(比如其他货都在柜子里, 就这一个是放在配件区域的), 估计也是有问题的. 尽量让他多拿几个, 从外观上比较一下.

  • Share/Bookmark

Hope: 2009

2008: 雪灾, 火车, 地震, 闹运, 金融危机

2008: 结婚,买房

2009: 希望

2009: 希望

PS: 元旦不要忘记听新年音乐会哦

  • Share/Bookmark

我家的弱电布线

装修开始的时候, 因为没做足功课, 导致装修开工第二天我跟电工亲自交代哪里放插座, 哪里放开关. 而这些临时的想法没有时间让我仔细去验证. 导致后来留下一个小问题.

装修前我们就规定好, 家里的网线和电话线统统使用网线作为传输介质. 这样会更耐用, 而且抗干扰能力强, 如果以后网络接口不够用了, 还可以只在弱电箱那里换一下插座的位置就能实现将电话接口变成网络接口的功能.

这是我当时设想的布线图.

问题1: 电视墙上只留了一根网线, 没留电话线. 如果需要同时连接HTPC跟游戏机, 必须要买个Hub才行(为什么只留一根网线呢? 当时考虑留这根网线是用来接”未来可能购买的游戏机”用的. 而HTPC是打算放到沙发旁边的. 后来我就一直在想, HTPC放到沙发旁边的话, 视频线音频线怎么接啊? 当时傻掉了.)

问题2: 无线路由器剩余的3个接口用不上.

如果我能在电视墙那边的暗合里再穿一根网线到弱电箱的话(现在那根管子里只有一根网线), 就可以改成下图的样子

该方案的优点:

  1. 宽带猫, 无线路由器, HTPC, 游戏机都可以放到电视墙那里(电视柜里), 无线路由器的4个接口都可以得到充分利用.
  2. 无绳电话可以放到沙发旁, 并且又远离了无线路由器, 将二者之间的干扰减小

该方案的缺点:

  1. 需要穿一根网线

Update1: 经过半个小时奋战, 终于多穿了一根线进去. 但我测量了一下, 有一个线对不通. 不知道是水晶头接的问题还是网线被我拉断了. 反正知道怎么穿线了, 如果线有问题换起来也方便.

Update2: 当线管布好之后, 基本上是没法穿线的. 需要用原来的线作为引线,  将新线用胶带绑到原线上, 然后慢慢抽.

  • Share/Bookmark
Page 3 of 4412345102030...Last »