エクスプローラを右クリックしてそのフォルダで「コマンドプロント」を開くメニューを追加する( .reg ファイルを実行 )

エクスプローラを右クリックしてコマンドプロンプトを開きたい場合は、以下のレジストリをインポートします(右端のダウンロードアイコンでダウンロード / 拡張子 .reg )
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\Folder\shell\cmd]
@="コマンドプロンプト(&P)"
 
[HKEY_CLASSES_ROOT\Folder\shell\cmd\command]
@="cmd.exe /s /k pushd \"%V\""

▼ 削除は以下です
Windows Registry Editor Version 5.00
 
[-HKEY_CLASSES_ROOT\Folder\shell\cmd]
 


▼ インストール場所をレジストリエディタで開くスクリプトをダウンロードします




「送る」に入れる簡易ダンプ ( VBScript )





※コマンドプロンプトの操作
Q : 終了します。
スペースキー : 次ページを表示します。
Enterキー : 次の行を表示します


自分で環境を作って、VBScript のコードファイルも自分で配置する場合は以下をご覧下さい。

SendTo フォルダにショートカットを作成する



この時、作業フォルダーを用意してそこに VBScript のコードファイルを保存します。実行するコマンドラインは以下のようになっています。

%windir%\system32\wscript.exe dump.vbs 35

35 は、コマンドプロンプトに一度に表示する行数です

dump.vbs( 作業フォルダーに置いてください )
if WScript.Arguments.Count = 1 then
	strMessage = "送るから実行して下さい" & vbCrLf & vbCrLf
	strMessage = strMessage & "※ リンク先の最後の数字はコマンドプロンプトの行数です   " & vbCrLf
	strMessage = strMessage & "※ プロパティよりウインドウを最大化する方法もあります   " & vbCrLf
	Call MsgBox(strMessage,0,"lightbox")
	Wscript.Quit
end if

Set WshShell = CreateObject( "WScript.Shell" )   
Set Fso = CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

