hatenob

プログラムって分からないことだらけ

2021の振り返りと2022

2022年になりました。見返すと、前回の更新が2020年の2月ということで、立派に2年ほど放置していたことになります。 本ブログは自身の技術研鑽を晒す場として書いていますが、2020年も2021年も決して何もやってなかったってわけではないので、こんなことをや…

WebFlux.fnとClean Architectureで実装を試みる

動機 仕事で使うあてがあるわけではないのですが気になってWebFlux.fn(WebFluxのFunctional Endpoint)を少し触ったのを機に、もう少しそれっぽい実装をしてみようと思うに至りました。 せっかくなので、Clean Architecture(クリーンアーキテクチャ)で有…

SpringBoot 2.2でRSocket

SpringBoot 2.2でRSocketを試してみました。 org.springframework.messaging.MessageDeliveryException: No handler for destination ''というのが出て最初はうまく動かなかったのですが、何とか動きました。 動作確認環境 Windows 10 Home Java 11 SpringBo…

WebFluxでS3にファイルアップロードしてDynamoDBにインデックス作成(AWS Java SDK v2)

前回、WebFluxでS3にファイルをアップロードするところまでやりました。 そのままだと、アップロードされたファイル名のままになるので別の人が同じファイル名で別のファイルをあげた日には目も当てられない惨状となるだけでなく、同じ人でも別のファイルを…

WebFluxでS3にファイルアップロード(AWS Java SDK v2)

以前、WebFluxで複数ファイルアップロードしてサーバサイドに保存する方法を試したのだけれど、今回はそれをS3にアップロードにしてみました。 AWS側はJava SDK v2を使います。 v2になってノンブロッキングI/Oがサポートされたそうなので、WebFluxを使った場…

AWS CDKのJava版がGAになったようなので触ってみる

タイトルの通りです。aws.amazon.comCloudFormationでJSONやYAMLで書けばよいんですが、プログラム言語で書くことで条件分岐やループが使えるのと、IDEのサポートが受けられるあたりがメリットなんだと思います。 それだけならわざわざJavaで書かなくてもTyp…

Spring WebFluxで複数ファイルアップロード

特に必要に迫られたわけでもないのですが、WebFluxでリアクティブプログラミングにも触れておいたほうがよいのかなぁという気になりました。 浅い理解では、従来の1リクエスト1スレッドから、複数リクエスト1スレッドで処理できるのでスケーラビリティが向上…

最近の環境

Githubのリポジトリで数年前のサンプルコードがずっと上がっているのもどうかなぁと思ってリポジトリを整理(バックアップ取って削除)をしていました。 「消してしまってよいかなぁ」の判断材料の1つに、このブログで参照しているものがいくつかって、それ…

2018

なんはかりたいなぁ、週1コミット目指すぞー、なんて言って早1年が経過しました。 結果は言わずもがな。ブログ更新すらされていない状況で特に語ることはありません。。 とは言え、色々と触ったりは相変わらずやっているのと、ここ最近はN予備校のプログラミ…

2017

年があけて2017となりました。気になったことをちょこちょこと試すようなことを毎度やっているわけですが、そろそろまとまった物を作りたいなぁと思いつつ1年が経ちました。 一昨年には「一人Web開発」と称して過去にも取り組みましたが、残念ながら頓挫しま…

SpringBoot+Vaadinを触ってみた

最近は「ちょっと触ってみる」系のことばかりでしっかり調べたり全然できていませんが、まぁ何か新しいものに触れてみるというのも大事なことということで。 今回は、SpringBootとVaadinでして、SpringBootで簡単にCRUDの画面アプリ作る方法ないかなぁ~とさ…

Vert.xを触った(HelloWorldだけ)

Non-Blockingとかリアクティブとかを調べていたら、RxJavaからVert.xというのに辿り着いて、何かもよく分からずにHelloWorldだけ書いてみた。書いてみたといっても、以下を写経しただけ。vertx.io数年の歴史はあるものの、あんまり情報が豊富とは言い難い感…

Spring BootのアプリケーションをDockerで動かす

動かすだけなら簡単にできた。 Getting Started · Spring Boot with Docker をなぞるだけです。環境 OpenJDK 1.8 Maven 3.0.5 どちらも、CentOS7でyumで入れました。 Dockerイメージの作成 Mavenプラグインをpom.xmlに追加。 <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plug</artifactid></plugin>…

VagrantでAnsible local

そういえば昨日の記事で動かした環境は、Vagrant+VirtualBoxでした。 Vagrantで環境を作るときはchef_zeroを使っていたのだけれども、エージェントレスなAnsibleのほうが使い勝手よさそうなのと、Red Hatが買収したので今後はRHELでも使えるようになりそうな…

Kongを試してみる

Kongとは、「スケーラブルなOSSのAPIレイヤー(API GatewayやAPI Middlewareとも呼ばれる)」(直訳)です。 APIにおいて共通的な処理を集約してAPIのエンドポイントを提供し、バックエンドにプロキシをするプロダクトです。 ひょんなことから知る機会があっ…

curlでftp

