Ubuntu: Amazon basics のUSB3.0イーサネットアダプタで爆速通信

Ubuntu 20.04でUSBイーサネットアダプタ繋いだのでメモ。

Ubuntu20.04でWifi5G(802.11n)の通信が途切れるので2.4GHzで接続してたけど遅い。

で、俺のHuawei製ノートPCにはイーサネットポートがないのでUSBイーサネットアダプタを買ってきた。

買ったのはこれ。

Amazonベーシック インターネットアダプター USB 3.0から10/100/1000ギガビット イーサネット

Amazon basics USB3.0 ethernet adapter

商品名がアレですが、レビューを見たら “Works fine on Linux + BSD“というコメントがあったので信じた。

LANケーブルと一緒に買って、繋いだら即認識。

いざ接続

lsmod で見たら、ax88179_178a というドライバモジュールをロードしてくれてた。

Wifiをオフにして通信できるのを確認。

Connected!

それから fast で速度計測したらいい速度出てる。

fast!

Ubuntuでも使えるAmazonベーシックのUSBイーサネットアダプタおすすめです。

 

Ubuntu: OpenJSK 8 をインストール

Ubuntu 20.04にOpenJDK8をよくインストールするのでメモ。

まずはaptでインストール。

$ sudo apt install openjdk-8-jdk -y

インストール後、/etc/environment に環境変数JAVA_HOMEをセット。

#/etc/environment
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

sourceコマンドで読み込めばOK。

$ source /etc/environment

 

Ubuntu: NginxでリバースプロキシとSSL

Ubuntu 20.04でNginxでリバプロとSSL設定をよく行うのでメモ

まずはnginxとcertbotをインストールする

$ sudo apt install nginx certbot python3-certbot-nginx -y

続いてLetsEncryptの証明書を取得

$ sudo certbot --nginx -d hoge.example.com

諸々質問に答えてSSLインストール完了。

そして リバプロ設定を /etc/nginx/sites-available/default に記入する。
しかし、以降certbotが証明書更新をする時にはHTTP80番ポートを使って更新するので、リバプロ設定はSSL443番だけにしておいた。

server {
    #80番用
    listen 80;
    server_name _;
    #中略
}

server {
    #443番用
    listen 443 ssl;
    server_name hoge.example.com;

    location / {
            proxy_pass http://localhost:8080;
            proxy_pass_request_headers on;
    }
    #以下証明書設定など
    #
}

そしてnginxを再起動

$ sudo systemctl restart nginx

これでHTTPはそのままnginxのhtmlコンテンツを見せて、HTTPSの443番だけをlocalhost:8080に転送する。
 

Ubuntu: datamash コマンドでCSVを縦横変換

コマンドラインでCSVを縦横変換出来るdatamashコマンドが便利なのでメモ。

まずはインストール。

$ sudo apt install datamash -y

CSVファイルを用意する。

1,2,3
hoge,fuga,piyo
foo,bar,baz

datamashコマンドを実行。

$ cat tmp.csv | datamash transpose -t,

1,hoge,foo
2,fuga,bar
3,piyo,baz

縦横が入れ替わって出力される。

列数が不揃いな場合は、 –no-strict オプションを使えば足りないカラムは N/A という文字で埋めてくれる。

Node.js Express でPOST本文のRawBodyを取得する

Node.js + Express で、POSTされてきたフォームの本文をそのまま取得したかったのでメモ。

body-parserのverify:rawBodySaverオプションを使う必要がある。

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

let rawBodySaver = function(req, res, buf, encoding) {
  if (buf && buf.length) {
    req.rawBody = buf.toString(encoding || 'utf8');
  }
};

app.use(bodyParser.json({verify: rawBodySaver}));
app.use(bodyParser.urlencoded({verify: rawBodySaver, extended: true}));
app.use(bodyParser.raw({verify: rawBodySaver, type: '*/*'}));

app.use(function(req, res){
    console.log(req.rawBody); //rawBody
    res.send(req.rawBody); //rawBody
});

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
    console.log('App Running...');
});

そのまま生のBody本文使う需要なんかないんだろうな。

JSON変換のサンプルはゴロゴロ見つかったが。

Ubuntu: ヘッドセットのマイクが動作しないので SoundBlaster Play! 3 で解決した

リモートワーク用にヘッドセット買ったんだがマイクが認識されない。

PCには3.5mmピンジャックのマイク・ヘッドホン兼用端子が一個あるのみ。
そこにヘッドセットを指すと、ヘッドホンは認識されるけどマイクがPCマイクのまま。

ヘッドセットのマイクが認識されない

