JAVA関連のことを調べてみた2021年12月21日

JAVA関連のことを調べてみた2021年12月21日

log4shellスキャン

log4jの検出を支援するため、無料ティアのスキャン回数を2倍に増やしました。

https://snyk.io/blog/snyk-fix-log4shell-extended-free-scans/

元記事を表示

AtCoder Beginner Contest 007をやった(Java)

AtCoder Beginner Contest 007をやった。
C問題は幅優先探索なのであとから追記予定です。。。
BFSとかなんか競プロって感じやな・・・

##[A](https://atcoder.jp/contests/abc007/tasks/abc007_1)
法則を見つけてあげてください。
ソース見たらわかるか。。。

“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
Scanner scan = new Scanner(System.in);
ArrayList list = new ArrayList();

int num = scan.nextInt();
if(num == 0){
System.ou

元記事を表示

Java Chromium Embedded FrameworkでのJavascriptからJava呼び出し。2

# intercept

httpの通信をinterceptする。
たとえば、[http://xxx/]()といったURLを使ってローカルファイルを返すとか……

シーケンス図:
#getResourceRequestHandlerでurlを見ることもできる。

“`plantuml
@startuml
!theme aws-orange

participant “Cef\nApp” as CefApp
participant “Cef\nCallback” as CefCallback
participant “Cef\nResponse” as CefResponse

participant “Cef\nRequest\nHandler” as CefRequestHandler
participant “Cef\nResource\nRequest\nHandler” as CefResourceRequestHandler
participant “Cef\nResource\nHandler” as CefResourceHandler

hide footbo

元記事を表示

Java Chromium Embedded FrameworkでのJavascriptからJava呼び出し。

## カスタムスキーマ

custom://xxx/xxxのような呼び出しをinterceptしてJavaの処理を行う。
シーケンスは以下のような感じ。

“`plantuml
@startuml
!theme aws-orange

participant “Cef\nApp” as CefApp
participant “Cef\nScheme\nRegistrar” as CefSchemeRegistrar
participant “Cef\nCallback” as CefCallback
participant “Cef\nResponse” as CefResponse

participant “Cef\nApp\nHandler” as CefAppHandler
participant “Cef\nScheme\nHandler\nFactory” as CefSchemeHandlerFactory
participant “Cef\nResource\nHandler” as CefResourceHandler

hide footbox

== 初期化 =

元記事を表示

Java with WebView

# JavaでWebViewを使ってみる。

簡単にやるには、JavaFXのWebViewを使えばできる。
しかし、cssの当たり方が微妙だったり、IndexedDBがなかったりとして、いまいち使い勝手が悪かった。

ということで、いろいろ検索をした結果Java Chromium Embedded Frameworkを使ってみた。

https://bitbucket.org/chromiumembedded/java-cef/src/master/

gradleあたりで引っ張ってきてってことはできないっぽいので、[BranchesAndBuilding](https://bitbucket.org/chromiumembedded/java-cef/wiki/BranchesAndBuilding.md)を参考に、ライブラリをビルドする。
わりかし簡単にビルドできたものの、なぜかPythonのバージョンが違っていたらしく、一部パッチを当ててビルドする必要があった。

以下を一括置換:

“`
base64.encodestring -> base64.encodebytes
b

元記事を表示

Javaの授業をIntelliJ IDEAで受ける!

# はじめに
この記事は [法政大学情報科学部 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/cis_hosei) 20日目の記事です。

こんにちは、情報科学部の磯貝です。もうすぐクリスマスが近づき、Qiita の Advent Calender も終盤が迎えようとしてます…ね?
今回は、ある一定の学部生から質問があった Eclipse じゃなくて __IntelliJ IDEA を Java の授業で使用したい__ というものについて解説していきたいと思います。2021/12/20 現在、実際に授業で使用することができているので、ぜひこれから解説することをやってみてください!

# IntelliJ IDEA とは
IntelliJ IDEA はチェコにある JetBrains社 が開発した IDE (統合開発環境)のことです。主に Java 向けの開発ツールですが、Java 以外のプログラミング言語も開発できます。
なお、授業で使用している Eclipse は、2014 年までは IntelliJ よ

元記事を表示

Web Apps (java) への java コマンドラインオプションの指定方法

# はじめに
Azure の Web Apps には Apache Tomcat や JBoss EAP、 Spring Boot といった Java のランタイムスタックが用意されております。

Java でシステムを運用する場合、ヒープサイズのチューニングやシステムプロパティの指定といった用途で java のコマンドラインオプションを設定したいと思います。
そこで、本記事では App Service (Java) における java のコマンドラインオプションの設定方法と、一般に広まっていると思われるアンチパターンを解説します。

# アプリケーション設定で java コマンドラインオプションを指定
Java のランタイムスタックでは「構成」ブレードの「アプリケーション設定」タブで java コマンドラインオプションを指定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691192/ab4214db-d2c6-65fa-d67c-47cb6b70047d.png)

元記事を表示

民法第143条が定める暦による期間の計算を実装してみる

[KINTO Technologies Advent Calendar 2021 – Qiita](https://qiita.com/advent-calendar/2021/kinto-technologies) の20日目の記事です。

## 概要
当社が企画/開発を行う、トヨタ車のサブスク「KINTO」は[月々定額のサブスクリプションサービス](https://kinto-jp.com/kinto_one/)となり、1ヶ月単位のご利用料の期間は民法第143条が定める[「暦による期間」に従って](https://kinto-jp.com/kinto_one/payment/)計算されています。

この「暦による期間」の計算、ちょっと複雑であり、なんかコード書いてみたいなという気分になったため書いてみる次第です。

## 民法第143条が定める「暦による期間」の計算とは?
[WIKIBOOKSによると](https://ja.wikibooks.org/wiki/%E6%B0%91%E6%B3%95%E7%AC%AC143%E6%9D%A1)、民法第143条の条文は以下のとおりです

元記事を表示

Apacheのhttpclientを利用してServiceNow REST API( Attachement API)をJavaでたたく方法

# 前記事
GETに関しては以下の記事を参照

https://qiita.com/seino-ta/items/fe04d5cf71f126583774

https://qiita.com/seino-ta/items/7deb77ae408735109aa4

# Apacheのhttpclientを利用してPSOTを実行

“`java
package jp.co.worksap.company.apitest;

import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

import org.apache.http.HttpEntity

元記事を表示

POSTで呼ばれた場合のリクエスト情報の取得について(Spring Boot)

# はじめに
Spring Bootで開発している際にPOSTでリクエストされた場合の、リクエスト情報の取得方法について調べたので備忘録として記載します。

# 目次
– Spring BootでPOSTリクエスト
– POSTリクエストとは
– リクエスト情報を取得する
– まとめ

# Spring BootでPOSTリクエスト
まず初めに、POSTリクエストを受け付ける簡単なSpring Bootアプリケーションを実装します。

“`java
package com.example.demo;

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import javax.serv

元記事を表示

大学図書館アプリを引き継いでくれる方を募集しています

# はじめに
私は4年生でまもなく卒業なので、岩手県立大学図書館アプリの開発・保守を引き継いでくれる方を募集しています。
アプリの開発や運用などに興味がある方であれば大歓迎です!
興味ある方は、以下の連絡先までご連絡お願いいたします。
g031q024@s.iwate-pu.ac.jp

## 開発した経緯
大学の図書館から本を借りるには、大学の図書館ページにアクセスして蔵書検索をする訳ですが、この過程が割と面倒だと感じました。
ライブラリーアテンダントに所属していた私は、大学の職員さんと相談し、大学の図書館アプリを開発する許可を得て、開発を始めました。

## 学んだこと
アプリを開発しても、色々な人に使ってもらえることが確約されているわけではありません。
アプリを開発するのも大変ですが、そのアプリを多くの人に使ってもらえるようにするのもかなり大変だなと感じました。
PR活動は大学職員さんにも協力していただき、学内メールや学内ポスターなどの掲示も行いました。
開発した当初はあまりアクティブユーザーも多くはありませんでしたが、職員さんに学内メールで周知して頂いたりとPR活動に力を入れた

元記事を表示

コレクションクラスの処理速度について

#1. はじめに
エンジニアとして入社してから今までは主にJavaの開発を携わっていきました。
最近では処理のパフォーマンスに対しても考えないといけない場面に遭遇することもあったため、
簡単な内容となりますが今一度自分の復習も込めて、コレクションクラスでよく使われているListを例に、
それぞれの実行速度についてまとめてみます。

#2. ArrayListとLinkedList
それぞれの主な特徴として、
ArrayList :要素にアクセスするスピードが早い
LinkedList :要素に挿入したり削除するスピードが早い
が挙げられてます。

今回は上記二つを例にし、処理の実行速度の計測を行います。

##要素の追加(add)
まずは100万の要素を追加する場合の作成速度について比較します。

“`java
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class App {
public static void main(String[]

元記事を表示

Javaでベンチマーク(性能測定) JUnit5編

[Javaのカレンダー | Advent Calendar 2021](https://qiita.com/advent-calendar/2021/java)の3日目の記事です

# 概要

Javaの単体テストのベンチマーク(性能測定)を簡単に取りたいときに使える方法
golang の `go test -bench` のようにサクッとメソッドの性能を確認したいときに利用します

## 参考

– [openjdk/jmh: https://openjdk.java.net/projects/code-tools/jmh/](https://github.com/openjdk/jmh)
– [Javaによるマイクロベンチマーク| Baeldung](https://www.baeldung.com/java-microbenchmark-harness)
– [jmh](https://qiita.com/tags/jmh)

# やり方

## pom.xml

dependencies に以下を追加

“`

org.ope

元記事を表示

馬鹿でもやればできる!資格試験勉強!2つの抑えるべきこと

## はじめに

初めてQiitaに記事を投稿します。:clipboard:

簡単に自己紹介しますと、
大学を中退し、1年間営業(PCを人差し指だけで操作レベル)だったのですが、
その後転職し、大阪のSESでエンジニアをしています。

転職してから3ヶ月でJavaSilverを取得。
そこから5ヶ月でJavaGoldを取得したので、
今回、記事を書かせていただきます。:writing_hand:

資格毎の詳しい対策は自分より優秀な方が記事を書いていただいているので、
今回はどのようなアプローチで資格試験の勉強をするのか、
をテーマに書いていきます。

安心してください。
コツさえ掴めれば勉強効率は格段に上がります。

## 元から勉強できたんじゃないの?
自分は正直馬鹿だなと思います。どれくらいかというと、、、、
高校時代の話ですが、
テストが簡単な1年生1学期にも関わらず、
13教科中11個が赤点だったので、部活の顧問に呼び出しを喰らいました。

=============================================================

:man

元記事を表示

JavaでBase64復号化(String -> byte[])を省メモリに行う

## 概要
昨日はJavaでBase64符号化・復号化を省メモリで行う記事を書いた。

https://qiita.com/kago/items/b437928ebd58e8382e32

上記はInputStream/OutputStreamで入出力しているが、メモリ上にデータを保持する必要がある場合は別の実装になるので、今回はStringからbyte[]への復号化について考えた。

## 実装
“`Base64sample.java
public class Base64sample {

private static final int T_LEN = 16 * 1024;
private static final int B_LEN = T_LEN * 3 / 4;

public static byte[] decode(String src) throws IOException {

byte[] result = new byte[getDecodedLength(src)];

try (Reader read

元記事を表示

AtCoder Beginner Contest 006をやった(Java)

AtCoder Beginner Contest 006をやった。

B問題だから簡単!ということではなくて、今回のB問題は緑相当でしたし・・・
C問題も緑だし、、C問題は解説見たけど意識が遠のいていく感じがしたのでまた今度で()

##[A](https://atcoder.jp/contests/abc006/tasks/abc006_1)
FizzBuzzの問題です。プログラム学び始めたときはお世話になりました。。。
いろんな実装方法があるかと思いますが、僕は剰余で。

“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
Scanner scan = new Scanner(System.in);
ArrayList list = new ArrayList();

元記事を表示

Cognito Identity Pool 未認証ユーザーで 一時クレデンシャルを AWS SDK for Java 2.x で取得してみる

# はじめに

[前回の記事](https://qiita.com/sugimountaws/items/49ce163a703b555fd88a) では、Cognito Identity Pool で未認証ユーザーによる一時的なクレデンシャルの取得をやってみました。今回の記事では、よりプログラム側に寄せて、AWS SDK for Java 2.x を使って同様に未認証ユーザーによる一時的なクレデンシャルの取得を行ってみます。一時的に取得したクレデンシャルを使って、Textract を使った文字起こしを行ってみます。

Java の開発環境に利用している主なものは以下の通りです。

– AWS SDK for Java 2.x
– Maven
– Visual Studio Code

# Maven の設定

Maven を使って適当に Project を作成したあとに、`pom.xml` を編集します。変更点の概要は次の通りです。

– `maven.compiler.source` や `maven.compiler.target` を使って、コンパイルに使うバージョンを

元記事を表示

tomcat 設定1-4 Java tomcat setenv.sh

“`bash

$ cd /usr/local

$ curl -OL –header “Cookie: oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz”

$ tar xvzf ./jdk-8u131-linux-x64.tar.gz

$ mv jdk1.8.0_131 java

$ export JAVA_HOME=/usr/local/java

$ echo $JAVA_HOME

$ cd /usr/local/tomcat/bin/

$ vi setenv.sh
下線部追記
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
CATALINA_OPTS=”-server -Xmx1024m -Xms1024m -Xss228k”
export CATALINA_OPTS
ーーーーーーーーーーーー

元記事を表示

もうメンテされてないライブラリに最新のlog4jを強制する方法

# 問題
直接的にlog4jを利用している場合は、更新 or logbackへの移行 を行えばよい
しかし、脆弱なlog4jへの依存があるライブラリは、ライブラリ側の更新を待つ必要がある
そして、ある程度の規模のライブラリでも、結構な確率でメンテされておらず更新が見込めない

# 対処
“`gradle:build.gradle
ext[“log4j2.version”] = “2.17.0”
“`
外部から最新バージョンの使用を強制するため動作は保証されないが、脆弱なまま放置するよりはマシである

元記事を表示

脆弱なlog4jへの依存を1コマンドで把握する

# log4shellについて
– [Log4jの深刻な脆弱性CVE-2021-44228についてまとめてみた](https://piyolog.hatenadiary.jp/entry/2021/12/13/045541)

# 問題
log4jの対応を行う上での最大の問題は、膨大な依存の中から完全に取り除く必要がある点である
直接的にlog4jを利用している場合は、更新 or logbackへの移行 を行えばよい
しかし、外部ライブラリやフレームワークが利用している場合は、そもそも依存の把握自体が困難になる

# 対処
## 方法1 gradale dependencies
gradleの`dependencies` タスクを利用する
現時点の全ての依存のリストを出力することができる
ただ、単純な依存ツリーを吐き出しているだけなので、ある程度の規模のアプリケーションでは数万行になる
そのため、特定のバージョンのライブラリを取り除く目的にはあまり適していない

## 方法2 OWASP dependency check
OWASP(Open Web Application Secur

元記事を表示

OTHERカテゴリの最新記事