sbt

AttributeKey キー 型 説明 projectCommand sbt.internal.util.AttributeKey[scala.Boolean] sessionSettings sbt.internal.util.AttributeKey[sbt.internal.SessionSettings] stateBuildStructure sbt.internal.util.AttributeKey[sbt.internal.BuildStruct…

とりあえずメモ(Debianの日本語化とか)

Debian sudo # apt update # apt install sudo 日本語化関連 # apt install locales-all # dpkg-reconfigure locales # apt install task-japanese-desktop # apt install ibus-anthy Settings の国際化のところで、Japanese(anthy) を足したり、インプット…

英語の勉強

すきま時間に英語の勉強をしていて、今日は simplearchitect.hatenablog.com を読んで、早速Kindle版の英英辞典ないかなと探して、 http://amzn.asia/2gXAxBz を買った。 TOEIC の問題集のCDを聴いたり、いろいろトライはしているが、なかなか進歩しないなと…

Raspbian に Java 9 をインストール

Raspbian の Oracle Java 8 のバージョンを確認してみます。 $ sudo -s # apt update # apt search oracle-java8-jdk oracle-java8-jdk/stable 8u65 armhf Java™ Platform, Standard Edition 8 Development Kit 合わせて、OpenJDK の方も確認してみます。 # …

Java 8 と Java 10 での MixerInfo の並び順の違い

macOSでJDKのインストールにsdkmanを使っての話ですが、Java 8では声を出してくれていたコードが、Java 10で実行すると喋らないなと悩んでいたのですが、 単純にAudioSystem.getMixerInfo()が返す順序が変わっていただけということだった。 確認するためのコ…

京アジャ

今日は久々に京アジャに参加した。 オープンジャム楽しかった。

ECS タスクを Fargate でスケジュール起動

Fargate で ECS タスクを起動するためには、launchType で "FARGATE"、ネットワーク設定で awsvpc として、サブネット、セキュリティグループ等を設定する必要があります。 これらのことが、CloudWatch Event の Rule でまだ設定することができないようです…

Fargate がついに東京に

Service 首を長くして待ってましたが、ついに Fargate が東京にやってきました。 ということで、以前米国東部 (バージニア北部) に作っていたものを、 東京(ap-northeast-1)に変えて実行してみました。 GitHub - PigumerGroup/aws-ecs-fargate Task polly で…

スレッド数を CloudWatch のカスタムメトリクスとして Publish する

micrometer を使ってスレッド数を CloudWatch のカスタムメトリクスとして Publish してみました GitHub - takesection/micrometer-cloudwatch-example // https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-cloudwatch libraryDepende…

スレッド数を CloudWatch のカスタムメトリクスとして Publish する

Amazon CloudWatch の概念 - Amazon CloudWatch package jp.pigumer.monitor; import com.amazonaws.services.cloudwatch.AmazonCloudWatchAsync; import com.amazonaws.services.cloudwatch.AmazonCloudWatchAsyncClientBuilder; import com.amazonaws.serv…

TOTP - Time-Based One-Time Password

TOTP について調べるため、AWS の MFA で使うことのできる 仮想 MFA アプリケーションと同様の機能を持つアプリケーションを作成してみました。 GitHub - takesection/onetimepassword TOTP の仕様 RFC 4226 - HOTP: An HMAC-Based One-Time Password Algori…

DynamoDB - query

クエリの操作 - Amazon DynamoDB には、 "A single Query will only return a result set that fits within the 1 MB size limit." 「1 つの Query は、1 MB のサイズ制限の範囲内の結果セットだけを返します。」と書かれています。 query を実行したとき返…

Akka Streams - Broadcast と Thread

Broadcast 下のような Broadcast を使ったコードを記述します package jp.pigumer.akka import akka.actor.ActorSystem import akka.event.Logging import akka.stream.scaladsl.{Broadcast, Flow, GraphDSL, Sink, Source, ZipWith} import akka.stream.{Ac…

Akka Streams - javax.sound を使って mp3 を再生する

javax.sound を使って、mp3 を再生する package jp.pigumer.cast import java.io.{ByteArrayInputStream, ByteArrayOutputStream, OutputStream} import akka.stream.scaladsl.Flow import akka.util.ByteString import javax.sound.sampled.AudioFormat.Enc…

Akka Streams - Source

Source(1 to 10) のように Source と宣言されているものはもちろん Source ですが、 Source ではじまっていて、Sink で終わっていない場合は、Source として扱うことができます。 val source: Source[String, NotUsed] = Source(1 to 10) .via(Flow[Int].fol…

Future のテスト

Future は、処理がブロックされず、いずれ答えを返してくれる便利なものですが、 テストコードのように結果を検証したい場合は処理の完了を待つ必要があります。 下のサンプルコードでは、Future を Await.ready を使って、実行が完了するのを待ちます。 Awa…

Raspberry Pi の画面を回転

PDF や電子ブックのようなドキュメントを読みたいときは特にですが、画面を回転させて縦にしたくなります。 Raspberry Pi (Raspbian) で 90 度回転させたい場合は、/boot/config.txt にdisplay_hdmi_rotate=1 のように記述してリブートすれば反映されます。 …

Akka Streams - Iterator を Source として使用する

サンプルコード package jp.pigumer.akka import akka.actor.ActorSystem import akka.event.{Logging, LoggingAdapter} import akka.stream.ActorMaterializer import akka.stream.scaladsl.{Keep, Sink, Source} import scala.concurrent.ExecutionContext…

Akka Streams - Paginator

一覧表示でよくある Paginator を実装してみます。 このサンプルコードでは、Paginator の対象となるデータは、Stream.from(1) で生成するため、1 からはじまる無限個のデータとなります。 そのため、すべてのページのデータを作成してから、必要なページの…

遅延評価 val

Scala の lazy val についてコップ本(第2版) では、遅延評価 val は、2 回以上評価されることはない ... 初めて評価された後にその結果値が格納され、その後で同じ val が使われるときに結果値が再利用される。とあり、たしかに次のような lazy val を記述…

Akka Streams - エラー時のリスタート

Actor の場合の backoff supervision pattern for actors (Supervision and Monitoring • Akka Documentation) のように Akka Streams には、RestartSource, RestartSink, RestartFlow があります。 このサンプルでは、RestartSource を使って、リトライを 2…

Akka Streams - 時間のかかる Flow をタイムアウトにより失敗させる

あるフローの処理時間がかかりすぎた場合に異常と判断してタイムアウトさせるために、 completionTimeout を使ったサンプルコードです。 package jp.pigumer.akka import akka.actor.{Actor, ActorSystem, Props} import akka.event.{Logging, LoggingAdapte…

Akka Streams - KillSwitch で外から FlowShape を制御する

KillSwitch をフローで使用して、viaMat(killSwitch)(Keep.right) で、後で使用できるようにします。 サンプルコードでは、フローの完了を取得するため、toMat(sink)(Keep.both) を使って、KillSwitch と Future[Done] の両方を受取り、 2 秒後に KillSwitch…

Akka Streams - async, groupBy

async まず async を使わないコードからはじめてみます。 この場合は、単純に 1 から 10 まで順番に処理が実行されます。 package jp.pigumer.akka import akka.actor.ActorSystem import akka.event.{Logging, LoggingAdapter} import akka.stream.scaladsl…

Akka Streams - Source に Actor, Queue を使うコード

Actor を使う DeadLetter を Subscribe する Actor を Akka Stream で実装してみます コードは下のようになります val actorRef: ActorRef = Source.actorRef[DeadLetter](100, OverflowStrategy.dropTail) .to(Sink.foreach { case DeadLetter(message, _, …

パターンマッチ

Spray Json などを使って JSON を読み込んだあとに、ちょこっとキー名だけ変えたりしたい場合があるのですが、こうしたときパターンマッチ使うととても簡単にかけそうだなと試してみました val transformed = jsobject.filelds.map { case ("id", JsString(i…

mobileprovision を Scala(Java) でロードする

iOS アプリケーションの ipa ファイルの mobileprovision を署名のないイメージにするためのコードです package com.pigumer.ipa.test import java.io.FileInputStream import java.nio.charset.StandardCharsets import java.util.zip.ZipInputStream impor…

Network設定(1)

CLI でネットワーク設定を操作 Rasberry Pi bridge を作ってみる $ sudo -s # ip link add name br0 type bridge # ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 82:db:31:03:84:ed txqueuelen 1000 (イーサネット) RX packets 0 bytes 0 (0.0 B) RX errors 0 d</up,broadcast,running,multicast>…

Google Home mini

Raspberry Pi 2 # apt-get update # apt-get install -y nodejs npm libavahi-compat-libdnssd-dev # npm cache clean # npm install npm n -g # n stable $ npm init $ npm install google-home-notifier const googlehome = require('google-home-notifier…

Docker の restart policy

docker run 時に --restart で restart policy を設定できます(デフォルトは no)。 Flag Description no 再起動しない on-failure エラーで停止したときは再起動 unless-stopped 明示的に停止していなければ再起動 always 常に再起動 docs.docker.com