Route53のAliasレコードでURLスワップによるBlue-Greenデプロイをしてはいけない

AWS

Route53のAliasレコードはCNAMEみたいなものと思って、ALBなどに使っていたけれど、実際DNSクエリすると直接Aレコードとして返ってくる。 なので、AliasレコードをスワップしてBlue-Greenデプロイしようとすると、ピニングしているやつが入れ替え前の環境を…

Kinesis Data Streams のパフォーマンス設計のメモ

Kinesis Data Streams のパフォーマンスの見積もりでミスをして、特定のシャードで GetRecords.IteratorAgeMilliseconds が徐々に拡大してく事態になった。 ストリームからの出力は RawデータバックアップのためのFirehoseと、ストリーム処理を行うKCLのMult…

AWS EFSのパフォーマンス設定についてのメモ

AWS EFSをバーストモードで使っていたら、クレジットを使い果たしそうになるという事態になった。 プロビジョンドスループットのモードに設定して事なきを得たが、プロビジョンドスループットは、東京リージョンで、 1MB/s あたり7.2USDかかる。 こうなった…

AWS ソリューションアーキテクトアソシエイトを取得した

会社からAWS認定資格の補助が出ないので、出るようになるまで受験しないでおこうと思っていたが、 出るようになる気配はないので2019-02-26に受験して、結果は合格だった。 勉強時間は1週間くらいかけて、この本を1冊読み、練習問題を解いた。 徹底攻略 AWS…

gstreamerでMJPEGからH.264などにトランスコードするときのメモ

Amazon Kinesis Video StreamsでPanasonicやAXISのMJPEGの映像をアップロードするメモ - 続かない日記 前回、MJPEG APIのWebカメラからのイメージをH.264にして、Kinesis Video Streamsに送る際に、下のようなパイプラインを組んでいたが、 どうもフレームレ…

Amazon Kinesis Video StreamsでPanasonicやAXISのMJPEGの映像をアップロードするメモ

Webカメラの映像をAmazon Kinesis Video Streamsにアップロードしてみている。 Kineisis Video StreamsではアップロードにKinesis ビデオストリーム プロデューサーライブラリ - Amazon Kinesis Video Streamsを使うと良いそうで、 gstreamerの kvssink とい…

ngx_mrubyでアクティブヘルスチェックするTCPのロードバランサを作るメモ

半年くらい前の話、RDSのリードレプリカのロードバランサを置きたくて、TCPのロードバランサを試していた。Cloud Watchのメトリクスによって、振り分け対象から除外したかったので、アクティブヘルスチェックできるものを探していたが、 ELBのNetwork Load B…

STM32F7 Discoveryでmbed_blinkyとかが動いた

DISCO_F746NGはmbedプラットフォームに登録されていますが、Pre-order のリンクがあるだけで、オンラインコンパイラに追加できません。しかしmbed-srcにはすでにDISCO_F746NGのソースがありますので、GCCでビルドして使えるかためしてみようと思います。GCC…

STM32F746G-DISCO きたよー

STM32F7 の Discovery ボードが Digikey から届きましたよー。mbed-mruby を載せて遊ぼうと思いましたが、mbed プラットフォーム登録されただけでまだオンラインコンパイラに登録できないようです。憤慨してる人たちのスレも立っているし。怒りの矛先は GR-P…

mbed-mruby GVL版マルチスレッドのヒープ使用量を調べた

しばらく間が空いたけれども、mbed-mrubyのスレッドの話の続きです。下のmrubyのGVLでのマルチスレッド実装がされていますので、これをmbedにのせてみました。目的はmaster版とのスレッドが動いている時のヒープ使用量の比較です。mrubyにGVLを使ったmulti-t…

mbed で非同期メッセージドリブンなスレッドクラスを作った(2)

mbed で非同期メッセージドリブンなスレッドクラスを作った - くくしたいブログsabme.hatenablog.com 前の記事で書いた通り、subscribeでメンバ関数以外も登録できるようにしてみました。 実行結果は前回と同じ。自由度は高いけど、これはこれでどうかと思う…

mbed で非同期メッセージドリブンなスレッドクラスを作った

mbed rtosのThreadクラスはそのままでも簡単ではあるのですが、Thread と Mail をより簡単に使うための非同期処理用スレッドクラス Actor を作りました。http://developer.mbed.org/users/mzta/code/actor/サンプル1 まず、イベントドリブンにするためのイベ…

mbed で NEON を使ってみる

NEONって使ったことないんですが、GR-PEACHのCPUはARM-CortexA9なので、NEON命令が使えるはずです。mbedのオンラインコンパイラ(ARMCC)では使えるのでしょうか。試してみました。

mrbgemsをmruby-mbedだけにしたらVM1インスタンスで100Kbyteくらいになった

タイトルは本文。mbed-mruby で mruby がとってるヒープサイズを調べた - くくしたいブログの続きで、mrbgems削ったら、ヒープ使用量が半分くらいになりました。 どんな機能が無くなったのかは把握できていません。 mirb - Embeddable Interactive Ruby Shel…

mbed-mruby で mruby がとってるヒープサイズを調べた

