無機野

ここはお前の日記帳

evernoteの代替にコード書く前提のメモサービス探していますナウ

・自身がメモサービスに求めるもの
markdown対応
コード書ける
画像おける
ブラウザから使える(重要)

で、意外と未だにevernoteより便利なサービスが見つから無い

evernoteの不満点
markdown非対応
ということはコードのメモにも不向き
ブラウザからの編集ができるにはできるけど微妙
会社から繋げられない(繋ぐな)

というわけで、コード以外のメモや日記やいろんな手順書みたいなことは全部evernoteで、
コード系は全部それに専念したサービスに集中しようと模索しています

そこにきてTyp3rというサービスが全体的にいい感じっぽい
https://www.typ3r.com/

・メリット
markdown対応
シンプル
gitのアカウントで使える
会社から繋げられる(繋ぐな)

・デメリット
日本語の情報どころか英語の情報も皆無
バックアップ取れなくて不穏

f:id:moppii:20190720155231p:plain

hp envy x360 13インチ 夏モデル(?) 購入

購入(以下は完全に自分の覚え用なので人に読まれることを考慮してません)

前使ってたlenovo miix720はバッテリーだかそこに至るまでの回路だかが死んで充電できなくなって、メーカーに修理出すと3万するっぽいのでそれならばと新しいマシン購入することにした
要求としては2in1じゃない普通のノートとして運用できること:miixsurfaceタイプだったが画面が自立しないのが地味に不便なことが多かった
ラップトップタイプ:今度ライブでmidiコンとか繋いでオーディオIF経由でいろいろ流したりするのでデスクトップはNG

というわけでツイッターでプチバズってたhpのenvy x360を衝動買い、コミコミでほぼ10万ジャストなのでスペック考えればかなり安いのでは
注文が今月22の晩、届いたのが本日29の午前中

とりあえず初回起動してネットワークの設定とか指紋のアレとかをアレして、あと何はともあれwin update、あといらないプリインもアンインストール
ここまででだいたい30分くらい
直後がこんな↓感じ、SSD512GBモデルだけど空き容量は444GBだそうです
f:id:moppii:20190629215444p:plain

winのパッケ管理は未だに実質chocolatey一択っぽいので、どんどんcinstしていきましょう
googlechrome adobereader flashplayerplugin flashplayeractivex jre8 firefox 7zip.install vlc git.install putty.install openssh javaruntime powershell autohotkey.portable ccleaner inkscape chromium dropbox opera audacity everything tuxguitar crystaldiskinfo googlejapaneseinput steam evernote discord ffmpeg imagemagick vivaldi sumatrapdf musicbee mediainfo Krita geogebra obs-studio teracopy freefilesync keypirinha reaper voicemeeter
あたりかな、まだ入れ足りないのいっぱいありそうだけど

本来の目的たるDAWソフトのcakewalkはchocolateyに無かったので手動インストール

pythonの環境構築だけど、やっぱりなんだかんだanacondaが一番楽っぽい
一応chocolateyにもあるのだけど、DLに時間かかりすぎると勝手にインストール止められる可能性あるらしいので、公式からインストーラ落としてきたほうがいいかもしれない
ただしanacondaのパッケージ管理システムcondaとpythonのパッケージ管理デファクトスタンダードpipはめっちゃ衝突するっぽい
参照:condaとpip:混ぜるな危険 - onoz000’s blog
ので、
anacondaインストール時に非推奨だったパス通す選択肢選ばなかったのでanaconda prompt管理者で開いて
conda install -c conda-forge xonsh
conda install -c conda-forge youtube-dl
choco install streamlink

実稼働時間測りたくて、充電MAXから高パフォーマンス、照度70でブラウザからキズナアイの動画垂れ流しながらインストール作業やネットサーフィnしてたら3.5時間でギブ、まあこんなもんかという印象

追記:アプデの影響かファンぶん周り状態が直ってバッテリー普通に保つようになった、ちゃんと計測してないけど上の文章がネガキャンになってもいけないので一言書いておく
ただ思い作業するとクソ熱くなってラップにトップできなくなる、有志のベンチでも排熱がボトルネックになって下位モデルに負ける場合もある様子
今から買うならそのへん考慮すると吉

xonshがいい感じ

環境:ubuntu 16.04

 

pythonで書かれた代替シェルのxonshがいい感じっぽい
シェルスクリプトpythonの統合する目論見としては他にpysh
https://github.com/yunabe/pysh
があって、でもこちらは最終更新が6年前とかなのでなんか嫌

 

pip install xonsh
でインストール


適当なエディタ開いてシェルスクリプトを書く際、しれっとpythonコードを忍ばせても普通に動いてかなりエモい

 

チュートリアル
https://xon.sh/docs-ahundt-sphinx-readable-theme-pypi/tutorial.html
を参照

 

例えば、
$ ls -a
. .. test.sh url.txt
$ ls,a = 100,1
$ ls -a
99
みたいな感じでやばい

 

