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.

 

Ubuntu 20.04: iwlwifiの802.11nをオフにする

Ubuntu 20.04 の iwlwifi で802.11n(5GHz)が途切れるので2.4GHzに繋いで応急処置したのでメモ。

iwlwifiのバグなのか。
2.4GHzのアクセスポイントに繋いだら異常なし。

しばらく 802.11nはオフにしておく。
下記オプションを /etc/modprobe.d/iwlwifi.conf に追記して再起動。

options iwlwifi 11n_disable=1

参考URL:
networking – Ubuntu 20.04 LTS Intel 7260 Wireless – won’t connect to Wifi network – Ask Ubuntu

 

jqコマンドでJSONを操作

コマンドラインでJSONを操作するjqコマンドが便利なのでメモ。

まずは俺のUbuntuにインストール。

sudo apt install jq -y

 

1.必要な要素だけ取り出す

例えばAWSのIPアドレス一覧から 東京リージョンのEC2のIPレンジだけ抜き取りたい場合はこうする。

curl https://ip-ranges.amazonaws.com/ip-ranges.json |jq -r '.prefixes[]|select(.region=="ap-northeast-1")|select(.service=="EC2")|.ip_prefix'|sort -n > ip.txt

出力されたip.txtの中身はこうなる。

3.112.0.0/14
13.112.0.0/14
13.230.0.0/15
15.177.79.0/24
15.193.1.0/24
#以下略

何をやってるかというと、ip-ranges.jsonのprefixes要素の中にあるip_prefix要素にIPレンジが入ってる。

これをjqコマンドで取り出して、さらにjqのフィルタ機能を使う。
条件はregionがap-northeast-1で、serviceがEC2というもの。
さらに数値ソートしたものをip.txtに保存する。
 

2.CSVに変換する

CSV変換機能も便利だ。
これまた先のip-ranges.jsonを ip_prefix, region, service, network_border_group の順番ですべてCSV化するならこうだ。

curl https://ip-ranges.amazonaws.com/ip-ranges.json |jq -r '.prefixes[]|[.ip_prefix, .region, .service, .network_border_group]|@csv' > ip.csv

出力されたip.csvの中身はこうなる。

"35.180.0.0/16","eu-west-3","AMAZON","eu-west-3"
"52.94.76.0/22","us-west-2","AMAZON","us-west-2"
"52.95.36.0/22","ap-southeast-2","AMAZON","ap-southeast-2"
"120.52.22.96/27","GLOBAL","AMAZON","GLOBAL"
"150.222.81.0/24","eu-west-1","AMAZON","eu-west-1"

prefixes要素の中身を取り出して、
ip_prefix, region, service, network_border_group の順に配列したものを @csv コマンドでCSVにしている。
jq便利。

 

Hyper-V用の仮想ディスクイメージをKVMにインポート

Microsoftが無料で公開しているWindows10仮想マシンをKVMで動かしたのでメモ。

まずはMicrosoftのサイトからHyper-V用のイメージファイルをzipでダウンロード。

Virtual Machines – Microsoft Edge Developer
 

Hyper-V用のイメージを使う

 
zip内のVirtual Hard Disksというディレクトリの中にMSEdge – Win10.vhdxというvhdxファイルがあるので、これをqcow2に変換して使う。
他のファイルは不要。

ファイル名にスペースが入ってるのが気に入らないので適当にリネーム。
その後、qemu-imgコマンドでvhdxファイルをqcow2にコンバート。

$ qemu-img convert -O qcow2 win10.vhdx win10.qcow2

qcow2ファイルが出来上がったら、virt-manager(仮想マシンマネージャー)を起動して新しいVMを作成する。

[新しい仮想マシンの作成] > [既存のディスクイメージをインポート] を選んで進む。

既存のディスクイメージをインポート

そして、先程作成したqcow2ファイルをソースとして指定。
OSの種類はWindows10を選ぶ。
プルダウンが出て来ない、と思ったら「win」って入力したら出てきた。

qcow2ファイルの場所とOSの種類を指定

メモリとCPUの数を任意で変更して進めてインポート完了。

そして起動。

KVMでWin10を起動

パスワードは Passw0rd! で入れる。

KVM軽くて良い。

 

Ubuntu20.04にKVM環境を構築

Ubuntu20.04上にKVMを構築したのでメモ。

以前CentOS7上にKVMを構築した時のメモはこちら
 

1.KVMをインストール

まずは必要ツールをインストール。
今回はGUIのvirt-managerを使うのでインストールしておく。

sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager libosinfo-bin libguestfs-tools virt-top

続いてKVMを実行するユーザーをlibvirt関連グループに追加する。
orenomemo のところは実際のユーザー名に変える。

