| @技術/プログラミング

fish-shell に移行 してこれで .zshrc のお守り業から解放されたと思ってたが、最近異常にシェルの新規セッションの開始が遅くて死にそうになってた。特にやばいのが git mergetool したときで、これは内部的には沢山の fish のプロセスが起動して diff を調べて最終的に vimdiff で表示しているように見えた(僕は git config editor=vim です)。下手するとちょっとしたコンフリクトを修正するために vimdiff が起動するまで 15 分くらい待たないといけないことがあって、 20 年くらい前の Photoshop 作業の現場1みたいな感じになってた。これはかなりやばくて、生産性ががた落ちになる。 vimdiff が開くまでに待っている間に他のことやり始めて、気がつくと平気で夕方になってたりする。

fish-shell のバージョンを 2.7.0 に上げたことが原因かと思って、かつて快適に使えていた fish のバージョンに下げたりしてみたが解決しなかったが、以下の記事にたどり着いて $fish_user_paths への値の push をやめたところ解決した。

fish-shell での PATH の通し方として以下のようなのがよく出てくる。 Homebrew で keg only なやつを入れたときにも表示される。

set -U fish_user_paths $HOME/Library/Python/2.7/bin $fish_user_paths

しかしこれをやると $fish_user_paths にどんどんパスが積まれていってしまう。どうもこれが原因で遅くなるようだった。自分の環境でも echo $fish_user_paths してみたところかなり酷いことになっていた…。

↑の Qiita 記事では set -U fish_user_paths するときに第三引数を消せとあったが、それでは根本的な問題の解決にならない( Python やら Ruby やらいろんなものの実行ファイルを PATH に通したいはず)。自分は以下の方法で解決した。

set -x PATH /usr/local/bin $PATH

bash や zsh で export PATH=/usr/local/bin:$PATH とやるのと同じオーソドックスなやり方だと思う。

これだけではこれまでに散々肥えた $fish_user_paths は残ったままなので適当に set -U fish_user_paths '' とかやってあげると空になって起動が速くなる。

fish-shell の set -U はセッションをまたいでグローバルかつ永続的に設定される変数定義の方法っぽいので下手するとその環境で fish を使い始めてからずーっと残ってしまう可能性がある(端末を再起動したらリセットされるかも知れないけど)。

まとめ

  • set -U は基本的にしない
  • $fish_user_paths は設定ファイルの中では使わない
  • PATH を通したいときは set -x PATH を使う

追記 2020-05-23

set -x PATH /usr/local/bin $PATH がよいと書いていたが、 tmux を起動すると $PATH に重複してパスが登録されてしまう。ファイナルアンサーとしては以下。

$ set -g fish_user_paths /usr/local/bin $fish_user_paths
  • set -U は使わないではなく set -g する
  • $fish_user_paths は設定ファイルの中でも使ってオッケー
    • パスを通したいときは set -g fish_user_paths /usr/local/bin $fish_user_paths とやる
      set -x PATH /usr/loca/bin $PATH をやると tmux のセッションの中でパスがダブるため

  1. 何らかの処理を実行して処理が完了されるまでにめっちゃ時間がかかるのでその間にたばこを吸いに行くことが可能だったらしい 

| @旅行/散歩

角島大橋

GW 前半の 4/29, 4/30 で山口県に行った。子どもが SL やまぐち号に乗りたがっていたのと、自分が下関の唐戸市場と角島に行ってみたかったから。旅行計画はこんな感じ。

予定表

家庭内 Kibela にエントリーを書いて嫁さんと共有しながら計画を練った。ただ嫁さんはめんどくさがって前日まで見てなかった。自分は電話が嫌いなので SL やまぐち号のチケット予約の電話を嫁さんにしてもらった。

予定では朝 7 時に家を出ることになっていたけどうだうだしてしまって結局は 9 時半頃家を出た。昼前に関門海峡に差し掛かり、関門橋を見渡すことができる PA で写真撮影して本線に戻り下関 IC で降りたところで嫁さんがシートベルトをしておらず後席シートベルト不装着で長州の官憲につかまえられた。関門橋のところの PA まではシートベルト着けていたとのことなのであれはトラップだと思う。ゴールド免許復帰の夢は潰えた。

