ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

slackでのハイライトされたソースコードの投稿方法

背景

Slack を遅ればせながらようやく使い始めました。

使ってみてわかったのですが、シンプルかつプロジェクトメンバ全員でやり取りした内容が横串検索できるのが非常に便利です。 これは他のチャットツールでは有料だったりそもそも機能としてなかったりするので便利です。

加えて、エンジニア向けのハイライトされたソースコードの投稿機能が搭載されています。

Slackではこれを スニペット とよんでいるようです。

投稿方法

スクリーンショットで手順をまとめて見ました。

Bashでランダムな文字列を作成する

背景

Webサイトを見ていてたまたま urandom というものを見つけた。 これをうまく使うことでランダムな文字列を生成できる。

環境

$ uname -a
Darwin genzouw-no-MacBook-Pro.local 15.0.0 Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; root:xnu-3247.10.11~1/RELEASE_X86_64 x86_64 i386 MacBookPro10,1 Darwin


$ bash -version
GNU bash, バージョン 4.3.42(1)-release (x86_64-apple-darwin14.5.0)
    Copyright (C) 2013 Free Software Foundation, Inc.
    ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>

    This is free software; you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

試してみる

ランダムな8文字の数字

% cat /dev/urandom| tr -dc '[:digit:]'| head -c 8
18069591

ランダムな10文字の英数字

cat /dev/urandom| tr -dc 'A-Za-z0-9'| head -c 10
txdya1xDQn

その他

一部のサイトでは、以下の用に ":digit:" の部分を ":alnum:" にして英数字を出力しようとしているものもあったのだが、僕の環境では正常に動かなかった。 どうしても10文字出力されない。

% cat /dev/urandom| tr -dc '[:digit:]'| head -c 10

ひとこと

Bashでも色々できますね。

Neosnippetでシェルコマンド呼び出し結果がスニペットに差し込む

背景

vimデコーディングするう上で、もはや無くてはならないプラグインの一つである Shougo/neosnippet.vim。 非常に便利です。

更に便利に使うために、以下の情報をスニペット展開時に自動的に差し込めるようにしてみよう。

  • 今利用している環境の情報
  • ディスク容量
  • ユーザー名

環境

今利用している環境は以下のとおり。 このブログを編集中に利用したスニペットが自動で出力してくれています。

$ uname -a
Darwin genzouw-MacBook-Pro.local 15.0.0 Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; root:xnu-3247.10.11~1/RELEASE_X86_64 x86_64 i386 MacBookPro10,1 Darwin

$ zsh --version
zsh 5.1.1 (x86_64-apple-darwin15.0.0)

$ echo $USER
genzouw

設定方法

1. Neosnippetのインストール

ここでは割愛します。以下のページを参照下さい。

2.snippetsを開く

snippetsファイルの配置場所や書き方についても割愛します。

僕はブログ等を各ときには filetype=markdown となるように設定していることもあり、 markdown.snip というファイルに設定を追記しました。

3.スニペットを追加

以下のスニペットを追加。

