tag:blogger.com,1999:blog-80610817311026161452024-03-18T12:34:27.086+09:00欅樹雑記ブックマークサービスQiNeel関連の記事や身の回りのよしなしごとをそこはかとなく書きつくっています。Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.comBlogger433125tag:blogger.com,1999:blog-8061081731102616145.post-73027077280182906842024-03-17T00:00:00.043+09:002024-03-18T12:33:54.044+09:00WinterJS正式版<p> <a href="https://www.publickey1.jp/blog/24/javascriptwinterjs_10wintercgwasixwasmer.html" rel="nofollow" target="_blank">新たなサーバサイドJavaScriptランタイム「WinterJS 1.0」正式リリース、WebAssemblyへのコンパイルも可能。Wasmerが開発</a></p><p>去年の10月ごろに出た新しいJavaScriptランタイムが正式版になったようです。今回の開発元はWasmer。爆速を謳っている<a href="https://bun.sh/" rel="nofollow" target="_blank">Bun</a>よりも速いと主張しています。</p><p>まだ使ってないので評価も何もできないのですが、<a href="https://wasmer.io/posts/winterjs-v1" rel="nofollow" target="_blank">元記事</a>をざっと見た感じではDenoやBunとは違ってTypeScriptのネイティブサポートはないようですね。</p><p>これでV8(Chrome) / JavaScriptCore(Safari) / SpiderMonkey(Firefox)のエンジンを使ったランタイムが揃ったので、みなさんいい感じに競争してほしいです。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-37565499819791026282024-03-10T00:00:00.091+09:002024-03-18T12:33:54.007+09:00GRUBのブートエラー "error: file /boot/ not found."<p>
先日、Linuxを入れているPCを再起動したら画面にこんなメッセージが出て起動できなくなりました。
</p>
<pre class="prettyprint lang-none">error: file /boot/ not found.</pre>
<p>
Gentoo
Linuxを使っているんで時々カーネルのアップデートはするけど、特にブートローダー周りをいじってるわけでもないし現に今まではこういうエラーも特に出なかったし、うーんなんだろなー🤔 このマシン使えないと副業も何もできんし困ったなー🤔</p>
<p>
とりあえずエラーメッセージで検索しても原因らしきものは見つからず。仕方ないので<b><u>こういうこともあろうかと</u></b>用意していたUbuntu入りのUSBメモリーで起動し、パーティションをマウント。マウントできたので、とりあえずストレージやパーティションに致命的な障害があるわけではなさそう。
</p>
<p>
あらためてカーネルの再構築やら<code>grub-mkconfig</code>やらを実行して再起動。でもまだ同じエラーが出る。
</p>
<p>
半日近くあれこれ試行錯誤しましたが、最終的にパーティションをマウントしたディレクトリーに<code>chroot</code>して<code>grub-install</code>をやり直したら直りました。
</p>
<pre class="prettyprint lang-bash">grub-install --target=x86_64-efi --efi-directory=/boot/eft --bootloader-id=boot /dev/sda</pre>
<p>
結局原因はわからずじまいだけど、きっと<b>何かの拍子になんかおかしくなった</b>んでしょう。そうに違いない。
</p><p>このマシン自体は4年前くらいに買ったやつで、今でもスペック的に大きな不満はないんだけどそろそろ買い換えどきかなぁ🤔</p>
Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-28947193318858290992024-03-03T00:00:00.006+09:002024-03-18T12:33:53.970+09:00Enpassのバグ報告<p> ここ数年パスワードマネージャーに<a href="https://www.enpass.io/" rel="nofollow" target="_blank">Enpass</a>を使っています。機能的に不満はなく、有料ですがサブスク方式ではなく一括払いのプランもあるので愛用しています。</p><p>ただ、最近特定の環境でブラウザーのパスワード自動入力ができなくなってしまいました。</p><p>詳細は<a href="https://discussion.enpass.io/index.php?/topic/29746-dropdown-is-not-working-on-firefox-private-mode/" rel="nofollow" target="_blank">Enpass公式フォーラム</a>に書きましたが、Firefox v123.0のプライベートモードで自動入力機能が使えません。別の環境(Firefox v115.7)では問題ないので、バージョンアップした際にプライベートモードの拡張機能の仕様が何か変わったのかもしれない・・・と推測しているのですが詳しいことはわかりません。</p><p>別の環境のFirefoxをv123.0にしたら少しはハッキリするかもですが、動かなくなったら嫌だしなぁ・・・</p><p>誰か解決方法を知っていたら教えてください。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-11337046461078854332024-02-25T00:00:00.141+09:002024-03-18T12:33:53.919+09:00「メール一往復主義」をするのは若手?<p>
<a href="https://diamond.jp/articles/-/338678" rel="nofollow" target="_blank"
>断られた→返信しない「メール1往復主義」の若手が増加中!タイパ重視の本末転倒</a
>
</p>
<p>こんな記事がありました。個人的にも確かにこういう経験はあります。</p>
<p>
このブログでも度々取り上げていますが、LinkedInなどで明らかにこちらのプロフィールや希望に全く目を通していない(おそらく一斉送信の)スカウトメールが来ることがあります。そういうメールは機械的に弾けるような仕組みを入れているのでスルーするんですが、大体1週間後くらいに「どうしても諦めきれないので再度連絡します」みたいなメールが来ます。それも大抵スルーするんですが、時々気が向いたら「そんなに真剣なのになんでプロフィール読まんのや、ああん?」という趣旨の内容を<b
><u>オブラートに3重くらい包んで</u></b
>送ったりします。まず間違いなく、それ以降先方からの連絡はありません。
</p>
<p>
こういう経験談は置いといて、冒頭の記事を読んでちょっと気になったところが。
</p>
<p style="text-align: center;">
<span style="font-size: large;">相手は本当に「若手」なんでしょうか?</span>
</p>
<p>
記事内ではひたすら「若手」が強調されていますが、記事を一通り読んでも「一往復主義を行うのは若手」という確たる根拠はないように見えます。例えば相手が年齢を名乗ったとか、送り主の名前で検索したらSNSで若い人がヒットしたとか、知り合いの会社の人が「うちの若い営業はこんな感じだよ」と言っていたとか・・・そんな話は一切出てきません。
</p>
<blockquote>
<p>
このようなことから、最後の返信を省くことは、現代のビジネス環境においては、不適切ではなく、タイムパフォーマンスから見ても正当化でき、相手にとっても余計な時間を費やさせない正しい行動である、と若手社員は考えているようなのである。
</p>
</blockquote>
<p>
という書き方からして、実際にこういう営業スタイルの若者に聞いたわけではなく、「タイムパフォーマンス的に問題ないから正当化できる、こういう考え方をするのは若者だろう」あるいは「昔は違った、今はこうだ、だからこういうことをやっているのは若手に違いない」という推測が多分に混じっているように見えます。
</p>
<p>
ただこれは乱暴すぎやしませんか。後者の「昔は違った〜〜」に関しても、新入社員当時のやり方に違和感を持った人が、ベテランと呼ばれはじめた今になってこういうやり方を採用している可能性を排除できていません。
</p>
<div>
もちろん記事に書いていないだけでどこかで裏を取っている可能性もありますが、記事にするならせめて裏を取っていることくらいは明示してほしいものです。
</div>
Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-58022403239080758772024-02-18T00:00:00.067+09:002024-02-18T11:35:13.178+09:00Install SSH Key v2.7.0を公開しました<p> <a href="https://github.com/marketplace/actions/install-ssh-key" rel="nofollow" target="_blank">Install SSH Key</a>もだいぶ機能的には成熟してきたので、更新頻度もかなり減ってきました。SSH鍵を使う上での機能は過不足なく揃っていると思います。希望を言い出したらキリがありませんが、ごく一部の人しか使わないようなニッチな機能をつける予定はありません。</p><p>先日、半年ぶりくらいに新バージョン<a href="https://github.com/shimataro/ssh-key-action/releases/tag/v2.7.0" rel="nofollow" target="_blank">v2.7.0</a>をリリースしました。内容は大したことではなく、<a href="https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/" rel="nofollow" target="_blank">使用しているNode.jsランタイムをv16からv20へ変更した</a>のがメインです。</p><p>先月の時点ですでに<a href="https://github.com/shimataro/ssh-key-action/issues/266" rel="nofollow" target="_blank">Issueには報告があり</a>、親切にも<a href="https://github.com/shimataro/ssh-key-action/pull/267" rel="nofollow" target="_blank">Pull Requestが投稿されていました</a>。半月くらい放置して取り込むだけの簡単なお仕事です。報告&PRを作ってくれた人たちありがとう。</p><p>これに伴い、DockerコンテナのUbuntu 16.04とCentOS 7のサポート(CIによる動作検証)を切りました。多分glibcのバージョンの問題で、これらのOS上でNode.js v20は動きません。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-85321606024518826452024-02-11T00:00:00.000+09:002024-02-13T01:48:49.806+09:00排中律という証明方法<script async="" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<p>
数学好きにはよく知られた方法ですが、<b><u>排中律</u></b>という証明方法があります。厳密にはこれは証明ではなく「『Aである』または『Aではない』は常に成り立つ」というある意味当たり前の原理なのですが、これをうまく使った証明のやり方があります。
</p>
<p>
高校までには習わない(というか大学でも習った記憶がない)のですが、考え方は高校数学レベルで十分理解できます。かなり使い道は限られるのですが、個人的にはこの排中律が一番「すげえ!」と思った証明方法です。
</p>
<p><span></span></p><a href="https://blog.zelkova.cc/2024/02/law-of-excluded-middle.html#more">続きを読む »</a>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-66089193640799223732024-02-04T00:00:00.006+09:002024-02-13T01:48:49.776+09:00Sabayon Linuxの現在<p> Gentoo Linuxの派生ディストリビューションにSabayon Linuxというものがあります。派生といっても、ソースコードベースで<b><u>変態御用達</u></b>のGentooとは正反対の、Ubuntuと同程度に簡単に使えるディストリビューションです。</p><p>そんなSabayon Linuxのことをふと思い出したので、どれくらい進化しているか確認しようとしたら・・・</p><p><a href="https://www.sabayon.org/" rel="nofollow" target="_blank">https://www.sabayon.org/</a></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Nd_w4NuxfVh5J7BcgUdW2mTXhl85-Ss1Neulzuux5oJq_aQh_QJQHu4dnouQKkFWD1JGSabJfUExbC8u2OBjUH6TOJbLHyahWepSlHPL9RLvHSXBzAJELGU02QpYuuvSfzK2LqJ1yvIbRoMcBhLGIGgFzcz3dLcj97BhsKYMtjdj7zjJA2kF-_SFjwo/s964/sabayon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="426" data-original-width="964" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Nd_w4NuxfVh5J7BcgUdW2mTXhl85-Ss1Neulzuux5oJq_aQh_QJQHu4dnouQKkFWD1JGSabJfUExbC8u2OBjUH6TOJbLHyahWepSlHPL9RLvHSXBzAJELGU02QpYuuvSfzK2LqJ1yvIbRoMcBhLGIGgFzcz3dLcj97BhsKYMtjdj7zjJA2kF-_SFjwo/w400-h176/sabayon.png" width="400" /></a></div><p>いや進化しすぎぃ!<b><u>進化しすぎてカジノサイトになっとる!!</u></b></p><p>譲渡したのかドメインが切れたのか乗っ取られたのか<b><u>事業変更したのか</u></b>詳しいことはわかりませんが、どうやら公式サイトは消滅してしまったようです。<a href="https://web.archive.org/web/20230101000000*/www.sabayon.org" rel="nofollow" target="_blank">Wayback Machine</a>によると、2023年3月13日の時点ではちゃんと存在していたものが3月14日にカジノサイトになっているようですね。</p><p>開発チームは今どうなってるんでしょうか。<a href="https://github.com/Sabayon" rel="nofollow" target="_blank">GitHubのSabayon org</a>を見てみると、サイトのURLが変わっているようです。</p><p><a href="https://www.mocaccino.org/" rel="nofollow" target="_blank">https://www.mocaccino.org/</a></p><p>モカチーノと読むんでしょうか。Sabayonから新たに派生したみたいです。リポジトリーも<a href="https://github.com/mocaccinoOS" rel="nofollow" target="_blank">mocaccinoOS org</a>が新しく作られているようです。</p><p>何の気なしに「そういえばアレどうなってるんだっけ」から調べたものが、意外と激動していました。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-2553750162305263732024-01-28T00:00:00.080+09:002024-02-13T01:48:49.734+09:00htmxについて<p> <a href="https://htmx.org/" rel="nofollow" target="_blank">htmx</a>というフロントエンドのフレームワークがあります。というか<b><u>つい最近知ったんですが</u></b>。</p><p></p><ul style="text-align: left;"><li><a href="https://qiita.com/twrcd1227/items/7bce18167fb02ec22729" rel="nofollow" target="_blank">もうjsなんていらない!世界で流行っているHTMXについてまとめてみた #JavaScript - Qiita</a></li><li><a href="https://qiita.com/tsmd/items/0d07feb8e02cfa213cc4" rel="nofollow" target="_blank">htmxとは何なのか? その背景にある思想について #rest - Qiita</a></li></ul><p></p><p>ここしばらくフロントエンド開発から離れていたので全然キャッチアップできておらずお恥ずかしい話ですが、去年あたりから世界的に流行っているらしいですね。</p><p>このフレームワークについての説明は上記の記事や公式サイトに任せますが、これを見たときに最初に思ったことは「<b><u>ついに来たか</u></b>」でした。</p><p>フロントエンド開発の変遷からして、いずれはこういうものが来ると思っていたのです。</p><p>20年ほど前にJavaScriptを使ったリッチなフロントエンドの開発が流行り始めたとき、最初はjQueryやPrototypeなどのライブラリーを使って<b><u>DOMを直接操作</u></b>していました。Ajaxとかいう言葉が騒がれ始めたのもこの頃です。</p><p>しかし変数の値が変わるたびにDOMを操作する、あるいはDOMの構成が変わるたびに変数に反映させるという処理はややこしかったので、やがて<b><u>変数とDOMをバインディングさせる</u></b>という発想が出てきました。AngularJSやReactです。ReactはVDOMという別の概念ももたらしたのですが、これは別の話。</p><p>さて、「DOM直接操作」から「変数とDOMをバインディング」と変遷して開発者はロジックの記述のみに専念できるようになったわけですが、このあたりから「次はそもそも<b><u>ロジックを書かずに済むフレームワーク</u></b>が出てくるんだろうな」と考えていました。</p><p>ロジック(≒プログラム)を書かず、<b><u>イベントが発生したときに呼ぶAPIと、戻り値を反映させる先</u></b>をYAMLファイルのようなもので指定しておくだけで済めばデバッグの手間も大幅に減ります。なんでも作れるというわけではありませんが、これで十分なウェブアプリケーションも決して少なくない。そんなフレームワークがそろそろ出るだろうと。</p><p>このhtmxは、まさにこの思想から生まれたものだと思っています。YAMLではなくHTML内に直接指定ですが、そこは些細なこと。要はロジックを書かずに<b><u>宣言的に</u></b>アプリケーションを作れる時代がやってきたということです。</p><p>あ、上のアイデア(YAMLで指定する云々)を誰かパクって<b><span style="font-size: large;">新しいフレームワーク作ってもいいんですよ</span></b>?</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-41989354425816940612024-01-21T00:00:00.206+09:002024-01-21T15:35:50.023+09:00ZIP爆弾で不正アクセス撃退<p>
不正アクセスに悩まされているサイト管理者は多いかと思います。特に
"wp-admin.php"
のようなパスへのアクセスがひっきりなしに来るサイトもあるでしょう。そういう不正アクセスに対して面白い(?)撃退方法があるようです。
</p>
<p>
<a href="https://gigazine.net/news/20240120-how-to-defend-your-website-with-zip-bombs/" rel="nofollow" target="_blank">ウェブサイトに侵入してくる相手にZIP爆弾を送りつけて撃退する方法</a><br />
</p>
<p>
小さなサイズの圧縮ファイルが展開すると数GBや数TBに膨れ上がる<b><u>ZIP爆弾</u></b>と呼ばれるものがありますが、それをブラウザー経由でやるというもの。
</p>
<p>これの面白い(?)と思ったところは2つあります。</p>
<p>
<b><u>ブラウザーの標準機能を使っていること。</u></b>GZIP圧縮によるデータ転送は<a href="ウェブサイトに侵入してくる相手にZIP爆弾を送りつけて撃退する方法" rel="nofollow" target="_blank">HTTPの規格で定義されており</a>、ほとんどすべてのブラウザーが対応しています。自動的にデータの展開まで行うので、攻撃者が気づいたときには時すでに遅し。ブラウザーではなくcurlなどでアクセスした場合でも、Accept-Encodingヘッダーを指定していれば自動的に展開されます。
</p>
<p>
<b><u>この手法は「攻撃」ではないということ。</u></b>例えば、UAの脆弱性を突いてリモートコード実行したり、リクエスト側を乗っ取るようなレスポンスデータが含まれていると、逆にサービス側が不正アクセスとみなされる可能性が高いと思います。でもこの手法は<u>単にレスポンスデータが大きいだけ</u>なので、それを処理する能力がブラウザー側にないことやストレージの空きがないことはサービス提供者側の責任ではありません。
</p>
<p>
とはいえ、「攻撃者側を困らせてやろう」と思ってやっているであろうことは変わりないため、いざ裁判を起こされたときにどのように無罪を勝ち取れるかは保証できません<sup><b><span style="color: red;">※</span></b></sup>し、この方法を推奨するわけでもありませんので誤解なきよう。あくまで技術的に面白いと思った(ZIP爆弾自体は知識として知っていましたが、こういう使い方があったか、と感心した)だけです。
</p>
<p>
<b><span style="color: red;">※</span></b>「攻撃するほうが悪い」「攻撃者側が裁判を起こすなんて恥知らずだ」という理屈は法治国家では通用しません。弁護士の腕や裁判官によって結果は大きく変わるでしょう。</p>
Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-10967417241022485042024-01-14T00:00:00.138+09:002024-01-21T15:35:49.943+09:00機械学習で全然精度が上がらない<p> 最近、<a href="https://ja.wikipedia.org/wiki/Seq2seq" rel="nofollow" target="_blank">seq2seq</a>の独自実装にハマっています。まあ独自実装といってもまだ自慢できるような工夫はほとんどないんですが、翻訳とかチャットボットとかになんか使えそうなのでとりあえずエンジンを作っている段階です。</p><p>そんな自作seq2seqを使って試しに英日翻訳エンジンを作ってみたんですが、どれだけ学習させても<b><u>全くもってトンチンカンな翻訳結果</u></b>にしかなりません。多分アルゴリズムは合ってるはずだし学習データも<a href="https://www.manythings.org/anki/" rel="nofollow" target="_blank">ネット上で公開されている機械学習用のトレーニングデータ</a>を使っています。ただデータ量が多いので、ある程度まとめてミニバッチ学習をさせています。何がおかしいんだ・・・</p><p>数日悩んでいましたが、ある日ソースコードを見直して気づきました。</p><p>ミニバッチ学習させるときに、パディングの影響を最小限にするためにトレーニングデータを長さ順にソートしています。それはいいんですが、<b><u>入力と出力を独立にソートしていた</u></b>ため、英文と和文の対応がグチャグチャになっていることに。</p><p>対応がずれないように、英文の長さを基準にして「英文・和文のペアの配列」をソートして再学習させたところ、無事それっぽい翻訳結果が出ました。そのうちどこかで公開したり、基礎から始めるseq2seq的な記事を書いたりするかもしれません。</p><p>良い子のみんな、<span style="font-size: large;"><b>学習データの入力と出力は別々にソートしちゃダメだよ!</b></span>こんなことするのは他にいないと思うけどね!</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-71480495713551136522024-01-07T00:00:00.070+09:002024-01-21T15:35:50.057+09:00新年のごあいさつ<p> あけましておめでとうございます・・・と言える気分ではなく、新年早々大変なことが続いていますがみなさんお元気でしょうか。被災されたみなさんにお見舞いを申し上げます。</p><p>こちら(兵庫県)は地震の影響は全くなく、家族の中で揺れに気づいたのが自分だけという状況です。「またいつものザコ地震か・・・」と高をくくっていたところ、ニュースを見て驚きました。</p><p>姉の家族が金沢に住んでいるのですが、家具がひっくり返って汚部屋ならぬ汚家になったくらいで人的被害はなし、物流・電気・水道などのインフラも問題なしとのことで安心しました。</p><p>金沢以北の能登地方が大変ということで、一日も早い復興を願っています。今年もよろしくおねがいします。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-30244281074534241922023-12-31T00:00:00.046+09:002024-01-21T15:35:49.989+09:00ダイハツの第三者報告書にみるプロジェクトマネージメント<p> ダイハツがなんかえらいことになってますね。</p>
<p>そして、第三者報告書に関する𝕏のポストがちょっと話題になっています。</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="ja">
ダイハツの第三者報告書にあった下記8つの状況がブラック企業あるあるで、かつ身に覚えがありすぎて笑えんのよ<br><br>①試験は合格して当たり前。不合格となって開発、販売のスケジュールを変更するなどということはあり得ない…
</p>
— すん@製薬工場勤務 (@shin_gmp)
<a href="https://twitter.com/shin_gmp/status/1737386471320064226?ref_src=twsrc%5Etfw">December 20, 2023</a>
</blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<p>言いたいことはわかるし概ねこの人に同意なんですが、一点引っかかることが。</p>
<blockquote>
②日程に間に合わないと感じ手を挙げると「なぜ間に合わないのか」「どうしたら間に合わせられるのか」「今後どうするのか」の説明に追われる
</blockquote>
<p>これは、特に最初の2つについて説明するのは当たり前じゃね?と思うのですよ。</p><p><span></span></p><a href="https://blog.zelkova.cc/2023/12/daihatsu-project-management.html#more">続きを読む »</a>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-87455857273412643912023-12-24T00:00:00.089+09:002023-12-24T00:00:00.136+09:00Goでmain関数が終わった時の終了ステータスは?<p>
突然ですが問題です。Go言語で以下のコードを実行した時の終了ステータスは何だと思いますか?
</p>
<pre class="prettyprint lang-go">package main
import "fmt"
func main() {
// 地獄の言葉
fmt.Println("hell, word")
}
</pre>
<p>
「え、普通に考えたら0じゃないの?」そう思ったあなた。試しに実行してみてください。
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgTz4V1I1Fk_AxQv9WHd0qH8Phjf12KZ4TFOOGVoEYku5YZi6MvqS2ssJXsdRNDCjZnA00nHoNYdt3CJVlNFfkHlvfrkHjo09N8MgKDZI-DP2DHZuNtAu-rUQm53YAuroc_DAJyQa1NVql6GO1fq_4Y7-odxtr2ErJxwrTmeLhKuE1U8Y5-4UQD0TVP5s/s964/hell-word.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="686" data-original-width="964" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgTz4V1I1Fk_AxQv9WHd0qH8Phjf12KZ4TFOOGVoEYku5YZi6MvqS2ssJXsdRNDCjZnA00nHoNYdt3CJVlNFfkHlvfrkHjo09N8MgKDZI-DP2DHZuNtAu-rUQm53YAuroc_DAJyQa1NVql6GO1fq_4Y7-odxtr2ErJxwrTmeLhKuE1U8Y5-4UQD0TVP5s/w400-h285/hell-word.png" width="400"></a>
</div>
<p>はい、0が返ります。</p>
<p>・・・何が言いたいんやこいつは。</p>
<p><span></span></p>
<a href="https://blog.zelkova.cc/2023/12/exit-code-in-golang.html#more">続きを読む »</a>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-11013944552914229032023-12-17T00:00:00.028+09:002023-12-23T12:12:38.334+09:00StyleX<p> Metaが<a href="https://stylexjs.com/" rel="nofollow" target="_blank">StyleX</a>という新しいスタイリングシステムを公開したようです。すでにFacebookやらInstagramやらのMetaのサービスで使われているようですね。</p><p>最近知ったばかりなので詳しいところはまだ見ていないのですが、これを知った時に思ったことが2つ。</p><p>MetaってJSに<b>色々ぶっ込む</b>の好きだね。ReactがHTML in JSならStyleXはCSS in JSみたいな感じ。</p><p><b>イーロンマスクがつけそうな名前</b>だね。というか先に考えてたら絶対つけてたね。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-38268103790205521082023-12-10T00:00:00.094+09:002023-12-10T00:00:00.343+09:00Dockerのdebian-slimイメージでwait-forを使う時の注意<p> 恒例の<b><u>ドジなハマりシリーズ</u></b>です。相変わらずこういうハマり方をしています。</p><p>Dockerでウェブサービスとかを開発するとき、DBサーバーなどの依存サービスが立ち上がるまでアプリケーションサーバーを<a href="https://github.com/mrako/wait-for" rel="nofollow" target="_blank">wait-for</a>などで待機、という使い方をすることがあると思います。そこで無駄にハマったのでメモしておきます。
</p>
<p><span></span></p>
<a href="https://blog.zelkova.cc/2023/12/using-wait-for-on-debian-slim.html#more">続きを読む »</a>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-30554644104823912672023-12-03T00:00:00.117+09:002023-12-09T13:13:41.238+09:00TypeScriptでジョブキュー<p>
多分使い古されたネタですが、なんとなく思いついた&作ってみたくなったので気にせずに投下します。
</p>
<p>
「一度に実行するジョブの数は最大でN個、それ以上はキューイングしておき、実行中のジョブが終了したら順次実行」というアレです。
</p>
<p><span></span></p>
<a href="https://blog.zelkova.cc/2023/12/job.html#more">続きを読む »</a>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-33821970087617835742023-11-26T00:00:00.099+09:002023-12-09T13:13:41.284+09:00先週JSConf JP 2023がありましたよ<p> 先日告知した通り、去る11月19日にJSConf JPが開催されました。当日の様子は後ほど公開されると思うのでお楽しみに。</p><p>これまた先日告知した通り、トラックCの司会をしてきました。心配していたハプニングは特になかったとは思います。多分。</p><p>公開される動画を見た人は多分こう思うでしょう。</p><p style="text-align: center;"><span style="font-size: large;">「部屋暗すぎね?」</span></p><p>ハイその通りです。思ったより暗くしすぎました。これにはちょっと理由がありまして・・・</p><p>朝の最初のセッションはスライドがちょっと明るめで、部屋もちょっと明るめだったので皆さんが見づらい&配信でも映りにくそうだと判断して、照明を消してブラインドを下ろすなどしていました。陽が昇っていたうちは、まだ光量のバランスは取れていたと思います。多分。</p><p>ただ見落としていたのが季節。秋も終わりかけて冬に入ろうかという季節では<b><u>釣瓶落としもいいとこ</u></b>なわけです。昼を過ぎて夕方に差し掛かっても照明もブラインドもそのままだったので、気づいた時は「めっちゃ暗い・・・」という状況に。</p><p>要するに<b><u>完全にこっちのミス</u></b>です。去年はオンライン開催だったのでその辺を考える必要はなかったんですが、来年も司会をするなら照明についても考えないとダメですね。それではまた来年会いましょう。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-71660643040816361942023-11-19T00:00:00.118+09:002023-12-09T13:13:41.352+09:00React&muiで、ダイアログオープン時にフォーカスを移す方法<p>
かなり久しぶりに仕事でReactを使っています。最近はバックエンドとかモバイル通信網とか<b><u>プロトコルの仕様書を読んで自分で実装</u></b>したりとかどんどん低レイヤーな内容に寄っていたので、フロントエンドをやったのはかなり久しぶりな気がします。</p><p><a href="https://mui.com/" rel="nofollow" target="_blank">mui</a>でポチポチインターフェースを作っていたんですが、<a href="https://mui.com/material-ui/react-dialog/" rel="nofollow" target="_blank">ダイアログ</a>を開いた時に中のコンポーネントにフォーカスを当てる方法で詰まりました。</p>
<p>
あ、今日の内容はトラブルシューティングというより<b><u>React/mui弱者の戯言</u></b>だと思ってください。
</p>
<p><span></span></p>
<a href="https://blog.zelkova.cc/2023/11/dialog-autofocus-react-with-mui.html#more">続きを読む »</a>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-46469071330352057052023-11-12T00:00:00.053+09:002023-11-14T15:35:00.696+09:00来週JSConf JP 2023がありますよ<p>
来週11/19(日)に、毎年恒例の日本最大級のJavaScriptカンファレンス<a href="https://jsconf.jp/2023/" rel="nofollow" target="_blank">JSConf JP 2023</a>が開催されます。今年は久しぶりにオンライン開催です。</p><p><span></span></p><a href="https://blog.zelkova.cc/2023/11/jsconf-jp-2023-announcement.html#more">続きを読む »</a>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-49604946380950743532023-11-05T00:00:00.016+09:002023-11-14T15:35:00.746+09:00Trick or Treat!<p> お菓子くれなきゃ手品するぞ?</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="387" src="https://www.youtube.com/embed/rDOC1Gg4lLg" width="466" youtube-src-id="rDOC1Gg4lLg"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><p><br /></p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-74533147522490348762023-10-29T00:00:00.008+09:002023-11-04T19:00:28.526+09:00ImageMagickで、画像フォーマット変換の結果を標準出力に出す方法<p>
<a href="https://imagemagick.org/" rel="nofollow" target="_blank">ImageMagick</a>で画像フォーマットを変換するとき、普通は出力先のファイル名を指定すればその拡張子から自動的に適切なものにしてくれるんですが、標準出力に出すにはどうすればいいんだろうと気になったので調べてみました。
</p>
<pre class="prettyprint lang-bash">magick input.jpg png:-</pre>
<p>
このように<code>変換先フォーマット:-</code>を指定すれば、指定のフォーマットで標準出力に出してくれるそうです。
</p>
<p>これでパイプ処理にも使えますね!</p>
Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-89934620330374825612023-10-22T00:00:00.020+09:002023-10-22T00:00:00.136+09:00ITエンジニアの慣用句<p> <a href="https://nlab.itmedia.co.jp/nl/articles/2310/11/news119.html" rel="nofollow" target="_blank">AIに考えさせた「メモリを食う」「サーバーが落ちる」の絵がそのまんますぎて笑い呼ぶ</a></p><p>こんな記事を見て思わずクスッと笑ってしまったので、こちらも負けずに<a href="https://www.bing.com/chat" rel="nofollow" target="_blank">Bing Chat</a>に<a href="https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9#%E7%B5%82%E4%BA%86%E7%8A%B6%E6%85%8B" rel="nofollow" target="_blank">ゾンビプロセス</a>の絵を描いてもらいました。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmWqK1kUdRTt_mzEMRS-biGpKgU3AFOMZzLUPyayItBFS08g5fWdlllQqdwMTVodfoNgvW7ID94LnBOctg89IJPm8YpzJ1rueMJFvNenFR3A8isAbNv2ePr7fB9cExoKcq9nC4_NbJq6O9a7apNyqDf9uubMHcicdIAQZQEdhnFqrRD752jr6qWfYI2Ys/s1040/zombie-process.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1040" data-original-width="954" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmWqK1kUdRTt_mzEMRS-biGpKgU3AFOMZzLUPyayItBFS08g5fWdlllQqdwMTVodfoNgvW7ID94LnBOctg89IJPm8YpzJ1rueMJFvNenFR3A8isAbNv2ePr7fB9cExoKcq9nC4_NbJq6O9a7apNyqDf9uubMHcicdIAQZQEdhnFqrRD752jr6qWfYI2Ys/w367-h400/zombie-process.png" width="367" /></a></div><p>ゾンビというより<b>マドハンド</b>ですねこれ🤔</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-87430988290128074092023-10-15T00:00:00.074+09:002023-10-21T16:29:48.313+09:00Install SSH Key v2.6.1を公開しました<p>
<a href="https://github.com/marketplace/actions/install-ssh-key" rel="nofollow" target="_blank">Install SSH Key</a> <a href="https://github.com/shimataro/ssh-key-action/releases/tag/v2.5.0" rel="nofollow" target="_blank">v2.5.0</a>でアクション終了時に .ssh
ディレクトリーを削除する機能を追加したんですが、その数日後に「<a href="https://github.com/shimataro/ssh-key-action/issues/231" rel="nofollow" target="_blank">あらかじめ<code>.ssh</code>がセットアップされているセルフホストランナーでも問答無用で削除するなんてひどいや!</a>」という報告がありました。いやその通り。<code>.ssh</code>自体が存在していないマシン上で動かすことしか想定していませんでした。ごめんなさい。</p>
<p>
というわけで、その報告から<b>10ヶ月後</b>の先日、v2.6.0でついに対応しました(おせーよ)
</p>
<p>
今回の変更で、アクション終了後にInstall SSH
Keyを実行する前の状態に戻るようになりました。内部処理は以下のとおりです。
</p>
<p></p>
<ul style="text-align: left;">
<li>
最初に<code>.ssh</code>ディレクトリーが存在しなかった場合は、終了後に<code>.ssh</code>ディレクトリーを削除(これまでと同じ)
</li>
<li>
<code>.ssh</code>ディレクトリーが存在していた場合は、各種ファイルを作成するときに同名のファイルが存在していればバックアップを別名でコピー、終了時に戻す
</li>
</ul>
<p></p>
<p>
<code>.ssh</code>ディレクトリーの中身自体をまるっと別名でコピーする方法も考えたのですが、ファイルの移動やコピーが最小限ですむ今回の方法を採用しました。とはいえ、まるっと待避→まるっと復元の方がリスクも少ないので、もしかしたら今後こちらの方法に変更するかもしれません。
</p>
<p>
そして<b>リリースの翌日</b>にちょっとしたバグが見つかったので、急遽<a href="https://github.com/shimataro/ssh-key-action/releases/tag/v2.6.1" rel="nofollow" target="_blank">v2.6.1をリリースしました</a>。このバグが発生する状況は限定的で、バグ自体も致命的ではないとはいえ、このバグはまるっとコピーしていれば発生しなかったものです。。。
</p>
Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-13182896554192016772023-10-08T00:00:00.012+09:002023-10-08T15:11:43.937+09:00ローカルやと 8080 でちゃんと動くのに Docker にのせたら8080でリッスンしてないのなんで<p>知り合いの子がこんなことを𝕏にポストしていました。</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="ja">
ローカルやと 8080 でちゃんと動くのに Docker
にのせたら8080でリッスンしてないのなんで
</p>
— OJI (@OldBigBuddha)
<a href="https://twitter.com/OldBigBuddha/status/1705175394151014813?ref_src=twsrc%5Etfw">September 22, 2023</a>
</blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<p>
ローカルコンピューター内で作ってみたサーバーをDockerイメージ化すると、ちゃんとポートもマッピングしているのに外からアクセスできない。うん、Dockerのあるあるですね。
</p>
<p>答えはコレ。</p>
<blockquote class="twitter-tweet"><p dir="ltr" lang="ja">8080で動いてるプログラム、listenするhostが127.0.0.1やlocalhostだったりしませんか?<br />0.0.0.0とかにすると動くかもです。</p>— seigo2016 (@seigo2018) <a href="https://twitter.com/seigo2018/status/1705182755238420676?ref_src=twsrc%5Etfw">September 22, 2023</a></blockquote> <script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<p>あーそうだそうだ。しょっちゅう忘れる。度々ハマるくせに、そもそもDockerイメージの設定ファイルを作る頻度自体がそこまで高くないので、次回作るときまでに諸々忘れているアレです。覚書としてここに残しておこう。</p><p>ちなみに<a href="https://chat.openai.com/share/14575de2-614f-4d98-af6f-1fd9699c61a4" rel="nofollow" target="_blank">ChatGPTに聞いてみた</a>ところ</p><p></p><ol style="text-align: left;"><li>ポートは正しくマッピングされているか?</li><li>ファイヤーウォールなどでブロックされていないか?</li><li>アプリケーション側で該当のポートを正しくListenしているか?</li><li>ポートが別のアプリケーションと競合していないか?</li></ol><p></p>
<p>などをチャックするように言われましたが、0.0.0.0のことは指摘してくれませんでした。。。</p>
Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0tag:blogger.com,1999:blog-8061081731102616145.post-7293564979040510192023-10-01T00:00:00.104+09:002023-10-01T22:53:03.585+09:00OpenTofu<p> <a href="https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%A9_(%E9%A3%B2%E6%96%99)" rel="nofollow" target="_blank">オープンコーラ</a>のような、レシピがOSSになっているやつではありません。</p><p>簡単にまとめると</p><p></p><ol style="text-align: left;"><li><a href="https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license" rel="nofollow" target="_blank">Terraformのライセンスが変更された</a></li><li>ライセンス変更前のTerraformからOSS版のフォーク(OpenTF)が誕生</li><li>OpenTFだと商標を侵害する可能性があるので新しい<a href="https://github.com/opentofu/opentofu/issues/296" rel="nofollow" target="_blank">名前を募集</a></li><li><a href="https://opentofu.org/" rel="nofollow" target="_blank">OpenTofuに決定</a></li></ol><p></p><p>Terraformとは何か?については、今回の主題ではないので説明は省略します。知らなくてもこの記事の理解に支障はありません。</p><p>元々このTerraformはOSS(MPL)として提供されていたのですが、<a href="https://github.com/hashicorp/terraform/blob/v1.6/LICENSE" rel="nofollow" target="_blank">v1.6からライセンスが変更されました</a>。</p><p><a href="https://gigazine.net/news/20230908-opentf/" rel="nofollow" target="_blank">こちら</a>によると、商用利用が一部制限され、Terraform作成元のHashiCorpと競合するような使い方をするとこの制限に引っかかりそうです。単にインフラ整備のために使うなら問題なさそうですね。</p><p>とはいえ、それでも今後のリスクがあるので、ライセンス変更前のバージョンからフォークしてOpenTFという新しいOSSが誕生しました。まあ最近よくある流れです。</p><p>ただ、このOpenTFという名前もHashiCorpの商標の侵害の可能性があるねということで新たな名前を募集したところ、OpenTofuが支持を集めたようです。<a href="https://opentofu.org/" rel="nofollow" target="_blank">OpenTofu</a>のロゴ画像は一部黄色いので、どちらかというと揚げ豆腐なんでしょうか。</p><p><a href="https://gigazine.net/news/20230921-opentofu-linux-foundation-project/" rel="nofollow" target="_blank">こちら</a>によると、OpenTofuのいいところは</p><p></p><ul style="text-align: left;"><li>元の単語と意味的に離れていて訴訟の心配が少ないこと</li><li>単語・発音が短いこと</li><li>「.tf」という拡張子の互換性を維持できること</li></ul><p></p><p>だそうです。なるほど確かに。</p><p>OSS企業がプロダクトのライセンスを商用利用を制限する方向に変更するのはここ数年よく見るパターンですが、このOpenTofuは名前に恥じない<b><u>健康的なプロダクト</u></b>になって欲しいものです。</p><p>ところで、さくらインターネットでは<a href="https://github.com/sakura-cooking/takoyaki" rel="nofollow" target="_blank">たこ焼きのレシピをオープンソースとして公開しています</a>。。。と思ったらライセンスが明記されていなかった。</p>Taro Odashimahttp://www.blogger.com/profile/09011079903837815123noreply@blogger.com0