pythonのコレクションをいつも混同するのでメモ
[]:リスト
():タプル
{}:ディクショナリ
なお、タプルはリストと違って後から値やデータ構造を変更できない。
pythonのコレクションをいつも混同するのでメモ
[]:リスト
():タプル
{}:ディクショナリ
なお、タプルはリストと違って後から値やデータ構造を変更できない。
iOSアプリケーションを実際に作ってみましょう。
今回は題材として簡易メモ帳を制作します。
Xcodeでのプロジェクト作成
まず[File]->[New Project]をクリックする。すると次の画面が表示される。
この中の「View-Based Application」を選択する。プロジェクトの名前の設定になるのでMemoPadと入力する。これでMemoPadプロジェクトが作成されプロジェクトウィンドウが表示される。
Xcodeによってあらかじめいくつかのファイルが生成されている。その中でMemoPadAppDelegateとMemoPadViewControllerクラスがあるのが確認できる。また拡張子がxib(XML Interface Builderの頭文字)のファイルはユーザーインターフェースのレイアウトを行うためのファイルでInterface Builderを使って編集することになる。
MemoPadViewController.hの編集
次にMemoPadViewController.hを次のように編集する。
[objc]
#import
@interface MemoPadViewController : UIViewController {
// テキストビューのためのアウトレット
IBOutlet UITextView* textView;
}
// キーボードを隠すためのアクション
- (IBAction)done;
@end
[/objc]
textViewインスタンス変数の先頭に付いているIBOutletはアウトレットと呼ばれ、Interface Builderに対して、この変数をユーザインタフェース上の部品と関連づけることができることを示している。
doneメソッドの返り値のIBActionはアクションと呼ばれ、アクションもInterface Builderで利用される。
[File]->[Save]で編集を保存しておく。
Interface Builderでのレイアウト
次にMemoPadViewController.xibをダブルクリックし、Interface Builderを起動する。
すると4つのウィンドウが表示される。
上の画像のように部品を配置する。ナビゲーションバーにはタイトルを設定する。Bur Button Item Attributesの「Style」と「Identifier」を「Done」に設定しておく。
アウトレットとアクションの接続
xibウィンドウ中のFile’s Ownerアイコンを右クリックする。
ここでこのインスタンスから接続可能なアウトレットのアクションの一覧が表示される。textViewの右端にある○をドラッグしてテキストビュー上でドロップする。
さらにdoneの右端にある○をドラッグしてDoneボタン上でドロップする。
[File]->[Save]で作業内容を保存する。
MemoPadViewController.mの編集
@implementationと@endという指示子の間に次のコードを書く。
[objc]
- (IBAction)done
{
// キーボードを隠す
[textView resignFirstResponder];
}
[/objc]
これで入力が終わったらDoneボタンを押すことでキーボードが隠れるようになった。
ビルドと実行
メニューからSimulatorとiPhoneを選択する。
そして「Build and Run」ボタンを押し、コンパイル、インストール、シミュレータ起動までを行う。
これでひとまず完成である。次からは機能の拡張をしていく。
デバイスの回転への対応
MemoPadViewController.mの次の部分を修正する。
[objc]
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// デバイスが回転したとき、ビューも回転させる
return YES;
}
[/objc]
これで端末を回転すると画面も回転するようになる。
テキストの保存と読み込み
MemoPadViewController.mを次のように編集する
[objc]
- (void)viewWillDisappear:(BOOL)animated
{
// テキストファイルのパスを決定する
NSArray* paths;
NSString* path;
paths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
path = [paths objectAtIndex:0];
path = [path stringByAppendingPathComponent:@"text"];
// テキストからバイト列を作成する
NSData* data;
data = [textView.text dataUsingEncoding:NSUTF8StringEncoding];
// バイト列をファイルに書きこむ
[data writeToFile:path atomically:YES];
}
[/objc]
[objc]
- (void)viewWillAppear:(BOOL)animated
{
// テキストファイルのパスを決定する
NSArray* paths;
NSString* path;
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [paths objectAtIndex:0];
path = [path stringByAppendingPathComponent:@"text"];
// テキストファイルが存在する場合
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
// ファイルをバイト列として読み込む
NSData* data;
data = [NSData dataWithContentsOfFile:path];
// バイト列をテキストに変換する
NSString* string;
string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
[string autorelease];
// テキストをテキストビューに設定する
textView.text = string;
}
}
[/objc]
上のコードでビューが隠れるときにテキストを保存し、ビューが現れるときにテキストを読み込んでいる。
参考:
いざという時に備えてデータベースのバックアップをしましょう。
[plain]
# /etc/init.d/mysqld stop
# cp -r /var/lib/mysql /tmp/mysql-backup
# /etc/init.d/mysqld start
[/plain]
mysqldumpで指定されたデータベースおよびテーブルのASCIIダンプを生成します。
[plain]
$ mysqldump –add-drop-table -h mysqlhostserver
-u mysqlusername -p databasename (tablename tablename tablename) | bzip2
-c > blog.bak.sql.bz2
[/plain]
例:
[plain]
$ mysqldump –add-drop-table -h db01.example.net -u dbocodex -p dbwp | bzip2 -c > blog.bak.sql.bz2
[/plain]
復元方法:
bz2ファイルを解凍し、sqlスクリプトを実行します。
[plain]
$ bzip2 -d blog.bak.sql.bz2
$ mysql -h mysqlhostserver -u mysqlusername -p databasename < blog.bak.sql [/plain]
bzip2は圧縮のために使っています。以下のようにすれば無圧縮のsqlファイルが作れます。
[plain] $ mysqldump –add-drop-table -h db01.example.net -u dbocodex -p dbwp > blog.bak.sql
[/plain]
参考:
Backing Up Your Database « WordPress Codex
MacでiOS向けのアプリを作る場合Appleの統合開発環境(IDE)であるXcodeを使って開発すると便利です。そこでjailbreak済みのiPou touch向けアプリを作るための方法を紹介します。
1.公式のガイドを参考にしながら証明書をつくる(Obtaining a Signing Identityのみ行えばよい)
2.jailbreak済みのiPod touchでCydiaを使い、AppSyncをインストールする。しかしデフォルトのリポジトリにはAppSyncはないのでhttp://cydia.hackulo.usを追加してからインストールする
3.SDKSettings.plistを編集する
[plain]
cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk
sudo cp SDKSettings.plist SDKSettings.plist.orig
sudo vi SDKSettings.plist
[/plain]
<key>CODE_SIGNING_REQUIRED<key>
<string>YES<string>
という部分と
<key>ENTITLEMENTS_REQUIRED<key>
<string>YES<string>
という部分を見つけそれぞれYESをNOに書き換える。
4.Info.plistを書き換える
[plain]
cd /Developer/Platforms/iPhoneOS.platform/
sudo cp Info.plist Info.plist.orig
sudo vi Info.plist
[/plain]
<key>CODE_SIGN_CONTEXT_CLASS<key>
<string>XCiPhoneOSCodeSignContext<string>
という部分の
<string>XCiPhoneOSCodeSignContext<string>
という行を
<string>XCCodeSignContext<string>
に書き換える。
5.Xcodeのパッチを書く
[plain]
cd ~/Desktop
vi script
[/plain]
[shell]
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf "\xc3\x26\x00\x00" >> working
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
[/shell]
上記を貼りつける。
[plain]
chmod 777 script
./script
[/plain]
うまういくと以下のように表示される。
[plain]
$ ./script
223+1 records in
223+1 records out
111648 bytes transferred in 0.002678 secs (41692099 bytes/sec)
[/plain]
これでコードサインが必要ないことをXcodeに伝えた。
6.Xcodeでコードサインしないように設定する
Xcodeを起動し、Project>Edit Project Settingsをクリックし”Buid”タブを開く。
“Code Signing Identity”とその中の”Any iOS”の設定を”Don’t Code Sign”に設定する。
iOSのバージョンに合わせて”iOS Deployment Target”の値を変更する。
これでCode Sign error: The identity ‘iPhone Developer’ doesn’t match any valid certificate/private key pair in the default keychainというエラーはでなくなる。
7.次のコードを実行する
[plain]
mkdir /Developer/iphoneentitlements401
cd /Developer/iphoneentitlements401
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
[/plain]
8.iPod touchをつなぎ、Xcodeを立ち上げる。Window>Organizerをクリックし、デバイスを選択する。そして”Use for development.”をクリックする。provisioning website loginを求められるがcancelをクリックする。
これで実機で動作するようになったはずである。
Error from debugger: The program being debugged is not being run
というエラーがでる場合の対処:
Project > New Build Phase > New Run Script Build Phaseを開き、windowに次のコードをコピペする。
[plain]
export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" –entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi
[/plain]
参考:
Developing for a Jailbroken iPhone A to Z (iOS 4.0.1) « alexwhittemore.com
当ブログの編集者の方々へ。
SyntaxHighligherというプラグインを導入しました。
記事中のコードの整形やハイライトが簡単にできます。
使い方:
[言語名]code here[/言語名]
などのように言語名で囲ってください。
・使用可能な言語は下記参照
SyntaxHighlighter:Brushes – Alex Gorbatchev
参考:
WordPress › SyntaxHighlighter Evolved « WordPress Plugins
Mac上でiPod touch用のアプリケーションの開発を行おうと思っても、iPod touchではarmというCPUアーキテクチャを使っているため、x86アーキテクチャを使っているMacなどではiPod touch用のオブジェクトコードを出力することができません。
しかし公式SDKの中に含まれるgccコンパイラを使えば、iPod touch向けコードを生成することができます。
まずApple公式ページよりiOS SDKをダウンロードします。
そして次のコマンドを実行することでiPod touch用にソースをコンパイルすることができます。
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv6
– isysroot/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -o hell o hello.c
なお、-frameworkオプションも使えるため-framework Foundationという風にオプションを追加すればObjective-Cのソースもコンパイルすることができます。
iPod touch上にGCCをインストールし、C言語の開発ができるようにしましょう。
1.Cydiaの下部にあるタブでManage(管理)をタップし、SettingsでDeveloperを選択する。
2.Searchで「Gnu C compiler」「iPhone tool chain 2.0」「ldid」「fake-libgcc」をインストールする。
3.必要ファイルを追加する
http://rapidshare.com/files/66800884/lib.rar
lib.rarをダウンロード、解凍する(passはaksblog.co.nr)。
そして、下記の3つのファイルを/usr/libにコピーする。
以上でiPod touch上でC言語のソースファイルをコンパイルできるようになります。
ただgcc hello.cのようにするとerror: stdio.h: No such file or directoryと言われるためgcc -I /var/include/ hello.c でヘッダファイルがあるディレクトリを指定します。(symlinkを貼れば解決?)
脱獄したらまず基本的な以下のアプリケーションをインストールしましょう。
SBSettingsとOpenSSHはCydiaからインストールできます。
MobileTerminalはCydiaからインストールできるものだと、起動後すぐクラッシュするなどのバグがあるので最新のバージョンを手動でインストールします。
SBSettingsはいろいろな機能拡張の設定や、sshやwifiなどのon/offを切り替えられるアプリです。ステータスバーをスライドすることで起動します。
インストール方法:
1.Cydiaを起動する。
2.Searchアイコンをタップする。
3.検索窓にSBSettingsと入力する。
4.検索結果のSBSettingsをタップする。
5.画面右上のInstallをタップする。
6.画面右上のConfirmをタップする。
open-sshはMacなどからのssh接続をするために導入します。
インストール方法:
SBSettingsと同じようにインストールする。
MobileTerminalはiPod touch上で動作するTerminalです。
インストール方法:
1.以下のリンクからzipファイルをダウンロードする。
Download
2.ダウンロードしたzipファイルを解凍する。
3.解答してできたTerminal.appを端末の下記ディレクトリにscpなどでコピーする。
コピー先 ディレクトリ
/private/var/stash/Applications
4.sbsettingでrespringする。
これで基本的なアプリを導入することができました。
あとは必要になりしだい追加していきましょう。
参考:
Cydiaの使い方(超初心者編) « modpod.jp
[JailBreak] MobileTerminal v426 (iOS 4・iPad で 起動可能) | Apple Voice
Jailbreakとはセキュリティホールを突くなどの方法でゲーム機や情報端末などのコンピュータに設けられた制限を取り外し、製造者や管理者の意図しない方法でソフトウェアを起動できるような状態にすることである。
Jailbreakするとappleから許可を得ていないアプリケーションもCydiaからインストールして、実行できるようになる。
そこで、iPhone、iPod touch、iPadをJailbreakする方法を説明する。
有名なjailbreakソフト一覧:
今回はこの中のGreenpoi0nを使用した。
1.まず以下のリンクからGreenpois0nをダウンロードする。
2.Greenpois0nはiOSのバーションを4.2.1にしなければならないため、それ以外のバージョンである場合は復元か更新を行う。
iPhone 3GS | iPhone2,1_4.2.1_8C148a_Restore.ipsw |
iPhone 4 | iPhone3,1_4.2.1_8C148_Restore.ipsw |
iPod touch 2G | iPod2,1_4.2.1_8C148_Restore.ipsw |
iPod touch 3G | iPod3,1_4.2.1_8C148_Restore.ipsw |
iPod touch 4G | iPod4,1_4.2.1_8C148_Restore.ipsw |
iPad | iPad1,1_4.2.1_8C148_Restore.ipsw |
3.ダウンロードしたGreenpois0nを起動する。
4.iOSデバイスがUSBで接続しているのを確認したらJailBreakをクリック
6.脱獄が終了すると、ホーム画面にLoaderというアプリが追加されているはずで、これを起動する。
7.Cydiaアイコンをタップし、続けてInstall Cydiaをタップする。ネット経由でダウンロードするので無線はオンにしておく。
8.インストールが完了すると、ホーム画面にCydiaアイコンが追加される。
9.Loaderはもう不要なので、Loaderを消す。Loaderを起動し、Optionsをタップし、Remove Loader.appをタップする。
参考:
iPhone / iPod touch / iPad iOS 4.2.1 対応脱獄ツール “Greenpois0n RC6.1 for Mac” | Tools 4 Hack