2024年11月27日水曜日

非ノイマン型のニュータイプ半導体の登場

生成AIの解説本で要のトランスフォーマーの動きは非ノイマン型だといわれ、あらためて調べてみたらIMCだのSambaNovaのRDUだの、軛は解かれてカンブリア大爆発といわれている状況だった。

2024年11月23日土曜日

量子コンピュータ 量子力学のはじまり

 2017に量子コンピュータ D-Wave 2000Q が報道された。
これに刺激され、量子力学関係の本を再読したり、量子コンピュータの本をいくつか読んだ。

量子力学のはじまり

炉の温度を確認するために炎を見つめると眼がやられる。鍛治の神は職業病として片目が不自由。産業革命以降、炉の温度を求める数式の研究が進められ、ようやく実験結果と一致する数式が完成した。

数式はできたが、これは「光の波のエネルギーはある決まった”とびとびの値”しかとらない」ことを意味していた。

こうして量子力学が始まった。





 

エネルギーを失い、原子核の中へと落ちてしまわないのはなぜなのだろう。
そんなことが起きるとすれば、安定した原子の存在があり得なくなるだけではない。

この小さな原子崩壊の際に放出される電磁波の周波数は連続スペクトルを形成するはずだ。
だがそれでは、原子が特定の飛び飛びの周波数(ガスのスペクトルの中で輝線または暗線として見られる)でしか電磁波を放出・吸収できないという観測結果に反することになる。何がこの特別な周波数を決定しているのだろう。

この疑問に対する答えは、 20世紀最初の30年間に、量子力学(ニュートン以来、物理学を最もラジカルに変えた理論)の発達とともに明らかになっていった。その名が示すとおり、量子力学はさまざまな物理系のエネルギーの量子化つまり、飛び飛びの値にすることを必要とする。

1913年、二ールス・ボーア(訳注:1922年、原子構造とその放射についての研究でノーベル物理学賞)は、「原子は特定のエネルギー状態でしか存在できない」として、単純な原子についてそのエネルギーを計算するための数式を発表した。
それ以前のマックス・ブランク(1918年、エネルギー量子の発見なとでノーベル物理学賞)の研究に続いて、アインシュタインがすでに1905年に、「光のエネルギーは光量子のちに光子と呼ばれるようになったの中にある。光子は光の周波数に比例するエネルギーを持つ」
と指摘していた。

ボーアが説明したとおり、原子が光子1個を放出することによってエネルギを失うとき、その光子のエネルギーは最初の原子状態のエネルギーと最後の原子状態のエネルギーの差に等しくなければならない。この条件が光子の周波数を決定している。
光子を放出することができず、よって安定している原子の最低エネルギー状態というものが必ず存在する。こうした初期の成果に続いて、1920年代に、どんな物理系にも適用することのできる量子力学の一般法が確立された。これはおもにルイ・ド・プロイ、ヴェルナー・ハイゼンベルク、ヴォルフガング・パウリ、バスケアル・ヨルダン、エルヴィン・シュレーディンガー、ポール・ディラック、マッグポレンの功績である。

可能な原子状態のエネルギーは、シュレーディンガー方程式(音波の研究からすでによく知られていた、一般数学タイプの方程式)を解くことによって計算される。楽器のは 半波整数倍が弦の長さに一致する音しか出すことができない。それと同様に、シュレーディンガーは、可能な菓子のエネルギー準位はシュレーディンガー方程式によって支配される波が原子の周囲で切れ目なくちょうど収まる準位だということを発見した。
しかし、最初にボルンが気づいたように、これらの波は圧力の波や電磁場の波ではなく、
「粒子が見つかる確率は、波動関数が最大になる場所の近くで最も高い」という確率の波である。
量子力学は、原子の安定性という問題やスペクトル線の問題を解決しただけではなかった。

量子力学によって、化学は物理学の枠組みの中に組み込まれた。
電子と原子核の間に電気力が存在することはすでに分かっていたので、
シュレーディンガー方程式は原子だけでなく分子にも適用することができ、
それによってさまざまな状態の分子のエネルギーを計算できるようになった。
こうして、どんな分子が安定的かとか、どんな化学反応がエネルギー的に可能かとかが原則的に判断できるようになった。
1929年、ディラックは、「物理学の大部分と化学全体の数学的理論に必要な基本的物理法則は、これで完に明らかになった」と高らかに宣言した。
これは、「化学者は、化学の問題を物理学者に引き渡して引退するだろう」という意味ではなかった。ディラックもよく理解していたように、シュレーディンガー方程式は複雑すぎて最小の分子について以外は解けなかったから、化学独自のツールや知識はやはり不可欠だった。



