SQLの窓 イラストAC フリー素材

2018年10月28日

PowerShell 移行用 C# コンソールアプリのコードテスト( ZIP 圧縮 )

▼ とてもお世話になっています
ZipFile、ZipArchiveクラスを使用して、ZIP圧縮、展開(解凍)、リスト表示などを行う( dobon.net )

この方法ですと、画像関連で Thumbs.db が書庫に入ってしまいますが、仕方ないです。

public class MyClass のほうを、PowerShell に書いて [MyClass]::create_zip() で実行します。
using System;
using System.IO;
using System.IO.Compression;

namespace create_zip {
	class Program {

		static void Main(string[] args) {

			MyClass.create_zip(args[0], args[1]);

		}
	}

	public class MyClass {
		public static void create_zip(string dir, string zipPath) {

			Console.WriteLine(dir);

			if (File.Exists(zipPath)) {
				File.Delete(zipPath);
			}

			try {
				ZipFile.CreateFromDirectory(
							dir,
							zipPath
						);
			}
			catch (Exception ex) {

				Console.WriteLine(ex.Message);
			}

		}

	}
}


▼ 久しぶりに使うとタブの設定や中かっこの設定を忘れていた。
 

# バッチファイルからの引数
$dir = $Args[0]
$zipPath = $Args[1]

$code = @"
using System;
using System.IO;
using System.IO.Compression;

