As rookie

ルーキーインフラエンジニアがインフラのこと以外も結構書いてしまうブログ

pythonでランダムに日本語を作る

mokicks.hatenablog.com

せっかく配列作ったのでとりあえず使うだけです。

import random
import sys
jp = ["あ","い","う","え","お","か","き","く","け","こ","さ","し","す","せ","そ","た","ち","つ","て","と","な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ","ま","み","む","め","も","や","ゆ","よ","ら","り","る","れ","ろ","わ","を","ん"]

def make_word(length,words):
    word = ""
    for i in range(length):
        word += words[random.randint(0,len(words)-1)]
    return word

def main():
    if len(sys.argv) < 2:
        print("引数を入力してください")
        return
    print(make_word(int(sys.argv[1]),jp))

if __name__ == "__main__":
    main()
python jp_cmd.py 2
よひ
i=1; while [ $i -le 10 ]; do python jp_cmd.py 3; i=$(expr $i + 1);done
ろめね
さゆへ
たふそ
めゆろ
かめる
をねき
えほめ
になあ
るゆを
りおあ

これで子供の名前つけます

pythonで50音の配列

メモレベルの内容です。

pythonで50音の配列を作りたかった。
python 50音 配列」で検索して配列の定義が出てくれば一瞬で解決したと思います。
ですので先に貼っておきます

jp = ["あ","い","う","え","お","か","き","く","け","こ","さ","し","す","せ","そ","た","ち","つ","て","と","な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ","ま","み","む","め","も","や","ゆ","よ","ら","り","る","れ","ろ","わ","を","ん"]

きっとutf-8バイト型の50音からString型に変換するみたいなのを調べると出てくるはずです。
ちょっと調べると

b'\xe3\x81\x82'  #バイト型の「あ」
b'\xe3\x81\x84'  #バイト型の「い」
b'\xe3\x81\x83'  #バイト型の「ぃ」
>>> b'\xe3\x81\x82'.decode('utf-8')
'あ'
b'\xe3\x81\x84'.decode('utf-8')
'い'

ここまでわかったのできっとできるはずです。

でも今回は単純に変数を定義する方法。というか作業ログです。

vim jp

50音を検索しても文字一つ一つが連続しているものがなかったのでしかたなく手打ち

あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん

一文字ずつ" "で囲ってカンマをつける置換

:%s/\(.\)/"\1",/g 

中学生ぐらいの私なら一文字ずつ打ってその度に" "とカンマをつけていたでしょう。今ではこの通り割と早くできました。

作業効率向上のために中学校の必修科目にvimを設けるべきです。

根本的にもっと早い方法があるなら知りたい。

以上です。ご覧いただきありがとうございました。

nginx-unitのansible

ドキュメント見た方が早いかもしれない

NGINX Unit

対象はCentOS7
roleとして扱う

ディレクトリ構造

.
├── files
│   └── unit.repo
└── tasks
    └── main.yml

ファイル群

tasks/main.yml

---
- name: import unit repo
  copy:
    src: unit.repo
    dest: /etc/yum.repo.d/unit.repo

- name: install package
  yum:
    name: unit
    state: presen

files/unit.repo

[unit]
name=unit repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

軽い説明

unit.repoをコピーしてyum install

断念したこと

nginx unitは

curl -X PUT -d @example.json --unix-socket http://localhost

これで example.json で指定した内容でアプリケーションを起動することができる。
ということは
ansibleの uriモジュール を使えば起動もできるのではないかと考えた。ローカルでJSONを更新してデプロイもできるじゃないかと考えた。が、
uriモジュールでunix-socketを使う方法がわからなかった。

ので断念しました。いつか再チャレンジ

積読消化:サーバーレスシングルページアプリケーション:day2

別に毎日するとは宣言していないが、2日続けて投稿。

レビューみたいになるかもしれない。いや、読書感想文か

これまでに「こんなことができるアプリケーションがあるといいな、だれか作ってくれないかな」と思ったことがあるなら、良い知らせがあります。その「だれか」は「あなた」です。

この一文で始まる。いいこと言うぜ

N層アーキテクチャ

Web部分がクライアントとバックエンドのインターフェースになるようなシステム。 アプリケーションサーバ + 1つ以上のバックエンドが層を形成している

