Batasan Blog

人類みな五十歩百歩

ABC/ARC

先週末のAtCoderコンテストのABC286(ビギナー)とARC154(一般)に参加しました。時間内に解けたのは前者が3題、後者が0題(涙)でした。

競技プログラミングは将棋と似ているところがあって、駒の動かし方を覚える(プログラミング言語の文法)、手筋を勉強する(アルゴリズム)、定跡を知る(問題のパターン)に加えて、持ち時間があるのでスピードも要求される。

時間を気にしてプログラミンをしたことがないので結構焦ってしまうのだが、焦るとループ処理の添え字とか、初期値とかよく間違う。ようやく10級くらいで道場に行きたくなってきた頃合いなので、もう少し楽しめそうだ(笑)

AtCoder

 

突然ですがAtcoder始めました(笑)。
元々プログラミングは好きなのだが、現役の仕事としては引退して既に20年近くなるし、趣味でプログラムすることはあったが、それほど日常生活にネタがあるわけでもないので、最近はすっかり遠ざかっていた。そもそもプログラミングの勉強などというものは、人から強制されてやっても全く面白くないので、自分がほしい・作りたいものがあるかどうかがすべてだと思うのだが、ネタが無ければどうしようもなかった。
しかしAtcoderのような競技プログラミングの世界だと、ゲーム感覚で行える非常に強いメリットがある。これは素晴らしい。ホントに最近このような世界があることを始めて知った。
早速Atcoderに登録してお試し問題をはじめてみた。最初は去年Sikulixで少しいじっていたpythonで初めて見たのだが、主流はC++でお手本などもC++で書かれたものが多いみたいので、せっかくなのでC++を勉強することにした。
この年でC++の勉強を始めるのはちょっと無謀で年寄りの冷や水になる可能性が高いが(笑)、CとJAVAの経験はあるので(20年以上前だが)、何とかなることを期待しよう(笑)

spacedeskとDuet Display

おうちに眠っていた第4世代iPadにモニターアプリとして有名なspacedeskがインストールできることがわかったので、ミニパソコンのセカンドモニターとして使いはじめた。しかしやはりWifi接続に加えて第4世代iPadという最新機種に比べえるとかなり遅い機種という条件ではそれなりに表示遅延が発生し、マウスなどは動きが遅すぎて実践で使うには用途が限られてしまう。
そこでいろいろ調べてみると、ライトニングケーブルをつかってモニター表示できるDuet Displayも第4世代ipadのiOS10.3にインストールできることがわかった。こちらは有料アプリだが、いろんな場面で使えそうなので今回購入することにした。
実際使ってみると、サクサク動いてなかなか快適で普通のモニターとほぼそん色ない。ただ一つ困ったことがあって、MINISFORUM UM350はミニパソコンだけあって小さいので部屋の中を移動して使いたいことがある。そういう場合に気軽にモニターとして使えると良いのだが、Duet Displayはパソコン起動してログインした後じゃないと接続できない。spacedeskはパソコン起動後40秒後にログインしなくても起動、というオプションがあるのでspacedeskはファーストモニターとして使えるが、Duet Displayだけだとパソコン起動時にログインができなくなってしまうので、セカンドモニターとしてしか使えないのである。でもiPadは1台しかないので(笑)、どのような組み合わせで使うか思案中である。

Duet Display

Duet Display

  • Duet, Inc.
  • Productivity
  • $14.99

apps.apple.com

 

 

古いiPadの活用

