Home > Programs

Programs Archive

GoogleReader plus Haten にスター機能を追加

時々開発を進めているGoogleReader plus Hatenaの久々のアップデートです。

先日当ブログでも書いたように、MOONGIFTさんに紹介して頂いたので、ブックマークコメントやブログなどでの色々とご意見を頂きました。

その中で「スターが付いたらもっといいのに」というのを見て、今回は「はてなスター」を表示する機能を付けました。

ファイルはGoogle Codeで公開中です。

まだ、記事の一覧(本文を表示しないモード)では、スターは表示されなかったり、カラースターの挙動がおかしいなどの問題は残っていますが、とりあえず動作いたします。

是非、ご利用ください。

MOONGIFTさんでGoogle Reader plus Hatenaを紹介して頂きました!

お久しぶりです。最近全く更新できていない当ブログですが、ちょっと気になってGoogle Analyticsを見たら異常にアクセス数が上がっていたので、何かと思ったら、MOONGIFTさんでGoogle Reader plus Hatenaをご紹介頂いておりました。

MOONGIFT: » Googleリーダーとはてなブックマークを使う人は「Google Reader plus Hatena」:オープンソースを毎日紹介.

記事にはダウンロード版は上手く動作していないとのご指摘が・・・。
今晩あたりに早速修正を行いたいと思います。

多分今ソース見たら前の自分を殴りたくなるんだろうな・・・w

とっても同感「プログラマーとして独り立ちするための7つの条件」

引用元: 新人プログラマーがプロのプログラマーとして独り立ちするための7つの条件 – ハックルベリーに会いに行く

とっても共感できたので、TrackBack支援。
全く同じ様なことを日々思っている。

俺なりの感覚を少し書いてみる

その1「プログラマーであることに誇りを持たない」

プログラマーははっきりとした形がある世界の職人ではなく、むしろ形のないところに形をこさえるようなものだから、誇りを持つのはかえって邪魔になるし危険だということを語られた。プログラマーは、プログラマーであることに誇りを抱いた瞬間に停滞が始まるのだという。

「過去に誇りを持たない」っていうのに近いかもしれない。
日々、自分自身「あれが出来たらすごいなぁ・・・」とか、思っているけど実際自分でそれが出来る様になった時その瞬間は「俺スゲー!格好いい!!やべぇ!!」と思うが、すぐに「出来て当然だろjk」となる。

自分よりもすごい人は腐るほど居て、過去の自分の憧れに自分自身がなったことに永遠と満足してたら、もうその人は先に進めなくなる。

日々いろいろな事に「新しい憧れ」を抱くことで、少しずつ自分の目標を立てているという感じだろうか。
あとは、過去の自分の書いたコードに満足しない。もっと良い方法があるのではないかと日々模索するという意味も。
数ヶ月前に書いたコードなんてのはもう見るのも恥ずかしいことが多々あります・・・

その2「常に手抜きを考える」

全文を読む

GoogleReaderにはてなブを表示「Google Reader plus Hatena」

前回「Hatena bookmark anywhere to GoogleReader」という名前で配布を始めたGoogleReaderにはてなブックマークコメントを表示するユーザースクリプトですが、名前を変更してバージョンアップしました!

Google Reader plus Hatena

今回のバージョンアップは細かな部分の修正と、ブックマース登録数の表示機能の追加です。

覚えたてのJavaScriptの為大量の修正が入っています。以前よりも動作が安定しました。
特にGreaseKit(Safari)版では、JSONPを利用しているため隣の記事のブックマークコメントを拾ってくる事などが発生していましたが、JSONPを埋め込む毎にユニークなグローバル変数を使用する様にすることで、そう言ったことが無くなりました。

その他修正内容

  • スタイルシート
    Google readerに合わせて少し修正しました。
  • ブックマーク登録数の表示
    ブックマーク登録数の表示が可能になりましたが、この機能をオフにするには直接スクリプトを修正する必要があります。
  • ブックマーク読み込み中アニメーション
    今回からブックマーク読み込み中のアニメーションを表示する様になりました。
  • 再読み込み機能
    「HatenaB」のリンクを再度クリックすることで、ブックマークを再度読み込むようになりました