関門橋

門司港

下関市役所の駐車場に 11 時半頃到着し、歩いて唐戸市場へと向かった。下関の印象は門司と似ていた。昭和の雰囲気を色濃く残す寂れた商店街の感じは、あぁ、門司と下関は双子の都市なんだなぁという思いを抱かせた。

下関の商店

下関の商店

下関の商店

唐戸市場は昼時ですさまじい混み具合だった。ようやく食べ物を調達しても座って食べられる場所を探すのが大変。人混みの中で押し合いへし合い状態で買った海鮮丼は大したことなくて、唐戸市場はアクティビティとして来てみるのはよいけどわざわざ食事を目当てに来るほどではないなと思った。

唐戸市場

唐戸市場

テラスから関門海峡を通るタンカーや船を眺められるのはよかった。タンカー、普段は港に停泊してるやつか沖合を航行してるやつしか見ないと思うけど、間近で見るタンカーは結構速いスピードで動いてるという知見が得られた。

関門海峡を横切る船

関門海峡を横切るタンカー

関門海峡を横切るタンカー

関門海峡を横切るタンカー

唐戸市場を出たあとは商店街にある自家焙煎のコーヒー屋でサイフォンでいれたコーヒーを飲んだ。

サイフォンコーヒー

サイフォンコーヒー

その後角島を目指して日本海側を移動した。海沿いの景色は福岡の糸島と同じような風景だったけど、とてつもなく長いビーチがあって気持ちよかった。角島には 4 時頃着いた。運良く空いたところに停められたけどすごく人が多くて車を停める場所を見つけるのが大変だと思った。この日は曇り気味の天気でガスも多く、角島大橋の景色ははっきりは見えなかった。橋を渡って角島の方まで行ってみたけど観光名所となっている灯台のあたり(映画の舞台になったらしい)は駐車場代が福岡の天神よりも高くバカらしくて車を停めはせずぐるっと回って戻ってきた。角島大橋近くの店でコーヒーを飲んで休憩したあと、併設の萩焼の店で嫁さんがいくつか器を買った。

角島大橋

砂浜

砂浜

BB HOUSE

6 時頃から今度は宿泊先の山口湯田温泉に向かった。途中、秋吉台を見ていきたいと思っていたけど道に迷った&日が暮れてしまい、結局秋吉台を見ることはできなかった。 8 時頃ホテルに到着し、繁華街に出かけて食事をした。結構迷ってふらっと入った店は悪くはなかったけど会計がすこぶる高く卒倒した。宿に戻ると 11 時半を過ぎており、併設の温泉の利用を断られた。予約していた部屋がツインではなくダブルの部屋だったことを嫁さんにとがめられ床で寝た。

翌朝、朝食が無料で付いていたので食べに行ったところ、無料なのに地元のおばちゃんたちが作る煮物などがどれもおいしくびっくりした。チェーンのビジネスホテルで家庭の朝食みたいなやつが食べられて良かった。

食事を終えてチェックアウトし、コインパーキングを探して車を停め、メインの目的の SL やまぐち号に搭乗すべく湯田温泉駅へとタクシーで移動した。湯田温泉駅はつつじが満開だった。

つつじ

SL やまぐち号は非常に混雑していた。また車両は古くてすすけていた。 SL は子ども時代に家の近所を走っていた ASO ボーイの試乗運転にしか乗ったことがなく、長距離を乗るのは初めてだった。 SL 特有の動き始めたときに車輪が滑ってずるっとなる感じが印象的だった。

SL やまぐち号

SL やまぐち号

SL やまぐち号

SL やまぐち号

SL やまぐち号

やまぐち号の目的地は島根県の津和野で、車窓からの風景は山また山、時々田園地帯という感じだった。石州瓦の赤い屋根瓦の家々が印象に残った。日本海側で降雪量が多いことも関係あるのか、切り妻屋根の家が多いなと思った。

石州瓦の屋根

石州瓦の屋根

田園風景

