2011年7月3日日曜日

Android Developer Lab — Tokyo 2011に行ってきた

六本木ヒルズ23Fのgoogleさんのところで、Android Developer Lab -Tokyo 2011に行ってきた。
初ヒルズで若干緊張。

メニューは午前中にいろいろ説明あって、午後から実際のCode書き書き。
  • Honeycomb紹介  - 松内さん
  • プログラミングTips  - Kenさん
  • UIデザインについて - Roman Nurikさん
  • Androidマーケットについて - Tony Chanさん
(詳細は各ブログを後々カクカク。)

まーいろいろ新しいことを聞けたぞ。
自分的に気になったこと。

  • Fragmentの機能追加されたこと
  • USBポート使えるようになったこと
  • 後方互換性あるからじゃんじゃん新しい環境つかいましょう
  • デザイン一新、ボックス廃止のホワイトスペース重視
  • マーケット拡大中 20万アプリの45億ダウンロード!
で、お昼。

昼食は持ってこなくても用意してくれる、ってことなので「さすがGoogle!!」と思って楽しみにしていたら、なんとなんとお昼だけじゃなくLGのOptimus端末をdocomoさんからもらえちゃいました!!!!

以下弁当。チキンか魚。おれチキン。


もらったoptimus。なんと太っ腹。google大好き!



午後はもらったoptimus使っての実際のコーディング。



いきなり64bitのドライバ設定でつまづき戸惑いましたが、サポートの日本アンドロイド会の人に助けてもらって何とかスタート。

っていうか、Androidコーディング久々ー。
内容は、今までのアプリをハニコム風にカスタマイズする、というもので、説明ありでわかりやすかった。(ちなみに前日は初日であったということもあって説明なく結構わかりずらかったとか。ラッキー)


そして終わってからのみなさん、質問すごかった。
なんかやる気でましたぞ!

とにかく、いろいろ新しいことについて知れて、すごく充実した一日でした!
そして関係者のかた、お疲れ様でした。


2011年7月1日金曜日

Android JSONObjectとかJSONArrayとか

半年ぐらい前に作ったAndroidアプリを最近見てみたら、データ取得に失敗していた。
よく見てみると、JSONデータ取得でExceptionになっていた。

アプリとしてはWebAPIをたたいてそこから帰ってくるJSONデータを加工してListViewに表示するもの。そのListViewに表示する際のJSON形式がいつのまにやら変わっていたのが原因っぽい。(連絡してよ~)

で、修正しようと思ったけど久々にAndroid触ったこともあって、手間取ったので一応まとめておく。


◆JSONObject
  JSONデータを扱うためのクラス。コンストラクタにJSONデータを渡すことで、
  getJsonString()等のメソッドでデータを取得できる。


◆JSONArray
  JSONデータのArray形式のデータを取得できるクラス。コンストラクタにJSONのArray形式の
  データを渡すことで、getJSONObject()等のメソッドでJSONObjectクラスを取得しそこから
  データを取得していく。

■変更前
今までは、JSONArrayでデータを渡すことでデータを取得できていた。

<データ形式>

  [{"key":"01","name":"sakura"},{"key":"01","name":"sakura"}]

<ソース>

	
    JSONArray coupon = new JSONArray(data);
    int len = coupon.length();
    for(i=0;i<=len;i++){
      JSONObject jCoupon = coupon.getJSONObject(i);
      ResponseDataCoupon rd = new ResponseDataCoupon(jCoupon);
      ListItem tmpItem = new ListItem(rd);
      list.add(tmpItem);
    }
しかし、形式が変わったため、以下のように一旦JSONObectからkey値を取得し、それからその キー値でgetJSONObjectを指定することでJSONデータの各レコードを取得するように変更した。 ■変更後 <データ形式>
  {"1":{"key":"01","name":"sakura"},"2":{"key":"01","name":"sakura"}} <ソース>
    JSONObject obj = new JSONObject(data);
    Iterator it = obj.keys();
    while(it.hasNext()){
      JSONObject jCoupon = obj.getJSONObject((String)it.next());
      ResponseDataCoupon rd = new ResponseDataCoupon(jCoupon);
      ListItem tmpItem = new ListItem(rd);
      list.add(tmpItem);
    }

ふー。そろそろAndroid再開じゃ。

2011年6月26日日曜日

PHPで写真共有サイト構築 -5 写真ダウンロード

最後は写真ダウンロード処理。

実はこれはまだ途中。
本当はダウンロードボタンを押した際にプログレスバーを表示したいが、その対応はまだ・・・。

ま、とりあえず今回の対応のポイントは1つ。

  1. systemコマンドでファイルを圧縮してダウンロード
