- 1. Couchbase Lite機能解説:クエリAPI② リテラル、識別子、式
- 2. Tomcatにて外部参照を行っている場合にweb.xmlの解析エラーが発生する
- 3. Mavenプロジェクトの全プロセスとFilter
- 4. Spring Boot+Resilience4jでお手軽に流量制御を行う(基本編)
- 5. SpringFox導入時のNullPointerException回避
- 6. Javaの自分用ドキュメント
- 7. Systemクラスのクラス変数について
- 8. SpringSecurity独自認証する
- 9. Java Silverに出題されるダウンキャストについて整理してみた
- 10. フロントエンドVue.jsとバックエンドJavaを同時にローカルで立ち上げて疎通確認
- 11. 【Java】カレンダー作成
- 12. Junitを使用した簡易テスト方法
- 13. String.formatを使って空白以外の文字列埋め
- 14. 「Java言語で学ぶデザインパターン入門」を読んで復習したいと思ったパターン5つ
- 15. VSCodeでJavaの開発環境を構築する(Mac向け)
- 16. Gradle で Azure Web Apps にデプロイする
- 17. Javaを使用してWordコメントの追加、返信、変更(置換)、削除する方法
- 18. ベル文字を出力して音を鳴らしてみた。
- 19. 10歳児がサイバセキュリティの専門家になるには
- 20. Javaを使用してPowerPointスライドをコピーする方法
Couchbase Lite機能解説:クエリAPI② リテラル、識別子、式
## はじめに
ここでは、Couchbase Lite 3.0の新機能であるクエリAPIについて解説します。
なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。
https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872
また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D刊)](https://www.amazon.
Tomcatにて外部参照を行っている場合にweb.xmlの解析エラーが発生する
Tomcatにて下記のようなエラーが発生している場合、
web.xmlで外部参照を利用している可能性があります。““
java.io.FileNotFoundException: Could not resolve XML resource [null] with public ID [null], system ID (後略)
““この場合web.xmlで外部参照を利用している可能性があります。
詳しくは下記ページをご覧ください。https://miyakoroom.blogspot.com/2018/09/servlet-webxml.html
ただ閉じた環境で利用するので別に外部参照してもいいよって場合、
context.xmlを以下のように書き換えます。
““xml
““““xml
““
Mavenプロジェクトの全プロセスとFilter
# プロジェクトの全プロセス
1.新しいMaven projectプロジェクトを作成します
2. WEB-INFフォルダ内web-xmlファイルを補足します
“`java
UserController
UserController
com.vanilla.controller.UserController
UserController
/user
“`
3.プロジェクト内必要なjarパッケージをpom.xmlファイルに追加されました
“`java
Spring Boot+Resilience4jでお手軽に流量制御を行う(基本編)
# はじめに
Spring Bootは超便利だが、標準ではRateLimiter(流量制御)の機能は搭載されていない。
Spring Cloud Gatewayを使えばお手軽に実装することも可能だが、少しレイヤが違うので、API Gatewayを使わずに流量制御したい場合にはちょっと過剰な構成となってしまう。Resilience4jはお手軽に流量制御を実装することができ、Spring Bootとの親和性も高いので、導入の仕方を確認してみよう。
# 依存関係定義
## Mavenの場合
Mavenを使う場合は、“`“`内に以下の依存関係を追加する。 “`xml:pom.xml
org.springframework.boot
spring-boot-starter-aop
org.springframewo
SpringFox導入時のNullPointerException回避
個人的にAPI自動生成を試してみたく、SpringFoxを導入してみました。
その際にちょっとだけ詰まったので備忘。## 前提
この記事を参考にSpringFox導入しました。
ありがとうございます!https://qiita.com/nooboolean/items/ee794ec4b30d9e93bf9f
## 問題のエラー
“`
Caused by: java.lang.NullPointerException: Cannot invoke “org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()” because the return value of “springfox.documentation.spi.service.contexts.Orderings.patternsCondition(springfox.documentation.RequestHandler)” is null
at springfox.documentation.s
Javaの自分用ドキュメント
“`
string.codePointAt(index)
“`
文字列からindex番目のコードポイントを10進数で返す。# Aを出力
“`
System.out.println(“\u0041”);
System.out.println((char)0x0041);
System.out.println((char)0b1000001);
System.out.println((char)65);
“`
https://recursionist.io/dashboard/course/2/lesson/123“`
(int)’A’
“`
char 型を int 型へ型変換を行うことで、ASCII 値を取得できる。(65)“`
String.charAt(index)
“`
文字列からindex番目の文字を抜き出す。“`
Calendar calendar = Calendar.getInstance();
“`
Calendarクラスは演算子newではなく、getInstance()メソッドでオブジェクトを作成する。
https://recurs
Systemクラスのクラス変数について
Systemクラスのクラス変数について
〜JavaAPIを読んで見るシリーズ〜 個人メモ用
以外に奥が深かったよSystem.out.printlnの巻Systemクラスにて宣言されているクラス変数について、色々わからなかったので調べてみました。
“`java:System.java
public final static InputStream in = null;
public final static PrintStream out = null;
public final static PrintStream err = null;
“`【疑問点1】
・System.out.println の変数 out には null が入っているはずなのに
なぜprintlnメソッドを呼び出せるのか
・変数outはfinal修飾子であり、nullで初期化しているのであとから変数を
代入することは不可能なはず?■final修飾子にあとから値を代入する例
“`java:TEST1_final.java
public class TEST1_final {
pu
SpringSecurity独自認証する
# SpringSecurity独自認証する
SpringSecurityを独自認証する設定をまとめておきます。
Filter→Provider(認証)の順で認証を行う### SpringSecurityの設定
Security全体の設定をまとめる。
“`java:WebSecurityConfig
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {/**
* 独自認証を設定
*/
@Configuration
protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {@Autowired
private WebAuthenticationProvider webAuthenticationProvider;@Override
public void
Java Silverに出題されるダウンキャストについて整理してみた
以前にJava Silverの資格の勉強をしていた時に、ダウンキャストに関する問題で苦労した記憶があったので、理解を深める意味も込めて要点を整理してみます。
## ダウンキャストとは
ダウンキャストとは、あるインスタンスや変数の型を継承関係にある子クラスの型に変更する処理になります。その名の通り親から子へと下がる(ダウン)型の変更(キャスト)をしているわけですが、型の変更をするだけでインスタンスの実体には変化がない点がポイントになります。したがって、どのような場合でもこのダウンキャストに成功する訳ではなく、問題ないケース、実行時例外が発生するケース、コンパイルエラーが発生するケースの3パターンがあり、どのパターンに当てはまるかについて試験で狙われることも多いのでそれぞれ整理していきます。
## 問題ないケース
“`Java
Object o = new Integer(1);
Integer i = (Integer) o;
“`1行目では、IntegerクラスのインスタンスをObjectクラス型の変数に代入しています。
*Objectクラスは全クラスに共通する最上位
フロントエンドVue.jsとバックエンドJavaを同時にローカルで立ち上げて疎通確認
# やりたいこと
– フロントエンドとバックエンドの疎通確認をローカルで行いたい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304445/1232bf95-8954-3a30-d373-ade208e68c60.png)# 状況
– フロントエンドとバックエンドは別々の言語で開発している
– フロントエンドはJavaScript、Vue.jsで実装
– バックエンドはJava、Springで実装、REST API
– 実行確認の際は、各プロジェクトを個別にlocalhost:8080で立ち上げて確認していた
– フロントエンドとバックエンドを同時に立ち上げて疎通確認をするにはどうしたらよいのかがわからなかったので調べて実行してみた# どうすればできそうか
– フロントエンドとバックエンドそれぞれを、異なるポート番号を指定して立ち上げる
– フロントエンド側からバックエンド側のAPIをたたく# やったこと
![image.png](https://qiita
【Java】カレンダー作成
1月までJavaをしばらく触っていなかったため、過去にRubyで作ったことのあるプログラムをJavaで作ってみることにしました。今回はカレンダー作成問題です。
[アウトプットのネタに困ったらこれ!?](https://blog.jnito.com/entry/2019/05/03/121235)
↑こちらの記事を参考にして問題を解いています。[【Ruby】カレンダー作成問題を解く](https://qiita.com/kim-shun/items/632799a0050bba84173c)
問題は、次のような形式で今月のカレンダーを表示させることです。
“`
April 2013
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
“`今回Javaで作ってみたプログラムはこちらです。今月だけでなく、他の年の他の月も確認したかったため、年と月の変数のみ切り分けました。
“`jav
Junitを使用した簡易テスト方法
ローカル実行確認ができない状況でロジックだけ確認したいとき。
## ①テストクラスを作成
配置場所は、テスト用のビルドパス・ソースフォルダーがあれば
その配下のどこか好きなpackageに。“`
package test;
import org.junit.Test;public class SampleTest {
@Test
public void test() {
// ここに処理を書く
System.out.println(“Test”);
}
}
“`## ②JUnit実行
あとは処理を書いてJUnit実行すればコンソールに出力される。
String.formatを使って空白以外の文字列埋め
簡単に見つからなかったのでメモ。
これ以外にいい方法があれば教えてください。
# **末尾に「#」を付与し12桁にしたい場合**“`
String.format(“%-12s”, “Test”).replace(” “, “#”);
“`いったん空白をセットし、
replaceメソッドで空白⇒”#”に書き換えています。String.formatで直接”#”埋めすることができなかったです。
エスケープ「%」足しても駄目だったのでこちらの方法を使用しました。
「Java言語で学ぶデザインパターン入門」を読んで復習したいと思ったパターン5つ
## はじめに
新卒1年目エンジニアの私が[増補改訂版 Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/dp/B00I8ATHGW)を読んで「これは使えそう。勉強になった。復習したい。」と思ったデザインパターンを5つ紹介します。
結論から言うと、以下の5つのデザインパターンです。
– Template Methodパターン
– Prototypeパターン
– Abstract Factoryパターン
– Decoratorパターン
– Mediatorパターンでは、それぞれ紹介していきます。
## Template Methodパターン
Template Methodパターンは、スーパークラスで処理の枠組みを定
VSCodeでJavaの開発環境を構築する(Mac向け)
Java言語の勉強をしようとして、VSCodeで開発環境を構築するのに少し手こずってしまった…
とりあえず構築はできて、(今のところ)問題なく学習をやれてるので記事にしようかと思います。
あくまで自分がやった通りの手順を書いていきます。# その前に
## Javaの開発に必要なツール
①ソースコードの作成と編集(今回は`VSCode`を使用)②コンパイルによる変換(Javaコンパイラ)
**コンパイルとは**
ソースコードはそのままだと実行できないので、まずコンパイルと言う処理を行い、ソースファイルをクラスファイル(拡張子.class)に変換します。
クラスファイルにはソースコードの各命令をコンピュータが実行しやすいように変換したバイトコードが中に詰まっている。③完成プログラムの実行(Javaインタプリタ)
バイトコードではまだ実行ができないので、**インタプリタ**というソフトウェアに対してバイトコードの変換と実行を依頼します。インタプリタ内の`JVM(Java Virtual Machine)`という仕組みでバイトコードを読み込みながらマシンコードに翻訳すると共にCPU
Gradle で Azure Web Apps にデプロイする
# Gralde で Azure Web Apps にデプロイする
Gradle を使って Azure Web Apps にデプロイする必要があったので、その覚え書きです。いつもは maven を使っている Gradle 初心者です。
リポジトリは以下で公開されており、
https://github.com/microsoft/azure-gradle-plugins
プラグイン情報は以下から参照できます
https://plugins.gradle.org/plugin/com.microsoft.azure.azurewebapp
GithubのほうはReleaseタグが真面目に切られていない気がしますが、執筆時点での最新版は、 Dec 2021 にリリースされた `1.2.2` です。 Maven プラグインと比べても歩調を合わせてアップデートされているようには見えます。
## 設定方法
ゼロからやろうとすると、色々説明することが多いので、すでに az コマンドサブスクリプションに繋がっている前提で話しを進めます。
細かい話は、Github Wiki に書かれて
Javaを使用してWordコメントの追加、返信、変更(置換)、削除する方法
Wordコメントは、特定のドキュメントのコンテンツに注釈を付けるためによく使用されるツールまたは方法であり、問題の説明とマーク修正の役割を果たします。この記事では、Wordのコメントを操作する方法を紹介します。
1.コメントの追加:コメントにテキストを追加し、コメントに画像を挿入します。
2.コメントに返信します。
3.コメントの変更または置換:コメントのテキストコンテンツをテキストに置き換え、コメントの画像をテキストに置き換え、コメントの画像を画像に置き換えます。
4.コメントの削除:指定されたコメントのすべてのコンテンツを削除し、指定されたコメントの指定されたコンテンツを削除します。
使用したツール:Free Spire.Doc for Java(無料版)
JARファイルのインポート(参照):方法1:公式Webサイトから[jarパッケージ](https://www.e-iceblue.com/Download/doc-for-java-free.html)を入手し、解凍します。
インポート手順1:プログラムに新しいディレクトリディレクトリを作成し、コントロールパッケ
ベル文字を出力して音を鳴らしてみた。
授業で正規表現の学習中に、ベル文字というモノがあることを知ってしまった。
コレは鳴らしてみないと# ベル文字とは
その昔、テレタイプなどの通信機器で、通信相手先の端末のベルを鳴らすために送信した制御文字(¥a)のようです。
さすがのオッチャンでも、テレタイプは現物見たことないので、よう解りません。https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AB%E6%96%87%E5%AD%97
# では、鳴らしてみます
といっても、ベルが鳴るわけではなく、システムのアラート音(通知音)が鳴るだけですけどね。
## まずJava~~~Java:Bell.java
class Bell{
public static void main(String[] args) {
System.out.print(“\007”);
}
}
~~~
`javac Bell.java`
`java Bell`鳴りました。## シェルスクリプト
Macなので Z Shellです
“`bash:Bell.sh
#!/bin/zsh
echo
10歳児がサイバセキュリティの専門家になるには
将棋のプロに10歳でなれるように、サイバセキュリティの専門家も10歳でなれるだろうという仮定のもとに、10歳児がサイバセキュリティの専門家になるにはどうするとよいかを示す。
将棋でも、ピアノでも、10歳で専門家になるのに、特別の教育方法はない。
バイオリンは、小さいバイオリンから始めてという、小さい子供用の教育方法がある。
囲碁は十九路盤で行うのが正式。初心者用に、九路盤と十三路盤がある。これは子供用というよりは初心者用で、バイオリンとは少し違う。
サイバセキュリティの専門家は、どの方法だろうということを考える。
どちらも提案してみればいいだけかもしれない。
# 目次
1. 子供用の入り口を設ける方法
2. 子供用の入り口を設けない方法
2.1 Wireshark
2.2 ネットワークプログラミング
2.3 docker(じゃなくていいけど)
3. 自分の頭で考える
4. 通信関連技術結果として、1の入り口から入っても2の要素は役立つ。
2の入り口から入っても1の要素は役立つ。
そんな趣旨で、10歳児と取り組んでいただけると幸いです。一番大事な事は自分の頭で考える
Javaを使用してPowerPointスライドをコピーする方法
この記事では、Javaプログラムを使用してPowerPointスライドをありのままコピーする方法を紹介します。ここでコピーするケースを2つ紹介します。
・同じスライドドキュメント内でコピーする
・異なるスライドドキュメント間でコピーする**使用したツール:Free Spire.Presentation for Java(無料版)**
JARファイルの取得とインポート:
方法1:jarファイルパッケージは、E-iceblueの公式Webサイトから[ダウンロード](https://www.e-iceblue.com/Download/presentation-for-java-free.html)できます。ダウンロード後、ファイルを解凍し、libフォルダー内のSpire.Presentation.jarファイルをJavaプログラムにインポートします。次のインポート効果を参照してください。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/515c1fed-23a4-e4ea-d