無法移除的 Powershell v1.0

如果你也跟我一樣,因為要安裝 Powershell v2.0 而無法移除 Powershell v1.0 的話,可以研讀 Powershell team 貼的這篇:Windows PowerShell Blog : Behind PowerShell Installer (for Windows XP / Windows Server 2003):,了解一下 Powershell 安裝程式做了什麼。不過這篇字太多了,我其實是參考這篇:BUGBUG: poor title » Blog Archive » How to uninstall Powershell v1.0 from Windows Server 2003 R2 來移除的,除了 pwrshsip.dll 無法刪掉之外,基本上不刪掉也沒關係。接著就可以上 Powershell v2.0 CTP3 了。
為什麼要上 Powershell v2.0 CTP3 呢?這是因為 SQL Server 2008 Management Studio Express 的緣故。真是太機車了…

電影流水帳(2009/7/17~2009/7/19)

妹妹的朋友借了她 Apple Seed DVD,她看完了,現在換我看,我得在一個月內把它看完。前兩天有趁機看了一點,畫面真的很精彩,跟漫畫比起來真的是差很多,不愧是整個 3D 重新作過。看起來的感覺跟攻殼機動隊很相似。

  • Angels and Demons(IMDB, Wikipedia),中譯:天使與魔鬼。坦白說,劇情有點瞎,所謂的推理其實也不是很吸引人,不過最後的壞人倒是很出人意料之外,雖然我之前有看過別人寫的劇情,但是一直到後面,我還以為是那個侍衛長,沒想到最後真的是Ewan McGregor飾演的 Camerlengo Patrick McKenna。
  • The Game Plan(IMDB, Wikipedia),中譯:超級盃奶爸。劇情頗溫馨的片子,隨便看看就好,反正結局一定是溫馨的…

電影流水帳(2009/6/28~2009/7/16)

看了兩部小沈重的片子。話說當我看完 Crossing over 時,我真的已經忘了我之前看過Body of lies,還好我看之前都會貼一下 IMDB 的連結在 噗浪 上,這樣靠著回頭撈,才想起來。真的是糟,或許也是最近忙的關係吧。

  • Body of lies(IMDB, Wikipedia),中譯:謊言對決。這是一部諷刺美國中東策略的電影,有點沈重的片。最後以主角不幹了作為結局,不過這並沒有解決什麼,只是讓主角能脫離諜報生活而已。
  • Crossing over(IMDB, Wikipedia),中譯:越界驅逐令/穿越國境。這部片也是小沈重,主要探討移民問題。電影其實是好幾段故事,每段故事娓娓道出每個主角自身的遭遇,卻又巧妙地扣住另一位主角,這樣的說故事方法,我還蠻喜歡的。最後的最後沒有所謂的結局,只是把每個主角的遭遇做了交代。

Ubiquity 0.5 + findbook

Ubiquity 升級到 0.5 了,Parser API 也升級到了 2,語法有改變,所以參考轉換指南修正了一下之前的 findbook:

CmdUtils.CreateCommand({
names: ["findbook"],
contributors: ["elleryq"],
license: "MPL",
description: "讓買書變成更簡單的決定!",
arguments: [ {role: 'object', nountype: noun_arb_text, label: '書名關鍵字'} ],
icon: "http://findbook.tw/favicon.ico",
execute: function(args) {
Utils.openUrlInBrowser( "http://findbook.tw/search?keyword_type=keyword&q=" + encodeURIComponent(args.object.text) );
}
});

如果你想入門的話,這份文件可以作為參考:Labs/Ubiquity/Ubiquity Source Tip Author Tutorial
另外,在Ubiquity Command Editor頁面裡也有 command APIs,告訴你有哪些 API 可用。

Skia and framebuffer

根據 Jserv 大的淺談 Google Skia 圖形處理引擎,得知 skia 只能畫在 Memory buffer 上,那麼,可以直接畫在 Framebuffer 上嗎??

Jserv 大文章裡的例子,SkBitmap 得先呼叫 allocPixels() 來配置所需要的 Memory buffer,根據 SkBitmap.h 裡的宣告,allocPixels 事實上是使用 allocator 來配置所需要的 Memory buffer,如果未指定,會以 stdalloc(HeapAllocator) 來進行配置。因此如果要直接使用 framebuffer,可以繼承 SkBitmap::Allocator 類別之後,改寫 allocPixelRef() 來達到目的。

