如何在 Blog 中使用语法高亮显示

by Richard 6. March 2010 11:11

大家写博客时,常常需要贴出代码,但显示在blog页面上的效果往往很难让人满意(不能语法高亮),习惯了在开发工具中看语法高亮代码的我们肯定也想在blog上看到同样的效果。那如何实现一个代码高亮效果呢?经常上一些技术大牛的博客,发现很多都是用的SyntaxHighlighter语法高亮工具,于是推荐给阿东,由于它不需要与服务器交互,所以安装这个扩展很简单,只需要包含相应css文件,js文件,就可以轻松实现代码高亮。很快,阿东便在APJ的博客上安装了SyntaxHighlighter扩展。

使用SyntaxHighlighter高亮显示代码也非常简单,下面就以实例介绍如何使用syntaxhighlighter语法高亮工具优化你的代码显示,让你和那些大牛一样能在博客上写出"漂亮"的代码。更详细的使用说明可以访问SyntaxHighlighter的网站

首先来看一段javascript代码使用高亮后的效果: 

    /**
     * demo function
     */
    function foo()
    {
        alert('Hello World!');
        // it works!
    }

效果还不错吧。我们来看看是怎么做到的:

第一步,打开一个notepad,在里面贴入要显示的语句,例如上面例子中的:

    /**
     * demo function
     */
    function foo()
    {
        alert('Hello World!');
        // it works!
    }

注:如果你的代码中有“<”(小于号),还要把全部的“<”都替换为“&lt;”,后文会解释原因。

第二步,用一个<pre></pre>把代码包裹起来,并通过pre元素的class来指定要展示的是什么语言。就像:

<pre class="brush: js">

......

</pre>

 注:为了节省篇幅,我们用......代表要显示的代码块。

第三步,从notepad中拷贝上面所有的代码,并粘贴到你想要显示的blog的位置,注意这里要在blog编辑器的HTML模式下进行粘贴。在APJ的博客上可以有两种方式切换到HTML模式:

 方法1是点击“HTML”按钮:

方法2是选中“User raw HTML editor”单选框:

 

现在再来具体解释一下其中的细节:

第一步中,为什么要把“<”替换成“&lt;”呢?上面的步骤中也提到我们最后的代码块加上pre的包装是以HTML的方式放入文章中的,在HTML中“<”代表一个标签的开始,后面的内容就不会正常解释了,要想在HTML中正常显示一个“<”,要用它的转义符“&lt;”。其实大家平时想在网页中多显示几个空格时,就会用到空格的转义符“&nbsp;”,其实是同一个意思。 其实SyntaxHighlighter支持两种方式高亮显示,一个是用我们正在介绍的pre标签来显示,还有一个是用script标签来显示。用script标签可以解决转义的问题,可以免去替换“<”的步骤,它的实现方法是把代码放在“<![CDATA[”和“]]>”中间(点击了解更多)。但是不幸的是我们APJ的博客的编辑器不支持输入“<![CDATA[”和“]]>”,所以只能使用pre的方式,杯具啊!而且我试过,我们用pre的方式,只需要替换“<”,不需要替换“>”,我发现“>”是被自动替换成“&gt;”。那为什么我们不需要替换空格,接着看下面。

第二步中,为什么要用pre标签来显示代码呢?如果直接把代码块放在HTML中,其中的一些空格,回车换行,以及缩进都会被忽略掉,而pre标签元素(preformatted text)是专门用来展现预定义格式(包括空格,回车换行,以及缩进)的标签。

在<pre>标签中可以通过不同的配置,为各种语言做高亮显示,目前SyntaxHighlighter支持二十多中语言高亮显示,我们用的比较多的是: 

语言

配置值(注意全都是小写)

C#

c#, c-sharp, csharp

VB.net/ VB Script

vb

C/ C++

c, cpp

CSS

css

Javascript

js

Java

java

PHP

php

Plain Text

plain, text

SQL

sql

XML/ HTML

xml, xhtml, xslt, html, xhtml

下面再多看几个例子:

SQL ,写法:<pre class="brush: sql">......</pre>

delete from [cqaInterfaceFilter]

insert into [cqaInterfaceFilter]([QualCode] ,[SystemCode])
select [QualCode],'' from cqaQualCode where Substring(Upper(QualCode),1,1) in ('R','S')