ちょっと調べたメモ。 ダウンロード $ curl -o <file> -u <user>:<pass> --ftp-pasv ftp://<hostname>/<path> アップロード $ curl -T <file> -u <user>:<pass> --ftp-pasv ftp://<hostname>/<path> パスワード秘匿 パスワードをシェルに直書きすると怒られる時のための気休め対応。 パスワードはファイルに落としておく。 $ opens</path></hostname></pass></user></file></path></hostname></pass></user></file>…

log4j2でrsyslogにTCP転送

log4j2でrsyslogにログ転送するのを試していましたが、思わずはまったのでメモ。 環境 rsyslogのホスト:CentOS 6 rsyslogのバージョン:CentOS 6の標準バージョン(v5) 転送元のプログラム ただログを飛ばしたいだけなので、こんなので十分。 import org.a…

Javaでtail -f

ログにエラーが記録されたら○○したい、みたいなことってよくあるので、Javaでtail -fする方法を模索中のメモ。 自分で作る 手抜きするとこんな感じ。 public static void main(String[] args) throws Exception { try (BufferedReader br = Files.newBuffere…

Mavenで環境ごとの設定ファイルを作成する

一人Web開発シリーズも認証で行き詰ったので閑話休題的に。 はじめに 複数環境の設定ファイルを作るのに、1つのテンプレートをベースにして差分だけを変数化するというのはよくやることです。 ChefやAnsibleなんかを使える環境にいればよいのですが、そうで…

一人Web開発 Season.2~第5夜 認証・認可の検討

前回、HTTPサーバの検証をしたので、それに続いて認証・認可の仕組みを検討することにした。 が、正直全然分からん。。普通のJavaEEだとJAASとかあって、web.xmlに色々書いて認証・認可ができるようになるのは前にも調べたことがある。 ユーザID/パスワード…

一人Web開発 Season.2~第4夜 HTTPサーバ探し~

HTTPで会話できるAPIコンテナを模索しておりまして、やはり馴染み深いJBossプロジェクトに落ち着きつつあり、とは言え今だAlphaのwildfly-swarmは使えないしあまりフルスタックなのは求めていない、という流れで、ひとまずJAX-RSをスタンドアロンで実行でき…

一人Web開発 Season.2~第3夜 仕様検討~

仕様検討 作るアプリの仕様ではなく、作り方の仕様です。 ぼんやりなので何も固まっていないけれど、ひとまず備忘のために書き記しておきます。 アプリケーション仕様 アプリケーションを動かすために備わっていないといけなそうなことをあげてみます。 HTTP…

一人Web開発 Season.2~第2夜 見直しとVagrantとDocker~

見直し 前回のアップグレード版でやろうと思ったけれどもそれではちょっとつまらない気がしたので方針を少し変えることにしました。 折角なので、今の自分の知識(つまりフツーのJavaEE)の延長線上にあるものとは少し違うものにしたいなぁ、と。 絶賛バズっ…

一人Web開発 Season.2~第1夜 はじめに~

2014年1月に、「一人Web開発」として読者がいるわけでもないけど自分のログとして細々とWeb開発技術の習得に勤しんでおりました。 そろそろ2年が経とうとしているので、技術のアップデートも兼ねて第2シーズンに入りたいと思います。nobrooklyn.hateblo.jpや…

Maven pluginを書いてみる

Maven使ってビルドをしているときにふと自前のMavenプラグインが欲しくなることありますよね? まぁ今時、必要そうなプラグインは一通りあるのであえて作りたくなるという時くらいしかないのかもしれないけれども。 というわけで本当のさわりだけやったので…

JSライブラリの依存管理

WebアプリケーションをJavaEEで作る時でもフロントエンドでJSのライブラリを使うのは普通にあることなので、Mavenみたいに依存管理をしたい。 npmやbowerなんかが代表的なJSのパッケージ管理ツールなわけでこれを使えばいいじゃないのという話なんだけれども…

WildflyでMANIFEST.MFの内容を取る

別にWildfly固有の話ではないと思うけれど、試したのがWildflyだったもので。 エラーの時の情報の一つとして出力するために、jarやwarにMANIFEST.MFを入れて、そこに書かれているバージョンとかをアプリケーション側で参照できるようにしたいなぁと思って調…

CDIでアノテーション使わないBean取得方法

CDIで@Injectアノテーションを使わずに、名前(文字列)でBeanを取得するにはどうするんだろうかとちょっと気になったので調べてみた。 Bean @Injectの時だとスコープだけ書いてあげたらインジェクションされるけど、名前で引くときは@Named付けないとダメっ…

簡単なHTTPクライアント

今更作る必要ないものではあるけれど、ちょっとしたテストをしたかったので作りました。 簡単なRequestとResponse用のクラスを作った、という感じです。 public class HelloServletIT { private class HttpRequest { private String url; private String par…

Wildfly SwarmでMicroservices on JavaEE

前回、Wildfly Swarmを使った記事を書きました。 当時はなぜかうまく動かったのですが、Githubのリポジトリから最新のソースを入手してビルドしたら動くようになりました。JAX-RSとServletFilterを使ったプログラムは難なく動きました。 @Path("hello") publ…