link 作成テスト
mtmtroom
Tuesday, September 16, 2014
Wednesday, August 10, 2011
環境変数の展開について
- 環境変数の即時展開
バッチファイルを書いていると、変数が思っても見なかった動きをして、困ってしまうことがあります。例えば@echo off
といった内容のバッチファイルがあったとします。これをぱっと見ると"hogehuga"という出力がされると期待してしまいますが、実際に実行してみる と"foobar"という出力結果が得られます。なぜこのような結果になるかといいますと、各コマンドが実行されるときに環境変数が展開されるのではな く、バッチファイルのテキスト行が読み取られるときに展開が行われてしまうからで、上の例は次のように解釈されているために期待した結果が得られないので す。
setlocal
set HOGEHOGE="foobar"
if %HOGEHOGE% == "foobar" (
set HOGEHOGE="hogehuga"
echo %HOGEHOGE%
)
endlocal@echo off
これを、環境変数の即時展開と呼びます。
setlocal
set HOGEHOGE="foobar"
if "foobar" == "foobar" (
set HOGEHOGE="hogehuga"
echo "foobar"
)
endlocal - 遅延環境変数の展開
環境変数の即時展開を避けたい場合には"遅延環境変数の展開"という機能を使います。setlocal enabledelayedexpansion
と、バッチファイル中に書きますとその行から、endlocalに達するまで遅延環境変数の展開が有効になり、変数名を"!"(感嘆符)で囲うことで即時展開を避けることが可能になります。@echo off
このようにしますと"hogehuga"という出力結果を得ることが出来るようになります。
setlocal enabledelayedexpansion
set HOGEHOGE="foobar"
if %HOGEHOGE% == "foobar" (
set HOGEHOGE="hogehuga"
echo !HOGEHOGE!
)
endlocal
バッチファイル内での特殊文字のエスケープについて。
バッチファイル(というかコマンドプロンプト)での特殊文字のエスケープについてメモしておきます。
※ ここでいう「特殊文字」というのは、以下の記号のことです。
- 「
<」 (小なり記号) - 「
>」 (大なり記号) - 「
|」 (縦棒/パイプ記号) - 改行
とくにリダイレクト関係の記号については、そのまま使うと「コマンドの構文が誤っています。」とおこられること請け合いです。
話は単純でして、上記のような特殊な文字をバッチファイル内(やコマンドプロンプト)でただの文字として使用するには、特殊文字の前に「^」 (サーカムフレックス/ハット記号)を置けばよいです。
つまり、
ECHO ^< ECHO ^> ECHO ^| ECHO aaa^ bbb のように記述すれば、
< > | aaabbb と表示されるわけなのでした
Monday, May 2, 2011
ODBC3 の開発
1、ODBC基本概念
ODBCはRDBMSにアクセスするための共通のインタフェースです。
ハンドル
ODBCアプリケーションでは、データベース接続やSQL文など基本的機能をハンドルを使用して
定義し、一連のリソースを管理している
SQL_HANDLE_ENV 環境ハンドル
SQL_HANDLE_DBC データベース接続ハンドル
SQL_HANDLE_STMT ステートメントハンドル
SQL_HANDLE_DESC 記述子ハンドル
関数の戻り値とエラー処理
戻り値のデータ型はSQLRETURNである。
戻り値は、以下のように
SQL_SUCCESS 正常に終了した。
SQL_SUCCESS_WITH_INFO 正常に終了した
SQL_NO_DATA_FOUND これ以上のデータなし
SQL_ERROR 失敗した
SQL_INVALID_HANDLE 無効なハンドルがパラメータとしてわたれた。
SQL_ERRORまたははSQL_SUCESS_WITH_INFO場合、診断情報を生成されます。
SQLERROR(ODBCバージョン3より前)
SQLGetDiagRec(ODBCバージョン3以降)
2、開発流れ
ハンドルの割付
次のODBC関数を呼び出すことにより、ハンドルを割り当てることができます
・SQLAllocEnv,SQLAllocConnect,SQLAllocStmt( ODBCバージョン3前)
・SQLAllocHandle( ODBCバージョン3以降)
データソースへの接続
アプリケーションは環境ハンドルとデータベース接続ハンドルを割り付けてから、
データソースに接続します。
・SQLConnect
・SQLDriverConnect
・SQLBrowseConnect
SQL文の実行
二つの方法が用意されています。
・直接実行
・準備後の実行
直接実行する場合、SQLExecDirect関数でSQL文を直接実行します。
準備後に実行する場合、あらかじめSQLPrepare関数でSQL文を準備しておき,
SQLExecute関数で実行します。
結果セットの取り出し
SQLの実行結果(列)とアプリケーション・プログラム変数を関連つけるは、
SQLBindCol関数でバインドします。
結果セットから1行ずつ行を取り出すには、SQLFetch関数を使用する
結果セットからまとめて行を取り出すには、SQLExtendedFetch関数を使用する
トランザクション制御
ODBCの仕様では、デフォルトで自動コミットが有効になっています。
自動コミットのON/OFFを切り替えるには、SQLSetConnectionOption関数を使用する
自動コミットが無効な場合、コミット及びロールバックを明示的に行う。
トランザクション制御はSQLTransact関数を行います。
データベースとの切断
データベースの切断を行うには、SQLDisconnect関数を使用する。
ハンドルの解放
次の関数を呼び出すことにより、バンドルを解放することができます。
・SQLFreeStmt, SQLFreeConnect, SQLFreeEnv(ODBCバージョン3前)
・SQLFreeHandle(ODBCバージョン3以降)
ODBCはRDBMSにアクセスするための共通のインタフェースです。
ハンドル
ODBCアプリケーションでは、データベース接続やSQL文など基本的機能をハンドルを使用して
定義し、一連のリソースを管理している
SQL_HANDLE_ENV 環境ハンドル
SQL_HANDLE_DBC データベース接続ハンドル
SQL_HANDLE_STMT ステートメントハンドル
SQL_HANDLE_DESC 記述子ハンドル
関数の戻り値とエラー処理
戻り値のデータ型はSQLRETURNである。
戻り値は、以下のように
SQL_SUCCESS 正常に終了した。
SQL_SUCCESS_WITH_INFO 正常に終了した
SQL_NO_DATA_FOUND これ以上のデータなし
SQL_ERROR 失敗した
SQL_INVALID_HANDLE 無効なハンドルがパラメータとしてわたれた。
SQL_ERRORまたははSQL_SUCESS_WITH_INFO場合、診断情報を生成されます。
SQLERROR(ODBCバージョン3より前)
SQLGetDiagRec(ODBCバージョン3以降)
2、開発流れ
ハンドルの割付
次のODBC関数を呼び出すことにより、ハンドルを割り当てることができます
・SQLAllocEnv,SQLAllocConnect,SQLAllocStmt( ODBCバージョン3前)
・SQLAllocHandle( ODBCバージョン3以降)
データソースへの接続
アプリケーションは環境ハンドルとデータベース接続ハンドルを割り付けてから、
データソースに接続します。
・SQLConnect
・SQLDriverConnect
・SQLBrowseConnect
SQL文の実行
二つの方法が用意されています。
・直接実行
・準備後の実行
直接実行する場合、SQLExecDirect関数でSQL文を直接実行します。
準備後に実行する場合、あらかじめSQLPrepare関数でSQL文を準備しておき,
SQLExecute関数で実行します。
結果セットの取り出し
SQLの実行結果(列)とアプリケーション・プログラム変数を関連つけるは、
SQLBindCol関数でバインドします。
結果セットから1行ずつ行を取り出すには、SQLFetch関数を使用する
結果セットからまとめて行を取り出すには、SQLExtendedFetch関数を使用する
トランザクション制御
ODBCの仕様では、デフォルトで自動コミットが有効になっています。
自動コミットのON/OFFを切り替えるには、SQLSetConnectionOption関数を使用する
自動コミットが無効な場合、コミット及びロールバックを明示的に行う。
トランザクション制御はSQLTransact関数を行います。
データベースとの切断
データベースの切断を行うには、SQLDisconnect関数を使用する。
ハンドルの解放
次の関数を呼び出すことにより、バンドルを解放することができます。
・SQLFreeStmt, SQLFreeConnect, SQLFreeEnv(ODBCバージョン3前)
・SQLFreeHandle(ODBCバージョン3以降)
Wednesday, June 16, 2010
google maps イベント
Google Maps API version 3のイベントは二つがある。
- ユーザーイベント。DOMからGoogle Maps APIに伝播される。
- Maps APIオブジェクトのMVC状態変化を通知する。
UIイベント。マウスやキーボードイベントのようなユーザーイベントです。Maps APIでは様々クロスブラウザの特徴を扱う必要なく、DOMイベントを監視し反応さセルメカニズムを提供します。UIステートが引数として渡されます。
MVC状態変化
MVCオブジェクトは一般的にstate(状態)を持っています。オブジェクトのプロパティが変更した時は、APIはプロパティ変更通知(property_changedイベント)を発生します。例えば、地図のズームレベルが変更されると、zoom_changedイベント発生する。引数は何も渡しません。
イベントを登録する
通知を受け取るために、addListener()を使って、イベントハンドラを登録する。zoom_changedイベントを登録する。
google.maps.event.addListener(map, 'zoom_changed', functionA);
UIイベントの引数にアクセスする。
UIイベントは引数を渡し、イベントリスナーを使ってアクセスすることができます。’click’イベントで、通常はMouseクリックされた地図上の位置を意味するlatLngプロパティとスクリーン上のクリックされた位置を意味するpixelを渡す。
google.maps.event.addListener(map, 'click', function(event){
var mylatlng = event.latLng;
});
イベントハンドラ内でプロパティの取得と設定
MVC状態変化イベントは引数を渡しません。MVC状態変化のプロパティを調べたい時は、明示的なオブジェクトのgetProperty()メソッドをコールするのが良い。
Monday, June 14, 2010
Google Maps Version 3
Google Mapsを作り手順
- scriptタグを使って、Map API JavaScriptを読み込みます。
- 地図を表示するためのdiv要素を作成する
- たくさんの地図プロパティの保持するためのJavascriptオブジェクト定数を作成する
- ”map”オブジェクトを作成するためのjavascript関数を書きます。
- bodyタグのonloadイベントで、地図オブジェクトを初期化します。
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<div id="map" style="height:100%;width:100%"></div>
function initilize(){
//location
var myLocation = new google.maps.LatLng(34.32322,113.323232);
//map option
var myOptions ={
zoom: 8,
center: myLocation,
mapTypeId: google.maps.MapTypeId.ROADMAP
//mapTypeId:google.maps.MapTypeId.SATELLITE
//mapTypeId: google.maps.MapTypeId.HYBRID
//mapTypeId: google.maps.MapTypeId.TERRAIN
}
}
var map = new google.maps.Map(document.getElementById("map"), myOptions);
<body onload="initilize()">
......
</body>
Monday, May 17, 2010
日本単語
メリハリ 減り張り 減り張りがない授業
カンボジア
力量 リキリョウ 力量のある人
軌道 キドウ
パーソン Person
湧く わく あなたのお話を聞いて希望が湧いてきた
根本 コンポん 其の件は根本から考え直す必要がある
劣る おとる こちらの品物は安いが質が劣る
過言 カゴん 石油は100パーセント輸入に頼っていると行っても過言ではない。
突き詰める つきつめる 事故の原因をつきつめる。
あらゆる あらゆる機会を利用する
紛れもない まぎれもない 一連の事件は紛れもなくあいつの士業
大掛かり おおがかり 大掛かりな密集。
心がけ こころがけ 防災は日ごろの心がけが大切だ
見抜く みぬく 彼が口先ばかりで誠意のない人間であることを私は一目で見抜いた。
網羅 もうら 報告書はあらゆる重要問題を網羅している。
懸念 懸念していたことが現実のものとなった。
撲滅 ぼくめつ がん撲滅運動を展開する。
品薄 しなうす
取り扱い とりあつかい 取り扱い時間 取り扱い注意
富裕層 ふゆうそう
占拠 せんきょ 暴徒が事務所を不法占拠した。
冤罪 えんざい 冤罪を晴らす
奪わる うばわる 自由をうばわる
立会人 たちあいにん
強固 きょうこ
水深 すいしん 湖の水深をはかる
明らか あきらか 明らかな証拠
証拠 しょうこ
湖畔 こはん
生息 せいそく 生息地
衝突 しょうとつ
狙撃 そげき
少将 しょうしょう
顧問 こもん
園児 えんじ
襲撃 しゅうげき
刃物 はもの
素顔 すがお
強硬 きょうこう
銃撃 じゅうげき
信奉者 しんぽうしゃ
噴火 ふんか
迫力 はくりょく
欧州 おうしゅう
閉鎖 へいさ
滑走路 かっそうろ
Saturday, February 6, 2010
iPhone application guid
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ApplicationEnvironment/ApplicationEnvironment.html#//apple_ref/doc/uid/TP40007072-CH7-SW1
Friday, February 5, 2010
eclipse pluginの管理
1.eclipseディレクトリ下で、linksフォルダを作成する、下.linkファイルを作成する
2..linkファイル中で、
path=c:abcd\efg
というように実際にプラグインが入ったディレクトリへのパスを書く
3.efg目録した、下のように eclipse というディレクトリを作り、その下に plugins, features ディレクトリが並ぶような構成にする。
c:\abcd
\efg
+eclipse
+plugins
+features
2..linkファイル中で、
path=c:abcd\efg
というように実際にプラグインが入ったディレクトリへのパスを書く
3.efg目録した、下のように eclipse というディレクトリを作り、その下に plugins, features ディレクトリが並ぶような構成にする。
c:\abcd
\efg
+eclipse
+plugins
+features
Tuesday, January 12, 2010
組み込み現場のCプログラム 基礎からわかる 徹底入門 メモ
品質
1.機能性
2.効率性
3.信頼性
4.保守性・移植性
良いコード
1.わかりやすい論理構造
2.わかりやすい論理式
3.表現の一貫性
4.一貫したコーディングスタイルとコーディング規約
5.シンプルなプログラム
良いコードーー信頼性についての例
1.ごみによる誤動作を防ぐ
i.領域の初期化
ii.配列での範囲外添え字使用によるデータ領域の破壊
#define ARRAY_MAX (1024)
short int i, iarray[ARRAY_MAX];
for (i = 0; i < (sizeof(iarray)/sizeof(iarray[0])); i++){
iarray[i]= 0;
}
iii.長すぎる文字列の文字列変数代入によるデータ領域の破壊
#define STR_SIZE (8)
#define EOS ('\0')
char cbuff[STR_SIZE];
strncpy(cbuff,"abcdefghij",STR_SIZE - 1);
cbuff[STR_SIZE -1] = EOS;
2i.データ精度の不足による不具合を防ぐ
3i.資源の食いつぶしを防ぐ --メモリリーク
malloc -- free
4i.資源の食いつぶしを防ぐ --無限ループ
5i.領域のオーバーフローをさせない
バッファオーバーフロー
スタックオーバーフロー
6i.例外に対応する
良いコードーー効率性についての例
1.CPUクロックを無駄に使わない。
2. CPU実行テスト制約を意識する
除算命令 分岐命令 メモリ操作命令
3.限りあるメモリ資源を上手に活用する
良いコードーー保守性・移植性についての例
読みやすさ
不具合は、以下の要領で記録します。
誰が
いつ
どこで
何に対して
どのような手順によって
どのような内容のものを発見したが
修正についても、以下の点を記録し
誰か
いつ
何にに対して
どのような修正を加えたのか
1.機能性
2.効率性
3.信頼性
4.保守性・移植性
良いコード
1.わかりやすい論理構造
2.わかりやすい論理式
3.表現の一貫性
4.一貫したコーディングスタイルとコーディング規約
5.シンプルなプログラム
良いコードーー信頼性についての例
1.ごみによる誤動作を防ぐ
i.領域の初期化
ii.配列での範囲外添え字使用によるデータ領域の破壊
#define ARRAY_MAX (1024)
short int i, iarray[ARRAY_MAX];
for (i = 0; i < (sizeof(iarray)/sizeof(iarray[0])); i++){
iarray[i]= 0;
}
iii.長すぎる文字列の文字列変数代入によるデータ領域の破壊
#define STR_SIZE (8)
#define EOS ('\0')
char cbuff[STR_SIZE];
strncpy(cbuff,"abcdefghij",STR_SIZE - 1);
cbuff[STR_SIZE -1] = EOS;
2i.データ精度の不足による不具合を防ぐ
3i.資源の食いつぶしを防ぐ --メモリリーク
malloc -- free
4i.資源の食いつぶしを防ぐ --無限ループ
5i.領域のオーバーフローをさせない
バッファオーバーフロー
スタックオーバーフロー
6i.例外に対応する
良いコードーー効率性についての例
1.CPUクロックを無駄に使わない。
2. CPU実行テスト制約を意識する
除算命令 分岐命令 メモリ操作命令
3.限りあるメモリ資源を上手に活用する
良いコードーー保守性・移植性についての例
読みやすさ
不具合は、以下の要領で記録します。
誰が
いつ
どこで
何に対して
どのような手順によって
どのような内容のものを発見したが
修正についても、以下の点を記録し
誰か
いつ
何にに対して
どのような修正を加えたのか
Monday, January 11, 2010
日本の県
北海道
東北(6)
青森県 岩手県 秋田県 宮城県 山形県 福島県
関東(7)
茨城県 栃木県 群馬県 千葉県 埼玉県 東京都 神奈川県
中部(9)
新潟県 長野県 山梨県 静岡県 富山県 石川県 福井県 岐阜県 愛知県
近畿(7)
三重県 滋賀県 奈良県 和歌山県 京都府 大阪府 兵庫県
中国(5)
鳥取県 島根県 岡山県 広島県 山口県
四国(4)
香川県 愛媛県 徳島県 高知県
九州(6)
福岡県 佐賀県 長崎県 熊本県 宮崎県 鹿児島県
沖縄県
東北(6)
青森県 岩手県 秋田県 宮城県 山形県 福島県
関東(7)
茨城県 栃木県 群馬県 千葉県 埼玉県 東京都 神奈川県
中部(9)
新潟県 長野県 山梨県 静岡県 富山県 石川県 福井県 岐阜県 愛知県
近畿(7)
三重県 滋賀県 奈良県 和歌山県 京都府 大阪府 兵庫県
中国(5)
鳥取県 島根県 岡山県 広島県 山口県
四国(4)
香川県 愛媛県 徳島県 高知県
九州(6)
福岡県 佐賀県 長崎県 熊本県 宮崎県 鹿児島県
沖縄県
Monday, December 28, 2009
CPU機能ブロッグ、入出力回路、メモリ構成
1、レジストの論理回路構成とプログラムカウンタ
インテル社の8080マイクロプロセッサで用いられていた、最もシンプルなレジスタ構成を示します。演算レジスタ(アキュムレータ、フラグレジスタ)、汎用レジスタ(データ、アドレス、演算値での一時などの記憶に用いる多用レジスタ)、スタックポインタ、プログラムカウンタ。
1.1命令レジスタ、演算レジスタ。
命令レジスタは、命令デコーダに信号を引き渡すための一時記憶用レジスタである。演算レジスタは特別なレジスタを持っているのではなく、汎用レジスタをアキュムレータとし、ほかの汎用レジスタと組み合わせて演算レジスタを構成しているのです。
1.2フラグレジスタ
フラグレジスタは、各ビットがいろいろなCPU状態を示すレジスタです。
1.3スタックポインタ
実行順次制御命令での、コール/リターン命令で用いるスタックポインタは、アドレス値をもつスタック専用レジスタです。
1.4プログラムカウンタ
プログラムカウンタは、CPUの現在の命令実行位置を記憶しているメモリです。
2、命令デコーダと制御信号生成回路
1.1命令デコーダは、符号化されている命令レジスタ内容(器機語データ)を解読し、制御信号生成回路の入力信号としてデコードするための命令復号化回路ということになります。
1.2制御信号生成回路
CPU内部の各機能ブロッく(演算回路、アドレス制御回路、汎用レジスタなど)が動作実行するための制御信号を出力します
3、演算部の構成
Z80の演算部は、アキュムレータ、レジスタ、演算回路(ALU)、フラグレジスタ
5、メモリの役割
CPUとともに用いるメモリ種類には、ROM とRAMの2種類があります。ROMには、コンピュータが動作するために必要な動作手順などの基本プログラムや固定データなどを格納します。RAMは、実行プログラム、作業プログラム、演算子、演算データ格納などのメインメモリとして使用しています。
Thursday, December 3, 2009
Monday, August 10, 2009
Thursday, July 30, 2009
Monday, March 30, 2009
避免form自动提交
按Enter键,form提交的条件
主要出问题是第三种情况。
解决办法:
function submitStop(e){
if (!e) var e = window.event;
if(e.keyCode == 13)
return false;
}
1.在Opera、Safari、有<input type="text">或者<input type="password">。
2.在IE、Firefox、有<input type="text">或者<input type="password">1个以上、<input type="submit">或者<input type="image">有一个以上。
3.在IE、Firefox、<input type="text">或者<input type="password">只有一个、<input type="submit">和<input type="image">没有
主要出问题是第三种情况。
解决办法:
function submitStop(e){
if (!e) var e = window.event;
if(e.keyCode == 13)
return false;
}
<form>
<input type = "text" name = "text" onKeyPress="return submitStop(event);">
<input type = "submit" name = "button1" value = "送信">
</form>
Friday, March 27, 2009
思想之解放!
在人类历史上,每次的思想解放,都会是生产力迅速的提升,创造出灿烂的文明。
思想,对于人来说,决定着这个人的精神面貌,这个人的生活方式。人在经历各种生活,幸福,苦难这后,思想都会产生改变,可能进步,可能倒退。
我觉得,我现在需要换一种思考方式。
毕业已将近5年,虽说比刚毕业时强,但从内心的深处,还是感觉不行。之所以有这样感觉,还是因为,感觉能力不行。
山高人为峰,人这所以比山高,是因为人站在山顶上。人要走的更远,只能站在巨人的肩上。前人创作了很多其实,其实拿来用就行,完全没有必要,自己在重新做一个,除非你有闲时间。更好的利用前人创作的技术,才是上策。
思想,对于人来说,决定着这个人的精神面貌,这个人的生活方式。人在经历各种生活,幸福,苦难这后,思想都会产生改变,可能进步,可能倒退。
我觉得,我现在需要换一种思考方式。
毕业已将近5年,虽说比刚毕业时强,但从内心的深处,还是感觉不行。之所以有这样感觉,还是因为,感觉能力不行。
山高人为峰,人这所以比山高,是因为人站在山顶上。人要走的更远,只能站在巨人的肩上。前人创作了很多其实,其实拿来用就行,完全没有必要,自己在重新做一个,除非你有闲时间。更好的利用前人创作的技术,才是上策。
Subscribe to:
Posts (Atom)