Python3.6からWinでもファイルステムがUTF-8化した

Python3.6からWindowsでもstdoutなどがUTF-8化してた。sys.getfilesystemencoding() とか sys.stdout.encoding とかも UTF-8 を返す。まるで OS が UTF-8 化したかのようだな。

どういうことかというと、文字列をコンソールに出力したとする。そうすると、まずPythonの文字列をUTF-8に変換する。それからOSの手前当たりで UTF-16LE に変換する。それから Windows API の *W系関数を使って文字列を画面に表示する。こんな感じ。

これまでsys.stdout.bufferにバイナリを入力できて、とても見通しがよかったのだが。う~ん、これでいいのかなあ。確かにWindows自体は全てがUTF-16化されてるわけだし、*W系の関数を使うべきだけど。それならそれでPythonの方も UTF-16 にしておくべきでは? まぁ、今回の件に関するPEPとかよく読んでないから、この不満は見当違いかもしれないけど。

あ、そうだ、 locale.getpreferredencoding() は相変わらず cp932 なので、open関数で encoding を省略すると、旧来の文字コードになるのは一緒です。はい。

それにしてもWindowsがコードページの概念から開放されるのはいつになるんでしょう。10年後ぐらい? 旧式のWindows APIもなくなると言われてもう15年くらいたつけど依然として残ってるし、Component Object Model も滅びずにロストテクノロジー化してるわけで、そう考えるとWindowsは新しいようで結構古い。

最近、Windows Subsystem for Linux をちょっと触ってみたんですけど、結構デキがよろしいように見える。10年後にはWindowsMacと同じようにUNIX化してたりしてね。

ReadyBoostが意外と効く

手元の余ってるUSBメモリーをReadyBoost用にしてみたら意外と効いた。特にOSの起動にかかる時間が4割くらい減ったような気がする。

このパソコン、CPUは4コアで計算能力は足りてるのだが、HDDが古い上にSATA2.0なので、データの読み込み速度が足を引っ張ってるよう見える。タスクマネージャーでもHDDは起動直後100%になってるし。そこでReadyBoostを試してみたところいい感じ。古いPCを使ってるのなら試してみることをすすめる。

ちなみに、USBメモリーは手元に余ってるやつの中からCheck Flashで速度を測ってから選んだのだが、種類によってかなり速度差がある。古くても早かったり、新しくても遅かったりすることもあった。

一寸の虫にも五分の魂

「一寸の虫にも五分の魂」の「五分」とはどういう意味なのか。

ググッても出てこないんだけど、皆は疑問に思わないの? そうですか。

仮説①

分とは割分厘の分のことである。

→ すなわち「人間の5%くらいの魂があるよ」という意味である。

仮説②

分とは10分の1のことである。

→ すなわち「人間の10%くらいの魂があるよ」という意味である。

仮説③

分とは尺貫法における質量の単位である。

→ すなわち「約375ミリグラムの魂があるよ」という意味である。

仮説④

五分とは「ほんのわずか」という意味である。

→ すなわち「わずかな魂があるよ」という意味である。

仮説⑤

五分とは等しいという意味である。

→ すなわち「体の大きさに見合った魂があるよ」という意味である。

結局どれ?

わかりません。

ひょっとしたら③~⑤あたりを合わせた意味があるんのではないかと思う。

Adblockはウェブを次の段階に引き上げるか?

Adblockのヒット数カウント機能がうまく動いてなくて、時々ググって何か情報がないか探しているのだが未だに解決しない。 [*1]

それで、検索結果に以下のようなサイトが混じっていて気付いたんだけど、Adblockに怒ってる人って結構いるのね。裁判沙汰とかに発展してたりして。

確かに、皆が広告ブロックを使い始めたら、広告に依存した今のネットは立ち行かなくなるかもしれないね。

でもよく考えると、これって僕にとっては望ましいことなんじゃないかなって、ふと思った。というのも自分は、まだSEOとかアフィリエイトとかが幅を利かせていなかった頃のネットが好きだから。当時の人間には金銭的報酬なんか一切なかったけど、ブログを書いたりサイトを作ったりしてた。そしてそういう情報しかなかったから、ネットは今より精神衛生上よかった。

それに広告がなくなってもたぶんネットは潰れない。大手のウェブサービスもたぶんなくならない。でもお金はちゃんと取るようになるかな。それでいいと思う。きちんと利用者から対価を取るネットの方が僕らのためになる。あの手この手で人を引きつけて無理やり情報を食わせようする今のネットは好きじゃない。

そういう時代になっても広告は残るかもしれないけど、基本的に閲覧者のためになるものしか残らない。ユーザーを騙したり煽ったりするものはそもそも見てくれないので自然と消えていってしまうだろう。class属性やid属性を消したくらいで広告フィルタリングの波を止めることはできない。AI技術の発展により広告っぽい要素は機械的に判定可能なようになる。ここ数年の技術レベルを見ていると明日そういうニュースが流れる可能性すらある。一時期に比べてSPAMメールがほとんど問題にならなくなったように、広告まみれのウェブが見れるのは、おそらくこの時代が最後なのかもしれないね。


というのが僕の予想なんだけど、こうした話がどこまで信用できるのか、それはわからん。というのも2000年初め頃の予想も結構外れてたりするから。当時は、ネットがあれば未来は明るいって思われてた。ネットがあれば人々は賢くなるし、相互理解の助けになるものと期待されていた [*2]。現在のネットはこの真逆で、ネットには無知が蔓延り、相互理解は進まず憎悪を撒き散らしてる。だから、この予想ももしかしたら外れなものかもしれない。 [*3]