sudo adduser orenomemo libvirt
sudo adduser orenomemo libvirt-qemu

ここまで来たら一度OSを再起動する。
次はVMのインストールへ。
 

2.VMのインストール

今回はCentOS8をVMとしてインストール。
インストーラisoをダウンロードしておく。

そして仮想マシンマネージャー(virt-manager)を起動。

virt-manager

起動したら「新しい仮想マシンの作成」を実行。

新しい仮想マシンの作成

あとはインストールで使うisoファイルをローカルから指定して進めて行く。

インストールソースを指定

CentOSインストーラが起動したら、あとは普通にインストールすればOK.

CentOS8 installer

とても簡単。
VirtualBoxより軽くて快適。

 

Ubuntu 20.04 で背景を単色にする

Ubuntu 20.04 LTS (Focal Fossa) のデスクトップ背景をただの単色にしたのでメモ。

19.10の時もそうだったけど20.04もGnome設定の背景を画像から「色」にできない。

というわけで下記のコマンドで設定。
色は16進数のHTMLカラーコードで指定すればOK

gsettings set org.gnome.desktop.background picture-uri ''
gsettings set org.gnome.desktop.background color-shading-type 'solid'
gsettings set org.gnome.desktop.background primary-color '#6B818E'

Ubuntu 20.04 の日本語入力をfcitx-mozcにする

Ubuntu 20.04 LTS の日本語入力をfcitx-mozcに変えたのでメモ。

19.10の時と同じ方法で出来た。
Ubuntu 19.10の日本語入力をfcitx-mozcにする

しかし画面右上のメニューから「Mozcツール」が起動しない。

mozcツールが開かない

という訳でアプリケーションランチャーの中からMozcツールを起動。

ランチャーから起動

キーバインドを「ことえり」にして、いつもの使い勝手になった。

Ubuntu 19.10 でChromeがフリーズする場合の回避策

うちのUbuntu 19.10 で度々Chromeがフリーズするのでメモ。

どうやらグラフィック周りの問題なのか?
とりあえず起動したいので、コンソールからGPUを無効にして起動。

$ google-chrome-stable --disable-gpu

起動したら、[設定] > [詳細設定] > [システム] > [ハードウェアアクセラレーションが使用可能な場合は使用する] をオフにする。

[ハードウェアアクセラレーションが使用可能な場合は使用する] をオフ

あとは chrome://flags を開いて、[GPU rasterization] を [Disabled]にしてブラウザを再起動。

GPU rasterization を無効化

これでChromeが固まる事はなくなった。

Amazon FireHD8からUbuntuにVNC接続して外付けモニタ代わりにする

VNCを使ってFireHD8タブレットをサブモニターにしたのでメモ

参考にしたのはここ。
Ubuntu 18.04 で Kindle Fire HD をサブディスプレイとして使う方法

まずはUbuntu 19.10に必要なツールをインストール。

sudo apt install -y tightvncserver x11vnc

うちのPCはAMD Ryzen搭載マシンなので、/usr/share/X11/xorg.conf.d/10-radeon.conf を編集する。

#/usr/share/X11/xorg.conf.d/10-radeon.conf
Section "OutputClass"
	Identifier "Radeon"
	MatchDriver "radeon"
	Driver "radeon"
	Option "VirtualHeads" "2" #追加
EndSection

ここで一旦ログアウトのち再ログインする。

続いてxrandrでディスプレイの確認。

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 173mm
#中略
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)

上記出力で言うと eDP がメインのモニタで DisplayPort-1 がサブモニタになる。

続いて gtf コマンドで Modeline設定を取得

$ gtf 1280 700 60

  # 1280x700 @ 60.00 Hz (GTF) hsync: 43.50 kHz; pclk: 72.38 MHz
  Modeline "1280x700_60.00"  72.38  1280 1336 1472 1664  700 701 704 725  -HSync +Vsync

このModelineの右側に出ている “1280x700_60.00” 72.38 1280 1336 1472 1664 700 701 704 725 -HSync +Vsync をこのあと使う。

そして xrandr でディスプレイを追加

$ xrandr --newmode "1280x700_60.00"  72.38  1280 1336 1472 1664  700 701 704 725  -HSync +Vsync
$ xrandr --addmode DisplayPort-1 1280x700_60.00
$ xrandr --output DisplayPort-1 --mode 1280x700_60.00 --left-of eDP

これでモニタの左側にもデスクトップスペースが出来上がる。
そして x11vnc を起動して待ち受ける。

$ x11vnc

あとはこれにFireHDからVNC接続するだけ。

俺は VNC Client Free を使ってる。

VNC Client FreeからこのPCのの5900番ポートに接続すればOK。
画面小さいけどslackの画面を出しておきたい時に重宝してる。