strCommand = "cmd /c mode CON lines="&WScript.Arguments(0)&" & cscript.exe """ & _
strCurPath & "\dump_c.vbs"" """ & WScript.Arguments(1) & """ | more & pause"
Call WshShell.Run( strCommand )


dump_c.vbs
' ****************************************************
' ファイルを16進数でダンプします
' ****************************************************
Dim Fs,Stream
Dim InFile
Dim Kana
Dim KjFlg
Kana = Array( _
"。","「","」","、","・","ヲ","ァ","ィ","ゥ","ェ","ォ","ャ","ュ","ョ","ッ", _
"ー","ア","イ","ウ","エ","オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ","ソ", _
"タ","チ","ツ","テ","ト","ナ","ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ", _
"ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ン","゙","゚" )

Set Fs = CreateObject( "Scripting.FileSystemObject" )
Set Stream = CreateObject("ADODB.Stream")

InFile = WScript.Arguments(0)

Dim LineBuffer,DispBuffer,CWork,nCnt,strBuff,i,j

if not Fs.FileExists( InFile ) then
	Wscript.Echo "ファイルが存在しません"
	Wscript.Quit
end if

' ------------------------------------------------------
' Stream のオープン
Stream.Open
 
' ------------------------------------------------------
' Stream タイプの指定
Stream.Type = 1		' StreamTypeEnum の adTypeBinary
 
' ------------------------------------------------------
' 既存ファイルの内容を Stream に読み込む
Stream.LoadFromFile InFile
 
' ------------------------------------------------------
' バイナリ型の Stream オブジェクトからを読み取って加工
Bcnt = 0
nCnt = 0
KjFlg = ""

Do while not Stream.EOS

	if ( nCnt MOD 16 ) = 0 then
		Wscript.Echo "          0  1  2  3  4  5  6  7" _
		& "  8  9  A  B  C  D  E  F"
		Wscript.Echo "--------------------------------" _
		& "------------------------------------------"
	end if

	' 16 バイトの読込
	LineBuffer = Stream.Read(16)

	strBuff = ""
	For i = 1 to LenB( LineBuffer )
		CWork = MidB(LineBuffer,i,1)
		Cwork = AscB(Cwork)
		Cwork = Hex(Cwork)
		Cwork = Ucase(Cwork)
		Cwork = Right( "0" & Cwork, 2 )
		DispBuffer = DispBuffer & Cwork & " "
		strBuff = strBuff & CharConv( Cwork )
	Next

	Wscript.Echo _
		Right( _
			"00000000" & Ucase(Hex( nCnt * 16 )), 8 _
		) & " " & _
		Left(DispBuffer & String(49," "), 49 ) & strBuff
	DispBuffer = ""

	nCnt = nCnt + 1
 
Loop
 
' ------------------------------------------------------
' Stream を閉じる
Stream.Close

Set Stream = Nothing
Stream = Empty
Set Fs = Nothing
Fs = Empty

' ****************************************************
' 生データのテキスト
' ****************************************************
function CharConv( HexCode )

	Dim nCode

	nCode = Cint( "&H" & HexCode )

	if KjFlg = "" then
		if &H81 <= nCode and nCode <= &H84 or _
			&H88 <= nCode and nCode <= &H9f or _
			&HE0 <= nCode and nCode <= &HEA then
			KjFlg = HexCode
			CharConv = ""
			Exit Function
		end if
	else
		if HexCode <> "00" then
			KjFlg = KjFlg & HexCode
			CharConv = Chr( Cint( "&H" & KjFlg ) )
		else
			CharConv = ".."
		end if
		KjFlg = ""
		Exit Function
	end if

	if 0 <= nCode and nCode <= &H1F then
		CharConv = "."
	end if
	if &H20 <= nCode and nCode <= &H7E then
		CharConv = Chr(nCode)
	end if
	if &H7F <= nCode and nCode <= &HA0 then
		CharConv = "."
	end if
	if &HA1 <= nCode and nCode <= &HDF then
		CharConv = Kana(nCode-&HA1)
	end if
	if &HE0 <= nCode and nCode <= &HFF then
		CharConv = "."
	end if

end function

ショートカットを直接実行すると、以下のようなダイアログが出ます



最大化は、dump.vbs の 17行目からを、画面の解像度に合わせてカラム数を以下のように設定して実行時のウインドウを選択すると実装できます( ただ、ダンプの表示幅が決まっているのでこの場合あまり意味ありません )

strCommand = "cmd /c mode CON cols=160 & cscript.exe """ & _
strCurPath & "\dump_c.vbs"" """ & WScript.Arguments(1) & """ | more & pause"
Call WshShell.Run( strCommand, 3 )

操作補足

エクスプローラで SendTo フォルダに移動するには、アドレスバーに sendto と直接入力します。





GUID を取得してクリップボードにコピーする ( VBScript )

TypeLib.Guid で取得するのですが、取得した文字列の最後に NULL が現れるので Left 関数で文字列のみを取得しなおしています。

1) 最も多様なテクニックを使用して取得

クリップボードへのアクセスは clip.exe 
( コマンドプロンプトでリダイレクトが必要です )
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

' 外部実行・環境変数取得用
Set WshShell = WScript.CreateObject("WScript.Shell")

' テキストファイル出力用
Set Fs = CreateObject( "Scripting.FileSystemObject" )

' テンポラリフォルダの取得
TempFolder = WshShell.ExpandEnvironmentStrings("%TEMP%")

' テキストファイルを出力用に開く
Set OutObj = Fs.OpenTextFile( TempFolder & "\_guid_text.txt", 2, True )

' GUID を出力
guid = Left( TypeLib.Guid & "", 38 )
OutObj.Write guid

' clip.exe を使用してクリップボードにコピー
' ※ 同期処理でコマンドプロンプトを表示しません
Call WshShell.Run( "cmd.exe /c clip.exe < """ & TempFolder & "\_guid_text.txt""",0, True )

' メッセージ
MsgBox( guid & " をクリップボードにコピーしました" )


2) clip.exe を使用したセオリー的な取得

クリップボードへのアクセスは clip.exe 
( コマンドプロンプトでリダイレクトが必要です )
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

' 外部実行
Set WshShell = WScript.CreateObject("WScript.Shell")

