LL Diver レポート
日時:8月23日
場所:日本科学未来館
聞いたセッションは以下
- Angular.jsをメインに開発した note にてついて
- それでもNode.jsをやる
- GMOペパボのエンジニア新人研修
- mozaic.fm 出張版: TypeScript and Dart
- アプリケーションのIPv6対応のススメ
- サイバー戦争 2014年から未来へ
- LL短歌
Angular.jsをメインに開発した note にてついて
開発環境
- RoR + angular
注目すべき点
SEO対策
- Phantom JS で Angularをレンダリングする荒技を検討 -> 断念
- サーバーサイドで返すように修正
Future of JS
- HTML/JS分離の時代から、HTML + JSの部品の時代へ
- Googleさんの時代
- Polymer -> 部品化、再利用性の向上
- Dart -> JSのパフォーマンス向上
- HTTP2.0(SPDY) -> セキュア、つなぎっぱ
- Wear -> どこでも、どのデバイスでも
スライドURL
http://www.slideshare.net/takamario/20140823-ll-divertakamaruangularnote
それでもNode.jsをやる
歴史的な話
- C10K問題 2001年ころ
- V8 2008年ころ
- Node開発者が必要としていたもの
- C10Kを解決するイベントループ
- 高速な非同期I/Oとそれを強制可能な言語
- 早い処理系
Node.jsとは
- 非同期ライブラリとインベントループモデル で動く高速かつ省リソーなJavaScript実行環境
- WebSocket,SSEのようにコネクションを張りっぱなしにするものと親和性が高い
- 何にでも向くわけではない
TJがGOに移った理由
- 分散環境でたくさんのサーバと協調する仕組みにNodeが向かなかった.
- Webアプリを作るなら使用し続ける
スライドURL
https://speakerdeck.com/yosuke_furukawa/soredemonode-dot-jswoyaru
GMOペパボのエンジニア新人研修
研修を行う意味
- ビジョンにどうやって到達するか
- 経営資源: 人、物、金
- ひとを育てる
エンジニアキャリア
- チーフエンジニア
- アドバンスエンジニア
- シニアエンジニア
- 一般エンジニア
- 新人
新卒採用
- 社会への入り口
- 新卒を採用する企業は適切なスキルを身につけるように導く社会的責任を負っている
研修方針
- 問題はさておき、まずは理想的な開発について教える
スキルの内訳
- 知識スキル
- エンジニア一般に期待される知識
- 現場固有の知識
- 行動スキル
- 社会人一般
- 会社固有
知識スキル
行動スキル
- みんなと仲良くするこkと
- ファンを増やすこと
- アウトプットすること
学習モデル
- 前提
- 学習転移モデル
- 確立した知識
- 言語、FW,Linux
- 確立した知識
- 経験学習モデル
- 経験で学ぶ
- 学習転移モデル
- 徒弟制: アプレンティスシップ
- 正当的周辺参加
- 仕事の中での学び
- 共同体への参加
- トロイの木馬
- 現場に送り込み、いい習慣・プラクティスを広げていく
- 現場に新しい風を吹き込む
- 式年遷宮
- 20年ごとに作り替える
- 定期的に繰り返すことで伝承する
まとめ
- 経営のビジョンの元にある
- キャリアプランを支援する
- 知識スキル、行動スキル
- 知識の伝達と経験による学習をミックス
- 会社という共同体 へうまく巻き込む
QA
- 新人側がやる気をだすことが大事。エンジニアスペシフィック。
- 教える側が楽しそうにする,雰囲気作り
スライドURL
http://blog.kentarok.org/entry/2014/08/23/145417
altJS 出張版 #mozaicfm
参考URL
mozaic.fm http://mozaic.fm/
わかめさんのQiita http://qiita.com/vvakame/items/ae198ac3589f569d043b
安藤さん Dart
- dartは大規模開発向け
- C#,Javaに書き方は似ている
- Typescriptは現実で、Dartは夢
- サーバ側で動くDart VM
- クライアント、サーバどちらも同じ言語で書けるのが理想。それを目指している。
- androidもDartで書ける
- エコシステムがいい
- Dartが吐くJSを読まなければならなくなったら負け。
- Dartが死ねば、Dartとともに滅びる
- Dartは既存のものを一から作り直す。Angular Dartとか。
- Dart VMの開発者はV8の開発者。パフォーマンスではDartが勝つ。
- Real Worldではまだ使用できない
- coffeescriptは過去
わかめさん Typescript
- おかしな変更を加えるとコンパイラが検知するのでリファクタリングしやすい
- 型があるから使っている
- 結局JSの勉強が必要なため、もし型が無ければ使う理由はあまりない。
- Typescriptが吐いたJSは読めるのでTypescriptが死んでも生き残れる
- ES6,7で機能が充実して型ももちはじめたらTypescriptはいらなくなるかも
- ただし、型定義ファイルで既存のライブラリにも型を定義できるような仕様はESに入らないのでは無いか
- 既存のライブラリに型をつけられる。
- 型定義ファイルをみればどんなAPIかわかる。ドキュメントとしての型定義ファイル。
- ESのスーパーセットのため余計なものはいれない -> ESに追従できる
- JSにできないことはできない。Dartはできる。
- coffeescriptというかRuby的な書き方が好きではない
アプリケーションのIPv6対応のススメ
サイバー戦争2014年から未来へ
Stuxnet以降の最新ウイルス BadBIOS
- インターネットにつながっていないところへ攻撃
- マイクとスピーカを使って超音波で攻撃
MITで学んだこと
- ICチップの中にバッグドアがあったりする
- Smart Phoneの充電器からウィルス
サイバー攻撃
QA
LL短歌
- アセンブラ短歌やばい
第1回スポーツIT勉強会 メモ
勉強会のメモです。本当にメモ程度です。
日時:8月22日
場所:国立スポーツ科学センター
JISS(国立スポーツ科学センター)について
- 日本スポーツ振興センターの一機関
開催の背景
- スポーツITでは、新技術開発が必要になる場面が多い
- 新技術開発では複数で協力した方がいい
- 今までそういう場がなかった
- ねらい
- 情報提供
- 情報共有
- コミュニティ生成
テーマ
- スポーツITとは何か
- スポーツITの地図作り
スポーツIT はじめの一歩
- 講演者: 伊藤浩志さん
競技現場のニーズ
- パフォーマンスの最適化
- 動作の客観的評価
- 戦術の定量的評価
- トレーニングの最適化
- トレーニングの内容、効果の評価
- コンディション
- コーチングの最適化
- 情報提供
- アカデミー支援(コーチ養成)
パフォーマンスの最適化
- シンクロの動画のフィードバックからはじまる(2001年)
- 映像フィードバックの進化
- 映像のアーカイブ
- MediaEdge with JISS製検索システム
- SMARTシステム JISS製
- スポーツ映像の再生
- スロー再生、コマ再生、区間リピート、マルチ画面
- JISS製 映像再生アプリケーション
- SMART edge
- BOOST /video
- Dual Player
- スポーツ映像のメタデータ(検索に使用)
- 映像分析によるパフォーマンスの定量化
- センサーによるパフォーマンスの定量化
- 動作計測のためのモーションセンサー
- 位置/高度/速度計測 GPS受信機
ITとトレーニングの最適化
- 50M走を万歩計で計っても歩数はずれる
- Webによるコンディション情報の共有
- 収集コストの低減
- 遠隔管理
- Meal Diary(食事管理:写真をとって栄養士がみる) JISS module
- 栄養士は写真をみれば塩の量とかまでわかるらしい
- Web情報の自動収集
まとめ
東京Node学園 14時限目 メモ
勉強会のメモをとり始めました。 本当にメモ程度ですが。
日時:8月19日
場所:ヒカリエ DeNAセミナールーム
Synthについて
APIファーストなWAF
プリロード
- クライアントサイドMV*の問題
- ページロードしてもコンテンツが表示されない(はじめにデータを取得する必要がある)
- HTMLにデータをバインドしたものをそのまま返す
- 最初にAjaxでデータを再取得しなくていい
- Promiseを使用して実現
- クライアントサイドMV*の問題
まとめ
APIファース
プリロード
promise
URL mapping
すごいベータ版
URL
http://blog.otakumode.com/2014/08/20/tng14/
milkcocoaの運用(Docker + socket.ioの話)
- バックエンドを提供
- ユーザ一人一人に環境を提供
URL
https://slidebean.com/p/TO1HWyiK6r/milkcocoa
Rendrの話
SPAは初回ローディングが重い
バルクAPIを作る(複数のAPIをまとめて1本にする)
初回だけサーバーで描画する
あとはAjax
Rendrなら
- 初回はサーバ側
- クライアントとAPIの間にRendrを挟む
こんなものにRendr
- コンテンツを重視したSPA
URL
http://www.storyboards.jp/viewer/wo41ho
NodeConf探訪記
海外のConference
- 自分の感覚をアジャスト
- 人脈
NodeschooleのURL
http://nodeschool.io/
Node.jsでQueueを実現するkueの話
kueとは
- RedisをバックエンドとしたQueue
ES6でよく使いそうなもの
楽に書けるよ偏
- デフォルト引数: function(x = 100){}
- メソッドでfunction書かなくていい
- オブジェクトリテラルでコロン書かなくていい
- 文字列内で変数を展開できる: 'aaa{value}aaa'
覚えると楽できる編
おまけ
- let 変数のスコープが変わる
URL
Dockerのコマンドメモ
ドットインストールでDocker入門を受講したので学んだことをメモしておきます。
ほぼコマンドのみです。
詳細は公式サイトを。
https://www.docker.io/
1. VagrantでUbuntu 環境構築
Ubuntu Box の追加
http://www.vagrantbox.es/ からUbuntu の64bit版のURLを取得して下記コマンドを実行$ vagrant box add trusty64 http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
ディレクトリを作成してinit
$ mkdir docker $ cd docker $ vagrant init trusty64
Vagrantfile の編集
$ vi Vagrantfile
config.vm.networkの行をコメントインして適当なIPアドレスを割り振る
Vagrantの起動/接続
$ vagrant up $ vagrant ssh
2. Docker インストール
参考 : http://docs.docker.io/installation/ubuntulinux/
インストール
$ sudo apt-get update $ sudo apt-get install docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker # 確認 $ docker --version
3. Imageの操作
Docker Index から Image を取得
サイトURL : https://index.docker.io/# コマンドでの検索 $ sudo docker search centos | more # Imageの取得 $ sudo docker pull centos
Imageの確認
$ sudo docker images
Imageの詳細
$ sudo docker inspect <名前[:タグ] or IMAGE ID>
Imageの削除
$ sudo docker rmi <名前[:タグ] or IMAGE ID>
4. Containerの操作
Containerを起動してContainer上でコマンド実行
$ sudo docker run <Image名> <コマンド> # 例 $ sudo docker run <Image名> echo "Hello world"
実行中のContainerを表示
$ sudo docker ps
動作が終了したContainerを表示
$ sudo docker ps -a
最新の5つのContainerを表示
$ sudo docker ps -a -n=5
Containerを削除
$ sudo docker rm <CONTAINER ID>
バックグラウンドで実行
$ sudo docker run -d <Image名> <コマンド> # 例 $ sudo docker run -d centos free -s 3
実行中のContainerのログをみる
$ sudo docker logs <CONTAINER ID>
バックグラウンドで実行中のものをフォアグラウンドへ
$ sudo docker attach --sig-proxy=false <CONTAINER ID> # ctrl + c で抜ける
実行中のタスクをkill
$ sudo docker kill <CONTAINER ID>
タスクの再開
$ sudo docker start <CONTAINER ID>
Containerの中に入る
$ sudo docker run -i -t <Image名> /bin/bash
5. Imageの作成
Imageの作成
$ sudo docker commit <CONTAINER ID> <作成するImageの名前>
6. Dockerfileの使用
Dockerfileを作成することによってImageからContainerを作成し、変更を加え、それを元にImageを作成する一連の処理をスクリプト化することができる.
$ vi Dockerfile
DockerFileの書き方
FROM <元になるImage名> MAINTAINER <作成者> RUN <buildする時に実行されるコマンド(インストールなど)> CMD <runするときに実行されるコマンド> # CMD ["コマンド", "コマンド"] のような書き方が推奨されている # 例えば CMD echo "now, runninng..." # ならば 以下のように書ける CMD ["echo", "now runninng..."] # 例) FROM centos MAINTAINER name <mailaddress@hoge.com> RUN echo "now building..." CMD ["echo", "now runninng..."]
カレントディレクトリにあるDockerfileを使用してビルドする場合のコマンド
$ sudo docker build -t <新しいImage名> .
Git コマンドメモ
ドットインストールでGitのレッスンを受けたのでメモしておきます。
Githubのはじめ方も簡単に書いておきます。
基本用語
- 作業ディレクトリ
- ステージングエリア(インデックス)
- リポジトリ (ローカル)
gitの設定
コミット時の名前設定
git config --global user.name "(your name)"
コミット時のemail
git config --global user.email "(your email)"
色分け
git config --global color.ui true
設定の確認
git config -l
はじめてのバージョン管理
初期化
git init
ステージングエリアに上げる
git add
リポジトリに上げる
git commit
ログの確認
git log
ログの確認オプション
1行でログの確認
git log --oneline
変更箇所の確認
git log -p
変更ファイルの確認
git log --stat
状態の確認
現在の状態
git status
変更箇所の確認(ステージングに上げる前)
git diff
変更箇所の確認(ステージングに上げた後)
git diff --cached
ファイル操作
カレントディレクトリ以下すべてをadd
git add .
ファイルの削除/移動
git rm <file>
git mv <file>
チェックアウト(元に戻す)
git checkout -- <file>
git管理に含めない場合
.gitignore というファイルを作成して、管理に含めないファイルを指定する
ファイルの中身の例(拡張子がlogのファイルをgit管理しない場合)
*.log
直前のコミットを変更
git commit --amend
過去のバージョンに戻る
直前のバージョンに戻る
git reset --hard HEAD
直前の1個前に戻る
git reset --hard HEAD^
リセットする前に戻る
git reset --hard ORIG_HEAD
ブランチ
ブランチを確認
git branch
ブランチを作成
git branch <branch name>
作成したブランチを使用
git checkout <branch name>
ブランチをマージ(マスタにマージする場合はマスタを checkout してから)
git merge <branch name>
ブランチを削除
git branch -d <branch name>
タグ
タグをつける
git tag <tag name>
commit id で指定
git tag <tag name> <commit id>
削除
git tag -d <tag name>
エイリアスの設定
checkout に co というエイリアスをつける
git config --global alias.co checkout
共同作業
共有リポジトリの作成
git init --bare
共有リポジトリの追加
git remote add origin <repos location>
共有リポジトリに master を push
git push origin master
共有リポジトリから clone
git clone <repos location> <clone location>
共有リポジトリから pull
git pull origin master
Githubのはじめ方
- Githubにのログイン後のトップ画面右下の“New Repository”を押す
- 次の画面で repositoryの名前など情報を入れ、“Create Repository”を押す
- 適当なディレクトリで git init
- git remote add origin [作成したReositoryのUrl]
- git push origin で push できます。
vagrant-vbguest インストール
vagrant up で 下記の警告が出て対処したのでメモ。
The guest additions on this VM do not match the installed version of VirtualBox! In most cases this is fine, but in rare cases it can cause things such as shared folders to not work properly. If you see shared folder errors, please make sure the guest additions within the virtual machine match the version of VirtualBox you have installed on your host and reload your VM.
VirtualBox本体とguest addition のバージョンがずれているということらしい。
ということでゲストのバージョンを上げてくれるプラグインをインストールします。
以下はVagrant のバージョンが 1.1以上の場合です。
インストールはこれ
$ vagrant plugin install vagrant-vbguest
デフォルトではvagrant up, vagrant reload 時に自動で更新されてしまうらしいので
それが嫌な場合は設定ファイルを作成します。
~/.vagrant.d/Vagrantfile を作成して中身を下記のように編集。
Vagrant.configure("2") do |config| config.vbguest.auto_update = false end
本体とゲストのバージョンが違うか調べるには下記コマンド。
$ vagrant vbguest --status
違いがあれば下記コマンドでゲストを最新にします。
$ vagrant vbguest --do install
最後にエラーがでるかもしれませんが、恐らく問題ありません。
あとは vagrant reload して反映して終了です。
Vagrant Box作成
Vagrant で Box 作成方法をメモしておきます。
box作成
$ vagrant package $ vagrant box add [box名] package.box
作成されいてるか確認
$ ls ~/.vagrant.d/boxes
いらなくなったファイルを削除
$ rm package.box
以上です。