Clojure覚書 ネストしたベクターをネストしたリストにする

; (vec2list [* [+ 2 3 [+ 1 2]] 4]) -> '(* (+ 2 3 (+ 1 2)) 4) (defn vec2list [v] (let [l (apply list v)] (for [val l] (if (vector? val) (vec2list val) val))))

Clojure, LuminusのCSRF対策

最近は「Clojure Web Development」を読んでひととおりのLuminus周りの使い方を学習中。 ただ「Clojure Web Development」で使用しているフレームワークのバージョンではCSRF対策はデフォルトでオフにはなっているみたいで、その辺りの記述が抜けている。 (…

Clojureでやってみたことの覚書1 - デバッグ

・以下のようにして、REPL上でスタックトレースを表示。 (pst *e) Clojure/LeiningenのREPLで詳細なスタックトレースを見る - Qiita・tools.trace でトレース。 clojure/tools.trace · GitHub・以下のような形のデータがassocに渡ってくるところがあったので…

Clojure

仕事ではしばらくずっとPHPのままだろうけど、プライベートで色々と遊ぶ言語としてClojureがいいんじゃないかな、と考えています。 LISP言語はずいぶんと古い言語のはずだけど新鮮に感じます。 括弧の数にファーストインプレッションでやられて敬遠してたけ…

どの言語にするか思案中……

現在入門書をいくつか購入して目を通している。 OCaml、Ruby、Common Lisp、Clojure、と今更ながらのRubyも混じっているけど、買ったのでとりあえず全部に目は通しておきたい。時間かかりそうだけど。オンラインのドキュメントで大丈夫そうなのとしてPython…

PhpStorm 7

あまりに便利すぎて買ってしまった。 というかNetBeansがどうにも開発マシン(メモリをあまり積んでないため)では重すぎるし、Sublime Text 2ではデフォルトでは対応していない文字コードのソースを扱っている(しかもHTMLテンプレートやPHPソースで文字コ…

Goのスライス

Goのスライスの利用イメージは、以下のようにして覚えている。 package main import "fmt" func main() { p := []int{1, 2, 3, 4, 5, 6} fmt.Println("p[0:1],p[1:4], p[4:6] ==", p[0:0+1], p[1:1+3], p[4:4+2]) } 結果は以下。 p[0:1],p[1:4], p[4:6] == […

実行ファイルのディレクトリと実行時ディレクトリ

Go言語で、実行しているファイルの場所と実行時ディレクトリを取得するサンプル。 package main import ( "fmt" "log" "os" "path/filepath" ) func main() { // 実行ファイルの場所 dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { lo…

Goサンプル的なライブラリ 追加

https://github.com/iwot/go-utilGoサンプル的なライブラリにHttpRouterを追加しました。 使用例を https://github.com/iwot/go-util/tree/master/example/httprouter に置いてます。 package main import ( "./app/articles" "fmt" "github.com/iwot/go-uti…

Goサンプル的なライブラリ

https://github.com/iwot/go-util Goのサンプル的なライブラリをGithubで管理してます。現在のライブラリは以下。 PriorityQueue(プライオリティ付きのQueue。Dijkstraのサンプルをtestに含めてます。) PathMatch(URLとパスのマッチング) StringBuffer S…

メモ:N10JcをUSBメモリから起動

久しぶりにN10JcにUSBメモリからLinuxをインストールしようとして忘れてたのでメモ。 USBメモリから起動するには起動画面でESCキーを押すこと。 その後選択画面が現れる。

アクセスしたパスでの処理振り分け

アクセスしたパスでの処理振り分け方法に少し悩んだのでメモしておきます。例ではhttp.Handleにはパターンとして"/app/"を登録し、ハンドラに渡されたパス("/app/post/(form|confirm|do)")をパターンマッチして処理を振り分けます。 package main import (…

Go言語でローカルパッケージをインポート

基礎からわかるGo言語には載っていなかったようなのでメモ。パッケージのimportに関してよく見かける説明では、importするパッケージはGOPATH以下に配置されている必要がありますが、わざわざGOPATHにパスを追加して管理するのも面倒に感じます。 そういう場…

Windows Haskell のReadlineがインストールできない

WindowsのHaskellで import System.Console.Readline とするために cabal install readlineとしたのだけど、どうしてもエラーが出る。 readlineのヘッダファイルが読めればいいのかと思ってCygwinからやってみたけど、やっぱり駄目。どうにかできないものか…

Goでのテスト

Goでのテストには付属のtestingパッケージが使えますが、試しにTestify(https://github.com/stretchrcom/testify)を使ってみました。インストール。 go get github.com/stretchrcom/testifyテスト対象として以下のようなプログラムがあった場合。 package es…

Go向けVim設定メモ2

http://mattn.kaoriya.net/software/vim/20130531000559.htm を参考にVimの設定をやり直した。 これで色々とすっきり便利に。

Go向けvim設定メモ

CentOS上でGoをvimで書くための設定をしたのでメモ。http://tip.golang.org/misc/vim/readme.txt を参考に、ソースからvimの設定をコピー。それと.vimrcを設定したのでこれもメモ。 set t_Co=256 :syntax on set nocompatible set number set cmdheight=2 se…

PostgreSQLで、MySQLの\G相当の出力

シェルでMySQLのselectを出力するとき、 select * from tblname \G のようにして出力を見やすくすることがあるわけですが、PostgreSQLの場合は以下のようにすると良い。 \x select * from tblname;

Microsoft TranslatorをScalaから使ってみた

まずまとめ Ruby、Go、Scalaで作ってみて、一番楽に感じたのはRubyだったかな(ほぼ生粋のPHPerなもので)。 慣れればもっといい書き方がありそう。 記述量的にはScalaが少なかったんだけど(.sbtファイルを含めると別)、一番悩んだのはScalaかも(多少なり…

メモ:開発時に外部にメールが飛ばないようにしたい

Windowsであればsmtp4devで良さそう。 サーバー側であれば、 ・Python => DebuggingServer (http://docs.python.org/2/library/smtpd.html) ・Ruby => mocksmtpd (http://koseki.hatenablog.com/entry/20081103/mocksmtpd) ・Ruby => MailCatcher (http…

Microsoft TranslatorをGoから使ってみた

前回、Rubyでやった翻訳API使用を今度はGo言語でもやってみた。 http://system.hateblo.jp/entry/2013/05/17/181822 とはいえGoらしい書き方がまだ分かってないんだけど。前回と同じくCygwinから使う想定(Windowsのプロンプトだと手を加えないとUTF-8文字が…

Microsoft TranslatorをRubyから使ってみた

weblioのポップアップウィンドウの方が便利だけどと思いながらも、Rubyの練習のためにMicrosoft Translatorを使ってみた。MICROSOFT TRANSLATORサブスクリプション登録。 https://datamarket.azure.com/dataset/1899a118-d202-492c-aa16-ba21c33c06cb 今回は…

DartでLifegame

表題通り、Dartでライフゲームを実装してみた。 環境 Dart Editor version 0.5.3_r22223 Dart SDK version 0.5.3.0_r22223 ソース lifegame.html <html> <head> <meta charset="utf-8"> <title>Lifegame</title> <link rel="stylesheet" href="lifegame.css"> </head> <body> <h1>Lifegame</h1> <canvas id="world" useMutation="1">…</canvas></body></html>

ScalaでJSONのパース(DSL)

コップ本の復習。 目的 ・コップ本にあったJSONパースプログラムの実装。 ・sbtを使用する。 ・jarファイルにまとめる。 環境 ・IntelliJ(12.1.2) ・Scala 2.10.1 ・sbt 0.12.3 http://www.scala-sbt.org/release/docs/Getting-Started/Setup.html から、…

Scala スケーラブルプログラミング

いわゆるコップ本。 長々だらだらと進めてきてたけどようやく読了。 あとは実践あるのみだけど何を作ろうか。 Scalaスケーラブルプログラミング第2版作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレス…

Google JavaScript APIのロード

Google Maps APIもSearch APIもjsapiのローダーを使うと楽、と。 <script src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load('jquery','1.7.2'); google.load('maps','3',{other_params:'sensor=false'}); google.load('search','1'); google.setOnLoadCallback(function() { $(function() { }); …

Google Reader 廃止

マジでか。 ちょっと困るなー。 数ヶ月先のこととはいえ、今のうちにRSSリーダー探しておくか。 それともいっそのこと作るか。

Scala、SBT、IntelliJ

まず始めに IntelliJにScalaプラグイン、SBTプラグインを入れておく。 とりあえず 参考: http://vyazici.blogspot.jp/2012/11/setting-up-scala-development.htmlHelloWorldディレクトリ作成。cd HelloWorldbuild.sbt ファイル作成。 内容は以下。 Scalaの…

IntelliJのフォントを変更

IntelliJのKeymapが一部文字化けしているので、以下のようにした。 File -> Settings -> Appearance と辿り、 "Override default fonts by (not recommended)"にチェックを入れ、 Meiryo UIを選択。ひとまず文字化けは解消された。

PHP5.4のトレイト

PHP5.4にもtraitがあることを初めて知った。 のだけど、(当然だが)Scalaと全く同じようには使えないみたいで少し残念。たとえば以下のようなScalaの実装。 object Sample { abstract class Say { def say: String } trait SayWorld extends Say { abstract…