週刊Railsウォッチ(20190709-2/2後編)strong_password v0.0.7がハイジャックされていた、TerraformとCloudFormation、CSSの設計ミスリストほか

こんにちは、hachi8833です。自宅のプロバイダを某Tier 1配下のところに変えたら、それまで深夜で300Kbpsしか出なかったのが60Mbps台まで一気に改善されました😂。

  • 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • 原則毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください

臨時ニュース: strong_password gemのv0.0.7がハイジャックされていた(RubyFlowより)

詳しくは元記事をどうぞ。CVEも発行され、現時点では分析待ち状態です。

現在のstrong_passwordは0.0.8にアップデートされています。

Railsアプリで実際にあった5つのセキュリティ問題と修正方法(翻訳)

クラウド/コンテナ/インフラ/Linux/Serverless

Zabbix: オープンソースの大規模総合監視ソフトウェア


zabbix.comより

この間のWEB+DB PRESS↓の書評で知りました。

今月の『WEB+DB PRESS』Vol.111「詳解Rails 6」は読んでおきたい!


つっつきボイス:「監視ソフトというとNagiosとかはウォッチでちょくちょく登場してたんですけど、Zabbixってやっぱり有名なんでしょうか?」「そりゃもう〜😆、そもそもいつからあったんだろうというぐらい歴史ありますし🗽」「90年代ぐらいからあった気が👴」

「ちなみに今回お集まりの皆さんの中でインフラ系をやってる方は?」「割と少ない😅」「ちなみに今ボクの隣りに座ってる方は全部やってます😆」「ども〜☺️」

「Nagiosとかは比較的シンプルだけど、Zabbixはでかいところで使われてるイメージのある監視系ツール: あくまでイメージね😆」「NTTコム ソリューションズみたいなでかい会社がパートナーにずらっと並んでるし、たしかにでかそう🗻」「たしかマスターZabbixの下にサブのZabbixがたくさんぶら下がるみたいな大規模構成が取れて、設定が難しいという印象ありますね😆」

参考: Nagios - The Industry Standard In IT Infrastructure Monitoring


nagios.orgより

「そういやCactiなんてツールもありますね〜: スペルはCactus(サボテン)の複数形で 」「カクタイ!」


cacti.netより

サボテンで何となく思い出したのが映画『Three Amigos』の「歌う灌木」と「透明剣士」のシーンでした🌵。10年に一度ぐらい見返したくなる映画です🎥。

参考: サボテン・ブラザース - Wikipedia — 邦題


「監視って割とやることが多いんですよ😆: 監視サーバーが落ちてないかどうかをどうやって監視するかとか、落ちたらどうするかとか、あと監視の頻度を上げすぎるとそのヘルスチェック自体がシステムにとって負荷になってしまうとか😆」

「今ほどCPUとかの性能が高くなかった昔によくあったのが、ヘルスチェックが毎回TLSコネクションを開いて閉じていたせいでパフォーマンスががっつり落ちる、みたいな事案😆」「まあ今はELBとか便利なものがありますし😋」

「…最近だと、監視サーバーを2つ立てて相互監視させるのと、マネージドな監視に寄せるのとどっちが主流なんでしょうか?」「2つ立てて相互監視、前はよくやってましたね〜」「相互監視は今もやってるところはやってると思いますけど、今だとマネージドに寄せて金で解決💸の方が多いんじゃないかな〜🤔」「一部SI業界ではマネージドを入れたがらない傾向あるみたいですが🤣」「そういうところは、それこそこういう大規模監視ツールで相互監視してたりするんでしょうね: 自分やりたくないけどっ🤣」

「そういえば、外に出す開発案件なんかだと、Zabbixクライアントをインストールすることが開発要件に入ってることあったし」「Zabbixぐらいになると管理画面を分散することなんかもできそうですね😋」

Terraform vs CloudFormation


つっつきボイス:「今日のWebチームミーティングでTerraformが話題になったので」「そうそう😋: ついでにお伺いしますけど、TerraformCloudFormationをお使いの方は?」「Terraform使ってます🌏」「他のを使ってる方は?」「CloudFormationをちょっと使ってます☁」「素のCloudFormationですか?」「Cloud9がCloudFormationを使ってるので、そこらへんをカスタマイズするのに使う感じで☺️」「なるほど、既存のCloudFormation環境でやってると」


terraform.ioより


aws.amazon.comより

