Tagbangers Blog

Java

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

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

JS、Javaでサンプルプログラムを作ってみる

こんにちは、藤岡です。 今週も、先週に引き続きJavaとJavaScriptの勉強を進めました。 今週の課題として出していただいたのは、以下の3つです。 JSで四則演算を行うプログラムを作る JSで電卓を作る Javaで誕生日を入力し、年齢を算出させるプログラムを作る それぞれ、説明していきます。 四則演算プログラム(JS) このプログラムは、単純に「掛け算」、「足し算」、「引き算」、「割り算」を計算させるものです。 注意しなければならないのは、足し算を行う時です。というのも「+」を用いて計算させているため、数値が文字列として扱われてしまう危険性があるということです。そのため、「parseIn...

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

Hibernate Search 5.6 から Elasticsearch がサポートされました。 Hibernate Search は全文検索用のインデックスを Hibernate のエンティティのライフサイクルにあわせてリアルタイムに自動生成してくれます。 前回の記事では Elasticsearch の Docker イメージを使って簡単に動作を確認してみましたが、今回はさらに Maven のライフサイクルあわせて Docker の起動停止を行ってみます。 docker-maven-plugin を使うと、Maven の integration-test 実行時に Docker コンテナの...

Thymeleafでpomのversionを利用する

お久しぶりです。奥村です。 GWを明日に控えたこのタイミングで連休ボケする前に小ネタを1つ投稿しておきます。 pomのversion値を利用して、各バージョンごとでcssファイルなどのキャッシュをリセットさせたい!っといった要望があった際に利用する小ネタです。 pom.xml     4.0.0     com.example     sample     1.0.0.RELEASE application.properties pom.version=@project.version@ index.html 1.0.0.RELEASE -1138007634 ...

Elastic Beanstalk で catalina.out を CloudWatch Logs に出力する

Elastic Beanstalk は2016年12月にアップデートされたプラットフォームから、CloudWatch Logs との連携が強化され、コンソールからオプションを有効にするだけで、簡単にログが Stream に出力できるようになりました。 ただ、例えば Tomcat 環境であれば現時点では以下のログが対象になり、catalina.out が含まれません。 /var/log/eb-activity.log /var/log/httpd/error_log /var/log/httpd/access_log /var/log/nginx/error_log /var/log/n...

AWS SDK for Java 1.11.84 から Client Constructors が Deprecated になっていた

はじめに こんにちは、荻野です。 AWS Developer Blogを見ていてへぇ〜っとなったネタがありましたのでご紹介します。 AWS SDK for JavaでConstructorがDeprecatedになっていた 申し訳ないですが、タイトルのままですw 1.11.84 versionからの変更のようで、今後はbuilderを使うことが推奨されています。以下はAWS Developer Blogでも紹介されていたサンプルです。 こちらがConstructorパターンです。 AmazonSNS sns = new AmazonSNSClient(); そしてこちらはbuilderパターン...