2023年5月29日月曜日

ファイヤーウォールに不正アクセスを試みた形跡が24,945件もあった

 会社のファイヤーウォールのSYSLOGを日々細かく確認しているが、今回はSSHに対する不正アクセスを試みた形跡が24,945件も見つかった。幸いにして、不正アクセスは失敗に終わったようだ。

攻撃は2023/05/28 13:30:13から始まり2023/05/28 13:34:16まで間断なく続いた。この間、SSHD: login failed, 164.92.70.22が24,945件。不正アクセスを試みる件数としては過去最大。

これは一部のログ。


当然、該当IPアドレスはファイヤーウォールでブロックした。
日々のSYSLOGの監視は重要だ。


2023年2月3日金曜日

Visual Studio 2022 ツールボックスにアイテムを追加しようとすると異常終了してしまう

 Visual Studio 2022のツールボックスにアイテムを追加しようとして、[ツールボックス] → [アイテムの選択]でツールボックス アイテムの選択画面が表示されアイテムを読み込み始めるが、Visual Studio 2022が途中で異常終了してしまう。何度か試してみたが変わらなかった。

この画面の途中でVisual Studio 2022が異常終了してしまう。



仕方がないので、 Visual Studio 2022の修復を試してみたが、それでも変わらず。

最後の手段として Visual Studio 2022をアンインストールし、再インストールしてみた。

それでも変わらず。

ネットで検索して Visual Studio 2022のセーフモードでやったら上手くいったとの情報を得た。

操作方法は、

DOS窓を開いて、

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" /SafeMode

でVisual Studio 2022をセーフモードで起動し、[ツールボックス] → [アイテムの選択]でツールボックスにアイテムを追加して終了。

その後、普通にVisual Studio 2022を起動するとツールボックスにアイテムが追加されていたし、[ツールボックス] → [アイテムの選択]でツールボックス アイテムの選択画面を表示しても正常にアイテムの読み込みが完了した。





2022年2月22日火曜日

JREインストーラーから.MSIファイルを抽出する方法

 オラクルがサン・マイクロシステムズを買収したことで、JREインストーラーから.MSIファイルを抽出する方法が変わった。


JREインストーラーをダウンロードし、セットアップを起動。

この状態で


.MSIファイルは以下のフォルダー内にある。

C:\Users\ユーザー名\AppData\LocalLow\Oracle\Java\jreバージョン番号

セットアップを中断すると.MSIファイルは削除されてしまうので、この画面を表示したまま取得。

2021年12月24日金曜日

VB.NETでSQL SERVERのSP(ストアドプロシージャ)からRETURN値を受け取る

 SQL SERVERを使ったプログラムを相当作っていたのだが、SPが返すRETURN値を受け取る方法を知らなかった。今回、初めて知ったのでメモ。

        Dim rc As Integer = 0 ' RETURN値
        Using connection As New SqlClient.SqlConnection(My.Settings.kntnkConnectionString)
            ' コネクションを開く
            connection.Open()
            'コマンドをコネクションから作成する
            Dim command As SqlClient.SqlCommand = connection.CreateCommand
            Try
                ' #ストアドプロシージャを実行する
                With command
                    ' SQLサーバーのタイムアウト時間
                    .CommandTimeout = 60
                    ' 実行するストアドプロシージャ名を指定
                    .CommandText = "SE050_対象品番抽出"
                    ' ストアドプロシージャのパラメータを設定
                    ' commandオブジェクトのパラメータを初期化する
                    .Parameters.Clear()
                    .Parameters.Add("@UserID", SqlDbType.VarChar).Value = G_UserID
                    .Parameters.Add("ReturnValue", System.Data.SqlDbType.Int)
                    .Parameters("ReturnValue").Direction = System.Data.ParameterDirection.ReturnValue

                    ' コマンドの種類をストアドに変更
                    .CommandType = CommandType.StoredProcedure
                    ' コマンド実行
                    .ExecuteNonQuery()
                    rc = CInt(.Parameters("ReturnValue").Value)

                    Debug.WriteLine("SE050_対象品番抽出 returnValue=" & rc.ToString)
                End With
            Catch ex As Exception
                QueriesTableAdapter.InsertQuery_TK_SYSLOG("", "", "SE050K01_原材料未登録部品登録", ex.Message & vbCrLf & GetCurrentLineNumber.ToString & "行目を実行中", G_UserID)
                MsgBox(ex.Message)
            End Try
            'コネクションを閉じる
            connection.Close()
        End Using

2020年7月29日水曜日

