タグ

ブックマーク / blog.sushi.money (10)

  • JavaScript 長いループ 分割 - hitode909の日記

    ブラウザで長いループや、重い処理をともなうループを回したいとき、同期的にJavaScriptを実行するとメインスレッドがブロックしてしまうので、ちょっとずつ細切れに分割して実行したい、ということがある。 昨日久しぶりに書いたら新たなパターンと出会ったので、これまでにどう書いてて今回どうなったかメモ。 setTimeoutする 以前(10年前とか)はこんなのをよく書いていた。 itemsがでかいArrayで、console.logがすごく重い処理だとして読んでください。 function iterateHeavyTask(items) { const startAt = new Date(); while (items.length > 0 && new Date().getTime() - startAt < 10) { console.log(items.shift()); } if (

    JavaScript 長いループ 分割 - hitode909の日記
    iww
    iww 2020/11/26
    新しい機能を使うとどんどん長く読みにくくなっていくんだな・・・
  • 気が狂った設計 - hitode909の日記

    大きめのこととか,自信のないところを触るときは,コード書く前に,こういう作戦考えてみたけどどうですかって聞いてみたり,こういうことやりたいんだけど一緒に考えませんかって,いっしょに話して設計考えたりするとよいと思う. 一緒に考えたすぐあとに気が狂った設計とか言い出したらおかしいので,未然に変な設計のままコード書いてしまうのを防げる. 特に辛い気持ちになるのが、「気が狂った設計」「クソコード」「(こんな実装は)有り得ない」といった言葉だ。 Pull Requestのレビューが辛くて会社をやめたい 単に言葉が強いのはよくないと思う.我が社にはそんな強い言葉でレビュー書く人はいない. 我が社には,普段から強い言葉を発する人もいなくて,みんな物腰柔らかな変な言葉を話している. 言葉使いや文体は,ずっと過ごしてると同僚から移ったりするので,普段からそういう言葉を話していると,全体の雰囲気も悪くなりそ

    気が狂った設計 - hitode909の日記
    iww
    iww 2017/02/20
    『この絵文字は,人知を超えた複雑さとか,ソフトウェア開発の本質的な難しさを表現している😇.』
  • なぜひどいコードを書いてはいけないか - hitode909の日記

    ひどいコードは何やってるか分からない ひどいコードが何やってるか分かっても、なぜそうなってるのか、そこを変えるとどうなるか分からない ひどいコードは新たな変更に耐えられず書き直されることになる ひどいコードを書き直すには、ひどいコードがどうなっているか理解し、どこを変えるとどうなるのか理解する必要がある ひどいコードはたいていひどいテストコードが支えていて、テストコードがあったとしてもひどいコードと同様の問題があり、頼れるものが何もない どんなにひどいコードでも、書いた人を憎んではいけない。たとえ自分の書いたコードだとしても、先輩の書いたコードだとしても、ソフトウェアとしてひどい物にはひどいと言っていくことが大切で、だからと言って人に向かってひどいと言ってるわけではない。 最高の仲間たちが日々変化する難しい問題に対処していいコードを書いたり、ときにはひどいコードを書いている、という😇的な

    なぜひどいコードを書いてはいけないか - hitode909の日記
    iww
    iww 2016/02/08
    ひどいコードの移植を頼まれて、リファクタしようと思ったけど物量に負けて、クソコードのまま移植してる
  • 最高のマウスストーカーを作った - hitode909の日記

    だいぶ前のはてなインターンの講義で,JavaScriptの講義をしたのだけど,そのときの課題で,マウスストーカーを作る,というのを出題した. 教科書は公開されていて,課題はこのへん. https://github.com/hatena/Hatena-Textbook/blob/public2014/javascript-event-driven.md#課題2 インターン生たちがいろんなおもしろマウスストーカーを作ってくれて,おもしろかったのだけど,せっかく出題したので,僕も作ってみた. このページでも有効になってるので,マウスのボタンを押してみてください.ご迷惑おかけします. http://mouse-stalkers.github.io/the-best-stalker-ever/ こういうファンシーな見た目. GIFだと見ずらいけど,☆が飛んでくるっていうマウスストーカー.マウスダウン

    最高のマウスストーカーを作った - hitode909の日記
    iww
    iww 2015/03/25
    マウスカーソルの動きはけっこう飛び飛びなので、まともにトレースすると★がスムーズに見えずカクカクして見える。 間を補完するとかしないと綺麗にならないっぽい
  • 一つしかない想定で作ってあとから複数出現してめちゃくちゃになる - hitode909の日記

    ソフトウェア作ってて,最初は一つしかない想定で作るけど,あとから複数出現することになって改修するのが大変,ということがある. 最悪サーバーサイド もう終了したサービスであったのが,ユーザーは自分のアイテムを飾れる部屋を1つ持てるという仕様だったのが,複数の部屋を切り替えられるようにして,部屋ごとに置けるアイテムのシリーズが変わって,シリーズごとにグリッドの細かさも変わるとか.とにかく大変で,全部のテーブルにあとからシリーズidを持たせたり,クラスメソッドで済んでたのをシリーズidを持つオブジェクトのメソッドにしたり,ORMItemをRoomに渡すのをやめて,その層とは別に独立した画像合成用のItemとRoomを作ってやり取りするとか,最初からそうなってるときより大変なことになる. 最悪クライアントサイド クライアントサイドでも同じようなことはあって,HTML内に一つしか出現しない前提で作

    一つしかない想定で作ってあとから複数出現してめちゃくちゃになる - hitode909の日記
    iww
    iww 2014/07/14
  • 背景を止められない不自由なインターネット - hitode909の日記

    きのうの日記、背景が動いて見てられないっていう感想が大半だった。これは悲しいことで、昔なら、さらっと背景を止めるUserScriptでも書いて、背景止めてから落ち着いて読めてた。 最近は、iPhonetwitterクライアント内蔵ブラウザなど、ユーザーが手を入れられないブラウザが増えている。PCのブラウザも手を入れにくくなっていて、Firefoxだと右クリックでGreasemonkey書けたりしていたのが、Google ChromeではUserScript書きにくい。 これは寂しいことで、インターネットは皆の物だから、自分のブログを好きな見た目にするのも、他人のブログを好きな見た目で読むのも、勝手にできていいはずだと思う。俺たちのインターネットを取り戻したい。 photo by dalbera 追記 嫌がらせで背景を動かしたり、背景止めないと読めないと思ってやってるわけではなくて、背景が

    背景を止められない不自由なインターネット - hitode909の日記
    iww
    iww 2014/05/06
    『止めたいと思う人が居るなら、簡単に止められる仕組みがブラウザにあるべき』
  • ペンギン許さん - hitode909の日記

    たとえばペンギンクラスを作るとき、まずペンギンクラスを定義する。と言うと、いや待ってください、ペンギンは鳥ですから、鳥から継承させましょう、とかそういう話になる。 継承すると、ポリモーフィズムという技を使えて、鳥を受け取る関数に鳥でもペンギンでも渡せるようになったり、鳥の機能をペンギンが獲得して、足の数は?とか聞くと2とか返ってくる。 便利だけど、鳥でもペンギンでも共通して足の数を知りたいアプリケーション以外でそういうことをし始めると、きりがなくなって、哺乳類クラスが登場したり、生命の樹みたいになって最悪の継承ツリーが出来上がる。 アプリケーション的に意味ない限りは、クラスを作ったり継承したりしてはいけない。そのうち役立つかと思って作りたくなる気持ちは分かるけど、必要になってから作れば良い。大体の場合、後世の人たちが、このクラスなんであるんだろって迷うのにかかるコストの方が高い。

    ペンギン許さん - hitode909の日記
    iww
    iww 2014/05/05
    『生命の樹みたいになって最悪の継承ツリーが出来上がる。』
  • 統計的なインデントチェッカー - hitode909の日記

    ソースコードを入れると統計的にインデントの変な箇所を見つけて教えてくれる便利ツールを作った. hitode909/auto_indent · GitHub 昨日,統計的にインデントするのを作ったけど,実用には耐えないくらいの精度だった.それの続き.昨日の読んでない人はまずこれを読んでください. 統計的にインデントするやつ - hitode909の日記 昨日のやつだと,もとのインデントを無視してプログラム全体をフォーマットしようとするので,失敗が許されない. 変なインデントを探して教えてくれるくらいなら,出てきたレポートを人が見て直すかどうか判断できるので,ちょっとましだろうと思った. あらかじめソースコードをいろいろ与えて,こういうデータを作っておく. ;,s,{"0":96,"-4":1} ;,},{"-4":754,"-8":15,"-15":1,"-2":4,"-9":1,"-12"

    統計的なインデントチェッカー - hitode909の日記
    iww
    iww 2013/07/08
    ifと括弧の間のスペースの流儀とか すごく応用ききそう
  • 統計的にインデントするやつ - hitode909の日記

    古来より,ソースコードのインデントは人力で行われていた.エディタごとかつプログラム言語ごとにがんばってインデントのプログラムが書かれている.EmacsにRuby用のインデントのプログラムとかPerl用のインデントのプログラムがあって,Vimにも似たようなのがRuby用とかPerl用とかちまちま用意されてる.Emacsのruby-mode.elだと,カーソルがかっこの中にいたらこれをするとかで,職人っぽい. 人間がこういうのを書かなくても,周りのソースコードを解析したら,普通はこういう場面ではインデントする,というのを機械的にできるだろうと思った. 以下のPerlのコードはべつにインデントしたくないと思う. print 1; print 2; 以下のPerlのコード見たら,2行目でインデントして,3行目で戻したくなると思う. if ($i % 15 == 0) { print "FizzBu

    統計的にインデントするやつ - hitode909の日記
    iww
    iww 2013/07/07
    構文解析でなく機械学習によりなんとなくインデントさせる技術。おもしろい。 他人のソースに追記したときにそのひとの流儀に自動的にあわせる、とかできそう。
  • 文字をなめらかにした - hitode909の日記

    RetinaディスプレイのMacBook Proほしいけどお金がなさすぎて買えないからこのブログをRetinaディスプレイ化することにして,ブログ全体を小刻みに横に揺らして,文字の残像が見えるから解像度が高く見えるということにした.文字がなめらかになったと思う. はてなブログを小刻みに揺らす.js — Gist 追記 iPhoneとかで見るとたぶん揺れてないと思う.下にPC版っていうリンクがあるからそこから見れると思う. 追記 そろそろいいかと思って,この記事だけなめらかにすることにした.

    文字をなめらかにした - hitode909の日記
    iww
    iww 2012/08/10
    MSX2のインターレスモードみたい
  • 1