2009年8月27日 星期四

Blogger貼程式碼的Syntax Highlight

參考"Posting Source Code in Blogger"。大至上步驟如他所寫,然後把以下貼到blogger設定的Layout->Edit HTML的最後面:
<link href="http://sevenluckyguys.googlepages.com/SyntaxHighlighter.css" rel="stylesheet" type="text/css"/>
<script language="javascript" src="http://sevenluckyguys.googlepages.com/shCore.js"></script>
<script language="javascript" src="http://sevenluckyguys.googlepages.com/shBrushCpp.js"></script>
<script language="javascript" src="http://sevenluckyguys.googlepages.com/shBrushPhp.js"></script>
<script language="javascript" src="http://sevenluckyguys.googlepages.com/shBrushJScript.js"></script>
<script language="javascript">
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll("code");
</script>
</body>
</html>


宣告原始碼:
<pre name="code" class="Cpp">
...insert code here...
</pre>

產生Dokuwiki連結語法的JavaScript

自已一直有在用Dokuwiki來記錄個人的東西。常常要加連結時要複製網址、貼上、選取文章標題、貼上文章標題、按二個空白,再加個星號*,實在有點麻煩,於是參考delicious.comBookmarklet buttons for any browser弄了一個順手的JavaScript。放在瀏覽器上當按鈕就很好用了。

javascript:(function(){t='  * [['+decodeURIComponent(window.location.href)+'|'+decodeURIComponent(document.title)+']]';win=window.open('','_new','location=no,links=no,scrollbars=no,toolbar=no,width=550,height=150');win.document.write(t);})()

2009年8月24日 星期一

emacs設macro

改程式像我這種健忘又駑鈍的最常做一個動作就是把這行註解起來,然後再複製一行下來改,Vim裡可以可方便的用yy複製一行,然後註解掉, 再p貼上就可以了‧Emacs雖然有Ctrl-C Ctrl-C加註解,但是不是我要的...就自己錄一個macro來試試, 做了三個:

Alt-yy就跟Vim的yy指令一樣
Alt-yyc就是複製一行再貼上,並且把上一行註解起來
Alt-cc就是到這行開頭加//註解

;; my macro
(fset 'yy
[?\C-a ?\C-@ ?\C-e ?\M-w])
(fset 'yyc
[?\C-a ?\C-@ ?\C-e ?\M-w return ?\C-y up ?\C-a ?/ ?/])
(fset 'cc
"\C-a//")

駑鈍如我覺得打Alt太麻煩,所以用function key更快
(global-set-key [f2] 'yy)
(global-set-key [f3] 'yyc)
(global-set-key [f4] 'cc)

註解只用//是很呆的事,像python或shell就不適用了,相信會有更聰明的做法。

----
後來發現真的有很帥的方法!! 用elisp神奇的advise功能擴充~~
http://www.emacswiki.org/emacs/SlickCopy

沒有選取時, C-w會砍整行, M-w會複製整行, 就像Vim的dd和yy

PHP的regular expression

原本的一些函式如ereg_開頭的或split等在PHP 5.3版就要丟棄、6.0則會移除。ereg不是binary safe, 也許有心人可以跳過檢查,輕易注入null bytes: 手冊有寫,所以要聽。現在最好使用PCRE(Perl-Compatible)類的, 也就是preg_開頭的。

MySQL的GROUP_CONCAT

現在才發現有這種好功能:如果抓出來的資料有很多筆,但是又只想顯示在一個row裡就可以直接用GROUP_CONCAT搞定,讚!
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])

要搭配GROUP BY才可以用
MySQL手冊

emacs的unicode

emacs 23有了unicode支援
趕快把預設改成utf-8,才有安心的感覺~
;; set up unicode
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)