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

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

gRPCにおけるエラーハンドリング(Kotlin版)

gRPCサーバーでエラーとなった場合、どのようにハンドリングすれば良いのか調べましたので、まとめておこうと思います。なお、Unary RPCs(SimpleRPC)の場合についてのみ記載します。Streamingを利用する場合については考慮しません。

ポイントは、Googleが公式にオススメしているメッセージ構造を利用することです。

具体的には、[gRPCの公式サイト](https://grpc.io/docs/guides/error/#richer-error-model)でオススメされている[error_details.proto](https://github.com/googleapis/googleapis/blob/master/google/rpc/error_details.proto)のメッセージ構造を利用しましょう。このprotoファイルはproto-google-common-protos-{version}.jarに同梱されています。このprotoファイルには様々なメッセージタイプが定義されており、それらに対応するJavaクラスも同じJARに同梱されていま

元記事を表示

C#のラムダ式とLinqついて

C#のラムダについて勉強したことをまとめる。
Java8での場合についても記載する。

#1. C#のラムダまでの歴史

以下の例題でラムダへの経緯について記述する。

例題:Stringの配列に対して、文字列の長さでデータを抽出する。

“`cs:ラムダ無し
private void button2_Click(object sender, EventArgs e)
{
var values = new string[] { “a”, “bb”, “ccc”, “dddd”, “eeeee” };
var result = GetData(values);
Console.WriteLine(string.Join(“,”, result));
}

private string[] GetData(string[] values)
{
var result = new List();

元記事を表示

【Java ~メソッド~】勉強メモ5

Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

メソッド

メソッドとは、何らかの処理を割り当てた部品である。
Javaのファイルを実行すると、先ず自動的にmainメソッドが実行されます。
mainメソッドの処理をメソッドに切り分けると、mainメソッドが各メソッドに指示を出し、
各メソッドが個々の処理を実行するという構造になります。

– メソッドの流れ

“`.java
class Main {
public static void main(String[] args) { //①
hello(); //②
}

public static void hello() {
System.out.println(“Hello World”); //③
}
}
“`

① mainメソッドが呼ばれる

② mainメソッドの中で、helloメソッドが呼ばれる

③ helloメソッドの中で、
  System.out.println(“Hello World”)が

元記事を表示

【Java】WindowsでJavaのアップデートを行う方法

#プログラミング勉強日記
2020年12月30日
Javaのアップデート方法について簡単にまとめる。

#Javaのアップデートとは
 パソコンにインストールされているJavaを最新のバージョンにアップデートすることである。Javaの開発は日々行われているのでバージョンアップのたびに最新のJavaがリリースされている。
 Javaは常に最新バージョンにしていた方がいい。セキュリティの面でも性質の向上の面でもJavaのアップデートは必要である。

#アップデート方法

##1. Javaのコントロールパネルを開く。
 Javaの設定を行うコントロールパネルを開く。Windowsマークを押して、`Javaの構成`をクリックするか、左側の検索欄でJavaと入力すると`javaの構成`が表示されるのでクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/a2c1fe8b-47e2-1127-522d-cb70a81deadd.png)

##2.更新タブから

元記事を表示

Elasticsearch 7.7 を Java 11 で動作させるまでに参考にしたリンク集

## 動作確認環境

– CentOS7、CentOS8
– Java 11
– Elasticsearch 7.7
– Kibana 7.7

## 参考URL

**環境構築関連**

yumでリポジトリ登録して環境ごとにバージョンを統一できるようにする(CentOS8では、dnfを使用する)

https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html
https://qiita.com/inouet/items/6276c5a08c4fe5eecdb5

https://qiita.com/tikeda0924/items/d9ffd43e18da3a64681d
https://gitya107.hatenablog.com/entry/2018

元記事を表示

Java  PowerPoint でハイパーリンクを作成

今回はPowerPoint でハイパーリンクを作成する方法を紹介することにします。それにSpire.Presentation for Javaと言うライブラリが必要です。Webサイト、メールアドレス、ほかのPowerPointスライドにリンクを貼る仕方を見せてあげましょう。

下準備

1.E-iceblueの公式サイトからFree Spire. Presentation for Java無料版をダウンロードしてください。

f:id:lendoris:20</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>PowerPoint</div>
<div class='tag-cloud-link'>作成</div>
<div class='tag-cloud-link'>ハイパーリンク</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/522f677570716cb7f367'>元記事を表示</a></div>
<h3 id=未経験文系新人SEがレベルアップしていく話 ~1年目プログラミング書籍編~

社会人1年目ももう12月終わり。
今年を振り返ってみると、業務ではCSSや外部設計が多く、実際のモノづくりはあまりやらなかったのですが、
自学で触ってみた技術で新人が固めておいて割とよかったなと思うものを書いてみます。

入社前の内定者や、就活生、新人教育担当者でアドバイスを探している人が参考になればと思います。

 ※まだ成功してないので、これが「正解」というわけではありません。
  アドバイスやつっこみは大歓迎です。

# HTML/CSS,JavaScript

#### 『高校生からはじめる プログラミング』(著:吉村総一郎)

入社前に「プログラミング独学でやってみるかー」と思ったときに、有効だった書籍。
当時大学生でしたが、「業界でフかしてる連中は高校生のうちからバリバリにやってるに違いない!」と思って買いましたw

vscode入れて本に書いてあるコードを書けば、プログラミングができます。
忠実に書籍のコードを写経できれば、それ以外のエラー(「写経したのになぜかエラーが出てきて解決できない

元記事を表示

Java PDFでバーコードとQRコードを作成

バーコードは、縞模様状の線の太さによって数値や文字を表す識別子。QRコードとは、横方向にしか情報を持たないバーコードに対し、水平方向と垂直方向に情報を持つ表示方式のコードのこと。今日は Spire.PDF for Javaを利用してPDFでバーコードとQRコードを作成する方法を紹介すます。

下準備

1.E-iceblueの公式サイトからFree Spire.PDF for Java無料版をダウンロードしてください。

f:id:lendoris:20201</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>PDF</div>
<div class='tag-cloud-link'>QRコード</div>
<div class='tag-cloud-link'>バーコード</div>
<div class='tag-cloud-link'>作成</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/141619399b98c75d3f41'>元記事を表示</a></div>
<h3 id=JavaでIDトークンの生成・検証方法 メモ

Open ID Connect / IDトークンをJavaで生成/検証する方法のメモ。

## 生成方法

### 署名情報の生成

[OpenSSL](https://www.openssl.org/source/)を利用して、署名用の秘密鍵と公開鍵を生成する。

**1.秘密鍵を生成する。**

“`shell
# PEM形式の秘密鍵を生成する。
openssl genrsa -out jwt-private-key.pem 2048
# PEM形式の秘密鍵をPKCS8/DER形式に変換する。
openssl pkcs8 -in jwt-private-key.pem -topk8 -nocrypt -outform DER -out jwt-private-key.pk8
“`

**2.公開鍵を生成する。**

“`shell
# DER形式の公開鍵を生成する。
openssl rsa -in jwt-private-key.pem -pubout -outform DER -out jwt-public-key.de

〇〇の非staticメソッド〇〇をstatic参照することはできません

前のプログラミングで使っていた関数を新しい環境で使おうとしたときに詰まったのでメモ

いつものように以下のように書いていたらEclipceに怒られました。

“`Java:関数
msgStr = MsgList.getMsg(“hoge”, hoge);
“`

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/818309/517b41ac-30d9-d773-9ec1-3ef79b9fb48d.png)

