2019年2月読書まとめ

2019年2月の読書メーター
読んだ本の数:6冊
読んだページ数:1765ページ
ナイス数:170ナイス

https://bookmeter.com/users/45484/summary/monthly


■超軽っ! 日本史―原始時代~安土桃山時代編―
タイトルほどには軽くはない。「応仁の乱」と同じく人物が多すぎて歴史の大きな流れを捉えきれない。語り口は面白いのだけれどもっと「流れ」の面白さに重きを置いて欲しかったかな。
読了日:02月28日 著者:浮世博史
https://bookmeter.com/books/5522166

■写楽殺人事件 (講談社文庫)
再読。歴史ミステリは楽しい。想像力をたくましくして楽しめる。特に、高橋さんの歴史(特に浮世絵もの)は緻密で「これで謎が解けた!」感が半端ない。
読了日:02月18日 著者:高橋 克彦
https://bookmeter.com/books/480306

■Pythonからはじめる数学入門
数学、pythonどちらのとっかかりとしても良書。本書と数学ガールを併読したらきっと楽しい。ずっと購入を迷っていたけどもっと早く購入すれば良かった。
読了日:02月13日 著者:Amit Saha
https://bookmeter.com/books/10932525

■あなたが消えた夜に (毎日文庫)
ミステリなのか何なのか?独白という形式が好きになれない僕にとってはツライ1冊だった。残念ながら、好きにはなれませんでした。
読了日:02月12日 著者:中村 文則
https://bookmeter.com/books/13192237

■東大教授がおしえる やばい日本史
面白かった。息子のために買ったけど先に読んでしまった。名だたる偉人が並ぶけど皆人間くさいね。
ザビエルのやばい話で、坊さんの台詞に腹を抱えた。後、与謝野晶子が後に戦争賛成の歌を詠んだなんて衝撃。
読了日:02月09日 著者:
https://bookmeter.com/books/12884897

■雨はこれから(4): モーターマガジンムック
1巻が気に入ったので2巻を買いに行ったのだが4巻しかなかったので飛ばして購入。ダートやりたくなった。
読了日:02月03日 著者:東本昌平
https://bookmeter.com/books/13529082

▼読書メーター
https://bookmeter.com/

pythonで添付付メール送信

ググれば簡単にサンプルは入手できるけど、僕の環境では小さいエラーがでてなんだか苦労したので、うまくいったサンプルパタンを挙げておく。

import smtplib
import email.encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart

あちこちのサンプルではimportの時点でエラーとなるものがあった。Python3系と2系の違いだろうか?僕のsampleはPython3.6。

charset = 'ISO-2022-JP'
msg = MIMEMultipart()
msg['Subject'] = Header('これはテストです'.encode(charset),charset)
msg['From'] = ['foo@example.com']
msg['To'] = 'var@example.com'
body = MIMEText('これはテストです')
msg.attach(body)
attachment = MIMEBase('application','vnd.ms-excel')
f = open('sample.xlsx','rb')
attachment.set_payload(f.read())
f.close()
email.encoders.encode_base64(attachment)
msg.attach(attachment)
attachment.add_header('Content-Disposition','attachment',filename='sample.xlsx')

つまんな事だけど、open関数のところバイナリで指定がないサンプルがたくさんあった。僕の環境では明にバイナリ指定しないとエラーでした。

あと、email.encoders.encode_base64()の書き方も諸説あり?かな。僕が初心者すぎるのかも。

smtp = smtplib.SMTP('smtp.example.com')
smtp.ehlo()
smtp.sendmail(from_address,['var@example.com'],msg.as_string())
smtp.quit()

いずれにしてもこれまでメールの自動配信はperlで書いていたけど今後はpyhtonに移行する。

pythonでmysql接続

pandasで色々できるようになってきたのでデータは直接DBからロードしたほうが楽な場面が増えてきた。

import mysql.connector
conn = mysql.connector.connect(
user='root',password='mysql',host='localhost',database='test',charset='utf8')

自宅のmacだと文字コードの指定がなくともOKだったが、職場の環境では指定しないとエラーとなった。いずれにしてもアクセス先のDB環境に合わせ常に指定するほうがいいのだろうと思う。

cur = conn.cursor()
query = 'select * from t_test where age > %s;'
cur.execute(query,[30])
cur.fetchall()
#>  [( 1, 'foo', 34, '0120-222-456'), ( 3, 'zoo', 44, '0120-444-000')]

本来の目的であるpandasでは、csvなんかど同様read_sql()で直接読み込める。プリペアステートメントの書式が少しだけ違う。

Pandas read_sql with parameters  によればread_sql()のパラメータの書式自体にもリスト・タプル・ディクショナリが指定できるようでどれを使うかはそのときの状況次第なのかな?辞書にするのが個人的には分かりやすいように感じた。

query = 'select * from t_test where age > %(age)s;'
df = pd.read_sql(query,conn,params={'age':21},index_col='id')

DataFrame化してからごにょごにょするか、DB内である程度やれることはやっておくのか?後は、そのとき次第。

cur.close()
conn.close()

2019年1月読書まとめ

