2009-05-28

Amazonアフィリエイトもやることにしたよ

「ああ・・・・・・・・それにしても金が欲しいっ・・・・・・・・・・!!」

大事ですね、お金・・・。無いと困りますよね。

Googleアドセンスを導入した」というエントリも先日書きましたが、今度はAmazonアフィリエイトです。あからさまに貧乏なのがバレバレです。
今までは「ブログのデザインがうるさくなりそう」「何となく金儲けってカッコ悪い」という理由でこのブログでは避けていたアドセンスとアフィリエイトですが、もうそんなこと言ってられないので取り入れてみました。

実家が農家なので飢え死にすることは(たぶん)無いのですが、ここしばらく貯金切り崩し生活が続いていてほの暗い不安感が湧いてきたところ。まだ大丈夫、だけど半年後はどうなの?って感じでな~んか対策をしなきゃなーと思い始めてきました。

ぶっちゃけ分厚い技術本を買う金が無くて、本屋で超集中モードで立ち読みして、立ち眩みで倒れそうになるのはもう嫌なのです! フラフラになりながら「意外と俺ってまだ記憶力が衰えてないのね」とか変な充実感を得るのは嫌です! っていうか本屋さんに悪くて何だか店に入りづらくなってきたよ!

そんで、「Webでお金を稼ぐにはどんな方法があるんだろう?」といろいろ調べ始めて、まずはアドセンスとアフィリエイトをやってみることにしたのでした。


うーむ、2004年からブログをやってましたがお金と絡めてブログをどうこうしようと考えたことは一度もなかったので、自分的に結構な転換点ですね。もともとはカンペキに自分の技術用メモだったんだけどなー。


最後に最近勉強しているObjective-Cの技術書を練習のためアフィリエイトで貼ってみます。とっても立ち読み・・・(ゲフンゲフン)、とっても読みやすい内容のまとまった本ですよ。別に罪悪感で貼ってるわけじゃないんだからねっ!


2009-05-25

Objective-Cのオブジェクト指向機能の練習

MacBookを買ってiPhoneアプリを作ることにした私ですが、どうやらiPhoneアプリ(というかマックアプリ)はObjective-Cという言語を使って作る必要があるようで、まずはその言語を覚えることにしました。

Objective-CはANSI Cに独自のオブジェクト指向機能を追加した言語。なので基本的にC言語なのでHello worldとかエラトステネスの篩とかお約束は省略します。オブジェクト指向機能をどんな感じで使えば良いかだけ練習してみました。本当のObjC初心者なので超初歩的内容ですので注意!

まずObamaクラスを書いてみました。

【クラスを定義してみる】
/**
* Objective-Cのオブジェクト指向機能のテスト
* 2009-05-23
*
*/

#include <stdio.h>
#include <Foundation/NSObject.h>

@interface Obama : NSObject
{
BOOL isElection;
}
-(id)init;
-(void)election: (BOOL)b;
-(void)whoAreYou;
-(void)speach;
@end

@implementation Obama
-(id)init { isElection = FALSE; }
-(void)election: (BOOL)b { isElection = b; }
-(void)whoAreYou
{
if (isElection == TRUE)
printf("I'm President Obama!\n");
else
printf("I'm Obama!\n");
}
-(void)speach { printf("Yes, we can!\n"); }
@end

int main()
{
id objObama = [[Obama alloc] init];
printf("class Obama\n");
[objObama speach];
[objObama whoAreYou];
[objObama election: TRUE];
[objObama whoAreYou];

return 0;
}


まずクラスを定義するにはFoundationというフレームワークのNSObjectというのを継承しなければいけないようです。FoundationはWinプログラムでいうMFCみたいなものかな? 
で、@interface ... @endまでがクラス定義。最初の{}にクラス変数を書いて、あとはメンバ関数の宣言。メンバ関数の実装は@implementation ... @endで記述する。「なんでメンバ関数の先頭にハイフン付けるんだろう?」とか「引数を:のあとに書くのは違和感あるなあ」とかいろいろ思うところはありますが、とりあえずこれでクラスは作れた。

ちなみにここまでの作業はTerminal.appを立ち上げてemacsで書きました。Windowsと違ってCygwinを入れなくても素でUNIXなのは楽ですねー。上のプログラム、本当は@interface部をヘッダーファイル(.h)、@implementationをプログラムファイル(.m)に書いてmain.mにインクルードするのが王道でジャスティスみたいなのですが、ここではめんどいので1ファイルに全部書いてます(ファイル名はclass_test.mとしときます)

クラス定義まではC++をやったことある人なら、何となく分かるでしょう。でもその後のmain関数の中のインスタンス作成、メッセージ送信はちょっと見慣れない書式です。要するに関数呼び出しのことをメッセージ送信と呼んでいるみたいです。オブジェクト指向のモデルがSmalltalk的で、むしろC++よりこっちのほうが王道かもしれないっすね。
まずはallocでインスタンス作成、初期化したいときはinit関数を作るとだけ覚えておけば大丈夫そう。

あとはコンパイル。GCCを使います。
gcc class_test.m -framework Foundation

これでカレントディレクトリにa.outという実行ファイルができます。ちなみに実行するとこうなります。

