20210908のJavaに関する記事は5件です。

CouchbaseとSwaggerによるRESTful Webサービス構築⓪ サンプルアプリケーション紹介

 はじめに 本稿では、Couchbase Labsにより公開されているサンプルアプリケーションを紹介します。 サンプルアプリケーションの構成を下に図示します。アプリケーションを動かしてみるためには、Dockerが利用できることが必要になります。 クイックスタート githubからリポジトリを取得します。ディレクトリを移動します。 git clone https://github.com/couchbaselabs/try-cb-java.git cd try-cb-java 移動先のディレクトリで、docker-composeを以下のように実行します。 docker-compose up Couchbase Server http://localhost:8091/にアクセスすると、以下のようなログイン画面が表示されます。以下の認証情報を使ってログインすることができます。 アカウント名:Administrator パスワード:password アプリケーションフロントエンド http://localhost:8081にアクセスします。下の画面が表示されます。 二つのリンクが存在しますが、それぞれへ以下のような画面へ進みます。 URLを見るとわかりますが、tenant_agent_00とtenant_agent_01という二つのテナントを模したものになっています。 ここでは、 CB Travelを選択して進みます。 初回利用時には、ユーザーが存在していないので、ユーザー名とパスワードを入力して、[Register]をクリックします。 以下のような画面が表示されます。 REST APIサービス http://localhost:8080にアクセスします。下の画面が表示されます。 「Learn the API with Swagger, interactively」リンクを押下します(または、 http://localhost:8080/apidocsにアクセスします)。下の画面が表示されます。 アプリケーション概要 このアプリケーションは、ユーザーが空港と日付に基づいて飛行ルートを検索して選択できるフライトプランナーです。 また、ユーザーはキーワードを使用してホテルを検索できます。 データ・モデル サンプルデータセットの詳細については、Travel App DataModelを参照してください。 アプリケーション終了 アプリケーションを終了するには、ターミナルでControl+Cを押し、docker-composeがコンテナーを正常に停止するのを待ちます。 Dockerからマニュアル実行への切り替え 上では、すべてをDockerで実行していましたが、データベース、フロントエンド、WEB APIサーバーをそれぞれ、マニュアル実行に切り替えることができます。。 マニュアル起動への切り替えのために、mix-and-match.ymlが提供されています。 データベースのマニュアル実行 Couchbase Serverをマニュアル実行する場合は、travel-sample バケットのセットアップでバージョン7.0.0以降が必要になります。 また、「hotels-index」という名前の旅行サンプルバケットに全文検索インデックスを作成する必要があります。これは、次のコマンドで実行できます。(後述するように、自動作成を選択することもできます) curl --fail -s -u <username>:<password> -X PUT \ http://<host>:8094/api/index/hotels-index \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d @fts-hotels-index.json マニュアル実行中のCouchbase Serverを使用する場合、データベースに関する詳細を次のように記します。 CB_HOST=10.144.211.101 CB_USER=Administrator CB_PSWD=password docker-compose -f mix-and-match.yml up backend frontend Dockerイメージは通常と同じチェックを実行し、hotels-indexが存在しない場合は作成します。 Web APIサーバーのマニュアル実行 Dockerイメージを使わずに、Javaアプリケーションを自分で実行して、必要とあれば変更を加えるなどして、Couchbase APIの機能を試してみることもできます。 実行には、以下の要件があります。 Java 8以降(Java 11を推奨) Maven3以降 依存関係をインストールします。 mvn clean install 新しいCouchbase Serverイメージに対して初めて実行するときは、提供されている wait-for-couchbase.shをラッパーとして使用して、すべてのインデックスが確実に作成されるようにすることができます。 docker-compose -f mix-and-match.yml up db export CB_HOST=localhost CB_USER=Administrator CB_PSWD=password ./wait-for-couchbase.sh echo "Couchbase is ready!" mvn spring-boot:run -Dspring-boot.run.arguments="--storage.host=$CB_HOST storage.username=$CB_USER storage.password=$CB_PSWD" 既存のCouchbase Serverを実行して正しく構成している場合は、次のコマンドを実行できます。 mvn spring-boot:run -Dspring-boot.run.arguments="--storage.host=localhost storage.username=Administrator storage.password=password" 最後に、サンプルのフロントエンドVueアプリケーションが変更に対してどのように機能するかを確認したい場合は、次のコマンドで実行します。 docker-compose -f mix-and-match.yml up frontend フロントエンドのマニュアル実行 Dockerを使用せずにフロントエンドコンポーネントを手動で実行するには、こちらのガイドに従ってください https://github.com/couchbaselabs/try-cb-frontend-v2 参考情報 上記のリポジトリ中には、「Couchbase 4.0」という記述が見えますが、現在の内容は、Couchbase Server 7.0に基づいています。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

