Mac OS Xのログインシェルをzshに変更

Mac OSX ログインシェルの変更方法 - Hasta Pronto.org

今 Screen の勉強してるんだけど、デフォルトで zsh が使いたかったので調べてみた。

  1. 「アプリケーション」→「ユーティリティ」ディレクトリ内の「NetInfo マネージャ」を開く
  2. NetInfo マネージャの左下にある鍵マークを押して管理者のユーザー名とパスワードを入力
  3. 「users」→「ユーザー名」を選択、プロパティ欄で「shell」を選び、値に「/bin/bash」or「/bin/tcsh」or「/bin/zsh」を入力
  4. 一度ログアウトしてから、ログインし直すと変更したシェルがデフォルトになっている

これにて一件落着。

ターミナルには、iTermを使ってます。ちゃんと半透明になってカッチョイイんだけど、描画がちょっと遅い。スクロールでけっこうイライラするので、もう少し軽いのを物色中。やっぱり、X11上でrxvtとかmltermとかがいいのかな…

Development Environment Conference懇親会だけ参加したい!

今日は12:00から Development Environment Conference の募集があったわけですが、その頃はちょうどウノウの全体ミーティングの時間。12:10くらいに確認してみたものの既に満員御礼。今回はなんと、3分くらいで定員に達したみたいです。そりゃあ、スピーカーの人達がすごい人ばっかりだもんなぁ。

というわけで、懇親会だけ参加希望なんですけど、ダメですかねー?


出来ればこういうの希望。

  • 当日、登録に間に合わなかった人達が居酒屋に集合
  • 場所は秋葉原周辺で、パブリックビューイング用のプロジェクタと無線LAN完備のところ
  • もちろん、会場の様子をSkypeかなんかで生中継
  • イベントが終わったところで、実際に参加した人達と合流
  • そして大宴会に突入 (゚Д゚)

LLRing 2006

新木場のプロレス会場で行われた今年のLLRing、一般的な言語からマニアックな言語まで一癖も二癖もあるような人達が勢ぞろい。11時間という長丁場でしたが、飽きることもなく楽しめました。でも、じゃんけん2.0のワンライナーを見逃したのが残念だー

Language Update

Python評判良かったみたい。GuidoとLimiがGoogle入りっていうのがインパクトあったようです。あとは、Rubyの生みの親、まつもとさんを初めて拝見しました。島根でも有名人らしく、オープンソースラボなる施設が松江市に作られたそう。実用的かどうかは別にして、Squeakの仮想空間でペアプロは面白かった。

フレームワーク対決

Django, Kahua, Rails, Ethnaが参加。Perlがないのが残念。Railsが手で書いた行数が一番少ない、パフォーマンスはDjangoが一番良さそうなど、フレームワークの特徴がよく出ていたように思う。藤本さんのダルさが印象的。ただし、アプリケーションの説明がメインだったのが残念だった。やっぱり、中身が見たい。どんな環境で開発してるのかが見たい。

LLGong

このセッションは、もう面白い発表ばっかり。Plaggerの竹迫さんとか、C言語シェルの上川さんとか、SPAMメールの自己組織化とか、MEPHISTOの3Dアニメーションとか… ジャッジの人達が×を出せる感じではなかった。


次は、DevCampまたはDjango勉強会でお会いしましょう!

『みんなのPython』にサインしてもらった

みんなのPython


LLRingの会場を抜け出して『みんなのPython』を買ってきました。で、著者の柴田さんにサインしてもらいました。
名前だけじゃなくて、ひと言書いてくれるらしい。何て書いてくれるのかワクワク、そしてちょっとビクビク。

えっ!あ、姉キャン!?