“ubuntu headset input not working”でググって、PulseAudio設定やhdajackretaskでピンジャックの設定いじったけど解決せず。

sound – Microphone is not working on Ubuntu 16.04 – Ask Ubuntu

linux – Headset microphone not detected by Pulse und Alsa – Super User

というわけでPCの兼用端子を使うのは諦めて、SoundBlaster Play! 3 というUSBオーディオアダプタ買ったら一発で解決した。
解決したどころか音声もよくなったw

SoundBlaster Play! 3

繋げたら一発で認識された。
音声入力もちゃんと反応します。

SoundBlaster Play3 繋げたら一発で認識

ただしヘッドセットの3.5mmプラグを音声入力と出力の二股に分けて、それをUSBオーディオアダプタ経由で繋ぐので見た目は悪い。

二股分岐からのUSB接続

見た目はともかく、これでUbuntuを使ったリモートワークにおいて質の高いWeb会議が出来る。

Emacs のテーマを変更

昔は color-themes をインストールしてたけどもういらないのでメモ。

load-themesでカスタムテーマをロードすればOK

M-x load-theme RET
テーマ名

デフォルトのテーマを変更したい場合は init.el に書いておく。
例えば tango-dark ならこう。

(load-theme 'tango-dark t)

 
テーマ一覧はここで見た。

Emacs Theme Gallery

Githubのリンクがないものはデフォルトで入ってる。

で、上記で見た solarized-dark というテーマが良さそうなので試したいが、デフォルトにはないのでインストールする。

 
インストールにはpackageを使うので、下記設定をinit.elに書いておく。

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
(add-to-list 'package-archives  '("marmalade" . "https://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(package-initialize)

それからpackage-list-packagesで solarized-theme を探してインストール。
3種類あったのでmelpaのものを選んだ。

M-x package-list-packages RET
solarized-theme をインストール

これで solarized-dark と、solarized-light という2つのthemeが使えるようになる。

Ubuntu 20.04: Cinnamonをインストール

Gnome3が使いづらい&もっさりするのでCinnamonに変えたのでメモ。

まずはインストール。

sudo apt install -y cinnamon-desktop-environment

インストールしたら再起動。

再起動後、ログイン画面でユーザーを選択後、
右下の『ギア』型のアイコンをクリックして、[Cinnamon]を選択してからログイン。
これでCinnamonデスクトップ環境になる。

あと、パネルの時計フォーマットに日付と曜日を入れたいので、
カスタムフォーマットで

%Y/%m/%d %a %H:%M

を指定する。

ワークスペースの切り替えショートカットはこれ。

  • Ctrl + Alt + ←/→ でワークスペース1〜4に切り替え
  • Ctrl + Alt + ↑ でワークスペースのグリッド表示
  • Ctrl + Alt + ↓ でワークスペース内のウインドウ一覧表示

Emacsで行末の^Mを除去

Windowsで作ったテキストファイルの改行コードCR(^M)をEmacsで除去したのでメモ
replace-stringコマンドで「C-q C-m」を除去すればいい。

M-x replace-string ⏎
C-q C-m ⏎
⏎

たまに忘れる。
 

EmacsからPostgreSQLに接続

EmacsからPostgreSQLに接続したら楽だったのでメモ

Emacsを起動後、sql-postgresコマンドでサーバーに接続

M-x sql-postgres

ユーザー名・データベース名・サーバーを入力して接続。
.pgpassファイルを作っておけばパスワード入力しなくて済む。
.pgpassのパーミッションは600にしておく。

#~/.pgpass
localhost:5432:データベース:ユーザー:パスワード

別バッファで.sqlファイルをsql-modeで開く。
構文ハイライトがデフォルトでansiなので、これをsql-set-productコマンドを使ってpostgresに変える

M-x sql-set-product ⏎
postgres

そしてバッファとSQLコネクションをsql-set-sqli-bufferコマンドで関連付ける。

M-x sql-set-sqli-buffer

「*SQL*」というバッファがあるのでそれを選ぶ。
つながったら「C-c C-r」でリージョン内のクエリを実行出来る。

バッファ内ののクエリをまるごと実行するなら「C-c C-b」でOK.
 
おまけ
SQLを編集する際に自動でインデントしてくれたら楽だな、と思ったらsql-indentてのがあったので入れた。

M-x package-install ⏎
sql-indent

init.elに設定を追記

(eval-after-load "sql"
  '(load-library "sql-indent"))

あと、sql-set-productも自動でやってしまえば楽なのでその設定もinit.elに追記

(defun sql-mode-hooks()
  (sql-set-product "postgres"))
(add-hook 'sql-mode-hook 'sql-mode-hooks)