JAVA関連のことを調べてみた2020年02月07日

JAVA関連のことを調べてみた2020年02月07日

線形探索

#自己紹介
この記事が初投稿になるので簡単に自己紹介をしておこうと思います。現在(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.java

import 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)で検証しました。

元記事を表示

Google OAuth 2.0 認証を使ったGoogle Sign-Inの実装(サーバー編)

#概要

今回はこちらの記事の続きです。
[Google OAuth 2.0 認証を使ったGoogle Sign-Inの実装(JS編)](https://qiita.com/biy0ganba/items/6c3a886759254e0e942c)
クライアントサイドでログインしてバックエンドサーバーで認証といった感じでやります。

前回の記事でユーザー情報などをレスポンスで取得することができました。
ただこれをこのままサーバーサイドに送ったりするのは危険です。
例えば、ユーザーIDをサーバーに送信する際にユーザーを偽装できちゃったりします。。

なので、その代わりに検証可能なIDトークンを使用して、サーバー側でサインインしているユーザー情報を安全に取得します。

さっそく実装していきましょう。
#フロントサイドの実装

まずJSの部分を書きかえます。

“`javascript:JavaScript

function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token; //

元記事を表示

コンストラクタインジェクションだと単体テストが楽なんじゃない?って話

# はじめに

Springでコード書いてるときに絶対使うアレ、`@Autowired`です。
最近はフィールドインジェクションじゃなくて、コンストラクタインジェクションのほうが推奨されているらしいのです。

そもそもなんでコンストラクタインジェクションが推奨されているのかは、ググってみてください。
いろいろ理由がありますが、その中で一番納得したのは「あれ?これって単体テスト楽なんじゃね??」って思ったので、それについて書いてみました。

# モック作るのめんどくさい

### テスト対象のクラス

サンプルが適当すぎですが、こんなメールを送るクラスがあったとして。

“` java:MailService.java
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

@RestController
@RequestMapping(path=”/mail”)
public class MailService {

@Autowired

元記事を表示

【Java】Eclipseで”1.Xより下のソース・レベルで許可されていません”とエラーが出た際の対処方法

##ブランチを切ると稀に起きる現象
職場でブランチを切って作業しようとした際に、ビルドすると何故かエラーが下の画像のように大量に発生するときがあります。備忘録も兼ねて解決方法を書きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424307/a7eff3fe-3ba1-87f2-6f59-6a86f992dafd.png)
よく見てみると
> ‘<>‘オペレーターは1.7より下のソース・レベルでは許可されていません

とのこと。
エラー表示されている箇所にマウスオーバーしてみると、どうやらJREのバージョンの問題のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424307/209ce98a-f016-8e1b-a345-cddfe951c91b.png)

##解決方法
解決方法はとっても簡単です。まずはEclipseのナビゲーターに表示されているプロジェクトを右クリックし

元記事を表示

なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか

この記事は個人ブログのうち技術に関する箇所のみを抜粋した転載です。
[なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか -Junks, GC cannot sweep-](https://munchkins-diary.hatenablog.com/entry/2020/02/05/002748)

またブログには書いたのですが、諸事情により先に英語版が存在します。
こちらも書いたのは僕なので、剽窃などではないことはご了承ください。

\[元記事\]: [Why we replaced Java with Typescript for Serverless](https://dev.to/csohei/why-we-used-typescript-instead-of-java-on-serverless-39e2) in [dev.to](https://dev.to)

## はじめに

**サーバレス(serverless)**は昨今もっとも注目を集める設計手法の一つで、おそらく多くの開発者が大なり小なり自分のプロダクトに応用し始めているのではないでしょう

元記事を表示

Javaの名前を変更するExcelシートとセットTabの色

この記事では、Spire.XLS for javaを使用して、ワークシートの名前を変更し、Javaアプリケーションのシートのタブカラーを設定する方法を紹介します。
使用ツール:[Free Spire.XLS for Java (無料版)](https://www.e-iceblue.com/Introduce/free-xls-for-java.html)
Jarファイルの取得と導入:

Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下の[Spire.xls.jar](https://www.e-iceblue.com/Download/xls-for-java-free.html)ファイルをJavaプログラムに導入します。

Method 2:[maven倉庫](https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html)設置による導入。

`

元記事を表示

JavaからGoogleスプレッドシートを操作する

## 新しいシートの追加

“`java

final String spreadsheetId = “my spreadsheetId”;

List requests = new ArrayList<>();
SheetProperties sheetProperties = new SheetProperties().setTitle(“New Sheet”);
requests.add(new Request().setAddSheet(new AddSheetRequest().setProperties(sheetProperties)));

BatchUpdateSpreadsheetRequest requestBody = new BatchUpdateSpreadsheetRequest();
requestBody.setRequests(requests);

Sheets.Spreadsheets.BatchUpdate request = service.spreadsheets().batchUpdate(spreadsheetId,

元記事を表示

【Swing】JFrameクラスについて

###(JFrameのクラス階層)
java.lang.Object
→java.awt.Component
→→java.awt.Container
→→→java.awt.Window
→→→→java.awt.Frame
→→→→→javax.swing.JFrame

###(JFrameクラスのコンストラクタ)
“`java
JFrame()
//初期状態が不可視な新しいフレームを構築する
“`

“`java
JFrame(GraphicsConfiguration gc)
//画面デバイスで指定されたGraphicsConfigurationと空のタイトルでFrameを作成
“`

“`java
JFrame(String title)
//指定されたタイトルを使用して、初期状態で不可視な新しいFrameを作成
“`

“`java
JFrame(String title, GraphicsConfiguration gc)
//指定されたタイトルと画面デバイスの指定されたGraphicsConfigurationで、JFrameを作成します。
“`

元記事を表示

OTHERカテゴリの最新記事