2023年4月16日日曜日

データ圧縮のパイオニア?

 データ圧縮のパイオニアであるジェイコブ・ジヴ氏の功績とその半生とは?

2年前の記事に何を今更という感じですが、偶然たどり着きました。昔(高校生くらいの頃かな?)データ圧縮について色々調べたことがあり、記事の内容についてちょっと気になったので今更ですがいくつかコメントします。

どっかで似たようなことを書いてる人もいそうですが。

2023年4月9日日曜日

Linuxでユーザーのホームディレクトリーをあとから作る方法

 ちょっとドジ踏んでしまったので記録を残しておきます。

Linuxで新しいユーザーを作るときはuseraddコマンドを使うじゃないですか。そのときに-mを指定すればホームディレクトリーを作ってくれるんですが、つけるのを忘れてコマンドを実行してしまいました。

単純に/home以下にmkdirしてもいいんですが、/etc/skelのコピーとか他にやることがあるかもしれないので、作成はシステムに任せたい。。。

やっぱり他にもこういうドジっ子はいるようで、ちゃんと用意されていました。mkhomedir_helperコマンドを使えば後から作れそうです。

「そうです」と書いたのは、このコマンドの存在に気づく前にユーザーを削除→再作成したので試してないからです。。。

2023年4月2日日曜日

レゴのGPL違反の件

 レゴがオープンソースのライブラリをコピペしてGPL違反をしていたことが判明

正確にはレゴじゃなくてレゴの子会社だということはさておき、ざっと読んだ感想としては「よくあるGPLの勘違いかなぁ?」です。

当該ライブラリはGPL(GNU General Public License)の元で公開されているものであるため、ソースコードが非公開の製品に使用することはライセンス違反であると指摘されています。

GPLは「製品を手に入れた人からソースコードを見せろと言われても拒否できない」というものであって、製品自体にソースコードをつける必要はありません。つまり「ライブラリをコピペして作った製品にソースコードをつけずに販売した」だけではGPL違反とは言えません。

GPL違反と断言するには、たとえば

  • 製品を購入した人からのソースコードの公開要請を拒否した
  • 製品自体がGPL以外のライセンスで提供されている(インストール時に表示されるライセンスがGPLではない等)
  • GPL非互換のソースコード(ライブラリなど)と一緒にビルドされている

などが必要ですが、記事を見る限りではそういった記述はありません。でもまあどれかに当てはまってそうですけど。特に2番目。

2023年3月26日日曜日

Install SSH Key v2.5.1を公開しました

 つい先日、github.comのRSA公開鍵を変更したというニュースが飛び込んできました。記事によると、秘密鍵を誤って公開リポジトリーに置いてしまったため、なりすましや中間者攻撃を防ぐために新しい鍵に置き換えたとのこと。ひえっ。

わざとじゃなくて操作ミスだとは思いますけど、何の操作をミスったんだろう。公開鍵と間違えたのかな。とりあえず、外部から侵入されたわけではないということで安心しました。世界中の開発インフラであるGitHubでもこういう初歩的なやらかしがあるんですね。

というわけで、みんな大好きInstall SSH Keyでもgithub.comの公開鍵を使っているので新しいものに置き換えました。変更部分はそれだけです。

2023年3月19日日曜日

AsyncLocalStorage + multerの落とし穴

 先日Async HooksとかAsyncLocalStorageの話をしましたが、ちょっとハマったところがあるのでメモ。

現象としては、Expressのファイルアップロードミドルウェアであるmulterを経由したときにAsyncLocalStorageが使えなくなる(getStore()がundefinedを返す)というものです。

この原因にたどり着くまでに切り分け等いろいろ苦労したんですが、まあそれは置いといて。

バグなのか仕様なのかよくわかっていませんが、どうもmulterを経由すると非同期コンテキスト(コールバックチェーンの親子関係)が切れてしまうようです。

解決方法は、ここにあるように非同期コンテキスト化するラッパー関数を作って、multerをラップしてやるとうまくいきました。

2023年3月12日日曜日

ChatGPTに回文を作ってもらった

 先日ChatGPTネタで記事を書きました。そのとき「ブログのネタに困ったらChatGPTに頼るかな」と書いたのですが、早速ネタに困ったので頼ってみました。

2023年3月5日日曜日

Node.jsのSingle Executable Application

 Node.js v19.7から、Node.jsファイルを単一の実行バイナリにできるようになったそうです。ElectronみたいにNode.js本体も同梱される感じなんでしょうか。

ただし現状では制約があり、OSはWindows/macOS/Linux、CPUはAMD64、そして単一のファイルのみとのこと。

単一のファイルのみということは、当面はnccとかのバンドラーで1ファイルにまとめてからバイナリ化という使い方を想定しているんでしょうかね。