タグ

ブックマーク / ayato.hateblo.jp (12)

  • 僕と契約してLisperになってよ!-Gaucheの開発環境を整えよう- - (define -ayalog '())

    というわけで、最近周りの人にLisp(といってもSchemeだしGaucheだけど)を布教する機会が多くなってきたのと、ちょっとセットアップの仕方教えてよ!って要望があったので、Gaucheで遊ぶまでの道のりを優しく丁寧に書いてみる。 (元も子もないことを言えば、プログラミングGaucheあたりを読めば、綺麗に解説してあったりするんですけど、まぁココみれば全部分かるよ!くらいで書いてみたいと思う) 対象読者はMacとUbuntu使ってる人です。あしからず。*1 目次 Gaucheのインストール Emacsのインストール Emacsの設定 Gaucheリファレンスを読む準備 Gaucheのインストール ・UbuntuとかDebianな方 sudo apt-get install gauche ・Macな方 brew install gauche ・ソースからインストールしたい方 ダウンロード

    僕と契約してLisperになってよ!-Gaucheの開発環境を整えよう- - (define -ayalog '())
  • Clojure の開発環境をよりシンプルへ ~ inf-clojure 実践的な設定編? - (define -ayalog '())

    一ヶ月くらい前に inf-clojure 導入記事を書いたのに、それ以来何も触れてなかったのでそろそろまた書いてみる。 一ヶ月くらい前に書いたってことはつまりあれから一ヶ月くらいは使っているわけですが、間に少し Cursive を使っていたのでまるまるじゃないですが、だいたい仕事中は inf-clojure 使っています。まぁ不満点はほぼほぼないです。 さくっとコードの全貌を置いておきます。 (add-to-list 'auto-mode-alist '("\\.boot$" . clojure-mode)) (add-to-list 'auto-mode-alist '("\\.cljs$'" . clojure-mode)) (add-to-list 'auto-mode-alist '("\\.cljx$'" . clojure-mode)) (add-to-list 'auto-m

    Clojure の開発環境をよりシンプルへ ~ inf-clojure 実践的な設定編? - (define -ayalog '())
  • Clojure で依存関係の解決に潜むワナ? - (define -ayalog '())

    仕事中に盛大にハマって、最終的に一緒にやってる Clojure チョットデキルマンに助けてもらった。 Clojure のライブラリを Leiningen や Boot に含める場合、次のような表記を用いる。 [group-id/name version] Leiningen や Boot はこれを group-id/name でひとつのライブラリとみなし、もし数あるライブラリの内部で使われているライブラリが重複した場合には、後勝ちで依存性が解決されていく*1。 なので例えば foo/piyo というライブラリが a/nyan 0.9, a/nyun 0.8 というライブラリを依存関係に含んでいて、 bar/puyo というライブラリが a/nyan 0.1, a/nyun 1.2 というライブラリを依存関係に含んでいる場合に、 foo/piyo -> bar/puyo という順番で依存

    Clojure で依存関係の解決に潜むワナ? - (define -ayalog '())
  • Clojure の開発で gtags を使う - (define -ayalog '())

    えっと Emacs/Cider ユーザーにはあまり関係ないですね。あと他のエディタや IDE で定義ジャンプ出来る人はいらないと思う。 僕はこの前から inf-clojure を使っているので、これが欲しかった。あと例えば他のエディタや IDE で defxxxx なマクロを使っていると定義ジャンプ出来ないシーンがある気がしたので*1、どうせなのでそのへんまとめていい感じにしようかなと思った。 必要なもの Exuberant Ctags GNU GLOBAL v6.3.2 以降 以下の記事が詳しいので、参照してインストールしましょう。 gtags - GNU GLOBALの対応言語を大幅に増やすPygmentsパーサーを導入する - Qiita ctags の設定 Exuberant Ctags は Clojure に対応していないので、このまま使うと定義タグの生成が出来ずに定義ジャンプ

    Clojure の開発で gtags を使う - (define -ayalog '())
  • defn- のような def- を定義したけど、 private にならないという話 - (define -ayalog '())

    ML で読んでほえーと思った。 Why (defn- ...) but (def ^:private? ...) 元の質問者は def フォームは ^:dynamic? になるの?って聞いてますが、何故かというと彼の書いたマクロ def- が綺麗に動かなかったからです。 こういう感じ。 (defmacro def- "Why (defn- private-fn ...) but (def ^:private var ...)?" [sym & body] `(def ^:private ~sym ~@body)) (macroexpand '(def- blah "foo bar quux")) ;=> (def blah "foo bar quux") という風にマクロ展開すると ^:private が消えちゃってますね。ちなみにこれ定義後に meta 情報を見ても同様に private

    defn- のような def- を定義したけど、 private にならないという話 - (define -ayalog '())
  • 1 ヶ月間 Clojure を書き続けて感じたこと - (define -ayalog '())

    まえがき 日で Clojure を使い始めた 1 人の Clojure プログラマとして、この 1 ヶ月で感じたこととか Clojure をとりまく環境とか書いておきたいなと思う。 日では流行ってない? 2010 ~ 2011 年頃、空前の Clojure ブームがあったらしい。原因は「 Programming Clojure 」の翻訳である「プログラミング Clojure」が 2010/01 に出版されたからだと思う。 プログラミングClojure 作者: Stuart Halloway,川合史朗出版社/メーカー: オーム社発売日: 2010/01/26メディア: 単行(ソフトカバー)購入: 10人 クリック: 338回この商品を含むブログ (72件) を見る だいたい、日語で Clojure の情報を検索しようとすると 2010 ~ 2011 年頃の古い記事が結構ヒットしてく

    1 ヶ月間 Clojure を書き続けて感じたこと - (define -ayalog '())
  • Boot を使いはじめる(インストールから基本的な使い方まで) - (define -ayalog '())

    一個前の記事で言及している Boot についてです。 github.com ああ、ロゴが可愛いですね。当に。 さて、さくさくっと 1 週間くらい触ってきて知見もそこそこにたまってきたので公開します。 目次 思いの外チュートリアルが長くなったので… インストールの仕方 簡単なチュートリアル 幾つかの TIPS 僕が Boot を使い始めてよかったと思った点 インストールの仕方 *nix/Mac 系なら boot.sh をダウンロードして次のようなコマンドを実行 $ mv boot.sh boot && chmod a+x boot && sudo mv boot /usr/local/binWindows なら*1 boot.exe をダウンロードして C:\> move boot.exe C:\Windows\System32Boot を一度実行すると Leiningen と同じように色

    Boot を使いはじめる(インストールから基本的な使い方まで) - (define -ayalog '())
  • Clojure の開発環境をよりシンプルへ ~ inf-clojure 導入編 - (define -ayalog '())

    最近、自宅の ThinkPad X220 で Cider-mode を起動すると segfault が起こるようになった。一度起こるとマシンを再起動するまで JVM が起動できなくなってしまう*1。 まぁそういうきっかけがありつつ、開発しているときに Cider を起動するだけで 30 秒程待つ必要がある事実が嫌すぎて*2、原点回帰ということで inf-clojure に乗り換えることにした*3。 ちなみに僕が Cider-mode を嫌になった点を幾つか書いておきます。 1. 待ち時間が長い/起動が遅い これは Clojure 使うなら仕方ないことだけど、やっぱり REPL の起動に時間がかかる。基的には reload を積極的に使うことで REPL の再起動をする必要はないのだけれど、それでもたまに再起動しないといけないときがある*4。そんなときに重いというのはネックだし、気軽に再起

    Clojure の開発環境をよりシンプルへ ~ inf-clojure 導入編 - (define -ayalog '())
  • Cider-debug という視覚的、対話的な Clojure のためのデバッガについて。 - (define -ayalog '())

    デバッグについてです。例えば Ruby 界隈だと pry で、 Java な人たちは高性能 IDE に標準装備されているデバッガあるいはプラグインなどを利用していることでしょう。 Clojure も最近はデバッガが cider に標準装備されているようです。ちょっとまだこなれてないところもあるけど、おおよそ使えるので使ってみます。 準備するものは cider-nrepl 0.9 or later cider-mode latest version *1 ~/.lein/profiles.clj へと以下のような設定を追加/マージする。 {:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]}} だけです。 するとこんな感じになる。 監視したい関数の中(or 直後)で M-x cider-debug-defun-at-point を実行

    Cider-debug という視覚的、対話的な Clojure のためのデバッガについて。 - (define -ayalog '())
  • Clojure で org.clojure/java.jdbc を使うときにぷちハマりした - (define -ayalog '())

    Web Development with Clojure を読みながら。 だいたいこので使われているライブラリのバージョン古いので最新のものを使って書きながら読み進めているのだけど、見事にハマったよね。 こんなエラーが出る。 1. Caused by java.lang.RuntimeException No such var: sql/with-connectionライブラリちゃんと読み込んでるし何が悪いのかなーって調べたら行き着いた。 stackoverflow.com だいたいここに書いてあるとおりです。書籍中では [org.clojure/java.jdbc "0.2.3"] となっているのを "0.3.6" と書き換えると with-connection などが使えなくなります。 まぁ一応ネームスペースとして 0.3.0 以前は使えたものは deprecated として残ってい

    Clojure で org.clojure/java.jdbc を使うときにぷちハマりした - (define -ayalog '())
  • The Clojure Style Guide を読んだ - (define -ayalog '())

    bbatsov/clojure-style-guide · GitHub totakke/clojure-style-guide · GitHub こういうスタイルガイドは言語の勉強するときに役に立つので大変ありがたい。 その言語の抱えている問題/特徴なんかが垣間見えるので、とりあえずバッドノウハウとか避ける為にも読んだほうがいい*1。 ひとこと 私生活もドタバタしているのがやっと落ち着いてきたのでもう少し自分の時間取り戻したい。 *1: Ruby のスタイルガイドは真面目に読んでないとか内緒だ

    The Clojure Style Guide を読んだ - (define -ayalog '())
  • パーフェクト JavaScript 読んだ - (define -ayalog '())

    良いだった。このについてのレビューは色んな所にあると思うし、僕があまり何かを書く必要はないかなって気はする。 だけど、まぁちょろっと感想とか最近の JavaScript 周りについての所感というか、僕が感じているところについて合わせて書いてみる。 目次抜粋しようと思ったけど軽く鈍器なので、それなりに目次あってコピペするだけ無駄感あるので適当にリンク先参照してください。 パーフェクトJavaScript:書籍案内|技術評論社 感想的ななにか このの前に僕は幾冊かの JavaScript を読んでいるので正直必要ないかなって思ってた。それから、 2011 年発売なのでちょっと古いかなって思ったけど全然そんなことなくてよかった。理由としては ECMA Script 5 の内容で書かれているからっていうのと、まだ 6 は策定中(だよね?)だから内容的には全然問題ないです。周辺のエコシステム

    パーフェクト JavaScript 読んだ - (define -ayalog '())
  • 1