スキップしてメイン コンテンツに移動

投稿

iPhoneアプリを作る上でのモヤモヤを解消したい

フレームワークなんか使わなくてもガリガリコード書いちゃえばいいんだけど、なんか損してるんじゃないかと気になるのですよ。 でもフレームワークが自動的に色々やってくれてるのはありがたいのだけれど、何をやっているのか気になってモヤモヤしてしまう、というジレンマがあったりなかったり。 という訳でまずは、Xcode で Empty Application と Single View Application (Storyboard付き)で何か違うのかを調べてみた。 単純にコードの差分を比較すると以下の違いがあることがわかる。 追加されているファイル: ViewController.h ViewController.m MainStoryboard.storyboard ViewControllerはUIViewControllerからの派生で、viewDidLoadとdidReceiveMemeoryWarningだけがオーバーライドされただけのひな形。 MainStoryboard.storyboardは、ViewControllerとFirstResponder, Exit ViewControllerにはUIVIewが1つだけ配置されている。 ここまでは、ひな形が追加されているというだけなので、特にモヤモヤはなし。 次に差分のあるファイル:  app-info.plist  AppDelegate.m app.xocdeproj/project.pbxproj app.xocdeproj/project.xcworkspace/xcuserdata/cozy.xcuserdatad/UserInterfaceState.xcuserstate app.xocdeproj/xcuserdata/cozy.xcuserdatad/xcschemes/test.xcscheme  app.xocdeproj/xcuserdata/cozy.xcuserdatad/xcschemes/xcschememanagement.plist とりあえず、app.xcodeproj中身については脇に置いておこう。 app-info.plistは、以下の2行が追加されている。     <k...

V8 JavaScript Engine を Mac OS X でビルドする

以下を参考に、V8をビルドしてみる。 http://code.google.com/intl/ja/apis/v8/build.html 0. ツールの確認 $ gcc --version $ svn --version $ python -V $ scons --version Xcodeを既にインストールしているなら、svnとpythonとGCCはある筈とのこと。 で、sconsはなかったのでインストール。 $ sudo port install scons (MacPortも要インストール) 1. ソースコードを入手。 http://code.google.com/p/v8/ の ”Source” の説明にしたがってDL。 $ cd ~ $ mkdir v8-work $ cd v8-work $ svn co http://v8.googlecode.com/svn/trunk v8 2. ビルド $ cd v8 $ scons library=static arch=x64 3. サンプルshell をビルド $ samples $ gcc -I../include -lstdc++ shell.cc ../libv8.a -o v8-shell 以上。

Eclipse WTP で Servlet を作成する

Tomcat6 の設定ができたので、今度はServletを作成してみます。 1.プロジェクトの作成 [File] -> [New] -> [Dynami Web Project] プロジェクト名を入力して [Finish] ボタンを押す。 2.Servletの作成 作成したプロジェクトを選択して、[File] -> [New] -> [Servlet] パッケージ名とクラス名を入力して[Finish]ボタンを押す。 srcディレクトリの中に MyServlet.java が作成される。 3.コード編集 MyServlet.java をエディタで開いて編集。 ここでは、とりあえず doGet(...) メソッドに以下の1行を追加。 response.getWriter().println("Hello, Servlet!"); ファイルに保存。 4.実行 作成したServletを選択して [Run] -> [Run As] -> [Run on Server]を選択。 サーバーを選択して[Finish]ボタンを押す。 以上。

EclipseにTomcatを設定する

Snow LeopardのEclipseにTomcat6を設定してみる。 1. Tomcatのインストール http://tomcat.apache.org/からTomcat6.0.32をダウンロード。 apache-tomcat-6.0.32.tar.gz をホームに展開。 2.Eclipseの設定 Eclipse下のServerビューで[New]->[server] Apache->Tomcar v6.0 Server のパスに展開したディレクトリを指定。 3.実行 EclipseのServerビューで追加したサーバーを選択して、Startボタンで開始。 以上

Git で Proxy 超え

今更ですが、GitでProxyを越えるための設定をメモしておきます。 ちなみには、この手順は Ubuntu 10.04 の場合です。 1. corkscrew をインストール $ sudo apt-get install corkscrew 2. スクリプト作成 $ vi ~/bin/git-proxy.sh #/bin/bash CORKSCREW=`which corkscrew` $CORKSCREW <proxy-server> <port-number> $1 $2 スクリプトはパスの通っているディレクトリに作成。 3. git コンフィグ設定 $ git config --global core.gitproxy git-proxy.sh 以上。

