2020年9月28日月曜日

pythonで子ども用の計算アプリを作成

 小学3年の娘の集中力が持続せず、ひき算やわり算の計算がはかどらない。

私がパソコンをいじっている姿をよく見ているためか、パソコンには興味を持ってくれているようなので、ラズベリーパイを使って、計算用のプログラムを作ってみた。

使用言語:python3

---わり算.py---

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

####設定用################################
問題数 = 2               #出題数
ファイル名 = 'わり算.py'   #このファイル名
記録ファイル = 'data.csv' #記録ファイルのパス
#######################################

import random
import time
import csv

def 問題(num): 
    global 得点
    a=random.randint(100,999)
    b=random.randint(10,99)
    c=a//b
    d=a%b
    正解 = "{}...{}".format(c,d)
    print("第{}問:{} ÷ {} =".format(num+1,a,b))
    解答 = input()
    if 正解 == 解答:
        得点 = 得点 + 1
        print("正解◯")
    else:
        print("間違い×。正解は" + str(正解))

#記録ファイル参照
print("名前を入力しなさい。(●/●)")
名前 = str(input())
lst = []
記録=1000
with open(記録ファイル ,'r') as file:
    reader = csv.reader(file)
    lst = [r for r in reader]
for row in lst:
    if row[0] == ファイル名:
        if row[1] == 名前:
            記録 = int(row[2])

#名前が違う場合に再入力を強制する。
while [str(ファイル名),str(名前),str(記録)] not in lst:
    print("名前が違うよ。もう一度名前を入力しなさい")
    名前=input()
    for row in lst:
        if row[0] == ファイル名:
            if row[1] == 名前:
                記録 = int(row[2])
else:
    print("記録は {} 秒です".format(記録))

#開始
得点 = 0
print("〇あまり〇 → 〇...〇 の形で答えなさい")
print("Enterキーで開始 全{}問".format(問題数))
input()
start=time.time()

#ループ開始
for num in range(問題数):
    問題(num)
    print("-------------------")

#ループ後の処理
finish=time.time()
経過時間=int(finish-start)
print("得点:{}/{} 点。記録は {} 秒です".format(得点,問題数,経過時間))

if 得点 == 問題数:
    if 記録 > 経過時間 :
        sec = 記録 - 経過時間
        print("新記録達成!!    {} 秒更新".format(sec))
        for row in lst:
            if row[0] == ファイル名:
                if row[1] == 名前:
                    row[2]=str(経過時間)

        with open(記録ファイル ,'w',encoding='utf-8') as file:
            writer = csv.writer(file)
            writer.writerows(lst)
    else:
        sec = 経過時間 - 記録
        print("残念!" + str(sec) + "秒とどかず")
else:
    print("{}点目指してがんばれ!!".format(問題数))

print("Enterキーで終了")
input()


# 使用方法
# ターミナルで保存したディレクトリへ移動し、”sudo chmod 755 か

わり算.py”を実行しファイルに実行権限を与える。
# 記録ファイルに「わり算.py,名前,999」を追記(なければ新規作成)する。
# ダブルクリックし、端末で実行を選択する。

#説明
#def 問題(num): ここだけ変えれば、いろいろな問題に対応可能。
#記録ファイル参照:csvファイルを参照し、ユーザーごとの記録を表示する。
#名前が違う場合に再入力を強制する。:
data.csvに[名前,ファイル名,*]がなければ、名前が違うとして再入力を促す。
#開始:
#ループ開始:
 for A in range Bを使用し、B(問題数)回ループさせる。
#ループ後の処理:
 time.time()を使用し、開始時と終了時の時間差を取得する。
 満点でかつ、記録を更新すれば、新たにcsvファイルに記録を上書きする。

ファイル名 = __file__とするとなぜかうまく行かない。

LXTerminalのフォントサイズが小さく、見えにくい場合には、ターミナルを起動して、「編集→設定(s)→スタイル→フォント」でデフォルトのサイズを変更可能。