' GUID を取得
guid = Left( TypeLib.Guid & "", 38 )

' clip.exe を使用してクリップボードにコピー
' ※ 同期処理でコマンドプロンプトを表示して一旦停止します
' 1) テキストの内容をクリップボードにコピー]
' 2) メッセージ
' 3) pause で停止
Call WshShell.Run( "cmd.exe /c echo " & guid & " | clip.exe & echo " & guid & " をクリップボードにコピーしました" & " & pause", , True )


3) InternetExplorer.Application でクリップボードへコピーする
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

' クリップボード用
' ※ HTA 等では直接 window.clipboardData より実行
' ※ するように書き換える必要があります
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
Do While objIE.Busy
	' 100 ミリ秒
	Wscript.Sleep 100
Loop

Call objIE.document.parentWindow.clipboardData.SetData( "Text", TypeLib.Guid & "" )
objIE.Quit

WScript.Echo "クリップボードにコピーしました" & vbCrLf & vbCrLf & TypeLib.Guid


4) 自分でクリップボードへコピーする
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

Call InputBox("コピーして使用して下さい","新しい GUID を取得しました",TypeLib.Guid)





VBScript の 関数定義を WEB 上に置いて PC で使用する

まず、WEB 側に置くコードですが、Content-Type を text/plain にする為に、PHP で httpヘッダーを記述します。.htaccess で記述してもかまいませんが、WEB上の好きな場所を移動しやすくする為に php で記述しておくのが一番いいと思います。

ソースのキャラクタセットは shift_jis で保存して shift_jis として httpヘッダーに出力します。こうしておくと、PC 側で ServerXMLHTTP を使って読み出して、動的に関数を定義する事も可能になります。( 動的に定義する場合は、UTF-8 で問題ありません )

WEB 側に VBScript のコードを置いて動的に定義する場合の注意として重要なルールが二つあります。

1) シングルクォートのコメントを使用しない
2) 条件式の = を使用しない

何れも VBScript の構文解析の問題らしいです。
<?php
header( "Content-Type: text/plain; charset=shift_jis" );
header( "Expires: Thu, 19 Nov 1981 08:52:00 GMT" );
header( "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" );
header( "Pragma: no-cache" );
?>
REM **********************************************************
REM 正規表現のトリム
REM **********************************************************
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

End Function


この関数は、VBScript の正規表現を使って文字列の左右の空白文字を漢字スペースも含めて取り除くものです。

PC 側の定義は通常通りですが、script 要素の src 属性で web 上の場所を指定する事になります。拡張子を .wsf にしてWscript.exe か Cscript.exe で実行します( 通常はエクスプローラからダブルクリックです )
<job>
<script language="VBScript" src="http://toolbox.winofsql.jp/vbs/regtrim.php"></script>
<script language="VBScript">

str = RegTrim( getResource( "mydata" ) )
MsgBox( "/" & str & "/" )

</script>
<resource id="mydata">


    この部分のみ取り出します    


</resource>
</job>

resource 要素では、ソースコード内にテキストデータを用意できるのでソースコードを準備しておいて、プログラムを登録したい時に使ったりします

但し、そのような場合は文の中に < があるとエラーになるので以下のように記述します
<job>
<script language="VBScript" src="http://toolbox.winofsql.jp/vbs/regtrim.php"></script>
<script language="VBScript">

str = RegTrim( getResource( "mydata" ) )
MsgBox( "/" & str & "/" )

</script>
<resource id="mydata">
<![CDATA[

    この部分のみ  <  取り出します    

]]>
</resource>
</job>





Google Chrome デベロッパーツールで知っておきたいテクニック

ESC で コンソールタブ以外で下部にコンソールを表示する



ESC で表示・非表示が切り替えられます。

リロードボタン長押しでオプションメニュー



デベロッパーツールが開いている状態でのみ、メニューが表示されてリロード方法を選択できるようになります。特に、最後の『キャッシュの消去とハード再読み込み』は、ショートカットキーが無いのでこのメニューからのみ利用できます。

ドラッグ & ドロップで要素を移動



