Top/Recent-articles
English | Japanese
English | Japanese

Menu

  • Top
  • Akihiko Yamaguchi 山口 明彦
  • Project プロジェクト
  • Text テキスト
  • Recent articles 最近の記事
  • Articles 記事一覧 (a to z)
  • Search 検索
Access: 3/10732 - Admin

Recent articles

最近の記事

< Past 20 pages | 61 to 80 | Next 20 pages >
2014-12-31
article/Error-handler-of-liboctave

Defining the error handler of liboctave for efficient debug

liboctave のエラーハンドラを自分で定義して,デバッグを効率化

[c++][liboctave]
2009-01-10

liboctave を使っていると,例えば要素数の異なる列ベクトルを足そうとしたときに

fatal: operator +: nonconformant arguments (op1 len: 2, op2 len: 5)

というエラーが発生し,プログラムが正常終了する.正常終了とは exit(1) による終了で,

  • コアファイル (core) がダンプされないのでバックトレースできない
  • このためどの関数が operator+ を呼び出してエラーを発生させたのかわからない

という問題があり,デバッグしにくい.そこで, liboctave のエラーハンドラを自分で定義して,エラーが発生したときの振舞いを自分で決められるようにしよう.

... read more (article/Error-handler-of-liboctave)
article/Explicit-instantiation-of-template-functions

Explicit instantiation of template functions

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

[c++][trick]
2008-11-29

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

  • ヘッダファイルの肥大化(コンパイル速度の低下)
  • 望ましくない実装の公開

などの問題がある.これを回避するために,特定の型に対してテンプレートのインスタンスを明示的に生成する explicit instantiation という方法がある.

... read more (article/Explicit-instantiation-of-template-functions)
article/Google-Calendar-API-for-todays-schedule

PHP script to see today's schedule using Google Calendar API

Google Calendar API を使って1日の予定を一覧するPHPスクリプトを作る

[php]
2009-11-04

そんなスクリプトをわざわざ作らなくても,Settings -> Calendars -> CALENDAR -> Notifications -> Daily agenda にチェックを入れておけば,5am(実際は4:30am頃?)にメールで予定一覧を送ってくれる.が,フォーマットが気に入らない(携帯メールに転送すると文字数制限をオーバーする),好きなメールアドレスに送れない(G-mailのフィルタで転送すればいいが)といった問題があるので, Google Calendar API を使って,1日の予定を一覧するPHPスクリプトを作ってみた.

... read more (article/Google-Calendar-API-for-todays-schedule)
article/Include-cost-of-header-files

Include cost of header files

ヘッダファイルの include コストを調べてみた

[c++]
2009-10-14

include するヘッダファイルが多くなればなるほど,コンパイルに掛かる時間が増加する.では,それぞれのヘッダファイルを include するコストはどれくらいなのか?

... read more (article/Include-cost-of-header-files)
article/Bash-cannot-echo-E

bash cannot echo '-E'?

bash は '-E' を echo できない(?)

[bash][c++]
2009-10-12

echo '-E' とすると,'-E' が echo のオプション(エスケープ文字を解釈しない)として解釈され,echo できない.変数に代入したりしても同じ.しかたないので,C++ で引数を直接出力するプログラムを書いた.

(追記@Oct.14,2009)printf -- '-E' とするのがスマートな解決策のようです(コメント参照).id:atottoサンクス.

... read more (article/Bash-cannot-echo-E)
article/Script-to-generate-fade-in-out-videos

Script to generate fade-in fade-out videos

フェードイン・アウトする動画をコマンドラインから作るスクリプト

[bash]
2009-09-22

高価な動画編集ソフト(premiere とか)がなくても動画作れちゃうんだぜ!

... read more (article/Script-to-generate-fade-in-out-videos)
article/Partial-specialization-of-member-methods

Partial specialization of member methods

メンバ関数の部分特殊化がしたい

[c++]
2009-08-27

