茶の間で読めるITチップス

情報セキュリティ、ITの便利用途など直ぐに役立つ知見を発信してきます!

純粋な技術系の記事はQiitaに投稿することにした理由

今までは、このブログで技術メモをしていたが、書きやすさ、コードを載せた時の見た目、フィードバックを貰える可能性を考えて、Qiitaに投稿することにした。

1,書きやすさ

 はてなブログでは見たまま編集で記事を書いていたため、Qiitaで初めてマークダウンを知った。調べたらはてなブログもマークダウンで書けたみたいだから、あんま関係ないか・・・。でもQiitaだと、コードを載せた際に、プログラミング言語によって色が変わるし、他にもいろいろ技術系に特化してるからいいよね^0^

2,見た目

 これはQiitaの方が見やすいって思うから。以上!

3,フィードバック

 これが一番大きい!!技術ブログを書くのは、アフィリエイトが目的ではなく、勉強と転職の武器にすることが目的なので、やっぱりフィードバックが貰えるのはありがたい。まだ無いけど^^;

 

まずはQiitaをできるだけ毎日投稿を頑張って認知してもらわねば!

qiita.com

SpringBootを爆速で入門する

 今までに何度かSpringBootを学んだのですが、何度も挫折したので、以下の書籍を購入してチュートリアルを参考に作ることにした。

少し古く、自分で調べないといけない箇所もあるので、そのまま動くものが良い場合は最新の入門書を探した方が無難かもしれないです^^;(自分はH2DBの接続がそのままではできず、困りました・・・)

ただ内容の割には、とても安いのでコスパは最高です!

 

この記事では、上記の書籍で自分で調べないと進めない部分を記録していきます!

①gradleではなくmavan

 上記の書籍では、全てmavenでビルドしています。今からSpringBootを始める人は、mavenよりもgradleを学習したい人のほうが多いかなと思います。自分は最初なので、とりあえずmavenで一通りやりましたが、gradleでどうしてもやりたい人は自分で調べるか、別の書籍で学習したほうが良いかもしれません。

 

②H2DBの接続ができない

 これは全員ができないわけでは無いと思いますが、自分は書籍の通りに実施しても上手くいきませんでした。DBに関しては、ローカルでDBをインストールするか、Dockerを使えば良いと思うので、そんなに問題は無いかなと思います。

 

STSEclipseの動きが不安定

 これに関しては、書籍は関係ないですが、初期の学習で上記のIDEを使うと無駄にハマる可能性が高いです。自分はUbuntuSTSを使っていましたがHelloWorldすら出せませんでした。どこが悪いのかがわからなかったので、諦めてvscodeで環境構築したら、スイスイ進みました。

どの書籍も同じかもしれませんが、こういうことがあるので注意です。

 

④バージョンが古い

 これは最新の書籍以外はしょうがないことかなと思います。bootstrapに関しては、タグが効かないものもあるので、自分で調べるか飛ばすのが良いと思います。(bootstrapを学習する本では無いので)

 

junitのバージョンが古い

 ④とかぶるのですが、junitに関しては、プロジェクト作成するとデフォルトで最新が指定されているので(今はjunit5で書籍はjunit4)、存在しないタグが出てきます。

org.junit.Assertとorg.junit.runner.RunWithが存在しなかったので下記の記事で調べました。

Spring Boot + JUnit5 + Kotlin でテストを書く - Qiita

 

終わりに

 いろいろ挙げましたが、なんだかんだ言っても、わかりやすくて安いので自分的にはオススメできます!挫折せず最後までいけたので、ボリューム的にもちょうどよいです。

最後に書籍を読みながら作ったチュートリアルを載せときます。

GitHub - RSrepository/SpringTutorial: Learn Spring through tutorials

 

Kindle本をPDF化する方法

Kindle For PCで技術書を読みながら作業をしたいのですが、ソースコードのコピー&ペーストがWebページと同じようにはできず、かなり使いづらい。というわけでPDFに変換したのですが、少々苦労した。

Kindle本をPDF化(※悪用厳禁)

