2024年1月19日金曜日

dosvaxj3が更新されていた。

 最近、エミュレータ系をあまり触っていなかったのだけど久しぶりに見てみたらタイトルのようにdosvaxj3が更新されていた。

on emulatorでセルフにcなどのソースを書いて実行するのに母艦側の特定のフォルダをドライブとしてマウント出来たり普通に母艦のimeで漢字が入力できるので便利なことこの上ない。

最近スピードが良い感じだと思っているvmwareと次点のvirtualboxの同様な環境でちょっとベンチを取ってみた。

左上がvmware17+pc-dos7jで右上がvirtualbox7+pc-dos7jで左下がdosbox0.74,そして右下がdosvaxj3-240110となっている。

フォント指定で問題があるのかVGA画面への描画でdosbox系が所要時間の表示がつぶれているがその後のテキスト画面への描画を見てみると
問題なく表示されているのでちょっと不明である。
vga画面が扱える別のcを入手していずれ試してみるつもり。
一応、速度を見てみると
vmware:virtualbox:dosbox:bosvaxj3 = 1:1.6:10:5 のような比率になっている。dosbox系の速度設定はmaxにしている。
単に速度を稼ぎたいときはvmwareが良い感じかもしれない。
そしてもう一つvirtualboxに対してvmwareのアドバンテージは母艦側のフォルダを仮想ドライブ(の1フォルダ)として参照できるということである。IMEが直接、入力用として弄れないまでもこのことにより長めのテキストやソースファイルも母艦側で操作できるのは嬉しい。
暫くはemulatorはvmwareとdosvalj3を中心にして遊ぼうと思う。






2023年8月2日水曜日

やはりダメなのか?

 先月はアップし損なった。

やはりdotnetでrunでエラー。もうしばらくはmacでdotnetはいいやってなりました。

どうせ共通化して遊ぶならpythonのほうがコンパイルとか面倒なこと無いし。

で、月が変わっているのに気づいて遅まきながら愚痴ってしまいました。

当面はpythonでお茶を濁していきます。

2023年6月17日土曜日

macosをupdateした。

 仕事に使わないリビング用PCにmacbook pro 2013 lateを使っている。

興味のあるちょっとしたプログラム書きとwebブラウジングにしか使ってないのでmojaveと心中するつもりでいたんだけどpythonのライブラリーでcv2とか入らないのが出てきたので他のプログラムはともかくdotnetとpythonとccで動かないといろいろと支障が出る気がしていんだけどchromeからもmojaveは今後アップデートしないよって言われたもんだから急遽big surにupdateすることにした。

ディスクをクリーンしておいてtime machineでバックアップしてシステム設定からbig surを指定して約数時間で更新完了。

その後も起動時に32bit版だから上げてねみたいなメッセージに一通り答えて、ついでにもう使わないからいいやと思えるpallarelsとか消してちょっと落ち着いたのでこのページを書くことにした。この際にと思ってxcodeとかも消したのでgccとか無いけど多分困らん。c-langあるし。

big surについてはいろいろと心配してたんだけどいざ上げてみたらなんだか動きもスムーズでとってもいい感じ。ms のwin11が自動の更新で激重になったり勝手な更新のあとに不具合が出て翌日に再び更新が配布されたりとかするイメージが強いのでいささか拍子抜け。
やっぱり対象となるハードウェアが絞れてるとOS配布側は楽なんだろうな。

ともあれもう少しの間この老朽macbookにも頑張ってもらってせいぜいお付き合いしてもらうことにした次第。ちなみにbig surへのupdateを決めた一つの要因のpythonのcv2ライブラリーが入らない問題も簡単にできた。以下はネットで見つけたnumpy+cv2で作成されたjpeg


(06/22)追記
快調に思えるbig surなのだがdotnet で不具合が発生した。
dotnet runするとAppHostに署名できないと言われてしまう。
sdkのバージョンを上げてもだめですぐさま解決ができない。
(力不足だなあ)
当面は他の言語でお茶を濁すか

