OS X server 10.4.11 upgrade to 10.6 問題解決
11/06/2009, 21:35 - Apple
看來是 Apache 和 PHP5 之間的問題,Snow Leopard Server 的 PHP 是

root# php -v
PHP 5.3.0 (cli) (built: Jul 19 2009 00:34:29)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies


但是在系統中並沒有 Zend,而查看 Sample CPU load of httpd 時,發現 load 是在作 zend debug 時最多,所以在 /etc/php.ini 中加上兩行:

report_zend_debug = 0
mbstring.script_encoding=""


CPU load 就下來了。不過要試個幾天確定一下!

root# uptime
21:41 up 5 days, 10:57, 2 users, load averages: 0.03 0.08 0.52


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

Snow Leopard hosts.allow and hosts.deny
11/06/2009, 15:00 - Apple
新裝好的 Snow Leopard Server, 一直收到有人用字典攻擊,在測試密碼. 先用 /etc/hosts.allow 和 /etc/hosts.deny 過濾掉沒有正確 IP 正反解的連線, 到時再用 sshdfilter 來擋!

/etc/hosts.allow

#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
#in.identd:ALL:ALLOW
#
smtpd:KNOWN,LOCAL,192.168.0.0/255.255.242.0:ALLOW
smtpd:UNKNOWN,PARANOID:DENY
#
httpd:KNOWN,LOCAL,192.168.0.0/255.255.2242.0:ALLOW
httpd:UNKNOWN,PARANOID:DENY
#
vsftpd:LOCAL,KNOWN,192.168.0.0/255.255.242.0:ALLOW
vsftpd:UNKNOWN,PARANOID:DENY
#
##in.telnetd:LOCAL,KNOWN,host,192.168.0.0/255.255.242.0:ALLOW
##in.telnetd:KNOWN,UNKNOWN,PARANOID:DENY
#
ipop3d:KNOWN,LOCAL,192.168.0.0/255.255.242.0,:ALLOW
ipop3d:UNKNOWN,PARANOID:DENY
#
imapd:KNOWN,LOCAL,192.168.0.0/255.255.242.0,:ALLOW
imapd:UNKNOWN,PARANOID:DENY
#
sshd:KNOWN,LOCAL,192.168.0.0/255.255.242.0:ALLOW
sshd:UNKNOWN,PARANOID,173.183.250.38:DENY
#
named:ALL:ALLOW
#
ALL:KNOWN,LOCAL,192.168.0.0/255.255.242.0:ALLOW
ALL:UNKNOWN,PARANOID:DENY
#


/etc/hosts.deny

#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
#ALL:UNKNOWN,PARANOID:DENY

發表回應 發表回應 ( 506預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.8 / 39 )

OS X server 10.4.11 upgrade to 10.6 問題暫解
11/03/2009, 11:59 - Apple
最近將原本在 iMac G5 上的 OS X Server 從 Tiger 10.4.11 昇級並換裝至 Mac Mini 的 Snow Leopard Server 10.6. 從 PowerPC 換成 Intel 的 CPU, 因為 Apple 在這兩種 CPU 上使用的 HDD Partition 格式不同, 無法直接以原來PowerPC的硬碟在Intel機器上開機. 所以將 iMac G5 放到 Target Disk Mode, 用 Firewire 連至 MacMini, 當成資料硬碟, 就可以無痛昇級,Snow Leopard Server 系統在一安裝好之後,第一次開機會有 Server Migration 可以自動作昇級,並自動作資料的搬移及轉換, 不過時間要等有點久, Snow Leopard Server 安裝約一個小時,但需要3個小時作 migration, 最多時間用在作原本的 user 所存放的 mail 格式轉換. 10.6 server 的 postfix 己經由原本的 UNIX mailbox 格式, 換成 QMail 的 maildir 可以加快信件的處理速度. 經過 Server Migration 之後, 所有的的資料都在, 密碼及SSL的CA設定也都沒有改變, 在外部的人根本無法察覺到 Server 己經換了.

