万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    継続的デリバリー読書会 in 新宿 #1

    http://connpass.com/event/404/

    序文
    P31表紙に箸を選ぶ理由

    P24
    1行書いてコミットして反映されしないとCSSを試せない環境。

    P30
    http://bit.ly/bibNpNp0


    P73
    コンパイルに時間が掛かるものに関して、安定版のバイナリだけをとって管理するのはいけない?

    P74
    ClearCaseとは?
    trunkはSubversionだけの用語?
    P78
    MavenやIvyとは?



    第1章
    本・・・価値の流れ、価値のある

    P40 チェックインしたら自動でmake test

    静的解析
    静的検査 findbugs コードのバグ
    build スクリプトの整備
    LL系なのでUnitテスト
    Erlangコンパイル
    build out -> python setup build -> build
    構成管理
    TODOの数を出してグラフ化
    Jenkisではエラーかワーニングか fix meをbuold失敗扱い
    カバレッジ
    ・コミットチェック
    分析 文法エラー

    インストーラーのビルド
    rpm -> tar ballにした。

    インストーラのShield
    インストーラーのテスト→インストールテスト

    ・受け入れテスト
    Selenium
    RSec
    中身のソースを確認せずに

    ・キャパシティテスト
    キャパシティテストは難しい

    サーバーの電源を押すところからスタート。
    NICも自動化。仮想スイッチ。
    Jmetter
    システム

    非機能要件・・ パフォーマンス
    「機能」か「性能」で分ける

    テストデータを作る
    →データ生成スクリプト
    仕様を理解してvalidationを考えたテスト
    シナリオを作るので2週間くらいかかる。

    グラフ構造
    最大テスト(リレーション、一番重いデータから)
    SNSのテストデータ。
    友達セットを作っていく。記事を100人いった
    データベースのインデックスが負荷
    データベースに結局は負荷 シェルスクリプト
    データベースの負荷の知識を得る
    O/Rマッパー。ロークエリー
    O/Rマッパーのバージョンアップが怖い
    下位互換が意識されてない
    JOINしまくるのは遅い
    クラス生成が・・Pythonは遅い。
    Javaは軽い?
    データベースからの転送量が
    SQLのメンテナンス?
    Railsは書きたいところだけ生でかける

    探索的テスト
    →自動化、×モンキーテスト
     プロがやる
    2割くらいは手でテストのは?作りづらい。
    ショーケース:ユーザーに対するレビュー、人間が使ってどうなの? P175
    A/Bテスト・・Facebok0.1%でテスト
     公式リリース(本番)リリースではない。

    ショーケースにうまくかける=完了

    ファジング・・・テスト技法
    クイックチェック・・・Haskellにある。型がある。Integer。戻り値が予定通りの範囲か?
               取り敢えず全部やる。Erlangは商用で高い。
               1個くらいあったらそこからシュリンク(小さい部分から)

    開発・運用・保守チーム 一緒
    シェルスクリプトにする
    historyをとる
     履歴を取る。
     読み上げる。

    ダブルチェック
     お客さんの文化の問題

    P44
    ステージングと本番は同じスクリプト
    別の方がマニュアルを作る
    開発とデプロイが一緒はやめたほうがいい
     →hotfixされてしまう(バージョン管理されない)
    新人にやらせない
    ×お客さんのデータセンター
    お客さんのデータセンターだけど、自分でDB設定からできる
    受託案件(開発はやりやすい。デプロイ、運用は別の会社)
    デプロイはべつ&ドキュメントがしっかりしている
    デプロイは自分でできるのがいい。
    一人でやると、引き継ぎができない。一生やるなら別が。
    →ドキュメントはしっかりやる。
    馴れ合いでやってしまう。
    コードの品質の改善(エンジニアの教育が)、プロセスの改善
    →人の品質を上げるための壁がある、楽はしたい
    決済
    派遣だけの会社はやりにくい
    テキトーにやると怠ける
    本番Redhat、ステージングはCentOS
    SolarisOpenSolarisはスレッドの動きが違う
    ステージング2台、本番5台

    OSのパッケージ
    yumで最新になること
    ネットワーク設定、専任がないと辛い
    スナップショットではなくテンプレート化したほうがいい
    スクリプト等を共通にしよう
    仮想マシン構成
    Vagrant
    CloudStack(GUIが綺麗)
    OpenStack
    Zenサーバ タダ

    前のワークを保存する
    状態を変更すると辛い
    ロールバックは手動のほうがいい?
    →自動化が失敗もある

    P317
    ロールバック小さい範囲で
    こまめにやりましょう
    ロールバックの訓練
    隠蔽してはいけない
    こけてもコミットする(レイヤーを分ける)
    リリースとデベロップブランチ
    pull requestでレビューしてもらい直す。
    90超えしないとだめ
    Jenkinsで2層、3層でテストする。
    テストのチェーンにする。
    github
     コミットメッセージ
     ソスにも入る
    プレアルファ、アルファ、でなく常にリリースするようなのを維持
    Puppet デプロイ
    BCFG, Cfengine, Chef, Puppet, SmartFrog. Orchestration Capistrano, ControlTier, Fabric, Func;
    Chef・・デプロイ専用DSLRubyで書ける。Rails
    Fabric・・・PythonDjango

    Azure・・・揮発性のストレージしか無い
     スナップショット取る必要がない
    テンプレート≠スナップショット
    会社的に品質が高いと思ってもらう
    居心地のいい環境を作るのは自分だけ
    偉くなりすぎるの×、現場で”偉くなる”のが一番早い
    予算を握っている。
    見てもらう
    みんなでコミットしていこう
    スクラムマスター
    直接口で伝える
    Jenkinsは自分のために作った
    憧れを作る スーパースターを作る(なる?)
    技術より、人を見る目
    ちょっとした修正翻訳、オープンソース貢献