Not exactly… There are some visible changes. I rewrote the theme of this blog using HTML 5 and CSS 3. Everything seems fine. But can someone please tell me why the following video does not work? (At least not in my Firefox 3.5.)
I tested this theme on Chrome under Windoze, and the video was normal. I don’t know what is wrong with my Firefox because it can play many other videos without problem.
到米国已经三天了,基本上已经不像刚来时那样惊慌。芝加哥的机场有奇形怪状的椅子在超级长的走廊两侧,来到入关的地方,第一感觉是,靠,老外真多啊… 入关时我的 officer 是个印度人,他第一遍问我 where will you study 的时候我还没听懂,囧… 入关以后随着人流来到行李转盘取了行李,然后随着人流走,接着就被一个很胖的黑人大妈拦住了,她一把抢过我的行李,然后冲我喊了一声“F1”,我过了老半天才想明白原来她是让我去 F1 gate 转机,然后我才意识到不知什么时候我已神不知鬼不觉的过了海关了?!
做地铁到 Terminal 1,这里是国内航班的地方,满世界都是老外!并且米国的安检还要脱鞋、解腰带?! 资本主义真是太腐朽了!我一定要多多挖墙脚!然后做一个超级小的飞机来到了超级小的 Lexington Bluegrass 机场,并发现这里取行李的地方同时就是机场的大厅,穿过一道门就直接出去了… 同时我又发现接机的人没有出现,行李也没有出现。于是我去推行李车,准备 DIY 了,然后很窘地发现,所有的行李车都卡在一个轨道里,拿不出来。我心想米国真是先进啊,连行李车都有防盗设施。然后我看见旁边坐这一对白人青年男女,于是就问他们怎么用,他们看了看,然后很有耐心的说,你往里面塞 $3,现金和信用卡都可以,然后就可以用了。我被资本主义的腐朽本质深深地震惊了!正在我很囧的踌躇是否要花这 300 日元的时候,我使用眼睛的旁光看见门口走进来一对帅哥靓女,其中女的手里举着一张纸,上面赫然写着老子的名字!哇嘎嘎~~ 于是我扑过去激动地说 I’m <老子的名字>!,那两个人也激动地说 Hi! How are you~~ … 然后等了老半天行李,接着就开车走了。(奇迹啊,行李居然没有丢。)
到了外面街上,我又发现,这里的街景完全不陌生啊,和 GTA 里的基本 identical 么~~ 连车都很像。街上随处可见各种超大皮卡,muscle cars,在去学校短短的十几分钟里,我居然见到了两辆 Mustang! 然后到了临时宿舍,看门的是一个很 pp 的黑人 mm,估计是打工的本科生。跟帅哥美女道别后,我决定上网,给家人报个平安。本科生宿舍里没有无线网,只有一个 Cisco (!) 的路由器。于是我跑到楼下 ppmm 处,管她借网线,她说没有多余的,我就问附近有没有能免费上无线网的地方,她说你可以去图书馆看看。于是我来到图书馆发现关门了,就在外面找了个隐蔽的台阶,开始上网啦。Kentucky 是个很穷的州,大部分税收都来自农业,所以这里的环境很好,晚上非常安静。后来电脑没电了,我就回去睡觉了。
第二天醒来,感觉很迷茫,就下去逛街。我顺着昨晚黑色 ppmm 的指示找到学校的书店及其入口,刚一钻进去,一个人就冲过来很热情的问我要什么,我说我要网线,他就很热情的把我领到网线处,我就很囧的开始挑。后来想了想,又买了个面包,然后就回去了。中午实在是饿了,于是硬着头皮跑到一个餐馆里,吃了一个汉堡加一大堆薯条。
Some facts:
- 美国的车很强悍,我见到了 Mustang, Viper, Corvette,和各种敞篷。
- 这边清晨出来的时候地上会有很多松鼠,不怕人。
- 薯条是赠品,一大堆薯条也是赠品。
- 可乐分为大杯,超大杯和小桶。
- 我的口语真搓阿…
刚才吃饭的时候被迫看了 CCAV 的一个辩论节目,主题是要不要取消高考加分。辩论在热烈友好的气氛中进行,在场猴子中一群认为应该取消高考加分,另一群认为不应该取消高考加分,大家各抒己见,畅所欲言。辩论取得了建设性成果,与会猴子一致同意,要么取消高考加分,要么不取消高考加分。
支持不取消高考加分的猴子们大多认为,我国很穷,教育资源有限,分配不均匀,所以对于少数猴种比如金丝猴和猕猴就应该加分。支持取消高考加分的猴子们大多认为,那个… 嗯,我忘了他们的论据了。
我是支持取消高考加分的。原因很简单:加分是一种不公。加分是一种特权,特权和歧视是一对矛盾,马克思爷爷曾经说过,矛盾的两方面互相依赖,缺一不可,所以给特定的猴群加分必然意味着对这些猴子的歧视。对于少数猴种来说,这一点是很明显的。我特别喜欢女权运动,所以我不喜欢女士优先,因为这根本就是对女性的歧视。有些猴说了,那特长生和三好优干加分呢,谁歧视丫了?答:是啊,本来就没猴歧视丫,加个毛分啊??有些猴子又说了,特长生他们多辛苦啊,整天要 xxxx, yyyy, 还要 zzzz。答:他们愿意,你管的着么?有特长猴说了,你看我会弹钢琴,多牛逼阿,应该遭到无情地奖励。答:老子还会 TeX 呢,怎么上头没猴奖励老子啊?有些猴子使用例证法说,发达国家也有加分,比如米国就有越战老兵优先录取。答:战死了还授予烈士呢,给你也授一个?老兵为了国家身心受到了巨大的创伤,所以才有特权,特长生受啥巨大创伤了?另外,作为一个中国猴,我们每只猴的心灵都受到了巨大创伤,所以每只猴都加分好了。
所以,这事咋办呢?其实道理是很简单的,高考是一坨屎,我党拥有的大学们是一坨坨屎,我们是一只只的屎壳郎。
订阅了 ConTeXt 的邮件列表,看的手痒的不行了,下了一个 ConTeXt minimal。这个东西安装极其的方便,这里有详细流程。唯一的不爽是安装以后是一个独立的 TeX 发行版,不能和现有的TeX tree 合并起来。我试过把安装好的目录拷到 ~/.texmf 里,然后设环境变量,但是 LuaTeX 老是说找不到 script,很郁闷…
现在的 ConTeXt 和一年前已经大不一样。对中英混排已经有了一定的支持。我从这里抄了一份测试文档,稍微改了一下,编译出来效果还是很不错的。

