職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

iptablesの設定内容を見る

新しくサーバをセットアップするにあたって、sshdのポート番号をデフォルトの22から他のものに変えようとしたところ、外部から接続できない、という症状に見舞われました。
症状から考えれば何らかのファイアウォール装置によって弾かれていることは明らかだったのですが、iptablesの設定内容の確認方法を間違えていたため、無駄な時間を費やしてしまいました。
この記事は、そのときのメモです。

続きを読む

葛藤:自分にしかできないこと

何か新しいものを作るとき、自分にしかできないことを実行して上手く進んで行くという状況は最高に楽しく、有意義に感じる。自分にしかできないことが存在するとき、需要と供給のバランスが崩れ、売り手市場を闊歩する状態になる。
「自分にしかできないこと」の存在は正義である。

既存のものを守り育てて行くとき、自分にしかできないことが存在すると、自分が死んだらコイツも死ぬということが容易に想像できるようになり、その状況は大きなストレスになる。対象物が重要なものであればあるほど、ストレスは積み重なる。
「自分にしかできないこと」の存在は悪である。

自分自身が情報処理界隈に身を置いているからソフトウェアの開発や情報システムの保守運用を思い浮かべながら書いたが、きっと他の業界でも同じようなことは観測できるだろう。

続きを読む

「ユニコード戦記」を読んだ

仕事もプライベートもUnicode無しには考えられないという時代になって久しいですが、皆様いかがお過ごしでしょうか。
私は元気ですが、文字のことが頭から離れる日はありません。

さて、3月に東京に遊びに行ったとき、渋谷のとある書店に立ち寄ったのですが、その時に偶然「ユニコード戦記」を見かけたので、衝動買いしました。

ユニコード戦記 ─文字符号の国際標準化バトル

ユニコード戦記 ─文字符号の国際標準化バトル

「これって確か数年前に流行ってた本だよなー」という認識でした。周囲の何人かの技術者に聞いても同じようなコメントが帰ってきたので、きっとそうなのでしょう。2011年の発行です。

内容は、Unicodeの規格の制定に関わる物語です。
規格を感覚的にでもある程度知っていると「あー、この部分、そういう歴史的経緯だったのか!!!!」という発見の連続で、本当にためになります。異体字とか、特にそうですね。国際会議でどのように信頼を勝ち取っていき、意見を通していくのかということについても、ためになります。
もちろん、規格をあまり知らなくても、単純に物語として楽しめると思います。
ミスると一つもしくは複数の言語文化を殺してしまうことにつながる、というプレッシャーは凄いものがあったことでしょう。


最近では、MySQLの「寿司ビール問題」「🍣=🍺問題」を通して、collation(照合順序)の実装はどうあるべきなのか?という議論が様々な場所で繰り広げられています。その議論に参加している皆さんが抱える苦悩は、まさにUnicodeの規格制定に携わってきた皆さんが体験してこられたことと根本的には同じことでしょう。(もちろん、実装面はいろいろと異なるため、その苦労はもう一度誰かが体験することになるのでしょうけれども。)


この本、現在ではあまり数は出回っていないようではありますが、皆さんもぜひ読んでみてはいかがでしょうか。


3月に買った本を今になって「読んだ」と申している点については、どうかご容赦を。

2月の米子の旅日記 〜 中国地方DB勉強会への参加など

先月の話ですが、鳥取県は米子に行ってきました。
中国地方DB勉強会 #19 を動機とした旅行計画でしたが、かなり満喫することができました。

(続きを読む 際は写真が多くなることに注意)

続きを読む

「暗号解読」を読んだ

昨年、オススメの本を紹介しあう会(ビブリオバトル)が会社で開催されたのだが、その会に同僚氏が持ち込んだ「暗号解読」という本がとても興味深かったので、買って読んだ。

暗号解読〈上〉 (新潮文庫)

暗号解読〈上〉 (新潮文庫)

暗号解読 下巻 (新潮文庫 シ 37-3)

暗号解読 下巻 (新潮文庫 シ 37-3)

手元の本は平成25年に15刷と書いてあるので、かなりのロングセラーなのだろう。恥ずかしながら自分は同僚氏に紹介されるまで知らなかった。

暗号解読。
身近なところでは、シェル芸人の皆さんによる暗号解読騒ぎなどが記憶に新しい。
【こわい】唐突に暗号解読を始めるシェル芸人達 - Togetterまとめ

