scramble cadenza

技術ネタのガラクタ置き場

mac に外部から ssh 接続する

イントロ 訳あってリモートで自宅の mac に ssh 接続したいなーと思ったことがあり、調べてみたことがある。 どうやらMacに外部からアクセス出来るようにする方法 - rcmdnk's blog の設定を行えば、可能になるそうだ。 試したら本当にできてしまった。 じゃ…

ruby-build で、好きな version の ruby を入れるお話

イントロ 毎度おなじみ ruby-build ですが、入れることができる ruby の version と rubygems の version は制限があります。 とはいえ普通に ruby を使う分には、提供されているもので何の問題も無いのですが。 rbenv を使って、ちょっとマニアックな ruby …

Cannot find terminfo entry for 'xterm-256color' と言われる件

こんな時に発現 iterm2 使って 256 color にしている tmux を使って環境変数を色々渡している などの条件が重なって リモートサーバーに xterm-256color が無い場合再現するっぽい。 症状 vi, emacs, nano などのエディタが開かない → ファイルを編集できな…

ruby で動的にクラスを作る

結論 定数に class クラスのオブジェクトを代入すると、(ruby で一般的な) class として扱われる module or class の配下にネストして class を作る場合、その class が持つ定数として定義する class.new する際に引数として、class クラスのオブジェクトを…

ruby 経験者が90%以上間違える問題

イントロ 弊社の凄腕エンジニアが、タイトルに書いてあることを言いながらメンバーに出してくれた問題です。 もちろん私は 90 % 側ですた。 問題 以下の出力結果はどうなるでしょう? p { :a => 1, :b => 2 } Hash が出力されて Hash が返る、と思ったあなた…

emacs で linum-mode + Ricty フォントを使おうとすると、余計な空白が含まれてしまう件

イントロ linum-modeの余計な余白をなくす方法 - handlename's blogと同じ現象。 ただこの方のコードをコピペしても、私の環境では治らず。おまけにググっても情報が少ない。 しかし font が怪しいという考察は非常に参考になりました。 環境は Emacs 23.4 O…

クラスメソッドでインスタンス作る話

結論 クラスインスタンス変数として扱われるっぽいです。 class Klass attr_accessor :hoge def self.hoge(hoge) @hoge ||= hoge end end # @hoge に値が入る Klass.hoge('hoge') #=> "hoge" # もう既に @hoge には値が入っているので、'fuga' は入らない Kl…

berkshelf で path を変更した場合は、knife[:berkshelf_path] を変える。

イントロ これに気づかなくて結構ハマった。 症状 berkshelf を使って、cookbook を install するとき、bundler 風に以下のように path を変えた。 berks install --path vendor/cookbooks すると cookbook が見つからないと怒られ始めた。 ================…

berkshelf を使って rbenv 経由で ruby を install する方法

イントロ chef で環境構築したはいいものの、ruby の install は意外と手間だったりします。 できれば rbenv のようなものを使って、色々な ruby のバージョンを試せる方がいいですよね。 ところが肝心の rbenv を install するレシピの自作は結構シンドい。…

elisp で正規表現にマッチした部分の抽出

ruby で言うと url = "https://www.google.co.jp/" $1 if url =~ /https:\/\/(.*)\// #=> "www.google.co.jp" みたいなことをしたい。 elisp だと以下のように書く。 (setq url "https://www.google.co.jp/") (string-match "https:\\/\\/\\(.*\\)\\/" url) …

vagrant-berkshelf を使わずに Berkshelf + knife-solo で環境作ってみた話

イントロ タイトルの通り。今までは面倒臭がって全部レシピを書いていたけれど、Berkshelf 使えば、その手間すら省けると聞いたので使ってみました。 ところで Berkshelf は何も考えないと vagrant-berkshelf という Vagrant のプラグインを経由して berkshe…

ruby でクラスメソッドを委譲する方法

方法 SingleForwardable を使う require 'forwardable' class MyFile extend SingleForwardable def_delegator File, :join end MyFile.join('hoge', 'fuga') #=> "hoge/fuga" MyFile のクラスメソッドとして File#join っぽい挙動をするメソッドを委譲 別の…

サンタさんたち? ~サンタの複数形~

イントロ クリスマスネタ。職場のある日常。 時期が時期だし、クリスマスネタを盛り込んだ rails アプリを作成しようと思い立った。 その名も「santa」という名前のアプリ。(ひねり無し) ’santa’ という文字列を与えて、そこからクラスを作成するときに起き…

STDOUT.tty? って何?

時々コードで見かけるので。 標準出力と関連づいているなら true crontab から実行された場合は false パイプでつなげたりして、出力される場合は false 参考 Class: IO (Ruby 2.0.0) Check if Your Ruby Script is in a Pipe

packer 触っててハマった時は veewee 眺めると幸せになれる

