ミルク色の記録

やったこと、やってみたこと

はじめてOSSライブラリを育てた話

公開してるOSSライブラリが自分史上初めて(微々たるものではあるけれども)誰かに使われるようになったので振り返ってみる。 対象のライブラリはこれ。 github.com 開発のきっかけ Raspberry Piを使ったデバイス開発をしていると、システムに明るくないエン…

シリアル接続同士をプロキシするツールを作った

とある通信モジュールをM5Stack(UART 2)で使う必要があったのだけど、通信モジュールの評価ボードがUSBでシリアル接続するものなので直接繋げないという状態になった。 幸い、USBシリアル変換ケーブルのTTL-232R-3V3が手元にあったので、通信モジュール ->…

Raspbianのネットワーク管理をNetwork-Managerにした

Raspbianのネットワーク設定周り、大昔は/etc/network/interfacesだったのが、 いつの頃からか/etc/dhcpcd.confで設定するようになって、固定IPにするときとか /etc/dhcpcd.confを編集している。 加えて、Wifiを設定するのであれば/etc/wpa_supplicant/wpa_s…

Raspberry PIをWifiアクセスポイントにしてWifiネットワーク設定をできるようにした

タイトルが変なので何言ってるんだコイツ状態になるけど。 時々見かける、最初はデバイス自身がWifiのアクセスポイントになって、PCなどから接続して実際に使うネットワーク設定を行う...というやつをRaspberry PIでやってみるという話。 作ったものはこれ。…

Webプログラマが業務でIoTデバイス開発をして思ったこと

自分は本来Webプログラマのつもりなのだけれど、会社のやんごとなき事情により、今年はRaspberry PIやESP32を使ったいわゆるIoTデバイスアプリの開発をすることが多かった(あと、Kotlin使ってAndroidモバイルアプリ開発もやった)。 もともと、時々調査手伝…

raspi-configのAdvanced OptionsでOverlay FSを使ってみた

きっかけ 先日、メモリの設定を変えようとraspi-configを起動して、Advanced Optionsを開いたらメニューにOverlay FSが増えていることに気がついた。 Advanced Options 説明にEnable/Disable read-only file systemとあるので、これって/パーティションを読…

Raspberry PIでRTC(DS3231)を使った

Raspberry PIでなんやかんややっていると、HTTPSやWifiの証明書あり認証とかで時計の重要性に気がつくことが多い。 で、NTPで確実に同期取れるの待つsystemd用サービスとか作って対処したりしていたけど、やっぱリアルタイムクロックあったほうが良いよなー…

Niigata.js #2に行ってきた

niigata-js.connpass.com 正式ナンバリングとしては2回目とのこと。今回も参加。 新潟で行けるJavaScriptコミュニティはありがたいので、勢いで発表込みで参加申込んだけど、最近どんどんJavaScriptから遠ざかってるのでネタは結構迷った。 で、結局今でもま…

MOBILE CREW NIIGATA 2019に行ってきた

10月11日に行われたMOBILE CREW NIIGATA 2019に行ってきた。 www.mobilecrew.jp 参加までの経緯 Twitterで流れてきて開催を知って、最初は「モバイルアプリ系かー」と思っていたけど、後々上がってきたトークセッション見てたら、アプリアーキテクチャ概論と…

Raspbianのinitramfsをカーネルのアップデートに追従するようにした

Raspberry PIでrootfsのReadOnly化やUSB OTGとかで試してきて、ちょっとだけinitramfs使ってやりたいことやれるようになった。 だけど、apt-get upgradeでカーネルが更新されると、既存のinitramfsを作りなおさなければならないことに気がついた。 しばらく…

RaspbianでOS再起動せずにネットワーク再起動で設定反映できるようにした

Raspbianのいつのバージョンだったか忘れたけど、固定IPアドレスの設定を/etc/dhcpcd.confに行うようになったあたりで、変更したネットワーク設定をサービス再起動で適用する方法がよくわからなくなった。 とりあえずdhcpcd.confで設定しているのだからdhcpc…

Raspberry PIでNTPの同期が取れてからアプリケーションのサービスを起動するようにした

Raspberry PIにはRTC(リアルタイムクロック)が搭載されていないので、ボード上に日時を保存しておいてOSのシステム時計に反映する方法はデフォルトではない。 ただ、昨今のRaspbianはsystemd-timesyncdによって、ファイルシステムに最後の日時を保存してお…

極力バックエンドを書かずに異なるドメインのWebサイトからデータを取得するCORS Proxyというのを作った

作ったと言っても、実際コードを書いたのは2年近く前だったのだけど。 当時書いてたアプリのために作っておいたのをずっと放置していたが、最近ちょっと使う用途があったので久しぶりに触ったら何もかも忘れてて(README書いてなかった)えらい苦労した。改…

Raspberry PI ZeroのUSB OTGで遊んだ

Raspberry PI Zeroのセットアップで、電源供給用じゃない方のマイクロUSBポートとホストPCを繋いで仮想ネットワーク経由で接続する云々の情報をみて、どういう仕組みでやっているんだろうと調べてみたら、Raspberry PI ZeroではUSB OTG(On-The-Go)が使えると…

Webプログラマの手持ちスキルを駆使してRaspberry PIに電源OFFボタンをつけた

