- 1. 開発未経験エンジニアのための開発業務に携わるためのプロジェクト
- 2. JPAのOneToManyのdeleteがupdateになる
- 3. 【Java】ライブラリを用いてJson文字列の要素を編集してみる
- 4. java.util.logging.Loggerのログレベルについて
- 5. インターフェースの利点
- 6. [Java]処理時間の計測方法メモ
- 7. IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた(6.DBアクセスアプリケーションの準備 (java))
- 8. 【Java基礎】for文で三角形を作ろう
- 9. 競プロ(AtCorder)の標準入力を楽にするためmakeを使う C++/Java/PythonのサンプルMakefile掲載
- 10. 【Java】Enumでif文を少なくする
- 11. 【Eclipse】補完機能を使いたいけど、スペースで補完を確定してしまうのをなんとかしたい
- 12. 2020年に最も人気があるプログラミング言語 10選
- 13. Java static 【個人まとめ】
- 14. Kotlin について調べたこと
- 15. Azure Batch で Java アプリケーションを実行する
- 16. [Thymeleaf テンプレートフラグメントで共通化] Headerの作成
- 17. Javaに初めて触れてみた③
- 18. 初めてのjava.util.logging
- 19. Spring Boot で Ajax を使用したファイルのアップロード、ダウンロード(JQuery未使用)
- 20. ファイルアップロード
- 21. 【java】【javaSliver】インタフェースと抽象クラスがややこしいのでまとめ
開発未経験エンジニアのための開発業務に携わるためのプロジェクト
# 概要
未経験のエンジニアの方でどうやったら開発に業務に携われることができるかご相談を受けました。相談に対して回答していく中で2人で一緒に何か作っていこうという話になり、それ自体をプロジェクトとして発足しました。
最初に結論から申し上げるとこのプロジェクトの取り組みによって無事に開発現場が決まりました。継続的に活動を続けていくことで1つの成果となり、それらの記録として残すためQiitaの記事としてまとめようと思いました。
# なぜプロジェクトとして発足したのか?
今回の場合は未経験のエンジニアの方で目標設定も定めづらそうなイメージがありました。こちらから提案してもよいのですが、できるだけご自身の目標にあったテーマを一緒に考えてモノづくりを取り組むようにしました。また取り組む際の考え方も一緒に共有できればと考えました。もちろんペアプログラミングなどで技術的なことは共有はしますが、技術だけでなく解決に至るまでの考え方を一緒に共有し、エンジニアとしてお互いに考える力を伸ばすことを大切にしました。
開発手法だけでなく問題に対する解決方法など総合的に取り組むためにプロジェクトとして
JPAのOneToManyのdeleteがupdateになる
JPAのOneToManyのコレクションを削除をする場合、“`CascadeType.REMOVE“`や“`orphanRemoval = true“`を使用する。このとき、発行されるSQLは“`delete“`を期待するが“`update“`になってしまった。これの原因はエンティティ間の定義(“`OneToMany“`とか“`JoinColumn“`)がおかしい場合になるらしい。具体例を出せなくてアレだが https://stackoverflow.com/questions/17079649/jpa-orphanremoval-true-tries-to-update-not-delete とかが参考例になる、と思う。
【Java】ライブラリを用いてJson文字列の要素を編集してみる
# やりたいこと
“`java
String jsonString = “{\”Apple\”:{”
+ “\”cost\”:\”0\”},”
+ “\”Pen\”:{”
+ “\”cost\”:\”0\”}}”;
“`
やりたいのは以下の2点です。* 上記のJson文字列の`”0″`にあたる部分を編集したい。
* 新たなキー`”ApplePen”`を追加したい。今回は以下の代表的(?)なJsonを操作するためのライブラリを使ってみます。
* Gson
* Jackson# 実行環境
Android Studio: 3.4.1
gradle: 5.1.1# ライブラリ追加
追加するライブラリをbuild.gradleのdependenciesブロックに記述します。dependencies {
…
implementation ‘com.google.code.gson:gson:2.8.5’
implementation ‘com.fasterxml.jackson.core:jackso
java.util.logging.Loggerのログレベルについて
## java.util.logging.Loggerとは
Javaの標準API。エラー情報を内容に応じてログ出力する。## 使用方法
まずは基本的な使い方です。主な登場実物は以下の3つです。
1. Logger – ログを出力するオブジェクト。
2. Handler – ログの出力先を制御するオブジェクト。
3. Formatter – ログのフォーマットを制御するオブジェクト。初めにLoggerインスタンスを作成します。
“`
Logger logger = Logger.getLogger(“loggerの名前”)
“`次にHandlerインスタンスを作成し、loggerに登録します。Handlerは複数個登録できます。
今回はC:\sample\sample.logを出力先としたHandlerを作成します。ファイルを出力先とする場合はHandlerインターフェースの実装クラスFileHandlerを利用します。“`
Handler handler = new FileHandler(“C:\\sample\\sample.log”);
logger.a
インターフェースの利点
# はじめに
クラス間で共通する操作をひとまとめに定義させたり、空のインターフェースを定義することで実装クラスに何らかの特性をもたせて処理の意図を明確にさせたりと、インターフェースにはクラスの設計を助けてくれる利点が色々とあります。
中でも次に掲げる点は、インターフェースの最大の利点と感じる人が多いのではないのでしょうか。
* **利用者[^利用者]がそのクラスの内部構造を知らずして、ある契約[^契約]に沿ってそのクラスの機能を利用することを強制させることができる点**
* **実装が変更した場合に生じる不必要な修正を防ぎ、変更に強いプログラムを維持できる点**ただ、これらの意味がいまいち整理できていなかったので、自分なりの言葉で整理することとしました[^me]。
# インターフェースを使わないと・・・
例えば次のように、Aクラスに3つのメソッドを定義したとします。
“`Java:
class A {
// コールするメソッド
void call() {
System.out.println(“たたいて・かぶって・ジャンケンポン”);
[Java]処理時間の計測方法メモ
## コード
“`
long hogeStart = System.currentTimeMillis();// 計測したい処理
long hogeEnd = System.currentTimeMillis();
long hogeTime = hogeEnd – hogeStart;
System.out.println(“処理時間: ” hogeTime + ” ms”);
“`## 実際の使用
– 以下をClipy等でスニペット登録しておく
“`
long hogeStart = System.currentTimeMillis();
long hogeEnd = System.currentTimeMillis();
long hogeTime = hogeEnd – hogeStart;
“`– 計測したい処理を行入れ替え等で間に挟み込む
![d321cd92f73344804aefe4af36029bfa.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4065
IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた(6.DBアクセスアプリケーションの準備 (java))
#はじめに
「[IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた](https://qiita.com/shimauma_Zzzzz/items/9a513abdf02d11fff55b)」の 第6回です。
ここでは、 サンプルアプリケーションの準備ついて記載します。実施内容は以下の通りです。
– コンパイル環境の概要
– ソースの準備
– war ファイルの出力筆者自身がアプリケーション開発者ではないため、より良いやり方や
より品質の高いコードなどがあると思いますが、 当記事では動かすことを主目的とし、
品質やセキュリティ、エラー処理などは考慮しませんのでご注意ください。
個人的にテーブル名等をハードコードしているのも気に入りませんが、まぁ気にしないでください。#コンパイル環境の準備
Java アプリケーションのソースからコンパイルするためには JDK を含む IDE (Integrated development Environment) が必要です。
(厳密には、JDK だけあればコンパイルできますが…)IDE には E
【Java基礎】for文で三角形を作ろう
会社の先輩から新米のぼくに出された、Javaでfor文を使い色んな三角形を作る問題です。
こちらはJavaですが、単純なfor文で作れるので他の言語でも挑戦してみてください。扱う形は以下の画像のとおり。
![triangles.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520805/bdc76cda-f0f2-1153-4c7d-c06295ef4278.png)
## 対象読者
・プログラミングを勉強中の方
・最近エンジニアになった方
・Javaを勉強したい方#問題① 正三角形 ▲
“`
public class Main {
public static void main(String[] args) {
int max = 5;
String star = “*”;for (int i = 0; i < max; i++) { for(int j = 0; j < max-i; j++)
競プロ(AtCorder)の標準入力を楽にするためmakeを使う C++/Java/PythonのサンプルMakefile掲載
# はじめに
最近、学生プログラマや現役プログラマの間で競技プログラミングが流行ってますね(体感)。
私はコンテストに参加はしませんが、新しい言語を覚えるときの試し打ちとして競プロの問題を解くことが多いです。なかなか面白いです。問題はたいてい、**入力例が提示されていますが、それを標準入力するのって面倒**ではありませんか?
できれば自動化したいです。**自動化すればトライアンドエラーの効率が上がって得点アップ**が期待できますね!
自動化する方法はいろいろありますが、この記事ではmakeコマンドを用いるものを紹介します。
MakefileはサンプルとしてC++,Java,Python用のものを載せます。
コンパイル言語、Java系言語、スクリプト言語のサンプルを提示すれば、後は使用者が言語に合わせて書き換えてくれるだろう
という魂胆があります。本記事のMakefileやディレクトリ構造をgithubに上げました。よかったら使ってください。
https://github.com/aoi-stoic/AtcorderTemplate#### 想定読者
– makeコマンド
【Java】Enumでif文を少なくする
# はじめに
保守・開発でプログラムに触れる際、その8割はソースコードを読む時間に費やされるというのはよく聞く話です。
そのため、可読性の高く、保守性の高いソースコードというのは常に意識されるべきですが、どうしても業務システムとなると、ある契約の種類だとか、取引先の種類だとか、種類による条件分岐がどうしても多くなりがちだと感じています。
そこで、if文を少なくなるする方法の1つとしての、Enumを使用した方法があるということを知ったので、忘れないように投稿します。# if文を少なくするメリット
if文による条件分岐が多い場合、Enumを使用することでとても読みやすくなります。# 具体例
“`SampleEnum.java
public enum SampleEnum {kind1(new Kind1()),
kind2(new Kind2()),
kind3(new Kind3()),
kind4(new Kind4());SuperKind kind;
private SampleEnum(SuperKind kind) {
this.kind =
【Eclipse】補完機能を使いたいけど、スペースで補完を確定してしまうのをなんとかしたい
#現象
使用しているエディタ
Eclipse 4.8.0
macOS Catalina 10.15.6Eclipseの補完機能を有効にして、トリガーには`.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`
を当てている。“`java
String str =
“`
と入力したいのに、strの後に押すspaceキーで補完が確定される。つまり、自分で決める変数名でも意図しない補完が適応されてしまうので、バックスペースで毎回消去しないといけなくなる。いやだ〜![string.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668402/85499718-a8a4-80b3-1a11-76b3bd634316.gif)
#解決
####自動有効化遅延を500に設定![設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668402/48964455-
2020年に最も人気があるプログラミング言語 10選
元記事: [https://jp.scrapestorm.com/tutorial/10-most-popular-programming-languages-in-2020/](https://jp.scrapestorm.com/tutorial/10-most-popular-programming-languages-in-2020/)
プログラミングの初心者について、より良い見通しがある言語を選択するは非常に重要です。本文は十種類の2020年に最も人気があるプログラミング言語を紹介します。
まずTIOBEランキングを見てみます。非常に権威のあるランキングです。次の14つは長く生きているので、SQLがGOに置き換えられたことを除いて、他の9つのプログラミング言語がすべて存在し、長い間リストを支配していることがわかります。これから一つずつ紹介しましょう。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482909/8752ed6e-1360-9a99-edfc-00157ef8e38
Java static 【個人まとめ】
#【Java static】
Java static について理解が浅かったのでいろいろ調べてまとめました。
ご指摘など頂けると嬉しいです。随時追加して、備忘録として使っていきます。
##staticメソッド
このメソッドは、あるクラスのどのインスタンスから呼ばれても処理内容が変わらない。
staticメソッドは、インスタンス化による影響を受けない。クラス名.メソッド名の形で、インスタンスなしで呼び出せる。
Javaのmainメソッドには、static(最初だから)が必ず必要である。##非staticメソッド
staticを使わない変数は、クラスをインスタンスしないと使えない。
→非static変数##変数
・クラス変数 クラス内 グローバル変数
→インスタンス全て(クラスから作られた)で共有される。・インスタンス変数 インスタンス固有 ローカル変数
→インスタンス1個の中だけで使われる。
Kotlin について調べたこと
# Kotlin について調べたこと
## kotlinとは
Kotlinは、IntelliJ IDEAで有名なJetBrainsが開発したオブジェクト指向プログラミング言語です。
コンパイルされたコードはJVM上で動作するため、
これまでJAVAで作成した資産を流用できる様になっています。## Kotlinの基本構文
### 変数宣言
“`kotlin
// val で宣言すると値の再代入ができなくなる
val firstName: String = “Tanaka”
// 型推論でいちいち型の定義がいらない
val lastName = “Taro”// var で宣言すると再代入ができる
var age = 20
age = 21
“`### 配列
“`kotlin
// 配列(array)を作成
val nameList: Array= arrayOf(“tanaka”, “saitou”, “kimura”)
println(nameList[0]) // tanaka が出力//
Azure Batch で Java アプリケーションを実行する
# はじめに
**Azure Batch** はオートスケール可能な仮想マシン (VM) 上で任意のスクリプトやアプリケーションを実行できる便利なサービスです。VM に JVM (Java Virtual Machine) がインストールされていれば Java アプリケーションも実行することができます。公式ドキュメントでは .NET や Python アプリケーションについてのクイックスタートがありますが Java のドキュメントは現状無いため、本記事では、Azure Batch 上で Java アプリケーションを実行する流れを簡単にまとめたいと思います。
大筋は以下のクイックスタートの記事に沿っていますので、合わせてご覧ください。
[Azure クイックスタート: Azure portal で最初の Batch ジョブを実行する – Azure Batch | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/batch/quick-create-portal)# Batch 関連リソース作成
それでは順に Bat
[Thymeleaf テンプレートフラグメントで共通化] Headerの作成
こんにちは。
今回の記事ではSpring, Thymeleafで作るTODOアプリのヘッダー部分の作成について触れてみたいと思います。## TODOアプリ作成リンク集
[1: [超基礎の理解] MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: [雛形を用意する] Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: [MySQLとの接続・設定・データの表示] MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: [POST機能] 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
[5: [PATCH機
Javaに初めて触れてみた③
# Javaに触れてみた
自己満の備忘録になりますのでご容赦ください。## いろいろ作ってみる
今までの知識を活かして、私が大ファンの広島東洋カープについて機能を作っていきたいと思います。### ①監督の在任期間を表示する
番号を選択し、配列から取り出す機能にします。“`Test.java
import java.util.Scanner;class Test {
public static void main(String args[]) {
System.out.println(“[1]達川監督\n[2]山本監督\n[3]ブラウン監督\n[4]野村監督\n[5]緒方監督\n[6]佐々岡監督\n1〜6の数字を選択してください。”);
Integer number = new Scanner(System.in).nextInt();String[] array = {“2000年”, “2001年〜2005年”, “2006年〜2009年”, “2010年〜2014年”, “2015年〜2019年”, “2020年”};
S
初めてのjava.util.logging
# 本記事の結論
– java.util.loggingとは、Javaに搭載されたロギングを担うモジュールのこと## ロギングとは
– 出来事を時系列に沿って記録した履歴のこと
– ログレベルが存在する## ログレベルとは
– 文字通りログのレベルのこと
– java.util.loggingでは、下記のようにレベル分けされている。なお、デフォルトでは、INFO以上のログが出力されるよう設定されている。
– FINEST – 非常に詳細なトレースメッセージ
– FINER – かなり詳細なトレースメッセージ
– FINE – 詳細なトレースメッセージ
– CONFIG – 静的な構成メッセージ
– INFO – 情報メッセージ
– WARNING – 警告メッセージ
– SEVERE – 重大なメッセージ## java.util.loggingの機能
– Logger – ログの出力
– Handler – ログの出力先を制御
– Formatter – ログのフォーマットを制御# 参考
– [java.util.loggingの使い方]
Spring Boot で Ajax を使用したファイルのアップロード、ダウンロード(JQuery未使用)
# 作るもの2つ
1. Ajaxで画像をアップロードして、サーバーに格納後に表示する
2. 表示する画像を選択して画像表示ボタンを押すと、Ajaxでダウンロードして画像が表示される### デモ画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88686/0968b9cf-a244-9219-ea60-55b839f963f7.png)
# 1. ファイルアップロード
– 画面側
“`html:imageajax.html(一部)
ファイルアップロード
【java】【javaSliver】インタフェースと抽象クラスがややこしいのでまとめ
# この記事の目的
来週javaシルバーを受験するので、曖昧な部分を潰していくことに。
ちょっと混乱していた`インタフェース`と`抽象クラス`について整理しておこうかな。というのがこの記事の目的です。## 混乱していた理由
「抽象メソッドはabstractをつけて宣言する。つけないとコンパイルエラー」と書かれていたり、
「省略した場合、暗黙的にpublic abstractが付与される」と書かれていたり・・・「あれ?勘違い?」と混乱していました。
ので、一旦しっかり整理して混乱から脱出したかったんです。
今思えば、抽象メソッドと抽象クラス、インタフェースがごっちゃになっていたんだろうな。って思ってます。## ルール比較
インタフェースと抽象クラスで定義できるものを一覧でまとめました。整理整理。
メソッドとフィールド変数に分けて整理しました。### メソッドについて
まずはメソッドから。
`インタフェース`と `抽象クラス`それぞれでテーブルにまとめました。#### **インタフェースのメソッド達**
| 定義できるもの | アクセス修飾子 | 省略できる?|そ