From c11348d50070c32dd94079104877c9c933dc96b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AB=8F=E8=A8=AA=E5=AD=90?= Date: Wed, 25 Oct 2023 23:41:22 +0900 Subject: [PATCH] =?UTF-8?q?=E3=80=90=EF=BC=90=EF=BC=97=EF=BC=96=E3=80=91?= =?UTF-8?q?=E4=B9=97=E6=8F=9B=201.0.2=E7=99=BB=E5=A0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gemini/blog.atom | 189 ++++++++-------------------------- gemini/blog.gmi | 1 + gemini/blog/norikae-102.gmi | 24 +++++ gemini/twtxt.txt | 1 + src/blog/norikae-102/index.md | 24 +++++ 5 files changed, 94 insertions(+), 145 deletions(-) create mode 100644 gemini/blog/norikae-102.gmi create mode 100644 src/blog/norikae-102/index.md diff --git a/gemini/blog.atom b/gemini/blog.atom index 3466457..11e02c8 100644 --- a/gemini/blog.atom +++ b/gemini/blog.atom @@ -3,13 +3,56 @@ gemini://technicalsuwako.moe テクニカル諏訪子 - 2023-10-23T00:00:00Z + 2023-10-23T16:00:00Z テクニカル諏訪子 + + blog/norikae-102.gmi + + 【076】乗換 1.0.2登場 + 2023-10-23T16:00:00Z + + + + + + + + + + + + + + + + +<h2 id="heading">乗換って何?</h2> +<p>乗換はCLIでの路線情報を確認ツールです。<br /> +Yahooでスパイウェアが多すぎるため、CLI用のフロントエンドを作りました。</p> +<h2 id="heading-1">変更</h2> +<ul> +<li>ヤフー社はHTMLをちょっと更新されたから、乗換を修正する事が必要となった</li> +</ul> +<h2 id="heading-2">ソースコード</h2> +<p><a href="https://gitler.moe/suwako/norikae">Gitler</a><br /> +<a href="https://codeberg.org/TechnicalSuwako/norikae">Codeberg</a><br /> +<a href="https://notabug.org/TechnicalSuwako/norikae">Notabug</a><br /> +<a href="https://git.disroot.org/TechnicalSuwako/norikae">Disroot</a></p> +<h2 id="heading-3">ダウンロード</h2> +<p><a href="https://gitler.moe/suwako/norikae/releases">リリースページ</a><br /> +<a href="https://076.moe/repo/src/norikae">ソースコード</a><br /> +<a href="https://076.moe/repo/bin/norikae">バイナリー</a></p> +<p>以上</p> + + + + + blog/spliti-112.gmi @@ -417,149 +460,5 @@ doas apk add urloli - - blog/zig-gengo-1.gmi - - 【Zig言語】第1部~基本的な紹介・セットアップ・「こんにちは、世界」 - 2023-08-01T00:00:00Z - - - - - - - - - - - - - - - - -<h2 id="zig">Zig言語シリーズ</h2> -<p>このブログでは様々なプログラミング言語の使い方を紹介します。<br /> -主にZig、PHP、Go言語、C言語について解説し、更にはFLTK、Raylib、OpenGL等も取り上げます。</p> -<h2 id="zig-1">Zig言語とは?</h2> -<p>Zigは非常に新しい言語です。<br /> -Goが新しい形のPHP、Carbonが新しいC++、Kotlinが新しいJava、TypeScriptが新しいJavascript、Swiftが新しいObjective-Cのように、Zigは新しい形のC言語と考える事が出来ます。<br /> -初めて見ると、Zig言語は難しそうに見えますが、約1週間使ってみれば、そう難しくは感じなくなります。<br /> -現在、最新バージョンは0.10.1ですが、今週中には0.11.0のリリースが予定されています。<br /> -このシリーズではそのバージョンを使用します。</p> -<h2 id="czig">C言語とZig言語の違いは?</h2> -<p>C言語は16ビットの世代で作られましたが、Zigは64ビットの世代で作られたため、Zigの方がモダンな言語といえます。<br /> -Zig言語は、Rustのような安全性とGo言語のようなシンプルさを持っています。<br /> -コードの違いを以下で示します:</p> -<h3 id="c">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> -<span style="color:#0b0;font-weight:bold">int</span> <span style="color:#00a000">tuika</span> (<span style="color:#0b0;font-weight:bold">int</span> a, <span style="color:#0b0;font-weight:bold">int</span> b) { - <span style="color:#a2f;font-weight:bold">return</span> a <span style="color:#666">+</span> b; -} - -<span style="color:#0b0;font-weight:bold">int</span> <span style="color:#00a000">main</span> () { - <span style="color:#0b0;font-weight:bold">int</span> a <span style="color:#666">=</span> <span style="color:#666">1</span>; - <span style="color:#0b0;font-weight:bold">int</span> b <span style="color:#666">=</span> <span style="color:#666">2</span>; - printf(<span style="color:#b44">&#34;%d</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>, tuika(a, b)); - - <span style="color:#a2f;font-weight:bold">return</span> <span style="color:#666">0</span>; -} -</code></pre><h3 id="zig-2">Zig</h3> -<pre><code lang=""><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><span style="color:#bbb"></span><span style="color:#a2f;font-weight:bold">fn</span><span style="color:#bbb"> </span>tuika(a<span style="color:#666">:</span><span style="color:#bbb"> </span><span style="color:#0b0;font-weight:bold">u8</span>,<span style="color:#bbb"> </span>b<span style="color:#666">:</span><span style="color:#bbb"> </span><span style="color:#0b0;font-weight:bold">u8</span>)<span style="color:#bbb"> </span><span style="color:#0b0;font-weight:bold">u8</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">return</span><span style="color:#bbb"> </span>a<span style="color:#bbb"> </span><span style="color:#666">+</span><span style="color:#bbb"> </span>b;<span style="color:#bbb"> -</span><span style="color:#bbb"></span>}<span style="color:#bbb"> -</span><span style="color:#bbb"> -</span><span style="color:#bbb"></span><span style="color:#a2f;font-weight:bold">pub</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">fn</span><span style="color:#bbb"> </span>main()<span style="color:#bbb"> </span><span style="color:#666">!</span><span style="color:#0b0;font-weight:bold">void</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>a<span style="color:#666">:</span><span style="color:#bbb"> </span><span style="color:#0b0;font-weight:bold">u8</span><span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span><span style="color:#666">1</span>;<span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>b<span style="color:#666">:</span><span style="color:#bbb"> </span><span style="color:#0b0;font-weight:bold">u8</span><span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span><span style="color:#666">2</span>;<span style="color:#bbb"> -</span><span style="color:#bbb"> </span>std.debug.print(<span style="color:#b44">&#34;{d}</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>,<span style="color:#bbb"> </span>.{tuika(a,<span style="color:#bbb"> </span>b)});<span style="color:#bbb"> -</span><span style="color:#bbb"></span>}<span style="color:#bbb"> -</span></code></pre><p>よく見ると、スタイルは殆ど同じです。<br /> -ただし、main関数の戻り値はintではなくvoidになります。<br /> -そして、Zigではintが一つの型ではなく、様々なサイズ(u8~u128、i8~i128)があります。<br /> -また、C言語で「型名 変数名 = 値」や「戻り値の型名 関数名 (パラメータ)」と表現するところを、Zig言語では「変更可否 変数名: 型名 = 値」や「公開・非公開 fn 関数名(パラメータ) 戻り値の型名」と表現します。</p> -<h2 id="heading">セットアップ</h2> -<p>バージョン0.11.0がリリースされれば、パッケージマネージャからインストール出来る様になると思います。<br /> -そうでない場合は、以下のコマンドを実行してください。<br /> -まず、LLVM16以上が必要です。<br /> -それをインストールしたら、Zigをコンパイルする方法は:</p> -<pre><code lang=""><span style="color:#a2f">cd</span> zig-* -mkdir build -<span style="color:#a2f">cd</span> build -cmake .. -DZIG_STATIC_LLVM<span style="color:#666">=</span>ON -DCMAKE_PREFIX_PATH<span style="color:#666">=</span>/usr -make install -DPREFIX<span style="color:#666">=</span>/usr -</code></pre><p>注意:あたしはCRUXでしかコンパイル出来ませんでした。<br /> -Artix、OpenBSD、FreeBSDでは失敗しました。<br /> -Devuanは確認していません。</p> -<p>インストール後、新しいフォルダを作り、新しいプロジェクトを作成しましょう:</p> -<pre><code lang="">mkdir hello -<span style="color:#a2f">cd</span> hello -zig init-exe -</code></pre><p>現在のファイルは以下の様になります:</p> -<pre><code lang="">. -├── build.zig -└── src - └── main.zig -</code></pre><p>そのまま<code lang="">zig build run</code>を実行すると:</p> -<pre><code lang=""># zig build run -All your codebase are belong to us. -Run `zig build test` to run the tests. -</code></pre><h2 id="heading-1">「こんにちは、世界!」</h2> -<p>build.zigについては次の記事で紹介します。<br /> -まず、src/main.zigを開き、全て削除し、以下のコードを書いて下さい。</p> -<pre><code lang=""><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><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>std.io<span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span>io;<span style="color:#bbb"> -</span><span style="color:#bbb"> -</span><span style="color:#bbb"></span><span style="color:#a2f;font-weight:bold">pub</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">fn</span><span style="color:#bbb"> </span>main()<span style="color:#bbb"> </span><span style="color:#666">!</span><span style="color:#0b0;font-weight:bold">void</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>stdout_file<span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span>io.getStdOut().writer();<span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">var</span><span style="color:#bbb"> </span>bw<span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span>io.bufferedWriter(stdout_file);<span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>stdout<span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span>bw.writer();<span style="color:#bbb"> -</span><span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">try</span><span style="color:#bbb"> </span>stdout.print(<span style="color:#b44">&#34;こんにちは、世界!</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>,<span style="color:#bbb"> </span>.{});<span style="color:#bbb"> -</span><span style="color:#bbb"> -</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">try</span><span style="color:#bbb"> </span>bw.flush();<span style="color:#bbb"> -</span><span style="color:#bbb"></span>}<span style="color:#bbb"> -</span></code></pre><p>保存すると、以下のエラーが表示されます:</p> -<pre><code lang=""> 1 main.zig|2 col 10| : error: expected &#39;;&#39; after declaration -</code></pre><p>はい、エラーがあると、それを修正するまでテキストエディターを閉じる事が出来ません。<br /> -エラーを直しましょう!</p> -<pre><code lang=""><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>io<span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span>std.io;<span style="color:#bbb"> </span><span style="color:#080;font-style:italic">// ioとstd.ioを交換しましょう。 -</span></code></pre><h3 id="heading-2">ビルドと実行すると</h3> -<pre><code lang=""># zig build run -こんにちは、世界! -</code></pre><h3 id="heading-3">コードの解説</h3> -<pre><code lang=""><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></code></pre><p>これにより、Zigの公式標準ライブラリを使用出来る様になります。</p> -<pre><code lang=""><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>io<span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span>std.io;<span style="color:#bbb"> -</span></code></pre><p>これにより、ioコマンドをより簡単に実行出来る様になります。<br /> -例えば、「std.io.getStdOut().writer();」を「io.getStdOut().writer();」に短縮出来ます。<br /> -勿論、「const writer = std.io.getStdOut().writer();」と書く事も可能ですが、一度しか実行しないならばそれはもったいないです。</p> -<pre><code lang=""><span style="color:#a2f;font-weight:bold">pub</span><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">fn</span><span style="color:#bbb"> </span>main()<span style="color:#bbb"> </span><span style="color:#666">!</span><span style="color:#0b0;font-weight:bold">void</span><span style="color:#bbb"> </span>{}<span style="color:#bbb"> -</span></code></pre><p>pubは公開を意味し、fnは関数を意味します。<br /> -JavaやC#を使った経験があれば、「public function」の様な物です。<br /> -興味深い部分は「!void」です。<br /> -この「!」は「anyerror」と同じ意味を持ちます。<br /> -「void」だけであれば、戻り値の型はいつでもvoidですが、「!void」の場合は「エラーがあれば、そのエラーを返し、なければvoidになる」という意味になります。<br /> -とても便利だわー!!</p> -<pre><code lang=""><span style="color:#bbb"> </span><span style="color:#a2f;font-weight:bold">try</span><span style="color:#bbb"> </span>stdout.print(<span style="color:#b44">&#34;こんにちは、世界!</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>,<span style="color:#bbb"> </span>.{});<span style="color:#bbb"> -</span></code></pre><p>最後に、この「try」は「このコマンドがメモリ上で安全であれば、実行してください」という意味を持ちます。<br /> -また、この「.{}」は常に必要です。<br /> -値を使う場合は、それを「.{}」の中に入れましょう。<br /> -例えば:</p> -<pre><code lang=""><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>age<span style="color:#666">:</span><span style="color:#bbb"> </span><span style="color:#0b0;font-weight:bold">u8</span><span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span><span style="color:#666">20</span>;<span style="color:#bbb"> -</span><span style="color:#bbb"></span><span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span>name<span style="color:#666">:</span><span style="color:#bbb"> </span>[]<span style="color:#a2f;font-weight:bold">const</span><span style="color:#bbb"> </span><span style="color:#0b0;font-weight:bold">u8</span><span style="color:#bbb"> </span><span style="color:#666">=</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;田中&#34;</span>;<span style="color:#bbb"> -</span><span style="color:#bbb"> -</span><span style="color:#bbb"></span><span style="color:#a2f;font-weight:bold">try</span><span style="color:#bbb"> </span>stdout.print(<span style="color:#b44">&#34;{s}さん、{d}歳になったら、大人ですよ。</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>,<span style="color:#bbb"> </span>.{<span style="color:#bbb"> </span>name,<span style="color:#bbb"> </span>age<span style="color:#bbb"> </span>});<span style="color:#bbb"> -</span></code></pre><pre><code lang="">田中さん、20歳になったら、大人ですよ。 -</code></pre><p>生成されるバイナリはzig-out/binフォルダに格納されます。</p> -<p>続く</p> - - - - - diff --git a/gemini/blog.gmi b/gemini/blog.gmi index 7c3e161..635a7e4 100644 --- a/gemini/blog.gmi +++ b/gemini/blog.gmi @@ -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登場 diff --git a/gemini/blog/norikae-102.gmi b/gemini/blog/norikae-102.gmi new file mode 100644 index 0000000..6cf9f19 --- /dev/null +++ b/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 バイナリー + +以上 diff --git a/gemini/twtxt.txt b/gemini/twtxt.txt index d412abc..13035a9 100644 --- a/gemini/twtxt.txt +++ b/gemini/twtxt.txt @@ -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 diff --git a/src/blog/norikae-102/index.md b/src/blog/norikae-102/index.md new file mode 100644 index 0000000..22d2d75 --- /dev/null +++ b/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,ソフト開発,076,乗換 +---- +## 乗換って何? +乗換は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) + +以上