2010/11/30

[gNewsFeed]appleに提出

iPadして初となる、gNewsFeedをappleに提出しました。

審査早く通ってくれないかなと。

2010/11/29

[mac]OS X 10.6でQuickTime 7もインストールできる真実

昔のQuickTimeをインストールできないのかなーっと模索していたところ。

Snow Leopardにして、不便だな〜と思っていたQuickTimeだけど、Mac Fanを読んでいたら、QuickTime 7と共存できることを発見した。

via:Snow Leopardでは、QuickTime XとQuickTime 7を共存できる

で、実際のところ、どうやって、共存させるのかというと、snow leopard購入時についていたCDにオプションインストールという項目があるので、そこから、QuickTime 7がインストールすることができました。

2010/11/28

[iOS][Objective-C]各種アイコンの設定について

iPadのアプリをリリースするに当たって、アイコンをどうするのかなーっと悩んだので、リファレンスで調べることにしました。

Technical Q&A QA1686の
App Icons on iPad and iPhone
に各種設定方法が書いてありました。

これで、アイコンの設定に困る事はなさそうです。

2010/11/27

[本][C]新C言語入門 スーパービギナー編

読了

新C言語入門 スーパービギナー編 (C言語実用マスターシリーズ)
林 晴比古
ソフトバンククリエイティブ
売り上げランキング: 131,709

Cとはどのような言語か
どうやってプログラムを作るか
Cプログラミングの8つのステップ
まず何か出力させてみよう(出力の方法)
データを置いておく場所を確保しよう(変数)
数字の計算を行なわせてみよう(演算)
データをキーボードから入力させよう(入力)
ある条件の時だけ処理させよう(条件文)
何度も繰り返して処理させよう(繰り返し文)
よく使う処理は関数にしよう(関数)〔ほか〕

via:目次

大学2年の時に買って、少し読んで、それ以来まったく読んでいなかったのですが、本棚を整理している時にたまたま発見したので、読んでみる事に。

当時、思い返してみると、プログラムのプの字も知らなかったので、丁度、わかりやくすくてよかったのかもしれないが、今読んでみたら、全然、役不足。
少しでもプログラムをかじったことのある方なら少し物寂しいかもしれない。

新版 明解C言語 入門編の方が本当の意味で入門書としていいと思いました、

今、アマゾンみたら、さらに改訂版がでてた。

後、本書を読んで、疑問を感じたのは、この部分。

本書:p57
3番目のdtを用いたい
というときには、
dt[3]

これは、違っている、上の場合、正確には、4番目を指定しており、3番目を指定したい場合は、dt[2]を使うべき。

スーパービギナーと謳っているので、ここの部分を間違えてしまうと読者に誤解を与えてしまいかねないので、気をつけた方がいいのかも。

2010/11/26

[Objective-C][iOS]backgroundの処理をキャンセルする方法

iPadをiOS4.2にバージョンアップしてから気がついたのですが、アプリを一度、終了し、また起動させると、なぜか途中から開始されているみたいなので、原因を探ってみたところ、どうやら、バックグラウンドでアプリが走り続けてしまっているようです。

で、どうすれば、もう一度、リセット(ないし、リロード、再スタートと呼べばいいのだろうか?)とするには、Info.plistで、UIApplicationExitsOnSuspendをYESに設定すればいいみたいです。

iOS Application Programming GuideのExecuting Code in the Backgroundと同じく、iOS Application Programming GuideのOpting Out of Background Executionを読んでわかりました。

ただ、実際、Info.plistのキーは、「Application does not run in background」という名前になるようなので、そこだけ注意が必要なのかなと。

2010/11/25

[iOS][Objective-C]NavigationBarの大きさについて

タイトル通り、NavigationBarの大きさについて知りたくなったので、UINavigationViewControllerのインスタンス変数宣言時にコールする-(id)initWithRootViewController:(UIViewController *)rootViewControllerメソッドの内部で下のソースを使ってデバッグを行った結果、44.000という結果を得ました。

NSLog(@"NavigationBarのデフォルト値:%f",self.navigationBar.frame.size.height);

参考までに。

2010/11/24

[iPad]iOS 4.2にバージョンアップ

しました。アプリがフォルダ管理できるのが、いいですね。

OS 2から3にアップする時とは違って無料でできるのもいいですよね。

今、思ったのですが、どうして、あのとき、有料にしたのだろうか?

まー別に気にしなくてもいいんだけど。

それに伴って、Xcodeもバージョンアップ。

2010/11/23

いつのまにか、28歳に

なっていました。

時がたつのは早いなー。

こうしていつのまにか、おっさんになっていくのだろうか?

はぁ〜。。。

2010/11/22

[IT用語] WWANとは

