更新更新更新
09/11/2009, 10:58 - 想到的
最近很多東西都作了更新:

OS X Leopard 10.5 -> Snow Leopard 10.6 -> Snow Leopard 10.6.1
iPhoto8 -> iPhoto9
iTune8 -> iTune9
iPod Touch 3.0 -> iPod Touch 3.1.1
XCode 3.1 -> XCode 3.2 for Snow Leopard
iPod 5G 更新電池
Slackware 12.2 -> Slackware 13.0 -> Slackware64 13.0
Linux Kernel version 2.6.24 -> version 2.6.30.5
還有一堆東西啊...

工作上也是幫客戶更新了一些東西。

就連台灣的行政內閣也換了新人呢。



所以呢這是一個隨時在更新的年代,有什麼東西是不可以變的呢?
1 回應 1 回應 ( 731預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 440 )

好讀 PDB 檔案轉 TXT
09/07/2009, 16:37 - Open Source
因為想要用 BeBook電子書讀一些從好讀網站的繁體中文電子書。但好讀的檔案格式是用Palm Pilot 的 pdb 格式,BeBook正好就沒有支援pdb,也沒有好的轉換程式可以在Macintosh及Linux上作pdb至text的檔案轉換,用過pdb2txt,但是中文好像有問題,所以呢?男子漢要看電子書就自已作個轉換程式吧。

程式非常簡單,所以就不加說明了。這個程式可以將好讀的電子書轉成純文字格式,並將原來直式的標點符號改成橫式,其他的像是章節分段等好像用不到,所以就不管了。網路上說好讀的格式有加密,不過現在看來是沒有,只是加 pdb的表頭及分段而已。這個程式應該可以用任何版本的 C compiler,若要大量轉換的話,請自已作個 batch script吧。


