K2NR.ME

このエントリーをはてなブックマークに追加 Tweet

Page 1 of 3

Dec 22, 2014

magitを使い始めて、evilといい感じに組み合わせた話

この記事はEmacs Advent Calendarの22日目です。

若干今更感のある話ですが、最近Magitを使い始めました。 ところで僕はevilを使っていて、evilとmagitを同時に使うとデフォルトだとかなり微妙な感じになるのでevilとmagitを一緒に使ってもいい感じになるようにいい感じにカスタマイズしたので紹介します。

一応、Magitとは

emacs上で動作するgitクライアントです。普段gitを使ってするような操作は多分大体magitで実現できます。

magit...

Dec 14, 2014

transducersとcore.async

これはClojure Advent Calendarの14日目です。

Transducders自体に関しての説明はRich本人の説明が素晴らしいし、僕も以前ブログで言及したので省略します。ついでにcore.asyncも基本的な使い方は理解している前提で記事を書きます。

Dec 09, 2014

最小のdockerイメージを作る

この記事はDocker Advent Calendar 2014の9日目です。

書こうと思ってたことが完全にネタかぶりしたので今日はどうでもいい小ネタを書きます。

dockerのイメージをDockerfileで作るにはベースイメージが必要ですよね。例えばgoを使ったWebアプリケーションを作ろうと思ったら公式のgolangイメージを使う人が多いだろうと思います。 公式の安心感もあるし基本的にそれでいいと僕も思うんですが、サイズが大きいんですよね。今手元でdocker pull golang...

Sep 30, 2014

vimとかemacsとかのこだわり設定

を考えたり書いたり探してる時間でお前はもっと有益なコードを書けたはずだ

Sep 18, 2014

dockerによるmicro servicesのためのプラットフォームつくった

最近がんばって作ってたものがありまして、とりあえず最低限動くようになったので解説と紹介記事です。

なんか流行ってるからタイトルになんとなくmicro servicesとか付けたけど別にmicro serviceを指向しているわけではありません。

Dokkaa

dokkaaです。 docker使ってるからdokkaaなんですが、呼ぶとき紛らわしいのでdokkaaの方はど→かー↑↑なアクセントです。dockerはど↑っかー→ですね。

dokkaaは複数のレポジトリで開発しているのでまと...

Sep 01, 2014

マクロ機能が存在すればいいというわけではない

どうもLisp教信者です。

HaskellにはTemplate Haskellありますし、Scalaにもマクロあるらしいですね。確かElixirにもマクロあるという情報を聞いた気がします。 マクロ、つまり抽象構文木にアクセスする機能を実装している言語ってのはたくさんあるんですが、Lisper的観点から見解を述べます。

プログラミング言語というのはソースコードのコンパイル過程で大体において抽象構文木と呼ばれるデータ構造を中間データとして出力します。 マクロはこの抽象構文木にアクセスして書...

Aug 21, 2014

Dockerにおけるマルチホストでのコンテナ間リンク考察

最近dockerの事ばかり考えてます。 マルチホストでdockerを運用する際、真っ先にぶちあたる問題はコンテナ間の連携をどのようにして実現するか、あるいは広義にはService Discoveryをいかにして実現するか、ということだ。

いろいろ調べたり作ったりした結果わかったことをまとめておく。

シングルホストの場合

まずシングルホストの場合についておさらいする。

dockerでコンテナ間のリンクを行う方法はたくさんある。シングルホストであれば一般的なのはLinking Containers

Aug 20, 2014

dokkuのつらいところとつかいどころ

最近dockerの事ばかり考えてます。タイトルが言いたかっただけなので以下蛇足なのですが本文を書きます。

dokkuという、dockerによるOSSのherokuライクなPaaS実装があります。ここ数ヶ月くらい主に業務でdokkuを実際に使いまくってたんですが、すごい便利だなと思う反面トラップがそこかしこに仕掛けられてはまりまくってたのでここにまとめます。

dokkuとは

githubの「Docker powered mini-Heroku in around 100 lines of...

Aug 16, 2014

ネストの深さとコードの複雑度

この記事は「コードでも書こう」とエディタを起動したものの書くコードがない状態に陥った僕がやり場のない感情を消化するために書いたものであり、多くの人にとっては全くもって読む価値の無い記事である。そもそも僕個人の存在が社会にとっては全くもって価値のない存在であって、そのような存在から生み出される文章に価値がないことは自明である。

さて、本題です。 本題をまとめると「ネストの深さではなく複雑度でコードの良し悪しを判断すべき」という内容。 言いたいことはこれで終わりなので、以降の価値の無い文章を...

Aug 11, 2014

clojure1.7のtransducersの中身を見てみる

続き

もう少しtransducersの中身を見ていきます。