Twitter Bot を作ってみる <その1>

Webアプリの素人である私が Google App Engine で twitter bot を作ろうとしている過程の記録です. 1. Google App Engine SDKのインストール. 2. Twitter API のお勉強. この記事 がとても参考になりました. 3. python-twitter のダウンロード. 4. simplejson のダウンロード. (python-twitterが依存している) 5. 試しに、ハマコーさんのタイムラインを取得してみます. import twitter api = twitter.Api() statuses = api.GetUserTimeline('555hamako') for s in statuses: print s.text しかし、エラー! File "~/twitter-bot/twitter-bot.py", line 6, in api = twitter.Api() File "~/twitter-bot/twitter.py", line 1332, in __init__ self.SetCache(cache) File "~/twitter-bot/twitter.py", line 2024, in SetCache self._cache = _FileCache() File "~/twitter-bot/twitter.py", line 2265, in __init__ self._InitializeRootDirectory(root_directory) File "~/twitter-bot/twitter.py", line 2325, in _InitializeRootDirectory root_directory = self._GetTmpCachePath() File "~/twitter-bot/twitter.py", line 2319, in _GetTmpCachePath username = self._GetUsername() Fil...

AndroidのOpenGL API

AndroidでOpenGLを使う場合、パッケージ: javax.microedition.khronos.opengles に使えるAPIがinterfaceとして定義されています。 ソースコードのパス: ./frameworks/base/opengl/java/javax/microedition/khronos/opengles/ の中に GL.java GL10.java GL10Ext.java GL11.java GL11Ext.java GL11ExtensionPack.java というようにAPIが定義されています。 以上。

UbuntuでOpenGL

