2013年6月13日木曜日

EclipseでAndroidのログが出力されなくなった時の対応。

Eclipseでは、LogCatで、Androidの実機のログを見ることができます。
そのログが出なくなったときは、DDMSパースペクティブを開いて、Deviceビューからログを見たい端末を選択すると、ログが出ることがあります。

お試しあれ。

2013年6月1日土曜日

Apache OpenMeetingsでビデオ会議をしてみませんか?


ビデオ会議とは、簡単に説明するとみんなでテレビ電話することです。
離れた場所にいる、複数の相手の顔を画面上で見ながら、お話すること。

Apache OpenMeetingsを使うと、無料でビデオ会議環境がつくれます。
画面共有もできるので、「見たいプレゼンがあるんだけれど、離れた場所でやるからなー。」
という時にも、プレゼンする人に画面共有をお願いすれば、プレゼンを聞くことができます。

Apache OpenMeetingsはセットアップも簡単!
ビデオ会議、試してみませんか?

□サーバーセットアップ
2つのソフトウェアをインストールするだけです。Javaをインストールして、Apache OpenMeetings(zip)を解凍して、設定するだけです。
記録機能を使うためには他にもいろいろと必要ですが、
テレビ会議をするだけなら、すぐにセットアップできます。

サーバはWindowsでも、Linuxでも、Macでも大丈夫です。Java最高。
ちょっと試してみたい場合にはWindows、みんなで使うときにはLinuxを使うと良いと思います。

では、セットアップ手順。
1. Javaのダウンロードとインストール
2. Apache OpenMeetingsのダウンロードとインストール
3. Apache OpenMeetingsの設定と起動

1. Javaのダウンロードとインストール
http://java.com/ja/download/ からJavaをダウンロードします。
exeファイルがダウンロードされるので、ダブルクリックで実行してください。

2. Apache OpenMeetingsのダウンロードとインストール
http://incubator.apache.org/openmeetings/downloads.html から Apache OpenMeetingsをダウンロードします。
zipファイルがダウンロードされるので、右クリックで解凍してください。

3. Apache OpenMeetingsの設定と起動
 Apache OpenMeetingsを解凍したフォルダにできる、binフォルダに移動します。
以下のコマンドをコマンドプロンプトにコピー&ペーストします。(下の行を選択して、右クリック→コピーした後に、コマンドプロンプトで右クリック。)
./admin.sh -i -email admin@example.com -group mygroup -tz "Asia/Tokyo" -user myadmin --password mypassword
↑のコマンドでは初期ユーザを作っています。メールアドレスがadmin@example.com, 会議室を共有するグループがmygroup、時間が東京時間、ログインIDがmyadmin、passwordがmypasswordのユーザを作っています。

最後に起動。
red5.sh
これだけ。
あとは、ブラウザで http://{hostname}:5080 にアクセスしてみてください。
ブラウザにFlash Playerが入っていれば、openmeetingsを使用することができます。
ブラウザはChromeで使用すると、音が割れる(というか、ぶつぶつになるというか。。。)ことがあるのでFirefoxやSafari等をおすすめします。
停止は
でできます。

テレビ会議、お楽しみあれ。

2013年3月16日土曜日

HomeBrewで環境を汚さずにRuby2.0をインストール

HomeBrewとは、Rubyで書かれたMac用パッケージ管理ツールです。
一番簡単なHomeBrewのイントールは、ターミナルから
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
でインストール出来ますが、/usr/local/binなどにいろいろインストールされます。
私は知らないファイルを知らない場所にいろいろインストールされるのには耐えられないので、場所指定でインストールします。
今回は/Applications/homebrewを作って、その中にインストールします。
事前にCommand Line Tools for Xcode か Xcodeをインストールしてください。

ではインストールをはじめます。
cd /Applications
mkdir homebrew && curl -L https://github.com/mxcl/homebrew/tarball/master | tar xz --strip 1 -C homebrew
認証Proxyを超える場合は、上記コマンド前に、
export http_proxy=http://{USER}:{PASS}@{PROXY}:{PORT}
export ALL_PROXY=$http_proxy
を設定しておきます。

これでhomebrewがインストールされるので、.bash_profileでPATHを設定しておきます。
echo "export PATH=/Applications/homebrew/bin:\$PATH" >> ~/.bash_profile
source ~/.bash_profile

brew のインストールは以上で終わりです。
あとはRubyのインストールを行います。
ruby install ruby

これでRubyが/Applications/homebrew/binにインストールされます。

2013年2月16日土曜日

Herokuにwarをデプロイ(With Eclipse)

Herokuって知ってますか?良い感じのPaaSです。Tomcatがセットアップされていて、作ったWebアプリケーションを動かすことができます。すでに有名なサービスなのですが、日本語でJavaのWebアプリをデプロイする方法を説明しているサイトが無かったので、ここで公開。

HerokuにJavaのWebアプリを載せる方法は、コマンドライン、Eclipseとあるのですが、ここでは一番簡単だとおもうEclipseの手順を載せます。

事前準備
Eclipse3.7以上を用意します。
Herokuでアカウントを作っておきます。

■ Eclipseのセットアップ
1. EclipseにHeroku用プラグインをインストールします。
ツールバーのHelp > Install new Software →Work with に https://eclipse-plugin.herokuapp.com/install を入れて、Enterキーを押します。

Heroku Eclipse Integrationが表示されるので、チェックを入れてNext>ボタンを押します。

あとは道なりでプラグインがインストールされます。

2. プラグインの設定
プラグインのインストールが終了したら、ツールバーのPreference(Eclipseなら、Eclipse→環境設定)→HerokuでHerokuのアカウント情報を入力して、Loginボタンを押します。

