tec memo

メモです。

こんなに参加障壁の低い会はない! 鹿児島.mk #10 テクニカルライティング練習会

鹿児島.mkのテクニカルライティング練習会(オンライン)に参加してきました。

kagoshima-mk.connpass.com

なぜ参加しようと思ったのか?

新型コロナウィルスのおかげで、ほとんどのイベントがオンラインイベントとなり、仕事やプライベートでも文字を使ったコミュニケーションが圧倒的に増えてきました。 そんな中、文字で伝える時は、言葉で伝えるときよりもとても丁寧に書かないと伝わらないなと感じていました。書籍を読み実践するもこれでいいのか? と不安になった事と、他の人はどう考えてライティングしてるのだろう?と興味が出てきました。 そこで、鹿児島.mkのテクニカルライティング練習会 があると紹介していただきすぐさま、参加する決意をしました。

内容

最初にライティングの座学が行われました(仕事の都合で少し遅れて参加)。

結論を書くと、たった4つのポイントを抑えるだけで、劇的に読みやすくなるようです。

  1. 文章の目的と読み手を意識する。
  2. 主語と述語を統一させる。
  3. 1文1文メッセージを心がける
  4. 文章の最初に重要なポイントを記載する。

座学が終わった後に、グループに別れて2問あるお題に対してグループごとに考えていきました。 そこで、感じたことは、以下2つ。

  • 伝えたいことを明確にする。
  • 書くための材料集めをできるだけ多くしていること。

まずこれをしたあとに、4つのポイントに気をつけて文章を練り上げていきました。

なるほど、今まで筆の赴くままに書いてて、考え直しては消して書き直して...文章を継ぎ接ぎして...見返すと意味がわからない感じになっていました。 書く前に整理をして、4つのポイントに気をつけて書くだけで全体が整理されて見やすい文章になるんだなと気づきました。

そういえば、少し前に読んだ、「必ず伝わるロジカル会話術」という本にも

「起承転結」ではなく、「結理時結果」でと書かれてたのを思い出しました。

  • Point (論)
  • Reason (由)
  • Exanple (例)
  • Point (論)

とても腑に落ちた瞬間でした。

最後に

最後にゆるく、鹿児島.mkの参加者の皆様と懇親会を spatial.chat で行いました。 思ったことを一言で、言うと「こんなに参加しやすいイベントなのね」でした。 (鹿児島の方がお優しい人が多いからなのかもしれない) 参加させていただきありがとうございました。

鹿児島.mk、しばらくオンラインイベントでの開催になるようなので、ぜひ一度参加してみてはいかがでしょうか😁

超コンパクトなのに大容量で高速! Hyper Disk SSDレビュー

2月にmakuakeで支援をした、HyperDisk SSD(1TB)が到着したので、早速レビューする。

www.makuake.com

到着時の様子

f:id:atani:20200526130801j:plain

画像にはないがしっかり梱包されて中国から届いた。

内容物

f:id:atani:20200528082944j:plain

  • 本体
  • Type-C to Type-Cケーブル
  • Type-C to Type-Aケーブル
  • 説明書

見た目

f:id:atani:20200526131417j:plain

DJI の2.5インチ 外付けHDDとの比較。 さらに、一般的な名刺よりも1サイズ小さい。 なんと言っても、おしゃれ。

性能

今、所有している外付けHDDとの性能比較、また、純正ケーブルとは違うケーブルの2つで比較を行った。

外付けHDDとの性能比較に利用したのは、以下。

Seagate ドローン向け 2TB USB Type C ポータブル HDD

他社ケーブルとの比較には以下を用いた。

TxtechのGen2 Type-C to Type-Cケーブル

性能比較に使用したツールは

AmorphousDiskMark 2.5 www.katsurashareware.com

外付けHDDから外付けSSDに乗り換えるということで、他社のSSDとの比較ではないので、あくまで参考程度に見てもらえたらと思う。 また、純正とは違うケーブルでも比較してみたので、合わせて参考になれば幸いです。