まず、前に取り上げたmapですが、実際のコードはこうなってます。 (transducerの部分のみ抜粋)

  ([f]
    (fn [f1]
      (fn
        ([] (f1))
        ([result] (f1 result))
        ([result input]
           (f1 result (f input)))
        ([result input &
Aug 10, 2014

Clojure1.7のtransducersとはなにか

Rich Hickey様から以下のような発信がなされました。 Clojure1.7にtransducersというものが追加されるよ、という話です。

Transducers are Coming — Cognitect Blog

どんなものかというと、従来のcoreのシーケンスを扱う関数群に新しい機能が追加されていてたとえば

(map inc)

これがmapping transducerというtransducerを返します。 このtransducerを使って

(def xform (
Jul 25, 2014

vimを使うかIDEを使うか

という話をする。

個人的見解としては、言語、あるいは使用するフレームワーク等によって最適なエディタ・IDEは異なるという持論。したがっていかにvimが好きでもJavaやScalaを書く場合はいんてりじぇーのようなIDEを用いた方がよい。

実際javaをvimでとか無理ゲーでしょ。

ただ、一般的なプログラマは自分の好きなエディタを自分好みに変態カリカリチュー...

May 23, 2014

Clojure用のDocker Remote APIライブラリをリリースした

実用的な言語の話をします。

DockerにはRemote APIという機能があって、Dockerの機能をREST形式のAPIで使えるものです。

OSSでdockerのホスティングサービスつくろうと思ったんですが、clojureのremote APIのライブラリの良さそうなやつがなかったんですね。 なので、Clojure用のDocker Remote APIクライアントライブラリを作ってとりあえず公開しました。

ソースコード

実はclojureにはRemote APIのライブラリが他...

Apr 28, 2014

考える時間とコード書く時間

他の人がどうかは知らないんだけど、僕はコード書く前に考える時間を長くとることが多い。目を瞑ったり、天井眺めたり、あるいは散歩しながら2時間、3時間延々と考え続ける。どんなアーキテクチャにしようかとか、どの言語で書こうかとか、モジュール名どうしようかとか、いろいろ。

そうしてるとそのうちちょっとずつコーディングするもののイメージが明確になってきて、とりあえずコードを書いてみる。実際に書いてみると、ここはこういう風にしたら上手くいかないなとか、変更に弱そうだな、とか、書く前に考えてただけじゃ...

Mar 18, 2014

Clojureのcompが使いづらい

使いづらいは言い過ぎですが、compで部分適用した関数を合成したいとき、

(def f (comp
         (partial + 2)
         (partial * 2)))
(f 2)
;=> 6

とかやらないといけないですよね。comppartialした関数を合成したいケースって結構あると思うんですが、毎回partial書くのだるい。とくにhaskellとか書いた後によく感じます。

ので、こういうcomp>内に含まれるやつは部分適用扱いにするマクロ書いて普段...

Mar 15, 2014

集中力とノイズ、あるいはコミュ障の叫び

プログラマーは集中の邪魔をされるのが嫌いだ。

定説ともいえる話を今更僕が繰り返しても仕方がないのだけれど、プログラムを書くには深い深い集中が長く持続する必要があって、一度それが途切れると同じ集中状態に戻るのに数時間を要する。 だからプログラムと向き合ってる時に話しかけられたり、あるいはチャットの新着が絶え間なく通知されるような状態では高い生産性を発揮することなどでない。当然話しながらプログラミング、チャットしながらプログラミングなんてできない。

これは別にプログラマに限った話ではなくて...

Feb 16, 2014

git運用フロー10個のルール

1日に何度もデプロイするようなwebサービスとかをターゲットに考えてます。

基本的にルールが嫌いなのでgit(CIも含め)のワークフローは極力シンプルで問題を起こしづらいものにした方がいいな、といろいろ考えてたら次のようなフローに落ち着きました。

GitHub Flowに従う

大筋、GitHub Flowが個人的な最適解です。シンプルで万人が理解しやすく、問題も起きづらいモデルだと思います。

pushごとにCI(jenkinsとかtravisとか)でテストが実行される

大前提です...

Feb 16, 2014

octopressからmiddlemanにblogシステム移行した

octopressは色々不満があって

別のstatic site generatorに移行したいなぁとこの数ヶ月思ってたんです。まあそもそもほとんどブログなんて書かないんですが

最近暇な時間が多かったのでmiddlemanを試してみました。

しばらく運用してダメそうならまた移行します。

基本的なフローは

  1. source/blog配下に記事をmarkdown...
Feb 11, 2014

Clojureのパスワード問い合わせシステムを高速化する

パスワード問合せシステムを作る (clojureのreducers)

こんな記事が話題になって、その後、徳丸先生がこんな記事を書きました。

数字6桁パスワードのハッシュ値の総当たり、PHPなら約0.25秒で終わるよ

さすがに遅いだろうと僕も思ったので高速化しました。

まず、もとのclojureのコードを再掲。

(ns six-length.core
  (:require [clojure.core.reducers :as r])
  (:import [java.security
Sep 08, 2013

退職ブログに思うこと

辞めた話に興味ない。新しい会社に入社したことにフォーカスを当てろ

Next page