ドラッグで top_1 の div を移動中です。ドロップすると移動され、CTRL+Z で元に戻ります

CSS のカラーフォーマットをその場で変更表示

カラー部分を、SHIFT を押しながらクリックすると、フォーマットが切り替わって循環します。



複数の JavaScript ソースより文字列検索



JavaScript の整形



ソースのスペースの表示



▼ スペース


▼ タブ


コンソールから関数のブレイクポイント作成

debug( 関数名 )

インスペクト直後のオブジェクト参照

$0

dir( $0 )

表示された内容を右クリックして表示されるメニューから、要素タブの該当部分へ戻れます
( $0 でも dir($0) でもどちらでも )



console.log では、以下のフォーマット文字列が使えます

console.log('%cBlue! %cRed!', 'color: blue;', 'color: red;'); のように複数も可
指定子出力
%s値を文字列としてフォーマットします。
%i または %d値を整数としてフォーマットします。
%f値を浮動小数点値としてフォーマットします。
%o値を展開可能な DOM 要素としてフォーマットします。[Elements] パネルに表示されるフォーマットです。
%O値を展開可能な JavaScript オブジェクトとしてフォーマットします。
%c2 番目のパラメータで指定されたように出力文字列に CSS スタイルルールを適用します。
%c は、続く文字列に対してスタイルを適用するものなので、色や大きさ等いろいろな表現をコンソール上で行います

この方法を使うと背景に画像を設定できるので、コンソールに画像を表示する事もできます。
console.log("%c%s","background: url('https://lh3.googleusercontent.com/-lpfmi9vuwOg/WDVegEds_SI/AAAAAAAAhxc/0DzXoBQQlJw_L7KXSIi2UY0hEJwjiNcHwCHM/s128/internet_kanki_woman1.png'); font-size: 1240px;"," ")

コンソールで IFRAME を選択

デフォルトでは、トップフレームなので IFRAME の中で作業したい場合に選択します



その他

コンソールでは、SHIFT+Enter で複数行可

copy コマンド( コンソールのみ ) でクリップボードへコピー

table コマンドと、console.table メソッド




Pleiades Eclipse Windows 64bit Ultimate Full Edition のインストールといろいろな準備

目的は、Pleiades(Eclipse 4.7 Oxygen 2) Ultimate Full Edition でインストール済、または準備されているソフトウェアをインストールして利用可能にする事です。

大きなソフトウェアでは、以下のようになります

1) Java ( Eclipse 内で JDK 6,7,8,9 が使用可能です / インストールされています )
2) Tomcat ( Tomcat は 6,7,8,9 が同梱されて選択して使用可能です / xampp にも Tomcat7 が入っています )
3) php ( php(x86) は xampp に入っていますが、既存のものを使用できます )
4) Ruby (Ruby そのものはインストールが必要です)Ruby 2.4 で GET/POST メソッドを想定した CGI 用の簡易テンプレートを作成してみましたRuby 2.4 で GET/POST メソッドを想定した CGI 用のテンプレート改良版( FORM で MySQL 参照と更新 )
5) Python (Python の 2(x64) と 3(x64) が同梱されて実行可能)
    MySQL の接続を行う場合は、Windows インストーラで Python をあらためてインストールが必要です
6) Perl ( perl(x86) は xampp に入っています )
7) C++/C ( MinGW GCC が入っていてビルドできます )

これらの開発環境は、Eclipse の UI よりプロジェクトを作成してプログラムを作成する事ができます。

8) xampp

これは開発する為のサーバー環境で、インストール済のものとインストールが必要なものがあります。

インストール済のサーバー用ソフトウェア

a) Apache  ( xampp から起動してすぐ使えます )
    ※既にインストール済の www サーバーや スクリプトベースの簡易サーバーも使えます
b) MySQL ( xampp から起動してすぐ使えます )
c) perl ( インストール済です )
d) php ( PHP 5.6.32 がインストール済です )
e) phpMyAdmin ( Apache に定義済の URL で使用できます )
f) sendmail ( fake sendmail という Windows 用の sendmail が入っています )
g) Tomcat ( xampp 環境で Eclipse とは別にインストールされています )

