スプラトゥーンの Vim カラースキームつくった

スプラトゥーンとても流行ってますね.タイムラインをいつ見ても最低1人はプレイしている気がします. スプラトゥーンは(主に)ステージを自チームのポップな色で塗っていく陣取り型のTPSです. 僕はスプラトゥーンを購入してませんが,とても楽しそうなの…

How To Test Electron App On Travis CI

This is an English translation of my Japanese post on Qiita. I recently created Shiba, which is a rich markdown previewer. I wrote some tests for it. I could not find Electron app which was tested well so much and how to test Electron app …

Electron と Polymer と TypeScript でリッチなマークダウンプレビュアー Shiba つくった

結構前ですが,mattn さんが小さい markdown ライブプレビューアプリ mkup をつくっていて,そういえば僕も合う markdown ライブプレビューアプリが無いなぁと思っていたのを思い出したので,オレオレ markdown プレビューアプリ Shiba をつくってみました.…

インストールせずにカラースキームを試せる try-colorscheme.vim をつくりました

Vim

問題 Vim でカラースキームを試すときは主に以下の様な作業が必要になります. プラグインマネージャなどでカラースキームをインストールする カラースキームの名前を確認する :colorscheme コマンドでカラースキームを指定する コレジャナカッタ場合はカラ…

Make a Lisp で Lisp 処理系を学んでつくる (with Crystal)

インタプリタ式の言語処理系を書いたことが無かったので一度実装してみようと思って,この手のは Lisp が定番だということで,前々から気になっていた Make a Lisp (mal) に挑戦してみました. Make a Lisp (mal) とは Make a Lisp は色々な言語で mal とい…

Vim ではじめる Rust 1.0

Rust は 1.0.0beta が4月の頭にリリースされ,現在 1.0.0beta5 で 5/15 に 1.0.0 正式版がリリース予定です. リリース間近であるのと,C++ をやっていた人はとっつきやすいとかデザインが良いというウワサを聞いて少し試してみていて,Vim の環境も少し整え…

無名構造体を名前付き tuple として使う

C++

例えばユーザ名,Eメール,IDの3つの値を一気に返したいとき,C++ では std::tuple が使えます. #include <string> #include <tuple> using std::operator""s; auto get_user() { // std::tuple<std::string, std::string, int> return std::make_tuple("Linda"s, "foo@bar.com"s, 17); // name, email, id</std::string,></tuple></string>…

可変長のパラメータパックのまま扱うのがだるい時は tuple で扱うのどうだろう

C++

C++11 から入った可変長テンプレート引数,便利ですがパラメータパックの扱いがとっつきにくいです. 下記のように一旦 tuple で受ければその後は std::tuple のインターフェースで受けて自由にできるので 良いんじゃないかという気がする. template<class... Args> void d</class...>…

今年気になった C++ ライブラリとかフレームワークを紹介する記事

C++

この記事は C++ Advent Calendar 2014 の17日目の記事です.前日は @yutopp さんの Boost.Spirit.X3のご紹介 - C++ Advent Calendar 2014(16日目) でした. 最近 Boost.Spirit と LLVM で言語をちまちまと書いているので,Boost.Spirit と LLVM で言語つくる…

Software Design で「犬でも分かる!? Vim 導入&カスタマイズの超基本」という記事を書きました

Vim

発売は少し先ですが,12月18日発売予定の Software Design 2015年1月号で「犬でも分かる!? Vim 導入&カスタマイズの超基本」という記事を書きました. Software Design 2015年1月号 Software Design (ソフトウェア デザイン) 2015年 01月号 [雑誌]出版社/メ…

犬製 Vim プラグイン紹介3本立て

Vim

この記事は Vim Advent Calendar 2014 の8日目の記事です.昨日に引き続き犬アイコンがお送りします.昨日は daisuzu さんの vital-smtpを作った でした. 今回は今年つくったプラグインとか,過去につくったけれど紹介していなかったプラグインを3つ紹介し…

VimConf 2014 に参加(&発表)してきた

Vim

VimConf 2014 に参加してきた.忘れないうちに各発表の感想書いとこうと思う. 発表スライドはこちらに随時まとめられていくらしい. Identity of the Vim (@kaoriyaさん) 香り屋さんの基調講演的なポジションのエモい発表だった. Vim を発展させていく動き…

NeoVim の job control API メモ

次世代の Vim をコミュニティベースで開発していくプロジェクトとして発足した NeoVim について,あまりキャッチアップできていなかったので少し試してみたメモ. インストール make deps で依存しているライブラリのビルド cmake でビルド用 Makefile 生成 …

clever-f.vim 1.4 をリリースしました.

Vim

clever-f.vim は Vim の 1文字検索カーソル移動 f, F, t, T を拡張するプラグインです.Vim では f, F, t, T に加え,繰り返しのために , や ; も必要で,<Leader> などで潰されがちでしたが,clever-f.vim では f などが状態を持つことで , や ; を不要にし,Vim の</leader>…

momonga.vim #5 でコミットバッファ編集プラグイン committia.vim を完成させた

Vim

先週の土曜日に武蔵野プレイスで開催された Vim 関連のもくもく会イベント,momonga.vim #5 に参加してきました. 明日が momonga.vim #6 なのでギリギリ間に合ったと思います. コミットバッファ用プラグイン committia.vim つくった 今回は,以前 TokyoVim…

