Skip to content

Instantly share code, notes, and snippets.

View qsona's full-sized avatar

qsona qsona

View GitHub Profile
@qsona
qsona / index.js
Created August 20, 2019 17:16
minesweeper
const assert = require('assert');
const _ = require('lodash');
class Masu {
constructor(isMine, isOpened) {
this.isMine = isMine;
this.isOpened = isOpened;
}
}
@qsona
qsona / class.ts
Created September 26, 2019 16:38
class inheritance and type
abstract class A<T> {
a() { return new Map<string, T>(); }
static b(): number { return 1; }
}
class X<T> extends A<T> {}
class Y extends A<number> {}
new X<number>().a(); // OK
new Y().a(); // OK
X.b(); // OK
@qsona
qsona / connection.rb
Last active March 30, 2020 18:56
Faraday MyRaiseError middleware
# A patch for faraday raise_error middleware for my usecase
# faraday: https://github.com/lostisland/faraday
class Connection
def self.foo_service
Thread.current[:foo_connection] ||= Faraday.new(Rails.application.config.x.foo_service_url) do |conn|
conn.request :json
conn.response :my_raise_error # See below comment
conn.response :json, :content_type => /\bjson$/
@qsona
qsona / 0_README.md
Last active November 13, 2022 05:20
How to write polymorphic code with JavaScript's plain objects and functions (objects are immutable)

How to write polymorphic code with JavaScript's plain objects and functions (objects are immutable)

概要

JavaScript の Plain Object (ただの) と、関数のみを利用して、Polymorphism を実現したい。

とはいえ Polymorphism の定義は人によって違うので、以下の仕様とルールを満たすものとしたい。

そもそもそれは Polymorphism ではない、あるいは意味をなさない、というような反論があればそれも歓迎。