Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

bashでプログレスバーを実装してみる その2:プログレスバーの文字列を変数代入でやる

shuzo-kino.hateblo.jp
の派生です。

実際のところ

以前はプログレスバーの文字列はyesコマンドを中心としたパイプ処理にて行いました。
今回は、より泥臭く変数代入でやってみます。

#!/bin/sh

for i in `seq 20 20 100`
do
  COUNT=$i
  STR="${STR}##"
  printf "%-10s(%3d%%)\r" $STR $COUNT
  sleep 1
done

printf "%20s\r"
printf "Finish!!\r"
sleep 1

これを以前の記事と同様yesコマンドやsedをつかった実装にすると、こんな感じ

#!/bin/sh

function bar ()
{
  printf "%-10s(%3s%%)\r" $1 $2
}

for i in `seq 20 20 100`
do
  COUNT=$i
  VAR=`expr $i / 10`
  STR=`yes "#" | head -$VAR | tr -d "\r\n"`
  bar $STR $COUNT
  sleep 1
done

printf "%20s\r"
printf "Finish!!\r"
sleep 1

性能比較

速度を比較すると……やる事が複雑化しているのでyes版のほうが少し遅くなります。
メンテナンス性

 $ time hoge_directtype.sh 
Finish!!            
real	0m6.161s
user	0m0.070s
sys	0m0.098s

$ time hoge_yestype.sh 
Finish!!            
real	0m6.081s
user	0m0.015s
sys	0m0.032s

参考もと

shuzo-kino.hateblo.jp

grepの--line-bufferedオプションで行ごとに出力

標準入力をうけとって処理するgrepコマンドの場合、行ごとに出力できた方がいい場合があります。
そういうときは"line-bufferd"オプションです。

実際のところ

$ netcat -ul -p 5000 | grep --line-buffered sender 

参考もと

hogem.hatenablog.com

netcat/ncコマンドでUDPパケットを受ける/送る

極々少量のデータを送りたいだけ……なんて時はUDPを使ってみるのも手かなと思い調べてみました。
UDPは音声や、設定ファイルの内部むけブロードキャスト通信で使ったりします。
上手につくると、スプラトゥーンのような展開の激しいゲームでもP2Pめいたデータ持ち回りを実現できます。
kanai6274.blogspot.com

実際のところ

基本的に "-u"、UDPのオプションをつけます。

受信するとき

  • lはlistenの略です。
$ netcat -ul -p 5000

パイプも使えます。
たとえばバッファーをパイプで繋いでgrepすることも

$ netcat -ul -p 5000 | grep --line-buffered sender 

データの送り先を指定可能。

$ netcat -ul -p 5000 > /path/to/backupfile.txt

さらに、送り先にはtty端末も設定できるので……
この例のように、リモートのシリアル端末に直接命令を叩き込む事も可能です。
セキュリティちゃんとやらないとぶっ壊される危険もありますが……。

$ netcat -ul -p 5000 > /dev/ttyUSB0

送信するとき

送信先がTARGETIPでポートが5000のとき
逐次入力はこんな感じ。

$ netcat -u TARGETIP 5000

こちらもパイプで繋げます。

$ tar cf - /path/to/dir | netcat -u TARGETIP 5000

Google formsで画像等ファイルをアップロードする

G-suiteログイン前提のため外部ユーザーは登録不能ですが、
Google formsではファイルのアップロードが可能です。
客先システムなら、これ投稿用G-suiteを作って渡しても元が取れるのでは……?

実際のところ

いつものフォーム画面。
f:id:shuzo_kino:20181209015028p:plain
フォームの追加
f:id:shuzo_kino:20181209015034p:plain
ドライブへのアクセス許可
f:id:shuzo_kino:20181209015057p:plain
許可するとこう
f:id:shuzo_kino:20181209015152p:plain
種類を指定できる。
今回は画像とPDFだけに。
f:id:shuzo_kino:20181209015213p:plain
こんな感じのフォームになりました
f:id:shuzo_kino:20181209015236p:plain
アップロード画面
f:id:shuzo_kino:20181209015300p:plain
追加すると名前
f:id:shuzo_kino:20181209015328p:plain
指定した上限以上はエラーをだす。
優秀。
f:id:shuzo_kino:20181209015354p:plain

名前リスト。
f:id:shuzo_kino:20181209015936p:plain

アップロード後にもちゃんと名前とリンクがあります・
f:id:shuzo_kino:20181209015423p:plain

結果をみにいくと、
Google Drive上にディレクトリも含めて新しく作成されてます。
黒塗り部分はログインユーザーです。
f:id:shuzo_kino:20181209015512p:plain

Spreaqd Sheetで新規データを作成すると
f:id:shuzo_kino:20181209015951p:plain

Google Drive上へのリンクという形で記載されています。
f:id:shuzo_kino:20181209020014p:plain

注意

同一入力欄で複数のファイルを許可する場合、
URLはカンマ区切りで入ってしまいます。
バラバラに処理したい場合、別のフォームにしておいた方がよいでしょう。

参考もと

qiita.com

【読書メモ】おとしどころの見つけ方 世界一やさしい交渉学入門

おとしどころの見つけ方 世界一やさしい交渉学入門

おとしどころの見つけ方 世界一やさしい交渉学入門

Lispエイリアンめいたキャラクターが目を引く、交渉学の入門書です。

主人公に降りかかる各種災難・トラブルを解決するというお話仕立てでスルスル進むため
非常に読みやすいです。

出てくる事例は私なら自腹で解決したり徹夜でやっつけるような事で、
自分に対して「お前、そういうとこやぞ」というツッコミが出まくりました。

この本で得られた知見、早速直近の定時報告で活かしてみようと思います(震え声

【おでかけログ】かっぱ橋道具街にいってきました

www.kappabashi.or.jp
かっぱ橋道具街は、上野駅から歩いて15分ほどのところにある、調理専門店街です。
紙皿、香料、千切りマシーン、食品サンプルに飲み屋の提灯など、調理系のあれこれが揃う愉快エリアで観光客も気持ち多め。
私は……業務上のヤラカシを誤魔化す道具を探しに来て、結果的に救われました(震え声

実際のところ

入り口

瀬戸物

箸置き

食品サンプルたち

観光客が面白がってみるものの中心が、この食品サンプル
世界的にみてもクオリティが高いと評価されているそうです。


ヤバいタコ焼き食品サンプル

フォトジェニック!! なパスタの食品サンプル

荒ぶるチャーハンとパスタの食品サンプル
改めてみるとちゃんと撮れてませんね😞