Skip to content

Instantly share code, notes, and snippets.

@ponkore
ponkore / fizzbuzz-multimethod.clj
Created December 7, 2012 14:12
fizzbuzz in Clojure (multimethod版)
;; ディスパッチ関数
(defn fizzbuzz-dispatch-fn [n] [(zero? (mod n 3)) (zero? (mod n 5))])
;; マルチメソッドの定義(マッチングめちゃ強力!)
(defmulti fizzbuzz fizzbuzz-dispatch-fn)
(defmethod fizzbuzz [true false] [n] "fizz")
(defmethod fizzbuzz [false true] [n] "buzz")
(defmethod fizzbuzz [true true] [n] "fizzbuzz")
(defmethod fizzbuzz :default [n] n)
@ponkore
ponkore / problem-1-1.clj
Created December 7, 2012 13:29
Project Euler Problem 1
;;; Project Euler Problem 1
;;; http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%201
;;;
;;; 10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、 これらの合計は 23 になる。
;;; 同じようにして、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。
;;; 3 もしくは 5の倍数の場合 true、そうでない場合 false を返す filter 判定用関数
(defn fizz-or-buzz?
"3か5で割り切れるならtrue、そうでないならfalseを返す。"
[n]
@ponkore
ponkore / factorial.clj
Created December 7, 2012 13:24
階乗の計算 in Clojure
;;; 普通の再帰版
(defn fact-1 [n]
(if (= n 0) 1
(*' n (fact-1 (dec n)))))
;;; 末尾再帰版
(defn fact-2
([n] (fact-2 n 1))
([n acc]
(if (= n 0) acc
@ponkore
ponkore / lispguide-convert.clj
Created December 7, 2012 03:39
Google Common Lisp Style Guide の XML ファイルを HTML ファイルに XSLT を使って変換する。
;;;
;;; see http://mail2.nara-edu.ac.jp/~asait/java/xml/xml.htm#section4
;;;
(ns lispguide-convert
(:import
[javax.xml.transform TransformerFactory]
[javax.xml.transform.stream StreamSource StreamResult]))
(defn doit
([] (doit "lispguide.html" "lispguide.xml" "styleguide.xsl"))
@ponkore
ponkore / clojure-poi-memo.md
Created December 5, 2012 15:14
Clojure から POI ってみる

Clojure から POI ってみる

この記事は、変態アドベントカレンダー 6日目の記事です。前日は はがねのつるぎさん でした。

このアドベントカレンダーは、意識もスキルも高い変態勇者がハイテクを駆使してかくもの、と思ってらっしゃる方にはちょっと申し訳ありません。若干変態度もハイテク度も低めで肩透かしを食らうことになりますが、しばしお付き合いください。

今日のネタは、私自身の日々の切実な課題である、Excel文書と戦うための準備、といったところです。

Excel ドキュメントにに対する不満

@ponkore
ponkore / clojure-reader-macro.md
Created December 3, 2012 15:32
Clojure のリーダーマクロについて (lisp reader macro advent calendar 2012 の記事です)。

Clojure のリーダーマクロについて

この記事は、lispリーダーマクロアドベントカレンダー の4日目の記事です。 タイトルにある通り、Clojure でのリー ダーマクロについて取り扱います(対象とする Clojure のバージョンは 1.4)。

はじめに

@ponkore
ponkore / example06.map
Created November 20, 2012 12:37
mapserver の mapscript サンプル。近畿、中国地方ら辺で緯度経度を指定。OpenLayers からの呼び出し方がわからない。
# shp2img -m /Library/WebServer/CGI-Executables/mapserver/example06.map -o ~/out.png -s 1920 1080
MAP
DEBUG 5
CONFIG "MS_ERRORFILE" "tmp/ms_error.txt"
EXTENT 129.7 32.9 138.0 38
WEB
METADATA
"wms_title" "WMS Server"
@ponkore
ponkore / memo.txt
Created November 8, 2012 13:02
MacPorts の python27 が upgrade できずにやったこと。
$ sudo port clean python27
$ sudo port upgrade python27 -universal
## 一瞬これでいけたかと思ったけどやっぱりだめだったorz
## 後日
## python27 が 2.7.3_0 から 2.7.3_1 になってやってみたが、別のエラーでこける。
## 調べてみたらまさにこれ: https://trac.macports.org/ticket/32090
## で、やってみたら
$ sudo port -f deactivate py27-xml
@ponkore
ponkore / (出力結果データ_富山県)N03-120401_16_GML.sql
Created November 6, 2012 13:01
国土数値情報(行政区域(面))の shape データから、postgis に入れる SQL を生成する
SET CLIENT_ENCODING TO UTF8;
SET STANDARD_CONFORMING_STRINGS TO ON;
BEGIN;
COPY "admarea" ("n03_001","n03_002","n03_003","n03_004","n03_007",geom) FROM stdin;
富山県 \N 下新川郡 朝日町 16343 0106000020041200000100000....
: (中略)
\.
COMMIT;
@ponkore
ponkore / memo.txt
Created November 6, 2012 12:03
postgis-2.0.1 on MacOSX (MacPorts) メモ (こっちは楽勝...でもなかった)
# install
$ sudo port install postgis2
$ port info postgis2
postgis2 @2.0.1 (databases, gis)
Variants: comments, gui, postgresql90, postgresql91, [+]postgresql92, [+]raster, [+]topology, universal
Description: PostGIS 2 adds geometrical, geographical and topological types, and functions operating thereon, to the PostGreSQL database. The 2.0 release also provides raster handling
and basic 3D geometry capacities (TIN and polyhedra).
Homepage: http://postgis.refractions.net/