macbook airのキーボードがぶっ壊れて気づいたこと

先月末こんなことがあった

完全に詰んだと思ったけど、一定時間放置するとshiftのホールド状態が解除されるようで、数日放置してから起動するとセーブブート起動にならずに普通に起動出来る、けどすぐまたshiftホールド状態に逆戻り、という状態だった。

shiftがずっと有効だとパスワードが正しく入力出来ないからあらゆるサービスのログインが出来ないし、文字入力しようにも日本語変換出来なくてどうしようもない感あった。

で、そんな状態で生活して気づいたことをまとめてみる。

PC使わなくても意外と何とかなる

調べ物するならiPad mini, iPhoneで済むし、最近プライベートで開発してなかったんで割りとなんとかなった。一応iPad miniでニコ動見れるし、Twitterも見れるし。

時間が出来た

上でニコ動見れるしTwitter見れる、とは書いたけど、やっぱりPCほど快適ではないのでだらだらニコ動眺めたり、Twitter眺めたりする時間が減った。その分だけ時間が増えて、大体本読んでた。 一番大きいのはPCでオカズが見れなくなって自己発電する時間が減ったからかも

iOSの音声テキスト入力が意外と優秀

何かぐぐるのがiOSだと入力が面倒なので、試しに音声入力を試してみたら意外と優秀だった。tweetする時とかにも使ってた。

ただやっぱり完璧ではなくて、なかなか認識してくれなくて最初から文字入力してた方が速い、ってこともままあった。常時使うのは厳しそう。

あと、人はいかに考えながら文字入力してるのか、ということに気づいた。普通のキー入力だと考えながら入力できるけど、音声入力の場合文章考えてからじゃないと喋れない。ぐぐる時のキーワードを入力する時とかに使うのがベストプラクティスっぽい。

iOSだとかゆいところに手が届かない

ニコ動をはてブするとか、RSSfeedlyに登録するとかが出来なくてちょっとストレスだった。ただ、ここらへんはブックマークレットを駆使すれば何とかなりそうなことが多そう。

開発できない

