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

cec-client

Install $ sudo apt-get install cec-utils -y TVのon/offの確認 $ echo 'pow 0' | cec-client -s -d 1 TVをon $ echo 'on 0' | cec-client -s -d 1 TVをoff $ echo 'standby 0' | cec-client -s -d 1 Raspberry Pi の HDMI 出力の設定 - 魔女の一撃

Docker on Raspberry Pi

$ sudo apt-get update $ sudo apt-get upgrade -y $ sudo apt-get install docker.io -y

USBドングル

USBモデムとしても、アクセスポイントとしても使えるUSBドングルってないかなと思って、PIX-MT100 を買いました。 SIM は、mineo の DプランのmicroSIMカードを使っています。 設定は簡単で、microSIMをセットして、PCのUSBにつないで、http://192.168.0.1 …

Raspberry Pi の HDMI 出力の設定

HDMI にモニタが接続されていない状態で起動すると、NTSC(コンポジット)に切り替わってしまうので、それを防ぐために、/boot/config.txt の hdmi_force_hotplug の先頭にある # を削除します #hdmi_force_hotplug=1 を下のように編集します hdmi_force_hotpl…

AvahiでHTTP Serverのサービスをアナウンス

Raspbian で HTTP Server を起動するようにしたので、Avahi でアナウンスするように設定したメモ HTTP Server /etc/avahi/services/http.service ファイルを次の内容で作成しました <service-group> <name replace-wildcards="yes">%h</name> <service> <type>_…</type></service></service-group>

iPhone の WIFI 設定に プロファイル を使う

macOS には、Apple Configurator 2 というアプリケーションがあって、これを使用すると iPhone 等の設定や制限を記述したプロファイルを作成することができます。 名称と識別子を入力します WIFI の SSID やパスワードを入力します 名前をつけてプロファイル…

Raspbian - Raspberry Pi 2 で scala を使う

sdkman のインストール $ curl -s "https://get.sdkman.io" | bash sbt のインストール $ sdk install sbt 起動 $ sbt console もっとメモリ領域が必要というとき /var/swap のサイズを大きくします $ sudo service dphys-swapfile stop $ sudo vi /etc/dphy…

AWS Greengrass - Java 8

AWS Greengrass が東京リージョンで使用できるようになりました。 Greengrass Core を動かす環境としてRaspberry Pi 3 を使います $ sudo -s # update-alternatives --install /usr/bin/java8 java8 /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java …

Java 9 - JAXB が java.lang.NoClassDefFoundError

Java 9(JDK 9)をインストール後、sbt プラグインの内部で JAXB を使っているところで、java.lang.NoClassDefFoundError が発生したのでその対応メモ SBT_OPTS="--add-modules java.se.ee" sbt

sbt-aws-cloudformationの使い方

sbt プラグインからAWSのCloudFormationを使う場合の手順です。 準備 sbt プロジェクトの project ディレクトリの plugins.sbt に次の内容を追記します addSbtPlugin("com.pigumer.sbt.cloud" % "sbt-aws-cloudformation" % "5.0.22") build.sbt に import …

DockerでConcourse CIを動かしてみた

Docker Repositoryに書いてあるのと同様ですが、https://github.com/PigumerGroup/sbt-aws-cloudformationを例に手順を説明します。 1. キーを作成し、web と worker の信頼関係を構築します mkdir -p keys/web keys/worker ssh-keygen -t rsa -f ./keys/web…

sbt-aws-cloudformationをMaven Centralに登録したときの手順メモ

Using Sonatype Sonatypeにsbt-aws-serverlessを公開しました 上記を参考に作成したSBTプラグインをMaven Centralに登録した手順です。 Sonatypeの設定とPublishの手順は、OSSRH Guideに記述されています。 2つの有効なURLが必要です。 公開するプロジェクト…

Wake console screen with SSH

Raspberry Pi のコンソールをSSH経由でブランクから復帰させるコマンド $ sudo sh -c "setterm --blank poke --term linux > /dev/tty1 < /dev/tty1" 逆にブランクにする場合 $ sudo sh -c "setterm --blank force --term linux > /dev/tty1 < /dev/tty1" Di…

Raspberry Pi から LPC1114 への書き込み

lpc21isp のソースを眺めていると、Raspberry Pi の GPIO を使って、リセットとISPモードの制御ができるようになっていたので試してみました Raspberry Pi と LPC1114の配線 lpc21isp のコンパイル lpc21isp のソースをダウンロードして、次のようにしてビル…

SDKMANを使ってRaspberry PiにScalaをインストール

SDKMAN まず、zip をインストールします $ sudo apt-get install zip SDKMANをインストールしてパス設定等を反映します $ curl -s "https://get.sdkman.io" | bash $ source "$HOME/.sdkman/bin/sdkman-init.sh" sbt, scala をインストールします $ sdk inst…

Raspberry Pi で Arduino のスケッチを書き込む

Raspberry Pi Model B+ Arduino Uno R3互換ボード マルツのArduino互換ボード Maruduino UNO R3【MABTB-UNO-R3】ジャンル: おもちゃ・ホビー・ゲーム > おもちゃ > 知育玩具 > その他ショップ: マルツオンライン価格: 2,220円 Raspbian の設定 arduino # apt…