Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

【読書メモ】中小企業の「システム外注」はじめに読む本

中小企業の「システム外注」はじめに読む本

中小企業の「システム外注」はじめに読む本

発注側からみた、システム外注に関わるアレコレをITコンサルタントさんが解説してくれる本です。
後出しジャンケンはダメよ」「仕様は丸投げじゃなくて、ちゃんと一緒に決めましょうね」といった発注側の類似ドキュメントにもよく書いてある事も乗ってます。

ただ、この本のキモはどっちかというと「社内抵抗勢力の対応」「訴訟時のムーブ」「社内の情報統制」といった、
発注元側自身が解決すべき問題についても言及が多いのが特徴です。

発注側でよく起こるらしい、こういった事情に通じておけば、関係性構築もスムーズに進むかもしれませんね。

webIoPiでRasPiのIOにブラウザから簡易的にアクセスする その2:WEB鯖の設定

実際のところ

$ cd /etc/webiopi 
$ YOUREDITOR config

ここで、WEB鯖のポートをデフォルトの8000番から、114514番に変更する事を想定します。
ファイル内を探すと以下のような部分がみつかるので……ポート番号を変更します。

[HTTP]
enabled = true
port = 8000
passwd-file = /etc/webiopi/passwd
doc-root = /home/pi/webiopi/examples/scripts/macros
welcome-file = index.html

他にもREST APIの設定やら、カスタムURL、独自スクリプト実行、さらにはCoAPみたいなのまで出来るようです。
REST APIの内容はこちら
webiopi.trouch.com

参考もと

webiopi.trouch.com

webIoPiでRasPiのIOにブラウザから簡易的にアクセスする その1:導入

webioPiはその名の通り、webからRasPiのIOに触れる事ができるライブラリです。
verは0.7系で止まってますが、RasPi3系では動きます。
ちょっとした試作であればCODESYSみたいなゴツのを導入したり、
あるいは自前のオラオラ系を作るよりスマートかも。

実際のところ

公式から圧縮ファイル(執筆時点でWebIOPi-0.7.1.tar.gz)を導入し、
解答&インストラー起動。
お手軽ですね。

$ tar xvzf WebIOPi-0.7.1.tar.gz
$ cd WebIOPi-x.y.z
$ sudo ./setup.sh

しばらく待って、こんなコマンドが実行できていれば成功。

$ sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port]

    Options:
      -h, --help           Display this help
      -c, --config  file   Load config from file
      -l, --log     file   Log to file
      -s, --script  file   Load script from file
      -d, --debug          Enable DEBUG

    Arguments:
      port                 Port to bind the HTTP Server

自動実行の準備

周辺機器に触れる関係でsudoでの実行が前提です。
本体起動時に自動実行して欲しい場合、systemdに先に登録しときます。
……クソザコなので意識してなかったのですが、Jessieからsystemdが推奨になってたんですね……。

$ cd /etc/systemd/system/
$ sudo cat <<EOS > webiopi.service
[Unit]
Description=WebIOPI
After=syslog.target

[Service]
Type=simple
WorkingDirectory=/usr/share/webiopi/htdocs
ExecStart=/usr/bin/python3 -m webiopi -l /var/log/webiopi -c /etc/webiopi/config
TimeoutStopSec=5
StandardOutput=null

[Install]
WantedBy = multi-user.target
EOS

で、起動&登録。

$ sudo systemctl start webiopi
$ sudo systemctl enable webiopi

crontabで、起動毎や1日一回のような短縮記法を

実際のところ

string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".

というわけで、起動時に必ず一回BOOTACTIONをするなら

@reboot BOOTACTION

ただ、cronなのでroot権限必要なのには向いてません。

参考もと

  • man 5 crontab

crontabの日時指定構文

field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)

というわけで、下の構文は5分ごと

*/5 * * * * CMD

0時から20時まで2時間ごとの場合

* 0-20/2 * * * CMD

参考もと

  • man 5 crontab

crontabをつかってみる

なんやかんやで、今日までマトモにcrontabを使った事がなかったのでメモ。

$ crontab -e

vi系エディタが立ち上がるので、編集
5分ごとにDocumentフォルダのhogehoge.txtをtouchしたい場合

*/5 * * * * touch ~/Documnt/hogehoge.txt

保存して閉じると……アクションが記録されます。

$ crontab -e
crontab: no crontab for shuzo_kino - using an empty one
crontab: installing new crontab

内容を確認

$ crontab -l
*/5 * * * * touch ~/Documnt/hogehoge.txt