duangsuse::Echo
714 subscribers
4.24K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
算了呗,凭他们对 Python 元编程动态性的那一点理解,俺继续做俺的项目,不是第一次了

就是很好奇不是立刻封的,那是为什么封的呢……
Forwarded from dnaugsuz
一群不干好事只晓得语言鄙视链的人,以为自己多聪明,聪明反被聪明误

以为自己能弄出那些别人早已组织好公开的 pattern 就多了不起,其实不过是一群 copycat ,真正搞懂了什么呢
Forwarded from wjm
鄙视链总感觉是在浪费时间。。我个人认为语言没那么重要,能完成想要的工作就行了
Forwarded from dnaugsuz
当然啊,他们的管理员特别不好相处,肯定是有些激进的管理员把我封了,之前就有过争议,懒得再说了
Forwarded from dnaugsuz
那我觉得应该去捕蛇裙🤔
因为我还算日常写py的
Forwarded from wjm
说真的感觉这个更友善。。
duangsuse::Echo
哇原来我之前在 #Haskell 里看到的就是这种…… 这个大佬很厉害 https://teek.readthedocs.io/en/latest/_modules/teek/_tcl_calls.html#init_threads def _pairs(sequence): assert len(sequence) % 2 == 0, "cannot divide %r into pairs" % (sequence,) return zip(sequence[0::2], sequence[1::2])…
from itertools import islice
def zipWithNext(xs): return zip(xs, islice(xs, 1, None))

list(zipWithNext([1,2,3]))
==[(1, 2), (2, 3)]

#Python
关于 fibonacci 数列, #Haskell 里容易定义:
fibs = 1:1:(zipWith (+) fibs (drop 1 fibs))
这是基于 Haskell 的可复现(无副作用/纯)序列+惰性求值实现的,而 Python 里若用等价的 fibs = chain([1,1], map(operator.add, zip(fibs, islice(1,None)))) 不能成功——表达式组织出generator对象的关键在于 map(add, zip(xs, xs[1:])) 里 zip 的流视口,它肯定要引用靠 zip() 本身生成的数字。

再看 Haskell 的定义等式,其生成式缓存是全局的(当然实现法有很多种但),可以理解为 fibs, (drop 1 fibs) 持 length -2、-1 的索引(此时就没有“预支”流导致循环引用的问题)
fibs = [1,1]
def _fibs_gen(i,n):
fibz = islice(fibs,i,None)
fibz1 = islice(fibz,1,None)
fibs[i:i+n] = map(operator.add, zip(fibz,fibz1))
def gen(buf, op, n_chunk=5):
i0 = 0
while True:
op(i0, n_chunk)
i0 += n_chunk
yield* buf[i:i+n
]

如果想写在一行内也可以,但需要 iself() 提供一个隐式上下文的流位置(才能引用自身 不然只能从流头开始),既然这样也就不得不使用 gen() 生成带视口的流了。
举个用例,当然索引的可变 boxed ref 弄 it=[i] 就行,关键在于让惰性流(其参数 lambda 的参数1)知道自己在对应 iself() 的什么位置就行。
fibs = iself(lambda fibs: chain([1,1], map(add, zip(fibs, drop(1,fibs)) )) )

Haskell GHC 可能没有这样简单,或许它是对 (drop 1 fibs) 进行了仅 1层 的惰性求值?这样性能很差,但写起来更有意思
(不对…… 理解错了, (drop1 fibs) 实际上不需要对「未求值的项」进行计算,它从一开始的 (1:1:) 就已经落后于序列尾2项了)
(所以说有些看起来了不得的东西原来只是太晦涩、不直接了吗……到底还是要缓存)

一般来说
fib 1 = 1
fib 2 = 1 -- (f 3) = (f 2)+(f 1)
fib n = (fib n-1)+(fib n-2)
#Haskell #code

这是递推法,理论上无缓存性能很渣(当然真的函数式里 memo,cps 属于基础),而上面实现的 py 版则是动态规划(迫真)
Forwarded from dnaugsuz
duangsuse-valid-projects/TkGUI: Declarative tkinter wrapper for Python, features quick prototype & codegen
https://github.com/duangsuse-valid-projects/TkGUI

我写的这个 GUI 封装,你们怎么看🤔
我觉得如果能支持 GTK 和 Qt 后端就更好了
Forwarded from dnaugsuz
这个玩意支持用稍作修改的语法进行调用/取值,然后就可以生成等价的代码,能够用于实现0开销抽象,可以缓存代码的🤔

有没有人感兴趣如何在不影响性能的前提下进行元编程,编写能生成冗余代码的代码。
Forwarded from dnaugsuz
感觉这个想法没错,想到流处理总觉得和 SQL, C# LINQ 怎么有点关系……

Java 里可以自己查 doc 吧(反正我不喜欢它一大堆class 的 OOP 风格),应该会有毕竟 select 的需求常见
Kotlin 里你若不想 .map { it.a to it.b } 那好像也有能 collect (partion, groupBy 类) 的做法,不过一般还是用 mapTo 和 forEach 这种带 destination collection 的操作吧
Forwarded from dnaugsuz
遇到这种情况是变过程式还是保持函数式这个都各有做法啦,但这个实际上是至列表的归纳操作,分成两个流算反向组合,目的不完全一样
Forwarded from dnaugsuz
不合常理啊,collection 的 size 本身就是组成其结构的部分嘛,比如 C/C++ 字符串都是 buffer ,C 选择 NUL terminate (因为是序列)所以 strlen(s) 是线性复杂度, C++ string vector queue array 都是带长度和 end() 指针的呢

就我个人的写法 for (int i=0; i<n; i++) 其 n 未必是单变量,而这种循环结构也可以(从 i<n 变 i!=n ,甚至转过来 i!=0 什么,后来我还是选择最短的)
像循环肉眼可见不变量是否提升,如果不常规我会做,一般也就是那样写。

我也觉得优化什么的可以别太放在心上(而且现阶段优化也的确不好且不可测)
Forwarded from dnaugsuz
挺好的,分词开处理下格式问题,然后合算字符串相似度?
再细点大概就是 nlp 看谐音吧……
#Haha #meme #dev #cplusplus [x,] 后删,吗,可 empty/single 情况都需要特殊处理啊,一般都是判[0] 与余下部分循环前置,的
Forwarded from dnaugsuz
CSS连接数据库的方法什么时候可以公开?

22:54 LV88码帝绯末
我在优化,事务回滚还有点问题
我测过,性能秒杀php-pdo

不过对浏览器要求比较高,IE兼 容也是个问题

.body db-mysql['localhost',3306,{
content: db-[select id from height: db-[select height from
}

语法是这样的
属性支持数据库返回的值进行渲染
height语法有点问题,我忘记加limit了

现在就是事务回滚有点问题,因为是页面直接渲染,我还在想办法

把访问压力都交给客户端,服务器性能负载大幅降低,为运维降本增效

这样的好处还有就是,数据库连接是纯开放代码的,毕竟是浏览器渲染,互相爬内容更加方便,创造一个互利互惠的共享互联网生态

以后可能spider都因为我这个技术灭绝了