- 0.1. 【合格】Java Silver(Java SE 8 Programmer I)勉強方法
- 0.2. Databricks上でのJAR(Javaなど)の実行方法
- 0.3. Javaを使用してWordのタイトルを読み取る方法
- 0.4. Java Silver SE11 6章
- 0.5. 無料クラウドサービスでJupyter Labを使ってみる ~Miniconda導入編~
- 0.6. React + Spring Boot での画像投稿
- 0.7. 【初心者向け】 interfaceのシンプルな使用例
- 0.8. リーダブルコードのまとめ。 1/2
- 0.9. 【OOP】06_抽象化
- 0.10. RPG(ロールプレイングゲーム)作りで使いどころを解説するGoFデザインパターン23種類
- 1. まえがき
- 2. 23パターン
- 2.11. StAX XML Parser には StAX2 Woodstox を使う (Java/Kotlin)
- 2.12. 【Java】コンストラクターについて
- 2.13. ECSとStep Functionsで並列分散バッチ処理を行う
- 2.14. PipedOutputStream を使ってオーディオをストリームで扱う
- 2.15. 解決!!AtCoder ABC234 D java クリア!!
- 2.16. Java – How to Configure Log4j2 Properties File?
- 2.17. Docker in Javaのメモリ消費がコンテナの制限を超えていた話
- 2.18. Webで使えるJavaのUIフレームワークのVaadinをさわってみた(その2)
- 2.19. AtCoder Beginner Contest 017をやった(Java)
- 2.20. Spring Native 0.11(GraalVM)を使ってSpring BootのアプリをNaitive Image化する方法
【合格】Java Silver(Java SE 8 Programmer I)勉強方法
職業訓練校でJavaをせっかく学んだので、形にするために受験しました。受験料が高すぎて(26600円)個人的には全然薦めてないです。自分が受験したときは8でしたが、現在は11にバージョンアップされています。そして、受験料がなんかさらに上がったような…?
[Java SE 11 Programmer I (1Z0-815-JPN) 試験 | Oracle University](https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html)
# 受験状況
– 勉強期間:1か月程度
– 使用教材:[徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応(=黒本)](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-Java-Silver-%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-808/dp/4844339931)
– 費用合計:30100円
– 黒本:3500円
–
Databricks上でのJAR(Javaなど)の実行方法
JavaをDatabricks上のSpark環境で実行する方法について説明します。
DatabricksのSparkランタイム(Databricks Runtime)は、
* 最新のSparkバージョン対応・最適化機能の享受
* OSS Sparkにはない高速化機能/拡張機能
* C++ベースのSparkエンジン(Photon)の高速化ランタイム
* インフラ管理・ソフトウェア/脆弱性管理などからの解放などの特徴があり、コードはほぼそのままで、Databricks上に実行環境を移すだけで、実行速度の向上、それに伴う、費用削減などが見込めます(もちろんケースバイケースになります)。
# Databricks上でのJARの実行方法
以下のステップになります。
1. JARファイルアップロードする
1. Jobの作成
1. Jobの実行と結果の確認ここでは、前半でWeb UIを使用した方法に関して説明し、その後、CLI(コマンドライン)で実施する方法を説明します。
## 1. JARファイルのアップロード
JARをDatabricks上で実行するには、JARファイル
Javaを使用してWordのタイトルを読み取る方法
##概要
人々がWordを使ってレポートまたは論文を編集している時、タイトルが使用されるのはごく普通のことです、特定のニーズにより、それらを従って適応されるため、「スタイル」のオプションでWordのタイトルをすばやく設定できます、以下の画像のように。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/bdb47169-4916-843e-bfb8-b82199296ff1.png)
ディレクトリを追加する場合、「有効スタイル」を「ディレクトリレベル」に設定することができます。ある程度で言えば、タイトルアウトラインをディレクトリとして使用することもできます。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/decf0f8f-7a33-f4c1-1cbf-cb8253436119.png)この記事では、バックエンドのJavaプログラムコードを介してWordのタイトルコンテンツを取
Java Silver SE11 6章
# Java Silver SE11 6章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。## クラス・インスタンス
JVMによりハードディスクに保存されているクラスファイルが読み込まれ、メモリ上にインスタンスを展開する。例
“`java:Itemクラス
public class Item {
public String name;
public int price;public void printInfo() {
System.out.println(name + “, ” + price);
}
}
“`“`java:Mainクラス
public class Main {
public static void main(String[] args) {
Item ite
無料クラウドサービスでJupyter Labを使ってみる ~Miniconda導入編~
## Google Cloud ShellでのMinicondaによる活用方法
### Minicondaとは?
前回の投稿から引き続きJupyter Lab(以下Lab)の導入をメインに解説します。
https://qiita.com/Q-Lazy/items/bd7dacf1d8e865d57a94
今回は[CloudShell](https://console.cloud.google.com/)に導入済みのPython環境ではなく、別途[Miniconda](https://docs.conda.io/)でPythonを導入して、Labをインストールします。
まずMinicondaとは何か? ベースとしてGUIを備えたフルセット版の[Anaconda](https://anaconda.org/)というPythonディストリビューションがあり、パッケージマネージャや仮想環境の機能を有しています。
そのAnacondaをテキストベースの環境向けにチューニングした、小型で軽量のサブセットがMinicondaという位置付けになります。CloudShellはユーザーが使え
React + Spring Boot での画像投稿
#はじめに
ReactとSpring Boot + Chakra UIでアプリケーション開発を行おうとしており、
その過程で画像投稿機能を組み込む予定なため学んだことを備忘録として記載します。#React
“` NewUser.tsx
return (
<>
名前:
【初心者向け】 interfaceのシンプルな使用例
## 概要
「結局インターフェースって何なの?」
Javaを勉強し始めた人の大多数が抱く疑問かと思います。
そんな新規Javaユーザーを苦しめるinterfaceを簡単な文法のみでまとめてみました。### 実際に書いてみましょう
経験談にはなりますが、記事だけ読んでいても身につくものでは無いと思います。
この記事は簡単なコードのみで解説しているので、読み終えた後などコードをコピペして遊んでみてください。
(実際にコピペする際はFormater、Printer、Mainをそれぞれ別のファイルに保存してください。)## 使用例
“`java:Formater
public interface Formater {public String format(String string);
}
“`
さてさて、何やらフォーマットしてきそうなインターフェースが現れました。
そうです。このFormaterインターフェースは文字列を成形するメソッドを持ちます。
※interfaceを初めてみたよって人も臆さず読み進んでみてね。“`java:Printer
public cl
リーダブルコードのまとめ。 1/2
リーダブルコードを読み終わったので、内容をまとめます。
## 【第一部-表面上の改善】
### 2章-名前に情報を詰め込む– 変数名には、その目的が分かるような明確な単語を選ぶ。例えば、get~という変数をもっと具体的に、fetch~やdownload~とする。
– tmpやnumなどの汎用的な名前はできるだけ避ける。
– メソッド名やクラス名は短いコメントのようなものである。このクラスやメソッドは何をするクラスなのか、一目でわかるような名前にする。
– 変数名に大切な情報を追加する。例えば、ミリ秒を表す変数名には _msをつける。
– 変数名のスコープが大きい場合、長い名前を付ける。1単語や2単語だと、その変数が何を表しているのかとても分かりづらくなってしまう。
– ローカル変数とグローバル変数を区別できるよう、変数に印をつける。例えば、グローバル変数には一番最初に_(アンダーバー)をつけるなど。### 3章-誤解されない名前
– 意図が伝わるような名前を選ぶ。例えば、filterという名前は「選択する」という意味にも解釈できるし、「除外する」という意味にもとれる。「選
【OOP】06_抽象化
こんにちは、コイキングです。
本記事では OOP(Object Oriented Programming == オブジェクト指向プログラミング)の説明のうち、抽象化について、説明したいと思います。
******
# 1. 抽象化とは?
現実のオブジェクトから核心的な事、共通的な事、繰り返している事を抜き出す事と言えます。“ジムで運動する事”を用いて、例えてみると、
ある人はスクワットラックでスクワットで足の運動をするし、ある人はスミスマシンでデッドリフトで背中の運動を、ある人はベンチでベンチプレスで胸の筋肉を鍛えるでしょう。上記の運動する人の共通点を抜き出してみると
運動器具 (スクワットラック、スミスマシン、ベンチ)から
適切な運動方法(スクワット、デッドリフト、ベンチプレス)で
特定の身体(足、背中、胸)を鍛えています。また、核心的な行為を抜き出してみると’運動する’になります。
Javaでは上記のような抽象化作業を手伝うツールとして、抽象クラスとインターフェースがあります。
以下の例示コードは抽象クラスとインターフェースを用いて、”ジムで運動する事”を抽象化し
RPG(ロールプレイングゲーム)作りで使いどころを解説するGoFデザインパターン23種類
まえがき
昨今においては、書籍や動画学習サイトなどにおいて、プログラミング言語の初心者の方に対して、RPG(ロールプレイングゲーム)の作り方を例に出して、プログラムの書き方を解説することが定番化しています。
誰でもとは言わずとも、多くの方にとって、子どもの頃に親しんできた身近なモチーフで、頭にスーッと入りやすいという大きなメリットがあります。
そこで、プログラミング学習者にとって鬼門の一つである、GoFのデザインパターンを23種類、全部、RPGの作り方の例だけで、説明してみようというのが、本記事の試みです。
23パターン
Iteratorパターン
RPGでは、「やくそう」や「たいまつ」、「鉄の剣」などアイテム(道具)を荷物袋(リスト)の中選んで、使ったり捨てたり、あるいは、手に入れたりなどの操作をすることがあります。
例えば、十字キーで操作するタイプのゲームの場合、下ボタンを押すと、次のアイテムが選択されることが一般的です。
RPGで要素を選択するのは何もアイテムだけではありません。戦闘になれば攻撃するターゲットや呪文な
StAX XML Parser には StAX2 Woodstox を使う (Java/Kotlin)
Java や Kotlin などの JDK 開発環境で、XML をパースする選択肢として StAX パーサーがあります。
# 要約
StAX Parser は XML ファイルを詳細に解析したいケースで便利です。
JDK 標準の StAX Parser よりも、[StAX2 Woodstox](https://github.com/FasterXML/woodstox) を使用することをお勧めします。
# XML Parser の選択肢
JDK 標準(外部ライブラリ不要で使える)の XML Paresr は以下のものがあります。
| 種類 | 特徴 | class |
| — | — | —|
| DOM (Document Object Model) | XML をツリー構造で処理する | org.w3c.dom.Document
javax.xml.parsers.DocumentBuilder |
| XPath (XML Path Language) | XPath 文字列で XML 要素にアクセスする | org.w3c.dom.Documen
【Java】コンストラクターについて
簡単にまとめました。
## コンストラクターとは
– インスタンス化のタイミングで呼び出される特殊なメソッド
– コンストラクターではメンバー変数の初期化など、事前処理系を記述するのが一般的とりあえず、以下サンプルコードを実行します。
“`java
public class Person {
public String name;
public int age;public Person(String name, int age) {
this.name = name;
this.age = age;
}public Person() {
this(“えんどうゆうき”, 27);
}public void show() {
System.out.printf(“%s(%d歳)です。\n”, this.name, this.age);
}
}
“`“`java
public class ConstructorBasic {public static void main(String[]
ECSとStep Functionsで並列分散バッチ処理を行う
## はじめに
現状ではジョブ管理システム(JP1 等)+EC2で実装しているバッチ処理を、サーバレスにしてリソースコストや運用コストを抑えたいと思い、勉強のためECSやStep Functionsを触ってみました。
ECSのドキュメントや各種記事等を読んで調べた結果、メインのバッチ処理はJavaアプリをECS(Fargate)上でコンテナ実行することとし、Step Functionsで定期実行や並列実行を制御する構成を試すことにしました。主な理由は以下となります。
– 既存バッチ処理のJava資材をなるべく流用したい **→ Javaアプリ**
– 入力1ファイルあたりのデータ量がそれなりに大きい想定のため、Lambdaでは15分タイムアウトに引っかかる可能性がある **→ ECS**
– 長くて数時間の日次ジョブの想定であり、実行中以外のリソース利用料金発生を避けたい(EC2のメンテナンスも面倒) **→ Fargate**
– ECS単体だとリトライや並列化の制御は難しそう **→ Step Functions**ぶっちゃけ今回試した程度の処理内容なら、Sparkで書い
PipedOutputStream を使ってオーディオをストリームで扱う
PublicClodなどの音声認識サービスにおいてSDKで実装しようとするとインターフェースとしてInputStreamとなっている事があります。
byte[] で扱いたい場合にはPipedOutputStream/PipedInputStreamを使うと実装の幅が広がったりします。“`java
import static java.lang.System.out;import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.TargetDataLine;p
解決!!AtCoder ABC234 D java クリア!!
##解決しました!
java初心者のヤスです!
AtCoder ABC234 D をようやっと解決しました!どこでつまづいて、どうやって解決したかをまとめています。
問題はこちら↓https://atcoder.jp/contests/abc234/tasks/abc234_d
##つまづいたところ
・split()でわざわざ全部読み込んでいた。
・配列とListの多様
・StringBuilder知らなかった。
・そもそもの考え方##いまだにイマイチわからんこと
・平衡二分探索
・log回の概念###split()でわざわざ全部読み込んでいた。
“`java:java
String[] NK = sc.nextLine().split(” “);
int N = Integer.parseInt(NK[0]);
int K = Integer.parseInt(NK[1]);//中略
int numlist[] = Arrays.stream(sc.nextLine().split(” “)).mapToInt(Integer::parseInt).toA
Java – How to Configure Log4j2 Properties File?
# Console Logging
“`
log4j2.properties
# Extra logging related to initialization of Log4j
# Set to debug or trace if log4j initialization is failing
status = warn
# Name of the configuration
name = ConsoleLogConfig# Console appender configuration
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %m%n# Root logger level
rootLogger.level = debug
# Root logger referring to console appender
rootLo
Docker in Javaのメモリ消費がコンテナの制限を超えていた話
# 発端
amazoncorretto:11ベースのコンテナでJava(Kotlin)のアプリケーションを稼働させました。
ホストサーバーのメモリは4G(実際に使用できるのは3.9G程度)
コンテナにはcpus: 2、mem_limit: 2.5gでリソースの制限をかけていました。# 違和感
アプリケーションに負荷がかかるとメモリ使用率が2.5Gどころか3G超に、そしてサーバーが危篤(ピンチ)
危機が過ぎ去った後、開発環境で色々と検証JDK11なのでUseContainerSupportがデフォルトオンになっているはずと思いこのようなソースを用意してコンテナ内で実行
“`A.java
public class A {
public static void main(String[] args) {
System.out.println(“Version: ” + System.getProperty(“java.version”));
System.out.println(“availableProcessors: ” + Runtime.getRunt
Webで使えるJavaのUIフレームワークのVaadinをさわってみた(その2)
## これはつづきものです
https://qiita.com/haruki_ueno/items/afc10b7948411ace3d0d
## Starting a Project
ここではVaadinプロジェクトの始め方をみます。
始め方はここに記載があります。https://vaadin.com/docs/latest/flow/guide/start
> The recommended way to start a new Vaadin project is to use Vaadin Start. It allows you to configure and download a customized starting point for your application.
という記述があるように、「Vaadin Start」というサイトからプロジェクトを作ることを公式が推奨しています。必須ではなく推奨です。
> The applications created using Vaadin Start are based on Spring Boot. Va
AtCoder Beginner Contest 017をやった(Java)
AtCoder Beginner Contest 017をやった。
C問題解けない。。##[A](https://atcoder.jp/contests/abc017/tasks/abc017_1)
一応Double型で宣言して実装“`Java
import java.util.*;public class Main {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
double ans = 0;
for(int i = 0; i < 3; i++){ ans += scan.nextDouble() * (scan.nextDouble() / 10); } System.out.println((int) ans); } } ``` ##[B](https://atcoder.jp/contests/a
Spring Native 0.11(GraalVM)を使ってSpring BootのアプリをNaitive Image化する方法
# サマリー
Spring Native 0.11(GraalVM)を使ってSpring BootのアプリをNaitive Image化しました。
Q:Naitive Image化とは?
A:今回の検証だと、javaアプリをexe形式にすることQ:Naitive Image化の何がいいの?
A:アプリ起動が速くなるQ:アプリ起動が速くなると何がいいの?
A:サーバーレスアーキテクチャーのようにコンテナが頻繁に起動・削除を繰り返す環境で有用今回のアプリの測定結果は以下の通り
|形式 |起動時間|
|—|—|
|Naitive Image (exe) |**約0.1秒**|
|jar|**約2秒**|環境 : Windows10、4コア8スレッド、メモリ16G
**Naitive Imageの起動時間はjarに比べて20倍程度早い!**
## 検証方法
以下を参考に実施。ただ、色々省かれているので、その部分を補った形で、qiitaの記事を記載
New AOT Engine Brings Spr