C++ でメンバ関数を部分特殊化しようとすると(例えばテンプレートクラスのテンプレートメンバ関数を,ある特定の型について特殊化する),コンパイルエラーとなる.gcc なら "error: invalid use of incomplete type" だとか, "error: enclosing class templates are not explicitly specialized" などのエラーが発生する.しかし,現実には,部分特殊化したいことも多い.そこで,やや強引な解決策を実装してみた.

... read more (article/Partial-specialization-of-member-methods)
article/Pipe-stream-class

Pipe stream class

パイプストリームクラス

[c++]
2009-07-22

gnuplot のようなプログラムには,パイプを使ってほかのプログラムからデータを送ることができる.std::cout などのストリームクラスのように,パイプストリームクラスを作成すると便利そうなので,実装してみた.

... read more (article/Pipe-stream-class)
article/Convert-MIDI-to-MP3-with-TiMidity

Convert MIDI to MP3 with TiMidity++

TiMidity++ を使って MIDI を MP3 に変換する bash スクリプト

[bash][linux]
2009-07-21

TiMidity++ で WAVE ファイルを作って,lame で MP3 にエンコーディングするスクリプトを作ってみた.

... read more (article/Convert-MIDI-to-MP3-with-TiMidity)
article/Remove-URL-from-References-of-IEEE-paper

Remove URL from References of IEEE paper

IEEE の原稿の References に URL が入らないようにする

[latex]
2009-07-13

IEEE の論文を LaTeX で書くときに,bibtex のスタイルファイルとして IEEEtran.bst を使う.このスタイルファイルを使うと,bibtex のソースに url = {www.xxx.com/xxx.pdf} のような項目を書いている場合(ウェブに掲載されているURL),論文の References に [Online]. Available: www.xxx.com/xxx.pdf などと書かれてしまう.文章量が増えるし,著作権的にアレなURLを参照しているとモラルに欠けるし,消したい.その方法を紹介(IEEEtran.bst のソース読めばすぐわかるが).

... read more (article/Remove-URL-from-References-of-IEEE-paper)
article/Arbitrary-formatting-by-overloading-stream-op

Arbitrary formatting by overloading operator<<

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

[c++][trick]
2009-06-28

シリアル通信のプログラムなどでは,多くの場合 unsigned char の配列にデータを保存する.このようなデータを16進数で標準出力に表示する場合, operator<< をオーバーロードすると便利だ.しかし,単純に unsigned char* に対してオーバーロードすると,オリジナルの (iostream で宣言されているのと) コンフリクトする.以下では,既にある operator<< と整合性を取りつつ,任意に書式設定する方法について解説する.

... read more (article/Arbitrary-formatting-by-overloading-stream-op)
article/Beautiful-eps-generation-with-Inkscape

Beautiful eps generation with Inkscape

Inkscape で eps をきれいに出力する方法

[linux]
2009-06-24

Inkscape という強力なオープンソースのベクタ図形描画ソフト (illustrator みたいなもの) がある. linux で使えるベクタドローソフトでは, Inkscape か OpenOffice.org あたりが代表的だと思うが,多分かっこいいイラスト(?)を書くのには Inkscape が一番だと(個人的には)思う.

Inkscape で書いたイラストを latex に貼るとき(論文執筆などで),eps に変換する必要があるが,ぼかしなどを含む場合は,ちょっとしたテクニックが必要になったりするので,紹介.

... read more (article/Beautiful-eps-generation-with-Inkscape)
article/Find-correct-mathematical-notations

How to find correct mathematical notations

正しい数式表現の探し方

[math]
2009-05-26

論文やレポートなどで数式を書くとき,たまに正しい書式を忘れてしまうことがある. (例) 関数 \((( f_i(x) \))) (iは整数,xは実数ベクトル)の,iが \((( i=\arg\max_{j}(q_{j}(x))\))) で与えられるような場合を表したい.もちろん,

\$$$ f_{\arg\max_{j}(q_{j}(x))}(x) \$$$

と書けるのだが,ちょっと見にくいので

\$$$ f_i(x) \mid_{i=\arg\max_{j}(q_{j}(x))} \$$$

こんな感じの書式で書いてみよう.あれ,これって正しかったっけ?

... read more (article/Find-correct-mathematical-notations)
article/Shooting-game-on-console

