カテゴリー
技術

DOS Subsystem for Linux – MS-DOSの上でLinuxコマンドを動かす

DOS Subsystem for Linux は、「MS-DOS環境を好む人のためのWSLの代替」で、Linux 環境をMS-DOS 上に構築したものです。

“Windows Subsystem for Linux”(WSL)においては、Windows 上でLinuxのアプリケーションをそのまま実行できるようになりましたが、それと似たようなことを MS-DOS の上で動かす、というもののよう。

MS-DOS の起動画面から、dsl コマンドを叩いて、MS-DOS 側のファイルシステムをマウントし、viエディタで編集していますね。DOS をメインに使っていて Linux アプリケーションも使いたいという人にとってはありがたい仕組みです。

Hacker Newsのスレッドでは当初、「MS-DOS を Linux 上で動かすもの」と誤解されたようですが、逆方向になります。

誤解が生まれた訳は、”Windows Subsystem for Linux”というマイクロソフト公式の名づけ方法にありそう。”Windows Subsystem for Linux” という字面を見ると、海外ユーザーでもやはり直観的には「Linux のために動く Windows」という印象を受けてしまうようです。しかし、「Windows は複数のサブシステムを持っていて、その一つとして Linux を動かす」と解釈すれば、WSL のことだと言えなくもありません。

Linux側には「サブシステム」という概念がないため、Linux ユーザー側から見ると混乱が起こるのであろう、ということ。”Windows Services for Unix”についても同様で、Unix で Windows を動かすのではなく、Windows のサービスとしてLinux コマンドを使えるという意味になる、と。

“DOS Subsystem for Linux” は、そんなマイクロソフトの WSL のネーミングに従った名前と言えます。

作者の解説によると、MS-DOS 上で最初に dsl コマンドが呼ばれた際、Linux カーネルが立ちあげられ、MS-DOS からPCのコントロールを奪います。

Linuxコマンドの終了時、カーネルは仮想86モードで元のDOSに制御を移し、DOSは仮想モード内で動いているとは意識せずに次に DSL コマンドが呼ばれるまで DOS として動き続ける、と。

仕組みとしては問題ありそうだが、驚くほどうまく動作している、ということだそうです。

カテゴリー
技術

1978年のチェスアプリSargonを現代に蘇らせるプロジェクト

billforsternz/retro-sargon は、Intel 8080/Zailog Z80 で1978年に書かれた Sargon というチェスプログラムを、x86 に移植するという個人プロジェクトです。

参考までに、こちらは1983年に発売されたCommodore 64版 Sargon 2 の画像。

Z80のエミュレーターで動かすのではなく、Z80ベースのプログラムをx86(32bit)に変換しています。

x86 に移植された Sargon は、Chess GUI にこのエンジンをセットすることで対戦できるということです。作者おすすめのTarrasch Chess GUI を使って対戦してみました。

チェスでは人間が遊んだりコンピューター同士の対戦を表示するためのGUI部分が規格化(UCI)されているのですね。エンジンとGUIを別々にいろいろな人が開発していて、組み合わせて対戦させたり、人間が遊んだりできる。

オリジナルのSargon では探索の深さが最大で6に決められていたそうですが、移植後は最大で20階層に、状況に応じて読みの深さを自動で調整するようにしたとのこと。CPUの速さや使えるメモリ量が、昔のコードそのままでもずっと強いプログラムに変化させたわけです。

作者の @billforsternz 氏は、8080→x86のコンバーターと、8080→Z80→x86のコンバーターの二つを作り、変換結果が等しくなることを確認もしているということ。オリジナルの8080のコードに対する不満点から、Z80 に変換したものを起点としたいようなことも書かれています。当時のCPUの解説の中ではNECのV20などにも言及されています。

Readme に書かれた詳細がとにかく細かく、作者のこだわりが感じられます。Sargon はアセンブラ的にもメモリ利用の点でも変換しやすい作りだということ。他の色々な8080/Z80のプログラムが同様に移行できるわけではないかもしれませんが、愛着のある昔のプログラムがある人は、趣味としてこういう遊び方もあるんですね。

via Hacker News

カテゴリー
技術

Unselfie – 自撮り(セルフィー)を自然なポートレイト写真に変換する技術

バークレー大学アドビ研究所の論文(pdf)で、手を伸ばして撮影した自分撮り(セルフィー)を、他人が撮影してくれた肖像写真のように自動変換するアンセルフィー(unselfie)という技術の研究が発表されています。

左のようなセルフィー写真を、右のように変換してくれるということです。

「写真家や三脚の助けを借りずにスマートフォンで気軽に自分の肖像写真が撮れるようになりましたが、撮られた写真のポーズは不自然になります。この研究では、セルフィーから自然なポーズの写真を作る unselfie という変換を導入しました。」

学習データとして「同じ場所、同じ人物、同じ服装でのセルフィーと自然な写真の2枚のセット」を入手することは難しいため、大量のセルフィーと大量のポートレイト写真をそれぞれ用意し、元のセルフィーと似たようなポートレイト写真への変換が行われるような生成器を学習させるようにしたそうです。

普通に撮っていたならこんな感じだったろう、という写真を見つける部分はまだまだ完全ではなく、肩幅や腕の太さが不自然に太く/細くなったりするし、腕の位置が変わったことで見えるようになる背景部分の生成や脇の部分も失敗することはあるそうです。

他の画像変換と同様、このような変換もあっという間に改良されていって、よりカジュアルに使えるようになるかもしれませんね。そうなると、証明写真とか遺影みたいなものも、セルフィーしかないところから調達できてしまうのかもしれません。変換してできる自然な写真を「証明」用にできてしまうとしたら、写真による証明という概念自体も揺らいでしまいそうですけれど。

via VentureBeat