カテゴリー : 2015年 8月

[MongoDB] データベースファイルが保存されるパス dbpath を確認する

MongoDB のデータベースファイルが保存される dbpath は db.serverCmdLineOpts() の実行結果から確認できます。

MongoDB

続きを読む

[MySQL] database と table の size を確認する

MySQL で database と table の size を確認する SQL をご紹介します。

MySQL

続きを読む

「YAPC::Asia Tokyo 2015」8/22(土) 振り返り #yapcasia

「YAPC::Asia Tokyo 2015」の最終日を振り返ります。

2015-08-22 17.45.09

ISUCONの勝ち方

チューニングの進め方

課題の理解
プロファイリング
Web アプリケーションで起きていることを知る

プロファイリング結果を読み解く慣れも必要

matsuu/kataribe
Nginx/Apache Log Profiler

MySQL SlowLog解析
クエリ実行回数と頻度

アプリケーションのプロファイリング

各プログラミング言語のツールを使う
strace

tcpdump

サーバの負荷をみる
top
iftop

サーバ構成の把握

Nginx vs. h2o

参考資料

MySQL の offset はレコード数が多くなると遅くなる

参考資料

Covering Index を使おう。

参考資料


我々はどのように冗長化を失敗したのか

Q) LVS 使えばいいんじゃないの?
A) そうですね。

参考資料


MySQLで2億件のシリアルデータと格闘したチューニングの話

TL;DR

サーバリソースが乏しい中で大量データを扱うのは大変


データ分析基盤を支える技術

TL;DR

  • データ解析基盤を作るのはやめましょう
  • クラウドベンダーにお任せしましょう
  • 実現したいことに対して、クラウドベンダーを使いましょう

「Hadoop を自社で持ちたい?やめろ!」


【特別企画】YAPCあるある(仮)

CONBU

”大規模なカンファレンスや勉強会が行われる会場において、会場ネットワークを構築し、インターネット接続を提供するネットワークエンジニアの集団”

所感

CONBU の存在を初めて知りました。YAPC の会場内のネットワーク構築ありがとうございました。

そして、YAPC の運営に関わってきたみなさま、ありがとうございました。


HTTP2 時代の Web

個人的なメモ

  • Browser Cache について、75% の人は 48h で使い切る。
  • インフラの実装は過渡期

Lightning Talks Day 2

MySQL 5.7 は罠が多いので、秘伝のタレな設定ファイルが切望される。


クロージング

2015-08-22 17.53.57


まとめ

エンジニアが2000人以上も集まるイベントに参加できて、良い刺激を得れました。運営メンバーのみなさま、ありがとうございました!

追えてない、理解できてない技術トピックのキーワードを拾うことができただけでも収穫でした。全部、追うのは無理なので、ここから必要なものに絞ってキャッチアップしていきたいです。

「YAPC::Asia Tokyo 2015」8/21(金) 振り返り #yapcasia

10周年、そして、今年で終わってしまうということで最初で最後の「YAPC::Asia Tokyo」に参加してきました。

2015-08-21 11.02.55

各トークセッションの流れは Togetter にまとめられているので、こちらから探すとよさそうです。

以下、視聴したトークと個人的なメモ&所感です。


世界展開する大規模ウェブサービスのデプロイを支える技術

Miiverse | Wii U|Nintendo

AWS US/JP/EU の 3 リージョンでサーバ台数が多いと git pull が重い。

  • Git Slave への同期
  • Git Slave から Pull するときの負荷問題

Mackerel(マカレル): 新世代のサーバ管理・監視ツールを使ってるらしい。

GHE と Git Slave repository の同期が大変なので、新しくリポジトリ同期システムを作った。

所感

Consul + stretcher での deploy は規模大きくなったときに考えたい。しばらくその心配はなさそうだけど。

あと、最近だと AWS CodeDeploy (Amazon EC2 インスタンスへのコードデプロイを自動化) もあるけど、どうなんだろ?


今フロントエンドで何が起こっているのか

所感

最近のfrontendをちゃんと把握できてなかったので、なんとなく流れを理解できてよかったです。


Conway's Law of Distributed Work

分散したチームで効果的に仕事をするために使うべきツールや心構えなどが発表されていた。

Distributed Work では、効果的なコミュニケーションで時間短縮できる。

リモートワークをしている場合、その場にいるかのようにコミュニケーションに入れてあげることが重要である。

Commit Messages

コミットメッセージで会話をする。
考古学者として、あとでコードを掘り起こしたときに何か手掛かりがほしいだろう?

「何を考えていて、どうしてこうなったか?」という情報がときどき失われる。
これを残さないといけない。

CODE REVIEW

コードレビューはバグを 60% 減らせるという分析がある(らしい)。

Email

非同期コミュニケーションには適している。
すぐに返事がくることを期待しない。

Everyone should experience remote work.
まず、課題を実感して、共感して、改善するということが大切。

Have on-site meetups
一堂に会する機会を定期的につくる。

Over communicate.
「常に話す」というわけではない。
「常に書く」ということを意識する。

Share your personality
自分の個性や人格を共有するようにしましょう。
日頃のテキストチャットで共有しよう。
Off Topic の Slack channel を用意する。

Exhibit a “visible pulse.”
リモートで仕事をする場合には、自分が何をしているかアピールしなければならない。

Pick a timezone.
Standard Operating Time (SOT)

CAP THEOREM (SOME LIMITATIONS)

