前人未踏の領域へ WEB・インフラ・プログラミング全般編

フロントエンド、バックエンド、インフラ、言語など、アプリ開発、IOT以外の記録

RSpecでvalidates_dateの日付テストがうまくいかない

課題 当日の日付との比較を行う処理を validates_timeliness の on_or_before を使って記述しているが、RSpecにテストを記述する際に日付の固定がうまくできず( Timecop も travel_to もNG )、現在日時との比較になってしまう。 # 未来日の入力はエラーと…

特定のタグをすべて含むアイテムを検索するSQL

全文検索エンジンとかを使わない普通のRDBの従来のテーブル構成の場合。 気づくまで時間がかかったのでメモっておく。ER図もないので分かりにくいけど。。 課題 あるアイテムに複数のタグが関連テーブル経由の外部テーブルとして紐づいていいる。 選択された…

LinuxベースのDockerからMySQL 8.0に接続するための記述

課題 MySQL8にDocker上に構築したRailsからアクセスしようとしたら以下のようなエラーが発生して接続できなかった。 Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open…

IdeaVimプラグインを使いつつTabキーによるインデントを可能にする

課題 JetBrailsのIDEにIdeaVimプラグインをインストールしているとエディタで複数行選択してからTabキーでインデントさせる処理が動作しない 対応 IdeaVimはVimでいうところの vimrc に相当する ideavimrc に対応しているらしい。.ideavimrc を起動時に読み…

schema.rbが実行エラーになる

課題 MySQLの生成カラムを使ったテーブル定義を行ったところ、構文内に含まれる文字列が schema.rbでエスケープされ、SQL実行時にエラーとなってしまう。 やりたかったこと(例) 年と月のカラムがあるのでdate型の生成カラムを作ってみた。 ALTER TABLE t1 …

オブジェクトの配列から文字列の配列を作る

課題 Rubyでこんな感じのオブジェクト配列があったとする。 "tags": [ { "id": 7, "name": "tag1" }, { "id": 8, "name": "tag2" }, { "id": 9, "name": "tag3" } ], これをStringの配列で返却したい。 "tags": [ "tag1", "tag2", "tag3" ] 対応 collectを使…

RRULEに関するメモ書き

カレンダーの予定のような繰り返しのデータ定義を実装するにあたり、RFC5545(旧RFC2445)のRRULEというのがあるのを知ったので それについて調べたメモ。中でも 3.3.10. Recurrence Rule についてのみ取り扱っている。 RFC 5545 - Internet Calendaring and…

S3のバケットをローカルに一括コピーする

課題 AWSのS3にバケットを作成したが、ローカルに保存して作業する必要が発生した。 対応 1ファイルずつならAWSのコンソールからダウンロードも可能だが、ファイル数が多い場合はAWS CLIで 取得する。バケットの中身を一括で取得するなら syncコマンドがよい…

Editing Swagger UIを使ったAPI仕様書の閲覧

はじめに swagger.jsonまたはswagger.yamlによって書かれた ドキュメントをHTMLで参照するには Swagger UI を使用する Swagger UI Serverの準備 ダウンロード 任意のディレクトリに移動し、swagger-ui.gitをチェックアウトする git clone https://github.com…

Docker systemコマンドとclean-up系コマンド

Docker 1.13でCLIが改善されたとの記事があったのでお試し。 https://www.infoq.com/jp/news/2017/02/docker-1.13 docker system - Docker Docker System docker system df Dockerのディスク利用状況がわかる。便利。 $ docker system df TYPE TOTAL ACTIVE …

DockerにMongoDBのデータをリストアする

課題 既存のMongoDBのデータがあり、そのダンプをDocker化するにあたって初期データとしてリストアしたい。 条件 Docker Composeは繰り返し利用するので初期データの投入に関わる処理は記述したくない あとからdocker-compose.ymlを書き直ししたくない ロー…

EchoサーバーをDocker化する

目的 Echoが起動するDockerイメージを作りたい 下調べ golangにはDockerのOfficialイメージがあるのでそれを使う https://hub.docker.com/_/golang/ 作業ディレクトリを決める $ cd ~/myapp 確認用ファイルの準備 ガイドを参考に、server.goファイルを作る h…

MongoDB:外部接続を許可