最近あんまりプライベートで開発してなかったのはしてなかったんだけど、ちょこっと試したいことがあっても出来なくて(´・ω・`)ショボーンってしてた。

shift押しながらMac起動するとセーブブートになる

初めて知った。

shift押しながらリンククリックすると新しいウィンドウで開く

初めて知った。何も考えずにブラウジングしてるとウィンドウめっちゃ増える。

何かクリックした時のアニメーションがshift押しながらだとスローモーションになる

初めて知った。

例えば、shift押しながら最小化ボタン押すとすごいニュルニュルしながらドックに吸い込まれてくし、Mission Controlでshift押しながらウィンドウ選ぶとすごいゆっくり戻る。

何のための機能なのか分からんけど、わりとストレスだった。

話は変わって現状の話

最初に書いたように、shiftがおしっぱになるけど放置したらホールド解除される、という状態で、徐々にホールド解除されるまでに必要な時間が短くなってた。で、解除された状態で起動→KeyRemap4MacBookで左シフトを無効にして、代わりに左コントロールを左シフトに割り当てて何とか凌いでる。そのうち諦めてmacbook pro買うかもしれない。今のところ次のairまで粘るつもり。

快適作業用BGMニコ動ライフを送れるChrome拡張作った

よくニコ動で数十分ある音楽系動画を作業用BGMにして作業することがあって、それの再生/一時停止が面倒だったのでツールバーから出来るniconicoampって言う*1拡張を作りました。

ニコ動の動画を登録するとツールバーから再生/一時停止が出来る、というものです。

demo

そのうちショートカットキーで再生一時停止出来る機能追加するつもりです。

*1:名前の候補としてniconicontrollerとかnicoplayとか考えたけど既にあった

confluenceのセクションごとのページ内リンクを作るChrome拡張作った

f:id:takc923:20140112002438g:plain

Confluenceのセクションまで指定して人に共有する、ってことをしたかったので作った。

https://chrome.google.com/webstore/detail/confluence-section-link/eapejbjglgbblhocmcbeclpcbeiikocf

Confluenceって目次がページ内リンクになってるんだけれど、目次使ってないとセクションのページ内リンクが手に入らない。デフォルトでこんなかんじにして欲しい。

あとマルチバイト文字を含むURLだと適切にリンク化処理してくれない *1 チャットアプリを使っているので、ページ内リンクを2回クリックするとマルチバイト文字をURLエンコードするようにした。あとオプションでURLエンコードする方をデフォルトにも出来る。

送信元がPrivate IP Addressのパケットはネットワークアドレス変換しないとウェブの藻屑になって消滅する

ネットワークアドレス変換(NAT)について調べていて、以下のページを読んでた。

NAT - ネットワークエンジニアを目指して

そしたらこういう記述があった

インターネット上にプライベートIPアドレスをもつパケットがやってくるとすぐに破棄されてしまう

へー、と思ったんだけどよく考えたら当たり前か、と納得したので納得したメモを残しておく。 インターネット通信においてパケットはrouterを通じてclientからserverに届けられる。

client -> router -> router -> server

で、パケットには送信先のglobal ip addressが書いてあってrouterがそのglobal ip addressがどっち方向にいるかを知っているから、routerを通じてserverにパケットが届く。で、clientからのリクエストがserverに届いたら、serverからclientにレスポンスパケットが返る。これは同様にrouterを通じてclientに返される。

client <- router <- router <- server

この時、clientのip addressがprivate ip addressだとrouterがそのip addressがどっち方向にいるのか分からない。で、どっち方向にいるのか分からない時、routerはデフォルト経路と呼ばれる経路にパケットを投げる。要はそのip addressがどっち方向にいるのか分からないが、とりあえず隣のrouterに投げる。自分は知らなくても隣のrouterが知ってるかもしれないから。

global ip addressならそのロジックでいつかは届くだろうが、private ip addressだと誰もその宛先を知らないのでrouterは全部デフォルト経路に投げ続けてパケットはたらい回しにされることになる。このままだとこのパケットは永遠にさまよい続けるように思えるが、IPパケットにはTTL(Time To Live)というたらい回しの回数制限が記録されていて、回数制限を超えるとrouterはそのパケットを破棄する。

というわけで、最初の話に戻ると

インターネット上にプライベートIPアドレスをもつパケットがやってくるとすぐに破棄されてしまう

ということになる。

なので、こうならないためにネットワークアドレス変換という技術があるわけだ。

間違ってたら誰か指摘して下しあ

エリック・エヴァンスのドメイン駆動設計読んだ

会社でまじめにドメイン駆動設計していて、今必要としている程度の知識は身についたと思う。けど、全部理解できたかと言われると出来てない。
やっぱり

こういう問題があります→こういう解決策があります

というのは、その問題を経験してないとしっくりこないな。実例はいっぱい書いてはいるんだけど、分からんところは分かんなかった。

最近気づいたごくごく当たり前なこと

何かやりたいことがあり、かつそれについて詳しい人がいる時、

  • 自分でとりあえずやってみてからその詳しい人に「これでどう?」

と聞くより

  • その人に何をすればそのやりたいことが実現出来るか聞いてからそれを実行する

方が何倍も効率が良い。
前者だとやることがずれていたら修正しないといけないし、そもそも必要のないことをやっているかもしれない。

気づかないうちに前者でことを進めていて随分とロスをしてしまった。

じかんのつかいかた

最近やりたいことやらないといけないこといっぱいあって時間足りてない感ある。だけどやっぱり無駄な時間というのは存在していて、だらだらニコ動みたり、登録しすぎてキリがないGoogle Readerを眺めたり。
ただ、そういうことやってる時は「やりたいことやらないといけないこと」をやる気が出なくてそうなってる。そういう時間を一切持たないようにするのもなんか違う気がしていてその「無駄な時間」は実は「必要な時間」なんじゃないかと思ったりもするが、全部必要だとも思わない。
要はバランス取ってやればいいんだと思うけどやっぱり無駄な時間が長いからそういうの削りたい。
人は場所か付き合う人か時間配分を変えないと変わらないらしい。時間配分を変えるってさらっと言ってるけどそれ実現するにはどうしたらいいんだ。