2022/10/11 (火)

前屈が非対称で愕然とした 腰が故障している

2022/10/08 (土)

今日は ABCD 解けたから気持ちよく寝れそう。

2022/10/05 (水)

問題を簡単にするということが必要なのだろう ものすごく乗り気でないけど何か動かなくては…。 年内に ABC までは安定して解答できるようにしたい。

2022/09/25 (日)

世相は docker から containerd に移っていく

2022/09/20 (火)

D 問題、模範解答見ながら解いても60分くらいかかってるのでかなり厳しい。 この記事 も参考にして勉強していく。

2022/09/19 (月)

textlint で特定条件のとき lint をかけないでほしい。 この記事 を参考に設定を入れてみる。

npm install textlint-filter-rule-allowlist

2022/09/18 (日)

  • クラスタ = 下記のものの集まり

    • node = 1個のサーバー server

    • pod ≒ 1個の container

    • service = 複数の pod の窓口、ロードバランサのようにも働く

  • ローリングアップデート

    • k8s はデフォルトでサポートしている機能

    • ゼロダウンタイムを実現

docker-compose は k8s に置き換わっていくのでは・・・。ほんとか。

これ見た感じ rubocop の auto-correct を flycheck に導入するのは実装上困難と書いてある。 auto-correct したいなら rubocop-emacs とか rubocopfmt を使うべきなようだ。 rubocop-emacs なら入ってるからこれ使うか。 ちなみに attrap というパッケージは flycheck に auto-correct 機能を追加するらしい。 ただ今の所 haskel と emacs-lisp しか対応してないので厳しい。

2022/08/29 (月)

https://preview.colorlib.com/#calvin これ参考にしてデザイン作り直そうかな。

2022/08/22 (月)

覚えてる言葉で2分探索を説明してみる。ソートされた配列 A から値 x を探す方法を説明してみる。 まず Aの中央値をとる。A[A.length/2] でだいたい中央値になる。 これが x と一致するなら、探している値を発見したので終わり。 x より小さいならA[0..A.length/2] を次の探索領域とする。 そうでないなら A[A.length/2+1..] を次の探索領域とする。 次の探索領域を A に置き換えて探索を続ければいつか見つかる。もしも A が長さ1の配列になってしまったら、値x は見つからないという答えをだして終了する。

ruby における bsearch は常にブロックを取る。 大きいか小さいかというのが大事なので普通の find よりも情報が必要。

そして find-minimum モードと find-any モードがある。 find-minimum モードでは条件判定を下記のように定める必要がある。 このモードが推奨されている。

  • 探す値 x がブロックパラメータと一致するか、それより大きい値のとき true

  • そうでないとき false

となっている。たとえば [1,3,5,7,9] から 7 を探す時は不等号を使って [1,3,5,7,9].bsearch {|x| x >= 7 } と呼び出す必要がある。 添字が知りたいときは bsearch の代わりに bsearchindex を使えば良い。

find-any モードは C 言語ライブラリの bsearch みたいな感じで動くらしい。 find-any モードではブロックの結果は boolean ではなくて integer を返すようにする。

  • 探す値 x がブロックパラメータより小さい: 正の数

  • 探す値 x がブロックパラメータと一致: 0

  • 探す値 x がブロックパラメータより大きい: 負の数

なので使用例としては [1,3,5,7,9].bsearch {|x| 7 - x } と呼び出す。 こちらの使用法では探している値が見つからなかった時は nil を返す。 たとえば [1,3,5,7,9].bsearch {|x| 6 - x } は nil となるが [1,3,5,7,9].bsearch {|x| x >= 6 } は 7 を返す。

2022/07/10 (日)

svelte の紹介:仮想DOMを作らない。build したときに svelte のコードが含まれずに vanillajs のコードを下記出すようになるらしい。react でいうところの use state がとてもシンプル。state を参照しているところは $: 記号を使って宣言してリアクティブにできる。わかりにくさすごいと思うけど大丈夫かな。コンポーネントがプロパティを受け取る時には export let customprop みたいな書き方をする。馴染みがないのできついかも。

SPA じゃないのにわざわざ react 使うのは辛い。

deno の世界に行きたい。

2022/07/07 (木)

