Forwarded from Rachel 碎碎念 (IFTTT)
Twitter
🐈⬛劭玄淵 (Agatha)🐈⬛遠離世間一切紛爭,1+1=5
wwwww
duangsuse::Echo
#ce #plt 带步骤的四则计算器。递归逆波兰。22行代码 浅先=`;=;+ -;* / %` 流=(a, _s=[...a].values())=>()=>_s.next().value 切2D=(s,sp0,sp1)=>s.split(sp0).map(s=>s.split(sp1) ) {let t={},k; 切2D(浅先,';',' ').forEach((x,i)=>{for(k of x)t[k]=i}); 符深大=t} 符链=(s,l)=>{let a=[],add=x=>a.push(x)…
#bilibili >那你现场写代码😄
回复 @iiicp :以上是()和算数表达式的求值栈生成,加起来10行。 活动期分析后就可以临时变量到寄存器,或者干脆每个+-用既有栈变量。
当然,C会比JS多费不少代码
但我是认真觉得40分钟太长。如果真的细节到此程度,你可以加提纲,先说说要写啥、涉及啥流程和修改,再放PPT
你能火是我想不到的,第一期视频我就认为会石沉大海。因为我也会写些涉及文本结构和计算机绘制的东西,在B站这些很少,因此更要注意可重看性。
如果你打算更100天,回头发现这些录屏复习起来很困难,应该就会意识到简洁和代码大纲的必要性了[藏狐]
? @iiicp :Up哥,就是parser这块,看的不是特别懂,可能是,编译原理,语法树,这块,没怎么弄懂。
1 是常量, a 是变量
a+1 是表达式, (a+1)+1 含括号也是:单项a亦可为(中缀链)
if(a) a+=1; 是语句
表达式都有「值」,语句都能「执行」
表达式也是语句。而在C里,(a=(b=c)) 有效,py里f(x:=1) 有效
它们可以互相引用,像 if(表达式)语句; {语句;},构成嵌套树结构。
最深项先执行,把树变为值称「解释」,
保留中间数据,即区间推断/地址安排称「编译」
编译的目标是可执行,比如函数,再由「虚拟机」的调用语法填参执行至ret/throw,函数内和脚本顶层是一样的;Java大定义和{},= 内则不同
(为什么要说这么笼统的东西啊喂!😫
常量来自tokenizer分词器,如 "str" 1.0 ,特殊名字如 true 是具名常量;C宏就替换为词条列表
变量可以是 能import的全局表键k、第j号局部、外i层函的第j局部:参数是调用时检查的n或vararg个局部量
(a)=>()=>a 称为词法作用域,a就引用上1层第0号局部-同时是参数。
闭包=匿名类型的值,根据上值(upval)组 "this" 的不同行为不同,它是数据和程序的交汇,Java new-匿名子类。有种Church丘奇编码法: true=\y n. (y) ;false=\y n. (n) ,因为函数是值,能到处传,可以这样。
(值)任何计算的参数,和结果
(弱类型)变量是编译期尚不确定的值,因此+-等需针对2Number有定义..
(强类型)变量值有范围确定。子类型里必是成员集更大的 :T 子类(多态/覆写);可试每位置<TP>归一,类型推导
(副作用) 计算值不能描述的效果。只有数学没副作用,程序只有内存和CPU,限定mut的范围
只有值都到齐才能计算(常量折叠)。其实编译和运行期只是语言执行的实现方式导致的区分,语言本身不限定静态或动态
其实OOP或FP只是数据结构语法导致的区分,算式本身只是参数凑齐,计算更新,单函数不限制功能个数
https://t.me/dsuse/17412
我们都很可怜😔 无论闭包或this都不是廉价的东西,至少不是热销的
#ai 和 #game 魔改就很热销, #algorithm 如前缀树也很热销
Lua和JS,Py里无论有无「独占」名字,函数都是闭包。C等 里函数只是代码指针,也没有局部函数。
一般的Ruby,Java/C#/C++ 则对OOP和FP的等效概念做了较大区分
PHP和Unix族之类我不清楚,它们像操作系统改行来的🌑
回复 @iiicp :以上是()和算数表达式的求值栈生成,加起来10行。 活动期分析后就可以临时变量到寄存器,或者干脆每个+-用既有栈变量。
当然,C会比JS多费不少代码
但我是认真觉得40分钟太长。如果真的细节到此程度,你可以加提纲,先说说要写啥、涉及啥流程和修改,再放PPT
你能火是我想不到的,第一期视频我就认为会石沉大海。因为我也会写些涉及文本结构和计算机绘制的东西,在B站这些很少,因此更要注意可重看性。
如果你打算更100天,回头发现这些录屏复习起来很困难,应该就会意识到简洁和代码大纲的必要性了[藏狐]
? @iiicp :Up哥,就是parser这块,看的不是特别懂,可能是,编译原理,语法树,这块,没怎么弄懂。
1 是常量, a 是变量
a+1 是表达式, (a+1)+1 含括号也是:单项a亦可为(中缀链)
if(a) a+=1; 是语句
表达式都有「值」,语句都能「执行」
表达式也是语句。而在C里,(a=(b=c)) 有效,py里f(x:=1) 有效
它们可以互相引用,像 if(表达式)语句; {语句;},构成嵌套树结构。
最深项先执行,把树变为值称「解释」,
保留中间数据,即区间推断/地址安排称「编译」
编译的目标是可执行,比如函数,再由「虚拟机」的调用语法填参执行至ret/throw,函数内和脚本顶层是一样的;Java大定义和{},= 内则不同
(为什么要说这么笼统的东西啊喂!😫
常量来自tokenizer分词器,如 "str" 1.0 ,特殊名字如 true 是具名常量;C宏就替换为词条列表
变量可以是 能import的全局表键k、第j号局部、外i层函的第j局部:参数是调用时检查的n或vararg个局部量
(a)=>()=>a 称为词法作用域,a就引用上1层第0号局部-同时是参数。
闭包=匿名类型的值,根据上值(upval)组 "this" 的不同行为不同,它是数据和程序的交汇,Java new-匿名子类。有种Church丘奇编码法: true=\y n. (y) ;false=\y n. (n) ,因为函数是值,能到处传,可以这样。
(值)任何计算的参数,和结果
(弱类型)变量是编译期尚不确定的值,因此+-等需针对2Number有定义..
(强类型)变量值有范围确定。子类型里必是成员集更大的 :T 子类(多态/覆写);可试每位置<TP>归一,类型推导
(副作用) 计算值不能描述的效果。只有数学没副作用,程序只有内存和CPU,限定mut的范围
只有值都到齐才能计算(常量折叠)。其实编译和运行期只是语言执行的实现方式导致的区分,语言本身不限定静态或动态
其实OOP或FP只是数据结构语法导致的区分,算式本身只是参数凑齐,计算更新,单函数不限制功能个数
https://t.me/dsuse/17412
我们都很可怜😔 无论闭包或this都不是廉价的东西,至少不是热销的
#ai 和 #game 魔改就很热销, #algorithm 如前缀树也很热销
Lua和JS,Py里无论有无「独占」名字,函数都是闭包。C等 里函数只是代码指针,也没有局部函数。
一般的Ruby,Java/C#/C++ 则对OOP和FP的等效概念做了较大区分
PHP和Unix族之类我不清楚,它们像操作系统改行来的🌑
Telegram
duangsuse::Echo
#OOP #FP 可怜人的函数闭包是对象,可怜人用对象表示闭包,都很悲哀 :(
edit: 面向概念和面向动词各有所长,但我更喜欢FP, 语言只提供class会给复用带来很大的问题
edit: 面向概念和面向动词各有所长,但我更喜欢FP, 语言只提供class会给复用带来很大的问题
#web 过去有那么多 HTTP-API 是因为没有 WASM ,现在能客户端计算,能做的更方便了
比如 canvas 能画 video ,video.srcObject=nav.mediaDevice
之前在B站看这个face-api.js (TF.js weights 只有jsdelivr托管) 都不知道它 matchDim{w,h} 以及取vid.width是在做啥,才发现是重复取设置,resize.. ,在网上找的旧版API都不能用🌑,只能自己把画框框 找到,发现和这个一样
比如 canvas 能画 video ,video.srcObject=nav.mediaDevice
之前在B站看这个face-api.js (TF.js weights 只有jsdelivr托管) 都不知道它 matchDim{w,h} 以及取vid.width是在做啥,才发现是重复取设置,resize.. ,在网上找的旧版API都不能用🌑,只能自己把画框框 找到,发现和这个一样
#web 真的是很有力的设计, WebSQL,WebGL/2D,fetch Blob,Paint/Cache Worker,history浏览栈, ObjectURL/VFS, CSS和SVG无缝兼容、DOM模板;这都是许多其它平台"赖以知名"的工作,在浏览器里这么普通暴露了统一简洁的API,许多设计远比其它语言里的等效物高级-DOM有文本等价,也能用来填模板,和最初的PHP比就是思想层次上的差别,比现在的常见模板更规范,只是一些人觉得非得设计lexer 才叫模板语言😒想想 JavaEE 的选择为啥越来越杂 ,不就是因为都在嫌不够炫不够严谨吗?
按下F5就能看到执行效果,控制台敲下就查得到文档;直接切tab就开始搜示例,毫无IDE的芥蒂
JS是同时有C的短写语法和 FP模式匹配,适合临时草稿和正经代码,还能用元编程简写,整个web就只有这一门程序语言,没有杂七杂八的构建语言啊、资源、模板和套话啊
ES6引入的 `` 和 Proxy{} 也很有用,结合 with() 甚至能并肩Ruby元编程,但是一点也没Ruby的繁杂,很合理的引入了扩展性
除了前端界听风是雨、金钱至上的一些坏毛病,webkit技术真的太牛了
按下F5就能看到执行效果,控制台敲下就查得到文档;直接切tab就开始搜示例,毫无IDE的芥蒂
JS是同时有C的短写语法和 FP模式匹配,适合临时草稿和正经代码,还能用元编程简写,整个web就只有这一门程序语言,没有杂七杂八的构建语言啊、资源、模板和套话啊
ES6引入的 `` 和 Proxy{} 也很有用,结合 with() 甚至能并肩Ruby元编程,但是一点也没Ruby的繁杂,很合理的引入了扩展性
除了前端界听风是雨、金钱至上的一些坏毛病,webkit技术真的太牛了
duangsuse::Echo
#web 真的是很有力的设计, WebSQL,WebGL/2D,fetch Blob,Paint/Cache Worker,history浏览栈, ObjectURL/VFS, CSS和SVG无缝兼容、DOM模板;这都是许多其它平台"赖以知名"的工作,在浏览器里这么普通暴露了统一简洁的API,许多设计远比其它语言里的等效物高级-DOM有文本等价,也能用来填模板,和最初的PHP比就是思想层次上的差别,比现在的常见模板更规范,只是一些人觉得非得设计lexer 才叫模板语言😒想想 JavaEE 的选择为啥越来越杂…
#statement web所做最好的事就是所见即所得,数据更新-程序重做 相当自然,不像一些平台里要大堆代码,因此才有了 DevTools 这样优秀的查看工具
当你要在网页画画,唯一的选择就是 canvas API,没有那么多专用名词要记,基于CSS和Blob也容易后台绘制和下载,API只是最直接的,不需要任何教程,而Path2D上只有不到8个成员,不会提供什么“工具类”-CSS 语法足够了
一些人觉得代码和结果太直接会让开发者养成不会思考的坏习惯,这根本是错的,只能让思考的层次更高,从而产生更多好玩的应用。有种别用 inline color picker 之类☹️
当你要在网页画画,唯一的选择就是 canvas API,没有那么多专用名词要记,基于CSS和Blob也容易后台绘制和下载,API只是最直接的,不需要任何教程,而Path2D上只有不到8个成员,不会提供什么“工具类”-CSS 语法足够了
一些人觉得代码和结果太直接会让开发者养成不会思考的坏习惯,这根本是错的,只能让思考的层次更高,从而产生更多好玩的应用。有种别用 inline color picker 之类☹️
duangsuse::Echo
🌚层叠的标签打得比我好,溯源也到位,内容我关注的其它频道没有……它变了 反正我也没打算搞IT🤪 层叠的风格的确变认真了,来源也多了,和它一年前相比 https://t.me/outvivid/2603
https://t.me/outvivid/3320
我感觉应该收回😒 因为它这个新闻 #plc4x 打得毫无意义,也没解释 PLC..4x? 到底是干啥用的,'faker.js' 好歹半俗半释吧😒
说句题外话,我觉得 Marak 根本没分清 opensource 和代码变现的关系,开源并不是对软件的声望没帮助的,他开始选择MIT就是个错误,但现在换许可也于事无补了。 倒不如说如果 faker 选择 free trail 闭源,那许多人哪怕用小数据集sample 或者开源替代也不会用它吧
你一开始做个产品页,会有压力
数个开发非常费力的js小众ui(模拟gimp面板啦..)框架, 代码混淆器就是做得很认真,但好像收益..额不 人气也不如开源"低功能"版本的东西吧😒
一边想挣同行的钱,一边不想用更友好的开源方法(我们不是啥都买冤大头用户..),成交量就会有损失
最终问题是面向公司用户时,MIT许可证不能强求别人付钱,被白嫖,甚至有一些刁民或奸商声称是独立做的
每次看到这种把开源当私有原创的🐶独立开发者就来气,您改名您🐴呢,核心做法谁的你不懂,拿来就原创?国内是有不少! 更别说自己还是被 retool.com 付2k USD就套壳的冤大头
所以实际上是原作copyright的问题... 就主动投毒死循环来说,我觉得.. rollup供应链攻击的确该改进🌑,是js界该改进
大家应该会原谅他,毕竟被火烧家了
但,MIT是他自己选的,那时怎么会知道火了仍穷的世态炎凉呢😒
我感觉应该收回😒 因为它这个新闻 #plc4x 打得毫无意义,也没解释 PLC..4x? 到底是干啥用的,'faker.js' 好歹半俗半释吧😒
说句题外话,我觉得 Marak 根本没分清 opensource 和代码变现的关系,开源并不是对软件的声望没帮助的,他开始选择MIT就是个错误,但现在换许可也于事无补了。 倒不如说如果 faker 选择 free trail 闭源,那许多人哪怕用小数据集sample 或者开源替代也不会用它吧
你一开始做个产品页,会有压力
数个开发非常费力的js小众ui(模拟gimp面板啦..)框架, 代码混淆器就是做得很认真,但好像收益..额不 人气也不如开源"低功能"版本的东西吧😒
一边想挣同行的钱,一边不想用更友好的开源方法(我们不是啥都买冤大头用户..),成交量就会有损失
最终问题是面向公司用户时,MIT许可证不能强求别人付钱,被白嫖,甚至有一些刁民或奸商声称是独立做的
每次看到这种把开源当私有原创的🐶独立开发者就来气,您改名您🐴呢,核心做法谁的你不懂,拿来就原创?国内是有不少! 更别说自己还是被 retool.com 付2k USD就套壳的冤大头
所以实际上是原作copyright的问题... 就主动投毒死循环来说,我觉得.. rollup供应链攻击的确该改进🌑,是js界该改进
大家应该会原谅他,毕竟被火烧家了
但,MIT是他自己选的,那时怎么会知道火了仍穷的世态炎凉呢😒
Telegram
层叠 - The Cascading
Apache PLC4X 的主要开发者之一 chrisdutz 称将停止对此项目的免费社区支持。
Chris 在文章中提到 PLC4X 对很多工业企业在成本、安全性和性能上的帮助。由于 PLC4X 的工作繁重,Chris 在 2020 年决定放弃自己的工作,去全职做工业开源软件咨询服务。然而,繁重的工作、开发所需的昂贵硬件,以及开发者的大量付出得不到应有的回报,都使得 Chris 不愿继续再做下去,并计划转向商业和众包支持。
https://github.com/chrisdutz/blog/blo…
Chris 在文章中提到 PLC4X 对很多工业企业在成本、安全性和性能上的帮助。由于 PLC4X 的工作繁重,Chris 在 2020 年决定放弃自己的工作,去全职做工业开源软件咨询服务。然而,繁重的工作、开发所需的昂贵硬件,以及开发者的大量付出得不到应有的回报,都使得 Chris 不愿继续再做下去,并计划转向商业和众包支持。
https://github.com/chrisdutz/blog/blo…
Forwarded from Programmer Humor
MAT / IFW 禁用方案分享:
导致星巴克崩溃无报错的S服务
此服务似乎来自梆梆安全加固企业版 com.secneo.apkwrapper.r.S
胡乱分析了一下,这个 S 服务会访问 int com.secneo.apkwrapper.H.o(Context) 静态方法,这个静态本地方法,当本地库返回值小于等于 0 时会直接调用 System.exit(0); 所以也没有错误日志出现。
本地库为 libDexHelper.so / libDexHelper-x86.so
#reveng 🌚为了帮助大佬(如 GetDex)们秀memdump和art插件等 #aop 基本操作啊
>我一直想加固到底有什么用呢?
它不也是防君子不防小人的东西吗?甚至于所有字节码如果想让系统运行的话,那系统一定要可以识别这个字节码。
那如果一个系统本身在加载字节码的地方提取了一份,当搜索已加载代码中的引用,来不停的请求 loadClass 之类,那么加固外壳的解密功能完全不可能拒绝系统的这种请求。最终依然会被探索出被加密代码的解密字节码(
稍微有点 #bin 和 #assembly 常识也不会相信这些吧,难道不是不理解struct才相信二进制和mem不可读?
掌握程序=听天由命,掌握解释=掌控程序 🌚
我对IT交流的科普力是失望的,代码写得🌸时非常开心,一谈到低层抽象都有武德了,就会用个序列化/反编译工具;当初万能汇编器的时代去哪了
导致星巴克崩溃无报错的S服务
此服务似乎来自梆梆安全加固企业版 com.secneo.apkwrapper.r.S
胡乱分析了一下,这个 S 服务会访问 int com.secneo.apkwrapper.H.o(Context) 静态方法,这个静态本地方法,当本地库返回值小于等于 0 时会直接调用 System.exit(0); 所以也没有错误日志出现。
本地库为 libDexHelper.so / libDexHelper-x86.so
#reveng 🌚为了帮助大佬(如 GetDex)们秀memdump和art插件等 #aop 基本操作啊
>我一直想加固到底有什么用呢?
它不也是防君子不防小人的东西吗?甚至于所有字节码如果想让系统运行的话,那系统一定要可以识别这个字节码。
那如果一个系统本身在加载字节码的地方提取了一份,当搜索已加载代码中的引用,来不停的请求 loadClass 之类,那么加固外壳的解密功能完全不可能拒绝系统的这种请求。最终依然会被探索出被加密代码的解密字节码(
稍微有点 #bin 和 #assembly 常识也不会相信这些吧,难道不是不理解struct才相信二进制和mem不可读?
掌握程序=听天由命,掌握解释=掌控程序 🌚
我对IT交流的科普力是失望的,代码写得🌸时非常开心,一谈到低层抽象都有武德了,就会用个序列化/反编译工具;当初万能汇编器的时代去哪了
#net 播客...KODI 项目有插件吗 🤔 >主播似乎有一些误解,作为小宇宙的后端开发,我稍微解释一下吧。 我们没有“只认某某平台”,像主播使用的Github Page,小宇宙内也有很多节目是建立在Github Page上的,也有像《Anyway.FM》这样完全自建RSS的节目。 公告功能在短暂的内测后,也是在几个月前就开放给所有主播,也并不存在迟迟不愿为主播提供的情况。 认领节目的过程确实是遇到了Bug,但在收到了主播的反馈后我们就解决了问题,随后主播也就正常认领了。 作为开发,因为Bug给这位主播造成了不好的用户体验,确实感到抱歉,也希望大家理解,没有那么多别有用心吧。
#bug apple webkit 🙏 IndexDB 的名称会暴露给任何js,跨域 https://t.me/outvivid/3325
Telegram
层叠 - The Cascading
FingerprintJS 分析称,Safari 15 的一个漏洞使得网站可以跨域追踪用户。此漏洞影响 macOS 上的 Safari 15 和运行 iOS/iPadOS 15 的设备。
此漏洞的原理是:当某网站在 Safari 创建一个 IndexDB 时,同名 IndexDB 也会在其他站点使用的存储中被创建。部分站点创建的 IndexDB 名称包含用户 ID,因此此漏洞可以被用来对用户进行跨域追踪。这种追踪甚至可以在后台标签页中实时进行。
用户可以在此网站测试漏洞效果:
https://safarileaks.com/…
此漏洞的原理是:当某网站在 Safari 创建一个 IndexDB 时,同名 IndexDB 也会在其他站点使用的存储中被创建。部分站点创建的 IndexDB 名称包含用户 ID,因此此漏洞可以被用来对用户进行跨域追踪。这种追踪甚至可以在后台标签页中实时进行。
用户可以在此网站测试漏洞效果:
https://safarileaks.com/…
#ce 看到
SSA单赋值正是带执行序的 Node图,只是节点图里变量都是靠连接表示,而程序变量是有时序指代的,例如
见 https://www.zhihu.com/question/24992774
SSA本来是无关内存变量或寄存器的,全交给分配器解决是放哪。(Lua)是干脆算计算栈最大深度,然后编号位置 不复用,而FFI(native函数)的 CDEF 调用约定和 struct{} 靠指针 load/store 就行了,也是SSA Value;现在的做法或许更好,C语言里for(;;)也不止能迭代1变量,变量值源自哪个{} 就是很难区分的
#statement 我觉得好的程序应该是一个模板,填哪里的哪种数据都能用的那样,仿佛只是数据的脚本和限制,话筒交给程序输入
程序不该内嵌有太多常量
我开始用对照输入输出的方法设计程序、以其他的领域方法和视角思考API能描述的问题
心中的程序没必要符合什么不得了的约束
因为代码也是数据啊
new WebAudio 就想到Blender 着色器节点,节点能不能表达为 f(a,f1(b)) 的形式呢?即便无关执行序(新旧值问题),不行,因为f1的输出可复制多个SSA单赋值正是带执行序的 Node图,只是节点图里变量都是靠连接表示,而程序变量是有时序指代的,例如
a=1; if(q)a=a+1; f(a) 间这个a就是运行时不同,在LLIR里 c=phi a,a1 就是把来自不同前BB(if,.)的计算整合,当然你也可以直接store&load,就没有SSA问题了;IR form也就是为便于优化,现在在函头alloca mem2reg就成。见 https://www.zhihu.com/question/24992774
SSA本来是无关内存变量或寄存器的,全交给分配器解决是放哪。(Lua)是干脆算计算栈最大深度,然后编号位置 不复用,而FFI(native函数)的 CDEF 调用约定和 struct{} 靠指针 load/store 就行了,也是SSA Value;现在的做法或许更好,C语言里for(;;)也不止能迭代1变量,变量值源自哪个{} 就是很难区分的
#statement 我觉得好的程序应该是一个模板,填哪里的哪种数据都能用的那样,仿佛只是数据的脚本和限制,话筒交给程序输入
程序不该内嵌有太多常量
我开始用对照输入输出的方法设计程序、以其他的领域方法和视角思考API能描述的问题
心中的程序没必要符合什么不得了的约束
因为代码也是数据啊
Zhihu
Phi node 是如何实现它的功能的? - 知乎
看《编译原理》只明白它的起作用的机理是怎么样的,但是(到了汇编/机器码的阶段)它是如何实现的呢?是…