日頃、SSL/TLS を喋るサーバを構築したり管理したり、アプリケーションが取り扱うデータの安全性をどのように確保するのか?といったことに頭を使ったりなど、暗号のことを考えない日は無いと言っていいほどだ。
簡単な暗号なら有限量の努力で解読できる。そういう自信もあった。
しかし、実際に自分の手を動かして、あるいは自分で解読用のプログラムを書いて暗号解読を試みたことはあるかと言われると、ほとんど無い。

この「暗号解読」は少々古い(2000年前後に書かれた本だ)が、古典的な暗号や第二次世界大戦、そしてRSAや量子暗号に至るまで、時代をたどりながら取り上げて行く。簡単なものについては解読するための手法も実践的なものが紹介されている。
また、ただ単に技術的な解説にとどまらず、その暗号の発明や解読に至る人間の動きも紹介されていて没入感が高い。
読むにあたって、全部理解しようとするとなかなか難しいものはあるかもしれないが、話を追う分には、前提知識は特に要らないだろう。きっと。
皆さんも読んでみては。

追記@2017/03/19 01:10頃

そういえば、ちょっと前に「セキュリティフォント」という いかがわしい 製品が話題になっていた。
security.srad.jp
この「セキュリティフォント」の仕組みは、単純な換字式暗号。「暗号解読」の上巻の、かなり最初の方で解読法が解説されてしまう代物だ。
「セキュリティフォント」には情報を守る効果がほとんど無い(ただしゼロではない)ということはすぐにわかることではあるが、この本を読んでいれば、単純な換字がどれだけ危険であるか身を以て知ることができるだろう。

忙しさから遠ざかれ

数ヶ月前、近所のスーパーが閉店した。
閉店の2ヶ月前くらいから、忙しくてそのスーパーには買い物に行けてなかった。忙しさから解放されて「さぁ買い物に行こう」と思ってスーパーに行ってみたら真っ暗、だった。
「あぁ、俺が買い物をしなかったせいで経営不振に…」という気持ちはあって、すごい無力感に襲われた。(実際には、住民の一人が買い物できなかった程度ではスーパーは潰れないだろう。)

話は変わっておおよそ10年前のこと。外的要因によって精神を病んでしまった友人が居て、MSN MessengerMicrosoftさんが運営していたチャット)で話を聞いたりアドバイスしたりしてたんだけども、自分の仕事が忙しくなってなかなか返事を返せなくなって、しばらくしたら死亡していた、ということがあった。自分が返事を返すことができていたら助かっていたかもしれないという思いはあって、やはり無念だった。

人の死とスーパーの閉店とを同列に並べるのは変な話ではあるが、「自分の忙しさのせいで助かったはずのものが助からなかった」という思いを抱いたという点ではこの2つの出来事は全く同じだ。



…という話や思考があったことを、ここ最近の忙しさを振り返っていて思い出した。
断言しよう。忙しくしていることは「悪」である。自分の生活の中から、重要度の低いものはどんどん削ぎ落としていくべきだ。


自分自身の忙しさを測る(≒数値化する)手法は、睡眠時間の統計を取るというのが最も一般的だろうけれども、もしかしたら、自分で気付かないうちに家事を放棄して睡眠時間を確保しているかもしれない。
そうなったときでも、自分の忙しさを測るにはどのようにしていれば良いのだろうか?
例えば「近所のスーパーの特売情報を10秒以内に思い起こすことができなかったらアウト」といった基準は持っていても良いのかもしれない。

今日の教訓

近所のスーパーの閉店に気付かないのは相当ヤバイ。

第27回 #シェル芸 勉強会 参加記録

2週間も前の話ですが、シェル芸勉強会の大阪サテライトに参加してきました。
この記事は、その思い出話です。

リンク集
続きを読む

勉強会ウィーク

1週間で7回も、同業の皆さんとの勉強会に参加するという珍事が発生したのでメモ。

参加したもの

感想

  • 大変だったけども、いずれも勉強になったのは確か。
  • 定時帰りできることの証明になった。
  • 仕事に関わりのあるテーマのものには極力参加しようとした結果、いつのまにか上記のような予定が組まれていた。
  • さすがに、全部のブログ記事を書くほどの時間は無い。

Apple ID を変えた

