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

2008年10月23日星期四

再设hosts

不知道为什么,以前设的 hosts 不好使了:
72.14.219.190 xxx.blogspot.com
别人的不设也能访问,就是访问不了自己的,难道我人品有问题。

nslookup xxx.blogspot.com

Server: gjjline.bta.net.cn
Address: 202.106.0.20

Non-authoritative answer:
Name: blogspot.l.google.com
Address: 209.85.175.191
Aliases: xxx.blogspot.com


把得到的 IP 再设置到 hosts 里:
209.85.175.191 xxx.blogspot.com
又可以访问了

2008年6月18日星期三

QQ空间的RSS

空间RSS订阅地址:
http://feeds.qzone.qq.com/cgi-bin/cgi_rss_out?uin=QQ号码
省得每次还要打开巨慢巨垃圾的QQ和IE。

不过貌似还是有问题:并没有把所有文章都列出来,而是毫无规律地选了些,而且更新时间延迟以月来计。不知道tencent出于什么考虑,还是说技术上的问题。不管是哪种原因,都给人足够的理由鄙视之。

2008年6月10日星期二

抢楼,100

哈哈,灌了100层了,纯水,楼下继续。

2008年1月16日星期三

喘口气,加加油,继续走

没想到,才短短八天的时间,就已经贴了四十篇文章了。其中一部分是这期间才写的,一部分是以前写的。不过以前写的最多占三分之一。
以后应该不会这么高产(这么疯狂)了。但会一直坚持写下去,写技术Blog的好处,才刚刚深有体会,以前实在是太懒了。

2008年1月11日星期五

要经常review文章

有时候写Blog写得比较匆忙,或者写得太有兴致了,敲得太快,思维速度超过了手的速度,就会出现一些小的bug。review可以很容易地发现这些bug。

而且写的时候是在编辑页面,写完了后预览或者保存后浏览,可以看到页面究竟是不是按照自己的样式去布局,去显示样式。其实就是站在一个访问者的角度来看,看看顺不顺眼。
其实就是站在用户的角度来考虑,重视用户体验。和Web开发是相通的。

2008年1月10日星期四

Code Highlight

Google的Blog确实给用户很大的灵活性,什么都可以自定义,模板的源代码都可以自己修改。

写技术Blog,贴代码的机会很多,代码的语法高亮就很重要。一开始想雄心勃勃地自己写一个,后来一是没时间,二是写得不一定会比已有的东西好。

Google了一下,语法高亮可以有好几种解决方法。一种是js来控制,这个需要在页面上引人js文件,比较适合自己的空间架的Blog。一种是用CSS来控制字符的色彩,HTML则用工具来生成,我一开始就是想自己写一个这样的工具。

后来终于找到了一个linux的开源项目source highlight,详见:
http://www.gnu.org/software/src-highlite/http://www.gnu.org/software/src-highlite/source-highlight.html

用apt-get的话无法安装最新版的,最好是去下源代码来自己编译:
ftp://ftp.gnu.org/gnu/src-highlite/去下载最新的源代码tar.gz包。解压并到解压后的目录,依次执行:

./configure

make

sudo make install

如果不能编译的话,就要先安装编译环境:

sudo apt-get install build-essential

和boost regex库

sudo apt-get install libboost-regex*


用倒是挺简单,命令行就行,具体参考它的手册。但是默认生成的色彩并不理想,不是TextMate的那种漂亮的颜色,而且高亮的也不是完全正确。比如symbol,应该是:sym这种,而它默认的却是+-=这些操作符。

幸亏source highlight提供很方便的扩展,不用改它本身的代码或配置,可以直接通过外部文件来设置格式。它本身的配置文件是xml格式的,在我Ubuntu 7.10 上的路径是:/usr/share/gtksourceview-2.0
在文件夹language-specs下是语言的定义,xx.lang,比如ruby.lang。
在文件夹styles下是高亮色彩的定义。

