それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Mac でDNSサーバーをコマンドから手動変更・取得する

mac の設定は networksetup から

Macでネットワーク周りの設定は、networksetup のオプションを見ればだいたいの場合は解決する。

DNS サーバーをコマンドから指定する

takuya@$ networksetup -setdnsservers Wi-Fi 8.8.8.8

現在のDNSサーバーを取得する

takuya@$ networksetup -getdnsservers Wi-Fi 
8.8.8.8

ただし、DHCPから割り振られたものではなくて、手動で設定したものが取れるので注意

参考資料

http://osxdaily.com/2015/06/02/change-dns-command-line-mac-os-x/

http://greymd.hatenablog.com/entry/2014/09/27/154305

mac のコマンドで ルーティングテーブルの追加(add)と削除(del)と確認(show)

mac のルーティングテーブルの変更。

ルーティングテーブルの変更は、やり方は色々在るんだけど、コマンドからやるなら、route コマンドが一番便利かな。

mac のルーティングを自分でadd したり削除したり、操作したい。

最初にルーティングの確認

netstat -nr

ルーティングを確認し、必要に応じてコマンドの結果を取得する

ルーティングの追加

10.0.1.0/24 のネットワークに対するパケットは192.168.95.100を経由する

sudo   route add -net 10.0.1.0/24 192.168.95.100

ルーティングの削除

sudo  route delete -net 10.0.1.0/24 192.168.95.100

実例

10.0.1.100 のホストに対するパケットは192.168.95.101を経由する

sudo   route add -net 10.0.1.100 192.168.95.101
sudo   route delete -net 10.0.1.100 192.168.95.101

指定したIPだけ別の経路を通したい。

指定したIPだけ、別のGWを通って出ていくように設定をしたいときもあります。 /32 で指定するのもありですね。

sudo route add 192.168.100.134/32  10.200.110.1

デフォルトGWを変えるには

デフォルトのゲートウェイを変える場合は次のようにすることも出来る。デフォルトゲートウェイを変えるのは、SSH-VPNなどでパケットをSSH先に向けたりするのに便利。

デフォルトゲートウェイの変更

基本的には、削除や追加ではなく、change で変更する。

sudo route change default 172.16.10.1

デフォルトゲートウェイの削除

sudo   route delete default 172.16.10.1

デフォルトゲートウェイの追加

上記コマンドで削除している場合は追加をする。

sudo   route add default 172.16.10.1

忘れちゃいけないけど、デフォルトはすべてのルーティングテーブルにマッチしなかった時に持っていくところです。 本当に文字通り、DEFAULT なのです。

2023-01-29 追記

この記事を読む人は、Linuxでは出来るけど、BSDコマンドのMacではどうするか?を調べてることでしょう。

だったら、私の次の記事を参考に、mac のネットワークコマンドを linux iproute2 互換にしてしまう手段もいい選択肢だと思います。

macOSに Linux の ip ( iproute ) コマンドを入れてしまうという邪教 - それマグで!

関連記事

指定したルーティングテーブルがちゃんと機能しているか調べるコマンドについて。

ip コマンドでルーティングテーブルの逆引き(?)どのルートを通るか調べる - それマグで!

2019-03-26 追記

関連リンクを追記

Linuxをブロードキャストpingに応答させる

ブロードキャストping に応答してほしい。

iptablesの設定をしていて。ちまちまping 打ってるのが面倒くさかった。 まとめてガーッとping を打ち込んでおきたい

しかし、ホスト側応答をしてくれないと意味が無いので、linux にブロードキャストping への応答をさせるように設定する

ブロードキャストping への応答を有効にする

takuya@:~$ sudo sh -c 'echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts'

proc ファイルシステムを使う所がLinuxっぽくて好き。

関連資料

ブロードキャストpingを打ち込むのはこっち

ブロードキャスト・アドレスへPing送って遊んでみた。 - それマグで!

参考資料

https://unix.stackexchange.com/questions/7458/cant-ping-broadcast

rubyの正規表現とscanでグローバルマッチで後方参照をサボりマッチ箇所を取り出す。

JSとか書いてたら、グローバルマッチをついつい、次のように書いてしまう。

"aa aaa aaaaa".match( /a+/g )

ああ、シンタックスエラー

ruby 書くんだったらこう書くっポイ!

"aa aaa aaaaa".scan( /a+/ )
#=> ["aa", "aaa", "aaaaa"]

ruby でマッチした結果を使うには、 scan や コールバックが大活躍ですね

