CircleCI 2.0 と workflow に対応しました

03 July 2017 on circleci

このブログを CircleCI 2.0 & workflow 対応させてみる

仕事で CircleCI を使っているのですが、1.0 のバージョンはとにかく遅いんですよね。

docker build をさせつつ、 rspec を動かすということをやっているのですが、プロジェクトによっては X0分もかかることがあり、段々と辛くなってきました。

CircleCI 2.0 は既に高速化が見込めると話も上がっており、導入を試みていたのですが、細かい点で会社のプロジェクトではつまづくことが多かったので、とりあえず自分のブログのビルドを 2.0 対応してみることにしました。

いろんなことを一気にやろうとしすぎて、だいぶコケまくったので、そのことを書いていこうと思います。

途中、完全に master ビルドができなくなっていたのはご愛嬌。

ベースイメージに alpine を使うときに気をつけること

2.0 からはビルドに使うベースイメージを自分で DockerHub から引っ張ってこれるようになりました!速い!便利!

すると、なるべく小さいイメージを作りたくなりますよね。

じゃあ、alpine で。

となりますよね。(僕はなった)

これが、小さなハマりポイント1つ目。

restore_cachepersist_to_workspace は対象のディレクトリやファイルを tar にしてS3的なところにアップロードしているようで、ベースイメージに tar がインストールされていないとこれらの処理が必ず失敗するようになります。

tar: invalid tar magic

みたいなことを言われて失敗しちゃいます。

ベースイメージも刷新しながら、 2.0 にするときには微妙にハマるので、知っておいたほうがちょっとだけ楽ですね。

workflow の job間のデータを受け渡ししたい

workflow を導入すると、job を複数定義し、それぞれにベースイメージやら環境を設定することができます。

しかしながら、build と deploy を同じ環境下でやりたい。そして deploy は master ブランチでマージされたときだけ。となると、job は別々に定義し、実行環境は同じ。ということになります。

ここで、jobは別々に定義するけど、環境として同じものを使いたい。というときに便利なのが persist_to_workspaceattach_workspace です。 参考

ここがハマりポイント2つ目。。

persist_to_workspace と attach_workspace の書き方

公式ドキュメント には

- persist_to_workspace:
    paths: /tmp/file-name

とあるのですが、 root というキーと値が指定されていないと not relative to the workspace root というエラーが出てコケてしまいます。。

ドキュメントを舐めるようにみても、わからず、フォーラムの方で他の人がこういう感じで書いているのを見て、ようやくわかりました。。

正しくは

- persist_to_workspace:
  root: YOUR_ROOT_PATH
  paths: TARGET_DIRECTORY

と書いてあげる必要があったのでした。。(わかりにくい)

ここで、もう一つコツがあります。 この永続化した workspace を他のjobで展開するときに attach_workspace を使うのですが、そこではこういう書き方をします。

- attach_workspace:
    at: YOUR_ROOT_PATH

TARGET_DIRECTORY を永続化して、他のjobで展開したいときにこう書くのですが、なんかもうちょっとスッキリかけるといいですね。。

参考情報

本ブログの circleci 2.0 対応 → .circleci/config.yml

ベースイメージの Dockerfile → Dockerfile

ちなみに、肝心の高速化状況ですが↓に乗せています。

2分くらいだった build & deploy の時間は、 30秒へ。

速い。ちっこいプロジェクトだから、1分半節約できてもまぁ微妙なところだけど。。

このトライをやってみて、本業に当てれば、だいぶ良くなりそうな予感はしました。

Withing steel HR のあまり語られないところ

13 April 2017 on withings

Withings 製品が好きである

まず、ボクはそれなりに Withings の製品が好きなんです。

それなり。と書いたのは、必ずしも新製品を使っているわけではないし、目覚まし時計まで Withings 製を使っているわけではないから。

とはいえ、中でも Activite pop はとても気に入って使ってました。