Windows 10 Proで再起動時はシャットダウンスクリプトが動作するが、シャットダウンするとシャットダウンスクリプトが動作しない件

Windows 7 Proの時代からエンドユーザーのPCのシャットダウン時にシャットダウンスクリプトを動作させていた。しかし、Windows 10 Proに同様のことをやると再起動時は正常にシャットダウンスクリプトが動作するのに、シャットダウンを選択してWindowsをシャットダウンさせるとシャットダウンスクリプトが動作しない。

何故なのか原因を調べるためにWindows 10 Proの動作を見ていたら、7に比べて10は異様にシャットダウン時間が短いし、起動時間も短い。ひょっとしてここに原因があるのではないかと思い、[高速スタートアップを有効にする]のチェックを外したら、希望通りの動作になった。

高速スタートアップはWindows 10の終了時にメモリーやCPUの状態を保持することによってWindows 10の起動を高速化する機能である。つまり、次回の起動時も、前回終了時と同じ環境でなければならない。その為に、シャットダウンスクリプトの動作が規制されている気がする。

何にしても、新しいOSに移行すると色々と問題が発生するのは世の常である。

2019年1月16日水曜日

ネットワークの速度が遅い


ある日、インターネットからファイルをダウンロードしようとした。ファイルのサイズは50MB。直ぐに終わるかなと思ってみていたら、何とダウンロードの時間は2時間と表示された。我が目を疑ったが確かに2時間と表示されている。そういえば、ここ最近、インターネット上のホームページを見たり、ファイルを転送するのに以前に比べて時間がかかるようになっていた。たかが、50MBのファイルをダウンロードするのに2時間もかかるようでは問題なので本腰を入れて調査をしてみた。

ルーターのRTX1210のトラフィック情報(PP)を確認してみる。

PP[01] INの最大値が5Mbps~10Mbpsの間で安定している。そして、LAN1のOUTの最大値がほぼ同じ値を示している。普通こんな事はあり得ない。通常のトラフィックは波があるはずなのにこれはどうしたことか。先ずはてっとり早くLAN1に接続してあるUTPを1番ポートから順に抜いてみて変化が起きるか見てみる。1番を抜く。暫く待っても変化無し。1番を戻して2番を抜く。これまた暫く待っても変化無し。これを全ポート実施。しかし、どのポートを抜いても変化がない。これは何か特定の機器が問題の原因ではなさそうだ。

今度は、RTX1210のポートミラーリングを使ってLAN1のパケットをLAN8にも出力するように設定し、LAN8に私のPCを接続してWiresharkでパケットを解析してみる。

暫く解析を続けていると、IPアドレス:210.143.147.137、210.143.147.162に対してパケットの送受信が多い。Whoisで組織名を調べると、フリービット株式会社。日本の企業の様だ。ホームページで企業情報を見るとネットワーク関連企業だが、どうもうさん臭い。何となくコーポレートサイトという感じが希薄だ。

このフリービット株式会社が保有しているIPアドレス210.143.146.0/23をRTX1210のIPパケットフィルターで廃棄してみた。その結果がこれ。
パケットを廃棄した瞬間から、見事なまでに占有されていた帯域が開放された。この後、先程ダウンロードした50MBのファイルを再度ダウンロードしたら、僅か2分で完了した。今後は、このフリービット株式会社に対して、どのPCの何のアプリがデータを送受信していたかを調査し、最終的な対策を講じるつもりだ。ひょっとしたらデータマイニングに使われていたりして。

2019/1/25 追記
これらのIPアドレスはマイクロソフトのONEDRIVE等で使用されていることが判明した。これらのIPアドレスへのパケットを破棄するとONEDRIVEが使えなくなる。仕方がないのでまたこれらのIPアドレスとの通信を許可した。しかし、今のところ以前の様にネットワークの帯域が占有されるという現象は発生していない。

2018年5月8日火曜日

Windows XPで動作していたアプリがWindows 7やWindows 10で動作しない

