Archive for July, 2009

CW and CCW

Saturday, July 18th, 2009

ClockWise&CounterClockWiseでゴザイマス。
さてさて、またも日記を書こうとしていたら日付が変わってしまいましたが、今回は今日の昼間にボーっとしていたら思いついたこと。
当初はLong and Winding Roadって題名で過去を振り返ろうという予定だったんですが、流れました。楽な方に。
んで図形科学2の課題でジェネバ歯車作ってるんですが、それだけだとオモシロミが無いので、折角だから適当な歯車と針を加えて時計モドキでもつくろーか、とえっちらおっちらやってます。

意外に歯車を作るというのが大変でして、針は一本になりました。
しかも減速比を間違えていて、歯車から作り直さなくてはいけないことに今日作業を終えて気付いたorz
愚痴はともかく、作業をすべく学校へ移動する前に家でボーっとしていたら、ふと、「時計回りって新しい言葉だよなぁ」と思ったんですよ。

ガリレオっていつの人でしたっけ?まぁいいや。とにかく、針が回る機械式の時計が登場するのは、大雑把に言えば16世紀以降ですよね。多分。
たしか振り子時計の発明者はガリレオの弟子のホイヘンスでしょー?
まぁ彼の発明した振り子時計に今のような針と文字盤があったかは知りませんが。
それから、ヴェルサイユ宮殿なんかに部屋ごとにやたら華美な時計が置いてあるのは、あの時代(17世紀)にもまだ機械式の時計は決して一般的とは言えないものだった、逆に言えば富と権力の象徴足りえた、ということでしょう。
じゃあ時計回りっていつから時計回りになったんだろーか。そして時計回りはどうやってde facto standardが決まったのだろうか。
論理的には、どっち回りでも同一の機能のものが作れますよね?
少なくともメカニカルにはどちらでも良い筈でしょう。

ぼーっと思考は飛躍します。
機械式の時計が登場する以前の時計といえば…蝋燭や線香を使った火時計とか水が落ちる速度を使った水時計ですか。
んーでも回転あー日時計を忘れていたw
おお。そうか北半球では日時計の針(影)は時計回りだなぁー。
と言う事は、初期の機械時計の製作者達は、較正を日時計を使ってやっていて、だからきっと機械時計の針の回転も「日時計周り」が「時計回り」になったのに違いない。
そうするとClockWiseに相当する言葉は古代ギリシャローマぐらいからあっても不思議ではないなぁ。

となんか一人で納得したのでした。
南半球では日時計の回転が逆になるってのをきちんと意識したのは初めてで、何か新鮮。
まぁ、普段からこんなカンジで私はボーっと思考しているのか、していないのか。
貴方の清き一票が私の思考を動かすとか動かさないとか。

WPMU覚書1

Thursday, July 16th, 2009

さて今回から数回のシリーズで、私が知る限りの知識範囲ではあるが、WordPressMUの構造と動作について書いて行きたいと思う。
今回は概要と、データベース構造くらいで。まぁ9割方自分用覚書ですが。

    目次

  1. でWordPressMUって何よ
  2. 概要
  3. データベース構成

でWordPressMUって何よ

まずはここから(しつこいね)。
まぁ公式(系)を見ましょうか。

WordPress MU、WordPressµ とは、ブログアプリケーション WordPress の複数ユーザ版(multi-user version)です。

