こんな感じ。理由は周辺技術を表現できるから。 例えば、アプリケーション開発をしている人で「SQLだけできる」って人はまずいないと思う。SQLは得意で、次にその周辺のOR/Mapperやトランザクション周りが得意で、次にアプリケーションレイヤー、次にUI...っ…
go getとかは割愛。こんなファイルを作る。 syntax = "proto3"; option go_package = "proto"; package user; service UserService { rpc ListUser(RequestType) returns (stream User) {} rpc AddUser(User) returns (ResponseType) {} } message ResponseT…
テストのことを忘れてた。とりあえずクイックソートのコードを書いてみた。 func Sort(in []int) []int { if len(in) == 0 || len(in) == 1 { return in } m := in[0] lt := make([]int, 0) gt := make([]int, 0) for _, v :=range in[1:] { if v < m { lt =…
↓の続き GoでWebアプリケーションを作ってみる_雛形を作ってみる - doilux’s tech blog というか雛形作るというタイトルの割にはサーバーサイドはだいたい満足したので一旦これでよしとする。 今回は画面作ります。 この2つのサイトを参考にさせていただき…
前回の続きで、GoでTwitterライクなWebアプリケーションを作ってみる。 もろもろライブラリを取得 WAFにはechoを使うことにしたのでechoを取得 go get -u github.com/labstack/echo/... 公式サイトの通りにやったらサンプル動いた。 次にecho-scaffoldを取得…
Go始めました。tour of goが終わったので、Webアプリケーションでも作ってみようかと(でも横着してWAF使って作ろうと)思って、echo-scaffoldを入れようとしたらハマったのでメモ。 go get github.com/mattn/echo-scaffold Mercurialがねーぞっていうエラー…
【問題】東海道線 - doilux’s tech blogの応用編 問題 環状線で2つの駅が何駅離れているか求めよ。 例:山手線 No 駅名 1 東京 2 神田 3 秋葉原 .. ... 30 有楽町 function solve(get_on_at, get_off_at, num_of_stations) { // todo : 実装する } テスト a…
新人向けにゆるいアルゴリズムの問題を考えて見た。 問題 二つの駅が何駅離れているか求めよ。 例:東海道線 No 駅名 1 東京 2 新橋 .. .. 7 大船 function solve(get_on_at, get_off_at) { // todo : 実装する } テスト assert('テスト0', solve(1, 3) === …
いわゆるイベントドリブンな設計が好きだ。 CREATE TABLE ord_event( id NUMBER(10) PRIMARY KEY, payment_type VARCHAR(255) CHECK payment_type IN('full', 'installments'), ord_at DATE NOT NULL ); CREATE TABLE complete_event( id NUMBER(10) PRIMARY…
2018/04/20 本当に無料か?と色々調べてたどり着いたページ Colaboratory – Google とりあえずここに書いてある通りに動かして見たらKerasのサンプルが動いた。ただ、ランタイムをGPUにしないとimport kerasでこけた。 【秒速で無料GPUを使う】TensorfFow/Ke…
バッチ処置でSJISのファイル連携するとき、あらかじめ期待値ファイルを作ってnkfでSJISに変換してアサーションってやってたんですが、Spock(というかgroovy)で簡単にかけた。 def exFile = new File('./ex.csv').withWriter('Shift_JIS') { f -> f << “あ…
SQLで業務ロジックを書くことはないですが、稼動確認とか、不正データ、怪しいデータを検出したい時とかはSQLを使うと便利だと思うことがあります。自分が最近使ったパターンを紹介します。 前提 こんな感じで、エンティティに発生したイベントを記録してい…
短い名前をつけるとコミュニケーションの円滑化に繋がると言う話。「お客様が〇〇する際に〇〇を選択できるようにする件」とか、「〇〇からの要請で〇〇時に〇〇を返すようにする件」とか。自分的にはAppleにみたいに地名とか国名をつけるのは結構好き、あと…
ネタがないのでブログについて書くことにした。 毎年、年初に技術ブログを書きはじめるのですが、だいたい三日坊主で終わってました。 ただ今年は長く続いています。 心がけていることは以下 人に読んでもらうことを意識しない ブログを書く目的を、あくまで…
直積集合を作るライブラリを作りました。 GitHub - doilux/cartesian-product これを使ってテストコードを書いてみます。 (注意:上記のライブラリのIFを変えたので、下記コードは参考です) プロダクトコードはこんな感じ public class DrivingResolver { …
こんなクラスがあったとき public enum Vehicle { BIKE(false), MOTOR_CYCLE(true), CAR(true); private final boolean needLicence; Vehicle(boolean b) { needLicence = b; } @Override public String toString() { return this.name(); } public boolean …
例えばこんなメソッドがあって int convert(String str /* nullかもしれない */ ){ return Optinal.ofNullable(str.length()).orElseThrow( () -> new RuntimeException()); } Spockのthrownで以下のようなテストをすると通るのでバグに気づかない(NullPoint…
経験上、なぜなぜ分析からその流れで改善案を出そうとすると大体変なTryになります。 簡単な例をあげます。 バグが出た なぜ? -> テストできていなかった なぜ? -> コードレビューで見落とした Try -> コードレビューのチェックリストに追加 間にググるを…
こんな感じで設定ファイルを書くと、./gradlew startDbContainerでコンテナがバックグラウンド起動します。 buildscript { repositories { jcenter() } dependencies { classpath 'com.bmuschko:gradle-docker-plugin:3.2.4' } } // use fully qualified cla…
僕のDockerについてのゆるい知識にによると、内部的にDockerFileに記述されたステップごとにイメージを持っているため、DockerFileに記述を追加したときには差分だけの反映で済むので比較的高速にイメージの再構成ができたと思う(まちがってたらすみません…
github.com gradleのDockerプラグインを使って事前に準備しているDockerFileからイメージを作りたい。基本的には上記の通りにやったらできました。 ディテクトリ構成はこんな感じです ... ├── build.gradle ├── docker │ ├── centos │ │ ├── Dockerfile <- …
イメージ作ってすぐ起動 docker build ./ -t mymysql && docker run -p 3306:3306 mymysql コンテナみんな死ね!! docker ps -aq | xargs docker stop | xargs docker rm
https://hub.docker.com/r/centos/mysql-57-centos7/ このイメージを使うと一つのDB、ユーザーは簡単に作れるけど、複数のDBを作りたいときにどうすればいいかわからなかったので、コンテナを起動したときに何が起きているのかをDockerFileから追ってみまし…
Dockerコンテナ内でテストを動かすことに成功したのでやり方をまとめます。 MySQL + jdk8のイメージを作る まずはこれがなければ話になりません。MySQL公式イメージのDockerFileにOracle-JDKをインストールする記述を足しました。 MySQL公式イメージはこちら…
下記の通りにやったらプロダクトコードには組み込めた。 qiita.com ただ、テストでは使えなかった。 下記のリンク先にある通り、flyway-spring-testを依存関係に入れて、@FlywayTestをつけるとテスト実行時にflywayのマイグレーションが走った。 github.com …
SpringでDBのテストをするときに@Transactionalをつけるとテストメソッドの実行が終わるたびにロールバックしてくれるので便利なんですが、シーケンスがロールバックされないでテストがコケるという問題があります。 解決策は単純でsetupでシーケンスの初期…
insertの戻り値で取得する方法があると思ってたんですが、mutableなクラスにセットさせる方法しかなかったです。 まずはIDをセットするためのクラスを作り class GeneratedEmployeeId { var value: Int? = null fun setValue(v: Int) { value = v } fun conv…
イメージをpullします コンテナの起動 docker pull mysql:5.6 コンテナを起動します。 docker run \ -p 3306:3306 \ --name mysqld \ -e MYSQL_DATABASE=hr \ -e MYSQL_USER=hr \ -e MYSQL_PASSWORD=hr \ -e MYSQL_ROOT_PASSWORD=password \ -d mysql 以下が…
テストを動かすとInjectできなくてNullPointerExceptionで落ちる。くっそはまったのでメモ。 テスト対象クラス @Component public class TestService { public int test() { return 1; } } JUnitの場合 @RunWith(SpringRunner.class)が抜けてました。 @RunWi…
過程で色々詳しくなったのでメモ やりたかったこと 下記記事で、Oracleをdockerコンテナで動かすことができました。 Oracleをdockerで動かす - doilux’s tech blog そもそもなんでdockerで動かしたかったのかというと、JenkinsのDBのIOのテストをスケールア…