読者です 読者をやめる 読者になる 読者になる

Travis CI で Linux (x86_64, i686, aarch64) 向け(とついでに macOS 向け)に Rust で書いたツールのバイナリをリリースする

git-brws のリリース で微妙に Travis CI 上の rust 環境でハマったのでメモ. 前提として,cargo build でビルドできるものとします.Travis の環境はツールチェーンが古いと困るので Ubuntu 14.04 を使ってます.今回は下記の環境向けのバイナリをビルドし…

2016 年につくったやつ一覧

GitHub contributions グラフを続けるのも4年目に入っていて,来年も無理しない程度に続けて行こうかなぁと思ってます.今年は中盤あたりイマイチだったけど後半結構時間ができたので例年通りぐらいになりました. 今年もぼちぼち使っているツールのためのプ…

フルスクラッチからさいきょうの Vim カラースキームをつくろう!

この記事はVim Advent Calendar 2016 その2の18日目の記事です.その1のほうにも記事を書いたのですが,こっちもまだ空いてたので埋めがてら書きます. その1のほうではかなり非実用的な記事を書いてしまったので,こっちでは比較的実用的なことを書きます.…

Electron アプリをつくる時に便利なパッケージ

本記事では,僕が Electron アプリをつくる上で便利だったり,ほしかったのでつくったりしたパッケージを紹介します.

ELVM で C コンパイラをポーティングしてみよう(Vim script 編)

Vim C

この記事は Vim アドベントカレンダー 2016 の2日目の記事です. 先々月に ピュア Vim script な C コンパイラを公開しました. github.com この記事では 8cc.vim で用いた,ELVM を利用して 8cc という C コンパイラを Vim script にポーティング(移植)す…

GitHub Flavored Markdown をもっと Vim でハイライトする vim-gfm-syntax つくった

Vim にはデフォルトで Markdown のドキュメントをハイライトするためのファイルが同梱されています.基本的にはこれで満足なのですが,僕が書くのはほぼ GitHub Flavored Markdown(GFM: GitHub で使える拡張された Markdown 記法)なので,一部ハイライトさ…

ErgoDox EZ を使い始めて1ヶ月ぐらい経った

タイムラインで購入している人がちらほらいて,評判も良好みたいなので ErgoDox EZ というキーボードを試しに買ってみることにしました.購入したのは無刻印+アームレスト付きの赤軸です. ErgoDox EZ (画像は公式サイトから) とりあえず購入して1ヶ月経ち,…

15K 行のアプリを TypeScript 1.8 から 2.0 に移行してみた

先日 TypeScript の新しいメジャーバージョン 2.0 のコンパイラの beta 版がリリースされました. Announcing TypeScript 2.0 Beta What's new in TypeScript コンパイラのチェックの強化や非 null 型,tagged union など,いくつかの機能が追加・強化され,…

『SD別冊 Vim&Emacs』と『SoftwareDesign 5月号』に寄稿しました

SD別冊 Vim&Emacs と SoftwareDesign 5月号の Vim 特集にそれぞれ寄稿させていただきました. SD別冊 Vim&Emacsエキスパート活用術 http://gihyo.jp/book/2016/978-4-7741-8007-6 www.amazon.co.jp Software Design の Vim 特集と Emacs 特集を集めて1冊の…

WebAssembly を使って自作言語をブラウザで動かしてみよう

今日 Google の開発者ブログで WebAssembly の記事が載っていました.どうやら最新の Chrome では WebAssembly が動くようです. googledevjp.blogspot.jp 自作言語のコンパイラを LLVM フロントエンドとしてつくっているので,これは試さないわけにはいきま…

Electron で Chrome のページ内検索機能を使う

比較的最近,Electron に Chrome のページ内検索を JavaScript から行える API が入りました.最近そのことを知ったので,今日昨日あたりでその機能を使って Shiba に Markdown プレビュー内の検索機能を実装しました.案外手こずってしまったのでまとめてみ…

Issue と PR のテンプレートジェネレータつくった

出張の帰りのフライトが10時間以上あったので簡単なツールをつくってみました. 余談ですが Windows PC しかなかったので,Windows PC + golang + gVim で書いてみました.Go 言語は標準ライブラリだけでもぐりぐり書けてなかなか良いですね.久々の Windows…

2015年を振り返る

