積読消化:サーバーレスシングルページアプリケーション:day2
別に毎日するとは宣言していないが、2日続けて投稿。
レビューみたいになるかもしれない。いや、読書感想文か
これまでに「こんなことができるアプリケーションがあるといいな、だれか作ってくれないかな」と思ったことがあるなら、良い知らせがあります。その「だれか」は「あなた」です。
この一文で始まる。いいこと言うぜ
N層アーキテクチャ
Web部分がクライアントとバックエンドのインターフェースになるようなシステム。 アプリケーションサーバ + 1つ以上のバックエンドが層を形成している
シングルページwebアプリケーションをつくることで、アプリケーション部分をブラウザに移せる。
ふむ。確かに。
ブラウザが直接必要なサービスに接続できる設計になる。
クラウド事業者が提供しているバックエンドサービスを部品として使うイメージ
継続大事
積読消化:サーバーレスシングルページアプリケーション:day1
サーバーレスシングルページアプリケーション ―S3、AWS Lambda、API Gateway、DynamoDB、Cognitoで構築するスケーラブルなWebサービス
- 作者: Ben Rady,吉田真吾,笹井崇司
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
まずはこれ。ページ数は188P
良心的
1日20ページ進むと8日で読み終わる 1日40ページ進むと4日で読み終わる
レッド・グリーン・リファクタリング
- TDD(テスト駆動開発)を行うときの3つのステップのサイクル
コードを書く前テストを書く。この時のテストは絶対に失敗する(コード無いからね)。
これがレッド
テストが失敗したならテストが通るコードを書けばいい。コードの追加(振る舞いが増える)。この時はテストが成功する。
これはグリーン
グリーンになった時点で全体的なコードの修正をする。これはグリーンの時だけ行う。
リファクタリング
これならシンプルかつ信頼できるコードが書けそうだ!
補足:これまだ目次にすら到達してない
積読消化
最近ブログを怠っているいる上に、積読が腰ぐらいの高さまできた。
流石にやばいと思い。最近本を読んでいる。
だが、積読といっても技術書が多い。
技術書の場合はどこでも読めるわけじゃない。自分の手元にPCがあり、実際に手を動かして読み進めていくことの方が多い。(てかそれが技術書?)
ってことで、手元に技術書&PCがあるならやることは一つ
アウトプット
ですよ。
アウトプットをすると、知識が定着しやすい。それだけじゃない。
アウトプットすることは、自分自身のモチベーションにも繋がる
それがパブリックなものなら「どこかで誰かが監視している精神」になり、継続の役にも立つ。
と思っている。ので 積読消化をアウトプットしていこうと思う。 本当に少しのインプットでもいいからアウトプットしようと思う
ソロアドベントカレンダーは11日で終了してしまった私。同じ失敗は2度繰り返したくない。
そしてブログの最後には
「継続は力なり」
と一言添えることにする。うん。頑張る
GitLab Meetup Tokyo #1 に行ってきた。#gitlabjp
コンパスページ gitlab-jp.connpass.com
こんにちは!
GitLab Meetup Tokyo #1
スポンサー:
ピザごちそうさまです。
私はプライベートのエンジニア活動でGitlab.comを使っています!
無料でプライベートリポジトリもプライベートグループも作れるから最強と思ってます。
仕事では新人インフラエンジニアながらにGitLabのadminとしてGitlab-CEを使っています。(去年の4月にGitLabの存在を知りました!)
そして最近バックアップ問題で話題になったGitLab www.publickey1.jp (このMeetupは話題になる前から決まっていたそうです)
いろいろ、お世話になっているGitLabのMeetupなんて行く以外ありませんでした。
先に言っておきますが、 4/11 (火)GitLab Meetup Tokyo #2 開催決定したそうです。 次回の会場はリクルート開催です
全体のスケジュール
コンパス参照
※資料もコンパスのページに上がっているのでみれますよ。
発表を聞いて
私はGitLabの効率の良い使い方が聞けたら良いなぁ〜と思って参加しました
実践的な運営方法や事例紹介のお話も多かったですが全体を通して「GitLab のコントリビュータとして活躍しよう」というニュアンスのお話もありました。
触発されました。私もGitLabにマージされたい。そしてMVP目指したい。
そしてGitLabの方針は「kindness」らしいです。
触発された
GitLab Development Kit なるものが存在するらしい で簡単に環境構築できる
ここの手順を元に開発環境を整えたいと思います。
こちらも合わせて読みましょう。
I/Oの関係でネティブインストールをお勧めしているがちょっとそれは厳しいので手元のVagrantで実行したいとおもいます。
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の手順でpostgresqlのrpmが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なんてやっているはずがない・・・どうしよう・・・
ヒュ〜〜〜
ちょうどGoの勉強はじめようと思ってたんですよ。
Rails + Go らしいので勉強兼give and take のgiveをはじめよう
GitLabのコントリビュータとして活躍するための
以下は Meetup で耳にした言葉集です
manの登録の仕方
英語が苦手な人にmanページの日本語表示の仕方教えてあげたいなと思い(はい。私も苦手です。)
manページの日本語化をした。
この方のapt-get
コマンド通りに実行すれば大丈夫
sudo apt-get manpages-ja-dev manpages-ja
これで
/usr/share/man/ja/man1/
の中にgz
が追加されるのではないでしょうか
ですが、愚かな私は
manpages-ja
はインストールしたもののmanpages-ja-dev
はインストールしませんでした。
そこでたちはだかった壁
man ssh
SSH(1) BSD General Commands Manual SSH(1) NAME ssh — OpenSSH SSH client (remote login program) SYNOPSIS ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] DESCRIPTION ssh (SSH client) is a program for logging into a remote machine and for executing commands on a remote machine. It is intended to provide secure encrypted communications between two untrusted hosts over an insecure network. X11 connections, arbitrary TCP ports and UNIX-domain sockets can also be forwarded over the secure channel. ---------------------------------- 以下略 --------------------------------------------------------
つら、sshは英語かよ。
sshの日本語manページなんて探せば見つかるっしょ!
ありました。
正確にはopensshのmanページですね
ってことはmanコマンド
でsshも日本語化できるってことですね!
manのsshを日本語化する手順
まず上記opensshのmanが乗ってあるサイトからtar.gzをダウンロードします。
そしてtarで展開してそれをmanの1
セクションに移動させます
mkdir openssh-man cd openssh-man curl -o openssh.man.tar.gz https://euske.github.io/openssh-jman/openssh-jman-730p1.tar.gz tar zxvf openssh.man.tar.gz sudo cp *.1 /usr/share/man/ja/man1/
みてみましょう
man ssh
名前 ssh — OpenSSH SSH クライアント (リモート ログイン プログラム) 書式 ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bindするアドレス] [-c 暗号方式] [-D [bindするアドレス:]ポート] [-E ロ グファイル] [-e エスケープ文字] [-F 設定ファイル] [-I pkcs11] [-i identityファイル] [-J [ユーザ@]ホスト[:ポート]] [-L アドレス] [-l ログイン名] [-m MAC指定] [-O 制御コマンド] [-o オプション] [-p ポート] [-Q 問い合わせオプション] [-R アドレス] [-S 制御用パス名] [-W ホスト:ポート] [-w ローカルtun[:リモートtun]] [ユーザ@]ホスト名 [コマンド] 説明 ssh (SSH クライアント) はリモートマシンにログインしたり、 リモートマシン上でコマンドを実行するためのプログ ラムです。 これは安全でないネットワーク上にある 2 つの信頼されていないホスト間で、 暗号化された安全な通信を 提供します。X11 接続や 任意の TCP ポートおよび UNIX-ドメイン ソケットなども安全な通信路を通して転送できま す。 ssh は指定された ホスト名 に接続し、 (オプションが指定された場合はその ユーザ で) ログインします。 ユーザは リモートマシンに対して、 本人であることを証明する必要があります。 これにはいくつの方法のうち、ひとつを使い ます (下記参照) : コマンド が指定された場合、リモートホスト上では ログインシェルのかわりにそのコマンドが実行されます。 ---------------------------------- 以下略 --------------------------------------------------------
$LANGに日本語設定してないひとはしましょう。
locale -a | grep JP ja_JP.utf8
でもしあるなら
LANG=`locale -a | grep JP`
これで私の環境はすぐに英語と日本語すぐに変わります。
CLIからgoogleの検索をしたい
こんにちは!
最近ようやく、この言葉がわかるようになりました。
「GUIしかないとやる気が出ない」
初めて聞いたのが3年前ぐらいで、「こいつ何言ってんだ?GUIの方がわかりやすいだろ」って思っていました。
でも今ならどこがわかりにくいとか具体的なことまで言えませんがその気持ちが分かる気がします。
CLIに慣れてきて一歩「できる奴ら」に近づいた気になっています。
本題
CLIで色々していて、わざわざgoogle chrome開くの面倒だなってときが来ました。
そこで僕は「CLIでブラウジングできるようなもの作ったらOKじゃね?」って考えました。
探したらありました。悔しいですね。普通に有名そうなやつですね
lynx
というものがあるんですね
Ubuntuなら
sudo apt-get install lynx
でインストールできます。
簡単な説明をすると、
lynx <URL>
で特定のwebページをCUIで表示することができます。普通にブラウジングしている感じです。
結局すること検索するぐらいだしgoogleにアクセスするようにすれば良いや~
に知らぬまになっていました。
ってことでCLIブラウザを1から作るほどの技術力はないので、lynxを使ってgoogle検索できるようにしました。
超簡単です。シェルスクリプトを作っただけです。
for x in "$@" do query=$query$x+ done lynx https://google.co.jp/search?q=$query
それがこちら
URLに直接検索する文字列を与えれることができれば検索は容易だなって思っていたらやっぱりできました
引数が $query
に代入されそれをURLにつなげて検索するというとても単純なものです。
これをgoogle
として保存します。実行権限も与えます
そして/usr/bin/
の配下に保存すると
google as rookie
等でCLIから検索できるようになりました。GIFのキャプチャを乗せたいが方法がわからないのでまたこんど乗せます
pythonのパッケージをcurlするためのURL知りたいだけなのにchromeをわざわざ開かないといけなかったのが いまではchromeを開かずにURLを知れるようになりました。
反省点を踏まえて(Mo-ikutsuneruto Calender)
どうもこんにちは!
僕は12月1日からソロアドベントカレンダーと題して、毎日ブログを更新しようとしていました。
ですが、実際は11日目にしてブログの更新は止まりました。
改めて考えてみたのですが、そもそも25個もネタがありません。
25日連続でブログを書くなんてとてもしんどいです。
ってことで、開き直りと反省をバネに
もういくつ寝るとカレンダーを開始します。
Mo-ikutstuneruto calender(和製)
もういくつ寝ると、お正月〜
12月31日まで毎日ブログを更新して1月1日は9時にうるう秒を眺めて2度寝でも決め込みたいものです。
さっそく今日の記事後ほど投稿しよう!!