シングルページwebアプリケーションをつくることで、アプリケーション部分をブラウザに移せる。
ふむ。確かに。
ブラウザが直接必要なサービスに接続できる設計になる。
クラウド事業者が提供しているバックエンドサービスを部品として使うイメージ


継続大事

積読消化:サーバーレスシングルページアプリケーション:day1

まずはこれ。ページ数は188P

良心的

1日20ページ進むと8日で読み終わる 1日40ページ進むと4日で読み終わる

レッド・グリーン・リファクタリング

コードを書く前テストを書く。この時のテストは絶対に失敗する(コード無いからね)。
これがレッド
テストが失敗したならテストが通るコードを書けばいい。コードの追加(振る舞いが増える)。この時はテストが成功する。
これはグリーン
グリーンになった時点で全体的なコードの修正をする。これはグリーンの時だけ行う。
リファクタリング

これならシンプルかつ信頼できるコードが書けそうだ!

補足:これまだ目次にすら到達してない

積読消化

最近ブログを怠っているいる上に、積読が腰ぐらいの高さまできた。
流石にやばいと思い。最近本を読んでいる。
だが、積読といっても技術書が多い。
技術書の場合はどこでも読めるわけじゃない。自分の手元にPCがあり、実際に手を動かして読み進めていくことの方が多い。(てかそれが技術書?)

ってことで、手元に技術書&PCがあるならやることは一つ

アウトプット

ですよ。

アウトプットをすると、知識が定着しやすい。それだけじゃない。
アウトプットすることは、自分自身のモチベーションにも繋がる
それがパブリックなものなら「どこかで誰かが監視している精神」になり、継続の役にも立つ。

と思っている。ので 積読消化をアウトプットしていこうと思う。 本当に少しのインプットでもいいからアウトプットしようと思う

ソロアドベントカレンダーは11日で終了してしまった私。同じ失敗は2度繰り返したくない。

そしてブログの最後には

「継続は力なり」

と一言添えることにする。うん。頑張る

GitLab Meetup Tokyo #1 に行ってきた。#gitlabjp

コンパスページ gitlab-jp.connpass.com

こんにちは!

GitLab Meetup Tokyo #1

に「ブログ絶対書く枠」として参加した@arumukoです! 20170303010113

スポンサー:

ピザごちそうさまです。

私はプライベートのエンジニア活動でGitlab.comを使っています!

無料でプライベートリポジトリもプライベートグループも作れるから最強と思ってます。

仕事では新人インフラエンジニアながらにGitLabのadminとしてGitlab-CEを使っています。(去年の4月にGitLabの存在を知りました!)

そして最近バックアップ問題で話題になったGitLab www.publickey1.jp (このMeetupは話題になる前から決まっていたそうです)

いろいろ、お世話になっているGitLabのMeetupなんて行く以外ありませんでした。

先に言っておきますが、 4/11 (火)GitLab Meetup Tokyo #2 開催決定したそうです。 次回の会場はリクルート開催です

gitlab-jp.connpass.com

全体のスケジュール

コンパス参照

※資料もコンパスのページに上がっているのでみれますよ。

発表を聞いて

私はGitLabの効率の良い使い方が聞けたら良いなぁ〜と思って参加しました

実践的な運営方法や事例紹介のお話も多かったですが全体を通して「GitLab のコントリビュータとして活躍しよう」というニュアンスのお話もありました。

触発されました。私もGitLabにマージされたい。そしてMVP目指したい。

そしてGitLabの方針は「kindness」らしいです。

触発された

GitLab Development Kit なるものが存在するらしい で簡単に環境構築できる

gitlab.com

ここの手順を元に開発環境を整えたいと思います。

gitlab.com

こちらも合わせて読みましょう。

I/Oの関係でネティブインストールをお勧めしているがちょっとそれは厳しいので手元のVagrantで実行したいとおもいます。

gitlab.com

CentOS上で動かします。

事前準備としてrbenvでOSのrubyと干渉しないようにします。(Vagrantなのであんまり関係無い気はしますが)

rbenvのインストールはこちらの記事を参考にしてインストールしてください。

rbenv を使って ruby をインストールする(CentOS編) - Qiita

