iPhone 開發的小技巧

1 亂數的使用

標頭檔

#import

#import


srandom()
的使用
srandom((unsigned)(mach_absolute_time() & 0xFFFFFFFF));

直接使用 random() 來調用亂數

2 在UIImageView 中旋轉圖片

float rotateAngle = M_PI;
CGAffineTransform transform =CGAffineTransformMakeRotation(rotateAngle);
imageView.transform = transform;
以上程式旋轉imageView,角度為rotateAngle,方向可以自己測試唷!

3 在Quartz中如何設定旋轉點

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.png"]];
imageView.layer.anchorPoint = CGPointMake(0.5, 1.0);


這個是把旋轉點設置為底部中間。記住是在QuartzCore.framework中才得到支持。

4 創建.plist文件並儲存

NSString *errorDesc; //用來存放錯誤訊息用
NSMutableDictionary *rootObj = [NSMutableDictionary dictionaryWithCapacity:4]; //NSDictionary, NSData等文件可以直接賺喚為plist文件

NSDictionary *innerDict;
NSString *name;
Player *player;
NSInteger saveIndex;

for(int i = 0; i < [playerArray count]; i++) { player = nil; player = [playerArray objectAtIndex:i]; if(player == nil) break; name = player.playerName;// This "Player1" denotes the player name could also be the computer name innerDict = [self getAllNodeInfoToDictionary:player]; [rootObj setObject:innerDict forKey:name]; // This "Player1" denotes the person who start this game } player = nil;

NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:(id)rootObj format:NSPropertyListXMLFormat_v1_0 errorDescription:&errorDesc];

红色部分可以忽略,只是给rootObj添加一点内容。這個plistData為創建好的plist文件,用其writeToFile方法就可以寫成文件。下面是代码


/*得到移動設備上的文件存放位置*/
NSString *documentsPath = [self getDocumentsDirectory];
NSString *savePath = [documentsPath stringByAppendingPathComponent:@"save.plist"];

/*存文件*/
if (plistData) {
[plistData writeToFile:savePath atomically:YES];
}
else {
NSLog(errorDesc);
[errorDesc release];
}


- (NSString *)getDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [paths objectAtIndex:0];
}


4 讀取plist文件並轉換為NSDictionary

NSString *documentsPath = [self getDocumentsDirectory];
NSString *fullPath = [documentsPath stringByAppendingPathComponent:@"save.plist"];
NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:fullPath];


5 讀取一般性檔案文件

NSString *tmp;
NSArray *lines;
/*將文件轉換為一行一行的*/
lines = [[NSString stringWithContentsOfFile:@"testFileReadLines.txt"]
componentsSeparatedByString:@"\n"];

NSEnumerator *nse = [lines objectEnumerator];

// 讀取<>裡的内容
while(tmp = [nse nextObject]) {
NSString *stringBetweenBrackets = nil;
NSScanner *scanner = [NSScanner scannerWithString:tmp];
[scanner scanUpToString:@"<" intoString:nil]; [scanner scanString:@"<" intoString:nil]; [scanner scanUpToString:@">" intoString:&stringBetweenBrackets];

NSLog([stringBetweenBrackets description]);
}


對於讀取文件,還有補充,暫時到此。亂數和文件讀取寫在遊戲開發中經常用到。所以把這部份內容放在這,以便和大家分享,也當記錄便於查找。

6 隱藏NavigationBar
[self.navigationController setNavigationBarHidden:YES animated:YES];

在想隱藏的ViewController中使用就可以了。

[轉貼]Reconstructor - Ubuntu Live CD 重製工具


0.緣起:
目前花蓮縣力推 Linux 進入教學現場(資訊教育),當初以相容性為考量,找了市面上的Live CD,最後決定用B2DpureKGB。
B2DpureKGB的確很不錯,硬體幾乎都能支援,也有許多好用的功能,但是就使用者的眼光而言,畢竟不夠美、不夠炫。
後來在偶然間用了 Edubuntu ,可愛的圖案,操作的便利,覺得更適合讓小學生用。

