ジンジャー研究室

長めのつぶやき。難しいことは書きません。

Custom Elements を正しく実装するのはとても難しい

React みたいなコンポーネント作る系フレームワークだと思って Custom Elements を使おうとすると、たちまち死んでしまう。まだ色々試している最中なのでアウトプットはないんだけど、とりあえず今考えてることを書いておく。役立たないし刺されたら困るから…

.ogg ファイルのメタデータを読んでみた

.ogg ファイルのメタデータを確認する作業が発生したので、ブラウザでディレクトリ内の .ogg ファイルのリストを読めるようにしてみた(TypeScript)。 背景 友達のゲームに BGM を提供しました。 スマホゲーム「スノーマン・ストーリー」の音楽を担当しまし…

Nim v1.0 で簡単なツールを作ってみた

The wait is over. Nim v1 is here. https://t.co/fTmnaC0e1q pic.twitter.com/u6oIhF6QaH— Nim language (@nim_lang) September 23, 2019 Nim 今朝たまたまこんなツイートが流れてきて、聞いたことある言語だったので気になって触ってみた。 見たところ、静…

Netlify Functions + FaunaDB 使ってみた

aws-cdk と Netlify Functions どっちやろうか迷う。— Yosuke Torii / ジンジャー (@jinjor) 2019年9月1日 個人開発でサクッと何か作りたいとき、 Heroku みたいに手軽に「git push はいリリース」なノリのやつがあると便利なんだけど Heroku は無料だと半日…

GW 進捗

割と捗った方だと思います。 4/27 DreamNotes ScriptProcessorNode でノイズを再実装 矩形選択を実装 ピアノロールのルーラーを実装 Starry Sky (Cupsule) 4/28 DreamNotes FM の周波数比を enum に変更 プリセットに guitar2 を追加 友人の結婚式 ヒトカラ …

GitHub Actions で Puppeteer をインストールして実行

分かってみれば全く大したことはない...けど誰かの役にたつかもしれないので足跡を残しておく。 .github/main.workflow ワークフロー定義。カスタム定義の Action を使う(作り方はこの辺)。 UI では以下が上から串刺しになって見える。 workflow "Build an…

CSS フレームワークを使いたくない

CSS フレームワークが辛い。 ここでいう CSS フレームワークとは Bootstrap とか Bulma とかそういうやつのことである。昔から自分はこういうのが苦手で、一定の便利さは感じつつもどうしても馴染めないという状態が続いていて、それでも「それは使い方が悪…

Elm 本書きました

Elm の本を書いていました。 基礎からわかる Elm 実は 2017 年時点で Amazon に存在していたのですが「出した直後に Elm がバージョンアップして紙くずになりました」という事態をどうしても避けたかったので 0.19 が出るのをひたすら待ってました。0.18 か…

JavaScript フレームワークを巡った話

ポエムです。 自分の今の立場としては「Elm の人」ということになってるんだけど、どういう変遷でここまできて今どういうスタンスなのかっていうのはあんまり話す機会がない。だから整理のために考えてることを書いていくよ、というのがこの記事の趣旨。 非 …

deno で Elm の live reload を作ってみた + 感想

deno はこれ。 github.com Node.js 作った人が今度は TypeScript で作り直してるっていう話らしい。 yosuke-furukawa.hatenablog.com で、今はまだまだ実用段階ではないんだけど、一応それなりには動く模様。 ぜひ!私もコアには手を出せなそうなので、ユー…

GISC : Scaffolding のネタを Git のリポジトリから取ってくるツール作った

github.com GitHub の適当なリポジトリを Scaffolding の元ネタに使っちゃおうぜ というツールを作った。 Git で Scaffolding なので GISC 。大文字でも小文字でも可。gisc という名前にしたら disc っぽかったのでそういうロゴにした。ちなみにロゴは会社帰…

Elm で不正な JSON に厳しすぎる問題についてのメモ

長いだけで中身は単なる雑なメモなので、結論や主張はないです。 起こりうる問題 Elm で、サーバーがおかしな JSON を返してきた時にエラーが発生してアプリが止まることがある。一般的にはシステム境界でエラーが分かるのは嬉しいのだが、不寛容すぎると問…

時間帯によって特定サイトの閲覧を禁止する for macOS

TL; DR cron で /etc/hosts を書き換える。 * 6-22 * * * /usr/bin/sed -i '.bak' -E 's/(.*)#block$/#&/g' /etc/hosts * 0-5,23 * * * /usr/bin/sed -i '.bak' -E 's/^#+(.*)#block$/\1#block/g' /etc/hosts 以下、この方法に到るまでの経緯。 動機 SNS が…

依存の多い npm のパッケージをあぶり出す