大致的代碼就像這樣子:[c]
#include “SkTypes.h”
#include “SkRefCnt.h”
#include “SkBitmap.h”
#include “SkDevice.h”
#include “SkPaint.h”
#include “SkRect.h”
#include “SkMallocPixelRef.h”
class FrameBufferAllocator: public SkBitmap::Allocator
{
public:
FrameBufferAllocator();
virtual ~FrameBufferAllocator();
virtual bool allocPixelRef(SkBitmap*, SkColorTable*);
private:
char* m_addr;
int fd;
};
FrameBufferAllocator::FrameBufferAllocator()
{
}
FrameBufferAllocator::~FrameBufferAllocator()
{
// munmap framebuffer pointer.
// close the framebuffer device we opened
}
bool FrameBufferAllocator::allocPixelRef(SkBitmap* dst, SkColorTable* ctable)
{
size_t size = dst->getSize();
// open framebuffer
fd = open( “/dev/fb0”, O_RDWR );
// setup framebuffer device via ioctl.
// mmap framebuffer
m_addr = (char *)mmap(0, screensize, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
// call original procedures in HeapAllocator::
dst->setPixelRef(new SkMallocPixelRef(m_addr, size, ctable))->unref();
dst->lockPixels();
return true;
}
[/c]

接著,Jserv 大的範例只要修改一行:[c]
bitmap.allocPixels( new FrameBufferAllocator, NULL );
[/c]
就可以順利運作了。

p.s. 在 link libskia.a 時,遇到很鳥的狀況,skia 的 Makefile 在製作時,是直接以帶有路徑的 .o 去作,而我 toolchain 的 gcc 居然無法處理,必須要以沒有路徑的 .o 去重新製作,這樣才能 link 成功。

石碇

106縣道往平溪方向,在石碇的地方叉出106乙,下面這幾張照片就是在這個三叉口的路邊拍的。照片不是很清楚,這是因為我沒帶數位相機,所以只能拿手機湊合著用。
20090626-石碇-0120090626-石碇-0220090626-石碇-03

電影流水帳(2009/6/24~2009/6/27)

聽海角七號原聲帶之後才看電影,然後才明白為什麼原聲帶裡有這些曲目,這樣也挺有趣的。

  • Star Trek(IMDB, Wikipedia),中譯:星際爭霸戰。之前看到中譯片名時,我還聯想不到這是星艦系列的片子。看完這部片以後,我開始有點痛恨時空因果律了,因為我開始搞不清楚因果關係,最後甚至老Spock跟年輕的Spock也碰面了,這是怎樣??
  • 海角七號(IMDB, Wikipedia)。終於把去年的熱門片看完了,看到最後暖場時,真的有熱血的感覺出來。不過為什麼,看完以後我腦海裡只記得李佩甄露出好身材的那幾個片段??在網路找IMDB檔案時,赫然發現片名是以台語發音-Hái-kak chhit-ho,有趣。
  • Paul Blart: Mall Cop(IMDB, Wikipedia),中譯:百貨戰警。我想這是我第一次看到Segway亂跑的畫面,這部片裡,是拿來當作賣場警衛的代步工具,真的很酷。除此之外,這部片子很普通…很普通…很普通…簡單說就是一個胖子警衛靠著喜歡某人的熱情而單槍匹馬解決掉賣場危機。
  • Zack and Miri Make a Porno(IMDB, Wikipedia),中譯:淫幕初體驗。這是我第一次挑戰完全沒有字幕的電影,老實說,片裡的對話我了解不到四成吧,所以有些笑點,就不是那麼的了解。這是一部浪漫喜劇,最後也是男女主角大和解的結局。

C 的 && 與 ||

前一陣子看Javascript 語言精髓與編程實踐這本書的時候,發現可以用 && 來達到 if ,用 || 達到 if not 的效果,所以下面是以 C/C++ 實驗的結果:

#include <stdio.h>
int say_hello( void )
{
printf("Hello world!!\n");
return 0;
}
int main( int argc, char* argv[] )
{
int flag=0;
printf("flag=0\n");
flag && say_hello(); // say_hello() won't be invoked
flag || say_hello(); // say_hello() will be invoked
printf("flag=1\n");
flag=1;
flag && say_hello(); // say_hello() will be invoked
flag || say_hello(); // say_hello() won't be invoked
return 0;
}

不過坦白說,這樣寫的結果是導致可讀性變差,只有自己維護這份 code 時,那是可以用,很多人維護一份 code 時,最好還是避免,或者,加上註解比較好。
我想 c# / java 應該也可以這樣作。
p.s. 如果不是呼叫函數的話,記得要使用 ( ),例如:

i && (j=100);

這就等同於:

if(i) j=100;

電影流水帳(2009/6/13~2009/6/23)

媽媽,謝謝你生我、養我,也謝謝你幫我照顧小孩,你辛苦了。過一陣子我再拿洗好的孫子照片給妳。

  • パコと魔法の絵本(Wikipedia, IMDB),中譯:幸福的魔法繪本。說是幸福的,有點太過,不過這部電影是真的很好看,在誇張的敘事之下,娓娓道出每個人的故事,實在是很吸引人,再加上動畫與真人的穿插,我不得不說這是我最近看過最好看的電影之一。
  • Juno(IMDB, Wikipedia),中譯:鴻孕當頭,又是一個爛中譯名字。很不錯的電影,裡面的女主角很幸運,有支持她的父母、朋友,也找到家境小康的收養家庭,讓她能把孩子生下來,繼續完成高中學業與夢想。每個月都會收到勵馨的報紙,報導一些故事,就實在是讓人很唏噓。以後如果我小孩也搞出這種事情,他會願意告訴我嗎?而我會不會很生氣呢?
  • シャカリキ!(Wikipedia(漫畫)),中譯:鐵馬頑童。很熱血的電影,看了這片我才比較知道自行車競賽的規則,不過除了熱血以外,好像就沒剩下什麼了啊~除了對主角有比較明顯的刻劃以外,其他人幾乎都是輕輕帶過,連最後教練的面授機宜都沒什麼交代,算是普通的熱血片吧~