書くの忘れたからスマホから書いています!
本とアイナナ。
本を読んだ。
あとはカレー作ったりアイナナ読んだり...
たこ焼きをした。
ホットプレートタイプのものを持ってるけど、火力が足りなくてプレートを直にコンロにかけた。すぐ焼ける。おいしい。
あと部屋の片付け。それと自分のピークタイムの把握。
部屋の片付けは特に苦にしてないけどその代わり散らかるのも苦にしてなくて、移動に気を使うようになったら片付けをすることにしている。
引っ越して2年めなので物は多くなくトータルで1時間程度で全部終わる。
ピークタイムは↓の本を参考にしたもので、
「自分のピークタイムを把握して効率的に仕事を割り当てるべし(意訳)」と書いてあったので実行している。
1時間おきに自分の「集中度」を記録したら、だいたい正規分布みたいな形のグラフが取れた。頂点は14時~16時ごろ。
綺麗な正規分布と組み合わせてみると(X軸が違うから厳密には違うけど)、12時から1, 2時間は理想値に比べ実測値が低くなっている。
これは昼食を食べたあとで集中力が低下しているのでは?と分析。
KHCの集中力はきれいな山なりです。
あと獺祭の焼酎を買って飲んだ。↓の動画で美味しそうだったから。
日本酒(獺祭)の風味が強いかな。
俺は獺祭の香りは大好き!って感じでもないので感想は「面白」だった。
でも美味しい。39度もあるのに日本酒然としてて飲みやすい、というか。
完全に日本酒の味ではなくて、獺祭の酒粕から作ってるんだけど、酒粕特有の風味がある。
この風味と獺祭の風味が合わさって独特の飲み心地になっている。
焼酎は日本酒よりも味の振れ幅が多くて面白いですね。
安いし。酔えるし。
↑これ仲間のタヌキに聞いたので信憑性は高いと思います。人類ってタヌキのなかまらしい
— KHC (@we_can_panic) 2020年7月24日
なんか俺は知らんかったけど、Windowsのスクショって連続で撮れるらしい。
Alt+PrintScreen
で「ピクチャ>スクリーンショット」っていうフォルダの中に画像が自動的に溜まっていくらしい。
みんな知ってた?知らんよね(見下し)。
あとWin+PrintScreen
でいちばん手前のウィンドウだけスクショできるらしい。 すごe。
でも別にWin+Alt+PrintScreen
で、特定のウィンドウだけ連続でパシャる(死語)ってのはできんらしい。フ~ン。。。
2時間くらいかかった。これ書くのは1時間くらい。
Pythonのバージョンは3.7で、ライブラリはconda installで入れた最新のやつです(2020/7/26現在)
""" 1. Alt+PrintScreenで、撮りたいウィンドウをクリップボードにコピー 2. Win+PrintScreenで画面全体を撮る 3. 1.で撮ったスクショを、「スクリーンショット」下に「master.png」という名前で保存 3. あとはWin+PrintScreenでスクショを保存していく 4. このプログラムを動かす。outputというフォルダができてそこに切り抜かれた保存される """ import os, re, time import cv2 import tqdm import numpy as np def main(): print("Start") SS_PATH = "ここにWin+PrintScreenが保存される場所のパスを入れてください。下のように..." # SS_PATH = "C:\\Users\\khc\\OneDrive\\画像\\スクリーンショット\\" SS_output_PATH = SS_PATH + "outputs\\" if not os.path.isdir(SS_output_PATH): os.mkdir(SS_output_PATH) SS_re = re.compile("スクリーンショット \\([0-9]+\\).png") SS_num_re = re.compile("[0-9]+") img_path_list = list(filter(lambda x: SS_re.match(x), os.listdir(SS_PATH))) img_path_list.sort(key=lambda x: int(SS_num_re.search(x).group())) mstr = imread(SS_PATH+"master.png") dcpl = imread(SS_PATH+img_path_list[0]) top, bottom, left, right = find_place(mstr, dcpl) for img_name in img_path_list: img_in = SS_PATH+img_name img_out = SS_output_PATH+img_name trim_img = imread(img_in) imwrite(img_out, trim_img[top: bottom, left: right]) print(len(img_path_list), "images has clipped at", SS_output_PATH) def find_place(mstr, dcpl): h, w = mstr.shape[:2] first_pixel = mstr[0][0].sum() i_cdd, j_cdd = np.where(dcpl.sum(axis=2)==first_pixel) for i,j in zip(i_cdd, j_cdd): if np.all(mstr==dcpl[i: i+h, j: j+w]): print("find!") return i, i+h, j, j+w print("見つけられませんでした。。。") def imread(filename, flags=cv2.IMREAD_COLOR, dtype=np.uint8): try: n = np.fromfile(filename, dtype) img = cv2.imdecode(n, flags) return img except Exception as e: print(e) return None def imwrite(filename, img, params=None): try: ext = os.path.splitext(filename)[1] result, n = cv2.imencode(ext, img, params) if result: with open(filename, mode='w+b') as f: n.tofile(f) return True else: return False except Exception as e: print(e) return False if __name__ == '__main__': main()
スクリーンショットのフォルダから自動保存された画像を持ってきて、同じフォルダに入ってるmaster.pngと一致してる部分をトリミングして保存してる。
なので一番小さい番号の画像の中にあるウィンドウがmaster.pngと完全に一致しないと見つけられなくて終了する。
↑のコメントで書いてる通りにやればたぶん一緒になるはずだけど。。。
撮りたいウィンドウに動画とか入ってると完全一致は難しいと思うから、そのときはmasterを自分で切り出して作ればいいんじゃないかな。(投げやり)
スクリーンショットのフォルダに保存される画像のナンバリングってフォルダを空にしてもリセットされんっぽい。人生みたいだね。
画像のパスに日本語が入ってるとcv2がうまく認識してくれない。
https://qiita.com/SKYS/items/cbde3775e2143cad7455
画像の切り出し方。
https://qiita.com/ikanamazu/items/d752225a0a9834ce0d41
画像ファイルの見つけ方。
https://note.nkmk.me/python-re-match-search-findall-etc/
ありがとうございました!
atom-runner、日本語が出力できない問題が発生してるんだけど直すのが大変なので「ctrl-enterで実行するように設定する」という細かなタスクから片づけていってる
— KHC (@we_can_panic) 2020年7月20日
↑これを独自の方法で直したので紹介します。
process.env.PYTHONIOENCODING = "utf-8";
→ 直らず。
runner: scopes: python: "python"
→ 直らず。
.atom-runner pre{ font-family: meiryo; font-size: 14px; }
→ 直らず。
- this.input = typeof input === 'string' ? [input] : input; + this.input = [input];
やった~~~~~~~~~
以上です。
今動かしたらまた表示がおかしくなってました。
もう知らん。
量子コンピュータのチュートリアル見てたらこんな時間になっちゃった
— KHC (@we_can_panic) 2020年2月24日
量子コンピュータ、xyz軸のうち1方向の状態しか観測できなくて、x軸を観測すると確定していたはずのz軸が不確定な状態になったりしてバグ技みたいで面白い(意訳)
最近量子コンピュータにハマってるので,ここらでアウトプットを計る.
(*10/25追記 内容を補強しました。間違ってることは書いてない...ハズ)
普通のコンピュータではシミュレーションできない動きをする。 (後述の「重ね合わせ」「もつれ」など)
なので、既存の問題を量子の動きに落とし込むことで、コンピュータでは到達できなかった物量・速度の問題を解くことができる(かもしれない)。
簡単にメリットだけ言うと、
「分岐がエグい数になってコンピュータでは計算できないことを量子でシミュレーションできる。」
例を挙げると、SSL通信を解読できる。
SSL通信の仕組みを簡単に説明すると、(ネットで浅く調べただけだから間違ってるかもしれないけど、)以下の流れになる。
1. サーバー側で「A」というデータを使って暗号化する 2. 暗号されたデータと、「X」というデータを、クライアント側に送る 3. 「X」は、クライアント側で持ってるデータを「B」として、「X=A*B」という値になっている 4. クライアント側は、「X/B」を計算して「A」を求め、その値を使ってデータを解読する 5. Xは2048ビットのデータ(600桁くらいの数字らしい)になっていて、それからノーヒントでA, Bを求めるのは現実的に不可能である
この5. の根拠になっているのが「600桁くらいの数字を素因数分解するのには数十年単位で時間がかかる」という法則なんだけど、量子コンピュータならこれを数分単位で解くことができる(かもしれない)。
既に一部で実用化され始めている。:
https://www.google.com/search?q=%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF&tbm=nws
量子の不思議な性質その1.
量子は観測するまでどういう状態なのかわからない.
昔は「観測の際に当たる光とか電磁波のせいでブレが生じる」とか言われてたけど,
そうじゃなくてマジで観測によって結果が変わるらしい.不思議だね.
とは言え状態は完全にランダムという訳ではなくて,85%でこの状態,15%でこの状態,
みたいな確率が決まっている.
この「何%の確率でこれが出てきて,何%の確率でこれが出てくる」という状態が「重ね合わせ」と呼ばれている.
この重ね合わせができるのが量子コンピュータの強みで,例えば100個の量子ビットの重ね合わせ状態を古典コンピュータで再現しようとすると,100ビット*2100通りのメモリが必要になるが,量子コンピュータでは重ね合わせにより100ビットの容量だけで全部の状態を表せる.
ビットの操作だけで考えたら,量子コンピュータは古典コンピュータに比べて2100倍速いことになる.すごい.
量子の不思議な性質その2.
2つの量子をペアリングさせれば,片方を操作することでもう一方の量子の結果も変わるらしい.
この同期の速度は光よりも速くて,例えば日本からブラジルへの通信だと,光だと直線距離でも0.05秒のところ,量子もつれを利用すると0秒で行ける.すごい.
量子コンピュータには大きく2つパターンがあって、それぞれ「イジング型」と「ゲート型」と呼ばれている。
「イジング型」の方は、沢山のもつれた量子を使って、ある条件下の最適解を見つけるものらしい。
交通量の最適化などの方面で使われているとか。
KHCはもう一つの「ゲート型」の方をメインで学んでおり、こちらは「量子ビット」という量子の情報に対して「ゲート」と呼ばれる操作を加え、いろいろなこと(素因数分解を解いたり、「量子コンピュータを使った安全な通信」の実装)を行う。
実際にはこの「いろいろなこと」はまだアルゴリズムの研究段階であり、成果の数自体も少なく、要求される量子コンピュータのスペックも現実的ではない。
ゲートは「ブロッホ球」というのを使って考えるとわかりやすい.
↓のサイトのやつがいいかな?
Try Bloch!
量子ってなんか回転してて,回転の方向が大事らしい.
(回転の方向は右ねじの法則みたいなのをイメージすればいいかな?)
ブロッホ球はその回転の方向を表すやつで,最初は上向きに回転している.
これを真横から見たときの矢印の位置が0か1かの確率を表している.上に行くほど0が出やすくて,下に行くほど1が出やすい.
最初は上向きなので,0が100%の確率で出るようになっている.
図の下の方にある四角いボタンがゲートで,ブロッホ球の矢印に対していろいろな操作ができる.
簡単に説明していくと,
* Xゲート
X軸(手前の水色の軸)を180°回転させる.
最初の状態からこのゲートをかけると下向きになるので,NOT(反転)ゲートとも呼ばれたりする.
* Yゲート
Y軸(右側の赤色の軸)を180°回転させる.
最初の状態からこのゲートをかけても,Xゲートと同じような動きしかしない.
* Zゲート
Z軸(上に向いている黄緑色の軸)を180°回転.
最初の状態からこのゲートをかけても変化がない.(いちおう矢印の上の方が動いてはいるが・・・)
* Hゲート
アダマールゲートというゲート.
綴りはHadamard.フランス語読みなので最初のHは発音しない.
X軸とZ軸を入れ替えるみたいな操作ができる.
具体的には,Y軸を時計回りに90°,Z軸を180°回転させる.
最初の状態からHゲートをかけると,矢印がこっちを指してくる.(怖いね)この状態で観測を行うと,重ね合わせ状態といって,0と1が50%の確率で出てくる状態になる.
* Sゲート
Z軸を反時計回りに90°回転させるゲート.
H→S→S→Hの順番でゲートをかけると,矢印は下側を向く.(面白いね)
* S†ゲート
Sゲートの反対.
Z軸を時計回りに90°回転させる.
* Tゲート
Z軸を反時計回りに45°回転させるゲート.
H→T→Hの順番でゲートをかけると,矢印は斜め方向を向く.
この状態で観測を行うと,0が85%くらい,1が15%くらいの確率で出てくる.面白いね.
* T†ゲート
Tゲートの反対.
Z軸を時計回りに45°回転させる.
実際の操作は90°や45°だけじゃなくて,いろいろな角度で3つの軸をそれぞれ回転させることができる.
PythonでCirq(シルク)とかblueqat(ブルーキャット?)とかのライブラリを使って量子コンピュータの操作を体験できる.いい時代になったものだ・・・(シン)