SQLの窓

2023年08月04日


Replit : js-web-speech

https://replit.com/@sworc/js-web-speech





【JavaScriptの最新記事】
posted by lightbox at 2023-08-04 15:29 | JavaScript | このブログの読者になる | 更新情報をチェックする

2023年08月03日


Replit : js-csv-read-utf8

https://replit.com/@sworc/js-csv-read-utf8



CSV エディタは拡張で追加して、.csv ファイルを右クリックして選択。
そののちタブをリロードしないと表示されない謎拡張



posted by lightbox at 2023-08-03 16:36 | Replit | このブログの読者になる | 更新情報をチェックする

2023年08月02日

2023年03月02日


指定した位置でレジストリエディタを開く為の VBScript をダウンロードします

理屈としては、regedit は、終了する時に表示していたパスをレジストリに保存しており、その場所に書き込む事によって regedit を起動した時に好きな場所が表示されるようにしています。
保存場所 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey
コンボボックスにいくつかサンプルを用意しています。入力フィールドに直接セットしてもいいですし、いったんダウンロードしたソースの先頭のパスを変更しても OK です。
IE11 ソースエディタは、インターネットオプションのプログラムでメモ帳を選択してからアクセスします

一度ダウンロードしたソースコードの先頭の strParam にレジストリのパスを設定するだけで使えます
strParam = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI"

' レジストリ書き込み用
Set WshShell = CreateObject( "WScript.Shell" )
' WMI用
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' レジストリエディタが最後に開いていたキーの登録を行います
strPath = "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey"
if GetOSVersion() >= 6 then
	strRegPath = "コンピューター\" & strParam
else
	strRegPath = "マイ コンピュータ\" & strParam
end if

' 既に regedit が実行中の場合はいったん終了させます
Set colProcessList = objWMIService.ExecQuery _ 
	("Select * from Win32_Process Where Name = 'regedit.exe'") 
For Each objProcess in colProcessList
	' 最後のウインドウの位置とサイズを保存する為の終わらせ方
	WshShell.AppActivate("レジストリ エディタ")
	Wscript.Sleep(500)
	WshShell.SendKeys ("%{F4}")
	Wscript.Sleep(500)
	' 上記終わらせ方が失敗した時の強制終了
	on error resume next
	objProcess.Terminate() 
	on error goto 0
Next 

WshShell.RegWrite "HKCU\" & strPath, strRegPath, "REG_SZ"

' レジストリエディタを起動します
Call WshShell.Run( "regedit.exe" )
' レジストリエディタが終わるまで待つ場合は以下のようにします
' Call WshShell.Run( "regedit.exe", , True )

REM **********************************************************
REM OS バージョンの取得
REM **********************************************************
Function GetOSVersion()

	Dim colTarget,str,aData,I,nTarget

	Set colTarget = objWMIService.ExecQuery( _
		 "select Version from Win32_OperatingSystem" _
	)
	For Each objRow in colTarget
		str = objRow.Version
	Next

	aData = Split( str, "." )
	For I = 0 to Ubound( aData )
		if I > 1 then
			Exit For
		end if
		if I > 0 then
			nTarget = nTarget & "."
		end if
		nTarget = nTarget & aData(I)
	Next

	GetOSVersion = CDbl( nTarget )

End Function





posted by lightbox at 2023-03-02 08:43 | VBScript | このブログの読者になる | 更新情報をチェックする

2023年02月14日


JScript / VBScript : 指定したフォルダ内のフォルダ毎の使用済みサイズを読める範囲でレポートする

フォルダを整理するのはとてもたいへんな作業なので、まずは容量で優先順位を決めましょう

▼ JScript のダウンロード

▼ VBScript のダウンロード

✅ スクリプト実行 ✅ 結果 System Volume Information は、無駄に使われてる場合が多いそうです。 ✅ 参考ページ ✅ System Volume Information をエクスプローラで表示させる ✅ データを削除

show-folders-size.js

// ************************************************
// カンマ編集
// ************************************************
String.prototype.number_format = 
function (prefix) {
	var num = this.valueOf();
	prefix = prefix || '';
	num += '';
	var splitStr = num.split('.');
	var splitLeft = splitStr[0];
	var splitRight = splitStr.length > 1 ? '.' + splitStr[1] : '';
	var regx = /(\d+)(\d{3})/;
	while (regx.test(splitLeft)) {
		splitLeft = splitLeft.replace(regx, '$1' + ',' + '$2');
	}
	return prefix + splitLeft + splitRight;
}

