1. HOME
2012.03.12 23:02

memcached client for javaでgetする際の注意点

PHPでmemcachedに入れた値を、memcached client for java で取得する必要がある案件があり、PHPでmemcachedに入れたキーでgetしても何故かnullが返ってきたしまう現象がありました。

しかし、Javaで入れた場合はちゃんと取れるのです。
 MemCachedClient mcc = new MemcachedClient();
 mcc.get('PHPでsetしたkey'): //⇐どうがんばってもnull
 mcc.get('javaでsetしたkey'); //setした値が返ってくる


ちょっと調べてみたら、他言語でsetした値をmemcached client for javaで取得する場合は、以下の一文を加えなかればいけないみたいです。
 mcc.setPrimitiveAsString(true);
先頭へ戻る
2011.07.04 23:57

【Java】日本語文字列をUnicodeに変換する

以前のエントリー(【Java】JSON-lib)で、JavaのMapからJSONを出力しましたが、このままだと日本語がUnicodeにエンコードされないので、PHPでいうjson_encodeをJavaで実現したいと思います。

 

以下の関数でUnicodeにエンコードできます。

 

▽ソース▽

 
	public static String unicodeEscape(String v){
		if(v == null )return "";
		
		char[] charValue = v.toCharArray();
		
		StringBuilder result = new StringBuilder();
		for(char ch : charValue){
			if(ch != '_' && !(ch >= '0' && '9' >= ch) && !(ch >= 'a' && 'z' >= ch) && !(ch >= 'A' && 'Z' >= ch)){
				String unicodeCh = Integer.toHexString((int)ch);
				
				result.append("\\u");
				for(int i=0;i<4-unicodeCh.length();i++){
					result.append("0");
				}
				result.append(unicodeCh);
				
			}else{
				result.append(ch);
			}
		}
		
		return result.toString();
	}

 

先頭へ戻る
2011.06.30 23:35

【Android】Androidアプリの開発環境を構築する。

そろそろ、本格的にAndroidアプリの開発をしていきます。

まずは、開発環境構築からですね。

 

Androidアプリの開発環境構築手順を紹介していきます。

1.JDKをインストールする。

AndoroidアプリはJava言語での開発になるので、JDKをインストールする必要があります。

下記URLよりダウンロードできます。

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html

 

2.eclipseをインストールする。

Javaと言えば、eclipseです。

eclipseをインストールしましょう。

以下のURLよりダウンロードできます。

http://www.eclipse.org/downloads/

なんかいっぱいありますが、「Eclipse IDE for Java Developers」をダウンロードしましょう。

 

3.androidSDKをインストールする。

Androidのデベロッパーページにて、SDKが提供されているので、インストールするマシンにあったものをダウンロードします。

create-android-enviroment03.jpg

 

ダウンロードしたzipファイルを解凍すると、「SDK Manager.exe」というファイルがあるので、クリックして起動します。

create-android-enviroment06.jpg

すると、上図のようなウィンドウが立ち上がるので、「Accept」にチェックをつけて、「Install」ボタンをクリックします。

 

4.eclipseプラグイン(Android開発ツール)をインストールする。

ここまで、インストールしたら、次は先ほどインストールしたeclipseを立ち上げます。

メニューの「Help」→「Install New Softwere...」をクリックします。

create-android-enviroment01.jpg

 

そして、上のほうにある「Add」ボタンをクリックすると、以下のような画面が出て来るので、Location欄に

「http://dl-ssl.google.com/android/eclipse/」を入力します。

create-android-enviroment02.jpg

しばらくすると、

create-android-enviroment04.jpg

なんか出てくるので、チェックを付けて、「Next」をクリックします。

いくつか画面が出てきますが、なにもせず全部「Next」をクリックしておきます。

最後まで行くと、eclipseの再起動を要求されるので、再起動します。

 

5.eclipseでAndroidSDKを使えるようにする。

次に、先ほどインストールしたAndroidSDKをeclipseで使えるようにします。

メニューの「Window」→「Preferences」→「Android」と移動すると以下のような画面になるので、

create-android-enviroment05.jpg

先ほど、インストールしたSDKのロケーションを指定してあげます。

 

これで、開発環境は無事構築できましたー!!

 

6.Androidプロジェクトを作る

本当にできているのか心配なので、サンプルプロジェクトを作ってみます。

メニューの「File」→「New」→「Other」と進んでいくと、以下のようにAndroidプロジェクトが指定できるので、指定します。

create-android-enviroment07.jpg

