「12歳が書いた量子力学の教科書」の適当まとめ
概要
後で見返して、こんな感じだったなーと思い返す用のまとめ。
本
- 作者: 近藤龍一
- 出版社/メーカー: ベレ出版
- 発売日: 2017/07/01
- メディア: 単行本
- この商品を含むブログを見る
適当まとめ(見返し用)
- 量子力学とは何か
- 万物の根源
- 歴史的な流れ(古代〜)
- 単位系の話
- 前期量子論
数学的定式化
内在的矛盾と解釈問題
量子力学の先へ
近未来応用への道
感想
Pythonで代数学をやる
ライブラリ
ライブラリ | Version | 説明 |
---|---|---|
Sympy | 1.1.1 | 代数計算 |
NetworkX | 2.0 | グラフ理論 |
概要
PythonでMaximaやMathematicaのような代数計算ができるライブラリであるSympyとグラフ理論用のライブラリであるNetworkXを使ってみたかった。
そのうちmatplotlibと連携してグラフとか出力してみたい。
導入
- pipでインストールできる
はじめに
- Sympyは公式のチュートリアルをやってみると何ができるのかなんとなくわかる
実践
- 数検の過去問を説いてみる
Tips
- 絶対値を含む方程式を解く
- https://gist.github.com/onionmk2/d424e83f4fda6eaf07f22312ad2dd5b4
- symbolsの定義時にreal=Trueをつける
- 絶対値はabs()で良い
- 解の範囲
- symbolsでの定義次に、positive=Trueをつけると、solve時に正整数の範囲で算出してくれる
- 連立方程式
- solveにリストで渡せば良い
- 変数もリストで渡す
- N進法
参考
- Sympy
- NetworkX
TODO
- NetworkXを触っていないので後日なんか作る
Tidalに入門したかった
概要
- プログラミングで音を奏でられる&LiveCodingができるということで、Tidalをインストールしようとしたがダメだったのでメモしておく
環境
Softwares | Version |
---|---|
Basix(OS) | 3.0 |
Stack | 1.3.2 |
SuperCollider | 3.6.2 |
インストール
- Tidal自体はHaskellらしいのでStackを使ってインストールする
- Tidalの元ネタというか内部的にSuperColliderという言語を利用しているので、それもインストール
ダメだった点
- SuperDirtという音楽セット?をインストールしようとして、Quarkが無い旨のエラーが出て失敗する
- (*) include("SuperDirt")をSuperColliderIDE上で打ち込むと失敗する
- 2017/11/19日現在、Linuxにおいて、SuperColliderのバージョンは3.6までしか提供していない
- https://launchpad.net/~supercollider/+archive/ubuntu/ppa]
- 2014年以降止まっているのか?
- Quark関連のbugfixがされているのが,3.7以降
- 上記の理由により、apt-get上でのインストールはダメくさい
まとめ
- これ以上はめんどくさいので、とりあえず保留
- 後日再挑戦する
Kivy備忘
Kivy使い方メモ
概要
環境
App | Version |
---|---|
Python | 3.5.2 |
hylang | 0.13.0 |
Install
- 参照先と同様にインストールを行う
- http://kuroneko0208.hatenablog.com/entry/2014/02/04/210343
- (注意) githubからkivyをDLすること
作成メモ
デフォルトで読み込まれるkvファイル
- Appを継承したクラスの名称でデフォルトの名前が決まる
- クラス名からApp部分を取り除いた部分を小文字にしてファイル名にする
- MainApp -> main.kv
- https://pyky.github.io/kivy-doc-ja/guide/lang.html
Properties
- Observer patternに該当する
- kvファイルとのやり取りとか、メモリ管理とか色々やってくれるらしい
- on_
で値変更時のイベントが飛んでくるようになるらしい
KV File
- 基本的に木構造な感じで作成していく
<LoginScreen>: # Class Name GridLayout: # Layout to the parent rows: # Property of a layout
(defclass Main [App] ;; build()の戻り値がメインのルートになる (defn build [self] (setv (. self root) (apply Button {:text "BTN"})) ;; Buttonがルートになる (. self root)))
参考プログラム
Pong Game Tutorial
- https://kivy.org/docs/tutorials/pong.html
- とりあえず作ってみたが、サイズを変えたりするとNoneで落ちたりする
- 動作が安定しないのが謎
Kivyでテトリス
- https://github.com/mmueller/tetrivy
- PC上での操作性はもっと改良する必要がある気がする
- マネして作ってみてイベント操作性とか改良してみると結構勉強になる
Tips
キーボード入力のやり方 (Windowクラス利用)
- 上記のPongGameでやった方法を利用する
- https://stackoverflow.com/questions/17280341/how-do-you-check-for-keyboard-events-with-kivy
- https://github.com/kivy/kivy/blob/master/examples/widgets/keyboardlistener.py
キーボード入力のやり方 (FocusBehaviorクラス利用)
- mixin方式で、継承するクラスに追加する
- keyboard_on_key_down()でキー押下時のイベントが取得できる
- メンバ変数のfocusがTrueにならないとイベントが取得できないので注意
- focusがあたって無いとイベントが飛んでこないので、単純にキーイベントを取るだけだと使いづらい
- https://kivy.org/docs/api-kivy.uix.behaviors.html?highlight=behavior#module-kivy.uix.behaviors
Errors
"__no_builder"的なやつ
- https://www.cocept.io/blog/development/kivy-unexpected-keyboard-no-builder/
- superの呼び出し時にkwargsを渡さないと発生するらしい
履歴
Date | Notice |
---|---|
2017/11/12 | 初回作成 |
LxPupインストール
概要
家のゴミPC(EeePC初期型:容量4GB)にPuppyLinuxのLXDE版をインストールした際の話
インストール
なぜLxPupなのか?
容量的に通常のLinuxだと明らかに足らない。軽いと思っていたBasixですら4GBが必要で、上記PCの表記上は容量が足りている様に見えるが、システム領域があるので実質4GB未満しか使えない。
PuppyLinuxは200MB未満でインストール可能なので、上記PCでも余裕でインストール可能。(LxPupは300MBぐらい)
派生のLxPupにした理由は、PuppyLinuxのデスクトップがゴチャゴチャしているのと、アイコンのデザインが好きに慣れないから。
ダウンロード
ダウンロードはリンクより可能。今回は16.08.2のisoを落とした。
設定
- メニュー → セットアップ → Puppyユニバーサルインストーラを選択
- SDカード領域を選択する
- 領域を適当に初期化する。(bootの設定を入れる様にする)
- インストール時にファイルの指定を迫られるので以下のファイルを指定
- /initrd/mnt/tmpfs/puppy_lxxenial_XX.XX.sfs
- 以下の4ファイルをUSBからコピーしてインストール先に突っ込む(今回は/mnt/sda1)
- initrd.gz
- vmlinuz
- puppy_lxpup_XX.XX.sfs
- zdrv_lxpup_XX.XX.sfs
- メニュー → システム → Grub4Dosブートローダの設定を起動する
- 上記ファイルを入れておくと場所(/mnt/sda1)を認識してくれる筈
- lang_pack_ja-2.1.sfsをリンクから落としてタブルクリックでインストール
- 再起動
アプリケーション等
その他
- ユーザ領域をどのぐらいのサイズにするか?
- 2Gにすると起動が遅くなったので、1Gぐらいがいいのか?
- PETgetマネージャでインストールできないものが結構ある(vimがダメだった)
- 本体の電源で切ると、次回起動時に立ち上がらない事がある(EeePC側の問題か?)
- 起動が不安定
まとめ
良い子のみんなはマネしないで、もっといい中古のPCを買おう。
参考
FSharp導入編
概要
F#をちょいちょい弄っているので、オボエガキ兼簡易まとめ。
Visual Studio 2010以降はデフォで入っており、スクリプト形式で実行できるので、Windowsの場合だとバッチファイルの代りになるのがいい。
インストール
Linux
環境としては、monoとfsharpが入っていればいいみたい
- http://qiita.com/takanemu/items/be47fbea4c1483776c8f
- http://qiita.com/c0hama/items/aab918126ab0550fc476
Windows
Visual Studioをインストールすると多分自動的に入ってくる
スクリプト実行
Linux
取り敢えず、HelloWorldを出力させてみる。以下の内容でファイルを作成する。
// ファイル名 : hello_world.fsx
printfs "Hello, World"
コマンドで、以下を実行する。
fsharpi --exec hello_world.fsx
Windows
バッチファイルを作成して実行させるので、以下の内容でバッチファイルを作る。
因みにfsi.exeのパスは環境によっては違う場所に入っている可能性があるので注意
REM ファイル名 : run_fsharp.bat @echo off SET BIN_PATH="C:\Program Files (x86)\Microsoft SDKs\F#\4.0\Framework\v4.0\fsi.exe" %BIN_PATH% --exec %1
上の内容で、hello_world.fsxを作成し、以下のコマンドで実行する。
REM run_fsharp.batが存在するフォルダに移動する REM run_fsharp.bat と hello_world.fsx は同じフォルダに入れておく run_fsharp.bat hello_world.fsx
後記
Windowsのバッチファイルでちょっと複雑な処理をするようなスクリプトを書こうとすると、配列とかループとかがクソ面倒で詰む。F#も文法が手続き型言語から多少離れているので若干書きづらいが、慣れればそれなりに書けるので選択肢としては有りだと思う。
また、F#の他に開発環境にはJRE(Java Runtime Engine)が入っている事が多いので、clojureも候補としては有り。但し、LISPの方言特有の括弧地獄に悩まされる事にはなるが。
Linuxの自動実行
自動起動設定
概要
Ubuntuの起動時に自動でプログラムを実行したいので、設定ファイルの直接編集で、どうやったらいいのか調べた。
環境
OS | バージョン | 備考 |
---|---|---|
Basix | 12.04 | Ubuntu派生 |
設定
自動起動時の設定は、各段階に於いて設定ができる。
他にも色々あるとは思うが、今回はOS起動時、ログイン時、シェル起動時の3つ。
OS起動時
OS起動時には、rc.local ファイルが実行される。このファイルは2つ存在して以下の順で呼ばれる。
正確には、init.d直下のrc.localが、etc直下のrc.localを呼んでいる。
- /etc/init.d/rc.loocal
- /etc/rc.local
また、etc直下のrc.localは、/etc/rc.local.d/ 直下のファイル群を呼んでいる。
よって、結論としては、単体のスクリプトを/etc/rc.local.d/ の直下におけば良い。
ログイン時
ログイン時には、/etc/profile ファイルが呼ばれる。このprofileファイル内で、/etc/profile.d/ 直下のファイル群を呼んでいる。
よって、結論としては、単体のスクリプトを/etc/profile.d/ 直下におけば良い。
シェル起動時
シェル起動時には、ユーザのホーム直下(~/)の.bashrcファイルが呼ばれる。
このファイルに記述しておけば、シェルの起動時に毎回実行される。毎回実行されるので、2回実行するとまずいコマンドとかは、ここには記述しないようにしよう。
予定
USBが挿入されたタイミングで設定が適用される様にしたいので、そこら辺を調査する予定。