myfinderの技術や周辺的活動のblog

2009年4月30日木曜日

[ニコニコ動画]なぜ0で割ってはいけないのか?

SocialWeb Japan #2に行ってきました。

28日にSocialWeb Japan勉強会 #2に行ってきました。
今回は後半からの参加でしたが、mixiとYahoo!といった大手サービス事業者の取り組みについて聞くところには間に合ったのでよかった。。。

内容についてはid:ZIGOROuさんのエントリがまとまっているのでそちらをご覧いただくといいです。

mixiの話
割と以前から公開されている内容について、現在の進捗と今後の公開スケジュールなどについて発表されていた。
「広告」「課金」「ファンド」を普及というか、開発の起爆剤にするということで、既にファンドで投資している会社もあるとのこと。

割とちゃんとしたプラットフォームを用意するよ〜という感じになっているが、モバイルのほうがどうなっていくのかが気になるところ。
「アプリ」という形がmixiモバイルのユーザに伝わるかな、とかそういうレベルから、開発どうやんのかな、とかまで。

Yahoo!の話
よくまとめられており、Yahoo!の今後の方向性について理解しやすい内容であったと思う。
特に、「つながり」についての考え方は参考になった。
  • 1way = いわゆる「お気に入り」などの1方向のつながり
  • 2way = いわゆる「お友達(相互承認)」などの双方向のつながり
  • Nway = いわゆる「コミュニティ」などの多対多のつながり

その他で特に気になったのは、「苦労していること」として発表されていた内容で
  • ソーシャル化の効果を、売上/利益で他の要因と切り分けて数値化するのが難しい
  • 金額換算すると、他のサービスや施策よりも効果が低い?
  • 全体最適VS部分最適(Y!全体としての最適とサービス毎の最適が違う)
  • 開発チームが部門別になっている(これはこのほど一つに統合したとのこと)

という点。
技術要素の絡む横断的施策を打ちたいときに、開発が部門単位に別れているといろいろと面倒事が多いんだろうなというのは容易に想像されるので、まとめるのは正しい動きだと思う。

おわりに
各社結構着々と進めている&方向性も定まってきているので、今年後半にかけての動きが気になるところ。
これについては6月くらいにまたSocialWeb Japanの会合が行なわれるそうなので、追いかけたいと思います。

直接関係ないけど、Poken持ってる人が結構居たことに驚き。
Poken APIなるものも公開されるそうなので、意外とそっちも面白いんじゃないかななどと感じました。
Pokenについてはまだいろいろと改善の余地ありまくるなと感じるのだけどもそれは気が向いたら別のエントリで書いてみたい。

いじょ。

2009年4月27日月曜日

17歳教

今日はどう書く?.orgにお題がいろいろあったので、その中の「17歳教」についてPerlで書いてみた次第。

use strict;
use warnings;
use Date::Simple;

my $birthday = $ARGV[0];

die "入力された日付フォーマットがおかしいです><" if ($birthday !~ /(\d{4})(\d{2})(\d{2})/);
die "入力された日付は存在しません><" if (!Date::Simple->new($birthday));
die "あなたはまだ17歳になってません><" if (((localtime(time))[5] + 1900) - $1 < 17);

my $countYear = ((localtime(time))[5] + 1900) - ($1 + 17);
my $countDay = Date::Simple->new() - Date::Simple->new(($1 + 17, $2, $3));
my $countMonth = $countYear * 12;
my $progressDay = (Date::Simple->new() - Date::Simple->new(((localtime(time))[5] + 1900, $2, $3)));

print "あなたは17歳と" . $countDay . "日です\n";
print "または\n";
print "17歳と" . $countMonth . "ヶ月と" . $progressDay . "日です\n";

「17歳教」についての詳細はこちらを参照のこと。おいおい。

2009年4月25日土曜日

GenesisLightningTalks Vol.15に出てきました。

今月もGenesisLightningTalksに出てきました。

今回のテーマは「DB」
だけども、データベースについて書かなければならないというわけではなく
「D」と「B」が入っていればよい、というもの。

今回は「どうしてもBlogが続かない」でDBとした。
このBlogを始めるまでに、実に二桁くらいのBlogをダメにしてきたのでその辺の原因などなどについて振り返ってみた話です。

動画は↓

2009年4月23日木曜日

OOPJog#2で走ってきました。

