mike-neckのブログ

Java or Groovy or Swift or Golang

Swift の Result 型メモ

わけあって、 swift-nio-ssl を急遽触っているが、その際に Swift5 の Result 型をさわったので、そのメモ。

Swift Package Manager 5.0 のDevelop バージョンを利用する

swift-nio-ssl に PR を出して早7ヶ月、もはや Swift を忘れた頃に、「ごめんごめん、完全に忘れてた。最新の状態にあわせてくれれば取り込むよ」と言われて、準備をしようとしたところ、 swift-nio-ssl が使っている Swift Package Manager のバージョンが …

JJUG ナイトセミナー 「JVM言語を作ろう! GraalVMで遊ぼう!」に参加してきた #jjug

表題の通りの勉強会に参加してきた。 jjug.doorkeeper.jp 今回も参加したときにはキャンセル待ちで、参加申し込みの段階で 50人待ちオーバー、2日前の時点で 45 人待ち、前日 26人待ちの状態でしたが、当日に参加できるようになりました。キャンセルしてくだ…

Reactor-Netty の http クライアントを Kotlin Coroutine とともにいじってみる

Reactor-Netty と Kotlin coroutine を同時にいじっているブログ記事を見かけなかったので、勉強がてらブログを書いてみることにしました。

JSUG勉強会 - 「Spring Boot ベースの DDD サンプル徹底解説」に行ってきた話

JSUG 勉強会 Spring Boot ベースの DDD サンプル徹底解説 に行ってきました。 jsug.doorkeeper.jp DDD については、考え方的にはわかっているところもあるのですが、実際のコードを見てがっかりしたり、コードの例が理想的すぎて現実味がないといったことか…

複数の goroutine で処理をした結果を集計するようなタイプの goroutine pipeline 改

この前書いた記事のコードを改善する。 改善のヒントは『Go 言語による並行処理』p.77〜78 の部分。チャネルの所有権を割り振ることで、デッドロック、 panic 、不適合なデータの書き込みを防げるようになる。 チャネルの所有者は… チャネルを初期化 書き込…

pixela-java-client の version 0.2 を maven repository にリリースしました

version 0.1 のアップロードについてブログを書くのを忘れていましたが、ブログを書かないうちに version 0.2 をリリースしました。

複数の goroutine で処理をした結果を集計するようなタイプの goroutine pipeline