2019年1月の読書メーター
読んだ本の数:7冊
読んだページ数:1679ページ
ナイス数:253ナイス

https://bookmeter.com/users/45484/summary/monthly
■雨は これから vol.1 (Motor Magazine Mook)
書店でたまたま見かけて購入。SRってとこがシビれる。良かったです。
読了日:01月30日 著者:東本昌平
https://bookmeter.com/books/11193225

■福家警部補の再訪 (創元推理文庫)
前作からはインパクトに欠けるかな?警部補、良い味だしてるんだけどちょっと影が薄い気がする。やっぱり、映像向きなのかな?テレビドラマだったら(コロンボや古畑の二番煎じだとしても)面白いかも。
読了日:01月28日 著者:大倉 崇裕
https://bookmeter.com/books/6878499

■セキュリティのためのログ分析入門 サイバー攻撃の痕跡を見つける技術 (Software Design plusシリーズ)
キモは6章か。とかく技術面ばかりに目がいくけれど、実際の現場では時間も金もないのが冷たい現実。とにかく、運用がうまくまわらないと話にならないので自動化や可視化は必須だろう。
読了日:01月18日 著者:折原 慎吾,鐘本 楊,神谷 和憲,松橋 亜希子,阿部 慎司,永井 信弘,羽田 大樹,朝倉 浩志,田辺 英昭
https://bookmeter.com/books/13083112

■才能の正体 (NewsPicks Book)
なぜベルギー戦に負けたのか?W杯における日本代表の考察には感心しました。
自分の持っている本来の力を伸ばせるよう色んな面で考え直したいと思える1冊でした。中立的なフィードバックは難しいとは思うけれどまずは自分自身に向けて発してみたい。
読了日:01月16日 著者:坪田 信貴
https://bookmeter.com/books/13115532

■ホンダジェット: 開発リーダーが語る30年の全軌跡
自分の仕事に対する情熱、これがすべて。業種は違っても同じ技術系ということで共感できる箇所が多々あった。後半はリーダーシップ論としても読むことができそう。マルチスペシャリストという言葉ははじめて聞いた。口先ばっかのソフトウェア業界の自称プロジェクトリーダーに読ませたいな。
読了日:01月07日 著者:前間 孝則
https://bookmeter.com/books/9837543

■日本再興戦略 (NewsPicks Book)
テクノロジーにより生活が加速度的に変化を続ける時代においては、「この道ウン十年」みたいなやり口では取り残される。会社という唯一のコミュニティだけで生きていくは非常に危険で、常に変化に気を配り職業のポートフォリオをマネジメントしていくしかない。

非常にためになりました。
読了日:01月03日 著者:落合 陽一
https://bookmeter.com/books/12484734

■テニスの王子様 全42巻 完結セット (ジャンプ・コミックス)
息子がブックオフで買ってきたので拝借。結構、面白い。
読了日:01月02日 著者:許斐 剛
https://bookmeter.com/books/3016972

▼読書メーター
https://bookmeter.com/

openpyxlでAutofit的なもの

このところpandasの便利さに惹かれ業務関連のレポート作成をPerlからPythonに移行している。データそのものはpandasのto_excel()で出力しても書式設定が面倒。PerlではAutofitが一発だったのにopenpyxlには見当たらない。Stack Overflowでみつけたやり方だと日本語が含まれるCellがあるとうまくない。要するに英語圏と違い、全角半角混在する環境では文字数のカウントだけでは幅がせまくなりすぎるのだ。

unicodedata.east_asian_width(chr)を使い「全角かな(W)」「全角英数(A)」「特殊文字(F)」は倍の幅としてカウントすることで望みどおりの結果を得ることができる。

def as_text(value):
if value is None:
return ""
return str(value)
def get_east_asian_width_count(text):
count = 0
for c in text:
if unicodedata.east_asian_width(c) in 'FWA':
count += 2
else:
count += 1
return count
for column_cells in worksheet.columns:
length = max(get_east_asian_width_count(as_text(cell.value)) for cell in column_cells)
worksheet.column_dimensions[column_cells[0].column].width = (length+2)*1.3

*1.3はただの調整マージンで意味はない。

(参考) openpyxl – adjust column width size

(参考)Pythonで半角1文字、全角2文字として文字数(幅)カウント

セキュリティのためのログ分析入門

長いこと使っているけど知らなかったコマンド

grep結果の数え上げ。ほとんど、wc -lで対応してた。

grep -c

ヒットしないものをgrep

grep -v

Process Substitution この言葉自体を知らなかった。ほとんどの人がパイプ(|)で代用しているのでは?

diff <(sort file1) <(sort file2)

DOSコマンドのfindstrの存在も知らなかった。正規表現も使えるらしい。perl形式だとうれしい。

と、知らなかったコマンドの知識も収穫だけれど本当の読みどころは第6章。運用まわりのことは実際に経験してみないわからないことだらけだから、この章だけでも読み応えはある。特に自動化と可視化(この部分はPythonでやってもいいだろう)については、高価なツールなど望むべくもない「一人情シス」的なポジションでがんばってる人には助けになるはず。

理想の部屋を探す(秘書問題)

