Python2 時間オブジェクトをunixtime(数値)に変換

時間オブジェクトが扱いにくいのでunixtimeに変換したい。

python3では、timestamp()関数を使えるが、python2では少々めんどくさい。

import time
from datetime import datetime, date

now=datetime.now()
unix_time = int(time.mktime(now.timetuple()))

Raspberry Pi VNCサーバーをデフォルトで有効化する

Raspberry PiのVNC Serverをデフォルトで有効化したかったのですが、なぜか下の画面のようにVNCの設定がグレーになって設定できなかった。

続きを読む

[Pythonメモ] 複数のプロセスを同時に実行。プロセス間で変数を共有する方法

やりたいこと
2つのプロセスを同時に実行。プロセスBから、プロセスAの変数をたまーに覗きたい。

具体的には、以下です。

プロセスA:5秒ごとに温度を測定し、リレーのオンオフ。制御プロセス

プロセスB: 10分ごとにデータ採取やグラフの描写。データロギングプロセス

multiprocessingで解決しました。

続きを読む

t検定の種類と使い分けについて勉強した話 [備忘]

t検定について勉強したので書いておく。あくまでも私の理解なので、間違ってたらスミマセンと最初に謝っておくことにする。

そもそも検定は、統計量を何かと比較して「差があると言っていいの?」「それとも誤差なの?」を調べる手法である。厳密ではないのだろうが、こう考えると理解がしやすい。

t検定の他に「カイ二乗検定」などが聞き覚えがあるが、これらは扱う統計量が違うだけで、同じように差が有意かどうかを調べるために行う。

t検定は、「平均値」の検定である。

なお、この検定には「データが正規分布に従っている」という前提がある。

従って、データ数が少ない場合は行わないほうが良い。また、データが多い場合にもヒストグラムを描いて、「単峰」で「対称性」があるかを確認しておいたほうが良い。もし、正規分布に従わないことが明らかな場合は、ノンパラメトリックな別の手法を用いるべきである。

比較したいデータの種類に応じて以下のように分類される。

続きを読む

社会人のためのプチバックパッカーガイド「ラオス」には「なにもない」がある。

ゴールデンウィークや夏休みはどうやって過ごしているだろうか?

ゴロゴロしているだけではもったいない!

今回は私イチオシ、ラオスへの旅を提案したいと思う。

ラオスには、2回目の訪問である。前回は、2015年9月だったので、4年ぶり。前回の旅でラオスがとても好きになったので再度訪れてみた。

最近、村上春樹の旅行記「ラオスにいったい何があるのですか?」が発売されたが、この質問はラオス旅行を勧めると私もよくされる。

私の答えは「なにもない、がある」である。ラオスは、人も穏やかで、治安もよく、時間がゆっくりと流れる場所である。

これから旅をする方の参考になればと思い、書いていこうと思う。

続きを読む

[タイ・バンコク]トゥクトゥク、ついて行ってイイですか?

2019年8月11日 私はいまバンコクに来ている。

本当なら昨日、ラオスに入る予定だったのが、トラブルで予定が一日遅れているためだ。

しかたなくバンコクを1日観光することにしたが、トゥクトゥク絡みでいくつかトラブルがあったのでまとめておく。私のアホさもさらける事になるが、誰かのためになるなら本望だ。

その1 フアランポーン駅にて

朝、バンコクからノーンカーイ(ラオスとの国境の町)への切符を買うためにフアランポーン駅に地下鉄で向かった。

切符を買った後の予定は、「カオサンロード」に行こうと思っていた。特に観たいものがあるわけではなかったが、暇つぶし程度である。

地下鉄を降りたところで、トゥクトゥクのおやじに声をかけられた。無視しようと思ったが、結構しつこい。

おやじ「カオサンまで300バーツだ」

私「高い」

おやじ「それなら船着場まで50バーツで行ってやるから、そこから船で行ったらどうだ」

なるほど。フアランポーンからのルートを特に決めていなかったのでそれでもいいかと思った。また、以前バンコク訪問した時にチャオプラヤ川の船バスに乗った経験があるので、もう一度乗ってみたいという気持ちになり了承した。確か金額も安かったはずだ。

おやじ「駅で切符を買った後、ここへ戻ってこい」

続きを読む

python3.5を3.7にアップデート中にハマったメモ[Raspberry Pi]

私のRaspberry piには、python3.5が入っていましたが、version 3.6以降で対応している機能を使いたいと思いpython 3.7にアップデートしました。

ソースをダウンロードして、色々やった後に(色々は他のサイトを参照してください)

sodo make install

とやったところで下記のエラーが出ました。

ModuleNotFoundError: No module named '_ctypes'

どうやら、libffi-devが入ってないと出るようです。

sudo apt install libffi-dev

これでもう一度試してみます。

Raspberry Pi Zeroをモニター、マウスなしで設定する方法

クラウドファンディングに向けて、昨日からRaspberry Pi側の設定を別のPCからできるように簡単なWebアプリを作っています。

