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

  • Emacsからlemに移行した - 八発白中

    ずっとEmacsをメインエディタとしていましたが、先月lemに移行しました。 https://github.com/cxxxr/lem lemはCommon Lispで書かれたエディタです。 「なんでLem使わないの?」って訊かれたから、試してうまく動かなかったところを具体的にリストアップしたら凄い勢いで改善されててだんだん使わない理由がなくなってきてる。外堀埋められてる感ある— fukamachi (@nitro_idiot) 2018年7月9日 そもそも自分はCommon Lisperだしlem使うほうが資産がCL界に降りてきて良いよな、という考えもあり使いたい気持ちはありました。 vi-modeさえまともに動けばまあ他の不便は我慢できるか、という状態だったので、vi-modeのバグを上げて修正と機能追加をしつつ使い始めてみました。 結果、なんとか使い続けられています。 lem使い始め

    Emacsからlemに移行した - 八発白中
    peccu
    peccu 2018/08/15
  • Day 13: websocket-driver - 八発白中

    これは fukamachi products advent calendar 2016 の13日目の記事です。ようやく折り返し地点ですね。 今日はwebsocket-driverについて話します。 小さなライブラリではありますが、その後の話の発端となるライブラリなので紹介します。 WebSocket Clackにより通常のHTTP通信を行うWebアプリケーションは作れるようになりました。しかし、よりリアルタイム性の強いもの、たとえばチャットやゲームのようなアプリケーションを作るには貧弱です。 たとえばWebSocket。TCP上のプロトコルであり、通信時の不要なオーバーヘッドが少なく効率的でリアルタイム性の高い通信プロトコルです。 ClackでWebSocketを使う方法はなく、使えるとすればHunchensocketというHunchentoot拡張くらいでした*1。 Socket.IO

    Day 13: websocket-driver - 八発白中
    peccu
    peccu 2017/06/15
  • ポケットチェンジに入社しました - 八発白中

    こんにちは。深町です。 年末に著しく体調を損なっていたこともあって方々に年賀の挨拶の機会を失ったまま過ごしています。旧暦では1月28日が元日だったようなので普段は旧暦で生活しているということにすると辻褄も合いそうです。明けましておめでとうございます。 さて、去年の12月に月末の退職から雇用先の募集をしました。 働く側ではなく雇う側をスコアリングするというのが上から目線で豪胆だと評価されたのか、私の交友範囲を大きく越えて見ていただいたようです。 最終的に2週間で31社からメールをいただき、数社に訪問して話をしました。 そして縁あってポケットチェンジという企業で働くことになり、2月1日に入社となりました。 ポケットチェンジとは 海外旅行をしたときに余る外貨を帰国後に電子マネーやギフト券に交換できるサービスを提供する会社です。 http://www.pocket-change.jp より 空港な

    ポケットチェンジに入社しました - 八発白中
    peccu
    peccu 2017/02/02
  • Day 15: Woo - 八発白中

    これは fukamachi products advent calendar 2016 の15日目の記事です。 今日はWooについて話します。 これがあらすじです。 WookieがNodeより遅くね?→プロファイル→http-parseが遅い→PRいくつか投げる→でも遅い→fast-http公開→Wookieまだ遅い→ClackベースのサーバWoo公開→まだ遅い→これってlibevent2で詰まってね?→libuvへ、みたいな流れでした— fukamachi (@nitro_idiot) 2014年11月2日 twitter.com Wookieの高速化 Wookieのボトルネックを解消してもNode.jsのパフォーマンスには今一歩届かない。そこで使っているイベントライブラリのlibevent2が遅いのではないか?という疑念が生まれました。libevent2がボトルネックならば、libev

    Day 15: Woo - 八発白中
    peccu
    peccu 2016/12/16
  • Day 12: Qlot - 八発白中

    これは fukamachi products advent calendar 2016 の12日目の記事です。 今日はQlotについて話します。 背景 はてな退職することが決まってから、今までできていなかった開発時間を取り戻すかのようにCommon Lispを書き続けました。当時は起業する気でいたのですが、まだまだWebサービスを作るために足りないライブラリはいくつもあったからです。 ここから数日間のアドベントカレンダーのプロダクトはこの期間に作られたものです。どれも必要でありながら手がつけられていなかったものです。 Quicklispをプロジェクト毎に Quicklisp のβリリースから3年以上経ち、もはやQuicklispはCommon Lispの開発にはなくてはならないものにまでなりました。 しかし、問題もあります。アップデートが月に一回なので最新のリリースを使えるようになるまで

    Day 12: Qlot - 八発白中
    peccu
    peccu 2016/12/12
  • サムライト株式会社を退職します - 八発白中

    今年末12月31日でサムライト株式会社を退職することにしました。 2年間という短い期間ではありましたが、Common Lispでの開発を存分にやらせていただきました。おかげで高速なWebサーバーのWooの運用実績ができ、Common Lispが実用に足るだけでなく他の言語を凌ぐパフォーマンスを出せるということが実証できたと思います。 次の雇用先は決まっていないのでこれからのんびり探す予定です。 もし雇ってもいいという企業がいらっしゃれば、退職と雇用先の募集についてをご覧ください。

    サムライト株式会社を退職します - 八発白中
    peccu
    peccu 2016/12/05
  • Day 5: ningle - 八発白中

    これは fukamachi products advent calendar 2016 の5日目の記事です。 今日はningleについて話します。 Cavemanをもっと小さく CavemanはマイクロWebフレームワークではありましたが、一般的なものと違ってプロジェクト雛形生成機能がついていました。 PerlのAmon2から影響されて作られたので当然と言えば当然なのですが、RubyのSinatraやPythonのFlaskのようにまずは1ファイルでさらっと書いて起動できるといった手軽さに比べると鈍臭く感じてしまいます。 これはCavemanが悪いわけではありません。他のフレームワークがURLディスパッチャしか提供していないのに対し、Cavemanはテンプレートエンジンとの連携や環境による設定の切り替えなども含まれ、プロジェクトのディレクトリ構造がある程度固定されるのです。 けれども仮に、

    Day 5: ningle - 八発白中
    peccu
    peccu 2016/12/05
  • Day 2: Clack - 八発白中

    これは fukamachi products advent calendar 2016 の2日目の記事です。 今日はClackについて話します。 YAPC Asia 2010 keynote 僕が最初に学んだプログラム言語はPerlでした。その後PHPでのアルバイトを経験しましたが、好きな言語はやはりPerlでした。 最初に参加したカンファレンスはYAPC::Asia 2009だったと思います。まだPerlを始めて数年の若者で、技術力なんて吹けば飛ぶほどのものです。 当時はPerlにもまだ勢いがあり、YAPCは日最大規模のカンファレンスでした。いろんな人が入れ替わりでPerlの話をし、ある人は自分のプロダクトのこと、ある人は会社での運用について、またある人はPerlの言語自体のことなど、内容はさまざまでした。そのとき受けた刺激は僕のプログラミング活動に大きく勢いをつけ、いつか自分も壇上に

    Day 2: Clack - 八発白中
    peccu
    peccu 2016/12/02
  • Day 1: Prove - 八発白中

    これは fukamachi products advent calendar 2016 の1日目の記事です。 最初なのでこのアドベントカレンダーの説明をしておくと、僕が今まで作ったプロダクトをネタとして年代を追って話をするというとても気楽なものです。酒でも飲みながら昔話を聴いているというつもりで毎日お付き合いください。 始まりはShibuya.lisp Hackathonで 僕が最初にCommon Lispライブラリを作ったのは2010年の10月でした。 ある日曜日、青山にあるセキュリティの厳重な日オラクルのオフィスを借りてShibuya.lisp Hackathon #1というイベントが開催されました。主催はShibuya.lispの運営の1人のyshigeruさん。当時はオラクル社員だった@ymotongpooさんが会場の案内をしてくれたことも覚えています。 その頃の僕はCommon

    Day 1: Prove - 八発白中
    peccu
    peccu 2016/12/01
  • 落語Botを作った & LINE Botの設計考察 - 八発白中

    僕はよく落語を聴きに行きます。 寄席のときもあるし、お気に入りの落語家が出演する落語会のチケットを買って行くこともあります。寄席と落語会を合わせてだいたい月に3回くらい。 「寄席」というのは都内の各所で1年365日やってる落語イベントです。都内には新宿、池袋、上野、浅草に席亭があります。途中から入ったり途中で帰ったりが自由なので「あー、落語聴きに行きたいなー」というときに気楽にいけます。 そういうときにはどこの席亭の寄席に行こうかな、と当日の出演スケジュールを見て決めることになります。 ところがこれが意外と面倒くさい。 それぞれの席亭の日の番組表を複数窓で開いて見比べるわけですが、一昔前のWebサイトっぽさがあってあんまりスマートフォン対応してくれていません。小さな文字を見比べて「上野には誰々が出るから…」とか思案するわけです。 落語Bot そういう事情もあって、LINEで寄席の情報を調

    落語Botを作った & LINE Botの設計考察 - 八発白中
    peccu
    peccu 2016/11/29
  • コマンドラインからHyperSpecを開くRoswellスクリプト - 八発白中

    コマンドラインからHyperSpecを簡単に開けるRoswellスクリプトを作ったので紹介します。 https://gist.github.com/fukamachi/3510ea1609c1b52830c2 Roswellが何か知らない人はまずこちらの記事をお読みください。 blog.8arrow.org 昔はEmacsからemacs-w3mで開くことでEmacsから出ずに見られるように設定していたのですが、慣習として定着しなかったので最近はこのスクリプトでターミナルから開いています。 これならGUIのデフォルトブラウザで開けるので、Slackで質問されたときとかに「HyperSpec見ろ」と言ってURLを投げつけたりできて便利です。 インストール方法 Roswellをインストールしてください。 その後、上述のgistページからダウンロードして実行属性をつけ、PATHの通ったところに置く

    コマンドラインからHyperSpecを開くRoswellスクリプト - 八発白中
    peccu
    peccu 2016/01/31
  • Lisp Meetup #31 で「Dexador Rises」という発表をしました - 八発白中

    今月の Lisp Meetup #31 で、拙作のHTTPクライアントライブラリの「Dexador」の話をしてきました。 Dexador Rises from fukamachi 事実上Drakmaの一人勝ち市場なんだけど、Drakmaって割とハマりがちだよね、っていう話に賛同を得られました。 Dexadorは現在v1.0.0リリースに向けて安定化を再優先に開発しています。 他の発表 UFO @ta2gch さんからUFOの発表がありました。 UFO: Roswell script Installer from ta2gch UFOはRoswellスクリプトをインストールするためのRoswellスクリプトです。Web上に公開されたRoswellスクリプトを簡単にインストールできる「go get」相当の機能を提供します。書いた便利Roswellスクリプトをgistなどに公開すれば、ufo g

    Lisp Meetup #31 で「Dexador Rises」という発表をしました - 八発白中
    peccu
    peccu 2015/08/27
    httpクライアントと聞くとプロキシ対応か気にしてしまう… } Lisp Meetup #31 で「Dexador Rises」という発表をしました - 八発白中
  • Lisperはプログラムに何を見るか - 八発白中

    男子校に通う中学生の僕らにとって「家庭科」の授業は休憩時間のようなものだった。 僕の中学校には家庭科室というものがない。だから、いつもの教室で野菜の種類やそれに含まれる栄養素なんかを教わるというだけの、正直退屈な授業だった。話される内容はどれもただ暗記すればいいものなので、授業を聴かなくても定期試験前に教科書を読み通すだけで九〇点は取れる教科だった。 学校としても文科省の教育課程に沿うがためだけに時間割にねじ込んでいるに過ぎなかったと思う。特別教室がないことでも真面目にこの教科を取り扱う気がないことがわかるし、生徒の方でもその学校の態度を敏感に感じとっていた。 そんなやる気のない男子学生の前に立って話すのは教師にとって楽しいものではなかっただろう。僕らの先生は、落ち着いた雰囲気でどこかしたたかさのある、髪の長い女の先生だった。 その日も彼女はいつも通り、キノコに含まれる何々という栄養素が、

    Lisperはプログラムに何を見るか - 八発白中
    peccu
    peccu 2015/07/01
  • 「The Healthy Programmer」を読んで自宅を快適なプログラミング環境にする - 八発白中

    柄にもなく健康の話をします。 去年の今頃は京都から東京に引っ越してきたところでした。まだはてなで働いていましたが、勤務形態は自宅からのリモートが主になっていました。週に6日は家から出ずに家でコードを書いていました。昼から早朝まで書いて昼からまた早朝までコードを書くような、ある意味規則的な生活です*1。 この間、生産性はかなり上がっていて、起きているときはもちろん、寝ている間も脳が活動を続け、睡眠中に考えたアイデアを唐突に起き上がってホワイトボードに書き込むみたいな状態でした。 しかし、1ヶ月くらいすると体調が悪くなってきます。なんか左脳の後ろ側が死んでるみたいな。 なんか脳が欠けてる感じがする— fukamachi (@nitro_idiot) January 12, 2014 あと心臓が異常にバクバクする。座るのもきつくなってくるのでだいたいダメ人間ソファに沈んでHHKB叩いてるみたいな

    「The Healthy Programmer」を読んで自宅を快適なプログラミング環境にする - 八発白中
    peccu
    peccu 2015/02/12
    "コードを書き続けるために健康になる" } 「The Healthy Programmer」を読んで自宅を快適なプログラミング環境にする - 八発白中
  • 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コードを書く - 八発白中
    peccu
    peccu 2014/10/24
  • プロジェクトのCommon Lispライブラリ管理ツール「qlot」を作りました - 八発白中

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

    プロジェクトのCommon Lispライブラリ管理ツール「qlot」を作りました - 八発白中
    peccu
    peccu 2014/08/05
  • 軽量な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」を作りました - 八発白中
    peccu
    peccu 2014/04/29
  • あなたがLispを無視することができない理由 - 八発白中

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

    peccu
    peccu 2013/12/01
  • Common LispのWebフレームワーク「Caveman2」を作りました - 八発白中

    僕がClackを作ったのは2年9ヶ月前。Webフレームワークの「Caveman」をリリースしたのはその2ヶ月後だった。 Cavemanを作った頃、僕はアリエルネットワーク株式会社にいた。松山さんと開発していた試作プロダクトのために、並行して開発していたWebフレームワークがそれだった。そのときはCommon LispでのWebアプリケーション構築方法は洗練されておらず、アプリケーションを作りながら、手探りでフレームワークを作っていたことを今でも思い出す。 結局作っていた社内プロダクトは世に出なかったのだけど、それから1年後、会社が変わっても僕はCommon Lispでのプロダクトを作っていた。 ある日Cavemanを使っていたとき、一つのアイデアが浮かんできた。Cavemanは最初にプロジェクトのひな形を作る必要がある。けれど、PythonのFlaskのようなフレームワークではそれすら必要

    Common LispのWebフレームワーク「Caveman2」を作りました - 八発白中
    peccu
    peccu 2013/11/07
  • 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 試行錯誤を繰り返してきており、伝えたいことも多いです。書いてみるとかなり雑然としてしまったのですべての人向

    peccu
    peccu 2013/03/22
    "Supervisord (死活監視)" } http://t.co/dBqG57DWjZ で学ぶCommon LispのWebアプリ運用ノウハウ - 八発白中