Tagbangers Blog

Java

Spring Cloud Contract の Pact 対応

先日行われた Spring Fest 2018 で「Spring Data REST と Spring Cloud Contract」というタイトルで登壇させていただきました。 デモがあればわかりやすかった、というご意見をいただきましたので、ちょっとしたサンプルコードを公開しました。 話のもとになっているスライドはこちらです。 https://www.slideshare.net/OgawaTakeshi/spring-datarestandspringcloudcontract 今回のサンプルコードは Angular で作られたフロントエンドアプリが Consumer として Pact を生...

The temporary upload location [/tmp/tomcat.***] is not valid

Spring Boot のアプリでファイルアップロードの機能が突然以下のようなエラーで機能しなくなるようなことがありました。 java.io.IOException: The temporary upload location [/tmp/tomcat.4973725229945795147.5000/work/Tomcat/localhost/ROOT] is not valid 原因は以下。 https://github.com/spring-projects/spring-boot/issues/5009 https://github.com/spring-projects/spring...

JUnitテストについて

暖かくなったり寒くなったり毎日着る服に困りますね。こんばんは、内藤です。 今回はユニットテストについて書いていきたいと思います。 テストと言われたら、テスト仕様項目書を書いてそのテストを黙々とこなしていく方法しか知らなかった為、 テスト用のコードを書いてビルド時に自動的に実行してくれるなんて便利すぎるだろと感動しました。 JUnitテストって? Javaプログラム単体テスト専用フレームワークです。 ユニットテストを描くことによって正しく動作しているか確認できます。 また、一度描くと何度も手軽にテストを行うことができますし、 同じようなテストを作成する場合に使い回すことも可能です。 今回、私はC...

Javaの再勉強

初めまして、2月1日からタグバンガーズで勤務することになりました内藤です。 以前の会社ではactionScriptとJavaを主に使ってました。 1〜23日の間、Devチームにて研修をさせて頂いたのですが、Javaを使っていた私は謎の余裕に満ちてました。 いざ研修が始まってプログラムを組むってなった時、javaの知識がパッと頭の引き出しから出せない事に気付きました。 javaだけでプログラムが書けない、文字表示すんのどうすんだっけ、あぁSystem.out.printか、全然覚えてないわ ってな感じだったのでこれは勉強しなきゃマズイと思いこそこそjavaの再勉強と再発見をしていきました。 その...

Hibernate Search + Elasticsearch を試してみる (Amazon Elasticsearch Service 版)

前回の記事では Hibernate Search を使って Docker コンテナ上の Elasticsearch と連携してみました。 今回は AWS のフルマネージドな Amazon Elasticsearch Service と連携させてみましょう。 記事中のサンプルコードはここにあります。 環境: Mac OS X Hibernate Search 5.8.0.CR1 Amazon Elasticsearch Service (Elasticsearch version 5.5) 1. Elasticsearch Service を作成する AWS マネージメントコンソールの Elas...

ユニットテストを実装してみる

こんにちは、藤岡です。 今週はユニットテストについて学びました。 ユニットテストとは、プログラムを構成する個々のメソッドが正しく機能しているかを確かめるためのテストのことです。 ユニットテストのメリットは、全体でテストをするよりも細かく分けてテストをした方が、バグの原因がどこにあるのか突き止めやすいことと、テストを意識してプロダクションコードを書くことで結合度を低く保てるため、互いに影響を及ぼしにくくなるところです。 一方で、これは開発者によって実施されるため、開発者にかかる負担が大きくなりやすいというデメリットもあるそうです。 今回僕がやるのは、今まで作ってきたプログラム(cat、ls、ch...

Basic認証をJavaで導入する2

こんにちは、藤岡です。 四苦八苦して、やっとJavaで作ったWebサーバアプリにBasic認証を導入することができました。 このプログラムの概要については、前回の記事で説明してあります。 完成したものは、GitHubにあげておきました → https://github.com/hiroki0976/Server2 このプログラムを作る中で、Socketの使い方と、Threadの性質、Input(Output)Streamクラスの性質がよく理解できました。 特にInput(Output)Streamクラスについては、流れの概念を表すクラスで、一度使用すると消えてしまう特徴があったので理解しにくか...

Basic認証をJavaで導入する

こんにちは、藤岡です。 今週は前回作ったWebサーバアプリの改良をしていたのですが、Basic認証の機能を追加するところでつまずいてしまったので、あまり進められませんでした。 しかし、考え方として多くを学び得ることができたので、共有していきます。 Basic認証とは? 僕はこのサイトでBasic認証の概要を掴みましたが、大まかに説明すると、その名の通り簡易的な認証機能のことです。 ブラウザでこの機能が実装されたURLにアクセスすると、このような画面が出てきて、UserNameとPasswordが正しければ先に進めるというものです。 今回は、これをJavaで作ったWebサーバアプリに組み込んでみ...

Javaでlsコマンドを作る

こんにちは、藤岡です。 今週も、先週に引き続き「ターミナルのlsコマンドをJavaで作る」ということをやりました。 ようやく完成に近づいたので、それを共有したいと思います。試作品はこちらです。 このプログラムを作るに当たって、ポイントとなったのは オプションが指定された時にそれをどう受け取るのかということ オプションが指定された時にそれぞれどう場合分けして処理させればいいのかということ ということです。 それぞれどう対処したのかを解説します。 1. オプションをどう受け取るか これが最初の難関でしたが、Character型の配列に指定されたものを追加していくという方法で解決しました。 具体的に...

ターミナルのコマンドをJavaで作る

こんにちは、藤岡です。 今週も学んだことを共有していきたいと思います。 今週はパソコンの受け継ぎを行ったので、MBAからMBPにグレードアップしました。 いつの年のものかは知りませんが、明らかにPCの解像度が綺麗になっていたので、時代の進歩を感じました。 また、キーボードもApple純正の「Magic Keyboard」になり、ディスプレイも2画面から3画面となったことで、作業がかなり快適になりました。 自分にはもったいない環境だとは思いますが、是非とも活用していきたいです。 さて、今週は主にJavaについて学んだのですが、以下の2つの課題を出していただきました。 javaでcatコマンドを作...