壊れたメガネ

ホッチキスの達人の意識の高いブログ。

向き不向きについて

自分の狭い了見で向き不向きについて考えてみた。

ある物事に対し他人から「向いていない」と指摘を受けて、「テメーに何がわかるんだ糞野郎」と思えるなら向いているんだろうと思う。
その他人というのがその物事に自分より秀でていたり、あるいは尊敬している人であるほど、「向いていない」という説得力は増すが、そういう人からの指摘を受け止めて尚、「テメーに何がわかる」と思えるなら、よりいいんじゃなかろうか。

またこのようにも思う。
ある物事に対して自分でモチベーションをコントロール出来ないなら、多分その物事には向いてない。
これは id:senahate さんのブログを見ていて感じたこと。
つまり、やる気でないんだったら無理してまでやらないほうが幸せだよなということ。
こんなことを言うと偉そうで大変恐縮なんだけど、 id:senahate さんはこの意味でプログラミングとか彼のブログのテーマについて向いているんだろうと思う。
一々だれかにおだてられないと何も出来ないなら、それは向いてるとは言い難いよね。

php-usb について

停滞していた php-usb を現状で一区切りつけることにした。
php-usb の現状の APIlibusb のプロトタイプをそのまま PHP に持ってきたという何の芸もない代物。
USB プリンタを無理やり動かしたりしてみた
一応やりた(い|かった)こととしては、

  1. メジャーな Linux ディストリビューション向けのバイナリパッケージ(rpm, deb)を用意する
  2. ドキュメントづくり、出来れば英語。
  3. OO なインターフェースを用意する
  4. USB の様々な Device Class に対する抽象クラスを用意する
  5. 色々な example の用意

1,2,3についてはやれば出来るレベルで、このあたりまではこの3ヶ月以内に実現したい。
英語でのドキュメント作りについては「てんきゅー」とか言って失笑を買うレベルなのでドーンと行こうと思う。

4については100ヘクタールぐらいの大風呂敷を広げた感じなのでなかったことにしようと思う。
このあたりは、 php-usb のユーザーに期待したほうがいいことなのかもしれない。
あるいは、このプロジェクトに関わりたいっていう変人の出現に
あるいは、このプロジェクトに関わりたいっていう変人の出現に
あるいは、このプロジェクトに関わりたいっていう変人の出現に

5については、「色々な」っていうのが4と同じく大風呂敷な感じがある。

6月の下旬に php-usb についての質問をメールで頂いたことを今朝になってようやく気づき、「うおおーー!”!」とか言いながら Google 翻訳で清書(?)を繰り返してた。

php-usb を一区切りつけて何がやりたいかというと、 AVR をメインにマイコンの勉強がしたい。

先週 id:margaman に飲みに連れて行ってもらって、あるお店に入った。
そのお店はバーっていうのかよくわかんないんだけど、飲み物しか出ないようなお店で、その日お店の面倒を見ていた人、マスターって言えばいいのかな、その彼と僕ら4人の計5人でなんか色々話をした。
実は僕以外の人間がなんかしら音楽やってる人間で、そんな人達に「ハードウェア勉強したいんすよ〜!あ、そうだ!エフェクター作るんで使ってくださいよ〜」とか意味不明な事を烏龍茶飲みながらシラフで言っていた。

そんなわけで電子工作とかマイコンの勉強とかやりたいんだけど、 php-usb を片付けるのが先決。

簡単にこの半年を振り返ってみる

今年やること
http://oasynnoum.hatenablog.com/entry/2013/01/03/082202#yarukotoooo

1月

何もやってなかった。ぼーっとしてた。

2月

あー仕事しないとなーと焦りつつぼーっとしてた。
libusb の PHP バインディング書いてみようかなと思い始める。

3月

一年ぶりに仕事にありつく
通勤で往復3時間とかクソみたいなことになっていたけど、 php-usb バインディングを書きつつ幾つか実験的なことをやってみたりしてた。

4月 5月

自宅で作業を行うようになる。
かなり余裕がなくて何も手につかなかった。

6月

少しづつ時間的余裕が出来るようになる。
下旬あたりから精神的にも余裕ができはじめ、停滞しているプロジェクトをどうしようかと考え始める。

ウォーキング

ついさっき朝6時頃に作業に一区切りつけた時に一時間のウォーキングを日課にすることを思い立った。
その時間帯はまだ涼しかったし、晴れてたので早速ウォーキングに出ることにした。
最初はジョギングかと考えていたけど、いきなり一時間もジョギングをやれば確実に色々と死ぬのでウォーキングに切り替えた。

思いつきで出たので、正しい歩き方とかもあるのだろうけど、そういう予備知識は無し。
とりあえずかかとを太ももに引き付けるように足を上げ、かかとから足を地面に置くように心がけた。
歩きながら考え事なんかできるだろうと思っていたけど、それに意識が集中してたのでかなわず。

小禄バイパスを豊見城向けに歩いて、30分経った所で折り返し。瀬長島の入り口までは歩くことが出来た。
ただ小禄バイパスはその時間帯でも結構交通量あって新鮮な排気ガスを胸いっぱい吸い込むことになる。
5時とか早い時間でもいいな。

