小技

「ディレクトリをCygwinで開く」を右クリックメニューで

エクスプローラでファイル操作中に,今いるディレクトリでCygwinを開きたい場合がある.nkf で文字コードを変換したりとかスクリプトを適用したりとかで. いくつかスクリプトを書けばできる.

意外に簡単! LinuxでジョイスティックをC++から使う方法

デバイスをオープンし,ちょっとした設定のあと,Linuxで提供されている js_event 構造体に読みこむだけ.Cでも同様.PlayStation 2/3用のコントローラをUSB接続したものでも使えた. 参考: joystick tutorial and code

子プロセスで親プロセスの環境変数を変更したい

...が,簡単にはできないらしい.今やりたいことを整理すると: (1) ある bash スクリプト hoge.sh では何か環境変数が定義される,(2) シェル (tcsh) で hoge.sh を実行して,hoge.sh の中で定義される環境変数をシェルで使いたい,(3) hoge.sh は変更しな…

コマンドラインでCSVなどのデータを整形して見るには

column コマンドと less を組み合わせれば,CSVなどのデータファイルはすごく見やすくなる. ソース:linux - Command line CSV viewer? - Stack Overflow column -s, -t < INPUT.csv | less -#2 -N -S

LaTeX で PNG や JPEG を読み込むには extractbb でバウンディングボックスを抽出する

