WordPress实现代码语法高亮

作了一个程序的部拉格,代码的格式化显示少不了。这里有两个要求:

  1. 分行显示代码。
  2. 有语法高亮。

首先,语法高亮需要一套js支持。譬如托管在github上的syntaxhighlighter。这个action script/css 库支持的高亮的语言有 ActionScript3、Bash/shell、ColdFusion、C#、C++、CSS、Delphi、Diff、Erlang、Groovy、JavaScript、Java、JavaFX、Perl、PHP、Plain、PowerShell、Python、Ruby、Scala、SQL、isual Basic、XML。[原文]

其次,用简单的语法整合到Wordpress里,譬如SyntaxHighlighter Evolved这个插件, 并且这具目前是Wordpress官方推荐的。

安装后用法很简单,&#91php light=”false”&#93 your code here &#91/php&#93 ,语法就高亮了,其中light属性用来隐藏行号,cool!

your code here

有评论说用了这个插件后加截很慢,要花二到三十秒去装载各个script, 但是换成插件”Crayon Syntax Highlighter” 后,就快多了了。目测这个插件更新比前一个勤, 但没亲测效果。


附录:

 
< = &lt; or &#60;
> = &gt; or &#62;
/ = &#47;  	
] = &#93;
[ = &#91;
" = &quot; or &#34;
' = &#39;
“ = &ldquo; or &#8220;
” = &rdquo; or &#8220;
‘ = &lsquo; or &#8216;
’ = &rsquo; or &#8217;
& = &amp; or &#38;

svn的post-commit末能执行

在开发一个后台系统,用svn管理代码。以前用做过同样的事情,希望commit代码后能自动更新网站。

用的是centos 64bit。原理很简单,就是在depot下的hook目录有个post-commit.tmpl, 文件里有详细的使用说明,拷贝成post-commit,增加需要的命令(同步服务器的部属目录)。
一些有坑的地方:

  1. 执行post-commit时是没有环境变量的,如需要环境变量,得自己重头设置。
  2. 脚本对svn damon的所有者(譬如apache)有可执行权限 744。
  3. 目标目录对svn update的执行者(譬如apache)要有可写权限 chown -R apache:apache。

遗憾的是,commit后,脚本没有执行成功。 查找原因时,祭出日志大法, 把结果输出到日志文件。结果显示”svn update”命令末执行。 进一步测试,脚本本身是执行的。 突然想起来,可能是error没有输出到output, 于是在 “svn update >> $log 2>&1″, 果然有error: “….. Store password unencrypted (yes/no)? svn: Can’t read stdin: End of file found”。命令里面其实是有用户名密码的,但是apache用户没能存成临时文件(用root用户测试脚本没问题)。 最后的解决方法是,在”svn update –username xxx –password yyyy” 后面加上参数 ” –no-auth-cache –non-interactive” , 网站在commit后终于自动更新了。 ; )

小技巧:

  1. post-commit执行败的话,commit也会失败,并在客户端显示出错。
  2. 测试post-commit时,可以直接运行这个脚本,不用每次在客户端上传一次文件。

[脚本]
/usr/bin/svn update /***/***/***/ –username ***** –password ***** –no-auth-cache –non-interactive –force

[环境]
CentOS release 6.2 (Final)
svn, version 1.6.11 (r934486)

在zend studio中用XDebug调试yii项目

[debug环境 Zend Studio]

  1. 下载和安装zend studio 。
  2. File->New->Php project from existing directory, 设置项目名字。所有文件会自动映射到workspace 。
  3. 右键->项目名->Property->Resource, 把Text file encoding改为utf-8. (用container的话,可能是windows的设置,如gbk之类的)。
  4. 右键->项目名->PHP Debug->Server Settings->右边的PHP Servers->选中第一个默认选项->Edit
    Debugger设置为XDebug->OK 。
  5. 右键 项目的启动文件 index.php, Run/Debug Setting -> 选中index -> 右边一列选Edit -> 选Server卡,去掉 “Auto Generate”的勾,并填写相对于localhost的路径。
[php环境 XAMPP]
  1. 安装,并初始化一个yii项目。
  2. 在XAMPP panel中,选apache->Config->php.ini, 找到[XDebug],把注释掉的设置放开。
  3. 更改zend_extension的值为本地的php_xdebug.dll完整路径(加上盘符)。
  4. 把xdebug.remote_enable = 0改为1 。
  5. 重启apache,在phpinfo()的返回中,会有“with Xdebug v2.2.3”显示。

