2023年12月30日土曜日

タッチバー搭載初期モデルのMacBookProではiPhone15をターゲットにできない

iPhone15 Pro Maxを0.5秒でポチったわたしなのだけど
まさか、手持ちのMacBook ProでiPhone15をターゲットにして開発できないとは思わなかった
まぢか、そろそろM系MacBook Proにしないとダメなのか
今でも全然使えるんだけどなぁ、、、
その辺のWindowsより断然サクサク動くので、VSCode入れてJava系の開発環境にしている
以前Swiftを学びながら6日で作ったソリティアも、
全然問題なくXCode14で動く
しかし、XCode15には出来ないのだ、、、

うーん、今年はあれこれお金を使ったので、
来年か、再来年かなぁ
M5出るまで待つかなぁ、、、

ATL

随分前に、COMを使って、
Oracle OO4Oを模し、中身はADOと言うものを作った事がある

そもそも、OO4OはCOMモジュールなので、
COMなどはVB(VB6)で作れば良いじゃ無いかと思っていたのだけど、何故か速度的な部分(?)でC++でやることになった

わたしは今更かよと思いながら本をいくつか購入した
以前はCOMも作っていたのだけど、
やり終わったら忘れるし、思い出すのも大変な上に、完全に理解しているとは言えない状態だったのだ




この中で、二冊目のATL Developer's Guideが役に立った
知りたいことは全てここに書かれていた
この一冊だけで良かった

しかし、残念なことに英語
(わたしにはなんの問題もありません)

わたしが解説する必要はないくらいに、
詳しく書かれている

なんとかOO4Oの機能を全て模し、
VB6からはCreateObjectの名前だけを変えれば、
その他に変更点が必要ないと言う物が作れた

これでVB6からはOO4Oは使ってません
ADOです!と言えるわけで、
サポート切れてません!と言い切れるわけだ

と言うか、こんな物を作ってしまったがために、
またもやVB6の寿命を延ばしてしまったのだ
そうだ、わたしだ、、、
戦犯と呼びたいなら呼べば良い、、、

VB6のサポートなんてとっくの昔に切れているのに、
いまだにそれを使っている方が悪い

2023年12月28日木曜日

「善悪という怪物」を読了

 善悪が争いを生むことは間違いない

それに、善悪は非常に厄介だとも思っていた

本書には宗教が悪いとは書かれていなかったが、

それは本書が、善悪で語る事を作者自身が絶対にしないというスタンスで書かれていたからだと考える

善悪で考えることは良い悪いを語り始めると、再帰してしまう


しかし、わたしは宗教の問題は根深いと思っている

古代、無知な人類にも分かりやすくドキュメント化された経典

これなくして人類の道徳感は育たなかった

しかしやがて、宗教が権力を持ち、本来の目的が薄れていった

神の教えに反するのか?

くだらなすぎる

神などいない


アニメが転生ばかりになったのは、一種の宗教だと考えている

天国も地獄も信じられなくなった現代人は、

転生して特別なスキルで無双できたらなぁと考えるようになったのだ

宗教では現代人の直面する問題を解決できない

つまり、宗教はオワコンということだ


金網フェンスの撤去

お隣との間に結構無理やり設置されていた金網フェンスを撤去していただいた

朝八時半から午前中だけで作業は完了していた

とても早くて助かる


狭い隙間には薮からしが太い根っこを張り、壁が侵食されていた

他にもクサギなども生えていた

壁はとても見た目が酷くみっともなかったので、少し前に家のペイントもしてもらっていた

薮からしも引き剥がしてもらっていて、見た目だけはマシになった

当時ついでに壁の撤去をしようと思っていたところ、

ご近所でもペンキ塗りの仕事が多く、話が流れてしまっていた


今回壁を撤去したことで、かなりスッキリし、

残った薮からしの根っこも除去しやすくなった

隙間にゴミを放り込まれていた事もあって、

壁はずっと前から撤去したいと思っていたのだ

まずは除草剤、その後はコンクリで固めてしまおうと計画中


2023年12月27日水曜日

システム手帳

 わたしは紙の手帳を使っている

データ保存場所で大震災のような災害があったとき、

データが全損するHDDと比べたら、紙のほうが再現できる可能性が高い

手書きをすることで手先の刺激になり、脳への刺激にもつながる


ところで、いわゆるB6システム手帳は

リフィルのサイズがB6というわけではなく

手帳のサイズがB6なのだ


手頃に手に入るB4、B5の紙を切って、

穴を開けて手帳のリフィルを作ることがある

そのたびに、B6の紙に書きたいと考えていた

リフィルは縦長のサイズで

メモは取りづらいと感じている

無ければ革を使って自分で作ればいい

下敷きも薄い金属で作るべきだ


しかし面倒なので誰か作ってくれないものだろうか・・・

または既製品があるのであればそれでもいいのだけど

軽く検索しても見つからなかった


2023年12月24日日曜日

continuous vs contigous


本を読んでいて、Contiguousという単語が出てきて、
え?と思って調べたら出てきました

DB初心者がDBMS作ってみたとかいう記事を見たのだが

作ってなくねぇか?
作られたものを見て感想述べてるだけじゃないか
自分で1行でも書けば
何が大変なのかわかると思うんだけど
ただ人の書いたものを見て
自分で作った気になってるだけ

恐ろしい時代になったものだ

2023年12月23日土曜日

同窓会にて

渋谷のんべい横丁で店をやっている知り合いが居て、そこで十人規模の同窓会がありました
大学時代、友人の家に泊まり込みプログラムをしていました
あの時代があったから今の自分があると思っています
当時、ディスク起動するOSを作り、音源ドライバ、マウスドライバなどを仕込んで、ゲームを作ってコミケで売り、そこそこの売り上げを出しました
久しぶりに会ったその友人は田舎のプログラマをやっていて、VB.net一本槍、Javaは習得できなかったとの事
これを聞いて少しショックでした
わたしは20種類以上の言語を身につけています
今後どんな言語が出てきても一瞬で理解して身につけられるでしょう
実際Swiftを勉強しはじめて、6日でソリティアAppStoreにをリリースしました



店のオーナーは田舎がテキサスでノートン360やオフィス360の仕掛け人です
店長は人に騙されたりなんだりと話をしてくれましたが、その中で共感したのは、相棒はいるか?と言う問いでした
わたしは育ててはいると答えましたが
育てられない、出会うしかないのだと言います
確かにそうです
人は育てても育たない
出来る人は勝手に育ちます

どこかで出会うことは出来るのでしょうか
わたしが仕事を任せられる知り合いに
出会う可能性はゼロでしょう
今まで出会った
自称フルスタックエンジニア達
自称スーパープログラマ達
あなた方は似非でした
わたしは相棒は居ませんが
ゲーム業界時代に知り合った化け物は3人居ます
わたしでさえ一生勝てない化け物どもです
その彼らに比べたら
未踏の連中もゴミにしか見えません
わたしはこの日本には
陽の光の当たらない裏舞台に
名も知られていない化け物が居ることを知っています

2023年12月22日金曜日

プログラマに大事なこと(というか老けない思考のために大事なこと)

「国語」、「英語」、「物理現象の」+「観察」

この3つは必要です


