{ "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/feed/json -- and add it your reader.", "next_url": "https://matoken.org/blog/category/linux/debian-linux/feed/json?paged=2", "home_page_url": "https://matoken.org/blog/category/linux/debian-linux", "feed_url": "https://matoken.org/blog/category/linux/debian-linux/feed/json", "language": "ja", "title": "Debian – 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=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": "
\u8efd\u91cfActivityPub server \u306esnac\u7528Firefox addon \u3092\u77e5\u3063\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\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\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\n\nFeel free to take a look.
\n\n\nSource code:
\n
\nhttps://codeberg.org/fidiben/SnacWer
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
\u4ee5\u4e0b\u304b\u3089Firefox\u306b\u62e1\u5f35\u6a5f\u80fd\u3092\u767b\u9332\u3057\u307e\u3059\uff0e
\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
\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
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\n\nSnacWer \u30d0\u30fc\u30b8\u30e7\u30f3 1.0.1
\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
\u3044\u3064\u3082Xfce4 \u3067\u4f7f\u3063\u3066\u3044\u308bDebian statble(trixie) \u74b0\u5883\u3067\u4e45\u3005\u306bGNOME \u74b0\u5883\u3092\u8d77\u52d5\u3057\u305f\u3089\u64cd\u4f5c\u3092\u53d7\u3051\u4ed8\u3051\u307e\u305b\u3093\uff0e
\n\u8a2d\u5b9a\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u3066\u5fa9\u65e7\u3057\u307e\u3057\u305f\uff0e
\n
GNOME \u306e\u72b6\u6cc1\u306f\u4e0a\u90e8\u306e\u6642\u8a08\u3084\u62e1\u5f35\u6a5f\u80fd\u306eRunCat \u306a\u3093\u304b\u306f\u52d5\u3044\u3066\u3044\u308b\u3051\u3069\u30ad\u30fc\u306e\u5165\u529b\u3092\u53d7\u3051\u4ed8\u3051\u305a\u64cd\u4f5c\u3067\u304d\u307e\u305b\u3093\uff0e\u30de\u30a6\u30b9\u3082\u30ab\u30fc\u30bd\u30eb\u304c\u5076\u306b\u898b\u3048\u308b\u3051\u3069\u30af\u30ea\u30c3\u30af\u3057\u3066\u3082\u4f55\u3082\u8d77\u304d\u307e\u305b\u3093\uff0e
\n\u3068\u3044\u3046\u611f\u3058\u3067\u4f7f\u3044\u7269\u306b\u306a\u308a\u307e\u305b\u3093\uff0e
\n\u5143\u3005\u307b\u3068\u3093\u3069\u4f7f\u3063\u3066\u3044\u306a\u304b\u3063\u305f\u306e\u3067\u8a2d\u5b9a\u3092\u521d\u671f\u5316\u3057\u3066\u307f\u308b\u3053\u3068\u306b\uff0e
\u307e\u305a\u306fGNOME \u304b\u3089\u3069\u3046\u306b\u304b\u3057\u3066\u629c\u3051\u307e\u3059\uff0e\u4eca\u56de\u306f\u30ad\u30fc\u5165\u529b\u3092\u53d7\u3051\u4ed8\u3051\u305aCtrl+Alt+F1 \u306a\u3093\u304b\u3067\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u3082\u964d\u308a\u308c\u306a\u3044\u306e\u3067\u56f0\u308a\u307e\u3057\u305f\u304c\uff0csshd \u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u305f\u306e\u3067\u305d\u308c\u3067\u5165\u3063\u3066\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\u30de\u30cd\u30fc\u30b8\u30e3(\u4eca\u56de\u306fLightDM) \u3092\u518d\u8d77\u52d5\u3057\u3066\u629c\u3051\u307e\u3057\u305f\uff0e
\n$ sudo service lightdm restart\n
| \n Tip \n | \n\n \n \n\n\u3082\u3057\u30ea\u30e2\u30fc\u30c8\u64cd\u4f5c\u3082\u3067\u304d\u306a\u3044\u5834\u5408Magic SysRq key \u306f\u53cd\u5fdc\u3057\u305f\u306e\u3067\u3053\u308c\u3067\u518d\u8d77\u52d5\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\uff0e \n | \n
GNOME \u304b\u3089\u629c\u3051\u305f\u5f8c\uff0cGNOME \u4ee5\u5916\u306e\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u304b\uff0c\u30b3\u30f3\u30bd\u30fc\u30eb\uff0cssh \u306a\u3069\u3067dconf \u30b3\u30de\u30f3\u30c9\u3067\u8a2d\u5b9a\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u307e\u3059\uff0e
\n$ dconf dump / > dconf.backup (1)\n$ dconf reset -f /org/gnome (2)\n
\u5ff5\u306e\u70badconf \u3092backup
\ndconf \u306egnome \u4ee5\u4e0b\u3092\u30ea\u30bb\u30c3\u30c8
\n\u3053\u306e\u5f8cGNOME \u306b\u5165\u308a\u76f4\u3059\u3053\u3068\u3067\u5fa9\u65e7\u3067\u304d\u307e\u3057\u305f\uff0e
\n
\u99c4\u76ee\u3060\u3063\u305f\u5834\u5408 dconf reset -f / \u307e\u3067\u3084\u3063\u3066\u307f\u3066\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e
\n\u305d\u308c\u3067\u3082\u99c4\u76ee\u306a\u3089$HOME \u4ee5\u4e0b\u306eGNOME \u95a2\u9023\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u6d88\u3059\u611f\u3058\u3067\u3057\u3087\u3046\u304b\uff0e
\u3053\u306e\u74b0\u5883\u306fDebian bookworm \u304b\u3089dist-upgrade \u3057\u305f\u74b0\u5883\u306a\u306e\u3067dist-uograde \u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u304a\u58ca\u308c\u305f\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e
\n\u62e1\u5f35\u6a5f\u80fd\u3082\u602a\u3057\u3044\u304b\u306a\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\u4eca\u56de\u306e\u30ea\u30bb\u30c3\u30c8\u3067\u306f\u62e1\u5f35\u6a5f\u80fd\u306f\u8a2d\u5b9a\u3055\u308c\u305f\u307e\u307e\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308b\u306e\u3067\u6050\u3089\u304f\u95a2\u4fc2\u306a\u304b\u3063\u305f\u3067\u3059\uff0e(\u62e1\u5f35\u6a5f\u80fd\u306e\u554f\u984c\u306e\u5834\u5408\u4eca\u56de\u306e\u65b9\u6cd5\u3067\u306f\u30ea\u30bb\u30c3\u30c8\u3067\u304d\u306a\u3044\u3067\u3059\u306d)
$ dpkg-query -W gnome lightdm dconf-cli\ndconf-cli 0.40.0-5\ngnome 1:48+2\nlightdm 1.32.0-6+b2\n$ lsb_release -dr\nDescription: Debian GNU/Linux 13 (trixie)\nRelease: 13\n$ arch\nx86_64\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\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
\u5b9f\u969b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306f\u3053\u3061\u3089\uff0e
\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
OCR\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
\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
\nNDLOCR \u8981NVIDIA GPU
\n\n\n\n
\n- \n
\nNDL\u53e4\u5178\u7c4dOCR-Lite\u306e\u3088\u3046\u306bNDLOCR-Lite\u304c\u51fa\u306a\u3044\u304b\u306a?
\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 :)
\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
\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$ 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
\u30d0\u30a4\u30ca\u30ea\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u5165\u624b
\nhash
\nfuse-archive \u3067\u30a2\u30c9\u30db\u30c3\u30af\u306b\u5c55\u958b
\n\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3092\u78ba\u8a8d
\nNDLOCR-Lite \u5b9f\u884c
\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 Note \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
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
$ 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$ 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\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
--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)
$ 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
\u3053\u3053\u3067\u306e\u30d5\u30a1\u30a4\u30eb\u7fa4\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e
\nOCR \u5bfe\u8c61\u753b\u50cf
\nOCR \u7d50\u679c
\n\u53ef\u8996\u5316\u753b\u50cf(\u30aa\u30d7\u30b7\u30e7\u30f3)
\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
\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$ 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
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 Note \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
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
$ 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}\"\nImagemagick \u306eimport \u30b3\u30de\u30f3\u30c9\u3067\u4efb\u610f\u306e\u5834\u6240\u3092\u30ad\u30e3\u30d7\u30c1\u30e3
\n\u30c7\u30d0\u30c3\u30b0\u7528\u306b\u753b\u50cf\u51fa\u529b
\nNDLOCR-Lite \u3067\u6587\u5b57\u8d77\u3053\u3057
\n\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u683c\u7d0d
\nnotify-send \u3067\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306b\u901a\u77e5
\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 Note \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
\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~/.config/i3/config
\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
\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
$ 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
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
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
#kagolug 2025.03 \u3067\u767a\u8868\u3057\u305f\u3068\u304d\u306e\u8cc7\u6599\u306f\u3053\u3061\u3089\uff0e
\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$ w3m -dump http://100.121.84.16:5000/ | grep ^v\nv0.54.1\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> 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

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
* Watch protocol is not permitted or invalid URL format\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
\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
ALLOW_IANA_RESTRICTED_ADDRESSES=true \u3067\u9003\u3052\u3089\u308c\u308b\u3088\u3046\u306a\u306e\u3067\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3059\uff0e
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
$ docker compose --file ~/src/changedetection.io/docker-compose.yml up -d\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$ 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
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
\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$ 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
*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--verbose \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u307f\u307e\u3057\u305f\u304c\u3088\u304f\u308f\u304b\u308a\u307e\u305b\u3093
[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
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\n\n\n[FreeTubeApp/FreeTube#7484](https://github.com/FreeTubeApp/FreeTube/pull/7484)
\n\n\nFreeTube is adding a PO token to their subtitles requests. But FreeTube doesn’t use auto-translated subs AFAICT.
\n
\n# Manual subtitles and original language automatic captions are not affected by this HTTP Error 429 issue.\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
\n--sub-langsand--write-subsvs--write-auto-subsarguments.\n\nBut if you want translated auto subs,
\n
\n# there are 2 known ways of avoiding this HTTP Error 429:\n\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.
\n--sleep-subtitles 60\n\n(Either of these 2 methods will work individually, you do not need to combine them)
\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
$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig --sleep-subtitles 60\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$ mpv --sub-files='CDImage - Cam [yYgF87nqyKI].en.vtt:CDImage - Cam [yYgF87nqyKI].ja.vtt' --secondary-sid=2 'CDImage - Cam [yYgF87nqyKI].webm'\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
snac\u306e\u305f\u3081\u306e\u9759\u7684\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092apache2 httpd \u3067\u8a2d\u5b9a\u3057\u3066\u30ab\u30b9\u30bf\u30e0\u7d75\u6587\u5b57\u306e\u8a2d\u7f6e\u5834\u6240\u306b\u5229\u7528\u3057\u3066\u3044\u307e\u3059\uff0e
\n\u5b9f\u306f\u8a2d\u5b9a\u305b\u305a\u3068\u3082\u30e6\u30fc\u30b6\u3054\u3068\u306b\u9759\u7684\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u3042\u308b\u306e\u306b\u6c17\u3065\u304d\u307e\u3057\u305f\uff0e
\n\n
\u304d\u3063\u304b\u3051\u306f\u3053\u3061\u3089\uff0e
\n\n\n\n\n\nUse https://snac.rohrmoser.name/social/marcus/s/readme.txt (i.e. add a /s/ between your account id and the file).
\n
${SNAC-URL}/${USER}/s/ \u306e\u4e0b\u304c\u4f7f\u3048\u308b\u3088\u3046\u3067\u3059\uff0e
\n\u5b9f\u969b\u306b\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e
\n\n\n\n$ cd ${SNAC-DATA}/user/${USER}/static <.>
\n
\n$ echo test > test <.>
\n$ w3m -dump_extra https://snac.matoken.org/matoken/s/test | grep ^HTTP/ -A99 <.>
\nHTTP/1.1 200 OK
\nDate: Wed, 18 Feb 2026 20:50:37 GMT
\nServer: Apache/2.4.66 (Debian)
\ncontent-type: application/octet-stream
\nx-creator: snac/2.90
\netag: W/”snac-1771444525″
\naccess-control-allow-origin: *
\naccess-control-allow-headers: *
\naccess-control-expose-headers: Link
\nContent-Security-Policy: script-src ;
\ncontent-length: 5
\nConnection: close\n\ntest
\n
\u30e6\u30fc\u30b6\u30fc\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e0b\u306e static \u306b\u79fb\u52d5
\u30c6\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210
\n\u30e6\u30fc\u30b6\u30fc\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e0b\u306e s \u4ee5\u4e0b\u306e\u8a72\u5f53\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d
\u3068\u3044\u3046\u3053\u3068\u3067snac server \u306e ${SNAC-DATA}/user/${USER}/static \u4ee5\u4e0b\u306b\u7f6e\u3044\u305f\u30d5\u30a1\u30a4\u30eb\u304c ${SNAC-URL}/${USER}/s/ \u4ee5\u4e0b\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\uff0e
\ntheme \u3067\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\u304c\uff0ctheme \u4ee5\u5916\u306e\u30d5\u30a1\u30a4\u30eb\u3082ok \u306a\u3093\u3067\u3059\u306d\uff0e
$ sudo -u snac ~snac/snac2/snac state ~snac/snac-data\nserver: snac.matoken.org (snac/2.90)\nuptime: 1:11:46:03\njob fifo size (cur): 0\njob fifo size (peak): 11\nthread #0 state: waiting\nthread #1 state: waiting\nthread #2 state: waiting\nthread #3 state: waiting\n$ lsb_release -dr\nNo LSB modules are available.\nDescription: Debian GNU/Linux 12 (bookworm)\nRelease: 12\n$ arch\nx86_64\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
\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\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
\u4fdd\u8b77\u3057\u305f\u30bf\u30d6\u306b\u306f
\u30a2\u30a4\u30b3\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e
\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
\u30b5\u30fc\u30d0\u304cdisk full \u306b\u306a\u308a\u8abf\u3079\u305f\u3089Nextcloud \u304c\u81ea\u52d5\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3068\u81ea\u52d5\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\uff0c\u3057\u304b\u3057\u5931\u6557\u3068\u3044\u3046\u306e\u3092\u6bce\u65e5\u7e70\u308a\u8fd4\u3057\u3066disk full \u306b\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e
\n\n
\u306f\u3058\u30811\u6708\u307b\u3069\u524d\u306bdisk full \u306b\u306a\u308a\uff0ccron \u3067\u52d5\u304b\u3057\u3066\u3044\u308b\u30c7\u30a4\u30ea\u30fc\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u6e9c\u307e\u3063\u3066\u3044\u308b\u305b\u3044\u304b\u3068\u601d\u3044\u305d\u3053\u3092\u6383\u9664\u3057\u305f\u306e\u3067\u3059\u304c\u4eca\u6708\u306b\u306a\u3063\u3066\u307e\u305fdisk full \u306b\uff0e
\ndu \u30b3\u30de\u30f3\u30c9\u306a\u3069\u3067\u78ba\u8a8d\u3059\u308b\u3068Nextcloud \u306e\u4e0b\u306e data/updater-${instanceid}/backups/ \u306b\u6bce\u65e5Nextcloud \u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u4f5c\u3089\u308c\u3066\u3044\u307e\u3059\uff0e\u3053\u308c\u306e\u305b\u3044\u3067disk full \u306b\u306a\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3057\u305f\uff0e
| \n Note \n | \n\n${instanceid} \u306b\u3064\u3044\u3066\u306f config/config.php \u306e 'instanceid' \u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\uff0e\n | \n
\u3053\u3053\u306bNextcloud \u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u4f5c\u3089\u308c\u308b\u306e\u306fNextcloud \u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u6642\u3067\u3059\uff0e\u307e\u305a\u306f\u624b\u52d5\u3067\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\uff0e
\n$ sudo -u www-data php updater/updater.phar\n\n :\n\n[\u2718] Verify integrity failed\nThere are more files than the downloaded archive in the downloads/ folder.\n\nUpdate failed. To resume or retry just execute the updater again.\n
\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305fNextcloud \u30a2\u30fc\u30ab\u30a4\u30d6\u304c\u304a\u304b\u3057\u305d\u3046\u3067\u3059\uff0e\u8a73\u7d30\u3092\u77e5\u308b\u305f\u3081\u306b\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e
\n2026-02-08T22:30:46+0000 T8hDMIut3r [info] storage location: /var/www/files.matoken.org/data/updater-ocws62au2wl3/downloads/\n2026-02-08T22:30:57+0000 T8hDMIut3r [info] end of verifyIntegrity()\n
\u3053\u306e storage location \u306e\u4e0b\u3092\u898b\u308b\u3068\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u304c\u6b8b\u3063\u3066\u3044\u3066\u3053\u308c\u304c\u602a\u3057\u305d\u3046\u3067\u3059\uff0e
$ ls -lA /var/www/files.matoken.org/data/updater-ocws62au2wl3/downloads/\n\u5408\u8a08 610548\n-rw-r--r-- 1 www-data www-data 312581794 1\u6708 16 04:09 nextcloud-32.0.4.zip\n-rw-r--r-- 1 www-data www-data 312597357 2\u6708 9 07:24 nextcloud-32.0.5.zip\n
\u53e4\u3044\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u524a\u9664\u3057\u307e\u3059\uff0e
\n$ rm /var/www/files.matoken.org/data/updater-ocws62au2wl3/downloads/nextcloud-32.0.4.zip\n
\u518d\u5ea6\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u8a66\u307f\u307e\u3059\uff0e(\u5148\u7a0b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u53d6\u5f97\u3057\u3066\u3044\u308b\u306e\u3067\u4eca\u56de\u306f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u30b9\u30ad\u30c3\u30d7)
\n$ sudo -u www-data php updater/updater.phar --no-backup\n\n :\n\n\"occ upgrade\" finished\n\nKeep maintenance mode active? [y/N]\nMaintenance mode disabled\n\nMaintenance mode is disabled\n
\u4eca\u5ea6\u306f\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u6b63\u5e38\u306b\u5b8c\u4e86\u3057\u307e\u3057\u305f\uff0e
\n
\u6b21\u306e\u65e5\u306b\u78ba\u8a8d\u3057\u3066\u3082\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u4f5c\u6210\u3055\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u306e\u3067\u3053\u308c\u3067\u3042\u305f\u308a\u306e\u3088\u3046\u3067\u3059\uff0e
\n$ sudo -u www-data php /var/www/files.matoken.org/occ --version\nNextcloud 32.0.3\n$ lsb_release -dr\nNo LSB modules are available.\nDescription: Debian GNU/Linux 12 (bookworm)\nRelease: 12\n$ arch\nx86_64\n
GNU coreutils 9.10 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e
\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
\n- \n
\npaste(1) is now multi-byte character aware
\n
\n
\u307e\u305a\u306f\u9069\u5f53\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e
\n$ echo '1\n2\n3' > num\n$ echo '\u3044\n\u308d\n\u306f' > data\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$ paste --version | head -1\npaste (GNU coreutils) 9.7\n$ paste num data\n1 \u3044\n2 \u308d\n3 \u306f\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\n'paste' now supports multi-byte --delimiters characters.\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\u3068\u3044\u3046\u3053\u3068\u3067\u518d\u5ea6\uff0c\u4eca\u5ea6\u306f\u30c7\u30df\u30ea\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059\uff0e
\n, \u3092\u6307\u5b9a$ paste num data -d,\n1,\u3044\n2,\u308d\n3,\u306f\n
\uff1d \u3092\u6307\u5b9a$ paste num data -d\uff1d\n1\ufffd\ufffd\n2\ufffd\ufffd\n3\ufffd\ufffd\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$ 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
$ ./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
\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
$ 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
\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
\u4ee5\u524d\u306eblog \u30a8\u30f3\u30c8\u30ea\u3092\u78ba\u8a8d\u3059\u308b\u3068\uff0c
\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\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$ 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
$ 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 Note \n | \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
\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$ 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
\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$ build/vt analysis YTg3MzBiNGEwOWFmODUxMjgwYmFjOGI0YjE1YmQ4MTE6MTc3MDE5NDcyOA==\nQuota exceeded\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.
\n
\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.
\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.
\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
\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\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
\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
\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
\u65e2\u5b58\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664
\n\u65e2\u5b58\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8
\n\u65b0\u898f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210
\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
\nAPI key \u3092\u53d6\u5f97\u3057\u3066 vt init \u3092\u5b9f\u884c\u3057\u3066API key \u518d\u767b\u9332
\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
\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
\u3053\u308c\u3067\u666e\u901a\u306b\u52d5\u304b\u305b\u305d\u3046\u306a\u611f\u3058\u3067\u3059\uff0e
\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
$ 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
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
\u30ed\u30b0\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e
\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
/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
$ 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
\u30c7\u30fc\u30e2\u30f3\u3092\u518d\u8d77\u52d5\u3057\u3066\u8a2d\u5b9a\u3092\u53cd\u6620\u3057\u307e\u3059\uff0e
\n$ sudo systemctl restart systemd-logind\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$ 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
\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
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$ 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
\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\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e
\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
\u52d5\u3044\u3066\u3044\u308b\u69d8\u5b50\u306f\u4ee5\u4e0b\u306easciinema \u3092\uff0e
\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
\u4e00\u6642\u505c\u6b62/\u518d\u958b
\n\u505c\u6b62/\u30b3\u30de\u9001\u308a(p\u3067\u518d\u958b)
\n\u518d\u521d\u671f\u5316
\n\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a/\u975e\u8868\u793a
\n\u7d42\u4e86
\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
\u3053\u306e\u30d8\u30eb\u30d7\u3092\u8868\u793a
\n\n\n\n\n\n\n-v, --version Show program version\n
\u30d0\u30fc\u30b8\u30e7\u30f3\u8868\u793a
\n\n\n\n\n\n\n-q, --polys=<int> Set number of polygons (default=2, max=16)\n
\u30dd\u30ea\u30b4\u30f3\u6570
\n\n\n\n\n\n\n-p, --points=<int> Set number of points per polygon (default=4, max=16)\n
\u30dd\u30a4\u30f3\u30c8\u6570(\u4f8b\u3048\u30703\u3067\u4e09\u89d2\u5f62\uff0c4\u3067\u56db\u89d2\u5f62)
\n\n\n\n\n\n\n-t, --trails=<int> Set number of trails lines (default=20, max=64)\n
\u30c8\u30ec\u30a4\u30eb\u30e9\u30a4\u30f3\u306e\u6570
\n\n\n\n\n\n\n-f, --fps=<int> Set frames per second (default=60)\n
1\u79d2\u3042\u305f\u308a\u306e\u30d5\u30ec\u30fc\u30e0\u6570
\n\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
\u6700\u5927\u901f\u5ea6
\n\n\n\n\n\n\n-s, --no-status Hide status text\n
\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u96a0\u3059
\n\n\n\n\n\n\n-i, --trail-incr=<int> Render every nth trail (default=4, max=64)\n
n\u756a\u76ee\u306e\u30c8\u30ec\u30a4\u30eb\u3054\u3068\u306b\u63cf\u753b
\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\u307e\u305a\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u3092\u8a18\u8ff0\u3057\u307e\u3059\uff0e
\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 Note \n | \n\n \n \ntmux \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f \n\n \n\n \n~/.tmux.conf\n $XDG_CONFIG_HOME/tmux/tmux.conf\n ~/.config/tmux/tmux.conf\n \n \nbyobu \u304b\u3089\u8d77\u52d5\u3057\u3066\u3044\u308b\u5834\u5408\u306f \n\n \n\n \n~/.byobu/.tmux.conf\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
$ tmux source ~/.byobu/.tmux.conf\n

\u8efd\u91cfActivityPub Server \u306esnac 2.89 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e
\nThe Real Grunfink (@grunfink@comam.es) \u4f5c\u8005\u306etoot
\nsnac2/RELEASE_NOTES.md at master – grunfink/snac2 – Codeberg.org
\ngrunfink/snac2: A simple, minimalistic ActivityPub instance written in portable C – Codeberg.org tag 2.89
\n\n
\n\n\n\n\n## 2.89
\n\n\nFixed crash in pronouns processing (contributed by byte).
\n\n\nAdded counters in the people page (contributed by byte).
\n\n\nNew command-line option
\nrefresh, to refresh all follower and followingActorobjects, marking them as broken if they are.
\u4eca\u56de\u306e\u65b0\u6a5f\u80fd\u306f2\u3064\uff0e
\npeople \u30da\u30fc\u30b8\u306b\u30ab\u30a6\u30f3\u30bf\u30fc\u3092\u8ffd\u52a0
\n
\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u30d5\u30a9\u30ed\u30ef\u30fc\u3068\u30d5\u30a9\u30ed\u30fc\u4e2d\u306e\u30a2\u30af\u30bf\u30fc\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3059\u308b refresh \u3092\u8ffd\u52a0\uff0e
$ snac | grep refresh\nrefresh {basedir} {uid} Refreshes all actors\n$ snac snac-data matoken\n\u7279\u306b\u554f\u984c\u304c\u306a\u304b\u3063\u305f\u306e\u304b\u4f55\u3082\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff0e
\nDebian package \u306f\u307e\u30602.88 \u3067\u3059\uff0e
\n$ rmadison snac2\nsnac2 | 2.75-2~bpo12+1 | oldstable-backports | source, amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x\nsnac2 | 2.75-2~bpo12+1 | oldstable-backports-debug | source\nsnac2 | 2.75-2 | stable | source, amd64, arm64, armel, armhf, i386, ppc64el, riscv64, s390x\nsnac2 | 2.88-1~bpo13+1 | stable-backports | source, amd64, arm64, armel, armhf, i386, ppc64el, riscv64, s390x\nsnac2 | 2.88-1~bpo13+1 | stable-backports-debug | source\nsnac2 | 2.88-1 | testing | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x\nsnac2 | 2.88-1 | unstable | source, amd64, arm64, armhf, i386, loong64, ppc64el, riscv64, s390x\nsnac2 | 2.88-1 | unstable-debug | source\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\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
\u307e\u305a\u691c\u7d22\u3057\u3066\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e
\n\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
\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~/.mlterm/main \u306b\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u8ffd\u52a0input_method = fcitx\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
doc/ja/README.ja \u3088\u308ao 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
mlterm \u306e\u30ed\u30b0\u3092\u898b\u308b\u3068fcitx \u304c\u8aad\u307f\u8fbc\u3081\u3066\u3044\u307e\u305b\u3093\uff0e
\n~/.mlterm/msg.logJan 21 19:22:50[3188254] ERROR(Resource temporarily unavailable): fcitx: Could not load.\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
$ 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

$ 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
\u30df\u30cb\u30de\u30e0\u3067\u8efd\u91cf\u306aActivityPub Server \u306esnac 2.88 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e
\n\n
\n\n\n\n2.88
\n\n\nIf disable_emojireact is set to true in server.json, EmojiReacts (incoming and outgoing) are totally disabled.
\n\n\nNew command-line option top_ten, that returns the top ten most popular posts by a user (ordered by the sum of likes and boosts) (contributed by aov).
\n\n\nAdded a new set of per-user muted words; if a post contains any of them, it’s hidden behind a dropdown (contributed by byte).
\n\n\nIf an account has a metadata named pronouns, it’s shown by the name (contributed by violette).
\n\n\nMastodon API: children of a post are returned recursively, not just the first level (contributed by violette).
\n\n\nImplemented optional metadata stripping for images and videos using external tools (contributed by Stefano Marinelli).
\n
\u305d\u308c\u305e\u308c\u306ecommit \u306f\u3053\u306e\u3042\u305f\u308a\u3067\u3057\u3087\u3046\u304b
\n\u4eca\u56de\u306e\u66f4\u65b0\u3067\uff0c\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e server.json \u306e\u4e2d\u306b disable_emojireact \u304c\u8a2d\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u3053\u308c\u3092 true \u306b\u3059\u308b\u3053\u3068\u3067\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u9001\u53d7\u4fe1\u304c\u7121\u52b9\u5316\u3067\u304d\u307e\u3059\uff0e
\n\u81ea\u5206\u306f\u6709\u52b9\u306b\u3057\u305f\u3044\u306e\u3067\u3053\u306e\u8a2d\u5b9a\u306f\u30b9\u30eb\u30fc\uff0e
$ man doc/snac.8 | grep -A1 disable_emojireact\n disable_emojireact\n If set to true, all EmojiReact support (for input and output) is disabled.\n
top_ten \u3068\u3044\u3046\u65b0\u3057\u3044\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u5b9f\u88c5\u3055\u308c\u307e\u3057\u305f\uff0e\u3053\u308c\u3092\u5b9f\u884c\u3059\u308b\u3068\u5bfe\u8c61\u30e6\u30fc\u30b6\u30fc\u306e\u3044\u3044\u306d\u3068\u30d6\u30fc\u30b9\u30c8\u6570\u304b\u3089\u6700\u3082\u4eba\u6c17\u306e\u3042\u3063\u305f\u6295\u7a3f\u306e\u30c8\u30c3\u30d710\u304c\u8868\u793a\u3067\u304d\u307e\u3059\uff0e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u6307\u5b9a\u4ef6\u6570\u306b\u3082\u3067\u304d\u307e\u3059\uff0e
$ ./snac2/snac top_ten\nsnac 2.88 - A simple, minimalistic ActivityPub instance\nCopyright (c) 2022 - 2026 grunfink et al. / MIT license\n\ntop_ten {basedir} {uid} [{N}] Prints the most popular posts\n$ ./snac2/snac top_ten snac-data matoken 5\nhttps://snac.matoken.org/matoken/p/1768641700.668031 1\u2605 0\u21ba\nhttps://snac.matoken.org/matoken/p/1768600460.460220 0\u2605 0\u21ba\nhttps://snac.matoken.org/matoken/p/1768690681.713879 0\u2605 0\u21ba\nhttps://snac.matoken.org/matoken/p/1768690814.893464 0\u2605 0\u21ba\nhttps://snac.matoken.org/matoken/p/1768690913.716133 0\u2605 0\u21ba\nman doc/snac.1 | grep -A1 top_tentop_ten basedir uid [N]\n Returns the ids of the top ten (or top N) most popular posts (considering the sum of likes and boosts).\n
\u30e6\u30fc\u30b6\u30fc\u3054\u3068\u306b\u30df\u30e5\u30fc\u30c8\u30ef\u30fc\u30c9\u304c\u8a2d\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u6295\u7a3f\u306b\u8a2d\u5b9a\u30ef\u30fc\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u305f\u5834\u5408\u96a0\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e
\n\u8a2d\u5b9a\u306f\uff0c\u5bfe\u8c61\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u300cprivate\u300d → \u300cMuted words…\u300d\u306b\u3042\u308a\u307e\u3059\uff0e

$ man doc/snac.5 | grep mutedmuted/ This directory contains files which names are hashes of muted actors. The content is a line containing the actor URL. Messages from these actors will be ignored on input and not shown in any timeline.\n
\u5916\u90e8\u30c4\u30fc\u30eb\u3092\u5229\u7528\u3057\u3066\u753b\u50cf\u3068\u30d3\u30c7\u30aa\u304b\u3089\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u9664\u53bb\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e
\n\u65e2\u5b9a\u5024\u3067\u306f\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\u6709\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f\uff0cserver.json \u3067 \"strip_exif\": true, \u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff0e
\n\u753b\u50cf\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u9664\u53bb\u306b\u306fImageMagick\u306emogrify \u3092\uff0c\u52d5\u753b\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u9664\u53bb\u306b\u306fffmpeg \u3092\u5229\u7528\u3057\u307e\u3059\uff0e\u5c0e\u5165\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u5c0e\u5165\u304c\u5fc5\u8981\u3067\u3059\uff0e
\n\u5916\u90e8\u30c4\u30fc\u30eb\u304c\u30d1\u30b9\u306e\u901a\u3063\u3066\u3044\u306a\u3044\u5834\u6240\u306b\u3042\u308b\u5834\u5408\u306f\uff0cmogrify_path, ffmpeg_path \u3067\u6307\u5b9a\u53ef\u80fd\u3067\u3059\uff0e
server.json \u8a2d\u5b9a\u4f8b\"strip_exif\": true,\n \"mogrify_path\": \"/usr/local/bin/mogrify\",\n \"ffmpeg_path\": \"/usr/local/bin/ffmpeg\",\n
\u5b9f\u969b\u306bexif \u4ed8\u304d\u306e\u753b\u50cf\u3092\u6295\u7a3f\u3057\u3066\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\uff0e
\n$ wget https://raw.githubusercontent.com/ianare/exif-samples/refs/heads/master/jpg/Pentax_K10D.jpg\n$ exif Pentax_K10D.jpg\nEXIF tags in '/home/matoken/Downloads/Pentax_K10D.jpg' ('Intel' byte order):\n--------------------+----------------------------------------------------------\nTag |Value\n--------------------+----------------------------------------------------------\nManufacturer |PENTAX Corporation\nModel |PENTAX K10D\nOrientation |Top-left\nX-Resolution |350\nY-Resolution |350\nResolution Unit |Inch\nSoftware |GIMP 2.4.5\nDate and Time |2008:07:31 15:56:49\nCopyright |Laitche (This file is in the public domain.) (Photographer\nXP Author |www.laitche.com\nCompression |JPEG compression\nX-Resolution |72\nY-Resolution |72\nResolution Unit |Inch\nExposure Time |1/180 sec.\nF-Number |f/11.0\nExposure Program |Aperture priority\nISO Speed Ratings |200\nExif Version |Exif Version 2.21\nDate and Time (Origi|2008:05:04 16:47:24\nDate and Time (Digit|2008:05:04 16:47:24\nExposure Bias |0.00 EV\nMetering Mode |Pattern\nFlash |Flash did not fire, compulsory flash mode\nFocal Length |90.0 mm\nFlashPixVersion |FlashPix Version 1.0\nColor Space |sRGB\nPixel X Dimension |100\nPixel Y Dimension |72\nSensing Method |One-chip color area sensor\n--------------------+----------------------------------------------------------\nEXIF data contains a thumbnail (1349 bytes).\nexif \u4ed8\u304d\u306e\u753b\u50cf\u3092\u6295\u7a3f\u3057\u307e\u3059\uff0e
\n
\u6295\u7a3f\u3055\u308c\u305f\u753b\u50cf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u78ba\u8a8d\u3059\u308b\u3068exif \u306f\u6d88\u3048\u3066\u3044\u307e\u3057\u305f\uff0e
\n$ wget http://127.0.0.1:8001/test/s/post-d2e2931a72bbe1cafaaf94e82ea27e66.jpg\n$ exif ./post-d2e2931a72bbe1cafaaf94e82ea27e66.jpg\nCorrupt data\nThe data provided does not follow the specification.\nExifLoader: The data supplied does not seem to contain EXIF data.\n
\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b3\u30de\u30f3\u30c9\u3092\u767a\u884c\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e
\nxs *cmd = xs_fmt(\"cd \\\"%s\\\" && %s -auto-orient -strip \\\"%s\\\" 2>/dev/null\", srv_basedir, mp, r_fn);\n
\t /* -map_metadata -1 strips all global metadata */\n\t /* -c copy copies input streams without re-encoding */\n\t /* we don't silence stderr so we can debug issues */\n\t /* we explicitly cd to srv_basedir to ensure relative paths work */\n\t xs *cmd = xs_fmt(\"cd \\\"%s\\\" && %s -y -i \\\"%s\\\" -map_metadata -1 -c copy \\\"%s\\\"\", srv_basedir, fp, r_fn, tmp_fn);\n
man doc/snac.8 | grep -A1 metadata$ man doc/snac.8 | grep strip_exif -A7\n strip_exif If set to true, EXIF and other metadata will be stripped from uploaded images (jpg, png, webp, heic, avif, tiff, gif, bmp) and videos (mp4, m4v, mov, webm, mkv, avi). This requires the mogrify (from ImageMagick) and\n ffmpeg tools to be installed. If snac cannot find or execute these tools at startup, it will refuse to run.\n\n mogrify_path\n Overrides the default \"mogrify\" command name or path. Use this if the tool is not in the system PATH or has a different name.\n\n ffmpeg_path\n Overrides the default \"ffmpeg\" command name or path. Use this if the tool is not in the system PATH or has a different name.\n
\u7121\u6599\u3067\u8a3c\u660e\u66f8\u3092\u767a\u884c\u3067\u304d\u308bLet’s Encrypt \u3067\u77ed\u671f\u8a3c\u660e\u66f8\u3068 IP \u30a2\u30c9\u30ec\u30b9\u8a3c\u660e\u66f8\u306e\u4e00\u822c\u63d0\u4f9b\u304c\u958b\u59cb\u3055\u308c\u307e\u3057\u305f\uff0e
\n\n\n\n\n\nShort-lived and IP address certificates are now generally available from Let\u2019s Encrypt. These certificates are valid for 160 hours, just over six days. In order to get a short-lived certificate subscribers simply need to select the \u2018shortlived\u2019 certificate profile in their ACME client.
\n
\u8208\u5473\u304c\u3042\u308b\u306e\u3067\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\n\n
certbot \u30b3\u30de\u30f3\u30c9\u3067\u8a66\u305d\u3046\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0cDebian package\u7248\u306ecertbot \u306funstable \u3067\u30824.0.0 \u3067\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\uff0e
\n$ certbot --ip-address\nusage:\n certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...\n\nCertbot can obtain and install HTTPS/TLS/SSL certificates. By default,\nit will attempt to use a webserver both for obtaining and installing the\ncertificate.\ncertbot: error: unrecognized arguments: --ip-address\n$ certbot --version\ncertbot 4.0.0\n$ rmadison certbot\ncertbot | 1.12.0-2 | oldoldstable | all\ncertbot | 2.1.0-4 | oldstable | all\ncertbot | 4.0.0-2 | stable | all\ncertbot | 4.0.0-2 | testing | all\ncertbot | 4.0.0-2 | unstable | all\n
2\u65e5\u524d\u306e 58724f6 \u3067Commit \u3055\u308c\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e
\n\u3068\u3044\u3046\u3053\u3068\u3067Developer Guide \u3092\u898b\u306a\u304c\u3089source \u304b\u3089\u5c0e\u5165\u3057\u3066\u8a66\u3057\u307e\u3057\u305f\uff0e
\n$ sudo apt install python3-dev python3-venv libaugeas-dev gcc (1)\n$ git clone https://github.com/certbot/certbot (2)\n$ cd certbot\n$ git log --pretty=oneline -1\n58724f68ec46c57dd3c3c8ed4ae686c2d7ad893b (HEAD -> 58724f6) Add CLI flag --ip-address (#10495)\n$ python3 tools/venv.py (3)\n$ source venv/bin/activate (4)\n$ which certbot\n/home/matoken/src/certbot/venv/bin/certbot\n$ certbot --version\ncertbot 5.3.0.dev0\n
\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u5c0e\u5165
\nsource \u5165\u624b
\nbuild
\ncertbot\u74b0\u5883\u306b\u5165\u308b
\n$ certbot help all | grep -A2 -- --ip-address\n --ip-address IP_ADDRESSES\n IP addresses to include. For multiple IP addresses you\n can use multiple --ip-address flags. All IP addresses\n will be included as Subject Alternative Names on the\n certificate. (default: [])\n$ certbot help all | grep -A8 -- --preferred-profile\n --preferred-profile PREFERRED_PROFILE\n Request the given profile name from the ACME server,\n or fallback to default. If the given profile name\n exists in the ACME directory, use it to request a a\n certificate. Otherwise, fall back to requesting a\n certificate without a profile (which means the CA will\n use its default profile). This allows renewals to\n succeed even if the CA deprecates and removes a given\n profile. (default: None)\n
$ sudo bash -c \"source venv/bin/activate && certbot certonly --ip-address 84.247.152.162 --preferred-profile shortlived\"\n
$ sudo cat /etc/letsencrypt/live/84.247.152.162/cert.pem | openssl x509 -noout -issuer -subject -dates\nissuer=C=US, O=Let's Encrypt, CN=YE2\nsubject=\nnotBefore=Jan 18 23:06:01 2026 GMT\nnotAfter=Jan 25 15:06:00 2026 GMT\n$ sudo cat /etc/letsencrypt/live/84.247.152.162/cert.pem | openssl x509 -noout -text\nCertificate:\n Data:\n Version: 3 (0x2)\n Serial Number:\n 06:e7:4e:65:fe:41:f7:9b:9e:38:12:12:64:13:85:b4:f3:dd\n Signature Algorithm: ecdsa-with-SHA384\n Issuer: C=US, O=Let's Encrypt, CN=YE2\n Validity\n Not Before: Jan 18 23:06:01 2026 GMT\n Not After : Jan 25 15:06:00 2026 GMT\n Subject:\n Subject Public Key Info:\n Public Key Algorithm: id-ecPublicKey\n Public-Key: (256 bit)\n pub:\n 04:d9:d9:68:d2:fe:7b:09:0d:c4:97:1e:fc:e4:1e:\n 65:50:90:cc:63:ec:6a:98:a3:5c:77:b6:d0:33:f5:\n 4d:8f:ec:38:d5:e8:1d:01:75:fb:d6:93:15:b9:f3:\n f8:7e:a4:a9:7b:bf:d7:4d:a3:5e:d0:ca:8f:74:e5:\n 7a:98:bc:8e:9e\n ASN1 OID: prime256v1\n NIST CURVE: P-256\n X509v3 extensions:\n X509v3 Key Usage: critical\n Digital Signature\n X509v3 Extended Key Usage:\n TLS Web Server Authentication\n X509v3 Basic Constraints: critical\n CA:FALSE\n X509v3 Authority Key Identifier:\n B9:59:F2:8E:CF:22:F0:86:D3:37:48:FF:76:14:18:BA:82:D8:55:87\n Authority Information Access:\n CA Issuers - URI:http://ye2.i.lencr.org/\n X509v3 Subject Alternative Name: critical\n IP Address:84.247.152.162\n X509v3 Certificate Policies:\n Policy: 2.23.140.1.2.1\n X509v3 CRL Distribution Points:\n Full Name:\n URI:http://ye2.c.lencr.org/94.crl\n\n CT Precertificate SCTs:\n Signed Certificate Timestamp:\n Version : v1 (0x0)\n Log ID : 0E:57:94:BC:F3:AE:A9:3E:33:1B:2C:99:07:B3:F7:90:\n DF:9B:C2:3D:71:32:25:DD:21:A9:25:AC:61:C5:4E:21\n Timestamp : Jan 19 00:04:31.276 2026 GMT\n Extensions: none\n Signature : ecdsa-with-SHA256\n 30:45:02:20:19:47:12:58:F2:D7:9C:08:A5:0D:C0:5B:\n F0:E7:DF:73:0F:64:77:B2:39:39:A4:3C:A1:D3:F0:39:\n 4E:7B:0D:91:02:21:00:87:BA:CE:E6:6E:F6:D3:52:D2:\n BC:C4:ED:BE:26:6F:DE:BC:B7:17:5F:B6:47:4A:82:75:\n A9:95:56:A0:68:FD:1F\n Signed Certificate Timestamp:\n Version : v1 (0x0)\n Log ID : E3:23:8D:F2:8D:A2:88:E0:AA:E0:AC:F0:FA:90:C9:85:\n F0:B6:BF:F5:D2:A5:27:B0:01:FC:1C:44:58:C4:B6:E8\n Timestamp : Jan 19 00:04:31.523 2026 GMT\n Extensions: 00:00:05:00:2F:CD:F8:E5\n Signature : ecdsa-with-SHA256\n 30:46:02:21:00:CD:4B:99:89:27:23:A9:B5:4E:68:D9:\n A0:59:63:45:F5:8F:6A:5C:1F:C2:39:24:AF:60:E4:25:\n FF:E6:53:08:4E:02:21:00:DE:9F:73:AB:35:BC:7D:5D:\n E7:7A:CB:DE:A7:25:FE:2E:09:A3:2A:33:6E:3B:E4:4E:\n D7:AD:67:B9:02:E5:36:B8\n Signature Algorithm: ecdsa-with-SHA384\n Signature Value:\n 30:64:02:30:09:90:c5:7b:2d:7c:21:7e:7a:21:77:3a:2d:8e:\n cd:a1:4d:d1:5e:08:2f:8c:e7:b9:ad:19:39:33:d7:67:41:76:\n 68:39:26:f5:cf:8e:4d:42:5e:cf:45:69:e2:8a:18:ef:02:30:\n 2b:7f:6c:90:27:d1:e5:b1:dd:a2:2a:cb:20:d4:8c:27:0c:7c:\n 6d:9b:06:c8:52:bd:23:d6:aa:83:61:f5:13:fd:77:55:e9:ab:\n 29:e2:bd:82:84:4d:4f:81:4b:3b:76:8a\n
$ echo $(( $( date +%s --date 'Jan 25 15:06:00 2026 GMT' ) - $( date +%s --date='Jan 18 23:06:01 2026 GMT' ) )) (1)\n575999\n$ echo $((160*60*60)) (2)\n576000\n
notBefore \u3068 notAfter \u306e\u9593\u306e\u79d2\u6570\u3092\u78ba\u8a8d
\n160\u6642\u9593\u3092\u79d2\u6570\u306b\u5909\u63db
\n$ git log --pretty=oneline -1\n58724f68ec46c57dd3c3c8ed4ae686c2d7ad893b (HEAD -> 58724f6) Add CLI flag --ip-address (#10495)\n$ dpkg-query -W python3-dev python3-venv libaugeas-dev gcc\ngcc 4:14.2.0-1\nlibaugeas-dev:amd64 1.14.1-1+b3\npython3-dev 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
\u30df\u30cb\u30de\u30e0\u3067\u8efd\u91cf\u306aActivityPub Server \u306esnac 2.86, 2.87 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e
\n\n
RELEASE_NOTES.md \u3092\u898b\u308b\u3068\u4e3b\u306a\u5909\u66f4\u70b9\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e
\n\n\n\n\n\n2.87
\n\n\nHide EmojiReacts from muted actors and blocked instances.
\n\n\n2.86
\n\n\nTruncate RSS titles at UTF-8 character boundaries (contributed by lxo).
\n\n\nLink contacts to single-user people pages. Also, user’s posts are shown (contributed by lxo).
\n\n\nAdded emoji reactions (contributed by violette).
\n\n\nMastodon API: Fix for some client notifications (contributed by violette), fix for a status visibility error (contributed by fruye).
\n\n\nIf the query variable terse of a public post page is set to anything, no header is shown.
\n\n\nFixed search failures when the query string has any leading blank.
\n
\u8208\u5473\u6df1\u3044\u65b0\u6a5f\u80fd\u3068\u3057\u3066\u306f\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u5bfe\u5fdc\u304c\u3042\u308a\u307e\u3059\uff0e\u3053\u308c\u306b\u3088\u308aMastodon \u3084Misskey \u306a\u3069\u306e\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u5bfe\u5fdc\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u3068\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u3084\u308a\u53d6\u308a\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e
\n\u4ee5\u4e0b\u306fsnac \u3068Misskey \u3067\u305d\u308c\u305e\u308c\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u884c\u3063\u305f\u3068\u304d\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3067\u3059\uff0esnac \u304b\u3089\u306e\u9001\u4fe1\u6642\u306f\u7d75\u6587\u5b57\u306e\u6587\u5b57\u5217\u3092\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e
\n
\n
\n
\u4ee5\u4e0b\u306f\u5b9f\u969b\u306e\u6295\u7a3f\uff0e
\n\u3069\u3046\u3082\u3053\u306e\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u305f\u5acc\u304c\u3089\u305b\u304c\u767a\u751f\u3057\u305f\u3088\u3046\u3067\u305d\u308c\u306e\u5bfe\u7b56\u3068\u3057\u3066\u30df\u30e5\u30fc\u30c8\u3057\u305f\u30a2\u30af\u30bf\u30fc\u3068\u30d6\u30ed\u30c3\u30af\u3057\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304b\u3089\u306e\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u975e\u8868\u793a\u306b\u3059\u308b\u6a5f\u80fd\u304c 2.87 \u3068\u3057\u3066\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e
\n\u3082\u3057\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u6a5f\u80fd\u3092\u4f7f\u3044\u305f\u304f\u306a\u3044\u5834\u5408\u306f 2.86, 2.87 \u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3067\u7121\u52b9\u306b\u3067\u304d\u308b\u5909\u66f4\u3092\u542b\u3093\u3060\u30ea\u30ea\u30fc\u30b9\u3092\u5f85\u3064\u306e\u304c\u826f\u3055\u305d\u3046\u3067\u3059\uff0e
\n\u30ab\u30b9\u30bf\u30e0\u7d75\u6587\u5b57\u306e\u767b\u9332\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\uff0e
\nRSS \u306etitle \u3092UTF-8 \u5883\u754c\u3067\u5207\u308a\u6368\u3066\u308b\u306e\u306f\u65e5\u672c\u8a9e\u3067\u6587\u5b57\u5316\u3051\u3059\u308b\u3053\u3068\u304c\u7121\u304f\u306a\u308a\u305d\u3046\u3067\u3059\uff0e\u4ee5\u4e0b\u3088\u3046\u306b\u3057\u3066\u78ba\u8a8d\u3067\u304d\u305d\u3046\u3067\u3059\u304c\u4fee\u6b63\u524d\u306e2.85 \u3067\u78ba\u8a8d\u3057\u305f\u3068\u3053\u308d\u4e01\u5ea6\u554f\u984c\u306e\u306a\u3044\u30bf\u30a4\u30df\u30f3\u30b0\u3060\u3063\u305f\u3088\u3046\u3067\u3053\u306e\u3068\u304d\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff0e
\n$ curl -s https://snac.kagolug.org/matoken.rss | nkf | xmllint --format - | grep title | head\n
\u7279\u306b\u554f\u984c\u306a\u304f\u3044\u3064\u3082\u306e\u624b\u9806\u3067\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3067\u304d\u307e\u3057\u305f\uff0e
\n$ cd $SNAC-SRC\n$ git pull\n$ git checkout 2.87\nPrevious HEAD position was b84b92d Version 2.86 RELEASED.\nHEAD is now at c2b050c Version 2.87 RELEASED.\n$ make\n$ ./snac | head -2\nsnac 2.87 - A simple, minimalistic ActivityPub instance\nCopyright (c) 2022 - 2026 grunfink et al. / MIT license\n$ sudo service snac2 stop\n$ sudo -u snac tar cvf snac2-`date +%F_%T-$$`.tar ~snac/snac-data\n$ sudo -u snac /home/snac/snac2/snac upgrade ~snac/snac-data\n05:52:38 OK\n$ sudo service snac2 start\n
$ snac | head -2\nsnac 2.85 - A simple, minimalistic ActivityPub instance\nCopyright (c) 2022 - 2025 grunfink et al. / MIT license\n$ sudo apt update\n$ sudo apt upgrade\n$ snac | head -2\nsnac 2.87 - A simple, minimalistic ActivityPub instance\nCopyright (c) 2022 - 2026 grunfink et al. / MIT license\n$ sudo service snac2 stop\n$ sudo -u debian-snac tar cvf snac2-`date +%F_%T-$$`.tar /var/lib/snac2\n$ sudo -u debian-snac snac upgrade /var/lib/snac2\n18:56:22 Linux sandbox not compiled in\n18:56:22 OK\n$ sudo service snac2 start\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
\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
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
\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
\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
$ 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
\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
--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
\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$ 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
\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$ watch -n 3600 -- cloudflare-speed-cli --text\n
--auto-save true \u3082\u8ffd\u52a0\u3059\u308b\u3068\u7d50\u679c\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff0e
$ watch -n 3600 -- cloudflare-speed-cli --text --auto-save true\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
\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
--text \u3067cli \u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u3057\u305f\u3068\u304d\u306e\u7d50\u679c
TUI \u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u3057\u305f\u3068\u304d\u306e\u7d50\u679c
\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
$ 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
$ python -m fastcli -v\nApproximate download speed: 17.48 Mbps\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
\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$ 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
\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$ 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
\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$ ./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\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$ sudo nmap -p 0-65535 localhost | grep open | cut -f1 -d\\/ | xargs -n1 sudo ./witr -port\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 Note \n | \n\nv0.1.1 \u3067macOS amd64/arm64 \u3082\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\uff0e\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
witr \u306e\u6700\u65b0\u306elinux amd64 \u30d0\u30a4\u30ca\u30ea\u7248\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9
\n\u597d\u307f\u306e\u5834\u6240\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb
\nUSAGE
\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
$ /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
$ 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\nLinux armv6l \u306e\u30d0\u30a4\u30ca\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9
\n\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u9069\u5f53\u306a\u5834\u6240\u306b\u5c55\u958b
\n\u30d1\u30b9\u3092\u901a\u3057\u3066\u304a\u304f(\u4e00\u6642\u7684\u306a\u4f8b)
\n\u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d
\nhello world \u3092\u7528\u610f
\n\u52d5\u4f5c\u78ba\u8a8d
\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
\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\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
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\n0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%*+,-.:;=?@[]^_{|}~
\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\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$ 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)\nBlurHash \u306esource \u5165\u624b
\nencoder build
\ndecoder build
\nDebian logo file \u5165\u624b
\n\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u679a\u306bBlurHash \u306b\u5909\u63db
\n\u30d0\u30a4\u30c8\u6570\u78ba\u8a8d
\nBlurHash \u3092png \u306b\u5909\u63db
\npng \u306b\u5909\u63db\u3057\u305fBlurHash \u3092\u8868\u793a
\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
\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
$ 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
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
$ src/sayaka --force-blurhash -l -s misskey.io\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 Note \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
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
\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
$ 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
ttyrec \u3067\u3082\u540c\u3058\u3088\u3046\u306a\u611f\u3058\uff0e
\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
\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?
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
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
\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
$ jq .body.type blurhash.rec | wc -l\n119\n$ jq .body.type sixel.rec | wc -l\n10\n
![]()
\u30de\u30eb\u30c1\u30d7\u30e9\u30c3\u30c8\u30db\u30fc\u30e0\uff0cGPU\u30d9\u30fc\u30b9\u306akitty \u3068\u3044\u3046\u30bf\u30fc\u30df\u30ca\u30eb\u30a8\u30df\u30e5\u30ec\u30fc\u30bf\u304c\u3042\u308a\u307e\u3059\uff0e
\n\u30bf\u30fc\u30df\u30ca\u30eb\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u306ekitty \u3084\u540c\u3058\u30bf\u30fc\u30df\u30ca\u30eb\u5185\u3067\u306e\u6587\u5b57\u30b5\u30a4\u30ba\u5909\u66f4\u306a\u3069\u9762\u767d\u3044\u6a5f\u80fd\u3082\u3042\u3063\u305f\u308a\u3057\u3066GUI \u74b0\u5883\u3067\u3088\u304f\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e
\n\u65b0\u898f\u74b0\u5883\u3067kitty \u3067\u65e5\u672c\u8a9e\u5165\u529b\u304c\u51fa\u6765\u305a\u8a2d\u5b9a\u3057\u305f\u306e\u3067\u3053\u3061\u3089\u306b\u3082\u30e1\u30e2\u3057\u3066\u304a\u304d\u307e\u3059\uff0e
\n\n
\u4eca\u56de\u306e\u74b0\u5883\u306fDebian trixue amd64 \u306e\u307b\u307c\u521d\u671f\u74b0\u5883\uff0cWayland \u3067\u306f\u306a\u304fX.org \u306b\u3057\u3066\u3042\u308a\u307e\u3059\uff0ekitty \u306fDebian \u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u304b\u3089\u5c0e\u5165\u3057\u3066\uff0c\u65e5\u672c\u8a9e\u5165\u529b\u74b0\u5883\u306ffcitx + mozc \u3067\u3059\uff0e
\nkitty \u4ee5\u5916\u306e\u74b0\u5883\u3067\u306f\u65e5\u672c\u8a9e\u5165\u529b\u306f\u51fa\u6765\u3066\u3044\u307e\u3059\u304c\uff0ckitty \u3067\u306f\u3046\u307e\u304f\u884c\u304d\u307e\u305b\u3093\uff0e
\u4ee5\u4e0b\u306eissue \u3092\u898b\u308b\u3068 GLFW_IM_MODULE=ibus \u3092\u305b\u3063\u3066\u3044\u3059\u308b\u3053\u3068\u3067ibus/fcitx \u74b0\u5883\u3067\u65e5\u672c\u8a9e\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u3067\u3059\uff0e
\n\n\n\n\nGLFW_IM_MODULE=ibus works for me with fcitx5.
\n
\u3068\u308a\u3042\u3048\u305a\u5225\u306e\u7aef\u672b\u304b\u3089\u3053\u3093\u306a\u611f\u3058\u3067\u74b0\u5883\u5909\u6570\u3092\u6307\u5b9a\u3057\u3066kitty \u3092\u8d77\u52d5\u3059\u308b\u3068\u65e5\u672c\u8a9e\u5165\u529b\u3067\u304d\u307e\u3059\uff0e
\n$ GLFW_IM_MODULE=ibus kitty\n
kitty \u306e.desktop \u30d5\u30a1\u30a4\u30eb\u306b\u74b0\u5883\u5909\u6570\u3092\u52a0\u3048\u3066GUI \u304b\u3089\u306ekitty \u8d77\u52d5\u6642\u306b\u65e5\u672c\u8a9e\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304d\u307e\u3059\uff0e
\n$ dpkg -L kitty | grep desktop\n/usr/share/applications/kitty.desktop\n/usr/share/doc/kitty/examples/kitty-open.desktop\n$ cp /usr/share/applications/kitty.desktop ~/.local/share/applications/\n$ diff -u /usr/share/applications/kitty.desktop ~/.local/share/applications/kitty.desktop\n--- /usr/share/applications/kitty.desktop 2025-06-23 03:52:56.000000000 +0900\n+++ /home/matoken/.local/share/applications/kitty.desktop 2025-12-23 18:21:14.623247581 +0900\n@@ -6,7 +6,7 @@\n Comment=Fast, feature-rich, GPU based terminal\n TryExec=kitty\n StartupNotify=true\n-Exec=kitty\n+Exec=env GLFW_IM_MODULE=ibus kitty\n Icon=kitty\n Categories=System;TerminalEmulator;\n X-TerminalArgExec=--\n
\u3053\u308c\u3067GUI \u304b\u3089kitty \u3092\u8d77\u52d5\u3057\u3066\u65e5\u672c\u8a9e\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e
\n
$ dpkg-query -W fcitx kitty\nfcitx 1:4.2.9.9-2\nkitty 0.41.1-2+b1\n$ lsb_release -dr\nDescription: Debian GNU/Linux 13 (trixie)\nRelease: 13\n$ arch\nx86_64\n

\u3055\u304f\u3089\u306e\u30ca\u30ec\u30c3\u30b8\u306b\u8efd\u91cfActivityPub Server \u306esnac \u306b\u3064\u3044\u3066\u306e\u8a18\u4e8b\u3092\u5bc4\u7a3f\u3057\u307e\u3057\u305f\uff0e
\n\u3053\u3053\u306b\u66f8\u304b\u306a\u304b\u3063\u305fsnac \u306e\u3053\u3068\u3092\u3044\u304f\u3064\u304b\u66f8\u3044\u3066\u3044\u3053\u3046\u3068\u601d\u3044\u307e\u3059\uff0e
\n\u4eca\u65e5\u306fsnac \u3068Bluesky \u9023\u643a\u306b\u3064\u3044\u3066\uff0e
\n
Bluesky \u306f\u30dd\u30b9\u30c8Twitter \u306e\u4e00\u3064\u3067AT Protocol \u3092\u5229\u7528\u3057\u305f\u5206\u6563\u578bSNS \u3067\u3059\uff0e\u3068\u306f\u3044\u3048\u73fe\u6642\u70b9\u3067\u306fActivityPub \u307b\u3069\u5206\u6563\u3057\u3066\u3044\u308b\u611f\u3058\u306f\u3057\u307e\u305b\u3093\uff0e
\n\u3053\u306eBluesky \u3068fediverse (snac \u306eActivityPub \u3082\u542b\u3080)\u3068Web \u3092\u9023\u643a\u3055\u305b\u308b\u30d6\u30ea\u30c3\u30b8\u3068\u3057\u3066Bridgy Fed \u3068\u3044\u3046\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308a\u307e\u3059\uff0e
\nBridgy Fed \u3092\u4f7f\u3063\u3066snac \u3068Bluesky \u3092\u9023\u643a\u3057\u3066\u307f\u307e\u3059\uff0c
Bridgy Fed for the fediverse (@ap.brid.gy) \u2014 Bluesky (Bluesky \u30a2\u30ab\u30a6\u30f3\u30c8)
\nActivityPub \u304b\u3089\u9023\u643a\u3059\u308b\u306b\u306f https://fed.brid.gy/login \u3067\u8a8d\u8a3c\u5f8c\uff0c\u300cEnable\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3059\u304c\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3082\u30dc\u30bf\u30f3\u304c\u898b\u5f53\u305f\u308a\u307e\u305b\u3093\uff0eMastodon \u3068\u3057\u3066snac \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u8a8d\u8a3c\u3057\u305f\u306e\u3067\u306a\u306b\u304bAPI \u306e\u9055\u3044\u3084\u4e0d\u8db3\u304c\u3042\u308b\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e
\n\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u3092\u898b\u308b\u3068\u5225\u306e\u65b9\u6cd5\u3082\u7d39\u4ecb\u3055\u308c\u3066\u3044\u307e\u3059\uff0e
\n\n\n\n\n\n\nif login isn't supported for your fediverse server, search for and follow @bsky.brid.gy@bsky.brid.gy in the fediverse. That account will then follow you back. Accept its follow to make sure your fediverse posts get sent the bridge and make it into Bluesky. You can unfollow it afterward if you want, you'll still stay bridged. (Here's how to disable.)\n
snac \u306e\u8a72\u5f53\u30a2\u30ab\u30a6\u30f3\u30c8\u3067 @bsky.brid.gy@bsky.brid.gy \u3092follow \u3057\u307e\u3059\uff0e\u3059\u308b\u3068\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089follow \u304c\u8fd4\u3055\u308c\u308b\u306e\u3067\u627f\u8a8d\u3059\u308b\u3068\u9023\u643a\u5b8c\u4e86\u3067\u3059\uff0e\u3053\u306e\u5f8c\u306f unfollow \u3057\u3066\u3082\u9023\u643a\u306f\u7dad\u6301\u3055\u308c\u308b\u305d\u3046\u3067\u3059\uff0e
\u3053\u306e\u3068\u304d\u306e\u9023\u643a\u5143\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\uff0c @[user]@[instance] \u306e\u5834\u5408Bluesky \u30d6\u30ea\u30c3\u30b8\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30cf\u30f3\u30c9\u30eb\u306f [user].[instance].ap.brid.gy \u306b\u306a\u308a\u307e\u3059\uff0e
\u306a\u306b\u304b\u6295\u7a3f\u3057\u3066\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\uff0e
\n
Bridgy Fed \u306f\u5358\u306b\u6295\u7a3f\u3092\u8ee2\u9001\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u8fd4\u4fe1\u3084likes, (\u5143\u306e\u6295\u7a3f\u304c\u30d6\u30ea\u30c3\u30b8\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f)repost \u306a\u3069\u3082\u9023\u643a\u3055\u308c\u308b\u3088\u3046\u3067\u3059\uff0e\u5143\u306e\u6295\u7a3f\u3092\u524a\u9664\u3057\u305f\u5834\u5408\u3082\u53cd\u6620\u3055\u308c\u307e\u3059\uff0e
\n\n\n\n\n\nWhich stuff of mine from the fediverse will get bridged?
\n\n\nOnce you’ve enabled the bridge, anything that’s fully public and interacts with Bluesky users. This includes your posts, replies, likes, and reposts if the original post was bridged. Posts on Bluesky are limited to 300 characters, so longer posts from the fediverse are truncated and ellipsized. Hashtags, links, link previews, images, videos, and even alt text are also included.
\n
\u30d6\u30ea\u30c3\u30b8\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u524a\u9664\u3092\u884c\u3044\u305f\u3044\u5834\u5408\u306f\uff0cBridgy Fed\u30dc\u30c3\u30c8\u30e6\u30fc\u30b6\u30fc( @bsky.brid.gy@bsky.brid.gy )\u3092\u30d6\u30ed\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u524a\u9664\u3067\u304d\u308b\u3088\u3046\u3067\u3059\uff0e
\n\n\n\n\nIf you’re on the fediverse or Bluesky, and you’ve opted in but now want to opt out, block the Bridgy Fed bot user for the network you want to opt out of. For example, on the fediverse, block @bsky.brid.gy@bsky.brid.gy. On Bluesky, block @ap.brid.gy.
\n\n\n(However, if you’re on a Pixelfed instance, DM the word stop to @bsky.brid.gy@bsky.brid.gy instead. Pixelfed doesn’t yet send the ActivityPub Block activity, so blocking won’t work. Hopefully they’ll fix that soon!)
\n\n\nIf you’re on the web, email us from an address at your web site’s domain to show that you own it, or you can put the text #nobridge in the profile on your home page and then update your profile on your user page.
\n\n\nOnce you’ve done this, Bridgy Fed will deactivate your bridged profile in that network, and it will no longer bridge any of your posts or interactions there.
\n\n\nYou can undo this later and reactivate bridging for your account, but depending on the network, not everything will be perfectly restored. For example, when you disable bridging into the fediverse, the bridged fediverse account is deleted and all followers are disconnected. If you later re-enable it, fediverse users will have to search for your account by address manually to find and follow it again.
\n

\u3055\u304f\u3089\u306e\u30ca\u30ec\u30c3\u30b8\u306b\u8efd\u91cfActivityPub Server \u306esnac \u306b\u3064\u3044\u3066\u306e\u8a18\u4e8b\u3092\u5bc4\u7a3f\u3057\u307e\u3057\u305f\uff0e
\n\u3053\u3053\u306b\u66f8\u304b\u306a\u304b\u3063\u305fsnac \u306e\u3053\u3068\u3092\u3044\u304f\u3064\u304b\u66f8\u3044\u3066\u3044\u3053\u3046\u3068\u601d\u3044\u307e\u3059\uff0e
\n\u4eca\u65e5\u306fsnac \u306ebot \u5411\u3051\u6295\u7a3f\u6a5f\u80fd\u306b\u3064\u3044\u3066\uff0e
\n
bot \u3084\u30a2\u30ca\u30a6\u30f3\u30b9\u306a\u3069\u5411\u3051\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u81ea\u52d5\u6295\u7a3f\u3092\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\uff0e
\n\u4f8b\u3048\u3070\u3044\u307e\u8003\u3048\u3066\u3044\u308b\u306e\u306fCalDav \u304b\u3089\u4eca\u65e5\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u6295\u7a3f\u3059\u308b\u30a2\u30ab\u30a6\u30f3\u30c8\uff0e\u73fe\u5728\u306fWebhook \u7d4c\u7531\u3067Discord \u306bpost \u3057\u305f\u308a\u3057\u3066\u3044\u307e\u3059\uff0e
\nsnac \u3067\u3082\u3044\u304f\u3064\u304b\u81ea\u52d5\u6295\u7a3f\u3059\u308b\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\uff0e
\n\n\n\nImplementing post bots
\n\n\nsnac makes very easy to post messages in a non-interactive manner. This example posts a string:
\n\n\nuptime | snac note $SNAC_BASEDIR $SNAC_USER –
\n\n\nYou can setup a line like this from a crontab(5) or similar. Take note that you need a) command-line access to the same machine that hosts the snac instance, and b) write permissions to the storage directories and files.
\n\n\nYou can also post non-interactively using the Mastodon API and a command-line http tool like curl(1) or similar. This has the advantage that you can do it remotely from any host, anywhere; the only thing you need is an API Token. This is an example:
\n\n\ncurl -X POST https://$SNAC_HOST/api/v1/statuses \\
\n
\n–header “Authorization: Bearer ${TOKEN}” -d “status=$(uptime)”\n\n\nYou can obtain an API Token by connecting to the following URL:
\n
\n\n\n\n\n\nnote basedir uid text [file file ... [-r inReplyTo [-d YYYYmmddHHMMSS]]]\n Enqueues a Create + Note message to all followers. If the text argument is -e, the external editor defined by the EDITOR environment variable\n will be invoked to prepare a message; if it's - (a lonely hyphen), the post content will be read from stdin. The rest of command line arguments\n are treated as media files to be attached to the post. The LANG environment variable (if defined) is used as the post language. An optional URL\n to a Fediverse post, prefixed by -r, can be specified for this note to be a reply to. If a date in YYYYmmddHHMMSS format is followed by -d, the\n note is scheduled for that moment instead of immediately posted (this date must be in the same timezone the user has configured in the web UI).\n\n\n\n\nnote_unlisted basedir uid text [file file ... [-r inReplyTo [-d YYYYmmddHHMMSS]]]\n Like the previous one, but creates an \"unlisted\" (or \"quiet public\") post.\n\n\n\n\nnote_mention basedir uid text [file file ... [-r inReplyTo [-d YYYYmmddHHMMSS]]]\n Like the previous one, but creates a post only for accounts mentioned in the post body.\n\n\n\n\nblock basedir instance_url\n
snac \u306e\u52d5\u4f5c\u3057\u3066\u3044\u308b\u74b0\u5883\u3067\u5b9f\u884c\u3067\u304d\u308b\u306e\u3067\u3042\u308c\u3070\u304a\u624b\u8efd\u306asnac \u306enote \u30b3\u30de\u30f3\u30c9\u304c\u3042\u308a\u307e\u3059\uff0e
\nman(1) \u306b\u3042\u308b\u4f8b\u3092\u771f\u4f3c\u3057\u3066\u307f\u307e\u3059\uff0e
\n\n\n\nuptime | snac note $SNAC_BASEDIR $SNAC_USER –
\n
$ uptime | pee \"./snac note snac-test test -\" cat\n 23:32:36 up 4 days, 10:17, 1 user, load average: 1.56, 1.90, 1.69\n23:32:36 [test] enqueue_message http://127.0.0.1:8001/test/p/1766154756.511450/Create\n8 /\ufffd\n
\u6295\u7a3f\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u3093\u306a\u611f\u3058\uff0e
\n
\u65e5\u672c\u8a9e\u3082\u305d\u306e\u307e\u307e\u3067ok \u3067\u3057\u305f\uff0e
\npfetch \u3092\u6d41\u3057\u8fbc\u3093\u3067\u307f\u308b\u3068\u3053\u3093\u306a\u611f\u3058\u3067\u6574\u5f62\u3092\u8003\u3048\u306a\u3044\u3068\u30c0\u30e1\u305d\u3046\uff0e
\n
\u3053\u3061\u3089\u306f\u4e00\u822c\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3067\u30ea\u30e2\u30fc\u30c8\u3067\u6295\u7a3f\u53ef\u80fd\u306a\u65b9\u6cd5\u3067\u3059\uff0etoken \u3092\u5165\u624b\u3057\u3066curl \u30b3\u30de\u30f3\u30c9\u3067\u6295\u7a3f\u3057\u307e\u3059\uff0e
\n\u307e\u305a\u4ee5\u4e0b\u306e\u3088\u3046\u306aURL \u3067token \u3092\u53d6\u5f97\u3057\u307e\u3059\uff0e
\n\n\n\n
\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u753b\u9762\u306b\u306a\u308b\u306e\u3067\u5bfe\u8c61\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u60c5\u5831\u3092\u5165\u624b\u3057\u307e\u3059\uff0e
\n
\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30c8\u30fc\u30af\u30f3\u304c\u53d6\u5f97\u3067\u304d\u308b\u306e\u3067\u30e1\u30e2\u3057\u307e\u3059\uff0e
\n\n\n\n\n1f3ea50e9ab7cc85f5ff01b8f43fb1ae
\n
\u5f8c\u306fcurl \u306a\u3069\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306bPOST\uff0e
\njson \u3067\u8fd4\u308a\u5024\u304c\u5e30\u3063\u3066\u304d\u307e\u3059\uff0e
$ curl -X POST http://127.0.0.1:8001/api/v1/statuses --header \"Authorization: Bearer 1f3ea50e9ab7cc85f5ff01b8f43fb1ae\" -d \"status=$(uptime)\"\n{\n \"id\": \"1766155742b0f5ed692a273ff5b6ef59b696ddde76\",\n \"uri\": \"http://127.0.0.1:8001/test/p/1766155742.788170\",\n \"url\": \"http://127.0.0.1:8001/test/p/1766155742.788170\",\n \"account\": {\n \"id\": \"488d5ffe15e31aa0be5002853e8006f7\",\n \"username\": \"test\",\n \"display_name\": \"test\",\n \"discoverable\": true,\n \"group\": false,\n \"hide_collections\": false,\n \"indexable\": true,\n \"noindex\": false,\n \"roles\": [\n ],\n \"acct\": \"test@127.0.0.1:8001\",\n \"created_at\": \"2025-11-14T19:38:38Z\",\n \"last_status_at\": \"2025-12-19\",\n \"bot\": false,\n \"note\": \"<br>\",\n \"url\": \"http://127.0.0.1:8001/test\",\n \"uri\": \"http://127.0.0.1:8001/test\",\n \"avatar\": \"http://127.0.0.1:8001/susie.png\",\n \"avatar_static\": \"http://127.0.0.1:8001/susie.png\",\n \"header\": \"\",\n \"header_static\": \"\",\n \"emojis\": [\n ],\n \"locked\": false,\n \"followers_count\": 0,\n \"following_count\": 0,\n \"statuses_count\": 0,\n \"fields\": [\n ]\n },\n \"created_at\": \"2025-12-19T14:49:02.000Z\",\n \"content\": \"23:49:02 up 4 days, 10:34, 1 user, load average: 1.48, 1.57, 1.68<br>\",\n \"visibility\": \"public\",\n \"sensitive\": false,\n \"spoiler_text\": \"\",\n \"media_attachments\": [\n ],\n \"mentions\": [\n ],\n \"tags\": [\n ],\n \"emojis\": [\n ],\n \"favourites_count\": 0,\n \"favourited\": false,\n \"reblogs_count\": 0,\n \"reblogged\": false,\n \"replies_count\": 0,\n \"in_reply_to_id\": null,\n \"in_reply_to_account_id\": null,\n \"reblog\": null,\n \"card\": null,\n \"language\": \"en\",\n \"filtered\": [\n ],\n \"muted\": false,\n \"text\": \" 23:49:02 up 4 days, 10:34, 1 user, load average: 1.48, 1.57, 1.68\",\n \"edited_at\": null,\n \"poll\": null,\n \"bookmarked\": false,\n \"pinned\": false\n}\n
\u3055\u304f\u3089\u306e\u30ca\u30ec\u30c3\u30b8\u306b\u8efd\u91cfActivityPub Server \u306esnac \u306b\u3064\u3044\u3066\u306e\u8a18\u4e8b\u3092\u5bc4\u7a3f\u3057\u307e\u3057\u305f\uff0e
\n\u3053\u3053\u306b\u66f8\u304b\u306a\u304b\u3063\u305fsnac \u306e\u3053\u3068\u3092\u3044\u304f\u3064\u304b\u66f8\u3044\u3066\u3044\u3053\u3046\u3068\u601d\u3044\u307e\u3059\uff0e
\n\u4eca\u65e5\u306fsnac \u306e\u901a\u77e5\u306b\u3064\u3044\u3066\uff0e
\n
snac \u306e\u901a\u77e5\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u300cnotifications\u300d\u306e\u6a2a\u306b\u6570\u5b57\u3067\u901a\u77e5\u3055\u308c\u307e\u3059\uff0e\u300cnotifications\u300d\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u8a73\u7d30\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e
\n
\u3057\u304b\u3057\u3053\u306e\u901a\u77e5\u306fsnac \u306e\u30da\u30fc\u30b8\u304c\u8aad\u307f\u8fbc\u307e\u308c\u305f\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u306a\u3089\u306a\u3044\u3068\u901a\u77e5\u304c\u308f\u304b\u308a\u307e\u305b\u3093\uff0e
\n\u3057\u304b\u3057\u4ee3\u66ff\u306e\u901a\u77e5\u304c\u3044\u304f\u3064\u304b\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\u3053\u308c\u3089\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u307b\u307c\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306a\u901a\u77e5\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\uff0e
\u4e00\u822c\u7684\u306ae-mail \u3067\u3059\uff0e\u30b5\u30fc\u30d0\u30fc\u306e\u30e1\u30fc\u30eb\u30b7\u30b9\u30c6\u30e0\u304c\u8a2d\u5b9a\u6e08\u3067\u3042\u308c\u3070\u30e6\u30fc\u30b6\u30fc\u306e\u300cUser Settings…\u300d\u304b\u3089\u300cEmail address for notifications:\u300d\u306b\u5b9b\u5148\u306ee-main address \u3092\u5165\u529b\u3059\u308b\u308b\u3053\u3068\u3067\u5229\u7528\u53ef\u80fd\u3067\u3059\uff0e
\n\u30b5\u30fc\u30d0\u30fc\u306e\u30e1\u30fc\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u8a2d\u5b9a\u304c\u3055\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u308a\uff0c\u5916\u90e8\u306e\u30e1\u30fc\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u5229\u7528\u3057\u305f\u3044\u5834\u5408 server.json \u306e\u4ee5\u4e0b\u306e\u9805\u76ee\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3082\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3067\u304d\u307e\u3059\uff0e
\n\n\n\n\n\nEmail address for notifications\n If this field is not empty, an email message will be sent to this address whenever a post written by you is liked, boosted or replied to.\n
\n\n\n\n\n\nsmtp_url Since version 2.76, email notifications can be sent via direct connection to an SMTP server instead of the traditional behaviour of piping the mes\u2010\n sage to /usr/sbin/sendmail. Set this value to the SMTP url to be used for sending email notifications (for example, smtp://localhost). It may in\u2010\n clude a port number if it's not running on the usual one, like in smtp://mail.example.com:587.\n\n\n\n\nsmtp_user\n\n\n\n\nsmtp_password\n To be filled if the SMTP server defined by the previous directive needs credentials.\n

\u30a4\u30f3\u30b9\u30bf\u30f3\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eTelegram \u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\uff0e\u305f\u3060\uff0cTelegram bot \u3092\u4f5c\u6210\u3057\u3066\u5229\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067\u671f\u8a2d\u5b9a\u304c\u5c11\u3057\u521d\u9762\u5012\u3067\u3059\uff0e
\n\n\n\n\n\n\nTelegram notifications\n To enable notifications via Telegram, fill the two provided fields (Bot API key and Chat id). You need to create both a Telegram channel and a\n bot for this; the process is rather cumbersome but it's documented everywhere. The Bot API key is a long string of alphanumeric characters and\n the chat id is a big, negative number.\n
\u4ee5\u524dTelegram bot \u3092Nextcloud \u306eTOTP \u306e\u901a\u77e5\u8a2d\u5b9a\u306b\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u66f8\u3044\u305f\u30a8\u30f3\u30c8\u30ea\u304c\u3042\u308a\u307e\u3059\uff0e
\nTelegram bot \u304c\u4f5c\u6210\u3067\u304d\u305f\u3089\u5404\u30e6\u30fc\u30b6\u306e\u300cUser Settings…\u300d\u306e\u300cTelegram notifications (bot key and chat id):\u300d\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u5229\u7528\u3067\u304d\u307e\u3059\uff0e
\nOSS \u3067\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u53ef\u80fd\u3067\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3084\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306b\u901a\u77e5\u304c\u3067\u304d\u308bntfy \u3068\u3044\u3046\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308a\u307e\u3059\uff0e\u3053\u308c\u3092\u5229\u7528\u3057\u3066snac \u306e\u901a\u77e5\u3092\u884c\u3046\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\uff0e
\n\n\n\n\n\n\nntfy notifications\n To enable notifications via ntfy (both self-hosted or standard ntfy.sh server), fill the two provided fields (ntfy server/topic and, if pro\u2010\n tected, the token). You need to refer to the https://ntfy.sh web site for more information on this process.\n
\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u53ef\u80fd\u3067\u3059\u304c\uff0c\u3068\u308a\u3042\u3048\u305antfy.sh \u3092\u5229\u7528\u3057\u3066\u8a66\u3059\u3068\u826f\u3055\u305d\u3046\u3067\u3059\uff0e
\n\u300cUser Settings…\u300d\u306e\u300cntfy notifications (ntfy server and token):\u300d\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u901a\u77e5\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e
\n\u8272\u3005\u306a\u30b5\u30fc\u30d3\u30b9\u304c\u5bfe\u5fdc\u3057\u3066\u3044\u308bWebhook \u3082\u5229\u7528\u53ef\u80fd\u3067\u3059\uff0e
\n\n\n\n\n\n\nNotify webhook\n If this is set to an URL, an HTTP POST will be sent to it whenever a new notification happens (see the 'Webhook for notifications' section below\n for more information).\n
\u4f8b\u3048\u3070Discord \u3067\u3042\u308c\u3070\uff0c\u300c\u30c1\u30e3\u30f3\u30cd\u30eb\u306e\u7de8\u96c6\u300d→\u300c\u9023\u643a\u30b5\u30fc\u30d3\u30b9\u300d→\u300c\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u3092\u4f5c\u6210\u300d\u3067\u751f\u6210\u3055\u308c\u308bURL \u3092\u5229\u7528\u3057\u3066\u901a\u77e5\u3067\u304d\u307e\u3059\uff0e
\n\u3053\u308c\u3092\u300cUser Settings…\u300d\u306e\u300cNotify webhook:\u300d\u306b\u5165\u529b\u3059\u308b\u3053\u3068\u3067\u901a\u77e5\u53ef\u80fd\u3067\u3059\uff0e
snac \u306fmastodon API \u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\uff0e\u305d\u306e\u305f\u3081mastodon \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5229\u7528\u53ef\u80fd\u3067\u3059\uff0e
\nmastodon \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u901a\u77e5\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u901a\u77e5\u3092\u53d7\u3051\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\uff0e

\u3055\u304f\u3089\u306e\u30ca\u30ec\u30c3\u30b8\u306b\u8efd\u91cfActivityPub Server \u306esnac \u306b\u3064\u3044\u3066\u306e\u8a18\u4e8b\u3092\u5bc4\u7a3f\u3057\u307e\u3057\u305f\uff0e
\n\u3053\u3053\u306b\u66f8\u304b\u306a\u304b\u3063\u305fsnac \u306e\u3053\u3068\u3092\u3044\u304f\u3064\u304b\u66f8\u3044\u3066\u3044\u3053\u3046\u3068\u601d\u3044\u307e\u3059\uff0e
\n\u4eca\u65e5\u306fsnac \u306etheme \u5909\u66f4\uff0e
\n
snac \u306fCSS \u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3059\u308b\u3053\u3068\u3067\u30c6\u30fc\u30de\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u307e\u3059\uff0e
\nCSS \u30d5\u30a1\u30a4\u30eb\u306f2\u7a2e\u985e\u3042\u308a\uff0c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5168\u4f53\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\uff0c {basedir}/style.css \u3068\uff0c\u5404\u30e6\u30fc\u30b6\u30fc\u7528\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8CSS\u30d5\u30a1\u30a4\u30eb\u306e {basedir}/user/{\u30e6\u30fc\u30b6\u30fc\u540d}/static/style.css \u3067\u3059\uff0e
| \n Tip \n | \n\n \n \n\u624b\u5143\u306esnac 2.8.5 \u3067\u8a66\u3057\u305f\u3068\u3053\u308d\uff0c\u5404\u30e6\u30fc\u30b6\u30fc\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8CSS\u30d5\u30a1\u30a4\u30eb\u306f\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u72b6\u614b\u3067\u306a\u3044\u3068\u52b9\u304b\u306a\u3044\u3088\u3046\u3067\u3059\uff0e | \n
\u81ea\u5206\u3067\u8a2d\u5b9a\u3057\u306a\u304f\u3066\u3082\uff0c README.md \u306e Incredibly awesome CSS themes for snac \u90e8\u5206\u306b\u3044\u304f\u3064\u304b\u306etheme \u304c\u7d39\u4ecb\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3053\u308c\u3092\u4f7f\u308f\u305b\u3066\u3082\u3089\u3063\u305f\u308a\u305d\u308c\u3092\u5143\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u306e\u3067\u3082\u826f\u3055\u305d\u3046\u3067\u3059\uff0e
$ grep -A5 'Incredibly awesome CSS themes for snac' README.md\n## Incredibly awesome CSS themes for snac\n\n- [A compilation of themes for snac (by \u0412\u043e )](https://codeberg.org/voron/snac-style).\n- [A cool, elegant theme (by Haijo7)](https://codeberg.org/Haijo7/snac-custom-css).\n- [A terminal-like theme (by Tetra)](https://codeberg.org/ERROR404NULLNOTFOUND/snac-terminal-theme).\n
\u4ee5\u4e0b\u306f Pika \u3068\u3044\u3046theme \u3092\u8a2d\u5b9a\u3057\u305f\u4f8b\u3067\u3059\uff0e3\u30da\u30a4\u30f3\u306b\u306a\u308a\uff0cPC\u7b49\u306e\u6a2a\u9577\u753b\u9762\u3067\u306e\u64cd\u4f5c\u6027\u304c\u826f\u3055\u305d\u3046\u3067\u3059\uff0e
\n