2023/04/01(Sat)C++でJSONを読み書き
また単純なプログラミングの興味としてC++でJSONをparse/serializeするやつをいじる熱がちょっと再燃して
https://github.com/ttsuki/nanojson などいじっていた。
あんまり巷のライブラリを検索したりはしてなかったんだけど、
ふとC++ JSONでググると、nlohmann/json を解説してくれてるQiita記事とかが出てきた。
nlohmann/jsonは、あー名前は見たことあるかも、と思って、記事読んでみると、
ADLでto_json探すのとか、名前空間汚したくなければシリアライザクラスの特殊化しろとか、
割と同じところにいきついていて、まぁ、普通に考えるとそうなるんだわなぁというconfidenceと引き換えに熱が冷めた。
C++でJSONを読み書きしたかったのだが、
C++でJSONをかっこよく読み書きできるようにしたくなってしまった、のは良くなくて、というかそもそも、
C++でJSONを読み書きしたかったわけではないはずだ。(どういう意味か?)
新年度ですね。新規性のあることをせねばなぁ。
2023/03/03(Fri)CapsLockキーをCtrlにするやつ
なんとなく、メインマシンのWindowsをクリーンインストールした。
最新devチャの Windows11 25300 のISOをとってきて中身をUSBメモリにコピーしてインストール。
Build 25300.rs_prerelease.230210-1451。さっぱり。インストールしたてのWindowsは気持ちさくさく動く感あるね。
SysInternals Ctrl2cap を /install して再起動したらキーボード何にもきかなくなってしまった。
ログインパスワード入れられないー。実際にはもう一度Windows再インストールからやったけど、
On-Screen Keyboard使えば、マウスポチポチして入れた……。
再現検証と思ってもういっかい、Ctrl2cap入れて再起動したら再発したので、一応FeedbackHubに投げた。
もう使えないのかなこれ。まぁ、👆のレジストリの書き換えすれば別にカーネルモードのフィルタドライバなんか入れる必要ないからいいんだけど。
2020/03/02(Mon)Vagrant / CentOS 8 / gcc 9 (Visual Studio からの remote build/debug) / apache / ffmpeg / nginx-rtmp-module 環境構築メモ
自分のためのメモ
「ffmpegを呼び出してライブストリームをごにょごにょして独自形式のコンテナにMuxしてhttpでストリーミングするアプリケーション」を作りたくなったので、 Visual Studio で、C++ コンソールアプリケーション(Linux) としてプロジェクトを作って、CentOS 8上でリモートビルドしてApache に載せてCGIとして動かしてみるために、 vagrant で VMを用意して、CentOS 8 上に、g++ と apache と ffmpeg を準備します。
WSLは、そのうち……(ずっと、そのうち……って言ってる気がする)
2019/07/13(Sat)Cygwin php + PhpStorm Xdebug で、PHPなWebアプリをブレークポイント仕掛けてデバッグする
忘れる前にメモ。
まだcygwinなんか使ってるの? WSLにしたら? という心の声も聞こえるが、 postgresもphpも入れるだけで動くし慣れ親しんでいるのもあって、開発環境としては手軽なので。でも、vagrantやdockerが手軽に使えるようになってきて、世の中の人からみたらきっと少数派になりつつあるのだろう。
Cygwin に postgres 入れて、 php アプリの開発環境にしている。
$ php -S localhost:8000
で動く built-in server で、xdebug で PhpStorm から ブレークポイントしたい話。
XdebugのPre-built なバイナリは、PHP公式ビルド向けしかない。
急がば回れ。 PHP公式ビルド入れるかで入れた。ら、pdo_pgsql を有効にするとセグる。うーん、よくわかんない。
急がば回れ。その2。Xdebugソースからcygwin用にソースからビルドすればいいんじゃね?
https://github.com/xdebug/xdebug から、clone して、readmeのとおりに rebuild.sh すると、コンパイルエラーで止まる。ググると、 https://stackoverflow.com/questions/29752441/mac-xdebug-make-warning-incompatible-pointer-types-initializing-jmp-buf-ak が引っかかったので、
#ifdef HAVE_SIGSETJMP
# define SETJMP(a) sigsetjmp(a, 0)
# define LONGJMP(a,b) siglongjmp(a, b)
# define JMP_BUF sigjmp_buf
#else
# define SETJMP(a) setjmp(a)
# define LONGJMP(a,b) longjmp(a, b)
# define JMP_BUF jmp_buf
#endif
を、 xdebug_handler_dbgp.c の上の方に書いて、1032行目を
JMP_BUF *original_bailout = EG(bailout);
にしたら、makeできた。make installした。
cygwin の php は、 /etc/php.d/ の下にある ini を読んでくれるので、
/etc/php.d/xdebug.ini
を作って、
[Xdebug]
zend_extension="xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000"
と書いたら、phpinfo に xdebug 出てきた。
後は、PhpStorm のマニュアル https://pleiades.io/help/phpstorm/creating-php-web-application-debug-configuration.html に書いてあるとおりに進めたら、なんかデバッグブレークできた。
めでたしめでたし。
2019/03/28(Thr)Docker on Ubuntu on Windows Subsystem for Linux で php:apache をなんとか動かすまで
結論から言うと、
hello-world は docker バージョンを 17.12.1 に下げることで動いたんだけど、
php:apache はちょっと変なことをしないと動かなかった。
どうも docker コンテナ内のfsでsymlinkを追跡できなかったり、
ファイルやディレクトリを消してもゴミが残ってファイルが消えなかったり、
なんか、謎の挙動をする。
# Dockerfile
FROM php:apache
RUN rm /var/lock && mkdir /var/lock && chmod 1777 /var/lock
RUN rm /var/run && cp -rp /run /var/run
RUN mkdir /etc/apache2/mods-enabled/mpm_event.conf /etc/apache2/mods-enabled/mpm_event.load
一応、phpinfo を拝むことはできた。
WSLでDockerを開発環境にするのは、まだしんどそう。
dockerに触ったことがなくて、ちょっと勉強しようと思って、環境の作り方を調べていた。
最近、WSLでdockerが動くらしいという。
普通はDocker for Windowsらしいのだけど、マシンが非力なので、Hyper-Vじゃない環境で動かせるならその方がいい。
というか、Hyper-V有効にしたらvagrant動かなくなってしまう。ちょっと困る。
WSLのインストールからUbuntuをWindows上で動かして、その上にdockerを入れてみようと思った。
が、すんなりとは行かなかったので、正しい挙動(?)を見るために、結局途中でDocker for Windowsも入れた。
*1
2019/03/22(Fri)screen から tmux に乗り換えた
2018/02/15(Thr)git for windows (mingw)のパスワードは .netrc ではなく _netrc
ローカルに作ったgitリポジトリをGoogle Cloud ソース レポジトリにpushしよう。
マニュアル
https://cloud.google.com/source-repositories/docs/adding-repositories-as-remotes
git for windows 環境で、(+Sourcetreeだけど)
Invalid authentication credentials.
2018/02/13(Tue)ゼロから始めるPHP…… (その2) PostgreSQL 入れる。
アプリ側で、ハロワができたので、次はDBを用意してつないでみたいと思う。
とりあえず、DBを用意するところまでやる。