CentOS7 on Vagrantでの時刻設定

CentOS7からはntpdではなく、chronyを使用するように推奨されている。

インストールして、デーモンとして常駐させるように設定する。

$ sudo yum install -y chrony
$ sudo systemctl enable chronyd
$ sudo systemctl status chronyd
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
   Active: inactive (dead)

“/etc/chrony.conf”の参照するサーバを日本のNTPサーバに設定する。

server ntp.nict.jp iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst

chronyを起動する。

$ sudo systemctl start chronyd

chronyの状態を確認する。

$ chronyc cources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp-b2.nict.go.jp             1   6    37    38  -1471ns[-3530us] +/- 3053us
^- ntp1.jst.mfeed.ad.jp          2   6    37    37   -922us[ -922us] +/-   12ms
^- ntp2.jst.mfeed.ad.jp          2   6    37    38  -1038us[-4557us] +/-   35ms
^- ntp3.jst.mfeed.ad.jp          2   6    37    38  +2003us[+2003us] +/-   16ms

さらに詳細な情報を得たい場合は、-vオプションをつける。

210 Number of sources = 4

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||                                                /   xxxx = adjusted offset,
||         Log2(Polling interval) -.             |    yyyy = measured offset,
||                                  \            |    zzzz = estimated error.
||                                   |           |
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp-b2.nict.go.jp             1   6    77    22   +275us[ +681us] +/- 3850us
^- ntp1.jst.mfeed.ad.jp          2   6    77    21  -1044us[-1044us] +/-   44ms
^- ntp2.jst.mfeed.ad.jp          2   6    77    22   -914us[ -508us] +/-   37ms
^- ntp3.jst.mfeed.ad.jp          2   6    77    22   -466us[  -62us] +/-   12ms

他には、トラッキング情報を確認したりなど。

$ chronyc tracking
$ chronyc sourcestats

UTCになっている場合

日本人なので、JST(日本標準時)で時刻を確認したいので変更します。

CentOS7からは、”timedatectl”で確認、設定ができます。(“/etc/localtime”などを直接編集しません)

# 確認
$ timedatectl
# timezoneの確認(一覧)
$ timedatectl list-timezones
# timezoneの設定
$ sudo timedatectl set-timezone Asia/Tokyo

これで”date”コマンドが、JSTで表示されます。

Vagrantを使用している場合

Vagrantはデフォルトでホストと時間を同期してくれます。ホストの時間がずれていると時間は永遠にありません。

ホストの時刻があっている場合は問題無いです。

ホストの時間がずれている場合は同期をやめるように設定しましょう。

config.vm.provider :virtualbox do |vb|
  vb.customize ["setextradata", :id, "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled", 1]
end

のっぴきならない事情でホストの時刻がずれている場合は、こうしないとダメですね。

Heroku Buttonで始めるメモアプリ MemoMemo 作りました

φ(..)

yymm/MemoMemo · GitHub

Heroku Buttonをボチッとするだけで始められるプライベートなメモアプリMemoMemoを作りました。

主に自分のために作りました。

SocketIOでさくさく検索できるのでWikiとかよりストレスないです(当社比)

Basic認証で、プライベートに使えます。

気になったこととかを何も考えずガンガン書きまくって、公開できそうなものはあとで検索して、ブログとかQiitaとかに公開したりして使ってます。

Deploy to Heroku

../../../_images/heroku_btn.png

ここ にある上のボタンを押して、ユーザーとパスワードを入力してデプロイできます。

../../../_images/env.png
  • ユーザー名は変更できませんが、ミスったらまたデプロイすればいいんです、お手軽ですね Heroku。
  • パスワードはログイン後変更した方がいいですね。
  • DBバックエンドはHerokuのClearDB(Ignite)を使っています。50MBですが、テキストデータしかないので数年使えそうです。

Screenshot - Edit

  • reStructuredTextとMarkdown(GFM)を使ってエディットできます
  • editボタンでいくらでも編集可能です
  • 画像はアップロードできません、外部のリンクを使用します
  • editボタンの横にあるdeleteボタンで消えます
  • 見出しに付く ✘ がかわいいです ✘╹◡╹✘ かわいい
../../../_images/edit.gif

さいごに

MemoMemoははじめて作ったWebアプリだったりします。(作りはじめたのは結構前)

きっとバグでいっぱいです。

そのうち、Publish機能つけてブログみたいな使い方もできるようになるかもしれません。

HerokuにデプロイするとBasic認証(http)なので、安全ではありません。機密情報をのせてはいけません。あくまで自分のプライベートにとどめておきましょう。

HerokuにデプロイするとBasic認証(http)なので、安全ではありません。機密情報をのせてはいけません。あくまで自分のプライベートにとどめておきましょう。

気になった方は、ぜひ “Deploy to Heroku” Button!

小さいプロジェクトでCIしてますか?

ポエムです。

ぼくはプログラマな仕事をしていて、受け持ってるプロジェクトはメンバ一人という小さいプロジェクトです。

この話は、ある日CIをしようと思った話です。

CIと言っても何がしたい?

何がしたい?ではなく。何がほしいか?な気がします。

CIと言っても何がほしい?

安心感です。

プログラマにこれが不足してくると、つらみをどんどん感じるようになります。

安心感を得るために必要な材料は人によって異なると思います。ぼくの欲しい安心感は

  • メモリーリークしてない
  • ビルドが通り、warningもない
  • Doxygenがエラーはいてない
  • メイン機能のテストが通っている

言語や案件によって様々な安心感があると思いますので、ここはきっと人それぞれです。

ふと周りを見るとCIしている現場はあまり多くありません。なぜでしょうか?

何でCIしてないの?

CI => テスト書かないと!という感じがあるのが原因な感じがしています(個人的な意見)

TDDもはじめから導入されているプロジェクトでない限り、始めづらいし、あとからつけるのもツライし...という感じになりテストがない=>CIもしないみたいな感じがあるような気がします(個人的な意見)

CIするには、テストを書かないとーってなってあとまわしな感じがあります(ぼくもそう思い時がある)

しかし、自分はただただ安心感を求めていることに気づいたので、まずテストコードを書いてということは、負担になってしまうのでやめました。

毎回GitでCommitやPushの度に、ビルドが通るか、主要な機能のテストが通るか、メモリーリークがないかをチェックするだけで、安心感が得られるのでそれだけなら頑張れる感じがしました。

さぁ、CI!

さぁ、CIということで有名なJenkinsさんを試してみようと思うのは、割りと一般的な人のやり口だと思います。

そして、Jenkinsを導入しようとちょっといじってみたのですが、ウッ...!っとなってしまいました。

Jenkinsを使うとなると、ユーザ作ってセキュリティの設定をして、Gitプロジェクトの登録方法を調べ、GitLab連携のこと調べ、鍵交換して、なんかエラーはいていて、任意のコマンドを実行させるには...Slackとかへの通知は......アッ...アッ...

とツライ...しか考えられなくなりました。

そして、Jenkinsはぼくの中でオワコンとなってしまいました。