雷零霆

更新履歴
一覧
CodePlexにおいて利用できるライセンスに関して
HatenaBlog 後で見る機能の実装
BoostC++インストール!(1.47)
string を wchar_t に変換
7インチ_タブレット
Project Euler
iPhone iPad のフォルダを移動
アセンブリを習ったのでまとめ
Adobe AirでGoogleのタスク(ToDo)の表示する物の作成
Adobe Air 簡易自己署名
Adobe Air インストール
クラスタリング関連のキーワード
物体検出
このHPでのタグについてのメモ
検索の実装
Android 技術メモ
table_に関して
GoogleReader読み辛いから、ちょっとしたエクステンション作った。
ルビ(ふりがな)をふる HTML5
エラーはどこに表記される?
Visual Studio 2010 で邪魔な警告の抑制
Gmail未読のみ表示
指定要素が多くなってきた時の注意
ソースコードの表示の見た目をきれいに!
安全なウェブサイトの作り方
$_GET[]のエラーに関して
気になる単語
FireFox と Google chrome でイベント取得
メニューの動作
マウスホイール制御
文章のまとめ方
HTML編集:aptina studio
フィルタ名
STL基本
WINAPIで透過処理
openCV導入+オプティカルフロー
samba参考サイト
libの出力
テスティングフレームワーク(プログラムテスト)
STLアルゴリズム
HP一新
C++でのDirectShow
jQuery参考サイト
関数例:マウスオーバーで画像オープン
アラート表示
jQueryの子要素、子孫要素(セレクタ)の指定
as演算子
授業メモ
mainを利用しないでクラスを利用するために【VC++】
ライブラリのリンク #pragma
初めての練習~HTML~
ワイド文字の入力ストリーム
BSTR型
詳細ページへのリンク
Windows7+VS2010+C++の設定
利用予定のもの
jQuery
もし自宅サーバーにするなら
マルチバイト文字列エンコーディング
はじめに
参考書籍
文字列について(比較速度に関して)
ハッシュテーブル
リスト構造
インクリメントの利用に関して
イテレータを利用する利点
コンテナの種類
キャッシュミスの回避
クイックソート
C言語の関数を利用する
キャストの種類
クラス内のコンストラクタ初期化
インライン関数
ファイル内のみのグローバル変数
D&Dを追加
テストの日記?
32bitから16bitバージョンのVisualC++にアクセスする
C++/CLI でプロパティを利用する
昌紀の館の面白話
URLメモ
素晴らしい、イメージ映像
日付データの形変更:mktime
JavaScriptの自動合計をPHPで書いてみた。
chromでFlashのバージョンダウン
HTMLで一行選択を可能にする
iTunesのライブラリの共有
プログラムから開くに追加されない
分割コンパイル
WindowsXPポート開放の注意事項
WindowsXPポート開放の注意事項
送るにショートカットを追加する方法
コマンドプロンプトを表示させない
削除するべき警告メッセージVS
GDI+をつかってみた
WINAPI: ini ファイルの利用
WINAPI:ドラッグアンドドロップ
WINAPI:終了メッセージ
lib ファイルをプロジェクトに追加
文字列検索:完全一致
アイコン関連
パスがディレクトリかを判断
他のプログラムを実行
文字の判定
ファイルの更新を監視する
インターフェイス
仮想関数、純粋仮想関数
抽象クラスの使い方
プロパティ
プラグインの生成と実装
lnkの情報取得
送るにショートカットを追加する方法
JavaScriptツリー表示
TOP

コンテンツから検索します

コンテンツの文字列と一致する物をアルファベットは入力する毎に自動検出、日本語はエンターキーを押すと検索できます。

更新履歴

2011/11/13 コンテンツ検索において、スムーズに検索できるよう改良

2011/11/05 イメージサムネイルを作成して、表示をするように変更 幅:300px

2011/11/04 外部から飛ぶためのURLを記事に表示するように変更

2011/11/04 ウェブページの外から特定の記事に飛べるように改良

2011/11/02 IEで利用できる簡易ページ作成(動作が遅いです)こちら

2011/11/02 検索を実装 ※enterキーでの利用ができません

過去の更新履歴を表示

2011/11/02 記事の表記を調整
        ・右上に場所と時刻を表示するように変更
        ・行間を調整

2011/11/02 更新履歴を最終更新日時で更新するように変更

2011/11/01 ホイールスクロールでメニューのスクロールに対応

2011/11/01 HTML5を利用してFirefoxでも同様の表示方法になるように作成

2011/11/01 HPをリニューアル

CodePlexにおいて利用できるライセンスに関して
その他 in メモ
最終更新日2013-08-11 14:34:40   作成日2013-08-11 14:30:53

CodePlexで利用できるライセンス
Wikiを見て自己解釈で簡易書き直した
(Wikiで見つけれなかったところは、URLを添付)

↓が個人的に良いかなと思っている物

The MIT License

要約すると、MIT Licenseとは次のようなライセンスである。
このソフトウェアを誰でも無償で無制限に扱って良い。ただし、著作権表示および本許諾表示をソフトウェアのすべての複製または重要な部分に記載しなければならない。
作者または著作権者は、ソフトウェアに関してなんら責任を負わない。

Apache License 2.0

ユーザーがそのソフトウェアの使用や頒布、修正、派生版の頒布をすることを制限しない。
Apache Licenseは、頒布される二次的著作物が同じライセンスで提供されたり、フリーソフトウエア、オープンソースソフトウェアとして頒布されることを要求しない。
ユーザーがそのソフトウェアにApache Licenseのコードが使われていることを知らせる文言を入れる必要がある。また、ライセンスされたファイルそれぞれに元々ある著作権と特許権の記述はそのまま保持されなければならず、何らかの修正が施されている場合は、その旨を追加記述しなければならない。
コピーレフトライセンスと異なり、Apache Licenseコードの二次創作物のユーザーには、フリーなライセンスが適用されない可能性もある。

New BSD License

「無保証」であることの明記と著作権およびライセンス条文自身の表示を再頒布の条件とするライセンス規定である。この条件さえ満たせば、BSDライセンスのソースコードを複製・改変して作成したオブジェクトコードをソースコードを公開せずに頒布できる。

Common Development and Distribution License

CDDLでライセンスされたソフトウェアは、使用料が無料であり、無保証で非独占的な利用が可能である。対象ソフトウェアの品質、及び性能に関するリスクは、すべて利用者が負う。
配布にはソースコードの提供が必須である。
特許による規定が定められている。
商用で利用されうるライセンス?

Eclipse Public License

EPLライセンスされたプログラムの受領者は、使用・修正・コピーや、修正したバージョンの配布ができる。
しかし、修正したバージョンを配布する場合はソースコードの入手方法を示すなどの義務が生じる。

GNU General Public License version 2

よくわからない。課金可能を明言しているライセンスみたい。

GNU Lesser General Public License

他のプログラムにリンクされることを前提としたライブラリのためのライセンスとして作成された。
GPLv3と完全な互換性があり、GPLv3にいくつか追加的条項を加えた相補的形式を採用している。
しかし、「顧客(カスタマー)自身の利用のための改変ならびにそのような改変をデバッグするためのリバースエンジニアリング」を許諾する必要がある。

Mozilla Public License 2.0

Mozilla Foundationによって開発されている各種のソフトウェアに適用されているライセンス。
以上。

Microsoft Public License


Ms-PLは、最も制限が緩い。
被許諾者は、ソース コードを商用または非商用の目的で表示、変更、および再頒布できます。
Ms-PL の下では、被許諾者は、ソース コードを変更したり、他のユーザーに開示することができます。また、変更したソース コードに対してライセンス料を課金することもできます。
著作権および特許権の使用料は両方とも無料。
許諾者は加えた変更を公開する義務はありません。
被許諾者は、著作権、特許権、商標、またはその他の形式の出所を コード内に常に示しておく必要があります。
参考:
http://kurusugawa.jp/2009/06/24/microsoft-shared-licenses/

Microsoft Reciprocal License

参照のみのライセンスで、これによって被許諾者は所定のテクノロジの内部のしくみをより深く理解するためにソース コードを表示することができます。このライセンスでは、変更も再頒布も許可されません。マイクロソフトでは、このライセンスを、主に開発ライブラリなどの テクノロジに使用しています。
HatenaBlog 後で見る機能の実装
HTML in プログラム
最終更新日2012-12-10 03:57:56   作成日2012-12-10 03:49:27

後で見る機能がうまく機能しないし、ページ移動することが気にくわなかったため、対応する。

参考サイト:
http://d.hatena.ne.jp/nazomikan/20110303/1299167055

CSSの内容(見た目に関しての設定)


.next_read{
padding: 0px 50px;
border: medium solid #ccccff;
background-color:#aaaacc;
color:#3333ff;
cursor: pointer;
}

ソースコード


