生配列を std::array に変換する

C++

constexpr で扱えて,実行時の効率もよいデータ構造+アルゴリズム - 危ないRiSKのブログ コンパイル時に配列を結合する - iorateの日記index_tuple を使って constexpr な生配列から std::array への変換の処理をする配列を書いてみました. int main() { /…

メタプログラミング入門(2) ネストしたスコープ

Ruby では,一般的な手続き型言語と違いスコープがネストしません. var1 = 0 class Hoge # var1 は見えない var2 = 1 def huga # var1 も var2 も見えない end end class 内で共有できる変数としてインスタンス変数がありますが,特定のメソッドだけ共有し…

Ruby メタプログラミング入門(1) 動的なメソッドディスパッチ

メソッドが存在しない場合に必ず呼ばれるメソッド,method_missing をオーバーライドすることにより実現します. #!/usr/bin/env ruby # -*- coding: utf-8 -*- # 1度の試行につき4回実行されるルーレット.ただし,前回の値より小さい値しか出ない. class …

Homebrewで最新のGCC 4.6.3 をインストールするためのパッチを書いてみた

こちらに置いています. https://github.com/rhysd/others/blob/master/gcc-4.6.0-to-4.6.3.patchインストール方法は Homebrewで最新のGCC ( gcc-4.6.2 ) をインストールするためのパッチを書いてみた と同じなので割愛. 以前この方法でgcc-4.6.2をインスト…

D言語のテンプレートで FizzBuzz

D言語を少し触ってみたので. import std.conv; template fizzbuzz(int n) { static if (n == 0) { immutable string fizzbuzz = ""; } else { immutable string fizzbuzz = fizzbuzz!(n-1) ~ ( n%15 == 0 ? "FizzBuzz" : n%3 == 0 ? "Fizz" : n%5 == 0 ? "B…

rbenv で gem を使った時に rbenv rehash しなくて良くする

rvm が多機能&壊れやすすぎて Homebrew の ruby を直にインストールして使っていたのですが,Homebrew の ruby はバージョンを上げるときにgemで入れたコマンドを引き継いでくれなかったり,gemでインストールしたコマンドを反映してくれないので,rbenv と…

TwitterアプリケーションのコールバックURLにlocalhostを指定する

Twitter Developers でTwitterアプリケーションを登録する際に Callback URL というものを設定することができます. これは,そのTwitterアプリケーションで認証した後にどのURLに戻るかを指定するためのものです. 開発中はローカルにサーバを立ててテスト…

Boost.勉強会 #8 に参加しました

2/11に大阪で行われた Boost.勉強会 #8 に参加してきました. Boost.勉強会 #8 大阪 - boostjp前々からBoost.勉強会には興味があってぜひ参加したいと思っていたので,今回の勉強会は即参加を決めました. メンバ変数のメンバ関数内でのリソース管理 ( @cpp_…

unite-session が便利

Vim

unite-sessionはVimプラグインUniteに標準で付いてくるUniteのソースです.Uniteのインストールなど詳しくはこちら. Shougo/unite.vim · GitHubunite-sessionは現在のVimの状態(セッション)を保存しておくことのできるUniteソースです. 試しにVimを立ち…

Boost.Test でモックテストしてみた

先日のBoost.勉強会 #8 にて,id:heisseswasser さんの発表へのアキラさん( id:faith_and_brave )のツッコミで,Boost.Testでもモックテスト用のライブラリがあるという指摘がありました. どうやらドキュメントに載っていないらしいので,自分なりに調べて…

SONY Go For It: 1) の解答

問題 http://www.sony.co.jp/SonyInfo/Jobs/newgrads/sus/q01.html 解答 life_clock.rb #!/usr/bin/env ruby # -*- coding: utf-8 -*- # FILE: life_clock.rb # AUTHOR: rhysd (http://d.hatena.ne.jp/rhysd/) # License: MIT license {{{ # Permission is h…

SONY Go For It: 2) の解答

C++

問題 http://www.sony.co.jp/SonyInfo/Jobs/newgrads/sus/q02.html i) の解答 factorial_int.cpp // FILE: factorial_int.cpp // AUTHOR: rhysd (http://d.hatena.ne.jp/rhysd/) // License: MIT license {{{ // Permission is hereby granted, free of char…

Vimのinsertモードで便利なC++コーディング用キーマップ

autocmd FileType cpp call MyCppMapping() function! MyCppMapping() inoremap <buffer><expr><CR> \ strpart( getline('.'), col('.')-2, 2 ) == "{}" ? \ "\<CR>\<C-o>k\<C-o>$\<CR>" : "\<CR>" inoremap <buffer>{ {}<Left> inoremap <buffer>( ()<Left> inoremap <buffer>() () inoremap <buffer><> <><Left> inoremap…</left></buffer></buffer></left></buffer></left></buffer></cr></cr></c-o></c-o></cr></cr></expr></buffer>

CUI上でVimを実行した場合にC-qが効かなくて困った

Vim

挿入モードでも直接Vimを閉じられるようにマッピングしようと思い, inoremap <C-q><C-q> <Esc>:wqa<CR> という設定をしたのですが,実際に使ってみると機能しない… 色々試してみてもしやと思い,GUI版のMacVimで試してみるとうまくいったので,Vim外の問題だと判断し設定やman</cr></esc></c-q></c-q>…

constexprな関数でコンパイル時にn乗根を求める

C++

とあるプログラムで,定数の3乗根を求めたいことがありました. どうせ求めるならこれからも使えそうなn乗根で,どうせならconstexprでということで,書いてみました.求め方としてはニュートン法を使っています.初期値さえ間違えなければニュートン法はか…

RubyでGoogleのプログレスバーを作る

この記事を元ネタにしています. GoogleプログレスバーをPHPで作ってみる - たら風呂ソースコードはここにあります. others/google_progress.rb at master · rhysd/others · GitHubただ真似をするだけでは面白く無いので,ちゃんと色を付けてみました. コ…

zshでプロンプトにTwitterのタイムラインを表示する

ネタです.zshのプロンプトを2段にし,1段目にtwitterのホームタイムラインを表示します. 作業効率が落ちたりしても私は責任を持てないので,自己責任でお願いします…!まずこちらからget1tweet.rbを落としてきて適当なところに置きます. https://github.c…

Homebrew で Boost 1.48.0 をインストールする

有名なC++準標準ライブラリ群Boostの最新版が先日出たので,それに対応させるパッチを書きました. じきに公式に対応するとは思いますが,(自分みたいに)待てない人もいるかもしれないので公開しておきます.インストール方法は others/boost-1_47_0-to-1_…

MacVimで背景の透明度を段階的に変更する設定にしてみた

Vim

今日の Vim #10 でujihisa( @ujm )さんが矢印キーの↑と↓に透明度の変更を設定していたのを見て,自分も透明度を動的に変えられるようにしたいと思い設定してみました. " .gvimrc set transparency=0 " initialize nnoremap <expr><F12> &transparency+40 >= 100 ? ":se</f12></expr>…

Ruby1.8でtwitter idのQuineを書いた

Quine(クワイン)とは,自身のソースコードを出力するプログラムのことです. クワイン (プログラミング) - Wikipedia今回は見よう見真似でRubyで作ってみました. 参考:Google Code JamTwitterではLinda_ppというアカウントで投稿しているので,それを大…

MacPortsでactiveでないPortを削除する

Mac

man読めばすぐに分かる気もしますが,わざわざスクリプト書いている記事もちらほら見かけたので一応メモ. # port uninstall inactiveで,deactivateやアップデートなどによりactiveでなくなったPortを一気に削除できます.

Homebrewで最新のGCC ( gcc-4.6.2 ) をインストールするためのパッチを書いてみた

最近Macのパッケージ管理システムを色々使ってみていて,その一環でHomebrewを使ってみたりなどしました. Homebrewにはgccのパッケージが見当たらなかったので検索してみたところ, homebrew-altというリポジトリに比較的新しめのgcc-4.6.0のFormulaがあり…

LinuxでMacのTotalTerminalもどきを作ってみた

Macには,任意に決めたショートカットキーでターミナルを出したり隠したりできるTotalTerminal(少し前まではVisorという名前だった)というアプリがあります. TotalTerminal is a system-wide terminal accessible via a hot-key これがすごく便利で普段Ma…

.vimrc

Vim

ここまでの.vimrcを晒しておきます. 入っているプラグインは,ファイルの最後の方のvundle.vimの設定や,その他設定から察してください.少し長いのでgistに置いておきます. https://gist.github.com/1278419

endwise.vim の キーマッピング問題

Vim

endwise.vim は doに対して対応するendを補完するVimプラグインです.neocomplcacheのスニペット補完に比べてdoを押してReturnを押した次点でendが自動で補完されるので,シームレスに補完できます.Ruby,VimScript,VBあたりに対応しているようです.vim.o…

NeoComplCacheのスニペット補完用C++11スニペットを書いてみた

C++11が国際標準として承認され,これから徐々に広まっていくであろう予測されます.そこでVimの有名な補完プラグイン,NeoComplCacheのスニペットにC++11で新たに加わった range-based-for,ラムダ式,scoped enumeration を追加してみました.例えば.vimrc…

ふぃず!ばず!

C++

これからプログラミング・ソフトウェアの設定などの備忘録として適当に書いていきたいなとか思ってます.一次情報にあたればいいものはせいぜい参考URL程度に,バグ踏んだ時などは少々細かめに行く予定.テストがてら,こないだ書いたfizzbuzzを貼っておきま…