2011年7月28日 星期四

cygwin 開發平台(windows版 iPhone SDK)

iPhone開發的介紹之前就想寫了,只是最近站長又跑回去玩機器人,所以iPhone文章的撰寫就有一點小偷懶,不過今天還是找了個時間把他完成。

若您夠細心且對iPhone上開發程式有興趣的朋友可能都已經發現到,在本站的檔案下載區早就已提供了iPhone的完整開發環境cygwin,若您一直沒注意到也沒關係,現在我就帶您認識一下cygwin及在cygwin的環境下如何編譯及開發iPhone的原生程式。

對一般人來說想開發iPhone的程式首先得克服的第一關就是 iPhone ToolChain的編譯,甚麼是iPhone的ToolChain?簡單的來說就是讓您在Linux或osx的系統下擁有編譯及開發iPhone原生程式的環境,詳細的資訊您可以參iPhone-dev的官方資訊。

目前iPhone ToolChain支援的環境有Linux及osx,若要在Windows下開發則必須透過我們今天的主角cygwin來模擬Windows的環境了(當然您也可以選擇在Windows上安裝vmware或virtualbox來架設Linux的系統),為何要選擇 cygwin做為我們開發iPhone的平台呢?除了站長本身習慣使用Windows之外,最重要的是cygwin簡單而且不需要設定與安裝,這點可以讓所有人都能在一個相同的環境之下來學習iPhone的開發,工欲善其事必先利其器,若大家的使用環境都可能因安裝或設定的不同而有所差異,我想相對的遇上的狀況與困難也會增加不少,甚至有可能在還沒接觸到iPhone程式的撰寫之前就直接陣亡,這樣就太可惜了,因為iPhone程式的開發並非想像中那樣的困難。

早期站長為了嘗試編譯出正確的iPhone ToolChain吃了不少苦頭,無論是安裝Linux系統,或是使用cygwin測試,甚至是差點買了一台iMac,都是希望能趕快進入iPhone開發的世界,可惜,所有的努力仍告失敗,所幸,在某一個因緣際會下站長取得了成功編譯iPhone ToolChain的cygwin版本,這是一個相當重要的開始,這也是我能寫這篇文章的主要原因。

好了,現在讓我們趕快進入主題吧,首先您必須從本站的軟體區下載專用的cygwin版本



然後進入ShareMe的檔案下載區下載iphone-sdk-cygwin-3.0_iphonetw.rar檔案(您必須先註冊為ShareMe的會員)。

檔案不小,有159MB,請耐心下載,下載完成後請直接將檔案進行解壓縮即可,建議預設路徑為 d:\ ,若您要放在任何地方也沒關係。

解壓後您會在d:的根目下找到 cygwin的資料夾,而在進入cygwin之前,首先我們先要設定一下環境變數,請用文書處理軟體打開d:\cygwin\etc\ 下的profile檔案並尋找

PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/opt/iphone/bin:$PATH
export PATH

並加入紅色字的字串,然後直接執行 d:\cygwin資料夾下面的Cygwin.bat 檔案就可以進入cygwin的開發環境。

接下來我們會使用到一些簡單的Linux指令,若有不熟悉的請利用Google查詢,這裡我就不多加說明。



若您在cygwin的畫面中看到hello的資料夾,那恭喜您,歡迎進入iPhone創作的世界,對於任何的程式語言來說,不能免俗的我們也來寫我們在iPhone上的第一支程式 helloworld!



我們趕快切換到 hello 的目錄,此時您會發現在hello的資料夾有目前一共有八支檔案,關於這八支檔案的功能及用途我陸續會在後面的專欄文章內介紹,而這裡看到的檔案清單對照到您在Windows檔案總管內看到的目錄及檔案是相同的,如

/opt/iphone/hello 則等於 D:\cygwin\opt\iphone\hello

另外由於iPhone的程式是屬於描述式的語言,因此我們直接以文字處理器(記事本notepad或是NotePad++)來進行程式碼的撰寫即可,現在我們打開 HelloApplication.m 這支檔案如下圖:


您可以將上述的文字修改為任何您想要的,這裡將Hello world 改為 My First iPhone Apps,然後存檔後再回到cygwin的操作畫面。