doc/prepare.md · master · GitLab.org / GitLab Development Kit · GitLab の手順通り(一部変更点あり)

#sudo yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
sudo yum install https://download.postgresql.org/pub/repos/yum/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-3.noarch.rpm
sudo yum install https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
#sudo yum install postgresql93-server libicu-devel cmake gcc-c++ redis ed fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6 golang nodejs
sudo yum install postgresql93-server libicu-devel cmake gcc-c++ redis ed fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6 golang nodejs postgresql93-devel sqlite-devel npm

rbenv install 2.3.1
rbenv global 2.3.1
rbenv version
2.3.1 (set by /home/vagrant/.rbenv/version)

これでCentOS特有のセットアップは完了 次はphantomjsのマニュアルセットアップ

PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"
cd ~
wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2
tar -xvjf $PHANTOM_JS.tar.bz2
sudo mv $PHANTOM_JS /usr/local/share
sudo ln -s /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
phantomjs --version

これで Prepare your computer が完了

早速CentOSの手順でpostgresqlrpmが404というissueを見つけて正しいパスでしているがもうちょい我慢

もしかすると

/usr/bin/postgres

がみつからないかもしれないので

sudo ln -s /usr/bin/postgres /usr/pgsql-9.3/bin/postgres 

で暫定対応

次はここ。 gitlab.com

gem install gitlab-development-kit
gdk init
cd gitlab-development-kit

gdkコマンドが実行できるところまできた。

そのつぎは

https://gitlab.com/gitlab-org/gitlab-ce

ここから自分のリポジトリにForkしましょう。

(Forkが遅すぎてうまくいってない場合はできるまで試しましょう)

そして

# Replace MY-FORK with your namespace
# ネームスペースを自分のものに変更
gdk install gitlab_repo=https://gitlab.com/MY-FORK/gitlab-ce.git
support/set-gitlab-upstream
An error occurred while installing pg (0.18.4), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.4'` succeeds before bundling.

のエラーがでたのなら

gemインストールの前提となるパッケージがインストールされていない可能性があります。yum installで全てインストールしている予定です。

make: *** [.gitlab-npm] エラー 127

なら

sudo yum install npm

しましょう。上の手順では追加済み

gdk run

とやれば実行できる。

[vagrant@gitlab gitlab-development-kit]$ gdk run
rbenv: version `2.3.3' is not installed (set by /home/vagrant/gitlab-development-kit/.ruby-version)

ファ!?

rbenvで 2.3.3をインストールします

cd gitlab-development-kit
rbenv install 2.3.3

ここでglobalに設定してしまうと、gdkが起動しません。ご注意を。

gdk run

もしpostgresqlが起動しない場合は

mkdir -p postgresql/data
/usr/pgsql-9.3/bin/initdb -D postgresql/data

/usr/bin/postgres

が見つからないのは

sudo ln -s /usr/pgsql-9.3/bin/postgres 

で対応

もしかしたら起動しないかもしれません。 (3月2日時点) 3月3日対応予定

問題発生

ちょっとまった。rubyやったことないし、ましてやRailsなんてやっているはずがない・・・どうしよう・・・

ヒュ〜〜〜 f:id:shigeru-mokicks:20170303025317j:plain

ちょうどGoの勉強はじめようと思ってたんですよ。

Rails + Go らしいので勉強兼give and take のgiveをはじめよう

GitLabのコントリビュータとして活躍するための

以下は Meetup で耳にした言葉集です

  • 「英語さえできれば貢献できる」貢献できる!!
  • JQueryの多数残るが Vue.jsへの移行も進んできている
  • commit なしで貢献する方法 ** votesを押そ
  • Twitter「うまくいかない〜〜」Tweetするならバグ報告(Issue)しましょう。
  • 公式の人たちが一番使ってるし作ってるから「効果的な使用方法を学べる」
  • 効果的なコードレビューの実施がわかる
  • 実践的なRailsの開発知識が身につく
  • 多分転職の時にプラス
  • コントリビュートガイドラインを熟読 ** 重要
  • Issueが無い場合は先にIssueを起票する
  • バグ修正のほうがマージされやすい
  • 簡単なテストを用意しておこう