/*
Translate Palm Document pdb to text in zh_TW.Big5
Programmer : Tasuka Hsu
Date : 2009/Sep/04
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define DoubleWord(a) \
a[0]*256*256*256+ \
a[1]*256*256+ \
a[2]*256+ \
a[3]

#define SingleWord(a) \
a[0]*256+a[1]

struct pdbHeader {
unsigned char name[32];
unsigned char attributes[2];
unsigned char version[2];
unsigned char creationDate[4];
unsigned char modificationDate[4];
unsigned char lastBackupDate[4];
unsigned char modificationNumber[4];
unsigned char appInfoID[4];
unsigned char sortInfoID[4];
unsigned char type[4];
unsigned char creator[4];
unsigned char uniqueIDseed[4];
unsigned char nextRecordListID[4];
unsigned char numberOfRecords[2];
} PDB;

int main(int argc, char *argv[])
{
FILE *fp;
int i=0,j=0;
unsigned char c;
char *filename;

if(argc>=2){
filename=(char *)malloc(sizeof(char)*(strlen(argv[1])+1));
strcpy(filename,argv[1]);
}else{
printf("PDB Filename is required.\n");
return(1);
}

if((fp=fopen(filename,"r"))==NULL){
printf("Can not open %s file\n",argv[1]);
return(1);
}

while(!feof(fp)){
c=fgetc(fp);

if(i<32)
PDB.name=c;

if(i>=32 && i<34)
PDB.attributes[i-32]=c;

if(i>=34 && i<36)
PDB.version[i-34]=c;

if(i>=36 && i<40)
PDB.creationDate[i-36]=c;

if(i>=40 && i<44)
PDB.modificationDate[i-40]=c;

if(i>=44 && i<48)
PDB.lastBackupDate[i-44]=c;

if(i>=48 && i<52)
PDB.modificationNumber[i-48]=c;

if(i>=52 && i<56)
PDB.appInfoID[i-52]=c;

if(i>=56 && i<60)
PDB.sortInfoID[i-56]=c;

if(i>=60 && i<64)
PDB.type[i-60]=c;

if(i>=64 && i<68)
PDB.creator[i-64]=c;

if(i>=68 && i<72)
PDB.uniqueIDseed[i-68]=c;

if(i>=72 && i<76)
PDB.nextRecordListID[i-72]=c;

if(i>=76 && i<78)
PDB.numberOfRecords[i-76]=c;

if(i>=78 && i<78+(SingleWord(PDB.numberOfRecords)*8));

if(i>=78+(SingleWord(PDB.numberOfRecords)*8)){
if(c!=0x0d){
if(c==0x1b)
c=0x0a;
if(c==0x00){
c=0x0a;
printf("\n");
j--;
}
if(c==0xa1){
i++;
printf("%c",c);
c=0;
if(!feof(fp)){
switch(c=fgetc(fp)){
case 0x55:c=0x56;break;
case 0x56:c=0x55;break;
case 0x57:c=0x58;break;
case 0x58:c=0x57;break;
case 0x59:c=0x5a;break;
case 0x5a:c=0x59;break;
case 0x5b:c=0x5c;break;
case 0x5c:c=0x5b;break;
case 0x5d:c=0x5f;break;
case 0x5e:c=0x60;break;
case 0x5f:c=0x5d;break;
case 0x60:c=0x5e;break;
case 0x61:c=0x63;break;
case 0x62:c=0x64;break;
case 0x63:c=0x61;break;
case 0x64:c=0x62;break;
case 0x65:c=0x67;break;
case 0x66:c=0x68;break;
case 0x67:c=0x65;break;
case 0x68:c=0x66;break;
case 0x69:c=0x6b;break;
case 0x6a:c=0x6c;break;
case 0x6b:c=0x69;break;
case 0x6c:c=0x6a;break;
case 0x6d:c=0x6f;break;
case 0x6e:c=0x70;break;
case 0x6f:c=0x6d;break;
case 0x70:c=0x6e;break;
case 0x71:c=0x73;break;
case 0x72:c=0x74;break;
case 0x73:c=0x71;break;
case 0x74:c=0x72;break;
case 0x75:c=0x77;break;
case 0x76:c=0x78;break;
case 0x77:c=0x75;break;
case 0x78:c=0x76;break;
case 0x79:c=0x7b;break;
case 0x7a:c=0x7c;break;
case 0x7b:c=0x79;break;
case 0x7c:c=0x7a;break;
case 0x7d:c=0x5f;break;
case 0x7e:c=0x60;break;
case 0x1b:c=0x0a;break;
case 0xa1:ungetc(c,fp);c=0;i--;break;
default:break;
}
}
}
if(c!=0)
printf("%c",c);
}else {
j++;
}
}
i++;
}
printf("\n");
fclose(fp);

printf("\n\nFilename : %s\n",filename);
printf("\nPDB Header\n");
printf("Name : %s\n",PDB.name);
printf("Attributes : %d\n",SingleWord(PDB.attributes));
printf("Version : %d\n",SingleWord(PDB.version));
printf("Creation date : %ds\n",DoubleWord(PDB.creationDate));
printf("Modification date : %ds\n",DoubleWord(PDB.modificationDate));
printf("Last backup date : %ds\n",DoubleWord(PDB.lastBackupDate));
printf("Modification number : %d\n",DoubleWord(PDB.modificationNumber));
printf("Application Info ID : %d\n",DoubleWord(PDB.appInfoID));
printf("Sort Info ID : %d\n",DoubleWord(PDB.sortInfoID));
printf("Type : %d\n",DoubleWord(PDB.type));
printf("Unique ID Seed : %d\n",DoubleWord(PDB.uniqueIDseed));
printf("Next Record List ID : %d\n",DoubleWord(PDB.nextRecordListID));
printf("Number of records : %d\n",SingleWord(PDB.numberOfRecords));
printf("File Size : %d bytes\n",i-78-(SingleWord(PDB.numberOfRecords)*8)-j);

free(filename);
return(0);
}


有了這個程式就可以用 BeBook 的電子紙看書,而不用再用小小的 iPod Touch 看小小的字了。
下次再來作個修改文章的程式給Macintosh用吧,前提是如果我想要作的話。
4 回應 4 回應 ( 3230預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.9 / 505 )

Snow Leopard Upgrade 但這一切都是 Apple 的陰謀啊
09/01/2009, 14:08 - Apple
先用 DiskUtility 或 Yasu 等工具對硬碟作清除及檢查。


一開始先作備份到TimeMachine,但因為沒有作過,所以用了很長的時間,
大約是四個小時,備份了134GB吧,TimeMachine是不備份系統及開機的部份。


上圖是安裝Snow Leopard前,可以看到剩下大約14GB的空間。


昇級完 Snow Leopard之後變成了32GB,多了大約18GB出來。


系統已經是Snow Leopard 10.6 了。


因為Snow Leopard預設是開在32bit模式下,要修改成64bit模式。
用以下的指令檢查

ioreg -l -p IODeviceTree | grep firmware-abi


是 EFI64。


重開之後發現有些奇怪的地方,就是OS X好像有進64Bit模式,但是Kernel是用32Bit的Kernel。
用 uname -a

Darwin MacBook-Pro.local 10.0.0 Darwin Kernel Version 10.0.0:
Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I386 i386 i386

若是64bit kernel,就不會是i386而是X86_64了。


看到已經有64bit的程式在跑了。

後來查了才發現,原來MacBookPro3,1的BootRom是不可以用64bit Kernel的。
http://netkas.org/?p=127
當然也有方法可以強開到64bit Kernel,不過看來這一切都是Apple的陰謀啊。

順便作一下OpenCL的測試,看來若程式有用到OpenCL,會加快很多,從30秒變成10秒。
不過有那些程式有支援呢?還是說程式不用修改就可以用到呢?


OpenCL 測試

...................OpenCL Bench V 0.1 by mitch.............
.......C2D 3GHz = 30 sec vs Nvidia 9600GT = 3.10 sec.......
....... .......
........My test code (simple adds) is cpu friedly..........
.more gpu friedly+complexer code (raytracing/video encod.).
....may give much more speed advantage - at least on C2Ds..
...........................................................
CL_DEVICE_NAME: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
CL_DEVICE_VENDOR: Intel
Now computing - please be patient....
time used: 38.048489
Number of elements computed: 2097152
CL_DEVICE_NAME: GeForce 8600M GT
CL_DEVICE_VENDOR: NVIDIA
Now computing - please be patient....
time used: 10.664221
Number of elements computed: 2097152
Now checking if results are valid - please be patient....
:) Validate results test passed - GPU=CPU :)


整體而言這次的昇級,表面上真的看不到大改變,不過感覺真的有變快。不過那個被限制不能用到64bit Kernel還是令人不爽,因為有一大堆的華碩、Acer的機器都可以,而Apple原廠的機器反而不行。
再來是Duck加上Expose,真的很爛,我原來都直接在Mail 的 Duck Icon上按選一下就可以寫信、收信,現在要多配合Ctrl鍵才可以,或是Mouse按右鍵,還是說這是Apple放棄單鍵Mouse的測試? 不過若是MacBook等有Trackpad的話,可以用兩指按在Trackpad上,再Click就會變成按右鍵了,這需要在Preferences中的Trackpad設定打開。

發表回應 發表回應 ( 1197預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3.2 / 406 )

Engadget的Snow Leopard Review
08/27/2009, 13:29 - Apple
Engadget 所作的 Snow Leopard Review

文中特別指出了這次Apple Snow Leopard 和 Windows 7最不同的地方是“不需要對整個系統重新安裝,只要更新“。
事實上Apple從OS9至OS X時也提供了類似的方式,可以在OS X下執行OS 9的程式,不過還是要重裝或是兩顆硬碟的方式,不過這次的Snow Leopard升級更方便而已。而且在去年就說過Snow Leopard只是升級及調整Performance,可能因為這樣所以價格才會只需要$29,也因為是升級,所以還是需要10.5 Leopard配合。還有就是安裝之後佔用空間變小,這對Windows系統來說是不可能的事。
而在安裝中不用先用DVD開機到Snow Leopard,這也很特別,可見真的只是更新版本。
而且PowerPC模擬器 Rosetta default是不安裝,所以要記得安裝,不然就不能再執行PowerPC only的程式了。
反正就是說Snow Leopard就像是Leopard的64 bit Services Pack。
不相容的部份有InputManager plugins in 64-bit,有可能會讓用到原來32bit的程式無法使用,不知道可以繼續使用Open Vanilla Input method 嗎?

美國加州時間Aug/28,加上時差還有兩天吧!

剛收到了 Apple Snow Leopard 的出貨通知了!不過運送日期是8/31。出貨商是TNT Internatiional Express,可能是和上次的Leopard一樣,從新加坡出貨,軟體的話,應該不會是中國吧。





發表回應 發表回應 ( 723預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.9 / 419 )

iPod Video 更換電池
08/26/2009, 23:50
iPod Video 80G到貨到電池無法使用,大約是三年未滿的時間,因為有包膜,所以整台iPod Video還是很新,而且使用狀況也很好,而在網路上有看到可以自已更換電池,所以就訂了一 個,還附拆解工具。台幣兩百五十元含郵寄運費算合理。今天到貨,經過二十分鐘的努力,就換好了。不過新的電池比原來的薄一點就是了,看容量是一樣的,這該說是技術在三年之中有進步吧。不過因為原來有包膜,所以現在要清除背面的殘膠,不太好清,但是殘膠好像是水性的,而且有點類似水份的東西,放了一下變得乾一點,手一用力搓,就可以慢慢的搓下來了。應該還是會再包膜吧,因為拆完裝回去之後,密合度沒有原來好,再用包膜包起來就不會感到那麼一丁點鬆動的感覺了。Apple的MTBF算很蠻準的,就大約是三年、三年之後出問題,沒有人會說什麼吧。
3 回應 3 回應 ( 902預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.9 / 466 )

Facebook 非死不可
08/20/2009, 00:28 - 今天
看來這些天Facebook被 DNS DDoS 搞成非死不可了!


http://www.google.com/search?hl=en& ... =&aqi=

發表回應 發表回應 ( 733預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3.1 / 529 )

收到校友卡
08/12/2009, 22:56 - 生活
收到了校友卡,這張卡是一張訂製的悠遊卡,不過校友卡的使用範圍有點像雞肋。





發表回應 發表回應 ( 686預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.9 / 495 )

用 Google Earth 5.0 將中央大學搬到月亮及火星上
07/31/2009, 16:14 - 原來如此
最近Google 新的 Google Earth 5.0 除了可以看到地球之外,也可以看到月球及火星的地貌。不過看來,Google Earth 只是將地形圖換一換而已,使用者有在Google Earth上作記錄的定位點,就會在各個星球上出現,所以才會有將中央大學搬到月亮及火星上的好玩的事。
這樣的話,我希望Google Earth快點推出別的星球,這樣我就可以到上面插旗,自已爽一下!




發表回應 發表回應 ( 998預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.9 / 325 )

更新書目
07/28/2009, 00:44 - 筆記
更新書房目錄
發表回應 發表回應 ( 596預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3.1 / 430 )

學生證
07/27/2009, 11:57 - 認證
上週已經將學生證交回去,所以又變成社會人仕了。將學生證影像放在這兒紀念一下學生時代的再結束。


2 回應 2 回應 ( 802預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 416 )


<<開始 <前一頁 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 下一頁> 最後>>