#sysadmin #boot #Learn 基本上,多系统是失败了😂 昨天特意下了个 32bit x86 8.0 Android OREO 的,看起来只能保留手动操作
但是我写了自动生成启动项的脚本,重构了 /bin/qemu-android, 也有一些有趣的片段收集了一下。 折腾这些就是费时间,比写程序更耗时😥
开始还以为能从 kernel cmdline 拿参数甚至利用原开发者 CwHuang 的既有代码,最后还是没捋清变量关系🤪
不过以后就有选择 也方便调试了,虽然开机启动要 5 分钟,秒杀 99% 的电脑😂
https://pastebin.ubuntu.com/p/kvb2kZXHSm
但是我写了自动生成启动项的脚本,重构了 /bin/qemu-android, 也有一些有趣的片段收集了一下。 折腾这些就是费时间,比写程序更耗时😥
开始还以为能从 kernel cmdline 拿参数甚至利用原开发者 CwHuang 的既有代码,最后还是没捋清变量关系🤪
不过以后就有选择 也方便调试了,虽然开机启动要 5 分钟,秒杀 99% 的电脑😂
https://pastebin.ubuntu.com/p/kvb2kZXHSm
Forwarded from LetITFly News (LetITFly 让技术飞)
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
千里冰封 | PLCT 公开演讲:当我们在谈论编程语言的时候我们在谈论什么
https://ice1000.org/notes/plct-tt-intro
https://ice1000.org/notes/plct-tt-intro
作为本领域的频道主动苏当然也会作总结。#plt 😋
当然,我现在非常重视实践能力以及同代码量应用范畴的最大化,可能会希望编译器不只能做单纯/直白的一种结构转换,而能带有更多边角信息(行号 等)的复用,从这点来说也必须向大佬学习(开发了 ImGui binding)。
「当我们谈编程语言,实际是在讨论很多门相对独立的语言」
谈语言除了好看与否、红火与否、高大上与否,当然离不开『语言工具』,如构筑并管理『语法树』图结构的『解析器』(其亦可同时实现代码高亮)、做代码生成转化的『编译器』,以及提供(sizeof 等)信息和静态断言的类型检查器,不然就虚无缥缈了。
一般编程语言构造除了(可能的)解决领域应用痛点,模块化(易用于解决大型问题)、类型安全(尽早地保证正确性和性能)、表达式(用于描述计算) 是它的必须;举了个例子, #Kotlin 的
他提到,『宏(macro)』作为编译期能展开 减少冗余代码量的特性,以及「类型与表达式语言更亲近」的事实(Kotlin 对执行中断类型
「相同类型的表达式互换不影响 well-typedness」
“程序可以有无限个、类型在大多数系统下也是有无限种。
数学上讨论无限大的对象(如无穷数列)的时候往往会涉及对这个对象的结构找有限的、被重复的规律,所以我们也对程序找了规律。
我们『构造』程序和类型的手段是有限的——比如在 C 语言里面,那些值类型就是几个单独的类型,然后我们能用结构体(struct)、union、数组(T[])、指针(T*)等功能从已有的类型构造新类型。(enum 本质类似 int 的 typealias 、数组 T[] 类似能以相似语法 new 的 T*)
编程者仅有这些手段——可以说所有的类型都是由这些「基础构造」方法互相缝合构造出来的,手段是有限的,正如语法的 BNF(形式化文法 即规范) 是有限的。”
类型理论上,构造值被称为 introduction ,利用它们去计算称为 elimination (这名字像问题的出现和消逝),这些都要定规则:
数值『字面量(literal)』都是 int 类型的实例(int 值)
指针类型 T*,若有
我们可以对 int 值施用数值运算的运算符、判等(及大小)、按位且或非 交并补(A - B,
指针类型 T* 的实例 a,可以解引用 (*a) 得到型为 T 的结果,或者说
类型上的信息编码:如果我们能用 T 类型及其 intro/elim 去实现出 T1 类型的 intro/elim,那可以说 T 是一个比 T1 更 general(概括性) 的类型,实现其操作(即 from/into) 的过程我们称之为『编码(encode)』,也听有说法表示 T1与T 是等价(equivalent) 的。
上篇感觉有点意思的是,提到了「操作语义」「指称(指代?)语义」「范畴语义」,也就是编程范式了,表述式(即过程式)、定义式、关系式(逻辑),这些要素在语言中各有取舍。 Java 就是 OOP 表述式化(
我们可以说『语义』是程序的「执行方式」,比如函数调用的语义就是把函数体的语义拿出来,把里面的形参(formal parameters)引用(reference),换(substitute)成实参(arguments),然后这个函数体的语义就是这个函数调用的语义。
我们也可以说这个编程语言实际上是某个更基础的语言的『高级形式』,比如可以用「翻译出汇编的方式」来讨论 C 程序的语义。
比如我有调用
事实上,这分别就对应着解释型(interpreted)语言和编译型(compiled)语言!是不是感觉和常见的编译原理知识联系到一起了?
相关资料:
https://t.me/dsuse/14926
https://t.me/dsuse/14705
在本苏的频道搜
表达式(中缀算符链、结合优先级、前缀算符和后缀
语句和控制流(
函数也即子程序调用与作用域(call/return, scoping, inline...) 、
类型转换与数值宽度提升、
这四点是要注意的,此外镇静解析(即部分解析)策略与良好的错误报告、基于编译单元/函数体的增量解析、常量折叠、评估损益自动内联,以及 基础的组合(struct,T[])/分支(union,A|B)数据结构 是必不可少的。
中篇和结尾的学术性内容就不说了,睡大觉喽。😝
另外冰封竟然用中文了,第一眼看莫名觉得有点突兀,久违的中文博客。😊
我做不了总结的是,比较 Haskell/Scala 的部分以及 Coq (实际的逻辑关系编程…… 但其目的就是过类型检查 而不是写普通应用了,当然蛤丝科不带副作用能不能编程,当然也是可以的,因为计算机就有按顺序执行的能力)
当然,我现在非常重视实践能力以及同代码量应用范畴的最大化,可能会希望编译器不只能做单纯/直白的一种结构转换,而能带有更多边角信息(行号 等)的复用,从这点来说也必须向大佬学习(开发了 ImGui binding)。
「当我们谈编程语言,实际是在讨论很多门相对独立的语言」
谈语言除了好看与否、红火与否、高大上与否,当然离不开『语言工具』,如构筑并管理『语法树』图结构的『解析器』(其亦可同时实现代码高亮)、做代码生成转化的『编译器』,以及提供(sizeof 等)信息和静态断言的类型检查器,不然就虚无缥缈了。
一般编程语言构造除了(可能的)解决领域应用痛点,模块化(易用于解决大型问题)、类型安全(尽早地保证正确性和性能)、表达式(用于描述计算) 是它的必须;举了个例子, #Kotlin 的
package/import 和 #Rust 的 mod/use 可以说是一种东西,不少语言带有的特性是跨语言的(替换并不影响语言的表现力)。他提到,『宏(macro)』作为编译期能展开 减少冗余代码量的特性,以及「类型与表达式语言更亲近」的事实(Kotlin 对执行中断类型
Nothing 的处理印证了这点)「相同类型的表达式互换不影响 well-typedness」
“程序可以有无限个、类型在大多数系统下也是有无限种。
数学上讨论无限大的对象(如无穷数列)的时候往往会涉及对这个对象的结构找有限的、被重复的规律,所以我们也对程序找了规律。
我们『构造』程序和类型的手段是有限的——比如在 C 语言里面,那些值类型就是几个单独的类型,然后我们能用结构体(struct)、union、数组(T[])、指针(T*)等功能从已有的类型构造新类型。(enum 本质类似 int 的 typealias 、数组 T[] 类似能以相似语法 new 的 T*)
编程者仅有这些手段——可以说所有的类型都是由这些「基础构造」方法互相缝合构造出来的,手段是有限的,正如语法的 BNF(形式化文法 即规范) 是有限的。”
类型理论上,构造值被称为 introduction ,利用它们去计算称为 elimination (这名字像问题的出现和消逝),这些都要定规则:
数值『字面量(literal)』都是 int 类型的实例(int 值)
指针类型 T*,若有
((T)expr) 那么 (&expr) 的类型就是 T*我们可以对 int 值施用数值运算的运算符、判等(及大小)、按位且或非 交并补(A - B,
a&~b)运算指针类型 T* 的实例 a,可以解引用 (*a) 得到型为 T 的结果,或者说
*((T*)a).item 实际代表 a->item ,要以这种读内存、解指向的方式参与计算类型上的信息编码:如果我们能用 T 类型及其 intro/elim 去实现出 T1 类型的 intro/elim,那可以说 T 是一个比 T1 更 general(概括性) 的类型,实现其操作(即 from/into) 的过程我们称之为『编码(encode)』,也听有说法表示 T1与T 是等价(equivalent) 的。
上篇感觉有点意思的是,提到了「操作语义」「指称(指代?)语义」「范畴语义」,也就是编程范式了,表述式(即过程式)、定义式、关系式(逻辑),这些要素在语言中各有取舍。 Java 就是 OOP 表述式化(
switch, new List 等强调很重)、 Kotlin 则定义式化(if 有表达式型更有多分支 when,提倡 map/reduce/associate 等列表处理函数,连 break 也是表达式),范式没有绝对的归类,每个语言都是独一无二的。我们可以说『语义』是程序的「执行方式」,比如函数调用的语义就是把函数体的语义拿出来,把里面的形参(formal parameters)引用(reference),换(substitute)成实参(arguments),然后这个函数体的语义就是这个函数调用的语义。
我们也可以说这个编程语言实际上是某个更基础的语言的『高级形式』,比如可以用「翻译出汇编的方式」来讨论 C 程序的语义。
比如我有调用
f(a),那么它的语义就是『f 的函数体』中『所有对参数的引用』全部换成 a 的语义后得到的一坨,同样是表达式的东西的语义。(当然调用前 f 得被声名为只能有一个参数、或不定长参数的函数,而且能找到函数体,这个参数的类型和表达式 a 的类型相同,或者兼容)事实上,这分别就对应着解释型(interpreted)语言和编译型(compiled)语言!是不是感觉和常见的编译原理知识联系到一起了?
相关资料:
https://t.me/dsuse/14926
https://t.me/dsuse/14705
在本苏的频道搜
UpValue 可以得到很多相关知识。说句题外话,本苏觉得语言实现的重点在于规范化程序结构和数据模型,表达式(中缀算符链、结合优先级、前缀算符和后缀
e.item, e[idx] 等)、语句和控制流(
if when while do for, break continue)、函数也即子程序调用与作用域(call/return, scoping, inline...) 、
类型转换与数值宽度提升、
这四点是要注意的,此外镇静解析(即部分解析)策略与良好的错误报告、基于编译单元/函数体的增量解析、常量折叠、评估损益自动内联,以及 基础的组合(struct,T[])/分支(union,A|B)数据结构 是必不可少的。
中篇和结尾的学术性内容就不说了,睡大觉喽。😝
另外冰封竟然用中文了,第一眼看莫名觉得有点突兀,久违的中文博客。😊
我做不了总结的是,比较 Haskell/Scala 的部分以及 Coq (实际的逻辑关系编程…… 但其目的就是过类型检查 而不是写普通应用了,当然蛤丝科不带副作用能不能编程,当然也是可以的,因为计算机就有按顺序执行的能力)
Telegram
duangsuse::Echo
#cs #project #tools 经历了好事多磨后,我的第一个脚本语言实践终于成功啦~ 而且支持 lexical scoping ,看这里。 (上图 LexicalScope 的定义,真古怪呢)
Forwarded from 层叠 - The Cascading
Ant Design 是蚂蚁集团的设计语言。近日,有用户在 v2ex 上反馈,表示 Ant Design 网站链接到的某篇文章 [1] 中的中国地图不完整。
Ant Design 已于早些时候将此文章的链接从网站移除 [2]。
src: https://v2ex.com/t/748995
1. https://hackernoon.com/interesting-javascript-libraries-born-in-china-d50d1bb81355
2. https://github.com/ant-design/ant-design/commit/0e95728fc92a4c00e261a9564ba264ab18eae1fd
Ant Design 已于早些时候将此文章的链接从网站移除 [2]。
src: https://v2ex.com/t/748995
1. https://hackernoon.com/interesting-javascript-libraries-born-in-china-d50d1bb81355
2. https://github.com/ant-design/ant-design/commit/0e95728fc92a4c00e261a9564ba264ab18eae1fd
V2EX
Ant Design 的同学 我不知道有个东西当讲不当讲,关于你们官网的一个外链政审不严 - V2EX
分享发现 - @shuson - 你们的官网 https://ant.design/docs/spec/introduce-cn这个 element 的链接: https://hackernoon.com/interesting-
#JS #web #statement 😒 想想这几年也是沧海桑田啊,首先不会有人拼接 HTML 字符串 innerHTML= 了,其次 JQuery 也很小化了, Array.prototype.forEach 取代 $.each 、 fetch 和 await/async 取代 $.ajax/onSuccess 和裸的 XHR ,纯 DOM 无扩展变得可能(复用层次提升,也不需要 JQ 的简写了),甚至 ui 都有 Vue,Angular 和 React 从动态/静态角度生成代码,不用去手写、操纵裸 DOM
#learn #java #dev 日常 索引计算
https://t.me/Javaer/554887
前文:
https://t.me/Javaer/554841
1+2, print,print, 1+2 ?
<3 是 while 的持续条件,i 递增1,所以 while 后 i==3
https://t.me/Javaer/554887
前文:
https://t.me/Javaer/554841
1+2, print,print, 1+2 ?
<3 是 while 的持续条件,i 递增1,所以 while 后 i==3
Telegram
duangsuse in Java 编程语言
你必须学习一个,这并不是复杂的 break continue 控制流,仅仅是索引的区间、递进循环而已
形如:
for (i in 0..10) op(i);
for (int i=0; i<=10; i++) op(i);
int i=0; while (i<=10) { op(i); i++ }
其中, op 可为任何引用到变量 i 的表达式/语句块,下文皆此。
若 op=System.out::println; 则你会看到 0,1,2,...,10 这 11 个数
这是 inexclusive range…
形如:
for (i in 0..10) op(i);
for (int i=0; i<=10; i++) op(i);
int i=0; while (i<=10) { op(i); i++ }
其中, op 可为任何引用到变量 i 的表达式/语句块,下文皆此。
若 op=System.out::println; 则你会看到 0,1,2,...,10 这 11 个数
这是 inexclusive range…
https://weibo.com/1260797924/JCwTdv3Pl #wechat #weibo #statement 呃,我忘了之前是不是有说不转发 @Drakeets ,所以只发微博链接
瞄一眼看到「微信已经架构性死亡了,没有新工程师来做...」但是估计是 tg 快照,很快没有了
瞄一眼看到「微信已经架构性死亡了,没有新工程师来做...」但是估计是 tg 快照,很快没有了