Forwarded from Foolish TraceWind (Asm 张三bot)
This media is not supported in your browser
VIEW IN TELEGRAM
dnaugsuz
你们真没有做过绘制的人嘛 噢对,这里是 Python 群…… 基本都是后端或者框架使用者 能不能问一下绘制算法是 ys.forEach((y,x) => g.lineTo(x, h-h* y/yBounds )) 的情况下 x 轴(y=0) 的绘制点 y 如何定义 y 轴的又如何定义…… 就连化 x 轴(y=y_func(vy+yzero) 其中 vy是y offset yzero 是y=0时z ,的方法都是我试出来的 而且中途还修了一个低级数据语义bug 哭死了
项目 死了。
不知道,我自己也不清楚 [x] 集是怎么定义的,现在想想也不知道该怎么定义,不管怎么定义
最少需要知道如何绘制 x 轴 legend ,不然 y 轴都没法画,网格更没法画(只能画平行于x轴的线 不知有何意义),根本不知道点和绘制视口的对应关系。 一开始就是瞎猜的 更难就不会了
但目前看来, draw 操作 和 deltaX 都一点用都没有,根本是瞎试出来的,白白浪费时间
我会最后增加一个 DOM 的 expr list ,仿佛绘制功能已经完善无需修改,至此停止更新。
目前在看 Better than Desmos 这个计算器的绘制方法(它是 fixed ,那个的绘制和 navigable 根本是两回事) 以及 Window.kt ,争取拿 #Kotlin 实现一个吧
不知道,我自己也不清楚 [x] 集是怎么定义的,现在想想也不知道该怎么定义,不管怎么定义
Math.sin, i=>i>10? -i:i 等函数都画不出来最少需要知道如何绘制 x 轴 legend ,不然 y 轴都没法画,网格更没法画(只能画平行于x轴的线 不知有何意义),根本不知道点和绘制视口的对应关系。 一开始就是瞎猜的 更难就不会了
但目前看来, draw 操作 和 deltaX 都一点用都没有,根本是瞎试出来的,白白浪费时间
我会最后增加一个 DOM 的 expr list ,仿佛绘制功能已经完善无需修改,至此停止更新。
目前在看 Better than Desmos 这个计算器的绘制方法(它是 fixed ,那个的绘制和 navigable 根本是两回事) 以及 Window.kt ,争取拿 #Kotlin 实现一个吧
GitHub
njchensl/Desmos
Desmos clone (graphing calculator). Contribute to njchensl/Desmos development by creating an account on GitHub.
https://stackoverflow.com/questions/48124372/pointermove-event-not-working-with-touch-why-not
#web #dev 触屏支持
吃一堑长一智,这个下次就有经验了……😅 #recommended #html
#web #dev 触屏支持
吃一堑长一智,这个下次就有经验了……😅 #recommended #html
Stack Overflow
`pointermove` event not working with touch. Why not?
I have this pen:
https://codepen.io/anon/pen/eyKeqK
If you try it on a touch-screen device (f.e. visit the pen on your phone) you'll notice that when you drag, the white light (the little sphere)...
https://codepen.io/anon/pen/eyKeqK
If you try it on a touch-screen device (f.e. visit the pen on your phone) you'll notice that when you drag, the white light (the little sphere)...
#HTML #JS #DontKnow 你知道吗? 🤔
HTMLElement 的
如果不用 JQ ,可选注册
element 和 node 的区别在于,前者只能是 <a> <b> <div> 这样的元素,后者可以是
HTML 里基于 XML 的部分有三种情况:
有许多方法可以缩写 HTML ,最常见的是基于 CSS 选择器的 emmet.io 和基于缩进的 模板语言 #Ruby slim-lang.com ,而
想在社交平台分享自己的网站, OpenGraph 了解下?
-
-
- JS 最不常用的两个关键字:
如果用
HTMLElement 的
remove() 和 replaceWith(e1) 都不需要手动拿 e.parentElement ,只有 insertBefore(e1, e) 需要在 parent 上如果不用 JQ ,可选注册
document "DOMContentLoaded" 或 window "load" 事件element 和 node 的区别在于,前者只能是 <a> <b> <div> 这样的元素,后者可以是
#text 文本标签。HTML 里基于 XML 的部分有三种情况:
<meta charset="UTF-8"> 的单独标签、 <div></div> 的配对标签(with childNodes)、 <link rel="stylesheet"/> 的折叠(collapsed)标签,有些配对标签也有折叠形式,但折叠和 no children 是不同情况。有许多方法可以缩写 HTML ,最常见的是基于 CSS 选择器的 emmet.io 和基于缩进的 模板语言 #Ruby slim-lang.com ,而
DOMParser 本身也支持兼容解析修正一些不完整的文档。想在社交平台分享自己的网站, OpenGraph 了解下?
-
!!"" 和 !!0 、 !![] 都是 true ,第一点往往造成隐患 必须详细检查-
undefined == null ,所以有时用 === 区别严格相等性- JS 最不常用的两个关键字:
delete o[k]; 和 v=with(o,o1) { attr }
许多时候:如果用
e.onclick = 的简写,在任何地方的(其他)脚本重复注册时会导致覆盖,所以尽可能用 addEventListener
JS 里较短参数的函数兼容较长处的类型限制(允许无视参数),但在调用时省略默认参数可能造成性能问题,在绘图/大批/频繁处理时,需要多用图形界面的 profilerogp.me
Open Graph protocol
The Open Graph protocol enables any web page to become a rich object in a social graph.
duangsuse::Echo
https://github.com/sxyu/nivalis 草,这是标准实现... 支持看 intersection 和 max/min value ,但没有 desmos 的 click&follow y-value 功能
Mivik 大佬来晚一步,不过他解决的也不是我连坐标系都没搞一致这个事情 😰
实际上你可以借鉴一下这篇论文里面提到的高精度绘图方式:https://www.dgp.toronto.edu/public_user/mooncake/papers/SIGGRAPH2001_Tupper.pdf
(隐式绘图)大体思路是用一种算法追踪变量的取值和合法性(这就要后端符号系统支持 去推导了)然后判断一个屏幕区间里面是否包含有函数图像,如果没有就直接return,否则均分为几块向下递归,直到递归到像素单位为止
相信对懂编译原理的 OI 生是没问题,我估计还要考虑考虑怎么模式匹配做恒等变形,以及一大堆前导内容……
实际上你可以借鉴一下这篇论文里面提到的高精度绘图方式:https://www.dgp.toronto.edu/public_user/mooncake/papers/SIGGRAPH2001_Tupper.pdf
(隐式绘图)大体思路是用一种算法追踪变量的取值和合法性(这就要后端符号系统支持 去推导了)然后判断一个屏幕区间里面是否包含有函数图像,如果没有就直接return,否则均分为几块向下递归,直到递归到像素单位为止
相信对懂编译原理的 OI 生是没问题,我估计还要考虑考虑怎么模式匹配做恒等变形,以及一大堆前导内容……
duangsuse::Echo
Mivik 大佬来晚一步,不过他解决的也不是我连坐标系都没搞一致这个事情 😰 实际上你可以借鉴一下这篇论文里面提到的高精度绘图方式:https://www.dgp.toronto.edu/public_user/mooncake/papers/SIGGRAPH2001_Tupper.pdf (隐式绘图)大体思路是用一种算法追踪变量的取值和合法性(这就要后端符号系统支持 去推导了)然后判断一个屏幕区间里面是否包含有函数图像,如果没有就直接return,否则均分为几块向下递归,直到递归到像素单位为止 相信对懂编译原理的…
瞄了一眼,感觉除了等式化简变换外这个绘制的水也深…… 和1x:1y 式子完全不一样,原来函数图也可以这么牛逼的吗
#js #DontKnow 原型链:(感谢 @JackWorks 提供相关信息)
访问语法都是动态解析的,比如
- 普通对象 [规范]
-
- 类数组对象(数组的特殊行为就在这里)
- 模块对象(
-
此外,
原来是往 proto 上找属性!
这就解释了
因为在这个算法里你可以看到,Receiver 是跟着递归一路传递下去的
原来是
本地如果有就不会查 prototype 了
明白了,和之前写的 LuaOOP 很像,都是层叠属性查找
“ 大佬能交换下原型链相关知识吗
之前看加 Mixin 好像是说把 prototype 除了哪两个属性的什么全部复制一下
#Python 和 #Ruby 的情况我都了解, Py 是 mro() 链查询,
https://paste.ubuntu.com/p/tJv7QpSjGt/ liuil-util 的 #TypeScript mixin.ts 重写
访问语法都是动态解析的,比如
x.prop 或 x["prop"]就是
x.[[Get]]("prop", x)
ES 里一共有五种不同的 [[Get]] 实现,分别是- 普通对象 [规范]
-
Argument 对象(你们今天应该不会用到了)- 类数组对象(数组的特殊行为就在这里)
- 模块对象(
import * as Mod 里的 Mod)-
Proxy 对象(reflect proxy 全 delegate)此外,
Object.getOwnPropertyDescriptor(o, k) 可以获取可配置 enumerable, writeable 等属性的配置对象Object.[get/set]PrototypeOf(o)和
o.__proto__ 是它的「超类虚表」[[Get]] 过程的 Receiver (第二参数)很重要,如果没有这个 Receiver,基于原型链的 OOP 其实是做不起来的原来是往 proto 上找属性!
这就解释了
Array.prototype.map 之类的东西parent = { method() { return this; } }
child = {}; child.__proto__ = parent;
child.a = 1; child.method(); // 返回自身
最简单的解释是, Receiver 就是属性访问的时候最上层的那个对象,会被当成 this 用。因为在这个算法里你可以看到,Receiver 是跟着递归一路传递下去的
原来是
o["RESOLVE"](o.prototype, "attr", receiver=o) !(当然,肯定是先查本地,然后才查 prototype本地如果有就不会查 prototype 了
明白了,和之前写的 LuaOOP 很像,都是层叠属性查找
“ 大佬能交换下原型链相关知识吗
之前看加 Mixin 好像是说把 prototype 除了哪两个属性的什么全部复制一下
#Python 和 #Ruby 的情况我都了解, Py 是 mro() 链查询,
A.wtf 和 a.wtf 都是往 class A 找成员,后者实质是 type(a).wtf(a) 所以得到 bound method ,而直接 A.wtf 就是 bind 操作@staticmethod 直接不收 self ,不需要 bound 所以可以在类和实例上用https://paste.ubuntu.com/p/tJv7QpSjGt/ liuil-util 的 #TypeScript mixin.ts 重写
Telegram
duangsuse::Echo
#Lua #oop #PL 🤔刚才体验写标准Android之前又把 LuaOOP 默写了一遍,构造器调用子类优先了,重写后果然感觉优化了不少(也提升了效率编程自信心)
#TypeScript #lib #doc https://util.liuli.moe/@liuli-util/async/ 有一大堆
https://util.liuli.moe/@liuli-util/array/ 包含 swap, groupBy, segment(即 chunked), diffBy, uniqueBy 等处理函数 ,还有 arrayToMap(即 associate)
https://util.liuli.moe/@liuli-util/string/#StringValidator.isEmail 非常实际的一个值验证
https://util.liuli.moe/@liuli-util/dom/ 包含一些下载 ArrayBuffer 之类的处理,不过没有复制到剪贴板的
https://util.liuli.moe/@liuli-util/other/#EventEmitter EventTarget 一类对象实现
https://util.liuli.moe/@liuli-util/test/#countTime 这个就是
此外还有 tree 库,支持 treeEach 后序遍历树结构,treeToList (即 flatten , 还有 treeFilter 的变体)
concatMap, debounce, wait 等操作的 async 组合库https://util.liuli.moe/@liuli-util/array/ 包含 swap, groupBy, segment(即 chunked), diffBy, uniqueBy 等处理函数 ,还有 arrayToMap(即 associate)
https://util.liuli.moe/@liuli-util/string/#StringValidator.isEmail 非常实际的一个值验证
https://util.liuli.moe/@liuli-util/dom/ 包含一些下载 ArrayBuffer 之类的处理,不过没有复制到剪贴板的
https://util.liuli.moe/@liuli-util/other/#EventEmitter EventTarget 一类对象实现
https://util.liuli.moe/@liuli-util/test/#countTime 这个就是
measureTime { } ,要是能写成 Python timeit 的形式就好了此外还有 tree 库,支持 treeEach 后序遍历树结构,treeToList (即 flatten , 还有 treeFilter 的变体)
duangsuse::Echo
#js #DontKnow 原型链:(感谢 @JackWorks 提供相关信息) 访问语法都是动态解析的,比如 x.prop 或 x["prop"] 就是 x.[[Get]]("prop", x) ES 里一共有五种不同的 [[Get]] 实现,分别是 - 普通对象 [规范] - Argument 对象(你们今天应该不会用到了) - 类数组对象(数组的特殊行为就在这里) - 模块对象(import * as Mod 里的 Mod) - Proxy 对象(reflect proxy 全 delegate)…
让我想起了,那些手写 new/apply/call 的题目 #js #plt #oop
很多人说的 oop 是 Class-oriented programming
而 JavaScript 的原型链才是正宗的 Object-oriented programming(
平时说的原型链指的是 obj.
因为
x.prototype: 造实例的原型, new 出来的东西
很多人说的 oop 是 Class-oriented programming
而 JavaScript 的原型链才是正宗的 Object-oriented programming(
function X(){}
X.prototype.a=1;
new X().prototype === undefined; // 但 __proto__ 就是 X
Object.getPrototypeOf(X) === Function.prototype
prototype 只是个(被特殊处理的)普通属性平时说的原型链指的是 obj.
[[Prototype]]
a.f() 相当于f = a.f; f.[[Call]](a, [])“ 为什么要用 ecmascript 规范里的(原语)写
因为
a.f.call 是从 a.f 往上查了原型链查到 Function.prototype.call 之后,它 也有可能被覆盖掉Reflect.apply(a.f, a, [])也能覆盖:
globalThis.Reflect = new Proxy(Reflect
” 我就很奇怪为什么我在 constructor 里 this.prototype === undefined
x: 工厂函数x.prototype: 造实例的原型, new 出来的东西
__proto__
Object.create, Object.assign
Object.defineProperty#web #dev #recommended #GitHub 仓库 VSCode 、 YouTube 视频下载工具 https://github.com/justjavac/1s (不是原作者, #moha 玩梗)
直接在二级域名 github 后面 +1s 即可 https://github1s.com/
直接在二级域名 github 后面 +1s 即可 https://github1s.com/
GitHub
GitHub - justjavac/1s: 天若有情天亦老,我为网站加一秒
天若有情天亦老,我为网站加一秒. Contribute to justjavac/1s development by creating an account on GitHub.
#recommended #linux #backend #cplusplus #Python https://t.me/c/1492060815/96087, https://t.me/c/1492060815/95986 Q:这个群是干嘛的?
A:《捕蛇者说》是一档播客节目,可前往官网(pythonhunter.org)或各大播客平台(苹果、小宇宙、Spotify 等)收听。本群是捕蛇者说播客的听众群,讨论技术和非技术的各种话题。
Twitter: @pythonhunter__
发电支持我们:https://afdian.net/@pythonhunter
A:《捕蛇者说》是一档播客节目,可前往官网(pythonhunter.org)或各大播客平台(苹果、小宇宙、Spotify 等)收听。本群是捕蛇者说播客的听众群,讨论技术和非技术的各种话题。
Twitter: @pythonhunter__
发电支持我们:https://afdian.net/@pythonhunter
#dev #statement duangsuse 下现在所理解的编程,又是什么呢
从 API、基本语言结构构造出最简数据模型,再从数据模型生成更多所需的数据。
有时候就是一个变量、一个对象属性,你看到的是一次赋值 a=b ,其实背后是 y=x 这样的恒等关系,符号又何必得是单变量
从 API、基本语言结构构造出最简数据模型,再从数据模型生成更多所需的数据。
有时候就是一个变量、一个对象属性,你看到的是一次赋值 a=b ,其实背后是 y=x 这样的恒等关系,符号又何必得是单变量