moeをgithub pagesに移行しました。
それにあわせて色々と内容を見直してます。以前よりも導入が容易になっているので、メモの方法論に興味がある方はどうぞ!なにかあれば、ここのコメント欄に書くか、twitter、Mail等で連絡して下さい。
私が運営している他のgithub pagesについてもよろしく!
moeをgithub pagesに移行しました。
それにあわせて色々と内容を見直してます。以前よりも導入が容易になっているので、メモの方法論に興味がある方はどうぞ!なにかあれば、ここのコメント欄に書くか、twitter、Mail等で連絡して下さい。
私が運営している他のgithub pagesについてもよろしく!
最近、moeのHPをgoogleSiteからGitHub Pagesに移行しようと画策しており、その過程でスクリプトを見直している。 今までは、howmファイルのファイル名と一行目を対応させたコメントファイルを作成していたが、これを各エントリのコメントを変更するだけにする。コメントファイルは、XC_cwrtで自動作成すればいい。これなら、スクリプトをLOADEVENTに登録しても、以前のように無限ループに陥る心配をする必要がなくなるわけだ(多分)。
以下を編集して取込み。
XC_cwrt = 2 ; コメントファイル作成は 0:手動 1:確認有 2:自動
以下をScriptフォルダに保存。
title2comment.js
//!*script
// コメントのないhowmファイルの一行目をコメントに
for (var a = PPx.Entry.AllEntry; !a.atEnd(); a.moveNext() ){
// フォルダを除外
if (a.Attributes & 16){
continue;
// .howmかつコメントがないファイルへの処理
} else if (a.Name.match(/.howm$/i) && a.Comment.match(/^$/i)){
var dir = PPx.Extract('%1');
var entryName = a.Name;
var f = dir + "\\" + entryName;
// 一行目を読み込む。文字化けする場合は"sjis"を"utf-8"に
var s = readFile(f, "sjis");
// 2~40字を切り取ったものをコメントに
a.Comment = s.slice( 2,40 );
}
}
// ファイルの一行目を読み込む関数
function readFile(fname, charset) {
if (charset == undefined) {
charset = "_autodetect_all";
}
var adTypeBinary = 1, adTypeText = 2;
var adReadAll = -1, adReadLine = -2;
var s = new ActiveXObject("ADODB.Stream");
s.Type = adTypeText;
s.charset = charset;
s.Open();
s.LoadFromFile(fname);
var text = s.ReadText(adReadLine);
s.Close();
return text;
}
howmファイルを入れているフォルダで以下を実行。
*diroption -thisbranch cmd:"*script %0\Script\title2comment.js"
僕はメモをテキスト形式で保存し、活用している。 今まではPC間のメモの同期にDropBoxを使っていたが、それをラズパイのGitサーバーに切り替える。 GitHubで執筆環境を整える方法がネットにあったりするが、個人的なメモなんかは、ローカルに閉じた環境で管理できたほうがいい気がするのだ。
WindowsからラズパイにSSHでアクセスするために、公開鍵と秘密鍵を作る。Windowsで以下のコマンドを実行。
ssh-keygen -t ed25519
これでC:\Users[ユーザー名].sshというディレクトリができ、そのなかに公開鍵と秘密鍵ができる。
ラズパイに入っていたmicroSDカードを上書きして利用する場合、パーティションの分割が原因でOSのインストールがうまくいかないことがある。それへの対処方法についても一応メモ。
Raspberry PiのmicroSDをwindows10環境で初期化する手順 - Qiita
microSDカードをWindowsに差し込んだあと、Raspberry Pi Imagerを起動し、microSDカードを初期化する。 次にRaspberry Pi OS Lite(32bit)をインストールする。右下の歯車をクリックし、事前に必要な設定をしておく。
ラズパイにmicroSDカードを差して起動、アクセスできるまでしばし待つ。起動してるか気になる場合は、Advanced IP Scannerでチェック。 起動したら、Windowsで以下のコマンドを実行。
ssh tukasa@nas.local
Advanced IP Scannerで取得したIPアドレスで接続してもいい。
ssh tukasa@192.168.xx.xx
アクセスできたら、以下のコマンドを実行。
tukasa@nas:~ $ sudo apt-get update tukasa@nas:~ $ sudo apt-get upgrade tukasa@nas:~ $ sudo apt-get install -y git
これでgitがインストールできた。
ついでラズパイにリモートリポジトリを作成する。
tukasa@nas:~ $ mkdir ~/memo.git tukasa@nas:~ $ cd ~/memo.git tukasa@nas:~/memo.git $ git init --bare
Git for Windowsをインストール。 ユーザー名とemailアドレスを設定する。
git config --global user.email "user@example.com" git config --global user.name "user name"
リモートリポジトリをクローンする。適当なディレクトリに行って以下を実行。
git clone tukasa@nas.local:/home/tukasa/memo.git
公開鍵を登録していないPCを使う場合、公開鍵の登録が必要になる。
ssh-keygen -t ed25519
で鍵を作成したあと、既に公開鍵を登録済みのWindowsを経由して、公開鍵を送るのが簡単そうだ。
scp id_ed25519.pub tukasa@nas.local: ssh tukasa@nas.local tukasa@nas:~ $ cat id_ed25519.pub >> .ssh/authorized_keys tukasa@nas:~ $ rm id_ed25519.pub
以前、マークファイルの内容をクリップボードにコピーするclipmarkfile.jsを作ったのだが、s-jisしか読み込めなかった。そこでutf-8版を作成。
_autodetect_allを使えば自動判別するらしいのだが、僕の環境だとうまく判別してくれないので、s-jis版とutf-8版に分けて運用したいと思う。
climparkfileU.js
//!*script
// マークファイルの内容をutf-8で読み込みクリップボードに保存
if (PPx.EntryFirstMark == 0){
var f = PPx.Extract("%FCD");
var s = readFile(f, "utf-8");
PPx.Clipboard = s;
} else {
strLine = ""
while(true){
var dir = PPx.Extract('%1');
var entryName = PPx.EntryName;
var f = dir + "\\" + entryName;
var s = readFile(f, "utf-8");
strLine=strLine+s+"\n";
if(PPx.EntryNextMark == 0) break;
}
PPx.Clipboard = strLine
}
// ファイルの読込み
function readFile(fname, charset) {
if (charset == undefined) {
charset = "_autodetect_all";
}
var adTypeBinary = 1, adTypeText = 2;
var adReadAll = -1, adReadLine = -2;
var s = new ActiveXObject("ADODB.Stream");
s.Type = adTypeText;
s.charset = charset;
s.Open();
s.LoadFromFile(fname);
var text = s.ReadText(adReadAll);
s.Close();
return text;
}
ファイルのアプリケーション関連付けを、サブ窓でできるようにする。
KC_main = {
\ENTER ,*ifmatch "o:e,a:d" %: %K"@\ENTER" %: *stop
*ifmatch !0,0%*getcust(E_execList:%T) %: %ME_execList %FCD %: *stop
*setcust _User:sorce_id=%n %: *setcust _User:sorce_wh=%NC
*ppc -r -bootid:x -single -k %(*fitwindow %su"sorce_wh",%NC,20 %: *mapkey use,K_subwin %: *linemessage EXEファイルを選択してください %: *string i,temp_exec=%%Ob %%FCD %%*extract(%su"sorce_id""%%%%#FCD") %%: %%K"@Q" %%: *setcust E_execList:%%*extract(%su"sorce_id""%%%%FT"),%%FCD%)
\X ,*setcust _User:sorce_id=%n %: *setcust _User:sorce_wh=%NC
*ppc -r -bootid:x -single -k *jumppath %ME_execList -entry %(%: *fitwindow %su"sorce_wh",%NC,20 %: *mapkey use,K_subwin %: *linemessage EXEファイルを選択してください %: *string i,temp_exec=%%Ob %%FCD %%*extract(%su"sorce_id""%%%%#FCD") %%: %%K"@Q" %%: *setcust E_execList:%%*extract(%su"sorce_id""%%%%FT"),%%FCD%)
}
K_subwin = {
\ENTER ,*execute ,%'ppcx_cmd'
}
shift+Enterを押した時、カーソル下ファイルの拡張子がアプリケーションに関連付けられてるか否かによって以下のように分岐。
Shift+Xを押した時は、登録、未登録に関わらず別窓が開く。
現在のカスタマイズを一時的に初期化して、特定のカスタマイズを試したい場合がある。 このとき、以下の過程をたどることになる。
毎回やるのは割と面倒なので、この手順を省略したい。
PPXDEF.CFGの末尾に以下を追加。PPxディレクトリにPPXDEF.CFGがあると、初期化時にそれによる初期カスタマイズが行われる。
-|M_cust =
M_cust = {
カスタマイザ(&C) = %K"@CUSTOMIZE"
編集して取込(&E) = %OB *PPCUST /edit
-- =
取り込み = %OB *PPCUST CS %FCD
追加 = %OB *customize @%FCD
-- =
PPX.CFGを取り込み = %OB *PPCUST CS %0\PPX.CFG
PPX.CFGに書き出し = %OB *PPCUST CD %0\PPX.CFG
指定書き出し = %OB *PPCUST CD %{%1\PPX-%*nowdatetime(y-N-D)%|.CFG%}
-- =
初期化(&I) = *PPCUST CINIT
設定を一時保存して初期化 = %OBs *PPCUST CD %0\QUICKSAVE.CFG %: *PPCUST CINIT
一時保存した設定に戻す(&R) = %OBs *PPCUST CINIT %: *PPCUST CS %0\QUICKSAVE.CFG
-- =
アップデート(&U) = %OB *checkupdate p
バージョン情報(&V) = %K"@ABOUT"
}
KC_main = { ; PPcメイン窓
F12 ,%M_cust,C
}
特定のカスタマイズを試したい場合は、F12を押して「設定を一時保存して初期化」を選択。元に戻したい場合は、F12を押して「一時保存した設定に戻す(&R)」を選択する。
現在窓でのカーソルに連動して、反対窓でサブディレクトリを開くようにする。 F1でモード開始。ESCで終了。
KC_main = {
F1 ,*mapkey use,K_openbyotherwin %: *linemessage Open by other Window MODE
}
K_openbyotherwin = {
UP ,%K"@UP" %: *execute ~,%%j%FCD
DOWN ,%K"@DOWN" %: *execute ~,%%j%FCD
ESC ,*mapkey delete,K_openbyotherwin %: *linemessage Open by other Window MODE END
}