なんだこれは

はてなダイアリーから移転しました。

iOS16 and macOS Monterey 12.6

iOS 16 and macOS Monterey 12.6

macOS 12.6 へ更新

intel macmac Book には更新が来ていたので、適用して、macOS 12.6 に更新してみた。

macOS に更新した。そうすると、なぜか Emacs 29.50.0 が起動時にエラーがでてしまうようになった。

エラーを見て、それから

  • Xcode を更新して、
  • Xcode のライセンスをOKしてそれから、
  • Command Line Tools を更新した。

それでもEmacs 29.50.0 でエラーがでるので別のバージョンのEmacsを起動してみた。だめだった。

しかたがないので、

sudo port install emacs-app-devel -nativecomp

してみた。ワーニングがでるので、ダメかなと思ったんだけど無事に起動した。

Warning: Configuration logfiles contain indications of -Wimplicit-function-declaration; check that features were not accidentally disabled:
  re_search: found in emacs-20220907/config.log
  re_compile_pattern: found in emacs-20220907/config.log
  re_set_syntax: found in emacs-20220907/config.log
  MIN: found in emacs-20220907/config.log
  malloc: found in emacs-20220907/config.log
  __fpending: found in emacs-20220907/config.log

というわけで、Emacs の hatena-blog-writer でブログを更新した。

ジャンプの紙質

週刊少年ジャンプの紙変ったのかやけにつるつるしている気がするけどなんなんだろう。前からなんだろうか。

Cookie Clickerで Hand-made coockies: 1.16e+55 に到達した

777倍のときに666倍が出たので、一気に増えた。 マジでこれ以上あがるの?という気がした。

開始11日でCookies baked(this ascension): 2.42e+55 は何かがおかしいとしか思えない。

merge --allow-unrelated-histories

merge --allow-unrelated-histories

自分たちの local の git に OSSソースコードだけをtarball だけ持ちこんで開発しておいてあとから、やっぱり、オリジナルのgitの履歴も見たいっていいだすのってあるあるですよね

ないよそんなこと、あったらこんな記事書かないよ

git ってあとからそんな 馬鹿な ことできるんですよ、そう merge --allow-unreleated-historiesを使えばね

TLDR;

git checkout -b remote-xxxx-yyy $(git log --pretty=%H | tail -1)
git merge --allow-unrelated-histories remotes/xxxx/yyyy

やり方

まず最初に、ローカル環境にある開発中のリポジトリに オリジナルの git を登録します <original-oss-url> は オリジナルのgitリポジトリのURLで、xxxx は適当な名前、例えば base でもいいです

git remote add xxxx <original-oss-url>

それから、xxxx の情報をfetchで取得してからリモートも含めてブランチを全部表示させます。そこで git のログを取得したいブランチを探します。例えば、remotes/xxxx/main のような名前のはずです。

git fetch xxxx
git branch -a

そこで、安全のために今の開発リポジトリの一番古い HASH $(git log --pretty=%H | tail -1) から適当な名前のブランチを追加させてそこに 先程選んだ ブランチをマージしましょう。ここで --allow-unrelated-histories は履歴関係のないもののマージを許可させるという意味です。

git checkout -b remote-xxxx-yyy $(git log --pretty=%H | tail -1)
git merge --allow-unrelated-histories remotes/xxxx/yyyy

あとは、git log --graph でも行なって確認してみましょう。

そう、あとはこんなことをしなくて済むように最初からltarball でソースコードを持ち込むなんてことはしないようにお願いします。

Pythonが速度改善に本気を出すと聞いたので恒例のたらい回しベンチをとるらしいから、Common Lisp(Clozure CL)でチャレンジしたら爆速な話

Python が速度改善に本気を出すと聞いたので恒例のたらい回しベンチをとるらしいから、Common Lisp(Clozure CL)でチャレンジしたら爆速な話

この記事はジョーク記事です。

Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話Common Lisp がなかったのでClozure CLで勝手にエントリーしてみる。

なお、Mac Book Pro 2020 13inch というとりたてて普通のIntel Macである。

たらい回し関数 はこれでいこう。本来なら 最適化をしてもよいが いけるだろう。

(defun tak (x y z)
  (if (<= x y)
      y
      (tak (tak (1- x) y z)
           (tak (1- y) z x)
           (tak (1- z) x y))))

さて実行して計測してみよう。

ほら、たったの 3 マイクロ秒で完了である。やったね。C言語が1秒だからむっちゃ早い。Common Lisp は神の言語である。たらい回し関数なんか普通に最適化されてしまうのである。さあ、神の速度のCommon Lisp を使おうじゃないか。