vim-go-impl つくった

impl という Go のコマンドラインツールがあります. レシーバとそのレシーバが実装するインターフェースを引数に渡すと,実装しないといけない関数のひな形を自動生成してくれます. 便利そうだったので,とりあえず Vim から使う用に vim-go-impl というプ…

C++ の web フレームワーク crow のコンパイル時処理

C++

最近,C++ の crow という薄いウェブフレームワークが出ました.特に要件は書いていないですが,C++11 以上が必須のモダンな設計で Python の Flask のような雰囲気で書けるのが売りらしいです. ipkn/crow CROW_ROUTE(app,"/hello/<int>") ([](int count){ if (c</int>…

2048 の AI を読んでみた

以前第一回2048AIコンテスト 結果報告という記事を見かけて,興味がわいたので 2048 の AI について調べてみました. 2048 は 4x4 のパズルゲームで,ルールは実際にやってもらったほうが分かりやすいぐらい簡単なものですが,テンポが良くて結構ハマりまし…

boost::variant の visitor にラムダ式を使う

boost::variant は複数の方を入れられる型安全な union のようなコンテナで,次のように visitor パターンを使ってアクセスできます. Boost逆引きリファレンス > ユーザー定義型を扱える型安全な共用体 ですが,ちょっとした要素アクセスのために毎度 visit…

yokohama.vim #5 でした

Vim

4/6 に @gu4 さん 主催の yokohama.vim #5 に参加してきた. 何も考えず速攻で登録して身内感を出してしまったので人集まるかなぁと思っていたけれど,thinca さんの呼びかけにより参加者が増えてほっとした.thinca さんの人望(もとい魚望?)さすがでした…

Uniform initialization で困るパターン(std::string)

C++

C++11 で,() でなく {} で初期化する統一初期化(Uniform initialization)が入った.普段はこれを使っているけれど,この間これで std::string でハマったのでメモ. std::string のコンストラクタの中には,char 型の値を一定回数繰り返すコンストラクタ…

僕は小数点数のパースがやりたかった

Boost.Spirit.Qi で定数リテラルのパースを行う処理を書くときに,小数点数と整数のパースでちょっと詰まった. qi::double_ | qi::int_ とすると 42 などの整数値も double 型でパースされてしまうし, qi::int_ | qi::double_ とすると,3.14 などの小数点…

'auto' 宣言の型を調べるプラグイン作った powered by momonga.vim #2.2

2/1 から 2/2 にかけて開催された @supermomonga さん主催の momonga.vim 2.2 に参加しました. 少人数でぐだぐだ雑談しながら作業する感じの会です. clang-type-inspector.vim つくった C++11 から auto を指定することで変数宣言の型を推論させることがで…

ジェネリックラムダをもっと手軽に書くためのマクロ

C++

ラムダのキャプチャは無くてはならないものだけれど,たいていの場合は [&] とかで済んでしまう.また,引数の型もジェネリックラムダの登場で,だいたい auto で済んでしまうようになったので,こんな感じで書けると良いなぁと思うようになった. std::vect…

C++14 の変数テンプレートで ::value を省く

C++

C++11 で template alias が入ったことにより,テンプレートメタプログラミングでよく出てくる,メタ関数を評価するための typename ::type を省略して直接型を取得するようなエイリアスが書けるようになりました. template<bool B, class T> using enable_if_ = typename st</bool>…

同じ CXString に複数回 clang_getCString() を適用してはいけない…?

CXString は libclang での文字列型で,C の文字列に直すには clang_getCString() を使う. CXString s = clang_getCursorSpelling(cursor); char const* p = clang_getCString(s); しかし,どうやら複数回 clang_getCString() を適用すると1回目と2回目では…

クラススコープの変数テンプレート

C++

クラススコープでは,変数テンプレートは静的なメンバ変数でしか使えない. struct X { // OK template<class T> static T hoge = T{}; // NG template<class T> T huga = T{}; }; なので,オブジェクトごとにメンバ変数テンプレートを持つということはできない. 少なくとも現</class></class>…

codic-vim 用の unite.vim ソースを書いた

Vim

codic-vim-with-unite は deprecated になりました.unite-codic.vim に移行をお願いします. ソフトウェア開発者用の辞書サービス Codic の辞書を Vim から使える codic-vim が公開されました. 日本語で単語を指定すると,それに近い英単語を一覧で出して…

Boost.Variant が特定の型の値を保持していた時だけ処理を実行する

boost::variant が保持している値の型が特定の型の場合だけ○○するという処理が多いの,でラムダ式で処理を書けるようにした. apply<{期待する variant が保持する値の型}>({variant な変数}, {適用したい関数}) という感じに使う. #include <boost/variant/variant.hpp> #include <iostream> int</iostream></boost/variant/variant.hpp>…

Boost.Variant に型指定でアクセスしたい

boost::variant の要素にアクセスする場合,which() メンバ関数で boost::variant が保持している値の型を見てからアクセスするか static_visitor でアクセスするかの二択が普通だと思うけれど,「which() でアクセスするのはマジックナンバー増えるから嫌」…