津和野は昔ながらの雰囲気を残す街だった。小京都と言われているようだが、中山道の宿場町の馬籠宿に似ていると思った。小さな街なことと帰りの SL までの時間が限られているのでレンタカーを借りるほどでもなかったので駅前でレンタサイクルをかりて街を回った。昼飯を食べなければならなかったが着いた時刻が 14 時前でどこの飲食店も軒並みラストオーダーを過ぎており、昼食を食べる店を探すのに難儀した。森鴎外の出身地とのことなので鴎外の生家に行ってみたかったが、三時間弱の滞在時間では時間が足りず、菓子屋で名物の源氏巻を食べ、閉店しようとしていたところを何とか滑り込んで割子そばとうずめ飯を食べ、酒蔵を二軒回って日本酒を買った(2本買ったうち1本は列車から降りるときに嫁さんが落として割った)ところでタイムオーバーとなった。

津和野

津和野

津和野

津和野

津和野

源氏巻き

割子そば

うずめ飯

山口の湯田温泉駅に戻るとどっと疲れが出て、これから福岡まで運転して帰るのかと思うと暗澹たる気持ちになったので帰る前に足湯に浸かって帰った。街中に綺麗な足湯スポットがあって 200 円で入れて、足湯に浸かりながらコーヒーなどを飲むこともできる。

IMG_2979 DSC_2938

いろいろ盛りすぎて一泊二日で行くには時間が足りなかった。特に津和野にはもう一度行ってみたいと思った。

SL Yamaguchi Tour

| @Mac/iPhone

Mac の Day One を 2.1.8 にしたら日本語の文章を入力できなくなってしまった。正確には入力出来なくなるわけではないが、日本語を入力して変換したあと確定すると変換した文字列が選択済みの状態になり、続けて文字を入力しようとする消えてしまうというもの。こんな感じ。

なんか文章を書きたいと思っても入力できなくなるのきつい。最近は iPhone でも Mac でも読んだり書いたりできるのが便利で Vim を使わず Day One に直接文章を書くことが多くなっていた。書けないとなると結構ストレス溜まる。はよ直して欲しい。

追記(2017/05/08)

2017/05/04 に修正版リリースされてたっぽい。試してみたところ直ってた。

スクリーンショット 2017-05-08 10.41.46.png

| @Mac/iPhone

Typinator

Lifehack (笑) 臭がしてこれまでキー入力拡張みたいなアプリケーションを使うのは敬遠してたんだけど(そもそもああいうのは IME がないアスキー文化圏の人向けだと思ってた)、 Pull Request 出すときのテンプレートとかを一発で出せたら便利だなと思ってその手のやつを使うことにしてみた。

有名どころだと TextExpander がある。試してみようとしたら何と月額課金に移行してて買い切りではなくなっていた。しかも結構高い(年額 $40)。いろいろ物色してたら昔何かの bundle で購入していた Typinator というやつがあって、こいつならアップグレード料金で使えるし買い切り型だったので使ってみることにした。新規で買っても EUR 24.99 で TextExpander の年間使用料より 1000 円くらい安い(24.99 EUR = 3061.5624 JPY)。

良く入力するやつを省入力できて便利

仕事で Zoom というビデオ会話ツールをよく使う。 Zoom には電話番号みたいに個人に紐付く固定の URL が存在してて、誰かと話したいときにそれを Slack 上に貼りつけて会話を始めたりする。この URL をいちいち Zoom を開いてコピペするのめんどいので ,zoom と打つと出せるようにしている。一瞬で MTG 始められて便利。

,dt と打って2017-03-11 のように今日の日付を表示させることも可能(入力キーや日付・時刻のフォーマットはカスタマイズできる)。こういう機能は ATOK にも付いているけどスペースキーを押したりリターンキーを押して確定したりしなくてよいのが快適。 ふむふむ~、ナルホディウスですぞ のような変換に何度も文節を調節したりしないといけないやつも ,naruho と打てば出せるようになってチャットが円滑に行えるようになった。

長めのやつも展開できて便利

冒頭に書いたように、 Pull Request 出すときに使ってる定型文みたいのがあって、過去の Pull Request からコピーしてきたりしていたのが一発で入力できるようになって異常に便利。 pullreq と入力するとシュバッと展開されるようにしている。こんな感じ。