外付けHDDとの性能比較

  • Seagate ドローン向け 2TB USB Type C ポータブル HDD

f:id:atani:20200528093857p:plain

  • HyperDisk SSD

f:id:atani:20200528093930p:plain

読み込みも書き込みも数倍高速!!

ケーブル比較

Type-C to Type-Cのケーブルを純正ケーブルと他社ケーブルを使って比較。

  • 純正ケーブル(先程比較したものを再度掲載)

f:id:atani:20200528093930p:plain

  • TxtechのGen2 Type-C to Type-Cケーブル

f:id:atani:20200528094451p:plain

若干だが、純正ケーブルの方が高速だった(誤差の範囲) 純正ケーブルも完全に使える品物であることがわかった。

感想

これまで、DJIの外付けHDDを使用していたが、本商品は名刺より小さい上に、大容量。そして高速と三拍子揃った満足度100%の商品となった。

あえて欠点を言うならば、処理が多くなると、手で触れないほど熱くなる。ちょっと心配。

ローカルネットワークで使用されているIPアドレス一覧を取得する

先日、ASUSWiFiルーター RT-AX3000 を購入し、回線速度が2倍になりました。

www.amazon.co.jp

その後、誤ってAPモードに設定してしまったところ、ネットワークに繋がらなくなり、更にはルーターの管理画面のIPアドレスDHCPで適当に割り振られてしまい、管理画面に入れなくなりました...。 そこで、ローカルネットワークで割り振られているIPを探すためにいくつか手段はありますが、今回は簡単に探査出来る、arp-scanを利用しました。

その時の備忘録です。

arp-scanをインストール

arp-scanは、brewでインストール可能です(今回は、予備回線で一度つないでからインストールしました)。

% brew install arp-scan
Updating Homebrew...
==> Installing dependencies for arp-scan: libpcap
==> Installing arp-scan dependency: libpcap
==> Downloading https://homebrew.bintray.com/bottles/libpcap-1.9.1.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/3a/3a85693ff5d241ccdc689af9fa1281434ddf6ae3d0887cd679d07bbc1730ec29?__gda__=exp=1588525025~hmac=c78c6d871e146a7422deb933ed8fb4f006da844cdfb147
######################################################################## 100.0%
==> Pouring libpcap-1.9.1.catalina.bottle.tar.gz
==> Caveats
libpcap is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have libpcap first in your PATH run:
  echo 'export PATH="/usr/local/opt/libpcap/bin:$PATH"' >> ~/.zshrc

For compilers to find libpcap you may need to set:
  export LDFLAGS="-L/usr/local/opt/libpcap/lib"
  export CPPFLAGS="-I/usr/local/opt/libpcap/include"

==> Summary
🍺  /usr/local/Cellar/libpcap/1.9.1: 109 files, 912.4KB
==> Installing arp-scan
==> Downloading https://homebrew.bintray.com/bottles/arp-scan-1.9.7.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/76/763b615392ea20ab1900bbc4a21fb0a9a978bbf50d3bbd8d5ff490437defc6f8?__gda__=exp=1588525030~hmac=3cbe4a2e0fc3bf32675261dd6735282049477738629fcb
######################################################################## 100.0%
==> Pouring arp-scan-1.9.7.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/arp-scan/1.9.7: 20 files, 1.1MB
==> Caveats
==> libpcap
libpcap is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have libpcap first in your PATH run:
  echo 'export PATH="/usr/local/opt/libpcap/bin:$PATH"' >> ~/.zshrc

For compilers to find libpcap you may need to set:
  export LDFLAGS="-L/usr/local/opt/libpcap/lib"
  export CPPFLAGS="-I/usr/local/opt/libpcap/include"
arp-scan実行

arp-scanのインストールが終わったらいよいよ実行していくのですが、一般ユーザーで実行するには権限がありません。

