Skip to content

Instantly share code, notes, and snippets.

View mj-hd's full-sized avatar
💯
Flutter Engineer

Yusuke Otsuka mj-hd

💯
Flutter Engineer
View GitHub Profile
@mj-hd
mj-hd / 20210322_RxJSはハード_暗号理論は楽しい.md
Last active March 23, 2021 04:37
20210322_RxJSはハード_暗号理論は楽しい

RxJSはハード

ここ最近、RxJSに入門していた。RxJSを使ったデータフローの設計からチャレンジしてみたが、いくつか壁にぶつかり、こりゃエライこっちゃと感じた。

方針: Push-basedで取扱が容易なデータフローを構築する
Switch from pull to push-based approach with RxJS | by Wojciech Trawiński | JavaScript everyday | Medium
https://bitrock.it/blog/getting-started-with-react-push-based-architecture.html
Push Based Architecture With Rxjs! · GitHub

ネット上に転がっているAngular周りのベストプラクティスやflutter界隈で使われているBLoCを参考に、内部にstate$という名前のBehaviorSubjectを持ち、関心のある値が変更された時だけ値が流れるようなObsevableを公開するクラスを定義することで、Push-basedでかつ中央集権な状態を持つ取扱の容易な状態管理を行おうとした。
基本的にはうまく動いたが、一つ、errorを誤ってstate$に流してしまった時に後続のobservable達を巻き込み再起不能になることがあり、state$にerrorが流れないことを静的に担保することもできず、こりゃ一体どうしたことかと思い悩んだ。

@mj-hd
mj-hd / 6133-a.txt
Created January 4, 2020 08:35
6133-a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
package main
import (
"flag"
"fmt"
"strconv"
)
type answer int
/* from http://forums.xamarin.com/discussion/comment/149607 */
using System;
using Android.Content;
using Android.Runtime;
using Android.Text;
using Android.Widget;
using Android.Util;
using Android.Graphics;
using Java.Lang;
/* from http://forums.xamarin.com/discussion/comment/149607 */
using System;
using Android.Content;
using Android.Runtime;
using Android.Text;
using Android.Widget;
using Android.Util;
using Android.Graphics;
using Java.Lang;
#module
// 2進数の文字列へ変換
// デバッグ用
#defcfunc bit int a, local res
res = ""
repeat 32
poke res, 31 - cnt, $30 + ((a >> cnt) & 1)
loop
return res
Process: Xcode [8433]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 7.0 (8227)
Build Info: IDEFrameworks-8227000000000000~2
App Item ID: 497799835
App External ID: 813293765
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Xcode [8433]
@mj-hd
mj-hd / uumail.rb
Last active November 22, 2016 01:25
uumailを監視し新着メールが届くと、指定したメールアドレスにその件数を通知するスクリプト
#!/usr/bin/env ruby
# coding: utf-8
# uumail新着メール通知スクリプト
# 事前にgem install mechanize mailを実行しておく必要あり。
# 24時間動かすことを前提とする。別途supervisordなどで動かすと扱いやすい。
require "mechanize"
require "mail"
@mj-hd
mj-hd / checker.hsp
Created August 25, 2015 14:17
Checker Pattern
#include "hsp3dish.as"
#const CELL_SIZE 50
// 初期化
screen 0, 640, 480
dim col, 2, 3
col(0, 0) = 0:col(0,1) = 0:col(0,2) = 0
@mj-hd
mj-hd / calc.hsp
Created August 16, 2015 21:44
数式を計算するHSPプログラム
#module c
// 演算子の優先順序
// 低い
#enum UNKNOWN = -1
#enum PAREN // 括弧は例外
#enum XOR_
#enum OR_
#enum AND_
#enum LESS
#enum GRTER