1分で、macのjavaバージョンを切り替え

会社では定期的に欲しいノートパソコンに交換してくれますが、私はMac Proに交換してもらいました。openjdkを使うので問題ないと思っていたのですが、legacy案件の中ではjavaが1.7や1.8でないと動かない場合がありました。その時、バージョン切り替えしながら分かった近道を皆さんと共有したいと思います。 環境 シェルはzshで設定・確認します。 実施 javaバージョン確認する javaのバージョンを確認してみましょう。 zshでは-v, --version , -V , --VERSIONなどはNGです。 java -version where java # 居場所を確認 javaのパスを通しましょう Windowsではパス登録が簡単だったが、なんだかMacでは環境変数が保存されない それで見つけたのが下記の方法でした。ちなみにRCはRun Commandの略語です。 一言で、シェルで設定ファイルです。 1. エディターが開く open ~/.zshrc 2. javaの指定しよう 記載はこんな感じ export JAVA_HOME=`/usr/libexec/java_home -v "1.8"` PATH=${JAVA_HOME}/bin:${PATH} 3. 修正をシステムに反映 sourceはbash系でも使われるコマンドでして、現在の設定の即時で適用するコマンドです。 RCファイルの設定後には一度シェルを閉めて開き直すように案内される場合もありますが、 基本的にはこれで開かなくてもいいはずです。 source ~/.zshrc 4. 結果確認 -versionです。忘れないで…。 java -version 結論 基本中の基本ですが、たまにしか行わないのでハマる場合があります。 今後は記事の内容を補足して他の言語や設定も追加していきたいと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Java Silver 4章 繰り返し文と繰り返し制御文