直接依存しているパッケージが間接的に依存しているパッケージ数を知りたい。 npm ls でそういうオプションがありそうだけどないような? 仕方がないのでスクリプト書いた。 const cp = require("child_process"); cp.exec("npm ls", (e, out, err) => { con…

画像の差分を見つけるツールを作った

作ったのは大分前なんだけど、想定するユースケースで実際に使えそうだと確認できたので。 作ったもの github.com 動機 デザイナーから新しいカンプをもらった時にどこが変わったのか分かりにくかった 作った機能をレビューしらもらう時にスクショのどこが変…

2つの順序キーの間のキーをいい感じに生成するライブラリを作った

RDB で ORDER BY するためのカラムを持つ時に、並び替えや挿入がうまく出来なくて困った。 例えば、このテーブルで B と C の間に E を差し込みたい時に、 こうなってくれると嬉しい。 作ったもの github.com TypeScript 用に書き直してくれてもいいのよ? …

Elm 0.19 の主な変更点

祝 Elm 0.19 リリース! https://elm-lang.org/blog/small-assets-without-the-headache New version of @elmlang out today!Compiler generates small assets by default.Just add the --optimize flag!https://t.co/N1Mkbv0OzC pic.twitter.com/PXyQMlYY31…

個人的によく使う npm ライブラリを紹介してみる

偏ってます。 もっと有名なのは沢山あるけど、自分が普段よく使うのじゃないと紹介できないので。 argv 引数をパースするやつ。 chalk 色をつけるやつ。 dotenv 環境変数をファイルから読むやつ。 fs-extra fs に欲しいけどないやつ。 watch ファイルを監視…

puppeteer + express + mocha で快適 TDD している話(続編)

前回の記事の続き。 jinjor-labo.hatenablog.com 会社で開発中でオープンソース化していないテストツールがまたいくらか便利になったので進捗報告してみる。 ツールの概要は上の記事で説明しているけど、一言で言うと「mocha から puppeteer 叩いて express …

puppeteer + express + mocha で快適 TDD している話

TDD という用語を使うとテストおじさんがやってきて、それはそうじゃないとか色々言い出すと思うんだけど、それが趣旨ではないので勘弁して欲しい。予防線ここまで。 Puppeteer でテスト Puppeteer が世間的にも個人的にもブームだ。ヘッドレス Chrome を操…

CSS in Elm 方式を導入してから1年半以上たった感想

CSS in JS(Elm)したら想像以上に良かった という記事をずいぶん前に出して結構ブクマを貰えたんだけど、今は「なんだかなー」と思っているので整理する。冷静に考えると、そもそもこのエントリで書いていることのほとんどが「良かった」ではなく「悪くなかっ…

Promise でリトライや同時実行数の制御をするやつ作った

JavaScript でバッチ実行を少しでも楽にしたいという思いで作ってみた。 www.npmjs.com github.com まだバージョン 0.7.0 だけど、大体のことは出来るはず。 機能 デモ を触ると大体何ができるかわかると思います。 実行間隔の指定 同時実行数の制限 リトラ…

Elm のパイプ |> の良さ

小ネタ。 JavaScript の [1,2,3].map(a => a + 1) が、 Elm だと [1,2,3] |> List.map (\a -> a + 1) で、両方とも左から右に読めるからそんなに変わらないなーと思ってたんだけど、一つ違う点に気づいた。JavaScript で Promise を気持ちよく連鎖してて書い…

Elm 用の CSV デコーダーを作った

Elm 界隈では構文解析するライブラリを「パーサー(Parser)」、それを Elm の型に落とし込むものを「デコーダー(Decoder)」と呼び分けることが多い。パーサーは既にあって(lovasoa/elm-csv)、デコーダーで良いものがなかったので作った。 CsvDecode - elm-c…

Chrome 拡張機能「JSON-YAML Toggle」を作った

chrome.google.com これは何? JSON と YAML をページ上で切り替えるツール。最近 AWS を触っていて、設定ファイルを JSON でも YAML でも書けるんだけどサンプルがどっちか片方しかなく、コピペに不便だった。 使い方は、コンテテクストメニューで「Toggle …

Elm を既存の JavaScript と併せて使う N の方法

今月、社外向けに1回、社内向けに1回 Elm の紹介をしたところ、両方とも好評で「ぜひ使ってみたい」という声が多く、良かったと思う一方で、ここは補足すべきだったなーという点があったので書きます。 両者に共通して頻出だったのが、 既存プロジェクトの…

Idris で簡単なゲームを作ってみた

3日ほど前に、↓の記事を読んで「最近 Idris 熱いのかー」と思ったので入門してみた。 takezoe.hatenablog.com 実は以前から Elm コミュニティのエッジな人が Idris すごいと言ってて気になっていて、ちょうどバージョンも最近 1.0 になったばかりというのも…

Elm のコンポーネント論争とは何か

Elm 界隈で「コンポーネントをどう作るべきか」みたいな話がよく出る。日本に限った話ではなくメーリングリストとか Slack でも頻出の話題で、その度に熟練者が説明するのだが、すんなり理解されることもあれば喧嘩になることもある。 ちょうど昨日 Twitter …

Elm で個人ホームページを作ってみた

まず個人ホームページって響きが懐かしいな!という話はさておき。 普段は複雑な GUI 作りたいモチベーションで Elm をやっているんだけど、もちろん普通の Web サイトも普通に作れますよということで、参考になれば。 作ったサイト world-maker.com 高校の…

Elm の update 関数を綺麗に書くための Tips

生活の知恵です。 No more Task.perform identity (Task.succeed Bar) Bad update msg model = case msg of Foo -> ( model , Task.perform identity (Task.succeed Bar) ) 非同期にしたせいで2回レンダリングが走る。 Lazy を使えばある程度緩和できるが、…