Windows XPで動作していた市販パッケージをWindows 7やWindows 10にインストールした際、設定ファイルが読み込まれなくて困った。何とか解決できたのでここに記す。

 市販パッケージのHogeをWindows XP SP3で使用していた。このご時世なので取り敢えずWindows 7で動作させようと思い、Windows 7のPCにインストールをしてみた。インストール先はC:\Program Files (x86)\Hoge\

 Hogeはプログラムのインストール先フォルダー内に存在するStockEnv.iniを実行環境ファイルとして読み込み動作する。7のPCにHogeをインストールし、XPのPCからStockEnv.iniを7のPCのプログラムのインストール先フォルダー内に上書きコピーしてセットアップ完了。早速Hogeを起動してみる。StockEnv.iniに指定したDBにアクセスされずデータが0件と表示されてしまう。もう一度StockEnv.iniファイルを確認すると指定のフォルダー内に存在しているし、ファイルの内容を確認してみたが問題ない。再度Hogeを起動してみる。やはり先程と同じ。因みに、ログインユーザーは標準ユーザー。

 試しに管理者として実行してみると、正常に動作する。権限が標準ユーザーだとダメ。何故だ??

 この後、C:\Program Files (x86)\Hoge\のアクセス権を標準ユーザーに対してフルアクセスにしたり、プログラムをXP(SP3)互換にしたり、プログラムを再インストールしたが変化無し。何故だ??

 ここで飛び出すのがSysinternalsSuiteのProcmon.exe。Hogeを起動しProcmon.exeでHogeがアクセスしているファイルを確認。すると、C:\Program Files (x86)\Hoge\StockEnv.iniにアクセスするが、その直後にC:\Users\xxxxxxxx\AppData\Local\VirtualStore\Program Files (x86)\Hoge\StockEnv.iniにアクセスし、そのファイルを変更している。インストール先フォルダー内のStockEnv.iniではなく、ローカル・セッティングフォルダー内に作成されたStockEnv.iniをアクセスしていたのか。だから、こちらが設定した内容でプログラムが起動してくれなかったのか。納得。

 そういえば、セキュリティ強化のため、Windows VistaからProgram Filesのアクセス権が厳格化されていたっけ。管理者の場合は問題なく動作したが、標準ユーザーの権限ではProgram Filesフォルダーにファイルを作成できず、それでローカル・セッティングフォルダー内にファイルが作成されていたのか。

 XPで動作していたアプリが7や10で期待通りに動作しないときはこの辺に原因があるかも。



2017年12月21日木曜日

Windows 10にVB6アプリがインストールできない

最近購入するPCは全部Windows10。業務で使用しているアプリはWindows10対応のものもあるが、中にはWindows XP時代のまま開発が止まってしまったアプリもあり、それらは何とか動かしている。そんな中でこんなことがあった。

 VB6で開発された基幹業務のアプリをWindows10にインストールしようとしセットアップを起動したが、いつまで経っても終了しない。そのうちにアプリが異常終了しましたと表示されて終わってしまった。セットアッププログラムに対して互換性の設定などを色々と変えてみたが効果無し。このパッケージはとあるメーカーのパッケージソフトなのでソースは無いしWindows7には対応しているがWindows10はサポート外。動作しなくて当然のアプリ。そうは言ってもそのアプリが動作してくれないと困る。

 そこでいつものSysinternalsSuiteのProcmon.exeが登場。セットアップ中の動作を観察しているとC:\Windows.oldフォルダーの中を探している。ひょっとしてシステムフォルダーとしてこの中を探していて何か問題が発生しているのかも。そう思い、このC:\Windows.oldフォルダーを削除してみたら、ビンゴだった。セットアップは普通に終わった。

 C:\Windows.oldフォルダーはOSを以前のバージョンに戻すために必要なフォルダーなので、購入したばかりのPCでは以前のバージョンに戻す事は無いと判断し削除してしまった。


2017年10月13日金曜日

Windows 10 パソコン起動時にEdgeが勝手に立ち上がる

 Windows10のセットアップをこなし始めた今日この頃。今日も1台セットアップ。セットアップ中はインターネットに接続可能にしていたが、このPCはインターネットへの接続は禁止のPCなので、F/Wでブロックをした。すると、ログオンするとなぜかEdgeが立ち上がり以下の画面が表示される。

 不思議に思いブロックされているurlを閲覧してみると
MSN Japanが表示された。

 なぜ????

 念の為、再起動しても相変わらずEdgeが勝手に立ち上がる。

 Sysinternals Suiteのautoruns.exeでマイクロソフトのアプリで悪さをしてそうなやつを順番に止めてみた。しかし、相変わらずEdgeが勝手に立ち上がってしまう。

 ネットで検索したら原因判明。
 Windows IT Centerに記載あり。
 https://docs.microsoft.com/ja-jp/windows/configuration/manage-connections-from-windows-operating-system-components-to-microsoft-services
 この頁の”13. ネットワーク接続状態インジケーター”に理由と対処方法が書いてあったので、私はグループポリシーを設定した。

 これにてログオン時にEdgeが勝手に開く件は一件落着した。とはいえ、この設定をすることでNCSI(ネットワーク接続状態インジケーター)がデバイスがインターネットと通信できるかどうかを判別しなくなるので、設定する人はそれで良いのかの判断が必要。

 しかし、この対処をするまでに4時間もの時間を費やしてしまった。

 Edgeが勝手に立ち上がるのはネットワークに接続されているときで、ログオン時にネットワークに接続されていないとEdgeは勝手に立ち上がらない。しかし、ネットワークに接続されるとEdgeが勝手に立ち上がる。

