ほげほげ

プログラミング、英会話、ヨガ、料理などの備忘録など。

初めてのGo Lang インストールと動作確認

Goでちょっとしたサーバーサイドのプログラムを書こうと思っています。Goを選んだ理由は、やったこと無い言語が良かったからです。 Ruby や Swift と悩みましたが、せっかくなので今までやってきたことと一番遠いものを選びました。

ダウンロードとインストール

  1. ダウンロードページからMac用のバイナリをダウンロード
  2. ぽちぽち進めてインストール
  3. パスの設定 .bash_profileexport PATH=$PATH:/usr/local/go/bin を追加
  4. 確認 whichでgoのパスが表示されていればOK
$ which go
/usr/local/go/bin/go

GOPATHの設定とHello World

ワークスペースとして使用するディレクトリをGOPATHと呼ぶ

.bash_profileexport GOPATH=$HOME/go_work を追加.

go_workディレクトリは自分で作成する

確認

# 必要なディレクトリ作成
mkdir -p $GOPATH/src/github.com/user/hello
cd $GOPATH

# プログラム作成
echo 'package main
import "fmt"
func main() {
  fmt.Printf("hello, world\n")
}' > $GOPATH/src/github.com/user/hello/hello.go

# コンパイル
go install github.com/user/hello

binディレクトリが生成されていて以下のコマンドが動作すればOK

$GOPATH/bin/hello # hello worldと表示される

参考

公式ページ:Getting Started

wordpress テーマの翻訳・日本語化

wordpressでメディアを作っていると、自分でゼロからデザインするのは大変だから、既存のテーマのお世話になることが多いと思います。 しかし、既存のテーマでも自分の思い通りのものは少ないので、参考にしながらカスタマイズしていく必要があります。

今回はテーマの日本語化をしてみました。

辞書ファイルの場所(potファイル)

辞書ファイルの場所はwp-content/themes/<テーマ名>/languages/<テーマ名>.potにあります。

日本語化の方法

一見するとこのpotファイルを以下のように編集すると、翻訳されるのではと思い試してみましたが、上手く行きませんでした。

# @ _s
msgid "Continue Reading"
msgstr "日本語にする"

確かにこの方法でうまくいくと結局1言語にしか対応できなくなってしまいます。

日本語化する方法は幾つかあるようですが、今回はPoeditという専用のツールを使用しました。

  • ツールをダウンロードし、起動
  • 新規カタログ
  • <テーマ名>.podを選択
  • 翻訳したい言語を選択。今回は日本語
  • msgid毎に対応した日本語を入力。(サジェストのようなものもあります)
  • 保存

保存すると ja.po と ja.moというファイルが出来ます。ja.poはpotファイルと同じ形式です。 ja.moはja.poがコンパイルされたようなファイルで、おそらく実際プログラムからはこちらが参照されるとおもます。 両ファイルをlanguagesディレクトリ以下に保存して、ページをリロードすると、日本語化されています。

Localization | Theme Developer Handbook | WordPress Developer Resources

雑感

全て自分でプログラムを組むのではなく、使い古されたソフトの設計や便利さを上手く学んで行きたいですね。

ansible playbookの使い方 超基本

playbookというキーワードをしょっちゅう忘れてしまいます。 ansible-playbookというコマンドを使って、環境構築を行います。 実際のコマンドは以下のようになります。

$ ansible-playbook db.yml -i hosts

db.yml

chefでいうレシピのようなもので、作成したい環境を記述します。 こんな感じに。

- hosts: db-server
  become: yes
  tasks:
    - name: be sure mariadb-server is installed
      yum: name=mariadb-server state=installed
 
    - name: be sure mariadb is running and enabled
      service: name=mariadb state=running enabled=yes

    - name: be sure mariadb is installed
      yum: name=mariadb state=installed

    - name: SELinuxのDisable設定
      selinux: state=disabled

    - name: Firewalldの停止
      firewalld: state=disabled permanent=true

    - name: fuga
      service: name=firewalld state=stop enabled=yes

hosts

hostsは接続するサーバーの情報を記述したファイルです。 こんな感じ。

[db-server]
db1 ansible_port=2222 ansible_host=127.0.0.1 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key

No space targeted, use 'cf target -s SPACE'

bluemix で pushしようとしたところ、以下のエラーが出力されpushできなくなった。

 No space targeted, use 'cf target -s SPACE'

-s devとdevスペースを指定しており、bluemix consoleからは確かに存在している。

ぐぐってみたところ、regionの指定が正しくない場合に発生することがわかった。

regionを明示的に正しく指定してログインし直すことで解決した。

cf login -a https://api.ng.bluemix.net -u <ユーザー名> -o <組織名> -s <スペース名>

人の顔と名前を覚える方法

ずっと人の顔と名前を覚えるのが苦手だと思っていました。 実際なかなか覚えることが出来ないままでした。

しかし最近転職したのを気に、顔と名前を覚えたいと思うようになりました。

やったことは2つです。 - ある人を見て名前を知っていたら、○○さんだと心のなかで思うようにすること - 名前を口に出して呼んで会話すること

このふたつを実行するだけで、簡単に顔と名前を一致させることができるようになりました。

vagrantホストからゲストへansibleで接続する

vagrantゲストを2台作成して、1台からもう1台へansibleコマンドで操作するサンプルは結構あったのだが、ゲスト1台のみを構築する手順が見当たらなかったのでメモしておきます。

ssh接続情報の確認

vagrantゲストへssh接続するにはvagrantユーザーを使用すると、ゲストへ直接接続するのではなく、一度localhostを経由してポートフォワーディングしてゲストに接続するようです。 sshの接続の確認方法はvagrant ssh-configで確認できます。

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile "PATH_TO_DIRECTORY/.vagrant/machines/default/virtualbox/private_key"
  IdentitiesOnly yes
  LogLevel FATAL

この例だと、ホストの2222ポートを使用してゲストにssh接続しています。

ansible hostsファイルの編集

ansibleで操作するサーバーの情報をhostsファイルに設定しておく必要があります。 これにはssh接続に関する情報も設定できるので、ssh-configで調べた情報を元に以下のように設定しておきます。

[db-server]
db1 ansible_port=2222 ansible_host=127.0.0.1 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key

参考

ansibleコマンドの実行

以下のようにpingを実行し、正常に実行されればansibleでゲストを操作できることになります。

$ ansible db-server -i hosts -m ping
db1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

vagrant sshを使わずにvagrant に ssh接続

ゲストにわりあてられるIPアドレスに22ポートでアクセスしようとしてもダメ。

vagrant ssh-configでssh設定が確認できる。 その情報を参考に、以下のようにアクセスできる。

ssh vagrant@127.0.0.1 -p 2222 -i .vagrant/machines/default/virtualbox/private_key