なんとなくWindows環境のPythonでJupyter Notebookを動かしてみた図。venv環境に対してJupyterを導入している。記事画像はnumpyとmatplotlibを入れて散布図を出してみるテスト。Python 3.9.0だったのをPython 3.11.0にアップデートしたのは秘密。なお、Jupyter Notebookのタブを複数開いているとエラーで落ちる不具合があるので注意。
Colabでのマジックコマンドは一部挙動が変……?
Google ColabはJupyter Notebookという実行環境の上で動いており、この中では通常のPython命令の他に%や!から始まるマジックコマンドが使える。で、変数を実行環境のデータベース*1に保存できる%storeというマジックコマンドがあるのだが、複数指定できそうなのに複数の変数を指定しても最初の変数だけ保存・展開されるという謎。本来なら複数の変数を保存等できるはずなのだが……。-rオプションなどは効いている(内部的にオプションと引数は分離されるようになっている)。仕様なのかバグなのか…… ちなみに執筆時点でColabのコーギーモード・猫モード・カニモードをオンにしているとハロウィン仕様で出てくる。
*1:ランタイムを再起動しても内容が保持されるが、ランタイム毎削除した場合は消える
PHPでBrainf**kのインタープリタを書いてみるテスト(ソースは(まだ)上げてません)
書いている人はそこそこいるだろうけれど、何気にBrainf**kのインタープリタをPHPで書いてみるテストをしているのは秘密。一応Brainf**k Archiveにあるインタープリタのソースコードなどを参考にしながらすべての基本命令を実装した。仕様としては、ポインタはArchive版と同じ最大32768*1、1バイトunsigned intモード(デフォルト)とsigned intモードの切替が可能、バイト列出力が可能、独自命令としてデバッグ用の#命令*2を実装してある。CLI向けに作っているため、CLIから起動するとデバッグ命令の出力やエラーメッセージに色が付く機能を搭載していたりする。一応もう少し機能追加とかしてからGithubかGistに上げてみようかなぁw(いつ上げるかは言ってない)
*1:ただし今の所マイナス(開始位置から左側)は許容しない設定にしている
*2:デバッグモードがオンの場合に限り、配列の中身を表示する。詳細デバッグモードがオンだと実行している文字の位置、実行ステップ数、現在のポインタ、出力バッファの中身も表示する。ちなみにAzicore氏のJavaScript Brainf**kインタープリタでの#は配列の中身のみ表示される。
人工知能で2次元画像を拡大したりノイズを除去したりするwaifu2xがすごいので適当な画像をなんちゃってHD化してみた。
ultraist.hatenablog.com
2次元画像に特化した、人工知能を利用して画像拡大/JPEGノイズ除去する(正確には縮小する前の状態/圧縮する前の状態に戻す)、waifu2xが話題になっているので、適当な画像でためしてみた。R4付属のボーナスディスクに収録されているナムコカタログ98のスクショ。都合により記事では縮小かつJPEG圧縮したサムネイル画像*1になっているが、クリックで元のサイズのPNGが表示されるはず。
左:waifu2xで2倍に拡大(1280x960) 右:オリジナル(640x480)
ちょっと変なところもあったりするが、本当に綺麗に拡大されている。いわゆるなんちゃってHD化。ノイズ除去は使用せず。
2次元画像を綺麗に拡大できることもあってDropbox内にあるリタの画像をwaifu2xで拡大しまくったのは秘密です。
なお、waifu2xのソースは公開されておりLuaで書かれている模様。必要なものにCUDAとかあるのでGPUでも使うのか?
*1:それをwaifu2xで拡大&ノイズ除去したら面白いかもしれないが時間の都合上今回は省略
PHPに内蔵Webサーバーあるの知らんかった…(5.4.0以降)
PHP: ビルトインウェブサーバー - Manual twitterのTLを見て知ったが、PHP 5.4.0以降のphp-cliには開発用のWebサーバーが内蔵されている。コマンドラインからphp -S localhost:8000みたいな感じで起動するとカレントディレクトリがルート(/)*1なPHPが動く簡易Webサーバーが起動する。起動時にPHPスクリプトのファイル名を渡す(php -S localhost:8000 router.php)と、リクエスト発生時にそのスクリプトが動作し(ルータースクリプト)、例えば内蔵Webサーバーが対応していないMIMEタイプに対応させることが可能。ローカルで簡単にテストできるのでいろいろと捗りそうな予感。画像はUbuntu機に入れているPHP 5.5.9の内蔵Webサーバーを起動しphpinfo();した時の画面。Server APIにBuilt-in HTTP serverと表示されている。
*1:-tオプションで明示的にルートを指定することも可能