2012年12月15日 星期六

New Fighter 150 更換培林記錄

前幾天才去車行處理了面板支架,沒想到昨天騎車時發現有些異聲,於是傍晚又到車行報到了。

檢查後,原來是這裡的一顆培林掛點了。

來看一下換下來的培林,唔……

幸好斷口處應該沒怎麼產生碎屑,也沒影響到其它零件。但,車行老闆娘也說這沒那麼容易壞呀!怎麼我的車才三萬多公里耶!竟然就得換一顆了。咳……

2012年12月8日 星期六

使用 PhotoScape 替相片加上簽名

在介紹 PaintShop Pro X4 Ultimate 的這篇文章裡,我提到了使用 PaintShop Pro X4 Ultimate 可以在相片利用「浮水印」的功能加上簽名。這個功能很方便,尤其我直接在 PaintShop Pro X4 Ultimate 將相片做最後的修整後,就可以直接加上簽名。

不過,若你 (妳) 只是很單純想在相片加上簽名,那麼 PhotoScape 這個軟體也是一個不錯的選擇。

PhotoScape 是一個「Free」的相片編修軟體,在下面這個網站可以取得:

安裝完畢後,執行 PhotoScape 的畫面如下:

選擇「編修相片」,然後在左下角選擇要編輯的相片,接著你 (妳) 可以考慮是否加上相片邊框。有陣子,我很喜歡在相片加上編邊,簡單、素雅的邊框可以讓相片上傳後看起來很舒服。不過,通常加了邊框的相片檔案,長寬的比例會有點變掉,所以如果要拿去洗出來,要留意一下可能裁切的方向。

然後,你 (妳) 可以在「裝飾」裡選擇使用「插入圖片」,其實就是利用這個功能來加入簽名的。當然,首先要先準備好簽名的圖檔,例如我習慣用這樣的簽名:

我會將簽名做成兩個版本,一個的字是黑色的;另一個的字則是白色的。背景則都是做成透明背景。

選好要加入的檔案後,在 PhotoScape 裡可以設定加入的這張圖的透明度、大小、位置。

只要將它指定好,擺放在適當的位置就完成加入簽名這個動作了。

PaintShop Pro X4 Ultimate

最近突然想寫幾篇文章,介紹一下自己常用來處理相片的工具。既然如此,原本想先從 NIKON 的軟體 View NX2 / Capture NX2 寫起,不過再思考了一下,決定將 View NX2 / Capture NX2 放在後面再來聊。

那麼,先來聊聊由 Corel 公司出品的 PaintShop Pro X4 Ultimate 吧!

幾個月前,在決定入手 Corel PaintShop Pro X4 的軟體授權前,我同時下載了 Corel PaintShop Pro X4 和 Cyberlink PhotoDirector 2011 回來試用了一陣子。當時,PhotoDirector 主推的特色是內建了 Canon 及 Nikon 的 RAW 檔原生解碼技術,號稱是向 Canon 及 Nikon 取得授權的 RAW 檔解析模組。

只是,在同時試用及比較了一陣子後,我選擇了 Corel PaintShop Pro X4,因為它的 Corel PaintShop Pro X4 Ultimate 版本包含了 Nik Colore Efex Pro 3.0 和 KPT 兩大套濾鏡。

其實,Corel PaintShop Pro X4 和 Cyberlink PhotoDirector 2011 對 Nikon D90 的 RAW 檔解出來的結果並不會差異太多。不過,沒多久之後,我又改回使用 View NX2 將 RAW 檔轉 JPG,再拉進 Corel PaintShop Pro X4 調圖了。

目前,我在 Corel PaintShop Pro X4 最常用的,首先就是 Nik Colore Efex Pro 3.0 濾鏡了。

另一件就是在相片加上簽名檔這個步驟。

Corel PaintShop Pro X4 還提供了許多相片編修的功能,使用起來都非常方便,有時只打算將相片簡單處理一下時,我也會直接用 Corel PaintShop Pro X4 來處理。

目前,這套軟體最新的版本為 Corel PaintShop Pro X5,有興趣的朋友可以到他們的網站上看看唷!

而,Cyberlink 的 PhotoDirector 目前最新版本為 PhotoDirector 4,更提供了 Windows 及 Mac 的版本。說實話,這一點我很喜歡,我打算再過陣子會逐步轉移到 Mac 系統,若在 Windows 慣用的軟體,到 Mac 上同樣能用時,那真的是相當方便的一件事呀! :D