それは置いといて、これからPythonを始めようって人にぴったりの内容で、リスト/辞書/タプルの説明とか、日本語に関する内部ユニコードの話とか、オブジェクト指向な書き方とかが分かりやすく書かれています。まさにこういう入門書が欲しかったっていう感じ。最近は、「次に覚えるならPythonかRubyじゃね」っていう話をよく耳にするようになりました。MozillaのJavaScript 2.0もPythonの手法を取り入れるらしいし、Ajaxでよく使われるJSONも元々Python的な書き方ですからね。そんなわけで、これからPythonを始めようという人にお勧めの一冊です。O'reillyの『初めてのPython』の厚さにビビってしまった人にも。

# 姉キャンって何?って人は、Googleで検索してもらえれば分かりますw

イクスピアリ

LLRingを抜け出してやってきたけど、お目当ての物は見つからず。
仕方ないので写真だけ撮って、また京葉線で移動。

LLRing直前オフに行ってきた

PHPとPythonな人達が合同でLLRing直前オフをやるというので、参加してきました。
Software Design編集部やインプレスの人もいて、かなり盛り上がったよ。
  • 柴田さんが 『みんなのPython』 にサインを書きまくっていた。自分も持って行けばよかった。
  • Djangoの露木さんにいろいろ聞く。Djangoの勉強会を開催しようということに(決定ですよね?)
  • uemuraさんと初めて話した。Macのことをもっと聞きたかった。
  • tokuhiromさんがいいこと言ってた。「Rails含め他のWebフレームワークは横並び、Djangoはひと味違う」
  • Ura5hanの人がスーツ姿で登場して、「今日はJavaのコスプレしてますが」と言っててウケた。

  • PythonよりPHPのほうが若い人が多い気がする。
  • PHPのフレームワークは、関東と関西で人気のものが違うらしい。
  • Zend Frameworkはまだまだらしい。
  • むむむさん、面白かった。

Unohステッカー

りんごなウノウ
MacBook Kuroに貼ってみました。
最初、キーボードの脇に貼ったんだけど、黒くて全く見えなかったので、結局この場所に落ち着きました。

はてなリング - Python

Twisted Mind さんのところでアナウンスされていたので登録してみました。

これも、COREBlogがPythonカテゴリだけのRSSを出力できるようになっているおかげ。

LinuxサーバでWebページのサムネイル画像生成(Python編)

SimpleAPIはてなスクリーンショット はWindowsのIEベースみたいですけど、どうせならLinuxサーバでやってみましょう。


Xの仮想フレームバッファとgtkmozembedのライブラリを使うので、次のパッケージが必要です。あらかじめyum等でインストールしてください(Fedora Core 5を想定しています)。

  • xorg-x11-server-Xvfb
  • gnome-python2-gtkmozembed
  • mozilla

使い方

$ export DISPLAY="localhost:1.0"
$ Xvfb :1 -screen 0 1024x768x24 & (フォント関連のエラーが出ても気にしない)
$ export LD_LIBRARY_PATH=/usr/lib/mozilla-1.7.13:$LD_LIBRARY_PATH
$ python screenshot-tng.py http://www.yahoo.co.jp/

A potted account of Ross' life をFedora Core 5で動くようにしただけなんですが、以下にソースコードを載せておきます。デーモンとして動くようにちょっといじれば、サムネイル画像生成サーバも簡単にできますね。

#!/usr/bin/python
# This file is released into the public domain.
# Originally Written by Andrew McCall - <andrew@textux.com>
# modified by Matt Biddulph - <matt@hackdiary.com> - to take screenshots
# modified by Hidetaka Yamashita - <hidetaka at gmail.com> - migrate to FC5

import os
import sys
import gtk
import gtk.gdk as gdk
import gtkmozembed

