タグ

ブックマーク / unknownplace.org (31)

  • clang-complete-asyncのcflagsを開いているファイルに応じてよしなに設定する - unknownplace.org

    Emacsで、C/C++/Objective-C とかを書く時、clangを使った補完 clang-complete-async を使っている。 いままではiOS用の設定決めうちで使っていたのだが、 たまにMacアプリを書くときにcflags切り替えがめんどくさい 外部ライブラリを使っているプロジェクトで、そのライブラリのヘッダがよまれない と言った不満があった。 ちょっと最近またMacアプリを書いていてよしなにやってくれるやつが欲しいな〜という熱がたかまったので作ってみた。 typester/clang-complete-helper 何をするやつ? 編集しているファイルから、xcodeプロジェクトを探して、その設定を読んでよしなにCFLAGSをセットしてくれるやつ。 なのでこれを使えば、xcodeのプロジェクトのファイルであればなにも考えなくてもclangによる補完が効くようになる。

    mattn
    mattn 2014/04/01
    Emacs愛
  • GoでCocoa APIを使う、もしくは他のイベントループをGoに混ぜる方法 - unknownplace.org

    Gocgo という機能を使うと、GoからCの世界のコードを呼んだり、呼ばれたりすることができる。 Perlで言うところのXSというやつだ。 このcgoを使ったGoプログラムは、昔はMakefileを利用してビルドしていたそうだが、 1.0からは go get や go build と言った、go toolがcgoに対応したのでそういうことも必要なくなっている。 cgoの基的な使い方 まずは import "C" として、Cという疑似パッケージをimportする。 このパッケージを使うと、 C.fprintf(...) というような感じでCの世界にアクセスできるようになる。 また、このimport文の直前のコメントはCのコードとして解釈される。 なので、 package main /* #include <stdio.h> void hello() { fprintf(stderr,

    mattn
    mattn 2013/12/24
  • 独立しました - unknownplace.org

    2013年8月末で面白法人カヤックを退職し、新しく会社を設立しました。 カヤックには約9年間お世話になり、とても多くのことを学ばせてもらいました。 とくにクリエーターとしての自分の考え方は、ほぼカヤックで養われたと言っても過言ではないでしょう。 そういう意味でカヤックは僕の第二の親のような存在であり、鎌倉方面には足を向けて寝られません。 当にありがとうございました。 カヤックは面白法人とか名乗っていますが、実は非常にまじめな集団です。 たとえば、経営理念についても、とても真摯に向かいあっています。 経営理念とはただの飾りではなく、まさに会社の存在意義であり、社員全員がそれを意識して仕事をしなければ意味がない。 そんなことから半年に一度、全社員で経営理念について考えるための全員社長合宿、というものをやっていたりします。 そんな環境で、自分も個人としての理念を磨いてきました。 昔のカヤックス

    mattn
    mattn 2013/10/02
  • このサイトのBlosxomの構成 - unknownplace.org

    このサイトでは org-modeで書いた原稿をBlosxomを使って表示している と前に書いたが、 その環境もだいぶ落ち着いてきたので、ここにまとめておく。 手元で試してみる このサイトの構成をまるっとそのまま githubにあげてある ので、 だれでもすぐに試してみることができる。 git cloneと依存ライブラリのインストール まず、 git clone して、 # git clone git clone https://github.com/typester/unknownplace.org.git cd unknownplace.org cpanm を使ってPerlの依存ライブラリをインストール # 依存ライブラリをインストール cpanm --installdeps . 実行 plackupで簡単に動作させられるように app.psgi を同封してあるので BLOSXOM_CO

    mattn
    mattn 2013/06/20
  • Goはクロスコンパイルが簡単 - unknownplace.org

    homebrew の Go用のレシピ を見た人は、その中にこんなオプションが定義されているのに気がついたかもしれない: option 'cross-compile-all', "Build the cross-compilers and runtime support for all supported platforms" option 'cross-compile-common', "Build the cross-compilers and runtime support for darwin, linux and windows" Goはクロスコンパイルが可能なようにビルドしておけば、簡単に他の環境で動くバイナリを作ることができるようになっているらしい。 Goがダイナミックライブラリに依存しない実行バイナリを作るという特徴と併せて考えると非常におもしろい(そして、使える)機能だと思

    mattn
    mattn 2013/06/13
  • EmacsでのGo言語編集環境 - unknownplace.org

    最近Go言語を始めた。MacGoの実行環境を入れ、Emacsで編集するところまで、一通りまとめておく。 Goの導入 (for OS X) いろいろ方法があるようだけど、僕はカジュアルに brew install go で済ませた。 GOPATH 環境変数は最初プロジェクト毎に設定して使おうかと思っていたんだけど、 後述するgocodeやgo-flymakeといったツールを使う場合、手元のGOPATHは1つにしてしまったほうが便利なので、 export GOPATH=$HOME/dev/go-workspace というのをshellの設定に定義して、手元ではこの共通のPATHを使うようにした。 これは問題がでたらまた考える。 PATHを通す homebrewで入れたツールをEmacsから使うためには、 homebrewのbinディレクトリを exec-path に追加する必要がある。 (a

    mattn
    mattn 2013/06/11
    環境ははvimよりemacsの方が整ってるな。(悔しくないもん!)
  • irssiで良い感じにlingrができる irssi-lingr - unknownplace.org

    最近、 Perlの話題を日語で – Lingr お気軽なかんじで、Perl に関する話題をしましょう。 初心者のかたでも御気軽にPerl の質問など、もりもりしてください♪ というLingrの部屋が盛りあがってる。 最初はブラウザで見ていたんだけど、だんだんつらくなってきたので、APIを使ってirssiでLingrチャットができるのを作りました。 https://github.com/typester/irssi-lingr ~/.irssi/scripts に置いて、 irssi内から、 /run lingr /set lingr_user your_lingr_username /set lingr_password your_lingr_password /set lingr_api_key your_api_key # オプション /lingr start で lingr/* と

    mattn
    mattn 2013/03/22
  • Any::Moose とか幻想やったんや - unknownplace.org

    Any::Moose は Moose と Mouse のラッパーで、バックエンドがどちらになるかは use Any::Moose した時点で Moose or Mouse がロードされているかによって変わる。 どこかで use Moose していたら use Any::Moose は use Moose としてうごくし、 そうじゃない場合は use Mouse としてうごく。 これはなんのためにあるかというと、MouseとMooseの両方のモジュールを混ぜて使うと壊れるからなんだけど、 そもそも混ぜて使って問題になるのは Mouse のクラスを Moose で extends したりとか、そういう Moose 周りの機能を相互に使おうとした場合だけであって、混ぜて使っていてもそれぞれのクラスを普通に使い合う分にはなんの問題もない。 また、昔はruntimeの速度にそこまで性能差はなかったと

    mattn
    mattn 2012/12/25
  • Redis布教活動報告 ISUCON 編 - unknownplace.org

    最近 Test::RedisServer とかもろもろつくっててばれてるかもしれませんが、だいぶ Redis 期にありまして、最近の趣味は?っていう問いにはだいたいRedisのソースを読むことですってなくらいなのですが、 memcached とかシンプルな KVS と比べるとだいぶ機能が豊富なので使い方を迷ったりとかそういう事例もあり、周りにもう少し使える人を増やさなければ僕の書いたコードが属人化しててつらい感じになるなーっていうわけで、 布教活動をおこなっておりまして、その一環として ISUCON2 に参加してきましたのでその報告です。 livedoor Techブログ : #isucon2 リアルタイムフォトレポート 更新終了 前回の優勝チームに混ぜてもらった感じでだいぶついてる感じもしますが、見事連覇を果たせ、懇親会でも redis redis と連呼してきたのでだいぶ興味持った方も

    mattn
    mattn 2012/11/07
  • YAPC::Asia 2012 - unknownplace.org

    今回は前夜祭でも話すことになって、始めて前夜祭からの参加になったけど、なかなかおもしろかった。 トークは二つってのはかなり久しぶりだけど、どちらも20分だし、YAPC向けになにか特別ネタを用意したというわけではなく、普段やってることや考えていることを話しただけでだいぶがんばってない感じのトークです UV - libuv binding for Perl Perlハッカーは息をするようにCPANモジュールを書く というようなトークたちです。 今回は基的にホールで電源ある席を陣取り、コード書きつつトークを見る、というスタイルで参加。 Padre の話は聞けなかったんだけど、Adam Kennedy さんはなんというか堂々としていて自信に満ちていてかっこよかった。あう言う大人になりたい。 Cocoa ネイティブ対応はなんか気が向いたら見てみようかなーって言う感じ。 Ingy はなんかすごいおじ

    mattn
    mattn 2012/10/01
    あと、antipop さんは
  • Githubの各種イベント通知をPubSubHubbubで受け取るの巻 - unknownplace.org

    tl;dr - 通常のHookではなくPubSubHubbubのほうのHookを使えばGithubのすべてのイベントをひとつのWebHookで受け取ることができる。 Github の WebHook ではレポジトリの更新しか受け取れず、issue とかも受け取れたら便利なのになーと思いつつ API ドキュメントを見てみると Hook を API から登録したりすることができるようになっていた。 だがこれは所詮は Web から登録できる Hook をいじるもので、このリストにあるものしか登録できない。 また、それぞれの Hook について登録できるイベントはリストで定義されている物に制限されているようで、たとえば WebHook だと push イベントしか設定することはできないみたい。(API 経由でも設定できなかった) 一方、それとは別に用意されている PubSubHubbub の Ho

    mattn
    mattn 2012/08/08
    かっこいい。あとで使う。
  • Basic認証対応のMac用Gyazoクライアントを作った - unknownplace.org

    今頃なにを言っているのかという感じだが、Basic認証ごしにGyazoクローンに画像アップロードしたいという要求があったので、ちょろっと書いてみた。 https://github.com/typester/Gyazo-Mac Downloads からバイナリも落とせるようにしておいた。 初回起動、もしくはOption押しながらの起動で設定画面が出るので、適当に情報を入力して閉じたら、あとは普通のGyazoクライアントと同じように使える。 誰かいかしたアイコンつくってください。

    mattn
    mattn 2012/06/22
    「誰かイカのアイコンつくってください。」
  • CoffeeScript - unknownplace.org

    なぜ CoffeeScript がダメか - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech 僕の考えでは JavaScript ネイティブでない(けれど非同期プログラミングやネットワークの知識はある)人が、Node.js を使ってネットワークアプリケーションを書くという用途では結構使えると思う。 デバッグしづらいという点も Node と組み合わせる前提で考えれば coffee コマンドで直接実行すればいい話である。 また僕自身も小さなネットワークアプリケーションは最近は CoffeeScript で書いてて、fujiwara 氏などにメンテしてもらっているけれど、やはり彼も僕と同じようなスキル(JavaScriptネイティブでない)だから、そういう人が見て大体なんとなく理解できるものになってると感じる。 これがもし、AnyEvent で書いたコードだったらそ

    mattn
    mattn 2012/04/03
  • libuv の Perl バインディング - unknownplace.org

    気分転換プロジェクトとして、libuvのPerlバインディングを書いている。 typester/p5-UV - GitHub 現状、timerとtcp周りを一通り実装したところ。 実装は愚直にlibuvの関数とperlの関数を1:1に(uv_tcp_init(...)をUV::tcp_init(...)というような形で)マッピングしている。 この実装はlow level APIと位置づけ、その上に使いやすい高レベルなインタフェースをPerl上で用意したいつもり。 このlow level APIをつかったTCP echo serverはこんな感じになる: use strict; use warnings; use UV; my $server = UV::tcp_init(); UV::tcp_bind($server, '0.0.0.0', 3000) && die 'bind error

    mattn
    mattn 2011/12/01
  • libuv を iOS 対応した件 - unknownplace.org

    だいぶ前から iPhone アプリ作成でネットワーク系の機能を作るときには libev を愛用してるのだが、今日 node をいじっていたら libuv がなかなかよさそうに感じた。 libuv は libev が Windows で動かないからっていう理由で始まったプロジェクトだとおもうけど、Linux などの環境においても libev をラップしつつ、より便利な機能が追加されていていわば C でネットワークプログラミングするためのフレームワークといえるくらいになってる、みたい。(まだ詳しく見たわけじゃないけど) libev は基的に io 監視と timer のみで、socket の生成などは基的に自分で syscall 呼んでつくる必要があるけど、libuv は uv_tcp_* とか uv_udp_* といったAPI郡をもってて便利そう。 あと、非同期 DNS ルックアップがサ

    mattn
    mattn 2011/11/10
  • node.js を iPhone アプリから動かす - unknownplace.org

    結論から言うと、 jailbreak してないと動きません。詳細はこの辺: Issue 1312 - v8 - It's time to get iOS supported! - V8 JavaScript Engine - Google Project Hosting というわけでターゲットがデベロッパー用に絞られてしまいますがやってみましょう! Node ダウンロード 今回はリリースされたばかりの 0.6.0 を使いました。 http://nodejs.org/#download からダウンロードして展開しましょう libuv にパッチを当てる libev はなにもしないでもそのまま iOS で動きますが、 libuv はそうではないようです。 $ cd deps/uv $ wget --no-check-certificate https://raw.github.com/gist/

    mattn
    mattn 2011/11/10
  • 最近の活動その1 Reengo - unknownplace.org

    気づいたら3ヶ月も更新途絶えてましたが、その間ずっとiPhoneアプリを開発してました。 今年一番時間をかけ、いま現在もつきっきりで開発しているのが Reengo というアプリ。 いわゆる VoIP アプリケーションですが、Facebookアカウント連動で友達がアプリさえインストールしていればすぐに通話できるというのが特徴です。 この辺の投稿なんかはこれの伏線だったわけです。 クライアント実装は通信周りのロジックは C で書いていて、この部分は近日リリース予定の Android 版と共有して使いまわしてます。 サーバー実装は Perl と Node を適材適所使い分けております。Node の使用用途としてはいままで Perl の AnyEvent を使ってやっていた部分を Node に置き換えたというイメージで、個人的にはこれはなかなかいい選択肢なんじゃないかなーとおもってます。 技術的な

    mattn
    mattn 2011/06/16
  • node.js C/C++ addons 入門 - unknownplace.org

    node.js のドキュメントを見ていたら C/C++ で簡単に拡張が書けそうだったので試してみた。 addons - Node.js Manual & Documentation ドキュメントに載っている hello.cc をみてみると: #include <v8.h> using namespace v8; extern "C" void init (Handle<Object> target) { HandleScope scope; target->Set(String::New("hello"), String::New("world")); } この extern "C" void init (Handle<Object> target) というやつが、jsで require("hello") したときに呼ばれる感じらしい。この関数だけは必ず実装する必要がある。 この中の Ha

    mattn
    mattn 2011/02/18
    おもしろそう。なんかおれ waf waf してきた。
  • MacBook Air セットアップメモ - unknownplace.org

    11インチのやつ、買いましたよ。よくあるセットアップメモを残す。 SSDの容量が心許ないので、バックアップからの復元はしないで新規で設定した。 OS 再インストール まずやっぱ最初はこれ。目的は大文字小文字を区別するファイルシステムでパーティションを切りなおすということのみ。 デフォルトのファイルシステムではWindowsなどとおなじように大文字小文字を区別しない。そういう環境ではたとえば #include <STDIO.h> とか言うコードも通ってしまう。そういう気がつかないうちに仕込まれる各種トラブルの種は気持ち悪いよね。 注意点としてはAdobe製のソフトはそういうトラブルの種を抱えたコーディングをされているらしいものが多いようで、このファイルシステムにすると動作しないものが結構あるらしい。たとえばPhotoshopは最新版でもうごかないみたい。 (Lightroomは大丈夫) ソフ

    mattn
    mattn 2011/01/13
    はてなのキャンペーンが当たるはずなので、あとでここ見る
  • 2009/07/13 - memo - unknownplace.org

    AnyEvent はその名の通りさまざまなイベントインタフェースに対応していて、その中に irssi が使用している Glib も含まれているため、irssiのプラグインの中で普通に AnyEvent を使用することができます。 キーワード反応を im.kayac.com で自分の IM に通知する higlith2im.pl プラグインを AnyEvent を使用するように書き換えたのが以下です。 use strict; use warnings; use Glib; use Irssi; use AnyEvent::HTTP; use HTTP::Request::Common; our $VERSION = '0.1'; our %IRSSI = ( name => 'hilight2im', description => 'notify hilight message to IM

    mattn
    mattn 2009/07/14
    おー。欲しい!