Apple ID と言えばメールアドレスです。iCloud やら何やらにログインするときは、メールアドレス+パスワードにて遂行することになります。二要素認証を有効化している場合はもう一つの要素も必要ですが、メールアドレスが必要であることに変わりはありません。
メールアドレスと言えば、何らかの事情で変わることがあるものです。
数年前までは、ISPや携帯電話会社の乗り換えなどによってメールアドレスが変わることが多かったでしょう。迷惑メールに悩まされた結果として変更する必要に迫られるというケースも耳にしたことがあります。ここ数年では gmail などの利用が一般的になり、これらの要因によるメールアドレス変更は減りました。
減ったとは言いつつも、もちろんゼロにはなりませんし、筆者も Apple ID として使用しているメールアドレスを廃止したい状況になったので、Apple ID の変更(すなわちメールアドレスの変更)の手続きを取りました。

予想通り、すんなりとは行かなかったので記録に残しておきたいと思います。

続きを読む

デザイン指示書 その未来

WebサイトやWebアプリケーション、iOS / Android などの開発の現場において、デザイナが他者に指示を出すために「デザイン指示書」やそれに類するものを作成することは少なくありません。
ここ数年の間で、このような文書のやり取りに絡んだトラブルの事例を数件見たり聞いたりしたので、そこで起きている典型的な問題と、それに対する対応策を紹介したいと思います。

※業界や業態が変われば「デザイン指示書」が指す文書の役割は異なり、デザイナに指示をするための文書を指すこともあるでしょう。この記事を読まれる際には、皆さんの環境において使われる文書名に置き換えて頂ければと思います。印紙税の課税対象であるか否かが文書の名称ではなくて文書の内容によって判断されることと感覚的には同じですね。この記事では、デザイナがプログラマや広報担当者などに出す指示を文書化したものという意味で デザイン指示書 という語を使っています。

続きを読む

c3シリーズでswap

明けましておめでとうございます。今年もよろしくお願いします。

さて、早速ですが。
AWSで様々なアプリケーションを動かしていると、普段は c3/c4 シリーズに適した使い方なんだけども稀に大量のメモリを一度に使うことがある、というものに出くわすことがあります。
このような状況ではswap(仮想メモリ)の仕組みが動いていると非常に効果的なのですが、デフォルトではオフになっています。c3/c4シリーズを使う上では通常は後継のc4を使うのが筋なのでしょうけれども、swap領域として使用するストレージは、c3シリーズのみに提供されるインスタンスストアを使うのが気持ちイイです。
この記事では、今更ながら、c3でswap領域を確保する手順を確認します。
※この記事は 第67回 紅白歌合戦 を視聴しながら書きました。

続きを読む

2016年、作ったものまとめ。

2016年も残り10時間を切りました。
突然ですがここで2016年に作ったものをまとめておきたいと思います。

続きを読む

CloudWatch Logs を華麗に読む CWLReader v1.2

CloudWatch Logs のログを華麗に読むツール CWLReader をアップデートしました。
github.com
pure HTML / JavaScript なツールで、html ファイルを1つ置くだけで使えます。ダウンロードはこちらから。

製品のコンセプトなどは、初回リリース時の記事 をご覧下さい。

主なアップデート内容と意図

初回リリースは 2016年8月 だったのですが、この4ヶ月の間にも AWS は凄まじい進化を遂げています。その進化の中には、リージョンの追加というものも含まれます。まずは、これらに対応しました。

その他には、画面の見た目やモノの配置に調整を入れました。例えば、誤解を招かない範囲でマージンを極力小さくすることで、ログそのものを読むことに集中できるようにしました。

さいごに

何かお気付きの点などございましたら、issue を上げて頂きますと嬉しいです。
英語書くのしんどいよ〜という方は、Twitterで連絡下さい(ブロックしてたらゴメンなさい)。

関西モバイルアプリ研究会 #関モバ 第21回 に参加

関西モバイルアプリ研究会(通称 関モバ)の第21回に参加してきました。

kanmoba.connpass.com

会場

今回の会場も、このブログなどでもお世話になっている 株式会社はてな さんの京都オフィス!
本当によくお世話になってます。

自分で発表した内容

speakerdeck.com
補足資料