2024年10月10日木曜日

MacOS Sequoia で Apache+PHP の再設定

 新しいXcodeが使いたかったので MacOS15(Sequoia) にアップグレードしたところ、やはりApacheでPHPが動かなくなっていた。

結論としては brew, openssl, php, httpd を全て再度インストールしたところ動くようになった。


以下、作業ログ

ps -ef | grep httpd したところ httpd は動いていたが、PHP はだめだった。

参考にしたサイトに
https://getgrav.org/blog/macos-sequoia-apache-multiple-php-versions
brew install openssl が必要なような記述があった。

brew doctor

Warning: Some installed formulae are deprecated or disabled. You should find replacements for the following formulae: openssl@1.1 Warning: You are using macOS 15.

と macOS15 はサポートされていないような返答があったので再度インストールしてみた。

brew install openssl ....

Error: unknown or unsupported macOS version: :dunno

だめだったので brew 自体を再インストールしたら openssl も再度インストール成功した。

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
% brew --version
 Homebrew 4.4.0
% brew install openssl 
 Warning: openssl@3 3.3.2 is already installed and up-to-date.
 To reinstall 3.3.2, run:
   brew reinstall openssl@3
% brew reinstall openssl@3
Warning: Some installed formulae are deprecated or disabled You should find replacements for the following formulae: openssl@1.1

しかし、Apacheは動いているが PHP を動かそうとすると落ちる。
 /opt/homebrew/etc/httpd/httpd.conf に
    LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
を記述すると
 %  brew services restart http
で  
/private/var/log/apache2/error_log に
 caught SIGTERM, shutting down が出力される
% brew install php@8.3
 でもだめ。
% sudo /usr/sbin/apachectl -k stop
[Mon Oct 07 23:40:45.909424 2024] [so:error] [pid 88081] AH06665: No code signing authority for module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so specified in LoadModule directive.
httpd: Syntax error on line 189 of /private/etc/apache2/httpd.conf: Code signing absent - not loading module at: /opt/homebrew/opt/php/lib/httpd/modules/libphp.so


署名が必要そうなエラーもみかけたので キーチェーンアクセス.app を探したが、見つからない。パスワード.app になっていた。

% brew install httpd

でPHPも動くようになった。署名が必要な masOS のバージョンもあったが、今回は必要なかった。






2024年6月9日日曜日

Macでなぜか Apache が動かなくなったので brew install httpd した

 Apache が動かなくなった (MacOS 13.6.7)

/var/log/apache2/access_log も error_log も出力されなくなっている


$ sudo apachectl start  すると以下のようなエラーとなった。


Load failed: 5: Input/output error

Try running `launchctl bootstrap` as root for richer errors.


いろいろ試したがなかなかうまくいかないので brew install httpd することにした。


$ brew install httpd                            

                                                                  
To have launchd start httpd now and restart at login:             

  brew services start httpd                                       

Or, if you don't want/need a background service you can just run: 

  apachectl start                                                 



サービス起動停止

brew services start httpd

brew services stop httpd

brew services restart httpd


起動停止 

apachectl start 

apachectl stop


設定ファイル /opt/homebrew/etc/httpd/httpd.conf


Listen 80 # 8080 から変更


ServerName Mac-mini.local:80 # apachectl start で必要


<FilesMatch \.php$>

 SetHandler application/x-httpd-php

</FilesMatch> 


#LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "myCA"

LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so



php は前回 brew install php した。そのとき署名が要求されたが、今回は不要("myCA"ありだと動かなかった)だった。


参考

https://weblabo.oscasierra.net/apache-macos-install-homebrew/

2023年5月7日日曜日

Unityでドアの開閉はAnimatorそれともiTween?


Mac Mini M2 の Unity で Sketchup のデータを復元したつづき。
以前、苦労して作成したドアの開閉が動作しないので修復する。
どうやって動かしていたのか、また忘れそうなので記録しておく。            



Animator


  1. 左右のドア PlaneL, PlaneR に Animator : PlaneL2, PlaneR2 を設定
  2. Animator はそれぞれ OpenDoor, CloseDoor, idleDoor の3つの Animation を制御
    Parameter : openDoor (Bool) を設定
  3. Animation には Transitions とその動作条件 Parameter : openDoor を設定
    Animation Window(cmd+6) で時間による動作を設定
  4. C# からの実行: "openDoor" の値を設定
 public Animator animatorBoschDoorRight;
 public Animator animatorBoschDoorLeft;

 public void animatorDoor(){
   SoundManager.Instance.PlaySE(23);  // ドアの開閉開始時の効果音
   animatorBoschDoorRight.SetBool("openDoor", !animatorBoschDoorRight.GetBool("openDoor"));
   animatorBoschDoorLeft.SetBool("openDoor", !animatorBoschDoorLeft.GetBool("openDoor"));
 }
 public void OnAnimationCompleted(string doorObj){
   SoundManager.Instance.PlaySE(24);  // ドアの開閉終了時の効果音
 }
