埼玉在住エンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことについて残していきたいと思っています。https://ikujip.jpの開発も行っているため、そこで使った知識なども載せられればと思います。

MacにCentOS7のVagrant環境を構築

タイトルにある通り、MacにCentOS7のVagrant環境を構築した時のメモです。 必要なものをインストールしてvagrant sshでLinux環境に入れるまでの手順になります。バージョン情報 VirtualBox:5.1 CentOS:7.2まずはVirtualBoxのインストールです。 dmgファイ…

rbenvとruby-buildでMacにRubyをインストール

まず、Homebrewをインストールしてない方はそこからになります。 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 次にrbenvとruby-buildをインストールしてください。 brew install rbenv ruby-buildrbenvはRu…

ApacheとTomcatの連携でリダイレクトが上手くいかない

Javaで組まれたWebサイトをApacheとTomcatを連携させて動かしているのですが、 先日サイト改修により一部ページのURLも変更させた時のリダイレクト設定について苦労したのでそれについて書きます。 やりたいことは、「http://ドメイン/test/sample.html」と…

Spring Boot Devtoolsを使って自動再起動

Javaなどソースの変更をいちいちコンパイルをして確認する場合、 毎回コンパイルを手動でするのは面倒ですよね。 (慣れている人は何も感じないかもしれませんがw)Spring Bootでは自動でコンパイルをしてくれるツールがあるので、 少しは開発効率を上げるこ…

Spring Boot のJavaバージョンを変更

Intellijなど、IDEで開発する場合はJDKをインストールして使うので問題ないと思いますが、 本番環境にアップした場合などにJavaのバージョンを指定しておかないと開発環境で開発した通りに動作してくれないなどの問題が発生してしまいます。変更箇所はpom.xm…

Spring Bootの起動時にJDKのエラー(警告)が発生

Javaの一部JDKのバージョンでは、 Spring Bootの起動時に以下のエラー(警告)が発生することがあります。 /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/bin/java ... objc[3929]: Class JavaLaunchHelper is implemented in both /Libr…

NekoHTMLを用いて、Thymeleafの厳しい文法チェックを回避

ti-tomo-knowledge.hatenablog.comの記事にも書きましたが、Thymeleafは文法チェックが厳しく、通常のHTMLでは問題ないはずの書き方をしてもエラー扱いされてしまいコンパイルが通りません。 特に閉じタグに関してはmetaタグやinputタグなど、普段閉じタグを…

Centos6.7でRailsを動かす環境をVagrantとAnsibleで作成

タイトルの通りですが、ansibleでrailsの環境をvagrant上に作った時の設定を記します。 データベース(MySQL等)の設定は省いています。 バージョン情報は以下になります。 ruby : 2.2.3 Rails : 5.0.1 passenger : 5.1.2vagrantのディレクトリ下にhostsファイ…

Centos6.7でRailsを動かす環境をVagrantとAnsibleで作成

タイトルの通りですが、ansibleでrailsの環境をvagrant上に作った時の設定を記します。 データベース(MySQL等)の設定は省いています。 バージョン情報は以下になります。 ruby : 2.2.3 Rails : 5.0.1 passenger : 5.1.2vagrantのディレクトリ下にhostsファイ…

便利な$.contains

個人的にjQueryを書く時に便利だと思うがあまり使われているように見えないのが$.containsです。 使い方としては、$.contains(第一引数, 第二引数)のように書き、 第一引数が第二引数に含まれいてるかどうかの判定をします。どんな時に便利と感じるかといえ…

@PathVariableを必須にしない

Spring BootのGETリクエストでパラメータを設定した時、 パラメータを取得するには@PathVariableを使います。例えば以下のような@RequestMappingがあった場合、idは必須になります。 @RequestMapping(value="top/{id}", method = RequestMethod.GET) String …

rbenvを使ったRubyのインストールとバージョン変更

そもそもrbenvとは?というところですが、 rbenvは開発で使うRubyをインストールしたり、Rubyのバージョンを簡単に切り替えることができるツールです。 プロジェクトごとに別なバージョンに切り替えることも可能にする、大変便利なツールなのです。Linuxで使…

Node.jsとnpmの最新化

React.jsをgulpで起動させる設定をしていた時、 Node.jsとnpmのバージョンが低いためにモジュールのインストール時にエラーが発生しました。 ここではその時に両者をバージョンアップさせた方法を共有します。まずはNode.jsのバージョン確認です。 node -v v…

Spring BootでBean Validation (3) バリデーション処理を自作

ti-tomo-knowledge.hatenablog.com ti-tomo-knowledge.hatenablog.com上記2つのような流れで、BeanValidationにおける基本的なバリデーションの流れを見ていきましたが、 これらはあくまでBeanValidationやHibernateで事前に用意されたものです。 実際にサー…

Spring BootでBean Validation (2) エラーメッセージの多言語化

まずはti-tomo-knowledge.hatenablog.comを参考にしてmessage.propertiesを使って多言語化する流れを見てほしいです。 これを使えばバリデーション時のエラーメッセージの対応もすぐできます。Bean Validation のアノテーションは、通常messageというパラメ…

