Javascript
react-virtualizedとは SPAで構築されたReactアプリでも、大量のリストを画面いっぱいに表示しようとすると初期描画に時間がかかってしまいます。 これは、画面に見えてない部分も含めて全てのデータをレンダリングしてしまっていることが原因です。 react-v…
Railsアプリを速くするためのパフォーマンスチューニング集をまとめました。 これらの手法を用いることで、弊社アプリにおいて、今まで30秒ほど掛かっていた処理が1.5秒まで短縮することができました。 あくまでもアプリケーションレイヤーでできるパフォー…
Rails7からJavascriptバンドラーとしてNode.jsが非依存のimportmapが標準機能に採用されました。 早速、importmapを使ってReactを使用した開発を試みてみましたが、結論としてはimportmapは使用しないことになりました。 Reactの場合はimportmapをオススメで…
最近、開発端末をMacBook Pro M1 Maxに乗り換えたところ、webpackのコンパイルが極端に遅くなりました。 思えばwebpack3のままメンテナンスを怠っていたので、これを機にwebpack4にアップグレードすることになりました。 Webpackerをv3からv5にアップグレー…
Railsアプリを構築しようとするときにbuildエラーになるライブラリの代表にlibv8、mini_racerなどが上げられると思います。(個人的感覚) 毎回gemを最新化することでなんとなく解決していたのですが、これではその場凌ぎしかなく応用が効きません。 しっか…
アプリケーションのnode.jsのバージョンを上げて、yarn installコマンドを実行したら以下のようなエラーが発生しました。 1 error generated. make: *** [Release/obj.target/binding/src/binding.o] Error 1 gyp ERR! build error gyp ERR! stack Error: `m…
Javascriptでcookieに値を設定する処理を実装していたのですが、タイミングによって同じcookie名で重複してvalueが登録される事案が発生しました。 調査するとどうやらTurbolinksが原因であることがわかりました。 Turbolinksを有効にするとcookieのpathに適…
checkboxをチェックしたら何かをしたいときの条件式です。 $('#check').on('change', function (e) { if (e.target.checked) { // check:on時の処理 } else { // check:off時の処理 } }); clickイベントで拾いたい場合はこう書きます $('#check').on('click'…
昨今では画像アップロード処理をする際、サーバーサイドだけでなくフロントサイドでもリサイズ(圧縮)するのが主流です。 画像圧縮は、Javascriptのcanvas APIを使って実装するのが一般的です。 ただし、canvasで画像圧縮処理を一から実装となると、それなり…
画像アップロードする際に、最近ではクライアントサイドであらかじめサイズを圧縮しておくのが主流である。 スマホカメラの高性能化に伴い、写真がどんどん高画質になっているためである。 10MB近いサイズのこともあったりする。 画像アップロードのフローか…
マウントフェーズ componentWillMount 基本的には非推奨 まずはconstructorかcomponentDidMountで制御できないか検討すること v16からUNSAFE_componentWillMountという名前に変更 renderよりも前に呼ばれる constructorよりも後に呼ばれる setStateしてもren…
RubyとJavascriptでは連想配列(Rubyの場合はHash、Javascriptの場合はオブジェクトリテラル)の順序保証が異なります。 最近はバックエンドでRuby、フロントエンドはJavascriptの構成にして開発するケースが増えています。 RubyでAPIの結果を連想配列で返し、…