[说明]
如果不设置xampp的zend debugger, 也可以调试php (用internal debugger)。

[环境]
windows 8.1
xampp-win32-1.8.2-2-VC9-installer.exe
ZendStudio-10.6.1-win32.win32.x86.msi

……

一个VisualStuido的c++工程编译优化

今天优化了一个vs的项目。项目本来也是我自己建的,是一个cocos2dx的移植。这个项目的代码开发时是跑在xcode下,并无违和感。因为cocos2dx本身是跨平台的,我想让项目跑在windows下,便于使用一些顺手的开发工具,于是手贱了。

移植过程比较顺利,其中遇到的一个问题是:一些include的头文件没有相对路径。Class目录下上千个.h文件,在不同的子目录下。在包含这些头文件时,没有用相对路径,而直接用了文件名。xcode在设置include path时比较方便,可以选择包含子目录,但是在windows下不行(见这里)。

于是,vs这个项目下有了数百个include path。结果是,一个文件编译要8s,总时间32分钟。 最后,写了个python脚本,把所有的绝对路径指下相对于Class目录的相对路径,并且设置了预编译头。运行结果是,同一个文件,编译时间降为1.7s,总时间1分零1秒(不用预编译头16分21秒,惊讶吧)。世界,一下子,又美好了 。

这里只是一个常规的优化,不常见的是极端情况下include path会占用大量编译时间(xcode或者codewarrior应该对此有过优化)。要再做好一点,可以牺牲灵活性用unit build把cpp文件合成大文件编译,或者用分布编译工具并行编译,编译速度可以成倍增加。 扯开去,一方面我们在想办法提高编译速度,另一方面我们在想办法让编译多做事以提高运行速度,僻如模板,变参数模板等。可以说,代码面前,“为所欲为”。^_^

卷首寄语,以飨来者。

个人“部落格”从曾横行当道如日中天,发展至今貌似已穷途末路日落西山。其实用博客的人还是很多,作用也变得更宽泛了,像作为 “知识管理(CMS)”、“新闻聚集”、“公司/产品PR”等等。

博客的不那么流行,直观地看是两方面原因:一是生活节奏快崇尚快餐文化,作为抒发感情报怨生活,140字的微博有很大的替代效应,传播更快捷和更社交化。二是作为长篇大论要自已写得满意别人看得舒服还没约稿费,累。博客也有些不能被替代的潜质:有些用来分享的知识和观点需要契入整理,阐述时可以使用的媒体更丰富,作为分享源受众质量也不同。

博客难写。值得写一下作为分享的内容,很多本身不好理解或者自己还没完全理解,写出让人产生阅读欲望的文字需又要一定的大多数人欠缺的技巧。我相信一点:说明白一件事,最重要的是自己已经理解了,想透彻了。像科普小品,同样的课题,有些文章看得云里雾里昏昏欲睡,有些读了却让人豁然开朗欲罢不能。文章的看不懂是作者不合格,说不明白是作者自己本来理解得就含糊或者就是在糊弄,说得明白但枯燥无味是语言表达不娴熟。

作为我,生活中五味杂陈不值一哂。但很多年工作下来,一些细微末技、所感所思却值得归个档,以后作为参考,或者引以为鉴,又或者抛砖引玉与人共鸣。这个博客,希望不是作为转贴的知识管理,而是作为自己工作的一个梳理。虽然自我标榜为一枚有经验的开发者,但我还是经常遇到些细枝末节的问题,明明记得解决过还曾洋洋得意,最后还是落得一行行地看日志或者一页页地翻搜索引擎。因此,这个博客文章将分为两类:

  1. 比较长篇的文章,对一些曾经困惑过的问题作阐述,或者翻述 一些自己理解的技术。
  2. 自己遇到的一些问题和找到的答案,简单乏味但有条理,可能行家看来会觉得可笑。

若干年前也整过一个技术博,曾经决心每周更新一次,结果7、8个月间上线了5、6篇随记,后来还被网上仇人给人肉出来作攻击(哈哈)。现在域名也丢了服务器也不再续费了,痕迹都已被擦干,只留下了点回忆。每个新的开始总是踌躇满志,2014年重新整个工作“部落格”,放下包袱,轻装前行。

最后提醒自己:大道自然。如果我说得含混不清,那我一定是在掩盖什么。