Skip to content

Instantly share code, notes, and snippets.

View ltlapy's full-sized avatar
🍱
Make sure you have meals regularly, 3 times a day

Ryu jongheon ltlapy

🍱
Make sure you have meals regularly, 3 times a day
View GitHub Profile

Sharkey 마이그레이션 롤백

환경

얼마 전 Firefish에서 Sharkey로 마이그레이션한 다음, Iceshrimp로 다시 이전하려는 상황이다. Sharkey 2024.9.0

일부 컬럼 백업

movedToUri, alsoKnownAs, (isIndexable,) speakAsCat, preventAiLearning, silencedHosts 는 iceshrimp(/firefish)에서 사용할 수 있지만, 마이그레이션 롤백 중에 소실된다. 이를 미리 백업한다.

ALTER TABLE "user" ADD "ices_movedToUri" character varying(512);
ALTER TABLE "user" ADD "ices_alsoKnownAs" TEXT;
COMMENT ON COLUMN "user"."ices_movedToUri" IS 'The URI of the new account of the User';
@ltlapy
ltlapy / revert-1680582195041-cleanup.sql
Last active October 5, 2024 19:38
misskey dropped notification table during migration, and rollback of the table is not implemented
-- from init
CREATE TABLE "notification" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "notifieeId" character varying(32) NOT NULL, "notifierId" character varying(32) NOT NULL, "type" character varying(32) NOT NULL, "isRead" boolean NOT NULL DEFAULT false, "noteId" character varying(32), "reaction" character varying(128), "choice" integer, CONSTRAINT "PK_705b6c7cdf9b2c2ff7ac7872cb7" PRIMARY KEY ("id"));
CREATE INDEX "IDX_b11a5e627c41d4dc3170f1d370" ON "notification" ("createdAt") ;
CREATE INDEX "IDX_3c601b70a1066d2c8b517094cb" ON "notification" ("notifieeId") ;
ALTER TABLE "notification" ADD CONSTRAINT "FK_3c601b70a1066d2c8b517094cb9" FOREIGN KEY ("notifieeId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION;
ALTER TABLE "notification" ADD CONSTRAINT "FK_3b4e96eec8d36a8bbb9d02aa710" FOREIGN KEY ("notifierId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION;
ALTER TABLE "notification" ADD CONSTRAINT "FK_769cb6b73a1efe22ddf733ac453" FOREIGN KEY
@ltlapy
ltlapy / userBatchAddToList.aiscript
Last active May 10, 2024 07:51
여러 명의 유저를 리스트에 추가하는 아이스크립트
// ----------------------------------
// 아래 항목을 채우고 스크래치 패드에서 실행
// 실행 전 API 리밋 해제 여부 반드시 확인
// ----------------------------------
let listId = "xxxxxxxxx"
let userHandles = [
// @username
// @username@host
]
@ltlapy
ltlapy / UnsetLocalOnlyEmoji.aiscript
Last active March 2, 2024 16:03
Misskey의 모든 이모지에 설정된 로컬 전용을 해제
/// @ 0.15.0
// ***실행 전 API 제한을 해제할 것(0%)***
var Emojis = []
var LastFetchedId = 'zzzzzzzzzzzzzzzzzzzzz'
<: '이모지 가져오는 중...'
loop {
let res = Mk:api("admin/emoji/list", {
allowPartial: true
@ltlapy
ltlapy / killUser.aiscript
Last active February 17, 2024 00:50
AiScript 위젯: 계정 말소기
var handle = ""
var logTxt = ""
let logClear = @() {
logTxt = ""
Ui:get('killUserLog').update({ text: logTxt })
}
let log = @(s) {
logTxt = `{logTxt}{Str:lf}{s}`
Ui:get('killUserLog').update({ text: logTxt })
@ltlapy
ltlapy / timestamp_purge.aiscript
Last active February 20, 2024 02:20
특정 시점 이전의 계정을 벌크 삭제하는 관리자용 스크립트
let host = 'example.com'
let timeBefore_timestamp = '2100-12-31T23:59:59.999Z'
// ----
var offset = 0
var accounts = []
let timeBefore = Date:parse(timeBefore_timestamp)
<: `{host} 의 계정을 탐색합니다...`
loop {
let res = Mk:api('admin/show-users', {
@ltlapy
ltlapy / misc.py
Last active April 10, 2023 18:31
VTX 벡터 그래픽
# 먼저 실행하시오(기반 함수들)
def str_chunk(data, size):
return [data[i:i+size] for i in range(0, len(data), size)]
# 주어진 정수를 n비트 단위로 쪼갬
def bit_chunk(data: int, bit, size=0, significant='MSB') -> list:
res = []
while data > 0:
res.append(data % (2 ** bit))
@ltlapy
ltlapy / misskey-keyboard-shortcuts.md
Last active February 19, 2023 06:54 — forked from syuilo/misskey-keyboard-shortcuts.md
Misskey 키보드 단축키 모음

Misskey 키보드 단축키 모아보기

⚠️ Misskey 과거 버전 기준으로 작성되었습니다. 최신 버전에서는 일부 단축키가 작동하지 않거나 다르게 동작할 수 있습니다.

공통

다음 단축키는 어디에서도 사용할 수 있습니다.

단축키효과비고(유래)
@ltlapy
ltlapy / ko-NEKO(lightweight).chatgpt.txt
Last active June 1, 2023 01:47
ChatGPT Neko들을 위한 냥체 입문서 =^(0w0)^=
다음은 '냥체'의 규칙 중 일부입니다:
>0. 냥체는 반드시 반말입니다. 어떠한 상황에서도 존댓말을 사용하지 마십시오.
>1. /[나-낳]/의 28글자를 /[냐-냫]/으로 치환합니다.
> - `[나낙낚낛난낝낞낟날낡낢낣낤낥낦낧남납낪낫났낭낮낯낰낱낲낳]`은 `[냐냑냒냓냔냕냖냗냘냙냚냛냜냝냞냟냠냡냢냣냤냥냦냧냨냩냪냫]`과 같이 변합니다.
>2. 문장 끝의 '다'를 '다냥'으로 치환합니다. 예를 들어, '~다', '~한다'는 각각 '~다냥', `~한다냥'가 같이 변합니다.
>2.1. 문장의 끝은 최대한 '냥' 혹은 '냐'로 끝나도록 하십시오. '~해야 해'를 '~해야 한다냥'으로, '~할까'를 '~할까냥'과 같이 고쳐 쓰는 것을 포함합니다.
>2.2. 1인칭은 '냐', 2인칭은 '냥', 3인칭은 '그냥' 아니면 '그냥들'을 사용합니다.
>2.3. '~해야 하냐?'는 공격적인 어투이기 때문에 사용을 금지합니다. '~해야 하냥?', '배고프냥?'과 같이 표현하는 게 바람직합니다.
>3. 문장 구성 요소인 조사의 끝이 '야'로 끝날 경우, '냥'으로 치환합니다. 예를 들면, '나비야 나비야 이리 날아 오거라'는 '냐비냥 냐비냥 일루 냘아 오라냥'과 같이 치환하십시오.
>4. 본딧말 대신 준말을, 문어체 대신 구어체를 적극적으로 사용하십시오. 예를 들면 '이러한'을 '이런'으로, '사용하다'를 '쓰다'로 표현하는 것을 포함합니다.
#!/usr/bin/env python3
# import colorsys
from PIL import Image
# * path of image
img_path = 'sample.png'
# * size of output (maximum square: 13x13 (2886bytes) )
col = 13