5章の秘書問題が面白かったので実際にpythonで確認してみた。

import random
from statistics import mean

def select(n,r):
applicants = [random.randint(0, 100) for x in range(n)]
candicate = max(applicants[0:r-1])

if candicate == max(applicants):
return 0

selected = [s for s in applicants[r:] if s > candicate]

if (len(selected) > 0) and (selected[0] == max(applicants)) :
return 1
else:
return 0
print(mean([select(100,50) for i in range(10000)]))

成功確率は0.295くらいで本よりやや低い。選ぶ数のバラツキが大きければ(例えば、randint(0,1000)とか)成功確率は上がって0.34前後。

rを1から変化させながら成功率を取得する。

def r_means(n,r):
return (r-1,mean([select(n,r) for i in range(2000)]))
rm = [r_means(100,i) for i in range(2,100)]
plt.scatter([x[0] for x in rm],[y[1] for y in rm])
plt.show()
Fig-1

本とはやや違い概ね28~33あたりにピークがある。僕のコードでは30%程度を見送ることで最適の解が得られるという結果。

その問題、数理モデルが解決します(浜田宏)

日本再興戦略

テクノロジーにより生活が加速度的に変化を続ける時代においては、「この道ウン十年」みたいなやり口では取り残される。会社という唯一のコミュニティだけで生きていくは非常に危険で、常に変化に気を配り職業のポートフォリオをマネジメントしていくしかない。

頭でっかちにグダグダ批評ばかりするのではなく、今できることをまずやってみる。そこから少しずつ間口を広げていくしかないのだろう。

日本再興戦略(落合陽一)

2018年12月の読書まとめ

12月の読書メーター
読んだ本の数:8
読んだページ数:2392
ナイス数:265

外資系コンサルが教える 読書を仕事につなげる技術感想
「武器になる哲学」が良かったので読んでみましたが、テクニックとしてはありがちなものばかりのように感じました。
読みが浅く薄っぺらな読書にならないため「1冊を5回」とか「T字型の読書」は実践したい。
読了日:12月30日 著者:山口 周
10キロやせて永久キープするダイエット感想
「人生を積極的に生きていくために大切なのは、この自己肯定感だと思う」
もっとも重要なのはこの箇所かな。今年はウォーキングで7キロ痩せた。来年はキープの年。悲壮感がないところが良い本でした。
読了日:12月27日 著者:山崎潤子
すべての知識を「20字」でまとめる 紙1枚!独学法感想
「わかる」とはWhat,Why,Howの3つの疑問を自分の言葉で説明できるようになること。
細かいテクニックは脇へ置いてこれをとにかく突き詰めたいと思います。
読了日:12月24日 著者:浅田 すぐる
武器になる哲学 人生を生き抜くための哲学・思想のキーコンセプト50感想
非常に良かった。
「哲学」を学問としてでなく有用性の観点からわかりやすく解説している。「悪事は、思考停止した「凡人」によってなされる」「人が集団で何かをやるときには、個人の良心は働きにくくなる」など、まさに今日本の社会が抱える問題点を突いている。
混乱のこの時代を生き抜くための先人の知恵の数々がぎっしりつまっています。
読了日:12月23日 著者:山口 周
外資系コンサルはなぜ、あえて「手書きノート」を使うのか?感想
「外資系コンサル〜」は関係ないか。結局のところ試行錯誤して自分流を生み出すしかないのだけれど、それでも他人の例は参考になる。僕にはNAEさんの「一分間日記」のレイアウト、安永さんのルーチンが参考になった。
手書きに拘った本のはずなのに以外とiPadと併用派もいるのが面白い。
読了日:12月18日 著者:太田 あや
ベッドルームで群論を――数学的思考の愉しみ方感想
「死を招く仲違いに関する統計」「歯車の歯について」「名前をつける」「アイデンティティーの危機」など非常に面白く読めた。文章もユーモラスで好ましい。
クヌース先生の小切手をはじめて観た(写真だけど)。
読了日:12月16日 著者:ブライアン・ヘイズ
彼方の友へ感想
タイトル通り美しい物語。戦争の影に怯えながらも信念を強くもつ生き様に感涙しました。理想を掲げ視線を高く生きていきたい。
読了日:12月15日 著者:伊吹 有喜
φは壊れたね (講談社文庫)感想
初のGシリーズ。結局動機がよくわからないまま終了。S&Mシリーズとは随分雰囲気が違う。
海月さんがメインになるのかな?萌絵と加部谷の掛け合いが面白かったので今後に期待したい。
読了日:12月02日 著者:森 博嗣

読書メーター

読書を仕事につなげる技術

リベラルアーツ(教養)を読み、得た知識を身につけるには必ず自分自身の行動に対する「示唆」「洞察」に変換することが必要。変換作業とは「抽象化」「モデル化」のことであり、そこで得た仮説を実際の行動に活かして行く。そのためには本を汚し重要と思われる箇所をいつでも思い出せる状態に整理しておく必要がある。

いわゆるビジネス書ではその必要はなくこちらは実践あるのみである。

読書を仕事につなげる技術(山口周)