About

こんにちは、三流です。 システムエンジニアです。

Entry

2011年11月14日

[VB.NET]WMIでプリンタジョブを取得する

    ''' 
    ''' プリンタジョブを取得する
    ''' 
    ''' プリンタ名
    ''' 
    ''' 
    Public Shared Function GetPrintJobsCollection(ByVal printerName As String) As List(Of String)
 
        Dim printJobCollection As New List(Of String)
        Dim searchQuery As String = "SELECT * FROM Win32_PrintJob"
        Dim searchPrintJobs As ManagementObjectSearcher = New ManagementObjectSearcher(searchQuery)
 
        Dim prntJobCollection As ManagementObjectCollection = searchPrintJobs.Get()
 
        For Each prntJob As ManagementObject In prntJobCollection
            Dim jobName As String = prntJob.Properties("Name").Value.ToString()
 
            Dim prnterName As String = jobName.Split(",")(0)
            Dim documentName As String = prntJob.Properties("Document").Value.ToString()
           If String.Compare(prnterName, printerName) = 0 Then
                printJobCollection.Add(documentName)
            End If
        Next
        Return printJobCollection
    End Function

2011年10月13日

[SPREAD][テキストセル]複数行表示と改行コードの動作

環境:VB.NET 2005、SPREAD for Windows Forms 5.0J

[確認]
MultilineをTrueに設定したテキストセルに、CRLF、CR、LFを含んだ値を設定する。

Dim txtMultiLineCellType As New FarPoint.Win.Spread.CellType.TextCellType
txtMultiLineCellType.Multiline = True
設定する値 表示結果
"あ"+CR+LF+"い" 改行される
"あ"+CR+"い" 改行されない
"あ"+LF+"い" 改行される

[結果]
CRLF、LFは改行されて表示される。

[VB.NET]WEBメソッドの改行コードが変換される

環境:VB.NET 2005 、スマートクライアント

<現象>
改行コードCRがLFに変換されている。

<参考サイト>

Webメソッドのstring型の戻り値に含まれる改行コードが変換されてしまう

WebMethod中の改行コード(CRLFがLFになっちゃう)

<戻り値の型>
今回、確認できたは、戻り値の型は下記
(1)戻り値がDataTableの場合は、改行コードが変換される。
(2)戻り値がDataSetの場合は、改行コードが変換されない。

2011年10月07日

テーブルの制約について

テーブルに制約を指定していない為に、想定(意図)していない値が設定されて、
アプリケーションが正しく動作しないことがあります。
個人的には、(1)~(3)は、必ず指定して欲しいです。
(4)(5)は、設計はして欲しい。

(1)主キー制約(PRIMARY KEY制約)
 主キーのないテーブルは、原則だめ。※一時テーブルのみ可。

(2)一意キー制約(UNIQUE制約)
 代替キーを使用し、かつ、一意となる自然キーがある場合は指定する。

(3)NOT NULL制約
 NULLがだめな項目には必ず指定すること。

(4)CHECK制約
 意図している値があるなら指定すること。個人的にはあまり使用しない。
 アプリケーション側でチェックしている。

(5)参照整合性制約(REFERENCES制約)
 いろいろご意見あると思いますが、個人的には、設計時(ER図など)には指定しているが、
 実際のテーブル(物理構造)には適用していない。
 ※レスポンス、メンテナンス、仕様変更などを考えると・・・・。

[PowerShell]%(パーセント)はForEach-Objectの別名

別名定義を確認するためには,

Get-Alias

を使用する。

2011年09月10日

開発でやってほしくないこと

自分の周りの話です。世間ではどうなのでしょうか?

データ件数を考慮していないで設計・開発する為、
まともに動かないものが多いです。

(1)実行計画を取得しない。
SQLが自分の思ったとおりに実行されているか確認しない。

(2)実際のデータ件数を想定しない。
データ件数を考慮しない、データ件数がどのくらいか知らないでSQLを作る。
※SEがテーブル設計時にデータ件数を考慮しない。

(3)セオリー(チューニング含む)をやらない。
WEBでも、書籍でも、雑誌でもやらないでねと書いてあることを平気でやる。
かつ、やろうねと書いてあることをしない。

(4)システム標準ルールを無視する。
・・・・。

(5)実行時間の計測をしない。
・・・・。当然性能要件を守れない。

[S2Dao]ODP.NETの接続PoolingはディフォルトでTRUE

環境:S2Dao.net + ODP.net(ORACLE)

<現象>
DBに接続できないとエラーがでた。

<原因>
(1)ODP.NETのPoolingがディフォルトでTRUEとなっている。
(2)DB接続時にプロファイルでリソース制限(IDLE_TIME)されていた。
上記(1)(2)の為、しばらくDBに接続しないでいると、プーリングされている接続が切断されてしまい
DBに接続できなくなってしまった。

<対応>
(1)ODP.NETのPoolingをFALSEに設定。

※前提でリソース制限の解除はできない。

2011年08月27日

トリガーの使用について

トリガは使いたいが、こんな事があった。

 ・仕様変更をしたとき、トリガだけ修正漏れ。
 (仕様書のどこにもトリガを使用していること書いてない。)
 ・トリガに限って仕様書ない。
 (別にトリガの問題ではない。)
 ・運用を実施する人がトリガを知らない。
 ・当該テーブルのデータをメンテナンスする時に、トリガが動くのを忘れてしまう。

なので、下記程度にとどめたい。
 ・監査ログや、テーブルの履歴の作成みたいなの。

結論は、システム開発から運用まで考えて、
保守できる程度に使用すればいいかと思う。

テーブルに必要なカラムについて

(1)どのテーブルにも必要なカラム
  「作成日」、「作成者」、「更新日」、「更新者」
(2)論理削除の場合に必要なカラム
  「削除フラグ」、「削除日」、「削除者」
(3)世代(履歴)管理に必要なカラム
  「使用(有効)開始日」「使用(有効)終了日」

テーブル設計で考慮すること

(1)サロゲートキーの使用。
 ・自然キーには、ユニーク制約をつける。
(2)正規化くずし。
(3)トランザクションへの値の埋め込み。
 ・マスタデータが変更される場合、計算結果を格納する場合など考慮。
(4)削除の方針。
 ・論理削除か物理削除するか。
(5)マテリアライズドビュー(Oracle)の使用。
(6)固有の値の作成にシーケンスの使用。

2011年11月
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30