source highlight给我们提供了更简单的语法来定义外部的配置文件,不过参考它本身的xml格式的配置文件可以帮助我们配置一些比较复杂的规则。

历经辛苦,勉强定义了一个支持ruby大部分语法规则的.lang配置文件,里面几乎全是用正则表达式。source highlight用的是Boost regex library,而这个库又用的是Perl的正则表达式语法,很不习惯。具体配置如下:

keyword = "__FILE__|and|def|end|in|or|self|unless",
"__LINE__|begin|defined?|ensure|module|redo|super|until",
"BEGIN|break|do|false|next|rescue|then|when",
"END|case|else|for|nil|retry|true|while",
"alias|class|elsif|if|not|return|undef|yield"
keyword = "defined?"

comment start "#"

symbol = ':[a-zA-Z0-9_]+'

variable = '\$[a-zA-Z_][a-zA-Z0-9_]*',
'@@[a-zA-Z_][a-zA-Z0-9_]*',
'@[a-zA-Z_][a-zA-Z0-9_]*'

number = '(?<![\w\.])([1-9](_?[0-9])*|0)(?![\w\.])',
number = '(?<![\w\.])([1-9](_?[0-9])*|0)(?![\w\.])',
'(?<![\w\.])(( (\d(_?\d)*)?\.\d(_?\d)* | \d(_?\d)*\. ) | ( (\d(_?\d)*|(\d(_?\d)*)?\.\d(_?\d)*|\d(_?\d)*\.)[eE][+-]?\d(_?\d)* ))(?![\w\.])',
'(?<![\w\.])0[0-7](_?[0-7])*(?![\w\.])',
'(?<![\w\.])0[dD][0-9](_?[0-9])*(?![\w\.])',
'(?<![\w\.])0[xX][0-9A-Fa-f](_?[0-9A-Fa-f])*(?![\w\.])',
'(?<![\w\.])0[bB][01](_?[01])*(?![\w\.])'

regexp delim "/" "/" escape "\\" multiline
regexp delim "%r{" "}" escape "\\" multiline

string delim "'" "'" escape "\\" multiline
string delim "\"" "\"" escape "\\" multiline
string delim "%{" "}" escape "\\" multiline
string delim "%w(" ")" escape "\\" multiline


我把它保存为rb.lang,放在ruby源代码文件同一目录下。NND,写到后面才发现有个Tutorials on Language Definitions,就是那个手册后面:http://www.gnu.org/software/src-highlite/source-highlight.html#Tutorials-on-Language-Definitions,拜托啊,写手册请把tutorials写在最前面,新手从上往下看,看到后面都成高手了,谁还需要那个速成的呀。

然后就是色彩方案的定义,这个就更简单了,可以直接定义CSS文件,下面是我定义的一个:

body { background-color: black; color: white; }