インストールが必要なサーバー用ソフトウェア

a) FileZillaFTP ( インストールする必要があります )
b) MercuryMail ( インストールする必要があります )

Pleiades のダウンロード

MergeDoc Project より Eclipse 4.7 Oxygen に入り、Windows 64bit Ultimate Full Edition をクリックしてダウンロードします。

http://ftp.jaist.ac.jp/pub/mergedoc/pleiades/4.7/pleiades-4.7.2-ultimate-win-64bit-jre_20171225.zip と表示が出てダウンロードされます。 



ここから、お約束の注意事項

Pleiades の中に入っている環境を問題無く使用する為には、二つのルールが昔からあります。

1) zip 書庫の名前を短くして( ここでは pleiades.zip )、c:\pleiades.zip とする。
2) 解凍ソフトとして 安全なのは Windows エクスプローラー
   7-ZipWinRAR で高速解凍 (パスの長さ制限を超えても正常に解凍できるため注意が必要)

ここでは、7-zip を( 昔から ) 使用しています。

最初の実行は、eclipse.exe -clean.cmd

これもお約束で、追加でソフトウェアをインストールしたり、環境が変化した場合に実行するようにしています。



最初のこの "c:\pleiades\eclipse\eclipse.exe -clean.cmd" の実行で、xampp の初期設定がされるようです。



ワークスペースを準備する

いろいろな言語や環境が利用可能なので、環境別のフォルダを用意してまず Java の Hello World を行います。



▼ コンソール Java 用のワークスペースを作成します



ワークスペースを作る毎に何故か 『システム PYTHONPATH の変更が検出されました』と出るので、良く解らないので気持ち悪いですが適用します。( いろいろ調べたんですが謎 )



言語毎に パースペクティブが用意されています。



Java のプロジェクトを作成します



プロジェクト名を入力して完了します( 他はデフォルトです )



パースペクティブは、JavaEE がシンプルなので変更して、開始コードを追加します。

▼ パースペクティブ変更


▼ 開始コードを追加




フォントを好みに変更します。



編集ボタンをクリックしてフォントを選択します。



Meiryo UI は、上へスクロール2回



実行の構成を作成します( 他の言語の事もあるのでこれに慣れたほうがいいです )
( ツールバーの実行ボタンの右の ▼ をクリックしてメニューを表示 )



Java アプリケーションをダブルクリックすると新しい構成が追加されるのでそのまま実行します。



ソースはこんな感じで行いました。以降の実行はツールバーからクリックして実行されます。




関連する記事Pleiades Oxygen 2 の XAMPP 内の FileZilla Server をインストールして使用するPleiades Oxygen 2 の XAMPP 内の MercuryMail をインストールして使用するPleiades Oxygen 2 の XAMPP 内の MySQL を利用可能にしてテストデータ(販売管理)を登録するPleiades Eclipse 4.7 Oxygen で Python を使って MySQL にアクセスする


fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信 : Gmail なので ssl(465)

Pleiades Oxygen : Python と Ruby のパースペクティブでワークスペースを開いて最初に現れる『RemoteSystemsTempFiles』を削除する

Pleiades All in One(NEON) で、サーブレットとJSP を作成する手順

Eclipse に Window Builder をインストールして Swing アプリケーションを作成する(1)

Java 8 で、sun.jdbc.odbc.JdbcOdbcDriver を使う手順



Pleiades Eclipse Windows 64bit Ultimate Full Edition 関連

Pleiades Eclipse 4.7 Oxygen 2 Windows 64bit Ultimate Full Edition のインストールといろいろな準備

▼ 補足情報 
Pleiades Oxygen : Python と Ruby のパースペクティブでワークスペースを開いて最初に現れる『RemoteSystemsTempFiles』を削除する

同梱アプリケーション

▼ Eclipse のプロジェクトから使用するもの
1) Java ( Eclipse 内で JDK 6,7,8,9 が使用可能です )
    ※ WindowBuilder を追加インストール
