windows10にsshサーバを立てる (+起動時にサービス起動する)
参考ページ
手順
OpenSSHサーバをインストール
- 設定 > アプリ > アプリと機能 > オプション機能 > 機能の追加 から OpenSSH サーバー を選択、インストール
sshdの起動
PowerShell を管理者として開き、以下のコマンドを実行
> Start-Service sshd
鍵でのログイン許可
- sshd_config の
# PubkeyAuthentication yes
から # を削除する(コメントアウトを外す)だけ
- 書き込み権限が~の話は下を参照
Windows起動時にsshdサービスを起動する
- "Win + R" で「ファイル名を指定して実行」ウインドウを出し、services.msc を入力・OK
- OpenSSH SSH Serverを選択し、全般タブのスタートアップの種類(E)を自動に設定し適用・OK
Windows10でのWoL設定
使用機器
- Windows10端末
参考ページ
手順
NICの設定
電源の管理タブの「このデバイスで、コンピューターのスタンバイ状態を解除できるようにする(O)」にチェック
詳細タブのプロパティ内にある "Wake on magic packet" の値を Enabled にして OK
電源の設定
暗転している場合は、「現在利用可能ではない設定を変更します」をクリックすることでチェックを外せるようになる
magicパケットを投げる方法
> ipconfig /all
- Ubuntuの場合、
apt install -y wakeonlan
でWoLのコマンドを入れ、
wakeonlan xx:xx:xx:xx:xx:xx
でmagic packetを送信(xx:xx:xx:xx:xx:xxは2で確認したMACアドレス)
詰まったところ
- さすがにノートパソコンはシャットダウン状態からの復帰は難しそう。スリープ状態からなら上記コマンドで復帰可能
Raspberry Pi zero wh での赤外線受信
使用機器等
- Raspberry Pi zero wh (Raspbian GNU/Linux9 (stretch))
- RPi.GPIO
- ブレッドボード
- ジャンパワイヤー ( オス - メス )
- 赤外線モジュール ( OSI5LA5113A )
参考
基本的にはここを見ればできる
が、ここの通りlircの設定、boot/config.txtの設定をしないと/dev/lirc0のデバイスファイルが生成されないので注意
手順
ライブラリ・パッケージインストール
$ sudo apt update $ sudo apt upgrade -y $ sudo apt install lircd
lirc設定ファイルの変更
設定ファイルのdriver, device部分をいじって以下のように変更する
$ cat /etc/lirc/lirc_options.conf [lircd] nodaemon = False driver = default device = /dev/lirc0 output = /var/run/lirc/lircd pidfile = /var/run/lirc/lircd.pid plugindir = /usr/lib/arm-linux-gnueabihf/lirc/plugins permission = 666 allow-simulate = No repeat-max = 600 #effective-user = #listen = [address:]port #connect = host[:port] #loglevel = 6 #uinput = ... #release = ... #logfile = ...
/boot/config.txtの変更
ブート時の設定ファイル(?)に以下を追加する
$ echo "dtoverlay=gpio-ir, gpio_pin=18"
配線
今回は下の写真のように配線した
とりあえず再起動
$ sudo reboot
赤外線の受信
とりあえずlircdを再起動するとのことなので再起動して、mode2コマンドで赤外線を受信する
$ sudo /etc/init.d/lircd restart] $ mode2 -d /dev/lirc0 Using driver default on device /dev/lirc0 Trying device: /dev/lirc0 Using device: /dev/lirc0
ファイルに保存して赤外線LEDで出せばRPiリモコンが作れるかも?
Raspberry Pi 3BでのLチカ
使用機器・ソフト
- Raspberry Pi 3B (Raspbian GNU/Linux 9 (stretch))
- RPi.GPIO
- ブレッドボード
- ジャンパワイヤー(オス - メス)
- LED
- 抵抗(今回は10Ω)
手順
ライブラリインストール
$ sudo apt update $ sudo apt upgrade -y $ sudo apt install python-rpi.gpio
GPIOの確認
以下のコマンドで番号を確認。 今回使用する番号はPhysicalの場所を参照する。 コマンドがない場合はgit cloneしてくる的なことがいろんなところに書いてあるがgitで持ってこれないようなのでなければあきらめる。最悪下がなくてもできる(かも)
$ gpio readall +-----+-----+---------+------+---+---Pi 3B--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | OUT | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3B--+---+------+---------+-----+-----+
配線
上のコマンド出力結果から、6番ピンがGND(グランド)ということがわかる。 今回は8番ピンにプラス側をつなぐことにする。
コード
以下のpythonコードを作成
import RPi.GPIO as GPIO import time //8番ピンを指定 pin=8 //初期セットアップ GPIO.setmode(GPIO.BOARD) GPIO.setup(pin,GPIO.OUT) //8番ピンをON(LEDを光らせる) GPIO.output(pin, True) //1秒待機 time.sleep(1) //8番ピンをOFF(LEDを消す) GPIO.output(pin, False) GPIO.cleanup()
実行
$ python3 led.py
これでLEDが一度光って1秒後に消えるはず
Emacs の設定方法・設定ファイルの管理方法
Emacs の便利そうなコマンド
動機
Emacs実践入門を読みながら個人的に重要そう・便利そうなコマンド・設定をメモしていくだけの備忘録
コマンド
別ファイルの内容をインポート (P34)
C-x C-i <ファイル名> RET
今開いているファイルに指定したファイルの内容をインポートする
文字コード・改行コードの変更・更新(P35)
変更
C-x RET f
更新
C-x RET r
WindowsとLinuxでファイル共有するときに大切そう?
マクロ (P51)
マクロの記録開始
C-x, (
(start-kbd-macro)を実行したことになる
マクロの記録終了
C-x, )
(end-kbd-macro)を実行したことになる
マクロの実行
C-x, e
(call-last-kbd-macro)を実行したことになる
繰り返し実行
C-u 10 C-x e
10回実行する。10の部分で回数指定
マクロの保存
M-x insert-kbd-macro RET insert- RET
->よくわかっていないので、使う時がくれば勉強する
ヘルプを表示する (P55)
M-x info か C-h か <F1>
これが一番大事まであるらしい。
MNIST データセットの分割
概要
MNISTデータセットを同じサイズで任意の数に分割する.
ヘッダがあるので単純に分割できず,ヘッダを書き換えながらデータセットを分割する
環境
スクリプト
詳しいコードの説明は気が向いたら
#!/bin/bash if [ $# -ne 1]; then exit 1 fi mkdir splited-$1 # Extract header information dd if=train-mnist.image of=train-image.header bs=1 count=16 dd if=train-mnist.lable of=train-label.header bs=1 count=8 dd if=test-mnist.image of=test-image.header bs=1 count=16 dd if=test-mnist.label of=test-label.header bs=1 count=8 # Remove header information dd if=train-mnist.image of=train-image.row ibs=1 skip=16 dd if=train-mnist.label of=train-label.row ibs=1 skip=8 dd if=test-mnist.image of=test-image.row ibs=1 skip=16 dd if=test-mnist.label of=test-label.row ibs=1 skip-8 #Split datasets and labels split -n $1 -a 1 --numeric-suffixes=1 train-image.row splited-$1/train-image. split -n $1 -a 1 --numeric-suffixes=1 test-image.row splited-$1/test-image. split -n $1 -a 1 --numeric-suffixes=1 train-label.row splited-$1/train-label. split -n $1 -a 1 --numeric-suffixes=1 test-label.row splited-$1/test-label. # Create a new header ## label header xxd train-label.header | perl -sale 'printf("%s %x %s\n", join(" ", @F[0..3]), hex($F[4])/$N, join(" ", @F[5..9]))' -- -N=$1 | xxd -r >> splited-$1/label_new.header ## image header xxd train-image.header | perl -sale 'printf("%s %x %s\n", join(" ", @F[0..3]), hex($F[4])/$N, join(" ", @F[5..9]))' -- -N=$1 | xxd -r >> splited-$1/image_new.header # Create new dataset for i in `seq 1 $1` do # Create dataset cat splited-$1/label_new.header splited-$1/train-label.$i >> splited-$1/train-label$1.$i cat splited-$1/label_new.header splited-$1/test-label.$i >> splited-$1/test-label$1.$i cat splited-$1/image_new.header splited-$1/train-image.$i >> splited-$1/train-image$1.$i cat splited-$1/image_new.header splited-$1/train-image.$i >> splited-$1/train-image$1.$i # Delete used file rm splited-$1/train-label.$i rm splited-$1/test-label.$i rm splited-$1/train-image.$i rm splited-$1/test-image.$i done # Compress as .gz file for i in `seq 1 $1` do gzip splited-$1/train-image$1.$i gzip splited-$1/train-label$1.$i gzip splited-$1/test-image$1.$i gzip splited-$1/test-label$1.$i done # Delete unnnecessary files rm train-image.row train-label.row train-image.header train-label.header rm test-image.row test-label.row test-image.header test-label.header # Make dataset directory for i in `seq 1 $1` do mkdir splited-$1/dataset$i mv splited-$1/train-image$1.$i.gz splited-$1/dataset$i/train-image.gz mv splited-$1/train-label$1.$i.gz splited-$1/dataset$i/train-label.gz mv splited-$1/test-image$1.$i.gz splited-$1/dataset$i/test-image.gz mv splited-$1/test-label$1.$i.gz splited-$1/dataset$i/ttest-label.gz done