HTML:<pre class="brush: html">......</pre>

注:第二行自动换行了,因为一行摆不下,但是行号还是对的。

<?xml  version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Hello, world!</title>
  </head>
  <body>
    <p>Hello, world!</p>
  </body>
</html>

C#:<pre class="brush: c#; highlight: [4, 18]">......</pre>

注:第18行自动换行了

注:如果想要特别突显某行,如下面的第4行和第18行,配置也很简单,就是在pre的class中写上 highlight: [4, 18]

using System;
using System.Web;

namespace Test
{
    /// <summary>
    /// Test class for highlight in blog
    /// </summary>
    public partial class WebForm1 : System.Web.UI.Page
    {
        /// <summary>
        /// Page load event
        /// </summary>
        /// <param name="sender">The sender</param>
        /// <param name="e">The event parameter</param>
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Write("Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World ");
            HttpContext.Current.Response.End();
        }
    }
}

VB.net:<pre class="brush: vb">......</pre>

Imports System
Imports System.Web

Namespace Test
	''' <summary>
	''' Test class for highlight in blog
	''' </summary>
	Public Partial Class WebForm1
		Inherits System.Web.UI.Page
		''' <summary>
		''' Page load event
		''' </summary>
		''' <param name="sender">The sender</param>
		''' <param name="e">The event parameter</param>
		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			HttpContext.Current.Response.Write("Hello World")
			HttpContext.Current.Response.End()
		End Sub
	End Class
End Namespace

CSS:<pre class="brush: css">......</pre>

.syntaxhighlighter {
	width: 99% !important; /* 99% fixes IE8 horizontal scrollbar */
	margin: 1em 0 1em 0 !important;
	padding: 1px !important; /* adds a little border on top and bottom */
	position: relative !important;
}

Java:<pre class="brush: java">......</pre>