また、デフォルトではタグ付けのみのブックマークは表示しない様になっております。
現在開発途中ですが、今後タグ付けも表示する機能を盛り込む予定です。

ダウンロード
今回からダウンロードはGoogle Codeから行える様にしました。下記ページよりダウンロードしてください。

http://code.google.com/p/gr-puls-hatena/

追記:
前回のスクリプトをインストールしている場合は、今回のスクリプトを入れても上書きされないので、手動でアンインストールしてください。

GoogleReaderにはてなブを表示「Hatena bookmark anywhere to GoogleReader」

このスクリプトはバージョンアップしました。最新版はGoogle Codeで配布中です。
Google Reader plus Hatena – Googre Code

hatena_bookmark_anywhere_to_google_reader

はてなブをGoogreReaderに直接表示

はてなユーザーはブログのコメント欄よりも、はてなブにコメントを書くことが多い。それを見るために新しいウインドウを開くのがとても面倒だったので、GoogleReaderの画面に直接表示するスクリプトを書きました!

FireFoxのアドオン「Greasemonkey」又は、Safari(WebKit)のプラグイン「GreaseKit」を使用して、GoogleReaderで今見ている記事のフッター部分にはてなブのコメントを表示するスクリプトです。

スクリプトの大半は「hatana_bookmark_anywhere.js」というブログのコメント欄の下などに、はてなブのコメントを表示するスクリプトを使用しています。
なので簡単に作れるかと思ったんだけど、JavaScript初心者の俺には一晩では終わらなかった・・・ orz
(普段javascriptライブラリに頼っていたからXPathとか初めて使った)

使い方

1,GoogleReaderで「はてなブ」のコメントを表示したい記事を表示させます。このとき記事の回りの枠が太く濃い青になっていればOKです。なっていない場合記事の本文をクリックすると、枠が濃い青なります。
2,キーボードで「h」キーを押す。
以上で記事の最後にはてなブのコメントが表示されます(実際のコメントより少しタイムラグがあるようです)。
上手く太枠にならない場合は、次の記事を表示するショートカット「j」キーや、前の記事を表示する「k」キーで上手くフォーカスする記事を変えてみてください。

Greasemonkey、GreaseKitのインストール

Greasemonkey、GreaseKitをインストールしてない人は下記のページを参考にインストールしてください。

Hatena bookmark anywhere to GoogleReaderのインストール

Greasemonkey又はGreaseKitをインストールした上で、下記のアドレスにアクセスすると、インストールダイアログが表示されます。
「Hatena bookmark anywhere to GoogleReader」Greasemonkey版(FireFox)
「Hatena bookmark anywhere to GoogleReader」GreaseKit版(Safari)

※アドオン・ブラウザ共に最新バージョンでのテストしか行っていないので、場合によってはエラーが多発するかもしれません(Safari4,FireFox3)。
※テスト環境では英語版のGoogleReaderを使用してます。上手く動かない場合「設定」→「言語」→「English」で動くかもしれません。

最後に

デバッグ用にconsoleLogと言う関数にエラーを吐き出したりする様になっています。
コメントアウトで外してありますが、必要があればスクリプトの一番最後にありますので、解除してください。

まだまだJavaScriptは勉強不足で余分な部分とか、不安定要素が沢山あるかもしれません。
少しずつバージョンアップしていきたいと思います。

AppleScriptでサーバー接続

AppleScriptでサーバーへ接続する方法。

会社のファイルサーバーにPerlなどのスクリプトを置いて、それをFileMaker Proから実行させることが多々ある。
なので、実行する前にサーバーへ接続しないといけないので、作ったスクリプト。

try
	do shell script "touch /Volumes/[ServerName]/[LogFile]"