class PyGtkMozExample:
    def __init__(self, URL = None, parent = None):
        if parent == None:
            self.parent = gtk.Window(gtk.WINDOW_TOPLEVEL)
            self.parent.set_border_width(10)
        else:
            self.parent = parent

        # Initialize the widgets...
        self.widget = gtkmozembed.MozEmbed()
        self.widget.set_size_request(816,600)

        # Connect signals
        self.widget.connect("net_stop", self.on_net_stop)
        self.widget.connect("progress", self.on_progress)

        self.parent.add(self.widget)

        if URL != None:
            self.widget.load_url(URL)

        self.parent.show_all()
        self.countdown = 3

    def on_progress(self, data, cur, max):
        print cur,"bytes loaded"
    def on_net_stop(self, data = None):
        gtk.timeout_add(1000,self.do_countdown,self)
        print "Taking screenshot in 3...",
        sys.stdout.flush()

    def do_countdown(self, data = None):
        self.countdown -= 1
        if(self.countdown > 0):
            print str(self.countdown)+"...",
            sys.stdout.flush()
            gtk.timeout_add(1000,self.do_countdown,self)
            return True
        else:
            print
            self.screenshot()

    def screenshot(self, data = None):
        window = self.widget.window
        (x,y,width,height,depth) = window.get_geometry()

        width -= 16

        pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,width,height)
        pixbuf.get_from_drawable(window,self.widget.get_colormap(),0,0,0,0,width,height)
        pixbuf = pixbuf.scale_simple(266, 200, gdk.INTERP_HYPER)
        pixbuf.save("screenshot-thumb.png","png")
        print "Wrote screenshot-thumb.png"
        gtk.main_quit()
        return True

def __windowExit(widget, data=None):
    gtk.main_quit()

if __name__ == "__main__":
    try:
        HomeDir = os.environ["HOME"]
    except KeyError:
        raise "No Home Directory, Don't Know What to Do"

    ProfileDir = HomeDir + "/.gtkmozembedexample/"
    print "Note: a mozilla profile has been created in : " + ProfileDir

    gtkmozembed.gtk_moz_embed_set_profile_path(ProfileDir, "helpsys")

    window = PyGtkMozExample(URL=sys.argv[1])
    window.parent.connect("destroy", __windowExit)
    gtk.main()

SonyのMyloは、Linux+Qtopiaベース

Linux powers Sony's new Mylo WiFi handheld
the Mylo is based on Trolltech's Qtopia Platform, a relatively new graphics and application development framework that features a plug-in framework aimed at multi-function consumer electronics devices.
無線LANの使える大学のキャンパスで使ったら、かなり楽しそうなMyloはLinux+Qtopiaベースなんですね。でも、ソニーのことだからカスタマイズできなくするんだろうな。そろそろ気付いて欲しいよ、ソニーには。

大雪渓~白馬岳~鑓温泉

土日で大雪渓~白馬岳~鑓温泉に行って来ました。1泊2日はちょっと強硬すぎでした。
本当はもっと詳しく書こうと思っていたのだけど、そんな気力がないので写真だけ。

大雪渓
大雪渓


大雪渓
大雪渓


白馬岳頂上と山荘 (標高2,932m)
白馬岳頂上と山荘 (標高2,932m)


鑓温泉
鑓温泉


すべての写真を見る

長野入り

夜が開けて来ました。
目的地の大雪渓まであと少し。

トレッキングシューズ

Trecking Shoes

明日の山登りのために購入。

英語漬け探さなくちゃ

今日は、masatoさんのサンフランシスコ時代の友達がオフィスに遊びに来た。軽く飲みに行こうという話になり、自分も参加。なかかな楽しい飲み会だった。

しかし、ウノウの人達は、みんな普通に英語を話せるんだよなぁ… ゆっくり話してくれるので、言ってることは聞き取れるんだけど、自分が言いたいことを表現できない。まず単語が出てこない。

こりゃヤバいということで、引越し以来、どっかに行ってしまった英語漬けを探す決意をした。とりあえず、英語漬けで最高ランクを取れるようになろう。そして、やっぱり外国人の彼女を作るのがいいのかな、一石二鳥だし。

vi使いとemacs使いの狭間で

今日は、vi使いの鶴ちゃんとemacs使いのなかやんの会話が面白かった。