對於 Cyberlink 的軟體,有興趣的朋友一樣可以到他們的網站查看。

New Fighter 150 面板及面板支架更換記錄

今天的天氣不好,又是個濕冷的雨天,其實我是有點不怎麼想出門的。但,前兩天去幫機車換機油機車時,發現另一個需要更換料件的問題,偏偏料件今天才送到,只好再出門一趟囉!

這次更換的東西,最顯眼的就是前面的這片面板斜板了,哈!我的機車換上「全新」的面板斜板耶!但,這面板斜板其實不是重點呀!

斜板打開後,這位置有一支金屬的固定架 (面板支架) (別問我料號,我實在記不住),上頭還有一顆「傾倒感測器」。

但,這面板支架竟然斷了!這輛機車也不過才剛過三萬公里耶!究竟是設計的問題,還是台灣的路面實在太震呢?

將斷掉的面板支架拆下來。

來看一下新舊兩支面板支架吧!

相片裡左側是新品,右側是斷掉的舊品。很明顯可以看出新品的設計有改進了。

呃…被「震斷」的面板支架,實在是……

接著開始安裝新品。

不一會兒功夫,安裝好了。

接著看一下面板斜板。哇哩!燈具的鎖點都「爆」了。數一數,只剩下一個鎖點沒爆而已。

所以,只好將面板斜板也一併換掉了。

最後,來看一下所謂的「傾倒感測器」,據說它的作用是當車身傾倒角度過大時,會作用讓引擎熄火,它被鎖在面板支架上,但…這陣子 (我根本不曉得支架斷多久了) 因為面板支架斷掉,整顆傾倒感測器就只是「卡」在那裡,隨著路面的震動跳呀跳著,幸好它沒有翻轉,不然就不曉得會在那裡「顧路」了。

2012年11月30日 星期五

清查反媒體壟斷學生名單?或關心學生?

這是今天在新聞媒體看到的,究竟事情的真相是什麼,我真的很想知道。

延伸閱讀:

再談「專項備案」

2007 年時,我整理了一篇 "大陸的網友架設部落格原來還要申請「專項備案」呀!" 的文章,最近在網路上爬文時,突然發現一些有趣的狀況,所以決定再來談談「專項備案」這東西。

2010 年 7 月間,中华人民共和国中央人民政府的網站上發出了一篇 "国发〔2010〕21号" 的文件,指出了 "国务院关于第五批取消和下放管理层级行政审批项目的决定",其中在 "工业和信息化部" 一項裡取消了 "互联网电子公告服务专项审批(备案)"。

在 "国务院取消BBS专项备案:10年审批终到头" 這篇文章裡也對国务院取消「專項備案」作了補充。

對此,大陸的網友們應該會感覺到非常開心吧!

不過,事情真的有那麼美好嗎?我刻意再只爬了 2012 年的文,其實似乎不是這樣呀!

下面這是發表在 2012 年 11 月 12 日的文章,發文者在標題寫著 "[备案咨询]博客备案未通过竟因需要“论坛专项备案”"。看來,這位網友在兩個星期前想使用 Wordpress 架設了一個博客 (部落格),但卻因「專項備案」而無法成立。

2012 年 11 月 23 日被網友張貼出來的 "北京电信通网站备案注意事项" 這個文章依舊說明了:

《互联网电子公告服务管理规定》中要求,开办电子公告服务须办理专项备案,未经批准不得开办BBS、博客、社区论坛、分类信息等网站内容。

那麼,究竟現在大陸的網友架設網站、論壇、部落格這些東西要不要經過有關單位「備案」的動作呢?來看看 "个人网站论坛备案到底还要不要备案" 這篇文章怎麼說。

任何一個法治國家,若架設個人網站討論色情、毒品等犯法情事,這是不被允許的。不過,請注意,在一些大陸的網友討論「專項備案」的文章裡,並不見得會很明確將「政治」這個需要「審查」的內容寫出來。那麼,究竟在大陸架設網站討論政治議題可行嗎?

另外,在 "網站備案從註銷到重新審核通過全過程" 這篇文章,大家也可以看到一個很有趣的過程。不過就維護個部落格呀!怎麼連部落格都有「黑戶」這東西呀!

最後,再來一貼最近的文章,在 2012 年 11 月 5 日被網友發佈出來的 "四川通管局重启论坛专项备案 年底未办理将关站" 這篇。

