- 1. Couchbase Server Java SDK解説:分散トランザクション〜トランザクションライフサイクル
- 2. あったらいいなと思っていたスキルマップアプリをVueとGoで作ってみた
- 3. Couchbase Server Java SDK解説:分散トランザクション〜ログとトレース
- 4. Couchbase Server Java SDK解説:分散トランザクション 〜N1QLクエリ
- 5. 【logback】TimeBasedRollingPolicy以外とprudentモードを共存させ、単一ログファイルに複数フォーマットのメッセージを出力する(タイトルに偽りあり)
- 6. Javaプロジェクトの簡単な記録(各階層コードの作成)
- 7. Couchbase Server Java SDK解説:分散トランザクション〜クリーンアッププロセス(設定と監視)
- 8. HelloWorldと慣習(メソッド名とクラス名)
- 9. Java初学者が感じたSpring Bootと他の言語との違い~ORM~
- 10. 【更新/解決】Android12にしたら、FLAG_IMMUTABLEまたはFLAG_MUTABLEエラーでアプリが起動しない
- 11. SpringBootのGradleでWebjarsを利用しBootstrapを使う方法
- 12. 【Kotlin】value classをJava Reflectionのみでインスタンス化する
- 13. BufferedReaderはJavaでどのくらいの速さで行を読み取ることができますか?
- 14. Couchbase Lite機能解説:競合解決概要
- 15. nullをreturnしないメモ
- 16. 【Java】二次元配列でドット絵を作ってみた
- 17. 【Java】Byte配列を無限に連結したい
- 18. コンパイルしたJavaのバージョンとデプロイするJavaのバージョンがズレているとエラーになる話
- 19. インスタンスメソッド、クラスメソッドの違いについて
- 20. バージョン管理の各方法の特徴と違いに関する備忘録(初心者の所感)
Couchbase Server Java SDK解説:分散トランザクション〜トランザクションライフサイクル
## はじめに
Couchbase Serverの分散トランザクションにおけるトランザクションライフサイクルは、基本的にRDB/SQLと同様のものとして理解することができますが、アプリケーション開発において利用するにあたって、独自の考慮点もあります。
– Couchbase Serverにおけるトランザクションは、クラスターへの処理リクエスト実行レベルで選択することのできるオプションです。つまり、アプリケーションには、トランザクションアクターと非トランザクションアクターが存在します。
– また、このことを別の視点から言い換えると、Couchbase Serverにおけるトランザクションは、SDK/クライアントが主体となって実現される機能であるといえます(中央集権的なプロセスは存在せず、そこから起因する性能影響もありません)。
## トランザクションライフサイクル
### トランザクションの初期化
`Transactions`オブジェクトの構築により、バックグラウンドプロセスが自動的に実行され、スレッドプールを含むいくつかのリソースが使用されます。
そのため、アプリケーション
あったらいいなと思っていたスキルマップアプリをVueとGoで作ってみた
# 作ってみたもの
作ったWebアプリは [Graphyee](https://graphyee.com) と名付けました。
技術と技術は関連しているものなので、「スキルマップをグラフ構造で表現できたら分かりやすくて面白いかな」と思いついたのが経緯です。
まだβ版としていますが、一旦使える感じになったのでノリと勢いで公開してみました。こんな感じで [サンプル](https://graphyee.com/sample/1) は誰でも使えます。
:::note warn
サンプルは実績を入力しても保存できないのでご注意下さい。
:::![sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2201222/57ea423b-20f5-3dcf-8370-b8c19134a8d5.gif)
ユーザ認証すると、より細かい [スキルマップ](https://graphyee.com/graph/1) が使えます。
:::note info
ユーザ認証していただければ、入力した実績が
Couchbase Server Java SDK解説:分散トランザクション〜ログとトレース
## はじめに
Couchbase Serverの分散トランザクションライブラリーにおける、ログとトレースについて、解説します。
## ログ
トラブルシューティングを支援するために、各トランザクションはログエントリのリストを維持します。そして、次のようにエラー発生時にログに記録できます。
同期APIの場合:
“`JAVA
} catch (TransactionCommitAmbiguous e) {
// The application will of course want to use its own logging rather
// than System.err
System.err.println(“Transaction possibly committed”);for (LogDefer err : e.result().log().logs()) {
System.err.println(err.toString());
}
} catch (TransactionFailed e) {
Couchbase Server Java SDK解説:分散トランザクション 〜N1QLクエリ
## N1QLクエリ
Couchbase Server 7.0以降、N1QLクエリはトランザクションラムダ内で使用できるようになりました。N1QLクエリとKey-Value操作とを同じラムダ内で組み合わせて利用することができます。## トランザクションの開始
Couchbase Serverでは、SDK利用に限らずに見た場合、トランザクションを開始するには、トランザクションライブラリーを使用する方法と、Queryサービスへのリクエストとして、`BEGIN TRANSACTION`を使用する方法の2つがあります。後者の方法は、CLI、REST API、またはWebコンソールUIのクエリワークベンチを使用する場合を想定されています。アプリケーションでは、トランザクションライブラリーを使用します。トランザクションライブラリーは、下記の利点を持ちます。– エラーと再試行を自動的に処理します。
– これにより、Key-Value操作とN1QLクエリを自由に組み合わせることができます。
– 自動的に`BEGIN TRANSACTION`、`END TRANSACTION`、`COMMIT`
【logback】TimeBasedRollingPolicy以外とprudentモードを共存させ、単一ログファイルに複数フォーマットのメッセージを出力する(タイトルに偽りあり)
なぜこの記事を書くに至ったかの経緯をまず書いているので
どう対応したかは最初に***[ここ](https://qiita.com/o________o/items/c17a63f8d82d8dcb6557#%E6%9C%AC%E9%A1%8Ctimebasedrollingpolicy%E4%BB%A5%E5%A4%96%E3%81%A8prudent%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E5%85%B1%E5%AD%98%E3%81%95%E3%81%9B%E3%82%8B)***から読んで見てください。# ことの始まり
log4jの設定をlogbackに移行していたら以下のような設定に出会った。
– 2つファイルアペンダーがあるが、layout以外は全て同じ設定
– それぞれのアペンダーは異なるロガーがrefで参照している
つまり目的は– `1つのログファイル`に`異なるロガーから異なるフォーマットのメッセージ`を出力したい
– バックアップファイル名は`ログファイル名.n`の連番でつけたい([log4j.RollingFileA
Javaプロジェクトの簡単な記録(各階層コードの作成)
###各階層コードの作成
####1.Controller:対外暴露のAPIインターフェース
-クラスコメント
-@RertController
-@Request Mapping(「xxxx」)
-方法/属性コメント
-@Autowired
-@PreAuthorze
-@GetMapping
-@PostMapping
-@PutMapping
-@DeleteMapping
-Swaggerコメント
####2.Service:システムで他の種類の呼び出しのための方法は、自動注入によって使用されます。
####3.Domain:エンティティ類(一般的にはデータベーステーブル構造に対応する必要があります)
-Lombookプラグイン
#####改造前
“`
package comp.ruoyi.junnior.domain;import org.apache.com mmons.lang.3 builder.ToStringBuider;
import org.apache.com mmons.lang.3 builder.ToStering Style;
import
Couchbase Server Java SDK解説:分散トランザクション〜クリーンアッププロセス(設定と監視)
## はじめに
下記の記事で触れたように、Couchbase Server Java SDKには、分散トランザクションを実現するにあたり、クリーンアップメカニズムが含まれます。
https://qiita.com/yoshiyuki_kono/items/2d428b16b224b8c01239
まず、上記の記事でも触れた基本的な内容を振り返るところから始めます。
## クリーンアップの基本
失敗したトランザクションが、他のトランザクションを無期限にブロックしないようにするため、Couchbase SDKは、「クリーンアップ」と呼ばれるメカニズムを提供します。トランザクションは、失敗が発生したときに、まず自分自身でクリーンアップしようとします。
### 非同期クリーンアップ
アプリケーションのクラッシュなどの原因で、そのトランザクション自身によってクリーンアップされなかった、「ロスト」トランザクションが作成される状況があります。そのためクリーンアップメカニズムには、`Transaction`オブジェクトの作成時に開始される非同期クリーンアップのためのバックグラウンドプ
HelloWorldと慣習(メソッド名とクラス名)
## はじめに
自分を含め、初学者に向けて書きます。## 記事の構成
– JavaでHelloWorldの表示
– Javaにおけるクラスやメソッドの名付け慣習## HelloWorld
“`java
class HelloWorld{
public static void main(String[] args){
System.out.println(“HelloWorld”);
}
}
“`1. 以上のコードをファイル名「HelloWorld.java」として保存。
1. コマンドプロンプトを立ちあげ上記ファイルを保存したディレクトリに移動
1. コンパイル→javac ファイル名
– ファイル名では拡張子(.java)も忘れずに
1. 実行→java ファイル名
– ここでのファイル名はコンパイル後の.classのもので、拡張子はいらない“`
cd ディレクトリ名 //保存したディレクトリへ移動
javac HelloWorld.java //コンパイル
java HelloWorld
Java初学者が感じたSpring Bootと他の言語との違い~ORM~
### 今回のお題
今回は、私が感じたSpring Bootと他の言語との違いについて書きます。メインテーマはORMですね。
タイトルにある通り、私はJava自体の初学者ですが、同じようにJavaの学習を始めたばかりの方、あるいは今後自分が他の言語の学習を始める際の参考になればという思いで残しておきます。
### 筆者の学習歴
プログラミング学習歴は4ヶ月程度。
スクールではRuby on Railsを、独学ではPHP Laravelを学習し、それぞれアプリらしきものの作成経験はあり。Javaについては1ヶ月ほど前から学習を開始。
現在は書籍を見ながらSpring Bootアプリの作成手順を学習中。
### 本記事のターゲット
冒頭でも少し触れましたが、本記事は主に「既に学習済みの言語とSpring Bootの違いに戸惑っている方」向けに作成しました。書籍やネットなどで学習をしていて、「なぜこのようなやり方をしなければならないのかが分からない。」、「他の(自分の知っている)言語と同じような手順でやってはダメなのか。」と言った疑問が湧くことがあるかと思いますが、それらの解決
【更新/解決】Android12にしたら、FLAG_IMMUTABLEまたはFLAG_MUTABLEエラーでアプリが起動しない
#概要
2021/10/20にGoogle Pixel系(Pixel3以降)にAndroid12(Android S、 API31)が配布されたので遅ればせながら、自作アプリの動作確認をしてみた。
が、、、、起動さえしないという恐怖の状況に陥ったことから、原因を調査してみる。#エラーの内容
手持ちのPixel3 XLにAndroid12をインストールして、開発者モードを有効にして、エラー原因を見ていく。
そうすると、どうもこんなエラーで落ちているようなのだ。“`
E/AndroidRuntime: FATAL EXCEPTION: pool-16-thread-1
Process: com.sekai.tsukuru.app.quickmatome, PID: 25032
java.lang.IllegalArgumentException: com.sekai.tsukuru.app.quickmatome: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or
SpringBootのGradleでWebjarsを利用しBootstrapを使う方法
#はじめに
今回は、SpringBootのGradleプロジェクトでWebjarsを利用してBootstrapを使用する方法を書いていきます。MavenでのWebjarsを用いてBootstrapのバージョン管理をする記事が多くあったので、Gradleを使用している人の参考になればいいかなと思います。
#build.gradle
“`java
dependencies {
implementation(‘org.webjars:jquery:3.5.1’)
implementation(‘org.webjars:bootstrap:4.5.3’)
implementation(‘org.webjars:webjars-locator:0.40’)
}
“`
`dependenciesタグ`に上記3つをimplementationしてあげるだけです。あとは、Bootstrapを使いたいHTMLファイルで必要な記述をするだけです。
##html
“`html
【Kotlin】value classをJava Reflectionのみでインスタンス化する
# TL;DR
– `value class`はインスタンス化のために幾つかの`static`メソッドを生成する
– 生成されたメソッドを`constructor-impl` -> `box-impl`の順で呼び出すことで、`value class`を`Java Reflection`のみでインスタンス化できる
– 付与したアノテーションは`impl`メソッドにも付与される# やること
以下のように、`init`ブロックに入力チェックが有るような`value class`について、`Class`を取得できている状況から、`Java Reflection`のみで、入力チェックを機能させた上でインスタンス化する方法を紹介します[^with-reflect]。 “`kotlin
@JvmInline
value class Value(val value: Int) {
init { if (value == 1) throw TestErr }
}object TestErr : RuntimeException(“試験用エラー”)
“`[^wit
BufferedReaderはJavaでどのくらいの速さで行を読み取ることができますか?
[前回の投稿](https://qiita.com/chenyh/items/ed86364a8bdb6c635a4d)で、C++のgetline関数がテキストファイルの行をどれだけ速く実行できるかを尋ねました。答えは約2GB / sで、確かに1 GB / sを超えていました。これは、いくつかの最高のディスクドライブやネットワーク接続よりも低速です。ソフトウェアが行に「ただ」アクセスするだけでよいことはめったにないことを考慮に入れると、ディスクやネットワークにバインドされるのではなく、テキストファイルの処理がプロセッサにバインドされるシステムを簡単に構築できます。
Javaはどうですか?Javaでは、テキストファイルの行にアクセスする標準的な方法は、BufferedReaderを使用することです。システムコールを回避するために、多くのテキスト行を含む大きな文字列を作成してから、文字列の長さを記録するだけの非常に単純な処理関数を呼び出します…
“`java
StringReader fr = new StringReader(data);
BufferedReader bf = n
Couchbase Lite機能解説:競合解決概要
## はじめに
本稿では、Couchbase Liteを用いた開発における競合解決の概要を整理します。
実際の実装における、注意点などは、参考情報に掲載したドキュメントなどを参照してください。
## 競合の原因
アプリケーション間で、データが同期される場合、複数のアプリケーションによって同じドキュメントに変更が加えられた場合、ドキュメントの競合が発生する可能性があります。
競合は、次のいずれかのイベントの後に発生する可能性があります。
– レプリケーションプロセスが、ドキュメントの変更を保存: この場合、最も大きいリビジョンIDを持つ変更が優先されます。
– アプリケーションが、ドキュメントの変更を保存: この場合、最後の書き込みが優先されます。競合発生時、削除操作は常に勝ちます。したがって、上記のいずれの場合でも、変更の1つが削除であった場合、ドキュメントは削除されます。
## レプリケーション時の競合
競合は、レプリケーションプロセスが変更を伝播する場合に発生する可能性があります。
### 自動競合解決
Couchbase Liteは、次のルール
nullをreturnしないメモ
# 概要
チームメンバーがnullをreturnしていたのですが、想定している挙動が分からないので他に置き換えた方がいいのではと思い、説明のために整理したメモ。nullのreturnは、例えばこのようなコードです。
“`java
public ZonedDateTime calculationDate(ZonedDateTime acceptAt) {
if (acceptAt == null) {
return null;
}
“`## null返り値が保守作業に与える悪影響の調査
ソフトウェアシンポジウム2013で発表があった模様。
https://sdl.ist.osaka-u.ac.jp/pman/pman3.cgi?DOWNLOAD=229null返り値はバグを含みやすくなる。
> 分析の結果,null 返り値および null チェックが,規模や作業工程の種別に関係なく頻繁に修正されることを確認した.修正頻度が高いという ことは,バグを含みやすくなると考えられるため,null 返り値および null
【Java】二次元配列でドット絵を作ってみた
##作ろうと思ったきっかけ
→for文の演習問題中
→以下を実行せよ
▼▲▼
▼▲
▼
→これ応用したらドット絵作れるんじゃね?##ドット絵を作ってみました
![kkk02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2064393/1535c15e-c10b-f035-a3ac-605525782349.png)
[星のカービィ](https://www.kirby.jp/)© Nintendo / HAL Laboratory, Inc.![inu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2064393/7c62becd-0008-41b8-5dfd-9635dd8432c3.png)
[UNDERTALE](https://undertale.com/)©Toby Fox 2015-2021.##開発環境
Windows10(32bit)
eclipse(4.9.0)
コマンドプロンプトで
【Java】Byte配列を無限に連結したい
# やりたいこと
JavaでByte配列を扱う中で配列を連結させたい場面がありました。
しかも、ときには2つ、ときには3つ、、というように。# 追記
コメントいただきましたが、Arrays.stream()を使うとよりスッキリ実現できます。(ありがとうございます。)“`Java
private static byte[] concatByteArrays(byte[]… arrays) {
return Arrays.stream(arrays)
.collect(ByteArrayOutputStream::new,
(bos, bytes) -> bos.writeBytes(bytes),
(left, right) -> left.writeBytes(right.toByteArray()))
.toByteArray();
}
“`# 結果
Byte配列はByteBufferで扱い、引数は可変長引数で受け取ることで対応しています。“`Java
class Con
コンパイルしたJavaのバージョンとデプロイするJavaのバージョンがズレているとエラーになる話
テスト済みのWARファイルをDockerで動かそうとしたら以下のエラーになってしまった…ということがあったので、原因と解決方法をメモ
java.lang.UnsupportedClassVersionError: ukaf/simple2/WelcomeResource has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0 (クラス[ukaf.simple2.WelcomeResource]をロードできません)
※ビルド~デプロイまでは正常に終わったのですが、以下のリクエストでAPIアクセスしたときにエラーになりました
http://localhost:8080/simple2/webapi/welcome?name=YOURNAME
##原因
タイトルにほぼ答えを書いてしまったのですが、ビルドしたときの
インスタンスメソッド、クラスメソッドの違いについて
## はじめに
以前書いた「[インスタンス変数、クラス変数の違い](https://qiita.com/tta0206/items/74059f904fd967526d9b)」が反響がありましたので、
(読んでくださった皆さん、本当にありがとうございます?)、
そちらの続編としてメソッドについて説明していきたいと思います。## インスタンスメソッド
インスタンス変数もしくはインスタンスメソッドを利用する場合に使われるメソッドです。
インスタンスという名前がついている通り、インスタンスに依存する処理を行うので、
メソッドを呼び出す前にインスタンスを作成する必要があります。## クラスメソッド
インスタンスの中身に関係なく、共通の処理を行うときに利用されるメソッドです。
インスタンスに依存せず、処理内容が不変なことから英語で「静的」という意味の`static`をメソッドにつけます。
そのため、クラスメソッドの中ではそのクラスのインスタンス変数 or インスタンスメソッドは利用できません。(=thisを利用することはできない。)
その代わり、インスタンスに依存してないので、イン
バージョン管理の各方法の特徴と違いに関する備忘録(初心者の所感)
※2021年10月19日時点での最新バージョンを使用した際の体感です。
主な使用言語がJavaなので、開発環境はそれに寄ったものになってます。
OS:Windows10はじめに
プロジェクトでバージョン管理を行おうと思った際にどれがどのようなサービスを提供しているのか、がわかりにくかったため、備忘録的に記しておこうと思いました。まだまだ初心者のため、足りない部分はあると思いますがご了承ください。
また、本投稿はバージョン管理の使い方や環境設定の解説ではないため、省かせていただきます。・Git
コマンドラインを利用したバージョン管理機能。主にローカルリポジトリでの管理を行う。
グループでのバージョン管理も可能だがオンラインで共同編集するための機能はない(はず)。・GitHub
Gitを用いてオンライン上にリモートリポジトリを作成し、共同編集を可能にしたもの。
とあるサイトには、GitとGitHubの違いに関して、メールとGmailのような違いとあったが、個人的にはメールサーバとGmailの違いという印象を受けた。要するに、Gitを元にしたサービスがGit