{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/category/linux/debian-linux/sid/feed/json/ -- and add it your reader.", "next_url": "https://matoken.org/blog/category/linux/debian-linux/sid/feed/json/?paged=2", "home_page_url": "https://matoken.org/blog/category/linux/debian-linux/sid/", "feed_url": "https://matoken.org/blog/category/linux/debian-linux/sid/feed/json/", "language": "ja", "title": "sid – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "https://matoken.org/blog/?p=5486", "url": "https://matoken.org/blog/2026/05/26/virsh-console-console-connection-failed/", "title": "virsh console\u3067\u4eee\u60f3\u30de\u30b7\u30f3\u306b\u63a5\u7d9a\u3067\u304d\u306a\u3044", "content_html": "
\n
\n
\n
\n\"virt\n
\n
\n
\n

virsh console\u30b3\u30de\u30f3\u30c9\u3067vm\u306b\u7e4b\u304c\u3089\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ virsh console openbsd7.9\nerror: operation failed: Active console session exists for this domain
\n
\n
\n

\n
\n

\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u304b\u3089\u691c\u7d22\u3057\u3066daemon\u3092\u518d\u8d77\u52d5\u3057\u305f\u308a\uff0chost\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u99c4\u76ee\u3067\u3059\uff0e

\n
\n\n
\n

virsh\u306eman\u3092\u898b\u308b\u3068\u3053\u3093\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\uff0e

\n
\n
\n
\n
\n
\n
Option\u2010ally the --force flag may be specified, requesting to disconnect any existing sessions, such as in a case of a broken connection.
\n
\n
\n
\n
\n— `man 1 virsh`\n
\n
\n
\n

--force \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u3092\u4ed8\u3051\u308b\u3068\u7e4b\u304c\u308a\uff0c\u4e00\u5ea6\u7e4b\u304c\u308b\u3068 --force \u7121\u3057\u3067\u3082\u7e4b\u304c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ virsh console openbsd7.9 --force\nConnected to domain 'openbsd7.9'\nEscape character is ^] (Ctrl + ])\n^]\n$ virsh console openbsd7.9\nConnected to domain 'openbsd7.9'\nEscape character is ^] (Ctrl + ])\n\nfugu$ pfetch\n      _____       matoken@fugu.matoken.org\n    \\-     -/     os     OpenBSD 7.9\n \\_/         \\    host   pc-i440fx-9.1\n |        O O |   uptime 1h 56m\n |_  <   )  3 )   pkgs   117\n / \\         /    memory 169M / 989M\n    /-_____-\\\n\nfugu$
\n
\n
\n
\n

\u6050\u3089\u304f\u96fb\u6c60\u5207\u308c\u3067\u30db\u30b9\u30c8\u306eOS\u304c\u5f37\u5236\u7d42\u4e86\u3057\u305f\u3068\u304d\u306b\u65e2\u5b58\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u60c5\u5831\u304c\u6b8b\u3063\u3066\u3057\u307e\u3044\u4eca\u56de\u306e\u3088\u3046\u306a\u72b6\u614b\u306b\u306a\u3063\u305f\u306e\u3060\u3068\u601d\u3044\u307e\u3059\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W libvirt-clients libvirt-daemon\nlibvirt-clients 12.3.0-1\nlibvirt-daemon  12.3.0-1\n$ uname -rm\n7.0.9+deb14-amd64 x86_64\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n", "content_text": "virsh console\u30b3\u30de\u30f3\u30c9\u3067vm\u306b\u7e4b\u304c\u3089\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n$ virsh console openbsd7.9\nerror: operation failed: Active console session exists for this domain\n\n\n\n\n\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u304b\u3089\u691c\u7d22\u3057\u3066daemon\u3092\u518d\u8d77\u52d5\u3057\u305f\u308a\uff0chost\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u99c4\u76ee\u3067\u3059\uff0e\n\n\n\n\nerror: \u64cd\u4f5c\u306f\u5931\u6557\u3057\u307e\u3057\u305f: \u4f7f\u7528\u4e2d\u306e\u30b3\u30f3\u30bd\u30fc\u30eb\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u3053\u306e\u30c9\u30e1\u30a4\u30f3\u306b\u5bfe\u3057\u3066\u5b58\u5728\u3057\u307e\u3059 – \u9593\u9055\u3044\u3060\u3089\u3051\u306e\u5099\u5fd8\u9332\n\n\n\n\nvirsh\u306eman\u3092\u898b\u308b\u3068\u3053\u3093\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\uff0e\n\n\n\n\n\nOption\u2010ally the --force flag may be specified, requesting to disconnect any existing sessions, such as in a case of a broken connection.\n\n\n\n\n— `man 1 virsh`\n\n\n\n--force \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u3092\u4ed8\u3051\u308b\u3068\u7e4b\u304c\u308a\uff0c\u4e00\u5ea6\u7e4b\u304c\u308b\u3068 --force \u7121\u3057\u3067\u3082\u7e4b\u304c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n$ virsh console openbsd7.9 --force\nConnected to domain 'openbsd7.9'\nEscape character is ^] (Ctrl + ])\n^]\n$ virsh console openbsd7.9\nConnected to domain 'openbsd7.9'\nEscape character is ^] (Ctrl + ])\n\nfugu$ pfetch\n _____ matoken@fugu.matoken.org\n \\- -/ os OpenBSD 7.9\n \\_/ \\ host pc-i440fx-9.1\n | O O | uptime 1h 56m\n |_ < ) 3 ) pkgs 117\n / \\ / memory 169M / 989M\n /-_____-\\\n\nfugu$\n\n\n\n\u6050\u3089\u304f\u96fb\u6c60\u5207\u308c\u3067\u30db\u30b9\u30c8\u306eOS\u304c\u5f37\u5236\u7d42\u4e86\u3057\u305f\u3068\u304d\u306b\u65e2\u5b58\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u60c5\u5831\u304c\u6b8b\u3063\u3066\u3057\u307e\u3044\u4eca\u56de\u306e\u3088\u3046\u306a\u72b6\u614b\u306b\u306a\u3063\u305f\u306e\u3060\u3068\u601d\u3044\u307e\u3059\uff0e\n\n\n\u74b0\u5883\n\n$ dpkg-query -W libvirt-clients libvirt-daemon\nlibvirt-clients 12.3.0-1\nlibvirt-daemon 12.3.0-1\n$ uname -rm\n7.0.9+deb14-amd64 x86_64\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2026-05-26T07:16:34+09:00", "date_modified": "2026-05-26T07:18:04+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "virsh", "virt-manager", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5455", "url": "https://matoken.org/blog/2026/05/06/enable-hdd-trash-can/", "title": "\u5916\u4ed8\u3051HDD\u306e\u30b4\u30df\u7bb1\u3092\u6709\u52b9\u306b\u3059\u308b", "content_html": "
\n
\n

\n
\n

\u732b\u304c\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u4e0a\u3092\u6b69\u304f\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\uff0e\u3044\u3064\u306e\u9593\u306b\u304bCapsLock\u3068\u304bNumLock\u3068\u304b\u304c\u639b\u304b\u3063\u3066\u3057\u307e\u3063\u305f\u308a\u3057\u307e\u3059\uff0e
\n\u305d\u306e\u7a0b\u5ea6\u306a\u3089\u3044\u3044\u306e\u3067\u3059\u304c\uff0c\u5148\u65e5\u30d5\u30a1\u30a4\u30e9\u30fc\u304c\u958b\u3044\u305f\u72b6\u614b\u3067Del key \u3092\u62bc\u3055\u308c\u30d5\u30a1\u30a4\u30eb\u304c\u6d88\u3048\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u5916\u4ed8HDD \u3067\u30b4\u30df\u7bb1\u3082\u8a2d\u5b9a\u3057\u3066\u3044\u306a\u304b\u3063\u305f\u306e\u3067\u30b4\u30df\u7bb1\u304b\u3089\u306e\u5fa9\u6d3b\u3082\u3067\u304d\u307e\u305b\u3093\uff0e

\n
\n
\n

\u5916\u4ed8\u3051HDD\u306e\u30b4\u30df\u7bb1\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

freedesktop.org\u306b\u6587\u7ae0\u304c\u3042\u308a\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
\n

It MAY also choose to provide trashing in the \u201ctop directories\u201d of some or all mounted resources. This trashing is done in two ways, described below as (1) and (2).
\n(1) An administrator can create an $topdir/.Trash directory. The permissions on this directories should permit all users who can trash files at all to write in it.; and the \u201csticky bit\u201d in the permissions must be set, if the file system supports it.
\n :
\n(2) If an $topdir/.Trash directory is absent, an $topdir/.Trash-$uid directory is to be used as the user\u2019s trash directory for this device/partition. $uid is the user\u2019s numeric identifier.
\n :

\n
\n
\n\n
\n
\n

\u81ea\u5206\u3057\u304b\u4f7f\u308f\u306a\u3044\u306e\u3067\uff0cHDD\u306eroot\u306b\uff0c.Trash-$uid \u3068\u3044\u3046\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u3063\u3066\u304a\u3051\u3070\u826f\u3055\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ cd /run/media/matoken/6f12b6e0-e167-4afc-b30b-ad30c2c9f446 (1)\n$ sudo install -d -m 700 -o \"$(id -u)\" -g \"$(id -g)\" ./.Trash-\"$(id -u)\" (2)\n$ ls -A | grep .Trash-\n.Trash-1000\n$ id --user\n1000
\n
\n
\n
\n
    \n
  1. \n

    \u5bfe\u8c61\u306eHDD\u306etop dir\u306b\u79fb\u52d5

    \n
  2. \n
  3. \n

    \u81ea\u5206\u7528\u30b4\u30df\u7bb1\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210

    \n
  4. \n
\n
\n
\n

\u3053\u306e\u72b6\u614b\u3067\u30d5\u30a1\u30a4\u30e9\u30fc(\u4eca\u56de\u306fPCManFM-Qt)\u3067HDD\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3059\u308b\u3068\u30b4\u30df\u7bb1\u306b\u79fb\u52d5\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e
\n\u3053\u308c\u3067\u307e\u305f\u732b\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u6d88\u3055\u308c\u3066\u3082\u5fa9\u65e7\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3057\u305f\"\ud83d\udc08\"\"\ud83d\udc3e\"

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W pcmanfm-qt*\npcmanfm-qt\t2.3.0-1\npcmanfm-qt-l10n\t2.3.0-1\n$ lsb_release -dr\nDescription:\tDebian GNU/Linux forky/sid\nRelease:\tn/a\n$ arch\nx86_64
\n
\n
\n
\n
\n", "content_text": "\u732b\u304c\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u4e0a\u3092\u6b69\u304f\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\uff0e\u3044\u3064\u306e\u9593\u306b\u304bCapsLock\u3068\u304bNumLock\u3068\u304b\u304c\u639b\u304b\u3063\u3066\u3057\u307e\u3063\u305f\u308a\u3057\u307e\u3059\uff0e\n\u305d\u306e\u7a0b\u5ea6\u306a\u3089\u3044\u3044\u306e\u3067\u3059\u304c\uff0c\u5148\u65e5\u30d5\u30a1\u30a4\u30e9\u30fc\u304c\u958b\u3044\u305f\u72b6\u614b\u3067Del key \u3092\u62bc\u3055\u308c\u30d5\u30a1\u30a4\u30eb\u304c\u6d88\u3048\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u5916\u4ed8HDD \u3067\u30b4\u30df\u7bb1\u3082\u8a2d\u5b9a\u3057\u3066\u3044\u306a\u304b\u3063\u305f\u306e\u3067\u30b4\u30df\u7bb1\u304b\u3089\u306e\u5fa9\u6d3b\u3082\u3067\u304d\u307e\u305b\u3093\uff0e\n\n\n\u5916\u4ed8\u3051HDD\u306e\u30b4\u30df\u7bb1\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f\uff0e\n\n\n\nfreedesktop.org\u306b\u6587\u7ae0\u304c\u3042\u308a\u305d\u3046\u3067\u3059\uff0e\n\n\n\n\nIt MAY also choose to provide trashing in the \u201ctop directories\u201d of some or all mounted resources. This trashing is done in two ways, described below as (1) and (2).\n(1) An administrator can create an $topdir/.Trash directory. The permissions on this directories should permit all users who can trash files at all to write in it.; and the \u201csticky bit\u201d in the permissions must be set, if the file system supports it.\n :\n(2) If an $topdir/.Trash directory is absent, an $topdir/.Trash-$uid directory is to be used as the user\u2019s trash directory for this device/partition. $uid is the user\u2019s numeric identifier.\n :\n\n\n\n— Trash Specification – Trash Specification v1.0\n\n\n\n\u81ea\u5206\u3057\u304b\u4f7f\u308f\u306a\u3044\u306e\u3067\uff0cHDD\u306eroot\u306b\uff0c.Trash-$uid \u3068\u3044\u3046\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u3063\u3066\u304a\u3051\u3070\u826f\u3055\u305d\u3046\u3067\u3059\uff0e\n\n\n\n$ cd /run/media/matoken/6f12b6e0-e167-4afc-b30b-ad30c2c9f446 (1)\n$ sudo install -d -m 700 -o \"$(id -u)\" -g \"$(id -g)\" ./.Trash-\"$(id -u)\" (2)\n$ ls -A | grep .Trash-\n.Trash-1000\n$ id --user\n1000\n\n\n\n\n\n\u5bfe\u8c61\u306eHDD\u306etop dir\u306b\u79fb\u52d5\n\n\n\u81ea\u5206\u7528\u30b4\u30df\u7bb1\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\n\n\n\n\n\u3053\u306e\u72b6\u614b\u3067\u30d5\u30a1\u30a4\u30e9\u30fc(\u4eca\u56de\u306fPCManFM-Qt)\u3067HDD\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3059\u308b\u3068\u30b4\u30df\u7bb1\u306b\u79fb\u52d5\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\u3053\u308c\u3067\u307e\u305f\u732b\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u6d88\u3055\u308c\u3066\u3082\u5fa9\u65e7\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3057\u305f\n\n\n\u74b0\u5883\n\n$ dpkg-query -W pcmanfm-qt*\npcmanfm-qt\t2.3.0-1\npcmanfm-qt-l10n\t2.3.0-1\n$ lsb_release -dr\nDescription:\tDebian GNU/Linux forky/sid\nRelease:\tn/a\n$ arch\nx86_64", "date_published": "2026-05-06T06:12:52+09:00", "date_modified": "2026-05-06T06:12:53+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "trash can", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5442", "url": "https://matoken.org/blog/2026/04/22/traffic-could-no-longer-be-measured-with-vnstat/", "title": "vnStat\u3067\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u8a08\u6e2c\u3067\u304d\u306a\u304f\u306a\u3063\u3066\u3044\u305f", "content_html": "
\n
\n

\n
\n

\u3057\u3070\u3089\u304f\u524d\u304b\u3089vnStat \u3068\u3044\u3046\u30c4\u30fc\u30eb\u3067\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u8a08\u6e2c\u3057\u3066\u3082\u3089\u3063\u3066\u3044\u307e\u3057\u305f\uff0e

\n
\n\n
\n

\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u901a\u4fe1\u6599\u3092\u78ba\u8a8d\u3057\u305f\u308a\u3068\u3044\u3063\u305f\u3053\u3068\u306b\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e
\n\u3057\u304b\u3057\u5148\u65e5\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u5f8c\u306b\u901a\u4fe1\u6599\u3092\u78ba\u8a8d\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u3046\u307e\u304f\u884c\u304d\u307e\u305b\u3093\uff0e

\n
\n

\n
\n

\u30ec\u30f3\u30b8\u3092\u9593\u9055\u3048\u305f\u304b\u306a\u3068\u601d\u3044\u307e\u3057\u305f\u304c\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u4ee5\u5916\u540c\u3058\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u4ed6\u306e\u7aef\u672b\u3067\u5b9f\u884c\u3059\u308b\u3068\u51fa\u3066\u6765\u308b\u306e\u3067\u30ec\u30f3\u30b8\u306f\u6b63\u3057\u305d\u3046\uff0e

\n
\n
\n
\n
$ vnstat -i enx349971e11a0f -b '2026-04-19 14:00' -e '2026-04-20 00:40' -h\nNo hourly data available for given date range.
\n
\n
\n
\n

-l \u3067\u30e9\u30a4\u30d6\u30e2\u30fc\u30c9\u3060\u3068\u3046\u307e\u304f\u52d5\u3044\u3066\u3044\u305d\u3046\u3067\u3059\u304c\uff0c -h \u3084 -5 \u3092\u53e9\u304f\u3068\u52d5\u304f\u3051\u3069\u53e4\u3044\u30c7\u30fc\u30bf\u3057\u304b\u51fa\u3066\u304d\u307e\u305b\u3093\uff0e

\n
\n
\n
\n
$ vnstat -i enx349971e11a0f -h\n\n enx349971e11a0f  /  hourly\n\n         hour        rx      |     tx      |    total    |   avg. rate\n     ------------------------+-------------+-------------+---------------\n     2026-04-04\n         17:00    218.69 MiB |   18.13 MiB |  236.82 MiB |  551.83 kbit/s\n         18:00      1.65 GiB |   72.64 MiB |    1.72 GiB |    4.11 Mbit/s\n         19:00    756.85 MiB |   42.89 MiB |  799.74 MiB |    1.86 Mbit/s\n         20:00    140.48 MiB |   12.13 MiB |  152.61 MiB |  355.61 kbit/s\n         21:00      8.02 MiB |    3.54 MiB |   11.56 MiB |   26.93 kbit/s\n         22:00      7.24 MiB |    3.89 MiB |   11.13 MiB |   25.93 kbit/s\n         23:00      6.15 MiB |    3.66 MiB |    9.81 MiB |   22.85 kbit/s\n     2026-04-05\n         00:00      4.99 MiB |    3.47 MiB |    8.46 MiB |   19.71 kbit/s\n         01:00      5.71 MiB |    3.51 MiB |    9.22 MiB |   21.49 kbit/s\n         02:00      2.87 MiB |    3.32 MiB |    6.19 MiB |   14.42 kbit/s\n         03:00     11.47 MiB |   22.75 MiB |   34.22 MiB |   79.74 kbit/s\n         04:00    784.37 MiB |   39.35 MiB |  823.72 MiB |    1.92 Mbit/s\n         05:00    626.25 MiB |   32.25 MiB |  658.50 MiB |    1.53 Mbit/s\n         06:00     38.78 MiB |   11.54 MiB |   50.32 MiB |  117.26 kbit/s\n         07:00     16.57 MiB |    4.71 MiB |   21.29 MiB |   49.60 kbit/s\n         08:00     12.33 MiB |    4.39 MiB |   16.71 MiB |   38.95 kbit/s\n         09:00     12.20 MiB |    4.78 MiB |   16.98 MiB |   39.56 kbit/s\n         10:00    104.22 MiB |    6.25 MiB |  110.47 MiB |  257.41 kbit/s\n         16:00     14.04 MiB |   10.51 MiB |   24.55 MiB |   57.20 kbit/s\n         17:00     47.55 MiB |   10.81 MiB |   58.36 MiB |  135.99 kbit/s\n         18:00     93.25 MiB |   13.96 MiB |  107.21 MiB |  249.82 kbit/s\n         19:00    133.44 MiB |   19.54 MiB |  152.98 MiB |  356.47 kbit/s\n         20:00     53.40 MiB |    6.77 MiB |   60.17 MiB |  140.21 kbit/s\n         21:00      3.52 MiB |    1.28 MiB |    4.80 MiB |   11.19 kbit/s\n     ------------------------+-------------+-------------+---------------
\n
\n
\n
\n

vnStat \u3078\u306e\u767b\u9332\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4e00\u65e6\u524a\u9664\u3057\u3066\u767b\u9332\u3057\u76f4\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo vnstat --remove -i enx349971e11a0f --force (1)\n$ sudo vnstat --add -i enx349971e11a0f (2)\n$ vnstat -5\nNo 5 minute data available.
\n
\n
\n
\n
    \n
  1. \n

    vnStat \u304b\u3089 enx349971e11a0f \u3092\u524a\u9664

    \n
  2. \n
  3. \n

    enx349971e11a0f \u3092\u8ffd\u52a0\u3057\u76f4\u3057

    \n
  4. \n
\n
\n
\n

\u6570\u6642\u9593\u5f8c\u78ba\u8a8d\u3057\u3066\u3082\u30c7\u30fc\u30bf\u304c\u898b\u3048\u307e\u305b\u3093\u2026\u2026\uff0e

\n
\n
\n
\n
$ vnstat -5\nNo 5 minute data available.
\n
\n
\n
\n

\u3088\u304f\u898b\u308b\u3068vnStat \u306e\u7d50\u679c\u306e1\u884c\u76ee\u306b\u5909\u306a\u65e5\u4ed8\u304c\u3042\u308a\u307e\u3059\uff0e

\n
\n
\n
\n
$ vnstat -i enx349971e11a0f\nDatabase updated: 2026-05-05 08:08:00\n\n   enx349971e11a0f since 2026-04-21\n\n          rx:  0 B      tx:  0 B      total:  0 B\n\n   monthly\n                     rx      |     tx      |    total    |   avg. rate\n     ------------------------+-------------+-------------+---------------\n                                no data available\n     ------------------------+-------------+-------------+---------------\n     estimated       --      |     --      |     --      |\n\n   daily\n                     rx      |     tx      |    total    |   avg. rate\n     ------------------------+-------------+-------------+---------------\n                                no data available\n     ------------------------+-------------+-------------+---------------\n     estimated       --      |     --      |     --      |
\n
\n
\n
\n

db \u304c\u672a\u6765\u306e\u65e5\u4ed8\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
\n

Database updated: 2026-05-05 08:08:00

\n
\n
\n
\n
\n

\u3053\u306e\u7aef\u672b\u306fRTC \u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30c6\u30ea\u304c\u6b7b\u3093\u3067\u3044\u308b\u3088\u3046\u3067\u30d0\u30c3\u30c6\u30ea\u5207\u308c\u3067\u843d\u3061\u308b\u3068\u6642\u8a08\u304c\u98db\u3093\u3067\u3057\u307e\u3044\u307e\u3059\uff0e\u305d\u306e\u6b21\u306e\u8d77\u52d5\u6642\u306bUEFI \u3067\u6642\u8a08\u3092\u5408\u308f\u305b\u3066\u8d77\u52d5\u3057\u3066\uff0c\u30b7\u30b9\u30c6\u30e0\u8d77\u52d5\u5f8c\u306bntp \u3067\u6642\u8a08\u5408\u308f\u305b\u3057\u3066\u3082\u3089\u3063\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0c\u6050\u3089\u304f\u305d\u306e\u3068\u304d\u306b5/5\u306b\u3057\u3066\u3057\u307e\u3044vnStat \u306edb \u304c\u304a\u304b\u3057\u304f\u306a\u3063\u305f\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e

\n
\n
\n

\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u304a\u304b\u3057\u305d\u3046\u306a\u306e\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u308a\u76f4\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo service vnstat stop (1)\n$ sudo -u vnstat mv /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak (2)\n$ sudo service vnstat start (3)\n$ vnstat -i enx349971e11a0f (4)\n enx349971e11a0f: No data. Timestamp of last update is same 2026-04-22 05:37:54 as of database creation.
\n
\n
\n
\n
    \n
  1. \n

    vnStat \u3092\u4e00\u65e6\u505c\u6b62

    \n
  2. \n
  3. \n

    \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9000\u907f

    \n
  4. \n
  5. \n

    vnStat \u3092\u8d77\u52d5

    \n
  6. \n
\n
\n
\n

\u3057\u3070\u3089\u304f\u5f8c\u306b\u78ba\u8a8d\u3059\u308b\u3068\u3053\u3093\u306a\u611f\u3058\u3067\u3061\u3083\u3093\u3068\u52d5\u304d\u59cb\u3081\u305f\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ vnstat -i enx349971e11a0f -h\n\n enx349971e11a0f  /  hourly\n\n         hour        rx      |     tx      |    total    |   avg. rate\n     ------------------------+-------------+-------------+---------------\n     2026-04-22\n         05:00     66.23 MiB |    9.14 MiB |   75.37 MiB |  175.62 kbit/s\n         06:00     13.89 MiB |    4.69 MiB |   18.58 MiB |   86.61 kbit/s\n     ------------------------+-------------+-------------+---------------\n$ vnstat -i enx349971e11a0f -5\n\n enx349971e11a0f  /  5 minute\n\n         time        rx      |     tx      |    total    |   avg. rate\n     ------------------------+-------------+-------------+---------------\n     2026-04-22\n         05:35    201.93 KiB |  113.63 KiB |  315.56 KiB |    8.62 kbit/s\n         05:40     10.26 MiB |    1.57 MiB |   11.84 MiB |  330.99 kbit/s\n         05:45      7.15 MiB |    2.31 MiB |    9.46 MiB |  264.57 kbit/s\n         05:50     38.63 MiB |    4.22 MiB |   42.85 MiB |    1.20 Mbit/s\n         05:55      9.99 MiB |  949.36 KiB |   10.91 MiB |  305.14 kbit/s\n         06:00      8.72 MiB |    1.32 MiB |   10.04 MiB |  280.77 kbit/s\n         06:05      1.35 MiB |  858.75 KiB |    2.19 MiB |   61.13 kbit/s\n         06:10    725.47 KiB |  429.95 KiB |    1.13 MiB |   31.55 kbit/s\n         06:15    637.71 KiB |  431.47 KiB |    1.04 MiB |   29.20 kbit/s\n         06:20      0.98 MiB |  989.68 KiB |    1.95 MiB |   54.39 kbit/s\n         06:25      1.52 MiB |  736.79 KiB |    2.24 MiB |   62.61 kbit/s\n     ------------------------+-------------+-------------+---------------
\n
\n
\n
\n

\u904e\u53bb\u306e\u30c7\u30fc\u30bf\u306f\u5931\u308f\u308c\u307e\u3057\u305f\u304c\uff0c\u3068\u308a\u3042\u3048\u305a\u307e\u305f\u8a08\u6e2c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n

\u307e\u305f\u304a\u304b\u3057\u304f\u306a\u308b\u524d\u306b\u96fb\u6c60\u3092\u4ea4\u63db\u3057\u305f\u307b\u3046\u304c\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e

\n
\n\n
\n

\u3053\u306e\u3088\u3046\u306acron \u3092\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3057\u305f\uff0e1\u65e51\u56devnStat \u306edb \u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3066\u53e4\u3044\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u6d88\u305d\u3046\u3068\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo -u vnstat crontab -l | grep vnstat\n@daily  cp --backup=numbered /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak && find /var/lib/vnstat/ -name \"vnstat.db.bak*\" -ctime 14 -exec rm {} \\;
\n
\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W vnstat* cron\ncron    3.0pl1-208\nvnstat  2.13-1\nvnstati 2.13-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n", "content_text": "\u3057\u3070\u3089\u304f\u524d\u304b\u3089vnStat \u3068\u3044\u3046\u30c4\u30fc\u30eb\u3067\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u8a08\u6e2c\u3057\u3066\u3082\u3089\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\n\nvergoh/vnstat: vnStat – a network traffic monitor for Linux and BSD\n\n\n\nvnStat\u3067\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u96c6\u8a08\u3059\u308b \u2013 matoken’s blog\n\n\n\n\n\n\n\n\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u901a\u4fe1\u6599\u3092\u78ba\u8a8d\u3057\u305f\u308a\u3068\u3044\u3063\u305f\u3053\u3068\u306b\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e\n\u3057\u304b\u3057\u5148\u65e5\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u5f8c\u306b\u901a\u4fe1\u6599\u3092\u78ba\u8a8d\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u3046\u307e\u304f\u884c\u304d\u307e\u305b\u3093\uff0e\n\n\n\n\u30ec\u30f3\u30b8\u3092\u9593\u9055\u3048\u305f\u304b\u306a\u3068\u601d\u3044\u307e\u3057\u305f\u304c\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u4ee5\u5916\u540c\u3058\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u4ed6\u306e\u7aef\u672b\u3067\u5b9f\u884c\u3059\u308b\u3068\u51fa\u3066\u6765\u308b\u306e\u3067\u30ec\u30f3\u30b8\u306f\u6b63\u3057\u305d\u3046\uff0e\n\n\n\n$ vnstat -i enx349971e11a0f -b '2026-04-19 14:00' -e '2026-04-20 00:40' -h\nNo hourly data available for given date range.\n\n\n\n-l \u3067\u30e9\u30a4\u30d6\u30e2\u30fc\u30c9\u3060\u3068\u3046\u307e\u304f\u52d5\u3044\u3066\u3044\u305d\u3046\u3067\u3059\u304c\uff0c -h \u3084 -5 \u3092\u53e9\u304f\u3068\u52d5\u304f\u3051\u3069\u53e4\u3044\u30c7\u30fc\u30bf\u3057\u304b\u51fa\u3066\u304d\u307e\u305b\u3093\uff0e\n\n\n\n$ vnstat -i enx349971e11a0f -h\n\n enx349971e11a0f / hourly\n\n hour rx | tx | total | avg. rate\n ------------------------+-------------+-------------+---------------\n 2026-04-04\n 17:00 218.69 MiB | 18.13 MiB | 236.82 MiB | 551.83 kbit/s\n 18:00 1.65 GiB | 72.64 MiB | 1.72 GiB | 4.11 Mbit/s\n 19:00 756.85 MiB | 42.89 MiB | 799.74 MiB | 1.86 Mbit/s\n 20:00 140.48 MiB | 12.13 MiB | 152.61 MiB | 355.61 kbit/s\n 21:00 8.02 MiB | 3.54 MiB | 11.56 MiB | 26.93 kbit/s\n 22:00 7.24 MiB | 3.89 MiB | 11.13 MiB | 25.93 kbit/s\n 23:00 6.15 MiB | 3.66 MiB | 9.81 MiB | 22.85 kbit/s\n 2026-04-05\n 00:00 4.99 MiB | 3.47 MiB | 8.46 MiB | 19.71 kbit/s\n 01:00 5.71 MiB | 3.51 MiB | 9.22 MiB | 21.49 kbit/s\n 02:00 2.87 MiB | 3.32 MiB | 6.19 MiB | 14.42 kbit/s\n 03:00 11.47 MiB | 22.75 MiB | 34.22 MiB | 79.74 kbit/s\n 04:00 784.37 MiB | 39.35 MiB | 823.72 MiB | 1.92 Mbit/s\n 05:00 626.25 MiB | 32.25 MiB | 658.50 MiB | 1.53 Mbit/s\n 06:00 38.78 MiB | 11.54 MiB | 50.32 MiB | 117.26 kbit/s\n 07:00 16.57 MiB | 4.71 MiB | 21.29 MiB | 49.60 kbit/s\n 08:00 12.33 MiB | 4.39 MiB | 16.71 MiB | 38.95 kbit/s\n 09:00 12.20 MiB | 4.78 MiB | 16.98 MiB | 39.56 kbit/s\n 10:00 104.22 MiB | 6.25 MiB | 110.47 MiB | 257.41 kbit/s\n 16:00 14.04 MiB | 10.51 MiB | 24.55 MiB | 57.20 kbit/s\n 17:00 47.55 MiB | 10.81 MiB | 58.36 MiB | 135.99 kbit/s\n 18:00 93.25 MiB | 13.96 MiB | 107.21 MiB | 249.82 kbit/s\n 19:00 133.44 MiB | 19.54 MiB | 152.98 MiB | 356.47 kbit/s\n 20:00 53.40 MiB | 6.77 MiB | 60.17 MiB | 140.21 kbit/s\n 21:00 3.52 MiB | 1.28 MiB | 4.80 MiB | 11.19 kbit/s\n ------------------------+-------------+-------------+---------------\n\n\n\nvnStat \u3078\u306e\u767b\u9332\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4e00\u65e6\u524a\u9664\u3057\u3066\u767b\u9332\u3057\u76f4\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\n\n$ sudo vnstat --remove -i enx349971e11a0f --force (1)\n$ sudo vnstat --add -i enx349971e11a0f (2)\n$ vnstat -5\nNo 5 minute data available.\n\n\n\n\n\nvnStat \u304b\u3089 enx349971e11a0f \u3092\u524a\u9664\n\n\nenx349971e11a0f \u3092\u8ffd\u52a0\u3057\u76f4\u3057\n\n\n\n\n\u6570\u6642\u9593\u5f8c\u78ba\u8a8d\u3057\u3066\u3082\u30c7\u30fc\u30bf\u304c\u898b\u3048\u307e\u305b\u3093\u2026\u2026\uff0e\n\n\n\n$ vnstat -5\nNo 5 minute data available.\n\n\n\n\u3088\u304f\u898b\u308b\u3068vnStat \u306e\u7d50\u679c\u306e1\u884c\u76ee\u306b\u5909\u306a\u65e5\u4ed8\u304c\u3042\u308a\u307e\u3059\uff0e\n\n\n\n$ vnstat -i enx349971e11a0f\nDatabase updated: 2026-05-05 08:08:00\n\n enx349971e11a0f since 2026-04-21\n\n rx: 0 B tx: 0 B total: 0 B\n\n monthly\n rx | tx | total | avg. rate\n ------------------------+-------------+-------------+---------------\n no data available\n ------------------------+-------------+-------------+---------------\n estimated -- | -- | -- |\n\n daily\n rx | tx | total | avg. rate\n ------------------------+-------------+-------------+---------------\n no data available\n ------------------------+-------------+-------------+---------------\n estimated -- | -- | -- |\n\n\n\ndb \u304c\u672a\u6765\u306e\u65e5\u4ed8\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\nDatabase updated: 2026-05-05 08:08:00\n\n\n\n\n\u3053\u306e\u7aef\u672b\u306fRTC \u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30c6\u30ea\u304c\u6b7b\u3093\u3067\u3044\u308b\u3088\u3046\u3067\u30d0\u30c3\u30c6\u30ea\u5207\u308c\u3067\u843d\u3061\u308b\u3068\u6642\u8a08\u304c\u98db\u3093\u3067\u3057\u307e\u3044\u307e\u3059\uff0e\u305d\u306e\u6b21\u306e\u8d77\u52d5\u6642\u306bUEFI \u3067\u6642\u8a08\u3092\u5408\u308f\u305b\u3066\u8d77\u52d5\u3057\u3066\uff0c\u30b7\u30b9\u30c6\u30e0\u8d77\u52d5\u5f8c\u306bntp \u3067\u6642\u8a08\u5408\u308f\u305b\u3057\u3066\u3082\u3089\u3063\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0c\u6050\u3089\u304f\u305d\u306e\u3068\u304d\u306b5/5\u306b\u3057\u3066\u3057\u307e\u3044vnStat \u306edb \u304c\u304a\u304b\u3057\u304f\u306a\u3063\u305f\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e\n\n\n\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u304a\u304b\u3057\u305d\u3046\u306a\u306e\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u308a\u76f4\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\n\n$ sudo service vnstat stop (1)\n$ sudo -u vnstat mv /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak (2)\n$ sudo service vnstat start (3)\n$ vnstat -i enx349971e11a0f (4)\n enx349971e11a0f: No data. Timestamp of last update is same 2026-04-22 05:37:54 as of database creation.\n\n\n\n\n\nvnStat \u3092\u4e00\u65e6\u505c\u6b62\n\n\n\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9000\u907f\n\n\nvnStat \u3092\u8d77\u52d5\n\n\n\n\n\u3057\u3070\u3089\u304f\u5f8c\u306b\u78ba\u8a8d\u3059\u308b\u3068\u3053\u3093\u306a\u611f\u3058\u3067\u3061\u3083\u3093\u3068\u52d5\u304d\u59cb\u3081\u305f\u3088\u3046\u3067\u3059\uff0e\n\n\n\n$ vnstat -i enx349971e11a0f -h\n\n enx349971e11a0f / hourly\n\n hour rx | tx | total | avg. rate\n ------------------------+-------------+-------------+---------------\n 2026-04-22\n 05:00 66.23 MiB | 9.14 MiB | 75.37 MiB | 175.62 kbit/s\n 06:00 13.89 MiB | 4.69 MiB | 18.58 MiB | 86.61 kbit/s\n ------------------------+-------------+-------------+---------------\n$ vnstat -i enx349971e11a0f -5\n\n enx349971e11a0f / 5 minute\n\n time rx | tx | total | avg. rate\n ------------------------+-------------+-------------+---------------\n 2026-04-22\n 05:35 201.93 KiB | 113.63 KiB | 315.56 KiB | 8.62 kbit/s\n 05:40 10.26 MiB | 1.57 MiB | 11.84 MiB | 330.99 kbit/s\n 05:45 7.15 MiB | 2.31 MiB | 9.46 MiB | 264.57 kbit/s\n 05:50 38.63 MiB | 4.22 MiB | 42.85 MiB | 1.20 Mbit/s\n 05:55 9.99 MiB | 949.36 KiB | 10.91 MiB | 305.14 kbit/s\n 06:00 8.72 MiB | 1.32 MiB | 10.04 MiB | 280.77 kbit/s\n 06:05 1.35 MiB | 858.75 KiB | 2.19 MiB | 61.13 kbit/s\n 06:10 725.47 KiB | 429.95 KiB | 1.13 MiB | 31.55 kbit/s\n 06:15 637.71 KiB | 431.47 KiB | 1.04 MiB | 29.20 kbit/s\n 06:20 0.98 MiB | 989.68 KiB | 1.95 MiB | 54.39 kbit/s\n 06:25 1.52 MiB | 736.79 KiB | 2.24 MiB | 62.61 kbit/s\n ------------------------+-------------+-------------+---------------\n\n\n\n\u904e\u53bb\u306e\u30c7\u30fc\u30bf\u306f\u5931\u308f\u308c\u307e\u3057\u305f\u304c\uff0c\u3068\u308a\u3042\u3048\u305a\u307e\u305f\u8a08\u6e2c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\u307e\u305f\u304a\u304b\u3057\u304f\u306a\u308b\u524d\u306b\u96fb\u6c60\u3092\u4ea4\u63db\u3057\u305f\u307b\u3046\u304c\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e\n\n\n\n\nAmazon.co.jp: CR2016 CMOS\u96fb\u6c60 \u30ec\u30ce\u30dcThinkpad X1 Carbon 2nd,3th,4th,5th Gen,X280,A285\u306a\u3069\u306b\u5bfe\u5fdc : \u30d1\u30bd\u30b3\u30f3\u30fb\u5468\u8fba\u6a5f\u5668\n\n\n\n\u540c\u30a2\u30d5\u30a7\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af\n\n\n\n\n\n\n\n\u3053\u306e\u3088\u3046\u306acron \u3092\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3057\u305f\uff0e1\u65e51\u56devnStat \u306edb \u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3066\u53e4\u3044\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u6d88\u305d\u3046\u3068\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n\n$ sudo -u vnstat crontab -l | grep vnstat\n@daily cp --backup=numbered /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak && find /var/lib/vnstat/ -name \"vnstat.db.bak*\" -ctime 14 -exec rm {} \\;\n\n\n\n\u74b0\u5883\n\n$ dpkg-query -W vnstat* cron\ncron 3.0pl1-208\nvnstat 2.13-1\nvnstati 2.13-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2026-04-22T07:11:23+09:00", "date_modified": "2026-04-22T07:11:25+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "network", "vnStat", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5415", "url": "https://matoken.org/blog/2026/04/03/pcmanfm-qt-action/", "title": "\u30d5\u30a1\u30a4\u30eb\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u30a2\u30d7\u30ea\u306ePCManFM-Qt\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u306b\u753b\u50cf\u5909\u63dbScript\u3092\u767b\u9332", "content_html": "
\n
\n
\n
\n\"pcmanfm\n
\n
\n
\n

\u6700\u8fd1\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u3067\u306e\u30d5\u30a1\u30a4\u30eb\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u30a2\u30d7\u30ea\u306bPCManFM-Qt \u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e\u4ee5\u524d\u306fNautilus \u3092\u4f7f\u3063\u3066\u3044\u3066\uff0c\u753b\u50cf\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5909\u63db\u306a\u3069\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u306b\u5909\u63dbscript \u3092\u767b\u9332\u3057\u3066\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\uff0ePCManFM-Qt \u3067\u3082\u540c\u69d8\u306e\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u304b\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

Nautilus \u3067\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u5909\u63db\u3057\u305f\u3044\u753b\u50cf\u306e\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u306e Scripts \u306e\u4e2d\u306b\u753b\u50cf\u5909\u63dbScript \u3092\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3057\u305f\uff0e

\n
\n
\n
\n\"nautilus\n
\n
\n
\n
\n\"nautilus\n
\n
\n
\n

PCManFM-Qt \u3067\u306f\u3053\u306e\u8a2d\u5b9a\u306f\u52b9\u304b\u306a\u3044\u306e\u3067\uff0cLX-Image-Qt \u3084Imagemagick \u306e convert \u30b3\u30de\u30f3\u30c9\u306a\u3069\u3067\u5909\u63db\u3057\u3066\u3044\u307e\u3057\u305f\u304c\u9762\u5012\uff0e

\n
\n
\n

PCManFM-Qt \u3067\u306f ~/.local/share/file-manager/actions/ \u4ee5\u4e0b\u306b\u30a2\u30af\u30b7\u30e7\u30f3\u5b9a\u7fa9\u306e .desktop \u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u3053\u3068\u3067\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u306b\u767b\u9332\u3067\u304d\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n\n
\n

\u76f4\u306b .desktop \u30d5\u30a1\u30a4\u30eb\u3067\u3082\u3044\u3044\u306e\u3067\u3059\u304c\uff0c\u8907\u6570\u30d5\u30a1\u30a4\u30eb\u5bfe\u5fdc\u306a\u3069\u3082\u3057\u305f\u3044\u306e\u3067Shell Script \u3092\u7528\u610f\u3057\u3066\uff0c\u305d\u308c\u3092 .desktop \u30d5\u30a1\u30a4\u30eb\u304b\u3089\u547c\u3076\u3053\u3068\u306b\u3057\u307e\u3059\uff0e

\n
\n
\n

\u5148\u305a\u306f\u9069\u5f53\u306a\u5834\u6240\u306b\u5909\u63dbScript \u3092\u7528\u610f\u3057\u307e\u3059\uff0e\u6307\u5b9a\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092ImageMagick \u306econvert \u30b3\u30de\u30f3\u30c9\u3067webp \u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b\u3082\u306e\u3067\u3059\uff0e

\n
\n
\n
~/bin/pcmanfm-convert2webp.sh
\n
\n
#!/bin/sh\n\nfor file in \"$@\"; do\n  [ -f \"$file\" ] || continue\n  out=\"${file%.*}.webp\"\n  convert \"$file\" \"$out\"\ndone
\n
\n
\n
\n

\u5b9f\u884c\u6a29\u3092\u4ed8\u4e0e\u3057\u3066\u304a\u304d\u307e\u3059\uff0e

\n
\n
\n
\n
$ chmod u+x ~/bin/pcmanfm-convert2webp.sh
\n
\n
\n
\n

\u52d5\u4f5c\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e\u5927\u4e08\u592b\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ ~/bin/pcmanfm-convert2webp.sh /home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.png\n$ ls -1 /home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.*\n/home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.png\n/home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.webp
\n
\n
\n
\n

\u6b21\u306b .desktop \u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f ~/.local/share/file-manager/actions/ \u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e
\nMimeTypes \u3067\u753b\u50cf\u306e\u5834\u5408\u306b\u3053\u306e .decktop \u304c\u6709\u52b9\u306b\u306a\u308b\u3088\u3046\u306b\u3057\u307e\u3059\uff0eExec \u306b\u4e0a\u306eScript \u3092\u66f8\u3044\u3066\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\uff0e\u3053\u306e\u3068\u304d\u8907\u6570\u30d5\u30a1\u30a4\u30eb\u306e %F \u3092\u6e21\u3057\u307e\u3059\uff0e

\n
\n
\n
~/.local/share/file-manager/actions/convert2webp.desktop
\n
\n
[Desktop Entry]\nType=Action\nName=image2webp\nName[ja]=\u753b\u50cf\u3092webp\u306b\u5909\u63db\nProfiles=convert;\nIcon=application-default-icon\n\n[X-Action-Profile convert]\nMimeTypes=image/*;\nExec=/home/matoken/bin/pcmanfm-convert2webp.sh %F\nCategories=Graphics;
\n
\n
\n
\n

\u3053\u306e\u72b6\u614b\u3067PCmanFm-Qt \u3092\u7d42\u4e86\u3057\u3066\u65b0\u305f\u306b\u8d77\u52d5\u3057\u3066\u753b\u50cf\u306e\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3067 convert2webp \u304c\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u5909\u63db\u3082ok\uff0e\u753b\u50cf\u4ee5\u5916\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u51fa\u3066\u304d\u307e\u305b\u3093\uff0e

\n
\n
\n
\n\"pcmanfm\n
\n
\n
\n

\u304b\u306a\u308a\u4fbf\u5229\u306b\u306a\u308a\u307e\u3057\u305f :)

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W pcmanfm-qt imagemagick\nimagemagick     8:7.1.2.18+dfsg1-1\npcmanfm-qt      2.3.0-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n", "content_text": "\u6700\u8fd1\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u3067\u306e\u30d5\u30a1\u30a4\u30eb\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u30a2\u30d7\u30ea\u306bPCManFM-Qt \u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e\u4ee5\u524d\u306fNautilus \u3092\u4f7f\u3063\u3066\u3044\u3066\uff0c\u753b\u50cf\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5909\u63db\u306a\u3069\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u306b\u5909\u63dbscript \u3092\u767b\u9332\u3057\u3066\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\uff0ePCManFM-Qt \u3067\u3082\u540c\u69d8\u306e\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u304b\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\nNautilus \u3067\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u5909\u63db\u3057\u305f\u3044\u753b\u50cf\u306e\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u306e Scripts \u306e\u4e2d\u306b\u753b\u50cf\u5909\u63dbScript \u3092\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n\n\n\n\n\n\nPCManFM-Qt \u3067\u306f\u3053\u306e\u8a2d\u5b9a\u306f\u52b9\u304b\u306a\u3044\u306e\u3067\uff0cLX-Image-Qt \u3084Imagemagick \u306e convert \u30b3\u30de\u30f3\u30c9\u306a\u3069\u3067\u5909\u63db\u3057\u3066\u3044\u307e\u3057\u305f\u304c\u9762\u5012\uff0e\n\n\nPCManFM-Qt \u3067\u306f ~/.local/share/file-manager/actions/ \u4ee5\u4e0b\u306b\u30a2\u30af\u30b7\u30e7\u30f3\u5b9a\u7fa9\u306e .desktop \u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u3053\u3068\u3067\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u306b\u767b\u9332\u3067\u304d\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\nCustom Actions – LXQt Wiki\n\n\n\n\n\u76f4\u306b .desktop \u30d5\u30a1\u30a4\u30eb\u3067\u3082\u3044\u3044\u306e\u3067\u3059\u304c\uff0c\u8907\u6570\u30d5\u30a1\u30a4\u30eb\u5bfe\u5fdc\u306a\u3069\u3082\u3057\u305f\u3044\u306e\u3067Shell Script \u3092\u7528\u610f\u3057\u3066\uff0c\u305d\u308c\u3092 .desktop \u30d5\u30a1\u30a4\u30eb\u304b\u3089\u547c\u3076\u3053\u3068\u306b\u3057\u307e\u3059\uff0e\n\n\n\u5148\u305a\u306f\u9069\u5f53\u306a\u5834\u6240\u306b\u5909\u63dbScript \u3092\u7528\u610f\u3057\u307e\u3059\uff0e\u6307\u5b9a\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092ImageMagick \u306econvert \u30b3\u30de\u30f3\u30c9\u3067webp \u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b\u3082\u306e\u3067\u3059\uff0e\n\n\n~/bin/pcmanfm-convert2webp.sh\n\n#!/bin/sh\n\nfor file in \"$@\"; do\n [ -f \"$file\" ] || continue\n out=\"${file%.*}.webp\"\n convert \"$file\" \"$out\"\ndone\n\n\n\n\u5b9f\u884c\u6a29\u3092\u4ed8\u4e0e\u3057\u3066\u304a\u304d\u307e\u3059\uff0e\n\n\n\n$ chmod u+x ~/bin/pcmanfm-convert2webp.sh\n\n\n\n\u52d5\u4f5c\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e\u5927\u4e08\u592b\u305d\u3046\u3067\u3059\uff0e\n\n\n\n$ ~/bin/pcmanfm-convert2webp.sh /home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.png\n$ ls -1 /home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.*\n/home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.png\n/home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.webp\n\n\n\n\u6b21\u306b .desktop \u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f ~/.local/share/file-manager/actions/ \u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e\nMimeTypes \u3067\u753b\u50cf\u306e\u5834\u5408\u306b\u3053\u306e .decktop \u304c\u6709\u52b9\u306b\u306a\u308b\u3088\u3046\u306b\u3057\u307e\u3059\uff0eExec \u306b\u4e0a\u306eScript \u3092\u66f8\u3044\u3066\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\uff0e\u3053\u306e\u3068\u304d\u8907\u6570\u30d5\u30a1\u30a4\u30eb\u306e %F \u3092\u6e21\u3057\u307e\u3059\uff0e\n\n\n~/.local/share/file-manager/actions/convert2webp.desktop\n\n[Desktop Entry]\nType=Action\nName=image2webp\nName[ja]=\u753b\u50cf\u3092webp\u306b\u5909\u63db\nProfiles=convert;\nIcon=application-default-icon\n\n[X-Action-Profile convert]\nMimeTypes=image/*;\nExec=/home/matoken/bin/pcmanfm-convert2webp.sh %F\nCategories=Graphics;\n\n\n\n\u3053\u306e\u72b6\u614b\u3067PCmanFm-Qt \u3092\u7d42\u4e86\u3057\u3066\u65b0\u305f\u306b\u8d77\u52d5\u3057\u3066\u753b\u50cf\u306e\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3067 convert2webp \u304c\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u5909\u63db\u3082ok\uff0e\u753b\u50cf\u4ee5\u5916\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u51fa\u3066\u304d\u307e\u305b\u3093\uff0e\n\n\n\n\n\n\n\n\u304b\u306a\u308a\u4fbf\u5229\u306b\u306a\u308a\u307e\u3057\u305f :)\n\n\n\u74b0\u5883\n\n$ dpkg-query -W pcmanfm-qt imagemagick\nimagemagick 8:7.1.2.18+dfsg1-1\npcmanfm-qt 2.3.0-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2026-04-03T06:22:49+09:00", "date_modified": "2026-04-03T12:36:37+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Imagemagick", "PCManFM", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5405", "url": "https://matoken.org/blog/2026/04/01/twitter-broadcast-download/", "title": "Twitter\u3067\u914d\u4fe1\u3055\u308c\u305f\u52d5\u753b\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9", "content_html": "
\n
\n

\n
\n

Twitter\u3067\u914d\u4fe1\u3055\u308c\u305f\u30e9\u30a4\u30d6\u52d5\u753b\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

\u3068\u3042\u308b\u30a4\u30d9\u30f3\u30c8\u304cTwitter \u3067\u914d\u4fe1\u3055\u308c\u3066\u3044\u305f\u3089\u3057\u304fYouTube \u306b\u3082\u3042\u308b\u306e\u3067\u306f\u3068\u601d\u3063\u305f\u3051\u3069\u898b\u5f53\u305f\u308a\u307e\u305b\u3093\uff0eTwitter \u306b\u30a2\u30fc\u30ab\u30a4\u30d6\u304c\u6b8b\u3063\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0c\u306a\u3093\u304b\u518d\u751f\u304c\u3059\u3050\u6b62\u307e\u308b\u306e\u3067\u8f9b\u3044\uff0e
\n\u3068\u3044\u3046\u3053\u3068\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u306a\u3044\u304b\u306a\u3068\u691c\u7d22\u3059\u308b\u3068X/Twitter Broadcast Downloader \u3068\u3044\u3046\u3082\u306e\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e\u3053\u308c\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n\n
\n
venv \u74b0\u5883\u306b\u5c0e\u5165\u3057\u3066\u8a66\u3059\uff0e
\n
\n
$ git clone https://github.com/offish/twitter-x-broadcast-downloader (1)\n$ cd twitter-x-broadcast-downloader\n$ python3 -m venv venv (2)\n$ source venv/bin/activate (3)\n$ pip install -r \"requirements.txt\" (4)\n$ python main.py (5)\nWhat is the broadcast URL? https://x.com/i/broadcasts/1qGvvkWeqdBGB (6)\nGot media key 28_2038539604165640192\nGot playback URL https://prod-fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/PTdVIXd-pzzuOcGNlng6TG9haAxe5-rcN7QaIridcZbNbingfwGFrSiqe9DsliGqOpoLNO8lZ2Pk9a_owkY3aw/non_transcode/ap-northeast-1/periscope-replay-direct-prod-ap-northeast-1-public/master_dynamic_16671870457049479117.m3u8?type=replay\nDownloading the broadcast as 28_2038539604165640192.mp4...\n[generic] Extracting URL: https://prod-fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/PTdVIXd-pzzuOcGNlng6TG9haAxe5...117.m3u8?type=replay\n[generic] master_dynamic_16671870457049479117: Downloading webpage\n[generic] master_dynamic_16671870457049479117: Downloading m3u8 information\n[generic] master_dynamic_16671870457049479117: Checking m3u8 live status\n[info] master_dynamic_16671870457049479117: Downloading 1 format(s): 5500\n[hlsnative] Downloading m3u8 manifest\n[hlsnative] Total fragments: 6385\n[download] Destination: /home/matoken/src/twitter-x-broadcast-downloader/downloads/28_2038539604165640192.mp4\n[download] 100% of    3.64GiB in 00:03:49 at 16.24MiB/s\n[FixupM3u8] Fixing MPEG-TS in MP4 container of \"/home/matoken/src/twitter-x-broadcast-downloader/downloads/28_2038539604165640192.mp4\"\n\n\nWhat is the broadcast URL? (7)
\n
\n
\n
\n
    \n
  1. \n

    source clone

    \n
  2. \n
  3. \n

    venv \u74b0\u5883\u3092\u4f5c\u308b

    \n
  4. \n
  5. \n

    venv \u3092\u6709\u52b9\u306b

    \n
  6. \n
  7. \n

    venv \u74b0\u5883\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb

    \n
  8. \n
  9. \n

    X/Twitter Broadcast Downloader \u3092\u5b9f\u884c

    \n
  10. \n
  11. \n

    \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u3044URL \u3092\u6e21\u3059

    \n
  12. \n
  13. \n

    \u6b21\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u3044URL \u5f85\u3061

    \n
  14. \n
\n
\n
\n

\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ ls -lA downloads/\ntotal 3722204\n-rw-rw-r-- 1 matoken matoken 3811532277 Mar 31 18:03 28_2038539604165640192.mp4\n-rw-rw-r-- 1 matoken matoken          0 Mar 31 17:57 .gitkeep\n$ ffprobe downloads/28_2038539604165640192.mp4 2>&1 | grep -A 99 ^Input\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from 'downloads/28_2038539604165640192.mp4':\n  Metadata:\n    major_brand     : isom\n    minor_version   : 512\n    compatible_brands: isomiso2avc1mp41\n    encoder         : Lavf61.7.100\n  Duration: 03:35:23.76, start: 0.000000, bitrate: 2359 kb/s\n  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, 2187 kb/s, 30 fps, 30 tbr, 90k tbn (default)\n      Metadata:\n        handler_name    : VideoHandler\n        vendor_id       : [0][0][0][0]\n  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)\n      Metadata:\n        handler_name    : SoundHandler\n        vendor_id       : [0][0][0][0]
\n
\n
\n
\n

\u4ee5\u4e0b\u4f59\u9332\uff0e

\n
\n
\n

\u30ea\u30e2\u30fc\u30c8\u306eVPS \u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u306e\u3067\u3059\u304c\u7d50\u69cb\u5927\u304d\u3044\u306e\u3067\u5c0f\u3055\u304f\u3057\u3066\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\uff0e

\n
\n
\n
ffmpeg \u30b3\u30de\u30f3\u30c9\u3067\u52d5\u753b\u3092\u5c0f\u3055\u304f
\n
\n
$ ffmpeg -i downloads/28_2038539604165640192.mp4 -vcodec libx264 -crf 33 -vf \"scale=720:-2\" -c:a copy downloads/28_2038539604165640192-720.mp4\n$ ls -1s downloads/\ntotal 4172176\n 449972 28_2038539604165640192-720.mp4\n3722204 28_2038539604165640192.mp4
\n
\n
\n
\n
\u52d5\u753b\u306e\u97f3\u58f0\u3092\u53d6\u308a\u51fa\u3057\u3066Whisper.cpp \u3067\u5b57\u5e55\u4f5c\u6210
\n
\n
$ ffmpeg -i ~/Downloads/28_2038539604165640192-720.mp4 -ar 44100 -ac 1 -sample_fmt s16 -af silenceremove=1:0:-50dB  clawcon.wav\n$ ./build/bin/whisper-cli -m ./models/ggml-large-v3-turbo.bin --output-srt --language auto -f ./clawcon.wav\n$ ls -1s clawcon.wav*\n1067548 clawcon.wav\n    152 clawcon.wav.srt\n$ head  clawcon.wav.srt\n1\n00:00:00,000 --> 00:00:06,660\nAlright everyone, we'll be starting in 10 minutes. Please make your way to the stage area. We'll be starting in 10 minutes.\n\n2\n00:00:30,000 --> 00:00:59,980\n Thank you.\n\n3\n00:01:00,000 --> 00:01:29,980
\n
\n
\n
\n
\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u74b0\u5883
\n
\n
$ dpkg-query -W python3 python3-venv ffmpeg\nffmpeg  7:7.1.3-0+deb13u1\npython3 3.13.5-1\npython3-venv    3.13.5-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux 13 (trixie)\nRelease:        13\n$ arch\nx86_64
\n
\n
\n
\n
\u52d5\u753b\u7de8\u96c6\uff0c\u6587\u5b57\u8d77\u3053\u3057\u74b0\u5883
\n
\n
$ dpkg-query -W ffmpeg\nffmpeg  7:8.1-3+b1\na$ git remote -v\norigin  https://github.com/ggerganov/whisper.cpp.git (fetch)\norigin  https://github.com/ggerganov/whisper.cpp.git (push)\n$ git log --pretty=oneline -1\n95ea8f9bfb03a15db08a8989966fd1ae3361e20d (HEAD -> master, origin/master, origin/HEAD) sync : ggml\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n", "content_text": "Twitter\u3067\u914d\u4fe1\u3055\u308c\u305f\u30e9\u30a4\u30d6\u52d5\u753b\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\u3068\u3042\u308b\u30a4\u30d9\u30f3\u30c8\u304cTwitter \u3067\u914d\u4fe1\u3055\u308c\u3066\u3044\u305f\u3089\u3057\u304fYouTube \u306b\u3082\u3042\u308b\u306e\u3067\u306f\u3068\u601d\u3063\u305f\u3051\u3069\u898b\u5f53\u305f\u308a\u307e\u305b\u3093\uff0eTwitter \u306b\u30a2\u30fc\u30ab\u30a4\u30d6\u304c\u6b8b\u3063\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0c\u306a\u3093\u304b\u518d\u751f\u304c\u3059\u3050\u6b62\u307e\u308b\u306e\u3067\u8f9b\u3044\uff0e\n\u3068\u3044\u3046\u3053\u3068\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u306a\u3044\u304b\u306a\u3068\u691c\u7d22\u3059\u308b\u3068X/Twitter Broadcast Downloader \u3068\u3044\u3046\u3082\u306e\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e\u3053\u308c\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\noffish/twitter-x-broadcast-downloader: Download X/Twitter broadcasts or lives\n\n\n\n\nvenv \u74b0\u5883\u306b\u5c0e\u5165\u3057\u3066\u8a66\u3059\uff0e\n\n$ git clone https://github.com/offish/twitter-x-broadcast-downloader (1)\n$ cd twitter-x-broadcast-downloader\n$ python3 -m venv venv (2)\n$ source venv/bin/activate (3)\n$ pip install -r \"requirements.txt\" (4)\n$ python main.py (5)\nWhat is the broadcast URL? https://x.com/i/broadcasts/1qGvvkWeqdBGB (6)\nGot media key 28_2038539604165640192\nGot playback URL https://prod-fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/PTdVIXd-pzzuOcGNlng6TG9haAxe5-rcN7QaIridcZbNbingfwGFrSiqe9DsliGqOpoLNO8lZ2Pk9a_owkY3aw/non_transcode/ap-northeast-1/periscope-replay-direct-prod-ap-northeast-1-public/master_dynamic_16671870457049479117.m3u8?type=replay\nDownloading the broadcast as 28_2038539604165640192.mp4...\n[generic] Extracting URL: https://prod-fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/PTdVIXd-pzzuOcGNlng6TG9haAxe5...117.m3u8?type=replay\n[generic] master_dynamic_16671870457049479117: Downloading webpage\n[generic] master_dynamic_16671870457049479117: Downloading m3u8 information\n[generic] master_dynamic_16671870457049479117: Checking m3u8 live status\n[info] master_dynamic_16671870457049479117: Downloading 1 format(s): 5500\n[hlsnative] Downloading m3u8 manifest\n[hlsnative] Total fragments: 6385\n[download] Destination: /home/matoken/src/twitter-x-broadcast-downloader/downloads/28_2038539604165640192.mp4\n[download] 100% of 3.64GiB in 00:03:49 at 16.24MiB/s\n[FixupM3u8] Fixing MPEG-TS in MP4 container of \"/home/matoken/src/twitter-x-broadcast-downloader/downloads/28_2038539604165640192.mp4\"\n\n\nWhat is the broadcast URL? (7)\n\n\n\n\n\nsource clone\n\n\nvenv \u74b0\u5883\u3092\u4f5c\u308b\n\n\nvenv \u3092\u6709\u52b9\u306b\n\n\nvenv \u74b0\u5883\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\n\nX/Twitter Broadcast Downloader \u3092\u5b9f\u884c\n\n\n\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u3044URL \u3092\u6e21\u3059\n\n\n\u6b21\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u3044URL \u5f85\u3061\n\n\n\n\n\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3057\u305f\uff0e\n\n\n\n$ ls -lA downloads/\ntotal 3722204\n-rw-rw-r-- 1 matoken matoken 3811532277 Mar 31 18:03 28_2038539604165640192.mp4\n-rw-rw-r-- 1 matoken matoken 0 Mar 31 17:57 .gitkeep\n$ ffprobe downloads/28_2038539604165640192.mp4 2>&1 | grep -A 99 ^Input\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from 'downloads/28_2038539604165640192.mp4':\n Metadata:\n major_brand : isom\n minor_version : 512\n compatible_brands: isomiso2avc1mp41\n encoder : Lavf61.7.100\n Duration: 03:35:23.76, start: 0.000000, bitrate: 2359 kb/s\n Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, 2187 kb/s, 30 fps, 30 tbr, 90k tbn (default)\n Metadata:\n handler_name : VideoHandler\n vendor_id : [0][0][0][0]\n Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)\n Metadata:\n handler_name : SoundHandler\n vendor_id : [0][0][0][0]\n\n\n\n\u4ee5\u4e0b\u4f59\u9332\uff0e\n\n\n\u30ea\u30e2\u30fc\u30c8\u306eVPS \u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u306e\u3067\u3059\u304c\u7d50\u69cb\u5927\u304d\u3044\u306e\u3067\u5c0f\u3055\u304f\u3057\u3066\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\uff0e\n\n\nffmpeg \u30b3\u30de\u30f3\u30c9\u3067\u52d5\u753b\u3092\u5c0f\u3055\u304f\n\n$ ffmpeg -i downloads/28_2038539604165640192.mp4 -vcodec libx264 -crf 33 -vf \"scale=720:-2\" -c:a copy downloads/28_2038539604165640192-720.mp4\n$ ls -1s downloads/\ntotal 4172176\n 449972 28_2038539604165640192-720.mp4\n3722204 28_2038539604165640192.mp4\n\n\n\n\u52d5\u753b\u306e\u97f3\u58f0\u3092\u53d6\u308a\u51fa\u3057\u3066Whisper.cpp \u3067\u5b57\u5e55\u4f5c\u6210\n\n$ ffmpeg -i ~/Downloads/28_2038539604165640192-720.mp4 -ar 44100 -ac 1 -sample_fmt s16 -af silenceremove=1:0:-50dB clawcon.wav\n$ ./build/bin/whisper-cli -m ./models/ggml-large-v3-turbo.bin --output-srt --language auto -f ./clawcon.wav\n$ ls -1s clawcon.wav*\n1067548 clawcon.wav\n 152 clawcon.wav.srt\n$ head clawcon.wav.srt\n1\n00:00:00,000 --> 00:00:06,660\nAlright everyone, we'll be starting in 10 minutes. Please make your way to the stage area. We'll be starting in 10 minutes.\n\n2\n00:00:30,000 --> 00:00:59,980\n Thank you.\n\n3\n00:01:00,000 --> 00:01:29,980\n\n\n\n\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u74b0\u5883\n\n$ dpkg-query -W python3 python3-venv ffmpeg\nffmpeg 7:7.1.3-0+deb13u1\npython3 3.13.5-1\npython3-venv 3.13.5-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux 13 (trixie)\nRelease: 13\n$ arch\nx86_64\n\n\n\n\u52d5\u753b\u7de8\u96c6\uff0c\u6587\u5b57\u8d77\u3053\u3057\u74b0\u5883\n\n$ dpkg-query -W ffmpeg\nffmpeg 7:8.1-3+b1\na$ git remote -v\norigin https://github.com/ggerganov/whisper.cpp.git (fetch)\norigin https://github.com/ggerganov/whisper.cpp.git (push)\n$ git log --pretty=oneline -1\n95ea8f9bfb03a15db08a8989966fd1ae3361e20d (HEAD -> master, origin/master, origin/HEAD) sync : ggml\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2026-04-01T07:10:47+09:00", "date_modified": "2026-04-01T07:10:49+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "ffmpeg", "Twitter", "Debian", "Linux", "sid", "trixie" ] }, { "id": "https://matoken.org/blog/?p=5399", "url": "https://matoken.org/blog/2026/03/31/firefox-duck-ai/", "title": "Firefox\u306eAI\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092Duck.ai\u306b\u5909\u66f4\u3057\u3066\u307f\u308b", "content_html": "
\n
\n

\n
\n

\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306eFirefox 133 \u304b\u3089\u30b5\u30a4\u30c9\u30d0\u30fc\u306bAI\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n\n
\n

\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u306f\u8907\u6570\u304b\u3089\u9078\u629e\u3067\u304d\u307e\u3059\u304c\uff0c\u30d7\u30ea\u30bb\u30c3\u30c8\u306e\u3082\u306e\u4ee5\u5916\u306e\u5225\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066duck.ai \u3092\u8ffd\u52a0\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\nDuck.ai \u306fDuckDuckGo \u7d4c\u7531\u3067\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u3092\u3042\u308b\u7a0b\u5ea6\u4fdd\u3063\u305f\u307e\u307e\u5229\u7528\u3067\u304d\u308b\u306e\u304c\u500b\u4eba\u7684\u306b\u597d\u304d\u3067\u3059\uff0eDuckDuckGo \u3084Duck.ai \u306fTor \u7d4c\u7531\u3067\u3082\u5229\u7528\u3067\u304d\u308b\u306e\u3067\u3044\u3064\u3082\u306f\u305d\u3061\u3089\u304b\u3089\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n

\n
\n

\u4ee5\u4e0b\u306bduck.ai \u306e\u8ffd\u52a0\u306e\u8981\u671b\u304c\u51fa\u3066\u3044\u3066\uff0c\u30b3\u30e1\u30f3\u30c8\u306b\u30ef\u30fc\u30af\u30a2\u30e9\u30a6\u30f3\u30c9\u306e\u66f8\u304b\u308c\u305f\u30b3\u30e1\u30f3\u30c8\u304c\u3042\u308b\u306e\u3067\u771f\u4f3c\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n\n
\n

\u307e\u305a\uff0c\u8a2d\u5b9a\u304b\u3089\u300cAI \u5236\u5fa1\u300d→\u300c\u30b5\u30a4\u30c9\u30d0\u30fc\u306e AI \u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u300d\u304b\u3089\u300c\u30b5\u30a4\u30c9\u30d0\u30fc\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u300d\u3092\u300c\u5229\u7528\u53ef\u80fd\u300d\u306b\u3057\u3066\u304a\u304d\u307e\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n

\u6b21\u306b\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u306b about:config \u3092\u5165\u529b\u3057\u3066\u300c\u9ad8\u5ea6\u306a\u8a2d\u5b9a\u300d\u3092\u958b\u304d\u307e\u3059\uff0e\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u304c\uff0c\u300c\u5371\u967a\u6027\u3092\u627f\u77e5\u306e\u4e0a\u3067\u4f7f\u7528\u3059\u308b\u300d\u3092\u62bc\u3057\u3066\u5f37\u884c\u3057\u307e\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n

\u691c\u7d22\u6b04\u306b browser.ml.chat.provider \u3092\u5165\u529b\uff0c\u925b\u7b46\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306b\uff0c https://duck.ai/ \u3092\u5165\u529b\u3057\u3066Enter \u3092\u62bc\u3057\u3066\u78ba\u5b9a\u3057\u307e\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n

\u8a2d\u5b9a\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u304c https://duck.ai/ \u306b\u5909\u308f\u308a\u307e\u3057\u305f\uff0e\u3068\u308a\u3042\u3048\u305a\u3053\u308c\u3067OK \u3067\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n\n\n\n\n\n
\n
Tip
\n
\n
\n

NoScript \u306a\u3069\u306e\u62e1\u5f35\u6a5f\u80fd\u3067JavaScript \u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u308b\u5834\u5408\uff0cduck.ai \u306eJavaScript \u3092\u8a31\u53ef\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n
\n
\n

\u30b5\u30a4\u30c9\u30d0\u30fc\u306e AI \u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u958b\u304f\u3068\u3053\u3093\u306a\u611f\u3058\uff0c\u3053\u308c\u3092\u771f\u306b\u53d7\u3051\u308b\u306a\u3089DuckDuckGo \u7d4c\u7531\u3067\u5404\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u306b\u63a5\u7d9a\u3057\u3066\u533f\u540d\u3092\u4fdd\u3063\u3066\u304f\u308c\u308b\u3057\uff0c\u30c7\u30fc\u30bf\u306e\u4fdd\u6301\u3082\u30ed\u30fc\u30ab\u30eb\u306b\uff0c\u305d\u3057\u3066\u30c1\u30e3\u30c3\u30c8\u5185\u5bb9\u306fAI\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u5229\u7528\u3055\u308c\u306a\u3044\u3068\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n

\u3053\u306e\u8a18\u4e8b\u3092\u66f8\u3044\u3066\u3044\u308b\u6642\u70b9\u3067\u9078\u629e\u3067\u304d\u308b\u30c1\u30e3\u30c3\u30c8\u30e2\u30c7\u30eb\u306f\uff0c\u300cGPT-5 mini\u300d\uff0c\u300cGPT-40 mini\u300d\uff0c\u300cgpt-oss120B\u300d\uff0c\u300cLlama 4 Scout\u300d\uff0c\u300cClaude Haiku 4.5\u300d\uff0c\u300cMistral Small 3\u300d\u306e6\u3064\uff0e\u3053\u3053\u306f\u5076\u306b\u5909\u308f\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n

\u4ee5\u4e0b\u306f\u8a18\u4e8b\u306e\u8981\u7d04\u3092\u884c\u3063\u305f\u3068\u304d\u306e\u4f8b\u3067\u3059\uff0e

\n
\n
\n
\n\"firefox\n
\n
\n
\n

\u3061\u306a\u307f\u306b\u3053\u306e\u8a2d\u5b9a\u306f\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u5909\u66f4\u3057\u305f\u308a\u7121\u52b9\u306b\u3057\u305f\u3089\u6d88\u3048\u3066\u3057\u307e\u3046\u306e\u3067\u518d\u5ea6\u8a2d\u5b9a\u3057\u76f4\u3057\u304c\u5fc5\u8981\u305d\u3046\u3067\u3059\uff0e\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u304b\u3089\u4efb\u610f\u306e\u8907\u6570\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u3068\u3044\u3044\u3067\u3059\u306d\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W firefox firefox-l10n-ja\nfirefox 149.0-1\nfirefox-l10n-ja 149.0-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n", "content_text": "\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306eFirefox 133 \u304b\u3089\u30b5\u30a4\u30c9\u30d0\u30fc\u306bAI\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\nAccess AI chatbots in Firefox | Firefox \u30d8\u30eb\u30d7\n\n\n\n\n\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u306f\u8907\u6570\u304b\u3089\u9078\u629e\u3067\u304d\u307e\u3059\u304c\uff0c\u30d7\u30ea\u30bb\u30c3\u30c8\u306e\u3082\u306e\u4ee5\u5916\u306e\u5225\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066duck.ai \u3092\u8ffd\u52a0\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\nDuck.ai \u306fDuckDuckGo \u7d4c\u7531\u3067\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u3092\u3042\u308b\u7a0b\u5ea6\u4fdd\u3063\u305f\u307e\u307e\u5229\u7528\u3067\u304d\u308b\u306e\u304c\u500b\u4eba\u7684\u306b\u597d\u304d\u3067\u3059\uff0eDuckDuckGo \u3084Duck.ai \u306fTor \u7d4c\u7531\u3067\u3082\u5229\u7528\u3067\u304d\u308b\u306e\u3067\u3044\u3064\u3082\u306f\u305d\u3061\u3089\u304b\u3089\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\u4ee5\u4e0b\u306bduck.ai \u306e\u8ffd\u52a0\u306e\u8981\u671b\u304c\u51fa\u3066\u3044\u3066\uff0c\u30b3\u30e1\u30f3\u30c8\u306b\u30ef\u30fc\u30af\u30a2\u30e9\u30a6\u30f3\u30c9\u306e\u66f8\u304b\u308c\u305f\u30b3\u30e1\u30f3\u30c8\u304c\u3042\u308b\u306e\u3067\u771f\u4f3c\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\n\n\nAdd Duck.ai to Firefox Chatbot Sidebar – Mozilla Connect\n\n\n\n\n\u307e\u305a\uff0c\u8a2d\u5b9a\u304b\u3089\u300cAI \u5236\u5fa1\u300d→\u300c\u30b5\u30a4\u30c9\u30d0\u30fc\u306e AI \u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u300d\u304b\u3089\u300c\u30b5\u30a4\u30c9\u30d0\u30fc\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u300d\u3092\u300c\u5229\u7528\u53ef\u80fd\u300d\u306b\u3057\u3066\u304a\u304d\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\u6b21\u306b\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u306b about:config \u3092\u5165\u529b\u3057\u3066\u300c\u9ad8\u5ea6\u306a\u8a2d\u5b9a\u300d\u3092\u958b\u304d\u307e\u3059\uff0e\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u304c\uff0c\u300c\u5371\u967a\u6027\u3092\u627f\u77e5\u306e\u4e0a\u3067\u4f7f\u7528\u3059\u308b\u300d\u3092\u62bc\u3057\u3066\u5f37\u884c\u3057\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\u691c\u7d22\u6b04\u306b browser.ml.chat.provider \u3092\u5165\u529b\uff0c\u925b\u7b46\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306b\uff0c https://duck.ai/ \u3092\u5165\u529b\u3057\u3066Enter \u3092\u62bc\u3057\u3066\u78ba\u5b9a\u3057\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\u8a2d\u5b9a\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u304c https://duck.ai/ \u306b\u5909\u308f\u308a\u307e\u3057\u305f\uff0e\u3068\u308a\u3042\u3048\u305a\u3053\u308c\u3067OK \u3067\u3059\uff0e\n\n\n\n\n\n\n\n\n\n\nTip\n\n\n\nNoScript \u306a\u3069\u306e\u62e1\u5f35\u6a5f\u80fd\u3067JavaScript \u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u308b\u5834\u5408\uff0cduck.ai \u306eJavaScript \u3092\u8a31\u53ef\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\n\n\n\n\u30b5\u30a4\u30c9\u30d0\u30fc\u306e AI \u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u958b\u304f\u3068\u3053\u3093\u306a\u611f\u3058\uff0c\u3053\u308c\u3092\u771f\u306b\u53d7\u3051\u308b\u306a\u3089DuckDuckGo \u7d4c\u7531\u3067\u5404\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u306b\u63a5\u7d9a\u3057\u3066\u533f\u540d\u3092\u4fdd\u3063\u3066\u304f\u308c\u308b\u3057\uff0c\u30c7\u30fc\u30bf\u306e\u4fdd\u6301\u3082\u30ed\u30fc\u30ab\u30eb\u306b\uff0c\u305d\u3057\u3066\u30c1\u30e3\u30c3\u30c8\u5185\u5bb9\u306fAI\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u5229\u7528\u3055\u308c\u306a\u3044\u3068\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\u3053\u306e\u8a18\u4e8b\u3092\u66f8\u3044\u3066\u3044\u308b\u6642\u70b9\u3067\u9078\u629e\u3067\u304d\u308b\u30c1\u30e3\u30c3\u30c8\u30e2\u30c7\u30eb\u306f\uff0c\u300cGPT-5 mini\u300d\uff0c\u300cGPT-40 mini\u300d\uff0c\u300cgpt-oss120B\u300d\uff0c\u300cLlama 4 Scout\u300d\uff0c\u300cClaude Haiku 4.5\u300d\uff0c\u300cMistral Small 3\u300d\u306e6\u3064\uff0e\u3053\u3053\u306f\u5076\u306b\u5909\u308f\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\n\n\n\n\u4ee5\u4e0b\u306f\u8a18\u4e8b\u306e\u8981\u7d04\u3092\u884c\u3063\u305f\u3068\u304d\u306e\u4f8b\u3067\u3059\uff0e\n\n\n\n\n\n\n\n\u3061\u306a\u307f\u306b\u3053\u306e\u8a2d\u5b9a\u306f\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092\u5909\u66f4\u3057\u305f\u308a\u7121\u52b9\u306b\u3057\u305f\u3089\u6d88\u3048\u3066\u3057\u307e\u3046\u306e\u3067\u518d\u5ea6\u8a2d\u5b9a\u3057\u76f4\u3057\u304c\u5fc5\u8981\u305d\u3046\u3067\u3059\uff0e\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u304b\u3089\u4efb\u610f\u306e\u8907\u6570\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u3068\u3044\u3044\u3067\u3059\u306d\uff0e\n\n\n\u74b0\u5883\n\n$ dpkg-query -W firefox firefox-l10n-ja\nfirefox 149.0-1\nfirefox-l10n-ja 149.0-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2026-03-31T06:15:21+09:00", "date_modified": "2026-03-31T06:15:22+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Duck.ai", "DuckDuckGo", "Firefox", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5381", "url": "https://matoken.org/blog/2026/03/29/firefox-149_tabnote/", "title": "Firefox 149\u306e\u30bf\u30d6\u30ce\u30fc\u30c8\u6a5f\u80fd\u3068\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u65b9\u6cd5", "content_html": "
\n
\n

\n
\n

Mozilla\u306e\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306eFirefox 149\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e\u65b0\u6a5f\u80fd\u306e\u4e00\u3064\u306e\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n\n

\n

\n
\n
\n

\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b

\n
\n
\n

\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u8a2d\u5b9a\u3067\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e
\n\u53f3\u4e0a\u306e\u300c\u2261\u300d\u30a2\u30a4\u30b3\u30f3→\u300c\u8a2d\u5b9a\u300d\u3067\u8a2d\u5b9a\u753b\u9762\u3092\u958b\u304d\uff0c\u5de6\u5074\u306e\u300cFirefox Labs\u300d\u3092\u30af\u30ea\u30c3\u30af\uff0c\u300c\u30bf\u30d6\u30ce\u30fc\u30c8\u300d\u306b\u30c1\u30a7\u30c3\u30af\u3067\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
\n\"Firefox149\n
\n
\n
\n
\n
\n

\u30bf\u30d6\u30ce\u30fc\u30c8\u306e\u5229\u7528

\n
\n
\n

\u30ce\u30fc\u30c8\u3092\u8ffd\u52a0\u3057\u305f\u3044\u8a72\u5f53\u30bf\u30d6\u3067\u53f3\u30af\u30ea\u30c3\u30af→\u300c\u30ce\u30fc\u30c8\u3092\u8ffd\u52a0\u300d\u304b\uff0c\u8a72\u5f53\u30bf\u30d6\u30db\u30d0\u30fc→\u300c\u30ce\u30fc\u30c8\u3092\u8ffd\u52a0\u300d\u3067\u30bf\u30d6\u30ce\u30fc\u30c8\u304c\u66f8\u3051\u307e\u3059\uff0e
\n\u7de8\u96c6\uff0c\u524a\u9664\u306f\u53f3\u30af\u30ea\u30c3\u30af\u304b\u3089\u300c\u30ce\u30fc\u30c8\u3092\u66f4\u65b0\u300d→\u300c\u30ce\u30fc\u30c8\u3092\u66f4\u65b0\u300d or \u300c\u30ce\u30fc\u30c8\u3092\u524a\u9664\u300d\u3067\u884c\u3048\u307e\u3059\uff0e
\n\u30bf\u30d6\u3092\u9589\u3058\u305f\u5f8c\u307e\u305f\u958b\u304f\u3068\u3061\u3083\u3093\u3068\u30e1\u30e2\u306f\u6b8b\u3063\u3066\u3044\u307e\u3057\u305f\uff0e

\n
\n
\n
\n\"Firefox149\n
\n
\n
\n
\n\"Firefox149\n
\n
\n
\n
\n\"Firefox149\n
\n
\n
\n
\n
\n

\u30bf\u30d6\u30ce\u30fc\u30c8\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8

\n
\n
\n

\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u66f8\u304d\u51fa\u3057\u3066\u307f\u307e\u3059\uff0e
\n\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u898b\u308b\u3068\uff0c\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4ee5\u4e0b\u306e tabnotes.sqlite \u304c\u305d\u308c\u3063\u307d\u3044\u3067\u3059\uff0e\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066csv \u3067\u66f8\u304d\u51fa\u3057\u304c\u3067\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
Firefox \u304c\u5b9f\u884c\u4e2d\u3060\u3068\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u9069\u5f53\u306a\u5834\u6240\u306b\u30b3\u30d4\u30fc
\n
\n
$ cp ~/.mozilla/firefox/4q5mj0jg.default-release-2/tabnotes.sqlite /tmp/
\n
\n
\n
\n
id, URL, \u80fd\u767b\u3068\u30c6\u30ad\u30b9\u30c8\uff0c\u4f5c\u6210\u65e5\u3092csv \u3067\u66f8\u304d\u51fa\u3057
\n
\n
$ sqlite3 -readonly -header -csv /tmp/tabnotes.sqlite \"SELECT id, canonical_url, note_text, datetime(created,'unixepoch','localtime') AS created FROM tabnotes ORDER BY created DESC;\"\nid,canonical_url,note_text,created\n4,https://snac.matoken.org/matoken/admin,\"\u500b\u4eba\u7528snac\",\"2026-03-29 05:58:56\"\n3,https://codeberg.org/grunfink/snac2,\"\u8efd\u91cfActivityPub server `snac' \u306e\u30ea\u30dd\u30b8\u30c8\u30ea\",\"2026-03-27 19:52:19\"\n2,https://www.sony.jp/tablet/products/P1/specification.html,\"2\u753b\u9762\u30b3\u30f3\u30d1\u30af\u30c8Android \u30bf\u30d6\u30ec\u30c3\u30c8\",\"2026-03-27 19:48:17\"\n1,https://ja.wikipedia.org/wiki/%E6%96%B9%E9%89%9B%E9%89%B1,\"\u65b9\u925b\u9271\",\"2026-03-27 19:37:41\"
\n
\n
\n
\n\n\n\n\n\n
\n
Tip
\n
\n
\n

Firefox \u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\uff0e

\n
\n\n
\n
\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\n
$ dpkg-query -W firefox firefox-l10n-ja\nfirefox 149.0-1\nfirefox-l10n-ja 149.0-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n
\n

toot

\n
\n\n
\n
\n", "content_text": "Mozilla\u306e\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306eFirefox 149\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e\u65b0\u6a5f\u80fd\u306e\u4e00\u3064\u306e\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\nFirefox 149.0, See All New Features, Updates and Fixes\n\n\n\n\n\n\n\n\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\n\n\n\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u8a2d\u5b9a\u3067\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e\n\u53f3\u4e0a\u306e\u300c\u2261\u300d\u30a2\u30a4\u30b3\u30f3→\u300c\u8a2d\u5b9a\u300d\u3067\u8a2d\u5b9a\u753b\u9762\u3092\u958b\u304d\uff0c\u5de6\u5074\u306e\u300cFirefox Labs\u300d\u3092\u30af\u30ea\u30c3\u30af\uff0c\u300c\u30bf\u30d6\u30ce\u30fc\u30c8\u300d\u306b\u30c1\u30a7\u30c3\u30af\u3067\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\n\n\u30bf\u30d6\u30ce\u30fc\u30c8\u306e\u5229\u7528\n\n\n\u30ce\u30fc\u30c8\u3092\u8ffd\u52a0\u3057\u305f\u3044\u8a72\u5f53\u30bf\u30d6\u3067\u53f3\u30af\u30ea\u30c3\u30af→\u300c\u30ce\u30fc\u30c8\u3092\u8ffd\u52a0\u300d\u304b\uff0c\u8a72\u5f53\u30bf\u30d6\u30db\u30d0\u30fc→\u300c\u30ce\u30fc\u30c8\u3092\u8ffd\u52a0\u300d\u3067\u30bf\u30d6\u30ce\u30fc\u30c8\u304c\u66f8\u3051\u307e\u3059\uff0e\n\u7de8\u96c6\uff0c\u524a\u9664\u306f\u53f3\u30af\u30ea\u30c3\u30af\u304b\u3089\u300c\u30ce\u30fc\u30c8\u3092\u66f4\u65b0\u300d→\u300c\u30ce\u30fc\u30c8\u3092\u66f4\u65b0\u300d or \u300c\u30ce\u30fc\u30c8\u3092\u524a\u9664\u300d\u3067\u884c\u3048\u307e\u3059\uff0e\n\u30bf\u30d6\u3092\u9589\u3058\u305f\u5f8c\u307e\u305f\u958b\u304f\u3068\u3061\u3083\u3093\u3068\u30e1\u30e2\u306f\u6b8b\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u30bf\u30d6\u30ce\u30fc\u30c8\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\n\n\n\u30bf\u30d6\u30ce\u30fc\u30c8\u3092\u66f8\u304d\u51fa\u3057\u3066\u307f\u307e\u3059\uff0e\n\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u898b\u308b\u3068\uff0c\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4ee5\u4e0b\u306e tabnotes.sqlite \u304c\u305d\u308c\u3063\u307d\u3044\u3067\u3059\uff0e\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066csv \u3067\u66f8\u304d\u51fa\u3057\u304c\u3067\u304d\u307e\u3057\u305f\uff0e\n\n\nFirefox \u304c\u5b9f\u884c\u4e2d\u3060\u3068\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u9069\u5f53\u306a\u5834\u6240\u306b\u30b3\u30d4\u30fc\n\n$ cp ~/.mozilla/firefox/4q5mj0jg.default-release-2/tabnotes.sqlite /tmp/\n\n\n\nid, URL, \u80fd\u767b\u3068\u30c6\u30ad\u30b9\u30c8\uff0c\u4f5c\u6210\u65e5\u3092csv \u3067\u66f8\u304d\u51fa\u3057\n\n$ sqlite3 -readonly -header -csv /tmp/tabnotes.sqlite \"SELECT id, canonical_url, note_text, datetime(created,'unixepoch','localtime') AS created FROM tabnotes ORDER BY created DESC;\"\nid,canonical_url,note_text,created\n4,https://snac.matoken.org/matoken/admin,\"\u500b\u4eba\u7528snac\",\"2026-03-29 05:58:56\"\n3,https://codeberg.org/grunfink/snac2,\"\u8efd\u91cfActivityPub server `snac' \u306e\u30ea\u30dd\u30b8\u30c8\u30ea\",\"2026-03-27 19:52:19\"\n2,https://www.sony.jp/tablet/products/P1/specification.html,\"2\u753b\u9762\u30b3\u30f3\u30d1\u30af\u30c8Android \u30bf\u30d6\u30ec\u30c3\u30c8\",\"2026-03-27 19:48:17\"\n1,https://ja.wikipedia.org/wiki/%E6%96%B9%E9%89%9B%E9%89%B1,\"\u65b9\u925b\u9271\",\"2026-03-27 19:37:41\"\n\n\n\n\n\n\nTip\n\n\n\nFirefox \u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\uff0e\n\n\n\n\nProfiles – Where Firefox stores your bookmarks, passwords and other user data | Firefox Help\n\n\n\n\n\n\n\n\n\n\n\u74b0\u5883\n\n\n\n$ dpkg-query -W firefox firefox-l10n-ja\nfirefox 149.0-1\nfirefox-l10n-ja 149.0-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\n\n\ntoot\n\n\n\n\nmatoken :fox:: “Firefox 149 \u65b0\u6a5f\u80fd\u306e\u4e00\u3064\u306e\u30bf\u30d6\u3078\u306e\u30ce\u30fc\u30c8\u6a5f\u80fd \u8a72\u2026” – \u3044\u306a\u3053\u3093", "date_published": "2026-03-29T07:01:24+09:00", "date_modified": "2026-03-29T18:20:00+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Firefox", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5332", "url": "https://matoken.org/blog/2026/03/13/firefox-extension-snapwer/", "title": "Web\u4e0a\u306eActivityPub\u6295\u7a3f\u3092snac\u3067\u4f7f\u3044\u3084\u3059\u304f\u3059\u308bFirefox\u62e1\u5f35\u6a5f\u80fd\u306eSnacWer", "content_html": "
\n
\n
\n

\"snac

\n
\n
\n

\u8efd\u91cfActivityPub server \u306esnac\u7528Firefox addon \u3092\u77e5\u3063\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

\u3053\u306eAddOn\u4f5c\u8005\u306e\u65b9\u306etoot\u3092snac\u306e\u4f5c\u8005\u304cboost\u3057\u3066\u3044\u305f\u306e\u3067\u77e5\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n

Hello #snac users. If you enjoy exploring the Fediverse via the web, you might find this #FirefoxExtension I created helpful. It lets you interact with almost any post more easily. It also works, of course, on Firefox derivates.

\n
\n
\n

Feel free to take a look.

\n
\n\n\n
\n\n
\n
\n

Web\u3067snac\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3068\u304d\u306b\u4fbf\u5229\u306b\u306a\u308b\u62e1\u5f35\u6a5f\u80fd\u306e\u3088\u3046\u3067\u3059\uff0e
\n\u65e9\u901f\u5c0e\u5165\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n

\u4ee5\u4e0b\u304b\u3089Firefox\u306b\u62e1\u5f35\u6a5f\u80fd\u3092\u767b\u9332\u3057\u307e\u3059\uff0e

\n
\n\n
\n

\u62e1\u5f35\u6a5f\u80fd\u306e\u8a2d\u5b9a\u304b\u3089\u81ea\u5206\u306esnac\u30a2\u30c9\u30ec\u30b9\u3092\u767b\u9332\u3057\u307e\u3059\uff0e\u3053\u308c\u3067\u6e96\u5099\u5b8c\u4e86\u3067\u3059\uff0e

\n
\n
\n

\"snacwer00\"

\n
\n
\n

\u8a66\u3057\u306b\u4f7f\u3063\u3066\u307f\u307e\u3057\u3087\u3046\uff0eMastodon\u306a\u3069\u306eActivityPub\u306e\u516c\u958b\u6295\u7a3f\u3092\u958b\u304d\u307e\u3059\uff0e\u3059\u308b\u3068\uff0c\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u306e\u53f3\u5074\u306bsnac\u306e\u30a2\u30a4\u30b3\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e

\n
\n
\n

\"snacwer01\"

\n
\n
\n

snac\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u8a2d\u5b9a\u3057\u305f\u81ea\u5206\u306esnac\u3067\u305d\u306e\u6295\u7a3f\u304c\u958b\u304b\u308c\u307e\u3059\uff0e\u3053\u3053\u3067Like\u3084Boost\u306a\u3069\u306e\u64cd\u4f5c\u304c\u3067\u304d\u307e\u3059\uff0eURL\u3092\u30b3\u30d4\u30fc\u3057\u3066snac\u306b\u6301\u3063\u3066\u3044\u3063\u305f\u308a\u3059\u308b\u3088\u308a\u4fbf\u5229\u3067\u3059 :)

\n
\n
\n

\"snacwer02\"

\n
\n
\n
\u74b0\u5883
\n
\n
\n

SnacWer \u30d0\u30fc\u30b8\u30e7\u30f3 1.0.1

\n
\n
\n
\n
\n
\n
$ dpkg-query -W firefox\nfirefox 148.0.2-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n\n
\n
\n", "content_text": "\u8efd\u91cfActivityPub server \u306esnac\u7528Firefox addon \u3092\u77e5\u3063\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\u3053\u306eAddOn\u4f5c\u8005\u306e\u65b9\u306etoot\u3092snac\u306e\u4f5c\u8005\u304cboost\u3057\u3066\u3044\u305f\u306e\u3067\u77e5\u308a\u307e\u3057\u305f\uff0e\n\n\n\n\nHello #snac users. If you enjoy exploring the Fediverse via the web, you might find this #FirefoxExtension I created helpful. It lets you interact with almost any post more easily. It also works, of course, on Firefox derivates.\n\n\nFeel free to take a look.\n\n\nhttps://addons.mozilla.org/addon/snacwer/\n\n\nSource code:\nhttps://codeberg.org/fidiben/SnacWer\n\n\n\n— unlogged (@unlogged@snac.unlogged.it)\n\n\n\nWeb\u3067snac\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3068\u304d\u306b\u4fbf\u5229\u306b\u306a\u308b\u62e1\u5f35\u6a5f\u80fd\u306e\u3088\u3046\u3067\u3059\uff0e\n\u65e9\u901f\u5c0e\u5165\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\n\u4ee5\u4e0b\u304b\u3089Firefox\u306b\u62e1\u5f35\u6a5f\u80fd\u3092\u767b\u9332\u3057\u307e\u3059\uff0e\n\n\n\n\nSnacWer \u2013 Firefox (ja) \u5411\u3051\u62e1\u5f35\u6a5f\u80fd\u3092\u5165\u624b\n\n\n\n\n\u62e1\u5f35\u6a5f\u80fd\u306e\u8a2d\u5b9a\u304b\u3089\u81ea\u5206\u306esnac\u30a2\u30c9\u30ec\u30b9\u3092\u767b\u9332\u3057\u307e\u3059\uff0e\u3053\u308c\u3067\u6e96\u5099\u5b8c\u4e86\u3067\u3059\uff0e\n\n\n\n\n\n\u8a66\u3057\u306b\u4f7f\u3063\u3066\u307f\u307e\u3057\u3087\u3046\uff0eMastodon\u306a\u3069\u306eActivityPub\u306e\u516c\u958b\u6295\u7a3f\u3092\u958b\u304d\u307e\u3059\uff0e\u3059\u308b\u3068\uff0c\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u306e\u53f3\u5074\u306bsnac\u306e\u30a2\u30a4\u30b3\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e\n\n\n\n\n\nsnac\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u8a2d\u5b9a\u3057\u305f\u81ea\u5206\u306esnac\u3067\u305d\u306e\u6295\u7a3f\u304c\u958b\u304b\u308c\u307e\u3059\uff0e\u3053\u3053\u3067Like\u3084Boost\u306a\u3069\u306e\u64cd\u4f5c\u304c\u3067\u304d\u307e\u3059\uff0eURL\u3092\u30b3\u30d4\u30fc\u3057\u3066snac\u306b\u6301\u3063\u3066\u3044\u3063\u305f\u308a\u3059\u308b\u3088\u308a\u4fbf\u5229\u3067\u3059 :)\n\n\n\n\n\n\u74b0\u5883\n\n\nSnacWer \u30d0\u30fc\u30b8\u30e7\u30f3 1.0.1\n\n\n\n\n\n$ dpkg-query -W firefox\nfirefox 148.0.2-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\ntoot\n\n\nunlogged (@unlogged@snac.unlogged.it)\n\n\nmatoken:susie: (@matoken@snac.matoken.org)", "date_published": "2026-03-13T06:45:02+09:00", "date_modified": "2026-03-13T06:45:05+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "ActivityPub", "Firefox", "snac", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5297", "url": "https://matoken.org/blog/2026/03/02/ndlocr-lite/", "title": "dGPU\u304c\u306a\u304f\u3066\u3082\u52d5\u4f5c\u3059\u308b\u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u306eNDLOCR-Lite\u304c\u516c\u958b\u3055\u308c\u3066\u3044\u305f\u306e\u3067\u8a66\u3059", "content_html": "
\n
\n

\n
\n

\u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u304cNDL\u30e9\u30dc\u3067NDLOCR-Lite \u3092\u516c\u958b\u3057\u307e\u3057\u305f\uff0e
\n\u5143\u3005NDLOCR \u304c\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304cCUDA \u5bfe\u5fdc\u306eNVIDIA GPU \u304c\u5fc5\u9808\u3067\u3057\u305f\uff0e\u4eca\u56de\u306eNDLOCR-Lite \u306fdGPU \u306e\u7121\u3044PC \u3067\u3082\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306a\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n

\n
\n
\n
\n

NDLOCR-Lite\u306f\u3001NDLOCR\u306e\u8efd\u91cf\u7248\u3092\u76ee\u6307\u3057\u3066\u958b\u767a\u3057\u305fOCR\u3067\u3042\u308a\u3001\u30ce\u30fc\u30c8\u30d1\u30bd\u30b3\u30f3\u7b49\u306e\u4e00\u822c\u7684\u306a\u5bb6\u5ead\u7528\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u3084OS\u74b0\u5883\u3067\u3001\u56f3\u66f8\u3084\u96d1\u8a8c\u3068\u3044\u3063\u305f\u8cc7\u6599\u306e\u30c7\u30b8\u30bf\u30eb\u5316\u753b\u50cf\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u304c\u4f5c\u6210\u3067\u304d\u308bOCR\u3067\u3059\u3002

\n
\n
\n

GPU\uff08Graphics Processing Unit\u3002\u753b\u50cf\u63cf\u753b\u7b49\u306e\u9ad8\u5ea6\u306a\u4e26\u5217\u8a08\u7b97\u3092\u51e6\u7406\u3059\u308b\u88c5\u7f6e\u3002\uff09\u3092\u5fc5\u8981\u3068\u305b\u305a\u3001\u8efd\u91cf\u306aOCR\u51e6\u7406\u304c\u53ef\u80fd\u3067\u3059\u3002

\n
\n
\n

\u307e\u305f\u3001NDLOCR\u304c\u4e0d\u5f97\u610f\u3068\u3057\u3066\u3044\u305f\u82f1\u6587\u3084\u624b\u66f8\u304d\u6587\u5b57\u7b49\u306b\u3064\u3044\u3066\u3082\u5b9f\u9a13\u7684\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002

\n
\n
\n\n
\n
\n

\u5b9f\u969b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306f\u3053\u3061\u3089\uff0e

\n
\n\n
\n

\u985e\u4f3c\u306e\u3082\u306e\u306bNDL\u53e4\u5178\u7c4dOCR-Lite \u3068\u3044\u3046\u3082\u306e\u3082\u3042\u308a\u307e\u3059\uff0e\u3053\u308c\u3082dGPU \u306e\u5fc5\u8981\u306a\u3044OCR \u3067\u81ea\u5206\u3067\u306f\u8aad\u3081\u306a\u3044\u53e4\u5178\u3092OCR \u3067\u8aad\u3081\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u308a\u3057\u3066\u9762\u767d\u3044\u3067\u3059\uff0e
\n\u4ee5\u4e0b\u306f\u4ee5\u524d #kagokug \u3067\u767a\u8868\u3057\u305f\u95a2\u9023\u8cc7\u6599\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n
\n
\n
    \n
  • \n

    NDLOCR \u8981NVIDIA GPU

    \n
    \n
      \n
    • \n

      NDL\u53e4\u5178\u7c4dOCR-Lite\u306e\u3088\u3046\u306bNDLOCR-Lite\u304c\u51fa\u306a\u3044\u304b\u306a?

      \n
    • \n
    \n
    \n
  • \n
\n
\n
\n
\n
\n

\u3053\u306e\u3068\u304d\u3053\u3093\u306a\u3053\u3068\u3092\u66f8\u3044\u3066\u3044\u307e\u3057\u305f\u304c\u5b9f\u73fe\u3057\u307e\u3057\u305f :)

\n
\n
\n
\n
\n

GUI\u7248\u3092\u8a66\u3059

\n
\n
\n

Windows\u7248\u306f\u4ee5\u4e0b\u306b\u4f7f\u3044\u65b9\u304c\u3042\u308a\u307e\u3059\uff0e\u81ea\u5206\u306fLinux\u7248\u3092\u8a66\u3057\u307e\u3057\u305f\u304c\u8d77\u52d5\u5f8c\u306e\u64cd\u4f5c\u306f\u540c\u3058\u3060\u3068\u601d\u3044\u307e\u3059\uff0e

\n
\n\n
\n

GitHub \u306eReleases \u304b\u3089\u6700\u65b0\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u5165\u624b\u3057\u307e\u3059\uff0ev1.1.0 \u6642\u70b9\u3067\u306fLinux amd64 / macOS arm64, amd64 / Windows(amd64?) \u304c\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e\u3053\u3053\u3067\u306fLinux\u7248\uff0e

\n
\n
\n
\n
$ wget -c https://github.com/ndl-lab/ndlocr-lite/releases/download/1.1.0/ndlocr_lite_v1.1.0_linux.tar.gz (1)\n$ sha512sum ndlocr_lite_v1.1.0_linux.tar.gz (2)\n61faed1fc843266095852697bbf29a721db4fb5a054f6d66ae8850301d22a4b1e29535eed150e439f7fd35760a17790a39cf0d45afd7c0ed72e7a3928e47ed93  ndlocr_lite_v1.1.0_linux.tar.gz\n$ fuse-archive ndlocr_lite_v1.1.0_linux.tar.gz (3)\n$ file ndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui (4)\nndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=55e769c1bfe893353a55cdddbe7066033dc540bf, for GNU/Linux 3.2.0, not stripped\n$ ndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui (5)
\n
\n
\n
\n
    \n
  1. \n

    \u30d0\u30a4\u30ca\u30ea\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u5165\u624b

    \n
  2. \n
  3. \n

    hash

    \n
  4. \n
  5. \n

    fuse-archive \u3067\u30a2\u30c9\u30db\u30c3\u30af\u306b\u5c55\u958b

    \n
  6. \n
  7. \n

    \u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3092\u78ba\u8a8d

    \n
  8. \n
  9. \n

    NDLOCR-Lite \u5b9f\u884c

    \n
  10. \n
\n
\n
\n

NDL\u53e4\u5178\u7c4dOCR-Lite \u3068\u540c\u3058\u3088\u3046\u306b\u6271\u3048\u308b\u611f\u3058\u3067\u3059\uff0e\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\uff0c\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306e\u683c\u7d0d\u3055\u308c\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304b\u3089\u4e00\u62ec\u51e6\u7406\u306a\u3069\u304c\u53ef\u80fd\u3067\u3059\uff0e
\n\u305d\u306e\u4ed6\uff0c\u753b\u9762\u306e\u6307\u5b9a\u3057\u305f\u7bc4\u56f2\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3066OCR \u3059\u308b\u30ad\u30e3\u30d7\u30c1\u30e3\u30e2\u30fc\u30c9\u3082\u4fbf\u5229\u3067\u3059\uff0e\u305f\u3060\uff0c\u3053\u306e\u30e2\u30fc\u30c9\u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u306fi3 wm \u3067\u306f\u5225\u306eworkspace \u306f\u30ad\u30e3\u30d7\u30c1\u30e3\u3067\u304d\u306a\u3055\u305d\u3046\u3067\u5c11\u3057\u4f7f\u3044\u52dd\u624b\u304c\u60aa\u3044\u3067\u3059\uff0e

\n
\n
\n

\"NDLOCR

\n
\n
\n\n\n\n\n\n
\n
Note
\n
\n\u753b\u50cf\u306e\u51fa\u5178\uff1a\u7d0d\u8c37\u53cb\u4e00 \u8a33\u8a3b\u300e\u9ed2\u732b\u300f,\u5065\u6587\u793e,1952. \u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u30c7\u30b8\u30bf\u30eb\u30b3\u30ec\u30af\u30b7\u30e7\u30f3 https://dl.ndl.go.jp/pid/2436688\n
\n
\n
\n
\n
\n

CLI\u7248\u3092\u4f7f\u3046

\n
\n
\n

CLI\u7248\u306fPython 3.10+ \u304c\u5fc5\u8981\u3067\u3059\uff0e\u4eca\u56de\u306fDebian sid amd64 \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u5c0e\u5165\u3057\u305fPython 3.13.12 \u3092\u5229\u7528\u3057\u307e\u3057\u305f\uff0e
\nREADME.md \u306b\u306fpip \u3067\u306e\u5c0e\u5165\u3068\uff0cuv \u3067\u306e\u5c0e\u5165\u304c\u7d39\u4ecb\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\u983b\u7e41\u306b\u4f7f\u3046\u5834\u5408\u306fuv \u306e\u65b9\u304c\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u304a\u597d\u307f\u306e\u65b9\u3067\uff0e

\n
\n
\n
pip \u3067venv \u4ee5\u4e0b\u306b\u5c0e\u5165\u3057\u305f\u4f8b
\n
\n
$ git clone https://github.com/ndl-lab/ndlocr-lite\n$ cd ndlocr-lite\n$ python -m venv venv\n$ source venv/bin/activate\n$ pip install -r requirements.txt\n$ python3 src/ocr.py -h\nusage: ocr.py [-h] [--sourcedir SOURCEDIR] [--sourceimg SOURCEIMG] --output OUTPUT [--viz VIZ] [--det-weights DET_WEIGHTS] [--det-classes DET_CLASSES] [--det-score-threshold DET_SCORE_THRESHOLD] [--det-conf-threshold DET_CONF_THRESHOLD]\n              [--det-iou-threshold DET_IOU_THRESHOLD] [--simple-mode SIMPLE_MODE] [--rec-weights30 REC_WEIGHTS30] [--rec-weights50 REC_WEIGHTS50] [--rec-weights REC_WEIGHTS] [--rec-classes REC_CLASSES] [--device {cpu,cuda}]\n\nArguments for NDLkotenOCR-Lite\n\noptions:\n  -h, --help            show this help message and exit\n  --sourcedir SOURCEDIR\n                        Path to image directory\n  --sourceimg SOURCEIMG\n                        Path to image directory\n  --output OUTPUT       Path to output directory\n  --viz VIZ             Save visualized image\n  --det-weights DET_WEIGHTS\n                        Path to deim onnx file\n  --det-classes DET_CLASSES\n                        Path to list of class in yaml file\n  --det-score-threshold DET_SCORE_THRESHOLD\n  --det-conf-threshold DET_CONF_THRESHOLD\n  --det-iou-threshold DET_IOU_THRESHOLD\n  --simple-mode SIMPLE_MODE\n                        Read line with one model(Setting this option to True will slow down processing, but it simplifies the architecture and may slightly improve accuracy.)\n  --rec-weights30 REC_WEIGHTS30\n                        Path to parseq-tiny onnx file\n  --rec-weights50 REC_WEIGHTS50\n                        Path to parseq-tiny onnx file\n  --rec-weights REC_WEIGHTS\n                        Path to parseq-tiny onnx file\n  --rec-classes REC_CLASSES\n                        Path to list of class in yaml file\n  --device {cpu,cuda}   Device use (cpu or cuda)
\n
\n
\n
\n
uv \u3067\u5c0e\u5165\u3057\u305f\u4f8b
\n
\n
$ git clone https://github.com/ndl-lab/ndlocr-lite\n$ cd ndlocr-lite\n$ uv tool install .\n$ which ndlocr-lite\n/home/matoken/.local/bin/ndlocr-lite\n$ ndlocr-lite --help\nusage: ndlocr-lite [-h] [--sourcedir SOURCEDIR] [--sourceimg SOURCEIMG] --output OUTPUT [--viz VIZ] [--det-weights DET_WEIGHTS] [--det-classes DET_CLASSES] [--det-score-threshold DET_SCORE_THRESHOLD]\n                   [--det-conf-threshold DET_CONF_THRESHOLD] [--det-iou-threshold DET_IOU_THRESHOLD] [--simple-mode SIMPLE_MODE] [--rec-weights30 REC_WEIGHTS30] [--rec-weights50 REC_WEIGHTS50] [--rec-weights REC_WEIGHTS]\n                   [--rec-classes REC_CLASSES] [--device {cpu,cuda}]\n\nArguments for NDLkotenOCR-Lite\n\noptions:\n  -h, --help            show this help message and exit\n  --sourcedir SOURCEDIR\n                        Path to image directory\n  --sourceimg SOURCEIMG\n                        Path to image directory\n  --output OUTPUT       Path to output directory\n  --viz VIZ             Save visualized image\n  --det-weights DET_WEIGHTS\n                        Path to deim onnx file\n  --det-classes DET_CLASSES\n                        Path to list of class in yaml file\n  --det-score-threshold DET_SCORE_THRESHOLD\n  --det-conf-threshold DET_CONF_THRESHOLD\n  --det-iou-threshold DET_IOU_THRESHOLD\n  --simple-mode SIMPLE_MODE\n                        Read line with one model(Setting this option to True will slow down processing, but it simplifies the architecture and may slightly improve accuracy.)\n  --rec-weights30 REC_WEIGHTS30\n                        Path to parseq-tiny onnx file\n  --rec-weights50 REC_WEIGHTS50\n                        Path to parseq-tiny onnx file\n  --rec-weights REC_WEIGHTS\n                        Path to parseq-tiny onnx file\n  --rec-classes REC_CLASSES\n                        Path to list of class in yaml file\n  --device {cpu,cuda}   Device use (cpu or cuda)
\n
\n
\n
\n

\u3082\u3057cuda \u5bfe\u5fdcGPU \u306e\u3042\u308b\u74b0\u5883\u3067\u3042\u308c\u3070\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\u306b --device cuda \u3092\u6e21\u3059\u3053\u3068\u3067\u901f\u304f\u306a\u308b\u3068\u601d\u3044\u307e\u3059\uff0e

\n
\n
\n

cli\u7248\u5b9f\u884c\u4f8b

\n
\n

--sourcedir (\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u8907\u6570\u753b\u50cf)\u304b --sourceimg (1\u3064\u306e\u753b\u50cf\u30d5\u30a1\u30a4\u30eb)\u3067\u51e6\u7406\u5bfe\u8c61\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304b\u51e6\u7406\u5bfe\u8c61\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\uff0c --output \u3067\u7d50\u679c\u306e\u51fa\u529b\u5148\u3092\u6307\u5b9a\uff0c--viz True \u3067\u53ef\u8996\u5316\u753b\u50cf\u3092\u6709\u52b9\u306b\u3057\u3066\u5b9f\u884c\uff08\u30aa\u30d7\u30b7\u30e7\u30f3)

\n
\n
\n
\n
$ time ndlocr-lite --sourcedir . --output . --viz True\n[INFO] Intialize Model\n[INFO] Inference Image\n69\n[INFO] Saving result on ./viz_digidepo_2436688_0001-0.jpg\nTotal calculation time (Detection + Recognition): 13.220851182937622\n  :\nreal    2m15.882s\nuser    10m16.273s\nsys     0m5.189s\n$ ls\ndigidepo_2436688_0001-0.jpg   digidepo_2436688_0001-4.json  digidepo_2436688_0001-8.txt\ndigidepo_2436688_0001-0.json  digidepo_2436688_0001-4.txt   digidepo_2436688_0001-8.xml\ndigidepo_2436688_0001-0.txt   digidepo_2436688_0001-4.xml   digidepo_2436688_0001-9.jpg\ndigidepo_2436688_0001-0.xml   digidepo_2436688_0001-5.jpg   digidepo_2436688_0001-9.json\ndigidepo_2436688_0001-1.jpg   digidepo_2436688_0001-5.json  digidepo_2436688_0001-9.txt\ndigidepo_2436688_0001-1.json  digidepo_2436688_0001-5.txt   digidepo_2436688_0001-9.xml\ndigidepo_2436688_0001-1.txt   digidepo_2436688_0001-5.xml   viz_digidepo_2436688_0001-0.jpg\ndigidepo_2436688_0001-1.xml   digidepo_2436688_0001-6.jpg   viz_digidepo_2436688_0001-1.jpg\ndigidepo_2436688_0001-2.jpg   digidepo_2436688_0001-6.json  viz_digidepo_2436688_0001-2.jpg\ndigidepo_2436688_0001-2.json  digidepo_2436688_0001-6.txt   viz_digidepo_2436688_0001-3.jpg\ndigidepo_2436688_0001-2.txt   digidepo_2436688_0001-6.xml   viz_digidepo_2436688_0001-4.jpg\ndigidepo_2436688_0001-2.xml   digidepo_2436688_0001-7.jpg   viz_digidepo_2436688_0001-5.jpg\ndigidepo_2436688_0001-3.jpg   digidepo_2436688_0001-7.json  viz_digidepo_2436688_0001-6.jpg\ndigidepo_2436688_0001-3.json  digidepo_2436688_0001-7.txt   viz_digidepo_2436688_0001-7.jpg\ndigidepo_2436688_0001-3.txt   digidepo_2436688_0001-7.xml   viz_digidepo_2436688_0001-8.jpg\ndigidepo_2436688_0001-3.xml   digidepo_2436688_0001-8.jpg   viz_digidepo_2436688_0001-9.jpg\ndigidepo_2436688_0001-4.jpg   digidepo_2436688_0001-8.json
\n
\n
\n
\n

\u3053\u3053\u3067\u306e\u30d5\u30a1\u30a4\u30eb\u7fa4\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
digidepo_2436688_0001-“${N}”.jpg
\n
\n

OCR \u5bfe\u8c61\u753b\u50cf

\n
\n
digidepo_2436688_0001-“${N}”.json, digidepo_2436688_0001-“${N}”.txt, digidepo_2436688_0001-“${N}”.xml
\n
\n

OCR \u7d50\u679c

\n
\n
viz_digidepo_2436688_0001-“${N}”.jpg
\n
\n

\u53ef\u8996\u5316\u753b\u50cf(\u30aa\u30d7\u30b7\u30e7\u30f3)

\n
\n
\n
\n
\n

\u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305fpdf \u306e10\u30b3\u30de(20\u30da\u30fc\u30b8\u5206)\u3092Imagemagick \u3067jpeg \u753b\u50cf\u306b\u5909\u63db\u3057\u305f\u3082\u306e\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3057\u305f\u3068\u3053\u308d2\u520616\u79d2\u307b\u3069\u639b\u304b\u308a\u307e\u3057\u305f\uff0e1\u753b\u50cf\u3042\u305f\u308a13.6\u79d2\uff0c1\u30da\u30fc\u30b8\u3042\u305f\u308a6.8\u79d2\u307b\u3069\uff0e\u82f1\u8a9e\u65e5\u672c\u8a9e\u6df7\u3058\u308a\u3067\u3082\u7cbe\u5ea6\u826f\u3055\u305d\u3046\u3067\u3059\uff0e
\nOCR \u74b0\u5883\u306f\uff0cLENOVO ThinkPad L13 (G1), CPU: Intel® Core™ i7-10510U CPU @ 1.80GHz, RAM: DDR4 16GB, SSD: NVMe TOSHIBA KXG6AZNV512G \u306bDebian sid amd64 \u3092\u5c0e\u5165\u3057\u305f\u74b0\u5883\u3067\u3059\uff0e

\n
\n
\n

\u30b9\u30ad\u30e3\u30f3\u3057\u305f\u753b\u50cf\u30c7\u30fc\u30bf\u306f\u3053\u3093\u306a\u611f\u3058(1\u30b3\u30de2\u30da\u30fc\u30b8\u5206)

\n
\n
\n
\n
$ file viz_digidepo_2436688_0001-0.jpg\nviz_digidepo_2436688_0001-0.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 2481x1761, components 3
\n
\n
\n
\n

GNU time \u306e -f %M \u3067RAM \u306e\u5229\u7528\u91cf\u3092\u898b\u305f\u3068\u3053\u308d\u3053\u306e\u753b\u50cf1\u679a\u306e\u51e6\u7406\u3067600MB \u8fd1\u304f\uff0c10\u679a\u3067860MB \u7a0b\u3067\u3057\u305f\uff0e

\n
\n
\n

\"NDLOCR

\n
\n
\n\n\n\n\n\n
\n
Note
\n
\n\u753b\u50cf\u306e\u51fa\u5178\uff1a\u7d0d\u8c37\u53cb\u4e00 \u8a33\u8a3b\u300e\u9ed2\u732b\u300f,\u5065\u6587\u793e,1952. \u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u30c7\u30b8\u30bf\u30eb\u30b3\u30ec\u30af\u30b7\u30e7\u30f3 https://dl.ndl.go.jp/pid/2436688\n
\n
\n
\n
\n
\n
\n

Linux\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u3067\u30ad\u30e3\u30d7\u30c1\u30e3\u30e2\u30fc\u30c9

\n
\n
\n

NDLOCR-Lite GUI\u7248\u306b\u306f\u30ad\u30e3\u30d7\u30c1\u30e3\u30e2\u30fc\u30c9\u304c\u3042\u308a\u4fbf\u5229\u305d\u3046\u3067\u3059\u304c\uff0cNDLOCR-Lite \u3092\u8d77\u52d5\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e
\n\u540c\u3058\u3088\u3046\u306a\u3053\u3068\u3092\u4ee5\u524d\u304b\u3089 tesseract-ocr \u3067\u3084\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\u3053\u308c\u306f\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u306b\u767b\u9332\u3057\u305f\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3067\u30b9\u30af\u30ea\u30fc\u30f3\u30ad\u30e3\u30d7\u30c1\u30e3\u3068OCR \u3092\u884c\u3044\uff0c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u7d50\u679c\u3092\u8fd4\u3059\u3082\u306e\u3067\u3057\u305f\uff0e\u3053\u308c\u3092NDLOCR-Lite \u3067\u52d5\u304f\u3088\u3046\u306b\u66f8\u304d\u63db\u3048\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ cat ~/bin/ndlocr-lite.bash\n#!/bin/bash\n\nTMPDIR=$(mktemp -d)\nIMAGEFILE=\"$(mktemp).png\"\nimport png:\"${IMAGEFILE}\" (1)\n#sixelv \"${IMAGEFILE}\"\nconvert \"${IMAGEFILE}\" sixel: (2)\nndlocr-lite --sourceimg \"${IMAGEFILE}\" --output \"${TMPDIR}\" (3)\n\nif [ $? ]; then\n  cat \"${TMPDIR}\"/*.txt | pee cat \"xsel -b\" (4)\n  notify-send 'ocr📋(primary)' (5)\nelse\n  notify-send 'ocr error'\n  exit 1\nfi\n\nrm \"${IMAGEFILE}\" (6)\nrm -r \"${TMPDIR}\"
\n
\n
\n
\n
    \n
  1. \n

    Imagemagick \u306eimport \u30b3\u30de\u30f3\u30c9\u3067\u4efb\u610f\u306e\u5834\u6240\u3092\u30ad\u30e3\u30d7\u30c1\u30e3

    \n
  2. \n
  3. \n

    \u30c7\u30d0\u30c3\u30b0\u7528\u306b\u753b\u50cf\u51fa\u529b

    \n
  4. \n
  5. \n

    NDLOCR-Lite \u3067\u6587\u5b57\u8d77\u3053\u3057

    \n
  6. \n
  7. \n

    \u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u683c\u7d0d

    \n
  8. \n
  9. \n

    notify-send \u3067\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306b\u901a\u77e5

    \n
  10. \n
\n
\n
\n

\u5b9f\u884c\u3059\u308b\u3068\u3053\u3093\u306a\u611f\u3058\uff0e\u52d5\u753b\u5185\u306e\u30b9\u30e9\u30a4\u30c9\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3066\u3044\u307e\u3059\uff0e\u89e3\u50cf\u5ea6\u304c\u4f4e\u3044\u3068\u3044\u307e\u3044\u3061\u3067\u3059\u304c\u89e3\u50cf\u5ea6\u304c\u9ad8\u3044\u3068\u3044\u3044\u611f\u3058\u3067\u3059\uff0etermial \u3067\u53e9\u304f\u3068\u30c7\u30d0\u30c3\u30b0\u7528\u306bSixel \u3067\u30ad\u30e3\u30d7\u30c1\u30e3\u753b\u50cf\u3082\u51fa\u3059\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n

\"NDLOCR

\n
\n
\n\n\n\n\n\n
\n
Note
\n
\n\u753b\u50cf\u306e\u51fa\u5178\uff1a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30ab\u30f3\u30d5\u30a1\u30ec\u30f3\u30b92026 Tokyo/Spring 2\u65e5\u76ee\u30e9\u30a4\u30c8\u30cb\u30f3\u30b0\u30c8\u30fc\u30af\u306e\u30aa\u30fc\u30d7\u30cb\u30f3\u30b0\u3088\u308a https://www.youtube.com/watch?v=xtb3ZFb6WvA\n
\n
\n
\n

\u3053\u306ebash script \u3092WindowManager \u306b\u767b\u9332\u3057\u3066\u304a\u304d\u307e\u3059\uff0e\u4ee5\u4e0b\u306fi3 wm \u3067 Super+Shift+o \u3067\u547c\u3073\u51fa\u305b\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

~/.config/i3/config

\n
\n
\n
\n
$ grep ocr ~/.config/i3/config\n#OCR https://gitlab.com/matoken/kagolug-2022.05/-/blob/main/slide/ocr.adoc\nbindsym $mod+Shift+o exec --no-startup-id ~/bin/ndlocr-lite.bash
\n
\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\u4fbf\u5229\u306b\u4f7f\u3048\u305d\u3046\u3067\u3059\uff0e
\n\u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u306e\u9060\u9694\u9001\u4fe1\u30b5\u30fc\u30d3\u30b9\u3067\u95b2\u89a7\u53ef\u80fd\u306a\u66f8\u7c4d\u306a\u3069\u3092\u5c0f\u3055\u306a\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306a\u3069\u306e\u7aef\u672b\u3067\u8aad\u3080\u306e\u306f\u3044\u307e\u3044\u3061\u3068\u601d\u3063\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u3053\u308c\u3067\u6587\u5b57\u8d77\u3053\u3057\u3057\u3066\u8aad\u3093\u3067\u307f\u308b\u306e\u3082\u3042\u308a\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0c

\n
\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\n
$ git log --pretty=oneline -1\n4f0748be4244a2e36d4dd43af05d6eebded3d56d (HEAD -> master, origin/master, origin/HEAD) Merge pull request #13 from mattn/fallback-line\n$ pipx list | grep uv\n   package uv 0.10.7, installed using Python 3.13.3\n    - uv\n    - uvx\n$ dpkg-query -W python3 python3-venv\npython3 3.13.9-3\npython3-venv    3.13.9-3\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n
\n

toot

\n
\n\n
\n
\n", "content_text": "\u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u304cNDL\u30e9\u30dc\u3067NDLOCR-Lite \u3092\u516c\u958b\u3057\u307e\u3057\u305f\uff0e\n\u5143\u3005NDLOCR \u304c\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304cCUDA \u5bfe\u5fdc\u306eNVIDIA GPU \u304c\u5fc5\u9808\u3067\u3057\u305f\uff0e\u4eca\u56de\u306eNDLOCR-Lite \u306fdGPU \u306e\u7121\u3044PC \u3067\u3082\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306a\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\n\nNDLOCR-Lite\u306f\u3001NDLOCR\u306e\u8efd\u91cf\u7248\u3092\u76ee\u6307\u3057\u3066\u958b\u767a\u3057\u305fOCR\u3067\u3042\u308a\u3001\u30ce\u30fc\u30c8\u30d1\u30bd\u30b3\u30f3\u7b49\u306e\u4e00\u822c\u7684\u306a\u5bb6\u5ead\u7528\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u3084OS\u74b0\u5883\u3067\u3001\u56f3\u66f8\u3084\u96d1\u8a8c\u3068\u3044\u3063\u305f\u8cc7\u6599\u306e\u30c7\u30b8\u30bf\u30eb\u5316\u753b\u50cf\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u304c\u4f5c\u6210\u3067\u304d\u308bOCR\u3067\u3059\u3002\n\n\nGPU\uff08Graphics Processing Unit\u3002\u753b\u50cf\u63cf\u753b\u7b49\u306e\u9ad8\u5ea6\u306a\u4e26\u5217\u8a08\u7b97\u3092\u51e6\u7406\u3059\u308b\u88c5\u7f6e\u3002\uff09\u3092\u5fc5\u8981\u3068\u305b\u305a\u3001\u8efd\u91cf\u306aOCR\u51e6\u7406\u304c\u53ef\u80fd\u3067\u3059\u3002\n\n\n\u307e\u305f\u3001NDLOCR\u304c\u4e0d\u5f97\u610f\u3068\u3057\u3066\u3044\u305f\u82f1\u6587\u3084\u624b\u66f8\u304d\u6587\u5b57\u7b49\u306b\u3064\u3044\u3066\u3082\u5b9f\u9a13\u7684\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\n\n\n\n— NDLOCR-Lite\u306e\u516c\u958b\u306b\u3064\u3044\u3066 | NDL\u30e9\u30dc\n\n\n\n\u5b9f\u969b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306f\u3053\u3061\u3089\uff0e\n\n\n\n\nndl-lab/ndlocr-lite: NDLOCR\u2011Lite application repository (including source code)\n\n\n\n\n\u985e\u4f3c\u306e\u3082\u306e\u306bNDL\u53e4\u5178\u7c4dOCR-Lite \u3068\u3044\u3046\u3082\u306e\u3082\u3042\u308a\u307e\u3059\uff0e\u3053\u308c\u3082dGPU \u306e\u5fc5\u8981\u306a\u3044OCR \u3067\u81ea\u5206\u3067\u306f\u8aad\u3081\u306a\u3044\u53e4\u5178\u3092OCR \u3067\u8aad\u3081\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u308a\u3057\u3066\u9762\u767d\u3044\u3067\u3059\uff0e\n\u4ee5\u4e0b\u306f\u4ee5\u524d #kagokug \u3067\u767a\u8868\u3057\u305f\u95a2\u9023\u8cc7\u6599\u3067\u3059\uff0e\n\n\n\n\nOCR\u3067\u753b\u50cf\u6587\u5b57\u3092\u6587\u5b57\u30c7\u30fc\u30bf\u306b \u9e7f\u5150\u5cf6Linux\u52c9\u5f37\u4f1a 2022.05 \u3067\u767a\u8868 \n\u30d3\u30c7\u30aa\u3084\u753b\u50cf\u306a\u3069\u306b\u66f8\u304b\u308c\u305f\u6587\u5b57\u3092OCR \u3059\u308bScript \u3084NDLOCR \u306e\u7d39\u4ecb\n\n\n\u6700\u8fd1\u8a66\u3057\u305fLinux\u306eOCR\u30c4\u30fc\u30eb(NDL\u53e4\u5178\u7c4dOCR-Lite/YomiToku) \u9e7f\u5150\u5cf6Linux\u52c9\u5f37\u4f1a 2024.12 \u3067\u767a\u8868 \nDL\u53e4\u5178\u7c4dOCR-Lite \u306e\u7d39\u4ecb\u306a\u3069\n\n\n\n\n\n\n\n\nNDLOCR \u8981NVIDIA GPU\n\n\n\nNDL\u53e4\u5178\u7c4dOCR-Lite\u306e\u3088\u3046\u306bNDLOCR-Lite\u304c\u51fa\u306a\u3044\u304b\u306a?\n\n\n\n\n\n\n\n\n\n\u3053\u306e\u3068\u304d\u3053\u3093\u306a\u3053\u3068\u3092\u66f8\u3044\u3066\u3044\u307e\u3057\u305f\u304c\u5b9f\u73fe\u3057\u307e\u3057\u305f :)\n\n\n\n\nGUI\u7248\u3092\u8a66\u3059\n\n\nWindows\u7248\u306f\u4ee5\u4e0b\u306b\u4f7f\u3044\u65b9\u304c\u3042\u308a\u307e\u3059\uff0e\u81ea\u5206\u306fLinux\u7248\u3092\u8a66\u3057\u307e\u3057\u305f\u304c\u8d77\u52d5\u5f8c\u306e\u64cd\u4f5c\u306f\u540c\u3058\u3060\u3068\u601d\u3044\u307e\u3059\uff0e\n\n\n\n\nNDLOCR-Lite\u306e\u4f7f\u3044\u65b9 | NDL\u30e9\u30dc\n\n\n\n\nGitHub \u306eReleases \u304b\u3089\u6700\u65b0\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u5165\u624b\u3057\u307e\u3059\uff0ev1.1.0 \u6642\u70b9\u3067\u306fLinux amd64 / macOS arm64, amd64 / Windows(amd64?) \u304c\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e\u3053\u3053\u3067\u306fLinux\u7248\uff0e\n\n\n\n$ wget -c https://github.com/ndl-lab/ndlocr-lite/releases/download/1.1.0/ndlocr_lite_v1.1.0_linux.tar.gz (1)\n$ sha512sum ndlocr_lite_v1.1.0_linux.tar.gz (2)\n61faed1fc843266095852697bbf29a721db4fb5a054f6d66ae8850301d22a4b1e29535eed150e439f7fd35760a17790a39cf0d45afd7c0ed72e7a3928e47ed93 ndlocr_lite_v1.1.0_linux.tar.gz\n$ fuse-archive ndlocr_lite_v1.1.0_linux.tar.gz (3)\n$ file ndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui (4)\nndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=55e769c1bfe893353a55cdddbe7066033dc540bf, for GNU/Linux 3.2.0, not stripped\n$ ndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui (5)\n\n\n\n\n\n\u30d0\u30a4\u30ca\u30ea\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u5165\u624b\n\n\nhash\n\n\nfuse-archive \u3067\u30a2\u30c9\u30db\u30c3\u30af\u306b\u5c55\u958b\n\n\n\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3092\u78ba\u8a8d\n\n\nNDLOCR-Lite \u5b9f\u884c\n\n\n\n\nNDL\u53e4\u5178\u7c4dOCR-Lite \u3068\u540c\u3058\u3088\u3046\u306b\u6271\u3048\u308b\u611f\u3058\u3067\u3059\uff0e\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\uff0c\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306e\u683c\u7d0d\u3055\u308c\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304b\u3089\u4e00\u62ec\u51e6\u7406\u306a\u3069\u304c\u53ef\u80fd\u3067\u3059\uff0e\n\u305d\u306e\u4ed6\uff0c\u753b\u9762\u306e\u6307\u5b9a\u3057\u305f\u7bc4\u56f2\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3066OCR \u3059\u308b\u30ad\u30e3\u30d7\u30c1\u30e3\u30e2\u30fc\u30c9\u3082\u4fbf\u5229\u3067\u3059\uff0e\u305f\u3060\uff0c\u3053\u306e\u30e2\u30fc\u30c9\u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u306fi3 wm \u3067\u306f\u5225\u306eworkspace \u306f\u30ad\u30e3\u30d7\u30c1\u30e3\u3067\u304d\u306a\u3055\u305d\u3046\u3067\u5c11\u3057\u4f7f\u3044\u52dd\u624b\u304c\u60aa\u3044\u3067\u3059\uff0e\n\n\n\n\n\n\n\n\nNote\n\n\n\u753b\u50cf\u306e\u51fa\u5178\uff1a\u7d0d\u8c37\u53cb\u4e00 \u8a33\u8a3b\u300e\u9ed2\u732b\u300f,\u5065\u6587\u793e,1952. \u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u30c7\u30b8\u30bf\u30eb\u30b3\u30ec\u30af\u30b7\u30e7\u30f3 https://dl.ndl.go.jp/pid/2436688\n\n\n\n\n\n\n\nCLI\u7248\u3092\u4f7f\u3046\n\n\nCLI\u7248\u306fPython 3.10+ \u304c\u5fc5\u8981\u3067\u3059\uff0e\u4eca\u56de\u306fDebian sid amd64 \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u5c0e\u5165\u3057\u305fPython 3.13.12 \u3092\u5229\u7528\u3057\u307e\u3057\u305f\uff0e\nREADME.md \u306b\u306fpip \u3067\u306e\u5c0e\u5165\u3068\uff0cuv \u3067\u306e\u5c0e\u5165\u304c\u7d39\u4ecb\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\u983b\u7e41\u306b\u4f7f\u3046\u5834\u5408\u306fuv \u306e\u65b9\u304c\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u304a\u597d\u307f\u306e\u65b9\u3067\uff0e\n\n\npip \u3067venv \u4ee5\u4e0b\u306b\u5c0e\u5165\u3057\u305f\u4f8b\n\n$ git clone https://github.com/ndl-lab/ndlocr-lite\n$ cd ndlocr-lite\n$ python -m venv venv\n$ source venv/bin/activate\n$ pip install -r requirements.txt\n$ python3 src/ocr.py -h\nusage: ocr.py [-h] [--sourcedir SOURCEDIR] [--sourceimg SOURCEIMG] --output OUTPUT [--viz VIZ] [--det-weights DET_WEIGHTS] [--det-classes DET_CLASSES] [--det-score-threshold DET_SCORE_THRESHOLD] [--det-conf-threshold DET_CONF_THRESHOLD]\n [--det-iou-threshold DET_IOU_THRESHOLD] [--simple-mode SIMPLE_MODE] [--rec-weights30 REC_WEIGHTS30] [--rec-weights50 REC_WEIGHTS50] [--rec-weights REC_WEIGHTS] [--rec-classes REC_CLASSES] [--device {cpu,cuda}]\n\nArguments for NDLkotenOCR-Lite\n\noptions:\n -h, --help show this help message and exit\n --sourcedir SOURCEDIR\n Path to image directory\n --sourceimg SOURCEIMG\n Path to image directory\n --output OUTPUT Path to output directory\n --viz VIZ Save visualized image\n --det-weights DET_WEIGHTS\n Path to deim onnx file\n --det-classes DET_CLASSES\n Path to list of class in yaml file\n --det-score-threshold DET_SCORE_THRESHOLD\n --det-conf-threshold DET_CONF_THRESHOLD\n --det-iou-threshold DET_IOU_THRESHOLD\n --simple-mode SIMPLE_MODE\n Read line with one model(Setting this option to True will slow down processing, but it simplifies the architecture and may slightly improve accuracy.)\n --rec-weights30 REC_WEIGHTS30\n Path to parseq-tiny onnx file\n --rec-weights50 REC_WEIGHTS50\n Path to parseq-tiny onnx file\n --rec-weights REC_WEIGHTS\n Path to parseq-tiny onnx file\n --rec-classes REC_CLASSES\n Path to list of class in yaml file\n --device {cpu,cuda} Device use (cpu or cuda)\n\n\n\nuv \u3067\u5c0e\u5165\u3057\u305f\u4f8b\n\n$ git clone https://github.com/ndl-lab/ndlocr-lite\n$ cd ndlocr-lite\n$ uv tool install .\n$ which ndlocr-lite\n/home/matoken/.local/bin/ndlocr-lite\n$ ndlocr-lite --help\nusage: ndlocr-lite [-h] [--sourcedir SOURCEDIR] [--sourceimg SOURCEIMG] --output OUTPUT [--viz VIZ] [--det-weights DET_WEIGHTS] [--det-classes DET_CLASSES] [--det-score-threshold DET_SCORE_THRESHOLD]\n [--det-conf-threshold DET_CONF_THRESHOLD] [--det-iou-threshold DET_IOU_THRESHOLD] [--simple-mode SIMPLE_MODE] [--rec-weights30 REC_WEIGHTS30] [--rec-weights50 REC_WEIGHTS50] [--rec-weights REC_WEIGHTS]\n [--rec-classes REC_CLASSES] [--device {cpu,cuda}]\n\nArguments for NDLkotenOCR-Lite\n\noptions:\n -h, --help show this help message and exit\n --sourcedir SOURCEDIR\n Path to image directory\n --sourceimg SOURCEIMG\n Path to image directory\n --output OUTPUT Path to output directory\n --viz VIZ Save visualized image\n --det-weights DET_WEIGHTS\n Path to deim onnx file\n --det-classes DET_CLASSES\n Path to list of class in yaml file\n --det-score-threshold DET_SCORE_THRESHOLD\n --det-conf-threshold DET_CONF_THRESHOLD\n --det-iou-threshold DET_IOU_THRESHOLD\n --simple-mode SIMPLE_MODE\n Read line with one model(Setting this option to True will slow down processing, but it simplifies the architecture and may slightly improve accuracy.)\n --rec-weights30 REC_WEIGHTS30\n Path to parseq-tiny onnx file\n --rec-weights50 REC_WEIGHTS50\n Path to parseq-tiny onnx file\n --rec-weights REC_WEIGHTS\n Path to parseq-tiny onnx file\n --rec-classes REC_CLASSES\n Path to list of class in yaml file\n --device {cpu,cuda} Device use (cpu or cuda)\n\n\n\n\u3082\u3057cuda \u5bfe\u5fdcGPU \u306e\u3042\u308b\u74b0\u5883\u3067\u3042\u308c\u3070\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\u306b --device cuda \u3092\u6e21\u3059\u3053\u3068\u3067\u901f\u304f\u306a\u308b\u3068\u601d\u3044\u307e\u3059\uff0e\n\n\ncli\u7248\u5b9f\u884c\u4f8b\n\n--sourcedir (\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u8907\u6570\u753b\u50cf)\u304b --sourceimg (1\u3064\u306e\u753b\u50cf\u30d5\u30a1\u30a4\u30eb)\u3067\u51e6\u7406\u5bfe\u8c61\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304b\u51e6\u7406\u5bfe\u8c61\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\uff0c --output \u3067\u7d50\u679c\u306e\u51fa\u529b\u5148\u3092\u6307\u5b9a\uff0c--viz True \u3067\u53ef\u8996\u5316\u753b\u50cf\u3092\u6709\u52b9\u306b\u3057\u3066\u5b9f\u884c\uff08\u30aa\u30d7\u30b7\u30e7\u30f3)\n\n\n\n$ time ndlocr-lite --sourcedir . --output . --viz True\n[INFO] Intialize Model\n[INFO] Inference Image\n69\n[INFO] Saving result on ./viz_digidepo_2436688_0001-0.jpg\nTotal calculation time (Detection + Recognition): 13.220851182937622\n :\nreal 2m15.882s\nuser 10m16.273s\nsys 0m5.189s\n$ ls\ndigidepo_2436688_0001-0.jpg digidepo_2436688_0001-4.json digidepo_2436688_0001-8.txt\ndigidepo_2436688_0001-0.json digidepo_2436688_0001-4.txt digidepo_2436688_0001-8.xml\ndigidepo_2436688_0001-0.txt digidepo_2436688_0001-4.xml digidepo_2436688_0001-9.jpg\ndigidepo_2436688_0001-0.xml digidepo_2436688_0001-5.jpg digidepo_2436688_0001-9.json\ndigidepo_2436688_0001-1.jpg digidepo_2436688_0001-5.json digidepo_2436688_0001-9.txt\ndigidepo_2436688_0001-1.json digidepo_2436688_0001-5.txt digidepo_2436688_0001-9.xml\ndigidepo_2436688_0001-1.txt digidepo_2436688_0001-5.xml viz_digidepo_2436688_0001-0.jpg\ndigidepo_2436688_0001-1.xml digidepo_2436688_0001-6.jpg viz_digidepo_2436688_0001-1.jpg\ndigidepo_2436688_0001-2.jpg digidepo_2436688_0001-6.json viz_digidepo_2436688_0001-2.jpg\ndigidepo_2436688_0001-2.json digidepo_2436688_0001-6.txt viz_digidepo_2436688_0001-3.jpg\ndigidepo_2436688_0001-2.txt digidepo_2436688_0001-6.xml viz_digidepo_2436688_0001-4.jpg\ndigidepo_2436688_0001-2.xml digidepo_2436688_0001-7.jpg viz_digidepo_2436688_0001-5.jpg\ndigidepo_2436688_0001-3.jpg digidepo_2436688_0001-7.json viz_digidepo_2436688_0001-6.jpg\ndigidepo_2436688_0001-3.json digidepo_2436688_0001-7.txt viz_digidepo_2436688_0001-7.jpg\ndigidepo_2436688_0001-3.txt digidepo_2436688_0001-7.xml viz_digidepo_2436688_0001-8.jpg\ndigidepo_2436688_0001-3.xml digidepo_2436688_0001-8.jpg viz_digidepo_2436688_0001-9.jpg\ndigidepo_2436688_0001-4.jpg digidepo_2436688_0001-8.json\n\n\n\n\u3053\u3053\u3067\u306e\u30d5\u30a1\u30a4\u30eb\u7fa4\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\ndigidepo_2436688_0001-“${N}”.jpg\n\nOCR \u5bfe\u8c61\u753b\u50cf\n\ndigidepo_2436688_0001-“${N}”.json, digidepo_2436688_0001-“${N}”.txt, digidepo_2436688_0001-“${N}”.xml\n\nOCR \u7d50\u679c\n\nviz_digidepo_2436688_0001-“${N}”.jpg\n\n\u53ef\u8996\u5316\u753b\u50cf(\u30aa\u30d7\u30b7\u30e7\u30f3)\n\n\n\n\n\u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305fpdf \u306e10\u30b3\u30de(20\u30da\u30fc\u30b8\u5206)\u3092Imagemagick \u3067jpeg \u753b\u50cf\u306b\u5909\u63db\u3057\u305f\u3082\u306e\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3057\u305f\u3068\u3053\u308d2\u520616\u79d2\u307b\u3069\u639b\u304b\u308a\u307e\u3057\u305f\uff0e1\u753b\u50cf\u3042\u305f\u308a13.6\u79d2\uff0c1\u30da\u30fc\u30b8\u3042\u305f\u308a6.8\u79d2\u307b\u3069\uff0e\u82f1\u8a9e\u65e5\u672c\u8a9e\u6df7\u3058\u308a\u3067\u3082\u7cbe\u5ea6\u826f\u3055\u305d\u3046\u3067\u3059\uff0e\nOCR \u74b0\u5883\u306f\uff0cLENOVO ThinkPad L13 (G1), CPU: Intel® Core™ i7-10510U CPU @ 1.80GHz, RAM: DDR4 16GB, SSD: NVMe TOSHIBA KXG6AZNV512G \u306bDebian sid amd64 \u3092\u5c0e\u5165\u3057\u305f\u74b0\u5883\u3067\u3059\uff0e\n\n\n\u30b9\u30ad\u30e3\u30f3\u3057\u305f\u753b\u50cf\u30c7\u30fc\u30bf\u306f\u3053\u3093\u306a\u611f\u3058(1\u30b3\u30de2\u30da\u30fc\u30b8\u5206)\n\n\n\n$ file viz_digidepo_2436688_0001-0.jpg\nviz_digidepo_2436688_0001-0.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 2481x1761, components 3\n\n\n\nGNU time \u306e -f %M \u3067RAM \u306e\u5229\u7528\u91cf\u3092\u898b\u305f\u3068\u3053\u308d\u3053\u306e\u753b\u50cf1\u679a\u306e\u51e6\u7406\u3067600MB \u8fd1\u304f\uff0c10\u679a\u3067860MB \u7a0b\u3067\u3057\u305f\uff0e\n\n\n\n\n\n\n\n\nNote\n\n\n\u753b\u50cf\u306e\u51fa\u5178\uff1a\u7d0d\u8c37\u53cb\u4e00 \u8a33\u8a3b\u300e\u9ed2\u732b\u300f,\u5065\u6587\u793e,1952. \u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u30c7\u30b8\u30bf\u30eb\u30b3\u30ec\u30af\u30b7\u30e7\u30f3 https://dl.ndl.go.jp/pid/2436688\n\n\n\n\n\n\n\n\nLinux\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u3067\u30ad\u30e3\u30d7\u30c1\u30e3\u30e2\u30fc\u30c9\n\n\nNDLOCR-Lite GUI\u7248\u306b\u306f\u30ad\u30e3\u30d7\u30c1\u30e3\u30e2\u30fc\u30c9\u304c\u3042\u308a\u4fbf\u5229\u305d\u3046\u3067\u3059\u304c\uff0cNDLOCR-Lite \u3092\u8d77\u52d5\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e\n\u540c\u3058\u3088\u3046\u306a\u3053\u3068\u3092\u4ee5\u524d\u304b\u3089 tesseract-ocr \u3067\u3084\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\u3053\u308c\u306f\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u306b\u767b\u9332\u3057\u305f\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3067\u30b9\u30af\u30ea\u30fc\u30f3\u30ad\u30e3\u30d7\u30c1\u30e3\u3068OCR \u3092\u884c\u3044\uff0c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u7d50\u679c\u3092\u8fd4\u3059\u3082\u306e\u3067\u3057\u305f\uff0e\u3053\u308c\u3092NDLOCR-Lite \u3067\u52d5\u304f\u3088\u3046\u306b\u66f8\u304d\u63db\u3048\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n$ cat ~/bin/ndlocr-lite.bash\n#!/bin/bash\n\nTMPDIR=$(mktemp -d)\nIMAGEFILE=\"$(mktemp).png\"\nimport png:\"${IMAGEFILE}\" (1)\n#sixelv \"${IMAGEFILE}\"\nconvert \"${IMAGEFILE}\" sixel: (2)\nndlocr-lite --sourceimg \"${IMAGEFILE}\" --output \"${TMPDIR}\" (3)\n\nif [ $? ]; then\n cat \"${TMPDIR}\"/*.txt | pee cat \"xsel -b\" (4)\n notify-send 'ocr📋(primary)' (5)\nelse\n notify-send 'ocr error'\n exit 1\nfi\n\nrm \"${IMAGEFILE}\" (6)\nrm -r \"${TMPDIR}\"\n\n\n\n\n\nImagemagick \u306eimport \u30b3\u30de\u30f3\u30c9\u3067\u4efb\u610f\u306e\u5834\u6240\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\n\n\n\u30c7\u30d0\u30c3\u30b0\u7528\u306b\u753b\u50cf\u51fa\u529b\n\n\nNDLOCR-Lite \u3067\u6587\u5b57\u8d77\u3053\u3057\n\n\n\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u683c\u7d0d\n\n\nnotify-send \u3067\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306b\u901a\u77e5\n\n\n\n\n\u5b9f\u884c\u3059\u308b\u3068\u3053\u3093\u306a\u611f\u3058\uff0e\u52d5\u753b\u5185\u306e\u30b9\u30e9\u30a4\u30c9\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3066\u3044\u307e\u3059\uff0e\u89e3\u50cf\u5ea6\u304c\u4f4e\u3044\u3068\u3044\u307e\u3044\u3061\u3067\u3059\u304c\u89e3\u50cf\u5ea6\u304c\u9ad8\u3044\u3068\u3044\u3044\u611f\u3058\u3067\u3059\uff0etermial \u3067\u53e9\u304f\u3068\u30c7\u30d0\u30c3\u30b0\u7528\u306bSixel \u3067\u30ad\u30e3\u30d7\u30c1\u30e3\u753b\u50cf\u3082\u51fa\u3059\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n\n\nNote\n\n\n\u753b\u50cf\u306e\u51fa\u5178\uff1a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30ab\u30f3\u30d5\u30a1\u30ec\u30f3\u30b92026 Tokyo/Spring 2\u65e5\u76ee\u30e9\u30a4\u30c8\u30cb\u30f3\u30b0\u30c8\u30fc\u30af\u306e\u30aa\u30fc\u30d7\u30cb\u30f3\u30b0\u3088\u308a https://www.youtube.com/watch?v=xtb3ZFb6WvA\n\n\n\n\n\n\u3053\u306ebash script \u3092WindowManager \u306b\u767b\u9332\u3057\u3066\u304a\u304d\u307e\u3059\uff0e\u4ee5\u4e0b\u306fi3 wm \u3067 Super+Shift+o \u3067\u547c\u3073\u51fa\u305b\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n~/.config/i3/config\n\n\n\n$ grep ocr ~/.config/i3/config\n#OCR https://gitlab.com/matoken/kagolug-2022.05/-/blob/main/slide/ocr.adoc\nbindsym $mod+Shift+o exec --no-startup-id ~/bin/ndlocr-lite.bash\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\u4fbf\u5229\u306b\u4f7f\u3048\u305d\u3046\u3067\u3059\uff0e\n\u56fd\u7acb\u56fd\u4f1a\u56f3\u66f8\u9928\u306e\u9060\u9694\u9001\u4fe1\u30b5\u30fc\u30d3\u30b9\u3067\u95b2\u89a7\u53ef\u80fd\u306a\u66f8\u7c4d\u306a\u3069\u3092\u5c0f\u3055\u306a\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306a\u3069\u306e\u7aef\u672b\u3067\u8aad\u3080\u306e\u306f\u3044\u307e\u3044\u3061\u3068\u601d\u3063\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u3053\u308c\u3067\u6587\u5b57\u8d77\u3053\u3057\u3057\u3066\u8aad\u3093\u3067\u307f\u308b\u306e\u3082\u3042\u308a\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0c\n\n\n\n\n\u74b0\u5883\n\n\n\n$ git log --pretty=oneline -1\n4f0748be4244a2e36d4dd43af05d6eebded3d56d (HEAD -> master, origin/master, origin/HEAD) Merge pull request #13 from mattn/fallback-line\n$ pipx list | grep uv\n package uv 0.10.7, installed using Python 3.13.3\n - uv\n - uvx\n$ dpkg-query -W python3 python3-venv\npython3 3.13.9-3\npython3-venv 3.13.9-3\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\n\n\ntoot\n\n\n\n\nmatoken :fox:: “NDL\u53e4\u5178\u7c4dOCR-Lite \u306b\u7d9a\u304dNDLOCR-Lite \u2026” – \u3044\u306a\u3053\u3093", "date_published": "2026-03-02T23:15:44+09:00", "date_modified": "2026-03-03T19:19:47+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "NDL", "NDLOCR-Lite", "OCR", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5284", "url": "https://matoken.org/blog/2026/02/25/changedetection-io/", "title": "ChangeDetection.io\u3092\u66f4\u65b0\u3057\u305f\u3089\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8IP\u3092\u5229\u7528\u3057\u305fURL\u304c\u30a8\u30e9\u30fc\u306b\u306a\u308b", "content_html": "
\n
\n

\n
\n

ChangeDetection.io \u3092\u66f4\u65b0\u3057\u305f\u3089\u30eb\u30fc\u30bf\u30fc\u306e\u30a2\u30c9\u30ec\u30b9\u304c\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

ChangeDetection.io \u306f\u306f\u3066\u306a\u30a2\u30f3\u30c6\u30ca\u306e\u3088\u3046\u306b\u767b\u9332\u30b5\u30a4\u30c8\u3092\u5b9a\u671f\u7684\u306b\u5de1\u56de\u3057\u3066\u66f4\u65b0\u3092\u6559\u3048\u3066\u304f\u308c\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304a\u3088\u3073\u30b5\u30fc\u30d3\u30b9\u3067\u3059\uff0e
\n\u81ea\u5206\u306f\u30ed\u30fc\u30ab\u30ebPC \u306b\u5165\u308c\u3066\u52d5\u304b\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n\n
\n

#kagolug 2025.03 \u3067\u767a\u8868\u3057\u305f\u3068\u304d\u306e\u8cc7\u6599\u306f\u3053\u3061\u3089\uff0e

\n
\n\n
\n

\u4eca\u56de\u66f4\u65b0\u901a\u77e5\u304c\u6765\u3066\u3044\u305f\u306e\u3067\u6700\u65b0\u306b\u66f4\u65b0\u3057\u307e\u3057\u305f\uff0ev0.54.1 \u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ w3m -dump http://100.121.84.16:5000/ | grep ^v\nv0.54.1
\n
\n
\n
\n

\u3059\u308b\u3068router \u306e\u8a2d\u5b9a\u304c\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u30ed\u30b0\u304c\u53d6\u308c\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
 > DISABLED\n> Exception: Invalid URL 'DISABLED': No scheme supplied. Perhaps you meant https://DISABLED?\n[Create a link to share watch config with others]
\n
\n
\n
\n

\"changedetection.io

\n
\n
\n

Edit \u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u7de8\u96c6\u753b\u9762\u306b\u9077\u79fb\u3059\u308b\u3068\u554f\u984c\u306a\u3055\u305d\u3046\uff0e\u3067\u3082\u4e0a\u66f8\u304d\u4fdd\u5b58\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u6012\u3089\u308c\u307e\u3059\uff0e
\n\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u304b\u3089\u306fURL \u304c\u304a\u304b\u3057\u305d\u3046\u3067\u3059\u304c\uff0c\u3053\u306eURL \u306f\u666e\u901a\u306b\u958b\u3051\u308b\u3057\u305d\u3082\u305d\u3082\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u307e\u3067\u306f\u52d5\u3044\u3066\u3044\u305f\u3082\u306e\u3067\u3059\uff0e

\n
\n
\n
\n
* Watch protocol is not permitted or invalid URL format
\n
\n
\n
\n

\"changedetection.io

\n
\n
\n

\u306a\u3093\u304b\u30d0\u30b0\u8e0f\u3093\u3060?\u524d\u30d0\u30fc\u30b8\u30e7\u30f3\u304b\u3089\u4eca\u56de\u307e\u3067\u306ediff \u898b\u308b\u304b\u2026\u2026\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0cSSRF \u5bfe\u7b56\u3067\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8IP \u304c\u7121\u52b9\u306b\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
\n\n
\n
\n\n
\n\n
\n

ALLOW_IANA_RESTRICTED_ADDRESSES=true \u3067\u9003\u3052\u3089\u308c\u308b\u3088\u3046\u306a\u306e\u3067\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n

docker-compose \u3067\u904b\u7528\u3057\u3066\u3044\u308b\u306e\u3067\uff0cdocker-compose.yml \u3092\u958b\u304d\uff0cchangedetection \u90e8\u5206\u306e environment: \u306b ALLOW_IANA_RESTRICTED_ADDRESSES=true \u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\uff0e\u305d\u3057\u3066up \u3059\u308b\u3053\u3068\u3067\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8IP \u30a2\u30c9\u30ec\u30b9\u306eURL \u3082\u307e\u305f\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ docker compose --file ~/src/changedetection.io/docker-compose.yml up -d
\n
\n
\n
\n

\u3053\u308c\u3053\u306e\u30a2\u30c9\u30ec\u30b9\u3060\u3051\u8a31\u53ef\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u3082\u3067\u304d\u308b\u3068\u826f\u3055\u305d\u3046\u3067\u3059\u306d\uff0e

\n
\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
$ docker images ghcr.io/dgtlmoon/changedetection.io:latest\n                                                                                                                                                                   i Info     U  In Use\nIMAGE                                        ID             DISK USAGE   CONTENT SIZE   EXTRA\nghcr.io/dgtlmoon/changedetection.io:latest   cf4a98d2a980        889MB             0B    U\n$ w3m http://127.0.0.1:5000/ | grep ^v\nv0.54.1\n$ dpkg-query -W docker.io docker-compose-plugin\ndocker-compose-plugin   5.1.0-1~debian.12~bookworm\ndocker.io       26.1.5+dfsg1-4+b1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n

toot

\n
\n\n
\n
\n", "content_text": "ChangeDetection.io \u3092\u66f4\u65b0\u3057\u305f\u3089\u30eb\u30fc\u30bf\u30fc\u306e\u30a2\u30c9\u30ec\u30b9\u304c\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\n\n\n\nChangeDetection.io \u306f\u306f\u3066\u306a\u30a2\u30f3\u30c6\u30ca\u306e\u3088\u3046\u306b\u767b\u9332\u30b5\u30a4\u30c8\u3092\u5b9a\u671f\u7684\u306b\u5de1\u56de\u3057\u3066\u66f4\u65b0\u3092\u6559\u3048\u3066\u304f\u308c\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304a\u3088\u3073\u30b5\u30fc\u30d3\u30b9\u3067\u3059\uff0e\n\u81ea\u5206\u306f\u30ed\u30fc\u30ab\u30ebPC \u306b\u5165\u308c\u3066\u52d5\u304b\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\ndgtlmoon/changedetection.io: Best and simplest tool for website change detection, web page monitoring, and website change alerts. Perfect for tracking content changes, price drops, restock alerts, and website defacement monitoring\u2014all for free or enjoy our SaaS plan!\n\n\n\n\n#kagolug 2025.03 \u3067\u767a\u8868\u3057\u305f\u3068\u304d\u306e\u8cc7\u6599\u306f\u3053\u3061\u3089\uff0e\n\n\n\n\nChangeDetection.io\u3067\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u3092\u5b9a\u671f\u30c1\u30a7\u30c3\u30af\n\n\n\n\n\u4eca\u56de\u66f4\u65b0\u901a\u77e5\u304c\u6765\u3066\u3044\u305f\u306e\u3067\u6700\u65b0\u306b\u66f4\u65b0\u3057\u307e\u3057\u305f\uff0ev0.54.1 \u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n$ w3m -dump http://100.121.84.16:5000/ | grep ^v\nv0.54.1\n\n\n\n\u3059\u308b\u3068router \u306e\u8a2d\u5b9a\u304c\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u30ed\u30b0\u304c\u53d6\u308c\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n > DISABLED\n> Exception: Invalid URL 'DISABLED': No scheme supplied. Perhaps you meant https://DISABLED?\n[Create a link to share watch config with others]\n\n\n\n\n\n\nEdit \u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u7de8\u96c6\u753b\u9762\u306b\u9077\u79fb\u3059\u308b\u3068\u554f\u984c\u306a\u3055\u305d\u3046\uff0e\u3067\u3082\u4e0a\u66f8\u304d\u4fdd\u5b58\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u6012\u3089\u308c\u307e\u3059\uff0e\n\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u304b\u3089\u306fURL \u304c\u304a\u304b\u3057\u305d\u3046\u3067\u3059\u304c\uff0c\u3053\u306eURL \u306f\u666e\u901a\u306b\u958b\u3051\u308b\u3057\u305d\u3082\u305d\u3082\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u307e\u3067\u306f\u52d5\u3044\u3066\u3044\u305f\u3082\u306e\u3067\u3059\uff0e\n\n\n\n* Watch protocol is not permitted or invalid URL format\n\n\n\n\n\n\n\u306a\u3093\u304b\u30d0\u30b0\u8e0f\u3093\u3060?\u524d\u30d0\u30fc\u30b8\u30e7\u30f3\u304b\u3089\u4eca\u56de\u307e\u3067\u306ediff \u898b\u308b\u304b\u2026\u2026\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0cSSRF \u5bfe\u7b56\u3067\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8IP \u304c\u7121\u52b9\u306b\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\n\n\nCVE-2026-27696 – Server-Side Request Forgery (SSRF) via Watch URLs, set env var ALLOW_IANA_RESTRICTED_ADDRESSES to true to access IANA reserved URLs such as http://169.254.169.254, http://10.0.0.1/, http://127.0.0.1/, etc.\n\n\n\n\n\n— Release 0.54.1 \u00b7 dgtlmoon/changedetection.io\n\n\n\n\u5dee\u5206\u3092\u898b\u308b\u3068IPv6 \u306eloopback \u3084local \u3082\u5bfe\u8c61\u306e\u3088\u3046\u3067\u3059\uff0e\n\n\nALLOW_IANA_RESTRICTED_ADDRESSES=true \u3067\u9003\u3052\u3089\u308c\u308b\u3088\u3046\u306a\u306e\u3067\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\ndocker-compose \u3067\u904b\u7528\u3057\u3066\u3044\u308b\u306e\u3067\uff0cdocker-compose.yml \u3092\u958b\u304d\uff0cchangedetection \u90e8\u5206\u306e environment: \u306b ALLOW_IANA_RESTRICTED_ADDRESSES=true \u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\uff0e\u305d\u3057\u3066up \u3059\u308b\u3053\u3068\u3067\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8IP \u30a2\u30c9\u30ec\u30b9\u306eURL \u3082\u307e\u305f\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n$ docker compose --file ~/src/changedetection.io/docker-compose.yml up -d\n\n\n\n\u3053\u308c\u3053\u306e\u30a2\u30c9\u30ec\u30b9\u3060\u3051\u8a31\u53ef\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u3082\u3067\u304d\u308b\u3068\u826f\u3055\u305d\u3046\u3067\u3059\u306d\uff0e\n\n\n\n\n\u74b0\u5883\n\n\n$ docker images ghcr.io/dgtlmoon/changedetection.io:latest\n i Info U In Use\nIMAGE ID DISK USAGE CONTENT SIZE EXTRA\nghcr.io/dgtlmoon/changedetection.io:latest cf4a98d2a980 889MB 0B U\n$ w3m http://127.0.0.1:5000/ | grep ^v\nv0.54.1\n$ dpkg-query -W docker.io docker-compose-plugin\ndocker-compose-plugin 5.1.0-1~debian.12~bookworm\ndocker.io 26.1.5+dfsg1-4+b1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\n\ntoot\n\n\n\nmatoken :fox:: “ChangeDetection.io \u3092\u66f4\u65b0 v0.54.1\u2026” – \u3044\u306a\u3053\u3093", "date_published": "2026-02-25T07:19:29+09:00", "date_modified": "2026-02-25T07:19:31+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "ChangeDetection.io", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5258", "url": "https://matoken.org/blog/2026/02/20/yt-dlp_subtitle_429error/", "title": "yt-dlp\u3067YouTube\u306e\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557(HTTP Error 429: Too Many Requests)", "content_html": "
\n
\n

\n
\n

Tokyo Linux Users Group \u306eTechnical Meeting \u306e\u30d3\u30c7\u30aa\u304cYouTube \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u3068\u5148\u65e5\u306e #kagolug \u3067\u6559\u3048\u3066\u3082\u3089\u3063\u305f\u306e\u3067\u89b3\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3057\u305f\uff0e
\n\u3067\u3082TLUG \u306f\u82f1\u8a9e\u3067\u3059\uff0e\u4ee5\u524d\u306fWisper.cpp \u3067\u6587\u5b57\u8d77\u3053\u3057 & \u6a5f\u68b0\u7ffb\u8a33\u3067\u5b57\u5e55\u3092\u4f5c\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u6700\u8fd1\u306eYouTube \u306e\u6587\u5b57\u8d77\u3053\u3057\u306f\u5927\u5206\u826f\u304f\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u305d\u308c\u3092\u4f7f\u304a\u3046\u3068\u30ed\u30fc\u30ab\u30eb\u306b\u30d3\u30c7\u30aa\u3068\u5b57\u5e55\u3092dl \u3057\u3088\u3046\u3068\u3057\u305f\u3068\u3053\u308d\u5b57\u5e55\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff0e

\n
\n\n

\n
\n

\u9069\u5f53\u306a\u89e3\u50cf\u5ea6\u306e\u30d3\u30c7\u30aa\u3068\u30aa\u30fc\u30c7\u30a3\u30aa\uff0c\u305d\u308c\u3068\u82f1\u8a9e\u306e\u6587\u5b57\u8d77\u3053\u3057\u5b57\u5e55\u3068\uff0c\u305d\u308c\u3092\u65e5\u672c\u8a9e\u306b\u7ffb\u8a33\u3057\u305f\u3082\u306e\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig\n[youtube] Extracting URL: yYgF87nqyKI\n[youtube] yYgF87nqyKI: Downloading webpage\n[youtube] yYgF87nqyKI: Downloading android vr player API JSON\n[youtube] yYgF87nqyKI: Downloading web safari player API JSON\n[youtube] yYgF87nqyKI: Downloading player 4c5cf06a-tv\n[youtube] [jsc:deno] Solving JS challenges using deno\n[youtube] yYgF87nqyKI: Downloading m3u8 information\n[info] yYgF87nqyKI: Downloading subtitles: ja\n[info] yYgF87nqyKI: Downloading 1 format(s): 244+251\n[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see  https://github.com/yt-dlp/yt-dlp#impersonation  for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests
\n
\n
\n
\n

*Too Many Requests* \u3068\u304b\u8a00\u308f\u308c\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u4eca\u65e5\u521d\u3081\u3066\u5b9f\u884c\u3057\u305f\u306e\u306b\u306a\u3093\u3067?

\n
\n
\n

--verbose \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u307f\u307e\u3057\u305f\u304c\u3088\u304f\u308f\u304b\u308a\u307e\u305b\u3093

\n
\n
\n
\n
[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt\n[debug] Invoking http downloader on \"https://www.youtube.com/api/timedtext?v=yYgF87nqyKI&ei=M4WXaZnECfax2roP_YqAqAc&caps=asr&opi=112496729&xoaf=5&xowf=1&xospf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1771562915&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=1B0AC6AA8FB20AFE9B45B2F66DBB1000F04DE626.909918AF43ACD2AFD3E0C2C61E53A3C72E49AB6C&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ja\"\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see  https://github.com/yt-dlp/yt-dlp#impersonation  for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests\nTraceback (most recent call last):\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 4449, in _write_subtitles\n    self.dl(sub_filename, sub_copy, subtitle=True)\n    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 3285, in dl\n    return fd.download(name, new_info, subtitle)\n           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/downloader/common.py\", line 480, in download\n    ret = self.real_download(filename, info_dict)\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/downloader/http.py\", line 362, in real_download\n    establish_connection()\n    ~~~~~~~~~~~~~~~~~~~~^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/downloader/http.py\", line 119, in establish_connection\n    ctx.data = self.ydl.urlopen(request)\n               ~~~~~~~~~~~~~~~~^^^^^^^^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 4260, in urlopen\n    return self._request_director.send(req)\n           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/common.py\", line 117, in send\n    response = handler.send(request)\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/_helper.py\", line 194, in wrapper\n    return func(self, *args, **kwargs)\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/common.py\", line 359, in send\n    return self._send(request)\n           ~~~~~~~~~~^^^^^^^^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/_requests.py\", line 361, in _send\n    raise HTTPError(res, redirect_loop=max_redirects_exceeded)\nyt_dlp.networking.exceptions.HTTPError: HTTP Error 429: Too Many Requests\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 1698, in wrapper\n    return func(self, *args, **kwargs)\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 1854, in __extract_info\n    return self.process_ie_result(ie_result, download, extra_info)\n           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 1913, in process_ie_result\n    ie_result = self.process_video_result(ie_result, download=download)\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 3096, in process_video_result\n    self.process_info(new_info)\n    ~~~~~~~~~~~~~~~~~^^^^^^^^^^\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 189, in wrapper\n    return func(self, *args, **kwargs)\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 3353, in process_info\n    sub_files = self._write_subtitles(info_dict, temp_filename)\n  File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 4457, in _write_subtitles\n    raise DownloadError(msg)\nyt_dlp.utils.DownloadError: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests
\n
\n
\n
\n

ISSUES \u3092\u63a2\u3059\u3068\u65e2\u77e5\u306e\u554f\u984c\u306e\u3088\u3046\u3067\u30ef\u30fc\u30af\u30a2\u30e9\u30a6\u30f3\u30c9\u304c\u3042\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n
\n
\n

[FreeTubeApp/FreeTube#7484](https://github.com/FreeTubeApp/FreeTube/pull/7484)

\n
\n
\n
\n
\n

FreeTube is adding a PO token to their subtitles requests. But FreeTube doesn’t use auto-translated subs AFAICT.
\n# Manual subtitles and original language automatic captions are not affected by this HTTP Error 429 issue.

\n
\n
\n

Only subtitles/captions that have been automatically translated into another language are affected. So you may be able to get the subs you want without a problem if you are precise with your --sub-langs and --write-subs vs --write-auto-subs arguments.

\n
\n
\n

But if you want translated auto subs,
\n# there are 2 known ways of avoiding this HTTP Error 429:

\n
\n
\n
    \n
  • \n

    Pass fresh cookies to yt-dlp from a browser session where you’ve very recently loaded auto-translated subs

    \n
  • \n
  • \n

    Wait ~60 seconds after extraction and before downloading the auto subs, e.g. --sleep-subtitles 60

    \n
  • \n
\n
\n
\n

(Either of these 2 methods will work individually, you do not need to combine them)

\n
\n
\n\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\u3068\u308a\u3042\u3048\u305a --sleep-subtitles 60 \u3092\u4ed8\u3051\u3066\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u5b57\u5e55\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6642\u306bsleep \u3057\u3066\u6012\u3089\u308c\u305a\u306b\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig --sleep-subtitles 60
\n
\n
\n
\n

\u305d\u3057\u3066mpv \u7b49\u3067\u3053\u3093\u306a\u611f\u3058\u3067\u5b57\u5e55\u30922\u3064\u8868\u793a\u3057\u306a\u304c\u3089\u8996\u8074\u53ef\u80fd\u306b :)

\n
\n
\n
\n
$ mpv --sub-files='CDImage - Cam [yYgF87nqyKI].en.vtt:CDImage - Cam [yYgF87nqyKI].ja.vtt' --secondary-sid=2 'CDImage - Cam [yYgF87nqyKI].webm'
\n
\n
\n
\n

\"mpv

\n
\n
\n
\u74b0\u5883
\n
\n
$ yt-dlp --version\n2026.02.04\n$ deno --version\ndeno 2.6.8 (stable, release, x86_64-unknown-linux-gnu)\nv8 14.5.201.2-rusty\ntypescript 5.9.2\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n\n
\n
\n", "content_text": "Tokyo Linux Users Group \u306eTechnical Meeting \u306e\u30d3\u30c7\u30aa\u304cYouTube \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u3068\u5148\u65e5\u306e #kagolug \u3067\u6559\u3048\u3066\u3082\u3089\u3063\u305f\u306e\u3067\u89b3\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3057\u305f\uff0e\n\u3067\u3082TLUG \u306f\u82f1\u8a9e\u3067\u3059\uff0e\u4ee5\u524d\u306fWisper.cpp \u3067\u6587\u5b57\u8d77\u3053\u3057 & \u6a5f\u68b0\u7ffb\u8a33\u3067\u5b57\u5e55\u3092\u4f5c\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u6700\u8fd1\u306eYouTube \u306e\u6587\u5b57\u8d77\u3053\u3057\u306f\u5927\u5206\u826f\u304f\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u305d\u308c\u3092\u4f7f\u304a\u3046\u3068\u30ed\u30fc\u30ab\u30eb\u306b\u30d3\u30c7\u30aa\u3068\u5b57\u5e55\u3092dl \u3057\u3088\u3046\u3068\u3057\u305f\u3068\u3053\u308d\u5b57\u5e55\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\nTokyo Linux Users Group\n\n\nhttps://www.youtube.com/@TokyoLinuxUsersGroup\n\n\n\n\n\n\u9069\u5f53\u306a\u89e3\u50cf\u5ea6\u306e\u30d3\u30c7\u30aa\u3068\u30aa\u30fc\u30c7\u30a3\u30aa\uff0c\u305d\u308c\u3068\u82f1\u8a9e\u306e\u6587\u5b57\u8d77\u3053\u3057\u5b57\u5e55\u3068\uff0c\u305d\u308c\u3092\u65e5\u672c\u8a9e\u306b\u7ffb\u8a33\u3057\u305f\u3082\u306e\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\uff0e\n\n\n\n$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig\n[youtube] Extracting URL: yYgF87nqyKI\n[youtube] yYgF87nqyKI: Downloading webpage\n[youtube] yYgF87nqyKI: Downloading android vr player API JSON\n[youtube] yYgF87nqyKI: Downloading web safari player API JSON\n[youtube] yYgF87nqyKI: Downloading player 4c5cf06a-tv\n[youtube] [jsc:deno] Solving JS challenges using deno\n[youtube] yYgF87nqyKI: Downloading m3u8 information\n[info] yYgF87nqyKI: Downloading subtitles: ja\n[info] yYgF87nqyKI: Downloading 1 format(s): 244+251\n[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests\n\n\n\n*Too Many Requests* \u3068\u304b\u8a00\u308f\u308c\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u4eca\u65e5\u521d\u3081\u3066\u5b9f\u884c\u3057\u305f\u306e\u306b\u306a\u3093\u3067?\n\n\n--verbose \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u307f\u307e\u3057\u305f\u304c\u3088\u304f\u308f\u304b\u308a\u307e\u305b\u3093\n\n\n\n[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt\n[debug] Invoking http downloader on \"https://www.youtube.com/api/timedtext?v=yYgF87nqyKI&ei=M4WXaZnECfax2roP_YqAqAc&caps=asr&opi=112496729&xoaf=5&xowf=1&xospf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1771562915&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=1B0AC6AA8FB20AFE9B45B2F66DBB1000F04DE626.909918AF43ACD2AFD3E0C2C61E53A3C72E49AB6C&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ja\"\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests\nTraceback (most recent call last):\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 4449, in _write_subtitles\n self.dl(sub_filename, sub_copy, subtitle=True)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 3285, in dl\n return fd.download(name, new_info, subtitle)\n ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/downloader/common.py\", line 480, in download\n ret = self.real_download(filename, info_dict)\n File \"/home/matoken/bin/yt-dlp/yt_dlp/downloader/http.py\", line 362, in real_download\n establish_connection()\n ~~~~~~~~~~~~~~~~~~~~^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/downloader/http.py\", line 119, in establish_connection\n ctx.data = self.ydl.urlopen(request)\n ~~~~~~~~~~~~~~~~^^^^^^^^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 4260, in urlopen\n return self._request_director.send(req)\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/common.py\", line 117, in send\n response = handler.send(request)\n File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/_helper.py\", line 194, in wrapper\n return func(self, *args, **kwargs)\n File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/common.py\", line 359, in send\n return self._send(request)\n ~~~~~~~~~~^^^^^^^^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/networking/_requests.py\", line 361, in _send\n raise HTTPError(res, redirect_loop=max_redirects_exceeded)\nyt_dlp.networking.exceptions.HTTPError: HTTP Error 429: Too Many Requests\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 1698, in wrapper\n return func(self, *args, **kwargs)\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 1854, in __extract_info\n return self.process_ie_result(ie_result, download, extra_info)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 1913, in process_ie_result\n ie_result = self.process_video_result(ie_result, download=download)\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 3096, in process_video_result\n self.process_info(new_info)\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 189, in wrapper\n return func(self, *args, **kwargs)\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 3353, in process_info\n sub_files = self._write_subtitles(info_dict, temp_filename)\n File \"/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py\", line 4457, in _write_subtitles\n raise DownloadError(msg)\nyt_dlp.utils.DownloadError: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests\n\n\n\nISSUES \u3092\u63a2\u3059\u3068\u65e2\u77e5\u306e\u554f\u984c\u306e\u3088\u3046\u3067\u30ef\u30fc\u30af\u30a2\u30e9\u30a6\u30f3\u30c9\u304c\u3042\u308a\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n[FreeTubeApp/FreeTube#7484](https://github.com/FreeTubeApp/FreeTube/pull/7484)\n\n\n\n\nFreeTube is adding a PO token to their subtitles requests. But FreeTube doesn’t use auto-translated subs AFAICT.\n# Manual subtitles and original language automatic captions are not affected by this HTTP Error 429 issue.\n\n\nOnly subtitles/captions that have been automatically translated into another language are affected. So you may be able to get the subs you want without a problem if you are precise with your --sub-langs and --write-subs vs --write-auto-subs arguments.\n\n\nBut if you want translated auto subs,\n# there are 2 known ways of avoiding this HTTP Error 429:\n\n\n\n\nPass fresh cookies to yt-dlp from a browser session where you’ve very recently loaded auto-translated subs\n\n\nWait ~60 seconds after extraction and before downloading the auto subs, e.g. --sleep-subtitles 60\n\n\n\n\n(Either of these 2 methods will work individually, you do not need to combine them)\n\n\n\n— [YouTube] Unable to download video subtitles: HTTP Error 429: Too Many Requests \u00b7 Issue #13831 \u00b7 yt-dlp/yt-dlp\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\u3068\u308a\u3042\u3048\u305a --sleep-subtitles 60 \u3092\u4ed8\u3051\u3066\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u5b57\u5e55\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6642\u306bsleep \u3057\u3066\u6012\u3089\u308c\u305a\u306b\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\uff0e\n\n\n\n$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig --sleep-subtitles 60\n\n\n\n\u305d\u3057\u3066mpv \u7b49\u3067\u3053\u3093\u306a\u611f\u3058\u3067\u5b57\u5e55\u30922\u3064\u8868\u793a\u3057\u306a\u304c\u3089\u8996\u8074\u53ef\u80fd\u306b :)\n\n\n\n$ mpv --sub-files='CDImage - Cam [yYgF87nqyKI].en.vtt:CDImage - Cam [yYgF87nqyKI].ja.vtt' --secondary-sid=2 'CDImage - Cam [yYgF87nqyKI].webm'\n\n\n\n\n\n\n\u74b0\u5883\n\n$ yt-dlp --version\n2026.02.04\n$ deno --version\ndeno 2.6.8 (stable, release, x86_64-unknown-linux-gnu)\nv8 14.5.201.2-rusty\ntypescript 5.9.2\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\ntoot\n\n\nmatoken :fox:: “#tlug \u306e\u30d3\u30c7\u30aa\u304cYouTube \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u2026” – \u3044\u306a\u3053\u3093", "date_published": "2026-02-20T07:17:00+09:00", "date_modified": "2026-02-20T07:17:01+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "mpv", "subtitle", "yt-dlp", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5235", "url": "https://matoken.org/blog/2026/02/16/firefox-lock-tab/", "title": "Firefox\u306e\u6307\u5b9a\u30bf\u30d6\u3092\u4fdd\u8b77(\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u96e2\u8131\u9632\u6b62)", "content_html": "
\n
\n
\n

\"2683779

\n
\n
\n

\u3053\u306e\u571f\u65e5\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3067\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u53c2\u52a0\u3057\u3066\u3044\u307e\u3057\u305f\uff0e\uff11\u3064\u306fzoom.us, \u3082\u30461\u3064\u306fGalene \u3067\u3057\u305f\uff0e
\n\u3069\u3061\u3089\u3082\u53c2\u52a0\u4e2d\u306b\u64cd\u4f5c\u30df\u30b9\u3067\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30bf\u30d6\u304b\u3089\u79fb\u52d5\u3057\u3066\u3057\u307e\u3044\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u304b\u3089\u96e2\u8131\u3057\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e
\n\u30bf\u30d6\u3092\u62e1\u5f35\u6a5f\u80fd\u3067\u4fdd\u8b77\u3067\u304d\u306a\u3044\u304b\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

\u306f\u3058\u3081\u8a66\u3057\u305f\u306e\u306f\u3053\u3061\u3089\u306e\u300cTabloc\u300d\uff0etext chat \u306e\u30ea\u30f3\u30af\u3092\u62bc\u3059\u3068\u65b0\u3057\u3044\u30bf\u30d6\u3067\u958b\u304b\u308c\u308b\u3057\u3053\u308c\u3067\u3044\u3044\u304b\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u53f3\u4e0a\u306e\u30e1\u30cb\u30e5\u30fc\u306e\u5c65\u6b74\u304b\u3089\u5fa9\u5143\u3057\u305f\u3089\u99c4\u76ee\u3067\u3059\uff0e

\n
\n\n
\n

\u6b21\u306b\u8a66\u3057\u305f\u306e\u306f\u4ee5\u4e0b\u306e\u300c\u30bf\u30d6\u306e\u30da\u30fc\u30b8\u3092\u30ed\u30c3\u30af\u3059\u308b\u300d\uff0e\u3053\u3061\u3089\u3060\u3068\u5c65\u6b74\u3092\u5fa9\u5143\u3057\u3088\u3046\u3068\u3057\u3042\u305f\u308a\u30bf\u30d6\u3092\u4e2d\u30af\u30ea\u30c3\u30af\u3067\u9589\u3058\u3088\u3046\u3068\u3059\u308b\u3068\u300c\u3053\u306e\u30da\u30fc\u30b8\u304b\u3089\u79fb\u52d5\u3057\u307e\u3059\u304b\uff1f\u5165\u529b\u3057\u305f\u60c5\u5831\u306f\u4fdd\u5b58\u3055\u308c\u307e\u305b\u3093\u3002\u300d\u3068\u3044\u3046\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3067\u3059\u3050\u306b\u306f\u9589\u3058\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n

\"fx
\n\"fx

\n
\n
\n

\u4fdd\u8b77\u3057\u305f\u30bf\u30d6\u306b\u306f\"\ud83d\udd12\"\u30a2\u30a4\u30b3\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e

\n
\n\n
\n
\u74b0\u5883
\n
\n
\u30bf\u30d6\u306e\u30da\u30fc\u30b8\u3092\u30ed\u30c3\u30af\u3059\u308b: \u30d0\u30fc\u30b8\u30e7\u30f3 1.2025.1227.0\n$ dpkg-query -W firefox\nfirefox 147.0.3-1+b1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n
\n
\n", "content_text": "\u3053\u306e\u571f\u65e5\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3067\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u53c2\u52a0\u3057\u3066\u3044\u307e\u3057\u305f\uff0e\uff11\u3064\u306fzoom.us, \u3082\u30461\u3064\u306fGalene \u3067\u3057\u305f\uff0e\n\u3069\u3061\u3089\u3082\u53c2\u52a0\u4e2d\u306b\u64cd\u4f5c\u30df\u30b9\u3067\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30bf\u30d6\u304b\u3089\u79fb\u52d5\u3057\u3066\u3057\u307e\u3044\u30d3\u30c7\u30aa\u30df\u30fc\u30c6\u30a3\u30f3\u30b0\u304b\u3089\u96e2\u8131\u3057\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\n\u30bf\u30d6\u3092\u62e1\u5f35\u6a5f\u80fd\u3067\u4fdd\u8b77\u3067\u304d\u306a\u3044\u304b\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\u306f\u3058\u3081\u8a66\u3057\u305f\u306e\u306f\u3053\u3061\u3089\u306e\u300cTabloc\u300d\uff0etext chat \u306e\u30ea\u30f3\u30af\u3092\u62bc\u3059\u3068\u65b0\u3057\u3044\u30bf\u30d6\u3067\u958b\u304b\u308c\u308b\u3057\u3053\u308c\u3067\u3044\u3044\u304b\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u53f3\u4e0a\u306e\u30e1\u30cb\u30e5\u30fc\u306e\u5c65\u6b74\u304b\u3089\u5fa9\u5143\u3057\u305f\u3089\u99c4\u76ee\u3067\u3059\uff0e\n\n\n\n\nTabloc \u2013 Firefox (ja) \u5411\u3051\u62e1\u5f35\u6a5f\u80fd\u3092\u5165\u624b\n\n\n\n\n\u6b21\u306b\u8a66\u3057\u305f\u306e\u306f\u4ee5\u4e0b\u306e\u300c\u30bf\u30d6\u306e\u30da\u30fc\u30b8\u3092\u30ed\u30c3\u30af\u3059\u308b\u300d\uff0e\u3053\u3061\u3089\u3060\u3068\u5c65\u6b74\u3092\u5fa9\u5143\u3057\u3088\u3046\u3068\u3057\u3042\u305f\u308a\u30bf\u30d6\u3092\u4e2d\u30af\u30ea\u30c3\u30af\u3067\u9589\u3058\u3088\u3046\u3068\u3059\u308b\u3068\u300c\u3053\u306e\u30da\u30fc\u30b8\u304b\u3089\u79fb\u52d5\u3057\u307e\u3059\u304b\uff1f\u5165\u529b\u3057\u305f\u60c5\u5831\u306f\u4fdd\u5b58\u3055\u308c\u307e\u305b\u3093\u3002\u300d\u3068\u3044\u3046\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3067\u3059\u3050\u306b\u306f\u9589\u3058\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n\u4fdd\u8b77\u3057\u305f\u30bf\u30d6\u306b\u306f\u30a2\u30a4\u30b3\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e\n\n\n\n\n\u30bf\u30d6\u306e\u30da\u30fc\u30b8\u3092\u30ed\u30c3\u30af\u3059\u308b \u2013 Firefox (ja) \u5411\u3051\u62e1\u5f35\u6a5f\u80fd\u3092\u5165\u624b\n\n\n\n\n\u74b0\u5883\n\n\u30bf\u30d6\u306e\u30da\u30fc\u30b8\u3092\u30ed\u30c3\u30af\u3059\u308b: \u30d0\u30fc\u30b8\u30e7\u30f3 1.2025.1227.0\n$ dpkg-query -W firefox\nfirefox 147.0.3-1+b1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2026-02-16T19:03:27+09:00", "date_modified": "2026-02-16T23:15:14+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "extension", "Firefox", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5219", "url": "https://matoken.org/blog/2026/02/06/gnu-coreutils-9-10-paste/", "title": "GNU coreutils 9.10\u3067paste\u306e\u30c7\u30ea\u30df\u30bf\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u304c\u5229\u7528\u53ef\u80fd\u306b", "content_html": "
\n
\n

\n
\n

GNU coreutils 9.10 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e

\n
\n\n
\n

paste \u3067\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u8a8d\u8b58\u3059\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u305d\u3046\u3067\u3059\uff0e\u307e\u3060\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u304b\u3063\u305f\u3093\u3060\u3068\u3061\u3087\u3063\u3068\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n
    \n
  • \n

    paste(1) is now multi-byte character aware

    \n
  • \n
\n
\n
\n
\n

\n
\n

\u307e\u305a\u306f\u9069\u5f53\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ echo '1\n2\n3' > num\n$ echo '\u3044\n\u308d\n\u306f' > data
\n
\n
\n
\n

GNU coreutils 9.7 \u306epaste \u3067\u8a66\u3059\u3068\u65e5\u672c\u8a9e\u306e\u30c7\u30fc\u30bf\u3082\u3046\u307e\u304f\u52d5\u3044\u3066\u3044\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ paste --version | head -1\npaste (GNU coreutils) 9.7\n$ paste num data\n1       \u3044\n2       \u308d\n3       \u306f
\n
\n
\n
\n

NEWS \u306e\u4e0b\u306e\u65b9\u3092\u898b\u308b\u3068\u5c11\u3057\u8a73\u3057\u304f\u66f8\u3044\u3066\u3042\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n
\n
'paste' now supports multi-byte --delimiters characters.
\n
\n
\n
\n
\n
\n

\u30c7\u30ea\u30df\u30bf\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\u518d\u5ea6\uff0c\u4eca\u5ea6\u306f\u30c7\u30df\u30ea\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059\uff0e

\n
\n
\n
GNU coreutils 9.7 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b , \u3092\u6307\u5b9a
\n
\n
$ paste num data -d,\n1,\u3044\n2,\u308d\n3,\u306f
\n
\n
\n
\n
GNU coreutils 9.7 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b \uff1d \u3092\u6307\u5b9a
\n
\n
$ paste num data -d\uff1d\n1\ufffd\ufffd\n2\ufffd\ufffd\n3\ufffd\ufffd
\n
\n
\n
\n

\u305f\u3057\u304b\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u4f7f\u3046\u3068\u304a\u304b\u3057\u304f\u306a\u308a\u307e\u3059\uff0e

\n
\n
\n
GNU coreutils 9.10 \u3092\u7528\u610f
\n
\n
$ wget https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz \\\n\thttps://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz.sig\n$ echo 'SHA256 (coreutils-9.10.tar.xz) = FlNamt8LEANzZOLWEqrT2fTso6NElJztdNEvr0vVHSU=' | cksum -a sha256 --check\ncoreutils-9.10.tar.xz: OK\n$ gpg --verify coreutils-9.10.tar.xz.sig\ngpg: assuming signed data in 'coreutils-9.10.tar.xz'\ngpg: Signature made Wed Feb  4 21:46:29 2026 JST\ngpg:                using RSA key 6C37DC12121A5006BC1DB804DF6FD971306037D9\ngpg: Good signature from \"P draig Brady <P@draigBrady.com>\" [unknown]\ngpg:                 aka \"P draig Brady <pixelbeat@gnu.org>\" [unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg:          There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: 6C37 DC12 121A 5006 BC1D  B804 DF6F D971 3060 37D9\n$ tar xvf coreutils-9.10.tar.xz\n$ cd coreutils-9.10\n$ sudo apt build-dep coreutils\n$ ./configure\n$ make\n$ src/paste --version | head -1\npaste (GNU coreutils) 9.10
\n
\n
\n
\n
GNU coreutils 9.10 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u6307\u5b9a
\n
\n
$ ./src/paste num data -d\uff1d\n1\uff1d\u3044\n2\uff1d\u308d\n3\uff1d\u306f\n$ ./src/paste num data -d🐈\n1🐈\u3044\n2🐈\u308d\n3🐈\u306f
\n
\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067GNU coreutils 9.10 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\uff0e
\n\u4f7f\u3044\u9053\u306f\u3042\u307e\u308a\u6d6e\u304b\u3073\u307e\u305b\u3093\u304c\u2026\u2026\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W coreutils\ncoreutils       9.7-3\n$ src/paste --version\npaste (GNU coreutils) 9.10\nCopyright (C) 2026 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by David M. Ihnat and David MacKenzie.\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n\n
\n
\n", "content_text": "GNU coreutils 9.10 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n\ncoreutils-9.10 released [stable]\n\n\n\n\npaste \u3067\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u8a8d\u8b58\u3059\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u305d\u3046\u3067\u3059\uff0e\u307e\u3060\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u304b\u3063\u305f\u3093\u3060\u3068\u3061\u3087\u3063\u3068\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\npaste(1) is now multi-byte character aware\n\n\n\n\n\n\n\n\u307e\u305a\u306f\u9069\u5f53\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e\n\n\n\n$ echo '1\n2\n3' > num\n$ echo '\u3044\n\u308d\n\u306f' > data\n\n\n\nGNU coreutils 9.7 \u306epaste \u3067\u8a66\u3059\u3068\u65e5\u672c\u8a9e\u306e\u30c7\u30fc\u30bf\u3082\u3046\u307e\u304f\u52d5\u3044\u3066\u3044\u305d\u3046\u3067\u3059\uff0e\n\n\n\n$ paste --version | head -1\npaste (GNU coreutils) 9.7\n$ paste num data\n1 \u3044\n2 \u308d\n3 \u306f\n\n\n\nNEWS \u306e\u4e0b\u306e\u65b9\u3092\u898b\u308b\u3068\u5c11\u3057\u8a73\u3057\u304f\u66f8\u3044\u3066\u3042\u308a\u307e\u3057\u305f\uff0e\n\n\n\n\n\n'paste' now supports multi-byte --delimiters characters.\n\n\n\n\n\n\u30c7\u30ea\u30df\u30bf\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3088\u3046\u3067\u3059\uff0e\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\u518d\u5ea6\uff0c\u4eca\u5ea6\u306f\u30c7\u30df\u30ea\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059\uff0e\n\n\nGNU coreutils 9.7 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b , \u3092\u6307\u5b9a\n\n$ paste num data -d,\n1,\u3044\n2,\u308d\n3,\u306f\n\n\n\nGNU coreutils 9.7 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b \uff1d \u3092\u6307\u5b9a\n\n$ paste num data -d\uff1d\n1\ufffd\ufffd\n2\ufffd\ufffd\n3\ufffd\ufffd\n\n\n\n\u305f\u3057\u304b\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u4f7f\u3046\u3068\u304a\u304b\u3057\u304f\u306a\u308a\u307e\u3059\uff0e\n\n\nGNU coreutils 9.10 \u3092\u7528\u610f\n\n$ wget https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz \\\n\thttps://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz.sig\n$ echo 'SHA256 (coreutils-9.10.tar.xz) = FlNamt8LEANzZOLWEqrT2fTso6NElJztdNEvr0vVHSU=' | cksum -a sha256 --check\ncoreutils-9.10.tar.xz: OK\n$ gpg --verify coreutils-9.10.tar.xz.sig\ngpg: assuming signed data in 'coreutils-9.10.tar.xz'\ngpg: Signature made Wed Feb 4 21:46:29 2026 JST\ngpg: using RSA key 6C37DC12121A5006BC1DB804DF6FD971306037D9\ngpg: Good signature from \"P draig Brady <P@draigBrady.com>\" [unknown]\ngpg: aka \"P draig Brady <pixelbeat@gnu.org>\" [unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg: There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: 6C37 DC12 121A 5006 BC1D B804 DF6F D971 3060 37D9\n$ tar xvf coreutils-9.10.tar.xz\n$ cd coreutils-9.10\n$ sudo apt build-dep coreutils\n$ ./configure\n$ make\n$ src/paste --version | head -1\npaste (GNU coreutils) 9.10\n\n\n\nGNU coreutils 9.10 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u6307\u5b9a\n\n$ ./src/paste num data -d\uff1d\n1\uff1d\u3044\n2\uff1d\u308d\n3\uff1d\u306f\n$ ./src/paste num data -d🐈\n1🐈\u3044\n2🐈\u308d\n3🐈\u306f\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067GNU coreutils 9.10 \u306epaste \u3067\u30c7\u30ea\u30df\u30bf\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\uff0e\n\u4f7f\u3044\u9053\u306f\u3042\u307e\u308a\u6d6e\u304b\u3073\u307e\u305b\u3093\u304c\u2026\u2026\uff0e\n\n\n\u74b0\u5883\n\n$ dpkg-query -W coreutils\ncoreutils 9.7-3\n$ src/paste --version\npaste (GNU coreutils) 9.10\nCopyright (C) 2026 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by David M. Ihnat and David MacKenzie.\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\ntoot\n\n\nmatoken :fox:: “coreutils-9.10 released [stabl\u2026” – \u3044\u306a\u3053\u3093", "date_published": "2026-02-06T06:07:07+09:00", "date_modified": "2026-02-06T06:07:09+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "GNU coreutils", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5214", "url": "https://matoken.org/blog/2026/02/06/virustotal-api-limit/", "title": "VirusTotal\u306ecli tool\u3068\u3042\u307e\u308a\u306b\u5c0f\u3055\u3044API\u5236\u9650", "content_html": "
\n
\n

\n
\n

\u4e45\u3005\u306bcli \u3067VirusTotal \u3092\u4f7f\u304a\u3046\u3068\u3057\u305f\u3089\u30c4\u30fc\u30eb\u304c\u5909\u66f4\u306b\u306a\u3063\u3066\u3044\u305f\u308a\uff0cAPI \u5236\u9650\u304c\u304a\u304b\u3057\u304f\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

\u4ee5\u524d\u306eblog \u30a8\u30f3\u30c8\u30ea\u3092\u78ba\u8a8d\u3059\u308b\u3068\uff0c

\n
\n\n
\n

\u4ee5\u4e0b\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u3044\u305f\u3088\u3046\u3067\u3059\u304c\uff0cArchived \u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n\n
\n

\u73fe\u5728\u306f\u4ee5\u4e0b\u306e\u30c4\u30fc\u30eb\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u3088\u3046\u306a\u306e\u3067\u3053\u3061\u3089\u3092\u4f7f\u3046\u3053\u3068\u306b\u3057\u307e\u3057\u305f\uff0e

\n
\n\n
\n
build
\n
\n
$ git clone https://github.com/VirusTotal/vt-cli\n$ cd vt-cli\n$ make\n$ build/vt -h\nA command-line tool for interacting with VirusTotal.\n\nUsage:\n  vt [command]\n\nAvailable Commands:\n  analysis       Get a file or URL analysis\n  collection     Get information about collections\n  completion     Output shell completion code for the specified shell (bash or zsh)\n  domain         Get information about Internet domains\n  download       Download files\n  file           Get information about files\n  group          Get information about VirusTotal groups\n  help           Help about any command\n  hunting        Manage malware hunting rules and notifications\n  init           Initialize or re-initialize vt command-line tool\n  iocstream      Manage IoC Stream notifications\n  ip             Get information about IP addresses\n  meta           Returns metadata about VirusTotal\n  monitor        Manage your monitor account\n  monitorpartner Manage your monitor partner account\n  retrohunt      Manage retrohunt jobs\n  scan           Scan files or URLs\n  search         Search for files in VirusTotal Intelligence\n  threatprofile  Get information about Threat Profiles\n  url            Get information about URLs\n  user           Get information about VirusTotal users\n  version        Show version number\n\nFlags:\n  -k, --apikey string   API key\n      --format string   Output format (yaml/json/csv) (default \"yaml\")\n  -h, --help            help for vt\n  -s, --silent          Silent or quiet mode. Do not show progress meter\n  -v, --verbose         verbose output\n\nUse \"vt [command] --help\" for more information about a command.
\n
\n
\n
\n
API key \u767b\u9332
\n
\n
$ build/vt init\n\n\u2588\u2588\u2557   \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557   \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\n\u2588\u2588\u2551   \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551   \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d\u255a\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255d\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u255a\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255d\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\n\u2588\u2588\u2551   \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2551   \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557   \u2588\u2588\u2551   \u2588\u2588\u2551   \u2588\u2588\u2551   \u2588\u2588\u2551   \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551\n\u255a\u2588\u2588\u2557 \u2588\u2588\u2554\u255d\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551   \u2588\u2588\u2551\u255a\u2550\u2550\u2550\u2550\u2588\u2588\u2551   \u2588\u2588\u2551   \u2588\u2588\u2551   \u2588\u2588\u2551   \u2588\u2588\u2551   \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551\n \u255a\u2588\u2588\u2588\u2588\u2554\u255d \u2588\u2588\u2551\u2588\u2588\u2551  \u2588\u2588\u2551\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551   \u2588\u2588\u2551   \u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d   \u2588\u2588\u2551   \u2588\u2588\u2551  \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n  \u255a\u2550\u2550\u2550\u255d  \u255a\u2550\u255d\u255a\u2550\u255d  \u255a\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d   \u255a\u2550\u255d    \u255a\u2550\u2550\u2550\u2550\u2550\u255d    \u255a\u2550\u255d   \u255a\u2550\u255d  \u255a\u2550\u255d\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d\n\nVirusTotal Command-Line Interface: Threat Intelligence at your fingertips.\n\nEnter your API key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nAPI key written to config file: /home/matoken/.vt.toml\nRelationships cache written to: /home/matoken/.cache/.vt.relationships.cache
\n
\n
\n
\n\n\n\n\n\n
\n
Note
\n
\n
\n

API key \u306fVirusTotal \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u72b6\u614b\u3067\uff0c\u53f3\u4e0a\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u30af\u30ea\u30c3\u30af\u3057\u305f\u3068\u304d\u306b\u51fa\u3066\u304f\u308b\u300cAPI key\u300d\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
\n
\n

\u6e96\u5099\u304c\u3067\u304d\u305f\u306e\u3067\u30b9\u30ad\u30e3\u30f3\u3057\u305f\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\uff0e

\n
\n
\n
\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9
\n
\n
$ build/vt scan file ~/Downloads/briar-desktop-x64-0.6.4-beta.AppImage\n/home/matoken/Downloads/briar-desktop-x64-0.6.4-beta.AppImage YTg3MzBiNGEwOWFmODUxMjgwYmFjOGI0YjE1YmQ4MTE6MTc3MDE5NDcyOA==
\n
\n
\n
\n

\u7d50\u679c\u3092\u78ba\u8a8d\u3057\u3066\u307f\u3088\u3046\u3068\u3057\u307e\u3059\uff0e\u3057\u304b\u3057\u5236\u9650\u306b\u639b\u304b\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\u7d50\u679c\u306e\u78ba\u8a8d
\n
\n
$ build/vt analysis YTg3MzBiNGEwOWFmODUxMjgwYmFjOGI0YjE1YmQ4MTE6MTc3MDE5NDcyOA==\nQuota exceeded
\n
\n
\n
\n

\u7121\u6599\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u5236\u9650\u3092\u78ba\u8a8d\u3059\u308b\u30681\u65e5\u3042\u305f\u308a500\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u304b1\u5206\u8fba\u308a4\u4ef6\u3068\u304b\u3067\u7d50\u69cb\u5e83\u304f\u306a\u305c\u5236\u9650\u3055\u308c\u305f\u306e\u304b\u308f\u304b\u308a\u307e\u305b\u3093\uff0e

\n
\n
\n
\n
\n

Public API constraints and restrictions

\n
\n
\n

The Public API is limited to 500 requests per day and a rate of 4 requests per minute.
\nThe Public API must not be used in commercial products or services.
\nThe Public API must not be used in business workflows that do not contribute new files.
\nYou are not allowed to register multiple accounts to overcome the aforementioned limitations.

\n
\n
\n\n
\n
\n

\u81ea\u5206\u306eAPI \u30da\u30fc\u30b8\u3092\u78ba\u8a8d\u3059\u308b\u3068\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u30da\u30fc\u30b8\u3068\u9055\u3044\u4ee5\u4e0b\u306e\u3088\u3046\u306b1\u65e51\u554f\u3044\u5408\u308f\u305b\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\u5c11\u306a\u3059\u304e\u308b\u2026\u2026.

\n
\n
\n
\n
Access level\n Limited , standard free public API\nUpgrade to premium\nUsage \tMust not be used in business workflows, commercial products or services.\nRequest rate \t1 lookups / min\nDaily quota \t1 lookups / day\nMonthly quota \t31 lookups / month
\n
\n
\n
\n

\"virustotal
\n\"virustotal
\n\"virustotal

\n
\n
\n

\u4ee5\u4e0b\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u3092\u898b\u308b\u3068\u7d50\u69cb\u53e4\u3044\u554f\u984c\u306e\u3088\u3046\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u308a\u76f4\u3055\u306a\u3044\u3068\u6cbb\u3089\u306a\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
\n

If you have an old account with stricter limitations than described, it might be best to set up a new account to ensure you benefit from current limitations stated.

\n
\n
\n\n
\n
\n

\u3061\u306a\u307f\u306b\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u30da\u30fc\u30b8\u306f\u3053\u3093\u306a\u611f\u3058\u30679\u5e74\u524d\u306b\u4f5c\u3063\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n

\"virustotal

\n
\n
\n

\u4ed5\u65b9\u304c\u306a\u3044\u306e\u3067VirusTotal \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664\u3057\u3066\u4f5c\u308a\u76f4\u3057\u307e\u3059\uff0e

\n
\n
\n

\"virustotal

\n
\n
\n
    \n
  • \n

    \u65e2\u5b58\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664

    \n
  • \n
  • \n

    \u65e2\u5b58\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8

    \n
  • \n
  • \n

    \u65b0\u898f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210

    \n
    \n
      \n
    • \n

      \u3053\u306e\u3068\u304d\u30a2\u30ab\u30a6\u30f3\u30c8\u540d\u3068\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u540c\u3058\u3060\u3068\u99c4\u76ee

      \n
    • \n
    \n
    \n
  • \n
  • \n

    API key \u3092\u53d6\u5f97\u3057\u3066 vt init \u3092\u5b9f\u884c\u3057\u3066API key \u518d\u767b\u9332

    \n
  • \n
\n
\n
\n

\u65b0\u3057\u3044\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u6b63\u3044\u5236\u9650\u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
Access level\n Limited , standard free public API\nUpgrade to premium\nUsage \tMust not be used in business workflows, commercial products or services.\nRequest rate \t4 lookups / min\nDaily quota \t500 lookups / day\nMonthly quota \t15.5 K lookups / month
\n
\n
\n
\n

\u3053\u308c\u3067\u666e\u901a\u306b\u52d5\u304b\u305b\u305d\u3046\u306a\u611f\u3058\u3067\u3059\uff0e

\n
\n
\n
\n
$ build/vt analysis YTg3MzBiNGEwOWFmODUxMjgwYmFjOGI0YjE1YmQ4MTE6MTc3MDE5NDcyOA== | tail -10\n  stats:\n    confirmed-timeout: 0\n    failure: 0\n    harmless: 0\n    malicious: 0\n    suspicious: 0\n    timeout: 0\n    type-unsupported: 12\n    undetected: 64\n  status: \"completed\"
\n
\n
\n
\n
\u74b0\u5883
\n
\n
$ build/vt version\nvt-cli\n$ git log --pretty=oneline -1\nd3405587c568b6486ccd5ac773cde1a25e4bb762 (HEAD -> master, origin/master, origin/HEAD) chore: upgrade `vt-go` to version 1.1.0.\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n\n
\n
\n", "content_text": "\u4e45\u3005\u306bcli \u3067VirusTotal \u3092\u4f7f\u304a\u3046\u3068\u3057\u305f\u3089\u30c4\u30fc\u30eb\u304c\u5909\u66f4\u306b\u306a\u3063\u3066\u3044\u305f\u308a\uff0cAPI \u5236\u9650\u304c\u304a\u304b\u3057\u304f\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\n\u4ee5\u524d\u306eblog \u30a8\u30f3\u30c8\u30ea\u3092\u78ba\u8a8d\u3059\u308b\u3068\uff0c\n\n\n\n\nVirusTotal\u3092\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u5229\u7528\u3059\u308b \u2013 matoken’s blog\n\n\n\n\n\u4ee5\u4e0b\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u3044\u305f\u3088\u3046\u3067\u3059\u304c\uff0cArchived \u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\nVirusTotal/c-vtapi: Official implementation of the VirusTotal API in C programming language\n\n\n\n\n\u73fe\u5728\u306f\u4ee5\u4e0b\u306e\u30c4\u30fc\u30eb\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u3088\u3046\u306a\u306e\u3067\u3053\u3061\u3089\u3092\u4f7f\u3046\u3053\u3068\u306b\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\nVirusTotal/vt-cli: VirusTotal Command Line Interface\n\n\n\n\nbuild\n\n$ git clone https://github.com/VirusTotal/vt-cli\n$ cd vt-cli\n$ make\n$ build/vt -h\nA command-line tool for interacting with VirusTotal.\n\nUsage:\n vt [command]\n\nAvailable Commands:\n analysis Get a file or URL analysis\n collection Get information about collections\n completion Output shell completion code for the specified shell (bash or zsh)\n domain Get information about Internet domains\n download Download files\n file Get information about files\n group Get information about VirusTotal groups\n help Help about any command\n hunting Manage malware hunting rules and notifications\n init Initialize or re-initialize vt command-line tool\n iocstream Manage IoC Stream notifications\n ip Get information about IP addresses\n meta Returns metadata about VirusTotal\n monitor Manage your monitor account\n monitorpartner Manage your monitor partner account\n retrohunt Manage retrohunt jobs\n scan Scan files or URLs\n search Search for files in VirusTotal Intelligence\n threatprofile Get information about Threat Profiles\n url Get information about URLs\n user Get information about VirusTotal users\n version Show version number\n\nFlags:\n -k, --apikey string API key\n --format string Output format (yaml/json/csv) (default \"yaml\")\n -h, --help help for vt\n -s, --silent Silent or quiet mode. Do not show progress meter\n -v, --verbose verbose output\n\nUse \"vt [command] --help\" for more information about a command.\n\n\n\nAPI key \u767b\u9332\n\n$ build/vt init\n\n\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\n\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d\u255a\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255d\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u255a\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255d\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\n\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551\n\u255a\u2588\u2588\u2557 \u2588\u2588\u2554\u255d\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u255a\u2550\u2550\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551\n \u255a\u2588\u2588\u2588\u2588\u2554\u255d \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n \u255a\u2550\u2550\u2550\u255d \u255a\u2550\u255d\u255a\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d\n\nVirusTotal Command-Line Interface: Threat Intelligence at your fingertips.\n\nEnter your API key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nAPI key written to config file: /home/matoken/.vt.toml\nRelationships cache written to: /home/matoken/.cache/.vt.relationships.cache\n\n\n\n\n\n\nNote\n\n\n\nAPI key \u306fVirusTotal \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u72b6\u614b\u3067\uff0c\u53f3\u4e0a\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u30af\u30ea\u30c3\u30af\u3057\u305f\u3068\u304d\u306b\u51fa\u3066\u304f\u308b\u300cAPI key\u300d\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u3059\uff0e\n\n\n\n\n\n\n\u6e96\u5099\u304c\u3067\u304d\u305f\u306e\u3067\u30b9\u30ad\u30e3\u30f3\u3057\u305f\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\uff0e\n\n\n\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n\n$ build/vt scan file ~/Downloads/briar-desktop-x64-0.6.4-beta.AppImage\n/home/matoken/Downloads/briar-desktop-x64-0.6.4-beta.AppImage YTg3MzBiNGEwOWFmODUxMjgwYmFjOGI0YjE1YmQ4MTE6MTc3MDE5NDcyOA==\n\n\n\n\u7d50\u679c\u3092\u78ba\u8a8d\u3057\u3066\u307f\u3088\u3046\u3068\u3057\u307e\u3059\uff0e\u3057\u304b\u3057\u5236\u9650\u306b\u639b\u304b\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\u7d50\u679c\u306e\u78ba\u8a8d\n\n$ build/vt analysis YTg3MzBiNGEwOWFmODUxMjgwYmFjOGI0YjE1YmQ4MTE6MTc3MDE5NDcyOA==\nQuota exceeded\n\n\n\n\u7121\u6599\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u5236\u9650\u3092\u78ba\u8a8d\u3059\u308b\u30681\u65e5\u3042\u305f\u308a500\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u304b1\u5206\u8fba\u308a4\u4ef6\u3068\u304b\u3067\u7d50\u69cb\u5e83\u304f\u306a\u305c\u5236\u9650\u3055\u308c\u305f\u306e\u304b\u308f\u304b\u308a\u307e\u305b\u3093\uff0e\n\n\n\n\nPublic API constraints and restrictions\n\n\nThe Public API is limited to 500 requests per day and a rate of 4 requests per minute. \nThe Public API must not be used in commercial products or services. \nThe Public API must not be used in business workflows that do not contribute new files. \nYou are not allowed to register multiple accounts to overcome the aforementioned limitations.\n\n\n\n— Public vs Premium API\n\n\n\n\u81ea\u5206\u306eAPI \u30da\u30fc\u30b8\u3092\u78ba\u8a8d\u3059\u308b\u3068\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u30da\u30fc\u30b8\u3068\u9055\u3044\u4ee5\u4e0b\u306e\u3088\u3046\u306b1\u65e51\u554f\u3044\u5408\u308f\u305b\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\u5c11\u306a\u3059\u304e\u308b\u2026\u2026.\n\n\n\nAccess level\n Limited , standard free public API\nUpgrade to premium\nUsage \tMust not be used in business workflows, commercial products or services.\nRequest rate \t1 lookups / min\nDaily quota \t1 lookups / day\nMonthly quota \t31 lookups / month\n\n\n\n\n\n\n\n\n\u4ee5\u4e0b\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u3092\u898b\u308b\u3068\u7d50\u69cb\u53e4\u3044\u554f\u984c\u306e\u3088\u3046\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u308a\u76f4\u3055\u306a\u3044\u3068\u6cbb\u3089\u306a\u305d\u3046\u3067\u3059\uff0e\n\n\n\n\nIf you have an old account with stricter limitations than described, it might be best to set up a new account to ensure you benefit from current limitations stated.\n\n\n\n— VirusTotal Functionality – GlassWire Help – GlassWire Internet Security Forum\n\n\n\n\u3061\u306a\u307f\u306b\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u30da\u30fc\u30b8\u306f\u3053\u3093\u306a\u611f\u3058\u30679\u5e74\u524d\u306b\u4f5c\u3063\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\n\n\u4ed5\u65b9\u304c\u306a\u3044\u306e\u3067VirusTotal \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664\u3057\u3066\u4f5c\u308a\u76f4\u3057\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\u65e2\u5b58\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664\n\n\n\u65e2\u5b58\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8\n\n\n\u65b0\u898f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\n\n\n\n\u3053\u306e\u3068\u304d\u30a2\u30ab\u30a6\u30f3\u30c8\u540d\u3068\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u540c\u3058\u3060\u3068\u99c4\u76ee\n\n\n\n\n\nAPI key \u3092\u53d6\u5f97\u3057\u3066 vt init \u3092\u5b9f\u884c\u3057\u3066API key \u518d\u767b\u9332\n\n\n\n\n\u65b0\u3057\u3044\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u6b63\u3044\u5236\u9650\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\nAccess level\n Limited , standard free public API\nUpgrade to premium\nUsage \tMust not be used in business workflows, commercial products or services.\nRequest rate \t4 lookups / min\nDaily quota \t500 lookups / day\nMonthly quota \t15.5 K lookups / month\n\n\n\n\u3053\u308c\u3067\u666e\u901a\u306b\u52d5\u304b\u305b\u305d\u3046\u306a\u611f\u3058\u3067\u3059\uff0e\n\n\n\n$ build/vt analysis YTg3MzBiNGEwOWFmODUxMjgwYmFjOGI0YjE1YmQ4MTE6MTc3MDE5NDcyOA== | tail -10\n stats:\n confirmed-timeout: 0\n failure: 0\n harmless: 0\n malicious: 0\n suspicious: 0\n timeout: 0\n type-unsupported: 12\n undetected: 64\n status: \"completed\"\n\n\n\n\u74b0\u5883\n\n$ build/vt version\nvt-cli\n$ git log --pretty=oneline -1\nd3405587c568b6486ccd5ac773cde1a25e4bb762 (HEAD -> master, origin/master, origin/HEAD) chore: upgrade `vt-go` to version 1.1.0.\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\ntoot\n\n\nmatoken :fox:: “VirusTotal \u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30ebArchived\u2026” – \u3044\u306a\u3053\u3093", "date_published": "2026-02-06T05:49:13+09:00", "date_modified": "2026-02-06T05:49:15+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "VirusTotal", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5203", "url": "https://matoken.org/blog/2026/02/03/do-not-auto-shutdown-with-power-button/", "title": "\u96fb\u6e90\u30dc\u30bf\u30f3\u3067\u81ea\u52d5\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3092\u6291\u5236", "content_html": "
\n
\n

\n
\n

laptop \u3092\u5c11\u3057\u79fb\u52d5\u3057\u305f\u3089\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u51e6\u7406\u304c\u8d70\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u30ed\u30b0\u3092\u898b\u308b\u3068\u96fb\u6e90\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u3066\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u51e6\u7406\u304c\u8d70\u3063\u305f\u3088\u3046\u3067\u3059\uff0e
\n\u3053\u308c\u3092\u6291\u5236\u3057\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

\u30ed\u30b0\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e

\n
\n
\n
\u30ea\u30b9\u30c8 1. syslog \u3088\u308a
\n
\n
2026-02-02T06:38:41.358362+09:00 tp-l13 acpid: received input layer event \"button/power PBTN 00000080 00000000\"\n2026-02-02T06:38:41.359609+09:00 tp-l13 acpid: rule from /etc/acpi/events/powerbtn-acpi-support matched\n2026-02-02T06:38:41.362438+09:00 tp-l13 acpid: executing action \"/etc/acpi/powerbtn-acpi-support.sh\"
\n
\n
\n
\n

/etc/systemd/logind.conf \u306e\u96fb\u6e90\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u305f\u3068\u304d\u306e HandlePowerKey \u306e\u30b3\u30e1\u30f3\u30c8\u3092\u89e3\u9664\u3057\u3066 poweroff \u3092 ignore \u306b\u66f8\u304d\u63db\u3048\u3066\u96fb\u6e90\u30dc\u30bf\u30f3\u3067\u4f55\u3082\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo git -C /etc diff HEAD~~ /etc/systemd/logind.conf\ndiff --git a/systemd/logind.conf b/systemd/logind.conf\nindex 02ec007..d7e2dbe 100644\n--- a/systemd/logind.conf\n+++ b/systemd/logind.conf\n@@ -25,7 +25,7 @@\n #InhibitDelayMaxSec=5\n #UserStopDelaySec=10\n #SleepOperation=suspend-then-hibernate suspend\n-#HandlePowerKey=poweroff\n+HandlePowerKey=igore\n #HandlePowerKeyLongPress=ignore\n #HandleRebootKey=reboot\n #HandleRebootKeyLongPress=poweroff
\n
\n
\n
\n

\u30c7\u30fc\u30e2\u30f3\u3092\u518d\u8d77\u52d5\u3057\u3066\u8a2d\u5b9a\u3092\u53cd\u6620\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo systemctl restart systemd-logind
\n
\n
\n
\n

\u96fb\u6e90\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u51e6\u7406\u304c\u8d70\u3089\u306a\u3044\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e

\n
\n
\n
\u30ea\u30b9\u30c8 2. \u74b0\u5883
\n
\n
$ dpkg-query -W systemd acpi\nacpi    1.8-1\nsystemd 259-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64\n$ sudo lshw -sanitize -json | jq '.\"vendor\", .\"version\"'\n\"LENOVO\"\n\"ThinkPad L13\"
\n
\n
\n
\n
\n", "content_text": "laptop \u3092\u5c11\u3057\u79fb\u52d5\u3057\u305f\u3089\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u51e6\u7406\u304c\u8d70\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u30ed\u30b0\u3092\u898b\u308b\u3068\u96fb\u6e90\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u3066\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u51e6\u7406\u304c\u8d70\u3063\u305f\u3088\u3046\u3067\u3059\uff0e\n\u3053\u308c\u3092\u6291\u5236\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\u30ed\u30b0\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e\n\n\n\u30ea\u30b9\u30c8 1. syslog \u3088\u308a\n\n2026-02-02T06:38:41.358362+09:00 tp-l13 acpid: received input layer event \"button/power PBTN 00000080 00000000\"\n2026-02-02T06:38:41.359609+09:00 tp-l13 acpid: rule from /etc/acpi/events/powerbtn-acpi-support matched\n2026-02-02T06:38:41.362438+09:00 tp-l13 acpid: executing action \"/etc/acpi/powerbtn-acpi-support.sh\"\n\n\n\n/etc/systemd/logind.conf \u306e\u96fb\u6e90\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u305f\u3068\u304d\u306e HandlePowerKey \u306e\u30b3\u30e1\u30f3\u30c8\u3092\u89e3\u9664\u3057\u3066 poweroff \u3092 ignore \u306b\u66f8\u304d\u63db\u3048\u3066\u96fb\u6e90\u30dc\u30bf\u30f3\u3067\u4f55\u3082\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\uff0e\n\n\n\n$ sudo git -C /etc diff HEAD~~ /etc/systemd/logind.conf\ndiff --git a/systemd/logind.conf b/systemd/logind.conf\nindex 02ec007..d7e2dbe 100644\n--- a/systemd/logind.conf\n+++ b/systemd/logind.conf\n@@ -25,7 +25,7 @@\n #InhibitDelayMaxSec=5\n #UserStopDelaySec=10\n #SleepOperation=suspend-then-hibernate suspend\n-#HandlePowerKey=poweroff\n+HandlePowerKey=igore\n #HandlePowerKeyLongPress=ignore\n #HandleRebootKey=reboot\n #HandleRebootKeyLongPress=poweroff\n\n\n\n\u30c7\u30fc\u30e2\u30f3\u3092\u518d\u8d77\u52d5\u3057\u3066\u8a2d\u5b9a\u3092\u53cd\u6620\u3057\u307e\u3059\uff0e\n\n\n\n$ sudo systemctl restart systemd-logind\n\n\n\n\u96fb\u6e90\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u51e6\u7406\u304c\u8d70\u3089\u306a\u3044\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e\n\n\n\u30ea\u30b9\u30c8 2. \u74b0\u5883\n\n$ dpkg-query -W systemd acpi\nacpi 1.8-1\nsystemd 259-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n$ sudo lshw -sanitize -json | jq '.\"vendor\", .\"version\"'\n\"LENOVO\"\n\"ThinkPad L13\"", "date_published": "2026-02-03T19:16:37+09:00", "date_modified": "2026-02-03T19:16:40+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "acpi", "button", "power", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5191", "url": "https://matoken.org/blog/2026/01/27/mystify-term/", "title": "\u61d0\u304b\u3057\u3044\u611f\u3058\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u306emystify-term", "content_html": "
\n
\n

\n
\n

\u53e4\u3044Windows \u3092\u4f7f\u3063\u3066\u3044\u305f\u65b9\u306f\u61d0\u304b\u3057\u304f\u611f\u3058\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u30bf\u30fc\u30df\u30ca\u30eb\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u306emystify-term \u3068\u3044\u3046\u3082\u306e\u3092\u898b\u304b\u3051\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n

\n

\n
\n
\n

install

\n
\n
\n

c\u88fd\u3067\u4f9d\u5b58\u3082\u5c11\u306a\u3044\u306e\u3067make \u4e00\u767a\u306a\u611f\u3058\u3067\u3059\uff0eDebian sind amd64/Raspberry Pi bookworm armhf \u3068\u3082\u306b\u554f\u984c\u306a\u304f\u52d5\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ git clone https://github.com/adsr/mystify-term\n$ cd mystify-term\n$ install mystify-term ~/bin/\n$ which mystify-term\n/home/matoken/bin/mystify-term\n$ mystify-term --help\nUsage:\n  mystify-term [options]\n\nOptions:\n  -h, --help                  Show this help\n  -v, --version               Show program version\n  -q, --polys=<int>           Set number of polygons (default=2, max=16)\n  -p, --points=<int>          Set number of points per polygon (default=4, max=16)\n  -t, --trails=<int>          Set number of trails lines (default=20, max=64)\n  -f, --fps=<int>             Set frames per second (default=60)\n  -e, --max-velocity=<float>  Set max velocity per point (default=1.00, min=0.01, max=10.00)\n  -s, --no-status             Hide status text\n  -i, --trail-incr=<int>      Render every nth trail (default=4, max=64)\n$ mystify-term --version\nmystify-term v0.1.0
\n
\n
\n
\n
\n
\n

\u5b9f\u884c\u4f8b

\n
\n
\n

\u3068\u308a\u3042\u3048\u305a\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057\u3067\u8d77\u52d5\u3057\u307e\u3059\uff0e\u61d0\u304b\u3057\u3044\u611f\u3058\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u304c\u8d77\u52d5\u3057\u307e\u3059\uff0e

\n
\n
\n

\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e

\n
\n
\n

\"mystify

\n
\n
\n

UTF-8 \u306e\u56db\u89d2\u3092\u4f7f\u3063\u3066\u3044\u308b\u306e\u3067\uff0cUTF-8 \u304c\u4f7f\u3048\u306a\u3044\u3068\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u3063\u305f\u308a\u3057\u307e\u3059\uff0e\u307e\u3042\u3053\u308c\u306f\u3053\u308c\u3067\uff0e

\n
\n
\n

\"mystify

\n
\n
\n

\u52d5\u3044\u3066\u3044\u308b\u69d8\u5b50\u306f\u4ee5\u4e0b\u306easciinema \u3092\uff0e

\n
\n

\n

\n
\n
\n

\u30ad\u30fc\u30d0\u30a4\u30f3\u30c9

\n
\n
\n

\u4e0b\u306e\u65b9\u306b\u3042\u308b\u3068\u304a\u308a\u4ee5\u4e0b\u306e\u30ad\u30fc\u30d0\u30a4\u30f3\u30c9\u3067\u64cd\u4f5c\u304c\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
\n
\n

p=pause, s=step, r=reinit, w=status, q=quit

\n
\n
\n
\n
\n
\n
p
\n
\n

\u4e00\u6642\u505c\u6b62/\u518d\u958b

\n
\n
s
\n
\n

\u505c\u6b62/\u30b3\u30de\u9001\u308a(p\u3067\u518d\u958b)

\n
\n
r
\n
\n

\u518d\u521d\u671f\u5316

\n
\n
w
\n
\n

\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a/\u975e\u8868\u793a

\n
\n
q
\n
\n

\u7d42\u4e86

\n
\n
\n
\n
\n
\n
\n

\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3

\n
\n
\n

\u30b9\u30bf\u30fc\u30bf\u30b9\u3092\u3044\u3058\u308c\u307e\u3059\u304c\uff0c -s, --no-status \u304f\u3089\u3044\u3067\u3042\u3068\u306f\u65e2\u5b9a\u5024\u3067\u3044\u3044\u304b\u306a\u3068\u8a00\u3046\u611f\u3058\uff0e

\n
\n
\n
\n
\n
\n
-h, --help                  Show this help
\n
\n
\n
\n
\n
\n

\u3053\u306e\u30d8\u30eb\u30d7\u3092\u8868\u793a

\n
\n
\n
\n
\n
\n
-v, --version               Show program version
\n
\n
\n
\n
\n
\n

\u30d0\u30fc\u30b8\u30e7\u30f3\u8868\u793a

\n
\n
\n
\n
\n
\n
-q, --polys=<int>           Set number of polygons (default=2, max=16)
\n
\n
\n
\n
\n
\n

\u30dd\u30ea\u30b4\u30f3\u6570

\n
\n
\n
\n
\n
\n
-p, --points=<int>          Set number of points per polygon (default=4, max=16)
\n
\n
\n
\n
\n
\n

\u30dd\u30a4\u30f3\u30c8\u6570(\u4f8b\u3048\u30703\u3067\u4e09\u89d2\u5f62\uff0c4\u3067\u56db\u89d2\u5f62)

\n
\n
\n
\n
\n
\n
-t, --trails=<int>          Set number of trails lines (default=20, max=64)
\n
\n
\n
\n
\n
\n

\u30c8\u30ec\u30a4\u30eb\u30e9\u30a4\u30f3\u306e\u6570

\n
\n
\n
\n
\n
\n
-f, --fps=<int>             Set frames per second (default=60)
\n
\n
\n
\n
\n
\n

1\u79d2\u3042\u305f\u308a\u306e\u30d5\u30ec\u30fc\u30e0\u6570

\n
\n
\n
\n
\n
\n
-e, --max-velocity=<float>  Set max velocity per point (default=1.00, min=0.01, max=10.00)
\n
\n
\n
\n
\n
\n

\u6700\u5927\u901f\u5ea6

\n
\n
\n
\n
\n
\n
-s, --no-status             Hide status text
\n
\n
\n
\n
\n
\n

\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u96a0\u3059

\n
\n
\n
\n
\n
\n
-i, --trail-incr=<int>      Render every nth trail (default=4, max=64)
\n
\n
\n
\n
\n
\n

n\u756a\u76ee\u306e\u30c8\u30ec\u30a4\u30eb\u3054\u3068\u306b\u63cf\u753b

\n
\n
\n
\n
\n

tmux \u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u306b\u8a2d\u5b9a

\n
\n
\n

\u30bf\u30fc\u30df\u30ca\u30eb\u30de\u30eb\u30c1\u30d7\u30ec\u30af\u30b5\u306etmux \u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u306b\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n

\u307e\u305a\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u3092\u8a18\u8ff0\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
set -g lock-after-time 900 #\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u304c\u8d77\u52d5\u3059\u308b\u307e\u3067\u306e\u79d2\u6570\nset -g lock-command \"mystify-term -s\" #\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u30b3\u30de\u30f3\u30c9
\n
\n
\n
\n\n\n\n\n\n
\n
Note
\n
\n
\n

tmux \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f

\n
\n
\n
\n
       ~/.tmux.conf\n       $XDG_CONFIG_HOME/tmux/tmux.conf\n       ~/.config/tmux/tmux.conf
\n
\n
\n
\n

byobu \u304b\u3089\u8d77\u52d5\u3057\u3066\u3044\u308b\u5834\u5408\u306f

\n
\n
\n
\n
       ~/.byobu/.tmux.conf
\n
\n
\n
\n
\n
\n

\u6b21\u56de\u8d77\u52d5\u6642\u304b\u3089\u53cd\u6620\u3055\u308c\u307e\u3059\u304c\uff0c\u73fe\u5728\u306etmux \u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u53cd\u6620\u3057\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b tmux source \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb \u3068\u3057\u3066\u53cd\u6620\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
\n
$ tmux source ~/.byobu/.tmux.conf
\n
\n
\n
\n
\n
\n

SEE ALSO

\n
\n\n
\n
\n", "content_text": "\u53e4\u3044Windows \u3092\u4f7f\u3063\u3066\u3044\u305f\u65b9\u306f\u61d0\u304b\u3057\u304f\u611f\u3058\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u30bf\u30fc\u30df\u30ca\u30eb\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u306emystify-term \u3068\u3044\u3046\u3082\u306e\u3092\u898b\u304b\u3051\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\nadsr/mystify-term\n\n\n\n\n\n\n\ninstall\n\n\nc\u88fd\u3067\u4f9d\u5b58\u3082\u5c11\u306a\u3044\u306e\u3067make \u4e00\u767a\u306a\u611f\u3058\u3067\u3059\uff0eDebian sind amd64/Raspberry Pi bookworm armhf \u3068\u3082\u306b\u554f\u984c\u306a\u304f\u52d5\u304d\u307e\u3057\u305f\uff0e\n\n\n\n$ git clone https://github.com/adsr/mystify-term\n$ cd mystify-term\n$ install mystify-term ~/bin/\n$ which mystify-term\n/home/matoken/bin/mystify-term\n$ mystify-term --help\nUsage:\n mystify-term [options]\n\nOptions:\n -h, --help Show this help\n -v, --version Show program version\n -q, --polys=<int> Set number of polygons (default=2, max=16)\n -p, --points=<int> Set number of points per polygon (default=4, max=16)\n -t, --trails=<int> Set number of trails lines (default=20, max=64)\n -f, --fps=<int> Set frames per second (default=60)\n -e, --max-velocity=<float> Set max velocity per point (default=1.00, min=0.01, max=10.00)\n -s, --no-status Hide status text\n -i, --trail-incr=<int> Render every nth trail (default=4, max=64)\n$ mystify-term --version\nmystify-term v0.1.0\n\n\n\n\n\n\u5b9f\u884c\u4f8b\n\n\n\u3068\u308a\u3042\u3048\u305a\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057\u3067\u8d77\u52d5\u3057\u307e\u3059\uff0e\u61d0\u304b\u3057\u3044\u611f\u3058\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u304c\u8d77\u52d5\u3057\u307e\u3059\uff0e\n\n\n\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e\n\n\n\n\n\nUTF-8 \u306e\u56db\u89d2\u3092\u4f7f\u3063\u3066\u3044\u308b\u306e\u3067\uff0cUTF-8 \u304c\u4f7f\u3048\u306a\u3044\u3068\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u3063\u305f\u308a\u3057\u307e\u3059\uff0e\u307e\u3042\u3053\u308c\u306f\u3053\u308c\u3067\uff0e\n\n\n\n\n\n\u52d5\u3044\u3066\u3044\u308b\u69d8\u5b50\u306f\u4ee5\u4e0b\u306easciinema \u3092\uff0e\n\n\n\n\n\n\u30ad\u30fc\u30d0\u30a4\u30f3\u30c9\n\n\n\u4e0b\u306e\u65b9\u306b\u3042\u308b\u3068\u304a\u308a\u4ee5\u4e0b\u306e\u30ad\u30fc\u30d0\u30a4\u30f3\u30c9\u3067\u64cd\u4f5c\u304c\u3067\u304d\u307e\u3059\uff0e\n\n\n\n\np=pause, s=step, r=reinit, w=status, q=quit\n\n\n\n\n\np\n\n\u4e00\u6642\u505c\u6b62/\u518d\u958b\n\ns\n\n\u505c\u6b62/\u30b3\u30de\u9001\u308a(p\u3067\u518d\u958b)\n\nr\n\n\u518d\u521d\u671f\u5316\n\nw\n\n\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a/\u975e\u8868\u793a\n\nq\n\n\u7d42\u4e86\n\n\n\n\n\n\n\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\n\n\n\u30b9\u30bf\u30fc\u30bf\u30b9\u3092\u3044\u3058\u308c\u307e\u3059\u304c\uff0c -s, --no-status \u304f\u3089\u3044\u3067\u3042\u3068\u306f\u65e2\u5b9a\u5024\u3067\u3044\u3044\u304b\u306a\u3068\u8a00\u3046\u611f\u3058\uff0e\n\n\n\n\n\n-h, --help Show this help\n\n\n\n\n\n\u3053\u306e\u30d8\u30eb\u30d7\u3092\u8868\u793a\n\n\n\n\n\n-v, --version Show program version\n\n\n\n\n\n\u30d0\u30fc\u30b8\u30e7\u30f3\u8868\u793a\n\n\n\n\n\n-q, --polys=<int> Set number of polygons (default=2, max=16)\n\n\n\n\n\n\u30dd\u30ea\u30b4\u30f3\u6570\n\n\n\n\n\n-p, --points=<int> Set number of points per polygon (default=4, max=16)\n\n\n\n\n\n\u30dd\u30a4\u30f3\u30c8\u6570(\u4f8b\u3048\u30703\u3067\u4e09\u89d2\u5f62\uff0c4\u3067\u56db\u89d2\u5f62)\n\n\n\n\n\n-t, --trails=<int> Set number of trails lines (default=20, max=64)\n\n\n\n\n\n\u30c8\u30ec\u30a4\u30eb\u30e9\u30a4\u30f3\u306e\u6570\n\n\n\n\n\n-f, --fps=<int> Set frames per second (default=60)\n\n\n\n\n\n1\u79d2\u3042\u305f\u308a\u306e\u30d5\u30ec\u30fc\u30e0\u6570\n\n\n\n\n\n-e, --max-velocity=<float> Set max velocity per point (default=1.00, min=0.01, max=10.00)\n\n\n\n\n\n\u6700\u5927\u901f\u5ea6\n\n\n\n\n\n-s, --no-status Hide status text\n\n\n\n\n\n\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u96a0\u3059\n\n\n\n\n\n-i, --trail-incr=<int> Render every nth trail (default=4, max=64)\n\n\n\n\n\nn\u756a\u76ee\u306e\u30c8\u30ec\u30a4\u30eb\u3054\u3068\u306b\u63cf\u753b\n\n\n\n\ntmux \u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u306b\u8a2d\u5b9a\n\n\n\u30bf\u30fc\u30df\u30ca\u30eb\u30de\u30eb\u30c1\u30d7\u30ec\u30af\u30b5\u306etmux \u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u306b\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\n\u307e\u305a\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u3092\u8a18\u8ff0\u3057\u307e\u3059\uff0e\n\n\n\nset -g lock-after-time 900 #\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u304c\u8d77\u52d5\u3059\u308b\u307e\u3067\u306e\u79d2\u6570\nset -g lock-command \"mystify-term -s\" #\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30fc\u30d0\u30fc\u30b3\u30de\u30f3\u30c9\n\n\n\n\n\n\nNote\n\n\n\ntmux \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\n\n\n\n ~/.tmux.conf\n $XDG_CONFIG_HOME/tmux/tmux.conf\n ~/.config/tmux/tmux.conf\n\n\n\nbyobu \u304b\u3089\u8d77\u52d5\u3057\u3066\u3044\u308b\u5834\u5408\u306f\n\n\n\n ~/.byobu/.tmux.conf\n\n\n\n\n\n\n\n\u6b21\u56de\u8d77\u52d5\u6642\u304b\u3089\u53cd\u6620\u3055\u308c\u307e\u3059\u304c\uff0c\u73fe\u5728\u306etmux \u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u53cd\u6620\u3057\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b tmux source \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb \u3068\u3057\u3066\u53cd\u6620\u3067\u304d\u307e\u3059\uff0e\n\n\n\n$ tmux source ~/.byobu/.tmux.conf\n\n\n\n\n\nSEE ALSO\n\n\n\n\nattogram/bash-screensavers: Turn your idle shell into a visual playground with this collection of Bash screensav\u00aders", "date_published": "2026-01-27T05:48:08+09:00", "date_modified": "2026-01-27T05:48:10+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "ScreenSaver", "terminal", "bookworm", "Debian", "Linux", "Raspberry Pi OS", "sid" ] }, { "id": "https://matoken.org/blog/?p=5167", "url": "https://matoken.org/blog/2026/01/21/mlterm-mouseout/", "title": "x11\u4e0a\u306emlterm\u3067\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u6642\u306b\u6587\u5b57\u5165\u529b\u304c\u3067\u304d\u306a\u3044", "content_html": "
\n
\n

\n
\n

\u305f\u304f\u3055\u3093\u306e\u74b0\u5883\u3067\u52d5\u4f5c\u3059\u308b\u8efd\u91cf\u3067\u591a\u6a5f\u80fd\u306a\u30bf\u30fc\u30df\u30ca\u30eb\u30a8\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306emlterm(Multi Lingual TERMinal)\u3092\u8fd1\u5e74\u30e1\u30a4\u30f3\u306b\u5229\u7528\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n\n
\n
\n

\u6700\u8fd1\u306e\u554f\u984c\u3068\u3057\u3066mlterm \u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u304b\u3089\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u5916\u308c\u308b\u3068mlterm \u304c\u30a2\u30af\u30c6\u30a3\u30d6\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3082\u6587\u5b57\u304c\u5165\u529b\u3067\u304d\u307e\u305b\u3093\uff0e\u6587\u5b57\u304c\u5165\u529b\u3067\u304d\u306a\u3044→\u30ab\u30fc\u30bd\u30eb\u3092mlterm \u306b\u6301\u3063\u3066\u304f\u308b\u3068\u3044\u3046\u306e\u304c\u5730\u5473\u306b\u9762\u5012\u3067\u3059\uff0e
\n\u4eca\u56de\u3053\u308c\u3092\u8abf\u3079\u3066\u89e3\u6c7a\u3057\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

\u307e\u305a\u691c\u7d22\u3057\u3066\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n

\u89e3\u6c7a\u65b9\u6cd5\u306f\u3001

\n
\n
\n

~/.mlterm/main

\n
\n
\n

\u306b

\n
\n
\n

input_method=ibus

\n
\n
\n

\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3002

\n
\n
\n\n
\n
\n

\u76f4\u63a5\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u306e\u3068\u304d\u306e\u8a2d\u5b9a\u3067\u306f\u306a\u3044\u306e\u3067\u3059\u304c\uff0c\u3053\u308c\u3092\u771f\u4f3c\u3059\u308b\u3068\u78ba\u304b\u306b\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u3057\u3066\u3082\u6587\u5b57\u304c\u5165\u529b\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
~/.mlterm/main \u306b\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u8ffd\u52a0
\n
\n
input_method = fcitx
\n
\n
\n
\n

\u3057\u304b\u3057\uff0c\u4eca\u5ea6\u306f\u65e5\u672c\u8a9e\u304c\u5165\u529b\u3067\u304d\u307e\u305b\u3093\uff0e
\nmlterm \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u898b\u3066\u3082\u8a2d\u5b9a\u306f\u5927\u4e08\u592b\u305d\u3046\uff0e

\n
\n
\n
doc/ja/README.ja \u3088\u308a
\n
\n
      o input_method (*default*) (#)\n        \u4f7f\u7528\u3059\u308b\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\n        default \u306f\u3001x11 \u7248\u306e mlterm \u3067\u306f xim\u3001\u305d\u308c\u4ee5\u5916\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u63d0\u4f9b\u3059\u308b\u6a19\u6e96\n        \u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n        \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\n\n        [input method];[option1]:[option2]\n\n        [input method] \u306b\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9(xim/uim/m17nlib/scim/kbd/skk/wnn/\n        canna/iiimf)\u3092\u6307\u5b9a\u3057\u3001\u5fc5\u8981\u3067\u3042\u308c\u3070 \":\" \u3067\u533a\u5207\u3063\u3066\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5217\u6319\u3057\u307e\u3059\u3002\n\n        \u5404\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\n\n        xim \u306e\u5834\u5408: xim:[xim server]:[locale]\n        [xim server] \u3067 XIM \u30b5\u30fc\u30d0\u30fc\u540d(kinput2, Ami, xcin \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n        \u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u3001\u74b0\u5883\u5909\u6570 XMODIFIERS \u3067\u6307\u5b9a\u3057\u305f XIM \u30b5\u30fc\u30d0\u30fc\u304c\n        \u4f7f\u7528\u3055\u308c\u307e\u3059\u3002[locale] \u306b\u306f XIM \u30b5\u30fc\u30d0\u30fc\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u6307\u5b9a\u3057\n        \u306a\u304b\u3063\u305f\u5834\u5408\u306f\u30b7\u30b9\u30c6\u30e0\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002use_xim \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\n        xim \u3092\u7121\u52b9\u306b\u3057\u305f\u5834\u5408\u3001xim \u3092\u6307\u5b9a\u3057\u3066\u3082\u7121\u8996\u3055\u308c\u307e\u3059\u3002\n\n        uim \u306e\u5834\u5408:\n        uim:[conversion engine]\n        [conversion engine] \u306b\u5909\u63db\u30a8\u30f3\u30b8\u30f3(anthy, prime, hangul2\u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n        \u3059\u3002\u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f uim \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5909\u63db\u30a8\u30f3\u30b8\u30f3\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n\n        m17nlib \u306e\u5834\u5408:\n        m17nlib:[language id]:[input method]\n        [language id] \u306b\u306f ISO-639 \u306b\u5f93\u3063\u3066\u8a00\u8a9e(ar, zh, ja \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n        \u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u30b7\u30b9\u30c6\u30e0\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u304b\u3089\u53d6\u5f97\u3057\u305f\u8a00\u8a9e\u304c\u4f7f\u308f\u308c\u307e\u3059\n        [input_method] \u3067\u4f7f\u7528\u3059\u308b\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9(anthy, py \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\u3059\n        \u6307\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f [language id] \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u304c\u4f7f\n        \u7528\u3055\u308c\u307e\u3059\u3002m17nlib \u3092\u6307\u5b9a\u3057\u305f\u6642\u306f key \u30d5\u30a1\u30a4\u30eb\u3067 IM_HOTKEY \u3092\u6307\u5b9a\u3057\u3066\n        \u304f\u3060\u3055\u3044\u3002\n\n        scim \u306e\u5834\u5408:\n        scim (\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057)\n\n        ibus \u306e\u5834\u5408\uff1a\n        ibus:[conversion engine]\n        [conversion engine] \u306b\u5909\u63db\u30a8\u30f3\u30b8\u30f3(anthy, prime, hangul2\u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n        \u3059\u3002\u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f ibus \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5909\u63db\u30a8\u30f3\u30b8\u30f3\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n        (ibus\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u6ce8\u610f\u70b9)\n        ibus \u306e preferences \u753b\u9762\u304b\u3089\u30ad\u30fc\u30dc\u30fc\u30c9\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5834\u5408\u3001\u30e2\u30c7\n        \u30a3\u30d5\u30a1\u30a4\u30a2\u306e Release \u306b\u306f\u30c1\u30a7\u30c3\u30af\u3092\u4ed8\u3051\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\n\n        fcitx \u306e\u5834\u5408:\n        fcitx (\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057)\n\n        wnn \u306e\u5834\u5408:\n        wnn:[server]\n        [server] \u306b\u306f\u3001\u63a5\u7d9a\u3059\u308b\u304b\u306a\u6f22\u5b57\u5909\u63db\u30b5\u30fc\u30d0\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n        \u306a\u304a\u3001JSERVER \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\n        \u307e\u305f\u3001WNNENVRC \u74b0\u5883\u5909\u6570\u306b\u3088\u308a wnnenvrc \u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\n        canna \u306e\u5834\u5408:\n        canna (\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057)\n\n        skk \u306e\u5834\u5408:\n        skk:dict=[dictionary](:utf8),sskey=[sticky shift key]\n        [dictionary] \u306b\u3001\u63a5\u7d9a\u3059\u308b\u8f9e\u66f8\u30b5\u30fc\u30d0(skkserv)\u306e \"\u30db\u30b9\u30c8\u540d:\u30dd\u30fc\u30c8\u756a\u53f7\" \u53c8\n        \u306f\u3001\u8f9e\u66f8\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u8f9e\u66f8\u304c UTF-8 \u306e\u5834\u5408\u306b\u306f\u3001\u672b\u5c3e\u306b\n        :utf8 \u3092\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002\n        SKK_DICTIONARY \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\n        \u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u306f\u3001localhost \u306e\u8f9e\u66f8\u30b5\u30fc\u30d0\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\n        \u306a\u304a\u3001\u4e0a\u8a18\u3068\u306f\u5225\u306b\u3001~/.mlterm/skk-jisyo \u3092\u30ed\u30fc\u30ab\u30eb\u306e\u8f9e\u66f8\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\n\n        [sticky shift key] \u306b\u306f\u3001sticky shift key \u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\n        \u3060\u3055\u3044\u3002\u5370\u5237\u53ef\u80fd\u306a\u6587\u5b57\u306e\u30ad\u30fc\u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\u306f\u305d\u306e\u6587\u5b57(\\x3b\u306e\u3088\u3046\u306b16\u9032\u6570\n        \u3067\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef)\u3092\u3001\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f <X11/keysymdef.h> \u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30b7\n        \u30f3\u30dc\u30eb(XK_\u3092\u9664\u304f)\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        SKK_STICKY_SHIFT_KEY \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\n\n        kbd \u306e\u5834\u5408:\n        kbd(:hide):[lang]\n        US \u30ad\u30fc\u30dc\u30fc\u30c9\u3067\u5165\u529b\u3055\u308c\u305f\u6587\u5b57\u3092\u3001\u6307\u5b9a\u3057\u305f\u30ad\u30fc\u30dc\u30fc\u30c9\u30ec\u30a4\u30a2\u30a6\u30c8\u306e\u6587\u5b57\u306b\u5909\n        \u63db\u3057\u307e\u3059\u3002\n        :hide \u3092\u6307\u5b9a\u3057\u305f\u5834\u5408\u306f\u3001\u30b9\u30c6\u30fc\u30bf\u30b9\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u8868\u793a\u3057\u307e\u305b\u3093\u3002\n        [lang]\u306b\u306f\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n        arabic, hebrew, de, fr, es, pt, jp106, isciixxx\n        \u306a\u304a\u3001[lang]\u3092\u7701\u7565\u3057\u305f\u5834\u5408\u3001ISCII \u30e2\u30fc\u30c9\u306e\u6642\u306f ISCII \u914d\u5217\u3001\u305d\u308c\u4ee5\u5916\u3067\u306f\n        \u30ed\u30fc\u30b1\u30fc\u30eb\u306b\u3088\u308a\u5224\u5b9a\u3057\u307e\u3059\u3002\n        kbd \u3092\u6307\u5b9a\u3057\u305f\u6642\u306f key \u30d5\u30a1\u30a4\u30eb\u3067 IM_HOTKEY \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n        iiimf \u306e\u5834\u5408:\n        iiimf:[language id]:[language engine]\n        [language id] \u306b\u306f RFC1766 \u306b\u5f93\u3063\u3066\u8a00\u8a9e(ar, zh_CN, ja \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n        \u3059\u3002\u6307\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u30b7\u30b9\u30c6\u30e0\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u304b\u3089\u53d6\u5f97\u3057\u305f\u8a00\u8a9e\u304c\u4f7f\u308f\u308c\n        \u307e\u3059\u3002[language engine] \u3067\u306f\u4f7f\u7528\u3059\u308b LE (CannaLE, newpy \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n        \u3059\u3002\u6307\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f [language id] \u306e\u30c7\u30d5\u30a9\u30eb\u30c8 LE \u304c\u4f7f\u7528\u3055\u308c\u307e\n        \u3059\u3002\n        \u306a\u304a\u3001HTT_SERVER_ADDRESS \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u3001\u63a5\u7d9a\u3059\u308b\u30b5\u30fc\u30d0\u306e\u30a2\u30c9\u30ec\u30b9(Unix\n        Domain Socket \u306e\u5834\u5408\u306f\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9)\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\n        \u307e\u305f\u3001HTT_SHOW_STATUS_WINDOW=true\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a\u7528\u306e\n        \u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n        HTT_AUX_BASE_DIR \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u3001aux \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u3042\u308b\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3053\n        \u3068\u304c\u3067\u304d\u307e\u3059(\u30c7\u30d5\u30a9\u30eb\u30c8\u306f/usr/lib/iiim/le)\u3002
\n
\n
\n
\n

mlterm \u306e\u30ed\u30b0\u3092\u898b\u308b\u3068fcitx \u304c\u8aad\u307f\u8fbc\u3081\u3066\u3044\u307e\u305b\u3093\uff0e

\n
\n
\n
~/.mlterm/msg.log
\n
\n
    Jan 21 19:22:50[3188254] ERROR(Resource temporarily unavailable): fcitx: Could not load.
\n
\n
\n
\n

\u3053\u306e\u7aef\u672b\u306b\u306fmlterm \u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u30d7\u30e9\u30b0\u30a4\u30f3\u306e mlterm-im-fcitx \u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u5c0e\u5165\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3067\u3057\u305f\uff0eibus \u306f\u5165\u3063\u3066\u3044\u305f\u306e\u3067fcitx \u5207\u66ff\u6642\u306b\u5165\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u306e\u3067\u3059\u306d\uff0e\u305d\u3057\u3066mlterm plugin \u3092\u4f7f\u308f\u305a\u65e5\u672c\u8a9e\u5165\u529b\u3092\u3057\u3066\u3044\u305f\u3068\uff0e
\nmlterm-im-fcitx \u3092\u5c0e\u5165\u3057\u3066mlterm \u3092\u8d77\u52d5\u3057\u76f4\u3059\u3053\u3068\u3067\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u6642\u3082\u6587\u5b57\u5165\u529b\u3067\u304d\u308b\u3057\u65e5\u672c\u8a9e\u5165\u529b\u3082\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ apt-cache search mlterm input method\nmlterm-im-fcitx - MultiLingual TERMinal, Flexible Input Method plugin\nmlterm-im-ibus - MultiLingual TERMinal, IBus input method plugin\nmlterm-im-m17nlib - MultiLingual TERMinal, m17nlib input method plugin\nmlterm-im-scim - MultiLingual TERMinal, scim input method plugin\nmlterm-im-skk - MultiLingual TERMinal, SKK input method plugin\nmlterm-im-uim - MultiLingual TERMinal, uim input method plugin\n$ sudo apt install mlterm-im-fcitx
\n
\n
\n
\n

\"mlterm

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W mlterm*\nmlterm  3.9.4-3\nmlterm-common:amd64     3.9.4-3\nmlterm-im-fcitx:amd64   3.9.4-3\nmlterm-im-ibus  3.9.4-3\nmlterm-im-m17nlib\nmlterm-im-scim\nmlterm-im-uim\nmlterm-tiny\nmlterm-tools    3.9.4-3\n$ echo \"${XDG_SESSION_TYPE}\"\nx11\n$ lsb_release -dr\nDescription:    Debian GNU/Linux forky/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n\n\n
\n
\n", "content_text": "\u305f\u304f\u3055\u3093\u306e\u74b0\u5883\u3067\u52d5\u4f5c\u3059\u308b\u8efd\u91cf\u3067\u591a\u6a5f\u80fd\u306a\u30bf\u30fc\u30df\u30ca\u30eb\u30a8\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306emlterm(Multi Lingual TERMinal)\u3092\u8fd1\u5e74\u30e1\u30a4\u30f3\u306b\u5229\u7528\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\nmlterm\n\n\n\n\n\u6700\u8fd1\u306e\u554f\u984c\u3068\u3057\u3066mlterm \u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u304b\u3089\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u5916\u308c\u308b\u3068mlterm \u304c\u30a2\u30af\u30c6\u30a3\u30d6\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3082\u6587\u5b57\u304c\u5165\u529b\u3067\u304d\u307e\u305b\u3093\uff0e\u6587\u5b57\u304c\u5165\u529b\u3067\u304d\u306a\u3044→\u30ab\u30fc\u30bd\u30eb\u3092mlterm \u306b\u6301\u3063\u3066\u304f\u308b\u3068\u3044\u3046\u306e\u304c\u5730\u5473\u306b\u9762\u5012\u3067\u3059\uff0e\n\u4eca\u56de\u3053\u308c\u3092\u8abf\u3079\u3066\u89e3\u6c7a\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\u307e\u305a\u691c\u7d22\u3057\u3066\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e\n\n\n\n\n\u89e3\u6c7a\u65b9\u6cd5\u306f\u3001\n\n\n~/.mlterm/main\n\n\n\u306b\n\n\ninput_method=ibus\n\n\n\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3002\n\n\n\n— mlterm \u3067\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u5916\u308c\u308b\u3068\u6587\u5b57\u5165\u529b\u304c\u3067\u304d\u306a\u304f\u306a\u308b\u75c7\u72b6: hama \u306e record of life\n‘\n\n\n\n\u76f4\u63a5\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u306e\u3068\u304d\u306e\u8a2d\u5b9a\u3067\u306f\u306a\u3044\u306e\u3067\u3059\u304c\uff0c\u3053\u308c\u3092\u771f\u4f3c\u3059\u308b\u3068\u78ba\u304b\u306b\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u3057\u3066\u3082\u6587\u5b57\u304c\u5165\u529b\u3067\u304d\u307e\u3059\uff0e\n\n\n~/.mlterm/main \u306b\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u8ffd\u52a0\n\ninput_method = fcitx\n\n\n\n\u3057\u304b\u3057\uff0c\u4eca\u5ea6\u306f\u65e5\u672c\u8a9e\u304c\u5165\u529b\u3067\u304d\u307e\u305b\u3093\uff0e\nmlterm \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u898b\u3066\u3082\u8a2d\u5b9a\u306f\u5927\u4e08\u592b\u305d\u3046\uff0e\n\n\ndoc/ja/README.ja \u3088\u308a\n\n o input_method (*default*) (#)\n \u4f7f\u7528\u3059\u308b\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\n default \u306f\u3001x11 \u7248\u306e mlterm \u3067\u306f xim\u3001\u305d\u308c\u4ee5\u5916\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u63d0\u4f9b\u3059\u308b\u6a19\u6e96\n \u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\n\n [input method];[option1]:[option2]\n\n [input method] \u306b\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9(xim/uim/m17nlib/scim/kbd/skk/wnn/\n canna/iiimf)\u3092\u6307\u5b9a\u3057\u3001\u5fc5\u8981\u3067\u3042\u308c\u3070 \":\" \u3067\u533a\u5207\u3063\u3066\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5217\u6319\u3057\u307e\u3059\u3002\n\n \u5404\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\n\n xim \u306e\u5834\u5408: xim:[xim server]:[locale]\n [xim server] \u3067 XIM \u30b5\u30fc\u30d0\u30fc\u540d(kinput2, Ami, xcin \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n \u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u3001\u74b0\u5883\u5909\u6570 XMODIFIERS \u3067\u6307\u5b9a\u3057\u305f XIM \u30b5\u30fc\u30d0\u30fc\u304c\n \u4f7f\u7528\u3055\u308c\u307e\u3059\u3002[locale] \u306b\u306f XIM \u30b5\u30fc\u30d0\u30fc\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u6307\u5b9a\u3057\n \u306a\u304b\u3063\u305f\u5834\u5408\u306f\u30b7\u30b9\u30c6\u30e0\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002use_xim \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\n xim \u3092\u7121\u52b9\u306b\u3057\u305f\u5834\u5408\u3001xim \u3092\u6307\u5b9a\u3057\u3066\u3082\u7121\u8996\u3055\u308c\u307e\u3059\u3002\n\n uim \u306e\u5834\u5408:\n uim:[conversion engine]\n [conversion engine] \u306b\u5909\u63db\u30a8\u30f3\u30b8\u30f3(anthy, prime, hangul2\u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n \u3059\u3002\u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f uim \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5909\u63db\u30a8\u30f3\u30b8\u30f3\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n\n m17nlib \u306e\u5834\u5408:\n m17nlib:[language id]:[input method]\n [language id] \u306b\u306f ISO-639 \u306b\u5f93\u3063\u3066\u8a00\u8a9e(ar, zh, ja \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n \u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u30b7\u30b9\u30c6\u30e0\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u304b\u3089\u53d6\u5f97\u3057\u305f\u8a00\u8a9e\u304c\u4f7f\u308f\u308c\u307e\u3059\n [input_method] \u3067\u4f7f\u7528\u3059\u308b\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9(anthy, py \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\u3059\n \u6307\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f [language id] \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u304c\u4f7f\n \u7528\u3055\u308c\u307e\u3059\u3002m17nlib \u3092\u6307\u5b9a\u3057\u305f\u6642\u306f key \u30d5\u30a1\u30a4\u30eb\u3067 IM_HOTKEY \u3092\u6307\u5b9a\u3057\u3066\n \u304f\u3060\u3055\u3044\u3002\n\n scim \u306e\u5834\u5408:\n scim (\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057)\n\n ibus \u306e\u5834\u5408\uff1a\n ibus:[conversion engine]\n [conversion engine] \u306b\u5909\u63db\u30a8\u30f3\u30b8\u30f3(anthy, prime, hangul2\u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n \u3059\u3002\u6307\u5b9a\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f ibus \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5909\u63db\u30a8\u30f3\u30b8\u30f3\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n (ibus\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u6ce8\u610f\u70b9)\n ibus \u306e preferences \u753b\u9762\u304b\u3089\u30ad\u30fc\u30dc\u30fc\u30c9\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5834\u5408\u3001\u30e2\u30c7\n \u30a3\u30d5\u30a1\u30a4\u30a2\u306e Release \u306b\u306f\u30c1\u30a7\u30c3\u30af\u3092\u4ed8\u3051\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\n\n fcitx \u306e\u5834\u5408:\n fcitx (\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057)\n\n wnn \u306e\u5834\u5408:\n wnn:[server]\n [server] \u306b\u306f\u3001\u63a5\u7d9a\u3059\u308b\u304b\u306a\u6f22\u5b57\u5909\u63db\u30b5\u30fc\u30d0\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n \u306a\u304a\u3001JSERVER \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\n \u307e\u305f\u3001WNNENVRC \u74b0\u5883\u5909\u6570\u306b\u3088\u308a wnnenvrc \u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\n canna \u306e\u5834\u5408:\n canna (\u30aa\u30d7\u30b7\u30e7\u30f3\u7121\u3057)\n\n skk \u306e\u5834\u5408:\n skk:dict=[dictionary](:utf8),sskey=[sticky shift key]\n [dictionary] \u306b\u3001\u63a5\u7d9a\u3059\u308b\u8f9e\u66f8\u30b5\u30fc\u30d0(skkserv)\u306e \"\u30db\u30b9\u30c8\u540d:\u30dd\u30fc\u30c8\u756a\u53f7\" \u53c8\n \u306f\u3001\u8f9e\u66f8\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u8f9e\u66f8\u304c UTF-8 \u306e\u5834\u5408\u306b\u306f\u3001\u672b\u5c3e\u306b\n :utf8 \u3092\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002\n SKK_DICTIONARY \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\n \u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u306f\u3001localhost \u306e\u8f9e\u66f8\u30b5\u30fc\u30d0\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\n \u306a\u304a\u3001\u4e0a\u8a18\u3068\u306f\u5225\u306b\u3001~/.mlterm/skk-jisyo \u3092\u30ed\u30fc\u30ab\u30eb\u306e\u8f9e\u66f8\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\n\n [sticky shift key] \u306b\u306f\u3001sticky shift key \u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\n \u3060\u3055\u3044\u3002\u5370\u5237\u53ef\u80fd\u306a\u6587\u5b57\u306e\u30ad\u30fc\u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\u306f\u305d\u306e\u6587\u5b57(\\x3b\u306e\u3088\u3046\u306b16\u9032\u6570\n \u3067\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef)\u3092\u3001\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f <X11/keysymdef.h> \u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30b7\n \u30f3\u30dc\u30eb(XK_\u3092\u9664\u304f)\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n SKK_STICKY_SHIFT_KEY \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\n\n kbd \u306e\u5834\u5408:\n kbd(:hide):[lang]\n US \u30ad\u30fc\u30dc\u30fc\u30c9\u3067\u5165\u529b\u3055\u308c\u305f\u6587\u5b57\u3092\u3001\u6307\u5b9a\u3057\u305f\u30ad\u30fc\u30dc\u30fc\u30c9\u30ec\u30a4\u30a2\u30a6\u30c8\u306e\u6587\u5b57\u306b\u5909\n \u63db\u3057\u307e\u3059\u3002\n :hide \u3092\u6307\u5b9a\u3057\u305f\u5834\u5408\u306f\u3001\u30b9\u30c6\u30fc\u30bf\u30b9\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u8868\u793a\u3057\u307e\u305b\u3093\u3002\n [lang]\u306b\u306f\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n arabic, hebrew, de, fr, es, pt, jp106, isciixxx\n \u306a\u304a\u3001[lang]\u3092\u7701\u7565\u3057\u305f\u5834\u5408\u3001ISCII \u30e2\u30fc\u30c9\u306e\u6642\u306f ISCII \u914d\u5217\u3001\u305d\u308c\u4ee5\u5916\u3067\u306f\n \u30ed\u30fc\u30b1\u30fc\u30eb\u306b\u3088\u308a\u5224\u5b9a\u3057\u307e\u3059\u3002\n kbd \u3092\u6307\u5b9a\u3057\u305f\u6642\u306f key \u30d5\u30a1\u30a4\u30eb\u3067 IM_HOTKEY \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n iiimf \u306e\u5834\u5408:\n iiimf:[language id]:[language engine]\n [language id] \u306b\u306f RFC1766 \u306b\u5f93\u3063\u3066\u8a00\u8a9e(ar, zh_CN, ja \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n \u3059\u3002\u6307\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u30b7\u30b9\u30c6\u30e0\u306e\u30ed\u30fc\u30b1\u30fc\u30eb\u304b\u3089\u53d6\u5f97\u3057\u305f\u8a00\u8a9e\u304c\u4f7f\u308f\u308c\n \u307e\u3059\u3002[language engine] \u3067\u306f\u4f7f\u7528\u3059\u308b LE (CannaLE, newpy \u306a\u3069)\u3092\u6307\u5b9a\u3057\u307e\n \u3059\u3002\u6307\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f [language id] \u306e\u30c7\u30d5\u30a9\u30eb\u30c8 LE \u304c\u4f7f\u7528\u3055\u308c\u307e\n \u3059\u3002\n \u306a\u304a\u3001HTT_SERVER_ADDRESS \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u3001\u63a5\u7d9a\u3059\u308b\u30b5\u30fc\u30d0\u306e\u30a2\u30c9\u30ec\u30b9(Unix\n Domain Socket \u306e\u5834\u5408\u306f\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9)\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\n \u307e\u305f\u3001HTT_SHOW_STATUS_WINDOW=true\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a\u7528\u306e\n \u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n HTT_AUX_BASE_DIR \u74b0\u5883\u5909\u6570\u306b\u3088\u308a\u3001aux \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u3042\u308b\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3053\n \u3068\u304c\u3067\u304d\u307e\u3059(\u30c7\u30d5\u30a9\u30eb\u30c8\u306f/usr/lib/iiim/le)\u3002\n\n\n\nmlterm \u306e\u30ed\u30b0\u3092\u898b\u308b\u3068fcitx \u304c\u8aad\u307f\u8fbc\u3081\u3066\u3044\u307e\u305b\u3093\uff0e\n\n\n~/.mlterm/msg.log\n\n Jan 21 19:22:50[3188254] ERROR(Resource temporarily unavailable): fcitx: Could not load.\n\n\n\n\u3053\u306e\u7aef\u672b\u306b\u306fmlterm \u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u30d7\u30e9\u30b0\u30a4\u30f3\u306e mlterm-im-fcitx \u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u5c0e\u5165\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3067\u3057\u305f\uff0eibus \u306f\u5165\u3063\u3066\u3044\u305f\u306e\u3067fcitx \u5207\u66ff\u6642\u306b\u5165\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u306e\u3067\u3059\u306d\uff0e\u305d\u3057\u3066mlterm plugin \u3092\u4f7f\u308f\u305a\u65e5\u672c\u8a9e\u5165\u529b\u3092\u3057\u3066\u3044\u305f\u3068\uff0e\nmlterm-im-fcitx \u3092\u5c0e\u5165\u3057\u3066mlterm \u3092\u8d77\u52d5\u3057\u76f4\u3059\u3053\u3068\u3067\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u6642\u3082\u6587\u5b57\u5165\u529b\u3067\u304d\u308b\u3057\u65e5\u672c\u8a9e\u5165\u529b\u3082\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n$ apt-cache search mlterm input method\nmlterm-im-fcitx - MultiLingual TERMinal, Flexible Input Method plugin\nmlterm-im-ibus - MultiLingual TERMinal, IBus input method plugin\nmlterm-im-m17nlib - MultiLingual TERMinal, m17nlib input method plugin\nmlterm-im-scim - MultiLingual TERMinal, scim input method plugin\nmlterm-im-skk - MultiLingual TERMinal, SKK input method plugin\nmlterm-im-uim - MultiLingual TERMinal, uim input method plugin\n$ sudo apt install mlterm-im-fcitx\n\n\n\n\n\n\n\u74b0\u5883\n\n$ dpkg-query -W mlterm*\nmlterm 3.9.4-3\nmlterm-common:amd64 3.9.4-3\nmlterm-im-fcitx:amd64 3.9.4-3\nmlterm-im-ibus 3.9.4-3\nmlterm-im-m17nlib\nmlterm-im-scim\nmlterm-im-uim\nmlterm-tiny\nmlterm-tools 3.9.4-3\n$ echo \"${XDG_SESSION_TYPE}\"\nx11\n$ lsb_release -dr\nDescription: Debian GNU/Linux forky/sid\nRelease: n/a\n$ arch\nx86_64\n\n\n\nSEE ALSO\n\n\nmlterm \u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u3064\u3044\u3066 #\u7aef\u672b\u30a8\u30df\u30e5\u30ec\u30fc\u30bf – Qiita\n\n\n\n\ntoot\n\n\nmatoken:susie: (@matoken@snac.matoken.org)", "date_published": "2026-01-21T20:31:37+09:00", "date_modified": "2026-01-21T22:46:51+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "mlterm", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5121", "url": "https://matoken.org/blog/2025/12/31/cloudflare-speed-test-with-tui/", "title": "Cloudflare\u306e\u901f\u5ea6\u30c6\u30b9\u30c8\u3092TUI\u3067", "content_html": "
\n
\n

\n
\n

Cloudflare \u306e\u901f\u5ea6\u8a08\u6e2c\u30b5\u30a4\u30c8\u306espeed.cloudflare.com \u3092TUI \u3067\u8a08\u6e2c\u3067\u304d\u308bcloudflare-speed-cli \u3068\u3044\u3046\u3082\u306e\u3092\u77e5\u3063\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\ncloudflare-speed-cli \u306fRust \u88fd\u3067GPL-3.0 license \u3067\u3059\uff0e

\n
\n\n
\n

\u985e\u4f3c\u306e\u3082\u306e\u3067\uff0cspeedtest.net \u3092\u8a08\u6e2c\u3067\u304d\u308bspeedtest-cli \u3092\u3088\u304f\u4f7f\u3063\u3066\u3044\u307e\u3059\u304c\uff0cCloudflare \u3082\u4f7f\u3048\u308b\u3068\u4fbf\u5229\u305d\u3046\u3067\u3059\uff0e

\n
\n

\n
\n

cloudflare-speed-cli \u306fGitHub Releases \u306b\u306fLinux x86_64, aarch64, macOS aarch64, x86_64, Windows x86_64 \u306e\u30d0\u30a4\u30ca\u30ea\u304c\u3042\u308a\u307e\u3059\uff0e\u3057\u304b\u3057\u4f8b\u306b\u3088\u3063\u3066Raspberry Pi bookworm armhf(Arm 32bit)\u3067\u3082\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n

Rust \u95a2\u9023\u306fasciimena 3.0 \u3092build \u3057\u305f\u3068\u304d\u306b\u5165\u308c\u305f\u3082\u306e\u304b\u3089rustup \u30671.92.0 \u306b\u3057\u305f\u3082\u306e\u3092\u4f7f\u3044\u307e\u3059\uff0e

\n
\n\n
\n

cargo install \u3067\u6642\u9593\u304c\u639b\u304b\u308a\u307e\u3059\u304c\u7279\u306b\u3064\u307e\u3065\u3044\u305f\u308a\u305b\u305abuild \u3067\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ cargo --version\nwarning: `/home/matoken/.cargo/config` is deprecated in favor of `config.toml`\n  |\n  = help: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`\ncargo 1.92.0 (344c4567c 2025-10-21)\n$ cargo install --git https://github.com/kavehtehrani/cloudflare-speed-cli --features tui\n$ cloudflare-speed-cli --help\nCloudflare-based speed test with optional TUI\n\nUsage: cloudflare-speed-cli [OPTIONS]\n\nOptions:\n      --base-url <BASE_URL>\n          Base URL for the Cloudflare speed test service [default: https://speed.cloudflare.com]\n      --json\n          Print JSON result and exit (no TUI)\n      --text\n          Print text summary and exit (no TUI)\n      --download-duration <DOWNLOAD_DURATION>\n          Download phase duration [default: 10s]\n      --upload-duration <UPLOAD_DURATION>\n          Upload phase duration [default: 10s]\n      --idle-latency-duration <IDLE_LATENCY_DURATION>\n          Idle latency probe duration (pre-test) [default: 2s]\n      --concurrency <CONCURRENCY>\n          Concurrency for download/upload workers [default: 6]\n      --download-bytes-per-req <DOWNLOAD_BYTES_PER_REQ>\n          Bytes per download request [default: 10000000]\n      --upload-bytes-per-req <UPLOAD_BYTES_PER_REQ>\n          Bytes per upload request [default: 5000000]\n      --probe-interval-ms <PROBE_INTERVAL_MS>\n          Probe interval in milliseconds [default: 250]\n      --probe-timeout-ms <PROBE_TIMEOUT_MS>\n          Probe timeout in milliseconds [default: 800]\n      --experimental\n          Enable experimental features (TURN fetch + UDP-like loss probe)\n      --export-json <EXPORT_JSON>\n          Export results as JSON\n      --export-csv <EXPORT_CSV>\n          Export results as CSV\n      --auto-save <AUTO_SAVE>\n          Use --auto-save true or --auto-save false to override (default: true) [default: true] [possible values: true, false]\n      --interface <INTERFACE>\n          Bind to a specific network interface (e.g., ens18, eth0)\n      --source <SOURCE>\n          Bind to a specific source IP address (e.g., 192.168.10.0)\n      --certificate <CERTIFICATE>\n          Path to a custom TLS certificate file (PEM or DER format)\n  -h, --help\n          Print help\n  -V, --version\n          Print version\n$ cloudflare-speed-cli --version\ncloudflare-speed-cli 0.3.1
\n
\n
\n
\n

\u65e9\u901f\u8a66\u3057\u3066\u307f\u307e\u3059\uff0ecloudflare-speed-cli \u3092\u30aa\u30d7\u30b7\u30e7\u30f3\u306a\u3057\u3067\u5b9f\u884c\u3059\u308b\u3068TUI \u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\uff0e\u8d77\u52d5\u3057\u3066\u3059\u3050\u306b\u8a08\u6e2c\u304c\u59cb\u307e\u308a\uff0c\u65e2\u5b9a\u5024\u3067\u306f\u8a08\u6e2c\u7d50\u679c\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff0etab key \u3067History \u30da\u30fc\u30b8\u306b\u9077\u79fb\u3059\u308b\u3068\u904e\u53bb\u306e\u8a08\u6e2c\u7d50\u679c\u3092\u95b2\u89a7\u3057\u305f\u308a\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u305f\u308a\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n

\"cloudflare

\n
\n

\n
\n

--text \u30aa\u30d7\u30b7\u30e7\u30f3\u3067cli \u30e2\u30fc\u30c9\u3067\u3059\u304c\uff0c\u30d7\u30ed\u30b0\u30ec\u30b9\u304c\u5927\u91cf\u306b\u51fa\u3066\u3061\u3087\u3063\u3068\u4f7f\u3044\u3065\u3089\u3044\u611f\u3058\u3067\u3059\uff0e

\n
\n

\n
\n

\u30d7\u30ed\u30b9\u30ec\u30b9\u90e8\u5206\u306fSTDERR \u306a\u306e\u3067\u305d\u308c\u3092\u6368\u3066\u3066\u3057\u307e\u3063\u3066\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093

\n
\n
\n
\n
$ cloudflare-speed-cli --text 2>/dev/null\nIP/Colo/ASN: 133.106.160.49 / NRT / 138384 (-)\nDownload: 23.73 Mbps\nUpload:   2.47 Mbps\nIdle latency p50/p90/p99: 98.9/110.7/110.7 ms (loss 0.0%, jitter 10.2 ms)\nLoaded latency (download) p50/p90/p99: 438.0/578.6/755.2 ms (loss 0.0%, jitter 130.1 ms)\nLoaded latency (upload) p50/p90/p99: 654.8/794.1/794.1 ms (loss 45.5%, jitter 144.4 ms)
\n
\n
\n
\n

\u3053\u3093\u306a\u611f\u3058\u3067\u5b9a\u671f\u7684\u306b\u8a08\u6e2c\u3059\u308b\u306e\u306b\u3082\u4fbf\u5229\u304b\u3082\u3068\u601d\u3044\u307e\u3057\u305f\u304c\uff0ccli \u30e2\u30fc\u30c9\u3067\u306f\u65e2\u5b9a\u5024\u3067\u306f\u7d50\u679c\u3092\u4fdd\u5b58\u3057\u306a\u3044\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ watch -n 3600 -- cloudflare-speed-cli --text
\n
\n
\n
\n

--auto-save true \u3082\u8ffd\u52a0\u3059\u308b\u3068\u7d50\u679c\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff0e

\n
\n
\n
\n
$ watch -n 3600 -- cloudflare-speed-cli --text --auto-save true
\n
\n
\n
\n

\u305f\u3060\uff0c\u4ee5\u4e0b\u306e\u3088\u3046\u306bTUI \u30e2\u30fc\u30c9\u306e\u8a08\u6e2c\u6642\u306e\u30ed\u30b0\u306b\u306f --interface \u3092\u6307\u5b9a\u3057\u3066\u3082Interface \u3084AP \u540d\u306f\u4fdd\u5b58\u3055\u308c\u306a\u3044\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
\u2502 3.   2025-12-31 06:30:11 +09:00  DL   20.69 Mbps  UL    4.66 Mbps  Idle p50  103.7 ms  -  (1)\n\u2502 4.   2025-12-31 06:08:33 +09:00  DL   21.73 Mbps  UL    3.16 Mbps  Idle p50  100.7 ms  wlan0  TP-L13💻 (2)
\n
\n
\n
\n
    \n
  1. \n

    --text \u3067cli \u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u3057\u305f\u3068\u304d\u306e\u7d50\u679c

    \n
  2. \n
  3. \n

    TUI \u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u3057\u305f\u3068\u304d\u306e\u7d50\u679c

    \n
  4. \n
\n
\n
\n
\n
\n

SEE ALSO

\n
\n
\n\n
\n
$ speedtest-cli\nRetrieving speedtest.net configuration...\nTesting from Rakuten Mobile Network (133.106.160.42)...\nRetrieving speedtest.net server list...\nSelecting best server based on ping...\nHosted by GSL Networks (Tokyo) [0.26 km]: 60.882 ms\nTesting download speed................................................................................\nDownload: 12.70 Mbit/s\nTesting upload speed......................................................................................................\nUpload: 2.69 Mbit/s
\n
\n
\n
\n
Speedtest CLI: Internet speed test for the command line \u203bOokla\u516c\u5f0f\u3060\u304c\u30d7\u30ed\u30d7\u30e9\u30a4\u30a8\u30bf\u30ea
\n
\n
$ speedtest\n\n   Speedtest by Ookla\n\n      Server: IPA CyberLab 400G - Tokyo (id: 48463)\n         ISP: Rakuten Mobile Network\nIdle Latency:    50.15 ms   (jitter: 1.41ms, low: 48.98ms, high: 52.36ms)\n    Download:    20.75 Mbps (data used: 19.9 MB)\n                262.40 ms   (jitter: 71.32ms, low: 72.73ms, high: 398.26ms)\n      Upload:     2.96 Mbps (data used: 1.6 MB)\n                779.27 ms   (jitter: 95.79ms, low: 75.05ms, high: 1148.99ms)\n Packet Loss:     0.0%\n  Result URL: https://www.speedtest.net/result/c/e1a349cf-53eb-4d63-b8f4-8550dabd772d
\n
\n
\n
\n
n8henrie/fastcli: Python3 speed test via Fast.com fast.com \u3092\u4f7f\u3044cli \u3067\u8a08\u6e2c\u2026\u20262025-12-27\u306barchived \u3055\u308c\u3066\u3044\u305f
\n
\n
$ python -m fastcli -v\nApproximate download speed: 17.48 Mbps
\n
\n
\n
\n
\n", "content_text": "Cloudflare \u306e\u901f\u5ea6\u8a08\u6e2c\u30b5\u30a4\u30c8\u306espeed.cloudflare.com \u3092TUI \u3067\u8a08\u6e2c\u3067\u304d\u308bcloudflare-speed-cli \u3068\u3044\u3046\u3082\u306e\u3092\u77e5\u3063\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\ncloudflare-speed-cli \u306fRust \u88fd\u3067GPL-3.0 license \u3067\u3059\uff0e\n\n\n\n\nkavehtehrani/cloudflare-speed-cli: CLI for internet speed test via cloudflare\n\n\n\nTUI app for internet speed test via Cloudflare’s endpoint : r/commandline\n\n\n\n\n\n\n\n\u985e\u4f3c\u306e\u3082\u306e\u3067\uff0cspeedtest.net \u3092\u8a08\u6e2c\u3067\u304d\u308bspeedtest-cli \u3092\u3088\u304f\u4f7f\u3063\u3066\u3044\u307e\u3059\u304c\uff0cCloudflare \u3082\u4f7f\u3048\u308b\u3068\u4fbf\u5229\u305d\u3046\u3067\u3059\uff0e\n\n\n\ncloudflare-speed-cli \u306fGitHub Releases \u306b\u306fLinux x86_64, aarch64, macOS aarch64, x86_64, Windows x86_64 \u306e\u30d0\u30a4\u30ca\u30ea\u304c\u3042\u308a\u307e\u3059\uff0e\u3057\u304b\u3057\u4f8b\u306b\u3088\u3063\u3066Raspberry Pi bookworm armhf(Arm 32bit)\u3067\u3082\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\nRust \u95a2\u9023\u306fasciimena 3.0 \u3092build \u3057\u305f\u3068\u304d\u306b\u5165\u308c\u305f\u3082\u306e\u304b\u3089rustup \u30671.92.0 \u306b\u3057\u305f\u3082\u306e\u3092\u4f7f\u3044\u307e\u3059\uff0e\n\n\n\n\nasciinema 3.0\u3068Raspberry Pi armhf\u74b0\u5883\u3067\u306e\u30d3\u30eb\u30c9 \u2013 matoken’s blog\n\n\n\n\ncargo install \u3067\u6642\u9593\u304c\u639b\u304b\u308a\u307e\u3059\u304c\u7279\u306b\u3064\u307e\u3065\u3044\u305f\u308a\u305b\u305abuild \u3067\u304d\u307e\u3057\u305f\uff0e\n\n\n\n$ cargo --version\nwarning: `/home/matoken/.cargo/config` is deprecated in favor of `config.toml`\n |\n = help: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`\ncargo 1.92.0 (344c4567c 2025-10-21)\n$ cargo install --git https://github.com/kavehtehrani/cloudflare-speed-cli --features tui\n$ cloudflare-speed-cli --help\nCloudflare-based speed test with optional TUI\n\nUsage: cloudflare-speed-cli [OPTIONS]\n\nOptions:\n --base-url <BASE_URL>\n Base URL for the Cloudflare speed test service [default: https://speed.cloudflare.com]\n --json\n Print JSON result and exit (no TUI)\n --text\n Print text summary and exit (no TUI)\n --download-duration <DOWNLOAD_DURATION>\n Download phase duration [default: 10s]\n --upload-duration <UPLOAD_DURATION>\n Upload phase duration [default: 10s]\n --idle-latency-duration <IDLE_LATENCY_DURATION>\n Idle latency probe duration (pre-test) [default: 2s]\n --concurrency <CONCURRENCY>\n Concurrency for download/upload workers [default: 6]\n --download-bytes-per-req <DOWNLOAD_BYTES_PER_REQ>\n Bytes per download request [default: 10000000]\n --upload-bytes-per-req <UPLOAD_BYTES_PER_REQ>\n Bytes per upload request [default: 5000000]\n --probe-interval-ms <PROBE_INTERVAL_MS>\n Probe interval in milliseconds [default: 250]\n --probe-timeout-ms <PROBE_TIMEOUT_MS>\n Probe timeout in milliseconds [default: 800]\n --experimental\n Enable experimental features (TURN fetch + UDP-like loss probe)\n --export-json <EXPORT_JSON>\n Export results as JSON\n --export-csv <EXPORT_CSV>\n Export results as CSV\n --auto-save <AUTO_SAVE>\n Use --auto-save true or --auto-save false to override (default: true) [default: true] [possible values: true, false]\n --interface <INTERFACE>\n Bind to a specific network interface (e.g., ens18, eth0)\n --source <SOURCE>\n Bind to a specific source IP address (e.g., 192.168.10.0)\n --certificate <CERTIFICATE>\n Path to a custom TLS certificate file (PEM or DER format)\n -h, --help\n Print help\n -V, --version\n Print version\n$ cloudflare-speed-cli --version\ncloudflare-speed-cli 0.3.1\n\n\n\n\u65e9\u901f\u8a66\u3057\u3066\u307f\u307e\u3059\uff0ecloudflare-speed-cli \u3092\u30aa\u30d7\u30b7\u30e7\u30f3\u306a\u3057\u3067\u5b9f\u884c\u3059\u308b\u3068TUI \u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\uff0e\u8d77\u52d5\u3057\u3066\u3059\u3050\u306b\u8a08\u6e2c\u304c\u59cb\u307e\u308a\uff0c\u65e2\u5b9a\u5024\u3067\u306f\u8a08\u6e2c\u7d50\u679c\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff0etab key \u3067History \u30da\u30fc\u30b8\u306b\u9077\u79fb\u3059\u308b\u3068\u904e\u53bb\u306e\u8a08\u6e2c\u7d50\u679c\u3092\u95b2\u89a7\u3057\u305f\u308a\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u305f\u308a\u3067\u304d\u307e\u3059\uff0e\n\n\n\n\n\n\n--text \u30aa\u30d7\u30b7\u30e7\u30f3\u3067cli \u30e2\u30fc\u30c9\u3067\u3059\u304c\uff0c\u30d7\u30ed\u30b0\u30ec\u30b9\u304c\u5927\u91cf\u306b\u51fa\u3066\u3061\u3087\u3063\u3068\u4f7f\u3044\u3065\u3089\u3044\u611f\u3058\u3067\u3059\uff0e\n\n\n\n\u30d7\u30ed\u30b9\u30ec\u30b9\u90e8\u5206\u306fSTDERR \u306a\u306e\u3067\u305d\u308c\u3092\u6368\u3066\u3066\u3057\u307e\u3063\u3066\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\n\n\n\n$ cloudflare-speed-cli --text 2>/dev/null\nIP/Colo/ASN: 133.106.160.49 / NRT / 138384 (-)\nDownload: 23.73 Mbps\nUpload: 2.47 Mbps\nIdle latency p50/p90/p99: 98.9/110.7/110.7 ms (loss 0.0%, jitter 10.2 ms)\nLoaded latency (download) p50/p90/p99: 438.0/578.6/755.2 ms (loss 0.0%, jitter 130.1 ms)\nLoaded latency (upload) p50/p90/p99: 654.8/794.1/794.1 ms (loss 45.5%, jitter 144.4 ms)\n\n\n\n\u3053\u3093\u306a\u611f\u3058\u3067\u5b9a\u671f\u7684\u306b\u8a08\u6e2c\u3059\u308b\u306e\u306b\u3082\u4fbf\u5229\u304b\u3082\u3068\u601d\u3044\u307e\u3057\u305f\u304c\uff0ccli \u30e2\u30fc\u30c9\u3067\u306f\u65e2\u5b9a\u5024\u3067\u306f\u7d50\u679c\u3092\u4fdd\u5b58\u3057\u306a\u3044\u3088\u3046\u3067\u3059\uff0e\n\n\n\n$ watch -n 3600 -- cloudflare-speed-cli --text\n\n\n\n--auto-save true \u3082\u8ffd\u52a0\u3059\u308b\u3068\u7d50\u679c\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff0e\n\n\n\n$ watch -n 3600 -- cloudflare-speed-cli --text --auto-save true\n\n\n\n\u305f\u3060\uff0c\u4ee5\u4e0b\u306e\u3088\u3046\u306bTUI \u30e2\u30fc\u30c9\u306e\u8a08\u6e2c\u6642\u306e\u30ed\u30b0\u306b\u306f --interface \u3092\u6307\u5b9a\u3057\u3066\u3082Interface \u3084AP \u540d\u306f\u4fdd\u5b58\u3055\u308c\u306a\u3044\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\u2502 3. 2025-12-31 06:30:11 +09:00 DL 20.69 Mbps UL 4.66 Mbps Idle p50 103.7 ms - (1)\n\u2502 4. 2025-12-31 06:08:33 +09:00 DL 21.73 Mbps UL 3.16 Mbps Idle p50 100.7 ms wlan0 TP-L13💻 (2)\n\n\n\n\n\n--text \u3067cli \u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u3057\u305f\u3068\u304d\u306e\u7d50\u679c\n\n\nTUI \u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u3057\u305f\u3068\u304d\u306e\u7d50\u679c\n\n\n\n\n\n\nSEE ALSO\n\n\nsivel/speedtest-cli: Command line interface for testing internet bandwidth using speedtest.net speedtest.net \u3092\u4f7f\u3044cli \u3067\u8a08\u6e2c\n\n$ speedtest-cli\nRetrieving speedtest.net configuration...\nTesting from Rakuten Mobile Network (133.106.160.42)...\nRetrieving speedtest.net server list...\nSelecting best server based on ping...\nHosted by GSL Networks (Tokyo) [0.26 km]: 60.882 ms\nTesting download speed................................................................................\nDownload: 12.70 Mbit/s\nTesting upload speed......................................................................................................\nUpload: 2.69 Mbit/s\n\n\n\nSpeedtest CLI: Internet speed test for the command line \u203bOokla\u516c\u5f0f\u3060\u304c\u30d7\u30ed\u30d7\u30e9\u30a4\u30a8\u30bf\u30ea\n\n$ speedtest\n\n Speedtest by Ookla\n\n Server: IPA CyberLab 400G - Tokyo (id: 48463)\n ISP: Rakuten Mobile Network\nIdle Latency: 50.15 ms (jitter: 1.41ms, low: 48.98ms, high: 52.36ms)\n Download: 20.75 Mbps (data used: 19.9 MB)\n 262.40 ms (jitter: 71.32ms, low: 72.73ms, high: 398.26ms)\n Upload: 2.96 Mbps (data used: 1.6 MB)\n 779.27 ms (jitter: 95.79ms, low: 75.05ms, high: 1148.99ms)\n Packet Loss: 0.0%\n Result URL: https://www.speedtest.net/result/c/e1a349cf-53eb-4d63-b8f4-8550dabd772d\n\n\n\nn8henrie/fastcli: Python3 speed test via Fast.com fast.com \u3092\u4f7f\u3044cli \u3067\u8a08\u6e2c\u2026\u20262025-12-27\u306barchived \u3055\u308c\u3066\u3044\u305f\n\n$ python -m fastcli -v\nApproximate download speed: 17.48 Mbps", "date_published": "2025-12-31T07:45:08+09:00", "date_modified": "2025-12-31T07:45:10+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Cloudflare", "Raspberry Pi OS", "speedtest", "TUI", "bookworm", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=5113", "url": "https://matoken.org/blog/2025/12/29/witr_-why-is-this-running/", "title": "\u30d7\u30ed\u30bb\u30b9\u306e\u60c5\u5831\u3092\u308f\u304b\u308a\u3084\u3059\u304f\u8868\u793a\u3057\u3066\u304f\u308c\u308bwitr", "content_html": "
\n
\n

\n
\n

witr (why-is-this-running) \u306f\u30d7\u30ed\u30bb\u30b9\u540d\uff0cPID\uff0c\u30dd\u30fc\u30c8\u756a\u53f7\u304b\u3089\u305d\u308c\u304c\u306a\u305c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u8abf\u3079\u3066\u8868\u793a\u3057\u3066\u304f\u308c\u307e\u3059\uff0e

\n
\n
\n

\"witr

\n
\n\n

\n
\n

\u4f8b\u3048\u3070\u4ee5\u4e0b\u306fport 22 \u3092\u8abf\u3079\u3066\u3044\u307e\u3059\uff0esshd \u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306a\u3069\u304c\u308f\u304b\u308a\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo ./witr -port 22\nTarget      : sshd\n\nProcess     : sshd (pid 581)\nUser        : root\nCommand     : sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups\nStarted     : 4 days ago (Thu 2025-12-25 18:10:39 +09:00)\n\nWhy It Exists :\n  systemd (pid 1)   sshd (pid 581)\n\nSource      : systemd service (supervisor)\n\nWorking Dir : /\nListening   : 0.0.0.0:22\n              :::22\n\nWarnings    :\n    Process is listening on a public interface\n    Process is running as root\n    Process is running from a suspicious working directory: /
\n
\n
\n
\n

\u30e1\u30e2\u30ea\u3092\u305f\u304f\u3055\u3093\u4f7f\u3063\u3066\u3044\u308b(1GB+)\u3068\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u305f\u308a\u3082\u3057\u307e\u3059

\n
\n
\n
\n
$ sudo ~/usr/local/bin/witr -pid 10522\nTarget      : firefox.real\n\nProcess     : firefox.real (pid 10522) [high-mem]\nUser        : matoken\nCommand     : /usr/bin/firefox.real\nStarted     : 2 days ago (Sat 2025-12-27 05:39:41 +09:00)\n\nWhy It Exists :\n  systemd (pid 1) \u2192 firefox.real (pid 10522)\n\nSource      : systemd service (supervisor)\n\nWorking Dir : /home/matoken\n\nWarnings    :\n  \u2022 Process is using high memory (>1GB RSS)
\n
\n
\n
\n

\u4ee5\u4e0b\u306f\u30d7\u30ed\u30bb\u30b9ID 524 \u304b\u3089glance \u304ccron \u304b\u3089\u8d77\u52d5\u3057\u3066\u3044\u308b\u306e\u304c\u308f\u304b\u308a\u307e\u3059\uff0e

\n
\n
\n
\n
$ ./witr -pid 524\nTarget      : glance\n\nProcess     : glance (pid 524) {forked}\nUser        : matoken\nCommand     : /home/matoken/bin/glance -config /home/matoken/.config/glance.yml\nStarted     : 4 days ago (Thu 2025-12-25 18:10:36 +09:00)\nRestarts    : 1\n\nWhy It Exists :\n  systemd (pid 1) \u2192 cron (pid 448) \u2192 cron (pid 492) \u2192 sh (pid 523 glance (pid 524)\n\nSource      : systemd service (supervisor)\n\nWorking Dir : /home/matoken\nListening   : :::8080\n\nWarnings    :\n    Process is listening on a public interface
\n
\n
\n
\n

\u30dd\u30fc\u30c8\u30b9\u30ad\u30e3\u30f3\u3057\u3066open \u3057\u3066\u3044\u308b\u30dd\u30fc\u30c8\u5168\u3066\u306b\u5bfe\u3057\u3066witr \u3092\u5b9f\u884c\u3057\u3066\u307f\u305f\u308a\u3082\uff0e

\n
\n
\n
\n
$ sudo nmap -p 0-65535 localhost | grep open | cut -f1 -d\\/ | xargs -n1 sudo ./witr -port
\n
\n
\n
\n
\n
\n

witr \u306e\u5c0e\u5165

\n
\n
\n

witr \u306e\u5c0e\u5165\u306finstall.sh \u304c\u304a\u3059\u3059\u3081\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3042\u307e\u308a\u597d\u307f\u306e\u65b9\u6cd5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff0e\u4e2d\u3092\u898b\u308b\u3068GitHub Releases \u304b\u3089\u74b0\u5883\u306b\u3042\u3063\u305f\u30d0\u30a4\u30ca\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\uff0c /usr/local/bin \u4ee5\u4e0b\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u307e\u3059\uff0e\u30d0\u30a4\u30ca\u30ea\u306fLinux amd64, arm64 \u304c\u7528\u610f\u3057\u3066\u3042\u308a\u307e\u3059\uff0e
\namd64 \u74b0\u5883\u3067\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u624b\u9806\u3067\u624b\u52d5\u3067\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n\n\n\n\n\n
\n
Note
\n
\nv0.1.1 \u3067macOS amd64/arm64 \u3082\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\uff0e\n
\n
\n
\n
\n
$ wget -c https://github.com/pranshuparmar/witr/releases/latest/download/witr-linux-amd64 (1)\n$ install -m 755 ./witr-linux-amd64 ~/usr/local/bin/witr (2)\n$ which witr\n/home/matoken/usr/local/bin/witr\n$ rm witr-linux-amd64\n$ witr (3)\nUsage: witr [--pid N | --port N | name] [--short] [--tree] [--json] [--warnings] [--no-color] [--env] [--help] [--version]\n  --pid <n>         Explain a specific PID\n  --port <n>        Explain port usage\n  --short           One-line summary\n  --tree            Show full process ancestry tree\n  --json            Output result as JSON\n  --warnings        Show only warnings\n  --no-color        Disable colorized output\n  --env             Show only environment variables for the process\n  --help            Show this help message\n  --version         Show version and exit\n$ witr --version\nwitr v0.1.1 (commit b50f08b, built 2025-12-28)
\n
\n
\n
\n
    \n
  1. \n

    witr \u306e\u6700\u65b0\u306elinux amd64 \u30d0\u30a4\u30ca\u30ea\u7248\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

    \n
  2. \n
  3. \n

    \u597d\u307f\u306e\u5834\u6240\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb

    \n
  4. \n
  5. \n

    USAGE

    \n
  6. \n
\n
\n
\n
\n
\n

Linux armhf(arm 32bit) \u3067\u3082\u52d5\u304b\u3059

\n
\n
\n

Raspberry Pi bookworm armhf \u3067\u3082\u52d5\u304b\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\uff0e
\nbuild \u3057\u3088\u3046\u3068\u3057\u305f\u3089\u307e\u305agolang \u304c\u53e4\u3044\u3068\u8a00\u308f\u308c\u305f\u306e\u3067\u307e\u305a\u306f\u65b0\u3057\u3044golang \u306e\u5165\u624b\u304b\u3089\uff0e

\n
\n
\n
package\u7248golang \u306f1.23 \u3060\u304c1.25.5+ \u304c\u5fc5\u8981
\n
\n
$ /usr/bin/go build -ldflags \"-X main.version=0.1.0 -X main.commit=$(git rev-parse --short HEAD) -X 'main.buildDate=$(date +%Y-%m-%d)'\" -o witr-linux-arm32 ./cmd/witr\ngo: errors parsing go.mod:\n/home/matoken/src/witr/go.mod:3: invalid go version '1.25.5': must match format 1.23
\n
\n
\n
\n
go.dev \u304b\u3089armv6 \u30d0\u30a4\u30ca\u30ea\u3092\u5165\u624b\u3057\u3066\u30d1\u30b9\u3092\u901a\u3059
\n
\n
$ wget -c https://go.dev/dl/go1.25.5.linux-armv6l.tar.gz (1)\n$ mkdir -p ~/usr/local\n$ tar -C ~/usr/local -xzf go1.25.5.linux-armv6l.tar.gz (2)\n$ rm go1.25.5.linux-armv6l.tar.gz\n$ PATH=~/usr/local/go/bin:$PATH (3)\n$ which go\n/home/matoken/usr/local/go/bin/go\n$ go version (4)\ngo version go1.25.5 linux/arm\n$ cat << EOF > hello.go (5)\npackage main\nimport \"fmt\"\nfunc main() {\n\tfmt.Println(\"Hello World\")\n}\nEOF\n$ go run hello.go (6)\nHello World
\n
\n
\n
\n
    \n
  1. \n

    Linux armv6l \u306e\u30d0\u30a4\u30ca\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

    \n
  2. \n
  3. \n

    \u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u9069\u5f53\u306a\u5834\u6240\u306b\u5c55\u958b

    \n
  4. \n
  5. \n

    \u30d1\u30b9\u3092\u901a\u3057\u3066\u304a\u304f(\u4e00\u6642\u7684\u306a\u4f8b)

    \n
  6. \n
  7. \n

    \u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d

    \n
  8. \n
  9. \n

    hello world \u3092\u7528\u610f

    \n
  10. \n
  11. \n

    \u52d5\u4f5c\u78ba\u8a8d

    \n\n
  12. \n
\n
\n
\n
witr \u3092\u30d3\u30eb\u30c9
\n
\n
$ git clone https://github.com/pranshuparmar/witr/\n$ cd witr\n$ go build -ldflags \"-X main.version=0.1.0 -X main.commit=$(git rev-parse --short HEAD) -X 'main.buildDate=$(date +%Y-%m-%d)'\" -o witr-linux-arm32 ./cmd/witr\n$ ./witr-linux-arm32 --version\nwitr 0.1.0 (commit a2dc413, built 2025-12-28)
\n
\n
\n
\n
\n", "content_text": "witr (why-is-this-running) \u306f\u30d7\u30ed\u30bb\u30b9\u540d\uff0cPID\uff0c\u30dd\u30fc\u30c8\u756a\u53f7\u304b\u3089\u305d\u308c\u304c\u306a\u305c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u8abf\u3079\u3066\u8868\u793a\u3057\u3066\u304f\u308c\u307e\u3059\uff0e\n\n\n\n\n\n\n\npranshuparmar/witr: Why is this running?\n\n\n\n\n\n\u4f8b\u3048\u3070\u4ee5\u4e0b\u306fport 22 \u3092\u8abf\u3079\u3066\u3044\u307e\u3059\uff0esshd \u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306a\u3069\u304c\u308f\u304b\u308a\u307e\u3059\uff0e\n\n\n\n$ sudo ./witr -port 22\nTarget : sshd\n\nProcess : sshd (pid 581)\nUser : root\nCommand : sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups\nStarted : 4 days ago (Thu 2025-12-25 18:10:39 +09:00)\n\nWhy It Exists :\n systemd (pid 1) sshd (pid 581)\n\nSource : systemd service (supervisor)\n\nWorking Dir : /\nListening : 0.0.0.0:22\n :::22\n\nWarnings :\n Process is listening on a public interface\n Process is running as root\n Process is running from a suspicious working directory: /\n\n\n\n\u30e1\u30e2\u30ea\u3092\u305f\u304f\u3055\u3093\u4f7f\u3063\u3066\u3044\u308b(1GB+)\u3068\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u305f\u308a\u3082\u3057\u307e\u3059\n\n\n\n$ sudo ~/usr/local/bin/witr -pid 10522\nTarget : firefox.real\n\nProcess : firefox.real (pid 10522) [high-mem]\nUser : matoken\nCommand : /usr/bin/firefox.real\nStarted : 2 days ago (Sat 2025-12-27 05:39:41 +09:00)\n\nWhy It Exists :\n systemd (pid 1) \u2192 firefox.real (pid 10522)\n\nSource : systemd service (supervisor)\n\nWorking Dir : /home/matoken\n\nWarnings :\n \u2022 Process is using high memory (>1GB RSS)\n\n\n\n\u4ee5\u4e0b\u306f\u30d7\u30ed\u30bb\u30b9ID 524 \u304b\u3089glance \u304ccron \u304b\u3089\u8d77\u52d5\u3057\u3066\u3044\u308b\u306e\u304c\u308f\u304b\u308a\u307e\u3059\uff0e\n\n\n\n$ ./witr -pid 524\nTarget : glance\n\nProcess : glance (pid 524) {forked}\nUser : matoken\nCommand : /home/matoken/bin/glance -config /home/matoken/.config/glance.yml\nStarted : 4 days ago (Thu 2025-12-25 18:10:36 +09:00)\nRestarts : 1\n\nWhy It Exists :\n systemd (pid 1) \u2192 cron (pid 448) \u2192 cron (pid 492) \u2192 sh (pid 523 glance (pid 524)\n\nSource : systemd service (supervisor)\n\nWorking Dir : /home/matoken\nListening : :::8080\n\nWarnings :\n Process is listening on a public interface\n\n\n\n\u30dd\u30fc\u30c8\u30b9\u30ad\u30e3\u30f3\u3057\u3066open \u3057\u3066\u3044\u308b\u30dd\u30fc\u30c8\u5168\u3066\u306b\u5bfe\u3057\u3066witr \u3092\u5b9f\u884c\u3057\u3066\u307f\u305f\u308a\u3082\uff0e\n\n\n\n$ sudo nmap -p 0-65535 localhost | grep open | cut -f1 -d\\/ | xargs -n1 sudo ./witr -port\n\n\n\n\n\nwitr \u306e\u5c0e\u5165\n\n\nwitr \u306e\u5c0e\u5165\u306finstall.sh \u304c\u304a\u3059\u3059\u3081\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3042\u307e\u308a\u597d\u307f\u306e\u65b9\u6cd5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff0e\u4e2d\u3092\u898b\u308b\u3068GitHub Releases \u304b\u3089\u74b0\u5883\u306b\u3042\u3063\u305f\u30d0\u30a4\u30ca\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\uff0c /usr/local/bin \u4ee5\u4e0b\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u307e\u3059\uff0e\u30d0\u30a4\u30ca\u30ea\u306fLinux amd64, arm64 \u304c\u7528\u610f\u3057\u3066\u3042\u308a\u307e\u3059\uff0e\namd64 \u74b0\u5883\u3067\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u624b\u9806\u3067\u624b\u52d5\u3067\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\n\nNote\n\n\nv0.1.1 \u3067macOS amd64/arm64 \u3082\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n$ wget -c https://github.com/pranshuparmar/witr/releases/latest/download/witr-linux-amd64 (1)\n$ install -m 755 ./witr-linux-amd64 ~/usr/local/bin/witr (2)\n$ which witr\n/home/matoken/usr/local/bin/witr\n$ rm witr-linux-amd64\n$ witr (3)\nUsage: witr [--pid N | --port N | name] [--short] [--tree] [--json] [--warnings] [--no-color] [--env] [--help] [--version]\n --pid <n> Explain a specific PID\n --port <n> Explain port usage\n --short One-line summary\n --tree Show full process ancestry tree\n --json Output result as JSON\n --warnings Show only warnings\n --no-color Disable colorized output\n --env Show only environment variables for the process\n --help Show this help message\n --version Show version and exit\n$ witr --version\nwitr v0.1.1 (commit b50f08b, built 2025-12-28)\n\n\n\n\n\nwitr \u306e\u6700\u65b0\u306elinux amd64 \u30d0\u30a4\u30ca\u30ea\u7248\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n\n\n\u597d\u307f\u306e\u5834\u6240\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\n\nUSAGE\n\n\n\n\n\n\nLinux armhf(arm 32bit) \u3067\u3082\u52d5\u304b\u3059\n\n\nRaspberry Pi bookworm armhf \u3067\u3082\u52d5\u304b\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\uff0e\nbuild \u3057\u3088\u3046\u3068\u3057\u305f\u3089\u307e\u305agolang \u304c\u53e4\u3044\u3068\u8a00\u308f\u308c\u305f\u306e\u3067\u307e\u305a\u306f\u65b0\u3057\u3044golang \u306e\u5165\u624b\u304b\u3089\uff0e\n\n\npackage\u7248golang \u306f1.23 \u3060\u304c1.25.5+ \u304c\u5fc5\u8981\n\n$ /usr/bin/go build -ldflags \"-X main.version=0.1.0 -X main.commit=$(git rev-parse --short HEAD) -X 'main.buildDate=$(date +%Y-%m-%d)'\" -o witr-linux-arm32 ./cmd/witr\ngo: errors parsing go.mod:\n/home/matoken/src/witr/go.mod:3: invalid go version '1.25.5': must match format 1.23\n\n\n\ngo.dev \u304b\u3089armv6 \u30d0\u30a4\u30ca\u30ea\u3092\u5165\u624b\u3057\u3066\u30d1\u30b9\u3092\u901a\u3059\n\n$ wget -c https://go.dev/dl/go1.25.5.linux-armv6l.tar.gz (1)\n$ mkdir -p ~/usr/local\n$ tar -C ~/usr/local -xzf go1.25.5.linux-armv6l.tar.gz (2)\n$ rm go1.25.5.linux-armv6l.tar.gz\n$ PATH=~/usr/local/go/bin:$PATH (3)\n$ which go\n/home/matoken/usr/local/go/bin/go\n$ go version (4)\ngo version go1.25.5 linux/arm\n$ cat << EOF > hello.go (5)\npackage main\nimport \"fmt\"\nfunc main() {\n\tfmt.Println(\"Hello World\")\n}\nEOF\n$ go run hello.go (6)\nHello World\n\n\n\n\n\nLinux armv6l \u306e\u30d0\u30a4\u30ca\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n\n\n\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u9069\u5f53\u306a\u5834\u6240\u306b\u5c55\u958b\n\n\n\u30d1\u30b9\u3092\u901a\u3057\u3066\u304a\u304f(\u4e00\u6642\u7684\u306a\u4f8b)\n\n\n\u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d\n\n\nhello world \u3092\u7528\u610f\n\n\n\u52d5\u4f5c\u78ba\u8a8d\n\n\n\nDownload and install – The Go Programming Language\n\n\nAll releases – The Go Programming Language\n\n\n\n\n\n\n\nwitr \u3092\u30d3\u30eb\u30c9\n\n$ git clone https://github.com/pranshuparmar/witr/\n$ cd witr\n$ go build -ldflags \"-X main.version=0.1.0 -X main.commit=$(git rev-parse --short HEAD) -X 'main.buildDate=$(date +%Y-%m-%d)'\" -o witr-linux-arm32 ./cmd/witr\n$ ./witr-linux-arm32 --version\nwitr 0.1.0 (commit a2dc413, built 2025-12-28)", "date_published": "2025-12-29T21:31:39+09:00", "date_modified": "2025-12-29T21:31:41+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "system info", "witr", "bookworm", "Debian", "Linux", "Raspberry Pi OS", "sid", "\u672a\u5206\u985e" ] }, { "id": "https://matoken.org/blog/?p=5089", "url": "https://matoken.org/blog/2025/12/24/sataka-and-blurhash/", "title": "\u30bf\u30fc\u30df\u30ca\u30eb\u7279\u5316Misskey\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306esayaka\u3061\u3083\u3093\u3068BlurHash", "content_html": "
\n
\n

\n
\n

\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u7279\u5316\u3057\u305f Misskey \u30b9\u30c8\u30ea\u30fc\u30e0\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306esayaka \u3061\u3083\u3093\u3068\u3044\u3046\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c\u3042\u308a\u307e\u3059\uff0eSixel \u5bfe\u5fdc\u7aef\u672b\u3067\u5b9f\u884c\u3059\u308b\u3068\u753b\u50cf\u4ed8\u304d\u3067Misskey \u3092\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3057\u3066\u3068\u3066\u3082\u697d\u3057\u3044\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n

\u3053\u306esayaka \u3061\u3083\u3093\u306b --force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u5b9f\u88c5\u3055\u308c\u305f\u306e\u3067\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n\n

\n

\n
\n
\n

BlurHash?

\n
\n
\n

BlurHash \u306f\u30d5\u30fc\u30c9\u30c7\u30ea\u30d0\u30ea\u30fc\u30b5\u30fc\u30d3\u30b9\u306eWolt \u306e\u958b\u767a\u3057\u305f\u753b\u50cf\u8aad\u307f\u8fbc\u307f\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306a\u3069\u306b\u5229\u7528\u3067\u304d\u308b\u30b3\u30f3\u30d1\u30af\u30c8\u306a20\u301c30\u6587\u5b57\u3067\u8868\u305b\u308b\u307c\u304b\u3057\u305f\u753b\u50cf\u3067\u3059\uff0e
\n\u3053\u306e\u5bb9\u91cf\u306e\u5c0f\u3055\u3044\u753b\u50cf\u3092\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u57cb\u3081\u8fbc\u3080\u3068\u7a7a\u3063\u307d\u3088\u308a\u5f69\u308a\u304c\u8c4a\u304b\u306b\u306a\u3063\u305f\u308a\uff0cNSFW \u753b\u50cf\u3092\u30e2\u30b6\u30a4\u30af\u3059\u308b\u4ee3\u308f\u308a\u306b\u4f7f\u3063\u305f\u308a\u51fa\u6765\u307e\u3059\uff0e
\nBlurHash \u306fJSON, HTML, Shell \u3067\u5b89\u5168\u306a\u6b21\u306e\u30ad\u30e3\u30e9\u30af\u30bf\u3092\u4f7f\u3063\u305fBase 83 \u3067\u8868\u73fe\u3055\u308c\u307e\u3059\uff0e

\n
\n
\n
\n
\n

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%*+,-.:;=?@[]^_{|}~

\n
\n
\n\n
\n
\n

BlurHash \u306fMIT\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u305f\u304f\u3055\u3093\u306e\u8a00\u8a9e\u3067\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

\u4ee5\u4e0b\u306fDebian logo \u3092C \u5b9f\u88c5\u306eBlurHash \u306b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u6570\u3054\u3068\u306b\u304b\u3051\u3066\u307f\u3066\u3044\u307e\u3059\uff0e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u6570\u306b\u3088\u308a7\u301c133byte\u3067\u8868\u3055\u308c\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
$ git clone https://github.com/woltapp/blurhash (1)\n$ cd blurhash/C/\n$ make blurhash_encoder (2)\n$ make blurhash_decoder (3)\n$ wget https://www.debian.org/logos/openlogo-nd-100.png (4)\n$ file openlogo-nd-100.png\nopenlogo-nd-100.png: PNG image data, 101 x 124, 8-bit colormap, non-interlaced\n$ for i in {1..8}; do ./blurhash_encoder $i $i openlogo-nd-100.png; done (5)\n00SFLy\nAJSFLyixHXx]\nKJSFLyixR5HXx]kCWBj[%#\nUJSFLyixR5xuHXx]kCofWBj[%#yDeTV@yXR5\neJSFLyixR5xuVsHXx]kCofj[WBj[%#yD%#eTV@yXR5tRV@o|%}kCRP\noJSFLyixR5xuVsiwHXx]kCofj[VsWBj[%#yD%#tleTV@yXR5tRofV@o|%}kCRPMJ%gV@ozozRPoz\nyJSFLyixR5xuVsiwtlHXx]kCofj[VsozWBj[%#yD%#tlkCeTV@yXR5tRofkCV@o|%}kCRPMJMd%gV@ozozRPozRPozaytlR5H?kBRP\n:JSFLyixR5xuVsiwtlt7HXx]kCofj[VsozVsWBj[%#yD%#tlkCj[eTV@yXR5tRofkCtRV@o|%}kCRPMJMdV@%gV@ozozRPozRPozozaytlR5H?kBRPtRxukCtRVsR5kCfkae\n$ for i in {1..8}; do ./blurhash_encoder $i $i openlogo-nd-100.png | wc -c; done (6)\n7\n13\n23\n37\n55\n77\n103\n133\n$ for i in {1..8}; do ./blurhash_decoder $( ./blurhash_encoder $i $i openlogo-nd-100.png ) 101 124 blur-$i.png; done (7)\n$ lsix (8)
\n
\n
\n
\n
    \n
  1. \n

    BlurHash \u306esource \u5165\u624b

    \n
  2. \n
  3. \n

    encoder build

    \n
  4. \n
  5. \n

    decoder build

    \n
  6. \n
  7. \n

    Debian logo file \u5165\u624b

    \n
  8. \n
  9. \n

    \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u679a\u306bBlurHash \u306b\u5909\u63db

    \n
  10. \n
  11. \n

    \u30d0\u30a4\u30c8\u6570\u78ba\u8a8d

    \n
  12. \n
  13. \n

    BlurHash \u3092png \u306b\u5909\u63db

    \n
  14. \n
  15. \n

    png \u306b\u5909\u63db\u3057\u305fBlurHash \u3092\u8868\u793a

    \n
  16. \n
\n
\n
\n

\"blurhash

\n
\n
\n

\u6614\u306fhtml \u306eimg \u30bf\u30b0\u306blowsrc \u3067\u30b5\u30a4\u30ba\u306e\u5c0f\u3055\u3044\u4ee3\u66ff\u753b\u50cf\u3092\u6307\u5b9a\u3057\u305f\u308a\u3057\u3066\u3044\u307e\u3057\u305f\u304c(\u73fe\u5728\u306f\u975e\u63a8\u5968)\u305d\u308c\u3088\u308a\u3082\u5c0f\u3055\u304f\u306a\u308b\u3068\u601d\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
\n

sayaka \u306e –force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a66\u3059

\n
\n
\n

sayaka \u3061\u3083\u3093\u306e –force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e
\n\u307e\u305a\u306fbuild\uff0e
\nLinux \u3067\u306ebuild \u6642\u306b\u5f15\u3063\u304b\u304b\u308a\u3084\u3059\u3044\u306e\u304cGNU Make \u3067\u306f\u306a\u304fbmake \u3092\u4f7f\u3046\u3068\u3053\u308d\uff0e

\n
\n
\n
\n
$ git checkout a4e143d50ceee29a61610d1ee76e4030b0bba273\nPrevious HEAD position was d76cb2c ver 3.8.1 (2024/09/21)\nHEAD is now at a4e143d src/misskey: --force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002 \u753b\u50cf\u8868\u793a\u3092 Blurhash \u3060\u3051\u306b\u3059\u308b\u30e2\u30fc\u30c9\u3002\n$ ./configure\n$ bmake -DRELEASE all\n$ src/sayaka\nusage: sayaka <command> [<options...>]\n <command>\n  -h,--home           : Home timeline mode (needs --server and --token)\n  -l,--local          : Local timeline mode (needs --server)\n  -p,--play=<file|->  : Playback mode\n <options>\n  -s,--server=<host>  : Set misskey server\n  -t,--token=<file>   : Set misskey access token file\n  -c,--color=<color>  : 256,16,8,2,1 and gray[2-256] (default:256)\n  --show-cw           : Open CW(Contents Warning) part\n  --nsfw=<show|blur|alt|hide> : How to show NSFW contents (default:blur)\n  --show-image=<yes|no|auto>  : Whether to show image or not (default:auto)\n  -r,--record=<file>  : Record JSON to <file>\n  --help-all          : More details
\n
\n
\n
\n

build \u51fa\u6765\u305f\u306e\u3067\u65e9\u901f --force-blurhash \u3092\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e\u4f8b\u3048\u3070 misskey.io \u3092\u3053\u3093\u306a\u611f\u3058\u3067\uff0e

\n
\n
\n
\n
$ src/sayaka --force-blurhash -l -s misskey.io
\n
\n
\n
\n

\u3053\u308c\u307e\u3067\u306f\u65e2\u5b9a\u5024\u3067\u306fNSFW \u30b3\u30f3\u30c6\u30f3\u30c4\u304cBlurHash \u3067\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304c\uff0c--force-blurhash \u3067\u306f\u5168\u3066\u306e\u30a2\u30a4\u30b3\u30f3\u753b\u50cf\u3082\u6dfb\u4ed8\u753b\u50cf\u3082BlurHash \u306b\u306a\u308a\u307e\u3059\uff0e

\n
\n
\n

\"sayaka

\n
\n
\n\n\n\n\n\n
\n
Note
\n
\n\u30a2\u30ab\u30a6\u30f3\u30c8\u3084\u672c\u6587\u306b\u306f\u30e2\u30b6\u30a4\u30af\u3092\u639b\u3051\u3066\u3042\u308a\u307e\u3059\uff0e\n
\n
\n
\n

BlurHash \u3067\u753b\u50cf\u30b5\u30a4\u30ba\u304c\u5c0f\u3055\u304f\u306a\u308b\u3063\u3066\u3053\u3068\u306f\u901a\u4fe1\u6599\u3082\u30c7\u30fc\u30bf\u91cf\u3082\u5c0f\u3055\u304f\u306a\u3063\u3066\u3044\u3066\u30d7\u30a2\u306a\u56de\u7dda\u3067\u3082\u3044\u3044\u611f\u3058\u306b\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3067\u304d\u305d\u3046\u306a\u6c17\u304c\u3057\u307e\u3059\uff0e

\n
\n
\n

BlurHash \u3068Sixel \u309260\u79d2\u305a\u3064 --record \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\u671f\u5f85\u306b\u53cd\u3057\u3066BlurHash \u306e\u307b\u3046\u304c\u5927\u5206\u5927\u304d\u3044\u3067\u3059\uff0e

\n
\n
\n
\n
$ timeout 60 src/sayaka --record=blurhash.rec --force-blurhash -l -s misskey.io\n$ timeout 60 src/sayaka --record=sixel.rec -l -s misskey.io\n$ ls -s *.rec\n436 blurhash.rec   44 sixel.rec
\n
\n
\n
\n

ttyrec \u3067\u3082\u540c\u3058\u3088\u3046\u306a\u611f\u3058\uff0e

\n
\n
\n
\n
$ ttyrec -f blurhash.ttyrec -- timeout 60 src/sayaka --force-blurhash -l -s misskey.io\n$ ttyrec -f sixel.ttyrec -- timeout 60 src/sayaka -l -s misskey.io\n$ ls -s *.ttyrec\n1768 blurhash.ttyrec   228 sixel.ttyrec
\n
\n
\n
\n

\u901a\u4fe1\u91cf\u306f\u3069\u3046\u3060\u308d\u3046\u3068nethogs \u30b3\u30de\u30f3\u30c9\u3067 $ sudo nethogs -P $(pgrep sayaka) -l \u306a\u611f\u3058\u3067\u898b\u3066\u307f\u308b\u3068\u3084\u306f\u308aBlurHash \u306e\u307b\u3046\u304c\u901a\u4fe1\u91cf\u304c\u591a\u3044\u3088\u3046\u306a?

\n
\n
\n
BlurHash
\n
\n
NetHogs version 0.8.8\n\n    PID USER     PROGRAM          DEV                   SENT      RECEIVED\n      ? root     unknown TCP                          435.079      11.067 kB/s\n2782477 matoken  src/sayaka -..   enx349971e11a0f       0.252       6.934 kB/s\n\n  TOTAL                                               435.331      18.001 kB/s
\n
\n
\n
\n
Sixel
\n
\n
NetHogs version 0.8.8\n\n    PID USER     PROGRAM          DEV                   SENT      RECEIVED\n      ? root     unknown TCP                          432.206      11.271 kB/s\n2787797 matoken  src/sayaka -..   enx349971e11a0f       0.150       0.885 kB/s\n\n  TOTAL                                               432.356      12.156 kB/s
\n
\n
\n
\n

\u9332\u753b\u30c7\u30fc\u30bf\u3092\u898b\u308b\u3068\u4ef6\u6570\u304c\u9055\u3044\u307e\u3059\uff0eSixel \u306e\u3068\u304d\u306b\u306a\u306b\u304b\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u304c\u3042\u308a\u305d\u3046\u3067\u3059\uff0e\u56de\u7dda\u306e\u554f\u984c?
\n\u5f8c\u3067VPS \u3067\u3082\u78ba\u8a8d\u3057\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
$ jq .body.type blurhash.rec | wc -l\n119\n$ jq .body.type sixel.rec | wc -l\n10
\n
\n
\n
\n
\n", "content_text": "\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u7279\u5316\u3057\u305f Misskey \u30b9\u30c8\u30ea\u30fc\u30e0\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306esayaka \u3061\u3083\u3093\u3068\u3044\u3046\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c\u3042\u308a\u307e\u3059\uff0eSixel \u5bfe\u5fdc\u7aef\u672b\u3067\u5b9f\u884c\u3059\u308b\u3068\u753b\u50cf\u4ed8\u304d\u3067Misskey \u3092\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3057\u3066\u3068\u3066\u3082\u697d\u3057\u3044\u3067\u3059\uff0e\n\n\n\n\nisaki68k/sayaka\n\n\n\n\n\u3053\u306esayaka \u3061\u3083\u3093\u306b --force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u5b9f\u88c5\u3055\u308c\u305f\u306e\u3067\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\nsrc/misskey: –force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002 \u00b7 isaki68k/sayaka@a4e143d\n\n\n\n\n\n\n\nBlurHash?\n\n\nBlurHash \u306f\u30d5\u30fc\u30c9\u30c7\u30ea\u30d0\u30ea\u30fc\u30b5\u30fc\u30d3\u30b9\u306eWolt \u306e\u958b\u767a\u3057\u305f\u753b\u50cf\u8aad\u307f\u8fbc\u307f\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306a\u3069\u306b\u5229\u7528\u3067\u304d\u308b\u30b3\u30f3\u30d1\u30af\u30c8\u306a20\u301c30\u6587\u5b57\u3067\u8868\u305b\u308b\u307c\u304b\u3057\u305f\u753b\u50cf\u3067\u3059\uff0e\n\u3053\u306e\u5bb9\u91cf\u306e\u5c0f\u3055\u3044\u753b\u50cf\u3092\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u57cb\u3081\u8fbc\u3080\u3068\u7a7a\u3063\u307d\u3088\u308a\u5f69\u308a\u304c\u8c4a\u304b\u306b\u306a\u3063\u305f\u308a\uff0cNSFW \u753b\u50cf\u3092\u30e2\u30b6\u30a4\u30af\u3059\u308b\u4ee3\u308f\u308a\u306b\u4f7f\u3063\u305f\u308a\u51fa\u6765\u307e\u3059\uff0e\nBlurHash \u306fJSON, HTML, Shell \u3067\u5b89\u5168\u306a\u6b21\u306e\u30ad\u30e3\u30e9\u30af\u30bf\u3092\u4f7f\u3063\u305fBase 83 \u3067\u8868\u73fe\u3055\u308c\u307e\u3059\uff0e\n\n\n\n\n0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%*+,-.:;=?@[]^_{|}~\n\n\n\n— https://github.com/woltapp/blurhash/blob/master/Algorithm.md#base-83\n\n\n\nBlurHash \u306fMIT\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u305f\u304f\u3055\u3093\u306e\u8a00\u8a9e\u3067\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\n\n\n\u4ee5\u4e0b\u306fDebian logo \u3092C \u5b9f\u88c5\u306eBlurHash \u306b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u6570\u3054\u3068\u306b\u304b\u3051\u3066\u307f\u3066\u3044\u307e\u3059\uff0e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u6570\u306b\u3088\u308a7\u301c133byte\u3067\u8868\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\n\n\n\n$ git clone https://github.com/woltapp/blurhash (1)\n$ cd blurhash/C/\n$ make blurhash_encoder (2)\n$ make blurhash_decoder (3)\n$ wget https://www.debian.org/logos/openlogo-nd-100.png (4)\n$ file openlogo-nd-100.png\nopenlogo-nd-100.png: PNG image data, 101 x 124, 8-bit colormap, non-interlaced\n$ for i in {1..8}; do ./blurhash_encoder $i $i openlogo-nd-100.png; done (5)\n00SFLy\nAJSFLyixHXx]\nKJSFLyixR5HXx]kCWBj[%#\nUJSFLyixR5xuHXx]kCofWBj[%#yDeTV@yXR5\neJSFLyixR5xuVsHXx]kCofj[WBj[%#yD%#eTV@yXR5tRV@o|%}kCRP\noJSFLyixR5xuVsiwHXx]kCofj[VsWBj[%#yD%#tleTV@yXR5tRofV@o|%}kCRPMJ%gV@ozozRPoz\nyJSFLyixR5xuVsiwtlHXx]kCofj[VsozWBj[%#yD%#tlkCeTV@yXR5tRofkCV@o|%}kCRPMJMd%gV@ozozRPozRPozaytlR5H?kBRP\n:JSFLyixR5xuVsiwtlt7HXx]kCofj[VsozVsWBj[%#yD%#tlkCj[eTV@yXR5tRofkCtRV@o|%}kCRPMJMdV@%gV@ozozRPozRPozozaytlR5H?kBRPtRxukCtRVsR5kCfkae\n$ for i in {1..8}; do ./blurhash_encoder $i $i openlogo-nd-100.png | wc -c; done (6)\n7\n13\n23\n37\n55\n77\n103\n133\n$ for i in {1..8}; do ./blurhash_decoder $( ./blurhash_encoder $i $i openlogo-nd-100.png ) 101 124 blur-$i.png; done (7)\n$ lsix (8)\n\n\n\n\n\nBlurHash \u306esource \u5165\u624b\n\n\nencoder build\n\n\ndecoder build\n\n\nDebian logo file \u5165\u624b\n\n\n\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u679a\u306bBlurHash \u306b\u5909\u63db\n\n\n\u30d0\u30a4\u30c8\u6570\u78ba\u8a8d\n\n\nBlurHash \u3092png \u306b\u5909\u63db\n\n\npng \u306b\u5909\u63db\u3057\u305fBlurHash \u3092\u8868\u793a\n\n\n\n\n\n\n\n\u6614\u306fhtml \u306eimg \u30bf\u30b0\u306blowsrc \u3067\u30b5\u30a4\u30ba\u306e\u5c0f\u3055\u3044\u4ee3\u66ff\u753b\u50cf\u3092\u6307\u5b9a\u3057\u305f\u308a\u3057\u3066\u3044\u307e\u3057\u305f\u304c(\u73fe\u5728\u306f\u975e\u63a8\u5968)\u305d\u308c\u3088\u308a\u3082\u5c0f\u3055\u304f\u306a\u308b\u3068\u601d\u3044\u307e\u3059\uff0e\n\n\n\n\nsayaka \u306e –force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a66\u3059\n\n\nsayaka \u3061\u3083\u3093\u306e –force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e\n\u307e\u305a\u306fbuild\uff0e\nLinux \u3067\u306ebuild \u6642\u306b\u5f15\u3063\u304b\u304b\u308a\u3084\u3059\u3044\u306e\u304cGNU Make \u3067\u306f\u306a\u304fbmake \u3092\u4f7f\u3046\u3068\u3053\u308d\uff0e\n\n\n\n$ git checkout a4e143d50ceee29a61610d1ee76e4030b0bba273\nPrevious HEAD position was d76cb2c ver 3.8.1 (2024/09/21)\nHEAD is now at a4e143d src/misskey: --force-blurhash \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002 \u753b\u50cf\u8868\u793a\u3092 Blurhash \u3060\u3051\u306b\u3059\u308b\u30e2\u30fc\u30c9\u3002\n$ ./configure\n$ bmake -DRELEASE all\n$ src/sayaka\nusage: sayaka <command> [<options...>]\n <command>\n -h,--home : Home timeline mode (needs --server and --token)\n -l,--local : Local timeline mode (needs --server)\n -p,--play=<file|-> : Playback mode\n <options>\n -s,--server=<host> : Set misskey server\n -t,--token=<file> : Set misskey access token file\n -c,--color=<color> : 256,16,8,2,1 and gray[2-256] (default:256)\n --show-cw : Open CW(Contents Warning) part\n --nsfw=<show|blur|alt|hide> : How to show NSFW contents (default:blur)\n --show-image=<yes|no|auto> : Whether to show image or not (default:auto)\n -r,--record=<file> : Record JSON to <file>\n --help-all : More details\n\n\n\nbuild \u51fa\u6765\u305f\u306e\u3067\u65e9\u901f --force-blurhash \u3092\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e\u4f8b\u3048\u3070 misskey.io \u3092\u3053\u3093\u306a\u611f\u3058\u3067\uff0e\n\n\n\n$ src/sayaka --force-blurhash -l -s misskey.io\n\n\n\n\u3053\u308c\u307e\u3067\u306f\u65e2\u5b9a\u5024\u3067\u306fNSFW \u30b3\u30f3\u30c6\u30f3\u30c4\u304cBlurHash \u3067\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304c\uff0c--force-blurhash \u3067\u306f\u5168\u3066\u306e\u30a2\u30a4\u30b3\u30f3\u753b\u50cf\u3082\u6dfb\u4ed8\u753b\u50cf\u3082BlurHash \u306b\u306a\u308a\u307e\u3059\uff0e\n\n\n\n\n\n\n\n\nNote\n\n\n\u30a2\u30ab\u30a6\u30f3\u30c8\u3084\u672c\u6587\u306b\u306f\u30e2\u30b6\u30a4\u30af\u3092\u639b\u3051\u3066\u3042\u308a\u307e\u3059\uff0e\n\n\n\n\n\nBlurHash \u3067\u753b\u50cf\u30b5\u30a4\u30ba\u304c\u5c0f\u3055\u304f\u306a\u308b\u3063\u3066\u3053\u3068\u306f\u901a\u4fe1\u6599\u3082\u30c7\u30fc\u30bf\u91cf\u3082\u5c0f\u3055\u304f\u306a\u3063\u3066\u3044\u3066\u30d7\u30a2\u306a\u56de\u7dda\u3067\u3082\u3044\u3044\u611f\u3058\u306b\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3067\u304d\u305d\u3046\u306a\u6c17\u304c\u3057\u307e\u3059\uff0e\n\n\nBlurHash \u3068Sixel \u309260\u79d2\u305a\u3064 --record \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\u671f\u5f85\u306b\u53cd\u3057\u3066BlurHash \u306e\u307b\u3046\u304c\u5927\u5206\u5927\u304d\u3044\u3067\u3059\uff0e\n\n\n\n$ timeout 60 src/sayaka --record=blurhash.rec --force-blurhash -l -s misskey.io\n$ timeout 60 src/sayaka --record=sixel.rec -l -s misskey.io\n$ ls -s *.rec\n436 blurhash.rec 44 sixel.rec\n\n\n\nttyrec \u3067\u3082\u540c\u3058\u3088\u3046\u306a\u611f\u3058\uff0e\n\n\n\n$ ttyrec -f blurhash.ttyrec -- timeout 60 src/sayaka --force-blurhash -l -s misskey.io\n$ ttyrec -f sixel.ttyrec -- timeout 60 src/sayaka -l -s misskey.io\n$ ls -s *.ttyrec\n1768 blurhash.ttyrec 228 sixel.ttyrec\n\n\n\n\u901a\u4fe1\u91cf\u306f\u3069\u3046\u3060\u308d\u3046\u3068nethogs \u30b3\u30de\u30f3\u30c9\u3067 $ sudo nethogs -P $(pgrep sayaka) -l \u306a\u611f\u3058\u3067\u898b\u3066\u307f\u308b\u3068\u3084\u306f\u308aBlurHash \u306e\u307b\u3046\u304c\u901a\u4fe1\u91cf\u304c\u591a\u3044\u3088\u3046\u306a?\n\n\nBlurHash\n\nNetHogs version 0.8.8\n\n PID USER PROGRAM DEV SENT RECEIVED\n ? root unknown TCP 435.079 11.067 kB/s\n2782477 matoken src/sayaka -.. enx349971e11a0f 0.252 6.934 kB/s\n\n TOTAL 435.331 18.001 kB/s\n\n\n\nSixel\n\nNetHogs version 0.8.8\n\n PID USER PROGRAM DEV SENT RECEIVED\n ? root unknown TCP 432.206 11.271 kB/s\n2787797 matoken src/sayaka -.. enx349971e11a0f 0.150 0.885 kB/s\n\n TOTAL 432.356 12.156 kB/s\n\n\n\n\u9332\u753b\u30c7\u30fc\u30bf\u3092\u898b\u308b\u3068\u4ef6\u6570\u304c\u9055\u3044\u307e\u3059\uff0eSixel \u306e\u3068\u304d\u306b\u306a\u306b\u304b\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u304c\u3042\u308a\u305d\u3046\u3067\u3059\uff0e\u56de\u7dda\u306e\u554f\u984c?\n\u5f8c\u3067VPS \u3067\u3082\u78ba\u8a8d\u3057\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3059\uff0e\n\n\n\n$ jq .body.type blurhash.rec | wc -l\n119\n$ jq .body.type sixel.rec | wc -l\n10", "date_published": "2025-12-24T22:37:08+09:00", "date_modified": "2025-12-25T06:45:48+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "BlurHash", "misskey", "sayaka", "Debian", "Linux", "sid" ] } ] }