WordPress 在文章內嵌入程式碼區塊

身為一個重度電腦資訊工程師,大概一定會很想一直PO程式碼之類的玩意,所以我在Wordpress部落格的第一個想要研究的目標。

一開始很快速在google上就找到許多相關頁面,搜尋關鍵字:

  • 中文:Wordpress 程式碼
  • 英文:Wordpress syntax highlighting

就連到

但這樣就遇到一個蠻大的問題,那就是我使用的是Wordpress.com,而因為該網站需要確保其資訊安全,所以不允許外掛上傳。

不過很快的就發現Wordpress.com有支援….

仔細研究發現,不管是Wordpress.com還是Worpress.org,他們最有名的程式碼區塊外掛,是一位叫做Alex Gorbatchev所開發的Syntax Highlighter網頁套件。

呼~ 其實每次找到實用的軟體或套件,都會想要追本溯源,找出真正的貢獻者,這樣又多認識一位高手了不是嘛🙂

在下面自己真的demo一下:

#include <cv.h>
/**
 * Testing source code syntax highlighting WordPress plugin.
 *
 * @author bossliaw <https://bossliaw.wordpress.com/>
 * @date 2012-12-01
 * @return always 0
 */
int main(void) {

    cv::Mat img = imread("lena.jpg");

    imshow("image processing classic images: lena", img);

    return 0;
}

不過這東西真的不能自己包自己,會造成外面的sourcecode tag
跟裡面的tag關起來,這時候就會很懷念在stackoverflowgithub上的markdown語法了…

(在stackoverflow上的markdown,空四格的文字自動就視為程式碼)

當然也許還是不太會玩wordpress,但這也凸顯了簡化人們編輯難度時,許多軟體的作法是發明易於編輯的標籤語言,從bbcode、wiki到現在的markdown。

markup language有個特性是,它們可以被程式處理,不管是被瀏覽器呈現、latex編譯器轉換成pdf文件、或是被網站特別的程式處理與排版。其中markdown大概是就算不用程式跑也看起來像純文字文件的東西了吧。(這是它的設計目標之一)

不過我覺得,輕量標籤語言、與混雜著程式碼和文字的編輯器還有很長一段路要走,每次一想改wiki的表格的時候,常常都迷失在那肥大的語法當中,跟latex一樣(它們好像有互相影響)。

經過這篇文章以後,以後大概有幾個研究方向:

另外一個大研究方向是evernote整合wordpress.com上,這樣也許就可以用比較好的編輯器寫部落格吧。

(剛剛發現另一個問題… 如果引入函式庫include有大於小於標籤… 切換到’visual’分頁時會被當成markup被移除Orz… 看來支援markdown與自動語法顯示的研究更重要了…)

Posted in All | Tagged , , , , , | 3 Comments

QT Creator – 產生有子目錄的專案

測試環境:

ubuntu 11.04

QT Creator 2.1.0

QT 4.7.2

方法:

新增 空的 QT 專案

然後把開好的專案的 .pro檔 (給qmake吃的) 裡面加一行

TEMPLATE = subdirs

以後,之後就可以用Creator的新建專案精靈,任意把別的專案加進去了~

每次當新建專案跑到 summary 那一步時,就可以選那個專案加入

Posted in All | Tagged , , , , , , , | Leave a comment

NTU 2011 Game Programming Final Project

Project Result: (avi=>youtube, powerpoint, this=>doc, executable)

Continue reading

Posted in All | Leave a comment

移動ubuntu系統到新電腦 / 新硬碟

前提需求: 在新電腦/新硬碟上都要裝好相同版本的ubuntu,但可以不同架構(32/64位元)

步驟1: 將自己在舊電腦裝的軟體,用以下指令印出來到”pkglist.txt”文字擋上

sudo dpkg --get-selections | sed "s/.*deinstall//" | sed "s/install$//g" > ~/pkglist

步驟2: 將自己特定系統的修改移植到新電腦上,自己的經驗如下:

  • /etc (系統設定資料):
    • 通常我現在養成一個習慣,就是剛灌好ubuntu系統的電腦第一個會裝的套件是etckeeper,這個套件可以用來紀錄針對/etc底下的任何更動。所以要移植到新電腦,只要找出自己改動的部份然後一步一步改回去就好了。(還好改動都很少…)
    • 這個辦法,不管軟體怎麼改動設定檔文法結構都有效。
    • etckeeper的原理基本上是使用版本控制軟體(version control system)來達成的,而且它支援現今大部分的版本控制軟體(subversion, git, bazaar, mericurial),可以選自己習慣的來用。
  • /etc/apt/sources.list (軟體來源): 這個比較難搞…在Ubuntu軟體中心->編輯->軟體來源
    • 分頁[Ubuntu 軟體]: 把舊電腦打勾的地方,依樣畫葫蘆到新電腦上
    • 分頁[其他軟體]: 在Ubuntu 11.04以後,就預設多出三個可以打勾: 無支援的更新、Canonical夥伴、獨立。也許舊電腦會沒有,那就看自己喜好勾選囉(我是全勾…原碼可以不一定要勾),接著你可能還有裝其他第三方軟體的來源(例如Google Chrome, Dropbox, VirtualBox…),這就只好考驗耐心了…順便紀錄常用的來源是怎麼取得的…
    • <其他第三方來源>
    • Google Chrome, Dropbox: 用.deb安裝時就自動裝入了
    • VirtualBox: https://www.virtualbox.org/wiki/Linux_Downloads 下面有說明如何加入
    • Ubuntu Tweak: http://ubuntu-tweak.com/downloads/
    • Spring RTS engine: http://springrts.com/wiki/Ubuntu_install (把jaunty, intrepid等ubuntu版本名稱字樣改成目前版本名稱, 11.04 = natty, 11.10 = oneiric)
    • Pidgin即時通訊: http://pidgin.im/download/ubuntu/
    • Medibuntu: http://medibuntu.org/repository.php

