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 April 30, 2025 08:07
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