Skip to content

Instantly share code, notes, and snippets.

@mnzk
mnzk / Nengajou.ps1
Last active July 2, 2020 09:15
PowerShell (V3) と iTextSharpで年賀状宛名印刷用PDFを作成
Set-Alias new New-Object
Set-Alias aps New-ApplyContext
Set-Alias use New-DisposeOnLeaveContext
# iTextSharp アセンブリロード
[System.Reflection.Assembly]::LoadFile | aps {
ls S:\libs\itextsharp-all-5.4.4\*.dll
} > $null
function first ([ScriptBlock]$Body) {
function Join-Namespace {
($args | %{$_})-join "."
}
function Invoke-Apply {
$func, $arg = $args
Invoke-Expression "$func $arg"
}
Set-Alias ns Join-Namespace
(require 'cl)
(macrolet ((hook (&body exprs)
`(add-hook 'groovy-mode-hook
'(lambda () ,@exprs))))
(hook (require 'groovy-electric)
(groovy-electric-mode)
(linum-mode 1)
(paredit-mode 1)
(guru-mode 1)))
@mnzk
mnzk / example-seesaw-jfx.clj
Created June 4, 2013 17:37
seesaw と JavaFX2 の連携サンプル.
(ns example-seesaw-jfx.core
(:gen-class)
(:require [seesaw.core :as sw])
(:import [javafx.scene Group Scene]
[javafx.scene.text Font Text]
[javafx.scene.shape Circle Rectangle]
javafx.scene.paint.Color
javafx.application.Platform
javafx.embed.swing.JFXPanel))
@mnzk
mnzk / multi-nothing-maybe-m.clj
Last active December 17, 2015 17:49
clojure.algo.monads/maybe-t sample
(use 'clojure.algo.monads)
(def maybes-t (partial reduce maybe-t))
(with-monad (maybes-t maybe-m [0 :err1 :err2 :err3])
(defn div [x y z]
(domonad [a x b y c z] (/ a b c))))
(div 10 0 20) ;=> 0
(div nil 0 20) ;=> nil
@mnzk
mnzk / collection-monad.clj
Last active December 17, 2015 11:39
エメラルドなコレクションモナド
;;変更箇所のみ
(extend-type clojure.lang.IPersistentCollection
Functor
(fmap [m f] (map f m))
Monad
(bind [m f] (mapcat f m))
MonadPlus
(mfilter [m p] (filter p m))
;; 追加
@mnzk
mnzk / chunked-string-seq.clj
Created April 25, 2013 14:16
固定文字数の文字列チャンクシーケンス作成関数(Clojure 1.5)
(defn chunked-string-seq
([^java.io.Reader rdr]
(chunked-string-seq rdr :chunk-size 16))
([^java.io.Reader rdr &{chunk-size :chunk-size}]
{:pre [(some-> chunk-size pos?)]}
(let [buf (char-array chunk-size)]
(letfn [(f []
(when (pos? (.read rdr buf))
(cons (String. buf) (lazy-seq (f)))))]
(f)))))
@mnzk
mnzk / data.csv
Created April 21, 2013 04:59
for csv parser test
We can make this file beautiful and searchable if this error is corrected: It looks like row 3 should actually have 2 columns, instead of 1 in line 2.
aa,bb
cc,"dd,ee""F"""
"gg
hh"
@mnzk
mnzk / example.instaparse.clj
Last active December 16, 2015 11:39
instaparse example (CSV parser)
(ns example.instaparse
(:require [instaparse.core :refer [parser transform]]
[hiccup.core :refer [html]]))
(def csv-bnf "https://gist.github.com/mnzk/5426024/raw/11de5851adc5b3dd704ec4079c22aa6ff8d131df/csv-bnf-rfc4180.txt")
(def csv-parser (parser csv-bnf))
(def data-file "/path/to/data.csv")
(def tree (csv-parser (slurp data-file)))
@mnzk
mnzk / csv-bnf-rfc4180.txt
Created April 20, 2013 13:44
CSV BNF (RFC4180) for instaparse
file = [header CRLF] record (CRLF record)* [CRLF]
header = name (COMMA name)*
record = field (COMMA field)*
name = field
field = (escaped | non-escaped)
escaped = DQUOTE (TEXTDATA | COMMA | CR | LF | 2DQUOTE)* DQUOTE
2DQUOTE = DQUOTE DQUOTE
non-escaped = TEXTDATA*
COMMA = '\u002C'
CR = '\u000D'