done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

Windows 10 anniversary update + VirtualboxでBSODを回避する方法

TL;DR Hyper-Vを有効にしてる方は,cmd(管理者権限付き)で以下のコマンドを打って再起動

bcdedit /set hypervisorlaunchtype off

要はHyper-VVirtualboxの相性が悪いんでしょうかね.


Bash on Ubuntu on Windowsが来てうっひょーとなりながらアップデートしてBash動かしてapt-getしてうっひょーとなっていたのもつかの間,

Vagrant upしようとしたらBSODになって再起動しやがることを繰り返し始めました.

最初は最近アップデートしたVirutalboxがいけないのかなーとか思って,昔のバージョンに戻したりしても全部ダメ.

辛い辛いと思いながらググってたら以下のページを発見

virtualbox.org • View topic - Windows 10 Anniversary Update Broke VirtualBox?

皆さん同じようなことで困っていた様子.つまりはHyper-Vを無効にしろとのこと

そういえば最近bcdedit /set hypervisorlaunchtype autoとかやってうっひょーってなってたっけなと思って冒頭のコマンド打って再起動したら治りました.

しかしここで重要なのは,筆者が使っているWindows 10はHomeエディションで,そもそもHyper-Vなぞ機能として使えないことです.

(じゃあなんでbcdedit /set hypervisorlaunchtype autoなんて打ったんだよって話ですが,打つまでProでないとHyper-V使えないと知らなかった情弱でした)

使えない機能をオンにしたらBSODになったという話でした.ProにしてHyper-V有効にしてDocker for Windows使いたい

bash -c オプションの細かい話

とある案件でbash -cめっちゃ使いてえな・・・となり,いろいろ見ていたんですが,なんか思っていた挙動と違っていたのでメモ

bash -c echo testtestが出力されると思っていました.ところが・・・

$ bash -c test echo
(何も表示されない)

どうやら"などで囲まないと行けないらしい

$ bash -c "echo test"
test

man bash-cのセクション読んでもよくわからない・・・解釈力が低すぎる・・・

msys2のexeが変わっていた

またもやmsys2絡みのお話

本日(2016-06-04 09:09 JST)にpacman -Syuして再起動しようとしたら一瞬プロンプト画面が出るんですが消えて何も出ない

以前の話でプロンプト消えるのはそれかなーと,以前の設定に戻してみだんですが,コマンドプロンプト画面が出るだけ

最終的に,C:\msys64\msys2_shell.batがなくなっていて,C:\msys64\msys2.exeを直接ダブルクリックすればいけることに気づきました.もしかしたらオフィシャルとかで書いてあったのかもですね(よく調べてない)

msys2のminttyを起動した時にcmd.exeが同時に立ち上がる問題への対処

個人的に一瞬困ったんで対処

pacman -Syuして,ターミナルを立ち上げようとしたときにcmd.exeが同時に立ち上がるという問題が起こりました.

実害はないのですが,普通に邪魔なのでいろいろ試した結果,いつも起動しているショートカットのプロパティを以下のように 弄ることでcmd.exeの窓が消えるようになりました.

前: C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\msys2_shell.bat

後: C:\Windows\System32\cmd.exe /A /Q /C C:\msys64\msys2_shell.bat

取り敢えず動きますが,もしかしたら何か副作用ががあるかも知れません. 取り急ぎ.

備忘録として自分にメールを送る

いろんなtodoアプリを試して、最終的にたどり着いたのがこれ

備忘録でもメモでもtodoでも、とにかくなんでもいいから自分宛にメールを送る。終わったらアーカイブ。

後から検索できるし、やるべきことが未読のメールとして残る。何よりいいのが、メールは自然と毎日見る習慣があるから、後から思い返しやすい。

高度に使いたければフィルタリングとかしてフォルダ分けとかしてもいいけど、取り敢えず自分は細かいこと気にせずフリーフォーマットで書くようにしてる。

しばらくはこれでいきたい。

Stack OverflowのAPIをPythonから使う

自分用メモ。Pythonは3.5で、Anacondaでインストールしたもの。

最初は標準ライブラリのurllibだけでなんとかしようと思ったんですが、オフィシャル読みに行ったらいきなりrequests使えって書いてあったし、anacondaには標準でrequests入ってる?みたいなので、素直にそうしました。(ただ、無意識に自分でpipなり使ってインストールしていたのかも知れません。)

requestsはHTTPプロトコル扱うのにとても便利なライブラリらしいです。確かにサンプル触った感じとても良さそう。

Stack Overflowについてはもはや説明不要ですね。Stack Exchangeという会社が運営しているそうですが、よくわからん。

APIのドキュメントはここ読めば良い感じ。

今回は取り敢えず、Apache Hadoopにタグ付けされている質問をAPIで取ってきます。

In [1]: import requests

In [2]: url = "https://api.stackexchange.com/2.2/"

In [3]: r = requests.get(url + "questions?tagged=hadoop&site=stackoverflow")

In [4]: r.status_code
Out[4]: 200

In [5]: j = r.json()

In [6]: for k in j:
   ...:     print(k)
   ...:
has_more
items
quota_max
quota_remaining

取れてますね。これだけできれば後はなんとでもなりそう。便利