2010 年由国务院發佈說取消的「專項備案」,在 2012 年的 11 月,中国电信的四川分公司又重啟了耶!那又意味著什麼呢?

2012年9月4日 星期二

Using 'ccache' to build Android

在 android.com 的網站上有段說明在編譯 Android 可以使用 CCACHE 來加快編譯的速度,很好奇究竟可以影響多少,於是我便按說明試了試。

首先,依 "Downloading the Source Tree" 及 "Getting Android-x86 source code" 的說明下載了 Ice Cream Sandwich (Android 4.0) 的 X86 版本程式碼。

接著先試著在使用 CCACHE 時編譯。執行下面這個指令進行第一次編譯:

time make iso_img -j2 2>&1 | tee logs/`date +%y%m%d-%H%M%S` 

耐心等待它編譯完成後,看了看 time 指令的回應,約使用了 305 分鐘。嗯…看來那台機器只能拿來玩玩了,真要改東改西的話,大概會很悶吧!

real    304m11.544s
user    561m15.453s
sys     28m19.942s 

OK,接著執行 m clobber 將所有編譯的產物全部清除,然後再執行同一個指令編譯一次。這回所花的時間明顯減少了許多:

real    103m54.481s
user    168m58.174s
sys     16m45.295s 

果然,CCACHE 是可以大量減少編譯時間的。這篇只是簡單看看 CCACHE 的效果,所以前後兩次編譯並沒有修改任何一行程式碼,至於如果有修改了程式碼,這篇文章的效果僅供參考唷!哈!

延伸閱讀:

2012年8月2日 星期四

SyntaxHighlighter 3.0.83 的設定

2009 年設定使用 SyntaxHighlighter 時,我選擇了 2.0.320 這個版本,然後就一直這麼用到最近,只是偶爾會覺得它載入頁面有點慢。這兩天發現 SyntaxHighlighter 早在 2010 年改版成 3.0.83 版,爬了爬文又反覆測試之後,終於將 SyntaxHighlighter 3.0.83 設定完成。

然後,我又將從 2009 年開始到現在的文章全部翻看一遍,只有幾篇用了 SyntaxHighlighter 耶!

噗~~~ 我還以為會有很多篇呢?這幾篇剛好讓我拿來測試 SyntaxHighlighter 的設定。

以下也記錄改成 SyntaxHighlighter 3.0.83 時,在部落格版面的範本裡添加的內容:

<link href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css"></link>
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shCoreDefault.css" rel="stylesheet" type="text/css"></link>
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" id="shTheme" rel="stylesheet" type="text/css"></link>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushAS3.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushDiff.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJavaFX.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPowerShell.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushScala.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js" type="text/javascript"></script>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js" type="text/javascript"></script>
<style>
.highlightsetting {
    overflow-x: auto !important; /*修正下邊滾動條之 BUG*/
    overflow-y: hidden !important; /*修正右側滾動條之 BUG*/
    border: 1px solid #2187BB; /*加入程式碼邊框*/
}
.highlightsetting .line.alt1 {
    background-color: #EEE !important; /*这个表示奇数行颜色*/
}
.highlightsetting .line.alt2 {
    background-color: white !important; /*这个表示偶数行颜色*/
}
</style>
<script type="text/javascript">
    SyntaxHighlighter.config.bloggerMode = true;
    SyntaxHighlighter.defaults["class-name"]="highlightsetting"; // 自定義 CSS 設置
    SyntaxHighlighter.defaults["auto-links"]=false; // 超連結設定顯示為文字
    SyntaxHighlighter.config.space=" "; // 消除 Chrome 複製時的 BUG 空白
    SyntaxHighlighter.config.stripBrs=false; // 略過 Blogger 之 br 標籤
    SyntaxHighlighter.all();
</script>

2012年8月1日 星期三

Linux 的 time 指令

Linux 有個很有意思的 time 指令,可以用來查看另一個指令的執行時間,例如執行 time helloworld 會顯示 helloworld 這支程式的執行時間。

time 指令的返回值包含「實際時間 (real time)」、「用戶態 CPU 時間 (user CPU time)」及「核心態 CPU 時間 (system CPU time)」。其中,

  • real time 表示後面所接的指令或程式從開始執行到結束終止所需要的時間。簡單講,當一個程式開始執行瞬間看一下手錶記下時間,當程式結束終止瞬間再看一次手錶,兩次的時間差就是 real time。
  • user CPU time 表示程式在 user mode 所佔用的 CPU 時間總和。多核心的 CPU 或多顆 CPU 計算時,則必須將每一個核心或每一顆 CPU 的時間加總起來。
  • system CPU time 表示程式在 kernel mode 所佔用的 CPU 時間總和。

