Undertowで、コンテキストパスを読み分けて違うリモートサーバーに処理を委譲するリバースプロキシを書く

モチベーション 趣味アプリのAPIサーバーとWEBサーバーが別で、こいつらを普通に運用するとWEBサーバーが認証機能まで飲み込んでしまって辛い気持ちになる予感がしたので、認証基盤を切り離すことにした。 とはいえいきなりログイン・ログアウト・会員登録や…

Undertowで書いたリバースプロキシで、リモートサーバーからのレスポンスヘッダーを読む

なぜこの記事を書いた? 3日くらいハマって絶望の淵に立ったから。 とにかく情報がない。と思いきや最終的には数年前のメーリスでさがしてたものが見つかるから、実は自分の検索能力が足りてないだけの気もする。 結論: HttpServerExchange.addResponseCommi…

Undertowでリバースプロキシを書く

APIサーバーとWEBサーバーを分けて、その手前に認証用のリバースプロキシを建てたくなったのでやってみた。 Undertow? さいきんのTomcat。 JBossがつくったTomcat。 くらいの理解しかしてない。 組み込みができる。あとリバースプロキシになれる。 ## まずシ…

Coursera Machine Learning 受講ノート 6

Week2 / Normal Equision 正規方程式。最急降下法で漸近的に得ていた最適値を一発で出すための方程式。 偏微分と解析学わからないとわからない領域に入ってきたが、後でフォローしてもらえるらしい。 訓練データとその答えを別の行列とベクトルとして扱って…

Coursera Machine Learning 受講ノート 5

Week 2 / Multivariate Linear Regression 多変量線形回帰について取り扱う。多分ここからOctaveをガツガツつかっていくんだろうなー。 ここまでで取り扱ってきた線形回帰は、ひとつの入力値にくわえてθ(0)とθ(1)を扱うことで予測を行ってきた。 しかし入力…

Coursera Machine Learning 受講ノート 4

Week 1 / Linear Algebra Reviewの続きから 行列の掛け算は、行の要素と列の要素をそれぞれ掛け算して結果をすべて足した値を結合した行列になる。 [[1 2] [3 4] [5 6]] かける [7 8] は [23 53 83] となる。 これをふまえて、複数の値x(10, 15, 20)に対する…

生IntegrantでHTTPサーバーを立てる

Integrantといえばductのバックエンドにある状態管理ライブラリだが、ductを触っているとチラ見えしてくるので、一度生で触ってなんとなく雰囲気が分かるようにしておこうと思う。 Explicity vs Implicity(magic) Java界に君臨するSpringBootを触ったことが…

Coursera Machine Learning 受講ノート 3