回路組んで基盤作ったりとかできないので、Raspberry PI用のLCD購入して、UI作って電源OFFボタンをつけた。 UIはLinuxのGUIアプリケーションを書く...のは回避して、ブラウザでできるようにして自分の手持ちスキル側に寄せた(Electron使うって手もあったか…

Raspbianに追加したextrafsパーティションのためのツールを作った

以前にRaspbianのデフォルトOSイメージにextrafsパーティションを追加する手順をまとめて、スクリプト化した。 今回は追加したextrafsパーティションをSDカードの最大容量まで拡張するツール(expand-extrafs)と、SDカードの違いで起こる問題を考慮してOSイメ…

RaspbianのrootfsをReadOnlyにした

fsprotectとroot-ro Raspberry PIでRaspbianを使っている時、rootfsのReadOnly化については、fsprotectを使った方法を過去に試したことがあった。 github.com fsprotectはdebianパッケージとしてインストールして、/boot/cmdline.txtにfsprotectパラメータを…

RaspbianのOSイメージのパーティションを分割した

動機 公式で配布されているRaspbian OSイメージはbootとrootfsのパーティションのみで構成されていて、 Raspberry PIに入れて起動するとrootfsが自動でSDカード全体まで拡張される。 そのまま常時稼働で運用していると、OSのログやtmpやswapの利用でSDカード…

Raspbianの初期起動でのrootfsパーティション自動拡張の仕組みを調べた

環境 試したRaspbianのイメージは2018-11-13-raspbian-stretch-lite.img。母艦はLinux PCで調べた。 きっかけ Raspbian Jessieのいつ頃からか忘れたけど、イメージをSDカードに焼いてRaspberry PIに入れて起動すると、 自動でrootfsのパーティションがSDカー…

Elmのupdate: Msg -> Model -> (Model, Cmd Msg)にあこがれてJavaScriptの状態管理用のライブラリ作った

作ったのはこれ。 www.npmjs.com 動機 普段Reduxで非同期なことをやる時にredux-thunkミドルウェアを使っている。 で、次のようなことをするときにいつも悩む。 非同期にデータを取ってくるアクションで取得前にローディングマスクを表示し、取得完了後にロ…

E2Eテストの実行時間を1/2とか1/4に縮めた

前回も触れたけど、普段Seleniumを使ってpythonでE2Eテストを書いている。 E2Eテストの接続先サーバはdocker-composeを使って必要なものをガッと立ち上げていて、 テスト内でredisやDBに直接接続してデータの初期化をしながらやっている。 使っているdocker-…

2019年現時点の自分のWebフロントエンド開発環境

数年前、年末にその時点での自分のWebフロントエンド開発まわりの環境を記録用にまとめていたけど、 それからすっかり怠けてしまい、去年の暮れには久しぶりにやろうと思っていたものの、気がついたらすっかり年が明けていた。 最近色々ずっとアレな感じでメ…

Selenium WebDriverでテスト書くのにAsync/Awaitを使ってみた

E2Eテストを書くときにSelenium WebDriverを使っているんだけど、テストをJavaScriptで書くと、下みたいな感じでPromiseのチェーンだらけになるのがあまり好みじゃなかった。 const assert = require('power-assert'); const chrome = require('selenium-web…

observable-storeとfreezable-storeというのを作ってみた話

きっかけ ビューを作るのにReactを使っているとpropsで渡すものはなるべくシンプルなオブジェクトにしたいかな...みたいな気分になる。 (雑な例であまり良くないのだけれど)例えば、カウンタアプリケーションで現在のカウントを表示するビューみたいなのを…

PhinxでマイグレーションしつつEloquentのモデルのテストをする方法

PhinxでDBのマイグレーションしているけど、モデルにはIlluminate\Database\Eloquentを利用していて、 PHPUnitで単体テストするときにSQLiteのオンメモリでやりたいなと思ったのでソース見ながら方法探してた。 やり方まとまったのでメモしておく。 こんな感…

Y8 2017 spring in Shibuyaに参加してきた

y8-2017-spring.hachiojipm.org 去年に引き続き、今年も参加してきた。 そして今年は、2nd season(懇親会)の方で猫型さん(@neko_gata_s さん)と「春だ!webフロントエンド開発を語り尽くすぞ!!」というタイトルで漫談してきた。 トークを聴いて 苦労話…

【NDSiN#12×Niigata.js×C4N】JavaScript 2017春に参加した

nds-meetup.connpass.com 久しぶりのNiigata.js絡みのイベントに参加して、「SPAのルーティング」の話をしてきた。 SPAのルーティングの話 from ushiboy www.slideshare.net SPAのルーティングに関してはあまり話に出てるの見たことがなくて(この前のWEB+DB…

2016年にフロントエンド開発に使った環境

今年も終わるのでメモしておく。 去年との大きな違いはwebpackの設定を個別ファイルにするのをやめたくらい。 webpackの設定はgulpfile.js内で関数用意して、引数で対象の環境(development, production, testing)を切り替えるようにした。 こんな感じで使…

SVGのtext要素でUnicodeのHTML文字参照を使う

意外なやり方だったのでメモしておく。 方法 次のようなsvg#screen1にHTML文字参照を含むコンテンツを持つtext要素を追加したい場合、 text要素をcreateElementNSで生成したらinnerHTMLでコンテンツをセットする。 これで"test@foo"が表示される。 見つけた…

YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawaに行ってきた

すっかり時間が開いてしまったけど、7月の2日、3日にYAP(achimon)C::Asia Hachioji 2016 mid in Shinagawaへ行ってきたので残しておく。 感想 ベストトーク賞の上位に上がっていたトークはすべて会場で聴いていてどれもこれも良かったのだけど、特に@kamadan…