ほうほう。つまりWordPressを複数ユーザ対応にしたものなのね。でWordPressは?
WordPress (ワードプレス) は、オープンソースのブログ/CMS プラットフォームです。
CMSはContent Management Systemだから、まとめると、複数ユーザで使う、ブログ/Webコンテンツを作成&管理するための土台のアプリケーションと言った所?プラットフォームって日本語にし難いですねぇ。
とにかく、今現在の見聞伝はこのシステムを利用しています。
便宜的に私が”本家”と呼んでいる部分ではCMSとして、他の個人ブログ(このブログとか)ではブログプラットフォームアプリケーションとして、ですね。
うーん英語をカタカナで表現すると、やたら長くなるよなー。Blog Platform Applicationだもんなー。
戯言は置いといて、次行きましょうか。
WordPressの何がいいのかと言えば、Webページの作成や編集がお手軽にできる(一応強調しておきますが、これでもかなりお手軽ですよ!)ので、グループでやる時にページ作成の負担を分担できる、というのが見聞伝で採用している理由、だと思います。
と言う訳で、皆さんがんがん記事を作って下さい(お前もな)。
あとは開発者(特にサードパーティ)が非常に多いので、様々な機能がプラグインの形で公開されており、それを利用できる、と言うのも大きな魅力でした。
とはいえ、大抵のプラグインはMUではなくて、ただのWordPress向けに作られて居るので、そのままでは動かないこともしばしばですが、それでも0から作るのに比べれば、遥かに省力です。
あとは基本的に内容とデザインが分離されているため、デザインの改造がやり易いとか、サイト全体的なデザイン設計/更新が簡単だ、と言ったことが上げられるでしょうか。
このサイト全体のデザイン設計をWordPressテーマと呼んでいる訳ですね。
そうそう、大事なことを忘れていましたが、WordPressはGPLです。改変や再配布も自由なライセンスです。そしてタダ!うーん素晴らしい。
(GPLは必ずしもタダであることは意味しません…ほとんどの場合はそうですが。)

概要

さてそんなWordPressMUですが、

  • Apache:Webサーバ
  • MySQL:RDBMS
  • PHP:CGI

が動作する環境が必要です。
これらのソフトのバージョンですが基本的には新しい方がいいです。しかしWPMUのバージョンによってこまごまと違う様なので、お気をつけ下さい(だれが?)。
ものすごーくおおざっぱに言うと、WordPressMUは、HTTPリクエストを受けると、

  1. Apacheのmod_rewriteの機能を利用して、あるディレクトリ以下へのアクセスを、全てwp-content/index.phpに集める
  2. 当初のリクエストURIから、どのブログにアクセスしているか判定
  3. 当初のURI(パーマリンク)をブログ毎に設定されたrewrite_rulesに基づいてクエリ形式(?year=2009&month=5&day=13&name=…とかそんなの)に変換
  4. クエリに基づいて、SQL文を生成し、データベースから表示する情報を取り出す(複数の投稿やページの時もある)
  5. 取り出して来た情報を、整形をして表示

と言うことをやっているらしい。細かい所把握してないことも多いけど、どうもこんな感じみたいですハイ。
今後も出てくると思うので、ここでWordPressで使う用語についてちょっと書いて置きます。
極めて誤解を招き易いことに、WordPressではややこしい用語を使います。言わばWordPress用語ですね。

投稿(Post)
WordPressで使われる、最も一般的な記事の形式。主に時事性があること-時とともに価値を減ずる様な情報とか-を記述することを意図している。メインページに表示される。
ページ(Page)
WordPressでは、通常の意味とは異なり静的な情報を保持しておくための記事の形式。階層性を持たせることも出来る。
テーマ(Theme)
サイト全体のデザインを決定するもの。各投稿やページのデータはデータベースに保持されているので、それをWebページとして表示するために使われる。
カテゴリ(Category)
記事などが所属するグループ。階層性を持たせられる。二重に所属することも可能。
タグ(Tag)
記事などに付けるキーワード。カテゴリと異なり、階層性を持たせることは出来ない。幾らでも付けられるのはカテゴリと同じ。

なんか記述がちぐはぐですが、まぁこんな所でご勘弁を。

データベース構成

