Bye Bye Moore

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

nohupコマンドでログアウト後もバックグラウンドでコマンドが実行されるようにする。

nohupはN0 HungUpの略で、その名の通りhung upシグナルの影響を抑えてコマンドを実行できるやつです。

実際のところ

X Window越しでRasPiのGUIを起動する - Bye Bye Mooreで以下のようなコマンドを叩きましたが

$ nohup arduino &

これだとarduinoコマンドをバックグラウンドで動かし、
かつログアウトしても本体の方では動くようにできます。
また、バックグラウンドで動作すること前提のコマンドのため"&"をつけないと次のコマンドを入力できません。
……なんらかの事情で、それでもいいならつけなくてもいいのですが。

【読書メモ】エピゲノムと生命 (ブルーバックス)

人生は遺伝子で決まるんだ、教育なんか無効なんだよ! 
……という露悪的主張を耳にする昨今。
しかしながら、最近の研究では初期の遺伝子情報は
その後の生育において絶対的指標ではない事がわかってきています。

本書は、そういった考え方「エピジェネティクス」という学問分野について解説してくれる本です。

ブルーバックスなので科学的裏取りはそこらの物書きより確実です。
とはいえ、高校の生物レベルの知識がないと読むのは難しかったです。

まぁ、考えてみれば初期の遺伝子情報オンリーでは噴火や地軸の変化、新種の生物の侵入といった急激な環境変動に対応できるわけありませんもんね。

エピジェネティックスに関しては、岩波からこんな本も出ています。

【読書メモ】令和ビジネス書類テンプレート集 税率変更対応 (デジタル素材BOOK)

ビジネス文章は今まで何となく我流で作っていました。
もし分からない事が生じたら都度ググるという事を継続してきたのですが……
流石にそれは不味かろうという事で、本書を購入。

それぞれの文章について気をつけるべき事を書いてくれているので
自身の状況に応じて内容を変更する際にも助かります。

契約系なら

受発注の日常業務ならともかく、NDAや基本契約書は怖いよという場合、
お国が税金投じて作ってくれたやつがあります。
有効活用させてもらいましょう。
shuzo-kino.hateblo.jp

processingでテキスト入力をうけとる

キーボード入力は"key"という内部変数に格納されます。
イベントハンドラkeyPressed関数で拾ってレンダリングできます。

実際のところ

char   charactor;
String string = "";

void setup() {
  size(120,80);
  background(0);
}

void draw() {
  background(0);
  text("lastchar :' " + charactor + " ' ",10,20);
  text(string,10,60);
}

void keyPressed()
{
  charactor = key;
  string += key;
}

実行すると、こんな感じ
f:id:shuzo_kino:20191102001245p:plain


テキストボックスめいたものを作る場合……以下のような感じの実装になるかと思います。

  • テキストボックス風の領域をつくる
  • マウスクリックかtabキーでフォーカスできるようにする
  • 入力できるようにする。

processingのweb鯖

実際のところ

Processing

/**
 * Sttings. 
 * 
 * Robot Arm showing UI. 
 */
 
import processing.net.*;

int port = 10002;
boolean myServerRunning = true;
int bgColor = 0;
int direction = 1;
int textLine = 60;

int rad = 60;
int[] dataArray = {0,0,0};


Server myServer;

void setup() 
{
  size(640, 360);
  noStroke();
  myServer = new Server(this, port); // Starts a myServer on port 10002
  
  background(102); //Window clear
  text("server", 15, 45);
}

void mousePressed()
{
  // If the mouse clicked the myServer stops
  myServer.stop();
  myServerRunning = false;
}

void draw() 
{  
  if (myServerRunning == true)
  {
    Client thisClient = myServer.available();
    if (thisClient != null) {
      if (thisClient.available() > 0) {
        // text("mesage from: " + thisClient.ip() + " : " + thisClient.readString(), 15, textLine);
        //textLine = textLine + 35;
        dataArray = int(split(thisClient.readString(), ","));
        println(dataArray);
        
        background(102);
        text("server", 15, 45);

        showData(dataArray[0],dataArray[1],dataArray[2]);

      }
    }
  } 
  else 
  {
    text("server", 15, 45);
    text("stopped", 15, 65);
  }
}

void showData (int x,int y,int z) 
{
    text(x, 10, textLine);
    text(y, 60, textLine);
    text(z, 110, textLine);
    ellipse(100+ (x % 200), 100 + (y % 200), 12, 12);
}

データ送信(コマンドライン)

サーバーはローカルホストで起動しているので、これにncコマンドで送ってみます

$ cat senddata.sh 
#!/bin/bash

var=100

while :
do
  var=`expr $var + 20`
  printf "%d,%d,111" $var 100 | netcat  -c localhost 10002
  sleep 1s
done