関連資料

rubyの置換でコールバックを使う。 - それマグで!

imagemagick convert で アニメーション gif を作る。時間を設定する

アニメーションgif を作る

単純なパラパラ・マンガ程度なら、コレで十分。ファイルサイズが大きくなるだろうけど、png がせいぜい100枚未満なら全然問題ないと思う。

convert 01.png 02.png 03.png  out.gif

https://i.gyazo.com/8d83e12ce4f3def203bf2b9ed38a3116.gif

切り替わりが速すぎるんだけど💢!!

fps を指定すると良い。

-delay 100

サンプル

convert -delay 50  {01..10}.png  out.gif

https://i.gyazo.com/6afc5a86b05e3f8a090a4a8955a181ed.gif

burst (バースト)の写真をアニメーションにすると楽しい。

iOS のバースト機能で撮った写真をアニメーションにすると楽しいね。

参考資料

https://www.imagemagick.org/discourse-server/viewtopic.php?t=14739

grepで先読み後読みを使うには

grep正規表現で「後読み」「先読み」を使うには

このようにするとマッチした文字をガッツリ取り出せる。

grep -Po '(?<=cond)\w+'
grep -Po '\w+(?=cond)'
役割 書式 サンプル
condが接頭 (?<=cond) (?<=Debian Gnu)\w+
接辞がcond (?=cond) \w+(?<=Linux)

( -P は必須です)

サンプル/実際に活用した例。

takuya@orangepizero:~$ uname -a
Linux orangepizero 3.4.113-sun8i #18 SMP PREEMPT Thu Jun 15 02:16:06 CEST 2017 armv7l GNU/Linux
takuya@orangepizero:~$ uname -a  | \grep -P -o  '(?<=Linux\s)\w+'
orangepizero
takuya@orangepizero:~$

grep マッチのポイント( POSIX互換必須)

grep は 殆どの場合、alias されている。なので -E などとかぶらないようにする

そのために aliasを一時的にオフにするなどと組合せて戦うと便利。

\grep -P  regex

マッチしないものを取り出す。

否定は余り使うことがないのだけれど。マッチしないものを取り出す場合もできる。

grep -Po '(?<!except)\w+'
grep -Po '\w+(?!except)'

2023-09-26

  • 否定を追加
  • PCRE に言及
  • サンプル追加

関連資料

一時的にaliasをオフ無効にする バックスラッシュ - それマグで!

カタカナ(全角)にマッチする正規表現

カタカナにマッチする正規表現

str.match(/[ァ-ヴ]+/)

サンプル

str = 'このリンゴはとても美味しいリンゴだ
このリンゴはとても美味しいパイナップルだ
このパイナップルはとても美味しいパイナップルだ
この林檎はとても美味しいみかんだ'
p str.scan(/[ァ-ヴ]+/)

ヴは vu で入力すると楽ですね

UTF-8 の場合は次のようにすることも出来る

>> p str.scan(/\p{Katakana}+/)

カタカナは単語

カタカナで表記されるものは、殆どの場合、「英単語」であったり「固有名詞」であったりするので、カタカナの連続の語を取得するのはとても便利な文字の解析であると思う。

youtubeなどの動画サイトの再生速度を変える。倍速低速再生

youtubeHTML5になったので再生速度を変えられる。

video 要素には playbackRate があるのでコレを使えば結構早く再生できる

1.3倍速

var v = document.querySelector('video')
a.playbackRate=1.3

0.8倍速

var v = document.querySelector('video')
a.playbackRate=0.8

これで大抵の動画サイトで再生速度を変更できる。便利じゃんコレ。

まぁyoutubeはプレイヤーから変えられるんだけどな。

CPU の温度を取得する( sys )

CPUの温度を取得する。

sys ファイルシステムから取得することが出来る。

$ cat /sys/class/thermal/thermal_zone0/temp
63

コマンドをインストールしなくても良いのは便利

関連資料

raspi はこちら

RaspberryPiの温度を調べる - それマグで!

Linuxのwifiと有線のネットワーク優先度を決めたい

eth0 / wlan0 のプライオリティを決めたい

ネットワークで遊んでると、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

vim のモードラインでvim設定(タブなど)をファイルの先頭に書く / vim mode line

目次

expand タブしてたら怒られたよ。。。

みんなタブ文字使うんですね。わたしは、いつの頃からか、タブ文字じゃなくてスペースを使うように変わりました。

たぶん、ブログなどにコードをコピペするようになってからとくにその傾向が顕著になったような気がする。