systemコマンドでファイルを圧縮するために、圧縮元のファイルと圧縮後のファイル名を引数で取得。
//ダウンロードするファイル
$selectFiles = $_POST["selectFiles"];
$zipFile = $_POST["zipFile"];

// zipファイル文字列作成
$fileCnt = count($selectFiles);
for($i=0; $i<$fileCnt; $i++){
  $zipFiles .= $selectFiles[$i];
  $zipFiles .= " ";
}
あとはそれをもとにsystemコマンドを発行。
// 圧縮
$re = system("zip -r $zipFile $zipFiles");
これだけで複数ファイルのダウンロード可能。
まー、プログレスバー出したりいろいろ使い勝手よくする方法はあるとおもうけど、
とりあえずやりたいことはこれで完成!!

PHPで写真共有サイト構築 -4 写真アップ表示

今回はthumbnail画像をクリックした際の実際のimage用(target)写真の表示。

実は前回のList表示のソースで以下のように画像クリック時にimgview.phpという処理を呼び出すようにしていた。その処理。
echo "";
  echo "";
thumbnail画像をクリックしてやりたいことは、

  • target画像(大きい画像)の表示
  • List表示時の前後のファイルへの移動
で、ポイントは
  1. target写真のパスと、image用写真ディレクトリパスを引数で受け取る
  2. image用写真ディレクトリパスから全ファイルを取得し、mageファイルをソート順で取得
  3. 2で取得した情報とtarget写真パスで、target写真の前後の写真パスを取得
まず、1のパスの取得は今まで通り取得し2のファイルソートも前回のList表示時のソート処理と同様に取得。
 read())){
  //ファイル名配列に順に入れていく
  array_push($array_file, $file_name);
}
sort($array_file);
$ch_dir -> close();
つづいて3のtargetの前後写真のパス取得は、以下のような簡単なロジック。
$getFlg = FALSE;
//ディレクトリ内の画像を一覧表示
foreach ($array_file as $key => $val) {
  $file_name = $val;
  if ($file_name !== "." && $file_name !== "..") {
    $image_path = $dir_path .$file_name;

//    echo $image_path ."
";
    if ($getFlg) {
      $next_file = $image_path;
      break;
    }
    if ($target_file == $image_path) {
      $getFlg = TRUE;
    }
    if (!$getFlg) {
      $before_file = $image_path;
    }
  }
}
最後に、それらの情報を表示する。
if ($before_file){
  echo "前の写真";
}

//画像かどうか?
if (@getimagesize($target_file)){
  echo "";
}

if ($next_file){
  echo "次の写真";
}
ダウンロードボタンを作ってよかったけど、今回は画像Listからの一括ダウンロード処理を対応するようにしたので、ここにはなし。

ということで、次回は最後のファイルダウンロード処理。

2011年6月22日水曜日

RunRunRun

今日から毎日走ることに決めた嫁と俺。

往復で3キロぐらいを今日は走った。
体力つけるぞー!

CSS 基礎

CSS3を勉強する前にCSSの基礎。

書式とさまざまなセレクタ

◆基本書式

属性(プロパティ)

h1 { color : #ff0000;}
↑        ↑
セレクタ    値



◆セレクタ指定方法

-- 要素セレクタ --
   h1 {・・・}                h1要素

-- 子孫セレクタ --
    div img {・・・}          div要素の下の階層のimg要素

-- 属性セレクタ --
     p[id] {・・・}             id属性が指定されているp要素
     p[id="test"] {・・・}   id属性が"test"であるp要素
     p.class_test {・・・}    class属性が"class_test"であるp要素

-- idセレクタ --
     #id_test {・・・}         id属性がid_testである要素

-- クラスセレクタ --
     .class_test {・・・}      class属性がclass_testである要素

そのほか疑似クラスを使用する方法がある。

hover疑似クラス  div:hover {・・・}    div要素にマウスカーソルが置かれているときのプロパティ


などなど。

2011年6月21日火曜日

Rosetta Stone 来たー!!

今日、なけなしのボーナスをはたいて買ったRosettaStoneが来た!

買ったのはレベル1~5の英語のやつでいまだとボーナスキャンペーンで25%OFF。

RosettaStone ボーナスキャンペーン


以下パッケージ内容





今日からRosetta人になれるよう、こつこつやっていこ。
7がつからはノー残だし^^;

【スマート農業】 いまさらだけど、いまだからこその農業IoT 

久々投稿 転職してはや2年半。バタバタしてる中で、あーっという間に時間は過ぎてきた。 仕事はそれなりに順調だけど、ただやっぱり自分で何かを起こす!ということはではできていなく、、、年齢45をこえ、、、、、とくに昔からずーとやろうやろうと言って実現できてなかっった農業IoT。。 去...