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頼みの駆け出しになってしまう。
(ってもうなってるのか?)

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

dosvaxj3が更新されていた。

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