首先先清除之前產生的暫存檔,請在指令列下

make clean

然後我們開始進行編譯並產生iPhone可使用的原生軟體的格式

make


若編譯正確則會不會產生任何的錯誤訊息,而過程的畫面會同上圖。

恭喜您,您完成了您iPhone上的第一支原生程式囉,現在只要將您的程式上傳至iPhone就可以了。

剛剛提到hello的資料夾下有八支檔案,這其中有的是原始碼,有的是編譯後產生的連結與執行檔,若您不希望將您的原始碼給人家看到,那麼您就必須挑出程式『必要』的檔案即可。

我們先建立一個名為 hello.app 的資料夾並將 Hello及Info.plist上傳到您iPhone的Application目錄。

上傳後記得修改 hello.app 的檔案及資料夾權限,左下角的那個套用的勾一定要打開喔。

接下來將iPhone重新開機(或是利用SummberBoard內的Restart SpringBorard功能),您就能在桌面上看到您剛上傳的 hello 程式囉,因為我們並未指定軟體的圖示,所以您看到的暫時是一個問號,趕快給他點下去吧。


Perfect!雖然目前只能有上下點選的功能,不過這可是道道地地的iPhone原生程式喔,有沒有那麼一點感動的Feel呢?若真有心從事iPhone軟體的開發,那後面還有好長的一段路要走,對站長來說,同樣也仍在學習,就讓我們一起加油、努力吧!

64位安裝lampp(xampp for linux 的安裝方案)

xampp預設只能安裝在/opt目錄下,要想安裝在其他目錄下得改 ./lampp/lampp文件 搜索/opt/改了就ok了
首先,安裝32位支持包
sudo apt-get install ia32-libs (ubuntu方法)
我的是redhat的沒有操作這部,直接到下一步;
可是依然還會提示“XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system.”
然後,找到並編輯解壓後的lampp檔,
sudo gedit /opt/lampp/lampp (ubuntu方法)
通用方法:vi /opt/lampp/lampp
並搜索“XAMPP is currently 32 bit only“引號裡的那句話。用#號注釋下面的判斷環境的語句。
#case `uname -m` in
# *_64)
# if /opt/lampp/bin/php -v > /dev/null 2>&1
# then
# :
# else
# $de && echo “XAMPP gibt es zur Zeit nur als 32-Bit Applikation. Bitte verwende eine 32-Bit Kompatibilitaetsbibliothek fuer Dein System.”
# $de || echo “XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system.”
# exit
# fi
# ;;
#esac
重新安裝下,安裝成功
啟動後可能你還會遇上幾個常見的問題。解決辦法如下:
1、如果直接啟動lampp,唯獨mysql不會啟動。
解決方法:
chown -R nobody.root /opt/lampp/var/mysql
問題解決,mysql啟動正常!確認mysql正常啟動了,再進行下面的步驟。
2、在終端安裝XAMPP時出現/opt/lampp/lampp: line 74: arch: command not found的錯誤提示
解決方法:
sudo vim /bin/arch
在彈出的編輯方塊介面中增加一行:
uname -m
保存退出。再次在終端中輸入
sudo chmod x /bin/arch
問題解決。
3、如果在啟動warning: World-writable config file /opt/lampp/etc/my.cnf is ignored
原因:XAMPP對my.cnf的讀取許可權進行了設置,不允許World-writable(字面意思是全世界都可讀寫)
解決方法:
sudo chmod 644 /opt/lampp/etc/my.cnf
4、進入phpMyAdmin頁面時顯示:Wrong permissions on configuration file, should not be world writable
原因:這個不關XAMPP的事了,是phpmyadmin目錄許可權設置的問題,如果你把phpmyadmin的所有檔chmod 777就會出現這個提示了。
解決方法:只要修改檔案屬性就可以了,phpmyadmin要運行在755許可權下,
sudo chmod -R 755 /opt/lampp/phpmyadmin
5、如果你覺得xampp的htdocs目錄放在opt/lampp/下不好,
可以先在終端運行sudo /opt/lampp/lampp security把安全問題解決了,
然後sudo cp -R /opt/lampp/htdocs /home/htdocs把整個htdocs目錄複寫一份放在/home下,
然後sudo chmod -R 777 /home/htdocs給我們htdocs目錄的修改許可權,
最後sudo gedit /opt/lampp/etc/httpd.conf修改Apache 配製檔,查找裡面的/opt/lampp/htdocs全部替換改為我們剛才的htdocs目錄位址/home/htdocs保存退出就可。
還補充個:
如果你要用ProFTPD
那麼還要修改設定檔sudo gedit /opt/lampp/etc/proftpd.conf
把裡面的/opt/lampp/htdocs也改為/home/htdocs

