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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
我也完全没用过…… Qt 里都是 foreach 宏,我还以为C++ 不支持 foreach 就一直 iterator 😓
#blog #dalao #lgbt https://roriri.one/page/3/
心理学,web,统计学
不知道为什么女装大佬的程序猿都很厉害~ 这个人性格非常好,喜欢这种文风。
https://roriri.one/2014/11/04/javascript-address-bar-magic/ #Web #JS #code
总结:如何实现跨页播放器,且带地址栏变化?(由播放器主导页面加载)

可用 HTML5 history API
访问 link 时代理它的行为:
$("body").delegate("a", "click", (ev) => {
$.get(ev.target.href)//用 regexp igm 提取其 title 和 #main 内容
//存储旧main,设置新main html
history.pushState(oldMain, title, url)
}
window.onpopstate = (ev) => {$("#main").html(ev.state);}

火狐的某些版本会在加载时触发 onpopstate 导致后退栈不够,所以最好在 onload 之后再 replaceState 一次(emmm 这样不会缩减栈长吗)

如果你想动态设置 div main, 把GET到新文档的整个 body 存作 state 即可

顺便这个可以平滑滚动:
$("html,body").animate({scrollTop: 0}, 300, 'swing');

用 CSS ::before/after 伪元素 画 <hr> 分割线
duangsuse::Echo
#blog #dalao #lgbt https://roriri.one/page/3/ 心理学,web,统计学 不知道为什么女装大佬的程序猿都很厉害~ 这个人性格非常好,喜欢这种文风。
大佬还讲了 MutationObserver 、自定义 HTML 控件、 Material Ripple button 的问题,非常有意思,可以看看 #Web #ui
#Rust 好怀念 1.0 附近的特性,那时候在看入门教程,现在更新好快
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
原来还有 caniuse.rs 可以看不同版本的特性支持
#Low #Web #Freedom 自由灯塔的覆灭
https://t.me/coolapkzz/81?single
这个制杖搞不清 RISC 和 CISC “高效之道”,以及芯片制程、总面积的区别…… 2*1 和 1*2 的区别。
#Android #sysadmin #JS #Haha 一眼看成MAT支持JS脚本的中文编程……
提问: 如何实现 拼多多员工[1] 这样的显示方式? #dbrel #listproc

编号和命名都是与用户分类 1:1 相关的 grouping ,上下文分三层, 帖子:分类:用户
帖子:分类 计 Int
分类:用户 计 String u.tag.let {"$it[${g2[it]}]"}

#Python
class Group:
def __init__(): self.d={}
def __getitem__(self,k): return self.d[k]
def add(self, k, v):
vs = self.d.get(k)
if vs == None: vs = self.empty(); self.d[k]=vs
self.append(vs, v)
empty = lambda o: []
def append(self, vs, v): vs.append(v)

分组计数器
class CountGroup(Group):
empty = lambda o: 0
append = lambda o, a, b: a+b


第二层 用户分类:用户引用
class Namer:
def __init__(self): self.cg=CountGroup(); self.names={}
def tag(self,u): return u[0]
def name(self, u):
self.cg.add(u, 1)
nam=self.names
if u not in nam: nam[u] = f"{self.tag(u)}[{self.cg[u]}]"
return nam[u]

实践:
def at_apost(us):
c = Namer()
return [c.name(u[0]) for u in us]
def datUsers(s, d={"拼":"拼多多","啊":"阿里巴巴","京":"京东"}):
us = [(d[u[0]]+"员工",u[1]) for u in s.split(" ")]
return us

at_apost(datUsers("拼a 拼b 拼a 拼a 阿a 京a 京b"))
拼多多员工.py
944 B
#Python #code 本以为能一遍过呢,没想到 2个小错,1处逻辑 tag对应关系错误…… https://pastebin.ubuntu.com/p/zcpyZjwhmj/
duangsuse::Echo
拼多多员工.py
修改版的 class Group 实现也略长啊(毕竟要兼容 mutate 引用的和算新值的 已足够
(其实我觉得其 add 操作可以带返回值的……
(此例不是唯一实现法,用 N(tag)个 dict 也是可实现但属于理解错误,上面关系模型很明确了
不过,无论多么复杂的程序,其背后的核心思想往往很简单

只有抓住了从 数据的表现形式、关系、对应算法 的多角度理解,才能使程序简练优雅,且有复用性。

在设计程序的时候所思考的是抽象的集合、映射表、必要更新,以及示例数据,如果只能循着直觉边想边写,就应该锻炼对程序和数据的把控能力了 #dev #statement
duangsuse:
干到一点就是傻逼管理,因为休息不好时人工作效率低下而且容易写bug

nasyx:
人与人是不同的x

(顺便池是ceo

duangsuse:
代码与代码也是不同的y
有的代码,写了一行可以让整个项目少十行
有的代码写一行会让维护时间增一倍
怎么写是每个人自己的选择
怎么生活却不是
社会需要对每个人负责
https://paste.ubuntu.com/p/FrGSNhphs4/ #plt 我也感觉奇怪,绝句设计时为了实践方便弄了个类似 by Delegate 的「类实例」语法,并且有了直接等价当前 receiver type 的类型变量「我类型」

感觉类实例还是要学习一个,最开始只打算做隐式转换的没想到还有这茬……(其成员还要做成 extension fun 加入隐式转型才能直接调用, #Scala 一样)
若有 class C 和其 super P,面向对象 c+p is C 而 p+c is P ,没有理论优雅性,当然这个不重要能用就行
如果真的存在,我想肯定是取最精确的重载版本。
This media is not supported in your browser
VIEW IN TELEGRAM
这篇文章讲了新 MacOS 禁用用户防火墙拦截应用启动监察数据包的隐私问题 #apple #security