はてなダイアリのやり方

記事を書くとき

①左上にある▼(Hatena Blogの右横)を押し「diary」を選択

②自身のアカウントから▼を押し「記事を書く」を押す。

③編集タブを「markdown」にする

 

記事を削除するとき

自身のアカウントから▼を押し「記事の管理」を押す。

対象記事にチェックを入れて「削除」をクリック

 

コンパイル自動化メモ

'' ' 関数名: cmpl ' '' Function cmpl()

Dim ObjFs                                                   '* ファイルシステムオブジェクト                 *'
Dim ObjTxt                                                  '* テキストオブジェクト                     *'
Dim RgExp                                                   '* 正規表現置換オブジェクト               *'
Dim McrPth                                                  '* macroフォルダまでの絶対パス         *'
Dim MkFlPth                                                 '* *cmpl*までの絶対パス           *'
Dim LdPth                                                   '* *総合*フォルダまでの絶対パス          *'
Dim LstYenPos                                               '* パス末尾の\位置                    *'
Dim YenNum                                                  '* パス内の\個数                       *'
Dim RplcCnt                                                 '* *cmpl*特定テーブルカウンタ          *'
Dim UsrNm                                                   '* ユーザアカウント名                       *'
Dim cmd                                                     '* コマンド                          *'

'************************************************************************************************'
'* Step1: 前準備                                                                               *'
'************************************************************************************************'
UsrNm = CreateObject("WScript.Network").UserName            '* ユーザアカウント名取得                 *'
McrPth =        "C:\Users\" + UsrNm _
            +   "\AppData\Roaming\sakura\macro\"            '* macroフォルダまでの絶対パス取得       *'
Set ObjFs = CreateObject("Scripting.FileSystemObject")      '* ファイルシステムオブジェクト作成               *'
Set ObjTxt = ObjFs.OpenTextFile(McrPth +"*共通*.vbs")         '* テキストオブジェクト作成                   *'
Set RgExp = New RegExp                                      '* 置換オブジェクト作成                 *'
ExecuteGlobal ObjTxt.ReadAll()                              '* *共通*.vbsをインクルード                 *'
ObjTxt.Close                                                '* *共通*.vbsを閉じる                 *'

'************************************************************************************************'
'* Step2: *cmpl*までの絶対パス取得                                                            *'
'************************************************************************************************'
MkFlPth = GetFilename                                       '* アクティブファイルまでの絶対パス取得     *'

for RplcCnt = 0 to UBound(MKTbl) step 2                     '* **cmpl**パス探索                  *'
    RgExp.Pattern = MKTbl(RplcCnt)                          '* 置換パターンセット                       *'

    If RgExp.Test(MkFlPth) Then                             '* 置換パターンとマッチした時               *'
        MkFlPth = RgExp.Replace _
                    (MkFlPth, MKTbl(RplcCnt+ 1))            '* **cmpl**までの絶対パス取得       *'
        Exit For                                            '* Step2処理終了                    *'
    End If
next

'************************************************************************************************'
'* Step3: *cmplL*フォルダまでの絶対パス取得                                                            *'
'************************************************************************************************'
LdPth = GetFilename                                         '* アクティブファイルまでの絶対パス取得     *'

