- 1. ECSとStep Functionsで並列分散バッチ処理を行う
- 2. PipedOutputStream を使ってオーディオをストリームで扱う
- 3. 解決!!AtCoder ABC234 D java クリア!!
- 4. Java – How to Configure Log4j2 Properties File?
- 5. Docker in Javaのメモリ消費がコンテナの制限を超えていた話
- 6. Webで使えるJavaのUIフレームワークのVaadinをさわってみた(その2)
- 7. AtCoder Beginner Contest 017をやった(Java)
- 8. Spring Native 0.11(GraalVM)を使ってSpring BootのアプリをNaitive Image化する方法
- 9. JavaとJMeterをインストールする
- 10. 【OOP】05_ポリモーフィズム
- 11. Java Silver SE11 5章
- 12. Java基礎(アウトプット用)
- 13. プログラミング言語を簡単にまとめる
- 14. Kotlinデビューしたくて環境構築してみた
- 15. 必要な .class ファイルから間接的に参照されています
- 16. Log4Shellについて知っておいた方がよいこと
- 17. Javaを通してPDFをPDF / Aに変換する方法
- 18. Javaでデータベースに接続する
- 19. EclipseでPayaraTools導入エラー
- 20. Java開発者のためのセキュアコーディングのコツ10個
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形式にすること(windows環境)Q:Naitive Image化の何がいいの?
A:アプリ起動が速くなるQ:アプリ起動が速くなると何がいいの?
A:サーバーレスアーキテクチャーのようにコンテナが頻繁に起動・削除を繰り返す環境で有用Q:サーバーレスアーキテクチャーの具体例は?
A:AWS Lambda, Azure Functions, GoogleのCloud Functions, Oracle Cloud Functions等
※上記クラウドでアプリを実行するには、dockerイメージの作成が必要になりそう。別の機会に検証を行う。今回のアプリの測定結果は以下の通り
※いわゆるパソコン(windows10、4コア8スレッド、メモリ16G)で実施した結果です|形式 |起動時間|
|—|—|
|Naitive Image
JavaとJMeterをインストールする
# 概要
Java(JMeterの動作に必要)およびJMeterのインストール方法を説明します。
– Macの場合およびWindowsの場合を扱います。
– jenvを使う場合の説明は、ここでは割愛します。# Javaをインストール
Oracle Javaの有償化を巡って、Javaの開発環境(JDK)には様々な種類がありややこしくなっています。
– バージョン8まで
– Oracle JDKを無償で利用できました。
– バージョン9以降
– Oracle JDKが有償化されました。
– 代替となるOpen JDKが様々な機関から無償で提供されるようになりました。
– バージョン17以降
– Oracle JDKが再び無償で利用できるようになりました。([こちら](https://www.publickey1.jp/blog/21/oracle_jdkjava_17.html)を参照)JMeterを利用する際は、利用するJDKのバージョンと種類を選定した上で、下記のいずれかの方法でインストールしてください。
> JDKのバージョンおよび種
【OOP】05_ポリモーフィズム
こんにちは、コイキングです。
本記事では OOP(Object Oriented Programming == オブジェクト指向プログラミング)の説明のうち、ポリモーフィズムについて、説明したいと思います。
******
# 1. ポリモーフィズムとは?
**一つの機能が状況によって、違う結果を出す事で、**
Javaでは’親クラス’又は’インターフェース’を定義し、親を継承した子クラスで親の機能を再定義して**親クラスの参照変数から子クラスのインスタンスを参照し、**親クラスの参照変数から子クラスごとに再定義されたメソッドを呼び出すこととするのを言います。## 1) ポリモーフィズムの長所
– 多種多様なインスタンスを一つの親の参照変数にて管理できるため、**コードの量が減り、コードの維持保守がより楽になります。**
– 一つの親を共有する子クラスを増やし機能を再定義することで新機能の追加が可能がため、**拡張に有利で、結合度が強くならないようにコードの実装ができます。**## 2) ポリモーフィズムの短所
– ちゃんと活用するのは難しいため、プログラマーの能力によりコー
Java Silver SE11 5章
# Java Silver SE11 5章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。## 配列
Javaの配列は、配列クラスから作成されたインスタンスであり、複数の値を取り扱う。
配列が扱う値のことを要素と呼ぶ。
以下のような特徴がある。* 同じ型か互換性のある型を扱える
* インスタンス生成時に要素数を決める
* 後から変更できない### 宣言とインスタンス生成
宣言時には以下のルールがある。* 記述する[]は、変数名の前後に入れることができる
* 宣言時に要素数の指定はできない
* 配列型の変数には、あくまで配列インスタンスへの参照のみが代入されているので要素は関係ない* 2次元配列を生成する場合の流れ(int[][]array = new int[2][2];)
1. 1次
Java基礎(アウトプット用)
### メソッドの定義,呼び出し
“`java
class Main{
public static void main(String[]args){
hello();
}
public static void hello(){
System.out.println(“Hello World”);
}
}
“`###引数をメソッドに渡す
“`java
class Main{
public static void main(String[]args){
hello(“Bob”);
}
public static void hello(String name){System.out.println(name + “さんこんにちは”);
}
}
“`###複数の引数を渡す
“`java
class Main{
public static void main(String[]args){
printPrice(“ピザ”,3000);
printPrice(“コーラ”,150);
プログラミング言語を簡単にまとめる
##Java
JavaとはC言語ベースに開発された汎用性の高いプログラミング言語。求人需要が多い
WEBサービスから業務システム、組み込み、など多岐に渡り開発現場で採用されている。
フレームワークはspring Framework##Ruby
Rubyとはオブジェクト指向のプログラミング言語。コードはシンプルに書きやすく読みやすい。
WEBサービスやWEBアプリケーションができる。
フレームワークのRuby on Rails。クックパッドや食べログに使用されている##PHP
PHPとは動的なWEBページを生成することができるサーバーサイドのスクリプト語。HTMLは静的WEBページ。
他のプログラミング言語と比べると文法が比較的容易なので取得しやすい。
フレームワークはLaravel## C#
マイクロソフト社が開発したオブジェクト指向のプログラミング言語。Javaと似ている。
GUIアプリケーション、WEBアプリケーション、ゲーム開発ができる
フレームワークはASP.NET
Kotlinデビューしたくて環境構築してみた
# はじめに
Kotlinを触ってみたくなったので、環境構築をしてみました。
実際に動かすのは、今後になる予定です。# 環境構築(Windows)
## JDKのインストールをする1.公式サイトからJDKをダウンロードする
https://www.oracle.com/java/technologies/downloads/#jdk17-windows![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397779/e268999c-43d7-70a0-086f-3aab9ca40368.png)
2.インストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397779/64ba3798-24b6-6f5a-48cb-e2a390fd40db.png)3.環境変数の設定をする
「スタートメニュー」>「設定」>「システム」>「詳細情報」>「システムの詳細設定」>「環
必要な .class ファイルから間接的に参照されています
エラー解消に時間がかかったのでメモ。
ビルドパスのエラーの可能性があるのはわかっていたのですが…。今後はjavaのビルド・パスを見て、
JREシステム・ライブラリがアンバインドとなっていないかを真っ先に確認すること:zap:「アンバインド済み」という言葉があった場合は、
一旦除去して同じライブラリ(or Jar)を入れなおすと治ります。
Log4Shellについて知っておいた方がよいこと
本記事は2022年1月4日に公開した英語ブログ[Log4Shell webinar: What you need to know](https://snyk.io/blog/log4shell-webinar-what-you-need-to-know/)を日本語化した内容です。
[![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/14d05b40-70b7-5276-27e9-2ecfe395db03.png)](https://snyk.io/jp)
多くのJavaアプリケーションに影響を与える[Log4Shellの脆弱性](https://snyk.io/log4j-vulnerability-resources/)については、すでに耳にしたり、対処したりしたことがあるのではないでしょうか。この重要なゼロデイ脆弱性についての最新情報を提供するため、弊社では最近オンラインセミナーを開催しました。
「Log4Shellについて知っておく
Javaを通してPDFをPDF / Aに変換する方法
##背景
PDF形式をPDF / A形式に変換することにより、ドキュメントのレイアウト、フォーマット、フォント、サイズなどが変更されないように保護し、ドキュメントの読み取りとアクセスを保証しながら、ドキュメントのセキュリティ保護の目的を達成できます。この記事では、Javaバックエンドプログラムコードを使用してPDFをPDF / A1A、2A、3A、1B、2B、および3B標準に変換する方法を示します。以下は、その方法と手順です。jarパッケージのインポート
Spire.Pdf.jarはこのプログラムにインポートされます。**[ダウンロード](https://www.e-iceblue.com/Download/pdf-for-java.html)**とインポートを実装するために、Mavenプログラムでpom.xmlの次のコンテンツを構成できます。
com.e-iceblue
e-iceblue
https://repo.
Javaでデータベースに接続する
#はじめに
この記事は独習JSP&サーブレット第3版に基づいて、データベースを勉強していた際に躓いた点をまとめた記事です。最新版のJDBCやデータベースを使用している人は、同じようなエラーで躓いていると思うので参考になれば嬉しいです。## 環境
– Tomcat 10.0
– MySQL 8.0
– MySQLドライバ(JDBC):mysql-connector-java-8.0.27## jspからデーターベースに接続する
以下のようにconnect.jspファイルからデータベースに接続するとする。
データソースの設定はcontext.xmlで行う。“`jsp:connect.jsp
<%@ page contentType="text/html;charset=UTF-8" import="java.sql.*, javax.naming.*, javax.sql.*" %>
データベースへの接続
<
EclipseでPayaraTools導入エラー
#環境
* mac OS Monterey
* Eclipse IDE for Enterprise Java and Web Developers – macOS x86_64 (Eclipse IDE 2021-12 R Packages)#原因
__Details__“`
Cannot complete the install because one or more required items could not be found.
Software being installed: Payara Tools 1.4.0.202110041326 (org.eclipse.payara.tools.feature.group 1.4.0.202110041326)
Missing requirement: Payara Tools1.4.0.202110041326(org.eclipse.payara.tools.feature.group 1.4.0.202110041326) requires ‘org.eclipse.equinox.p2.iu; org.ec
Java開発者のためのセキュアコーディングのコツ10個
本記事は2019年9月16日に公開した弊社英語ブログ[10 Java security best practices](https://snyk.io/blog/10-java-security-best-practices/)を日本語化した内容です。
[![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/7e96b3c4-cdd6-82db-5ce2-6cf02b879715.png)](https://snyk.io/jp)
このチートシートでは、オープンソースのメンテナーと開発者の両方に向けた、Java言語におけるセキュアコーディングのコツ10個を取り上げます。このチートシートは、SnykのデベロッパーアドボケートのBrian Vermeerと、Java チャンピオンであり[Manicode](https://manicode.com/) Securityの創設者であるJim Manicoとのコラボレーションによって作成されたものです。