2017/10/17 追記
 危惧していた事が起こった。インターネットに接続可能なPCにも同じ設定を行ったところ、OneNoteで「インターネット接続がありません」と表示されてしまい、OneDriveに保存してあるOneNoteのファイルが開けなくなった。NCSIが正しく判別しなくなることで他にも影響が出るかもしれない。

2017年10月5日木曜日

Microsoft Data Access Components 2.0 セットアップが終了しない

 VB6で開発されWindows 7で使用していたアプリがWindows 10の環境で使用可能か検証をした。

 セットアップを実行すると、Microsoft Data Access Components 2.0 セットアップの画面が表示されファイルがコピーされていたが、いつまで経ってもセットアップが終了しない。この画面のまま先に進まない。ひょっとするとハングアップしたかも。



タスクマネージャーで確認してみるとこんな状況。
 ODBC Driver Configuration Program(32ビット)がCPUを半分使用している。私のPCのCPUは2コアでほぼ100%の負荷。ループしているかな。

 今回のアプリは自分で開発したものではないのでソースはなく調べるのが大変かなと思いながらも、マイクロソフトのSysinternalsSuiteに含まれているProcmon.exeで調べてみると、odbcconf.exeがレジストリのI/O処理でループしている。

Procmon.exeに表示された情報で関係していそうな情報。
18:10:26.2519258 odbcconf.exe 4564 RegOpenKey HKCR\RDSServer.DataFactory\Clsid SUCCESS Desired Access: Maximum Allowed, Granted Access: Read
許可されたアクセス(Granted Access)が読み取りのみになっている。

 odbcconf.exeに関係していそうなレジストリのキーは以下の二つ。
HKEY_CLASSES_ROOT\RDSServer.DataFactory
HKEY_CLASSES_ROOT\RDSServer.DataFactory\Clsid
これらの2つのキーに対するアクセス許可を確認すると、Administratorsグループは読み取りのみでフルコントロールは与えられていない。試しに、Administratorsグループに対してフルコントロールを与えると、その瞬間にセットアップは正常に終了した。

Procmon.exeに表示された情報で関係していそうな情報。
18:14:35.4679275 odbcconf.exe 4564 RegOpenKey HKCR\RDSServer.DataFactory\Clsid SUCCESS Desired Access: Maximum Allowed, Granted Access: Read, Write DAC
許可されたアクセス(Granted Access)にWrite DACが追加されている。

 もし、Microsoft Data Access Components 2.0 セットアップが終了しない場合は、
HKEY_CLASSES_ROOT\RDSServer.DataFactory
HKEY_CLASSES_ROOT\RDSServer.DataFactory\Clsid
の2つのアクセス許可を確認してみると良いかもしれない。いつものことですが、レジストリの変更は自己責任でお願いします。当然のことながら、該当キーを変更前にバックアップは必須です。




2017年7月28日金曜日

Windows 10がインストールされたPCでBIOS画面を表示する

 わが社にもやっとWindows 10のPCが登場。OSをインストールし、アプリをセットアップして使い始めた。ある時、BIOS画面を表示しようとしたらどうにもこうにも出来ない。

 今回のPCはPanasonicのLet's note CF-SZ6。マニュアルには電源投入後、Panasonicのロゴが表示されている間に[F2]を押下すると書いてあるが、何度やってもだめ。おっかしいなぁ、キーが壊れているのかと思ってしまった。サポートに電話すると、Windows 10の高速スタートアップが有効になっていると[F2]を押下しても駄目だそうで正しいやり方を教わった。

 BIOSを表示する場合は、シャットダウンの操作が重要。シャットダウンする際に、[Shift]キーを押下しながら、シャットダウンボタンをクリックしてシャットダウン。このシャットダウンはいつものシャットダウンよりも時間がかかるのでじっと我慢の子。そして、電源が切れてから電源を投入すると通常の起動になるので、この時に[F2]を押下すればめでたくBIOS画面に再会できるという訳だ。

 この[Shift]+シャットダウンで電源を切る方法は、Windows 10のPCであれば皆共通だと思う。