勉強は一人でやるのが良いと思っているので、多人数でやる勉強会はけっこう嫌い。ただ、どうしてもやる気が出ない時に強制的に勉強の時間が入るという効果はあると思う。

2022/07/06 (水)

雨が降っていたので自転車に乗らずに徒歩で出かけることにした。しかし、家を出て数分で雨は止まった。あとは蒸すような空気が残った。汗が止まらない。どうにか散髪を済ませてから参議院選挙の期日前投票に行った。人影はまばらだ。投票に訪れた人よりも立会人の方が多い。すぐそばの図書館を覗いてみたが、真っ暗で静まり返っていた。間が悪いことに、閉館日だったようだ。

帰りは寄り道せずにまっすぐに家に帰った。わずか十五分ほどの距離だったが、それでも汗だくになった。家に着いてすぐに服を脱いで、冷凍庫からアイスクリームを取り出した。スプーンが止まらなかった。今年一番美味しいと思った。

明日は食事会があるが、あまり行きたくないので、時間をずらして行きやすい店に行こうかと思う。久しぶりに坦々麺を食べるか、それとも定食屋のしげまつに行ってみようか。

無邪気なのが時々腹立たしかったりもする。不公平が嫌いなんだよなきっと。

2022/07/03 (日)

電車に乗ったらどうしてか、言葉がいくつか浮かんできて、それがその通りだと思って心地よかった。

2022/06/26 (日)

達人プログラマー読む。

fetcher -> http request builder response -> http response wrapper page -> html page

2022/06/25 (土)

emacs のチャンネルで instant fixup という機能について耳にした。git にも一応そういう機能があるらしいけど一定の手順を踏まないといけない。magit ならワンステップでコミットを指定して fixup できる。これはとても良い機能なので他の人にも使って欲しいと思う。最近 emacs の情報調べられてなかったから少しずつ調べることにしよう。emacs の起動時間を詰めるというのを真似してみよう。

そもそも起動時間 67 packages loaded in 2.438064 seconds だから既に早い。バイトコンパイルしても意味がなかった。 early-init.el を使ってみる。起動時間はさほど変わらないが、ちらつきがなくなった。spaceline を消した。2 秒切るようになったのでこれは効果があったようだ。

2022/06/19 (日)

達人プログラマー読む。

2022/06/18 (土)

吉村仁さんの素数ゼミの本を読んだ。とても面白かった。

素数ゼミっていうのはアメリカに生息する蝉のこと。これには和名がなくて、日本にはいないので、たぶん聞いたことがないと思う。この蝉は13年ごとに大発生するという変わった性質を持っている。17年ごとに出てくる種類もいる。どちらも素数周期を持っているんだけど、どうしてこういう振る舞いをするのかはよく知られていなかった。そもそも、アメリカでは蝉という生き物自体がマイナーで関心がないらしい。それを、日本の研究者が調べ上げてできた本、ということらしい。

覚えている範囲で適当に説明してみる。まずなんで周期性を持つようになったか、というところの推論。

普通のセミは周期性とかは持ってなくて、5年とか7年とか時間をかけて十分育ったら地上に出てくる。十分に育つためには木の根っこにある導管から樹液を吸って育つ必要がある。木の養分が多くなるのは光合成しやすくなる気温が高い時(日照時間が多い時)だから、平均気温が高めの地域とか季節には栄養が取りやすくなってよく成長する。そういう理屈で日本のセミは毎年夏に出てくる。カブトムシとかも同じ性質らしい。

アメリカのセミはそうではなく周期性を持っている。これは、おそらく氷河期とかそういう時代に進化したんではないかと言われている。アメリカは氷床に覆われる地域が多くて、かなりのセミが絶滅した。それでもギリギリ生きていけるオアシスのような場所(レフュージア)が存在しうる。どういう場所かというと、地下水が湧いているような場所。地下水は気温に影響されず、温度が常に一定なので寒くても氷に覆われることがない。そういう地域に入れば氷漬けになって死ぬというのは免れるけれども、日照時間が短いのでなかなか木が成長しない。それに依存しているセミも成長できない。普通なら5年とかで成長できるはずだけどその2倍も3倍もかかる。10年〜20年という長い時間をかけてゆっくりと成長する。しかし10年も20年もかけて成長しているとモグラに食べられたりとか衰弱死したりして生存率が悪い。うまく成長できたとしてもセミ人口が減少している氷河期では、パートナーを見つけるのが非常に難しい。なので「とりあえず夏に出る」では出会えないくらい厳しい状況になっていた。そういうなかで突然変異によって体内時計を持っている個体が発生してきた。その変異種は育ちきったとしても、生まれてから13年立つまでは地上に出ず休眠する、といった戦略を取る。これによって、パートナーを見つけやすいので生き残った。周期性を持たないセミは散っていった。

