Page 1 of 3
この記事はEmacs Advent Calendarの22日目です。
若干今更感のある話ですが、最近Magitを使い始めました。 ところで僕はevilを使っていて、evilとmagitを同時に使うとデフォルトだとかなり微妙な感じになるのでevilとmagitを一緒に使ってもいい感じになるようにいい感じにカスタマイズしたので紹介します。
emacs上で動作するgitクライアントです。普段gitを使ってするような操作は多分大体magitで実現できます。
これはClojure Advent Calendarの14日目です。
Transducders自体に関しての説明はRich本人の説明が素晴らしいし、僕も以前ブログで言及したので省略します。ついでにcore.async
も基本的な使い方は理解している前提で記事を書きます。
この記事はDocker Advent Calendar 2014の9日目です。
書こうと思ってたことが完全にネタかぶりしたので今日はどうでもいい小ネタを書きます。
dockerのイメージをDockerfileで作るにはベースイメージが必要ですよね。例えばgoを使ったWebアプリケーションを作ろうと思ったら公式のgolangイメージを使う人が多いだろうと思います。
公式の安心感もあるし基本的にそれでいいと僕も思うんですが、サイズが大きいんですよね。今手元でdocker pull golang...
最近がんばって作ってたものがありまして、とりあえず最低限動くようになったので解説と紹介記事です。
なんか流行ってるからタイトルになんとなくmicro servicesとか付けたけど別にmicro serviceを指向しているわけではありません。
dokkaaです。 docker使ってるからdokkaaなんですが、呼ぶとき紛らわしいのでdokkaaの方はど→かー↑↑なアクセントです。dockerはど↑っかー→ですね。
dokkaaは複数のレポジトリで開発しているのでまと...
どうもLisp教信者です。
HaskellにはTemplate Haskellありますし、Scalaにもマクロあるらしいですね。確かElixirにもマクロあるという情報を聞いた気がします。 マクロ、つまり抽象構文木にアクセスする機能を実装している言語ってのはたくさんあるんですが、Lisper的観点から見解を述べます。
プログラミング言語というのはソースコードのコンパイル過程で大体において抽象構文木と呼ばれるデータ構造を中間データとして出力します。 マクロはこの抽象構文木にアクセスして書...
最近dockerの事ばかり考えてます。 マルチホストでdockerを運用する際、真っ先にぶちあたる問題はコンテナ間の連携をどのようにして実現するか、あるいは広義にはService Discoveryをいかにして実現するか、ということだ。
いろいろ調べたり作ったりした結果わかったことをまとめておく。
まずシングルホストの場合についておさらいする。
dockerでコンテナ間のリンクを行う方法はたくさんある。シングルホストであれば一般的なのはLinking Containers
最近dockerの事ばかり考えてます。タイトルが言いたかっただけなので以下蛇足なのですが本文を書きます。
dokkuという、dockerによるOSSのherokuライクなPaaS実装があります。ここ数ヶ月くらい主に業務でdokkuを実際に使いまくってたんですが、すごい便利だなと思う反面トラップがそこかしこに仕掛けられてはまりまくってたのでここにまとめます。
githubの「Docker powered mini-Heroku in around 100 lines of...
この記事は「コードでも書こう」とエディタを起動したものの書くコードがない状態に陥った僕がやり場のない感情を消化するために書いたものであり、多くの人にとっては全くもって読む価値の無い記事である。そもそも僕個人の存在が社会にとっては全くもって価値のない存在であって、そのような存在から生み出される文章に価値がないことは自明である。
さて、本題です。 本題をまとめると「ネストの深さではなく複雑度でコードの良し悪しを判断すべき」という内容。 言いたいことはこれで終わりなので、以降の価値の無い文章を...
続き。
もう少しtransducersの中身を見ていきます。
まず、前に取り上げたmap
ですが、実際のコードはこうなってます。
(transducerの部分のみ抜粋)
([f]
(fn [f1]
(fn
([] (f1))
([result] (f1 result))
([result input]
(f1 result (f input)))
([result input &
Rich Hickey様から以下のような発信がなされました。 Clojure1.7にtransducersというものが追加されるよ、という話です。
Transducers are Coming — Cognitect Blog
どんなものかというと、従来のcore
のシーケンスを扱う関数群に新しい機能が追加されていてたとえば
(map inc)
これがmapping transducerというtransducerを返します。 このtransducerを使って
(def xform (
という話をする。
個人的見解としては、言語、あるいは使用するフレームワーク等によって最適なエディタ・IDEは異なるという持論。したがっていかにvimが好きでもJavaやScalaを書く場合はいんてりじぇーのようなIDEを用いた方がよい。
実際javaをvimでとか無理ゲーでしょ。
ただ、一般的なプログラマは自分の好きなエディタを自分好みに変態カリカリチュー...
実用的な言語の話をします。
DockerにはRemote APIという機能があって、Dockerの機能をREST形式のAPIで使えるものです。
OSSでdockerのホスティングサービスつくろうと思ったんですが、clojureのremote APIのライブラリの良さそうなやつがなかったんですね。 なので、Clojure用のDocker Remote APIクライアントライブラリを作ってとりあえず公開しました。
実はclojureにはRemote APIのライブラリが他...
他の人がどうかは知らないんだけど、僕はコード書く前に考える時間を長くとることが多い。目を瞑ったり、天井眺めたり、あるいは散歩しながら2時間、3時間延々と考え続ける。どんなアーキテクチャにしようかとか、どの言語で書こうかとか、モジュール名どうしようかとか、いろいろ。
そうしてるとそのうちちょっとずつコーディングするもののイメージが明確になってきて、とりあえずコードを書いてみる。実際に書いてみると、ここはこういう風にしたら上手くいかないなとか、変更に弱そうだな、とか、書く前に考えてただけじゃ...
使いづらいは言い過ぎですが、comp
で部分適用した関数を合成したいとき、
(def f (comp
(partial + 2)
(partial * 2)))
(f 2)
;=> 6
とかやらないといけないですよね。comp
でpartial
した関数を合成したいケースって結構あると思うんですが、毎回partial
書くのだるい。とくにhaskellとか書いた後によく感じます。
ので、こういうcomp>
内に含まれるやつは部分適用扱いにするマクロ書いて普段...
プログラマーは集中の邪魔をされるのが嫌いだ。
定説ともいえる話を今更僕が繰り返しても仕方がないのだけれど、プログラムを書くには深い深い集中が長く持続する必要があって、一度それが途切れると同じ集中状態に戻るのに数時間を要する。 だからプログラムと向き合ってる時に話しかけられたり、あるいはチャットの新着が絶え間なく通知されるような状態では高い生産性を発揮することなどでない。当然話しながらプログラミング、チャットしながらプログラミングなんてできない。
これは別にプログラマに限った話ではなくて...
1日に何度もデプロイするようなwebサービスとかをターゲットに考えてます。
基本的にルールが嫌いなのでgit(CIも含め)のワークフローは極力シンプルで問題を起こしづらいものにした方がいいな、といろいろ考えてたら次のようなフローに落ち着きました。
大筋、GitHub Flowが個人的な最適解です。シンプルで万人が理解しやすく、問題も起きづらいモデルだと思います。
大前提です...
octopressは色々不満があって
別のstatic site generatorに移行したいなぁとこの数ヶ月思ってたんです。まあそもそもほとんどブログなんて書かないんですが
最近暇な時間が多かったのでmiddlemanを試してみました。
しばらく運用してダメそうならまた移行します。
基本的なフローは
source/blog
配下に記事をmarkdown...パスワード問合せシステムを作る (clojureのreducers)
こんな記事が話題になって、その後、徳丸先生がこんな記事を書きました。
数字6桁パスワードのハッシュ値の総当たり、PHPなら約0.25秒で終わるよ
さすがに遅いだろうと僕も思ったので高速化しました。
まず、もとのclojureのコードを再掲。
(ns six-length.core
(:require [clojure.core.reducers :as r])
(:import [java.security