メーラを立ち上げるブックマークレット作ってみました。
おはようございます。こんにちわ。こんばんわ。
阿部です。
突然ですが、みなさん、「このサイトをメールで送る」みたいなリンクをご覧になったことは一度はあるでしょう。
だいたい、こういったリンクがあるのは、お店や会社の地図ページに貼られているのが多いかと思います。
そのブックマークレットバージョンを作りました。
◎使い方
1. 下記のリンクをお気に入り登録
2. ブックマークのURL編集
登録したブックマークの編集画面でURLが、
http://d.hatena.ne.jp/ryo_abe?javascript:location.href="mailto:?subject="+document.title+"&body="+document.URL;
となっているかと思いますので、初めの
「http://d.hatena.ne.jp/ryo_abe?」を削除し[保存]して下さい。
そしたら適当なページをひらいて、そのブックマークレットをクリックしてみてください。
ほーら簡単。メーラが立ち上がりましたね!!
◎作った経緯
経緯を話す前に、そもそもブックマークレットって方は、下記のサイトをご覧下さい。(古い記事ですが)
- キミはブックマークレットを知っているか? @ Biz.ID
http://bizmakoto.jp/bizid/articles/0702/08/news105.html
では、経緯ですが、
みなさん、とあるページを見ている途中で
「あっ、やべ。こんな時間だ。もう出なきゃ。」なんて経験今までにありませんですか?(うんうん、あるある)
「ちくしょう、まだこのサイト見てたかったのにぃ!仕方ない、出先でiPhoneで見よう!」
などとなるかと思います。
このページを出先で見るには、
などなど、他にも色々あるかもしれません。
確かにブックマークなどする必要があるページであれば、上記のどれかを使えばいいかもしれません。
ですが、「ブックマークするほどでもねぇなーちょっと見て、一度見たらもういらないんだよなー」なんてこともあると思います。
その場合は、単純に「メールでそのページのURLを送る」でいいですね!
ところがどっこい!!!
意外にこれが面倒。
- ブラウザのURLエリアからURLコピー
- メーラで新規メール作成
- URLを貼り付ける
- 宛先に自分のメールアドレスを入れる
- [送信]
なんだ、この手間は!!メンドクサスギル!!!!!
そして僕はひらめきました。
文頭で述べたような「このページをメールで送る」リンクのような
ブックマークレットを作ればいいのだと。
それで作ったみたという話です。
それでは、また!
良いインターネットライフを!!!
阿部諒が試してみた!『Titanium mobileのARマーカー検出モジュール」編 その1
どうも、おはようございます。こんにちわ。こんばんわ。
阿部です。
はい今日も、既に恒例となってきました、
「阿部諒の試してみた!」シリーズです。
んで、今回は、先日の記事で紹介したTitanium mobile用に
ARマーカー検出モジュールを作ったという記事(拡張現実感)を見つけましたのでそちらを試していこう思います。
そもそもARとは?
ARとはAugmented Realityの略で、「拡張現実感」または「拡張現実感」という意味です。
架空の世界に現実を再現する「バーチャル・リアリティ」とは違い、
現実の世界に架空の物体などを人工的に提示することを AR と呼びます。
AR マーカーとは、AR(拡張現実感)を実現するためのバーコードなどのパターンのことです。
- anasonic 3D VIERA AR Greeting
こちらは、PanasonicがVIERAのキャンペーンのために作ったARアプリですね
- マーカーが印刷されたAR(現実拡張)名刺「AR Business Card」
これは、まさに僕が作ろうと思っているやつで名刺の裏にARマーカを印刷しておき
iPhoneのカメラやWebカメラから覗くとARが動くというものです。
AR Business Card from James Alliban on Vimeo.
では早速インストールしてみよう
こちらの記事を参考しながら進めていきます。
- 1. サンプル動作用プロジェクト作成
予めサンプル動作用Titanium mobileのプロジェクトをTitanium Developperで作っておく。
僕は今回用に「ARsample」名前でプロジェクトを作成しました。
- 2. 本モジュールのビルド
$ cd ~/works/ // 任意のディレクトリ移動 $ git clone git://github.com/atsusy/tiarmarker.git // 本モジュールをgitからcloneする Initialized empty Git repository in /Users/rabe/works/tiarmarker/.git/ remote: Counting objects: 291, done. remote: Compressing objects: 100% (210/210), done. remote: Total 291 (delta 95), reused 222 (delta 60) Receiving objects: 100% (291/291), 18.57 MiB | 1.36 MiB/s, done. Resolving deltas: 100% (95/95), done. $ cd tiarmarker $ ./build.py // ビルド
本来なら、ここでスマートにビルドが終わり、
参考記事にあるようにcom.armarkerti-iphone-0.1.zipという
ファイルが生成されるのですが、
ビルド時にエラーが発生し、すんなりとは行きませんでした。
$ ./build.py : /Users/rabe/works/tiarmarker/Classes/ComArmarkertiModule.h:7:21: error: TiModule.h: No such file or directory :
「ファイルがねぇぜ」って言ってます。
- 原因
インストール済みのTitaniumとインストールしようとしたモジュールの定義バージョンが違かったため。
- 対応
gitでcloneしたディレクトリ直下にxcodeの設定ファイル(titanium.xcconfig)があるので、
そこに記載されている、TitaniumのSDKのバージョンを書き換えてあげたところ正しくビルド出来ました。
$ vi titanium.xcconfig ---------------------------------------- // // // CHANGE THESE VALUES TO REFLECT THE VERSION (AND LOCATION IF DIFFERENT) // OF YOUR TITANIUM SDK YOU'RE BUILDING FOR // // // TITANIUM_SDK_VERSION = 1.6.0 TITANIUM_SDK_VERSION = 1.6.1 // 1.6.0から1.6.0修正 // // THESE SHOULD BE OK GENERALLY AS-IS // TITANIUM_SDK = /Library/Application Support/Titanium/mobilesdk/osx/$(TITANIUM_SDK_VERSION) TITANIUM_BASE_SDK = "$(TITANIUM_SDK)/iphone/include" TITANIUM_BASE_SDK2 = "$(TITANIUM_SDK)/iphone/include/TiCore" HEADER_SEARCH_PATHS= $(TITANIUM_BASE_SDK) $(TITANIUM_BASE_SDK2) $(TITANIUM_BASE_SDK3) // 修正 ---------------------------------------- $ ./build.py ------------------------------------------------------------------------------------- === BUILD NATIVE TARGET tiarmarker OF PROJECT tiarmarker WITH CONFIGURATION Release === Check dependencies ** BUILD SUCCEEDED ** Build settings from command line: SDKROOT = iphonesimulator4.3 === BUILD NATIVE TARGET tiarmarker OF PROJECT tiarmarker WITH CONFIGURATION Release === Check dependencies ** BUILD SUCCEEDED ** -------------------------------------------------------------------------------------
ビルドが完了し、めでたくcom.armarkerti-iphone-0.1.zipが生成されました。
- 3. 生成されたファイルをコピー
「2.」で生成されたcom.armarkerti-iphone-0.1.zipをサンプル動作用プロジェクトのディレクトリ直下にコピーして下さい。
$ cp -p com.armarkerti-iphone-0.1.zip ~/iPhoneApp/ARsample/
これでインストールは完了です。つまづかなければ簡単ですね!
サンプル動かそうぜ!
cloneしたモジュールの直下にあるexample/app.jsでサンプル動作用のディレクトリにあるapp.jsを上書き
$ cp -p example/app.js ~/iPhoneApp/ARsample/Resources/app.js
サンプルアプリを実機へインストールし、実行したが、
ソッコーアプリが落ちてしまった。。。
なぬ。。。!?!?
さて、この後どうなる!?!?!?
つづく。
つづきは、こちら↓
阿部諒が試してみた!『Titanium mobileのARマーカー検出モジュール」編 その2(完結編)
TitaniumMobile iPhone/Androidアプリ開発入門
- 作者: 小澤栄一,増井雄一郎
- 出版社/メーカー: 秀和システム
- 発売日: 2012/01/31
- メディア: 単行本
- 購入: 9人 クリック: 169回
- この商品を含むブログ (24件) を見る
HTMLとJavaScriptでiPhone/Androidアプリが作れる『Titanium Mobile』を試してみた!
どうも、おはようございます。こんにちわ。こんばんわ。
ご機嫌いかがですか。阿部です。
突然ですが、iPhoneアプリはObjective-C(C/C++)でしか
作れないと思っておりませんが!?!?
いいえ、そんなことはございません。
Objective-C(C/C++)、以外にもC#やAS3.0、JS×HTML×CSSなどでも作れるのです。
・ ActionScript3.0(Packager for iPhone)
・ HTML/CSS/JavaScript(Titanium Mobile、PhoneGap)
今回はですね、その中でも皆さんおなじみのJS×HTML×CSSで開発が出来る
『Titanium Mobile』を試してみました!
Titaniumを使うメリット/デメリット
- メリット
- なんて言っても、みんなが知ってるJS×HTML×CSSが開発が出来るので開発速度の向上する
- JavaScriptをサポートしているため、jQueryやYahoo! UI Libraryなどの豊富なJavaScriptフレームワーク/ライブラリ資源を活用出来る
- Objectice-Cでの開発では不可能だったメモリ管理が自動化出来る(細かなメモリ管理が出来ないのでデメリットでもあります)
- デメリット
- メモリ管理ができない
- Objective-Cによる開発に比べて実現できる範囲が制限されている(と思う。グラフィックの制御とか?)
Titaniumがサポートしている機能
最後に標準のサンプルソースをいじったものを載せておきます。
簡単なソースなんで少し読めば分かるかと思います。
// this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create controls tab and root window // (1つめのタブとウィンドウの生成) // var win = Titanium.UI.createWindow({ title:'Dear developper', backgroundColor:'#111', textAlign:'left' }); var tab = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 1', window:win }); var label1 = Titanium.UI.createLabel({ color:'#aaa', top:0, height:220, text:"Let's enjoy SmartPhone Application Develop!!", font:{fontSize:45,fontColor:'#0000ff',fontFamily:'Helvetica Neue'}, textAlign:'left' }); var label2 = Titanium.UI.createLabel({ bottom:1, height:100, color:'#aaa', text:"From @RyoAbe", font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'right' }); // add label win.add(label1); win.add(label2); // // create controls tab and root window // (2つめのタブとウィンドウの生成) // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // add tabs tabGroup.addTab(tab); tabGroup.addTab(tab2); // open tab group tabGroup.open();
んでこれが出来上がったやつ↓↓
TitaniumMobile iPhone/Androidアプリ開発入門
- 作者: 小澤栄一,増井雄一郎
- 出版社/メーカー: 秀和システム
- 発売日: 2012/01/31
- メディア: 単行本
- 購入: 9人 クリック: 169回
- この商品を含むブログ (24件) を見る
Google App Engine for Python で WordPressを動かす
こんばんわ。
@shibukawa さんからバトンをもらい、今年初めて参加したアドベントカレンダーで記事を書くことになりました。
今回は、GAE/PythonでWordPressが動かせないかなと思い調べてみました。
■ "pypress4gae" とやらでやれるらしい
web2py上で動く、pypress4gaeというオープンソースでWordPress風なBlogが作れるらしい
■入れてみよう
1. pp4gaのダウンロード
$ git clone http://github.com/mdmcginn/pp4gae.git
2. web2pyのダウンロード、解凍
$ wget http://www.web2py.com/examples/static/web2py_src.zip $ unzip web2py_src.zip
3. pp4gae側のものをweb2py側へコピー
$ cp pp4gae web2py/applications/ $ cp web2py/applications/pp4gae/app.yaml web2py/ $ cp web2py/applications/pp4gae/routes.py web2py/
5. GAEにアップ
$ ./appcfg.py update web2py
6. Email/PassWordの変更
デプロイが完了後したら、ブラウザで確認するのだが、
初めてのログインはEmail/PassWordともに[admin]でログインをする。
http://アプリケーション名.appspot.com/
Email/PassWordを変更し、次のログインからは新しいパスワードでログインをする。
7. 感想
こんな簡単に出来ると思わなかったですなぁ。
なんかでも、けっこうモッサリモッサリしてる。。
ちなみにこれが出来上がったやつ。
http://rabe-weblog.appspot.com/
次のバトンは、@flag_boy さんに回します。
辞書を構造体っぽくアクセス出来るならリストでも出来るんじゃね?と思って調べてみた。
@shimizukawaさんの過去のBlogに pythonで辞書に構造体っぽくアクセスするメモ at 清水川Web という記事があった。
内容としては題名通り辞書に対してのアクセス、
In [1]: dic = {"a":1, "b":2, "c":3} In [2]: dic["a"] Out[2]: 1
を、
In [3]: dic.a Out[3]: 1
なんていう風に構造体っぽくアクセスするためには?ということが書かれている。
方法としては、組み込み型のdictを継承し、
__getattr__というスペシャルメソッドをオーバーライドしてアクセス方法を変えるというものだった。
この記事を見て僕が思ったのが、listについてもコレが出来るのでは?と思った。
じゃあ、やってみようぜ!
基本的なソースは、pythonで辞書に構造体っぽくアクセスするメモ at 清水川Web の記事と一緒。
In [1]: class ListMapper(list): ...: def __getattr__(self, index): ...: if index in self: ...: return self[index] ...: def __setattr__(self, index, value): ...: self[index] = value ...: ...: In [2]: lists = [1,2,3,4] In [3]: mylist = ListMapper(lists) In [4]: mylist[1] Out[4]: 2 In [5]: mylist.1 ------------------------------------------------------------ File "<ipython console>", line 1 mylist.1 ^ SyntaxError: invalid syntax
__getattr__メソッドが呼ばれる前に、シンタックスエラーになるというオチでした。。
なんか、方法があるのかもしれないけど><
でも、__getattr__って使い道によってなんか色々出来そう!もっと調べてみよ〜