「この種のインフラのコード化っていろいろあって、最近だとGCPのTerraformerが話題になりましたね」「既存のインフラからTerraformファイルを生成するリバースTerraformって見出しにある😳」「既に定義されているAWSのリソースとかにこれをかけると定義ファイルを作ってくれるそうです😋」「知らなかった〜😅」「つまり、それまで手動でダッシュボードをポチポチして作ったリソースをTerraformerでズバッと定義ファイルに出してくれる」「ふぅむ」


同リポジトリより(ただしTerraformer作者のアイコン)

「AWSで細かいものを大量に作ってきた後でTerraform定義ファイルをスクラッチで書くのってつらいじゃないですか😢: 普通に考えても、EC2インスタンスを立ち上げるだけでも、そのためにはまずVPCが必要で、VPCにはVPCサブネットが必要で、VPCサブネットが外に出るためにはInternet Gatewayが必要で…とめちゃめちゃ依存関係が増えてくるんですよ😆」「😆」「なんでTerraformerでどかっと出せるとありがたい🙏: 本当にすべてのリソースをどかっと出してくるんで量がスゴいですが😆、それでもないよりは全然いい😋」

参考: Terraform によるインフラ構築 | もばらぶエンジニアブログ

追いかけボイス

AWSを対象にリバースするTerraformingというツール↓もあると先ほど教わりました。Terraformerと名前が接近しすぎてる気が😅。

その他インフラ

つっつきボイス:「Slackの共有チャンネルか〜」「皆さんの中でSlackをお使いの方は?」「お〜、全員使ってる🏆」「じゃSlackの共有チャンネル機能は?」「合併した会社同士のSlackをつなぐのに使ってます」「なるほど、そういう使い方もあると」「でもいちいち招待しないといけないとかボットが動かないとかがあってちょっと悲しい😢」「そうなるとSlackをマージする方がよさそうですね😆」

「BPSは受託開発をやっている関係で外部とのやりとりに共有チャンネルを使ってみたんですけど、やってみるとちょっと挙動が怪しい部分があるんですよ😅」「あ〜」「共有チャンネルのこっち側と向こう側に同じユーザー名のユーザーがいる場合にどう表示されるかとか、共有チャンネルを切断した後のログがどうなるのか、とか」「ふ〜む」

「これまで共有チャンネルを少し使ってみた限りはですが、双方のチャンネルに同じストリームが流れるようになっているらしくて、どうやらチャンネルをぶった切っても双方に残っているっぽい: でもこのあたりはちゃんと実験してみないとわかりません🤣」「🤣」


DB

SQLのランダマイズテスト(DB Weeklyより)


cockroachlabs.comより


つっつきボイス:「CockroachDBってあったな〜」「名前だけは聞いたことありました」「記事によるとSQLSmithというのをやってるところがあるようだ↓」「SQLSmithはSQLクエリをランダムに生成するんですね」


同リポジトリより

参考: Google Spannerクローンを目指した「CockroachDB」正式版リリース。クラウド上にグローバル展開することで大規模障害からも生き残れる分散型SQLデータベース - Publickey

「記事ちゃんと読まないとわからないけど、業務のテストパターンを作るとかではなくて、RDBMSそのものの開発のためにパーサーに総当たりテストをかけるためのツールのように見えますね」「あ〜そっちでしたか😅」「valid SQLをチェックすると書かれてるのはその辺を指してるのかなと☺️」「記事の後半の図にもLexical Analyzerとか書いてある↓からそれっぽいですね」


同記事より

「前にもウォッチで話したと思うんですけど(ウォッチ20190128)、Ruby本家でも、どうやって見つけたのか見当もつかないようなニッチなバグを次々に発見するコミッターたちがいますよね💎: ああいうのもランダムに生成したり改変したコードを使って見つけたりするんじゃないかって」「そうでした!」「Rubyのパーサーをどうやって普通じゃない方向からイジメるかみたいな😆」

「SQLSmithはこれ↓にインスパイアされたってリポジトリにありますね」「このCsmithはC言語で同じことをやってるんでしょうね☺️」「smithは人の名前にもなってますけど、本来の『鍛冶屋』の意味でしょうね」


embed.cs.utah.edu/csmithより

その他DB


pgibz.ioより


