- 1. Resultsetのnext()を、次があるかの判定メソッドと勘違いしていた件
- 2. Eclipseのヒープサイズを増加させる(メモリ不足エラーを解消する)
- 3. 【Java】じゃんけんの手の出し方 (paizaランク A 相当)
- 4. プロジェクト毎にJVMを切り替えるには
- 5. シンプレックス法をGUIでシミュレーションする
- 6. [Android] TextView の textScaleX を自動調整する
- 7. [java] 例外をスローする
- 8. 線形探索
- 9. Okhttp3でpfx証明書を使う
- 10. [Android] RecyclerView を用いた横スクロールする ListView の実装
- 11. Ruby、PHP、Java、JSでの書き方の違い
- 12. 【java】クラスとはOS、インスタンスとは仮想コンピュータだ
- 13. 人生ゲーム(イベント)
- 14. HttpServletRequest のクラス・ファイルが見つかりません
- 15. Spring Java
- 16. HttpUrlConnectionの謎いスタックトレース
- 17. 業務改善をしよう!目次編
- 18. “色違いポケモンシミュレータ”
- 19. Evans本を読んでDDDの要点を翻訳してみた
- 20. 【Java】BeanValidationでURL形式をチェックする場合HibernateValidatorの@URLは使わない方がよいかもしれない
Resultsetのnext()を、次があるかの判定メソッドと勘違いしていた件
##事象
とあるコードで、SELECTクエリを投げ、
その取得結果を**ResultSet型の変数rset**に格納している箇所がありました。コード読解のためrsetの要素数を確認したいと思ったので、
以下のコードを途中に追記して実行しました。“`java:example.java
int testIndex = 0;
while(rset.next()){
System.out.println(“rsetの要素数を確認したい”);
System.out.println(++testIndex);
}
“`そうしたら、(それまでは正常終了していたのですが、)
その後ろの処理で、以下の例外が発生しました。**java.lang.IndexOutOfBoundsException: Index: 0, Size: 0**
##読解のはずが壊してしまっていた
おかしいなと思って見てみたら、next()の理解が誤っていました。
現在の位置から次の1行へ進んでカーソルを当てる機能もあるのですね。上記のコードで、最後の要素にカーソルがあたったままループを抜
Eclipseのヒープサイズを増加させる(メモリ不足エラーを解消する)
# はじめに
Eclipseのプラグインを追加するとき、メモリ不足エラーと表示され実行できなかった。
そこでヒープサイズを増加させ、問題を解決した。# 環境
Eclipse Photon Release 4.8.0# 試みたが失敗したこと
Eclipseのインストール先にある”eclipse.ini”を書き換える。
“`
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
–launcher.defaultAction
openFile
–launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.t
【Java】じゃんけんの手の出し方 (paizaランク A 相当)
#paizaって?
[paiza公式サイト](https://paiza.jp/)
なんかプログラムを書いて、それにランク付けて評価してくれるところ
求人中の企業に対して自分のプログラミング能力をアピールできる
(実務的とは思えないがちゃんと解ければ最低限の能力があると見れるだろう)#今回解く問題
[問題:じゃんけんの手の出し方](https://paiza.jp/works/mondai/skillcheck_sample/janken?language_uid=java&t=2fe1248410effabab1f3cfb75c9aace8)
・総勝負数N
・総指数M
・相手のハンド列S
の3つが入力として与えられ、総勝負数および総指数をきっちり使った時の相手ハンドに対する最大勝利数を割り出す問題
細かくはリンク先#解答コードと結果
“`java
import java.util.ArrayList;
import java.util.Scanner;/**
* じゃんけんの手の出し方 (paizaランク A 相当)
*/
public class AS001{
プロジェクト毎にJVMを切り替えるには
#起動時、コンパイル時にJDK,JVMを切り替えたい
Javaの勉強をしているとプロジェクトによって別のバージョンを使いたい時がある。例えば私は最新のjava10以降のvar型推論が好きだけど、業務ではjava8しか使えない。常駐先によってはjava4のところも
あった。
あえて古い環境で勉強しないといけない事もあるわけです。
というより2020年現在、業務でjava10なんてまず使えない・・
eclipseとかだとjvmの指定する画面があるけど、実際コマンドラインではどうやって指定するのだろうか、という実験です。
#java -version でどこのJVMを読み込んでいるか確認するjava12でコンパイル済みのMain classがあり、
環境変数JAVAHOME には java12のJVMへのパスが設定されているとする。
その状態で任意のディレクトリにjava8のJVMのJVMを配置し、その中のjavaコマンドがあるディレクトリに入って“`bash:bash
java -version
“`コマンドを叩く。
すると“`
java version “12.
シンプレックス法をGUIでシミュレーションする
#1.プログラムの概要
このプログラムは、線形計画法における、最大化関数の最適解を求めるプログラムである。線形計画法(最大化の場合)では、最大化関数と制約条件がある。最大化関数は、1次関数であり、最大化を目的とする関数である。制約条件は、1次不等式や1次等式であり、最大化関数の解の範囲を定める式である。ただし、このプログラムでは、最大化関数も制約条件もそれぞれ2変数(X,Y)とする(このプログラムにおける、最大化関数と制約条件の詳細については、3章の操作方法を参照)。最適解を求めるアルゴリズムとして、シンプレックス法がある。シンプレックス法は、実行可能領域のある点をスタート地点として、その点を最大化関数が大きくなる方に移動させることを繰り返す。点の移動が止まったときに、最大化関数が最適解となる。このプログラムでは、ユーザが最大化関数と制約条件を入力して定める。そして、入力された最大化関数と制約条件をもとに、シンプレックス法による点の移動をシミュレーションし、最適解を求め表示させる。ただし、このプログラムは、あくまでGUIでシンプレックス法の点の移動をシミュレーションしているだけであり
[Android] TextView の textScaleX を自動調整する
# 何を作ったか
限られたスペースしか使えない状況で TextView に長い文字列を表示させようとして、途中で文字列が切れてしまい見た目がよろしくない経験は多々あるでしょう。解決策はいろいろあるでしょうが、ここでは textScaleX と呼ばれる TextView の属性に注目します。表示する文字の横方向への伸縮倍率を表す値であり、1より大きい値なら文字列を伸ばし、逆に1より小さな値なら文字列を収縮させます。TextView の最大横幅に収まり切らない長さの文字列を表示するときに、この textScaleX の値を自動で調節して文字列の長さを圧縮する View を作りました。クラス名は ExpandableTextView とでも呼びましょう。## デモ画像
分かりやすさのため、ExpandableTextView の背景を灰色にしてあります。
![expandableTextView_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440643/b7d1f051-24a0-11f2-3
[java] 例外をスローする
例外処理はjavaの基本であるが、認識違いをしていたので備忘録として残す。
##発生した問題
メソッドの呼び出し元に例外を投げたかったので、catchした例外をスローしようとすると、なぜかコンパイルエラーになっていた。##実装
例えばタイムアウトエラーを投げる場合は以下の通りである。~~~java
public void foo(){
try {
fetch();
} catch (SocketTimeoutException e) {
}
}public Integer fetch(){
try {
//Http通信
} catch (SocketTimeoutException e) {
throw e;//ここでコンパイルエラー
}finally {
}
return number;
}~~~
##認識違い
throwのほかに
th
線形探索
#自己紹介
この記事が初投稿になるので簡単に自己紹介をしておこうと思います。現在(2020/02/07)大学2年生のもので理工学部で情報系の勉強を学んでいます。
記事を投稿しようとした理由は、「いつまでたっても初心者を抜け出せない!」と強く思うようになってきたため、ここらで環境を変えないと何も進展がないと思い投稿しようと思いました。Googleで「中級者 なり方」など脳筋のように検索していましたがよい結果が得られなかったため、**コードたくさん書けばいんじゃね?**と思いこれからたくさんコードを書いていこうと思います!初心者なのでその辺を理解したうえで温かい目で見守ってください笑#線形探索
というわけで第1回目の投稿は線形探索です。なぜ線形探索にしたかは正直適当です。細かいことは気にせず学んでいきましょう。これはあるn個のデータが登録されているデータの中から特定のデータ(キー)を探す処理を行うアルゴリズムです。配列にデータが格納されていると仮定して、その配列の先頭から末尾までスキャンしながら要素とキーを比較していきます。今回は1~9までのデータをもっている配列に対して探索をして
Okhttp3でpfx証明書を使う
# はじめに
クライアント証明書を使ってHTTPS通信対応をすることになった時に書いたコードを会社を辞めてソースコードが見れなくなった時用にメモ代わりとして残しておく
何故Okhttpにこだわるかというと、大昔に苦しめられたもんだから大嫌いになったんですよねHttp(s)URLConnectionが
一部書き方が雑な部分や現役バリバリな人には釈迦に説法のような部分もあるかもですがご容赦をいt・・・ボク用のメモだから別にいっか!# 事前準備
1.main配下(main、resと同じ階層)に「assets」フォルダを作成
2.assetsフォルダ内にpfx証明書を格納(今回は便宜上「hogehage.pfx」とするヨ)
3.「AndroidManifest.xml」にインターネット通信のパーミッションを追加(↓こんな感じ)
追加場所はmanifest間なら問題ないが、activityの間には書くな“`AndroidManifest
[Android] RecyclerView を用いた横スクロールする ListView の実装 # 何を作ったか
Android でおなじみの ListView ですが、水平方向へのスクロールは出来ません。そこで、RecyclerView を継承して横方向へスクロールする ListView のようなウェジェットを作ります。# RecyclerView とは?
複数の View を良しなに表示するウェジェットです。かなり自由度が高いので、大抵のものはこれでできます。詳細に関しては、[【Android】RecyclerViewの基本的な実装](https://qiita.com/HideMatsu/items/a9ab48608e4f681d31fe) が詳しいです。# 完成品
“`java:HorizontalListView.javaimport android.content.Context;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
im
Ruby、PHP、Java、JSでの書き方の違い
##はじめに
「Rubyでプログラミングの基礎を学んだから、次はjsやってみようかな!」
↓
「書き方ごちゃごちゃになって、何が何だかよくわかんねー!!」こんな人もいるのでは?
僕自身も以前、詰め込みすぎでパンパンになりましたので、書き方の違いをわかりやすくまとめてみました。
一つ一つ覚える必要はありませんので、この記事を、ストックしていただければと思います。
オブジェクト指向の理解も多少深まると思いますので、最後までご覧ください!## 文字出力
基本となる文字の出力。言語によって処理のされ方が違うので難しいところですが、基本なのでしっかり押さえましょう。Javaはやっぱり記述が長いですねw“`ruby:
#Ruby
puts “こんにちは”
“`
“`php:
#PHP
echo “こんにちは”;
“`
“`java
//Java
System.out.println(“こんにちは”);
“`
“`javascript
//JavaScript
console.log(“こんにちは”);
“`## 変数代入
プ
【java】クラスとはOS、インスタンスとは仮想コンピュータだ
# 0. オブジェクト指向という「新しい概念」
プログラミングの初心者で、今までC言語を使ったコーディングの経験しかない人にJavaを教えるのは、思いのほか難しい。(情報系の大学を想定。1年次にC、2年次にJavaをやる場合が多いそう。)
「クラスとは何か」と聞かれたら「オブジェクト指向で使う」と説明するが、
「ではオブジェクト指向とは何か」と聞かれたらどうだろう。「世の中にはいろんなモノゴトがある。そしてモノゴトには状態と振る舞いがある。
だからいろんなモノゴトに対して、状態と振る舞いを集めてクラスの中にコーディングしていく。これがオブジェクト指向だ」
と答えて、相手は納得するかもしれない。
しかし、この後に続く「カプセル化」、「継承」の説明を聞いて、相手は混乱するかもしれない。
いきなり「状態と振る舞いを集めてモノゴトを表現する」と教わったかと思えば、次に「状態を振る舞いに閉じ込める」、「具体的なモノゴトは抽象的なモノゴトをケイショウする」と教わるなど、覚えることが多い。「理論より実践」な人にとっては『苦痛』だろう。
こうして、オブ
人生ゲーム(イベント)
public class Event {
private int ahead;
private int back;
private String jobChange;
private int sum;int getAhead() {
return ahead;
}void setAhead(int a) {
ahead = a;
System.out.println(ahead + “マス進む”);
}int getBack() {
return back;
}void setBack(int b) {
back = b;
System.out.println(back + “マス戻る”);
}String getJobChange() {
return jobChange;
}void setJobChange(String jc) {
jobChange = jc;
System.out.println(“あなたの職業は” + jc + “になりました。”);
}i
HttpServletRequest のクラス・ファイルが見つかりません
##プロジェクトビルドでのエラー##
【メッセージ】
ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。
javax.servlet.http.HttpServletRequest のクラス・ファイルが見つかりません。【対処】
Javaのビルドパス>ライブラリーで、Apache Tomcatが追加されていなかった。
Apache Tomcatをライブラリに追加したところ、エラーがなくなった。(Eclipse)
Spring Java
* Spring Tools 4 for Eclipseを入手し以下で解凍
“`bash
java -jar spring-tool-suite-4-4.5.1.RELEASE-e4.14.0-win32.win32.x86_64.self-extracting.jar
“`
* 必要によってSpringToolSuite4.iniに-vm追加“`bash
-vm
C:\Program Files\Java\jdk1.8.0_211\bin\javaw.exe
“`* springプロジェクト作成
File → New → Spring Starter Project → Next →
web機能とホットデプロイを使うため以下をチェック
1. Developer Tools→Spring Boot DevTools
2. Web→Spring Web
→ Finish![new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500676/7436d9d2-77f6-21cb-a4
HttpUrlConnectionの謎いスタックトレース
# 概要
[HttpUrlConnection](https://docs.oracle.com/javase/jp/8/docs/api/java/net/HttpURLConnection.html)の`getInputStream`メソッド呼び出し時に`IOException`が発生した場合、意味がわからない例外スタックトレースが返却されることがあります。
## TL;DR
`HttpUrlConnection#getInputStream`で`IOException`が発生する場合、過去にそのインスタンスで発生した`IOException`がネストされます。
## 検証環境
– macOS 10.15.2
– AdoptOpenJDK (HotSpot) 1.8.0_242-b08# 事象
以下のようなコードがあるとします。
– 400 Bad Requestを決め打ちで返却する簡易HTTPサーバを用意する
– HttpUrLConnectionを使って、簡易HTTPサーバにリクエストを送信する
– HttpUrLConnection#getInputSt
業務改善をしよう!目次編
# はじめに
2020年を迎え早一ヶ月が経ちました。
私も一年と少し居た現場を離れ、2020年から新たな現場に向かうこととなりました。
そのためこの一月、新たな現場に慣れるために様々な業務を見て聞いてきました。**なんだこの面倒くさい業務は!?**
そう感じる業務が多くありました。
前の現場が業務効率化に積極的だったのと、そこで働く人達の意欲も凄かったため、どうしても比較して見てしまっているのかもしれませんが…**ただ…これはチャンスなのでは?**
前の現場にいたこともあって、おかげで ShellScript の開発を独自で行う機会があったり、API の開発をしていたため通信周りの知識も増えました。
何より、そうした人たちに囲まれていたおかげで業務の効率化に対し積極的な意識がついていました。
まだまだ経験の多くない私ですが、これは貢献あるいはアピールするチャンスなのではと。というわけで、今の現場で感じた無駄な業務の改善案や、実際になんとかした Script 等を書き記していこうと思います。
この記事は主に改善案等を書き記す目次的な役割を持たせる予定です!
それぞれの記事を
“色違いポケモンシミュレータ”
乱数を使う練習①
アイテムなしで色違い孵化厳選を行った場合のシミュレーションimport java.util.Random;
public class Irochigai
{
public static void main(String[] args)
{
System.out.println(“色違いシミュレータ”);Random r = new Random();
int randomValue = r.nextInt(4096);if (randomValue == 4096) {
System.out.println(“Irochi”);
}
else {
System.out.println(“normal”);
}
System.out.println(randomValue);
}
}
Evans本を読んでDDDの要点を翻訳してみた
# 『Domain-Driven Design Tackling Complexity in the Heart of Software – Eric Evans』
(注意: このような括弧書きの説明は私の意見を意味し、翻訳ではありません)# Index
– [FOREWORD](#foreword)
– [PREFACE](#preface)
– [I. Putting the Domain Model to Work](#i-putting-the-domain-model-to-work)
– [Chap.1 Crunching Knowledge](#chap1-crunching-knowledge)
– [Ingredients of Effective Modeling](#ingredients-of-effective-modeling)
– [Chap.2 Communication and the Use of Language](#chap2-communication-and-the-use-of-language)
– [E
【Java】BeanValidationでURL形式をチェックする場合HibernateValidatorの@URLは使わない方がよいかもしれない
内容は大体タイトルの通りです。
# 理由
`org.hibernate.validator.internal.constraintvalidators.hv.URLValidator`の実装では「`http:`」と入力しただけの状態でもバリデーションが通ってしまいます。
「入力される内容は`http`/`https`といったプロトコルだけ、最低限ドメインまで入っていてほしい」など、URLはURLでも限られた内容しか入力されない場合は`@Pattern`アノテーションを使って正規表現でチェックした方が良いでしょう。# 補足
[Maven Repository: org\.hibernate\.validator » hibernate\-validator » 6\.1\.2\.Final](https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator/6.1.2.Final)で検証しました。