AM中に起床。
D言語からlibcurlを経由してsftpアクセスする件。
ひとまずファイルの取得に成功。原因はphobosのstd/net/curl.d
へのパッチが不足していました。結局、必要な対処は
$ cat ~/develop/dlang/dmd/dmd_2.080.0/src/phobos/std/net/curl.d | sed 's/std.net.curl/curl/g' | diff -b -u - ./curl.d --- - 2018-06-30 11:59:41.399235500 +0900 +++ ./curl.d 2018-06-30 11:59:37.448176400 +0900 @@ -395,7 +395,7 @@ import std.algorithm.searching : startsWith; import std.uni : toLower; - return startsWith(url.toLower(), "ftp://", "ftps://", "ftp.") != 0; + return startsWith(url.toLower(), "ftp://", "ftps://", "ftp.", "sftp://") != 0; } // Is true if the Conn type is a valid Curl Connection type. @@ -3353,7 +3353,7 @@ import std.algorithm.searching : startsWith; import std.uni : toLower; - if (!startsWith(url.toLower(), "ftp://", "ftps://")) + if (!startsWith(url.toLower(), "ftp://", "ftps://", "sftp://")) url = "ftp://" ~ url; p.curl.set(CurlOption.url, url); }
遅めに帰着。
D言語からlibcurlを経由してsftpアクセスする件。
結局cmakeを実行し直してlibcurl.dllを生成してみたり。でもsftpは
使えず。一応、一緒にビルドしたcurlではsftpが使えるので、イケ
そうな感じに思うのですが...?(curlが自前のD言語で書かれた
アプリになっただけでsftp自体はlibcurl.dllにスタティックリンク
されたlibssh2で動くと思われるから)。
遅めに帰着。
D言語からlibcurlを経由してsftpアクセスする件。
libcurlをlibssh2込みでビルドしたdllを生成すれば良い
んじゃね?と思い、libcurlの構成の種類をスタティックライブラリ
からダイナミックライブラリに変更してビルドすると何故か
いくつかシンボルが見つからなくてリンクでエラー。
構成の種類をスタティックライブラリに戻すとビルド成功。
何故スタティックライブラリだとイケてダイナミックライブラリ
だとイケないのか謎。
そういやGoogle検索で、ヒット数が多いと「すべて(の言語)」以外に
「日本語のページを検索」が出てくる場合がありますが、
ヒット数が少ないと「すべて」しか選択できない場合が
あります。少なくても日本語のページだけをフィルタリング
したいのだという要求に応えられるようになっていないのは
今更ですが何故だろうと思ったりも。
遅めに帰着。
あまりの眠さに急速停止。
遅めに帰着。
「ど根性ガエルの娘(3),(4)」。1,2巻を読んだのは
2017年2月だったのですが、
3巻が気になりながらも、その後見つける事ができずじまいで
そのうちすっかり忘れていました。幸いにして3,4巻をまとめて入手
でき「衝撃の第15話」を読んだ訳ですが、3,4巻は全体的に衝撃が
強すぎてお腹いっぱいになってしまいました。
現在刊行されているのは白泉社版ですが、4巻では KADOKAWA版が
売れていなかった話だとか、連載を引き上げた話にも触れられています。
そういえば1,2巻が刊行されてすぐくらいだったと思いますが
メイプル超合金のカズレーザーがその時の話題の本を読んで感想を
述べるっ て番組をテレビ朝日で放送していました。
「ど根性ガエルの娘」もその番組の中で紹介されてたのですが、
娘の方も闇が深い的な事をチラっと言ってたと記憶しています。
それについては TANEもストーリーが少し逸れているような?と
感じた所だったのですが、4巻に収録されている
19話を読んだ後、もう一度1,2巻を読み返してみると、そう感じた
のは2巻最後の12話で、KADOKAWA版を引き上げる事を決めたきっかけ
とも連動してたという事なのかもと思いました。今にして思うと、
3巻の収録内容が見えていての、1,2巻刊行だったのでしょう。
5巻では もうひと悶着ありそうですが、続きはまたしばらく待つ必要が
ありそうです。
遅めに帰着。
「ハイスコアガール(9)」。3カ月ほど前に8巻を買ったと思ったのですが、
来月アニメ放送が始まるのに合わせてるのか?と思ったりも。
でも、次巻で完結な模様。どうなるか楽しみです。
D言語からlibcurlを経由してsftpアクセスする件。
gdcでビルドした場合でもdllをロードしていたり。あれぇ?そうなんだっけ?
AM中に起床。
ちょろりお出かけ。
3週間ほど前にキーボードを買ったついでに本屋に寄った時、
新刊棚に「コロコロ創刊伝説」という、のむらしんぼ氏の単行本が出ていたので
何気に買ってみました。この時、実は3巻目だというのに全く気付いていなかったの
ですが、ひとまず読んでみて (TANE的に)あまりのヤバさに1,2巻も読まねばと
いう感じで、近所の本屋を探してみるも2巻しか捕獲できず、今日やっと1巻を
入手したという次第です。
因みに、2010年2月2日にTV東京の
「ありえへん世界」にのむらしんぼ氏が出ていたのを観たのですが
(確か番組放送時点で既に離婚して一人暮らしだったと思います)、
「コロコロ創刊伝説」の連載は2014年10月~ のようなので、
創刊伝説きっかけのTV出演では無さそうです(TV出演きっかけの創刊伝説
の可能性は判りませんけれども)。
TANEがコロコロを初めて読んだのは「ドラえもん のび太の恐竜」が
連載されていた時で、
Wikipedia
から思い出すに、1980年の1月号か、2月号だと思います
(ドラえもんがタイムマシンを直せなくてヤバい感じになってる
コマが最後で次号に続くって所でした)。それより前からドラえもんが
好きだったので、コロコロはドラえもんから入った口なのですが、
のむらしんぼ氏の「とどろけ!一番」の第一話は1980年2月号から
なので、丁度最初の頃から読んでいた感じという事になります。
創刊伝説を読むまですっかり忘れていたのですが、一番が六年生を
二回やる話とか、ボクシング漫画になった話は確かにあったのを
覚えていて、今回創刊伝説を読んであのようなストーリーになったのには、
えらく苦労した結果だったのを知りました(^^;;;
それにしても、1977年に22才でサンデーに投稿してそこから担当が付いて、
初連載である「ケンカばんばん」の1話がコロコロの1979年5月号、
「とどろけ!一番」の連載開始が1980年の2月号からな訳で、
只者では無い人だったというのを今更ですが思ったりも。
のむら氏自身の話以外にも、当時連載していた作家陣の物語も面白くて、
どれも「当時はこんな事になっていたのか」と驚かされました。
「ゲームセンターあらし(すがやみつる)」 F1キッドという漫画を連載していたのに
急にゲームセンターあらしを描く事になった話、
「超人キンタマン(立石圭太)」オガンダムがバカラスになった事情、
「ファミコンロッキー(あさいもとゆき)」すがやみつる氏のアシスタントだった
所をいきなり抜擢された話、
「あまいぞ!男吾(Moo.念平)」スカウトが先で藤子不二雄賞で入選を取った
のが後だという事、
あと「おぼっちゃまくん」より前に小林よしのり氏が
読み切りで描いた「炎のカン」と「お祭り珍太」も(内容は覚えてませんが)
作品の存在自体は覚えていて、創刊伝説で二作品ともアンケート結果が最下位だった
のを乗り越えた先に「おぼっちゃまくん」があったというのを知り、
なんかスゲーって思いました。
とにかく、40年近く前に読んだコロコロの話なのに、意外と覚えているし
作中に当時のページのコピーとか出てくるのですが、全部見た記憶がある
というのは、それだけ本誌を何度も読み返していたからかも知れません。
そういやコロコロ300号が出たとき
にマガジンハウスの雑誌でコロコロ関係者のインタビュー記事が載っていました。
今見てみると、初代編集長の千葉和治氏、のむら氏の初代担当編集者の
平山隆氏のインタビュー記事も載ってました。
2巻の中にゲーム雑誌向けに書かれた読み切り作品が収録されていた
のですが、その中でENIXの「ポートピア連続殺人事件」の犯人を
「TOKYOナンパストリート」の作者である関野ひかる氏を通じて
聞くという話があります。どういう繋がりの知り合い?と思って
Wikipedia
を眺めてみた所、関野ひかる氏は漫画家さんで、「TOKYOナンパストリート」は
プログラムコンテストの受賞作品だというのを初めて知りました(^^;
「TOKYOナンパストリート」で画像検索するとパッケージ写真なんか
も出てくるのですが、パッケージ裏に作者紹介として本人顔写真やら年齢
やらが載っていて、こういう時代もあったのだなぁと思ったりも。
それによると「3年B組金八先生」のコミカライズ作品を描いていたらしい。
何気に「パソコン歴 2年」と書かれているのですが、
作ろうと思って作れるものではないくらいの規模
(今となっては小さいプログラムでしょうけど、同じ感じの
ものを 今の便利になった技術を使って良いので作れと言われたとしても、
完成させられる人はそんなに居ないだろうと思われるレベル)の
ように思ったりも。
昼前起床。
掃除したり。
そういや UWP(Universal Windows Platform)アプリのウインドウ描画が変になる件
(一つ前のメモ)。
こちら
のマイクロソフトのコミュニティに事例が報告されているようです(2018年2月付け)。
TANEの所で最初に確認されたのは
2017/9/17よりも前(しかも
PCは現在使用しているのとは別のもの)なのですが、今だに直らない所を
見ると、レアなバグなのだろうか?と思ったりも。もしくは
UWPアプリをメインで使っている人がほとんど居ない可能性も考えられますが。
遅めに帰着。
そういやEmacs-26.1でflymake-modeのバージョンが上がったようで、
今まで使えていた関数や変数が変わったり、Webから拾った
設定が使えなくなっていたりする模様。
結構面倒臭いのはflymake-popup-current-error-menuという関数が無くなった
為、エラーメッセージを見るのに、エラー箇所にマウスカーソルをかざす
必要がある点。これだとターミナルで -nw で使うとき困るのでは?と思った
ので、他に方法は無いのか?と思って調べてみたところ、メニューバーに
「List all probrems」というメニューがあり、エラーのリストを表示する
バッファを開く事ができるのが判ったり。メニューから実行される
のはflymake-show-diagnostics-bufferという関数なのですが、
これを分割ウインドウで表示できれば良くね?と思い、以下のようなのを
考えてみたり。
;; flymake-show-diagnostics-buffer拡張 for Emacs-26.1 (defun flymake-show-diag-buffer-ex () "Extended flymake-show-diagnostics-buffer" (interactive) (progn (let* ((rootw-h (window-height)) (win-r (get-buffer-window (current-buffer))) (win-d (split-window nil (- rootw-h 5)))) (select-window win-d) (flymake-show-diagnostics-buffer) (select-window win-r) ))) (if (string-match "26." (version)) (progn (define-key d-mode-map "\C-c\C-e" 'flymake-show-diag-buffer-ex) (define-key c-mode-map "\C-c\C-e" 'flymake-show-diag-buffer-ex) ))
遅めに帰着。
スタティックライブラリのlibcurl.lib。
phobosの std/net/curl.d ではDLLを自力でロードした後、
シンボルをtupleに関数テーブル的に保持して、用事のあるところで
関数コールするという仕組みになっているようです。即ち
スタティックライブラリをリンクするだけではうまくいかない気が
するのですが、MinGWターゲットのgdcではどうやって動いていたんだ?
と今更思ったり。
早めに帰着。
libcurlを使うコードのdmd対応。ひとまずdmd付属のlibcurlをリンクして
実行ファイルを生成できたのですが、sftpが使えないなぁ?と思ったり。
そういや自前で対応してたのをすっかり忘れていたのですが、
ssh2込みのlibcurlは自分でビルドしないとダメな予感。共通ライブラリに
入れるのであれば、フルスペックで使えるのを期待すると思うのですが、
そうでないときの対応は結構面倒臭い気が。
ひとまずlibssh2とlibcurlはcmakeを使ってスタティックライブラリを
ビルドできてみたのですが、phobosのstd.net.curlがdllを自力でロード
していてスタティックリンクしたライブラリの方で動いていない気が
したり。
GTSのGTリーグ。耐久レースをチクチクやっているのですが、どれも
3位以内に入るのが厳しい状況。なにより1時間かかるのですが
途中でやめると賞金が貰えないので全然ダメでもやるしかない感じ
だったり。
遅めに帰着。
OpenALとOggライブラリを手持ちWinアプリでリンクしてみたり。
ひとまずリンクには成功して音も出ました。
でも、.exeファイルを生成するときに何故か .expと .lib が
生成されて何故?って感じ。Web検索してみると現象自体は
そのものズバリなものがあったのですが、原因と解決方法が
説明を読んでも訳が判らなくて、なんのこっちゃ?な感じ。
本来はDLLを作成するときに生成されるファイルらしいのですが、
dmdのコマンドラインでは.expが生成されないものと全く同じ
為、何を以って生成するに至っているのかが判りません。
こちらのページを読む感じ、「シンボルをエクスポートするプログラム」
の場合に自動的に生成する感じに読めるのですが、
スタティックライブラリOpenALかOggのライブラリのどちらかがそういう事に
なっているのか?と思い調べてみるも良くわからず。
その後、原因判明。OpenALのビルドに於いて、cmakeによりconfig.hという
ヘッダファイルが自動生成されているのですが、その中で
AL_APIとALC_APIというdefineが以下のようになっていました。
/* API declaration export attribute */ #define AL_API __declspec(dllexport) #define ALC_API __declspec(dllexport)
/* API declaration export attribute */ #define AL_API #define ALC_API
早くも無く遅くも無く。
VSでOpenALをビルドしたり。スタティックビルドを行いたかったのですが、
VSのGUIからCMakeを開く方法ではcmake実行時のパラメータを指定する事
ができない為、コマンドラインでcmakeを実行してから、生成された
プロジェクトを開くとか、リンカオプションにこそっとx86ターゲット
のオプションが積まれていてx64にしているつもりが効いてなかったり
とか、ハマり処は沢山あったもののどうにかビルドに成功。
続いてVSでfreealutをビルドしようとしたのですが、cmakeがエラー。
こちらもコマンドラインでcmake実行し、パラメータでOpenALの
インクルードパスとライブラリパスを足して生成されたプロジェクトを
開く方法で対応。こちらはWIN32向けにはそもそもスタティック
ライブラリが考慮に入っていなくて、OpenALのスタティックライブラリ
向けにdefineを足したり、alut.hのヘッダファイルを弄ったりして
どうにかhello_world.exe(実行すると英語でhallo worldとしゃべる)
のビルドに成功。ひとまずスタティックライブラリは生成できたと思われ。
それにしても、結構弄る必要があったのですが、スタティックライブラリ
でビルドしたくなる人は居ないのだろうか?
ビルドしたOpenAL,freealutとlibogg,libvorbisを手持ちアプリで
使うのはまた後日。
昼頃起床。
掃除したり洗濯したり。
std.format.doFormat()の代わりは自力コードで対応。
libjpeg、libpng、freeglutですったもんだしている状況ですが、
任意精度の算術ライブラリであるGMPやMPFR、cairoをVisualStudio
でビルドしようと思うと、なかなかな敷居の高さがある模様。
VSでliboggとlibvorbisをビルドしてみたり。VS向けのプロジェクトが
用意されていたのであまり手間がかからずにビルド成功してると
思われ。
AM中に起床。
dmd移行。InvalidMemoryOperationErrorについて検索してみた所、
D Wikiにこのようなページ
を見つけたり。今まであまり意識した事無かったのですが、デストラクタ
でメモリ操作を行うのは鬼門らしい。
なのですが、何気に意図的に確保した配列をdeleteで削除する
コードを散りばめていたりするので、それが裏目に出るみたい。
終了時にInvalidMemoryOperationErrorになるのは、どうやら以下の
ようなコードが原因のようでした。
~this(){ destroy() ; } int destroy(){ DestroyMenu(hrootmenu) ; hrootmenu=null ; foreach( key ; hsubmenu.keys ){ hsubmenu.remove(key) ; } return(0) ; }
--- fg_geometry.c.orig 2014-10-18 01:09:00.000000000 +0900 +++ fg_geometry.c 2018-06-17 00:10:07.617524600 +0900 @@ -178,11 +178,11 @@ void fghDrawGeometrySolid(GLfloat *vertices, GLfloat *normals, GLfloat *textcs, GLsizei numVertices, GLushort *vertIdxs, GLsizei numParts, GLsizei numVertIdxsPerPart) { - GLint attribute_v_coord = fgStructure.CurrentWindow->Window.attribute_v_coord; - GLint attribute_v_normal = fgStructure.CurrentWindow->Window.attribute_v_normal; - GLint attribute_v_texture = fgStructure.CurrentWindow->Window.attribute_v_texture; + GLint attribute_v_coord = fgStructure.CurrentWindow==NULL ? -1 : fgStructure.CurrentWindow->Window.attribute_v_coord; + GLint attribute_v_normal = fgStructure.CurrentWindow==NULL ? -1 : fgStructure.CurrentWindow->Window.attribute_v_normal; + GLint attribute_v_texture = fgStructure.CurrentWindow==NULL ? -1 : fgStructure.CurrentWindow->Window.attribute_v_texture; - if (fgStructure.CurrentWindow->State.VisualizeNormals) + if (fgStructure.CurrentWindow!=NULL && fgStructure.CurrentWindow->State.VisualizeNormals) /* generate normals for each vertex to be drawn as well */ fghGenerateNormalVisualization(vertices, normals, numVertices); @@ -193,7 +193,7 @@ vertIdxs, numParts, numVertIdxsPerPart, attribute_v_coord, attribute_v_normal, attribute_v_texture); - if (fgStructure.CurrentWindow->State.VisualizeNormals) + if (fgStructure.CurrentWindow!=NULL && fgStructure.CurrentWindow->State.VisualizeNormals) /* draw normals for each vertex as well */ fghDrawNormalVisualization20(attribute_v_coord); } @@ -202,7 +202,7 @@ fghDrawGeometrySolid11(vertices, normals, textcs, numVertices, vertIdxs, numParts, numVertIdxsPerPart); - if (fgStructure.CurrentWindow->State.VisualizeNormals) + if (fgStructure.CurrentWindow!=NULL && fgStructure.CurrentWindow->State.VisualizeNormals) /* draw normals for each vertex as well */ fghDrawNormalVisualization11(); } --- mswin/fg_init_mswin.c.orig 2014-10-18 01:09:00.000000000 +0900 +++ mswin/fg_init_mswin.c 2018-06-17 00:17:49.077044500 +0900 @@ -47,7 +47,7 @@ /* What we need to do is to initialize the fgDisplay global structure here. */ fgDisplay.pDisplay.Instance = GetModuleHandle( NULL ); - fgDisplay.pDisplay.DisplayName= displayName ? strdup(displayName) : 0 ; + fgDisplay.pDisplay.DisplayName= 0 ; //displayName ? strdup(displayName) : 0 ; atom = GetClassInfo( fgDisplay.pDisplay.Instance, _T("FREEGLUT"), &wc ); if( atom == 0 )
遅めに帰着。
VSでlibjpegをビルドした際、アプリのプロジェクトが何故か上手くライブラリ
を認識してなくて、djpegのビルドに失敗するのを調べたり。どうやらリンク
するjpeg.libのパスが違ってる模様。デフォルトだとRelease/jpeg.libを
リンクするのですが、x64向けにターゲットを変えた際にx64/Release/jpeg.lib
にビルドされるのに連動してパスが変わっていなかった模様。
直してdjpeg.exeを生成できたのでファイルのデコードを試してみた感じ
ではうまく動いてそう。なので、生成されたjpeg.libの疑いは少し晴れたかも。
手持ちコード内でlibjpeg内のエラー時はハンドラ関数を実行する様に
していたのですが、それを一旦外してみた所原因判明。
JPEGロード部分はC言語のコードを使っているのですが、その時のコンパイラは
v8系のlibjpegヘッダを参照しており、VSでビルドしたのはv9系だった為、
バージョン不一致で弾かれていたというTANEのチョンボでした(^^;
修行が足りません。
Cygwinパッケージのx86_64-w64-mingw32クロス環境でインストールした
libjpegなので、v9に上げるのはちょっと面倒臭い感じです。なので、
VSでv8をビルドしリンクしてみた所、ちゃんとJPEG画像表示も動きました。
後は、ウインドウを閉じる時(プロセス終了する時)に
InvalidMemoryOperationErrorの例外が飛ぶ原因を直せれば
dmdおよびldc2への移行が可能そうです。さて、どう調べたもんか.....
2018/06/14
遅めに帰着。
dmdでのコンパイル。外部シンボルが見つからない件は、Webの
情報から以下のような感じにしたら実行ファイルの生成に成功したり。
dmd -m64 -L=/subsystem:windows -L=/entry:mainCRTStartup ... msvcrt.lib msvcmrt.lib -L=/LTCG -L=/NODEFAULTLIB:libcmt.lib
早めに帰着。
あまりの眠さに急速停止。
遅めに帰着。
VSでlibjpegとlibpngをビルドしてリンクを試みたのですが
jpegの方で __imp_strncpy という外部シンボルが見つからないと怒られたり。
何故....
遅めに帰着。
dmdのコンパイル。VSでd言語のソースが認識されていないのが原因だと
判ったり。で、
Vidual D
をインストール。d言語のソースがソリューションエクスプローラー
で認識されるようになったり。で、ビルドしてみるもエラー。
dmd.exeが見つからないと言われてるのですが、インストールパスの
設定しているのに何故?という感じ。7zのアーカイブを任意の
場所に展開する方式なのでPATHを通していないのですが、それが
問題か?と思ったりも。
仕方ないのでインストーラーを使ったdmdのインストールを行って
みたところ認識されたり。でもコンパイルエラー。
何やら res/default_ddoc_theme.ddoc というファイルが必要ですが、
アーカイブに含まれていなかった為、GitHubからダウンロードした
ソース一式からコピーしてみたところ、ひとまずビルドには成功
しました。
因みに、インストーラーでインストールしたdmdでも、VSのリンカ
が使用される為か、SUBSYSTEMをWINDOWSにするとやっぱりリンクで
エラーします。やっぱりVSでリンクするとmain()始まりのプログラムを
/SUBSYSTEM:WINDOWSでリンクできないのではないか疑惑。
例えば、main()始まりで作ったプログラムで、ちょっとした実行結果を
MessageBox()で表示するので、console画面は出さなくて良いみたいな
プログラムを書けないような気がするのですが。
その後、Webを検索して試したところ、
「dmd -m64 -L=/subsystem:windows -L=/entry:mainCRTStartup ...」
でmain()始まりでconsole画面を出さないようにできる事が判りました。
ldcでも同じリンクオプションの指定でOKそう。
検索してもズバリな答えが一番上に出てこず、割とバッドノウハウな
感じのが上の方に出てくるのはイマイチに思いましたが、まぁ。
ひとまずlld-link.exeを使わなくてもconsole画面抑止制御ができた
ので、dmdを弄って実験する必要は無くなりました。で、そもそもの
本題はMinGWでビルドしたC言語で書かれたライブラリをリンクすると
動かない実行ファイルが生成されたので、VSでコンパイルしたライブラリ
ではどうか?というのが試したい事だったのですが、そこんところは
まだ手を付けられず。
GTSのF1500選手権。インテルラゴスもチートでどうにかゴールドゲット。
長い闘いでした。
AM中に起床。
掃除したり洗濯したり。
dmd。リンカの切り替えをコマンドラインから無効化できない感じなので、
dmdを再コンパイルできればそこんところのコードを弄って確認できるかも?
と思い、VSでdmdの再コンパイルを試みたり。説明が全く無いので
src/dmd/vcbuild ディレクトリにあるdmd.slnファイルをプロジェクトとして
読み込めば良いのか?と思い読み込ませてビルドをしてみるもエラー。
初回はライブラリの版数が合わないとかいう事のようだったので、
「プロジェクト→ソリューションの再ターゲット」を実行してみたり。
再度ビルドしてみるとなにかしらコンパイルしてそうな感じ
だったのですが、dmd本体のリンクと思われる所で外部シンボル
(_mainCRTStartup)が見つからないというリンクエラーで停止。
どういうリンクオプションを付けているのかも、どのオブジェクトファイルを
リンクに使用しているのかも さっぱり判らないので途方に暮れたり。
それにしてもビルドを自動化している割に、そのまま食わすとエラーする
のはどういう事?という気も。まぁ、この辺はUNIX系のconfigureも、
shが無いOSとかで実行しろと言われても途方に暮れる訳ですが、
一通り揃っていると思われる環境で突っかかるのは何故?という気が
しなくもありません。
「はじめアルゴリズム(3)」。先週捕獲済で読んでいたのですが、
メモるの忘れていました。平行線が交わる話は2巻のおまけページ
で触れらていた話ですが、3巻の物語中でも出てきてます。
一点透視図法である点に向かって平行線が集中する絵や図を描く事
があるのですが、数式的に無限遠点で交わる事が示されているのに、
へーっと思ったり。あと、「1+2+4+8+...=-1」になるという話。
解析接続という考え方で証明できるという事ですが、TANEは
これを見たとき 2進数で符号bitを含めてall1だと-1になる
感じに思えました。次はどんな話が出てくるか楽しみです。
AM中に起床。
散髪に行ったり。帰りにちょろり本屋に。
dmd対応。先日のリンカの件はsc.iniの64bit環境部分に
「LINKCMD=%@P%\lld-link.exe」を追記してリンカを明示すればlld-link
を使うようになりました。でもエラー。
libcmt.libをいうライブラリをリンクしているようですが、これもVSを
インストールしたときに入ったものを参照しているようだったり。
リンカオプションからVSのLIBPATHを全部外してリンクしてみた所、
今度はDMDに含まれるwindows\lib64やwindows\lib64\mingwを参照
しなくなってて、それをLIBPATHとして指定したり。
すると、libcmt.libが見つからないというリンクエラーになったり。
DMDにlibcmt.libが含まれるのかと思いきやどこにも見つからなくて
謎な状況。VSを入れる前はどこにあるlibcmt.libを参照してたんだ?
それともlibcmt.libを参照していなかったのか?
毎度の事ですがdmd関連から情報は得られず。面倒くせぇ...
VSでコンパイルした.objファイルのフォーマットの件。
プロジェクトの構成マネージャーでアクティブソリューションプラットフォーム
を新規追加してx64を選んでみた所、objdumpで認識可能な
.objファイルが生成されてみたり。でも、
「ファイル形式 pe-bigobj-x86-64」となってて、
MinGWのx86_64ターゲットで生成した.oファイルの形式
「ファイル形式 pe-x86-64」とちょっと違ってたり。
そういやVSを入れたのでldcが使えるかも?と思い試してみたり。
取り合えず展開してPATHとか一切通さずにHelloWorldレベルの
コードをコンパイルしてみた所、-m32も-m64もどちらでも
所望の実行ファイルが生成できたり。64bitの方は「ファイル形式 pe-x86-64」
となっていたのですが、VSでビルドしたライブラリとの相性はまだ判らず。
-vでコマンドラインは表示できるので、dmdの方との差とかも調べられるかも。
ldc2で手持ちのWinアプリをビルドしてみたり。コマンドラインに微妙な
違いはあるものの、dmdに近い感じに思ったり。で、ビルドしてみたところ
ちょっとイマイチな感じに。SUBSYSTEMをWINDOWSにするとリンクに失敗する
のですが、どうもWinMain()式のコーディングを要求されているみたい。
で、SUBSYSTEMを指定しない(SUBSYSTEM:CONSOLEと同じ)と、
リンクには成功するのですがファイルエクスプローラから起動すると
コンソールウインドウが開きます。もー、面倒臭いなぁ.....
ldcの動きを-vで眺めて、dmdのソースを少し見た結果、
次のような感じになってるのかなぁ?と思ったり。
遅めに帰着。
dmd対応、というかVisual Studio。ひとまずIJGのlibjpegを
Webの情報を頼りにビルドしてみたり。libjpegの説明書通りにやっても
UTF8のBOMが付いてるとエラーするとかハマりどころがいくつかあったの
ですが、なんとなくビルドができてライブラリが生成されてみたり。
で、objdumpで生成された.objファイルを見てみたのですが、
知らないフォーマットのファイルだという判定をされてみたり。
うーむ。
何故かdmdを使ったビルドのリンクに失敗するようになったり。
どうやらVisualStudioでインストールされたリンカ(link.exe)を使うように
なったせいでエラーになっている模様。てか、sc.iniの場所の
lld-link.exeを使っていたのが何故こうなるのか謎。そもそも
sc.iniには64bit環境時(?)のリンカを指定する記述が無い為、
lld-link.exeが使用されていたのも何故?って感じ。
毎度の事ですが、この手のブラックボックス化が行き過ぎてて
どこの何を使っているのかがサッパリ分からない為、エラー
すると途方に暮れる感じはどうにかならないのかなぁ?と思います。
「ボタン一つで便利になる」というのは別に良いのですが、
便利になる事と何をやっているのかが判らないのとは話は別
というのが個人的な感想。便利なのに加えて何をやっているのかも
明確でもあるというのが良いと思うのですが、前者が行き過ぎると
何故か後者が満たされなくなるという不思議。
GTSのF1500選手権。ブランズハッチでどうにかゴールドが取れたり。
長い闘いでした。でも、まだインテルラゴスと鈴鹿は取れていない
ので、次はそのどちらか。
遅めに帰着。
dmd対応。結局できあいのライブラリは見つけられずじまいの為、
Visual Studio の無償ダウンロード版を入れてみる事にしてみました。
インストール完了後、再起動を要求されて 何故?と思ったりしましたが
とりあえず起動。うん、どうすりゃ良いかさっぱり判らん。
遅めに帰着。
Emacs 26.1で display-line-numbers-mode という行番号表示を
行うモードが使えるようになりました。elispで実現しているのでは
なく、組み込みの行番号表示の仕組みを使っているようです。
その為、linum-modeでは行数が多いと操作が
ままならなかった
のですが、そういうのは無くなりました。てか、今までできて
なかった事の方が何故って感じですが、まぁ....
遅めに帰着。
Emacsの雑記を更新しました。
Emacs 26.1ベースのIMEパッチを置いてみました。ご参考まで。
遅めに帰着。
Emacs 26.1。美人時計の26.1対応を
置いてみました。
御参考まで。
Emacs 26.1。ひとまず一晩動かして特に問題が無さそうだったので、
CygwinパッケージのEmacsを26.1にアップデートしてemacs-w32を野良ビルド版に
入れ替え。Emacs-25.3の時にorg-9.0.3を使用していたのですが、何故かEmacs-26.1では
うまく動かないようだったので、今日時点での最新版であるorg-9.1.13を
入れてみたり。因みにEmacs-26.1に含まれるorg-modeは9.1.9なので
そちらでも良いのですが、色々弄る場合があったりするのでこちらも野良ビルド
したのを使うという感じです。
Antimalware Service Executableがやっと静かになったり。
AM中に起床。
Emacs 26.1。初回起動のIME切り替えがうまくできない件。25.1でも
ダメだったり。てか、前からこうだっけ?Windows10がアップデート
したのが原因だったりする?と思ったりも。今となっては確認する事が
できませんが。
Pouetで最近開催された
デモパーティーの作品を眺めていたらoldskoolデモで、MZ-700の作品が
あるのを知ったり(
NEOTOKYO by Ivory Labs & Quadtrip & Fit)。意外に思ったのは
作ったのは日本人では無さそうな点。1982年発売の日本のパソコン
(エミュレータかも知れませんが)向けに日本人じゃない人が2018年にデモを
作っているって激レア過ぎると思ったりも。
なんかAntimalware Service Executable(MsMpEng.exe)というプロセスがCPUを
使い続ける状態だったり。何やってんだ?
Emacs 26.1。しばらく起動してアクセサリ類を動かしてみたり、パッチの
整理をしてみたり。
早起きしたり。
秋葉にお出かけ。そしてキーボードを購入。
購入したのはREALFORCEのR2TLSA-JP3-BK。キー荷重30gのキーボードです。
指が痛いのがどうにも治らず、
ある結論に達したためREALFORCEに白羽の矢を立てたという苦肉の対応です。
まずRazerの黄軸キーボード。消音化リングを調節したり
スポンジでトラベル距離を調節したり、
色々と試してみたのですが、絶対的な対策とはならなかったという結論。
で、改めてキーの押し方などを観察した結果、どうやらキーがスムーズ
に動かなくなってきているのが判りました。TANEは普段使いがEmacsの為
Cntl(キー位置的にはCapsLock)を頻繁に押すのですが、押していると
何故か指が痛くなります。連打をしている訳ではなく押しっぱなしに
するのでスムーズに動くか否かはあまり関係無いようにも思っていた
のですが、どうもこのほんのちょっとした突っかかりが要因の一つに
あるようだと考えてます。黄軸はアクチュエーションポイントが浅いので、
キーが反応しないという事は無く、スムーズに動かないのも気のせいくらい
の感じなのですが、気付かないうちに軽い突き指を繰り返している感じに
なっているのではないかと思ってます。
続いてサンワのロープロファイル赤軸のキーボード。これは職場使いにしてみています。
しかし、これもキーは軽いのに何故かしばらく使っていると指が徐々に
痛くなるという感じです。指が痛くなった後で使う事にしたキーボード
なので、キーを軽くするという対策はハズしているのかも知れません。
最後にサンワのロープロファイル青軸のキーボード。
底打ちが原因の一つにあるのではないかと試してみたものの、
長い時間使っているとやっぱりダメっぽいという感じ。
という訳で、痛いのだけをどうにかできないか?という理由のみで、
世の中に今あるキーボードで一番キー荷重が軽いのはREALFORCE 一択だった
いう流れです。少し使ってみた所では良好な感じがします。ただ、
これまでの流れから考えると時間をかけないと真価のほどはまだ
判らないと考えています。因みに、
アクチュエーションポイントを変えられるので、誤入力せず且つ
底打ちダメージが無い所に調節してみるという事で、
1.5mm,2.2mm,3.0mmのうちの2.2mmを選択してみています。
Emacsの26.1が来てた。Cygwinパッケージにも来ているようです。
てか早っ!
Emacs 26.1に自前のIMEパッチを当ててみたり。ほんの少しリジェクト
されたのですが、手動で適用可能な範囲。あとエラー無くパッチできた
所も変数が構造体に包まれたりしてたのをちょっと直してみたり
する感じでビルドに成功。でも、色々と動かなくなってたり。
遅めに帰着。
GTS。F1500選手権は少しお休み。増えた別のレースを消化してみたり。
dmd対応。できあいのライブラリが見つからないのですが、
ズッコケる理由が判らなかったので、どこまで進んでいるのか
調べてみたり。すると、CreateWindowEx()の呼び出しが戻って来る前に
死んでいる事が判ったり。ウインドウを生成する部分は外付けライブラリを
使わないコードと全く同じなのですが、何故か動かないという感じ。
dmd付属のwindbg.exeを使用してみたのですが、ファイルが読み込めない
感じだったり。32bitビルドした実行ファイルしか扱えないのでは
ないかという疑惑。
Cygwin64のgdbを使うとひとまず実行とSegfaultした所での
スタックトレースの表示はできたり。CreateWindows()に指定したWNDCLASS
のWndProcの中に入っているようですがその中で死ぬ模様。でも死んでるのが
意図的にデバッグ停止させるために仕込んだ例外throwなので
どうしたもんか。