- 投稿日:2020-07-02T23:44:13+09:00
FcitxとZoomを共存 ~日本語化を添えて~
この記事はFcitxとZoomを共存させようと初心者が奮起し、成功した覚え書きです。
ご存じのようにFcitxを使用中の環境にZoomをインストールすると、Zoomがibusを連れてきて、Fcitxが使えなくなりますが、
ZoomとFcitxの共存に成功しました。 (一部機能は使えませんが)
使用中の環境はDebianとArchですが、ここではDebianのみ書いておきます。(Archでも同じようにすることは可能)$ uname -a Linux kali 5.6.0-kali2-amd64 #1 SMP Debian 5.6.14-2kali1 (2020-06-10) x86_64 GNU/LinuxFcitxのインストール
一応書いておきます。
Debian(系)でのFcitxインストール方法
$ apt install fcitx fcitx-mozc (fcitx-qt5)あとは、
input-method
でfcitxを選択して、fcitx-configtool
で設定するだけ。Zoomのインストール
Fcitx関係なしに、通常のZoomインストールを書いておきます。
Debian(系)でのzoomインストール方法
$ dpkg -i zoom_amd64.deb $ apt -f install共存化するためには
同じ環境にインストールされてしまうという現象を回避するには、仮想化すればいいと
いうことで使うのはdocker
です。
ということでインストールしていきます。Debian(系)でのdockerインストール方法
$ apt install docker.io (docker-ce) $ gpasswd -a {user} docker $ systemctl start docker.service使用頻度が高ければ
systemctl enable docker.service
も入れておくと便利docker hub にmdouchement/zoom-usがあるのでこれを使います。
DockerにZoomをインストールする
まずはドキュメント mdouchement/zoom-us を参考にして
pull
$ docker pull mdouchement/zoom-usドキュメントをこのまま進めても起動には何の問題もないのですが、このままでは日本語フォントが入っていないので
日本語がすべて豆腐になります。
なのでGithubからファイルを落としてきます。~/Download$ git clone https://github.com/mdouchement/docker-zoom-us
日本語フォントをインストールするように
Duckerfileを書き換え
pulseaudi
のあとに使いたいフォントを入れます。
今回はfonts-noto-cjk-extra
を入れてますが、一部反応しないフォント有? cjk-extraは使えるので困ったらこれで。docker-zoom-us/Dockerfile$ vim docker-zoom-us/Dockerfile # References: # https://hub.docker.com/r/solarce/zoom-us # https://github.com/sameersbn/docker-skype ---省略--- libxcb-keysyms1 libxcb-xtest0 ibus ibus-gtk \ libnss3 libxss1 xcompmgr pulseaudio `fonts-noto-cjk-extra` ARG ZOOM_URL=https://zoom.us/client/latest/zoom_amd64.deb # Grab the client .deb ---省略---書き換えたファイルを元に
build
~/Download$ docker build -t mdouchement/zoom-us docker-zoom-us
mdouchement/zoom-us
のところは自分で名前を設定することが可あとは
run
$ docker run -it --rm --volume /usr/local/bin:/target mdouchement/zoom-us:latest installこれで終わり...ですが、
ZoomとFcitxの共存に成功しました。 (一部機能は使えませんが)
と書きましたができないのは日本語入力です。入力メゾットを入れて動くのか、どうしたらいいのか全くわかりません(泣)
小ネタ(?)
Zoomをインストールして、いざ使おうとすると
「ん? なんかUIでかくね??」なんてことがありました。
それも修正できたので書いておきます。 まあ、Zoomのconfig
いじるだけなんですが元のconfigがこれ↓ですが、
~/.config/zoomus.conf[General] GeoLocale=system SensitiveInfoMaskOn=true asBarTopMargin=30 autoPlayGif=false autoScale=true bForceMaximizeWM=false blockUntrustedSSLCert=false captureHDCamera=true chatListPanelLastWidth=230 conf.webserver=https://zoom.us currentMeetingId= deviceID= enable.host.auto.grab=true enableAlphaBuffer=true enableCloudSwitch=false enableLog=true enableMiniWindow=true enableQmlCache=true enableScreenSaveGuard=false enableStartMeetingWithRoomSystem=false enableTestMode=false enableWaylandShare=false fake.version= flashChatTime=0 forceEnableTrayIcon=true forceSSOURL= host.auto.grab.interval=10 isTransCoding=false logLevel=info newMeetingWithVideo=true playSoundForNewMessage=false scaleFactor=1 sso_domain=.zoom.us sso_gov_domain=.zoomgov.com system.audio.type=default upcoming_meeting_header_image= useSystemTheme=false userEmailAddress= [AS] showframewindow=true [CodeSnippet] lastCodeType=0 wrapMode=0 [chat.recent] recentlast.session= [zoom_new_im] is_landscape_mode=false main_frame_pixel_pos_narrow="376,680" main_frame_pixel_pos_wide="810,680"大きいと感じたら6行目の
autoScale
をfalse
にするだけで小さくなります。
いらないとは思いますが使ってみたかったのでDockerfile
とzoomus.conf
をGit hubにあげておきます。~/Download$ git clone https://github.com/fzmyshion/zoom_jp_conf
Dockerは初めてだったので、なにか良い方法か、別の方法があるよ!って時はそっと教えてくださるとありがたいです。
- 投稿日:2020-07-02T21:57:31+09:00
Pulseaudio上のSteam/Discord/任意のチャットでノイズが入る問題への対処
たぶんChromium系のエンジンを使っているとダメ。Electronとかもダメ。
どこのバグなのか分からないですが、以下の設定を導入してpulseaudioを再起動すると直ったので、備忘録しておきます。調査したPulseaudioのバージョン: 13.0
以下のようにしてリングバッファのサイズを小さく変更します。
/etc/pulse/daemon.confdefault-fragment-size-msec = 2さらに、以下のように設定を変更してタイマーベースの動作からポーリングベースへ変更します。
/etc/pulse/default.paload-module module-udev-detect tsched=0設定ファイルの変更後、
pulseaudio -k
してPulseaudioを再起動します。手元の環境ではこれで直りました。
- 投稿日:2020-07-02T18:26:07+09:00
Ubuntu/LinuxノートPCのWiFi問題
ことの発端
Ubuntu 18.04LTSのGUIの設定からWi-Fiが利用できないことに気がついた。
「No Wi-Fi Adapter Found」「Wi-Fiアダプターが見つかりません」と表示されてしまうのである。
Bluetoothの欄を見てみても同様に、Bluetoothデバイスが見つからない旨のメッセージが出る。
しばらく有線接続をしていたから、いつからそうなったのかはわからなかった。調べてみると同じようなトラブルは多く発生しているみたいだが、原因が複数ありトラブルシューティングの方法がかなり多岐にわたることがこの問題を厄介にしているようだ。
この投稿では、原因を確認するためにコマンドをうち、症状別にどのような回復方法を行うべきなのかをまとめておく。
誰かの参考になれば幸いだし、自分の環境ではこうだったというコメントも嬉しい。トラブルシューティング
- AirPlaneモードではないか?
- 判断基準
- Ubuntu上部のメニューバーに飛行機✈マークが出ている
- 「設定」の「Bluetooth」に明確に機内モードであることが書いてある
- 回復手段
- 「設定」の「Bluetooth」から機内モードを切る
- Wi-FiがOFFになっていないか?
- 判断基準
- 「設定」の「Wi-Fi」を開いたとき、ウィンドウ上部のトグルスイッチが「OFF」になっている
- ターミナルで
$ rfkill list
コマンドを打つと、SOFT
の列がblocked
になっている- 回復手段
- 「設定」の「Wi-Fi」ウィンドウの上部のトグルスイッチをクリックして「ON」にする
- ターミナルで
$ rfkill unblock wlan
と打つ- キーボードのWirelessキーが押されていないか?
- 判断基準
- ターミナルで
$ rfkill list
コマンドを打つと、HARD
の列がblocked
になっている- ターミナルで
$ rfkill list bluetooth
コマンドを打つと何も出ない- 「設定」を開くと、Wi-FiもBluetoothもデバイスが見つからないと出る
- トグルスイッチを「ON」にしても戻ってしまう
- 回復手段
- キーボードのWirelessキーを探して打つ
- 私の場合はこれだった。DELL XPS 13ではFnキーと一緒にPrtScrキー
- ノートPCのメーカー・型番によって、Wirelessキーのマークも位置もかなり異なる
- BIOSレベルで無効になっていないか?
- 判断基準
- BIOS画面からWi-Fi、Bluetoothの設定を確認する
- BIOSの画面構成はPCによって異なるので自分のPCに合わせて調べる
- 回復手段
- 「Disable」になっているなら「Enable」にする
- デバイスドライバが無いのではないか?
- 判断基準
- ターミナルで
$ ip link show
と打ちWi-Fiデバイスの名前(logical name)を確認する
- wlan0、wlp1s0などの名前が自動で付けられている
- MACアドレスで区別しても良い
- ターミナルで
$ sudo lshw -C network
と打ち、該当するnetworkのconfiguration
にdriver=hoge
となっていないか確認する- Wi-FiモジュールがPCIデバイスとして認識されている場合、
$ lspci -nnk
でも使用中のデバイスドライバ名が確認できる- 回復手段
driver=hoge
となっていない場合
- lshwコマンドで確認したときの
product
を手がかりにデバイスドライバを探す- RealtekのrtlXXXXシリーズはgithubなどからコンパイルしてインストールする
- BUFFALO WI-U2-433DMSはRealtek用のこのデバドラで利用できた
- Broadcomのbcmシリーズは
$ sudo apt install bcmwl-kernel-source
でインストールするdriver=hoge
となっている場合
- ターミナルで
$ modinfo hoge
と打ちデバイスドライバの情報を確認する- ターミナルで
$ nmcli connection
を打つ
- 利用したいWi-FiのSSIDが表示されない場合は設定からWi-Fiネットワークの設定を行う
- ターミナルで
$ nmcli device
を打ちデバイスの名前を手がかりにSTATE
を確認する
connected
ならばWi-Fiに繋がっているはず$ dmesg | less
や$ nano /var/log/syslog
といったコマンドを使い、エラーメッセージが出ていないかを目視で確認する
- 投稿日:2020-07-02T15:05:06+09:00
今日の月齢を絵文字で表示するシェルスクリプト
Unicode絵文字が表示可能なフォントが設定されたターミナル上で実行すると、本日のおおよその月齢を計算して対応する絵文字を出力するシェルスクリプトです。
moonage.sh#!/bin/bash year=`date +%Y` month=`date +%m` date=`date +%d` #簡易月齢計算法第1表 array=(0 2 0 2 2 4 5 6 7 8 9 10) #西暦年数から11を引き、その値を19で割った余りを求め、11を掛ける。この値をaとする。 a=$((($year-11)%19*11)) #月数から、表に従って値を求める。この値をbとする。 b=$((${array[$(($month-1))]})) age=$((($a+$b+$date)%30)) if [ "$age" = 0 ] || [ "$age" = 29 ]; then echo -n "?新月" elif [ "$age" -ge 1 ] && [ "$age" -le 6 ]; then echo -n "?三日月" elif [ "$age" -ge 7 ] && [ "$age" -le 9 ]; then echo -n "?上弦の月" elif [ "$age" -ge 10 ] && [ "$age" -le 13 ]; then echo -n "?十三夜月" elif [ "$age" -ge 14 ] && [ "$age" -le 15 ]; then echo -n "?満月" elif [ "$age" -ge 16 ] && [ "$age" -le 20 ]; then echo -n "?寝待月" elif [ "$age" -ge 21 ] && [ "$age" -le 24 ]; then echo -n "?下弦の月" elif [ "$age" -ge 25 ] && [ "$age" -le 28 ]; then echo -n "?二十六夜月" fi echo "(月齢:"$age")"実行結果
~% chmod +x moonage.sh ~% date 2020年 7月 2日 木曜日 14:47:54 JST ~% ./moonage.sh ?十三夜月(月齢:11)参考にしたサイト
月齢 - Wikipedia
月齢計算
Googleカレンダーに月齢を表示する
- 投稿日:2020-07-02T13:13:52+09:00
iperf でネットワークパフォーマンス測定
事前説明
iperfとは、serverとclientでトラフィックを受け渡し、どれだけのトラフィックが流れたかを確認するツール。
iperf用のserverとclientを立てて、その間をプロトコルを指定して通信させながらスループットを測定する。
異なるOS間での測定も可能(これが便利)。環境
今回は二つのPCの間にswiching hubを置き、その間のスループットを測定した。
iperf version: 3.1.3
iperf server: Ubuntu server 18.04 LTS
iperf client: Windows10
switching hub: netgear GS105E目的
switching hubを挟んだ際の、2つのPC間のスループットを測る。
準備
下記のようなネットワークを作る。
実際の写真は以下のよう。
まだ、iperfにはバージョンがあり、バージョンが違うとスループットを測ることができない。
apt install iperf # version 2系 apt install iperf3 # version 3系実測
terminal$ iperf3 -scmd/pwd$ iperf3 -c 192.168.0.2server側、client側両方に詳細情報が出てくる。
例えば、client側のログはこんな感じ。cmd/pwdConnecting to host 192.168.0.2, port 5201 [ 5] local 192.168.0.10 port 54178 connected to 192.168.0.2 port 5201 iperf3: getsockopt - Protocol not available [ ID] Interval Transfer Bandwidth Retr Cwnd [ 5] 0.00-1.00 sec 108 MBytes 901 Mbits/sec 1296506930 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 1.00-2.00 sec 107 MBytes 898 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 2.00-3.00 sec 107 MBytes 899 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 3.00-4.00 sec 106 MBytes 893 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 4.00-5.00 sec 108 MBytes 911 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 5.00-6.00 sec 107 MBytes 898 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 6.00-7.00 sec 107 MBytes 896 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 7.00-8.00 sec 108 MBytes 902 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 8.00-9.00 sec 107 MBytes 895 Mbits/sec 0 0.00 Bytes iperf3: getsockopt - Protocol not available [ 5] 9.00-10.00 sec 108 MBytes 902 Mbits/sec 2998460366 0.00 Bytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 5] 0.00-10.00 sec 1.05 GBytes 900 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 1.05 GBytes 900 Mbits/sec receiver iperf Done.(補足) 今回、本当に知りたかったこと
目的として、netgear のスイッチでローカルポートミラーリングの際にスループットが低下しないかを実際に測定して確認したかった。
調べたら分かることなんだけど、運用していく上で本当にそこがボトルネックにならないか気になって仕方が無くなり、どうしても実地実験の結果が気になった。今回、switchにローカルポートミラーリングの設定をして、その先に実際にパケットを送ってもスループットが低下しなかった!
良かった。
- 投稿日:2020-07-02T11:22:18+09:00
Ubuntu(linux)でkeychainを使ってSSHのパスフレーズをいちいち聞かれないようにする
SSHでssh-agentとssh-addを使ってパスフレーズレスログインをしているとちょっと面倒なので
keychain
を使っていい感じにする。keychainのインストール
sudo apt-get install keychain設定
~/.bashrcや、~/.zshrcに下記の設定を追記する。
/usr/bin/keychain $HOME/.ssh/id_rsa source $HOME/.keychain/`hostname`-sh公開鍵がないと登録できないので、秘密鍵しかない場合は、SSHの秘密鍵から公開鍵を生成する方法を参考に公開鍵を生成する。
id_rsa
のような鍵名は適宜置き換える。使う
source .zshrc
- 投稿日:2020-07-02T11:14:02+09:00
SSHの秘密鍵から公開鍵を生成する方法
ssh-keygen -y -f ~/.ssh/id_ecdsa > ~/.ssh/id_ecdsa.pub秘密鍵がパスフレーズで暗号化されている場合はパスフレーズの入力を求めるプロンプトが表示されるので入力する。
- 投稿日:2020-07-02T01:25:47+09:00
シェルスクリプトでログローテートの世代管理を行う。
3世代残したい場合は、下記のスクリプトワンライナーでいけます。
(考え方としては、3世代残す→ファイル全部から残したい3世代以外のものを消すと読み替える)(時間的に古いものから消す場合)
ls -1rt | head -n -3 | xargs rm -rf(ログの文字列たとえばtestlog20200701等の日付の古いものから消す場合)
ls -1 | head -n -3 | xargs rm -rf
説明(ログの文字列から判断して古いものを消す場合)
1.ダミーのログを配置
# touch testlog2020070{1..9}2.確認
# ls -la
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200701
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200702
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200703
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200704
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200705
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200706
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200707
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200708
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog202007093.削除対象の抽出
20200707から20200709を残したい→(testlog20200701から20200706を削除したいと読み替える)
# ls -1 | head -n -3
testlog20200701
testlog20200702
testlog20200703
testlog20200704
testlog20200705
testlog202007064.抽出したログを削除
# ls -1 | head -n -3 | xargs rm -rf
確認
# ls -la
testlog20200707
testlog20200708
testlog20200709目的の3世代を残せました。
※)(時間的に古いものから消す場合)については、ls --1rtにて行うことで実現している。
オプションt 時間順番で並び替える
オプションr 逆に並べ替える
ログのローテートそのものは、Linux標準のlogrotate.dを使用して行い、削除部分のみをシェルスクリプトにて行うことを想定しています。
(logrotate.dの削除スクリプトはx日前という形で処理してあり、削除スクリプトがなんらかの理由で動かなかった場合にログが残ってしまう場合があるため)