まず「国語」「英語」について説明します


プログラミング言語は限定された表現方法で束縛された言語です

XQueryではFLWOR

For、Let、Where、OrderBy、Return


他の高級言語では

代入文、条件判定文、ループ


アセンブラのような低級言語で例えれば

Move、Comp、Jump系、Push、Pop(他にもブロック転送やらなにやらありますが)


どの言語でも束縛された表現方法しかありません

一般の方には想像できないでしょうが

この束縛された表現で、画面の項目をチェックしたり

条件によって別の処理を行ったりなどを行っています


これには論理的思考が必要なのですが

それには修飾子にたぶらかされない「国語力」や「英語力」が必要です

出来れば日本語と英語どちらでも同時に考えられるのがベストです

どちらも使えることでWEBでの検索の幅が広がりますし、

とくに日本語は修飾子などに騙されるので英語で言い換えることで一歩引いたものの考え方が出来るようになります


最近の日本語の悪い例だと

「丁寧に説明します」や「忖度したんです」程度で説明したことになりましたよね?

「では、説明してください」

「では、なぜ忖度する状況になったのでしょうか?」

ということが全く議論されないのには参りました

人工知能の方がまだマシな議論ができたことでしょう


多少脱線しましたが

議論をして要件をまとめたり

コーディングをする上でも

語学力が必要となるため「国語」「英語」が重要という事です。


つづいて「物理現象の」+「観察」について説明します


もっと単純に「探求心」と言ってもよかったのですが

逆にそれだと「何」を探求するのかわからなくなるため、

より具体的に「物理現象の」+「観察」と表現しました

これなら誰でも何をすればいいのか分かるはずです


例えば

料理を作る際に最善の方法を模索する

スポーツで守備位置を俯瞰する

プログラムで他人と自分のコードを見比べる

自分のコードを常に疑う

「見えないものを見る方法」を考える


日々このように「物理現象の」「観察」をする姿勢が

「想像力」「創造力」「柔軟な思考」「論理的思考」につながるということです


「想像力」「創造力」「柔軟な思考」「論理的思考」を身に着けろ

と言われても、「どうやって?」が無いため、困ったことはありませんでしたか?

「物理現象の」「観察」をすればいいんです


まだ、なぜ「物理現象の」+「観察」なのか伝わっていないかもしれないので補足します

ただ「花」や「鳥」「地球」を「観察」してくださいと伝えても

大抵の方は、「観察」ではなく、

ただ「見ている」ことしかしません

それではダメです


これも例を出しますが

UFOかプラズマか

プラズマだとしましょう


なぜプラズマが音速を超えて観察されるのでしょうか?

なぜ何もないところにプラズマが発生するのでしょうか


普通の物理学者であれば、

「プラズマです」では済ませません

説明になっていない事にすぐ気が付くからです


「原理はわかりませんがUFOの飛行原理からプラズマが発生する可能性がある」と言われたらどうでしょうか

こちらの方が説明になっていますよね?

しかも、簡単にこれを否定はできません


否定は難しいので別の見方を示します


例えばオーロラのような状態を想像すれば

発光に適した範囲が広範囲なので光の帯が広範囲に降り注ぐように観察されます

もしかしたら

「UFOは、あたかも高速に光が移動したように見えるプラズマに関連した自然現象なのかもしれません(ただしその自然現象がどのように発生するのかは不明です)」

頭が柔らかければ、このような別の「見方」をいくらでも示せます

「見方」についても補足します
人間とは自分が見たものしか信じません
しかし質の悪い事に
たとえ同じ現象を見ていたとしてもUFOのように別の事を主張し始めます
もっと具体例を出すと
ひき逃げを目撃した人々が
今の車は「黄色」か「青」かという議論さえし始めるのです
実際は「白」だったなんてこともあります

この世界の物理現象を何度も観察し目を養う事です
「枯れた技術」と思われたモーターでさえ、まだまだ改良の余地があります


例えば

赤外線をプラスチックに当てて

その反射光からプラスチックの種別を行う機械を発想し創った人が居ます

オープンソースです

プラスチックの種別と言う「見えないものを見る方法」を見つけたわけです

これも日々光や電波などを観察し、考察し、発想が生まれたはずです


ここまで読んで頂いて恐縮ですが

これらの例では、プログラムに直接役に立っていないようにも感じると思いますので

この点も補足します


正解が一つと限らないプログラムには

柔らかな発想が必須です

先に述べた通り

柔らかな発想が元ではなく、日々観察する姿勢が元なのです


自分の書いたコードを何度も書き直してみること

これがプログラム上達に役立ちます


Pythonなどでは、誰が書いても似たコードになります

つまりある意味コーディングのゴールがあります


しかし、高級言語になればなるほど

また、フルスタックフレームワークであればなおのこと

様々な書き方が許される状況になります


これは非常にまずい事です

ゴールが見定められないのです

どんなにDDDを読んでも

出来上がったアプリはフロントでもバックでも妥当性チェックをして

全体でポリシーが無いスパゲティになりがちです

例えば

SpringならBindingResult使えよ・・・

フロントは条件によってエラー表示だけすればいいだろ

フロントでJavaScriptで妥当性チェックを書くなよ・・

などなど思う事は多々あります


例えば

フラグだらけでぐちゃぐちゃなXAMLは沢山あります

一体誰に習ったのでしょうか?

一体どう調べてそういうXAMLを作ったのでしょうか?

Windowsが元はイベントドリブンであることを知らないで

フラグで済まそうとするからそうなるのです


基礎知識をきちんと調べること

自分のコードに疑問を持つ事

頭を柔らかくすること

帳票システムが無くPDFが作れない?

ならばTeXを出力してPDF化したらいい

既存のDBが遅い?

最善となるDBが無いなら作ればいい


わたしが10年以上前に廃れ誰からも忘れ去られたXMLDBを作ろうとしているのは

そういう理由からです


あれこれと遠回りしていますが

わたしも日々周囲を観察し調べまくって

柔らかな発想を養っているつもりです

(大事なことなので二度言いました)


(追記)

わたしがここに書いたことはSTEAM教育の一種のようです

STEAMがScience、Technology、Engineering、Art、Mathematicsであるのに対して

わたしは語学力も必要だと主張します


てか、Artってなんだよ

無理矢理すぎるだろ

頭湧いてるんか?

お花畑か?

一億総漫画家レベルの画力を持つ日本人にアートとか片腹痛い

外国人の発想は日本人には馴染まないことが多いと思います


(さらに追記)

しかし、最後にその外人の

ウォルトディズニーの言葉を書いておきましょう

「空想をするときにも、現実を見失ってはいけない」


わたしが「物理現象の」+「観察」と表現したのは、わたしもアニメの原画、動画を描いていた経験があるからかも知れません


2023年12月19日火曜日

2023年12月17日日曜日

「Vim」が根強く愛されるエディタである理由

わたしにプログラムを教えてくれたHAL研究所の金井さんは、viかemacsどちらかを覚えてくれと言ってきました
当時わたしはスーパーファミコンの開発で、
SONYのNEWSにスーファミ開発機材を接続した環境で開発していました

最初はviを使っていました

金井さん曰く、viはexエディタのフルスクリーン版だとの事で、どんなにプアなunixでもviが入ってないと言うことはない