睡眠を計測するためにも、夜寝るときにも着けておくのは最初こそ慣れなかったけど、最近ではもう気にならなくなってきました。

体重、睡眠、歩数、運動、血圧、そこまで毎日見るわけではないのだけど、データが溜まっていって、たまにケータイでデータを見てみると、そのときどきにどんな生活をしていたのかが垣間みれて、それがとても面白い。

ということで、よく使ってます。Withings.

Steel HR について

ボクが買ったのはこのモデル。

発売日に手に入れて、もう3ヶ月くらい使ってみてます。

心拍を細かく測れるのは、今までになかった体験だし、すごく緊張する局面でみるみるうちに心拍数が上がっていく様をあとから振り返るのはとても楽しい。

眠っているときは心拍数が少し下がり平均50くらいになる。だなんてことも Steel HR を使い始めて、初めて知ったことでした。

あまり語られない Steel HR の不具合

この3ヶ月の間、いろんなメディアが Steel HR について 使ってみた 記事を上げていますが、あまり語られない部分があります。

それは、 内部結露しやすい ということ。

時計が日本で発売された時期は、ちょうどまだ冬で、室内の気温と外の気温差が激しく、とりわけ内部結露しやすい時期だったのかもしれません。

それでも、時計の文字盤内が結露するのはあまり見たことがなく、最初はかなり驚きました。

あまりに目立つ結露だったので、写真を送り、初期不良として新しいものと交換してもらいました。

が、相変わらず結露する

新しいものに交換され、さてさて、もう大丈夫だろうと思っていたのですが、交換されたほうでも相変わらず内部結露してしまいました。

おそらく、Steel HR はこういうものなのだろうと思い、今はもう交換することなく使い続けています。

(夏が近づくにつれ、結露もしなくなるだろうから、きっとまた冬になったら交換したくなるんだろうなぁ)

公式ページでも結露が発生することが書かれている

The condensation will disappear naturally as soon as the air
inside the watch returns to room temperature.

However, if it doesn't vanish on its own or if it worsens
over time, please reach out to Customer Service by clicking
the Contact us button at the bottom of the page.

from .There is condensation inside my watch

程度はあるものの、長い時間収まらないなら問い合わせて。とのことでした。

たぶん、この件に関してめちゃめちゃ問い合わせ多いんだろうな。。

英語のページだけしか見つからず、それもちょっと残念。

Nokia ブランドになり品質もちょっとだけ心配

Withings は Nokia に買収され、この夏から本格的にNokiaブランドで動いていくみたいですね。

Nokia に関して、正直あまりいいイメージがないし、この Steel HR の品質を目の当たりにすると、この先がちょっと不安なのでした。

ということで、Withings の時計を買うなら、Steel HR よりは Activite シリーズがオススメなのでした。

Bitbar いろいろ使えそう

10 April 2016 on ruby

Bitbar

MacOS で使える Bitbar という、MenuBar に自分の好きな情報をスクリプトによって表示できるツールがすごく便利に使えそうなので、ご紹介です。

使いかたはとても簡単

まずは、Bitbar のアプリケーションを ダウンロード します。

そして、適当なディレクトリの下で適当なスクリプトを書いていきます。

スクリプト言語なら何でも行けそうな感じがしますが、ボクはひとまず Rubyを使って書いてます。

#!/usr/bin/env ruby
# yahoo.10s.sh

puts "yahoo! | href=http://www.yahoo.co.jp/"

みたいなスクリプトを書き、そのファイルに対して chmod +x yahoo.10s.sh と、実行権限を与えて、 plugin directory というファイルの置いている場所を bitbar のアプリケーションを起動した時に指定してあげると、MenuBar にヤフーのリンクが出る。と言った具合になります。

例えばこんな使いかた

シンプルなスクリプトを書き、MenuBarを拡張できるのはかなり便利です。

ボクは FX で使っている OANDA のAPIを使用して、為替相場と自分の口座の状況を表示するものを作ってみました。