以下の記事を参考にして進めた。

完全無料!Amazonで購入したKindleの縦書き電子書籍をPDFに変換する方法

ただKindle For PCのバージョンが1.24以下じゃないとできない!最新でやったらダメでした。

下の記事でその事実を発見した。

https://men3pon.blogspot.com/2018/02/kindlepdf.html

また同じようなことになった時に調べるのが大変なので、調べたURLのメモとして、記事を書いた。

git did not exit cleanly (exit code 128)の対処

windowsで久しぶりにgitを使ってcloneをしようとしたらgit did not exit cleanly (exit code 128)のエラーが発生。

試しに既に存在するリポジトリで、gitコマンドで操作(pullなど)→同じくエラー

パスも何度も確認したが、正しく、ググって試したが、治らないので、アンインストールして、再度インストールをすることにした。

→結果治らず・・・

 

Git - git clone ができない|teratail

上記のURLで作業フォルダを変えたらできたような話があったので、新しくフォルダを作ってその場所でgit cloneをしたら成功した!

原因はわからないですが、作業フォルダを変えたら、自分と同じように治るかも^^

 

DockerにGradleとSpringBootの開発環境構築(その2)

前回はAlpineLinuxでGradleのパスが上手く通らなかったので、慣れ親しんでいるubuntuで構築することにした。

この記事の目標

① Docker内でGradleでビルド&実行(とりあえずspringbootは無し)

② ①で成功したコマンドをDockerfileに追記してdocker run

 

① Docker内でSpring BootをGradleでビルド&実行

Dockerfile

FROM ubuntu:18.04

イメージの作成。

ubuntu:~/environment/sample_java $ docker build -t springboot:2 .
ubuntu:~/environment/sample_java $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot 1 9d36d8bf12cd 27 hours ago 108MB
ubuntu 18.04 549b9b86cb8d 4 days ago 64.2MB
springboot 2 549b9b86cb8d 4 days ago 64.2MB
alpine 3.10 965ea09ff2eb 2 months ago 5.55MB

Docker起動~Gradleインストールまで。

ubuntu:~/environment/sample_java $ docker run -it springboot:2
root@3a9f5196ce35:/# apt-get update
root@3a9f5196ce35:/# apt -y install openjdk-8-jdk
root@3a9f5196ce35:/# apt-get install zip unzip
root@3a9f5196ce35:/# apt -y install curl
root@3a9f5196ce35:/# source "$HOME/.sdkman/bin/sdkman-init.sh"
root@3a9f5196ce35:/# sdk install gradle

Gradleでプロジェクト作成。

root@3a9f5196ce35:/# cd root
root@3a9f5196ce35:~# mkdir myApp
root@3a9f5196ce35:~# cd myApp
root@3a9f5196ce35:~/myApp# gradle init --type java-application
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 1
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 4
Project name (default: myApp):
Source package (default: myApp):
root@42802f77ac46:~/myApp# ls
build.gradle gradle gradlew gradlew.bat settings.gradle src

とりあえずsdkインストールまでをDockerfileにして起動してみる。

上記のコマンドをRUNを付けて、そのまま作成したのですが、以下のように怒られて、どうしてもsdkだけインストールできなかった。

/bin/sh: 1: sdk: not found
The command '/bin/sh -c sdk install gradle' returned a non-zero code: 127

→以下のサイトで解決

sdkmanはJavaをdockerfileにインストールしません - dockerfile - Program QA

 Dockerfile

FROM ubuntu:18.04
ENV SDKMAN_DIR=/root/.sdkman
RUN apt-get update
RUN apt -y install openjdk-8-jdk
RUN apt-get install zip unzip
RUN apt -y install curl
RUN curl -s "https://get.sdkman.io" | bash
RUN echo "sdkman_auto_answer=true" > $SDKMAN_DIR/etc/config
RUN echo "sdkman_auto_selfupdate=false" >> $SDKMAN_DIR/etc/config
RUN bash -c "source $SDKMAN_DIR/bin/sdkman-init.sh && sdk install gradle"
WORKDIR ~
RUN mkdir ~/myApp
VOLUME ~/myApp

