上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Android] ZXing ライブラリ

「ZXing ライブラリ」はQRコードを作成したり、読み取りしたりする機能をもつ
便利なライブラリです。バーコードを読み取ることもできます。

以下でオープンソースで提供されています。
http://code.google.com/p/zxing/downloads/list

zipファイルを解凍して、
 core/core.jar
 javase/javase.jar
を取り出し、プロジェクトでリンクさせてあげれば
すぐに使用できます。

最新バージョンは2.2のようですが、core.jar、javase.jarの
jarファイルは生成されていないようで見当たりませんでした。
自分で生成しないといけないのかな。

とりあえず使ってみたいという人は、前のバージョン2.1を
使用すれば core.jar、javase.jar がすぐに手に入ります。


[PHP] 条件分岐

■if文

「条件A」を満たす場合は、「処理B」を実行したい場合、
if文を使用します。

例)

$x = 100;
if ($x > 50) { // 「条件A」
print("「処理B」");
}


ちなみに、上記のように処理が1行だけの場合は{}を省略することも可能。

例)

$x = 100;
if ($x > 50) // 「条件A」
print("「処理B」");



■if-else文

「条件A」を満たす場合は「処理B」を実行し、それ以外の場合、
「処理C」を実行するときはif-else文を使用します。

例)

$x = 10;
if ($x > 50) { // 「条件A」
print("「処理B」");
} else {
print("「処理C」");
}



■if-elseif文

「条件A」を満たす場合は「処理B」を実行し、「条件C」を満たす場合は、
「処理D」を実行し、それ以外の場合は「処理E」を実行するような場合、
if-elseif文を使用します。

例)

$x = 100;
if ($x > 50) { // 「条件A」
print("「処理B」");
} elseif ($x <30) { // 「条件C」
print("「処理D」");
} else {
print("「処理E」");
}



■switch文

if-elseif文のように複数のケースを持つ場合、switch文を使用したほうが
スッキリしたプログラムになることがある。

例)

$x = "C";
switch ($x){
case "A";
print("処理A");
break;
case "B";
print("処理B");
break;
case "C";
print("処理C");
break;
default:
print("処理D");
}


$xの値によって処理を分けるサンプルです。
それぞれ、case文で処理を分けて条件を満たさない場合の
処理をdefault文に記載します。

[PHP] 演算子

演算子については、他のプログラミング言語と
ほとんど同じですな。

■算術演算子

 $x + $y    足し算
 $x - $y    引き算
 $x * $y    掛け算
 $x / $y    割り算
 $x % $y   ($x / $y)の余り
 -$x      符号(プラス/マイナス)を逆転




■代入演算子

 $x = $y    $xに$yを代入する
 $x += $y   $xに($x+$y)を代入する
 $x -= $y   $xに($x-$y)を代入する
 $x *= $y   $xに($x*$y)を代入する
 $x /= $y   $xに($x/$y)を代入する
 $x .= $y   $xに$xと$yを連結した値を代入する(文字列の連結)
 ++$x     $xに1を加算する($xを返す前に加算)
 --$x     $xに1を減算する($xを返す前に減算)
 $x++     $xに1を加算する($xを返した後に加算)
 $x--     $xに1を減算する($xを返した後に減算)




■比較演算子

 $x == $y   $xと$yが等しい
 $x != $y   $xと$yが等しくない
 $x <> $y   $xと$yが等しくない
 $x < $y    $xが$yより小さい
 $x > $y    $xが$yより大きい
 $x <= $y   $xが$yより小さいか等しい
 $x >= $y   $xが$yより大きいか等しい




■論理演算子

 !$x      $xがfalseならtrueを返す
 $x && $y   $xがtrueかつ$yがtrueならtrueを返す
 $x || $y   $xがtrueまたは$yがtrueならtrueを返す
 $x and $y   $xがtrueかつ$yがtrueならtrueを返す
 $x or $y   $xがtrueまたは$yがtrueならtrueを返す
 $x xor $y   $xまたは$yがtrue、かつ$x、$yのどちらかがfalseの場合trueを返す




[PHP] 配列

PHPでも配列を使用することができます。
"$val[n]" のように変数名の後ろに添え字指定してあげることで、
配列として扱うことができます。

 例)
  $val[0] = "test1";
  $val[1] = "test2";

  print_r($val);

  出力結果は、
   Array ( [0] => test1 [1] => test2 )
  となる。


