少し前に、MT4に対応したGoogleAnalyticsWidgetを公開しましたが、
MTが4.2になって、また動かなくなりました。
なのでMT4.2に対応したものを公開します。
詳細はUsing MTのほうのエントリーで。
GoogleAnalyticsWidget for MT4.2 - Using MT
The Destination is unknown. The Journey is the Reward.
Author: 野澤真一 / NOZAWA Shinichi , version 2.0220330 / Podcast: 七味とーがラジオ / twitter: @melonsode
少し前に、MT4に対応したGoogleAnalyticsWidgetを公開しましたが、
MTが4.2になって、また動かなくなりました。
なのでMT4.2に対応したものを公開します。
詳細はUsing MTのほうのエントリーで。
GoogleAnalyticsWidget for MT4.2 - Using MT
後輩が大量のデータを一括して処理するのに困っていたので、
Perlを薦めてみた。
PerlによるファイルのOpen, Closeや、
split関数によるCSVからのデータの切り出し、
foreachを使った配列の個々の要素の操作などで、
行ごとにある項目に応じて新しい項目を加えたり、
複数ある中のある列でソートしたりすることができる。
一からPerlを教えていたらあっという間に3時間経って、
バイトの時間となった。
そんなわけで、昨日は全然論文を読めなかった。
教えている途中でシンボリックリファレンスというのが
気になって、バイトの前半はその勉強にあてた。
後半はMTの管理画面を変化させるための変形コールバック
(Transformation Callbacks)の勉強。
6時間、ずーっと集中して考えていたので、息も絶え絶えとなった。
外に出ると、夕立の後の渋谷の街は
まるで秋みたいな風が吹いていた。
実際、もう九月まで間もない。
夕立が降るようになったということは、
秋が近づいてきた、ということなのだろう。
湿気を含んだ空気が昼の間に舞い上がり、
夜になってそれが冷やされて雨になって落ちてくる。
ただし、冷やし具合がいまいちだったので
いままでは降らなかった、ということだろうか?
* * *
電車に乗ったらiPhoneを使っている人が二人いた。
買ってしまいそうだ、iPhone。
以前の記事でGoogleAnalyticsWidgetが
MT4.1でも動くバージョンを公開したのですが、
今回、それをちょっとだけ修正しました。
修正したのはほんのちょっとで、
クリックするとグーグルアナリティクスに飛ぶリンクを
つけただけです。
ほんと些細な違いですが、
あったほうが俄然アクセスが楽になるのでは。
UsingMTというブログのほうで公開しています。
UsingMT: GoogleAnalyticsWidget for MT4.1
ドキュメントを英語で書いてみたんですが、
意味の通る英語になっているかどうか・・・。
前は、差分のファイルだけを公開していましたが、
今回はプラグイン丸ごとZip化して公開しています。
これって著作権的にどうなのでしょうか。
ライセンスに関して書いてあるのが見あたらなかった。
作成:2008-07-04 00:40:02
MovableTypeのプラグインで、「GoogleAnalyticsWidget」というのがあります。
http://apperceptive.com/plugins/googleanalyticswidget/
で、MTで動いたというページがあちこちに散見されるのですが、
僕のMTでは動きません。
動く例:http://bizcaz.com/archives/2007/10/08-032921.php
んで、かなり長い時間かかって動かない理由を調べて、
やっと動くようになったのでご報告。
動かない理由は二つあります。
1,Crypt::SSLeayというPerlのモジュールがない
これは、もう諦めるしかないです。
ちなみに、僕が使っているこのロリポップサーバーは、
このモジュールが入っていないので使えません。
なので、ロリポップの人は諦めるしかないです・・・。
このモジュールはSSLを使った通信をするのに必要です。
Googleにログインする際にhttpsのサイトと通信する必要が
あるので、このモジュールが必要になります。
GoogleAnalyticsWidgetのソースを見ても、
このモジュールをuseするとは書いてありません。
その代わり、LWP::UserAgentというモジュールはuseされていて、
これが実行されるときに必要なので呼ばれています。
2.MTのバージョンが4.1あるいはそれ以上
使えた!と書いてあるひとのMTのバージョンは
おそらく4.0(あるいはそれ以下)なのだと思います。
実は、1の問題をクリアしているなら、
MT4.1で動作させるのはあと一歩なんです。
おそらく、動かない人はプラグインをインストールして、
アカウントとパスワードとIDを設定したのに
MTに何の変化もない、という症状なのではないかと思います。
そういう症状の場合、
実は表示する部分だけがうまく作動してなくて、
そこに至るまでの部分は正常に実行されていて、
グラフのデータ自体は自分のサーバーに保存されているはずです。
データはstaticフォルダに保存されています。
FTPを立ち上げて、以下のpathを調べて見てください。
表示に失敗しているだけなら、
このXMLファイルが生成されているはずです。
mt/mt-static/support/dashboad/stats/0/(blogのNo.)/001/googleanalytics.xml
このウィジェットはグラフを表示するために、
テンプレートの一部を正規表現を使って認識し、
そこにグラフの表示ソースを挿入しているのですが、
MTのバージョンが変わって、
正規表現を使った認識ができなくなってしまったのだと思われます。
だったら、MT4.1でもちゃんと認識できるように
正規表現の部分を書き換えればいいじゃん、なのですが、
自分にはそれができなかったので、
スクリプトを自分なりに書き換えました。
そうすることで、動くようになりました。
書き換えたスクリプトをここに置きますので
よければ使ってください。
GAWforMT4.1.zip
GAWforMT4.1.zip
zipで圧縮してあるので、解凍してください。
googleanalytics.plとview.tmplというファイルがあります。
googleanalytics.plは本家のプラグインフォルダにある
同名のファイルと置き換えてください。
view.tmplはtmplフォルダにコピーしてください。
それで、このプラグインは使えるようになるはずです。
***
ちなみにこのウィジェット、ただ単にアクセス数を表示するだけなので、
あんまり意味ないです。
以下のような機能拡張に関して書いてあるページがありますので、
それを参考に手直ししてみるとよいかもしれません。
http://tmp.beta4u.com/archives/2007/10/000064.html
***
似たようなウィジェットとして、以下のようなものもあります。
こちらは、独自にアクセスログの収集から解析までをこなすプラグインです。
メールアドレスの登録をしないとDLできませんが、
まあ、よくできていると思います。(使ってませんが)
***
関連ページ:
mt4plugin080325
GoogleAnalyticsWidget doesn't work
CPAN CPAN CPAN!
公開:2008-07-03 01:53:01
作成:2008-07-01 01:59:01
MovableTypeがやたら重い。
どっかプログラムがぶっ壊れてんじゃないかと思うほど、
重い。
しかも、重いだけじゃなくて、
ブログの記事の投稿にしばしば失敗する。
500 internal errorが起こる。
often、芝々。
カテゴリを設定したときによく失敗するから、
カテゴリに関連したプログラム部分が壊れてるのではないかと
疑ったが、
どうも、サーバーのせいらしい。
http://hmlab.info/minor/2008/02/post-47.html
http://renge.heteml.jp/lotus/2008/03/movabletype-500.php
全体の再構築ができなくなって、
動かない理由について調べているときに、
あちこちでそのような記事に出くわした。
この「ロリポップ」サーバー、月額300円程度だし、
MTの導入はお手軽にできるし、
「http://melonsode.fem.jp」という、
ちょっと中途半端だけど、独自ドメインぽいものがとれるし
いいと思っていたんだけど、
ここに来て、乗り換えたくなった。
乗り換え先はさくらインターネット。
乗り換えを気に、ほんとの独自ドメインをとろうかなぁ。
melonsode.jpとか?
nozawashinichi.netとか?
クパン。CPAN。CPAN。
しんいちはCPANを覚えた。てぃろりろってぃってぃってぃ〜
Perlプログラマのレベル10 - Perlプログラミング救命病棟より - naoyaのはてなダイアリー
***
今日はオフだったので、強気で2回洗濯をした。
たまってた下着類とかさばる服を全部干せた。
それで、今日の午後はたっぷり時間があるから、
研究にいそしもうと思ったのだが、
GoogleAnalyticsWidgetが動かない理由が気になって、
ふたたび手をつけてしまった。
したら、もう夜だし。
ああ、バカだ。
***
当初、GoogleAnalyticsWidgetが動かないのは、
モジュールが足らないからだとか、
IDやパスワードの設定がおかしいからで、
つまり、プラグインのソースに問題はなくて、
そのソースがちゃんと動く環境にしてやれば動く、
という認識の元作業していた。
だけど、その認識は改めた方がよいという疑いが、
段々と確信に変わってきている。
おそらく、GoogleAnalyticsWidgetはMT4.1では動かない。
ひとつには、googleにデータを読みにいく際のURIが
このウィジェットが公開された当時とは変わっている可能性が大。
というかたぶん変わってる。
もうひとつは、ダッシュボード・テンプレートの書き換えが
うまくいってない。
前の記事にも書いたけど、テンプレートの一部を
正規表現で探してきて、そこを置換するという処理で、
テンプレートを書き換えようとしているが、
正規表現でマッチする部分がない。
これはおそらくMT4.0がMT4.1になったときに変わってしまったのでは
ないかと思われる。
***
というわけで、プラグインのコードをまったくノータッチで
このGoogleAnalyticsWidgetを動かすのは無理っぽい。
そうしたら、書き換えなきゃいけない。
てか、自分で一から書くのとあまりかわらない気がしてきた。
このWidgetを実現するのは実はそんなにむずかしくない。
1.GoogleAnalyticsにログインする。
2.アクセス解析のXMLを取得する
3.XMLのデータから訪問者数の部分を抜き出して、整形して保存
4.ダッシュボードに表示
これをもっと詳しくいうと
1.LWP::UserAgentのインスタンスを生成し、GoogleAnalyticsにログインしてCookieを保持
2.そのエージェントにXMLを取得させる
3.XML::SimpleにXMLを食わせて、整形したものをmt-static/support/dashbord/0/006あたりにgoogleanalytics.xmlとか名前を付けて保存
4.blog_statsのタブを参考にダッシュボードに表示するためのテンプレートをつくってcallbackで読ませる
ということだ。
1,2,はもうできる。
3,はたぶんできる。
問題は4で、まだ、callbackやMTのテンプレートについて理解していないので
模索中。
***
一から書くといっても、GoogleAnalyticsWidgetのlib/Analytics.pmは
それなりに使えそう。
オブジェクト指向で書かれていて、
Perlでオブジェクト指向には慣れていない自分にとって
いい勉強になった。
***
今日、CPANでXML::Simpleをインストールした。
感動だ。
CPANのモジュールを自分が使うなんて、
縁遠い話だと思ってた。
でも使えた。
たとえばCrypt::SSLeayはこんな感じ。
sudo cpan install Crypt::SSLeay
そうすると、パスワードを聞かれるので、
このMacのrootのパスワードを入れる。
(アプリケーションをインストールするときなどに聞かれるやつ)
はじめてcpanを使おうとしたときは、
すこし躓きそうになったが、
てきとうにチコチコとEnterキーを叩いたり、
ftp://ftp.....
などとcpanが接続するftpのアドレスを入力したりしたら
動いた。
FTPのアドレス:cpanの設定変更
おそらくCPANのバージョンが古かったので、
FTPのアドレスを入力しなきゃならなかったが、
バージョンが新しければいらないだろう。
次に入れようとしたのがXML::Simpleモジュール。
ところが、これは
sudo cpan install XML::Simple
だけではうまくいかない。
Mac OS X に XML::Parser と expat をインストール - Daio Today
libexpatというのが必要らしいが、それって何かしらない。
とりあえずDLする。
Daio Todayさんのとこには
「解凍して、ディレクトリに入る。
makeはデフォルト状態で特に問題なし。」
と、さらっとしか書いてない。
DLしたあと何をしたらいいかわからない。
とりあえず、DLしたファイルを解凍。
それからターミナルを起動して、
cd フォルダ
で、解凍してできたフォルダに移動。
んで?
「./configure」って打てばいいわけ?
打ってみた。
したら、ターミナルに文字ががーっと流れていき、
新しいファイルが次々できる。
これでよかったらしい。
それからmekeとかした。
(いまだにmakeコマンドが何をするものなのかわからん)
で、もう1回、XML::SimpleをCPANする。
できた。
ついにオレもCPANするよーになったどー
ということで冒頭のリンクに戻る。
Perlプログラマのレベル10 - Perlプログラミング救命病棟より - naoyaのはてなダイアリー
今はレベル6と7の間ぐらいでしょうか?
レキシカル変数とダイナミック変数の違いとか知らないですが。
「レベル6: Perl の講習を受けている人もいる。
オブジェクトの使い方を知っており、
この知識とComprehensive Perl Archive Network(CPAN)を利用すれば
強力なプログラムをすばやく作成できると知っている。
次のレベルに進んで、
この能力拡大がどこまで行くのか見たいと思っている」
次のレベルに進んで、
この能力拡大がどこまで行くのか見たいと思っている、
というのはほんとにそう思う。
CPANが持っているモジュールは本当にすごい。
最近になって使い出した
LWP::UserAgentとかXML::Simpleとか、すっごく便利で、
あんなことやこんなことが簡単に実現しそうだ、
というのがいろいろ湧いてくる。
プログラムが楽しくて仕方ない。
プログラマになった方がいいのかな?
MovableTypeのプラグインで、GoogleAnalyticsWidgetというのがあって、
これを導入しようとしているができない。
Google Analyticsからアクセス解析データをとってきて、
ブログの管理画面に表示するというウィジェット。
ほかの人のブログにはインストールできたということが書いてある。
GoogleAnalyticsWidget プラグイン - Movable Type 備忘録
GoogleAnalyticsWidgetプラグインでさまざまなレポートを表示させるためのパッチ - My Temporary Blog
出来ない人もいるみたい。
GoogleAnalyticsWidget 導入でエラー - disposer
ソースコードを読み込んで、いろいろわかったことはある。
GoogleAnalyticsから自分のアクセス解析データをとってこなきゃならないが、
それにはまずGoogleにログインしなければならない。
この時、SSLを使う必要がある。
ページの取得やログインの認証などは
LWP::UserAgentモジュールをつかって行うが、
SSL通信をするばあい、LWPはCrypt::SSLeayというモジュールを使う。
で、このCrypt::SSLeayがサーバーによって入っていたり、
入っていなかったりするので、
disposerさんのようなエラーが起こる。
調べたらこのブログが置いてあるロリポップ(lolipop)サーバーも
Crypt::SSLeayが入っていないので、
GoogleAnalyticsWidgetは使えない。
しかし、バイト先で使っているサーバーはCrypt::SSLeayモジュールが
インストールされているのを確認している。
ので、使えるはず。
実際、disposerさんのようなエラーは起こらない。
だけど、エラーが起こらないかわりに、
何も起こらないのである。
ダッシュボードに表示されるはずのアクセス解析結果が
ちっとも表示されない。
Movable Type 4.0から4.1へのアップグレード | かたつむりくんのWWW
いま使っているMTは4.1なので、
確かにバージョンの問題なのかもしれない。
まだ、ダッシュボードのBlog Statsの部分にプラグインを表示する
方法がわかっていえないので、断言はできないが、
単純にここの部分で不具合がおこっているのではないか?
文字列を正規表現で認識して、
そこにGoogleAnalyticsの結果を表示するコードをくっつけるという
処理をすることで、ダッシュボードに表示させようとしているが、
その正規表現にマッチする部分がMT4.1ではなくなっている可能性が
大いにある。
鋭意調査中。
これが気になって他のことがぜんぜん手につかない!
(本来ならバイト先でする仕事で、時給が発生してもいいのに
帰ってきても気になって作業してしまう!)
かねてから「コメントがしづらい」という指摘が多かったんですが、
コメントがしやすいように設定を変更しました。
コメントするには、これまではサインインをする必要があり、
サインインをするにはアカウントを作らなければならず、
アカウントを作るには管理人の承認が必要で、
コメントを書き込もうとしてもすぐにはできないのが現状でした。
それを、「サインインせずにコメントする」というモードを設けて、
アカウントがなくても書き込めるようにしました。
*****
以下、技術的なメモ。
「サインインせずにコメントする」というのはもともと
「匿名でコメントする」と表記されていたんだけど、
匿名だと響きが悪くて使いたくないヒトが多いだろうと判断した。
「匿名で」を「サインインせずに」と変更するには
Javascriptのテンプレートを変更することが必要。
アカウント生成や、コメント投稿時に送られてくるメールがいつも
タイトルだけで中身が空だった。
それがデフォルトだろうと思ってたがやはり違うらしい。
「システムメニュー」の「グローバルテンプレート」に
メール関係のテンプレートがあり、
何故かそのテンプレートが白紙だった。
「テンプレートを初期化」で直った。
カスタムフィールドの使い方がすこし分かる。
カスタムフィールドを使ってみるテスト
package MT::Plugin::NozawaPlugin; use strict; use MT; use vars qw($VERSION @ISA);#グローバル変数を定義している @ISA = qw(MT::Plugin); #@ISAはpackage継承するクラスを指定するために使用される $VERSION = "1.0"; #ここでインスタンス生成のようなことをしている my $plugin = new MT::Plugin::NozawaPlugin({ name => 'Nozawa Made Plugin: prototype', version => $VERSION, description => "to show something on dashboard.", author_name => 'Shinichi Nozawa',
author_link => 'http://melonsode.fem.jp/', doc_link => 'http://melonsode.fem.jp/fs/', }); MT->add_plugin($plugin); #これがwidgetの部分 sub init_registry { my $plugin = shift; $plugin->registry({ widgets => { hello_world => { label => 'Hello World', plugin => $plugin, template => 'hello_world.mtml', }, }, }); } 1;
sub init_registry部分を削除すると何にもしないプラグインになる。
参考ページ:
1.プラグイン開発のためのファーストステップ
2.Registering Dashboard Widgets
3.MT4Beta : DashboardWidgetを作ってみた。はてブの新着を表示するよ。
2.のリンクにあるDashboard Widget Registry Propertiesを簡単にまとめる。
最近のコメント