2017年7月21日金曜日

http://g.ceipmsn.comに1秒間隔で接続している

いつもの様にネットワークのSYSLOGをチェックしていると、社内の1台のPCから
http://g.ceipmsn.com/8se/411?mi=12b00046cc3e4b66bfb4fb020e418c0a-0&lv=3.0.126.0&os=6.1.7601&ag=2415
に1秒間隔で接続している履歴が見つかった。

WHOISでceipmsn.comを調べるとマイクロソフト。また、マイクロソフトか。今度は何のサービスが悪さをしているんだ?ネットで検索するとWindowsのサービスでSeaPortというサービスがここに接続しているらしいことが判明。

このサービスの説明を見ると、
Enables the detection, download and installation of up-to-date configuration files for Microsoft Search Enhancement applications. Also provides server communication for the customer experience improvement program. If this service is disabled, search enhancement features such as search history may not work correctly.

ネットで日本語に翻訳すると、
Microsoft Search拡張アプリケーション用の最新の構成ファイルの検出、ダウンロード、およびインストールを有効にします。また、顧客体験向上プログラムのためのサーバー通信を提供します。このサービスを無効にすると、検索履歴などの検索機能が正しく機能しないことがあります。

との事。

因みに、私のPCには本サービスは入っていない。

それならば、このPCで本サービスを停止しても問題ないだろうと判断し、サービスを停止すると共にスタートアップの種類を無効にした。

結果は、接続しなくなった。無駄にリソースを消費するサービスを潰せた。

2017年6月13日火曜日

ROBOCOPYでアクセスが拒否されましたが表示される

 最近、システムの入替作業を進める中で、業者からROBOCOPYなる使えるユーティリティがあることを教わった。使ってみるととても便利だ。今まではXCOPYでサーバー間のファイルコピーをしていたが、ROBOCOPYの方が元々そういった目的で開発されたユーティリティらしく機能も豊富だ。

 使用しているうちに欲が出てきて、このROBOCOPYを使ってバックアップもしたくなった。パラメーターを指定してバックアップを実行すると、殆どのファイルのバックアップは正常に終了するのだが、一部のファイルに”エラー 5 (0x00000005) ファイルをコピーしています・・・アクセスが拒否されました。”なるエラーメッセージが表示されバックアップが出来ないものがある。

 教えてくれた業者も詳しくはないらしく、周りにも詳しい人間が居ないのでネットで解決策を探した。殆どの問題は解決できたが、一部の問題については解決策が見つからない中、自分なりの方法で解決できたのでご紹介。

・環境
SV1:Windows Server 2012 R2
SV2:Windwos Server 2008 R2
SV3:TeraStation ※このTeraStationが曲者だった。

SV1上でROBOCOPYを起動し、SV2に保存されているデータをSV3へミラーリングコピーする。


・実行したコマンド
set logfile1=C:\HOGE.LOG
set src1=A:\HOGE1
set dest1=B:\HOGE2

robocopy %src1% %dest1% /b /s /purge /copy:DT /R:1 /W:30 /fft  /log+:%logfile1%

※コピーが失敗したので変更した引数
copy:DT 最初にcopy:DATで実行したらエラーが発生。TeraStationにはファイルの属性をコピー出来ない様なのでcopy:DTに変更した。


・結果
殆どのファイル(350,803/350,806件)は正常にコピーが完了しているのに、一部のファイル(3/350,806件)でエラーが発生している。例えば、
2017/06/09 03:10:13 エラー 5 (0x00000005) ファイルをコピーしています A:\HOGE1\構成\2017.6.7構成リスト.xls
アクセスが拒否されました。


・調査
 ”アクセスが拒否されました。”って何?だって、ROBOCOPYを実行しているログインIDでファイルが開ける。開けるのにアクセスが拒否されましたとはどういうこと???? 
UACも無効にしてあるのに。※UACを無効にしている理由はネット上に沢山書き込んであるので割愛。因みに、UACを無効にしていないと以下の手順を実施してもダメな可能性がある。私は試していないので分からないが。

 試しに、複写先をNTFSでフォーマットされたHDDに変更してみると正常にコピーが完了する。どうやらTeraStaionがらみの様だ。

 ファイルのプロパティでセキュリティ情報を表示しても問題なし。しかし、ここで全般情報を表示するとこんなメッセージが。