な「viって、入力モードが別なのが意味分かんないすよねー」

鶴「そうですかー?そんな人聞いたことないなー」

鶴「emacsで検索ってどうやるんすか?」

な「C-sですね。」

鶴「キーを2つも押すのかー。viは/だけで検索できて、次に進むのもn押すだけですよ。」

な「C-s押し続けてれば、どんどん次に進んでいけるよー」

鶴「でも、emacsって根本的にインストールされてない場合もあるし…」


二人の会話が面白いので、ニコニコしながら聞いていると、突然こっちに質問が飛んできた。


な&鶴「hideさんは、どっち派なんですか?」


宗教戦争に巻き込まれそうになり、身の危険を感じたので、僕はとっさに答えたよ。


「も、萌ディター」




※一部、フィクションです。

Pythonicな方法だと"pass"ですね

Trac Tickets - Bulknews::Subtech より

Trac のチケットUIをデフォルトの Report ではなくて Query にしてるんだけど、認証してログインした状態だと、デフォルトで自分が Owner なチケットしかでてくれない。というわけで、http://plagger.org/trac/query を見ても、ログインした状態だと何も見えてなかった(自分で Owner is を - ではずして Update すれば見えるけど)。これはあんまよくないので Tracコードをハック(trac/ticket/query.py)。constraints の行をコメントアウトしただけだと構文エラーになった。影響なさそうな文をいれて回避。たぶんもっと Pythonic な方法があるんだろうけど。

Pythonicな方法だと、"pass"ですね。こんな感じ。

if req.authname and req.authname != 'anonymous':
    pass
    #constraints['owner'] = (req.authname,)
else:

こうして見ると、Perlのスーパーハカーなmiyagawaさんが使ってたり、Ruby on Railsの本家でも使われてたりして、つくづくTracはキラーアプリなんだと思った。ウノウは影舞なわけだけど。


関連リンク:

これからDjangoを始める人のためのリンク集

何だか最近、Djangoが各所で注目されているようなので、自分も手を出してみることにする。

まず、 「Framework Performance in Ruby on Rails」 を読む。Symfony(PHP)とRails(Ruby)、そしてDjango(Python)のパフォーマンス測定の結果が出ているんだけど、Djangoが最速らしい。おぉー!


次にDjangoに関して精力的に活動している露木さんのブログエントリ 「あなたがDjangoを利用すべき10の理由」 を読む。一日1500万ヒット以上をシングルDjangoインスタンスで捌いているとのこと。おぉー!確か新聞社のサイトで使われているんでしたよね。


と、モチベーションが高まってきたところで次に進みます。とりあえず、この辺りから読んでいけばいいのかな。


【2006.8.16追記】

宝川温泉

群馬県は宝川温泉に行って来ました。関越道の渋滞は全くなかったです(自分が寝てる間に通過したらしいんだけど…)。川に沿って広がる温泉は、なかなかのもの。何かの投票で日本一に選ばれたと書いてあったけど、それほどではない気もする。
帰り道、高速SAのガソリンスタンドに長蛇の列ができていた。高速のガソリンスタンドと言えば高いイメージがあるが、最近のガソリン価格急騰で街中のガソリンスタンドとの価格が逆転してお買い得になっているようだ。というのも、高速のガソリンスタンドは月に1回しか価格の見直しを行わないそうだ。だから、8月いっぱいは、高速SAで入れたほうがいいらしい。

朝の吉祥寺

今日は、前の会社の人達と日帰りで温泉に行きます。一睡もしてないので、めちゃくちゃ眠いです。
ちょうど帰省ラッシュで既に高速道路は渋滞している模様。さて、どうなることやら。

Googleで「姉キャン」で検索すると一番上に表示される件

ここ最近、「姉キャン」で検索して来られる方がぽつぽつといます。 そういえば、そろそろ第2弾が発売される時期でしたっけ?

