2018年7月29日日曜日

自転車での旅 - 由比ヶ浜

最近プロテインを飲んでいるお陰か、前より長時間の自転車移動での疲労が軽減されている気がする。
台風が去った後で風がやや強めだったが、稲村ヶ崎の先も気になっていたし
頑張ってみることに。
割と走りやすい道が続いていて
結局、由比ヶ浜の末端まで行ってしまった。


もっと先まで行けたかも知れなかったが、あまりにも先に行き過ぎた感じがして帰ることに。

家に帰って距離を確認したら片道30kmを超えていた。

もっと先まで行ったら逗子市に入ることろだった。

逗子に行くのは今度にして、まずは鎌倉駅まで行ってみないと。

嫁にこのことを話したら、葉山のプリン買えると良いなーと言われた。
鎌倉まで行けたら、次は三浦半島なのかな・・・

ubuntu18.04にlibnfc-1.7.1とnfcpy0.11インストール

環境を再度構築するのが面倒だったので放置していただ
suicaの残高を確認するために一々windowsを起動するのも面倒だったので
久しぶりにNFC環境を作ってみた。

■libnfcのインストール
Libnfc > Debian / Ubuntu

sudo apt-get install libusb-dev dh-autoreconf
git clone https://github.com/nfc-tools/libnfc.git
cd libnfc
git checkout master
sudo ./make_release.sh
sudo ./configure
sudo make
sudo cp /usr/local/lib/libnfc.so.5 /usr/lib/libnfc.so.5
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/


 何とかインストールは成功したけど、NFCが認識されない。

[nfc]RC-S380はチップが違うのでlibnfcは動かないと思う
無駄足だった・・・


なるべくpythonには手を出したくなかったけどnfcpyを入れることに。

Raspberry Pi と Sony RC-S380/P、nfcpy で NFC カードの IDm を読み取る (2)

sudo apt install python-pip
pip install -U nfcpy


sudo python -m nfc
をすると以下のメッセージが表示される

** found usb:054c:06c3 at usb:006:002 but it's already used
-- scan sysfs entry at '/sys/bus/usb/devices/6-1:1.0/'
-- the device is used by the 'port100' kernel driver
-- this kernel driver belongs to the linux nfc subsystem
-- you can remove it to free the device for this session
   sudo modprobe -r port100
-- and blacklist the driver to prevent loading next time
   sudo sh -c 'echo blacklist port100 >> /etc/modprobe.d/blacklist-nfc.conf'
I'm not trying serial devices because you haven't told me
-- add the option '--search-tty' to have me looking
-- but beware that this may break other serial devs

 
言われたとおり
sudo modprobe -r port100
をしたあとに
sudo python -m nfc
をしたらメッセージが変わっていた。
** found SONY RC-S380/P NFC Port-100 v1.11 at usb:006:002

ということでブラックリストに追加した
sudo sh -c 'echo blacklist port100 >> /etc/modprobe.d/blacklist-nfc.conf'

でも
sudo python2.7 examples/tagtool.py
するとエラーになる


AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol
色々調べたところ、依存しているライブラリが廃止されて
libcrypto.so.1.1をlibcrypto.so.1.0.0に変えないと動かないぽいけど、今更過去のモジュールに変えたくないし、SSL関連なのでローカルPCで動かしている私とは関係ないだろうなーと思い、排除することに。

vim /home/park/work/nfcpy/nfcpy/nfc/llcp/sec.py
開いて191、192、201行をコメント
# self.crypto.ECDH_OpenSSL.restype = c_void_p
# self.crypto.ECDH_set_method.restype = c_int
# self.crypto.EVP_CIPHER_CTX_init.restype = None


あとは定番(?)のコードをcloneして動かしたら、読み取れるようになった。
Raspberry Pi 入門 4日目 – Suicaの履歴を読み取る

でも、やっぱりnodejsでやりたいと思い、しらべて見たらnode-nfcpy-idで
できそうな気がする。

Raspberry PiとPaSoRiでICカードのIDを取得するnpmパッケージを作ってみた

頑張ってpythonのコードを読んでみようか・・・

2018年7月28日土曜日

現場で役立つシステム設計の原則

