Object.create(null)

TypeError: Cannot convert object to primitive value

どこでも Markdown Table Editor

まずは Atom 用のパッケージのアップデートのご報告です.

atom.io

ファイル内の全ての表をフォーマット, 保存時にフォーマットなどの機能が増えました.

こちらの映像は Take 4 です.

f:id:susisu:20171124004122g:plain

閑話休題.

上のパッケージのせいで, Atom 以外のエディタや, たとえばブログの編集画面とかでもですが, Markdown を書いていて表を書く必要に迫られた際に非常に強いストレスを感じるようになってしまいました. また, 何らかの事情で Atom を使い続けるメリットが少なくなっても, そのせいで Atom から移れない, なんてことになっては困ります.

というわけで AtomAPI から切り離し, テキストエディタに対する共通のインターフェースさえ用意すれば (JavaScript が動きさえすればですが) どこでも使えるようにしました. 切り離し, と言っても実際はフルスクラッチ.

github.com

デモページはこちらです. そのソースコードはこっち. これは CodeMirror を使ってブラウザ上で試せるようにしたものです. 実装すべき機能は概ねどのテキストエディタにも標準で用意されているような基本的なものになっているので, CodeMirror のドキュメントを読みながら数時間程度で実装できました.

皆さまのテキストエディタ, ブラウザ上で動作する Markdown エディタにもおひとつどうですか?

ISUCON7 予選通過反省会

ISUCON7 の予選に @amaya382, @spring_raining とチーム名「チーム名を考えるのが苦手すぎる」で参加しました. 私自身は初参加です. 最終スコア 89,047 で学生枠 2 (3) 位通過でした.

私がやったこと

ほぼ完全にアプリケーション (Node.js) だけを担当しました.

  • ESLint 導入
    • 治安維持のためと思ってとりあえず導入したけど潜在バグ見つけられたりしてよかった
    • ICONS_FOLDER という未使用の定数が見つかって, アイコンをファイルに書き出してほしそうな顔をしていたのでそのようにした (実際速い)
  • JS のパフォーマンス改善
    • CPU プロファイル見て遅そうなところに小細工を加えた
    • といってもアプリケーション側で改善できるところはほとんど見つけられず, ほぼ誤差の範囲だと思われる
  • ごめんなさい, それ Node v8 からなんですよ
  • ですからごめんなさい, それも Node v8 からなんですよ
  • あとは大体 @spring_rainingペアプロめいたことをしていた
  • 実はほとんど何もしてなくないか

チーム全体でやったことは他のメンバーの記事を参照ください.

よかったこと

  • 多少とはいえ MySQL と Redis の予習をしていてよかった, 言葉が通じなくては話にならない
  • とりあえず足を引っ張りまくって予選落ちという最悪の事態だけは避けられた
  • プリントデバッグの亜種として 418 I'm a teapot を返すという体験をした

反省点

  • サーバーの設定とかデプロイなんかは他のメンバーに任せっきりで何もできなかった
  • とりあえず目についたところから作業にとりかかってしまった, まず問題点をちゃんと書き出してやるべきことを考えてから分担とかした方が良さそうだった
  • まともに問題を見つけたり解消したりするための知識経験がとにかく不足していた
    • キャッシュがどうとかトランザクションとか全て
    • そもそも JavaScript は書けても Node.js で Web アプリを書くことに慣れていないのがやばい
  • ホワイトボードまで歩くのがめんどくさくて使わないという怠惰の極みみたいな行動をしたので開始前に近くに置いておきたかった
  • メンバー間の連絡は全員その場にいたので会話してたけど, 聴き逃したり忘れてしまったりするので, 重要な情報は Slack とかに書いたほうが良かった