ご報告

職業は今は無職です.

退職しました

退職と進学エントリの組み合わせですがペラッペラな薄さ.

新卒で入った会社を今年の2月末に辞めました. 半年は研修や実習だったので実質ほんの少しか働いていないっすね. 文字に起こすとなかなかにキマっていますね.

社名等はこれを読むような人はなんやかんや知っていると思うので 書きません.

こっからどうするの

今年の4月から大学の博士後期課程に行きます. 修士の時と変わらない研究室で研究です. おらっ,D進したぞ.

お金はアレやコレでどうにかする.したい.

最後に

理由やら何やらはここに書くよりも 別のところで. どこかのサークルの本とか. 食事とかの場で.

プレゼントや何やらはAmazonとKyashまで.

Amazon

http://wishlist.takion0.jp/

Kyash

ID: takion0

シェル芸勉強会に参加しました

シェル芸勉強会に参加しました

2018/09/01に開催された

jus共催 第37回シェル芸bot生きてるかどうか分からないけどシェル芸bot向けシェル芸勉強会

に午前・午後の両方とも参加しました.

問題はこちら

午前

午前中は 鳥海さん による シェルで文字コードに触れてみるその2 でした. スライドは こちら

内容は 前回 から続くものであり, シェル上で様々な文字コードを行ったり来たりするものでした. 具体的には,xxd コマンドを用いて文字コードを取得し,iconv コマンドで別のコードへと変換する. といったことを UTF-8, ASCII, EBCDIC, ISO/IEC 646, EUC などを対象に行いました.

わかってしまう人にはわかってしまう内容であり,実際に会場に来ていた人からはスライドが変わるたびに ため息や納得するような声が上がっていました.

午後

午後の問題は シェル芸BOT映え な問題が多数出題されました. ゴリゴリとパズル的に文字を配置していくタイプの問題ですね. 問題を解いていく中で,

  • sedt コマンド
  • awk 中でパイプを使っても良い

は,新しく知れて良かったです. これで,b コマンドで無限ループさせて head コマンド等で必要な分だけ取る 以外の手法を取ることができるようになりました.

自分のために書いておくところ

鳥海さんがゴリゴリ書いていた EBCDIC のコード表を出すワンライナー

for((i=4;i<16;i++));do printf '\t%02X' $(( i*16));done;echo;for((j=0;j<16;j++));do printf '%02X' $j;for((i=4;i<16;i++));do printf '\t';printf '%02X' $((i*16+j))|xxd -p -r|iconv -f ebcdic-jp-e -t utf8 -c;done;echo;done

整形

# 列アドレスを出す
for ((i = 4; i < 16; i++)); do
    printf '\t%02X' $((i * 16))
done
echo

for ((j = 0; j < 16; j++)); do
    # 行アドレスを出す
    printf '%02X' $j
    # アドレスに対応する ebcdic-jp-e の文字を出す
    for ((i = 4; i < 16; i++)); do
        printf '\t'
        printf '%02X' $((i * 16 + j)) | xxd -p -r | iconv -f ebcdic-jp-e -t utf8 -c
    done
    echo
done

鳥海さんが書いていった順番を思い出しながら書く

  • 列アドレスを出す
for((i=4;i<16;i++)); do printf '\t%02X' $((i*16));done; echo
  • 行アドレスを出す
for((i=4;i<16;i++)); do printf '\t%02X' $((i*16));done; echo; for((j=0;j<16;j++)); do printf '%02X' $j;echo; done
  • 行・列に対応した値を出す
for((i=4;i<16;i++)); do printf '\t%02X' $((i*16));done; echo; for((j=0;j<16;j++)); do printf '%02X' $j;for((k=4;k<16;k++)); do printf '\t'; printf '%02X' $((k * 16 + j)); done; echo; done
  • 対応した値を EBCDIC の値に直して出力する
for((i=4;i<16;i++)); do printf '\t%02X' $((i*16));done; echo; for((j=0;j<16;j++)); do printf '%02X' $j;for((k=4;k<16;k++)); do printf '\t'; printf '%02X' $((k * 16 + j)) | xxd -p -r | iconv -f ebcdic-jp-e -t utf-8 -c; done; echo; done

ぬるシェルなのかな?

ebanさんの書いたワンライナーを自分なりに解釈

setopt braceccl をつけると思ったとおりに動いた.

kaworu.jpn.org

zsh -c 'setopt braceccl ;r=({0-9} {A-F});c=({0-9} {A-F});echo ${^r}${^c}' | xargs -n16

参考文献・リンク

Subversionでファイルのロックを一括解除する

前提

  • 全てのロックを解除して良いと認識している
  • LANG=ja_JP.UTF-8 である
  • /var/svn/repoリポジトリがある
  • root 権限を持つ

実行

実際に使用する際には /var/svn/repo を適時読み替える. LANG=C の場合は grep "パス"grep "Path" にすれば 多分うまくいく.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ echo "svnadmin rmlocks /var/svn/repo @" | bash

説明

ロックされているファイルの一覧を取得

svnadmin lslocks /var/svn/repo

その中のパスが書かれている行を取得

svnadmin lslocks /var/svn/repo | grep "パス"

先頭からコロンまでの文字を削除すると実際のパスが取れる.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g"

xargs の -I オプションを使って svnadmin rmlocks に削除したいファイルのパスを渡す.

echoを一度挟むのはうっかりがあるかもしれないから.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ echo "svnadmin rmlocks /var/svn/repo @"

出力を見て,大丈夫そうだったら bash に投げてロックを解除する.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ echo "svnadmin rmlocks /var/svn/repo @" | bash

ちなみに,確認とかいらないよ.って時はこっち

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ svnadmin rmlocks /var/svn/repo @

終わり.

某クラウドにサーバ借りたので初期設定した

はじめてのクラウドサーバ

  • CentOS 7.5
  • 1GB 仮想1コア
  • 100GB 標準プラン

初期設定

# yun upgrade -y
# adduser にゃーんユーザ
# passwd にゃーんユーザ
# usermod -G wheel にゃーんユーザ
# mkdir -p /home/にゃーんユーザ/.ssh
# cp .ssh/authorized_keys /home/にゃーんユーザ/.ssh/
# chmod 600 /home/にゃーんユーザ/.ssh/authorized_keys
# chmod 700 /home/にゃーんユーザ/.ssh
# chown -R /home/にゃーん/.ssh にゃーんユーザ:にゃーんユーザ
# echo "にゃーんポート" >> /etc/ssh/sshd_config
# systemctl restart sshd
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
# sed -i "s/port=\"22\"/port=\"にゃーんポート\"/" /etc/firewalld/services/ssh.xml
# firewall-cmd --reload

これをやっておいてローカルの ~/.ssh/config に以下を追記した.

Host sakura
     User にゃーんユーザ
     hostname に.ゃ.ー.ん
     port にゃーんポート
     IdentityFile どこかにある例のファイル

systemctlfirewalld が微妙に分からなかったのは秘密.

にゃーんがゲシュタルト崩壊しているけれどもあんまり関係ない.

何をするかは実は決まっていない.