Static参照したい訳じゃないんだけど、消えないこのメッセージ。

解決法調べてみたら簡単な凡ミスからくるエラーでした。

解決法

関数をインスタンス化する。
インスタンス化した関数を使う。

“`Java:インスタンス化した関数
MsgList msgList = new MsgList();
msgStr = msgList.getMsg(“hoge”, hoge);
“`

これで解決しました。

凡ミスですが、多分ほとんどの方が通る道ではないでしょうか?

JSFで動的にメソッドを呼び出す

#はじめに

画面上にあるデータの主キーをセッションに格納してから画面遷移したい。
どの画面からどの画面へ遷移するときも、必ず自画面のManagedBeanの(キーをセッションに格納する)メソッドを呼び出したかったのでそのときやった実装方法をメモ。

#環境

Eclipse4.8 Photon
JavaEE6(Java7)
JSF2.0
GlassFish 3.1.2.2
Windows10

#ui:paramタグ

“`HTML:sample.xhtml




“`

“`Java:sample.java
@ManagedBean(name = “sampleView”)
public class sample{
public void setMoveKey(ActionEvent event){
//セッションにキーを格納
}
}
“`

Jsfページにui:paramタグを追加します。
valueには

文字列操作でありますまいか

調べていたら雑多なメモになってしまった。色々な文字列分割。