2015年の自分向けまとめです. まとめ 目標は達成できたかどうか分からないといけないと思っているので,2015年の趣味での目標は 「とりあえず10万行書くか」 だったんですが,測るのが面倒なので途中から「3000 contributions する」 になりました.(自分…

Web Components と Electron でつくる Neovim フロントエンドの未来

この記事は Vim Advent Calendar 2015 の20日目の記事です. まずはこちらのスクリーンショットをご覧ください. エディタの UI やカーソル移動は Vim っぽいですが,markdown ライブプレビューやカーソル位置での画像ポップアップ,組み込みブラウザなど謎…

Crystal でのプログラミングを支援するツール達

この記事は Crystal Advent Calendar 2015 の13日目の記事です. Ruby の構文が好きなので Crystal もぼちぼち触っていて,標準ライブラリに Random::MT19937 とか Array#transpose を実装したり,Lisp 実装してみたり,コマンドラインからドキュメント開く…

いらすとやヘビーユーザのために Irasutoyer というアプリをつくった

この記事は いらすとや Advent Calendar 2015 の6日目の記事です. いらすとやとは? いらすとや とは,フリーのかわいいイラスト素材を提供しているサイトです.実用的で種類が豊富,たまにシュールなのもあり,利用条件のゆるさから至る所で使われています…

「とりあえず入門書は読んだけど…」の次に進むプルリク駆動学習

汎用性の高い技術ポエム Advent Calendar 2015 の3日目の投稿です. 普段はつくったものの紹介とか技術的に調べたことのメモとか勉強会参加記事を書いていて雑感とかは大体ツイッターに書いているんですが,最近どことなく頭にこびりついていることがあるの…

vimconf でブラウザ上で Vim を使う方法を発表してきた

今年も vimconf にスタッフ兼発表者として参加してきました.名札の名前が「ドッグ」でじわじわきました… 開場 当日は準備スタッフの作業のために 8:30 に会場へ.山手線の遅延に巻き込まれて 8:45 ぐらいに到着. 電源ケーブルの配線などをやりました. Vim…

devdocs.io が便利すぎたので Vim プラグインつくった

devdocs.io 最近,GitHub Trending Repositories のページで devdocs.io という便利なサービスを知りました. devdocs.io は複数のドキュメントを素早く横断的に検索できるサービスです.多分使ってみると一瞬で分かるので詳細は省きますが,各言語や DOM,R…

東京Node学園祭 2015 で Electron について話した

画像は公式サイトから 発表について 11/7 にあった 東京 Node 学園祭 2015 で Electron の発表した. 周りすごい人達ばかりで,明らかに今年の6月ぐらいに初めた自分よりも,JavaScript も Node.js もフロントエンドも書ける人達に囲まれての発表だったので…

Crystal 言語で CLI ツールを書いてみる

Crystal はつくりかけの言語です.この記事は 0.8.0 を元に書きましたが,今後かなり変更されることが予想されます Crystal は Ruby に強くインスパイアされたコンパイル言語です.結構前から気になっていて,Crystal のコンパイラが Ruby で書かれていた頃…

GitHub のトレンドリポジトリを見逃さない,Trendy をつくりました

僕が1日に1回ぐらいの頻度で見ているページの中の1つに GitHub の Trending repositories のページがあります.このページには言語ごとに日毎・週毎・月毎の単位で GitHub 上で人気のリポジトリがランキング形式で表示されます. 話題になっているライブラリ…

GitHub のアレコレを補完する github-complete.vim をつくりました

GitHub のユーザ名やリポジトリ名,絵文字,リンクURLを GitHub API を使って補完する github-complete.vim をつくりました. https://github.com/rhysd/github-complete.vim Vim では Markdown 編集中のオムニ補完は HTML のものになっていて使わないので,…

YAPC::Asia 2015 良かった…

YAPC::Asia 2015 に行ってきた.今まで参加した中で IT 関係で過去一番参加者が多いイベントな気がする.Perl はほとんど書いてないものの,ラリー・ウォールや Matz の講演もあって楽しそうだったのでチケットを迷わず購入して有給取った. トーク良かった …

Shiba v0.4.0 をリリースしました

先月ぐらいから Markdown プレビューアプリ Shiba をつくっています. Electron と Polymer と TypeScript でリッチなマークダウンプレビュアー Shiba つくった - sorry, uninuplemented:rhysd.hatenablog.com 指定した markdown ドキュメント(または特定の…

スプラトゥーンの 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>…