よく忘れるので防備録的な感じでメモ. LaTeX で PNG や JPEG を単純に読み込むと,no BoundingBox とかエラーが出るので,バウンディングボックスを指定してやる必要がある.そのためのコマンドに ebb とか extractbb があるが,extractbb を使おう(解像度…

2つのテキストファイルで異なる部分の行数をカウントするには

diffを取って,>で始まる行だけ抜き出して,その数を数えればいいのだろうか? diff -bB FILE1.txt FILE2.txt | sed '/^[^>].*/d'これで,> で始まる行だけ抜き出せるので,wc でカウントする.

Inkscapeで描いたベクタ図形をパワポにコピー&ペーストするには

イ○ストレータなんて高いものは使わねぇ!というポリシーの人が使ってるInkscape.Linuxでもベクタ図形が描けて便利だし,数式のベクタ図形も,この方法を使えば簡単にSVGとして取得できる. Inkscapeで描いたベクタ図形を,ベクタとしてパワポなどのOffice…

findで特定のディレクトリを無視するには

オプション -prune を -path などと組み合わせて使えばいいらしい.例えば build ディレクトリを無視しつつ CMakeLists.txt を検索するには, find . -path './build' -prune -or -name CMakeLists.txt -printと書く. -path './build' -prune -or のように…

gnuplotで出力したSVGのマーカの太さを変更するには

論文に掲載するグラフを gnuplot で作るとき,SVG (Scalable Vector Format) で出力して Inkscape などで編集すると便利だ.だが,マーカ(×など)の線の太さを Inkscape で変更できなかったので,直接 SVG (XML) ファイルを編集してマーカの線の太さを変更…

bash で引数つきのエイリアスを使うには関数を使えばいいらしい

tcsh だったら !* を使うのだが, bash の場合は関数を定義しないとダメらしい. 例 (tcsh, bash の順): alias pless '/usr/share/source-highlight/src-hilite-lesspipe.sh \!* | less -R' function pless(){ /usr/share/source-highlight/src-hilite-less…

Acrobat Reader で PDF を PS に変換して LaTeX に貼り付け

過去記事 もう eps でトラブらない…LaTeX で PDF を張り付ける では,PDFをLaTeXに貼り付ける方法を紹介したが,学会によっては画像ファイルの形式として PDF を許可していない場合がある.また,dvips で変換した PS ファイルが表示できなかったりするトラ…

もう eps でトラブらない…LaTeX で PDF を張り付ける

過去記事 Inkscape で eps をきれいに出力する方法 で紹介している方法などで eps 画像を作って LaTeX で読み込むと,何かしらのトラブルが起こりがちだ.dvipdfmx で PDF 化したときに画像が表示されないこともある.Inclusion of large eps files with dvi…

eps を回転するコマンド

epsffit というコマンドを使えば,eps を回転できる.epsffit は少々使い勝手が悪いので,使いやすくするスクリプトを書いてみた.

ffmpeg で H.264 エンコーディングの動画を作る

HTML5 のvideo要素で使えたり使えなかったりするH.264だが,使えるにこしたことはないと思い,ffmpegでエンコーディングしようとしてみた.少しコツが必要なので,メモしておく.

STL コンテナの前方宣言:軽いヘッダファイルを作るには

STL (standard template library) コンテナを include すると,それなりにコストが掛かる(参考).このコストは,場合によっては「前方宣言 (forward declaration)」によって大幅に軽減できる.STL コンテナの場合,前方宣言が少々ややこしいので,まとめて…

はてなブックマークから Google Bookmarks に移行する!

これまではてブを使っていたのだが,検索したブックマークの編集ができないなどの不満があったので,Google Bookmarks へ移行を始めた.Delicious 経由でdel.icio.us to Google Bookmarksを使う方法だとうまくいかなかったので,ブックマークを移行するスク…

任意に整数変数を初期化するテンプレートクラス

クラスや構造体のメンバ変数を初期化するには,コンストラクタに初期化リストを書かなければならない.が,宣言場所と離れてしまったり,同じ変数名を2度(宣言と初期化で)書く必要があって面倒くさかったりする.整数変数しか使えないが,メンバ変数を宣言…

テンプレートを汎用的な構造体に対して特殊化するには

template<typename T> function(const T&)のようなテンプレート関数があったとして,この実装を T が構造体の場合は変更したい(部分特殊化したい)とする.特定の構造体に対する特殊化なら話は簡単だが,本記事では汎用的な構造体に対する部分特殊化を扱う.この問題は</typename>…

Gmailの文字を大きくする

Gmailの文字が小さくて見にくい(英文は特に).ズームすると,全体のバランスが崩れてださい.Chrome や Firefox 限定だと思われるが,Stylish という拡張機能(アドオン)をインストールすれば,メッセージだけ文字を大きくできる.

operator<<をオーバーロードして任意書式

シリアル通信のプログラムなどでは,多くの場合 unsigned char の配列にデータを保存する.このようなデータを16進数で標準出力に表示する場合, operator<< をオーバーロードすると便利だ.しかし,単純に unsigned char* に対してオーバーロードすると,オ…

可変引数リストを使った任意長のベクトル初期化

C/C++ の可変引数リスト (variable argument list) をあまり使ったことがなかったので,練習も兼ねて,初期値付きで任意長のベクトルとかリストを生成できる関数を作る.例えば list<double> x= container_gen<list<double> >(5, -5.0,10.0,3.0,1.0,2.0) のような感じで,サイズ5</list<double></double>…

テンプレートの部分特殊化を利用した const 除去型 〜boost のソースを読む〜

過去記事「テンプレートの部分特殊化を利用した間接参照型推定」では,テンプレートのテンプレートの部分特殊化 (Wikipedia)を使ってポインタ型やイテレータ型からそれを間接参照した型(ポインタを取った型)を推定する方法を紹介した.この方法を使って,…

マクロにしかできないこと 〜C++でマクロを使うべきな場面〜

C++では, #define で定数を定義するな, const TYPE によるグローバル変数(もしくは適当な名前空間に内包されたグローバル変数)を使え, #define でマクロ関数を定義するな,代わりに inline 関数を使え,みたいなことが言われる.これは確かにその通りだ…

テンプレート関数の明示的インスタンス生成

通常,C++のテンプレート関数(orクラス)をライブラリ化するとき,それを利用するソースから,そのテンプレート関数の実装(定義)も含めてインクルードしなければならない.そうしないと,特定の型に対してテンプレート関数のインスタンスを生成できないから…

LaTeX の数式を PNG と SVG に変換するスクリプト

先日,LaTeX の数式を PNG と SVG に変換する方法についての記事を載せた.この方法を使いやすくスクリプト化してみた.

テンプレートの部分特殊化を利用した間接参照型推定

C++の機能,テンプレートの部分特殊化 (Wikipedia)を使って,あるポインタ型orイテレータ型から,それを間接参照した(or逆参照した,orポインタをとっぱらった)型を推定する方法を紹介する.

bashで2次元配列モドキ

bash で2次元配列を扱いたいときがまれにある.が, bash には1次元配列しか無いし,配列の要素に配列を代入することもできない.そこで疑似的に2次元配列を使う方法を考えてみた.

配列の要素に名前をつける

C/C++ で配列の各要素に名前をつける方法について.例えば, unsigned char col[4]; として宣言された col の各要素を red, green, blue, alpha のような識別子でも参照できるようにする.

C と C++ の間で関数や変数を共有する

C++ で実装した関数を C から利用したい場合,あるいはその逆の場合がある.同じソースの中に両方のプログラムコードを書くことはできないが,それぞれのソースをコンパイルしてオブジェクトファイルを生成し,それらをリンクすることは可能だ.ただし C++ …

壊れたシンボリックリンクを一覧する

linux で,リンク先のファイルが存在しないシンボリックリンクを一覧するスクリプト.