duangsuse::Echo
412 subscribers
3.85K photos
105 videos
574 files
5.15K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
Download Telegram
#plt #bing #talk 不会思考它没学过的资料..
我想写类于Java 类型系统的类型检查器,请提供类型的数据模型
>很好地提示了TypeVariable,Method 等反射接口
请举几个函数式例子, 说明 check(def) 如何证明调用是有效的
> "g(x, x) = x * 2"; // 是无效
利用 Haskell data 编写类型的数据模型
>很长地细化了反射接口

请了解js的 PEG 和递归下降技术, 解释 num,str 的嵌套列表 和csv的PEG文法
>很成功举出可运行的示例+test
>可示例只观感上正确 ,且使用了PEG不支持的leftRec

既然有了解析器,借鉴lisp标准做一个 js 调用器,能实现对 (fun filterMap(xs f) ) 的定义,要支持 fun when let = 几函数
>听不懂

为什么你不太熟悉实现这些,但很会写 snake,tetris 这种js游戏代码呢?
>我利用我的内部知识和一些在线资源来拼凑出一个可运行的结果

在经济上, 程序员的工资完全取决于其工作的难度吗? 如果AI让难度变低,对编程界会有什么影响呢?一些人觉得AI掌握了他们在小圈子里独有的技术, 从而让这种技术廉价化了,你能举几个回应吗

>AI 可以帮助程序员提高效率、创造力和协作能力,让他们更容易解决复杂的问题,但可能会取代一些低层次或重复性的编程工作,导致一些程序员失业或降低收入
程序员需要不断地学习新的技术和知识,AI是要帮助他们更好地使用和发展他们的技术

有解析库支持在定义 parse 的同时对应地支持toString 吗? 基于递归下降算法如何让 list 文法同时支持parse和toStr (stringify,dumps) 呢
>没有,ANTLR有吗? 不知道咋做
几个支持unparse 的库: csv , xml2dict, pyast
传统的: https://pegjs.org/online ,jison


https://www.compart.com/en/unicode/plane
理论上来说,既然能解析一种文法, 就一定可以把生成的数据还原回来
>正确,还原的字符串可能和原始的字符串有一些细微的差别,比如空格,换行,注释

这种正反函数的概念,对 HTML 数据绑定也有效, 意思是能被 render() 就能被爬取, 你能举出例子吗
>不懂,但有人答过js怎么做数据绑定
你能解释 parse-unparse 和 mmap() 的区别吗,假设mmap能够映射AST
>那就不需要parse了,但我也不熟悉。 mmap() vs read(buf) chunked
js Blob DataView 的封装

Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited
https://github.com/tree-sitter/node-tree-sitter

我有 1, (1), (1 20) 这样的递归模式要用 Perl 正则匹配
> (\d+|\((?R)+\)) 和 (?<R>\d+|\((?&R)(?:\s+(?&R))*\))
$ pcretest 能校验配对,但很脏

#rust #dontknow 离谱的循环
let c = loop {
if Q() {
break "answer";
} else {
break None;
}
};

fn first(:Iter):Option = for x in list {break Some(x);}
else default {None}

so for, while, while let 该咋办?😒易放难收
#py
for x in []: pass
else: return "没有"
呃.. 第一次见到 wiki 编辑战
小时候(高中) 很喜欢 #mozilla #Rust ,还写了这个(列表处理)程序

大概就是暗暗觉得……高性能又开源(根正描红的那种,练习时长两年半只为开源语言,太感人了)

后来看的就淡了,因为rust真的很(烧脑?)

我觉得能和 C FFI 的某种意义上都是系统,比如 py 的嵌入式GPIO libs
.Net 有P/Invoke和struct{}, 栈分配 啊,他们可能觉得入选 osdev.wiki 才叫系统编程

无非就是FFI和struct指针的问题,既然 py (cffi能读写指针), .Net unsafe marshall 支持二进制,也是能实现OSkrnl的需求

但KN 不是,因为强类型强检查 弱框架,写着麻烦

系统级就是你可以用来写内核和驱动
这个 lunatik 能在内核层开启 #Lua REPL
这个 https://duskos.org/#operator 类似 tccboot, 但是嵌入式的
#py 周刊
python -m nntplib , calendar, asyncio, http.server ,. 命令行工具 'gmane.comp.python.general has 757285 articles,'
dinov2_retrieval -q img.png -d ./all_images/
以图搜图
ShortGPT #bilibili 短视频裁缝, Pixels, Bing Image

https://github.com/gto76/python-cheatsheet#curses
TTS, Mario Brothers, TUI文件浏览器, COVID图表的示例❤️
- 代码命名红黑榜

uvicorn vs #rust单/多线程跑分: 差异 10%
from blacksheep import Application
import asyncio
app = Application()
@app.route("/async")
async def test_async():
await asyncio.sleep(.002)
return "OK"

import logging; 对象支持 Formatter('%(name).%(asctime)s: %(message)s'), RotatingFileHandler('my_log.log', maxBytes=2000, backupCount=10) 的参数配置, 默认print WARN以上的记录, logger.exception() 默认 ERROR

pip install pystack pytest-pystack; pystack remote `pidof python` #ffi (仅限 linux, docker)
git clone https://github.com/BiteStreams/fastapi-template PetStore #dev 使用 poetry poly 和 FastAPI session 创建微服务