Spring Boot Thymeleafで多言語化

多言語対応でサイトを作ることが多い現代だからなのか、 最近のフレームワークは多言語対応がとても簡単です。ここではThymeleafに表示される文字を多言語対応する方法を共有します。 基本的にはmessages_ja.propertiesや、messages_en.propertiesというよう…

Spring BootでBean Validation (1) @GroupSequenceで順番にチェック

Spring Bootでは(Spring Boot以外にもBean Validation使ってるやつ全部ですが)、Serializableクラスに対して 「org.hibernate.validator.constraints」や「javax.validation.constraints」を使って、 @NotEmptyや@Sizeといったようにアノテーションを使うだ…

コンポーネントってなんだ?

近年Webの界隈ではコンポーネントというフレーズを良く聞きます。 フロントエンドで言えばReact.jsやAngular.js、サーバサイドで言えばJavaのフレームワークであるJSFなんかがそうですね。 また、コーディング関係だけではなく、デザインでもこれからはコン…

PHPとJavaのthis事情

プログラムを始めたばかりの人は、 ある程度の規模のソースを書くまでthisの意味を理解するのが大変ですよね。 PHPもJavaもthisの使い方は基本的には同じで、 あるクラスのメンバ変数やメソッドを指定する時に使います。 ちょっと違う点としては、Javaの方は…

Intellijで既存のプロジェクトをMaven管理に変換する

例えばti-tomo-knowledge.hatenablog.comで作ったような、Maven以外の形式で作成したプロジェクトに対して、 後からMaven管理にするように変換する手順を共有します。 正直手順ていうほど難しいこともないのですがwまずはプロジェクトを右クリックすると、 …

Thymeleafでth:valueが空になる!?

Spring BootでThymeleafを使う時、 HTMLのタグの中に「th:〜」という書き方でJavaの変数を使うことができます。例えば以下のようにすれば、 <input type="text" th:field="*{フィールド名}" /> inputタグのid、name、valueの全てを管理することができ、以下のHTMLタグが発行されます。 (valueは初期値なので空…

JavaEE7でHello, World

ti-tomo-knowledge.hatenablog.comでJFSを使ったFaceletsについて書きましたが、ここからは具体的にFaceletsを使った動作確認をしてみたいと思います。 まずは簡単に「Hello, World」の出力からです。 どこをググってもEclipseを使ったものの説明が多いので…

JSPはもう古い?Faceletsとは

8年くらい長い間JavaEEに触れてこなかったのですが、 最近触れてみるとかなり技術が変化していて驚きました。特に昔はJSPでビュー側を書いていたのに、最近ではFaceletsというものが出てきて いわゆるxhtml形式で書くのが主流になってきているんですね。 自…

NginxのサブディレクトリでphpMyAdminを起動

Nginxで、「ドメイン名/phpMyAdmin」でphpMyAdminにつなげるようにした時の設定です。 ドメインを入力すれば普通にアプリケーションに接続され、サブディクトリを指定すればphpMyAdminに接続できるようにする方法です。まずはphpMyAdminのインストールです。…

NginxでPHPを動かす

Nginxとは何じゃらほいというところからですが、ここは他のサイトを見た方が細かくわかりやすく説明されていると思うので説明は割愛させていただきますが、NginxとPHPの説明について軽く触れたいと思います。最初にPHPについてですが、モジュール版とCGI版が…

Vagrantにssh 192.168.33.10でパスワードなしログイン

vagrantの起動をした後、vagrant sshではパスワードなしでログインできるのに、 ssh 192.168.33.10だとパスワード入力を求められます。 これが上手くいかないと、chefとかansibleといったサーバ構成管理ツールを実行させる時に上手くいきません。 ただし、ti…

VagrantでAnsibleを使う(provision版)

AnsibleはサーバにSSH接続をして記述されたPlaybookの通りに実行されますが、 Vagrantで実行する場合は必ずしもSSH接続は必要ありません。 「vagrant provision」コマンドでもPlaybookを実行できるのです。※ちなみに今回はVagrantの設定方法については省略し…

HomebrewでMacにAnsibleをインストール

構成管理ツールといえば、ChefやAnsibleなど色々ありますが、今回はAnsibleを使ってみた時のメモです。Macはyumではなく、Homebrewでインストールを行います。 まずは以下コマンドで、インストールするAnsibleのバージョンを確認しましょう。 brew info ansi…

Spring Securityで複数のログイン機能を作る時、鍵を握るのは@Order

ti-tomo-knowledge.hatenablog.comまでで基本的なログイン機能のご紹介まで行いましたが、 実際Webアプリを作り出すと、「ユーザ用のログイン画面」、「管理者用のログイン画面」といったように、 ログイン画面を複数用意しなければいけない場面があるのでは…

@Builderのクラスに引数なしのコンストラクタを設置したい

@BuilderはLombokにより使えるライブラリで、 エンティティ呼び出し時にbuilderの生成を簡単にしてくれます。仕組みとして、例えば @Builder public class Test() { private int id; private String name; } とすれば、実際には以下のようなコンストラクタが…