最近は会社の金で本が買えるので、金の心配より読書する時間を作るのが大変。
自然に見たい本がある時は人のレビューを参考するようになっている。
そんな中で「癖がある」とレビューされている、この本を選んでみた。

■総評
現場で色んな経験を積んで、更に色んな本からの知識を実践しているように見える。
確かいい事取り、と言ってもいいぐらい間違ったことは言ってない。
ただし、同じく現場経験が長い立場としては言い過ぎるところが多い気がする。
それゆえに「こんな考えをしている人もいるよなー」感じで面白く(?)読めた。
酒場などで設計の話で盛り上がりそう。ただし、この作者と同じ現場になるのは避けたい。

■いくつかの内容抜粋&感想

データクラスを使うと同じロジックがあちこち重複する(71page)
そもそもデータクラスと機能クラスを分ける設計は、「クラス」本来の使い方ではありません。むしろJava言語のしくみとしてクラスを採用した意図とは正反対の使い方です。

→一般的に広がっていたデータクラスの概念を否定している。
だが、個人的には共感している。確かにクラスなのにデータの構造しか持たないvalue objectなどは凄い無駄な感じがしたところだった。

利用する側と提供する側の合意を明確にする(165page)
サービスを利用する側と、サービスを提供する側とで、サービス提供の約束ごとを決め、設計をシンプルに保つ技法を「契約による設計」と呼びます。
契約による設計と対象的な技法が「防御的なプログラミング」です。防御的プログラミングでは、「サービスを提供する側は、利用する側が何をしてくるかわからない」という前提でさまざまな防御的なロジックを書きます。
利用する側も、提供側が何を返してくれるかわからないという前提で、戻ってきた値のnullチェックや、さまざまな防御的なロジックを書きます。
防御的プログラミングは、無意味にコードを複雑にし読みにくくします。そして、どれだけ防御をしても、想定外の使われ方が起き、想定外の戻り値が起きてしまうのが現実です。
→これはcase by caseでどちらかと一方的では言えない問題。どのみち、利用する側は使う機能にどのような副作用があるのか調べるべきである。これは言語から提供する機能も同じである。

記録のタイミングが異なるデータはテーブルを分ける(183page)
コトの記録でNOT NULL制約を徹底するひとつの方法は、記録のタイミング(コトの発送のタイミング)が異なる事実は、別のテーブルに記録することです。
→ここは強引すぎ。確かに記録のタイミングも大事だが、使われている頻度・パフォーマンスも考えて設計するべきであろう。

記録の変更を禁止する(183page)
過去の記録ですから、コトの記録テーブルのデータを変更してはいけません。UPDATE文を使うべきではありません。
過去の記録を修正したい場合は、まず過去の記録の「取り消し」を記録します。そして、修正する事実を別の記録として追加します。
→これも強引すぎ。変更を不要にするべき・可能にするべきは設計時に判断するべきであろう。

カラムの追加はテーブルを追加する(184page)
既存テーブルへのカラム追加は好ましくありません。追加するそのカラムには過去データが存在しないため、NULLを許容するか、NOT NULL制約を逃げるための「嘘」のデータを登録することになります。
→これは少し共感できるが、やっぱりcase by case。

UPDATE文は使わない(186page)
UPDATE文はデータの不整合が混入しやすい動作です。それは、コトの記録のところで述べた「記録の同時性」に違反するからです。
そうではなく、レコード単位で古い残高をDELETEし、新しい残高をINSERTするのが正しいデータの記録方法です。
→どれだけUPDATE嫌いなのよ・・・

派生的な情報を転記して作成する(188page)
コトの記録と、集計情報やコト」の記録のサブセットの参照を分けることは、修正や拡張の柔軟性を高める方法として良い方向です。
しかし、すべてを小さなシステムに分散し、非同期メッセージングを駄使して連携することが良いかどうかは、非機能要件も含めた検討が必要です。
→これは共感できる。ただし、非同期処理ができない言語もあるので・・・

業務ロジックはオブジェクトで、事実の記録はテーブルで(194page)
ドメインオブジェクトとテーブルを機械的にマッピングする方法は、好ましくありません。設計に不要な制約を持ち込み、設計を歪めます。マッピングの自動化は、ドメインオブジェクトの設計にも、テーブル設計にも良いことはないのです。
ドメインオブジェクトはドメインオブジェクトで、テーブルはテーブルで別々に正しく設計します。
→これも共感できる。何よりこのようにはっきりと文書化してもらって感謝している。

