- 0.0.1. Java学習 Eclipse(エクリプス)とは?
- 0.0.2. AWS Lambdaと開発環境(Eclipse)とでRDSの日時の値が異なる
- 0.0.3. Logic忘備録_if_return
- 0.0.4. CSVファイルから特定列の値だけを抽出したい
- 0.0.5. Java学習 基礎編 クラスとインスタンスとは?①
- 0.0.6. [Excel]Excelを処理するJavaのライブラリー(メモリリーク問題解決)
- 0.0.7. GradleでJavaのコンパイルオプションを設定する方法
- 0.0.8. FessをAmazonLinux2にインストールする手順
- 0.0.9. 頭文字を打つだけで文章ができていくアプリケーションを作る
- 0.0.10. PlantUMLまとめ
- 0.0.11. 【Java】RomeでRSSリーダーAPIを簡単に実装する
- 0.0.12. AsyncTaskを使った非同期処理
- 0.0.13. 初心者の初心者による初心者のための配列プログラム課題のソースコード例
- 0.0.14. 現在の状況
- 1. プログラムに慣れる
Java学習 Eclipse(エクリプス)とは?
Java学習の備忘録になります。
今回は自分のMacに、Eclipseの利用にあたって、Pleiades(プレアデス) All in Oneを導入したので、その備忘録です。
内容は初心者なので基礎的な部分となります。
Javaに興味がある方やJava学習初心者の参考になれば幸いです。* * *
#### Javaの開発環境構築について
Javaでは以下のような工程で、プログラムを開発する。
①ソースコードの作成、編集
②コンパイル
③プログラムの実行このような一連の本格的な開発環境を手元のPCにインストールして利用する、すなわちローカル環境を設定する方法は、
・JDK(Java Development Kit)単体を用いる方法
・総合開発環境の利用がある。
JDKとは、Javaプログラムの開発に必要なツールおよびAPIライブラリを詰め込んだもの。ソースコードを編集するテキストエディタは別途用意する必要がある。今回は、総合開発環境を利用してローカル環境を構築します。
* * *
#### Eclipseとは?
開発を効率化するための総合開発環境である。
※
AWS Lambdaと開発環境(Eclipse)とでRDSの日時の値が異なる
# 背景
AWS Lambda処理内で、RDSのデータを読み書きする機能を開発していました。
プログラム上で日時を生成してテーブルに格納するのですが、実行環境(ローカル or AWS Lambda)によって日時の値が異なってしまっていました。# 環境・前提
– Java8
– Eclipse(2020-12 M3)
– RDS(MySQL 8.0)
– AWS Lambdaローカルで開発中は Eclipse で JUnit を実行し、ローカルから RDS の読み書きを行います。
AWS Lambda へプログラムのデプロイ後は、AWS Lambda を実行し、 RDS の読み書きを行います。# 検証
## ① ローカル(Eclipse)から、RDSへ
| プログラム上の日時(UTC)[^1] | RDS上の日時 |
| —————————– | —————– |
| 2021/3/25 12:00:00 | 2021/3/25 3:00:00 |[^1]: `Times
Logic忘備録_if_return
ifがtrueになったら処理を返す(returnによって計算処理を中断して戻ることができる。)
“`IfReturn.java
public static void main(String[] args) {
calculatePrice(3,100);
System.out.println(“計算の終わり”);
calculatePrice(-1,200);
System.out.println(“計算の終わり”);}
private static void calculatePrice(int number, int price) {
if(number < 0) { System.out.println("個数の数値:"+number+"がマイナスです"); return;//ここで処理を終わらせて処理を返している } System.out.println("果物1つの値段:" + price/number); } ```
CSVファイルから特定列の値だけを抽出したい
業務上、列数が膨大なCSVを扱うことがあり、
そのうちいくつかの列の値だけをちょこっと確認したい・・と思うことが稀によくあります。必要な列だけを抽出して扱えるようになれば私が喜ぶぞォ~!!と思い、
コマンドラインで動くJavaプログラムを作ってみました。#やりたいこと
こんなCSVがあった場合、“`TeX:game.csv
1,Splatoon 2,Nintendo,Nintendo Switch,2017年7月21日
2,Yakuza: Like a Dragon,SEGA,PlayStation 4,2020年1月16日
3,Undertale,Toby Fox,PlayStation 4,2015年9月15日
4,Fire Emblem: Three Houses,Nintendo,Nintendo Switch,2019年7月26日
5,Ghost of Tsushima,Sony,PlayStation 4,2020年7月17日
““ある時は、↓こんな感じで2列目と3列目を取得したい。
“`
Splatoon 2,Nintendo
Yakuza:
Java学習 基礎編 クラスとインスタンスとは?①
Java学習の備忘録になります。
内容は初心者なので基礎的な部分となります。
Javaに興味がある方やJava学習初心者の参考になれば幸いです。* * *
#### クラスとは?『**クラスは、インスタンスを作るための設計図である。**』
インスタンスは、情報と振る舞いを持っており、
この情報と振る舞いを設計図であるクラスに定義する。人間を例にすると、
情報にあたるのが、「名前」、「年齢」であり、
振る舞いにあたるのが、「あいさつする」、「歩く」などである。#### クラスの定義
プログラムの一番外側に記述されているもので、クラスの中には具体的に何をさせたいのかを、メソッドの形で記述していく。“`Main.java
class クラス名{}
“`#### インスタンスとは?
『**インスタンスは、クラスから作られた実体である。**』
インスタンスは実体という意味。
オブジェクトの別名がインスタンスなのは、設計図から実際に生み出された実体であるため。#### インスタンスの生成
インスタンスは変数に代入して使用する。
【定義方法】
**クラス
[Excel]Excelを処理するJavaのライブラリー(メモリリーク問題解決)
# 概要
EasyExcelというJavaライブラリーApache poi、jxlなどライブラリーより、使うメモリは少ないらしいので、今回使ってみました。もっと詳しい情報はEasyExcelのgithubを見てください。
[EasyExcelのgithub](https://github.com/alibaba/easyexcel)
# 環境
## OS
macOS Catalina## Java
1.8## Gradle
5.2.1## easyexcel
2.1.1# ライブラリーをインストール
“`kotlin
plugins {
id ‘java’
id ‘application’
}sourceCompatibility = 1.8
repositories {
mavenCentral()
}mainClassName = ‘demo’
// exayexcelライブラリー追加
dependencies {
implementation group: ‘com.alibaba’, name: ‘ea
GradleでJavaのコンパイルオプションを設定する方法
## 概要
Javaではコンパイル時に[コンパイルオプション](http://www.ne.jp/asahi/hishidama/home/tech/java/application.html#javac)というものがあり、classファイルの出力ディレクトリやデバッグ情報を含めるかなどを設定できます。普通にjavacコマンドで行う場合はコマンドにオプションをつければ良いのですが、Gradleでビルドしている場合はどこに設定すれば良いのか、今回書きます。## 設定方法
[こちら](https://stackoverflow.com/a/29593630)のstackoverflowの記事にある通り、pluginに`java`を設定し`options.compilerArgs`項目にオプションを設定します。## 設定サンプル
上記の記事そのままですが、設定内容のサンプルを記載します。`-parameters`オプションの設定を行うときの設定です。“`gradle:build.gradle
apply plugin: ‘java’compileJava {
op
FessをAmazonLinux2にインストールする手順
# FessをAmazonLinux2にインストールする手順
# 前提
各種バージョンは以下とする.
|アプリ/OS|バージョン|
| :-: | :-: |
|OS|AmazonLinux2|
| Fess | 13.11.1 |
| Elasticsearch | 7.11.2 |
| Java | adoptopenjdk-11-openj9 11.0.10+9.openj9_0.24.0-3 |# Javaインストール
https://adoptopenjdk.net
## リポジトリ設定
[https://adoptopenjdk.net/installation.html#installers](https://adoptopenjdk.net/installation.html#installers)の`RPM installation on Centos, RHEL, or Fedora`記載の内容から若干変更しているため注意.
“`bash
sudo vim /etc/yum.repos.d/adoptopenjdk.repo# 以下を記載
頭文字を打つだけで文章ができていくアプリケーションを作る
# できたもの
まずはできたものがこちら。
ソースコード:https://github.com/lake429c/InfiniteMonkeyTheorem
![InfiniteMonkeyTheoremDemo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521715/3e26c303-8e16-1f0f-8559-178ed6fb9cee.gif)# 概要
標準出力・標準入力を利用するコンソールアプリケーション。
ひらがな一文字を入力すると、その文字から始まる単語と助詞・句読点が挿入されていく。
終了する際は「おわり」と入力。
Javaで作成。+ Java SE 11
+ MySQL 8.0.23製作時間 3時間半。
フローは以下の通り。
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521715/ef82f31d-52e8-609e-9375-7cf6c1125
PlantUMLまとめ
# 資料の目的
PlantUMLを多方面に展開して、UML作成の工数を削減したい。
# PlantUMLとは?
PlantUMLとは、UMLをソースから自動生成するツールです。
# 結論
– 個人で使う分には、手早い管理が可能なので導入の価値ありです。以下の点について考慮不要として扱えます。
– 線の繋ぎ、矢印の向き、矢印の形、枠、図の被りの考慮– 誰かへの説得資料としての完璧な資料にはできないものの、部署内の共有であれば強度十分(ある程度見やすくできるため)
– アクティビティ図だと多重if esle文、for文があまり対応していない。他のUML形式であれば問題なさそう。
– ソースによる差分管理が可能。– PlantUML導入のハードルは、DockerかJavaを入れていない部署にとって高いので、他部署への本格的な展開は難しい。
# 導入手順
PlantUMLはJavaでUMLを生成するので、Javaのインストールが必要です。Javaのインストールが面倒であればDockerで利用が可能です。
導入手順は以下記事が分かりやすかったです。
【Java】RomeでRSSリーダーAPIを簡単に実装する
## まえがき
・RSSリーダーって何?という方は [Wikipedia:フィードリーダー](https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC) をご参考ください。
・あまり流行してないですが、作る機会があったので載せます。
・RSSリーダーはあまり処理を行わず戻りのオブジェクトをJSON形式で出力、 JS側で整形する方式を想定。
・JSで直接他ドメインのRSSを読もうとすると [CORS](https://developer.mozilla.org/ja/docs/Web/HTTP/CORS) のエラーが出てできないので、サーバー側でRSSリーダーの処理をしています。
・[Caffeine](https://qiita.com/a__i__r/items/44e9b0aa934de26ba5bd) 利用のキャッシュ有り## 環境
・Windows10 64bit
・Spring Framework 4
・Rome 1.15.0
AsyncTaskを使った非同期処理
メモです。詳細は下記URL先を参照してください。
https://dev.classmethod.jp/articles/asynctask/
初心者の初心者による初心者のための配列プログラム課題のソースコード例
初心者の初心者による初心者のための配列プログラム課題のソースコード例です。
課題は下記のURLの問題です。
https://qiita.com/nogizakapython/items/dd0bb83e729b9a7ffafe
私が書いたソースコード例です。(Java)
“`java
//
// 配列課題1模範解答(Java)でかきました
// Author 坂道好きのITエンジニア
// Date 2021/3/23 新規作成
// 修正する場合は下に修正日と修正者名を書く
//package paiza;
public class hairetsu2 {
public static void main(String[] args) {
//配列の宣言
int[] data = {7,4,5,8,2,6};
//配列の長さを取得する
int nagasa = data.length;
//配列の長さを出力する
System.out.println(“配列の長さは” + nagasa + “です”);}
}
現在の状況
プログラムに慣れる
今自分は「すっきりわかるサーブレット&JSP入門」という本を読んで
プログラムを書いています。この本は「すっきりわかるJava入門」という
本を経た人が次に読む本で、実際にWEBサイトがどのように動いている
かが分かってくる内容になってます。プログラムの練習
この本の10章では簡易的な掲示板を作って開発を体験することができます。
最終的にこの掲示板が見なくても作れるようになることを目標にプログラム
のコーディングをしています。
内容としてはユーザーが書いた内容をほかのユーザーが視認できるものを
作っています。最後に
しばらくSpringBootを使って開発をしていてJavaのコード内容を
忘れてしまったのでこれを機会にまたJavaの再復習を行いたいと思う。
Java ExcelをTIFFで保存
TIFF は、ビットマップ画像の符号化形式の一種です。タグと呼ばれる識別子を使うことによって、様々な形式のビットマップ画像を柔軟に表現できます。今回は Spire.XLS for Javaを使ってExcelをTIFFで保存する方法を紹介してあげましょう!
下準備
1.E-iceblueの公式サイトからFree Spire. XLS for Java無料版をダウンロードしてください。
Java Excelに透かしを設定
ワードでは最初から透かし機能が存在するのですが、エクセルでは透かし機能が存在しないので、ちょっと難しいかなと思いっていますか?実はSpire.XLS for Javaというライブラリを通して、簡単に設定できます。
下準備
1.E-iceblueの公式サイトからFree Spire. XLS for Javal無料版をダウンロードしてください。
Eclipseを使ってJavaで実装してるとき、開いていたファイル(タブ)が消えるから設定してみた。(初心者向け、未経験者向け)
普段、仕事でJAVAを使った保守開発の案件に携わっています。
その際は、ツールとしてEclipseを使っています。作業をやっているときに、
開いていたファイル(タブ)が他のファイルを開くと”消えていること”があるので、度々開くのがめんどくさいので、設定しました。**~手順~**
1 **ウィンドウ**
2 **一般**
3 **設定**
4 **エディター**
5 **エディターを自動的に閉じる**
6 **適用して閉じる**
7 **Eclipseを落として、再度立ち上げる**1
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174366/111aa5b5-9ec3-d5ed-c67e-920e13c064f5.png)基本のタブ欄から”ウィンドウ”をクリックする。
2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174366/f175baab-60a6
Javaの拡張ForループでMapをループするときの書き方
JavaでMapの拡張For文の書き方を忘れてしまったのでメモ的に記載。
“`java:SampleController.java
for(Map.Entryentity : map.entrySet()) {
System.out.println(entity.getKey());
System.out.println(entity.getValue());
}
“`
なぜPythonにはsetter/getterメソッドがないのか?
# 概要
JavaやC++などの他のオブジェクト指向言語では`setter/getter`メソッドの使用が推奨されているが、Pythonには存在しない。
もともとJavaやC++に触れていた僕には「**なぜPythonにはsetter/getterメソッドがないのか?**」がすごく疑問だった。
さらに、Javaなどの言語の資料では
「**クラス内部の変数はprivateにして隠蔽せよ**」
と書いてあるが、逆にPythonの資料では
「**privateはなるべく使わずpublicを使え**」
と書いてあることが多い。
**矛盾しているのでは…?**気になったのでいろいろ調べて見た結果、そこには**2つの理由**があることがわかった。
さらに、Pythonで`setter/getter`を使いたい場合の**1つの代替案**があるということもわかった。
この記事では– オブジェクト指向とカプセル化について
– Pythonにsetter/getterメソッドが存在しない2つの理由
– setter/getterメソッドの代替案の順に説明する。
最初のオブジェクト指向につい
【paiza】【Java編】Cランクレベルアップメニュー 標準入出力 STEP: 2 複数行にわたる出力 解いてみた!
Aybeeです!
Javaのスキルアップのために、「paizaラーニング」さんの問題を解き始めました。
記録用ですが、お役に立てれば幸いです:innocent:他の問題についても記事をアップしております。
興味がございましたら、マイページへどうぞ!#はじめに
この記事では、「paizaラーニング」さんの以下の問題について記載しています。
より良くするためのアドバイス、お待ちしております!プログラミング練習問題「複数行にわたる出力」
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_std_in_out_step2
※当問題は、以下のように作成したコードを公開することが推奨されています。
![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424017/9f51b8e5-9aab-019c-e19f-09d71eb92ea5.png)#問題
整数 n が与えられるので、 n 回