周期性が獲得できたら、あとはどういう周期で出てくるべきか、という議論になる。結果を言えば素数で地上に出てくるのが良い。素数以外の周期ゼミは、他の周期ゼミと地上に出るタイミングが重なってしまう頻度が多い。すると、似た種類であるために交雑が発生し、血統を保てなくなる。血統が保てなくなると、周期が乱れてしまい仲間と同じ時期に地上に出ることができなくなって途絶する。そうして14年周期とか15年周期の戦略を選んだセミは篩い落とされてしまったのではないかと言われている。その後氷河時代が終わって暖かい時代が戻ってくるが、進化してしまったセミは元に戻れない。こうして13年周期、17年周期の素数ゼミだけがアメリカに残った。

一方、日本のセミはアメリカほど過酷な状況に陥らなかったので周期性を獲得するのに至らなかった。ただ、季節風とかに乗って東南アジアから虫がどんどんやってくる+温暖化の影響でセミの種類が増えていった。同時にいろんな虫も増えたので賑やかになった。結果、適当に騒がしく鳴いてるだけだとパートナーが見つからなくなってしまったので、さまざまな音色を持つように進化していったらしい。アメリカのセミは特徴のない鳴き方だが日本のセミはヒグラシとかツクツクボウシみたいな幅のある音色を持っているというのが違うらしい。それはセミだけじゃなくてスズムシとかマツムシとかキリギリスとか秋の虫にも言えることなのだそうだ。味わいある。

ここまで読み切って、なんか生き物の理屈すごいなと思った。漫然と生きてるのが恥ずかしくなるくらい合理的に進化している。一方で、進化が後戻りできないからその合理性が失われているというのは悲しいことだ。人間が持っている伝統とか文化についても同じことが言えるのかもしれない。効率的に生きていくために社会を維持するために必要だった合理的な習慣が、今はもう必要なくなっていて無駄なことをしてしまっている。そういうことがいくらでもあるような気がする。合理的でないことをすべきではないとは思わないが、本当にやりたいことに時間を割けるならその方が幸せなんじゃないかというのは思う。

この素数ゼミの話から広がって、オスとメスで繁殖行為にかかるコストが違うという話が出てくる。オスが精子を生産するのは1億とか簡単に作れるけど、メスが卵を生産するのはもっと少ない。そういうわけでメスはオスを選ぶ必要が出てくる。基本的にメスは体が大きいとか丈夫に成長している個体をパートナーに選ぶ。そうして良い子孫を残そうとする。もう少し知性のある動物の場合は体の大きさだけでなく子供の世話をするかどうかみたいなところまで見ているかもしれない。

あと近しい種類と交雑しないようにする工夫について。オスは多数と交尾するコストも低いので、とにかく目についたメスに向かっていっても問題ない。交雑が発生しても、どれかのメスが同じ種なら、純血種の子孫を残すことはできる。でもメスは、パートナーに違う種を選んでしまったら、純血種の子孫を残すことができない。なのでメスはオスの種を見分ける必要がある。だから孔雀とかは雄の方が派手になっている。その他の生物でも、雄の方が派手で、メスは地味なことが多いらしい。

2022/06/12 (日)

google app sheet というのがあって spread sheet に対してカスタム UI を作れるらしい。ノーコードツール。

2022/06/05 (日)

js が最適化されてるので web assembly はそんなに使い道はないと言われている。

2022/05/17 (火)

2022/05/16 (月)

LeetCode というコーディングテストのサービスがあるらしい。

  • Design UX

    • You cannot design user experience (UXは人の身体や頭の中で起こることであり、人には個性があるので、デザイン不可能)

    • You can design product (プロダクトをデザインすることでUXをうながす)

      • Know our users (by questionnaire/interviews/ethnography)

      • Think about our users (by persona/jobs to be done/journey map/stakeholder maps/service blueprint)

      • Confirm with our users (by ideation/prototyping/user test)

