So-net無料ブログ作成
前の30件 | -

[Review]オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS) [Book's Review (Develop)]

(1)レビュー
 以下2冊の紹介です。
 (1)『オラクル認定資格教科書 Javaプログラマ Gold SE 8』(通称『紫本』
 (2)『徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応』(通称『黒本』

 今までMicrosoft系をメインに資格取得に励んできましたが、
 Java系の資格にもチャレンジすることになり、
 参考書として『紫本』を、
 問題集として『黒本』を購入しました。

 JavaSE8といえば、
 新機能のラムダ式ストリームAPI
 日付/時刻API が注目されていますが、
 JavaSE7で追加された
 try-with-resourcesswitch文の拡張(String型のサポート)
 ダイヤモンド演算子例外のマルチキャッチ
 Executor ServiceFork/Join Framework
 数値リテラルのアンダースコアの区切り文字2進数表記 等など
 普段の開発でも使いこなされていなさそうな機能についても、
 分かりやすい解説が充実しています。

 書店のIT系資格コーナーには
 必ずと言っていいほど並んでいる書籍ですが、
 有名なだけあり、内容も充実しています。
   『JavaSE8 Gold』資格取得を目指している方にぜひオススメの2冊です。

 また『Javaプログラマ Gold SE 8』
 『Javaプログラマ Silver SE 8』前提資格となります。
 Goldと併せて、Slver対策として、以下2冊もオススメです。
 (3)『オラクル認定資格教科書 Javaプログラマ Silver SE 8』(通称『紫本』
 (4)『徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応』(通称『黒本』

 [2019.8.10 合格]
 本試験は、Javaプログラマ歴、7、8年のベテランでも、
 1回の受験で通るのは難しいと言われていますが、
 『紫本』による学習、『黒本』による問題演習を、
 各々2周することで、
 Java開発経験が3年の私でも、1回の受験で合格できました。

(2)リンク
オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

  • 作者: 山本 道子
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/07/21
  • メディア: 単行本(ソフトカバー)
徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

  • 作者: 米山 学
  • 出版社/メーカー: インプレス
  • 発売日: 2016/10/14
  • メディア: 単行本(ソフトカバー)

オラクル認定資格教科書 Javaプログラマ Silver SE 8

オラクル認定資格教科書 Javaプログラマ Silver SE 8

  • 作者: 有限会社ナレッジデザイン 山本道子
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/02/11
  • メディア: 単行本(ソフトカバー)
徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

  • 作者: 志賀 澄人
  • 出版社/メーカー: インプレス
  • 発売日: 2016/01/18
  • メディア: 単行本(ソフトカバー)

nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

[JavaSctipt]文字列をクリップボードにコピーする [Programming JavaScript]

[はじめに]
ブログで記事の内容をクリップボードにコピーする機能を導入する機会があったので、
JavaScriptクリップボードにコピーするコードを作りました。
動作確認は、『Microsoft Internet Explorer11』、『Microsoft Edge』で実施済です。

備忘録として、以下、2つのサンプルソースを掲載します。
2つのサンプルソースは、各々独立して動作します。
<html>
<head>
</head>
<body>

<table border='1'>
<tr><td>
<button
 type="button"
 onClick="
var ta=document.createElement('textarea');
ta.value=this.parentNode.parentNode.parentNode.getElementsByTagName('tr')[1].innerText;
this.appendChild(ta);ta.select();
document.execCommand('Copy');
alert('コピーしました。');
this.removeChild(ta);
"
>
コードのコピー
</button>
</td></tr>
<tr><td><font size="2" color="red">Hello,World!!</font></td></tr>
</table>

</body>
</html>
[JavaScript]文字列をクリップボードにコピーする(その1)


<html>
<head>
<script language="JavaScript">

/// <summary>
/// クリップボードに文字列をコピーする
/// </summary>
/// <param name="targetText">コピー対象の文字列</param>
/// <param name="docWork">ワーク用TextAreaの作成場所。省略時はdocument.body</param>
/// <remarks></remarks>
function copyText(targetText, docWork){

  //[説明]
  // クリップボードにコピーできる文字列は、
  // 入力可能なテキストコントロール(TextArea等)上で
  // 選択状態になっていることが前提となります。
  // この前提により、
  // テキストコントロール以外に記載された文字列を
  // クリップボードにコピーする為には、
  // 一時的にテキストコントロールを経由する必要があります。
  // 本関数では、
  // テキストコントロールを使用しない、かつ、
  // 改行コードを含む文字列の場合を考慮して、
  // 一時的にTextAreaを追加し
  // クリップボードにコピーした後、
  // TextAreaを削除しています。

  if(docWork==null || docWork==undefined){
    //引数docWorkを省略した場合は、
    //document.bodyとする。
    docWork=document.body;
  }

  //ワーク用のTextAreaを作成する。
  var ta=document.createElement("textarea");
  //コピー対象の文字列をTextAreaに書き込む。。
  ta.value=targetText;
  //ワーク用のTextAreaを追加する。
  docWork.appendChild(ta);
  //TextAreaの文字列を全選択する。
  ta.select();
  //選択状態の文字列をクリップボードにコピーする。
  document.execCommand("Copy");
  //コピー完了後のメッセージを表示する。
  alert("コピーしました。");
  //ワーク用のTextAreaを削除する。
  docWork.removeChild(ta);
}

</script>
</head>
<body>

<table border='1'>
<tr><td>
<button 
  type="button"
  onClick="copyText(this.parentNode.parentNode.parentNode.getElementsByTagName('tr')[1].innerText, this);">
  テキストをコピー
</button>
</td></tr>
<tr><td><font size="2" color="red">Hello,World!!</font></td></tr>
</table>

</body>
</html>   
[JavaScript]文字列をクリップボードにコピーする(その2)

nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1] [Programming .NET Tips]

[はじめに]
 ・「[.NET]プログラムコードの変換(C#、VB.NET→HTML)」
  公開しているサンプルソースの改良版です。
 ・プログラムソース(C#、VB.NET)を
  ブログ公開用のHTMLに変換するツールです。
  (コード量が膨大の為、変換処理のみ掲載しています。)
[前Verからの改良内容]
 前Verでは、コードのコピー機能がIE限定でしたが、Edgeにも対応させるよう改良。
 ・前Ver:コードのコピー機能がIEのみに対応。
 ・現Ver:コードのコピー機能をEdgeにも対応。(対応ブラウザ:IE、Edge)
[機能]
  プログラムソースの文字列を、HTMLに変換する。
  変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
 ・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
 ・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
 ・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」ボタンを付加)
  IE、Edgeで動作確認済。
[制限事項]
 ・言語は、C#とVB.NETのみです。
  但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
  制限事項を考慮の上、利用することもできます。
 ・C#のコメントは、行の先頭の「//」のみサポート。
  行の途中の「//」や「/*」~「*/」はサポートしません。
 ・VB.NETのコメントは、行の先頭の「'」のみサポート。
  行の途中の「'」はサポートしません。
[使い方]
 (1)ビルド前に、「System.Web」を参照設定に追加する。
   追加しないとコンパイルエラーになります。
 (2)CodeConverterToHtml クラスのGetInstanceメソッドで、
   変換オブジェクトを取得します。
   言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。 
 (3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
   ソースをHTMLに変換します。
   ConvertCodeToHtmlメソッドの仕様
   ・第1引数:プログラムソースの文字列
   ・第2引数:整形後HTMLのタイトル。(省略可能)
   ・戻り値:変換後のHTMLの文字列
        変換後の文字列(HTML)は、
        <table>タグで整形した形となります。
        (<html>タグでは囲みません。)
'変換クラスを取得する。
Dim conv As CodeConverterToHtml = _
        CodeConverterToHtml.GetInstance( _
            CodeConverterToHtml.ProgLangType.VBNet _
        )

'プログラムソース
Dim strPgSource As String = "・…(プログラムソース)…"

'変換処理(変換結果はブログ等に貼り付けて、利用できます。)
Dim strConv As String = _
    conv.ConvertCodeToHtml(strPgSource, "[VB.NET]変換機能の使用例")
[VB.NET]変換機能の使用例


[改造ポイント]
 ・拡張性
  言語(C#、VB.NET)の固有ロジックを、
  CodeConverterToHtml の派生クラスに定義しています。
  (VBCodeConverterToHtml、CSharpCodeConverterToHtml)
  予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
  派生クラスの修正で変更できます。
  また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
 ・予約語一覧
  予約語一覧は各派生クラスに定義しています。
  予約語の追加、変更、削除が簡単です。
 ・キーワードの検索条件
  正規表現を各派生クラスに定義しています。
  正規表現を修正することで、キーワードの検索条件を変更できます。
 ・キーワードの変換仕様
  正規表現の検索結果毎に、
  MatchEvaluator()メソッドが呼ばれます。
  MatchEvaluator()メソッドの修正で変換仕様を変更できます。
 ・マルチスレッド対応
  スレッドセーフではありません。
  派生クラスのGetRegEx() とGetReservedWords()に、
  複数スレッドが同時アクセスした場合、
  m_RegEx変数、m_ReservedWords変数の値に
  矛盾が生じる可能性があります。
  ASP.NET等のマルチスレッド環境で安全に使用する為には、
  SyncLockで排他をかける必要があります。

[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
Imports System.Text.RegularExpressions

''' <summary>
''' 変換(ソースコード→HTML)
''' </summary>
''' <remarks></remarks>
Public MustInherit Class CodeConverterToHtml

#Region "定数定義"
    ''' <summary>
    ''' HTMLレイアウト
    ''' </summary>
    ''' <remarks></remarks>
    Private Const TABLE_STRING As String =
        "<table width=""100%"" border=""0"" " &
        " bgcolor=""@@@TITLEBGCOLOR@@@"" " &
        " cellspacing=""0"">" &
        " <tr><td>" &
        "  <button type=""button"" value="""" " &
        "   onClick=""" &
        "   var ta=document.createElement('textarea');" &
        "   ta.value=this.parentNode.parentNode.parentNode.getElementsByTagName('tr')[1].innerText;" &
        "   this.appendChild(ta);ta.select();" &
        "   document.execCommand('Copy');" &
        "   alert('コピーしました。');" &
        "   this.removeChild(ta);"">" &
        "   コードのコピー</button>" &
        " </td></tr>" &
        " <tr><td>" &
        " <table width=""100%"" border=""0"" " &
        "  cellpadding=""10"" " &
        "  bgcolor=""@@@BGCOLOR@@@"" " &
        "  cellspacing=""0"">" &
        "  <tr><td>" &
        "   <font color=""@@@FORECOLOR@@@"" " &
        "    style=""font-size: 9pt"">" &
        "    <code>@@@CODE@@@</code>" &
        "   </font>" &
        "  </td></tr>" &
        " </table>" &
        " </td></tr>" &
        " <tr><td>" &
        " <b><font size=""2"">@@@TITLE@@@</font></b>" &
        " </td></tr>" &
        "</table>"
#End Region

#Region "列挙定義"
    ''' <summary>
    ''' 言語の種類
    ''' </summary>
    ''' <remarks></remarks>
    Public Enum ProgLangType
        ''' <summary>
        ''' VB.NET
        ''' </summary>
        ''' <remarks></remarks>
        VBNet = 0
        ''' <summary>
        ''' C#.NET
        ''' </summary>
        ''' <remarks></remarks>
        CSharp = 1
    End Enum

#End Region

#Region "変数定義"
    ''' <summary>
    ''' インスタンス
    ''' </summary>
    ''' <remarks></remarks>
    Private Shared instanceList() As CodeConverterToHtml = _
        New CodeConverterToHtml() { _
            New VbCodeConverterToHtml(), _
            New CSharpCodeConverterToHtml() _
        }

#End Region

#Region "コンストラクタ"
    ''' <summary>
    ''' コンストラクタ
    ''' </summary>
    ''' <remarks></remarks>
    Protected Sub New()

    End Sub

#End Region

#Region "インスタンスを取得"
    ''' <summary>
    ''' インスタンスを取得
    ''' </summary>
    ''' <param name="type">言語の種類</param>
    ''' <returns>インスタンス</returns>
    ''' <remarks></remarks>
    Public Shared Function GetInstance( _
        ByVal type As ProgLangType) As CodeConverterToHtml

        Return instanceList(type)
    End Function
#End Region

#Region "ソースコードをHTMLに変換する。"
    ''' <summary>
    ''' ソースコードをHTMLに変換する。
    ''' </summary>
    ''' <param name="src">ソースコード</param>
    ''' <returns>HTML</returns>
    ''' <remarks></remarks>
    Public Function ConvertCodeToHtml(ByVal src As StringAs String
        Return Me.ConvertCodeToHtml(src, Me.GetDefaultTitle())
    End Function

    ''' <summary>
    ''' ソースコードをHTMLに変換する。
    ''' </summary>
    ''' <param name="src">ソースコード</param>
    ''' <param name="title">タイトル</param>
    ''' <returns>HTML</returns>
    ''' <remarks></remarks>
    Public Function ConvertCodeToHtml( _
        ByVal src As StringByVal title As StringAs String

        Dim wkSrcList() As String = Nothing

        'ソースコードを行単位に分割する。
        '(vbCrLf, vbLf, vbCr毎)
        wkSrcList = src.Split( _
            New String() {vbCrLf, vbLf, vbCr}, _
            StringSplitOptions.None)

        '先頭の空白文字数を取得
        Dim cntIndent As Integer = _
            Me.GetHeadSpaceCount(wkSrcList)

        '先頭の空白文字を削除
        Me.RemoveStringList(wkSrcList, cntIndent)

        'HTMLエンコード
        Me.HtmlEncode(wkSrcList)

        Dim regEx As Regex = Me.GetRegEx()
        Dim regMatchEvaluator As _
            New MatchEvaluator(AddressOf Me.MatchEvaluator)

        'キーワードにタグを付加
        For i As Integer = 0 To wkSrcList.Length - 1
            wkSrcList(i) = wkSrcList(i).Replace( _
                    " ""&nbsp;")
            wkSrcList(i) = regEx.Replace( _
                    wkSrcList(i), regMatchEvaluator)
        Next

        Dim wkStr As String

        wkStr = String.Join(vbCrLf, wkSrcList)
        wkStr = wkStr.Replace(vbCrLf, "<br/>" & vbCrLf)

        Dim wkStrTable As String = Nothing

        wkStrTable = TABLE_STRING.Replace( _
            "@@@TITLE@@@", title)
        wkStrTable = wkStrTable.Replace( _
            "@@@BGCOLOR@@@"Me.GetBackColor())
        wkStrTable = wkStrTable.Replace( _
            "@@@FORECOLOR@@@"Me.GetForeColor())
        wkStrTable = wkStrTable.Replace( _
            "@@@TITLEBGCOLOR@@@"Me.GetTitleBackColor())
        wkStr = wkStrTable.Replace("@@@CODE@@@", wkStr)


        Return wkStr
    End Function

#Region "ヘルパーメソッド"
    ''' <summary>
    ''' HTMLにエンコードする
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <returns>ソース(HTMLエンコード済)</returns>
    ''' <remarks></remarks>
    Private Function HtmlEncode(ByVal srcLineList() As StringAs String()

        For i As Integer = 0 To srcLineList.Length - 1
            srcLineList(i) = System.Web.HttpUtility.HtmlEncode(srcLineList(i))
        Next

        Return srcLineList

    End Function

    ''' <summary>
    ''' インデントの桁数を取得。
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <returns>インデントの桁数</returns>
    ''' <remarks></remarks>
    Private Function GetHeadSpaceCount( _
        ByVal srcLineList() As StringAs Integer

        Const CHR_BLANK As Char = " "c
        Return Me.GetHeadSpaceCount(srcLineList, CHR_BLANK)
    End Function

    ''' <summary>
    ''' インデントの桁数を取得。
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <param name="indentChar">インデントの文字</param>
    ''' <returns>インデントの桁数</returns>
    ''' <remarks></remarks>
    Private Function GetHeadSpaceCount( _
        ByVal srcLineList() As String, _
        ByVal indentChar As CharAs Integer

        Dim cntIndent As Integer = Int32.MaxValue

        If srcLineList.Length = 0 Then
            Return 0
        End If

        For Each wkSrc As String In srcLineList

            For i As Integer = 0 To wkSrc.Length - 1

                If wkSrc.Trim() = "" Then
                    Exit For
                End If

                If i >= cntIndent Then
                    Exit For
                End If

                If wkSrc(i) = indentChar.ToString() Then

                Else
                    cntIndent = Math.Min(i, cntIndent)
                    Exit For
                End If
            Next
        Next

        If cntIndent = Int32.MaxValue Then
            Return 0
        End If

        Return cntIndent

    End Function

    ''' <summary>
    ''' 各行からインデントを除去する。
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <param name="cnt">インデントの桁数</param>
    ''' <returns>処理結果</returns>
    ''' <remarks></remarks>
    Private Function RemoveStringList( _
        ByVal srcLineList() As String, _
        ByVal cnt As IntegerAs Boolean

        If cnt = 0 Then
            Return True
        End If

        For i As Integer = 0 To srcLineList.Length - 1
            If srcLineList(i).Trim() = "" Then
                Continue For
            End If
            srcLineList(i) = srcLineList(i).Substring(cnt)
        Next

        Return True

    End Function
#End Region

#End Region

#Region "変換対象の文字列を検索する正規表現を取得する。"
    ''' <summary>
    ''' 変換対象の文字列を検索する正規表現を取得する。
    ''' </summary>
    ''' <returns>正規表現</returns>
    ''' <remarks></remarks>
    Protected MustOverride Function GetRegEx() As Regex
#End Region

#Region "正規表現の検索結果を編集する。"
    ''' <summary>
    ''' 正規表現の検索結果を編集する。
    ''' </summary>
    ''' <param name="match">検索結果</param>
    ''' <returns>編集結果</returns>
    ''' <remarks></remarks>
    Protected MustOverride Function MatchEvaluator( _
        ByVal match As Match) As String
#End Region

#Region "予約語一覧を取得する。"
    ''' <summary>
    ''' 予約語一覧を取得する。
    ''' </summary>
    ''' <returns>予約語一覧</returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetReservedWords() As String()
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' タイトルを取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetDefaultTitle() As String
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' 前景色(タイトル)を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetTitleBackColor() As String
#End Region

#Region "背景色を取得"
    ''' <summary>
    ''' 背景色を取得
    ''' </summary>
    ''' <returns>背景色</returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetBackColor() As String
#End Region

#Region "前景色を取得"
    ''' <summary>
    ''' 前景色を取得
    ''' </summary>
    ''' <returns>前景色</returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetForeColor() As String
#End Region


End Class

[VB.NET]CodeConverterToHtml


続きを読む


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2] [Programming .NET Tips]

[はじめに]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]」からの続きです。

[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
Imports System.Text.RegularExpressions

''' <summary>
''' 変換(C#ソースコード→HTML)
''' </summary>
''' <remarks></remarks>
Public Class CSharpCodeConverterToHtml
    Inherits CodeConverterToHtml

#Region "定数定義"
    ''' <summary>
    ''' 背景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR As String = "#FFFFE0"

    ''' <summary>
    ''' 背景色(タイトル)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR_TITLE As String = "#66CCCC"

    ''' <summary>
    ''' 前景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR As String = "#000000"

    ''' <summary>
    ''' 前景色(コメント)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_COMMENT As String = "#008040"

    ''' <summary>
    ''' 前景色(文字列)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_STRING As String = "#FF0000"

    ''' <summary>
    ''' 前景色(予約語)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_RESERVED_WORD As String = "#0000FF"
#End Region

#Region "変数定義"
    ''' <summary>
    ''' 正規表現
    ''' </summary>
    ''' <remarks></remarks>
    Private m_RegEx As Regex = Nothing

    ''' <summary>
    ''' 予約語一覧
    ''' </summary>
    ''' <remarks></remarks>
    Private m_ReservedWords As New List(Of String)
#End Region

#Region "コンストラクタ"
    ''' <summary>
    ''' コンストラクタ
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub
#End Region

#Region "変換対象の文字列を検索する正規表現を取得する。"
    ''' <summary>
    ''' 変換対象の文字列を検索する正規表現を取得する。
    ''' </summary>
    ''' <returns>正規表現</returns>
    ''' <remarks></remarks>
    Protected Overrides Function GetRegEx() As Regex
        If Not (Me.m_RegEx Is NothingThen
            Return Me.m_RegEx
        End If

        Dim strPatternAll As String = Nothing
        '正規表現パターン
        '※コメント判別
        '(先頭開始、0個以上の「&nbsp;」、1個以上の「//」、0個以上の任意文字)
        Dim strPattern1 As String = "^(&nbsp;)*(//)+.*"
        '※コメント判別
        '(先頭開始、0個以上の空白、1個以上の「//」、0個以上の任意文字)
        Dim strPattern2 As String = "^\s*(//)+.*"
        '※文字列判別
        '(「"」開始、0個以上の任意文字、最も手前の「"」終了)
        Dim strPattern3 As String = """.*?"""
        '※文字列判別
        '(「&quot;」開始、0個以上の任意文字、最も手前の「&quot;」終了)
        Dim strPattern4 As String = "&quot;.*?&quot;"
        '※予約語判別
        '(単語単位で予約語の何れかと同じ)
        Dim wkStr As String = String.Join("|"Me.GetReservedWords())
        Dim strPattern5 As String = "\b(" & wkStr & ")\b"

        strPatternAll = _
                    strPattern1 & "|" & strPattern2 & "|" & _
                    strPattern3 & "|" & strPattern4 & "|" & _
                    strPattern5

        Me.m_RegEx = New Regex(strPatternAll)

        Return Me.m_RegEx
    End Function
#End Region

#Region "正規表現の検索結果を編集する。"
    ''' <summary>
    ''' 正規表現の検索結果を編集する。
    ''' </summary>
    ''' <param name="match">検索結果</param>
    ''' <returns>編集結果</returns>
    ''' <remarks></remarks>
    Protected Overrides Function MatchEvaluator(ByVal match As Match) As String
        If match.Value.Replace("&nbsp;""").StartsWith("//"OrElse _
            match.Value.Trim().StartsWith("//"Then
            'コメントの場合            
            Dim wk1 As Integer = match.Value.IndexOf("//")
            If wk1 = 0 Then
                Return String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
            End If
            Return match.Value.Substring(0, wk1) & _
                    String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
        End If

        If (match.Value.StartsWith("&quot;"AndAlso _
            match.Value.EndsWith("&quot;")) OrElse _
           (match.Value.StartsWith(""""AndAlso _
            match.Value.EndsWith("""")) Then
            '文字列の場合            
            Return String.Format( _
                "<font color='{0}'>{1}</font>", _
                FORE_COLOR_STRING, _
                match.Value)
        End If

        '予約語の場合
        Return String.Format( _
            "<font color='{0}'>{1}</font>", _
            FORE_COLOR_RESERVED_WORD, _
            match.Value)
    End Function
#End Region

#Region "予約語一覧を取得する。"
    ''' <summary>
    ''' 予約語一覧を取得する。
    ''' </summary>
    ''' <returns>予約語一覧</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetReservedWords() As String()
        If Me.m_ReservedWords.Count > 0 Then
            Return Me.m_ReservedWords.ToArray()
        End If

        With Me.m_ReservedWords

            .AddRange(New String() {"abstract""as""base""bool""break"})
            .AddRange(New String() {"byte""case""catch""char""checked"})
            .AddRange(New String() {"class""const""continue""decimal""decimal"})
            .AddRange(New String() {"default""delegate""do""double""else"})
            .AddRange(New String() {"enum""event""explicit""extern""false"})
            .AddRange(New String() {"finally""fixed""float""for""foreach"})
            .AddRange(New String() {"from""get""goto""group""if"})
            .AddRange(New String() {"implicit""in""int""interface""internal"})
            .AddRange(New String() {"into""is""join""let""lock"})
            .AddRange(New String() {"long""namespace""new""null""object"})
            .AddRange(New String() {"operator""orderby""out""override""params"})
            .AddRange(New String() {"partial""private""protected""public""readonly"})
            .AddRange(New String() {"ref""return""sbyte""sealed""select"})
            .AddRange(New String() {"set""short""sizeof""stackalloc""static"})
            .AddRange(New String() {"string""struct""switch""this""throw"})
            .AddRange(New String() {"true""try""typeof""uint""ulong"})
            .AddRange(New String() {"unchecked""unsafe""ushort""using""value"})
            .AddRange(New String() {"virtual""void""volatile""where""while"})
            .AddRange(New String() {"yield"})

        End With

        Return Me.m_ReservedWords.ToArray()

    End Function
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' タイトルを取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetDefaultTitle() As String
        Return "C#"
    End Function
#End Region

#Region "背景色(タイトル)を取得"
    ''' <summary>
    ''' 背景色(タイトル)を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetTitleBackColor() As String
        Return BACK_COLOR_TITLE
    End Function
#End Region

#Region "背景色を取得"
    ''' <summary>
    ''' 背景色を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetBackColor() As String
        Return BACK_COLOR
    End Function
#End Region

#Region "前景色を取得"
    ''' <summary>
    ''' 前景色を取得
    ''' </summary>
    ''' <returns>前景色</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetForeColor() As String
        Return FORE_COLOR
    End Function
#End Region

End Class
[VB.NET]CSharpCodeConverterToHtml.vb


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3] [Programming .NET Tips]

[はじめに]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]」からの続きです。

[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
Imports System.Text.RegularExpressions

''' <summary>
''' 変換(SQLServerコード→HTML)
''' </summary>
''' <remarks></remarks>
Public Class SqlServerCodeConverterToHtml
    Inherits CodeConverterToHtml

#Region "定数定義"
    ''' <summary>
    ''' 背景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR As String = "#FFFFE0"

    ''' <summary>
    ''' 背景色(タイトル)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR_TITLE As String = "#66CCCC"

    ''' <summary>
    ''' 前景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR As String = "#000000"

    ''' <summary>
    ''' 前景色(コメント)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_COMMENT As String = "#008040"

    ''' <summary>
    ''' 前景色(文字列)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_STRING As String = "#FF0000"

    ''' <summary>
    ''' 前景色(予約語)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_RESERVED_WORD As String = "#0000FF"
#End Region

#Region "変数定義"
    ''' <summary>
    ''' 正規表現
    ''' </summary>
    ''' <remarks></remarks>
    Private m_RegEx As Regex = Nothing

    ''' <summary>
    ''' 予約語一覧
    ''' </summary>
    ''' <remarks></remarks>
    Private m_ReservedWords As New List(Of String)
#End Region

#Region "コンストラクタ"
    ''' <summary>
    ''' コンストラクタ
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub
#End Region

#Region "変換対象の文字列を検索する正規表現を取得する。"
    ''' <summary>
    ''' 変換対象の文字列を検索する正規表現を取得する。
    ''' </summary>
    ''' <returns>正規表現</returns>
    ''' <remarks></remarks>
    Protected Overrides Function GetRegEx() As Regex
        If Not (Me.m_RegEx Is NothingThen
            Return Me.m_RegEx
        End If

        Dim strPatternAll As String = Nothing
        '正規表現パターン
        '※コメント判別
        '(先頭開始、0個以上の「&nbsp;」、1個以上の「--」、0個以上の任意文字)
        Dim strPattern1 As String = "^(&nbsp;)*(--)+.*"
        '※コメント判別
        '(先頭開始、0個以上の空白、1個以上の「--」、0個以上の任意文字)
        Dim strPattern2 As String = "^\s*(--)+.*"
        '※文字列判別
        '(「'」開始、0個以上の任意文字、最も手前の「'」終了)
        Dim strPattern3 As String = "'.*?'"
        '※予約語判別
        '(単語単位で予約語の何れかと同じ)
        Dim wkStr As String = String.Join("|"Me.GetReservedWords())
        Dim strPattern4 As String = "\b(" & wkStr & ")\b"

        strPatternAll = _
                    strPattern1 & "|" & strPattern2 & "|" & _
                    strPattern3 & "|" & strPattern4 

        Me.m_RegEx = New Regex(strPatternAll, RegexOptions.IgnoreCase)

        Return Me.m_RegEx
    End Function
#End Region

#Region "正規表現の検索結果を編集する。"
    ''' <summary>
    ''' 正規表現の検索結果を編集する。
    ''' </summary>
    ''' <param name="match">検索結果</param>
    ''' <returns>編集結果</returns>
    ''' <remarks></remarks>
    Protected Overrides Function MatchEvaluator(ByVal match As Match) As String
        If match.Value.Replace("&nbsp;""").StartsWith("--"OrElse _
            match.Value.Trim().StartsWith("--"Then
            'コメントの場合            
            Dim wk1 As Integer = match.Value.IndexOf("--")
            If wk1 = 0 Then
                Return String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
            End If
            Return match.Value.Substring(0, wk1) & _
                    String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
        End If

        If match.Value.StartsWith("'"AndAlso _
            match.Value.EndsWith("'"Then
            '文字列の場合            
            Return String.Format( _
                "<font color='{0}'>{1}</font>", _
                FORE_COLOR_STRING, _
                match.Value)
        End If

        '予約語の場合
        Return String.Format( _
            "<font color='{0}'>{1}</font>", _
            FORE_COLOR_RESERVED_WORD, _
            match.Value)
    End Function
#End Region

#Region "予約語一覧を取得する。"
    ''' <summary>
    ''' 予約語一覧を取得する。
    ''' </summary>
    ''' <returns>予約語一覧</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetReservedWords() As String()
        If Me.m_ReservedWords.Count > 0 Then
            Return Me.m_ReservedWords.ToArray()
        End If

        With Me.m_ReservedWords

            .AddRange(New String() {"ADD""ALL""ALTER""AND""ANY"})
            .AddRange(New String() {"AS""ASC""AUTHORIZATION""BACKUP""BEGIN"})
            .AddRange(New String() {"BETWEEN""BREAK""BROWSE""BULK""BY"})
            .AddRange(New String() {"CASCADE""CASE""CHECK""CHECKPOINT""CLOSE"})
            .AddRange(New String() {"CLUSTERED""COALESCE""COLLATE""COLUMN""COMMIT"})
            .AddRange(New String() {"COMPUTE""CONSTRAINT""CONTAINS""CONTAINSTABLE""CONTINUE"})
            .AddRange(New String() {"CONVERT""CREATE""CROSS""CURRENT""CURRENT_DATE"})
            .AddRange(New String() {"CURRENT_TIME""CURRENT_TIMESTAMP""CURRENT_USER""CURSOR""DATABASE"})
            .AddRange(New String() {"DBCC""DEALLOCATE""DECLARE""DEFAULT""DELETE"})
            .AddRange(New String() {"DENY""DESC""DISK""DISTINCT""DISTRIBUTED"})
            .AddRange(New String() {"DOUBLE""DROP""DUMP""ELSE""END"})
            .AddRange(New String() {"ERRLVL""ESCAPE""EXCEPT""EXEC""EXECUTE"})
            .AddRange(New String() {"EXISTS""EXIT""EXTERNAL""FETCH""FILE"})
            .AddRange(New String() {"FILLFACTOR""FOR""FOREIGN""FREETEXT""FREETEXTTABLE"})
            .AddRange(New String() {"FROM""FULL""FUNCTION""GOTO""GRANT"})
            .AddRange(New String() {"GROUP""HAVING""HOLDLOCK""IDENTITY""IDENTITY_INSERT"})
            .AddRange(New String() {"IDENTITYCOL""IF""IN""INDEX""INNER"})
            .AddRange(New String() {"INSERT""INTERSECT""INTO""IS""JOIN"})
            .AddRange(New String() {"KEY""KILL""LEFT""LIKE""LINENO"})
            .AddRange(New String() {"LOAD""MERGE""NATIONAL""NOCHECK""NONCLUSTERED"})
            .AddRange(New String() {"NOT""NULL""NULLIF""OF""OFF"})
            .AddRange(New String() {"OFFSETS""ON""OPEN""OPENDATASOURCE""OPENQUERY"})
            .AddRange(New String() {"OPENROWSET""OPENXML""OPTION""OR""ORDER"})
            .AddRange(New String() {"OUTER""OVER""PERCENT""PIVOT""PLAN"})
            .AddRange(New String() {"PRECISION""PRIMARY""PRINT""PROC""PROCEDURE"})
            .AddRange(New String() {"PUBLIC""RAISERROR""READ""READTEXT""RECONFIGURE"})
            .AddRange(New String() {"REFERENCES""REPLICATION""RESTORE""RESTRICT""RETURN"})
            .AddRange(New String() {"REVERT""REVOKE""RIGHT""ROLLBACK""ROWCOUNT"})
            .AddRange(New String() {"ROWGUIDCOL""RULE""SAVE""SCHEMA""SECURITYAUDIT"})
            .AddRange(New String() {"SELECT""SEMANTICKEYPHRASETABLE""SEMANTICSIMILARITYDETAILSTABLE"})
            .AddRange(New String() {"SEMANTICSIMILARITYTABLE""SESSION_USER"})
            .AddRange(New String() {"SET""SETUSER""SHUTDOWN""SOME"})
            .AddRange(New String() {"STATISTICS""SYSTEM_USER""TABLE"})
            .AddRange(New String() {"TABLESAMPLE""TEXTSIZE""THEN"})
            .AddRange(New String() {"TO""TOP""TRAN"})
            .AddRange(New String() {"TRANSACTION""TRIGGER""TRUNCATE"})
            .AddRange(New String() {"TRY_CONVERT""TSEQUAL""UNION"})
            .AddRange(New String() {"UNIQUE""UNPIVOT""UPDATE"})
            .AddRange(New String() {"UPDATETEXT""USE""USER"})
            .AddRange(New String() {"VALUES""VARYING""VIEW"})
            .AddRange(New String() {"WAITFOR""WHEN""WHERE"})
            .AddRange(New String() {"WHILE""WITH""WITHINGROUP""WRITETEXT"})

        End With

        Return Me.m_ReservedWords.ToArray()

    End Function
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' タイトルを取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetDefaultTitle() As String
        Return "SQLServer"
    End Function
#End Region

#Region "背景色(タイトル)を取得"
    ''' <summary>
    ''' 背景色(タイトル)を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetTitleBackColor() As String
        Return BACK_COLOR_TITLE
    End Function
#End Region

#Region "背景色を取得"
    ''' <summary>
    ''' 背景色を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetBackColor() As String
        Return BACK_COLOR
    End Function
#End Region

#Region "前景色を取得"
    ''' <summary>
    ''' 前景色を取得
    ''' </summary>
    ''' <returns>前景色</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetForeColor() As String
        Return FORE_COLOR
    End Function
#End Region

End Class
[VB.NET]SqlServerCodeConverterToHtml

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]ゼロからはじめる ドコモ Xperia XZ Premium SO-04J スマートガイド [Book's Review(Book)]

(1)レビュー
最近、妻が、
スマホ(Softbank XperiaZ3)から
スマホ(Docomo XperiaXZ Premium SO-04J)に機種変しました。

スマホの操作自体はさほど変わりはないですが、
使いこなしたいため、ガイドブックを購入したとのことです。

基本的な使い方から、
普段使わない機能まで一通り書いています。

スマホに乗り換えたばかりの方には、
ぜひオススメの1冊です。

(2)リンク
ゼロからはじめる ドコモ Xperia XZ Premium SO-04J スマートガイド

ゼロからはじめる ドコモ Xperia XZ Premium SO-04J スマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/07/29
  • メディア: 単行本(ソフトカバー)



nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]ゼロからはじめる SoftBank Xperia XZスマートガイド [Book's Review(Book)]

(1)レビュー
最近、友人が、
ガラケーからスマホ(Softbank XperiaXZ)に変えました。

スマホの操作に四苦八苦しているとのことなので、
お手頃なガイドブックをチョイスしました。

かくいう私もスマホ歴2年弱ですが、
購入当初は、私もこのシリーズのガイドブックを重宝しました。

基本的な使い方から、
普段使わない機能まで一通り書いています。

スマホに乗り換えたばかりの方には、
ぜひオススメの1冊です。

(2)リンク
ゼロからはじめる SoftBank Xperia XZスマートガイド

ゼロからはじめる SoftBank Xperia XZスマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/01/11
  • メディア: 単行本(ソフトカバー)

ゼロからはじめる au Xperia XZ SOV34 スマートガイド

ゼロからはじめる au Xperia XZ SOV34 スマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/01/11
  • メディア: 単行本(ソフトカバー)

ゼロからはじめる ドコモ Xperia XZ SO-01J スマートガイド

ゼロからはじめる ドコモ Xperia XZ SO-01J スマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/12/22
  • メディア: 単行本(ソフトカバー)

タグ:XPERIA

[Eclipse]「この選択をデフォルトとして使用し、今後この質問を表示しない」の解除 [Eclipse Tips]

Eclipseの起動時の「ワークスペース・ランチャー」ウィンドウで
「この選択をデフォルトとして使用し、今後この質問を表示しない」
チェックをいれると、
次回起動時には「ワークスペース・ランチャー」は表示されなくなります。
 ※英語版の場合、チェックの表記は
  「Use this as the default and do not ask again」になります。

備忘録として、
間違えてチェックを入れてしまった場合に備えて、
次回起動時に「ワークスペース・ランチャー」を表示させる手順を載せておきます。

手順(日本語版Eclipseの場合)
①メニューから「ウィンドウ」「設定」を選択して、
 「一般」「開始およびシャットダウン」
 「ワークスペース」を選択する。
「始動時にワークスペースをプロンプト」にチェックして、
 「適用」ボタンをクリックすると、
 次回起動時に「ワークスペース・ランチャー」ダイアログが
 表示されるようになります。


英語版Eclipseについても載せておきます。
手順(英語版Eclipseの場合)
①メニューから「Window」
 「Preferences」を選択して、
 「General」「Start up and shutdown」
 「Workspaces」を選択する。
「Prompt for workspace on start up」をチェックして、
 「Apply」ボタンをクリックすると、
 次回起動時に「Workspace Lancher」ダイアログが
 表示されるようになります。

[Review]超ホーダイ(120本使い放題)|1年版 [Software's Review]

(1)レビュー
最近、妻のPC練習のためにタブレットPC(Windows10)を購入しました。

マウスやキーボードの操作にも慣れてきたので、
そろそろ次のステップとして、
アプリケーションにも慣れてもらおうと思い、
『超ホーダイ』を購入しました。

『超ホーダイ』は5,000円の価格で、
1年間120本のソフトを利用できるというものですが、
付属の『スーパーセキュリティ』を単独購入しても
4,000円の価格なので、
コスト的にもお買い得です。

■利用できるソフト一覧
 http://www.sourcenext.com/service/houdai/titles/

とりあえず、
特打PLUS(タイピング練習ソフト)
特打式Excel編(Excel練習ソフト)
をインストールしてみました。

『特打PLUS』は、
特打シリーズで有名なタイピング練習ソフトですが、
ゲーム感覚で学べるので、飽きずに楽しめる内容です。

『特打式Excel編』は、
実際のExcelと連動して、実機演習もできるスグレモノです。
Excelのバージョンは、2016 /2013 / 2010 / 2007の各々に対応。
※他のOffice製品として、Word編PowerPoint編もあります。

(2)リンク
超ホーダイ(120本使い放題)|1年版| オンラインコード版

超ホーダイ(120本使い放題)|1年版| オンラインコード版

  • 出版社/メーカー: ソースネクスト
  • メディア: Software Download

(3)関連商品
超ホーダイ(120本使い放題)|3年版| オンラインコード版

超ホーダイ(120本使い放題)|3年版| オンラインコード版

  • 出版社/メーカー: ソースネクスト
  • メディア: Software Download
超ホーダイ 3年版(旧版)

超ホーダイ 3年版(旧版)

  • 出版社/メーカー: ソースネクスト
  • メディア: CD-ROM

[Review]スマホのモバイルバッテリー [Hardware's Review]

(1)レビュー
 最近、外出先でスマホを充電する機会が増えたので、
 モバイルバッテリーを新たに購入することにしました。

 妻と2人で外出することが多いので、
 大容量かつ2台同時給電の特長を意識して、
 以下の製品を購入しました。

 Softbank製品ですが、他の機種にも対応しているようです。
 ※詳細は以下リンク参照

 ■モバイルバッテリー
 『Softbank Selection smart energy box 10000』
 (1)対応機種2台への同時給電
    スマホが2台ある時も便利
 (2)約4.5回充電できる大容量バッテリー
    2人で外出しても、外出先で2回充電できます。
    最近はやりの『ポケモンGO』をやるにも十分ですね(笑)

(2)リンク
SoftBank SELECTION smart energy box 10000 SB-SE14-U100/WH

SoftBank SELECTION smart energy box 10000 SB-SE14-U100/WH

  • 出版社/メーカー: ソフトバンク
  • メディア: エレクトロニクス

[VBA]クラスモジュールのインスタンス生成タイミングについて [Programming ExcelVBA]

[はじめに]
VBAは、Javaや.NET系言語程ではありませんが、
オブジェクト指向をサポートしています。

Javaや.NETとの違いの1つとして、
インスタンスの生成タイミングがあります。
Javaや.NETの感覚でコーディングすると間違いに陥りやすいので、
備忘録として記載します。

[インスタンスの生成タイミング]
インスタンスの生成はJavaなどでは、
『New』を指定するとインスタンスが生成されますが、
VBAでは記載の仕方によって、
必ずしも生成されるとは限りません。

例えば、Javaの場合、
newを指定するタイミングでインスタンスが生成され、
その参照が変数に格納されます。
クラスモジュールのインスタンス生成タイミング_java.png
それに対して、VBAの場合は、
Newを指定したタイミングではインスタンスは生成されず、
その変数に初めてアクセス(メソッド呼出しなど)するタイミングで、
インスタンスが生成されます。
クラスモジュールのインスタンス生成タイミング_vba.png
インスタンス生成タイミングの検証として、
下記のコードを実行してみると以下のようになります。
もし、Javaや.NETと同じように
宣言時にインスタンス生成がされるのであれば、
出力結果は、
 (1)インスタンスをNew付で宣言します。
 (a)インスタンスが生成されました。 ★JavaやC#ならこのタイミング
 (2)これからインスタンスにアクセスします。
 (b)MethodA実行中
となるはずですが、
実際は次のようになります。
 (1)インスタンスをNew付で宣言します。
 (2)これからインスタンスにアクセスします。
 (a)インスタンスが生成されました。 ★VBAの場合、初回メソッド実行時
 (b)MethodA実行中
これは、宣言時にインスタンスは作成しておらず、
MethodAを実行する際に、インスタンスが生成していることを示します。

[VBAのコード]
Option Explicit

Private Sub TestA()
    Dim a As New Hoge
    Debug.Print "(1)インスタンスをNew付で宣言します。"
    Debug.Print "(2)これからインスタンスにアクセスします。"
    a.MethodA

    '実行結果
    '(1)インスタンスをNew付で宣言します。
    '(2)これからインスタンスにアクセスします。
    '(a)インスタンスが生成されました。
    '(b)MethodA実行中
End Sub
[VBA]インスタンスの生成タイミングの検証(Hogeクラスの呼出し側)


Option Explicit

Private Sub Class_Initialize()
    Debug.Print "(a)インスタンスが生成されました。"
End Sub

Public Sub MethodA()
    Debug.Print "(b)MethodA実行中"
End Sub
[VBA]インスタンスの生成タイミングの検証(Hogeクラス)


[その他]
 VBAを例に説明していますが、
 VisualBasic6(VB6)系の言語にも同様なことが言えます。

[Review]SEIKO CLOCK (セイコークロック) デジタル ウィークリーアラーム [Hardware's Review]

(1)レビュー
 目覚まし時計の調子が悪くなったので、新たに購入しました。
 指定した時刻にアラームが鳴ってくれさえすればよいので、
 特別な機能は求めていなかったのですが、
 価格の割に便利な機能が搭載されていたので、購入に至りました。

 最近は、スマホにもアラーム機能が搭載されているので、
 時計メーカーもいろんな工夫を凝らしているのかもしれませんね。

 【便利だと思った機能ベスト5】
 (1)アラームを曜日毎に設定できる。(設定も簡単)
    今までは金曜日の就寝前にアラームを無効にしたり、
    日曜日の就寝前にアラームを有効にする必要がありましたが、
    設定の変更が必要なくなりました。
 (2)午前と午後を区別できる。
    午前と午後を区別できないと、起床後にアラームを無効にしたり、
    就寝前にアラームを有効にする必要がありました。
    (1)と同じような理由ですが、
    設定の変更が必要なくなりました。
 (3)電池残量を通知してくれる。
    『気が付いたら時計が止まっていた』ってことがなくなります。
 (4)電波による自動更新。
    今となっては当たり前の機能かもしれませんが、
    時刻を修正する必要がありません。
 (5)温度と湿度を表示。(快適さも表示)
    なくても不便ではないですが、あったら便利です(笑)


(2)リンク

[Review]サンワサプライハンドシュレッダーPSD-MC2210 [Hardware's Review]

(1)レビュー
 シュレッダーが必要になったのでアマゾンで購入しました。
 紙だけではなく、CDやDVD、クレジットカードなどのカードも処理してくれます。

 手動ですが、このお値段でここまで機能があるのはお得です!

(2)リンク
サンワサプライ ハンドシュレッダー PSD-MC2210

[Review]jQueryポケットリファレンス [Book's Review (Develop)]

(1)レビュー
 最近はGoogle等で検索すれば情報を得ることはできますが、
 まとまった本があればと思い1冊購入しました。
 リファレンスとしてももちろんですが、
 カテゴリ毎に順番に読み進めていっても面白いと思います。

 章立ては、
 第1章で、WebやjQueryの基本、
 第2章で開発環境について、
 第3章以降でリファレンス的な内容 
 の構成でまとめてています。
 
 あと、『Web制作の現場で使うjQueryデザイン入門』の書籍では、
 サンプルを紹介しながらの解説になっています。
 合わせて読むことをオススメします。

(2)リンク
jQuery ポケットリファレンス (POCKET REFERENCE)

jQuery ポケットリファレンス (POCKET REFERENCE)

  • 作者: 鶴田 展之
  • 出版社/メーカー: 技術評論社
  • 発売日: 2010/06/18
  • メディア: 単行本(ソフトカバー)



[Review]Web制作の現場で使うjQueryデザイン入門 [Book's Review (Develop)]

(1)レビュー
 jQueryを扱う機会がでてきたので、購入しました。

 本書のサンプルファイルをダウンロードできるので、
 実際に動作させながらの確認ができます。

 JavaScriptやCSSの経験があり、jQueryをこれから覚えるWeb開発者にとって、
 1番最初に読む入門書だと思います。

(2)リンク
Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)

Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)

  • 作者: 西畑 一馬
  • 出版社/メーカー: アスキー・メディアワークス
  • 発売日: 2010/02/12
  • メディア: 大型本


タグ:jQuery

[Review]Microsoft Visual Studio Professional 2013 通常版 [Software's Review]

(1)レビュー
VisualStudio2013を使う機会がでてきたので、
備忘録として、
従来バージョンからの主な変更点を書いておきます。
【Visual Studio 2010→2012の新機能】
・非同期プログラミングの新機能
 C#&VBにasync/awaitキーワードが追加
  非同期の実装が簡単になりましたl。

Windowsストアアプリ
 Windows8から採用された新しいタイプのアプリを開発できる。

ASP.NET Web API
 ASP.NET MVCと同様な手順でREST形式のWeb APIが作成できる。

ブラウザ毎のWebの表示テスト
 デバッグで手軽にブラウザを切り替えることができる。

Page Inspector
 WebデザイナーとHTMLエディタを1画面内に表示できる。
 対応するHTMLを確認しながら実装可能。

HTML5、CSS3対応のコードエディタ
 HTML5対応のJavaScriptにも対応。

【Visual Studio 2012→2013の新機能】
スクロールバーの新機能
 バーモード:
  スクロールバー上に、修正位置やエラー箇所などを表示。
 マップモード:
  スクロールバー上に、ソースのプレビューを表示。

(2)リンク
Microsoft Visual Studio Professional 2013  通常版

Microsoft Visual Studio Professional 2013 通常版

  • 出版社/メーカー: マイクロソフト
  • メディア: DVD-ROM

Microsoft Visual Studio Professional 2013 アップグレード版

Microsoft Visual Studio Professional 2013 アップグレード版

  • 出版社/メーカー: マイクロソフト
  • メディア: DVD-ROM

Microsoft Visual Studio Professional 2013 with MSDN 通常版

Microsoft Visual Studio Professional 2013 with MSDN 通常版

  • 出版社/メーカー: マイクロソフト
  • メディア: DVD-ROM


[Review]ステンレスものほし台 ブロー台付き BD-50S 【ブロー台付きで安定性抜群・U型の竿受けで竿の取り外し楽々! 】 [Tool's Review]

(1)レビュー
 最近、引越しをしました。
 ベランダの物干し竿を固定する位置が転居前よりも高く、
 身長が低い妻にとって家事がしづらいので、
 物干し台を購入しました。
 
 組み立て式の為、多少のぐらつきはありますが、
 実際使ってみても全く不便さを感じません。

 物干し台の土台の重りが、
 タンクに水や砂を入れるタイプなので、
 今後引越しすることになっても、持ち運びが楽になります。
 
 土台の重りの目安は、下記の通りです。
  ・水のみを入れた場合:16Kg×2=32Kg
  ・砂のみを入れた場合:22Kg×2=44Kg
  ・水と砂を混ぜて入れた場合:28Kg×2=56Kg

 砂を混ぜると、
 引越しの際に中身(砂&水)を抜く時が大変なので、
 用途に応じて使い分けるといいかもしれません。
 ちなみに我が家は『水のみ』ですが問題なく使えています。

 【ご参考】価格について (2015.1時点)
 渋谷の東急ハンズだと1万円近くでしたが、
 アマゾンだと5,500円でした。

(2)リンク

タグ:物干し台

[Review]ASP.NET MVC 5実践プログラミング [Book's Review (Develop)]

(1)レビュー
 4~5年前まではASP.NETといえば、ASP.NET Web Formが主流でしたが、
 他のWeb系の言語(Java、PHP、Ruby等)と比べて異色な為、
 初めてASP.NETを学ぶ人にとってはとっつきにくいものがありました。
 最近のWeb開発はMVCが主流になりつつあり、.NETもそれに合わせて
 ASP.NET MVCの仕組みが追加されました。

 本書はASP.NET MVCについて、
 基礎から応用までわかりやすく解説しています。
 
 これからASP.NET MVCを始める方にとって、貴重な1冊だと思います。

(2)リンク
ASP.NET MVC 5実践プログラミング

ASP.NET MVC 5実践プログラミング

  • 作者: 山田 祥寛
  • 出版社/メーカー: 秀和システム
  • 発売日: 2014/09
  • メディア: 単行本


[Review]10ポートUSBハブ(U2H-Z10SBK ) [Hardware's Review]

(1)レビュー
 パソコンにクーラーパッドを取り付けた為、 
 USBポートの口が足りなくなったので、USBハブを購入しました。

 【実際使った感想】
  ・USBポートを10個搭載しているので、
   将来的に接続する機器が増えても個数を気にする必要がありません。
  ・電源供給はセルフパワーとバスパワーの両方に対応しています。
   マウスやキーボードなど大量の電力を消費しない場合は
   バスパワーで、
   外付けHDDやDVDドライブなど、
   大量の電力を消費する機器を使う場合はセルフパワーで使います。
   ただ、セルフパワーを使う場合、ACアダプタが大きい為、
   OAタップの種類によっては、
   コンセントの差込口の場所をとることになるのが難点です。
   セルフパワーとバスパワーについては、こちらをご参照。

(2)リンク

タグ:USBハブ

[雑記]ソフトバンクの焼きそば [雑記]

ソフトバンクショップに料金プランの変更に行ったら、
インスタントの焼きそばをいただきました。
しかも、
妻(Docomoユーザですが(笑))も一緒についてきたので、
2食分もいただいちゃいました[わーい(嬉しい顔)]
ソフトバンク焼きそば.jpg


nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:グルメ・料理

[Review]クーラーパッド(K-CLN16U2RN) [Hardware's Review]

(1)レビュー
 3年前に購入したノートパソコンの
 CPUとHDDの熱が気になったので、
 クーラーパッド(パソコンのクーラー)を購入しました。

 【店頭での印象】
  店頭で、手をのせて他の製品と比較しましたが、
  本体がアルミボディなのか、
  冷却されたボディのひんやり感を一番感じました。
  あと、クーラー本体に小物の収納ボックスがついています。
  普段使わないゴム足などの付属品をいれるのに
  便利だと思いました。

 【実際に使った感想】
  フリーソフトの『Open Hardware Monitor』で
  CPUとHDDの温度を測定すると、
  下記の結果になりました。
  効果はあるようです。
  【適用前】
   ・CPU:約55度
   ・HDD:約40度
  【適用後】
   ・CPU:約45度
   ・HDD:約35度

  取扱説明書は入っていませんが、
  本製品のサイトで動画を使った説明が
  掲載されているので、
  特に困ることはないと思います。
  [参考サイト]
   http://www.sanwa.co.jp/product/syohin.asp?code=TK-CLN16U2RN

 【改善して欲しい点】
  電源ケーブルが短い(80cm)為、
  PCのUSBポートからの電源供給を余儀なくされます。
  USBポートを塞ぎたくない場合もあると思うので、
  コンセントからも供給できるように、
  電源ケーブルがより長くしてもらうと融通が利くと思います。
  AC電源とUSBの変換アダプタを別途購入すれば、
  融通は効かせられるので、
  インタフェースはUSBのままでもよいと思います。
 
 【特徴】
 ・ファン数:2つ
 ・ファンの強弱をボリュームで調節できる。
 ・ファンの位置を調節できるのでピンポイントで冷却できる。
(2)リンク
サンワサプライ ノート用クーラーパッド レッド・16型ワイド TK-CLN16U3RN

サンワサプライ ノート用クーラーパッド レッド・16型ワイド TK-CLN16U3RN

  • 出版社/メーカー: サンワサプライ
  • メディア: Personal Computers

[Review]プログラミングC# 第7版 [Book's Review (Develop)]

(1)レビュー
 .NET Framework4.5やC#5.0の書籍で、
 入門編レベルよりもさらに踏み込んだ技術を習得したい方にお勧め!
 レベルの高い書籍だと、文章がわかりにくかったり、
 無駄にページ数が多かったり、『~編』のようにシリーズ化しているものが多いですが、
 この書籍はわかりやすくまとめてあります。

 C#5.0で使いやすくなった非同期処理(async、awaitなど)や、
 Windows8のアプリ開発についてまとめています。

(2)リンク
プログラミングC# 第7版

プログラミングC# 第7版

  • 作者: Ian Griffiths
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2013/11/29
  • メディア: 大型本


(3)関連書籍
 C#4.0はこちら。
プログラミングC# 第6版

プログラミングC# 第6版

  • 作者: Ian Griffiths
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2011/11/29
  • メディア: 大型本

[SQLServer]sqlcmdコマンドの表示桁数の指定 [SQLServer Tips]

(1)はじめに
 sqlcmdコマンドで、
 SELECTステートメントを実行した時、
 行の折り返しで、結果が見づらくなることがあります。

 OracleのLINESIZEに相当する設定が、
 SQLServerにもないか調べてみました。

 普段は、Management Studio等のGUIツールを使うので、
 たまに使うときに備えて、備忘録として載せておきます。

(2)コマンド
 [前提]
   SQLServer2005以降 (2000以前はosqlを使用します。)
 [コマンド]
  sqlcmdコマンドの実行時に、オプションで指定します。(-w [表示桁数])
  例
   ・接続先:(local)\SQLEXPRESS
   ・接続方法:SQLServer認証
   ・ユーザ:sa 、パスワード:pass
   ・表示桁数:1000
                   
コマンド
sqlcmd -S (local)\SQLEXPRESS -U sa- P pass -w 1000

 [補足]
   sqlcmdで表示桁数を増やしても、
   コマンドプロンプトのウィンドウ幅が狭いと、
   行を折り返してしまいます。
   事前にコマンドプロンプトのプロパティで、
   十分な幅を設定する必要があります。
    (1)「プログラム名を指定して実行」
    (2)「cmd」を実行
    (3)ウィンドウの「プロパティ」
    (4)「レイアウト」タブを選択
    (5)「画面バッファのサイズ」の「幅」を変更。

[雑記]冬の風物詩 [雑記]

雪が積もるくらいに降ると、毎年誰かが作ってくれます[雪]
見かけたので、思わず写メに収めてしまいました[わーい(嬉しい顔)]
雪だるま20140210.jpg

[雑記]CD-DVDアイコンが消えた [雑記]

WinCDEmuで仮想CDドライブを開こうとしたら、
なぜか「コンピュータ」のドライブ一覧に仮想ドライブのアイコンが追加されない。

WinCDEmuのソフト的な問題かなと思って、
最新バージョンをダウンロードして再インストールしたけど、状況は変わらず。。。

再インストールすると、
「インストールを正常に完了できませんでした」の
ポップアップが表示されたので、
デバイスマネージャをみると、WinCDEmuとCD-DVDドライブのアイコンに「!」が。

プロパティを見ると、
『レジストリ内の構成情報が不完全であるか、
または壊れているためこのハードウェア デバイスを開始できません。 (コード 19)』
のエラーがありました。

どうやらWinCDEmuではなく、CD-DVDドライブ系でおかしくなっているようだ。

ぐぐってみると、同様の悩みをつづったブログがあり、
解決策も掲載されていたので、なんとか対応できました。

原因は、おそらくiTunesが関係しているとのこと。。。
前日にiTunesのアップデートが途中で失敗したので、
ひょっとしたら関係あるかも。。。

参考サイト
光学ドライブ(CD,DVD,BD)を認識しなくなった不具合の解決方法

[Review]デジカメ:Canon PowerShot A3500 ls [Hardware's Review]

(1)レビュー
 携帯のカメラの機能に乏しさを感じたので、
 デジカメを購入しました。

 デジカメの購入は10年以上ぶりなので、
 当時の製品と比べるとかなり性能はアップしていますが、
 単純に、画素数や記録枚数が増えただけではないようです。

 一番、目新しいと感じたのは、『写真の転送機能』です。

 従来のデジカメは、写真をパソコンに転送するには、
 デジカメとパソコンをケーブルで接続するか、
 メディアをデジカメから取り出してパソコンにセットする必要がありました。

 今回購入したデジカメは、Wi-Fiに対応しており、
 デジカメ側は、操作メニューで項目を選択するだけで、
 無線LAN経由でパソコンに転送することができます。

 また、Wi-Fiを利用することで、
 スマホへの転送や、2台のデジカメ間でのデータ交換も可能です。

 さらに、PictBridge(USB and Wireless LAN)に対応したプリンタであれば、
 デジカメから直接、プリンタに写真を印刷することができます。

(2)リンク
Canon デジタルカメラ PowerShot A3500 IS(パープル) 広角28mm 光学5倍ズーム PSA3500IS(PR)

Canon デジタルカメラ PowerShot A3500 IS(パープル) 広角28mm 光学5倍ズーム PSA3500IS(PR)

  • 出版社/メーカー: キヤノン
  • メディア: エレクトロニクス

[.NET]JSON.NET(.NET4以降)その1 [Programming .NET Tips]

[はじめに]
.NETJSONデータを扱う機会があったので、予習がてらに作ってみました。
 JSONの解析には、逆シリアライズを使用します。
 .NET3.5以降であれば、.NET標準のクラスライブラリでも実装できますが、
 逆シリアライズの結果を格納するクラスを、別途定義する必要があるので、
 もっとシンプルにできないか調べてみました。
 フリーのライブラリで『JSON.NET』を使うと、よりシンプルに実装できそうなので、
 サンプルを作ってみました。(.NET4で作成します。)
[JSON.NETについて]
・ダウンロード元
 下記サイトからダウンロードできます。
 http://json.codeplex.com/
・対象フレームワーク
 ・.NET 2.0
 ・.NET 3.5
 ・.NET 4
 ・Silverlight
 ・Windows Phone and Windows 8
・オープンソース
 ソースが公開されているので、
 ソリューションにプロジェクトに追加して、そのままビルドできます。
 プロジェクトファイルが、.NETのバージョン毎に用意されているので、
 対応するプロジェクトを追加します。
・言語
 C#で記述していますが、
 ライブラリの呼出しは、.NET言語であれば、C#以外でも可能です。

[ソース]
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace SerialSample
{
    class Program
    {
        static void Main(string[] args)
        {
            //前提条件
            //※参照設定に『Newtonsoft.Json.NET40』を追加

            //JSON文字列を作成
            var sb = new StringBuilder();
            sb.Append(@"{");
            sb.Append(@"  ""キー1"":""値1"",");
            sb.Append(@"  ""キー2"":""値2"",");
            sb.Append(@"  ""キー3"":");
            sb.Append(@"    {");
            sb.Append(@"      ""キー3_1"":""値3_1"",");
            sb.Append(@"      ""キー3_2"":""値3_2""");
            sb.Append(@"    },");
            sb.Append(@"  ""キー4"":");
            sb.Append(@"    [");
            sb.Append(@"      {");
            sb.Append(@"        ""キー4_1"":""値4_0_1"",");
            sb.Append(@"        ""キー4_2"":""値4_0_2""");
            sb.Append(@"      },");
            sb.Append(@"      {");
            sb.Append(@"        ""キー4_1"":""値4_1_1"",");
            sb.Append(@"        ""キー4_2"":""値4_1_2""");
            sb.Append(@"      }");
            sb.Append(@"    ],");
            sb.Append(@"  ""キー5"":");
            sb.Append(@"    [");
            sb.Append(@"      ""値5_0_1"",");
            sb.Append(@"      ""値5_0_2"",");
            sb.Append(@"      ""値5_0_3""");
            sb.Append(@"    ]");
            sb.Append(@"}");

            //JSON文字列を逆シリアル化
            var jobj = JsonConvert.DeserializeObject<JContainer>(sb.ToString());

            //結果を表示
            Console.WriteLine("キー1:{0}", jobj["キー1"].ToString());
            Console.WriteLine("キー2:{0}", jobj["キー2"].ToString());
            Console.WriteLine("キー3.キー3_1:{0}", jobj["キー3"]["キー3_1"].ToString());
            Console.WriteLine("キー3.キー3_2:{0}", jobj["キー3"]["キー3_2"].ToString());

            for (int i = 0; i < jobj["キー4"].Count(); i++) 
            {
                Console.WriteLine(
                    "キー4.[{0}].キー4_X_1:{1}",
                    i.ToString(),
                    jobj["キー4"][i]["キー4_1"].ToString());
                Console.WriteLine(
                    "キー4.[{0}].キー4_X_2:{1}",
                    i.ToString(),
                    jobj["キー4"][i]["キー4_2"].ToString());
            }

            for (int i = 0; i < jobj["キー5"].Count(); i++)
            {
                Console.WriteLine(
                    "キー5.[{0}]:{1}",
                    i.ToString(),
                    jobj["キー5"][i].ToString());
            }

            Console.ReadLine();

            //出力結果
            // キー1:値1
            // キー2:値2
            // キー3.キー3_1:値3_1
            // キー3.キー3_2:値3_2
            // キー4.[0].キー4_X_1:値4_0_1
            // キー4.[0].キー4_X_2:値4_0_2
            // キー4.[1].キー4_X_1:値4_1_1
            // キー4.[1].キー4_X_2:値4_1_2
            // キー5.[0]:値5_0_1
            // キー5.[1]:値5_0_2
            // キー5.[2]:値5_0_3
        }
    }
}
[C#]JSON.NET

タグ:.net JSON JSON.NET

[VBA]文字コードを指定してファイルにテキストを出力するクラスモジュール [Programming ExcelVBA]

[はじめに]
・最近、JSONファイルを扱うことがあり、
 UTF-8でテキストファイルを作成する機会があったので、
 作ってみました。
 備忘録としてサンプルを掲載します。
 クラスモジュールで定義することを前提としています。

[ソース]
''' <summary>
''' クラスモジュール名:TextWriterWithCharaSet
''' 文字コードを指定してファイルにテキストを出力するクラス
''' </summary>
''' <remarks></remarks>
Option Explicit

'ファイルのバッファサイズ
Private Const BUF_SIZE As Integer = 1024

'文字コード(デフォルト:UTF-8)
Public CharCode As String

'出力ディレクトリ
Public TargetDirectory As String

'出力ファイル名
Public TargetFileName As String

'FileSystemObject
Private objFs As Object

'ADODB.Stream
Private objStream As Object

'ADODB.StreamのSaveOptionsEnum
Private Enum SaveOptionsEnum
    'ファイルが存在しない場合にのみ作成します。
    '存在する場合はエラー。(既定値)
    adSaveCreateNotExist = 1
    'ファイルが存在する場合は、
    'ファイルを上書きします。
    adSaveCreateOverWrite = 2
End Enum

'出力テキストのコレクション
Private colTraget As New Collection

''' <summary>
''' Initializeイベント(コンストラクタ)
''' </summary>
''' <remarks></remarks>
Private Sub Class_Initialize()
    Set objStream = CreateObject("ADODB.Stream")
    Set objFs = CreateObject("Scripting.FileSystemObject")
    
    Me.CharCode = "UTF-8"
    
    Call ClearBuffer
End Sub

''' <summary>
''' Terminateイベント(デストラクタ)
''' </summary>
''' <remarks></remarks>
Private Sub Class_Terminate()
     
    Call Flush
    
    Set objStream = Nothing
    Set objFs = Nothing

End Sub

''' <summary>
''' テキストを出力する。
''' </summary>
''' <param name="strText">出力テキスト</param>
''' <param name="useBuffer">バッファの利用有無(※省略時はTrue)</param>
''' <remarks></remarks>
Public Sub WriteText( _
    ByVal strText As String, _
    Optional ByVal useBuffer As Boolean = True)
    
    colTraget.Add strText
    
    If useBuffer = True Then
        'バッファ有効の場合は、
        '一旦、バッファに溜めておき、
        '特定サイズを越えてからファイル出力する。
        If colTraget.Count > BUF_SIZE Then
            Me.Flush
        End If
    Else
        'バッファ無効の場合は、ファイルに出力
        Me.Flush
    End If

End Sub

''' <summary>
''' バッファーの内容をテキストに出力する。
''' </summary>
''' <remarks></remarks>
Public Sub Flush()
     
    Dim i As Long
    Dim targetFilePath As String
    
    On Error GoTo LBL_ERR:
     
    'ファイルパスを生成
    targetFilePath = objFs.BuildPath( _
        GetTargetDirectory(), TargetFileName)
    
    With objStream
        .Charset = Me.CharCode
        .Open
        
        'ファイルが既に存在する場合は、全テキストを読込む。
        '※追記書込みができないので、
        '  既存テキストをメモリ上に取込んでから上書きする。
        If objFs.FileExists(targetFilePath) Then
            .LoadFromFile targetFilePath
            .Position = .Size
        End If

        For i = 1 To colTraget.Count
            .WriteText colTraget(i)
        Next
        
        .SaveToFile targetFilePath, _
            SaveOptionsEnum.adSaveCreateOverWrite
        
        .Close
    
    End With
     
    Call ClearBuffer
    
    Exit Sub
LBL_ERR:
    
     Call ClearBuffer
     
     Err.Raise _
         Number:=Err.Number, _
         Description:="テキストの出力に失敗しました。" & _
         Err.Description

End Sub

''' <summary>
''' 出力ディレクトリを取得する。
''' </summary>
''' <returns>出力ディレクトリ(デフォルト:ThisWorkbook.path)</returns>
''' <remarks></remarks>
Private Function GetTargetDirectory() As String
     If Me.TargetDirectory = "" Then
         GetTargetDirectory = ThisWorkbook.path
         Exit Function
     End If

     GetTargetDirectory = Me.TargetDirectory

End Function

''' <summary>
''' 出力ファイルパスを設定する。
''' </summary>
''' <param name="targetFilePath">出力ファイルパス</param>
''' <remarks></remarks>
Public Sub SetFilePath(ByVal targetFilePath As String)
     
    With objFs
        Me.TargetDirectory = _
            .GetParentFolderName(targetFilePath)
        Me.TargetFileName = _
            objFs.GetFileName(targetFilePath)
    End With

End Sub

''' <summary>
''' バッファーをクリアする。
''' </summary>
''' <remarks></remarks>
Public Sub ClearBuffer()
     Dim i As Long
     
     For i = colTraget.Count To 1 Step -1
         colTraget.Remove i
     Next

End Sub

[VBA]文字コードを指定してファイルにテキストを出力するクラスモジュール
[ソース]
Private Sub CommandButton1_Click()

    Dim rw As New TextWriterWithCharaSet
    
    rw.CharCode = "UTF-8"
    rw.SetFilePath "C:\aaa\hogehoge.txt"
    rw.WriteText "ABCDE"True
    
    Set rw = Nothing
    
End Sub
[VBA]使用例

[Review]C言語入門書の次に読む本 [Book's Review (Develop)]

(1)レビュー
 C言語の中級者向けに書かれた書籍です。
 他の書籍では、入門書レベルの内容が大半で、
 中級以上の人が読む専門書は少ないのが現状です。
 入門レベルを卒業する為には、
 洗練されたソースを読んだり、スキルの高い人から学ぶなど、
 実践を通して経験するしかありません。
 本書は、他言語にもある基礎的な内容(条件分岐、ループ、関数など)は省略し、
 中級以上のC言語プログラマー向けにまとめています。
主な内容
 ・分割コンパイル
 ・ヘッダ作成
 ・ライブラリの作成
 ・バグを発生させないコーディング
 ・意外に知られていないノウハウも… など

 意外に知られていないこととして、
 例えば、constキーワードがあります。
 【constキーワード】
  (1)『円周率など、不変の値を利用する時に、
     値が変化しないことを保証することができる。』
  (2)『ポインタの指す先の値が変化しないことを保証する。』

 (1)は他の言語でもよく使われるので、よく知られていますが、
 (2)は入門書レベルでは解説していないことが多いです。
 printfの第1引数『const char*』型の『const』は、(2)の意味になります。

 C言語の開発経験はほとんどないですが、
 他言語(.NET、Java、VBなど)の知識だけでも、わかりやすい内容だと思います。

(2)リンク
C言語 入門書の次に読む本 [改訂新版] (プログラミングの教科書)

C言語 入門書の次に読む本 [改訂新版] (プログラミングの教科書)

  • 作者: 坂井 弘亮
  • 出版社/メーカー: 技術評論社
  • 発売日: 2011/04/08
  • メディア: 単行本(ソフトカバー)

[Review]C言語ポインタが理解できない理由 [Book's Review (Develop)]

(1)レビュー
 C言語の中級者向けに書かれた書籍です。
 他の入門書では、基本的な文法からの解説が多く、
 C言語の肝となるポインタの解説がどうしても希薄になりがちです。
 本書は、他言語にもある基礎的な内容(条件分岐、ループ、関数など)は省略し、
 ポインタに絞っているので、集中して習得できます。
 
 ポインタと配列の関係、ポインタのポインタ、
 ポインタ変数を関数に渡した時の挙動、関数のポインタなど、
 メモリ上の内容を図で示しながらわかりやすく解説しています。

 C言語の開発経験はなくても、
 他言語(.NET、Java、VBなど)の知識だけでも、わかりやすい内容だと思います。
こんな方にオススメ!
・他言語の開発経験があって、これからC言語を学ぶ方
  ・基本的な構造化プログラムがわかる。
  ・変数の値型/参照型、関数への値渡し/参照渡しの概念がわかる。
・C言語を習得しようとしたが、ポインタで挫折した方
・ポインタについて更に理解を深めたい方

(2)リンク
C言語 ポインタが理解できない理由 [改訂新版] (プログラミングの教科書)

C言語 ポインタが理解できない理由 [改訂新版] (プログラミングの教科書)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2011/04/08
  • メディア: 単行本(ソフトカバー)

前の30件 | -