|
|
||
●予定は未定 チケットをただの紙切れにしないために・・●
以前の日記で紹介した「MacRuby The Definitive Guide」に連動したサンプルコードは以下の場所にあります。(無料で公開されているMacRuby The Definitive Guideのフリー記事の中にリンクが書いてあります)
◆MacRuby The Definitive Guideの記事に連動したサンプルコード。へのリンク
注意:以下のほうほうが正しい方法かは判りません。とりあえず、以下のようにしたらアプリが動いたって程度の情報です。
上記のサイトのサンプルコードをダウンロードするのは以下の通り。
で、ダウンロードしたものを解凍し、各章毎にフォルダが出来てますので、試しに第2章のサンプルコードをxcodeで開いてみます。
で、なにも編集せずにビルドをしてみると以下のようにfailに成りビルドが完了出来ません。
メッセージとしては
Shell Script Invocation Error Command /bin/sh failed with exit code 1
私が今回作ろうとしてしているのは、ある程度マウスカーソル制御(mouse control)が出来て、かつWeb が見れるアプリを・・・と思っていて、似たような機能のサンプルコードが無いか探してみたところ、こちらに凄く似たような機能がmacrubyで実装されたサンプルコード(Farmville Clicker:イイねを自動クリックする??)があって、歓喜しました!
作者の方はメキシコの方のようですが、このような有用なサンプルコードを公開してくれていることに感謝します。(メールでいちお、感謝の意を伝えました)
ちなみに上記にソースコードをビルドするとこんな感じのウィンドウが開いて、コマンドEを入力後にマウスをクリックすると、あるオフセット値に従ってマウスが自動で移動して、クリックする動作が自動で行われます。
p4youのサイトを観るために、UserAgentを携帯ブラウザやiPhoneに変更する必要がありますが、どーやってやれば良いんだろってことでググってみると以下のサイトに辿りました。
# Set the user agent to Safari, to ensure we get back the exactly the same content as
# if we browsed directly to the page
view.setCustomUserAgent 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us)' +
'AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
で、上記を参考にfvClickerのWebClickerController.rb を以下のように編集。
class WebClickerController < NSWindowController
attr_writer :webview, :window
attr_writer :width, :height, :speed
attr_accessor :is_active, :skip_center
def awakeFromNib
@webview.setCustomUserAgent 'Mozilla/5.0 (iPhone; U; iPhone OS 4_3_3; en-us)' +
'AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
@webview.mainFrame.loadRequest(
NSURLRequest.requestWithURL(
NSURL.URLWithString("http://p4you.net/pedi***/")))
end
スマフォ端末で、ほんとはp4youの申し込みをもっと簡単にするアプリをとか思ったんだけど、スマフォだとそもそもカーソルが無くて(androidだと外部マウスは接続できるけど)、カーソル制御は大変そうなので、スマフォアプリは早々と諦めまして、まずはマックのデスクトップアプリを作ってみようと思い、そのプログラム言語としてmacrubyを選んでました。
それと、そもそもp4youの入力項目ってみんな一緒なのか確認してみたら、全然違っていたので、ちょっとビックリ。試しに今現在受け付けているAKB用のサイトだと、ログイン直後の画面はこんな感じ。
ハローのように、メンバーの誰がスキで、ファンクラブ会員かってことは聞かれないようです。ジャ○ーズだとまた違うでしょうね。
下記ではMainMenu.xibのクラス名を編集みたいに書いてますが、実際にはデフォルトのNSViewのままでも、ウィンドウはちゃんと表示されました。
githubとかに置いてあるサンプルプロジェクトだとClassesってフォルダが出来ているケースが多いように見えるだけど、こちらの環境(OSX10.6+macruby0.1)ではそのフォルダは作られないので、その他のサンプルアプリに習って、Supporting Filesの下にruby用のファイルを追加してみる。
そしてGUIを規定しているMainMenu.xibのウィンドウに対してのクラス名を変更して、それと同じクラス名を最初に追加したrubyのファイルの冒頭に < NSViewも付加して追記する。
ここまで記載した後にビルドすると、ウィンドウが開くハズ(たぶん、うちではこれで開けました)
参考にしたのは以下の書籍。(はやく日本語版出て欲しいなぁ)
みなさん!アマゾンで販売しているコピンク名義で宮本佳林ちゃんが歌ってる「カリーナノッテ」がマジ名曲なので皆さん是非聴いてみてください!
サンプル動画を貼っておきますね!
FireFoxのaddon作成に挑みちゅう。
とりあえずオライリーのFIREFOX HACKS REBOOTEDを買ってきて開発環境を構築中。
本のとおりやってるつもりなんですが、上手く行かなかった点と(この方法で正しいか判りませんが)解決できたので、すこしづつ自分メモ。
とりあえずこちらの環境はMac OS X 10.6、Pythonは最初から入ってる2.6.1を使用。
cfx run コマンドでブラウザが立ち上がるハズ・・とあるのですが実際にやってみると・・・
(addon-sdk-1.3)****-no-iMac:sample-addon ***$ cfx run
Traceback (most recent call last):
File "/Users/home/addon-sdk-1.3/bin/cfx", line 29, in <module>
cuddlefish.run()
File "/Users/home/addon-sdk-1.3/python-lib/cuddlefish/__init__.py", line 678, in run
sdk_version = get_version(env_root)
File "/Users/home/addon-sdk-1.3/python-lib/cuddlefish/version.py", line 4, in get_version
f = open(os.path.join(env_root, ".version"), "r")
IOError: [Errno 2] No such file or directory: '/Users/home/addon-sdk-1.3/.version'
と表示されうまく行かず、.versionファイルは無かったです。
I have investigated the problem. Do you have the .version file in your addon-sdk-1.0/ directory ? If not create one with ... $ echo "1.0" > .versionなので、そのまま $ echo "1.3" > .version と入力して .versionファイルに1.3(多分Addon SDKのバージョンを書き込むのだとうと適当に推測して)を書き込んで再度コマンドを入力したところ、本に書いてある通りにブラウザが立ち上がりました。
とりあえず、サンプルコードをそのままダウンロードして、Translator JP拡張機能を動かしてみたいんだけど、英文字を選択して、addonのTranslate into Japanese を選択すると、コンソールに以下の表示が出て、うまく動きませんでした。
error: An exception occurred.
Traceback (most recent call last):
File "resource://jid1-sbgmuzvjg3ctag-at-jetpack-translator-jp-lib/main.js", line 18, in
var translated = response.json.responseData.translatedText;
TypeError: response.json.responseData is null
そこで、116pに書かれているようにソースコードの途中にログ出力するように以下のように足してみたところ・・・
onMessage: function(sel) {
console.log("selection: " + sel);
var req = request.Request({
url: "http://ajax.googleapis.com/ajax/services/language/translate",
content: { v: "1.0", q: sel, langpair: "|ja" },
onComplete: function(response) {
console.log(response.json.toSource());
console.log(response.json.responseData.translatedText);
var translated = response.json.responseData.translatedText;
selection.text = translated;
info: ({responseData:null, responseDetails:"Suspected Terms of Service Abuse. Please see http://code.google.com/apis/errors", responseStatus:403})
error: An exception occurred.
Traceback (most recent call last):
File "resource://jid1-sbgmuzvjg3ctag-at-jetpack-translator-jp-lib/main.js", line 20, in
console.log(response.json.responseData.translatedText);
TypeError: response.json.responseData is null