2022/05/15 (日)

達人プログラマー読まねば。

warp というターミナル教えてもらった →日本語入力がうまく動いてなくて諦めたらしい。 マシン移行してからターミナルの設定全部とんだからやり直した方がいいかもな・・・。

2022/05/13 (金)

ソフトウェアアーキテクチャの基礎 https://zenn.dev/okunokentaro/articles/01g08xzr246r7p8336m57amkpn

ここで紹介されているタブをピン留めしたり、まとめて閉じるためのショートカットキーを追加するやついれてみた。 https://chrome.google.com/webstore/detail/keyboard-shortcuts-to-clo/dkoadhojigekhckndaehenfbhcgfeepl/related

editorconfig というのがあるらしい。 https://qiita.com/naru0504/items/82f09881abaf3f4dc171

conventional commits というのがあるらしい。 https://speakerdeck.com/cocoeyes02/lets-use-conventional-commits

https://static.chunichi.co.jp/chunichi/pages/feature/QR/galois_field_in_auto_factory.html

2022/05/08 (日)

達人プログラマー読む。

2022/05/06 (金)

  • orga -> uniorg

  • mathjax -> katex

  • prism.js -> highlight.js

の各種移行をどうにかやりきった。ただ、どれも少し振る舞いが違うらしくて一部レイアウトが崩れたり、変な番号が出てしまったりという不便がある。もちろんメリットもあって、セクションコメントとかがちゃんと動くようになったし、orga みたいな資料の少ないライブラリのドキュメントを探し回る必要がなくなった。uniorg の機能は orga よりもはるかに少ないのでできること、できないことははっきりしている。

もっと改良したい気もするがとにかく疲れたのでこれで休もう。

emacs で書体をボールドにする機能が効かなくなってる。これ直すのめんどくさそうだな・・・。と思ったらボールドフォントをインストールして再起動するだけでよかった。

2022/05/05 (木)

mathjax 効かなくなってたので復活させたい。いつ入ったのか知らないが orgajs の中でも latex support があるらしい。これを使えば良いのだろうか。あれこれ調べたがドキュメントが薄いし、使い方がわからない。推測で入れてみたけど、期待した振る舞いもしてくれない・・・。unified プラグインとして使いたいだけなのに nextjs gatsby インテグレーションとかが多すぎて辛い。使うのやめようかな。代わりに uniorg インストールしてみるか。インストールしてみたが下記の行でエラーになっている。

export {default} from './lib/index.js'

再エクスポートと呼ばれる機能らしい。下のようなエラーメッセージが出る。

Error [ERR_REQUIRE_ESM]:

require() of ES Module eggc-note/node_modules/uniorg-parse/lib/index.js
from eggc-note/.next/server/pages/memo/[[...slug]].js not supported.

Instead change the require of index.js in eggc-note/.next/server/pages/memo/[[...slug]].js
to a dynamic import() which is available in all CommonJS modules.

下記のようなことを言っているようだ。

  1. uniorg-parse は ES Module で書かれている

  2. ES Module は require() では読み込めないので代わりに import() を使え

ソースコードには require など書いてないが nextjs でビルドした時に内部で require に置き換えられるのでこのような動きをするのだろう。こういう体験をすると javascript は環境が悪い言語だなと言うのを感じる。さてこれを解決するには ES Module ではなく CommonJS で書かれたバージョンまでダウングレードするか、typescript あるいは webpack をうまく設定して ESModule に対応させるかしないといけない。同じ問題が出た人もいる。がこの方法はワークアラウンドな印象がある。もう少し良い方法はないのかと調べたがこれに書いてあるものをやってみよう。

  1. package.json に `"type": "module"` を追加。

  2. tsconfig.json で `"module": "ES2020"` となるように変更。

  3. 再起動

