山自高兮水自深,当尘雾消散,唯事实流传。

2008-12-27

SyntaxHighlighter实现Blog代码语法高亮无废话流程

一、Hack过程有两步:

1、下载最新的SyntaxHighLighter,压缩包内有三个文件夹(Script、Styles、Uncompressed),如果不信任陌生链接的速度,可以将文件传到自己的服务器上,需上传的文件有Script目录下的全部文件,Styles目录下的css文件,这里以http://hotspeedli.googlepages.com为例;

2、进入Blogger后台的“修改Html”,在“修改模板”的代码框内找到这句</body>,在其前面贴入代码:


<link href='http://hotspeedli.googlepages.com/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/>
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shCore.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushPhp.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushJScript.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushSql.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushXml.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushDelphi.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushPython.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushRuby.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushCss.js'/">
<script class="'javascript'" src="'http://hotspeedli.googlepages.com/shBrushCpp.js'/">
<script class="'javascript'">
dp.SyntaxHighlighter.ClipboardSwf = 'http://hotspeedli.googlepages.com/clipboard.swf';
dp.SyntaxHighlighter.BloggerMode(); 
dp.SyntaxHighlighter.HighlightAll('code');
</script>

将代码中的带有http://hotspeedli.googlepages.com的地址替换成自己的地址,指向正确的js和css文件路径。
这里指出我自己在操作过程中遇到的问题——完成上述操作之后,有行号和textarea效果显示,却没有代码高亮效果,原因是<link>括号内的css地址不正确,如果代码中的js和css路径没有错误,应该没有什么问题。

二、SyntaxHighLighter使用
使用方法官方有具体的开发文档,这里就不再多作唠叨,有两种包裹代码方式:
textarea包裹方式

<textarea name="code" class="c#" cols="60" rows="10">
... some code here ...
</textarea>

pre包裹方式
<pre name="code" class="c-sharp">
... some code here ...
</pre>

1、pre括号内的<(&lt;)、>(&gt;)、&(&amp;)字符要转换成括号内的内容,textarea不适用于在javascript内容;
2、name的值写code就可以了,这是因为代码中的dp.SyntaxHighlighter.HighlightAll(code)是作用于所有标识了code的源码块;
3、class参数值参照列表
Language Aliases
C++ cpp, c, c++
C# c#, c-sharp, csharp
CSS css
Delphi delphi, pascal
Java java
Java Script js, jscript, javascript
PHP php
Python py, python
Ruby rb, ruby, rails, ror
Sql sql
VB vb, vb.net
XML/HTML xml, html, xhtml, xslt

2008-12-25

如何在更换Blogger模板时不删除部件(widget)?

Blogger一个比较麻烦的问题是在更换模板时,如果不备份原模板则会丢失部件。在更换新模板后,则需要手工的逐一添加,这是相当浪费时间和耗精力的过程,看到了《How to change Blogger Template without deleting widgets ?》,基本可以解决这个问题,大体翻译如下。

有没有什么方法备份部件?
有的,我们可以在更换模板之前备份我们要保留的部件。

如何备份Blogger部件?
在更换新模板之前不需要窗口扩展小部件(),而查找到部件代码,这很容易做到。

选中这些部件代码


拷贝并保存所有的这些黄色区域的部件代码。

然后上传新模板,传完之后会显示一个如下信息

在这里不要点击“确定并保存”,在新模板代码中查找Widget部件代码,然后把刚才拷贝的部件代码粘贴到下图黄色区域之后,

保存模板,这样原模板所有的部件就会应用到新模板中了。

原理是什么?
Blogger在其数据库中以唯一的部件ID保存这些部件的内容。

2008-12-06

左手笔,右手刀——辛弃疾轶事

话说,21岁的南宋词人辛弃疾参加了抗金义军,之后率领近2千人投靠耿京起义军,随军投靠的有个叫义端的和尚偷了由他保管的义军大印,耿京大怒责怪其失职,要当场问斩,辛弃疾立誓给他3天时间,追回大印还给大家一个交代,遂勒马疾驰追上义端和尚,取其首级,夺回帅印,之后耿京对他便十分信任。不久之后,耿京手下的一个将领叫张安国,贪图奖赏把耿京给杀了,也因此大部分义军已经溃散,辛弃疾亲代50名勇士突袭济州府,活捉正与金人将领喝酒的张安国。

在中学的时候,不太爱唐诗而特别喜欢宋词,而宋词中最爱豪放派的经典,明知在考试中没有多少比重,但仍拿一些课外的东西来诵读,这其中辛稼轩的作品读的最多,主要还是缘于在一本杂志上看到的辛弃疾做的这几件让我那时就心生仰慕的事情,今天由于一些缘故突然联想起来了,仰慕之心悠然再生,辛弃疾果然是“左手笔,右手刀”——文武全才。

破阵子

醉里挑灯看剑,梦回吹角连营。八百里分麾下炙,五十弦翻塞外声,沙场秋点兵。马作的卢飞快,弓如霹雳弦惊。了却君王天下事,赢得生前身后名,可怜白发生。