Do                                                          '* *cmplL*フォルダ発見するまでパス末尾削除    *'
    LstYenPos = InstrRev(LdPth, "\")                        '* パス末尾の\位置を取得               *'
    LdPth = Left(LdPth, LstYenPos - 1)                      '* パス末尾削除                        *'
    YenNum = Len(LdPth) - Len(Replace(LdPth, "\", ""))      '* パス内の\個数取得                 *'

    If ObjFs.FolderExists(LdPth + "\*cmplL*") = True Then       '* *総合*フォルダが見つかった場合      *'
        LdPth = LdPth + "\*cmplL*"                              '* *総合*フォルダまでの絶対パス取得        *'
        Exit Do                                             '* Step3処理終了                    *'
    End If

    If YenNum < 1 Then                                      '* \の個数が5個未満になった場合        *'
        MsgBox "*cmplL*フォルダが見つかりませんでした"           '* エラー出力                          *'
        Exit Function                                       '* 関数終了                         *'
    End If
Loop

'************************************************************************************************'
'* Step4: オブジェクト参照解除                                                                    *'
'************************************************************************************************'
Set ObjFs = Nothing                                         '* ファイルシステムオブジェクトへの参照解除       *'
Set ObjTxt = Nothing                                        '* テキストオブジェクトへの参照解除           *'
Set RgExp = Nothing                                         '* テキストオブジェクトへの参照解除           *'

'************************************************************************************************'
'* Step5: コマンド実行                                                                           *'
'************************************************************************************************'
cmd =       "echo make in " + MkFlPth _
        +   "&cd " + MkFlPth _
        +   "&ipconfig" _
        +   "&" + McrPth +"mkInTskCnplt.bat" _
        +   "&echo make in " + LdPth _
        +   "&cd " + LdPth _
        +   "&ipconfig" _
        +   "&" + McrPth +"mkInLdCnplt.bat" _
        +   "&exit"
Editor.ExecCommand cmd                                      '* コマンド実行                        *'

End Function

cmpl

チェック

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 関数名 :clrBracket '
' 内容 :括弧を階層ごとに配色 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub clrBracket()
Const LAYER_MAX As Integer = 11 ' 許容階層数(0始まりの為12階層となる) '
Dim Clr As Variant ' 階層色 '
Dim Nowlyr As Integer ' 現在の階層 '
Dim Rng As Range ' 指定セル '
Dim Data As String ' セル内データ '
Dim Datalen As Integer ' セル内データの文字数 '
Dim Bpstk(LAYER_MAX) As Integer ' 左括弧位置記憶スタック '
Dim Stpos As Integer ' セル内データの取得開始位置 '

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Stage 1.準備 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Clr = Array( "&H00FFFF", "&H50B000", "&HF0B000", _
"&HC07000", "&H602000", "&HA03070", _
"&H0000C0", "&H0000FF", "&H00C0FF", _
"&H97BDC4", "&H808080", "&H404040") ' 階層毎の配色設定 '
Nowlyr = -1 ' 現在の階層初期化 '
Set Rng = Range("F7") ' 指定セル設定 '
Data = Rng.Value ' セル内データ取得 '
Datalen = Len(Data) ' セル内データの文字数取得 '
Application.ScreenUpdating = False ' 処理速度を上げる為描画更新無効 '
Rng.Font.Bold = True ' 太字に変更 '
Rng.Font.Color = vbBlack ' 文字色を黒色に変更 '

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Stage 2.括弧の階層を解析 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Stpos = 1 To Datalen ' セル内データの文字数分ループ"
Application.StatusBar = _
Stpos & "/" & Datalen & "文字目を解析しています..." ' 進捗状況表示 '
Select Case Mid(Data, Stpos, 1) ' 1文字づつ取得し解析する '
Case "(" ' 左括弧の場合 '
If Nowlyr >= LAYER_MAX Then ' 左括弧が13階層以上続いた場合AL出力 '
MsgBox "左括弧が" & LAYER_MAX + 2 & _
"回以上続いています"
Application.StatusBar = False ' 進捗状況表示終了 '
Exit Sub
End If
Nowlyr = Nowlyr + 1 ' 現在の階層を更新 '
Bpstk(Nowlyr) = Stpos ' 左括弧位置記憶スタックに現在位置をセット '
Rng.Characters(Stpos, 1) _
.Font.Color = Clr(Nowlyr) ' 左括弧を現在の階層色に配色 '

Case ")" ' 右括弧の場合 '
If Nowlyr <= -1 Then ' 右括弧の対となる左括弧がない場合AL出力'
MsgBox "右括弧の対がありません"
Application.StatusBar = False ' 進捗状況表示終了 '
Exit Sub
End If
Rng.Characters(Stpos, 1) _
.Font.Color = Clr(Nowlyr) ' 右括弧を現在の階層色に配色 '
Nowlyr = Nowlyr - 1 ' 現在の階層を更新 '

Case Else ' 括弧以外の場合処理なし '

End Select
DoEvents ' フリーズ防止の為定期的にOSに制御を戻す '
Next

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Stage 3.終了処理 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Application.StatusBar = False ' 進捗状況表示終了 '
End Sub

grep整形

以下を方法とする

var tasktbl = new Array("","","*"); / ディレテーブル /

// / 関数名: timDATA / / 目的: grep結果作成支援 / / 2018-02-01 / // function trimDATA() { var data; / ファイル内のデータ / var task; / ディレ名 / var taskcnt = 0; / ディレ用カウンタ / var movecnt = 0; / カーソル移動用カウンタ / var linecnt = 0; / ライン用カウンタ / var linemax = 0; / ライン総数 /

/********************************************************************************************/
/* stage 1. 連続実行防止                                                                  */
/* 目的:    マクロ実行後に再度実行することを防止する                                            */
/* 方法:    『<ディレ名>\』が行頭にある場合連続で実行したと判断しメッセージ出力                   */
/********************************************************************************************/
Editor.GoFileTop();                                     /* カーソルをファイルの先頭に移動            */
data = Editor.GetLineStr(0);                            /* カーソルがある行の文字列を取得        */
for(taskcnt = 0;
    taskcnt < tasktbl.length; taskcnt++)                /* ディレ名が一致するまでループ         */
{
    task = tasktbl[taskcnt] + '\\';                     /* 『<ディレ名>\』に変更                */
    if(data.indexOf(task) === 0)                        /* 『<ディレ名>\』が行頭にあった場合  */
    {
        Editor.MessageBox("実行済です");               /* メッセージ出力                     */
        return;
    }
}

/********************************************************************************************/
/* stage 2. EOFを文字列がある最終行に移動                                                  */
/* 目的:    ファイル内の全行数を正確に把握する為                                              */
/* 方法:    文字列のない行にEOFがあった場合バックスペースで文字列がある最終行にEOFを移動させる  */
/********************************************************************************************/
Editor.GoFileEnd();                                     /* カーソルを最終行に移動                */
data = Editor.GetLineStr(0);                            /* カーソルがある行の文字列を取得        */
if(data.length <= 0)                                    /* 最終行に文字がない場合            */
{
    Editor.DeleteBack();                                /* バックスペース                      */
}

/********************************************************************************************/
/* stage 3. 『[UTF8]: 』を削除                                                             */
/* 目的:    不要な為                                                                        */
/* 方法:    『[UTF8]: 』の文字列を全削除                                                  */
/********************************************************************************************/
Editor.ReplaceAll("\\[SJIS\\]\\: ", '', 14);            /* 『[UTF8]: 』を全削除               */

/********************************************************************************************/
/* stage 4. 『\jis\』のある行を削除                                                    */
/* 目的:    不要な為                                                                        */
/* 方法:    『\jis\』の文字列がある行を全削除                                         */
/********************************************************************************************/
linemax = Editor.GetLineCount(0);                       /* ライン総数を取得                 */
Editor.GoFileTop();                                     /* カーソルをファイルの先頭に移動            */
for(linecnt = 0; linecnt < linemax; linecnt++)          /* 全行数ループ                        */
{
    data = Editor.GetLineStr(0);                        /* カーソルがある行の文字列を取得        */
    if(data.indexOf("\\jis\\") != -1)               /* 『\jis\』があった場合        */
    {
        Editor.DeleteLine();                            /* カーソルのある行を削除                */
    }
    else                                                /* 『\jis\』がない場合           */
    {
        Editor.Down();                                  /* カーソルを1行下へ移動              */
    }
}

/********************************************************************************************/
/* stage 5. 空白間隔の縮小                                                                   */
/* 目的:    文字列の長さをに縮小させる                                                     */
/* 方法:    全タブを半角スペースに置換後2つ連続である半角スペースを存在させない                   */
/********************************************************************************************/
Editor.ReplaceAll("\\t", ' ', 14);                      /* 全タブを半角スペースに置換            */
Editor.SelectAll();                                     /* ファイル内文字列全選択                */
data = Editor.GetSelectedString(0);                     /* 全文字列取得                       */
Editor.CancelMode();                                    /* 選択解除                         */  
while(data.indexOf("  ") != -1)                         /* 2つ連続で半角スペースがある間       */
{
    Editor.ReplaceAll("  ", ' ', 14);                   /* 1つの半角スペースに置換                */
    Editor.SelectAll();                                 /* ファイル内文字列全選択                */
    data = Editor.GetSelectedString(0);                 /* ファイル内の全文字列取得             */
    Editor.CancelMode();                                /* 選択解除                         */
}

/********************************************************************************************/
/* stage 6. パス縮小                                                                         */
/* 目的:    ディレ名より左にあるパスは不要の為削除                                             */
/* 方法:    1行目のパスにあるディレ名までカーソルを移動し矩形選択で最終行先頭に移動し削除           */
/********************************************************************************************/
linemax = Editor.GetLineCount(0);                       /* ライン総数を取得                 */
Editor.GoFileTop();                                     /* カーソルをファイルの先頭に移動            */
data = Editor.GetLineStr(1);                            /* 先頭行の文字列取得              */
for(taskcnt = 0;
    taskcnt < task.length; taskcnt++)                   /* ディレ名が一致するまでループ         */
{
    task = '\\' + tasktbl[taskcnt] + '\\';              /* 『\<ディレ名>\』に変更               */
    if(data.indexOf(task) != -1)                        /* 『\<ディレ名>\』が一致した場合       */
    {
        for(movecnt = 0;
            movecnt <= data.indexOf(task);
            movecnt++)
        {
            Editor.Right_Sel();                         /* カーソルを『<ディレ名>\』の位置まで移動 */
        }
        Editor.BeginBoxSelect();                        /* 矩形選択モード開始                   */
        Editor.Jump(linemax, 0);                        /* 最終行の先頭まで移動               */
        Editor.Delete();                                /* ディレより前のパス全削除               */
        Editor.CancelMode();                            /* 選択解除                         */  
        break;
    }
}

/********************************************************************************************/
/* stage 7. パスと内容の分割                                                                 */
/* 目的:    Excelに張る際にパスと内容のセルを分ける為                                          */
/* 方法:    最初に発見する半角スペースはパスと内容の間にあることを利用し半角スペースをタブに置換  */
/********************************************************************************************/
Editor.GoFileTop();                                     /* カーソルをファイルの先頭に移動            */
linemax = Editor.GetLineCount(0);                       /* ライン総数を取得                 */
for(linecnt = 0; linecnt < linemax; linecnt++)          /* 全行数ループ                        */
{
    Editor.GoLineTop(0);                                /* カーソルを行頭に移動                   */
    Editor.SearchNext(' ', 18);                         /* 発見した半角スペースを選択状態へ  */
    Editor.InsText('\t');                               /* 半角スペースをタブに置換               */
    Editor.CancelMode();                                /* 選択解除                         */  
    Editor.Down();                                      /* カーソルを1行下へ移動              */
}

/********************************************************************************************/
/* stage 8. 終了処理                                                                        */
/* 目的:    ファイルの先頭への移動をマクロ終了の合図とする                                           */
/* 方法:    カーソルをファイルの先頭に移動                                                           */
/********************************************************************************************/
Editor.GoFileTop();                                     /* カーソルをファイルの先頭に移動            */

}

trimDATA();

unixのdiff

dlname_arr=("aaa_Before" "aaa_After" "bbb_Before" "bbb_After" "aaa_diff" "bbb_diff" "diff_diff")

#ファイル数の一致確認且つ1個以上の確認
aaa_Before_flnum=`find ${dlname_arr[0]} -type f -name "*.[ch]" | wc -l`
aaa_After_flnum=`find ${dlname_arr[1]} -type f -name "*.[ch]" | wc -l`
bbb_Before_flnum=`find ${dlname_arr[2]} -type f -name "*.[ch]" | wc -l`
bbb_After_flnum=`find ${dlname_arr[3]} -type f -name "*.[ch]" | wc -l`
if test $aaa_Before_flnum -eq 0\
-a $aaa_Before_flnum -ne $aaa_After_flnum\
-a $aaa_Before_flnum -ne $bbb_Before_flnum\
-a $aaa_Before_flnum -ne $bbb_After_flnum ; then
echo "ファイル数が0個または各ディレクトリのファイル数が一致していません"
exit
fi

#ファイル名の一致確認
for cnt in `seq 1 $flnum`
do
aaa_Before_flname=`find ${dlname_arr[0]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
aaa_After_flname=`find ${dlname_arr[1]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
bbb_Before_flname=`find ${dlname_arr[2]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
bbb_After_flname=`find ${dlname_arr[3]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`

if test $aaa_Before_flname != $aaa_After_flname\
-o $aaa_Before_flname != $bbb_Before_flname\
-o $aaa_Before_flname != $bbb_After_flname ; then
echo "各ディレクトリのファイル名が一致しません"
exit
fi
done

#diff関連の空ディレクトリ作成
for cnt in `seq 4 6`
do
if [ -e ${dlname_arr[$cnt]} ] ; then
rm -rf ${dlname_arr[$cnt]}
fi
mkdir ${dlname_arr[$cnt]}
done

#比較結果ファイル作成
flnum=`find ${dlname_arr[0]} -type f -name "*.[ch]" | wc -l`
for cnt in `seq 1 $flnum`
do
flname=`find ${dlname_arr[0]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
diff ${dlname_arr[0]}"/"$flname ${dlname_arr[1]}"/"$flname > ${dlname_arr[4]}"/"$flname
diff ${dlname_arr[2]}"/"$flname ${dlname_arr[3]}"/"$flname > ${dlname_arr[5]}"/"$flname
diff ${dlname_arr[4]}"/"$flname ${dlname_arr[5]}"/"$flname > ${dlname_arr[6]}"/"$flname
done