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
这种图应该怎么做啊…… (我好像又说了一遍
#DontKnow #推测性 #web 关于两个常见交互/功能设计!二维码登录和「划屏手势同时使用 pager 和 paged banner」

一般而言,网站使用 cookie (本意是临时的标识符)获取用户的登录身份。不同设备有不同网络地址,最好不要复用 cookie ,服务端一般要写专门的逻辑支持「手机扫码登录」。

但是,所需最小的信息交换和直接共享登录 cookie(token) 的方法是一致的。网页端显示的二维码蕴含已登录客户端和自己都明白的一个「读写位置」,它能写的数据可能是固定的,比如由已登录客户端请求服务端写入新 cookie ;但本质仍是通过「二客户端都知晓的读写位置」来实现,只是掩盖了直接读写的操作且支持了事件

为了监听到登录事件,往往选择暴露 WebSocket 接口

== 很多时候 DOM 树上接受某事件的元素不止一个。 举个(不同平台的)例子, Android 上一些 ViewPager 里可能有横向滚动条,为什么只有滑动到滚动条末端 pager 才会翻页?

从嵌套序来看是 pager 包含了(其子项) ScrollView ,但对于用户的输入 event ,传播责任链是深者优先——直接目标 Scroll 会处理这个交互。

如果滚动条已到最左而仍收到 swipe 手势,它就不能截获(intercept)此事件仅由自己处理,故此其父项 pager 就有机会往左翻一页;反之,如果它明白事件的涵义是滚动自身,则可以消耗它而不影响父视图。
duangsuse::Echo
这种图应该怎么做啊…… (我好像又说了一遍
第一遍是写函数图渲染的时候,我说可以支持 script 公式项和 T 变量,这些字符都单独 measure+sum width & fillText 然后给 x,y 加随机量(呃好像不要 T 变量了,但公式含随机量的动画性要检测)

现在我考虑下有两种方案:
1. 每行去 canvas 堆叠 width 获取 x,y,text 表,交给一个 op 每帧预处理
2. 切分成许多 span ,生成抖动 CSS 动画 keyframes 。纯静态不知道位置可以用 transform ,JS 生成可以直接设置 left, top

等着我的好消息🤔 https://t.me/dsuse/16701
我的天呐,这人怕不是对 JIT 即时编译一词有什么误解…… #tencent
Forwarded from 羽毛的小白板
现在的营销号发的都什么垃圾
#sysadmin #Linux Arch 草 10G 内存是
Forwarded from Phonograph (Ralph 萌新喵)
噢, Reactive 就是 c=a+b 自动更新 c 呀,我之前想了几次呢。 一般不用 onresize 之类的事件很麻烦呢 #Web #DontKnow #JS #lib
而且还能做到数据变动视图自动更新,耳不仅是单向的视图更改数据,有点意思。 #functional #ce
然后对于控件的 computed() 用了特殊语法 $: a+b (label statement) 表示,应该说也是很实践性

“ 在「古典」React 里,你不得不写 shouldComponentUpdate, 在现代 React, 你同样需要引入 useCallback 和 useMemo,手动地缓存函数,来避免性能问题。

同样是使用 Virtual DOM 的 Vue 却没有这个问题,因为 Vue 的机制(依赖收集)决定了它不必重新执行整个 UI 函数来换取新的 Virutal DOM 树,当某个状态更新的时候,它明确地知道应该 diff 哪些节点。

这么看 React 真是傻逼,不过是提供了无作用域的 state ,竟然要重渲染整体 UI?难道不能收集出有哪些变量节点用了被更新变量么,这不是基础操作?
看看就好的频道
Message
#recommend 从裸 DOM 到 JQ 到现在的 Vue, React, Angular 框架, TypeScript ,经历了很多变化甚至思维模式转变,但都是为了能处理大型视图项目。

当然,动苏所习惯的 el("tag", withClass(""), []) DSL式语法就照应了树本身的结构,可以弄运行一次代码生成和进一步糖化。

俺并没有特别做什么设计就选择了这种写法🌝 对我而言,怎么拼合程序与数据、解决模板代码都惯的来。

通过编译期处理实现 c=a+b 的自动关系式更新可以选择 defineProperty setter ,但其实预处理才是最高性能不拖泥带水的做法,这种代码我之前写过三回
https://github.com/duangsuse-valid-projects/Share/blob/master/HTMLs/qndxx.ts#L13
https://github.com/duangsuse-valid-projects/Share/blob/master/HTMLs/xy/xy.ts#L74
https://github.com/duangsuse-valid-projects/Share/blob/master/HTMLs/dim2/dim2.ts#L45
#php #zhihu 辣鸡原罪语言,比 Lua 低到不知哪里去了
#service 可惜现在觉得 CGI 有性能开销,变成应用服务器时代了, ASP JSP 的时代过去了
#statement #functional #js #GUI #dom
再说 Reactive... 等等这不是 Rx 类框架的招牌吗٩(๑`н´๑)۶ 看来 -ive 的词性都容易后宫起火啊草。
React 用 functional MEMO 提升控件更新性能根本就是弱智措施, memo 即备忘录,用 hash 表实现函数输入输出对应的缓存,这样对类似 Text 的控件,同输入多次调用不产生额外计算和内存开销,应用在树 render() 上时相当于自动实现 shouldComponentUpdate() ,尽量复用旧的渲染结果,对树遍历减少重建操作量,相当于仅重建了真正变更的控件。

经典版暴露 shouldUpdate 已经很没水平了,说好的面向 state 编程呢?在我看来这个 Reactive 所做的就是「把所有控件的所有变量暴露到一个 state 里方便读写操作」,那么凭什么程序员要操心什么 update 啊 memo 啊,记得很像 还有 SMUV(state,message,update-event,view)模型,实际上根本不能便利地 handle 多少东西,就是个秀儿。

当然,其实真正的 relational 编程也是这样,关系式 state/var/eq/both/either 靠 enumerate&filter 可以解出 x+1=2 这样的线性方程,甚至能得出 a+b=9 的所有可能性,只是需要 interleave([a,b]) 两个变量先后递增构造 state 迭代,然后 unify 一下同步恒等关系(双向版变量引用)而已

可是这和 DOM 有多大关系?比如我有个
class Main: DUI() { fun view() = el("il", withNone, Counter(0)) }
class Counter(var n): DUI() {
  fun view() = elDiv(withNone, elText(ref(this.n)))
  fun inc() { n+=1 }
}

其实渲染 Main 的时候连给子控件注入其路径都不需要!也不需要专门分析 DOM diff 的哪个 tag 哪个 attr 还是 text ,直接拿住自己的 HTMLElement 的引用就够完成全部 update 了,所以说搞那么复杂?

要是想兼容 haml 或者 E4X 内联 XML ,直接做个中部翻译成 el 调用就行,反正 DOM 元素动态创建最好是 createElement ,逃不开运行时开销。

想实现控件属性事件到 update 代码的方法很简单,因为 js ref(a.prop) 并不会传入 a 相关的信息,编译期把 op(ref(a.prop)) 变成 refAddRel(a,"prop",v=>op(v)) 就可以了,这种方法换成处理全部代码,引用处 a.prop=x 自动更新就变成上面那个 框架S 的实现方法,接口上是兼容的,只不过 refAddRel(o,k,op) 从 defineProperty 变成编译期打监听表。

变形方法很简单,walk 到 FCall 节点记作基点,如果是 op(ref(o.prop)) 就把基点变成 refAddRel 的调用,如果是 ref(v) 这种不知道 receiver 的情况就请换 Array [v] 报错,反正框架函数可以随便加没必要特别支持 a=ref() 这些语法,兼容的少,反而更优雅。
看看就好的频道
Message
另外这个博文作者的示例 https://github.com/djyde/plastic-editor

虽然有 reactive ,居然 responsive 都没做,就是笔记应用支持 star grouping&Date,上传照片和 JSON 导出…… 移动端尺寸设计很难吗

有意思的是这个人有开源 DFS longestRoute https://github.com/djyde/findRoad/blob/master/src/index.ts#L98 的代码,应该是很久以前的了 (他还有个 dom like .data tree-util 和 TS 测试的 pushIf ,只有一行代码,应该是算法弃了)
#science #China 所以说啊,国际话语权……