2022年10月30日日曜日

Raspberry PiでGitサーバー

経緯

僕はメモをテキスト形式で保存し、活用している。 今まではPC間のメモの同期にDropBoxを使っていたが、それをラズパイのGitサーバーに切り替える。 GitHubで執筆環境を整える方法がネットにあったりするが、個人的なメモなんかは、ローカルに閉じた環境で管理できたほうがいい気がするのだ。

SSHの鍵を作る

WindowsからラズパイにSSHでアクセスするために、公開鍵と秘密鍵を作る。Windowsで以下のコマンドを実行。

ssh-keygen -t ed25519

これでC:\Users[ユーザー名].sshというディレクトリができ、そのなかに公開鍵と秘密鍵ができる。

microSDカードにラズパイOSをインストール

初期化

ラズパイに入っていたmicroSDカードを上書きして利用する場合、パーティションの分割が原因でOSのインストールがうまくいかないことがある。それへの対処方法についても一応メモ。

  1. コマンドプロンプトを起動
  2. diskpart と入力。新しいウィンドウが開く
  3. list disk と入力
  4. select disk 3 というように、microSDカードを選択
  5. clean を実行

Raspberry PiのmicroSDをwindows10環境で初期化する手順 - Qiita

Raspberry Pi Imager

microSDカードをWindowsに差し込んだあと、Raspberry Pi Imagerを起動し、microSDカードを初期化する。 次にRaspberry Pi OS Lite(32bit)をインストールする。右下の歯車をクリックし、事前に必要な設定をしておく。

  • ホスト名を入力(ここではnasとする)
  • 「SSHを有効化する」をチェック
  • 「公開鍵認証のみを許可する」をチェック
  • 「ユーザーのためのauthorized_keys」に公開鍵の内容をコピペ
  • ユーザー名(ここではtukasaとする)とパスワードを入力
  • 「wifiを設定する」をチェック。SSIDとパスワードを入力
  • 「wifiを使う国」をJPに
  • タイムゾーンをAsia/Tokyoに

ラズパイ側の準備

初期設定

ラズパイに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

クライアント側(Windows)の準備

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

参考

2022年10月21日金曜日

マークファイルの内容をクリップボードにコピー(utf-8版)

以前、マークファイルの内容をクリップボードにコピーする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;
}

2022年10月19日水曜日

ファイルのアプリケーション関連付けをサブ窓で

ファイルのアプリケーション関連付けを、サブ窓でできるようにする。

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+Enterでカーソル下ファイルを実行し、かつ関連付け登録

Shift+Xを押した時は、登録、未登録に関わらず別窓が開く。