OkayTeacher
JA English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

通知を有効にする方法

このブラウザーまたはアドレスでは通知を利用できません。対応ブラウザーで安全な接続のSONUBサイトを開いてください。

通知がブロックされている場合は、ブラウザーの設定で許可してください。

  1. アドレスバー横のサイト設定、またはブラウザーのサイト設定を開き、このサイトの通知を許可に変更してください。
  2. 端末の設定でブラウザーの通知を許可し、おやすみモードや集中モードを確認してください。
  3. SONUBに戻ってページを再読み込みし、ベルから通知を有効にしてください。

iPhoneやiPadではSONUBをホーム画面に追加し、そこから開いて通知を許可してください。

バイブコーディングの一覧へ

Webクライアント

サーバーに何かを求めるもの、すべて。

ブラウザーも curl の1行も Web クライアントです。nc で HTTP リクエストを手で書いてから、curl と Chrome デベロッパーツールで同じテキストが行き来するのを確かめましょう。

ブラウザーの窓、黒いターミナルの窓、スマホが、それぞれ同じサーバーに封筒を送り、ページがそれぞれのもとに返ってくる。
も、も、スマホのアプリも同じ役割です。先に尋ね、が答えます。

ターミナルでWebクライアントを作る

が文字にすぎないといちばん早く納得する方法は、を自分で打つことです。前のテーマのWebサーバーを立てておき、をもう一つ開いて手で話しかけてみてください。

ncでリクエストを手書きする

はにつなぎ、打った文字をそのまま線へ流します。二行打ってEnterを二度押せばサーバーが答えます — 今あなたはブラウザーの仕事を手でやりました。

terminal
# connect, then type the two lines below and press Enter once more
nc localhost 8084

GET / HTTP/1.1
Host: localhost

# or send it all at once (printf's \r\n is HTTP's line break;
# sleep keeps the line open a moment so the shell server can answer)
{ printf 'GET / HTTP/1.1\r\nHost: localhost\r\n\r\n'; sleep 1; } | nc localhost 8084
  • 最後のが大事です。リクエストが終わったとサーバーに告げる印で、だからEnterをもう一度押します。
  • HTTPは行末ごとにとを求めます。手打ちでも通るのは多くのサーバーが寛容だからで、版は規格が求めるとおりを送ります。
  • はが必ず求めます。本物のサイトへこれなしで送ると、ページではなくエラーが返るのがふつうです。

スクリプトに包む

リクエストがprintf一行になれば、使い回せるは数行で済みます。下のは・ポート・を受け取ってリクエストを送り、と本文を分けて見せます。

client.sh
#!/bin/bash
# usage: bash client.sh localhost 8084 /

HOST=${1:-localhost}
PORT=${2:-8084}
PATH_=${3:-/}

{ printf 'GET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n' "$PATH_" "$HOST"; sleep 1; } \
  | nc "$HOST" "$PORT" \
  | tr -d '\r' \
  | awk 'BODY { print; next } /^$/ { BODY = 1; next } { print "[header] " $0 }'

はHTTPが行末ごとに残すキャリッジリターンを取り除き、は空行に出会うまでをヘッダーとして印を付けます — その後はすべて本文です。ブラウザーが描き始める前にする分け方とまったく同じです。

両側を一緒に動かしてみてください

一つのターミナルにシェルWebサーバー、もう一つにこのクライアントを立てれば、自分で書いた会話の両端を持つことになります。シェルWebサーバーに送るときは、上ののようにで接続を少し開けたままにしておかないと返事を受け取れません。サーバーの返事を書き換えるとクライアントがすぐ気付きます — 間に何もないからです。

シェルWebサーバーへ戻る

自分で記録する欄です。ここで採点はしません。

この段階を理解したものとして記録しますか?

まだ取り消せないので、本当に理解できたときだけ記録してください。

理解したものとして記録しました

自分で記録する欄です。ここで採点はしません。