while文 while(条件式){ 処理文(条件式がTrueであり続ける間繰り返される) } {}を省略する場合、処理文は下1行のみ public static void main(String[] args) { int num = 0; while(num > 0){ System.out.print(num + " "); //なにも出力されない num--; } } do-while文 do{ 処理文; }while(条件式); {}を省略する場合、処理文は下1行のみ public static void main(String[] args) { // while の場合 int count = 5; while(count != 5 && count > 0){ System.out.println("while : count = " + count); count--; } // do-while の場合 count = 5; do{ System.out.println("do-while : count = " + count); count--; }while(count != 5 && count > 0); } whileの場合、条件式によっては一度も処理文が実行されない while と do-whileの違いは処理文と判定式の順序 for文 for(式1; 式2; 式3;){  処理文; } 式1~3のそれぞれは省略可能 ただし式2を省略すると、条件が常にTrueとなり無限ループ public static void main(String[] args) { int count1 = 0; for(; count1 < 5 ; count1++){ // 式1を省略した例 System.out.print(count1 + " "); } System.out.println(); //改行 for(int count2 = 0 ; count2 < 5 ; ){ // 式3を省略した例 System.out.print(count2++ + " "); // 処理文内でカウンタ変数の更新 } } 式の条件 式1 ・文でないといけない ・カンマ区切りの宣言でない2つの式を入れられる ・宣言式は1つのみ 式3 ・カンマ区切りの宣言でない2つの式を入れられる 拡張for文 配列の全要素を順番に取り出して処理ができる for(変数宣言: 参照変数名){  処理文; } public static void main(String[] args) { // 配列の宣言 char[] array = { 'a', 'b', 'c', 'd', 'e' }; // 配列arrayの全要素を順番に取り出し、出力する for(char c : array){ // 拡張for文で処理する場合 System.out.print(c + " "); } System.out.println(); //改行 // for文で処理する場合 for(int count = 0; count < array.length ; count++){ System.out.print(array[count] + " "); } } 制御文のネスト ネスト(入れ子):制御文の内部に制御文を設置することも可能 //外部のfor文にて0からループの度に+1づつ増える変数iに対し //内部のif文にて4で割った余りが0の場合のみprintlnで出力している public static void main(String[] args) { // 外側の制御文 for for(int i = 1; i < 10 ; i++){ // 内側の制御文 if if((i % 4) == 0){ System.out.println(i + " は 4 の倍数です。"); } } } 繰り返し制御文 繰り返し文の中で判定条件がtrueでも特定の条件下で繰り返し処理から抜けい場合 ・break文 ・continue文 を使用する break文 public static void main(String[] args) { for(int i = 0; ; i++){ //式2が省略されているので無限ループ if(i == 3){ break; // breakによりfor文から抜ける } System.out.println("i = " + i); } System.out.println("for文の後の処理"); } breakのポイントをif文の条件式で判定している cntinue文 public static void main(String[] args) { for(int i = 1; i < 10 ; i++){ if((i % 3) == 0){ System.out.println("処理をスキップします"); continue; // continueによりfor文の式3へ制御を移す } System.out.println("i = " + i); } System.out.println("for文の後の処理"); } continue文は残りの処理をスキップし、次のループを続ける。 breakはループの全行程を抜け continueはその1度文のループを抜ける ラベル ネスト構造の繰り返し文から抜けたいときに使用 public static void main(String[] args) { loop1: // ラベルloop1を指定 for(int x = 0; x < 3 ; x++){ for(int y = 0; y < 3; y++){ System.out.println("x = " + x + " y = " + y); if(x == 1 && y ==1){ System.out.println("break文の実行"); break loop1; // ラベルloop1にbreak } } } System.out.println("------------------------------"); loop2: // ラベルloop2を指定 for(int x = 0; x < 3 ; x++){ for(int y = 0; y < 3; y++){ System.out.println("x = " + x + " y = " + y); if(x == 1 && y ==1){ System.out.println("continue文の実行"); continue loop2; // ラベルloop2にcontinue } } } } x = 0 y = 0 x = 0 y = 1 x = 0 y = 2 x = 1 y = 0 x = 1 y = 1 break文の実行 ------------------------------  //breakで全てのループから抜けfor文に戻ることはない x = 0 y = 0 x = 0 y = 1 x = 0 y = 2 x = 1 y = 0 x = 1 y = 1 continue文の実行 //continuで全てのループから抜けた後、再び外側のfor文の判定式へ //x,yの値も継続しており、結果的にcontinue以下の内側ループをスキップした形 x = 2 y = 0 x = 2 y = 1 x = 2 y = 2 第4章の感想 なじみのある構文はjavaでも複雑なルールがなくてよかった
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[SpringMVC]値を正規表現でバリデーションする

Tipsです。手短に。 @Patternアノテーションを利用して、クラスプロパティの値を正規表現でチェックする方法を紹介します。 よかったら いいね だけお願いします。 手順 build.gradleにライブラリを追記 フィールドにアノテーションを追記 build.gradleにライブラリを追記 build.gradle dependencies { implementation 'org.hibernate.validator:hibernate-validator' } フィールドにアノテーションを追記 Sample.java import javax.validation.constraints.Pattern; public class Sample { @Pattern(regexp="^[a-zA-Z0-9]{3}", message="3文字でおねシャス") String value; ... 他のアノテーションも知りたい こちらの投稿が大変参考になります。 Spring Frameworkで使用できるBean Validationアノテーション一覧 - ぺんぎんらぼ 参考 https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator/6.2.0.Final タグ Spring SpringBoot アノテーション Annotation Bean Validation バリデーション 正規表現 チェック 方法 フォーマット 検証 プロパティ フィールド
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

#3 Javaマスターへの道 1

はじめに 大学1年生です。 学校でJava のプログラミングについて学習しているので復習も兼ねて投稿していきます。 これから勉強するって人は一緒に頑張っていきましょう! 目次 1.プログラミングとは 2.Javaのプログラム 3.プログラムの要素 4.バグ 1.プログラミングとは プログラムで伝える命令は、コンピュータが解釈できる文法をもつプログラム言語で書く必要があります。この文法を学ぶことがプログラミングを習得することになります。 コンピュータは命令がないとまったく動きません。コンピュータに何か仕事をしてもらうには命令の羅列であるプログラムを作る必要があります。 プログラムを作ることをプログラミングといいます。 2.Javaのプログラム Javaのプログラムは以下のような形をしています。 package cp1; import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ //ここにプログラムを書く } } public(パブリック)、static(スタティック)、void(ボイド)、main(メイン)と何やら最初から正体不明の英語みたいなものが並んでいますが、ほとんどはおまじないです。プログラミングに「おまじない」はつきものなのでそんなものかと無視しておきましょう。 今分かっておいて欲しいのは //ここにプログラムを書く と言う部分にプログラミングを書くということです。 ここにはプログラミング言語の「文」を書きます 文は記憶、演算、制御などの命令を伝え、最後にセミコロン;をつけます。 ヒトコトmemo プログラムの中では()も{}も[]も使いますがそれぞれ別の意味があり、勝手に別のカッコで置き換えてはいけません。開けたカッコは対応したカッコで閉じる必要です。 3.プログラムの要素 プログラムの基本要素を簡単に分類すると次の5つになるといわれています 1.出力 コンピュータ内部データを表示させたり、他のデバイスに移すことを出力といいます。 ヒトコトmemo #4で出力について学習します。主にprintlnという命令を使いますが、Javaではprintlnのようなまとまった処理を指示する命令をメソッドといます。 2.入力 コンピュータにデータを読み込ませることを入力といいます。 入力は#5で扱う予定です 3.記憶 データをコンピュータに覚えさせることが記憶です。記憶は 変数 というものを用意し、 変数=式; という形の代入文を使います。 4.演算 演算とは加減乗除のほか、各種の数値計算、文字列の操作、データの検索、データの並び替えのことをいいます。このうち加減乗除には+ー*/などの記号が使われますが、このような記号を演算子といいます。 一方それより複雑な計算の場合 Math.abs(num)のような命令、即ちメソッドを使うこともありますし、演算子やメソッド、その他の制御を組み合わせて演算を行うこともあります。 5.制御 プログラミングは通常打ち込まれたプログラムを上から下へ順番に実行しますが、条件判断によって枝分かれしたり、繰り返したりします。Javaにはその繰り返しや枝分かれを実現するために構文が用意されています。 4.初めてのプログラミング プログラミングについての基礎知識を身につけたらいよいよプログラムを書いてみます public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ System.out.print("こんにちは 私の名前はxxxxです");//プログラム本文 } } もちろん xxxx の部分は自分の名前で置き換えてください。書けたら実行してみましょう。 実行すると、「こんにちは 私の名前はxxxxです」と表示されると思います。このプログラムが私のプログラム第1号ですね。 上の見出し2つ目でもでてきましたが、プログラム中にスラッシュ記号が二つ // 現れたら、その記号から後ろはコメントです。コメントはプログラムの本文や実行に関係しないメモや説明のことでよくプログラムの解説のためにコメントを書き加えることがあります。 プログラムを後から見返したときの理解の助けになることもあるので書く習慣をつけましょう。 ヒトコトmemo プログラミング言語を勉強しはじめたとき、最初に書くプログラムはどのプログラム言語でも大概画面に「Hello world」と表示させることが一般です。 5.バグ プログラムの間違いのことをバグとよびます。コンピュータは1文字の間違えも許してくれません。例えば文字列や数字を表示させる printlm を printIm と打ち込んでしまったり、 ; が : と書いた場合全てバグとなり、コンピュータは正常に動作せず、プログラムが実行できなくなります。 こういったエラーが起きた場合は次のことに注意しましょう。 1.文字の確認 数字のいち「1」、小文字のエル「l」、大文字のアイ「I」や、数字のゼロ「0」、大文字のオー「O」、小文字のオー「o」のように区別がつきにくいものがあります。よく確認しましょう。 2.エラーメッセージの確認 エラーが発生した場合なにがいけなかったのかコンピュータがメッセージとして表示してくれます。もしメッセージの意味が分からなくてもコピペしてインターネットで調べると解決策を知ることができます。 3.プログラムの意味を確認 どれだけ熟練のプログラマーでも達人のようなシステムエンジニアでもバグを生んでしまうことはあります。バグに対する対処もスキルの一つです。バグを直すことはデバッグとよびます。 デバッグ能力もプログラミング能力のうちということですね。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む