MT 4.1をインストールしたせいなのか、ブログエントリの本文が突然かけなくなるという問題。
”Permission denied to get property Window.App”
のエラーが発生。
原因:ドメインが違うとJavaScriptが動かない。mt-config.cgiに含まれるmt-staticのドメインをmt.cgiと同じにすること。
先週新しいホスティング会社にm*.comとs*.comを移行した。テストのために、最初にs*.comを登録してMT4.1検証。のちにm*.comをparkさせた。メインはm*.comであるので、それからm*.comを使い始めたのだが、その時点ではmt-staticがまだs*.comであったためにm*.comからのアクセスを拒否されたというのが原因。解決方法は、mt-config.cgiを書き換えること。
以上
http://www.farecast.com/
航空券を「いつ」買ったらいいか教えてくれるサイト。いまのところ、アメリカ国内だけみたいですが。すでに2年くらい前に話題になったところらしいけど、最近本を読んでいてて気になったのでメモがわりに。。。
今やデータマイニングを駆使して、企業が特定の消費者をターゲットに物を売りつける時代ですが、それに対抗して、消費者側の立場からデータマイニングでより有利な条件で物を買うことを目的としたサイトの一例です。
こういう対抗策を持たないと、これからはどんどん搾取されるのでしょう。
だから、学校では確率統計を最初にちゃんと勉強させて、いかにデータと付き合うかを最初に勉強させるべきだと思いますが。
昔の同僚の紹介で日本のテレビを録画できるサーバーを共同で使わせてもらうことになった。だいたい10人くらいで個人のテレビ録画サーバーを共有しているらしいが、最近ヘビーユーザーの一人が日本に帰国して、使用頻度が下がったのでその空いた帯域を分けてもらった次第である。
早速日本のテレビ番組を録画してみた。「からだであそぼ」、「ぜんまいざむらい」、「おかあさんといっしょ」、「ピタゴラスイッチ」。タイトルから推測されるとおり、すべて子供番組。うちの息子のためである。Mくん、ありがとう!おかげで日本語学習が進むよ〜。
ここからが本題。うちのメインマシーンはmacbook pro。サーバーにはwebから予約をして、ftpでmpegファイルを取得する。問題なのはどうやってテレビで観るか。macbook proからビデオ出力はできなくはないが、使い勝手が悪い。当初考えていたのはmpegファイルをすべてmpeg4/h264フォーマットに変換して、apple tvで観る方法。しかし当然apple tvを購入しなければならない。もう少しでapple tv購入を踏み切ろうかと考えていた矢先、ビデオコンバータの「おまけ」に目がとまった。
http://www.techspansion.com/visualhub/
TivoGoBack (英語での説明: http://www.tivoblog.com/archives/category/tivogoback/)
うちにはTivoがある(日本語放送録画以外ほとんど使っていないが...)。で、このソフトが何をしてくれるのか。Mac上にあるmpegファイルをTivoに転送してテレビでビデオをみることができる。
PCではTivo Desktopによりすでに実現している機能だが、なぜかMac用のTivo Desktopでは音楽と写真のみサポートされている。しかしTivoGoBackによりビデオも転送可能になるので、Tivoからの視聴が可能になる。
手順は以下の通り
- TivoとMacが同じネットワーク上にあるのを確認。
- Mac用のTivo Desktopをダウンロードしてインストール
- Tivoから、Mac上にある音楽と写真がアクセスできることを確認
- Virual Hubを購入、$30程度
- 「おまけ」のTivoGoBackをインストール
- Visual Hubで録画したファイルをTivoに最適化されたmpegで保存。
- Tivoとの共有ディレクトリにコピー。
- Tivoから「Now Playing List」の一部としてMacの名前が出てくるので選択
- Tivo共有ディレクトリのファイルが見えるので、ファイルを選択、アップロード(ダウンロード?)開始
さらにアップしている途中から観られるので便利です。
ズバーット、解決しました。
改行出来るかどうかのルールが掴めない。。。次のコードはエラー
errors.add(:price, "should be positive")
unless price.nil? || price >= 0.01
syntax error, unexpected $end, expecting kEND
これはオーケー。
validates_format_of :image_url,
:with => %r{\s(gif|jpg|png)$}i,
:message => "must be a URL for a GIF, JPEG, or PNG image"
しかし先の例はこのように変更しなければいけない。
errors.add(:price, "should be positive") unless price.nil? || price >= 0.01
なぜだ?何かruby特有の文法を見逃したのかも。
- データベースのテーブルスキーマの変更は特に問題なし
sqlite> alter table products add column date_available datetime;
sqlite> .schema products
CREATE TABLE products
(id integer primary key autoincrement,
title varchar(100),
description text,
image_url varchar(200),
price decimal(10,2)
, date_available datetime);
sqlite> delete from products;
- Productページの再生成、-fオプションを付けると強制的に上書きされる
$ script/generate scaffold product image_url:string title:string description:text price:decimal date_available:datetime -f
- Validation関係はそのまま
validates_presence_of :title, :description, :image_url
validates_numericality_of :price
validates_uniqueness_of :title
valdates_format_of :image_url, :with ..., :message...
- app/views/products/index.html.erbを編集して見かけを変える
参照するオブジェクトは、@productsで同様。
rhtmlに代わって、erbという拡張子が2.xからの標準らしい。他は、scaffordが生成したコードに多少違いはあるが、変更の仕方はほぼ同じ
以前railsの学習を試みたときは、scaffoldにとまどったが、ページをいろいろ変更してみて気がついたのが、scaffoldってあくまでMVCモジュールのワイヤリングをするだけであるということ。ModelレイヤーのORマッピングはほぼそのまま使えるが、ControllerとViewは手を入れるのが基本なんだね。ぶっちゃけて言えば、scaffoldってアプリケーションをとりあえず動かして達成感を味合わせて、次のステップにプログラマーを進ませるのが仕事なんだろう。そういうのって大事ですね。
本書では「まだ」カバーしてないであろう、sqlite3 + Rails 2.0.2を使ってみた。
1. railsアプレケーションを作成
$ rail depot
2. データベースファイルを作成
$ cd depot/db
$ sqlite3 depot.db
3. テーブル作成
sqlite> create table products (
...> id integer primary key autoincrement,
...> title varchar(100) not null,
...> description text not null,
...> image_url varchar(200) not null,
...> price decimal(10,2) not null);
変更点はidの型がintegerでprimary keyであること。autoincrementは特に要らないが、明示的に示して混乱を避ける。
4. scaffoldを使ってproductページの作成
$ cd depot
$ script/generate scaffold product image_url:string title:string description:text price:decimal
Rails2.xでは、表示するフィールド名を明示的に指定しなければならないらしい。
5. 確認
http://localhost:3000/product
いろいろ試して動作してますか?
6. ついでにDBを検索
$ cd depot/db
$ sqlite3 depot.db
sqlite> select * from products;
(つづく)
http://japan.cnet.com/blog/kenn/2007/12/19/entry_25003169/
江島さんが、本当に唐突にrailsのセットアップについて書かれていたので、せっかくなのでインストールしてみた。手元にマックあるし、Leopardだし。
実は1年半くらい前にrailsを習得を試みたことがある。しかし当時rubyの習得がままならないままだったので、チュートリアル通りにコードを書けても何が起こっているのか理解できず、何を変更すれば自分がやりたいことができるのか分からないので、一度はあきらめた。しかし最近「楽しいRuby」を読んだおかげで少しは読めて書けるようになったので、再挑戦。'@'が変数の前にくっついていても配列じゃないと認識できるのは進歩だと思う。
ところで、以前からうざいと思っていたのが、データベースの設定。railsのpersistent layerにはmysqlが推奨データベースであったため、別途インストールの必要があった。特にLeopard用のバイナリ配布はまだ行われておらず、ソースからビルドする必要がある。すげー面倒。
しかし、rails2.0.2からはsqlite3がデフォルトとなった。これは非常に喜ばしいことだ。というのもsqlite3にはデータベースサーバーを起動するという概念がなく、ファイルに対して直接SQLを投げてデータの格納、取り出しを行うので、取り扱いが非常に簡単だ。データの移動やバックアップはファイルの移動、コピーだけですむ。そうした手軽さからembeded dbとして利用できるので、他の製品と配布も簡単である。実際,google gearが使っている。railsにembedされるということは、別途sqlサーバーをインストールしなくていいわけである。
さて、江島さんのチュートリアルどおりにインストールしてみたが。。。簡単そうだけど、一筋縄ではいかないなぁ。。
- MacPortsをダウンロードしてインストールは、問題なし
- Ports自身が最新であることを確認
$ sudo port -v selfupdate
portがないと言われる。/opt/local/bin/portだけど、PATHを含む.profileが呼ばれてないことが判明
- Ruby Gemsをインストール
$ sudo port install rb-rubygemsなぜかいきなりperlをインストールし始めた。。。えっ、rubyじゃないの?という心配をよそに一見関係ないがおそらく必要であろうパッケージを大量にインストール。結局30分くらい掛かった。
- Railsとその関連モジュールのインストール
$ sudo gem install rails --include-dependenciesgem関連のファイルが見つからないと言われる。。。sudo port uninstall rb-rubygemsを実行して、sudo port install rb-rubygemsで解決しかし2.0.2を選んでも404エラー、どうして?$ sudo gem update --systemでgem自体をアップデートしてから再挑戦すると解決。
- Railsでとりあえずサンプルを作ってwebサーバー起動
$ rails rails-demo$ cd rails-demo$ script/generate controller hello$ vi app/contoller/hello_controller.rb$ (def worldメソッド追加)$ script/server問題なし。このあたりは前に何度かやったことがある。
- アプリケーション動作確認
http://localhost:3000/hello/worldsqlite3が見つからないと言われる。デフォルトだって言ったじゃん!ruby -e "require 'rubygems'; require 'sqlite3'"を実行してもやはり見つからず。sudo gem install sqlite3-rubyで解決。やはり別途ドライバが必要なのね。Leopardでは必要ないと書いてあったが、なにかの手違いか?
Facebookはアカウントないので、取得してからまず様子を見ましょう。
以上、何とかhello worldは動きましたっと。
「たのしいRuby」を読んでようやくRubyを始めるとっかかりを得た。初心者向けの本を敬遠していたが、新しい言語を習得するには初心に返った方が結局早道であることを再認識した。
Ruby関連の本で最初に買ったのは「Ruby Cookbook」である。しかし、いきなりハウツーの本を読んでしまうと、確かに分かったような気になるのだが、自分でコードが書けるようなるかどうかは怪しい。特に問題と答えが隣り合わせに書いてあると、考えることもなくひたすら暗記するか、何度も読んでいるうちに身につくことを願うしかない。もしくは、自分でアプリケーションを書いてみて分からないことを調べていくと身につくのは分かっている。
しかし、差し迫って作りたいアプリがあるわけでもなく、練習問題があって答えがウェブにある「たのしいRuby」は非常に効率的に言語習得できたような気がする。
ところで、Rubyは「たのしい」のかという疑問。「たのしい」言語であるからには、コーディングしていて喜びを感じる瞬間が、苦痛を感じる瞬間よりも多いはずである。しかし、今のところ習得途中ということもあり、躊躇無く「Rubyってたのしいねぇ」とは言えない。特に他の言語の「スタイル」が身にしみているためか、Rubyってあれもこれもできるって感動する一方で、これって何か違うと感じる瞬間が多くあった。以下その例を挙げてみるが、おそらく多くは自分のRubyの無知から来る物であることを期待している。
- 複数行に分けてifの条件文を書けない
leap yearをチェックするときにこんな条件式を書いた。
if date.month == 2 && date.year % 4 == 0 && date.year % 100 != 0 || date.year % 400 == 0
numDaysInMonth = 29
end
条件文が長いので分けてみたらエラーになった
if date.month == 2
&& date.year % 4 == 0
&& date.year % 100 != 0
|| date.year % 400 == 0
...
syntax error, unexpected tANDOP
セミコロンなどを使わないで行をステートメントの区切りとするのはなんとなく分かるのだが、この場合はどうすればよいのだろう?1行に詰め込むと長すぎて読みにくいのだけど。
ちなみに上の例は、date.leap?であっけなく解決したが、他にもいろいろな例があるに違いないのだが。
(つづく)
PCユーザーのころ、SteganousのSafeというソフトを使って、大事な情報を保存していた。AES-256で暗号化されているため、ディスクイメージから簡単には解読できない。Quicken情報や、パスワードリストなどを保存しておいて、いざディスクが壊れたときでも、あまり心配せずに廃棄できるので安心である。
Ubuntuユーザーになったときに、同様のものを探したが安くていいものは見つからず。結局、truecryptという使えるソフトに出会う。パーティションまるごと暗号化などが可能で、ファイルベースの暗号化されたパーティションも作成可能だ。パーティションの暗号化は試してないが、ファイルベースの場合面倒なのは、必要なときにマウントしなければいけないこと。スクリプトを書けば可能だが、どうも使い勝手が悪かった。
Macを使い始めてから必要性を感じたことはなかったが、メインマシンになるにつれどんなソフトがあるか調べてみることにした。
驚いたことにAES-256もしくはAES-128で暗号化されたドライブ作成が標準で可能である!
- 「Disk Utility」を起動する。
- メニューから「New」->「Blank Disk Image」を選択。
- 暗号化方式を選択。Leopardでは、新たにAES-256が選択可能。以前のバージョンでもAES-128が利用可能。
- ファイル名を指定
- パスワードを指定
- ...作成
便利なのは、サイズを決定するときにDVDのサイズなどに合わせられる点。メディアにバックアップもしくはコピーして配布するのに便利である。
それから、暗号化ドライブを標準でサポートしているということは、MacOSXマックであればどれでも利用可能なので、Decryptionのエンジンをコピーする必要が無い。もちろんAES-256はLeopard以降のみ。AES-128であれば、確か10.2あたりからのOSで利用可能。
Leopardにアップグレードしてから、ときどきファンが回りっぱなしという現象が起きるようになった。ACアダプターをはずして使っていると30分くらいで電池切れとなる。これはまずい。
結論から言うと、Leopard特有の問題ではなかったようである。
「ようである」と断言できない理由は、いくつかのフィックスを同時に試みて結果直ったよということ。
- Symantec AntiVirusのウイルス定義ファイルが今年3月のまま止まっていた。Liveアップデートを試みたら失敗したので、手動でダウンロードしてインストール。ついでにLiveアップデートプログラム自身のバージョンが3.5であったので、最新の4.0をダウンロードしてアップデートした。
- /Library/LaounchDamons/にあるcom.landesk.*というファイルを削除して再起動。launchdによるデーモンプロセスの起動に失敗しているらしいと判断したため。
以下、発見の課程と詳細。
ファンが回りっぱなしのときにtopでプロセスを調べると、Symantec AntiVirusのプロセスがCPUを80%近く消費していたので、アップデートを試みた。もしかしたらたまたま起こっていた現象なのかもしれないが、アンチビールスソフトがリソースを消費するという現象はよくあることなので、最新版にすることで軽減を期待した。会社がインストールしたものなので除去するという選択肢はない。幸い、アップデート後に再起動したらCPUの消費は収まった。
ところが、しばらくすると再びファンがフル回転し始めた。またSymantecの仕業かと疑ったが、こんどはsyslogdとlaunchdが交互にリソースを食い合ってトータルで90%近くを占めていた。CPU消費を調べるには、topでoを押してcpuとタイプするとCPU消費しているプロセスの順にリストされる。
Appleのサポートで検索した結果、このようなケースを見かけた。
http://discussions.apple.com/thread.jspa?messageID=5690924�
Time Machineのせいだという。そこでTime Machineのオフにして再起動してみた。しかし、一向に状況はよくならない。さらに調べてみると、/var/log/system.logになんらかのメッセージがあるということなので見てみると、launchdがひたすら何かの起動に失敗している。
(com.landesk.pds): exit 1
このlandeskとは何だろう?調べてみると何らかのサードパーティのソフトらしい。launchdについてさらに調べると、/Library/LaunchDaemonsにあるファイルを参照しているとのこと。中身をみるといくつかlandeskという名前がついているplistファイルが!!これだ!!と直感して中身を調べてみると、どうやら存在しないファイルを参照していることがわかった。ためしにそれらのplistファイルを別の場所に移動して再起動。。。
以来、1日間問題なく動作している。Time Machineもオンに戻した。このまま何も無いことを祈る。
ありがとうございます。 read more
on Permission denied to get property Window.App