2015-03-01から1ヶ月間の記事一覧

C++14: Generic lambdas

C++

C++11 で実装されたラムダ式の引数に auto が使用できるようになりました( いわゆる多相ラムダと呼ばれる機能。 これは template 引数と同様に引数型を抽象化することができる機能です。 // auto を使用することでどんな型でも受け取る事ができるラムダ式を…

C++14: Variable templates

C++

Variable templates は定数を任意の型で定義する事ができるようになる機能です。 以前の書き方では πなどの定数を任意の型で使用できるようにする場合、 template<typename T> struct PI{ static const T value; }; template<typename T> const T PI<T>::value = T(3.141592653589793238</t></typename></typename>…

C++14: Binary literals

C++

数値の先頭に 0b または 0B とつけることでその数値が2進数表記として扱われるようになります。 [Example] int n = 0b01001101; // => 77 int m = -0b00101100; // => -44 16進数示す 0x などと同じような使い方をします。 [実装コンパイラ] Clang 2.9 GCC 4…

watchdogs.vim に haml-lint の設定を追加した

追加しました。 causes/haml-lint osyo-manga/vim-watchdogs haml で haml-lint を使用したい場合は以下のように設定してください。 let g:quickrun_config = { \ "haml/watchdogs_checker" : { \ "type" : "watchdogs_checker/haml-lint", \ }, \ \} " watc…

foreman での -e オプションの挙動

補足説明もらったので覚書。 以前、foreman 上での環境変数を設定する場合 .env ファイルを用意するという記事を書きました。 デフォルトでは起動時にカレントの .env ファイルが読み込まれますが、これは -e オプションで任意のファイルを読み込む事ができ…

Vim が Google Code から github へ移行するらしい

Vim

vim-jp » github への移行準備 と、いうことらしい。 議論や patch なんかは ML よりも github の issues の方が見やすいのでよさそうですね。

AngularJS で意図的に更新する

app.controller("MainCtrl", function ($scope) { uri = '...'; $.get(uri, function(data){ $scope.result = data.responseText; }); }); 上記のようなコード書いていたのだけれど、これだと {{ result }} が更新されなかった。 ($http 使えというのは置い…

C++ のオレオレ static_if を github で公開してみた

とりあえず Travis CI の動作確認も兼ねて、なにかしら github で公開してみたかったので以前書いた static_if を github にあげてみた。 コードの質はおいておいて、こういう雑なのはどんどん公開していきたいですねぇ。 static_if github:https://github.c…

C++ のオレオレ static_if を github で公開してみた

C++

とりあえず Travis CI の動作確認も兼ねて、なにかしら github で公開してみたかったので以前書いた static_if を github にあげてみた。 コードの質はおいておいて、こういう雑なのはどんどん公開していきたいですねぇ。 static_if github:https://github.c…

C++14 の機能まとめ(予定地)

C++

最近、C++ に全然触れていないので一日一個ずつぐらいのペースで取り上げていこうかなーと思います。 とりあえず、予定地だけほそぼそと書いていきます。 C++14 の機能 Binary literals Generic lambdas Variable templates Single quotation mark as digit …

AngularJS で ajax 通信を行ってみた

AngularJS で ajax 通信を行う手段はいくつかあるようなのですが、今回は angular-resource を試してみました。 [コード] <html ng-app='MyApp'> <head> <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js'></script> <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-resource.min.js'></head></html>

.gitignore で実行ファイルを無視したかった

Git

C++ で example を書いてる時に実行ファイルが生成されるので .gitignore で無視したかった。 Windows だと *.exe みたいに指定すればよいのだけれど、Linux だと拡張子がないのでどうすればよいのかなーと考えた。 回避手段 逆にソースファイルが無視されな…

foreman で起動時にのみ任意の環境変数を反映させる

某所で話題になっていたので覚書。 起動するディレクトリに .env というファイルを用意しておけばその環境変数が foreman に反映されます。 .env API_KEY="XXXXXX" DEBUG=1

Vim で nyancat をアニメーションで表示するプラグインをつくった

Vim

まぁそういうのはかなり前から存在はしているんですが、ちょっと自作ライブラリ(vital-reunions と vital-coaster)を試したかったのでテストがてら軽く書いてみました。 [プラグイン] osyo-manga/vim-nyaaancat NeoBundle 'osyo-manga/vim-nyaaancat' スクリ…

Vim で operator 実行時にカーソルを移動させないような operator をつくった

Vim

さて、Vim で operator を実行するとカーソル位置が入力した motion の先頭へと移動してしまします。 これは c や d のようなバッファを変更する operator であれば便利なんですが、y などのバッファを変更しない operator であれば無駄にカーソルが移動して…

はてなダイアリーからはてなブログへと移動しました

今更のお知らせですが、このブログは、以前はてなダイアリーで書いてたブログから移動したブログになります。 移動した経緯は、余裕が無かったり忙しかったりといろいろあったんですが、一番の理由は身バレしたからです。 元のブログを読んでいた方には申し…

std::default_delete を特殊化

C++

昨日の続き。 default_delete を特殊化する方がよいかもー、みたいな発言があったので試してみた。 [コード] #include <memory> #include <iostream> struct X{ friend void X_deleter(X*); X(int value) : value(value){} int value; private: ~X(){}; }; void X_deleter(X* x</iostream></memory>…

カスタムでリターを使用するユーザ定義型に対して std::unique_ptr を特殊化する

C++

そんな話が Lingr の C++ 部屋で出ていたので。 // 毎回カスタムデリータを設定するのが手間 std::unique_ptr<X, decltype(&X_deleter)> xp(new X(42), &X_deleter); // こう書けるようにしたい // std::unique_ptr<X> xp(new X(42)); [コード] #include <memory> #include <iostream> struct X{ friend voi</iostream></memory></x></x,>…

watchdogs.vim で :wq 時に実行しないようにする

Vim

syntasticの:wqした時にはシンタクスチェックを走らせないようにする設定(g:syntastic_check_on_wq), どうなってるんだろうか. vim-watchdogsでも同様のことがしたい— とさいぬ (@myon___) 2015, 3月 14 これを実装してみました。 設定 let g:watchdogs_chec…

middleman の haml から partial を使って markdown を読み込む

middleman の haml から markdown を読み込む - C++でゲームプログラミング 以前、上記のような記事を書いたのですが、render を使った方法だと動作しなくなってしまったみたい。 解決 render ではなくて partial を使用します。 [source/index.html.haml] #…

C++ のプロジェクトを Travis CI + github で自動テストする

C++

以下のページを参考にしてやってみました。 Travis CI で最新の gcc を使って自動テスト - sorry, uninuplemented: Travis CIを使ってみた: GitHubのレポジトリにバッジを貼りたかったから 実験用のプロジェクトをつくる とりあえず、最小限のファイルだけ用…

AngularJS 1.3 からグローバルのコントローラーがデフォルトでは動かなくなってた

久々に AngularJS を触ってついでに 1.3 に移行したらハマったので覚書。 AngularJS 1.3 からグローバルのコントローラーがデフォルトでは動作しなくなったみたいです。 AngularJSの1.2系と1.3系の違い - Coding Design's Tumblr angularJsについて - QA@IT …

Ruby の nkf で、全角カナ文字を半角カナ文字にして出力する

以下のように nkf を利用すれば全角カナ文字を半角カナ文字に変換できます。 require "nkf" # -w オプションは UTF-8 で出力する # -Z4 オプションは全角カナを半角カナに変換する NKF.nkf("-w -Z4", "アナスタシア") # => "アナスタシア" NKF.nkf("-w -Z4", "ミル…

feed の内容を unite.vim に出力するプラグインつくった

Vim

web feed の内容を unite.vim で出力するプラグインをつくりました。 例によって通信は非同期で行ないます。 必要なもの command wget or curl vim plugin vimproc.vim プラグイン osyo-manga/unite-web_feed NeoBundle 'osyo-manga/unite-web_feed' 使い方 …

ubuntu で gem install do_postgres に失敗した

$ gem install do_postgres したら以下のようにエラーになった。 Building native extensions. This could take a while... ERROR: Error installing do_postgres: ERROR: Failed to build gem native extension. /usr/bin/ruby2.1 -r ./siteconf20150308-31…

Hash のキーの要素にメソッドでアクセスする

hash[:key] を hash.key という風にアクセスしたかったので、練習がてら雑に書いて gem にあげてみた。 install $ gem install hash_with_key_access_method 使い方 # Using refinements using HashWithKeyAccessMethod hash = { name: :homu, "name2" => :m…

Ruby の JSON.parse で Hash のキーをシンボルにしてパースする

参照 rubyのJSON.parseでhashキーをsymbolにしてもらう方法 - hirakiucの日記 JSON.parse() の第二引数に {:symbolize_names => true} を渡せばいいみたい。 コード require "json" data = '{ "name" : "homu", "age" : "13" }' JSON.parse(data) # => {"nam…

C++14 で static_if 書いてみた

C++

上げるの忘れてた。 generic lambda を使っていい感じに static_if を書いてみました。 ソース #include <iostream> template<typename Then, typename Else> auto static_if(std::integral_constant<bool, true>, Then then, Else else_){ return then; } template<typename Then, typename Else> auto static_if(std::integral_constant<bool, false>, T…</bool,></typename></bool,></typename></iostream>

Vim で json の構文チェックを行う

Vim

元ネタ jsonの validation - Life is very short watchdogs.vim になかったので jsonlint の設定を追加しました。 jsonlint 元の記事と同じように jsonlint を使用します。 $ npm install jsonlint -g プラグイン osyo-manga/vim-watchdogs NOTE: ハイライト…

BasicObject を継承したクラスで include する

BasicObject を継承したクラスで include する BasicObject を継承したクラスで include を行いたかったのですが、次のようなコードではエラーになりました。 module Test def test 10 end end class X < BasicObject include Test # error: `<class:X>': uninitializ</class:x>…