Install Elasticsearch from archiveでプロセス自動再起動

Install Elasticsearch from archive だと起動はデーモン化出来る(./bin/elasticsearch -d -p pid)が、プロセスが停止してしまった場合に自動的に再起動されない。

crontabへ以下のスクリプトを登録して暫定対処(格納場所、ユーザー名、IPアドレスはダミー)

#!/bin/bash
# heatbeat.sh
# /etc/crontab
# * * * * *  username /home/username/scripts/heatbeat.sh 10.0.0.99

host="$1"
shift

LOG_FILE=/var/log/elasticsearch/heatbeat_script.log
EXEC_PATH=/home/username/elasticsearch-7.13.2/bin/elasticsearch

HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}\n" http://"$host":9200`
echo [`date`] HTTP_CODE:$HTTP_CODE >> $LOG_FILE
if [ "$HTTP_CODE" -eq '200' ] ; then
  echo [`date`] elasticsearch alive >> $LOG_FILE
else
  echo [`date`] starting elasticsearch >> $LOG_FILE
  $EXEC_PATH -d -p pid
  ps aux|grep elasticsearch >> $LOG_FILE
fi

Go gRPC protocol bufferでmessageのネストと配列

protocol bufferの定義でmessageのネストと配列を使う場合のメモ

message Author {
  string name = 1;
}

message Book {
  string title = 1;
  Author author = 2;
  repeated string tags = 3;
}

clientからのリクエスト時

r, err := c.PostBook(ctx, &pb.Book{
  Title: "New Title",
  Author: &pb.Author{Name: "Doyle"},
  Tags: []string{"go", "grpc"},
})

face-api.jsで顔認識

tensorflow.jsを使って顔認識がしたいと思っていたら、face-api.jsなるものを発見。簡単に使えたのでメモとデモ。

face-api.js: 0.10.0
tensorflow/tfjs-core: 0.11.9

試したのはRails上のReactだけれども、単なるnode.jsでも同じ。

続きを読む

Rails 5.2.0 + React + css

Rails 5.2.0(Rails 5.1以降)でReactを使う上でwebpackerによるcssの読み込みのメモ

参考の補足程度(config/webpack/environment.jsを触る必要なかった)

  • 作成するcssは拡張子.cssでも.scssでもよさそう(.cssでOKだった)
  • 作成する場所はapp/javascript/packsでなくてよい(app/javascript/stylesheetsに作成してOKだった)
  • 作成するcssのファイル名は.module.cssにする(参考リンク先のようにhello-react.module.sassなどとする)
  • 利用したいjsxでimportする(親子jsxどこでも気にせずimportする)
  • 呼び出すhaml, erbでstylesheet_pack_tagを記述するが、この時親jsxを指定する(stylesheet_pack_tagを記述しないと読み込まれない)

これで実際に読み込まれたhtmlソースを見るとcss-loaderを使った時のように「class=”unQ5pyAarpPHnB5enco5W“」となっており、スタイルが適用されていることも確認出来る。

Windows 10でreact-native initのエラー対処

詳しくはこちら

WIndows 10で、以下のコマンドで初期化しようとした場合に

react-native init AwesomeProject

以下のエラーになる場合がある(react-native: 0.56.0の場合)

import type {CommandT} from './commands';
^^^^^^

SyntaxError: Unexpected token import

対処としては前のバージョンを指定して初期化する。

react-native init --version="0.55.4" AwesomeProject