揮発性のメモ2

組込みLinux開発を通じて得た知識と通じずに得た知識をメモ書きしておく

expectで、日付を求める

年月日時分秒を取得したい

dateコマンドを使う

#!/usr/bin/expect -f

set NOW [ exec date "+%Y%m%d%H%M%S" ]
puts "--$NOW--"

clock関数を使う

#!/usr/bin/expect -f

set NOW [ clock format [ clock seconds ] -format "%Y%m%d%H%M%S" ]
puts "--$NOW--"


参考:


今日勉強したこと:

  • expectはTclの親戚なので、Tclのマニュアルを読むと良い
  • putsは改行をつけてくれる
  • [ ] で囲ったところはコマンドの実行結果の文字列になる
  • 文字列はダブルクオーテーションで囲わなくてもいい
    • でも人間が見る分には囲っといた方がいい気がする

ぶんぶんチョッパー

思ったよりも小さいので、材料は小分けにしなければならない。 玉ねぎなら1/4~1/3ずつに入れないと回らない。
また、内部の凸凹のせいで微妙に中身を取り出しづらい。

だけど、包丁とまな板でやるよりも100倍楽なので そんな欠点には余裕で目をつぶれる。

システムトイレ用猫砂

4リットル×4袋=16リットル で 3,780円。 1リットル当たり約236円
2.5リットル×6袋=15リットル で 3,479円。 1リットル当たり約232円
僅差で2.5リットルの方が安い。さらに、100円オフクーポンとかあると、安い方に適用した方がより安くなる



AdLintで静的解析

結論から言うと、AdLintで静的解析してもあんまり意味なかった。

  • インストールも使い方もそこそこ簡単
  • 出てくるメッセージも読みやすい
  • mallocのfree忘れ、openのclose忘れなどは検知しない
  • gccでWarningレベルガン上げにした方がずっと役立つ
  • そもそも AdLint の開発がもう止まっている

インストール

AdLint - Browse /adlint/3.2.14 at SourceForge.net
sourceforgeからtar.gzをダウンロードし、適当なところに展開し adlint/bin にパスを通す。

解析準備

解析したいソースをフォルダごとどこかに用意する
フォルダ内で次のコマンドを実行

adlintize

GNUmakefile と、adlint_* というファイルが生成される。


このうち、 adlint_traits.yml というファイルにインクルードパスを書くところがあり
これに書かないと /use/include すら検知してくれないので適当に書く

compiler_traits:

  initial_header: "adlint_cinit.h"
  # Compiler specific include paths.
  # Ex.
  #   file_search_paths:
  #     - "/usr/include"
  #     - "/usr/local/include"
  file_search_paths:
        - "/usr/include"         # ★これとか
        - "/usr/include/linux"   # ★これとか

自分用bashrc

~/myrc

# ~/myrc として保存し、
# ~/.bash_profile の最後に . myrc を足す

# パスを通す
export PATH=$PATH:~/bin

# sudo で vi使う
export EDITOR=vi

# less で 色付きエスケープ有効
export LESS='-R'
# less で 日本語読む
[ -z "$LESSCHARSET" ] && export LESSCHARSET=utf-8

# プロンプトを2行にしてカラフルにする
export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@$HOSTNAME \[\e[33m\]\w\[\e[0m\]\n$ '

# ウィンドウのタイトルバーに 実行中コマンド表示
# cf. https://iww.hateblo.jp/entry/20160325/BASH_COMMAND
trap 'echo -ne "\e]0;$BASH_COMMAND\a"' DEBUG

# Ctrl+S を無効化する
stty stop undef

# history
export HISTCONTROL=ignoreboth:erasedups
export HISTSIZE=2000
export HISTFILESIZE=40000
export HISTTIMEFORMAT='%m/%d %T '

# tree で 日本語表示、罫線文字化け回避
alias tree="tree --charset=C -N"

# 標準エラー出力を赤くするマクロ
# cf. http://serverfault.com/questions/59262/bash-print-stderr-in-red-color
color() { set -o pipefail; "$@" 2>&1>&3|sed $'s,.*,\e[31m&\e[m,'>&2; } 3>&1

# cd で 履歴を絶対パスに置き換える
# cf. http://inaz2.hatenablog.com/entry/2014/12/11/015125
cd() {
    command cd "$@"
    local s=$?
    if [[ ($s -eq 0) && (${#FUNCNAME[*]} -eq 1) ]]; then
        history -s cd $(printf "%q" "$PWD")
    fi
    return $s
}

昔は.bashrcで読んでたけど、ログイン時のみ必要なので.bash_profileで読むように変更した。

sSMTPの設定

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# メールサーバのIPアドレスかホスト名。ポート番号もつけれる
mailhub=example.com:587
# ログインIDとパスワード(認証ありのとき)
AuthUser=hogehoge
AuthPass=piyopiyo
# TLSを使うならYES。 デフォルトはNO
#UseTLS=YES

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
# FromLineOverrideがNoのときのホスト名
hostname=example.com

# Fromに好きなメールアドレスを書けるようにするかの設定
# Yesのとき、メールヘッダ部分に書いた From が有効になる
# No(デフォルト)だと、コマンドを実行したアカウント名とホスト名で書き換えられる
FromLineOverride=YES