Androidメモリリーク発見方法 [プログラミング]
Google I/O 2011の「Memory management for Android Apps」というセッションでAndroidプログラムのメモリリーク発見方法が紹介されていました。
前半はAndroid Gingerbread以降GCが変わったよ、というお話でした。でも日本市場の主だったプラットフォームはAndroid2.2、、、2.3に到達するのはいつのことやら、という状況なので来年には役に立つかな?くらいの情報になってしまっています(日本市場よ、もっと頑張ろう)
メモリリークについては、たぶん詳しい方はすでに気づいていたんでしょうけど、EclipseのMATというツールが”かなり”使えます。( http://www.eclipse.org/MAT/ )
ddmsだけで頑張っていた自分はなんだったのでしょう・・・あきらかに勉強不足だな。
今までご存じなかった皆さん、ぜひチェックしてください!!
前半はAndroid Gingerbread以降GCが変わったよ、というお話でした。でも日本市場の主だったプラットフォームはAndroid2.2、、、2.3に到達するのはいつのことやら、という状況なので来年には役に立つかな?くらいの情報になってしまっています(日本市場よ、もっと頑張ろう)
メモリリークについては、たぶん詳しい方はすでに気づいていたんでしょうけど、EclipseのMATというツールが”かなり”使えます。( http://www.eclipse.org/MAT/ )
ddmsだけで頑張っていた自分はなんだったのでしょう・・・あきらかに勉強不足だな。
今までご存じなかった皆さん、ぜひチェックしてください!!
「Linuxエンジニア養成読本」 [プログラミング]
一見すると比較的初級者向けかなーと思わせる表紙ですが、内容が濃い~!!!
Chapter 1 ディストリビューションの系譜と今を理解する
Chapter 2 カーネルのしくみを理解する
Chapter 3 起動のしくみと今どきな機能
Chapter 4 [最新]ファイルシステムのしくみ
Chapter 5 UNIXコマンド[実践]基礎知識
Chapter 6 シェルスクリプト[実践]基礎知識
Chapter 7 パイプラインを使いこなそう
Chapter1とChapter5以降は表紙のイメージどおり初級者向け。
でも、Chapter2~Chapter4はかなりのものですよ~。この3つの章が読みたいがために購入したようなもの。
一応4.3のころの「BSDの設計と実装」とかも読んでいる私ですが、最近はアプリケーション層での技術しかおっかけていなかったので大変勉強になったー!!。
ファイルシステムは特に勉強になりました。fsckって最近使わないなーと思っていたら、ジャーナルファイルシステムなどの技術が盛り込まれていたんですね~。
この内容でこのお値段、Linuxを使っている方必見ですよ。
Chapter 1 ディストリビューションの系譜と今を理解する
Chapter 2 カーネルのしくみを理解する
Chapter 3 起動のしくみと今どきな機能
Chapter 4 [最新]ファイルシステムのしくみ
Chapter 5 UNIXコマンド[実践]基礎知識
Chapter 6 シェルスクリプト[実践]基礎知識
Chapter 7 パイプラインを使いこなそう
Chapter1とChapter5以降は表紙のイメージどおり初級者向け。
でも、Chapter2~Chapter4はかなりのものですよ~。この3つの章が読みたいがために購入したようなもの。
一応4.3のころの「BSDの設計と実装」とかも読んでいる私ですが、最近はアプリケーション層での技術しかおっかけていなかったので大変勉強になったー!!。
ファイルシステムは特に勉強になりました。fsckって最近使わないなーと思っていたら、ジャーナルファイルシステムなどの技術が盛り込まれていたんですね~。
この内容でこのお値段、Linuxを使っている方必見ですよ。
Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)
- 作者:
- 出版社/メーカー: 技術評論社
- 発売日: 2011/04/08
- メディア: 大型本
「Javaルールブック」 [プログラミング]
高品質なプログラミングをする上で何らかのルールは必要です。そのルールをチーム全体で守ってこそ全体としての品質もあがります。でもそんなルールを作り上げるのって結構大変ですよね。
今回紹介するのはJavaでのルールをたくさん掲載した書籍です。Java登場当初からプログラムを作ってきましたけど、こうしたルールは自分たちであちこちから集めたのを思い出します。今はそんなことしなくてもこうして書籍1冊で入手できる。しかもその内容は「その通り!」とうなずけるもの。便利なものです。
もうすっかり体にしみこんでいる人なら別ですが、こんな便利なものを入手しないなんてもったいないですよ。
今回紹介するのはJavaでのルールをたくさん掲載した書籍です。Java登場当初からプログラムを作ってきましたけど、こうしたルールは自分たちであちこちから集めたのを思い出します。今はそんなことしなくてもこうして書籍1冊で入手できる。しかもその内容は「その通り!」とうなずけるもの。便利なものです。
もうすっかり体にしみこんでいる人なら別ですが、こんな便利なものを入手しないなんてもったいないですよ。
「Java: The Good Parts」 [プログラミング]
開発者のみなさん、自分が利用している開発言語の利点をちゃんと理解していますか。
言語の利点を最大限に発揮していますか?そしてその言語選択は適切ですか?
Java言語を使うなら本書で利点をしっかり理解しましょう。
Javaは比較的大規模システムの開発に向いています。そしてチーム開発にも向いています。
それは型をもった言語であるから。
なんで型があると大規模に向いているのか、それは本書で解説されています。
Javaには例外という仕組みがあります。例外はどんな時に使うのか、それも本書で解説されています。
(私の経験上、.Netの例外とJavaの例外は使いどころがちょっと異なります。.Net版のGood Partsがあればきっとその差がよくわかるはずなんだけどな~)
また言語仕様ではありませんが、JavaにはJavadocというドキュメントシステムがあります。こうした機能を備えているのも大規模システム開発に向く理由です。
本書の内容(特に前半部分)は、私が今まで後輩たちに説明してきた内容そのもの。その時にこの本があればもっと説得力のある説明ができたのに・・・ととても残念に思えます(最終的には、みんな理解してくれただろうとは思いますけど・・)
開発者がちゃんと理解して、そしてそれを実践すればもっと効率的で高品質な開発ができるはず!!
ぜひ皆さんも本書を読んで、Javaを最大限に活かしましょう。
言語の利点を最大限に発揮していますか?そしてその言語選択は適切ですか?
Java言語を使うなら本書で利点をしっかり理解しましょう。
Javaは比較的大規模システムの開発に向いています。そしてチーム開発にも向いています。
それは型をもった言語であるから。
なんで型があると大規模に向いているのか、それは本書で解説されています。
Javaには例外という仕組みがあります。例外はどんな時に使うのか、それも本書で解説されています。
(私の経験上、.Netの例外とJavaの例外は使いどころがちょっと異なります。.Net版のGood Partsがあればきっとその差がよくわかるはずなんだけどな~)
また言語仕様ではありませんが、JavaにはJavadocというドキュメントシステムがあります。こうした機能を備えているのも大規模システム開発に向く理由です。
本書の内容(特に前半部分)は、私が今まで後輩たちに説明してきた内容そのもの。その時にこの本があればもっと説得力のある説明ができたのに・・・ととても残念に思えます(最終的には、みんな理解してくれただろうとは思いますけど・・)
開発者がちゃんと理解して、そしてそれを実践すればもっと効率的で高品質な開発ができるはず!!
ぜひ皆さんも本書を読んで、Javaを最大限に活かしましょう。
「はじめての「Go言語」」 [プログラミング]
まだまだ情報が少ない「Go言語」。
C言語のような感じもあるのですが、最近のRuby等のスクリプト言語のフレーバーも感じるのが「GO言語」。
本書は入門中の入門という位置づけ。簡単なプログラムを書ける程度に対応するものです。
簡単にかけるレベルでも並列処理が書けてしまうんだからなかなかのものだと思いますよ。
ただ、言語としてはそれなりのレベルに達しつつあるようですが、GUIなどの高度フレームワークが整備されていないのでまだまだ一般に使われるまでには時間がかかりそうです。Googleが開発している言語だし、並列処理とかhttpのパッケージとか用意されているのだからGoogle App Engineで使えるようにしたら一気に普及するかもしれないけど。それもまだまだ先でしょうね。
新し物好きの方、ちょっと面白い言語を今のうちに先取りしてみませんか。
C言語のような感じもあるのですが、最近のRuby等のスクリプト言語のフレーバーも感じるのが「GO言語」。
本書は入門中の入門という位置づけ。簡単なプログラムを書ける程度に対応するものです。
簡単にかけるレベルでも並列処理が書けてしまうんだからなかなかのものだと思いますよ。
ただ、言語としてはそれなりのレベルに達しつつあるようですが、GUIなどの高度フレームワークが整備されていないのでまだまだ一般に使われるまでには時間がかかりそうです。Googleが開発している言語だし、並列処理とかhttpのパッケージとか用意されているのだからGoogle App Engineで使えるようにしたら一気に普及するかもしれないけど。それもまだまだ先でしょうね。
新し物好きの方、ちょっと面白い言語を今のうちに先取りしてみませんか。
Android + Google Guice + ProGuard [プログラミング]
Android SDK r8から導入されたProGuardの設定をしました~。
シンプルなアプリケーションだったら設定も何もなくとっても簡単~。
ただ、一部アプリで若干はまりました。それはGoogle Guiceを使っているアプリ。
DIツールだからクラス名とか変わってしまうと困るってのは理解できますね・・・。
で、あちこち調べ、実験して、やっと動くようになったのが(proguard.cfg)次の設定
とりあえずこれで動いています。
(ちゃんとGuice側のソースコードを理解したらもっとよい方法があるのかもしれないな~と思いつつ、そこまでやっていません)
他にベストな解があったらぜひ教えてください!!
シンプルなアプリケーションだったら設定も何もなくとっても簡単~。
ただ、一部アプリで若干はまりました。それはGoogle Guiceを使っているアプリ。
DIツールだからクラス名とか変わってしまうと困るってのは理解できますね・・・。
で、あちこち調べ、実験して、やっと動くようになったのが(proguard.cfg)次の設定
-keep public class * extends com.google.inject.AbstractModule -keep class com.google.inject.** { *; } -keepclassmembers class !com.google.common.** { *; } -keepattributes *Annotation*
とりあえずこれで動いています。
(ちゃんとGuice側のソースコードを理解したらもっとよい方法があるのかもしれないな~と思いつつ、そこまでやっていません)
他にベストな解があったらぜひ教えてください!!
新しいAndroid SDKにはProGuardが標準装備されたそうです。
AndroidのOS 2.3リリースとともにAndroid SDKもr8になりました。このSDKからProGuardが標準装備になるそうです。
最初はただそれだけだと思っていました。
どこかのAndroid入門書でも以前からProGuardそのものは紹介されていたし、他のアプリケーションで難読化を使ったことがありますが、スタックトレースも難読化されてしまい結局自分たちもログメッセージが読めないため採用には気乗りしなかった・・・。
のですが、「Androidとセキュリティ:Android 2.3(Gingerbread) SDKに標準搭載されたProGuardを試す」を読んでびっくり。
難読化されたスタックトレースをデコードする方法もちゃんと提供されているらしい!!
これなら使えるじゃん!!確かProGuardそのものはどのAndroid OSでも使えるはずだし使わなきゃ損じゃないか!!
さっそく明日職場のSDKをバージョンアップしてProGuardを使うように変更しようっと。
(参考資料は毎度お世話になっているY.A.Mの雑記帳かな)
自宅の環境は今週末にバージョンアップだ・・・。
Amazon.co.jp ウィジェット
腕のおぼえのあるソフトウェア技術者さん、参加してみては??? [プログラミング]
Facebookが「Hacker Cup」を開催。
登録開始は12月20日みたいです(米国流の書き方で最初戸惑ってしまった・・・)
ニュース記事によると第1ラウンドはオンライン、最終ラウンドはFacebook本社のあるカリフォルニア。
最終ラウンド進出者には(ちゃんと?)旅費はでるようです。優勝賞金は5000ドル(今のレートだと50万を切りますね・・・)で日本からの旅費・滞在費とそう変わらないかもしれませんが、世界に認められるチャンスですよ~。
腕におぼえのあるソフトウェア技術者の皆さんチャレンジしてみては??
(国内のGDDにも参加できない私には無理ですね、きっと)
特に意味はありませんけど・・・
登録開始は12月20日みたいです(米国流の書き方で最初戸惑ってしまった・・・)
ニュース記事によると第1ラウンドはオンライン、最終ラウンドはFacebook本社のあるカリフォルニア。
最終ラウンド進出者には(ちゃんと?)旅費はでるようです。優勝賞金は5000ドル(今のレートだと50万を切りますね・・・)で日本からの旅費・滞在費とそう変わらないかもしれませんが、世界に認められるチャンスですよ~。
腕におぼえのあるソフトウェア技術者の皆さんチャレンジしてみては??
(国内のGDDにも参加できない私には無理ですね、きっと)
特に意味はありませんけど・・・
Android SDK r8のdraw9patchでエラー??! [プログラミング]
Android SDKをr8にアップデートした後,draw9patchを実行したらエラーで起動できない。
Exception in thread "AWT-EventQueue-0" -> 折り返し
java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker
とかなんとか表示されました。さっそくネットで調べてみると同じエラーは他でも発生していました。
swing-worker-xx.jarというものを入れれば解決するとのことでしたので、まずは自分のSDKインストール環境から探してみる・・・ -> 見つからない
上記のページにファイルが公開されていたけど、一応出所がはっきりしているところからダウンロードしたいなーと探してみると https://swingworker.dev.java.net/ というページを発見。
ここからこの時点の最新版の swing-worker-1.2.jar Android SDKのtools/libにおいてdraw9patch.batを実行してみると、おお起動できた。
これでまずは解決かな~。
おおもとのAndroid SDKで対応してくれた時、何をやったのかわからなくなると困るのでここにメモ代わりに公開。
(対応してくれるよね~)
Exception in thread "AWT-EventQueue-0" -> 折り返し
java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker
とかなんとか表示されました。さっそくネットで調べてみると同じエラーは他でも発生していました。
swing-worker-xx.jarというものを入れれば解決するとのことでしたので、まずは自分のSDKインストール環境から探してみる・・・ -> 見つからない
上記のページにファイルが公開されていたけど、一応出所がはっきりしているところからダウンロードしたいなーと探してみると https://swingworker.dev.java.net/ というページを発見。
ここからこの時点の最新版の swing-worker-1.2.jar Android SDKのtools/libにおいてdraw9patch.batを実行してみると、おお起動できた。
これでまずは解決かな~。
おおもとのAndroid SDKで対応してくれた時、何をやったのかわからなくなると困るのでここにメモ代わりに公開。
(対応してくれるよね~)
新しいAndroid SDKにはProGuardが標準装備されたそうです。 [プログラミング]
AndroidのOS 2.3リリースとともにAndroid SDKもr8になりました。このSDKからProGuardが標準装備になるそうです。
最初はただそれだけだと思っていました。
どこかのAndroid入門書でも以前からProGuardそのものは紹介されていたし、他のアプリケーションで難読化を使ったことがありますが、スタックトレースも難読化されてしまい結局自分たちもログメッセージが読めないため採用には気乗りしなかった・・・。
のですが、「Androidとセキュリティ:Android 2.3(Gingerbread) SDKに標準搭載されたProGuardを試す」を読んでびっくり。
難読化されたスタックトレースをデコードする方法もちゃんと提供されているらしい!!
これなら使えるじゃん!!確かProGuardそのものはどのAndroid OSでも使えるはずだし使わなきゃ損じゃないか!!
さっそく明日職場のSDKをバージョンアップしてProGuardを使うように変更しようっと。
(参考資料は毎度お世話になっているY.A.Mの雑記帳かな)
自宅の環境は今週末にバージョンアップだ・・・。
最初はただそれだけだと思っていました。
どこかのAndroid入門書でも以前からProGuardそのものは紹介されていたし、他のアプリケーションで難読化を使ったことがありますが、スタックトレースも難読化されてしまい結局自分たちもログメッセージが読めないため採用には気乗りしなかった・・・。
のですが、「Androidとセキュリティ:Android 2.3(Gingerbread) SDKに標準搭載されたProGuardを試す」を読んでびっくり。
難読化されたスタックトレースをデコードする方法もちゃんと提供されているらしい!!
これなら使えるじゃん!!確かProGuardそのものはどのAndroid OSでも使えるはずだし使わなきゃ損じゃないか!!
さっそく明日職場のSDKをバージョンアップしてProGuardを使うように変更しようっと。
(参考資料は毎度お世話になっているY.A.Mの雑記帳かな)
自宅の環境は今週末にバージョンアップだ・・・。
「iOSデバッグ&最適化技法 for iPad/iPhone」 [プログラミング]
本書はその名の通り、iOS向けアプリのデバッグ方法について解説したものです。
ただし単にデバッグツールを紹介するのではなく、フレームワークやメモリ管理がどのように動くのかをデバッグツールを使ってわかりやすく解説しているところが「最適化技法」とつけられているところでもあります。
メモリ管理のretainとかreleaseとかautoreleaseとかやっと理解できた。autoreleaseを使った場合の問題点もやっと理解できた。
iOS SDK解説の本は多数あれど、本書が一番Coreなところが理解しやすかった気がするな~。たぶんここしばらくは何度も何度も熟読することになるんだろう。
個人的には非常におすすめです。
ただし単にデバッグツールを紹介するのではなく、フレームワークやメモリ管理がどのように動くのかをデバッグツールを使ってわかりやすく解説しているところが「最適化技法」とつけられているところでもあります。
メモリ管理のretainとかreleaseとかautoreleaseとかやっと理解できた。autoreleaseを使った場合の問題点もやっと理解できた。
iOS SDK解説の本は多数あれど、本書が一番Coreなところが理解しやすかった気がするな~。たぶんここしばらくは何度も何度も熟読することになるんだろう。
個人的には非常におすすめです。