(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

最近、仕事で目指しているもの/こと

なんとなくそんな話を新卒の友達と話していたから、ちょこっと書いてみる。 まだ僕が若かった頃の話 5年位前、僕がまだ若くて初めて入社した会社にいた頃は、「この会社で一番の技術者になる」みたいな目標/野心的な何かを持っていた。 まぁよくある話という…

命名規約の境界線

今開発に携わっているプロジェクトでは、 API が Java で書かれていて、僕らが作っている Rails アプリケーションから API を叩き JSON 形式で結果を受け取り、フロントに Angular.js なんかを使って表示している。 これ、やってて凄く気持ち悪い瞬間があっ…

Ruby の定数は奇妙だ

仕事で今まで奇跡的に動いていたコードが突然動かなくなるバグに遭遇して調べていたら、 Ruby の定数に関する仕様のせいだということが判明した。 class Hoge X = 'X' end という風に定義されている定数があるのを class Fuga puts X # 本来なら動かない end…

ネストしたハッシュのキーを String から Symbol へと変更する

class Hash def nested_symbolize_keys self.reduce({}) do |memo, (k, v)| v = v.nested_symbolize_keys if v.is_a?(Hash) memo[k.to_sym] = v memo end end end 例外とか考えてない愚直なコード。ちょっと今日こんなのほしいなって思ったから、思いつきで…

Slack で動く bot を作る(特定の文字列に反応するようにする)

Slack で動く bot を作る(とりあえず発言だけ) - (define -ayalog '()) ということで今回もサクッと。Slack で bot 作ってという無茶ぶりを某 naoiwata-san に言われたので、とりあえず API とか調べてたら思いの外簡単に出来そうだったのでやってみたという…

Slack で動く bot を作る(とりあえず発言だけ)

ということでさくっとやってみた。Slack というのは最近流行り(?)の HipChat like な Chat ツールで結構ほかのアプリケーション*1との連携がサクッと出来るのがいい感じぽい。 Slack では幾つかの API と WebHook を提供してくれているので、簡単に自動投稿…

コーディングを支える技術を読んだ

読了。っと。 目次こんなん 第1章 言語を深く効率的に学ぶには 1.1 比較から学ぶ 1.2 歴史から学ぶ 1.3 まとめ第2章 プログラミング言語を俯瞰する 2.1 プログラミング言語誕生の歴史 2.2 プログラミング言語の生まれた目的 2.3 まとめ第3章 文法の誕生 3.1 …

Padrino で Jbuilder を使う

なんか今ふたつ方法があるぽくて、以下に並べてみる。 anthonator/tilt-jbuilder · GitHub andrewjanssen/padrino-jbuilder · GitHub tilt-jbuilder といわれる gem と padrino-jbuilder というまんまな名前の gem 、このふたつが今 Sinatra/Padrino でアプ…

ピープルウェア読んだ

読了。目次はこんな感じで、全6部34章から成る本です。 第Ⅰ部 人材を活用する 第1章 今日もどこかでトラブルが 第2章 チーズバーガーの生産販売マニュアル 第3章 ウィーンがきみを待っている 第4章 品質第一:時間さえ許せば 第5章 パーキンソンの法則の改訂…

AngularJS はじめました

僕の人生の中で初めて仕事で必要だからという理由で仕事中に勉強することになっている。 egghead.io - Learn AngularJS with Tutorial Videos & Training @eggheadio なんとなくビデオみて若干の雰囲気とかはつかめた。既に Angular で書かれたコードがある…

Make10 してみた!

Make 10 してみよう! — a wandering wolf 「してみよう!」と言われたらするしかないと思ったのでちょっとやってみた。 ;; make10 (use srfi-1) (use gauche.collection) (use util.combinations) (define (atom? x) (and (not (pair? x)) (not (null? x)))…

ふたつのリストを混ぜる

リストを交互に分配 これ読みながら逆ってどうやんのって思ったのでちょっと書いた。 (define (twist-list li1 li2 :optional (result '())) (if (and (null? li1) (null? li2)) result (let ((li1-len (length li1)) (li2-len (length li2))) (if (> li1-le…

Rails で Helper Method を Controller で使いたい

って思ったんだけど、これが少し事情が複雑で単純に Helper を Controller に include するのはあまりよろしくないらしく出来れば AbstractController で定義されている helper を使う方が良いらしい。helper (AbstractController::Helpers::ClassMethods) -…

王様ゲーム読了

一昔前に一世を風靡したケータイ小説。何の気無しに読んでしまったので少しだけ感想を書いておく。ハッキリ行ってしまえばケータイ小説以上でもそれ以下でもないのだけれど、普通の小説が好きな人はそんなに好きにならないんじゃないかなって思った。展開が…

LET OVER LAMBDA を読んだ

通称「 LOL 」読み終わりました。完全に宗教の本でした。 もちろん、僕はまだ On Lisp を読んでいないし、まして Common Lisp を知らないので深く理解出来たわけではないのですが、 Common Lisp の実用性の高さとマクロの真髄を垣間見れた気がします*1。簡単…

auto-highlight-symbol.el を入れた

auto-highlight-symbol.elの感想 - Life is very shortauto-highlight-symbol.el を入れて使い始めてから、すぐに e2wm のキーバインドと競合していることに気付いてソース読んで速攻でキーバインドの定義をコメントアウトしたんだけど、やっぱり同じような…

Let Over Lambda 読み始めている

なんとなく読み始めた。結構、面白いと思う。 とりあえず、作者がポール・グレアムと Lisp*1を愛しているのがよくわかった。まだ 1/5 くらいしか読んでないけど、マクロについて少しわかった。健全なマクロというのがどういうことなのかとか、なんかそのあた…

Git の object がおかしくなったときの対処法

Git の object がおかしいというエラーが出た場合は object を表すファイルを消せば良さそう - ひだまりソケットは壊れない ちょうど同じようなエラーが出たので、試したんだけど解決せず。ぐぐったら案の定 stackoverflow にぶつかったので、一番上の answe…

第2回かわいい Kotlin 勉強会に参加してきた。 kotlin-mode 作ったよ。

第2回 かわいいKotlin勉強会 #jkug on Zusaar 参加してきた。 LT する側として参加する勉強会はたぶん東京では初めてでした。 LT に使った資料は SlideShare などにはあげません。面倒くさいのと別段あげるほど何かを書いているわけではないのでいいかと。話…

テスタブル JavaScript 読んだ

正直に感想書けば期待値以下で僕の中での「テスタブル」という言葉の意味と本の内容とのギャップが少しあったかな、というところ。 如何にしてテストしやすいコードを書くのか、どうやって保守していくのか、そういう感じの濃い内容を求めていた気がする。た…

プロパガンダを読んだ

今年の頭くらいから読み始めた気がするけど、なんだかんだであまり読む時間をまとまって取れなかったので時間がかかってしまった。僕は説得とか交渉とか仕事柄あまり意識する必要はなかったりする。勿論、ある程度は説得/交渉の必要なシーンがあるはあるのだ…

peco 使ったら今までやりたいと思っていた anything like なディレクトリ移動が出来たので嬉しい。

朝からこんな記事を見かけたのでちょっと読んだ。 Big Sky :: peco で migemo が使える様になった。 僕は普段、 Xubuntu しか使っていないし最近は日本語ファイルとかディレクトリとか作らないからあんまり嬉しくないんだけど、 peco というツールの存在を知…

Clojure の Var に関して覚書

なんか面倒くさい。 Clojure Programming 読んでていきなり Chapter1 とかでチラッと出てくるんだけど、一緒に Clojure 勉強しているスクラムマスターが混乱したくらいには面倒くさいというか。面倒くさい。事の発端はこれ昨日スクラムマスターが 「Clojure …

Why let expression? We can use fn expression, I think we don't need let expression.

タイトル、適当に英語で書いてみた。若干間違っている気がするけど、昨日 Clojure の話をしていて「なんで let が必要なのか分からない」と言われたのでそれについて。例えば Clojure 。 (let [x 10, y (square x), z (cube y)] (+ x y z)) let expression i…

Emacs Lisp で正規表現を書きながら

今、メジャーモードを作っていてシンタックスハイライトを入れるのにどうしても正規表現を使わないといけないんだけど、 Emacs Lisp の正規表現は\\が多すぎて何がなんだか分からなくなってくるし、実行しながら出来たらいいなーと考えていたら re-builder …

destructuring-bind ってステキですね

例えば Ruby ではこういうことが出来る。 a, b = [1, 2] a+b #=> 3 便利ですね。そして Clojure ではこういうことが出来る。 (def m {:a 1, :b 2, :c 3}) (let [{a :a, c :c} m] (+ a c)) ;=> 4 (def v [100, 200, 300]) (let [{a 0, b 2} v] (+ a b)) ;=> 4…

smartrep.el と git-gutter-fringe.el を入れたら色々と捗って嬉しい。

お昼ご飯時に平和主義者の RubyMine 使いと話していたら、 Sublime*1 には GitGutter なるプラグインがあることを教えてもらった。なんとなく名前を聞いたことあったけど、 git の diff なんて Terminal で見れるじゃんって思ってたので気にしてなかった。た…

get current branch name in Git

refer -> How to get current branch name in Git? - Stack OverflowI think this method is very good!! git branch | sed -n '/\* /s///p'

腐ってやがる…

はい、半年前に書いたコードをちょいちょい弄ってるんですが、テストコードが腐ってました。いやー、当時 FactoryGirl を触ろうとしていて使い方分からないし、色々分からないし諦めてたんですが、改めて fixture 使ってるコード読むとなんか辛い。あと、直…

結局 Clojure を勉強することになりました。

先週くらいに Elixir で一回確定したんだけど、やっぱり書籍とかが充実していないということで Clojure になりました。 今日からぽいんだけど、昨晩勉強会で使う書籍とか決まったし英語の本読んでこいとかいう鬼畜ぷりにより結構辛いw実を言うと「プログラ…