miyohideの日記

技術的なメモなどを記しています

2018年12月11日(火)

東京ってこんなに寒かったっけ?

マルチカーソル

何の気なしにはてなブックマークを見ていたら、「マルチカーソルを使わないVSCodeはただのVSCodeだ!」という記事が話題になってました。

mugi1.hateblo.jp

こういう動画付き解説を見ると自分もやってみようと思うんですが、なかなかキーバインドが覚えられないんですよね...。で、飽きてしまっていつの間にか忘れてしまうというパターン。

最近はIntelliJ IDEAで操作することも多く、それでもマルチカーソルはできるみたい。紹介記事(RubyMineのケースですが)が見つかったので併せてメモ。

blog.jetbrains.com

何度めかのマルチカーソル挑戦、やってみようっと。

2018年12月10日(月)

冬将軍到来って感じ。引きこもりたい。

standalone-migrations

先日「PostgreSQLでcreate tableってどう書くの?」って疑問にぶち当たりました。大体雰囲気では分かっていたのですが、auto incrementとか主キーの設定とか型とかいろいろとRDBMSごとに方言があるので結構辛い。マニュアル片手に調べるのもいろいろと面倒くさかったのでRailsのmigrationの仕組みを使おうと考え、たどり着いたのが、standalone-migrations gemの利用でした。

github.com

使い方

gemのインストール

まずはgemをインストール。

$ gem install standalone-migrations

今回使ったのは5.2.6というバージョンでした。

$ gem list | grep standalone
standalone_migrations (5.2.6)
$

Rakefile作成

その後、Rakefileをカレントディレクトリ直下に作ります。

require 'standalone_migrations'
StandaloneMigrations::Tasks.load_tasks

migrationファイルの作成

次にdb/migrate/以下にテーブルを作成したりカラムを追加したりするmigrationファイルを作ります。今回はテーブルを作りたかったのでdb/migrate/001_create_tasks.rbというファイルを作り、中身を次のようにします。

class CreateTasks < ActiveRecord::Migration[4.2]
  def change
    create_table :tasks do |t|
      t.string :subject
      t.date :deadLine
      t.boolean :hasDone
    end
  end
end

ActiveRecord::Migration[4.2]のようにバージョン番号を入れる必要があります。入れないと実行時に

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

というエラーメッセージが出力されてmigrationがうまく実行できません。

設定ファイル

最後に設定ファイルをdb/config.ymlに記します。ここではmacOSで動作確認するためだけにSQLite3の設定例を記していますが、お好きなRDBMSの設定をしてください。

development:
  adapter: sqlite3
  timeout: 5000
  database: db/development.sqlite3

実行

最後にコマンドを実行します。

$ rake db:migrate
== 1 CreateTasks: migrating ===================================================
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- create_table(:tasks, {:id=>:integer})
   -> 0.0006s
== 1 CreateTasks: migrated (0.0007s) ==========================================
$

確認

SQLite3でテーブルができていることを確認します。

$ sqlite3 db/development.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE IF NOT EXISTS "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY);
CREATE TABLE IF NOT EXISTS "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);
CREATE TABLE IF NOT EXISTS "tasks" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "subject" varchar, "deadLine" date, "hasDone" boolean);
CREATE TABLE sqlite_sequence(name,seq);
sqlite>

今日はここまで。

2018年12月4日(火)

最近、また業務でSpring Bootをいじっている。

Spring BootでDB migration

今回ここで使用するのは、

という環境。

JavaでのDB migrationツールといえばFlywayらしい。

Flyway by Boxfuse • Database Migrations Made Easy.

もうひとつ、Liquibaseってものがあるようだけれども、こちらは未使用。

Spring Bootで使うためには以下に記されているプラグインを入れる。

Spring Boot - Community Plugins and Integrations: Spring Boot - Flyway by Boxfuse • Database Migrations Made Easy.

その後は、src/main/resources/db/migration以下にVxx__yyyyyy.sqlってファイルを作っておけばOK。

Spring Boot Reference Guide

さて、肝心のcreate tableを書くときになってピタッと手が止まる。create tableってどう書くんだっけ?

対象のPostgreSQLで言えば次のような文法。

PostgreSQL: Documentation: 11: CREATE TABLE

ずっとRails wayに乗っていたので、いきなりJavaに移るといちいち立ち止まってしまう。

2018年12月1日(土)

もう12月です。今年は本当にいろいろなことがあったなあ。

Daily UI Design Challenge

Yahoo! JAPAN Tech Advent Calendar 2018の12/1分エントリー。

techblog.yahoo.co.jp

うちの会社ではデザイナーっていう人はあまりおらず、大抵のプロジェクトはエンジニアがなんとなくな感じでサイトをデザインすることが多い。そういう傾向があるので、良いデザインを知るっていうのは良いかも。

上記サイトで紹介されていたDribbbleやUPLABSは良いデザインを知るために良いサイトっぽい。

dribbble.com

www.uplabs.com

2018年11月29日(木)

寒くなってきた。

ドメイン駆動設計

最近、なんだかどこでも「ドメイン駆動設計」って単語を聞く。その単語を聞くたびに、昔『エリック・エヴァンスのドメイン駆動設計』や『実践ドメイン駆動設計』を読んだんだけれども、ちんぷんかんぷんだった記憶が蘇る。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)

そんな挫折感たっぷりの中、『「実践ドメイン駆動設計」 から理解するDDD 』というスライドが目に止まった。

www.slideshare.net

早速読んでみるが、スライド枚数が100枚を超えていたので今日一日で読み終えるのはやめてじっくり読み進めることにしよう。

2018年11月27日(火)

最近ここの更新ができていないのは、情報のアンテナに引っかかるネタを見つけきれてないから。眼の前の仕事にいっぱいいっぱいな気がする。

Springのサポート期間

個人的に最近びっくりしたのがこれ。Spring Frameworkのサポートに関する記述。

github.com

これを見ると、

5.0.x has been superseded by 5.1.x already but keeps being supported for Boot 2.0's lifetime still (~ March 2019).

って書いてあって、「え?まじで?!最近Spring Boot 2.0.xに移行したのに2019年3月末にはおしまいってこと?」って感じ。

その上にも

5.1.x is the latest and recommended line, supported until the end of 2019 (to be superseded by the longer-lived 5.2.x in mid 2019).

と書いてある。う〜ん、今の時期にJavaアプリのフレームワーク選ぶの、どれがいいんだ?って感じ。

Gradle 5.0

Gradle 5.0がリリース。

Gradle 5.0 Release Notes

雰囲気でGradleを使っているんだけれども、だんだんわかんなくなってきた。今回のバージョンの目玉としてはJava 11対応なのかな?

そういやMavenとGradle、まだまだMaven使う人が多いみたいなんだけれども、なんでなんだろう。個人的にはXML書きたくないのでGradleにしているんだけれども、Mavenが支持されているのはなにか理由があるのかな。

2018年11月22日(木)

Text Tables

窓の杜経由で見つけたVisual Studio CodeプラグインMarkdownでテーブル拡張を書くときに便利なプラグイン「Text Tables」。

forest.watch.impress.co.jp

marketplace.visualstudio.com

ちょっと試したところ、日本語を含むとうまく動かないみたい。これからに期待って感じ。

仕事では、「表があるのでExcelで」という人が主流を占めていてですね。

「せめて、Wordにしませんか?」

って思うんだけれども、なかなか受け入れてもらえない。

個人的にはテキストファイルで...って思うんだけれども、なかなか難しいなあ。