chan と sync.WaitGroup と close(channel) を駆使して組み立てる package main import ( "fmt" "time" "sync" ) var items = []string { "foo", "bar", "baz", "qux", "quux", } func main() { producer := make(chan string) consumer := make(chan string…

Pixela の Java クライアントを書いてみた

くさ 先月に合同勉強会 in 大都会岡山に行った時に、草を生やす Pixela というサービスが面白そうだったので、 Java のクライアントがないか探してみたところ、なさそうだったので作ってみました。 github.com

try-with-resources に複数のリソースを指定した場合の close の実行順

年末年始に書いていたコードで気になったことがあったので調べた。 結論だけ先に書くと、 try-with-resources に選択したリソースの順番の逆順になる。 Java9 以降で使えるようになった effevtively-final variables in try-with-resources の実行順がどうな…

合同勉強会 in 大都会岡山 にて 『Vim 入門』というタイトルで LT してきました #gbdaitokai

Vim 入門 2018/12/22 開催された 合同勉強会 in 大都会岡山 にて『Vim 入門』というタイトルで LT をしてきました。 gbdaitokai.connpass.com どうやら評判がよかったのか、 LT 枠での表彰は当初予定になかったようでしたが、審査員特別賞なるものをいただき…

Swift 用の正規表現ライブラリー

これは Qiita のアドベントカレンダー2018 の19日目のエントリーです。 qiita.com Swift の勉強を始めたのが今年の5月末からで、約半年程度 Swift をやってきました。ただ、僕は仕事では一切 Swift を書いていないので、知見に溢れた他の方のエントリーを楽…

JJUG CCC 2018 (Winterでなく)Fall に参加してきた

表記の通り、 JJUG CCC 2018 (もう 12 月だけど) Fall に参加してきた www.java-users.jp で、恒例のそのメモ Pivotal認定講師によるSpring Framework 5.1ハンズオン! 日本で唯一の Pivotal 認定講師カサレアルの 多田さん とカサレアルのスタッフによる Sp…

Vim でも AWS lambda 関数

普段 vim は h/j/k/l/d/x/0/$/:wq くらいしか使わないのですが、ひょんなことから Vim で Web サーバーがたてられると聞いたので、サーバーが建てられるなら、 http クライアントも動くのだろうと考えて、 ラムダで動くかどうか試してみることにしました。 …

JEP-330 Single-FIle Source-Code Programs って何? Java ファイルが java コマンドで実行できるってホント?! shebang でどう指定するの?調べてみた!

Java11 で取り込まれている JEP-330 すでにきしださんがブログにしている古い機能ですが、自分用のメモ。 (『古い機能』という表現はその手の界隈に人達への忖度表現) TL;DR ってなんだ??? Java 11 にとりこまれた JEP-330 は 1つの java ファイルを java…

AWS Lambda のカスタムランタイムにて Java のカスタムランタイムで関数を動かす

これは Java Advent Calendar 2018 の 7 日目のエントリーです。 Java をラムダで動かす Lambda SDK を使って、チュートリアルどおりに作成します。以上。 そうではないですね。 今回やりたいのは AWS Lambda のカスタムランタイムで Java のカスタムランタ…

Swift Package Manager プロジェクト にて CPP(C++) の関数を Swift から呼び出す

一つ前のエントリーの続き。 C++ で作られた関数を Swift から呼び出す方法。 巷には C++ の関数を Swift から呼び出す方法に関する記事が溢れているが、 XCode 前提で Swift Package Manager プロジェクトについて触れてない SPM 使っててもちょっと古い Br…

CPP(C++) の関数を C 言語から呼び出す方法

C 言語を業務でやったことがほとんどない + CPP は完全に触ったことがないので、いろいろググりつつやってみた。 最終的に Swift から C++ で定義されているオブジェクトの関数を呼び出すところまでが目標。 まず、次のような C++ の関数が定義されているも…

Amazon 製 Server-side Swift フレームワーク smoke-framework について

これは Qiita のアドベントカレンダー 2018 の初日のエントリーです。 特に Swift コミュニティに何の貢献もしていないのですが、空いてたのでついポチッと登録してしまいました。 qiita.com 2018 年の 10 月 4 日に Prime Video のエンジニアの Simon さん…

Azure 上の Ubuntu で Swift 4.2.1 を動かす

この3連休で試したのでメモ。 Azure で立てた Linux VM(Ubuntu16.04) にて、 swift の docker イメージにある通りの手順で Swift4.2.1 をインストールしたところ、エラーが出てしまって Swift アプリケーションを動かせなかった。 具体的には libdispatch-de…

Golang で XML をパースするために xsd から struct を作り出す

Go言語で XML をパースするメモ とあるxmlをgolangでパースしてデータを操作したいので、golangでxsdからstruct のコードを生成するツールを探したところ、次のようなのがあった github.com ところが、 リポジトリーの冒頭にも書いてあるように Stale since …

Stream の実行順

今更なテーマだが、たまに忘れてしまうのでメモ 次のようなインターフェースとクラスがあるものとする。 RequestValidation ある要求 T を受け付けるか拒否するか判定するインターフェース。判定した結果リクエストを受け付けられない場合は R を返す。リク…

RSocket の request-stream のサーバー/クライアントを作る

RSocket で request-stream のサーバーおよびクライアントを組み立てるときのコード例 サーバー サーバーの構築 final Disposable server = RSocketFactory.receive() .acceptor(new MySocketAcceptor()) .transport(TcpServerTransport.create("localhost",…

RSocket の Channel のクライアントとサーバーを書く

RSocket のクライアントとサーバーを書くポイント。 サーバー サーバーは requestChannel(Publisher<Payload>) を実装する。戻り値は Flux<Payload> @Override public Flux<Payload> requestChannel(Publisher<Payload> payloads) { return Flux.from(payloads) .map( payload -> DefaultPayload.</payload></payload></payload></payload>…

RSocket をちょっとだけ試してみた

Spring Fest で Spring の今後の話題としてあげられていたアイテムに RSocket というのがありました。 公式ページ (https://rsocket.io/) によると、 RSocket はTCP、WebSocket、Aeron(UDPのプロトコル)のようなバイトストリームによる伝送するためのバイナ…

CLion で以前は通っていたコードが真っ赤になってしまったときの対処

CLion で以前は問題なくコードを書けていたのが、突然ヘッダーファイルが見つからなくなった場合の対処。

Swift から regex.h を呼び出してみる

Swift の正規表現はどうなっているのか以前気になって調べたところ、 Foundation には正規表現がないため、 NSRegularExpression を使うとのことで、実際に試しに使ってみたところ、使い勝手がかなり悪くて使うのを諦めました。そこで、 C 言語に regex.h と…

Swift から C の関数を呼び出す(Swift Package Manager 使ってる)

Swift から C の関数を呼び出す方法を Swift-NIO のコードを読みながら試した。

Swift で byte の配列を標準出力に書き出す

わからんから調べた

Swift-NIO で http クライアントの書き方

Swift-NIO で http クライアントの書き方。 以前失敗してたけど、リベンジしたのでその記録。