(06/26)追記
dotnet sdkとruntimeの7系をとりあえずuninstallした。6系は怒られずにdotnet runでレスポンスを返してくれるのでしばらくmacosのdotnetはこれで行こうと思う。
.net6はLTSだしね。次は.net8が出たらwindowsと共通化できるか見てみる。

※osのバージョンが古すぎてインストールできないと叱られて保留していたdosbox-xの最新はインストールできた。windowsとちがってキーボードの再マッピングが必要みたいだがエミュ系をお休みしている関係でこの作業はしばし待つ。ま、dosbox-xでは残念なことにpc98をmachineに指定してもn88basic(86)は動かないしね。(windowsならanex86でお茶が濁せるのにね)

(07/07)追記
06/26に7系のsdkなどを消したらビルドなどが通ってしばらくはsdk6でみたいなことを書いてて今日ちょっといじろうとしたらdotnet runコマンド発行で下記のエラー

hillvis-MBP:asc hillvi$ dotnet run

/usr/local/share/dotnet/sdk/6.0.200/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(550,5): error NETSDK1177: エラー コード 0 が発生して AppHost に署名できませんでした: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun [/Users/hillvi/csharp/asc/asc.csproj]

/usr/local/share/dotnet/sdk/6.0.200/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(550,5): error NETSDK1177: /Users/hillvi/csharp/asc/obj/Debug/net6.0/apphost: the codesign_allocate helper tool cannot be found or used [/Users/hillvi/csharp/asc/asc.csproj]

/usr/local/share/dotnet/sdk/6.0.200/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(550,5): error NETSDK1177:  [/Users/hillvi/csharp/asc/asc.csproj]


ビルドに失敗しました。ビルド エラーを修正して、もう一度実行してください。

原因がわかるまでmacosでdotnetいじるのは見合わせます。力不足に涙。 

 



2023年5月28日日曜日

csvからsqliteのtableを作る

 今日からしばらくは 「ズボラなpython野郎のライブラリー利用」を書く

第1回はcsvのデータからsqliteのテーブルを少ない手数で作る方法を示す。

例えば顧客マスターのデータをある程度の数を用意してプログラムの開発をしたいときにちまちまと手入力するのはつらい。
で、そんなときにお世話になるのが「なんちゃって個人情報」さん。

とりあえずこちらで適当に項目を取捨選択して5000件のcsvを用意した。

次はpythonでこのcsvファイルをsqliteのテーブルデータに変換したいのだけど前処理として2つやるべきことがある。

  1. 「なんちゃって生成」のボタンを押して落ちてくるデータの名前がdummy.cgiなので拡張子をcsvに変えておく
    おいらは「Dummy個人情報5000.csv」とした。
  2. 落ちてきたファイルの文字コードがwindows向けにshift-jisなのでutf-8に変えておく。方法はlinuxな方たちはnkfとか使うのかもしれないけどコマンドのパラメータの渡し方を調べるのが面倒だったのでvscodeで読み込んで全行を選んでencodeをutf-8に変えてから貼り直して保存してやりました。
いよいよpythonの登場。
この時の前準備はpandasをpythonのライブラリーに追加しておくこと。
準備ができたらcsvを保存したフォルダでpythonを対話モードで起動して下記の操作をする。

import pandas as pd
import sqlite3

df=pd.read_csv("Dummy個人情報5000.csv")
with sqlite3.connect("test.sqlite") as conn:
      df.to_sql("personal",conn)

以上で完了
参考(丸パクリ)にしたサイト
  1. https://note.nkmk.me/python-pandas-read-csv-tsv/
  2. https://happy-analysis.com/python/python-topic-pandas-sqlite3.html
上記の操作でcsvと同フォルダにtest.sqliteというファイルが作成される。
DB Browser for SQLite などで中を見るとpersonalというテーブルにcsvの1行目のヘッダ情報を項目名として読み込まれていることが確認できる。めでたし。

