タグ

ブックマーク / mattn.kaoriya.net (18)

  • Big Sky :: Windows ユーザは cmd.exe で生きるべき。

    [D] Windowsはターミナルがダメだから使えないってのは過去の話? 基的にはいい感じに見えますが、いくつか問題は発覚してます。 http://blog.drikin.com/2015/01/windows-2.html 僕は Cygwin よりも msys2 が好きです 理由は最後の方に書きます。 cygwin は windows 上に完全な POSIX を提供するのが目的であって、msys2 は native な windows アプリケーションをビルドするのが目的なのでゴールが違うのよね。そして僕は全て cygwin で染められるのが好きじゃ無い。それだけの話です。 — mattn (@mattn_jp) April 10, 2016 もちろん msys2 を POSIX 環境としても使いますが、一番の目的は cmd.exe から Windows ネイティブなアプリケーションを

    Big Sky :: Windows ユーザは cmd.exe で生きるべき。
  • Big Sky :: clib の使い勝手にマジ感動した

    C言語でアプリケーションを書くのは他の言語と比べて少し気合が必要ですよね。例えば HTTPからデータを取得する 取得したデータを json パースする 結果の一部を色付きで表示する こんな場合、C言語プログラマは 「HTTP か、じゃぁcurlかな」 「JSON か、parson かな」 「色表示か...エスケープシーケンスでもいいけどWindowsがなー...」 といった事を考え、そこから curl や parson といった資材の調達を始める事になります。途中で新しい機能を追加したくなり、それを外部ライブラリに頼る場合だとその都度資材を調達する必要があり、思考を停止しなければなりません。 この辺は rubyperl、nodejs、golang 等の様に、ちょっとした手間だけで済ませたい物です。 またC言語の場合、ヘッダファイルはシステムの include フォルダに提供元が期待す

    Big Sky :: clib の使い勝手にマジ感動した
    tarchan
    tarchan 2014/07/01
    >Package manager for the C programming language. https://github.com/clibs/clib
  • Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。

    最近どのブログでも node.js ばかりでもう飽き飽きしてる皆さんこんばんわ。 node.js 面白いですよね!ェ node.js ってアプリケーションを作る側(つまりライブラリを使う側)からすると、Web周りの便利なライブラリが既に色々あって、そのライブラリが一体どうやって動いてるのか気にすることってあんまり無いかと思います。 pure javascriptな物ならばコードを読むのは簡単です。ただしやれる事に限りがあります。node.js はGoogle製のJavaScript Engineであるv8をベースに作られているのですが、このv8はアプリケーションに組み込むのに適した構成になっていて、関数テンプレートやインスタンス、プロトタイプという各機能がC++のクラステンプレートで上手く表現出来ているライブラリです。Spidermonkeyも確かに扱うのは簡単なのですが、僕からすると若干

    Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。
  • Big Sky

    はじめに 11/18、東京秋葉原のアキバプラザで、4年ぶりとなる VimConf、「VimConf 2023 Tiny」が開催されました。 今回、Kaoriya さんから「SoftwareDesign で執筆した内容で基調講演をして欲しい」とお願いされた際に、即答で OK をしましたが実は少し不安がありました。SoftwareDesign を事前に購入した人に同じ話を聞かせてしまうのは残念すぎないかという気持ちです。どうしようかとしばらく検討しましたが、SoftwareDesign の内容からスピンオフした内容にする事にしました。 規模が少し小さいとは言え、せっかく楽しみにきて頂いてる皆さんに、残念に思われないようにしたい、少しでも「来て良かった」と思って貰えるイベントにしたと思い、テーマは変えないまま色々な Bram Moolenaar 氏のエピソードを盛り込んだつもりです。 11/18

    Big Sky
  • Big Sky :: 非同期UI

    最近、GoGTKバインディングを作ってるのだけど、先日ようやく簡易twitterクライアントを作れるまでに至ったのだが、そのtwitterクライアントの「タイムライン更新」ボタンを押した時に画面をブロックさせずに画面を更新する方法を考えてた。 Perl-GTKならばCoroを使ってこうするだろうか。 use strict; use warnings; use Gtk2 '-init', '-threads-init'; use AnyEvent; use Coro; use Coro::Timer; my $window = Gtk2::Window->new('toplevel'); $window->signal_connect( destroy => sub { exit; } ); my $vbox = Gtk2::VBox->new; my $button = Gtk2::Bu

    Big Sky :: 非同期UI
    tarchan
    tarchan 2009/12/31
  • Big Sky :: python版pitがWindowsで動かない問題へのパッチを書いた

    a2cさんが作ったtwitter client「tw2」を動かして見ようと思ったのですが、エラーも出るしpitが起動するエディタに何もテンプレートが出力されないのでコードを追ってみた。 調べた結果tw2ではなくpit側に原因がある事が分かった。 Bug #325139 in web.py: “web.profiler does not work on Windowstempfile.NamedTemporaryFile() to generate a temp file. On Windows the file cannot be opened a second time. Using tempfile.mkstemp() instead works but you lose the guaranteed cleanup of the temp file. https://bugs.e

    Big Sky :: python版pitがWindowsで動かない問題へのパッチを書いた
  • Big Sky :: javascriptで動くtwitter streamクライアントを作るならばmultipart/mixedを使うべき

    twitter stream APIとは、twitterのステータス更新に対してキーワードでtrackしたり、あるグループ内に属するステータス更新をフィルタしたり出来るAPIなのだけど、実際にはchunkedなストリームが流れて来ているのであって、これを使ったWebアプリを作る際にはlong pollを使うのが良い。ただしクライアントサイドでjavascriptを処理する際に サーバサイドでステータス更新をFIFOに溜め込む クライアントからリクエストをブロック(long poll)しFIFOからステータスを送出する クライアントサイドでlong pollを行い画面を更新する 再度サーバへリクエストを投げる を繰り返すのであれば、せっかくストリームなのにアプリサーバとの接続を切ってしまう事になる。出来ればクライアントからWebアプリもストリーミングとしたい。しかしながらサーバからのステータ

    Big Sky :: javascriptで動くtwitter streamクライアントを作るならばmultipart/mixedを使うべき
    tarchan
    tarchan 2009/10/13
    「XMLHttpRequestはmultipart/mixedなレスポンスを受け取る事が出来る。」
  • Big Sky :: mod_psgiをWindowsポーティングした。

    spiritlooseさんがPSGIなapacheモジュールを書いてくれたのでWindowsにポーティングしてみた。 mod_psgi を実装してみた - spiritlooseのはてなダイアリー PSGI を実装したApache2モジュール。 http://d.hatena.ne.jp/spiritloose/20091002/1254467284 ちょっと気持ち悪いpatchになるけど、一応動いている。 巷にあるライブラリなどではWindowsポーティングされた時にUN*Xライクな型を自前で定義している事があるんだけど、Apacheモジュールのapr.hなんかや、Perlなんかでuid_t/gid_t/pid_tなんかが定義されている事が多い。 apr.h typedef int uid_t; perl.h typedef long uid_t; もちろんこのヘッダを同時に読み込むとエ

    Big Sky :: mod_psgiをWindowsポーティングした。
  • Big Sky :: ポストをpubsubhubbubで通知するblosxomプラグイン書いた。

    テストも兼ねて... 追記 これだけだとなんなので...。 RSSもしくはAtomにrel="hub" href="http://pubsubhubbub.appspot.com"のlink要素を追加し、このpluginのhub_urlにRSSもしくはAtomのURLを指定すれば動きます。

    Big Sky :: ポストをpubsubhubbubで通知するblosxomプラグイン書いた。
  • Big Sky :: Re: Emacs の人と Vim の人のキーストロークの数え方の違い。

    別にEditor's Warを起こそうって訳では無いです。 だたvimが弱々しく読める文章だったので補足させて頂きたい。 Emacs の人と Vim の人のキーストロークの数え方の違い。 - 日々、とんは語る。 Ctr キーは1ストロークには入りません! 普段 Emacs を使うとき、どう考えても「修飾キー + 文字キーの組み合わせは一発操作」という感覚でしかありません。 「Ctr + Alt + s」とか、修飾キーが複数であっても、同時押しであれば、僕の中では1ストロークです。 http://d.hatena.ne.jp/tomoya/20090715/1247590638 慣れればそうかもしれませんが、モディファイアキーを使うには両手、もしくは指が2要ります。片手で済むならばもう片方の手で鼻をほじる事だって出来るんです。なんてすばらしい。 Emacs の人と Vim の人のキーストロ

    Big Sky :: Re: Emacs の人と Vim の人のキーストロークの数え方の違い。
  • Big Sky :: ReverseHttpで誰よりも速く「はてなブックマーク」に反応するツール書いた。

    ReverseHttp面白いですね。 ReverseHttp Tunnel HTTP over HTTP, in a structured, controllable, securable way. Let programs claim part of URL space, and serve HTTP, all by using an ordinary HTTP client library. http://www.reversehttp.net/ ただ勘違いされやすいのが「何がReverseなの」という部分。通常ブラウザからリクエストが送信され、それに対する応答がサーバから返されます。ReverseHttpはサーバで何かアクションが起きた場合に、ブラウザ側がその通知を受信する...なんて事が出来るプロトコルです。仕組みはcometというlong pollに似た仕組みで、サイトのdemo

    Big Sky :: ReverseHttpで誰よりも速く「はてなブックマーク」に反応するツール書いた。
  • Big Sky :: いつの間にかFreenodeにWebChat機能が付いていた。

    IRCのWebChatと言えば、Mibbit.comが有名ですが、Freenode自身がqwebircという、TwistedとMootoolsを使ったIRCチャットサーバアプリを持っている事に気づきました。 freenode Web IRC (qwebirc) Connect to freenode IRC http://webchat.freenode.net/ Webページへの埋め込みもウィザード付きで簡単です。チャネル#Vim-users.jpであればこんな感じの埋め込みでいけます。 簡単ですなー。

    Big Sky :: いつの間にかFreenodeにWebChat機能が付いていた。
  • Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!

    kazuhoさんがやってくれました。 ずいぶん前からjsonをC++でパース(SAXじゃなくてDOM)するのに小さいライブラリないかなーと思ってました。個人的にはjson-cというのを使ってたのですが、幾らか気に入らない所があったりビルドが少し手間だったりしていました。STLしか使わなくてvectorとかmapで表現されるツリー構造な物が欲しいなぁって思ってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、githubにあるjsonxxとかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から格的に書き始めてついさっき出来上がりました。速いw 名前はpicojson とても小さく、実装コードだと300数十ステップ程です。しかもヘッダファイルだけなので管理が楽です。 試しにwassrのpubl

    Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!
  • Big Sky :: 無料ではてなブックマークとdeliciousを同期する方法

    はてなブックマークをdeliciousに同期する場合、どうやってますか? 同時ポストツール? Plagger? まさか、手作業? 同時ポストツールの場合、確かにその場で同時にポスト出来て便利ですね。でも携帯ではてなブックマークから登録した場合、同期されませんよね。 Plaggerだと、cronで動き続けるPCが要りますよね。家に24時間稼動可能なPC無いよ!なんて人いるかもしれません。 手作業?問題外! 先日、Google App Engineにcronが導入されました。 Google App Engine Blog: Seriously this time, the new language on App Engine: JavaCron support: schedule tasks like report generation or DB clean-up at an inter

    Big Sky :: 無料ではてなブックマークとdeliciousを同期する方法
  • Big Sky :: Apacheでセキュアなアクセス制限を提供できるモジュール mod_access_token を試した。

    livedoor 製品で mod_access_token というのが出たみたいです。 livedoor ラボ「EDGE」 開発日誌 : 「mod_access_token」の配布開始と「EDGE src」公開のお知らせ - livedoor Blog(ブログ) ウェブサイト上の画像やファイルに有効期限を指定して、ユーザーに一時的なダウンロードを許可する、ライブドアで独自開発したApacheモジュールです。このモジュールをApache Webサーバに組み込むことにより、画像やファイルをウェブ上で公開するときに有効期限をつけることができるようになり、Webアプリケーションと組み合わせる事で公開範囲の制御を行なう事が可能になります。 http://blog.livedoor.jp/edge_labs/archives/717201.html modaccesstoken - Google Co

    Big Sky :: Apacheでセキュアなアクセス制限を提供できるモジュール mod_access_token を試した。
  • Big Sky :: scaffoldは悪か

    scaffoldで客寄せするのも悪くない...私はそうは思うんです。 scaffoldがあるから何秒でwebアプリケーションができました風の自慢はやめた方がいいと思う - val it : α → α = fun この観点からいうと、scaffoldというのはつまりHQ9+である。 http://www.jmuk.org/diary/2008/12/20/1 確かに釣りな記事を書いた事には間違いないです。が、私が思うscaffoldの認識と少し違うかなと思ったので... scaffoldはそもそも足場という意味の単語で、アプリケーションフレームワーク上では何かのベースとなる部品を提供する機能を一般的に指しているのだと思う。確かに「××分で出来る」ってのはbuzzword的に広まっており、「rails 分で出来る」なんてググると、わんさか出てきたりします。それだけインパクトがあり、需要があっ

    Big Sky :: scaffoldは悪か
  • Big Sky :: Google Chromeが使っているjavascript v8エンジンにTwitterにアクセス出来るクラスを作ってポストする。

    « vimからtumblrにポスト出来るvimscript「tumblr.vim」で日語がポスト出来る様にしてみた。 | Main | javascript v8エンジンでv8::Objectに内部的な値を格納する方法が分かった。 » v8エンジン盛り上がってますね。 さて、今日はv8エンジンのshell.ccを弄って、シェル内部にTwitterオブジェクトを作ってみました。とはいっても、仕組みは簡単。FunctionTemplateから得たPrototypeTemplateにメソッドを追加、さらにInstanceTemplateにプロパティusernameとpasswordを足しているだけです。 v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(); v8::Local<v8::Template> p = t->

    Big Sky :: Google Chromeが使っているjavascript v8エンジンにTwitterにアクセス出来るクラスを作ってポストする。
  • Big Sky :: Publish::MixiDiary書いた

    kuさんが面白い物見つけてくれました。 mixi for iPhoneから発掘されたmixi日記投稿用API « ku iPhoneからぜんぜん日記を書く手段がなかったらmixiから、mixi for iPhoneという日記を書いたりするiPhoneアプリが公開されました! 新しいアプリに新しいAPI、日記が投稿できるアプリなら日記投稿用のAPIというわけでmixiのあしあとAPI発掘と同じように掘り起こして見つけました。 ほかのAPIと同様、認証はWSSEでatomPubで日記を書くことができるようになっていました。エンドポイントはhttp://mixi.jp/atom/diary/member_id=mixiIDです。 http://ido.nu/kuma/2008/07/30/digging-mixi-for-iphone-application-and-new-api-for-po

    Big Sky :: Publish::MixiDiary書いた
  • 1