NDS40メモ
firefox OS 入門
簡単なfirefox osの構造説明
Gaia : HTML Gecko: レンダリングエンジン Gonk : Linuxカーネル, ハードウェア仮想化(Androidから流用)
アプリを開発してみよう
手順
- firefoxを起動 -> ツール -> 開発者ツール -> WebIDE
- 右上のランタイムからfirefox OS 2.0を起動
- アプリを開く-> 新しいアプリ -> Project -> Hello worldアプリを適当に保存
- 再生ボタンを押すとアプリ起動
firefox OS 開発者勉強会
仕事が捗るoffice & エディタ操作
GUIに頼らずにキーボードショートカットを利用しよう
Fn+ <- / -> でhome/endになる
正規表現を使おう
- ? : 任意の1文字
- : 任意の文字列
正規表現検索
- [(from)~(to)]
- . : 任意の1文字
繰り返し
- * : 0回以上の繰り返し
- + : 1回以上の繰り返し
シェルの基礎とSSH
boume shell系のお話
コマンドに対する各種展開
チルダ展開 echo ~
パラメータ展開 ${USER:--unknown}
コマンド展開 $(echo "echo foo")
算術式展開 echo $((1+1))
クォート除去 echo "foo bar baz"
変数
name = "hello world" echo $name //$で参照
{}を使うことで名前の範囲を明確に指定できる(パラメータ展開)
パイプとリダイレクション パイプ(|)はコマンドの標準出力とコマンドの標準入力を接続
ls | grep vim
リダイレクトは標準出力ではなくファイルに対し出力を行う
コマンド実行前に行われるため注意
ls -a >> out.txt 2>&1 //file, 標準エラー出力に表示
ヒアドキュメント
cat <<EOF > out.txt foo bar baz EOF
制御演算子 コマンド同士を ; で区切ることでコマンドを順番に実行
date ; pwd; ls
コマンド同士を&&で区切ると前のコマンドの終了ステータスが0(成功)だった場合に後のコマンドが実行される
ls && pwd
コマンド同士を||で区切ると前のコマンドの終了ステータスが0以外(失敗)だった場合に後のコマンドが実行される
ls || pwd
条件によって処理を分岐させる if
if[$(id =u) -eq 0] if> then if> echo "rootuser" if> else if> echo "guest"
for
for f in $(ls) //for eachで動く for> do for> cp $f $f.org //フォルダ内を全て.orgに変換 for> done
case, while
もある
コマンドのグループ化
コマンドを括弧でくくるとグループ化できる.出力をまとめることができる.
(echo hoge; echo fuga) | xargs
(echo hoge; echo fuga) > out.txt
この括弧でくくられたコマンドはサブシェルで実行され、シェルの環境に影響をあたえるような操作はコマンド終了時に影響を与えない. 下記コードはプロセスが変わるため変更が適応されない.
hoge = HOGE; (hoge =FUGA;) echo $hoge => HOGE //サブシェルでの変更は親シェルに適応されない
シェルスクリプト 1行目にシバンを記述し2行目以降にコマンドを記述します.
####!/bin/sh //シバン 環境によってbashとかに変更するべき set -eu if... ... fi
ssh Tips
踏み台 踏み台サーバーを経由してリモートホストに接続する場合あProxyCommandオプションを利用すると便利 コマンドラインオプション
ssh -o ProxyCommand "ssh -W %h $p USER@BASTION"
~/.ssh/config コンフィグに書けば流用可能
リモートホストのコマンド実行結果を手元で利用
例 リモートホストのログを手元にコピーしつつ検索
ssh REMOTE_HOST 'cat /var/log/httpd/access_log' | tee REMOTE_HOST .access_log | grep 404
手元のコマンド実行結果をリモートホストで利用
cat batch.sh | ssh REMOTE_HOST 'cat |/bin/sh'
操作ログを残す
scriptコマンドを利用して操作ログをファイルに残す 操作ログを残すのは運用上必要
script -q -c "ssh REMOTE_HOST" /path/to/log/file
困ったら
-hでヘルプを読みましょう
man COMMANDでマニュアルを読もう
「はじめてUNIXで仕事をする人が読む本」はshellやネットワークについてわかりやすく書かれているためおすすめ
プロセスはshellを使う上で避けて通れない. process-book で無料で勉強できる.
Java入門
特徴
- java ≠ javascript
- オブジェクト指向
- 静的型付け
- 仮想マシン上で動作する
- C/C++から多くの構文を比企通
- 言語処理系にはGCが組み込まれている
- 型はプリミティブ型と参照型(クラス)がある
- 共通のふるまいにはインタフェース
クラス
- 全クラスはobject型を継承
- 親クラスは1つしか継承できない(単一継承)
- 定義のみのメソッドを持つクラスを作成可能
インタフェース
Android再入門
ITの周期は3年. androidは7年目. 3年前の情報は古い.
昔のAndroid
Eclipse + ADT #公式Emulator UI以外のテストをJUnit3で動かす
今のAndroid
開発環境 Android stadio
ビルドツール Gradle
テスト
JUnit4
Espresso 2.0
Robolectric
ジェネレータ
Genymotion
Eclipse + ADT はもう古いから使うな by google
ビルドツールはGradle一択
Gradleの懸念点1
- AS1.1が出たばかり.
- 1.0未満の情報は危ない
- 2014年12月以降の情報を参考にしよう
Gradleの懸念点2
* ライブラリの自動ダウンロードが起こる
* キャッシュはあるものの今回は細かいダウンロードが多めに発生する
Emulato
実機を用意したほうが早い
テストツール
* 公式テストツール : androidTest
uiを使わないテストはこちら
* 非公式テストツール : Robolectric
Android Javaについて留意しておいたほうがいいこと
Android Java != Oracle Java
Javascript再入門
万能言語Javascript
- クライアントサイド
- サーバサイドでも使える(node.js)
サンプルコードの位置
コードはgistにある
sambaiz gistで検索
開発環境
jsbinでブラウザ上で実行
スコープの話
関数スコープはあれど, ブロックスコープはない
var -> letにするとブロックスコープがうまれる(使えないことがおおい)
ホスティング : 関数全体で変数を参照できる->宣言前でも参照できるため代入されるとおかしくなる
"=="と"==="の違い
"==" は型変換して比較
"==="は型も一致する場合にtrue
slide
slideshare : あなたとJavascript
code
gist : javascript再入門
プロジェクト・マネジメント
プロジェクト・マネジメントとは?
- プロジェクトを成功させるための活動
- 品質費用納期に加え, メンバの管理も行う
- PJのみでなく, メンバで協力する
EVM
earned value management
進捗やスケジューリングをお金で換算する管理手法
* pv planned value
* ev earned value
* ac actual cost
cpi = ev/ac
spi = ev/pv
cpi > 1 は効率が良い
spi > 1 はスケジュールより進んでいる
ことを表す
EVMの効果
- 数値的に進捗が見える
- 効率よく作業ができているか見える
- スケジュールを守れているかが見える
- ACの測定によってどれだけ時間をかけられているかを数値で見える
まとめ
プロジェクト・マネジメントはエンジニアなどメンバ全員が学び意識することが大事.
NDSミートアップ
2015/3/14に開催 ヘッドホンアンプを作ってみよう チップによる変化をみる 予算1000円