2007/11/30(金)hpricotで閉じてないタグを解析すると
<tt></tt> <tt></tt> </tt>ってhtmlがあったとしねえ。hpricotでこれを解析すると、ttの配列長は3になる。でもtt[3](1はじまり)にはnilがはいるよって話。
2007/11/30(金)Firebugがあまりに凄いので感動した
まず、開いているサイトのソースを見られる。そのソースをインタラクティブ変更してサイトへの反映を見られる。表示されてる画面の要素をクリックして該当するhtml elementをピックアップできる。ありとあらゆるリクエストをのぞける。XPathが取得できる(すばらしい!)。スタイルシートも見られる。スタイルシートもインタラクティブに変更して反映をチェックできる。
もう神過ぎて涙が出てきそう。
今のところ解析したHTMLで、存在しないTBODYを勝手に挿入してるのが不満だけど、ちっちゃい傷。
Firefoxのアドオンをきちんと調べたり探したりしているわけでもないのに、すでにValidatorとFirebugだけで欠かせないツールになりつつある。すごいねFirefox。
2007/11/30(金)Ruby on Rails[4]
・コントローラ内のインスタンス変数はどうもそのアクションで定義したものしかビューに伝わらないような感じ。ちょっとこれはまだ理解できていないのだが、変数のスコープはある程度動きを追わないと分からないかもしれない。
・関連して、@paramsとparamsは同一?
・text_fieldの階層構造が謎。アクセス方法は分かるけど何でこんなことをしている?
・SQL文を綺麗に書くメソッドがあると思うのだがみっからなかった。
・Routesの指定のしかたがわからない。
・image_tagを使わないとき、/public/imageファイルの場所は相対パスでどう書く?
・prefix的に'_'(アンダースコア)が使われることが多いので、アクション名にうかつに'_'を使うとバグった時にえらいことになりそう。セキュリティ的にも。どう解釈されるのか。そこで予約語はどう絡むのか。
[8]MySQLまわりのなぞ
・バイナリデータつっこんだときのまともなバックアップ・リストア法。
・予約語が多すぎませんか? 予約語ならつっこむときに警告を出してくれませんか? でもさすがに、fromとtoってカラム名を作ったのは私が悪かったと思います。
・MySQL AdministratorでUTF-8が文字化けするのは何でだろう。どういじっても解消せず。
・from節やwhere節って前後したらダメなの?
・ていうかSQLが優秀なのは認めるけど、書きづらいよ
・階層構造作りたい。楽に作りたい。
2007/11/30(金)Ruby on Rails[3]
renderは1アクションにつき1つという制約がある。Ajaxを使い始めると、Ajax部分を初回の表示に使いたかったりして、これが意外とこの制約に衝突することがある。打開策としては、ともかく設計段階から、Ajaxを使う予定があるところはrender :partial用にするとして、サブに分ける必要がある。
render :partialはアクションの実行がないというが一つ大事なところ。ここら辺は知識として知った上でないと設計で失敗しやすく、結構引っかかりやすいところだと思う。またrender: してからredirect_toもできない。メソッドを書いたとき、render :partialしたとき、redirect_toしたとき、どのアクションが実行されてどのビューが表示されるのか把握しておくのがRails理解の第一歩。
messageは知る限りもっともtypoが多い英単語。
[6]はまったところ、Ajaxまわり
link_to_remote, observe_formなど、Ajaxのメソッドを使うにはヘッダに
<%= javascript_include_tag :defaults %>
を書かなければいけない。けっこうどこにも書いてないので気をつける。あちこちで使いたいなら、/app/views/layoutsのモデルレイアウトに書いておけばよし。
RJSはerbではなく、純Ruby。RJSでは:partialを呼ぶだけにして、書き直す中身はサブビューに分離しておくのがスマートだと思う。
observe_formは:frequencyを書くと、Form.Observerになり、書かないと、Form.EventObserveになる。マニュアルにかいといて……
2007/11/30(金)Ruby on Rails[2]
自分のデスクトップ+WebRickで動かしていて、Apacheに移植するときの話。
基本参考サイトに従っていればいいのだが、いくつかはまりポイントがあるので記載。
fcgiで動かすために必要なことは、
・Apache側を対応させる
・Ruby側を対応させる
・アプリの設定で書く
と3つ必要になる。
(1)Apache側の対応
Apache用のFastCGIの実装には、fcgidとfastcgiで2種あるがApache2だとfastcgiがあやしいという情報があった。ただ、どっちでも動くとかどちらかはダメだとか情報が揃っていない。
aptitude searchして、debianのライブラリをのぞくと、fastcgiでもlibapache-mod-fastcgi,libapache2-mod-fastcgi2種あるので名前からfastcgiが動くと判断。
ということで、
#aptidue install libapache2-mod-fastcgi
する。aptが勝手に/etc/apache2/mods-available/fastcgi.confを作ってくれるので何も設定がいらない(なんて楽なんだ!)
#apache2ctl restart
してやる。
(2)Ruby側の対応
debianなので、
#aptitude install libfcgi-ruby1.8
してやるだけ。gemで入れた方が良かった?
(3)アプリ側の設定
a. public/dispatch.fcgiのRubyアドレスを書き換え。
#!/usr/bin/rubyとか。
b. .htaccess書き換え。
RewriteRule
↓
RewriteRule
c. パーミッション設定
dispatch.fcgi -> 755に
/log, /tmp(これ必要ないって噂あるけど)->777に
d. /config/database.ymlをサーバ側の設定に合わせる
データベース名、パスワードの設定など。場合によっては、MySQLのsocket位置を指定しなければいけないかもしれない。
また、以降アプリを更新する際は、/configと/public以外をコピーし、/public/images等に変更があった際はそれを個別にコピーでいいと思う。
[参考]
・pylori*style wiki - RailsでWikiクローンを作る12
http://tam.qmix.org/wiki/Minki12.html
・Apache2 + fcgid + Ruby on Railsメモ - sakuramateo.
http://d.hatena.ne.jp/sakuramateo/20060205/1139162716
・83's : /tmp/mysql.sockが見つからないって言われた
http://fg-180.katamayu.net/archives/2005/08/25/185402
2007/11/30(金)Ruby on Rails[1]
[1]チュートリアル
色々眺めてみたが、初心者用にぴったりのものがなかなかない。ある程度の機能は実装して見せてくれないと不足だし、マニアックすぎるのも取っつきづらい。Webアプリケーションだとどうしても画像を大量に用意してくれないと分からないというのもある。結局以下のサイト辺りが役に立った。
・Ruby on Rails チュートリアル 「Webアプリケーション開発方法」]
http://www008.upp.so-net.ne.jp/letitbe/
各機能を段階的に実装していること、一般的なアプリケーションで必要なパーツを多く実装していることから分かりやすいしお勧め。ただし、画像はあまりない(自分でやってみる系)。
・pylori*style wiki - RailsでWikiクローンを作る01
http://tam.qmix.org/wiki/Minki01.html
ここも良い。
・Rails' Wiki - AjaxOnRails
http://wiki.fdiary.net/rails/?AjaxOnRails
Ajaxに関してはこっちの方がわかりやすかった。
[2]情報源
・Rails' Wiki - FrontPage
http://wiki.fdiary.net/rails/
・RoR Wiki 翻訳 Wiki - FrontPage
http://techno.hippy.jp/rorwiki/
・Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
・ヽ( ・∀・)ノくまくまー
http://wota.jp/ac/?category=Rails
くまくまーの人のサイトは細かいTipsの山盛り。
ここら辺は追っておく価値がある。
[3]マニュアル
・Rails Framework Documentation
http://rails.rubyonrails.com/
本家
・RDoc Documentation
http://techno.hippy.jp/apidoc/
部分的な和訳
・Rails API ドキュメント
http://railsapi.masuidrive.jp/
本家とほとんど同じだが、全文検索できてattributesが本家より良く書いてある(要はRDocの設定をいじってる)。全文検索と書いてあるが全文検索ではない?
2007/11/30(金)トーンコンバートPowerTone1.5->3.0
トーンのコンバートとはPowerToneのトーンデータに関してのもの。PowerTone3.0のトーンデータがPowerTone1.5の内容を包含していないことに起因する。オフィシャルの全てのトーンを使おうと思ったら、この1.5のトーンデータを3.0用にコンバートしなければならない。
さて、この機能を提供するコンバータが、一応公式に公開されている。しかしこれがすさまじく出来が悪い。どうしても手作業部分が出てきてしまうので以前投げ出したのだが、今一度やってみようと思い立った。
まあ要は下のサイトの内容でよし。
http://sai.s103.xrea.com/pt/
このサイトを知らなければ指針が立たなかった。
しかし、それでもまだ手間が相当量発生する。これは最新のUpdaterを適用してしまうとトーンの選択に関してGUIを介してしかアクセスできないためで、UWSCを使っても自動化が難しい。しかしCD収録版などPowerTone3.0本体のダイアログが古い版を使えば何とかさらに簡略化ができる。tempトーンフォルダを作ってやって、同じところでマウスクリック→トーンファイルを一つ削除を繰り返すことでさらなる自動化が可能。そのためのスクリプトをUWSCで書いた。別件だけど、PhotoShopは新しいほどUWSCからメニューにアクセスしづらい感じ。別の記事でも書いたようにWinspector,WindowsControllerなどスパイソフトを駆使しよう。
それにしても、PowerToneのダイアログ周りの出来の悪さは本当に酷い。基本の機能はちゃんと考えられてるのにアクセスビリティの悪さがアプリの使い勝手を著しく悪化させている。
ComicStudioExねえ。のりかえるかね。
2007/11/30(金)intuos3ペン+シートの組み合わせ
ペンはクラシックペンにダイソーで売っている9mm経のペングリップをつけたものを使っている。土台はオーバーレイシート・マットタイプを使用。
ペン軸の方は長年の持ちづらさがこれで氷解した。ほぼこれがベスト回答だと信じられる。
ペン先は標準のペン先だと肩を壊すかもしれない。力が入ってしまいやすいので。かといってストロークペンは使いこなすには柔すぎる…… 中間くらいのがほしい。あとちょっと先が太いんだよな。とはいえこれでもそれなりにいけるのだとは思う。
タブレット表面のオーバーレイシートはまだ別の選択肢があるかもしれない。デフォルトのシートをヤスリで削ったり紙を敷く選択肢もある。ただ、紙を敷くのではすぐに紙がたわんでしまうのがネック。たわんだ部分が線のゆがみになるのがわかってやめてしまった。
組み合わせの摩擦度としては、フェルトペン先+マットだとちょっと重すぎるし標準ペン先+マットだとわずかに軽い。いつもは後者でやってるけど、状況次第で考えどこか。標準ペン先がもうちょっとざらついてるとベストなのだけど。
2007/11/30(金)intuos3その後
海外のWACOMサイトのForumをのぞいてみると、出るわ出るわ。どうやら頻出問題のようだ。
http://www.wacom-europe.com/forum/topic.asp?TOPIC_ID=6456
まとめると、
・WACOM側の対応は一貫してドライバ更新してくれ
・直る人もいる、直らない人もいる
・多分ドライバの問題(ていうかinfにintuos3が無いように見えるんですけど…… 関係ない?)
うーん現状問題が出なくなるドライバがリリースされるのを待つしかないようだ。
2007/11/30(金)コメント・トラックバック受付やめた
いやなんだろうね。ちゃんとすればちゃんとできるとは思うけど、sbにそこまで貼り付ける勇気がないというか…… サーバ早くなったし、もうMovableTypeでもtDiaryでも何にでも乗り換えられるってことは分かってる。でも乗り換えのコストもばかにならない。
あーでももうPerlとPHPは読みたくないよう。
(追記)と思ったらsbでは、再構築し直しても過去の記事ではコメントの受付を拒否できないようだ。あっはっは、sb切ろうっと…… とりあえずLimit POSTでローカル以外からのPOST禁止にしてみた。当面ツッコミがあれば掲示板によろしく。
(今日のハマリ)
.htaccessのOrder Deny,Allowのところでカンマにスペースを挟んではいけないらしい。うは。
(ハマリ追記07/12/07)
Limit POSTとすべきところに、Limit Postとしていたため全スルー。動かないでやんの。Apacheの仕様は難しいねえ。