ChangeLog 最新ページ

Program - 残日録 --- The Remains of the Day

最終更新時間: 2025-04-28 11:12

2025-03-06 Thu

 プログラムをゼロから書き直したら、数時間で完成した---やってみるもんだ: [Program]

ぼくの開発した エコシステムの中のメインのプログラム md2pandoc.pl (Perl) が必要以上に複雑になってしまった。 メインの部分だけで、140行以上ある。 なんとかもっと単純に、そして構造化しようと手を入れている。 しかし、 あまりに複雑怪奇になってしまって、うまくいかない。

この際、ゼロから始めることにした。

じつに簡単だった。

MAIN は以下の通りだ。 20行にもならない! (なお、 HTML では "<" および ">"(半角)を表示できませんので、 以下、それらを全角版で代用します。)


while(<>){
    $_ = &remove_stars($_);
    if(/<!--\s*BEGIN:\s*([^- ]+)\s-->/){
switch($1){
    case "SUMMARY" {&summary_read;}
    case "COMMENT" {&comment_read;}
    case "BEAMER" {&beamer_read;}
    else { print "$2 illegal";}
}
next;
       }
    if(/^(★|\#\#\#\#\#)\#*\s+(.*)$/){
&list_read($1, $2);
next;
    }
    print;
}

あとはサブルーチンを書くだけ。 じつに簡単だった。

2023-08-23 Wed

 github のパブリックリポジトリを保護した: [Program]

ぼくは、これまでの 人類学論文およびレクチャーノートを github に保管している。 そのうちのいくつかは属性を public に設定してある --- すなわち、これらのリポジトリには誰でもアクセス可能なのだ。 (いずれ全てを public にする予定だ。)

ただ、リポジトリを public にすると 誰でも見れるだけでなく、 誰でも変更可能 (push できるよう) になってしまう。 これは望ましい状況ではない。

しらべてみたら、 パブリックなリポジトリを push から守る方法があった。 たとえば: (公式)ブランチ保護ルールを管理する

具体的には次のようにすればいい。

まず、当該のリポジトリの右側のプルダウンメニューから Settings を選ぶ。

Settings --> Branches --> Branch protections rules

ブランチとして "main" ないし "master" を選ぶ。 [--そろそろ main に統一しようかな。--] そして、 その下に記載されている選択肢をチェックする。

(1) もし、 一般の人にも(ルールを守ったうえで)開発に参加させたいのなら 最初の "Require a pull request before merging" だけに チェックすればいいだろう。

その場合、 administrator にもこのルールを適用すべきである --- "Do not allow bypassing the above settings" にも チェックをいれるべきだろう。 (どうやら、ちょっと前まではこの選択肢は "Include administrators" という名前だったようである。)

(2) まったく「見せるだけ」のリポジトリならば、 "Lock branch" にチェックすればいい。

なお、これらのリポジトリのライセンスは CC-BY-NC-SD 4.0であることを付け加えておく。 そのほかの CC (Creative Commons) のライセンスは ここを みよ。

2022-11-01 Tue

 emacs のコマンド rq をつくる: [Program]

recoll-q というコマンドをつくっている。 中身は recoll についている recollq というコマンドを呼び出して、 それを HTML に整形したものを、 w3m で読み取る、というものだ。

直接emacs で読みとれないので、 emacs に取り込むのに苦労する。

というわけで、 やっつけで rq という elisp 関数をつくった ---

(defun rq ()
  (interactive)
  (let ((q-string (read-string "Q: ")))
     (shell-command-to-string
      (concat 
       "recoll-from-emacs " 
       q-string))
     (w3m-find-file "~/tmp.html")))

ここで呼んでいる shell-command である recoll-from-emacs は、 ほとんど recollq と同じだが、 最後に w3m を呼ばずに、 その出力を ~/tmp.html に書き込んでいる。 そして、emacs-w3m の関数で、 そのファイルを呼んでいるだけだ。 世界最高の超やっつけ仕事。 でも、とても役にたつ。

2020-11-04 Wed

 Jekyll で tag を活用するために elisp で(tag 入力用に)変数 (tags) と関数 (yaml-tags) を定義した: [Program]

Jekyll で tag をつかう快感を覚えたので、 Blog の各エントリーに tag をつけるようにした。 Emacs 上でのその作業を単純化するために elist で函数を作った。


(defvar tags-alist '())

(defun yaml-tags ()
  (interactive "*")
  (let
      ((tags "")
       (tag (completing-read
     "One tag each (to end, just retrun): "
     tags-alist nil nil nil)))
    (setq tags tag)
    (setq tags-alist 
  (append (list (list tag)) tags-alist))
    (while (not (string-equal tag ""))
  (setq tag (completing-read
         "One tag each (to end, just retrun): "
         tags-alist nil nil nil))
      (setq tags-alist 
    (append (list (list tag)) tags-alist))
      (setq tags (concat tags " " tag))
    
      )
    tags
    ))

みればわかるように、 じつはめちゃめちゃ不細工なところ (不必要な繰り返し)がある。 あと少し考えれば繰り返しを避ける方法を 思い付きそうなのだが、 めんどいので、そのままにしている。 自分への見せしめのために晒しておく。 do ... while ... みたいな構文があればいいのだが。

あとは、このtags-alistを save/load する函数を書けば一段落かな。

2020-10-10 Sat

 学会発表論文のために graphviz で親族の図を書いていた: [Program]

11月28日に KAPAL (インドネシア研究会)の オンライン研究大会がある。 dot で図を書き始めたら、止まらなくなった。


digraph mburhu {
graph [
       charset="UTF-8",
       lyaout = neato,
       rankdir = TD,
       newrank = true,
       ]

MBWF,MBWB,MB,MF,MBS,FF,F,Ego [shape=triangle,
                      regular=true,
                      fixedsize=true,
                  style=filled,
                  width=1]
MBW,MBD,M [shape=circle,
   fixedsize=true,
  regular=true,
   style=filled,
   width=0.8]

{rank=same;
MBWB;
MBW;
MB;
F;
M;

}

subgraph cluster_0 {  # wg's wg
MBW,MBWB,MBWF [color=gray]
MBWF->MBW [weight=1]
MBWF->MBWB [weight=10]
}        

subgraph cluster_1 { # wife givers
MF,M,MB,MBS [color=lightblue, fontcolor=white]
MBD [color=blue, fontcolor=white]
MF->M [weight=-10]
MF->MB->MBS [weight=10]
MB->MBD
}
subgraph cluster_2 { # my group
FF,F,Ego [color=darkseagreen]
FF->F->Ego [weight=10]
}

MBW->MB [penwidth=6;
 color=pink, weight=100]
MB->MBWB [penwidth=10,color=purple]
F->MB [penwidth=10,color=purple]
M->F [penwidth=6;
      color=pink, weight=0]

}

このプログラムから 以下の図ができる。

     
[母方交差イトコ婚]

めでたし・めでたし。

2020-09-19 Sat

 古い授業メモを github にアップロードしてみた: [Program]

個人データの github 化の第2段は、 いよいよ本丸、授業メモの github 化だ。

まずは、 30年以上前(1989年)のぼくにとっての 生まれて初めての授業 (『セックスとジェンダー(自然と文化)』)のメモを githubアップロード した。 フォーマットは マークダウン である。 ライセンスは GNU の copyleft なので、 だれでも使用することができる --- 尤も、 さすがに議論の内容が(ぼくの議論としても)古いので、 これを使いたい人はいないかもしれないと思う。 授業で使える民族誌を拾うのには役にたつかもしれない。 むしろ、このプロジェクト自身はぼくにとっての 練習台としての意味が大きい。 テクニカルないくつかの問題が解決すれば、 他の授業メモ (『犬好き』の続編、「環境主義」について、 などなど)もアップしていく予定だ。

第一の問題は、 github.com での表示は (github がマークダウンに対応しているものの) (見てのとおり、)たいへんに見辛いということである。 マークダウンには多くの方言がある。 GitHub の対応している マークダウンはミニマルなものであるのが、 その見づらさの理由だ。 GitHub のマークダウンは 脚注や引用、それにコメントの挿入には対応していないのである。 それらは通常 pandoc というプログラムのフィルターで 処理することとなる。 pandoc およびそのフィルターについては別稿に譲るが ポイントはソースである md ファイルではなく、 (pandoc を使って)できあがった html ファイルを見せることができれば、 (いわゆるウェブサイトで、人々が行なっていることだ) いいのだが・・・ということだ。

じつは github には github pages という無料で使える Webサイト公開のサービスがある。 --- これこそぼくが求めていたものだ! 「無料で使える!GitHub Pagesを使ってWebページを公開する方法」 などを参照しながら、 じっさいの作業をしてみた。

じっさいの作業はまた後日(この項に)書くが、 結果はじょうじょう (^o^)/だった。 ぼくの Github Pages (公開ウェブサイト)が、 https://merapano.github.io/ として完成したのだ。 トップページにはなにも書いていないので、 一度覗くだけにしてください。 見せたいのはトップページではなく、 ここから見ることのできる htmlとなった、さきほどの『セックスとジェンダー』の内容です。 URL は以下の通りです --- https://merapano.github.io/sex_and_gender 。 ぐっと見易くなっていると期待します。

ChangeLog 最新ページ