// ************************************************
// オブジェクト
// ************************************************
var Shell = new ActiveXObject("Shell.Application");
var WshShell = new ActiveXObject("WScript.Shell");
var Fso = new ActiveXObject( "Scripting.FileSystemObject" );

// ************************************************
// 管理者権限のコマンドプロンプトで再実行
// ************************************************
if ( WScript.Arguments.length == 0 ) {
	Shell.ShellExecute( "cmd.exe", "/c cscript.exe " + Dd(WScript.ScriptFullName) + " next" + " & pause", "", "runas", 1 );
	WScript.Quit();
}


var target = SelectDir( "対象フォルダを選択して下さい" )
if ( target == "" ) {
	WScript.Quit();
}

WScript.Echo( target )

// ************************************************
// フォルダオブジェクト取得
// ************************************************
var objFolder =  Fso.GetFolder(target)

var folderCollection = new Enumerator(objFolder.SubFolders);

var TargetSize = 0;
var obj;
var num;
var line;
for ( ;!folderCollection.atEnd(); folderCollection.moveNext()) {

	obj = folderCollection.item();
	
	try {
		num = Math.floor(obj.Size / 1024) / 1024;
		num = Math.floor( num * 1000 ) / 1000
		line = Lpad(("" + num).number_format()," ", 15) + " M : " + obj.Name
		WScript.Echo( line );

		// フォルダ全体の合計
		TargetSize = TargetSize + obj.Size
	}
	catch(e) {
		WScript.Echo( obj.Name + " : 処理できません");
	}

}

WScript.Echo( "" );

num = Math.floor(TargetSize / 1024) / 1024;
num = Math.floor( num * 1000 ) / 1000
line = Lpad(("" + num).number_format()," ", 15) + " M : " + "表示合計"
WScript.Echo( line );

// ************************************************
// ディレクトリ選択
// ************************************************
function SelectDir( strTitle ) {

	var obj

	obj = Shell.BrowseForFolder( 0, strTitle, 0x4B, 0 )
	if ( obj == null ) {
		return "";
	}
	if ( !obj.Self.IsFileSystem ) {
		ErrorMessage = "ファイルシステムではありません";
		return "";
	}

	return obj.Self.Path;

}

// ************************************************
// ダブルクォートで囲む
// ************************************************
function Dd( strValue ) {

	return "\"" + strValue + "\""

}

// ************************************************
// 指定数、指定文字列左側を埋める
// ※少数以下3桁の調整
// ************************************************
function Lpad( strValue, str, nLen ) {

	var i;
	var wk = "";

	for( i = 0; i < nLen; i++ ) {
		wk += str;
	}
	
	var test = strValue.split(".");
	if ( test.length == 2 ) {
		if ( test[1].length == 0 ) {
			strValue += "000"
		}
		if ( test[1].length == 1 ) {
			strValue += "00"
		}
		if ( test[1].length == 2 ) {
			strValue += "0"
		}
	}
	else {
		strValue += ".000"
	}

	return ( wk + strValue ).slice( nLen * -1 );

}


show-folders-size.vbs

' ************************************************
' 管理者権限で実行用
' ************************************************
Set Shell = CreateObject( "Shell.Application" )

' ************************************************
' 管理者権限で再実行
' ************************************************
if Wscript.Arguments.Count = 0 then
	Shell.ShellExecute "cmd.exe", "/c cscript.exe " & Dd(WScript.ScriptFullName) & " next" & " & pause", "", "runas", 1
	Wscript.Quit
end if

' ************************************************
' 除外フォルダ名を スペースで区切って並べる
' (簡易的な除外)
' ************************************************
Dim Exclude
Exclude = ".gem"
Exclude = Lcase(Exclude)

' ************************************************
' 処理用
' ************************************************
Set WshShell = CreateObject( "WScript.Shell" )
Set Fso = CreateObject( "Scripting.FileSystemObject" )

Dim target

' ************************************************
' 対象フォルダを選択
' ************************************************
target = SelectDir( "対象フォルダを選択して下さい" )
if target = "" then
	Wscript.Quit
end if

Wscript.Echo target
Wscript.Echo

' ************************************************
' フォルダオブジェクト取得
' ************************************************
Set objFolder =  Fso.GetFolder(target)

' ************************************************
' サブフォルダコレクション取得
' ************************************************
Set colSubFolder =  objFolder.SubFolders