イベント詳細は→http://atnd.org/events/577

今週もOOP Jogで走りながらOOPに(類する)ことについて喋ってきた。
2回目になると、前回より余裕を持って走ることができた。

以下話した事の箇条書き。

・四角と長方形と正方形のis-a関係
・Key-Valueストレージについて
・Google的なサーバのスケール感覚?と、一般的なサーバのスケール感覚について

あんましOOPについての喋りが少なかった。。。反省。

終わった後に、「懇親会はアルコールじゃなくて、VAAMとプロテインバーにしましょう」と提案してみた。

2009年4月21日火曜日

Linuxシステム調査のためのコマンド パッケージ編


$ rpm -qa // インストール済みパッケージ一覧(量が多いので、lessなどに渡すとよい)
$ dpkg -i // 同上
$ rpm -ql // パッケージがインストールしたファイルの一覧
$ dpkg -L // 同上
$ rpm -qf // 指定したファイルが含まれるパッケージを表示
$ dpkg -S // 同上
$ rpm -Va // パッケージからインストールしたファイルが改変されていないかを確認

Linuxシステム調査のためのコマンド ユーザの調査


$ cat /etc/passwd // 登録されているユーザの情報
$ cat /etc/group // 登録されているグループの情報
$ w // ログイン中のユーザ情報
$ lastlog // 登録されているユーザのログイン情報
$ last // 最近のログイン記録

Linuxシステム調査のためのコマンド ネットワーク編


$ /sbin/ifconfig -a // NICの情報をすべて表示
$ cat /etc/sysconfig/network-scripts/ifcfg-eth{number} // NICの設定値を表示
$ hostname --fqdn // ホスト名のFQDN
$ netstat -lA inet // 接続を受け付けているポートや許可するIPを表示
# /usr/sbin/tcpdump // NICが送受信するすべてのパケット情報を表示
$ cat /etc/host.conf // 名前解決方法の優先順位を表示
$ cat /etc/resolv.conf // 名前解決に使用するDNSを表示
# /sbin/iptables --list // ファイアウォールのフィルタリング設定を表示
$ /sbin/route // ルーティングテーブルを表示

Linuxシステム調査のためのコマンド ランレベルなど編


$ cat /etc/inittab | grep id // 標準のランレベルを確認
$ /sbin/runlevel // 現在のランレベルを確認
$ ls -R /etc/cront.* // cronの内容を確認
$ /sbin/chkconfig --list // 自動起動の設定を一覧する
$ ls /etc/rc{runlevel}.d/S* // 指定したランレベルで自動起動するサービスの確認
$ /sbin/service --status-all // /etc/init.d以下に起動スクリプトがあるすべてのサービスのステータスを確認

Linuxシステム調査のためのコマンド システムライブラリ・ブートローダ編


$ cat /etc/ld.so.conf // /lib,/usr/lib以外にシステムライブラリが格納されているディレクトリ
$ /sbin/ldconfig -v | grep {library} // システムに認識されているライブラリのバージョン
$ ldd {command} // コマンド実行に必要なライブラリを表示


# cat /boot/grub/grub.conf // 起動時に使用する情報
$ cat /proc/cmdline // 起動時にカーネルに渡されたオプション

2009年4月20日月曜日

Linuxシステム調査のためのコマンド カーネル編


$ uname -r // 使用中のカーネルのリリース情報など
$ cat /proc/version // カーネルに関するより詳しい情報など
$ /sbin/lsmod // 現在カーネルが読み込んでいるモジュール情報など
$ /sbin/modinfo {module} // カーネルモジュールの情報を表示

Linuxシステム調査のためのコマンド ファイルシステム編


$ cat /proc/ide/{device}/model // ディスクドライブのモデル名
$ cat /proc/scsi/scsi // SCSI接続のデバイスについて
$ cat /proc/sys/dev/cdrom/info // CDROMのデバイスについて
# /sbin/fdisk -l /dev/{device} // ハードディスクの総容量など
$ cat /etc/fstab // マウントするパーティションの情報など
$ df -hT // マウントされているパーティションの情報など
$ cat /proc/mdstat // ソフトウェアRAIDデバイスの情報

Linuxシステム調査のためのコマンド ハードウェア編


