- 1. LT;DR
- 2. ASCII制御文字を文字列から除去する。
- 2.0.1. 初心者から始めるJava、データ隠蔽
- 2.0.2. Spring Boot 2.0からSpring Boot 2.2にマイグレーションしたときの変更点
- 2.0.3. Android 基礎文法について
- 2.0.4. SpringBoot+Maven+PostgreSQLでFlywayの導入
- 2.0.5. Visual Studio CodeによるSpring5 MVC Webアプリ開発 HelloWorld作成編
- 2.0.6. Visual Studio CodeによるSpring5 MVC Webアプリ開発 Mavenひな型作成編
- 2.0.7. Spring Securityで403 forbiddenが発生する
- 2.0.8. ABC – 134- A&B&C&D&E
- 2.0.9. 偏差値コンポーネントを作ってみる
- 2.0.10. Java 日付の厳密なチェックとサマータイムの関係
- 2.0.11. 初心者から始めるJava、クラスのフィールド・メソッド
- 2.0.12. Eclipse – java.lang.ClassNotFoundExceptionを解決する。
- 2.0.13. JavaSilver11 勉強法
- 2.0.14. jshellのデフォルトエディタにVS Codeを指定する
- 2.0.15. 計算ゲームアプリ Google play storeで公開しました
セミコロンレスって new FizzBuzz().say(0).say(1).say(2).say(3).say(4)… のことだと思ってた
# 解決 new FizzBuzz().say(0).say(1).say(2).say(3).say(4)は「メソッドチェーン」というのだ!
shiracamus様に教えていただきました。ありがとうございます。—-
javaのjの字も知らなかった2、3年前のことですが、
「セミコロンレスjava」といって、セミコロンなしでFizzBuzzをやってみたりするコードがネットで公開されてました。“`java:printやprintlnは戻り値なしだけどprintfは何故かPrintStreamを返してくれる。だからnullと比較できる
public class SemicolonLessFizzBuzz
{SemicolonLessFizzBuzz(int j)
{
for(int i : new int[] {j})
if(System.out.printf(“%d”, i)!=null)
{
if(i%3==0)
if(System.out.printf(“fizz”)!=null)
{}else{}
if(i
Java Excel設定背景色と背景画像
本論文では、Spire.XLS for Javaを使って、Excel文書に背景色と背景画像を設定する方法を紹介します。
Excel workbookの背景色を設定します
“`java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;import java.awt.*;
public class BackgroundColor{
public static void main(String[] args){
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// Excelドキュメントを読み込む
workbook.loadFromFile(“input.xlsx”);//最初のシートを取得
Worksheet sheet = workbook.getWorksh
DB接続設定をパラメータで指定するSpring Bootアプリケーション
Spring BootでDB接続を行うコマンドラインアプリケーションを作ってみた。
それ自体はよくあるアプリケーションなのだが、DBの接続情報はコマンドのパラメータで指定できるように実装されているのはあまり見かけないので実装方法を纏めておこうと思う。## 環境
– OpenJDK 13.0.2
– Gradle 6.2.1
– Sprinig Boot 2.2.5
– Apache Commons CLI 1.4## 初期処理
`org.springframework.boot.CommandLineRunner`インタフェースを実装したクラスを実装するとSpring Bootさんが起動処理後に呼び出してくれるらしい。
– examples.cli.MainRunner
“`
@Component
@Lazy(false)
public class MainRunner implements CommandLineRunner {private static String HELP_MESSAGE = “java -jar cli-examples.jar
JavaとJavaScriptは
JavaとJavaScriptは○○と△△ぐらい違うというネタが好きすぎるので投稿(n番煎じ)
個人的に好きなものだけ載せてます。思いつき次第追加していくつもりです。
# メロンとメロンパンぐらい違う
有名ですけど僕はあんまりこれは違いを実感できないんじゃないかと思ってます。インドとインドネシアも似た感じ。
# グレープとグレープフルーツぐらい違う
個人的に優勝しているやつです。次の点がいいです。
– JavaScriptがJavaにあやかっているようにグレープフルーツもグレープにあやかっている
– 「Javaのスクリプト」「グレープはフルーツ」みたいな言葉遊び的要素がある
– **グレープジュースを頼んでグレープフルーツジュースが出てきたら僕なら怒る** → 違いが実感しやすいし現実生活で起こりうる# VisualStudioとVisualStudio Codeぐらい違う
「JavaはVSではないものの統合開発環境があったほうがよく、JSはVSCodeで十分」みたいな感じで対称性がよく出ているように思えます。
# GitとGitHubぐらい違う
逆にGitとGi
文字列からASCIIコードの制御文字を削除する
LT;DR
Hexをbyte配列に変換して`new String(byte[])`したら0x00とか0x01とか入ってきてムキーってなったので調べた。
ASCII制御文字を文字列から除去する。
“`java:replaseAsciiCC.java
// hexからbyteに変換するのに必要。
import javax.xml.bind.DatatypeConverter;// class定義とかmethod定義とか略
String hex = “313233343536373839302D5E5C”;
byte[] hexFromByte = DatatypeConverter.parseHexBinary(hex);
String strFromByte = new String(hexFromByte);String resultStr strFromByte.replaceAll(“\\p{C}”, “”));
// “1234567890-^\”って出力されるはず。
System.out.println(resultStr)
初心者から始めるJava、データ隠蔽
追記:2020/3/13 今回の内容は、「カプセル化」というより「データ隠蔽」の内容になっていたことをコメントで指摘していただいたので、修正。
タイトルもカプセル化からデータ隠蔽へ変更。#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
~~**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。~~
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。##環境
言語:Java11、JDK13.0.2
動作環境:Windows10#メンバへのアクセス制限
`new`で生成したインスタンスが、クラスから引き継いだメンバ(フィールドとメソッド)を独自の形で保有していることは確認した。だが、前回の`Cat`クラスで言えば`Cat myCat = new Cat;`
`mycat.weight = -20;`と、`Cat`クラスを作ったときには想定していなかった値を、`main`メソッド内から勝手に格納す
Spring Boot 2.0からSpring Boot 2.2にマイグレーションしたときの変更点
# はじめに
Spring Boot 2.0.2のアプリケーション(約7KL、SPAのサーバ部分)をSpring Boot 2.2.5にマイグレーションしてみたときの修正ポイントを書いておきます。
# Spring Bootの修正箇所
## Maven
JUnit5を使用していたのですが、Spring Boot 2.0ではspring-boot-starter-parentの管理下ではなかったjunit-platform-launcherとmockito-junit-jupiterが、Spring Boot 2.2では管理下になったため、バージョンの指定が不要となりました。
“`xml:SpringBoot2.0
org.junit.platform
junit-platform-launcher
1.3.1
test
<
Android 基礎文法について
開発言語は、主にJavaとKotlinだと思いますが、
今回は、『Kotlin』に焦点を当て、公開していきます。
特徴としては、
■データを省略できる
例えば、以下の変数に文字列を代入するコードです。
“`
val a : String = “Hello World”
“`さらに型推論機能によって、以下のように型指定を省略できる。
“`
val a = “Hellow World”
“`■null安全
nullとは…何もないことを意味する特殊な値
Null許容型は、val a : String? = nullのように型名の後ろに『?』を付けるとNullを代入できます。
“`
val b : String? = null
b?.toUpperCase()
“`補足:toUpperCase() は、String 型の変数でのみ呼び出し可能な関数です。
■クラスへのアクセスが簡潔
Javaの場合、フィールドにgetter,setterでアクセスが必要ですが、Kotilinは必要ありません。
■println関数
println関数とは、
SpringBoot+Maven+PostgreSQLでFlywayの導入
Ruby on Railsは、デフォルトでDBのマイグレーション機能が搭載されていますが、SpringBootでは自分で導入するしか有りません。マイグレーションツールであるFlywayを導入するのに手こずったため、纏めて行こうかと思います。
#準備
“`xml:pom.xml
org.flywaydb
flyway-core
“`
依存関係の階層に、このように書いてあげます。
合わせてmvnのコマンドを使用したいので、プラグインにも下記の通り指定しています。“`xml:pom.xml
org.flywaydb
flyway-maven-plugin
Visual Studio CodeによるSpring5 MVC Webアプリ開発 HelloWorld作成編
#はじめに
[こちら](https://qiita.com/t_skri/items/aafb1b1c4942ae644f58)で作成したひな型にHelloWorldを作成していきます。#環境
OS:Windows 10 Pro 64bit
Editor:Visual Studio Code 1.42.1
JDK:AdoptOpenJDK 11.0.6+10 x64
Apache Maven:v3.6.3
Apache Tomcat:v9.0.31#pom.xml
pom.xmlにSpring MVCに必要なRepositoryを追加します。Repositoryの検索はMVN REPOSITORYを使用しています。
[https://mvnrepository.com/](https://mvnrepository.com/)propertiesに追加
“`XML
5.2.4.RELEASE
fa
Visual Studio CodeによるSpring5 MVC Webアプリ開発 Mavenひな型作成編
#はじめに
環境構築は[こちら](https://qiita.com/t_skri/items/b16cd5a8868398ca0fc2)を参考にして下さい。直接Java11プロジェクトを作成する方法が見つけられませんでしたので、まずJava8プロジェクトを作成します。
作成後、Java11の設定に変更します。#環境
OS:Windows 10 Pro 64bit
Editor:Visual Studio Code 1.42.1
JDK:AdoptOpenJDK 11.0.6+10 x64
Apache Maven:v3.6.3#雛形作成
Visual Studio Codeのコマンド入力でも出来ると思いますが、今回はコマンドプロンプトにコマンドを入力して作成します。
コマンドプロンプトを開いて、雛形を作成したいフォルダに移動して下さい。
今回は「D:\JAVA\Project」に作成します。“`
mvn archetype:generate -DinteractiveMode=false -DarchetypeGroupId=pl.org.miki -Darchet
Spring Securityで403 forbiddenが発生する
Spring Securityを導入した環境でセッションタイムアウト後にアクセスしようとすると以下のエラーが発生する
![403.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377078/80a69589-cc1e-f21b-0a76-c74e4d067fd4.jpeg)
これはSpring SecurityのCSRF対策でCSRFトークンチェックをする際にCSRFトークンの保存先としてHttpセッションを使用しているために発生する。
これを防ぐためには、以下のコードのようにinvalueSessionUrl()にセッションタイムアウト時の遷移先を指定することで可能。
“`
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)
ABC – 134- A&B&C&D&E
#AtCoder ABC 134 A&B&C&D&E
[AtCoder – 134](https://atcoder.jp/contests/abc134)E/Fは時間切れ・・・
#A – Dodecagon
“`java
private void solveA() {
int n = nextInt();out.println(3 * n * n);
}
“`#B – Golden Apple
“`java
/**
* 6 2
* 1 2 3 4 5 6
* – – ^ – –
* – – ^ – –
*
* 20 4
* 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
* – – – – ^ – – – –
* – – – – ^ – – – –
* – – – –
偏差値コンポーネントを作ってみる
#偏差値コンポーネント
コンポーネントで実装したいことをリストアップします。1. 入力レコードの指定フィールド値を偏差値に変換して出力する
* 入力ストリームはRecordとCSV
* ストリームの形式は変わらない StreamPassThrough
* 指定フィールド値が空の場合は計算に含めない
* プロパティに標準偏差を出力
* プロパティに計算に使用したレコード数を出力#偏差値って
入試でよくあるやつで、秋田県にある国際教養大学が偏差値70で国公立TOPとのことです。上位2.275%に入る!
[Wikipedia](https://ja.wikipedia.org/wiki/%E5%81%8F%E5%B7%AE%E5%80%A4)で調べると式が書いてあります。“`
偏差値 = 50 + 10×(値-平均値)/標準偏差
“`#JavaInterpreterコンポーネントで雛形を作成
いつものJavaInterpreterコンポーネントを使用します。
![javainterpreter.PNG](https://qiita-image-store.s3.ap-n
Java 日付の厳密なチェックとサマータイムの関係
## 日付の厳密なチェック
`DateFormat#setLenient(boolean)` は、**緩やかな日付チェック**に関する設定です。`SimpleDateFormat`などで使います。デフォルトは`true`で厳密なチェックをしない。
厳密なチェックをしたい場合は、`false`をセットする。[^1]
[^1]: 厳密でないの反対なのだ(捉え方によってbooleanの値が逆向きになってしまう設計はやめましょう)。緩やかでない。ゆるくない。ガチで。ちなみにJava 8からは`DateTimeFormatter`で[列挙型ResolverStyle](https://docs.oracle.com/javase/jp/8/docs/api/java/time/format/ResolverStyle.html)が使えるようになっています。参考:[Open JDK DateFormat#setLenient(boolean)](https://cr.openjdk.java.net/~iris/se/11/latestSpec/api/java.base/java/text
初心者から始めるJava、クラスのフィールド・メソッド
#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
~~**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。~~
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。今回は基礎を理解するために、間違えを記述しない。
##環境
言語:Java11、JDK13.0.2
動作環境:Windows10#クラスの宣言
クラスを宣言(declaration)するところから見てみる。これは[やさしいJava 第7版](http://mana.on.coocan.jp/yasaj.html)からの引用となる。“`Java:declaration.txt
class クラス名
{
型名 フィールド名;
…
戻り値の型 メソッド名(引数リスト)
{
文;
…
return 式;
}
…
}
“`
この宣言に基づいて実際のクラスと比較してみる。“`Ja
Eclipse – java.lang.ClassNotFoundExceptionを解決する。
#Eclipse – java.lang.ClassNotFoundExceptionを解決する。
EclipseとJava Fxを使い開発を行っていたとここのエラーに遭遇。
早く解決しなければということで調べ回っても解決に至る回答が見つからなかったため、ここに残しておこうかなと。##ひたすらに調べた
まずこんな投稿を発見。
https://qiita.com/yuki_tanaka_lib/items/91d4f1ce56b020af8e2c
確認してみるも変わらず。これはどうだろうたくさん書いてある
Classファイルの生成場所を確認しても正しく生成されているし…あと他にEclipseが関連してそうなものはない…
##原因がわからない→仕方ない考えよう
調べればすぐ解決策が出てくるだろうと思っていました。
しかし調べて見つからなければ自分で考え、原因を探るしかありません。
片っ端から気になる部分を解決していく…##結論。
はい、もう長く
JavaSilver11 勉強法
JavaSilever11に合格することができたので勉強法を書いていこうと思います。
##勉強時間と方法
書籍は黒本だけを利用。
とても詳細且つ分かりやすく解説がしてあります。
ある程度知識がある人は黒本だけで十分足ります。勉強時間 約80時間
日数 約1か月##勉強法
1章~11章の解説のページを自分が既に知っている内容知らない内容にかかわらずノートに要約し書き出しました。12章と13章の模擬試験を2周する
1回目 65点
2回目 99点(問題を暗記してしまっているからめちゃくちゃ高い)##合格したいだけなら…
模擬試験(12章,13章)の問題をすべてを理解していれば合格可能です。
対策のブログなどでさんざん言われてますが、模擬試験と問題がほぼ同じだからです。
私が受けたとき(2020/02/29)は半分程度が模擬試験の問題とほぼ同じあるいはまったく同じでした。
ただ丸暗記はやめたほうがいいです、一見模擬問題と同じに見えて模擬と違う答えになる問題もあります。##コツ
ラムダは捨てても大丈夫というサイトが多いですが個人的にはもったいないと思います
jshellのデフォルトエディタにVS Codeを指定する
# 環境
**OS**Windows 10
**Java**
11
# jshell で外部エディタを使う
jshell には、外部エディタを使ってコードスニペットを編集できる機能が用意されている。“`shell
jshell> /edit
“`![jshell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28302/d9c02750-dc3f-e5a1-8d2c-ac1d8f04b1df.jpeg)
デフォルトでは、こんな感じの超シンプルなエディタが立ち上がる。[^1]
[^1]: Ctrl+Z や Ctrl+Y による編集のやり直しや再実行ができないくらいシンプル
![jshell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28302/068041de-96cc-3dcb-18c7-fef7f44c1d21.jpeg)
ここでコードを編集して `Exit` でエディタを閉じると、エ
計算ゲームアプリ Google play storeで公開しました
Google play storeで公開しました。
https://play.google.com/store/apps/details?id=com.nyaa.braintrainerAndroidスマホを使っている方は遊んでみてもらえると嬉しいです。
また、コードレビューしていただき、ソースコードを少し修正しました。
メモも追加したり、学習用のメモを消したりしました。もとのソースコード
https://qiita.com/KToushi/items/6e1a369111e904a6a22f//playaAgainボタンを押したときの挙動を定義
public void playAgain(View view) {
score = 0;
numberOfQusetions = 0;
timerTextview.setText(“15s”);
scoreTextView.setText(“0/0”);・
・
・new CountDownTimer(15100, 1000) {
//CountDownTim