<script>
$(document).ready(function(){
//みたまま編集用
$(\'article.entry\').each(function() {
var $seemore = $(this).find(\'div.entry-content\');
var $data = $seemore.children(\'p\');
if ($seemore.length === 0) return;

// ==== を探してそれ以降の <p> にクラスを付与し、隠す
var flag;
flag = 0;
//alert( $(this).text() );
$data.each( function(){
if( flag == 1 ){
$(this).addClass(\'content_hide\');
$(this).hide();
}
if( $(this).text().indexOf(\"====\") !== -1 ){
flag = 1;
//alert( $(this).text() );
$(this).replaceWith(\' 続きを読む \'); //alert( $(this).text() );
}
//alert( $(this).text() );
});
});

});

$( function() {
//クリックを取得して表示非表示を切り替える
$(\"a.next_read\").click(function(){
//alert( $(this).text() );
$slide_data = $(this).parent(\'div.entry-content\').children(\'p.content_hide\');
$slide_data.slideToggle( \'fast\' );
});
});
</script>
BoostC++インストール!(1.47)
BoostC++ in プログラム
最終更新日2012-02-03 00:49:27   作成日2011-11-03 03:47:29

まず
http://www.boostpro.com/download/
に行き、最新バージョンゲットです!

次に、
boost_1_47_setup.exeを起動し、バージョン選択画面まで進みます。
自分のVisualStudioのバージョンを選択します。

そして、その右のチェックボックスを全て、チェック!

自分の環境はx64なので、
保存先は
C:\Program Files (x86)\boost
です。
後はプロジェクトの設定で
インクルードディレクトリ:\boost_1_47
ライブラリ:\boost_1_47\lib
を指定すれば完了です。
修正:2012/02/03
boostの説明をしているところの多くは
#include <boost/…>
と指定するため、インクルードディレクトリを
\boost_1_47\boost

\boost_1_47
に変更した

string を wchar_t に変換
C++ in プログラム
最終更新日2012-02-01 15:35:05   作成日2011-02-11 04:47:49

やること
wchar_t wstr;
string str("test");
wstr = (LPTSTR)string.c_str();


以上


上記でダメなとき(できるときとできないときあり)
using namespace System::Runtime::InteropServices; //Marshal使うから


String ^srcStr = "Hello";


char* dstChar;
dstChar = (char*)(void*)Marshal::StringToHGlobalAnsi(srcStr);


wchar_t *dstWchar_t;
int strLen = srcStr->Length;
dstWchar_t = (wchar_t*)malloc (*1) ;
for(int i = 0 ; i < strLen ; i++) {
  dstWchar_t[i] = srcStr[i];
}
dstWchar_t[strLen] = '0';


LPSTR dstLPSTR;
dstLPSTR = (LPSTR)dstChar;


LPWSTR dstLPWSTR;
dstLPWSTR = (LPWSTR)dstWchar_t;


//load_file.hpp
#ifndef LOAD_FILE_HPP
#define LOAD_FILE_HPP
/*
ファイルの内容は必ず最後を改行しておく必要がある。
そうしないと、最後の文字が無視されます。
スペースは区切り文字です。認識されません。
全角空白は環境によって使用できません。
環境によってそのまま文字として認識される可能性があるので、注意してください。
*/
#include
#include
#include //atof, ワイド文字
//#include //MB_LEN_MAXを使用: MB_CUR_MAXの代わり
#pragma warning(disable : 4996)
using namespace std;

#define str_size 100 //入力最大文字数

class Load_File{
protected:
typedef struct vec{
wchar_t ss[str_size];
}VEC;
public:
vector v;
VEC n_v;

void Load_File::get_file(const char *); //ファイルの読み込み
int load_vector_data(const char *); //out_fileの個数の呼込 : 返値は個数 : -1:エラー
void out_file(const char*); //ファイルの書出:何項目あるか
void disp(); //表示
void init(); //初期化は必ずここに書くこと
};


#endif

//load_file.cpp
#include "load_file.hpp"

void Load_File::init(){
//ローケルのセット
setlocale(LC_CTYPE, "jpn");
//n_vの初期化
memset( &n_v, NULL, sizeof(n_v));
}

void Load_File::get_file(const char *file_name){
FILE *fp;

if( (fp =fopen( file_name, "r")) == NULL ){
cout << "エラー:fopen"< }

wint_t c;
wchar_t str[str_size]={0};
int j=0;

//flag : 配列のコピーをするかどうか : true 行う
bool flag=false;

while( (c=fgetwc(fp)) != WEOF ){
if( !(iswspace(c)) ){ //空白文字および制御文字 '\f', '\n', '\r', '\t', '\v' でない時
str[j] = c;
j++;
}else{
flag = true;
}
if( flag==true ){
if(j>0){
str[j] = L'\0';
wcscpy( n_v.ss, str);
v.push_back(n_v); //vへの追加
memset( &n_v, NULL, sizeof(n_v.ss)); //コピー後初期化
wmemset( str, L'\0', wcslen(str) );
}
flag=false;
j=0;
}
}
fclose(fp);
}

void Load_File::disp(){
for(int i=0; i< (int)v.size(); i++){
wprintf( L"%d : %s \n",i, v[i].ss );
//cout << v[i].ss << endl; //←数字になる
}
}

void Load_File::out_file(const char *file_name){
FILE *fp;

if( (fp =fopen(file_name,"w"))==NULL ){
cout << "out_error"< }
int i;
i=(int)(v.size());
fwrite(&i,sizeof(int),1,fp);
for(int j=0; j //fwprintf( fp, L"%s\n", &v[i].ss);
}
fclose(fp);
}

int Load_File::load_vector_data(const char *file_name){
FILE *fp;

if( (fp=fopen(file_name,"r" ))==NULL ){
return -1;
}
int i=0;
fread(&i,sizeof(int),1,fp);
for(int j=0; j memset( &n_v, NULL, sizeof(n_v)); //コピー後初期化
v.push_back(n_v);
}
fread(&v,sizeof(v),i,fp);

fclose(fp);
return i;
}
7インチ_タブレット
ネタ in メモ
最終更新日2012-01-10 23:50:50   作成日2011-10-17 16:51:15

レノボ、4色展開で7インチの「IdeaPad Tablet A1」 - ケータイ Watch
http://k-tai.impress.co.jp/docs/news/20111013_483406.html
が結構良さげ!!!

でも、富士通のこれも良さげ…価格とか分からないが
[ITpro EXPO 2011]富士通が未発表の7インチAndroidタブレットを展示 - ニュース:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20111013/370633/?ST=itproexpo

レノボ:
IdeaPad Tablet A1
・大きさ:195*125(7インチ) 奥行き:11.95(mm)
・重さ:400g
・解像度:1024*600
・容量:最大16G
・メモリ:512M
公式より
http://shopap.lenovo.com/jp/products/tablets/ideapad/a1

これも良い感じ・・・

追記:2011/11/02
Eee Pad MeMO
参考:
http://www.google.co.jp/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=Eee+Pad+MeMO
静電方式と筆圧検知スタイラスに対応
1280*800 IPS液晶を利用 3D対応
駆動時間:10時間
Qualcomm製 Snapdragon 1.2G デュアル
3Dとか要らないから、値段を抑えてほしいな・・・
この性能だと4万は軽く超えそう
入力方式が二つというのはとても魅力的だが!


kobo vox ereader
参考:
http://www.kobo.com/kobo-vox.html
値段:$199.99
色:4色
日本語対応
とのことだが、よく分からん・・・情報待ち

追記:2011/11/06
XOOM 2 Media Edition
参考:
http://pc.watch.impress.co.jp/docs/news/20111104_488658.html
サイズ:8.2インチ
CPU:1.2GHz
OS:Android3.2
メモリ:1G
容量:16G
重量:386g
バッテリ駆動:6時間(WEB閲覧時)
とのこと、このサイズは分からないので、すごく触りたいな!でも「英国およびアイルランドで11月中旬より発売」とのこと。
ちょっと残念


GALAPAGOS EB-A71GJ-B
参考:
http://k-tai.impress.co.jp/docs/news/20111116_491116.html

CPU: Tegra2
ROM:8GB
RAM:1GB
BluetoothやGPSに対応し、加速度センサー、ジャイロセンサー、方位センサー、照度センサーを備える
microHDMI端子やヘッドフォン端子(ステレオミニジャック)、microUSB端子を搭載
5万9800円


TOUGHPAD FZ-B1
参考:
http://freesoftweb.blog61.fc2.com/blog-entry-1087.html

鈍器(966g)
10万


追記:2011/12/10

eden TAB
http://www.checker-s.com/news_bZ1HT6zYQs.html
キングソフト関連会社 Mobile In Style から2012年1月発売
広告方式:どのように広告が入るか記述無し

予想価格:29800円
重量:348g
CPU:S5PC210 (GALAXY SII:4インチちょいと同じ)
バッテリー:3820mAh
Androidマーケット:非対応
Android 4.0にアップデート予定
個人的に値段の割に魅力が少ない…
広告方式の詳細が分かったら購入してるかも…
rootとてAndroidマーケットに行けるかもとか書かれてたので。

追記:2011/12/24
Meopad(ミーオパッド) ADVANCE
http://k-tai.impress.co.jp/docs/news/20111222_501036.html
http://www.meopad.com/products/MeopadT780A.html

CPU 1G
容量 4G
メモリ 512
バッテリー 3850mAh
通常のUSBが利用できる
CPRM(デジタル著作権保護)に対応
予測価格2万9800円

追記:2012/01/10
NOVO7
参考:http://blog.goo.ne.jp/shiisan_2007/e/914084e9a501f20858659e0a6d094022

一万円($99)
中国製
MIPS
中国製…
Project Euler
その他 in プログラム
最終更新日2011-12-27 15:24:02   作成日2011-12-27 15:21:02

プログラムでどんなものが解けるかの英語のサイト。

面白そうだね!

がんばっていく予定

←自分のスコア

iPhone iPad のフォルダを移動
その他 in メモ
最終更新日2011-12-26 19:54:09   作成日2011-12-26 19:29:33

iPhone iPad のバックアップを取ると自動で
C:\Users\ユーザー名\AppData\Roaming\Apple Computer
が作成され、そこに保存されていきますよね?

そんなの読み込みスピードが落ちてしまいます。

そこで、
【コマンド】
mklink /j "C:\Users\ユーザー名\AppData\Roaming\Apple Computer\MobileSync" "D:\iTunes\MobileSync" 
とすることで、DドライブのiTunes\MobileSyncに保存を変えることができます。

方法は、
C:\Users\ユーザー名\AppData\Roaming\Apple Computer\MobileSync
のMobleSyncフォルダをDドライブにコピーして、上記のコマンドをコマンドプロンプトで入力するだけです。
アセンブリを習ったのでまとめ
その他 in プログラム
最終更新日2011-12-13 00:01:18   作成日2011-12-12 23:56:05

アセンブリを習ってるので、まだ続くけど、一時のまとめ
※誤りがある場合はご指摘いただけるとありがたいです

2011/11/28
suffixに関して
四つ利用するときはpsがつく
_add_psなど(pはpacked, sはsingle)
:float は _add_ps
:double は _add_pd
:int は _add_epi
後ろから二つ目add_psのpの位置
pがついているのはすべて制御し、sのものは一つだけになる

ssは一番右の一つのみ制御する(L~が付いている方向の端を制御する)


ヘッダファイル
ia32intrin.h
を読み込むことでSSEからSSE4まで対応できる

__m128 f; //float{ f0, f1, f2, f3} 変数四つ
__m128d d; //double{ d0, d1}
__m128i i; //floatと同じ区分になる(int型)

インライン関数の命名規則
_mm_<intrin_op(オペレーション)>_<suffix(上のpsなど)>
オペレーションがsetの時の注意点
アセンブリは逆順に入れていく規則を持つ。つまり、右順(PowerPCは左順)

loadよりcastの方が早い

load と store
load 読み込み
stroe 書き出し

rcpは逆数
?割り算をするより逆数をかける方が早い(よく分からん)

hadd:
二つずつ足す

dp:pointwise product
Σxi・yi


2011/12/12 18:41
参考資料:インテルのアセンブリのPDFのページ
名称:Interinsics Reference
http://www.google.co.jp/url?sa=t&rct=j&q=intrinsics%20reference&source=web&cd=1&ved=0CCEQFjAA&url=http%3A%2F%2Fcache-www.intel.com%2Fcd%2F00%2F00%2F34%2F76%2F347603_347603.pdf&ei=_xDmTpLPOI6ImQXhmrH_BA&usg=AFQjCNEzkzke_KgSJuLrVc2Ml5qu2ekNxA&cad=rjt
///////////////////////////////////////////////////////////
//【問1】ここから
/********************************************************
【高速演算の例】
for(int i=0; i<N; i++) r[i] = sqrt(2.5 * a[i]);
の最大値と最小値を求めよ
************************************************************/

float a[N], min[4], max[4]; //Nは4の倍数, aはデータ
__m128 *v_a = (__128 *)a;

//FLT_MAXはlimit.hかfloat.hに定義されている
__128 v_min=mm_set_ps(FLT_MAX); //最小値格納用
__128 v_max=mm_set_ps(FLT_MIN); //最大値格納用
__128 v_r; //計算結果格納用
__128 v_mul=mm_set_ps(2.5);

for(int i=0; i<N/4; i++, v_a++){
*v_a = _mm_mul_ps( *v_a, v_mul );
v_r = _mm_sqrt_ps( *v_a );
v_min = _mm_min_ps( v_r, v_min );
v_max = _mm_max_ps( v_r, v_max );
}
min = _mm_stor_ps( v_min ); //値を書き戻す
max = _mm_stor_ps( v_max ); //値を書き戻す
後はC言語などで std::min などを利用して4つの項目から最小値を求める

//*********************************************************
// 問1ここまで
///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//【問2】ここから
/********************************************************
float a[N], b[N], c[N];
for(( int i =0; i<N; i++){
if( a[i] < 0 ) a[i] = b[i]/c[i];
}
これを計算せよ
【if文の実装(and,orも利用)例】
************************************************************/

__128 *v_a = (__128 *)a;
__128 *v_b = (__128 *)b;
__128 *v_c = (__128 *)c;
__128 mask;
__128 t= _mm_setzero_; //_mm_set_ps(0)?
for(int i=0; i<N/4; i++){
mask = _mm_cmplt_ps( *v_a, t );//if( a<0 )
*v_b = _mm_div_ps( *v_b, *v_c ); //割り算
*v_a = _mm_namd_ps( mask, *v_a ); //マスクと逆のデータを残す
*v_b = _mm_and_ps( mask, *v_b ); //データをマスクする
*v_a = _mm_or_ps( *v_a, *v_b ); //マスクしたデータ同士をまとめる
}
//*********************************************************
// 問2ここまで
///////////////////////////////////////////////////////////
Adobe AirでGoogleのタスク(ToDo)の表示する物の作成
その他 in プログラム
最終更新日2011-11-19 01:15:21   作成日2011-11-19 01:08:53

HTMLを利用した簡単なプログラム例

Google Task ( ToDo 試作 )
を表示したいために作成しました。

ここを秘密だよ!
の箇所にGoogleTask(ToDo)のアドレスを入れれば完成です。

強制的に170*400に変更しています。
(リサイズ変更がうまくいかない)

コンパイル方法はコマンドプロンプト画面で
adl todo.xml

以下にサンプルを示します。
HTMLを利用した簡単なプログラム例

Google Task ( ToDo 試作 )
を表示したいために作成しました。

ここを秘密だよ!
の箇所にGoogleTask(ToDo)のアドレスを入れれば完成です。

強制的に170*400に変更しています。

コンパイル方法はコマンドプロンプト画面で
adl todo.xml

サンプル

todo.xml
<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.5" minimumPatchLevel="0">
<id>example.html.ToDoAIR</id>
<version>1.0</version>
<filename>ToDo</filename>
<initialWindow>
<content>todo.html</content>
<visible>true</visible>
<width>800</width>
<height>600</height>
</initialWindow>
</application>

todo.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>ToDo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8 " >

</head>
<body>
<script type="text/javascript">
<!--
function getToDo(x,y){
document.write("<object type='text/html' data='ここは秘密だよ!' width='"+x+"' height='"+y+"'>object 未対応の場合はTEXTを表示</object>");
window.resizeTo((x+20),(y+45));
}
function ToDo( flag ){
if( flag == 1){
getToDo( window.innerWidth, window.innerHeight);
}else{
document.write("test");
}
}

// -->
</script>

<script type="text/javascript">
<!--
getToDo(170,400);
</script>

</body>
</html>
Adobe Air 簡易自己署名
その他 in プログラム
作成日2011-11-19 01:02:52

自己署名を作成し.airファイルの作成を行う
サンプルを乗せて説明

簡易例:署名ファイル作成
adtで自己署名
http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7f74.html
xmlがある箇所で以下のコマンドを打ちパスワードなどを生成
adt -certificate -cn Name 1024-RSA cert.p12 Mypassword

簡易例:署名
http://help.adobe.com/ja_JP/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7fd6.html
以下のように打ちファイルを生成
adt -package -storetype pkcs12 -keystore cert.p12 -tsa none air.air air.xml air.html
password:

説明

-keystore
先ほど作成した署名を指定

-tsa none
Could not generate timestamp: handshake alert: unrecognized_name
とエラーが出たら指定する必要がある。

air.air
作成するファイル名

air.xml
xmlファイル

air.html
xmlに記述した含めるファイルの列挙

password
先ほどのパスワード(Mypassword)を聞いてきているのでそれを入力します。

キーワード
【Adobe】【Air】【自己署名】
Adobe Air インストール
その他 in プログラム
最終更新日2011-11-19 00:58:50   作成日2011-11-19 00:55:42

AdobeAireの開発環境(無料)の設定方法の解説です。

開発に必要な物
・Java(JDK)
・AdobeAirSDK
・コマンドプロンプト
+環境変数の設定(楽にするため)

ダウンロード
・Java
jdk-7-windows-x64.exe
http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html

・AdobeAirSDK
・AdobeAIRSDK.zip
 表記:Windows版 Adobe AIR 2.5 SDK (31.5 MB)
http://kb2.adobe.com/jp/cps/859/cpsid_85940.html

Javaをインストールします。
AirSDKをインストールします。
次に環境変数を設定します。
指定先:
インストールフォルダ\AdobeAIRSDK\bin

上記のインストールと設定が終わったら、以下のコマンドを試してみます。
>adl -help
で以下の表示が出ればOK
usage:
adl ( -runtime )? ( -pubid )? -nodebug? ( -profile obileDevice|extendedMobileDevice|desktop|extendedDesktop|tv|extendedTV )? ( -extdir )? ( -screensize )? ? ( -- ... )?
adl -help

サンプル

example.xml
<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.5" minimumPatchLevel="0">
<id>example.html.ToDoAIR</id>
<version>1.0</version>
<filename>ToDo</filename>
<initialWindow>
<content>todo.html</content>
<visible>true</visible>
<width>800</width>
<height>600</height>
</initialWindow>
</application>

example.html
<pre>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>ToDo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8 " >

</head>
<body>
Hellow! World!
</body>
</html>

コマンドプロンプトで作成したファイルのある場所まで移動する。
>adl todo.xml
を実行すれば文字列が表示されると思います。
これで完了です。

クラスタリング関連のキーワード
研究 in メモ
最終更新日2011-11-14 16:21:20   作成日2011-11-08 15:25:11

研究メモ
※編集中

NN(Nearest Neighbor)法
最近傍法とも呼ばれる。
重み付けの軽い物から順に検索を行っていく方法。
(どれだけ離れているかを重みとする場合場合)ユーグリッドの距離またはマンハッタン距離において、一番近い要素に対して評価を行っていく。

K-NN(K-Nearest Neighbor)法
K近傍法とも呼ばれる。
NN法で求める要素の数を近い順にK個までとする。

K-means法
K個のクラスタを作り、それに所属する要素を選んでいきクラスタリングをする

クリスプクラスタリング

ファジィルラスタリング

ベイズ学習

ユーグリッド平面
2次元空間において、ユーグリッドの距離(多分:ベクトル)が存在するもの。

ユーグリッド空間
3次元以上の空間において、ユーグリッドの距離(多分:ベクトル)が存在するもの。


メモ

パーセプトロン

バイアス

物体検出
その他 in メモ
最終更新日2011-11-13 16:04:56   作成日2011-11-13 15:16:20

論文メモ:

【物体検出】
SIFT(Scale-Invariant Feature Transform)
回転・スケール・照明変化に頑健な特徴を有している
参考:
色相ヒストグラムに基づく不変特徴を用いた画像中のオブジェクト検出(2011-08-29)
http://ci.nii.ac.jp/naid/110008606260
SIFTにおいて、透視投影による歪に対しても頑健な特徴量を考案し,この特徴量に基づく物体検出手法を提案

Multiple Instance Learning 問題 (MIL)
一般的なクラスタ分類問題:+または-のラベルが与えられた単語を学習し,新たな単語のラベルを,単語同士の類似性より推定するような問題であるこれを解く手法として,Support Vector Machine (SVM) やロジステイック回帰などはパッケージ化されてるがMILはされていない

このHPでのタグについてのメモ
その他 in メモ
最終更新日2011-11-13 15:53:48   作成日2011-11-13 15:32:22

記事中で利用できる物
枠で囲む
・pre
test

・div class="content"
test

・div class="dark_content"
test

・h1

test


テーブル関連
→記事を参照
http://www24.atpages.jp/raidhin/#113
・caption
・thead th td
・tbody th td

検索の実装
HTML in プログラム
最終更新日2011-11-13 13:58:25   作成日2011-11-13 13:26:12

このサイトのTOPにある検索窓の構造

検索フォームの記述
<form name="search" acrion="content_search()">
<input type="search" name="searchmes" size="30" maxlength="255"
placeholder="検索語句を入力" autocomplete="on" onKeyup="content_search()">
<input type="text" name="dummy" style="position:absolute;visibility:hidden">
<input type="button" value="検索" onclick="content_search()">
</form>
上記の content_search() に記事をjavascriptで検索する物を与えればOK


参考サイト:
onKeyup, onKeydown, onKeypress
http://w3g.jp/xhtml/dic/onkeydown

submitさせない
http://www.nslabs.jp/enter-submit.rhtml

Android 技術メモ
その他 in メモ
作成日2011-11-12 13:37:48

導入まで
http://blog.makotokw.com/2007/11/25/eclipseandroidapidemo/

Eclips
API Demos
table_に関して
HTML in プログラム
最終更新日2011-11-12 01:18:12   作成日2011-11-12 01:00:12

例:
プラス面とマイナス面を持ち合わせた特徴おおおおおおおおおおおおおお
特徴 マイナス面 プラス面
気分
悲しいいいいいいいいいいいいいいいい 幸せ
成績いいいいいいいいいいい
不合格 合格
↓ソースコード
<table>
<caption>プラス面とマイナス面を持ち合わせた特徴おおおおおおおおおおおおおお </caption>
<thead>
<tr>
<th> 特徴
<td> マイナス面
<td> プラス面
<tbody>
<tr>
<th> 気分
<td> 悲しいいいいいいいいいいいいいいいい
<td> 幸せ
<tr>
<th> 成績いいいいいいいいいいい
<td> 不合格
<td> 合格
</table>
色設定
table caption{
background:#222222;
border-color:#ffff66 ; /* 上 右 下 左 */
border-style:solid;border-width:1px; /* 上 右 下 左 */
padding:3px 10px;
text-align:left;
}
thead th{
background:#222222;
border-color:#66ffff ; /* 上 右 下 左 */
border-style:solid;border-width:1px; /* 上 右 下 左 */
padding:3px 5px;
text-align:center;
}
thead td{
background:#222222;
border-color:#339999 ; /* 上 右 下 左 */
border-style:solid;border-width:1px; /* 上 右 下 左 */
padding:3px 5px;
text-align:center;
}
tbody th{
background:#222222;
border-color:#66cc66 ; /* 上 右 下 左 */
border-style:solid;border-width:1px; /* 上 右 下 左 */
padding:3px 5px;
text-align:left;
}
tbody td{
background:#222222;
border-color:#339933 ; /* 上 右 下 左 */
border-style:solid;border-width:1px; /* 上 右 下 左 */
padding:3px 5px;
text-align:left;
}
GoogleReader読み辛いから、ちょっとしたエクステンション作った。
その他 in メモ
最終更新日2011-11-09 19:57:04   作成日2011-11-09 19:53:08

CSSの表示をいじって、白の空白の部分を極力減らします。
ご要望、問題がありましたらご連絡ください。

広い余分な部分を減らすエクステンションは以下のファイルをダウンロードしてください。
公式ページへの登録はお金かかるそうなので、してないです。。
DLリンク
ルビ(ふりがな)をふる HTML5
その他 in プログラム
最終更新日2011-11-08 15:23:32   作成日2011-11-08 14:55:56

<p>私の名前は、
<ruby>
  鈴木<rp>(</rp><rt>すずき </rt><rp>)</rp>
  一郎<rp>(</rp><rt>いちろう</rt><rp>)</rp>
</ruby>
です。</p>

↓見え方

私の名前は、鈴木(すずき )一郎(いちろう)です。

※preで囲んで利用する場合は改行を無くさないと崩れてしまう

↓こんな感じ

私の名前は、

  鈴木(すずき )  一郎(いちろう)
です。

エラーはどこに表記される?
jQuery in プログラム
作成日2011-11-05 16:45:25

GoogleChrome:
Shift+Ctrl+i
→Console
Mozilla Firefox:
Ctrl+Shift+j
IE:
左下に黄色い注意マークがあるからダブルクリック
Visual Studio 2010 で邪魔な警告の抑制
C++ in プログラム
最終更新日2011-11-05 15:36:50   作成日2011-11-03 18:19:25

VS2010までは
#pragma warning(disable:XXXX)
でXXXXの警告を消えるようにできていたのですが、表示されます。
邪魔ですね~

消したいですね~
そこで、プロジェクトのプロパティを
構成プロパティ
→C/C++
 →全般
  →警告レベル
この、警告レベルをを /W3 から /W2 に変更そうすることで、基本的に不要なものは排除されます。

これで警告が見やすくなる。
ただし、
レベルが高いwarning
は表示されます。
Gmail未読のみ表示
その他 in メモ
作成日2011-11-04 00:05:56

参考:
http://www.tsuruha.com/2009/01/gmail.html

in:inbox is:unread で検索すればOK

ブックマークに入れておくと楽だそうだが、、、場所食うのでどうでも良いか?
登録しておくべきか悩む・・・


指定要素が多くなってきた時の注意
jQuery in プログラム
作成日2011-11-04 00:00:34

$text = $(".class");
$text.hide();
$text.show();
等のように、多くのものをjQueryでは取得、処理できます。
しかしここで、hide();などの処理の次に表示用のスクリプトなどがあると、hide();を実行しながら実行してしまうため、表記が崩れます。

そのため
$text = $(".class");
$text.hide(0,function(){
  $text.show();
});
のようにして、処理が終了してから次の処理へ向かう。と言う処理を書きましょう。

とても、重要です。
終了まで待機する関数があったはずなんですが、思い出せません・・・。

ソースコードの表示の見た目をきれいに!
HTML in プログラム
最終更新日2011-11-03 23:05:28   作成日2011-11-03 22:59:32

下記のサイトが丁寧に説明しています。
http://www.netyasun.com/syntaxhighlighter/
<>
安全なウェブサイトの作り方
HP関連 in リンク
最終更新日2011-11-03 22:46:34   作成日2011-07-02 16:37:10

独立行政法人 情報処理推進機構
セキュリティセンター(4/6)
http://www.ipa.go.jp/security/vuln/websecurity.html

HTMLが正しく遵守して書かれているか検査できるところ
http://validator.w3.org/
URL,ファイルアップロード、直書きで試せる

上記の日本語版らしいところ
HTML5に対応してないと思われる。
http://1ppo.info/46_1.html

いろいろなチェックツール紹介ページ
http://c-brains.jp/blog/wsg/11/11/02-154822.php

$_GET[]のエラーに関して
PHP in プログラム
作成日2011-11-03 18:43:10

Undefined index~
と言うエラーが
$data = $_GET["data"];
の箇所で起こります。これは値が入ってない場合に出るようです。
そのため、
$data = isset($_GET["data"]) ? $_GET["data"] : "";
として、きちんと値を代入するようにします。
気になる単語
ネタ in メモ
作成日2011-11-02 22:13:48

MIDIDataLib

FireFox と Google chrome でイベント取得
HP関連 in メモ
最終更新日2011-11-02 04:44:47   作成日2011-11-02 01:17:19

chromeはIEと同じく、window.eventでどこからでもアクセスできるが、
Firefoxは関数が引数として持ってくる必要がある。

そのため、

function test(e){
  e.preventDefault();
}

window.onload = function(e){
  test(e);
}
等のように設定する必要がある。

メニューの動作
HP関連 in メモ
最終更新日2011-11-02 01:31:48   作成日2011-11-01 18:59:02

メニューをマウスホイールに連動して見えるものが変化するスクリプト

マウスホイール動作取得

/**************** マウスホイール *************************************************/
http://hakuhin.jp/js/mouse.html
var wheel_flag = 0;
$("#content_nav").mouseover(function(){
  //alert( "in" );
  wheel_flag = 1;
});
$("#content_nav").mouseout(function(){
  //alert( "out" );
  wheel_flag = 0;
});
$("#content_nav").mousemove(function(){
  document.onmousewheel = function(e){
    if( wheel_flag == 1 ){
      //alert( wheel_flag );
      //alert( right_text );
      if(!right_text) return;
      if(!e) e = window.event;
      //alert( e.wheelDelta );
      if( e.wheelDelta<0){
        show_num++;
      }else if( e.wheelDelta>0 ){
        show_num--;
      }
      if(show_num < 0 ) show_num = 0;
      //alert(show_num);
      wheel(right_text, show_num, show_num+show_item_count);
      
      /**** スクロールさせない魔法の言葉 ********/
      if (event.preventDefault) {
   event.preventDefault();
   }
   event.returnValue = false;
   /******************************************/

    }
  }
});
/**********************************************************************************/

左メニューのソート処理

/**************** 右メニューソート関数 *************************************************/
function wheel(cdata,s,e){
  var cnav = $("#content_nav").children("div");
  var i,j,flag;
  //alert(right_text);
  
  //最大点でストップさせる
  var max = 0;
  for(i=0, j=0; i  if( max < e ){
    s = s - (e - max);
    e = max;
    show_num--;
  }
  
  //描画処理
  for(i=0, j=0; i    if( cnav.eq(i).attr("id") == cdata){
      flag = 1;
      if(j>=e) flag = 0;
      if(j      
      if(flag == 1){
        cnav.eq(i).animate({width:"200px"},"fast");
      }else{
        cnav.eq(i).hide("fast");
      }
      j++;
      //alert(j);
    }else{
      cnav.eq(i).hide("fast");
    }
  }
}
/**********************************************************************************/

マウスホイール制御
HP関連 in メモ
最終更新日2011-11-02 01:24:26   作成日2011-11-01 22:37:35

Firefoxのwindow.addEventListenerを利用する場合、気をつけないといけないこと。
実行される回数分だけ、反応が起こるようになってしまう。

また、
Firefox と Chrome ではマウスホイールの取得値が逆転してる。
(大きさも違う、私の環境では Firefox:3 Chrome:120 であった)

上記の例
マウスホイールを感知して、値の正負をそろえた形で同じ関数へ渡している。
IEは私の環境では動かなかった・・・(そもそも、表示が壊れてしまう・・・)(2011/11/01)

window.onload = function(){
  //Firefox
  if(window.addEventListener){
    window.addEventListener('DOMMouseScroll', function(e){
      var d = e.detail *-1;    //Chromeと値をそろえるため -1 を掛けている
      menu_wheel(d);
    }, false);
  }

  //IE //使えるように設計されてないが、メモのため書いておく
  if(document.attachEvent){
    document.attachEvent('onmousewheel', function(e){
     menu_wheel(e.wheelDelta);
    });
  }
  
  //Chrome
  window.onmousewheel = function(e){
    menu_wheel(e.wheelDelta);
  }      
}

また、下記のような魔法の言葉があることで、スクロールに画面が追従しない

if (e.preventDefault) {
    e.preventDefault();
} else   e.returnValue = false;
※eはeventを指している。
 注意点については、【メモ】【HP関連】【FireFox と Google chrome でイベント取得】を参照
文章のまとめ方
その他 in メモ
最終更新日2011-10-31 00:39:51   作成日2011-10-25 17:48:30

・文章のまとめ方
1:言いたいことを決める
2:関連することを思いつくまま、書いていく。
  意味を持つ固まりに見えるように改行を入れる
3:2の文章を意味が通るように並び替える
4:意味が分からないところを補完
5:消せる物はできるだけ消す

構成
・目的
・(準備)
・目的を達成する内容
・結論
・意見

HTML編集:aptina studio
その他 in メモ
作成日2011-10-03 13:09:01

aptina studio
でいろいろHTML編集ができるらしい
フィルタ名
DirectShow in プログラム
作成日2011-08-27 08:03:45

フィルタ名は以下を @" "で囲む

@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\{04FE9017-F873-410E-871E-AB91661A4EF7}

これはGraphEditのファイル名と等価である
STL基本
C++ in プログラム
最終更新日2011-08-18 01:32:25   作成日2011-07-26 00:37:49

コンテナ
vectorアクセス高速(配列構造)
deque両端キュー(アクセス早い)
list追加が早い(普通のリスト構造)
set木構造らしい(追加が早い)
mapハッシュ構造
multiset要素の重複を許す
multimap上に同じ

コンテナアダプタ(よく分からんw)
stackスタック
queueキュー
priority_queue優先順位付きキュー

イテレータ
InputIterator入力用
OutputIterator出力用
ForwardIterator前へ飲み進める
BidirectionalIterator双方向に進める
RandomAccessIteratorランダムにアクセスできる

WINAPIで透過処理
C++ in プログラム
最終更新日2011-08-18 01:30:56   作成日2011-08-09 15:36:27

参考:
http://eternalwindows.jp/graphics/bitmap/bitmap05.html

BLENDFUNCTIONを利用して行う
メモ:

case WM_PAINT: {
    int nWidth;
    int nHeight;
    HDC hdc;
    BITMAP bm;
    PAINTSTRUCT ps;
    BLENDFUNCTION blendFunction;
    
    GetObject(hbmpMem, sizeof(BITMAP), &bm);
    nWidth = bm.bmWidth;
    nHeight = bm.bmHeight;

    hdc = BeginPaint(hwnd, &ps);

    TransparentBlt(hdc, 0, 0, nWidth, nHeight, hdcMem, 0, 0, nWidth, nHeight, RGB(0, 255, 0));
    
    blendFunction.BlendOp = AC_SRC_OVER;
    blendFunction.BlendFlags = 0;
    blendFunction.SourceConstantAlpha = 128;
    blendFunction.AlphaFormat = 0;
    AlphaBlend(hdc, 0, nHeight + 10, nWidth, nHeight, hdcMem, 0, 0, nWidth, nHeight, blendFunction);

    EndPaint(hwnd, &ps);

    return 0;
  }
openCV導入+オプティカルフロー
C++ in プログラム
最終更新日2011-08-16 00:52:14   作成日2011-08-06 00:19:39

参考:
http://www-arailab.sys.es.osaka-u.ac.jp/~takubo/howto_directshowplusopencv.html


【bin】
  dllファイルが入っている
【include】
  ヘッダファイルが入っている
【lib】
  リンク用libファイルが入っている

【CMakeを利用してやる際】
  Win32のプロジェクトを利用して作成する場合 x64でコンパイルするというオプションを選んではいけない
  ×【Visual Sutudio 2010 win x64】
  ○【Visual Sutudio 2010】

*** 利用例 ***********************************************
*** ソリューションでフォルダを指定していることが条件 *****

//cvの名前空間を利用するため(cv2.x)
#include  

//cv1.0の内容を利用するため(cv1.0)
#include   
#include

#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,"opencv_core220d.lib")
#pragma comment(lib,"opencv_imgproc220d.lib")
#pragma comment(lib,"opencv_highgui220d.lib")
#pragma comment(lib,"opencv_video220d.lib")
#else
//Releaseモードの場合
#pragma comment(lib,"opencv_core220.lib")
#pragma comment(lib,"opencv_imgproc220.lib")
#pragma comment(lib,"opencv_highgui220.lib")
#pragma comment(lib,"opencv_video220.lib")
#endif

*** 利用例ここまで ****************************************

*** ソリューションの設定 VC2010 **************************
プロパティページを開く
(ソリューション名を右クリック)

VC++ディレクトリ

【実行可能ファイルディレクトリ】
  dllのあるアドレスを指定する
  例:.../bin
【インクルードディレクトリ】
  ヘッダファイルのあるアドレスを指定する
  例:.../include
【ライブラリディレクトリ】
  ライブラリファイルのある場所を指定する
  例:.../lib
※「...」はどこかのフォルダを指す
※デバグとリリース両方設定すること

samba参考サイト
Linux in メモ
作成日2011-08-07 16:02:21

http://blog.goo.ne.jp/cgeryuji/e/2dda6db7eba5188055d8d63cadb81941
上記のサイトの設定に従った。

invalid users = root

security = yes ← Debian上にアカウントを持っているユーザーだけがログインできるようにする
encrypt passwords = yes ← 暗号化されたパスワードを使用します

の三カ所においては記述が見られないので、勝手に追加した。
(他のを追加し忘れてる気がしないまでもない)

ユーザーのパスワードなどは別で管理してる
libの出力
C++ in プログラム
最終更新日2011-08-06 21:26:50   作成日2011-08-05 18:48:09

【未解決】
インポートライブラリ(.lib)の作り方

ソースコードで
__declspec(dllexport) キーワードを使う

クラス例:
class __declspec(dllexport) test{
  ...
};

関数例:もしかして dllexportじゃなくてexportかも・・・
__declspec(dllexport) test();


libファイルがある場合のリンク方法(静的)
#pragma comment(lib, "test.lib")

※libとdllがフォルダにあることが条件


参考:
http://hp.vector.co.jp/authors/VA023539/tips/dll/001.htm

http://oshiete1.watch.impress.co.jp/qa6611292.html

mapの利用でVS2010はエラーが出る
※mapはリンカーのデバッグの中にある

インクリメントリンクを有効にしないことで、コンパイルできるようになる

defはモジュール定義ファイルに記述する
テスティングフレームワーク(プログラムテスト)
その他 in プログラム
作成日2011-07-28 13:26:08

NUnit (.NET)
http://www.nunit.net/

JsUnit(JavaScript)
http://jsunit.net/

JUnit(Java)
http://junit.org/

RSpec(Ruby)
http://rspec.info/

PHPUnit(PHP)
http://github.com/sebastianbergmann/phpunit/

unittest(Python)

Rest::Simple(Perl)


STLアルゴリズム
C++ in プログラム
最終更新日2011-07-26 01:42:48   作成日2011-07-26 01:32:36

イテレータで指定されたコンテナ要素に対して特定の操作を行う関数を指す
【 操作の適用 】【 for_each 】
【 検索 】【 find 】【 find_if 】【 find_end 】【 find_first_of 】【 adjacent_find 】
【 計数 】【 count 】【 count_if 】
【 不一致検索 】【 mismatch 】
【 一致判断 】【 equal 】
【 部分集合の検索 】【 search 】【 search_n 】

要素の追加/削除/変更を伴う操作
【 複製 】【 copy 】【 copy_backward 】
【 交換 】【 swap 】【 swap_ranges 】【 iter_swap 】
【 変換 】【 transform 】
【 置換 】【 replace 】【 replace_if 】【 replace_copy 】【 replace_copy_if 】
【 充填 】【 fill 】【 fill_n 】
【 生成 】【 generate 】【 generate_n 】
【 削除 】【 remove 】【 remove_if 】【 remove_copy 】【 remove_copy_if 】
【 隣接要素の削除 】【 unique 】【 unique_copy 】
【 反転 】【 reverse 】【 reverse_copy 】
【 回転 】【 rotate 】【 rotate_copy 】
【 攪拌 】【 random_shuffle 】
【 分類 】【 partition 】【 stable_partition 】

ソート(並び替え)およびソートに関連した操作
【 ソート 】【 sort 】【 stabe_sort 】
【 部分ソート 】【 partial_sort 】【 partial_sort_copy 】
【 分類 】【 nth_element 】
【 検索 】【 lower_bound 】【 upper_bound 】【 equal_range 】【 binary_search 】
【 併合 】【 merge 】【 inplace_merge 】
【 集合演算 】【 includes 】【 set_union 】【 set_intersection 】
【 set_difference 】【 set_symmetric_difference 】
【 ヒープ操作 】【 push_heap 】【 pop_heap 】【 make_heap 】【 sort_heap 】
【 最大値/最小値 】【 min 】【 max 】
【 min_element 】【 max_element 】
【 辞書順比較 】【 lexicographical_compare 】
【 順列生成 】【 next_permutation 】【 prev_permutation 】

HP一新
その他 in メモ
最終更新日2011-07-24 16:06:25   作成日2011-07-24 16:03:33

アニメーションを増やし、白を基調としたものに変更しました。
現在は強魔界所の修正中です。
C++でのDirectShow
DirectShow in プログラム
最終更新日2011-07-23 23:20:54   作成日2011-07-23 20:24:09

//基本
IGraphBuilder *pGraphBuilder;
//制御
IMediaControl *pMediaControl;
//イベント制御
IMediaEventEx *pMediaEventEx;
//再生位置
IMediaPosition *pMediaPosition;
//動画の表示先指定
IVideoWindow *pVideoWindow;
//音量調整
IBasicAudio *pBasicAudio;

全て、解放を忘れないこと
各種->Release();

※REFTIMEはdouble

//初期定義
CoCreateInstance(CLSID_FilterGraph,  NULL,CLSCTX_INPROC,IID_IGraphBuilder,(LPVOID *)&pGraphBuilder);
pGraphBuilder->QueryInterface(IID_IMediaControl,(LPVOID *)&pMediaControl);
pGraphBuilder->QueryInterface(IID_IMediaEventEx,(LPVOID *)&pMediaEventEx);
//pGraphBuilder->QueryInterface(IID_IMediaPosition, (LPVOID *)&pMediaPosition);
pGraphBuilder->QueryInterface(IID_IMediaSeeking, (LPVOID *)&pMediaSeeking);
pMediaEventEx->SetNotifyWindow((OAHWND)hWnd,WM_GRAPH_NOTIFY, NULL);
pGraphBuilder->QueryInterface(IID_IBasicAudio, (LPVOID *)&pBasicAudio);
//接続
pMediaControl->RenderFile(name);

//ウィンドウ制御の設定
pGraphBuilder->QueryInterface(IID_IVideoWindow,  (LPVOID *)&pVideoWindow);//ウィンドウへ接続
pVideoWindow->put_Owner((OAHWND)hWnd);//オーナー指定
pVideoWindow->put_MessageDrain((OAHWND)hWnd);
pVideoWindow->put_WindowStyle(WS_CHILD|WS_CLIPSIBLINGS);//スタイル指定

//幅指定
RECT rect;
GetClientRect(hWnd,&rect);
pVideoWindow->SetWindowPosition(800, 0,400,300);

pVideoWindow->put_Visible(OATRUE);
pVideoWindow->SetWindowForeground(OATRUE);

//実行
pMediaControl->Run();

jQuery参考サイト
HP関連 in メモ
作成日2011-07-19 00:40:06

http://allabout.co.jp/gm/gc/24166/

関数例:マウスオーバーで画像オープン
HTML in プログラム
最終更新日2011-07-16 02:10:18   作成日2011-07-16 01:19:42

参考+α
http://www.webopixel.net/javascript/263.html

//JS
$(function(){
  var menus = $("div.menu_item");
  menus.hover(
    function(){
      $(this).find(".menu_item_top").animate({"top":"-40"},150);
      $(this).find(".menu_item_bottom").animate({"top":"-28"},150);
    },
    function(){
      $(this).find(".menu_item_top").animate({"top":"-34"},150);
      $(this).find(".menu_item_bottom").animate({"top":"-34"},150);
    }
  );
});


//CSS
.menu_item_top{
  position:relative;
  top:-34px; left:0px;
  background-image:url(menu_item_top.png);
  width:147;
  height:17;
}

.menu_item_bottom{
  position:relative;
  top:-34px; left:0px;
  background-image:url(menu_item_bottom.png);
  width:147;
  height:17;
}

アラート表示
HTML in プログラム
作成日2011-07-16 01:06:41

window.alert(
  $(this).text() // そのテキスト値をダイアログに表示
);

jQueryの子要素、子孫要素(セレクタ)の指定
HTML in プログラム
作成日2011-07-16 01:05:56

参考サイト
http://mayoneco.com/blog/2011/01/jquery_parent_child/

子要素を指定
$(this).children("div").css(...略...);

子孫要素を指定
$(this).find("div").css(.....);

"div"の箇所は普通にクラス、IDともに設定可能
as演算子
C# in プログラム
作成日2011-07-13 22:19:45

キャストを行う際C#では
#source
double d=100.10;
int num = d as int;
#source_end
と記述することができる。
※参照型(NULLが利用できるもの)でないと使えないため、自作クラス等のインターフェイスで利用する。
※int型は使用できないそうです・・・

この書き方は失敗した際の挙動が異なる。
as演算子:
  NULLが代入される
キャスト:
  エラーメッセージが返される

また、as演算子の方が、機能が少ないため、処理が高速となる。
参考:
http://www.atmarkit.co.jp/fdotnet/dotnettips/005castandas/castandas.html

授業メモ
その他 in メモ
作成日2011-07-13 10:34:50

モザイクの複合処理
MC法←だけでもある程度は出てくるw
リニア補完
など

白黒2値画像をモザイク(グレースケール)にした場合
普通のピクセルの格子状のものを半ピクセルずらして、点を取る。
その点同士をつないで格子を作る。
格子内での、ノード値が、グレースケールの濃度値と等しくなるようにする。
振動(全体の面積が大きく変更することが続くこと)が起こった場合、
安定する方を検出して、変化しないようにする。


カラーはRGBに分割して行えばいいのか?

mainを利用しないでクラスを利用するために【VC++】
その他 in プログラム
作成日2011-07-12 21:28:59

main関数の前にコンストラクタがメモリ内に格納されるらしい(コンストラクタの実行)。
スタートアップルーチンで、その処理が実装されてるらしい。ので、そこを書き換えればいいらしい。
ctr0.cと言うファイルに色々書かれてるらしいが・・・
#define _tmainCRTStartup mainCRTStartup
で、staticの_tmainCRTStartup(void);呼んでるので、
ctr0.cのL187ぐらいに追加すれば行けるのではないかな?
と考えてます。

__tmainCRTStartupを追いたかったけど、うまく追えなかったのでここまでです。

ライブラリのリンク #pragma
C++ in プログラム
作成日2011-07-12 19:46:31

#pragma comment(lib, "test.lib");
初めての練習~HTML~
Ruby in プログラム
作成日2011-07-04 22:58:09

http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners-4
HTMLを考えてると、ここが結構良い
ワイド文字の入力ストリーム
C++ in プログラム
最終更新日2011-07-04 22:13:17   作成日2011-07-04 21:56:41

cin >> str;
と基本はするがこれをワイド文字に対応させると
wcin >> wstr;
となる。

#include <locale>

char locale[] = "japanese";
std::locale::global(std::locale(locale));
std::wcin.imbue(std::locale(locale));
std::wcout.imbue(std::locale(locale));
std::wstring str;

std::wcout << L"文字列を入力してください" << std::endl;
std::wcin >> str;
std::wcout << str << std::endl;


//ワイド文字の設定を併記
BSTR型
C++ in プログラム
最終更新日2011-07-04 21:53:09   作成日2011-07-04 21:51:28

COM型のため、解放等がとても面倒
→_bstr_t_ を利用
互換性があるのは
wstring


参考:
http://www.sutosoft.com/room/archives/000355.html
詳細ページへのリンク
DirectShow in プログラム
最終更新日2011-07-04 16:53:35   作成日2011-03-25 12:54:41

サンプル:VBで記述
http://jehupc.exblog.jp/9457754/

Geekなページ:C++
http://www.geekpage.jp/programming/directshow/

DirectShow.Netの説明のとても言いページ(サンプルあり)
http://www.crystal-creation.com/software/technical-information/library/directshownet/

Windows7+VS2010+C++の設定
DirectShow in プログラム
作成日2011-07-04 16:50:09

WindowsSDKをインストールする
(インストールに関しては多くの他のページがある)
例:http://miraiware.net/memo/dshow-build.html

次にプロジェクトに追加する
・追加するファイル名:strmiids.lib
・所在:C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib

プロジェクトを右クリック
  ↓
プロパティ
  ↓
リンカ
→追加のライブラリディレクトリに上記の所在を入れる
→入力→追加の依存ファイルに上記のファイル名を追加する(手打ち)

これで、コンソールの
#include <dshow.h>
の利用が可能となる

利用予定のもの
その他 in メモ
最終更新日2011-07-03 02:00:28   作成日2011-07-03 01:42:02

以下、HPを一新する際に利用しようと考えているもの

ページ切り替え
http://h2ham.seesaa.net/article/93263355.html

直接URL指定で読込
http://h2ham.seesaa.net/article/99311190.html

15番のスライドパネル
http://www.webcreatorbox.com/sample-jquery-tips20/

リストの並び替え(編集画面で利用)
スライダー利用(できるかな?)
(スクロールバーをAjaxのスライダーを利用してカスタムも利用できそう?)
http://blog.4galaxy.net/16.html

http://kachibito.net/web-design/jquery-slide-for-beginner.html
のP118メソッド
P130のready()の実行

コンテンツの描画
(メニュー、サブメニューの表示に利用)
http://c-brains.jp/blog/wsg/sample/jquery_vol1/jquery_animation/

フォームにあらかじめ文字を入れておく
http://h2ham.seesaa.net/article/210682323.html#more

JavaScriptがOFFでもみれるように
http://h2ham.seesaa.net/article/142480055.html#more

クリックした要素は何番目の要素?
http://h2ham.seesaa.net/article/118961430.html#more

Google AJAX Feed API を使ってJavaScriptでサイトにRSSフィードを表示する方法
http://h2ham.seesaa.net/article/100840896.html#more

jQueryでApple風インフォメーション
http://www.finefinefine.jp/web/kiji1471/

オーバーレイ
http://www.finefinefine.jp/web/kiji1243/

マウスオーバー
http://www.finefinefine.jp/web/kiji227/

?スムーズスクロール
http://tico-jpn.com/464/jquery-smooth-scroll
http://www.netdecm.com/blog/index.php?itemid=70&catid=3

フリック操作
http://lagoscript.org/jquery/flickable
jQuery
HP関連 in リンク
最終更新日2011-07-02 23:54:55   作成日2011-07-02 23:47:05

できることが大まかにわかるサイト
http://kachibito.net/web-design/jquery-slide-for-beginner.html
 #100ページぐらいから

上記のページで紹介されていたページ
http://c-brains.jp/blog/wsg/10/04/23-100000.php
第一回~六回ぐらいまである。
色々、サンプルあり
もし自宅サーバーにするなら
Ruby in プログラム
作成日2011-07-02 18:16:37

rubygemsを利用すると扱いが楽かもしれない。
ちなみに、@PagesはMySQLです。。
マルチバイト文字列エンコーディング
Ruby in プログラム
作成日2011-07-02 18:03:22

参考URL
http://www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFCAD1BFF4.html

現在の実装では $KCODE は Ruby の以下の動作に影響します。

インタプリタの字句解析器
Regexp のエンコーディングフラグのデフォルト値
(正規表現リテラル
Regexp.new)
upcase
downcase
swapcase
capitalize
inspect
split
gsub
scan

だそうです。

***
RDEの設定にも文字コードがあったので、その辺の影響がわかったら、修正する予定です。
***
はじめに
Ruby in プログラム
最終更新日2011-07-02 17:59:35   作成日2011-07-02 17:24:54

プログラム
・Ruby(Ver 1.8.6)←無いのでこれ→rubyinstaller-1.8.7-p334.exe
 #@ページで利用するため

テスト環境
・Apache,AN HTTPDなど
・設定不要な環境もある→rubima011-cgi.zip
 #とても簡単に利用できた
 #参考URL
http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners-2#l0

エディター
・RDE(が良いらしい)
 #RDE1.1.1_setup.exe を利用
 #特に必要性を感じない気もする(エラー検出、関数テストに利用できるかもしれないが・・・)


参考書籍
ゲーム関連 in リンク
最終更新日2011-07-01 14:43:58   作成日2011-06-29 13:25:43

Windowsゲームプログラミング
・WINAPIの入門書
・間違いが多くあるが、HPで修正しているし、エラーの修正で知識がつく
・とてもいい本(第2版あり)

ゲームエンジン・アーキテクチャ
byジェイソン・グレゴリー
・内容は比較的ためになる
・C言語でAPIをあつかったことがある人は多少余分な箇所もある

以下未読だが参考になるかもしれないもの
ルールズ・オブ・プレイ
by ケイティ・サレン
文字列について(比較速度に関して)
技術 in ゲーム
作成日2011-07-01 13:14:31

文字列は比較にとてもコストがかかる。
(主にメモリ確保)
そのため、コピーオンライトの最適化というのを使う方法もあるそうです。
それ以上に、参照渡しを必ずするように心がける方が重要だそうです。

完全一致を行う際は文字列をハッシュ化することで、高速に処理できる。
(確実に、ハッシュ値が衝突しないことを保証しないといけないが、32ビットなら問題なくできると思われる)
例:
#source
void f(StringId id)
{
  if(id == internString("foo")){...}
  else if(id == internString("bar")){...}
}
#source_end
上記より下記の方が早い(比較は早いが、固定的なメモリを消費する)
#source
static StringId sid_foo = internString("foo");
static StringId sid_bar = internString("bar");
//...

void f(StringId id)
{
  if(id == sid_foo){...}
  else if(id == sid_bar){...}
}
#source_end

ハッシュテーブル
技術 in ゲーム
作成日2011-06-30 13:10:08

ゲーム開発では、オープンハッシュテーブル(動的にメモリを確保して連結する)より、クローズドハッシュテーブル(確保した領域中の空き領域を探して当てはめる)
リスト構造
技術 in ゲーム
作成日2011-06-30 12:42:54

以下の例は双方向リストである。
片方向リストは削除時にO(n)になるのに対して双方向はO(1)となるためである。
また、循環させること(最初と最後がつながっている感じ)で、リンクにNULLが入らなくなるため、メンバ要素かどうかの判定が可能となる。

#source
template< typename ELEMENT >
struct Link
{
  Link<ELEMENT>* m_pPrev;
  Link<ELEMENT>* m_pNext;
  ELEMENT* m_pElem;
};
#source_end
データの要素がリンク構造から独立している構成。
(非侵入的リストと呼ばれる)

#source
class SomeElement
{
  Link<SomeElement> m_link;
  //他のメンバ変数
};
#source_end
データ構造内にデータの要素が含まれている構成。
(侵入リストと呼ばれる)

C++で実装する侵入リスト
#source
template<typename ELEMENT>
struct Link
{
  Link<ELEMENT>* m_pPrev;
  Link<ELEMENT>* m_pNext;
  //継承を利用して ELEMENT* を利用しない
};
class SomeElement : public Link<SomeElement>
{
  //メンバ変数
};
#source_end

インクリメントの利用に関して
技術 in ゲーム
作成日2011-06-29 13:24:01

ポストインクリメント(p++)を利用するより、プレインクリメント(++p)を利用する方がよい。
これは、ポストインクリメントが一度古い情報をキャッシュしているため、遅くなるからである。
イテレータを利用する利点
技術 in ゲーム
作成日2011-06-29 13:20:28

・カプセル化を保ったままコンテナクラスにアクセスできる
 (イテレータなしでアクセスできないものもあるらしい)
・どれほど複雑なコンテナクラスでも、単純に利用できる
コンテナの種類
技術 in ゲーム
作成日2011-06-29 13:17:31

・配列
・動的配列
・連結リスト
・スタック
・キュー
・デック(deque)
・優先順位付きキュー
・ツリー
・バイナリ探索ツリー
・バイナリヒープ
 →シェイププロパティ
 →ヒーププロパティ
・ディクショナリ
・セット
・グラフ
・非循環有向グラフ

操作
・挿入
・削除
・連続アクセス(イテレーション)
・ランダムアクセス
・検索
・ソート
キャッシュミスの回避
技術 in ゲーム
最終更新日2011-06-29 13:09:34   作成日2011-06-29 13:06:03

・C++のマシンコードはほぼ確実にメモリ内で連続している
・構造体、クラスの変数はその順番に領域を確保されるため、確保が32の倍数になるよう配置する
・.cpp内に現れた順番で関数はメモリ内に配置される
・パフォーマンスを必要とする処理はできる限り小さく
・関数呼び出しを必要とするときはできるだけ近くに記述する
・パフォーマンスを必要とする関数ではほかの関数を利用しない
・インライン関数をよく考えて使う

上記のことをしっかり考えることで、高速に処理できるようになる。
クイックソート
C++ in プログラム
最終更新日2011-06-15 19:12:13   作成日2011-02-11 05:04:43

参考URL
http://ameblo.jp/nana-2007-july/entry-10037814047.html


インクルード

#source
class DATA{
public:
  int num;
  string name, name2;
  ///方法①演算子&lt;を定義します。m_dateでソートします。
  friend bool operator &lt;(const DATA&amp; m1, const DATA&amp; m2)
  { return m1.num &lt; m2.num; };
};
#source_end

変数宣言
vector&lt;DATA&gt; data;

//ソートを実行する場所
sort( data.end(), data.begin() );

end() と begin() を逆にするとソートが逆になる

C言語の関数を利用する
C++ in プログラム
作成日2011-06-15 13:11:46

プロトタイプ宣言で、
extern "C"{
   //プロトタイプ宣言
}

とすることで、実装できる。

これを必要とするのはC++の関数オーバーライドの影響である。
キャストの種類
C++ in プログラム
作成日2011-06-15 13:06:18

static_cast
  コンパイル時に解決される:危険
dynamic_cast
  実行時に解決される:安全
const_cast
  const, volatile属性の変更:安全でない
reinterpret_cast
  ビット構成の解釈変更:もっとも危険
クラス内のコンストラクタ初期化
C++ in プログラム
作成日2011-06-15 13:02:19

class ABC{
  const int data;
  ABC(int n):data(n){
  
  }
}

と上記のように設定する。
dataは変数を指し、:の後のdataは同様の変数をさして、それの初期化を行うことを示している。
インライン関数
C++ in プログラム
作成日2011-06-15 12:52:10

関数宣言の前に
inline
を付ける事で実装される。

これは、Cに存在したマクロのように関数の置き換えを実装する
ファイル内のみのグローバル変数
C++ in プログラム
作成日2011-06-15 12:45:57

namespace {
   //グローバル変数
}

のように記述することで、そのファイル内だけからアクセスできる

by 美しいC++プログラミング見本帳

D&Dを追加
C# in プログラム
最終更新日2011-06-10 22:24:58   作成日2011-02-11 04:24:30

参考URL
http://www.atmarkit.co.jp/fdotnet/csharptips/003dragdrop/003dragdrop.html
http://dobon.net/vb/dotnet/control/droppedfile.html

参考を見てやるとできる。

フォームアプリケーション作成の場合関数の作り方がちょっと違うので、記述

フォーム名がForm1.cs[デザイン]とする
その際、ソースコードの記述は基本的に
Form1.cs
に記述するが関数群は
Form1.Designer.cs
に記述されている。

ここに関数を記述した後に、Form1.csに記述しないとコンパイルは通らない。

以上
テストの日記?
その他 in プログラム
作成日2011-03-28 12:36:09

http://blues.se.uec.ac.jp/mt/swtest/archives/000060.html
32bitから16bitバージョンのVisualC++にアクセスする
C++ in プログラム
最終更新日2011-03-19 00:19:43   作成日2011-03-19 00:01:56

参考
http://support.microsoft.com/kb/132044/ja

【見試し】
Visual C++ の 32 ビット エディションは、_declspec(dllimport) および _declspec(dllexport) を使ってに以前の 16 ビット バージョンの Visual C++ を使用する __export キーワードは、置き換えます。
C++/CLI でプロパティを利用する
C++ in プログラム
作成日2011-03-19 00:19:20

参考1
property()に関して
http://vene.wankuma.com/prog/CppCli_Property.aspx

参考2【注:英語】
property(get=Get,put=Put)に関して
http://msdn.microsoft.com/ja-jp/library/yhfk0thd.aspx
(上記の分割しての利用と思われる)

C#のプロパティ機能を自動設定してくれるもののはず
参考2は【put】を【set】と置き換えて考えると同じ意味になると思われる。


昌紀の館の面白話
ネタ in メモ
作成日2011-03-07 12:38:36

http://www.geocities.jp/is3000nx/reading/prog.html
URLメモ
その他 in メモ
作成日2011-02-28 12:51:18

http://ziddy.japan.zdnet.com/qa4665988.html
素晴らしい、イメージ映像
その他 in メモ
作成日2011-02-28 12:38:17

http://www.youtube.com/watch?v=6Cf7IL_eZ38
日付データの形変更:mktime
HTML in プログラム
作成日2011-02-20 04:12:27

時間を
年月日 時間
で保存している場合の日付をRSS2.0に対応させる式

//mktime(時、分、秒、月、日、年)
$date= date("D, d M Y ", mktime(0, 0, 0, 02, 20, 2011))."13:30:32"." +09:00";

秒以下は後で追加の形にしている。
+09:00の意味は知らないです。
JavaScriptの自動合計をPHPで書いてみた。
HTML in プログラム
作成日2011-02-20 03:31:26

<?php
  echo "<script language='JavaScript'>\n<!--
    function calc() {
      document.data.SUM.value = eval( document.data.AP.value + '+' + document.data.DP.value + '+' + document.data.SP.value);
    }
  //--></script>\n";
  echo "<form name=data>\n";
    $datas = array("AP"=>"攻撃:", "DP"=>"防御:", "SP"=>"回避:");
    foreach($datas as $key => $data){
      echo "".$data."<input type=text size=5 maxlength=5 onkeyup=calc() name=".$key." value='0'><br />\n";
    }
    echo "合計:<input type=text size=5 maxlength=5 onkeyup=calc() name=SUM value='0'>";
  echo "\n</form>";
?>

chromでFlashのバージョンダウン
未整理 in メモ
作成日2011-02-11 05:13:46

about:plugin
をアドレスバーに入れアクセスする

詳細表示にする

古いのがある際はそれを選択
HTMLで一行選択を可能にする
HTML in プログラム
作成日2011-02-11 05:13:04

CSSファイルにおいて、
display:block;
と指定する。
デフォルトは inline である。
iTunesのライブラリの共有
Windows in メモ
作成日2011-02-11 05:12:28

参考サイト:
http://arkoniden.mitelog.jp/blog/2008/01/itunes2pc-209b.html?cid=31718561#comment-31718561


上記のサイトが閉鎖すると困るので、内容のコピーを以下においておきます。

1.デスクトップPCのローカルディスクに置かれたライブラリをNAS上へ移行する手順
(1)NAS上にiTunesフォルダを作成する。さらにその中にiTunes Musicフォルダを作成する。
(2)iTunesの「編集」メニューから「詳細」を選択する。設定ダイアログの「詳細」タブを選択し、ライブラリの格納先フォルダをNAS上のiTunes Musicフォルダに変更してOKボタンを押す。
(3)iTunesの「詳細」メニューから「ライブラリを統合」を実行する。
(4)ライブラリの統合が終わったら、iTunesをいったん終了する。
(5)ローカルディスクのiTunesフォルダ内にある以下のファイル2個とフォルダ1個をNAS上のiTunesフォルダへコピーする。
 iTunes Library.itl
 iTunes Music Library.xml
 Album Artwork
(6)キーボードのシフトキーを押しながらiTunesを起動する。「iTunesライブラリを選択」というダイアログボックスが表\示されるので、「ライブラリを選択」を選び、NAS上にあるiTunes Library.itlを指定する。
(7)これまでどおりプレイリストが表\示され、曲が再生できることを確認する。
(8)これ以降は普通にiTunesを起動すればNAS上のライブラリをアクセスする。

2.ノートPCのiTunesをNAS上のライブラリへアクセスさせる手順
(1)キーボードのシフトキーを押しながらiTunesを起動する。「iTunesライブラリを選択」というダイアログボックスが表\示されるので、「ライブラリを選択」を選び、NAS上にあるiTunes Library.itlを指定する。
(2)さきほど同じくプレイリストが表\示され、曲が再生できることを確認する。
(3)これ以降は普通にiTunesを起動すればNAS上のライブラリをアクセスする。

3.ちょっとした問題点
両方のPCでiTunesを同時使用した場合、NAS上のiTunesフォルダ内にテンポラリファイルが残される。Temp FileとiT ???.tmpの2種類である。ファイルサイズから判断して前者はiTunes Music Library.xmlのコピー、後者はiTunes Library.itlのコピーである。困ったことに、後者のテンポラリファイルは曲の演奏が終わったりプレイリストを操作するたびに連番がついて増えていく。起動しているiTunesが1つだけの状態に戻ればこのテンポラリファイルの増加はピタリと止まる。
iTunesが1つしか起動していない場合もiTunes Music Library.xmlとiTunes Library.itlが更新される際にテンポラリファイルが生成されるものの、元のファイルと置換・削除されるため残らない。iTunesが複数起動している場合のみテンポラリファイルが残されるようである。
対策としては、テンポラリファイルを削除するスクリプトを書き適当な頻度でタスクとして走らせるのが良いと思う。

プログラムから開くに追加されない
Windows in メモ
作成日2011-02-11 05:12:02

.exeファイルを
【ファイルを右クリック】→【プログラムから開く】→【参照】→【他のプログラム】…①
で、.exeファイルが登録されるはずですが、極稀にされない時があります。

今回はなんと!それの修復方を見つけました!(Web上でw)
では、解説に参ります!

【ファイル名を指定して実行】→【regedit】
 →【HKEY_CURRENT_USER\\Softeare\\Classes\\Applications】
この中に、参照できないファイルがあるはずです!
なので、これを【右クリック】→【削除】とします。
次に、再起動を行い、①をもう一度試すと…なんと、登録されます!

以上です!
これで困っている人も少しは居ると思うので、参考になればと思います。
分割コンパイル
Windows in メモ
作成日2011-02-11 05:11:45

main.cpp と sub.cpp
の間でデータのやり取りをする場合=分割コンパイルと言うらしいです。

1.includeしなくて良い
  ※一度使用する前でのincludeは必要だがcppファイルのincludeは必要ない
2.欲しいデータの読み込み
  extern [欲しいもの]
  extern [型名] [変数] (多分こういうこと
  ※例:extern void data();
   別ファイルの void data(){ … } を参照する場合

これだけ、僕はかなり悩んでたので記載します。
WindowsXPポート開放の注意事項
Windows in メモ
最終更新日2011-02-11 05:10:17   作成日2011-02-10 04:07:18

#<font color='red'#>※ServicePack2以上です。
※BitCometを管理人は使用していますのでWinnyはわかりません。#</font#>

1.Windowsのファイアウォール
 【コントロールパネル】
  →【Windowsファイアウォール】
   →【例外】
 ここに、使用したい【ポート】&【ソフト】を追加すれば可能です。

2.セキュリティーソフト
 #<font class='attention'#>※ウイルスバスター2007#</font#>
 タスクバーの【ウイルスバスター2007】を右クリック
 →【メイン画面を起動】
  →【不正進入対策/ネットワーク管理】
   →【パーソ\ナルファイアウォール】
    →【設定】
 現在使用しているプロファイルをクリックして編集をクリックする
  #<font class='attention'#>※タスクバーのウイルスバスターを右クリック
   プロファイルの切り替えで使用するのもが変更できます#</font#>
 【例外ルール(プログラム)】には、使用したいソフトを登録して許可とする
 【例外ルール(プエルトリコ)】には、使用するポートを設定する。
  #<font class='attention'#>※P2Pソフトは受信なので、送信はなくてよい#</font#>

3.ルーターの設定はたぶん勝手にやってくれるし、わからないので省略
 #<font class='attention'#>※自分で調べてください、機種によりいろいろと違います。#</font#>

4.以上を設定して繋がらない時
 Windows Updateに接続して【カスタム】を選択
 【追加選択ソフトウェア】の物を全部インストールすれば繋がるはず。
 無理だったら、プロバイダーがP2Pを使用可能としているかどうか調べてください。
 どこかにP2Pに関する規定が書かれているはずです。

一様参考として↓を挙げる。私的意見なので鵜呑みにしないこと。
        #<a href='../net.html'#>ネット調べ#</a#>
 
以上
※パスワード認証のページにINしているとリモートアクセスがされにくいように感じます。
WindowsXPポート開放の注意事項
その他 in メモ
作成日2011-02-11 05:09:52

#<font class='red'#>※ServicePack2以上です。
※BitCometを管理人は使用していますのでWinnyはわかりません。#</font#>

1.Windowsのファイアウォール
 【コントロールパネル】
  →【Windowsファイアウォール】
   →【例外】
 ここに、使用したい【ポート】&【ソ\フト】を追加すれば可能\です。

2.セキュリティーソ\フト
 #<font class='attention'#>※ウイルスバスター2007#</font#>
 タスクバーの【ウイルスバスター2007】を右クリック
 →【メイン画面を起動】
  →【不正進入対策/ネットワーク管理】
   →【パーソ\ナルファイアウォール】
    →【設定】
 現在使用しているプロファイルをクリックして編集をクリックする
  #<font class='red'#>※タスクバーのウイルスバスターを右クリック
   プロファイルの切り替えで使用するのもが変更できます#</font#>
 【例外ルール(プログラム)】には、使用したいソフトを登録して許可とする
 【例外ルール(プエルトリコ)】には、使用するポートを設定する。
  #<font class='attention'#>※P2Pソ\フトは受信なので、送信はなくてよい#</font#>

3.ルーターの設定はたぶん勝手にやってくれるし、わからないので省略
 #<font class='attention'#>※自分で調べてください、機種によりいろいろと違います。#</font#>

4.以上を設定して繋がらない時
 Windows Updateに接続して【カスタム】を選択
 【追加選択ソフトウェア】の物を全部インストールすれば繋がるはず。
 無理だったら、プロバイダーがP2Pを使用可能としているかどうか調べてください。
 どこかにP2Pに関する規定が書かれているはずです。

一様参考として↓を挙げる。私的意見なので鵜呑みにしないこと。
        #<a href=\'../net.html\'#>ネット調べ#</a#>
 
以上
※水色パスワード認証のページにINしているとリモートアクセスがされにくいように感じます。
送るにショートカットを追加する方法
Windows in メモ
作成日2011-02-11 05:07:00

***********************************************************
スタートメニュー

ファイル名を指定して実行

SENDTO

SendToフォルダが開くので、そこにショートカットをコピーする
***********************************************************
または、
***********************************************************
ドライブを変更していないとして、
C:\\Documents and Setting\\アカウント名
の中に隠しフォルダで存在する[SendTo]フォルダを開く
***********************************************************
以上
ただし、上がお勧めです。
コマンドプロンプトを表示させない
C++ in プログラム
最終更新日2011-02-11 05:05:56   作成日2011-02-11 05:00:11

参考URL
http://d.hatena.ne.jp/rainlib/20100418/1271561157

// コマンドプロンプトを表示させない
//#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")


その2
VCでリンカオプションに「/SUBSYSTEM:WINDOWS /ENTRY:"mainCRTStartup"」を指定することで,main()で始まるプログラムでも実行時にコマンドプロンプトを開かなくなることをメモ。
IDEからだと,プロジェクトのプロパティから「リンカ」を選択し,「システム」の「サブシステム」を「Windows」,「詳細」の「エントリポイント」を「mainCRTStartup」にそれぞれ設定してやればOK。
削除するべき警告メッセージVS
C++ in プログラム
作成日2011-02-11 05:05:17

 #pragma warning(disable : 4996)
で警告番号4996を非表示にする
GDI+をつかってみた
C++ in プログラム
作成日2011-02-11 05:03:51

画像をいろいろ表示できるやつ なかなかいい。

参考1
http://d.hatena.ne.jp/daimaruonline/20061113/p1

参考2
http://www.geocities.jp/ccfjd821/purogu/wpe-ji9.html


*** 以下コード ***

using namespace Gdiplus;

GdiplusStartupInput gdiSI;
ULONG_PTR gdiToken;

HINSTANCE hInst;

void OnPaint(HDC hdc){
Graphics graphics(hdc);
Image image( TEXT(&quot;a.jpg&quot;) );
graphics.DrawImage(&amp;image,100,0);
}

LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){

HDC hdc;
PAINTSTRUCT ps;

switch(uMsg){
case WM_PAINT:
hdc=BeginPaint(hWnd,&amp;ps);
OnPaint(hdc);
EndPaint(hWnd,&amp;ps);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hWnd,uMsg,wParam,lParam);
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR lpCmdLine,int nCmdShow){

HWND hWnd;
WNDCLASS wc;
MSG msg;

wc.style=CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc=WindowProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.lpszClassName= TEXT(&quot;テストウィンドウ&quot;);

RegisterClass(&amp;wc);

hWnd=CreateWindow( TEXT(&quot;テストウィンドウ&quot;),TEXT(&quot;テストです&quot;),WS_OVERLAPPEDWINDOW|WS_VISIBLE
,100,200,300,400,NULL,NULL,hInstance,NULL);

  GdiplusStartup( &amp;gdiToken, &amp;gdiSI, NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);

while(GetMessage(&amp;msg,NULL,0,0)&gt;0){
DispatchMessage(&amp;msg);
}

  GdiplusShutdown( gdiToken );

return msg.wParam;

}
WINAPI: ini ファイルの利用
C++ in プログラム
作成日2011-02-11 05:02:16

読み出し

int を返す
UINT GetPrivateProfileInt(
LPCTSTR lpAppName, // セクション名
LPCTSTR lpKeyName, // キー名
INT nDefault, // キー名が見つからなかった場合に返すべき値
LPCTSTR lpFileName // .ini ファイルの名前
);

lpAppName .ini ファイル内のセクションの名前を保持している、NULL で終わる文字列へのポインタを指定します。
lpKeyName キーの名前を保持している、NULL で終わる文字列へのポインタを指定します。
この関数は、このキーの値を取得します。
各キーの値は、文字列形式です。
GetPrivateProfileInt 関数は、この文字列を整数へ変換し、その整数を返します。
nDefault 指定したキーが .ini ファイル内で見つからなかったときに返すべき、既定の値を指定します。
lpFileName 初期化ファイルの名前を保持している、NULL で終わる文字列へのポインタを指定します。
ファイルのフルパス名を指定しなかった場合、システムは Windows ディレクトリ内でこのファイルを検索します。
戻り値 関数が成功すると、指定した .ini ファイルの指定したセクション内にある、指定したキーに関連付けられている文字列に相当する整数が返ります。
指定したキーが見つからない場合、nDefault パラメータで指定した既定の値が返ります。
キーの値が負の場合、0 が返ります。

char * を返す
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // セクション名
LPCTSTR lpKeyName, // キー名
LPCTSTR lpDefault, // 既定の文字列
LPTSTR lpReturnedString, // 情報が格納されるバッファ
DWORD nSize, // 情報バッファのサイズ
LPCTSTR lpFileName // .ini ファイルの名前
);

lpAppName .ini ファイル内のセクションの名前を保持している、NULL で終わる文字列へのポインタを指定します。
lpKeyName キーの名前を保持している、NULL で終わる文字列へのポインタを指定します。
この関数は、このキーの値を取得します。
各キーの値は、文字列形式です。
GetPrivateProfileInt 関数は、この文字列を整数へ変換し、その整数を返します。
lpDefault NULL で終わる既定の文字列へのポインタを指定します。
lpKeyName パラメータで指定したキーが .ini ファイル内に見つからなかった場合、GetPrivateProfileString 関数はこの既定の文字列を、lpReturnedString パラメータが指すバッファへコピーします。
lpDefault パラメータで NULL を指定することはできません。
半角スペースで終わる文字列を既定の文字列として指定することは避けてください。
この関数は、lpReturnedString パラメータが指すバッファへ文字列をコピーする際に、文字列の最後に NULL を追加しますが、このとき、文字列の最後にある任意の数の半角スペースは削除されます。
lpReturnedString 1 個のバッファへのポインタを指定します。関数から制御が返ると、このバッファに、取得した文字列が格納されます。
nSize lpReturnedString パラメータが指すバッファのサイズを、TCHAR 単位で指定します。
戻り値 関数が成功すると、バッファに格納された文字数が返ります(終端の NULL 文字は含まない)。
lpAppName と lpKeyName パラメータのどちらも NULL ではない場合、バッファのサイズが不足して、要求された文字列全体を格納できないと、文字列は途中で切り捨てられ、最後に 1 個の NULL 文字が追加され、戻り値は nSize-1 の値になります。
lpAppName または lpKeyName パラメータのどちらかが NULL の場合、バッファのサイズが不足して、要求された文字列全体を格納できないと、文字列は途中で切り捨てられ、最後に 2 個の NULL 文字が追加され、戻り値は nSize-2 の値になります。


書き出し

char * のみで int型は無い
BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // セクション名
LPCTSTR lpKeyName, // キー名
LPCTSTR lpString, // 追加するべき文字列
LPCTSTR lpFileName // .ini ファイル
);

lpString ファイルに書き込むべき、NULL で終わる文字列へのポインタを指定します。
NULL を指定すると、この関数は、lpKeyName パラメータで指定されたキーを削除します。
戻り値 初期化ファイルへのコピーが成功すると、0 以外の値が返ります。


リンク
http://www29.atwiki.jp/rai002/pages/56.html

WINAPI:ドラッグアンドドロップ
C++ in プログラム
作成日2011-02-11 05:01:09

ヘッダー
shellapi.h
windows.hをインクルード時は多分要らない


メッセージ
WM_DROPFILES


初期
VOID DragAcceptFiles(
HWND hWnd, //ウィンドウのハンドル
BOOL fAccept //受け入れの有無
);


  ドラッグアンドドロップを受け入れるかどうか設定するべきウィンドウのハンドルを指定します。
fAccept
  hWnd パラメータで指定されたウィンドウが、ドロップされたファイルを受け入れるかどうかを
  指定します。TRUE を指定すると、ファイルを受け入れます。FALSE を指定すると、ファイルを受け入れません。



基本的に利用
UINT DragQueryFile(
HDROP hDrop, //ファイル名構\造体のハンドル
UINT iFile, //ファイルのインデックス番号
LPTSTR lpszFile, //ファイル名を格納するバッファ
UINT cch //バッファのサイズ
);


  ドロップされた複数のファイルの名前を保持している、1 個の内部構\造体のハンドルを指定します。
iFile
  問い合わせ対象のファイルのインデックス番号を指定します。
  0xFFFFFFFF(言い換えると -1)を指定すると、DragQueryFile は、ドロップされたファイルの総数を返します。
  0~ドロップされたファイルの総数未満のいずれかの値を指定すると、
  DragQueryFile は、lpszFile パラメータが指すバッファに、その値に対応するファイルの名前を格納します。
lpszFile
  1 個のバッファへのポインタを指定します。関数から制御が返ると、このバッファに、
  ドロップされた特定のファイルの名前が格納されます。NULL を指定すると、
  DragQueryFile は必要なバッファのサイズを文字単位で返します。
cch
  lpszFile が指すバッファのサイズを文字単位で指定します。
戻り値
  関数がバッファにファイル名を格納すると、格納した文字数が返ります。
  終端の NULL 文字は、文字数に含まれません。
  iFile パラメータで 0xFFFFFFFF(-1)を指定した場合、
  ドラッグアンドドロップされたファイルの総数が返ります。
  iFile パラメータで、0~ドロップされたファイルの総数未満の値を指定し、
  さらに lpszFile パラメータで NULL を指定した場合、ファイル名を格納するために必要な
  バッファのサイズが文字単位で返ります。終端の NULL 文字は、文字数に含まれません。



ドロップファイルと位置
BOOL DragQueryPoint(
HDROP hDrop, //ファイル名構\造体のハンドル
LPPOINT lppt //マウスカーソ\ルの位置
);


  ドロップされたファイルを表\す内部データ構\造体を操作するためのハンドルを指定します。
  この値は WM_DROPFILES メッセージの wParam パラメータにあたります。
ppt
  ドロップされたときのマウスポインタの位置を格納するための POINT 構\造体のアドレスを指定します。



開放の宣言
VOID DragFinish(
HDROP hDrop //ファイル名構\造体のハンドル
);


  ドロップされたファイルについて記述している内部構\造体のハンドルを指定します。
  このハンドルは、WM_DROPFILESメッセージの wParam パラメータから取得できます


参考URL:
独学プログラミング言語のページ > Win32API(C言語,C++) > DragAcceptFiles
 
http://www.monmon-dance.com/win32api/dragacceptfiles.html

MSDN

WINAPI:終了メッセージ
C++ in プログラム
作成日2011-02-11 05:00:40

DestroyWindow( HWND hWnd )
破棄されるウィンドウが WS_EX_NOPARENTNOTIFY スタイルを持たない子ウィンドウであれば、親ウィンドウに WM_PARENTNOTIFY メッセージが送られます。
基本的にメッセージを受け取った hWnd を破棄する

PostQuitMessage( 0 );
プログラムの終了
lib ファイルをプロジェクトに追加
C++ in プログラム
作成日2011-02-11 04:58:25

.lib のリンク設定:プロジェクト単体での設定は
【プロジェクト】→【プロパティ】
  【リンカ】→【入力】→【追加依存ファイル】
に追加する

毎回利用するものは
【ツール】→【オプション】→【VC++ディレクトリ】
に追加する
文字列検索:完全一致
C++ in プログラム
作成日2011-02-11 04:58:07

// search_folder_name を str に含む文字列の時、true を返す
check_search_name(std::string &str, std::string search_folder_name)
{
  if( search_folder_name.empty() )  return true;
  int i,j;
  for(i=0,j=0; ; i++){
    if( i > (int)str.size()-1 )  break;
    if( j > (int)search_folder_name.size()-1 )  break;
    if( search_folder_name.at(j) == str.at(i)){
      if( j == ((int)search_folder_name.size()-1) )  return true;
      j++;
    }else{
      j=0;
    }
  }
  return false;
}
アイコン関連
C++ in プログラム
作成日2011-02-11 04:57:49

リンク:MSDN

アドレス指定で取得可能\
第二引数にフルパスでOK

アイコンをビットマップに変換
リンク
procedure TForm1.Button1Click(Sender: TObject);
Var
Ico :TIcon;
begin

 Image1.Width :=32;
 Image1.Height :=32;

 //アイコンオブジェクトを生成
 Ico :=TIcon.Create;
 //アイコンファイルを読み込む
 Ico.LoadFromFile(\'C:\\windows\\Winupd.ico\') ;
 //アイコンを描画
 DrawIconEx(Image1.Canvas.Handle, 0, 0, Ico.Handle, 0, 0, 0, 0, DI_NORMAL);
 //アイコンをビットマップファイルで保存
 Image1.Picture.SaveToFile(\'C:\\windows\\デスクトップ\\a.bmp\');
 //解放
 Ico.Free;

end
パスがディレクトリかを判断
C++ in プログラム
作成日2011-02-11 04:57:30

ATLを利用リンク:MSDN
inline BOOL IsDirectory(
const char* pszPath
);


inline BOOL IsDirectory(
const wchar_t* pszPath
);


以下古いほう?


参考リンク
インクルードファイル shlwapi.h
PathFileExists 指定されたパスにファイル、もしくはディレクトリが存在した場合にtrueを返す。
PathIsDirectory 指定されたパスがディレクトリならtrueを返す。
他のプログラムを実行
C++ in プログラム
作成日2011-02-11 04:51:05

テキストファイルを開いたり、アプリケーションを実行したりするもの


//**********************************************************************
//  指定されたプログラムを実行する
//  引数:フルパス
//----------------------------------------------------------------------
bool get_dir::start_aplication(std::string full_path)
{
  ShellExecute(NULL,\"open\",full_path.c_str(), NULL, NULL, SW_SHOWNORMAL);
  
  return true;
}
//----------------------------------------------------------------------
//**********************************************************************

文字の判定
C++ in プログラム
作成日2011-02-11 04:50:45

マルチバイト文字
インクルードファイル  <ctype.h>

isspace
書式 int isspace( int c )
機能\ 空白判定
引数 int c : 判定する文字
戻り値 空白(0x20)、水平タブ(0x09)、垂直タブ(0x0B)、
改行(0x0A)、復帰(0x0D)、改頁(0x0C)であれば、0以外を返し、
そうでなければ、0を返します。

ispunct
書式 int ispunct( int c )
機能\ 記号判定
引数 int c : 判定する文字
戻り値 記号( 0x21~0x2F, 0x3A~0x40,
0x5B~0x60, 0x7B~0x7E )であれば、0以外を返し、
記号でなければ、0を返します。

iscntrl
書式 int iscntrl( int c )
機能\ 制御文字判定
引数 int c : 判定する文字
戻り値 制御文字( 0x00~0x1F, 0x7F )であれば、0以外を返し、
制御文字でなければ、0を返します。


ワイド文字(多分)
インクルードファイル <ctype.h> または <wchar.h>

iswspace
書式 int iswspace( wint_t c )
機能\ 空白判定
引数 wint_t c : 判定する文字
戻り値 空白、水平タブ、垂直タブ、
改行、復帰、改頁であれば、0以外を返し、
そうでなければ、0を返します。

iswpunct
書式 int iswpunct( wint_t c )
機能\ 記号判定
引数 wint_t c : 判定する文字
戻り値 記号であれば、0以外を返し、
記号でなければ、0を返します。

iswcntrl
書式 int iswcntrl( wint_t c )
機能\ 制御文字判定
引数 wint_t c : 判定する文字
戻り値 制御文字であれば、0以外を返し、
制御文字でなければ、0を返します。
ファイルの更新を監視する
C++ in プログラム
作成日2011-02-11 04:50:03

関連関数
FindFirstChangeNotification
FindCloseChangeNotification
FindNextChangeNotification


参考URL
http://msdn.microsoft.com/ja-jp/library/cc429231.aspx



HANDLE FindFirstChangeNotification(
LPCTSTR lpPathName, // 監視するディレクトリの名前へのポインタ
BOOL bWatchSubtree, // ディレクトリやディレクトリツリーの監視用のフラグ
DWORD dwNotifyFilter // 監視のためのフィルタ条件
);


lpPathName
  監視するディレクトリへのパスを表\す、NULL で終わる文字列へのポインタを指定します。
bWatchSubtree
  この関数でディレクトリやディレクトリツリーを監視するかどうかを指定します。
  TRUE を指定すると、  指定したディレクトリの下にあるディレクトリツリーを監視します。
  FALSE を指定すると、指定したディレクトリだけを監視します。
dwNotifyFilter
  変更通知の待機操作を満たすフィルタ条件として、次のうち 1 つ以上の値を指定します。

値 意味
FILE_NOTIFY_CHANGE_FILE_NAME 監視中のディレクトリ、またはサブツリーでファイル名が変更されると、変更通知の待機操作から制御が戻ります。
ファイル名の変更とは、ファイル名の再作成( 変更)、作成、削除を指します。
FILE_NOTIFY_CHANGE_DIR_NAME 監視中のディレクトリ、またはサブツリーでディレクトリ名が変更されると、変更通知の待機操作から制御が戻ります。
ディレクトリ名の変更とは、ディレクトリの作成と削除を指します。
FILE_NOTIFY_CHANGE_ATTRIBUTES 監視中のディレクトリ、またはサブツリーで属性が変更されると、変更通知の待機操作から制御が戻ります。
FILE_NOTIFY_CHANGE_SIZE 監視中のディレクトリまたはサブツリーでファイルサイズが変更されると、変更通知の待機操作から制御が戻ります。
オペレーティングシステムがファイルサイズの変更を検出できるのは、ファイルがディスクに書き込まれたときだけです。
拡張キャッシュを使うオペレーティングシステムでファイルサイズの変更が検出されるのは、キャッシュが十\分にフラッシュされたときだけです。
FILE_NOTIFY_CHANGE_LAST_WRITE 監視中のディレクトリまたはサブツリーでファイルに対する前回の書き込み日時が変更されると、変更通知の待機操作から制御が戻ります。
オペレーティングシステムでファイルに対する前回の書き込み日時の変更が検出されるのは、ファイルがディスクに書き込まれたときだけです。
拡張キャッシュを使うオペレーティングシステムでファイルに対する前回の書き込み日時の変更が検出されるのは、キャッシュが十\分にフラッシュされたときだけです。
FILE_NOTIFY_CHANGE_SECURITY 監視中のディレクトリまたはサブツリーでセキュリティ記述子が変更されると、変更通知の待機操作から制御が戻ります。


link:
http://www29.atwiki.jp/rai002/pages/51.html

インターフェイス
C++ in プログラム
作成日2011-02-11 04:49:03

参考
http://www.01-tec.com/document/interface_oriented.html
仮想関数、純粋仮想関数
C++ in プログラム
作成日2011-02-11 04:48:39

仮想関数
再定義してもらいたい関数につける
virtual void data();
のように宣言する


純粋仮想関数
必ず再定義してほしい関数につける
virtual void data() = 0;
のように宣言する
この関数を含むものは必ず継承されなければならない


参考:
http://www.geocities.jp/ky_webid/cpp/language/010.html


抽象クラスの使い方
C++ in プログラム
作成日2011-02-11 04:48:12

//抽象クラスの利用方法
//動くかどうかは知らない
class hito{
  int number;
public:
  virtual string getNumber() = 0;  //抽象関数
  void Disp(){
    cout << getNumber() << endl;
  }
};


class data :hito{
  string getNumber(){
    return number;
  }
};


int main(){
  data d;
  d.Disp();
}
プロパティ
C# in プログラム
最終更新日2011-02-11 04:44:03   作成日2011-02-11 04:20:43

変数のように扱える関数

普通の変数宣言は
public int number;

プロパティを利用するものは
private int num;
public int number
{
set{ this.num = value;}
get{ return this.num; }
}

という、書き方になる。

setが無いと
number = 100;
という書き方ができなくなる

getが無いと
int data;
data = number;
という書き方ができなくなる
プラグインの生成と実装
C# in プログラム
最終更新日2011-02-11 04:43:54   作成日2011-02-11 04:12:53

参考URL:
http://dobon.net/vb/dotnet/programing/plugin.html


準備とか

Pluginのインターフェイスをクラスライブラリで生成
ビルドだけして, Plugin.dll を出力

CountCharsをクラスライブラリで作成し、
プラグインを引っ張ってくる
参照設定にPlugin.dll
CountChars.dllを出力

新規プロジェクトのコンソールを選択
参照設定にPlugin.dll
を入れ、Debugフォルダ内に
pluginsのフォルダを作成
その中にCountChars.dll を入れる

以下それぞれのソースコード
///Plugin.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Plugin
{
  public interface IPlugin
  {
    string Name { get; }
    string Run(string str);
  }
  /// プラグインに関する情報
  public class PluginInfo
  {
    private string _location;
    private string _className;

    /// PluginInfoクラスのコンストラクタ
    /// path:アセンブリファイルのパス
    /// cls:クラスの名前
    private PluginInfo(string path, string cls)
    {
      this.Location = path;
      this.ClassName = cls;
    }

    /// アセンブリファイルのパス
    public string Location
    {
      set { this._location = value; }
      get { return _location; }
    }

    /// クラスの名前
    public string ClassName
    {
      set { this._className = value; }
      get { return _className; }
    }

    /// 有効なプラグインを探す
    /// <returns>有効なプラグインのPluginInfo配列</returns>
    public static PluginInfo[] FindPlugins()
    {
      System.Collections.ArrayList plugins =
        new System.Collections.ArrayList();
      //IPlugin型の名前
      string ipluginName = typeof(Plugin.IPlugin).FullName;

      //プラグインフォルダ
      string folder = System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly
        .GetExecutingAssembly().Location);
      folder += "\\plugins";
      if (!System.IO.Directory.Exists(folder))
        throw new ApplicationException(
          "プラグインフォルダ\"" + folder +
          "\"が見つかりませんでした。");

      //.dllファイルを探す
      string[] dlls =
        System.IO.Directory.GetFiles(folder, "*.dll");

      foreach (string dll in dlls)
      {
        try
        {
          //アセンブリとして読み込む
          System.Reflection.Assembly asm =
            System.Reflection.Assembly.LoadFrom(dll);
          foreach (Type t in asm.GetTypes())
          {
            //アセンブリ内のすべての型について、
            //プラグインとして有効か調べる
            if (t.IsClass && t.IsPublic && !t.IsAbstract &&
              t.GetInterface(ipluginName) != null)
            {
              //PluginInfoをコレクションに追加する
              plugins.Add(
                new PluginInfo(dll, t.FullName));
            }
          }
        }
        catch
        {
        }
      }

      //コレクションを配列にして返す
      return (PluginInfo[])plugins.ToArray(typeof(PluginInfo));
    }

    /// プラグインクラスのインスタンスを作成する
    /// <returns>プラグインクラスのインスタンス</returns>
    public Plugin.IPlugin CreateInstance()
    {
      try
      {
        //アセンブリを読み込む
        System.Reflection.Assembly asm =
          System.Reflection.Assembly.LoadFrom(this.Location);
        //クラス名からインスタンスを作成する
        return (Plugin.IPlugin)
          asm.CreateInstance(this.ClassName);
      }
      catch
      {
        return null;
      }
    }
  }
}
///Plugin.cs ここまで

///CountChars.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CountChars
{
  public class CountChars : Plugin.IPlugin
  {
    public string Name
    {
      get
      {
        return "文字数取得";
      }
    }
    public string Run(string str)
    {
      return str.Length.ToString();
    }
  }
}
///CountChars.cs ここまで

///MainApplication.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Plugin;

namespace MainApplication
{
  public class PluginHost
  {
    /// エントリポイント
    [STAThread]
    static void Main(string[] args)
    {
      //インストールされているプラグインを調べる
      PluginInfo[] pis = Plugin.PluginInfo.FindPlugins();

      //すべてのプラグインクラスのインスタンスを作成する
      Plugin.IPlugin[] plugins = new Plugin.IPlugin[pis.Length];
      for (int i = 0; i < plugins.Length; i++)
        plugins[i] = pis[i].CreateInstance();

      //有効なプラグインを表示し、使用するプラグインを選ばせる
      int number = -1;
      do
      {
        for (int i = 0; i < plugins.Length; i++)
          Console.WriteLine("{0}:{1}", i, plugins[i].Name);
        Console.WriteLine(
          "使用するプラグインの番号を入力してください。:");
        try
        {
          number = int.Parse(Console.ReadLine());
        }
        catch
        {
          Console.WriteLine("数字を入力してください。");
        }
      } while (number < 0 || number >= pis.Length);
      Console.WriteLine(plugins[number].Name + " を使用します。");

      //プラグインに渡す文字列の入力を促す
      Console.WriteLine("文字列を入力してください。:");
      string str = Console.ReadLine();

      //プラグインのRunメソッドを呼び出して結果を取得する
      string result = plugins[number].Run(str);

      //結果の表示
      Console.WriteLine("結果:");
      Console.WriteLine(result);

      Console.ReadLine();
    }

  }
}
///MainApplication.cs ここまで
lnkの情報取得
C++ in プログラム
最終更新日2011-02-11 04:43:33   作成日2011-02-11 04:26:45

.lib のリンク設定:プロジェクト単体での設定は
【プロジェクト】→【プロパティ】
  【リンカ】→【入力】→【追加依存ファイル】
に追加する

毎回利用するものは
【ツール】→【オプション】→【VC++ディレクトリ】
に追加する
送るにショートカットを追加する方法
その他 in メモ
最終更新日2011-02-11 01:20:55   作成日2011-02-10 04:00:07

***********************************************************
スタートメニュー

ファイル名を指定して実行

SENDTO

SendToフォルダが開くので、そこにショートカットをコピーする
***********************************************************
または、
***********************************************************
ドライブを変更していないとして、
C:\\Documents and Setting\\アカウント名
の中に隠しフォルダで存在する[SendTo]フォルダを開く
***********************************************************
以上
ただし、上がお勧めです。
JavaScriptツリー表示
未整理 in プログラム
作成日0000-00-00 00:00:00

*** Tree.js ***
function openTree(id)
{
  if(id.style.display != "none") id.style.display="none";
  else id.style.display='inline';
  return false;
}
***************

*** 利用場所での記述 ***
<a href="JavaScript:void(0)" OnClick="openTree( 【key】 )"> 【テキスト】</a>
<span ID="【key】" style=display:none;>
  【ツリー表示内容】
</span>
************************