' ************************************************
' 一覧
' ************************************************
Dim TargetSize : TargetSize = 0
For Each obj in colSubFolder

	Do While true

		if InStr(Exclude,Lcase(obj.Name)) > 0 then
			Exit Do
		end if

		on error resume next
		Wscript.Echo Lpad(FormatNumber((Fix(obj.Size / 1024) / 1024),3)," ", 15) & " M : " & obj.Name
		if Err.Number <> 0 then
			Wscript.Echo "                  ( " & obj.Name & " : 処理できません )"
		else
			TargetSize = TargetSize + obj.Size
		end if
		on error goto 0


		Exit Do
	Loop


Next

Wscript.Echo

Dim AllSize
Dim er : er = 0
on error resume next
AllSize = objFolder.Size
if Err.Number <> 0 then
	er = 1
	AllSize	= TargetSize
end if
on error goto 0


Wscript.Echo Lpad(FormatNumber((Fix(TargetSize / 1024) / 1024),3)," ", 15) & " M : " & "表示合計"

if er = 1 then
	Wscript.Echo "                  ( " & target & " のサイズは取得できませんでした )"
else
	Wscript.Echo Lpad(FormatNumber((Fix(AllSize / 1024) / 1024),3)," ", 15) & " M : " & target & " のサイズ"
end if

Dim fsize : fsize = 0
For Each file in objFolder.files
	fsize = fsize + file.size
Next
Wscript.Echo Lpad(FormatNumber((Fix((fsize) / 1024) / 1024),3)," ", 15) & " M : " & target & " 下のファイル"

Wscript.Echo

' ************************************************
' ディレクトリ選択
' ************************************************
Function SelectDir( strTitle )

	Dim obj

	Set obj = Shell.BrowseForFolder( 0, strTitle, &H4B, 0 )
	if obj is nothing then
		SelectDir = ""
		Exit Function
	end if
	if not obj.Self.IsFileSystem then
		ErrorMessage = "ファイルシステムではありません"
		SelectDir = ""
		Exit Function
	end if

	SelectDir = obj.Self.Path

End Function

' ************************************************
' ダブルクォートで囲む
' ************************************************
Function Dd( strValue )

	Dd = """" & strValue & """"

End function

' ************************************************
' 指定数、指定文字列左側を埋める
' ************************************************
Function Lpad( strValue, str, nLen )

	Lpad = Right( String(nLen,str) & strValue, nLen )

End Function






posted by lightbox at 2023-02-14 13:56 | WSH JScript | このブログの読者になる | 更新情報をチェックする

2023年02月08日


デスクトップを部分キャプチャした時に切り取り&スケッチを起動してキャプチャ画像に枠線を付加させる。

枠線が必要なのは自分の場合、GitHub か Excel に貼り付ける時ですね。Windows の ウインドウのキャプチャは、最初からあるので直接 mspaint を起動して貼り付けますが、切り取り&スケッチから mspaint を起動するレジストリの設定は、名前の前に _ を付けて先頭に出るようにしてるだけですね。( プログラムから開くを選んだ時に _ペイントを選択 )

ペイント使うのは、赤い枠線で強調したいとき。ペイントで処理が終わったら、CTRL + A で全体選択して CTRL + C です。

クリップボードの画像に枠線即設定は切り取り&スケッチの設定から、切り取り&スケッチの結果は通知の管理にあるはずです。( 大抵キャプチャと同時にバルーンが出るとは思いますが、間に合わなくても通知の管理開ければそこにあります。

切り取り&スケッチ経由で無くペイント開いて貼り付けた時は、まず【トリミング】です。


posted by lightbox at 2023-02-08 12:10 | Windows10 | このブログの読者になる | 更新情報をチェックする

#Zoom の必殺技 : 相手に自分の Zoom 関連のウインドウを見せる

通常相手には見えないですが、Win + プラスキーで 拡大鏡起動すると画面が画像扱いになるので、常に相手にデスクトップならみんな表示されます。



posted by lightbox at 2023-02-08 10:23 | リモート | このブログの読者になる | 更新情報をチェックする

2023年02月06日


GAS でユーザ作成 : 組織は "orgUnitPath": "/組織名A/組織名B"

Google の Admin console でテスト後、GAS での再現を確認
https://developers.google.com/admin-sdk/directory/reference/rest/v1/users/insert
上記リンクは管理コンソールで、右サイドで実際に自分のアカウントで API をリアルタイムに実行します。単なる登録系で量が少ない時は、これでひたすら実行したりします。

テスト後、 GAS で AdminDirectory 追加してコードの実行。最初、組織の設定解らなかったのでしなかったら、ルートに作成されたので調べて【"orgUnitPath": "/組織名A/組織名B"】である事を確認
function myFunction() {

  AdminDirectory.Users.insert({
    "name": {
      "familyName": "familyName",
      "givenName": "givenName"
    },
    "password": "パスワード",
    "primaryEmail": "user.insert@ドメイン",
    "changePasswordAtNextLogin": false,
    "recoveryEmail": "recovery@ドメイン",
    "orgUnitPath": "/組織名A/組織名B"
  });  
  
}

サンプルは Admin SDK Directory サービスですが、したい事が無かったりするので引数の渡し方はここから想像してテストするしか無いですね




posted by lightbox at 2023-02-06 16:12 | GAS | このブログの読者になる | 更新情報をチェックする

2023年02月04日


Windows 機能の呼び出し

パターン

1) control.exe /name : コントロール パネル項目の正規名 2) control.exe *.cpl 3) exe 4) explorer.exe : ms-settings: URI スキーム リファレンス 5) mmc.exe 6) rundll32.exe

