タグ

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

  • Big Sky :: Windowsへの移植も視野にいれたプログラムを書くなら読んでおいて欲しい事

    絶対パスの先頭に/が来る事を期待してはいけない しかしながら絶対パスの先頭にドライブレターが来る事を期待してはいけない UNCパスのホスト名やシェア名はディレクトリではないのでファイルシステムAPIは使えない事を意識しておく unixに比べパス内に空白文字が入る可能性が高い事を意識しておく ホームディレクトリを意味するパスの先頭チルダは自前で展開する必要があり、またパスの途中にチルダが混じる事は日常的にある ソケットディスクリプタに対してもread/writeで送受信できる事を期待してはいけない パイプでない標準入力のselectはやっても意味がない ディレクトリ内にあるファイルを開き、ハンドルを保持したままディレクトリを消せるのは当たり前だと思わない パスのセパレータが/¥である事を期待してANSI APIを使ってはいけない Cランタイム(POSIX互換API)とWindows API

    Big Sky :: Windowsへの移植も視野にいれたプログラムを書くなら読んでおいて欲しい事
    hiroyukim
    hiroyukim 2012/05/07
    歴戦の方がこういうの書いてくれるのありがたい
  • Big Sky :: mruby(Lightweight Ruby) をプログラムに組み込んでみる

    たぶんこれからガチャガチャ変わるので参考にはならない。まぁネタなので。あと殆ど tools/mruby の下にある物と同じ。 またAPIとか整理されてないので、コンパイルにはソースディレクトリを参照に含めたりする必要がある。 #include <mruby.h> #include <mruby/proc.h> #include <compile.h> int main() { int n; mrb_state* mrb; struct mrb_parser_state* st; char* code = "[1,2,3].each {|x| " \ "  p x             " \ "}                 "; mrb = mrb_open(); st = mrb_parse_string(mrb, code); n = mrb_generate_code(mrb

    Big Sky :: mruby(Lightweight Ruby) をプログラムに組み込んでみる
    hiroyukim
    hiroyukim 2012/04/20
  • Big Sky :: Vimやめました。

    最近、勢いでVimの記事を書いていて、自分の中で「俺はVimじゃないと駄目なんだ」そう言い聞かせる様にしていた自分に嫌気がさしていました。 Vimを使っていても、気付かぬうちに僕は小指をCTRLキーに当てる様になっていて僕の体はVimを欲していないんじゃないかと思う様になりました。 Vimテクニックバイブルの略歴では「一生Vimを使うと決めた」と書いたけど、自分に嘘は付けなかった。 いままで楽しかったよ。ありがとう。Vim 追記 新しいエディタ、決まりました。

    Big Sky :: Vimやめました。
    hiroyukim
    hiroyukim 2012/04/01
  • 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」が凄い!
    hiroyukim
    hiroyukim 2012/03/13
  • Big Sky :: Go言語でuWSGIリスナ書いた。

    最近はクラウドサーバ等、割と色んな所で見かける様になったuWSGIですが... uWSGI uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. http://projects.unbit.it/uwsgi/ Perlだとhirataraさんが書いた記事や Hokkaido.pmでuWSGIについてLTした - a geek born in Tomakomai uWSGI はデフォルトではhttpではなくuwsgiプロトコルを喋るので、uwsgiプロトコルを喋れるフロントエンドを立ち上げます... http://d.hatena.ne.jp/hiratara/20110718/1310950381 Plack::App::uWSG

    Big Sky :: Go言語でuWSGIリスナ書いた。
    hiroyukim
    hiroyukim 2012/02/17
  • Big Sky :: VimでMessagePack/RPC

    Vimが無いと夜も安心して眠れないVimキチガイの皆さんこんにちわ。 Twitter そういえば、VimもMessagePackで通信できると面白いのではないか。 https://twitter.com/#!/ShougoMatsu/statuses/168691297601863681 こうですかわかりません。 mattn/msgpack-vim - GitHub MessagePack implements for vim https://github.com/mattn/msgpack-vim Vim scriptは型が豊富ではないので、可逆圧縮ではありませんが簡単な物ならば動きます。 # -*- coding: utf-8 -*- require 'msgpack/rpc' class MyHandler def add(x,y) x+y end end svr = Message

    Big Sky :: VimでMessagePack/RPC
    hiroyukim
    hiroyukim 2012/02/14
  • Big Sky :: VimmerなPerl開発環境

    えーっと、IDE使ってません。ごめんなさい。 PerlをIDEで書いてる人、どれくらいいるんだろう。何使ってるんだろ。 私はLinuxでもWindowsでもVimを使ってます。Perlってサーバで使われる事が多いし、サーバだとsshで入る事が多いだろうし、まぁXの転送やVNCやそれっぽいのでグラフィカルに操作しても良いけど、正直PerlのドキュメントもテキストベースだしPerlで入力補完出来るグラフィカルエディタもまず無いと思ってる。 で、私がVim上で使ってるPerlの開発を「200倍便利にするスクリプト」を紹介。 perldoc.vim perldocはPerlのオンラインマニュアルなんだけど、これを一々ターミナルに戻ったりして引いてると時間のロス。screenで分割して開いてもいいんだけどscreenの画面間移動よりもVim内でのウィンドウ間移動の方が操作感が統一出来てて良い。 そこ

    Big Sky :: VimmerなPerl開発環境
    hiroyukim
    hiroyukim 2012/01/19
  • Big Sky :: trie_tree書いてみた。

    trieなんたらが話題になってたのでなんとなく書いてみた。 ベンチとかはやってない。 404 Blog Not Found:Algorithm - 連想配列の実装としてのハッシュはオワコン? そのデータ構造は、君の魂を差し出すに足るものかい? 連想配列( Associative array )がコレクション( Collection )、すなわち数多のデータ構造をまとめるデータ構造としての覇... http://blog.livedoor.jp/dankogai/archives/51765855.html #include <stdio.h> #include <stdlib.h> typedef struct _trie { char c; unsigned int n; struct _trie** next; void* value; } trie; trie* trie_new()

    Big Sky :: trie_tree書いてみた。
    hiroyukim
    hiroyukim 2012/01/18
  • Big Sky :: Vimと包丁

    僕がサクラエディタからVimに乗り換えるまで - ITは芸術だ 僕がサクラエディタからVimに乗り換えるまで エディタ はじめに 恐怖のエディタ、Vim。 僕はこの間までずっとサクラエディタを愛用していましたが、最近 Vim を使うようになりました。 ええ、Vim... http://d.hatena.ne.jp/JunichiIto/20120101/1325420213 Vimテクニックバイブルの著者略歴でも書いたけど、僕は「生涯Vimを使う」と決めた。僕のブログを読んでくれている人なら、だいたいの人は僕がVimを使っているのは知ってると思うけど、今日は「なぜ僕がVimを選んでいるのか」を書こうと思う。 こんな僕だけど、Vim以外が使えない訳じゃない。PCVim以外のテキストエディタが入ってない訳でもない。Emacsも一応は使える。もちろんEmacsもxyzzyもsakuraエディタ

    Big Sky :: Vimと包丁
    hiroyukim
    hiroyukim 2012/01/05
  • Big Sky :: めんどうな作業がわずか数十秒に!新人プログラマが知らないと一生後悔するVimを使ったHTML生成

    « ExecuteExcel4Macro で CALL ワークシート関数使ってShellExecute呼んでそれでVimScript操作してHTMLを数秒で生成するの作った。 | Main | サラリーマンの為のメールが2倍速く書ける(気がする)vim補完書いた » こういう作業ってプログラマなら日常茶飯事で、やり方しらない新人プログラマはいつまでたっても新人なのだけど... めんどうな作業がわずか数秒に!新人デザイナーが 知らないと一生後悔するExcelを使ったHTML生成 | Webロケッツマガジン お客さんから送られてきた、Excelデータからせっせとリストや表のHTMLをコーディングしているあなた!そろそろ手がが疲れてきていませんか? そんなあなたは、この記事で紹介するExcelテクニックをぜひ覚えてください。 面倒な作業が、わずか数秒で終わります! http://webrocke

    Big Sky :: めんどうな作業がわずか数十秒に!新人プログラマが知らないと一生後悔するVimを使ったHTML生成
    hiroyukim
    hiroyukim 2011/12/20
  • Big Sky :: サラリーマンの為のメールが2倍速く書ける(気がする)vim補完書いた

    そんな餌に俺様が釣られクマー... @kaoriya @mattn_jp あきらかにまっつんさんがvim用の記事を書く流れwww https://twitter.com/#!/kaoriya/statuses/147498428040085504 サラリーマンの為のメールが2倍速く書ける(気がする)辞書 : ライブドア社長ブログ お疲れ様です。こちら弊社代表取締役社長、出澤のブログでございますが、出澤の執筆ペースが芳しくないので、日も社員のスエヒロが「会社」や「社長」について代打で書かせて頂きたいと思います。流し打ちの気持ち... http://blog.idezawa.info/archives/51725271.html Vimのオムニ補完は最高! :set omnifunc=salaryman#Complete こう設定すると この状態からCTRL-X CTRL-Oをタイプすると.

    Big Sky :: サラリーマンの為のメールが2倍速く書ける(気がする)vim補完書いた
    hiroyukim
    hiroyukim 2011/12/16
    日本語禁則処理も入ってるので多い日も安心!
  • Big Sky :: unite-nyancat

    unite-shimapan - C++ゲームプログラミング http://d.hatena.ne.jp/osyo-manga/20111213/1323771066 乗るしかない!このビッグウェーブに!!! mattn/unite-nyancat - GitHub https://github.com/mattn/unite-nyancat 2回目の実行でエラーが出たり、「Source:」までもがシンタックスに含まれてしまっているのは仕様です。

    Big Sky :: unite-nyancat
    hiroyukim
    hiroyukim 2011/12/13
  • Big Sky

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

    Big Sky
    hiroyukim
    hiroyukim 2011/12/07
  • Big Sky :: zencoding-vimがビジュアル選択に強くなりました。

    例えば Indented line full of <b>tags</b> an <em>text</em> こんなhtmlを <p> Indented line full of <b>tags</b> an <em>text</em> </p> こうしたい場合は V<c-y>,p<cr> とタイプして下さい。もし <p>Indented line full of <b>tags</b> an <em>text</em></p> こうしたい場合は ^v$<c-y>,p<cr> とタイプして下さい。もし <p>    Indented line full of <b>tags</b> an <em>text</em></p> こうしたい場合は 0v$<c-y>,p<cr> とタイプして下さい。また複数行のテキストの一部分 そんな事より1よ、ちょいと聞いてくれよ。スレとあんま関係ないけどさ。

    Big Sky :: zencoding-vimがビジュアル選択に強くなりました。
    hiroyukim
    hiroyukim 2011/12/07
  • Big Sky :: C++のユーザ定義リテラルでおっぱい判定

    この記事は Oppai Advent Calendar 2011 の7日目の記事です。 C++11のユーザ定義リテラルを使うと、ユーザ指定のサフィックスに従って型変換や任意の処理を行う事が出来ます。 今日はこれを使って、おっぱいを判定するコードを書いてみました。 #include <iostream> #include <string> #define X(x) #x ")"_oppai #define _(x) "(" #x ")(" X char const* operator "" _oppai(char const* str, std::size_t len) { std::string x(str, len); return x == "(・)(・)" ? "ハリのあるおっぱい" : x == "(.)(.)"   ? "垂れ気味のおっぱい" : x == "(◎)(◎)" ? 

    Big Sky :: C++のユーザ定義リテラルでおっぱい判定
    hiroyukim
    hiroyukim 2011/12/07
  • Big Sky :: vimのステータスラインでハァハァするプラグイン書いた。

    今まで僕はvimのstatuslineに値を設定した事は無かったんだけど、githubに置いてある色んな人のvimrcを見てると結構多くの人がstatuslineを設定してて、これってもしかして便利なんじゃ...と思って設定してみた。ただ、なんか味気ないなーという気がしたので、ステータスラインで「ハァハァ」出来るプラグインを書いた。 mattn/hahhah-vim - GitHub ハァハァ statusline for vim https://github.com/mattn/hahhah-vim タイピングしたりカーソルを移動すると、ハァハァしてる顔がクルクル回ります。 これはすごい! さらに何かvim内でエラーが発生すると、しばらくの間「工エェ」なステータスラインになります。 斬新! ぜひお役立て下さい。

    Big Sky :: vimのステータスラインでハァハァするプラグイン書いた。
    hiroyukim
    hiroyukim 2011/11/25
    (´д`;)素晴らしい。。
  • Big Sky :: あなたはVim scriptを知らない

    この記事はsuginoy氏のブログ杉風呂2.0 - A Lifelog -の記事"あなたはJavaScriptを知らない"をパロったものです。suginoyさんの許可を得て公開します。原文は2011年11月17日にポストされました。私自身のVim scriptの学習は適当で、ネタ仕込みの指摘等はコメントを下さると助かります。 あなたはJavaScriptを知らない この記事はMichael Woloszynowicz氏のブログWeb 2.0 Development And Business Lessonsの記事"You Don’t Know JavaScript"を翻訳したものです。人の許可を得て公開します。原文は2011年4月16日にポストされました。私自身のJavaScriptの学習が浅く、誤訳の指摘等はコメントを下さると助かります。 http://d.hatena.ne.jp/su

    Big Sky :: あなたはVim scriptを知らない
    hiroyukim
    hiroyukim 2011/11/21
    ほとんどすべての開発でvimが無いと手が震えるという中毒症状であり、それがこの記事の意図するところだ。
  • Big Sky :: 日本語ページャlvをwindowsにポーティングした。

    WindowsをUNIXライクに使っておられる方も多いかと思います。僕もその一人で、僕はコマンドプロンプトを常に開きっぱなしの状態で作業します。 msysを使っても良いのですが、bashはbashで色々と問題もあり/c/Program\ Filesみたいなパスでは問題が起きたり、メールに貼り付けられているパスをコピペして動かないのは苦痛であったりもします。 なので常にコマンドプロンプト(cmd.exe)を使い、vimやlessというUNIX向けツールを使っています。 gitやmercurialでのdiff表示やlog表示の際、ページャは不可欠です。lessを使っているmsysgitでもある程度綺麗に表示されますが、マルチバイトでの検索が出来なかったり、nkf等といったフィルタを噛まさないと表示出来なかったりしました。 lessの場合は以前パッチを書いたlessを使えばコマンドプロンプトでも

    Big Sky :: 日本語ページャlvをwindowsにポーティングした。
    hiroyukim
    hiroyukim 2011/10/31
  • Big Sky :: 個々の作業はチームを作る事で効率を上げられる

    先日、vim-jpがオープンした訳だけど、これの真の意味はバラバラだったユーザや開発者を1ヶ所に集めるのが目的。まぁVim-users.jpもあって良いし、各々でやったらいいと思うけど僕が求めていたのは開発側。 vim-jpを作って良かったと思った。 githubのIssueトラッカーを使ってvim_devにパッチを放流するまでのワークフローが出来上がりつつある。 不具合報告 皆で再現確認 修正方法の提案そして議論 修正担当者をアサイン パッチを仮で書いて貼り付ける レビューしてもらって提出 突然、有識者がパッチ書いてvim_dev投げるとツメも甘かったりしますし、第一に新しい開発メンバが増えない。仕事でも同じだな。不具合が出たら修正者にすぐ直させるものいいんだけど、どう直すのかを予めレクチャーさせると不具合の認識が共有出来る。 後からそういう修正じゃなかったんだけど...って事がなくなる

    Big Sky :: 個々の作業はチームを作る事で効率を上げられる
    hiroyukim
    hiroyukim 2011/10/24
    情報が集約されたことにより可視化されて問題の認識が共有されたんですね。それはともかくかっこいい。なんかくわわりたいな。とりあえずvim scriptかvimのコード読むところから始めようかな。
  • Big Sky :: やったーJavaScriptの動くSQLiteできたよー

    ※ネタです ※UDFです 正誤表を書くのにしばらくこのをちょっと眺めてみたら、SQLiteのUDFって簡単に作れるんだなー、と思った && そういやV8ってライブラリとして簡単にリンクできるはずだな、と思い出した ので、ついカッとなって作った。 sqlite3udf-jseval - GitHub http://github.com/mattn/sqlite3udf-jseval UDFうんぬn ほとんど↑の、全然関係ないと思ってたけど、やっぱりSQLiteのUDFについて全然書いてなかった。しょうがないので軽く紹介しておくと UDFを追加する場合、SQLiteの再コンパイルは必要ない (しかるべき所に.soがおいてあればいい) UDFはこの辺読んどけばだいたい分かる。 例えば文字列っぽいものを返すmyfuncっていうUDFを作りたい場合 SQLITE_EXTENSION_INIT

    Big Sky :: やったーJavaScriptの動くSQLiteできたよー
    hiroyukim
    hiroyukim 2011/09/26