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

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 イラスト | このブログの読者になる | 更新情報をチェックする

Google プラス が 2019 年 8 月に終了するので、Facebook でグループ作ったら、新しいアカウントが『使えません』という症例が多々発生

Google +は、確かにたいして役に立っていたわけでは無いんですが、授業中の情報の共有や、遅刻・欠席の連絡方法としてスマホから簡単にアクセスできる方法の一つとして使ってたわけです。だから来年に無くなるんならグズグズ今使う意味は全くないのです。

要するに、クローズドのコミュニティとして利用していたので、Facebook にある『グループ』を利用してみようかと試したんですが、たった一日で玉砕しました。

そもそも Facebook はプログラマ向きでは無い

まあ文面だけの意味というよりも、正直我々は『使わない・使う必要性を感じない』です。自分としては、あんなにも知らない人々の顔がはっきり出回る世界に寒気がします。あと、言えないけどいろいろ Facebook のシステム的にも頭に来てます。大人の世界の『世間』としての交流には意味あるのは理解していますが、別に広報でもなけりゃ、広告塔でも無いので使いみちがさっぱりです。

で、グループ作ったらアカウント持って無い学生が新しく作って登録したら、1日経ったら『使えません』というアウントに成り下がります。以前から持っていたアカウントでも、久しぶりに使うとそうなるような感じのものもありました。とにかく、2回もアカウントが使えなくなる学生が発生した時点でやめました。

アホらしい。

で、その学生の希望で Slack に変えたわけですが...


初めて使った日から、Windows Update でトラブル

おいおい。先月救急車で入院して1日に退院したばかりなのに。なんで次から次から良くわからん事で授業が邪魔されるんだろう。

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

この対応ログを Slack に書いたりして、まあ、スニペットでソースが書けるしこれでなんとかなるとは思うのですが、スマホがアプリでしかスレッド見れなかったので、実運用はこれから確認して行きます。

ちなみに、最初に作られてて消せないチャンネル名は、最後に表示したいので『鸞らん』としました。


あと、どうでもいいアクティビティを削除するのが面倒です。







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