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

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

CData JDBC Driver for Google Calendar2019の動作確認メモ

# CData JDBC Driver for Google Calendar2019の動作確認メモ

1年前くらいに残したメモですが、もったいないなと思ったので公開します。

## [CData JDBC Driver for Google Calendar](https://www.cdata.com/jp/drivers/googlecalendar/jdbc/)とは

[CData社](https://www.cdata.com/jp/)が作ったGoogleカレンダーにアクセスするJDBCドライバーです。

JDBCインターフェースを通して、他のユーザーの予定一覧を取得できるだけでなく、予定を入れたり削除したりできてしまいます。

機械的にGoogleカレンダー利用者の予定を操作できるので、管理職系の業務で役立ちそうなことが多そうです。またBIツールのようなデータ分析アプリケーションであれば他データとの関連づけも期待できます。

## 前提

– GCPアカウント https://console.cloud.google.com/
– OAuth2.0クライアントの情報(ク

元記事を表示

MVCのモデルをわかりやすく説明

_現在、railsでアプリケーションを開発しながら勉強をしているのですが、
MVCモデルを使って開発をしていて、V=View「わかる( ´∀`)」要は画面の表示をするフロントの部分だ。
C=Controller「わかる( ´∀`)」routeファイルに書いたモデルの対応したアクション(メソッド)で処理内容が違うし、表示させるファイルを呼び出したり、リダレクトしたり、呼び出すモデルが違ったり対応するアクション(メソッド)によって
行う処理が全く違う。_

_ではモデルとは???
モデルのファイルにはbelongs_toやhas_manyなどのモデルの結びつきなどが記載されています。
よくググるとデータベースとデータのやりとりを行う機能を実装したりする。など記載されていますが
なんのこっちゃよく分からん( ゚д゚)
なので、自分なりにモデルとはこういうものだよと解説していきます。_
#モデルの概念
モデルとは日本語で、型や模型を意味しています。
この型とは?なんの型なのでしょうか?何を意味しているのでしょうか?
例えば「User」モデルがあるとします。Userとは使用者、使い手などを意味し

元記事を表示

絵文字およびゼロ幅ジョイナーを含む文字列を反転させる

# はじめに

最近、プログラミングに関するQ&Aのサイトstackoverflowに興味深い質問が投稿されました。

[java – How to reverse a string that contains complicated emojis? like “???????” – Stack Overflow](https://stackoverflow.com/questions/66706976/how-to-reverse-a-string-that-contains-complicated-emojis-like#66706976)

興味を持ったので解答してみようとしたのですが時間がかかってしまい、もたもたしているうちにクローズされてしまいました。質問者がチャレンジしたコードが記載されていないために「This question needs to be more focused. It is not currently accepting answers.」となってしまったようです。
この投稿ではこの質問に対する解答を与えてみようと思います。
(ここで記述したコードはすべて

元記事を表示

djUnitをJava15、eclipse2021-03で使用する

#概要
@umed0025さんの[eclipse4.5(mars)以降でdjunitプラグインを使う方法](https://qiita.com/umed0025/items/85709ca887593548a75c “eclipse4.5(mars)以降でdjunitプラグインを使う方法”)と似た内容ですがこちらはJava15、Eclipse2021-03でdjUnitを使う方法です。

#動作環境
・Ubuntu 20.04.1 LTS
・Eclipse IDE 2021-03 R Packages for Enterprise Java and Web Developers Linux x86_64(日本語化せず)
・Java15(Eclipse 2021-03に内蔵)
・djunit 0.8.6

#手順
1. Create a ProjectでPlug-in Projectを選び枠組みを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132879/5d46928c-e8

元記事を表示

[Java]インナークラスのstatic修飾子の動作

# インナークラスのstatic修飾子
クラス内で定義されたクラスがインナークラス。
それにstatic修飾子があるかないかで振る舞いが異なる。

“`java
class Fruits {
static ArrayList fruits = new ArrayList(
Arrays.asList(“Apple”, “Banana”)
);
// appleをstatic有りで、bananaをstatic無しで定義
static String apple = “Apple”;
String banana = “Banana”;

// Appleというインナークラスをstatic有りで定義
static class Apple {
void eat() {
// りんごを食べる
fruits.remove(apple);
}
}

// Bananaというインナークラスをstatic無しで定義
class Banana {
void eat() {

元記事を表示

[Java]ListとSetの違い

#### List
https://docs.oracle.com/javase/jp/8/docs/api/java/util/ArrayList.html
順序つきの配列で、値の重複が可能。

“`java
ArrayList fruits = new ArrayList<>();
fruits.add(“りんご”);
fruits.add(“ばなな”);
fruits.add(“ぶどう”);
fruits.add(“りんご”); // りんごを複数登録する

for (String f : fruits) {
System.out.println(f);
}

-> りんご
-> ばなな
-> ぶどう
-> りんご
“`

格納した順序で、かつ重複登録したりんごが格納できています。
順序を保持するため、2番目のりんごと4番目のりんごをそれぞれ別に扱えるようになっています。

#### Set
https://docs.oracle.com/javase/jp/8/docs/api/java/util/HashSet.html
要素の順番を保証しない配列で、

元記事を表示

[Java]ArrayListとLinkedListの違い

### LinkedList
https://docs.oracle.com/javase/jp/8/docs/api/java/util/LinkedList.html
ArrayListと対になる存在で、連結リストと呼ばれる。
構造が違うためパフォーマンスが異なる。

|クラス名|要素の検索速度|要素の追加削除速度|
|:–:|:–:|:–:|
|ArrayList|高速|低速|
|LinkedList|低速|高速|

##### ArrayList

連続して要素を並べることで順序を保持しています。
そのため、要素の追加や削除が行われると後ろの要素を1つずつ玉突き方式で移動させていきます。
この処理が遅く、ArrayListの要素の追加削除速度が遅い原因になります。

A,B,C,D の4つの要素からBを消した場

元記事を表示

java

sss

元記事を表示

ProtocとWireで生成されるJavaファイルとバイトコードのサイズを比較してみた

GradleでProtocol Bufferを使う時には[GoogleのProtobuf Plugin for Gradle](https://github.com/google/protobuf-gradle-plugin)か[WireのGradle Plugin](https://github.com/square/wire/blob/master/wire-library/docs/wire_compiler.md)が主流だと思いますが、それぞれのコンパイラ(protoc/wire)で生成されるJavaファイル(およびKotlinファイル)のサイズと、さらにそれをJVMバイトコードにコンパイルした時のファイルサイズを比較してみました。

きっかけはSquare社の[Introducing Wire Protocol Buffersという記事](https://developer.squareup.com/blog/introducing-wire-protocol-buffers/)で、Protocol Bufferの実装を**protocからwireに変えたらメソッドが10,0

元記事を表示

【Java】独自クラスのListで重複した要素を除外する

# はじめに

Javaにて自分で作成したクラスのListから重複した要素を除外する方法について、いつもやり方を探してしまうので個人的なメモとしてまとめてみます。

# 前提

こんな感じの`Person`クラスがあったとします。

“`java:Person.java
public class Person {
private String id;
private String name;
private int age;

public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}

public String getId() {
return this.id;
}

public String getName() {
return this.name;
}

public int ge

元記事を表示

[Android] Jetpack ViewBinding

Android Studio 4.1.2(windows版) で動作検証してます

ViewBindingを採用することで各コントロールをfindViewById()で呼び出さなくてもよくなりました
Android Developerの説明にある通りnullや型の安全性があるので積極採用する流れになると思います
※ActivityやFragmentでコントロールのIDに重複が無いように定義する必要があります

ViewBindingはAndroid Developerの説明で十分理解ができるかとは思いますが軽く説明してみます

Android DeveloperのViewBindingの説明は以下です

https://developer.android.com/topic/libraries/view-binding?hl=ja#java

## ViewBindingを使用するための設定
build.gradleに以下を追加します
ViewBindingを有効にするとBindingクラスが自動生成されます

“`build.gradle
android {
viewBin

元記事を表示

[Android] ボタンイベントのベスト実装パターンを模索

Android Studio 4.1.2(windows版) で動作検証してます
Javaでの実装中心の話となってます

Androidでボタンイベントを実装する方法はいくつかあります
みなさまはどの実装パターンを採用しているでしょうか?
すでにいろいろな方が同じような内容をまとめてくれていますが
実装に迷っている方もいるかもしれませんのであえてこちらでまとめています

Android DeveloperのButtonの説明は以下です

https://developer.android.com/guide/topics/ui/controls/button?hl=ja

## findViewById()でボタンを取得し直接setOnClickListener()で実装(匿名クラスで実装)
Activity/Fragmentで実装方法がほぼ同じなため
onCreate()あたりで以下のような実装をするパターンが多いのではないでしょうか?
私も脳死状態でよくこのパターンをコピペで実装してしまってます

“`Java:Java
findViewById(R.id.button).set

元記事を表示

Android Studio ToDoListアプリ制作(動画有り)

今回はToDoListアプリを制作しました。
YouTubeに作っている動画をアップしています。

“`xml:strings.xml

ToDoListApp
タイトル:
内容:
登録
登録しました
登録出来ませんでした

タイトルを入力してください

元記事を表示

【Java Silver】未経験者による取得体験記 【Oracle Certified Java Programmer, Silver SE 11】

新卒でweb系自社開発企業より内定をいただいており、どうやらJava言語による開発をしているぞということで、先ほど取得してきました。

大学では計量経済学による実証分析を専攻していたので、開発に対しては門外漢です。
研究でR使ってました〜程度です。

使用教材や勉強方法を以下に共有します。

# 使用した教材
– [徹底攻略Java SE 11 Silver問題集[1Z0-815]対応](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-11-Silver%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-815/dp/4295007625/ref=asc_df_4295007625/?tag=jpgo-22&linkCode=df0&hvadid=342700130622&hvpos=&hvnetw=g&hvrand=246222853093982832&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=20636&

元記事を表示

[Java16]新機能Recordの詳細

# この記事について

2020/3/16にリリースされたJava16の言語仕様に関わる変更について,自分の理解を深めるのを兼ねてまとめてみます.プレビュー中の機能は含みません.

+ record (この記事)
+ [instanceof パターンマッチング](https://qiita.com/ReiTsukikazu/items/be973af7070c92bf87d5)
+ [型指定の制約について](https://qiita.com/ReiTsukikazu/items/bfac1d3bbac60915b73e)
+ [値ベースのクラスに対する警告](https://qiita.com/ReiTsukikazu/items/ddcfc8f279017e9ba186)

## 出典

+ [JEP 395: Records](https://openjdk.java.net/jeps/395)
+ [Java SE 16 言語仕様](https://docs.oracle.com/javase/specs/jls/se16/html/index.html)

# 新機能:

元記事を表示

[Android] (覚書)Jetpack NavigationとViewModelを採用した新規アプリ作成時のチートシート

Android Studio 4.1.2(windows版) での流れとなります

業務上他のプラットフォームの対応があったりでandroidの開発を継続的にできないので
ついど忘れしちゃいそうな予感のため覚書としてまとめました

Android DeveloperのJetpack Navigationの説明は以下です

https://developer.android.com/guide/navigation/navigation-getting-started?hl=ja

## 新規プロジェクト作成
新規プロジェクト作成でEmpty Activity を選択します

## navigationの作成
navigationフォルダを作成します

Android Resource Directory を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524204/b7268791-db3c-267d-3aa5-3884e4d99981.png)
Resource type でna

元記事を表示

SpringBoot + MySQL でTodoリストを作る!CRUDの実装(Delete編)

#はじめに

前回はidに応じたTodoのbooleanの値を更新する機能を実装しました。

今回は、**「Todoの削除機能の実装」**をゴールとしています。

SpringBootを学び始めた方、復習をしたい方に向けて学んだ事を共有します。

##開発環境

“`
OS: macOS Mojave(バージョン 10.14.6)
“`

“`
$ java -version
openjdk version “11.0.2” 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
“`

“`
$ mvn -version
Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 15.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/15.0.2/libexec/o

元記事を表示

[Java16]instanceofパターンマッチングとスコープ範囲

# この記事について

2020/3/16にリリースされたJava16の言語仕様に関わる変更について,自分の理解を深めるのを兼ねてまとめてみます.プレビュー中の機能は含みません.

+ [record](https://qiita.com/ReiTsukikazu/items/6dc3ec9ea9646c472db0)
+ instanceof パターンマッチング (この記事)
+ [型指定の制約について](https://qiita.com/ReiTsukikazu/items/bfac1d3bbac60915b73e)
+ [値ベースのクラスに対する警告](https://qiita.com/ReiTsukikazu/items/ddcfc8f279017e9ba186)

`instanceof`パターンマッチングは一見微妙に新しい形の構文を1つ追加しただけに思えますが,実は変数のスコープに関して複雑な仕様を含んでいて,かなり奥深いものになっています.

## 出典

+ [JEP 394: Pattern Matching for instanceof](https://o

元記事を表示

[Java16]値ベースのクラスに対する警告

# この記事について

2020/3/16にリリースされたJava16の言語仕様に関わる変更について,自分の理解を深めるのを兼ねてまとめてみます.プレビュー中の機能は含みません.

+ [record](https://qiita.com/ReiTsukikazu/items/6dc3ec9ea9646c472db0)
+ [instanceof パターンマッチング](https://qiita.com/ReiTsukikazu/items/be973af7070c92bf87d5)
+ [型指定の制約について](https://qiita.com/ReiTsukikazu/items/bfac1d3bbac60915b73e)
+ 値ベースのクラスに対する警告(この記事)

値ベースのクラスに関しては,Java16で直ちにコンパイル結果が変わったりするわけではありませんが,今後のバージョンで互換性を破壊する変更が入りそうなので,早めに警告をだすことにしたようです.

## 出典

+ [JEP 390: Warnings for Value-Based Classes](http

元記事を表示

MacでJavaを利用するときのメモ(2021年3月)

いつも何も考えずbrew install openjdkとかでインストールしていたが、いろいろ奥が(闇が)深いらしいのでメモ。

>javaをAndroid以外の開発で利用することはほとんどないので謎ワールド。

## brew install openjdk

### インストール

brewコマンドで簡単インストール。

“`bash
brew install openjdk
“`

が、どうやらkeg-onlyとうものであるため/usr/local/bin等にリンクが自動で張られない。
通常brew installすると/usr/localCellarに実体がインストールされ/usr/local/binにシンボリックリンクが設定され、PATHが通りますが、key-onlyでは実体だけのようです。

>2021年3月現在、15.0.2がインストールされるみたい。

### PATHの設定

そのため、.zshrcに

“`bash
export PATH=”/usr/local/opt/openjdk/bin:$PATH”
“`

必要に応じて

“`bash
expo

元記事を表示

OTHERカテゴリの最新記事