【Android】開発環境準備時にEclipseが起動できない場合の処理

2011.11時点の最新版のJDK(Java Development Kit)とEclipseの組み合わせではエラーが表示されて、Eclipseが起動できない問題がある。

Eclipse起動エラー

これはEclipseがJDKを見つけられないという事なので、別途JDKのパスを設定してあげる必要がある。
エラーメッセージにもあるとおりbin\javaw.exeのパスを設定してあげる。

「コントロールパネル」→「システムとセキュリティ」→「システム」の順にクリックして「システムの詳細設定」を開く。

システムの詳細設定

「システムの詳細設定」をクリックして「システムのプロパティ」ウィンドウを開く。

システムのプロパティ

「詳細設定」タブの下部にある「環境変数」をクリックして「環境変数」ウィンドウを開く。
今回はシステム環境変数として設定する。

環境変数の設定

まず、システム環境変数の新規ボタンから
変数名:JAVA_HOME
変数値:C:Program File\Java\jdk1.6.0_29(JDKのヴァージョン)
を入力し「OK」をクリック。

すると、リスト上にJAVA_HOMEが追加される。

次に、システム環境変数リストの中のPath変数をクリックしてシステム変数を編集する。
変数値:C:Program File\Java\jdk1.6.0_29の後ろに、

;%JAVA_HOME%\bin

を追加する。

システム環境変数

あとは、Pathの設定が正常かどうか確認する。

「スタート」→「すべてのプログラム」→「アクセサリ」→「コマンドプロント」でコマンドプロントを起動する。

javac -version

を実行する。

コマンドプロント

C:\Users\Usersname>javac -version
javac 1.6.0_29

javacのバージョンが出力されれば正常。
これで正常にEclipseを起動できるようになります。

【MySQL】複数カラムのデータを重複しないように出力する

今回は月別アーカイブで利用する用に出力したい為、
yearとmonthを合わせた状態で重複しないようにデータを出力したい。

テーブル:t_calendar
| year| month| ….|
|—–|——|—–|
| 2011| 11| ….|
| 2011| 10| ….|
| 2012| 2| ….|
| 2012| 1| ….|
| 2011| 10| ….|
| 2011| 10| ….|
| 2011| 11| ….|
| 2011| 12| ….|
| 2012| 1| ….|
| 2012| 2| ….|

こういった場合はyearとmonthをまずGROUP BYでグルーピングしてあげてからSELECTで出力する。

SELECT year, month FROM t_calendar GROUP BY year, month;

【出力結果】
| year| month| ….|
|—–|——|—–|
| 2011| 10| ….|
| 2011| 11| ….|
| 2011| 12| ….|
| 2012| 1| ….|
| 2012| 2| ….|

古い順に並んでいるデータを新しい順に並び替えて出力する。

SELECT year, month FROM t_calendar GROUP BY year DESC, month DESC;

【出力結果】
| year| month| ….|
|—–|——|—–|
| 2012| 2| ….|
| 2012| 1| ….|
| 2011| 12| ….|
| 2011| 11| ….|
| 2011| 10| ….|

【PHP】指定月の1日の曜日を取得する

カレンダーを動的に作成したい場合にその月の1日が何曜日なのかという情報が必要になる。
date関数で1日の曜日を取得してみる。

<?php
	$year_val = 2011;
	$month_val = 11;

	//指定月の1日目の曜日を番号で取得
	$week_val = date('w',strtotime("$year_val/$month_val/1"));
	echo $week_val;
?>

【出力結果】

2

日曜日が0、月曜日が1という具合にデータを取得することができる。
この値を利用すれば”火曜日”,”Tue”という文字列でも出力することができる

<?php
	$week_arr = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
	$year_val = 2011;
	$month_val = 11;

	//指定月の1日目の曜日を番号で取得
	$week_val = date('w',strtotime("$year_val/$month_val/1"));
	echo $week_arr[$week_val];
?>

【出力結果】

Tue

【Android】リソース定義(XMLファイル)で特殊文字をエスケープする

リソース定義するXMLファイル上で、
シングルクォート(‘)やダブルクォート(“)などの特殊文字を記述するとエラーになる。

そこで特殊文字をエスケープする。

& → &amp;
> → &gt;
< → &lt;
' → \'
" → \"

顔文字などにも特殊文字が含まれている事があるので気を付けよう!!

【PHP】copy関数とunlink関数を組み合わせてファイルを移動する

copy関数…ファイルをコピーする関数

unlink関数…ファイルを消去する関数
を組み合わせてファイルを移動する。

$from = "元ディレクトリ(物理パス)";
$to = "移動先ディレクトリ(物理パス)";

if(copy($from, $to)){
	unlink($from);
}

まず元ディレクトリから移動先ディレクトリにcopy関数を使ってファイルをコピーする。
コピーが成功したらunlink関数で元ディレクトリのファイルを消去する。

【PHP】ファイルの拡張子を文字列で取得する関数

ファイルの拡張子を文字列で取得したい場合、
pathinfo()関数の
第一引数にファイルパス、
第二引数にPATHINFO_EXTENSIONのオプションを指定する。

【例1】

// pathinfo(ファイルパス, オプション);
$extension = pathinfo($file_name, PATHINFO_EXTENSION);

pathinfo()はファイル名が日本語の場合、バグがあるそうなので、別の方法も一応記載しておきます。

【例2】

// funcGetExtension(ファイルパス);
function funcGetExtension($file_name){
	// ファイル名反転
	$file_text = strrev($file_name);
	// 拡張子取得
	$file_ext = substr($file_text, 0, strpos($file_text, "."));
	return strrev($file_ext);
}

こちらはファイルパスの文字列を反転させ、”.”以降の文字列を拡張子として取得します。

【例3】

// funcGetExtension(ファイルパス);
function funcGetExtension($file_path){
	// ファイル名分解
	$file_text = explode("." , $file_path);
	// 一番後ろの文字列を取得
	return array_pop($file_text);
}

こちらはファイルパスの文字列を”.”で分解して配列に入れ、配列最後尾の文字列を拡張子として取得します。

画像ファイルを投稿するフォームなどに利用する場合、ユーザが日本語ファイル名で保存して利用するパターンが多いので、例2,3を使った方がいいかもしれません。

【PHP】split関数で文字列を分解する

split()関数を使って、文字列を分解して変数に入れる。
前回はexplode()関数を使って、配列に代入したが、今回は変数に代入する。

AKB48の神7を指定文字”,”を基準に分解する。

$k7 = "大島優子,前田敦子,篠田麻里子,板野友美,渡辺麻友,高橋みなみ,小嶋陽菜"; 
list($akb01, $akb02, $akb03, $akb04, $akb05, $akb06, $akb07) = split(",",$k7);

// 出力
echo "$akb01/$akb02/$akb03/$akb04/$akb05/$akb06/$akb07";

第1引数に分解する指定文字、第2引数に文字列をいれる。

出力結果

大島優子/前田敦子/篠田麻里子/板野友美/渡辺麻友/高橋みなみ/小嶋陽菜

【補足】
spliti()は分解文字列に正規表現○
explode()は分解文字列に正規表現×
その分性能が向上する。