ダメだった。nextjs の内部でエラーが出る。調べてみると、nextjs12 からは ESM に対応しているらしいので、上記に加えて nextjs のパッケージをアップグレードしてみる。エラーが出なくなった。よかった。続いて jest を動かしてみるが、こちらも同じようなエラーを発生させている。nextjs12 からはjest もビルドインされるようになったらしい。この記事をみながら設定を作り直すことにした。jest では長々としたエラーが出る。その一部を切り取ると下のようなことを書いてある。

  1. jest でパースエラーが発生した

  2. 原因は JS 標準のシンタックスが使われていないことによる

  3. jest は babel の外にあるので、もしファイルの変形が必要なら babel の設定を入れる必要がある

  4. ES Module が使いたいなら https://jestjs.io/docs/ecmascript-modules

  5. Typescript が使いたいなら https://jestjs.io/docs/getting-started#using-typescript

Typescript は使っていて ts-jest を入れている。5番目の選択肢はそれを適用した上で ES Module をロードしたい。しかし nextjs の機能を使って jest.config.js をセットしているので中身がわからない。この記事によると nextjs の jest サポートは最近実装されたらしくてまだ動かないことがあるかもと書いてある。特に typescript と組み合わせる例はあまりない様子。nextjs + jest のサンプルをみたところ ts-jest は使ってないようだ。なので ts-jest をアンインストールしてみる。結果は変わらず・・・。試しに babel-jest の設定を自分で書いて実行してみたら下のようなエラーに変わった。

> You appear to be using a native ECMAScript module configuration file, which is only supported when running Babel asynchronously.

結局これは解決できなくて、そういうモジュールを使ったテストを諦めることにした。つまり ES module をインポートしなければテストは書けるのでそれで妥協すると言うことだ。当然良い方針ではないけど、かなり時間を使っても解決できなかったので、これ以上やる気がなくなってしまった。いつか ESModule が普及したら、対応が進んで、こんな風にどハマりしない時代がきてくれるんじゃないかと祈る。

2022/05/04 (水)

想像のゾウという歌がある。発想の飛躍を描いている。漫然と動画を見ていると、何か筋の通ったようなものに感じるが、歌だけを聞いていると、それはもっとカオスな感じがして好ましく思えた。逆に言うと、映像があることで意味が変わってしまうと言うことが普通にあり得るのだと知った。

ふと、一人になった時に、ずっとこの時間が果てしなく続くとしたら嫌だな、と思うことがある。もしかすると、乳児にはそれがすぐ訪れるのかもしれない。

2022/05/03 (火)

初めて寝かしつけがうまくいった感覚があった。

戦争の中で車を盗んで逃げた人がいた。実はその車の主は、四台持っている車のうち一台で逃げていた。残った三台は他の人が使ってくれという意思をこめて、わざと鍵を差したままにしておいたそうだ。だから盗まれたことに対して、むしろよかったと考えているらしい。他人の車を盗んだ人は助かり、盗むのは悪だと考えていた人は助からなかった。そんなことがあり得るだろう。道徳観を問われるような気持ちがする。そして幸運にも、車の主は生きて逃げることができたが、もし持っていた車がただ一つで、逃げる準備をしている間に盗まれたとしたらどうだろう。盗んで生き延びるという選択肢には、そのような可能性がある。

2022/05/02 (月)

自分達の村を犠牲にして水害を発生させて、その後手当は受けられるんだろうか。 ちょっとしたことでイライラするのは我ながら大人気ないと思う。

2022/05/01 (日)

  • typescript

    • https://future-architect.github.io/typescript-guide/index.html

    • typescript では 1.24567 | 0 が切り捨てになる(まあ普通は Math.floor 関数とか使うべき)

    • typescript では forEach より for-of 使った方が良い。

    • typescript では型ガードという概念がある。 if(typeof(x) == string) みたいな判定をしたブロックの中では変数 x が string として扱われて補完とかも効くようになる

  • flutter の話

    • dart を使う

    • SafeArea, SidesBox, EdgeIndent などのレイアウト用のコンポーネントがある

2022/04/28 (木)

元気がない時に明るくて賑やかな場所に出てくると、さらに萎縮する感じがする。 「なんでも図解」が ITエンジニア本大賞2021 を受賞したらしい。

2022/04/27 (水)

気力がなさすぎる。

SANDA という漫画読んだ。個性が強い。

2022/04/25 (月)

躍動感みたいなのが大事だと思う。

