メインコンテンツまでスキップ

termux に powerline をインストールする

· 約1分
ひかり
Main bloger
pkg install golang

powerline のインストール

あとは、Powerline のインストール方法とほぼ同じ

go get -u github.com/justjanne/powerline-go

.profile に設定

~/.profile を開き、以下を追加する。

GOPATH=$HOME/go
function _update_ps1() {
PS1="$($GOPATH/bin/powerline-go -newline -error $?)"
}
if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

フォントの設定

例として、yuru7/PlemolJP をインストールする。

wget https://github.com/yuru7/PlemolJP/releases/download/v0.4.0/PlemolJP_NF_v0.4.0.zip
unzip PlemolJP_NF_v0.4.0.zip
cp PlemolJP_NF_v0.4.0/PlemolJP35Console_NF/PlemolJP35ConsoleNF-Medium.ttf $HOME/.term
ux/font.ttf
rm PlemolJP_NF_v0.4.0 -rf
rm PlemolJP_NF_v0.4.0.zip

termux に ssh する

· 約1分
ひかり
Main bloger
pkg install openssh

エラーが出る場合

Android 版の termux で実行するとエラーが起こるので、 既存の termux を削除し Github から termux をインストールすることをおすすめします。

サーバーの起動

sshd

公開鍵の設定

クライアントの公開鍵 (~/.ssh/id_*.pub) を termux の ~/.ssh/authorized_keys に追加する。

公開鍵はメールで自分宛てに送ったり、twitter の DM で自分宛てに送ったりして、コピペすると楽。

# 例:
echo ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKYztjZfIVMl5o0J2DrigTsl1XgbSKMUgYCpfOfhMtmw hikari@B450M-K >> ~/.ssh/authorized_keys

ログイン

# スマホの ip アドレスを確認
ip a

ssh 192.168.x.x -p 8022

Windows の OpenSSH でパスワード認証を無効にする

· 約1分
ひかり
Main bloger

管理者権限でターミナルを開く

設定ファイルを編集するために管理者権限が必要なため、管理者権限でターミナルを開く。

ターミナルのアイコンを右クリックして、ターミナルを右クリックして、「管理者として実行」

image

image

ターミナルで設定ファイルを開く

notepad C:\ProgramData\ssh\sshd_config

を実行。

image

設定ファイルを編集

- # PasswordAuthentication yes
+ PasswordAuthentication no

image

image

に変更し上書き保存する。

SSH サーバーの再起動

ターミナルに戻り、以下のようにコマンドを実行し、SSH サーバーを再起動する。

Restart-Service sshd

接続テスト

設定が有効になっているかテストする。

ssh localhost

を実行し、

user@localhost: Permission denied (publickey,keyboard-interactive).

のようになっていれば OK

SSH トンネル

· 約3分
ひかり
Main bloger

ローカルポート転送

ssh -L [クライアントのポート]:[転送したいホスト]:[転送したいホストのポート]

クライアント A、SSH サーバー B、転送ホスト C があり C:8080 を A のポート 80 に転送したい場合。

ssh -L80:C:8080 B

この転送で、A から http://localhost へアクセスすると、 B の http://C:8080 と同じ内容が表示される。

まとめると、 A から C は見えなくても、A から B へ SSH が接続でき、 B から C が見える場合、B を経由して C のポートを A へ転送可能。

-g をつけると、A のホスト名で A のネットワークにあるパソコンから C:8080 へアクセスができる。

家のネットワーク上にあるポートを外部に転送したいとき、 とりあえず 22 番だけ外部に開放している状態であれば、 ssh 経由で家のネットワークにアクセス可能。

リモートポート転送

ssh -R [クライアントのポート]:[転送したいホスト]:[転送したいホストのポート]

ローカル転送と異なり、 接続先から見えるポートを転送するのではなくクライアント側から見える ポートを転送する。

クライアント B、SSH サーバー A、転送ホスト C があり C:8080 を A のポート 80 に転送したい場合。

ssh -R80:C:8080 A

この転送で、A から http://localhost へアクセスすると、 B の http://C:8080 と同じ内容が表示される。

B が外からアクセスできない場合でも、 B と A の接続を確立させれば、 C の内容を A に転送可能。 B を直接操作できない場合に使うことが多く、 B と A の接続が切れるトラブルが発生した場合、A から C へのアクセスが不可能になるので、B と A の接続が切断された場合に自動的に再接続するツール autossh が使われることが多い。

Powerline のインストール方法

· 約1分
ひかり
Main bloger

Go のインストール

powreline-go のインストールのために Go をインストールする。

brew install go

Powerline-go のインストール

go get -u github.com/justjanne/powerline-go

設定

Bashrc

Vim とか nano とかで ~/.bashrc を開き、以下を追加する。

GOPATH=$HOME/go
function _update_ps1() {
PS1="$($GOPATH/bin/powerline-go -newline -error $?)"
}
if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