HTMLのclass属性をドメインオブジェクトから出力する(215page)
ドメインオブジェクト側にclass属性を返すメソッドを用意するやり方で、画面の表示ロジックからif文をなくすことができます。

String readStatus(){
    if(usUnread()) return "unread";
    return "";
}

//HTML記述での使い方
//<p class="${mail.readSattus}">

ドメインオブジェクトで表現する論理的な状態を、ビュー側が利用する、という考え方です。

→これも共感できる。周りから何か言われそうだが、私はやってみたい。

画面項目のグルーピング(220page)
画面デザインの4原則
近接:関係ある情報は近づける、関係のない情報は離す
整列:同じ意味のあるものは同じラインにそろえる、意味が異なれば異なるラインにそろえる
対比:意味の重みの違いを文字の大きさや色の違いで区別する
反復:同じ意味は同じパターンで可視化する

→これは良い内容だったので、メモ

■参考書籍について
色んな本を参考しているように見える。以下の書籍は読んでみたい。
・SQLアンチパターン
・リファクタリング (アジャイルソフトウェア開発技術シリーズ・応用編)
・ノンデザイナーズ・デザインブック

2018年7月22日日曜日

HGUC 1/144 ギャプラン

キットの評価
・アニメで好きだったので作り初めたものだけど、前回のマラサイみたいに格好良くなかった。変形するせいか、稼働場所も少ないし、手も拳しかなかった。
・今時、珍しく単色のビームサーベル。 説明書通りにビームサーベルを塗装してみたかったが、やっぱりエアブラッシがないと厳しいかった。

塗装前、ƒ/11 1/50 24mm ISO6400

塗装・つや消し後、
ƒ/11 1/15 38mm ISO6400



今回やったこと
・サーフェイサで初めて下地
・複数の色を混ぜて塗装
・BMCタガネでのスジ彫り
・ヤスリ棒(600相当)で作業を効率化


制作時間:2ヶ月弱
・変形MSだから・ブースターもあって、組み立てるのに時間が掛かった。
・今回はネットで見た作品を参考し、多少オリジナリティな塗装をした為、前回より時間が掛かった。特にマスキング。


反省点
・ヤスリ棒、場所によっては紙より楽、ただし削りすぎ場合もあるし、曲面・棒が入りづらい狭いところなどは紙方が使いやすかった。
・下地をしたら塗装がだいぶ楽だった。ただし、マスキングテープを剥がすと、下地の上に塗装がしきれなくて、たまに灰色の下地が残ったところがあった。マスキングを徹底するしかないか・・・
・合わせ目消しが上手くできなかった。接着剤を流し込んだ後に少し部品のつなぎ目に力を入れる必要があったけど、やらなかったせいがヤスリで削っても白く線が出てきてた。結局諦めることに。
・昔のキットだからか、シールド・バインダーのつなぎ目が一律ではない・間が広がっている。
・ハイザックの時に余っていたシールを貼ってみたけど、あまり自然な感じがしない。やっぱり別途デカールシールを買うべきなのか。

ƒ/11 4秒 50mm ISO160

ƒ/11 4秒 50mm ISO200

2018年7月15日日曜日

2018社員旅行 金沢市(3日目)

帰るまで自由行動。昨日時間切れで見れなかった、兼六園と金沢城へ行った。
朝早いのにも関わらず、凄い暑さ。しかも坂道。
兼六園についたころは汗が止まらない状態に。

取り敢えず色々風景の写真を撮ってみた。
ƒ/5.6 1/100 20mm ISO100

ƒ/6.3 1/2000 210mm ISO2500

ここで、新しく買ったPLフィルタの使い方が分かった気がした。

あとは、朝一、ホテルで会った同僚から教えてもらった「ヱヴァンゲリヲンと日本刀展」を観に赤レンガへ行ってみた。

ƒ/6.3 1/60 16mm ISO5000

取り敢えず、建物の中は涼しい。
展示会は三石琴乃さん音声のガイド機(有料)もあったので借りで観覧してた。
ちなみに写真も自由に撮っても良いらしいので、結構長く観てた。
ƒ/5 1/60 33mm ISO6400