Ubuntu 9.04 で OpenGL アプリでも作ろうかと思い、とりあえず 赤本のサンプルコード をダウンロード。 何も考えずにコンパイル! $ gcc aaindex .c 当然エラー! error: GL /glut.h: No such file or directory glut.h が無いというので、 Ubuntu のパッケージマネージャから glut で検索すると freeglut 3 freeglut 3- dev freeglut 3- dbg の3つのパッケージをインストールする。 再度、コンパイル! $ gcc aaindex .c やはりエラー undefined reference to ` glutSetColor ' ・・・ リンク時に API が見つからないとのことなので $ gcc - lglut aaindex .c これでコンパイルは通過。 続いて実行してみる。 $ ./a.out またもエラー get fences failed: -1 param : 6, val: 0 freeglut (./a.out): ERROR: Internal error in function fgOpenWindow X Error of failed request: BadWindow (invalid Window parameter) Major opcode of failed request: 4 (X_ DestroyWindow ) Resource id in failed request: 0x0 Serial number of failed request: 29 Current serial number in output stream: 32 このエラーメッセージで検索してみると ここ が引っかかりました。 どうやら glx モジュールと OpenGL をサポートしているビデオドライバが必要らしい。 パッケージマネージャで検索するが、めぼしいものは見つからず。 さて困った。 と思ったら、 こちら によるとglxgearでOpenGLが使える環境かどうかわかるというので $ glxgear を実行してみると、見事にギアが回っています。 なんだ、使えるじゃん! ということは、...

SpriteMethodTestを動かしてみる

GoogleのChris Pruett氏が作成されたSpriteMethodTestをエミュレータ上で動かしてみた。 http://www.atmarkit.co.jp/fwcr/rensai2/google_int_01/01.html はっきり言ってエミュレータでは意味がありませんでした。 Canvasなら30FPSでているのに、OpenGLを使った場合は9FPSしかでません。 やはりハードがあってなんぼですね。

Ubuntu で Eclipse がやたら重いと思ったら

Ubuntu 9.04 上でEclipse 3.5を使おうとしたのですが やたら重くて使いものにならないなぁ、と思っていたら・・・ どうやらUbuntuさんは、デフォルトのVMとして GCJ を 使っているためのようです。 JAVAのVMをSunのJVMに切り替えると結構動作が軽くなりました。 切り替えるには、 $ sudo update-alternatives --config java でsunの名のついたjavaを選択します。 情報源は こちら 。

Ubuntu で emacs の Ctrl + Space で Mark set できない問題

Ubuntu 9.04 のデフォルト環境で emacs を使っているとき、 Ctrl + Space でマークをセットしようとすると SCIM(IME) が 立ち上がってマークができません。 Ctrl + @でもマークを設定できるバインディングになっているみたいですが 長年、Ctrl + Space を使ってきたので、SCIMを起動させなくする方法を調べました。 1.[System] -> [Preferences] -> [SCIM Input Method Setup]を起動。 2.左のリストから、[FrontEnd : Global Setup] を選択。 3.[Hotkeys] の [Trigger] の [...] ボタンを押して、Select the trigger keys を起動。 4."Control + space" を選択して、[Delete] ボタンを押す。 5."Control + space" が消えたら、[OK] 6.更に SCIM Input Method Setup も [OK] で閉じる。(ダイアログが出ても[OK]でOK) これで、スッキリしました。

Android x86 をビルドする (パッチを当てる)

ビルドは通ったものの起動しないので、いろいろと原因を調べていたら ここ のパッチで片付く問題が多いようなので、面倒くさがらずに当てることにしました。 まず、パッチを当てるコマンドの使い方です。 $ patch -p1 オプションは、patch ファイルに書かれているファイルのパスに対して 何個のスラッシュ(/)を外してファイルを探すかというオプションですが、今回ディレクトリ構成はオリジナルのままなので、すべて -p1 で事足ります。 eee_701 のバグ修正. $ cd vendor/asus/eee_701 $ patch -p1 $ cd ../../.. preload-class で起動時にフリーズする問題とマウスを認識しない問題の対策. $ cd frameworks/base $ patch -p1 $ patch -p1 $ cd ../.. alarmコンパイルエラーの修正. これでalarmをenableにできる! $ cd kernel $ patch -p1 $ cd .. $ cd external/e2fsprogs $ patch -p1 $ cd ../.. 以上のパッチを当てて再度ビルド→USBフラッシュ作成すると 無事、起動しました~!

Android x86 をビルドする(カーネル編)

カーネルのビルドですが、特筆すべきことはありませんね。 ITProの記事 、そのままです。 $ cd kernel $ make i386_defconfig ※x86系のデフォルトに設定 $ make menuconfig ※設定編集メニューを起動 以下は必要最小限と思われるものだけです。 ネットワーク関連は省略。 Framebuffer Console は必要に応じてEnable/Disableしてください。 General setup ---> [*] Enable the Anonymous Shared Memory Subsystem Power Management Option ---> [*] Wake lock Device Drivers ---> [*] Misc Devices ---> [ ] Android pmem allocator ※drivers/misc/pmem.cでコンパイルエラーが出るのでチェックを外す Graphics support ---> Support for frame buffer device ---> [*] VESA VGA graphics support Console display driver support ---> Framebuffer Console support ※デバッグ用に起動時のログを表示させる. Real Time Clock ---> [ ] Android alarm driver ※drivers/rtc/alarm.cでコンパイルエラーが出るのでチェックを外す さて、カーネルのビルドも通り、USBフラッシュメモリに焼いて起動させてみましたが・・・ 案の定、途中でフリーズします。 まず最初に怒られるのは、mountdが無いこと。 これは init.rc で mountd を使っているところを vold に置き換えることで解決. 次に、dalvikvm の起動でリセットが掛かり、延々と ZygoteInit が起動と停止を繰り替えす症状が発...

Android x86 をビルドする(フレームワーク編)

以下は、2009/7/22 0:39 に最新 cupcake ブランチのソースコードを取得して作業を行いました. 最新のツリーでは、カーネルがmenifest.xmlから外されているようですので、下記のようにlocal_manifest.xmlにプロジェクトを追加しました。 .reop/local_manifest.xml <manifest> <project name="kernel/common" path="kernel" revision="refs/heads/android-2.6.27" /> <project name="platform/vendor/asus/eee_701" path="vendor/asus/eee_701" /> </manifest> ビルド開始 $ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img ・・・ エラー1個目 build/target/board/Android.mk:35: *** Please rename "vendor/asus/eee_701/Android.mk" to "vendor/asus/eee_701/AndroidBoard.mk". 中止. 対策 ファイル名を変更する $ cd vendor/asus/eee_701 $ mv Android.mk AndroidBoard.mk 参考 http://groups.google.com/group/android-porting/browse_thread/thread/f00cc3e0c7a3b1e1 エラー2個目 Copy: out/target/product/eee_701/obj/lib/libdiskconfig.so -> out/target/product/eee_701/installer/root/system/lib/libdiskconfig.so Copy: -> dirname: オペランド...

repo init の使い方覚書

Androidのソースコード管理ツール repo についての覚書. 使用例 repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake -u URL "URL"にはマニフェストファイルのリポジトリのURLを指定する. 通常は git://android.git.kernel.org/platform/manifest.git を指定する. -b REVISION マニフェストファイルのブランチまたはリビジョンを指定する. どんなブランチやリビジョンがあるかは、 http://android.git.kernel.org/platform/manifest.git を参照. 省略すると"master"になる. 一度作成したrepoクライアントのマニフェストファイルのブランチは repo init -b で変更できる. ただし、変わるのはマニフェストファイルのブランチのみ. ソースコードに反映させるには, repo sync が必要. -m NAME.xml 初期化時にrepoクライアントに作成されるマニフェストファイルのファイル名. 省略すると default.xml になる.

Androidをビルドする(環境設定編)

Androidのソースコードをビルドをしてみます。 手順は、とりあえず下記に従います。 http://source.android.com/download まずは、環境設定です。 私はUbuntu 9.04を使用しますので、Ubuntu Linux (32-bit x86)の設定をします。 まずは、必要なパッケージの確認ですね。 ・Git 1.5.4以降 : これはリーナスさんが作られた構成管理ツールですね。 ・GNU Privacy Guard : これは、いわゆるPGP、暗号化ツールですね。repoが使います。 ・JDK 5.0, update 5以降:言わずと知れた JavaのSDK. JDK 6は互換性に問題ありですって。 ・flex:The Fast Lexical Analyzer. 高速構文解析器生成プログラム. ・bison:YACC 互換なパーサジェネレータ. ・gperf:完全ハッシュ関数の生成プログラム. ・libsdl-dev:Simple DirectMedia Layer のライブラリ一式ってことですかね. 何に使っているのでしょうか? ・libesd0-dev:Enlightened Sound Daemon - Development files. サウンドですか. ・libwxgtk2.6-dev (optional):wxWidgets Cross-platform C++ GUI toolkit. GL関連? ・build-essential:ライブラリのヘッダファイルとか. 開発に必要なものが一式はいっているようです. ・zip:ご存知、圧縮ツールです. ・curl:HTTP経由で直接ファイルを落とすツール. repoを落とすのに使います. ・libncurses5-dev:画面制御ライブラリ. ・zlib1g-dec:圧縮ライブラリ.開発キット. これらのパッケージをインストールするには、下記のコマンドを実行します。 $ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g...

UbuntuでCtrlとCapsLockを入れ替える

UbuntuでのCtrlキーとCapcLockキーの入れ替え方法です。 1. メニューの【システム】→【設定】→【キーボード】を選択する  キーボードの設定ダイアログが表示されます。 2.【レイアウト】タブを選択し、【レイアウトのオプション】ボタンを押す  キーボード・レイアウトの付書んダイアログが表示されます。 3.リストの中から【Ctrlキーの位置】を開いて【Swap Ctrl and CapsLock】をチェック 以上 Step1までは分かっても、Step2でつまづく方がいらっしゃるようです。

MBRの修復

UbuntuとかAndroidとかをいじってるときに、 間違えてMBRを書き換えてしまって、GRUBのErrorで止まって Windowsが起動できなくなってしまった場合、 一番簡単に復帰できると思われる方法を書き残しておきます。 1. Ubuntu 9.04 をCDブート  Ubuntuとかいじってる人なら必ず持っていますよね?  持ってない方は、  「週刊アスキー別冊 さくさくUbuntu! 新バージョン9.04 CD-ROM付き 」  なんかを買って来てください。 2. ターミナルを起動し、下記のコマンドを実行  # sudo dd if=/usr/lib/syslinux/mbr.bin of=/dev/XXX  XXXは、Windowsのブートドライブを指定します。 以上。 簡単でしょ?