2008年7月26日土曜日

【Windows API】 テキスト表示の背景を透明に設定する。

TextOut()やDrawText()などはデフォルトでは背景が白く出力されてしまう。
背景色を透明にするには以下の関数をコールするだけ。

SetBkMode(hdc, TRANSPARENT);

ラベル: , ,

2008年7月25日金曜日

【C/C++】 charからwchar_tへの変換関数mbstowcs()



char *c = new char[256];
...
size_t len = strlen(c);
wchar_t *wc = new wchar_t[len];
size_t rc = mbstowcs(wc, len);
...



文字化けするときは

setlocale( LC_ALL, "Japanese_Japan.932" );

を試す。

ラベル:

【C/C++】 wchar_t型の文字数を返す関数wcslen(wchar_t *)



wchar_t *c = new wchar_t[256];
...
size_t len;
len = wcslen(c);
...



文字化けするときは

setlocale( LC_ALL, "Japanese_Japan.932" );

を試す。

ラベル:

【MySQL】 ネットワーク・ログインできないときはbind-addressも確認する。

MySQLで他のホストからネットワークを介して接続したいときは、/etc/mysql/my.cnfの以下のパラメーターをコメントアウトする。

bind-address=...

また、他にもgrantコマンドによる権限の付加、iptablesのファイアーウォールの設定、ルーターの設定なども確認しておく。

ラベル: , ,

2008年7月21日月曜日

【MySQL】 ダウンタイム(ほぼ)ゼロでMySQLサーバを引っ越す。

これから紹介する作業はシステムを破壊する可能性がかなり高いです。
やるなら自己責任で。

環境
MySQL 5.0
マスターのバイナリログが有効である必要あり。

slave> stop slave;
slave> change master to master_host='master_hostname', master_user='root', master_password='root_password', master_port=3306, master_log_file='mysql-bin.0000xx', master_log_pos=4;
補足:mysql-bin.0000xxは一番新しいものを指定する。
追記:上の太字が必要でした。

master> grant replication slave, replication client, super, reload on *.* to root@192.168.11.xx identified by 'root_password';
補足:192.168.11.xxにはスレーブのIPアドレスを指定する。

slave> stop slave;
slave> load data from master;
slave> show slave status; show databases;
slave> start slave;
補足:load data from master;は時間がかかるので注意。また、インデックスなどはスレーブのパラメーターが使用されるので注意。

無事データベースレプリケーションが終わったら、マスターの設定を削除しとく。
LAMPなどの環境なら、アプリケーション層がスレーブのDBを参照するよう設定を変更する。

ラベル: ,

2008年7月20日日曜日

iPhoneのUser-Agent

Apache2のログより、iPhoneのUser-Agentは以下のようになっとります。

"Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/xxxxx Safari/525.20"

ラベル:

【MySQL】 インデックス再構築・再作成

MySQLではインデックスのパラメータを変更した場合など、インデックスの再構築が必要になることがある。

MySQLにログインしてから、以下のコマンドで再構築・再作成が始まる。
mysql> REPAIR TABLE tbl_name QUICK;

テーブルサイズが大きいと結構時間がかかる。
その間大きな負荷がかかるので注意。

ラベル:

2008年7月16日水曜日

【Ubuntu】 apt-getでphp5をLAMP環境に追加する。

PHPのインストールシミュレーション。
sudo apt-get -s install php5 php5-mysql

実際のインストール。
sudo apt-get install php5 php5-mysql php-pear

PEARも簡単インストール。
sudo pear install -a Log

設定ファイルなど。
sudo vi /etc/apache2/mods-available/php5.conf
sudo vi /etc/php5/apache2/php.ini

Apache設定再ロード。
sudo /etc/init.d/apache2 reload

適当なスクリプトでテストする。
例えば、
<?php phpinfo(); ?>

ラベル: , ,

2008年7月10日木曜日

HDの占有率を調べるのに最適なフリーソフト

DiskInfoはハードディスクの占有率をしらべるのにもってこいだ。
しかもフリーソフトである。
しかもインストール不要である。
しかも実行ファイル単体で動く。

窓の杜のここからダウンロードできる。

ラベル:

【Vista】 Windows Vistaで仮想ファイルを使用してないけど、pagefile.sysが残る件について。

Windows Vistaでは仮想ファイル(スワップファイル)を使用しない設定にしても、pagefile.sysが居残る。
これはハードディスクの無駄遣いである。

ドス窓から管理者権限で以下のコマンドを実行する。

del /A:H c:\pagefile.sys