つっつきボイス:「Ibizaというぽすぐれのカンファレンスだそうですが、『一味違うカンファレンス』って何だろうと思って」「たしかにぽすぐれのカンファレンスだけど世界規模というよりはローカルな催しかな?🤔」「On the beachとかロケーションがいいっすよね🏖」「あ〜たしかに🏝」「会場出たらいきなりビーチとかいいな〜⛵️」「Ibizaってどこでしたっけ?」「スペインというか地中海?」「むっちゃ風光明媚🌅」

参考: イビサ島 - Wikipedia

案内を見ると「英語ベースの国際カンファレンス!」「ご家族連れで長期滞在を!」とかありますね。

スケジュールが「WED 19TH〜FRI 21TH」という日本で馴染みのない表記しか見当たらず、いつだろうと思って調べたら「6/19(木)〜6/21(金)」でした。終わってた😇。

JavaScript

ECMAScriptの現状と将来


つっつきボイス:「はてブで見つけたんですが、TechRachoの記事が引用されてたので貼りました(正規表現記事ですが😆)」

「ところでこの中でJSを自分で書く方はいます?」「あ、意外に少ない😳」「JSのバージョンは?それともTypeScriptだったりします?」「いえ、TypeScriptではないんですが、jQueryとVueが混じってる過渡的な状況で、かつCoffeeScriptで書いてます」「お〜なるほど!」「なので早くES5の世界に行きたいなって思ってるんですけどなかなかそうもいかず😅」

2019年前半の「JavaScriptをちゃんとやるための地図」

「ついでに弊社CTOはどんなJSを?」「ボクTypeScriptしか使ってません🧐」「TSからの最終出力はどんなものに?」「Electronで動かすときは適当にES2015とかES2017あたりで出して、ブラウザで動かすときはBabel通してます☺️」「どのレベルまで落とします?」「IE11が動くところまで」「IE11だとECMA以前になるんでしたっけ?」「いえ、ES2015はダメですがES5ならいけますね」「お〜」

参考: Babel · The compiler for next generation JavaScript


babeljs.ioより

「つーことでES5以上はもう当たり前と😆」「それより前は触りたくないですし😆」「自分も大学で教えるときはES6でやってますし🎓: でないとつらすぎて」「今日はJS勢が少なめなので流していきましょう😆」

GoogleのAMP記事


つっつきボイス:「これもはてブからです」

AMP(Accelerated Mobile Pages)について簡単に説明すると、Webページのスタティック版みたいなものをAMP HTMLの仕様に沿って作ると、Googleのクラウドにキャッシュされて爆速で表示されるというものです」「今モバイルのブラウザはだいたいAMPに対応していて、モバイルでGoogleのページで検索するとAMPのページが表示されるはずですし、SmartNewsやはてなブックマークなどのモバイルアプリでも、AMPページがある場合はそちらを表示するようになってますね」


amp.devより

「Googleが『モバイルではAMPに対応したページのスコアをアップするよ』的なアナウンスをしたことでAMPが大流行して、今でも配信に力を入れているサイトはAMPやってると思います」「AMPに乗っかればモバイルブラウザからのリクエストがサーバーに来なくなるのでサーバーの負荷も下がりますし🧐」

「AMP自体はよくできているんですけど仕様の縛りが結構多くて、JavaScriptが動かせないとか、画像にはwidthheightを必ず付けるとか😅」「静的なページにせよと😅」「そういえばAMPだとCSSファイルの長さにも制限ありますよね😅」

「AMPのJavaScriptについてこないだ調べた時点では、一応ドラフトというかexperimentalな仕様は出ている状態、でもまだブラウザでは動きませんでした😇(Chromeで開発者モードにすると動きますが)」

参考: 独自のJavaScriptをAMPで動かせる<amp-script>が公開。オリジントライアル参加募集中 #AMPConf | 海外SEO情報ブログ

「そういえばAMPにしとくとモバイルでググったときにそのページがカルーセル↓に乗りやすくなりますね」「カルーセルの特等席に乗れるということでSEO関係者がAMPにうわっと飛びついた感ある😆」「『AMP SEO』あたりでググるといろいろ出てくるかも😆」「AMPページの検索結果の横にはちっちゃな雷マーク↓が表示されます⚡」「わかりにくい〜😅」

参考: カルーセルとは - IT用語辞典 e-Words

「そういえばどこかの商用サイトが『商品ページをニュースとしてAMPフィードした』とかでだいぶ問題になったことがありましたね😎」「あ〜それはヤバそう😅」「商品は検索トップにずらっと並んだんでしょうけど😆」「Google様に排除されかねない😅」

