Ubuntu 入れてみた。2008年11月13日 16時24分34秒

あんまりにもあっさり入ってしまうんで逆に怖くなるんですがw

しばらく腰を据えて使いつづけてみますかな…。


2008年 11月 14日 金曜日 00:45:02 JST - 追記

オンボードのサウンドデバイスがあるマシンで別途サウンドデバイスを増設して使用したい場合、オンボードのサウンドデバイスを BIOS の設定で無効化しないといけないらしい。Windows だと両方同時に使えたりするんだけど、この辺はもう Linux カーネル 2.6 の制限事項、なのかなぁ。 2.4 + ALSA のときは両方同時もいけたような気がしたんだけど…。

あと、ネットで拾った PDF ファイルでうまく閲覧できないのがあった。これなんだけど、日本語部分がまったく表示されない。多分フォントの問題だな。うちの会社の決算報告書は問題なく見れたけど。

デスクトップアプリも概ね充実してる。動画とかも大抵のファイルはそのまま見れちゃう。.fla とかも見れちゃう。knoppix では見れなかったからこれはちょっと嬉しかった。うん。もうちょっとゆっくり使ってみますw


2008年 11月 14日 金曜日 10:58:53 JST - 追記

Ubuntu には標準で PulseAudio というサウンドマネージャが入っていて、アプリケーションごとの音量コントロールとかができるようになっているらしいんだけど、各方面で重い重いと結構不評らしい。まぁ重いのも厭なんだけど、それ以前においらが使っている Delta 66 が PulseAudio と相性が悪いようで、 PulseAudio のプロセスが生きている間は音が鳴らないという有様だった。

で、これは PulseAudio を削除すれば解決するんだけど、Ubuntu 8.10 だと PulseAudio を起動しようとするセッションスクリプトを自分で削除する必要がある。その辺のやり方も含め、やり方が書かれているブログがあったので紹介します。超絶感謝 m(_ _)m 。

とりあえずホダ塾入れてみた。2008年04月22日 13時39分52秒

XOOPS Cubeホダ塾ディストリビューション入れてみた。いろいろと勘違いとかもあって入れるだけでも随分と時間がかかったが。。。

