- Ruby / Rails関連
週刊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 v0.0.7 rubygem hijacked -- 2019/07/03付
- CVE: NVD - CVE-2019-13354
現在のstrong_passwordは0.0.8にアップデートされています。
⚓クラウド/コンテナ/インフラ/Linux/Serverless
⚓Zabbix: オープンソースの大規模総合監視ソフトウェア
- サイト: Zabbixオフィシャル日本語サイト :: エンタープライズクラスの分散監視オープンソースソリューション
- リポジトリ: zabbix/zabbix: We have migrated from SVN to Git! This is a publish-only mirror of https://git.zabbix.com/scm/zbx/zabbix.git and pull requests are ignored. Old "trunk" branch is not available anymore. Please rebase to "master".
この間のWEB+DB PRESS↓の書評で知りました。
つっつきボイス:「監視ソフトというとNagiosとかはウォッチでちょくちょく登場してたんですけど、Zabbixってやっぱり有名なんでしょうか?」「そりゃもう〜😆、そもそもいつからあったんだろうというぐらい歴史ありますし🗽」「90年代ぐらいからあった気が👴」
「ちなみに今回お集まりの皆さんの中でインフラ系をやってる方は?」「割と少ない😅」「ちなみに今ボクの隣りに座ってる方は全部やってます😆」「ども〜☺️」
「Nagiosとかは比較的シンプルだけど、Zabbixはでかいところで使われてるイメージのある監視系ツール: あくまでイメージね😆」「NTTコム ソリューションズみたいなでかい会社がパートナーにずらっと並んでるし、たしかにでかそう🗻」「たしかマスターZabbixの下にサブのZabbixがたくさんぶら下がるみたいな大規模構成が取れて、設定が難しいという印象ありますね😆」
参考: Nagios - The Industry Standard In IT Infrastructure Monitoring
「そういやCactiなんてツールもありますね〜: スペルはCactus(サボテン)の複数形で 」「カクタイ!」
サボテンで何となく思い出したのが映画『Three Amigos』の「歌う灌木」と「透明剣士」のシーンでした🌵。10年に一度ぐらい見返したくなる映画です🎥。
参考: サボテン・ブラザース - Wikipedia -- 邦題
「監視って割とやることが多いんですよ😆: 監視サーバーが落ちてないかどうかをどうやって監視するかとか、落ちたらどうするかとか、あと監視の頻度を上げすぎるとそのヘルスチェック自体がシステムにとって負荷になってしまうとか😆」
「今ほどCPUとかの性能が高くなかった昔によくあったのが、ヘルスチェックが毎回TLSコネクションを開いて閉じていたせいでパフォーマンスががっつり落ちる、みたいな事案😆」「まあ今はELBとか便利なものがありますし😋」
「...最近だと、監視サーバーを2つ立てて相互監視させるのと、マネージドな監視に寄せるのとどっちが主流なんでしょうか?」「2つ立てて相互監視、前はよくやってましたね〜」「相互監視は今もやってるところはやってると思いますけど、今だとマネージドに寄せて金で解決💸の方が多いんじゃないかな〜🤔」「一部SI業界ではマネージドを入れたがらない傾向あるみたいですが🤣」「そういうところは、それこそこういう大規模監視ツールで相互監視してたりするんでしょうね: 自分やりたくないけどっ🤣」
「そういえば、外に出す開発案件なんかだと、Zabbixクライアントをインストールすることが開発要件に入ってることあったし」「Zabbixぐらいになると管理画面を分散することなんかもできそうですね😋」
⚓Terraform vs CloudFormation
- 元記事: Terraform vs CloudFormation - Roman Krivtsov - Medium
- 元記事: Terraform vs. CloudFormation, Heat, etc. - Terraform by HashiCorp -- HashiCorpの記事
つっつきボイス:「今日のWebチームミーティングでTerraformが話題になったので」「そうそう😋: ついでにお伺いしますけど、TerraformやCloudFormationをお使いの方は?」「Terraform使ってます🌏」「他のを使ってる方は?」「CloudFormationをちょっと使ってます☁」「素のCloudFormationですか?」「Cloud9がCloudFormationを使ってるので、そこらへんをカスタマイズするのに使う感じで☺️」「なるほど、既存のCloudFormation環境でやってると」
「この種のインフラのコード化っていろいろあって、最近だとGCPのTerraformerが話題になりましたね」「既存のインフラからTerraformファイルを生成するリバースTerraformって見出しにある😳」「既に定義されているAWSのリソースとかにこれをかけると定義ファイルを作ってくれるそうです😋」「知らなかった〜😅」「つまり、それまで手動でダッシュボードをポチポチして作ったリソースをTerraformerでズバッと定義ファイルに出してくれる」「ふぅむ」
「AWSで細かいものを大量に作ってきた後でTerraform定義ファイルをスクラッチで書くのってつらいじゃないですか😢: 普通に考えても、EC2インスタンスを立ち上げるだけでも、そのためにはまずVPCが必要で、VPCにはVPCサブネットが必要で、VPCサブネットが外に出るためにはInternet Gatewayが必要で...とめちゃめちゃ依存関係が増えてくるんですよ😆」「😆」「なんでTerraformerでどかっと出せるとありがたい🙏: 本当にすべてのリソースをどかっと出してくるんで量がスゴいですが😆、それでもないよりは全然いい😋」
参考: Terraform によるインフラ構築 | もばらぶエンジニアブログ
⚓追いかけボイス
AWSを対象にリバースするTerraformingというツール↓もあると先ほど教わりました。Terraformerと名前が接近しすぎてる気が😅。
- サイト: Terraforming by dtan4
- リポジトリ: dtan4/terraforming: Export existing AWS resources to Terraform style (tf, tfstate)
⚓その他インフラ
つっつきボイス:「Slackの共有チャンネルか〜」「皆さんの中でSlackをお使いの方は?」「お〜、全員使ってる🏆」「じゃSlackの共有チャンネル機能は?」「合併した会社同士のSlackをつなぐのに使ってます」「なるほど、そういう使い方もあると」「でもいちいち招待しないといけないとかボットが動かないとかがあってちょっと悲しい😢」「そうなるとSlackをマージする方がよさそうですね😆」
「BPSは受託開発をやっている関係で外部とのやりとりに共有チャンネルを使ってみたんですけど、やってみるとちょっと挙動が怪しい部分があるんですよ😅」「あ〜」「共有チャンネルのこっち側と向こう側に同じユーザー名のユーザーがいる場合にどう表示されるかとか、共有チャンネルを切断した後のログがどうなるのか、とか」「ふ〜む」
「これまで共有チャンネルを少し使ってみた限りはですが、双方のチャンネルに同じストリームが流れるようになっているらしくて、どうやらチャンネルをぶった切っても双方に残っているっぽい: でもこのあたりはちゃんと実験してみないとわかりません🤣」「🤣」
Instead of trying to shoehorn statefulness into our current stateless compute models, we should be thinking about how to bring our code closer to our data. Lambda with EBS attached is bad. Paradigms more like handing code directly to S3 to run on all your objects.
— Ben Kehoe (@ben11kehoe) June 26, 2019
⚓DB
⚓SQLのランダマイズテスト(DB Weeklyより)
つっつきボイス:「CockroachDBってあったな〜」「名前だけは聞いたことありました」「記事によるとSQLSmithというのをやってるところがあるようだ↓」「SQLSmithはSQLクエリをランダムに生成するんですね」
参考: Google Spannerクローンを目指した「CockroachDB」正式版リリース。クラウド上にグローバル展開することで大規模障害からも生き残れる分散型SQLデータベース - Publickey
「記事ちゃんと読まないとわからないけど、業務のテストパターンを作るとかではなくて、RDBMSそのものの開発のためにパーサーに総当たりテストをかけるためのツールのように見えますね」「あ〜そっちでしたか😅」「valid SQLをチェックすると書かれてるのはその辺を指してるのかなと☺️」「記事の後半の図にもLexical Analyzerとか書いてある↓からそれっぽいですね」
「前にもウォッチで話したと思うんですけど(ウォッチ20190128)、Ruby本家でも、どうやって見つけたのか見当もつかないようなニッチなバグを次々に発見するコミッターたちがいますよね💎: ああいうのもランダムに生成したり改変したコードを使って見つけたりするんじゃないかって」「そうでした!」「Rubyのパーサーをどうやって普通じゃない方向からイジメるかみたいな😆」
「SQLSmithはこれ↓にインスパイアされたってリポジトリにありますね」「このCsmithはC言語で同じことをやってるんでしょうね☺️」「smithは人の名前にもなってますけど、本来の『鍛冶屋』の意味でしょうね」
- サイト: Csmith
⚓その他DB
つっつきボイス:「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の世界に行きたいなって思ってるんですけどなかなかそうもいかず😅」
「ついでに弊社CTOはどんなJSを?」「ボクTypeScriptしか使ってません🧐」「TSからの最終出力はどんなものに?」「Electronで動かすときは適当にES2015とかES2017あたりで出して、ブラウザで動かすときはBabel通してます☺️」「どのレベルまで落とします?」「IE11が動くところまで」「IE11だとECMA以前になるんでしたっけ?」「いえ、ES2015はダメですがES5ならいけますね」「お〜」
参考: Babel · The compiler for next generation JavaScript
「つーことでES5以上はもう当たり前と😆」「それより前は触りたくないですし😆」「自分も大学で教えるときはES6でやってますし🎓: でないとつらすぎて」「今日はJS勢が少なめなので流していきましょう😆」
⚓GoogleのAMP記事
つっつきボイス:「これもはてブからです」
「AMP(Accelerated Mobile Pages)について簡単に説明すると、Webページのスタティック版みたいなものをAMP HTMLの仕様に沿って作ると、Googleのクラウドにキャッシュされて爆速で表示されるというものです」「今モバイルのブラウザはだいたいAMPに対応していて、モバイルでGoogleのページで検索するとAMPのページが表示されるはずですし、SmartNewsやはてなブックマークなどのモバイルアプリでも、AMPページがある場合はそちらを表示するようになってますね」
「Googleが『モバイルではAMPに対応したページのスコアをアップするよ』的なアナウンスをしたことでAMPが大流行して、今でも配信に力を入れているサイトはAMPやってると思います」「AMPに乗っかればモバイルブラウザからのリクエストがサーバーに来なくなるのでサーバーの負荷も下がりますし🧐」
「AMP自体はよくできているんですけど仕様の縛りが結構多くて、JavaScriptが動かせないとか、画像にはwidth
とheight
を必ず付けるとか😅」「静的なページにせよと😅」「そういえばAMPだとCSSファイルの長さにも制限ありますよね😅」
「AMPのJavaScriptについてこないだ調べた時点では、一応ドラフトというかexperimentalな仕様は出ている状態、でもまだブラウザでは動きませんでした😇(Chromeで開発者モードにすると動きますが)」
参考: 独自のJavaScriptをAMPで動かせる<amp-script>が公開。オリジントライアル参加募集中 #AMPConf | 海外SEO情報ブログ
「そういえばAMPにしとくとモバイルでググったときにそのページがカルーセル↓に乗りやすくなりますね」「カルーセルの特等席に乗れるということでSEO関係者がAMPにうわっと飛びついた感ある😆」「『AMP SEO』あたりでググるといろいろ出てくるかも😆」「AMPページの検索結果の横にはちっちゃな雷マーク↓が表示されます⚡」「わかりにくい〜😅」
「そういえばどこかの商用サイトが『商品ページをニュースとして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:
のmiddle
はtext-middle
かx-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さんが上のブログを推してました」
「QUICのコネクション周りはよくわからないけど、congestion controlをしたいから同一エンドポイントかどうかの識別をしたいという提案ということかな🤔」
congestion n. 密集, 過密, 渋滞; 充血
「ところでこういうQUICとかHTTP/2みたいなややこしいところをやってる方はいます?」「いや〜😅」「じゃTCPとかのネットワーク周りをやってたりする方は?UDPとか輻輳制御とか」「😅」「じゃ今日この辺はスルーで😆」
⚓その他フロント
- 元記事: JavaScriptは無し、CSSで実装されたUIコンポーネントのまとめ -Pure CSS Components | コリス
- 元記事: Google's robots.txt Parser is Now Open Source | Google Open Source Blog
- 元記事: 春だし、ついにPhotoshopからAdobe XDにデザイン作業も乗り換えます!(宣言) | 東京上野のWeb制作会社LIG
つっつきボイス:「この中では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 live share でリモートペアプロしたんだけど、とくに問題なくペアプロできてよかった。
ただ、follow participants での誰かのカーソルの追従がちゃんと動いてなくて、よく見失うので、そこが治ってほしいです。作者がエゴサーチしてるのをしてるので言ってる。
— mizchi (@mizchi) January 15, 2019
バイナリデータを読むのに便利な VSCode の拡張機能「hexdump for VSCode」の紹介 - たるこすの日記
便利そう! https://t.co/VJeaTHyTfz
— かずき(Kazuki Ota) (@okazuki) June 30, 2019
つっつきボイス:「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でもついにフェイクノイズ追加か」「プリウスがあまりに静かすぎて危ないから音を出すようにって」「この辺は電気自動車の初期から問題になってましたね☺️」「特に聴覚障害のある人にとっては致命的なんですよね」「たしかに!」
「だからというわけじゃないけど、日本でそういう話が出たときに雑コラみたいなのがいろいろ出て、京急の電車の発車音が出るヤツとかありましたね🚃」「🤣」「🤣」「例のシドレミファソラシ〜って🎶」
参考: ドレミファインバーターとは (ドレミファインバーターとは) [単語記事] - ニコニコ大百科
「プリウスに風鈴ぶら下げとけばいいんじゃね?😆」「まあ音の高さとか調整しないといけなそうですが☺️」「フェラーリのエンジン音出すとか🚗」「🤣」「プリウスに風鈴、知人に『それ夜の田舎道でマジで怖いんですけど』って言われました😆」
「ノイズ出さないと車検通らないとかになるんだろうか?🤔」「安全の一環だしありそう」「ゼロから電気自動車作ったらあるかも😆」
⚓その他のその他
ある日突然、あなたに12人もの妹ができたらどうしますか?
それも……とびっきりかわいくて
とびっきり素直で
とびっきり愛らしくて
とびっきりの淋しがりや。
しかも、そのうえ……全員がLinuxで別々のサブシステムのメンテナをやっている
— hikalium (@hikalium) July 2, 2019
ある日突然、あなたに12台ものサーバー管理を任されたらどうしますか?
それも……全部のOSが違って、
全部のCPUが違って、
全部のメーカーが違って、
全部の顧客が違っている。
しかも、そのうえ……全部のサポート期間が終了している。
— takl (@takl) July 2, 2019
つっつきボイス:「Twitterでネタが大喜利状態だったので」「なつかしのネタ😆」「あやっぱ元ネタが?😅」「その昔シスター・プリンセスという企画ものがあってですね😆」「今の若い人は知らないかも😆」「知ってる人?」「いるいる、よかった〜年が近くて😆」「いろんな言い回しされてたけど、1つめのツイートは割と本家に近かったかも」
「2つ目のツイートいいっ🤣」「これ🤣」「12台全部OS違うのって逆に難しくね?😆」「バージョン違いありならいけるかも😆」「Win95、98とか😆」「CPU違いも、x86を全部同じとみなされたら突破難しそう😆」「我が家のDEC Alpha CPUマシンを繰り出せば😆: 重量めちゃスゴいけど」「まあこんだけいろいろ違ってたらそりゃサポート期間も終了するわな〜」「🤣」「🤣」
⚓番外
⚓量子重力に対称性はない
「物理学者達が抱いてきた対称性に対する信念が間違っていることを示したのです」とのこと。
対称性は,自然界で最も大事なものの一つかと思っていたので,かなり衝撃的な結論。量子重力には対称性はない ― 大栗機構長らが証明 | Kavli IPMU-カブリ数物連携宇宙研究機構 https://t.co/F2j9geNRdr
— 高嶋秀行 (@Takashima_Hidey) June 19, 2019
つっつきボイス:「先々週貼り忘れてました😅」「『素粒子には必ず対が存在する』みたいな仮定が崩れたとかそんな話でしたっけ」「電子と陽電子とか、N極とS極とか、右回りと左回りとかそんな感じで、どうやら理論の深いところに行っちゃうとシンメトリーを当てにできなくなっちゃうみたいです😇」「へぇ〜」「高校生の頃よく読んでた当時のブルーバックスとかだとクォークが一番細かい単位だったんだけど、今はさらに細かくなっちゃってそう😆」「ちょうど時間となりましたので、親睦会にうつりま〜す🍺🍕」「は〜い😋」
参考: 標準模型 - Wikipedia
後半は以上です。公開つっつき会にご参加いただいた皆さまありがとうございます!
バックナンバー(2019年度第3四半期)
週刊Railsウォッチ(20190701)RMagickのメモリ使用量が劇的に改善、インスタンス変数の定義順で速度が変わる?、GitLab CIランナーをローカルで回すほか
- 20190708-1/2前編 ActiveRecord::FixtureSetがめちゃ強くなってた、MacだとRubyが遅い理由、Puma 4登場ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSなど)です。