後は兼六園を通過して、金沢城へ。
やっぱり暑い。でもせっかくここまで来ているし、頑張ってまわった。

ƒ/6.3 1/160 16mm ISO100
金沢城は・・・広くて綺麗なところだが
小田原城みたいに天守がないのが残念な気がする。

あとは昼食の為、近江町へ行った。
人が多い。特に2階の飲食店はどこも人がいっぱい。今も会社近くに海鮮系飲食店が多いから、わざわざここまで来て食べる気にはならない。
ƒ/6.3 1/60 16mm ISO4000

半分あきらめて地下に行ったところ、金沢カレーが食べれるところがあって、しかも空いていたので昼食を済ませた。
ƒ/6.3 1/60 16mm ISO5000

朝食もホテルでカレーだったし、こっち来てからカレー率が高い気がする。

色々観て良かったけど、忙しい旅行だった。

2018年7月14日土曜日

2018社員旅行 金沢市(2日目)

私は金沢市での自由行動だった。ホテルで用意したバスを乗って金沢市へ移動。
途中で日本で唯一車が走れる「千里浜なぎさドライブウェイ」という海岸を通った。
そこで湘南ナンバーの車で来たカップルを発見したり。


初めはバスで移動しようかと考えていたが、移動中
金沢市のレンタルサイクルを教えてもらったので、利用してみることに。
レンタルサイクルは思ったより簡単に借りれた。
しかも1日200円で、次のスポットまで30分超えなければ料金は発生しない。
時間さえ気をつけて乗り続ければ、格安で移動できる。と思ったが
2つ誤算があった。
・金沢は凄い暑かった。群馬並で、しかも風がない。影の恩賞をもらえない移動手段は厳しい。
・自分は凄い方向音痴だった。しかも初めての場所。
いま思うと、請求がどうなるのか、不安になっていきた。

初めは妙立寺(忍者寺)に行くため、西茶屋町へ行った。
暑いし、予約した時間までだいぶ空いていたので
茶屋に入って、ココアカレーを食べた。多少高めだったが美味しかった。
ƒ/5.6 1/400 16mm ISO250

ƒ/5.6 1/60 16mm ISO400

妙立寺は数人グループでガイドさんと移動しながら説明をもらう感じだった。
ガイドさんの滑舌が悪い?方言?のせいでだいぶ聞き取れにくかったが
歴史的な経緯と色んな面白い仕組みが見れて良かった。
予約が必須なのが面倒だが、せっかく金沢まで来たのであればぜひ行くところだと思う。
f/5.6 1/500 16mm ISO100

あとは武家屋敷ー金沢城のコースで移動した。
武家屋敷でまだ茶屋に入って休憩。
ƒ/5.6 1/100 26mm ISO100

部屋の奥に日本人形を飾っていてた。主人によると、ネットで「面白くない店」と言われて集めたらしい。
ƒ/5 1/30 31mm ISO3200

出発する前に色々観光に関する情報を教えてもらって助かった。

なんが日本の建物ぽくない、尾山神社に行ったら
前田利家の像が。
ƒ/6.3 1/160 31mm ISO100

ƒ/6.3 1/80 50mm ISO125
で、せっかく金沢城についたら時間切れで施設内にまわることはできなかった。

あとは21世紀美術館に行って、ホテルに戻った。

ここまでだけでもだいぶ疲れていたが
今回の目的の一つである、夜景を撮るために東茶屋町へ移動。
ƒ/5.6 1/25 45mm ISO3200

いい感じの古い建物が残っているところだったけど、肝心な夕食の店が少なそう。
せっかくなので、地酒と看板が書かている店に入って日本酒と海鮮でぷち贅沢をした。

ƒ/3.5 1/20 16mm ISO3200
ƒ/3.5 1/15 16mm ISO3200


あとは三脚を背負いながら写真を撮るだけ。
ƒ/5.6 8秒75mm ISO160

ƒ/5.6 13 秒 16mm ISO160


いい写真がいっぱい撮れて満足したが、帰りの自転車を探しにレンタルサイクルスポットへ行ったら、空っぽだった。
結局、歩いてホテルまで戻るハメになった。
疲れた・・・

