投稿

Git始めました

どうやらおれおれマークダウンは使い続けるだろうということでバージョン管理をすることにしました。個人で使うのだからCVSでいいかとも思ったんですが、みんなが使っているGitを使えないのはまずいだろうということでGitにしました。 いちおう他のやつも調べたのですが、細かい仕様とかを比べることなく上記の理由で決めてしまいました。 SCCS, Source Code Control System RCS, Revision Control System CVS, Concurrent Versions System Subversion GNU Arch Monotone Mercurial Git Perforce 外出先でも触りそうなデータはレンタルサーバに置くことにしているのですが、Gitのデータをテキストと同じrsyncでの管理下に置いてしまうと、うっかり古いGitのデータで上書きする可能性も出てきてしまい、「バージョン管理とは?」となってしまうので別で管理することにしました。 ということで、rsyncで管理しているのとは別のディレクトリをレンタルサーバに作って、 git init git add git commit で完成です。 ノートパソコンからのアクセスはsshを使うときのいつもの書き方の git clone kurokky969@sakura:proj/mymarkdown でできました。 それでノートパソコンからcommitしてpushしようとしたらエラーが出てできない。 remote: error: refusing to update checked out branch: refs/heads/master どうやらベアでないところにはpushできないようです。ベアっていうのはソースのあるワーキングディレクトリじゃないリポジトリのことのようです。init, add, commitしたディレクトリは当然ソースがあるのでダメなようです。ということで、サーバで git clone --bare mymarkdown mymarkdown.git することでできたようです。 それでノートパソコンから改めてpushしようとしたら、やっぱりエラー。 git clone したときの元がベアじゃないから当然か。 でも、もうそこそこc...

MathJax始めました

最近MathJaxを使って数式を書いています。ここら辺でまとめておかないと気がついたことを忘れそうなのでメモ。 前にも挑戦したことがあったのですが、そのときには数式を書けることを確認しただけで終わりでした。今回は正規分布を理解することを目標にやっているので、目的のために必要なことをひとつずつ調べています。おれおれマークダウン変換プログラムを前提として書いているので、いろいろ工夫できる余地が大きくて、頭の中がワサワサしています。使いつつ整理していく感じですね。 まずは宣言です。ぐぐればおまじないが出てきますが、前に調べたときと少し変わっていたので定期的に確認が必要なのかもしれません。まあ、いきなり使えなくなることはないでしょうけど。 <script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"> </script> これで $$\begin{align} (x+y)^n&={}_nC_0x^ny^0+{}_nC_1x^{n-1}y^1+{}_nC_2x^{n-2}y^2+\ldots+{}_nC_{n-1}x^1y^{n-1}+{}_nC{}_nx^0y^n\\ &=\sum_{r=0}^n{}_nC_ra^{n-r}b^r \end{align}$$ と書けば$$\begin{align}(x+y)^n&={}_nC_0x^ny^0+{}_nC_1x^{n-1}y^1+{}_nC_2x^{n-2}y^2+\ldots+{}_nC_{n-1}x^1y^{n-1}+{}_nC{}_nx^0y^n\\&=\sum_{r=0}^n{}_nC_ra^{n-r}b^r\end{align}$$と表示されます。 htmlだと begin{align} で始めれば $$ は必要ないんですがマークダウンだと必要なんですね。おれおれマークダウンは単なるhtmlへの変換プログラムなので、両方で表示できる必要があるのでめんどくさいですね。$\LaTeX$, html, mark...

ブログが書けなかった話

ブログはたくさん書く予定だったのに書いてないですね。おれおれmarkdownプログラムさえ完成すれば、いっぱい書くことがあったはずなのに。 全然ないかというと、そういうわけではないのだけど、「書くためにはあの資料を読みこまずには書けないよなあ」というでっかいやつなので、いったんわきに置いてます。そういうことをしないで、とりあえず断片でも書いてしまえばいいのかな?でも断片も大きそう。 あとは細かいやつなんですよね。書いてみたら140字いかなかったのでTwitterに放流して終わりにしてしまったり。 しかたがないので昔買った本を引っ張り出したりしました。おれおれmarkdownにPlantUML埋め込み機能をつけたのでUMLの本でもと思って『UMLによる統一ソフトウェア開発プロセス』を引っ張り出してきました。でも読むの大変そうなんですよね。「読み終わるまでブログ書かないの?」ということで、これもおいおい。 おれおれmarkdownへのRの埋め込み機能は断念したので、『Rで楽しむ統計』を引っ張り出して、確率の話でも書きながら埋め込み機能をどうするか考えようとも思ったのですが、最初の正規分布が理解できない。理解できなさを書こうとも思ったけど、それもなかなか難しい。なので、これもおいおい。 自作プログラミング言語の作成もあっちこっちに行きながらなかなか進まないし。あっちでちょこちょこ、こっちでちょこちょことやっていると、Twitterに放流して終わりなんですよね。実用性が無くて、すでに誰かがやっているけど興味があるから知っておきたいぐらいだと、そんなに進まないですよね。 とかやっているうちにおれおれmarkdownにバグを見つけました。特にマークしていない行は段落としてpタグで囲っていたので複数行に渡る数式が出なくなっていました。どうしようかと書式を考えると「そもそもmarkdownのあの書式になる根拠はなんだ?」と思い始めました。結果、「そもそもmarkdownである必要はないな。プログラミング言語っぽくすれば、さまざまな欲求が満たせるのではないか?」ということになりました。 書く方向性が決まると、別の書くことも湧いてきます。せっかくだから「書くことないな」と思っていたことをちゃんと記録しておこうとか。それがこれです。

