【076】乗換 1.0.2登場

このコミットが含まれているのは:
守矢諏訪子 2023-10-25 23:41:22 +09:00
コミット c11348d500
5個のファイルの変更94行の追加145行の削除

ファイルの表示

@ -3,13 +3,56 @@
<id>gemini://technicalsuwako.moe</id>
<title>テクニカル諏訪子</title>
<updated>2023-10-23T00:00:00Z</updated>
<updated>2023-10-23T16:00:00Z</updated>
<author><name>テクニカル諏訪子</name></author>
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
<entry>
<id>blog/norikae-102.gmi</id>
<author><name>凛</name></author>
<title type="html">【076】乗換 1.0.2登場</title>
<published>2023-10-23T16:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ソフト開発"></category>
<category term=""></category>
<category term="乗換"></category>
<link href="gemini://technicalsuwako.moe/blog/norikae-102.gmi" rel="alternate"></link>
<content type="html">
&lt;h2 id=&#34;heading&#34;&gt;乗換って何?&lt;/h2&gt;
&lt;p&gt;乗換はCLIでの路線情報を確認ツールです。&lt;br /&gt;
Yahooでスパイウェアが多すぎるため、CLI用のフロントエンドを作りました。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;変更&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ヤフー社はHTMLをちょっと更新されたから、乗換を修正する事が必要となった&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/norikae&#34;&gt;Gitler&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://codeberg.org/TechnicalSuwako/norikae&#34;&gt;Codeberg&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://notabug.org/TechnicalSuwako/norikae&#34;&gt;Notabug&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://git.disroot.org/TechnicalSuwako/norikae&#34;&gt;Disroot&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;ダウンロード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/norikae/releases&#34;&gt;リリースページ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://076.moe/repo/src/norikae&#34;&gt;ソースコード&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://076.moe/repo/bin/norikae&#34;&gt;バイナリー&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/spliti-112.gmi</id>
<author><name>凛</name></author>
@ -417,149 +460,5 @@ doas apk add urloli
</content>
</entry>
<entry>
<id>blog/zig-gengo-1.gmi</id>
<author><name>凛</name></author>
<title type="html">【Zig言語】第部~基本的な紹介・セットアップ・「こんにちは、世界」</title>
<published>2023-08-01T00:00:00Z</published>
<category term="blog"></category>
<category term="jp"></category>
<category term="プログラミング"></category>
<category term="zig"></category>
<category term="システム開発"></category>
<link href="gemini://technicalsuwako.moe/blog/zig-gengo-1.gmi" rel="alternate"></link>
<content type="html">
&lt;h2 id=&#34;zig&#34;&gt;Zig言語シリーズ&lt;/h2&gt;
&lt;p&gt;このブログでは様々なプログラミング言語の使い方を紹介します。&lt;br /&gt;
主にZig、PHP、Go言語、C言語について解説し、更にはFLTK、Raylib、OpenGL等も取り上げます。&lt;/p&gt;
&lt;h2 id=&#34;zig-1&#34;&gt;Zig言語とは?&lt;/h2&gt;
&lt;p&gt;Zigは非常に新しい言語です。&lt;br /&gt;
Goが新しい形のPHP、Carbonが新しいC++、Kotlinが新しいJava、TypeScriptが新しいJavascript、Swiftが新しいObjective-Cのように、Zigは新しい形のC言語と考える事が出来ます。&lt;br /&gt;
初めて見ると、Zig言語は難しそうに見えますが、約1週間使ってみれば、そう難しくは感じなくなります。&lt;br /&gt;
現在、最新バージョンは0.10.1ですが、今週中には0.11.0のリリースが予定されています。&lt;br /&gt;
このシリーズではそのバージョンを使用します。&lt;/p&gt;
&lt;h2 id=&#34;czig&#34;&gt;C言語とZig言語の違いは?&lt;/h2&gt;
&lt;p&gt;C言語は16ビットの世代で作られましたが、Zigは64ビットの世代で作られたため、Zigの方がモダンな言語といえます。&lt;br /&gt;
Zig言語は、Rustのような安全性とGo言語のようなシンプルさを持っています。&lt;br /&gt;
コードの違いを以下で示します:&lt;/p&gt;
&lt;h3 id=&#34;c&#34;&gt;C&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#080&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#080&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#080&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#080&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#00a000&#34;&gt;tuika&lt;/span&gt; (&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; a, &lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;int&lt;/span&gt; b) {
&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;return&lt;/span&gt; a &lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt; b;
}
&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; a &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; b &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt;;
printf(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;%d&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;, tuika(a, b));
&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;h3 id=&#34;zig-2&#34;&gt;Zig&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@import&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;std&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;fn&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;tuika(a&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;u8&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;b&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;u8&lt;/span&gt;)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;u8&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#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:#bbb&#34;&gt; &lt;/span&gt;a&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;b;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;pub&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;fn&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;main()&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;a&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;u8&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt;;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;b&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;u8&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt;;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std.debug.print(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;{d}&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:#bbb&#34;&gt; &lt;/span&gt;.{tuika(a,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;b)});&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;よく見ると、スタイルは殆ど同じです。&lt;br /&gt;
ただし、main関数の戻り値はintではなくvoidになります。&lt;br /&gt;
そして、Zigではintが一つの型ではなく、様々なサイズ(u8~u128、i8~i128)があります。&lt;br /&gt;
また、C言語で「型名 変数名 = 値」や「戻り値の型名 関数名 (パラメータ)」と表現するところを、Zig言語では「変更可否 変数名: 型名 = 値」や「公開・非公開 fn 関数名(パラメータ) 戻り値の型名」と表現します。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;セットアップ&lt;/h2&gt;
&lt;p&gt;バージョン0.11.0がリリースされれば、パッケージマネージャからインストール出来る様になると思います。&lt;br /&gt;
そうでない場合は、以下のコマンドを実行してください。&lt;br /&gt;
まず、LLVM16以上が必要です。&lt;br /&gt;
それをインストールしたら、Zigをコンパイルする方法は&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; zig-*
mkdir build
&lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; build
cmake .. -DZIG_STATIC_LLVM&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;ON -DCMAKE_PREFIX_PATH&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;/usr
make install -DPREFIX&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;/usr
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意あたしはCRUXでしかコンパイル出来ませんでした。&lt;br /&gt;
Artix、OpenBSD、FreeBSDでは失敗しました。&lt;br /&gt;
Devuanは確認していません。&lt;/p&gt;
&lt;p&gt;インストール後、新しいフォルダを作り、新しいプロジェクトを作成しましょう:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;mkdir hello
&lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; hello
zig init-exe
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;現在のファイルは以下の様になります:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;.
├── build.zig
└── src
└── main.zig
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;そのまま&lt;code lang=&#34;&#34;&gt;zig build run&lt;/code&gt;を実行すると:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;# zig build run
All your codebase are belong to us.
Run `zig build test` to run the tests.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;heading-1&#34;&gt;「こんにちは、世界!」&lt;/h2&gt;
&lt;p&gt;build.zigについては次の記事で紹介します。&lt;br /&gt;
まず、src/main.zigを開き、全て削除し、以下のコードを書いて下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@import&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;std&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std.io&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;io;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;pub&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;fn&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;main()&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;stdout_file&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;io.getStdOut().writer();&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;var&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;bw&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;io.bufferedWriter(stdout_file);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;stdout&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;bw.writer();&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;try&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;stdout.print(&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:#bbb&#34;&gt; &lt;/span&gt;.{});&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;try&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;bw.flush();&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;保存すると、以下のエラーが表示されます:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt; 1 main.zig|2 col 10| : error: expected &amp;#39;;&amp;#39; after declaration
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;はい、エラーがあると、それを修正するまでテキストエディターを閉じる事が出来ません。&lt;br /&gt;
エラーを直しましょう!&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;io&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std.io;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;// ioとstd.ioを交換しましょう。
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;heading-2&#34;&gt;ビルドと実行すると&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;# zig build run
こんにちは、世界!
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;heading-3&#34;&gt;コードの解説&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@import&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;std&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これにより、Zigの公式標準ライブラリを使用出来る様になります。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;io&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std.io;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これにより、ioコマンドをより簡単に実行出来る様になります。&lt;br /&gt;
例えば、「std.io.getStdOut().writer();」を「io.getStdOut().writer();」に短縮出来ます。&lt;br /&gt;
勿論、「const writer = std.io.getStdOut().writer();」と書く事も可能ですが、一度しか実行しないならばそれはもったいないです。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;pub&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;fn&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;main()&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;pubは公開を意味し、fnは関数を意味します。&lt;br /&gt;
JavaやC#を使った経験があれば、「public function」の様な物です。&lt;br /&gt;
興味深い部分は「!void」です。&lt;br /&gt;
この「!」は「anyerror」と同じ意味を持ちます。&lt;br /&gt;
「void」だけであれば、戻り値の型はいつでもvoidですが、「!void」の場合は「エラーがあれば、そのエラーを返し、なければvoidになる」という意味になります。&lt;br /&gt;
とても便利だわー!!&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;try&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;stdout.print(&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:#bbb&#34;&gt; &lt;/span&gt;.{});&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最後に、この「try」は「このコマンドがメモリ上で安全であれば、実行してください」という意味を持ちます。&lt;br /&gt;
また、この「.{}」は常に必要です。&lt;br /&gt;
値を使う場合は、それを「.{}」の中に入れましょう。&lt;br /&gt;
例えば:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;age&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;u8&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;20&lt;/span&gt;;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;name&lt;span style=&#34;color:#666&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;[]&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0b0;font-weight:bold&#34;&gt;u8&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;田中&amp;#34;&lt;/span&gt;;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;try&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;stdout.print(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;{s}さん、{d}歳になったら、大人ですよ。&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:#bbb&#34;&gt; &lt;/span&gt;.{&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;name,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;age&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;});&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;田中さん、20歳になったら、大人ですよ。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;生成されるバイナリはzig-out/binフォルダに格納されます。&lt;/p&gt;
&lt;p&gt;続く&lt;/p&gt;
</content>
</entry>
</feed>

ファイルの表示

@ -2,6 +2,7 @@
# 記事一覧
=> /blog/norikae-102.gmi 2023年10月23日 【076】乗換 1.0.2登場
=> /blog/spliti-112.gmi 2023年10月23日 【オワコンテック】spliti 1.1.2登場
=> /blog/postmarketos-make-repository.gmi 2023年10月15日 【PostmarketOS】自分のレポジトリを作り方
=> /blog/spliti-111.gmi 2023年09月09日 【オワコンテック】spliti 1.1.1登場

24
gemini/blog/norikae-102.gmi ノーマルファイル
ファイルの表示

@ -0,0 +1,24 @@
=> /blog.gmi ブログ一覧へ
#【076】乗換 1.0.2登場
投稿日2023-10-23
## 乗換って何?
乗換はCLIでの路線情報を確認ツールです。
Yahooでスパイウェアが多すぎるため、CLI用のフロントエンドを作りました。
## 変更
* ヤフー社はHTMLをちょっと更新されたから、乗換を修正する事が必要となった
## ソースコード
=> https://gitler.moe/suwako/norikae Gitler
=> https://codeberg.org/TechnicalSuwako/norikae Codeberg
=> https://notabug.org/TechnicalSuwako/norikae Notabug
=> https://git.disroot.org/TechnicalSuwako/norikae Disroot
## ダウンロード
=> https://gitler.moe/suwako/norikae/releases リリースページ
=> https://076.moe/repo/src/norikae ソースコード
=> https://076.moe/repo/bin/norikae バイナリー
以上

ファイルの表示

@ -3,6 +3,7 @@
# avatar = gemini://076.moe/static/suwako.jpg
# description = テクニカル諏訪子様のtwtxtフィード
# link = ホームページ gemini://technicalsuwako.moe
2023-10-23T16:00:00Z09:00 【076】乗換 1.0.2登場 - gemini://technicalsuwako.moe/blog/blog/norikae-102.gmi
2023-10-23T00:00:00Z09:00 【オワコンテック】spliti 1.1.2登場 - gemini://technicalsuwako.moe/blog/blog/spliti-112.gmi
2023-10-15T00:00:00Z09:00 【PostmarketOS】自分のレポジトリを作り方 - gemini://technicalsuwako.moe/blog/blog/postmarketos-make-repository.gmi
2023-09-09T00:00:00Z09:00 【オワコンテック】spliti 1.1.1登場 - gemini://technicalsuwako.moe/blog/blog/spliti-111.gmi

24
src/blog/norikae-102/index.md ノーマルファイル
ファイルの表示

@ -0,0 +1,24 @@
title: 【076】乗換 1.0.2登場
author: 凛
date: 2023-10-23 16:00
tags: jp,blog,ソフト開発,,乗換
----
## 乗換って何?
乗換はCLIでの路線情報を確認ツールです。\
Yahooでスパイウェアが多すぎるため、CLI用のフロントエンドを作りました。
## 変更
* ヤフー社はHTMLをちょっと更新されたから、乗換を修正する事が必要となった
## ソースコード
[Gitler](https://gitler.moe/suwako/norikae)\
[Codeberg](https://codeberg.org/TechnicalSuwako/norikae)\
[Notabug](https://notabug.org/TechnicalSuwako/norikae)\
[Disroot](https://git.disroot.org/TechnicalSuwako/norikae)
## ダウンロード
[リリースページ](https://gitler.moe/suwako/norikae/releases)\
[ソースコード](https://076.moe/repo/src/norikae)\
[バイナリー](https://076.moe/repo/bin/norikae)
以上