% arp-scan -I en0 -l
pcap_activate: en0: You don't have permission to capture on that device
((cannot open BPF device) /dev/bpf0: Permission denied)

よって、sudoをつけて実行することで、以下のように使っているIPアドレスリストを取得することができました。

% sudo arp-scan -I en0 -l
Interface: en0, type: EN10MB, MAC: 3c:22:fb:18:49:dd, IPv4: 192.168.50.194
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.50.1    d4:5d:64:97:f3:78   (Unknown)
192.168.50.18   28:cf:da:27:b0:b7   Apple, Inc.

ルーターの変更は最悪ネットワークにつながらなくなることもあるので、誰にも迷惑のかからない時間帯に操作しましょう。

cpuの情報を見やすくするlscpu

CPUの情報を知りたい時、/proc/cpuinfo の中身をいつも見ていたが、コマンド一発でしかも見やすくしてくれるコマンドがlscpu。便利

  • lscpu を実行した場合
# lscpu
アーキテクチャ: x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
コアあたりのスレッド数:1
ソケットあたりのコア数:1
Socket(s):             1
NUMAノード:         1
ベンダーID:        GenuineIntel
CPUファミリー:    6
モデル:             62
Model name:            Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
ステッピング:    4
CPU MHz:               2599.998
BogoMIPS:              5199.99
仮想化:             VT-x
ハイパーバイザーベンダー:KVM
仮想化タイプ:    完全仮想化
L1d キャッシュ:   32K
L1i キャッシュ:   32K
L2 キャッシュ:    256K
L3 キャッシュ:    20480K
NUMAノード 0 CPU:   0
  • /proc/cpuinfo を見た場合
# cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
stepping    : 4
microcode   : 0x1
cpu MHz     : 2599.998
cache size  : 20480 KB
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm vnmi ept fsgsbase tsc_adjust smep erms xsaveopt
bogomips    : 5199.99
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

インストール済みパッケージに変更が無いかチェック

インストール済みのパッケージファイルとRPMファイルの情報を比較し、変更がないかをrpmコマンドでチェックすることができる。

私の環境で、td-agentをチェックしてみる。

# rpm -V td-agent
.M....G..    /opt

/opt で以下が変わっていた。 M は、ファイルの権限が変わっている。 G は、グループが変わっている。

その他のコードは以下。

コード 説明
5 MD5チェックサムが異なる。
S ファイルの大きさが異なる。
L シンボリックリンク属性が異なる。
T ファイルの修正時刻(mtime)が異なる。
D バイスファイルが変更されている。
U ファイルの所有者が変更されている。
G ファイルのグループが変更されている。
M ファイルのモードが変更されている。
? 未知または理由不明。

pmilterの導入

概要

pmilter

PmilterはProgrammable Mail Filterの略で、SMTPサーバ(送信や受信)とmilterプロトコルで通信し、SMTPサーバの送受信の振る舞いをRubyでコントロールできるサーバソフトウェアです。

ref: Pmilter: Programmable Mail Filter Serverを作った

rubyで自分の思い通りに制御できるところが素晴らしいなと思い、試してみる。

環境構築にあたっては、 pmilter + postfixでプログラマブルなSMTPサーバを作る(入門編) を参照するとして、私は補足を。

環境

OS, centos7
MTA, postfix3.1

補足

postfix3.1が最新のステーブルだがBaseのリポジトリにはないので、gfさんのリポジトリを利用させていただいた。 また、postfix2系がすでに入っていると、競合してインストール出来ないので、postfix2をアンインストールしたのちにpostfix3を入れる。

rpm -ivh http://mirror.symnds.com/distributions/gf/el/7/gf/x86_64/gf-release-7-10.gf.el7.noarch.rpm
yum remove postfix
yum --enablerepo=gf-plus install postfix3

pmilter導入

pmilter を socket を利用して起動するもプロンプトがすぐに返ってきた。

sudo -u postfix ./pmilter -c pmilter.conf