exは一ラインのみ表示する、昔のワープロのような表示領域が少ない状態で編集できるエディタで、viはそれを一画面分表示できるようにしたものという事でした

あとunix環境によってはemacsが入ってない事がある
と言う事でしたので、わたしはviを選択して、スーファミのアセンブラを打ち込んでいました

当時はHAL研究所の作ったCコンパイラがあり、コアな部分はlispで作られていて、あらゆるCPU向けのアセンブラを吐き出す事が出来るとの事

わたしは恵まれたことに、Cで打ち込んだコードからどのようなアセンブラが出力されるのかを確かめながら、慣れないスーファミのアセンブラを学ぶことが出来ました

いわゆるトップダウンで、あの難解なスーファミのモード7もアレコレ試す事が出来ました

かなり意外でしたが、当時のゲーム機は全てvsyncやhsyncの割り込みでスプライト描画やスクロール処理などをするプラグラムで動いています

この割り込み中に処理が出来なければ、処理落ちと言う現象になります

最初はviを使っていたのですが、隣の金井さんはemacsでメールを開いたりしながら作業しています

それがめちゃくちゃ羨ましくなり、わたしもemacsに移行しました

しかし、emacsでもviモードでした

viに慣れた人にはホームポジションから手を離さずに打ち込めるviスタイルの方が手への負担が少ないのです

しかしemacsなら画面分割出来るし、terminalも開く事が出来ます

ここでも金井さんに教わりましたが
unixで作業する人は、ターミナルからemacsを立ち上げ、すべての作業をemacsから行い、emacsを終了して作業を終えるとの事でした

なるほど確かにemacsからすべて出来ました

これは、スーファミ現役時代の話です
この話自体がかなり昔の話なのですが
その当時から見ても、
昔の人は本当に恐ろしいと感じました

今の時代はvimになったようですが
かつて、emacsクローンの流行った時代がありました

vimから入るのもありですが
lispで作られたemacsも味わって欲しいと思います
当時lispで動くrogueライクゲームをプレイして、
風来のシレンが出た時は、え?これパクリじゃんて思いました

まぁ、vimというか、viが使われるのは
何もエディタが無い環境でも
viは動くでしょうと言う安心感があるため
とりあえず.bash_profileなどを編集する際などは普通にviです
nanoとかよく分かりません



2023年12月15日金曜日

Windows + WSL2 + VSCでgit pull時に何やらエラー

git pull 時にエラーがでた

問題は2つあった


1.couldn't resolve host

resolve.confに以下追加

sudo vi /etc/resolv.conf

以下2行追加

nameserver 8.8.8.8
nameserver 8.8.8.4


2.TLS関連のエラーがでた

最近TLS1.3になりかけている過渡期なので、多分それが原因だろう

git config --global http.sslVerify false

これで無効にしておいた



2023年12月13日水曜日

C#のプロパティに関する記事

最近、Googleのアプリ開いてるとクソ記事が偉そうに出てきて
今回はC#のプロパティに関する説明記事だったのだけど
気になったのは、
「ならば全部Publicにすればいいじゃないのと思うかもしれないけど、
C#ではPublicにするのは非推奨です」で済ませてる点

何故、内部変数をpublicにしないのかと言うと
値のセットやゲットをするときに、
関連する値との整合性チェック機構を入れたり
変数のセットをしたり出来るようにするためです
Getter/Setterもカプセル化して機能を入れるのは悪いことではありません

Javaなんかだと、Lombokで@Getter,@Setterしてしまって、
なんの機能も実装しないので、
たしかに、あれだとpublicでいいじゃん?てなります
そして、わざわざLombok使わなくても
Javaでプロパティ構文入れればいいじゃん?てなりますが
現状見送られています
たしかJava7あたりでそういう話題があったはず

さらに言うと、Javaでは
@Lengthや@PatternなどでEntityの整合性をチェックし、Controller内でValidateのチェックをするので、
Entityはまぢ単なる入れ物のため、
Publicでいいじゃん?はい、そうですねってことになります
まぁ言語が違えばこんなもんです

Golangだと、そもそも脱オブジェクト指向言語ですので、
お前らオブジェクトだのクラスだの使ってて、それ再利用してますか?
してないよね?だから俺らモジュールにします!って言語なのです
こういう点からも、
DDD書いた人がこれからも偉ぶっていられるとは、
わたしは思っていません

言語によっても考え方が違うのですが、
元記事はC#について書いていて、
単に「C#ではpublicにするのは非推奨です」の一言で片付けるのは如何なものだろうか?
説明にはなってないですよね?


2023年12月11日月曜日

今更帳票システムをゼロから作っている人が居るようだが

それって例えば、
適当なスクリプト言語で、
適当にLaTeX出力させて、
あとはPDFにすれば良いんじゃないの?

Graphvizを組み合わせても良いですね?

わたしならそうします

2023年11月27日月曜日

OpenSCAD SAMPLE

かなり昔に同じことをしたことがあるのですが
OpenSCADのサンプルをyoutubeへアップしました
デルタ型3Dプリンタのエフェクターです

この程度のコーディングでこのような形が作れるというのは面白い体験でした

2023年11月14日火曜日

シロカのSC-C125

2023/11/18発売とされていたシロカのSC-C125が届きました

仕様としては入れた分だけの水は出し切るので、四杯淹れたければ四杯分の水
一杯だけなら一杯分の水を測って淹れてあげなくてはなりません

コーヒー豆はおそらく単純に挽く時間で何杯分かを制御している模様

ステンレスフィルターと紙フィルターが付いてきます
わたしはステンレスでいいです

ガラスのサーバーではなくステンレスの断熱とは言えない上部がプラスチックのサーバーが付いてます

サーバーは、注ぐ時、ほぼ垂直にしないと出切らないので、なんかイマイチな気がします

味は、、、まぁ、微妙かなぁ
不味くはないですが、
自分でネル使って淹れた方がうまい気がします



2023年9月29日金曜日

ESP32サーボ

ESP32で サーボを3つ動かしたいけどやり方がわからないと相談されたので作ってみました

BTシリアルから A10 B10 C10 のように送信すると、A,B,Cのサーボが動きます

依頼された方のソースを修正したものですが、

オリジナルはおそらくESP32サーボのサンプルソースだと思います

流用は問題ないと思いますので、

ピン配置(18,19,20の部分)等、カスタマイズはご自由にどうぞ



#include "BluetoothSerial.h"
#include <ESP32Servo.h> // Include the ESP32 Arduino Servo Library instead of the original Arduino Servo Library


BluetoothSerial SerialBT;

Servo myservo[3];  // create servo object to control a servo

// Possible PWM GPIO pins on the ESP32: 0(used by on-board button),2,4,5(used by on-board LED),12-19,21-23,25-27,32-33
int servoPin[3] = {18,19,20};      // GPIO pin used to connect the servo control (digital out)
String motorName[3] = {"A","B","C"};
int val[3] = {90,90,90};    // variable to read the value from the analog pin

void setup()
{
  //BTの処理
  Serial.begin(115200);
  SerialBT.begin("ESP32test");

  //Servo用の処理
  // Allow allocation of all timers
  ESP32PWM::allocateTimer(0);
  ESP32PWM::allocateTimer(1);
  ESP32PWM::allocateTimer(2);
  ESP32PWM::allocateTimer(3);
  myservo[0].setPeriodHertz(50);// Standard 50hz servo
  myservo[0].attach(servoPin[0], 500, 2400);  
  myservo[1].setPeriodHertz(50);// Standard 50hz servo
  myservo[1].attach(servoPin[1], 500, 2400);  
  myservo[2].setPeriodHertz(50);// Standard 50hz servo
  myservo[2].attach(servoPin[2], 500, 2400);
}

void loop() {
    int s,e;
    String tmp[3];
  //Bluetooth経由でのデータ取得
  if (SerialBT.available()) {
    String receiveData = SerialBT.readStringUntil(';');
    receiveData.replace(";"," ");
    // Search A,B,C
    for (int i=0;i<3;i++){
      s = receiveData.indexOf(motorName[i]);
      e = receiveData.indexOf(" ", s);
      if (s != -1){
        // set val
        tmp[i] = receiveData.substring(s+1, e);
        if (tmp[i].length() > 0){
          val[i] = tmp[i].toInt();
        }
      }
    }
    if(receiveData.length()>0){
      String tmpStr = "received A=" + tmp[0] + " B=" + tmp[1] + " C=" + tmp[2];
      SerialBT.print(tmpStr);
    }
  }
  for (int i=0;i<3;i++){
    myservo[i].write(val[i]); // set the servo position
  }
  delay(200);                 // wait
}

2023年9月23日土曜日

 Swiftでファイル操作

ファイル作成して、文字列を出力なんだけど
UTF-8も手軽

ちなみに
RaspberryPi4にWindowsのVSCODEからSSHで接続し、
RaspberryPi4上でSwiftのコンパイルして実行してる

間隔としてはMac上のXCodeで開発してる方がやはり良い
VSCodeだとあまり補完されない

Swiftならもうどこでも動かせるようになってきたので、
これからはSwiftでしょ?

Golang、Rustなど最近の言語を触ってきたけど、
Swiftが抜きんでている




開封の儀という時間の無駄

やる必要を感じない開封の儀だらけ
iPhone15ごときで記事なんざ書けないだろ
だって目新しさないんだから
pro maxの空間動画ってのは気になる

2023年9月22日金曜日

土壌phが!







雨後ですが、
いちじく鉢の土壌phを測ったら5.6 !
これはこのあたりの酸性雨のphと同じです
水が乾燥すると当然酸性度はもっと上がります

慌てて牡蠣殻石灰撒きました
鉢のphを測定しながら水くれてたら、測定器本体にかかり、内部まで染み込んでパネルがチャプチャプに!

こんな見かけなのに防水じゃないの?

仕方なく分解して組み直しました
ほっとくと絶対に基盤と液晶を繋ぐ導電ゴムのところが錆びます

買った瞬間に壊すところでした
次からはzipロックでも被せて使います

2023年9月18日月曜日

日本語プログラミング言語

最初に書いておこう
日本語がプログラミングに向いていないと言う論文は沢山見た
それに反論する論文もかなり読んだ

よく探せば似たような議論は過去に何度もあった

個人的には日本語はプログラミングに向いてないと考えている
ぴゅーたの頃からやりづらかった
なでしこはピンと来ない
HSPも変数は日本語が使える
UWSCも使えた

新入社員にC#でクラス宣言作らせたら
日本語のクラス作られた事があって
流石に勘弁してくれと思った

英語が話せない人は居る
彼らにとっては日本語であってほしいのかも?

だけど、英語圏の検索もしなければならないし
出てきた内容をいちいち日本語に翻訳しないと読めないと言うのは、時間がかかりすぎてはないのか?

本人が英語を堪能になれば良いだけのことなのだが、、、

そういえば、外資系で5年も勤めていて一つも英語が上手くならない人がいた

ウエンツ氏も家族に英語話者がいるにも関わらず話せないと言う

一体どうなっているのだろうか

もしそう言う人がプログラムに興味を持ち
日本語で組みたいと思うのなら
自分で作るしかない

コード中に日本語での変数宣言やクラス宣言などが出来る言語は、前述の通り多数あるが、それらでは無いのだろう

Cのマクロでお嬢様言葉によるプログラミングを可能にしたと言う記事も見たが、それでもないのだろう

第五世代コンピュータの頃にもてはやされたPrologはどうだろうか

述語論理でコーディング出来るのはかなり面白い発想だと思うのだが

今のプログラミングスタイルの言語では
日本語の有利性を活かしきれない

自然言語でプログラミング出来る時代が来れば
日本語だの英語だのは関係なくなる気もする

その時代になれば
動きに文句つけるだけで
お望みの入出力が得られるようになるだろう

そう言う時代が来ることは大歓迎だ

日本語で組みたいと言う前に
完成系をイメージして欲しい

「日本人だから日本語は読めます」
  と言うだけでは

プログラミング言語を日本語にする理由として
あまりに安易だ

それと言語を作るのは結構センスが要る

わたしはPerl6を認めない
Perlの生みの親が作ったのだとしても認めない

Rubyも認めない
あんな半年後に自分でも読めなくなる言語
作ってほしくはなかった

プログラミング言語というのは
単純な予約語の組み合わせだけで
誰が組んでも同じ仕上がりになってくれないと
メンテナンス出来ない

そういう意味で
Pythonが使われるのは理解できる

Luaのように簡単な言語でも動くものは作れるという実験も理解できる

単純さを突き詰めるとニーモニックになるし
複雑さを突き詰めると日本語プログラミング言語になるのかもしれない

国の言語によらない書き方の方が便利なので
結局落とし所は既存プログラミング言語なのだ

ここの欄は電話番号です、こちらは郵便番号ですと日本語で書いたら、そういう機能が実装されるというのなら、まぁ、アリかも?

HTMLとか書かないで、以下の項目について入力欄を用意して、格好よくバランスよくレイアウトして、ボタンを押したらサーバにJSONで送信するみたいな仕様書にもならない戯言からよろしくやってくれるなら大歓迎する

正直わたしはHTMLのようなタグで書かないとブラウザが表示してくれない点について疑問に思っている
YMLで書けばもっと短くなるし
JSONで書けばそのままJavaScriptでも扱いやすくなる

動的にJSONからHTMLを作り上げるJavaScriptなんかどなたも書けるだろう

HTMLじゃなくてTeXにしてくれと思ったこともある

HTMLもオワコンになる日は来ると思っている

脱線したが、どこまで楽ができるフレームワークがあるのかと言う議論の方が、言語の種類に関する議論よりも有意義だ

2023年9月7日木曜日

ラズパイ

ラズパイを6台持ってる事を自慢げにラズパイOSを語ろうとする人が居るのだが

一般のご家庭ではラズパイ6台くらい普通に持ってるだろ?

うちでも録画マシン、再生マシン、開発用、3Dプリンタで常時ラズパイ4が4台動いてる

3Dプリンタ以外の3台は電源つけっぱなしです

ラズパイ4の前は同じ目的でラズパイ1から3までずっと使い続けてきてるのだから、
探したら沢山出てきます

それにOSなんて、サーバOSに決まってるだろ
デスクトップとして使うなよ
選択肢なんて他にありません
アホかと思った
デスクトップ使うなら普通にPC使いましょう

ラズパイに入れられる軽量OSとかの記事
マヂうざいので書くな
書くならK8Sの記事にしとけ
K8S で何やるか知らんけど、、、



2023年9月6日水曜日

Java BigDecimal CompareTo

こんな感じで結果を見てみる

        BigDecimal aa;
        BigDecimal bb;
        aa = new BigDecimal(100);
        bb = new BigDecimal(100.0);
        System.out.println("aa.compareTo(bb):" + aa.compareTo(bb));
        aa = new BigDecimal("100");
        bb = new BigDecimal("100.0");
        System.out.println("aa.compareTo(bb):" + aa.compareTo(bb));

まぁ予想通りだとは思うが

こんな感じになる

aa.compareTo(bb):0 aa.compareTo(bb):0

値でも文字でも小数点あろうとなかろうと、

等しかったら結果はゼロになります

こういう点でBigDecimalは便利


なんでこんな分かり切ったことを書いているかと言うと、

あるサイトで、JavaのBigDecimalのCompareToの結果、

等しかったらTrueになると書かれていたのと、

そのサイトの主が関西で140-170/80~120万(140から170時間、それ以下は減額、それ以上は増額、単価80~120万て意味でしょうね?)で探してると書かれていたので、

あんたにそんな価値ないよ、

せいぜい新人レベルよ?(50~60じゃないの?)

と思って書く気になった次第であります


2023年9月2日土曜日

Ubuntu Serverのアップグレード

サーバーバージョンのUbuntuの場合、以下でOS更新ができるらしい
sudo do-release-upgrade
へー知らんかった

だが、これ打ち込むとすごく脅される

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?

Continue [yN] Y

Starting additional sshd

To make recovery in case of failure easier, an additional sshd will
be started on port '1022'. If anything goes wrong with the running
ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port. As
this is potentially dangerous it's not done automatically. You can
open the port with e.g.:
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT'

To continue please press [ENTER]

たしかにSSHでこれやるのは超危険
でも、とりあえずEnterしてみる

この後、あれこれダウンロードしたりチェックしたりして、その後さらに聞かれる

Do you want to start the upgrade?


7 packages are going to be removed. 264 new packages are going to be
installed. 1112 packages are going to be upgraded.

You have to download a total of 820 M. This download will take about
5 minutes with your connection.

Installing the upgrade can take several hours. Once the download has
finished, the process cannot be canceled.

Continue [yN]  Details [d]

yで継続

まだ聞かれる・・・
そりゃサービスの更新くらいありますよね


YESで継続

さらに聞いてくる


んなの、別にいいよ、新しいの入れる

さらに聞かれる


わからんけど、新しくします

minidlnaも聞かれた


デフォルトでKeepでいいです

なんか消すらしい


yで継続


はいはい、Abortで、、、え?これ、YESなの?
(YESが選ばれてるのだからYESなのだろう)

最後に再起動を促される


さて・・・起動するだろうか?

あれ???
sshでつながらない、refuseされた

しかたないので、モニターとキーボード付けて起動してみたところ・・・
Emergency Mode ?
Give root password for maintenanceとか出てくるんですけど・・・
パスワード入れて、メンテナンスモードになり、とりあえずfstabでも見てみる

vi /etc/fstab
あ、UUID指定してマウントしてる・・・
今外付けのドライブ外してるんだった

とりあえず、先頭に#付けてコメントアウトしexit(exitすると再起動になる)
起動してくれました・・・

一瞬焦る・・・
それにしても、fstabは毎回ハマるんで、自分もそろそろ脳みそのアップデートがしたい






2023年8月20日日曜日

万年筆について

最近意識して書くようにしています
漢字を思い出す事、頭を整理する事、見返す事が出来る点から、日記を付けています

そしてその際には、スラスラ書けることが大事であり、一種の儀式として万年筆を使うことにしています

すでに様々なメーカーの万年筆を試していますが、最良の万年筆には出会えていません

わたしが求める条件は少ないと思います
  1. 乾かない事
  2. 太すぎないこと
  3. 読めるインクの色である事
  4. カリカリではなくスラスラでありヌルヌルでは無いこと
まず、コンバータを使うとして、コンバータの容量は少なくとも構わないと考えます
日記では複数のインク色を使います
黒以外の赤や青、その他はあまり使うことがなく、線を引いたり、一文を文字色を変える程度にしか使いません
コンバータに大量にインクが入ったとしても、たまにしか使わないので、半年や一年はそのまま使う事になります
使い切る前に乾く位なら、コンバータのインク量など少なくて構いません

わたしが万年筆に求める第一条件は、何をしても乾かない事です
十年でも乾いて欲しくありません
乾くくらいなら万年を名乗るなとさえ思います

少し言いすぎました
RotringのISOGRAPHでさえ10年は無理です
実は10年以上放りっぱなしだったISOGRAPHを取り出してみましたが
ISOGRAPHでもプラスチック部分が劣化し、
インクは分離したり乾いたりしてしまいます

やはり道具は人が使わないとダメになります

次に字幅ですが、システム手帳に書いているので、あまり太いと潰れます
細いとインク消費が少なくなり、使い切る前に乾く事になります
したがって、潰れない程度に細い事が第二条件です

さらに、インク色ですが、仮にも筆記具メーカーなら、文字を書いて読めるインクの色を作っていただきたい
黄色!
わたしが好きでたまらない黄色で書いた文字が全然読めない!こんなインク作ったメーカーはどこだ!と怒りまくった事があります
わたしの愛する黄色に失礼なので、
やめていただきたい!

最後に書き味ですが、カリカリするくらいならGペン使います
スラスラ書けるのが万年筆なんで、そこの調整はきちんとして頂きたい
だけど、インク出過ぎてぬらぬらとか、ドバドバ出るのは使い物にならないのでやめていただきたい!

たかだかこの程度の条件なんですが、、、
なぜ見つからないのでしょうか、、、

唯一、マシかなと思って常用しているのは、アウロラのイプシロンです
わたしの愛する黄色いボディなので、大抵のことは許せると言う点もあるのですが、結構乾きづらい万年筆であり、スラスラ書くこともできます

さて、余談として最後に日本メーカーに言いたい事があります
コンバータはヨーロッパ共通規格に変えてください
各社違うとか大迷惑です
どうせこだわりなんかないですよね?




2023年8月19日土曜日

タバコを土に埋めると

何やらタバコを土に埋めたらフィルター以外は土に返ったと言う動画を見ました、、、

結論から言うと、タバコのフィルターも時間をかければ分解していきます
すでにわたしが実験済みです

タバコのフィルターは酢酸セルロース、またはアセテートで、カセットテープやフイルムの素材で生分解性があります
3Dプリンタでよく使われる生分解性プラスチックとされるPLA(ポリ乳酸)よりも生分解性は高く、酢酸セルロース素材のフィラメントも3Dプリンタ用に研究されています
マイクロプラスチックで問題になるのはABS、PET、PA(ナイロン)、PC(ポリカーボネイト)、PS(ポリスチレン:発泡スチロール)など数多くのプラスチックで、生分解性はほぼありませんが、屋外でも多く使われている上に、農業資材にも使われています
田畑の土壌はマイクロプラスチックだらけです
タバコのその他の素材は自然由来であり、葉や紙はすぐに分解します
自然界ではニコチンなどよりも断然毒性の強い植物は多く、よくお庭で見かけるキョウチクトウは燃えても人が死ぬような煙が出ます

2023年8月12日土曜日

Swift on RaspberryPi

 以前会社のサーバをぶち壊してから、

RaspberryPi4にしようと思って手に入れていたのだけれど、

GoogleWorkspaceに移行して使いどころがなくなっていた

(他にも3Dプリンタや録画サーバ、LibreElecで常時3台のRaspberryPi4が動いている)

会社サーバはRaspberryPi3だったのだが、4を手に入れセットアップだけは済ませて放置していた

Ubuntu23.04 Serverを入れてある


Swiftだけど、ここにやり方が書いてあるので、各自ご勝手にどうぞ

https://www.swift.org/download/

懇切丁寧に書くつもりはない

どこぞで、偉そうに書いているブログでも参考にしてください

(上記リンク見ればやり方わかるのに、ここで解説する愚行はしません)






2023年7月30日日曜日

Google コミュニティガイドラインに準拠していない

 ずっとこれの意味がわからなかった




どの投稿ですか?
と思って、プルダウンを見たら、下書きになっているものがある
なるほど、これか?
と開いてみたら、非表示になっていた
どうやらわたしは、偽のサイトのリンクを張り付けていたらしい
申し訳ない・・・


2023年7月29日土曜日

Windows WSL2 でnginx + CGI

今回の目的だが、初心に戻るため、

KENT-WEBさんのCGIをDocker+nginx+CGIで動かす

という事を目的にしている

したがって、動かすCGIはPerlとなる

ちなみにCGIとSSIについては以下を参照して欲しい

https://serverkurabe.com/cgi-and-ssi/


誰か同じことやってないかと探してみたら、

こちらに発見

https://github.com/dai65527/nginx_cgi_on_docker

ちょっと編集して自分の環境に合わせて使わせていただくことにしました


以下手順


 WSL2を起動

適当なフォルダ(~/workにしておく)でDockerfileをつくる

~/work/Dockerfile

FROM    debian:buster

RUN     apt-get update && apt-get -y upgrade \
        && apt-get -y install \
            nginx \
            fcgiwrap \
            perl \
            vim

RUN     cp /usr/share/doc/fcgiwrap/examples/nginx.conf /etc/nginx/fcgiwrap.conf

RUN sed -i \
        -e s/'\/usr\/lib'/'\/var\/www\/site_a'/ \
        /etc/nginx/fcgiwrap.conf
RUN     mkdir -p /var/www/site_a/cgi-bin

COPY    ./srcs/default /etc/nginx/sites-available/default
RUN     chmod 644 /etc/nginx/sites-available/default

COPY    ./srcs/cgifiles /var/www/site_a/cgi-bin/
RUN     chmod -R 755 /var/www/site_a/cgi-bin/

COPY    ./srcs/entrypoint.sh /
RUN     chmod 755 /entrypoint.sh

CMD [ "/entrypoint.sh" ]

一応解説

nginxとfcgiwrapとperlとvimも入れておく

fcgiwrapとfastcgiに関しては以下を参照

http://www.pasokuma.net/linux/server/nginx/nginxfcgi.html


fcgiwrapのexampleにあるnginx.conf をfcgiwrap.confにコピーすることで

fcgiwrapを動かす準備をする


fcgiwrap.confの/usr/libを/var/www/site_aにしておく


つづいて、nginxの設定を用意する

nginxの動作としては、/var/wwwにサイトをいくつも動作させることが出来る

例えば、/var/www/ownCloudとか/var/www/Corporatoinとか動かすことが出来るのだが、それらの設定を/etc/nginx/sites-availableに置いておいて、

そこのシンボリックリンクを/etc/nginx/sites-enabledに貼ることで、サイトの設定を有効にする


今回は、/var/www/site_aというサイトを動作させる

~/work/srcs/default

server { listen 80 default_server; listen [::]:80 default_server; root /var/www/site_a; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } include fcgiwrap.conf; }



つづいて、~/work/cgifilesと言うフォルダを作り
そこにテスト用のCGIを準備しておく
~/work/cgifiles/perl.cgi
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<h1>Hello perl.cgi !!</h1>\n";
print "<p>AUTH_TYPE = \"$ENV{'AUTH_TYPE'}\"</p>\n";
print "<p>CONTENT_LENGTH = \"$ENV{'CONTENT_LENGTH'}\"</p>\n";
print "<p>CONTENT_TYPE = \"$ENV{'CONTENT_TYPE'}\"</p>\n";
print "<p>GATEWAY_INTERFACE = \"$ENV{'GATEWAY_INTERFACE'}\"</p>\n";
print "<p>PATH_INFO = \"$ENV{'PATH_INFO'}\"</p>\n";
print "<p>PATH_TRANSLATED = \"$ENV{'PATH_TRANSLATED'}\"</p>\n";
print "<p>QUERY_STRING = \"$ENV{'QUERY_STRING'}\"</p>\n";
print "<p>REMOTE_ADDR = \"$ENV{'REMOTE_ADDR'}\"</p>\n";
print "<p>REMOTE_IDENT = \"$ENV{'REMOTE_IDENT'}\"</p>\n";
print "<p>REMOTE_USER = \"$ENV{'REMOTE_USER'}\"</p>\n";
print "<p>REQUEST_METHOD = \"$ENV{'REQUEST_METHOD'}\"</p>\n";
print "<p>REQUEST_URI = \"$ENV{'REQUEST_URI'}\"</p>\n";
print "<p>SCRIPT_NAME = \"$ENV{'SCRIPT_NAME'}\"</p>\n";
print "<p>SERVER_NAME = \"$ENV{'SERVER_NAME'}\"</p>\n";
print "<p>SERVER_PORT = \"$ENV{'SERVER_PORT'}\"</p>\n";
print "<p>SERVER_PROTOCOL = \"$ENV{'SERVER_PROTOCOL'}\"</p>\n";
print "<p>SERVER_SOFTWARE = \"$ENV{'SERVER_SOFTWARE'}\"</p>\n";


Dockerfileに記述した通り、/var/www/nginx/site_a/cgi-binにコピーされ、
http://localhost:8080/cgi-bin/perl.cgiにアクセスすると上記が動く

つづいて、entrypoint.shの準備

~/work/srcs/entrypoint.sh

#!/bin/bash

echo 'starting nginx and fcgiwrap'
nginx
/etc/init.d/fcgiwrap start
echo 'done'

これの役割は、fcgiwrapのstart

Dockerfileの最後でこのentrypoint.shを実行する

以上でフォルダ構成は次のようになる

/home/xxx/work
├── Dockerfile
└── srcs
    ├── cgifiles
    │   └── perl.cgi
    ├── default
    └── entrypoint.sh


いよいよ?ビルドから始める

$ docker build -t nginx_cgi .


続いて起動

$ docker run --rm --name nginx_cgi -d -p 8080:80 nginx_cgi

起動したら、さきほどのhttp://localhost:8080/cgi-bin/perl.cgiにアクセスし、
CGIが起動することを確認する

DockerDesktopを入れていたら、そちらでも確認できる


動くことを確認したら、site_aのフォルダをWSL2にマップし、
VSCodeで編集できるように起動し直す
DockerDesktopでコンテナを削除し、以下でもう一度起動

$ docker run --rm --name nginx_cgi_test -d -v ~/www:/var/www/ -p 8080:80 nginx_cgi

VSCodeを起動し~/wwwにアクセスすると、Dockerの/var/wwwがマップされている状態になる
cgi-binはマップ先に無くなっているので、~/www/site_a/cgi-binを作り、
そこに先ほどのperl.cgiを配置
以下の様に755をつける

$ chmod 755 ~/www/site_a/cgi-bin/perl.cgi

http://localhost:8080/cgi-bin/perl.cgiで表示されることを確認する

kent-webさんのCGIで、今回は、チャットシステムのWindyを動かしてみる

ダウンロードしたZIPを解凍し、WindyフォルダのCGIを~/www/site_a/cgi-binにコピー
index.htmlはkent-webさんのサイトのチャットサンプルから、ソースを表示して丸コピしてつくり、~/www/site-aにコピー
chmodでkent-webさんのページの指示通りに設定
これで動くはずなのだけど、私は先走って、index.htmlからUTF-8化し、
全部のCGIもUTF-8化しまくって文字化けしまくってしまった
まぁ、あれこれやると動くようになるのだけど、丁度こちらのサイトを発見
http://mycc.s33.xrea.com/data/pc/perl_use_utf8.html
こちらを参考にしてあれこれ変えてみたところUTF-8で動くようになりました


申し訳ないけど、どこをどう変えたかは、分かるようにこちらに張り付けるわけにはいきません
KENT-WEBさんは著作権を放棄されているわけではなく、
わたしが修正したからと言って、そのコードをここに張り付けるわけにはいかないのです
ヒントは上記サイトにありますので、そこを参考にしていただきたい

===最後に===
今回は複数のサイトで得た情報をまとめただけで、
わたしが何か新しいことをしたわけでもなんでもありません
情報をWEBに公開されている方々にお礼申し上げます

最近、Javaの仕事が多く、思ったよりJavaが遅いという認識に至りました

WEB技術でクソ重い物をつかわずとも、
CGIの方が早いし開発もしやすいのではないかと、
かつて大変お世話になったKENT-WEBさんのチャットを取り上げさせていただきました

若い人たちに是非ここの内容をトライしていただきたいです
WSL2でなくとも、ご自宅に眠っているラズパイでも動かせると思います
ドメインを取得してDDNSで自宅のサーバを動かすこともできます
つまり、自分で作ったサーバを外部に公開することも出来るという事です
ただし、その場合、LetsEncryptなどで証明書を作ったり、nginxの設定を変えたり、
あれこれやることはあります

しかし、やってみることは勉強になるでしょう
攻撃を食らって、ログを見て絶叫してみるとか、
監視してみるとか、
自分の知識を広げることもつながることでしょう

2023年7月24日月曜日

PocketChip





もう7年前だ
PocketChipというものがKickStarterで始まり、
わたしはそれを購入しました
そして作ったのが上記のLifeGameです
Pico8と言う、昔の8ビットっぽいゲームを作るフレームワークが入っています
言語はLuaです
これを使ってLifeGameを作りました

PocketChipを手に入れた殆どの方は開封の儀とやらしかやらないのですが、
わたしはプログラマですし、Luaも使い慣れています
開封の儀と言うくだらないことはやらず、
いきなりプログラムして動かすのがわたしの流儀です

このガジェットは面白い開発環境になりました
昔はシャープのLinux Zaurusでプログラムしていましたが、同じような事ができます

そう考えると、当時あのようなデバイスを作っていたシャープは本当に凄いものを作っていたと思うのです

しかしながら、この世の中にはプログラマが居ないのでしょうか?

おそらくPocketChipを手に入れ、わたしのようにプログラムした人は居ません
見たことが有りません

ZaurusもPocketChipもプログラミング環境として使う人が殆ど居ません

みなさん一体これを手に入れて何をするつもりだったのでしょう?

ゲームですか?

わたしはゲームプログラマでしたが、ゲームはしません

pico8のようなゲームフレームワーク、ゲームエンジン、WEBフレームワーク、データベースなどを作るにあたって、いつでもプログラムが出来るのはとても便利です

最近だと、WEB版のVSCもあるので、開発環境が作りやすくなりました
やろうと思えばiPadでも開発できます

わたしはプログラムを組むのが大好きです

2023年7月2日日曜日

銅、アルミニウム、鉄の調理具

定期的に似た内容書いてると思いますが、、、

足尾鉱毒事件を知っている方は、
緑青が毒であると認識しているのではないでしょうか

しかし、足尾の件はカドミウムが原因でした

あのいかにも毒々しい緑青と呼ばれる銅のサビは人体に無害との事です

アルミニウムの鍋を使っているとアルツハイマーになると言うのも現在は否定されています

アルミニウムは土壌に多く存在しており、植物にもよく吸収するものがあります

例えば緑茶、ツバキ、紫陽花などで、ドイツでは緑茶のアルミニウムを問題視する声もありました。

緑茶抹茶を含むもので、例えば抹茶クッキーなども対象に調査されましたが、それも2019年あたりに問題なしと発表されています

アルミの鍋も銅鍋も使っていて問題ありません

鉄のフライパンも当然無問題です
そもそも血液のヘモグロビンはヘム鉄です

鉄の赤錆は、体に悪いどころか、貧血防止になります

2023年7月1日土曜日

マイクロプラスチックに関して

https://www.businessinsider.jp/post-271610

わたしの感覚になりますが、土壌や海洋プラスチックは100年でも分解されないと感じています

プラスチックの中でも、ABSや発泡スチロールは紫外線で劣化しやすく、すぐにマイクロプラスチックになり、土壌に紛れ込みます

肥料や野菜種の表面をプラスチック類で覆う加工をしたものもあり、これらもマイクロプラスチック化して、植物の成長に影響する事は知られています
そうして、できた野菜類の中にも混入していきます

プラスチックが紫外線で劣化してマイクロプラスチック化するのは、樹脂の性質のようなもので、自然に帰ろうとしているだけなのですが、微生物の中には、圧倒的な世代交代の速さにより、プラスチックの分解能力を持つ進化を遂げたものが現れてきています

まさかこんなに明確な形で生物の進化を目の当たりにすることがあるとは思いませんでしたが、彼らが地球表面を覆うように分布するまではそれなりに時間がかかるでしょうし、そうなれば屋外でプラスチック製品を使っていると、とんでもない速度で分解される世界がやってきます

ビニールハウス、マルチ、ペットボトル自販機のジュース、車やバイクの外装などもすぐにボロボロになるでしょうし、家の塗装も穴だらけになるかも知れません

マイクロプラスチックの処理方法としては、土壌表面も、海水も濾過して、得られたプラスチックは焼却していくしかないと思っています

2023年6月15日木曜日

会社のサーバ壊しました→Google Workspaceへ