5インチディスプレイだと下が表示されない問題があるので、
$ sudo nano /boot/config.txt
末尾に”display_rotate=1”を追記し保存。
$ sudo reboot
90度回転されて表示されるので、下まで確認できる。設定後は追記した一文を削除して再起動。

 

Failed to execute child process "xterm"(そのようなファイルやディレクトリはありません):と表示される場合は、/usr/bin/xtermがないので、シンボリックリンクを作成します。
$ cd /usr/bin
$ sudo ln -s lxterminal xterm

2020年7月7日火曜日

ラズベリーパイ 録画サーバー

以前購入していたKEIAN製地デジチューナーを使用して、ラズベリーパイ3B+を録画サーバーにしてみたい。
※録画した動画をアップロードするのは犯罪ですのでしてはいけません。
※私的複製であれば、放送波を正規の方法(B-casカード) で復調しているだけで、ダビング10などの暗号化を解除している訳ではないので、現行法上はグレーゾーンの話題です。今後の法改正次第では違法となる可能性があるので、ご注意ください。(法解釈が間違っていたらごめんなさい🙇)


用意するもの
・Raspberry Pi 3B+
KTV-FSUSB2
・recfsusb2n_http_patch2.zip(ダウンロード先:適当な何かの別館にあるダウンロードページ)パスワードは適当な何かの別館内に記載あり
・Mirakurun(使用verは3.1.0)
・Chinachu
・ffmpeg (最新verは4.1.4)


ktvfsusb2v3

◆導入


ターミナル
1$ sudo apt updateおまじない
2$ sudo apt upgrade
3$ sudo apt install libboost-all-devlibboost1.50-allでは上手くいかなかった。
4$ sudo apt install git最新バージョン (1:2.20.1-2+deb10u3)
5$ git clone https://github.com/sh0/recfsusb2nCloning into 'recfsusb2n'...
remote: Enumerating objects: 62, done.
remote: Total 62 (delta 0), reused 0 (delta 0), pack-reused 62
Unpacking objects: 100% (62/62), done.
6$ cd recfsusb2n
7$ mkdir patch
8$ cd patch
9$ mv /home/pi/Downloads/recfsusb2n_http_patch2.zip ./recfsusb2n_http_patch2.zipをDownloadsに保存した場合。
素直にsambaとかでカット&ペーストした方が早い
10$ unzip recfsusb2n_http_patch2.zipzipファイルを解凍
Archive: recfsusb2n_http_patch2.zip
inflating: decoder.h
inflating: tssplitter_lite.cpp
inflating: tssplitter_lite.h
inflating: readme_patch.txt
inflating: Makefile
inflating: fsusb2n.cpp
11$ mv Makefile ../src
$ mv fsusb2n.cpp ../src
$ mv tssplitter_lite.h ../src
$ mv decoder.h ../src
$ mv tssplitter_lite.cpp ../src
5つのファイルをsrcディレクトリに移動
素直にsambaを使おう。
12$ cd ../src
$ nano Makefile
srcディレクトリに移動して、Makefileを編集 4か所
13$ make/usr/bin/ld:-lboost_thread-mtが見つかりませんと出た時は、Makefil15行目の-mtを削除する。
14$ sudo cp recfsusb2n /usr/local/bin/recfsusb2nパスの通ったディレクトリにコピー


