Development

Borland C++ Compiler 5.5 の環境設定

第1回 C言語に触れてみよう | 日経 xTECH(クロステック) を読んで「Borland ってフリーのコンパイラがあったのかぁ」と今更ながらに気づいたので,CLX C++ Libraries を BCC5.5 に対応中*1.対応版は後ほどリリースするとして,今回は BCC5.5 で CLX C++ L…

メールフォーム

最近,メールフォーム用の CGI を求められる事が多いので簡単な関数を書いておく事にしました.メールを送る方法については,sendmail を叩くのが一番楽なようです. SENDMAIL_PATH = "/usr/sbin/sendmail" def sendmail(from, to, subject, message) requir…

プログラミングの魔導書 Vol.1

関連 URL 一覧 著者達によるもの Life like a clown - とある C++ の魔導書 Faith and Brave - C++で遊ぼう - 「プログラミングの魔導書」の情報公開 本の虫 - 新しいプログラミング雑誌の発行 本の虫 - プログラミングの魔導書 Vol. 1のレビュー melpon日記…

手のひらツールの実装

画像などが画面に入りきらずスクロールバーが表示されている場合に,マウスのドラッグでスクロールさせる機能(所謂,Adobe Reader などの「手のひらツール」)を実装する必要があったので調べてみました. スクロールバーの表示 手のひらツールの実装の前に…

Form の this.Activate() について

たまに Windows フォームアプリケーションを書く機会があるのですが,この時にいつも悩むのが「起動時にウィンドウを前面に表示させる」方法でした.ぐぐってみると他のウィンドウからフォーカスを奪って前面に表示させるためには this.Activate() を使えば…

プログラミング言語の習熟度

プログラミング言語経験を列挙する場合、以下の指標を資料内に併記してください付記例) Perl (5), Python (4), C (3), C++ (2) レベル5 マスターレベル。拡張ライブラリを記述できるだけでなく、言語の内部仕様、処理系の実装等についても明るい レベル4 問…

エンコード処理のインターフェース

clx ver 0.17.0 で,これまで個々に実装していた,文字列を何らかの形にエンコードする関数群のインターフェースを統一しました.具体的には,hexdump(), base64::encode(), base64::decode(), html::escape(), html::unescape(), uri::encode(), uri::decod…

環境変数の状態を保存する EnvironmentSaver

一時的に環境変数の値を変更する必要が出たのですが,変更した環境変数の値を元に戻す作業が煩わしくなってきました(変更するキーが増えたときに戻し忘れたりするなど・・・).そんな訳で,環境変数のある時点における状態に自動的に戻してくれる Environm…

VC++ 2010 の環境設定

Visual Studio 2010 も出たと言うことで,久々に Windows (VC++ 2010) でも CLX C++ Libraries のコンパイルテストを通して行ったのですが(通常時は,zlib,OpenSSL 辺りのライブラリが必要なものは cygwin 上でしか確認してなかった),環境設定のメモがど…

PS/EPS/PDF を SVG に変換する

gs -h と打ち込んでボーっとヘルプを眺めていると気になる文字列がありました.Ghostscript のチュートリアルページでは見つけられませんでしたが,どうやら Ghostscript は SVG 用のデバイスも持っているようです.したがって,Ghostscript を使って PS/EPS…

多言語対応のメッセージ表示

インストーラーを作成する必要が出てきたのでググってみたところ,Inno Setup が好評だったのでこれを使ってみました.スクリプトを GUI ベースで生成できる ISTool を併用していますが,なかなか快適に書けています.その中で,どうやるのか分かりにくかっ…

「参照渡し」まとめ

以前に「参照渡し (call by reference)」と言う言葉の使われ方の歴史が気になったので調べた事がありました.以下は,そのメモです. Pascal Pascal では,値渡し (call by value) と参照渡しの両方が存在します.ただし,Pascal では「参照渡し」と言う言葉…

インターフェースを統一する事の利便性と難しさ