リモートワークでも CAP 定理が当てはまる。

Q&A

Q) リモートワークだと働きすぎる場合がありますが、どうしてますか?
A) なりますね。でも、そうすると家族が寂しくなる。
自分を律する。自分のスケジュール管理をする。
オフィスを離れるタイミング、疲れたら休む。

チームで「あなた仕事しすぎだから帰ったほうがいいよ」と声を掛ける習慣をつける。
自分の仕事に余裕を持って取り組む。

Q) Timezone が異なるとリモートワークが難しくないか?
例えば、日本とアメリカなど。
A) 日本やアメリカ毎に数人のチームを置くべきだね。
自分の意見) 実践したことがあるが On time が重なる時間帯があったので、特に問題にはならなかった。

Q) Face to face の頻度は?
A) 四半期に1回がミニマム
そのときはコードに埋没するべきではない。
中長期的な話をする場にしよう。

Q) リモートワークではモバイルは重要なツールだけど、使っているか?
A) 便利ですね。
友達や家族にとってフラストレーションになる。
時にはスマートフォンを横に置くべき。

所感

リモートワークの経験はあったので、自分のケースと照らしあわせて良い振り返りができました。

「Commit Messages がいかに大切か?」という話をするときの例えとして、「考古学者が発掘するときにヒントが欲しいでしょう?」ってのはわかりやすかった。今度、コミットメッセージの大切さを説明するときにこの例を使わせてもらおう。

※ 考古学者の仕事は、「遺跡や遺構など人類が残した痕跡を探し、発掘し、過去の人類の活動と変化を研究すること」


Electron: Building desktop apps with web technologies

所感

Demo 中心なセッションでした。

直近で、デスクトップアプリを開発する予定がないのですが、作ることがあればまず Electron を使うことになるでしょう。


esa.io – 趣味から育てたWebサービスで生きていく

「楽しく開発したい!」

自分が最近あまりできてないので見習いたい。

開発スケジュールを決めない

  • モチベーションが上がったら開発する。
  • ユーザからのフィードバックがモチベーションにつながる。

理想的っすねー。
開発自体にモチベーションが上がらなくなったときにどうしてるか?ってのが気になる。


Lightning Talks Day 1

LT もぜんぶ聴きました。


懇親会

懇親会の申し込みを忘れてたのだけど、チケット譲ってもらえて入場できました。
ありがとうございました!

2015-08-21 18.02.46

2015-08-21 18.24.02

まとめ

以上です。

Atom エディタのオススメ Package まとめ

Atom エディタで使っているパッケージをまとめてみました。

Atom.io

続きを読む

[Node.js] module.exports と exports の違い

結論だけ書いておくと、よく分からないなら module.exports を使いましょう。

Node.js の公式ドキュメント にもそう書いてあります。

ガイドラインとして、もし exports と module.exports の間の関係が魔法のように 見えるなら、exports を無視して module.exports だけを使うようにしてください。

module.exports と exports の違いについて詳しく知りたいって方は下記の記事を読むといいんじゃないでしょうか。

今、ドットインストールの「Express入門」を Mac で学習するための覚え書き

今、ドットインストールの「Express入門」を Mac で学習するための覚え書きです。

「Express入門」を学ぶ前提

ドットインストールの「Express入門」は Express3 の前提でレッスンが用意されています。しかし、現在は Express4 がリリースされているので、何も考えずに進めていくと Express4 がインストールされてしまい思うようにレッスンを進めていくことができません。

このようなつまづきポイントがいくつかあるので、本記事ではそれらを補足していきます。

#01 Expressとはなにか?

まず、Node.js のバージョン管理ツール nvm を Mac にインストールする方法 を参考にしてインストールして、Node.js もインストールします。

そして、レッスン内では、

sudo npm install express -g

と書かれていますが、これを下記のように Express3 のバージョンを指定してインストールしましょう。

npm install express@3.21.2 -g

#03 はじめてのExpress

レッスン内では、

npm install express

と書かれていますが、これも下記のように Express3 のバージョンを指定してインストールしましょう。

npm install express@3.21.2

また、ブラウザからアクセスするには 192.168.33.93:3000 を入力するとなっていますが、Mac のターミナルで node app している場合 localhost:3000 もしくは 127.0.0.1:3000 を入力することで、アクセスできます。

#07 middlewareを作ってみよう

このレッスンでも、

sudo npm install nodemon -g

と sudo 使わずに、

npm install nodemon -g

で大丈夫です。

以上です。Mac で「Express入門」を学習する方のお役に立てたなら嬉しいです。

ドットインストールの「UNIXコマンド入門 (一般ユーザー編)」を Mac で学習するための覚え書き

ドットインストールの「UNIXコマンド入門 (一般ユーザー編)」を Mac で学習するための覚え書きです。

会社でエンジニア新人研修を担当しているので、研修資料をまとめるついでに、初学者が Mac で学ぶときに受講しなくてもいいレッスンについてまとめました。

#01 – #03 は VirtualBox などでサーバを起動させるなどの事前準備が必要なのでスキップしましょう。

残りの #04 から最後の #16 まで取り組んでもらって大丈夫です。

[JavaScript] Date.now と new Date().getTime() と +new Date のパフォーマンス比較

JavaScript の Date.now と new Date().getTime() と +new Date の実行時間を jsPerf で確認してみました。

Moment.js

続きを読む