跑了兩天發現系統的 loading (uptime) 會上昇到 40 以上, CPU 100% 滿載, (一般的 UNIX 系統在 3 至 5 就不得了了), 讓系統反應變慢. 檢查的結果應該是 apache2 的關係, 原因還不明, 因為有使用 Squirrel webmail, 無法停掉 apache, 先作一個 shell script 放在 crontab 中定時檢查若 load 大於 8, 就重新起動 apache. 作為暫時解決的方案.


#!/bin/sh
AP_PS=`ps -ax|grep httpd|grep -v grep|wc -l|awk '{printf("%d\n",$1)}'`
LOAD=`uptime|awk '{printf("%d\n",$11)}'`

if [ $LOAD -ge 8 ]; then
if [ $AP_PS -ge 10 ]; then
/usr/sbin/apachectl restart
fi
fi




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

Parallels Windows 7
10/30/2009, 16:08 - Apple
用 Parallels4 在 Snow Leopard 上跑 Windows 7,得到的測試結果,Graphics 還要再加強啊!

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

寫好一份文件
10/02/2009, 16:00 - 想到的
經常需要讀一些說明文件,發現好的文件很少,要舉例的話,我只想到 Cisco IOS Configuration GuideApple Developer Library,這兩者的文件在例子及詳細說明,完完整整都會放在同一份文件中,不需要再參考別的文件,而所需要的答案都可以在看過一至兩份文件之後得到,進而還可以完整了解整個工作的方法及流程。

但是其他很多公司的文件就沒有這麼好了,這些文件大都需要參照來參照去的,不在同一份文件中詳細說明,而是用了大量的參考連結,通常的結果就是看了半天,連來連去,結果不知所云。像Microsoft MSDN的文件就是這樣。不直接給答案,而是用連結回答問題,結果弔發更多問題。

不過像Cisco和Apple,也因為將所有的資料都放在一起,並詳細說明,所以文件一般都比較大,但大都可以解決讀者的問題,而且因為太大,所以都提供可下載的版本,拿回去慢慢看。而Microsoft分成無數個小檔案的文件,就是每個文件只有寫一部份,再用連結連起來,其他的請參考某編號文件,經常在轉了一大圈之後回到原點,而問題還是沒有解決,而且因為檔案內容太少,大都沒有提供可下載的版本,不然就是需要拿一堆檔案,自已再從中看看可不可以找到答案。

有一個問題可以找到很多不同的版本,但是以 Cisco 和 Apple 而言,大都會有新舊版本之間的說明可看。而Microsoft的話,就只有看當時的運氣,以及個人的修為而定了。

Open Source 的話,我認為 GNU Project的文件算是很好的,而wxWidget 的也不錯,不過像Qt,GTK+,GNOMEX.org,都太分散了,就很不好。

所以就創造了很多人,利用這些寫得不好的文件,而自己再寫一份來賣錢!
2 回應 2 回應 ( 922預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 22 )

Apple Store updating
09/29/2009, 15:28 - Apple
新東西要來了吧!


4 回應 4 回應 ( 329預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.4 / 21 )

rpm2targz
09/16/2009, 13:26 - Open Source
我使用 Slackware Linux作為工作平台,但要找應用程式時,經常看到只有 Debian或是只有rpm的格式。今天要用Google Desktop時,就發現 Linux 版本,只有包裝成 rpm 及 deb,所以就想到用 rpm2targz/rpm2tgz 這個工具轉檔一下,再自已搬到 /usr 下,就可以用了。為何最簡單的格式反而沒有人要用呢?
2 回應 2 回應 ( 433預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 2.9 / 48 )

更新更新更新
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 回應 ( 368預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 39 )

好讀 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 回應 ( 985預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 78 )

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設定打開。

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


<<開始 <前一頁 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 下一頁> 最後>>