See the Elephant

1992生まれのプログラマが書くエンジニアブログ

NDS40メモ

firefox OS 入門

簡単なfirefox osの構造説明

Gaia : HTML Gecko: レンダリングエンジン Gonk : Linuxカーネル, ハードウェア仮想化(Androidから流用)

アプリを開発してみよう

手順

  • firefoxを起動 -> ツール -> 開発者ツール -> WebIDE
  • 右上のランタイムからfirefox OS 2.0を起動
  • アプリを開く-> 新しいアプリ -> Project -> Hello worldアプリを適当に保存
  • 再生ボタンを押すとアプリ起動

firefox OS 開発者勉強会

  • 3/28 新潟市 KDDI新潟
  • 参加費無料
  • Mojilla Japan の人も来るかも?

仕事が捗るoffice & エディタ操作

GUIに頼らずにキーボードショートカットを利用しよう
Fn+ <- / -> でhome/endになる

正規表現を使おう

ワイルドカード

  • ? : 任意の1文字
    • : 任意の文字列

正規表現検索

  • [(from)~(to)]
  • . : 任意の1文字

繰り返し

  • * : 0回以上の繰り返し
  • + : 1回以上の繰り返し

シェルの基礎とSSH

boume shell系のお話

github : シェルの基礎とSSH Tips

コマンドに対する各種展開
チルダ展開 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入門

特徴

クラス

  • 全クラスはobject型を継承
  • 親クラスは1つしか継承できない(単一継承)
  • 定義のみのメソッドを持つクラスを作成可能

インタフェース

  • 1つのクラスに複数のインタフェースを実装できる
  • メソッドが1つも存在しないインタフェースも作成可能
  • java8にて以下の変更がなされた
    • Static メソッドが定義できるようになった
    • デフォルトメソッドが定義できるようになった
    • メソッドが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

  • 公式ARMv7 起動がすごく遅い cpu:ARMv7
  • 公式Intel 実機くらい早い cpu:x86
  • Genymotion 実機より早い cpu:x86

実機を用意したほうが早い

テストツール
* 公式テストツール : androidTest
uiを使わないテストはこちら
* 非公式テストツール : Robolectric

Android Javaについて留意しておいたほうがいいこと
Android Java != Oracle Java


Javascript再入門

万能言語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円