タグ

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

  • 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の日記
  • 今週は技術的な選択の仕方について考えることが多かった - hitode909の日記

    今週は技術的な選択の仕方について考えることが多かった。 どうやって決めるか、というだけでなくて、どこに決めポイントがあるか、というところの見極めも難しい。 何も決めずに進んでいって、あとで見返すとすごいことになってしまい、ここをもうちょっと考えておけると良かったね、ということもあるし、考えすぎて重厚に作りすぎだったので、あとからシンプルな形に直していく、ということもある。 個人的には、ふだんはこのように考えています、という手順を書いておくと、 実現方法を考えるだけでなくて、他に取れる作戦がないか考えていく よさそうな方針が、他の作戦と比べてこれが一番良い、という確証を得る 確証が得られないときは、考えて決める 昼休みにプールに行って泳いでいると、これだけ考え続けて何も出てこないということはこれで行くしかない!と決められることが多かった というような形でやっていると思う。これでできるのでこれ

    今週は技術的な選択の仕方について考えることが多かった - hitode909の日記
  • VSCode ExtensionのBookmarksが便利 - hitode909の日記

    VSCodeで長いコードや入り組んだコードを読んでいくときに、さっき読んでたあれはどこに行ったっけ、となって困っていた。ファイル名を手元のテキストファイルにメモしたりしていたけど、ところでさきほどのメモのタブはどこにいったのか…と混乱していた。 エディタ内にブックマークを作れる拡張があるに違いない、と探したらBookmarksという拡張があった。 その名の通りで、行に対してブックマークを追加できる。サイドバーのBookmarksタブからブックマーク一覧を参照できる。 ここのテストは後で直しそうだな、と思ったらとりあえずブックマークしておく、みたいに使えて便利。 marketplace.visualstudio.com 追記 コメントで偽物の拡張があると教えてもらった。たしかにインストール数が100くらいの同名の拡張がありました。どのような挙動をするかは分かっていません。GitHubのリポジ

    VSCode ExtensionのBookmarksが便利 - hitode909の日記
  • 【現在は対応不要】Chrome80以降でALBの認証を使っているとcookieが4096バイトを超えて認証できないことがあり、社内サービスではcookie名を縮めて対応した - hitode909の日記

    2020/2/18追記 サポートに問い合わせたところ、ALBの不具合はロールバック済みで、cookie名を縮める対応は不要、とのことでした。試してみたところ、たしかにcookie名の指定をやめても問題なく認証できました。 AWSのApplication Load Balancerの認証機能を使って、スタッフからのアクセスのみ許可する社内向けウェブサービスを運用しているのだけど、昨日くらいからGoogle Chromeで認証が通らなないという声を聞くようになった。 現象としてはリダイレクトループが発生していて、コンソールを見るとSet-Cookie headerが長すぎるというエラーが出ていた。 Set-Cookie header is ignored in response from url: https://****/oauth2/idpresponse?code=e51b4cf0-8b

    【現在は対応不要】Chrome80以降でALBの認証を使っているとcookieが4096バイトを超えて認証できないことがあり、社内サービスではcookie名を縮めて対応した - hitode909の日記
  • いつも「時間がない」あなたに 欠乏の行動経済学 - hitode909の日記

    リソースが足りない状態の人間について研究した。そのリソースは時間だったり資金だったりする。 スラック、つまり余裕があることが大事で、100円のおやつとか買うとき、それによって財産が100円減ることを考慮する人は居ない、毎月使えるスラックから支払われることになる。しかし、当に切羽詰まってると、少しのお金を作るために借金し、次の入金は利子の返済に当てることになる。 人間、気になることがあると、判断に使うためにリソースを奪われていって、能力が下がっていく。貧しい状態の人は生まれ持った能力が低いわけではなく、お金や時間の心配をしていることで能力が下がっていくことが実験によって確かめられている。という。 現代日で考えると、テレビに繋いでるレコーダーが残り1時間とか3時間とかで、毎日、次の番組を録画するために、歌まつりを早送りで見続けたり、古いバラエティ番組を消すかどうかで議論したりして時間を

    いつも「時間がない」あなたに 欠乏の行動経済学 - hitode909の日記
  • 雑なVSCode拡張を作ろう #kyotoasterisk - hitode909の日記

    プレゼンモード 再生 ← / →で移動 fでフルスクリーン escでおわる id:hitode909です.Kyoto.なんか #4 に飛び入りでLTするための資料です. VSCode拡張を作ろう ここ2ヶ月くらい早起きして作っている 友達作りのため様子を紹介 自己紹介 はてなで働いている Emacs→Atom→VSCode 練習 祝日を挿入するコマンド gyazo.com const holidayList = "元日 成人の日 建国記念の日 春分の日 昭和の日 憲法記念日 みどりの日 こどもの日 海の日 山の日 敬老の日 秋分の日 体育の日 文化の日 勤労感謝の日 天皇誕生日 元日 成人の日 建国記念の日 建国記念の日 振替休日 春分の日 昭和の日 昭和の日 振替休日 憲法記念日 みどりの日 こどもの日 海の日 山の日 敬老の日 秋分の日 秋分の日 振替休日 体育の日 文化の日 勤労感謝

    雑なVSCode拡張を作ろう #kyotoasterisk - hitode909の日記
  • ImageMagickでliquid rescaleする - hitode909の日記

    ImageMagickのリサイズまわりの挙動を調べてたら異常なアニメーションGIFが掲載されいているのを発見して,その瞬間に調べ物はどうでもよくなった. 領域が狭くなると,文字が帽子の上に周りこんでいる. http://www.imagemagick.org/Usage/resize/#liquid-rescale Seam carving(liquird rescale)は画像のなかで自然に切り取れるところを探してリサイズする技術.物がないところを探して切り詰めるので物だけが残る. Seam carving - Wikipedia ImageMagickをliblqrつきでインストールすると使えるようになる. brew install imagemagick --with-liblqrオライリーの書影とか見るからに縮めやすくてめちゃくちゃ楽しいのでは?と思ったので練習. Docker

    ImageMagickでliquid rescaleする - hitode909の日記
  • コードレビューのクオリティとスピード,とくにスピードについて,それとコミュニケーションについて - hitode909の日記

    ソフトウェアを作るときにクオリティとスピードのバランスをとりたくて,どちらかに偏ってはいけなく,どちらもキープしないといけない.すごく雑に*1とらえると, クオリティ→正しく動き,不具合がないほうがよい スピード→(計算時間ではなく)早く作れるほうがよい ということになる. コードレビューでは,不具合を見つけて直してもらったり,動きはしてもコードの可読性に問題があって直してもらったりと,クオリティに目を向けられがちだと思う. ところで,コードレビューとスピードの関わりについて考えてみる.スピードのためにできることはいくつかあり, 早く読み始める→他のことやってても手を止めて読み始めたり,1日のうち決まった時間にレビュータイムを設けたり 速く読む→これはコツとかある*2けど精読しないといけないので難しい 不具合を見逃さない→リリース後とか,リリース直前に正しく動かないことが分かったら大きな手

    コードレビューのクオリティとスピード,とくにスピードについて,それとコミュニケーションについて - hitode909の日記
  • なぜひどいコードを書いてはいけないか - hitode909の日記

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

    なぜひどいコードを書いてはいけないか - hitode909の日記
  • ひどいソフトウェア作りたくなくて考えること - hitode909の日記

    ソフトウェア作ってるとどうしようもないひどい状況になったり、知らないプロダクトを読んだらひどい状況になってたりすることがあって、どんなときにそういうことになるのか、必ずそうなるのか、そうなることを予見できないか、完成したソフトウェアを見てひどいかどうか判定できるか、とか気になってる。 作ってる途中に気付けないものか 作る前に気づけることはあるかひどいのは分かってるけどやるしかないときにだけひどいものができるのか時間はあるけどやる気がないとそうなるのかプライベートでなんかあるとそうなるのか書いてから時間が経つと大体のものはそうなるのかコードは正しくて読者が使われてるパターンに理解がないだけなのかパターンの使い方が変だと読めなくなるのか当時と環境、社会情勢や実行環境、データ量、などが変わってひどくなるのかいい技術が発明される前なのでしかたないのかいい技術が発明されたときにキャッチアップすべきか

    ひどいソフトウェア作りたくなくて考えること - hitode909の日記
  • 70ページでドメイン駆動設計の要点を押さえられるDomain-Driven Design Reference - hitode909の日記

    Domain-Driven Design Reference,Amazon見てたら発見して,安かったから買ってみた. ぺらっとしてて,ポケット索引集みたいな雰囲気.エリックエヴァンスのドメイン駆動設計から,要約が抜粋されていて,70ページくらいで,重要な概念を押さえられる.原著は著者の経験を語ってくれるコーナーが大半を占めるけど,このではバサッと切られて,定義だけが載ってる. 前のから10年くらい経ったので,新しい内容も増えてる.ドメインイベントとパートナーシップ,巨大な泥団子.いずれも実践ドメイン駆動設計に出てきた. これだけ読んでドメイン駆動設計さあ始めよう,とはならないだろうけど,でかい読みたくないけど議論には参加したい,とか,どんなものか軽く眺めたい,みたいな人が読むにはてっとり早いかもしれない. 唯一役立ったのが前書きで,エリックエヴァンスのドメイン駆動設計ののことをTh

    70ページでドメイン駆動設計の要点を押さえられるDomain-Driven Design Reference - hitode909の日記
  • 作り直し - hitode909の日記

    ソフトウェアを作ってて、作り直したり、書き直したりするべきかどうかという話をすることがある。 大きな規模だと、ソフトウェアを作り直す、というところから、小さな規模だと、込み入った機能を書き直す、くらいまであるけど、作り直すとうまくいくのは、次の二つのうちどちらかではないか。 最初に作ったときより世の中の技術が発展したとき 昔のコンピュータでは収まらなかったとか、昔は良いライブラリがなかったけど、今はある、というとき。 単に今ありふれた技術で作り直すと、よいものができそう。 最初に作ったときよりはコンピュータのスペックが上がったので、そのつもりで、並列度倍に上げても止まらないし、より速く動かせる、とか。 昔はバッチで計算しないといけなかったけど、今ならリアルタイムに返せる、とか。 昔は依存管理のよいライブラリがなかったけど、今ならこれ入れたら簡単、とか。 最初に作ったときより人間の技術が発展

    作り直し - hitode909の日記
  • YAPCでベストトーク賞いただきました #yapcasia - hitode909の日記

    国内最大級の技術カンファレンスであるYAPC::Asia Tokyoで発表して、なんとベストトーク賞をいただきました。 まさかんなことになるとは!!ありがとうございます!!! 資料作ってるときは、こんな話ぜんぜんおもしろくないのでは、とか、発表時間たりないのでは、とか、なにかと不安でしかたなかったけど、意外とうまくいった。 オブジェクト指向やドメイン駆動設計を使って、ていねいにモデリングすれば、最高のソフトウェアを作れるっていう話をして、共感いただけたようでうれしい。 賞品でSurface 3とかKinectとかもらえるようなので、特定の踊りをするとデプロイが始まるとか、ロールバックの踊りとか、そういうものを作りたい。 instagram.com 発表資料はきのうの日記に貼っています。hitode909.hatenablog.com 今日のTシャツはこれです。めっちゃかわいいと思う。XLな

    YAPCでベストトーク賞いただきました #yapcasia - hitode909の日記
  • テスト先に書きたい若者よ - hitode909の日記

    弊社では毎年インターンを受け入れているのだけど,いまもインターンが来てて,テスト先に書きたいけど油断すると先に実装を書いてしまう,とか話してた. 個人的には,テスト先に書くのが大事というよりかは,意識して仕様を先に考えるのが大事だと思っている.テストを先に書くと,先に仕様を考えざるを得ないので,良いスタイルが身につく. 僕がよくやるのは,関連しそうなクラスの絵をひと通りノートに書いてみて,その図だけで,うまく動くことを説明できるくらい考えてみる.その時点でおかしかったら,コード書いてもおかしくなる.ノートに方眼ついてるとクラス図書きやすい.UMLとかじゃなくても,自分で見て分かるくらいでもいいと思う. 紙でうまくいったら,外部仕様だけソースコードに書いてみる.クラス名と,メソッドの定義と,メソッドの上くらいに,ひと通りコメントでも書いてみて,この関数はこういうことをするんです,こういう引数

    テスト先に書きたい若者よ - hitode909の日記
  • ドメイン駆動設計読んだ - hitode909の日記

    ドメイン駆動設計というのはソフトウェア工学のおしゃれなで,Kindleで買えたので読んだ.ドメインを軸に戦略的に設計しましょうという.2週間くらいで読めて良い体験できてよかった. ソフトウェアを,ユーザーインタフェース,アプリケーション,ドメイン,インフラストラクチャという4つの層に分けて,一番重要なのがドメイン層で,ドメイン層にアプリケーションが存在し得る理由がある.銀行システムだったら,口座とか利子みたなやつがドメイン層で,口座がよくできてると銀行としてうまくいく.ATMのタッチパネルというのはユーザーインタフェースで,どんなにATM押しやすくても,ドメイン層に,口座という概念がなくて,ただのハッシュだったりすると,銀行を運営して金を儲けるとか,新たな金融商品とか作るのが困難になる.インフラ層は永続化とかするのだけど,インフラ層がいかによくても,意味ないデータを保存していては銀行倒

    ドメイン駆動設計読んだ - hitode909の日記
  • この夏インターン給料で買いたいおすすめ本 - hitode909の日記

    会社でLT大会があって,いまインターンが来てるので,3分で若者におすすめを紹介する活動を行った. を読みましょう 大学にいると教科書とかあって,教授もいて,勉強できるけど,社会に出たら教科書ないから,自主的に勉強する必要がある.仕事をしながら学ぶというのあるけど,それだけでは不十分だと思う.仕事してるだけだと,今持ってる技しか出せなくて,生まれ持った技術だけでどうにかすることになる.外科医は手術するのが仕事だけど,手術しかしてない医者いたら心配だと思う. 脳外科医が週60時間も執刀していたとして、そんな医者にかかりたいと思うでしょうか? かかりたい人はいないはずです。プロには、備えるための時間、知識と技術を高める時間がどうしても必要なのです。 プログラマが知るべき97のこと 長時間働かないだけでなくて,あいた時間で勉強しないといけない. ,会社で買ってもらえる制度あるけど,読んだ

    この夏インターン給料で買いたいおすすめ本 - hitode909の日記
  • 1