セキュリティ:このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。

 ”ブロックされる可能性があります。”なんて書いてある。原因はこいつか?早速、「ブロックの解除」クリックして解除してみる。その後、ROBOCOPYコマンドを実行すると正常にコピー出来た。やはりこいつが原因かも。しかし、このセキュリティが表示されるファイルは沢山ある。沢山ある中のたった3つだけがエラーするとは流石は”可能性がある”と書いてあるだけの事はあるな。


・対処
 このセキュリティの情報はNTFSの代替データ・ストリーム(ADS)と呼ぶそうだ。ADSについてはネットで調べてもらうとして、今回のコピーが失敗した原因はこのADSをTeraStaionにコピー出来ないことが原因の様な気がする。だってTeraStaionのフォーマット形式はXFSでありNTFSではないから。ならばこのADSを削除してやればコピーは上手くいくかもしれない。そんなときに便利な、ADSを一気に削除するコマンドが存在する。

 そのコマンドはStreams。これもネットで入手可能。私が使用したstreamsはバージョン1.60

 コマンドプロンプトを開いて、A:\HOGE1に移動し、実行したコマンドがこれ。
 streams -d -s *

 引数の意味
 -d メイン・データ・ストリーム以外のストリームを削除。
 -s サブフォルダも再帰的にスキャンする。

 このコマンドを実行後、再度ROBOCOPYコマンドを実行したらエラーは発生しなかった。

 ROBOCOPYを起動するバッチの先頭にこのStreamsコマンドを追加し、コピー前にはADSを削除する様にして解決。

 因みに、当社のサーバーでstreamsを実行してみたら、ADSとして、:Zone.Identifier、:OECustomProperty(拡張子が.eml)、:encryptable(ファイル名がThumbs.db)が存在していた。

2017/07/07 追記
無限ループに陥らないように、コマンドに一つオプションを追加
robocopy %src1% %dest1% /b /s /purge /copy:DT /R:1 /W:30 /fft /log+:%logfile1% /xj
 
 



 

 

2016年10月12日水曜日

クラウドサービスの基本特性

米国国立標準技術研究所(NIST)の定義によれば、クラウドサービスは以下の5つの基本特性によって構成される。

1. オンデマンドのセルフサービス
 利用者自身が必要なときに必要なだけ、サーバーやストレージなどのリソース(資源)を自由に利用できる。サービスの提供者側の人手を介することなくリソースを増減できるかどうかが重要であり、サービス提供者に電話して「2営業日後には何とか」と言われるようなサービスはこの定義に該当しない。

2. 幅広いネットワークアクセス
 ネットワークを介して世界中のどこからでもアクセスが可能で、ラップトップや携帯電話、PDAなど、様々なクライアント環境から利用できる。

3. リソースの共有
 サーバーやストレージは共有資源として提供され、複数の利用者の要望に応じて割当や解放を行うことが出来る。また利用者は、それらサーバーやストレージがどこにあるかを意識しない。クラウドのリソースはマルチテナントモデルで提供され、一般的にはサーバーやストレージがどこにあるか分からない。実際にはアジアや北米にあったとしても、利用者はその設置場所を意識することは無い。

4. スピーディーに対応できる弾力性
 利用した分だけ使用料を払う従量課金であり、必要に応じた処理能力のスケールアウト/スケールインを素早く行うことが出来る。

5. 計測可能なサービス
 サーバーやストレージなどの使用料は、自動的に計測・最適化され、サービスの透明性が担保されている。実際のサーバー稼働台数を把握できないなどは論外で、透明性の高い価格形成がなされていなければならない。

2016年9月19日月曜日

Hyper-V上へWindows 10をゲストオペレーティングシステムとしてインストール

 Windows Server 2008 R2上で動作するHyper-V上にWindows 10をゲストオペレーティングシステムとしてインストールしようとしたがエラーが発生してインストール出来なかった。

 原因は、Windows 10は、Windows 8.1とWindows Server 2012 R2 Hyper-Vホスト上でゲストオペレーティングシステムとして実行出来るとから。

 知らなかったぜ。

2016年8月31日水曜日

