だいぶ昔に作ったwebサービスのSQLを見直したら5倍以上速くなった
お気に入りのニコニコ動画投稿者の新着動画を表示してくれるサービス
チューニングした
最近はNetflixにうつつを抜かして、ニコニコ動画を観なくなっていましたがPUBGプレイ動画にハマってしまいニコ厨化しつつあります。
新着動画の確認にはけっこう昔に作ったwebサービスのNicotuneを使っていましたが、表示のあまりの遅さがストレスだったのでチューニングを行いました。
チューニング結果
- 前) 初期表示 約15秒
- 後) 初期表示 約3秒
DBにindexを貼っていなかった(!)のでindexを貼った上で、実行に10秒近くかかっていたスロークエリを修正しました。 10秒かかっていたものが数十ミリ秒に改善され、なんとか使用に耐えられるものになりました。
SQLのパフォーマンスチューニングは成果が目に見えるうえ、劇的な効果を得られるので楽しいですね。
GitHubでコードリーディングを快適にするChrome拡張を作った
作ったもの
GitHubでのコードリーディングを快適にするChrome拡張です。
以下の機能があります。
作った動機
ネストが深くなっているようなコードでは1行が長くなりすぎて、表示領域に収まらない場合があります。
そのようなコードをレビューする際に、スクロールで右に左に行ったり来たりするのが非常にストレスでした。
また、ファイルのインデントを修正された場合に大量のdiffの中から本質的なコードの変更を探すのが困難であることも悩みのたねでした。
w=1
のクエリを付与することでスペースのみの変更行を無視してくれる機能が提供されているのですが、あのオプションなんだっけ?と忘れてしまうことが度々あります。
( w=1
のオプションは公式のUIにて切り替え可能として欲しいところ)
導入
こちらより追加してください。
github-adjuster - Chrome ウェブストア
使い方
< >
をクリックすると100px広がります><
をクリックすると100px狭まりますw=1
をクリックするとスペースのみの変更行のdiffが無視されます
リンク
問題がありましたらIssue, PullRequestを頂けると嬉しいです。 github.com
< 意味はないけどゴールデン
なかなか覚えられないUnixコマンドの入力を補助してくれるwebアプリケーションを作った
成果物
Unix Command Generator
http://command.hogesuke.net/
Unixコマンドの引数やオプションの入力を補助するWebアプリケーションです。
説明を読みながらコマンドの組み立てが可能な動的なリファレンスを目指して作っています。
まだ少量しかコマンドを用意できておらず実用的でないですが、これから少しずつ充実させていく予定です。
機能
- 引数/オプションの入力
- 入力内容のコピー
- コピー履歴の参照
基本、マウスでポチポチとオプションを選び、引数を入力し、それをコピーする、というだけのアプリです。
コピーの履歴をLocalStorageに保存しているので、過去に入力したものを使いまわせるという点で便利かもしれない。
※ ここで入力した内容はどこにも送信されません
作った動機
コマンドの引数、オプションを覚えられず、いつもリファレンスを見ながらフムフムといった感じで入力しているのですが、リファレンスとコンソールを行ったり来たりするのが煩わしく面倒であるため、リファレンス読みながら入力できるものがあったらいいのではという気持ちで作りました。
技術スタック
- Angular2
- TypeScript
そろそろAngular2を触っておこうと思い試してみました。
Angular1とは似ても似つかず多少うろたえましたが、Controllerが廃止されコンポーネント指向となったことにより現代的な実装が可能になったように思います。 ただ相変わらず覚えることは多く、公式の日本語ドキュメントもないので英語が苦手な自分には少々敷居の高さを感じました。
TypeScriptについてはいままでちゃんと取り組んでいなかったこともあり、型のありがたさをちゃんと認識していませんでしたが「あ、型ええやん」という具合で一気に虜になりました。 安心安全で心に負荷をかけずにクリーンな心持ちでコーディングに向き合えるのは、とても気持ちが良かったです。
VueとTypeScriptを組み合わせるとVueの手触りがかなり変わってしまう(自分調べ)ので、TypeScriptを使うためにAngular2という選択もありかなという気持ちです。
リポジトリ
PullRequest歓迎しています。
GitHubのREADMEによく使われる英単語を集計して効率的にドキュメントを読むのに必要な英語力をつける
はずだったんですが、失敗しました。
はじまり
READMEを読みながらライブラリの使い方を探っていたりすると、意味を知らない英単語に出くわすことがある。
プログラミングに集中するためにも英語はスラスラ読みたい。とくにREADMEぐらいは。
それには英語の学習が必要なんだけど、READMEでよく使われている英単語を調べてそれを上から順に覚えると効率が良いのではと考えました。
作ったもの
GitHubスター数ランキングの上位N件のリポジトリからREADMEをもってきて、そこで使われている英単語の出現回数を集計してくれるプログラムです。
結果
上位1000リポジトリのREADMEを集計した全結果をGistに貼りました。
スター数ランキングトップ1000リポジトリのREADME頻出英単語 · GitHub
また、結果の雰囲気を見てもらうため頻出英単語トップ20を以下に貼ります。
# | 英単語 | 出現数 |
---|---|---|
1 | the | 49458 |
2 | to | 33463 |
3 | and | 27561 |
4 | a | 27336 |
5 | for | 20314 |
6 | of | 18335 |
7 | in | 16349 |
8 | is | 15101 |
9 | you | 13960 |
10 | with | 10987 |
11 | on | 8299 |
12 | that | 7871 |
13 | or | 7870 |
14 | your | 7669 |
15 | this | 7649 |
16 | can | 7348 |
17 | it | 6998 |
18 | be | 6865 |
19 | if | 6810 |
20 | an | 5943 |
見てもらうと分かる通り、上位は中学英語で習うような単語やオープンソースのプロダクト名などが占めています。
(あとうまく抽出できていないノイズのようなワード)
頻出する英単語は、さすがにこれは分かるなーというものが多く、当初思い描いたいたような上から順に覚えればハッピーみたいな目論見は外れました。
全体で6万件ちかくある結果の中から自分が知らない単語を探しだして学習するぐらいであれば、ふつうに英単語帳で勉強したほうがよさそうです。
本当はREADME固有の英単語出現傾向みたいなものが分かるかと期待していたんですが、雑な集計方法ではそれもうまく読み取れませんでした。
ただ、gulpよりwebpackのほうが出現回数が多いことや、オープンソースプロダクトとして出現する回数が最も多いのはReact(プロダクトを指して使われていない場合もありそうなので確かではないけど)だということが分かったのは「へぇー」といった感じでした。
英単語というよりもトレンドを把握するツールとして使ったほうが有用かもしれません。
おわりに
ふつうに市販の単語帳で勉強します 😭
Chrome拡張のcssで画像のパスを指定するときの注意点
Chrome拡張のcssで背景画像を指定するような場合に、普通の書き方だと画像を読み込むことができません。
NG
#hoge { background: url(img/hoge.png); }
OK
以下のように chrome-extension://__MSG_@@extension_id__/
を先頭に付与します。
#hoge { background: url(chrome-extension://__MSG_@@extension_id__/img/hoge.png); }
また、 manifest.json
に以下のような記述も加えて画像の読み込みを許可してください。
"web_accessible_resources": [ "img/hoge.png" ]
GitHubのヘッダーを好きな色に変更できるChrome拡張つくった
動機
一週間ぐらい前にGitHubのヘッダーの色が黒くなりましたね。
見た目はキリッとして好きなんですが、もともとヘッダが黒かったGitHubEnterprise(GHE)と見分けづらくなりました。
職場ではGitHubとGHEを併用しており、一瞬で見分けることができないのが少々ストレスであったため、自由にヘッダの色を変更できるChrome拡張を作成しました。
導入
こちらより追加してください。
使い方
- ヘッダー右端のアバターをクリック
- リスト一番下の
Header color
をクリック
- 好きな色を選択
- 選択後、右上の
X
で閉じる
おわり
アイコンのoctocatちゃん、タコウインナーみたいになってしまいました。
よかったらご利用ください。
< バイバイ!
Amazonの包装を本のカバーに使うといい感じだった
本をカバンに入れて持ち運んでいると、フチがつぶれたりページが折り曲がったりと悲惨な状態になるのが悩みでしたが、試しにAmazonの包装をカバーにしてみたところすこぶる調子が良くなりました。
包装の中のプチプチが本を守ってくれて、かなり長期間ハードに持ち運んでも痛まずいい感じです。