iOS プログラミングメモ; HTTP を扱う

概要

HTTP リクエストを発行しレスポンスを受信するまでのプログラムの流れはだいたい次の通り。

  1. リクエストヘッダ(NSURLRequest)を作る
  2. NSURLConnection のクラスメソッドを用いリクエストを発行する
  3. レスポンスヘッダ(NSURLResponse)とレスポンスボディを取得する

Request オブジェクトを作る

NSMutableURLRequest を用いる。
NSMutableURLRequest は親クラスである NSURLRequest に比べリクエストボディ(POSTデータ)や HTTP ヘッダの設定が容易に行える。

NSData *query = [[NSString stringWithFormat:@"foo=bar&baz=%@", @"foobar"]
                       dataUsingEncoding: NSUTF8StringEncoding];
NSMutableURLRequest *request = [NSMutableURLRequest
                      requestWithURL:[NSURL URLWithString:@"http://localhost/test/"]
                      cachePolicy:NSURLRequestUseProtocolCachePolicy
                      timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" 
                      forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [query length]] 
                      forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:query];

同期方式

NSURLConnection.sendSynchronousRequest:returningResponse:error: を用いる。
同期方式は sendSynchronousRequest を呼び出したスレッドにおいて、リクエスト・レスポンス送受信が逐次処理される。 仮に UI スレッドでこのメソッドを呼び出すと、呼び出し元に制御を返すまでブロックされ、画面はフリーズする。

NSHTTPURLResponse *httpResponse;

/* HTTP リクエスト送信 */
NSData *contents = [NSURLConnection sendSynchronousRequest:request 
                      returningResponse:&httpResponse error:nil];
NSString *contentsString = [[NSString alloc] initWithData:contents encoding:NSUTF8StringEncoding];
NSLog(@"contents:\n%@", contentsString);

/* HTTP レスポンスヘッダ取得 */
NSDictionary *headers = httpResponse.allHeaderFields;
for (id key in headers) {
    NSLog(@"%@: %@", key, [headers objectForKey:key]);
}

非同期方式

NSURLConnectionDelegate プロトコルを実装する。 NSURLConnection.initWithRequest で接続されるが、同期方式と違い別スレッドでリクエスト・レスポンス送受信が処理されるためブロックされない。

@interface HTTPDownloadDelegate : NSObject<NSURLConnectionDelegate> {
    NSMutableData *contents;
}

@end

@implementation HTTPDownloadDelegate

/* レスポンスヘッダを受け取る */
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    // (NSHTTPURLResponse *)にキャストする
    NSHTTPURLResponse *httpResopnse = (NSHTTPURLResponse *)response;
    // レスポンスヘッダを列挙
    NSDictionary *headers = httpResopnse.allHeaderFields;
    for (id key in headers) {
        NSLog(@"%@: %@", key, [headers objectForKey:key]);
    }
}

/* データを受け取る度に呼び出される */
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [contents appendData:data];
}

/* データを全て受け取ると呼び出される */
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *csvContents = [[NSString alloc] initWithData:contents
                      encoding:NSShiftJISStringEncoding];
    NSLog(@"%@", csvContents);
}

@end

int main(int argc, char *argv[]) {
    /* リクエストを作る */
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost/"]];

    /* 上で定義した NSURLConnectionDelegate のインスタンスを作る */
    HTTPDownloadDelegate *delegate = [[HTTPDownloadDelegate alloc] init];

    /* リクエストを送信する。 
     * この main スレッドから分岐し別のスレッドでリクエスト・レスポンスの送受信が行われる。
     * そのためアプリはここでブロックされない。 */
    NSURLConnection *connection = [[NSURLConnection alloc]
                      initWithRequest:request delegate:delegate];
    if (!connection) NSLog(@"failed to create connection");

    [[NSRunLoop currentRunLoop] run];
}

参考

大王ラーメン

大王ラーメン

母の見舞いの帰りに寄ってみた。
割と近所なのに初めて。その程度に引きこもりってことです。

頼んだのはチャーシューラーメンの味噌。ホントはそんなもの無いらしいんだけど、店主が良い人で、「いいよ」ってことで頂けました。うまかったです。 メニューとか、外観とかは撮ったくせに肝心のラーメンを撮っていない。

f:id:oasynnoum:20130608211909j:plain

泡盛飲んでるおじさんと、店主とで野球の話とかAKB48の話とか。
「おにーちゃんAKBのCDいっぱい買ってそう」とか。そうですね。
AKBよく知らんけど打線組んで野球やらせたら面白そうだね。人数的に5チーム作れるし。

母が入院

母が今日から入院で、付き添いをしてきた。
今回の手術は、一年前に遭った交通事故の際に受けた手術によって膝に入れられた金属を取り除くもの。

付き添いの中でいくつか予想外なことがあり、かなり余裕がなかった。
予想外といっても取るに足らない事。
いらつきが母に伝わり、要らん心配かけさせてしまった。

手術は明日で、手術が執り行われる時間帯はこれから決定するとのこと。
なので丸一日時間割く予定。