/var/log/messages に以下エラー。

Jan  5 19:11:58 localhost pmilter: pmilter: Unable to bind to port /var/spool/postfix/pmilter/pmilter.sock: Permission denied
Jan  5 19:11:58 localhost pmilter: pmilter: Unable to create listening socket on conn /var/spool/postfix/pmilter/pmilter.sock

/var/spool/postfix/pmilter/ がroot権限で作成されていたため、権限がないというエラーになっていた

chown postfix: /var/spool/postfix/pmilter

再度実行し、うまく起動した。

動作確認

動作確認にはpostfixに付属でついているsmtp-sourceを利用。

smtp-source -s1 -m1 -l 1024 -f test@example.com -t src@example.com -S "test mail" 127.0.0.1

pmilterでログが正常に出力された

[root@localhost pmilter]# sudo -u postfix ./pmilter -c pmilter.conf
[Thu, 05 Jan 2017 12:54:55 GMT][notice]: pmilter/0.0.1 starting
hello pmilter handler called from pmilter
client ipaddr 127.0.0.1
client hostname localhost
client daemon localhost.localdomain
handler phase name: mruby_connect_handler
helo hostname: localhost.localdomain
tls client issuer:
tls client subject:
tls session key size:
tls encrypt method:
tls version:
env from from args: <test@example.com>
env from from symval: test@example.com
SASL login name:
SASL login sender:
SASL login type:
env to from arg: src@example.com
env to from symval: src@example.com
header: {"From"=>"<test@example.com>"}
header: {"To"=>"<src@example.com>"}
header: {"Date"=>"Thu,  5 Jan 2017 21:55:05 +0900 (JST)"}
header: {"Message-Id"=>"<3244.0003.0000@localhost.localdomain>"}
header: {"Subject"=>"test mail"}
body chunk; 1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
myhostname: localhost.localdomain
message_id: DD58741B34FC
reveive_time: Thu Jan 05 21:55:05 2017
add_header(X-Pmilter:True): Enable

macでパスワードを生成する

macでパスワードを作りたい場合、pwgenを使う。

導入方法

インストールは Homebrewを導入していればbrew installするだけ。

brew install pwgen

# brew install pwgen
==> Downloading https://downloads.sourceforge.net/project/pwgen/pwgen/2.07/pwgen-2.07.tar.gz
==> Downloading from http://jaist.dl.sourceforge.net/project/pwgen/pwgen/2.07/pwgen-2.07.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/pwgen/2.07 --mandir=/usr/local/Cellar/pwgen/2.07/share/man
==> make install

使い方

pwgen を実行するだけで、8桁のパスワードをたくさん出してくれるが、オプションを渡すことでさらに複雑なパスワードや逆に簡単なパスワードを生成することができる。

Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]

OPTIONS

OPTION Content
-c –capitalize パスワードに最低1文字は大文字を含める(デフォルト)
-A –no-capitalize パスワードに大文字を含めない
-n –numerals パスワードに最低1文字は数字を含める(デフォルト)
-0 –no-numerals パスワードに数字を含めない
-y –symbols パスワードに最低1文字は特殊文字を含める
-s –secure 完全にランダムなパスワードを生成する。
-B –ambiguous パスワードに曖昧な文字は含めない(0とO等)
-h –help 使い方を表示する
-H –sha1=path/to/file[#seed] ランダムなパスワードをファイルのsha1ハッシュを使用する
-C 列にパスワードを表示する(デフォルト)
-1 列にパスワードを表示しない(1行1パスワード)
-v –no-vowels 偶然の不快な言葉を避けるために母音を使用しない

pw_length

パスワードの文字数を指定する。

num_pw

パスワードの生成数を指定する。

試しに使ってみよう。

以下の条件で、実行する。 - 数字を含めない - パスワードは10文字 - パスワードを5つ生成する。

# pwgen -0 10 5
waijahgahM aeRahkemoo keeCeithoh Haeshaecam OhmieGeefa