ななめよみしてなんとかテストにパスした Week 1 / Parameter Learning 線形回帰以外に最急降下法というのがある。 ある目的関数Jに対して、その最小値を取りたい。 そこで、θ(0)とθ(1)を少しずつずらして最小値、あるいは局所的最小値を探す。 最急降下法(G…

Cousera Machine Learning受講ノート 2

Week 1 / Model and Cost Function 教師あり学習の周辺の用語定義回っぽい。 あるデータ群からモデルを作り、そのモデルを使って何かを推測する時、それは教師あり学習。 データの属性を表すnoteには - m: データ数 - x: 入力に使う特徴 - y: 求めたい値 の3…

Cousera Machine Learning受講ノート 1

Week 1 / Introduction ミッシェルいわく、機械学習の定義とは A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves …

ななめよみ・高卒でもわかる機械学習(2)

CouseraのMachine Learningコース受講前に日本語でざっくり情報を入れるために、高卒でもわかる機械学習 (0) 前置き | 頭の中に思い浮かべた時にはを読む。 今回はその2から。 パーセプトロンなるものについて解説するらしい。 単純パーセプトロン 前回学ん…

斜め読み - 高卒でもわかる機械学習

とうとう機械学習を使えるようになろうと思うので、手始めに hokuts.com をざっと読んで全体像をつかむことにした。 1回目なのでまずは斜め読みして、2回目以降もう少し知識がついた時に詳しく読むことにする。 斜め読みはするが、筆者の方には勿論感謝と敬…

今度こそ受け切るCoursera Machine Learning

www.coursera.org 来たる12/11から、また新学期が始まるようです。 これまで2度受講してそのうちどちらも最初のIntroductionの課題を先送りにして挫折した僕も、もうさすがに自分のスキルセットに機械学習の基礎がほしいので、今度こそ受けきってみせる。

ductとataraxyでふつうのWebサイトを作る

「ふつう」には全く深い意味はなくて、ただただHTMLをGETできてPOSTリクエストを受け付けられるふつうのWebサイトを作ろうとしてみた。 ふつうすぎて逆に情報がなかったのでまとめてみる。 バージョン情報 duct: 0.6.1 前提知識 Clojure で Web 開発をはじめ…

Spring Fest 2017 Fallに参加してきた

弊社がいいよって言ってくれたので、弊社Springframework率ゼロに等しいのに平日に1日使って仕事としてSpring Fest 2017 Fallに参加してきた。弊社ありがとう。 聞いてきた話を感想や学びと一緒にまとめておく。 NOTE : 間違いのないように気をつけてはいま…

文章を見直す、って何を見直せばいいのかまとめてみた - 箇条書き・表組み編

前回は単に日本語を連ねた文章のチェック方法についてまとめたが、同僚氏の文章をよくよく見てみると実際にはドキュメント管理ツールの機能を使うことによって論理的でない文章が隠蔽されていることがあることがわかった。 ので、今回はこれらの機能を使って…

文章を見直す、って何を見直せばいいのかまとめてみた

同僚の資料を添削する機会があって、添削と議論の中でわかったことをまとめておく。 NOTE: ここで資料とは、要件を議論するたたき台資料とか設計の選択肢の検討資料を指す。 正直自分も同僚と同じ年代の頃に「これロジカルじゃないよ」とか言われても、いや…

継承か保有か

public class Price { private Long price; public Price(Long price) { this.price = price; }; public add(Price another) { return new Price(this.price + another.price); } } みたいな Price クラスがあった時に、 public class Yen { private Price p…

Clojure/conj 2017 上映会 #1 に参加してきた

NOTE ただの参加ログです。雑な情報の再生産なのでちゃんとしたやつとか本家を読んでください。 clj-nakano.connpass.com に参加してきた。 開催者様、会場の準備、ピザとコーラ、そしてそもそも開催自体していただいたこと、ありがとうございました! みた…

Node.jsの抽象構文木を操作してソースコードを生成する

「ソースコード生成してみたい!けど、そういや1年くらい前にASTって言葉を知ってから何もしてなかったな」、と思ってASTを書いてそいつを食わせてソースを生成してみた。 もともとはさいきょうのスタブサーバーを作りたいねって話から始まったからそういう…

3人チームで1日モブプロしたら、これはすごく圧縮された先行投資だとわかった

最近ペアプロの威力を実感する出来事があった。 2人の知識レベルが高まり合い、自分事感のあるソースコードが積み重ねられていくのを体験した。 そこで次はモブプロもやってみたいなぁと思っていたが、仕事で無理に導入しても自分事感の薄い対象を直す会にな…

「ドメイン駆動設計のためのオブジェクト指向プログラミングハンズオン」第2回に参加した結果、増田さんからPRにコメントをもらえた

お忙しいところ、増田さんのご厚意に甘えて図々しくPRを見てもらえないかお願いしたら、ちゃんとコメントをもらえた。 勉強になった。 対象のプルリクは以下。 github.com あらかじめ、書いていて疑問に思った箇所をこちらで注記してあって、それに対する返…

「ドメイン駆動設計のためのオブジェクト指向プログラミングハンズオン」第2回でユーザー定義型を自分で作ってみた

ちょうど弊社内の同僚と輪読会をしていた書籍の著者であるところの増田さんがやるハンズオンがあると聞いて行ってきた。 第一回はこちら。動画で見てもなかなかおもしろかった。 youtu.be アソビューについて www.asoview.com の運営会社。 椅子がキャンプ用…

オブジェクト指向言語で、自分のインスタンス変数に値をセット/更新するメソッドを許せるか

resultSet = /* どこから出てきたのかわからない値を使って処理をする */ } private function setupParameters() { $this->params = /* なんかやばい処理 */; } } みたいなコードを許せるか?という話である。 例示したコードは前処理的な役目が強調されてい…

『現場で役立つシステム設計の原則』の画面とドメインオブジェクトを一致させる章を読んだが異文化に衝撃を受けた

異文化すぎて理解に苦しむ箇所もいくつかあったが、もちろん面白い箇所もあった。 タスクベースの画面いいよね たしかに。しかも後の方で「とはいえなんでもできる画面の需要が尽きないのもわかるから、そういう時はドメインオブジェクトは分けつつもそれら…

今から購入を伴うメディアサイトを作るとしたら、どんなアーキテクチャを採用するか

> **NOTE** 思考実験なので想像に過ぎないが、より良いアイデアをお持ちの方は、ぜひご教授ください。 想像してみる。 今はだれもがスマホを持っていて、SNSを読み、バズった記事にアクセスが殺到する。 死にゆくサービスも多くある一方で、生き残ったサービ…

レガシーコードをなんとかして読み解く方法

レガシーコードをリプレイスするタスクで、レガシーコードが全然読めなくて時間を浪費しきってもまだ何もわからなくて詰んだ。 先輩エンジニアに相談したら即席コードリーディング会を開く声掛けをしてもらえて、どうレガシーコードを追うのか見ることができ…

読書会のスタイル別・メリット/デメリットを考える

自分でも読書会を開催する日が遠からず来た時に、自分ならどんなスタイルで運営するだろうか?と考えあぐねた。 今まで参加した読書会にはいくつかスタイルがあり、それぞれにメリデメがあると想像できたので、考えてみることにする。 今までに参加した読書…

現場で役立つシステム設計の原則のデータソース層とドメインモデルのつなぎこみに感動した

www.amazon.co.jp 会社の同僚と読み合わせをしているのだけど、面白い本。 Java(というかSpringBoot)を使って、ドメイン駆動設計の考えに従って変更に強いアプリケーションを設計・実装していく方法がまとめられている。 レイヤードアーキテクチャとドメイン…

ゴツいCSVファイルをなんとかしてINSERT文に書き換える

Spacemacsに取り込めない50万行くらいあるCSVを、SQLに書き換えてDBに適用する必要があった。 こういう時、毎回コマンドラインを調べてる気がするのでまとめる。 改行コードCRLF -> LF 元データがExcelのシートで来たので。 cat data.csv | sed -e 's/\r\n/\…