2022/04/24 (日)

  • 知性が大事。久しぶりに両親に会ったけどなんか価値観の合わなさがすごかった。私が真面目なことを言っているのに、冗談にしてはぐらかそうとするのがなんか許せなかったりして疲れた。家族なのに何ヶ月か合わないだけでそういうことがあるのかと思ったけど、昔からそういう性質は変わってないはず。だから、細かいことに対して神経を尖らせるようになった自分が変わってしまったのかもしれない。

  • 「日本人の英語」が良さそう(持ってたけど1/4くらいしか読んでなかった)

  • component registry みたいな感じで何かを蓄えるところを registry と呼ぶ話

2022/04/23 (土)

  • 身を焦がすような気持ちにはならん

2022/04/17 (日)

  • テキストデータを yarn でとれるパッケージにしてしまおう。

  • vite ... フランス語なのでヴィートと発音するらしい。vuejs の作者が作った webpack 代替ビルドツール。とても高速。

  • viteruby は rails にも対応しているらしい。

2022/04/13 (水)

github で fork したブランチを clone したら fork 元のブランチを取得できない。

git ls-remote upstrem             #=> Remote ref がいっぱいあるのが見える
git remote show origin            #=> Remote branch がいっぱいある
git remote show upstream          #=> Remote branch が1個しか見えない(release tracked のみ)

git fetch upstream xxx            #=> xxx ブランチは fetch したが FETCH_HEAD にセットされるだけ
git checkout -b xxx FETCH_HEAD    #=> xxx ブランチは checkout できたが追跡できない

なんか動きがおかしいと思って、調べたら config が原因らしい。

git config remote.upstream.fetch  #=> +refs/heads/release:ref/remotes/upstream/release

この config が勝手に入ったせいで release しか追跡できなくなっていたらしい。 まあ気持ちはわからなくもない。fork して origin で作業してるから普段 upstream を気にすることはない。 でもたまに upstream 参照したいこともあるので、全部追跡するようにしたい。

git config remote.upstream.fetch "+refs/heads/*:ref/remotes/upstream/*"
git fetch upstrem

これで追跡できるようになった。

2022/04/12 (火)

2022/04/10 (日)

  • react on rails は使ってるサービスがわかってしまうらしい。

  • webpacker は更新止まって shakapacker になるらしい。

  • rust には enum がある

    • enum がメモリを無駄に消費するのを避けるにはスマートポインタを使う。

    • enum で分岐するにはパターンマッチ使う。

  • https://kanjialive.com/ すご

2022/04/09 (土)

  • 0歳児がうまく眠れなくて泣き続ける。寝ても30分ほどで泣き出してしまう。一日中そういう感じだったので夫婦ともども睡眠不足で朝を迎えた。妻が面倒を見てくれたので私はなんとか昼寝をすることができたが、妻の方は寝不足のせいでアドレナリンが出てかえって休めなかったようだ。

  • ウクライナのマリウポリでは空爆があり2500人もの民間人が死亡したと言われている。

2022/04/03 (日)

  • pandoc, playwright が本番環境でインストールできないとか言う話

  • docker でやればなんとかなるストレージ2GBくらいは結構使う

2022/03/29 (火)

jest でテストするときに1個のテストケースだけを実行したいときは test() を test.only() に書き換えれば良い。 ファイルを書き換えたくない場合は jest -t "キーワード" のように引数指定すればキーワードを含むテストだけが実行される。 https://stackoverflow.com/questions/42827054/how-do-i-run-a-single-test-using-jest

https://typescript-jp.gitbook.io/deep-dive/ これ読んでみようかなあ。

typescript で相対パスで import していると長くなってしまうので良い方法はないのかと調べたら tsconfig.json で baseUrl と paths いうのを使えば良いらしい。 https://stackoverflow.com/questions/34925992/how-to-avoid-imports-with-very-long-relative-paths-in-angular-2 https://dev.to/ruppysuppy/how-pros-get-rid-of-relative-imports-in-js-ts-2i3f

ts で書いたテストが Cannot find module でエラーを返す。 明らかにモジュールは定義しているので、モジュールのコンパイルに失敗してるのが原因のようだ。 jest が ts を受け取ったときどういう振る舞いをしているのか。 今は ts-jest というパッケージを使ってるので暗黙的にコンパイルしているようだ。 これがフローだけど、ちょっと細かすぎてよくわからない。

jest.config.js というファイルにその設定がある。

コンパイルエラーが出ないか確認するには

yarn tsc --noEmit hogehoge.ts

