Googleを支える技術

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

4、5年前にGoogleが発表した各種論文を簡易に説明している本です。(GFS、Bigtable、Sawzallなど)
Googleが提供しているサービス群はどのようなバックエンドで動いているのか、が技術に明るくない人間にも伝わるような内容になっています。

最近流行りのcloudなどの根っこをさらっと知りたい方にもお勧めだと思います。

Armadillo-440でSQLiteを使いたい

経緯

Armadillo上で動くSQLiteを使用するプログラムを書きたくなったので、ATDE3でSQLite3のライブラリをビルドしてみました。

ビルドの流れ

ソースの取得と準備

SQLiteのサイトよりソースコードを落としてきてビルドの準備をします。

cd /home/atmark/build/app/
wget http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz
tar -zxvf sqlite-autoconf-3070400.tar.gz
ビルドとインストール
cd sqlite-autoconf-3070400
./configure --build=i686-pc-linux-gnu --host=arm-none-linux-gnueabi CC=arm-linux-gnueabi-gcc --prefix=/usr/arm-linux-gnueabi --enable-static --disable-shared
make
sudo make install

ARMのEABI用静的ライブラリにコンフィグします。

結果

下記のファイルがインストールされました。

/usr/arm-linux-gnueabi/lib/libsqlite3.la
/usr/arm-linux-gnueabi/lib/libsqlite3.a
/usr/arm-linux-gnueabi/bin/sqlite3
/usr/arm-linux-gnueabi/include/sqlite3.h
/usr/arm-linux-gnueabi/include/sqlite3ext.h
/usr/arm-linux-gnueabi/share/man/man1/sqlite3.1
/usr/arm-linux-gnueabi/lib/pkgconfig/sqlite3.pc

次はこのライブラリを使って簡単なプログラムを書いてみます。

Subversionを導入しよう

経緯

最近ずっとひとりで開発をしていて、ソースのバージョン管理を怠っていました。
これではイカン、と、svnLinux機(Fedora13)にインストールしてみました。

導入

パッケージのインストール
yum install subversion
IPパケットのフィルタリング設定変更

svnが使用するポートに対するポートへのパケットを許可します。

#!/bin/sh

iptables -I INPUT -p tcp -s クライアントのIP -d サーバのIP --dport 3690 -j ACCEPT

こんなスクリプトを書いて、 /etc/rc.d/init.d/filtertab として保存します。
これを起動時に適応させるために

chmod 755 /etc/rc.d/init.d/filtertab
cd /etc/rc.d/rc3.d/
ln -s ../init.d/filtertab S98filtertab

これで、svnへのパケットが通るようになりました。

リポジトリ作成と設定

コードの置き場をリポジトリというらしいですが、それを作成しユーザの認証設定を行います。

svnadmin create /var/svn/repos

これでリポジトリルートが作成されたので、次に認証設定を変更します。
認証設定のファイルは /var/svn/repos/conf/svnserve.conf ですので、これを以下のように書き換えました。

[general]
anon-access = read
auth-access = write
password-db = passwd

匿名アクセスは読み取りのみの権限、認証アクセスには読み書きの権限を与えます。

[users]
#ユーザ名 = パスワード

を /var/svn/repos/conf/passwd に記述します。

あとはsvnでアクセスされたときにsvn用サービスを立ち上げれば完了です。

xinetdでsvnserve起動

ずっとスーパーサーバはinetdだと思い込んでいたのですが、xinetdなんですね。古すぎました。

service svn
{
     disable = no
     socket_type = stream
     port = 3690
     wait = no
     user = svn
     server = /usr/bin/svnserve
     server_args = -i -r /var/svn/repos
     log_on_failure += USERID
}

のような内容を /etc/xinetd.d/svn に記述します。
service名は /etc/services に記載されているものに合わせます。

結果

バージョン管理システムcvsとvssしか使ったことがなかったのですが、svnはなかなかシンプルかつ直感的でいいですね。
svnを使いこんで、次はgitにチャレンジしてみようと思います。

dict/words

lookコマンドを使ってみようとすると

look: /usr/share/dict/words: そのようなファイルやディレクトリはありません

Fedoraの初期状態ではwordsファイルが存在しないようです。

  • インストール

Fedora13
(rootで)

yum install words

GNU Global

ソースコード読みを容易にするために、静的解析ツールのGNU Globalを使ってみました。

  • インストール

http://www.gnu.org/software/global/download.html
上記サイトよりWin32 binaryをドウンロードして、適当なフォルダに展開後パスを通して完了です。

  • 使用方法

gtagsとhtags、2つのコマンドを使用します。

・gtags
解析したいコードツリーのトップ階層にて

gtags -v

と実行します。すると、そのフォルダにGPATH、GRTAGS、GTAGSが生成されます。

・htags
gtagsを実行したフォルダにて

htags -asfF

と実行します。HTMLフォルダが生成されますので、その中のindex.htmlを開くとブラウザからコードを参照する事が出来ます。

  • はまったところ

htags実行後に
'cp' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と表示される場合、環境にcpコマンドが存在しません。
/Compiled Executables/cp.exeをダウンロード - nix32 - OSDN
からcp.exeをダウンロードして、windowsフォルダにでも入れておきましょう。

GDD2010感想文

参加してきました。

JS - JS - Android - Android

GoとGAEも聞きたかったけど断念。

Client APIのお話でwebプログラミングの歴史を簡単に流してくれて

初心者的に有難かったです。

来年までにもう少し、英語力を上げてふむふむと聞きたいな

と思いました。


おわり。

DevQuizやってみました

なんかGoogleのイベントに参加するのに、Quizに答える必要があったので
やってみました。
OAuthまでは調べれば出来たので良かったのですが、しりとりとパックマン
考える必要があったので出来ませんでした。
しりとりで中途半端なプログラムを書いて2問解いたところで時間切れ。


数学的にものを考えるのが苦手(数学も苦手)なのが本当にネックです。
頑張って勉強してプログラマーになります。


で。今まで避けて通っていたアルゴリズムの勉強を始めました。

サイエンス!とっても容易な内容だけど、僕にはとっても難しい。