/home/pi/fsusb2n/src/Makefile
1# options
2B25 = -DB25
3
4ifdef B25
5B25_PATH = ./arib25
6B25_OBJS = B25Decoder.o
7B25_OBJS_EXT = $(B25_PATH)/arib_std_b25.o $(B25_PATH)/b_cas_card.o $(B25_PATH)/multi2.o $(B25_PATH)/ts_section_parser.o
8endif
9
10CXX = g++
11CXXFLAGS = -O2 -march=native -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25)  ”-march=native”を削除
12CC = gcc
13CFLAGS = -O2 -march=native -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25)  ※”-march=native”を削除
14OBJS = fsusb2n.o usbops.o em2874-core.o ktv.o IoThread.o tssplitter_lite.o $(B25_OBJS)
15#LIBS = -lpthread -lboost_system -lboost_thread-mt -lboost_filesystem ※"#"と"-mt"を削除
16#LIBS = -lpthread -lboost_thread-mt -lboost_filesystem ※#を追加してコメントアウト
17TARGET = recfsusb2n
18
19all: $(TARGET)
20
21clean:
22rm -f $(OBJS) $(B25_OBJS_EXT) $(TARGET)
23$(TARGET): $(OBJS) $(B25_OBJS_EXT)
24$(CXX) -o $(TARGET) $(OBJS) $(B25_OBJS_EXT) $(LIBS)
25
26depend:
27$(CXX) -MM $(OBJS:.o=.cpp) > Makefile.dep
28
29-include Makefile.dep

◆録画テスト

実際に録画できるか試してみる。

ターミナル
1$ sudo nano /lib/udev/rules.d/89-tuner.rules89-tuner.rulesファイルを新規作成して下の2行を書き込み保存。
2$poweroffシャットダウン

/lib/udev/rules.d/89-tuner.rules
1# FSUSB2N
2SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0511", ATTRS{idProduct}=="0029", MODE="0664", GROUP="video"

KTV-FSUSB2を接続し、Raspberry Pi 3B+を起動。

$ lsusb
>>ID 0511:0029 N'Able (DataBook) Technologies, Inc.
$ recfsusb2n --b25 --sid hd --wait 100 13 10 test.ts
>>チャンネル 録画時間(秒) ファイル名
/home/pi/test.ts(約18MiB)ができていれば成功。
recfsusb2n ver. 0.9.2
ISDB-T DTV Tuner FSUSB2N
device: "/dev/bus/usb/001/004"
pid = 4677
B25Decoder initialized.


 
チャンネル一覧
東北放送NHKEテレNHK総合宮城テレビ東日本放送仙台放送
191317242821

ハードウェアエンコード

ffmpegのセットアップ
$ sudo apt install ffmpeg インストール済みだった
$ ffmpeg -codecs | grep h264
>> DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m h264_mmal ) (encoders: libx264 libx264rgb h264_omx h264_v4l2m2m h264_vaapi )

$ ffmpeg -i test.ts -codec:v h264_omx -b:v 3000k test.mp4
>>codecにh264_omxを指定することでハードウェアエンコーダを利用してh.264に変換する。-b:v 3000k は映像ビットレートを3000kB/sに指定。>>1.02倍速で変換。


実際に運用するには番組表から予約できないと使えない。
①Mirakurun + chinachu
②Mirakurun + EPGStation
あたりが有名らしい。ただ、チューナーにはPX-S1UDやPT3とかが一般的で、KTV-FSUSB2とかの情報は結構少ない。
今回は①のchinachuを導入してみる。比較的情報量が多いため。EPGStationだと録画後のエンコードまで可能らしい。

Mirakurunの導入

$ sudo apt install build-essential curl git-core vainfo
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt install nodejs

PM2のインストール
$ sudo apt install npm
※npm(Node Package Manager)Node.jsのパッケージを管理する。
$ sudo npm install pm2 -g
Mirakurun のインストール
$ sudo npm install mirakurun -g --unsafe-perm --production

$ sudo EDITOR="nano" mirakurun config server
※EDITOR=nano といれるとnanoで編集できる。入れないとVim。
server
logLevel: 2
path: /var/run/mirakurun.sock
port: 40772

※コピー&ペーストするとインデントエラーでMirakurunが上手く起動しない。
$ sudo EDITOR="nano" mirakurun config tuners
tuners
- name: FSUSB2N
   types:
     - GR
   command: recfsusb2n -b <channel> - -
   isDisabled: false

