タグ

ブックマーク / kiwanami.hatenadiary.org (26)

  • [emacs] Emacs LispでWebAppの開発に必要なN個のこと - 技術日記@kiwanami

    求められている気がしたので、EmacsLispについて知っていることを書いておこうと思った。 PerlでWebAppの開発に必要なN個のこと - Islands in the byte stream 開発に必要なN個のこと by Google パッケージマネージャ Cask を使うのが今風。先日CartonというPerlのパッケージマネージャと名前がかぶっていたので、改名された。 https://github.com/cask/cask ちなみに、普段使いであれば、Emacs24.xから標準で入っているpackage.elを使うか、el-getを使う。 Bitbucket | The Git solution for professional teams アプリケーションサーバ イベントドリブンなElnodeと、httpd.elをpure Emacsで書きなおした simple-httpd

    [emacs] Emacs LispでWebAppの開発に必要なN個のこと - 技術日記@kiwanami
  • deferred.el のできるまで:調査、設計と実装 - 技術日記@kiwanami

    deferred.elを作る上での参考にした情報や、設計・実装のメモです。 一般的なDeferredの理解や、Deferredの情報まとめとしても使えるかもしれません。 Deferredについて コールバックをうまく書くイディオム 非同期処理の抽象化の道具 汎用性が高く、使い始めると無いと困るレベル 後述のbrazilさんの記事が大変オススメです。 参考にした情報など 基的に古い記事(2年以上前)が多く、JavaScript界の中ではすでにブームは過ぎ去って、常識の域になっているようです。そうは言っても、deferred.elを実装するために過去のブックマークなどを掘り起こして読み直してみたのですが、自分の中では再発見することも多かったです。 JSDeferred deferred.elで一番参考にした実装です。実装がシンプルです。 後述のMochikit.AsyncのDeferredに

    deferred.el のできるまで:調査、設計と実装 - 技術日記@kiwanami
  • anything-books.el ver 1.1 アップデート、機能追加など - 技術日記@kiwanami

    参考:anythingでPDFファイルをプレビューしながら高速に選びたい 以下の点をアップデートしました。 バグ修正:サブディレクトリをうまく扱えない問題の修正(id:authorNariさん)、JPEGではなくPNGファイルが生成されていた問題の修正 改善:qlmanagerによるMac対応(id:peccuさん) 改善:anything-books-actionsを独立させた Macでの設定 id:peccuさんからのパッチで Quick Look のプログラムである qlmanager を使う設定が出来ました。 qlmanager は何でも使えるみたいなのでPDF意外でも便利そうですね。 ;; 共通の設定例 (require 'anything-books) (setq abks:books-dir "/home/foo/bar/pdf-files") ; PDFファイルのあるディレ

    anything-books.el ver 1.1 アップデート、機能追加など - 技術日記@kiwanami
  • DB操作ツール Emacs DBI を作ってみた - 技術日記@kiwanami

    去年からほそぼそと作ってきた、EmacsからDBを操作できるツール Emacs DBI を紹介します。 Emacs DBI の簡単な紹介 このツールの目的は、クロスプラットフォームで便利なDB操作環境を実現することです。 pgAdmin や MySQL Query Browser のようなGUIの良さをCUIで実現してみようとしてみました。すなわち、ぼくのかんがえたさいきょうのDBツールです。ちなみに、このツールにとってEmacsはただの実行環境です。Emacs使わない人でも使うと便利だと思います。 データベース画面 e2wmで3ペインの画面 機能概要 以下のような機能があります。 EmacsとDB接続可能なPerlが動けばターミナルでも何処でも動く DB定義、テーブル定義がすぐ見れる auto-complete によるSQL補完 接続先DBにからキーワード、型名、テーブル名、カラム名など

    DB操作ツール Emacs DBI を作ってみた - 技術日記@kiwanami
  • Emacs で IPC や RPC (Emacs Advent Calendar jp: 2011) - 技術日記@kiwanami

    Emacs Advent Calendar jp: 2011 : ATND 6日目の記事のはずでしたが、手違いでかぶってしまい、いろいろあって遅くなってしまいました。 皆様、乱してしまってすみません。 今回の記事では、EmacsでのIPC(Inter-Process Communication)やRPC(Remote Procedure Call)の方法について、自分の知っている範囲でまとめてみます。IPCは、プログラムの間で通信する仕組みです。RPCは、既に起動しているプログラムの一部(関数やサブルーチン)を別のプログラムから呼び出す仕組みです。一般的にIPCの枠にRPCが含まれます。 プロセス間通信 - Wikipedia RPC - Wikipedia EmacsにはどんなIPC/RPCの実現方法があるのか、実際の応用例などを5分程度で簡単にまとめてみます。 Emacsの標準IPC

    Emacs で IPC や RPC (Emacs Advent Calendar jp: 2011) - 技術日記@kiwanami
  • Nginx Inside Memo (カーネル/VM Advent Calendar) - 技術日記@kiwanami

    この記事は http://atnd.org/events/21910 のために書かれたものです。 一つ前の5日目は @sora_h さんの钱柜娱乐_钱柜娱乐平台_钱柜娱乐777(唯一)官方网站でした。明日は、 @master_q さんの予定です。 nginx の内部の仕組みやモジュールの作り方について簡単に紹介してみます。 最近 nginx のコードを読んでハックを試みました。 nginx のコードについてはほとんどドキュメントがなく、日語でも見かけなかったため(もし書いている人がいたらすみません)、後から続く人にとって多少でも参考になれるようメモをまとめました。(2011/12/06 デバッグについて少し追記) 全部読みきったわけではないので、コードを読む上でのとりかかりぐらいの情報です。もし、間違いがあれば教えてください。 このメモは stable version である Nginx

    Nginx Inside Memo (カーネル/VM Advent Calendar) - 技術日記@kiwanami
  • Emacs上のATOKで快適日本語生活 / 2010 Emacs Advent Calendar - 技術日記@kiwanami

    この記事はEmacs Advent Calender jp: 2010の5日目です。 Ubuntu上での漢字変換やEmacs上での漢字変換にはSKKを使われる方が多いと思います。導入も簡単です。ただ、自分は今まで何度も使おうと挑戦してきたのですが、挫折し続けてきました。 一方で、Ubuntuのデフォルトの変換エンジンはAnthyになっています。それなりに悪くないのですが、すぐに学習を忘れてしまうのでスーツ族には辛いです。 ということで、いろいろ試した結果、JustSystemさんの ATOK X3 にたどり着きました。とてもいいです。 普通のGUI上ではそのままで快適なのですが、Emacs上では微妙にキーバインドを取られたりして辛いです。ということで、Emacs上でATOKを快適に使う設定について書いてみようと思います。 Ubuntuユーザーで、ATOKユーザーで、しかもEmacsユーザー

    Emacs上のATOKで快適日本語生活 / 2010 Emacs Advent Calendar - 技術日記@kiwanami
  • concurrent.el リリース - 技術日記@kiwanami

    今まで何の説明も無しに自分のアプリで使ってきた謎ライブラリ concurrent.el ですが、一区切りが付いた気がしましたのでリリースしたいと思います。 この記事では concurrent.el の基盤である deferred.el について簡単に紹介して、 concurrent.el の機能と適用例を紹介します。 あらすじ deferred.el復習 concurrent.el紹介 機能一覧、コード例 cacoo.elでの設計解説 deferred.el 紹介 deferred.el の詳しい使い方やAPIなどはREADMEの文書がまとまっていますので、手っ取り早く使いたい人はそちらを参照してみてください。 おそらく、他の言語でDeferredに慣れていればすぐに使えるのではないかと思います。 deferred.el リリース - 技術日記@kiwanami (リリース記事:慣性スクロ

    concurrent.el リリース - 技術日記@kiwanami
  • cacoo.el v2.0 リリース - 技術日記@kiwanami

    cacoo.el を更新しました。 参考:初回リリース記事 Emacsでスムーズに図形編集ができるようになるcacoo.elを作ってみた - 技術日記@kiwanami 表向きは Anything で Cacoo の絵が選べるようになったぐらいですが、内部的にはかなり別物になりました。非同期処理を deferred.el と concurrent.el でほぼ全面書き直ししました。その結果、キャッシュ画像の扱いが賢くなり、動作速度の向上や信頼性などが向上しています。 動かした方が分かりやすいと思いますのでムービーを作ってみました。 ムービー内容:画像を一気に表示、Anythingで選択、プレビュー表示、migemo検索・絞り込み、文書へ貼り付け、サイズ調整 cacoo.elの説明については、github上のREADMEファイルに詳しく書いていますので、ぜひそちらも参照してください。 インス

    cacoo.el v2.0 リリース - 技術日記@kiwanami
  • 技術日記@kiwanami

    求められている気がしたので、EmacsLispについて知っていることを書いておこうと思った。 PerlでWebAppの開発に必要なN個のこと - Islands in the byte stream 開発に必要なN個のこと by Google パッケージマネージャ Cask を使うのが今風。先日CartonというPerlのパッケージマネージャと名前がかぶっていたので、改名された。 https://github.com/cask/cask ちなみに、普段使いであれば、Emacs24.xから標準で入っているpackage.elを使うか、el-getを使う。 Bitbucket | The Git solution for professional teams アプリケーションサーバ イベントドリブンなElnodeと、httpd.elをpure Emacsで書きなおした simple-httpd

    技術日記@kiwanami
  • パスワード管理ツール id-manager.el 更新 - 技術日記@kiwanami

    id-manager.elを更新しました。あと、ちゃんと紹介記事を書いてなかったのでまじめに書きました。 以前の記事:2009/09/14 id-manager.el 何か 世の中にあふれるIDとパスワードを管理するものです。 例によって類似品がたくさんあります。有名なものを列挙すると以下のような感じでしょうか。 パスワード管理ソフト ID Manager フリー。Windows上の定番? パスワード管理、デジタルウォレット、パスワード生成 | ロボフォーム 商用。メーカー製PCにプリインストールされていることがある GNOME Keyring GNOMEの標準鍵管理ツール 家:Projects/GnomeKeyring - GNOME Wiki! 参考:gnome-keyring を利用してコマンドライン上のパスワードを置換する - daily dayflower その他 最強のパスワ

    パスワード管理ツール id-manager.el 更新 - 技術日記@kiwanami
  • deferred.el の出来るまで:Emacsでの非同期処理 - 技術日記@kiwanami

    Emacsでの非同期処理は大変 これまでEmacsのGUIアプリをいくつか書いてみて、非同期の処理を何とかしたいと思ったことが deferred.el を書こうと思った動機です。 Emacs Lisp上でコマンドを非同期で処理しようと思うと、コールバックをつなげたり、正しくエラー処理を行うために、かなり長いコードを書く必要があります。また、最近はWebにアクセスする機会も多いのですが、これも非同期で処理するとなるとまた面倒です。非同期をやめて、ブロックする(Emacs全体が固まる)コードで書けば楽なのですが、それではユーザー体験としてマイナスになってしまいます。 特に大変だったのが cacoo.el を作っているときでした。 cacoo.el では、以下のような流れで画像を表示します。 Webから画像取得(wget) 画像サイズ取得(identify) 画像リサイズ(convert) 表示

    deferred.el の出来るまで:Emacsでの非同期処理 - 技術日記@kiwanami
  • 非同期と継続と私 - 技術日記@kiwanami

    非同期のプログラミングの解説の中にはよく「継続(渡し)」が良く出てきます。継続といえば Scheme の call/cc ですが、やっぱり JSDeferred のサンプルのページにも出てきます。直感的にはあんまり関係ないような気がしますが、関係があるようです。 さらに、非同期と遅延評価の関係も気になります。非同期は「結果が後で来る」感じですが、遅延評価は「必要になるまで結果を計算しない」ということで、後回しにする感じが似ています。 今回、deferred.el を作った後にこれらについて考えてみたところ、なんとなく自分の中で実用的な結論に達したのでまとめてみました。以下、その過程とまとめです。 あらすじ 継続渡し(CPS)と非同期 CPS変換から非同期化 Deferredで非同期化 遅延評価と非同期 遅延関数のCPS変換から非同期化 Deferredで非同期化 明示的形式と暗黙的形式 継

    非同期と継続と私 - 技術日記@kiwanami
  • 2010-10-08

    Emacsでの非同期処理は大変 これまでEmacsのGUIアプリをいくつか書いてみて、非同期の処理を何とかしたいと思ったことが deferred.el を書こうと思った動機です。 Emacs Lisp上でコマンドを非同期で処理しようと思うと、コールバックをつなげたり、正しくエラー処理を行うために、かなり長いコードを書く必要があります。また、最近はWebにアクセスする機会も多いのですが、これも非同期で処理するとなるとまた面倒です。非同期をやめて、ブロックする(Emacs全体が固まる)コードで書けば楽なのですが、それではユーザー体験としてマイナスになってしまいます。 特に大変だったのが cacoo.el を作っているときでした。 cacoo.el では、以下のような流れで画像を表示します。 Webから画像取得(wget) 画像サイズ取得(identify) 画像リサイズ(convert) 表示

    2010-10-08
  • Emacsでの非同期処理、イベントの取り扱い - 技術日記@kiwanami

    GUIっぽいアプリを書き出すと、最近のJavaScriptで充実している基ライブラリのような機能が欲しくなった。 wgetでリソースを取ってきたり、外部プロセスやソケットとやりとりをしたり、順番が不定な平行処理を扱う場合には、JSDeferredのような非同期ライブラリが欲しい。 また、コンポーネントの連携などにはイベントの流れを扱うライブラリが欲しい。 参考になりそうな資料を探しているけども、なかなか見つからない。もうちょっと探して見つからなかったら、JavaScriptの実装を参考に作ってみようと思う。

    Emacsでの非同期処理、イベントの取り扱い - 技術日記@kiwanami
    kitokitoki
    kitokitoki 2010/07/19
    楽しみです。
  • e2wm の設計と実装 - 技術日記@kiwanami

    はじめに e2wm.elのソース読んだり、自分流に拡張するための参考になるように、e2wmの設計と実装について簡単に説明します。 あらすじ 全体の構成の説明 各モジュールの説明 各イベント時の動きの説明 現在の実装と今後の予定 図の一覧@Cacoo 全体の構成 まず、全体構成の図を示します。 全体の構成図 全体的な流れとして、イベントや画面の変化などをパースペクティブ管理に集めてきて、そこでパースペクティブに応じた加工を行い、ウインドウレイアウト制御のライブラリで画面に描画するという形です。 モジュール間の依存関係は次の図のようです。矢印の先が依存先です。 モジュール間の大まかな依存関係 パースペクティブ管理や履歴の情報とウインドウ制御の機能を、各モジュールが参照して使っているというようなイメージになります。 e2wm.elのソースコードの命名も、大体このような分類で並んでいます。 各モジ

    e2wm の設計と実装 - 技術日記@kiwanami
  • Sticky Shift / SandS - 技術日記@kiwanami

    以前から Sticky Shift や SandS(Space and Shift) の操作性に興味を持っていたので、ちょっと導入してみた。 Ubuntu 8.04 での導入について、以下のページを参考にした。 キーボードカスタマイズの魅力 @ ありえるえりあ http://ambiesoft.ddo.jp/blog/archives/893 適当なディレクトリで以下のように作業。 $ apt-get source xserver-xorg-input-keyboard $ sudo apt-get build-dep xserver-xorg-input-keyboard $ sudo apt-get install fakeroot $ tar zxvf xserver-xorg-input-keyboard_1.2.2.orig.tar.gz $ cd xserver-xorg-in

    Sticky Shift / SandS - 技術日記@kiwanami
  • Emacsでスムーズに図形編集ができるようになるcacoo.elを作ってみた - 技術日記@kiwanami

    最新記事 -> cacoo.el v2.0 リリース - 技術日記@kiwanami (2012/11/17 追記) Cacoo(http://cacoo.com/)というWeb上の図形描画ツールを、Emacsからシームレスに使える cacoo.el を作りました。 Emacsユーザーにとっては他のWordやExcelなどのアプリを超える文書作成環境になるのではないかと、勝手に妄想しています。 Cacooについては以下のサイトを見てください。自分はCacooで方眼紙Excelをやめることが出来ました。 日発のCacooは複数ユーザーがリアルタイムで協調しながらデザイン作業ができるすぐれもの | TechCrunch Japan Online Diagram & Collaboration Features Tour | Cacoo インストール方法 必要なものは、Emacs22以上(たぶ

    Emacsでスムーズに図形編集ができるようになるcacoo.elを作ってみた - 技術日記@kiwanami
  • e2wmについて考えたこと(調査や要件定義など) - 技術日記@kiwanami

    ツールを作るのも好き。昔からツールを作って満足して、そもそもの目的が達成できないタイプ。 はじめに この記事では、e2wm.elがなんでこんなUIになっているかを説明します。UIにはストーリーが重要だと思っていて、e2wm.elについて考えたことをまとめたいと思います。また、e2wm.elやこの記事をきっかけに、Emacsに限らず、今後のIDEの開発の貢献に役立てるといいなと思っています。 あんまりうまく使い分けできていませんが、名称について。 e2wm 仕組みや仕様を指すとき e2wm.el 今回の実装を指すとき あらすじ 画面が広くなって、なぜかEmacsが使いにくくなった そこで他のIDE、アプリなどのUIを調査してみた プログラマ(自分)の業務分析して要件を考えた 最初の実装のゴールを定義した 図の一覧@Cacoo (2010/07/03追記) Emacsと画面のサイズの変化 きっ

    e2wmについて考えたこと(調査や要件定義など) - 技術日記@kiwanami
  • Ubuntu 10.04 beta1 / ThinkPad X201s - 技術日記@kiwanami

    試しに Ubuntu9.10 (amd64) のCDで起動させてみた。動かなかった。キーに反応してCDが動いたりするので、何となく画面が映らないのが問題っぽい。 今度は 10.04 beta1 を試してみる。あっさり動いた。Windows7に引っ越す作業を進めていたが、いろいろ面倒くさくなってきたので、ハードディスクからWindows7を消して10.04を入れた。EmacsとVMWareが動けば普通に仕事ができるので、引っ越しはデータのコピーだけでほぼ完了。いくつか問題があるけども、何となく乗り切れそう。 X201sでの問題 2回目のサスペンドからの復帰がうまくいかない。 Bug #532374 “Lenovo Thinkpads with Core i5 and i7 suspend/resume...” : Lucid (10.04) : Bugs : linux package :

    Ubuntu 10.04 beta1 / ThinkPad X201s - 技術日記@kiwanami