- 1. 文字列比較 パイザのスキルチェック問題で引っかかったこと
- 2. kotlinとjavaの基礎をまとめてみた
- 3. 【SpringBoot】ConfigurationPropertiesアノテーションを付与したクラスのbeanが見当たらなかった話
- 4. Javaをより快適にするために移行しよう
- 5. 二段階認証JAVA実現(TOTP)
- 6. WebでH2データベースを確認
- 7. Windows10 Eclipse環境構築&何してるのか深堀 2020年8月
- 8. AtomicReference について私的なメモ
- 9. 【IntelliJ】操作を便利にする5つのショートカット設定
- 10. # Spring Boot + maven でthymeleaf の変更をすぐにブラウザに反映する方法
- 11. kotlin&Java:特定のフラグメントのみツールバーを表示しない方法
- 12. Gradle でプロジェクトファイル一式を ZIP アーカイブするタスクを定義する
- 13. クリーンアーキテクチャでブロック崩しゲームを設計・実装
- 14. AtCoder Beginner Contest 175 B問題「Making Triangle」解説(C++,Python3,Java)
- 15. AtCoder Beginner Contest 175 A問題「Rainy Season 」解説(C++,Python3,Java)
- 16. Gradle で JAR ファイル名にタイムスタンプを付加する
- 17. javaでAtCoder Beginner Contest 175を解く
- 18. JREにjstack.exeとtools.jarをコピればJREでもスレッドダンプは取れる
- 19. 2言語でアプリ開発してみた
- 20. javaでアルゴリズム入門 – 辞書式順序・組み合わせ雑食(part1)
文字列比較 パイザのスキルチェック問題で引っかかったこと
パイザで公開されているスキルチェック問題「文字列比較」(※コード公開OKの問題)で引っかかったのでまとめ。
問題内容は、
「入力した2つの文字列を比較する」というもの
###引っかかった理由
文字列比較関数があることは知っていたが、参照した動画内でそのやり方が書かれていなかったので、「まさか使うとは思ってなかった」という先入観。“`ruby:不正解コード
import java.util.*;
public class Main {
public static void main(String[] args) {Scanner sc = new Scanner(System.in);
String line1 = sc.nextLine();
String line2 = sc.nextLine();if( line1 == line2 ){
System.out.println(“OK”);
}
else{
kotlinとjavaの基礎をまとめてみた
# はじめに…
この記事は[1個前の記事](https://qiita.com/sato-na/items/cc23f9b1db9c948dc00e)で書いた、
**7日間毎日記事投稿の2日目**
になってます
使うコードは下に貼りますが、このアプリの詳しい機能はその1個前の記事をご覧ください!
– java版 : https://github.com/sato-na/guruwake_java
– kotlin版 : https://github.com/sato-na/guruwake_kotlin
↓ここからが今回の記事の本題です↓
# それぞれの言語の基礎を比べると…
— 目次 —
1. 変数定義の方法
2. if文の書き方
3. for文の書き方
4. String→Intにする方法
## 変数定義の方法
– javaの場合
`型 変数名 = 初期値;`
> 型の指定が必要
例)
“`java:ResultActivty.java
String rTxt = “”; // 31行目
int member
【SpringBoot】ConfigurationPropertiesアノテーションを付与したクラスのbeanが見当たらなかった話
## ConfigurationPropertiesとは
SpringBootにおいて設定ファイルの値をアプリケーションで取り扱う方法の一つ。#### application.yaml
“`yaml
sample:
hoge: hogeValue
huga: hugaValue
piyo: piyoValue
“`のような設定値が存在する場合に
“`kotlin
package com.wakye.propertyimport ……..
@ConstructorBinding
@ConfigurationProperties(“sample”)
data class SampleProperty(
val hoge: String,
val huga: String,
val piyo: String
)
“`このように設定値に対応するフィールドを持つクラスにConfigurationPropertiesアノテーションを付与することで値のバインドを行った後にbeanとして登録してくれる、と
Javaをより快適にするために移行しよう
これはJavaからKotlinへの移行してみたら、とてもよかったということを伝えるための記事です。
# Javaの欠点
私は少し前までJavaでプログラミングをしていました。しかしJavaには欠点があります。これは例えば次のようなものです。:warning:これはJavaからの移行についての記事です。JavaScriptは全く別の言語です。ご注意ください。
## NullPointerException
APIから戻り値としてnullが返される場合や引数にnullを渡されたりします。前者についてはJava 8で追加されたOptionalクラスを使うことで回避できますが、後者はどうにもできません。実行時エラーはできますがコンパイルエラーが出ないことは残念なことです。
## 冗長な記述
### 型の記述
変数を宣言する場合、`Listwords`など型を記述します。しかし、それを推論できればいいですよね。いまでは`var`が使えますが、インスタンスフィールドなどにはそれはできません。
### オブジェクト指向について
Javaではいちいちカプセル化をするためにg
二段階認証JAVA実現(TOTP)
# 1.はじめに
ある社内システムを外部へ公開により、セキュリティ対策を強化するため、ログインの二段階認証を実現したい。ITエンジニアの私として、二段階認証の実現方法を検討します。# 2.二段階認証の使用流れ
– 各サイトに二段階認証機能を使うと、QRコードをスキャンしてから、認証アプリをアカウントに登録するよう求めるメッセージが表示
– 色々認証アプリがあり、例えば、Google Authenticator、Authy、Duo Mobile、1Passwordなど(時間ベースのワンタイムパスワード(TOTP)認証アプリ)
– QRコードをスキャンしたら、認証アプリにより、30秒ごとにパスワードを生成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271267/6fe30615-9c0e-ee3e-a3e4-fd27040a2cbd.png)
– 普通のログインパスワード以外、該当パスワードは二段階認証コードとして使う# 3.TOTP
時間によってワンタイムパスワー
WebでH2データベースを確認
# WebでH2データベースを確認
プライベートプロジェクトを行うときによくH2データベースを利用しますが、
Web上でH2データベースを確認する方法を書いておきます。application.properties内にコードを書きます。
“`
spring.h2.console.enabled=true
“`そしてサーバーを起動し、以下のURLに接続するとH2データベースの設定画面が表示されます。
http://localhost:8080/h2-console/![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684074/189054c6-f27f-8a97-d5ba-dd0f196bf01e.png)
Connectボタンを押すと以下のように正常に表示されることが確認されますね。
Selectの正常に動くことを確認できました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
Windows10 Eclipse環境構築&何してるのか深堀 2020年8月
JavaのEclipseでの開発環境構築について、備忘録を兼ねて記事にまとめました。
2020年8月時点です。
##環境
OS: Windows10#1. JavaのJDK入手
Eclipseインストーラ実行に必要な、Javaの実行環境を準備する(JDKの入手)。
###手順
https://openjdk.java.net
・install→jdk.java.net→Ready for use: JDK 14→Windows64bit
からJDKをダウンロード。
・解凍して、「jdk-14.0.2」ができることを確認する。
・C:\ドライブ直下に「jdk-14.0.2」を移動する(他の場所でも可だが、パスが長すぎたり日本語が入ってるとエラーの原因になる)。
・パスは「C:\jdk-14.0.2」になる。
(14.0.2は記事作成時のバージョン)
###解説
#####
AtomicReference について私的なメモ
コードリーディングをしていると、`AtomicReference` というクラスに当たったので、調べてみた。
# AtmoicReference とは
[リファレンス](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html)によると
> アトミックに更新されるオブジェクトのリファレンス
との事。これだけだとわからないけど、コンカレントプログラミングを実施する際に、シェアするオブジェクトで更新したいものを保持しておく。`syncronize` はコスト高だし、`violatile`キーワード は書き込みを同時にされたら破綻する。
## volatile
脱線するが、 `volatile` キーワードの意図するところは、変数の参照を、CPUキャッシュではなく、メインメモリを参照することを保証することにある。このキーワードがない変数は、通常、CPUキャッシュを参照する。複数のCPUがあるシステムの場合、同じ値を参照するとは限らない。そこで、`volat
【IntelliJ】操作を便利にする5つのショートカット設定
プログラミングの効率的な作業のため、自分が使いやすいIDEを使用すると思います。
僕は主にJavaで開発していて、以前はEclipseを愛用していましたが、現在はIntelliJに乗り換えました。
当初は不慣れで使いづらさもありましたが、今では手放せなくなっています。そのIntelliJについて、さらに使いやすくするためのカスタマイズ方法を掲載します。
既にカスタマイズしている人にはヒントにならないかもしれませんが、僕の周辺ではデフォルトのままで操作に時間をかけてしまう人も意外と多いです。
また、自分では思いつかない方法に気付くこともあると思うので、参考にしてもらえたら嬉しいです。# IntelliJとは
IntelliJについて簡単に説明しておきます。IntteliJとは、JetBrains社が提供するJavaのIDE(統合開発環境)です。
JavaではオープンソースのEclipseが長年使われていてデファクトスタンダードの位置にありましたが、そのEclipseの牙城を崩したとも言われています。IntelliJにはCommunity版(無料)とPro版(有料)があ
# Spring Boot + maven でthymeleaf の変更をすぐにブラウザに反映する方法
# Spring Boot + maven でthymeleaf の変更をすぐにブラウザに反映する方法
spring + maven 環境で開発をしているときに、Javaの変更はdevtools で自動的に変更が反映されるのに、HTML等の静的ファイルが自動で反映されないというとき、
ファイルの構造等特に変更していなければ、application.yml(あるいはapplication.properties)に以下の設定を追加することで、変更がすぐにブラウザに反映されるようになります。“`yml
spring:
thymeleaf:
prefix: classpath:/templates/
“`もしくはこちらの書き方でも反映されます。
“`yml
spring:
thymeleaf:
prefix: file:src/main/resources/templates/
“`
kotlin&Java:特定のフラグメントのみツールバーを表示しない方法
#はじめに
Android開発で特定のフラグメントのみツールバーを表示しない実装に今後も遭遇することが予想されるため、備忘録を含め下記にまとめさせていただきます。## kotlinの場合
“`kotlin:kotlin
//隠したい
(activity as AppCompatActivity?)!!.getSupportActionBar()!!.hide()//表示したい
(activity as AppCompatActivity?)!!.getSupportActionBar()!!.show()
“`## Javaの場合
“`kotlin:Java
//隠したい
((AppCompatActivity)getActivity()).getSupportActionBar().hide();//表示したい
((AppCompatActivity)getActivity()).getSupportActionBar().show();
“`以上となります。
今回参考にした記事です。
より詳細に記載がりますので、よろしければご参照ください。(Javaで
Gradle でプロジェクトファイル一式を ZIP アーカイブするタスクを定義する
## 概要
– Gradle でプロジェクトファイル一式を ZIP アーカイブするタスクを定義する
– 動作確認環境: Gradle 6.6 + Java 14 (AdoptOpenJDK 14.0.2)## build.gradle
“`groovy
plugins {
id ‘java’
}repositories {
mavenCentral()
}version = ‘1.2.3’
dependencies {
// 使うライブラリなどを指定
implementation ‘com.google.guava:guava:29.0-jre’
testImplementation ‘org.junit.jupiter:junit-jupiter-api:5.6.2’
testRuntimeOnly ‘org.junit.jupiter:junit-jupiter-engine:5.6.2’
}// プロジェクトファイル一式を ZIP アーカイブするタスクを定義
task myZip(type: Zip) {// ZIP ファイ
クリーンアーキテクチャでブロック崩しゲームを設計・実装
※ 一度記事を公開したのですが、設計を見直して再投稿しました。
# はじめに
クリーンアーキテクチャの勉強をしていまして、いろいろな設計・実装に挑戦しています。
題材に良さそうな記事があり、クリーンアーキテクチャを意識して再設計・再実装に挑戦してみました。
元記事のコメント欄に設計案と実装案をコメントしたのですが、更にブラッシュアップしましたので、設計の過程なども整理して記事にします。
題材: [java簡素なブロック崩し作ってみた – Qiita]()![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/f1fab751-0f66-93a6-c402-684a0e66381c.png)
# 設計
## クリーンアーキテクチャ
クリーンアーキテクチャでは下図のようにレイヤーを分けます。
![clean.jpg](https://qiita-image-store.s3.amazonaws.com/0/293368/7ce1fb10-504e-16e0-8930-278b
AtCoder Beginner Contest 175 B問題「Making Triangle」解説(C++,Python3,Java)
Ruteです。
AtCoder Beginner Contest 175 B問題「Making Triangle」の解説を行います。
>問題URL:
https://atcoder.jp/contests/abc175/tasks/abc175_b#問題概要
$N$本の棒のうち、三角形を作ることのできるような長さの異なる$3$本の棒を選ぶ方法は何通りあるかを求めよ。##制約
・$1 \leq N \leq 100$
・$1 \leq L_i \leq 10^9$
・入力は全て整数#解法
ans = 0と初期化しておきます。
以下の様な繰返し処理を実装すれば良いです。
・以下の繰返し処理を$(0,n)$の範囲で行う(カウンタ変数を$i$とする)
・以下の繰返し処理を$(i+1,n)$の範囲で行う(カウンタ変数を$j$とする)
・以下の繰返し処理を$(j+1,n)$の範囲で行う(カウンタ変数を$k$とする)
`L[i] == L[j]である` or `L[i] == L[k]である` or `L[j] == L[k]である`を満たしているかを判定す
AtCoder Beginner Contest 175 A問題「Rainy Season 」解説(C++,Python3,Java)
Ruteです。
AtCoder Beginner Contest 175 A問題「Rainy Season」の解説を行います。
>問題URL:
https://atcoder.jp/contests/abc175/tasks/abc175_a#問題概要
`”R”`が最大何文字連続しているかを出力しなさい。##制約
・ $|S| = 3$
・$S$の各文字は`’S’`または`’R’`である#解説
ls = []と定義します。
$S$を文字列として受け取ります。
now = 0とします。 これは後で利用します。
以下の様な繰返し処理を行います。
・もし`S[i](Sのi文字目)`が”R”だった場合
now に1を加算します。
・そうでない場合
lsにnowの値を挿入し、nowの値を0とします。
最後に、lsに繰返し処理が終わった後のnowの値を挿入します。
lsにある数のうち、最大の数が答えなのでこれを出力すれば良いです。もしくは、制約がかなり小さいので、全ての文字列について`’R’`が何文字あるかどうかをあらかじめ計算して、条件分岐でその都度出力してもよさそう
Gradle で JAR ファイル名にタイムスタンプを付加する
## 概要
– Gradle で JAR ファイルを作成する際、ファイル名にタイムスタンプを付加する
– 動作確認環境: Gradle 6.6 + Groovy 2.5.12## build.gradle
build.gradle ファイルにて project.version に日時文字列を付加する。
“`groovy
plugins {
id ‘java’
}project.version = ‘1.2.3’ + ‘_’ + getTimestamp()
def getTimestamp() {
// 年月日_時分秒_ミリ秒
return new Date().format(‘yyyyMMdd_HHmmss_SSS’)
}
“`jar タスクや build タスクで JAR ファイルを作成する。
“`
$ gradle build
“`build/libs に以下のようなファイル名で jar が生成されているのを確認できる。
“`
$ ls build/libs
myapp-1.2.3-20200815_220925_236.jar
javaでAtCoder Beginner Contest 175を解く
AtCoder Beginner Contest 175お疲れ様でした!
[公式ページ](https://atcoder.jp/contests/abc175)今回の自分の書いたコードは[こちら](https://github.com/ko-flavor/atcoder-java/tree/master/atcoder/src/abc/abc175)
結果はA-CまでACできました。DもEもなんか難しかった・・・以下簡単に解説します。
##[問題A](https://atcoder.jp/contests/abc175/tasks/abc175_a)
文字列が最大で何回連続しているかを答える問題。
`String.charAt()`
で指定文字取得して、愚直に条件文書きました。##[問題B](https://atcoder.jp/contests/abc175/tasks/abc175_b)
3辺の長さが与えられて、それが三角形になるかどうかを出力する問題。
注意点として、同じ長さの辺は使用してはいけないことです。計算量は気にせず3重ループでも十分間に合います。
JREにjstack.exeとtools.jarをコピればJREでもスレッドダンプは取れる
JREでアプリを動かしてるWindowsサーバで、スレッドダンプを取得する要件が発生した。
考えること、多い– JDKなら普通に取れるけど、JREだとjstackは存在しないので、JDKインストールしないといけない?
– JREで動いてるアプリを、別のパスでインストールしたJDKでスレッドダンプ取れんのか?
– アプリをJDKで動かさないといけないんじゃ?
– JREはそのままにしてJDKを追加でインストールする? Pathとか気を付けないと
– JREとJDKはver合わせないとだよね色々わからないので、ためしにどういうエラーメッセージでるのかなーと、適当なJDKダウンロードしてきて、適当なJavaアプリにjstack仕掛けてみる
と思ったが、適当なJavaアプリがないので、EclipseがJavaで動いてることを思い出して、試しにEclipse (eclipse.exe) にやってみる
#動いた
(スレッドダンプ取れた)
↑見出しの間違った使い方 (でかい文字にしたかったが方法がこれしかない残念)eclipse.exeがどのverのどういうJava実行環境なのか全
2言語でアプリ開発してみた
# アプリ、開発しました!
## アプリの概要
**メンバーとグループ数を入力するとグループ分けするアプリ**
機能の詳しい説明 : [はてなブログ](https://sato-na.hatenablog.com/entry/2020/08/15/205239)
## 開発環境 / コード
– エディタ : AndroidStudio
– java版 : https://github.com/sato-na/guruwake_java
– kotlin版 : https://github.com/sato-na/guruwake_kotlin
# なぜ、2言語で同じアプリを開発したのか
kotlinとjavaの共通点 = アンドロイドアプリが開発できる
だけど、書き方が少し違う…
なので、
同じアプリを開発して同じ機能を実装しようとしたときに、
どのように違うのかが気になって作りました!
ですが、2言語を照らし合わせながらコードを書いてみると…
**ただコードをあわせるだけじゃまだ振り返りにくいな…**
# ということで…
**今日から7日間毎日記
javaでアルゴリズム入門 – 辞書式順序・組み合わせ雑食(part1)
# 記事の概要
自分の勉強兼メモでまとめている記事シリーズです。第七弾。
今までの記事はこちら。|#|記事|
|:—————–:|:—————–|
|6|[javaでアルゴリズム入門 – しゃくとり法](https://qiita.com/aja_min/items/77f43ad114a0dbea88e3)|
|5|[javaでアルゴリズム入門 – 累積和](https://qiita.com/aja_min/items/3a334fb03749d8f42a25)|
|4|[javaでアルゴリズム入門 – 探索編(bit全探索)](https://qiita.com/aja_min/items/2a94758cf58fc1ea6f65)|
|3|[javaでアルゴリズム入門 – 探索編(幅優先探索)](https://qiita.com/aja_min/items/5f25e73086b2f3c720bb)|
|2|[javaでアルゴリズム入門 – 探索編(深さ優先探索)](https://qiita.com/aja_min/items