$ sudo EDITOR="nano" mirakurun config channels  
channels
- name: NHKEテレ
  type: GR
  channel: '13'
- name: NHK総合
  type: GR
  channel: '17'
- name: TBCテレビ
  type: GR
  channel: '19'
- name: 仙台放送
  type: GR
  channel: '21'
- name: ミヤギテレビ
  type: GR
  channel: '24'
- name: 東日本放送CH
  type: GR
  channel: '28'


Chinachuのインストール

実行ユーザーのvideoグループへの登録

$ sudo gpasswd -a pi video


Gitリポジトリからクローン・インストール
$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
$ cd ~/chinachu/
$ ./chinachu installer
1) Auto (full)   3)Node.js Environment   5)ffmpeg
2)submodule   4)Node.js Modules
what do you install? > 1

※結構時間がかかります。気長に待ちましょう。数時間?

$ cp config.sample.json config.json
$ sudo nano config.json
  "uid": "pi",  ※デフォルトのnullからpi(実行ユーザー名)へ変更。
  "recordedDir" : "./recorded/",録画用ディレクトリ
  "wuiOpenHost": "0.0.0.0" ,  ※wuiHostからwuiOpenHostへ名前変更。

空の設定ファイルを作成
$ echo [] > rules.json

サービスが実行可能か確認。
$ ./chinachu service wui execute
$ ./chinachu service operator execute

※pm2へchinachu-wuiとchinachu-operatorを登録する。
$ sudo pm2 start processes.json
$ sudo pm2 save

[PM2][ERROR] Error: Interpreter .nave/node is NOT AVAILABLE in PATH. (type 'which .nave/node' to double check.)
$ sudo pm2 start processes.jsonとすると、
[PM2][ERROR] Error: Interpreter .nave/node is NOT AVAILABLE in PATH. (type 'which .nave/node' to double check.)とエラーが出て、先に進めなかった。どうやら、chinachu-wuiとchinachu-operatorが起動していないよう。

シンボリックリンクがなかったため(又は無効なリンク)のようで、
$ sudo ln -s /usr/bin/node /home/pi/chinachu/.nave/node
$ sudo ln -s /usr/bin/npm /home/pi/chinachu/.nave/npm
とすることで、無事正常に起動した。

ブラウザで http://IPAddress:20772 と入力すると、chinachuで番組表からの予約が可能。

2020年7月6日月曜日

RaspberryOS 導入ガイド

何度もraspbianのセッティングをするのに、毎回いろいろなページを見ながら操作するのが面倒なので、自分が必要そうなものを、備忘録的に記載。