學生回家後,幾乎沒有 Linux的環境可供練習,必須提供 Live CD。這次因為上級補助,本校提供每人1片 li-Linux 2006
(B2DpureKGB再製版) 回家用,不但打開 Linux 的能見度,學生的學習也得以延續。

不過,本校因改用 Ubuntu 的 dapper 版本(用edgy,USB無法啟動),所以想提供 edubuntu edgy 的live cd,更契合上課環境。
而其 live cd 不管語系如何選,進去後還是英語,而有些軟體也不太夠用,因此動啟重製的念頭。

Google真是我們的好幫手,一下子就找到了:
LinuxTOY » Ubuntu Live CD 個性化定制全程圖解
這是個圖形化的工具,動動滑鼠就能輕鬆將gnome介面的 ubuntu live cd 修改,還能保有原來的特色。

一、安裝:
請到官網
reconstructor下載頁面,下載 deb 檔。下載時,可以選 『開啟方式』- GDebi package Installer,
GDebi 會幫你把需要的其他套件一併安裝。

二、使用:
1.開始


2.升級:按左下角的Update

3.第一關:選擇source

第1次用,3個 create 都要勾,之後換 iso 檔才需要勾。
指定 iso 檔後,按 Next 進入下1關。

4.第二關:設定 gnome、新增/移除程式

這裡可以設定開機splash,如果不設,會用 iso 檔原來的。


這裡可以設定gnome的佈景主題、桌布、圖示、字型等。


這裡則指定sources.list的內容,台灣地區可以將
http://apt.ubuntu.org.tw/sources.list.edgy 的內容直接貼上。


設定最佳化。


設定帳號、密碼、主機名稱等。


新增移除程式用,可以使用內建的模組,也可以開啟左下角的 Terminal,利用 apt-get install來安裝。

最後,別忘了要按 Apply 讓改變生效!


5.第三關:設定輸出,產生ISO檔

在 Filename 指定 iso 檔名。
產生ISO檔約10多分鐘,可以休息一下。

6.第四關:完成,燒錄。

完成後,按 Burn ISO可以直接燒錄,或是使用 qemu 模擬看看。
qemu install:
sudo apt-get install qemu bochsbios vgabios

use:
sudo mount -t tmpfs -o size=272m none /dev/shm
qemu -cdrom ~/ubuntu-custom.iso -boot d -m 256

心得:
1.不要急著按 Finish,先將成果試用看看,要修改的話,按 Back 直接修改即可,不用重頭來。
2.Firefox會自動安裝flashplayer,直接將本機的 ~/.mozilla 資料夾複製到 reconstructor/root/etc/skel/下,
就不用裝flashplugin-nonfree套件,書籤也一併進去了。
3. 官方 live cd有很多用不到的套件,像ttf-xxxxxx-fonts,很多是其他語系用的;
language-pack-XX、language-pack-gnome-xx、language-pack-kde-xx用不到的也都可以移除。
4.可以參考
Linux 桌面瘦身加速工具組 — trans-purge 來瘦身。
5. edubuntu 無法用上面的方法,只好自己去找,像語系在 reconstructor/root/usr/share/locale-language。
6. gnome 在附屬應用程式有個好工具:磁碟用量分析器,可以用來找到還有哪裡很佔空間?
找到了,進 terminal 除掉它!或用 gksu nautilus進去刪。
7.gnome 的選單有很多程式沒顯示,可到 reconstructor/root/usr/share/applications/ ,打開該軟體的
xxxxxx.desktop,把 nodisplay= false 改成 true。
8.中文語系 language-pack-zh, language-pack-gnome-zh, language-pack-kde-zh 裝好後,再裝language-support-zh ,
會把缺的都裝好。

客製化光碟最簡單的方法

1.首先在一台機器上灌好 ubuntu 系統,並做好所有的更新和你想要改的設定。
2.接下來就是備份系統到光碟去了,當然是要備份成可以安裝的。
3.這片光碟裡會保留你系統上所有的個人資料,含你的帳密,因此安裝過程中,問你輸入帳密,都是沒用的,只能整個裝好後再去改帳密。