2011年7月27日 星期三

ePub 基本架構說明

1.什麼是ePub?

「ePub」格式,是由國際數位出版論壇(IDPF)所提出的:用類似網頁的XML架構,讓電子書的文字可以在不同的電子閱讀設備進行內容重排的數位出版品內容組織與應用規範。

強調的是同一文字在不同閱讀器的共通性,捨棄掉紙本書的設計及樣子,在不同閱讀器上正確呈現內容是ePub的主要目的。


2.ePub檔案其實是一個壓縮檔

它其實是一個zip壓縮檔,把要形成ePub的檔案在不要用資料夾裝起來的狀況之下,全部用壓縮軟體壓縮成.zip檔案之後,接著將附檔名從.zip改成.epub就變成了ePub檔。



因為ePub是個壓縮檔,所以如果我們拿到一個ePub檔的時候,可以

(a)先把附檔名從.epub改成.zip。

(b)然後用普通的解壓縮軟體解壓縮,就可以看到ePub裡面的檔案。



3.ePub檔和網頁檔有關

打開壓縮檔之後會發現有很多網頁html的檔案。其實基本上ePub檔就是就是很多網頁檔的結合。想像之前看網頁的時候,調整瀏覽器大小,有時網頁的字也會跟著縮放。在電子書的設計上,就是採用了這種特性。



4.ePub的架構

ePub的格式包括了三個部分:由OCF、OPS及OPF三個部分組成了一個ePub檔案。



5.什麼是OCF (Open Container Format) 開放容器格式

OPF是ePub壓縮及封包的規範,簡單的來說,就是規範ePub用壓縮軟體,壓成.zip檔。



6.什麼是OPF (Open Packaging Format) 開放包裝格式

OPF是ePub負責導覽和目錄的部份。可以說是一個電子書裡的「根檔案」。

紀錄著這本電子書裡的封面、目錄、前言、各章節的html連結。

其中包括了

(a) metadata:原資料,也就是書籍資料。紀錄了書籍的相關資訊,好像版權頁一樣。

(b) manifest:(電子書內容物)清單:包括檔案名稱和id連結。(id=”檔案”)

(c) spine:控制閱讀的順序。調整ID會改變電子書裡章節出現的順序。

(d) guide:導讀部分,負責輔助閱讀的構造。比方說給盲人的有聲書部分。

(e)在OPF之外常常會看到toc.ncx,這個是給程式讀的目錄檔案。



7.什麼是OPS (Open Publication Structure) 開放出版架構

OPS是一個電子書主要的內容及標記部分。也是我們製作電子書主要要處理的部份。先前提到的XML的架構,就是指在這邊出現的內容,是以XML的格式出現的。XML格式的文件,意思就是我們在本來的內文裡下標記,讓電腦知道哪些文字是標題,哪些文字是小標題,及哪些文字是內文等等…。



8.再次說明ePub架構

如上圖示,先有最底層的OPS內容,然後再透過OPF負責導覽和目錄的部份。最後再以OCF規範用zip壓縮檔案,就變成了ePub檔。



有時候在比較新的ePub生成工具裡,OPF和OPS會合成一個資料夾,叫做OEBPS。不過不管怎麼樣,在內容上面,ePub包括了:

(a).opf檔

(b).ncx檔

(c) 內容html檔

(d) 附加插圖的圖檔

(e) META-INF資料夾,裡面有container.xml檔案,告訴電子閱讀機器要去哪裡讀OPF檔案。



9.開發ePub需要的相關軟體

開發ePub電子書需要的軟體包括了:

2.1 ePub電子書製作工具:eCub、Calibre、Adobe InDesign CS5

2.2 ePub電子書閱讀工具:Adobe digital edition、Sony eLibrary、Calibre…

2.3 ePub電子書編輯工具:PDFXML Inspector、SIGIL


參考資料:http://tw.myblog.yahoo.com/jw!bk8ATBWWGiiYAJe366FuXAC9zSo-/article?mid=10699

在Fedora 上手動安裝 MySQL (using source code to install)

首先到Mysql (http://dev.mysql.com/downloads/mysql/)網站上抓取MySQL Community Server , 下載 .tar 封裝的source code.

Step 1. 解壓縮
tar zxvf mysql-5.5.9.tar.gz

Step 2.
groupadd mysql

Step 3.
useradd -g mysql -c "MySQL Server" mysql

Step4.
cd /usr/local/src/mysql-x.x.xx

Step5.
chown -R root.root *

Step6.
make clean

Step7.
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --disable-maintainer-mode --with-mysqld-user=mysql --with-unix-socket-path=/tmp/mysql.sock --without-comment --without-debug --without-bench

Step8.
make && make install

Step9.
cd /usr/local/mysql

Step10.
./scripts/mysql_install_db

Step11.
chown -R root:mysql /usr/local/mysql

Step12.
chown -R mysql:mysql /usr/local/mysql/data

Step13.
cp support-files/my-medium.cnf /etc/my.cnf

Step14.
chown root:sys /etc/my.cnf

Step15.
chmod 644 /etc/my.cnf

Step16.
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf

Step17.
ldconfig

Step18.
cp ./support-files/mysql.server /etc/rc.d/init.d/mysql

Step19.
chmod +x /etc/rc.d/init.d/mysql

Step20.
/sbin/chkconfig --level 3 mysql on

Step21.
cd /usr/local/mysql/bin

Step22.
for file in *; do ln -s /usr/local/mysql/bin/$file /usr/bin/$file; done

Step23.
vi /etc/my.cnf uncomment
skip-networking

Step24.
cd /usr/local/mysql/support-files/

Step25.
chmod 777 mysql.server

Step26.
/usr/local/mysql/bin/mysqld_safe --user=mysql &

Step27.
/usr/local/mysql/bin/mysqladmin -u root –p password
更改root 密碼, default 密碼直接按Enter
然後再輸入自訂密碼, 及確認自訂密碼

Step28.
MySQL 開機自動啟動;
vi /etc/rc.d/rc.local
加上 /usr/local/mysql/support-files/mysql.server start

Step29.
Done.

Fedora 上手動安裝 Apache (using source code to install)

首先到Apache 官網download Apache HTTP Server (http://httpd.apache.org/)

Step1.解壓縮
tar zxvf httpd-2.2.17.tar.gz

Step2.
make clean

Step3.
./configure --prefix=/usr/local/apache --enable-shared=max --enable-module=rewrite --enable-module=so

Ste4.
make && make install

Step5. 開機自動啟動Apache
vi /etc/rc.d/rc.local
加入 /usr/local/apache/bin/apachectl start

Step6.
Done.

參考資料:http://tw.myblog.yahoo.com/trail-0721/article?mid=-2&prev=62&l=a&fid=9

在Fedora 上手動安裝 PHP (using source code to install)

首先到PHP(http://www.php.net/downloads.php)網站上抓取PHP Source code

Step1.解壓縮
tar zxvf php-5.3.5.tar.gz

Step2.
make clean

Step3.
./configure --with-apxs2=/usr/local/apache/bin/apxs --disable-debug --enable-ftp --enable-inline-optimization --enable-magic-quotes --enable-mbstring --enable-safe-mode --enable-wddx=shared --enable-xml --with-gettext --with-mysql=/usr/local/mysql --with-regex=system --with-zlib-dir=/usr/lib

Step4.
make && make install

Step5.
cp php.ini-production /usr/local/lib/php/php.ini

Step6.
ln -s /usr/local/lib/php.ini /etc/php.ini

Step7.
ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf

Step8.
vi /etc/httpd.conf
加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

AddType application/x-tar .tgz

AddType application/x-httpd-php .php .foo
AddType application/x-httpd-php-source .phps .phtmls

AddType application/x-httpd-php .php .htm .html


DirectoryIndex index.php index.htm index.html


修改

ServerName 為 localhost:80


Step9.

ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apache


Step10.

ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S90apache


Step11.

/etc/rc.d/init.d/apache start


Step12.

chmod 755 /usr/local/apache/cgi-bin


Step13.

chmod 755 /usr/local/apache/htdocs


Step14.

測試php

請在 /usr/local/apache/htdocs/ 目錄下建立 test.php 檔案

檔案內容為

PHP Test Script
phpinfo( );
?>
然後存檔


Step15.

開啟網頁連到Server, 看能不能見到php 測試網頁

參考資料:http://tw.myblog.yahoo.com/trail-0721/article?mid=-2&prev=63&l=a&fid=9

在Fedora 上手動安裝 NTOP

1. 安裝必要軟體
yum install libpcap-devel
yum install gdbm-devel
yum install zlib-devel
yum install rrdtool-deve
yum install rrdtool-devel.x86_64 <== 依照安裝的64 or 32 bit 版本做選擇
yum install GeoIP GeoIP-devel
2. synic ntop
cd /usr/local/src/
3. compile ntop
cd ntop
./autogen.sh
make
make install
3. 設定ntop
useradd -M -s /sbin/nologin -r ntop
mkdir /var/log/ntop/
chown ntop:root /usr/local/var/ntop/
chown ntop:ntop /usr/local/share/ntop/
4. 執行ntop
ntop –A (set admin password)
ntop -P /var/log/ntop/ -u nobody (第一次執行不要背景執行, 因為第一次執行會要求輸入密碼)
ntop -P /var/log/ntop/ -u nobody &


5. 開啟Firewall 3000的 port

vi /etc/sysconfig/iptables 加入
-I INPUT 1 -j ACCEPT -p TCP --dport 3000:3001 6.

開機執行, 編輯
vi /etc/rc.d/rc.local
加入
ntop -P /var/log/ntop/ -u nobody > /dev/null &
> /dev/null 是將現擾人的ntop 訊息輸出到/dev/null 也就是不秀在銀幕


參考資料:http://tw.myblog.yahoo.com/trail-0721/article?mid=-2&prev=64&l=a&fid=9

在Fedora 上手動安裝 SendMail

yum install sendmail
yum install m4
yum install sendmail-cf
1. 修改 sendmail.mc 的參數
[root@linux ~]# vi /etc/mail/sendmail.mc
找到底下這一行:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
將他改成這樣即可:
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
2. 備份舊的設定檔資料
[root@linux ~]# cd /etc/mail
[root@linux mail]# mv sendmail.cf sendmail.cf.back1
3. 開始建立新的 sendmail.cf 設定檔
[root@linux mail]# m4 sendmail.mc > sendmail.cf

開機自動寄送IP address to mail .
vi /etc/rc.d/rc.local
加入 /sbin/ifconfig | /bin/mail -s "Horizontal_VM_IP" XXXXX@XXXXX.com

參考資料:http://tw.myblog.yahoo.com/trail-0721/article?mid=64&prev=65&l=a&fid=1

在Fedora 上手動安裝 webmin

1. wget http://prdownloads.sourceforge.net/webadmin/webmin-1.530.tar.gz
2. cd webmin-1.530
3. ./setup.sh
其他照提示安裝
參考來源:http://tw.myblog.yahoo.com/trail-0721/article?mid=65&prev=66&next=64

在Fedora 上安裝 Nidia driver

1. 先到Nvidia 官網下載相O.S.對應的driver

2. RPM Fusion:

rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

3. #yum update (要很久, 可做可不做)

4. 安裝kmod-nvidia和kmod-nvidia-PAE
#yum install kmod-nvidia
#yum install kmod-nvidia-PAE

5. SElinux設定
#setsebool -P allow_execstack on

6. sh NIDIA.XXXXX.xxxx.run

7. disable nouveau
/boot/grub/grub.conf 中kernel那一行的行尾加入 rdblacklist=nouveau

8, 重開機

參考資料:http://tw.myblog.yahoo.com/trail-0721/article?mid=66&prev=-1&next=65