AWSで複数アカウント使う状況でaws-cliを使う時

profileを設定することによって複数アカウントを使い分けられます。
複数アカウント最初から使うならデフォルト設定は無しでprofile必須の方が良さそう。

aws configure --profile hoge

これでhogeというプロファイルの設定が出来る
コマンドを使う時は --profile hogeを追加して実行する必要がある。

aws s3 ls --profile hoge

など

Ethereum入門のSolidityのコードをver. 0.5.7でコンパイルする

book.ethereum-jp.net 入門としてよくまとまってるこれ、SolidityのコードがMacに普通にインストールしたコンパイラで動かなかったのでメモ
最初にコンパイルしようとしたところ

Error: Source file requires different compiler version (current compiler is 0.5.7+commit.6da8b019.Darwin.appleclang - note that nightly builds are considered to be strictly less than the released version
pragma solidity ^0.4.0;
^---------------------^

pragmaで怒られてしまった。ここを

pragma solidity >=0.4.0;

に変更してみる。
再度コンパイル

Error: The state mutability modifier "constant" was removed in version 0.5.0. Use "view" or "pure" instead.
    function get() public constant returns (uint retVal){
                          ^------^

なんかviewかpure使えと言われてるので、とりあえずview使う。

pragma solidity >=0.4.0;

contract SingleNumRegister {

    uint storedData;
    function set(uint x) public{
        storedData = x;
    }
    function get() public view returns (uint retVal){
        return storedData;
    }
}

こんなコードにしてコンパイル
とりあえずコンパイル通ってBinaryとContract JSON ABIが出力された。

CSVを使う時はVSCodeにRainbow CSVを入れるのが楽

Excelさんは文字コードとかでいまいち使いにくいので、テキストエディタでやってみようと思いました。
そこで普段よく使っているVSCodeにRainbow CSVという拡張機能を入れたら楽になりました。
データの抽出とかにはSQLライクなRBQLというものが使えるのがいいです。 github.com このRBQLを使うコンソールだと表示も綺麗にテーブルで表示してくれるし、行番号でもカラム番号でも表示を制御できるしかなりいいです。

カレントディレクトリ以下で指定した日時より更新日時が新しいファイルのフルパス一覧を取得

拡張子がtxtで2019年3月1日以降のファイルのフルパス一覧が取得したい場合

find  `pwd` -type f -name "*.txt" -newermt "2019-03-01"

Linuxで自作のプログラムなどをデーモン化して/var/logにログ出力する

デーモン化

使いたいスクリプトなどを準備する。
次に /etc/systemd/system/ にファイルを作成。
ファイル名は hoge.survice とする。

[Unit]
Description = hoge daemon
After = local-fs.target network-online.target
ConditionPathExists = /usr/local/bin

[Service]
ExecStart = /usr/local/bin/hoge
Restart = always
Type = simple

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=hoge

[Install]
WantedBy = multi-user.target

大体の設定はファイルを見ればなんとなく分かりそう。 プログラムによっては先に何かが起動していないと失敗するものも多くあると思う。
[Unit]内のAfterはそのようなプログラムの為にある。
デーモン化したい場合、何かエラーがおきても再起動して欲しいので、[Service]のRestartはalwaysにしておく。

次にログ出力はここで指定。

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=hoge

ログ用の設定ファイルを作成

/etc/rsyslog.d/hoge.conf のようなファイル名で作成。
ファイル内で先ほどのSyslogIdentifierを使ってログを設定。

if $programname == 'hoge' then {
    action(type="omfile" file="/var/log/hoge.log")
}

これで

sudo systemctl enable hoge.service

をすれば登録されるので次回の起動時から動くはず。 ログは /var/log/hoge.log に出力される。

ブロックチェーンアプリケーション開発の教科書を読んでいて少し戸惑ったところ 1

ブロックチェーンアプリケーション開発の教科書

ブロックチェーンアプリケーション開発の教科書

最初の取っ掛かりとして分かりやすい本ぽいが、Ethereumも開発が進んでいるので少し違うところもありそう。 気になったところの備忘録として書いておく。

今回気になったのは Web IDEのRemixの画面。 http://remix.ethereum.org の画面がおそらく前と変わっているのでp.165の実行手順に少し迷った。

右側の[Run]タブから[Create]ボタンをクリックと書いてあるが、[Create]ボタンがない。 現時点(2018年12月27日)では[Deploy]というボタンがあるので、そこをクリック。 下にget, setが現れるところは変わらない。