以下是詳細的操作流程:

Remastersys 是做客製化光碟最簡單的做法

1 裝好ubuntu,並改好所有設定和更新
2 安装打包工具,Remastersys

a.編輯此檔,請下指令:
引文:

sudo gedit /etc/apt/sources.list



b.加入下列兩行:
引文:


# Remastersys base-on ubuntu
deb
http://www.remastersys.klikit-linux.com/repository remastersys/

# Remastersys base-on debian
deb http://www.remastersys.klikit-linux.com/repository debian/


c.請下指令
引文:

sudo apt-get update
sudo apt-get install remastersys



3.開始打包
請下指令
引文:


sudo remastersys backup custom.iso


運行時間大約10~20幾分鐘,此指令會備份你的系統,並產生一個 custom.iso 檔,位於 /home/remastersys 內,將此檔燒成光碟即可。用此光碟來安裝就可以你原來的設定安裝到別台上。(註:光碟開機會提示你要打install,才會進入安裝程序)


4.最後,清除由 remastersys 產生的臨時檔

sudo remastersys clean

用VIM编写C/C++程序

用VIM编写C/C++程序

Vi是Unix下最常用的文本编辑器。VIM(Vi IMproved)则是它的增强版。有人常常拿VIM和emacs比较,VIM尽管不象emacs那样有那么多的功能,但是比emacs更方便、好用。用过emacs的人肯定会为emacs的一些快捷键感到烦恼,有时候用真希望自己有八只手。VIM的学习曲线也不象emacs那么长,只要看看VIM自带的vitutor,大约只要20分钟就能掌握VIM的用法。对于Unix下的C/C++的程序员,我推荐你们使用VIM+Ctags的组合来写程序。其中原因听我慢慢道来。(下面对VIM的介绍主要是针对5.6以后的版本)
VIM支持语法制导和自动缩进

VIM会根据文件的后缀名,如:*.c、*.cpp、*.cc,等,自动设置语法制导(Syntax Highlighting)。C/C++中的一些保留字,如:if、for、include,等等,就会有不同的颜色,这样就会减少程序员犯错的可能,阅读程序的时候相对来说也轻松很多。用下面这些命令在VIM中查看有关语法制导的帮助:“:h syntax”、“:h syn-qstart”、“:h syntax-printing”。

VIM也支持根据GNU的风格自动缩进,这样程序员编写出来的代码就更易阅读,而且也有利于培养好的编程风格。用下面这些命令在VIM中查看有关自动缩进的帮助:“:h cindent”、“:h cinoptions”、“:h cinoptions-values”、“:h cinkeys”、“:h cinwords”。
使用Ctags

VIM中已经带了Ctags这个程序。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。Ctags可以帮助程序员很容易地浏览源代码。用下面的命令可以在源代码的根目录下创建“tags”文件:

[/home/brimmer/src]$ ctags -R

“-R”表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。“tags”文件中包括这些对象的列表:

l 用#define定义的宏

l 枚举型变量的值

l 函数的定义、原型和声明

l 名字空间(namespace)

l 类型定义(typedefs)

l 变量(包括定义和声明)

l 类(class)、结构(struct)、枚举类型(enum)和联合(union)

l 类、结构和联合中成员变量或函数

VIM用这个“tags”文件来定位上面这些做了标记的对象,下面介绍一下定位这些对象的方法:

1) 用命令行。在运行vim的时候加上“-t”参数,例如:

[/home/brimmer/src]$ vim -t foo_bar

这个命令将打开定义“foo_bar”(变量或函数或其它)的文件,并把光标定位到这一行。

2) 在vim编辑器内用“:ta”命令,例如:

:ta foo_bar

3) 最方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl-]”。用“Ctrl-o”退回原来的地方。

注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:set tags=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。
快速改正错误

