@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

日記を書く

きっかけ

「スーパーエンジニアへの道」の「第七章 自分自身への気づきを高める方法」に「日誌をつける」と書いてありました。 スーパーエンジニアになりたいので、仕方なく日記を書き始めました。

ブログとは違い人に見せないつもりで書いています。 ですので、サンプルは見せません。

メモ帳

日記は物理的なメモ帳に書いています。 具体的にはジェネリックモレスキンです。 たまにしか書いていなかったのでジェネリックでも良かったです。 日記のように、まめに書くと書き味が気になります。 今のメモ帳を使い終わったら、次は正規のモレスキンにしようと思います。

万年筆

筆記具は万年筆を使っています。 20年前に入手したパイロットの万年筆です。 10年ほど使っていませんでしたが、インクを入れ替えたら普通に書けました。 万年筆、マジで万年書けるのか、すげー。

内容

その日、考えているアイデアを列挙しています。 最初はその日にやったこと書いていましたが、イマイチ面白くなかったです。

列挙すると自然と優先順位が決まります。 GTDの収集ステップみたいです。

深く考えるのはTwitterに書いたり、そのテーマでマインドマップを書いたりすれば良いので、 日記では、思考を深めたりしません。 自分は考えて行動しないことが多いので、考えるより行動することに力点を置いています。

効果

前述のように優先順位がつくのが一つです。 迷っている時間を減らして、行動を増やせます。

もう一つ、アイデアを忘れられます。 脳は短期記憶を忘れないために定期的リフレッシュします。 メモ帳に書いて、後日参照可能にすれば、忘れてもよくなります。 リフレッシュに使っていた脳のリソースを、別のことを考えることに使えます。

Legacy on Rails

最近古いバージョンのRailsに触ることが多かったので、二度と使わないで済むことを祈りつつ、得た知見をメモします。

Ruby 2.4 と PostgreSQLRails 3.2

Rails 3.2 と PostgreSQLRuby 2.4で rake db:create だけコケるおもしろ現象に出会いました。

https://github.com/rails/rails/blob/1f2192e46d78ee0ba2b06373f2c24caf8440ff5b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L747

        option_string = options.symbolize_keys.sum do |key, value|
          case key
          when :owner
            " OWNER = \"#{value}\""
          when :template
            " TEMPLATE = \"#{value}\""
          when :encoding
            " ENCODING = '#{value}'"
          when :tablespace
            " TABLESPACE = \"#{value}\""
          when :connection_limit
            " CONNECTION LIMIT = #{value}"
          else
            ""
          end
        end

のsumでエラーになります。

https://github.com/rails/rails/blob/e17e25cd23e8abd45b1706463dd57c90fa6dcb7c/activesupport/lib/active_support/core_ext/enumerable.rb#L58

  def sum(identity = 0, &block)
    if block_given?
      map(&block).sum(identity)
    else
      inject(:+) || identity
    end
  end

で、identityの初期値0と文字列を結合しようとして String can't be coerced into Integer が出ます。 Ruby 2.4 以降はArray#sumが使われて型変換が起きる、のかな?

回避策もおもしろくて、どうもrake db:create以外は大体動くっぽいです。 ので rake db:create の代わりにSQLで直接 CREATE DATABASE "hogehoge" ENCODING = 'unicode'; するのが、Rubyのバージョンを変えたりするより、てっとり早かったです。

Ruby 2.5 と devise 3

Ruby 2.5では、deviseの3系は最新版(3.5.10)が動きません。 github3-stableブランチには修正版が上がっています。

次のようにGemfileでgithubのブランチを指定すれば、Ruby 2.5 と devise 3 を組み合わせて使えます。

gem 'devise', git: 'https://github.com/plataformatec/devise' , branch: '3-stable'

Turbolinks 2.5

Turbolinks.enableProgressBarは2.5までしかありません。 https://github.com/turbolinks/turbolinks-classic/tree/2-5-stable#progress-bar

In Turbolinks 3.0, the progress bar will be turned on by default.

3.0 以上に上げるときは、Turbolinks.enableProgressBarは消しましょう。

mysql2 0.4.10とrails 4.2.5

mysql2 は 0.4.10からMySQL 8 をサポートしています。 https://github.com/brianmario/mysql2/issues/980

rails は 4.2.5からmysql2 0.4.5をサポートしています。 https://qiita.com/park-jh/items/93ec6e967c1731fd90b3

MySQL 8 を使うためにmysql2のバージョンを上げるときは、Railsのバージョンも一緒に上げる必要があります。