ドアの開閉開始時の効果音は簡単だが、開閉終了時の実行はタイミングを測るのが難しい。
  1. Animation Windows でイベントを追加(OpenDoorR2, CloseDoorR)
  2. イベントの実行タイミングを指定
  3. 実行する Function を設定
  4. このとき Object はイベントを追加した Animation を含むものを指定しなければならないので注意。( OpenDoorR2 でも PlaneR2 でもOK)

    Function が設定済みの Object があるからといって、Animation に関係ないものを指定すると「AnimationEvent 'OnAnimationCompleted' has no receiver!のエラー」になる。


iTween

そもそも「ヘントの祭壇画」の開くのをやりたくてドアの開閉を始めたのだった。
iTween で実装したが、Cluster ではスクリプトが使えないため、Animator を学習しながら動かした。これが上手くいたので、絵だけ差し替えてヒエロムニス・ボスの「快楽の園」の扉を動かしたのだった。 


画像を回転させながら、横移動していたが、画像の横幅が2倍のObject を作成して、これの片側に寄せて画像を置けば回転だけで済むことにいまさら気がついた。


上下動を加えたが、基本は左右のドアを iTween.RateTo するだけ。

public void doorOpenClose(){
Debug.Log("L31 doorControl.cs right rot: " + doorRight.transform.localEulerAngles.z);
SoundManager.Instance.PlaySE(23); // ドアの開閉動時のギーーという音
float z = 180f;
float t = 5f;
float zz = 10f; // ドアの上下動の量
if(doorRight.transform.localEulerAngles.z == 180f){ // 開く
iTween.RotateTo(doorLeft, iTween.Hash("time", t, "z", -z,
"oncomplete", "onDoorRotateComplete", "oncompletetarget", this.gameObject));
iTween.MoveBy (doorLeft, iTween.Hash("time", t, "z", -zz));
iTween.RotateTo(doorRight, iTween.Hash("time", t, "z", z));
iTween.MoveBy (doorRight, iTween.Hash("time", t, "z", -zz));
}else if(doorRight.transform.localEulerAngles.z < 1f ){ // 閉じる
iTween.RotateTo(doorLeft, iTween.Hash("time", t, "z", z,"oncomplete",
"onDoorRotateComplete", "oncompletetarget", this.gameObject));
iTween.MoveBy (doorLeft, iTween.Hash("time", t, "z", -zz));
iTween.RotateTo(doorRight, iTween.Hash("time", t, "z", -z));
iTween.MoveBy (doorRight, iTween.Hash("time", t, "z", -zz));
}
}

void onDoorRotateComplete(){
SoundManager.Instance.PlaySE(24); // ドアが開閉終了時のバッタンという音
float t = 0.75f;
float zz = 10f;
iTween.MoveBy (doorLeft, iTween.Hash("time", t, "z", zz));
iTween.MoveBy (doorRight, iTween.Hash("time", t, "z", zz));
}











参考
【Unity】アニメーション終了時にメソッドを呼び出す
https://takap-tech.com/entry/2021/04/13/013635


Mac Mini M2 に Google Sketchup のデータをもっていった

Google Sketchup の頃、作成した3Dモデルを Web版で開いてみた。
 https://app.sketchup.com/app?hl=ja
このファイルは Unity で読み込むことができているので、見慣れた光景ではあるが、懐かしさを感じる。
もう、Sketchup は Goolge から米Trimble Navigation Limited に移ってしまっている。
Google Earth に 3D Object がところどころに配置されていたものだった。

Unity で Sketchup で作成した .skp ファイルをインポートすることができる。
Unity経由で Cluster にも公開してある。

さて、Mac Mini M2 で以前作成したUnityのプロジェクトを開いてみたところ、Sketchup からのデータが表示されていない。