Reachabilityをサンプルコードを読んでいる時に、WWANという言葉がでてきたのだが、そもそもこの言葉の意味って、

WWAN, which stands for Wireless wide area network, is a form of wireless network. A wide area network differs from a local area network by the technology used to transmit the signal and their size. Wireless networks of all sizes deliver data in the form of telephone calls, web pages, and streaming video.

via:Wireless Wide Area Network

あー、そもそも、WWANって、ワイアレスネットワークのことだったのかー。

省略されていたから、わかりにくかったー。

納得、納得。

2010/11/21

[iOS][Objective-C]設定画面を設定

頻度が多くない設定を行う場合は、設定画面アプリから行うことが多いのですが、実際に、その実装方法を調べました。

1.「Resource」の上で右クリックして、「追加」→「新規ファイル」を選択
Photobucket
2.「Resource」→「Settings Bundle」を選択
Photobucket
3.ファイル名は、「Settings.bundle」のまま
Photobucket
4.「Root.plist」を次のように設定を行いビルドをすればオッケー
Photobucket

実際に、設定アプリではこのようになります。
Photobucket
Photobucket

プロジェクト内のソース(Objective-C)で設定した値を取得したい場合は、このようにすれば取得することができます。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults stringForKey:@"kSettingCountryKey"] == nil){
NSLog(@"デフォルト値が設定されていません。");
}

kSettingCountryKeyは、Root.plistで設定したKey値です。

取得しているメソッドにstringForKeyを使っていますが、値によってコールするメソッドも変わってきます。

詳しいメソッドは、NSUserDefaultsクラスで確認することができます。

if文を使ってnilかどうかを判定している理由は、設定アプリを通して一回も設定していない場合、返す値がnilとなるためです。
(実際に検証済み)

後、実機でテストを行う場合は、いったん、テストアプリの削除を行い再インストールする必要があります。

今回、リストから一つ選択する設定方法を採用しましたが、他にも設定方法があって、それについては、Settings Application Schema Referenceで確認することができます。

また、全体の流れは、iOS Application Programming GuideのImplementing Application Preferencesで確認しましたが、後半で紹介されているサンプルの仕様が古いので、Settings Application Schema Referenceで各設定方法の仕様を確認する方が最短だと思います。

是非、参考に。

2010/11/20

[sqlite3]日本語入力について

mac os xのターミナルからsqliteに接続し、日本語の情報をテーブルに登録しようとしたところ、どうやらエラーになってしまうようです。

そもそも入力自体ができないっぽい。

そこで、方法を調べたところ。

対応策としては、CSVファイルにして.importコマンドで取り込むと行けるらしい。

via:sqlite3へ日本語データを入れる

で、実際に上の方法で試したところ無事に日本語情報が登録できました。

一件落着、落着。

2010/11/18

[Objective-C][iOS sdk]Indicatorの大きさ・位置を変更する

UIActivityIndicatorViewを使って、Indicatorの大きさや位置を変更したい時がありました。

で、具体的にどうするかってことですが、UIActivityIndicatorViewは、UIViewを継承しているのでframeプロパティにCGRectMake関数を使って設定することによって変更することができます。

2010/11/17

[jQuery]$()で指定した場合にindexが付与される件

今、作っているiPadアプリケーションで、jQueryを導入しようかなと画策しているのですが、その際に、$()で指定したエレメントが複数存在した場合、自動的にindexを付与してくれるようです。

というのも、Selectors/API/jQueryの基本フィルタの部分で、indexによる要素選択があったので、頭の片隅においておくと後で便利かなと思い、1エントリー設けました。

2010/11/16

[PHP]正規表現 半角英数字チェック

以前、ゲームアルゴリズムレシピ for JavaScriptを買ったときに、サーバーサイドの処理を組む必要があり、本書に記載されているPerlではなく、PHPで組んだのですが、その際に、正規表現を使ったので、そのやり方をさくっと紹介

処理の内容は、半角英数字以外のものが変数に含まれていた場合、エラーにするという処理です。

if(!ereg("[0-9a-zA-Z]", $new_name)){
//半角英数字以外(エラー)だった場合の処理を記述

}

上の処理は、変数new_nameにereg関数を使って中身をチェックしている処理です。

こうしてまとめておけば次回からさくっと取り出せるので便利です。

参考:詳解 正規表現 第3版

2010/11/15

[Objective-C][iOS][UIWebView]target="_blank"には対応していない件について

タイトルのまんまなのだが、どうやら、UIWebViewでロードしたwebコンテンツ内にtarget="_blank"を記述しても動かないらしい。

プログラムをしていて気づいたのだが、ぐぐった結果、同じ問題に当たった方もいるようです。

