約束の地

キャロ組

Ruby でディレクトリ名一覧を最終更新時刻の順番に並べて取得する方法

結論

以下の例ではカレントディレクトリにあるディレクトリ名を対象にしています*1

最終更新時刻の昇順に並べる場合

Dir.glob('*/').sort_by{ |directory_name| File.mtime(directory_name) }.each do |sorted_directory_name|
  puts sorted_directory_name
end

最終更新時刻の降順に並べる場合

Dir.glob('*/').sort_by{ |directory_name| File.mtime(directory_name) }.reverse.each do |sorted_directory_name|
  puts sorted_directory_name
end

参考

*1:globメソッドの部分

OSS の IDE(コードエディタ)の選別を断念した話

背景

クローズドで利用できる OSS の IDE(エディタ)がほしい。

結論

どれも実用に至ると判断できませんでした。以下、試したものと所感です。

  • Codebox
    • 最終コミットは3年半前
    • 基本的な機能はある
    • ペアプロできる
    • Chrome だと インデント が 3以下 の場合にカーソルが飛ぶバグ(?)がありこれが致命的*1
    • サーバはすでに存在しないため、api などの拡張系の機能は利用できない
  • Codenvy
    • 80番ポートを決め打ちで開けるので構築用にマシンを用意する必要がある*2
    • 必要スペックが高い
      • 重い
      • しばしばマシンごと落とすことがありこれが致命的
    • フォントとその大きさが変えられない
  • CodePan
    • 軽量
    • 見た目がシンプル
    • ちょっとあっさりしすぎ
    • ペアプロはできない
  • SketchCode
    • よくわからない
    • デモで全く操作を受け付けなかったので除外
  • CodeSandbox
    • OSS ではあるが自前で入れるのは困難と判断
  • JS Bin
    • Node や Grunt のバージョンの関係でインストールできない(ビルドが通らない)
    • 断念
  • Wcode
    • bind できないようなので localhost 以外から使えない(リバースプロキシまで建てることは考えていない)

結論

外部サービスが使えない、ソフトウェアがインストールできない、そういう環境で開発すること自体が挑戦的なのかもしれません。

*1:タブをソフトタブにすると起こる現象

*2:VirtualBox など

CodePen の クローン である OSS の CodePan をインストールする

CodePen

CodePen とは、ご存知、Webブラウザで完結できるフロントエンドの開発環境です。

CodePan

その CodePen の クローン OSS の CodePan というものがあります。これをインストールします。

なお、デプロイ済みのデモはこちらです。

手順

特に難しいところはないです。以下のとおりになります。

1. git clone する

まずはリポジトリから git clone しましょう。

$ git clone git@github.com:egoist/codepan.git

2. ディレクトリに移動し yarn する

「1.」の clone したディレクトリに移動し、yarn します。

$ cd codepan
$ yarn

3. yarn build する

無事に yarn でモジュールが入ったら、yarn build でビルドします。少し時間がかかります。

$ yarn build

4. serve を用いて起動する

dist ディレクトリ配下にビルドされたので、serve を使ってサーバを立ち上げます。

serve はこれです。

serve が入っていない場合は $ yarn add global serve で入れましょう。入れたら以下のコマンドでサーバが立ち上がります*1

$ serve dist --single

補足

serve でサーバを立てる際に私の環境では xsel が入っていないから入れろと怒られました*2$ sudo apt-get install xsel と入れてもやはり怒られました。(デスクトップでなく)コンソールで起動しているとどうしても怒られるようです。

無視しても問題なく動作するのでスルーでよいでしょう。クリップボード周りでイケてないことになると思いますが、大きな問題ではないと思います。

*1:ポート番号はデフォルトで 5000 ですが、--listen オプションで変えられます

*2:Ubuntu 16.04 LTS

Docker で IPアドレス を固定する方法

結論

オーソドックスな方法の一つです。

1. Docker の ネットワーク を作成する

以下のようにしてネットワークを新規に作ります。--subnet=10.123.123.0/24 の部分は場合に応じて変更します*1

$ docker network create --subnet=10.123.123.0/24 my_docker_network

2. --net と --ip のオプションを指定して docker run する

--net というオプションに「1.」で作ったネットワーク名称を指定します。--ip というオプションに固定する IPアドレス を指定します。もちろん固定する IPアドレス は「1.」で指定したアドレスの範囲になくてはいけません。

$ docker run -i -t --net=my_docker_network --ip=10.123.123.123 ubuntu

*1:既存のネットワークと重複しないように

Wekan を Docker で起動しようとしても起動しない(アクセスできない)場合

Wekan

Trello のクローンの OSS です。

結論

その1

アプリのポートは 8080番ポート をさらけ出していますか? v1.24 からは、従来の 80番ポート に代わって 8080番ポート が外に開けられるようになりました

その2

MongoDB のイメージのバージョンを正しく指定していますか?バージョンを明確に指定しないと*1正しく動作しません。docker-compose.ymlに書かれているバージョンを明示的に指定しましょう。

*1:あるいは、latest を指定してしまうと

Powered by はてなブログ