proxyを設定してHTTP通信 [プログラミング]
Javaでは、HTTP通信をするプログラムを簡単に作ることが出来ます。
final String urlStr = "http://~~"; // 通信相手のURL HttpURLConnection conn = null; try { final URL url = new URL(urlStr); conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); conn.connect(); if (conn.getResponseCode() == 200) { BufferedInputStream in = null; try { in = new BufferedInputStream(conn.getInputStream()); while (true) { final int data = in.read(); if (data == -1) break; // @@@ 取得したデータを、どうにかする @@@ } } finally { if (in != null) in.close(); } } } finally { if (conn != null) conn.disconnect(); }
C++で正規表現(vbscript.dll編) [プログラミング]
C++で正規表現を使います(その2)。
Windowsでは、VBScript用の正規表現を他のプログラムから利用できるようになっています。COMテクノロジを使うことで。
C++で正規表現(boost::regex編) [プログラミング]
10進数と16進数の整数クラス(実装編) [プログラミング]
(前回までのあらすじ)
10進数で書かれた整数を扱うクラスがありました。
10進数と16進数の両方を処理できる様に拡張することになりました。
typedef MultiRadixValue<DecValue, HexValue> DecHexValue; int main() { char buff[100]; std::cin >> buff; DecHexValue value(buff); if (value.is_valid()) { std::cout << value.get_int() * 2 << "\n"; } else { std::cout << "数値ではない\n"; } return 0; } typedef MultiRadixValue<DecValue, HexValue, OctValue> DecHexOctValue;
そして、色々と考えた結果、こんな感じに使えるクラスが良かろうという結論になりました。
(あらすじ終わり)
Javascriptで連想配列 [プログラミング]
前回、こんな話をしました。
Javascriptで文字列を添え字にする配列(通称「連想配列」)を作るには、プロパティを一切持たないクラスで代用する。
でも、メソッドとかが無いから使い勝手が悪いのでラッパクラスを作ろう。
Javascriptの配列 [プログラミング]
Javascriptで配列を扱うには、クラスArray
を使います。
var a = new Array(); a[0] = 1; a[1] = "a";
添え字([ ]
の中)は、0からの連番になっているので、大きさ(要素数)が"N"の配列では、添え字に0~N-1が使えます。
とは言え、配列の大きさは必要に応じて自動で増えていくので、あまり気にすることはありません。
ところで、
某有名サイトでは、Javascriptの配列(Array
)の説明に、次のようなことが書いてありました。
(Javascriptの配列では)添え字に文字列を指定することが出来ます。
つまり、こんな↓使い方も出来るという事です。
var a = new Array(); a["apple"] = "りんご"; a["banana"] = "バナナ";
VC++6のDLLでSTLを使う [プログラミング]
大いに今更感満載なのですが、Visual C++ 6 の話です。
Visual C++ 6 に付属のSTLは、微妙に“使えない”代物だったりします。
それが、STLの実装に依るのか、VC++6コンパイラのテンプレート解釈の所為なのかは知りませんが。
その“使えない”理由のひとつに、
『std::vector
以外のSTLコンテナのインスタンスを、DLLとDLLを使用するexeの間で、共有できない』
というのがあります。
SetTextCharacterExtraとDrawTextとWindows XP [プログラミング]
VisualC++で画面に文字を出力する時、SetTextCharacterExtra()
API を使う事で文字と文字の隙間(文字間隔)を指定することが出来ます。
CDC* pDC; ... pDC->SetTextCharacterExtra(10); pDC->TextOut(0, 0, _T("あいう"));
とすると、「あ」と「い」、「い」と「う」の間に10ずつ隙間が開きます。
iTextを使ってPDF作成 - 注釈 - [プログラミング]
iTextを使ってPDF作成 - 振り仮名 - [プログラミング]
iTextを使ってPDF作成 - ページ番号 - [プログラミング]
変数名で動作を変える。 [プログラミング]
void output(const char* mes);
というインターフェースを持つ関数がありました。
この関数を呼ぶと、引数で指定した文字列を表示します。
ぶっちゃけ、こんな関数です。
void output(const char* mes) { puts(mes); }
で、文字列は定数で定義されていて、output
関数は定数名を指定して呼び出すことになっていました。
const char* MES1 = "メッセージ1"; const char* MES2 = "メッセージ2"; const char* ERR_MES1 = "エラーメッセージ"; void func() { output(MES1); output(MES2); output(ERR_MES1); }
そんなある日のこと………。
アンインストーラ作成日記 前編 - 「プログラムの追加と削除」へ登録 [プログラミング]
仕事で作っていたソフトウェアで、客から「インストーラを作ってくれ」との要望が発生。
「適当なディレクトリにコピーするだけだから、不要では?」とも思ったのですが、開発費がちゃんと出るので作ることになりました。
「(業務で使用するソフトウェアだから消すことは無いので)アンイントーラは必要ない」との事だったので、ディレクトリ選択ダイアログを表示して、そこにファイルをコピーするだけのチャチなインストーラを作成しました。
数ヵ月後。
ショートカットが参照しているファイルを取得 [プログラミング]
ファイル選択ダイアログでショートカットファイルを選択すると、自動でショートカットファイルが指しているファイルのパスに変換してくれます。
一方、ショートカットファイルをアプリケーションのウィンドウへドラッグ&ドロップすると、ショートカットファイルのパスが得られます。
「メモ帳」で試してみよう。
ショートカットファイルをメモ帳のウィンドウにドラッグ&ドロップすると、ショートカットファイルの中身が見えます。
もちろん、それでは都合が悪いわけで、ショートカットファイルのパスから、ショートカットが指し示しているファイルのパスを取得します。
ショートカットファイルを作成する。 [プログラミング]
ショートカットファイルを作るには、拡張子が「.lnk」のファイルを作って、色々とファイルにデータを書き込めば良いのですが、.lnkファイルのフォーマットがよく解らないので、素直にAPIを呼び出すことにします。
環境変数を設定する。 [プログラミング]
とあるソフトウェアをインストールしたディレクトリに、パスを通す事になりました。
(インストーラが)デスクトップとスタートメニューにショートカットを作成するのだから、わざわざパスを通す必要なんか無いと思うのですが、どうやらコマンドプロンプトから起動したいという人がユーザに居るらしく、是非やってくれと言う事なのです。
そんな訳で、インストールしたディレクトリをパスに追加する機能をインストーラに仕込むことになりました。
double型の値を文字列に変換 [プログラミング]
String a; String b; String c; (略) String s = a + b + c;
Javaで、こんなコードがあったとします。
文字列同士の加算は文字列の連結として解釈されます。