Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
gRPCとは gRPCの概要については、こちらのエントリで記載しています。 このエントリでは、gRPCの運用で気になるポイントや、Javaで実装する場合を中心にまとめていこうと思います。 開発フロー 現代的なシステムではシステム間をAPIを通じて通信することが多くなってきています。 この場合、各システムのインターフェイスは以下のいずれかのパターンで開発が進む場合が多いです。 パターン1: 手動でインターフェイスのドキュメント(仕様書等)を記述し、サーバ、クライアントの開発者でその要件を満たす実装を行う パターン2: サーバ側のコードから、インターフェイスドキュメントを自動生成し、クライアントがその要件を満たす実装を行う パターン3: 手動でインターフェイスドキュメントを記述し、各システム用にサーバとクライアントのコードを自動生成する gRPCを用いた開発では上記の3のパターンで行います。
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Cognitect社のNygardさんが10年ぶりに改訂したRelease It! 2nd Editionがまもなくリリースされます。内容は現在のベータ5版で全て書ききっておられるようなので、是非読んでみてください。 https://pragprog.com/book/mnee2/release-it-second-edition その中から4章の安定性パターンの概要をご紹介し、実際JavaのFailsafeライブラリを使った実装例を示したいと思います。 安定性のパターン Stability Patterns 分散システムや後続をブロッ
IOの分類 IOを幾つかの観点で分類してみる IO方向で分類 input stream:読み取りできる output stream:書き込みできる 処理単位で分類 byte stream:処理単位が1バイト(8ビット) char stream:処理単位が2バイト(16ビット) レベルで分類 low level stream:特定IO設備(HDD,net等)からin/outする high level stream:既存のstreamをラップして、in/outする ![low and high.png](https://qiita-image-store.s3.amazonaws.com/0/104977/f007f2b0-dab4-1f6e-a058-aa3665fa95a6.png) high level streamを使うメリット 操作を抽象化して、データソースへの操作相違を吸収できる
Jackson の、普段あんまり使わない機能過ぎて使いたいときに忘れてぐぐって時間を浪費してしまうようなケースを回避するためにメモメモします。随時更新予定。 見ればわかりますが、元ネタはほぼすべて Stack Overflow です。英語だけだと読むのが辛い、という方向け(主に自分)にまとめています。 snake_case でプロパティを表現している JSON と camelCase で表記している POJO をマッピングしたい java - Jackson overcoming underscores in favor of camel-case - Stack Overflow より。 引数に PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES PropertyNamingStrategy.SNAKE_CAS
テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手順が必要でした。 新しいバージョンではだいぶ簡単簡潔に書けるようになりましたが、今度はたくさんありすぎて、どれがなんなのかが良くわからなくなっています(大袈裟)。 そこで今回は、"read-lines"の変遷についてまとめてみました。 最近Javaを始めた方がバージョンが古い時に書かれたソースコードを読むときに役に立つ...かも知れません。 目次 基本 BufferedReader (Java1.1~) Scannerと拡張for文 (Java5~) java.nio.file.Filesとtry-with-resources(J
ちょい仕事で Java で SSH/SCP を実行するライブラリがあるといいな的展開があって、ちょっと調べたら良さそうなのがあったので、メモ。 Ganymed SSH-2 for Java http://www.ganymed.ethz.ch/ssh2/ 最初読めなかったけど、「ガニメデ」ですね。 100% Pure Java SSH2 をサポート コマンド実行、shell, scp, port forward 機能をサポート BSD ライセンス 昔は Java から scp を叩ける良いライブラリがまだ無く、結局そのときは外部コマンド実行によって実現したものだが、今はこんないいものがあるんやね。 外部コマンド実行だと、どうしても コマンドごとに認証(よってパフォーマンス悪し) 若干不安定(よってエラー処理が面倒) 標準入出力周りの処理をしっかりする必要がある(よってコーディング量が増える
Java 9 の Project Jigsaw を勉強したときのメモ。 環境 OS Windows 10 >java --version java 9 Java(TM) SE Runtime Environment (build 9+181) Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) |-main/ | |-class/ | `-src/ | |-module-info.java | `-sample/main/ | `-Main.java | `-sub/ |-class/ `-src/ |-module-info.java `-sample/sub/ |-api/ | `-Foo.java |-internal/ | `-FooImpl.java | `-FooFactory.java
みなさん、Java8使ってますか?Date and Time API(JSR 310)使ってますか? 僕はJava8でもJoda-Timeのお世話になっていたのですが、ようやくDate and Time APIを使ってみる気になりました。 僕が今までDate and Time APIを使ってこなかった理由の1つに以下があります。 存在しない日付の文字列をparseしても例外が発生せず、別の日付としてparseされてしまい、解決方法がわからなかった (LocalDateTime#ofでは例外が発生します) 文字列をDateにparseする事ってよくあると思います。Joda-TimeのDateTime.parseなどで行っていた処理です。 Date and Time APIのLocalDateTime.parseでは、存在しない日付の文字列(例えば、‘2014/04/31’)をparseしても
public static void main(String[] args) throws IOException, PrinterException { try (InputStream in = new FileInputStream("pdf.pdf")) { print(in); } } public static void print(InputStream in) throws IOException, PrinterException { try (PDDocument doc = PDDocument.load(in)) { PrinterJob job = PrinterJob.getPrinterJob(); job.setPageable(new PDFPageable(doc)); //プリンターのダイアログを開く if (job.printDialog()) {
ふと思い立ってPDF出力のAddonの調査していたら予想外に大変な便利Addonにぶちあたりました(^^; 多分これは今年一番のお役立ちエントリです。一度でもPDF出力に悩まされたことのある人なら読まないと後悔するレベル(かも) ★HerokuのPDF Addon Addonを探すとDocRaptorとHyPDFという二つのAddonが見つかります。 どちらもHTMLを渡せばそれをPDFに変換してくれるというサービスのようです。 多分、DocRaptorの方が有名なので、最初こちらから試そうと思ったんですが。。。 料金プランを見てビックリ Starter(Free) - 月に5件まで Basic($19) - 月に125件まで Professional($37) - 月に325件まで Premium($95) - 月に1250件まで Max($189) - 月に5000件まで 無料プランが
本稿では Java で PDF を作成/操作するライブラリについて調査した結果をご紹介します。 3年前の2014年に「今どきのJavaのPDFライブラリ まとめ (2014年版)」という記事を書きましたが、3年間でだいぶ状況が変わりましたので、あらためて2017年現在で Java で PDF を操作するにはどんなライブラリがあるのかを再調査しました。 今回も OSS がメインです。 Apache PDFBox 最初に紹介するのは Apache PDFBox です。 比較的新しいライブラリで、Version 1.0.0 は2010年にリリースされ、現時点で最新の 2.0.4 は2016年12月にリリースされたばかりです。 2016年に新しいメジャーバージョン 2.0 がリリースされ、待望のマルチバイト文字対応が行われました。 それまでは日本語が利用できなかったため、日本でのシステム開発で脚光
概要(お前は何を言っているんだ) コードレビューしていると、__Java8のfeature(Stream APIとかOptionalとか)を使ってるんだけど、Java7以前と大差ない書き方をされているコード__をよく見かける。 もっと皆に__Java8っぽいコード__を書いて欲しい。そうじゃないともったいない。 (*"Java8っぽい"の基準は割りと(かなり?)私見が入っている) 言葉を尽くしても伝わりづらいので、例を作ろう。 ← これ ついでに、「無理してJava8のfeature使うことで、逆に悪くなってしまっている例」も作ろう。 対象読者 Java8でコード書いてるけど、Java7以前の書き方が染み付いちゃっていてなかなか抜け出せない人 「forやnullチェックは絶対使うべきでない」という思いが強すぎて、何でもかんでもStream APIやOptional使ってる人 Notice
発生していた問題 未ログイン状態で、認証が必要なWebAPI-1にリクエスト HTTP 401が返される ログイン HTTP 200 ログイン成功 レスポンスボディなし WebAPI-2(1とは異なるAPI)を呼び出す WebAPI-1のレスポンスが返される クライアントサイドのリクエストパラメータは、WebAPI-2を指定 サーバーログを見る限り、1.でリクエストした際のリクエストパラメータを元に処理が行われ、レスポンスが返されている Spring Bootのバージョン Spring Boot 1.4.2 Spring Security 4.1.3 原因 問題が発生するパターンのSpring Securityの設定は概ねこんな感じ。 public class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { priva
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く