1. キャメルケースとかスネークケースとか
2. 日本の姓名分割
3. 日本の住所分割
4. 中国の etc..

という雑文です。

## [キャメルケースとスネークケースの文字列変換](https://kagamihoge.hatenablog.com/entry/2017/01/03/225054)
使い方はURL参照。https://kagamihoge.hatenablog.com/entry/2017/01/03/225054
速度計測とか、コーディング内容比較してみようかと思ったのだが、[CamelCase と snake_case を相互変換する](https://qiita.com/toastkidjp/items/3c8f21da085ecaace7c3#%E8%BF%BD%E8%A8%98-jmh-%E3%81%A7%E3%81%AE%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%83%81%E3%82%A7%E3%

SpringでフォームにMapを使うとLinkedHashMapであってもサブミット時に順序が保証されない

SpringでフォームにMapのフィールドを作って使う場合、LinkedHashMapを使って順序を指定したつもりでも、その値をサブミットすると順番が入れ替わってしまった。

# 要素技術

– Java
– Spring
– Thymeleaf

# 発生した事象
![01_初期表示.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513231/2920b44e-1f4a-137c-f3b7-592186c6ab6c.png)
このとき submit ボタンをクリックすると以下のような画面になる。

![02_サブミット後.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513231/6b033893-2124-659a-0987-136de6689928.png)

「spring」と「java」が入れ替わっているだと・・・

# 作成したコード(ダメなコード)

■ コントローラ
ポイントはinitメソッドで
1. L

【Java ~配列~】勉強メモ4

Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

配列

配列とは、変数のセットのようなもの。
変数が1つしか値を扱えないのに対し、配列は複数の値をまとめていれておくことが出来る。
配列に入っているそれぞれの値のことを要素と呼ぶ。

– 配列の変数定義

配列を扱う場合には、配列型の変数に配列を代入します。
配列型は、「int型の要素を持つ配列型」と「String型の要素を持つ配列型」という風に指定する必要がある。
int型の要素を持つ配列はint[]
String型の要素を持つ配列はString[]と記述する。

– 配列の作り方

配列は{ }の中に、コンマ(,)で区切りながら値を書くことでつくることが出来る。
[]と{}を混同しないように注意。
配列の最後にもセミコロン(;)が必要なので注意

“`.java:配列の作り方
// int型の要素を持つ配列
in

【Android】Context って何??

# はじめに
Contextについて自分なりに調べて学んだので記事に残します。

きっかけとして、
Android開発をしていて、何も考えずにContextをメソッドの引数に渡しまくっていたところ、リードエンジニアにこのようなレビューを受けたことがある。
>Contextの過剰摂取には気をつけましょう。
いつの間にか抜け出せなくなっていずれ手のつけようがなくなってしまいます。
引数にContextを追加したら負けぐらいの気持ちでContextを引数に追加しないことを意識したほうが良いです。

そこで「Contextって何??」っと思って色々調べた。

# そもそも Context とは??
#### 日本語の意味的なContext
>(文章の)前後関係、文脈、脈絡、背景、状況、環境

などと出てくる

#### プログラミングにおけるContext
こちらのサイトから抜粋
http://e-words.jp/w/%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88.html

>プログラミングの分野でも、同じコード記述やプログラム

[Java] 2020年12月28日が2021年12月28日ってフォーマットされるんだけど?

# きっかけ
自分が携わるWEBシステムのある画面で2020年12月28日に作業していると、他メンバーから「”2021年12月28日”と1年先で表示されている画面があるんだけど?」と言われたこと

先に結論を言うと 日付のフォーマット形式で
“`”yyyy/MM/dd”“` ではなく、**“`”YYYY/MM/dd”“`**で記述していたことが原因だった。

# 検証コード
“`java:検証コード
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
public static void main(String[] args) throws Exception {
final SimpleDateFormat yyyyMMdd = new SimpleDateFormat(“yyyy-MM-dd”);
final SimpleDateFormat YYYYMMdd = new SimpleDateFormat(“YYYY-MM-dd”);

【Java】enum型について

#プログラミング勉強日記
2020年12月29日
Javaでenumを使って列挙型を扱う方法について簡単にまとめる。

#enum型とは
 複数の定数を1つにまとめることができる型のこと。定数なので後から変更できないデータを扱う。ennum型は複数の定数をひとまとめにできるというメリットがある。

~~enum型はswitch文を扱いやすくなるというメリットがある。~~
 →enumのインスタンスを取得している時点で分岐はできているので、enum自体にswitchで分岐したい処理や値を持たせるといい。

#enum型の使い方
 enum型は以下のように記述する。

“`java:基本的な書き方
enum 列挙名 {列挙子1, 列挙子2, ・・・};

// 列挙型を取り出すとき
列挙名.取得したいデータ
“`

“`java:サンプルコード
public class Sample {
public static void main(String[] args) {
// Nameを取得してその中のTanakaのデー

Java Lambda Command Pattern

エキサイト株式会社メディア開発の佐々木です。

## はじめに

みんな大好きデザインパターンですが、Java8から導入されたLambda式により、簡素にかけるようになるので、今更ですが紹介です。

## command pattern (従来)

コマンドパターンは下記のように書きます。FileActionのインターフェース

“`java:FileAction.java
public interface FileAction {
void openFile();
void writeFile();
void closeFile();
}
“`

“`java:Command.java
public interface Command {
void execute();
}
“`

“`java:OpenFile.java
public class OpenFile implements Command {
private final FileAction FileAction;

public OpenFile(FileA

VSCodeでJava(Gradle)プロジェクトを作成してDockerコンテナ上で開発する

# はじめに

2020年を振り返ると、[VSCode](https://code.visualstudio.com/)の[Remote Development Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)に出会った時の衝撃は、言葉では語りつくせません。

私にとってはRemote Containerで[これらの8種類の言語](https://github.com/Microsoft/vscode-dev-containers#sample-projects)に関してはMS謹製の開発環境が整った開発コンテナサンプルがあるということで、全部制覇するぞ! と意気揚々だったものの、日ごろの忙しさにかまけて何もできていなかったので、最初にJava(Maven)に手を付けたのですが、ここではJava(gradle)に手を付けてみることにします。

– [VSCodeでJava(Maven)プロジェクトを作成してDoc

OutOfMemoryErrorでありますまいか

これを読んでいる方は大体知っている気がしますが、[ERPパッケージソフトの保守、開発をしています。](https://qiita.com/e99h2121/items/d9a83a6e47a53dcfbfbd)

## OutOfMemoryErrorが出ました
(class名) と一緒に出ています、こいつが犯人ですかね?等聞かれます。説明しないといけません。で最終的にはお客様にまで説明するに当たり「こういったメニュー上のどういった操作がトリガーで」ウニャウニャと格好良く説明できたら良いのですが、色んな事情でプログラム側もそれほど単純ではない。ので人間の、とりわけ非技術者も含めて理解できる言葉で説明できるほどの原因に絞り込むのがなかなか難儀です。

## では実際は何が起こっているのか

弊社提供のアプリケーション上では主に「アプリケーションサーバ」でOOMEさんとよく出会います。OOM…実際にメモリ内で何が起こっているのかについてどう説明するのがより的確なのか、どうやって「犯人」あるいは「容疑者」を絞り込み、トラブル関係者にそれなりに納得の行かせるところまでうそぶくこと無く落とし