次はpythonのsqlite3ライブラリーでいろいろ読み込んでみよう。

pythonの対話形式でやるとまずは

import sqlite3

conn = sqlite3.connect("test.sqlite")
cur = conn.cursor()

cur.execute("select * from personal")

print(cur.fetchall())

cur.close()
conn.close()
まででpersonテーブルの全レコードが画面に出るけどまあ見えない。(多過ぎ)

cur.executeの中身を"select 性別, count(氏名) as 人数 from personal group by 性別" とかにすると
print(cur.fetchall())で
[('女', 2456), ('男', 2544)]
のような結果を得ることが出来た。select結果はfetchでタプルのlistになるようだ。

cur.executeの中身はcrudなら何でも通るのでinsert,update,deleteも使って自由にテーブルの中を操作できるしselect でデータレコドを抽出することも楽勝。
しかし素のsql文を毎回書くのは怠い。
pythonには「orm」つまりテーブルの操作をオブジェクトの操作として記述できるライブラリーが複数存在するので次回はその点を掘る。

2023年5月26日金曜日

方向性、今後に向けて

 ずいぶん迷走状態が続くこのブログだけど次の方向性として下記のようなことを考えていた。

  1. 8bitのBASIC(cp/mエミュレータで動かす)などで画面入力を伴うプログラムを作成。
  2. そのデータ(文字コードがshift-jisの固定長のテキストデータを想定)を変換して処理するようなプログラムを現代的な言語で書く(C#を考えていた。)
  3. それをsqliteなどに入れて1.のような仕様のプログラムがいかに簡単かつ高機能に書けるかを示す。
などを考えていたけど1.2.の関係があまりに唐突で技術的な面白みにも欠けると思えてきた。
なにより「誰得」が強過ぎて・・・もう少しマシな方向を考えねば・・

で、やはりいろんな言語をつまみ食いして人様の考案された車輪の再発明とか後追いとかに終始するとはいえもう少し面白みを持たせることを目標にする。
  1. 一番重点をおくのは.NET系の処理系を用いた実用システムの要素を研究すること。
  2. しかしms officeとかvbaとかの技術からの脱却も考える。(主にpythonとか)
  3. web系にも多少は手を伸ばす。
時間は有限だし手も短いので面白いことを食い散らかすにしても出来る限り統一感というかビジョンを持っていろんなことに首をつっこむことにしようと思う。
最近は手を動かすことが億劫になってもきているので日々楽しくコーディングをしたい。
(macとwindowsで共通のコマンドライン環境でプログラムをするというのは.netよりもpythonあたりで解決する方がずっと良い気がしてきたことも上記の理由でもある。)

さてなにから取り掛かろうか?

2023年5月13日土曜日

分かったことと、不明なことー相変わらずの半可通

 c#でdotnetでのコンパイル&ビルドやscriptをmacosとwindows11でいじってみていろいろと発見できたことがある。同じソースで動かすというのはそれなりに難しいかもしれない。

1).csprojの中のパスが異なるのでソースが同じところにあるからと言ってwinとmacでコンパイルできるわけではない。
2).net6と.net7を混在するともっと混乱は増大する。
(合わせておく方がまだマシ)
3)csxで#rでnugetするのはwinではできてもmacだと動かないことも多い。なぜだ??
4)もしwindows,macを混在させないのなら、またnugetでデータベースのドライバーを持ってきたりするのをやめるならあんまりc#にこだわる意味はない。

読んでみてなんと自分の力不足と理解度の低さに驚いたけど仕方が無い、現実だ。受け入れよう。

c#ですらこんな状態なのにf#もちょっとかじり始めたもんだから余計に混乱しているのだろうか?

これはもう一度いろいろなことを0から仕切り直す必要があるのかもしれない。方向性を探り直すことにする。


2023年4月27日木曜日