スクリプトは行ごとにpythonモードとsubprocessモードで解釈されるっぽい
xonshが変数を見つけられなかった場合subprocessモードで(要はシェルコマンドとして解釈)され、そうでない場合pythonモードで解釈されるらしい
各モードを強制したい場合は以下みたいな感じ

 

・' '
xonshで特別な意味のある記号などを無視する
>>> echo '${'
${
bashのみたいなエスケープシーケンスは無いらしい

 

・$()
シェルコマンドの標準出力をpythonのstr型で返す
>>> $(ls -l)
'total 0 -rw-rw-r-- 1 snail snail 0 Mar 8 15:46 xonsh '

 

・!()
$()は標準出力のみ返したけどさらに多くの情報を返す
CommandPipelineというクラスのインスタンスとして生成されるっぽい たぶん見ればわかる
>>> !(ls nonexistent_directory)
CommandPipeline(stdin=<_io.BytesIO object at 0x7f1948182bf8>, stdout=<_io.BytesIO object at 0x7f1948182af0>, stderr=<_io.BytesIO object at 0x7f19483a6200>, pid=26968, returncode=2, args=['ls', 'nonexistent_directory'], alias=['ls', '--color=auto', '-v'], stdin_redirect=['<stdin>', 'r'], stdout_redirect=[9, 'wb'], stderr_redirect=[11, 'w'], timestamps=[1485235484.5016758, None], executed_cmd=['ls', '--color=auto', '-v', 'nonexistent_directory'], input=None, output=, errors=None)

 

・$と!
で囲むものはuncaptured subprocessesと呼ばれる
xonshをスルーして画面に直接表示される
その返り値は常にNone
他は()の場合とほぼ同じ
>>> x = $[ls -l]
total 0
-rw-rw-r-- 1 snail snail 0 Mar 8 15:46 xonsh
>>> x is None
True

 

・@()
subprocessモードで動き、括弧の中身をpythonコードとして解釈する
結果がなんだろうとstr型に変換されてsubprocess command listに追加されていく

 

・@$()
@([i.strip() for i in $(cmd).split()])
と同じ

 


pythonのfor文の中にそのままシェル文書くみたいなことできてかなり良い
例えば

#! /hoge/fuga/xonsh
urllist = open("url.txt").read().split()
for i in range(len(urllist)):
    youtube-dl --get-title --skip-download @(urllist[i])

みたいに書けてやばいエモい

 

いままで
import subprocess
して
cmd = ["aaa", "uuu"]
subprocess.run(cmd,stdout=untara,hogehoge)
みたいに書いてたのが間抜けに思える

 

注意点としてpythonモードで設定した変数をsubprocessモードで参照するときつい${arg}って書きそうになるけど、pythonモードで宣言しただけではsubprocessモードで参照できない(?)っぽいので@()で囲むことで明示的にアレする必要あり これで30分くらいハマった(かわいい)

 

あと先述したようにsubprocess modeでエスケープシーケンス使えないっぽいので、たとえばシェル文の中で大括弧使いたいときなんか構文エラー出るのに¥[hoge¥]みたいな書き方できない、しかもなぜかシングルクォーテーションでも通らない(why?)

そういうときはpythonモード経由して、つまり@("[hoge]")みたいに書くとなんか通る  多分もう少し賢いやり方あるはず

 


エモい
おわり

conohaでVPS借りたのでとりあえずubuntuでpython3系起動するまで

 

useradd [user]
passwd [user]
gpasswd -a [user] sudo
mkdir /home/[user]
chown [user] /home/[user]
で適当なユーザーを作成

apt update
apt upgrade

ここからpythonをインストールしていく
の前にコンパイラなどのいろいろを入れる

apt install -y make gcc
apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils

デフォでpython2.7が入っていたのでそいつの邪魔にならないようにpyenv経由で任意のバージョンを入れていく
以下はユーザごとの操作
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

echo $SHELL
叩けばわかる通りデフォではbashではなくshを使っているのでログイン時に読み込まれるファイルは~/.profileになる
ここに

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

を追加して
. ~/.profile
で再読み込み

ここでようやくpythonのインストール作業に入る
pyenv install 3.7.3 #そこそこ時間かかる
pyenv global 3.7.3
みたいな感じ

anacondaも利用できるけどパッケージ管理がpipと衝突する可能性があるのでそこはお好みで


おわり

ポアソン分布の覚え方

ポアソン分布を眺めてみる
これは2項分布の試行回数nを無限に飛ばした時の極限として求められる
 \displaystyle \lim_{n \rightarrow ∞}\left(\begin{array}{c}n\\ k\end{array}\right)\left(\frac{λ}{n}\right)^ {k}\left(1-\frac{λ}{n}\right)^ {n-k} = e^ {-λ}\frac{λ^ k}{k!}
詳しい説明は譲るとして、その式はなんだか覚えづらい
二項分布の式が直感的に理解できるのとは対照的に、ポアソン分布の方は一目ではよくわからない形をしている
初見でこいつのゲシュタルトを把握できるやつは変態である

これをなんとか簡単に覚えられないものか
ポアソン分布は確率密度関数なので、その全区間での積分は当然1となる
シグマを使って離散的に和をとると
 \displaystyle \sum_{k=0}^n e^{-λ}\frac{λ^k}{k!}=e^{-λ}\frac{λ^0}{0!}+e^{-λ}\frac{λ^1}{1!}+e^{-λ}\frac{λ^2}{2!}+e^{-λ}\frac{λ^3}{3!}+e^{-λ}\frac{λ^4}{4!}+…+e^{-λ}\frac{λ^n}{n!}=1
 \displaystyle =e^{-λ}+e^{-λ}{λ}+e^{-λ}\frac{λ^2}{2!}+e^{-λ}\frac{λ^3}{3!}+e^{-λ}\frac{λ^4}{4!}+…+e^{-λ}\frac{λ^n}{n!}=1
ところで、天下り的ではあるがここでe^xのマクローリン展開を考えてみる
 \displaystyle e^{x}=1+x+{x^{2} \over 2!}+{x^{3} \over 3!}+{x^{4} \over 4!}+…+{x^{n} \over n!}
そしてあなたは唐突に、ここで両辺をe^xで割ることで左辺の値を1にしてみたい欲求に駆られる
 \displaystyle 1=e^ {-x}+e^ {-x}x+e^ {-x}{x^{2} \over 2!}+e^ {-x}{x^{3} \over 3!}+e^ {-x}{x^{4} \over 4!}+…+e^ {-x}{x^{n} \over n!}
これはなんだか先ほどのポアソン分布の式と似ている
というかxをλに置き換えるとポアソン分布の式そのものではないか
 \displaystyle 1=e^{-λ}+e^{-λ}{λ}+e^{-λ}\frac{λ^2}{2!}+e^{-λ}\frac{λ^3}{3!}+e^{-λ}\frac{λ^4}{4!}+…+e^{-λ}\frac{λ^n}{n!}
 \displaystyle 1=e^ {-x}+e^ {-x}x+e^ {-x}{x^{2} \over 2!}+e^ {-x}{x^{3} \over 3!}+e^ {-x}{x^{4} \over 4!}+…+e^ {-x}{x^{n} \over n!}
というわけで、「ポアソン分布に従う確率変数がn回のうちちょうどk回発生する確率」の覚え方は、「e^λをマクローリン展開したときのk+1番目の項を(全確率を1にするために)e^λで割る」あたりが丁度よいのではないだろうか
まあ感覚的に分かりやすいかと言えば微妙だけど

windows10起動時に(winの機能である)仮想デスクトップを追加した上で特定のソフトウェアを実行したりする的なやつ

oshiete.goo.ne.jp
このリンク先の質問主がやりたいっぽいことをやる
といってもやることはvdeskを使うだけ
このvdeskというのはwinの機能である仮想デスクトップをコマンドラインから使うためのアレである

chocolateyにあるので使用者はcinst vdesk -y でインストールされる
readme見ればわかる通り
vdesk create[:n]
vdesk [on:] [noswitch:{true|false}] [args]
というコマンドが使えるみたい

例えば2枚めの仮想デスクトップでchrome起動したければ
vdesk create:2
vdesk on:2 noswitch:true run:"chrome.lnk"
みたいな感じでいけるとおもう
PC起動時にこれを実行したければスタートアップフォルダに放り込んでおけばおk

余談、俺はalt + tabと共にwin + tabを多様してるからこそこのvdeskがありがたいけど一体winユーザ全体の何%がそもそもこの仮想デスクトップ機能を知っているのだろう…

KZ AS06買うた(イヤホン)

www.amazon.co.jp
これ買うた
直近ではATH-LS50を使っていて、それもまあ悪くないイヤンホホだったが断線したので買い替え
リケーブルすればまだ使えたが単純に新しいのが欲しかったのと、あとLS50が俺の耳に合わなかったのか遮音性がこのタイプにしては微妙で、かつ1時間も付けてると耳が痛くなっていた
LS50の前は名機SE215を使っていて、それを紛失したのでつなぎとしてのLS50であったが、またSE215を買うのもな、と思いながら調べていたら最近の中華は性能いいみたいな話を見たので、思い切って購入
f:id:moppii:20190129232243j:plain
こんなん
装着感は当然人によるが自分にとってはとてもよく、LS50よりは疲れない(が、SE215のほうが軽さはあった)
3BAで低音どうなんよと思っていたがちゃんとなってくれる なりすぎて邪魔ということもない
自分はメタルなんかもよく聴くけどそういう時は再生機側でちょっとだけ低音あげてやるとちょうどいいかも
というか解像度自体はLS50より明らかに良い SE215ともかなりいい勝負だと思う(先も言ったようにSE215は紛失して手元にないので曖昧)
耳に引っ掛けるところが(ぐにゃぐにゃのLS50と違って)適度に形状記憶されてる&本体とケーブルの接続が2ピンなので本体が独立にくるくる回転しない(伝われ)
ので左右の判別がすぐわかる(LS50ではどっちがLでどっちがRか毎回迷っていた)

総合するととても良いので良いと思う(コナミ