スキップしてメイン コンテンツに移動

投稿

注目の投稿

tailwind.cssでハマった罠

tailwind.cssの罠 先日、tailwind.cssで謎(?)のバグに遭遇し、2週間くらい解決してなかったのが、つい先程解決したので、記述する。 症状 javascriptで、"py-32"クラスを追加したもの、"py-32"が効かない。 原因 HTMLに"py-32"が書かれていなかったので、 対象となるクラスがバンドルされなかった 。 対処 ダミーで適当なHTMLに適用させたいクラスを記述する。その後、必要があればjavascriptで削除する。 感想 この罠のやばい所は、 開発環境では再現しない という事。 ビルド後に発生するバグってホント、デバッグしにくいですよね。 本番環境でバンドルされているCSSを分析してようやく原因に気がついた。 冷静に考えてみると、このバンドルする際の設定は全部お任せにしているとこういう罠にハマるんだなぁと。 自前でバンドル設定を書くのが死ぬほど面倒なので、エコシステムに依存した環境構築をしたのは良いとして、こんな面倒くさいことにハマるのはなんかやだなぁ。 エコシステムは楽な分、別の場所でハマる事があるので、あんま好きじゃない。
最近の投稿

奨励会は残酷だ

奨励会の残酷さ 先日、 第71回奨励会三段リーグが終わった 。 結果は、藤本渚三段と齊藤裕也三段がそれぞれが昇段する事になった。 お二方とも、おめでとうございます。 実は、今期の奨励会三段リーグでは古田龍生三段がぶっちぎりで勝ち進んでいた。 参考: 【奨励会三段リーグ】古田龍生三段が12勝4敗に 昇段が濃厚に 。 当時の空気感としては、古田三段で今期は決まり。2番手は誰かといった点が注目されていた。 しかし、最終日に事件は起きる。まさかの古田三段二連敗。 結果として、2番手、3番手についていた藤本三段と齋藤三段が抜き去ってゴールという形になった。 奨励会は本当に残酷な所だ。 どれだけ先行していたとしても、最後にコケてしまったらそれで終わりなのだから。 古田三段と齋藤三段は、年齢が近しいが、経歴が全然違う。 古田三段は第60回から三段リーグに挑戦していて、今回で11期目。5年近く三段リーグにとどまっている算段になる。年齢も25と、26歳の年齢制限が着実に近づいている。 一方、齋藤三段は、今期初挑戦ながら一期抜けという結果を出した。24歳まで二段で奮闘していたという事を考えると、彼自身もまた年齢制限が迫っていた事がうかがえる。 奨励会三段リーグは、当然ながらそこに長くとどまらずにさっさと上がることができたら一番良いのだが、そこにいる人たちが、全員死にものぐるいで上がろうとしている人たちだからこそ、簡単に上がることができない。 そんな厳しいリーグを勝ち抜くのは並大抵の事ではできない。 例えば、齊藤優希三段は第12期加古川青流戦の決勝まで進んでいるほどの実力者だが、今期の三段リーグは13位。 三段リーグ突破には、何かしらの突き抜け力が求められている。 C級2組の突き抜けに近いものを感じるが、それくらいの実力が無いとプロになる事ができない物なのかもしれない。 ここ数年の三段リーグは、古田三段や斎藤三段の世代の棋士がぼちぼちと上がっていて、その辺の厚い層が薄くなってきている時代だった。 そして、藤井聡太五冠の活躍もあいまって、最近は十代の勢いある棋士たちが三段リーグに顔を連ねるようになった。 より、具体的に年代を絞るならば、1990年代後半世代が淘汰されて、2000年代前半生まれが台頭するようになったのだ。 文字通り世代交代が始まっているさなかと言える。 その中

API化したGASの高速化まとめ

