この記事は 品川 Advent Calendar 2019 の5日目です。 OB 枠での参加です。いったいどこの某弊社なんでしょうか… 。 本記事は Eclipse で Java ライブラリのコードリーディングを行うときのコツをまとめます。あくまでも「自分はこんな考え方やテクニックを…
Linux カーネルのメモリ管理方法について、勉強したことをまとめる。プロセス編。 カーネル編はこちら。 www.kimullaa.com メモリ管理の特徴 連続したメモリ領域 プロセスごとに独立したアドレス空間 実行例 メモリの効率的な割り当て デマンドページング ス…
検証環境 ファイルシステムとは何か? ファイルアクセスの詳細 ストレージデバイスの特徴 open inode dentry file dentry キャッシュと inode キャッシュの効果を測定する read ページキャッシュとバッファキャッシュ ページキャッシュ バッファキャッシュ di…
普段はアプリケーションレイヤの仕事をしているため、「データベースはデータを入れておくただの箱」という発想でした。が、さすがにこれはまずいだろう、と思いたち、勉強中です。 とくにデータベースが専門領域というわけではないので、間違いがあれば教え…
デバッグ情報を付与するだけなら debuginfo-install を使えばいいが、今回は、ソースコードを閲覧または変更できるようにする。 参考 CentOS 7: デバッグシンボルでパッケージをデバッグする 検証バージョン ]$ cat /etc/redhat-release CentOS Linux releas…
Python3 のチュートリアルを流してみたので、その際に面白いと感じたところのメモです。 参考 Python チュートリアル 動作環境 $ python --version Python 3.7.3 はじめに python の for 文は、イテレータから値を取り出して繰り返すだけ。 JavaやC言語のよ…
記事の内容 以下のソースコードがコンパイル~実行されるまでに、何が行われるのかを理解する。 細かいオプションや処理の詳細は追わない。 #include <stdio.h> #define MESSAGE "hello world\n" int main(int argc, char *argv[]) { printf(MESSAGE); return 0; } 記</stdio.h>…
検証環境 ]$ uname -a Linux localhost.localdomain 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux ]$ java -version openjdk version "11.0.1" 2018-10-16 LTS OpenJDK Runtime Environment 18.9 (build …
なぜMyBatisの実行したSQLがSpringの管理しているトランザクションで実行できるのか、を調べる。そのために、 mybatis-spring の実装を追っていく。 対象バージョン java version "11.0.1" 2018-10-16 LTS Spring Boot 2.1.2.RELEASE mybatis-spring-boot-st…
検証環境 java 11.0.1 2018-10-16 LTS MyBatis 3.4.6 サンプルコード 以下を実行しながら、処理の流れを追っていく。 複雑な箇所は適宜、シーケンス図を作成する。(メインの流れではないと判断したところは適宜省略して記載するので、正確さにはやや欠けます…
yum-cronでパッケージを自動更新していると、いつの間にかパッケージが思った動作をしなくなることがある。このとき、調べた方法のメモ。 検証バージョン ]$ uname -a Linux localhost.localdomain 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UT…
この記事は Java Advent Calendar 2018 の 9 日目のエントリーです。 流行をとらえた話題が多いなか、10~15年前感のあるコンテンツです。化石です。 しかし化石とはいえ、よく使う技術ではあります。 ということで、何気なく使ってたけど改めて勉強し直しま…
2018/10/31 の Spring Festで『Micrometer/Prometheusによる大規模システムモニタリング 〜ヤフーインターネット広告システムでの導入事例〜』というセッションを聴講し、興味を持ったので調べました。 Micrometerは、Spring Boot Actuatorが内部で利用して…
MuitipartFileとは? MultipartFileとは、ファイルのアップロード機能をアプリケーションコード内で透過的に扱うためのクラスです。アップロード機能の実装は、Servlet 3.0のファイルアップロードか、Apache Commons Fileuploadから選ぶことができます。 具体…
はじめに 突然ですが、皆さんはアプリケーションで扱うBLOBデータをどこに保存しているでしょうか?大きく分けると、以下のいずれかになると思います。 ファイルストレージ データベース オブジェクトストレージ いずれも一長一短ありますが『SQLアンチパタ…
以下のバージョンで検証しました。 pom.xml <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.1.14</version> </dependency> ConnectableFlowable ConnectableFlowableはHotなストリームで、複数のSubscriberに同じストリームを購読させるときに利用するクラス。 参考 ConnectableFlowable Javadoc p…
課題 Rxjavaで以下のようなコードを実行すると、 @Test public void 実行スレッドを切り替える() throws InterruptedException { Flowable.just("hello") .doOnNext(val -> logger.info("emit")) .map(o -> o) .doOnNext(val -> logger.info("map")) .subscr…
目的 検証環境 PostgreSQLを起動する PostgreSQLに接続する ホストからアクセスする コンテナを利用してアクセスする パターン1 コンテナを利用してアクセスする パターン2 PostgreSQLコンテナの停止 PostgreSQLコンテナの再開 初期データを設定する Postgre…
前提知識 RxJavaにはバックプレッシャと呼ばれる、流量制御の仕組みがある。 参考 詳解RxJava2:Backpressureで流速制御 onBackpressureBuffer PublisherがSubscriberの消費スピードよりも早くデータを作った場合、バッファに生成されたデータを溜めておきた…
課題 追加と編集フォームは同じデータを操作することが多い。そのため、各フォームを異なるコンポーネントとして作成するとほぼ同じ処理をするコンポーネントが2つできることになり、入力チェックやレイアウトの調整に2重のコストがかかる。そのため、追加と…
課題 Makefileのターゲット内で動的に変数を設定したい。 解決方法 変数がターゲット実行時に確定する場合 環境変数を利用する シェルのコマンド置換$(...)を利用する Makeのshell関数$(...)だと、ターゲット実行前に実行されるから 各行を;でつなげて、変数…
SPAの場合はformタグに任せてデータをサブミットすることは稀で、通常は自身で定義したハンドラを呼び出してAjax通信を行うことが多い。 課題 以下のように<button type="submit" @click="exec">を使ってボタン押下時のハンドラを実行するのは危ない。 <template> <form> <input type="text" placeholder="username" /> <input type="text" placeholder="password" /> <button type="submit" @click="exec">submit</button></form></template></button>
ロードバランサとは DNSラウンドロビン DNSラウンドロビンでは対応できないこと L7ロードバランサ パケットの流れ L4ロードバランサ IPアドレス変換方式(NAT方式) パケットの流れ MACアドレス変換方式(DSR方式) パケットの流れ 構築してみる L7ロードバラン…
created と mounted どちらもVuejsが提供するライフサイクルフック。たいていのサンプルでは、このライフサイクルフックのどちらかでAPIアクセスをするが、どんな違いがあるんだろう。 created インスタンスの初期化が済んで props や computed にアクセスで…
検証環境 docker-compose.ymlで利用できる変数 環境変数 .envファイル Dockerコンテナで利用できる変数 environment env_file docker-compose run -e XXX=YYY 変数の優先順位 コンテナ内の変数の優先順位 docker-compose.yml で参照するときの優先順位 動的…
検証バージョン Java 1.8.0_25 RxJava 2.1.14 distinct distinct はフィルタ系操作の一つで、重複要素を取り除くためのメソッドです。 重複要素を取り除くためにはどこかに比較対象が存在しないといけないわけで、じゃあ無限ストリームとかどうやって対応す…
vue-tables-2とは サンプルコードについて 表示してみる 実装のポイント リンクを作る 実装のポイント カラムが多いとき データが多いとき カラムごとにフィルタを用意する 実装のポイント カラムごとに表示/非表示を切り替える 実装のポイント グルーピング…
Spring WebFluxに関する、いまの理解を整理する。 Spring WebFlux 以前の問題点 Javaスレッドでコンテキストスイッチ? Spring WebFluxで課題をどう解決するか? Spring MVC と Spring WebFlux を比較する 検証環境 シナリオ 実装の違い Spring MVC Spring W…
唐突ですが、我が家の課題に『ゴミ出しを忘れる』というのがあります。たまに、家に帰って扉開けたらやばいニオイがして、激しく後悔します。ということで、LINEへ毎朝のゴミ出しの通知をしてみました。という建前の AWS Lambda と LINE Notify 触ってみた系…
検証環境 mybatis 3.4.5 java 1.8.0.25 ハマったこと DBに以下のようなデータが入っているときに SQL で FULL OUTER JOIN すると、以下のようになる。 これに対応するJavaのBeanを用意して、 @Data public class Shelf { private Long id; private String na…