source ~/.bashrc を実行すると変更が適応される。

フォント

一応これで終了だが、文字化けする場合がある。 Powerline に対応したフォントを設定する必要がある。 Windows では、Cascadia Code PL とか、Cascadia Mono PL とかが使える。

おすすめは、https://github.com/yuru7/PlemolJP/ の PlemolJP。 ダウンロードは、 https://github.com/yuru7/PlemolJP/releases の PlemolJP_NF_vX.X.X.zip をクリックし、ダウンロードし展開してフォントをインストール。 フォントの設定は、PlemolJP35 Console NF とする。

Arduino で delay() を使わない

· 約1分
ひかり
Main bloger

Arduino で delay() を使うと、待機時間中に何もできない。 millis() を使用した 1 秒周期の LED 点滅するプログラムを作った。

  1. millis() で時間を取得し時間で割って、t に代入
  2. 前回の t と新たな t を比較して異なる場合に関数を実行

unsigned long t = 0, ot;

void setup(){
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
ot = t;
t = millis() / 500;
if(ot != t){
if(t % 2){
digitalWrite(LED_BUILTIN, LOW);
}else{
digitalWrite(LED_BUILTIN, HIGH);
}
}
}

モニター無しで Raspberry Pi のセットアップ

· 約2分
ひかり
Main bloger

モニター不要で Raspberry Pi のセットアップ方法の説明。

  • 有線での接続が必要なため、LAN ケーブルを接続できる Raspberry Pi 端末であること
  • Raspberry Pi を操作するためのパソコンが必要

Raspberry Pi Imager をインストールし、OS を選択。書き込み先の micro SD を選択し、WRITE で書き込む。

Raspberry Pi Imager

設定

SSH の有効化

SSH を有効にすることで外部から Raspberry Pi の操作が可能

micro SD カードを挿し直し、直下に ssh という名前でテキストファイルを作成。拡張子は不要。

Raspberry Pi enable SSH

VNC の有効化

config.txt を開き、

framebuffer_width=1280
framebuffer_height=720

のコメントを外し上書き保存。

Raspberry Pi enable VNC

起動

micro SD カードを Raspberry Pi に挿し、電源を接続し起動する。

SSH で接続

ホスト名は raspberrypi、ユーザー名は pi、パスワードは raspberry で接続

Raspberry Pi connect SSH

パッケージの更新

sudo apt update
sudo apt upgrade -y

VNC の有効化

sudo raspi-config

Raspberry Pi config

3 Interface Options を選択し、P3 VNC を選択し、YES。Finish で閉じる。

VNC で接続

Raspberry Pi VNC viewer

ユーザー名、パスワードは SSH のときと同様。

Raspberry Pi VNC connected

Wi-Fi の有効化

VNC から Wi-Fi を有効にすることで有線接続が不要となり、電源のみで Raspberry Pi を操作することが可能。

Webrick で rbenv 経由でインストールした Ruby の CGI が動かない場合の対処法

· 約1分
ひかり
Main bloger

ブラウザで CGI を実行すると、 /usr/bin/env: 'ruby': No such file or directory とエラーが出る

#!/usr/bin/env ruby

# ...

原因

$PATH が設定されていない。

#!/usr/bin/env bash

echo -ne "Content-type: text/html\n\n"
echo $PATH

とすると、

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

と表示され、Ruby のあるディレクトリーがないことがわかる。

対処法

:CGIPathEnv で Ruby のパスを設定する。

srv = WEBrick::HTTPServer.new({
:DocumentRoot => "./site/",
:Port => 8080,
:CGIPathEnv => ENV["PATH"]
})

gem 作り方

· 約1分
ひかり
Main bloger

テンプレートの作成

bundle gem <GEM 名> -t
cd <GEM 名>

Gemspec の編集

  1. <GEM 名>.gemspec を開く。
  2. spec.summaryspec.descriptionspec.homepage、 を編集する
  3. spec.metadata["allowed_push_host"] にホームページの URL を記述
  4. spec.homepage に Gem のページを記述
  5. spec.metadata["source_code_uri"] にリポジトリの URL を記述
  6. spec.metadata["changelog_uri"]changelog.md の URL を記述

最低限このくらい設定する。

GitHub に push しインストール

git init
git add .
git commit -mFirst\ Commit
git remote add origin [email protected]:<ユーザー名>/<GEM 名>.git
git push -u origin master

インストール

gem install specific_instal
gem specific_install -l "git://github.com/<ユーザー名>/<GEM 名>.git"

Gemfile

gem "<GEM 名>", github: "<ユーザー名>/<GEM 名>.git", branch: :main

ターミナル上で画像を表示するコマンド

· 約1分
ひかり
Main bloger

ターミナル上で画像を表示する tiv コマンドの紹介。

tiv

ファイルエクスプローラー開くのがめんどくさいときに良い。

git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make -j
sudo make install