プロジェクト名、アンドロイドのバージョン、パッケージ名を入力して、「Finish」をクリックすると、プロジェクトが作成されます。

 

今回はdemoという名前のプロジェクトを作成してみました。

6.エミュレータを動かしてみる。

プロジェクトが出来ると、中にサンプルソースが記述してあるので、これをエミュレータで動かしてみます。

プロジェクト内の、「src」→「指定したパッケージ名」→「DemoActivity.java」を開きます。

そして、メニューの「Run」→「Run」をクリックし「Android Application」を選択し「OK」をクリック。

しばらくすると、以下のようにエミュレータが立ち上がります。

create-android-enviroment08.jpg

これで、無事に開発環境が構築されていることが確認できました!!

 

 

先頭へ戻る
2011.06.23 22:33

【Java】JSON-libを使ってJSONを解析する

前回の記事、【Java】JSON-libを使うの逆の処理を行います。

今度は、JSONで受け取った値をJava側で解析します。

 

以下のようなJSONデータを解析してみます。

[{id:1,name:'大塚愛'},{id:2,name:'石原さとみ'}]

 

▽ソース▽

String json = "[{id:1,name:'大塚愛'},{id:2,name:'石原さとみ'}]";

JSONArray arr = JSONArray.fromObject(json);

for(int i=0;i<arr.size();i++){
 JSONObject obj = JSONObject.fromObject(arr.get(i));
 System.out.println(obj.get("id") + " : " + obj.get("name"));
}

 

▽出力結果▽

1 : 大塚愛
2 : 石原さとみ
 
先頭へ戻る
2011.06.21 01:22

ネットワーク基礎 -IPアドレス偏(その2)-

前回(ネットワーク基礎 -IPアドレス偏(その1)-)の続きです。

 

早速問題です。

 

■問題①

ネットマスクが 255.255.255.0 の場合、IPアドレスをいくつ振り分けられるでしょう?

■答え①

254個

 

え?256個じゃないのって感じですが、実は予約語というものがあって、この場合、末尾が00000000と11111111には、IPアドレスが振り分けられないのです。

 

末尾が全部0のモノを、ネットワークアドレスと呼び、

末尾が全部1のモノを、ブロードキャストと呼びます。

 

CIDRとは

 

さて次に、よく以下のような記述を見ることがあります。

 

192.168.3.1/26

 

192.168.3.1はIPアドレスですが、「/26」ってなんだ?

 

これは、CIDR(サイダー)と呼ばれ、ネットマスクを表しています。

左から数えたネットマスクのbitが立っている数がこの数字となります。

 

つまり、192.168.3.1/26 のネットマスクは、

11111111.11111111.11111111.11000000

これを十進数に直すと

255.255.255.192

になります。

 

もうこれで、IPアドレスに関する知識は身につきました。

 

まとめ

 

最後におさらい問題です。

 

■最終問題

00100100.10100101.000100XX.XXXXXXXX のネットワークアドレス、ブロードキャスト、CIDRを求めなさい。

 

■最終問題の答え

ネットワークアドレス:36.165.16.0
ブロードキャスト:36.165.19.255
CIDR:22

 

解説していきます。

 

■最終問題の解説

まずは、ネットワークアドレスから。

ネットワークアドレスとは、末尾が0のモノなのでXの部分を全て0に置き換えて、十進数にするだけです。

00100100.10100101.00010000.00000000
              ↓
36.165.16.0

 

次に、ブロードキャスト。

ブロードキャストは末尾が1のモノなので、Xの部分を今度は1に置き換えます。

00100100.10100101.00010011.11111111
              ↓
36.165.19.0
 
CIDRは、ネットマスクのbitが立っている数なので、X以外の部分を数えるだけですね。
 
いつも、何気なく見ているIPアドレス、これでしっかりと理解できましたね。
 
先頭へ戻る
2011.06.16 23:32

ネットワーク基礎 -IPアドレス偏(その1)-

プログラマになって3年が過ぎ、Java、PHP、ActionScript、JavaScriptなど様々な言語はある程度かけるようになったが、ネットワーク分野については、まだ知識が浅い。

 

ネットワークをちゃんと理解してこそ、もっとプログラマとして成長できると考えています。ですので、ネットワークを基礎から勉強し直そうと決心しました。

 

今回は、IPアドレス偏です。

ネットワークの基礎の基礎。まずは、IPアドレスを理解する必要があります。

いつも何気なく見ているIPアドレス

 

192.168.0.1(例)

 

これにはちゃんと意味があるんです。

 

二進数のおさらい

