ここ1年ぐらい家のPCでも会社のPCでもvimが落ちる。

splitして保存して終了したりすると落ちる。

不要な設定を全部はずして(syntastic以外)最小限で動かしても落ちる。

syntasticを使わなければ落ちないが、syntastic的なことができないなら他のエディタ使ったほうが良い。

おそらくpure vimの世界の問題じゃなくてpythonとかrubyとかの拡張系がおかしいんだとおもう。

色んなパターンで落ちてる人がいて各種対策を試してみたけど現状、俺の力では解決できなさそう。

他にもそんな人がいたらおすすめしたいのがMacVim(やMacVim-Kaoriya)をCLIで使う方法。

~/.zshrc:

alias vim='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"'

色々といい塩梅でコンパイルされてるので動く。落ちない。良い。

開発用ではvimやAtom、Xcodeなどを使ってますが、ちょっとメモったり何かの下書きなどはCotEditorを使っています。

メモなどはspotlightですぐ立ち上げてプレーンテキストで、等幅フォントで書きたい。余計な機能も見た目も要らない。軽くてすぐ立ち上がるものが良い。

CotEditorで無駄なものを非表示にするとこんな感じの見た目にできます。

https://gyazo.com/14e5d959ac916eea56b1ee192e8c0aa8

プログラムなどで状況が混乱した時もCotEditorにメモって整理します。

書いたものはCotEditorでファイルに保存することは殆どなく、コピペでWebのフォームに投稿したり、別のツールに貼ったりが多いです。

そういったいつでも使えるサブツールとしてとても気に入ってます。

終戦記念日ですね。今日は僕の祖父の手記を描き起こしたブログ、大東亜戦争従軍記のアクセスが一年で一番多くなる日です。

ついこの間読み返したんですが、知り合いの人々の呼び名?通称?みたいなのが面白く、気になりました。

帰国葛城丸乗船(六) | 大東亜戦争従軍記

村では、善六阪の充男一郎、中道の常作、伝兵衛籐の伝三、小沢新宅の総欽、冶右門の忠太、鍛冶の春一など、俺たちより幾らか若い組に大勢の戦死者があった。それに引き換えて、年上の層に当たるものは、応召者も少なく、戦死者は一人もなかったことは喜ばしいことだった。

小沢の大将、九兵門新宅などはれっきとした現役出でありながら、召集にならなかったというのは不思議なくらいだった。

伝兵衛籐の伝三?鍛冶の春一?ルナティックドーンの称号みたいなものかな?

https://gyazo.com/462d80568ec2c3c6fca0b4e3b9281ab8

手抜き全文検索(LIKE '%foo%')したい時の書き方。

like用のsanitizeするメソッドをいつも忘れてググるので。

scopeは返り値がnilの場合all扱いになるので都合がいい。

class User < ApplicationRecord
  scope :search, -> (keyword) {                                                                                                                                                       
    where('name like ?', "%#{sanitize_sql_like(keyword)}%")                                                                                                                           
  }
end

ログイン処理のコードレビューにおいて、認証部分が自作されていて、md5をつかっていたので、なぜ自作するのか?なぜmd5を使うのか?という点について議論になりました。

  • CodeIgniter-Ion-Authを使う
  • blowfishを使う(phpならpassword_hash関数、PASSWORD_BCRYPTオプションが良さそう)

僕は自前認証かつmd5を使う意味がわからなかったのでちょっと辛辣な表現になってしまいました。(その方が安全で楽なのに何故しないのか?的な)

ちょっと揉めてしまいまして、

「中途半端に(その実装を)採用しちゃったせいで、なんかあったら駒形さん直してくれんの?土日でも対応してくれんの?」

という感じになり、最終的には、

「レビューはあくまで"サジェスト"に留めて欲しい。」

ということになりました。コードレビューにおいて、

「ここはAAAではまずいのでBBBにすべきです。」

ではなく、

「ここはAAAよりよいBBBというやり方がありますよ。採用するかしないかは…アナタ次第です m9」

という感じですね。

https://gyazo.com/e00a80de33754a6f65c5a1c11ee15851

ホント レガシー改善は地獄だぜ

関連:レガシーPHP改善日記シリーズ

config/application.rbからは設定がなくなっている。

# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.

上記のようにconfig/initializersに置けとのことなので置く。

config/initializers/i18n.rb:

Rails.application.config.i18n.default_locale = :ja

いつも忘れてググるので。