on error
	mount volume "afp://[ServerIP]/[VolumeName]" as user name "[UserName]"
	do shell script "touch /Volumes/[ServerName]/[LogFile]"
end try

こんな感じ。

do shell script "touch /Volumes/[ServerName]/[LogFile]"
は、使用するファイルに “touch” 、要するに触れるかどうかを試す。ここでもしエラーが発生しなければ、既にサーバーはマウント済みとなるので、スクリプトは終了。

on error は もしダメだったとき。
mount volume "afp://[ServerIP]/[VolumeName]" as user name "[UserName]"
を実行してボリュームをマウントする。さらに念のため、”touch” を再度実行。

ちなみに、この後のエラー処理はあえてさせてない。エラーがもし出たらFileMaker側で処理するため。
一度接続を試してみて、ダメだったら何かここでは解決できないエラーがあるという判断の上です。

ボリュームマウントのところは、
mount volume "afp://[ServerIP]/[VolumeName]" with password "[PassWord]" as user name "[UserName]"
とすると、パスワードも一緒に送ってくれる。但しすべてのユーザーに利用権限を与えないため、今回の場合は入れてない。
パスワードが無くてもFinderのいつものダイアログで、パスワードの入力を求められる。このとき「パスワードを記憶する」のチェックボックスにチェックを入れれば、次回から入力を求められることは無い。
また、ユーザー名も同じくスクリプト上に書かなくてもいい。ユーザー毎にIDを発行してる場合などは各パソコンで記録させればok!

FileMakerにターミナルコマンドの結果を渡す

AppleScriptを使って、FileMakerにターミナルコマンドの結果を渡す方法です。
ファイル名等を取得し、それをFileMakerに読み込ませる必要があったので、調べました。

どうやら、FileMakerに変数を作って値を受け渡すことは出来ないようなので、グローバルフィールド等に値を渡すことになります。

FileMakerの「Appleスクリプトを実行」スクリプトステップに下記のように書き込みます。

set _ls to do shell script "ls -1" --変数 _ls に Terminalコマンド "ls -1"の返値をセット

tell application "FileMaker Pro Advanced"
	set cell "f1" of current record to _ls as string --変数 _ls を フィールド f1 へ変数の値を書き込み
end tell

1行目でターミナルコマンドコマンドを実行し、結果を _ls 変数にセットします。
4行目でファイルメーカーで現在開いているファイルのフィールド名 f1 に1行目の変数 _ls をセット

今回の場合ファイルの指定などを行う必要はありません。

FileMaker のスクリプトと同じように、実行をしているファイルがデフォルトで指定される為です。
他のファイルに値を書き込む必要がある場合は、そのファイルからスクリプトを実行するなどを行えばできます。

MacOSX Leopard に Ruby インストール

仕事でFileMakerを使って色々な情報を管理してる。
今はPerlを使ってFileMakerでは時間がかかりすぎる処理や、プラグインを使わないと出来ないような事をやっているのだが、つい最近「FileMaker API for Ruby」という物を見つけてしまった。

Perlに値を受け渡す時、FileMakerからtab形式等で書き出した物を処理させていたが、
Rfmを使えば直接情報を読み込み、書き込みが出来るようになるということで、Rubyを始めてみることにした。

Rubyをインストールする上で苦戦した事等をメモしていく。

MacPortsでRuby関連のインストール

MacPortsのインストール等は以前「MacPortsでステキなUNIXツールをインストール」を参考にさせてもらった。
すでにインストール済みである。

だが、インストールしたのは結構前なのでアップデートをしよう。

MacPortをアップデート

$ sudo port -d selfupdate
$ sudo port upgrade installed

RubyGemsをインストール(PerlのCPANみたいなヤツ?)

$ sudo port install rb-rubygems

参考:MacにRailsをゼロからインストールする一番簡単な方法

Rubyを実行してみる

あとは適当なプログラムを書いて実行してみる。ぐぐれば適当な短いプログラムはたくさん出てくる。

$ ruby hogehoge.rb