WPMUのデータベース構成ですが、基本的には以下の様になっています。

  • 以下のテーブルはブログ毎に存在
    • comments::コメントを保存
    • links::リンクを保存?よく見てない
    • options::ブログの設定情報を保存している。超重要
    • postmeta::投稿のメタデータ
    • posts::投稿そのもの。実際はページも投稿も添付ファイルの情報も一緒にここに保存されている。
    • terms::タグやカテゴリーに使われた単語を保持してIDを振っている
    • term_relationships::termsに保存された単語が、どの投稿やページと関連を持っているかを保持している
    • term_taxonomy::termsに保存された単語を分類する、分類法を保持している。categoryなのか、tagなのか、とか。
  • 以下のテーブルはサイト全体で一つ
    • users::サイトに登録されたユーザの情報を保持しているテーブル
    • usermeta::ユーザの権限や、ブログではなくユーザに属する設定情報が保持されている
    • site::ドメインが保持されている。用途がいまいち分からない
    • sitemeta::サイト全体の設定。アップロード可能なファイルタイプとか、最大アップロード容量とか、利用可能テーマとか、過去のrss?とかを保持しているようだ
    • blogs::サイトにどんなブログがあるかを保持している
    • signups::良く分からない。使われていない?
    • registration_log::ユーザが承認されたことが記録されている
    • blog_versions::良く分からない。使われていない?
    • sitecategories::サイト全体で使ったtermが保持されている。実際にはcategoryに分類されないものも全部入っているので、この名前はどうかと

あ、あと前にも紹介しましたが、WordPressのデータベース構成はここを参照しましょう。なにしろコードの99%同じと言うだけあって、ほとんど同じです。
WPのデータの保存の仕方は、user friendlyというか、administrator friendlyと言うか、かなり「そのまま」です。フィールド名やキー名は見れば大体意味が分かりますし、保持されているデータも、人間の可読性を意識したものがほとんどです。
ちょこちょことデータベースから直接データをいじることを想定してあるんでしょうか。
まぁコーディングし易いってのが一番の理由ですよね…。

今回はこんな所で。既に十二分に長いし。次回からはリクエスト処理-というか呼び出し関係-を順番に辿って行きましょうか。自分のためにもなりそうだし。

セミ

Friday, July 10th, 2009

セミコンダクタ、ではなく。
なぜゼミナールはゼミと略すのにセミナーはセミと略さないのかという素朴な疑問、でもなく。
駒場で蝉が鳴いていた。
え?なに?夏?聞いてないよ!
つまりセミコンダクタとはセミのコンダクタ、即ちハーメルンの笛吹きならぬ、セミの鳴き声でセミを呼び集める謎の人物なんですね!良く分かりました!

大分錯乱しているようです。
…お前はもう、聞いている。

ぐれっぷ

Thursday, July 9th, 2009

今回は私が普段使っているユーティリティの紹介です。コーディングネタか微妙な所だ。
言わずもがなですが、全てフリーソフトです。
多少の手間をかければフリーソフトで大抵のことが出来る、いい世の中ですねー。

  1. grep
  2. csconv
  3. サクラエディタ
  4. Inkscape

grep
grepは便利ですよー。GoogleDesktopより便利です。
GoogleDesktopもインストールしてますけどね。
ただGoogleDesktopが検索対象にしているファイルは、
拡張子がdocやxlsやpdfやtxtと言った、一般的なものに限られています。
中身がプレーンテキストでもphpとかrbとか、とにかく一般的でない拡張子をつけてしまうと、
検索してくれないんですよね。
うーん不便。
なので、私はgrepを使っていますー。
でも何故か、-rオプションが、Macに同梱されているgrepでも、
Winに気付いたら入っていたgrepでも、動作しないんですよねー。
因に-rオプションを付けると、recursiveに、つまり下位にあるディレクトリの中身まで全部検索してくれます。
Winの場合は、Win版grepを落として来てパスの通ったディレクトリに置けば、動きますよ。
-rオプションも正常動作!これでWordPressの様な巨大スクリプト群の動作を追っかける時も怖くないぜ!
実際、複数のケースで謎の動作の原因究明に役に立ちました。
具体的には挙動がわからない関数の関数定義を探すのに使うのがほとんど。
希に変数も探すけど、変数の方が同じ名前のヤツが多い(その為のスコープですもの)ので、
そこまで役には立たないかなー。
is_single()の挙動とかはこれがなければたどり着けませんでしたよ。

CharSetCONVerter
略してcsconvとな。公式はこちら。
見ての通り、決して新しいソフトではないんだけど、必要十分な機能が備わっていて、とても使い易い。
Web上のファイルを扱うと、どうしても文字コードには悩まされますねー。
私は使っていませんが、コマンドラインからも使える点もGoodですよね。バッチ処理もバッチリorz