2) サーブレット&JSP ( Tomcat は 6,7,8,9 が同梱されて選択して使用可能です )
3) php ( php は xampp に入っていますが、既存のものを使用できます )
4) Ruby (Ruby そのものはインストールが必要です)
5) Python (Python の 2 と 3 が同梱されて実行可能)
6) Perl ( php は xampp に入っています )
7) C++/C ( MinGW GCC が入っていてビルドできます )

▼ 環境として使用するもの
★ XAMPP( この中に環境一式があります )
1) Apache
2) MySQL
3) phpMyAdmin ( apache 環境として動作します )
4) sendmail
5) Tomcat ( Pleiades 側とは別に単独で動作します )

追加インストールして利用するアプリケーション

1) FileZilla サーバー
2) MercuryMail ( POP3 と IMAP4 のメールサーバー )

追加環境

テストにはまだまだ使える(重宝する) AN HTTP Server の正しい使用方法

参考リンク

ざっくりJava JSP/サーブレット


Python

▼ ドキュメント
■ 言語
■ ライブラリ
8.11. pprint — データ出力の整然化

▼ アプリケーション
▼ 参考リンク
Chapter 5 Connector/Python Coding Examples
21.2. cgi — CGI (ゲートウェイインタフェース規格) のサポート

PythonのURLとクエリパラメータのパースまとめ
for文を使った繰り返し文の書き方
Python3基礎文法
基礎を復習 (リスト, タプル, ディクショナリ)
Python3系の基礎文法(文字列)


Ruby

▼ ドキュメント
■ 言語
■ 組み込みライブラリ
■ 標準添付ライブラリ
■ class WIN32OLE
■ library cgi
■ class CGI
■ ヒアドキュメント (行指向文字列リテラル)

▼ アプリケーション
▼ 参考リンク
Ruby/MySQL

Ruby(mechanize) で Seesaa のエクスポート
Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ
CGI(Ruby) / Hello world !
ruby-mysql の使い方の簡単な説明
Mechanize について


Pleiades Ultimate の XAMPP 内の MySQL を利用可能にしてテストデータを登録する

xampp-control.exe の設定

xampp-control.exe は管理者権限で実行する必要があるので、エクスプローラから右クリックしてプロパティの『互換性』タブで管理者として実行するチェックを ON にします。



my.ini の設定( サーバーをUTF-8 に設定 )



C:\pleiades\xampp\mysql\bin\my.ini の以下の部分のコメントを削除します。



開発用のソフトウェアを準備

SQLの窓 Build C++ と、販売管理C でテスト環境を構築します 。

手順1 ( MySQL の ODBC ドライバ)

SQLの窓 Build C++ は 32ビットアプリケーションなので、まず MySQL の ODBC ドライバ(32ビット)をダウンロードしてインストールします。

Connector/ODBC 5.3

※ 何も選択せずにダイアログ内で進めればOK です

手順2 (SQLの窓 Build C++)

次に、SQLの窓 Build C++ をダウンロードして解凍して WinOfSql.exe を実行して下さい。

※ レジストリは使用しません。
※ 複数のフォルダにいくつあっても動作します。
※ 削除すればアンインストールです。

実行後 M ボタンをクリックして MySQL 接続用のダイアログを開き、ODBC アドミニストレータボタンで ODBC の DSN を作成する Windows の管理ツール(32ビット) を実行します。



手順3 ( DSN 登録 )

ここで、xampp-control.exe を実行し、開始ボタンで MySQL を開始します。(初期設定なので失敗しないようにこのタイミングで実行しています / 以降は必要な時でいいです)



ユーザDSN => 追加 => MySQL ODBC 5.3 Unicode Driver

( ODBC32ビットドライバの一覧は、HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI より確認できます)

▼ Details ボタンで全て開いて Character Set で cp932 を選択して下さい。


データベースは、まだユーザ用を作成していないので mysql を選択します。これは後で変更しなくとも、接続時に変更しますのでこのままでいいです。

入力が終わったら、データベースの右の Test ボタンで接続が成功するのを確認します。接続に成功したら、OK で登録します。

手順4 ( SQLの窓 Build C++ で接続して DB 作成 )



M ボタンで接続ダイアログを表示して、DSN に登録した情報で接続します