data diff
duangsuse::Echo
感觉虽然有些收获,也都是没啥意思的问题…… 面试呢,或许对我这种数学渣就都做不到的吧? #statement 我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“ 这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢? 如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西…
举例, #ts 上有”交并集类型“ (有人认为 hs, Rust 没有子类型所以不存在集合论的,确实如此但 in-out 形变是Racket子语言里也有的,我找不到原文但TRack 是有)
(我一点也不羡慕没有重载和this模块等多态技术的圆括号 😅, 模型的缺失是拿宏手动兼容 a.b.c 所弥补不了的, 就像 F# 的 |> 比不上 xx.let{}, kt 的元组 destruct 比不上 ES6 let[x,y]=P, ES6的解构又不如 Prolog 的 unify [x,1]=[2,y]...

观摩王垠《别再欺负我们读书少》:
- int -> int | bool ->bool 表示的确实是一个intersection type(^),而不是union type(|)
- id(itself) “同时”是int->int和bool->bool,而不是表示它“有时”是int->int,而另外的时候是bool->bool。
- 所以,id(1)一定是int。如果你输入id(True),它推导出的一定是bool。
- 否则,调用id(1)会报错,因为id的类型有可能是bool->bool,不能接受int的输入。调用id(True)也会报错,左右不是人。


但我习惯拿 成员交=union ,成员并=insect ,绝口不提“同时”“有时” 这种抽象说法乃至术语
- int -> int | bool ->bool 表示的确实是一个重载,而不是Either
- id “必须”是int->int, bool->bool ,而不是“可为” int->int | bool->bool。 when(x) { is Int, is Str } 这种情况才是“x可为二者”
- 否则,调用id(1),id(True)都会报错,因为id的类型有可能是bool->bool,不能接受int的输入,或者反之。

严谨性绝对是次于创造力的,况且,含糊的说法对同时使用和实现不利
虽然这些都是小小的细节,但每个细节都注重可读性,随着设计的步进,最终会形成巨大的差异。即便都是用AI,我的实现也会有很多不同
#py 周刊

#learn visualize 交互式py学习
conda install -c conda-forge lpython 在使用dict时比 numba.njit 编译快一倍 . cython3 最近更新就不提了
numpy-pandas, cupy-cuDF
pip install jupyter-ai 可以用 %%ai chatgpt -f math,html,. 免费访问AI,避免复制粘贴了
match case: 已经可替代 elif

from rich import inspect: py版的 devtools
textual.binding UI: 手动实现命令行 ChatGPT
命令行 MSPaint

#web #ml 支持向量列的数据库
asyncio 用线程池优化文件读取
Mpire: A Python package for easier and faster multiprocessing https://github.com/sybrenjansen/mpire
#rust py异步流读取 JSON

py的元编程FFI:
jupyterSQL 教程
java from jpype import startJVM, shutdownJVM, java
startJVM(convertStrings=False)
java.lang.System.out.println("hello world")
java.util.Random().nextInt(10)

js import pythonmonkey as js; js.eval("console.log")('hello, world')

#ce CPython如何编译源代码
duangsuse::Echo
#py #math 《优雅不是奢侈品》 “如何才能让编程者们相信,简单性和清晰性——简而言之:数学家所说的“优雅”——不是可有可无的奢侈品,而是决定成功与失败的关键因素?” ― Edsger W. Dijkstra,“计算机著作精选:个人观点”,第 347 页。 简单明了的代码就是优雅的代码。这些都是代码中非常理想的属性。Dijkstra 又补充道: “……在软件不可靠性的情况下,最大的成本因素是复杂。 一个可靠的(因此简单的)程序的开发和使用成本,比一个(复杂的因此)不可靠的程序要廉价。” 人们…
#py 周刊
- 《优雅不是奢侈品》
- nogil 最新情报
- #web Django ORM 最佳实践
- Django 自带的JWT 路径验证和登录页
- #ts 阮一峰 入门, 纯JS入门

- #linux #rust Nush: 不是 Powershell
- #js npm依赖图
- #ai #tool realsizer4x 超分辨
- #rust pixi add cowpy 强化pip
- #ui Toga: 跨平台的 TkGUI

- #ml Viberary: 开源书籍检索引擎
- Khan 为何从Py2移植到 kt,go
- #parallel 用asyncio分享查询,防止缓存失效时并发卡爆
- #plt Rust vs Idris,Zig: 渐强类型的解药 #1

单进程 cron
from apscheduler.schedulers.background import BackgroundScheduler

cron = BackgroundScheduler(jobstores=sqlite)
.add_job(print, 'interval', seconds=5)
.start()

并行 multiprocessing: #2
with mpire.WorkerPool(n_jobs=5) as pool:
results = pool.map(getFiles, range(10), progress_bar=True)


- 修改语法ASDL,实现 map( (x)=>x*x, [1]) [Parser/Python.asdl] [30行实现]
- 奇怪的for赋值, 魔术方法
from xx import*明确化:设置好 xx.__all__ = [exports]

实现 lazy load:
importlib.import_module

⭐️import pyforest 自动导入np,pd 等变量
#code 修改语法 __import__('cv2') -
from lazy import cv2

import types,sys

class lazy(types.ModuleType):
def __getattr__(self, mod):
import importlib.util as _
if None==(r:=sys.modules.get(mod)):
id = _.find_spec(mod)
# get it inserted into sys.modules.
_.LazyLoader(id.loader).exec_module(r:=_.module_from_spec(id))
return r

sys.modules['lazy']=lazy('-L imports')
— 仅供学习,import 语句本可以是局部。 (GPT怎么变蠢了
#ts
#1为什么静态类型的C,Go,C++ 不是弱检查 就是太复杂

代码练习: 不需要 type WTF<> = 就可以检查 htmlTag, funcPipe, nthArg, printf("\d") 等调用的类型

int[10] 的实质、 #Kt 类型推导的原理