Typinator

ATOK に辞書登録するのとは違って改行を含んでいてもいいし、日本語入力モードに切り替えなくても良いのが便利。

inputrc で vi mode にしている Terminal (iTerm.app) で使うときの問題点

Typinator には GItHub みたいになってしまうのを抑制する機能がついてて、大文字が二文字連続したあとに小文字が入力されると自動的に二文字目を小文字に変換するという機能( GItHub を GitHub に直してくれる)がついている。 Typinator は vi mode でシェルを操作しているとかは判別できないので勝手に補正してくれて上記のようなキーストロークが bbi と修正されてしまう。

Vimmer なのでシェルの操作モードを vi mode にしているのですけど、単語移動するときについつい

Shift + b Shift + b i

とか入力してしまうと Typinator が反応して bbi に補正されてしまってうざい。

設定に DOuble CAps Exception というのがあって例外設定できるみたいだったので BBi を追加してみたけどどうもうまく効いてないみたい…( bbi に補正されてしまう)

スクリーンショット 2017-03-11 13.59.08.png

さらに詳しく設定を調べてみると、アプリケーションごとにルールの有効・無効を切り替えられるっぽいので、 iTerm を使っているときは連続する大文字の小文字補正を行わないことにしてみた。これで様子を見てみよう。

スクリーンショット 2017-03-11 14.04.34.png

| @技術/プログラミング

Vim で Markdown を編集するとき、 vim-quickrun を使って Marked でプレビューするようにしてる。これが便利で体に染みついてるので、 Deckset で表示する用の Markdown スライドを Vim で編集しているときに一発で Deckset を開いてプレビューできたら便利だなと思ったので以下のようにしてみた。

  1. ファイルのパスに slides が含まれていたら filetype を markdown.slide にする
  2. そんで ft=markdown.slide のときは vim-quickrun で Deckset にファイルをプレビューできるようにする

こんな感じ。

