ハチドリのひとしずくという本を読みました
ハチドリのひとしずくでも、たくさんあつまれば火事も消せる..
と内容はもっと深くていい話で、エコを考える本です
読んで見てください
ひとしずくたらして意味ある?と批判してくる人もおいといて
何にもしない人たちもおいといて、
自分たちのやれることだけやっていく、には共感します
ハチドリの話から、実際にハチドリ計画というのが行われています
ハチドリのひとしずくという本を読みました
ハチドリのひとしずくでも、たくさんあつまれば火事も消せる..
と内容はもっと深くていい話で、エコを考える本です
読んで見てください
ひとしずくたらして意味ある?と批判してくる人もおいといて
何にもしない人たちもおいといて、
自分たちのやれることだけやっていく、には共感します
ハチドリの話から、実際にハチドリ計画というのが行われています
developer.android.comのTraining、Building Your First Appをしてみました
http://developer.android.com/training/basics/firstapp/index.html
Eclipseとコマンドラインで進められています
Android Studio でやったので、異なる点をあったのでメモします
Ubuntu 12.04でAndroid Studio 0.8.9でやりました
模索しながらやったのですが、もっと良いやり方がある気がしています
Building Your First App
JDKだの環境構築の説明
-> Creating an Android Project
設定画面が違います
ここまでの代わりにドットインストールのAndroidアプリ開発入門がわかりやすくていいと思います
http://dotinstall.com/lessons/basic_android
(次で出てくるAVDの作り方もこちらで)
こちらも参考に
UbuntuのJavaを入れ直してみた
UbuntuにAndroid Studioをインストールしてみる
-> Running Your App
sdkのバージョン指定は、AndroidManifest.xmlでなく build.gradleに書かれています
–> Run on a Real Device
こちらを参考に
UbuntuにAndroid端末をUSB接続で認識させる
–> Run on the Emulator
スペック低めのUbuntuマシンでやってて、面倒だったのでやりませんでした
Building a Simple User Interface
Viewの説明
-> Create a Linear Layout
Linear Layoutの説明
fragment_main.xmlがありません
代わりにactivity_my.xmlを修正しました(Blank Layoutを作ってできたlayout/内のxml)
-> Add a Text Field
EditTextを設置します
@はXMLからresource objectを参照するときにつける(違うXMLの値を見るとか)
+ははじめてつけるresource IDにつける
※ resource objectの説明はこの章を読み直す
-> Add String Resources
文字列をstrings.xmlに書いて分けておくことで多言語対応などやりやすいらしい
-> Add a Button
ボタン追加
幅、高さにwrap_contentとしておくと中の文字に合わせた大きさになる
-> Make the Input Box Fill in the Screen Width
テキストボックスとボタンの大きさを割合で表示
layout_weightは最初0
layout_weightを0より大きくすると、割合で大きさがいっぱいへ広がる
(1,0とすると1のものがあまったスペース分広がり、1,1とすると半々になる)
実行はEclipseと同じような実行ボタン(shift+F10)
ここまでで、画面一枚のアプリできあがり
Starting Another Activity
2つ目の画面の追加とデータの渡し方
-> Respond to the Send Button
ボタンのクリック処理をつくります
fragment.xmlはないので、activity_my.xml
javaのファイルは、srcディレクトリでなく、src/main/java/(プロジェクト名)ディレクトリ
-> Build an Intent
Intentというオブジェクトが2つのコンポーネント間のやりとりをしてくれます
importしてないclassの自動import記載は、ALT+Enterでできます
Intentの説明はここを読み直す
-> Create the Second Activity
Activityの追加は、File>New>Activity
画面が違います
PlaceholderFragmentはできてない
onCreateメソッドがActivityのインスタンスを作成する
–> Add the title string
タイトル文字列の用意
Android Studioでも自動でしてくれます
–> Add it to the manifest
android:parentActivityNameに親のActivityを指定すると前の画面へ戻るナビゲーションを自動で用意してくれる
-> Receive the Intent
getIntentでIntentが受け取れ、セットしてた文字列がとれる
-> Display the Message
前の画面で渡した文字列を表示する
TextViewをコードだけで生成し、layoutへ表示させる
setContentView(textView)でlayoutへ表示
これで簡単な2画面アプリができました
Andoridアプリを作ってみよう、ということで
統合開発環境のAndroid Studioをインストールしてみます
Ubuntu 12.04で入れました
Linuxの場合
Oracle Java Development Kit (JDK) 6 or JDK 7
が必要なので入れておきます(現時点の最新は8)
参考)UbuntuのJavaを入れ直してみた
Android Studioをダウンロード
https://developer.android.com/sdk/installing/studio.html#download
インストールしたいディレクトリに移動しておいて
# tar xvzf android-studio-bundle-135.1339820-linux.tgz
必要であれば、ログインユーザーで実行できるよう権限つけておきます
# sudo chown -R user android-studio
などとして
bin/studio.shをたたけば起動します
どこでも起動できるように.bashrcにPATHを追記しておきます
# vim ~/.bashrc
(追記) export PATH=”/(Android Studioをいれたディレクトリ)/bin:$PATH”
設定反映させて
# source ~/.bashrc
起動
# studio.sh
起動するとアップデートがあると言われてるので、一番下のcheckをクリック

Update and Restartをクリックすれば、最新になります

必要なSDKをインストールしておきます
最新のSDKと、持ってる端末のバージョンのSDKでいいと思います
結構、容量があるので注意です
Android SDK Build-tools
SDK Platform
が必須です
AVDなどエミュレーターを使う際は、System Imageが必要です
実機をUSBでつないで動かすので入れませんでした
Android端末との設定はこちらを参考に
UbuntuにAndroid端末をUSB接続で認識させる
これでAndroidアプリ開発の準備ができました
「もし先輩女子エンジニアが『アルゴリズム』を図解で教えてくれるとしたら」を解いてみた
の続きです
動的計画法のコードをPHPで書いてみました
(Rubyのコードとロジックは同じです)
<?php
$M = trim(fgets(STDIN)); // 人員
$N = trim(fgets(STDIN)); // 会社数
$minCost = 0;
$num = array();
$cost = array();
for($i = 0; $i < $N; $i++) {
fscanf(STDIN, '%d %d', $num[$i], $cost[$i]);
$minCost += $cost[$i];
}
$dp[0] = 0;
for($n = 0; $n < $N; $n++) {
foreach ($dp as $key => $value) {
$totalNum = $key + $num[$n];
$totalCost = $value + $cost[$n];
if (isset($dp[$totalNum]) == false) {
$dp[$totalNum] = $totalCost;
} else {
if ($dp[$totalNum] > $totalCost) {
$dp[$totalNum] = $totalCost;
}
}
if ($totalNum >= $M && $minCost > $totalCost) {
$minCost = $totalCost;
}
}
}
//ksort($dp);
//var_dump($dp);
echo $minCost;
人数ごとの結果を残して、再利用しています(わかりにくい..)
一番低いコストの値だけを残しています
まだ無駄のあるコードで、改良の余地ありです
paizaでコードを提出すると採点してくれます
結果はこんな感じです
http://paiza.jp/poh/kirishima/result/fb88794dc2e25c011a242f318744ccc9
最速コードを目指したりするとまだ遊べるようです