- 1. 個人的「Java Bronze試験つまずいた項目」5選
- 2. Progate Java編 I 個人的備忘録
- 3. Intellijでjlinkビルドエラーが出たとき文字化けした話
- 4. Docker 環境で Jetty または Tomcat を使って Webアプリを実行する。
- 5. AtCoder229をやった(Java)
- 6. GitHub Actions で Error: Gradle Wrapper Validation Failed!
- 7. 【Java】package privateなメンバーはその気になれば外部プロジェクトからアクセスできる
- 8. Java の乱数発生器
- 9. Couchbase Lite機能紹介:クエリのトラブルシューティング
- 10. Timber×Crashlytics でログをクラッシュレポート送信(Timber編)
- 11. VSCode。。。エディタやめるってよ。
- 12. Javaコンパイル・実行時の文字化け対策(windows10)
- 13. JAVAのWebサーバーにTLS1.3を適用する方法
- 14. 演算子いろいろ
- 15. Javaの乱数生成器について速度面から調査してみる
- 16. 【決定版】継承vsインタフェースのベストプラクティス
- 17. よく忘れるチートシート(Java編)
- 18. 逆引きMicronaut
- 19. 【俺的】COBOL→Java言語移行ガイド(INDEX)
- 20. 【俺的】COBOL→Java言語移行ガイド(基本文法編)
個人的「Java Bronze試験つまずいた項目」5選
先日、オラクル認定資格のJava Bronze試験を受験しました。Javaの資格試験としてはもっとも難易度の低いものとして知られていますが、プログラミング初心者にとってはかなり難しいタイプの試験なのではないかと感じました。
今回の記事ではJava Bronze試験の学習経験を踏まえ、つまづきやすかったり、なかなか覚えられなかった文法項目を5つ取り上げてまとめました。
このJava Bronze試験にはバージョンがさまざまあるようなので、ご注意ください。
– 受験した試験:Java SE Bronze (試験コード1Z0-818)
# 1.使用した主な参考書や教材
Java Bronze試験の対策本としてはいくつか有名なものがあります。私は「黒本」と言われる「[徹底攻略Java SE Bronze問題集[1Z0-818]対応](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-Bronze%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-818-%E5%AF%BE%E5%BF%9
Progate Java編 I 個人的備忘録
# 出力
Javaで出力するには、`System.out.println()`を使う。
“`java:Main.java
System.out.println(“Hello World”);
“`“`console:コンソール
Hello World
“`# Javaの構造
Javaの基本的な構造は、クラス部分、メソッド部分、処理部分に分けられる。
クラス部分の中にメソッド部分があり、そのメソッド部分の中に処理部分がある。“`java:Main.java
class Main { // クラス部分
public static void main(String[] args) { // メソッド部分
System.out.println(“Hello World”); // 処理部分
}
}
“`# 変数定義とデータ型
Javaでは変数を定義するときに**「データ型」**を指定する必要がある。
・数字の変数定義の場合、`int 変数名`で定義する。
・文字列の変数定義の場合、`String 変数名`で定義する。“`java:
Intellijでjlinkビルドエラーが出たとき文字化けした話
Intellij IDEA Ultimateを使ってJavaFXアプリケーションを開発しているとき、jlinkを使ってビルドしたくなって設定に`clean javafx:jlink`と入力した。
そしたらなんと!!エラーが出てビルドが失敗してしまったのだ…
エラーを読んでググって解決すればいいと思ってエラー文を見ると“`
[WARNING] Required filename-based automodules detected. Please don’t publish this project to a public artifact repository!
�G���[: jlink�ł͎������W���[���͎g�p�ł��܂���: file:///C:/Users/mfmii/.m2/repository/net/synedra/validatorfx/0.1.13/validatorfx-0.1.13.jar�����validatorfx
[ERROR] Command execution failed.
“`…読めない
そう、文字化けが発生
Docker 環境で Jetty または Tomcat を使って Webアプリを実行する。
#前提
– Windows環境
– 「c:\usr\webapps」にWARを配置しておく。#コマンド
##Jetty 最新版を利用する場合
“`
docker run –rm -it -p 8000:8000 -p 8080:8080 -v c:/usr/webapps:/var/lib/jetty/webapps jetty
“`##Tomcat 9.0 を利用する場合
“`
docker run –rm -it -p 8000:8000 -p 8080:8080 -v c:/usr/webapps:/usr/local/tomcat/webapps tomcat:9.0
“`以上。
AtCoder229をやった(Java)
AtCoder229をやった。
AとB問題の解答例だけみたけど、やっぱり自分はまだまだだなとしみじみと思う。##[A](https://atcoder.jp/contests/abc229/tasks/abc229_a)
【#(黒)】と【.(白)】の場合分け問題
“辺”としてみたときに隣り合っていたら、”Yes”を違う場合は”No”を出力する。
全パターン列挙でもよい。
私の場合は、全パターン列挙に近いが、途中で場合分けをした。
例えば、以下のYesの入力例
1) 2) 3) 4)
## #. #. ##
## #. ## ..
1と2はリスト型のHashSet()を使えば重複削除により、1ラインとして扱うことができます。
その場合は【#】が含まれていれば”Yes”です。4は、**1と2以外**として扱うため、上下が逆でも”Yes”になります。
最後に3は、**1と2以外**として扱うけど、【#】の個数をカウントして3以上だと”Yes”を出すロジックとなっています。
“`
import java.util.*;public class Main
GitHub Actions で Error: Gradle Wrapper Validation Failed!
[GradleでのJavaのビルドとテスト](https://docs.github.com/ja/actions/automating-builds-and-tests/building-and-testing-java-with-gradle) を元にGitHub Actionsを設定をしたら、以下のようなエラーが出たので解消メモ。
“`
Run gradle/wrapper-validation-action@v1
with:
min-wrapper-count: 1
allow-snapshots: false
env:
JAVA_HOME: /opt/hostedtoolcache/Java_Adopt_jdk/11.0.11-9/x64
Error: Gradle Wrapper Validation Failed!
See https://github.com/gradle/wrapper-validation-action#reporting-failures
✗ Other validation errors:
Expect
【Java】package privateなメンバーはその気になれば外部プロジェクトからアクセスできる
# はじめに
Javaにおけるアクセス制御修飾子には以下の4種類があります。* public
* どこからでもアクセス可能
* protected
* 同じパッケージ内か、もしくはサブクラスのインスタンスからアクセス可能
* アクセス修飾子なし(package private)
* 同じパッケージ内からのみアクセス可能
* private
* 同じクラス内からのみアクセス可能これらは見ての通り、下に行けば行くほどアクセス可能範囲が狭いです。publicとprotectedが公開API、package privateとprivateが非公開APIとされます。
今回話題にしたいのは、下から2番目のpackage privateです。package privateというのが正式な呼び方かわかりませんが、その呼ばれ方の通り限りなくprivateに近いものなのだろうと思っていたのですが、案外そうでもなかったぜというのがこの記事の趣旨です。
# 結論
package privateが「同じパッケージ内からのみアクセス可能」という理解は正しいが、外部のプロジェクトにおいて
Java の乱数発生器
# これは何?
[Javaの乱数生成器について速度面から調査してみる](https://qiita.com/penguinsan/items/52a7b76e5570f7cf7e15)
という記事を見て、Java の乱数にも色々あるんだなと思い。速度面以外を軽く調べた。
# 調べた
## java.util.Random
Knuth 先生の有名なアルゴリズムを使っている。
有名だけど、メルセンヌ・ツイスタなんかと比べるとバラケ具合がしょぼいこともよく知られている。## java.util.concurrent.ThreadLocalRandom
内部状態は
“`java:java
long rnd;
“`の一個、64bit だけ。定数が
“`java:java
long multiplier = 0x5DEECE66DL;
long addend = 0xBL;
long mask = (1L << 48) - 1; ``` と用意されていて計算は ```java:java int next(int bits) { rnd = (rnd *
Couchbase Lite機能紹介:クエリのトラブルシューティング
## はじめに
ここでは、Couchbase Liteデータベースの検索のために利用するクエリについて、トラブルシューティングなどの目的のために調査を行う方法について説明します。
Couchbase Liteは、内部的にSQLiteを利用しており、ここでの解説は、SQLiteの`EXPLAIN QUERY PLAN`コマンドに関係してきます。
SQLiteの`EXPLAIN QUERY PLAN`の詳細については、以下を参照してください。https://www.sqlite.org/eqp.html
調査方法には、APIを利用する方法と、cbliteコマンドを利用する方法があります。これらのいずれの方法を用いた場合でも、出力内容は同じフォーマットとなります。
出力内容は、クエリのパフォーマンスの問題を診断したり、クエリを最適化したりするときに役立つ洞察を提供します。## 使用法
### cbliteでの利用例
ターミナル上で、データベースを指定して、インタラクティブモードで、cbliteコマンドを実行します。
“`
cblite
Timber×Crashlytics でログをクラッシュレポート送信(Timber編)
# はじめに
リリースしたモバイルアプリで、未検出のバグによりクラッシュしてしまう場合、ユーザーが声を上げない限り検知できない・・ということは避けたいですよね。
また、万が一そのような不具合があった場合、再現手順やユーザーの状態を調査・分析するのは骨が折れます。
更には、リリースしたモバイルアプリの動作ログを自前のプラットフォームに集約するような仕組みも敷居が高いです。
それらを踏まえて、
– クラッシュするまでの詳細なログをクラッシュレポートで確認したい
– ログはいい感じに出力したい(`if (Logger.isDebugEnabled()) { … }`みたいな分岐はイヤ)
– 手軽に導入したいという思いのもと、Timber と Firebase Crashlytics での実装例を紹介したいと思います。
# Timber
[Timber](https://github.com/JakeWharton/timber) は、Android向けのログ出力ライブラリです。
ログと言えば、Androidの標準ロガーとして、`android.util.Lo
VSCode。。。エディタやめるってよ。
# VS CODEってなんですか?
超高機能な**テキストエディタ** です。最近では統合開発環境(IDE)だと言っても良いぐらいに高機能になりました。
## IDEってなんですか?
ソフトウエア開発のためにプログラムエディタ、コンパイラ呼び出し、テストの実行、デバッグ支援などの機能を統合したソフトウェアのことです。だいたいこんな機能を持っています
NO.|機能|概要
—|—|—
1|任意コンパイル|ユーザーの求めに応じて、プログラムをコンパイルする。
2|オートコンパイル|プログラムの変更の度にコンパイルして、問題などがあればエディタ上にわかりやすく表示する。
3|補完|入力された情報から、取り得る選択肢を並べる。開発者はその中から適切なものを選択する。
4|フォーマッタ|インデントなどを適切に整形してくれる
5|シンタックスハイライト|プログラムに色を付けて構文をわかりやすくする
5|依存解決|そのプログラムが利用する外部のライブラリを読み込む
6|多言語対応|自然言語じゃないよ。Javaとかcとかたくさんのプログラミング言語に対応するってことだよ。
Javaコンパイル・実行時の文字化け対策(windows10)
# 初めに
Javaの勉強を始めてみました。VS Codeを使っているのですが、デフォルトで開くターミナルがpower shellであることに気付かずネットで調べたコマンドが動かないよおおお???となっていました。(コマンドプロンプトとpower shellで動くコマンドが微妙に違うため)
もっと言うと意地を張らずにJavaはShift-JISで書いたほうがいいと思いますが、気になってしまったので少し調べてみました。# 文字化け対策(windows)
windowsのコマンドプロンプトでJavaを実行すると文字化けした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2130321/929f7849-0e6a-2dea-b3d8-1cb9826be8f7.png)これはJavaファイルをUTF-8で作成したが、コマンドプロンプト(windows)が使用している文字コードはshift-jisであることが原因。
UTF-8を画面に出力するためには以下のコマンドを実行すればよい。
JAVAのWebサーバーにTLS1.3を適用する方法
古いWebサーバーはTLS1.0を使っていますが、TLS通信の安全性を上がるため、
TLS1.3にアップデートしようと思います。## 1.暗号化スイートとは
SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、いずれもインターネット上でデータを暗号化して送受信する仕組み(プロトコル)です。個人情報やクレジットカード情報などの重要なデータを暗号化して、サーバ~PC間での通信を安全に行なうことができます。## 2.今のTLSバージョンを確認してみて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234182/31622957-e9e8-7bfe-5b57-5897e6595899.png)えぇぇ!TLS1.3までアップデートしてなっかたのに、
なぜTLS1.3になっているでしょうか?## 3.TLS1.3に変わる原因は?
ネットから調べたんですが、
TLS 1.0および1.1は、安全とは見なされなくなったTL
演算子いろいろ
論理積 &&
x && y :左辺も右辺もtrueの場合にtrue(左辺 かつ 右辺)
論理和 ||
x || y :左辺か右辺のどちらかがtrueの場合にtrue(左辺 または 右辺)
論理否定 !
!x :xがtrueの場合にfalse、xがfalseの場合にtrue
Javaの乱数生成器について速度面から調査してみる
Java17にjava.util.randomパッケージが追加されたので改めて乱数生成器について調査してみることにしました。
ちなみに本記事では特にどの乱数生成器がよいというような検証はしません。(用途によって向き不向きがあるはずなので)
# ベンチマーク環境
* OS
* Windows10Pro
* WSL1
* Ubuntu20.04LTS
* CPU
* Core i7-10700 (8core 16thread)
* Memory
* 32GB
* Java
* OpenJDK17
* Apache Maven
* 3.8.3# コード
https://github.com/penguinsan/random_bench
# 調査したアルゴリズムについて
各アルゴリズムについてシングルスレッドの場合とマルチスレッドの場合でテストしています。
マルチスレッドは4スレッドとし、実行したPCのCPUコア数内に収めています。
※Java16までを使う場合の参考としてApache Com
【決定版】継承vsインタフェースのベストプラクティス
こんにちは。歴13年のアプリエンジニアです(iOS/Android、Best of AppStore?受賞歴あり)。
ふだんは自分が手がけているスタートアップと数社の技術顧問をしているのですが、長年さまざまなプロジェクトで目の当たりにしてきたアプリ(ソフトウエア)開発上の問題について、**設計とプログラミング双方の観点からのベストプラティクス**を、**ルーディメンツ(Rudiments)**と名づけシンプルで理解しやすい形で提唱を目指し準備しています。
今日はこの中から最もポピュラーな問題である、「継承vsインタフェース」(Interface as inheritance alternative)を取り上げます。特に初級者の方にとってより理解が深まれば幸いです。
# Interface as inheritance alternative
あるクラスを新しく作り、既存のクラスと共通の型にしたい場合、クラスの**継承を使うべきか、interface(Swiftではprotocol)を使うべきか**は多くのエンジニアにとって常につきまとう問題である。## 採用基準
筆者は継承と
よく忘れるチートシート(Java編)
Javaでよく忘れるやつの覚え書き
同確はPCにJavaを入れるか https://paiza.io/ja この辺で
エラーが出たら申し訳bangatですプログラミング5大要素
1. 変数
Integer“`IntegerSample.java
import java.io.PrintStream;
import java.lang.Integer;class IntgerSample {
public static void main(String[] args) throws Exception {
Integer num = 10;System.out.println(num);
}
}
“`String
“`StringSample.java
import java.io.PrintStream;
import java.lang.String;class StringSample {
public stat
逆引きMicronaut
MicronautフレームワークでのRestful API実装を試してみた際に調べたことを整理した。(作成したプロジェクトは[micronaut-rest-api](https://github.com/unhurried/micronaut-rest-api/)に置いている。)
#### 公式ガイドライン・リファレンス
* Micronaut本体:[User Guide](https://docs.micronaut.io/latest/guide/) [API Reference](https://docs.micronaut.io/latest/api/)
* 周辺ライブラリ(Micronaut Dataなど):[User Guide一覧](https://micronaut.io/docs/)#### 開発環境 (InteliJ) セットアップ・プロジェクト作成
* Micronaut CLIをインストールする。Windows環境には[Chocolatey](https://micronaut-projects.github.io/micronaut-starter/
【俺的】COBOL→Java言語移行ガイド(INDEX)
この記事は『[プログラミング学習 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/studying)』の20日目のフライング記事です。
## この記事について
この記事は、年内に書いた「【俺的】COBOL→Java言語移行ガイド」のリンク集です。もうアップもしてしまっていますので、この記事もフライングで公開してしまいます。
## このシリーズを書こうとしたきっかけ
リンクだけ貼っておしまいは味気ないので、ちょっと自分語りさせてください。
私は大学では情報科に在籍し、SIerに就職したのですが、そこでまさかのまさかでCOBOLに出会いました(学生時代は「COBOLなんてもう動いてないでしょw」とか言ってた矢先でしたから驚きですね)。
そんなこんなで入社して数年立ち、現在もCOBOL業務に従事しています。
しかし転機は訪れます。COBOLからJavaへのマイグレーションの話が飛んできたのです。長期計画のためすぐではないですが、いずれはという話でした。
私は大学でご教授頂いたおかげもあり、Javaは自分でサー
【俺的】COBOL→Java言語移行ガイド(基本文法編)
## 検証環境
|COBOL|Java|
|:—:|:—:|
|cobc (GnuCOBOL) 3.1.2.0|java 14.0.1 2020-04-14|## はじめに
[前回の記事](https://qiita.com/zama_8722/items/544e049fa7746e3f4ce2)では、「全体構造から見たCOBOLとJavaの違い」を見ていきました。今回はCOBOLとJavaで、「基本文法がどのように変わってくるのか」を書いていこうと思います。最終回です。### 閲覧してほしい方(前編より)
* これからCOBOLからオープン系へのマイグレーションに従事する方
* COBOLとJavaの言語的違いを知っておきたい方
* COBOL習熟者で、将来オープン言語を触らなければならないがわからない方COBOL未経験でマイグレーションされる方や、これからCOBOLエンジニアからJavaエンジニアに移る方の駆け出し資料として参考になれば幸いです。
## 1.データID ⇔ 変数
Java等オープン言語でいう変数、COBOLでいうデータIDの定義方法は、根本的