ローカルホスト以外からの接続を許可したい場合。 net:bindIpを使って定義する。 $ sudo vim /etc/mongod.conf # network interfaces net: port: 27017 bindIp: 0.0.0.0 # bindIp: 127.0.0.1 0.0.0.0 はどこからでもアクセス可能になるので注意。

Vagrant 環境にmysql-5.6をインストールする

Vagrant環境にMySQLをインストールする。 Vagrant セットアップ $ mkdir vagrant-mysql-5.6 $ cd vagrant-mysql-5.6 $ vagrant init ubuntu/trusty64 Vagrantfile編集 やることは2つ ポート開け メモリ拡張 $ vim Vagrantfile ポートを開放 guest: Vagrant …

dockerイメージのリポジトリ名とタグを設定する

Dockerの設定が完了したのでImageにタグをつけたい、またはDockerfileからビルドしたものの名前を付け忘れた、そんな時に。 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> a1e05daa2311 2 minutes ago 428.8 MB ubuntu 14.04 90d5884b1ee0 9 hour</none></none>…

MongoDBコマンドあれこれ

利用頻度が低くて毎度コマンドを忘れるのでメモ。 カッコが必要だったり必要なかったり間違いがち。 $ mongo > help help系 コマンド 説明 db.help() dbのメソッドを表示 db.mycoll.help() コレクションメソッドを表示 sh.help() シャーディングのヘルパーメ…

GoからMongodbに接続

MongoDBにGo言語でアクセスする。 Go向けの公式Driverは提供されておらず、mgoを使うよう案内される。 labix.org インストール go get gopkg.in/mgo.v2 Import import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) 接続 Dial関数にURLを渡して接続する。他…

Ubuntuに最新版Redisをインストールする

Vagrant上に構築したUbuntu 14.04にRedisをソースからコンパイル,インストールする ダウンロード、解凍 $ sudo apt-get update $ sudo apt-get install gcc python-dev tcl $ wget http://download.redis.io/releases/redis-3.0.4.tar.gz $ tar zxvf redis-3…

RubyからMongodbに接続

今更な話だけど読み返したMongoDBイン・アクション記載の接続方法が古くなってたのでメモ。 @client = Mongo::Client.new(['10.0.2.15'],:database => "tutorial") MongoDBはたまにしか触らないからその都度綺麗に忘れる。 参考 Ruby Driver Tutorial (2.0.0)

UbuntuにMongoDBをインストール

しばらくすると忘れるのでメモ。 Install sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.lis…

Snappy Ubuntuを試す

Snappy Ubuntu Coreがリリースされたので、Vagrant上で起動してみる。それだけの記事。 Boxを探す Ubuntu Snappyのイメージを探す。オフィシャルなものが2つほど見つかる。 ubuntu-15.04-snappy-core-stableというのが安定版のようなのでそちらを使うことに…

Docker Imageの履歴を確認する

docker inspect コマンドを使うことでImageの状態を知ることができるが、 docker historyコマンドを使うとImageに対してそれまでに加えてきた内容を知ることができる。 例としてOfficialのtomcatをダウンロードしてみる。 docker history コマンドはImageが…

VIコマンドリファレンス

vim

自己参照用のコマンドリファレンス。 必要に応じて随時更新 コマンドモード 移動コマンド コマンド 説明 h 左 j 下 k 上 l 右 0 行の先頭へ ^ 行の空白でない先頭へ $ 行の末尾へ e 単語の末尾へ E 単語の末尾へ(句読点を無視) w 次の単語へ W 次の単語へ…

MongoDB サーバーをバックグラウンドで起動する

課題 コマンドラインからmongodを起動する際、バックグラウンドで起動したい。 対応 --forkオプションを使用する。 --forkオプションは必ずログの出力先と同時に指定する必要があり、--logpathで出力先を直接指定するか、--syslogオプションでsyslogに出力す…

MongoDBのシェル実行結果をインデント表示する

課題 シェルスクリプトで操作しているが結果が見づらいのでインデント表示したい。 対応 pretty()を使う。 > db.values.find().sort({close:-1}).limit(1).pretty() { "_id" : ObjectId("4d094f69c96767d7a01a110d"), "exchange" : "NASDAQ", "stock_symbol"…

/* Responsive: yes */