/** 
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

介绍一个小技巧,当你想要拷贝某段代码时,直接从页面上copy,会把行号一起拷贝,如果想只拷贝原始代码,可以把鼠标移到代码块上,代码块的右上角会出现一个工具栏,其中第一个按钮“view source”会弹出一个只包含原始代码块的窗口,再Ctrl+A,Ctrl+C。或者直接点击第二个“copy to clipboard”按钮就拷贝到了剪贴板,不过第二个按钮是用Flash做的,你的机器必须有安装Flash Player才能使用。不过我相信只要有上网,大家都应该装了Flash Player,所以“copy to clipboard”按钮是最方便的拷贝代码方式。

SyntaxHighlighter还可以改变Theme,甚至定制Theme,让代码显示更符合用户自己的需要,看看它提供的另外一个深色背景的Theme吧:

这个黑色背景的看上去也不错,眼睛看着不累,也节能环保。不过Theme不是每个blog用户可以自己改的,这是由admin来管理,一旦修改便会改变所有用户代码显示的样式。如果大多数人都喜欢某个Theme才好叫管理员修改配置。

就介绍这么多,如果想知道更多,可以去访问它的网站。有了这么好的条件,还希望大家多多写博,多来秀秀你的代码。

Tags: ,

General | 使用技巧

全球190多国家电脑遭"僵尸病毒"入侵

by jkeen 5. March 2010 16:29

美国互联网软件安全公司NetWitness18日表示,一种新型电脑病毒在过去一年半时间内已入侵全球2500家企业和政府机构的7.5台电脑,病毒将这些电脑构成了一个庞大而危险的“僵尸网络”,从中窃取大量重要秘密。

这家公司将“僵尸网络”称为“Kneber僵尸网络”。新病毒收集各“僵尸电脑”中的资料,并将之发送给黑客。

袭击或由东欧黑帮发动

这次袭击规模庞大,包括金融机构、能源公司以及美国联邦政府机构在内的全球将近2500家企业以及政府机构被入侵,受影响的电脑达到7.5万部,涉及190多个国家,主要为美国、沙特阿拉伯、埃及、土耳其以及墨西哥等国家的电脑。

美国互联网软件安全公司NetWitness表示,属下一名工程师今年1月为一家公司部署互联网监控系统时发现“Kneber僵尸网络”。

经调查,黑客在2008年开始利用东欧的电脑,通过设在德国的指挥中心展开攻击行动,诱使有关企业和政府机构的员工点击有病毒的网站,或者打开附有病毒的电子邮件,从而入侵企业或政府网络。据了解,一旦电脑受病毒感染,便会成为“僵尸网络”的一部分,并通过大量发送感染病毒的电子邮件使更多企业和政府机构的电脑中招。

NetWitness公司总裁约伦曾担任美国国土安全部网络安全主管。他表示,目前看来,新病毒于2008年底开始在德国肆虐,目前也蔓延到不少在中国应用的电脑上。公司目前所收集的证据显示,这一袭击很可能来自东欧的黑帮组织。

伪装性高难以清除

专家指出,黑客能够遥控这些受病毒感染的电脑,窃取他们想要的资料,其中包括登录网络银行、电子邮箱和社交网站的认证资料,然后进一步入侵其他用户的电脑系统,从而使受病毒影响的范围迅速扩大,黑客在4周内就可以成功获得8.8万项认证资料。更严重的是,该病毒比其他病毒具有更高的伪装性,更加难以清除。

专家认为,黑客本次行动似乎旨在窃取想要得到的资料,而不是破坏特定公司或者政府机构的网络系统。

NetWitness公司的分析师考克斯说:“可以确定,很多机构并不知道他们正遭遇类似安全问题,因为他们根本没有合适的检测工具。‘Kneber僵尸网络’是各机构近年来面临的严重威胁之一,但人们一直忽视这一威胁的存在。”

美国《华尔街日报》报道称,受影响的公司陆续收到黑客入侵的通知,其中制药企业默克公司以及医疗保健公司Cardinal Health Inc.均承认有电脑被“僵尸网络”渗透,但并没有被盗去敏感资料。

NetWitness还发现,黑客侵入了10个美国政府机构的电脑,其中一次取得一名士兵的军网电子邮件的用户名和密码。

转自:ZDNET安全频道

原文链接 http://security.zdnet.com.cn/security_zone/2010/0223/1637155.shtml

Tags:

软件安全

使用OCS和Live Meeting共享桌面

by jkeen 4. March 2010 10:39

(MTR适用)

  1. 安装MTR正在使用的相同版本 - OCS R1

    安装文件及安装说明位于 \\192.168.0.206\安装工具\Office Communicator 目录

  2. 登录之后使用Live Meeting共享桌面

 

 

 

此处输入用户名格式为:mtrcorp\xdzhanapj

点击"Conent"à"Share"à"Share Your Desktop"开始和对方进行桌面共享

Tags:

使用技巧

快速翻译资源文件

by terry 2. March 2010 13:56

在做项目时,我们都要做三种语言,怎么才能快速翻译呢。

1.     复制简体中文资源文件.zh-cn.resx中的全部行,粘贴到word中。

2.     利用word的简体转换成繁体的功能,先把全部简体转换成繁体

3.     复制到繁体资源文件.zh-hk.resx,并且格式也排列好了。

这样就方便了很多。

Tags:

Email2Blog

IT男很行销

by jkeen 27. January 2010 17:16

本想组织一个联谊活动,项目经理们积极动员。但结果是大部分同事都名主有花了...

可惜了,对方公司都是大美女。
也算是做了个小小的调查吧(总共只有3人报名)
说明IT男不用愁找不到对象。。。

Tags:

Email2Blog

分享下成功电话订火车票的经验….^_^

by zed 26. January 2010 13:52

    非常高兴,今早成功订到回去的火车票,卧铺双人^_^,两个中铺,貌似是自动分配的,回家真是不容易,给要坐火车回去的同事分享分享成功订票的经验,当做离别的礼物啦~~~。

7点20就起床不断的狂打电话抢线…~~事实证明,网上说的抢线这一说法实在是不靠谱的….浪费话费不少…..因为订票系统会记录你打进电话的时间,比如:你7点50打进电话,到了8点立刻选择"4"号键--"普通订票",系统会提示你拨入的时间为7点50,订票系统开放时间为8点至23点,需要从新打进电话才能订票,杯具,我就是这样浪费了不少电话费。

所以大家还是睡个懒觉,7点50左右再起床打电话吧,:),说几点注意的地方,各位订票的时候参考一下…

  1. 时间准确度问题,网上搜索了好几个北京时间的网站,居然发现秒数都是不一致的,由于没电视对时,无奈最终我选择了windows同步后的时间,结果在电话订票时发现时间和电话系统不对,误差在15秒—40秒之间,电脑稍快。尽量算准时间疯狂的狂拨吧…..
  2. 我觉得最可能加大订票成功率的方法,就是拿N部电话狂打,尽量多人协同操作,只有8点左右打进电话,估计都不会订票失败。(其实我是8点16分打进的)
  3. 订票电话总共有2个,95105105,96020088,可以尝试多个手机分开拨两个号,别只打一个号,我是由后者打进的。
  4. 还有就是手机的问题,我网上查了下,网上也有订票的抢线工具卖(具体各位网上搜),猜了下原理(注意,是猜测),可能类似于多线程不断轮询获取系统响应,返回接通指令代表进入系统,否则继续轮询抢线。那这种情况的话,和我们一般使用电话相比,我们的弱点就在于单线程,并且响应要慢些(类似网页抓取原理),如果猜测正确的话,那么我们使用智能机,或反应很快的多部手机不断的打电话的话,也可以达到类似效果啦。反正我当时是用我的NOKIA6120打进去的,另外2部电话还是不断狂拨…此条为猜测
  5. 还有就是网上提到的,准备好订票需要的各种东西,笔,纸,身份证号,目的地区号(多准备几个)。
  6. 如果实在是遇到很倒霉的情况,打了几十分钟,终于打进去了,但是票已经订完了,那么建议尝试订一下提前一天的票,比如今天可以订2月4号的票,但是我打电话去已经定完了,那么请赶紧尝试是否可以订2月3号的票,也许会有遇见别人退票的情况,这个只是碰碰运气了…..

能想到的就那么多,大家还有其他的再补充吧…..

Tags:

创意

by roychan 25. January 2010 00:18
新年的第一次公司大会的APJ创意大赛,蛮有意思! A Perfect Job 和"家"都给我很大的启发! 同事们的心思和灵感.表达了大家对公司之热爱和期望!


Tags:

Email2Blog

2010年新春精美贺卡

by tracy 12. January 2010 17:05

春日春起色、虎年虎生威。伴随着新春的喜庆气息,我们正跨步在2010年的希望大道上。展望2010年的奋斗目标与发展蓝图,我们坚信:新的一年、新的希冀、新的耕耘,我们一定能实现新的飞跃、新的辉煌! 最后,附上我们漂亮的新年贺卡,并再次祝福大家春节愉快、身体健康、合家欢乐、虎年吉祥! Regards! Tracy

Tags:

Microsoft Office Communicator自动登录的方法

by Ken 8. January 2010 11:11

Microsoft Office Communicator (以下简称OC)是Microsoft推出的一款即时通讯工具,目前最新版本是2007 R2,MTR计划在1月前全面推广使用OC,用来取代电话、视频会议、网络协作、文件传输等传统应用,目前MTR的各Manager已经安装,并已为APJ几个Team Leader开通了账号。由于使用的账号就是MTR的域用户帐号,所以在APJ 无法自行修改密码,而且密码比较难记,而且默认安装又不提供保存密码和自动登录功能,不过可以通过修改组策略来打开以上功能,具体方法如下:

  1. 从本文附件或者Microsoft网站下载策略模板文件Communicator.adm,保存到windows的inf目录下。
  2. 在开始菜单运行gpedit.msc命令,通过用户配置-管理模板-添加/删除模板,添加Communicator.adm文件。

  3. 找到以下相应的设置进行修改

     4.  重启OC即可见保存密码选项,选上以后即可实现自动登录。

 

由于受License限制,现阶段无法做到每人一个账号,所以只给Team Leader和管理人员开了账号,各Team可以根据实际情况share各自team的账号。

 

Communicator.adm附件:

Communicator.adm (109.97 kb)

Tags:

使用技巧

The Best New Year Gift to APJ ,,,,,

by roychan 31. December 2009 17:40
It came as the best present to APJ when I was informed that Towngas and APJ had jointly won the Gold Award for The Best Collaboration in the 2009 HK ICT Award !!  The prize is a great honour and it belongs to all of you in APJ !! Congratulations and I wish everyone of you and your family a Happy New Year in 2010 !!
 
祝大家元旦快乐 !!!

Tags:

Email2Blog

Copyright © 2009 APJ Software

最新评论

Comment RSS

公告

欢迎使用APJ Blog!

日历

<<  March 2010  >>
MoTuWeThFrSaSu
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar