- 1. 【Eclipse】ショートカットキーチートシート
- 2. 結局最初学ぶならJavaかなと思う
- 3. 【Apache POI】不要セルの判定
- 4. MVCモデルのいろいろ
- 5. Spring + MyBatis接続設定方法
- 6. Android初学者のアウトプットの場
- 7. Talented API Testerでhttpリクエスト(Put)の動作確認してみた
- 8. Stanford CoreNLP Server を立ててみる for Windows(最短ガイド)
- 9. VSCodeでJavaの開発環境構築をする on Mac
- 10. 新人社員がSpring Securityで認証・認可機能を一から作ってみた
- 11. eclipse 絶対に使ってほしい 超絶おすすめ ショートカットキー (Windows)
- 12. 【Android / Java】ホストFragment(呼び出し元)にDialogFragmentからイベントをコールバックさせる
- 13. あえてJavaでKaggleに挑む(1)
- 14. Doma入門 – Criteira APIで射影を使う
- 15. 【Java】for文, while文
- 16. JavaからRubyへ!!
- 17. 完全限定名と正規名とバイナリ名
- 18. テストで無闇にAllMatch的な処理をするのはやめよう
- 19. 簡易LISP処理系の実装例【各言語版まとめ】
- 20. 簡易LISP処理系の実装例(Java版)
【Eclipse】ショートカットキーチートシート
これからEclipseを扱うことになるので、操作方法のお勉強。
ほとんどVSCodeと変わらないのでスッと入りそうではありますね。| キー | 内容 |
| ———————- | —————————————————- |
| Ctr + M | 画面最大化 |
| Ctrl + ; | フォントサイズ大(セミコロンの位置は +と覚える) |
| Ctrl + – | フォントサイズ小 |
| Option + Shift + J + X | RUN (実行する)
結局最初学ぶならJavaかなと思う
十数年Javaの仕事をやってきて、数年前よりJavaに飽きたしもっと効率よく開発できる言語があるのではないかと思ってPythonを使っていて社内でも新人にはじめからPythonを教えてきた。
2年前こんな記事を書いたりした。
* [Java屋さんの私がPythonをはじめる理由](https://qiita.com/HyunwookPark/items/68d029dd33807fc69ca4)
Pythonはいい。環境構築がかなり手軽でかつスクリプト言語ならではの実装とデバッグの速さがある。
ただ、エンジニア志望の初学者はやはりJavaをやった方がいいと思った。もし、最初はJavaではないにしても一度は通ってほしい。# 型宣言はやっぱりいい
数値を入れてた変数に文字列入れたり好き放題はやめてほしい。
でもプログラミング始めたばかりだとやってしまいがち。
混乱するし、型はしっかり意識したいところ。# オブジェクト指向やるなら
オブジェクト指向の一通りを学ぶにもJavaはいい。インタフェース、インスタンス変数、クラス変数などが概念に近い書き方をする。
他の言語でも学べな
【Apache POI】不要セルの判定
#はじめに
Apache POIを使用してExcelを読み込む際、取消線のあるセルや非表示のセルは飛ばしたいと思い、その方法を調べてみました。
自身のメモとして記載しますがよければ参考にしてください。
※基本的なApache POIの書き方は割愛します。#もくじ
1. [非表示行列](https://qiita.com/milestone/items/8fef7ec91bab31354fdb#1-%E9%9D%9E%E8%A1%A8%E7%A4%BA%E8%A1%8C%E5%88%97)
1. [非表示行の判定](https://qiita.com/milestone/items/8fef7ec91bab31354fdb#1-%E9%9D%9E%E8%A1%A8%E7%A4%BA%E8%A1%8C%E3%81%AE%E5%88%A4%E5%AE%9A)
2. [非表示列の判定](https://qiita.com/milestone/items/8fef7ec91bab31354fdb#2-%E9%9D%9E%E8%A1%A8%E7%A4%BA%E5%88%97%E
MVCモデルのいろいろ
###MVCは何ですか???
MVCは、ユーザーインタフェースをもつアプリケーションソフトウェアを実装するためのデザインパターンである。(Ref:https://bit.ly/2GQbO6V)
M(Model):入力や表示に関連しない処理、システムのビジネスロジックを処理する
V(VIEW):入力や表示に関連する処理
C(Controller):モデルとビューの橋渡して制御する###具体の例
Model:データの処理する。(DBからデータの取得、DBへの保存)
View:ユーザーが実際に見る画面を示す。
Controller:Viewからリクエストを受け取り、Modelへ処理の命令を出す。(Modelから処理の結果を受け取り、レスポンスとしてViewへ返す)###メリット
各機能が分割されている為、変更・修正があった場合にその影響を受けにくい。
Spring + MyBatis接続設定方法 <テーブル結合編>
今回は2つのテーブル結合をやってみました。
#1対1の場合
##Entity
<親Entityクラス>
“`java:Player.java
package com.mybatis.test.domain;import java.util.List;
import lombok.Data;
@Data
public class Player {private String id;
private String name;
private String age;
//子クラスの要素を定義(1対1)
private Detail detailIds;
}
“`<子Entityクラス>
“`java:Detail.java
package com.mybatis.test.domain;import lombok.Data;
@Data
public class Detail {private String detailId;
private String work;
}
“`テーブルの親子関係はd
Android初学者のアウトプットの場
#インストール
もしこの記事を見ててくださってまだインストールされていない方がいたら下記のURLでインストールページに飛べます
URL: [WindowsもMacもこちらからいけます](https://developer.android.com/studio)“この記事ではAndroidStudio 4.0.2を使用しています“
“**プロジェクトの作り方などは割愛させていただきます??♂️**“##Androidアプリ開発の基本手順
1 プロジェクトを作成する
2 strings.xmlに表示文字列を記述する
3 レイアウトXMLファイルに画面構成を記述する
4 アクティビティなどの.javaファイルに処理を記述する
5 アプリを起動して動作を確認する**よく編集するファイルは具体的に下記の3つ**
(1)res/layoutフォルダの中のレイアウトXMLファイル
(2)javaフォルダの中の.javaファイル
(3)res/valuesフォルダの中のstrings.xmlファイル##Viewとアクティビティ
###viewの基礎知識
Androidアプ
Talented API Testerでhttpリクエスト(Put)の動作確認してみた
備忘録として載せています。何か不備等ありましたらコメントしていただけると幸いです。
# はじめに
この記事は
超初心者が[**Talented API Tester**](##Talented API Tester について)を使って、やっとの思いでPutリクエストの動作確認をした際の備忘録です。**今回テストしたプログラムの詳細**
使用言語:Java8 , Java Servlet種類:Putリクエスト
リクエストで渡されるデータ:JSON形式
レスポンスで送るデータ:JSON形式この動作確認を行いました。
##Talented API Tester について
Google Chromeの拡張機能です。
これを使えば開発途中のサーバーサイドのプログラムも動作確認できます。ダウンロードは[こちら](https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm
)初心者向けのTalented API Tester使い方は[
Stanford CoreNLP Server を立ててみる for Windows(最短ガイド)
# CoreNLP Server
CoreNLP Server の詳しい説明は以下にあります。
サンプルも掲載されています。CoreNLP Server – CoreNLP
https://stanfordnlp.github.io/CoreNLP/corenlp-server.html# ダウンロード
いくつかのダウンロード方法が用意されていますが、最も簡単なのは以下URLからファイルをダウンロードすることです。
http://nlp.stanford.edu/software/stanford-corenlp-latest.zipダウンロードされたZIPファイルを展開します。
2020年10月現在では以下フォルダが展開されます。
“`
stanford-corenlp-4.1.0
“`フォルダを以下のパスに移動します。お好みに合わせて変更してください。
“`
C:\usr\local\stanford-corenlp-4.1.0
“`# 実行
コマンドプロンプトにて C:\usr\local\stanford-corenlp-4.1.0 に
VSCodeでJavaの開発環境構築をする on Mac
# 理由
ローカルでJavaプロジェクトのデバッグをしたい
そもそもVSCodeのコマンドラインでJavaを実行するためにはJDK入れてねって言われたため# ゴール
VSCode上でJava開発ができるようにする# 環境
– macOS Catalina 10.15.7
– Visual Studio Code 1.49.3# やったこと
## 1. 現実を知る
まずは実行したいファイルを内包しているフォルダをVSCodeで開く
(command+Oでもできそう)開いたら以下のショートカットでターミナルを開く
ショートカット:“control+shift+` “最初の現在地は開いたフォルダにいます.
なんでもいいのでJavaを使おうとターミナルでコマンドを叩きま
新人社員がSpring Securityで認証・認可機能を一から作ってみた
長い話を抜きにして、早くコードを書きたいという人は[1. はじめに](#1-はじめに)を飛ばしてください。
Spring初学者は[2. プロジェクトの作成](#2-プロジェクトの作成)から、
簡易な認証・認可機能を実装したい人は[3. 簡易な認証・認可機能の実装](#3-簡易な認証認可機能の実装)から、
実業務向けの認証・認可機能を実装したい人は[4. 実業務向け認証・認可機能の実装](#4-実業務向け認証認可機能の実装)から読み始めると良いと思います。# 1. はじめに
## 1-1. 背景まず最初に、認証・認可について説明します。簡単に説明すると、以下のようになります。(詳しく知りたい人への参考ページ:[よくわかる認証と認可](https://dev.classmethod.jp/articles/authentication-and-authorization/))
– 認証 (Authentication)
通信相手が誰であるかを確認すること。– 認可 (Authorization)
画面にアクセスする権限
eclipse 絶対に使ってほしい 超絶おすすめ ショートカットキー (Windows)
# 探す
### 型を開く
クラスを探したいときにこの機能を使ってクラス名から探せる。
ワイルドカードで前方一致・後方一致・部分一致とかで探せるから便利。`Ctrl + Shift + T`
### リソースを開く
ファイルを探したいときにこの機能を使ってファイル名から探せる。
ワイルドカードで前方一致・後方一致・部分一致とかで探せる。### 検索ウィンドウを開く
検索するためのウィンドウを開く。「ファイル検索」でワークスペース内のファイル探すときによく使う。
`Ctrl + Shift + R`
# コーディング
### コメントアウト・コメントアウト解除
対象の行をコメントアウトしたりコメントアウトからもとに戻したりできる。
当たり前のように使うけど、初心者は意外と知らない。
複数行を一つ一つ `//` つけてる初心者の姿を見てるとたまらなくなるのでぜひ最初に覚えてほしい。`Ctrl + /`
### 行削除
1行さくって消せる。
`Ctrl + D`
### コード補完
クラス・インスタンスのメソッドやフィールドの候補が出る。
通常は`.`
【Android / Java】ホストFragment(呼び出し元)にDialogFragmentからイベントをコールバックさせる
# はじめに
Android Studio(java) でアプリを開発していて、
「ダイアログのボタンクリックイベントをコールバックして呼び出し元のフラグメントで処理させたい」という場面がありました。
もう少し具体的に言うと、ダイアログでAPI通信+画面遷移の処理を実装したところスレッドが異なるためか画面遷移ができない、ということがありコールバックを実装しました。
こんな感じのエラーが出た “Android IllegalStateException: fragment not attached to activity“そこでコールバックを利用して処理を実現できたので、その際学んだ内容を書きます。
# 作成したサンプルアプリの概要
アクティビティにボタンがあるフラグメントを表示し、ボタンを押すとダイアログを表示。ダイアログOKボタンを押すとボタンのテキストを変更する。
だけのシンプルなアプリ1. フラグメントを表示
2. ボタンをクリックする# 概要
Javaのみを使用してKaggleで戦うことはできるのでしょうか?あえてやってみました。
# この記事でやること
Kaggleの初心者向けの課題として有名な[タイタニックの生存者予測(「Titanic: Machine Learning from Disaster」)](https://www.kaggle.com/c/titanic)をJavaのみで実装してみたいと思います。この課題は、タイタニックに乗船した顧客の名前、性別、年齢、チケットの情報などから生存したかどうかを予測するというものです。
![titanic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43869/2e9e8d6d-f0b1-a25b-d8b5-9c8af93c35b9.png)
与えられた学習用のデータ(`train.csv`)から学習したモデルを構築し、テストデータ(`test.csv`)に含まれる人の生存を予測し、その結果の正解率を争うというのがこのコンペになります(ゲーム感覚で生死を予測するのって.
Doma入門 – Criteira APIで射影を使う
## はじめに
SELECT句で特定のカラムだけを指定して取得することを射影と呼びますが、全てのカラムを取得すると都合が悪い場合(カラムの数が多すぎる、LOBのような容量の大きなカラムが存在するなど)に便利な手法です。
今回は、[Doma](https://github.com/domaframework/doma) のCriteria APIで射影を表現する方法を説明します。
Criteria APIで射影を実現する方法は2つあります。
* エンティティクラスを使って取得する
* タプルクラスを使って取得するここで使うDomaのバージョンは2.43.0です。
DomaやCriteria APIの概要については[Doma入門](https://qiita.com/nakamura-to/items/deaff05ba530317f3cf8)の他の記事もお読みください。
## この記事で使うサンプルコード
簡略化したコードで説明します。完全なサンプルコードをについては下記のプロジェクトを参照してください。
* https://github.com/domaframew
【Java】for文, while文
ループ文について学んだことのメモです。
#for文
ループカウンターなどを使用して **定められた回数だけ同じ処理を繰り返したいときに使う。**
fizz buzzのような**「1〜100まで出力せよ!」**みたいな命令に使われることが多い。
また添字による配列要素のアクセスと相性がよろしく、配列の中身を1つずつ参照することにも向いている。##【書式】
“`
for (初期化式; 条件式;変化式){
実行する文;
実行する文;
…
}
“`
##【for文を使った例】“`
(String配列の宣言と初期化)
String[] fighter = {零戦, スピットファイア, メッサーシュミット, ラヴォーチキン};(配列arrの中身を全て表示する)
for (int i = 0; i < fighter.length; i++) { System.out.println("fighter[" + i + "] … " + arr[i]); } ``` ##【実行結果】 ```
JavaからRubyへ!!
#【JavaからRubyへ!!】
Javaを学びつつ、Rubyを習得することが現時点の目標です。
[Ruby 公式リファレンス](https://www.ruby-lang.org/ja//) にJavaとRubyの比較がされていました。
公式リファレンスの「JavaからRubyへ」を参照し、自分用メモとして残します。##JavaからRubyへ
Javaは成熟は成熟しており、処理速度は高速であるが、とても冗長である。
JavaからRubyへ移行すると、コードの量を大幅に削減することが可能になる。##Javaとの類似
メモリはGC(ガベージコレクション)によって管理される。
オブジェクトは強い型付けがされる。
メソッドにpublic、private、protectedの指定可能。埋め込み型のドキュメントツールが用意されている。
Ruby用のツールRDocで生成されたドキュメントは、javadocで生成したドキュメントにとてもよく似ている。※ガベージコレクションとは、コンピュータプログラムの実行環境などが備える機能の一つで、実行中のプログラムが占有していたメモリ領域
完全限定名と正規名とバイナリ名
Java やってたらたまに遭遇する以下3つの名前について整理する。
– 完全限定名 (fully qualified name)
– 正規名 (canonical name)
– バイナリ名 (binary name)※説明資料によっては「完全修飾名」「完全指定名」「正準名」のように翻訳がバラついているが、ここでは上記表記で統一する。
# 環境
**OS**“`
Windows 10
“`**Java**
“`
> java –version
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.8+10, mixed mode)
“`# 定義
Java 言語仕様(Java Language Specification) に書いてある、それぞれの名前の定義を確認する。## 完全限定名
[Chapter 6. Names](https://
テストで無闇にAllMatch的な処理をするのはやめよう
# なんの話?
テストを書いていることは大前提として、 **そのテストが失敗した時のことまで考えて書いていますか?** という話です。
具体例に関しては諸説あります。# どういう状況?
例えばユーザー一覧を取得した時に、 **IDが50以下のユーザーだけ取得できていること** をテストしたいとします。
(実際にこんなテストをするかどうかは今は気にしない)ユーザーは `id` を持ちます。
“`java
public class User {
private final Integer id;
// コンストラクタ・ゲッターは省略
}
“`# allMatchを使った実装
いざ、 `getUserList` というメソッドを使いユーザーを取得して、IDが50以下であることをアサートしましょう!“`java
public class UserListTest {
@Test
public void test_getUserList() {
ListuserList = getUserList();
簡易LISP処理系の実装例【各言語版まとめ】
この記事は,様々なプログラミング言語で,最低限のS式入出力およびリスト処理を実装した上で,John McCarthy氏の[原初のLISPインタプリタ記述](http://www-formal.stanford.edu/jmc/recursive/recursive.html)をPaul Graham氏がCommon Lispで実装した[“McCarthy’s Original Lisp”](http://paulgraham.com/lispcode.html)(`jmc.lisp`)について,各言語向けに移植・動作確認してみた記述例のリンク集および共通解説をまとめたものです.
* [Python版](https://qiita.com/ytaki0801/items/12c0b1bda1e0452048db)
* [Scheme版](https://qiita.com/ytaki0801/items/2d2a1edf371c103711bd)(`jmc.lisp`の書き直し)
* [C言語版](https://qiita.com/ytaki0801/items/5d56a2ba0b
簡易LISP処理系の実装例(Java版)
【他言語版へのリンク記事】[簡易LISP処理系の実装例【各言語版まとめ】](https://qiita.com/ytaki0801/items/dcb0fe48cbeab30ac40d)
この記事は,下記拙作記事のJava版を抜粋・修正したものを利用した,簡易LISP処理系([“McCarthy’s Original Lisp”](http://paulgraham.com/lispcode.html))の実装例をまとめたものです.
* ~~[『括弧文字列』簡易パーサ実装例まとめ](https://qiita.com/ytaki0801/items/b8d7d4c778fe98966ce5)~~(Java版はS式入出力を先行作成しました))
* [リスト処理関数(cons,car,cdr,eq,atom)実装例まとめ](https://qiita.com/ytaki0801/items/a11c8143c5c63a406c7f)最低限の機能をもったLISP処理系の実装の場合,本体である評価器(eval)実装はとても簡単であり,むしろ,字句・構文解析を行うS式入出力やリスト処理実