追記: 特に修正を加えずこのままにしておきますが,コメントの指摘内容と私の回答内容がズレてるかもしれません(http://d.hatena.ne.jp/tt_clown/20100513/1273746825#c 参照).「C++ は難しいから」と言う定説 - Life like a clown に付いたコメントへの…

Ghostscript API の使い方メモ

嵌りに嵌ったのでメモ.Ghostscript は,コマンドライン(多くの場合 gs.Windows だと gswin32c)の他にライブラリから API を直接呼び出す方法が提供されています.これらの API の基本的な使い方は,以下のように gsapi_new_instance(), gsapi_init_with_…

PDF ファイルの解析

PDF ファイルを解析 (parse) する必要があったので,その触りだけ紹介(と言うか,必要な目的がこれだけで終わってしまった).PDF ファイルは,以下のような書式になっています. %PDF-1.X 1 0 obj << /Type /Catalog /Pages X 0 R >> endobj 2 0 obj << /C…

x64 Windows でのレジストリの扱い

嵌ったのでメモ.64bit OS が出現した事でレジストリの扱いが少し変化していたようです.例えば,以下のコードで得られる結果は,ビルド時の設定,実行環境によって異なってきます. Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachi…

プログラムのパスを検索する

あるプログラムから外部プログラムを起動する必要があったのですが,この際に外部プログラムのパス(インストールされたディレクトリ)を取得するのはどうすれば良いのだろう?と言う事が問題となりました.そこで,ちょっとぐぐってみたところ,どうやら Wi…

イテレータの比較

プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集 - ZDNet Japan の中の「ループを使わずに配列の順序を逆にする。」と言う問題で,「再帰を使って記述しろ」と言う意味なのかなぁと以下のようなコードを思いついたのですが,ここで一つ…

とある C++ の魔導書

本の虫: 我々はプログラミング雑誌を創刊す http://slashdot.jp/developers/10/03/01/0310246.shtml ひょんな事から雑誌に記事を書く機会を頂きました.今回は,その宣伝を兼ねてイントロ的な何かを.創刊号は C++ オンリーだそうです.「無謀のキワミ」と言…

branch と leaf の分け方

メモ.あるディレクトリで複数のプログラムを実行するので実行時のパスを“ディレクトリ (branch)”と“プログラム名 (leaf)”に分けようと思ったのですが,そう言えば branch と leaf の分け方ってどうするのが一般的なのだろうと疑問に思いました(最後がファ…

クラス設計メモ

機能をどうクラスに分けるかについて,C++ を触りだした頃からの意識の変遷のメモ.特に何かの根拠があると言う訳ではなく,私が(特に C++ を触りだした初期の頃に)感じていた事です.「ある機能を実現する際に何個のクラスを出現させても良いか(使用者に…

はてな的プログラミング言語人気ランキング

この記事で更新していた「基礎文法最速マスター」のまとめは,現在,プログラミング言語「基礎文法最速マスター」ランキング にて更新しています.この記事の更新は停止していますので,最新の結果はそちらを参照下さい.ここ最近,「○○○ 基礎文法最速マスタ…

エラー通知方法の古今東西

ちょっと前に,エラー通知の方法について一部界隈で盛り上がっていました.それを見てるうちに,そう言えばエラー通知方法ってあまり意識した事ないなと感じたので,ここで一度纏めてみます.尚,以下は C 〜 C++ を対象として記述しているので,他言語だと…

Java の参照と C++ の参照の違い

kimuraya Javaでは、参照型を引数として渡す時は、C++で言う参照渡しに相当する処理を行っているようだな。そうでないと、Javaの動作は説明出来ない。 bleis @kimuraya よくある勘違いですけど違いますよ。Javaで参照型を引数として渡すときは、意味的にはC+…

どういう場面で new を使うか?

先ほど Twitter において new 談義で花が咲いていたのですが,この際に「どういう場面で new を使うべきなのだろう?」と,ふと疑問に思いました.そこで,今回は「new を使う場面」を挙げてみようと思います.尚,ほとんど何も分からないまま書くので誰かの…

Hello, wonderful logging world!

この糞のような,素晴らしき(デバッグ)人生. と言う程でもないのですが,少し真面目に(デバッグ)ログの残し方について学習します.「えーマジ Logger 知らないの!?Logger 知らないで許されるのは小学生までだよね!」と言われそうですが,「最近の小…

ストリームから読み込んで STL コンテナに格納する

今まで,std::istream から std::string 辺りに一括で読み込む関数を適当に書いていたのですが,これを少し真面目に実装してみます.最初は,std::getline(in, s, char_traits::eof()) とかすれば良いのかなと思ったのですが,delim (第 3 引数)は char 型…

TrueType フォント名を取得する

TrueType フォント名を取得する必要があったので作成してみました.今回必要だったのは,(ASCII での)フォント名とフォント・ファイル名(*.ttf)のマッピング,および日本語でのフォント名と ASCII でのフォント名のマッピングでした.尚,コードは FontF…

車輪の再実装

「俺のソースだから」というプログラマは死んだらいいのに - 神様なんて信じない僕らのために に関連して,Twitter で「車輪の再発明」の意義について少しやり取りをしていました.プログラマが避けて通れない道の一つに「車輪の再発明」があります.私自身…

複数の値を一つの変数に纏める関数 combine とメタ関数 combineN_

様々なファイルのフォーマット解析をしていると,ファイルタイプの識別用などの理由で「マジックナンバー」が現れる事があります.これらのマジックナンバーは実は文字列である事が多く(例えば,*.bmp のマジックナンバーは 0x424D == {'B', 'M'},*.gif の…