Home Web Document Opening the Software Toolbox 「ソフトウェアの道具箱」はUNIXの考え方の1つを簡潔に説明している SatoKen @kenicode 10 Jul, 2024 04:55 +00:00 Last edited 10 Jul, 2024 04:56 +00:00 この「ソフトウェアの道具箱」は、Linux等へも引き継がれ現在でも大いに活用できるUNIXの考え方を、簡潔に紹介してくれていると思います。 この考え方の要約をこの文書から引用すると以下のようになります。 個々のプログラムは、一つの仕事をきちんとやってのければよい。それ以上でもそれ以下でもない。 プログラムを適切な配管工事で組み合わせると、全体が部分の総和以上になる結果が生じる。 作者が想像もしなかったようなプログラムの新しい使用法が見つかることもある。 プログラムは決して余計なヘッダや追加情報を出力すべきではない。 そうしたものもパイプラインの先へ送られてしまうかもしれないからだ。 骨の折れる部分は、他の奴にやらせろ。 自分の道具箱をよく知れ! 個々のプログラムを適切に使え。適切なツールがなかったら、それを作れ。 UNIX系のOSを使うとき、特にパイプを使ってコマンドを組み立てるときに知っていると良い知識であると同時に、UNIX系のOSで動くプログラムを作るときにも、パイプを使って他のコマンド(プログラム)と連携できるようにすることが時に強力な選択肢であることは頭に入れておくと良いと思います。 何しろ短い文章ですので、初めてこの考えに触れるときや、この考えを再確認したいときに、サクッと自分で読んだり、他人に紹介できたり、便利な文章だと思います。
Home Software Libraries Ruby meta-tags meta-tags側のtruncateでは、スペース文字のところで切り詰めが行われます @wakairo 05 Jul, 2024 11:26 +00:00 Last edited 05 Jul, 2024 11:27 +00:00 meta-tagsのv2.21.0で'truncate_on_natural_separator'の設定が追加されました。この設定を利用することで、スペース文字のところでの切り詰めを回避できるようになりました。このことを上のコメントに反映しました。
Home Software Windows UniGetUI (formerly WingetUI) WingetUIはv3.1からUniGetUIに名称が変更されました @wakairo 03 Jul, 2024 22:36 +00:00 winget以外のパッケージ・マネジャーも多数サポートするようになってきたため、WingetUIをUniGetUIにちかぢか名称変更しますというアナウンスメントが2024/03/13に出ていました。 2024/07/03にバージョン3.1がリリースされ、リリース名が初めてUniGetUIになりましたので、名称変更が完了したものと思われます。 なお、バージョン3.0のリリースではWingetUIという名称でした。
Home Software Libraries Ruby activerecord activerecordでは、firstを使った方が実装とSQLが揃って可読性が上がる Takuma @takuma_tech 03 Jul, 2024 05:22 +00:00 こちらの記事によると、activerecordでlastを使った場合、指定したorderを逆にして"LIMIT 1"とするSQLが発行されるそうです。 一方で、firstを使った場合、指定したorderはそのままで"LIMIT 1"とするSQLとなるので、railsのコードとSQLの対応関係が分かりやすくなります。 したがって、lastよりもfirstを使った方が実装とSQLが揃って可読性が上がるということがこの記事で主張されていました。 ご参考まで。
Home Software Windows UniGetUI (formerly WingetUI) WingetUIにおいてVCRedistのアップデート通知が繰り返される問題とその解決策 @wakairo 25 Jun, 2024 05:09 +00:00 問題 WingetUIにおいて、Visual C++ 再頒布可能パッケージ(Microsoft.VCRedist.2015+.x64)がアップデート可能であると通知されるので、WingetUIからアップデート操作をして成功と表示されたにもかかわらず、すぐにまたアップデートが可能であると通知されることが繰り返されました。 どうやら、アップデート成功という表示は嘘のようで、実際にはWingetUIからこのVCRedistのアップデートには成功していなかった模様です。 解決策 コマンドプロンプトから以下のコマンドを実行したところ、アップデート通知が繰り返されることはなくなりました。 winget upgrade Microsoft.VCRedist.2015+.x64 つまり、WingetUIからアップデートが上手く行かないときは直接wingetでアップデートすると問題が解決することがあるようです。 参考 本件と関係するかは分かりませんが、以前のコメントにあるように、かつてWingetUIのインストールにおいて"Microsoft.VCRedist.2015+.x64"に関連するエラーが存在していました。
Home Web Service ChatGPT LLMからJSON形式の出力を安定的に得るノウハウ @wakairo 11 Jun, 2024 11:26 +00:00 Zodスキーマでプロンプト生成を行い構造化データを自由自在に扱えて、LLMプロダクト開発が圧倒的に効率化した話 「TypeScriptをデータ出力例として与えると、かなり忠実に従ってくれるようになる」などのノウハウが示されている。
Home Web Service ChatGPT LLMからJSON形式の出力を安定的に得るノウハウ @wakairo 11 Jun, 2024 11:25 +00:00 ChatGPT(OpenAI)のAPIにはJSONモードがありますが、狙ったとおりの安定的なJSONを得られない場合もあるようです。また、他のLLMではJSONモードがない場合もあるようです。 このTopicでは、LLMから安定したJSONを得るためのノウハウやLLMの出力したJSONが問題ないかチェックするためのノウハウを扱います。
Home Software Programming languages Python Pythonライブラリの作成に関する公式情報 SatoKen @kenicode 28 May, 2024 10:43 +00:00 pyproject.tomlの[build-system]の指定が、サンプルプロジェクトではsetuptoolsである一方、チュートリアルではデフォルト扱いがhatchlingになっていて、両者で違いがあって興味深いですね。 公式(PyPA)としては、setuptoolsがまだまだ現役であることを認めつつ、今後はhatchlingを推していきたいということなのかな?
Home Software Programming languages Python Pythonライブラリの作成に関する公式情報 @wakairo 25 May, 2024 11:19 +00:00 Last edited 25 May, 2024 11:24 +00:00 なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。 それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのがsetup.pyではなくpyproject.tomlなのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.tomlファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.pyを設定ファイルの一部として用いる場合であってもpyproject.tomlは配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。 どうやら、Pythonパッケージにはpyproject.tomlを用意すべし、pyproject.tomlを起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.pyを直接実行するやり方はlegacy、つまり、廃止予定とのことですし。
Home Software Programming languages Python Pythonライブラリの作成に関する公式情報 Takuma @takuma_tech 23 May, 2024 01:24 +00:00 Pythonのライブラリを自作するときに、フォルダ構成や設定ファイルの書き方について知りたくなることがあります。ライブラリを公開するかどうかやどの程度きっちり作るかなど状況は様々だと思いますが、ソフトウェアの規模が大きいときやあちこちから呼び出す関数を整備するときなどに、ライブラリやライブラリに準じるものを作成することはよくあることだと思います。そういうときにどういう作り方が行儀の良いやり方なのかを探していて見つけた情報が以下のものです。 Python公式サイトのパッケージングに関するチュートリアル https://packaging.python.org/ja/latest/tutorials/packaging-projects/ Pythonの公式サイトである「python.org」に置いてある文書ですので、信頼できる情報なのだと思います。 PyPAのサンプルプロジェクト https://github.com/pypa/sampleproject Pythonでのパッケージングに関するとりまとめを行っている組織であるPyPAが出しているサンプルですので、信頼できるのではないかと思います。
「ソフトウェアの道具箱」はUNIXの考え方の1つを簡潔に説明している
この「ソフトウェアの道具箱」は、Linux等へも引き継がれ現在でも大いに活用できるUNIXの考え方を、簡潔に紹介してくれていると思います。
この考え方の要約をこの文書から引用すると以下のようになります。
UNIX系のOSを使うとき、特にパイプを使ってコマンドを組み立てるときに知っていると良い知識であると同時に、UNIX系のOSで動くプログラムを作るときにも、パイプを使って他のコマンド(プログラム)と連携できるようにすることが時に強力な選択肢であることは頭に入れておくと良いと思います。
何しろ短い文章ですので、初めてこの考えに触れるときや、この考えを再確認したいときに、サクッと自分で読んだり、他人に紹介できたり、便利な文章だと思います。
meta-tags側のtruncateでは、スペース文字のところで切り詰めが行われます
meta-tagsのv2.21.0で'truncate_on_natural_separator'の設定が追加されました。この設定を利用することで、スペース文字のところでの切り詰めを回避できるようになりました。このことを上のコメントに反映しました。
WingetUIはv3.1からUniGetUIに名称が変更されました
winget以外のパッケージ・マネジャーも多数サポートするようになってきたため、WingetUIをUniGetUIにちかぢか名称変更しますというアナウンスメントが2024/03/13に出ていました。
2024/07/03にバージョン3.1がリリースされ、リリース名が初めてUniGetUIになりましたので、名称変更が完了したものと思われます。
なお、バージョン3.0のリリースではWingetUIという名称でした。
activerecordでは、firstを使った方が実装とSQLが揃って可読性が上がる
こちらの記事によると、activerecordでlastを使った場合、指定したorderを逆にして"LIMIT 1"とするSQLが発行されるそうです。
一方で、firstを使った場合、指定したorderはそのままで"LIMIT 1"とするSQLとなるので、railsのコードとSQLの対応関係が分かりやすくなります。
したがって、lastよりもfirstを使った方が実装とSQLが揃って可読性が上がるということがこの記事で主張されていました。 ご参考まで。
WingetUIにおいてVCRedistのアップデート通知が繰り返される問題とその解決策
問題
WingetUIにおいて、Visual C++ 再頒布可能パッケージ(Microsoft.VCRedist.2015+.x64)がアップデート可能であると通知されるので、WingetUIからアップデート操作をして成功と表示されたにもかかわらず、すぐにまたアップデートが可能であると通知されることが繰り返されました。
どうやら、アップデート成功という表示は嘘のようで、実際にはWingetUIからこのVCRedistのアップデートには成功していなかった模様です。
解決策
コマンドプロンプトから以下のコマンドを実行したところ、アップデート通知が繰り返されることはなくなりました。
つまり、WingetUIからアップデートが上手く行かないときは直接wingetでアップデートすると問題が解決することがあるようです。
参考
本件と関係するかは分かりませんが、以前のコメントにあるように、かつてWingetUIのインストールにおいて"Microsoft.VCRedist.2015+.x64"に関連するエラーが存在していました。
LLMからJSON形式の出力を安定的に得るノウハウ
Zodスキーマでプロンプト生成を行い構造化データを自由自在に扱えて、LLMプロダクト開発が圧倒的に効率化した話
「TypeScriptをデータ出力例として与えると、かなり忠実に従ってくれるようになる」などのノウハウが示されている。
LLMからJSON形式の出力を安定的に得るノウハウ
ChatGPT(OpenAI)のAPIにはJSONモードがありますが、狙ったとおりの安定的なJSONを得られない場合もあるようです。また、他のLLMではJSONモードがない場合もあるようです。
このTopicでは、LLMから安定したJSONを得るためのノウハウやLLMの出力したJSONが問題ないかチェックするためのノウハウを扱います。
Pythonライブラリの作成に関する公式情報
pyproject.toml
の[build-system]
の指定が、サンプルプロジェクトではsetuptools
である一方、チュートリアルではデフォルト扱いがhatchling
になっていて、両者で違いがあって興味深いですね。 公式(PyPA)としては、setuptools
がまだまだ現役であることを認めつつ、今後はhatchling
を推していきたいということなのかな?Pythonライブラリの作成に関する公式情報
なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。
それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのが
setup.py
ではなくpyproject.toml
なのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.toml
ファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.py
を設定ファイルの一部として用いる場合であってもpyproject.toml
は配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。どうやら、Pythonパッケージには
pyproject.toml
を用意すべし、pyproject.toml
を起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.py
を直接実行するやり方はlegacy、つまり、廃止予定とのことですし。Pythonライブラリの作成に関する公式情報
Pythonのライブラリを自作するときに、フォルダ構成や設定ファイルの書き方について知りたくなることがあります。ライブラリを公開するかどうかやどの程度きっちり作るかなど状況は様々だと思いますが、ソフトウェアの規模が大きいときやあちこちから呼び出す関数を整備するときなどに、ライブラリやライブラリに準じるものを作成することはよくあることだと思います。そういうときにどういう作り方が行儀の良いやり方なのかを探していて見つけた情報が以下のものです。
Python公式サイトのパッケージングに関するチュートリアル
https://packaging.python.org/ja/latest/tutorials/packaging-projects/
Pythonの公式サイトである「python.org」に置いてある文書ですので、信頼できる情報なのだと思います。
PyPAのサンプルプロジェクト
https://github.com/pypa/sampleproject
Pythonでのパッケージングに関するとりまとめを行っている組織であるPyPAが出しているサンプルですので、信頼できるのではないかと思います。