*1:こういう記事を書くと、自分は広告をブロックしまくっていると思われそうだが、実はリスト購読などは一切してなかったりする。じゃあ何のために使っているのかというと、画面の邪魔な要素を消すために使っている。具体的には、窓の杜の記事をスクロールするたびに、目の端にちらちら出てくるボタンを消したり、あるいは書籍サイトで、これから本を評価しようってのに、みんなの評価を見せつけてくるサイトを何とかしたりするために使っている。もちろん、広告もたまにはブロックしてる。画面の1/4を半透明の枠で覆ってしまう広告とか、あまりにも酷いものは手動でルールを作成している。

*2:当時の空気がわかる言葉に「サイバースペース独立宣言」というものがある。今から考えると「おまえは何を言っているんだ」状態である。

*3:未来のウェブはプログラムの吐き出すゴミだらけになっていて、匿名に近い個人サイトとかブログはもはやボットと区別がつかないようになってたりしてね。

PowerShellって要するに.NET Frameworkスクリプトかな?

はてなブログは90日以上更新しないと上部にデカデカと広告が出るようになるのねー *1

f:id:nextugi:20170304000348p:plain

しょうがないから更新する。特に話題もないけど。

ここ数ヶ月はずっとPowerShellを使ってた。少し前に、コマンドプロンプトが2軍落ちすると聞いて、乗り換えることにしたのだ。

news.mynavi.jp

まともなPowerShellの本と言えば例のクックブックぐらいしかなかったのだが、Bashとか使える人ならあれで間に合う。

やってみるとPowerShellは意外と面白い。例を挙げると、こんな感じ。

# 東京オリンピックまでの日数を調べる
[datetime] '2020/7/24' - [datetime]::today

# foobarという文字列を含む cpp ファイルを探す
gci c:\src\*.cpp -re -file | sls foobar

# どの拡張子が多いか調べる
gci c:\down\* -re -file | group extension | sort count -desc

シェルとスクリプトの中間みたいなものを目指しているように感じる。つまりシェルスクリプトってことなんだけどー。DOSゆずりの貧弱なコマンドプロンプトと、ビミョーなスクリプティング環境であるWSH (VBScript, JScript) の問題を.NET Frameworkで一挙に解決してしまおうという魂胆か。そしてそれは今のところ成功しているっぽい。

JavaVMの中間コードを生成するプログラミング言語はたくさんあるけど、PowerShellはそれの.NET Framework版といった感じ。つまり、PowerShellを理解するのには.NET Frameworkの知識が結構必要ってこと。自分はC#はほとんどできないけど、いつかやってみたいね。

*1:なお、表示されている広告はベビーキャリアの広告である。自分はあちこちのサイトで、この手の妊婦あるいは乳幼児向け製品の広告によく遭遇するのだが、ひょっとして自分は、ビッグデータで妊娠しているものと判定されているのではないかと疑問に思っている。

言葉の使われ方を調べる

最近Twitterの成長が鈍化しているというニュースを見かけたので、あちこちのサイトで反応を調べてみたら、2chにこんなスレッドが。

陰キャ? 初めて聞く言葉ですね。意味のわからない新しい言葉を見つけると、なんか急に歳を取ったような気分になってくるんだよなあと思いつつググってみると、ちゃんと辞書がヒットするじゃないですか。

陰キャとは - 日本語表現辞典 Weblio辞書
http://www.weblio.jp/content/%E9%99%B0%E3%82%AD%E3%83%A3

陰キャラの略ですか。それなら私にも意味がわかります。*1

いつぐらいから、そういうふうに変化したのか調べてみる。

おや? この言葉、ここ3ヶ月ぐらいの間に急に使われるようになってますね。2chの過去ログ(タイトルのみ)を検索しても、この夏から急にスレッドの数が増えてます。


で、ここから先は推測になるんだけど……、

Twitter検索の日付範囲*2を使って、この言葉が急に増加する以前に、この言葉を使っていた人たちの特徴を見ていくと、どうも若い人が多い。しかもアフィサイトやまとめサイトのリンクがほとんど出てこない。たぶん2ch高齢化というのは真実だろうなあと思うとともに、ネットでの影響力は未だに健在といったところか。

*1:省略に省略を重ねてるわけなんだが、そのうち「陰気キャラクター → 陰キャラ → 陰キャ → 陰気」という経路で元に戻るんじゃないかと予想。

*2:https://twitter.com/search-advanced

プログラムから復元ポイントが作れない

以前「wmicで復元ポイントを作成する」という記事を書いたのだが、これをWindows10で実行すると、復元ポイントが作成されずに処理が戻ってしまう。エラーとかも何もなし。

ちょっと調べてみたら、Windows8から仕様が変わったらしく、過去24時間以内に1つでも復元ポイントが作成されていたら、新しいのを作らずにスルーするようになった模様。

Why the "create restore point" script work differently on Windows 7 and on Windows 10/8.1

そもそも復元ポイントはWMIを経由しなくてもWindows APISRSetRestorePointを叩けば作れるんだな。知らんかった。

追記(2017/05/15)

PowerShellなら Checkpoint-Computer というcmdletを使って復元ポイントを作れる。

# 作成
Checkpoint-Computer -Description '理由をここに書く'
# 閲覧(一番日付が新しい復元ポイントを表示)
Get-ComputerRestorePoint | Sort-Object CreationTime | Select-Object -Last 1