Forwarded from AlPlank (Al Pt)
Telegram
一个落魄的退休司机
用 PPT 随手画了个思维导图。
从目前的消息来看,字幕组没有受到很大影响。
从目前的消息来看,字幕组没有受到很大影响。
Forwarded from APPDO 数字生活指南
#plt #ce #js https://rescript-lang.org/docs/manual/latest/newcomer-examples
为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言? - 知乎用户的回答 - 知乎
https://www.zhihu.com/question/359906573/answer/1709942996
#rust -like , with
为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言? - 知乎用户的回答 - 知乎
https://www.zhihu.com/question/359906573/answer/1709942996
#rust -like , with
let binding & {} expressionReScript Documentation
Newcomer Examples | ReScript Language Manual
Quick examples for users new to ReScript
#plt #Java 出去散步的路上想了一下绝句目前的一些语法糖
之前对 event listener 的设计是,控件里存
可以写出
这有一点问题, EventName 不好批量定义,我就想到之前的「变」定义有逗号形式:
可以另外对
所以说任重道远啊...
回看 Java 的 anonymous subclass 的时候我还以为编译器可以提供闭包的专用 inspect API 呢,比如就可以做
因为
之前对 event listener 的设计是,控件里存
被单击、被单击释放、之子树被改变 这样的 EventName ,开始计划是靠子类多态重载中缀算符「当」(也能支持 annotation 了... 好像不能 但可以学 Python decorator ),不知会不会再改可以写出
按钮当被单击,说("emm")。 这种代码,现在想想可以增进 DOM 式支持 量 监听配置 = 按钮加监听(被单击、op) 这种可撤销的 listener ,优雅些而且完善这有一点问题, EventName 不好批量定义,我就想到之前的「变」定义有逗号形式:
事 wtf() 为我好像还记得另一种设计:
变,
数 a 初0;数 b c 初1
文 s k 初""
重复若a不是5,b令置为「它乘2」;c令置为「它乘b」;a增。
回a+b+c
事 wtf() = a+b+c现在我可能倾向前者一些,主要是因为好读而且只写一个比较规整。
其中,
变数,a 初0;b c 初1。
变文,s k 初""。
可以另外对
量提取(a、b、c) 做扩展…… 可是 Kotlin 目前不支持这种非局部定义(显然这个要能静态执行,才能知道能不能完全初始化)所以说任重道远啊...
回看 Java 的 anonymous subclass 的时候我还以为编译器可以提供闭包的专用 inspect API 呢,比如就可以做
CallbackList 这样的压缩工作,大意了 😂因为
int a; new Listener() { void run() { print(a); } } 就会弄出有 constructor(a:Int) 这样的 inner class 啊,显然不需要 inspect 它 closure 住的变量(或者说构造器已经说明一切),这种接口就很完善了...
duangsuse::Echo
#math 我将无我... 🌝 其实根本没用到,作者喜欢从别处复制粘贴?或者喜欢自己写一大堆(repeating...)没用的结构? 话说作者挺喜欢给自己找麻烦,非得 let that = this; 一个,用了 27 次,我挺反感这种主语混淆不清的代码 好像挺 English 的,其实写半天我看不懂 this that 是在指什么,代码又为何要换人称 🌚
重写 js canvas 游戏 asteroids 是一个很好的展开,我打算最后给它加一个触摸(单击+移动转向射击/双击前进)操控的功能
如何抽提 mainloop 是个问题,最好还是能给子弹这样的对象添加自动绘制管理,到时候会彻底重写的
贪吃蛇的话整个地图都是一起绘制的,就没有对象座标集代码冗长的问题
如何抽提 mainloop 是个问题,最好还是能给子弹这样的对象添加自动绘制管理,到时候会彻底重写的
贪吃蛇的话整个地图都是一起绘制的,就没有对象座标集代码冗长的问题
不用
目前的设计还是站在 inline 优化可信的基础上,可这毕竟是循环引用(updateFunc),func 参数不可能被内联的
不过,requestAnimationFrame 要自体再调用本身就不可以内联吧…… 关键是这个 next 闭包肯定有额外开销
在下觉得,果然还是不应该用
暴露 frame-refresh schedule 果然是不良实践呢
class 封装游戏对象还是有局限性吧…… 为了性能不能检查 func 返回值来看是否中断,也不能每次 requestAnimationFrame 去 try-catch 一个,我看只有整体做大一点,key handler 放外面,才能避免为一个 Esc 键退出弄额外开销目前的设计还是站在 inline 优化可信的基础上,可这毕竟是循环引用(updateFunc),func 参数不可能被内联的
不过,requestAnimationFrame 要自体再调用本身就不可以内联吧…… 关键是这个 next 闭包肯定有额外开销
在下觉得,果然还是不应该用
next 函数参数,应该提供一个 event queue 实现然后支持 exit() event... 暴露 frame-refresh schedule 果然是不良实践呢
duangsuse::Echo
不用 class 封装游戏对象还是有局限性吧…… 为了性能不能检查 func 返回值来看是否中断,也不能每次 requestAnimationFrame 去 try-catch 一个,我看只有整体做大一点,key handler 放外面,才能避免为一个 Esc 键退出弄额外开销 目前的设计还是站在 inline 优化可信的基础上,可这毕竟是循环引用(updateFunc),func 参数不可能被内联的 不过,requestAnimationFrame 要自体再调用本身就不可以内联吧…… 关键是这个 next…
https://duangsuse-valid-projects.github.io/Share/HTMLs/renju_spaceship/spaceship.html
大家可以在这里试玩 #web #js #code #project
按 1 增加一盘, 2 增加彩球(我在干什么我,为什么要用五子棋盘当靶子…… 🤪 )
asteroids 方向键控制、空格射击、B 键刷新,其他参考 www.websiteasteroids.com
大家可以在这里试玩 #web #js #code #project
按 1 增加一盘, 2 增加彩球(我在干什么我,为什么要用五子棋盘当靶子…… 🤪 )
asteroids 方向键控制、空格射击、B 键刷新,其他参考 www.websiteasteroids.com
#lib #doc #js ACE code editor
https://ace.c9.io/index.html#nav=howto
https://mivik.gitee.io/compress
https://file.xecades.xyz/Linux/GetKeyDown.html
https://stackoverflow.com/questions/8832320/how-can-i-highlight-code-with-ace-editor
https://medium.com/@jackub/writing-custom-ace-editor-mode-5a7aa83dbe50
https://github.com/ajaxorg/ace#features
https://stackoverflow.com/questions/18614169/set-value-for-ace-editor-without-selecting-the-whole-editor '
啊... 感觉 ACE 真的好草啊
设计上大概就是 replace, getValue 这些常用"UI"功能放 root object
replace(range,text), setValue 放 .session
getSelectedText(), insert(s) 放 .selection
但是它的 cursor 真的好难弄啊,为什么是 {line, column} 的形式呢(Range 也是这种,四元形式...),而且都只有 cursor/selection Left/Right/Up/Down 的无参函数,估计只是给 UI 绑定的
那你定义个鸡毛啊! 就这?! 要知道不管什么文本存储后端, LRUD 四向的代码几乎都差不多,你暴露接口,而且不支持 length 只能为 1? 也没有元编程便利性 API 辅助?
而且
无了无了
https://stackoverflow.com/questions/23278238/ace-code-editor-set-language-dynamically
https://stackoverflow.com/questions/20869962/what-are-the-requirements-for-mode-html-in-ace-editor
https://www.xspdf.com/resolution/54957281.html
https://ace.c9.io/index.html#nav=howto
https://mivik.gitee.io/compress
https://file.xecades.xyz/Linux/GetKeyDown.html
https://stackoverflow.com/questions/8832320/how-can-i-highlight-code-with-ace-editor
https://medium.com/@jackub/writing-custom-ace-editor-mode-5a7aa83dbe50
https://github.com/ajaxorg/ace#features
https://stackoverflow.com/questions/18614169/set-value-for-ace-editor-without-selecting-the-whole-editor '
editor.setValue() does selectAll, forgot to unselect it'啊... 感觉 ACE 真的好草啊
设计上大概就是 replace, getValue 这些常用"UI"功能放 root object
replace(range,text), setValue 放 .session
getSelectedText(), insert(s) 放 .selection
但是它的 cursor 真的好难弄啊,为什么是 {line, column} 的形式呢(Range 也是这种,四元形式...),而且都只有 cursor/selection Left/Right/Up/Down 的无参函数,估计只是给 UI 绑定的
那你定义个鸡毛啊! 就这?! 要知道不管什么文本存储后端, LRUD 四向的代码几乎都差不多,你暴露接口,而且不支持 length 只能为 1? 也没有元编程便利性 API 辅助?
而且
ace.edit(selector, options) 居然没有用,非得 editor.setOptions 才行无了无了
https://stackoverflow.com/questions/23278238/ace-code-editor-set-language-dynamically
https://stackoverflow.com/questions/20869962/what-are-the-requirements-for-mode-html-in-ace-editor
https://www.xspdf.com/resolution/54957281.html
session() 也挺有意思的,但凡桌面应用都要有撤销重做的能力,这个是 .setMode("ace/mode/sql") 都能重做一样Stack Overflow
How can I highlight code with ACE editor?
I'd like to syntax highlight more than a dozen small snippets of code and then make them editable with ACE Editor by clicking on them, since I think it would be much faster than setting up the full
https://stackoverflow.com/questions/43647415/jekyll-site-not-rendering-markdown #web #blog
https://docs.github.com/en/github/working-with-github-pages/creating-a-github-pages-site-with-jekyll
https://docs.github.com/en/github/working-with-github-pages/creating-a-github-pages-site-with-jekyll
Stack Overflow
Jekyll site not rendering markdown
I have an issue where my remote repository is updated, but my Github pages site will not update. The content of http://balassit.github.io/readings/GitNotes.md is outdated. I have verified that in my
duangsuse::Echo
https://duangsuse-valid-projects.github.io/Share/HTMLs/renju_spaceship/spaceship.html 大家可以在这里试玩 #web #js #code #project 按 1 增加一盘, 2 增加彩球(我在干什么我,为什么要用五子棋盘当靶子…… 🤪 ) asteroids 方向键控制、空格射击、B 键刷新,其他参考 www.websiteasteroids.com
关于飞机打炮游戏,吃饭时想到三点。 🌝 不过还是衷心希望能重构好,争取 300 行内的 #design #web #js #game
1. Vector {angle, distance} 与点击指定方向的计算
一直不清楚这个『矢量』到底指的是甚,它是仅从 (x,y) 总结出了 angle (rad), length 两个变量,我之前只知道可以从一点 +角度 +距离 得到另一点的,这个矢量是自己就有角度和长度吧 😰
要实现单击指定飞机方向,得有
可见计算机图形学的艰难了。
重写 Vector(x,y) 和 Line(p1,p2) 的时候我有一个点子,可以基于 js 反射做一个 2 tab 的 class 相等性检查器,栏1 输入代码,栏2 显示同名类/成员的树,可以用定义好的 sequence (random 集什么的) 去测试输出的一致性。 #tools
2. oneclick, dblclick, pressmove 事件的检测(detect)
DOM 的 InputEvent 只有 keydown,keypress,keyup ,没有 singleclick, doubleclick 什么的(这也是为什么许多时候只注册 keyup 事件而不能叫 click ,因为 click 指代的事情不明确)
游戏的触摸屏移植计划的是,单击打子弹、双击前进、按下+移动变方向。
doubleclick 的检测比较麻烦,要区分单击和双击,就得计算点击间隔,如果到时没连则为单击;不过用 DOM Event 二次封装事件还比较方便
之前还想了要不要移植个基于 DOM
3. 关于 mainloop key handle 和 draw (重绘) 的解耦数据建模方式
关于每帧绘制的情况,是可拆分的,游戏里 bullets, (爆炸的)particles 这俩元素每次更新都要重绘, player(rotation),flame 这俩在玩家的 spaceship 移动/旋转时重绘 😋
目前,作者的设计是各存一个
基本上可以说最少要几个
可以说数据模型是这样,怎么建模最易用,且最高效?
可以用两个 dict:
可以用一个 array:
或
最后我还是决定用第一个 array(原因见最下方),静态决定绘制顺(绘制会消耗时间 比如 player,flame 显然是一起绘制而且分先后的)
然后利用动态语言的特性 let 解构给 types 命名(player, flame, bullet...)。
因为 instances 的集合大小是动态的,显然持有的都只能是堆对象引用而不能直接分配,再说 JS 现阶段的优化不足以直接度量 struct size ,不如减少 [] 分配量
1. Vector {angle, distance} 与点击指定方向的计算
一直不清楚这个『矢量』到底指的是甚,它是仅从 (x,y) 总结出了 angle (rad), length 两个变量,我之前只知道可以从一点 +角度 +距离 得到另一点的,这个矢量是自己就有角度和长度吧 😰
要实现单击指定飞机方向,得有
relativeDegree(a, b) (或者 absolute?)这样的函数,我当然是不会写可见计算机图形学的艰难了。
重写 Vector(x,y) 和 Line(p1,p2) 的时候我有一个点子,可以基于 js 反射做一个 2 tab 的 class 相等性检查器,栏1 输入代码,栏2 显示同名类/成员的树,可以用定义好的 sequence (random 集什么的) 去测试输出的一致性。 #tools
2. oneclick, dblclick, pressmove 事件的检测(detect)
DOM 的 InputEvent 只有 keydown,keypress,keyup ,没有 singleclick, doubleclick 什么的(这也是为什么许多时候只注册 keyup 事件而不能叫 click ,因为 click 指代的事情不明确)
游戏的触摸屏移植计划的是,单击打子弹、双击前进、按下+移动变方向。
doubleclick 的检测比较麻烦,要区分单击和双击,就得计算点击间隔,如果到时没连则为单击;不过用 DOM Event 二次封装事件还比较方便
之前还想了要不要移植个基于 DOM
dispatchEvent 的虚拟方向键盘(肯定不会有操纵杆那么高级)过去,后来说不要了(想必也有轮子)3. 关于 mainloop key handle 和 draw (重绘) 的解耦数据建模方式
关于每帧绘制的情况,是可拆分的,游戏里 bullets, (爆炸的)particles 这俩元素每次更新都要重绘, player(rotation),flame 这俩在玩家的 spaceship 移动/旋转时重绘 😋
目前,作者的设计是各存一个
[] (当然是 unshift/pop 的 queue 模式),然后 refresh 时逐个绘制;这个流程是可拆分的没必要写死 「用数据代表程序,让程序融进数据」基本上可以说最少要几个
name 不同的 function draw(p) 和它的实例 args (例如绘制点、绘制角度)类型:绘制函数=1:1;类型:实例参数=1:N 可以说数据模型是这样,怎么建模最易用,且最高效?
可以用两个 dict:
renderers={"bullet":drawDot}, instances={"bullet":[Point(1,2),]} ,遍历 render 的 key 就行,但这样要 o[key] 两次 不是很高效可以用一个 array:
[[drawDot, Point(1,2)]] ,但这样是针对动态类型语言的(混淆了 args 的 sizeof)或
[[drawDot, [Point(1,2)]]] (for [render, instances] in types), register render 函数进去时就要用索引号,不方便最后我还是决定用第一个 array(原因见最下方),静态决定绘制顺(绘制会消耗时间 比如 player,flame 显然是一起绘制而且分先后的)
然后利用动态语言的特性 let 解构给 types 命名(player, flame, bullet...)。
因为 instances 的集合大小是动态的,显然持有的都只能是堆对象引用而不能直接分配,再说 JS 现阶段的优化不足以直接度量 struct size ,不如减少 [] 分配量