みたいな感じで出力出さないフラグつけてコンパイルしたら良い。

2022/03/27 (日)

2022/03/25 (金)

gh で github 操作するの面白い

# プルリクを作る
gh pr create --base release --draft

# CI が通ってるか確認する
gh pr checks <PULL_REQUEST_NUMBER>

# プルリクレビューを依頼する
gh pr <PULL_REQUEST_NUMBER> ready
gh pr <PULL_REQUEST_NUMBER> edit --add-reviewers <REVIEWERS>

2022/03/24 (木)

2022/03/20 (日)

クリーンアーキテクチャよむかあ。

2022/03/18 (金)

  • 仕事の中にも、ダークソウルの篝火みたいな安心のできる場所は必要なんだと思う。仲間がいればなお良い。

2022/03/15 (火)

  • GraphQL の pagination

    • cursor-based pagination というのが最近のはやり

    • cursor-based なら facebook が決めた relay というパターンが有る

    • ruby の graphql-ruby は relay-style で出力できるようになっている。connectiontype メソッドを使えば良い。

    • よくある offset-base pagination がしたいなら kaminari を使えば良い。

  • apollo studio が一番使いやすい

  • grapql はバージョニングできないので変更するときは非推奨にしてから時間を置いて廃止とする

  • 仕様書?

2022/03/13 (日)

  • またクリーンアーキテクチャ読むか…。めんど。

  • PlannetScale というサービスが有るらしい。MySQL 互換 DB が使えるらしい。Youtube でも使っているとか。スケーリングできる。無料プランもある。マイグレーションのダウンタイムがない?

  • 一つのリポジトリを複数のチームで育てているときに、全体的な変更を加えた場合、その変更を受け入れるか判断するためのルールが決まってないのが辛さの原因のような気がする。

  • rust

    • タプル型構造体というのがあり、フィールド名がない。これは別名的に使うと良いらしい。

    • 構造体に紐付けられた関数はメソッドとなる。メソッドの引数から self を取り除くとスタティックになる。

  • vuejs

    • composition function というのがある。composables ディレクトリに関数をいれる。慣例的に useXxxx という感じにする。その composition function をインポートすればどのコンポーネントからも利用できる。

2022/03/09 (水)

2022/03/06 (日)

  • クリーンアーキテクチャ読む。

  • alfred

    • clipboard history が便利

    • workflow を使えば自動出社 & slack 通知できる

  • vuejs の話聞く

    • provide/indect は親コンポーネントの属性を子孫コンポーネントで使えるようにするという機能

      • react global context みたいな感じ

    • teleport はコンポーネントの DOM ツリーをそのまま別のコンポーネントに移し替えれる機能(モーダルで使う)

    • Composition API は setup というメソッドの中にデータと操作を近い場所に書けるようになる(紹介記事)

      • reactive で変更可能な属性を持てる

      • 今まで vue2 で使われてたものは Composition API に変わっていくらしい

  • ちょっとしたイベントに参加することになった。やたら緊張する。

2022/03/05 (土)

https://qiita.com/Ladicle/items/feb5f9dce9adf89652cf この記事を見てから emacs で nerd font のアイコンを使いたいと思った。ricty + nerd にしたかったけど配布されてなかった。自分でビルドするのは大変だと知っているのでやりたくない。検索でヒットする https://github.com/macchaberrycream/RictyDiminished-Nerd-Fonts これは明らかに古くて、絵文字が足りない。最初、絵文字が足りてないことに気づかなくて、設定が悪いのかと思ってめちゃくちゃ悩んでしまった。

unicode にはプライベート領域というのがあって、何でも使っていいことになってるぽい。たとえば U+E708 は nerd-font では nf-dev-githubalt という名前を持っていて github のアイコン  がアサインされている。しかし上記の URL からダウンロードしてきたフォントはそのアイコンをビルド時に含めてないので文字が見つからなくて emacs のフォールバックが動く。結果よくわからないフォント(おそらく中国語フォント)の U+E708 が表示されるということが起きていた。Emacs ではフォントがないときのフォールバックの仕組みが無駄に凄い。たとえば絵文字 😁 とかは普通のフォントには含まれてない。こういう絵文字は Symbola というフォントを自動的に使うようになっている。無駄に凄いので設定がややこしくて原因を調べるのが大変だった。