注意原文档编译出来是不行的,ConTeXt 不会在中文之间断行。必须要在文件里加入
\setscript[hanzi]
才行。另外 MKIV 的内存占用及其恐怖,编译这个文档用了 148M 的内存。
经常看 IBM developerWorks 里关于 Linux 和 UNIX 的文章,不过大部分都看不懂。我一直以为是因为我太搓了,对 Linux 还不够了解。但是今天看到这篇文章以后,我觉得作者们应该承担一部分责任。
对于 Screen 这个东西,我是比较了解的,也经常在 SSH 的远程 shell 里用,所以我完全没期望看这篇文章的时候会遇到任何困难。但是,我看到文章里的第二个图的时候就愣住了。当然后来我反应过来了,然后对这个图极端的无语。首先,一般的地球人在看这种图的时候大多会从上至下的看。于是先看到一个很诡异的 Window A。WTF is “Window A”?? 如果读者很乖的看了图上面的文字介绍的话,会知道 window A 是一个 shell,再往下看,这个 shell 和一个叫做 Screen session 的云“连着”。很好,再往下,Screen session 和 Remote login “连着”,然后 Remote login 通过 SSH 和 Local login “连着”(原来老子在最底下!)。所以这个图很简单,就是四个连成一条链的东西。鉴于地球人都知道 Remote login 和 Local login 是通过网络连接的,一般的逻辑会自然的推出 Screen session 是一片网络云,window A 在云的另一边的某台主机上,于是恍然大悟:screen 的作用就是通过 Remote login 来管理在更 remote 的主机上的 window(很乖的人前来补充:也就是 shell)。
看懂这个以后,下面的事就顺理成章了。图 3 这个垃圾图和上面的图一模一样,不知道什么意思。图 4 说明 Screen 还可以透过网络云连接多台主机!太强大了!图 5 说明连接多台主机以后可以把 remote login 断掉,而 screen session 和他的 window 们还连着!太和谐了!
…
如何改进?很简单,把图都删了!用文字说明。如果一个地方不需要图,就别随便画个小猫小狗来充数。如果硬要画小猫小狗的话,起码也应该把 screen session 画在 remote login 的里面吧??然后把 windows 画在 screen session 的里面。这才像话。
我的 blog 发布程序 Charisma 更新了。
- 可以在配置里设置多个 blog,在程序中选择使用
- Tag 支持
我平时的需求基本都满足了,下一步可能是加上删除 post 功能。
在试用 Charm 未遂的情况下,我决定写自己的 blog 发布程序。看了一下 XML-RPC 的资料,发现 Python 对 XML-RPC 的包装极好,深得我心,于是简单的把 WP 的 API 包装了一下,开始想界面怎么写。Charm 使用了风格比较古老的菜单界面,我不是很喜欢。写起来比较简单的非交互式命令行参数界面好像也不是很合适,想来想去决定写一个类似 Mutt 的界面。
我以前从来没有用过 ncurse。看了一点 Python 的 curse 模块文档以后我发现我丫就是一个 curse/terminal 白痴,但我发扬了我党“一不怕苦,二不怕死”的大无畏精神,找到了一个从文档上看很强大的库 Urwid,开始写界面,结果写的痛不欲生,生不如死,flag 和全局变量满天飞… 总算把发布功能写完了。
以下是我写之前对程序的预期:
- 实现 WP XML-RPC 的全部功能
- 类似 Mutt 的界面
- 从配置文件里读取全部键绑定
- 配置文件里实现多 blog 配置
以下是已经实现的功能:
- 实现列出 post 和发布新 post 功能
- 类似 Mutt 0.0.1 的界面(估计值)
- 硬编码全部键绑定
- 硬编码 API URI, 用户名和密码
… 最后套用 Mutt 作者的话:All blog publishing programs suck. This one just sucks the most!
Edit: 这是在 Charisma 里编辑的。
With effort, I finally put one of my Django applications online. The situation is that HostMonster does provide the Python intepreter, but seems we are not suppose to use Python as a web app language because the Python is version 2.3, and no framework module is pre-installed. So I first installed the Dejango package to ~/.python, and did some searching to find this. According to this document, I copied my Django app to /my-web-root/latrine in which “latrine” was the name of my app, and wrote /my-web-root/latrine/.htaccess as
AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ latrine.fcgi/$1 [QSA,L]
And wrote a latrine.fcgi script:
#!/usr/bin/env python
# -*- mode: python; -*-
import sys, os
# Add a custom Python path.
sys.path.insert(0, "/my-web-root")
sys.path.insert(0, "/my-home/.python")
# Switch to the directory of your project. (Optional.)
# os.chdir("/my-web-root/latrine")
# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "latrine.settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
And happily entered http://darksair.org/latrine/ in my browser, which displayed a very friendly 500 internal error. I was glad that I myself finally made a famous 500 error. After the excitement, I tried to locate the fault. I manually ran the fcgi script in a remote shell, and it was all right (Ok, except tons of Python trackbacks. But that was another thing.). So I decided that the problem was in .htaccess, which I sadly know nothing about… After some painful research I notied that the fastcgi module in HostMonster was actually fcgid-script instead of fastcgi-script. After fixing that in .htaccess, and did some simple Python debug, Latrine Live was online.
昨天做 blog 的文章首字突出显示,使劲看了一下 CSS 的 selector。Selector 分为 9 类
- Type selector, 就是地球人都会用的那种,
h1, p 什么的都是。CSS3 里引入了 namespace,也算在 type selector 里。
- Universal selector, 就是传说中的通配符
*。
- Attribute selector, 我昨天才知道 CSS 里有这么强悍的东西。比如
p[attr=blah] 会选择 <p attr="blah">. 还有很多其他的用法。
- Descendant selector, 一个空格,地球人都用的,比如
h1 em 表示包含在 h1 中的 em. 个人认为 CSS3 中的叫法 descendant combinator 更为准确。
- Child selector, 一个大于号。貌似很少用。这个也是表示从属关系,和 descendant selector 的区别是 child 只选择直接的下级。比如
<div><p><span>aaa</span></p></div> 中的 span 可以被 div span 选择,但是不能被 div > span 选择。个人认为 CSS3 中的叫法 child combinator 更为准确。
- Class selector & ID selector
- Adjacent sibling selector, 一个加号。
div + p, 选择紧跟在 div 后面的 p,并且这两个要有相同的父标签。个人认为 CSS3 中的叫法 adjacent sibling combinator 更为准确。在 CSS3 里还有一个和这个差不多的 general sibling combinator, 暂时还没搞明白怎么用。
- Pseudo-class. 很常用,我们用的最多的就是
a:visited, a:hover. 除了这个 a 系列以外,还有 :first-child 和 :lang. CSS3 中的 pseudo-class 就多得让人发指了,随便说几个::nth-child(), :nth-of-type(), :only-child …
- Pseudo-element, 经常和 pseudo-class 混,包括
:first-line, :first-letter, :before 和 :after. 在 CSS3 里,为了和 pseudo-class 区分,pseudo-element 的符号变成了两个冒号。
Pseudo-class 和 Pseudo-element 的区别
其实很简单。Pseudo-class 的冒号可以想象成 which is. Pseudo-element 的冒号(或两个冒号)可以想象成 ’s. 也就是说前者选择的是符合条件的冒号前面的东西,而后者选择的是冒号前面的东西的一部分。 感觉有点像面向对象的类包容和类继承~~
回到首字突出
在网上看到很多实现文章首字突出的方法,居然有很多是用 javascript 搞的… 其实完全用不着。我的方法是
.entry-content > p:first-child::first-letter
{
background-color: #2e3735;
float: left;
margin: -0.2em 0 -0.2em -1.15em;
padding: 0.2em 0 0.2em 0.15em;
font-family: Arno, Palatino, Georgia, Times, serif;
font-size: 3em;
border-radius: 0.2em;
-moz-border-radius: 0.2em;
-webkit-border-radius: 0.2em;
}
Reference
- http://www.w3.org/TR/CSS21/selector.html
- http://www.w3.org/TR/css3-selectors/
- http://www.w3.org/TR/CSS21/conform.html