UIWebViewは便利だけど、target="_blank"なリンクが拾えない、window.open()でポップアップされるのに対応できない、などの問題がある。

via:UIWebViewから target="_blank" や window.open() のページを開く方法

どうやら、target="_blank"の記述をはずしたほうが早そうだ。

2010/11/14

[本]しあわせ漢字を贈る 男の子の名前

子供が男の子だったことがわかったので、こちらを購入

●第1章 押さえておきたい 名づけの基礎知識とポイント
●第2章 美しい響きを決め手に「音」から考える
●第3章 意味を大切に「漢字」から考える
●第4章 願いを込めて「イメージ」から考える
●第5章 こだわりの「画数」から考える
●第6章 みんなの名づけエピソード

via:目次

占いとか、運勢とか気にしたくないのだが、考えた名前の運が悪かったりするのもなんなので、試しに購入。

案の定、考えた名前の運勢が悪く、再度、考え直しました。

別の角度で勉強になったのは、ある漢字が全然、想像もつかないような読み方をするということ。

おかげさまで、漢字の知識が広がったのでよりいい名前を考えることができたと思っています。

さて、1月生まれる我が子は果たしてどうのような子に育つのでしょうか?

2010/11/13

[本]金持ち父さんのサクセス・ストーリーズ -金持ち父さんに学んだ25人の成功者たち

読んだには、読んだが。。。

金持ち父さんのサクセス・ストーリーズ -金持ち父さんに学んだ25人の成功者たち
ロバート・キヨサキ シャロン・レクター 春日井 晶子
筑摩書房
売り上げランキング: 283,321

第1部 ゲームの仕方
第2部 これまでどこにいて、これからどこへ行くのか
第3部 新たな目標
第4部 どんなに若くても成功できる
第5部 ビジネスの新しい方法
第6部 人生を変えた出来事

via:目次

成功した25人の事例が掲載されているが、これを読んだからといって、成功するのかと聞かれれば、まず、そんなことはないし、本書の事例の90%以上が不動産投資なので、同じ方法が、ここ日本でも通用するのかと聞かれれば、それもまた微妙〜〜〜。

しかも、サブプライム崩壊前に出版されているので、その後、どうなったのかまた改めて検証してみたいところ。

結局、この本を読んだからと言って、何も変わらない気がする。

きっと、金持ち父さんするシリーズを読んで、成功した人っているのー??という読者からの疑問に答えるために存在している本のような気がした。

しかも、成功事例は、ネットで公開すればいいのではないかと思ってしまった。
そう思うと、定価分の価値はあるのだろうかと疑問を感じざるを得ない一冊だった。

2010/11/12

[C言語]htonlとは

何なのだろうか?気になって調べた。

すべてが理解できたわけではないが、下記を読むことによって、その一端が理解できた。

htonlは32ビット,htonsは16ビットのホストバイトオーダをネットワークバ イトオーダに変換する.これはネットワークに流すデータ形式がビッグエン ディアンということが決まっているからである.

via:bind()

ここでいう、ネットワークバイトオーダーの定義とは、

ネットワーク上で2バイト以上のデータ量を持つ数値データを転送するときに使われる、各バイトの送り順。

via:タイトルを入力

ふむふむ、では、ホストバイトオーダとは

電子計算機が内部で用いる、複数バイトからなるデータ列のデータの並び順のこと。「H形式」ともいう。対語はネットワークバイトオーダー。

via:ホストバイトオーダー

ってことは、内部で利用しているデータ列の並び順を、ネットワークで利用できるようなデータの並び順に変換するということなのですね。

iPadアプリを作っていなければ、決して、めぐりあうことがなさそうな関数だなーっと思うと、ホント、クライアントアプリは色々と勉強になるなーっと。

2010/11/11

[C言語]AF_INETとは、

Reachabilityで出てきた、AF_INET。

果たして、これって??

予想だと、マクロだと思うんだけど。。。

ぐぐった結果、的中

このプログラムでは例えば「AF_INET」という定数を使用していますが、「AF_INET」は
「/usr/include/sys/socket.h」というヘッダー・ファイルに以下のように定義されています。

#define AF_INET 2

このように「AF_INET」という定数を「2」と定義した場合、プログラム内で「AF_INET」という定数が登場すると、その定数はプログラムが実際コンパイルされる前の段階で「2」に置き換えられます。

via:未題

よかった。よかった。

2010/11/10

[C]sockaddr_in構造体とは

昨日に引き続き、Reachabilityのアプリを読解しているのですが、ソース内にどこにも存在しないsockaddr_in構造体を発見しました。

調べたところ、

Cの宣言
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};