public class MyClass {
	public static void create_zip(string dir,string zipPath) {

		Console.WriteLine(dir);

		if (File.Exists(zipPath)) {
			File.Delete(zipPath);
		}

		try {
			ZipFile.CreateFromDirectory(
						dir,
						zipPath
					);
		}
		catch (Exception ex) {

			Console.WriteLine(ex.Message);
		}

	}

}
"@

Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies `
	( `
	"System.IO.Compression.FileSystem" `
	)

# 実行
[MyClass]::create_zip($dir,$zipPath)





posted by at 2018-10-28 19:08 | C# | このブログの読者になる | 更新情報をチェックする

2018年10月19日

PowerShell 内に C# を記述して、SQLServer( SQLExpress ) の SMO を使用してテーブルの CREATE TABLE 文 を取得する

ライブラリを取得する為に、nuget を使用します。

少し参照する dll が多いですが、VisualStudio で実行テストした後 PowerShell に移植しています
$code = @"
using System;
using System.Text;
using System.IO;
using System.Collections.Generic;
using System.Collections.Specialized;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
public class MyClass {

	public static void create_sql() {

		UTF8Encoding UTF8N_Enc = new UTF8Encoding();
		// false は上書き
		StreamWriter WriteFile = new StreamWriter("sqlexpress.sql", false, UTF8N_Enc);

		// サーバー
		Server srv;
		// インスタンス
		srv = new Server();

		// サーバーインスタンスの情報
		srv.ConnectionContext.AutoDisconnectMode = AutoDisconnectMode.NoAutoDisconnect;
		srv.ConnectionContext.LoginSecure = false;
		srv.ConnectionContext.Login = "sa";
		srv.ConnectionContext.Password = "";
		// 接続
		srv.ConnectionContext.Connect();

		// バージョンの表示
		Console.WriteLine(srv.Information.Version);

		// 参考
		Scripter scripter = new Scripter(srv);

		Database myDb = srv.Databases["lightbox"];
		foreach (Table myTable in myDb.Tables)
		{

			StringCollection tableScripts = myTable.Script();
			foreach (string script in tableScripts)
			{
			  WriteFile.WriteLine(script);
			}
		}

		WriteFile.Close();
		WriteFile.Dispose();

		srv.ConnectionContext.Disconnect();


	}
}
"@
Add-Type -Path ("C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.ConnectionInfo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Smo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.Sdk.Sfc.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SmoExtended.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlEnum.dll")
Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.ConnectionInfo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Smo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.Sdk.Sfc.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SmoExtended.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlEnum.dll")

[MyClass]::create_sql()




posted by at 2018-10-19 15:54 | PowerShell | このブログの読者になる | 更新情報をチェックする

2018年10月16日

DAZ3D : 荒れた宇宙船内を見廻るトロール



いつだったか、100% オフだったトロールです。もともと、たいした造形では無いので、一番かっこよく見える角度で歩かせてみました。マテリアルも、当然 Iray では無いので自己チューニングでちょっと光沢気味で濃い茶色にして、ライトで明暗付けてそもそも暗い場所で撮影。

なんですが、よくよく見ると、あと一歩でたぶん穴に転げ落ちると思われます...



Troll : $24.95




posted by at 2018-10-16 22:02 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

あの台風21号でぶっ倒れたTVのアンテナがやっと今日立ち直った


※ 台風というキーワードではこれが一番良かった。PNG の背景を灰色でかるくさっと色ぬって使用
※ ▼ Twitter の見栄えもとてもいい感じ


長かったです。

関西ではアンテナどころか、瓦が飛びまくったのでまだ修理できていない家ばかりですが、それでもアンテナがぶっ倒れると TV が映らないわけで、家族にはブースター付きの室内アンテナを購入しましたが、それが使える TV は居間の1台なのでいろいろ愚痴も言われたわけです。

なにせ、上新へのアプローチが一日遅れただけで、2週間も工事日が遅れました( 速攻で行った近所でも一週間後だった )。さらにその日が 9月の29日という最低な運命で、その日も台風24号の影響で工事が中止され、というかその日は尿管結石で入院したため自宅に居ないというのも相当不運です。

結局工事がさらに17日も伸びた今日になったわけですが、天気予報を見ながら不安でありましたが、今日は天気に恵まれて無事工事が終了したわけです。


※ アンテナの工事なのでこれがぴったり。一応本物は2段になるのですけれど
※ アンテナ施工法( DXアンテナ : PDF )


しかし、アンテナ設置に3時間もかかるとは思わなかったです。根本的にぶっ倒れてるので、屋根の四方から固定する作業もあったかもしれませんが、けっこうやきもきしました。家の中では TV のアンテナ強度サーチボタンをいつでも押せる状態でジリジリ待ってました。

で、びっくり。

もともと34年も使ってたアンテナなんで、ぶっ倒れる前の強度もしれてたんですが、今回新しいアンテナでは一番強度の高い部屋ではほぼ全て 99% でした。居間でも全て 90% 超えていたのでほっとしました。何せ、場合によってはブースター入れるとか言われてましたし( 1万6千円もするのですが、まあ必要ないとは思ってましたが... )、万が一ちゃんと映らなかったらまた愚痴いわれるし。


で、最初の見積もりよりも千円安かったし( それでも3万 )、サンTV もちゃっん映ってるのでめでたしです。



※ イラストAC よりフリーダウンロード


あ、そうそう。上新の業者さんですが、きっちりとした制服の感じのいいおじさんでした。職人風の人が来たらどうしようかと思いましたが、最後にアンケートを求めるあたり関西電力の駆けつけサービスと良く似た手法です( 関西電力は、電話かけて来て聞かれましたけどね )。




posted by at 2018-10-16 19:19 | 生活 : トラブル・知恵 | このブログの読者になる | 更新情報をチェックする

PowerShell 内に、C# を書いて、TKMP.DLL でメール受信

powershell -NoProfile -ExecutionPolicy Unrestricted .\mail_rec.ps1 > log.txt
.NET用メール送受信クラスライブラリ (TKMP.DLL) ▼ さくらインターネットのメールでテストしています mail_rec.ps1
$code = @"
using System;
using TKMP.Net;
using TKMP.Reader;
public class MyClass {
	public static void mail_rec() {

//public class MyClass
//{
//	public static void Main()
//	{
		ImapClient client = null;

		BasicImapLogon logon = new BasicImapLogon("ユーザ@さくらユーザ.sakura.ne.jp", "パスワード");
		client = new ImapClient(logon, "さくらユーザ.sakura.ne.jp", 993);
		client.AuthenticationProtocol = AuthenticationProtocols.SSL;

		try
		{
			if (!client.Connect())
			{
				Console.WriteLine("接続できませんでした");
				return;
			}
		}
		catch (Exception ex)
		{
			Console.WriteLine("接続エラーが発生しました" + ex.Message );
			return;
		}

		// メールデータ一覧を格納するオブジェクト
		IMailData[] mailData = client.GetMailList();

		// データがありません
		if (mailData == null)
		{
			Console.WriteLine("データがありません");
			return;
		}

		int maxCount = 100;
		int mailCounter = 0;

		// メールデータの数
		Console.WriteLine(mailData.Length);

		mailCounter = mailData.Length;
		if (mailCounter < maxCount)
		{
			maxCount = mailCounter;
		}

		// 読込み
		int idx = 0;

		// メールデータを表示するループ
		foreach (var data in mailData)
		{

			idx++;
			if (idx > maxCount)
			{

				break;
			}

			data.ReadBody();

			Console.WriteLine("■■■【" + idx +"開始】------------------------");

			// 本文無し( 本文が必要な場合は、false で、reader.MainText )
			MailReader reader = new MailReader(data.DataStream, false);

			if (reader.FileCount == 0)
			{
				Console.WriteLine("添付ファイルはありません");
			}

			//添付ファイルのコレクションを検査します
			foreach (TKMP.Reader.File file in reader.FileCollection)
			{
				// 保存場所は事前に作成する必要があります
				// (メールとの関連は、アプリケーション側で工夫する必要があります)
				file.FileSave(@"c:\temp\data\");
			}

			// UID ( ユニークなメールのID  )
			// ▼ tkmp リファレンス : http://uwa.potetihouse.com/library/tkmp/document/html/P_TKMP_Net_MailData_Imap_UID.htm
			// この値は各メールデータ毎にユニークであることをサーバーが保証しているので、既読メールの識別にはこの値を使用してください
			Console.WriteLine("UID : " + data.UID);

			// メールサイズ
			Console.WriteLine("サイズ : " + data.Length);

			// 本文( 本来はファイルかデータベースに書きだす )
			Console.WriteLine("▼【本文】------------------------");
			Console.WriteLine(reader.MainText);
			Console.WriteLine("▲【本文】------------------------");

			// ヘッダの一覧より、目的のヘッダを探す
			// http://uwa.potetihouse.com/library/tkmp/document/html/AllMembers_T_TKMP_Reader_Header_HeaderString.htm
			foreach (TKMP.Reader.Header.HeaderString headerdata in reader.HeaderCollection)
			{

				if ( headerdata.Name == "From" || headerdata.Name == "Subject" || headerdata.Name == "Date" ) {
					if (headerdata.Name == "From") {
						Console.WriteLine("【FROM】" + headerdata.Data);
					}
					if (headerdata.Name == "Subject") {
						Console.WriteLine("【件名】" + headerdata.Data);
					}
					if (headerdata.Name == "Date") {
						Console.WriteLine("【日付】" + headerdata.Data);
	
						string target = headerdata.Data;
						target = target.Replace(" (JST)", "");
						target = target.Replace(" (PDT)", "");
						try
						{
							DateTime dt = System.DateTime.ParseExact(target, "ddd, d MMM yyyy HH':'mm':'ss zzz", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None);
							Console.WriteLine("【編集日付】" + string.Format("{0}", dt));
						}
						catch (Exception ex)
						{
							Console.WriteLine("【変換エラー】" + headerdata.Data);
							Console.WriteLine(headerdata.Data + " はフォーマット変換できませんでした" + ex.Message);
						}
	
					}
				}
				else {
					Console.WriteLine("【" + headerdata.Name + "】=>" + headerdata.Data);
				}

			}

			Console.WriteLine("■■■【" + idx +"終了】------------------------");
			Console.WriteLine("");


		 }

		// 受信終了
		client.Close();


	}
}
"@

$path = "C:\user\dll"
Add-Type -Path ("${path}\TKMP.dll")
Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("${path}\TKMP.dll")

[MyClass]::mail_rec()


関連する記事

PowerShell2.0 : PowerShell 内で VBのコードを記述(TKMP.dllを使用)して、exe を作成した後実行してメールを送信する



posted by at 2018-10-16 11:51 | PowerShell | このブログの読者になる | 更新情報をチェックする

2018年10月13日

13日間の入院中(21万支払った)に時間がたっぷりあったので DAZ3D の過去作品をスレッドで投稿して、ハート3つ以上あったやつ

尿管結石で最初別の病院に救急車で運ばれて、そこで4万も支払ったのに痛みが引いた朝に妙な主治医が現れて、開口一番『ウチでは手術できないんで、居ててもムダだから退院しますか?』って言われた。

後から考えるといろいろふざけんなですが、その時も痛み引いてもう大丈夫と思い込んでたのでそのまま退院。しかし、尿管結石がそんなに簡単に終わるもので無い事をこの後思い知るわけです。

運の悪い事に、翌日の退院が土曜で次の週の月曜が祝日の為、火曜まで次の病院にも行くことができず最初の病院で退院時にもらった痛み止め座薬3つで耐えたわけです。

で、いまだに石はおなかの中にあるわ、腎臓から尿漏れしてたのでDJカテーテルが尿管に入ってるわ、次の石叩きの手術が8万もして25日に仕事休んで受けなければならないんだけど、それでも石が無くなる保証は全く無いので何も終わらないというやるせない生活が今現在進行形です。

入院中投稿した DAZ3D のイラスト(ハート3以上)





















posted by at 2018-10-13 20:52 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

イラストAC : 『雲形吹き出し』のフリーダウンロード

▼ イラストAC の 利用規約より抜粋
イラストをダウンロードした利用者は、商業目的その他目的を問わず、イラストを自由に改変、編集および使用することができます。 ダウンロードした利用者が利用することはもちろん、取引先への提供の為に、あるいは教育目的のために、あるいは、広告やパンフレット等の印刷物や、ホームページ等のマルチメディアコンテンツ、映像、ゲーム、ソフトウエア等の構成要素の一部として、使用することも自由です。


▼ イラストAC の 利用規約より抜粋
以下の使用方法は禁止されます。禁止事項に違反する利用方法は、弊社の著作権の侵害となりますので、ご注意ください。

● イラストをそのまま、または加工して、独立の取引対象として頒布(販売、賃貸、無償配布、無償貸与など)したり、公衆送信(インターネットのホームページや放送などを利用した送信)などを利用して提供することは、営利、非営利を問わずできません。

● イラスト、または加工したイラストデータを含む二次的著作物を主要コンテンツとして、製品に使用すること(カレンダー、ジグソーパズルなどを指しますが、これに限りません)、インターネットやそれに類する方法で公開または送信すること、およびソフトウエアやハードウエアに組み込んで頒布すること(例えば、インターネットのグリーティングカードサービス、テンプレートのダウンロードサービス等への使用や、 携帯電話の待受画面としての組込、アプリケーションソフト等の素材サンプルとしての組込、スクリーンセーバーへの組込等を行って頒布すること)はできません。また、テンプレートとしてハードウエア、ソフトウエア等に組み込んで、プリントサービス等を行うことはできません。

● イラストACにアップロードされているイラストを利用して素材のダウンロードサイトなどのイラストを配布するウェブサイトを運営することはできません。
posted by at 2018-10-13 18:23 | イラストAC ダウンロードリスト | このブログの読者になる | 更新情報をチェックする

Windows 10 Update (1803/1809) + HP製のPCで HpqKbFiltr.sys が原因で WDF_VIOLATION が起こり、BSOD(ブルースクリーン)が発生する深刻な不具合の対処方法

コンピュータの専門学校です。10/11 の更新で入り込み、10/12 は起動して、その後再起動すると発生するというパターンでかなりの PC がアウトになりました。幸い、10/11 時点で被害にあった PC が留学生だったので、早々に英語圏の記事を見つけて対応に至りました。

HP PCs Getting WDF_VIOLATION BSOD After Installing Windows 10 Updates

ただ、目的の作業はとても簡単なのですが、コマンドプロンプトを開く必要があるので、Windows10 が『修復してみます』とか言って頑張るので時間がかかってしまいました。要するに画面から『詳細オプション』を選択できるようにならないといけません。

▼ こういうやつです


ここから、コマンドプロンプトを選択できるメニューに移動できればすぐ復旧できます。

コマンドプロントが表示されたら x ドライブの可能性があるので、c: と入力して c ドライブに移動して以下のコマンドを実行します
cd c:\windows\system32\drivers
ren HpqKbFiltr.sys HpqKbFiltr.sys.bak
これで、10/12 のトラブルは対処しました。 ただ、HP PCs Getting WDF_VIOLATION BSOD After Installing Windows 10 Updates での説明は既に別の方法に変更されており、この方法は正式な対応のようですが、ちょっと難解なので ren での対応が簡単であると現状では認識しています。 ▼ 昨日時点の記事内容
コマンドプロンプトが開きます。 このコマンドプロンプトでは、コンピュータのハードドライブに関連付けられているドライブを特定する必要があります。 次に、[drive_letter]:\ Windows \ system32 \ driversに移動し、HpqKbFiltr.sysファイルの名前をHpqKbFiltr.sys.bakに変更します。

ドライバフォルダ内で、ren HpqKbFiltr.sys HpqKbFiltr.sys.bakコマンドを使用してファイルの名前を変更できます。ファイルの名前を変更したら、exitと入力してコンピュータを再起動します。 Windows 10が正しく再起動するはずです。
posted by at 2018-10-13 14:34 | Windows | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します