ちょっと負けた感

 この1月、dotnet scriptでというかcsxでsqlite3を接続して実験をしたいと思って試行錯誤を繰り返してきたのにまだうまくできない。ネット上にもあまり事例がなくて参考になる情報が見当たらない。とくにdllの参照がうまくいってないって叱られて進めないんです。

この辺りは経験値が高ければこうやればっていろんなアプローチが思いつくんだろうけどいかんせんそのあたりの体験がまだまだ不足。

もう少し頑張ってみるけどここでうまくできないとVS頼みの駆け出しになってしまう。
(ってもうなってるのか?)

くそー!敗北感がすごいぞ。もう少し調べてみよう。

2023年3月28日火曜日

かねてよりの念願の試み

 ここのところ、c#をdotnetコマンド配下でvs codeでソースを書いて実験するのを日課にしている。これだとWindows,WSL,macos xのいずれの環境でもconsoleなら共通で書けるし、かなりの部分でソースの共有も出来ている。

これが同じdotnetでもWPFとなるとwindows専用と化してはしまうがvsを使って書くよりも格段に脳への刺激が多くなると思う。
(我が脳が若い時より格段の劣化を遂げているとしても)

で特に参考となるモノを見ずにエラーメッセージとvs codeの提案に従って書き上げた超簡単なguiのxamlがこちら

全く慣れてないことが見事に露見するであろう内容ですね。
特にStackPanelの位置を上下のマージンでペタぽと的に決めようとしている辺りが初心者以下感が満載ですね。
でもこんなんでも一応動くということにある種の感動を覚えます。
一応クラスの内容を書いて動かしたのが下図。(いつものmandelbrot)
あ、描画ボタンを押したときにテキストボックスに所要時間を書き込むの忘れているわ、後で足しとこう。
ソースは全くc#してないしoop的でも宣言的でもないので晒しませんが逆に言えばvsのポトペタの設計支援が無くてもこのくらいの画面なら一応書けてしまうのがdotnet+WPFの良きところではないかと・・・

gui無しならconsoleでcsxを使うといろいろな実験が結構気楽にできてc#の動作確認に役立ちますね。素晴らしい。

暫くはトライアンドエラーの繰り返しを行いつつc#感を身に付けたい。
次はsqliteと組み合わせてみたい。



2023年3月22日水曜日

環境の変化と時間

 4月から1つの得意先が消える。
社長の退陣で自分の一存で継続が決められないのでしかたが無い。

ものは考えようで月に何日かが確実に空くのでこの機会にいままでより掘り下げて学びたかったことをやってみようと思う。

まずはc#である。window forms+adoでネットをググりながらならどうにかこうにか動くソースを書くことが出来たけど仕事というにはレベルが低すぎた。もう一度1から全体を見直して何かのプログラムを書くときにはまずc#で書いてみる、思考するという対象になるようにしたい。

最近のmicrosoftのofficeの中のaccessの扱いを見ていると今後の開発に不安があるのは確か。出来ればほとんどをc#で記述してaccessはruntimeで簡単な部分やまだc#のスキルが追い付かない複雑なレポートなど限定された分野に限って使うようになるのが良いように思うのでその位置に早くたどり着けるようになるべく努力したい。
※ runtimeで配布となるといたるところにon errorを入れることになるがそれは我慢、忍耐、修行で・・・

学んだことで面白いと感じたことなどを励みのためにこのブログに書いていこうと思う。

2023年1月29日日曜日

今後の更新は

 これまで自らの生存確認のために直接仕事に関係しないプログラミングのことや趣味のことをぼちぼちと書き連ねてきましたが趣味のプログラミングのうちの1つの柱であるエミュレーション系のことはhttps://play-retoro-pc.blogspot.com/に書くことにしました。

このサイトは別の一人遊びについて思いついた時に多少不定期にはなりますが更新していきます。

とりあえず今はそういうことで・・adieu.

2022年12月28日水曜日