$ dmsg // ハードウェアやシステムの基本的情報を表示
$ procinfo // ハードウェアやシステムの主要情報(カーネルのVer,メモリの使用状況)
$ cat /proc/cpuinfo // CPUの情報
$ cat /proc/interrupts // IRQの使用状況
$ cat /proc/ioports // I/Oポートアドレスの使用状況
$ free // メモリの使用状況
$ vmstat // 仮想メモリの情報
$ /sbin/lspci // PCI接続されている機器の情報
$ /sbin/lsusb // USB接続されている機器の情報

procディレクトリの中身をちらっと見てみる

カーネルとプロセスの関係を知りたい。
ということで、procディレクトリについてまとめて書いて、後で見られるようにしておく。

今日書いた内容についてはこのページに詳しい。

プロセスごとの環境

プロセスごとの環境とはそもそも何か。
それは、例えばカレントディレクトリやメモリ、環境変数を指す。
この辺の値はプロセス毎に別々のものを持っている。

この辺の情報が集まっているのが/procディレクトリで、特殊なディレクトリだが通常のディレクトリと同じようにアクセス可能になっている。

例えとして、Apacheのプロセス情報を覗いてみる。

# ps auxw | grep httpd
apache 21871 0.0 0.3 235300 12328 ? S Apr19 0:00 /usr/sbin/httpd


この場合、/proc/21872にApacheプロセスの情報が入っていることになる。
例えば当該プロセスのカレントワーキングディレクトリは

# ll /proc/21872/cwd
lrwxrwxrwx 1 root root 0 4月 20 00:18 /proc/21872/cwd -> /

という風にシンボリックリンクなっている。
この場合、Apacheのカレントワーキングディレクトリは/ということになる。

さらに、環境変数が知りたい場合は

# cat /proc/21872/environ | tr "\0" "\n"
HOSTNAME=ayumi
SHELL=/bin/bash
TERM=xterm-color
HISTSIZE=1000
USER=root
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
MAIL=/var/spool/mail/root
PATH=/sbin:/usr/sbin:/bin:/usr/bin
INPUTRC=/etc/inputrc
PWD=/root
LANG=C
SHLVL=3
HOME=/root
LOGNAME=root
CVS_RSH=ssh
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/usr/sbin/httpd

という風にすることで、当該プロセスの環境変数を知る事ができる。

他のプロセスにアクセスする

各プロセスには、「標準入力」「標準出力」「標準エラー出力」などがあり、「/proc/[pid]/fd」以下のものがそれにあたる。
例えば、特定プロセスの標準出力にメッセージを飛ばしたい場合、下記のようにコマンドを実行すると、指定したプロセスの標準出力に出力される。

# echo hello > /proc/{pid}/fd/1

ちなみに先ほどのプロセスを指定して、下記のような出力を送ると、Apacheのエラーログにメッセージが出力される。

# echo hello > /proc/21872/fd/2

※上書きされるのが嫌な場合は>>にすればOK

これを応用すると、ローカルのシェル同士でチャットごっこのような事ができる。
もちろん実際はチャットソフトを使うべきだけれども。

というわけで、プロセス毎の動作などを確認したいときなどはprocディレクトリ以下を見るとよいです。

2009年4月19日日曜日

Yellow Dog LinuxをPS3にインストールしてみる話その1

自宅にはなぜかPS3が2台あって、片方が埃をかぶっている状態だったのでPS3にLinuxをインストールしてみました。





細かいインストール手順などはこちらにお任せするとして、いろいろとインストール中に情報を集めたりしているところです。

気になるのがこのエントリ

確かに浮動小数点演算が得意なCellにWebサーバとかやらすのは違う気がする。
でも、何事もやってみないとわからないし、やったら面白いかもしれないのでやってみる。

と、いうことで今日はインストールするだけして終了。
ちゃんと立ち上がりましたよ。

2009年4月17日金曜日

OOPJog#1で走ってきました。

詳細はコチラ→http://atnd.org/events/555

いつものLTと違って、今回は走りながら技術系の話をするということであった。
意外と喋りながら走った方が続くんだなと感じたり。

ただ、やはりせいぜい一度に喋れるのが2〜3人で、最初にご挨拶させていただいてからJog中には喋れなかった方もいた。

毎週やるらしいので、今後も出ていろいろとお話をしたいなと思うイベント?でした。


P.S. 皇居1周、喋りながらだと45分くらいなので、結構ちゃんとした運動にもなりますよ。