所以,以下的想法就不一定成立:

一:real time = user CPU time + system CPU time

這裡舉一個比較極端的例子,假設我執行 time sleep 10 這個命令,time 會返回給我的訊息如下:

real    0m10.003s
user    0m0.004s
sys     0m0.000s 

因為動作是「睡 (sleep)」10 秒,從 sleep 指令下達到它結束終止共經過 10 秒,所以 real time 的值是 10 秒。但,sleep 指令在 user mode 及 kernel mode 都沒有佔用 CPU,所以 user CPU time 和 system CPU time 基本上都是「零」。

二:real time > user CPU time + system CPU time

這個式子若是在單核心、單顆的 CPU 上,通常有成立的可能。

但,在多核心或多顆 CPU 的環境,卻往往可能出現 user CPU time + system CPU time > real time 的狀況。甚至我們在編譯大量的程式時,經常執行 time make -j2time make -j4 的指令,往往得到的 user CPU time 值都可能大過 real time 值。

延伸閱讀:

2012年7月31日 星期二

使用 VMware / Android-X86 取代 Android SDK 裡的模擬器

在 "試玩 X86 版本的 Android 4.0.4 (Ice Cream Sandwich branch)" 及 "在 VMware Player 試玩 Android 4.0 幾點筆記" 兩篇文章裡,Android 4.0 在 VMware Player 跑起來了,這要好好感謝網路上許多開發者前輩們的辛苦努力,筆者在 VMware Player 跑 Android 這件事上,花最多時間的大概只是下載程式碼和編譯這兩點吧!

接下來,來看看如何將 Eclipse 裡寫好的 Android 程式安裝到 VMware Player 裡的 Android 4.0 吧!既然網路已經設定妥當了,當然直接想到的就是透過 TCP/IP 來使用 ADB 了。翻一下之前寫的 "How to Use ADB over TCP/IP?" 這篇文章,只要設定 service.adb.tcp.port 這個變數也就搞定了。

確認 service.adb.tcp.port 這個變數設定成 5555 後,重新啟用 adbd,然後在 Windows 端開啟一個 DOS 視窗,執行 adb connect 192.168.245.130 就可以連接裝置了。其中 192.168.245.130 是 VMware Player 裡的 Android 4.0 獲取的 IP 位址。

在 DOS 視窗裡連接裝置後,自然在 Eclipse 也可以藉由 DDMS 使用這個 Android 裝置了。而且,這麼一來比直接開啟 Android SDK 裡的模擬器要快多了。

另外一個不用開啟 DOS 視窗執行 adb connect 指令的方法,就是直接在 Eclipse / ADT 裡,將 DDMS 的設定中指定 ADBHOST 的值,這樣可以跳過上面 DOS 視窗那個步驟,使用上更方便一點點。

在 VMware Player 試玩 Android 4.0 幾點筆記

在 "試玩 X86 版本的 Android 4.0.4 (Ice Cream Sandwich branch)" 這篇文章裡,我使用的是由 cwhuang (黃志偉) 等開發者維護的 Android-x86。由於編譯時選擇了 eeepc 這個項目,所以在 VMware Player 裡初次載入 Android 4.0 後,並不能順利使用設定 eth0 這個網路介面。此時,請將 VMware Player 關閉,修改虛擬機器的 .vmx 檔,將網路卡修改成 vlance,也就是將 ethernet0.virtualDev 修改成 vlance

第二個問題,進入休眠後似乎會造成無法解鎖,使得整個畫面動彈不得,因此建議在「顯示」裡將休眠的功能選擇「永不逾時」。

第三個就是 resolution (分辨率) 的問題,直接使用預設的方式載入 Android,筆者得到的分辨率是 800X552,這比例怪不習慣的。如果要修改分辨率,可以在啟動時修改參數加入 vga=ask 或加入 DPI=240 UVESA_MODE=1280x800

筆者試了好幾次,在 VMware Player 直接採用修改 DPI 及 UVESA_MODE 的方式會比修改成 vga=ask 好用。例如下圖是修改參數成 DPI=240 UVESA_MODE=1280x800 的結果: