読者です 読者をやめる 読者になる 読者になる

あいつの日誌β

あいつの日誌です。

インディー系テックカンファレンス、Y8(通称ヤパチー) で登壇しました

というわけで渋谷のマークシティに行ってまいりました。会場の雰囲気はこちらを参考にしてください。

togetter.com

インフラエンジニアのWEBアプリ入門のススメ by おざしゅー

書くと動くので楽しい。楽しいのでもっと動かしたい。もっと知りたい。そんないい話が聞けました。一度書くのをやめるともう一度書き始めるの大変なので楽しいっていう感覚大事だなとおもいました。

発表資料: https://speakerdeck.com/ozashu/inhuraenziniafalsewebapuriru-men

OWASP Top 10 2017 RC について by mahoyaya

2013年と2017年で変更されたのは以下

  • アクセスコントロールの不備
  • 不十分な防御機能
  • 保護されていない API

そして本物はすごい

PMを目指して1年が経った by expa(えくすぱ、と読みます)

技術者としての自分を蔑ろにしいてしまい、望まないルートを歩むところだったという反省を是非生かして頂きたいと思いました。

WordPress のサイトを Rails にしたはなし by motchang

uzulla さんの前でこんな話をしますが…という前置きでしたが非常に面白い話でした。 質疑応答では「データがどうにもならないのでエンジニアとしては早くここから抜け出したい」という発言が印象に残りました。

チームで取り組む Singe Page Application by オカムラ

私の発表内容です。今後WEBがリッチ化してUI/UXが重要になってくるので早い段階でフロントエンドがデザイナーの力を借りてプロダクトを開発する体制をととのえましょう。

という話をしたかったのですが…なんだか拙い発表になってしまいました。次の成功の栄養になりました。

speakerdeck.com

お昼休み

1時間ほど休憩

hyperapp – 1kbのビューライブラリ by Jorge Bucaran (ジョージ)

hyperapp の作者が登場。個人的にはミニマムなツールが好きなので好みです。 質疑応答で非同期処理はどうするのか?という質問があったのですが asyncAction が setAction を呼ぶ。みたいな回答だった気がします。たぶん。 あとAPIはどれぐらいの頻度で壊れるのか?という質問に対してもうAPIは固まっているとのことです。

MySQLサーバーのパフォーマンスチューニング by まみー

WEBアプリ開発者からインフラエンジニア

新しい分野の仕事に挑戦するとアウトプットが増えるから楽しい。本当そうですよね。アウトプットする材料が一杯手に入っているので私も頑張らないと…

.NET Core がLinuxでどのように動いているか、またわれわれはどのようにデバッグするのか by たなか

そもそも LLDB の使い方が分かってなくてすいません。

条件付きのブレイクポイントはつけられますか? => できます 変数の書き換えは? => どうなんでしょう?

ScalaでウェブAPIを書いている人が設計や実装やその他について話そうか by たっくん

有用なドメインモデルの獲得はまだまだ難しいとの事。理論を重ねながらも実装がなかなか良い状態へ持ち込めないジレンマを感じました。週1の定例でユビキタス言語を振り返るというのは良いことだなと思いました。

OSSの敵なっちゃうのもいいじゃない by lestrrat

飛び込みで参加 buildscone への応募を待っているとの事。slack の中の人がくるらしい。WEB+DB で GO の連載をしているので読んでくださいとのこと。

トーク内容は4時間ぐらいで書いたそうです。PRを送らずにforkする理由は API が気に入らないから。fork したことによって知識も増えオリジナルとコードについて議論できる。若者よもっとコードを書け。私はGoは5万行書いた時点で理解した。5という数字にきっと深い意味があるんでしょうね。

V8 for フロントエンドデベロッパー by brn(ブルーノ)

V8 エンジンについて解説。趣味で追いかけているそうです。

Q: コードを読むのにコツがあるのか?

A: コードだけを読むのは難しいので有識者などから知識を授かるのも大事。初期のコードとは随分様変わりしているとのこと。

逆にいうと興味がある人は初期のコードを探して読むと理解がはやのかもしれません。

なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い by sasezaki

トークの内容はmbstring.func_overload やめたほうがいいじゃないのか?という issue を立てて賛同者もいたが、いや使いたいんだという PR が出たり、いや deprecated にするんだというやりとりが長く続いた経緯を紹介してくれました。

ある無名エンジニアがAbemaTV iOSチームに加入するまでの道のり by satoshi0212

時間を作り、人に会って、動き回った。今に見ていろ精神。そして振り返れば完遂できた目標はすべて締め切りがあった。時間はお金より大事。そう思うことは簡単ですがその通りに実践するのはとても難しいことです。お見事です。

閉会式とベストスピーカーの発表