OANDA のAPI自体はデモ口座を開いて使うのでも簡単に登録できますし、為替相場を常に知っておきたい。みたいな方があれば、ソースコードを以下に乗せておりますので、ぜひ使ってみてください。

ソースはこちら

(くれぐれも API token をgithubにアップしないように気をつけてください。。)

content_for_once というgemをリリースしました

09 April 2016 on rubygem

Railsで、viewファイルに対して、javascript_include_tagstylesheet_link_tag を多重に読み込んでしまうような書き方をしてしまうことって、ありますよね。

重複して css や js ファイルを読み込んでしまうことで、スタイルが壊れてしまったり、jsの動きがおかしくなってしまったり。。。などなど、困ることも多いです。

content_for_once はそれを解決するための gem です。

content_for_once

content_for_once というフレーズをグーグルなどで検索していみると、 この記事 にあたるのですが、私の記事で紹介する内容は、呼び名こそ同じものの、少し動きを変えております。

先ほどの記事では Rails に対してライブラリを追加するとき script/plugin というコマンドによりライブラリを追加するのが標準だった頃の内容でした。(ボクはその時代のRailsをよく知らない。。)

現在ではみなさんもお馴染みのgemによるライブラリの配布が主流になり、この配布の形に乗せて、似たようなものを使いたい。という思いがありました。

https://rubygems.org/gems/content_for_once

命名に関してですが、content_for_once という名前でプラグインをブログ記事を書かれている方がいたのですが、content_for_once いい名前だよな。。というのと、オリジナルの content_for_once はpluginの形で公表されているものの、ソースコード自体はもうリンク切れになっており、流通も少なそうな雰囲気を受けたので、オリジナル作者の方に連絡をして、名前やら処理の内容を変更することに許可を頂き、content_for_once という名前をつけました。

使いかた

-# app/views/layout/application.html.haml
= yield :css

-# articles/index.html.haml
- @articles.each do |article|
  = render 'article', article: article

-# articles/_article.html.haml
- content_for_once :css do
  = stylesheet_link_tag 'article'

.article
  .title= article.title

こんな感じに、 index.html.haml_article.html.haml に同じcssを読み込むような記述を書いたとしても、従来の content_for では2つの <link rel="stylesheet" href="article.css"> が挿入されてしまうところ、 content_for_once を使えば、1度だけの挿入で済むようになります。

まとめ

もしよろしければ、ご利用頂いたり、PRやissue などでアドバイスいただければと思います mm

バイナリオプション 2016/02/22-03/04

05 March 2016 on fxhighlow

総括

8エントリー 3勝4敗1分 でした。

特に個人的なエントリーシグナルを明確に持っていないためか、デモトレードを試してみても、予想が外れることが多く、勝率50%は切っていました。

今週は、僕が使ってる HIGHLOW のサイトでは、ジャパンネット銀行からの入金で5000円キャッシュバックをやっていました。

銀行口座は持っていたので、5000円キャッシュバックをもらい、ポチポチ遊んでいた感じです。

ゾーン — 相場心理学入門 は心得ておくメンタルの築き方がたくさんある にも書いたように、利益を出せても、損失を出しても、こんなもんかな。というメンタリティーにはなってきているのですが、何よりシグナルを明確に決めてトライしないといけないんでしょうな。

KPT

ほぼエントリーしてないので、KPTもほとんど変わらないかな。

Keep

  • 必ず1000円ずつエントリーする
  • エントリー後の不安が少なくなってきた

Problem

  • 的中が外れ続けると、エントリーの金額を大きくしたくなるメンタル
  • エントリーシグナルが決まっていない

Try

  • High&Lowの画面だけで引き続きトレードする
  • 基本1分のトレードだが、3分や5分のチャートを見る必要もないかも
  • エントリーシグナルを決めてみる
  • レンジ相場に入っていると判断できる指標があればエントリーしやすそう
  • トレンド相場担っている時に順張りする決断力があればエントリーしやすそう
Page: 1 of 12 Next»