その時下記の様なエラーが出た場合ライブラリーが足りない or 古いのでインストールしよう

エラー

$ ruby hogehoge.rb
.../rubygems.rb:251:in `report_activate_error': Could not find RubyGem activerecord (>= 0.0.0) (Gem::LoadError)

上記の例の場合はactiverecordをインストール

$ gem install activerecord

参考:ari’s diary RubyCLR

追記:
MacPortsで一度インストールに失敗した場合アップデートをかけても、失敗し続けることがある。そういう時はインストール途中で止まっているファイルを一度クリアしてから、もう一度インストールしよう

再インストール(rb-rubygemsの例)

$ sudo port clean rb-rubygems
$ sudo port install rb-rubygems

他にも、RubyGemsに登録されている物自体が古い場合があるので、RubyGemsの更新も忘れずに行おう!

$ sudo gem update --system
$ sudo gem update 

FileMaker Pro + AppleScript で Perl

FileMaker Pro + AppleScirpt + Perl

FileMaker ProのWebビューアーを使ったスパイダリング(HTMLの収集)に限界が来たので、Perlでの開発を現在行っている。
HTMLのダウンロードという意味では、Perl等をかましてレンダリング・目的のHTML以外(画像等)のダウンロードを行わせないようにすれば、さほど変わらないのだが、スクレーピング(HTMLを分解し、必要な情報のみを抽出)は桁外れにPerlの方が早い。

ということで、FileMaker ProAppleScriptPerlという流れで情報収集を行っている。

FileMakerからAppleScriptを実行する方法はスクリプトステップの「AppleScriptを実行」というのは説明するまでもないか?w

AppleScriptからPerlを実行する時はdo shell scriptを使う

do shell script "perl 〜.pl"

“”の間はターミナルで実行している命令と一緒。

perlを実行する手前でcdコマンドを実行したい時等は、

do shell script "cd ./Document/; perl 〜.pl"

というに、セミコロン(;)で区切って複数の命令を書く。

PerlをTerminalから実行する時、色々とメッセージを返すようにしていたとしても、コマンドの実行が終わるまで基本的に何も出来ない。
なので、基本的にlogとしてデーターを残すようにしている。

do shell script "cd ./Document/; perl 〜.pl > 〜.log"

 

もうちょっと、AppleScript

作ったperlのスクリプトではLWP::UserAgentを使っているのだが、1ページダウンロードに通常1秒〜1.5秒かかっている。
ただし、何故か分からないのだが、同じスクリプトを2コ同時に実行すると、実行して少し経ってから1ページのダウンロードが0.3秒〜0.7秒にまでスピードアップする。

スクリプトを2つ実行することで、結果的に2倍のスピード!
──というのならばまだ分かるのだが、スクリプトを2つ実行することで、4倍以上のスピードが出るのは何故だ?
ちなみに、2つ実行してスピードが速くなった後に、片方のスクリプトを停止しても、1ページのダウンロードが0.3秒〜0.7秒というスピードは変わらない。
※通常1秒間に数ページみに行くのは相手側のサーバーに負担になります。マナー違反になるので注意!

1つのドメインに対してのみ現在は行っているので、もしかすると相手側のサーバー側の問題なのかもしれないが謎だ…。
お分かりになる方いらしたら、是非教えて頂きたい。

とりあえず原因は不明だが「なら、2つ以上のPerlを同時に動かせばいいのか!」という結論に至り、バックグラウンドでdo shell scirptを実行出来ないかと調べてみると、アップルのテクニカルノートにあった。do shell script in AppleScript

do shell script "perl 〜.pl > 〜.log 2>&1 &"

とすれば良いらしい。
これを上手く使えば、分割処理が出来るので更なるスピードアップも望める!

さらに色々調べていると面白そうな記事を発見!
AppleScript で Perl に GUI をつける

これは、かなり勉強になりそう。後日挑戦してみたい。

ホーム > Programs

Flickr

By Erik Rasmussen
RSS はてなダの最近の記事
META

Return to page top