CPUの温度を取得する。
sys ファイルシステムから取得することが出来る。
$ cat /sys/class/thermal/thermal_zone0/temp 63
コマンドをインストールしなくても良いのは便利
関連資料
raspi はこちら
sys ファイルシステムから取得することが出来る。
$ cat /sys/class/thermal/thermal_zone0/temp 63
コマンドをインストールしなくても良いのは便利
raspi はこちら
ネットワークで遊んでると、NICの優先度を決めたいことがあって。
ip route
を毎回いじってたけど、どうも面倒くさい。ぐぐってたら
priority は ネットワーク的には metrics と呼ぶことを思い出した。
takuya@raspi3:~$ ip route default via 192.168.1.1 dev wlan0 onlink
auto eth0 allow-hotplug eth0 iface eth0 inet static address x.x.x.x netmask x.x.x.x gateway x.x.x.x metric 10 auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf metric 20
takuya@raspi3:~$ ip route default via 192.168.1.1 dev wlan0 metric 20 default via 192.168.1.1 dev eth0 metric 30 onlink
最近はdhcpcd でクライアント側でdhcpを取得したり、network manager で管理したりするので、そっちについてはよくわからないんですよね。。。
metrics をいれる
https://askubuntu.com/questions/708319/how-to-use-network-metric-to-manage-two-nics-in-one-pc
みんなタブ文字使うんですね。わたしは、いつの頃からか、タブ文字じゃなくてスペースを使うように変わりました。
たぶん、ブログなどにコードをコピペするようになってからとくにその傾向が顕著になったような気がする。
あとHTMLやCSSの激しいネストでタブインデント幅を2にしてたとき、タブ文字表示が鬱陶しかった。というのもある。
スペースに変換してexpand tab で生活してたらチームやるときに、怒られた。。。
editor.config でグーローバルに指定されるのもあまりうれしくないので、自分のファイルはモードラインを使うことにした
ファイルの先頭の中のコメントに、vimの設定を書いておいて、ファイルタイプやタブの設定インデントの設定を固定するもの。モードラインという名前がふわっとしてて、よく使う単語なので、なかなか覚えられない。モードライン
(mode line / modeline )の単語が思い出せず何度ググったことか
要は、ファイルごとにVimの設定を変えられる特殊な書き方
// vim:set expandtab set XXX :
: config :
と :
でくくる
これで、vim の modeline / mode line を書くことができる。
こんなのは習うより慣れろ。
// vim:set expandtab :
// vim:set ft=json :
// vim: nowrap :
// vim: shiftwidth=2 :
// vim:tabstop=4 :
# vim : set ft=nginx shiftwidth=2 expandtab nowrap tabstop=2 :
; vim: ft=dosini ts=2 sw=2 sts=2 sr noet:
とくに、 /etc の設定ファイルで大活躍する。
# vim : set ft=dosini :
ft=ini じゃなくて ft=dosini じゃないとだめ
わざわざブログに残すほどのことでもないんだけど、モードラインという言葉をいつも忘れるので、モードライン(modeline)と幾度も書けば覚えていられると思ったのでメモ。
個人的には、Linux の etc で大活躍してます。設定ファイルの書式はアレコとマチマチだったりするし、自動認識が上手く動かなかったり。nginx や apache のconf だったり、rails に unicorn の設定が.conf なのに ruby ファイルだったり。 .xxxrcなのにJSONだったり。そういうときに活躍してる。
モードラインを使って、ファイルごとにvimエディタのオプションを指定する。 — 名無しのvim使い
モードラインが mode line や modeline で検索にマッチしないので、キーワードをバンバン書いた
CP932はいつまで生き残るんですかね。。。ファイル名だけならまだ我慢するけどファイルの中身もとなると結構しんどいですよね・
$ ls **/*.txt | xargs -I@ nkf -w -g @ Shift_JIS Shift_JIS Shift_JIS Shift_JIS CP932 Shift_JIS Shift_JIS Shift_JIS Shift_JIS
あー、、、もうね・・・
$ ls **/*.txt | xargs -I@ nkf -w --overwrite @
ls **/*.txt | xargs -I@ nkf -g @ UTF-8 UTF-8 UTF-8 UTF-8 UTF-8 UTF-8 UTF-8 UTF-8 UTF-8
うん、楽ちん。nkf 楽だわー
Safariでm3u8を開くのはQuickTimeを起動するようなものなので*1
open -a 'QuickTime Player' 'https://nhkradiolkfm-i.akamaihd.net/hls/live/512097/1-fm/1-fm-01.m3u8'
として、open コマンドで直接叩けば良いんだよ。
ほかにも VLCが対応してるので
open -a 'VLC' 'https://nhkradiolkfm-i.akamaihd.net/hls/live/512097/1-fm/1-fm-01.m3u8'
などとすれば、ぱぱっと再生できる。あとはこれをaliasにでもしておけば、タブ専有されなくて楽ですよね。
地上波NHKも、とっととm3u8で配信してほしいものだ。
*1:AVFoundationに丸投げする的な意味で同じかなーって思う
for for をしたいなと思った。
data = [[ 3 ], [4] ] [ e for row in data for e in row ]
data = [[ 3 ], [4] ] [ e for row in data for e in row if e %2 ==0 ]
楽しい。 filter も map も要らない。list comprehensions 便利。
レポジトリはこちら
python3.6 でフォーマット文字列が導入されたので、ようやくPythonをシェルコマンド呼び出しに使って使いやすくなったので、ガンガン書き直した。
python3.6 で書き直した。
pyenv を使う
git clone https://github.com/pyenv/pyenv echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile ./pyenv/shims/bin/pyenv rehash pyenv install 3.6.2 pyenv global 3.6.2 pyenv rehash hash -r
pyenv の準備ができたら
python play_radiko.py abc
ABC*1 を再生
ストリーミングを保存、タイムフリーの取得、再生、再生しながら保存などもついでにヤッておいた
rtmpdump は ffmpeg だけでもできるし、mplayer と ffmpeg 使ってるし、相当に冗長なんだけど、とりあえずraspi で 動けばいい的な
Radikoの再生&録音スクリプトをPythonで書きなおした - それマグで!
http://takuya-1st.hatenablog.jp/entry/2014/09/28/051532
オーディオジャックから、ラジオを垂れ流したい。散々やってきたけど、Raspi ZeroからRaspi3に変えたので、オーディオジャックが使えるようになった
rtmpdump は必要。
rtmpdump -v -r rtmpe://f-radiko.smartstream.ne.jp\ --app ABC/_definst_\ --playpath simul-stream.stream\ -W http://radiko.jp/apps/js/flash/myplayer-release.swf\ -C S:"" -C S:"" -C S:"" -C S:${authtoken}\ --live --stop 5400 \ | omxplayer -o local --hw --timeout 30s --no-keys pipe:0
omxplayer が rtmp には対応してるけどキーを送れないのと、rtmpe は出来ないっぽい。この辺はそのうちもう少し調べたい。もしキー送信できたら omxplayer だけで完結するので。
--hw
つけたら、ハードウェアデコードしてくれるらしいが、、効果あるんだろうか
omxplayer に pipe でデータを渡すには --no-keys
をつけて pipe:0
を指定する
この辺は過去資料にある。→ raspberry pi の omxplayer を標準入力でパイプして使う。 - それマグで!
コレだけの設定で、結構楽ちんに野球中継を垂れ流す事ができて幸せな感じある。
ffmpeg を使うしか無い。omxplayer で m3u8 は再生できるが、CookieとUA以外の、HTTPヘッダを追加できないみたいなので。
ffmpeg -y \ -headers 'X-Radiko-AuthToken: ${authtoken}'\ -i 'https://radiko.jp/v2/api/ts/playlist.m3u8?station_id=${channel}&ft=${start}&to=${end}'\ -loglevel panic -acodec copy - \ | omxplayer -o local --timeout 30s --no-keys pipe:0
タイムフリー楽しい。
Raspberry Pi にスピーカー繋いで、ラジオを流せればとっても楽ちんだと思いません?
2017-09から、らじる★らじるが m3u8 に変更になっているので HLS のm3u8 を指定するだけなのでとても簡単
omxplayer --timeout 60s -o local https://nhkradiobkr1-i.akamaihd.net/hls/live/512291/1-r1/1-r1-01.m3u8
たったこれだけ。
timeout がデフォルトの10s だとakamai の仕様で接続が切れるらしいので、 --timeout
で長めに設定する必要がある。
-o
は アウトプットを オーディオジャックに指定している。raspi は alsa とか設定するより omxplayer を使うのが一番ラクですよね。
心配なら --audio_queue
を付けても良いかもしれない
omxplayer が rtmpe と ヘッダ追加 に対応してくれたらradikoもrtmpdump 無しでいけるのになぁ。
takuya@raspberrypi:~ $ cat /etc/debian_version 8.0
takuya@raspberrypi:~ $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)" NAME="Raspbian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" takuya@raspberrypi:~ $
これで、バージョン番号と名前が確認できます。
他にもいろいろありますが。この方法が手軽だと思う。
今回は raspberry pi の raspbian で確認しました。
記述を追加
方法は、通常の debian アップグレードと同じでいいですね。
できるだけ最新版にしておく。
sudo apt-get update && sudo apt-get upgrade -y
grep jessie /etc/apt/ -R
Debianのアップグレードと同じように、/etc/apt でバージョン名を指定する
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/raspi.list
自動更新してたので念の為にコレも。
sudo sed -i 's/jessie/stretch/g' /etc/apt/apt.conf.d/50unattended-upgrades
takuya@raspberrypi:~ $ sudo grep jessie /etc/apt/ -R takuya@raspberrypi:~ $
コレだけが置換された。
takuya@raspberrypi:~ $ sudo grep stretch /etc/apt/ -R /etc/apt/apt.conf.d/50unattended-upgrades:// n,codename (eg, "stretch", "stretch-updates") /etc/apt/apt.conf.d/50unattended-upgrades:// ${distro_codename} Installed codename (eg, "stretch") /etc/apt/apt.conf.d/50unattended-upgrades:// "o=Raspbian,n=stretch"; /etc/apt/sources.list:deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi /etc/apt/sources.list:#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi /etc/apt/sources.list.d/raspi.list:deb http://archive.raspberrypi.org/debian/ stretch main ui /etc/apt/sources.list.d/raspi.list:#deb-src http://archive.raspberrypi.org/debian/ stretch main ui
sudo apt update
更新が終われば、アップグレードしたいけど・・・
もし心配なら、シミュレーターでシミュレーションする。
apt --simulate upgrade apt --simulate dist-upgrade
パッケージを余りたくさん入れてなかったり、httpdサーバーの設定を変えてなかったり、smb.conf とかサーバの設定を変えてなければ、ほとんどなにも起きないのでシミュレーターは必要ないと思う。
sudo apt dist-upgrade
takuya@raspberrypi:~ $ cat /etc/debian_version 9.0
絶対、車輪の再発明になるので検索させていただきました。
kill コマンドとppid をきっちり使いこなせば、ちゃんと理解できるんだろうけど、それを説明するのはかったるいので、再帰呼出しがイメージしやすいのではなかろうか。
#!/usr/bin/env bash killtree() { local parent=$1 child for child in $(ps -o ppid= -o pid= | awk "\$1==$parent {print \$2}"); do killtree $child done kill $parent } killtree $@
https://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes
chrome ってキーチェイン使わないとおもってたら、キーチェインのダイアログを聞いてきたのであたらためて調べてみた
Chromeはキーチェインを「読み込み専用」で使うようです。
の OR 条件になっているようです。
書込みは、内蔵パスワード保存のみのようです。 更新もないようです。
いったん、Safari起動して保存してからChromeで開くと良いようですね。
あきらかに、ChromeがKeychainsに新規項目追加したと思うんだけど。なんで新規項目追加されたのかちょっとつい調査したい。
PC/MacのDNSキャッシュを消しても、なんかダメだなと思ったら、どうやらChromeのDNSキャッシュがあるようで。
DNS触ってnginx を切り替えてるときに、chrome の dns cache はうざい。
chrome のDNSキャッシュは chrome-urls からアクセスできる。 → chrome://net-internals/#dns
chrome://net-internals/#dns
ほんとうはDNSのキャッシュ設定を変えれば良いんだろうけど。キャッシュ消すのが一番早い
DNS浸透待ちはしないでね。浸透言うな警察が来るよ。cacheにも注意しよう
cache で検索しても出てこないのでキーワードを見直し