アプリなら、コメントが見やすい!
トップへ戻る
画像生成AI
blog1.mammb.com
はじめに Nginx でロードバランサを構成する Webサーバ1号機の作成 Webサーバ2号機の作成 ロードバランサの作成 ロードバランサとWebサーバの起動 Web アプリケーションの準備 Docker でアプリケーションをビルドする DBサーバの準備 ロードバランサとアプリケーションサーバの起動 まとめ はじめに 前回は Docker のインストールからイメージビルド・コンテナ起動・Compose までの流れをみてきました。 blog1.mammb.com 今回は以下のような、一般的な Web アプリケーションの開発環境を構築していきます。 前回の記事とあわせて、Docker の活用方法を理解いただければと思います。 Nginx でロードバランサを構成する 最初に、単純な Web サーバを Nginx でロードバランシングする環境を作成して動作を見てみます。 このような構成となります。
TL;DR X-Content-Type-Options X-Frame-Options(XFO) X-XSS-Protection Content-Security-Policy (CSP) Upgrade-Insecure-Requests Strict-Transport-Security (HSTS) Public-Key-Pins (HPKP) 設定 TL;DR X-Content-Type-Options MIME スニッフィングの無効化 X-Frame-Options(XFO) フレーム表示を制限しクリックジャッキングを予防 X-XSS-Protection XSSフィルタの有効/無効 Content-Security-Policy (CSP) XSSなどの攻撃を軽減するセキュリティレイヤー Strict-Transport-Security (HSTS) HTTP の代わり
プロセスIDの取得 スレッドダンプの取得 Windowsでプロセスをサービス起動している場合 スレッドダンプを読む プロセスIDの取得 まずは Java のプロセスIDを取得するところから始める。jps で取得できる。 $ <JAVA_HOME>/bin/jps -l 主要なオプションは以下の通り(SunVM)。 オプション 説明 -m main メソッドに渡される引数を出力 -l アプリケーションの主要なクラスのフルパッケージ名、またはアプリケーションの JAR ファイルへのフルパス名を出力 -v JVM に渡される引数を出力 JDK7 からは JRockit と統合されたため jcmd が使えるので以下でもプロセスIDを取得できる。 $ <JAVA_HOME>/bin/jcmd または、単に ps コマンドで取得するでもよい。 $ ps -ef | grep -v 'grep' | g
JavaScript でのブラウザ判定について まとまった情報がサクッとヒットしないので、まとめ UserAgent によるブラウザ判定 よくある単純な例 var userAgent = window.navigator.userAgent.toLowerCase(); if (userAgent.indexOf('opera') != -1) { return 'opera'; } else if (userAgent.indexOf('msie') != -1) { return 'ie'; } else if (userAgent.indexOf('chrome') != -1) { return 'chrome'; } else if (userAgent.indexOf('safari') != -1) { return 'safari'; } else if (userAgen
クラスファイルの中身 クラスファイルの構造 javap コマンド javap 出力の概要 型とメソッドの読み方 オペランドスタック コンストラクタの実行 加算メソッド invoke 系命令 条件判断 for ループ まとめ 普段使いでは困ることはないですが、昨今はバイトコードマニピュレーションによる黒魔術が謳歌しているため、知っていると役に立つ場合もあるバイトコードの最低限の読み方を説明します。 クラスファイルの中身 以下のような簡単なソースコードを考えましょう。 public class Class1 { public int add(int x, int y) { return x + y; } } このソースコードをコンパイルして作成された Class1.class の中身のダンプを見てみます。 $ hexdump -C Class1.class 00000000 ca fe ba
みなさんは Markdown エディタは何を使っているでしょうか? Atom や Visual Studio Code のプラグインでプレビュー表示していたり、Windows だったらMarkdownPad 、Mac だったら MacDown などの専用エディタを使っている方が多いのではないでしょうか。 そんな方へTypora を紹介します。 Typora は無駄なプレビュー領域を使いません Typora には便利なショートカットがあります Typora ではテーブル書くのが楽しくなります Typora はドラッグ&ドロップで画像を貼り付けられます Typora はテーマもコードハイライトもあります Typora は PDF や HTML など多くの形式にエクスポートできます Typora はマルチプラットフォームで今の所 Free です まとめ Typora は無駄なプレビュー領域を使い
mdBook とは mdBook の導入 mdBook の始め方 mdBook でビルドする mdBook のコマンド mdBook での作業 mdBook で Rust コードを実行 mdBook とは Markdown 形式できれいなドキュメントを作成するためのツールです。 チャプター別に執筆した Markdown ファイルから、以下のようなオンラインドキュメントを簡単に作成することができます。 mdBook でビルドすると book ディレクトリに HTML や CSS、JS ファイルが生成されるので、ディレクトリごと Github Pages などに配備すればオンラインでドキュメントを公開することもできます。 同様のツールに gitbook-cli という Node ベースのものがありますが、mdBook は Rust 製で、なにしろ速いのがメリットです。 mdBook の導入 R
blog1.mammb.com の続きで Phoenix。 Elixir 版 RoR の Phoenix Framework。現在のバージョンは V0.15.0。 公式サイト http://www.phoenixframework.org/ Github https://github.com/phoenixframework/phoenix 事前準備 必要に応じて以下を入れておく。 node と npm Phoenix はアセットのコンパイルに brunch.io を使うので、node と npm が入っていない場合は入あらかじめ入れておく。 $ brew update $ brew install node 静的なアセットを使わない場合は後ででてくる mix コマンドで --no-brunch を付ければ node と npm は不要。 Hex Erlang のパッケージ管理ツール He
導入 Homebrew での導入は以下。 brew update brew install elixir バージョン確認。 $ elixir -v Elixir 1.0.4 Erlang も入る。 erl -version Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 6.4 IEx (Interactive Elixir) 対話型シェルで、各種操作が実行できる。 $ iex Interactive Elixir (1.0.4) - press Ctrl+C to exit (type h() ENTER for help) iex> REPL として直接コードを実行したり、 iex> 1 + 1 2 iex> IO.puts "Hello World!" Hello World! :ok コンパイルしたり iex> c "
EasyMockとの違い Eclipse での利用に際して org.mockito.Mockito モックの利用と妥当性検証 スタブメソッドの定義 引数の照合 メソッド呼び出しの妥当性検証 voidメソッドから例外を返却 API的に EasyMock と大きな違いはありませんが、使用感としては格段に心地良い Mockito。 [:W150] 本家 http://mockito.org/ のドキュメント(というかJavaDoc)をベースにメモ。 EasyMockとの違い Mockito では record モードと replay モードを切り替える必要がない Mockito で作成するモックは常に、EasyMock で言う NiceMock となる スタブメソッドの妥当性検証が常にオプション扱い 大きくは以上となります。具体的に、EasyMock では import static org.e
はじめに Docker のインストール Docker の起動 コンテナの起動 Docker Hub から nginx のイメージを取得 取得したイメージから ws-nginx という名前でコンテナを作成 作成したコンテナを起動 コンテナの操作 動いているコンテナの一覧 コンテナの停止 停止しているコンテナを含めて一覧 コンテナの削除 イメージの一覧 イメージの削除 Dockerfile からイメージ作成 Nginx の設定ファイルの準備 Dockerfile の作成 Dockerfile のビルド イメージの実行 Docker Compose docker-compose.yml の作成 docker-compose up まとめ はじめに Docker の OSX への導入からコンテナ起動までを見ていきます。 Docker のインストール DockerHub からインストーラをダウンロー
Nashorn とは Java から Nashorn を使う Java オブジェクトを渡す JavaScript の関数を Java から呼び出す JavaScript のオブジェクトを Java から呼び出す JavaScript 内で Java クラスを利用する JavaScript と Java の型 文字列 数値 配列 リストとマップ ラムダ Java クラス・パッケージのインポート JavaScript で Java インターフェースを実装する JavaScript 関数を Java インターフェースの実装として利用する スクリプトを事前コンパイルする Nashorn で REPL する jjs でシェルコマンドを使う nashorn をシェルスクリプトとして使う 例えば まとめ Nashorn とは Java7 までは JavaScript スクリプティングエンジンとして Ri
DataTables とは HTML テーブルを操作する jQuery のプラグイン。 本家は以下 datatables.net 簡単な例 Microsoft の CDN でホストされているため、stylesheet と script を以下のように指定。 <head> ・・・ <link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/css/jquery.dataTables.css"> <!-- jQuery --> <script type="text/javascript" charset="utf8" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></scri
CSS にて、要素の height にパーセント値を指定した場合の表示について 分かりにくいので簡単にまとめておきます。 要素をウインドウ全体に表示したいけど上手くいかない 要素を画面全体に表示したい場合、「height: 100%;」と指定しても上手くいきません。 たとえば以下のHTMLで、div を画面全体に表示したい場合、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <div class="main"> </div> </body> </html> div.main 要素を以下のように指定して、 div.main { height: 100%; } あれ、height
Rules とは JUnit4.7から@Ruleアノテーションが追加されました。@Ruleアノテーションは、org.junit.rules.MethodRuleインターフェースのサブクラスによって定義された振る舞いをテストメソッドに追加します。 MethodRuleの組み込み実装クラス MethodRuleの具象クラスとして、以下のクラスが提供されています。 MethodRule ├ Verifier : オブジェクトの状態が不正な場合にテストを失敗させる │ └ ErrorCollector : 1つのテストメソッドの複数のエラーを集集する ├ ExpectedException : スローされた例外について柔軟なアサーションを行う ├ ExternalResource : サーバの起動停止などの外部リソースの操作を行う │ └ TemporaryFolder: テストメソッド前に一時フ
blog1.mammb.com では CoreMatchers についてでしたが、こちらでは org.hamcrest.Matchers についてまとめます。 org.hamcrest.Matchers JUnit についてくるのは org.hamcrest.CoreMatchers で基本的な Matcher が提供されています。org.hamcrest.Matchers は CoreMatchers を機能拡張したものとなってます。CoreMatchers にあるメソッドは、Matchers にもあります。 hamcrest-core − org.hamcrest.Matchers が入ってる hamcrest-library − org.hamcrest.Matchers が入ってる hamcrest-library は以下のようなパッケージ構成となっており、各用途に応じた Ma
可変長引数のループで ヌルポ発生 普通の呼び出し なんだ!? これ 念のため どうしても null を渡したい場合 まとめ 可変長引数のループで ヌルポ発生 先日とあるプロジェクトで、可変長引数を for - each している箇所でヌルポになっていた。 実際にはずっと複雑だが、簡単に書くと以下のような for ループでのヌルポ。 public void method(String... args) { for (String string : args) { // java.lang.NullPointerException // ... } } この10年 可変長引数が null を受け取るなんて。 可能性すら考えるまでもなく問題なしと思い込んでいた。 普通の呼び出し 普通に呼び出すと、 method(); method("hello"); method("hello", "world
sbaz にて scala-tool を取得すると、各種ツールのプラグインが入手できます。ここでは vimプラグインを適用してみます。 sbaz によるscala-tool-supportの取得 以下のコマンドにてscala-tool-supportを取得します。 > sbaz install scala-tool-support planning to install: scala-tool-support/2.8.0.RC2 Installing... Downloading: http://scala.epfl.ch/downloads/packages/scala-tool-support-2.8.0.RC2.sbp 182.0K/182.0K DoneScalaのインストールディレクトリ中の /misc/scala-tool-support に各種ツールのプラグインが取得されます
Entity Graphs とは Entity Graph の構成 Graph アノテーションと Graph API 簡単な利用例 Fetch Graph と Load Graph Attribute Node の定義 Subgraph の定義 Subgraph の複数参照 継承構造の Graph 定義 ルート継承構造の Graph Map Key Subgraphs タイプセーフな属性定義 Entity Graph の取得 名前付きの Entity Graph への追加 Entity Graph の利用 Entity Graphs とは JPA 2.1 では Entity Graph を使うことで fetch 計画を指定できるようになりました。これにより query や find で取得する対象ををカスタマイズできるようになります。同じ Entity から様々なデータの見せ方が必要で、時
呼び出し順序の妥当性検証 余計なメソッド呼び出しが行われていないことを検証する Mockito のアノテーション 複数回のモックメソッド呼び出しの結果を変化させる コールバック付きの戻り値定義 voidメソッドの振舞を定義するdoXXファミリー 実オブジェクトの動作を変えるspy 本記事は、以下の記事の続きです。 blog1.mammb.com 呼び出し順序の妥当性検証 以下のように、2つのモックがあり、それぞれのモックの add() メソッドの呼び出し順序を検証したい場合、 List firstMock = mock(List.class); List secondMock = mock(List.class); firstMock.add("was called first"); secondMock.add("was called second"); InOrder を使用します。
blog1.mammb.com からの続きです。 ページ遷移時のイベント jQuery Mobile では、1つのHTMLファイルに複数のページビューを定義できます。外部ページも非同期リクエストにて取得したページビューを、既存の DOM に挿入することでページ遷移を実現します。 これによりページ遷移の度にサーバへのリクエストを行うこと無く、通信帯域の制限されたモバイル環境においてスムーズなページ遷移を可能にしています。 このような特徴があるため、jQuery Mobile では $(document).ready() といった、ページロード時のイベントと、ページ遷移(表示)時のイベントを区別して扱う必要があります。 ページの初期化には pageinit イベントを使う ディスクトップ向けに jQuery を利用する場合は、$(document).ready() にて DOM の読み込み完了
関数型言語の理論的基盤であるラムダがあしらわれた Clojure のロゴが美しすぎる。 Python Erlang Lua Ruby Scala Groovy Erlang Haskell Perl PHP Go R プログラミングClojure 第2版 作者: Stuart Halloway and Aaron Bedra,川合史朗出版社/メーカー: オーム社発売日: 2013/04/26メディア: 単行本(ソフトカバー)この商品を含むブログ (11件) を見る
Java Batchとは Job の種類と実行制御 Job作成の流れ Chunk の実装例 ItemReader ItemProcessor ItemWriter Job 定義 Batchlet の簡単な例 バッチステータス Job Specification Language Job 定義の要素 Step 要素 chunk ステップの例 chunk ステップの要素 タスクステップの例 タスクステップの要素 partition ステップの例 plan 利用 mapper 利用 フロー要素 スプリット要素 decision 要素 JobContext Job のスケジュール起動 listener CDI 名による参照 IDE サポート Java Batchとは JSR-352 Batch Applications for the Java Platform として仕様化されたバッチ処理用 A
Spock とは build.gradle HelloSpock 仕様(テストケース)の構造 フィールド fixture メソッド feature メソッド helper メソッド データドリブンなテスト @Unroll data pipe Stack の仕様例 例外の検証 例外とならないことの検証 タイムアウトを適用する Hamcrest matchers を使う リソースのクリーンナップを行う @Shared で共有リソースを利用する Specification に自然言語の名前をつける MOPを適用する feature の実行を制限する @Ignore @IgnoreRest @IgnoreIf @Requires @Stepwise Spock とは Java と Groovy アプリケーションのテスティングと仕様フレームワーク JUnit, jMock, RSpec, Groov
RxJava は ReactiveX (Reactive Extensions) の JVM 実装で、平たく言うと非同期のイベント処理を簡素に書ける、単なるライブラリです。 "Rx = Observables + LINQ + Schedulers" などと表現されます。なんですかこれ?大げさな抽象概念を掲げすぎて意味不明になる現象(モナド現象)になっていませんか? Observable とは Observable は発生順に並んだイベントのストリームです。 Java8 では、何らかの型Tの並びを Stream として表現し、この並びに対して関数的な操作を適用する API が用意されています。例えば Stream.map() は関数 Function を引数に取り、関数で変換された新しい Stream を返します。戻り値として Stream が得られるので、同じように操作を連結して定義して
blog1.mammb.com から、さらに最近出た本を追加して加筆 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。 個人的なお勧め順で紹介。 必須のコップ本「Scala スケーラブルプログラミング」 言語の作者である Martin Odersky 氏が著者の1人ということもあり、言語についての説明の詳細さ という点では、ここで紹介する書籍中で群を抜いています。邦訳も非常に読みやすくまとめられており、Scalaでプログラミングを行うなら必須です。一番良く参照する本ですね。 ただ、Scala が初めてという場合は、ページ数が 600 ページで内容も盛りだくさんなので、中盤ぐらいから消化不良を起こすかもしれません。Java の経験が豊富で、関数型言語の知識がありパターンマッチやコンスセルなどの用語で面喰わなけれ
Java8 の Developer preview が公開されたので、そろそろ新機能についてまとめておきます。 機能一覧はこちらです。 インターフェースにstaticなメソッド定義が可能になった 例えば、java.util.Comparator には以下の static なメソッドが追加されています。 @FunctionalInterface public interface Comparator<T> { public static <T, U> Comparator<T> comparing( Function<? super T, ? extends U> keyExtractor, Comparator<? super U> keyComparator) { Objects.requireNonNull(keyExtractor); Objects.requireNonNull(k
Java9 も出た昨今でいまさらですが、Stream パイプラインが裏でどのように動いているのかをコードを交えて紹介します。 以下の単純な例を元に、内部処理を追っていきましょう。 Arrays.asList("a", "b", "c") .stream() // (1) Stream の生成 .filter(String::isEmpty) // (2) パイプライン .forEach(System.out::print); // (3) 終端処理 (1) Stream の生成 (2) パイプライン (3) 終端処理 まとめ (1) Stream の生成 最初はストリームを取得する stream() の中身から見ていきます。 stream() は Collection インターフェースのデフォルトメソッドとして以下のように定義されています。 public interface Collect
blog1.mammb.com のついでに hamcrest の CoreMatchers についてまとめます。 Matchers については blog1.mammb.com まずは基本の is と not 全体的にはこんな感じ。 import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import org.junit.Test; public class FooTest { @Test public void testFoo() { String actual = "foo"; assertThat(actual, is("foo")); } } not はこう。 String actual = "foo"; assertThat(actual, not("bar"));
次のページ
このページを最初にブックマークしてみませんか?
『A Memorandum』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く