で、試しにGoogleで検索してみると、なんと一番上に表示されるじゃないですか!! 素晴らしい。姉キャンといえばWeboo!、押切もえといえばWeboo!みたいな感じ?

これはチャンスです。普段、LinuxとかPythonのことしか書いてないので、このブログを読んでくれているのは99%が男性と思われます。姉キャン読者の心を掴むようなエントリを書けば、25〜30歳くらいのCanCam以上Oggi未満な女性と仲良くなれるかもしれません。お料理レシピとかスウィーツ特集とかにすればいいのかな。これは、ゲストブロガーを投入するしか…

秘密兵器

最近、家に帰ると凄いことになっている。やばいくらいに蒸し暑い。たぶん、自宅サーバのせいなんだろうけど…

こないだ計ったら、なんと室温が35℃になってた。それも午前0時過ぎての数値だから、昼間どうなっているのかを考えると本当に恐ろしい。

そこでこの秘密兵器の登場ですよ!昔、ヤフオクで買って眠っていたこれです。

難しい選択

昨日気づいたんだけど、ウノウ開発合宿とLLRingの日程がかぶってるよ。

自分にとっては初参加の合宿だけど、せっかく入手困難なチケットを手に入れたからなぁ〜

どうしよう…

howmメニューの完了済みToDoは非表示にする

howmのメニューに完了済み(.)のToDoが表示される仕様になったみたい。いつからだろう、知らなかった。

用済みのToDoがトップメニューにいっぱい表示されるのは嫌なので、.emacs.elに下記の設定を追加して、完了済み(.)は表示しないようにした。

(setq howm-todo-menu-types "[-+~!]")

Mac OS Xでもunisonでファイル同期(主にhowmメモ)

下記サイトからtext UIの2.13.16をダウンロードして/usr/local/binにコピー。先日、KUROSAKIさんがコンパイルしてくれた Zaurus用unison と合わせてZaurus ←→ 母艦 ←→ OS Xでの双方向同期が可能になりました。

http://www.cs.haifa.ac.il/~shuly/unison/


主な用途はhowmで書いたメモの同期です。GTDでよく言われる「ポケット1つの原則」ですが、間単に同期を実現できるのならば、情報へのアクセス手段は多いほうが便利です。
あとは、携帯電話からhowmが使えると最強なんですが、いい方法ないですかねぇ。

サーバ監視ツールには、MRTGよりCactiがお勧め

注)新しいバージョンはこちら
Cacti Plugin Architecture - cacti-pa-0.8.7a-1.noarch.rpm

サーバの稼動状況を監視するツールとしてはMRTGが有名ですが、僕はここ数年は Cacti を使っています。どんな感じかは、本家の スクリーンショット を見てもらえれば分かると思います。

MRTGと比べて、Webブラウザ上から設定を行うことができる、データはMySQLに保存されるので過去の任意の時点を詳しく見ることができるなどの点で優れています。また、 Cacti Plugin Architecture というプラグイン機能を追加するパッチを当てると、監視している値が閾値を超えた時に管理者にメール通知するなどの機能を追加することができます。

このPlugin Architecture版のRPMを作成しましたのでここに公開します。Fedora Core 5で作成しましたが、このCentOSなサーバでも問題なく動作しています。


使い方は、

1.まずRPMをインストール

# rpm -ivh http://yamashita.dyndns.org/download/RPMS/cacti-pa-0.8.6h-2.noarch.rpm

2.MySQLデータベースの作成

# mysqladmin -u root create cacti
# mysql -u root cacti < /usr/share/doc/cacti-pa-0.8.6h/docs/cacti.sql
# mysql -u root mysql

  mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'somepassword';
  mysql> flush privileges;

3.Configファイルの設定。先ほど設定したMySQLのユーザIDとパスワードを登録します。

# vi /usr/share/cacti/include/config.php

 $database_default = "cacti";
 $database_hostname = "localhost";
 $database_username = "cactiuser";
 $database_password = "somepassword";

