クリエイター:メタボ兔

ウェブやアプリの開発者で利用する色な技術やサーバーや開発環境の設定について共有する場

バッテリーが膨らんできたNexus9をバッテリーレス化

バッテリーが膨らんできたNexus9をずっとバッテリーを外したままで持っていました。ネットで他の機種をバッテリーレス化について記事とかあったので時間がある時やって見ようかと思いました。

gigazine.net

実際ネットの記事を元に色々試して起動まではできましたが、すぐ電源が落ちるところから可決が出来ずずっと放置していました。

先週、壊れても(すでに壊れている)いいかなと思いまして大胆な行動を起こしたところ成功しました。USBの電圧等関係があるかとは思いますが、MacPCと家で使用しているUSB電源では正常に動くことが確認出来ました。

Yeeeeee!!!

f:id:FattyRabbit:20210210122254j:plainf:id:FattyRabbit:20210210122316j:plain

Slackを使ってないタブレットへ移行!!

概要

MacのOSをBigSurにアップデートしたことでPCが遅くなったために使ってないNexus7(2012)を利用してSlackはタブレットでやってみようかとの内容です。

前提条件

ファイルの共有はクラウド

Slackの利用でファイルのアップロードはあまり行ってなく、クラウド上にアップロードしてリンクなどで共有することです。

複数のワークスペースはお勧め出来ない

iOSは分かりませんが、Androidのアプリだとワークスペースを切り替えないと新しいメッセージがあるかどうかが分かりずらいです。

別途Bluetoothのキーボードなし

接続先を切り替える機能があるBluetoothのキーボードを使わずにMacProのキーボードを利用して、タブレットの入力を行うことです。

作業開始

Macのキーボードの共有方法

MacのキーボードをBluetoothキーボードとして提供するために調査を行いまして、リストアップしたアプリです。

Across

acrosscenter.com

Android, Mac等も対応出来てマウスとキーボードが共有できる等機能が多く無料版もありますが、無料版でテストをしてみようとしたがうまく出来ませんでした。また、AppleStoreになく公式サイトでダウンロードする形です。

1Keyboard

1Keyboard

1Keyboard

  • Eyal Wiener
  • ユーティリティ
  • ¥1,220
apps.apple.com

公式サイトの説明画像ではAndroidも書いていたので購入して試しましたが、iPhoneは接続して使用可能でしたがAndroidは出来ませんでした。無料版もなかったので購入&返品申請した形にしました。

mocha Keyboard

Mocha Keyboard

Mocha Keyboard

  • MochaSoft
  • ユーティリティ
  • ¥730
apps.apple.com

無料版テストした時だと一度接続した後にMac側の操作のみで再接続が出来なくて毎回タブレット(Nexus7)からも操作が必要で面倒でした。タブレット側の問題かもです。

Typeeto

Typeeto: remote BT keyboard

Typeeto: remote BT keyboard

  • Eltima
  • 仕事効率化
  • ¥980
apps.apple.com

価額面と使い方&Android対応できるのでこちらに決定しました。公式では文字のコピー&ペーストも出来ると書いていますが、うまく出来ませんでした。

タブレットの設定

Google 日本語入力をインストール

play.google.com

最近Gboardってキーボードアプリにキーボードが全部使えるようになったようですが、Gboardを使うと日本語の切り替えがキーボードで出来ないようです。

Google日本語入力アプリのAndroid版に、2016-07-27のアップデートで日本語入力切替の新ショートカットキーが追加されました。

SHIFT+CTRLで日本語入力切替が出来るようになったようで、それが実際のBluetoothキーボードで日本語切り替えが出来るようです。

既存のキーボードを削除するか使用しないようにして「Google 日本語入力」のみ使用するように設定しました。

キーマップ変更アプリのインストール

自分が今回インストールしたキーマップ変更アプリは以下のものです。

play.google.com

GooglePlayStoreでの説明画像と最新Versionと差がありまして自分の場合アプリが実装された後のアプリの画面がこちらです。

f:id:FattyRabbit:20210205131254p:plain

Typeetoを利用してタブレットと繋げてキーボードの連携が出来る状態にして起きます。その後にこの画面で「物理キーボード設定」のリンクをクリックするとAndroidの設定画面が開きます。

自分が設定した内容はこんな感じです。ロシア?のMacはありましたが、Macの日本語キーボードはなかったです。

f:id:FattyRabbit:20210205131654p:plain

赤いところはBluetoothキーボードとして接続されたPC名が表示されます。

設定がおわたら上部のバックボタンをクリックしてキーマップ変更アプリの画面に戻り、「入力テスト用テキストエリア」でテストしてください。

まとめ

かなりいい感じでMacのキーボードを利用してタブレットの文字が書けるようになりましたが、マウスとかも出来ると一番いいかもです。www