これから

 生存確認用にこのブログをやってきたけどどうも最近ノリがわるい。

書けることはあるにはあるけどここに書くのが良いのかどうかでいつも悩む。
あまり本気のプログラミングのことはなんとなく書きたくない。
1つのテーマなり方向性に特化するのも面映ゆい。

来年からはもう少し修正を加えて行くのも良いかもしれない。

さてどうなりますことやら

2022年12月8日木曜日

わ、忘れてた!

9月末からちょっとあって(まあ今年は前半からありまくりだが)
10月はまだ気が張っていたのか更新したけどついに11月の更新を忘れてしまった。

そもそも月一はなんらか更新しようとか思っていたけどリアルの生活の忙しさが更新の邪魔をするようなブログの意味は不明なのでここももしかしたら潮時なのかもしれない。

年末に向けてちょっと仕切を変えてみなくては・・・

2022年10月31日月曜日

やっぱり多忙

 今年はずいぶんおかしな一年であった。

って年の瀬のような書き出しだが昨年11月末に持病が見つかってから1年間、治療、身内の特殊事情、9月の事故と結構な綱渡り

もう残りの2ヶ月くらいは平穏に過ごせることをひたすら願う

そしてこのページにもっと退屈しのぎ的な戯言を書き綴りたいものである

2022年9月30日金曜日

気持ちは秋の空

 あの言語をいじりたいとか、このライブラリーを極めたいとかいろいろな考えや希望や気持ちが湧いては来るけど形になる前に何か事件が起きたり周りに変化が生じたりするとコロコロとそれが変化してしまう。

C#にすごく傾きかけたけどチョロチョロとコードを書きなぐっている間に関心が移ろって今度はpythonでwebシステムとか考えてしまう。

どうにも落ち着かない。とりあえず以前から習得したコードを掘り返したりしながら万年初心者からの脱出を今回も試みることになりそうだ。

この手のまとまった情報を揚げるにはgithubとかのほうが良いのだろうね。

明らかに辻褄合わせで9/30に挙げているのが見苦しくもあるなあ、猛省!

2022年8月30日火曜日

やっぱり.netはc#なのかも・・って今更感

 今月は.netをずっといじってるけどやはり.netってc#が軸になっているんだなって再確認した

まずは前の記事でも書いたけどラムダ式
c#で=>で表現するところをfunction( ってどうにかならなかったのかなあ
一応書けますよってやっつけ感が半端ないですね

oopしなくてもwinformsアプリぐらいならモジュールとlinqとラムダ式の組み合わせで結構いけると思うんだけどラムダ式のスッキリ感の無さが際立つね

そしてcsxの存在
ちょっとしたコード片を試してみたいときに実に便利
(linqpadってwindowsだけでしょ)

vscode+dotnetでちょこちょこ書いてるときにcsxがあるとやっぱり良い

でもここは適材適所って逃げ文句でvb.netもちょいちょい使いたいね、ね

2022年8月4日木曜日

VB.NETでLinqの是非

vb.netで僕のような万年ビギナの半可通にとって良いなって思えることの1つのはbasicなればこその大文字と小文字の区別を意識しないコーディングが出来るってこと。

当然それは諸刃の刃で定数と同じ綴りの変数とか使っちゃうとハマったりするけど過去に書いた変数がキャメルスタイルだったか全小文字だったか余り気にせずに書くことが出来るのは浮かんだアイディアをガシガシ書きたいときなどにはありがたかったりする。

最近はc#ではもはや中心的機能とも言うべきLinqをvb.netで使いたいと思っている。

しかしc#での自然で素直な構文と比べてvb.netでのあとづけ感は残念、というか冗長

c#で
 Console.writeline(new string(".Test.Command.".Where(c => c!=','),ToArray()));
はvb.netで
 Console.WriteLine(".Test.Command.".Where(function(c) c <>".").ToArray())