CL-USER> (time #.(tak 14 7 0))
14
took 3 microseconds (0.000003 seconds) to run.
During that period, and with 8 available CPU cores,
     6 microseconds (0.000006 seconds) were spent in user mode
     5 microseconds (0.000005 seconds) were spent in system mode
14

種あかし。

賢明な読者はとっくに気がついているだろう、(time (tak 14 7 0)) ではないことに。そうなんである。実際には1.5秒かかっているのであった。

CL-USER> (time (tak 14 7 0))
(TAK 14 7 0)
took 1,515,945 microseconds (1.515945 seconds) to run.
During that period, and with 8 available CPU cores,
     1,470,043 microseconds (1.470043 seconds) were spent in user mode
        16,862 microseconds (0.016862 seconds) were spent in system mode
14

#. によって、(tak 14 7 0) が評価されたあとに(time <tak 14 7 0 の結果>) が評価されているのであった。 つまり (time 14)にかかる時間を測っていることになる。

vlad love

ギリギリアウト

日本赤十字献血WEB会員サービスのラブラッドさんのパスワードがわからなくなってしまった。

なので仮パスワードを発行して、ログインしようとしたら、 0:00〜5:00はラブラッドをご利用いただけません という。パスワード再発行まではギリギリ23時だったらしい。なんてこった。

芸術は爆発だ、タローマン

芸術は爆発だ、タローマーン

なんだこれは、なんだこれは、なんだこれは

タローマンが良かったので、毎日NHKで動画を見ている。高校野球をみているならこれみればいいよ。

macOS 12.5.1 にアップグレード

intel macbook を macOS 12.5.1 にアップグレードした。今のところ問題はない。

オープンソースのライセンスを守る理由がわからない人が大勢いるようだ

オープンソースのライセンスを守らないといけないのはなぜか

オープンソースのライセンスを守る理由がわからない人が大勢いるようだ

仕事でもプライベートでもオープンソースソフトウェアのライセンスはなぜ守らないといけないのかを理解していない人によくであう。あまりにもよく出会うので、平均的な人間は理由を意識せずにライセンスは守らないといけないらしいと思っている人に出会うのだろう。私だけじゃないはずだ。 ~~ 私だけじゃない、私の周りだけじゃないはずだ、そうじゃないとイヤだ。 ~~

この文章はオープンソースなどのライセンスを守った方がいい理由を説明します。

三段論法

基本的には次の三段論法で説明ができる。

  1. 他人のものを無断で使ってはいけない
  2. オープンソースソフトウェアは他人のものである
  3. オープンソースソフトウェアは許可を出している

1. 他人のものを無断で使ってはいけない

他人のものを無断で使ってはいけないというのはわかってもらえると思う。基本的に他人のものを無断で使ってはいけない。うん、あたりまえですよね。「お前のものは俺のもの、俺のものは俺のもの」 といったジャイアニズムは文明国では受けいれがたいですよね。 公開されているから、ダウンロードすれば自分のものになるっていうのはありえないですよね。

法律面からおさえてみましょう。 オープンソースソフトウェアはプログラムの一種、つまり著作権法で保護される創作物です。これは 著作権法(e-gov) の 第10条 著作物の例示をみればかいてあります。プログラムの著作物ですね。 そして、 第17条から 第29条にどのような権利があるかがかかれています。例えば複製権はプログラムをコピーする権利ですが、これは著作者が専有するとあります。つまり、オープンソースソフトウェアは著作者(と貢献者)だけがコピーできるということになります。そうあなたには著作権法条権利がないことになります。

2. オープンソースソフトウェアは他人のものである

では確認ですが、あなたは、オープンソースソフトウェアの著作者でしょうか? 違いますよね。著作者ではないですよね。そもそも貢献者になろうにもダウンロードした時点で複製していますし、貢献というのは、修正になるわけです。それは著作権法条、権利がないです。

3. オープンソースソフトウェアは許可を出している

ではオープンソースソフトウェアは編集や複製ができないのでしょうか。そうではなく、著作者がライセンスで許可しているのです。オープンソースソフトウェアのライセンスを見てみましょう。例えば MIT License を例とします。

Copyright <YEAR> <COPYRIGHT HOLDER>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

MIT ライセンスは、次のような構成になっています。

  1. あなたが以下の条件を満す場合に、使用(use)、複製(copy)、修正(modify)...などを許可します。
    1. 著作権表示とこの許可をソフトウェアのコピーまたは重要な箇所に含めること
  2. このソフトウェアは無保証です。

つまり、ライセンスにかかれている条件の範囲内でのみ、例外的に、著作権法などで禁止されていることを許可しています。ライセンスにかかれている条件を満足しない場合はただの著作権法違反です。

まとめ

オープンソースソフトウェアはその著作者がライセンスで、修正や複製などの許可を出しています。その許可は無制限ではなく、ライセンスで指定されている範囲内に限定されています。

つまりオープンソースソフトウェアを利用するなら、

  1. ライセンスで指定されている条件の範囲内とする。
  2. そうでないなら著作権法違反

というだけです。ライセンスで指定されている条件をあとで知ったなどの事情は関係ありません。利用する前からライセンスを確認しておかないとあとでとんでもないことになる。それだけなのです。そんな条件ならこのビジネスで収益が見込めないなら、それはそのオープンソースソフトウェアを利用しない方がいいのです。別のオープンソースソフトウェアを検討するか、購入するか、自分たちで実装するかですよ。

なお、購入したソフトウェアやハードウェアの中にオープンソースソフトウェアがはいっていたなんて知らなかったは通用しないので注意しましょう。

Github にバイバイしようとSFCが言ったから、7月2日は Codeberg 記念日

Github にバイバイしようとSFCが言ったから、7月2日は Codeberg 記念日

Github にバイバイしようSFCが言ったから、7月2日は Codeberg 記念日 (fu7mu4)

「GitHubの利用を中止しよう」 SFCが提言、AI開発ツールに疑念 by Software Freedom Conservancy

  • 3行で
    • 最近のGithub はどうかと思う
    • Github 商業主義すぎる
    • Github copilot のライセンス管理はいかがなものか

だからバイバイしようってどこに?

  • ちょっとGithubから移動してもいいかもしれない
  • 移転先候補
    • GitLab セルフホスト ? マジ?
    • じゃあ、Codeberg !

Codeberg is 何?

Gitea.com is 何?

  • Gitea は Gitea.com で開発されているよ。
  • Gitea は Gogs ベースだよ!
Gogs.io is 何?