代表的なもの

システム 詳細情報control.exe /name Microsoft.System
デバイスマネージャcontrol.exe /name Microsoft.DeviceManager
ネットワーク接続control.exe ncpa.cpl
プログラムと機能control.exe appwiz.cpl
デスクトップアイコンの設定control.exe desk.cpl,,0
リモートデスクトップの設定SystemPropertiesRemote.exe
システムのプロパティの詳細設定タブSystemPropertiesAdvanced.exe
コンピューターの管理CompMgmtLauncher.exe
リモートデスクトップmstsc.exe
Windows Updateexplorer.exe ms-settings:windowsupdate
ファイアーウォールとネットワーク保護explorer.exe windowsdefender://network/
ファイアーウォール詳細mmc.exe wf.msc
イベントビュアーmmc.exe eventvwr.msc /s
タスクスケジューラmmc.exe taskschd.msc /s
サービスmmc.exe services.msc /s
ローカル グループ ポリシーエディタmmc.exe gpedit.msc
ファイル名を指定して実行rundll32.exe shell32.dll,#61
ネットワークドライブの割当てrundll32.exe shell32.dll,SHHelpShortcuts_RunDLL Connect
フォルダオプションrundll32.exe shell32.dll,Options_RunDLL 7




posted by lightbox at 2023-02-04 19:24 | Windows | このブログの読者になる | 更新情報をチェックする

2023年02月02日


Google 共有ドライブの容量の上限について

ええと、上限が超えたと報告があって、対応する事となったのですが...
相変わらず Google のドキュメントは要点を取り出しにくい

結論から言うと、該当する共有ドライブを新しい組織に所属させて、組織単位で上限設定可能です。

1) マイドライブの上限は無いように思われる。
2) 共有ドライブの上限は、デフォルトでは 100G と書いてある。
3) しかし、対象の共有ドライブは 1テラ超えてからエラーが発生していた。
4) 全ての共有ドライブの上限を上げるわけにいかないので、個別の方法を調査。
5) どうも最近できた機能らしく、所属組織毎に共用ドライブを割り振れる。
6) そして、 所属組織毎に容量上限が設定できるので、新しい組織で上限を 10テラ に変更。

※ 所属組織は、デフォルトではルートですが、どの階層でもそこで上書きができます。 
Google Workspace for Education です
※ 一番上の一部を別の共有フォルダにある程度移動していて、これではあかんなぁ...となって調査


posted by lightbox at 2023-02-02 19:42 | Google | このブログの読者になる | 更新情報をチェックする

2023年01月07日


#ZOOM #アバター #ベータ版

正月の更新で英語のリリース内容にアバターの文字があったので試したら、ほぼキャラクタ着せ替えだった。

どうみてもあちらの TOON 系なので、AI 絡んで、日本系やリアル系に進化して欲しい 
画像アップロードが面倒な時代になって来たので、Twitter を使う。
イーロン・マスク、頑張ってね。


posted by lightbox at 2023-01-07 15:02 | WEBサービス | このブログの読者になる | 更新情報をチェックする

2022年12月31日


VScode でダークテーマでキャプチャした画像を印刷しないようにしましょう。トナーがもったいないです。

現場では当たり前の事ですが、この発想に及ばないのは実際の開発現場でのプリンタの管理が想像以上にこのようなお金の問題以外にもたくさんあるからです。



posted by lightbox at 2022-12-31 17:22 | システム開発 | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり