WSL2 のインストールではまったこと
はじめに
WSL2 のインストールではまったのでメモします。
インストール作業は基本的にはMicrosoftの公式ページに従って進めます。
環境
- windows10 home
- インストール前はWSL環境なし。
- ubuntu18.04 をインストールする。
キモ
無 --> WSL1 --> WSL2 の順序
- まっさら状態からいきなりWSL2のインストールはできない。
- WSL1 をインストールしてからWSL2に変更する。
- そのコマンド
wsl --set-version Ubuntu-18.04 2
は通常モードのPowerShellにて実行する。
そのページには管理者モードのPowerShellで実行せよ、と書かれているのだが、うまく行かなかった。
PowerShellの管理者モードと通常ユーサーモードの使い分け
- 管理者モードのPowerShellで実行要求されていることは、管理者モードで行う必要あり。
- wslコマンド
wsl -l -v
は通常ユーザーモードのPowerShell で実行する。 - wslコマンドを管理者モードのPowerShellで実行しても何も帰ってこない。
- だからWSL1 --> WSL2 の切り替えも通常モードのPowerShellにて実行する。
関連リンク
その他
- 私はWSL1とWSL2がどのような構造・組み合わせになっているのかはよくわかっていません。
- 各人のマシン設定状況に応じてインストールを進められるようなフローチャート形式のインストールガイダンスの作成をお願いしたい。
psycopg2でpostgresSQLにデータ登録
以下の書き方でデータ登録ができました。
#!/usr/bin/env python3 import psycopg2 # assuming # 1. a postgres service is already active. # 2. there's a database in postgres, named 'record', belonging to 'user'. # there's a table named 'name' in it, which has 2 types of data : # (id SMALLINT PRIMARY KEY, name VARCHAR(100) NOT NULL) def get_connection(): return psycopg2.connect( host = 'localhost', user = 'user', password = 'password', port = 5432, database = 'record' ) def main(): raw_data = ( (1, 'Maeda'), (2, 'Yamada'), (3, 'Fujiwara'), (4, 'Takeda'), (5, 'Kato') ) with get_connection() as conn: with conn.cursor() as cur: for each_data in raw_data: cur.execute('INSERT INTO \ name(id, name) VALUES (%s, %s);', [str(k) for k in each_data]) conn.commit() if __name__ == '__main__': main()
もしデータが1個の場合は以下のように記述する。
cur.execute('INSERT INTO name(id, name) VALUES (%s, %s);', ('1', 'Maeda',))
もしくは
cur.execute('INSERT INTO name(id, name) VALUES (%s, %s);', ['1', 'Maeda'])
とします。
ポイント
- VALUES に複数個のデータを渡したいときは、その数の分だけ %sをならべる。
- VALUES にデータを渡すときには文字列型にする。
- connection, cursor ともwith構文で書くとcloseは記述不要。
その他
- ユーザー名・パスワードを直書きしているのは、限られた人しか コードを読まない、という前提です。
環境
- postgres 11
- python3.7.3
- machine: RaspberryPi 3B / buster lite
nodeのインストール(nコマンド使用)
備忘録です。
環境
- OS: GalliumOS / bash
- マシン: Acer Chromebook CB3-431
方法1
1.npmのインストール
$ cd ~ $ sudo apt install npm
2.nコマンドのインストール
$ sudo npm install n -g
3.LTSバージョンの検索
$ sudo n lts // installing : node-v12.17.0 (2020.05.27現在)
4.nコマンドにてバージョン選択
$ sudo n ls // node/12.17.0 $ sudo n // バージョン選択する画面になるので、選択してenter // installed : v12.17.0 ( with npm 6.14.4)
5.nodeバージョンの確認
$ node --version // v12.17.0
6.バージョン削除などは参考サイトを参照。
npmのアップデート2
$ sudo npm update -g
その他
- バージョン管理システムにはnvm, nodebrewなどもあるようですが、私はnコマンドを使いました。
スマホとM5stickCを使って外出先から家のエアコンをリモコン起動する#1
環境・目標
準備物
- M5stickC
- M5StackIRユニット(GROVE端子使用)1
ENV HAT(今は不要。後に部屋の温度もモニターできるようにする計画)- パソコン(win10home)
- arduinoIDE(ver1.8.12)
- Blynk アプリ
方法
M5stickCのセットアップ
arduinoIDEを使用します。
以下写真のような接続構成になっています。
IR UNITはGROVE部に接続。
現リモコンの赤外線信号の解析
IRremoteESP8266モジュールをインストール。その中にあるのIRrecvDumpV2(スケッチ例)を使用。
受光モジュールのGPIO端子番号を33に変更(GROVEコネクタのINPUT端子はM5stickCの場合no.33です)。
受信したIR信号の解析にトライしましたが、結局断念。2 リモコン学習時の受信したRAWデータをそのまま送信する方法にする。
スマホの赤外線信号の解析
スマホ(Huawei製)にスマートリモコンというアプリがあり、それが出す信号を学習してM5StickCから出すことにした。
どうやら東芝エアコン用には複数のパターンがあるらしく、アプリ設定中に1回目に出てきたパターンではウチのエアコンは反応せず、2度目のパターンで反応してくれました。そのパターンをIRrecvDumpV2で再びRAWデータを取得、そのRAWデータをm5stickCから送信すると、ようやくウチのエアコンはONもOFFも反応してくれました。(ただしm5stickCの信号による冷房起動で涼しい風が出ることは未確認)
Blynkのセットアップ
スマホから家にあるM5StickCの操作にはBlynkアプリを使用。アプリのインストールとユーザー登録を完了させる。
今回はBLEではなくwifiによる接続。
とりあえずボタン1個だけ準備し(V0)、それをリモコンの冷房起動(ON)さえできればよしとする。
ユーザー登録時にメールで送付されてくるキー(Auth Token)を控えておく。
こちらのサイトも参考にさせていただいた。
ArduinoIDEにて設定
ソースコードはこちら。
ArduinoIDE ver.1.8.12使用。
ライブラリはBlynkをインストールしておく。
10行目にBlynkから送付されてきたAuth Tokenを記入。
11~12行目は家のwifiのSSIDとパスワード情報を記入。
リモコン起動時のRAW信号はac_power_on に保存。
動作確認
スマホのwifiをOFFした状態で、Blynkのボタン操作によってエアコンが起動できた。
ただしIR UNITの反応はエアコンから2mくらいまでが限界。それより長くするためにはIrLedの電流を増やす必要あり。
次へのステップ
- スマホからの操作で、HATセンサを使って家の温度・湿度などの情報をスマホに表示する。
- LINEのbotへのメッセージにて家のエアコン の操作と、温度等の情報を表示する。
- エアコンへのコマンド受付音をM5StickCで判別して、エアコン起動・失敗確認をして結果をスマホに表示する。
補足
-
GROVEのIR-UNITを準備した理由: m5stickC内蔵のIRトランスミッタはHAT装着時に隠れてしまうこと、現在のリモコン信号の解析のために受信モジュールが必要であったため。↩
-
シリアルモニターで簡単に信号は拾えましたが、信号体系はUNKNOWNと表示。冷房起動(ON)側はコードやコード長は安定していましたが、停止(OFF)側はビット長やコードもリモコンのボタンを押すたびに変わるという状況であり、NECフォーマットではないと思われる。またAEHAフォーマットにも合わないところがあり、どういうフォーマットになっているのか不明。冷房起動(ON)側はRAWデータの直送信でONは確認できましたが、停止(OFF)側は操作できず。RAW信号の送信にはこのサイトのスケッチをほぼそのまま使用、ただし数点変更必要。(1)送信LEDの端子番号: kIrLed: 9 –> 32 (2)ヘッダファイル変更 <IRremote.h> –> <IRremoteESP8266.h> (3)ヘッダファイル追加 <IRsend.h> ( (2),(3)はコンパイルエラー ‘SEND_PIN’ was not declared in this scope の対策。
ライブラリ中のIRremote.hの最後の部分に"#elif defined(SEND_PIN)“を追加も実施。参考 )(4)RAWデータの変数宣言 unsinged int –> uint16_t (これはコンパイルエラーno matching function for call to ‘IRsend::sendRaw の対策。参考 )↩
udemy でのコース購入でクーポンを利用してgoogle playで支払う方法
備忘録です。 恐らくこの方法でうまくいくと思いますが、万が一うまく行かなくてもご容赦ください。
条件
やり方
- twitter上でクーポンを表示させる。以下~3. はtwitterアプリ上での作業。
- クーポンが表示されている箇所のすぐ上の入力枠にクーポンコードを手で入力する。(面倒ですが)
- "カートに入れる"をクリック。( "今すぐ購入"をクリックしない)
- Androidスマホ上でudemyアプリを立ち上げる。以下~7. はudemyアプリ上での作業。
- カートを開いて、支払いに移動。
- "google playにて支払い"を選択し、支払いを行う。
- udemyアプリのマイコース内に購入したアプリが入っていることを確認。
- 最初のtwitterの画面をそのまま閉じる。
注意点
- udemyの情報(2020.04.24現在)では「モバイルアプリでの購入にはudemyクーポンの適用ができない。クーポン適用するならudemyのwebサイト から行うように」とのこと。udemyアプリでの購入ではクーポンの入力箇所が無いし、udemyのwebサイトでは、google playでの支払いできない(支払い方法の選択肢はクレジットカードかpaypal)。
以上です。