2022/02/27 (日)

クリーンアーキテクチャ読む。java 前提になってるところが頭に入ってこない。

2022/02/26 (土)

Emacs での文字コード/フォントの扱いをシンプルにするため設定をやりなおそう。とりあえずフォントセットの設定を消してみる。手元で describe-char を使ってどのフォントが使われてるか調べてみた。

  • アルファベット → Menlo

  • ひらがな → ヒラギノ

  • 漢字 → PingFang SC

というフォント割当になってるっぽい。実際 describe-fontset で fontset-default の中を見るとそんな感じになっている。これを Ricty に上書きしてみた。まあ一応期待通り動いている。

なんとなく init.el で flycheck を有効にしてみたら use-package マクロで警告がでてしまった。これと同じ問題だ。 straight-use-package を使ってるせいで単に (require 'use-package) と書けばよいはずなのにどこにインストールされてるかわからんことになっていて微妙かも。

2022/02/24 (木)

  • https://explainshell.com/ でわからないワンライナーとかを分析できるらしくて良いね

  • ubuntu のマニュアルで書いてあるのを参照しているらしくて、BSD のコマンドとオプション違うので注意

  • Unicode -> character set

  • UTF8 -> character encoding schema: Unicode code point <-> bytes

minimum code pointsmaximum code pointsbyte1byte2byte3byte4
U+0000U+007F0xxxxxxx
U+0080U+07FF110xxxxx10xxxxxx
U+0800U+FFFF1110xxxx10xxxxxx10xxxxxx
U+10000U+10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx

例: ぱ → unicode code point U+3071 → 3071 -> 0b101111111111 -> 変換表の x にビットを逐次埋めていく -> 11101011 10111111 10111111

仕事用の ssh-key を使っていたら個人用の github アカウントに全く芝が生えないのでなんかその辺いい感じに切り替える方法ないんやろか。 git の署名の所が参照されてるようなので git config local でアカウント切り替えたらいいんじゃなかろうか。 https://qiita.com/0084ken/items/f4a8b0fbff135a987fea この記事をみたらやはりそんな感じがした。

2022/02/23 (水)

  • 先週読めなかったクリーンアーキテクチャの続き読むか…。

  • gh コマンドと jq であそんだ。

2022/02/13 (日)

  • google analytics/google analytics GA4 (ユーザアクション解析)個別にいれなくても google tag manager を使うと動的に埋め込めて凄い。

  • rust はほとんどの文が式で、値を返す。

  • https://qiita.com/hinastory/items/543ae9749c8bccb9afbc rust で fizz buzz の色んなパターンを書いてみたという記事。15 通りある。軽い狂気を感じる。

  • https://developers.google.com/books ユーザ登録とか無しで本の情報取れるらしい。すごい。

  • vuejs で子→親に情報を渡すには emit でイベント発行する。

  • ヒューマンバグ大学という youtube チャンネルが有るんだって。

2022/02/07 (月)

「今日中にこの問題の原因について明らかにせよ」みたいな強い物言いが営業を通じてプログラマに飛び込んでくることがある。 そういうのを守るのもマネージャーの仕事なのだという。なるほどねえ。

2022/02/06 (日)

  • nextjs のもっと軽量な vite っていうフレームワークがあるらしい。

  • サイドバーがうまく定義出てきてないのが辛いので一旦削除する。

  • js のチャンク(code spliting)に意味はあるのか?

  • vuejs のコンポーネントライブラリ vuefity というのがある。

  • 犬画像が取れる API サービス https://dog.ceo/dog-api/ いくらでも犬がとれる。すごい。

  • trdsql というのがあって、json のレコードをテーブルインポートしたりできるらしい。すげえ。

js/ts のデバッグをする時にプリントデバッグだけだと辛いのでデバッガを入れたい。 node が提供している方法は、サーバークライアント方式になっていて debugger を書いたところでプログラムが待ち状態に入る。

node --inspect-brk node_modules/.bin/jest -- tests/File.test.ts

クライアントとして chrome の開発者ツールみたいなのをそのまま使える。 ただわざわざ chrome のウィンドウでなにかするのはあんまり好みではないので他の方法を知りたい。 このめんどくさい設定地獄から抜け出すなら vscode を使うべきなんだろうなってのは思う。