PlantUMLとおれおれマークダウン

おれおれマークダウンにPlantUMLの埋め込み機能を付けてみました。 elsif line.match(/^```exec plantuml/) then if mode == :normal then mode = :exec_plantuml exec_str = "" elsif mode == :exec_plantuml mode = :normal Open3.popen3("java -jar D:/app/plantuml.jar -pipe -svg") do |i, o, e, w| i.write exec_str i.close o.each do |l| puts l end e.each do |l| printf("<!-- stderr: %s -->\n", l) end printf("<!-- thread: %s -->\n", w.value) end end とかを付け加えることで動きました。 こういうコードを書いて #PlantUML ```exec plantuml @startuml Alice -> Bob: test @enduml ```exec plantuml 出力が Alice Alice Bob Bob test です。 とりあえず動いているので、細かいことはよし!

ChatGPTに差別について聞いてみた

ChatGPTに差別について聞いてみました。自分の定義は「社会的合理性の無い区別」なんですが、ChatGPTも「不当に区別すること」のようなのでほぼいっしょですね。この後は差別と区別の違いを探るべくいろいろ質問したのですが、うまくいきませんでした。ふんわりとした例を出してくることが多いですよね。聞いてないのに能力の評価の話をしだしたり。「公共の利益」と「個人の権利」という言葉が出てきたので、まあ、そんな感じなんだろうな。 差別とは? Q. 差別とはなんですか? A. 差別とは、人々を不当に区別することや、不平等な扱いをすることを指します。この不当な区別は、人々が所属する社会的なグループ、例えば人種、民族、性別、年齢、性的指向、宗教などに基づいて行われることがあります。 差別は、直接的にも間接的にも起こることがあり、場合によっては明示的に表明されることもあれば、暗黙的であったり、慣習的なものであったりすることもあります。差別は、個人的な感情や偏見に基づいて行われることもあれば、社会的なシステムや制度によってもたらされることもあります。 差別は、被差別者にとって不利益や苦痛をもたらすだけでなく、社会全体にとっても深刻な問題となることがあります。差別をなくすためには、教育や法律、社会的な取り組みなどが必要となります。 Q. 不当ではない区別にはどのようなものがあるでしょうか? A. 不当でない区別とは、人々を公正かつ合理的な理由に基づいて分類することを指します。以下は、不当でない区別の例です。 能力に基づく区別 : 人々を、能力や技能、経験、知識、業績、努力などに基づいて分類することは、公正であり、合理的な区別です。 必要性に基づく区別 : 人々を、仕事上や法律上必要な場合に応じて分類することは、合理的な区別です。例えば、年齢に基づく運転免許証の発行などが挙げられます。 個人の選択に基づく区別 : 人々を、個人的な選択に基づいて分類することは、不当な区別ではありません。例えば、服装や趣味などによる区別が挙げられます。 重要なことは、不当でない区別は、人々を不当に差別したり排除したりすることがないことです。そのため、不当な区別と区別するために、公正かつ合理的な理由に基づいて行われる必要があります。 Q. もっとないでしょうか? A. はい、不当では...

おれおれマークダウン

おれおれマークダウンをRubyで書いてみました。単にhtmlを吐きながらちょっとだけ変換するだけですけど。こういうのはべたに強引に書いてしまうのがよい。ブログを書くのにも使えるようにヘッダの出し方を2種類用意しました。 書き始めに「こんなのはいらなくて、テキストでいいのではないか?」とも思いましたが、MathJaxで数式を書けるのはよいだろうということになりました。個人的な好みにより左寄せです。これで数学の勉強がはかどるはず。 2次方程式 \(ax^2+bx+c=0 \quad ( a \neq 0 ) \) の解は \[ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} \] 不等号 > $$a>b$$ \\lt $$a \lt b$$ ソースコード require 'optparse' mathjax = <<RUBY <script> MathJax = { chtml: { displayAlign: "left", } }; </script> <script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"> </script> RUBY header1 = <<-RUBY <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <script> MathJax = { chtml: { displayAlign: "left", } }; </script> <script type="...

プログラムをhtmlに埋め込むための変換プログラム

プログラムをhtmlに埋め込むための変換プログラムをRubyで作りました。探せばもっと高機能なものがあるだろうけど、こういうものは自分好みのものを自作したほうが楽しいですからね。 xhtmlが流行っていればCDATAセクションを使えば楽なのに。 CSS関連をもうちょっとどうにかしないとだけど、それはおいおい。 filename = ARGV[0] header = <<~RUBY <pre><code> RUBY footer = <<~RUBY </code></pre> RUBY puts(header) File.open(filename, "r") do |i| i.each_line { |line| line.gsub!('&', "&amp;") line.gsub!('<', "&lt;") line.gsub!('>', "&gt;") puts line } end puts(footer)