下記のようにmigrationを作るとcreate_join_tableを使ってくれる。

$ rails g migration create_join_table_user_team user team

下記のような内容でできる。

class CreateJoinTableUserTeam < ActiveRecord::Migration[5.0]
  def change
    create_join_table :users, :teams do |t|
      # t.index [:user_id, :team_id]  
      # t.index [:team_id, :user_id]  
    end
  end
end

indexは必要だったら作れということでしょう。(優しい)

create_join_tableの良いところはテーブル名の順番をきにしなくて良いところです。この例でもuser、teamという順番で指定してるけど実際のテーブルは下記のようにteams_usersになってる。

# \d teams_users
  Table "public.teams_users"
 Column  |  Type   | Modifiers 
---------+---------+-----------
 user_id | integer | not null
 team_id | integer | not null

エラー管理サービス、Airbrakeが有名ですが、怖話ではRollbarを使っています。(確か無料枠の広さで選んだ)

cronで動いているバッチ(rails runner利用)などはrack middlewareを通さないのでエラー拾わず困っていましたが、rollbarではrollbar-rails-runnerコマンドを使えばよいみたいです。(単にevalしてる)

$ RAILS_ENV=production bundle exec rollbar-rails-runner 'puts User.count'

rollbar/rollbar-gem: Exception tracking and logging from Ruby to Rollbar

便利。

答え

ストロボリンガーを取り付ける。

問題

弊社ではインターンも含めてずっとヘッドフォンして作業してるのでお客様がきても気づけないという問題がありました。

弊社 @machida が @a_matsuda さんに相談した所、ユナイテッド・デザインワークス株式会社を紹介していただき、ストロボリンガーというハードを取り付けてもらいました。

ユナイテッド・デザインワークス株式会社 - ホーム

ストロボリンガーはドアフォンに取り付けると(たぶん)音や振動を検知して大音量と派手なストロボの光を発するものです。

ギターのピックアップみたいに?物理的に拾うので端子がなくても連携できるよがよいです。

結果

こうなりました。

ドアフォンにはマイク的なもの?を取り付ける。

https://gyazo.com/81ef08a394dca8d147e49c398c89704a

感想

元々のドアフォンはMAXにしても音はささやかで、光も作業スペースとは別の場所で光るだけなので気づけませんでしたが、ストロボリンガーを取り付けてからは最初はドキッとするほどの大音量 + かなりのビカビカで光り、100%気づけるようになりました。

二週間ほど使っていますが問題はなく、満足しています。

今日、案件が終了したのでお仕事を探しております。

二文字で表現すると無職です。😢

ここ数年のお仕事戦略の変遷

  1. rails案件がやりたい期
  2. iOS案件がやりたい期
  3. レガシーPHP改善期
    レガシーPHP改善日記シリーズ - komagataのブログ
  4. インターナショナルな案件やりたい期
    東京にいながらにしてインターナショナルな環境でプログラマー(Rubyist)として働くというお話 - 僕は発展途上技術者
  5. ペアプロ期
    ペアプログラミングのコツ - komagataのブログ
  6. リモート期

直近のお仕事

今日終わったお仕事も週3日でリモートでのお仕事でした。

フルリモートだと何やってるのかわからなくなりがちですが、毎朝ハングアウト朝会をやってたので生活リズムも崩れず、何やってるのかわからなくならずによかったです。

探したいお仕事

直近と同じようにリモートがいいなと思っています。

僕は自社オフィスに通ってお客様の作業を行いますが、自転車で30分という僕にとってベストな距離なのでとても快適です。普段自転車だと通勤ラッシュが余計に辛い…。

また、週2日は自社サービスに確保しているので週3日までがありがたいです。

得意な仕事とやりたい仕事

得意な仕事

やりたい仕事

  • golang(めちゃ速そうなので)
  • Swift(怖話iOS版を書き直してるので)
  • Android(怖版Android版に役立つ)
  • ReactなどのやったことないJSフレームワーク= Angular1.x、Vue、Backbone、Marionette、Knockout、Polymer以外(勉強になるので)
  • rails(自分にとっては楽なので)

もしお仕事ご存知の方がいらっしゃったらこのブログのコメント欄はつかいづらいので @komagata 等他の方法で連絡いただけるとありがたいです。 🙇🏻

7月15日追記:ご連絡くださった方々ありがとうございます。直近のお仕事は決まりました。今後別の機会があれば宜しくお願い致します。 🙇🏻