IPアドレス(IPv4)は、32bitの二進数で表現されます。

なので、IPアドレスを理解するためには、まず二進数を理解しなければなりません。

遠い昔に学校で習った気がしますが、おさらいです。

 

二進数は0と1のみで表します。

ここで問題。

 

■問題①

01001001 を十進数で表しなさい

■答え①

73

 

■問題②

152 を8桁の二進数で表しなさい

■答え②

10011000

 

 

解説です。

 

■問題①の解説

ipaddress01.gif

二進数は十進数で上記のように表すことができるので、問題①は

64+8+1 = 64 + 8 + 1 = 73

という風に計算できます。

 

 

 

■問題②の解説

ipaddress02.gif

計算の仕方は幾つかありますが、8桁と桁数が決まっているので、上記のように、27まで並べて152を左側から差を計算し、差より低い数値が出てきた時に、1を立ててあげます。

 

 

 

ここまでできたら、次はIPアドレスを二進数に直してみます。

 

■問題③

10.33.2.150 を二進数で表しなさい。

 

■答え③

00001010.00100001.00000010.10010110

 

 

 

■問題④

255.255.255.0 を二進数で表しなさい。

 

■答え④

11111111.11111111.11111111.00000000
 
 
ここまで出来れば、もう二進数は完璧です。
 

IPアドレスとネットマスク

次は、IPアドレスとネットマスクについてです。

先ほどの問題③と問題④の答えを比べてみます。

 

ipaddress03.gif
 
IPアドレスとネットマスクの二進数を並べて、ネットマスクが1が立っている部分と0が立っている部分で、意味が変わってきます。
 
1が立っている部分は、ネットワークアドレスと呼ばれ、ネットワークを特定するためのアドレスを示しています。
 
逆に0の部分は、ホストアドレスと呼ばれ、そのネットワーク内の個々のマシンを特定するアドレスを示しています。
 
 

 

IPアドレスを二進数にしてみることで、IPアドレスの中身が分かってきました。

 

とりあえず今回は一旦ここまで。

次回(ネットワーク基礎 -IPアドレス偏(その2)-)へ続きます・・・

先頭へ戻る
2011.06.16 22:07

【Java】JSON-libを使う

JavaでJSON形式で吐き出すAPIを開発する必要がでてきたので、JavaライブラリのJSON-libを使って実現することにしました。

必要なライブラリ

JSON-libを実行するためには以下のライブラリが必要です。

 

 

 

JSON-lib本体はこちら↓です。

http://sourceforge.net/projects/json-lib/files/

 

早速使ってみよう

JavaのMapからJSONオブジェクトを作成してみます。

 

Map map = new HashMap();
map.put("id","1");
map.put("name","keisuke");

JSONObject j = JSONObject.fromObject(map);

========================

【出力結果】

{"name":"keisuke","id":"1"}

========================

 
 
こんなかんじで、簡単にJSON形式で吐き出すことが出来ました。
 
逆にJSONデータを解析する方法は、こちら(【Java】JSON-libを使ってJSONを解析する)
先頭へ戻る
2011.06.16 01:08

独自ドメインで短縮URLをつくる

