(define -ayalog '())

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

何故 do ステートメントがグルーピングするのに必要なの?

Clojure - why is the "do" statement necessary for grouping?まぁそうなるよね、という例。 (defn x [] (if true (do (println "a") (println "b")))) => (x) a b nil do を使えば正常に動くけど、 do を抜かすと… (defn x [] (if true ((println "a") (pr…

(gensym) はユニークになるのに、 `(symb#) はユニークにならないのは何故?

(gensym) is always unique, `(symb#) is not -- why?初見だと僕も見事に引っかかった。 (defmacro indirection [name & body] `(do (def name# ~@body) (defn ~name [] name#))) このマクロは一度しか展開されないので、実行する度にいちいち展開されて nam…

Clojure での素因数分解プログラム

Javaでの素因数分解プログラム - 徒然なる情報系日記これ読んでたら Clojure で実装したくなったのでやってみた*1。最終的なコードはこれ。 (ns prime-factorization.core (:gen-class)) (def prime-numbers ((fn f [x] (cons x (lazy-seq (f (first (drop-w…

Web Development with Clojure を読んだ

読みました。結論から言うと、今現時点 (2015/4/12) でもまぁ役に立つ Clojure で Web 開発をするための入門書だと思います。 本の概要 目次 1. Getting Your Feet Wet 2. Clojure Web Stack 3. Liberator Services 4. Database Access 5. Picture Gallery 6…

Cider-debug という視覚的、対話的な Clojure のためのデバッガについて。

デバッグについてです。例えば Ruby 界隈だと pry で、 Java な人たちは高性能 IDE に標準装備されているデバッガあるいはプラグインなどを利用していることでしょう。Clojure も最近はデバッガが cider に標準装備されているようです。ちょっとまだこなれて…

M-x butterfly

Amazing physics going on...xkcd: Real Programmersわろたw

Leiningen の依存性に git のリポジトリを指定する

lein-git-deps というのがあるのでこれを使う。tobyhede/lein-git-depsgithub.comprofiles.clj に以下のように追記して {:user {:plugins [[lein-git-deps "0.0.2-SNAPSHOT"]]}} project.clj に :git-dependencies [["https://github.com/tobyhede/monger.gi…

noir-middleware/app-handler を使って Invalid anti-forgery token でハマるとき

Web Development with Clojure の第 5 章くらいでハマる。このエラーの文言で CSRF だなってことは簡単にわかるんだけど、解決するのに少し悩んだ。 古いバージョン( 0.8.2 当時)の lib-noir だと ring を直接使っていたので、 ring/ring-anti-forgery が依…

Pidgin, IRC, Freenode

Pidgin, IRC, Freenode | Adam MonsenClojure のチャンネルを見たかったので、 Freenode のアカウント取って入った。

Clojure で org.clojure/java.jdbc を使うときにぷちハマりした

Web Development with Clojure を読みながら。 だいたいこの本で使われているライブラリのバージョン古いので最新のものを使って書きながら読み進めているのだけど、見事にハマったよね。こんなエラーが出る。 1. Caused by java.lang.RuntimeException No s…

もらったもの

これで「なんかください」って書いてたらおふたりから頂いてしまった。ありがとうございますm(__)m@finalfusionさんからClojure Cookbook: Recipes for Functional Programming作者: Luke Vanderhart,Ryan Neufeld出版社/メーカー: Oreilly & Associates Inc…

JavaScript の Promise を返す関数を直列で実行したいので Pinscher というライブラリを作ってみた。

ayato0211/pinschergithub.comREADME すらまだ書いてないけど、とりあえず使えるものができたので npm にだけ登録してみた。 追記 promiseを順番に実行する - 素人がプログラミングを勉強していたブログjavascripter.hatenablog.com 3 秒で不要になった。 Pr…

The Clojure Style Guide を読んだ

bbatsov/clojure-style-guide bbatsov/clojure-style-guide · GitHubtotakke/clojure-style-guide totakke/clojure-style-guide · GitHubこういうスタイルガイドは言語の勉強するときに役に立つので大変ありがたい。 その言語の抱えている問題/特徴なんかが…

Clojure で kuromoji 使ってみた。

さてはて、 Clojure の勉強がてら何かしら面白いものないかなーと思い、形態素解析ライブラリでも使うかーということで使ってみた。適当に project 作って依存性解決して (defproject kuromoji-test "0.1.0-SNAPSHOT" :description "FIXME: write descriptio…

はじめての Clojure を読んだ

とりあえず、読んだけど…ってところです。 良かったとこ 怖くない 薄い 軽い とりあえず Web アプリ作れる 良くないとこ 浅い 説明不足感ある 誤字脱字が気になる 感想 正直、好みの問題で話すと好きじゃないです。分配束縛の話のとことか、それで理解出来る…

Mutation Testing with Ruby

最近ちょっと興味をもったテスト手法(技法?)があって、ちょこっとだけ調べたので書いてみます。 まえがき テストを書いていて何を指標にテスト書いたらいいか分からない、ということがありませんか? うん?コードカバレッジ 100% を目指してテストを書く?ええ…

ゆるふわ Rails の会という勉強会にいって、コワーキングスペース HaLake で遊んできた

ゆるふわRailsの会 #0 レイクタウンでRailsやろうよ - ゆるふわRailsの会 | Doorkeeperというわけで遠路はるばる埼玉まで行ってきました。 HaLake はニャンパス株式会社の運営しているコワーキングスペースです。ニャンパスと言えばのんのんびより、もとい C…

Effective Ruby 読んだ

最高に面白かった。軽く紹介したいと思う。結論から書くと掛け値なしに良い本でした。 Rails 書く人は Railser と揶揄されがちですが、 Rails を普段書いてるけど Ruby はよく分からんという人にもオススメです(無粋なツッコミする人がいるので少し補足する…

パーフェクト JavaScript 読んだ

良い本だった。この本についてのレビューは色んな所にあると思うし、僕があまり何かを書く必要はないかなって気はする。 だけど、まぁちょろっと感想とか最近の JavaScript 周りについての所感というか、僕が感じているところについて合わせて書いてみる。目…

Rails の I18n で HTML を安全に突っ込む方法。

Rails Internationalization (I18n) API — Ruby on Rails Guides"4.5 Using Safe HTML Translations" ってわざわざ枠取って書いてあるのに、今まで Rails ガイドとか読んでなかったので知らなかった。もしかしたらパーフェクト Rails とかに書いてあるのかも…

らき☆すた in Rails プロジェクト

Rails プロジェクトの中にらき☆すたのキャラクタ名を見つけてひとりで笑ったりしたなど。 # characters = ["Konata", "Kagami", "Tsukasa"] # "Konata".in?(characters) # => truerails/inclusion.rb at master · rails/rails · GitHub結構、そういうのある…

espower を読もうとしている

つらい。ひょんなことから JavaScript AST を操作出来たらちょっと個人的に作りたいものが簡単に出来るじゃん!って発想に至ったんだけど、そもそも AST をどうやって操作するのっていうところでそういえば power-assert は AST を元に変換しているんだよな…

Active Admin を管理用アプリケーションを作る以外の用途で使う場合に気を使うこと

Active Admin 久しぶりに触ったけど、あれ普通のアプリケーションを作って、それに対して管理画面も当てたいっていうときは assets にデフォルトで Active Admin の JS と CSS を突っ込んでくるから気を付けないといけなかったなーと。Excluding active_admi…

コラッツの問題その3

まだやってたのかって感じだけど、たぶんこれが最速。まず、こういうものを定義します。 macro collatz_calc { case { _ ($from:lit, $to:lit) } => { var from = unwrapSyntax(#{$from}), to = unwrapSyntax(#{$to}), max = 0, val, result; function colla…

コラッツの問題その2

いや、遊んでたら普通に昨日の記録超えた…。 console.time('xxx'); var max = 0, val, result; function collatz2(n){ var m = n, count = 0; while(m !== 1){ count++; m = (m & 1) ? (m<<1)+m+1 : m >> 1; } return count; } for(var i=2; i<=100001; i++)…

コラッツの問題

11月16日いろふうらがみ迎撃会 - connpass なんとなく久しぶりに id:irof せんせーに会いたくなったので、重たい腰をあげて行ってきた。なんか Twitter 見てない間に irof せんせーが本を書いてたらしい。 というか、参加登録した後に、イベント主旨が若干変…

Browserify に対して誤解をしていた…

これ、良く読んでなかった僕が悪いんだけど、 Node.js*1 のようにブラウザでも require を使えるようにしようっていうライブラリで、だからそういうとき以外は必要ないんですね……。 Node.js の中にいる間*2は基本的に使う必要がないし、ましてライブラリを書…

Watchify と gulp.watch の相性が悪い?

次のような gulpfile.js 書くと watchify は動くけど、 gulp.watch の方は動かない。 数日悩んだけど、諦めて brawserify のタスクを動かす方で諦めている。 watchify で監視対象にしたファイルは watch 出来ないぽい?よく分からない。 function scripts(wa…

はてなブログのAndroidアプリ出たぽい

たまに欲しいなーって思ってたのでちょうど良かった。少しだけ書くときに電車の中とかでパソコン開けないときはスマホで書くからアプリになってよかったと思う。はてなブログのAndroidアプリが出たッ! って書くとなんか当たるらしい。

sweet.js を少し使ってみた。

この 1 週間、寝不足になりながらも毎夜毎夜遅くまで sweet.js というものを触っていた。 sweet.js このライブラリ端的に言えば、 DSL でマクロを書いてコンパイルすることで JavaScript に変換出来るという優れもの*1。マクロは Scheme の syntax-rules と …

Cycle Generator

なるものを書いてみた。 Lazy.js を使って。 var _ = require('lazy.js'); var logger = function(x){console.log(x);}; var cycleGenerator = function(args){ var _args = args || [1,2,3,4,5], _size = _args.length; return _.generate(function(i){ ret…

Lazy.js を紹介してみる

以前、 underscore.js というものを紹介したことがあったのだけど、今回は Lazy.js という underscore.js like なライブラリを紹介したいと思う。ホームページはこちらから。 Lazy.js - v0.3.2インストールはコマンドプロンプトで npm install lazy.js --sav…

最近のナウい感じの Web 開発用テンプレート作ってみた。

ayato0211/my-gulp-template ayato0211/my-gulp-template · GitHubとりあえず、まだ改良の余地が沢山あるし、肝心のテストとか CSS 周りはまだ手がついてないけど、とりあえず gulp と browserify(watchify) 周りをちゃんと使えるように整えた。あと jade の…

コールバック地獄とプロミス、どちらがお好きですか?

朝から gulp で書いたタスクを grunt で書き直しさせられたのが僕です。 ところで、 JavaScript でよくある callback hell な処理を僕もつい先日書いてて辟易していたんですが、今日になって隣の台湾美女に「こんなの誰も理解できないよ」と英語で指摘されま…

AngularJS でマトリクス状のタイルを消したり足したり

HTML の構造と作り方で悩む今日このごろ。発端は仕事で最近流行り(?)マトリクス状*1のタイルを並べるという要件があって、それを動的に追加したり削除したりできないといけなかったんだけど、「マトリクス状」に要素を並べる方法はインターネット初期から色…

AngularJS を Rails プロジェクトで使う場合は precompile で uglify しよう

Beryllium Work: Tips on Rails 4: Assets Compression with Angular.js なんかよく分からないけど、 uglify しないと動かないらしいので、 uglify しようっていうだけ。

$ (ドルマーク) の意味は

JavaScript 読んだり書いたりしてて最近悩むことがあって、 JavaScript では関数/変数名としてアンダースコア、ドルマークの使用が許されているのは知ってるし分かるんだけど、そのライブラリの作者がどういう意図をもって $ を使ってるのか検討もつかないと…

JavaScript の Destructuring

Destructuring assignment - JavaScript | MDNまだドラフトだし、 Firefox しか対応してないけど将来的にちゃんと実装されそうでちょっと期待している。

As Long As You Love Me

Backstreet Boys-As Long As You Love Me 歌詞、日本語訳つき - YouTubeいい歌。

git の branch を一括で削除する

メモ書き程度に。 git branch | peco | xargs git branch -d (or -D)運用上、どうしても future/bugfix branch がたくさんローカルに出来て残るんだけど、ひとつひとつ消すのめんどくさかったので適当にやった。 いい感じ。

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

なんとなくそんな話を新卒の友達と話していたから、ちょこっと書いてみる。 まだ僕が若かった頃の話 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 で書かれたコードがある…