snippet        blog
options     head
prev_word   '^'
    ## 環境

    \`\`\`sh
    $ uname -a
    `system("uname -a")`

    $ zsh --version
    `system("zsh --version")`
    \`\`\`

ポイントは以下の部分。

`system("any command")`

ダブルクォート内に Bash なり Zsh のコマンドを記述すると、スニペット展開時にシェルコマンド実行結果が挿入されます。

ひとこと

"df -h" とかも表示できるし、 "psql -h" で日報にDBの内容を添付などしても面白いと思います。

CentOS6.5サーバーに日本語環境を構築する

背景

ロケールの設定に関する情報を探して、ブログに辿り着く方が多かったので整理してみました。

特に、以下の様に環境変数を適切に設定しているにもかかわらず、日本語表示されないとお困りの方が多いようです。
Vagrantにて、CentOS6.5のBoxをダウンロードしてきた直後はこういう状態になっています。

export LANG="ja_JP.UTF-8"

調査環境

[vagrant@vagrant-centos65 ~]$ uname -a
uname -a
Linux vagrant-centos65.vagrantup.com 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

[vagrant@vagrant-centos65 ~]$ bash -version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

手順

手前味噌ながら、以下に自分で作り続けている Ansibleスクリプトplaybookという)をおいておいた。

playbook_for_sandbox/tasks/setup-locale-ja.yml at master · genzouw/playbook_for_sandbox · GitHub

Ansibleを利用していればこれをそのまま利用すればOKだが、コマンド利用で取り急ぎ設定する場合はこれをyum実行に読みかえればよい。

結果

# rootへ切り替え
sudo -s

# これらをインストール(man-pages-jaは特に不要)
yum install -y man-pages-ja
yum -y groupinstall "Japanese Support"

# /etc/sysconfig/i18n を既存のものを一度全てコメントアウトする
cat /etc/sysconfig/i18n  | sed 's/^#\? */# /g' | (mv /etc/sysconfig/i18n{,.bk}; tee /etc/sysconfig/i18n > /dev/null)
# /etc/sysconfig/i18n に設定追加
echo 'LANG="ja_JP.UTF-8"' | tee -a /etc/sysconfig/i18n > /dev/null
chmod 644 /etc/sysconfig/i18n

reboot now

再起動後は全てのパッケージをアップデートする。

yum update -y

ひとこと

同時にいくつかの設定を行っていたため、こちらでロケール設定を日本語にするためのアトミックな手順となっているかは確認できていません。 こちらの設定でうまくいかない場合にはご連絡ください。

vimからはてなブログのエントリを登録・編集・削除してみる

背景

最近めっきりブログを書いていなかった。

Google アナリティクスからユニバーサル アナリティクスにアップグレードが出来るようになった。 しかし、当ブログはノータッチだった。

久々にはてなブログを開き、設定しようとしたところ脇道にそれ、昔の記事を見ていたら自分にとっては有意義なメモが多いなぁと感じた。
結果、再開しようと思い立った。

形から入る立ちなので、vimはてなブログのエントリを操作する環境を作って効率化してから!ということで、探してみた。

調査

早速良さそうなものが見つかった。

moznion/hateblo.vim · GitHub

導入方法はGetting startedとしてわかりやすくまとめてくれている。

ex) ~/.hateblo.vim のスケルト

f:id:genzouw:20140709005233p:plain

api_keyの設定がどこかが少しわかりにくかった。

  1. ブログの管理ページから設定を選んで…
    • f:id:genzouw:20140709005711p:plain
  2. AtomPubの項目のAPIキーがそれ。(ルートエンドポイントも必要)
    • f:id:genzouw:20140709005713p:plain

結果

結果、当エントリはvim+hateblo.vimプラグインで無事投稿できました!

ひとこと

三日坊主治るかな。

2014/07/10 追記

少し使ってみて分かったこと。

:HatebloCreate コマンド

こちらは編集中のvimバッファの内容を即座に投稿する場合に利用。

:HatebloCreateDraft コマンド

こちらを探していた!vimバッファの内容を下書きとして投稿する。
一般ユーザーからは見えない。

後日はてなブログの管理ページより、下書きの内容を投稿することが可能。

1から100までの数列から、ランダムに10個の数値をピックアップする

背景

テストデータの中からランダムにデータをn件(例えば10件)、ピックアップしたかった。

調査環境

$ uname -a
Darwin genzouw-macbook-pro.local 13.2.0 Darwin Kernel Version 13.2.0: Thu Apr 17 23:03:13 PDT 2014; root:xnu-2422.100.13~1/RELEASE_X86_64 x86_64 i386 MacBookPro10,1 Darwin

$ bash -version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

調査

echo $((RANDOM%100+1))

とすると1から100までのランダムな値が取得はできるが、同じものが取得されることがある。
(ex: 1 99 3 53 1 5 20 19 80 100 )

結果

以下のワンライナーで実現可能。

seq 1 100| shuf| head -n 10

ひとこと

実際にはテストデータファイル data.txt からデータをピックアップする必要があったため、以下のような使い方をした。

cat data.txt| shuf| head -n 10

そこそこ便利。

boot2dockerを最も簡単に利用するには

最近話題のDockerを勉強し始めました。

CentOSサーバーやUbuntuサーバーと言ったCUI環境では、なかなかVagnatを動かすまでの準備が面倒です。 特にVirtualboxのインストールが面倒です。 (僕に至っては一度もVirtualBoxが正常にインストールできたことはありません)

それに比べてDockerは、VirtualboxVMWareのような仮想化ツールは不要です。これ単体で動作します。 また、Vagrantを利用する場合に比べて軽量です。

さて、Dockerを利用するとホストOSとなるホスト環境には、ほとんどツールやライブラリ入りません。軽量であればあるほどよいです。 そのような背景で生まれてきたのがboot2dockerという軽量Linuxディストリビューションです。 これを最も簡単に利用するためのコマンドを以下に載せておきます。

前提条件

  • 以下のツールがインストールされており利用できる

コマンド

[ ! -d "$HOME/vagrant/boot2docker" ] && mkdir -p "$HOME/vagrant/boot2docker"
cd "$HOME/vagrant/boot2docker"
vagrant init boot2docker https://github.com/mitchellh/boot2docker-vagrant-box/releases/download/v0.3.0/boot2docker.box
vagrant up

2014/05/16追記

もっと簡単に行ける模様。

[ ! -d "$HOME/vagrant/boot2docker" ] && mkdir -p "$HOME/vagrant/boot2docker"
cd "$HOME/vagrant/boot2docker"
vagrant init mitchellh/boot2docker
vagrant up
vagrant ssh