技術メモ

技術メモ

ラフなメモ

2019-01-01から1年間の記事一覧

GoでMQTTのpub/subを試す

MQTT Broker MQTT Brokerはmosquitoを使うことにする。Dockerで立ち上げる。 > docker run -it -p 1883:1883 -p 9001:9001 eclipse-mosquitto 1577610628: mosquitto version 1.6.8 starting 1577610628: Config loaded from /mosquitto/config/mosquitto.co…

GoでポインタのString()をしたときの興味深い結果

Go

はじめに 標準出力する際に fmt.Print を用いることがあると思います。ポインタを fmt.Println に渡すと興味深い結果が表示されることがあります。その例を紹介します。 まずは以下の実装例を見てください。単に fmt.Println で time.Now() の変数とそのポイ…

Goのエラーの生成方法

Go でエラーを生成するときにどのように生成するのがいいのか、少し考えました。 私はエラーを扱うときはたいてい pkg/errors を使うようにしています。エラーをスタックできるのが便利ですよね。 エラーの起点になるときには fmt.Errorf() や errors.New() …

「Go言語でつくるインタプリタ」を読んだ

「Go言語でつくるインタプリタ」を読んだ感想を連ねます。 Go言語でつくるインタプリタ作者: Thorsten Ball,設樂洋爾出版社/メーカー: オライリージャパン発売日: 2018/06/16メディア: 単行本(ソフトカバー)この商品を含むブログを見る インタプリタをつく…

インターフェース値のnilを扱うということ

インターフェース型 Golangのインターフェース型は、具象型がインターフェースのインスタンスとして見なされるために必要なメソッドの集まりを定義します。例えば標準パッケージのioに含まれる以下のReaderやWriterはインターフェース型です。 package io ty…

gonum/plotを用いたSVGファイルの生成

plotするデータのサンプルは Example plots を用いることにします。 package main import ( "bytes" "io/ioutil" "math" "math/rand" "gonum.org/v1/plot/vg/draw" "gonum.org/v1/plot/vg/vgsvg" "gonum.org/v1/plot/vg" "gonum.org/v1/plot" "gonum.org/v1/…

GolangでWebSocketを使ったHTTPサーバを実装する

はじめに GolangでWebSocketを使ったHTTPサーバを構築します。 WebSocketの仕様は RFC6455 で定められています。Webアプリケーションにおいて、双方向通信を実現するための技術規格です。Ajaxではブラウザからサーバにデータの送信要求を出す手段でした。Web…

Golangのnil sliceとnil map

nil sliceとempty sliceの違い nil sliceと空のsliceとは同じではないが、外から観測できる振る舞い(機能)は同じ len()もcap()もともに0を返す package main import "fmt" func main() { var s1 []int s2 := []int{} s3 := make([]int, 0) s34= nil fmt.Prin…

GolangのContext

背景など https://blog.golang.org/context Goを使ったサーバでは、それぞれのリクエストはgoroutineを用いて扱われる。リクエストハンドラーは別のバックエンドのデータベースやRPCサーバにアクセスするために別のgoroutineを生成して処理する。これらのgor…

Go言語による並行処理の点検読書

Go言語による並行処理作者: Katherine Cox-Buday,山口能迪出版社/メーカー: オライリージャパン発売日: 2018/10/26メディア: 単行本(ソフトカバー)この商品を含むブログを見る 全体として何に関する本か、何がどのように詳しく述べられているか Goでの並行…

Go言語に入門

Sphinxの勉強も含めて、Go言語に入門した時にまとめた内容を以下にまとめておきました。 d-tsuji.github.io

Streamを使ってfor文をStreamで書き換える

概要 コードレビューなどをしている/されているとJava8よりも前の文法で記述されたコードに対して、Streamを使ってみましょう!というレビューが返ってくることがあります。for文をStreamに置き換える簡単な例を見てみます。

Running Webpack with GradleをWindowsで試した時にしょうもないエラーにはまった

Running Webpack with GradleをWindowsで試した時にしょうもないエラーにはまったときの原因と解決策です。

ローカルのNexus3にnpm publishでNodeモジュールをデプロイする

手順 参考[4]の手順に沿って実施すればできます。(英語ですが) Nexus3のインストール 公式ドキュメントである参考[1]を用いて、Nexus3をローカルにインストールします。 インストール後はcliから起動させます。 nexus-3.16.2-01\bin>nexus.exe /install Inst…

ソースコード管理のバージョニング戦略

バージョニング戦略 Apache [1]のApacheの例を考えます。[2]でも同様のコンセプトに基づいています。 Patch Version ソース互換性/バイナリ互換正を担保する。パッチリリースできるのは関数の実装のみ。APIの変更やpublic関数のシグネチャを変更する、関数パ…

並行開発/運用のためのブランチモデルを整理する

Git

GitFlowをベースにしたリリース時期が異なる複数バージョンの並行開発に耐えうるGitFlowを検討しています。まずは標準的なGitFlowの役割を整理した上で、並行開発に耐えうるブランチモデルを検討することにします。 GitFlow GitFlow はVincent Driessenによ…

CompletableFutureでJavaの非同期処理を試す

CompletableFutureの公式ドキュメントはこちら CompletableFutureはタスク並列の記述に向いています。

Springのトランザクション管理機構を試す

宣言的トランザクション管理 トランザクションそのものの説明は割愛します。本稿ではSpringの @Transaction を用いたトランザクション管理機構について考えてみます。 概要 宣言的トランザクションのイメージから掴んだほうがわかりやすいと思います。以下の…

Springの非同期処理機構を試す

Springの非同期処理を試してみます。まずは公式チュートリアルを試しました。

Semaphore(セマフォ)でスレッドの流量を制御する

概要 Semaphore(セマフォ)とはリソースへの同時アクセススレッド数を制御することができる機構です。Semaphoreには計量Semaphoreと二値Semaphoreがあります。java.util.concurrent.Semaphore は計量Semaphoreです。 https://docs.oracle.com/javase/jp/8/doc…

SQSをjava-sdkで試してみる

SQSをJavaのSDKを用いて試してみます

ThreadLocalを試す

概要 https://docs.oracle.com/javase/jp/8/docs/api/java/lang/ThreadLocal.html このクラスはスレッド・ローカル変数を提供します。これらの変数は、getメソッドまたはsetメソッドを使ってアクセスするスレッドがそれぞれ独自に、変数の初期化されたコピー…

gRPCに入門する

公式ドキュメントをベースにgRPCに入門します。

Javaのシリアライズ・デシリアライズを試す

Javaのシリアライズ・デシリアライズについて学びます。

Javaのjava.nioを試してみる

ノンブロッキングI/OをJavaで扱うにあたって、 java.nio について学んでおきます。

JavaでいろいろなEcho Server/Clientを作る

JavaのSocket通信を試してみたいと思い、いろいろなEcho Server/Clientを実装しました。 Socket通信に関連するクラスは java.net にまとまっています。

Javaのデザインパターンを整理(振る舞い編)

Javaのデザインパターンについて復習します。プログラムをデザインするにあたって、参考にできる引き出しは多く持っておきたいです。

Javaのデザインパターンを整理(構造編)

Javaのデザインパターンについて復習します。プログラムをデザインするにあたって、参考にできる引き出しは多く持っておきたいです。

Javaのデザインパターンを整理(生成編)

Javaのデザインパターンについて復習します。プログラムをデザインするにあたって、参考にできる引き出しは多く持っておきたいです。

Javaのリフレクションでフィールドを扱ってみる

リフレクションの勉強をします。今回はフィールドに関するリフレクションについて勉強します。