これでMacの負荷が減るといいですが、タブレットが7インチなので文字を小さくしているので目が疲れるかも他の大きいタブレとがあれば〜〜〜

iTermの背景にsshログイン情報を表示

f:id:FattyRabbit:20210201221004j:plain

概要

iTerm2をsshクライアントツールで愛用していますが、たまに複数のサーバーへ接続しているとどこがなんなのか分からなくなる場合があります。

その場合、接続情報を可視化したら良いかと思いまして色々調べて改善した内容です。(まだ、課題点はあり〜〜〜)

いきなりソース

自分も色々なところのソースを利用したので一旦ソースを共有した方が良いかと思います。

「~/bin/ssh-change-bg.sh」を作成します。

#!/bin/bash

# SSH with host name and IP address in background (only in iTerm.app)

# First, check to see if we have the correct terminal!
if [ "$(tty)" == 'not a tty' ] || [ "$TERM_PROGRAM" != "iTerm.app" ] ; then
  /usr/bin/ssh "$@"
  exit $?
fi

function __calculate_iterm_window_dimensions {
  local size=( $(osascript -e "
tell application \"System Events\"
    tell application process \"iTerm2\"
      get size of window 1
    end tell
end tell" | tr ',' ' ') )

  local w=$(( ${size[0]} - 15 )) h=$(( ${size[1]} - 44 ))
  echo "${w}x${h}"
}

# Console dimensions
DIMENSIONS=$(__calculate_iterm_window_dimensions)
BG_COLOR="#000000"       # Background color
FG_COLOR="#C68080"       # Foreground color
GRAVITY="NorthEast"      # Text gravity (NorthWest, North, NorthEast,
                         # West, Center, East, SouthWest, South, SouthEast)
OFFSET1="20,10"          # Text offset
OFFSET2="20,80"          # Text offset
FONT_SIZE="60"           # Font size in points
FONT_STYLE="Normal"      # Font style (Any, Italic, Normal, Oblique)
# Font path
FONT="$HOME/.bash/resources/SimpleLife.ttf"

HOSTNAME=`echo $@ | sed -e "s/.*@//" -e "s/ .*//"`

configInfo=`pcregrep -M 'Host '$HOSTNAME'([\s\S](?!Host ))+' ~/.ssh/config`
if [ ! -z "$configInfo" ]; then
  RESOLVED_HOSTNAME=$HOSTNAME
  RESOLVED_IP=`echo -e "$configInfo" | grep -oE 'HostName\s+([0-9\.]+)' | sed -e "s/ \+/ /g" |cut -f2 -d" "`
  RESOLVED_USER=`echo -e "$configInfo" | grep -oE 'User\s+(\S+)' | sed -e "s/ \+/ /g" |cut -f2 -d" "`"@"
else
  output=`dscacheutil -q host -a name $HOSTNAME`
  RESOLVED_HOSTNAME=`echo -e "$output"|grep '^name:'|awk '{print $2}'`
  RESOLVED_IP=`echo -e "$output"|grep '^ip_address:'|awk '{print $2}'`
fi

function set_bg {
  local tty=$(tty)
  osascript -e "
    tell application \"iTerm2\"
      tell current session of current window
        set background image to \"$1\"
      end tell
    end tell"
}

on_exit () {
  if [ ! -f /tmp/iTermBG.empty.png ]; then
    convert -size "$DIMENSIONS" xc:"$BG_COLOR" "/tmp/iTermBG.empty.png"
  fi
  set_bg "/tmp/iTermBG.empty.png"
  rm "/tmp/iTermBG.$$.png"
}
trap on_exit EXIT

convert \
  -size "$DIMENSIONS" xc:"$BG_COLOR" -gravity "$GRAVITY" -fill "$FG_COLOR" -style "$FONT_STYLE" -pointsize "$FONT_SIZE" -antialias -draw "text $OFFSET1 '${RESOLVED_HOSTNAME:-$HOSTNAME}'" \
  -pointsize 30 -draw "text $OFFSET2 '${RESOLVED_USER}${RESOLVED_IP:-}'" -alpha Off \
  "/tmp/iTermBG.$$.png"
set_bg "/tmp/iTermBG.$$.png"

/usr/bin/ssh "$@"

ソースを見るとわかる方もいるかと思いますが、「convert」を使用するために「ImageMagick」をインストールする必要があります。

ImageMagickのインストール

思ったより簡単です。

% brew install imagemagick

一応converterコマンドの参考URLです。

利用可能範囲

iTerm2のPaneサイズの取得不可

現在のソースの「__calculate_iterm_window_dimensions」部分ですが、Window(Or Tab)のpixelサイズしか取得できない状態です。Apple Script?的な仕様上paneとかsessionにはSizeの属性がないためです。

sttyコマンドでライン数やカラム数の取得できますが、それをpixelで取得する方法がまだ見つかってないです。

That's stty size | cut -d" " -f1 for the height/lines and stty size | cut -d" " -f2 for the width/columns

stackoverflow.com

現在右上に情報が見えるようにしていますが、左上に表示するようにすれば解決されるかなと思います。ただ、邪魔でした。(ㅠㅠ)

~/.ssh/configの参照

~/.ssh/configで定義されたパターン(自分が使っているパターン)を読み込んで情報として利用するようにしています。

こんな感じです。大文字小文字、英数字とかが関係すると思います。

Host raspi-of-local
  HostName 172.16.221.18
  IdentityFile ~/.ssh/id_rsa
  User pi

上記のソースはここら辺です。

configInfo=`pcregrep -M 'Host '$HOSTNAME'([\s\S](?!Host ))+' ~/.ssh/config`
if [ ! -z "$configInfo" ]; then
  RESOLVED_HOSTNAME=$HOSTNAME
  RESOLVED_IP=`echo -e "$configInfo" | grep -oE 'HostName\s+([0-9\.]+)' | sed -e "s/ \+/ /g" |cut -f2 -d" "`
  RESOLVED_USER=`echo -e "$configInfo" | grep -oE 'User\s+(\S+)' | sed -e "s/ \+/ /g" |cut -f2 -d" "`"@"
else
  ...
fi

課題

やっぱりpaneのサイズを正確に取得したいですね。ww

Mac Big SurでDnsmasqサーバーが認識されなくなった件

f:id:FattyRabbit:20210115185844j:plain

MacのOSをBig Surにアップデートした後に色な問題が発生しています。その中で一つを紹介&対応方法を生理して見ました。

環境設定

Raspberry Pi 3+にDockerコンテナを構築してウェブ、DBAなどのイントラネットを構築してそのウェブサービスドメインを整理してDnsmasqのコンテナに登録、LocalのネットにDNSサーバーとして登録している状態です。

参考: https://fatty-rabbit.hatenablog.com/archive/category/Laravel%20%2B%20Docker%20%2B%20%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83

fatty-rabbit.hatenablog.com

Macの設定

resolverの登録を行いました。例えばraspberryのIP(dnsmasqがexposeした)が「172.16.221.18」の場合

% sudo mkdir /etc/resolver/
% sudo vi /etc/resolver/localnet.intra
search      local
nameserver  172.16.221.18

また、ネットワークの設定で以下の順でDNSを登録

172.16.221.18
8.8.8.8

Dnsmasqの設定

先ずはdnsmasq.confです。

# Do not use /etc/hosts as nameserver
no-resolv

# Use this file as a hosts file
addn-hosts=/etc/hosts-dnsmasq

# プライベートIPアドレスの逆引を上位のDNSへ問い合わせない(無駄なので)
bogus-priv

# Log all dns queries
log-queries

マックのネットワークのDNSに8.8.8.8を設定しているので、Upstream DNS Serverの「server」設定はしてないです。

hosts-dnsmasqの内容です。

local
mailhog.local
a.local
b.local

これで実際digやping、ブラウザで表示が正常に表示されていました。

Big Surのアップデート後の現象

ブラウザとpingで本当にたまに反応があるだけで殆ど使用していたlocalドメインが認識できなくなりました。digでDNSサーバーとして正常に動いていることは確認できます。

対応方法

理由が分からないですがので解決方法だけ書くのが恥ずかしいですが、一応書くと以下の行をdnsmasq.confに追加追加するだけです。

+ # Upstream DNS Server
+ server=8.8.8.8

理由が分かる方是非連絡ください。

CentOS6のサポート終了の対応(yum使用出来るように)

問題点

CentOS6のサポートが終了(2020-11-30)されたことでCentOSのバージョンアップをしてないサーバーのyumの使用が出来なくなりました。

https://wiki.centos.org/About/Product

f:id:FattyRabbit:20210105173132p:plain

# yum check-update
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
エラー: Cannot find a valid baseurl for repo: base

ところでサポートが終わってもモジュールの追加が必要などき何もインストール出来ないのは問題ですね。

対策

リポジトリのURLを書き換えることで対処する。

# sed -i -e "s|mirror\.centos\.org/centos/\$releasever|vault\.centos\.org/6.6|g" /etc/yum.repos.d/CentOS-Base.repo
# sed -i -e "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo
# sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo

キャッシュをクリアする。

# yum clean all

出来るはずだと思いましたが、エラーが出ますね。

Cannot retrieve metalink for repository: epel. Please verify its path and try again

epel.repoが問題らしいです。

# sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo

キャッシュをクリアして使用します。

# yum clean all
# yum update