au Bufread,BufNewFile /*/slides/*.markdown set filetype=markdown.slide
let g:quickrun_config['markdown.slide'] = {
      \ 'outputter' : 'null',
      \ 'command'   : 'open',
      \ 'cmdopt'    : '-a',
      \ 'args'      : 'Deckset',
      \ 'exec'      : '%c %o %a %s',
      \ }

便利。

| @散財

iPhone 7

iPhone 7 を買った。 iPhone 6 を買ったのは 2015 年 7 月で買い換えサイクルからするとだいぶ早いのだけど、いい加減両親にガラケーを卒業してもらおうと思って、弟も少し前に iPhone を買い換えたので自分のと弟のを両親に渡して docomo から MVNO に引っ越してもらおうという算段。弟の iPhone 6 は docomo のやつで自分の iPhone 6 は SIM フリーなので問題ない。いい世の中になった。

一括払いで 9 万円も払えるような富裕層ではないのでオリコのローン( 20 回分割まで金利が 0% のやつ)で買った。 iPhone 6 を買ったときは転職したばかりで社会的信用ゼロだった& iPhone 5 をクロアチアでなくしてしまって一刻も早く電話が必要だったためクレジットカードの分割払いで買っていたので、今回が人生初のオリコローン。審査結果出るまでに結構時間がかかり、ベンチャー企業に勤めてるせいで審査通らないのかなとやきもきした。急いで欲しい人はローンは使わない方がいいと思う。ひょっとすると一部上場企業勤務の人だと一瞬で審査降りるのかもしれない。

Suica on iPhone 7

iPhone 7 では Suica を Wallet に登録できるはずなので ANA VISA Suica を登録して電子マネーはこれに一本化しようかと思っていたけど、 ANA VISA カードの Suica を吸い出して Wallet に追加することはできないみたいだった。調べてみたところ JR 東日本の Suica アプリでモバイル Suica を新規発行し、そのチャージ用のカードに ANA VISA Suica をクレジットカードとして指定すればよいっぽい( Suica が一枚増える感じ)。 ANA VISA Suica は View カードでもあるのでモバイル Suica の年会費はかからない。これでいつでも iPhone からチャージできて便利。オートチャージの都合で JR 九州の SUGOCA を使っていたけど( Suica は関東でないとオートチャージできない)、 iPhone からいつでもチャージできるとなれば Suica でも困らなそう。ほかの電子マネーの Apple Pay 対応が遅れたら Suica が交通系電子マネーの乱世を統一するかもしれない。

ハードとしての iPhone 7 の感想は、とにかくめっちゃ速いのがいい。 Touch ID とか一瞬で認証される。 Force Touch もよい。 iPhone で長い文章を入力中にカーソル位置を動かすの、結構ストレスだったんだけど Force Touch だと押し込んだだけで Vim のビジュアルモードのようにするするとカーソルを動かせて便利。ストレージが増えてるのもいい。いわゆる "竹" スペックの 128GB のやつを買ったのだけど、これだけあれば Eye-Fi で写真転送しまくっても iPhone がお腹いっぱいになったりしないだろうから安心。音楽もいっぱい入れられるので飛行機に乗ったときに iTunes Match 使えなくてほとんど聞ける音楽がない、という事態も避けられる。

一方で残念な点。ホームボタンが物理ボタンじゃなくなったのは慣れない。押し込んだ時のバイブレーションが MacBook Pro のトラックパッドの完成度とは大違いで残念。あとこのホームボタン、風呂で使える系のケースに入れてると押せないことが判明して愕然とした。無印良品の風呂スマートフォンケースに入れてみたところ押しても反応せずホームボタンはお飾りとなった。防水とはいえ風呂で使って水漏れ判定されたという話を聞くので風呂 iPhone するときは防水ケースに入れたいもの。ホームボタン効かないと全く使えないわけではないけど著しく操作性が低下する(Today widget を呼び出して適当なアプリを開きロック解除、 Force Touch でアプリ切り替えを呼び出しホームスクリーンに切り替え)。

Silicone case for iPhone 7

ケースは Apple のシリコーンケースを買ってみたけどめっちゃすべって良くない。 iPhone 5 や iPhone 6 には革のケースを使っていて、滑るということはなかった。革ケースは高いし(安い Android が買えそうな値段) 2 年近く使ってると破れてくるので次はシリコーンケースにしてみようと変えてみたけど失敗だった。やっぱり iPhone は裸が薄くて持ちやすくて最高。ケースを付けずに iPhone を使えるような精神力が欲しい。ガラスの保護には Anker のやつを買った。 iPhone 6 使ってるとき 2 回くらいコンクリートの上に落としたことあるけど iPhone のガラスは何ともなかったのでこれは頼りになると思う。

不満なところ、不便なところもあるが、 iPhone 6 に比べると格段に良くなっている。地方に住んでて Suica 使えないので iPhone 7 はパス、と思ってる人も実は使えて便利になる可能性があるのでご一考をお勧めします。

| @技術/プログラミング

むかしやってた映画のブログ( WordPress )のデータをこのブログに取り込もうとしたら、 mysqldump しといたデータが文字化けして読めなかった。 映画ブログのデータベースの文字コードは utf-8 にしてたけど、 Dreamhost の MySQL サーバーの defualt-character-set がおそらく latin1 になっていたと考えられ、 mysqldump するときに utf8 のデータが latin1 として export されてしまい文字化けを起こしていたっぽい。

vim で開いて e ++enc=utf8 してみたり、 nkr で変換しようと試みたり、ググって出てきた Perl のスクリプトで変換しようと試してみたけど直らなかった。この変換は MySQL 自身にやらせないとダメなのではと思い、以下を試したがダメ。

  • [x] latin1 で DB 作成し latin1 で import 、 utf8 で export
  • [x] latin1 で DB 作成し utf8 で import 、 utf8 で export

結局、 Stack Overflow にあった以下の方法で解決できた。

一旦文字化けしたまま utf-8 の文字列として import し、以下の SQL を流す。

UPDATE [table_name] SET [column_name] = CONVERT(BINARY CONVERT([column_name] USING latin1) USING utf8);

やっぱり MySQL で化けたデータは MySQL で直すしかないみたいだった。