Nov 01, 2011
[Misc] CalDAV メモ
CalDAV とは
Java から CalDAV を利用するには
- CalDAV4j
- http://code.google.com/p/caldav4j/
Google Calendar の CalDAV 関連情報
- Sync with iCal or Sunbird
- http://www.google.com/support/calendar/bin/answer.py?answer=99355
Jul 08, 2011
[Misc] astah の「ファイルがオープンできません」に対応する方法
astah で過去に作成したファイルを読み込もうとすると「ファイルがオープンできません」というエラーで一切読み込めなくなった。 公式サイトを見てみたらお知らせに情報が掲載されていた。
- astah - Javaアップデート後に発生する問題について
- http://astah.change-vision.com/ja/java-trouble.html
対応方法
- ADCから "Java for Mac OS X 10.6 Update 4 Developer Package" をダウンロードする。
- ダウンロードした dmg から JDK 1.6.0_24 をインストールする。
- インストールされたことを確認する。
$ cd /Library/Java/JavaVirtualMachines/1.6.0_24-b07-334.jdk/Contents/Commands $ ./java -version java version "1.6.0_24" Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3425) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode)
- astah の Info.plist を編集する。
$ cd /Applications/astah\ professional/astah\ professional.app/Contents/ $ cp ./Info.plist ./Info.plist.original $ vi ./Info.plist $ diff ./Info.plist.original ./Info.plist 56c56 < <string>1.6+</string> --- > <string>1.6.0_24</string>
それにしても既存ファイルが一切読み込めなくなる、というのは致命的すぎる。 Apple は古い環境を躊躇無く切ってくるから Lion で JDK 1.6.0_24 以前が動作するのか不安。 Lion 発売までに .astah ファイルのコンバータが提供されると良いのだけれど・・・。
Jul 01, 2011
[Apple] 固定のレスポンスを返す HTTP Server を立てる
ローカルの MacOS X にどんなリクエストに対しても固定のレスポンスを返す HTTP Server を立ててみた。 手軽に利用できる python の BaseHTTPServer をカスタマイズして実現してある。
HTTP Server の準備
以下の様な python のコードを作成。
/usr/share/local-http-server.py
#!/usr/bin/python
import BaseHTTPServer
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
s.wfile.write("")
if __name__ == '__main__':
BaseHTTPServer.HTTPServer(('localhost', 80), MyHandler).serve_forever()
MacOS X の自動起動設定
/Library/StartupItems/LocalHTTPServer/LocalHTTPServer
#!/bin/sh
. /etc/rc.common
start() {
/usr/share/local-http-server.py &
}
stop() {
pid=`ps -ax | grep "/usr/bin/python /usr/share/local-http-server.py" | grep -v grep | sed -E "s/^ +//" | sed -E "s/ .+$//"`
if [ "$pid" != "" ]
then
kill $pid;
fi
}
case $1 in
start)
ConsoleMessage "Starting Local HTTP Server"
start;
;;
stop)
ConsoleMessage "Stopping Local HTTP Server"
stop;
;;
restart)
ConsoleMessage "Restarting Local HTTP Server"
stop;
start;
;;
*)
echo "$0: unknown argument: $1"
;;
esac
/Library/StartupItems/LocalHTTPServer/StartupParameters.plist
{
Description = "LocalHTTPServer";
Provides = ("LocalHTTPServer");
OrderPreference = "Early";
}
Jun 29, 2011
[Apple] iPhone/iPad アプリケーションでパスワードを管理する方法
iPhone/iPad アプリケーションで何がしかのアカウント情報を管理する場合に知っておくべき情報をメモ。 ざっくりまとめると、
- NSUserDefaults はセキュアでないのでパスワードを保存してはいけない。
- ユーザ ID は NSUserDefaults に、パスワードは Keychain に保存すべき。
- Keychain へのアクセスはオープンソースで提供されているラッパを使うと楽。
- GenericKeychain
- http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Introduction/Intro.html
- Tomute’s Notes
- http://d.hatena.ne.jp/tomute/20091121/1258884514
- Simple iPhone Keychain Code
- http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code
- ldandersen / scifihifi-iphone
- https://github.com/ldandersen/scifihifi-iphone/tree/master/security
- Simple iPhone Tutorial: Password Management using the keychain by using SFHFKeychainUtils
- http://gorgando.com/blog/technology/iphone_development/simple-iphone-tutorial-password-management-using-the-keychain-by-using-sfhfkeychainutils
- Implementing Application Preferences
- http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/Preferences/Preferences.html#//apple_ref/doc/uid/TP40007072-CH6-SW5
Jun 28, 2011
[Misc] Firefox 5 の起動時オプション
Firefox 5 (MacOS X) の起動時オプションをメモ。
$cd /Applications/Firefox.app/Contents/MacOS/
$./firefox-bin -version
Mozilla Firefox 5.0
$./firefox-bin --help
Usage: ./firefox-bin [ options ... ] [URL]
where options include:
--g-fatal-warnings Make all warnings fatal
Firefox options
-h or -help Print this message.
-v or -version Print Firefox version.
-P Start with .
-migration Start with migration wizard.
-ProfileManager Start with ProfileManager.
-no-remote Open new instance, not a new window in running instance.
-UILocale Start with resources as UI Locale.
-safe-mode Disables extensions and themes for this session.
-jsconsole Open the Error console.
-browser Open a browser window.
-new-window Open in a new window.
-new-tab Open in a new tab.
-preferences Open Preferences dialog.
-search Search with your default search engine.
-private Enable private browsing mode.
-private-toggle Toggle private browsing mode.
-setDefaultBrowser Set this app as the default browser.
Jun 27, 2011
[Apple] gdata-objectivec-client にチャレンジ
gdata-objectivec-client は Objective-c で Google Data API を利用するためのライブラリ。
- gdata-objectivec-client
- http://code.google.com/p/gdata-objectivec-client/
とりあえず、 XCode4 のプロジェクトに組み込む手順をメモ。
- 最新のコードをチェックアウト。trunk が気になる場合は tag を利用する。
$ svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdata-objectivec-client
- GData.xcodeproj を iPhone プロジェクトにドラッグ。
- iPhone プロジェクトの Targets "MyProject" の "Target Dependencies" に GDataTouchStaticLib 追加。
- iPhone プロジェクトの Targets "MyProject" の "Link Binary With Libraries" に libxml2.dylib と libGDataTouchStaticLib.a を追加。
- iPhone プロジェクトの Targets "MyProject" の "header search path" に "$(SDKROOT)/usr/include/libxml2" をセット。
- iPhone プロジェクトの Targets "MyProject" の "Other C Flags" に "-ObjC -lxml2 -all_load" をセット(Debug、Release 共)。
- iPhone プロジェクトのビルドディレクトリ( /Users/me/Library/Developer/Xcode/DerivedData/FamilyLibrary-dgrrozxgfpnutzbxyrxpvrsuvtpr/ とか) の ./Build/Products/Debug-iphonesimulator/Headers を iPhone プロジェクトにコピー。
[Misc] Firefox 5 で Ubiquity を利用する方法
Ubiquity 0.6 は Firefox 4/5 ではサポートされない。 そのため、Firefox を 3.6 からアップグレードしようとすると「Ubiquity は無効化される」旨メッセージが表示される。
Firefox 5 で Ubiquity を利用するには以下の手順で最新版(2011/06/27 現在で 0.6.1pre.20110619) をインストールする必要がある。
インストール方法
- https://bitbucket.org/satyr/ubiquity/downloadsから tip.xpi をダウンロード
- Firefox 5 のメニューより「ファイル > ファイルを開く...」 を実行し、tip.xpi を開く
- インストーラの指示に従いインストールを行う
May 26, 2011
[Cloud] Amazon S3 への Write only アクセス権を持ったユーザの作り方
AWS IAM で S3 への Write only アクセス権を実現する方法をメモ。 グループもしくはユーザに以下の Policy を設定する。
{
"Statement":[{
"Effect":"Allow",
"Action":["s3:Put*"
],
"Resource":"*"
}
]
}
Jan 10, 2011
[Android] Android の開発環境を用意する
MacOS X に Android 開発環境を用意したので手順をメモ。
- Android developers
- http://developer.android.com/sdk/index.html
- Android developers - Installing the SDK
- http://developer.android.com/sdk/installing.html
Android SDK のインストール
Android developersページから SDK をダウンロードする。 ここでは android-sdk_r08-mac_86.zip を使用する。 ダウンロードが完了したらインストールを行う。
$ unzip android-sdk_r08-mac_86.zip $ sudo mv ./android-sdk-mac_86 /usr/share $ cd /usr/share $ sudo ln -s ./android-sdk-mac_86 ./android-sdk
Android SDK のアップデート
次に Android SDK のアップデートを行う。
コマンドラインから以下のコマンドを実行すると、Android SDK Manager が起動しアップデートが行われる。
$ cd /usr/share/android-sdk $ ./android update sdk
ADT (Android Developer Tool) のインストール
Android 開発用の Eclipse plugin "ADT" をインストールする。
インストール方法は Installing the ADT Plugin を参照。
ADT の設定
Eclipse を再起動したら設定画面より ADT の設定を行う。
とりあえずは Android SDK のパスを指定するだけで良い。
Hello, Android World
とりあえず動作確認のため Hello, World チュートリアルに挑戦してみる。
Android プロジェクトの作成
"New" > "Other..." を選択し、"Android" > "Android Project" を作成する。
Hello, Android World のコーディング
package jp.in_vitro.android.helloandroidworld;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroidWorld extends Activity {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView view = new TextView(this);
this.setContentView(view);
view.setText("Hello, Android World");
}
}
Hello, Android World の実行
プロジェクト (HelloAndroidWorld) を選択肢、メニューより "Run" > "Run As" > "Android Application" を実行する。
Emulator が起動し、しばらくするとアプリケーションの画面に切り替わる。
Jan 09, 2011
[Android] VMWare Fusion に Android をインストール
x86 用にビルドされた Android を見つけたので、VMWare Fusion にインストールしてみた。
- Android-x86
- http://www.android-x86.org/
Android-86 のダウンロード
ダウンロードページ から iso ファイルをダウンロードする。 今回は froyo-generic-20110101.iso を使用した。
仮想マシンの作成
VMWare Fusion で「新規仮想マシンの作成」を実行し、「ディスクを使用せずに続行」ボタンで先に進む。 「オペレーティングシステムのインストールディスクイメージファイルを使用」を選択し、事前にダウンロードした iso ファイルを選択。 後の設定は以下の通り。
| オペレーティングシステム | その他 |
| バージョン | その他 |
| メモリ | 256M |
| ディスクサイズ(最大) | 2G |
| ネットワーク | 共有ネットワーク(NAT) |
→
→
→
Android-x86 のインストール
Android-x86 の iso イメージから起動したら「Installation」を選択。
後は適当に Bootable なパーティションを作成して、NTFS でフォーマット、Bootloader をインストール、で終了。
基本的にインストーラの言いなりで問題無し。
→
→
→
→
→
→
→
→
→
→
→
→
Android-x86 の起動
インストーラの最後の画面で「Run Android-x86」を選択すると Android-x86 が起動する。
特に設定なども不要でインターネットにも接続できる。
→
→
→
→
Jan 08, 2011
[Cloud] <apex:*> タグを jQuery で操作する
Salesforce の Visualforce Page で利用できる <apex:*> タグ (<apex:outputText>, <apex:outputPanel>, etc) は HTML にレンダリングされた際に少々クセのある ID を持つ。 jQuery にその ID を利用する方法をメモ。
apex タグは HTML にレンダリングされる際、(自動割り当てを含む) ID を持つ直近の親の ID と自身の ID を結合した文字列を HTML タグの ID として付与される。 例えば、下記の <apex:outputPanel> は HTML では "page:form:block:panel" という ID を持つ <div> タグとして展開される。
<apex:page id="page" >
<apex:form id="form" >
<apex:pageBlock id="block" >
<apex:outputPanel layout="block" id="panel" />
</apex:pageBlock>
</apex:form>
</apex:page>
この "page:form:block:panel" を $("#page:form:block:panel") の様にそのまま jQuery の selector として利用しても動作しない。
selector で特殊な意味を持つ ":" をエスケープすることで jQuery でも利用可能となる。
上記の例では、$("#page\:form\:block\:panel") となる。
サンプル
<apex:page id="page" >
<apex:includeScript value="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"/>
<apex:form id="form" >
<apex:pageBlock id="block" >
<apex:outputPanel layout="block" id="panel" />
<script type="text/javascript" language="javascript">
var jq$ = jQuery.noConflict();
function escapeVisualforceId(vfid) {
return vfid.replace(/:/g,'\\:');
}
jq$(document).ready(function() {
jq$('#' + escapeVisualforceId('page:form:block:panel')).text("Hello World");
});
</script>
</apex:pageBlock>
</apex:form>
</apex:page>