うるう秒の挿入まであと5日間程度!ということで、うるう秒特集を組みました。
前回のうるう秒は2015年7月1日(日本時間)だったのですが、その直前には勤務先の社内勉強会で似たような話をしていました。その時の内容を関モバ向けにアレンジしたのが今回の内容です。

聞いた話

全部メモできたわけではないですが、だいたいこんな内容でした。

最後に紹介されていたプッシュ通知テスト用ツール、良さげでした。
GitHub - noodlewerk/NWPusher: OS X and iOS application and framework to play with the Apple Push Notification service (APNs)


おまけ1


これ、自分のマシンに突っ込んでるファイアウォールが原因になっているような気がしてきました。

おまけ2

懇親会では、ずっと日付の話をしていました。
祝日法国民の祝日に関する法律)、最高に萌えます。
第二条に登場する「春分日」と「秋分日」は、懇親会において総務省が決定し公表するかのような発言をしていましたが、調べてみるとこれは正確ではなく、内閣府による解説ページ によれば、国立天文台官報にて公表するという運用が正解でした。ここに訂正させて頂きます。

さいごに

運営の皆さん、はてな の皆さん、会場でご一緒した皆さん、ありがとうございました!

第26回 #シェル芸 勉強会に参加してきました

2日前の話題ではありますが、タイトルの通りです。今回も大阪サテライトでの参加でした。

atnd.org
togetter.com

午前中の学び

午前の勉強会は bashキーバインドの話でした。

  • set -o emacs
  • set -o vi

どちらが良いかなんて一目瞭然ですね(宗教戦争を煽るスタイル)。

そしてbind芸。

もちろん午前の勉強会のオチは、危険bind芸で端末を落とすこと、でしたww


午後のクイズ大会


午後の部が始まる前に、大阪サテライトでは .xlsx のファイルフォーマット解説の会を開催していました。
基本は

  • zipで固めてある
  • 1シートで1つの .xml ファイルが存在する
  • 文字列は sharedStrings みたいなファイルに格納されている
  • 各シートのセルは、中身が文字列のときは sharedStrings の中身での出現場所を指し示すようになっている
    • 全く同じ文字列が複数のセルに入っているとき、sharedStrings は上手く再利用される
  • セルの中身が式(formula)のとき、その評価結果はシートの中にキャッシュされている
    • 例えば =A1 という式が入っていて、その参照先セルが文字列であるとき、式の評価結果がキャッシュされることになるため sharedStrings を参照する形にはなっていない。ファイルサイズが増える原因になり得る。
Q1

一度展開した .xlsx / .docx / .pptx を再びzipに戻す業務。
実は難しいです。。

Q2

パワポのスライドに含まれる「危険」という文字列が、何回登場するか数える問題。
回答:$ unzip -p 20141019OSC_LT.pptx "ppt/slides/slide*.xml" | grep -o '危険' | wc -l
unzip コマンドの展開ファイル指定にはワイルドカードも使えることが重要ですね。

Q3

パワポに含まれる画像を全て抽出してzipに固める問題。
回答:$ unzip -d hoge/ 20141019OSC_LT.pptx "ppt/media/*"; cd hoge/ppt/media/; zip ../../../hoge.zip ./*; cd ../../../
テンポラリのディレクトリを作ってますが、最後に消してないのはお行儀が悪いですね。

Q4

スライド7ページ目に含まれる文字列を抜き出す問題。文字列に全角半角が混在している場合などにおいては、古き良き時代の shift-out / shift-in のような設計思想のタグ構造になっているので、どこからどこまでが1行であるのか?をきちんと管理しなければなりません。パワポにおいては <a:p> タグが段落を示すようなので、これを1行として取り扱いましょう。
回答:$ unzip -p 20141019OSC_LT.pptx ppt/slides/slide7.xml | sed 's/<a:p>/@/g' | tr '@' '\n' | sed 's/<[^<>]*>//g'


Q5〜Q8

大阪サテライトでの予習の成果を生かすことのできそうな問題でしたが、残念ながら正解にはたどり着かず。

気休め

懇親会 兼 LT大会

今回は私生活がボロボロでしたので自分では発表しませんでしたが、今回も大阪サテライトは最高の話が続きました。
素晴らしい発表の数々は、こちら!

さいごに

企画運営してくださってる皆さん、凄いネタをぶつけてくれる皆さん、各会場の皆さんなどなどに感謝!

それでは皆さん、良いshん年を!!(typoじゃない)