gemini://technicalsuwako.moe テクニカル諏訪子 2024-02-01T00:00:00Z テクニカル諏訪子 blog/sp-120.gmi 【076】sp 1.2.0登場 2024-02-01T00:00:00Z <h2 id="sp">spって何?</h2> <p>spはシンプルなパスワードマネージャです。</p> <h2 id="heading">変更</h2> <ul> <li>やっとTOTP機能性を修正した</li> <li>makeを実行したら、バイナリがもっと小さくなる</li> <li>パスワードの長さの延長</li> <li>パスワード追加機能性で、パスワードが既に存在するかどうか確認</li> <li>パスワード削除機能性で、パスワードが存在ないかどうか確認</li> <li>パスワード変更機能性の追加</li> <li>zsh対応の修正</li> </ul> <h2 id="heading-1">ソースコード</h2> <p><a href="https://gitler.moe/suwako/sp">Gitler</a></p> <p>以上</p> blog/neovim-code-template.gmi 【Neovim】テンプレートと作り方 2024-01-31T00:00:00Z <p><a href="/blog/zig-gengo-1.xhtml">Zigの使い方第1部を投稿した後、この言語を辞めました。</a><br /> 理由は自由にフォーマット出来なかった事です。<br /> しかし、解決方法を見つけましたが、それが結構面倒くさいと思います:</p> <pre><code lang=""><span style="color:#080;font-style:italic">// zig fmt: off </span><span style="color:#080;font-style:italic">// vim: set ts=2 sts=2 sw=2 et: </span></code></pre><p>各「.zig」ファイルで上記のコメントを自分で貼る事が必要為、「neovimは自動で追加されたら良いなぁ」と思ったら、やっぱりそれが可能です!</p> <h2 id="confignviminitlua">~/.config/nvim/init.lua</h2> <pre><code lang="">vim.api.nvim_exec(<span style="color:#b44">[[ </span><span style="color:#b44"> autocmd BufNewFile *.zig 0r ~/.config/nvim/template.zig </span><span style="color:#b44">]]</span>, <span style="color:#a2f;font-weight:bold">false</span>) </code></pre><h2 id="confignvimtemplatezig">~/.config/nvim/template.zig</h2> <pre><code lang=""><span style="color:#080;font-style:italic">// zig fmt: off </span><span style="color:#080;font-style:italic">// vim: set ts=2 sts=2 sw=2 et: </span><span style="color:#080;font-style:italic"></span><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>std<span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span><span style="color:#a2f">@import</span>(<span style="color:#b44">&#34;std&#34;</span>);<span style="color:#bbb"> </span><span style="color:#bbb"> </span></code></pre><p>それで、毎回「<code lang="">nvim ほげほげ.zig</code>」で使って新しい「.zig」ファイルを作ったら、自動で上記の行列を追加されます。<br /> これを好みでしたので、他の言語のテンプレートを作りました。</p> <h2 id="confignviminitlua-1">~/.config/nvim/init.lua</h2> <pre><code lang=""><span style="color:#080;font-style:italic">-- テンプレート</span> vim.api.nvim_exec(<span style="color:#b44">[[ </span><span style="color:#b44"> autocmd BufNewFile *.c 0r ~/.config/nvim/template.c </span><span style="color:#b44"> autocmd BufNewFile *.cc 0r ~/.config/nvim/template.cc </span><span style="color:#b44"> autocmd BufNewFile *.h 0r ~/.config/nvim/template.h </span><span style="color:#b44"> autocmd BufNewFile *.hh 0r ~/.config/nvim/template.hh </span><span style="color:#b44"> autocmd BufNewFile *.go 0r ~/.config/nvim/template.go </span><span style="color:#b44"> autocmd BufNewFile *.md 0r ~/.config/nvim/template.md </span><span style="color:#b44"> autocmd BufNewFile *.zig 0r ~/.config/nvim/template.zig </span><span style="color:#b44"> autocmd BufNewFile *.php 0r ~/.config/nvim/template.php </span><span style="color:#b44">]]</span>, <span style="color:#a2f;font-weight:bold">false</span>) </code></pre><h3 id="templatec">template.c</h3> <pre><code lang=""><span style="color:#080">#include</span> <span style="color:#080">&lt;stdio.h&gt;</span><span style="color:#080"> </span><span style="color:#080"></span> </code></pre><h3 id="templatecc">template.cc</h3> <pre><code lang=""><span style="color:#080">#include</span> <span style="color:#080">&lt;iostream&gt;</span><span style="color:#080"> </span><span style="color:#080"></span> </code></pre><h3 id="templateh">template.h</h3> <pre><code lang=""><span style="color:#080">#ifndef _H </span><span style="color:#080">#define _H </span><span style="color:#080"></span> <span style="color:#080">#endif </span></code></pre><h3 id="templatehh">template.hh</h3> <pre><code lang=""><span style="color:#080">#ifndef _HH </span><span style="color:#080">#define _HH </span><span style="color:#080"></span> <span style="color:#a2f;font-weight:bold">class</span> <span style="color:#00f">i</span> { <span style="color:#a2f;font-weight:bold">public</span><span style="color:#666">:</span> <span style="color:#a2f;font-weight:bold">private</span><span style="color:#666">:</span> }; <span style="color:#080">#endif </span></code></pre><h3 id="templatego">template.go</h3> <pre><code lang=""><span style="color:#a2f;font-weight:bold">package</span> main <span style="color:#a2f;font-weight:bold">import</span> ( ) </code></pre><h3 id="templatephp">template.php</h3> <pre><code lang=""><span style="color:#666">&lt;?</span>php <span style="color:#080">?&gt;</span><span style=""> </span></code></pre><p>以上</p> blog/freebsd-nas-auto-backup.gmi 【FreeBSD】簡単にNASの自動的にバックアップする方法 2024-01-30T00:00:00Z <p><a href="/blog/digital-autonomy-076video-hosting.xhtml">先月は「076動画ホスティングの解決策」という投稿を書きました。</a><br /> 先週の週末、このNASに4 TiBのSSDを追加しましたので、それによりGitlerと076動画のストレージ容量が増大出来ました。<br /> でも、バックアップならどうすれば良いですか?<br /> 今回はこれを解決すると思いますが、ちゃんと理解するには、まずは「076動画ホスティングの解決策」をご覧下さい。</p> <h2 id="heading">必要なソフト</h2> <p>今回必要なソフトは1つだけで、rsyncです。</p> <pre><code lang=""><span style="color:#080;font-style:italic"># doas pkg install rsync</span> </code></pre><h2 id="root">rootになれ!!</h2> <p>そこからrootアカウントで行います。</p> <pre><code lang=""><span style="color:#080;font-style:italic"># doas su -l</span> $ </code></pre><h2 id="zfs">ZFSで使ってディスクを確認して</h2> <pre><code lang="">$ zpool list NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT backup 888G 259G 629G - - 0% 29% 1.00x ONLINE - xroot 3.62T 259G 3.37T - - 0% 6% 1.00x ONLINE - zroot 920G 277G 643G - - 0% 30% 1.00x ONLINE - $ ls -thal /zroot /backup /xroot /xroot: total <span style="color:#666">52</span> drwxr-xr-x <span style="color:#666">19</span> peertube peertube 19B 1月 <span style="color:#666">29</span> 23:34 peertube drwxr-xr-x <span style="color:#666">7</span> root wheel 7B 1月 <span style="color:#666">28</span> 23:30 . drwxr-xr-x <span style="color:#666">22</span> root wheel 28B 1月 <span style="color:#666">28</span> 20:32 .. drwxr-xr-x <span style="color:#666">17</span> suwako suwako 17B 1月 <span style="color:#666">23</span> 16:14 repo drwxr-xr-x <span style="color:#666">6</span> git git 8B 1月 <span style="color:#666">18</span> 16:14 git drwxr-x--- <span style="color:#666">8</span> git git 8B 1月 <span style="color:#666">18</span> 15:59 gitler /backup: total <span style="color:#666">43</span> drwxr-xr-x <span style="color:#666">19</span> peertube peertube 19B 1月 <span style="color:#666">29</span> 23:34 peertube drwxr-xr-x <span style="color:#666">22</span> root wheel 28B 1月 <span style="color:#666">28</span> 20:32 .. drwxr-xr-x <span style="color:#666">17</span> suwako suwako 17B 1月 <span style="color:#666">23</span> 16:14 repo drwxr-xr-x <span style="color:#666">6</span> root wheel 6B 1月 <span style="color:#666">23</span> 14:26 . drwxr-xr-x <span style="color:#666">6</span> git git 8B 1月 <span style="color:#666">18</span> 16:14 git drwxr-x--- <span style="color:#666">8</span> git git 8B 1月 <span style="color:#666">18</span> 15:59 gitler /zroot: total <span style="color:#666">43</span> drwxr-xr-x <span style="color:#666">19</span> peertube peertube 19B 1月 <span style="color:#666">29</span> 23:34 peertube drwxr-xr-x <span style="color:#666">22</span> root wheel 28B 1月 <span style="color:#666">28</span> 20:32 .. drwxr-xr-x <span style="color:#666">17</span> suwako suwako 17B 1月 <span style="color:#666">23</span> 16:14 repo drwxr-xr-x <span style="color:#666">6</span> root wheel 6B 1月 <span style="color:#666">23</span> 14:26 . drwxr-xr-x <span style="color:#666">6</span> git git 8B 1月 <span style="color:#666">18</span> 16:14 git drwxr-x--- <span style="color:#666">8</span> git git 8B 1月 <span style="color:#666">18</span> 15:59 gitler $ du -lsh /zroot/* /backup/* /xroot/* 6.2G /zroot/git 142G /zroot/gitler 104G /zroot/peertube 6.9G /zroot/repo 6.2G /backup/git 142G /backup/gitler 104G /backup/peertube 6.9G /backup/repo 6.2G /xroot/git 142G /xroot/gitler 512B /xroot/mainpc 104G /xroot/peertube 6.9G /xroot/repo </code></pre><h2 id="heading-1">シェルスクリプトを作る</h2> <pre><code lang="">$ nvim sync-backups.sh <span style="color:#666">&amp;&amp;</span> chmod +x sync-backups.sh </code></pre><p>この「 &amp;&amp; chmod +x sync-backups.sh」の部分は、「sync-backups.sh」を保存して終了したら、直ぐに実行可能にして下さいという意味です。</p> <pre><code lang=""><span style="color:#080">#!/bin/sh </span><span style="color:#080"></span> <span style="color:#080;font-style:italic"># 1 TiB</span> rsync -vaHzop --delete /zroot/* /backup <span style="color:#080;font-style:italic"># 4 TiB</span> rsync -vaHzop --delete /zroot/* /xroot </code></pre><p>「rsync -vaHzop &ndash;delete /zroot/* /backup」の意味は:</p> <ul> <li>rsync = ソフト</li> <li>-vaHzop = 何をコピーするか表示する、アーカイブモード (1:1のコピーを作る事)、ハードリンクを保管、、オーナーを保管、許可を保管</li> <li>&ndash;delete = もう存在しないファイルやディレクトリがあれば、消す</li> <li>/zroot/* /backup = /zrootの内容の全部を/backupにコピーする</li> </ul> <h2 id="crontab">crontabを変更して</h2> <p>最後にcrontabを変更しましょう。</p> <pre><code lang="">$ crontab -e </code></pre><pre><code lang="">0 0,6,12,18 * * * /root/sync-backups.sh </code></pre><p>それで、毎日4回 (0:00、6:00、12:00、そうして18:00で) バックアップのスクリプトを実行されます。</p> <p>以上</p> blog/rice-productive.gmi 【プログラミング】生産力を増大する方法 2024-01-04T00:00:00Z <p>かつて、ハッカー達は非常に生産的でした。<br /> <a href="http://w.sneed4fmhevap3ci4xhf4wgkf72lwk275lcgomnfgwniwmqvaxyluuid.onion/wiki/Unix%E3%81%AE%E6%AD%B4%E5%8F%B2?lang=ja">例えば、ケン・トンプソンさん、デニス・リッチーさん、とブライアン・カーニハンさんは2年でUNIXを作りました。</a><br /> <a href="https://gitlab.freedesktop.org/wayland/wayland">しかし、現在では29人の人々が15年間Waylandを作っていますが、まだ本番環境には適していません。</a><br /> 何故でしょうか。</p> <p>今日のハッカーはもはや生産的ではありません。<br /> あたしは16年間ハッカーであり、その理由を説明します。</p> <h2 id="1-">1. プログラミングはもはや楽しくない</h2> <p>あたしがプログラミングを始めた時、空のテキストエディタを開き、自分の好きな様にコードを書き、コンパイルし、それが商業的に出荷可能な製品でした。<br /> 今日でもそれは可能ですが、2014年以降に始めたすべてのコーダーは、端末で「Hello World」を表示するだけの為に60の依存関係と300の異なるクラスを入り、複雑すぎるフレームワークを使います。<br /> 貴方がそれを使わないと、貴方を素人だと思うでしょう。<br /> あたしは、そう思う人が素人だと思います。<br /> 自身のソースコードを開くたびに、それをより良くする事にワクワクします。<br /> SucklessやOpenBSDチームによって作られたソースコードを開くたびに、編集する事にワクワクします。<br /> しかし、ほとんどの現代の開発者によって作られたソースコードを開くたびに、悲しく、怒り、そして惨めになります。</p> <p>今日のコードはあちこちに散らばっています。<br /> 今日のコードはもはや価値ある製品を作る事ではなく、永遠に同じコードベースに閉じ込められ、自殺したくなる様にする事です。</p> <h2 id="2-">2. 技術は間違った方向に進んでいる</h2> <p>多くの人々は技術が前進していると主張していますが、その「前進」の方向が何であるかは誰も知りません。<br /> あたし達は50年前よりも優れたハードウェアを持っていますが、今日のソフトウェアはどんどん遅くなっています。<br /> 我々は、卒業直後の若いコーダーを引き付ける為に人気のプログラムに複雑さを加えすぎており、彼らは大学でVisual Studio Code、React、Laravelのような不必要に複雑なプログラムの使用を学び、CI、Scrum、Agile、パッケージマネージャ、フレームワーク、Electron、Microsoft Office、IntelliJ、VS Code等の生産性を阻害する不要な事を気にする本物のプログラマーについて教えられています。<br /> あたしは高校中退ですが、Neovim、Git、そしてCやGoのような本物のプログラミング言語を使用しています。<br /> それ以外は何も使いません!<br /> <a href="/portfolio.xhtml">そして、まだ完成していないプログラムを除いて、たった1年で11のプログラムを作りました。</a><br /> これらのプログラムの殆どは1日未満で作成されました。<br /> いくつかはPHPから書き直され、他は時間をかけて徐々に更新され、続ける理由が見つからなかった数個は諦めました。<br /> 現在、C、SDL、OpenGL、OpenALで3Dゲームを作成しており、2日後には機能的なプロトタイプが出来ました。</p> <p>商業ゲーム開発で逆の事が起こっているのは、この業界だけです。<br /> <a href="https://zenn.dev/daichi_gamedev/articles/unity-licence-fee">Unityとの論争の後、より多くのゲーム開発者が独自のゲームエンジンを書き始め、カスタムエンジンで同じくらい、またはそれ以上に生産的になり、カスタムエンジンははるかに軽量なので、より高品質なゲームを作る事が出来る事に気づきました。</a></p> <h2 id="3-">3. プログラミングにおける政治性</h2> <p>幸いな事に、日本では殆どのハッカーが政治から自由ですが、海外では「CODE_OF_CONDUCT.md」を持たないプロジェクトを見つけるのが非常に難しくなっています。<br /> これは、良いコードを殆ど貢献しない精神的に問題のある人々を快適にする為に、才能を追い出す様に設計されています。<br /> しかし、殆どのオープンソースプロジェクトは海外の物であり、政治に重点を置き過ぎている為、言ってはいけない言葉が多く、世界の50億人のうち2人を不快にする可能性がある事を事前に知っておかなければならず、特定の代名詞を使用する様に強制されますが、これはソフトウェア開発には属していません。<br /> 日本のソフトウェア開発者は政治を気にしないにも関わらず、国内のハッカー文化には残念ながらこの影響が及んでおり、より国際化した日本の「現代的」な開発者が海外の「現代的」な開発者の影響を受けています。</p> <h2 id="4-">4. 先輩が後輩に間違った方法を教える</h2> <p>あたしが以前言った様に、シンプルなテキストエディタ、バージョンコントロールと、コンパイラだけが良いソフトウェアを作る為に必要です。<br /> しかし、若い開発者には必要のない様々なツールの使用が教えられています。<br /> これはストレスを増やし、非生産的になるだけです。<br /> <a href="https://brik.co.jp/tips/1125">BRIKの「フロントエンドエンジニアになるためのロードマップ」がその一例です。</a><br /> あたしは「インターネットの基本を習得」、「HTML/CSS/JavaScriptの習得」、「バージョンコントロールの習得」と、「Webセキュリティ知識の習得」が必要だとは思いますが、それ以降は全く不要で、5番から19番を無視すれば、ずっと優れた生産性の高いフロントエンド開発者になれます。<br /> それら全てを学ばなければならないなら、良いソフトウェアを作る事には関心がなく、短期的な利益のみを目的とする悪い会社で働いているという事です。</p> <p>古いUNIXコミュニティでは、削除出来る機能を常に探していましたが、現代の開発者は追加出来る機能を常に探しています。<br /> 誰が最も生産的で、長期的に最もお金を稼いでおり、製品が最も安定しているかを見れば、UNIXの古参者達が正しい事は明らかです。</p> <p>あたしは現代の産業を憎んでこの記事を書いたのではなく、常に一部である事を愛してきた産業の状態について心配しているからです。</p> <p>以上</p> blog/anti-virus-dangerous.gmi 【セキュリティ】ウィルス対策ソフトは危険 2023-12-25T00:00:00Z <p>メリークリスマス!!<br /> 今回は大切な人へのプレゼントとして何を購入しましたか?<br /> ウィルス対策ソフトと答えたら、返品した方が良いです。</p> <h2 id="heading">何故ウィルス対策ソフトが危険?</h2> <p>セキュリティ上の問題以外にも、ウィルス対策ソフトには様々な問題があります。<br /> 例えば、パソコンの速度が遅くなったり、多くのウェブページが表示されなくなることがあります。<br /> しかし、これらはセキュリティの問題とは直接関係がありません。</p> <p>本当の危険は、ウィルス対策ソフトが貴方のファイルの内容(パスワードやクレジットカード番号を含む)をスキャンし、それらをネットにアップロードする事にあります。<br /> <a href="https://www.gnu.org/proprietary/proprietary.html">殆どのウィルス対策ソフトはプロプライエタリなソフトウェアですであり、それ自体がセキュリティ上のリスクとなる事もあります。</a><br /> <a href="https://gigazine.net/news/20221208-apple-csam-scan-canceled/">iPhoneユーザーはファイル内容のスキャンとネット上にアップロードに反対しましたが、何故パソコンユーザーはこれを推奨されるのでしょうか?</a><br /> ウィルス対策ソフトを購入しないで下さい。<br /> それは詐欺です!</p> <h2 id="heading-1">本当のウィルス対策はあるのでしょうか?</h2> <p>はい、存在します!<br /> これは、自分の判断力を駆使する事です!<br /> ブラウザでの広告をクリックしない事が重要です。<br /> 「Sponsor」や「スポンサー」というラベルが付いている広告は、絶対にクリックしないで下さい。<br /> フィッシングメールには注意し、その対策についてはこの後で詳しく解説します。<br /> WindowsやmacOSの代わりにLinuxやBSDを使用を検討してみて下さい。<br /> Linux向けウィルスも存在しますが、その数は格段に少ないです。<br /> デフォルト設定でJavascript、XHR、及びiFrameを無効にし、信頼出来るウェブサイトでのみ「必要な場合」に限り有効にして下さい。<br /> 不番な物があれば、リスクを避ける為に仮想マシンで実行する事をお勧めします。</p> <h2 id="heading-2">フィシングメールの対策</h2> <p>銀行、政府等による、ウィルス対策ソフトなしでフィッシングメールに対策出来ないって言われますが、実はそれが嘘です。<br /> 対策は:</p> <ul> <li>良いメールクライエントを使う事(Neomutt又はClaws Mailが超勧めます)</li> <li>HTMLメールを無効にし、テキストのみの表示にする事が良いです</li> <li>使わないサービスからメールが届いた場合、直ぐに削除する事</li> <li>使うサービスからメールが届いた場合、「To:」は会社のメールアドレスと、内容で貴方の名前か会社名で始まる事を確認する事(「顧客様、」や「ご担当者様」等といった曖昧な表現で始まる場合はフィッシングメールである可能性が高い)</li> <li>使うサービスからメールが届いた場合、メール内のリンクをクリックしないで下さい(メールアドレス確認メールを除く)。代わりに、ブラウザで手動で会社のウェブページを開き、ログインして下さい。特に「下記のリンクをクリックして下さい」みたいなリンクは絶対にクリックしないで下さい!!これは1番重要な点です!!)</li> <li>添付ファイルがあるメールは、特に予期していない場合は開かないで下さい</li> </ul> <p>以上</p>