- 1. Java8でZIPからFileSystemを使おうとしててこずった話
- 2. [Processing] GT Forceを使ってみる。
- 3. Selenideのshould、shouldBe、shouldHaveの違い
- 4. 【Kotlin】Enumを使用した処理の実例
- 5. IntelliJ+Jersey+Spring FrameworkでRESTfulAPIのマルチモジュールサンプル
- 6. まいくろさーびすあーきてくちゃメモ
- 7. スッキリわかるサーブレット 第13章のdocotsubuがPostgreSQLに繋がらない問題
- 8. #1 世知辛い初心者エンジニアの壁 ~エンジニアになりたい君へ~
- 9. ウイルス性肺炎と診断されたエンジニアの約2か月の在宅勤務記。
- 10. MySQL に UUID のデータを 16 byte で保存する
- 11. Jersey+Spring FrameworkでRESTfulAPIの最小構成サンプル
- 12. mDNSでAndroidからRaspberryPiを探す
- 13. 初心者がスッキリわかるシリーズでJavaを学んでみた
- 14. Mavenの基本勉強メモ
- 15. 【Java】カレントディレクトリの取得方法
- 16. stack の pop() と peek() の違い
- 17. オブジェクト指向(Java)基本
- 18. CUIとGUIの違い
- 19. javaが動く手順について
- 20. [Logback]ローテーション時に不要ファイルが消えない時の対処方法
Java8でZIPからFileSystemを使おうとしててこずった話
Javaでは「ZIP」や「JAR」形式のファイルを「FileSystem」として開けます。
(Java上ではZIPも「JAR」として扱われます。)ところがあるときどうやってもうまくいかなかった。
原因というか結論:「実行環境次第で使えない時がある」備忘録として記事にします。
(環境:Win10でJava8)### FileSystems.newFileSystem の使い方
まず、前提となる使用法を記しときます。
FileSystems.newFileSystem()というメソッドを使います。
対象ファイルの指定は Path か URI が使えます。#### 1. Path で指定する方法
“`java
final Path zipfilePath = Paths.get(“C:/a.zip”);
try{
FileSystem fs = FileSystems.newFileSystem(zipfilePath, null);
}catch(Exception e){
e.printStackT
[Processing] GT Forceを使ってみる。
##はじめに
今回は、PCでGT Forceを接続してみたという話。Processingという言語を使うと簡単に使えるようになるので、ぜひお試しいただきたい。ゲーム用のコントローラが自由に使えるようになるとやれることが広がるのではないか。今回の内容は「自作のいろいろ」様のサイトの情報をもとに行った。筆者もはっきりこのライブラリを理解しないため、説明が不十分なところがある。筆者のメモ程度の内容であることをご了承いただきたい。[自作のいろいろ様のサイト](https://garchiving.com/how-to-gamepad-in-processing/)
使用するGT ForceはPS2用のもので非常に古いものである。調べてみると、このハンドルコントローラーはWindows10に対応していないとの記述もあったが、GT Force Pro用のものを使用したところ、無事Windows10で使うことができた。ただし、logicoolのセットアップソフトでは、ペダルが反応しなかった。故障かと思ったが後のプログラムでは動作した。
##実行環境
・Windows10 64bit
・Pro
Selenideのshould、shouldBe、shouldHaveの違い
[SelenideのQuick Start](https://selenide.org/quick-start.html)をやっていて、Assertionメソッドにshould、shouldBe、shouldHaveの3種類(と否定を表現するshouldNot、shouldNotBe、shouldNotHaveの3種類)があり、使い分けがよく分からなかったのでそれを整理したメモです。
## 違い
まず、自分の英語力が足りていませんでした。
以下のやりとりでもある通り、should、shouldBe、shouldHaveは同義語となるため違いはありません。Selenideのshould、shouldBe、shouldHaveの使い分けって明確に意識しなくてもいいのかな。挙動としてはどれもっしょっぽいんだけど、公式ドキュメント読むと、
$("input").shouldBe(visible);
$("input").s
【Kotlin】Enumを使用した処理の実例
#初めに
自分がコードを書く際にEnumをよく使うようになってきたので実際に使った実例をまとめていこうと思います。コードはKotlinで記述します。記述方法が異なりますがJavaでも同じような仕組みで実装できると思います。(他の言語でもできるかも)
#コード値⇔名称の変換処理
「データ上コード値(01とか)で扱うが画面に出す場合は名称で出したい」のような仕様があった場合、コード値から名称へ名称からコード値への変換処理が必要になります。以下では単純な条件分岐を使用した場合とEnumを使用した実装方法を挙げていきます。
####条件分岐を使用する方法
思いつくコードは以下が挙げられます。
“`kotlin
// コードを名称に変換
fun convert(code : String) : String {if (“01” == code) {
return “名称1”
} else if (“02” == code) {
return “名称2”
IntelliJ+Jersey+Spring FrameworkでRESTfulAPIのマルチモジュールサンプル
以下の記事の続きです。
Jersey+Spring FrameworkでRESTfulAPIの最小構成サンプル
https://qiita.com/kasa_le/items/59ebd6b5490945dd5580Mavenでマルチモジュール構成にする(Jersey RESTful)
https://qiita.com/kasa_le/items/db0d84e3e868ff14bc2b今回は上の2つの記事で作成したプロジェクトをマージするような作業です。
が、一応ゼロからプロジェクトを作るていで説明します。# 目的
**Jsersey**と**Spring Framework**(not Boot)でRESTfulAPIを実装する。# ゴール
– Jersey+Spring FrameworkでRESTfulAPIが一通り(CRUD)が動く。
– マルチモジュール構成でDIが出来る。# 環境など
|ツールなど|バージョンなど|
|:–|:–|
| MacbookPro |macOS Mojave 10.14.5|
|IntelliJ IDEA |Ulti
まいくろさーびすあーきてくちゃメモ
# 概要
とあるマイクロサービス開発に携わることになり、取り巻く技術要素について調査した内容から良TIPSをブックマーク。サマリを追記。
## とあるサービスの特徴
– Javaベースのマイクロサービス
– 今後別言語のサービスを追加する可能性もあるためREST APIベースのインターフェース
– Javaにおいては高速ながDI必須
– Dockerコンテナの利用
– Gradleによるマルチプロジェクトビルド
– 設計思想はドメイン駆動設計を採用# ?マイクロサービス
– 複数の小さなサービスをAPIを介することで連結させたシステム
– サービス間の依存がないため、言語や基盤に関係なくサービスを追加・削除可能
– 代表的なAPIはREST APIで、http通信にてJsonを介したデータのやり取りを行う
– サービスが複数となるため、以下の課題をどう解決していくかが求められる
– サービスごとに参照する永続化層(DB、ファイルなど)をAPIを介してしか通信できないためスキーマ構成に悩む。もしそこを許容してしまうと、一番最下層で依存が発生し、マイクロサービスの意
スッキリわかるサーブレット 第13章のdocotsubuがPostgreSQLに繋がらない問題
#起きた問題
スッキリわかるサーブレット 第13章 docotsubuがSQLに繋がらない
(一番下にエラーを書いておく)エラー内容の冒頭
“`java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/docotsubu “`
から、ダウンロードしたはずのpostgresqlのドライバのパスが通っていない感じ。#解決方法
postgresqlのドライバをダウンロードした後、そのjarファイルを
C:\pleiades-2020-03-java-win-64bit-jre_20200322\pleiades\tomcat\9\lib フォルダに、置く、というか移動させる。
その後、eclipseでビルドパスを通す。
**<方法>**
➡docotsubu3のパースペクティブ右クリック
➡ビルドパス
➡ビルドパスの構成
➡(左の)javaのビルドパス
➡(上の)ライブラリ
➡モジュールパス
~~➡(右の)クラス・フォルダの追加~~
~~➡WebContent/
#1 世知辛い初心者エンジニアの壁 ~エンジニアになりたい君へ~
初投稿になります。あつぎです?
未経験新卒で入社したものの、初っ端から自宅学習を強いられております。
「あっ、これ前にやったやつだ!」みたいなこともなく、事前に自分で勉強していたjavaやマークアップ言語、Web系言語も意味をなしておりません。まず初心者の方に伝えたいのは、入社する会社が
【SIer】なのか【Web系】なのか知っておきましょう。
なんとなく開発したいは、悪くもないですが、良くもないです。はい。#■C言語めちゃくちゃムズイ
題名の通りです。
研修でC言語を学ぶのは「普通」なのでしょうか?
挫折率の高い言語を研修にするのは、なんとも言えない気持ちです。開発環境はEclipse IDE(統合開発環境)で作業してたのですが、
Javaのようにサクサク実行ができず詰んでおります:scream:##■詰んでるところ
プログラミングというのは、
❶コードを書いて
❷コンパイルして(PCが読める言葉に翻訳して)
❸実行結果(画面に表示される)
のですが、Eclipseの環境だと、なぜかコンパイルできずに死亡し
ウイルス性肺炎と診断されたエンジニアの約2か月の在宅勤務記。
# 序:某渡辺さんの手記を読んだ。
4月1日実名公開の『[これで「軽症」と言うのか。新型コロナ感染で入院中、渡辺一誠さんの手記](https://forbesjapan.com/articles/detail/33415/1/1/1)』を読んだ。もちろん存じ上げない方だが六本木勤務らしい。いろいろと辛そう。。緊急宣言が出されることで、IT業界の方々も、これからいろいろな影響を受けることがあることだろう。
ということで、参考になればと、参考情報として、2月下旬に自室で悶絶(もんぜつ)しつつも保健所で門前払いされたのち3週間後に、自費で受けたCTスキャンでウイルス性肺炎と診断された私(中年♂)のこの二月ほどを振り返るポエムを書くことにした。恥ずかしいのだけれども。。
状況としては、病状が悪かったはじめの1月は在宅でいろいろとやらかした。回復後の1月弱で、いくつかを取り戻せたと思っている。勤怠については、(理解ある勤務先のおかげで)2か月間皆勤とさせてもらっている。## (付記) CTによる診断と血液検査
(その他の検査での陽性反応を経て別途の投薬を受けるも)発熱してから1月たって
MySQL に UUID のデータを 16 byte で保存する
似たような話は各所にあるのですが、自分の理解向け、備忘録向けに書きます。
# UUID について
https://ja.wikipedia.org/wiki/UUIDもとの起こりはWikipediaなどを見るとして、実運用的には開発時にデータに一意なIDを割り振る際によく用いられる。
UUIDには複数のバージョンがあり、最も開発で用いられていると思われるのは **UUIDバージョン4(ランダム生成)** 、その他に **バージョン1(MacアドレスやTimestamp情報を用いて生成)** などがある。
ビット幅は **128ビット(16バイト)** で、文字列表現では16進法で以下のような形で表現する。
(32バイト+バウンダリ4バイト=36バイト。 “-” がバウンダリ文字列)
> 550e8400-e29b-41d4-a716-446655440000# SQL を用いて 16バイトで MySQL に保存する (8.0 以前 )
MySQL に16バイトで保存する場合には、16進数の文字列表現のUUIDからバウンダリ文字列を取り除いたものを、Binary に変換して
Jersey+Spring FrameworkでRESTfulAPIの最小構成サンプル
こちらの記事の続きです。
Mavenでマルチモジュール構成にする(Jersey RESTful)
https://qiita.com/kasa_le/items/db0d84e3e868ff14bc2b# 目的
**Jsersey**と**Spring Framework**(not Boot)でRESTfulAPIを実装する。`Java Spring`で調べると**Spring Boot**の例ばかりで、多分Boot使ったほうがいろいろ楽なんでしょうが、大人の事情で使えない(かもしれない)ので、**Spring Framework**の方を使ったサンプルを目指します。
# ゴール
Jersey+Spring Frameworkの最小構成のプログラムでHello World的なものが動く。# 環境など
|ツールなど|バージョンなど|
|:–|:–|
| MacbookPro |macOS Mojave 10.14.5|
|IntelliJ IDEA |Ultimate 2019.3.3|
|Java |AdoptOpenJDK 11|
|apache maven
mDNSでAndroidからRaspberryPiを探す
##Raspberry Pi
### avahi-daemonの設定
avahi-daemonのインストール(入っていなければ)
“`
sudo apt-get install avahi-daemon
“`設定変更
“`
sudo vi /etc/avahi/avahi-daemon.conf
“`noになっているとAndroid側で探索が出来なかった
“`avahi-daemon.conf
[publish]
publish-workstation=yes
“`avahi-daemon.service再起動
“`bash
sudo systemctl restart avahi-daemon.service
“`### host名確認
“`bash
cat /etc/hostname
“`## Android
これをみた方が早いとは思う(参考)
https://developer.android.com/training/connect-devices-wirelessly/nsd.html許可取り
初心者がスッキリわかるシリーズでJavaを学んでみた
# はじめに
プログラミング初心者のスッキわかるシリーズのレビューです。
これからJavaの勉強をする方の参考になれば幸いです。##読んだ本
スッキリわかるJava入門 第3版
スッキリわかるJava実践編 第2版
スッキリわかるSQL 第2版
スッキリわかるサーブレット&JSP入門 第2版#スッキリわかるJava入門
###**おすすめ度 ◎**###良かった点
新入社員の男の子が先輩社員と一緒にRPGゲームを作っていくという流れで学習が進む。コンパイルや実行など、プログラミングのプの字も知らないような初心者向けに丁寧に書かれており、とても分かりやすかった。
ページ数は700ページを超えており、中々のボリュームだが、その分細かく、丁寧に解説してくれたのでスラスラと読むことができた。
理解が難しいと言われているオブジェクト指向を特に丁寧に解説しており、イメージを持ちながら学習することができた。
docojavaという開発環境を整えなくてもJavaを使える機能もあり、本を買っていきなりプログラミング学習を開始できるのも、この本の強みだと思う。
そもそもは、通販サイトやほとん
Mavenの基本勉強メモ
ずっと Gradle 使ってたけど、お仕事で Maven をゴリゴリに使わないといけなくなったのでお勉強。
# Maven とは
Java のビルドツール。OSS。
Apache Ant に代わるものとして作られたらしい。読み方は「メイヴン」または「メイヴェン」(自分はメイヴン派)。
結構昔からあるけど[^1]、現在も開発が続けられているし、 Maven を採用しているプロジェクトも多い印象。
2020年現在、Java のビルドツールといえば Maven か Gradle が選ばれることが多い(と思う)。[^1]: Maven 1.0 が 2004 年、Maven 2.0 が 2005 年、Maven 3.0 が 2010 年([Maven – Maven Releases History](http://maven.apache.org/docs/history.html))
2020年現在のメジャーバージョンは3。
Maven 1 と 2 は互換性が無いが、2 と 3 は互換性が保たれている。# 環境
“`
>mvn –version
Apache Maven
【Java】カレントディレクトリの取得方法
#きっかけ#
Javaで同階層のファイルを開こうと相対パスを与えたのだが開いてくれなかった
そこで絶対パスを与えてやろうと検索してみたら記事が少なかったので覚書#簡単#
あまりにも簡単だから誰も書かないのか
常識の範囲だから書かないのか
わからないけどとっても簡単でした##それがこちら##
“`Dir.java
import java.io.File;class Dir {
public static void main(String[] args) {
String path = new File(“.”).getAbsoluteFile().getParent();
System.out.println(path);
// 例:C:\Users\xxxxx\Documents\java
}
}
“`もうひとつ
“`Dir.java
class Dir {
public static void main(String[] args) {
String path = S
stack の pop() と peek() の違い
# java.util.Stack の pop() と peek() 動作確認メモ
挙動確認に関するブログ等が無かったため、メモ。
API 上で確認出来ることを以下に。
## public E pop()
> スタックの先頭のオブジェクトを削除し、そのオブジェクトを関数の値として返します
> 戻り値:スタックの先頭にあるオブジェクト(Vectorオブジェクトの最後の項目)。
> 例外:EmptyStackException – このスタックが空の場合
> (https://docs.oracle.com/javase/jp/8/docs/api/java/util/Stack.html#pop–)## public E peek()
> スタックの先頭にあるオブジェクトを取り出します。このときオブジェクトはスタックから削除されません。
> 戻り値:スタックの先頭にあるオブジェクト(Vectorオブジェクトの最後の項目)。
> 例外:EmptyStackException – このスタックが空の場合
> (https://docs.oracle.com/javase/jp/8
オブジェクト指向(Java)基本
#オブジェクト指向について
Androidアプリを作成しようと思いましたが、javaの理解が薄くて進みが悪かったので、Javaについてもう一度学び直す必要があると思いました。特にオブジェクト指向について分かっていなかったので、そこについて分かりやすく説明してくれてたサイトをあげます。
– [オブジェクト指向再入門](http://kmaebashi.com/programmer/object/index.html)
– [オセロを例にした,C言語とオブジェクト指向の違い](http://kmaebashi.com/programmer/object/othello.html)
– [オブジェクトに仕事をさせるとは](http://kmaebashi.com/programmer/object/shigoto.html)
CUIとGUIの違い
##CUIとは
Character User Interface(キャラクターユーザーインターフェース)の略。文字だけで操作するアプリケーション。
コマンドプロンプト等で見られる。対話式の処理。
最近はあまり使われない。###ex
コマントプロンプトで ver で Enter おすと、新しい行にうつる。
##GUIとは
Graphical User Interface(グラフィカルユーザーインターフェース)の略。ボタンや入力欄が表示されて、マウスやタッチで操作する入力方式。
普段見ているパソコンの表示もGUI。
javaが動く手順について
##javaが動く仕組み
1.プログラムを記述
2.javaコンパイラがプログラムを変換
3.Java用ファイルが作られる
4.java仮想マシンがファイルを読み取る
5.プログラムとして動作する2〜5を自動でしてくれる。
[Logback]ローテーション時に不要ファイルが消えない時の対処方法
Logbackのローテーション設定の妥当性を検証していた時に、不要ファイル(=保存切れとなったアーカイブファイル)が消えなくて「なぜだ〜」となった時に調べた時のメモ。
> **NOTE:**
>
> 検証時は、デバッグログを1つだけ出力するmainメソッドを作って、システム日付をずれして実行していました。# バージョン
* Logback 1.2.3
# なぜ不要ファイルが消えなかったのか!?
細かい条件は調べていませんが、実行時間が短命なスタンドアロンアプリ(=ログ出力後にすぐにプロセスが終了するようなアプリ)の場合、ログファイルのローテーション後に行われるはずの不要ファイル(=保存切れとなったアーカイブファイル)削除処理が行われる前のJVMが終了してしまうことがあるようです。
# どうすればよい?
アプリ起動時に不要ファイル(=保存切れとなったアーカイブファイル)を消す処理を呼び出すためのオプションを有効化しておくことで、次回の実行タイミングで不要なファイルを削除することができます。
“`xml:起動時に不要ファイルを削除する処理を実行する際の設定例