鳩舎

レースしない

channel lock

channel でブロックするようなコードが書ける。例えばスレッドの並列数を制限したいとか、そういう簡単な用途で使うのに取り回しがいい。 package main import ( "fmt" "time" ) func main() { go func() { for { fmt.Printf(".") time.Sleep(100 * time.Mil…

ノーモア・モアレ

ImageMagick で普通に画像をリサイズするとモアレがひどいことになる。 具体的には LANCZOS Filter でリサイズするとひどい。 なので Bicubic を使って、かつ線がボケないようにリサイズを行いたいときには、以下のようにする(golang w/ imagick)。 wand.Set…

golang JSON struct tag

go で JSON のパースする時は、こんな感じ package main import( "fmt" "encoding/json" ) var text = []byte(`{"Name":"sho"}`) func main() { type Config struct { Name string } config := &Config{} json.Unmarshal(text, &config) fmt.Printf("%+v\n",…

gofu is tofu clone implemented by golang

go 言語かけるようになるとメス鳩のウケが良いと聞いたので頑張って勉強しました。リリースは大安か友引の日を選ぶタイプの鳩、ロージーです。 gofu(護符) という、弊社の id:mirakui さんが作ったイケてる画像リサイズサーバー、 tofu の go 実装です(tofu …

golang s3

go 言語から S3 にアクセスする。 goamz つかえばあとは大体どうとでもなるみたい。 Mac に bzr が入ってなかったのでまず入れる。 $ brew install bzr $ echo "export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.zshrc つぎは …

Rails named scope デフォルト引数

Rails の named scope にデフォルト引数を与えると便利。 class Book < AR::Base scope :published, ->(at = Time.now) { where('published_at > ?', at) } end こうしてデフォルト引数を与えておくと Book.published # => 現在公開済みの本 Book.published …

>> Operator がわからない

my @scores = 'Ana' => 3 say 1 + [max] @scores>>.key>>.chars # => 4 なにこれどういうこと……? 追記 map だ。 my @values = 'Ana', 'David' @values>>.chars # => 3 5

RubyKaigi 1 日目

ルビー会議楽しいですね。 ということで RubyKaigi はおいておいて、メソッドキャッシュの話をしましょう。笹田さんの発表の最後で出てきたやつです。僕は一人で感動に打ち震えていましたが、 IRC に書いたのは『Charlis++』とか書いててですね、ちげーよ Ch…

目黒.rb meetup #1

http://megurorb.github.io/blog/2013/05/10/meetup-16-may-2013/ 形式としては お題のプロジェクト(https://github.com/megurorb/sit-up)を clone してくる リファクタリング祭り(1時間) PR にして投げて、みんなでレビュー(レビュイーは意図の説明をする) …

プログラミングの話

この辺見て、いつも思ってること。 プログラミングはアプリを作ることの手段なのか - 銀の人のメモ帳 プログラミングはそれ自体が目的であっていい - mizchi log プログラミングを勉強したい人が勉強する前にすべきこと - もとまか日記 プログラミングは手段…

適切な名前がつかないモデル

ちょっと目についたので。Dis りたい訳じゃないです。 これ適切な名前が見つからないとき困るんだよなぁ。あとで思いついて変更なんて作業はしたくないし。割り切ってRoomUser式に統一した方が気が楽だと思う。 http://b.hatena.ne.jp/kensatou/20130512#boo…

関連モデルの命名

今日は Rails での『関連モデル』の名前について考える。 構造としてはこんな感じ。 ・ルーム(Room)に所属するユーザー(User) ・ルーム(Room)での管理者権限を持つユーザー(User) どちらの関連も N:N の関連。いわゆる has_may な感じ。 で、こういう時の命…

Github に小さい gem をおいてバッジで全能感を得る

Chanko の Github ページでバッジが並んでるのかっこええなーと思ったので適当な gem を作って真似してみようと思ってコード書いた。動機が不純すぎるので rubygems に push はしてない。 Choshi という Rails 向け Decorator gem を書きました。いわゆる Ac…

Scala の Trait

scala> class M { def m() { println("hello"); } } defined class M scala> (new M).m() hello scala> trait N { def m() { println("hi"); } } defined trait N scala> (new M with N).m() <console>:10: error: anonymous class $anon inherits conflicting member</console>…

Perl 6 の does と ^add_role の違い

@kuzuha から素敵情報が届いたので。 @rosylilly gist.github.com/kuzuha/5477051— デブ (@kuzuha) April 28, 2013 @rosylilly add_role は破壊的ではない。remove_role はない。— デブ (@kuzuha) April 28, 2013 面白い。試す。 > class c {}; (c) > role r…

Perl 6 の Role

Perl 自体に造詣もないし、 Perl 6 などましてやというぐらいなのだけれど、とりあえず僕の興味のある分野が Perl 6 にあったので rakudo をコンパイルして試してみた。 Perl 6 には Class と Role があるものらしい。 すごい単純な Person ってクラスを実装…

今日のよさげリポジトリ

Github を巡回してて見つけたよさげなリポジトリを適当にまとめることにした log console.log を Markdown 的な記法でスタイリング出来るようにする js ライブラリ。なかなかどうして面白いことをしてる。 デモもあるのでみてみるとよいと思う。僕の Chrome …

rails 4 concern 便利

Rails 4 から入る app/models/concerens を使う。 class User < AR::Base include Cryptable end を app/models/user.rb に作って module Cryptable def password BCrypt::Password.new(read_attribute(:password)) end def password=(password) write_attri…

rosylilly.age++

加齢した。 今後も頑張ります。 amazon wishlist はこちら

alias_method_chain でやりたいこととジャンプの話

class User < AR::Base def favorite!(tweet) favorite_tweets << tweet end def favorite_with_duplication_check!(tweet) if favorites_tweets.exclude?(tweet) favorite_without_dupulication_check!(tweet) end end alias_method_chain :favorite, :dupl…

じゃばじゃででで

とりあえず User とかつけとくか。みたいな慣習、あんまよくねーなと思った。 EC サイトとかでカートみたいな概念はよくあると思うんだけど、そのカートに Cart ってつけたりしないで、 ShoppingCart とか、 Kaimonokago とかって名前つけたっていいじゃない…

メモ

息抜きに ruby をいじった感じ rb_clear_cache_by_class が rb_clear_cache と変わらない挙動ですべてのメソッドキャッシュ(というかキャッシュ全般)をクリアしてるのが extend や unextend を遅くする原因なので、これを解決しないといけないんだけど、とり…

extend / unextend を使った際の問題

DCI

uninclude を使って DCI をやるとして、現実的なのかという話になってくるのだけど、これがまた曲者だなぁと思っていたり。 コード的な可読性とかは一旦置いといて、速度はどうなのってことだけとりあえず考えた。 現状、 extend 及び unextend はそれを実行…

uninclude gem v1.0.0

DCI

uninclude という gem を公開しました。 初めての C 拡張 gem でドキドキしています。 uninclude はその名の通り、 Module#include をなかったことにするための gem です。Module#include は Module#uninclude で取り消し、Object#extend も Object#unextend…

Play Fast Award を受賞しました

3/1 に、会社で Play Fast Award というのを受賞しました。 弊社には Play Fast Episode というのがあって、どういうやつかっていうと、普通にスタッフがスタッフの仕事を観て『イイネ!』と思ったら褒めちぎるエピソードを投稿するという場所があります。 P…

Github から公開鍵を取ってくる gem を作った

先週の記事が思ったより反応よかったんだけど、自分のニーズにいま一歩足りてなかったから作った。 github-keys $ gem i github-keys $ github-keys rosylilly とかで取ってこれる。ユーザーの公開鍵はもちろんだけど、僕としては Organization の公開鍵を取…

アイコンで Web Font を使う利点のうちの一つ

アイコンに Web Fonts 使うの流行ってるっぽいですね。 ところでわざわざ Web Fonts に変換すんの面倒だしアイコン増やすのにも手間が増えるしアレだなーと僕は思ってたんですが、皆さんはどうですか。 最近ちょっと Retina ディスプレイのマシンを見せても…

Github があると VPS のセットアップが楽

Github っていう超ベンリスーパークールサービスがあるんですけど、このサービスを使うと VPS のセットアップがすごく楽。 皆いろんなマシンとか持ってて SSH 鍵もいくつも持ってると思うんだけど、このサービスを使えば VPS のセットアップの時にいちいちい…

deleted_at みたいな奴

DB から物理削除するとアレなので論理削除したいみたいな話があって、大抵そういうのは deleted_at が DATETIME で削除した日時がはいるみたいになっている。削除してないと NULL 。 これを関連テーブルとかにつけるとひどいことになる。 article_id, int, n…

DCI で Decorator pattern 使っちゃダメなんですか

DCI

この前 DCI meetup というイベントに参加して、英語が聞き取れず完全撃沈したのだが、その時にコープさんが ラッパーオブジェクトで包んではイカンよ! みたいなことを言ってた気がしたので、なんでだろなーと思って考えてた。 理屈としては、『ロールが与え…