logo astralscience

          
        
Gopher was introduced in 1991 as a way to organize and distribute information across the Internet before WWW became dominant. It was especially popular at universities in the U.S., where departments used it to publish course materials, research archives, and campus resources in a simple, menu-driven format. Long before browsers, Gopher offered a coherent way to "browse" information using nothing more than text.
Gopherは、WWWが主流になる以前に、インターネット上の情報を整理し配信する手段として、1991年に登場しました。 特にアメリカの大学で広く利用され、各学部や部署が、授業資料、研究アーカイブ、学内リソースなどを、 シンプルなメニュー形式で公開するために使われていました。 ブラウザが登場するはるか以前から、Gopherはテキストだけを用いて 情報を「閲覧」できる、一貫した仕組みを提供していたのです。
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket::INET;

my $host = "gopher.floodgap.com";
my $port = 70;
my $selector = ""; # empty means root menu

my $sock = IO::Socket::INET->new(
    PeerHost => $host,
    PeerPort => $port,
    Proto    => "tcp",
    Timeout  => 5,
) or die "Cannot connect\n";

# Send selector + CRLF
print $sock "$selector\r\n";

while (my $line = <$sock>) {
    chomp $line;
    last if $line eq "."; # end of menu

    my ($type, $rest) = ($line =~ /^(.)(.*)$/);
    my ($label, $sel, $h, $p) = split /\t/, $rest;

    printf "[%s] %s\n", type_name($type), $label;
}

close $sock;

sub type_name {
    return {
        '0' => 'TEXT',
        '1' => 'MENU',
        '7' => 'SEARCH',
        '9' => 'BINARY',
        'g' => 'GIF',
        'I' => 'IMAGE',
    }->{$_[0]} || "OTHER";
}
Above is a Gopher client written in Perl, designed to show how early Internet services were often explored directly, without layers of abstraction. It opens a raw TCP connection to a Gopher server, sends a simple selector request, and prints the returned menu in a human-readable form. No libraries beyond basic socket support — just text flowing over the network. Programs like this were common in the early days of the Internet.
上記はPerlで書かれたGopherクライアントで、初期のインターネットサービスが、抽象化の層を重ねることなく、直接的に探求されていたことを示すためのものです。 このプログラムはGopherサーバーに対して生のTCP接続を開き、シンプルなセレクタ要求を送信し、返ってきたメニューを人間が読める形で表示します。 基本的なソケット機能以外のライブラリは一切使わず、ネットワーク上を流れるのはただのテキストだけです。 このようなプログラムは、インターネットの黎明期にはごく一般的な存在でした。
-;WebKit;desktop;-;-;-;bot;-
Hi guys. Glad you are here. Hope you enjoy the website.
When you view the source for this page, you will immediately notice there are countless custom HTML tags embedded. These are Web Components implemented using solid-element. You should definitely check it out!
このページのソースを閲覧いただくと、カスタム・タグが埋め込まれて いることが分かります。いずれもウェブ・コンポーネントであり、 これらは solid-element を使えば、容易に実装することが出来るものです。 機会があればチェックするのも一考です。
aaa
Main Content
About
About this website
Web Tech
Web Technologies in general
Links
Links to my favorite websites
Artwork
My artwork
Daily Log
Misc. notes
Who am I?
Who is making this website?
Contact
Contact me.
このサイトについて
このサイトについて
古本のこと
古本について思うことを書きました
ウェブ技術
ウェブ技術について発信しています
イラスト
暇なときに描いたイラストの置き場所
リンク集
お世話になっているウェブサイトへのリンク
日誌
雑多なことを書き綴ったもの
作者について
誰がこのサイトを作っているのか
お問い合わせフォーム
どうぞお気軽にお問い合わせ下さい
Using Parlin noise to move 150 particles around. This is a demo app written in WebAssembly. Visit my Github repo for the source.
Perlin Noise を使って 150 個の粒子を動かす、デモ用の WebAssembly アプリです。興味のある方は私の Github リポジトリ をみて下さいね。
4-strokes engine we fix your kitchen
Github Repos
Check out my Github repos!
rawjs-generate
A sample RawJS app with PUB/SUB messaging to generate/destroy DOM elements.
RawJS JSDoc
cloudflare-workers-d1-rust-example
A sample code for Cloudflare Worker written in Rust using D1.
Cloudflare Worker D1 Rust
resize
A very simple CLI program written in Rust for resizing an image with specified width.
Rust image resize CLI
perlin-experiment-2
Another attempt in using Perlin noise. Last time, only the noise calculation was done in WASM, and a canvas animation was done in JS. This time, everything is done in WASM. To better serve as an introductory WASM sample app, I made the codes as simple as possible.
Rust wasm-pack wasm-bindgen js-sys web-sys Perlin Noise
jsdoc-for-type-safety
Use JSDoc comments, and run a type-check using TypeScript.
JSDoc TypeScript type-safety
simple-i18n-solution
A simplified version of what I have for my website for i18n localization.
i18n NodeJS Javascript
very-simple-wasm-2023
A sample WASM app using wasm-pack-plugin prepared as a learning material.
Rust wasm-pack wasm-bindgen js-sys web-sys wasm-pack-plugin
widgets-react-vs-solidjs
Comparing widgets implemented with React vs SolidJS.
This is more about using Emotion CSS and Tailwind CSS for React and SolidJS apps.
Web Components SolidJS React Emotion & Tailwind
latest-ts-setup-2022
Let me have a boiler plate for Babel + TypeScript.
Babel TypeScript React Emotion & Tailwind
flight-pack
A demo app using wasm-pack-plugin, drawing flight information on Google Map.
Rust wasm-pack wasm-bindgen js-sys web-sys wasm-pack-plugin
sowngwala
A library for calculating sun's position.
"sowng" stands for "sun" in Belter language (from sci-fi movie "The Expanse").
"wala" for "one who is professional at".
Rust
mikaboshi
A Rust library for 風水 (风水) (Feng-Shui) providing basic Chinese astrological concepts such as 八卦 (Ba-Gua), 干支 (Gan-Zhi), 九星 (Jiu-Xing), 二十四节气 (Er-Shi-Si Jie-Qi), 二十四山向 (Er-Shi-Si Shan-Xiang), 生死衰旺 (Sheng-Si Shuai-Wang), etc. When bundled into a WASM (WebAssembly) app, you could associate the library with your Javascript apps as well.
Rust
perlin-experiment
This WASM app creates canvas elements for 2 divs, and runs animations. The WASM app is one, but handles 2 canvas elements. You may pass configs at initial startup. Clicking the upper canvas, you may toggle among 3 visualization modes. If you are only interested in Perlin Noise, see my JS project perlin-noise-world-map (which is quite old) which auto-generates geographic landscapes (source or demo). Or, see rust-perlin-wasm-test-2 (which is even much older) for particles moving in organic manner (source or demo).
Rust wasm-pack wasm-bindgen js-sys web-sys Perlin Noise
react-widget-airport
Bundling a React app into UMD library, embedded into another app. You can pass arguments at initial startup, or you can dynamically send/receive messages using SharedWorker.
React UMD library SharedWorker
react-widget-setup-2021
Just like the above react-widget-airport, but much simpler!
React UMD library SharedWorker