Firefoxの履歴は自動で消えないのか?

Firefoxの履歴は自動で古いやつから消えていく。何日とかではなく、予め保存できる履歴の数が決まっていて、それを超えると少しづつ負荷をかけないようゆっくりと消えていく。保存できる履歴の数はハードウェアの性能によって決まるので、高性能なPCほど長く履歴が残る。

詳しくは、下のURLを読んでもらえばわかるのだが、未だに翻訳されていないので、要点だけ説明すると以上のようになる。

developer.mozilla.org

保存できる履歴の数だが、それを確認するには about:config を開いて、places.history.expiration.transient_current_max_pages の値を見るとわかる。

履歴の数を変更するには、上の値では駄目で、places.history.expiration.max_pages の方を変更する。

ちなみに、些細なことだが、Firefoxは履歴とブックマークを同じ場所で管理している。上で説明した数にはブックマークの分も含まれているので念のため。

自由でゴミだらけのウェブ

Firefoxのレガシーアドオンが廃止になる。小生にとって一番重要なアドオンであるGreasemonkeyが使えなくなるのはいやだ。それで、みんなはどうするのかなと思ってググってみたら、はてなキーワードがスパムの標的にされているのを見つけた。いわゆるキーワードスパムってやつか。

Greasemonkeyに関するブログ記事まとめ
f:id:nextugi:20170908202325p:plain:w250

並んでる記事のうち半分以上がスパム。特に最近のやつがひどい。

なんかスパムのロングテール現象みたいなものが起きているような気がする。

前に書いたけど、

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

http://tugi.hatenablog.com/entry/2017/04/23/001935

ウェブはこうなりつつあるのかな。

今はまだデタラメな文章を垂れ流してるだけだけど、そのうち人間とは区別のつかないステマ記事がAIによって量産されるようになる。そうなったら無名に近いサイトはゴミに埋もれて検索エンジンですら発見できなくなる、みたいな。そうなったらやだな。

やっぱ未来のネットはFacebookみたいな実名SNSの勝ちで、もうWWW *1 は終わりなのかなあ。

*1:ワールド・ワイド・ウェブ。 WWW と書いてももはや草が生えてるようにしか見えないという。これが何の略で、どういう思想が込められていたのか覚えている人は多くないだろう。

最近のPythonは2つの派閥に分裂してるような気がする

本を読んでて思ったんだが、最近のPython
オブジェクト指向派」と「関数型プログラミング派」に分裂してるような気がする。

自分はどちらかというと後者の派閥なので前者のことを悪く書くけど、
オブジェクト指向派は何でもかんでもクラスで書きすぎでしょ。
何個もクラスを作って、それらが包摂やらメタクラスやらで密結合してるとか、
小生の目からすると無意味に複雑にしてるように見える。
そう、まるでJavaのコードを読んでいるかのように感じるのだ。

Pythonには関数型の良い部分を参考にしたライブラリが色々ある。
それらを使えば、短くて単純で読みやすいコードが書ける。
クラスを使ったほうがいい場面があるのは確かだけれども、
かといって全部クラスでやるのはちょっと無理がある。
「まずクラスありき」ではなく、クラスは必要な時に使いましょう。
そう思うんだけどなあ。

参考動画:
www.youtube.com

大抵の入門書にある問題は総当りで解けてしまうということ

ちょっと確率の復習してたんだけどさ、

「サイコロを3回投げて出た目の最大値が5である確率」

の計算が合わなくて「あれー」と思って考えていたのだが、コンピュータだとすぐに総当りで計算できちゃうのよね。

>>> len([i for i in product(range(1, 7), repeat=3) if max(i) == 5])
61

なんかやる気が1%くらい低下した。

でもよく考えると、サイコロの数が増えたら指数爆発するわけでして、それでも効率よく計算できるのが人間なんだよなと思い直してやる気が2%くらい増えた。

参考動画:
www.youtube.com

PowerShellの.bash_historyはどこにある?

PowerShellには .bash_history みたいな記録ファイルがないから不便だなと思っていたら、ちゃんとあるじゃないですか。

PowerShell Commands History | Windows OS Hub

& (Get-PSReadlineOption).HistorySavePath

と入力すると、コマンドライン履歴を記録したファイルを開くことができる。

よく読むと、このPSReadlineってやつはWindows10から有効になった機能っぽい。

同モジュールは他にもショートカットキーの設定に対応してて、例えば

Get-PSReadlineKeyHandler -Bound

とやると現在有効になっているショートカットキーの一覧が得られる。

Windows10なのにmklinkがない?

PowerShellからGet-Command mklinkとかやってるのに見つからない。

よく調べたら mklink って内部コマンドじゃないか。

知ってるとは思うけど軽く説明すると、DOSコマンドには2種類ある。1つは外部コマンドで、“○○.exe”とか“○○.com”とかいうファイルとして存在している。もう1つは内部コマンドで、こいつはシェルの内部に実装されている。

コマンドプロンプトもこの伝統を引き継いていて、大抵の外部コマンドは C:\Windows\System32 などにファイルとして存在している。そうして、こういう外部コマンドはPowerShellからも実行できる。一方で、内部コマンドはコマンドプロンプトの方に実装されているので、実行するにはcmdを起動させる必要がある。

cmd /c mklink /?

f:id:nextugi:20170607180730p:plain

その他、assocとかftypeなども内部コマンドだから、PowerShellからは直接使えない。一方で、pauseとかmoreみたいなコマンドはPowerShellの方にも関数として機能が再現されている。

Ubuntuのシェルとか使ってて入力をミスると、「もしかしてこれのことか?」とか「それならこのパッケージに入ってる」とか自動で言ってくるけど、PowerShellにもそんな機能があったらいいよねってふと思った。

小生の関連付けの方針

Windowsの関連付けってどうやるのが正解なんだろう? なんかバージョンが進むにつれ、どんどん仕組みが複雑化してるよな。最初はassocftypeだけの単純な構造だったのにね。

自分が知っている限り、関連付けに関連があるキーは以下の4つ。

  • HKEY_CLASSES_ROOT
    • こいつは以下の2つのキーの合成
      • HKCU\Software\Classes
      • HKLM\Software\Classes
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts
  • HKCU\SOFTWARE\Microsoft\Windows\Roaming\OpenWith\FileExts

( HKCU := HKEY_CURRENT_USER, HKLM := HKEY_LOCAL_MACHINE )

で、色々調べたんだけど、以下の方法に落ち着いた。

① まともそうなアプリは、その関連付け機能を利用する。

② HKCU\Software\Classesの方だけいじる。
HKLMの必要な部分だけをHKCU側で上書きさせるようにする。
例えば edit\command だけ上書きするとかできる。

③ 関連付けの完全自動化は諦める。
エクスプローラーはユーザーに必ず一度はお伺いを立てるような仕組みになってます。
レジストリを書き換えて、はい完了、ということにはできない。