タグ別アーカイブ: プログラミング

[読んだ−]リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)


読みました−

読みやすいコード! ほんとこれが理想。。
サンプルやコードの目的を持ってコードを書くことの意味など。
純粋に参考になったー!

詳細な設計書もないようなスタートアップのプロジェクトなど、
わかりやすいコードを書くことが一番の設計書になると思う。

コードを読めば何をしているか一発でわかるような、属人化しないようなプログラマになろう!!
レビュー by ブクログ

話題のMeteorを試してみた[javascript]


以下の様な特集があったので、これを機会に試してみようとおもいます。

体感!JavaScriptで超速アプリケーション開発 -Meteor完全解説

meteorについてはgithubで公開されています。

https://github.com/meteor/meteor

インストールした時のファイルは

以下にインストールされます。Homebrewと同じ/usr/localに入るのでどうかとおもいましたが、

取り敢えず入れてみました。

/usr/local/meteor

/usr/local/bin/

[Android] R.javaが消える件


色々ソースをもらってインポートすることが最近はよくあります。

その際、いろんなところでコンパイルエラーが出るんですが、AndroidのBuild Targetなどのバージョンを変えるなどして対応していますが、その中でリソースなどを管理するR.javaが消える事がしばしばあります

コンパイルエラーなども出ないので、はっきりとすぐに分からなかったのですが、以下のサイトでなんとなくみるべきところがわかりました。

http://techbooster.jpn.org/andriod/environment/5796/

リソースをつかさどっているR.javaなのでリソース関連でエラーがある場合に発生するようです。res以下のxmlファイルやAndroidManifest.xmlなど

自分の場合はほぼAndroidManifest.xml の不具合でした。

特に頻繁に多いのが、android:configChanges の項目です。

どうにか対応すると、R.javaができます。 めでたしめでたし!

 

2012/05/08 19:43 追記

http://onno.jp/dev/2011/12/431admob-sdk.html

これでしたAdmobSDKのせいでConfigChangesがエラーでした。

書かれているようにandroid build target を13以上にすると解決したー!!

 

 

 

[Android] dp , sp の単位について


 
pxは使うな

このことはよくきいていたが、では単位として用意されている「dp」「sp」の違いはなんだろう。。。

参考:http://y-anz-m.blogspot.jp/2012/02/androidtextview-settextsize-sp.html

  1. dp  レイアウトの幅などを調整するときに使う
  2. sp  文字のフォントサイズを指定するときに使う

ということらしい。。

spはシステム全体の文字スケールに合わせるとあるが、scaleDensityの値によって大きさが変わるものらしい。本文中の文字など大きさを変わってもししょうがないものについてはこれで行ける。

dpは解像度によって見え方を統一できる単位。レイアウトの大きさやヘッダーやフッターの文字など、一定の大きさからスケールしてほしくないものに対して使える。

ちなみに、

TextView の setTextSize() はspが使われているらしい。

変更するときは

public void setTextSize (int unit, float size)  の第一引数のunitにTypedValueの定数を指定すれば良い

  • COMPLEX_UNIT_DIP : dp, dip
  • COMPLEX_UNIT_MM : mm
  • COMPLEX_UNIT_PT : pt
  • COMPLEX_UNIT_PX : raw pixels
  • COMPLEX_UNIT_SP : sp

 
 

◆◆ 単位に関する参考情報 pxに変換する方法 ◆◆
  •  sp, から pt, px に変換する 
dp から pt に変換する方法(Android dip, dp, から pt, px に変換する)と同じように
getContext().getResources().getDisplayMetrics().scaledDensity
で文字スケールも考慮された比率がとれるので、 これを sp 単位の値にかければ pt, px 単位になります。
 
  • Android dip, dp, から pt, px に変換する

 

以下は以前に自分が書いたJava上からdpを指定するように変換するソース

public static float getDisplayScale(Context context) {
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics dm = new DisplayMetrics();
    wm.getDefaultDisplay().getMetrics(dm);
    return dm.scaledDensity;
}

//使うときはActivityのクラス内で、以下のようにする。
float displayScale = getDisplayScale(getContext());
int size = (int) (50 * displayScale + 0.5f);  

// + 0.5fしているのはスペースがintにキャストした時にスペースが潰れないようにするため。
// 繰り上げさせるように。
//sizeをLayoutParamsのサイズに指定するなどすると解像度に
//依存しないdpを指定したようなサイズで設定できる。

 

[Android]実機で作成中アプリケーションのデータディレクトリへアクセスする


Android開発をしていると、実機での動作確認やエミュレータでの動作確認を行うと思います。しかし、実機で動作確認をしながらデータなどの整合性を確認する方法がなかなかに難しい。。。エミュレーターだとRoot権限があるのでデータディレクトリやSQLiteの中身などを見ることはできますが、実機でしか動作しないC2DMや課金の機能を確認する際は不便を感じます。

その中でデータディレクトリを見る方法を教えてもらいました!!
MacのZsh環境からadb シェルコマンドを使って端末を操作します。

参考:http://stackoverflow.com/questions/1043322/why-do-i-get-access-denied-to-data-folder-when-using-adb

まずはアプリの設定
AndroidManifest.xmlでdebuggableを有効にする。

AndroidManifest.xmlのapplicationタグ

<application android:icon="@drawable/icon" 
  android:label="@string/app_name" android:debuggable="true" >

adbコマンドを使ってシェルで入ります。

% adb shell  (端末を指定する場合は % adb -s [DEVICE_ID] shell)

通常アプリのdataディレクトリはPermission Denied となります。

$ ls /data/data/[com.yourpackage]/
/data/data/[com.yourpackage]: No such file or directory

run-asコマンドでアプリを起動しdataディレクトリに入る

$ run-as [com.yourpackage]

そうすると/data/data/[com.yourpackage]/ へカレントディレクトリが移動し
[files][databases][shared_pref]ディレクトリが見えるはず!
shared_prefにあるプリファレンスや更新されたファイルなどのテキストファイルであれば
cat コマンドで中身も見れます。

run-asコマンド最強!!と思った瞬間でした。

だが、、、、databaseはsqlite3コマンドが実機に貼っていないため中身までは見ることは出来ませんでした。
見る方法があれば教えて欲しいです。(Root化なしで)

追記・・・
デバイスでrun-asが使えるものと使えないものがあるみたい。。。
Xperia Nexusは使えたけど。。。自分の持っている国内メーカのもの1機種使えないものがありました。。