Docker 0.9.1 on OS X Mavericksを試す
手順とメモ
1. VirtualBoxをインストール
VirtualBox - Downloads から、「VirtualBox X.X.X for OS X hosts」をダウンロード、インストール
2. Homebrewでdockerとboot2dockerをインストール
$ brew update
$ brew install docker boot2docker
3. boot2docker init
sysctl
コマンドを使うから、/usr/sbin
にPATHが通ってないと落ちる。
$DOCKER_HOST
変数を設定する。
$ export PATH=/usr/sbin:$PATH $ export DOCKER_HOST=tcp://localhost:4243 $ boot2docker init [2014-04-00 00:00:00] Creating VM boot2docker-vm Virtual machine 'boot2docker-vm' is created and registered. ... [2014-04-00 00:00:00] Done. [2014-04-00 00:00:00] You can now type boot2docker up and wait for the VM to start. $
4. Docker daemonを起動
boot2docker up
か、boot2docker start
で起動。
デフォルトだと、User:docker
、Password:tcuser
だった。
$ boot2docker up [2014-04-00 00:00:00] Starting boot2docker-vm... [2014-04-00 00:00:00] Started. To connect the docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://localhost:4243 $ boot2docker ssh docker@localhost s password: ## . ## ## ## == ## ## ## ## === /""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| boot2docker: 0.8.0 docker@boot2docker:~$ uname -mnr boot2docker 3.13.3-tinycore64 x86_64 docker@boot2docker:~$ exit $
5. コマンドの実行
base環境を入れて、uname -a
してみる。
$ docker run base uname -a $ docker run base Unable to find image 'base' locally Pulling repository base b750fe79269d: Download complete 27cf78414709: Download complete Linux 4db1b899c036 3.13.3-tinycore64 #1 SMP Wed Mar 26 03:16:13 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $
5. Docker daemonの終了
boot2docker down
か、boot2docker stop
か、boot2docker halt
で終了。
$ boot2docker down [2014-04-00 00:00:00] Shutting down boot2docker-vm... $
6. boot2dockerのアップデート
$ boot2docker down $ boot2docker download $ boot2docker up
Homebrew楽ちんだった
「Differences Between PyQt4 and PyQt5」の抄訳
PyQt使ってみたかったけど、ver.4とver.5で違いが結構あるぽいので Differences Between PyQt4 and PyQt5 — PyQt 5.2.1 Reference Guide を抄訳してみた。
なにか変なところがあったら教えてくだちい。
PyQt4とPyQt5の違い
PyQt5とPyQt4は、互換性がありません(が、PyQt4からPyQt5へのアプリケーションの移植は難しいことではないと言えます)。 このセクションでは、PyQt5とPyQt4の間の主要な違いについて説明します。
サポートするPythonのバージョン
Python2.6より古いバージョンはサポートしません。
廃止予定の機能
PyQt5では、deprecatedになった又はQt v5.0で廃止したAPIについてはサポートしません。 しかし、いくつかのAPIをうっかり含んでしまうかもしれません。 それらはバグなので、見つけ次第直していきます。
複数のAPI
PyQt4では複数バージョンのAPIをサポートしています(例えば、QString, QVariantなど )。 PyQt5ではQVariantを除いて、全てのAPIはv2のみが実装しています。 QVariantの変更と、QPyNullVariantについては、 Support for QVariant — PyQt 5.2.1 Reference Guide を参考にしてください。
古いスタイルのシグナルとスロット
PyQt4での古いスタイルのシグナルとスロットはサポートしません。 そのため、次のメソッドPyQt5では実装していません。
QObject.connect()
QObject.emit()
SIGNAL()
SLOT()
SIGNAL()
とSLOT()
の返り値を引数としてつかうメソッドは、全てサポートしません。
シグナルか、それぞれ呼ばれるメソッドは常に同等なものとして、違いがなくなります。
加えて、次のメソッドは違いが発生します。
disconnect()
は、引数を取らず全てのQObjectインスタンスから切断します。
新しいスタイルのシグナルとスロット
Qtは2つの異なる引数を持つシグナルを実装しています、1つは引数を使うもので、もうひとつは引数を使わないものです。 PyQt4では、好きな方を選んで使うことができました。 しかしながら、シグナルを発するときに、あなたは適切な引数を持つシグナルを使う必要がありました。
PyQt5では、全ての引数が指定されたシグナルのみを使うことができます。 しかし、シグナルを発するときに不要な引数は省略することができます。
PyQt4とは違って、PyQt5ではプロパティでの定義をサポートしており、シグナルとスロットはQObjectのサブクラスではなくなりました。
QtDeclarative、QtScript、QtScriptToolsモジュール
PyQt4のQtDeclarative
、QtScript
、QtScriptTools
モジュールはサポートしません。
PyQt5では、これらはQtQml
とQtQuick
モジュールに置き換えました。
PyQt4と違って、PyQt5ではQMLからPythonオブジェクトの生成をサポートします。
QtGuiモジュール
PyQt4のQtGui
モジュールは、PyQt5ではQtGui
、QtPrintSupport
、QtWidgets
モジュールに分割しました。
QtOpenGLモジュール
PyQt5では、QGLContext
、QGLFormat
、QGLWidget
クラスのみをサポートします。
QtWebkitモジュール
PyQt4のQtWebKit
モジュールは、PyQt5ではQtWebKit
とQtWebKitWidgets
モジュールに分割しました。
QtXmlモジュール
PyQt4のQtXml
モジュールはサポートしません。
QXMLStreamReader
クラスかQXMLStreamWriter
クラスか、Pythonの標準XMLモジュールを使ってください。
pyqtconfigモジュール
PyQt4のpyqtconfig
モジュールはサポートしません。
この The PyQt5 Extension API — PyQt 5.2.1 Reference Guide で、PyQt5でのサードパーティのパッケージ(例:QScintilla)についてを説明しています。
dbus.mainloop.qtモジュール
PyQt4のdbus.mainloop.qt
モジュールは、PyQt5ではdbus.mainloop.pyqt5
になりました。
これは、並べて実行することも許可し、どちらも同じ機能になります。
QDataStream
readUInt8()
、readInt8()
、writeUInt8()
、writeInt8()
メソッドは、全て数値の読み書きとして解釈されます。
PyQt4では、これらは1つの文字について解釈されていました。
QFileDialog
PyQt4のQFileDialog
に属するgetOpenFileNameAndFilter()
、getOpenFileNamesAndFilter()
、getSaveFileNameAndFilter()
メソッドは、PyQt5ではgetOpenFileName()
、getOpenFileNames()
、getSaveFileName()
に改名しました。PyQt4のgetOpenFileName()
、getOpenFileNames()
、getSaveFileName()
はPyQt5ではサポートしません。
QGraphicsItemAnimation
廃止予定だったQGraphicsItemAnimation
クラスは削除しました。
もし、移植したいPyQt4アプリケーションで使用していた場合は、QPropertyAnimation
をかわりに使うことを検討してみてください。
QMatrix
廃止予定だったQMatrix
クラスは削除しました。
もし、移植したいPyQt4アプリケーションで使用していた場合は、QTransform
をかわりに使うことを検討してみてください。
QPyTextObject
PyQt4はQPyTextObject
を複数のQtのクラスからサブクラス化されたPythonクラスを定義することができないことの回避策として使用しています。
PyQt5はQ_DECLARE_INTERFACE
のようにC+ +で宣言されている、インタフェースがあるものであれば、複数のQtのクラスからサブクラスであるPythonのクラスを定義する機能をサポートしています。
したがってQPyTextObject
はPyQt5に実装されていません。
QSet
PyQt4では、QSet
はPython v2ではリストとして、Python v3ではセットとして実装していました。
PyQt5では、常にセットとして実装しています。
pyuic5
pyuic5
は、pyuic4
の--pyqt3-wrapper
フラグをサポートしません。
pyrcc5
pyrcc5
はpyrcc4
の-py2
と-py3
フラグをサポートしません。
pyrcc5
の出力は、Python v2.6以降の全てのバージョンに互換性があるものになります。
Cooperative Multi-inheritance
Releasing the GIL
Object Destruction on Exit
時間無くなっちゃった(・ω<)
SECCON2013 全国大会に参加した
Write-upを書けるほど活躍できなかったのですが感想などを書いてみます。
会場
競技
順位
最後に
「SECCON 2013 東北大会」に参加した
@hktechno さんに誘ってもらって、@x86_64 さんと@KIM_TPDN さんと一緒にチームifconfigでやってました。
http://atnd.org/event/E0019973
種目は、
(1日目)
・セキュリティ・○☓クイズ
・フォレンジック・チャレンジ
・Raspberry PI ROPチャレンジ
・4bitマイコン暗号解読
・セキュリティ・パズル
・正規表現クロスワードパズル
・車載器ハッカソン
(2日目)
・アセンブラかるた対戦
1日目
「4bitマイコン暗号解読」は、大人の科学のアレをごにょごにょしてモールス信号のリスニングをする感じな問題でした。
会場内のそこらじゅうでモールス信号がピピピピ鳴るので気が散ってしまいました。
「セキュリティ・パズル」は、16進数な数独でした。
数独を解いたあとに、いくつかの穴に埋まる数字を並べ替えると答えがでるというものです。
solverが落ちてたので、それを使ったらすぐに出ました。
2日目
まてぃーがておくれた。ガチマルウェアと思われるものを普通に開くという偉業を成し遂げた… #seccon※このあとMacBook Airはネットワークから遮断しOS再インストールしました
— テポドンはプログラミング入門BのTA (@KIM_TPDN) November 9, 2013
∩(´;ヮ;`)∩