ここで問題なのは、購入してくれた方がモニターなしでどうやってWiFiに接続し、どうやってRaspberry Piに割り当てられたIPアドレスを知るかというところです。

モニターなしでWiFiに接続・SSHの設定

WiFiには、OSを焼いたSDカードにWiFiのSSIDとパスワードを書き込めば接続できるようです。

SSHもSDカードに設定を書き込めば有効にできるみたいですね。

情報が多くあるので、下記のリンクなどを参照してください。

https://www.penpale.jp/blog/raspberry_pi_zero_w_setup_without_monitor.html

Raspberry Piに接続する方法

さて、上記の方法でWiFiに接続できたとします。
次に問題になるのが、SSHで接続するためにRaspberry Piに割り当てられたIPアドレスを知ることです。

上記のURLでは、ルーターの設定画面でIPアドレスを特定して接続しています。しかし、この方法だと毎回IPアドレスを調べないといけないし、IPアドレスを固定するにしても少しの知識が必要です。このように一般化できない部分があると、商品化する上での課題になりますね。

ところが、色々と調べていると、下記のコマンドで接続している記事を見かけました。LAN内にDNSサーバーがないのに、ホスト名で接続しています。(?)と思いましたが、最近はLAN内にDNSサーバーなくても「Bonjour」という機能で「ホスト名.local」と打てばLAN内の機器に接続できるようです。

ssh pi@raspberrypi.local

「Bonjour」は、Apple製品の機能なのでMacには標準で入っているようですね。Windowsの場合もiTunesをインストールすれば、この機能を使用できるようになります。

また、iTunesをインストールしなくても、Windows10には同等の機能が標準化されているそうです。この場合、Windowsファイヤウォールの設定が必要とのことです。

設定は次のように行います。

1. コントロールパネルから「Windowsファイアウォール」を開く
2. ウインドウ左側の「詳細設定」をクリックする
3. ウインドウ左側の「受信の規則」を右クリックして「新しい規則」を選択する
4. 現れた画面で「ポート」を選択し「次へ」ボタンをクリックする
5. 「UDP」を選択し、「特定のローカルポート」欄に「5353」と入力して「次へ」ボタンをクリックする
6. 「接続を許可する」を選択し、「次へ」ボタンをクリックする
7. 「この規則はいつ適用しますか」という質問は、すべてをチェックして「次へ」ボタンをクリックする
8. 名前欄に適当な文字列(ex. Bonjour)を入力し、「完了」ボタンをクリックする

https://news.mynavi.jp/article/applelifehack-60/

python仮想環境の使い方 [venv]

pythonでプログラムを作っていると、インストールするパッケージがどんどん増えて、どのプログラムにどのパッケージが必要なのかわからなくなってきます。

そうなると、プロジェクトごとにまっさらな環境を用意したいと思いますよね。これを実現できるのが仮想環境です。

仮想環境をvenvで作ってみる

python 3.3以降では、venvという仮想環境を構築するツールが標準で付いているようなので、新しく何かをインストール必要はありません。

python3のインストール方法はこちらの記事に書いてあります。

さっそく、venvを使ってみる。

まずは、ターミナルからプロジェクトのフォルダに移動して、

cd (フォルダのパス)

このプロジェクト専用の仮想環境を作成します。

python3 -m venv (作成する仮想環境の名前)

仮想環境で作業する

仮想環境の作成ができたら、これを有効化することで仮想環境内で作業することができます。

source (仮想環境の名前)/bin/activate

仮想環境にパッケージをインストールしたい時には、仮想環境を有効にした状態で通常と同じようにpipコマンドでOK。

仮想環境から抜けたい時には、以下のようにします。

deactivate

Python3 インストール[Mac]

python2がインストールされているのだが、なぜかpipが通らない。この際だからpython3をインストールし、デフォルトとした。

バージョンの確認

python --version

わたしの環境では、python 2.7.1でした。

Homebrewの再インストール

数年前にhomebrewをインストールしていた(はず)なので、これを使おうとしたが、うまくいかず。homebrewから再インストールした。

homebrewのアンインストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

homebrewのインストール

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

python3のインストール

現在のhomebrewでは、デフォルトがpython3になっているようです。

python3のインストール

brew install python

インストールの確認

python3 --version

これでバージョンが表示されればOK

pathの設定

python3のpathを通して、python3をデフォルトにします。

エディタで.bash_profileを開きます。

vim ~/.bash_profile

以下の行を追加

alias python="python3"

これでターミナルを再起動して、もう一度バージョンを確認してみてください。python3になっているはずです。

pipも通るようになった。

おまけ(vimのコマンド)

vimのコマンドを忘れていたので書いておきます。

:q 終了
:q! 強制終了
i 挿入モード
o 行を追加して挿入モード
:w 上書き保存

pythonのコードを書いていくとモジュールがどんどん増えていくので仮想環境にしようとしようと思っています。そのうち。