無事起動できたのでOKとする。

ubuntu:~/environment/sample_java $ docker run -v ~/environment/sample_java/myApp:/root/myApp -it springboot:1
root@42802f77ac46:/~#

 

DockerにGradleとSpringBootの開発環境構築(その1)

少し前の記事(DockerでjavaのWeb環境構築 - ドン底から這い上がる学習記録)でdockerにjavaのWeb環境を作成したので、次はGradleとSpringBootの開発環境構築をする。

この記事の目標

① Docker内でSpring BootをGradleでビルド&実行

② ①で成功したコマンドをDockerfileに追記してdocker run

③ Gradleでビルド&実行ができるか確認

 

Docker内でSpring BootをGradleでビルド&実行

まずは以下のDockerfileを作成

Dockerfile

FROM alpine:3.10
RUN apk update
RUN apk add openjdk8
RUN apk add curl

docker buildを実行したけど、イメージ名が小文字じゃないとだめとエラーが出たので小文字にして実行。

ubuntu:~/environment/sample_java $ docker build -t SpringBoot:1 .
invalid argument "SpringBoot:1" for "-t, --tag" flag: invalid reference format: repository name must be lowercase
See 'docker build --help'.
ubuntu:~/environment/sample_java $ docker build -t springboot:1 .

イメージができていることを確認。

ubuntu:~/environment/sample_java $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot 1 9d36d8bf12cd 4 seconds ago 108MB
alpine 3.10 965ea09ff2eb 2 months ago 5.55MB

springbootという名前でイメージを実行してログイン。

ubuntu:~/environment/sample_java $ sudo docker run -it springboot:1
/ #

コンテナ内でGradleのインストール

/ # wget https://services.gradle.org/distributions/gradle-6.1-rc-1-all.zip
/ # unzip gradle-6.1-rc-1-all.zip
/ # mv gradle-6.1-rc-1 /usr/local/bin/
/ # echo 'export PATH=$PATH:usr/local/bin/gradle-6.1-rc-1/bin' > ~/.profile
/ # source ~/.profile

 gradleコマンドが使えるか確認

/ # gradle -v
------------------------------------------------------------
Gradle 6.1-rc-1
------------------------------------------------------------
Build time: 2019-12-19 21:56:43 UTC
Revision: 091da954cc24262bb056965f70f172e1e587e9ca
Kotlin: 1.3.61
Groovy: 2.5.8
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM: 1.8.0_222 (IcedTea 25.222-b10)
OS: Linux 4.15.0-1056-aws amd64

環境変数にパスが通っていることを確認したので、作業フォルダ内でjavaプロジェクトを作る。

/ # cd ~/myApp
~/myApp # gradle init --type java-application
/bin/sh: gradle: not found

え!環境変数通したのに・・・なぜかルートしか通らない。

→とりあえず解決できないので、Alpineはサヨナラしてubuntuで作ることにする。

 その2に続く

DockerでRailsの開発環境を作ってみる(その②)

前回(DockerでRailsの開発環境を作ってみる(その①) - ドン底から這い上がる学習記録)、docker + rails + mysqlで環境構築に取り組んだのですが上手くいかなかったので、公式(Quickstart: Compose and Rails | Docker Documentation)を参考に作ることにした。

この記事の目標

公式がそのまま動くか確認

 

公式がそのまま動くか確認

以下のコマンドで失敗

 
ubuntu:~/environment/sample_ruby $ docker-compose run web rails new .
--force --no-deps --database=postgresql
 

 Permission deniedというエラーが出たのでsudoを付けて実行。

 
An error occurred while installing nokogiri (1.10.7), and Bundler cannot
continue.
Make sure that `gem install nokogiri -v '1.10.7' --source
'https://rubygems.org/'` succeeds before bundling.
 

ノコギリがどうのこうのとかいうエラーが出た・・・

いろいろ調べたのですが、一向に解決できないので、とりあえず別のことやろうかな^^;