2台目おうち物理パソコンとしてミニパソコンを購入していろいろと遊んでいるのだが、やっぱり2画面ほしい(笑)。ノートパソコンのdynabook N40をメインに使っていたときは、当然ながらノートパソコンのモニター+外部モニター(と言ってもテレビだが)で2画面あった。ミニパソコンはミニといってもデスクトップなので当然モニターは付属していない。今回買ったMINISFORUM UM350はHDMI出力に加えて、いわゆるDisplay PortとそれからType-C出力にも対応しているみたいなので、単純に接続しただけでも3つの画面まで出力できるようだ。
今のおうちの机はあまり広くないので、モニターとして使っている東芝レグザガス圧式アームでなんとか机の外になるように配置して使っている状態なので、もう一台モニターを買うにしてもポータブルで場所をとらないものがよいといろいろ探していたのだが、ふとおうちに古いiPadがあることを思い出した。
おうちにあるiPadはいわゆる第4世代というやつで、2012年発売のタイプである。私のようなLinuxユーザからみるとたいして古い機種ではない(笑)のだが、iOSが10.3までしか対応していないので、もうほとんどのアプリが動作しないようになってしまった(涙)。自分のApple IDに比較的新しい機種で一旦インストールして、iPadには古いバージョンのアプリを入れるという裏技(?)を駆使していたのだが、それでもほとんどSafari以外は動かなくなってしまった。
そういう状況なのであまり期待していなかったのだが、モニターアプリとして有名なspacedeskはなんとiOS10.3でも起動することがわかった!。ということで第4世代iPadはモニターとして第二の人生を歩み始めました(笑)。

spaedesk

spacedesk

 

 

 

Windows 都市伝説

Windows11になってターミナルの話をしていたら、少し前に某巨大掲示板(と言っても5じゃなくてまだ2の時代だが笑)の都市伝説の板の話を思い出した。そこではWindowsPRNという名前のフォルダーやファイルが作れないのはビルゲイツさんがこの単語が嫌いとか、昔いじめられた人のイニシャルだったとか、まことしやかに語られていた(笑)。
Unixユーザ(当時Linuxはまだ無かった)でMS-DOSも使っていた人なら誰でも知っているとは思うのだが、もうそんな時代の技術者も少なくなったとも思うので備忘録として書いておきたい。
Unix(繰り返しだがMS-DOSの時代にはまだLinuxは無かった)のスクリプトでは普通に使われる以下のようなコマンド、

$ (いろんなコマンド) > /dev/null
$ (いろんなコマンド) > /dev/null

これはコマンドが出力する文字情報を画面に出さないと言う意味である。なぜこんなことをするかというと、スクリプトを実行するときに画面に大量の出力で大事な部分が見えなくなってしまうことがあるので、必要のない出力は抑えたいときに使う。MS-DOSは少しだけ(笑)当時のUnixをまねしているので、同じようにMS-DOS

C:\> コマンド > NUL
C:\> コマンド > NUL

とすると、コマンドの表示は画面にでないようになる。Unixと違うのはNUL予約語であって、デバイスでは無いということだ。またUnixで次のようなコマンド、

$ tty
/dev/pts/0
$ echo "Hello World" > /dev/pts/0
$ tty
/dev/pts/0
$ echo "Hello World" > /dev/pts/0