「AMP HTML自体は仕様が公開されているんですけど、考えてみればAMPがそもそもGoogleのクラウドを前提にしているので、仕様どおりにAMPをやったとしてもその結果がどうなるかはGoogle様次第なんですよね😆」「😆」

CSS/HTML/フロントエンド/テスト

CSSの設計ミスの不完全リスト

BPS社内Slackの「box-sizing:content-boxにするかborder-boxにするか」という話題で知りました。


つっつきボイス:「この間BPSの社内Slackで盛り上がったヤツです」「これ公式のWiki?」「CSS Working GroupがやってるWikiですね」

「ああこれ😆: 本来CSSはこういう仕様にすべきであったという後悔リスト」「『誰かタイムマシン持ってたら直して』って😆」「反実仮想だらけ😆」「お悔やみリスト😆」「今更直せないヤツ😇」

「『vertical-align:middletext-middlex-middleにすべき』とか😆」「middleが本当のmiddleじゃない問題😆」「後方互換性とかあるから厳しい😅」

「このWikiを翻訳してみたい欲がふつふつと湧いてくるんですけど😆、訳していいのかな?」「いいんじゃない?😆」「一番下に『ideas/mistakes.txt』とか書かれてるし😆」「😆」「ここ、最近更新激しいですよ😆」「定期的に恨み節をアップデート😆」「RSSフィード欲しいです😆」

参考: ウェブ関連仕様 日本語訳

「Address-bound Token for QUIC」仕様提案


同記事より

これもWEB+DB PRESSでkazuhoさんとmizchiさんのどちらかが言及していました。

同誌で以下を初めて知りました。Kindleなのでページ番号がわかりません😇。

TCPとTLS(TransportLayerSecurity)を置き換える部分をQUIC、HTTP特有の部分をHTTP/3と呼ぶことになりました。
WEB+DB PRESS Vol.111より(強調はTechRacho)


つっつきボイス:「例のH2Oサーバー↓を開発したkazuhoさんが上のブログを推してました」


h2o.example1.netより

「QUICのコネクション周りはよくわからないけど、congestion controlをしたいから同一エンドポイントかどうかの識別をしたいという提案ということかな🤔」

congestion n. 密集, 過密, 渋滞; 充血

「ところでこういうQUICとかHTTP/2みたいなややこしいところをやってる方はいます?」「いや〜😅」「じゃTCPとかのネットワーク周りをやってたりする方は?UDPとか輻輳制御とか」「😅」「じゃ今日この辺はスルーで😆」

その他フロント


つっつきボイス:「この中ではrobots.txtのパーサーが公開された話が割と話題になってましたね」「今までなかったとは😳」「パーサーの仕様は公開されていましたが実装は公開されてたわけではなかったんですね☺️」「つまり今まではみんなお気持ちでrobots.txtを書いてたということに😆」「書いてみてGoogle Search Consoleで様子見つつやってくしかなかったという😆」「今回ソースが公開されたことで根拠を調べる手がかりができたというか」「C++で書かれてますけど😆」

「その下の記事もほぼ同時に見つけたんですけど、Googleがnoindexのサポートを終了するそうです」「えっマジで😅」「今まで機能はしてたけどサポートしてたわけではなかったと😇」「ホントに隠し機能だったとは😆」「でもまあmetaタグに乗るヤツは引き続きサポートされるのか」「crawl-delayとか知らないし😆」「実はrobots.txtは知らない機能が山ほどあったりしますし😆」

「Googleのクローラーはrobots.txtをちゃんと見ますけど、他の検索エンジンのクローラーがどのぐらいちゃんとrobots.txtを見てくれるのかというのはありますよね」「う〜む😅」「大企業のWebサイトあたりになると、いろんなクローラーが鬼のように大量にやってくるんですけど、たいていのクローラーは相当お行儀が悪いんですよね🤣」「やはり🤣」「数秒おきにアクセスしてくるクローラーとかゴロゴロしてますし、明らかにGoogleじゃないのにGoogleを詐称してるのとかも😇」「ヤバすぎ😆」

言語・ツール

VSCodeの気になる機能


つっつきボイス:「VSCode使ってる方は?」「1、2、…5人はいますね」「その方はRailsを書くときは別のを使ってたりします?」「RubyMine使ってます☺️」「Cloud9使ってます☺️」

参考: AWS Cloud9(Cloud IDE でコードを記述、実行、デバッグ)| AWS

