プログラムってやっぱ面白い。作っていて楽しいってすごく大事(´・ω・`)

JavaScriptで大量のinput等のDOM操作がChromeだけ重いので解決する

Webアプリケーションの開発では、JavaScriptでの大量のDOM操作が嫌が応にも不可欠な場合があり、例えば膨大な関連商品・資材等を紐付けする際にinput(他、selectやtextarea)に対してそれを行うことになる。

このとき、最低設置するフィールドとしては、1行につき単純なものにしてもキーフィールドと個数フィールドだけでもふたつ。

これが、200行とか300行とかに渡ってレコード分の行数だけ設置される。

で、登録された関連商品・資材の参照を行う際には、非通信環境や非同期通信環境だとJSONなり生データなりを元に、これらのフィールドに対して値を出してくるわけであるが、参照と言いつつも実質的には表示データの書き換えであり、その際に大量のDOM操作をするということになる。

 

これはどれだけソースコードを効率化しても超えられない速度があり、それはデータ量が増えていく以上はある程度仕方がないにしても・・・

 

Chromeだけやたらめったら重い。

 

ロジック要件の修正やループ要件の修正など、実に2週間近くかけて見直し・書き直してみたが、いずれもことごとく失敗し、昨日ようやく解決の目を見た。

今回の記事はChromeでの大量のDOM操作を行うために、奮闘したことの記録として残すことにする。

トークン認証で問題が発生したため、セッションをコードレベルで即時反映を行うようにした話

つい先程まで仕事中に、とある問題に悩まされたところ。

現在進行系のホームページの案件があるため、システム開発は進まないだろうと、傍らに今あるバグを潰すかってことで作れているところまでの動作を検証していた。

その際に、セッションを利用した処理を多々書いていたところを見直しながら、動作を検証していたわけだが、トークンの認証あたりでページの読み込み完了後の間髪入れずのページ遷移をテストしていた際に問題発生。

 

原因を探るのにそれなりに時間がかかったため、備忘録として残しておくことにする。

selectとoptionのメニューをスクリプト制御で表示しないようにする

忙しさに追われて久しぶりの更新となるが、現行でシステム開発を行っている際に、フロントエンド側のスクリプトを弄っていた時の話。

通常、select要素で設定した選択ボックスをクリックしたりすると、option要素に登録したブラウザ依存のメニューが表示される。

まぁ、そりゃ当然そうだろうと思う。

 

が、自分の開発しているシステムで画面インターフェイスの兼ね合い上、こいつ自体を制御してやりたい。

selectとoptionのデフォルトで表示されるメニューを表示しないようにしたかった。

PHPのempty()でゼロの取り扱いに対する注意、代替と対策

PHPのempty()関数でゼロの取り扱いについては散々出尽くしているネタではあるが、システムを組んでいたときにempty()関数の恐ろしさに改めて気が付いた。

CMSのテンプレートとかを作る際には非常に便利なempty()関数だが、システムでこいつを乱立させるとひどく痛い目にあう。

友人と共に明日香村へ、バイクで旅した2019年の盆

趣味を同じくする友人との予定が噛み合ったため、どうせなら日帰りできる範囲でそれなりの距離走ろうぜ!ってことで、快晴の日を狙ってバイクを出向させた。

この友人とはツーリングを何度も計画しては諸事情で頓挫したり、天候が噛み合わなかったりしたため気づけば2019年の盆の終わりどき。

友人にとっては本当に久しぶりのツーリングのため、どうせならお互いそこそこ走りたいと思い、滋賀の北から下道を飛ばして奈良県の明日香村に向かうことにした。

国道417号線の冠山峠を徳山ダム側から池田町側に抜けてきた

滋賀北部は豪雪地帯の福井や岐阜に近い関係か、多雪地帯のため夏場でもそれなりに涼しい。

もう記憶にすら薄いその昔、まだ学生時分に電車で夏場に大阪や京都に行ったときは電車から出た瞬間に「なにこれ、暑ッッ!?!?」となったもんだ。

 

だが、それも昔の話。今は滋賀も例外なく灼熱地獄。

 

こういう日は冷房の効いた部屋で冷たい炭酸水でも飲みながらグダグダといきたかったもんだけど、せっかく晴れてるんだし・・・ねぇ。

 

でも、外は暑い・・・。こんなときに思い浮かぶのは、

 

・・・そうだ!徳山ダムくらいいけば多少なりと涼しいやろ!

国道417号線がまだ未踏破だったし、池田町へバイクで抜けてみたろ!

 

思い立ったが吉日で吉時。

うだる暑さの中で汗を拭いながら、バイクのエンジンをかけた。