漠然と、あるいは感覚的・直感的に、「こういう設計は良くない」と感じることは多いけど、具体的になぜそれだとダメなのかと問われると上手く言語化できないことも多い
それを上手く言語化して説明できるようになるために、ここで思考を整理してみようという試み
- 関心は一箇所にまとまっていた方がよい
- いろいろな場所に関心が散らばっているよりも、当然まとまっていた方が理解しやすいしメンテナンスも容易
Misskey開発者、インスタンス運営者、サードパーティアプリ開発者、一般ユーザーなど各方面から幅広い意見を取り入れつつ、有識者で審議を行い、Misskeyの意思決定を行うため
及ぼす影響が大きいと思われる議題や意見が割れる議題について、委員会によってより良い落とし所を探れるようになり、コミュニティとしての方向性、判断を決められるようになることを期待する
type GetLastElementType<T extends any[]> = T[2]NOTE: There might be a way to pick the type of the last item in an array of any length, but I didn't know.
function toGetterSetter<T extends Record<string, any>, K extends keyof T>(dict: T):
{ [U in K as `get_${U & string}`]: () => T[U] } &最近Misskeyを個人で開発していくことに限界を感じてきています。 理由としては、端的に言うと「就職に伴い、開発やメンテナンスに割ける時間が取れなくなった」に尽きます。 Misskeyやその周辺プロジェクトを開発できるのが、休日の限られた時間しかないので以下のような諸々が難しくなっています。 やる気の問題と言われればそれまでですが、仕事でメンタルやられることも多く、思うように進まないのが現状です。
| // auto-fanbox-downloader.js | |
| // (c) syuilo 2021 | |
| // 注: 私用の際はCORSを無効にしておく必要があります | |
| // e.g. https://chrome.google.com/webstore/detail/cors-unblock/lfhmikememgdcahcdlaciloancbhjino | |
| // 投稿一覧ページにおける各投稿のクラス | |
| const SELECTOR = '.sc-11axwx2-0.bXrzaX'; | |
| const els = document.querySelectorAll(SELECTOR); | |
| ### { | |
| name: "API test" | |
| version: "0.0.0" | |
| author: "syuilo" | |
| description: "Plugin description here" | |
| permissions: ["write:notes"] | |
| } | |
| Mk:api("notes/create" { | |
| text: "test" |
| /** | |
| * AiScript interpreter | |
| */ | |
| import autobind from 'autobind-decorator'; | |
| type ValueType = 'boolean' | 'number' | 'string' | 'object' | 'array' | 'function'; | |
| type VNull = { | |
| type: 'null'; |