「弊社CTOは?」「TypeScriptはVSCodeですけどRailsはVimでやってます」「😆」「😆」「C++書くときもVimですし」「でしょうね〜」

「フロントやってるとVSCodeが多い感じなのかな🤔」「そういえばStackOverflowの調査でもJetBrainsの調査でも、ほぼすべての言語でVSCodeが1位みたいですし」「はれぇ〜」

「自分はJetBrains派ですけど😆」「私はSublimeをVSCodeに乗り換えました😅」「Sublime Textはメモ用にめっちゃ使ってます😆」「WebStorm重いからVSCodeに移ってもいいかなって思うんですけど、JetBrains IDEのショートカットに慣れきったからな〜😆」

「でもVSCode重いですよ、メモリ持ってかれますよ🤣」「いや〜JetBrainsの方がメモリ食いそうですけど😆」「RubyMineはメモリ食うしな〜」「めちゃ食います🦈」

その他

プリウス、やっぱり静か過ぎ

参考: EUの電気自動車に人工的な騒音「フェイク・ノイズ」が加えられることに | ギズモード・ジャパン


つっつきボイス:「こっからは雑談系です😆」「ははぁ、EUでもついにフェイクノイズ追加か」「プリウスがあまりに静かすぎて危ないから音を出すようにって」「この辺は電気自動車の初期から問題になってましたね☺️」「特に聴覚障害のある人にとっては致命的なんですよね」「たしかに!」

「だからというわけじゃないけど、日本でそういう話が出たときに雑コラみたいなのがいろいろ出て、京急の電車の発車音が出るヤツとかありましたね🚃」「🤣」「🤣」「例のシドレミファソラシ〜って🎶」

参考: ドレミファインバーターとは (ドレミファインバーターとは) [単語記事] - ニコニコ大百科

「プリウスに風鈴ぶら下げとけばいいんじゃね?😆」「まあ音の高さとか調整しないといけなそうですが☺️」「フェラーリのエンジン音出すとか🚗」「🤣」「プリウスに風鈴、知人に『それ夜の田舎道でマジで怖いんですけど』って言われました😆」

「ノイズ出さないと車検通らないとかになるんだろうか?🤔」「安全の一環だしありそう」「ゼロから電気自動車作ったらあるかも😆」

その他のその他


つっつきボイス:「Twitterでネタが大喜利状態だったので」「なつかしのネタ😆」「あやっぱ元ネタが?😅」「その昔シスター・プリンセスという企画ものがあってですね😆」「今の若い人は知らないかも😆」「知ってる人?」「いるいる、よかった〜年が近くて😆」「いろんな言い回しされてたけど、1つめのツイートは割と本家に近かったかも」

参考: シスター・プリンセス - Wikipedia

「2つ目のツイートいいっ🤣」「これ🤣」「12台全部OS違うのって逆に難しくね?😆」「バージョン違いありならいけるかも😆」「Win95、98とか😆」「CPU違いも、x86を全部同じとみなされたら突破難しそう😆」「我が家のDEC Alpha CPUマシンを繰り出せば😆: 重量めちゃスゴいけど」「まあこんだけいろいろ違ってたらそりゃサポート期間も終了するわな〜」「🤣」「🤣」

参考: DEC Alpha - Wikipedia

番外

量子重力に対称性はない


ipmu.jpより


つっつきボイス:「先々週貼り忘れてました😅」「『素粒子には必ず対が存在する』みたいな仮定が崩れたとかそんな話でしたっけ」「電子と陽電子とか、N極とS極とか、右回りと左回りとかそんな感じで、どうやら理論の深いところに行っちゃうとシンメトリーを当てにできなくなっちゃうみたいです😇」「へぇ〜」「高校生の頃よく読んでた当時のブルーバックスとかだとクォークが一番細かい単位だったんだけど、今はさらに細かくなっちゃってそう😆」「ちょうど時間となりましたので、親睦会にうつりま〜す🍺🍕」「は〜い😋」

参考: 標準模型 - Wikipedia


後半は以上です。公開つっつき会にご参加いただいた皆さまありがとうございます!

バックナンバー(2019年度第3四半期)

週刊Railsウォッチ(20190701)RMagickのメモリ使用量が劇的に改善、インスタンス変数の定義順で速度が変わる?、GitLab CIランナーをローカルで回すほか

今週の主なニュースソース

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSなど)です。

RubyFlow

160928_1638_XvIP4h

Postgres Weekly

postgres_weekly_banner

DB Weekly

db_weekly_banner

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