参考:VISTAのスワップファイル無効方法

ラベル:

【Vista】 Windows Vistaで休止状態を設定したけど、ファイルが消えていない。

Windows Vistaでは休止状態に設定してもHiberfil.sysファイルは消えない。
これはただのハードディスク無駄遣いである。

削除するには管理者権限で以下のコマンドをドス窓から実行する。

powercfg.exe /hibernate off

参考:Windows Vista を実行しているコンピュータ上で休止状態を無効にする方法および再度有効にする方法

ラベル:

【SQLite】 SQLiteをVCから使う

本家から以下をダウンロード。
sqlite-source-3_5_9.zip
sqlitedll-3_5_9.zip
同じフォルダーに展開して、VCのlib.exeコマンドでsqlite3.libを作る。

lib.exeはC:\Program Files\Microsoft Visual Studio 8\VC\bin\lib.exeにある。
また、mspdb80.dllでエラーが出る場合は、C:\Program Files\Microsoft Visual Studio 8\Common7\IDEからコピーしておく。

C:\sqlite-3_5_9> lib.exe /def:sqlite3.def

sqlite3.libが出来ていることを確認する。

VCでsqlite3.hをインクルードに、sqlite3.libをライブラリに加える。
リンカの入力にある追加の依存ファイルにも追加することを忘れない。
これでVCで使うための準備完了。

SELECTを実行するサンプルプログラム。
まず、データをコマンドから入力しておく。

# sqlite3 test.db
sqlite> create table test (id integer primary key, title char(256), desc text);
sqlite> insert into marker values('1', 'Test01', 'This is a test!');
sqlite> select * from test;
sqlite> .header on
sqlite> .mode column
sqlite> select * from test;
sqlite> .help
sqlite> .schema
sqlite> .table
sqlite> .q


C言語のコード


#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "sqlite3.h"

using namespace std;

int main(int argc, char** argv)
{
sqlite3* db;
int err;
char* db_name = (argc > 1) ? argv[1] : "test.db";

// open database
err = sqlite3_open(db_name, &db);

if (err != SQLITE_OK) {
// show error and exit.
fputs(sqlite3_errmsg(db), stderr);
exit(1);
}

// select
sqlite3_stmt* select_sql;
char *sql = "select * from test;";

err = sqlite3_prepare(db, sql, strlen(sql), &select_sql, NULL);

while ((err = sqlite3_step(select_sql)) == SQLITE_ROW) {
int id = sqlite3_column_int(select_sql, 0);
const unsigned char *title = sqlite3_column_text(select_sql, 1);
const unsigned char *desc = sqlite3_column_text(select_sql, 2);
cout << title << endl;
cout << desc << endl;
}

sqlite3_finalize(select_sql);

// close database
err = sqlite3_close(db);

return EXIT_SUCCESS;
}




今回のエントリーはこちらを参考にしました。

ラベル: , ,

【相関くんのブログ】 6月の株価同士の相関と株価・為替間の相関に対応

相関くんでは、日経平均225銘柄の間の相関、NASDAQ/S&P/DOWと日経225の相関、米ドルと日経225の相関が調べられる。
6月のデータが計算された。

ラベル: ,

2008年7月7日月曜日

【Ubuntu】 パーティションの管理GParted (フォーマットなど)

Ubuntu 7.10 Gutsy

ハードディスクなどをフォーマットしたいときにGPartedが使える。
このツールはUbuntuのインストール時にパーティションを切ったりするときに使ったものと同じ。

インストールするには

# sudo apt-get install gparted

とするだけ。
システムメニューからシステム管理、パーティションエディタを開く。

システムを破壊する可能性があるので、細心の注意で操作してください。

ラベル:

2008年7月2日水曜日

.NET Framework 1.1をアンインストールしても大丈夫か?

.NET Frameworkが1.1, 2.0, 3.0と多すぎて、アンインストールしたい。
MSは下位互換性があるという見解らしい。
これを信じると.NET Framework 2.0か.NET Framework 3.0をインストールしておくとたいてい動くことになる。

「Windows Vistaにおける.NETアプリケーションの互換性問題」によると.NET Framework 1.1のアプリケーションは.NET Framework 1.1がある環境では.NET Framework 1.1を使って動作するらしい。
また、異なるバージョンの.NET Frameworkでは問題がまったくないわけではない。

ということで、全部残しておいたほうが無難だ。
特に.NET Framework 1.1は一番使われている。
また、.NET Framework 1.0はVistaで見捨てられているので、特に必要性は感じられない。

ラベル: ,