在VIM编辑器的环境下用“:make”就可以编译程序,当然其前提是在当前目录下有Makefile文件。运行完“:make”之后,如果程序中有错误,就会显示出来。这时候,光标会自动指向第一个出现错误的地方,而且你还可以看到错误的提示。然后,你就可以改正错误,而不用手工找到出错的那一行。记住下面几个有用的命令:

l “:cl”列出错误

l “:cn”让光标指向下一个错误

l “:cp”让光标指向上一个错误

l “:cnew”从头开始

你甚至可以让VIM识别出其它编译器而不是gcc的错误提示。这对一些开发嵌入式系统的程序员这很有用,因为他们很可能用的不是gcc而是其它编译器。通过设置“errorformat”的值,可以让VIM识别出编译器的出错提示。因为不同的编译器的出错提示是不同的,所以如果用的不是gcc就要重新设置。

“errorformat”的值是一个字符串,它的格式和C语言的scanf的字符串格式相识。

gcc的“errorformat”的值为:%f:%l:\%m。其中“%f”表示文件名,“%l”表示行号,“%m”表示出错信息。

用“:h errorformat”查看详细的帮助信息。

用“:h quickfix”、“:h make”、“:h makeprg”、“:h errorfile”查看其它的信息。
有用的快捷键

下面的这些快捷键对程序员很有帮助:
在函数中移动光标

[[ 转到上一个位于第一列的“{”

]] 转到下一个位于第一列的“{”

{ 转到上一个空行

} 转到下一个空行

gd 转到当前光标所指的局部变量的定义

* 转到当前光标所指的单词下一次出现的地方

# 转到当前光标所指的单词上一次出现的地方
括号的匹配

% 用来进行小括号、中括号和大括号的匹配。这要看当前光标指向的是什么符号了。
其它

VIM的配置文件是“.vimrc”,用这个文件可以配置VIM。VIM的图形界面的版本叫gvim。VIM也有用于Windows平台的版本。
VIM的资源

VIM的主页:http://www.vim.org/
版权说明

这篇文章的版权属于作者brimmer(brimmer@linuxaid.com.cn)和www.linuxaid.com.cn。如果要转载请加上版权提示。

Brimmer的主页:www.linuxaid.com.cn/engineer/brimmer。HTML格式和Word格式的文档可以在主页上找到。

不得不知gtk編譯環境的設置

需要執行下列四項指令
sudo apt-get install build-essential #安裝gcc/g++/gdb/make 等基本编程工具
sudo apt-get install gnome-core-devel
#安装 libgtk2.0-dev libglib2.0-dev 等開發相關lib文件
sudo apt-get install pkg-config
#編譯GTK程序時自動找出header&lib位置
sudo apt-get install devhelp
#安裝 devhelp GTK檔案查找程序
sudo apt-get install libglib2.0-doc libgtk2.0-doc
#这将安装 gtk/glib 的API参考手册及其它帮助文件
sudo apt-get instal glade libglade2-dev
#这将安装基于GTK的界面构造程序
運行下列命令查詢安裝
pkg-config --cflags gtk+-2.0
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1
pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

Glade是一个非常好的可视化编辑工具。
原文地址 http://blog.csdn.net/dai_weitao/archive/2007/08/22/1755111.aspx
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0`
\`pkg-config --libs gtk+-2.0`

如何設置VIM中C/C++開發環境

1、配置文件的位置
在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:.vimrc。例如,/root目录下,通常已经存在一个.vimrc文件。
2、设置语法高亮显示
1) 打开vimrc,添加以下语句来使得语法高亮显示:
syntax on
2) 如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:
export TERM=xterm-color
3、设置Windows风格的C/C++自动缩进(添加以下set语句到vimrc中)
1设置(软)制表符宽度为4
set tabstop=4
set softtabstop=4
2设置缩进的空格数为4
set shiftwidth=4
3设置自动缩进即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
set autoindent
4设置使用 C/C++ 语言的自动缩进方式:
set cindent
5)设置C/C++语言的具体缩进方式(以我的windows风格为例):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
6)如果想在左侧显示文本的行号,可以用以下语句:
set nu
7)最后,如果没有下列语句,就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif

How to create lightweight linux in your pocket!

1. Create environment that can build BusyBox
$apt-get install gcc
$apt-get install linux-headers-`uname -r`
$apt-get install make
$apt-get install build-essential
$apt-get install libncurses5-dev
=====================================================
2. download Xubuntu installer initrd
=====================================================
3. Decompression initrd
$gunzip initrd.img.gz
$mkdir test
$cd test
$cpio -i -d < ../init.img
=====================================================
4. Revised init content shows as follows
$cd /
$vim ./init



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
How to program script for fdisk command?
> fdisk_command.sh
#!/bin/sh -e
fdisk /dev/sda < /script.sh
> script.sh
#!/bin/sh -e
n
p
1
t
83
w
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




// Disable kernel's message
$echo "0 0 0 0" > /proc/sys/kernel/printfk
// Remove message of fdisk command to trash
$./fdisk_command.sh > /dev/null
// Modify fdisk source code to remove title message

=====================================================
5. download Xubuntu installer busybox 1.1.3

6. Build BusyBox kernel
$make allnoconfig
$make menuconfig
Busybox Setting
Build Options
[*]Build BusyBox as a static binary (no shared libs)
[*]Build with Large File Support (for accessing files > 2GB)
Installation Options -> [*]Don't use /usr
Miscellaneous Utilities -> Don't choose
Shells -> default (ash)
Others setting can be chosen by oneself
Save Configuration to an Alternate file

$make
$make install
$cp -ar ./_install/* /home/gary/myinitrd/test/
$cd /home/gary/myinitrd/test
=====================================================
Compression
$find .| cpio -o -H newc > ../myinitrd.img
$cd ..
$ gzip -9 myinitrd.img

How to install GStreamer and programming on ubuntu


  • apt-get install build-essential
    很顯然,我們需要編譯 C/C++ 應用程式
  • apt-get install libgtk2.0-dev
    主題是 Gtk+,當然要安裝其對應的開發套件
  • apt-get install libwebkit-dev
    依據 debian 描述,該套件為 "Web content engine library for Gtk+",注意,Qt 4.4 之後,也切割了 libqt4-webkit,表示 WebKit module for Qt,不要弄混淆了
  • apt-get install gstreamer0.10-x gstreamer0.10-tools gstreamer0.10-ffmpeg gstreamer0.10-plugins-base gstreamer0.10-plugins-good gnome-media

Step 1: Install GStreamer 0.10.23
$apt-get install gstreamer*
$apt-get install libglib2.0-dev
$apt-get install bison
$apt-get install flex
$mkdir /home/gary/gstreamer
$cd /home/gary/gstreamer
$wget ./ http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.23.tar.gz
$tar -zxvf ./gstreamer-0.10.23.tar.gz
$cd ./gstreamer-0.10.23
$./configure
$make
$make install


Reference:
http://www.ibm.com/developerworks/cn/linux/l-gstreamer/index.html
http://hi.baidu.com/369109971/blog/item/726a6ad4d005fb06a18bb75f.html

How to install DSPACK in BCB2007

Step 1: 下載direct 9 SDK 2004年12月的版本才安裝成功

http://download.microsoft.com/download/f/6/0/f6087536-6544-47c7-9ca8-efdcc18feb57/dxsdk_dec2004.exe

Step 2: 下載Dspack
http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=92986

Step 3:
將Dspack解壓縮到C:\,
到C:\DSPACK\packages依"次序"安裝以下的package
DirectX9_BCB6.bpk   執行compile後儲存
DSPack_BCB6.bpk    執行compile後儲存
DSPackDesign_BCB6.bpk 執行install後儲存

Step 4:
Copy $DXSDK\include\*.* to $DSPACK\include\*.*
Copy $DSPACK\include\*.* to $BDS\include\*.*


虹光大成就-密教灌頂(一)