第六回 RaspberryPiでプリントサーバーを構築してiPadから書類を印刷する

CUPSとプリンターをインストールしてpiユーザをプリンタ管理者に追加。

sudo apt install cups
sudo apt install printer-driver-all
sudo gpasswd -a pi lpadmin

このままではRaspberryPiからしか管理画面にアクセスできないので、管理画面をネットワーク内の外部から接続できるようにします。

sudo vi /etc/cups/cupsd.conf

設定ファイルを開き下記のようにして外側から接続できるようにホストネームを変更します。

# Only listen for connections from the local machine.
# Listen localhost:631
Listen raspberrypi.local:631

そしてデフォルトではアクセス拒否が設定されているので

Order allow,deny

コメントアウトして外部から接続できるようにしてあげます。社内ネットワークとかだったらダメだけど自宅用とかだったら自分しかアクセスしないので大丈夫かと。

# Order allow,deny

最後に設定を反映させるためにCUPSを再起動します。

sudo service cups restart

これであとは https://raspberrypi.local:631 にアクセスして、プリンターを追加。設定はよくわかんないのでデフォルトのまま一気に進めてやり、iPadなどから印刷ができるようになりました。

参考サイトでは印刷が不鮮明とか色がおかしいとありましたが、とりたててそのような問題はありませんでした。Linuxで印刷するよりちゃんとドライバーが設定されているのでキレイだ。参考サイトではドライバーが設定されていなかったのかもしれないが、おかしなことがありましたらまた追記します。

自動起動について

使う時だけ起動したい。使わない時はシャットダウンしておきたい。そんな用途だとRaspberryPiの電源を入れてもCUPSが立ち上がらない場合がある。これはデフォルトの設定でプリンタが接続されていなければCUPSが立ち上がらないようになっているらしいので、その点に注意すれば自動起動を上手く使うことができるはず。

https://bbs.archlinux.jp/viewtopic.php?id=61

参考

PostgreSQLのデータベースを作成する

UTF8のデータベースを作成する

postgres=# CREATE DATABASE hoge ENCODING 'utf8';

作成できました

postgres-# \list
List of databases
Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
hoge      | dev      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
|          |          |             |             | postgres=CTc/postgres
template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
|          |          |             |             | postgres=CTc/postgres

データベースを切り替える

postgres-# \c hoge

参考

https://www.postgresql.jp/document/9.0/html/sql-createdatabase.html

VMで立ち上げたUbuntuに開発用のPostgreSQLを構築しホスト側からリモート接続する

UbuntuにPostgreSQLをインストールし、ホストからVMのデータベースにリモート接続できるようにしたいと思います。

クライアントのインストール

ホストにはPostgreSQLのクライアントのみインストールします。

sudo apt install postgresql-client

PostgreSQLのインストール

開発用にVMにはPostgreSQLのサーバーをインストールします。VM上に立ち上げるのはDockerを立ち上げるホストとは別ネットワーク上に構築することで、DockerコンテナからDBへの接続が容易になるためです。

sudo apt install postgresql

PostgreSQLを起動します。

sudo systemctl start postgresql

再起動時に自動で立ち上がるように自動起動設定を追加します。

sudo systemctl enable postgresql

開発用のユーザーを作成する

devユーザーを作成します。今回はテストなのでsuperuser権限をもたせてで作成します。名前もパスワードもシンプルなものに設定すると楽。

sudo -u postgres -i
createuser --superuser --pwprompt dev
pgsql

作成されたユーザーを確認します。

postgres=# \du
List of roles
Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
dev       | Superuser, Create role, Create DB                          | {}
postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

ユーザー作成を誤った場合等は下記のようにしてユーザーを削除できます。

dropuser dev

リモート接続を許可する

今回はバージョン10なので、/etc/postgresql/10/main配下に各設定ファイルが配置されています。まずはリモートから接続できるようにsudo vi /etc/postgresql/10/main/pg_hba.confpg_hba.confを開き

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

この部分を書きのように(私の場合はVirtualboxでVMを立ち上げておりますのでvboxnet0のIP帯を)指定して許可してやります。ご自分の環境に合わせてこちらは書き換える必要があります。

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.33.0/24         md5

次にsudo vi /etc/postgresql/10/main/postgresql.confpostgresql.confを開き、下記のように指定します。

listen_addresses = '*'

最後にPostgreSQLを再起動します。

sudo systemctl restart postgresql

最後にホスト側から下記のようにして接続が確認できればOK

psql -h database -U dev -d postgres

参考

Ubuntuでarecordコマンドを使って録音をする

5秒間録音してWAVファイルを生成する例。ノイズなどは結構入ると思うが、マイクそのものの音声を収録できるので、マイクのテストを行うにはかなり良い。友達がいない人はマイクテストを人に協力をお願いすることはできないが、これを使えば自分でテストできるのだ。

$ arecord -d 5 hoge.wav
録音中 WAVE 'hoge.wav' : Unsigned 8 bit, レート 8000 Hz, モノラル

再生についてはGUIからでもできるが、そのままコマンドでやったほうがマジで速いのでおすすめ。

aplay gaibu-mike.wav

PHPでMySQLに接続できない場合の対応

MySQLに接続しようとしたらPDOExceptionが発生した。

PHP Fatal error:  Uncaught PDOException: could not find driver in hoge.php:1

ドライバが見つからないと言っているので、この場合はphp-mysqlを入れます。

sudo apt install php-mysql

おわり

Rustでpub useを使ってモジュールを整理する

a::b::c::d というモジュールがある時a::b

pub use c::d;

とすると

use a::b::d

でアクセスができるようになる。

これを使って外に出すモジュールを必要な分だけ出すように調整する。例えばライブラリ内では様々なモジュールをpubでアクセスできるようにするが、ライブラリを使う側には必要最小限だけ公開する時に使えると思う。

https://keens.github.io/blog/2018/12/08/rustnomoju_runotsukaikata_2018_editionhan/

UbuntuでBluetoothのイヤホンマイクの音がこもる場合の対策

プロファイルがヘッドセット用になっているとこもる。

Screenshot from 2019-02-26 09-21-29.png

なので下記のようにして別のプロファイルに変更することでこもらなくなる。音楽を聞くために接続している場合はこちらが良いだろう。

Screenshot from 2019-02-26 09-21-49.png

マイクを使用しようとすると自動的に変更されるのだが、マイクの使用を終了してもプロファイルの設定が戻らない。おそらくMacとかモバイルデバイスはその辺りを上手に設定してくれているのだろう。