あとHTMLやCSSの激しいネストでタブインデント幅を2にしてたとき、タブ文字表示が鬱陶しかった。というのもある。

スペースに変換してexpand tab で生活してたらチームやるときに、怒られた。。。

vim モードラインで設定する。

editor.config でグーローバルに指定されるのもあまりうれしくないので、自分のファイルはモードラインを使うことにした

vimモードライン(modeline)とは

ファイルの先頭の中のコメントに、vimの設定を書いておいて、ファイルタイプやタブの設定インデントの設定を固定するもの。モードラインという名前がふわっとしてて、よく使う単語なので、なかなか覚えられない。モードライン (mode line / modeline )の単語が思い出せず何度ググったことか

要は、ファイルごとにVimの設定を変えられる特殊な書き方

書き方

// vim:set expandtab set XXX :

: config ::でくくる

これで、vim の modeline / mode line を書くことができる。

vim モードラインの例

こんなのは習うより慣れろ。

expandtab の要請

// vim:set expandtab :

ファイルタイプをJSONで認識させる

// vim:set ft=json : 

折り返しを無効にする

// vim: nowrap : 

インデントの文字数を設定する

// vim: shiftwidth=2 : 

タブ幅を変える

// vim:tabstop=4 :

よく使う例 nginx

nginx

# vim : set ft=nginx shiftwidth=2 expandtab nowrap tabstop=2 :

php.ini

; vim: ft=dosini ts=2 sw=2 sts=2 sr noet:

とくに、 /etc の設定ファイルで大活躍する。

よく使う例 ini ファイル

# vim : set ft=dosini :

ft=ini じゃなくて ft=dosini じゃないとだめ

モードライン(mode line)

わざわざブログに残すほどのことでもないんだけど、モードラインという言葉をいつも忘れるので、モードライン(modeline)と幾度も書けば覚えていられると思ったのでメモ。

活躍する場所

個人的には、Linux の etc で大活躍してます。設定ファイルの書式はアレコとマチマチだったりするし、自動認識が上手く動かなかったり。nginx や apache のconf だったり、railsunicorn の設定が.conf なのに ruby ファイルだったり。 .xxxrcなのにJSONだったり。そういうときに活躍してる。

参考資料

モードラインを使って、ファイルごとにvimエディタのオプションを指定する。 — 名無しのvim使い

2018/08/21

モードラインが mode line や modeline で検索にマッチしないので、キーワードをバンバン書いた

nkfでフォルダ内のファイルをぱぱっとShiftJIS(CP932)からUTF-8に変換する

cp932まだ絶滅しない。

CP932はいつまで生き残るんですかね。。。ファイル名だけならまだ我慢するけどファイルの中身もとなると結構しんどいですよね・

フォルダ内の txt ファイルの文字コードを表示する

$ ls  **/*.txt | xargs -I@ nkf -w -g @
Shift_JIS
Shift_JIS
Shift_JIS
Shift_JIS
CP932
Shift_JIS
Shift_JIS
Shift_JIS
Shift_JIS

あー、、、もうね・・・

全部まとめてUTF-8にする

$ 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 楽だわー

関連資料 nkf 使い方

文字コード変換コマンドの nkfの使い方と実例をまとめました。 - それマグで!

radikoの地域判定がオカシイので、SSH経由で再生する

radikoのIPベースの地域判定が残念

MBSラジオを聞きたいのの、東京判定されちゃって悲しいときは結構ある。 WiFi借りてたり、テザリングしてたりすると特に・・・・スマホで聴くのは不便だし

そうだよ。SSH経由で再生しちゃえば楽じゃん

ssh myserver 'rtmpdump アレコレ --output - ' | mplayer - -cache 128

ssh 経由なら確実だ。

自宅に置いておいたSSHサーバーは地域判定をそう簡単に失敗しないので、これでいけるよね。SSHのパイプ転送便利!

VPNとか面倒くさいもんね。

mac で手っ取り早くm3u8を再生する(らじる)

Safari起動するのも面倒くさい

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に丸投げする的な意味で同じかなーって思う

pythonのリスト内包表記でネスト

list comprehensions で ネストしたい

for for をしたいなと思った。

data = [[ 3 ], [4] ]
[ e for row in data  for e in row ]

ネストと if 文

data = [[ 3 ], [4] ]
[ e for row in data  for e in row if e %2 ==0  ]

楽しい。 filter も map も要らない。list comprehensions 便利。