となる。いきなりstringをかけるのは良いけどラムダ式の記述がちょっと嫌だ。

c=> c!='.' と function(c) c<>"." はどう見てもc#のほうが見た目が軽くてスマート

これがソース中に何度も出てくると見た目が重くてつらいかも。
もちろんvbのほうがWhereで評価している要素のfilterとして無名の関数を使うよって言ってる感じがしなくもないけど・・・やっぱりc#がスマートでいい感じ

でもLinq便利なのでvbでもできるだけ慣れて使っていこうと思う。

2022年7月31日日曜日

なぜかBASIC三昧

 今月の前半にQB64を触ってるようなことを書いた。

後半はやっと届いたcipher basicを触ってる。
(なんだそれっ?て思う方はウェルコムデザインさんのサイト
 https://www.e-welcom.com/
 でmodel8000でも見てください。
 要するにバーコードハンディターミナル開発用BASICです。)

そしてc#に邁進するはずがなぜかvisual basic 2019も触っている。
こちらは主にdotnetコマンド経由でmacとwinで同じソースでどこまで遊べるかを試している。

ここんとこBASIC三昧な7月が今日で終わるなあ
月日の流れは早いもの

2022年7月8日金曜日

噛ませ犬の予定が・・

 pythonについていろんな書きたいこととか出来てきて比較用に古いBASICでmacとwindowsと共通で使えるものを探していたらpc-basicとQB64が候補になった

順にインストールしてみたら速度が違いすぎて笑った

お得意のmandelbrotを描画させてみたらpc-basicはegaのエミュレーションしか出来なくてそのうえ遅い。目的が昔のibm-pcのgw-basicの速度の再現なのかもしれないけどmandelが終わらない。反してqb64の方はwindowsが50mS,macが100mSほどで描画が完了する。

これってjavaで書いた過去最速のmandelbrot描画よりも速いのでは・・・

当面は過去のソースを弄ったりして比較するのに使うことにしたい。

2022年6月24日金曜日

クラウドのデータ活用とPCライフ

 先だってobsidianがめっちゃいい感じって書いたけどやっぱりすごくいい感じ。

ここ2ヶ月に渡る激動の忙しさをなんとかこなせたのもobsidianでtodoや日々の計画をうまく構築出来たことが大きい。

また各PC間でデータを共有するのにクラウドのデータを使うとめちゃ楽なのである。
表型のデータ構造は扱いやすいのでデータ共有ツールとしてのgoogle sheetsはスマホ(iPhone)からも編集も参照も出来て素晴らしい。
当然それ用のライブラリがあれば永続的な情報の保管場所として使えて実に便利。
pythonにはgspreadなるライブラリーがあるのでそれをつかうとかなりのことが出来そう。
flaskと組み合わせてデータの収集をしたものを各端末で参照できると良いと思う。

今後はpythonを中心にした身の丈のシステム開発を各分野で楽しむことにしたいがここでもvisual studio codeとobsidianが役立つのだろう。

何にせよ、欲張りすぎても面白くないので身の丈に合ったプログラミングライフを楽しみたい。

成果が出たら報告します。

2022年5月28日土曜日

うーーん、、、

 ちょっとプライベートといいますか親族関係で問題がありまして今月は何も発展的なもしくは趣味的な好奇心を掻き立てることが出来ませんでした。

長い人生の中にはいろんなことが起こるものです。

今はここで詳しく書けませんが本当に驚くようなことって起こるもんなんです。

で、来月こそはしょーもないことを書いて見に来た人に呆れられるほど暇人ぶりを発揮したいと思ってます。

ご期待あれ

dosvaxj3が更新されていた。

 最近、エミュレータ系をあまり触っていなかったのだけど久しぶりに見てみたらタイトルのようにdosvaxj3が更新されていた。 on emulatorでセルフにcなどのソースを書いて実行するのに母艦側の特定のフォルダをドライブとしてマウント出来たり普通に母艦のimeで漢字が入力でき...