- 1. Scalaで一方向ハッシュ関数を使いたかった
- 2. 初めてのWebアプリ開発(未完)
- 3. openapi-generatorをバージョンアップしたらimportMappingsが動かなくなった
- 4. syftがJAVAのバイナリに対応したので各種OpenJDKでチェック
- 5. Iteratorから値をとるサンプル
- 6. Mapに値格納、取り出しサンプル
- 7. よく使う文字列の切り出し、チェック、変換方法まとめ
- 8. ArrayListに格納、取り出し、サンプル
- 9. インスタンスのクラスを確認する
- 10. 【Java】FactoryMethodを使ったファイル読込み機能の実装
- 11. ClickCaptchaの突破方法
- 12. hCaptcha Invisibleの突破方法
- 13. 【HERE】指定の緯度経度から初日の出の見えるホテルを探してみる
- 14. 【実録】気づいたらやってしまってるかもしれない、こんなコーディング
- 15. JAVAが国際規格にならなかった事
- 16. 【初心者向け】Javaについて
- 17. Javaで何か作ってみる(2022/12/12 Day53)
- 18. App Service における Java SE stack への Jar デプロイの挙動
- 19. 【java】基本構文(継承・オーバーライド編)
- 20. Javaのアノテーションを駆使してSOLID実装してみた
Scalaで一方向ハッシュ関数を使いたかった
# TL;DR
– 基本はJavaの標準ライブラリを使うとよさそう
– パスワードハッシュにはSpringBootを使うかサードパーティ製ライブラリの利用を検討する# 安全に認証したい
アプリケーション利用者の認証に使うパスワードなどは、当然そのままDBに保存してはいけないものです。知らない人にDBを覗かれたら何もかもが暴露されてしまいますからね。そこで使うのが「一方向ハッシュ関数※」ですが、Scalaで一方向ハッシュ関数を使いたい場合は一癖ほどありそうだったので、少し調べた内容をまとめました。※一方向ハッシュ関数:任意のデータを不可逆変換し、短い固定長のデータを生成する関数。一方向ハッシュ関数によって生成されたデータは「ハッシュ値」と呼ばれる。ハッシュ値から元データを復元することはできず、あるデータが元データと等しいかどうか(正真性)はハッシュ値が等しいかどうかで確かめられる。
# Scalaで使える一方向ハッシュ関数ライブラリ
## java.security
Javaの標準ライブラリです。この中の`MessageDigest`というクラスが一方向ハッシュ関数を提供し
初めてのWebアプリ開発(未完)
# 概要
– 勉強のためにWebアプリの開発を試みる
– ついでに勉強したことを残すため、アドベントカレンダーへの投稿も試みる
– 投稿日までに完成せず、ユーザ管理機能の実装のみ & 記事も前日に執筆# 背景
1. 内定先のIT企業で活躍するためにWebアプリ開発の勉強を決意
1. 内定先で開発に主に用いている(らしい)JavaでのWebアプリ開発を勉強することに
1. Javaはそこそこ使ったことがあるが、Webアプリ開発をしたことがないため、udemyで手頃な講座を受講
1. 完全に理解した(大嘘)ので、別言語で開発していた作りかけのWebアプリを本格的に開発してみる# 開発した(かった)もの
**発注管理アプリケーション**
– 研究室内で学生が行っていた発注管理を行いやすくする
– 現在の発注管理はSlack上で行っているため
– 発注状況の管理が手間
– プランが変更することになった場合、履歴が消える可能性がある
– 以前にハッカソンでVue.jsを使用した開発を試みたが中途半端で実用化に値しないもの
– Todoアプリを少しいじった程度のもの
openapi-generatorをバージョンアップしたらimportMappingsが動かなくなった
この記事は[ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) #4 14日目の記事になります。
# はじめに
openapi-generatorをバージョンアップしたらimportMappingsが動かなくなったので原因と対応をまとめます。# openapi-generatorとは
OpenAPI Specificationを元にクライアントやサーバのコードを生成するソフトウェアです。# importMappingsとは
変換に伴いインポートする型のテンプレートを指定するopenapi-generatorの機能です。# 何が起こったのか
以下のようなソースを用意しバージョンアップしたopenapi-generatorを実行したところ、
importMappingsが正常に動かない事象が発生しました。#### yaml
“`yaml
paths:
‘/user’:
get:
operationId: getUserList
summary
syftがJAVAのバイナリに対応したので各種OpenJDKでチェック
## 目的
機能確認
### 結果
|image|tag|package|binary|release|
|–|–|–|–|–|
|eclipse-temurin|8||✓|✓|
|eclipse-temurin|11||✓|✓|
|eclipse-temurin|17||✓|✓|
|eclipse-temurin|8-alpine||✓|✓|
|eclipse-temurin|11-alpine||✓|✓|
|eclipse-temurin|17-alpine||✓|✓|
|amazoncorretto|8|✓|✓||
|amazoncorretto|11|✓||✓|
|amazoncorretto|17|✓||✓|
|amazoncorretto|8-alpine|✓|✓||
|amazoncorretto|11-alpine|✓||✓|
|amazoncorretto|11-alpine|✓||✓|
|azul/zulu-openjdk|8|✓|✓|✓|
|azul/zulu-openjdk|11|✓||✓|
|azul/zulu-openjdk|17|✓||✓|
Iteratorから値をとるサンプル
“`sample.java
public static void main(String[] args) {
Listli = new ArrayList();
li.add(“a1”);
li.add(“a2”);
Iterator it = li.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
“`
実行結果
“`
a1
a2
“`
Mapに値格納、取り出しサンプル
“`sample.java
public static void main(String[] args) {
Mapmp = new LinkedHashMap();
mp.put(“a1”,1);
mp.put(“a2”,2);
System.out.println(mp.getClass());
for (String s:mp.keySet()) {
System.out.println(s);
}
}
“`
実行結果
“`
class java.util.LinkedHashMap
a1
a2
“`
よく使う文字列の切り出し、チェック、変換方法まとめ
## 目次
[1.文字列の切り出し編](#1-文字列の切り出し編)
[2.文字列のチェック編](#2-文字列のチェック編)
[3.文字列の変換編](#3-文字列の変換編)## 1. 文字列の切り出し編
### Stringクラスのsubstringメソッド“`java
String str = “ABCD/12345”;
System.out.println(str.substring(5));
“`
引数を1つ指定する場合、引数で指定した位置から最後までの文字列を返す。※位置はAの前から0から数える
出力結果は12345“`java
String str = “ABCD/12345”;
System.out.println(str.substring(5, 8));
“`
引数を2つ指定する場合、引数で指定した開始位置から終了位置までの文字列を返す。※位置はAの前から0から数える
出力結果は123### StringクラスのindexOfメソッドと併用して切り出す方法
“`java
String str = “ABCD/12345”;
int ind
ArrayListに格納、取り出し、サンプル
“`sample.java
public static void main(String[] args) {
Listli = new ArrayList();
li.add(“a1”);
System.out.println(li.getClass());
for (String l:li) {
System.out.println(l);
}
“`
実行結果
“`
class java.util.ArrayList
a1
“`
インスタンスのクラスを確認する
・インスタンスについてgetClass()をとると、Class名を取得できる
・instanceofで、Class名を比較
“`Sample.java
public static void main(String[] args) {
System.out.println(Integer.valueOf(“1”).getClass());
System.out.println(Integer.valueOf(“1”) instanceof Integer);
}
“`
“`実行結果
class java.lang.Integer
true
“`
【Java】FactoryMethodを使ったファイル読込み機能の実装
# メモ
自分用のメモ# クラス図
![クラス図0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2671881/6e226db9-c26c-65e7-3839-e48e6341949a.png)
# 実装
“`java:InterfaceFileReader.java
package factoryMethodPattern;import java.io.IOException;
public interface InterfaceFileReader {
//共通して使うメソッド1を定義する(ファイルを読み込むメソッド)
public int readFile() throws IOException;//共通して使うメソッド2を定義する(ファイルを閉じるメソッド)
public void closeFile() throws IOException;
}“`
“`java:FileReaderFactory.java
package factoryMet
ClickCaptchaの突破方法
1 CAPTCHA画像をダウンロードします。
2 画像を [API](/api-docs#solving_clickcaptcha) に送信します。
## SDKを使用する場合 (推奨):
PHP
“`php
// https://github.com/2captchacom/2captcha-phprequire(__DIR__ . ‘/../src/autoloader.php’);
$solver = new \TwoCaptcha\TwoCaptcha(‘YOUR_API_KEY’);
try {
$result = $solver->coordinates([
‘file’ => ‘path/to/captcha.jpg’,
‘lang’ => ‘en’,
]);
} catch (\Exception $e) {
die($e->getMessage());
hCaptcha Invisibleの突破方法
1 ブラウザでデベロッパーコンソールを開き、`data-sitekey`属性を持つ要素を見つけます。
“`html
“`
2 `sitekey`と`pageurl`を [API](/api-docs#solving_hcaptcha)に送信します。
## SDK を使用する場合 (推奨):
PHP
“`php
// https://github.com/2captchacom/2captcha-phprequire(__DIR__ . ‘/../src/autoloader.php’);
$solver = new \TwoCaptcha\TwoCaptcha(‘YOUR_API_KEY’);
try {
$result = $solv
【HERE】指定の緯度経度から初日の出の見えるホテルを探してみる
今年も早いもので、あと少しで一年も終わります。
初日の出は、日本では長い歴史を持つ伝統的な行事です。
日本人にとっては、新年を迎える前に、精神的にリフレッシュし、新しい一年に向けて前向きな気持ちになるために重要な行事です。
また、初日の出を見ることで、人々は自然の美しさや宇宙の秘密を感じることができます。ホテルから初日の出が見られる場所や屋上から初日の出を眺めることで、新年を迎える際に、より贅沢な気分で新年を迎えることができます。そんな、初日の出の見られるホテルを予約したりして、贅沢な新年を迎えたいと思い、初日の出の見えるホテルを機械学習で、探してみました。
# 初日の出の見えるホテルの地図
こちらは作ったプログラムから出力されたCSVを[【HERE Studio】](https://jp.developer.here.com/documentation/platform_studio/user_guide/index.html)で表示したものになります。
地図表示は[こちら](https://platform.here.com/studio/viewer?project_id
【実録】気づいたらやってしまってるかもしれない、こんなコーディング
# はじめに
表明駆動投稿ということで、何も考えず投稿表明をして、当日を迎えてしまいました。@suger4です。
この記事は[ラクス Advent Calendar 2022](https://qiita.com/advent-calendar/2022/rakus)の13日目です。あるきっかけで、「コードのプロジェクトを分ける。≒一部を外だしする。」ことになったのですが、そこそこ長く開発していたプロジェクトであったこともあり、何点か事件が発生してしまいました。
今回はそういった事例を紹介させていただき、反面教師になっていこうという回になります。# ことの発端
「コードのプロジェクトを分ける。≒一部を外だしする。」きっかけは、ざっというと「一部の重たい機能を別サーバで動くようにしよう」といった内容です。
特に珍しくないありふれた話ですが、スパゲティのように絡まっている(かもしれない)コードから、**確実に**、**今までと同じように**動作するように外に出すことが最大のミッションです。
しかしながら、そう簡単にはいきません。# Case1:相互依存で相手がいないとダメに
JAVAが国際規格にならなかった事
JAVAが国際規格にならなかったころ、ISO/IEC JTC1の別の委員会のメンバとして国際会議に参加していた。
JAVAが国際規格にならなかったという連絡があった。
いろいろ忘れており、記録を再度たどろうとした。
<この項は書きかけです。順次追記します。>
# PAS Submitter
SunのJava技術国際標準化をISOが認可 (’97/11/18)
https://internet.watch.impress.co.jp/www/article/971118/javaiso.htm
記事の表題は誤解を与えやすい表現を使っている。
SunのJAVA技術国際化の「PAS Submitter(公開仕様案の提案機関)」として提案提出をISOが承認したにすぎない。
>Sun自身がJava関連仕様の標準化について、事実上主導権を取得したことになる。
主導権は取得していない。提案権を取得しただけだから。
アメリカが反対しているところが鍵かも。
## Replies
Section 7. SMI Replies to the World December/1
【初心者向け】Javaについて
## はじめに
こんにちは。watnowに所属しているりょーま。です。13日目を担当します。
今回はJavaを学んでいる最中なので、『Javaのプログラムの書き方について』を書きたいと思います。## Javaについて
Javaとは、プログラムを作るために利用するプログラミング言語の一つです。
Javaを使えば、様々なコンピュータで動作する多様なプログラミングを開発することができます。## 起動
早速、Javaのプログラムを書いてみましょう。
今回はこのサイト、[dokoJava](https://dokojava.jp)を使います。
さて、dokojavaでは、次の4つの手順で行います。
1\. プログラムの入力
画面にJavaのプログラムを入力します。
2\. コンパイル
dokojavaが入力したプログラムを検査して、実行の準備をします。
3\. 実行
プログラムを実行して、結果が画面に表示されます。
4\. デバック
うまく実行しなかったら、デバックのお時間です。## 1\.プログラムの入力
まず、プログラムを入力してみましょう。
“`java:HelloWor
Javaで何か作ってみる(2022/12/12 Day53)
## 今日やった事
– オブジェクト指向の動画教材を見た。(**J2-補講_正規表現** まで見た。)
## 参考にしたもの
– [Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~](https://www.udemy.com/course/java_spring_beginner/)
– [【超初心者も必見】Javaプログラミングの「オブジェクト指向」が絶対理解できる講座【プロ講師が丁寧解説】](https://www.udemy.com/course/uz-java-obj/)
## 所感
– 発生する可能性がある例外は、throws節を用いて明示出来、throws節がついたメソッドを呼び出す場合は、
例外処理をしないとコンパイルエラーになるのは、便利だけど、忘れそうだから注意しないとなと思った。
– 正規表現は便利なので、使いこなせるようになりたい。## 明日の予定
– 引き続き、動画教材を進めていく。
App Service における Java SE stack への Jar デプロイの挙動
# はじめに
以前、[App Service における Tomcat アプリケーションへの war ファイルのデプロイについて](https://qiita.com/georgeOsdDev@github/items/c8184d7b8676f10982d9) と題して Tomcat 構成への war デプロイについて書きましたが、今回は Java SE Stack への Jar ファイルデプロイについて書きます。https://qiita.com/georgeOsdDev@github/items/c8184d7b8676f10982d9
# TL;DR
– jar ファイルのデプロイには、Kudu publish API `/api/publish?type=jar` を使おう(azure-webapp-maven-plugin や AZ CLIも内部的にはこのAPIを呼び出している)
– Kudu publish API を使うとjar ファイルは、`%HOME%\site\wwwroot\app.jar`(Linux の場合は `$HOME/site/wwwroot/ap
【java】基本構文(継承・オーバーライド編)
# はじめに
Java一年未満の方へ研修用
継承・オーバーライドに関して少し掘り下げて紹介# 対象
・Java一年未満# 継承とは
・あるクラスの状態と動作を別のクラスが引き継ぐことです。
・継承をすることによって、コードの効果的な再利用ができるようになります。例えば消防車とトラックは両方とも車です。
以下の赤い文字の部分は共通しています。
![スクリーンショット 2022-11-27 14.10.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2956190/c2667dc4-d42e-8ba2-7b40-d570e6937609.png)
車クラスをスーパークラスとして実装することで、消防車クラスとトラッククラスの実装が楽になります。
![スクリーンショット 2022-11-27 14.12.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2956190/04bafd9b-a3d7-902b-d8
Javaのアノテーションを駆使してSOLID実装してみた
この記事は [Qiita x Code Polaris共催!女性ITエンジニアが作るアドベントカレンダー Advent Calendar 2022](https://qiita.com/advent-calendar/2022/qiita-code-polaris) 向けに書いたものです。
https://qiita.com/advent-calendar/2022/qiita-code-polaris
# はじめに
Qiitaで初めて記事を書きます。というか、技術記事自体初めて書きます。
しのといいます。Java Developerを5年くらいやってます。普段はドイツに住んでいて、イギリス企業へフルリモートで働いてます。先日Code Polaris内でClean Archtectureについての勉強会をやったので、私がやったパートの、**クリーンアーキテクチャ的に考える幸福度の高い実装** の部分を記事でも残しておこうと思います。
動画はこちらでアーカイブが公開されています。喋っていることとほぼ同じ内容なのですが、少し補完などもあります。
https://y