1.Raspberry Pi OS(32-bit)with desktop(https://www.raspberrypi.org/downloads/raspberry-pi-os/)をダウンロード。
2.SDカードをメインPCにつなげて、「SD Card Formatter」でフォーマットして、「Win32Diskimager」で書き込む。
3.SDカードのbootフォルダ内に "ssh" というからのファイルを作成。拡張子なし。
4.ラズベリーパイにSDカードをセットして電源ON。
5.SSH接続するため、メインPCで「teraterm」を起動。ショートカットのリンク先を
"C:\Program Files (x86)\teraterm\ttermpro.exe" raspberrypi /auto=password /user=pi /passwd=raspberry
としてとしておくと、毎回ユーザー名とパスワードを入力しないで良いので便利。ホスト名は"raspberrypi"でOK。

6.$ sudo raspi-configで設定変更。(必要最小限)

1 Change User Passwordでパスワードを変更。
新しいパスワード:●●(表示されない)
新しいパスワードを再入力してください:上と同じパスワード(表示されない)
passwd: パスワードは正しく更新されました

4 Localisation Optionsで以下の3点を変更。

I1 Change Locale          Set up language and regional settings to match your location
en_GB.UTF-8 UTF-8はデフォルトで選択されているので、ja_JP.UTF-8 UTF-8を追加で選択。カーソルを合わせてスペースキーで選択*となる。エンターキーを押すと、
”Debianの多くのパッケージは、ロケールを使用して、ユーザーに適切な言語でテキストを表示します。生成されたロケールからシステムのデフォルトロケールを選択できます。
 これにより、システム全体のデフォルト言語が選択されます。このシステムがマルチユーザーシステムであり、すべてのユーザーがデフォルトの言語を話すことができない場合、問題が発生します。
システム環境のデフォルトのロケール:None C.UTF-8 en_GB.UTF-8 ja_JP.UTF-8
ja_JP.UTF-8を選択。
I2 Change Time Zone       Set up time zone to match your location
Asia → Tokyo を選択。
I4 Change WLAN Country    Set the legal channels used in your country
JP Japanを選択。

5 Interfacing OptionsでVNCを有効化。
P3 VNC      Enable/Disable graphical remote access to your Pi using RealVNC
→Would you like the VNC Server to be enabled? →はい


7.日本語入力の有効化
$ sudo apt install fcitx-mozc


8.Sambaのインストール
$ sudo apt install samba
インストール途中でSamba サーバおよびユーティリティというのが出る。
あなたのコンピュータがネットワーク上の DHCP サーバから IP アドレス情報を取得しているのであれば、DHCP サーバはネットワーク上にある WINS サーバ (NetBIOS ネームサーバ) についての情報を提供することもできます。DHCP で提供される WINS 設定は /var/lib/samba/dhcp.conf から自動的に読み込まれるため、smb.conf ファイルを変更する必要があります。この機能を使うためには、dhcp-client パッケージがインストールされている必要があります。 DHCP から WINS 設定を使うよう smb.conf を変更しすか。
 <はい>/<いいえ>
>はいを選択
$ sudo nano /etc/samba/smb.conf
文末に以下の5行を追加
----------------------------------------------
[pi]
path = /home/pi
read only = No
guest ok = Yes
force user = pi

[USB-HDD]
path = /media/pi/HD-ADU3
read only = No
guest ok = Yes
force user = pi
----------------------------------------------
$ sudo service smbd restart
$ sudo systemctl enable smbd

9.FTPのインストール別ページ

10.USB-HDDの自動スピンダウン別ページ

11.KUMAN5インチラズベリーパイ用モニタの設定(別ページ
12.デジタルフォトフレームの導入別ページ

13.録画サーバーの導入 (別ページ)(未作成)

2020年6月28日日曜日

ラズベリーパイ Docker & Docker-compose導入

mirakurunの導入にDockerが必要らしいが、docker-compose pull で失敗する。
Dockerってなに? な状態から、導入まで

環境

・RaspberryPi 3B+
・カーネル:Linux raspberrypi 4.19.118-v7+
・OS: Raspbian GNU/Linux 10 (buster)



Dockerってなに?

 Linux上で別なLinuxシステムを起動するコンテナ型仮想化を利用するための管理ソフト。
仮想化とは、OS上に仮想的に別なOSを構築するもの、VMwareとかVirtualBOXとかみたいなやつ。中でもコンテナ型仮想化とは、仮想的な物理マシンの構築は行わず、元のOS上に隔離されたエリアを作り、その内部で新たなソフトウェア実行環境を構築する。コンテナの内外では干渉しあわない。コンテナを移動するだけで別なPC環境でも同様に扱うことができる。ソフトウェアの開発・配布に便利、、、らしい。なんとなくしか分からん。

Docker-composeってなに?

 複数のコンテナを使用するサービスを構築・実行するための手順を自動化

導入


Docker
$ sudo apt install docker >> $ docker --version >>-bash: docker: コマンドが見つかりません
となり、apt では上手く導入できません。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ docker --version
>Docker version 19.03.11, build 42e35e6 となり、導入できました。
$ docker-compose version
>/usr/local/bin/docker-compose: 行 1: Not: コマンドが見つかりません

Docker-composeの導入
$ git clone https:///github.com/docker/compose.git
$ cd compose
$ git checkout 1.26.0
※最新版は1.26.0だった。(2020.6.22時点)
$ ./script/build/linux
>40分位かかった。
$ cd dist
>"docker-compose-Linux-armv7l"が作成されている。
$ ./docker-compose-Linux-armv7l version
>docker-compose version 1.26.0, build d4451659
>docker-py version: 4.2.1
>CPython version: 3.7.7
>OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
※このままではdocker-composeが使えないのでbinにコピーする。
$ sudo cp docker-compose-Linux-armv7l /usr/local/bin/docker-compose
$ sudo chown root:root /usr/local/bin/docker-compose
※chown:所有権の設定 chown ユーザー(:グループ) ファイル
$ sudo chmod 755 /usr/local/bin/docker-compose
※chmod 755:誰でも読込みと実行はできるが、書き込みは自分だけ。
$ ls -l /usr/local/bin/
>-rwxr-xr-x 1 root root 8156972  日付 docker-compose
$ docker-compose version
>docker-compose version 1.26.0, build d4451659
>docker-py version: 4.2.1
>CPython version: 3.7.7
>OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

docker-compose pullが出来るようになった。


ERROR: Couldn't connect to Docker daemon at+docker://localhost- is it running?と表示されてエラーになる場合、Docker と Docker-composeがグループに入っておらず、権限がない場合に表示されるらしい。
$ sudo usermod -aG docker $USER
にてdockerグループに現在のユーザが登録されて、docker-compose buildなどが実行可能となる。再起動(ログアウトでも可?)などすると登録が反映される。

2020年6月7日日曜日

ラズベリーパイ ベンチマーク

ラズベリーパイ3B+のベンチマークをしてみた。
使用したのは、
UnixBench:Version 5.1.3

Unix系OSであるRaspbianではUnixBenchというベンチマークが利用できるらしい。他にもsysbenchやGPU用のglmark2とかがあるらしい。機会があれば。

実行環境
RaspberryPi 3B+
OS:GNU/Linux -- 4.19.118-v7+ (Raspbian 10 Buster)
電源:5V 3.0A 


インストール&計測
$ git clone https://github.com/kdlucas/byte-unixbench
$ cd byte-unixbench/UnixBench
$ ./Run

ベンチマーク結果は /home/pi/byte-unixbench/UnixBench/results/  に入っています。1時間位はかかるみたいなので、時間にゆとりをもって行いましょう。56℃くらいまでCPU温度は上昇しました。


評価項目
テスト名説明
Dhrystone 2 using register variables 主に整数演算処理の性能を測定する古典的ベンチマークテスト。
結果数値は1秒間の処理回数が表示される。
Double-Precision Whetstone 主に浮動小数点演算処理の性能を測定する古典的ベンチマークテスト。
結果数値は1秒間の処理命令数が表示される。
Execl Throughput execl関数によるプロセス作成を行いその性能を測定する。
結果数値は1秒間のシステムコール処理回数が表示される。
File Copy (※1) bufsize (※2) maxblocks
(※1:1024,256,4096)
(※2:2000,500,8000)
ファイルのコピー速度を測定する。(※2)KBのファイルを(※1)Byte毎に処理。
結果数値は1秒間のファイル処理容量(KB)が表示される。
Pipe Throughput プロセス間通信で使われるパイプのスループットを測定する
結果数値はパイプ処理回数。
Pipe-based Context Switching プロセス間通信で使われるパイプによるコンテキストスイッチ性能を測定する
結果数値はパイプ処理回数
Process Creation 子プロセスの生成速度を測定する
結果数値はフォーク処理回数
System Call Overhead システムコール実行時のオーバーヘッドを測定する
結果数値は1秒間のシステムコール処理回数
Shell Scripts シェルスクリプトの実行性能を測定する
結果数値はループ処理回数


実行結果

Benchmark of raspberrypi / GNU/Linux on 土 6月 06 2020

BYTE UNIX Benchmarks (Version 5.1.3)

Test System Information

System: raspberrypi: GNU/Linux
OS: GNU/Linux -- 4.19.118-v7+ -- #1311 SMP Mon Apr 27 14:21:24 BST 2020
Machine: armv7l: unknown
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPUs: 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
Uptime: 23:16:05 up 1 day, 2:11, 2 users, load average: 0.00, 0.00, 0.07; runlevel 2020-06-05

Benchmark Run: 4 CPUs; 1 parallel process

Time: 23:16:05 - 23:44:04; 27m 59s

System Benchmarks

Test Score Unit Time Iters. Baseline Index
Dhrystone 2 using register variables 5173197.1 lps 10.0 s 7 116700.0 443.3
Double-Precision Whetstone 1430.1 MWIPS 9.7 s 7 55.0 260.0
Execl Throughput 883.9 lps 30.0 s 2 43.0 205.5
File Copy 1024 bufsize 2000 maxblocks 142819.6 KBps 30.0 s 2 3960.0 360.7
File Copy 256 bufsize 500 maxblocks 43274.2 KBps 30.0 s 2 1655.0 261.5
File Copy 4096 bufsize 8000 maxblocks 337429.5 KBps 30.0 s 2 5800.0 581.8
Pipe Throughput 281688.8 lps 10.0 s 7 12440.0 226.4
Pipe-based Context Switching 45913.1 lps 10.0 s 7 4000.0 114.8
Process Creation 2106.5 lps 30.0 s 2 126.0 167.2
Shell Scripts (1 concurrent) 1757.6 lpm 60.0 s 2 42.4 414.5
Shell Scripts (8 concurrent) 511.3 lpm 60.1 s 2 6.0 852.1
System Call Overhead 690392.9 lps 10.0 s 7 15000.0 460.3
System Benchmarks Index Score: 314.0

Benchmark Run: 4 CPUs; 4 parallel processes

Time: 23:44:04 - 00:12:11; 28m 07s

System Benchmarks

Test Score Unit Time Iters. Baseline Index
Dhrystone 2 using register variables 17680727.4 lps 10.0 s 7 116700.0 1515.1
Double-Precision Whetstone 4864.7 MWIPS 9.8 s 7 55.0 884.5
Execl Throughput 1908.4 lps 29.9 s 2 43.0 443.8
File Copy 1024 bufsize 2000 maxblocks 212820.4 KBps 30.0 s 2 3960.0 537.4
File Copy 256 bufsize 500 maxblocks 60151.4 KBps 30.0 s 2 1655.0 363.5
File Copy 4096 bufsize 8000 maxblocks 545417.9 KBps 30.0 s 2 5800.0 940.4
Pipe Throughput 964227.6 lps 10.0 s 7 12440.0 775.1
Pipe-based Context Switching 168143.6 lps 10.0 s 7 4000.0 420.4
Process Creation 3995.0 lps 30.0 s 2 126.0 317.1
Shell Scripts (1 concurrent) 4017.5 lpm 60.1 s 2 42.4 947.5
Shell Scripts (8 concurrent) 538.8 lpm 60.2 s 2 6.0 898.0
System Call Overhead 2281338.8 lps 10.0 s 7 15000.0 1520.9
System Benchmarks Index Score:703.1



インターネットで拾ってきた他人様の実行結果

環境running 1 parallel copy of testsrunning 4 parallel copy of tests
RPi3B+(GNU/Linux -- 4.19.118-v7+)3.0A314.0703.1
RPi3B+(GNU/Linux -- 4.14.34-v7+)2.0A308.1442.4
RPi3B+(GNU/Linux -- 4.14.34-v7+)3.0A355.8783.8
RPi3B+(?)2.1A303.5407.2
RPi3B+(GNU/Linux -- 4.19.80-v7l+)336.3867.2

2020年5月31日日曜日

RaspberryPi DLNA導入

DLNAサーバ 導入

環境:RaspberryPi3B+
OS:OS:Raspbian 10.4 (buster)
DLNAサーバソフト:minidlnaを使用
テキストエディタ:nano
外付けHDD:HD-AD4U3


$ sudo apt update
$ sudo apt upgrade
$ sudo apt install minidlna(2020.5.31時点での最新Ver.1.2.1)
$ sudo nano /etc/minidlna.conf

/etc/minidlna.conf
1user=root
2media_dir=/media/pi #(USBが自動的にマウントされる/media/piをディレクトリとして設定)
3db_dir=/var/cache/minidlna
4port=8200
5friendly_name=RPi
6inotify=yes (フォルダを監視し、変更があった場合に自動でデータベースを更新するオプション)
7album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg
8album_art_names=AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg
9album_art_names=Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
10notify_interval=895 (変更を監視する周期(秒指定))
11listening_ip=192.168.0.209 (ラズパイのIP)??


$ sysctl fs.inotify.max_user_watches
>>>8192と出る。

$ sudo nano /etc/sysctl.d/minidlna.conf
※新規ファイルを作り、「fs.inotify.max_user_watches = 81920」を追記。

$ sudo chown minidlna /media/pi
※外付けHDDのパーミッション設定。media_dir=で設定したディレクトリを指定。

$ sudo systemctl restart minidlna
※minidlnaサービスを再起動

PC等のブラウザで”http://http://raspberrypi:8200/”と入力すると、




”Media library”が正しくカウントされていればOK。



USBHDDが/media/piにマウントされる前にminidlnaが起動してしまうと、上手く動作しないので、minidlnaの起動を少し遅らせる。
$ sudo nano /etc/init.d/minidlna
※do_start()の画像真ん中の位置に"sleep 60"を挿入。 これで起動を60秒遅らせる。

$ sudo systemctl enable minidlna
※mnidlnaを自動起動有効にする。

2020年5月25日月曜日

bluetoothキーボード

ラズパイ用に専用キーボードが欲しいと思って、amazonでbluetoothキーボードを購入。今使っていっるマウスがbluetooth接続なので、bluetoothで揃えてみた。

今回購入したのは、EWIN製『ZR-067-B009』というキーボード。2480円。



【特徴】
JIS規格準拠の標準日本語配列のキーボード
3台のデバイスとマルチペアリング
Bluetooth5.1に対応
コンパクトで軽量設計(295x120x20mm、290g

【使用感】
・とてもコンパクトで机が広く使えます。
・日本語jis配列で使いやすい。_とか~が入力できない時は、”Fn”+”w”でWindows用にすれば良いかも。
・接続は簡単で”Fn”+”a”,”s”,”d”で接続番号を選らぶ。
⇒”Fn”+”Tab”でペアリング開始
⇒PCやラズパイで接続機器の追加を選択し”Bluetooth 5.1 Keyboard”を選択すれば勝手に接続される。
※裏面の"connect"ボタンは何に使うのか。。。
・打音は若干気になりますが、そこまでうるさくないです。
・まだ使い慣れていないからですが、エンターキーを押す際に”「”を間違って押してしまいます。
・¥の場所は、何かの間違いでしょうか?予想外の場所にあります。
・特徴にもある3台のデバイスとマルチペアリングはすごい便利
 PCとラズパイでキーボード接続しなおすのが面倒なので、新しく購入したけど、”ファンクションキー+a”で待ち時間なく操作デバイスを切り替え可能。旧キーボードは要らないかも。。。
・耐久性とかはまだ分からないので、しばらく使って何か問題があれば追記すると思う。