右側のテキストエリアで create database 自分用のデータベース名 で、Action ボタンをクリックして作成します。





作成後は、いったん終了して再度 SQLの窓 Build C++ を実行します(オペミスを防ぐためです)。そして再度 M ボタンで、今度は作成したデータベース(ここでは lightbox)で接続します。( 接続情報を保存する為です )




手順5 ( 作成した データーベース の確認 )

接続後、テーブルが無いのでなにも表示されませんが、メニューに登録済みの SQL で内容を確認できます。

『データベース一覧』で、登録したデータベースと既に存在するデータベースを確認できます。





『システム変数の値』で、キャラクタセットを確認します





手順6 ( 販売管理C.mdb をインポート )

▼ 学習用 MDB データのダウンロード


解凍した中にある 販売管理C.mdb を SQLの窓 Build C++ の左側のリストにドラッグ&ドロップします。



次にリストの中のテーブルを、SHIFTキーを使って選択して(まず先頭をクリックして、SHIFTキーを押しながら最後をクリック)から、処理 => エクスポート => MySQL を選択



直前の接続が選択されているので、下欄のチェックボックスを二つ選択して実行します


※ チェックボックスが無いと、主キーが無い状態でデータのみがエクスポートされます( 後からキー設定は可能ですがテーブルを全て設定するのは面倒です )

完了すると左下にメッセージが出るので、x ボタンで閉じます。



閉じたら、そこは MDB の接続なので、M ボタンで切り替えて下さい。テーブルの一覧が表示されるはずです。

※ テーブルをダブルクリックすると、テーブルデータが表示されて直接変更が可能です。( 更新は 『編集』メニューから更新です )







関連する記事

Pleiades Eclipse 4.7 Oxygen 2 Windows 64bit Ultimate Full Edition のインストールといろいろな準備


Pleiades Oxygen 2 の XAMPP 内の FileZilla Server をインストールして使用する


Pleiades Eclipse 4.7 Oxygen で Python を使って MySQL にアクセスする





C# コンソールアプリを AN HTTPD で実行して WEB の根本を学ぶ

AN HTTP Server の使用方法

単純に、WEB アプリケーション初心者にブラウザとサーバーのやり取りを知ってもらう為に( 今は、開発者ツールがあるので途中の解説がしやすいですし )、C# で作った EXE をそのままブラウザで実行させます。

基本設定

EXE の列の『一般パスでも実行する』にチェックします



次に、一般パスに C# で作成された Debug フォルダを登録します。



後は、loclhost から実行するだけです。

ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace WebApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //string formtype = "GET";
            string formtype = "POST";

            string[] param = {""};

            // ******************************
            // Console.WriteLine を UTF8 で
            // ******************************
            Console.OutputEncoding = Encoding.UTF8;

            // ******************************
            // メソッド
            // ******************************
            string method = Environment.GetEnvironmentVariable("REQUEST_METHOD");
            // ******************************
            // QUERY_STRING
            // ******************************
            string query_string = System.Environment.GetEnvironmentVariable("QUERY_STRING");

            // ******************************
            // HTTP ヘッダ
            // PHP の session_cache_limiter
            // ******************************
            Console.WriteLine("Content-Type: text/html; charset=utf-8");
            Console.WriteLine("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
            Console.WriteLine("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
            Console.WriteLine("Pragma: no-cache");
            Console.WriteLine();

            string message = "<div>こんにちは世界</div>";

            // ******************************
            // HTML
            // ******************************
            string html = @"<!DOCTYPE html>
<html>
<head>
</head>
<body>
#{message}
<form method='#{formtype}'>
<p>氏名 : <input type='text' name='field1' value='#{field1}'></p>
<p>フリガナ : <input type='text' name='field2' value='#{field2}'></p>
<p>送信 : <input type='submit' name='send' value='送信'></p>
</form>
</body>
</html>";
            html = html.Replace("#{formtype}", formtype);

            // ******************************
            // GET
            // ******************************
            if (method == "GET")
            {
                param = query_string.Split('&');
            }

            // ******************************
            // POST
            // ******************************
            if (method == "POST")
            {
                string line = null;
                line = Console.ReadLine();
                param = line.Split('&');
            }

            foreach (string set in param)
            {
                string[] key_value = set.Split('=');
                if (key_value[0] == "field1")
                {
                    // System.Web を参照して using System.Web;
                    key_value[1] = HttpUtility.UrlDecode(key_value[1]);
                    html = html.Replace("#{field1}", key_value[1]);
                }
                if (key_value[0] == "field2")
                {
                    key_value[1] = HttpUtility.UrlDecode(key_value[1]);
                    html = html.Replace("#{field2}", key_value[1]);
                }
            }


            html = html.Replace("#{field1}", "");
            html = html.Replace("#{field2}", "");


            // #{} は Ruby の真似
            html = html.Replace("#{message}", message);

            Console.WriteLine(html);


        }
    }
}





