ホーム » コンピュータ (ページ 16)
「コンピュータ」カテゴリーアーカイブ
自作スクリプトのエラー対策 try-catch
自宅で動かしているスクリプト、自前だから手抜きもあって、サーバトラブル時には他の機器が巻き込まれてエラーが増えることも多い。自室の homebridge などを動かしている Raspberry-Pi が暑さもあってか、再起動させたら一時的に気絶。復旧は問題なかったけど、気絶中に他の外気温測定のRaspberry-Pi がブローカーとなっている Raspberry-Pi が落ちているため、MQTT のデータ送信に失敗のエラーを出してる。
ちゃんと、connect で出るエラーを try-except で例外処理を追加した。
try : client = mqtt.Client( ... ) client.connect( BROKER ) client.publish( ... ) except ValueError as err : print( err ) except OSError as err : print( err )
以前から、トラブル時にウザいのが、Perl で書かれた RSS 情報をまとめるスクリプト。Perl での try-catch もどきということで eval{} if ( $@ ) … でエラー対策してるつもりなんだけどトラブル時のエラーがうまく動いていないような。今回あらためて、Perl try-catch で検索したら、Perl 5.34 で try-catch が実験的にサポートされているらしいので使ってみた。
use feature qw( try ) ;
no warnings "experimental::try" ;
:
try {
$feed->merge( $rss ) ;
} catch( $e ) {
print "catch $e" ;
}
# eval { $feed->merge( $rss ) ; } ;
# if ( $@ ) {
# warn "..." ;
# }
暑さ指数 WGPT 28℃
WBGT 28で作業奉仕…(>_<)
スクリプト言語の比較
Raspberry Pi で、自宅内の温湿度管理とか色々やっていて、shell や perl や python などのスクリプトを使っているけど、ただでさえ遅い Raspberry-Pi だし、少しでも軽く動いてほしくて、lua なども使っている。
でも、shell だと、bash で書いているけど、高機能な分だけ遅いし、少しでも軽くなればと、インストールされているスクリプト言語のサイズを改めて比較をしてみた。
$ ls -al <いろいろ> -rwxr-xr-x 1 root root 14000 1月 2 2021 /usr/bin/lua50 -rwxr-xr-x 1 root root 91904 12月 10 2020 /bin/dash -rwxr-xr-x 1 root root 92292 12月 22 2018 /bin/sed -rwxr-xr-x 1 root root 120704 2月 17 2020 /usr/bin/mawk -rwxr-xr-x 1 root root 133048 8月 1 2016 /usr/bin/lua5.1 -rwxr-xr-x 1 root root 974312 3月 28 2022 /bin/bash -rwxr-xr-x 2 root root 3201036 9月 25 2021 /usr/bin/perl5.32.1 -rwxr-xr-x 1 root root 4703672 3月 12 2021 /usr/bin/python3.9
個人的には、軽いスクリプトというと、sed < awk < lua < bash < perl < python というイメージで使い分けをしていた。
しかし、これを見ると、bash と dash で10倍の差、軽くなればと使っていた lua だけど、lua5.1 と lua50 でも 10 倍の差がある。perl だと bash の 3倍、python だと bash の5倍。バイナリのサイズが単純に処理速度に反映される訳ではないけど、これを見る限り、自分で書いている手抜きスクリプトであれば、dash や lua50 で動かした方がよさそうだな。
また、下手に Perl を使うぐらいなら、bash の中で sed や awk を交えながらスクリプトを書くことも多いけど、下手に bash の中で sed や awk をガシガシ使ったら、あんまり早くなさそうだな。
これからは、lua50 < dash < sed , awk < bash < perl < python かな。
よく出来たフィッシングだな….
コロナ感染入院給付金の請求
と思いフィルタ設定をしようと “Received:”タグを確認して、送信元の IP アドレスを確認したら本物だった。
改めて、日本生命さんのサイトに”メールのリンクを使わずに”ログインして確認してみたけど、しっかり自宅サーバのメアドも登録してあった。
<重要>【三井住友カード】お取引が決済できませんでした
((( /etc/postfix/main.cf )))
smtpd_client_restrictions = permit_mynetworks,
check_client_access regexp:/etc/postfix/smtpd_client_regexp
:
((( /etc/postfix/smtpd_client_regexp )))
:
/\.googleusercontent.com$/ REJECT
Raspberry-Pi MZ80C のボード差し替え
RPi model A+ が異常
以前に購入した Raspberry-Pi model A+ の MZ80C だけど、ボードがおかしくなっているのか、CPU 負荷がアイドル状態なのに 100% となっている。同様の Rapberry Pi と処理速度も変わらないし、何か変。RPi3 のボードに比べると処理速度も遅いし、RPi 3 model A+ のボードが同じ RPi3 model B より割安なのでボード差し替えをやってみる。
RPi 3 model A+ に差し替え
せっかくだし、表示部分も I2C 接続の SSD1306 の OLED Display を買う。
https://github.com/adafruit/Adafruit_Python_SSD1306
((( SSD1306 ))) GND VCC SCL SDA 黒 白 灰 紫 ((( BME280 ))) VDD GND NC SDI SDO SCK VDD GND -- SDA --- SCL 白 赤 × 黄 × 青 ((( Raspberry-Pi ))) 3.3 SDA SCK × GND
BME280, Adafruit SSD1306を使えるように
この RPi は、2Fのトイレに設置して、2Fの廊下全体の温度を測っていた。なので、載せ替えした RPi にも同様の機能を移植。
なんとか動くようになったかな。
ただ、syslog を見ると、電源電圧不足の警告が出ているし、たまに繋がらなくなる。確認すると再起動してる。USB電源アダプタ電流とれるやつに差し替えが必要だな。
次のホームサーバの検討
先日、安定して動いていた自宅サーバでトラブル発生。自宅BLOGをみると 2010年から動かしているみたいだな。そろそろ、次のサーバへの移行も考える時期かな。
最近の運用状況からすれば、CPU能力が必要な訳ではないし、今のサーバでも能力不足は特に感じない。小型PC用の CPUがN100 , Mem=8GB で、Windows11 が動くのものが、3万円ほどでも見つかる。
でも、同じような性能であれば、かなり古い macbookair に Ubuntu を入れたマシンもある。性能面で持ち運びで使う機会もないし、これでもいいのかな。とはいえ、そのmacbookair も調べると 2010 年の製品。SSDとかバッテリーは途中で買えているとはいえ、現行の自宅サーバと同年代か。
Twitter API有償化
Twitter に書き込んでいた自分の記事を、週末に自鯖のWordPress に転載させていたけど、昨日は認証に失敗。Twitter API ver 1.1 で記事を上げていたけど、Twitter API が有償化の影響だろう。
話には聞いていたけど、API で読むにしても書き込むにしても大した量じゃなし、影響考えてなかった。改めて確認すると、Tweet は一定量以下なら無償で利用できるけど、Tweet 取得は有償化の対象らしい。
んで、確認すると、Tweet取得をするのなら $100/月。うーん、使う気起こらねぇ。
自宅サーバトラブル
エコキュートのメモを書き残していたら、急に自宅サーバに繋がらなくなる。ping も通らない。
デバイスが見つけられなくなり、起動できなかったけど BIOS の boot device を色々触っていたら、なぜだか復帰。
一時的なトラブルならいいけど、サーバ故障の予兆かもしれないので、メモとして残す。
そろそろ、サーバも更新の準備をしておくべきかも。