RTX1200のGUIが表示されない。原因はハングアウトだった。

 ある日、気付いたらRTX1200のGUIが表示されなくなっていた。Chromeで見ようとしたら「192.168.0.1 からの応答時間が長すぎます。」と表示されてしまう。つい、先日までは普通に使えていたのに。

 最後に設定したのはDHCP予約アドレスの設定だ。それが悪かったのかな思い、その設定を削除してみたが駄目。追加したNASが悪さをしているのかと思い、それをLANから外しても駄目。

 RTX1200の電源を切断し再投入するとGUIで繋がるのだが、数秒経過するとまた応答無しになってしまう。しかし、telnetでは接続が可能で問題なく設定が出来る。その他、思いつくことは色々とやってみたが復旧せず。

 困ってヤマハのサポートに電話連絡し、電話とメールのやり取りを何度か繰り返してどうやらRTX1200には問題が無く、原因はその他にあるとの事になった。そこから先は自力で原因を調査することになる。

 弊社に於はRTX1200はデフォルトゲートウェイでもあり、ファイアーウォールでもあり、DHCPサーバーでもある。ネットワークの要衝である。GUIが表示されなくてもそんなに運用上影響はないが、原因が判明しない事には気持ちが悪い。ひょっとするとウィルスが社内LANに潜んでいて悪さをしている可能性もゼロではない。

 RTX1200の配下には数十台のOA機器が複数台のL2 SW経由で接続されている。それらのOA機器の電源を全て切断し、ブロック毎に電源を投入して原因の絞り込みをする事にした。すると、思いも寄らぬ事が判明した。事務所ブロックのOA機器の電源を投入しても再現せず、工場側ブロックで電源を投入すると障害が再現した。てっきり、事務所のOA機器が怪しいと踏んでいたのに意外な結果だった。納得がいかない結果ではあったが現実にそうなのだから受け入れざるを得ない。

 今度は工場側のOA機器を1台毎にLANに接続して再現するかを確認した。そして発見した原因と思われる1台目はWindows7のPCだった。フリーソフトのPortViewerでポートの状態を確認してみた。すると、プロセス名称がchromeで、相手のアドレスは192.168.0.1、相手のポートは80、ポートの状態はCLOSE_WAITというのが表示された。何故、chromeが192.168.0.1のポート80に接続するんだ?そもそも、chromeのウインドウは表示されていないのに。タスクバーの通知領域を見るとハングアウトがログオフの状態になっていた。

 このPCは現場の共有PCで特定の個人が利用している訳ではないので、ChromeはインストールしてあるがGoogleにログオンはしていない。また、現場のPCに対しては、RTX1200のURLフィルターを設定して、業務に関係あるサイトのみを閲覧可(ホワイトリスト)としている。Googleは閲覧不可だ。

 ここで思いついた。ひょっとしてハングアウトのログオンとログオフ、それからRTX1200のURLフィルターの組み合わせで障害が発生しているとすると納得がいく。事務所ブロックは全員がハングアウトにログオンしているし、インターネットへの接続には制限をかけていない。逆に、現場のPCは先程記述した通りだ。

 その後、ハングアウトのログオンとログオフ、またRTX1200のURLフィルターの有無の組み合わせで障害の再現を確認すると、以下のことが判明した。

 ハングアウトがログオフ状態でインターネットの216.58.197.195:80と216.58.200.174:80への接続に制限がかかっていると192.168.0.1:80に対してchromeが接続を要求する。関係しているipアドレスはこの2つだけではないと思うけど。因みに、このipアドレスのドメイン名は1e100.net。Google所有!

 これは私の想像でしかないけれど、ハングアウトはログオフ状態の時にこの1e100.netへ接続に行く。RTX1200はURLフィルターでブロックした場合は「YAMAHA RTX1200 によってこのページはブロックされました。」を返信する。それが何かしらの影響をPCまたはRTX1200に与え、GUIが表示されないのだと思う。

 対策は色々と考えたが、私はRTX1200のHTTPサーバー機能のlistenポートの設定でポート番号を別なポート番号に変更した。他の対策を講じてもまた同様の障害が発生しないとも限らないから。これにより、GUIは正常に表示されるようになった。また、現場のPCをPortViewerで確認したときに192.168.0.1:80は表示されなくなった。

 原因がウィルスではなくて本当に良かった。これを解決するまでに5日間かかった。

2016年1月22日金曜日

VB.NET 印刷プレビュー後に印刷するとプリンターから白紙が出力されてしまう

VB.NETのブログラムで印刷プレビューをしてからプリンターボタンをクリックして印刷を開始すると、プリンターから白紙が出力されてしまう。印刷プレビューには正しく表示されるのに、何故なのか悩んでしまった。


ネットで検索すると、力業的な解決方法をしている人も見受けられた。しかし、もっとスマートな解決方法をと思って検索していると、そもそも印刷プレビューと印刷の関係を知らないことに気付かされた。

そこでイベントの発生順序を確認するため、Visual Studioでデバッグすると、
先ず、印刷プレビューを実行すると、PrintDocument1.PrintPageイベントハンドラーが実行される。

