カテゴリー
ネットのサービス

lofi.co – 集中できる作業環境をブラウザで提供するフリーミアムサービス

lofi.co は、ブラウザで開きっぱなしにして使うBGM & 生産性向上ツール群というサービスです。

Lofi.co の入り口ページ

Lo-Fiの定義はWikipediaを読んでもよくわからなかったのですが、長時間再生できる作業用BGM を Lo-Fi と呼んでることもあるので、ここではそういう意味かなと思います。

Lofi.co で画像を選ぶ

無料で使える範囲は、カフェの背景画像、3種類の音楽ジャンルのBGM、都市のノイズ、雨だれ、タイピング音のようです。

Lofi.co の料金表

毎月$2.99(220円) の有料プランを購読すると、背景画像や音楽の種類が増え、さらにポモドーロタイマー・メモ・計時ログ・ToDo リストなどの生産性ツールが使えるようになるそうです。

ブラウザのウィンドウ一つでこのサービスを常時表示しておき、そこで自分の作業環境に関わる多くを賄おうということでしょうね。

こういったブラウザで BGM + 環境音というサービスはたくさんあり、過去にも紹介したことがあります。参入者はとても多いのですが、人気が出てスケールした時にどうやって儲けるのか、という疑問は常に出てきます。

Lofi.co は定額課金という方式で来たわけですが、たとえばBGMなら YouTube で作業用BGMを検索して掛けっぱなしでも同じことは達成できるわけで、有料ユーザーがそんなに取れるのかな、とも思います。定期的に出てくるこういうサービス、どれもいい感じで発見した時は楽しんでるのですが。

Lofi.co は ToDo や タイマー等と併せることで課金を狙っているわけですが、この方向で普及するのか、それともまた来月は別のこういう新サービスをみんながいじっているのか。

via Hacker News

カテゴリー
技術

dockerizeコマンドで他のDockerコンテナの立ち上げを待つ

「Docker で動くようにすること」(to dockerize)じゃない、ツールの方の dockerize (jwilder さん作)を使って、同じDocker network 内(setup_remote_docker したもの)に立ち上げ中のコンテナの準備ができるのを待たせる方法。

# 名前が紛らわしいのは検索性を低めてると思いますが

どうせならツールも自力でセットアップせずに docker hub にあるものを呼べばよいということで、

docker run jwilder/dockerize -wait http://sample.test/ -timeout 3m -wait-retry-interval 5s

上は、http://sample.test/ が応答を返すまで、最大3分間、5秒おきに問い合わせ。

CircleCI の中で待ちたかった(コンテナの立ち上げが終わってからテストを流す)ので、ターゲットのコンテナと同じ Docker network でこれを呼ぶと、.circleci/config.yml は

    - steps:
       (中略)
      - run:
          name: Run Docker Containers
          command: docker-compose up -d
      - run:
          name: Wait until the target docker container fully set up
          command: |
            docker run --network my_network \
              jwilder/dockerize -wait http://my_service/about/ -timeout 3m -wait-retry-interval 5s
      - run:
          name: テストとか

こんな感じでいけました。

CircleCI公式のDocker image には dockerize も入ってる

しかし、その後、CircleCIの用意してくれているDockerベースのDocker Container を使う場合、そのコンテナには Docker だけでなく Docker Compose や Dockerize も含まれているということに気づきました。

「あれ? じゃ上のコード無意味で、直接 dockerize を呼べばいいだけでは?」と思い直し、これを試してみたのですが、

      - run:
          name: Wait until docker container fully set up, from the same docker network
          command: |
            dockerize -wait http://my_service/api/doc -timeout 3m -wait-retry-interval 10s

ネットワークが違うのでアクセスできません。そりゃそうか。CircleCIの中で立ち上がったDocker MachineのIPアドレスが取れれば、それでアクセスできそうだけど。

ドキュメントにありました。同じコンテナか、同じネットワークのコンテナからのアクセスとするのが正しいやり方のようです。CircleCIが使ってるprimary のコンテナにはもう Dockerize コマンドの実体があるので、同じものを再度リモートから取得するのはもったいない気もしますが。

sleepでwait

CircleCI のドキュメントのサンプルでも

      - run:
          command: |
            git push heroku fan-in-fan-out:master
            heroku run rake db:migrate
            sleep 5 # sleep for 5 seconds to wait for dynos
            heroku restart

みたいなことが書いてあって、”sleep 5″って、それいつでも大丈夫なの? と思ったので調べました。まあサンプルはサンプルなので。

カテゴリー
技術 未分類

Docker+Traefikで同一ホストのサブフォルダとルートフォルダで別バックエンドを見に行かせる

Traefik をリバースプロキシにしてアクセスをバックエンドの Docker コンテナに振り分ける実験をしていたのですが、http://example.com/app1 と http://example.com/app2 をコンテナ app1 と app2 に振り分けることは無事できたものの、http://example.com/ へのアクセスがどちらにもいかず404になってしまいました。

docker-compose.yml の label で Traefik の動作指定をしていたのですが、どちらかの app に / を含めてしまうと、/ を書いた方の定義が優先されてしまい、もう一方のサブフォルダが振り分けされなくなってしまいました。

では、/ を含む方の定義に2つの条件を書けばいいのでは、と思いましたが、一行の中にセミコロンで複数条件を書くのは、それらの AND を表していて、OR にはなりません。それでは、と、二つの条件を2行に並べて書くと、後で書いた方だけが有効になるよう。

公式の github project を検索すると、ラベルにサービス名をつけることで複数の条件を OR で指定できるようです。

Allow multiple rules from docker labels containers with traefik.<servicename>.* properties by benoitf · Pull Request #1257 · containous/traefik

この修正が今年の3月で、version 1.3.0 に入っている。ということは使えるということ。