というわけでベストスピーカーは「WordPress のサイトを Rails にしたはなし by motchang」さんでした。

1: WordPress のサイトを Rails にしたはなし by motchang

2: V8 for フロントエンドデベロッパー by brn(ブルーノ)

3: hyperapp – 1kbのビューライブラリ by Jorge Bucaran (ジョージ)

個人的なベストスピーカー

私は「PMを目指して1年が経った」と「なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い」が良かったと思います。

PMを目指して1年が経った

聞いていて学ぶ事がたくさんあるお話でした。この1年は無駄な時間じゃないと思います。

deprecatedにするのに5年かかった

私たちは色々な道具を使ってお金を頂いていますが影でその道具が正しく使えるようにメンテナーの知らざる努力があるのを思い出させてくれました。

Second Season

懇親会しつつさらに発表が続く Second Season が行われましたが私は不参加です。

しんぺいさんとの View Library について雑談

お昼休みにしんぺいさんと雑談。Vue.js も便利そう。HTMLコーダーやWEBデザイナーが直感的にコンポーネントを書きやすいかも。react-storybook みたいなの他の View ライブラリでも欲しいんですよね。という話をしました。

そんな事言いながら私は今 Angular4 の仕事をしていますが…

ちなみに

登壇者が撮影された写真は大体発表前に撮影されます。 登壇者が発表している最中は前を向いてくれないから写真撮影するのは難しいそうです。

こちらからは以上です。

Error: Error watching file for changes: EMFILE

jest が watchman を必要としているらしいので install するとエラーメッセージが出なくなった

% brew install watchman

ES6 での range 関数を書いてみた

あらすじ

Ruby でいう to_a のアレを JavaScript で書いてみた

function range(from, to) {
  return [...Array(to - from + 1).keys()].map(x => x + from)
}

console.log(range(0, 10))
console.log(range(3, 10))

出力結果

[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
[ 3, 4, 5, 6, 7, 8, 9, 10 ]

なんだけど

range 関数の from, to のインターフェースなんですがどっちが一般的なんでしょう?

console.log(range(1, 10))
console.log(Immutable.Range(1, 10).toArray())

出力結果

[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

今度誰かと会った時の話題にしよう

n コマンドで node の version を 7.x.x にしたら npm error: cannot find module 'internal/fs' と言われる

一度前の version に戻る

sudo n v6.x.x

npm update をする

npm update -g npm

もう一度 v7 に戻って npm update する

sudo n v7.x.x
sudo npm update -g

たぶん直る

This module requires the passlib Python library

ansible やっていてこんなこと聞かれたらこんなタスクを追加しましょう

- name: install python passlib
  apt: "pkg=python-passlib state=installed"

Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user

Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user とか言われた場合、ドキュメントには pipelining すればいいと書かかれているようです。

Become (Privilege Escalation) — Ansible Documentation

ということで ansible.cfg に下記を追加すればいいんじゃないかな

[ssh_connection]
pipelining = true

おしまい

DB のインデックス設計できますか?

あらすじ

DB インデックスを知らないエンジニアがいるらしいので啓蒙したいという話です。

DB のインデックス設計は HDD 使っている頃には最重要なスキルだった気がしますが、今の時代、エンジニアに求められる事が増えすぎているのでインデックスの事に関して知らない人(DBインデックスが起因する問題に出会ってない人)がいても不思議ではない気がします。

というわけで何故 DB インデックスを知らない人がいるのか?という事に関しては我々のようなおじさんエンジニアが伝えないといけいない事をちゃんと伝えていないからなんじゃないかと思いペンをとりました。

といいつつ

詳しい事は過去にそういう記事を書いたのでこちらを見てください…

http://okamuuu.hatenablog.com/entry/2013/02/23/005046

そういえば

昔とある企業でいつも同じクエリーが遅いとインフラエンジニアから苦情が来るので解消してくださいと言われたので調べたら掲示板の全件取得にインデックスが効いてなかった事があります。

どうやら最初は index が効いていたようですが、後から delete_flg を追加するタスクが発生し、そのフラグのせいでフルーテーブルスキャンに変わってしまったようです。日時の経過にともないデータ量が増えてある日インフラチームから警告が発生した。という事だと思います。

上述のエントリーはそのタスクを解消したときの方法を紹介しています。

割とあるあるな話ではあると思いますが、こういう昔ながら話をもう一度してみると誰かの役に立つかもしれませんね。近年のWEB開発者は覚える事が多すぎて以外と知らない事が多いでしょうし。

そういえば 2017/5/27(土) にアットホームなカンファレンスが開催されるようです。昔あなたが困った事を発表したりすると誰かの役に立つかもしれません。

http://y8-2017-spring.hachiojipm.org/