すると、API Keyに値が入ります。
続いて、General → Network Connections → SSH2で、Key ManagementからGenerate RSA Keyを押します。鍵が表示されるので、Save Private Keyを押します。

再びHerokuの設定画面に戻って、Load SSH keyボタンを押して、生成した.pubファイルを指定します。
OKボタンを押して、設定完了です。

■WARのデプロイ
1. Heroku Viewの表示
Window → Show View → OtherからHeroku→My Heroku Applicationsを選択します。My Heroku Application Viewが表示されます。

Herokuを使うのが初めてでしたら、ビューのテーブルには何も常時されません。

2. アプリケーションの作成
デプロイするアプリケーションをHerokuに作成します。ローカルにもWebアプリが作られますが、作られたWebアプリを使う必要はありません。手元にwarがあれば、それを使うことができます。
ツールバーのFile → Other から Heroku → Create Heroku App From Templateを選択します。

Application Nameに任意の名前(世界でユニークにする必要があります。)を選んで、左下の欄でどれか(なんでもいいです。)を選んで、Finishボタンを押します。
My Heroku Application Viewにアプリケーションが表示されるので、右クリック→Deployで、お好きなwarファイルを指定すれば、デプロイ完了です。

http://{Application Name}.heroku.com にアクセスすると、アプリケーションを確認することができます。

2013年1月31日木曜日

TwitterのoAuthで"Read, Write and Access direct messages"してもDMが使えない場合の対応

Twitterに連携するアプリからDMを使いたい場合は、https://dev.twitter.com でアプリを作って、"Read, Write and Access direct messages"を設定します。
しかしながら、時にその設定をしたとしても、ユーザが「ダイレクトメッセージを見る。」を許可されない場合があります。
その時は、oAuthの、twitterのログインページのURLを確認してみてください。
oAuthのログインURLは2パターンあって、
https://api.twitter.com/oauth/authorize
と、
https://api.twitter.com/oauth/authenticate
があります。
前者ならばDMは使えますが、後者は使えません。
Twitter4jを使っている場合は、前者はgetOAuthRequestToken().getAuthorizationURL()で、後者が、getOAuthRequestToken().getAuthenticationURL()で取得出来ます。前者じゃないと、DMは使えません。

困った場合は、是非お試しあれ。

2012年9月7日金曜日

Amazon Glacierで、Vault中のArchive一欄を取得する方法、または、ArchiveIDを紛失したり忘れた時の対応

Amazon Glacierって御存知ですか?
Amazon Web Servicesの一ストレージサービスで、1Gを1ヶ月1円で使えるのです!
データのバックアップ用途に使えるストレージです。

Amazon Glacierでは保存する場所のことをVaultといい、
保存するファイルのことをArchiveと言います。
Archiveにはアップロード時にユニークなID=ArchiveIdが振られます。
Archiveを取り出したり、削除したりするときにはArchiveIdが必要になります。

Archiveは、基本的には利用者側で控えて置かなければなりません。

で、ここで今日のお題です。
Glacierに保存したArchiveのIDを忘れてしまったり、紛失したりした時にどうするか、です。

実は私も、Glacierの試用中にArchiveIDを忘れてしまい、アップロードしたファイルを消せなくなってしまいました。
激安とはいえ、不要なファイルのためにお金を取られ続けるのは悲しいですよね。

上記の様に、Archiveは基本的には利用者側で控えておくべきものですが、
Amazonにも保存されています。

それを取り出す方法は、↓のURLに記載されている、AmazonGlacierDownloadInventoryWithSQSPollingを実行することです。
http://docs.amazonwebservices.com/amazonglacier/latest/dev/retrieving-vault-inventory-java.html
実行すると、JSONフォーマットのファイルがローカルに出力され、その中にアップロードしたArchiveのIdが記載されています。ただ、結果を得る(JSONファイルがローカルに出力される)ために4時間ぐらい待つ必要があります。。。
ArchiveIdはしっかりと控えておくほうが無難ですね。


バックアップって、テープに取ろうにも、オートローダやテープ媒体は結構高いし、
ハードディスクはちょっと不安だし、ブルーレイも容量少ないし。。。で、コレまでは悩みが多いものでした。
Amazon Glacierはそのソリューションになり得ると思います。

Amazon Glacierは中小企業やWebサービス運営のバックアップにとても有用です。
しかしながら、ちょっとクセがあります。
何かお困りごとがあれば、コメントいただければお力になります。
(宣伝みたいになっちゃったけれど、私はAmazonとは何の関係もありません。。。)

2012年9月1日土曜日

関数型言語っぽい言語

突然ですが、問題です。
↓は、ある言語の一部です。
さて、何言語でしょう?
{
 var myFunction = new function() {
  var execute()
  {
   i = 1;
   j = 2;
   console.log(i + j);
   return null;
  }
 };
 setTimeout(myFunction, 1000);
}






JavaScriptと答えてくれたあなたを僕は大好きです。






で、答えはJavaでした。無理やりJavaScriptっぽく書いています。
全文は以下です。ちゃんと1秒後に「3」って表示されます!
public class FakeJavaScriptTimeout {
 class var {
  var execute(){return new var();}
 }

 class function extends var {
  public int i, j;
 }

 static class console {
  static void log(Object o) {
   System.out.println(o);
  }
 }

 public void setTimeout(final var function, final int time) {
  new Thread(){
   public void run() {
    try {
     Thread.sleep(time);
    } catch (InterruptedException e) {}
    function.execute();
   };
  }.start();
 }

 {
  var myFunction = new function() {
   var execute()
   {
    i = 1;
    j = 2;
    console.log(i + j);
    return null;
   }
  };
  setTimeout(myFunction, 1000);
 }
 
 public static void main(String[] args) {
  new FakeJavaScriptTimeout();
 }
}

「だから何」って。。。別になんでもなんですが。。。。