メンバ
sin_family
アドレスファミリー(通常はAF_INET(2)を指定)
sin_port
ポート番号(htonsでネットワークバイトオーダーに変換しておく)
sin_addr
IPアドレスを格納したin_addr構造体
sin_zero
0で初期化しておく

via:sockaddr_in構造体

あまりにも綺麗にまとまりすぎていたので、ほぼ全文引用させていただきました。
構造体の中に、構造体が定義されていて、調査を行うとさらにめんどくさそうなので、一旦ここでストップさせます。

しかし、本当に綺麗にまとまっていたなー。このように見やすいブログを書いていきたいものであると、ふと思ってしまった。


2010/11/09

[C]bzero関数とは

今、Reachabilityというサンプルアプリを見ているのですが、その中に、bzero関数というのが、あって、そもそもこれって何?

これにはbzero(char *src, int bytes)関数を利用します。bzero()関数は第一引数のデータ構 造を第二引数分で与えた数分のバイトだけ0に埋めるものです。

via:http://research.nii.ac.jp/~ichiro/syspro98/client.html

ということなので、例えば、
struct sockaddr_in localWifiAddress;
bzero(&localWifiAddress, sizeof(localWifiAddress));

の場合、sockaddr_in型の構造体である変数localWifiAddressに、localWifiAddressの大きさ分だけ0を埋めよという指示を出しているだと納得しました。

C言語はたくさん関数があって、しかも、その使い方が難解なので、そのつど、そのつど調査していくことが大事なんだと、いまさら実感。

2010/11/08

[PHP]ファイルに書き込み

前回、ファイル入力処理について書いたので、今度は、ファイルに書き込む方法について。

$fp = fopen('data.txt', 'r+') or exit('error!');
flock($fp, LOCK_EX); //有効なロック
fwrite($fp, '追記したいデータ');
flock($fp, LOCK_UN);
fclose($fp);

via:PHPでファイル入出力

これでもいけちゃうようなのですが、実際、fwrite($fp, '追記したいデータ')をfputs($fp,"書き込む文字列")にしても正常動作しました。

後、最後に、fclose関数を絶対にコールするので、flock($fp, LOCK_UN)を省略して実行しても特に問題は発生せず。

また、オープン時のモードですが、具体的な値については、こちらから確認を行うことができます。

これぐらい押さえておけば、ファイルの書き込みに関しては、問題はないのかなーっと

2010/11/07

[sqlite]sqlite3_exec()について

複数のsql文を一気に実行するのに、sqlite3_exec()を使おうと検討していたところ、ちょっと不便利だなーっと思うところがあったのでメモ代わりに。

sqlite3_exec()そのものの仕様なので、仕方がないといえばそれまでなのだが、定義を読んでみると、どうやら、sql文が実行される度に、毎回、毎回、コールバック関数が呼ばれること。

つまり、select文を発行した場合、結果が2件あった場合、2回コールバックが発生してしまうこと。

しかも複数のsql文の場合、どのsql文からのコールバックなのか、判断できないのがやっぱり微妙。

sql文を実行するたびにコールされるのは、いいのだが、そのときに、実行されたsql文がわかると便利だなーっと思う今日この頃。

2010/11/06

[css]ベンダープレフィックス

タイトルの定義を知らなかったので、

ベンダープレフィックス(接頭辞)とは、ブラウザベンダーが独自の拡張機能を実装したり、草案段階の仕様を先行実装する場合に、 それが拡張機能であることを明示するために付ける識別子のことです。

via:ベンダープレフィックス

なるほど、ブラウザ毎に、cssをわけたい場合に、使う機能なのね。

ただ、これを読んで思ったのは、ブラウザ毎に完全に、cssをわけたい場合は、一回一回、これをつけないと思うとやはりちょっとかったるいかもしれない。

そこは使いようか。。。

後、同エントリーを読むと、webkitとして、safariとchromeで一緒になってしまっているが、webkitにも微妙なバージョンの違いなどがあるので、そこは平気なのだろうか、気にしてしまう。

とりあえず、言葉の定義が理解できたので、よかったのかなと。

2010/11/05

[本]正規表現ポケットリファレンス


第1章 正規表現概説
第2章 代表的なメタキャラクタ
第3章 ちょっと踏み込んだ話
第4章 処理系別ガイド
第5章 正規表現レシピ集
第6章 プチ・プログラム集

via:目次

正規表現はちょくちょくお世話になるミニ言語なのですが、前回紹介した正規表現 第3版だと重たくて、しかも、ほしい情報がすぐに取り出しにくいので、今回、この本をゲットしたのだが、軽くて各言語における正規表現を適用方法も書いてあるしさらにちょっとしたケーススタディーも書いてあったので、重宝してます。

JavaScriptにおける事例もあったのが、さらにポイントって感じ。