2018年7月13日金曜日

2018社員旅行 能登半島-和倉温泉(1日目)

朝7:35の新幹線だったので6時過ぎに電車乗って移動。
丁度、新幹線の乗り継ぎができる電車だったのか
今まで見たことないぐらいの人が乗っていた。

予定していた新幹線の時間まではだいぶ余裕があったので
2つぐらい前の電車に乗って東京まで行った。
後から知ったけど、一人寝坊で間に合わなかった人がいたらしい。

新幹線の座席は・・・丁度昨年の社員旅行で呑みながら移動した組みと一緒になっていた。
まあ、移動時間も長いし付き合うことに。
楽しいといえば楽しかったけど、到着するころは気持ち悪くなるぐらい飲んでいた。
金沢駅でバスを乗って和倉温泉町へ。ここで若干休めた。

付いたホテル「あえの風」は広くて綺麗なホテルだった。
ƒ/5.6 1/320 16mm ISO100

昼食はお弁当を食べて、オリエンテーションをする為に出かけた。
暑い・・・
ホテルはいい感じだったので、あまり気づいてなかったけど
和倉温泉町の奥の方をみるとかなり寂れたところで、人が暮らせる為の施設が少なすぎだった。おそらく車がないと生活は難しいそうだった。
ちなみにアパートの部屋が月2万で一戸建てが月4万で家賃が安かった。


ここのお風呂は塩水が特徴らしい。
大浴場には殆どうちの社員だった。

夕方は夕食を食べながら余興を楽しんでいた。


わりと遅くまでやってなかったので早く寝れたけど・・・

今回は一緒の部屋だったA氏が少し癖?がある人だった。
部屋について、いきなりテレビを付ける。ここまでは良いけど、自分は携帯でマンガを見ている。
誰も観ないテレビが点けっぱなしに。
これが就寝時間まで続いて、しかも電気もつけっぱなし。そろそろ我慢も限界になって、何か言いようかなーと思ったところで、他の人が言ってくれた。
全然他の人とも喋らないし、こんな人だったんだなーと改めて思ったところ。


2018年7月1日日曜日

アオバト講習会(6/24)・観察(7/1)

先日、大磯町の図書館でアオバト講習会のチラシをもらい
行くかどうか迷っていたが、行ってみることに。

それが思いもよらず、凄い面白かった。
毎週、大磯港は通っていたので、鳥の写真撮っている人がいるな〜
ぐらいしか認識なかったけど、
講習会での話によると

・アオバトの食べ物にはナトリウムがほとんど含まれてないので、海水から確保している。
・照が崎に来ているアオバトは約30km離れた丹沢から来ていて、大磯駅近く(エリザベス・サンダース・ホーム)で1泊して、日の出とともに海に行っている。
・オスとメス、両方来ていて、羽に赤い色があるのがオス。
・丹沢の天気が悪い場合は来ないときもある。
・大磯では5月〜11月まで見れる。
・たまに天敵(鷹など)に狙われる。
・かなり低い確率で喉の周りが赤い個体がある。

朝の6時〜8時がピークらしく、次週に行ってみたいと思った。




7/1、5:45ぐらいに起きて
家族の朝御飯準備して大磯港に行ってみた。着いたら丁度朝の7時だった。
堤防の方に行ったら、講習会で世話になっていた「こまたん」の先生がもう観察をしていた。
たしか、朝4時ぐらいから見ている話だったような・・・

何回か群れで移動して来るところを見て、感動。

ƒ/6.3 1/2000 210mm ISO500

あっという間に1時間が流れていた気がする。
岩礁で海水を飲んでいるのを見るべきか、飛んでいく・飛んでくる群れを見るべきか
忙しい。
ƒ/6.3 1/2000 210mm ISO500

しかも、いつの間にか上から羽が飛んできていてみたら
鷹がアオバトを獲っていてた。

ƒ/6.3 1/2000 210mm ISO500

テレビでしかみれなかったのを直接みることができて、また感動。
今度はもう少し早起きして行ってみたい。

ƒ/6.3 1/2000 210mm ISO500

メモ:次回はISO300程度で良いかも。あとAWBは太陽光で。