GR-PEACHはデフォルトのヒープサイズを512Kしかとってません(RAMは10Mあるのに。mbed-srcいちいち直すのはめんどい)。最近はmbed(GR-PEACH)にmrubyを乗せて遊んでいますが、mrubyでThreadを作ると、2個めのThreadでもうヒープ枯渇します。これは現状Thread作…

mruby で割り込みハンドラから呼ぶ処理をブロックで渡す際のやり方

Tickerはmbedでインターバルタイマを扱うクラスです。前に、Tickerの実装を、Ticker.new するときのブロックとして、タイマハンドラを渡したいけれどmrb_stateコンテキストをどう分けるのかわからないと書いたのですが、mruby-threadを参考に実装できました…

C++ で継承関係のあるクラスを mruby のクラスとして実装した際のやりかたメモ

mruby-mbed で、mbed の Ticker と Timeout を mrbgems に実装したのでメモ。mbed の Ticker 、Timeout は下のような継承関係にあるので、mruby-mbed でもそのままこれを実装することにします。 Timeout まず、Timeout クラスを定義する際に、mrb_define_cla…

GR-PEACHでRAMディスク(Mbed::MemFileSystem)

昨日、ルネサスさんよりGR-PEACHのRev.Cボードと、GR-KURUMIを頂きました。まだ電源も入れてないですが、使うのが楽しみです。さて、mbedにはFATFileSystemというライブラリがあって、この中にMemFileSystemというクラスがあります。GR-PEACHはRAMが10Mもあ…

mbed(GR-PEACH) を使ってみて mruby をのせた話

ルネサスがやっている"がじぇっとるねさす"というプロジェクト(?)で、GR-PEACHというマイコンボードのプロデューサー活動という企画があり、発売前のGR-PEACHボードが使えるというので、応募したら当たったのが11月末頃。そして、3/21に最終発表会というの…

bonsai lab. BS01 を組み立てた話

ブログは続かないなーと反省しつつ、けっこうなイベントだったので書いておく。会社の同僚とbonsai lab.のBS01という3Dプリンタキットを組み立てました。 9:00から21:00まで、お昼休み1時間を除いてみっちり作業して、やっとこさ完成した時にはもう帰りたく…

シェルスクリプトでの乱数

【レビュー】シェルやシェルスクリプトで乱数を使う2つの方法 | マイナビニュースいつもこうやってたんで、どうにかならないものかと思ってたけど、 for i in `seq 5`; do echo $i; done | shuf | head -n1 こうやるんですね。 echo $(( $(od -vAn -N4 -tu4 …

リングバッファ

今回は、リングバッファについてです。 Ring Buffer モジュールは、utils/ringbuf.c、utils/ringbuf.h に含まれています。 しかしながら、リードポインタのライトポインタ追い越しとか、1byte毎にポインタを 割り込み抑止して更新するとか、ちょっといただけ…

PWM 割り込み

先日から、PWMの使い方について調べてきました。今日は、PWM の立ち上がり、立ち下がりで割り込みをとる設定についてです。PWM - Vakna! PWM その2 - Vakna!PWM割り込みを使う場合、PWMを使うための設定に加えて、以下の設定が必要です。 割り込みハンドラの…

PWM その2

タイマのPWMモードで生成される波形についてです。 データシートをちゃんと読んでいなかったので、PWMを2本出した時に想定外の波形になっていることに気づいたのでメモします。PWMモードでは、PWMの周期にあたるLoadと、dutyを決めるMatchを設定する必要があ…

Simple Task Scheduler

今回は、StellarisWareのSimple Task Schedulerライブラリをみてみます。Simple Task Schedulerは、utils/scheduler.c で提供されます。ユーザーズガイドによると、 一定間隔での関数呼び出しす必要のあるアプリケーションを簡単に実装する方法を提供する 呼…

アライメントの話

stellarisのようなARMのCPUでは、メモリアクセスの際のアドレス制約があるので、コンパイラは構造体をアライメントに従って配置してくれます。しかし、ローンチパッドのようにRAMが少なかったり、構造体をバッファからシリアライズ・デシリアライズしたい場…

PWM

TivaCローンチパッドのTM4C123GH6PMには、16ch PWM出力がついているようですが、stellarisローンチパッドのLM4F120には、PWMモジュールがついていません。代わりにタイマをPWMモードで使うことができるので試してみます。まず、タイマをPWMモードで使う場合…

BitBand

今回、ライブラリの使い方は置いといて、ARM Cortex-MのBitBandという機能について見てみます。BitBandについては、こちらでわかりやすく説明されています。要約すると、RAMやレジスタを複数箇所で触っている場合、1ビット操作をしたいときに、普通はディス…

シリアル通信

Stellaris Wareでは、いくつかの方法でシリアル通信が可能です。今回は、ユーティリティライブラリのUART Standard IOモジュールを使ってみます。UART Standard IOはutils/uartstdio.c、utils/uartstdio.hで提供されます。UART上で、C標準ライブラリのstdio.…

Micro Standard Library

先日から、Stellarisローンチパッドで遊んでいます。Stellarisローンチパッドには、Stellaris Wareというライブラリ群がバンドルされているので、その使い方を調べていきます。今回はMicro Standard Libraryという、C標準ライブラリの非常に小さなサブセット…