Chainerビギナーズハンズオンに行ってきました。
ディープラーニングのフレームワークChainerを使ってみるハンズオン。
GoogleのColaboratoryという無料で使えるオンライン環境でサクッと試せました。
2時間ちょっとで画像判定ができるようになりました。
以下の動画とスライドで追体験できるので、ディープラーニングに触れてみたい方はぜひ。
スライド
notebook
Cookpad Tech Kitchen #20 クックパッドのマイクロサービスプラットフォーム現状
こちらのイベントに参加してきました。
場所は恵比寿ガーデンプレイス。
11月だというのに、クリスマスツリーが!
サービスメッシュって概念も初めて聞いたのですが、
Istio,envoy,Prometheus,Grafanaなど初めて聞くツールがたくさん出てきました。
スライドが英語で書かれているし、ほぼほぼ何言ってるか理解できず、
単語だけ拾って後でググろうと思って聞いてました。
クックパッドブログに今回の内容と同じようなものがありました。
Service Mesh and Cookpad - クックパッド開発者ブログ
マイクロサービスではRESTよりRPC
Protocol Buffers サービスのインターフェース定義 IDLで記述
RubyでgRPCだとgrpc gem
→CPUを使いきれない、Graceful Shutdownがない
→自作でgriffin
今後はカナリアリリースとかできるようにしたい
関係ないけど、以下の記事も参考になるかと。
REST APIの設計で消耗している感じたときのgRPC入門 - Qiita
hako(自作ツール)でデプロイ
オンデマンドとスポットは1:4くらい
スポットインスタンスの方が安い
Fargateは起動が遅い→起動したままのWebならいいけど、バッチジョブだとつらい
自前のオートスケール
コンテナのログはfluentd→S3→Athena AWS Glueで目次更新
CloudWatch Logsだとログが膨大だとリアルタイムで入りきらない、S3に比べて高価
モニタリングはcAdvisorでメトリクス取得
Prometheus→Grafana
マイクロサービス化するタイミングは?
組織が大きくなってきたら、コミュニケーションコストが高くなってきたら。
2000人とかなら有効。
あるいは200人とかでも将来2000人目指すならやってもいい。
マイクロサービス化するにはコストがかかるので、コミュニケーションコストとの兼ね合いで判断。
さすがクックパッドさん、おいしい料理でした。
内容がハイレベル過ぎてなかなかついていけなかったですが、良い刺激を受けました。
私もシアトルで登壇できるエンジニアになりたいものです。。
最初に関連テーブルの全データを取得しておいて、
ダミーデータ作成時に、取得しておいた全データからランダムにデータを取得して利用する。
$users = App\User::select('id','name')->get(); $factory->define(App\Post::class, function ($faker) use ($users) { $user = $users->random(); return [ 'user_id' => $user->id, 'user_name' => $user->name, 'title' => $faker->sentence, 'body' => $faker->paragraph, 'post_datetime' => $faker->dateTimeThisMonth ]; });
・以下、ダメなパターン
1つのダミーデータ作るためにUser全検索が毎回されるのは無駄で時間がかかるのでボツ
$factory->define(App\Post::class, function ($faker) { return [ 'user_id' => App\User::all(['id'])->random(), 'user_name' => App\User::all(['name'])->random(), 'title' => $faker->sentence, 'body' => $faker->paragraph ]; });
第3回CodeIQ感謝祭「春のエンジニアまつり」での
マイクロソフトのエヴァンジェリスト・澤円さんのプレゼン術の講演内容を
まとめました。
・ビジョン
・核
・話術
why、what、how
プレゼン後、聴衆にどうなってほしいか
相手を行動させる。
未来を描け
ビジョンが最も大事!
プレゼン後聴衆がワンセンテンスで内容を説明できるもの。
他の人にどうしても教えたくなってしまうもの
シンプルであること
冗長な表現は避ける
数字を強調
詳細は添付資料で
アクションの明確化
スライド1枚にテーマ1つ説明3つ
アニメーションは控えめに、
視点誘導のために使う。
色使いもシンプルに(色の意味も意識する)
文字を閉じ込める
画面は広すぎるので詰め込まない
改行の位置もとても大事
イメージがつながる画像を使う
セキュリティ→鍵とか盾とか
最後に
トドメの印象付け
時間調整
途中参加の人にも伝わる
口癖を意識する
動画撮影して確認する
バリエーションを増やす
アイスブレイク
堂々と見せるテクニック
話す速度よりもゆっくりと歩く
手の動きで大きく見せる
gitでWord, Excel, PowerPointなどのOfficeファイルを管理していると、
変更があっても、どこが変更されたのかわからず、確認が面倒。
Apache Tikaを使うと、Word, Excel, PowerPointなどからテキストを抽出し、
その差分を表示することができます。
WinMergeでワード、エクセル、パワーポイントの差分を見る - forget for get
http://archive.apache.org/dist/tika/
からtika-app-1.17.jarをダウンロード。
任意の場所に配置(C:\Program Files\Git\bin)
brew install tika
プロジェクト直下のgitの設定ファイルを追加・編集
.git/info/attributes
*.pptx diff=tika *.docx diff=tika *.xlsx diff=tika
.git/config
[diff "tika"] binary = true textconv = java -Dfile.encoding=UTF-8 -jar 'C:\\Program Files\\Git\\bin\\tika-app-1.17.jar' -t
これで、Git ExtensionsやSourceTreeでもワード、エクセル、パワーポイントのテキスト差分を確認できるようになります。
Apache Tika便利!
ちょっと前まで動いてたWindows10+Vagrant+VirtualBoxの開発環境が、急に動かなくなった。
vagrant upしたら以下のようなエラーが、、
==> default: Rsyncing folder: /cygdrive/d/vagrant/cent6/ => /vagrant
There was an error when attempting to rsync a synced folder.
Please inspect the error message below for more info.
Host path: /cygdrive/d/vagrant/cent6/
Guest path: /vagrant
Command: "rsync" "--verbose" "--archive" "--delete" "-z" "--copy-links" "--chmod=ugo=rwX" "--no-perms" "--no-owner" "--no-group" "--rsync-path" "sudo rsync" "-e" "ssh -p 2222 -o LogLevel=FATAL -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i 'D:/vagrant/cent6/.vagrant/machines/default/virtualbox/private_key'" "--exclude" ".vagrant/" "/cygdrive/d/vagrant/cent6/" "vagrant@127.0.0.1:/vagrant"
Error: This rsync lacks old-style --compress due to its external zlib. Try -zz.
Continuing without compression.
cygdriveってパスになってるけど、Cygwinを入れた覚えはないのだが、、
ググってStackOverFlowとか見たけどなかなか解決策にはたどり着けず、
vagrant,virtualboxの最新版をインストールし直したり、
Windowsのアップデートもしたけど、解決せず、、
最終的に以下の記述で治りました。
config.vm.synced_folder "./", "/vagrant", type: "virtualbox"
config.vm.synced_folder "./vmshare", "/vmshare", create: true, type:"virtualbox"
2行目の設定はもともとあったのだけど、1行目の設定もデフォルトの設定の上書きとして必要みたい。。
monthly.jsを使って俺の嫁リストにカレンダー表示機能を追加してみました。
↓こんな感じ。
年末年始、本屋さんとかでカレンダーを見かけることも多くて、
ふと、好きな画像でカレンダー作れたらいいなと思って、
キーワードからgoogle画像検索でひっかかった画像を表示するサイト「俺の嫁リスト」があったので、
そこにカレンダー表示機能をつけてみたらそれっぽいのができると思って、作業開始。
カレンダー表示するjQueryプラグインとして、fullcalendar.jsを使ったことがあったので、今回も使おうと思ったのですが、レスポンシブ対応してないようなので、
レスポンシブ対応しているmonthly.jsを使いました。
github:https://github.com/kthornbloom/Monthly
デモ:http://kthornbloom.com/monthly/
Quick Startに書いてある通りでほぼ完成。
<link rel="stylesheet" href="css/monthly.css">
<div class="monthly" id="mycalendar"></div>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/monthly.js"></script>
<script type="text/javascript">
$(window).load( function() {
$('#mycalendar').monthly();
});
</script>
月の切り替えで画像を入れ替えるために、
.monthly-prev、.monthly-next、.monthly-resetのクリックイベントを拾うくらい。
.monthly-resetのクリックイベントだけ拾えなかったのですが、
monthly.jsでクリックイベントがキャンセルされていたので、コメントアウトして対処しました。
//event.stopPropagation();