步驟3: 最後,在新電腦上的ubuntu,進入failsafe terminal(安全終端機)模式,跑以下指令安裝所有軟體(我自己測試忘記弄failsafe terminal模式了…不過好像沒差)

sudo apt-get update && sudo apt-get install `xargs ~/pkglist`

不過有時候會遇到套件名稱不太一樣導致裝不起來的時候,那麼又需要一點小耐心把改名的套件找一下,不過如果找不到的很多…那就直接修改pkglist.txt把那些衝名的砍掉。也許可以根據apt-get跑出的錯誤,用一些linux指令parse出來,然後寫個程式把它拔掉之類的…

還好這次的經驗好很多,只有不到10個套件找不到… 那就手動拔掉就好囉

Reference: http://eggsonbread.com/2010/01/28/move-ubuntu-to-another-computer-in-3-simple-steps/

Posted in All | Leave a comment

版本管理系統的戰國時代

revision control system (RCS),也又稱 versioning control system (VCS)

想當年在資工系大一的時候,在擔任maple BBS的實習生時,就開始接觸subversion(svn)

如今,已經有一大堆版本管理系統了,堪稱The war of revision control system

雖然我沒碰過更古老更有名的始祖CVS

但選擇少或許是件好事,現在我們有許多選擇… 大概寫一下目前的研究心得,裡面分析的優缺點也都是個人意見…

Svn : 以前用過得版本管理系統,是一種集中式(centralized)的VCS,在windows上的介面是個可愛的烏龜。優缺點如下:

  • pros: 容易學習(強大的線上說明書: 中文 / 英文),指令列好用
  • cons: 效能比一些VCS差
  • 建議使用情境: 單人專案、小型多人專案(沒有太多分支)

Git : 由鼎鼎大名的Linus Torvalds與開源社群共同開發,他們好像是因為不太爽svn所以才去開發這個。是一個分散式(distributed)的VCS。用到現在,個人覺得的優缺點如下

  • pros: 高效能(不管是儲存還是運作)、功能強
  • cons: 指令列介面設計不佳 (Reference)
  • 建議使用情境: 大型開源專案、多分支專案

Bzr : 全名Bazaar,由著名的Canonical公司與開源社群共同開發,開發的動機不曉得…不過有個工具叫做etckeeper來著的預設使用這個VCS,優缺點如下:

  • pros: 指令列好用
  • cons: 分支處理效能不佳
  • 建議使用情境: 大型開源專案

Hg : 全名Mercurial,沒錯就是叫做”水銀”,還沒用過,只知道google code有使用這個VCS,然後是用python寫的(所以應該對python蠻有利的)

另外值得一提的是,其實有些雲端儲存服務也有提供版本控制,例如Dropbox,曾經有一次在GPGPU課上實驗多人開發專案的版本控制,其實效果還不錯XD,不過還是有優缺點可以說:

  • pros: 更直覺…圖形化版本的VCS…
  • cons: 一定要網路才可以版本控制,功能不像其他VCS這麼完整
  • 建議使用情境: 單人專案、小型多人專案(沒有太多分支)

其實會讓人納悶為什麼會有這麼多版本管理系統,在現今這種全球化的世界,說不定就是因為每個系統各自有其缺點,所以才會雨後春筍的一直冒出來吧…

當然這篇主要是給自己紀錄一下,除此之外也有蠻多文章可以看的:

http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/

http://www.techtatva.com/2010/09/git-mercurial-and-bazaar-a-comparison/

http://stackoverflow.com/questions/995636/popularity-of-git-mercurial-bazaar-vs-which-to-recommend

http://zh-tw.whygitisbetterthanx.com/

http://blog.assembla.com/assemblablog/tabid/12618/bid/7437/Why-Subversion-does-not-suck.aspx

Posted in All | Leave a comment

Brain–Computer Interface (BCI) 腦機介面 – 最近有點熱門的研究領域

腦波貓耳@@…

Discover雜誌: Silent Warrior

http://issuu.com/kiosciencek/docs/discover-magazine-2011-04

大意是說:

士兵透過頭盔上面有許多偵測從腦部發出的電訊號,形成腦機介面,然後讀取士兵內心想傳遞給其他士兵的訊息,然後頭盔上面的有個電腦(處理器),會進行模式辨認(Pattern Recognition)的演算,來解碼士兵內心想傳遞的訊息是什麼,解碼出的文字會透過無線電傳送(應該會加密)到另外一個士兵的頭盔,那個頭盔有抬頭顯示器來顯示傳遞過來的文字訊息

其他reference…

新的腦機介面技術讓人腦向電腦發聲

mmdays: 機器學習與腦機介面的願景

教育部異質信號整合資料庫: 腦機介面(BCI)

Wikipedia: Brain–computer interface

Posted in All | Leave a comment

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Posted in All | 2 Comments