技術ネタを書けるような人間になりたいという心情を詠んだ句

サブ垢

このgoflb1238ってやつは他のSNSと違う名前なんですが、
ずっと変えないまま(変えられないまま)ブログ書いてきてしまいました。

別にいいかなーとも思ってたんですがサブ垢を作れるらしいじゃないですか。

ということでサブ垢制度を利用します。

ブログもこっちに移転です。

preztoのテーマをプレビューする

こちらを読んでprezto使っちゃうぞってなって、元記事で紹介されてたテーマ一覧を見ながら一個ずつ試してました。
しかし、当方は某緑のLinuxを使っているので、一覧ページのMacな見た目とは印象が異なるのです。
潔くMac買えってことなんですかねぇとか思ってたらいいコマンド見っけた。

$ prompt -p

これでテーマ一覧をずらっとプレビューできる。

deviseのemailの代わりにusername使うときのエラーメッセージ

私はAuthlogic派みたいなことを先日申し上げましたが、deviseも触らないとねって思いまして。

deviseカスタマイズ第一弾として、いろんなサイトを見ながらデフォルトのemail+passwordをusername+passwordに頑張って変えてみました。ちゃんとサインアップ・サインイン出来て喜んだのですが、わざとパスワードミスってみたら

"Invalid email or password."

とかalert飛ばしてきやがったんですよ。
emailってなんだよ!ケェッ!!これだからdeviseは嫌いだぜ!(*`ε´*)ノ_彡☆バンバン!

怒りのgrep!

$ grep "email or password" ./ -R
./config/locales/devise.en.yml:      invalid: "Invalid email or password."
./config/locales/devise.en.yml:      not_found_in_database: "Invalid email or password."

修正!

2列AUTO_INCREMENTするときはInnoDBじゃダメ

ですってよ奥さん。
結論はこれなんで、以上ですって感じですがいちおう。

MySQLでこんなテーブルを作りたいとき

col1 col2
1 1
1 2
1 3
2 1
2 2

col1 has many col2で、col2 belongs to col1みたいな。
col1とcol2のペアがユニークで、col1だけ指定してinsertするとcol2は勝手にAUTO_INCREMENTされてほしい。

ということで、PRIMARY KEY(col1, col2)してcol2にAUTO_INCREMENTを設定すればOKと思ったがエラる。

するとこちらに、こういうAUTO_INCREMENTをInnoDBは受け付けないという驚きの情報が。

感謝なり。

Authlogicのエラーメッセージとかバリデーション条件を変更する

はい、私はAuthlogic派です。

皆さんご存知の通り、Authlogic様は認証周りのことを一手に引き受けてくれます。バリデーションもやってくれます。例えば、Authlogic様は4文字以上のパスワードしか許しません。短いパスワードで登録しようものなら

password is too short (minimum is 4 characters)

と、お怒りになられます。しかし私は思うのです。

4文字は短すぎるだろ、と。

そこでバリデーション条件を変更します。ついでにメッセージも変えちゃいます。
ドキュメントを見るとvalidates_length_of_password_field_optionsという属性を持っていて、merge_validates_length_of_password_field_optionsメソッドを用いることでバリデーションオプションを変更できるようです。うむ、長い。

実際やるときはこんな。

class User < ActiveRecord::Base
  acts_as_authentic do |c|
    c.login_field = :email

    merge_validates_length_of_password_field_options minimum: 8, message: '短けぇよ!'
  end
end

typo不可避

aタグとbuttonの見た目を揃える

Railsでlink_toとかbutton_toとかf.submitを使っていて、<a>と<button>が違う見た目になったことに憤慨したのでやってみた。bootstrapとかに頼ってると、こーいうとこが弱くなりますよね。

方針としては、全ての装飾を一旦消してaもbuttonも丸裸にしてから、好きなcssを当てるっていう感じ。

要らない行とかある気がするけどビギナーなのでそこはご愛嬌。
chromefirefoxで動作確認してあります。

<!doctype html>
<html>
  <head>
    <!-- normalize.cssマジ神 -->
    <link rel="stylesheet" href="http://necolas.github.io/normalize.css/3.0.0/normalize.css">
    <style>
      a, button {
        font-family: monospace;  // この辺は統一できればなんでもOK
        font-size: 12pt;
        color: black;

        text-shadow: none;
        text-decoration: none;
        -webkit-text-decoration: none;

        display: inline-block;
        appearance: none;
        -webkit-appearance: none;
        -moz-appearance: none;
        background: none;
        border: none;
        outline: none;
        padding: 0;
        margin: 0;
        cursor: pointer;
      }

      button::-moz-focus-inner {  // ハマりポイント
        padding: 0;
        border: none;
      }

      a:active {
        color: black;
      }

      .my-button {  // ここからはご自由にどうぞ
        background-color: #80d080;
        padding: 8px;
        border-radius: 3px;
        -webkit-border-radius: 3px;
        box-shadow: 4px 4px rgba(0, 0, 0, .5);
      }
      .my-button:active {
        background-color: #60c060;
      }
    </style>
  </head>
  <body>
    <a href="#" class="my-button">Anchor</a>
    <button class="my-button">Button</button>
  </body>
</html>

pasteコマンドすげぇよ泣けてくるよ

これと

a
b
c

これが

1
2
3

これで

$ paste file1.txt file2.txt

こうなる

a    1
b    2
c    3

まじかー。もっと早く知りたかった。
てか「こういうコマンド無いのかなー」ってなぜ思わなかったのか。

(´・ω・`)クヤマレルゥ