class Obama
Yes, we can!
I'm Obama!
I'm President Obama!




【Obamaクラスを継承して多態性を試す】

さっきのObamaクラスを継承してNocchiクラスを作ってみます(ネタが古いとか突っ込みはガン無視の方向で)。

/**
* Objective-Cのオブジェクト指向機能のテスト
* 2009-05-23
*
*/


#include <stdio.h>
#include <Foundation/NSObject.h>

@interface Obama : NSObject
{
BOOL isElection;
}
-(id)init;
-(void)election: (BOOL)b;
-(void)whoAreYou;
-(void)speach;
@end

@implementation Obama
-(id)init { isElection = FALSE; }
-(void)election: (BOOL)b { isElection = b; }
-(void)whoAreYou
{
if (isElection == TRUE)
printf("I'm President Obama!\n");
else
printf("I'm Obama!\n");
}
-(void)speach { printf("Yes, we can!\n"); }
@end

@interface Nocchi : Obama {}
-(void)speach;
-(void)sayJoke;
@end

@implementation Nocchi
-(void)speach { printf("イエス、ウィ キャン!\n"); }
-(void)sayJoke { printf("のっちで〜す!\n"); }
@end

int main()
{
id objObama = [[Obama alloc] init];
printf("class Obama\n");
[objObama speach];
[objObama whoAreYou];
[objObama election: TRUE];
[objObama whoAreYou];

id objNocchi = [[Nocchi alloc] init];
printf("class Nocchi\n");
[objNocchi speach];
[objNocchi sayJoke];

return 0;
}


これの実行結果は以下。

class Obama
Yes, we can!
I'm Obama!
I'm President Obama!
class Nocchi
イエス、ウィ キャン!
のっちで〜す!


うむ、speach関数のところがちゃんと上書きされておる。これでとりあえずクラスの定義、インスタンスの生成、クラスの継承まで一通りできました。超初歩的な内容ですが、自分の備忘録として記事にしてみました。


あとはまだまだ疑問点があります。また調べて記事にしてみよう。
  • allocでインスタンス生成をしたあとにメモリ解放はしなくていいのか?(malloc/free的なノリで)
  • メッセージは変数化できないのか? C言語の関数ポインタみたいに使えるとメタなプログラミングができて面白そう。

しかし新しい言語を勉強するのは久しぶりですが、やっぱり楽しいですね〜。ざっと解説本を眺めてみましたけど、C++よりは簡単そうでほっとしてます。さあ、いろいろ試すぞ!

2009-05-17

AdSenseを導入してみた

Bloggerを使ってると「AdSenseを導入してみませんか?」というメッセージがことあるごとに出てきます。親会社がGoogleだからかなー?

ちょっと設定をいじってみたら意外と簡単に導入できそうだったのでやってみました。これまではブログのデザインがうるさくなりそうだったんで嫌だったんですが、実際やってみるとレイアウトも選べるみたいだし。

AdSenseで一番気になるのは、「マウス操作の間違い以外でクリックする人がいるのか?」ってこと。自分自身が間違って押しちゃったことしかないので役に立つって実感が無いんですよね~。そういう実験的な意味も込めてしばらく貼っておきます。しばらく反応が無かったら止めちゃおうかな。


2009-05-15

折り畳める三角すいを作った



100円ショップで竹ひごを買ってきてこんな立体を作ってみました。三角錐だけど畳み込んでコンパクトな束にまとめられます。輪ゴムで組み立てるのはちょっとしたパズルみたいですけどそんなに難しくないですよ。
下のページを参考に作ってみました。


こういう構造体は「阿竹シザーズ構造体」とかいうらしいです。”阿竹”というのはこういう構造体を研究してる建築家さんです(公式HP)。もっと大きくて複雑なドームなんかも作っているみたいで、このページを見てるとちょっとわくわくしますw。

もっと簡単に作るための「あたけぼね」というキットも売っているみたいです。作例を見てみると結構いろんな形が作れるみたいですね




最近、こういう立体おもちゃに凝ってまして、いろいろ試してます。改めて思うけど、幾何学ってのは数学だけど実学でもあるってこと。幾何学的に正しいことは実物を作っても正しい。もうちょっと遊んでみます!

MacBook購入


ついにMacBookを買ってしまった・・・。この記事もMacBookから書いてます(なんかフォントがきれい過ぎて違和感)。

上の梱包は必要最低限な内容で好印象。Windowsだと紙の冊子がいっぱい付いてくるからね。エコです。
価格コムで一番安いところで買って11万ちょいでした。ボディの質感とキータッチはなかなか良いです。トラックパッドの操作にちょっと戸惑ったけど、これって全体がボタンになってるのね。

家に届いてからまだ5時間も経ってないないので対したことはやってないのですが、とりあえずMac OS XのDiscからXCodeをインストールしときました。これでTerminalからも開発ツールが使えるようになったみたい。

購入目的はずばりiPhoneアプリ開発です! 経験上、新しい技術を学ぶときは最初の好奇心で学習曲線を引っ張り上げないとグダグダになって結局あきらめてしまうので、この一週間はiPhoneアプリ開発に集中したいと思います。とにかくHello Worldまで漕ぎ着けること>自分。