はてなダイアリのやり方
記事を書くとき
①左上にある▼(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