イントロ veewee じゃなくて packer 触ってみた話。今だからこそ veewee のおさらい 何故タイトルのようなことを思うかと言うと 「veewee」で作られたテンプレートが、ありとあらゆる地雷を潜り抜けて作られた物だから です。 私は基本的にpacker の公式を読…

今だからこそ veewee のおさらい

イントロ 敢えて packer ではなく、veewee 使ってみるの巻。packer は後日。 packer 使うにも veewee のテンプレートを流用できるし、ついでに veewee も使えるようになっておいて損はないはず。 AWS 使わないなら veewee でも packer でも変わらないですか…

まるごと hpricot

イントロ 何かと便利な html parser の説明。 自分用の忘備録も兼ねて逆引きっぽく書いてみるテスト。 主な使用法 Hpricot.parse(Hpricot() でも良い) メソッドの引数に、parse したい html を与える。 search or at メソッドに「検索したい条件」を引数に与…

好きな事は好きなだけやっていいと思うんだよ、俺がそうだったし

状況 私は20%ルール(業務時間の20%を使って何かweb アプリケーション作ろうプロジェクトのこと)で、22時ぐらいまで残業していた。 同じく残業していた上司。彼はそろそろ帰宅するらしい。 彼が帰ってしまうと、私は会社に残る最後の一人になる。 画面にかじ…

ruby で最初難しかったけど、わかってきたこと【Enumerator(Generator)】

イントロ 最初理解するのが難しかったけど、ようやく理解できた気がするので書いてみるメモ。 お題は Enumerator と Generator について。 新しさ皆無の n番煎じです。 Generator class Generator Generator は、後で出てくる Enumerator と同じようなことを…

linum の背景色を設定する

探したけど意外と無かったので、書いておく。 お気に入りの color-theme は 「color-theme-charcoal-black」です。 (custom-set-faces '(linum ((t (:inherit (shadow default) :background "Gray23"))))) Gray23 のところは、お好みの色を指定。 M-x list-c…

キーボードのみでブラウザを操作するmy設定を晒してみる

イントロ 意外とキーボード操作系の記事って少ないんですよね。 ブラウザって絶対なくならないものだし、ゴリゴリと特化させた各人のスタイルがあっていいと思います。 公開すると誰かが「こういうの試してみよう」とか思う人がいるわけで。 emacs や vim な…

grep -P で perl の正規表現が使えるらしい

な、なんだ(ry ってことでタイトルの通り。知りませんでした。 ただ、grep の version が古いとやはり使えないようです。 現状で入っている grep の version が 2.5.1 だったため、新しく入れなおす必要があります。 既に homebrew の repository に入ってい…

its を使うと NoMethodError で激怒される

症状 NoMethodError in 'App::Client hoge' undefined method `its' for #<ActiveSupport::TestCase::Subclass_1::Subclass_2:0x1035bc058> 初めてエラー見たとき ( ゚д゚)!? ってなってしまったのでメモ。 解決法 it の中に its が入っているので、消す。 一旦気づくと当たり前なんですけどね。初心者あるあるってことで。 b</activesupport::testcase::subclass_1::subclass_2:0x1035bc058>…

はじめまして rspec

始めは rspec 本を読んだり、テストコードを読んだりしたんですが、全く自分で書けるようにはならなかったんですよね(当たり前ですが)。 なんとなく読めるようにはなったけれど。 そこで「テスト読める」から「テスト書ける」の思考ギャップを埋めるための t…

ruby で 多次元hash の初期化するときの話

each の中とかで、いきなり h["1"]["2"] = 2 とかやりたいときの話。 Hash.new して上記のようなことをやろうとすると、エラーになってしまう。 rakkyooの備忘録 では以下のような書き方があるよーと紹介されている。 # 2次元ハッシュの初期化 h = Hash.new …

firefox のアドレスバーにクエリを打ち込むと、yahooで検索してしまう

タイトルの通り。 わいは google さんが好きなんやぁ! ということで。 firefox のアドレスバーに「about:config」と打ち込む 検索ボックスにkeywordと入力 keyword.URL に値「http://www.google.co.jp/search?q=」を入力 これでOK。簡単快適。

validation? verification?

ふと気になったので。今まではvalidation = 検証 verification = 検証することという認識でした。 んである時ふと「あれ?これって同じ意味じゃん」とw両者の違いについて調べたら、素晴らしいサイトがあったのでご紹介。 http://lise.me.sophia.ac.jp/kktm…

Mountain Lion で ruby-1.8.7を動かす

前準備 公式サイトの通りにやって問題なかった rbenv をインストールする ruby-build をインストールする homebrew をインストールする やってみたこと 実は ruby-build では、rubyのversionの古いものが install できなかった。(1.9.3はrbenv-buildでインス…