Google URL Shortener(http://goo.gl/)やbitly(http://bit.ly/)など、URL短縮ツールは色々ありますが、遷移先の信憑性を高めるためにも、独自ドメインで実現したいですね。

そんな時に、使えるのがYOURLS(http://yourls.org/)です。

1.動作環境

PHP 4.3以降

MySQL 4.1以降

mod_rewriteが有効である

 

2.一式をダウンロード

http://code.google.com/p/yourls/downloads/list

より必要なファイル一式をダウンロードします。

 

3.ファイルを編集する

1.でダウンロードした /includes/config-sample.php を編集します。

 

/** MySQL database username */
define( 'YOURLS_DB_USER', 'dbuser' );

/** MySQL database password */
define( 'YOURLS_DB_PASS', 'dbpassword' );

/** The name of the database for YOURLS */
define( 'YOURLS_DB_NAME', 'yourls' );

/** MySQL hostname */
define( 'YOURLS_DB_HOST', 'localhost' );

/** MySQL tables prefix */
define( 'YOURLS_DB_PREFIX', 'yourls_' );

/*
 ** Site options
 */

/** YOURLS installation URL, no trailing slash */
define( 'YOURLS_SITE', 'http://hoge.com/yourls' );

DBユーザー名、パスワード、DB名、DBホスト、DBプレフィックス、サイトURLをそれぞれ自分の環境に合わせて入力します。

 

/**  Username(s) and password(s) allowed to access the site */
$yourls_user_passwords = array(
	'username' => 'password',
	'username2' => 'password2'	// You can have one or more 'login'=>'password' lines
	);



管理画面にログインする為の、ログインIDとパスワードを設定します。

入力し終わったら、config.phpという名前で保存します。

4.インストールする

ファイル一式をアップロード(今回は、http://hoge.com/yourls/にアップロード)し、

http://hoge.com/yourls/admin/

にアクセスすると、

yourls01.gif

インストール画面になるので、「Install YOURLS」ボタンをクリック。

yourls02.gif

すると、.htaccessが無い!と怒られるので、.htaccessを作ります。

5. .htaccessを配置

詳しくは、ここ(http://code.google.com/p/yourls/wiki/htaccess)に書いてあるのですが、

.htaccessに

RewriteEngine On
RewriteBase /yourls/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /yourls/yourls-loader.php [L]

と記述して、配置します。

 

6.インストール完了

yourls03.gif

インストールが完了し、ログインすると上記のような画面が出てきます。

これで、簡単に独自ドメインで短縮URLが作れるようになりました。

 

 

先頭へ戻る
2011.06.15 23:44

【MT】CKEditorプラグインを導入してみた

MTでデフォルトで入っている、リッチテキストエディタが使いにくすぎるので、CKEditorを入れてみました。

 

1.ダウンロード

https://github.com/usualoma/ckeditor-for-mt/downloads

zipファイルをダウンロード

 

2.ファイルをアップロード

1.でダウンロードしたファイルを解凍すると、mt-dtaticとpluginsフォルダがあるので、それぞれMTの該当のディレクトリに上書き。

 

3.アップグレード

ファイルをアップロード後、ログインしようとすると自動的にアップロード画面になり、画面に従っていくと導入完了。

 

4.結果

 

ckeditor.gif

こんな感じになりました。

非常に使いやすくなったので、これからブログをどんどん更新できそうです!!

先頭へ戻る
2011.06.13 07:22

今やらなければならないこと

DSC_0365.jpg

土曜日に情報ステーションのスタッフMTGを行いました。

理事の岡・金子・木村と専任スタッフ4名。

実はこの7人全員で集まってMTGをしたのは、初めてだったりします。


議題は、以下の3つ。

・ここ2,3ヶ月の活動実績

・スタッフ全員の評価

・今後2ヶ月の活動目標


・ここ2,3ヶ月の活動実績

・図書館の開館

・助成金の申請

・イベントの運営や手伝い

などなど、みなさん頑張ってくれました。

専任スタッフが4人入ってきてから、今まで緩やかに成長してきたモノが、急激に早くなった気がします。


・スタッフ全員の評価

みなさんに、自分以外の6人の評価をしていただきました。

それぞれ、いい所・悪い所を書いてもらいましたが。今ひとつ、踏み込んだところまでは書いてもらえませんでした。
もっと、ズケズケと踏み込んで欲しかったというのが本音です。スタッフ間の見えない壁というものが少し感じられました。

・今後2ヶ月の目標
みなさんに、今後2ヶ月間の短期的な目標を掲げてもらいました。
もちろん、僕も。
目標と言うのは、大きくてなんぼだと思っています!
大きければ大きいほど、達成したときの喜びも大きくなります。


ここまでは、前半戦で、今回のMTGの大きな目標は、運営費の捻出です。

いくらNPOだからって、お金はかかります。

今の図書館を維持するのだった実は簡単ではないのです。

いつなくなるかわからない。そんな危機感を持って、運営費を捻出するにはどうしたらいいかを徹底的に話し合いました。


ただ、NPO法人情報ステーションとして忘れてはいけないことは、金儲けをするわけではないということです。

地域住民における社会的問題を解決しながら、お金をいただくことが我々の目指すところです。


もう一つ、話題となったのは、自分たちが楽しむということです。

自分たちが面白いと思えないことを、やるつもりはないし、やっても誰もついてきません。

もちろん、図書館はスタッフ全員楽しんで運営していますし、イベントも楽しいと思うモノを提供しています。



今、情報ステーションの事業は、民間図書館事業とイベントサポート事業の2本柱でやってきていますが、今年度中に新規事業を立ち上げようともくろみ中です。


いくつか、候補は上がっているのですが、事業計画や収支計画のバランスを見て決めようかと思っています!


5時間にわたる長い会議でしたが、たまにはこういうのも必要だねと感じました。

さて、2ヵ月後、自分含めみなさんの目標が達成できているかが気になります。


先頭へ戻る