Skip to content

Instantly share code, notes, and snippets.

View duangsuse's full-sized avatar
👨‍💻
Leaning at school

duangsuse duangsuse

👨‍💻
Leaning at school
View GitHub Profile
@duangsuse
duangsuse / compile-typer.md
Last active March 12, 2024 12:44
compile-typer, 泛型,Visitor. 懒得喂给GPT了,因为知道要协商很久。在语法低冗余前,这些比DSL还虚的还是少设计的好。从库历史的角度看,复杂理论的“美”绝对是昙花一现的。

请写一个 type inference ,正确判别以下表达式

toAST.run {
  `+`(+1, +1)
  `+`(+"Hi", +"World")
  say(+"Good"); say(Str)
}
toAST.runCatching {
  `+`(+1, +"World")
@duangsuse
duangsuse / compile-typer.md
Created March 9, 2024 13:45
懒得喂给GPT了,因为知道要协商很久。 我觉得在语法低冗余前,这些比DSL还虚的还是少设计的好。从库的角度看,复杂用法的“美”绝对是昙花一现的。

请写一个 type inference ,正确判别以下表达式

toAST.run {
  `+`(+1, +1)
  `+`(+"Hi", +"World")
  say(+"Good"); say(Str)
}
toAST.runCatching {
  `+`(+1, +"World")
@duangsuse
duangsuse / reflect_jsh.kt
Created February 22, 2024 17:21
dumps(Pair::class) (Pair(0,0), mutableMapOf("first" to 3))
import jdk.jshell.JShell
import jdk.jshell.spi.*
import java.lang.reflect.*
import kotlin.reflect.KClass
import kotlin.reflect.full.memberProperties
//dumps(Pair::class) (Pair(0,0), mutableMapOf("first" to 3))
fun dumps(T:KClass<*>, ld:T=JS("(void)(${T} o, java.util.Map<String,Object> m){"+
T.memberProperties.joinToString(""){" m.put(\"${it.name}\",o.get${it.name.capitalize()}());"}+"}")!!
@duangsuse
duangsuse / bing_shotcrop.py
Last active May 25, 2023 03:58
pyQt 框选获取屏幕截图
# 用 pyQt 框选获取屏幕截图,PIL.ImageGrab.grab() 可以获取全屏图,继续,继续capture和鼠标
#xy可以换成两个QPoint
#请用PyGTK兼容 linux 上的 PIL grabclipboard()
import gi; gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
gi.overrides.GdkPixbuf.Pixbuf.toPIL=lambda g: PIL.Image.frombuffer("RGBA",(g.get_width(),g.get_height()),g.get_pixels() )
cc=Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@duangsuse
duangsuse / AI_astcode.py
Last active March 7, 2023 17:25
bing py代码重构工具
from ipywidgets import interact
import ipywidgets as widgets
from lib2to3.refactor import RefactoringTool,get_all_fix_names as lsFix
import ast,astor,pickle
@interact
def convert(code=widgets.Textarea(value="map({it+1},[0])|{[*it]}, 1|{it+1}", description='Input Code'), fixes=widgets.SelectMultiple(options=lsFix('lib2to3.fixes'), description='Fixes')):
if not fixes:
tree = ast.parse(code)
# 使用自定义的访问器类遍历并修改语法树

这个提问不应该用研发……

世界上有多少为解决问题服务的应用,初创时投入了巨大精力,结果发布之后能自身不造成新问题的?

很难吧。 所以除非是各种编程都懂,而且并不觉得编程语言很了不起的人来写初稿,否则无论怎样实现,都会落入那些现有无聊语言的俗套。

呃,那既然来了就多说几个字,我拿(一个还不想起名字的语言) 写写各位答主的程序吧

Lala

@duangsuse
duangsuse / dump_opcodetab.py
Last active February 27, 2021 14:38
Lua Opcode reordering and its analysics
import struct
binPrefix = "<"
def binItem(fmt):
bp=binPrefix
n=struct.calcsize(bp+fmt)
return lambda f: struct.unpack(bp+fmt, f.read(n))[0]
def binAry(fmt_h, fmt):
h=binItem(fmt_h); x=binItem(fmt)
return lambda f: [x(f) for i in range(h(f))]
def mask1(n): return sum(1<<i for i in range(n))
@duangsuse
duangsuse / dnotify.cpp
Last active February 22, 2021 15:26
Linux DNotify/INotify
#include <fcntl.h>
#include <csignal>
#include <unistd.h>
#include <limits.h>
#include <cstdio>
const int sigPrior = SIGRTMIN+1;
#define notNeg(v) v; if (v<0) return -1
static char fpDesc[PATH_MAX];
void getFPath(int fd) {
sprintf(fpDesc, "/proc/self/fd/%d", fd);
//src/main/kotlin/main.kt
import parser4k.*
import parser4k.commonparsers.token
import java.io.BufferedReader
import java.io.InputStreamReader
import java.math.BigDecimal
import kotlin.reflect.KProperty
abstract class CacheContainer<T>(val cache: OutputCache<T> = OutputCache())
object MinimalCalculator: CacheContainer<BigDecimal>() {