AN HTTP Server の使用方法

AN HTTP Server は古いソフトで、サイトも消失していますがきっちり使い方を守れば WWW サーバの必要なテスト環境は USB に丸ごと保存して利用可能です。

手順1) ダウンロード

配布サイトは消失しているので、インターネット・アーカイブから取得可能です。

http://www.st.rim.or.jp/~nakata/

このように、入力すると以下のようになります。



ここから、最後らしい履歴の一つ前のページの 2015/02/05 へ移動します。



すると懐かしいページが表示されるのでスクロールしてダウンロードリンクを表示させます。





リンクをクリックしたらダウンロードして、httpd142p.zip を C:\ にコピーして解凍します。そして、httpd.exe をエクスプローラで右クリックしてプロパティダイアログを開いて互換性タブをクリックします。

一番大事なのは、ここで『管理者としてこのプログラムを実行する』にチェックを入れる事です。そしてこれが最も重要なルールです。




手順2) 最初の設定
実行して最初に設定画面からする事があります。実行すると、HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\AnHttpd が作成されて、設定はその下のキーの default に保存されます。

ですから、USB で場所を移動する場合はこの default キーをエクスポートして USB にコピーしましょう。また、複数の環境を管理したい場合はこのレジストリのエクスポートとインポートで管理しましょう。

(※ バックアップを兼ねる事ができます)

間違って、管理者権限以外で実行してしまってレジストリがおかしくなってしまっても、インポートすれば元に戻ります。

また、バックアップが無くても、レジストリから HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\AnHttpd を削除すれば正しく動作するようになります。
▼ 設定画面を開く 設定 1 : インデックスを表示する このチェックをまず外すのを設定でいつも最初に行います。というか、設定らしい設定といえばこれくらいで、後はスクリプト用の実行ファイルの登録と、仮想パスの登録ぐらいです。仮想パスにいたっては、C:\httpd142p がルートになっているので、フォルダを作成すればそのまま使えて USB での移動がしやすくなります。 設定 2 : PHP を登録する
この際、AN HTTP  Server の設定より重要なのは、php.ini の設定で以下を必ず行う事です。

cgi.force_redirect = 0
追加ボタンをクリックします PHP のパスは参照できないので、エクスプローラで SHIFTキ-を押しながら php-cgi.exe を右クリックして『パスのコピー』で取得したパスを貼り付けてから両端のダブルクォーテーションを取り除きます。 拡張子は .php です 設定 3 : 仮想パス を登録する 特に必要は無いですが、必要な場合は『エイリアス』タブで追加ボタンを押します これも、参照できないので php-cgi.exe と同様です。仮想パスは先頭に / を入れて下さい。 手順3) PHP の動作確認 以下の内容を C:\httpd142p に適当にフォルダを作成してその中に info.php として置いてから ブラウザで localhost よりインデックスを伝ってアクセスします。
<?php

phpinfo();

?>


手順4) 補足

以下のコマンドで HOSTS ファイルを開いて、127.0.0.1 に適当なドメインを割り当ててローカルの開発環境を本番に見立ててテストします。
cmd.exe /c powershell -NoProfile -ExecutionPolicy unrestricted -WindowStyle hidden -Command "start notepad.exe %SystemRoot%\system32\drivers\etc\hosts -verb runas"