用JS讓呈現的程式碼變色

隨著越來越誇張的免費服務,真的很希望可以完全免費的在網路上呈現很多東西。目前已知檔案可以放在Box.net
在開始看PrototypePEAR之類的東西之後,深深地覺得應該要多找這些工具才能更快地開發東西。我一直很害怕會陷入如使用DreamWeaver的困境-不會改它不支援的東西(其實我不會用DreamWeaver),畢竟我(們)不會知道自己是不是真的已經了解了那些東西的「基礎」,而已知的是若是貿然硬要使用根本不懂得「工具」,那只會成為累贅而已。
就現況而言,我自認對JS和PHP的了解能夠支援我使用Prototype和PEAR,但是再接下來呢?在我對Prototype的了解只有$()的情況下,我又嘗試使用了PWC (Prototype Window Class,一個在Prototype的基礎上建構夭壽花俏窗格的JS應用),結果當然怎麼用都不順手,還為了一個它在IE上的Bug(其實也有可能是我使用的問題)煩惱了整整一天。

PS:那個bug是,呼叫Window()必須在<body>裡還沒有任何DOM物件之時。否則IE6和IE7會說無法執行(不會說是JS錯誤),然後變成「找不到網頁」的錯誤。

回到標題要講的事情..前一篇 Blogger使用心得 - 轉錄BBS色碼文、隱藏多媒體 裡面有一些程式碼的顯現,其實那個關鍵字變色並不是手動調的喔!其實我很早就想要這樣的功能了,只是一直以來都是想在Server端做這件事情,直到看到了Prototype的code解說頁面的HTML碼才確定真的已經有人用JS做關鍵字變色了。不過,目前我看到的好像僅限於Regular Expression的應用,而且幾乎侷限在Keyword和Reserved word的變色而已,如果能夠藉由Syntax來判斷的話應該會更理想。(也就是說,希望能夠看到有人用JS來實做YACC
總之,步驟如下:
  1. 引用一些JS和CSS檔(目前我是直接連..印象中這樣不好,但是還沒去查相關法條)
    <script src='http://www.prototypejs.org/assets/2007/5/1/prototype.js' type='text/javascript'></script>
    <script src='http://www.prototypejs.org/javascripts/code_highlighter.js' type='text/javascript'></script>
    <script src='http://www.prototypejs.org/javascripts/javascript.js' type='text/javascript'></script>
    <script src='http://www.prototypejs.org/javascripts/html.js' type='text/javascript'></script>

    如果是Blogger的話,可以在po文的時候加,不過我是直接修改範本HTML,放在<head>裡
    PS:附帶一提Blogger的範本也用了頗變態的技術,範本的HTML裡頭,<script>標籤會自閉(就是變成<script />,但實際上應該要是<script></script>),而且引號會被encode(變成&quot;或&#39;),但是實際顯示的時候卻又都正常了
  2. 要放一些CSS..同樣可以改<head>裡面,或是po文的時候加(建議是前者):.html .tag { color:#34A; }
    .html .attribute { color:#B71; }
    .keywords { color: #f71; }
    .comment { color: #6c9; }
    .string { color: #392; }
    .regex { background: #CEF; color: #27b; }
    .doctype { color:red; }
    .brackets { color: navy; }
    .global { color: red; }
    .selectors { color: blue; }
    .properties { color: brown; }
    .units { color: gray; }
    .urls { color: green; }

  3. 因為想要區分程式碼跟一般文字,所以我又加上了一些CSS:code {
    display: block; /*因為<code>預設是inline物件,如果不這樣設的話就只有字的後面有顏色,而不是整個區塊*/
    white-space: pre; /*如果被自動換行的話可是會破壞程式碼縮排排版的唷,所以不允許自動換行,空白也都會留著。(IE無效,但我不想管了)*/
    overflow: auto; /*承上,如果超過一行的寬度的話,會自動有捲軸(像現在這樣:P)*/
    background: #eee;
    }

  4. 接下來就可以po文了,原理是在<code>加上以想要的語法為名的class,也就像是:<code class="html"> &lt;span style="font-style: italic;"&gt;Hahaha&lt;/span&gt;
    &lt;!-- 當然可以放註解 --&gt;</code>

    不過要注意的是大多數的Blog系統會自作聰明的轉換HTML標籤,所以編輯上可能會有點痛苦..(比方說在Blogger的WYSIWYG模式裡,我如果要打<li>的話,還是得要打&amp;lt;li&amp;gt;,不然會在切換模式的時候被自動轉換成HTML的<li>,如果又遇到是要打HTML的話,可能就又要把&再escape成&amp;了)
    另外,因為我把<code>的white-space設成pre了,所以每一個enter(包括<code>後面和</code>前面的換行),都會直接反映在結果上喔。(所以上面那個例子才會看起來像是沒排版)
以上要include的檔目前都是盜連Prototype的(其實code highliter並不是prototype計畫的部份),之後還要查GooglePage或是Box.net能不能放JS和CSS檔給別的網頁連,不然我這個Blog只會越來越肥(話說現在已經比Yahoo!奇摩首頁還要誇張了)。
話說回來,十年前的網頁也常常用很多很花俏但耗資源的JS來引人注意,現在也只是比較漂亮罷了。(也許再過十年,就不會覺得現在的品味是好的了)......
... read more

轉錄BBS色碼文、隱藏多媒體

昨天亂七八糟地測試了一下Blogger,這個範本除了之前發現的IE6下的 <li> 箭頭很大(如右圖,不過IE7就OK了)之外,寬度也不太適合BBS的文章。

原本是想把BBS的文章用Mail-to-Blogger的信箱直接寄過來的,不過因為我想要保留推文,所以色碼就變的很難處理了。查了一下PttEZSoft板得知有RainbowEditor這個軟體可以處理,試用了一下,頗堪用的,不過仍有些沒處理好的部份(以Ptt的文為例,轉錄紀錄的轉錄者ID會爆掉)。

即使色碼抽掉了也仍有問題-BBS有80個字元的寬度,排版上不合於這個範本,所以我就再加上了<pre style="overflow: auto;">這樣子就不會換行,被切掉的部份也可以用捲軸拉過去了。



多媒體的部份,常常有人內嵌Flash或是播放器在頁面中,拖慢瀏覽器的速度。話說我如果看到這樣的網頁,印象分數就直接打六折了(所以我不太喜歡Pornotube的首頁)。
至於那篇主播蘇逸洪口誤大集錦裡面的影片,是用了如下的HTML配合JS去改CSS:<input type="checkbox"
onClick="
var s = document.getElementById('video20070501').style;
s.display = this.checked ? '' : 'none';
"
/>
顯示影片
<embed id="video20070501"></embed>

如果有用 prototype.js 的話,那onClick可以改成:$('video20070501').toggle();
//連checkbox是否被勾選都不用判斷了


不過這樣就不方便連後面的文字包在一起了,其實我比較希望是這樣:<span onClick="foo();">
<input type="checkbox" />
Some texts...
<!--
畢竟就一般GUI的OS而言,
後面的文字和前面的checkbox是綁在一起的嘛~~
-->
</span>
不過懶得再改了


剛才插入圖片的時候才發現上傳圖片佔用的是Picasa的空間,可是進Picasa裡卻找不到,似乎相簿的網頁介面有被快取。
在Blogger上傳的圖片會被統一放到跟Blog同名的相簿裡,該相簿會被標示與Blogger有關,預設為不開放。......
... read more

底限

轉自http://www.wretch.cc/blog/Nekoco&article_id=5054110

小時候
跟男生打成一片
碰到男生的手
就要跑到廁所用肥皂洗個半天

再長大一點
很多人都經歷過
隔壁坐個不同性別
拿粉筆畫線不准越界的年歲

純情的兩小無猜
牽個手就已經是臉紅的極限
互訴著
未來要當對方新娘新郎的諾言

深切的轟轟烈烈
接吻的唇舌交纏
似乎已經是長遠思念
最終的表達型態

有誰知道...
這些單純的底限
是被怎麼樣的情緒
以及怎麼樣的想法給破壞?

初次見面就可以手牽手偽情侶
甚至看個對眼馬上可以旅館開房間
別離的時候再深情擁吻說個明天見
才發現原來一切都空虛的只能獨自唱寂寞邊界......

一開始給自己的原則底線
都被七情六慾
燈紅酒綠
模糊了焦點
失去了原本的純情簡單......
......
... read more

主播蘇逸洪口誤大集錦

轉自http://www.wretch.cc/blog/sgracee&article_id=18112039


[影音] 台視45週年 主播蘇逸洪 口誤大集錦

◎播出頻道: 台視 〈齊天大勝.台視生日快樂〉
◎播出日期: 2007.04.28(六)
◎影片標題: 主播蘇逸洪 口誤大集錦

顯示影片

......
... read more

張勝淵電擊案


交大資工所碩一張勝淵被發現陳屍在七舍內...

作者: waittime () 看板: NCTU_Talk
標題: 關於自殺事件,其實我有個疑問...
時間: Tue May 1 11:30:02 2007

其實我在想
他也許並不是要自殺?
而是在做電療之類的?

只不過,他電療的設備是自己作的
然後一個不小心,設備沒做好...
出了紕漏,所以就靜靜的躺在床上,死了?

問這問題,只是覺得,
也許死掉的同學,並不需要背著自殺之名而死...

--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆 emperor.cis.nctu.edu.tw海
k2000433:我覺得,一位研究生會這樣做嗎? 05/01 11:44
k2000433:電療設備,是幾個銅片,然後通電,就可以完成的嗎? 05/01 11:45
waittime:讓「微量」電流通過身體的治療,好像還蠻常見啊 05/01 11:46
k2000433:我不太認同他是因為電療造成他意外死亡...... 05/01 11:46
waittime:他有作一個變壓器之類的設備啊,並不是直接插電 05/01 11:46
k2000433:= =!,反正我只是覺得,如果他真的要這樣做,應該會先05/01 11:47
k2000433:和同學或教授之間有交談過等的.... 05/01 11:48
waittime:http://tw.news.yahoo.com/ 05/01 11:48
btonyo:那自殺為什麼沒有遺書? 05/01 11:48
k2000433:如果是做電療器材的話= =! 05/01 11:48
waittime:article/url/d/a/070430/1/dm53.html 05/01 11:48
waittime:可以看一下上面這兩個網址接起來的報導 05/01 11:49
k2000433:自殺的人的那時候心態,是很難揣測的.... 05/01 11:49
waittime:新聞有提到「變壓器」, 這樣也可解釋他為啥平靜的躺?05/01 11:49
k2000433:要是沒遺書,說不定他那時,連遺書都不想寫... 05/01 11:49
waittime:而死者雙手肘上的導電鋁箔片和電源變壓器 05/01 11:50
k2000433:恩.......這.....就不知道了...(感覺我好像耍笨了..)05/01 11:52
waittime:恩,我只是因為大家都在討論「自殺」所以提出這想法 05/01 11:55
lovemama:對阿,搞不好只是個意外...結果大家白吵一場 @_@ 05/01 11:57
waittime:對啊,同學死了依舊令人難過,但被誤解了就更不好 05/01 12:01
alberttwk:去查查看他生前是不是有甚麼病痛就知道了 05/01 12:14
s334853:我也覺得不像是自殺 05/01 12:16
s334853:自殺的人通常會先寫遺書 把怨念傾訴給別人 05/01 12:17
Robison:本來就是..昨天就說了ㄧ堆人都不知道怎麼回事! 05/01 12:18
Robison:希望大家不要亂猜..但結果就是有些人喜歡亂評論! 05/01 12:18
Robison:先幫人家家人默禱吧!板上一堆自恃甚高又未卜先知的中05/01 12:21
Robison:的人! 05/01 12:21
Darsuger:其實我覺得還蠻像自殺的...有時候只是一時之念而已 05/01 13:18
Darsuger:事前完全沒徵兆並不代表沒有可能.... 05/01 13:21
blockhead:我覺得一時之念不會還去花工夫做這種設備... 05/01 13:26
Darsuger:我想都已經是研究生了 應該不會不知道觸電的危險性 05/01 15:37
Darsuger:更何況附近這麼多電料行 要取得這些東西並非難事 05/01 15:37
Darsuger:更何況所謂的"原因"其實也只是我們加註在他們身上的 05/01 15:40
Darsuger:解釋....事實是不是這樣 只有他們自己知道:P 05/01 15:40
waittime:正因為太多人,將其解釋成「以特殊手段自殺」, 05/01 16:28
waittime:我才提出這樣的想法.. 05/01 16:28
waittime:知道危險一回事,意外是一回事. 05/01 16:29
waittime:以特殊手段自殺,似乎比常見手段自殺,更加深了 05/01 16:30
waittime:自殺者心裡被誤會為不健康的機率,所以我才這樣解釋 05/01 16:31
waittime:事實是怎樣一回事,提出假設,有助於釐清事實 05/01 16:32
tenshon:推薦這篇文章 05/01 18:40
tenshon:學校的信證明了你的推測@@ 05/01 18:40
tarojohn:推薦這篇文章 05/01 18:41
getter:推薦這篇文章 05/01 19:28
※ X-Sign: 133EI2CNKFoq7O.Sjw5A (07/05/01 22:01:48 )
......
... read more