さんざん調べたところ、どうやら Silicon 版Unity では Sketchup ファイルは現在サポートされていない。(そのうちサポートされるらしい
Siliicon Mac の壁にこんなところで遭遇するとは。

対応策としては
  1.  intel 版の Unity をインストールして使う
  2. Sketchup 2017 をダウンロードして FBX にエクスポートする
  3. Web版の Sketchup に課金して FBX にエクスポートする
などがあるらしい。Trimble のサイトでは Sketchup 2017バージョンはダウンロードできなくなっているが、Windows用の 2017 を探し出して、昔の .skp ファイルを無事読み込むことができた。Mac Mini M2 登場で、少し前に買って失敗した .... ゲーミング Windows PC が役にたって少し嬉しい。

skp ファイルは 3Dモデルも画像もまとめて取り込むことができたが、FBXだと画像が付いてこないので、今回の場合、使い物にならない。
OBJ形式でエクスポートしてできた .obj と .mtl ファイルと 画像が入ったフォルダの3つを Unity へ ドラッグ&ドロップしたところ、上手くいった。(Unity 2019.4 くらいからマテリアル情報 .mtl 対応したらしい)

無事、WebGLビルドまでできたが、位置情報が以前と変わってしまっていたり、Sketchup からのモデルに Unity で追加した部分は再度やり直す必要があり、それなりの工数がかかりそう。
その上、なぜか追加した子部品の座標情報が以前とは違うとんでもないところに行っていたりで悩ましい。


参考

Unity2019.4くらいからOBJ形式のマテリアル情報(.mtl)に対応しててビックリ

「Google SketchUp」後継の無償3Dモデリングソフト「SketchUp Make」が公開(2013/5/24 16:11)









Mac Mini M2のUnity+VSCodeでまた「一致するワークスペースシンボルがありません」で悩む

 

Unity のスクリプト・エディタとして Visual Studio Code を設定する。
Settings...  - External Tools - External Script Editor :  Visual Studio Code

Comand + T で関数一覧を表示できるのが便利だが、以前より時々
「一致するワークスペースシンボルがありません」
表示されないことがあるので悩んでいた。

肝心なことを先に書いておくと、Visual Studio Codeのログに大量に出力されているエラーに惑わされてはいけない。これらのエラーがあってもワークスペースシンボルは表示される。

さて、Mac Mini M2 でも「一致するワークスペースシンボルがありません」だった。

  • 拡張機能の C# もインストールしてある。
  • .Net Core SDK もインストールしてある。


Unity側で .csproj ファイルを作成する機能をみつけ(以前からあった???)

  • 「Regenerate project files」を実行。

これで、開いている .cs ファイルに改行でも追加すれば、ワークスペースシンボルのリストが表示されるようになる。


しかし、これを忘れてしまっていて「OmniSharp Log」の大量エラーをみて

[fail]: OmniSharp.MSBuild.ProjectLoader
        This project targets .NET version that requires reference assemblies 
        that are not installed (e.g. .NET Framework). 
        The most common solution is to make sure Mono is fully updated 
        on your machine (https://mono-project.com/download/) 
        and that you are running the .NET Framework build of OmniSharp 
        (e.g. 'omnisharp.useModernNet': false in C# Extension for VS Code).
 

mono やらバージョンが違う .Net Core SDK などをインストールしてしまったので、UnInstall した。


mono Uninstall

ターミナルで実行
  sudo /bin/sh -x
rm -r /Library/Frameworks/Mono.framework
rm -r /Library/Receipts/MonoFramework-*
for dir in /usr/bin /usr/share/man/man1 /usr/share/man/man4 /usr/share/man/man5; do
(cd ${dir};
for i in `ls -al | grep /Library/Frameworks/Mono.framework/ | awk '{print $9}'`; do
rm ${i}
done);
done
 
「このMacについて」-「詳細情報」-「システムレポート」の「フレームワーク」から Mono が消えればOK。

参考: Uninstalling Mono Framework.
https://discussions.apple.com/thread/3848498


.Net Core SDK Uninstall

version="7.0.102"をインストールしてあるので、古いものを削除した
version="6.0.405"
sudo rm -rf /usr/local/share/dotnet/sdk/$version
sudo rm -rf /usr/local/share/dotnet/shared/Microsoft.NETCore.App/$version
sudo rm -rf /usr/local/share/dotnet/shared/Microsoft.AspNetCore.All/$version
sudo rm -rf /usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/$version
sudo rm -rf /usr/local/share/dotnet/host/fxr/$version


参考 : .NET ランタイムと SDK を削除する方法
https://learn.microsoft.com/ja-jp/dotnet/core/install/remove-runtime-sdk-versions?pivots=os-macos


Swift UI チュートリアル Loading watchOS が終わらない?

Loading watchOS が終わらない? ディスク容量の残量が少ないので不要なシュミレーターを削除したとこころ watchOSのものが全部なくなってしまっていた。 WatchOS を削除して再度インストールしても復活せず。 Create a new simulator で ...