などとやると画面に直接文字列を表示できる。ttyというコマンドは自分が使っている画面の名前を出力する(出力結果は環境によって異なる)。その画面に文字を直接出力するのが2つ目のコマンドの意味だ。もしLinux環境をお持ちであれば、2つ端末を開いてそれぞれの端末名に対して書き込んでみていただきたい。簡易チャットになる(笑)。もちろんOS標準のデバイスファイルなので、/dev/pts/*のファイルの中身が"Hello World"になってしまったりはしないので(笑)安心して試していただきたい。これは接続されているデバイスが画面でなくプリンターでも同じように出力される。
同様にMS-DOSでは接続されてるプリンター予約語PRNだったので、

C:\> type autoexec.bat > PRN
C:\> type autoexec.bat > PRN

のようなコマンドを実行するとプリンターに印刷されるというわけだ。もちろんパソコンのシリアルポートに直結されているプリンターがある場合の話である。ちなみに当時パソコンの動きがおかしくなると、OSの最初に起動されるautoexec.batの内容を確認するためによくこのコマンドを実行した覚えがある(笑)。
今となってはこんなコマンドを実行する人は皆無だと思うが、MS-DOSのこうした機能の互換性を保つためにNULやPRN予約語のまま今のWindowsに引き継がれているという点に長い歴史を感じるのである(笑+遠い目)。

Windows都市伝説

Windows都市伝説

 

Windows11 ターミナル

MINISFORUMというミニパソコンを買って、図らずもWindows11ユーザになったわけだが、Windows ターミナルというものの存在に気付いて重宝している。今までもWinKey + r + アプリ名とか、Wikey + r + cmdでいわゆるコマンドラインをよく使っていた。元々はMS-DOSユーザーだったからかも(笑)。Windows3.1の前はまずMS-DOSが立ち上がって、そこでwinと入力してWindowsを立ち上げていた時代が遠い昔のようだ(笑)。しかしマイクロソフトとしてはいまだにMS-DOSとの互換性にひきづられているのかもしれない(笑)。Windows ターミナルがWindows11になって初めて付いたのか、前からあったのか細かいことは知らないが、Windowsもようやく化石のようなcmdというアプリから脱却することにしただろう。
しかしターミナルを使うための設定が変なところにあるので、まだ恐る恐る変化している途上という気もする。  
Windows設定プライバシーとセキュリティ開発者向け の中にターミナルの設定があった。ここで設定すると従来のコンソール(cmd)から変更されてターミナルが使えるようになるようだ。

Windowsターミナル設定

ターミナルになって良いところはタブでいくつもWindowが使えるのと、何よりもコピペが普通に範囲選択後にCTRL+cとCTRL+vで可能なことだ。もちろん前に実行したコマンドが上下カーソルキーで選択できる(これは前からできていたかも)。ターミナルが無い時代はLinuxなどにアクセスするのにTeratermなどを使っていた人も多いかったと思うが、ターミナルがあればこれで十分だと思う(個人の感想です笑)。これからはWindows11でいきなり WinKey + r の後に

ssh クラウドパソコン名
ssh クラウドパソコン名

クラウドパソコンにつないでも、Linux端末とそん色ない動きができるのでとても重宝している。

 

 

Windows11 マウス右クリックメニュー

最近ミニパソコンという、自分用としてはものすごく久しぶりに高額なモノを購入して、しかもしらないうちにWindows11ユーザになっていた(笑)のだが、ほとんど問題なく使えている。ただちょっとした違いはあるもので、一番困っているのはマウスの右クリックメニューだ。
Windowsのキーボード操作でも書いたのだが、もともとコマンドライン大好き人間なので、Windowsでもなるべくマウスを使わないキーボード操作が身についてしまっている。もちろんマウス操作もそちらのほうが便利なら使うのだが、その典型が右クリックだ。特にエクスプローラーでファイルを右クリック + m (名前の変更)は重宝している。これは名前をホントに変更する場合だけでなく、プログラムやレポートでファイル名をコピペするときに右クリック + m + CTLR+c までが一連のコンボなのだ(笑)。
Windows11になったことでこのエクスプローラーの右クリックメニューが変更になっているようだ。もちろんなんらかのOSの設定変更すればWindows10と同じにできるのかもしれないが、それはWindowsは(なるべく)ありのまま使うという私のポリシーに反している(笑)ので、代替手段の検討が必要である。
元からある右クリックメニューのキーボード操作であるSHIFT+F10だとなぜかWindows11でもWindows10と同じメニューになっているようなので、これを使うのだ第1候補。だがSHIFTとF10はちょっと遠いという難点がある。第2候補としては右クリックの後、なぜかF2で名前の変更になるようなので、この2つの候補のうちどちらを標準にするか検討中である。今まで既に何度も指が勝手に右クリック + m + CTRL+c を押してしまって空振りということをやっているので(笑)なるべく早く決めたいと思う。

Windows11 Right Click Menu

Windows11 Right Click Menu