duangsuse, [2024/1/24 16:44]
Zig里是需要显式控制流,但Kt实际上把Result用的很好, firstOrNull 完全能写成 first{}.orNull 什么的允许符号化
调用栈其实C /usr/bin/stacktrace:error 都支持的,不需要异常
duangsuse, [2024/1/24 16:45]
js里根本不允许判断异常种类,知道你不能Retry,所以啥都一个样
duangsuse, [2024/1/24 16:47]
因为滥用异常分类,还有一些人搞出了 algebraic-effects
就是把throw当依赖注入+await 用, 顺带支持了免标async
但实际上这很难调试
https://overreacted.io/algebraic-effects-for-the-rest-of-us/
另外 checked exception 真不是啥好东西
如果说分门别类更严谨,那FP却干脆没还原这个
duangsuse, [2024/1/24 16:52]
如果函数啥错误都能抛出,只能说明拆分复用有问题
或者文档垃圾到AI才看得懂
只能说try catch 就是面向语句的东西,对标SQL事务
但大家需要的是调用链,就像 ?: run{}
duangsuse, [2024/1/24 16:56]
还有一点,就是?: throw的隐式控制流
比 {yield()} 的类型推导更为隐式
如果像Go那样支持匿名union ,就能还原CE了
sealed 太冗长
duangsuse, [2024/1/24 17:01]
我倒是觉得,既然扩展必然final
不如直接把所有方法都视为 arg0='.'this 的普通调用
区分那么多OOP FP PP的反而很奇怪
py 没有做到这个,但Rust是,但Rust又拿tuple trait取代了overloads,让人无言以对
duangsuse, [2024/1/24 17:04]
也不能这么说,Kt 的 data class, let run{} 和 coroutine 还是很前瞻性的
虽然对应地, match 和async应用连py都不如
duangsuse, [2024/1/24 17:11]
context() fun 替代 override class 吗?噢这个是Adapter
猜到是?
感觉不如Rust的trait, 而且static 一词就是莫名其妙,jspy里根本没有这类概念
ml 系强制尾递归,更像是定义式编程的问题,forEach根本不需要递归
duangsuse, [2024/1/24 17:13]
MD,现在pakage namespace 也要允许二次打开了是吗
就像之前的 inner class
早知如此,就把所有语言成员都扁平化, 就没有扩展性问题了
duangsuse, [2024/1/24 20:28]
同意,直接写 val Int.ZERO=0 就当static了,还可以外部扩展和interface化
duangsuse, [2024/1/24 20:35]
Kt还是支持 Bitflags (and/or)的,shlr 也能用*2^n 来模拟
位运算纯粹是protobuf那样的地方需要用,就连DatInpStream 都不应该直接做bitwise
Kt和下层术语决裂的还不完全,比如abstract,annotation,inner 这些kw都可以优化掉的
top level 不够,上面说了这玩意和companion不一致会造成接口/扩展性问题
KMP 确实烂到不如直接写ifdef ,不知道能不能拿interface 抽象分平台函数(Abstract Factory
duangsuse, [2024/1/24 20:38]
照抄Scala ,结果悲剧了
companion 又不需要参与重写查找, 到底谁会优先拿statics 去实现接口啊(除了序列化器
Zig里是需要显式控制流,但Kt实际上把Result用的很好, firstOrNull 完全能写成 first{}.orNull 什么的允许符号化
调用栈其实C /usr/bin/stacktrace:error 都支持的,不需要异常
duangsuse, [2024/1/24 16:45]
js里根本不允许判断异常种类,知道你不能Retry,所以啥都一个样
duangsuse, [2024/1/24 16:47]
因为滥用异常分类,还有一些人搞出了 algebraic-effects
就是把throw当依赖注入+await 用, 顺带支持了免标async
但实际上这很难调试
https://overreacted.io/algebraic-effects-for-the-rest-of-us/
另外 checked exception 真不是啥好东西
如果说分门别类更严谨,那FP却干脆没还原这个
duangsuse, [2024/1/24 16:52]
如果函数啥错误都能抛出,只能说明拆分复用有问题
或者文档垃圾到AI才看得懂
只能说try catch 就是面向语句的东西,对标SQL事务
但大家需要的是调用链,就像 ?: run{}
duangsuse, [2024/1/24 16:56]
还有一点,就是?: throw的隐式控制流
比 {yield()} 的类型推导更为隐式
如果像Go那样支持匿名union ,就能还原CE了
sealed 太冗长
duangsuse, [2024/1/24 17:01]
我倒是觉得,既然扩展必然final
不如直接把所有方法都视为 arg0='.'this 的普通调用
区分那么多OOP FP PP的反而很奇怪
py 没有做到这个,但Rust是,但Rust又拿tuple trait取代了overloads,让人无言以对
duangsuse, [2024/1/24 17:04]
也不能这么说,Kt 的 data class, let run{} 和 coroutine 还是很前瞻性的
虽然对应地, match 和async应用连py都不如
duangsuse, [2024/1/24 17:11]
context() fun 替代 override class 吗?噢这个是Adapter
猜到是?
interface Statics<T>{ context(T) fun }感觉不如Rust的trait, 而且static 一词就是莫名其妙,jspy里根本没有这类概念
ml 系强制尾递归,更像是定义式编程的问题,forEach根本不需要递归
duangsuse, [2024/1/24 17:13]
MD,现在pakage namespace 也要允许二次打开了是吗
就像之前的 inner class
早知如此,就把所有语言成员都扁平化, 就没有扩展性问题了
duangsuse, [2024/1/24 20:28]
同意,直接写 val Int.ZERO=0 就当static了,还可以外部扩展和interface化
duangsuse, [2024/1/24 20:35]
Kt还是支持 Bitflags (and/or)的,shlr 也能用*2^n 来模拟
位运算纯粹是protobuf那样的地方需要用,就连DatInpStream 都不应该直接做bitwise
Kt和下层术语决裂的还不完全,比如abstract,annotation,inner 这些kw都可以优化掉的
top level 不够,上面说了这玩意和companion不一致会造成接口/扩展性问题
KMP 确实烂到不如直接写ifdef ,不知道能不能拿interface 抽象分平台函数(Abstract Factory
duangsuse, [2024/1/24 20:38]
照抄Scala ,结果悲剧了
companion 又不需要参与重写查找, 到底谁会优先拿statics 去实现接口啊(除了序列化器
overreacted.io
Algebraic Effects for the Rest of Us — overreacted
They’re not burritos.
#dev
rust 需要熟悉&mut 和奇特的泛型/函数模型,以及没有构造器的DSL
zig很像C,没有Rc和异常透传,需要习惯 Option, defer 等一系列冗余符号
haskell 要把链表转来转去,或者搞懂四五个定义不清的 typeclass(trait) 。作为FP它还有小白大佬面向的资料混一起的风格
erlang Elixir 据说是Actor并发的真理,但用起来还不如Promise直观、定义式
ruby 继Rails后被py打的落花流水, 尽管它有真OOP和函数式
C#有this参数CLR的OOP是比较灵活的,还有隐转呢
总的来说,我觉得比jspy复杂的语言都没有学习的必要
大家是学API、做绑定的, 又没有聪明到能玩算法的程度
—
FP 最做作的就是链表了, 连ADT都不擅长还好意思说declarative
Lisp风格可以把 (+ 解释为函数,却不能像OOP把它的重载列出来,解释1+和""+的不同,反而是和VB一样 让人把数组当struct用的级别,这种心智模型的惰性,让单调的语法无法发挥特长
SQL aggerate 都比fold reduce 要FP 。Ruby 就是极其FP的语言,列表操作名都花里胡哨的,那FP显然不是靠特立独行搞的
takeWhile 这个也挺奇怪的。 为什么不做成 ary.partition2(test, fA,fB) 呢?这种declarative也就刚刚从 for(;;) 的娘胎跑出来的程度
Haskell 还有种不需要手写回调地狱(fmap) ,但概念比回调更地狱的独创FP风格
rust 需要熟悉&mut 和奇特的泛型/函数模型,以及没有构造器的DSL
zig很像C,没有Rc和异常透传,需要习惯 Option, defer 等一系列冗余符号
haskell 要把链表转来转去,或者搞懂四五个定义不清的 typeclass(trait) 。作为FP它还有小白大佬面向的资料混一起的风格
erlang Elixir 据说是Actor并发的真理,但用起来还不如Promise直观、定义式
ruby 继Rails后被py打的落花流水, 尽管它有真OOP和函数式
C#有this参数CLR的OOP是比较灵活的,还有隐转呢
总的来说,我觉得比jspy复杂的语言都没有学习的必要
大家是学API、做绑定的, 又没有聪明到能玩算法的程度
—
FP 最做作的就是链表了, 连ADT都不擅长还好意思说declarative
Lisp风格可以把 (+ 解释为函数,却不能像OOP把它的重载列出来,解释1+和""+的不同,反而是和VB一样 让人把数组当struct用的级别,这种心智模型的惰性,让单调的语法无法发挥特长
SQL aggerate 都比fold reduce 要FP 。Ruby 就是极其FP的语言,列表操作名都花里胡哨的,那FP显然不是靠特立独行搞的
takeWhile 这个也挺奇怪的。 为什么不做成 ary.partition2(test, fA,fB) 呢?这种declarative也就刚刚从 for(;;) 的娘胎跑出来的程度
Haskell 还有种不需要手写回调地狱(fmap) ,但概念比回调更地狱的独创FP风格
#java duangsuse, [2024/2/23 01:21]
请使用 kotlin-reflect 和 new Compiler() 来为
代码的部分可用StringBuilder生成
... https://gist.github.com/duangsuse/d022c7ad037bb7fed446f72ec9b38ef7
duangsuse, [2024/2/23 01:23]
我用jshell API 实现了一个ini序列化
大概比直接靠javac 简单点吧,理论上eval的玩意也可以缓存到编译期
duangsuse, [2024/2/23 01:28]
我觉得我的目的已经很清楚了,写在最顶上
如果看不懂就说明不用看,反之测试过
如果不是gpt不会,我很乐意只写开头那1行
duangsuse, [2024/2/23 01:30]
JShell API 虽然比从Compiler() 加载短的多,但 js.eval() 那个默认返回String我不喜欢……
或许是为了兼容RPC吧, 但LocalExecutor 应该就不需要序列化啊
感觉用jsh模拟eval 比ByteBuddy规范得多
duangsuse, [2024/2/23 01:34]
所以说py真的太解压了.. setattr() 就算动静态隔离,typehint还能做格式验证
js稍微乱点
java 连个规范的元编程方法都没有,一群魔法师
我是觉得一个老古董语言就不要和jspy 比面向event和类型反射
duangsuse, [2024/2/23 01:42]
不会啊,或许Lombok有
Factory类似Provider的简化版,在需要用subtypes 实现接口时可以用来简化创建
duangsuse, [2024/2/23 01:47]
写java,C++ 这些的时候有种错觉
public 是🔘列表符号
分号和各种不执行的标注也完全喧宾夺主了
duangsuse, [2024/2/23 01:49]
Compiler 和 JShell API 就是tools.jar里的,做不到比 CLI更强的功能,就是调用快点
JS("") 和runtime其实是完全隔离的,它的classpath 相当于是编译期的,你可以把生成的代码按行号缓存下来,不需要defineClass
duangsuse, [2024/2/23 01:51]
没错,第一次在runtime 做static foreach 留缓存,第二次可以直接走预处理器
这样也可以使用不常规的常量传播的结果,但主要是实现setattr()
duangsuse, [2024/2/23 01:53]
准确的说是在运行时,把eval()的东西缓存下来,那就叫编译嘛
JIT
请使用 kotlin-reflect 和 new Compiler() 来为
data class MPair(var A: Int, var B: Int)
实现
loads<UPair> (mapOf("A" to 1, "B" to 1)) 代码的部分可用StringBuilder生成
class Pickle {
UPair load(UPair o, Map<Str,Any> m) { for(kv : field) o.$k=m.get($k); }
} ... https://gist.github.com/duangsuse/d022c7ad037bb7fed446f72ec9b38ef7
duangsuse, [2024/2/23 01:23]
我用jshell API 实现了一个ini序列化
大概比直接靠javac 简单点吧,理论上eval的玩意也可以缓存到编译期
duangsuse, [2024/2/23 01:28]
我觉得我的目的已经很清楚了,写在最顶上
如果看不懂就说明不用看,反之测试过
如果不是gpt不会,我很乐意只写开头那1行
duangsuse, [2024/2/23 01:30]
JShell API 虽然比从Compiler() 加载短的多,但 js.eval() 那个默认返回String我不喜欢……
或许是为了兼容RPC吧, 但LocalExecutor 应该就不需要序列化啊
感觉用jsh模拟eval 比ByteBuddy规范得多
duangsuse, [2024/2/23 01:34]
所以说py真的太解压了.. setattr() 就算动静态隔离,typehint还能做格式验证
js稍微乱点
java 连个规范的元编程方法都没有,一群魔法师
我是觉得一个老古董语言就不要和jspy 比面向event和类型反射
duangsuse, [2024/2/23 01:42]
不会啊,或许Lombok有
Factory类似Provider的简化版,在需要用subtypes 实现接口时可以用来简化创建
duangsuse, [2024/2/23 01:47]
写java,C++ 这些的时候有种错觉
public 是🔘列表符号
分号和各种不执行的标注也完全喧宾夺主了
duangsuse, [2024/2/23 01:49]
Compiler 和 JShell API 就是tools.jar里的,做不到比 CLI更强的功能,就是调用快点
JS("") 和runtime其实是完全隔离的,它的classpath 相当于是编译期的,你可以把生成的代码按行号缓存下来,不需要defineClass
duangsuse, [2024/2/23 01:51]
没错,第一次在runtime 做static foreach 留缓存,第二次可以直接走预处理器
这样也可以使用不常规的常量传播的结果,但主要是实现setattr()
duangsuse, [2024/2/23 01:53]
准确的说是在运行时,把eval()的东西缓存下来,那就叫编译嘛
JIT
Gist
dumps(Pair::class) (Pair(0,0), mutableMapOf("first" to 3))
dumps(Pair::class) (Pair(0,0), mutableMapOf("first" to 3)) - reflect_jsh.kt
Forwarded from Deleted Account
To retrieve the N most recent images from the Chrome cache in Linux that are greater than 100KB in size using Python, you can use the following script. This script uses the
Please make sure to adjust the
sqlite3 library to access Chrome's cache database. Please note that accessing the cache database directly may vary based on the Chrome version and system setup.import os
import shutil
import sqlite3
from datetime import datetime
def retrieve_recent_images(n, min_size):
chrome_user_dir = os.path.expanduser('~/.config/google-chrome/')
cache_dir = chrome_user_dir + '/Default/Cache/'
cache_db = cache_dir + 'Cache'
conn = sqlite3.connect(cache_db)
c = conn.cursor()
c.execute("SELECT key, length, creation_time, url FROM 'entries' WHERE length > ? ORDER BY creation_time DESC LIMIT ?", (min_size, n))
rows = c.fetchall()
if not os.path.exists('recent_images'):
os.makedirs('recent_images')
for row in rows:
cache_key = row[0]
size = row[1]
creation_time = datetime.utcfromtimestamp(row[2])
url = row[3]
image_path_original = cache_dir + cache_key
image_path_dest = 'recent_images/' + cache_key
if os.path.exists(image_path_original):
shutil.copy(image_path_original, image_path_dest)
print(f"Image saved - Size: {size} bytes, Creation Time: {creation_time}, URL: {url}")
conn.close()
if __name__ == '__main__':
retrieve_recent_images(5, 100 * 1024) # Retrieves 5 most recent images (>100KB)
Please make sure to adjust the
chrome_user_dir variable if Chrome is installed in a different location on your system. Also, keep in mind that the cache database structure may vary in different Chrome versions.#py Here are one-line examples for each of the available transformations provided by
1. apply: Converts
2. asserts: Converts
3. basestring: Replaces
4. buffer: Converts
5. dict: Converts
6. except: Converts
7. exec: Converts
8. execfile: Converts
9. exitfunc: Converts
10. filter: Converts
11. funcattrs: Converts
12. future: Adds
13. getcwdu: Converts
14. has_key: Converts
15. idioms: Various idiomatic changes for Python 3.
16. import: Converts
17. imports: Converts
18. imports2: Converts
19. input: Converts
20. intern: Converts
21. isinstance: Converts
22. itertools: Converts
23. itertools_imports: Adds
24. long: Converts
25. map: Converts
26. metaclass: Converts metaclass syntax to Python 3 style.
27. methodattrs: Converts
28. ne: Converts
29. next: Converts
30. nonzero: Converts
31. numliterals: Converts octal literals (e.g.,
32. operator: Converts
33. paren: Adds parentheses for print statements (e.g.,
34. print: Converts
35. raise: Converts raise E, V to raise E(V).
36. raw_input: Converts raw_input() to input() (since input() in Python 3 reads a string).
37. reduce: Converts reduce(func, iterable) to functools.reduce(func, iterable).
38. reload: Converts reload(module) to importlib.reload(module).
39. renames: Various renaming changes for Python 3.
40. repr: Converts repr(x) to repr(x).
41. set_literal: Converts {x, y} to set([x, y]).
42. standarderror: Converts StandardError to Exception.
43. sys_exc: Converts sys.exc_type to sys.exc_info()[0].
44. throw: Converts x.throw(E, V, T) to x.throw(E(V)).with_traceback(T).
45. tuple_params: Converts def f((a, b)): ... to def f(a_b): a, b = a_b.
46. types: Converts types.ClassType to type.
47. unicode: Converts unicode(x) to str(x) (since unicode is not available in Python 3).
48. urllib: Converts urllib.quote() to urllib.parse.quote(), etc.
2to3:1. apply: Converts
apply(func, args) to func(*args).2. asserts: Converts
assert statements to assert function calls.3. basestring: Replaces
basestring with str (since basestring is not available in Python 3).4. buffer: Converts
buffer to memoryview.5. dict: Converts
dict.iteritems() to dict.items().6. except: Converts
except Exception, e to except Exception as e.7. exec: Converts
exec statements to exec() function calls.8. execfile: Converts
execfile to exec(open(filename).read()).9. exitfunc: Converts
atexit.register(func) to atexit.register(func, *args, **kwargs).10. filter: Converts
filter(func, iterable) to list(filter(func, iterable)).11. funcattrs: Converts
func.func_... attributes to func.__...__.12. future: Adds
from __future__ import ... statements for Python 3 compatibility.13. getcwdu: Converts
os.getcwdu() to os.getcwd().14. has_key: Converts
dict.has_key(key) to key in dict.15. idioms: Various idiomatic changes for Python 3.
16. import: Converts
import x to from x import y.17. imports: Converts
import x to import y.18. imports2: Converts
import x to import y.19. input: Converts
input() to raw_input() (since input() in Python 3 evaluates the input).20. intern: Converts
intern(s) to sys.intern(s).21. isinstance: Converts
isinstance(x, T) to isinstance(x, (T1, T2)).22. itertools: Converts
itertools.izip() to zip(), etc.23. itertools_imports: Adds
from itertools import ... statements.24. long: Converts
long(x) to int(x) (since long is not available in Python 3).25. map: Converts
map(func, iterable) to list(map(func, iterable)).26. metaclass: Converts metaclass syntax to Python 3 style.
27. methodattrs: Converts
method.im_... attributes to method.__...__.28. ne: Converts
<> to !=.29. next: Converts
next(it) to next(it, default).30. nonzero: Converts
x.__nonzero__() to bool(x) (since __nonzero__() is not available in Python 3).31. numliterals: Converts octal literals (e.g.,
0755) to hexadecimal literals (e.g., 0o755).32. operator: Converts
x.__cmp__(y) to operator.__cmp__(x, y).33. paren: Adds parentheses for print statements (e.g.,
print x becomes print(x)).34. print: Converts
print x to print(x).35. raise: Converts raise E, V to raise E(V).
36. raw_input: Converts raw_input() to input() (since input() in Python 3 reads a string).
37. reduce: Converts reduce(func, iterable) to functools.reduce(func, iterable).
38. reload: Converts reload(module) to importlib.reload(module).
39. renames: Various renaming changes for Python 3.
40. repr: Converts repr(x) to repr(x).
41. set_literal: Converts {x, y} to set([x, y]).
42. standarderror: Converts StandardError to Exception.
43. sys_exc: Converts sys.exc_type to sys.exc_info()[0].
44. throw: Converts x.throw(E, V, T) to x.throw(E(V)).with_traceback(T).
45. tuple_params: Converts def f((a, b)): ... to def f(a_b): a, b = a_b.
46. types: Converts types.ClassType to type.
47. unicode: Converts unicode(x) to str(x) (since unicode is not available in Python 3).
48. urllib: Converts urllib.quote() to urllib.parse.quote(), etc.
duangsuse, [2024/3/9 16:44]
语言绝不能多加特性,加库API就好了
你看py 40年来语法变过没有?
duangsuse, [2024/3/9 16:46]
如果Modifiers() 可以visitor复制的话还是好改的
我觉得API做不好你就像DOM那样支持innerText算了,或者外提literals走宏替换好了, 不就自动refactor吗 既要又要的 复杂度比得上gpt么
听说IDEA版本库有4G啊
或许比WebKit还大呢
duangsuse, [2024/3/9 16:51]
如果改起来这么复杂,说明框架连 Object.assign 的完善度都没达到,或者说连js界的状态管理 水平都没有
因为assign是可以被hook为深拷贝的,只不过默认是0拷贝
duangsuse, [2024/3/9 16:55]
https://github.com/python/cpython/blob/3.12/Lib/lib2to3/fixes/fix_map.py
这个够不够全?
duangsuse, [2024/3/9 16:56]
语言绝不能多加特性,加库API就好了
你看py 40年来语法变过没有?
duangsuse, [2024/3/9 16:46]
如果Modifiers() 可以visitor复制的话还是好改的
我觉得API做不好你就像DOM那样支持innerText算了,或者外提literals走宏替换好了, 不就自动refactor吗 既要又要的 复杂度比得上gpt么
听说IDEA版本库有4G啊
或许比WebKit还大呢
duangsuse, [2024/3/9 16:51]
如果改起来这么复杂,说明框架连 Object.assign 的完善度都没达到,或者说连js界的状态管理 水平都没有
因为assign是可以被hook为深拷贝的,只不过默认是0拷贝
duangsuse, [2024/3/9 16:55]
https://github.com/python/cpython/blob/3.12/Lib/lib2to3/fixes/fix_map.py
这个够不够全?
duangsuse, [2024/3/9 16:56]
python -m lib2to3 -l |xargs
Available transformations for the -f/--fix option: apply asserts basestring buffer dict except exec execfile exitfunc filter funcattrs future getcwdu has_key idioms import imports imports2 input intern isinstance itertools itertools_imports long map metaclass methodattrs ne next nonzero numliterals operator paren print raise raw_input reduce reload renames repr set_literal standarderror sys_exc throw tuple_params types unicode urllib ws_comma xrange xreadlines zipGitHub
cpython/Lib/lib2to3/fixes/fix_map.py at 3.12 · python/cpython
The Python programming language. Contribute to python/cpython development by creating an account on GitHub.
#plt duangsuse:
我就觉得赢王民科,有时候对自己不学的领域指手画脚
但民科不意味着他在plt是无价值的,实际上我很希望有更多更易懂的中文资料,但他们还超不过赢王10年前的博客
其实我很奇怪啊,那些教「编译原理」「操作系统」的大学生和教授去哪了
为什么能打的只有 https://moonbit.org/ 张老师一个人呢
这学术性价比也太低了,近年创立或火起来的 Go,Rust,Mojo,Dart 都没啥境内博客,难道全是论文?
同感,他是把 Any/Var(Any) 对象分开谈了,没涉及heap引用等问题
我是赞同这种分法的, 因为咋分配本来就是算法噪音,应该像py,cffi那样随便转换才好呢
Java确实只有引用类型啊,无非是在局部还是在List<>
谈到这个我觉得 kt IntArray, Array<Int> 让人有点不清,而且导致了有 intArrayOf() 这样的重复宏
2. kt是做了一个自动装拆箱,这样局部/数组和List<>里就无差异
3. CLR里泛型能是值类型,但JVM泛型擦除为Obj(int tag+void*)
jvm的代码体积会小,因为C#是用动态生成template<> 的方法new泛型class
但也造成了 Stream.OfInt 这种脑残编译期宏
其实你可以放心,如果你想学他的内容还是可以看看
只不过学他知识一定不能直接挣到钱而已
我个人觉得还是比马士兵啥的强,比如你能搞懂Serializer的编译期手段和DSL设计(虽然他没直接教过),这是长期投资
任何copy都能lazy分配的
他是觉得用传参([]) 来复制数组很过时。 很少有函数会修改参数吧?除非多返回
可以参考他对Haskell pure GADT的反对, hs的每个参数都是lazy的,就像CoW 的数组值
😂 记得某位CSer说过,计算机科学只有2种问题: 1缓存失效 2变量命名
IDisposable 这些确实烦人的很
用用函数式不就解决了吗? Go 还加了个defer
然后kt有 coroutineScope{} 这就不需要手动close()
所以说这些trick或者说设计模式, 终究还是会被正确的DSL打败
不应该耗时学习它们
选对框架是关键
我就觉得资源用完不free()很合理
反正一般程序也不是long-running
这个检查和 checked Except 一样,被严重过誉了
感觉Rust也是到处Rc<T>啊
inline fn 和接口本来就是少数,怎么可能lifetime用到爆
py只靠Rc就实现了许多GC语言的功能,只是比C多个bytes而已
Py对API和对象树的理解,可以说登峰造极,独孤求败,堪比DOM对UI的定义
py也可以用GC啊,只是正常人用weakptr(parent)就好了
对写树结构的人这些应该是常识
为什么编程语言作者,会觉得该用算法给他们擦屁股?
另外看到 https://www.jetbrains.com/decompiler
我想说<40M 的 https://github.com/dnSpy/dnSpy 比它强10倍
已经是最终成品了,除了反编还能编辑
MemoryStream {
protected override void Dispose(bool disposing)
这个有点逆天啊,是嫌嵌套还不够多,搞这么一个bool给实现者?
当我有其他算法和点子可以写,会使用其他伪代码之后,才发现java世界的语言多么装腔作势
是 Dispose(bool disposing) 频率高,还是 Dispose(Disposables.. used) 更合理呢?
我就觉得赢王民科,有时候对自己不学的领域指手画脚
但民科不意味着他在plt是无价值的,实际上我很希望有更多更易懂的中文资料,但他们还超不过赢王10年前的博客
其实我很奇怪啊,那些教「编译原理」「操作系统」的大学生和教授去哪了
为什么能打的只有 https://moonbit.org/ 张老师一个人呢
这学术性价比也太低了,近年创立或火起来的 Go,Rust,Mojo,Dart 都没啥境内博客,难道全是论文?
同感,他是把 Any/Var(Any) 对象分开谈了,没涉及heap引用等问题
我是赞同这种分法的, 因为咋分配本来就是算法噪音,应该像py,cffi那样随便转换才好呢
Java确实只有引用类型啊,无非是在局部还是在List<>
谈到这个我觉得 kt IntArray, Array<Int> 让人有点不清,而且导致了有 intArrayOf() 这样的重复宏
2. kt是做了一个自动装拆箱,这样局部/数组和List<>里就无差异
3. CLR里泛型能是值类型,但JVM泛型擦除为Obj(int tag+void*)
jvm的代码体积会小,因为C#是用动态生成template<> 的方法new泛型class
但也造成了 Stream.OfInt 这种脑残编译期宏
其实你可以放心,如果你想学他的内容还是可以看看
只不过学他知识一定不能直接挣到钱而已
我个人觉得还是比马士兵啥的强,比如你能搞懂Serializer的编译期手段和DSL设计(虽然他没直接教过),这是长期投资
任何copy都能lazy分配的
他是觉得用传参([]) 来复制数组很过时。 很少有函数会修改参数吧?除非多返回
可以参考他对Haskell pure GADT的反对, hs的每个参数都是lazy的,就像CoW 的数组值
😂 记得某位CSer说过,计算机科学只有2种问题: 1缓存失效 2变量命名
IDisposable 这些确实烦人的很
用用函数式不就解决了吗? Go 还加了个defer
然后kt有 coroutineScope{} 这就不需要手动close()
所以说这些trick或者说设计模式, 终究还是会被正确的DSL打败
不应该耗时学习它们
选对框架是关键
我就觉得资源用完不free()很合理
反正一般程序也不是long-running
这个检查和 checked Except 一样,被严重过誉了
感觉Rust也是到处Rc<T>啊
inline fn 和接口本来就是少数,怎么可能lifetime用到爆
py只靠Rc就实现了许多GC语言的功能,只是比C多个bytes而已
Py对API和对象树的理解,可以说登峰造极,独孤求败,堪比DOM对UI的定义
py也可以用GC啊,只是正常人用weakptr(parent)就好了
对写树结构的人这些应该是常识
为什么编程语言作者,会觉得该用算法给他们擦屁股?
另外看到 https://www.jetbrains.com/decompiler
我想说<40M 的 https://github.com/dnSpy/dnSpy 比它强10倍
已经是最终成品了,除了反编还能编辑
MemoryStream {
protected override void Dispose(bool disposing)
这个有点逆天啊,是嫌嵌套还不够多,搞这么一个bool给实现者?
当我有其他算法和点子可以写,会使用其他伪代码之后,才发现java世界的语言多么装腔作势
是 Dispose(bool disposing) 频率高,还是 Dispose(Disposables.. used) 更合理呢?
moonbit.org
Site not found · DreamHost
The owner of this domain has not yet uploaded their website.
duangsuse, [2024/3/9 22:04]
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
不过幸好我没他民科,不会对自己不学的领域指手画脚
是啊,这些人为什么会觉得人脑就是布尔算术数据库呢?
duangsuse, [2024/3/9 22:23]
不过淫王的一些话还是犀利的,听说有人手动调用Trasfer()参数不对导致丢钱的,而且Dapps在2017占用了 https://en.wikipedia.org/wiki/CryptoKitties#:~:text=25% 的算力
分布式系统确实需要一种WASM式的分布式ATM
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
大部分的 AI 系统里面连语法分析器(parser)都没有,所以主谓宾,句子结构都分析不清楚,更不要说理解其中的含义了。 不过幸好我没他民科,不会对自己不学的领域指手画脚
他们天真地以为,有了谓词逻辑,一阶逻辑这些东西,可以表达“因为所以不但而且存在所有”,机器就可以拥有智能。于是他们设计了各种基于逻辑的算法,专家系统(expert system),甚至设计了基于逻辑的程序语言 Prolog,把它叫做“第五代程序语言”。最后,他们遇到了无法逾越的障碍,众多的 AI 公司无法实现他们夸口的目标,各种基于“神经元”的机器无法解决实际的问题,巨额的政府和民间投资化为泡影,人工智能进入了冬天。
是啊,这些人为什么会觉得人脑就是布尔算术数据库呢?
duangsuse, [2024/3/9 22:23]
以太坊的 Solidity 语言一开头就有低级错误,导致价值五千万美元的以太币被盗。以太坊的智能合约系统消耗大量的计算资源,还导致了严重的性能问题。
我们真的需要那些脚本的功能吗?比特币虽然有脚本语言,可是常用的脚本其实只有不超过 5 个,直接 hard code 进去就可以了
实现转账交换的简单功能就可以了。合约应该是另外独立的系统,不应该跟货币捆绑在一起。交给律师和会计去办
比特币的脚本语言只能写出功能简单,不伤害系统性能,容易验证的脚本
不过淫王的一些话还是犀利的,听说有人手动调用Trasfer()参数不对导致丢钱的,而且Dapps在2017占用了 https://en.wikipedia.org/wiki/CryptoKitties#:~:text=25% 的算力
分布式系统确实需要一种WASM式的分布式ATM
duangsuse, [2024/3/11 17:59]
CIR是目前 .ll 语法的扩展,每条指令前都要前缀cir.
和 rustc 包含的HIR,MIR等树结构不同,clang会直接生成.ll文件,但它只会记录跳转而无cir.for等嵌套结构
复杂度上对C sum(1~N) 似乎是6:35行
CIR还支持保存虚表结构 / 类的基本信息
CIR 自Meta 2022.6,即将脱离“孵化”状态,其独立代码仓库将很快被合入 llvm-project 主仓库,并作为 clang 的一个子项目
在异构计算方面,CIR 目前将主要支持 CUDA 、OpenCL 、SYCL 和 OpenACC 四种平台和框架。
无端推广:写了一个类型推导科普
https://t.iss.one/dsuse/19387
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
duangsuse, [2024/3/11 22:02]
传值和传名区别在 if(rand(), print()) 是否短路上,其实就是 Swift @autoclosure(即Thunk) 的问题。过度的惰性是很慢的
CBPV就是不closure化已计算的值…… 看起来就是传名的优化
这个我不知道意义何在,因为闭包的创建是O(1)的
duangsuse, [2024/3/11 22:11]
https://valkyrie-language.netlify.app/cn/
https://blog.vero.site/post/noulith#:~:text=maxify
这个是比较数学化的,就不是无所谓的内部优化
duangsuse, [2024/3/11 22:29]
https://thunderseethe.dev/posts/bidirectional-constraint-generation/#example
然后这个作者还写了篇双相情感障碍 类型推导的
这个也太简陋了。就上面我的AST
其中x[]是关于此次调用的template<>参数Var(T)
这不就能用了么,为什么要做成完整的 unification,何况typeclass多态还乱倒不好用
“如果我们无法证明两种类型相等,我们就会遇到类型错误,我们可以提前退出。” 最后居然还扯倒了Union-Find
https://tomstu.art/hello-declarative-world 里就有教 unification ,Ruby版简单多了
连逻辑式编程都没教,程序体和constrait的对应关系没列清,乃至infer函数的签名都没讲明白,就开始写算法,只能说这个作者水平还是次。
duangsuse, [2024/3/11 23:02]
https://thunderseethe.dev/posts/row-types/
然后 row type (x:Int, y:Int) 是一种可N项组合的record,但按tuple的方法检查类型,并且还支持模拟union{}
其实Go,Kt都透过嵌入struct与Pair 在支持这种范式,我觉得它的自由度和参数颗粒化类同
union+struct A|B这个模式一般都是用extends了,搞出两种实属多余
OOP支持的是二项组合,基本把维护门槛限制在可读范围内。 把 {...o, age:18,gift:} 视为正经构造器在js都是十分炸裂的,尤其是它的实现酷似 car cdr cons
https://justinpombrio.net/2021/03/11/algebra-and-data-types.html
还是ADT更好看些
https://isomorf.io/#!/tours/of/overview/7/python #tool 这里还提了一个跨语言可视化代码编辑器
CIR是目前 .ll 语法的扩展,每条指令前都要前缀cir.
和 rustc 包含的HIR,MIR等树结构不同,clang会直接生成.ll文件,但它只会记录跳转而无cir.for等嵌套结构
复杂度上对C sum(1~N) 似乎是6:35行
CIR还支持保存虚表结构 / 类的基本信息
CIR 自Meta 2022.6,即将脱离“孵化”状态,其独立代码仓库将很快被合入 llvm-project 主仓库,并作为 clang 的一个子项目
在异构计算方面,CIR 目前将主要支持 CUDA 、OpenCL 、SYCL 和 OpenACC 四种平台和框架。
无端推广:写了一个类型推导科普
https://t.iss.one/dsuse/19387
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
duangsuse, [2024/3/11 22:02]
传值和传名区别在 if(rand(), print()) 是否短路上,其实就是 Swift @autoclosure(即Thunk) 的问题。过度的惰性是很慢的
CBPV就是不closure化已计算的值…… 看起来就是传名的优化
(Fun "x" (Return (Thunk (Fun "y" (Return (Var "x"))))))
这个我不知道意义何在,因为闭包的创建是O(1)的
duangsuse, [2024/3/11 22:11]
https://valkyrie-language.netlify.app/cn/
https://blog.vero.site/post/noulith#:~:text=maxify
a max= b
x := [1, 2, 3];
x append= 1;
这个是比较数学化的,就不是无所谓的内部优化
duangsuse, [2024/3/11 22:29]
https://thunderseethe.dev/posts/bidirectional-constraint-generation/#example
然后这个作者还写了篇双相
(app (fn(x) x) (int 3))
这个也太简陋了。就上面我的AST
F(1){x-> x[1](x[0]) }(Int)其中x[]是关于此次调用的template<>参数Var(T)
这不就能用了么,为什么要做成完整的 unification,何况typeclass多态还乱倒不好用
“如果我们无法证明两种类型相等,我们就会遇到类型错误,我们可以提前退出。” 最后居然还扯倒了Union-Find
https://tomstu.art/hello-declarative-world 里就有教 unification ,Ruby版简单多了
连逻辑式编程都没教,程序体和constrait的对应关系没列清,乃至infer函数的签名都没讲明白,就开始写算法,只能说这个作者水平还是次。
duangsuse, [2024/3/11 23:02]
https://thunderseethe.dev/posts/row-types/
然后 row type (x:Int, y:Int) 是一种可N项组合的record,但按tuple的方法检查类型,并且还支持模拟union{}
其实Go,Kt都透过嵌入struct与Pair 在支持这种范式,我觉得它的自由度和参数颗粒化类同
union+struct A|B这个模式一般都是用extends了,搞出两种实属多余
OOP支持的是二项组合,基本把维护门槛限制在可读范围内。 把 {...o, age:18,gift:} 视为正经构造器在js都是十分炸裂的,尤其是它的实现酷似 car cdr cons
https://justinpombrio.net/2021/03/11/algebra-and-data-types.html
还是ADT更好看些
https://isomorf.io/#!/tours/of/overview/7/python #tool 这里还提了一个跨语言可视化代码编辑器
Telegram
duangsuse::Echo
#plt #recommend 写了一个类型推导科普
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
https://gist.github.com/duangsuse/8fa4ae8c627e5c3c6044522a84ccebf4
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
这kt编译期显然不是古早的…
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
https://gist.github.com/duangsuse/8fa4ae8c627e5c3c6044522a84ccebf4
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
这kt编译期显然不是古早的…
好孩紙🧶 ηαsү, [2024/3/17 10:32]
json理论上来说也可以用yaml库load(
duangsuse, [2024/3/17 10:40]
json也可以用 ast.lit_eval() 加载
Trim21, [2024/3/18 01:03]
部分json是合法的python代码啊
duangsuse, [2024/3/18 08:56]
不过 True,False,null 是不能的
duangsuse, [2024/3/18 09:02]
> 利用 importlib 实现让
你需要 hook import语句,先来看看Loader
> 请你向 sys.path 添加查找器,使
duangsuse, [2024/3/18 09:02]
😅bing copilot 不能用了
Perplexity 和 pi.ai 这些小厂似乎都更会写代码
json理论上来说也可以用yaml库load(
duangsuse, [2024/3/17 10:40]
json也可以用 ast.lit_eval() 加载
Trim21, [2024/3/18 01:03]
部分json是合法的python代码啊
duangsuse, [2024/3/18 08:56]
不过 True,False,null 是不能的
duangsuse, [2024/3/18 09:02]
> 利用 importlib 实现让
from file_name import* 加载 file_name.json 字典为vars你需要 hook import语句,先来看看Loader
> 请你向 sys.path 添加查找器,使
from file_name import* 加载 file_name.json 字典
class JsonImporter(object):
def __init__(self, path=None):
self._path = path or '.'
def find_module(self, fullname, path=None):
if not fullname.endswith('.json'):
return None
filename = os.path.join(self._path, fullname + '.json')
if os.path.exists(filename):
return self
return None
def load_module(self, name):
fp = open(os.path.join(self._path, name + '.json'))
data = json.load(fp)
fp.close()
mod = imp.new_module(name)
mod.__dict__.update(data)
sys.modules[name] = mod
return mod
sys.meta_path.insert(0, JsonImporter())
duangsuse, [2024/3/18 09:02]
😅bing copilot 不能用了
Perplexity 和 pi.ai 这些小厂似乎都更会写代码
#js #apple 平底鍋, [2024/3/19 01:07]
https://bgme.me/@bgme/112117191163425974
> Mac 软件生态吐槽
今天晚上兴致之下到「数码荔技正版软件」的淘宝店看了一下(我也真是无聊的),大开眼界的同时,心里堆积了不少的嘈点。不吐不快,就在这里随便写一写,对 Mac 软件生态的吐嘈吧。
仔细想想对 Mac 软件的嘈点的开端,可以从 Downie 威胁删除用户文件开始[1]。怎么说呢?对于 Mac 用户,借用某张 meme 图的话 Mac 用户有钱。
Mac 软件生态一个很大的特点就是再小的一个功能,都有人写一个什么什么软件,然后拿出来卖钱。
对于这种现象,不作评论。但我自己作为一个 Linux 用户,我对此非常的不适应。
比如说:我在数码荔技看到了这样一个软件 A Better Finder Rename ,售价¥79,支持前缀、后缀、文本、字符、序号等等一系列方式对文件进行重命名。总之功能很强大。
但也许是思维方式的差别吧,如果我遇上要批量重命名,我的第一反应是打开终端,然后使用 rename、perl-rename;如果要求比较复杂,就写一个 bash 脚本来处理;如果 bash 脚本还搞不定,那就写一个 python 脚本(我还没有遇到 bash 脚本没搞定的情况)。而不是去什么什么商店里看有没有什么文件重命名的软件,然后掏几十元买这样一个软件。
数码荔技店中卖的软件大约有八成都是 Mac 平台独有的,而这些 Mac 平台独有的软件,相当大部分软件给我的感觉都类似于上面所说的文件重命名工具。
[1] https://www.v2ex.com/t/1022505
平底鍋, [2024/3/19 01:08]
1. Mac 的開發者憑證對於獨立開發者來說其實挺貴的,基礎成本就擺在那了
2. Mac 的使用者消費力通常確實比較高一點,折騰能力也比較弱
duangsuse, [2024/3/19 11:06]
实际上到py脚本的程度一个运维拿gpt都是够的
何况gpt会推你流行工具
duangsuse, [2024/3/19 11:07]
和中国的同物价品质低一样,都是地区税收太高
导致淀粉肠都有问题
duangsuse, [2024/3/19 11:08]
Apple不过是把功能砍了/预置了,多做点动效,就吸引那么多资本投入
duangsuse, [2024/3/19 11:10]
不是, FileSysHandle Fx是有的
>FileSysHandle 最短的文件名全替换为 +".1" 示例
duangsuse, [2024/3/19 11:13]
是的,Web平台已经能做到离线使用PWA,RTC,WASM文件系统等特性,只是和electron比API麻烦些
很可惜WASM不太好调试啊,然后ChromeOS也不流行了
https://bgme.me/@bgme/112117191163425974
> Mac 软件生态吐槽
今天晚上兴致之下到「数码荔技正版软件」的淘宝店看了一下(我也真是无聊的),大开眼界的同时,心里堆积了不少的嘈点。不吐不快,就在这里随便写一写,对 Mac 软件生态的吐嘈吧。
仔细想想对 Mac 软件的嘈点的开端,可以从 Downie 威胁删除用户文件开始[1]。怎么说呢?对于 Mac 用户,借用某张 meme 图的话 Mac 用户有钱。
Mac 软件生态一个很大的特点就是再小的一个功能,都有人写一个什么什么软件,然后拿出来卖钱。
对于这种现象,不作评论。但我自己作为一个 Linux 用户,我对此非常的不适应。
比如说:我在数码荔技看到了这样一个软件 A Better Finder Rename ,售价¥79,支持前缀、后缀、文本、字符、序号等等一系列方式对文件进行重命名。总之功能很强大。
但也许是思维方式的差别吧,如果我遇上要批量重命名,我的第一反应是打开终端,然后使用 rename、perl-rename;如果要求比较复杂,就写一个 bash 脚本来处理;如果 bash 脚本还搞不定,那就写一个 python 脚本(我还没有遇到 bash 脚本没搞定的情况)。而不是去什么什么商店里看有没有什么文件重命名的软件,然后掏几十元买这样一个软件。
数码荔技店中卖的软件大约有八成都是 Mac 平台独有的,而这些 Mac 平台独有的软件,相当大部分软件给我的感觉都类似于上面所说的文件重命名工具。
[1] https://www.v2ex.com/t/1022505
平底鍋, [2024/3/19 01:08]
1. Mac 的開發者憑證對於獨立開發者來說其實挺貴的,基礎成本就擺在那了
2. Mac 的使用者消費力通常確實比較高一點,折騰能力也比較弱
duangsuse, [2024/3/19 11:06]
实际上到py脚本的程度一个运维拿gpt都是够的
何况gpt会推你流行工具
duangsuse, [2024/3/19 11:07]
和中国的同物价品质低一样,都是地区税收太高
导致淀粉肠都有问题
duangsuse, [2024/3/19 11:08]
Apple不过是把功能砍了/预置了,多做点动效,就吸引那么多资本投入
duangsuse, [2024/3/19 11:10]
不是, FileSysHandle Fx是有的
>FileSysHandle 最短的文件名全替换为 +".1" 示例
def rename_files(directory_path, new_extension):https://rename.jgrass.xyz/
for root, dirs, files in os.walk(directory_path):
for filename in files:
old_path = os.path.join(root, filename)
new_filename = filename.replace(".", "") + new_extension
new_path = os.path.join(root, new_filename)
os.renames(old_path, new_path)
// assuming fileHandle is a valid FileSystemFileHandle instance representing the file to be renamed
const newFileName = 'new_filename.txt'; // replace with desired new name
await fileHandle.parent.getFileHandle(newFileName).then((newFileHandle) => {
throw new Error('File already exists');
}).catch(async () => {
await fileHandle.move({ target: newFileHandle });//fx专属
});
duangsuse, [2024/3/19 11:13]
是的,Web平台已经能做到离线使用PWA,RTC,WASM文件系统等特性,只是和electron比API麻烦些
很可惜WASM不太好调试啊,然后ChromeOS也不流行了
BGME
毛茸茸生长 :trans_flag: (@[email protected])
内容警告:Mac 软件生态吐嘈
duangsuse, [2024/3/21 19:28]
哈哈哈社工,和那个微信文件助手高仿号同理
duangsuse, [2024/3/21 19:35]
如果视力是能训练回来的,为什么就你知道? 赢王已经陷入了抗癌药阴谋论,就差得出昂撒犹太控制 🌎了
duangsuse, [2024/3/21 19:37]
https://www.yinwang.org/resources/gucs-sample-chapter1.pdf
不过赢王居然不想 top-down design 这个CS教程
让人匪夷所思,我看看
duangsuse, [2024/3/21 19:43]
查了下,我看未必是中医,而是假性近视本来就是能恢复的
https://www.zhihu.com/question/394687329
有人说自己600->300过
从直觉上讲,错误习惯导致眼轴病变,靠习惯也能逆转
只看度数不能证明近视原因
duangsuse, [2024/3/21 19:48]
话说赢王也不是个粉红,为什么会热衷于这么反智的话题?
我作为反思怪也没有想到能做这么逆天的结论
duangsuse, [2024/3/21 19:31]
开源:增加下游数量,方便供应链攻击
节流:砍功能砍支持,挣钱
开猿:按专家或团队解散app维护者
节流:降低可用性和粉丝数
降本增笑
哈哈,不支持宏内联的py里确实不用分,反正内存都可变
程序员反贼比例应该挺高的毕竟心态开放,而且很容易触墙 😠 ✊
GH主要是翻墙吧…… 提交和同步有UI的
其实我觉得直接应用比较好
50w算是什么级别啊,vue应该有几百 什么领域的?CG?web?桌面?移动
照张雪峰说的,acm,那就是IT的哲学 是拉丁文,哲学家大部分都是死人,在古代。 AI对什么冲击最大啊? 你能比几十T的模型擅长查资料?
无非是哲学死的早一点,计算机的哲学死的晚一点,能分应用界的名气
write code, to solve exact cover problem using SAT or SMT
我搜了一下,发现gpt3能给一个逻辑编程调用
感觉挺虚无的,这么牛逼的问题连个库+框架都没有,还要仰赖gpt的编程能力
Z3不知有没有封装
计算机存在的意义,就是为了规范各种问题、联系各种解法
动规就是自底向上来做缓存的递归嘛 很好理解,对PYer 来说标准库就有
https://docs.python.org/3/library/functools.html#:~:text=a%20dynamic%20programming%20technique
你也没说错,很多dp问题只涉及2个参数 -二维数组
如果连API都给不出来,那就不是CS问题
https://brilliant.org/wiki/heap-sort/
https://algostructure.com/sorting/heapsort.php
btw. 我以前也做过算法可视化的,但B号是露脸的 不方便发
rbt 几乎是函数式数据结构的helloworld了
参考 https://try.moonbitlang.com/?012_avl_tree.mbt
哈哈哈社工,和那个微信文件助手高仿号同理
duangsuse, [2024/3/21 19:35]
如果视力是能训练回来的,为什么就你知道? 赢王已经陷入了抗癌药阴谋论,就差得出昂撒犹太控制 🌎了
duangsuse, [2024/3/21 19:37]
https://www.yinwang.org/resources/gucs-sample-chapter1.pdf
不过赢王居然不想 top-down design 这个CS教程
让人匪夷所思,我看看
duangsuse, [2024/3/21 19:43]
查了下,我看未必是中医,而是假性近视本来就是能恢复的
https://www.zhihu.com/question/394687329
有人说自己600->300过
从直觉上讲,错误习惯导致眼轴病变,靠习惯也能逆转
只看度数不能证明近视原因
duangsuse, [2024/3/21 19:48]
话说赢王也不是个粉红,为什么会热衷于这么反智的话题?
我作为反思怪也没有想到能做这么逆天的结论
duangsuse, [2024/3/21 19:31]
开源:增加下游数量,方便供应链攻击
节流:砍功能砍支持,挣钱
开猿:按专家或团队解散app维护者
节流:降低可用性和粉丝数
降本增笑
哈哈,不支持宏内联的py里确实不用分,反正内存都可变
程序员反贼比例应该挺高的毕竟心态开放,而且很容易触墙 😠 ✊
GH主要是翻墙吧…… 提交和同步有UI的
其实我觉得直接应用比较好
50w算是什么级别啊,vue应该有几百 什么领域的?CG?web?桌面?移动
照张雪峰说的,acm,那就是IT的哲学 是拉丁文,哲学家大部分都是死人,在古代。 AI对什么冲击最大啊? 你能比几十T的模型擅长查资料?
无非是哲学死的早一点,计算机的哲学死的晚一点,能分应用界的名气
write code, to solve exact cover problem using SAT or SMT
我搜了一下,发现gpt3能给一个逻辑编程调用
感觉挺虚无的,这么牛逼的问题连个库+框架都没有,还要仰赖gpt的编程能力
Z3不知有没有封装
计算机存在的意义,就是为了规范各种问题、联系各种解法
动规就是自底向上来做缓存的递归嘛 很好理解,对PYer 来说标准库就有
https://docs.python.org/3/library/functools.html#:~:text=a%20dynamic%20programming%20technique
你也没说错,很多dp问题只涉及2个参数 -二维数组
如果连API都给不出来,那就不是CS问题
https://brilliant.org/wiki/heap-sort/
https://algostructure.com/sorting/heapsort.php
btw. 我以前也做过算法可视化的,但B号是露脸的 不方便发
rbt 几乎是函数式数据结构的helloworld了
参考 https://try.moonbitlang.com/?012_avl_tree.mbt
duangsuse, [2024/3/23 13:16]
简单清晰是可靠的先决条件,不是可靠的牺牲品。
简单直接的代码\=易取代的初级代码
如果连这个领域的demo怎么实现都不懂,从不思考实体背后的复用逻辑, 用“工程技巧”添加几个参数,恐怕也就只是bash脚本级别的设计。 然而我看到很多的设计模式,都是这样的三脚猫,因此所谓静态语言才和jspy产生那么大隔阂
你说一味追求“快”“小”的产物所做出来的东西应用在生产中只会是灾难, 我看让一个简单app的整个「体系」无法解释的过度工程,才是最大的灾难
duangsuse, [2024/3/23 13:36]
我之前70行有个basenc算法 https://t.iss.one/dsuse/18158
虽然代码短而晦涩(因为是初稿),但复用性还好
功能复杂、实现易懂、代码长 ,三者是没有绝对相关的
作者希望在保证功能的同时,缩减代码、提供统一恒定的接口, 这是非常有道理的
功能上的规范才是软件工程的本质,那些class不是, 怀念旧软件\=怀念没有功能和适配性的魔法特技,而是在追求真正有语意的设计驱动编程 。
duangsuse, [2024/3/23 13:48]
v8我不知道,不过 https://bellard.org/tcc/tccboot.html (5.9M, Linux 2.4) 和 https://luajit.org/download.html (822.84k)
你可以观摩观摩
不知道为什么你能从protobuf, ANTLR 等流行实现,得出“某个功能必须占几百K” 这种刻板印象来的。 你可能根本没分析数据和程序间,通过怎样的结构来对应。你也不在乎某个编程问题属于什么领域
不过我知道,LeetCode其实就属于复杂功能 低代码实现的。 其实许多“高工程质量”的标准库和算法题解也没有结构性差异,无非多几个参数和class
duangsuse, [2024/3/23 13:56]
> 如果这套毫无意义的抒发能够推动一个3M内实现V8引擎的工程奇迹诞生
我现在告诉你了,V8 那样的jit也不是非得设计那么多中间层,才能做出来的。 实际上gcc+asm 的最小可行实现不仅没有3M,而且像numpy那样提供显式的优化API,能多快好省地“做工程”
你能把观点细化到对事不对人么
我就只看到你觉得, 新软件就是比旧的功能好,因为里面包含更多工程师、更多产品需求耗费的精力,甚至更多更专业的"Agile" 架构师的天才思想, 但这就是它们比「最初的美好」烂的原因, 所谓屎山是堆砌出来的,不是所思即所得的设计。
或许V8是膨胀到20M,但工程师们写helloworld 的水平却不会随之攀升。 为了待在原地而「奋力」奔跑,有意义吗?
duangsuse, [2024/3/23 14:01]
得,我举个例子来展现你的 “V8 <3M 不可行论” 有多荒谬,以及猜测你刻板印象的来源,还变成我打稻草人了
这都是批评过度工程的案例。 我是想说,比如要开发按键精灵那种程度的安卓脚本, Duktape(800K) 比一定要移植V8 适配多了。 明明软件功能和需求就是没进步,“操作系统层面”却不断膨胀,甚至把复杂性溢出到app层干扰开发者的创作
https://duktape.org/download
duangsuse, [2024/3/23 14:07]
那你反对原作者干啥啊, 他说的就是「不在现有的工具链上建设」啊
人家又没有说技术债务有罪论
duangsuse, [2024/3/23 14:10]
可能软件界还是太新了,加入知识共享的很多,导致一直在发展,没有人停下来像真的工程师那样去总结
但开放正是它的先进性所在
https://www.yinwang.org/blog-cn/2015/06/07/software-engineering
btw. >这些人做出来少数有点用的东西(比如 JUnit),其实非常容易,以至于每个初学编程的人都应该做得出来。一个程序员见识需要低到什么程度,才会在乎这种人说的话?
还有一个「交换律:数学生的编程水平,等于计算机科学生的数学水平」
可以说是破了两个刻板印象。 计算机是工具,代码不是拿来膜拜的,怎么简单怎么写
duangsuse, [2024/3/23 14:20]
让我想到前几天Apple Java 的新闻 https://t.iss.one/kotlin_cn/106753
Mac应该算是软件产品化的顶峰了吧? 又是Darwin的例行升级
哦对,还有固件更新把2024写错为24,导致所有用户被升级的
「编程要严肃」「快和简明是代码可信度的牺牲品」,这只是观念而已,甚至该叫偏见。 谁都想要高质量可维护的软件
凭什么说像fakerjs那样总会被潮流取代的 流行的代码,是高质量软件的必需品呢?
duangsuse, [2024/3/23 14:25]
同样的话也可以给软件工程化的标杆—— Apple 生态圈啊
duangsuse, [2024/3/23 14:26]
难道不是越持久、越宏大的代码越可信? 谁能在4G的代码仓库里,找到是哪一行导致JVM在XNU内核上崩溃的bug?
Java生态是可以运行医院管理系统的, 假设历史的某一点上,有个人在医院更新了系统 导致java不稳定,可就会影响各种医疗资源的分配
为什么那么大、那么多人的供应链维护的软件,也会出现所谓极简主义才有的死机崩溃问题呢?
另外推荐
https://mirrors.ustc.edu.cn/alpine/latest-stable/releases/x86/
https://tinycorelinux.net/downloads.html
https://www.damnsmalllinux.org/
简单清晰是可靠的先决条件,不是可靠的牺牲品。
简单直接的代码\=易取代的初级代码
如果连这个领域的demo怎么实现都不懂,从不思考实体背后的复用逻辑, 用“工程技巧”添加几个参数,恐怕也就只是bash脚本级别的设计。 然而我看到很多的设计模式,都是这样的三脚猫,因此所谓静态语言才和jspy产生那么大隔阂
你说一味追求“快”“小”的产物所做出来的东西应用在生产中只会是灾难, 我看让一个简单app的整个「体系」无法解释的过度工程,才是最大的灾难
duangsuse, [2024/3/23 13:36]
我之前70行有个basenc算法 https://t.iss.one/dsuse/18158
虽然代码短而晦涩(因为是初稿),但复用性还好
功能复杂、实现易懂、代码长 ,三者是没有绝对相关的
作者希望在保证功能的同时,缩减代码、提供统一恒定的接口, 这是非常有道理的
功能上的规范才是软件工程的本质,那些class不是, 怀念旧软件\=怀念没有功能和适配性的魔法特技,而是在追求真正有语意的设计驱动编程 。
duangsuse, [2024/3/23 13:48]
v8我不知道,不过 https://bellard.org/tcc/tccboot.html (5.9M, Linux 2.4) 和 https://luajit.org/download.html (822.84k)
你可以观摩观摩
不知道为什么你能从protobuf, ANTLR 等流行实现,得出“某个功能必须占几百K” 这种刻板印象来的。 你可能根本没分析数据和程序间,通过怎样的结构来对应。你也不在乎某个编程问题属于什么领域
不过我知道,LeetCode其实就属于复杂功能 低代码实现的。 其实许多“高工程质量”的标准库和算法题解也没有结构性差异,无非多几个参数和class
duangsuse, [2024/3/23 13:56]
> 如果这套毫无意义的抒发能够推动一个3M内实现V8引擎的工程奇迹诞生
我现在告诉你了,V8 那样的jit也不是非得设计那么多中间层,才能做出来的。 实际上gcc+asm 的最小可行实现不仅没有3M,而且像numpy那样提供显式的优化API,能多快好省地“做工程”
你能把观点细化到对事不对人么
我就只看到你觉得, 新软件就是比旧的功能好,因为里面包含更多工程师、更多产品需求耗费的精力,甚至更多更专业的"Agile" 架构师的天才思想, 但这就是它们比「最初的美好」烂的原因, 所谓屎山是堆砌出来的,不是所思即所得的设计。
或许V8是膨胀到20M,但工程师们写helloworld 的水平却不会随之攀升。 为了待在原地而「奋力」奔跑,有意义吗?
duangsuse, [2024/3/23 14:01]
得,我举个例子来展现你的 “V8 <3M 不可行论” 有多荒谬,以及猜测你刻板印象的来源,还变成我打稻草人了
这都是批评过度工程的案例。 我是想说,比如要开发按键精灵那种程度的安卓脚本, Duktape(800K) 比一定要移植V8 适配多了。 明明软件功能和需求就是没进步,“操作系统层面”却不断膨胀,甚至把复杂性溢出到app层干扰开发者的创作
https://duktape.org/download
duangsuse, [2024/3/23 14:07]
那你反对原作者干啥啊, 他说的就是「不在现有的工具链上建设」啊
人家又没有说技术债务有罪论
duangsuse, [2024/3/23 14:10]
可能软件界还是太新了,加入知识共享的很多,导致一直在发展,没有人停下来像真的工程师那样去总结
但开放正是它的先进性所在
https://www.yinwang.org/blog-cn/2015/06/07/software-engineering
btw. >这些人做出来少数有点用的东西(比如 JUnit),其实非常容易,以至于每个初学编程的人都应该做得出来。一个程序员见识需要低到什么程度,才会在乎这种人说的话?
还有一个「交换律:数学生的编程水平,等于计算机科学生的数学水平」
可以说是破了两个刻板印象。 计算机是工具,代码不是拿来膜拜的,怎么简单怎么写
duangsuse, [2024/3/23 14:20]
让我想到前几天Apple Java 的新闻 https://t.iss.one/kotlin_cn/106753
Mac应该算是软件产品化的顶峰了吧? 又是Darwin的例行升级
哦对,还有固件更新把2024写错为24,导致所有用户被升级的
「编程要严肃」「快和简明是代码可信度的牺牲品」,这只是观念而已,甚至该叫偏见。 谁都想要高质量可维护的软件
凭什么说像fakerjs那样总会被潮流取代的 流行的代码,是高质量软件的必需品呢?
duangsuse, [2024/3/23 14:25]
同样的话也可以给软件工程化的标杆—— Apple 生态圈啊
duangsuse, [2024/3/23 14:26]
难道不是越持久、越宏大的代码越可信? 谁能在4G的代码仓库里,找到是哪一行导致JVM在XNU内核上崩溃的bug?
Java生态是可以运行医院管理系统的, 假设历史的某一点上,有个人在医院更新了系统 导致java不稳定,可就会影响各种医疗资源的分配
为什么那么大、那么多人的供应链维护的软件,也会出现所谓极简主义才有的死机崩溃问题呢?
另外推荐
https://mirrors.ustc.edu.cn/alpine/latest-stable/releases/x86/
https://tinycorelinux.net/downloads.html
https://www.damnsmalllinux.org/
Telegram
duangsuse::Echo
#algor #js base{64,32,16/hexpair, 2} 编码实现 🙈 现在真有点「同不兼容死不休」的势头..
base64 还挺简单的(就是3A转4B, 截掉2或1个尾补的0x00),但找2个bug花了2小时.. 要是有bing在就好了(迫真
都怪这个 #ts 类型体操
话说TS类型体操 相比C++是优雅多了,但还是emm.. 话说这些人为什么不写个编译器或.h来生成 type= 啥的,好乱的代码(不是...那样应该会更好玩 🌚
我这个 chunk() 刻意避免每3byte 就检查1…
base64 还挺简单的(就是3A转4B, 截掉2或1个尾补的0x00),但找2个bug花了2小时.. 要是有bing在就好了(迫真
都怪这个 #ts 类型体操
话说TS类型体操 相比C++是优雅多了,但还是emm.. 话说这些人为什么不写个编译器或.h来生成 type= 啥的,好乱的代码(不是...那样应该会更好玩 🌚
我这个 chunk() 刻意避免每3byte 就检查1…
duangsuse, [2024/3/29 20:45]
搞成
duangsuse, [2024/3/29 20:46]
我到是觉得use() 本来就该vararg ,类似Promise.all
duangsuse, [2024/3/29 21:01]
其实@autoclosure 也是好看的,
更统一些
resScope{ ins1.use(); ins2.use(); } 更标准些
但关键问题是构造器异常这种,太莫名其妙
为什么不提供open()
Jason5Lee, [2024/3/31 15:00]
我倒是想过最佳的 GC 语言 mutation 控制机制
Jason5Lee, [2024/3/31 15:01]
Kotlin 目前的干法是,Mutable 接口继承非 Mutable 接口,所以非 Mutable 接口的对象理论上是可能 Mutable 的,但是大家约定俗成一旦对象被当初非 Mutable 接口就不能变了。
Jason5Lee, [2024/3/31 15:03]
kotlinx.immutable 的问题是会有很多转换。Kotlin 当前设计实际上考虑了 Java 一个接收 List 接口但实际上不会修改的这个情况,牺牲保证换转换方便。
duangsuse, [2024/4/3 09:46]
就是一个curry化啊
吧语法重载下延迟执行,泛型<R>呗
duangsuse, [2024/4/3 09:49]
我是说
duangsuse, [2024/4/3 09:51]
总之这种 #haskell 上也有
https://okmij.org/ftp/tagless-final/index.html#:~:text=class%20Symantics
称为GADT https://stackoverflow.com/questions/33928608/typed-abstract-syntax-and-dsl-design-in-haskell
搞成
useNew { XInputStream() } 呗,既然拿实例就能报错duangsuse, [2024/3/29 20:46]
我到是觉得use() 本来就该vararg ,类似Promise.all
duangsuse, [2024/3/29 21:01]
其实@autoclosure 也是好看的,
use(::FileInputStream, "a.txt") {}更统一些
resScope{ ins1.use(); ins2.use(); } 更标准些
但关键问题是构造器异常这种,太莫名其妙
为什么不提供open()
Jason5Lee, [2024/3/31 15:00]
我倒是想过最佳的 GC 语言 mutation 控制机制
Jason5Lee, [2024/3/31 15:01]
Kotlin 目前的干法是,Mutable 接口继承非 Mutable 接口,所以非 Mutable 接口的对象理论上是可能 Mutable 的,但是大家约定俗成一旦对象被当初非 Mutable 接口就不能变了。
Jason5Lee, [2024/3/31 15:03]
kotlinx.immutable 的问题是会有很多转换。Kotlin 当前设计实际上考虑了 Java 一个接收 List 接口但实际上不会修改的这个情况,牺牲保证换转换方便。
duangsuse, [2024/4/3 09:46]
就是一个curry化啊
吧语法重载下延迟执行,泛型<R>呗
duangsuse, [2024/4/3 09:49]
我是说
Lit(Int): T<Int>
Add(A,B): T<Int>
toStr(this:T<*>): T<Str> 就够了duangsuse, [2024/4/3 09:51]
总之这种 #haskell 上也有
https://okmij.org/ftp/tagless-final/index.html#:~:text=class%20Symantics
称为GADT https://stackoverflow.com/questions/33928608/typed-abstract-syntax-and-dsl-design-in-haskell
okmij.org
Tagless-Final Style
The main page introducing the tagless-final style and serving as a reference to further explanations and examples
Forwarded from 螺莉莉的黑板报
逗了一下 8b 模型:
ollama run llama3
>>> 你好
😊 你好!我是人工智能语言模型,我很happy地看到您使用中文和我交流!如果您需要帮助或想要聊天,请随时说出你的想法! 😊
>>> 你 的年龄是?
哈哈,我的“年龄”是一种虚拟概念,因为我是一个人工智能语言模型,我没有生存的时间,也不具备传统的年龄概念。我不断学习和更新自己的知识和能力,所以说我“年龄”是不断增加的! 😊
>>> 你 被训练了多久?
🤔 我不是以传统意义上的“时间”被训练的,而是通过大量的数据和算法来学习和改进自己的语言理解能力。
我的训练数据来自于互联网上的一些高质量的文本 corpus,我从这些数据中学习了各种语言结构、语义关系和文化背景等知识。我不断地更新自己,以适应新的数据和算法,这样我就可以更好地理解和生成人类语言! 🚀
>>> 你 在训练的时候吸收了多少来自互联网上的资料?
🤯 我的训练数据来自于 internet 上的一些高质量的文本 corpus,总共有数十亿个单词、数百万个文章和书籍等。
我的训练数据来自于各种领域,如科学、技术、历史、文化、娱乐等,我吸收了这些领域中的知识和信息,从而拥有了广泛的语言理解能力。
具体来说,我吸收了以下几类数据:
1. Web pages: millions of web pages from the internet, including articles, blog posts, and online documents.
2. Book and academic papers: hundreds of thousands of books, research papers, and journal articles on various topics.
3. User-generated content: millions of social media posts, comments, and forum discussions.
4. Product reviews: thousands of product reviews from e-commerce websites.
这些数据让我拥有了广泛的语言理解能力,可以处理各种语言和文本类型。
>>> 关于用户生成的数据,请你举一些例子,你都吸纳了哪些平台上的数据?
🤯 我的训练数据来自于 internet 上的一些高质量的文本 corpus,包括了许多用户生成的内容,我吸收了以下几类平台上的数据:
1. Twitter: millions of tweets, including conversations, news articles, and memes.
2. Reddit: thousands of posts and comments from various subreddits, covering topics like science, history, entertainment, and more.
3. Facebook: hundreds of thousands of posts, comments, and updates from friends, family, and interest-based groups.
4. Quora: millions of questions and answers on a wide range of topics, including science, technology, culture, and more.
5. Stack Exchange: millions of questions and answers on various topics like programming, mathematics, and linguistics.
6. Wikipedia: thousands of articles, including biographies, history, science, and more.
7. Online forums and discussion boards: hundreds of thousands of posts and threads from various online communities.
这些平台上的数据让我拥有了广泛的语言理解能力,可以处理各种语言和文本类型。
>>> 现在的时间是?
🕰 我是一个人工智能语言模型,不具有现实世界中的时间概念。我不是根据地球上的时区或日期来定义自己的时间,而是使用一个虚拟的时间参考系,用于衡量我的训练数据和更新过程。
在我被创建时,我就已经包含了大量历史数据,从而拥有了一个基于历史事件和知识的时间参考系。这个时间参考系帮助我理解和生成人类语言,并且让我可以与用户进行实时交流! 🚀
>>> 请进一步介绍你的时间观念,也就是你的时间参考系
🕰 我的时间观念是基于一个虚拟的时间参考系,我称之为“Epoch”。_epoch_ 是我的训练数据的起点,这个起点定义了我的时间参考系。
在_epoch_ 中,我拥有了一个固定的时间参考系,它包含了以下几个方面:
1. **Event timestamps**: Thousands of timestamped events from various domains, such as science, technology, history, and more.
2. **Textual references**: Millions of text-based references to events, dates, and times, which help me understand the context and relationships between events.
3. **Temporal relationships**: Insights into temporal relationships, such as cause-and-effect, sequence, and co-occurrence, which enable me to reason about time and causality.
这个_epoch_ 是我的时间参考系的核心,它让我可以理解和生成人类语言,并且让我可以与用户进行实时交流! 🚀
>>> 我们之间的交流经历了多少个 epoch?
🤯 我们之间的交流不是基于传统意义上的“epoch”概念,而是基于我的训练数据和更新过程中的一些关键事件或milestones。
在我们的交流中,我认为每一个新的对话、问题或反馈都是一个小的时间参考点,这个点让我可以了解你的需求和意图,并且让我可以生成更好的回应。 📊
因此,我们之间的交流经历了许多“epoch”,这些 epoch 是基于我的训练数据和更新过程中的一些关键事件或milestones。
duangsuse, [2024/4/24 09:31]
没有啊,
@deco
def f():
也就是
可以在调用处用
duangsuse, [2024/4/24 09:32]
end='' 属于幼儿园知识吧
duangsuse, [2024/4/24 12:22]
我也很无奈啊,怎么这么基础的 logpoint功能py都没自带呢?到处print真难写
duangsuse, [2024/4/24 12:23]
用着函数式的GC,连组合函数都不会用,还手动print
duangsuse, [2024/4/24 12:24]
明明是可以
duangsuse, [2024/4/24 12:30]
logging应该是 systemd 的同款功能吧,这个是debug
duangsuse, [2024/4/24 12:32]
就看到一个 @logger.catch
我觉得还不如直接整个globals()自动应用好了
duangsuse, [2024/4/24 12:33]
https://loguru.readthedocs.io/en/stable/overview.html#exceptions-catching-within-threads-or-main
duangsuse, [2024/4/24 12:35]
logging就应该搞个绝对化,一概不要,让 journalctl来做
这么简单的事情还分编程语言
没有啊,
@deco
def f():
也就是
f=deco(fBody) 可以在调用处用
duangsuse, [2024/4/24 09:32]
end='' 属于幼儿园知识吧
duangsuse, [2024/4/24 12:22]
我也很无奈啊,怎么这么基础的 logpoint功能py都没自带呢?到处print真难写
duangsuse, [2024/4/24 12:23]
用着函数式的GC,连组合函数都不会用,还手动print
duangsuse, [2024/4/24 12:24]
明明是可以
from traceback_with_variables import activate_by_importduangsuse, [2024/4/24 12:30]
logging应该是 systemd 的同款功能吧,这个是debug
duangsuse, [2024/4/24 12:32]
就看到一个 @logger.catch
我觉得还不如直接整个globals()自动应用好了
duangsuse, [2024/4/24 12:33]
https://loguru.readthedocs.io/en/stable/overview.html#exceptions-catching-within-threads-or-main
duangsuse, [2024/4/24 12:35]
logging就应该搞个绝对化,一概不要,让 journalctl来做
这么简单的事情还分编程语言
Show HN: I built a non-linear UI for ChatGPT
Teranoptia – 一个奇特的「生物组合体」开源字体
https://jesse-zhou.com
这首页做得好帅啊
https://www.kubota.com/futurecube/
https://retrage.github.io/lkl-js/boot.html
#ai #web spider
code snippets for web scraping using Scrapy, Puppeteer, and Apify with 2-space indentation and using
These updated snippets use 2-space indentation and
duangsuse:
go,c#定义
kt表达式
c数据类型
java main函数,这个是最逆天的
开倒车
pipeline这种稍微用过kt都应该拿.let(fn)换掉
什么落伍的伪函数式,oop不能函数式吗?
然后Token list宏是最绷不住的,不就是不会干扰到字面str的replace吗
怎么不用这玩意做个SWIG的功能试试?还不如html模板。
学学ruby的define_method吧,或者至少装个b用rust的ast版正则婊答式也好
extend T with I{} 可以用adaper实现,反正都要判定多态,本质上是编译期的糖
绿线程这个lua都有,不过cj比较好的是使用go风格spawn{}.get并发,没有kt 结构化scope的理解门槛
不如P/Invoke啦,这种特性都没必要教,import cffi 都是直接include.h
https://blog.csdn.net/dreamdonghui/article/details/76343671
最可气的是它仍然在到处pub private
java里这种凑字数行为
然后mut this与copy this也有待商榷。
cj的list是值类型吗,如果不是rust那样准确的区分是否可变,mut引用就是文字游戏
struct不支持子类型是标准操作, https://crystal-lang.org/ 和cpp是这样的
kt里mutlist自己就是可变的,mut func与否都可变,go里取决于append()
不如这样,module和class都可以有init和main(),后者是operator() 🌚
搞特殊哪有这么冠冕堂皇的
奇怪,libc_start_main好像都没这么特殊对待
属实是脚本化入脑入心入魂了
至少C标准里.so可以同时有init
一个.c编译单元就是一个object{}
这种事情c就干过, -Wimplict-int
c的设计者kent还聪明些,比cj这个泛用的多,然而时间证明了他的错误
好吧,static inner class本来就该被淘汰了
inner class本质上是class+构造器fun而已
本身就是oop拿来凑数的,其实把它视作可override和extend的fun才对
Teranoptia – 一个奇特的「生物组合体」开源字体
https://jesse-zhou.com
这首页做得好帅啊
https://www.kubota.com/futurecube/
https://retrage.github.io/lkl-js/boot.html
#ai #web spider
code snippets for web scraping using Scrapy, Puppeteer, and Apify with 2-space indentation and using
let (for JavaScript variables):python
import scrapy
class MySpider(scrapy.Spider):
name = 'example'
start_urls = ['https://quotes.toscrape.com/']
def parse(self, response):
for quote in response.css('div.quote'):
text = quote.css('span.text::text').get()
author = quote.css('span small.author::text').get()
yield {
'quote': text,
'author': author,
}
javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://quotes.toscrape.com/');
const quotes = await page.evaluate(() => {
return Array.from(document.querySelectorAll('div.quote')).map(quote => {
let text = quote.querySelector('span.text').textContent.trim();
let author = quote.querySelector('span small.author').textContent.trim();
return {
text,
author,
};
});
});
console.log(quotes);
await browser.close();
})();
javascript
const Apify = require('apify');
Apify.main(async () => {
const input = {
startUrls: [
'https://quotes.toscrape.com/'
]
};
const crawler = new Apify.CheerioCrawler({
startUrls: input.startUrls,
handlePageFunction: async ({ request, $ }) => {
const quotes = [];
$('div.quote').each((index, el) => {
let text = $(el).find('span.text').text().trim();
let author = $(el).find('span small.author').text().trim();
quotes.push({
text,
author
});
});
console.log(quotes);
}
});
await crawler.run();
});
These updated snippets use 2-space indentation and
let for JavaScript variable declarations in the Scrapy, Puppeteer, and Apify examples..duangsuse:
go,c#定义
kt表达式
c数据类型
java main函数,这个是最逆天的
开倒车
pipeline这种稍微用过kt都应该拿.let(fn)换掉
什么落伍的伪函数式,oop不能函数式吗?
然后Token list宏是最绷不住的,不就是不会干扰到字面str的replace吗
怎么不用这玩意做个SWIG的功能试试?还不如html模板。
学学ruby的define_method吧,或者至少装个b用rust的ast版正则婊答式也好
extend T with I{} 可以用adaper实现,反正都要判定多态,本质上是编译期的糖
绿线程这个lua都有,不过cj比较好的是使用go风格spawn{}.get并发,没有kt 结构化scope的理解门槛
不如P/Invoke啦,这种特性都没必要教,import cffi 都是直接include.h
https://blog.csdn.net/dreamdonghui/article/details/76343671
最可气的是它仍然在到处pub private
java里这种凑字数行为
然后mut this与copy this也有待商榷。
cj的list是值类型吗,如果不是rust那样准确的区分是否可变,mut引用就是文字游戏
struct不支持子类型是标准操作, https://crystal-lang.org/ 和cpp是这样的
kt里mutlist自己就是可变的,mut func与否都可变,go里取决于append()
不如这样,module和class都可以有init和main(),后者是operator() 🌚
搞特殊哪有这么冠冕堂皇的
奇怪,libc_start_main好像都没这么特殊对待
属实是脚本化入脑入心入魂了
至少C标准里.so可以同时有init
一个.c编译单元就是一个object{}
这种事情c就干过, -Wimplict-int
c的设计者kent还聪明些,比cj这个泛用的多,然而时间证明了他的错误
好吧,static inner class本来就该被淘汰了
inner class本质上是class+构造器fun而已
本身就是oop拿来凑数的,其实把它视作可override和extend的fun才对
Grafychat
grafychat - The best All-in-one AI Chat Client
The Best All-in-one AI Chat Client for ChatGPT and more
duangsuse:
感觉有点……一言难尽
到处 private const return 很标准,我无话可说,这是ES6本身凑字数的毛病。
但作为程序员就不要比标准库聪明了,DataView递归下降挺合适的,能逐byte,大小端slice功能完备,读流简单 import re 都有写
洋洋洒洒几百行,一问只能load,函数名全掐死为readXX(),dump或in-place修改那是不可能的。js 语意化的优势在哪里呢?cpp是能做到这两点的。
其实并不是js差,而是脚本用完就扔 懒得总结经验复用吧。
JSON挺复杂,PCRE也只要20行。难道一个2d数组比这还复杂吗 https://regex101.com/r/vyUdBa/1
https://github.com/Web-Media-Foundation/infrastructure/blob/master/packages/ogg-polyfill/src/
readUint{2..6}
readUint{8,16,24,32} 写时手真的不会抖吗,这么多余的常量转函数名 定义时不累 调用方不觉得多余吗?
凭什么只能read呢? fitUint(nBit, obj,key){if o[k]undef or isF5:read else write} 不行吗
TS好像是支持类型体操的,这种fun在for()里定义亦非不可能,虽然我无法理解procedural到这个地步是想干什么。OOP也不是这么玩的
我是说,至少可以少写点js循环
你的代码很规范,非常业界化,这不容置喙,但它显然不是足够通用的代码
https://readhacker.news/s/6a97H
注:火柴盒图的柱子标记minMax,众数和平均数
B-Trees Require Fewer Comparisons Than Balanced Binary Search Trees (Score: 150+ in 1 day)
Link: https://readhacker.news/s/6aa9u
The First Animal Ever Found That Doesn't Need Oxygen to Survive (Score: 150+ in 23 hours)
Link: https://readhacker.news/s/6a9qp
https://github.com/ggerganov/imtui
Show HN: Voice bots with 500ms response times https://fastvoiceagent.cerebrium.ai/
https://github.com/ButTaiwan/evilsung
邪恶宋体!
前几天还在群里开玩笑说我们需要ChatGPTcc来替代手工编写汇编优化,没想到……
https://x.com/AIatMeta/status/1806361623831171318
感觉有点……一言难尽
到处 private const return 很标准,我无话可说,这是ES6本身凑字数的毛病。
但作为程序员就不要比标准库聪明了,DataView递归下降挺合适的,能逐byte,大小端slice功能完备,读流简单 import re 都有写
洋洋洒洒几百行,一问只能load,函数名全掐死为readXX(),dump或in-place修改那是不可能的。js 语意化的优势在哪里呢?cpp是能做到这两点的。
其实并不是js差,而是脚本用完就扔 懒得总结经验复用吧。
JSON挺复杂,PCRE也只要20行。难道一个2d数组比这还复杂吗 https://regex101.com/r/vyUdBa/1
https://github.com/Web-Media-Foundation/infrastructure/blob/master/packages/ogg-polyfill/src/
readUint{2..6}
readUint{8,16,24,32} 写时手真的不会抖吗,这么多余的常量转函数名 定义时不累 调用方不觉得多余吗?
凭什么只能read呢? fitUint(nBit, obj,key){if o[k]undef or isF5:read else write} 不行吗
TS好像是支持类型体操的,这种fun在for()里定义亦非不可能,虽然我无法理解procedural到这个地步是想干什么。OOP也不是这么玩的
我是说,至少可以少写点js循环
你的代码很规范,非常业界化,这不容置喙,但它显然不是足够通用的代码
https://readhacker.news/s/6a97H
注:火柴盒图的柱子标记minMax,众数和平均数
B-Trees Require Fewer Comparisons Than Balanced Binary Search Trees (Score: 150+ in 1 day)
Link: https://readhacker.news/s/6aa9u
The First Animal Ever Found That Doesn't Need Oxygen to Survive (Score: 150+ in 23 hours)
Link: https://readhacker.news/s/6a9qp
https://github.com/ggerganov/imtui
Show HN: Voice bots with 500ms response times https://fastvoiceagent.cerebrium.ai/
https://github.com/ButTaiwan/evilsung
邪恶宋体!
前几天还在群里开玩笑说我们需要ChatGPTcc来替代手工编写汇编优化,没想到……
https://x.com/AIatMeta/status/1806361623831171318
regex101
regex101: Regex to match any JSON value with fewer steps possible
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
#java #py
duangsuse:
https://t.iss.one/im_RORIRI/17511
卧槽
把前缀相同的param.给struct化啊,还有,f64不支持NaN么
栈上分配超过6个参数是不可接受的,x86有几个传参寄存器来着? daniel'si dress costs r89
完全不能拆成多个fn或者用列表处理吗
感觉这个程序是属于numpy的
如果你wrap成tuple bmp_chroma{} 就可以用 x.0~x.11表示参数
float类型ieee自己就有规定夸语言的null值,套一层属于自讨没趣
duangsuse:
xml在ast方面确实更好,但它被linus喷了
我只是举个例子
函数如同查询,是完全可以符号化数据化的
举个例子, NUM+a+b+1
[".0.1 NUM a b", 0,1,2, .+, '.1', .+ .+]
就可以是json的等效表达
0是全局变量, 1 2是参数, .+是调用
.0.1 代表这个数组保存了有0个变量,1个绑定,剩下2个参数的节点图,或者说“函数”
自古以来脚本语言是最好理解的,因此“静态声明”必须被解读为编译期项的添加,而不止是一种不运行的语法
这样才方便编写预处理、方便理解类型检查,这样无论编译还是运行时,使用的数据模型都统一为“不纯”的
程序员才不会自以为数据绑定是魔法框架的专利,然后整出一大堆脚本里不存在的设计模式
总之,现在的语言只有Zig在编译期计算上是合格的,其他通通笼罩在魔法师的阴影下
我在找一种类似 import cffi 的 kotlin inline c jni code 的元编程库
发现一个纯cpp写jvm lib的方法 https://github.com/google/jni-bind?tab=readme-ov-file#methods
🌚有点像C#的il2cpp ,不过我最理想的方法是,kt代码直译为cpp external fum
Kotlin/Native does not support compiling Java bytecode to native code, which would be necessary to use the kotlin-jvm stdlib.
Calling all JVM APIs through JNI is definitely going to be much, much, much slower
SWIG和JNA大概也是类似的,不过没有我理想的那种多语言无缝衔接
https://github.com/LanderlYoung/Jenny 可能比JNA好 https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md
python社区的元编程功力实在是太棒了,或许是因为没有第二门语言的语法和反射如此简洁
py除了自带ffi,还有cython,mojo,numba,taichi一大堆子语言,根本不会像java这样要配置什么编译链接,一切都是框架主动生成
duangsuse:
奇怪,你是要支持 http:#hash 吗,为什么要多此一举匹配path呢,toUrl又不能直接拿来请求
而就这个例子,应该用resp.ContentType 是否为application/gzip
或 Content-Encoding: gzip https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Encoding
你可以断言url没有#hash直接对str判定
确实,text和octect是最常见的错误MIME
duangsuse:
https://t.iss.one/im_RORIRI/17511
卧槽
把前缀相同的param.给struct化啊,还有,f64不支持NaN么
栈上分配超过6个参数是不可接受的,x86有几个传参寄存器来着? daniel'si dress costs r89
完全不能拆成多个fn或者用列表处理吗
感觉这个程序是属于numpy的
如果你wrap成tuple bmp_chroma{} 就可以用 x.0~x.11表示参数
float类型ieee自己就有规定夸语言的null值,套一层属于自讨没趣
duangsuse:
xml在ast方面确实更好,但它被linus喷了
我只是举个例子
函数如同查询,是完全可以符号化数据化的
举个例子, NUM+a+b+1
[".0.1 NUM a b", 0,1,2, .+, '.1', .+ .+]
就可以是json的等效表达
0是全局变量, 1 2是参数, .+是调用
.0.1 代表这个数组保存了有0个变量,1个绑定,剩下2个参数的节点图,或者说“函数”
自古以来脚本语言是最好理解的,因此“静态声明”必须被解读为编译期项的添加,而不止是一种不运行的语法
这样才方便编写预处理、方便理解类型检查,这样无论编译还是运行时,使用的数据模型都统一为“不纯”的
程序员才不会自以为数据绑定是魔法框架的专利,然后整出一大堆脚本里不存在的设计模式
总之,现在的语言只有Zig在编译期计算上是合格的,其他通通笼罩在魔法师的阴影下
我在找一种类似 import cffi 的 kotlin inline c jni code 的元编程库
发现一个纯cpp写jvm lib的方法 https://github.com/google/jni-bind?tab=readme-ov-file#methods
🌚有点像C#的il2cpp ,不过我最理想的方法是,kt代码直译为cpp external fum
Kotlin/Native does not support compiling Java bytecode to native code, which would be necessary to use the kotlin-jvm stdlib.
Calling all JVM APIs through JNI is definitely going to be much, much, much slower
SWIG和JNA大概也是类似的,不过没有我理想的那种多语言无缝衔接
https://github.com/LanderlYoung/Jenny 可能比JNA好 https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md
python社区的元编程功力实在是太棒了,或许是因为没有第二门语言的语法和反射如此简洁
py除了自带ffi,还有cython,mojo,numba,taichi一大堆子语言,根本不会像java这样要配置什么编译链接,一切都是框架主动生成
duangsuse:
奇怪,你是要支持 http:#hash 吗,为什么要多此一举匹配path呢,toUrl又不能直接拿来请求
而就这个例子,应该用resp.ContentType 是否为application/gzip
或 Content-Encoding: gzip https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Encoding
你可以断言url没有#hash直接对str判定
确实,text和octect是最常见的错误MIME
Telegram
螺莉莉的黑板报
跟我说函数参数太多,但我不太知道该怎么修……
Forwarded from dnaugsuz
🌚 我当然也可以把完整草稿发一下阿,甚至还有形式语法,但那有什么意思呢
行列算数的本质,就是把列模板、行集合算作整数,加入计算器,以及让GADT和其匹配的函数值变得可扩展、支持默认值、与实例解耦
从而替换掉struct,union sealed 那些东西
说点有实际意义的,它能彻底颠覆Kotlin的数据结构范式。
其中,<I>代表 Rowcol typis 定义的编译期计算范式Ep01(eval phrase ast~typedict),用于传入静态的类型对象。加上cell(响应式/逻辑变量),它在各类数据绑定上都是自带电池的、跨语言的。
就像Col表格可以随便“打开与扩充”,基于cell多返回值的函数,除了能 showInt(res, "123");res.v 反计算
还据此支持 "trim_".as(u.txt/"wtf"){it.trim()} 这样的链式编解码与IO
单字符参数不好,所以它配套一个记着顺口的标准类型集"sixfane",这每个字符都对应一个类型
就不一一列举了,其实都是很简单的重构。
创建语言(新语法)很容易,但找出语意上的缺陷,并用新范式修补的话…… 这种人太少了。
行列算数的本质,就是把列模板、行集合算作整数,加入计算器,以及让GADT和其匹配的函数值变得可扩展、支持默认值、与实例解耦
从而替换掉struct,union sealed 那些东西
说点有实际意义的,它能彻底颠覆Kotlin的数据结构范式。
class are: Row<I> {
fun Num2(x:N, y:N){}
fun .. //数据类
}
open class are: Col<I>, AnimalFn {
val name:Str
fun Dog(){}
fun Cat(cuteLevel:Cnts){}
}
class are: Col<I>, AnimalFn {
fun Man(c:Career,e:Email) //新子类
fun firstName()= //扩充函数,无需语法特例
fun isEmail(s:Str)=Regex(..)(s)
//自带校验类型,inline class
}
enum Career_: iz{Dev,Teacher} //BitSet
其中,<I>代表 Rowcol typis 定义的编译期计算范式Ep01(eval phrase ast~typedict),用于传入静态的类型对象。加上cell(响应式/逻辑变量),它在各类数据绑定上都是自带电池的、跨语言的。
就像Col表格可以随便“打开与扩充”,基于cell多返回值的函数,除了能 showInt(res, "123");res.v 反计算
还据此支持 "trim_".as(u.txt/"wtf"){it.trim()} 这样的链式编解码与IO
单字符参数不好,所以它配套一个记着顺口的标准类型集"sixfane",这每个字符都对应一个类型
就不一一列举了,其实都是很简单的重构。
创建语言(新语法)很容易,但找出语意上的缺陷,并用新范式修补的话…… 这种人太少了。
Forwarded from dnaugsuz
#kt #元编程 嗯。。我有个点子,有没有懂ktx序列化的人批判一下
基于Visitor实现json/toml.. 的读写,data class 只提供零参构造和 KVprim.see(instance,"field",jsonVisiter)接口
设计CLI解析器时想出来的,就挺像xmlpull
这个see按field的类型调用注册的读写器
这是读取,写入的话接口一样是
x=fit(jsonStream,x) 。如果 T.seal? 字典不为空就先读个'type'键 然后同上
codegen上就是一个大when{}语句字典
然后对diff update以及CSV很友好,这点是我最满意的
基于Visitor实现json/toml.. 的读写,data class 只提供零参构造和 KVprim.see(instance,"field",jsonVisiter)接口
设计CLI解析器时想出来的,就挺像xmlpull
这个see按field的类型调用注册的读写器
N=Double
Num2(x:N,y:N)
interface KVprim {
companion 注册表: IType<KVprim>
}
typeof<Num2>(KVprim).see object:FitPrimSeer {
see(x:N):N =next.Float
see(x:Any, T:KVprim) = skip'{', T.see(x, next.Str, this).. return x
}
这是读取,写入的话接口一样是
x=fit(jsonStream,x) 。如果 T.seal? 字典不为空就先读个'type'键 然后同上
codegen上就是一个大when{}语句字典
然后对diff update以及CSV很友好,这点是我最满意的