会社のサーバがイカれた
と言うか自分が壊したんだけど、、、

会社のwebサイトとメールが使えなくなってやばい

この際Googleワークスペースにしようとやってみたら、スマホで設定完了
DNSの設定も楽ちんでした

メールは全部Gメールだけど、外部からは全然わからないと思います

今までのドメインは使えますし、ドメインは、お名前ドットコムで2030年まで買ってあります

ドライブの容量は1人あたり1Tあり、
スプレッドシートで多人数が同時に編集しても余裕
共有設定管理しやすいし
機能はまだまだあるけど、
これで1人1632円/月??
払うよ、そんなの!!

めでたくメールとストレージは復活出来ました

少しメアドが変わってしまったので、関連企業様にお知らせしないといけません

あとは、会社のwebサイトと、出来ればOwnCloudも再構築しようと思って、ラズパイ4とSunDiscのメモリ買って、届くのを待っているところです

今回の敗因は、OSにラズパイOS使ってたところで、、、
構築したのがかなり昔で、
Ubuntuサーバなんてインストール出来なかった時代でした
今回OwnCloudのアップデートしようとして、PHP7.4入れる途中に失敗

まさかaptが消えてなくなるとは思いませんでした

apt 消えたら何も出来ないじゃん!

とかやってた過去の自分とは、
ご苦労様と言い捨てて訣別しました

2023年6月12日月曜日

ChatGPTって、、、

なんだ、ChatGPTって、わたしが昔から提唱していた意味ベクトルじゃ無いか
「意味ベクトル」と言う単語を作ったのは、わたしだぞ?

わたしが考えていた会話システムは以下のような仕組み

人の話す言葉には、話の流れとなる全体的な話の方向がある
これを話方向ベクトルとする

単語の組み合わせにも、Aという単語の次にBという単語の出現する確率と言うのがどのくらいあるのかというのがあって、例えば、Good の後には、JobやMorningが繋がることが多いだろう
これをタングラムと言う
例えば、ハリーポッターに出てくる単語全てを列挙して、どの単語の次にどの単語が繋がるのかというリストを作ると、著者の書き癖が出てくる

会話の中で出やすい単語の組み合わせというものがある

この組み合わせを単語連携ベクトルとする

さらに単語連携には、感情面も考慮する必要があり、間違うと悪い言霊のように人を呪う言葉ができてしまう

逆に言えば、言霊は、単語連携ベクトルの結果だ

正の感情と、負の感情を意味する単語連携もあるので、おそらく、ChatGPTには、感情を抑止するような単語組み合わせを選ぶように、感情ベクトルも考慮されているのではなかろうか

じゃ無いと喧嘩になるからね

話方向ベクトルと、単語連携ベクトル、感情パラメータなどの組み合わせで、そこそこ人の話に合わせた辻褄の合う話の返しが出来る

人の会話も、
反射神経的な側面がある
ベクトルを持った発言が、壁にぶつかって跳ね返ってくるような会話だ

例えば
女子トークね

あんな高速反射会話技能は男子には無い

2023年5月7日日曜日

3Dプリンタに加速度センサーをつけた

まずは、AdafruitのLIS3DHをデルタのエフェクター上面に設置する部品を作る
設計はいつものOnShapeを使った




出来たのでくっつけてみた




INTとCSはIO8版に付けた
当初、まとめて同じドーターボード用コネクタに配線したが動かなかった
どうもDuet3 MB 6HC初期型の問題のようで、フォーラムでもこれはダメだと言われている
もしかしたら、現行バージョンも駄目かもしれないので、INTとCS(オレンジと白の配線)は空いてるセンサー用のピンを使うのが良い
ドーターボードにはそもそもPT100用の基盤を付けていたのだが、INTとCSを外だししなければならないようなコネクタなので、PT100が動くかどうか信用できなくなってきた
PT100は高いし、今後も使わないと思うので、加速度センサーに使ってしまうのはアリだけど、配線がダサくなるのがなんか嫌だ




ようやくセンサが動いてくれたので、プラグインでプロファイルを選び、加速度センサーを読み込んでみる





その中で、一番効果の高いものを選定し、config.gに設定を書き込む
今回はZVDDDが良さげだったので、
M593 P"zvddd" F40
を書き込んだ
書き込んだ後、ゴーストが良く出るSTLをプリントしてみた




途中で飽きたのでここまでにしとく
ゴーストは特に観察されないので、オッケーだ



2023年2月14日火曜日

JavaScriptでテーブルの動的生成

JavaScriptでテーブルの動的生成なのだが、

ググってみると、どうも皆さん、

よくわからない書き方をしているので、

書いてみた

やろうと思えばJQueryのDataTablesのようなものが作れます


<html>
<!DOCTYPE html>

<head>
    <meta charset="utf-8">
    <title>テーブルの動的生成</title>
</head>

<body>
    <table>
        <thead>
            <tr>
                <th>id</th>
                <th>name</th>
                <th>price</th>
            </tr>
        </thead>
        <tbody id = "tb">
        </tbody>
    </table>
    <script>
        js = [
            {id:1,name:"りんご",price:100},
            {id:2,name:"みかん",price:200},
            {id:3,name:"とまと",price:300}
        ];
        var tb = document.getElementById("tb");
        var tr;
        var td;

        js.forEach(element => {
            tr = document.createElement("tr");
            td = document.createElement("td");
            td.innerHTML = element.id;
            tr.appendChild(td);
            td = document.createElement("td");
            td.innerHTML = element.name;
            tr.appendChild(td);
            td = document.createElement("td");
            td.innerHTML = element.price;
            tr.appendChild(td);
            tb.appendChild(tr);
        });

    </script>
</body>


こんな感じでテーブルが出来る

以上








2023年2月9日木曜日

Oracle Linux を RaspberryPiのDockerで動かす

docker pull arm64v8/oraclelinux:9-slim

docker run -it arm64v8/oraclelinux:9-slim

以上終了・・・

Oracleが用意したLinuxというだけで、中身すっからかんでした・・・

ここにOracleDatabase入れられるのだろうか?

本当はそっちが目的だったのですが・・・

うーん、現時点ではだめぽ

OracleInstantClientはあるけど、

Databaseが無い・・・

OracleDatabase を RaspberryPiに入れること自体無理があるのだろうか?

ソースあれば落としてコンパイルできるんだがなぁ・・・

2023年2月6日月曜日

VSCode+WSL2でHTML編集場所を作ってGit初期化、Dockerでnginxを起動して、WindowsのブラウザからHTML表示まで

vscode起動

wsl2へリモート接続
ここまではどこかのやり方を見て欲しい

vscodeのターミナルから以下実行
mkdir ~/html_lectures
cd ~/html_lectures
git init

続けてDockerでnginxを起動し、HTML編集場所のルートを/usr/share/nginx/htmlへマウントし、nginx側の80を8080にバインドして起動
docker run --name nginx -d -v $(pwd):/usr/share/nginx/html -p 8080:80 nginx

続けて、
~/html_lectures/lecture1/index.html を適当に作成

Windowsブラウザから
localhost:8080/lecture1/index.html で表示

デバッグは正直VSCodeではなく、ブラウザでやったほうが便利

あとはVSCodeで普通にgitへプッシュ