続いて、印刷ボタンをクリックすると、何と再びPrintDocument1.PrintPageイベントハンドラーが実行されていた。

そうか。2回PrintDocument1.PrintPageイベントハンドラーが実行されるので、2回目の印刷の際は該当データが無くて空白が印刷されるのか。

原因が分かってしまえば対処は簡単。

単一ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内の最後に静的変数の値を最初の値に戻してあげれば良い。

複数ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内でe.HasMorePages = Trueを代入して、PrintDocument1.PrintPageイベントハンドラーの再帰をするが、最後のページを印刷した後は、e.HasMorePages = Trueを代入しない。そのタイミングで静的変数の値を最初の値に戻してあげれば良い。

ネット上にはこの事が分からずに、白紙が出力されるのでプリンターボタンをクリックしても印刷できなくしたいという質問があった。それではあまりにもユーザーが可哀相だ。

2015年12月2日水曜日

二つのテーブルで一致したレコードを削除

SQL SERVERを使っている環境で、二つのテーブルを比較して同じ値が存在したら片方のテーブルからレコードを削除する方法について書いてみる。

例えば、テーブルAとテーブルBが存在し、各々のテーブルにフィールドとして項目1、項目2、項目3が在るとする。

そして、項目1、項目2、項目3の3つのフィールドが一致したら、テーブルAから削除したいとする。


SQL文

DELETE A
            FROM テーブルA  AS  A  INNER JOIN  テーブルB  AS  B  ON
                      ( A.項目1 = B.項目1) AND
                      ( A.項目2 = B.項目2) AND
                      ( A.項目3 = B.項目3)

2015年9月3日木曜日

HDDのデュプリケーター

設計が使用しているPCでHDDのリードエラーが発生した。取り敢えず問題なく動作している様に見えるが、念の為に保守契約しているベンダーにHDDの交換を依頼した。


ハードのみの保守契約なので保守員はHDDを交換するがOS等のインストールは自分自身で行うことになる。

設計のPCにはCADソフトがインストールされている。このソフトのインストールと環境設定がとても面倒なのだ。慣れないと1日がかりの作業になってしまう。あ~、面倒だと思っていたときにネットでHDDのコピーというキーワードで検索したところ、玄人指向のKURO-DACHIがヒット。

近所のPC DEPOTに在庫有りとの事でPC DEPOTに買いに走った。税込みで6,020円。

ベンダーの保守員が到着したので事情を説明し、PCから取り外したHDDと新品のHDDを預り早速デュプリケート。

今回、7,200rpmの500GのHDDをデュプリケートしたが、所要時間は1時間30分。この時間だけをみると長い気もするが、まっさらなHDDを動作するまでに設定する作業時間の1日半と比較すれば実に短時間。また、利用者も早く仕事に復帰できるので、二人合わせて3人日の工数が削減できた。

このデュプリケートしたHDDでPCが起動したとき、保守員も6,020円ならば私も買おうかなと言っていた。

HDDのデュプリケーター、仕事の必需品となりそうな予感。

2015年6月8日月曜日

QRコードを読み取りメーラーを立ち上げるコマンド

当社では通信キャリアとしてKDDIと契約しているので、以下の内容はAUの場合であり、かつ確認した機種も限定的。他の機種やキャリアについては未確認。

宛先メールアドレス、メール題名およびメール本文をQRコード化し、それを携帯電話やスマホで読み取り、Gmailで簡単にメール送信出来るようにする。尚、ここでは、コマンドをQRコード化する部分については触れていない。

1) 携帯電話(E05SH)
 MATMSG:TO:hogehoge@hoge;SUB:題名をここへ;BODY:本文をここへ;;
をQRコード化すれば良い。それだけである。とても簡単。

2) スマホ(TORQUE)
 QRコードは携帯電話と同様
 QRコード読み取りアプリは、ZXing TeamのQRコードスキャナーを使用。因みに、イクス(株)、TWMobileのアプリは正しくメールが作成されなかった。
 
3) スマホ(iPhone5S)
 mailto:hogehoge@hoge?Subject=題名をここへ&body本文をここへ
をQRコード化すれば良い。
 QRコード読み取りアプリは、QR&Barcodeを使用。

スマホはどの機種でも同じだろうと思っていたら、TORQUEとiPhone5Sではメーラーを起動するコマンドが異なっていたのは驚きだった。逆に、E05SHとTORQUEで同じQRコードが利用できるのは評価できる。E05SHはシャープ製、TORQUEは京セラ製と、国産機種はAUの意向で同じ物がつかえるという事なのだろうか?