4.次にデフォルトではlocalhostからしかアクセスできないようにしてあるので、変更します。

# vi /etc/httpd/conf.d/cacti.conf

 #
 # Cacti: An rrd based graphing tool
 #
 Alias /cacti    /usr/share/cacti

 <Directory /usr/share/cacti/>
         Order Deny,Allow
         Deny from all
         Allow from 127.0.0.1
         Allow from 192.168.0.0/24 ← などを追加
 </Directory>

5.次にcronで定期的に監視するように設定します。コメントアウトされているので、先頭の#を消してください。

# vi /etc/cron.d/cacti

  */5 * * * *    cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

6.ブラウザで次のURLにアクセスする。ID/パスワードの初期値は、admin/adminです。

http://サーバのホスト名/cacti/



以上で、とりあえず動作すると思います。うまく動かない場合は、コメントしてください。
次回は、プラグインの追加方法について説明します。

一応、こちらにSRPMも置いておきます。

ブログ当番

さっそく、 ウノウラボ のブログ当番が回って来ました。ちょっと早すぎじゃないですか…

仕方がないので、ウノウがどんな会社なのか書きました。

周りが技術的な話をしている中で、なんか浮いてるな~

ベストオブくるり/ TOWER OF MUSIC LOVER

発売になったのをすっかり忘れてて、今日買ってきました。

ごまさんのおかげで、ほとんど聞いたことのある曲ばかりだけど、初回限定版で未発表曲が4曲入っていました。しばらくは、ずっとリピートだなー

ウノウなエンジニアになりました

退職したばかりで昨日の今日ですが、ウノウ株式会社に入社しました。

フォト蔵映画生活 などのネットサービスを提供している会社です。やはり、ここ数十年で最も大きなムーブメントであるインターネットの発展に関わっていきたいということと、動きの速いベンチャー企業で自らの力を試してみたいという思いからです。「今までにない全く新しいサービスを、日本発、世界中で使われるメタなサービスを」という目標も自分の志向とマッチしました。

今日が出勤初日だったわけですが、フリーアドレスのオフィス、スタンディングのミーティングなど、今までの職場と違ってかなり新鮮でした。 社員の方々 もさすが個性的な人材が揃っているようです。今週のAERAに載った記事とかも見せてもらいました。ほとんどの人が開発者ということもあり、話も合いそうで今後が楽しみです。まだまだスタートしたばかりですが、一緒に面白いサービスを公開できたらなぁと思います。

それと、今日からマカーになりました。「会社支給のノートPCはどれにする?」と聞かれて、ThinkPadは家にあるので今さらだなーと思い、MacBookをチョイス。普段からTerminalとFirefoxをメインで使っていることもあり、問題なくSwitchできました。使い勝手は、ほとんどLinuxのデスクトップと変わらないですね。最初からemacsとかsshが入っているのも便利です。

OSX標準のターミナルはいまいちなんだけど、他にいいソフトないですかね?

会社を退職しました

新卒時より7年4ヶ月働いた会社を本日(7/31)付けで退職しました。

あるわけないと思っていた送別会を開いてもらい、
自社だけでなくお客さんまでたくさん参加してくれて、
転勤で勤務地が遠くなった人がわざわざ駆けつけてくれて、
欲しかった電波時計の記念品までもらい、
お礼のメールを送ったら皆さん暖かい返信をくれ、
もう本当に目頭が熱くなりました。

今更ながら、つくづく自分は沢山の人に支えてもらっていたんだなぁと実感しました。


今まで自分が仕事で関わってきた人達は、本当に本当にいい方ばかりでした。 今回、どうしても新しいことにチャレンジしたくて退職することになりましたが、日立の製品はこれからも絶対に買います。最後は時間がなくて、頂いたメールに返信しきれませんでしたが、本当に感謝の気持ちでいっぱいです。どうもありがとうございました。