【プログラミング】生産力を増大する方法

このコミットが含まれているのは:
守矢諏訪子 2024-01-05 00:27:24 +09:00
コミット 47f829bb10
6個のファイルの変更316行の追加239行の削除

ファイルの表示

@ -3,13 +3,91 @@
<id>gemini://technicalsuwako.moe</id>
<title>テクニカル諏訪子</title>
<updated>2023-12-25T00:00:00Z</updated>
<updated>2024-01-04T00:00:00Z</updated>
<author><name>テクニカル諏訪子</name></author>
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
<entry>
<id>blog/rice-productive.gmi</id>
<author><name>凛</name></author>
<title type="html">【プログラミング】生産力を増大する方法</title>
<published>2024-01-04T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="linux"></category>
<category term="bsd"></category>
<category term="セキュリティー"></category>
<category term="デジタル自主"></category>
<category term="ソフトウェア"></category>
<category term="メール"></category>
<category term="プライバシー"></category>
<link href="gemini://technicalsuwako.moe/blog/rice-productive.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;かつて、ハッカー達は非常に生産的でした。&lt;br /&gt;
&lt;a href=&#34;http://w.sneed4fmhevap3ci4xhf4wgkf72lwk275lcgomnfgwniwmqvaxyluuid.onion/wiki/Unix%E3%81%AE%E6%AD%B4%E5%8F%B2?lang=ja&#34;&gt;例えば、ケン・トンプソンさん、デニス・リッチーさん、とブライアン・カーニハンさんは2年でUNIXを作りました。&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://gitlab.freedesktop.org/wayland/wayland&#34;&gt;しかし、現在では29人の人々が15年間Waylandを作っていますが、まだ本番環境には適していません。&lt;/a&gt;&lt;br /&gt;
何故でしょうか。&lt;/p&gt;
&lt;p&gt;今日のハッカーはもはや生産的ではありません。&lt;br /&gt;
あたしは16年間ハッカーであり、その理由を説明します。&lt;/p&gt;
&lt;h2 id=&#34;1-&#34;&gt;1. プログラミングはもはや楽しくない&lt;/h2&gt;
&lt;p&gt;あたしがプログラミングを始めた時、空のテキストエディタを開き、自分の好きな様にコードを書き、コンパイルし、それが商業的に出荷可能な製品でした。&lt;br /&gt;
今日でもそれは可能ですが、2014年以降に始めたすべてのコーダーは、端末で「Hello World」を表示するだけの為に60の依存関係と300の異なるクラスを入り、複雑すぎるフレームワークを使います。&lt;br /&gt;
貴方がそれを使わないと、貴方を素人だと思うでしょう。&lt;br /&gt;
あたしは、そう思う人が素人だと思います。&lt;br /&gt;
自身のソースコードを開くたびに、それをより良くする事にワクワクします。&lt;br /&gt;
SucklessやOpenBSDチームによって作られたソースコードを開くたびに、編集する事にワクワクします。&lt;br /&gt;
しかし、ほとんどの現代の開発者によって作られたソースコードを開くたびに、悲しく、怒り、そして惨めになります。&lt;/p&gt;
&lt;p&gt;今日のコードはあちこちに散らばっています。&lt;br /&gt;
今日のコードはもはや価値ある製品を作る事ではなく、永遠に同じコードベースに閉じ込められ、自殺したくなる様にする事です。&lt;/p&gt;
&lt;h2 id=&#34;2-&#34;&gt;2. 技術は間違った方向に進んでいる&lt;/h2&gt;
&lt;p&gt;多くの人々は技術が前進していると主張していますが、その「前進」の方向が何であるかは誰も知りません。&lt;br /&gt;
あたし達は50年前よりも優れたハードウェアを持っていますが、今日のソフトウェアはどんどん遅くなっています。&lt;br /&gt;
我々は、卒業直後の若いコーダーを引き付ける為に人気のプログラムに複雑さを加えすぎており、彼らは大学でVisual Studio Code、React、Laravelのような不必要に複雑なプログラムの使用を学び、CI、Scrum、Agile、パッケージマネージャ、フレームワーク、Electron、Microsoft Office、IntelliJ、VS Code等の生産性を阻害する不要な事を気にする本物のプログラマーについて教えられています。&lt;br /&gt;
あたしは高校中退ですが、Neovim、Git、そしてCやGoのような本物のプログラミング言語を使用しています。&lt;br /&gt;
それ以外は何も使いません!&lt;br /&gt;
&lt;a href=&#34;/portfolio.xhtml&#34;&gt;そして、まだ完成していないプログラムを除いて、たった1年で11のプログラムを作りました。&lt;/a&gt;&lt;br /&gt;
これらのプログラムの殆どは1日未満で作成されました。&lt;br /&gt;
いくつかはPHPから書き直され、他は時間をかけて徐々に更新され、続ける理由が見つからなかった数個は諦めました。&lt;br /&gt;
現在、C、SDL、OpenGL、OpenALで3Dゲームを作成しており、2日後には機能的なプロトタイプが出来ました。&lt;/p&gt;
&lt;p&gt;商業ゲーム開発で逆の事が起こっているのは、この業界だけです。&lt;br /&gt;
&lt;a href=&#34;https://zenn.dev/daichi_gamedev/articles/unity-licence-fee&#34;&gt;Unityとの論争の後、より多くのゲーム開発者が独自のゲームエンジンを書き始め、カスタムエンジンで同じくらい、またはそれ以上に生産的になり、カスタムエンジンははるかに軽量なので、より高品質なゲームを作る事が出来る事に気づきました。&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;3-&#34;&gt;3. プログラミングにおける政治性&lt;/h2&gt;
&lt;p&gt;幸いな事に、日本では殆どのハッカーが政治から自由ですが、海外では「CODE_OF_CONDUCT.md」を持たないプロジェクトを見つけるのが非常に難しくなっています。&lt;br /&gt;
これは、良いコードを殆ど貢献しない精神的に問題のある人々を快適にする為に、才能を追い出す様に設計されています。&lt;br /&gt;
しかし、殆どのオープンソースプロジェクトは海外の物であり、政治に重点を置き過ぎている為、言ってはいけない言葉が多く、世界の50億人のうち2人を不快にする可能性がある事を事前に知っておかなければならず、特定の代名詞を使用する様に強制されますが、これはソフトウェア開発には属していません。&lt;br /&gt;
日本のソフトウェア開発者は政治を気にしないにも関わらず、国内のハッカー文化には残念ながらこの影響が及んでおり、より国際化した日本の「現代的」な開発者が海外の「現代的」な開発者の影響を受けています。&lt;/p&gt;
&lt;h2 id=&#34;4-&#34;&gt;4. 先輩が後輩に間違った方法を教える&lt;/h2&gt;
&lt;p&gt;あたしが以前言った様に、シンプルなテキストエディタ、バージョンコントロールと、コンパイラだけが良いソフトウェアを作る為に必要です。&lt;br /&gt;
しかし、若い開発者には必要のない様々なツールの使用が教えられています。&lt;br /&gt;
これはストレスを増やし、非生産的になるだけです。&lt;br /&gt;
&lt;a href=&#34;https://brik.co.jp/tips/1125&#34;&gt;BRIKの「フロントエンドエンジニアになるためのロードマップ」がその一例です。&lt;/a&gt;&lt;br /&gt;
あたしは「インターネットの基本を習得」、「HTML/CSS/JavaScriptの習得」、「バージョンコントロールの習得」と、「Webセキュリティ知識の習得」が必要だとは思いますが、それ以降は全く不要で、5番から19番を無視すれば、ずっと優れた生産性の高いフロントエンド開発者になれます。&lt;br /&gt;
それら全てを学ばなければならないなら、良いソフトウェアを作る事には関心がなく、短期的な利益のみを目的とする悪い会社で働いているという事です。&lt;/p&gt;
&lt;p&gt;古いUNIXコミュニティでは、削除出来る機能を常に探していましたが、現代の開発者は追加出来る機能を常に探しています。&lt;br /&gt;
誰が最も生産的で、長期的に最もお金を稼いでおり、製品が最も安定しているかを見れば、UNIXの古参者達が正しい事は明らかです。&lt;/p&gt;
&lt;p&gt;あたしは現代の産業を憎んでこの記事を書いたのではなく、常に一部である事を愛してきた産業の状態について心配しているからです。&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/anti-virus-dangerous.gmi</id>
<author><name>凛</name></author>
@ -493,126 +571,5 @@ zroot/usr/src 29G 96K 29G 0% /usr/src
</content>
</entry>
<entry>
<id>blog/programming-pyramid-of-doom.gmi</id>
<author><name>凛</name></author>
<title type="html">【プログラミング】アドバイス1:運命のピラミッドを回避</title>
<published>2023-12-05T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="システム開発"></category>
<category term="php"></category>
<category term="c言語"></category>
<category term="プログラミング"></category>
<category term="ウエブ開発"></category>
<link href="gemini://technicalsuwako.moe/blog/programming-pyramid-of-doom.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;プログラミングしたら、気づかずに運命のピラミッドを作る可能性が非常に高いです。&lt;br /&gt;
これを回避した方が良いと思います。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;運命のピラミッドとは?&lt;/h2&gt;
&lt;p&gt;ブログラミングで、運命のピラミッドとは、ネストされたインデントの多くのレベルを使用し、コードが読みにくくなる事です。&lt;br /&gt;
例えば、下記のC言語のコードは運命のピラミッドの問題は発生します。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#00a000&#34;&gt;main&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; argc, &lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;**&lt;/span&gt;argv) {
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (argc &lt;span style=&#34;color:#666&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt;) {
Display &lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;d &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; XOpenDisplay(&lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (d &lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;) {
&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; src &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; DefaultScreen(d);
Window w &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; XCreateSimpleWindow(d, RootWindow(d, scr), &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;500&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;500&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;, BlackPixel(d, scr), WhitePixel(d, scr));
XSelectInput(d, w, ExposureMask &lt;span style=&#34;color:#666&#34;&gt;|&lt;/span&gt; KeyPressMask);
XMapWindow(d, w);
XFlush(d);
GC gc &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; XCreateGC(d, w, &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (gc &lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;) {
XImage &lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;ximg &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; openimg(d, argv[&lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;])&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (ximg &lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;) {
&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// などなど
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt; }
} &lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;else&lt;/span&gt; {
fprintf(stderr, &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;グラフィックス内容を創作に失敗しました。&lt;/span&gt;&lt;span style=&#34;color:#b62;font-weight:bold&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;&lt;/span&gt;);
}
} &lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;else&lt;/span&gt; {
fprintf(stderr, &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;画像を開けられません。&lt;/span&gt;&lt;span style=&#34;color:#b62;font-weight:bold&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;&lt;/span&gt;);
}
} &lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;else&lt;/span&gt; {
printf(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;使用方法: %s &amp;lt;画像ファイル&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#b62;font-weight:bold&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;&lt;/span&gt;, argv[&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;]);
}
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;変わりに、下記のコードを書いた方が良いです。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#00a000&#34;&gt;main&lt;/span&gt;(&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; argc, &lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;**&lt;/span&gt;argv) {
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (argc &lt;span style=&#34;color:#666&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt;) { &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// argcはつ以下の場合、続行する意味はありません。
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt; printf(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;使用方法: %s &amp;lt;画像ファイル&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#b62;font-weight:bold&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;&lt;/span&gt;, argv[&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;]);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;;
}
Display &lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;d &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; XOpenDisplay(&lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (d &lt;span style=&#34;color:#666&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;) { &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// 同様に、DisplayがNULLの場合、続行する意味はありません。
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt; fprintf(stderr, &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;画像を開けられません。&lt;/span&gt;&lt;span style=&#34;color:#b62;font-weight:bold&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;;
}
&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; src &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; DefaultScreen(d);
Window w &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; XCreateSimpleWindow(d, RootWindow(d, scr), &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;500&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;500&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;, BlackPixel(d, scr), WhitePixel(d, scr));
XSelectInput(d, w, ExposureMask &lt;span style=&#34;color:#666&#34;&gt;|&lt;/span&gt; KeyPressMask);
XMapWindow(d, w);
XFlush(d);
GC gc &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; XCreateGC(d, w, &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (gc &lt;span style=&#34;color:#666&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;) { &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// 同じパターン
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt; fprintf(stderr, &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;グラフィックス内容を創作に失敗しました。&lt;/span&gt;&lt;span style=&#34;color:#b62;font-weight:bold&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;;
}
XImage &lt;span style=&#34;color:#666&#34;&gt;*&lt;/span&gt;ximg &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; openimg(d, argv[&lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;])&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (ximg &lt;span style=&#34;color:#666&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;NULL&lt;/span&gt;) { &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// また、同じパターン
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt; fprintf(stderr, &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;画像を開けられません: %s&lt;/span&gt;&lt;span style=&#34;color:#b62;font-weight:bold&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;&lt;/span&gt;, argv[&lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;]);
XFreeGC(d, gc);
XCloseDisplay(d);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;;
}
&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// などなど
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/mivfx/src/branch/master/main.c&#34;&gt;実際、C言語の開発者は運命のピラミッドを作る事は珍しいです。&lt;/a&gt;&lt;br /&gt;
この問題は主にWeb開発で多く起こります。&lt;br /&gt;
&lt;a href=&#34;https://gitler.moe/tak4/bibis/src/branch/master/data-post.php&#34;&gt;ですから、PHPの例えはご覧下さい。&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;;
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#b8860b&#34;&gt;$thread_id&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;) {
&lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; load_post_title_by_id(&lt;span style=&#34;color:#b8860b&#34;&gt;$thread_id&lt;/span&gt;);
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#666&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;) {
&lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;無題#&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;.&lt;/span&gt; mb_substr(&lt;span style=&#34;color:#b8860b&#34;&gt;$thread_id&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;7&lt;/span&gt;);
}
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;少しだけ変わります。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;;
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#b8860b&#34;&gt;$threadid&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;) { &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// 文字列で「&amp;gt;」を使用すると、バグが発生する可能性があります。
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; load_post_title_by_id(&lt;span style=&#34;color:#b8860b&#34;&gt;$threadid&lt;/span&gt;);
}
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;) { &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// !$thread_title &amp;gt; &amp;#39;&amp;#39; はかなりおかしいので、これも修正しました。
&lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;$thread_title&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;無題#&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;.&lt;/span&gt; mb_substr(&lt;span style=&#34;color:#b8860b&#34;&gt;$threadid&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#666&#34;&gt;7&lt;/span&gt;);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
</feed>

ファイルの表示

@ -2,6 +2,7 @@
# 記事一覧
=> /blog/rice-productive.gmi 2024年01月04日 【プログラミング】生産力を増大する方法
=> /blog/anti-virus-dangerous.gmi 2023年12月25日 【セキュリティ】ウィルス対策ソフトは危険
=> /blog/programming-early-return.gmi 2023年12月21日 【プログラミング】アドバイス2:早期リターン
=> /blog/byobu-52.gmi 2023年12月12日 【】byobu 5.2登場

59
gemini/blog/rice-productive.gmi ノーマルファイル
ファイルの表示

@ -0,0 +1,59 @@
=> /blog.gmi ブログ一覧へ
# 【プログラミング】生産力を増大する方法
投稿日2024-01-04
かつて、ハッカー達は非常に生産的でした。
=> http://w.sneed4fmhevap3ci4xhf4wgkf72lwk275lcgomnfgwniwmqvaxyluuid.onion/wiki/Unix%E3%81%AE%E6%AD%B4%E5%8F%B2?lang=ja 例えば、ケン・トンプソンさん、デニス・リッチーさん、とブライアン・カーニハンさんは2年でUNIXを作りました。
=> https://gitlab.freedesktop.org/wayland/wayland しかし、現在では29人の人々が15年間Waylandを作っていますが、まだ本番環境には適していません。
何故でしょうか。
今日のハッカーはもはや生産的ではありません。
あたしは16年間ハッカーであり、その理由を説明します。
## 1. プログラミングはもはや楽しくない
あたしがプログラミングを始めた時、空のテキストエディタを開き、自分の好きな様にコードを書き、コンパイルし、それが商業的に出荷可能な製品でした。
今日でもそれは可能ですが、2014年以降に始めたすべてのコーダーは、端末で「Hello World」を表示するだけの為に60の依存関係と300の異なるクラスを入り、複雑すぎるフレームワークを使います。
貴方がそれを使わないと、貴方を素人だと思うでしょう。
あたしは、そう思う人が素人だと思います。
自身のソースコードを開くたびに、それをより良くする事にワクワクします。
SucklessやOpenBSDチームによって作られたソースコードを開くたびに、編集する事にワクワクします。
しかし、ほとんどの現代の開発者によって作られたソースコードを開くたびに、悲しく、怒り、そして惨めになります。
今日のコードはあちこちに散らばっています。
今日のコードはもはや価値ある製品を作る事ではなく、永遠に同じコードベースに閉じ込められ、自殺したくなる様にする事です。
## 2. 技術は間違った方向に進んでいる
多くの人々は技術が前進していると主張していますが、その「前進」の方向が何であるかは誰も知りません。
あたし達は50年前よりも優れたハードウェアを持っていますが、今日のソフトウェアはどんどん遅くなっています。
我々は、卒業直後の若いコーダーを引き付ける為に人気のプログラムに複雑さを加えすぎており、彼らは大学でVisual Studio Code、React、Laravelのような不必要に複雑なプログラムの使用を学び、CI、Scrum、Agile、パッケージマネージャ、フレームワーク、Electron、Microsoft Office、IntelliJ、VS Code等の生産性を阻害する不要な事を気にする本物のプログラマーについて教えられています。
あたしは高校中退ですが、Neovim、Git、そしてCやGoのような本物のプログラミング言語を使用しています。
それ以外は何も使いません!
=> /portfolio.gmi そして、まだ完成していないプログラムを除いて、たった1年で11のプログラムを作りました。
これらのプログラムの殆どは1日未満で作成されました。
いくつかはPHPから書き直され、他は時間をかけて徐々に更新され、続ける理由が見つからなかった数個は諦めました。
現在、C、SDL、OpenGL、OpenALで3Dゲームを作成しており、2日後には機能的なプロトタイプが出来ました。
商業ゲーム開発で逆の事が起こっているのは、この業界だけです。
=> https://zenn.dev/daichi_gamedev/articles/unity-licence-fee Unityとの論争の後、より多くのゲーム開発者が独自のゲームエンジンを書き始め、カスタムエンジンで同じくらい、またはそれ以上に生産的になり、カスタムエンジンははるかに軽量なので、より高品質なゲームを作る事が出来る事に気づきました。
## 3. プログラミングにおける政治性
幸いな事に、日本では殆どのハッカーが政治から自由ですが、海外では「CODE_OF_CONDUCT.md」を持たないプロジェクトを見つけるのが非常に難しくなっています。
これは、良いコードを殆ど貢献しない精神的に問題のある人々を快適にする為に、才能を追い出す様に設計されています。
しかし、殆どのオープンソースプロジェクトは海外の物であり、政治に重点を置き過ぎている為、言ってはいけない言葉が多く、世界の50億人のうち2人を不快にする可能性がある事を事前に知っておかなければならず、特定の代名詞を使用する様に強制されますが、これはソフトウェア開発には属していません。
日本のソフトウェア開発者は政治を気にしないにも関わらず、国内のハッカー文化には残念ながらこの影響が及んでおり、より国際化した日本の「現代的」な開発者が海外の「現代的」な開発者の影響を受けています。
## 4. 先輩が後輩に間違った方法を教える
あたしが以前言った様に、シンプルなテキストエディタ、バージョンコントロールと、コンパイラだけが良いソフトウェアを作る為に必要です。
しかし、若い開発者には必要のない様々なツールの使用が教えられています。
これはストレスを増やし、非生産的になるだけです。
=> https://brik.co.jp/tips/1125 BRIKの「フロントエンドエンジニアになるためのロードマップ」がその一例です。
あたしは「インターネットの基本を習得」、「HTML/CSS/JavaScriptの習得」、「バージョンコントロールの習得」と、「Webセキュリティ知識の習得」が必要だとは思いますが、それ以降は全く不要で、5番から19番を無視すれば、ずっと優れた生産性の高いフロントエンド開発者になれます。
それら全てを学ばなければならないなら、良いソフトウェアを作る事には関心がなく、短期的な利益のみを目的とする悪い会社で働いているという事です。
古いUNIXコミュニティでは、削除出来る機能を常に探していましたが、現代の開発者は追加出来る機能を常に探しています。
誰が最も生産的で、長期的に最もお金を稼いでおり、製品が最も安定しているかを見れば、UNIXの古参者達が正しい事は明らかです。
あたしは現代の産業を憎んでこの記事を書いたのではなく、常に一部である事を愛してきた産業の状態について心配しているからです。
以上

ファイルの表示

@ -3,119 +3,120 @@
# avatar = gemini://076.moe/static/suwako.jpg
# description = テクニカル諏訪子様のtwtxtフィード
# link = ホームページ gemini://technicalsuwako.moe
2023-12-25T00:00:00Z09:00 【セキュリティ】ウィルス対策ソフトは危険 - gemini://technicalsuwako.moe/blog/blog/anti-virus-dangerous.xhtml.gmi
2023-12-21T00:00:00Z09:00 【プログラミング】アドバイス2:早期リターン - gemini://technicalsuwako.moe/blog/blog/programming-early-return.xhtml.gmi
2023-12-12T00:00:00Z09:00 【】byobu 5.2登場 - gemini://technicalsuwako.moe/blog/blog/byobu-52.xhtml.gmi
2023-12-11T00:00:00Z09:00 【デジタル自主】076動画ホスティングの解決策 - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-076video-hosting.xhtml.gmi
2023-12-05T00:00:00Z09:00 【プログラミング】アドバイス1:運命のピラミッドを回避 - gemini://technicalsuwako.moe/blog/blog/programming-pyramid-of-doom.xhtml.gmi
2023-12-01T13:30:00Z09:00 【】sp 1.1.2登場 - gemini://technicalsuwako.moe/blog/blog/sp-112.xhtml.gmi
2023-12-01T13:00:00Z09:00 【】sp 1.1.1登場 - gemini://technicalsuwako.moe/blog/blog/sp-111.xhtml.gmi
2023-12-01T00:00:00Z09:00 【】sp 1.1.0登場 - gemini://technicalsuwako.moe/blog/blog/sp-110.xhtml.gmi
2023-11-30T00:00:00Z09:00 【】sp 1.0.0登場 - gemini://technicalsuwako.moe/blog/blog/sp-100.xhtml.gmi
2023-11-15T00:00:00Z09:00 【】spliti 2.1.0登場 - gemini://technicalsuwako.moe/blog/blog/spliti-210.xhtml.gmi
2023-11-09T00:00:00Z09:00 【】imgproxy 1.1.0登場 - gemini://technicalsuwako.moe/blog/blog/imgproxy-110.xhtml.gmi
2023-11-06T00:00:00Z09:00 【】spliti 2.0.1登場 - gemini://technicalsuwako.moe/blog/blog/spliti-201.xhtml.gmi
2023-11-05T00:00:00Z09:00 【】spliti 2.0.0登場 - gemini://technicalsuwako.moe/blog/blog/spliti-200.xhtml.gmi
2023-10-23T16:00:00Z09:00 【076】乗換 1.0.2登場 - gemini://technicalsuwako.moe/blog/blog/norikae-102.xhtml.gmi
2023-10-23T00:00:00Z09:00 【オワコンテック】spliti 1.1.2登場 - gemini://technicalsuwako.moe/blog/blog/spliti-112.xhtml.gmi
2023-10-15T00:00:00Z09:00 【PostmarketOS】自分のレポジトリを作り方 - gemini://technicalsuwako.moe/blog/blog/postmarketos-make-repository.xhtml.gmi
2023-09-09T00:00:00Z09:00 【オワコンテック】spliti 1.1.1登場 - gemini://technicalsuwako.moe/blog/blog/spliti-111.xhtml.gmi
2023-08-04T00:00:00Z09:00 【PHP】正しい連絡フォームの作り方(クライアント側をぜったいに信用するな) - gemini://technicalsuwako.moe/blog/blog/fix-broken-contact-form.xhtml.gmi
2023-08-01T00:00:00Z09:00 【Zig言語】第部~基本的な紹介・セットアップ・「こんにちは、世界」 - gemini://technicalsuwako.moe/blog/blog/zig-gengo-1.xhtml.gmi
2023-07-17T02:40:00Z09:00 【】URLロリ 2.2.0登場 - gemini://technicalsuwako.moe/blog/blog/urloli-220.xhtml.gmi
2023-07-17T02:30:00Z09:00 【076】保存サイト 1.1.0登場 - gemini://technicalsuwako.moe/blog/blog/hozonsite-110.xhtml.gmi
2023-07-04T00:00:00Z09:00 【】URLロリ 2.1.1登場 - gemini://technicalsuwako.moe/blog/blog/urloli-211.xhtml.gmi
2023-07-03T00:00:00Z09:00 【デジタル自主】自宅サーバーからWireGuardを使ったホスティング方法 - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-with-wireguard-home-host.xhtml.gmi
2023-06-23T19:20:00Z09:00 【076】保存サイト 1.0.0登場 - gemini://technicalsuwako.moe/blog/blog/hozonsite-100.xhtml.gmi
2023-06-23T08:15:00Z09:00 【076】乗換 1.0.1登場 - gemini://technicalsuwako.moe/blog/blog/norikae-101.xhtml.gmi
2023-06-23T08:00:00Z09:00 【】rofi-youtube 1.0.1登場 - gemini://technicalsuwako.moe/blog/blog/rofi-youtube-101.xhtml.gmi
2023-06-22T00:00:00Z09:00 【076】乗換 1.0.0登場 - gemini://technicalsuwako.moe/blog/blog/norikae-100.xhtml.gmi
2023-06-18T00:00:00Z09:00 【ペット】猫との散歩をトレーニング方法 - gemini://technicalsuwako.moe/blog/blog/neko-sampo.xhtml.gmi
2023-06-10T00:00:00Z09:00 【】rofi-youtube 1.0.0登場 - gemini://technicalsuwako.moe/blog/blog/rofi-youtube-100.xhtml.gmi
2023-06-06T00:00:00Z09:00 【デジタル自主】OpenBSDでGeminiサーバーを設置方法 - gemini://technicalsuwako.moe/blog/blog/openbsd-gemini-server.xhtml.gmi
2023-05-30T00:00:00Z09:00 【】Libre Redirect 2.6.2登場 - gemini://technicalsuwako.moe/blog/blog/libreredirect-262.xhtml.gmi
2023-05-24T21:00:00Z09:00 【プログラミング】RustとZigの違い - gemini://technicalsuwako.moe/blog/blog/diff-zig-rust.xhtml.gmi
2023-05-24T00:00:00Z09:00 【オワコンテック】spliti 1.1.0登場 - gemini://technicalsuwako.moe/blog/blog/spliti-110.xhtml.gmi
2023-05-18T00:00:00Z09:00 【プログラミング】Zig言語を使ってC向けのライブラリを利用する方法 - gemini://technicalsuwako.moe/blog/blog/c-lib-in-zig-use.xhtml.gmi
2023-05-13T00:00:00Z09:00 【】URLロリ 2.1.0登場 - gemini://technicalsuwako.moe/blog/blog/urloli-210.xhtml.gmi
2023-05-12T00:00:00Z09:00 【】URLロリ 2.0.2登場 - gemini://technicalsuwako.moe/blog/blog/urloli-202.xhtml.gmi
2023-05-10T17:45:00Z09:00 【】URLロリ 2.0.1登場 - gemini://technicalsuwako.moe/blog/blog/urloli-201.xhtml.gmi
2023-05-10T00:00:00Z09:00 【】URLロリ 2.0.0登場 - gemini://technicalsuwako.moe/blog/blog/urloli-200.xhtml.gmi
2023-05-07T00:00:00Z09:00 【オワコンテック】vixip 1.0.0登場 - gemini://technicalsuwako.moe/blog/blog/vixip-release.xhtml.gmi
2023-04-19T00:00:00Z09:00 【OpenBSD】更新後「zsh: undefined symbol &#39;_udivdi3&#39;」というエラーの修正する方法 - gemini://technicalsuwako.moe/blog/blog/openbsd-zsh-udivdi3-syusei.xhtml.gmi
2023-04-18T00:00:00Z09:00 【Crux】自分のポートとレポジトリを作り方 - gemini://technicalsuwako.moe/blog/blog/crux-make-port-repository.xhtml.gmi
2023-04-01T00:00:00Z09:00 【OpenBSD】xmodmapを使って英数(Caps Lock)キーをスーパーキーに変更する方法 - gemini://technicalsuwako.moe/blog/blog/openbsd-change-eisu-super.xhtml.gmi
2023-03-27T00:00:00Z09:00 【デジタル奴隷制度】低水準言語書ける方が消えたら、テクニカルな世界がおしまい - gemini://technicalsuwako.moe/blog/blog/digital-dorei-dont-die-low-lever-programing.xhtml.gmi
2023-03-08T00:00:00Z09:00 【デジタル監視】プライバシーに一番の脅威は監視カメラ、二番はスマホ - gemini://technicalsuwako.moe/blog/blog/digital-kansi-most-danger-cctv.xhtml.gmi
2023-02-08T00:00:00Z09:00 【HTML】静的サイトジェネレーター利用せず簡単に静的サイト編集する方法 - gemini://technicalsuwako.moe/blog/blog/no-generator-easy-maintain.xhtml.gmi
2023-02-07T00:00:00Z09:00 【HTML】静的サイトジェネレーター利用せず簡単に静的サイト管理する方法 - gemini://technicalsuwako.moe/blog/blog/no-generator-easy-html.xhtml.gmi
2023-02-03T00:00:00Z09:00 【ハード】IBM ThinkPad T43にSSDを入る方法 - gemini://technicalsuwako.moe/blog/blog/thinkpad-t43-ssd-install-way.xhtml.gmi
2023-01-17T00:00:00Z09:00 【セキュリティ】Wireguardを使って安全に自宅のネットワークをアクセスする方法 - gemini://technicalsuwako.moe/blog/blog/access-network-wireguard.xhtml.gmi
2022-12-12T00:00:00Z09:00 【I2P】ドメインを作成方法 - gemini://technicalsuwako.moe/blog/blog/i2p-domain-make.xhtml.gmi
2022-12-06T00:00:00Z09:00 【詐欺デミック】マスクをやめる時間だ!!(24時間後の状況) - gemini://technicalsuwako.moe/blog/blog/mask-stop-time-2.xhtml.gmi
2022-12-05T00:00:00Z09:00 【詐欺デミック】マスクをやめる時間だ!! - gemini://technicalsuwako.moe/blog/blog/mask-stop-time.xhtml.gmi
2022-11-17T00:00:00Z09:00 【OpenBSD】systemdユーザー向けrc.d使い方 - gemini://technicalsuwako.moe/blog/blog/rcd-for-systemd-user.xhtml.gmi
2022-11-15T00:00:00Z09:00 【Linux】systemdユーザー向けSysV使い方 - gemini://technicalsuwako.moe/blog/blog/sysv-for-systemd-user.xhtml.gmi
2022-11-13T00:00:00Z09:00 【nginx】Torユーザーは自動で.onionリンクに移転方法 - gemini://technicalsuwako.moe/blog/blog/automatic-nginx-tor-redirect.xhtml.gmi
2022-11-12T00:00:00Z09:00 【Linux】systemdユーザー向けOpenRC使い方 - gemini://technicalsuwako.moe/blog/blog/openrc-for-systemd-user.xhtml.gmi
2022-11-11T00:00:00Z09:00 【Linux】Debian 11からDevuan 4に交換方法 - gemini://technicalsuwako.moe/blog/blog/debian-to-devuan-koukan.xhtml.gmi
2022-11-10T00:00:00Z09:00 【Tor】出口ノードの設置方法 - gemini://technicalsuwako.moe/blog/blog/set-up-tor-exit-node.xhtml.gmi
2022-09-22T00:00:00Z09:00 【デジタル自主】「なぜ匿名化はそんなに必要ですか?」 - gemini://technicalsuwako.moe/blog/blog/reason-for-anonymous.xhtml.gmi
2022-09-18T00:00:00Z09:00 【デジタル自主】匿名者に必須なブラウザ拡張機能 - gemini://technicalsuwako.moe/blog/blog/privacy-browser-extension.xhtml.gmi
2022-09-08T00:00:00Z09:00 【Linux】systemdユーザー向けrunit使い方 - gemini://technicalsuwako.moe/blog/blog/runit-for-systemd-user.xhtml.gmi
2022-09-06T00:00:00Z09:00 【Chromium】偽カメラ配信の作成方法 - gemini://technicalsuwako.moe/blog/blog/chromium-false-camera-stream-way.xhtml.gmi
2022-08-20T00:00:00Z09:00 【詐欺師注意】chankan - gemini://technicalsuwako.moe/blog/blog/chankan-is-scammer.xhtml.gmi
2022-08-03T00:00:00Z09:00 【Tor】すべてのソフトウェアをいつでもTorを通じて使用する方法 - gemini://technicalsuwako.moe/blog/blog/all-softwear-in-tor.xhtml.gmi
2022-07-21T00:00:00Z09:00 【デジタル自主】ダークネットの解説 I2Pでウエブページをホスティングする方法 - gemini://technicalsuwako.moe/blog/blog/darknet-4-i2p-hosting-way.xhtml.gmi
2022-07-20T00:00:00Z09:00 【デジタル自主】ダークネットの解説 Torでウエブページをホスティングする方法 - gemini://technicalsuwako.moe/blog/blog/darknet-3-tor-hosting-way.xhtml.gmi
2022-07-19T00:00:00Z09:00 【デジタル監視】SDGsの危険性の紹介 - gemini://technicalsuwako.moe/blog/blog/sdgs-kiken.xhtml.gmi
2022-07-10T00:00:00Z09:00 【デジタル自主】ダークネットの解説 I2Pにアクセスする方法 - gemini://technicalsuwako.moe/blog/blog/darknet-2-i2p-access-way.xhtml.gmi
2022-07-09T00:00:00Z09:00 【デジタル自主】ダークネットの解説 Torにアクセスする方法 - gemini://technicalsuwako.moe/blog/blog/darknet-1-tor-access-way.xhtml.gmi
2022-06-24T00:00:00Z09:00 【デジタル自主】NeovimとGiteaでメモの書き方 - gemini://technicalsuwako.moe/blog/blog/write-memo-with-neovim-git.xhtml.gmi
2022-06-22T00:00:00Z09:00 【SSH】バックスペース、矢印等の変な表示の修正方法 - gemini://technicalsuwako.moe/blog/blog/fix-ssh-backspace-output.xhtml.gmi
2022-06-21T00:00:00Z09:00 【Linux】2FAより安全?GNU PASSとPWGEN - gemini://technicalsuwako.moe/blog/blog/more-safe-than-2fa-is-pass-pwgen.xhtml.gmi
2022-05-31T00:00:00Z09:00 【Pleroma】ホームタイムラインで500エラーの修正方法 - gemini://technicalsuwako.moe/blog/blog/pleroma-home-timelain-500-error-fix.xhtml.gmi
2022-04-06T00:00:00Z09:00 【Tox】サーバーの無いチャットソフトの紹介 - gemini://technicalsuwako.moe/blog/blog/tox-p2p-chat-syokai.xhtml.gmi
2022-04-05T00:00:00Z09:00 【デジタル自主】GnuPGでメールを暗号化する方法 - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-send-encryption-mail.xhtml.gmi
2022-03-31T00:00:00Z09:00 【デジタル奴隷制度】米ブラックロックCEOはウクライナの茶番の実目的を確認しました - gemini://technicalsuwako.moe/blog/blog/digital-dorei-blackcock-ceo-ukraina-hoax-real-agenda.xhtml.gmi
2022-03-28T00:00:00Z09:00 【ウエブ開発】ウエブ開発者様へ、JavaScriptは不要 - gemini://technicalsuwako.moe/blog/blog/webdev-javascript-ha-fuyou.xhtml.gmi
2022-03-25T00:00:00Z09:00 【Lynx】TorとUTF-8で使い方 - gemini://technicalsuwako.moe/blog/blog/lynx-tor-and-utf8-use-way.xhtml.gmi
2022-03-18T00:00:00Z09:00 【仮想通貨】cointopで確認する方法 - gemini://technicalsuwako.moe/blog/blog/cryptocurrency-kakunin-with-cointop.xhtml.gmi
2022-03-12T00:00:00Z09:00 【Mobian】MyMoneroウォレットのインストール方法 - gemini://technicalsuwako.moe/blog/blog/mobian-mymonero-wallet-use-way.xhtml.gmi
2022-03-09T00:00:00Z09:00 【キャンセルカルチャー】全宇宙の会社はロシアに対して差別しているみたい… - gemini://technicalsuwako.moe/blog/blog/cancel-culture-076-will-not-ban-russia.xhtml.gmi
2022-03-02T00:00:00Z09:00 【デジタル奴隷制度】ウクライナ”侵略”の実目的 - gemini://technicalsuwako.moe/blog/blog/digital-dorei-ukraina-russia-real-goal.xhtml.gmi
2022-02-25T00:00:00Z09:00 【デジタル自主】Web1、Web2、Web3、Web0の違いは? - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-web-1-2-3-4-tigai.xhtml.gmi
2022-02-16T00:00:00Z09:00 【デジタル自主】キャッシュレス社会の危険性 - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-cashless-problem.xhtml.gmi
2022-02-15T00:00:00Z09:00 【デジタル自主】Web3.0(NFT、Qortal、メタバース等)は詐欺 - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-web3-is-scam.xhtml.gmi
2022-01-28T00:00:00Z09:00 【デジタル監視】ワクチンパスポートの実目的 - gemini://technicalsuwako.moe/blog/blog/digital-jisyu-own-or-permit.xhtml.gmi
2022-01-27T00:00:00Z09:00 ホームページのリニュアル - gemini://technicalsuwako.moe/blog/blog/webpage-renewal.xhtml.gmi
2022-01-15T00:00:00Z09:00 【意見】chromiumの独占化悪 - gemini://technicalsuwako.moe/blog/blog/iken-chromium-no-dokusenka-wa-aku.xhtml.gmi
2021-12-27T00:00:00Z09:00 【デジタル自主】検閲法律=違法 - gemini://technicalsuwako.moe/blog/blog/dejital-jisyu-censorship-law-is-illegal.xhtml.gmi
2021-12-26T00:00:00Z09:00 【サービスの変更】076.ne.jp、076.moe、076.wtf - gemini://technicalsuwako.moe/blog/blog/sarvice-kosin-076nejp-076moe.xhtml.gmi
2021-12-19T00:00:00Z09:00 【デジタル自主】ビッグテック、アルトデック、フェディバース、どっちは勧める? - gemini://technicalsuwako.moe/blog/blog/dejital-jisyu-bigtech-alttech-fedibars-which-recommend.xhtml.gmi
2021-12-05T00:00:00Z09:00 【仮想通貨】プライバシー通貨一覧 - gemini://technicalsuwako.moe/blog/blog/recommend-privasi-crypto.xhtml.gmi
2021-12-03T00:00:00Z09:00 【PHP】gnupgの許可なし - gemini://technicalsuwako.moe/blog/blog/php-gnupg-no-permission.xhtml.gmi
2021-11-20T00:00:00Z09:00 【デジタル監視】コロナのタイムライン - gemini://technicalsuwako.moe/blog/blog/digital-kansi-corona-taimrain.xhtml.gmi
2021-11-12T00:00:00Z09:00 【デジタル自主】コミケットはオワコン。同人誌を楽しむのはオニオンケット - gemini://technicalsuwako.moe/blog/blog/digital-jisyu-komiket-is-owakon-dojinsi-enjoy-onionket.xhtml.gmi
2021-10-17T00:00:00Z09:00 【Prosody】mod_http_upload(XEP-0363)を有効にする方法 - gemini://technicalsuwako.moe/blog/blog/prosody-modhttpupload-xep363-active-way.xhtml.gmi
2021-10-02T00:00:00Z09:00 【XMPP】アカウントを作成方法 - gemini://technicalsuwako.moe/blog/blog/xmpp-account-create-way.xhtml.gmi
2021-08-18T00:00:00Z09:00 【デジタル自主】076は手伝い予定 - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-076-can-help.xhtml.gmi
2021-07-23T00:00:00Z09:00 【海賊版ソフト】存在している理由は? - gemini://technicalsuwako.moe/blog/blog/kaizoku-soft-sonzai-riyuu.xhtml.gmi
2021-05-29T00:00:00Z09:00 【Plasma Mobile】日本語キーボードを有効にする方法 - gemini://technicalsuwako.moe/blog/blog/plasma-mobile-japanese-keybod-active.xhtml.gmi
2021-05-28T00:00:00Z09:00 【PeerTube】ストレージフォルダを変更方法 - gemini://technicalsuwako.moe/blog/blog/peertube-change-storeg-forder.xhtml.gmi
2021-05-08T00:00:00Z09:00 【意見】近代のウェブ開発:「インストール方法はもう簡単になった」 - gemini://technicalsuwako.moe/blog/blog/kindai-web-dev-install-muzukasi.xhtml.gmi
2021-04-28T00:00:00Z09:00 【オディシー】Odysee日本語訳は間もなく来る - gemini://technicalsuwako.moe/blog/blog/odysee-japanese-transrate-soon.xhtml.gmi
2021-02-23T00:00:00Z09:00 LBRYと紹介します検閲できないのブロックチェーンやP2P型動画ソフト(第部) - gemini://technicalsuwako.moe/blog/blog/lbry-introduce-no-censorship-blockchain-p2p-video-soft.xhtml.gmi
2021-02-19T00:00:00Z09:00 【Mobian】Chromiumブラウザを使える方 - gemini://technicalsuwako.moe/blog/blog/mobian-chromium-browser-can-use-method.xhtml.gmi
2020-12-19T00:00:00Z09:00 【Mobian】テーマの変更、日本語(今は仮名だけ)を入力、スクショを取り方 - gemini://technicalsuwako.moe/blog/blog/mobian-change-theme-kana-insert-sukusyo-takeway.xhtml.gmi
2020-12-19T00:00:00Z09:00 Linuxスマホのメリットデメリット - gemini://technicalsuwako.moe/blog/blog/linux-smaho-merit-demerit.xhtml.gmi
2020-12-18T00:00:00Z09:00 【Pinephone】fcitx5+mozcで日本語入力方法(漢字も) - gemini://technicalsuwako.moe/blog/blog/pinephone-fcitx5-mozc-japanese-with-kanji.xhtml.gmi
2020-12-06T00:00:00Z09:00 【Pinephone】4G、通話等の設定方法 - gemini://technicalsuwako.moe/blog/blog/pinephone-4g-telephone-setting-way.xhtml.gmi
2020-11-29T00:00:00Z09:00 【Mobian】アップデート問題の修正方法 - gemini://technicalsuwako.moe/blog/blog/mobian-fix-apdate-probrem.xhtml.gmi
2020-10-21T00:00:00Z09:00 Adobeは高すぎぃオープンソースで動画編集しよう - gemini://technicalsuwako.moe/blog/blog/open-source-douga-hensyu.xhtml.gmi
2020-05-10T00:00:00Z09:00 【YouTube】UltimatePismanのお知らせ - gemini://technicalsuwako.moe/blog/blog/20200510-youtsube-jotai.xhtml.gmi
2020-02-10T00:00:00Z09:00 【日本API・PHP】簡単に都道府県名等の取り出し方 - gemini://technicalsuwako.moe/blog/blog/tadashi-wai-no-api-de-todofuken-joho-toridasu.xhtml.gmi
2020-01-24T00:00:00Z09:00 【Postfix】スパム踏み台になった場合、mailq削除方法です - gemini://technicalsuwako.moe/blog/blog/postfix-spam-fumidai-keshitewa-ii-ne.xhtml.gmi
2019-12-05T00:00:00Z09:00 日本APIを開発中部分公開開始 - gemini://technicalsuwako.moe/blog/blog/nihon-api-wa-chotto-dake-kokaichu.xhtml.gmi
2019-07-19T00:00:00Z09:00 Debian 9(stretch)→10(buster)バージョンアップする方法 - gemini://technicalsuwako.moe/blog/blog/debian-stretch-buster-upgrade.xhtml.gmi
2018-12-14T00:00:00Z09:00 はじめまして - gemini://technicalsuwako.moe/blog/blog/hajimemashite.xhtml.gmi
2024-01-04T00:00:00Z09:00 【プログラミング】生産力を増大する方法 - gemini://technicalsuwako.moe/blog/rice-productive.gmi
2023-12-25T00:00:00Z09:00 【セキュリティ】ウィルス対策ソフトは危険 - gemini://technicalsuwako.moe/blog/anti-virus-dangerous.gmi
2023-12-21T00:00:00Z09:00 【プログラミング】アドバイス2:早期リターン - gemini://technicalsuwako.moe/blog/programming-early-return.gmi
2023-12-12T00:00:00Z09:00 【】byobu 5.2登場 - gemini://technicalsuwako.moe/blog/byobu-52.gmi
2023-12-11T00:00:00Z09:00 【デジタル自主】076動画ホスティングの解決策 - gemini://technicalsuwako.moe/blog/digital-autonomy-076video-hosting.gmi
2023-12-05T00:00:00Z09:00 【プログラミング】アドバイス1:運命のピラミッドを回避 - gemini://technicalsuwako.moe/blog/programming-pyramid-of-doom.gmi
2023-12-01T13:30:00Z09:00 【】sp 1.1.2登場 - gemini://technicalsuwako.moe/blog/sp-112.gmi
2023-12-01T13:00:00Z09:00 【】sp 1.1.1登場 - gemini://technicalsuwako.moe/blog/sp-111.gmi
2023-12-01T00:00:00Z09:00 【】sp 1.1.0登場 - gemini://technicalsuwako.moe/blog/sp-110.gmi
2023-11-30T00:00:00Z09:00 【】sp 1.0.0登場 - gemini://technicalsuwako.moe/blog/sp-100.gmi
2023-11-15T00:00:00Z09:00 【】spliti 2.1.0登場 - gemini://technicalsuwako.moe/blog/spliti-210.gmi
2023-11-09T00:00:00Z09:00 【】imgproxy 1.1.0登場 - gemini://technicalsuwako.moe/blog/imgproxy-110.gmi
2023-11-06T00:00:00Z09:00 【】spliti 2.0.1登場 - gemini://technicalsuwako.moe/blog/spliti-201.gmi
2023-11-05T00:00:00Z09:00 【】spliti 2.0.0登場 - gemini://technicalsuwako.moe/blog/spliti-200.gmi
2023-10-23T16:00:00Z09:00 【076】乗換 1.0.2登場 - gemini://technicalsuwako.moe/blog/norikae-102.gmi
2023-10-23T00:00:00Z09:00 【オワコンテック】spliti 1.1.2登場 - gemini://technicalsuwako.moe/blog/spliti-112.gmi
2023-10-15T00:00:00Z09:00 【PostmarketOS】自分のレポジトリを作り方 - gemini://technicalsuwako.moe/blog/postmarketos-make-repository.gmi
2023-09-09T00:00:00Z09:00 【オワコンテック】spliti 1.1.1登場 - gemini://technicalsuwako.moe/blog/spliti-111.gmi
2023-08-04T00:00:00Z09:00 【PHP】正しい連絡フォームの作り方(クライアント側をぜったいに信用するな) - gemini://technicalsuwako.moe/blog/fix-broken-contact-form.gmi
2023-08-01T00:00:00Z09:00 【Zig言語】第部~基本的な紹介・セットアップ・「こんにちは、世界」 - gemini://technicalsuwako.moe/blog/zig-gengo-1.gmi
2023-07-17T02:40:00Z09:00 【】URLロリ 2.2.0登場 - gemini://technicalsuwako.moe/blog/urloli-220.gmi
2023-07-17T02:30:00Z09:00 【076】保存サイト 1.1.0登場 - gemini://technicalsuwako.moe/blog/hozonsite-110.gmi
2023-07-04T00:00:00Z09:00 【】URLロリ 2.1.1登場 - gemini://technicalsuwako.moe/blog/urloli-211.gmi
2023-07-03T00:00:00Z09:00 【デジタル自主】自宅サーバーからWireGuardを使ったホスティング方法 - gemini://technicalsuwako.moe/blog/digital-autonomy-with-wireguard-home-host.gmi
2023-06-23T19:20:00Z09:00 【076】保存サイト 1.0.0登場 - gemini://technicalsuwako.moe/blog/hozonsite-100.gmi
2023-06-23T08:15:00Z09:00 【076】乗換 1.0.1登場 - gemini://technicalsuwako.moe/blog/norikae-101.gmi
2023-06-23T08:00:00Z09:00 【】rofi-youtube 1.0.1登場 - gemini://technicalsuwako.moe/blog/rofi-youtube-101.gmi
2023-06-22T00:00:00Z09:00 【076】乗換 1.0.0登場 - gemini://technicalsuwako.moe/blog/norikae-100.gmi
2023-06-18T00:00:00Z09:00 【ペット】猫との散歩をトレーニング方法 - gemini://technicalsuwako.moe/blog/neko-sampo.gmi
2023-06-10T00:00:00Z09:00 【】rofi-youtube 1.0.0登場 - gemini://technicalsuwako.moe/blog/rofi-youtube-100.gmi
2023-06-06T00:00:00Z09:00 【デジタル自主】OpenBSDでGeminiサーバーを設置方法 - gemini://technicalsuwako.moe/blog/openbsd-gemini-server.gmi
2023-05-30T00:00:00Z09:00 【】Libre Redirect 2.6.2登場 - gemini://technicalsuwako.moe/blog/libreredirect-262.gmi
2023-05-24T21:00:00Z09:00 【プログラミング】RustとZigの違い - gemini://technicalsuwako.moe/blog/diff-zig-rust.gmi
2023-05-24T00:00:00Z09:00 【オワコンテック】spliti 1.1.0登場 - gemini://technicalsuwako.moe/blog/spliti-110.gmi
2023-05-18T00:00:00Z09:00 【プログラミング】Zig言語を使ってC向けのライブラリを利用する方法 - gemini://technicalsuwako.moe/blog/c-lib-in-zig-use.gmi
2023-05-13T00:00:00Z09:00 【】URLロリ 2.1.0登場 - gemini://technicalsuwako.moe/blog/urloli-210.gmi
2023-05-12T00:00:00Z09:00 【】URLロリ 2.0.2登場 - gemini://technicalsuwako.moe/blog/urloli-202.gmi
2023-05-10T17:45:00Z09:00 【】URLロリ 2.0.1登場 - gemini://technicalsuwako.moe/blog/urloli-201.gmi
2023-05-10T00:00:00Z09:00 【】URLロリ 2.0.0登場 - gemini://technicalsuwako.moe/blog/urloli-200.gmi
2023-05-07T00:00:00Z09:00 【オワコンテック】vixip 1.0.0登場 - gemini://technicalsuwako.moe/blog/vixip-release.gmi
2023-04-19T00:00:00Z09:00 【OpenBSD】更新後「zsh: undefined symbol &#39;_udivdi3&#39;」というエラーの修正する方法 - gemini://technicalsuwako.moe/blog/openbsd-zsh-udivdi3-syusei.gmi
2023-04-18T00:00:00Z09:00 【Crux】自分のポートとレポジトリを作り方 - gemini://technicalsuwako.moe/blog/crux-make-port-repository.gmi
2023-04-01T00:00:00Z09:00 【OpenBSD】xmodmapを使って英数(Caps Lock)キーをスーパーキーに変更する方法 - gemini://technicalsuwako.moe/blog/openbsd-change-eisu-super.gmi
2023-03-27T00:00:00Z09:00 【デジタル奴隷制度】低水準言語書ける方が消えたら、テクニカルな世界がおしまい - gemini://technicalsuwako.moe/blog/digital-dorei-dont-die-low-lever-programing.gmi
2023-03-08T00:00:00Z09:00 【デジタル監視】プライバシーに一番の脅威は監視カメラ、二番はスマホ - gemini://technicalsuwako.moe/blog/digital-kansi-most-danger-cctv.gmi
2023-02-08T00:00:00Z09:00 【HTML】静的サイトジェネレーター利用せず簡単に静的サイト編集する方法 - gemini://technicalsuwako.moe/blog/no-generator-easy-maintain.gmi
2023-02-07T00:00:00Z09:00 【HTML】静的サイトジェネレーター利用せず簡単に静的サイト管理する方法 - gemini://technicalsuwako.moe/blog/no-generator-easy-html.gmi
2023-02-03T00:00:00Z09:00 【ハード】IBM ThinkPad T43にSSDを入る方法 - gemini://technicalsuwako.moe/blog/thinkpad-t43-ssd-install-way.gmi
2023-01-17T00:00:00Z09:00 【セキュリティ】Wireguardを使って安全に自宅のネットワークをアクセスする方法 - gemini://technicalsuwako.moe/blog/access-network-wireguard.gmi
2022-12-12T00:00:00Z09:00 【I2P】ドメインを作成方法 - gemini://technicalsuwako.moe/blog/i2p-domain-make.gmi
2022-12-06T00:00:00Z09:00 【詐欺デミック】マスクをやめる時間だ!!(24時間後の状況) - gemini://technicalsuwako.moe/blog/mask-stop-time-2.gmi
2022-12-05T00:00:00Z09:00 【詐欺デミック】マスクをやめる時間だ!! - gemini://technicalsuwako.moe/blog/mask-stop-time.gmi
2022-11-17T00:00:00Z09:00 【OpenBSD】systemdユーザー向けrc.d使い方 - gemini://technicalsuwako.moe/blog/rcd-for-systemd-user.gmi
2022-11-15T00:00:00Z09:00 【Linux】systemdユーザー向けSysV使い方 - gemini://technicalsuwako.moe/blog/sysv-for-systemd-user.gmi
2022-11-13T00:00:00Z09:00 【nginx】Torユーザーは自動で.onionリンクに移転方法 - gemini://technicalsuwako.moe/blog/automatic-nginx-tor-redirect.gmi
2022-11-12T00:00:00Z09:00 【Linux】systemdユーザー向けOpenRC使い方 - gemini://technicalsuwako.moe/blog/openrc-for-systemd-user.gmi
2022-11-11T00:00:00Z09:00 【Linux】Debian 11からDevuan 4に交換方法 - gemini://technicalsuwako.moe/blog/debian-to-devuan-koukan.gmi
2022-11-10T00:00:00Z09:00 【Tor】出口ノードの設置方法 - gemini://technicalsuwako.moe/blog/set-up-tor-exit-node.gmi
2022-09-22T00:00:00Z09:00 【デジタル自主】「なぜ匿名化はそんなに必要ですか?」 - gemini://technicalsuwako.moe/blog/reason-for-anonymous.gmi
2022-09-18T00:00:00Z09:00 【デジタル自主】匿名者に必須なブラウザ拡張機能 - gemini://technicalsuwako.moe/blog/privacy-browser-extension.gmi
2022-09-08T00:00:00Z09:00 【Linux】systemdユーザー向けrunit使い方 - gemini://technicalsuwako.moe/blog/runit-for-systemd-user.gmi
2022-09-06T00:00:00Z09:00 【Chromium】偽カメラ配信の作成方法 - gemini://technicalsuwako.moe/blog/chromium-false-camera-stream-way.gmi
2022-08-20T00:00:00Z09:00 【詐欺師注意】chankan - gemini://technicalsuwako.moe/blog/chankan-is-scammer.gmi
2022-08-03T00:00:00Z09:00 【Tor】すべてのソフトウェアをいつでもTorを通じて使用する方法 - gemini://technicalsuwako.moe/blog/all-softwear-in-tor.gmi
2022-07-21T00:00:00Z09:00 【デジタル自主】ダークネットの解説 I2Pでウエブページをホスティングする方法 - gemini://technicalsuwako.moe/blog/darknet-4-i2p-hosting-way.gmi
2022-07-20T00:00:00Z09:00 【デジタル自主】ダークネットの解説 Torでウエブページをホスティングする方法 - gemini://technicalsuwako.moe/blog/darknet-3-tor-hosting-way.gmi
2022-07-19T00:00:00Z09:00 【デジタル監視】SDGsの危険性の紹介 - gemini://technicalsuwako.moe/blog/sdgs-kiken.gmi
2022-07-10T00:00:00Z09:00 【デジタル自主】ダークネットの解説 I2Pにアクセスする方法 - gemini://technicalsuwako.moe/blog/darknet-2-i2p-access-way.gmi
2022-07-09T00:00:00Z09:00 【デジタル自主】ダークネットの解説 Torにアクセスする方法 - gemini://technicalsuwako.moe/blog/darknet-1-tor-access-way.gmi
2022-06-24T00:00:00Z09:00 【デジタル自主】NeovimとGiteaでメモの書き方 - gemini://technicalsuwako.moe/blog/write-memo-with-neovim-git.gmi
2022-06-22T00:00:00Z09:00 【SSH】バックスペース、矢印等の変な表示の修正方法 - gemini://technicalsuwako.moe/blog/fix-ssh-backspace-output.gmi
2022-06-21T00:00:00Z09:00 【Linux】2FAより安全?GNU PASSとPWGEN - gemini://technicalsuwako.moe/blog/more-safe-than-2fa-is-pass-pwgen.gmi
2022-05-31T00:00:00Z09:00 【Pleroma】ホームタイムラインで500エラーの修正方法 - gemini://technicalsuwako.moe/blog/pleroma-home-timelain-500-error-fix.gmi
2022-04-06T00:00:00Z09:00 【Tox】サーバーの無いチャットソフトの紹介 - gemini://technicalsuwako.moe/blog/tox-p2p-chat-syokai.gmi
2022-04-05T00:00:00Z09:00 【デジタル自主】GnuPGでメールを暗号化する方法 - gemini://technicalsuwako.moe/blog/digital-autonomy-send-encryption-mail.gmi
2022-03-31T00:00:00Z09:00 【デジタル奴隷制度】米ブラックロックCEOはウクライナの茶番の実目的を確認しました - gemini://technicalsuwako.moe/blog/digital-dorei-blackcock-ceo-ukraina-hoax-real-agenda.gmi
2022-03-28T00:00:00Z09:00 【ウエブ開発】ウエブ開発者様へ、JavaScriptは不要 - gemini://technicalsuwako.moe/blog/webdev-javascript-ha-fuyou.gmi
2022-03-25T00:00:00Z09:00 【Lynx】TorとUTF-8で使い方 - gemini://technicalsuwako.moe/blog/lynx-tor-and-utf8-use-way.gmi
2022-03-18T00:00:00Z09:00 【仮想通貨】cointopで確認する方法 - gemini://technicalsuwako.moe/blog/cryptocurrency-kakunin-with-cointop.gmi
2022-03-12T00:00:00Z09:00 【Mobian】MyMoneroウォレットのインストール方法 - gemini://technicalsuwako.moe/blog/mobian-mymonero-wallet-use-way.gmi
2022-03-09T00:00:00Z09:00 【キャンセルカルチャー】全宇宙の会社はロシアに対して差別しているみたい… - gemini://technicalsuwako.moe/blog/cancel-culture-076-will-not-ban-russia.gmi
2022-03-02T00:00:00Z09:00 【デジタル奴隷制度】ウクライナ”侵略”の実目的 - gemini://technicalsuwako.moe/blog/digital-dorei-ukraina-russia-real-goal.gmi
2022-02-25T00:00:00Z09:00 【デジタル自主】Web1、Web2、Web3、Web0の違いは? - gemini://technicalsuwako.moe/blog/digital-autonomy-web-1-2-3-4-tigai.gmi
2022-02-16T00:00:00Z09:00 【デジタル自主】キャッシュレス社会の危険性 - gemini://technicalsuwako.moe/blog/digital-autonomy-cashless-problem.gmi
2022-02-15T00:00:00Z09:00 【デジタル自主】Web3.0(NFT、Qortal、メタバース等)は詐欺 - gemini://technicalsuwako.moe/blog/digital-autonomy-web3-is-scam.gmi
2022-01-28T00:00:00Z09:00 【デジタル監視】ワクチンパスポートの実目的 - gemini://technicalsuwako.moe/blog/digital-jisyu-own-or-permit.gmi
2022-01-27T00:00:00Z09:00 ホームページのリニュアル - gemini://technicalsuwako.moe/blog/webpage-renewal.gmi
2022-01-15T00:00:00Z09:00 【意見】chromiumの独占化悪 - gemini://technicalsuwako.moe/blog/iken-chromium-no-dokusenka-wa-aku.gmi
2021-12-27T00:00:00Z09:00 【デジタル自主】検閲法律=違法 - gemini://technicalsuwako.moe/blog/dejital-jisyu-censorship-law-is-illegal.gmi
2021-12-26T00:00:00Z09:00 【サービスの変更】076.ne.jp、076.moe、076.wtf - gemini://technicalsuwako.moe/blog/sarvice-kosin-076nejp-076moe.gmi
2021-12-19T00:00:00Z09:00 【デジタル自主】ビッグテック、アルトデック、フェディバース、どっちは勧める? - gemini://technicalsuwako.moe/blog/dejital-jisyu-bigtech-alttech-fedibars-which-recommend.gmi
2021-12-05T00:00:00Z09:00 【仮想通貨】プライバシー通貨一覧 - gemini://technicalsuwako.moe/blog/recommend-privasi-crypto.gmi
2021-12-03T00:00:00Z09:00 【PHP】gnupgの許可なし - gemini://technicalsuwako.moe/blog/php-gnupg-no-permission.gmi
2021-11-20T00:00:00Z09:00 【デジタル監視】コロナのタイムライン - gemini://technicalsuwako.moe/blog/digital-kansi-corona-taimrain.gmi
2021-11-12T00:00:00Z09:00 【デジタル自主】コミケットはオワコン。同人誌を楽しむのはオニオンケット - gemini://technicalsuwako.moe/blog/digital-jisyu-komiket-is-owakon-dojinsi-enjoy-onionket.gmi
2021-10-17T00:00:00Z09:00 【Prosody】mod_http_upload(XEP-0363)を有効にする方法 - gemini://technicalsuwako.moe/blog/prosody-modhttpupload-xep363-active-way.gmi
2021-10-02T00:00:00Z09:00 【XMPP】アカウントを作成方法 - gemini://technicalsuwako.moe/blog/xmpp-account-create-way.gmi
2021-08-18T00:00:00Z09:00 【デジタル自主】076は手伝い予定 - gemini://technicalsuwako.moe/blog/digital-autonomy-076-can-help.gmi
2021-07-23T00:00:00Z09:00 【海賊版ソフト】存在している理由は? - gemini://technicalsuwako.moe/blog/kaizoku-soft-sonzai-riyuu.gmi
2021-05-29T00:00:00Z09:00 【Plasma Mobile】日本語キーボードを有効にする方法 - gemini://technicalsuwako.moe/blog/plasma-mobile-japanese-keybod-active.gmi
2021-05-28T00:00:00Z09:00 【PeerTube】ストレージフォルダを変更方法 - gemini://technicalsuwako.moe/blog/peertube-change-storeg-forder.gmi
2021-05-08T00:00:00Z09:00 【意見】近代のウェブ開発:「インストール方法はもう簡単になった」 - gemini://technicalsuwako.moe/blog/kindai-web-dev-install-muzukasi.gmi
2021-04-28T00:00:00Z09:00 【オディシー】Odysee日本語訳は間もなく来る - gemini://technicalsuwako.moe/blog/odysee-japanese-transrate-soon.gmi
2021-02-23T00:00:00Z09:00 LBRYと紹介します検閲できないのブロックチェーンやP2P型動画ソフト(第部) - gemini://technicalsuwako.moe/blog/lbry-introduce-no-censorship-blockchain-p2p-video-soft.gmi
2021-02-19T00:00:00Z09:00 【Mobian】Chromiumブラウザを使える方 - gemini://technicalsuwako.moe/blog/mobian-chromium-browser-can-use-method.gmi
2020-12-19T00:00:00Z09:00 【Mobian】テーマの変更、日本語(今は仮名だけ)を入力、スクショを取り方 - gemini://technicalsuwako.moe/blog/mobian-change-theme-kana-insert-sukusyo-takeway.gmi
2020-12-19T00:00:00Z09:00 Linuxスマホのメリットデメリット - gemini://technicalsuwako.moe/blog/linux-smaho-merit-demerit.gmi
2020-12-18T00:00:00Z09:00 【Pinephone】fcitx5+mozcで日本語入力方法(漢字も) - gemini://technicalsuwako.moe/blog/pinephone-fcitx5-mozc-japanese-with-kanji.gmi
2020-12-06T00:00:00Z09:00 【Pinephone】4G、通話等の設定方法 - gemini://technicalsuwako.moe/blog/pinephone-4g-telephone-setting-way.gmi
2020-11-29T00:00:00Z09:00 【Mobian】アップデート問題の修正方法 - gemini://technicalsuwako.moe/blog/mobian-fix-apdate-probrem.gmi
2020-10-21T00:00:00Z09:00 Adobeは高すぎぃオープンソースで動画編集しよう - gemini://technicalsuwako.moe/blog/open-source-douga-hensyu.gmi
2020-05-10T00:00:00Z09:00 【YouTube】UltimatePismanのお知らせ - gemini://technicalsuwako.moe/blog/20200510-youtsube-jotai.gmi
2020-02-10T00:00:00Z09:00 【日本API・PHP】簡単に都道府県名等の取り出し方 - gemini://technicalsuwako.moe/blog/tadashi-wai-no-api-de-todofuken-joho-toridasu.gmi
2020-01-24T00:00:00Z09:00 【Postfix】スパム踏み台になった場合、mailq削除方法です - gemini://technicalsuwako.moe/blog/postfix-spam-fumidai-keshitewa-ii-ne.gmi
2019-12-05T00:00:00Z09:00 日本APIを開発中部分公開開始 - gemini://technicalsuwako.moe/blog/nihon-api-wa-chotto-dake-kokaichu.gmi
2019-07-19T00:00:00Z09:00 Debian 9(stretch)→10(buster)バージョンアップする方法 - gemini://technicalsuwako.moe/blog/debian-stretch-buster-upgrade.gmi
2018-12-14T00:00:00Z09:00 はじめまして - gemini://technicalsuwako.moe/blog/hajimemashite.gmi

59
src/blog/rice-productive.md ノーマルファイル
ファイルの表示

@ -0,0 +1,59 @@
title: 【プログラミング】生産力を増大する方法
author: 凛
date: 2024-01-04
tags: jp,blog,linux,bsd,セキュリティー,デジタル自主,ソフトウェア,メール,プライバシー
----
かつて、ハッカー達は非常に生産的でした。\
[例えば、ケン・トンプソンさん、デニス・リッチーさん、とブライアン・カーニハンさんは2年でUNIXを作りました。](http://w.sneed4fmhevap3ci4xhf4wgkf72lwk275lcgomnfgwniwmqvaxyluuid.onion/wiki/Unix%E3%81%AE%E6%AD%B4%E5%8F%B2?lang=ja)\
[しかし、現在では29人の人々が15年間Waylandを作っていますが、まだ本番環境には適していません。](https://gitlab.freedesktop.org/wayland/wayland)\
何故でしょうか。
今日のハッカーはもはや生産的ではありません。\
あたしは16年間ハッカーであり、その理由を説明します。
## 1. プログラミングはもはや楽しくない
あたしがプログラミングを始めた時、空のテキストエディタを開き、自分の好きな様にコードを書き、コンパイルし、それが商業的に出荷可能な製品でした。\
今日でもそれは可能ですが、2014年以降に始めたすべてのコーダーは、端末で「Hello World」を表示するだけの為に60の依存関係と300の異なるクラスを入り、複雑すぎるフレームワークを使います。\
貴方がそれを使わないと、貴方を素人だと思うでしょう。\
あたしは、そう思う人が素人だと思います。\
自身のソースコードを開くたびに、それをより良くする事にワクワクします。\
SucklessやOpenBSDチームによって作られたソースコードを開くたびに、編集する事にワクワクします。\
しかし、ほとんどの現代の開発者によって作られたソースコードを開くたびに、悲しく、怒り、そして惨めになります。
今日のコードはあちこちに散らばっています。\
今日のコードはもはや価値ある製品を作る事ではなく、永遠に同じコードベースに閉じ込められ、自殺したくなる様にする事です。
## 2. 技術は間違った方向に進んでいる
多くの人々は技術が前進していると主張していますが、その「前進」の方向が何であるかは誰も知りません。\
あたし達は50年前よりも優れたハードウェアを持っていますが、今日のソフトウェアはどんどん遅くなっています。\
我々は、卒業直後の若いコーダーを引き付ける為に人気のプログラムに複雑さを加えすぎており、彼らは大学でVisual Studio Code、React、Laravelのような不必要に複雑なプログラムの使用を学び、CI、Scrum、Agile、パッケージマネージャ、フレームワーク、Electron、Microsoft Office、IntelliJ、VS Code等の生産性を阻害する不要な事を気にする本物のプログラマーについて教えられています。\
あたしは高校中退ですが、Neovim、Git、そしてCやGoのような本物のプログラミング言語を使用しています。\
それ以外は何も使いません!\
[そして、まだ完成していないプログラムを除いて、たった1年で11のプログラムを作りました。](/portfolio.xhtml)\
これらのプログラムの殆どは1日未満で作成されました。\
いくつかはPHPから書き直され、他は時間をかけて徐々に更新され、続ける理由が見つからなかった数個は諦めました。\
現在、C、SDL、OpenGL、OpenALで3Dゲームを作成しており、2日後には機能的なプロトタイプが出来ました。
商業ゲーム開発で逆の事が起こっているのは、この業界だけです。\
[Unityとの論争の後、より多くのゲーム開発者が独自のゲームエンジンを書き始め、カスタムエンジンで同じくらい、またはそれ以上に生産的になり、カスタムエンジンははるかに軽量なので、より高品質なゲームを作る事が出来る事に気づきました。](https://zenn.dev/daichi_gamedev/articles/unity-licence-fee)
## 3. プログラミングにおける政治性
幸いな事に、日本では殆どのハッカーが政治から自由ですが、海外では「CODE_OF_CONDUCT.md」を持たないプロジェクトを見つけるのが非常に難しくなっています。\
これは、良いコードを殆ど貢献しない精神的に問題のある人々を快適にする為に、才能を追い出す様に設計されています。\
しかし、殆どのオープンソースプロジェクトは海外の物であり、政治に重点を置き過ぎている為、言ってはいけない言葉が多く、世界の50億人のうち2人を不快にする可能性がある事を事前に知っておかなければならず、特定の代名詞を使用する様に強制されますが、これはソフトウェア開発には属していません。\
日本のソフトウェア開発者は政治を気にしないにも関わらず、国内のハッカー文化には残念ながらこの影響が及んでおり、より国際化した日本の「現代的」な開発者が海外の「現代的」な開発者の影響を受けています。
## 4. 先輩が後輩に間違った方法を教える
あたしが以前言った様に、シンプルなテキストエディタ、バージョンコントロールと、コンパイラだけが良いソフトウェアを作る為に必要です。\
しかし、若い開発者には必要のない様々なツールの使用が教えられています。\
これはストレスを増やし、非生産的になるだけです。\
[BRIKの「フロントエンドエンジニアになるためのロードマップ」がその一例です。](https://brik.co.jp/tips/1125)\
あたしは「インターネットの基本を習得」、「HTML/CSS/JavaScriptの習得」、「バージョンコントロールの習得」と、「Webセキュリティ知識の習得」が必要だとは思いますが、それ以降は全く不要で、5番から19番を無視すれば、ずっと優れた生産性の高いフロントエンド開発者になれます。\
それら全てを学ばなければならないなら、良いソフトウェアを作る事には関心がなく、短期的な利益のみを目的とする悪い会社で働いているという事です。
古いUNIXコミュニティでは、削除出来る機能を常に探していましたが、現代の開発者は追加出来る機能を常に探しています。\
誰が最も生産的で、長期的に最もお金を稼いでおり、製品が最も安定しているかを見れば、UNIXの古参者達が正しい事は明らかです。
あたしは現代の産業を憎んでこの記事を書いたのではなく、常に一部である事を愛してきた産業の状態について心配しているからです。
以上

ファイルの表示

@ -28,7 +28,7 @@ find . -type f -name "blog.atom" -exec sed -i 's/https:\/\/technicalsuwako\.moe/
find . -type f -name "blog.atom" -exec sed -i 's/\.xhtml<\/id>/\.gmi<\/id>/g' {} +
find . -type f -name "blog.atom" -exec sed -i 's/\.xhtml" rel="alt/\.gmi" rel="alt/g' {} +
find . -type f -name "twtxt.txt" -exec sed -i 's/\/*$//' {} +
find . -type f -name "twtxt.txt" -exec sed -i 's/blog\/.*/blog\/\0\.gmi/g' {} +
find . -type f -name "twtxt.txt" -exec sed -i 's/\.xhtml/\.gmi/g' {} +
find . -type f -name "twtxt.txt" -exec sed -i 's/https:\/\/technicalsuwako\.moe/gemini:\/\/technicalsuwako\.moe/g' {} +
find . -type f -name "twtxt.txt" -exec sed -i 's/https:\/\/076\.moe/gemini:\/\/076\.moe/g' {} +
cd ..