.keyword { color: #DE9309; font-weight: bold; }
.string { color: #00FF00; font-family: monospace; }
.regexp { color: #0000FF; }
.comment { color: #AB50D6; font-style: italic; }
.number { color: #0080FF; }
.symbol { color: #3F92B7; }
.variable { color: #FF0000; }

我把它保存为ruby_highlight.css,放在rb.lang同一目录下。

现在就可以运行了,在命令行下敲入:

source-highlight -s ruby -f html -i demo.rb -o demo.html --css ruby_highlight.css --lang-def rb.lang

(天啊,source-highlight,16个字符的命令,真是少见地长。)
demo.rb是我要高亮的ruby源代码文件,demo.html是我要输出的html文件名,二者完全可以不同名。
生成后的HTML文件,用浏览器打开,哈哈,不是我显摆,真的非常漂亮,就和TextMate里的一样。

这种方案需要把CSS的内容导入到页面里:
/* for code highlight */
.code_bgcolor {
background-color:#E5E5E5;
}

.keyword { color: #DE9309; font-weight: bold; }
.string { color: #00DF00; font-family: monospace; }
.regexp { color: #0000FF; }
.comment { color: #AB50D6; font-style: italic; }
.number { color: #0080FF; }
.symbol { color: #3F92B7; }
.variable { color: #FF0000; }

/* for command line */
.post .cmd {
background-color:#000000;
padding: 10px;
margin: 7px 0px 7px 0px;
}

.cmd_failed { color:#ff0000; }
.cmd_normal { color:#00ff40; }

/* for quote */
.post .quote {
border: 1px solid #BFBFBF;
margin: 7px 0px;
padding:5px 20px;
}

然后,命令行可以这样写:

<p class="cmd"><span class="cmd_normal">Oh_Yes</span></p>
<p class="cmd"><span class="cmd_failed">Oh_No</span></p>

效果:

Oh_Yes

Oh_No


代码高亮可以这样写:

<pre class="quote code_bgcolor"><tt>
<span class="keyword">def<span>
</tt></pre>

效果:
def

普通引用可以这样写:

<p class="quote">some_text</p>

效果:

some_text


source highlight生成的有讨厌的<span class="normal">,我写了个脚本,可以把它去掉,顺便还加上了pre的class:
`source-highlight -s ruby -f html -i r.rb -o r.html --css ruby_highlight.css --lang-def rb.lang`

sleep 1

code_start = '<pre class="quote code_bgcolor">'

File.open("r.html").each do |line|
line.gsub!(/<pre>/) {|s| s = code_start if s}
line.gsub!(/(<span class="normal">)(.*?)(<\/span>)/) {$2}
puts line
end

然后直接在命令行里输入下面的命令:

ruby blog_scripts.rb > r2.html

哈哈,去r2.html把相应的HTML拷过来就可以了

还有另一种方案,生成的HTML里直接嵌入CSS。先定义一个rb.style(这个语法限制比CSS多,所以有些效果比如背景黑色做不出来,我通过apt-get装的是source highlight 2.4,手册上说的是2.6以后才支持背景色,我晕),放在rb.lang同一目录下。
命令行:

source-highlight -s ruby -f html -i demo.rb -o demo.html --style-file rb.style --lang-def rb.lang

这次生成的HTML就在标签的style属性里直接写CSS了。在网页设计上这是一种很糟糕的方式,很不DRY(Don't Repeat Yourself),而且用了很多已经不推荐使用的font标签,整个HTML的也变大了,膨胀了。

最后居然不知道这篇文章该用什么tag,勉强和编辑本Blog搭边,毕竟代码高亮也是为了贴的代码好看。

2008年1月9日星期三

换模板,调CSS

换了个新的模板,原来那个宽度太窄了,先想试着调宽一些,无奈有些线条图片无法改,只得换了一个以百分比布局的模板。

新模板感觉还行,很简单,没有那些鲜艳花哨的东西。改了一些模板的CSS,包括字体,字体大小,颜色等,感觉看起来更舒服一点。Google的东西就是好,尽量不约束你的行为,几乎支持所有的HTML,CSS,js,完全可以自定义。

You are allowed to put anything you want in your template, since it just becomes an HTML file like any other once it is published. That means that Blogger doesn't specifically disallow any HTML or CSS, but it also means that it's up to you to make sure that what you use is correct and supported by your browser.

经测试,CSS的浏览器兼容性没有问题。Windows XP下:Firefox 2.0, IE 6, IE 7 都没问题。Ubuntu 7.10下:Firefox 2.0, Opera 9.23都没问题,ies4linux少数汉字无法正常显示,但CSS布局一切正常,那是软件本身的问题,不是CSS不兼容。

再废一句话,在linux下谁还用IE啊,除非是开发要调试浏览器兼容性问题。
其实所有的用户都应该抵制IE!!!

总的来说一切都很满意,打算长期在这里住下去了。

Visit blogspot


就是我现在用的这个Blog,登录和编辑是在www.blogger.com上,这个没有问题。但是访问是在xxx.blogspot.com上,从注册的那天开始就一直访问不了,开始还以为是DNS的问题,今天去网上查了一大圈,才发现是“伟大的火墙”干的好事,不是我一个人遇到的问题。

国内的用户可以注册,登录,发布编辑都没问题,就是不能通过xxx.blogspot.com来访问。国外的用户应该都可以访问,但国内大部分都是写的中文,给外国人看有啥用啊?

伟大的狗封网(G*F*W)啊,您不是一个人在战斗,全中国的网民都在跟您战斗啊!

测试blog是否被屏蔽
http://www.websitepulse.com/help/gadgets.china-test.html
专门给中国一个测试页面,真给面子,也说明了只有中国有这种需求。

如果测出来是被屏蔽了,下面的方法可以绕开屏蔽来访问:

  1. 编辑WINDOWS\system32\drivers\etc\hosts 文件(Linux用户是/etc/hosts),然后加入72.14.219.190 xxx.blogspot.com ,其中xxx是你的用户名,即可访问到你自己的BlogSpot了.

  2. http://anonymouse.org/cgi-bin/anon-www.cgi/http:/xxx.blogspot.com, 在xxx处填上你的地址就可以正常访问了.

  3. http://xxx.blogspot.com.nyud.net:8090/

  4. http://www.pkblogs.com/ 或者 http://www.inblogs.net/
(2008年4月初,上面的第4种方法,即pkblogs和inblogs也不能用了,不过1,2,3还继续有效。)

Is your blog blocked in India, Pakistan, Iran or China?
真可悲,一共就四个国家屏蔽,当然朝鲜没有屏蔽,因为他们不能上网。

http://www.pkblogs.com/xxx
http://www.inblogs.net/xxx

如果用上述办法还是不能访问,就要检查blog的状态了:

测试blog能否被访问
http://www.websitepulse.com/help/gadgets.ping-test.html

这篇文章讲得很详细:
http://www.pkblogs.com/betabloggerfordummies.blogspot.com/2007/10/is-china-blocking-your-blog-grrr.html

越南也被光荣地点名了:
Many Asian countries, such as Vietnam, have convinced the ISPs there to block access to BlogSpot.
http://www.pkblogs.com/bloggerstatusforreal.blogspot.com/2007/01/blog-blocked-but-by-who.html

还有个国外的网站,测试网站是否被“伟大的火墙”屏蔽:
www.greatfirewallofchina.org/test/
当然很不幸的是,这个网站本身也被“墙”给屏蔽了,所以国内用不了(用代理也许可以,我没试)。

2008年1月8日星期二

写Blog的原则

  1. 只写与技术相关的,精确一点,只写与Ruby, Rails, Agile相关的。
    (修正一下,还可以写点搞笑的,轻松的)
  2. 拒绝感性的,无病呻吟的,多愁善感的,故作深沉的,发泄的,艺术的,华丽的,空洞的,冗长的;
    提倡理性的,朴素的,简洁的,充实的,专注的,通俗易懂的。
  3. 尽量避免口水话,引子,前言,序,编者按等前戏,最好上来就直奔主题,开门见山。
  4. 经常review写过的文章,发现能够改进的地方要毫不犹豫地refactor。

在这里安家了

一直找不到一个很合适的Blog。

最开始用的是MSN的空间,那玩意用过的都知道,又慢又烂。
QQ空间更加不考虑,连Firefox都不支持。
javaeye的blog其实不错,贴代码也有语法高亮。但那里的风气我不太喜欢,我想找个清净自由点的地方,用以备忘一些技术相关的东东。
前两天还用过myspace,可惜编辑器太次了,对Firefox支持也不够,还是放弃了。
希望Google不要让我失望,当然Google还从来没有让我失望过。

还是有点小问题:
  1. 好像还不支持附件上传,不过这个不常用,不是什么大问题。
  2. xxx.blogspot.com被G*W*F屏蔽了,只能通过www.pkblogs.com来访问。
  3. 字体比较少,没有中文字体。
  4. 没有代码语法高亮,得自己搞定。
总的说来还是很不错,UI和用户体验都很棒。