また、以下のように一括で配列データを変数に格納することもできる。

 例)
  $val2 =array("tes3", "tes4");

  print_r($val2);

  出力結果は、
   Array ( [0] => test3 [1] => test4 )
  となる。


※print_r()は変数の情報を解りやすく出力してくれる関数です。
 参考サイト:http://php.net/manual/ja/function.print-r.php



■連想配列

配列のキーを添字ではなく、任意の文字列キーで指定することができ、
これを連想配列といいます。
JavaのMapみたいな感じで考えられるのかな。

 例)
  $val['a'] = "test1";
  $val['b'] = "test2";

  print_r($val);

  出力結果は、
   Array ( [a] => test1 [b] => test2 )
  となる。



■添え字の配列と連想配列の混合

添え字の配列も連想配列も方は自動判定なので、添え字を文字と考えれば、
キーは添え字と文字列を混在させることが可能となる。

 例)
  $val[0] = "test1";
  $val['b'] = "test2";

  print_r($val);

  出力結果は、
   Array ( [0] => test1 [b] => test2 )
  となる。

[PHP] 変数について

■変数名の命名規則

 ・変数の先頭には"$"をつけるべし

  $val

 ・変数名に使用可能な文字は英・数字、アンダースコア"_"

 ・名称の先頭に数字を使用するのはNG

 ・大文字小文字は区別される


変数の型
JavaやC言語などでは、その変数が数値であるか文字列であるかなど変数の型を
宣言してあげる必要がありますが、PHPは自動的に型が判断されますので、
型を考えて宣言する必要はない。


変数に変数名を入れて「"$"+変数」のような使用方法も可能

 例)
  $val_2 = "val_1";
  $val_1 = "test";
  print($$val_2);


出力結果は
 test
となる。

■定数
定数は、定義するという観点からでしょうか define でセットします。

define(定数名, 値);

 例)
  define("VAL" , "テスト");
  print(VAL);

出力結果は
 テスト
となる。


[PHP] コメント

■単一行コメント

"//" または "#" の後ろは単一行のコメントとなる。

例)
  // コメント
  # コメント


■範囲指定(複数行)コメント

"/*" と "*/" にの間はコメントになる。

例)
  /* コメント */

  /*
   コメント1
   コメント2
  */


'//' と '#' の両方が使えるのは意外でした。


[Excel] 現在日時の入力を簡単に行うショートカット

Excelでは、現在の日付を表示するのにTODAY()関数があるが、
TODAY関数の場合、日付が進むとともに更新されてしまう。

単純に、その時の日付を入力したい場合、ショートカットで
簡単に入力することができる。

「Ctrl」 + 「;」

「2013/5/6」というように日付が入力される。


時間の場合、

「Ctrl」 + 「:」

「13:01:00」と時間が入力される。


意外と使える便利機能ですな。



[Android] 端末内インストールアプリ一覧表示が遅い

[Android] アプリケーションSDU
で、公開したアプリの性能の向上を考えていて、調べた結果をメモ。

現在、アプリ一覧の取得をPackageManagerから行っているが、
どうも処理に時間がかかる。
# PackageManagerでのアプリ情報取得に時間がかかるという方もいるみたいです

各処理に処理時間を計測するログを埋め込んだところ、
 ApplicationInfo#loadLabel()
が大きな原因のようです。
※ android.content.pm.ApplicationInfo

ちょっと実装をのぞいてみたら以下のようになっていた。

public CharSequence loadLabel(PackageManager pm) {
if (nonLocalizedLabel != null) {
return nonLocalizedLabel;
}
if (labelRes != 0) {
CharSequence label = pm.getText(packageName, labelRes, getApplicationInfo());
if (label != null) {
return label.toString().trim();
}
}
if (name != null) {
return name;
}
return packageName;
}



label.toString().trim();

で trim() しているのが問題そうだな。
# trim()はホントに必要なのかな??

String#trim() のパフォーマンスが悪いという記事が
チラホラ見つかったので、やっぱり原因はここの可能性が高い。

そこで、
trim()しないApplicationInfoをカスタマイズしたクラスを
作成しようと検討してみたが、単純にApplicationInfoを
継承して loadLabel() をオーバーライドすればできるという
考えは甘いようです。
かなり、厄介そうなのでひとまずこの部分は諦めておくことにしました。
#別のところで少しパフォーマンス改善ができそうだった

Android側のコードだと、たしか SpanableString あたりも
効率が悪かった気がします。

プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。