ドメイン移転終わったらまた入れなおす予定なので、セットアップ手順をメモしておく。あ、一応、ファーストサーバのデルタ1・シリーズ対象ってことで。

  1. Apache を使える状態にしておく。 mod_php5 とかは既に入ってた。

    %su -
    %vi /etc/httpd.conf  # 必要に応じて。 AddDefaultCharSet noneoff とか
    %vi /etc/php.ini  # 必要に応じて。デフォルトで概ね大丈夫そうだけど
    %/etc/init.d/httpd start  # 既に起動中の場合は restart
    %ntsysv  # httpd にチェックを入れる。ソフトバンクIDC が停電しても自動起動するように
    %chown murachi:apache /var/www/html    # だっけかな? ディレクトリ名変えちゃったからもう忘れたw
    %chmod g+s /var/www/html
    %exit
    %cd /var/www/html
    %cat > test.php  # 動作確認後、すぐ消す
    <?php phpinfo() ?>^D
    
  2. MySQL を使える状態にしておく。これも最初っから入ってる。

    %su -
    %mysql_install_db --user=mysql
    %vi /etc/my.cnf  # default-character-set=utf8 にする (後述)
    %/etc/init.d/mysqld start
    %ntsysv  # mysqld にチェックを入れる
    

    /etc/my.cnf は大体こんな感じ。矢印付きが書き加えた行。

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Default to using old password format for compatibility with mysql 3.x
    # clients (those using the mysqlclient10 compatibility package).
    old_passwords=1
    default-character-set=utf8  # ←
    
    [mysql.server]
    user=mysql
    basedir=/var/lib
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    [client]  # ←
    default-character-set=utf8  # ←
    
    [mysqldump]  # ←
    default-character-set=utf8  # ←
    
  3. MySQL の root ユーザーを設定する。 set password がなぜか使えなかった。

    %mysql -u root mysql
    mysql> update user set password=password('password') while user='root';
    mysql> flush privileges;
    mysql> quit
    %mysql -u root  # これで入れちゃったら設定失敗
    
  4. MySQL にデータベースとユーザーを追加する。

    %mysql -u root -p mysql
    Enter password:
    mysql> create database xoopsdb;
    mysql> grant all on xoopsdb.* to xoopsuser identified by password 'password';
    mysql> update user set host='localhost' while user='xoopsuser';
    mysql> flush privileges;
    mysql> quit
    %mysql -u xoopsuser  # これで入れちゃったら設定失敗
    %mysql -u xoopsuser -p xoopsdb
    Enter password:
    
  5. ホダ塾Xoops を環境にコピーする。 chmod g+s をうまく使えばグループ apache で統一されるので、書き込み権限必要なファイルやディレクトリも chmod 777chmod 666 ではなく、 chmod g+w で足りるようになる。

    %cd
    %mkdir hodajuku
    %cd hodajuku
    %wget http://jaist.dl.sourceforge.net/sourceforge/hodajuku/hd_full_1_0_1b.tar.gz
    %tar -xzvf hd_full_1_0_1b.tar.gz
    %cp -R html/* /var/www/html/
    %su  # XOOPS_TRUST_PATH のコピー先ディレクトリを先に用意する。グループを apache で統一するため
    %mkdir /var/www/xoops_trust_path
    %chown murachi:apache /var/www/xoops_trust_path
    %chmod g+s /var/www/xoops_trust_path
    %exit
    %cp -R xoops_trust_path/* /var/www/xoops_trust_path
    %cd /var/www/html
    %chmod g+w cache uploads templates_c mainfile.php
    %cd ../xoops_trust_path
    %chmod g+w . cache uploads templates_c modules/protector/configs
    
  6. ブラウザからサイトにアクセスすると、インストールが始まる。指示に従って進める。言語は ja-utf8 (だっけ?) を選択。

  7. すべてが終わったら、不要なインストールの残骸の除去と、権限設定の修正を行う。

    %cd /var/www/htdocs/
    %rm -rf install
    %chmod g-w mainfile.php
    

Tue Apr 29 21:19:28 JST 2008 - 追記

以下の修正をしました。指摘 thanks >ぐるりさめ。

  • × AddDefaultCharset none
    • → ○ AddDefaultCharset off

ちなみに、実際の鯖の設定を確認してみたら、ちゃんと「off」になってた。何を見て間違えたんだろう>ヲレ。。。

mod_perl の無い環境で Apache::Registry みたいなことをする方法を考える2008年04月10日 23時59分27秒

まだやってないけど。

CGI 呼び出しによって毎回起動するプロセスを「呼び出し側プロセス」、実際の処理と出力を行うプロセスを「処理側プロセス」と呼ぶことにして。

呼び出し側プロセスの処理は以下の通りかな。

  1. 名前付きパイプ pipe_A が無ければ作る。
  2. 名前付きパイプ pipe_B を作る。これは毎回、違う名前で作る。
  3. 処理側プロセスが存在しなければ fork し、子プロセスを処理側プロセスとして、そのプロセス ID をファイルに記録する。
  4. pipe_A を開き、pipe_B のファイル名と環境変数、そして標準入力からの入力を出力する。
  5. pipe_B を開き、入力した内容を標準出力に書き出す。
  6. pipe_B を削除する。

処理側プロセスの処理は以下の通りかな。

  1. pipe_A を開き、pipe_B のファイル名と環境変数、そして標準入力からの入力を入力する (その単位でデータを適切に読み出せるよう、データのサイズがわかるようになっている必要がある)。
  2. 処理を行い、結果を pipe_B に書き出す。
  3. 1 に戻る。

懸念点。つか、おいらの知識が圧倒的に足りてないだけの話なんだけど。

  • 呼び出し側プロセスは毎回起動するわけだからあんまり解決になっていないのでは?
    • 処理側プロセスが大量のモジュールを読み込むような場合には、それなりに効果はあるのかも。
  • mod_perl が使えないような環境、すなわちさくらのレンサバみたいなレンタルサーバー環境では、処理側プロセスみたいなのは短時間で kill されちゃうだろうから運用的には効果は薄いのでは?
    • その辺、ログを録ったりして実際の動きを確認してみたい。
    • 実際に使われているシグナルの種類次第では、トラップして無視って運用もありかも。。。 (危険!!^_^;)
  • パイプによる通信コストは無視できないのでは?
    • これが一番のネックになりそうな気がする。もっとマシな方法がありそうなんだよなぁ確かに。。。
  • pipe-A はセマフォ的なアクセス制御が必要では?
    • アクセスが集中した場合、呼び出し側プロセスの待ち行列を DB か何かで管理して、行列が一定数を超える場合は 503 エラーにしちゃう、みたいな運用かなぁ。
  • mod_perl で動かせる環境との間で可搬性が失われるのでは?
    • そこはあまり心配してない。 mod_perl 用に別途インタフェースを用意して、どっちからでも同じように呼び出せるような作りにするのはいくらでも可能なはず。

以上、妄想メモ。

Trac に TracBlogPlugin を入れてみたよ。2008年04月07日 01時08分13秒

  • だいたいこちらさんの書かれていらっさる通りにセットアップできました。
  • 本家にも書かれているけど、TagsPlugin のバージョンは 0.3 以上 0.5 未満じゃないとダメ (いまんところ)。こいつの最新版が現在 0.6 なのですが、それだと (テストしてないだとかそういうレベルではなくて) 動きません。おいらは 0.4.1 を入れたよ。
  • インストールは基本的に、python setup.py install prefix=<libディレクトリを配下に持つディレクトリへのパス> って感じで ok 。依存関係とかもチェックしてくれるので、 python setup.py bdist_egg するよりも断然オススメ。
  • インストール後、trac-admin <env-path> upgrade するのを忘れずに。おいらはこれでハマッタ\(^O^)/
  • trac.ini の [components] ディレクティブには、本家に書かれている tBlog.* = enabled 必要 (こっちを鵜呑みにしちゃうと欠けちゃうので)。但し、[trac] ディレクティブの default_handler 行は、トップページもブログにしてしまいたいのでなければ TracBlogPlugin ではなくて TagsWikiModule にしておくべき。
  • そして絶対に忘れちゃいけないのがパーミッションの変更trac-admin の対話モードで以下のように type するのを忘れずに (但し myuser はあなたのユーザ ID に置き換えること)。これをやらないと誰もブログにアクセスできなくなる (これも微妙にハマッタw)。
    permission add anonymous BLOG_VIEW
    permission add myuser BLOG_ADMIN
    
  • セットアップに成功すればメニューに「Blog」というのが出てくるので、[[BlogShow]] だの [[BlogPost]] だのは基本的にはどこかに書く必要なし。但し Wiki ページのどこかに組み込んで使いたいのであれば、これらのタグはそれなりに有用。

ついに ActivePerl も2008年04月03日 22時20分16秒

5.10.0 の配布が始まってしまった。。。

さくらのレンサバでの採用も秒読み段階だろうか? 個人的に動かしてる自作 CGI が pseudo hash 使っちゃってるもんだから、気が気でしょうがないのよね ((((/;^^)/

とりあえず後で落として動かしてみますか。。。

Gentoo Linux の方はどうなってるんだろ? そっちも確認してみないとなぁ。。。

さくらレンサバに入れたTracから通知メールが飛ばせない2008年04月03日 16時05分58秒

前々から使っているさくらレンタルサーバ上に、最近 Trac を入れて使おうとしているのですが、メール通知の設定をしても、通知メールがうまいこと飛んでこなくて困っています。

trac.ini の [notification] ディレクティブの設定内容は以下の通り (ドメイン名、メールアドレスは便宜上変えてあります)。

[notification]
always_notify_owner = true
always_notify_reporter = true
always_notify_updater = true
mime_encoding = base64
smtp_always_bcc =
#smtp_always_cc = example@example.sakura.ne.jp
smtp_default_domain =
smtp_enabled = true
smtp_from = example@example.sakura.ne.jp
smtp_password =
smtp_port = 587
smtp_replyto = example@example.sakura.ne.jp
smtp_server = example.sakura.ne.jp
smtp_subject_prefix = __default__
smtp_user =
use_public_cc = false
use_short_addr = false
use_tls = false

smtp_always_cc のコメントアウトをはずすと、そこで指定したメールアドレスがレンタルサーバー上に設定されたアドレスであれば、そのアドレスにだけはメールが届きます。

smtp_always_cc をコメントアウトしたままの場合、以下のような動作になるようです。

  • Ticket の報告者がレンタルサーバー上に設定されたメールアドレスを設定している場合、通知メールは問題なく配信される。

  • Ticket の報告者がレンタルサーバー外の (例えば ISP などが提供する) メールアドレスを設定している場合、通知メールは届かない。そして、log/trac.log には以下のようなエラーログが出力される。

    2008-04-03 16:13:26,873 Trac[web_ui] ERROR: Failure sending notification on change to ticket #3: {u'murachi@example.ne.jp': (553, '5.3.0 <murachi@example.ne.jp>... Please receive your mail before sending')}
    Traceback (most recent call last):
      File "/home/example/local/lib/python2.4/site-packages/trac/ticket/web_ui.py", line 562, in _do_save
        tn.notify(ticket, newticket=False, modtime=now)
      File "/home/example/local/lib/python2.4/site-packages/trac/ticket/notification.py", line 129, in notify
        NotifyEmail.notify(self, ticket.id, subject)
      File "/home/example/local/lib/python2.4/site-packages/trac/notification.py",line 216, in notify
        Notify.notify(self, resid)
      File "/home/example/local/lib/python2.4/site-packages/trac/notification.py",line 115, in notify
        self.send(torcpts, ccrcpts)
      File "/home/example/local/lib/python2.4/site-packages/trac/ticket/notification.py", line 275, in send
        NotifyEmail.send(self, torcpts, ccrcpts, hdrs)
      File "/home/example/local/lib/python2.4/site-packages/trac/notification.py",line 368, in send
        self.server.sendmail(msg['From'], recipients, msgtext)
      File "/usr/local/lib/python2.4/smtplib.py", line 691, in sendmail
        raise SMTPRecipientsRefused(senderrs)
    SMTPRecipientsRefused: {u'murachi@example.ne.jp': (553, '5.3.0 <murachi@example.ne.jp>... Please receive your mail before sending')}
    

別に通知機能自体は今すぐ必要なわけではないんですが、何でこうなっちゃうのかだけは一応知っておきたいので、とりあえずメモってみます。。。

そもそもさくらのレンサバの sendmail がそういうものなのかなぁ。。。あ、ちなみに smtp_port が 587 になってますが、25 のままでももちろんダメでした。


Thu Apr 3 21:30:39 JST 2008 - 追記

とりあえず調べてみたらエラーの内容はなんとなくわかってきた。

  • SMTPRecipientsRefused は、 Python のモジュール smtplib が送出する例外で、すべての受取人が (sendmail コマンドによって) 弾かれた場合にのみ発生するらしい。
  • ログの最終行の 553 という数字は、 sendmail コマンドが返すエラーコードで、不正中継っぽいもの (spam の踏み台である可能性があるケース) を弾いたときのものっぽいです。

さくらのレンサバの sendmail コマンドのポリシーがどうなってるのかがいまいちよくわからんのですが、その辺の設定が仮に変えられるのだとして、その為に spam の踏み台になるリスクが生まれるんだとするとそれはさすがにまずいので、この辺は良く調べてから対応したほうがよさそう。そもそも回避できないのかもしれないけど。。。

当面は通知なしで運用しようかな。(←ひよったw)

はてなスターを設置してみた2008年03月20日 21時42分01秒

いまさらでつが。

本エントリーはおいらが自分でテストするためのごみエントリーでつ。セルフスターがあるけど突っ込み無用。。。

Vista Aero で Spy++ を使うと Blue Back する2008年03月06日 18時05分47秒

ハイクにもメモったけど、 Vista で Aero 使ってる状態で、 Spy++ から「ウィンドウ ファインダ ツール」ってのを使ってウィンドウを選択しようとすると、選択したウィンドウが任意のウィンドウの一番外側 (タイトルとかがある部分、よーするに、いわゆるフレームウィンドウと呼ばれる部分) だった場合に、画面が青くなって Windows を道連れにコケてしまう、という現象に見舞われた。

自宅マシンには Vista は入れてない (つか、持ってない、つか、欲しくもないw) ので追加検証ができてないんだけど、誰か同じような現象にあったという人、他にいます?

スペックはあんまり詳しく書けないけど、Vista Business で Core2 Duo で RADEON の Dell マシン。

blogosphere は「新しい知識人」の代替となりうるか?2007年12月24日 14時37分31秒

 全体性を知らないエキスパートからは「善意のマッドサイエンティスト」が多数生まれます。自分が開発したものが社会的文脈が変わったときにどう機能し得るかに鈍感なエキスパートが、条件次第では社会に否定的な帰結をもたらす技術をどんどん開発していきます。
 バイオの領域でもIT(情報通信)の領域でも、人間であることと人間でないこととの境界線を脅かすような研究が進みつつあります。そうした社会であればこそ、社会的全体性を参照できるような知識人、私の言葉でいえば「新しい知識人」が必要となるわけです。
 新しい知識人は、大衆を導くというかつての課題とは違った課題に取り組む存在です。エキスパートが社会的全体性を弁えないがゆえに「暴走」してしまう可能性を、事前に抑止するような役割を果たす存在です。そうした存在がこれからますます要求されるべきです。
 欧米のノーベル賞級の学者の多くは、大衆向けで分かりやすいものの、極めてレベルの高い啓蒙書を書けます。知識人には専門性を噛み砕いて喋る能力が必須です。そうした能力は公的なものです。日本にそういう学者が数少ないのは、知識人がいないことに関連します。

これを読んでみて思ったのが、blogosphere が、宮台氏の言う「新しい知識人」の代替となりうる可能性についてです。大学に足場を置いた学問の世界では専門外の分野との繋がりが疎遠になりがち (そもそもそれが駄目なんじゃ、という気もしますが。。。) なのに対して、blogosphere には専門の異なるエキスパート同士の交流と議論がありうるからです。

もちろん、そうなるためには、blogosphere に参加する多くの人が、「新しい知識人」を目指すことが前提に無ければならないのかもしれません。今はまだ、専門の異なる者同士の見識の断絶が、有益な議論を阻害しているように感じています。例えば、Winny の違法性を巡る裁判および判決に対しては、専門の違いによって以下のように見識が割れました。

  1. Winny 自体は何ら法に抵触しないとしながら、金子氏のとった態度への評価として実刑が下された判決であり、今後の開発に不安を覚える。(プログラマー)
  2. 金子氏の行動が社会的に及ぼした影響と、氏の態度を考慮すれば、この量刑は妥当な手打ちであると言える。(法学者)
  3. 著作権よりも、ひとたび流出した「秘匿すべき情報」が回収できないような仕組みになっていること自体が重大であり、そのことに対して新たな法的枠組みを早急に作るべきだ。(セキュリティ研究者)

まぁ、3つ目は当の裁判とは直接の関係は無かったわけですが。。。

上記の 1 と 2 は、相容れない意見として最後まで断絶していたように思います。1 の意見に固執するプログラマーには、技術が時としてもたらす無制限の損失の可能性に対して、法的手打ちを欲する (あるいは必要とする) 権利者という社会的構図に対する理解が足りなかったし、2 の意見に固執する法学者には、有益なソフトウェアを発明し、開発する個人プログラマーが、法的リスクに尻込みすることで技術的発展が損なわれる可能性に対する理解が足りなかった。

これらの双方が歩み寄って足りない理解を補い合うことで、より有益な議論を導き出すことができたのではないかと思うんですよね。個人的なソフトウェア開発が法的リスクに晒されるのは恐い。でも、なんでもありの個人開発を法的に放置することによって、具体的な損害を蒙る人が出るような事態は避けるべきだ。ならば、双方を満足するようなより高度な解決策は何なのか。そこに法的不備の可能性は無いのか? かといって、ad hoc な法の調整で事足りる問題なのか? 等々。

こんな感じで、今はオタクでしかない各分野のエキスパートたちが、議論の場としての blogosphere を通じて、「新しい知識人」的な、即ち横断的な知識の共有と蓄積を繰り返していけると良いのではないか、と思いました。

Flex2 勉強会 in OPTiM with クジラ飛行机さめ2007年08月26日 03時10分00秒

この記事に tb を飛ばすということは、すなわち今の勤め先を明かすことになってしまうわけですが。。。まぁいいか。w

金曜日の夜、職場にクジラ飛行机さんがやってきて、Adobe Flex 2勉強会を開きました

勉強会
勤め先である OPTiM では、(ほぼ) 毎週金曜日に「Happy! Friday!!」と題した宴を開き、会議室で酒と食い物を囲んでプレゼンとかを肴にわいわいやるという、なかなかステキな習慣がある (こんな解説でいい?>しゃちょー)。
今回のプレゼンも、某プロジェクトの最終リリース直前という激務な状況を押してw開かれた Happy! Friday!! の枠の中で行われました。

リンク先でも公開されているプレゼン資料を基に、勉強会は行われました。厳密には機密であろうと思われるので発言に責任はもてませんが、今回の勉強会での感触 (あの場にいた全員の反応もさることながら、特に社長のはしゃぎっぷりw) を見る限り、今後、あの会社での多くのプロジェクトで Flex は確実に使われていくことになるであろうと思われますし、おいらも機会があれば個人的にも使ってみたいとかなり本気で思わせてくれる内容でした (誇張でもなんでもなくて)。

当日はあんまりまじめにメモを取ったりしなかったので (^_^;、復習として、覚えている限りで今のうちにいくつかメモ。でもかなり欠落してるかも (酔っ払ってたし)。。。突っ込みとかあればヨロです。>クジラ飛行机さめ、その他参加者

  • そもそもこのプレゼン資料自体が Flex2 で書かれているSun Aug 26 22:32:31 JST 2007 - 訂正: 普通に Flash だそうです。。。つか、Flex2 は Flash 9 以降で動くって、そういえば勉強会でも言ってたじゃん>ヲレ m(_ _;)m。Wii でも動作する。ていうか実際 Wii で動くところをその場で実演してくださいました(なんで職場に Wii があるんだよとかいう野暮な突っ込みは禁止)
  • p.14:
    • <mx:Script> タグ内にスクリプトを記述。ここでは sayHello() 関数を定義。
    • <mx:Application> タグの initialize 属性に、アプリケーション初期化時に実行したいスクリプトを記述。ここでは sayHello() を呼び出している。
  • p.15: いろんなサンプルを実際に紹介してくださいました。この辺からも漁れるのかしら?
  • p.22: そういえば、3行目の name 属性値指定による取り出しの場合、検索コストってどうなってるんだろ? hash? それとも順序付きだから map? あるいは普通に quick sort なのかなぁ?
  • p.25: 仮に、
    <mx:XML source="data.xml" id="Data" />
    

    として、data.xml 内で p.24 の内容を定義した場合、上記のタグを置いたファイル内のスクリプトでは、

    var hoge:Number = Data.num_ary[0];
    

    ってな感じで参照できるんだっけかな。

  • p.29: Flex Builder に添付のヘルプがまさにこれで記述されている。機能的にはまさに JavaDoc。
  • p.48: バインド結果を微妙に変えたい場合は、この場合では id="b_txt" の方の text 属性の中身に任意の処理を記述した関数をかますなどすればいい。
  • p.51: これか。日本語の情報だとこの辺とかがわりと詳しいかな。よーするに Flex だけでスタンドアロンなアプリをさくっとでっち上げてしまうためのツール、ということらしい。
  • p.54: 「本出たら買ってください。」の一文は勉強会の後に追加されたものかと思われw。多分そのうちこのページかその次あたりに本の表紙画像が貼られて、クリックすると Amazon に飛ぶようになるのではないかと思われwww。
  • 追加の質問: マウスの右クリックにて表示されるコンテキストメニューは概ね自在に編集可能。但し右ボタンにコンテキストメニュー表示以外の動作を割り当てることは不可。(この辺の制約は Flash 的に過去バージョンからずっと引き継がれているものだった希ガス)
  • 追加の質問: マウスホイールは、Windows のみ対応可能。タブレットの筆圧などには非対応。
  • この後、OPTiM にて開発しているプロジェクトをいくつか紹介し、それらに対して Flex を活用した場合の効用などについても評価していただいたりしました。
    • HTML + JavaScript で一生懸命しこしこ書いて作ったギミックとかも Flex なら「一行でできちゃいますね~」とバッサリ。
    • 現状 Rails で書いている Web アプリを、UI 部分を Flex に切り替える場合、Rails は使い続けられるのか? とか (この辺の対策は課題)。