API化したGASの高速化まとめ ひょんな事から、GAS経由でスプレッドシートの中身をAPI化する案件を頂き、ざっと構築したのは良いがあまりにも処理が遅すぎたので、高速化のためにやったあれやこれをまとめる。 全データ取得 まず、一番の高速化と言えば、データ取得。 for文で回してセルのデータを取るのではなく、 Sheets.Spreadsheets.Values.batchGet(sheetId, request).valueRanges みたいな感じで、ぐわっとデータを取るのが早い。 これは以前にやった事がある事だったので、基本中の基本なのだが、これだけだと高速化しなかった。 キャッシュ化 今回の案件は、複数のスプレッドシートからデータを取得して表示するという物であった。 故に、初回の実行時はどうしても何度かリクエストを飛ばす必要があった。 で、これが同じネットワーク(?)内だとある程度キャッシュが効くのだが、別のネットワークになると途端に起動が重くなるという クソ仕様 現象が生じた。 これを解決するために、色々調べた結果、 CacheService を使うと良い事が分かった。 const cache = CacheService.getUserCache(); みたいにして、後は let data = cache.get("keyName"); if( !data ){ //dataを色々処理 cache.put("keyName",JSON.stringify(data)); } と書いて対応する形にした。 今回は、APIを起動実行するユーザが一人しかいない前提なので、getUserCacheを採用したが、getDocumentCacheや、getScriptCacheとかでも全然構わない。 localStorageの採用 さらなる高速化として、localStorageを採用することにした。 これで、爆速化した。 一応、データ更新は3時間に1回という形にして、 let data = localStorage.getItem("keyName"); let dataObject; // キャッシュ時間は3時間くらい if( !data || data.expire

メイン端末をXiaomiのMi 11 Lite 5Gにした

メイン端末を iPhone から Android にした このブログを見返してみると、 2013 年末から iPhone をメイン端末として使っていた らしい。 この記録からするに、10 年近く iPhone をメイン端末として使っていた算段になる。 メイン端末を Android にするに当たって、幾つかの理由があったので、それを書き出していこうと思う。 Apple にイノベーションが無くなった Apple は iPhone を発表してから常に新しい機能を iOS や iPhone に詰め込んできた。 それに当初から惹かれていたというのは正直な話である。 様々なイノベーションがあったが、ここ数年、iOS から何か新しいものが出てきたというニュースはほとんど聞かなくなった。 まあ、iOS 側だけでなく、Android 側からも新しいのは出ていないけれども……。 いずれにせよ、自分はイノベーションというのを思いの外重要視していた。 故に、イノベーションが無くなった Apple に魅力を感じなくなってしまった。 マシンスペックが完全に Android の方が良くなった 以前は、iPhone > Android という関係だったが、今は iPhone < Android という状態になっている。 ハイエンドだけでなく、ミドルハイに関しても、そうなったのがここ最近の事。 今後は、ミドルレンジや、エントリーに関しても Android スマホの方が高スペックになっていくのは既定路線と言えよう。 今回自分が購入したのは、Xiaomi の Mi 11 Lite 5G 。 my new gear... pic.twitter.com/68eVSGAvpR — ArcCosine💉💉💉 (@ArcCosine) July 10, 2022 昨年発売されたミドルハイモデルで、これが非常にコストパフォーマンスが良い端末だった。 Snapdragon の 780G 搭載で、今メインで使っている iPhone SE2 とも遜色ないというより、むしろほとんどの部分に関しては上回る性能を出してくれている。 今後、Snapdragon の世代が上がっていくに連れ、A プロセッサ以上の性能を体感出来るようになるに違いない。 また、 バッテリーの持ち に関しても、かなり差

『天冥の標』シリーズを読み終えたので、その感想

『天冥の標』シリーズを読み終えた 昨年の夏頃からまったりと追いかけて読んでいた天冥の標シリーズを読み終えました。 そう言えば、ふらにゃんオススメの天冥の標の第1巻読み終えました。メニーメニーシープ、面白かったです。続きも楽しく読む予定です。 — ArcCosine💉💉💉 (@ArcCosine) 2021年7月31日 らいもんさんが 時期を同じくして読み終えていた のは、シンギュラリティポイントの一つなのかもしれません、知らんけど。 閑話休題。 天冥の標シリーズの歴史的には、 2→3→4→5→6→7→1→8→9→10 (Part 1とPart 8の順番は微妙だが……)、みたいな感じなので、順番に読みたい人はPart 2から読み進めるのが良いかもしれない。 ただ、やはり作者の狙い的にはPart 1から順々に読み進めて貰ったほうが、衝撃が大きいと思う。 なので、色々と我慢して読み進めることをおすすめする。 Part10まであるが、Part 8まで読み進めないと、1巻で起きた出来事の全容を把握するのは難しい。 そこに至るまで膨大なテキストを消化しなければいけないので、本が好きな人向けの本という感じがする。 個人的には、Part 2は、現代のパンデミックも含めて凄い身近な内容に思えてとても興味深く読めたし、ある意味、天冥の標シリーズの根幹を為すストーリーなので、Part 1よりも先にPart 2を読むというのはありだと思っている。 バリバリのSF好きはPart 1を読んで様々な疑問を抱えながらPart 2以降へ読み進めていくと面白いと思う。 前半Partは、Part毎にテーマが絞られているので、案外すっきり読み進めることが出来る。 逆に、その辺がごちゃ混ぜになったPart 1は全容を理解していない状態で読むとかなり厳しい内容になってるなーというのが正直な意見。 SFでやりたい事全部詰め込みました!みたいな内容なので、SFに慣れていない人にはあまりオススメ出来ないのが非常にもったいない気がする。 三体はその辺、上手いこと短くまとめたなという印象があります。 用語説明あたりから含めて、SFってやっぱり特殊な分野だと改めて感じました。 小川氏が伝えたかった事は、Part 9 ヒトであるヒトとないヒトに詰め込まれていたなと感じました。 「ヒトと

ddu-source-rgを導入した

ddu-source-rg を導入する Slack の vim-jp に、grep 何を使っていますか~と問いかけたら、ddu-source-rg 使ってるよ~という情報をいただき、早速導入した。 まずは、 本家 に書いてあるような設定を施す。 ripgrep のインストール まずは、 ripgrep をインストールする。 すでに導入済みの人はこのステップを飛ばして良い。 自分は Windows 環境なので、 Scoop で導入した。 Scoop を導入していない人は、Scoop を先に導入する事。 PowerShell で下記コマンドを叩き込めば、勝手にインストールされる。 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time irm get.scoop.sh | iex Scoop の導入が完了してるならば、ripgrep をインストールする。 scoop install ripgrep ddu-source-rg の導入 ddu-source-rg は、Plug やら dein やらでインストールする。 自分は、dein.toml で管理しているので、dein.toml に [[plugins]] repo='shun/ddu-source-rg' を追記しただけ。 後は、dein#install()を実行。 ddu-source-rg の設定 本家にはシンプルに call ddu#custom#patch_global({ \ 'sourceParams' : { \ 'rg' : { \ 'args': ['--column', '--no-heading', '--color', 'never'], \ }, \ }, \ }) と書いてあるので、ddu#custom#patch_global に同じ設定をすれば良い。 ごちゃごちゃしてるけれど、自分のはこんな感

KittyにUDEV ゴシックを導入

Kitty で UDEV ゴシックを有効にする 最近、Mac OSの方では、 Kitty を愛用している。 理由としては、GPUベースで動いているからヌルヌルだという記事をどこかで読んで飛びついた次第。 VimとGitがあれば、後は大抵何でもできるのだが、最近導入した Fern でフォルダアイコンとかをいい感じに表示したい欲が生まれた。 ターミナルのフォント変更についてネットで調べても、日本語記事はあまりなかった。 公式のドキュメントを読んだら kitty +list-fonts を実行して、その一覧にあるフォントを指定しろと書いてあったので、Windowsでも導入している UDEVゴシックフォント のNerd版を入れた。 UDEVゴシックフォントインストール後、kitty +list-fontsを実行し、そこに記されているフォント名を控え、kitty.confに追記した。 font_family UDEV Gothic NF Regular bold_font UDEV Gothic NF Bold italic_font UDEV Gothic NF Italic bold_italic_font UDEV Gothic NF Bold Italic font_size 18.0 font_sizeは自分の環境でのサイズなので、各自好きなサイズへどうぞ。 UDEVゴシックフォントをダウンロードする時は、UDEVGothic_NF_vX.X.X.zipと書いてある方をダウンロードする事。 NerdFont無いと、漢字が表記されて魔界になるので、注意。