サクラエディタ
フリーのテキストエディタ。中々強力。Winでは結構利用者多いのではないかな?
公式はこちらです。
元々私はHTMLにしろ、何にしろ、プレーンテキストはWindowsのメモ帳(NOTEPAD.EXE)で扱っていたんですが、
流石にShift-JISしか正常に読んでくれないnotepadでは、utf-8やeucで書かれたテキストを読み書きするのは無理があります。
いちいちcsconv通すのも流石に面倒です。
そこで高機能エディタで適当なのを探して、当たったのがサクラエディタ。
ただ、設定を変更した後、タスクトレイから「サクラエディタを完全に終了する」とかそんなコマンドを選ばないと、
iniファイルが上書きされず、結果として設定変更が次回起動時にパアになるのには何度も引っかかっています。
特にbregexp.dllの場所を中々覚えてくれなくて…(お前がちゃんと終了してないだけだわさ)。
ただサクラエディタに搭載されている文字コード変換は、あまりうまく動作しないみたいなので、
文字コード変換はcsconvなり何なり、別のソフトで行うのが無難。

サクラエディタを使う上では、上でも書いたけどbregexp.dllと、それからDiff.exeを用意しないと、威力が下がりますw

Inkscape
フリーのドロー系グラフィックソフト。フリーのくせにかなり強力。公式はこちら。
英語のソフトだけど、日本語化は可能。ただし、2B文字対応が不完全なのか、
テキスト入力は散々な結果になる場合があるので注意を要する。
あと、バージョンが1になっていないだけあって動作が不安定で時々落ちるので、保存はこまめにしましょう。
最近Webに進出して来た、SVGの編集が出来る。確かepsも読めた気が…。
あと個人的に?重宝しているのは、ビットマップトレースの機能。
ラスタ画像を持ち込んで、Inkscapeを通すと、かなり綺麗にベクトル化してくれる。
実は、去年の駒場祭で作った資料の表紙のウィトルウィウス的人体は、この機能を使ってベクトル化したものを、編集している。
はじめから手作業でやることを考えると絶望的な作業でも、この機能を通せば結構出来る!
もちろん癖があるので、思い通りの結果を得るには、事前の下準備が必要だったりするけど。

最近は使っていませんが、MetasequoiaLEとか、Pixiaとかも一時期は結構使ってました。
ただ、3DCGは猛烈に時間がかかるのと、最近画像編集自体をあまりやっていないのと、
Office2001に同梱のMicrosoft PhotoEditorでトリミングとか、最低限の機能は揃っているので、どちらもあまり使ってない。
とゆーか、3DCGならフリーソフトのBlenderでしょ!と思ったけどこちらも放り出してます…。
結局Shadeから3DCGに入ってしまうと、なかなかポリゴンモデラに馴染めないってことですかねー。
でもBlenderはそのうち再挑戦するのだー。だってBullet使えるらしいしー。

多分そのうち他のツールも紹介します。最後に一言付け加えるなら、正規表現による検索と置換ができると作業効率が全然違いますよ皆さんってことですかね。なんだそのオチ?は。

多少劇的Before-After

Saturday, July 4th, 2009

なんというか、画像編集って素朴に恐ろしいですね…。
適当にちょこっと弄っただけで、随分印象が変わってしまいます。

元の画像

元の画像

編集済み

編集済み


上がBeforeで下がAfterでございます。
元画像は、気象庁の衛星画像のページから拝借した、ひまわり6号の画像(2009/07/03-16:00JSTのもの)なんですよ。
ガイア仮説のページで使おうと思って、少々画像が似合わんなぁ、と感じたので、若干ボカシをかけて、色調を明るくし、色温度を下げました。
編集している間は画像が徐々に変わるので、それほど差を感じなかったのですが、編集し終わって未編集画像と並べてみてみると、
「おいおい、こりゃ違うわ」と自分でやっておいてそれを言うか。
うーん皆さんも画像の効果には気をつけましょうね…。
視覚的に騙されるという話は良く聞きますが、今回自分でやってみてなんかしみじみ実感してしまった…。