タグ

ブックマーク / blog.8arrow.org (12)

  • Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 - 八発白中

    Roswell」というプロダクトがある。 clfreaksのPodcastで聴いたことがあるかもしれないし、数週間前にLisp Meet Upで佐野さん (@snmsts) の発表を聞いたかもしれない。 https://github.com/snmsts/roswell Lisp Meet Up 発表録画 知名度の割には意外と長く開発が続いているプロダクトだ。プロジェクトの最初のコミットが2014年7月30日なので、もう11ヶ月ほど開発が継続していることになる。開発は未だ活発で、バグ報告をするとその日のうちに修正がmasterに入ることが多い。 僕が働いてるサムライト株式会社では、個人の開発マシンではもちろん、アプリケーションサーバでも日常的に使われている。 RoswellにはChefのrecipeも既にある。 先日RoswellはTravis CIとCircle CI用のインストーラス

    Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 - 八発白中
    emonkak
    emonkak 2015/07/04
  • 高速なCommon LispのWebサーバ「Woo」を作りました - 八発白中

    ここ一ヶ月ほど手掛けていたCommon LispのWebサーバ「Woo」が一応の完成に至りましたのでお知らせします。Clack-compatibleなAPIになっており、現状運用しているClackのWebアプリケーションでそのままお試しいただけます。 高速であることを最優先に設計しており、Hunchentootの4倍、Wookieの3.5倍高速に動きます。現状ではCommon Lispのサーバでは最速ではないでしょうか。*1 Woo by fukamachi | GitHub Benchmarks いくつかのCommon Lispのサーバと、Node.js、GoPythonのサーバを比較してみました。縦軸はreq/secで、高いほうが多くのリクエストを捌けることを意味します。 Wooは、PythonのTornadoより約9.5倍、Node.jsの約1.9倍のリクエストを捌けます。一方、G

    高速なCommon LispのWebサーバ「Woo」を作りました - 八発白中
  • Cより高速なCommon Lispコードを書く - 八発白中

    Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。 “If you can't outperform C in CL, you're too good at C.” — Eric Naggum 最近、Common Lispの非同期Webサーバ「Wookie」を高速化する過程で、ボトルネックになっていたHTTPリクエストのパース部分を高速に処理するライブラリを書きました。 fast-http - A fast HTTP request/response parser for Common Lisp 既存のライブラリ「http-parse」よりも約10倍速く、Cのライブラリ「http-parser」より5%ほど高速です。 追記 (2014/10/26): 最適化をやり直し、現在は「http-parse」よりも約27倍速く、Cの「h

    Cより高速なCommon Lispコードを書く - 八発白中
  • プロジェクトのCommon Lispライブラリ管理ツール「qlot」を作りました - 八発白中

    想像してください。 Common Lispで開発しているアプリケーションが手元にありますよね。 それを他の環境、たとえば他の開発者のPC、CI環境やWebサーバなどで動かしたいというときに起こる問題はなんですか。 大きな問題は処理系やライブラリのバージョンが違うために、自分の環境では動くのに他の環境に持っていくと動かないということです。 処理系に関してはCIMを使えば固定できますが、Common Lispにはライブラリのバージョンを固定する方法は現状ほとんど無いために問題になります。 こういった、Common Lispプロジェクトの可搬性を上げるツールとして「qlot」を作りました。 Quicklispの何が問題か Common LispにはQuicklispという偉大なライブラリインスーラ及びライブラリの中央リポジトリがあります。依存ライブラリも含めてインストール・ロードしてくれるので、

    プロジェクトのCommon Lispライブラリ管理ツール「qlot」を作りました - 八発白中
    emonkak
    emonkak 2014/08/10
  • 軽量なCommon LispのDBライブラリ「datafly」を作りました - 八発白中

    Common Lispのデータベースライブラリというか、O/Rマッパーとしては3ヶ月前に僕が作ったIntegralがあります。 IntegralはCLOSやMOPなどのCommon Lispの魔術を余すこと無く使い、拡張性や高度なマイグレーション機能もあるライブラリとして他の追随を許しません。 ただ、すべてのアプリケーションでO/Rマッパーのような機能が必要なわけではないでしょう。抽象化レイヤーを薄く保って、極力コントローラブルにしたいという要望もあります。 今回紹介する「datafly」はそういった要求を満たす軽量なDBライブラリです。 dataflyの思想 一般的なO/Rマッパーでは、データベースの「テーブル」と、プログラム言語の「クラス定義」が一対一対応しています。この大きな前提のおかげでデータベースを抽象化でき、まるでクラス定義が(半)永続化しているように錯覚させてくれます。 ただ

    軽量なCommon LispのDBライブラリ「datafly」を作りました - 八発白中
  • 新しいCommon Lisp方言「CL21」を作ったので意見を募集します - 八発白中

    昨晩、神の啓示か何か知りませんが、ふと思い立って新しいLisp方言を作りました。 ほとんどの機能はCommon Lisp互換なので「Common Lisp方言」と言うべきかもしれません。 CLerだけでなく、Common Lispをあまり書いたことがない人やそれ以外の言語を使っている方の意見も伺いたいのでぜひ最後までご覧ください。 名前は「Common Lisp in the 21st Century」の略で「CL21」です。 http://cl21.org 特徴 よりオブジェクト指向に 関数型プログラミング機能を仕様に追加 (composeやcurryなど) MOPを仕様に含む CL21のチュートリアル Common Lispと似ている部分が多いので、わかりやすい異なる部分をいくつか紹介します。 Hello, World! まずはHello, Worldから。 (write-line "

    新しいCommon Lisp方言「CL21」を作ったので意見を募集します - 八発白中
    emonkak
    emonkak 2014/01/25
  • Lisp Meet Up #13 に参加しました - 八発白中

    1/23の夜開催されたイベント、Lisp Meet Up presented by Shibuya.lisp #13 に参加しました。 Lisp Meet Up presented by Shibuya.lisp #13 毎月やっているLisp Meet Upが1周年を迎えたのはめでたいですね。なわたさんと神田さんは表彰されていいと思う。 参加者 最初に自己紹介タイムがありました。使っているLispはClojureが一番多かったです。Common Lisp回なのにCommon Lisperは一番少なかったんじゃないかな。 Integralの紹介をしました 先日作ったCommon LispのO/RマッパーのIntegral について発表しました。30分くらい話したと思います。 Integral - New O/R Mapper for Common Lisp from fukamachi 既

    Lisp Meet Up #13 に参加しました - 八発白中
    emonkak
    emonkak 2014/01/25
  • あなたがLispを無視することができない理由 - 八発白中

    (この記事はLisp Advent Calendar 1日目のためのエントリです。) 禅が好んで用いる比喩がある。月を指すには指が必要である。だが、その指を月と思う者はわざわいなるかな。 — 鈴木大拙「禅」 これをLispに例えるなら、こう言うことができるかもしれない。 Lispを書くには括弧が必要である。だが、その括弧をLispと思う者はわざわいなるかな。 Lispを普段書いている身としてはLispについて括弧がどう、というのは些細なものに思えるが、Lispを知らない人からすると自然な考えだろう。人間は知らないものを理解しようとするとき、自分が今まで見たもの、知っているものと比較して手がかりを得ようとする。Lispが他のプログラム言語と比較してユニークなものは、やはりその括弧で表現されたS式だ。 しかし、Lispが括弧を使った奇妙な構文を用いるのは理由がある。そしてそれがLispの強力さ

    emonkak
    emonkak 2013/12/01
  • SQLを生成するCommon Lispライブラリ「SxQL」を作りました - 八発白中

    何か作ったときにしか更新しないブログが、最近では何か作っても「まあこの程度はブログ書くほどでもないか」と思って、更新も無いような感じになっています。 今回もそうやってスルーしようと思ったのですがに「ブログで紹介したらいいのに」と言われてしまい、と過ごす休日を潰して作ったライブラリとしては、もうこれは書かざるを得ないわけで、軽く紹介しておこうと思います。 Common Lispのデータベース周辺 Common Lispのデータベース周りではこれといった好むライブラリも無く、拙作のCL-DBIでようやく土台ができたという状態です。 ただ、依然SQLを文字列で書く必要がある。もちろんそれで困らないケースも多いのですが、WHERE句やORDER BY句だけが異なるクエリを複数回投げたいといったときにはプログラムから生成できるほうが好ましい。 PerlにはSQL::Makerというライブラリで、

    SQLを生成するCommon Lispライブラリ「SxQL」を作りました - 八発白中
  • Quickdocs.org で学ぶCommon LispのWebアプリ運用ノウハウ - 八発白中

    先日、QuickdocsというWebサービスを作りました。 Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました - 八発白中 アプリ部分はほとんどCommon Lispで書かれています。今までもいくつかCommon LispでWebアプリを書いたことはありますが、公開されたWebサービスはこれが初めてです。 公開当初は半日に1回落ちたり、表示が変になったりしていました。そこで2週間ほどかけて、不具合の原因を突き止めたり、それを修正して堅牢にしたり、レスポンス速度を改善したりしてきました。 Common LispのWebアプリの運用ノウハウが少し溜まってきたから車にはねられるなどする前に共有したい 2013-03-06 02:06:20 via web 試行錯誤を繰り返してきており、伝えたいことも多いです。書いてみるとかなり雑然としてしまったのですべての人向

    emonkak
    emonkak 2013/03/21
  • Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました - 八発白中

    Quicklispに登録されているCommon Lispライブラリの情報をWebで見られるサイト「Quickdocs.org」を作りました。 http://quickdocs.org/ さくらVPS 1Gで動いてます。この2日で突貫で作ったみたいな感じなのであまりいじめないでください。 機能 とてもシンプルなので、見ていただいたほうがわかりやすいかもしれません。 たとえばClackのプロジェクトページは以下です。 http://quickdocs.org/clack 右上にはWebサイトやリポジトリへのリンクを置きました*1。 文にはREADMEを表示しています。最近はGitHubホストされているライブラリが多いので見慣れていると思いますけどね。 下のほうには.asdに記述されている情報を表示しています。Author, Maintainer と License、および依存ライブラリです

    Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました - 八発白中
    emonkak
    emonkak 2013/02/24
  • なぜ僕はcl-annotを使うのか - 八発白中

    Twitterで、なぜcl-annotを使うのかという主旨の質問を受けて、そういえば id:m2ym がModern Common Lispに書くだろうからと言ってほとんど利点をまとめてなかった気がします。140字で返信するのは不可能なのでついでにブログに書いておきます。 cl-annotとは Common Lispでアノテーションを使うためのリードマクロライブラリです。 arielnetworks/cl-annot · GitHub 代表的なものに @export があります。 @export (defvar *default-fizzbuzz-count* 20) @export (defun fizzbuzz (&optional (n *default-fizzbuzz-count*)) (loop for i from 1 to n if (zerop (mod i 15)) c

    なぜ僕はcl-annotを使うのか - 八発白中
    emonkak
    emonkak 2012/04/22
  • 1