N予備校「プログラミング入門 Webアプリ」を受講しています。
今回は、第2章10節と11節になります。
HTTP通信
もっと具体的な内容だったりはたくさん情報があるのでそこで補完したい。HTTPは、HyperText Transfer Protocolの略。
HTMLなどのHyperTextを受け渡すアプリケーション層のプロトコル。
サーバーに接続して、GETメソッドを実行する
`nc nnn.ed.jp 80` nnn.ed.jp サーバーの 80 番ポートに接続するGET / HTTP/1.1
HTTPのGETメソッド。
/
(ドキュメントルート)の情報をHTTPプロトコル バージョン1.1で取得するという要求(リクエスト)。
400 Bad Request
がレスポンスとして返ってくる。
Ubuntu上でHTTPサーバーを立ち上げる
`python3 -m http.server 8000` Pythonを利用してサーバーを立ち上げる。curl localhost:8000/index.html
コンソールからアクセスする
ポートフォワード
``` config.vm.network "forwarded_port", guest: 8000, host: 8000 ``` 仮想化された Ubuntu のポートへの通信を、実際に使っている Windows や Mac のポートに転送する設定。 外から(guest)8000番でubuntuにアクセスされたら自分の(host)8000番に転送する。vagrant reload --provision
vagrant を再起動するとブラウザから確認できるようになる。
ポート番号が同じだから余計にややこしいような気がする。
ただ言いたいことはなんとなくわかる。
bot作成
:::note bot : 自動的に何かしらの処理を行ってくれるプログラム RSS : Web サイトの見出しや要約を XML (Extensible Markup Language) というマークアップ言語で記述した形式 :::#!/bin/bash
dirname="/home/vagrant/workspace/itunes-topsong-rss"
#ディレクトリ作成
mkdir -p $dirname
#現在時刻のファイル名
filename="${dirname}/hourly-topsong-`date +'%Y%m%d%H%M'`.xml"
#RSS XMLを取得
curl -s -o $filename -H "User-Agent: CrawlBot; xxxx@xxxx" https://itunes.apple.com/jp/rss/topsongs/limit=10/xml
echo Save to $filename
mkdir -p
ディレクトリが既にある場合でもエラーを表示しない。
${dirname}
文字列の中で変数を使いたい場合、${}
と記述する。
date +日付のフォーマット
バッククォートで囲うことでコマンドを実行できる。
nowdt=`date +'%Y%m%d%H%M'`
curl -s
転送情報などを出力しない
curl -o
実行結果を指定ファイルへ保存する
cronを使って自動化
:::note プログラムを決められたスケジュールにあわせて自動実行してくれるプロセス :::crontab -e
cronの設定ファイルを編集する
* * * * * /home/vagrant/workspace/bot/itunes-topsong.sh
冒頭の5つの*
がそれぞれ、
Minute(分) Hour(時間) DayOfMonth(日) Month(月) DayOfWeek(曜日) を指す。
crontab をオプションなしで実行した場合は、Ctrl + C で抜けること
オプションなしで実行すると、
忘れたころにやってしまいそう。
まとめ
ネットワークについてはもっと掘り下げて勉強したい。
12節以降はGitHubの使い方なので、記事にはしにくいかも。
年内には第2章終わらせたい。