Shooting game on console

コンソールで動くシューティングゲームを作ってみた

[c++][linux]
2009-04-02

眠かったから,ncurses ライブラリを使ってシューティングゲームを作ってみた.10年以上昔,N88-BASICで同じようなプログラムを作ってたのを思いだした.

... read more (article/Shooting-game-on-console)
article/Script-executed-when-file-is-created-using-inotifywait

Script executed when a file is created using inotifywait

inotifywait を使って,ファイルが作成されたらアクションを起こすスクリプトを書く

[linux][bash]
2009-04-01

例えば,ディレクトリ /tmp/hoge に print.ps というファイルが作成されたら,それを自動的に印刷するようにしたい場合,ファイル作成イベントを監視する必要がある. inotifywait というコマンドを使えばそれが簡単にできるので,紹介する.

... read more (article/Script-executed-when-file-is-created-using-inotifywait)
article/Network-trouble-Debian-squeeze

Network trouble when upgrading Debian to squeeze

Debian を squeeze にアップグレードしたらネットワークにつながらなくなった

[linux][bug]
2009-03-29

Debian を squeeze にアップグレードしたら,再起動後ネットにつながらないので ifup を実行すると,

~% sudo ifup eth0
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring up eth0.

というエラーが発生していた.

... read more (article/Network-trouble-Debian-squeeze)
article/Initialization-of-vector-using-va_list

Initialization of arbitrary-length vector using variable argument list

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

[c++][liboctave][trick]
2009-03-04

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> 型を生成し,それが [-5.0, 10.0, 3.0, 1.0, 2.0] の要素を持つようにする.

... read more (article/Initialization-of-vector-using-va_list)
article/Careful-to-simultaneous-specialization-and-explicit-instantiation

Be careful when doing specialization and explicit instantiation of template simultaneously

テンプレートクラスの「特殊化」と「明示的インスタンス生成」を同時に使う場合は注意が必要だ

[c++]
2009-02-18

テンプレート関数の明示的インスタンス生成で解説したように,テンプレートクラスとかテンプレート関数を明示的にインスタンス化しておくことで, インスタンス化しておくことで,

  • ヘッダファイルの肥大化(コンパイル速度の低下)
  • 望ましくない実装の公開

といった問題を避けられる.一方,テンプレートクラスやテンプレート関数で,ある型についてのみ特殊な実装を行う,「テンプレートの特殊化」という技術がある(過去の記事で何度か使っている).本記事では,インスタンス化と特殊化を同時に使うと,思わぬ落し穴にはまることを,サンプルを交えながら解説する.

... read more (article/Careful-to-simultaneous-specialization-and-explicit-instantiation)
article/Can-namespace-A-and-B-A-coexist

Can namespace A and namespace B::A coexist?

名前空間 A と名前空間 B::A は共存できるか?

[c++]
2009-02-07

ちょっとした実験.

  namespace A {...}
  namespace B { namespace A {...} ... }

のように,既に存在している名前空間 A と同じ識別子の名前空間を,別の名前空間 B の中に作ることはできるか? また,作られた場合どうやってアクセスするのか? を調べる.

... read more (article/Can-namespace-A-and-B-A-coexist)
article/Screen-cast-tool

Screen cast tool

スクリーンキャストツール

[linux]
2009-02-02

手軽に使えるスクリーンキャストツールが欲しかった.スクリーンキャストというのは,画面を数10フレームごとにキャプチャし,動画として保存すること(→ Wikipedia).これがあるとプレゼンとかで便利. recordMyDesktop というツールが,個人的にベストだったので紹介.

... read more (article/Screen-cast-tool)
< Past 20 pages | 61 to 80 | Next 20 pages >

Last-modified:2015-01-04 (Sun) 22:03:53 (3780d)
Link: MenuBar(2844d) Top(2844d) article/Explicit-instantiation-of-template-functions(3784d)
Site admin: Akihiko Yamaguchi.
Written by: Akihiko Yamaguchi.
System: PukiWiki 1.5.0. PHP 5.2.17. HTML conversion time: 0.031 sec.