- 1. KMSでSecp256k1の署名と検証(後編)
- 2. Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較
- 3. C言語とJavaの環境構築
- 4. Spring IntegrationのTCP機能のデシリアライズ時にタイムアウトを指定する
- 5. 逆引きQuarkus
- 6. Java・Kotlin得意マンがRustの文字列の納得に時間を要した話
- 7. ABC268A~Dの解答[Java]
- 8. (初心者向け)AndroidStudioを使ってギャラリーアプリを作る
- 9. 【Java Silver SE11】検証環境をdockerで構築する
- 10. Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較
- 11. Exchange Onlineの基本認証廃止で普通に困ってる人のためのエントリ
- 12. Keycloakによる認証基盤の立ち上げ(2) Quarkus版
- 13. DynamoDB StreamsのデータをKinesis Client Library (KCL) で処理する方法
- 14. Javaで同時実行スレッド数を制御するコンポーネントを作ってみた
- 15. Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較
- 16. 文字列を桁数で区切る
- 17. 【Java基礎】クラスの作り方
- 18. Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ・モジュールの比較
- 19. コンパイル時に文字化けを防ぐ方法(Java)
- 20. helloworld.javaの奮闘(更新)
KMSでSecp256k1の署名と検証(後編)
# はじめに(Introduction)
BitcoinやEthereumでは署名にECDSA(楕円曲線DSA)を用いています。
そこで使用される、楕円曲線はSecp256k1と呼ばれるパラメータです。
AWS Key Management Service (AWS KMS) では、Secp256k1のECDSAを用いることが出来るのでこれをJavaを使用して署名、検証を行います。サンプルで使用するライブラリとしては、Ethereumで利用されているWeb3jを使用します。
筆者は、AWSもEthereumも素人なので、そこら辺の間違いについてはご指摘いただけるとありがたいです。
この記事は後編です。
[前編はこちら](https://qiita.com/tnakagawa/items/7c4ef36080aed97516d1)# 実装(Programming)
JavaでKMSを利用して署名と検証を行います。
前編で取得した、IAMユーザの「**アクセスキーID**」と「**シークレットアクセスキー**」と
KSMで作成した鍵の「**キーID**」を使用します。#
Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較
Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較
# Python
https://qiita.com/Morio/items/e8aed85346c0055beea7
# Ruby
https://qiita.com/Morio/items/3ac5cac9ace7e9ddbdb4
# PHP
https://qiita.com/miriwo/items/d1b5d5ece4f16c7b5985
# Java
https://qiita.com/Co_Pilot/items/7c59410cd90be4cf06d8
# JavaScript
https://qiita.com/w-tdon/items/f3ecb29dc9350f2f2e8d
# Perl
https://perlzemi.com/blog/20080327120662
C言語とJavaの環境構築
*Ubuntu22.04*環境下における、*C*と*Java*の環境構築について備忘録。
# C言語
コンパイラの*clang*と*gcc*のインストールだけなので、
“`
sudo apt install clang gcc
“`で良いです。
# Java
*Eclipse*は、好みの問題で今の所、使いません。
“`
sudo apt install default-jdk
“`で良いです。*JDK*についてバージョンを選択したい場合は、
[Java Downloads | Oracle](https://www.oracle.com/java/technologies/downloads/)
から選択して落としてください。当方、まだ初学者なので、そんなJDKを選ぶような状態ではないです。の場合は、上述のコマンドでよいでしょう。
以上です。
Spring IntegrationのTCP機能のデシリアライズ時にタイムアウトを指定する
Spring IntegrationのTCP機能には、ソケットレベルのタイムアウト時間(SO_TIMEOUT)を指定することはできるのですが、これは接続相手から指定した時間データが送られてこないとタイムアウト扱いになります。
特に問題ないように思うかもしれませんが、例えばタイムアウト時間に「10秒」を指定した場合、接続完了から10秒間データのやり取りがないとタイムアウトになってしまいます。これは都度接続方式であれば問題にならない可能性はありますが、常時接続方式だと・・・問題になります。:::note warn
本エントリーの記載は、NIO(Non-Blocking/IO)を使う前提になります。NIOじゃないと「やりたいこと」が実現できないので悪しからず。
:::# やりたいこと
データを受信して1つのメッセージにデシリアライズが完了するまでのタイムアウト時間を指定できるようにしたい。
# タイムアウト検知機能付きのデシリアライザ
タイムアウト検知機能付きのデシリアライザを作ってみました。
“`java
package com.example;import org.
逆引きQuarkus
[backend-example-quarkus](https://github.com/unhurried/backend-example-quarkus)を実装する過程での知見を整理した。QuarkusでReactiveなRestful APIを実装する際の勘所をまとめている。
#### 基礎知識を学ぶ
RESTful APIを実装するのであれば、下記が全体を理解するのに役に立つ。
* [WRITING JSON REST SERVICES](https://quarkus.io/guides/rest-json)
* [WRITING REST SERVICES WITH RESTEASY REACTIVE](https://quarkus.io/guides/resteasy-reactive)#### 開発環境を構築する
[Quarkus CLI](https://quarkus.io/guides/cli-tooling)というスタンドアロンなコマンドが提供されているが、[Mavenプラグイン](https://quarkus.io/guides/maven-t
Java・Kotlin得意マンがRustの文字列の納得に時間を要した話
Javaを20年やってきた自分が、Javaの先入観からかRustで“`String::from(“hoge”);“`という書き方をすることに納得するまで時間を要したので整理。
## Java
文字列リテラル=“`String“`
“`String“`は固定長の文字列を扱うクラス。
+で連結できるが、インスタンスが保持している文字列に付け加えているわけではなく、新しいインスタンスが生成される。
Kotlinの場合は+演算子をオーバーロードしているが、起きていることはJavaと同じはず。場合にもよるが、“`String“`を連結したい場合は“`StringBuilder“`を使うのが良いとされている。
## Rust
文字列リテラル=“`&’static str“`
メモリ上の不変の部分に存在している。文字列の連結など、可変長の文字列を扱う場合は“`String“`。
“`String“`の参照はそのまま“`&str“`として扱うこともできる。
逆に、“`&str“`を“`&String“`扱いはできないので、“`String::f
ABC268A~Dの解答[Java]
## はじめに
今回も4完出来たのでDまで載せようと思います。では見ていきましょう。
## A – Five Integers
問題文は[こちら](https://atcoder.jp/contests/abc268/tasks/abc268_a)[公式解説](https://atcoder.jp/contests/abc268/editorial/4779)のように全部比べていっても良いですが、今回はHashSetを使ってみました。
Setで要素の重複はしないので、単純にsize()を出力すれば良いです。
“`A.java
class Main{static Library System = new Library(java.lang.System.in,java.lang.System.out);
public static void main(String[] args)throws IOException{
//重複を弾くためのHashSet
HashSetlist = new HashSet ();
(初心者向け)AndroidStudioを使ってギャラリーアプリを作る
### 環境
– Windows10 21H2
– Android Studio Chipmunk | 2021.2.1 Patch 1### 使用するライブラリ
– [glide](https://github.com/bumptech/glide) 4.13.2今回は Java を使用して簡易的なギャラリーアプリを作っていきます。
完成するとこのようになります。
\*記事中でこの部分が間違っているやこの方法の方が良いという部分がありましたら教えていただけると幸いです。
それでは始めましょう!
## 下準備
まずは、マニフェストファイルに`【Java Silver SE11】検証環境をdockerで構築する ## 概要
Java Silver SE11の検証用環境をdockerで構築する。
[今回はgithubにソースを置いときました。](https://github.com/hagemanto-saitama/openjdk11)
こちらをベースに説明していきます。
※dockerとdocker-composeの環境が整っていることが前提です## Java Silverおすすめの勉強方法
なぜdockerで環境を構築するのか、に関係するのがこれ。
Java Silverの試験対策で、個人的におすすめなのが、
コード検証を
**テキストエディタで編集+コマンドラインでコンパイル&実行**
で行うこと。
理由は以下の通り。
– コマンドを自然と覚えられる。
→コマンドも試験に出てくるため、わざわざ頑張って暗記するよりも自然に覚える方が楽
– ディレクトリ構成が自然と頭に入ってくる。
→ファイルを跨いだ継承やモジュール関係の箇所は、
実際にディレクトリ、ファイルを作成してコンパイル&実行を行うと頭に入ってきやすい。
– コンパイルエラー、例外、実行時エラー等の違いが経験として蓄積できる
→
Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較
Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較
# Python
https://qiita.com/Morio/items/10d33f6dbb0845ae5038
# Ruby
https://qiita.com/Hashimoto-Noriaki/items/f406bcfb00e79e3937d0
# PHP
https://qiita.com/miriwo/items/2c2aa77d5de66c074ec5
# Java
https://qiita.com/takahirocook/items/05bfe37bb4ba64f3a78e
# JavaScript
https://qiita.com/kaz7991/items/7f98cc17c4df9ab6a009
# Perl
https://perlzemi.com/
Exchange Onlineの基本認証廃止で普通に困ってる人のためのエントリ
# はじめに
基本認証を使っている方は2022年10月1日からExchange Onlineに接続できなくなります。
ある日会社に行ったら、Xデー迄あと1か月ないので至急対処してくれとお達しが来ていました。
現実を受け止めきれなかったのですが、公式声明文が出ていたので、どうやら本当のようです。https://docs.microsoft.com/ja-jp/exchange/clients-and-mobile-in-exchange-online/deprecation-of-basic-authentication-exchange-online
ということで、この記事は次のような人に向けて書かれています。
– OfficeのメールボックスをIDPWで開いてなんやかんやする自家製アプリを書いている。
– 2022年10月1日までにOAuth2.0認証に切り替えないといけないし、何ならもう10月1日になった
– 正直何からやっていいか不明だし何で検索すればいいかよくわからない
– こんなことをやっている場合ではないし、とにかく悲しい# 要点
## Azure ADにアプ
Keycloakによる認証基盤の立ち上げ(2) Quarkus版
# この記事の概要
– 以前 [Wildflyベースで立ち上げたKeycloak環境] が壊れたのを機に、Quarkusベースで再立ち上げ。
– Keycloakについては、前項記事を参照。
[Wildflyベースで立ち上げたKeycloak環境]:
# やってみる
[Get started with Keycloak on bare metal] によると、OpenJDK 11以降が必要になったとのこと。
[Get started with Keycloak on bare metal]:
32bit Windows環境では選択肢少ないが、Zulu 17 JDKをscoopから入れる。
“`
> scoop install zulu17-jdk
“`Keycloak本体は、こんな感じでbucket自作。
“`keycloak.jso
DynamoDB StreamsのデータをKinesis Client Library (KCL) で処理する方法
# 概要
DynamoDB StreamsのレコードをKCLを使用して処理する方法です。[AWSの公式ドキュメント](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Streams.KCLAdapter.Walkthrough.CompleteProgram.html)に実装例が示されています。
この実装例は、
1. DynamoDBにテーブルを生成する
1. DynamoDBのレコードを作成(更新、削除)する
1. レコードの更新を受け、DynamoDB Streamsにレコードが流れる
1. DynamoDB Streamsに流れたレコードを処理するというものですが、実際には一連の処理を1つのアプリケーションで行うことはないかと思い、DynamoDB Streamsに流れたレコードを処理する部分(4.)にフォーカスを当てる形で作り替えました。
# 使用した技術
– Java 17
– [localstack](https://github.com/localstack/loca
Javaで同時実行スレッド数を制御するコンポーネントを作ってみた
訳あって同時実行数を制御する処理が必要そうなので・・・Javaで実現するとしたら「こんな感じかな〜」というのを作ってみました。完全に個人メモです。
もっと良いやり方や、OSSのこれ使えば同じことできるよ〜みたいなのあれば是非コメントを!!
# やりたいこと
* 同時に処理を行うスレッド数(=最大同時実行スレッド数)を指定できること
* 「最大同時実行スレッド数」に達している際は空きがでるまでキューインングできること(+キュー数も指定できること)
* キューイング状態で待つ最大時間(=無限に待たないようにタイムアウト)を指定できること
* 「最大同時実行スレッド数」+「キュー数」を超える状態を検知したら拒否時の処理を実装できること# 作ってみたコンポーネント
“`java
package com.example;import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.Semaphore;
Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較
Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較
# Python
https://qiita.com/imuimu/items/7f27d156dd0f6507803b
# Ruby
https://qiita.com/k-penguin-sato/items/1a6c8096effccb19565a
# PHP
https://qiita.com/wakahara3/items/bcadef53367097765c82
# Java
https://qiita.com/ts7i/items/d7f6c1cd5a14e55943d4
# JavaScript
https://qiita.com/andota05/items/fc1e340642be42ca47c0
# Perl
https://perlzemi.com/blog/201
文字列を桁数で区切る
“`java
String mojiretsu = “12あ41 345 23111”;
String conv = “”;
for(int i = 0; i
【Java基礎】クラスの作り方
# はじめに
最近Java基礎の研修を受けました。学生時代にJavaを授業で習って基礎は身につけていたのですが、忘れていた内容もあったので備忘録として書き残してみます。この記事では、**Javaの基礎的な内容に関してまとめていきます**。
今回は**クラスの作り方**です。# クラスの構成
クラスは以下の3つで構成されます。
+ **フィールド**:インスタンスのデータを保持する変数
+ **メソッド**:オブジェクトが持つ動作
+ **コンストラクタ**:クラスからインスタンスを生成する時に自動的に呼び出される処理これらのクラスの構成要素のことを**メンバー**と呼びます。
“`java:クラス例
class Person {
// フィールド
private String name;
private int age;// コンストラクタ
public Person(String name, int age) {
this.name = name;
this.age = age;
Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ・モジュールの比較
Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ・モジュールの比較
# Python
https://qiita.com/ryuichi1208/items/cb5f850a9811d2a4bc3a
# Ruby
https://qiita.com/sugamaan/items/d7871da28c0160b69609
# PHP
https://qiita.com/mikakane/items/2719df714df5b3fc6adf
# Java
https://qiita.com/haruto167/items/162551100449ea5c7e6d
# JavaScript
https://qiita.com/Nako4/items/1d8eaf731bf4370b84a7
# Perl
https://perlzemi.com/b
コンパイル時に文字化けを防ぐ方法(Java)
# 結論
“`
javac -encoding UTF-8 ファイル名.java
“`
とする。
# 参考文献
https://yama-shu99.hatenablog.com/entry/2020/01/19/194028
helloworld.javaの奮闘(更新)
https://atmarkit.itmedia.co.jp/ait/articles/0710/11/news121_2.html
↑これでトムキャットのサンプルファイル使ったウェブページ表示に苦戦## 壁1:サンプルファイルのコンパイルに失敗
“`HelloWorld.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request
,HttpServletResponse response)
throws IOException, ServletException{
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();