duangsuse::Echo
接续上次贪吃蛇,但也最终没弄出多玩家和朋友玩,而且连 dt 时差都没算,额(当然弄出来了也很不满意,因为高二的大佬都会给五子棋加 AI 了 贪吃蛇难度巨--) 下课后几个同学开起这段小程序的玩笑,「怎么没豆呢」「吃了都蛇咋不长呢」,还问我能不能搞出植物大战僵尸来(当然不行啦,除非只有字符画 但也要300行最少) 我熟悉了下 C++ ,用的 new struct * 和 std::queue ,中间出了三次非常有意思的问题。 1. 动画不动但帧明明在刷新(当时快崩溃了 根本不知道为什么 还以为渲染有问题),地图蛇头…
#school #life #cplusplus #web #algorithm #statement snake&dom 🤔
感觉这个实在是太幼齿了,下次一定要加速啊(关于游戏 只会一两个模板就太可惜了)
对了,没有网的话怎么消磨时间呢? #Google #DontKnow Dragon Trex 小恐龙!
这个东西的源码不在页面上,查 event 注册什么的应该也看不到,但通过 Performance 快照,或者 Network 查 canvas 更新的 initiator 能找到 VMno 脚本号,可以看见它把
作弊小技巧:
这样 Trex 就不会 GG 了,而是永无止境地跑下去 -_-|| 仔细看还能发现月亮 spirit 是有圆缺更替的,非常细心。
整个脚本是没带框架的,还包括碰撞检测程序,啊真是非常完整呢。
感觉这个实在是太幼齿了,下次一定要加速啊(关于游戏 只会一两个模板就太可惜了)
对了,没有网的话怎么消磨时间呢? #Google #DontKnow Dragon Trex 小恐龙!
这个东西的源码不在页面上,查 event 注册什么的应该也看不到,但通过 Performance 快照,或者 Network 查 canvas 更新的 initiator 能找到 VMno 脚本号,可以看见它把
Runner
类暴露了。作弊小技巧:
r=new Runner(); r.gameOver=console.log; r.restart();
这样 Trex 就不会 GG 了,而是永无止境地跑下去 -_-|| 仔细看还能发现月亮 spirit 是有圆缺更替的,非常细心。
整个脚本是没带框架的,还包括碰撞检测程序,啊真是非常完整呢。
duangsuse::Echo
#web #js #api https://stackoverflow.com/questions/4386300/javascript-dom-how-to-remove-all-events-of-a-dom-object iframe 标签可用 .contentDocument Node 可用 .getRootNode() 获得 # document window.getEventListeners().click[0].listener() 可以枚举事件监听 本来打算用 ev=>ev.sto…
#js #web #DontKnow DOM 小提示! 😘
1.
2.
3. children, firstChild, prevElementSibling 不会获取到 text node 而 childNodes, parentNode, nextSibling 会
4.e.onXXX 的 event handler 里 return true 可以停掉链传播
5. event handler 都是函数值,函数不必真的有名字,只需持有函数的引用,并不一定真是带 name 的 (感觉写得好废啊
6.
7.
8. AJAX 是异步 JS/XML
9. 设置 inner/outter HTML 的速度没有
10.
11.
12. JS 支持
14. 许多浏览器的控制台的 CSS warning 默认不显示,你可以启用它。 除了
15. Cookie 是 HTTP API 用户登录 session 的主要实现方法,被持久化的登录信息,一般存储在
在浏览器插件里,
此外浏览器插件利用
16.
17. (un)?
18.
19. 很多人都用
20. JQ 比较意思的地方除了链式调用、选择器 expr 支持,还有它封装的 Animation 、 Tween, easing 与队列。
1.
with(e.parentNode){ insertBefore(e1, e); removeChild(e) }
可以用 e.replaceWith(e1)
替换2.
e.remove()
等于 e.parentNode.removeChild(e)
3. children, firstChild, prevElementSibling 不会获取到 text node 而 childNodes, parentNode, nextSibling 会
4.
6.
document.body.contentEditable=true
你会发现浏览器就像 HTML 编辑器!(designMode 亦可) ⭐️7.
document.elementFromPoint(x,y)
你会发现想实现 Ctrl+Shift+C 很简单!8. AJAX 是异步 JS/XML
XMLHttpRequest
open send 的缩写,已被 fetch("http://").text()
.json() Promise API 取代;PJAX 是 pushState JS/HTML 的缩写,意为能控制 navigator history API ,实现跨页播放器可用它9. 设置 inner/outter HTML 的速度没有
createElement
快!请不要靠拼接 HTML 渲染视图,而要靠它做缓存等工作10.
e.setAttribute(attr,v)
是忽略大小写的,否则也可直接用 e[attr]=v
11.
createElementNS
主要用于创建 SVG namespace 下的 tag ,这些 tagName 是不能按平常方式 create 的12. JS 支持
(new Date).getTime()
语法,这个调用类似 performance.now()
13. cloneNode(true)
可以只复制节点 HTML ,相当于 outterHTML=outterHTML
14. 许多浏览器的控制台的 CSS warning 默认不显示,你可以启用它。 除了
console.log
还有 info, debug 等其他 logging 方法 ⭐️15. Cookie 是 HTTP API 用户登录 session 的主要实现方法,被持久化的登录信息,一般存储在
localStorage
; 是 Storage.prototype
。在浏览器插件里,
chrome.storage.sync
是能被自动同步的配置,与单页的只能 localStorage 相对。此外浏览器插件利用
chrome.runtime.sendMessage
能在 background 与被注入的 pagescript 之间交换数据16.
alert(); prompt("title", "默认"); confirm(); print()
往往不被推荐使用,因为 UI 框架往往有更漂亮的非阻塞替代 ⭐️17. (un)?
escape()
, encode/decode URI (Component)? 是常见的编解码 API ,如果你要拼接/解析 URL ,必须用后者来兼容 &name=(含等号,&,? 等特殊符内容)
这种参数;如果你要让 URL 更可读(像解码 Unicode)可能就要用 decodeURI18.
document.execCommand("copy")
能复制已选内容,一般结合 Form 元素 input 的 select()
操作19. 很多人都用
<script defer src=""></script>
取代 JQ 的 $(op)
或者说 document.addEventListener("DOMContentLoaded",op);
20. JQ 比较意思的地方除了链式调用、选择器 expr 支持,还有它封装的 Animation 、 Tween, easing 与队列。
duangsuse::Echo
#js #web #DontKnow DOM 小提示! 😘 1. with(e.parentNode){ insertBefore(e1, e); removeChild(e) }可以用 e.replaceWith(e1) 替换 2. e.remove() 等于 e.parentNode.removeChild(e) 3. children, firstChild, prevElementSibling 不会获取到 text node 而 childNodes, parentNode, nextSibling…
#html #dom #API #doc #dontknow
https://duangsuse-valid-projects.github.io/Share/HTMLs/school/ 🌝新写了个弹球动画,我真是 HIGH 到不行,赛高哩HIGH哒≈
https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats
还有之前的剪贴板我也查了
[在线Html编辑器粘贴过滤技术详解(一)_weixin_33910460的博客-CSDN博客](https://blog.csdn.net/weixin_33910460/article/details/89910701)
[JavaScript如何获取粘贴事件的剪贴板数据(跨浏览器)? - 问答 - 云+社区 - 腾讯云](https://cloud.tencent.com/developer/ask/186776)
另外在找的时候我发现一个 1k star 的 JS DOM 变动静态库,思想挺有意思的,不用 MutationObserver 和 NodeIterator,TreeWalker (
https://github.com/muicss/sentineljs
然并暖,到 DevTools events/debugger 面板看看 DOM Events 的归类就能发现有一大堆 DOM 变动的事件支持嵌套次序🌚
稍有常识的人不难看出,如果我们的 API 继续前进,类似的魔法还能有价值吗?
https://duangsuse-valid-projects.github.io/Share/HTMLs/school/ 🌝新写了个弹球动画,我真是 HIGH 到不行,赛高哩HIGH哒≈
https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats
还有之前的剪贴板我也查了
document.querySelectorAll("[contenteditable]").forEach(e=>e.onpaste=(ev)=>{ e.execCommand("paste",false,ev.clipboardData.getData("text/plain")); })
[在线Html编辑器粘贴过滤技术详解(一)_weixin_33910460的博客-CSDN博客](https://blog.csdn.net/weixin_33910460/article/details/89910701)
[JavaScript如何获取粘贴事件的剪贴板数据(跨浏览器)? - 问答 - 云+社区 - 腾讯云](https://cloud.tencent.com/developer/ask/186776)
另外在找的时候我发现一个 1k star 的 JS DOM 变动静态库,思想挺有意思的,不用 MutationObserver 和 NodeIterator,TreeWalker (
document.createXXX(e).nextNode()
) 什么的,而是利用了自定义 @keyframes
的事件 animationStart 。 API 类似 inotify , on(selector,op) 这样https://github.com/muicss/sentineljs
然并暖,到 DevTools events/debugger 面板看看 DOM Events 的归类就能发现有一大堆 DOM 变动的事件支持嵌套次序🌚
$0.addEventListener("DOMSubtreeModified",console.log); $0.getRootNode().body.setAttribute("contenteditable","")
Share
School
🐕 duangsuse’s shared files(e.g. productive software projects, documents)
#html #learn #dontknow 谈谈 IE 时代开始的 XHTML, HTML4 相关的格式之争吧。
早先的时代,web就好像 (Linux 用户所见的) man pages ,HTML 就像今天看到的 markdown,并不严谨,并没有被广泛采用的规范(对 UI 而言,人杂是 web 的缺陷;心乱是 mobile 的缺陷;框架多是 desktop 的缺陷)
HTML 2,3,4 都是 retro-spec ,即先被广泛实现再有标准,而规范的制订主要是帮助兼容「含错误的网页」(真的搞不懂一些人成天爱 -webkit -moz -egde 前缀 CSS1,3 标准属性的是干什么)
比如说, <br> 和 <br/> 及相同模式的 hr,dt,p 标签,对一些浏览器可能显示,另一些无法兼容,这就导致了客户端(用户代理)差异,而规范统一了错误兼容法,即 HTML 的格式。
W3C 尝试以 XML 规范 HTML ,它指定了 application/xhtml+xml 的强制错误检查格式,但被写惯非 XML 兼容扩展的开发者拒绝了,无奈只能允许用旧 application/html 分发文档,不进行错误检查,只是做了 xml schema 规范。
所以说一些上个时代的网站(比如 gnu.org)声称自己支持 XHTML 1.0,只是说兼容了此规范,并不代表没有使用 undefined behavior 的错误兼容。当然随后 1.0 的附录 C 被取消, xhtml+xml 也不能用了(不向后兼容)
Apple WebKit 和 Gecko, Chrome与Opera 合作的 Blink 等新渲染器取代了 MS IE 的时候, W3C XHTML 2.0 尝试复辟检查的老路,并且完全向 XML 靠拢(众所周知很多应用协议基于 XML 数据建模),竟不向后(前进者的背后!)兼容了!于是 Mozilla&Apple 发起了 WHATWG 规范组,它设计了现在被广泛使用的 HTML5 ,现有引擎支持 H5 不会 break 现有的网页。
<!DOCTYPE html>
为什么和 <!-- 那么像?其实这个标签是 HTML5 才引入的,类似 ES5 的 "use strict"; 它只是「使用新版格式」的标记早先的时代,web就好像 (Linux 用户所见的) man pages ,HTML 就像今天看到的 markdown,并不严谨,并没有被广泛采用的规范(对 UI 而言,人杂是 web 的缺陷;心乱是 mobile 的缺陷;框架多是 desktop 的缺陷)
HTML 2,3,4 都是 retro-spec ,即先被广泛实现再有标准,而规范的制订主要是帮助兼容「含错误的网页」(真的搞不懂一些人成天爱 -webkit -moz -egde 前缀 CSS1,3 标准属性的是干什么)
比如说, <br> 和 <br/> 及相同模式的 hr,dt,p 标签,对一些浏览器可能显示,另一些无法兼容,这就导致了客户端(用户代理)差异,而规范统一了错误兼容法,即 HTML 的格式。
W3C 尝试以 XML 规范 HTML ,它指定了 application/xhtml+xml 的强制错误检查格式,但被写惯非 XML 兼容扩展的开发者拒绝了,无奈只能允许用旧 application/html 分发文档,不进行错误检查,只是做了 xml schema 规范。
所以说一些上个时代的网站(比如 gnu.org)声称自己支持 XHTML 1.0,只是说兼容了此规范,并不代表没有使用 undefined behavior 的错误兼容。当然随后 1.0 的附录 C 被取消, xhtml+xml 也不能用了(不向后兼容)
Apple WebKit 和 Gecko, Chrome与Opera 合作的 Blink 等新渲染器取代了 MS IE 的时候, W3C XHTML 2.0 尝试复辟检查的老路,并且完全向 XML 靠拢(众所周知很多应用协议基于 XML 数据建模),竟不向后(前进者的背后!)兼容了!于是 Mozilla&Apple 发起了 WHATWG 规范组,它设计了现在被广泛使用的 HTML5 ,现有引擎支持 H5 不会 break 现有的网页。
#DontKnow #推测性 #web 关于两个常见交互/功能设计!二维码登录和「划屏手势同时使用 pager 和 paged banner」
一般而言,网站使用 cookie (本意是临时的标识符)获取用户的登录身份。不同设备有不同网络地址,最好不要复用 cookie ,服务端一般要写专门的逻辑支持「手机扫码登录」。
但是,所需最小的信息交换和直接共享登录 cookie(token) 的方法是一致的。网页端显示的二维码蕴含已登录客户端和自己都明白的一个「读写位置」,它能写的数据可能是固定的,比如由已登录客户端请求服务端写入新 cookie ;但本质仍是通过「二客户端都知晓的读写位置」来实现,只是掩盖了直接读写的操作且支持了事件
为了监听到登录事件,往往选择暴露 WebSocket 接口
== 很多时候 DOM 树上接受某事件的元素不止一个。 举个(不同平台的)例子, Android 上一些 ViewPager 里可能有横向滚动条,为什么只有滑动到滚动条末端 pager 才会翻页?
从嵌套序来看是 pager 包含了(其子项) ScrollView ,但对于用户的输入 event ,传播责任链是深者优先——直接目标 Scroll 会处理这个交互。
如果滚动条已到最左而仍收到 swipe 手势,它就不能截获(intercept)此事件仅由自己处理,故此其父项 pager 就有机会往左翻一页;反之,如果它明白事件的涵义是滚动自身,则可以消耗它而不影响父视图。
一般而言,网站使用 cookie (本意是临时的标识符)获取用户的登录身份。不同设备有不同网络地址,最好不要复用 cookie ,服务端一般要写专门的逻辑支持「手机扫码登录」。
但是,所需最小的信息交换和直接共享登录 cookie(token) 的方法是一致的。网页端显示的二维码蕴含已登录客户端和自己都明白的一个「读写位置」,它能写的数据可能是固定的,比如由已登录客户端请求服务端写入新 cookie ;但本质仍是通过「二客户端都知晓的读写位置」来实现,只是掩盖了直接读写的操作且支持了事件
为了监听到登录事件,往往选择暴露 WebSocket 接口
== 很多时候 DOM 树上接受某事件的元素不止一个。 举个(不同平台的)例子, Android 上一些 ViewPager 里可能有横向滚动条,为什么只有滑动到滚动条末端 pager 才会翻页?
从嵌套序来看是 pager 包含了(其子项) ScrollView ,但对于用户的输入 event ,传播责任链是深者优先——直接目标 Scroll 会处理这个交互。
如果滚动条已到最左而仍收到 swipe 手势,它就不能截获(intercept)此事件仅由自己处理,故此其父项 pager 就有机会往左翻一页;反之,如果它明白事件的涵义是滚动自身,则可以消耗它而不影响父视图。
噢, 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?难道不能收集出有哪些变量节点用了被更新变量么,这不是基础操作?
而且还能做到数据变动视图自动更新,耳不仅是单向的视图更改数据,有点意思。 #functional #ce
然后对于控件的 computed() 用了特殊语法 $: a+b (label statement) 表示,应该说也是很实践性
“ 在「古典」React 里,你不得不写 shouldComponentUpdate, 在现代 React, 你同样需要引入 useCallback 和 useMemo,手动地缓存函数,来避免性能问题。
同样是使用 Virtual DOM 的 Vue 却没有这个问题,因为 Vue 的机制(依赖收集)决定了它不必重新执行整个 UI 函数来换取新的 Virutal DOM 树,当某个状态更新的时候,它明确地知道应该 diff 哪些节点。
这么看 React 真是傻逼,不过是提供了无作用域的 state ,竟然要重渲染整体 UI?难道不能收集出有哪些变量节点用了被更新变量么,这不是基础操作?
duangsuse: #kotlin #Dontknow
dsl marker 是干啥的啊, top{ sect{fn()} } 里top的this不对sect起效? 就是说禁止外层隐式this?
平行线:
禁止隐式传递外层this,之前写gradle时候把minSdkVersion配置写buildType,结果实际调用的外部android层的this
duangsuse:
利用编译器处理解决流行问题是kt独有的
当然butterknife也是,但我觉得不算编译器
这些概念-变量绑定在动态语言和现在的 viewtree DSL 里不值一提
タナバタ カヤ:
官方都不推荐了
duangsuse:
对解释器嵌套作用域而言隐式this是特性,就像js with({a:1})a
所以要实现仅1层隐式this
dslmarker XLang
XLang class A{ fn top(FnOn<A>)
,sect }
拒绝A外的this变量,应该易想到
groovy就算了,早点让kts取代它
一群javaee 语序都写不顺的工程师,写几个exprlang就开始折腾简写语言,当然会落入设计不严谨的大坑
dsl marker 是干啥的啊, top{ sect{fn()} } 里top的this不对sect起效? 就是说禁止外层隐式this?
平行线:
禁止隐式传递外层this,之前写gradle时候把minSdkVersion配置写buildType,结果实际调用的外部android层的this
duangsuse:
利用编译器处理解决流行问题是kt独有的
当然butterknife也是,但我觉得不算编译器
这些概念-变量绑定在动态语言和现在的 viewtree DSL 里不值一提
タナバタ カヤ:
官方都不推荐了
duangsuse:
对解释器嵌套作用域而言隐式this是特性,就像js with({a:1})a
所以要实现仅1层隐式this
dslmarker XLang
XLang class A{ fn top(FnOn<A>)
,sect }
拒绝A外的this变量,应该易想到
groovy就算了,早点让kts取代它
一群javaee 语序都写不顺的工程师,写几个exprlang就开始折腾简写语言,当然会落入设计不严谨的大坑
螺莉莉的黑板报
http://tridiv.com/ 用 CSS + HTML 画三维物体的可视化编辑器。 你们……CSS 上脑的人好可怕……
#DontKnow 一如既往的Y-up 座标系(左手比枪xy, 中指z) 。 原来向y旋转是要改变x角度吗..向z旋转要改变y, 角度z 就是相对x了,对横长方体不明显..
正方体有6面,十字架展开 tp lt ft rt 凸字形:最上=顶面, bm bk 底和后,相信类似3D盒动画大家见过 --_- 。它们的 #CSS transform:
前后(2,-1) 移动轴=Z —只是前后次序
左右(1,-3) 轴=Y
当你正面(xy)正方体,它可以在X/Y=横纵 距一个外点旋转(xy位置改变),Z 就是四方本身的倾斜度
X不是横向旋转,而是“所有点绕X轴转”
然后通过 rt-lt{width} bk-ft{} 这些调参
它给每个对象创建CSS .cub-19 .face 我最佩服的..
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d()
正方体有6面,十字架展开 tp lt ft rt 凸字形:最上=顶面, bm bk 底和后,相信类似3D盒动画大家见过 --_- 。它们的 #CSS transform:
rotateX(90deg) translateY(-50%)
rotateY(90deg) translateX(-50%)
translateZ(2em)
rotateY(-90deg) translateX(-50%)
rotateX(-90deg) translateY(-50%)
translateZ(-2em) rotateY(180deg)
顶底(i=0,-2) 的角度是对应的,轴=X前后(2,-1) 移动轴=Z —只是前后次序
左右(1,-3) 轴=Y
当你正面(xy)正方体,它可以在X/Y=横纵 距一个外点旋转(xy位置改变),Z 就是四方本身的倾斜度
X不是横向旋转,而是“所有点绕X轴转”
然后通过 rt-lt{width} bk-ft{} 这些调参
它给每个对象创建CSS .cub-19 .face 我最佩服的..
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d()
#web #tool 笔记本 https://xwmx.github.io/nb/
https://ia.net/presenter .md=>.ppt
#js https://tttttt.me/swiminthedream/1256 无界面的社交网络🌚🌝
#dontknow css 可以在浏览器里即时编辑🌚: style[ContentEditable]{display:block}
所以H5是未来的技术(
#algor #py #dalao http://whatbeg.com/2016/11/16/godtianpinyin.html 自己写谷歌拼音?
#hard #sql #rust https://zhuanlan.zhihu.com/p/596119553 图论优化器
https://ia.net/presenter .md=>.ppt
#js https://tttttt.me/swiminthedream/1256 无界面的社交网络🌚🌝
#dontknow css 可以在浏览器里即时编辑🌚: style[ContentEditable]{display:block}
所以H5是未来的技术(
#algor #py #dalao http://whatbeg.com/2016/11/16/godtianpinyin.html 自己写谷歌拼音?
#hard #sql #rust https://zhuanlan.zhihu.com/p/596119553 图论优化器
https://caniuse.com/css-snappoints #web
#dontknow #CSS Scroll Snap
可以替换 splide.com 用js模拟的拖拽轮播图,可grid化,配合 anim-timeline:scroll(#id) 可实现滚轮ppt驱动动画 🌚👍
CSS 相比 YAML 把 03:01 解析为24小时制秒数😅就好得多https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
另外,DOM的resize和visible(Intersect) 也是有Observer 的
DOM和CSS就是多元化 #UI 实际上的标准
#dontknow #CSS Scroll Snap
可以替换 splide.com 用js模拟的拖拽轮播图,可grid化,配合 anim-timeline:scroll(#id) 可实现滚轮ppt驱动动画 🌚👍
CSS 相比 YAML 把 03:01 解析为24小时制秒数😅就好得多https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
另外,DOM的resize和visible(Intersect) 也是有Observer 的
DOM和CSS就是多元化 #UI 实际上的标准
Caniuse
CSS Scroll Snap | Can I use... Support tables for HTML5, CSS3, etc
"Can I use" provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile web browsers.
#DontKnow #linux #tool
有没有那种能存档linux 进程的调试工具啊,就像GBA里的存档键
涉及 vmem,fd, linker 等问题.linux ptrace没有
Linux 太硬了,都不给这种简单的进程级hibernate工具?
预装了,叫CRIU。感觉Linux和win32 里也有好的成分,比如 ld hook , overlayfs, qemu-user, D-Bus, rundll32和C#COM , WSL, CRIU, https://github.com/rami3l/pacaptr 包管理
垃圾 docker pause 居然不给进程 snapshot 的机会,是把cgroup CPU轮转给停掉
我想用进程快照玩游戏,这样就能复活,也不容易存死档
但是貌似只有VMware UI 最方便
(
进程池的全局变量是复用的, 不会浪费时间
(补: Docker 2014 就支持了进程冷恢复,但fork需要 -dir 参数导出,新容器加载
#code #bash
sudo dockerd
有没有那种能存档linux 进程的调试工具啊,就像GBA里的存档键
涉及 vmem,fd, linker 等问题.linux ptrace没有
Linux 太硬了,都不给这种简单的进程级hibernate工具?
预装了,叫CRIU。感觉Linux和win32 里也有好的成分,比如 ld hook , overlayfs, qemu-user, D-Bus, rundll32和C#COM , WSL, CRIU, https://github.com/rami3l/pacaptr 包管理
垃圾 docker pause 居然不给进程 snapshot 的机会,是把cgroup CPU轮转给停掉
我想用进程快照玩游戏,这样就能复活,也不容易存死档
但是貌似只有VMware UI 最方便
(
import multiprocess
挺好玩,最近封装AI库就用到了进程池。二进制数据封送直接传参就能过去进程池的全局变量是复用的, 不会浪费时间
(补: Docker 2014 就支持了进程冷恢复,但fork需要 -dir 参数导出,新容器加载
#code #bash
echo "{\"experimental\": true}" >> /etc/docker/daemon.json
sudo dockerd
docker run -d --name looper busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
docker checkpoint create looper c1
docker start -i --checkpoint c1 looper
#py #dontknow 不好的写法
e.g. 不使用 main 而难于import
使用map,filter 而不用(for if), 或在for里修改集合
忘记 typing,pathlib 或 r"rawstr" 正则
把 np.array 视为iter
用注释“重写”代码 ,却不解释代码为何存在
依赖注入DI 在 Py 著名的PIL绘图里为何不存在 -被{kv:函数值}化了!
e.g. 不使用 main 而难于import
使用map,filter 而不用(for if), 或在for里修改集合
忘记 typing,pathlib 或 r"rawstr" 正则
把 np.array 视为iter
用注释“重写”代码 ,却不解释代码为何存在
依赖注入DI 在 Py 著名的PIL绘图里为何不存在 -被{kv:函数值}化了!
YouTube
21 MORE nooby Python habits
Get better at Python by ditching these habits.
Embrace the Zen of Python and leave your nooby habits behind! Improve your code and your prestige and learn how to master Python.
CONTEST CURRENTLY CLOSED!
OFFICIAL CONTEST RULES:
1. All entries must comply…
Embrace the Zen of Python and leave your nooby habits behind! Improve your code and your prestige and learn how to master Python.
CONTEST CURRENTLY CLOSED!
OFFICIAL CONTEST RULES:
1. All entries must comply…
#plt #bing #talk 不会思考它没学过的资料..
我想写类于Java 类型系统的类型检查器,请提供类型的数据模型
>很好地提示了TypeVariable,Method 等反射接口
请举几个函数式例子, 说明 check(def) 如何证明调用是有效的
> "g(x, x) = x * 2"; // 是无效
利用 Haskell data 编写类型的数据模型
>很长地细化了反射接口
请了解js的 PEG 和递归下降技术, 解释 num,str 的嵌套列表 和csv的PEG文法
>很成功举出可运行的示例+test
>可示例只观感上正确 ,且使用了PEG不支持的leftRec
既然有了解析器,借鉴lisp标准做一个 js 调用器,能实现对 (fun filterMap(xs f) ) 的定义,要支持 fun when let = 几函数
>听不懂
为什么你不太熟悉实现这些,但很会写 snake,tetris 这种js游戏代码呢?
>我利用我的内部知识和一些在线资源来拼凑出一个可运行的结果
在经济上, 程序员的工资完全取决于其工作的难度吗? 如果AI让难度变低,对编程界会有什么影响呢?一些人觉得AI掌握了他们在小圈子里独有的技术, 从而让这种技术廉价化了,你能举几个回应吗
>AI 可以帮助程序员提高效率、创造力和协作能力,让他们更容易解决复杂的问题,但可能会取代一些低层次或重复性的编程工作,导致一些程序员失业或降低收入
程序员需要不断地学习新的技术和知识,AI是要帮助他们更好地使用和发展他们的技术
有解析库支持在定义 parse 的同时对应地支持toString 吗? 基于递归下降算法如何让 list 文法同时支持parse和toStr (stringify,dumps) 呢
>没有,ANTLR有吗? 不知道咋做
几个支持unparse 的库: csv , xml2dict, pyast
传统的: https://pegjs.org/online ,jison
https://www.compart.com/en/unicode/plane
理论上来说,既然能解析一种文法, 就一定可以把生成的数据还原回来
>正确,还原的字符串可能和原始的字符串有一些细微的差别,比如空格,换行,注释
这种正反函数的概念,对 HTML 数据绑定也有效, 意思是能被 render() 就能被爬取, 你能举出例子吗
>不懂,但有人答过js怎么做数据绑定
你能解释 parse-unparse 和 mmap() 的区别吗,假设mmap能够映射AST
>那就不需要parse了,但我也不熟悉。 mmap() vs read(buf) chunked
js Blob DataView 的封装
Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited
https://github.com/tree-sitter/node-tree-sitter
我有 1, (1), (1 20) 这样的递归模式要用 Perl 正则匹配
>
#rust #dontknow 离谱的循环
fn
#py
我想写类于Java 类型系统的类型检查器,请提供类型的数据模型
>很好地提示了TypeVariable,Method 等反射接口
请举几个函数式例子, 说明 check(def) 如何证明调用是有效的
> "g(x, x) = x * 2"; // 是无效
利用 Haskell data 编写类型的数据模型
>很长地细化了反射接口
请了解js的 PEG 和递归下降技术, 解释 num,str 的嵌套列表 和csv的PEG文法
>很成功举出可运行的示例+test
>可示例只观感上正确 ,且使用了PEG不支持的leftRec
既然有了解析器,借鉴lisp标准做一个 js 调用器,能实现对 (fun filterMap(xs f) ) 的定义,要支持 fun when let = 几函数
>听不懂
为什么你不太熟悉实现这些,但很会写 snake,tetris 这种js游戏代码呢?
>我利用我的内部知识和一些在线资源来拼凑出一个可运行的结果
在经济上, 程序员的工资完全取决于其工作的难度吗? 如果AI让难度变低,对编程界会有什么影响呢?一些人觉得AI掌握了他们在小圈子里独有的技术, 从而让这种技术廉价化了,你能举几个回应吗
>AI 可以帮助程序员提高效率、创造力和协作能力,让他们更容易解决复杂的问题,但可能会取代一些低层次或重复性的编程工作,导致一些程序员失业或降低收入
程序员需要不断地学习新的技术和知识,AI是要帮助他们更好地使用和发展他们的技术
有解析库支持在定义 parse 的同时对应地支持toString 吗? 基于递归下降算法如何让 list 文法同时支持parse和toStr (stringify,dumps) 呢
>没有,ANTLR有吗? 不知道咋做
几个支持unparse 的库: csv , xml2dict, pyast
传统的: https://pegjs.org/online ,jison
https://www.compart.com/en/unicode/plane
理论上来说,既然能解析一种文法, 就一定可以把生成的数据还原回来
>正确,还原的字符串可能和原始的字符串有一些细微的差别,比如空格,换行,注释
这种正反函数的概念,对 HTML 数据绑定也有效, 意思是能被 render() 就能被爬取, 你能举出例子吗
>不懂,但有人答过js怎么做数据绑定
你能解释 parse-unparse 和 mmap() 的区别吗,假设mmap能够映射AST
>那就不需要parse了,但我也不熟悉。 mmap() vs read(buf) chunked
js Blob DataView 的封装
Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited
https://github.com/tree-sitter/node-tree-sitter
我有 1, (1), (1 20) 这样的递归模式要用 Perl 正则匹配
>
(\d+|\((?R)+\)) 和 (?<R>\d+|\((?&R)(?:\s+(?&R))*\))
在$ pcretest
能校验配对,但很脏#rust #dontknow 离谱的循环
let c = loop {
if Q() {
break "answer";
} else {
break None;
}
};
fn
first(:Iter):Option = for x in list {break Some(x);}
else default {None}
so for, while, while let 该咋办?😒易放难收#py
for x in []: pass
else: return "没有"
duangsuse::Echo
#dev #life #plt #js https://tttttt.me/kotlin_cn/78844 #statement 不过还是很高兴, 如果我的设计都有可行性,以后读写 wav,bmp,class, json,css 这些文件结构就毫无难度了 最重要的是, 这些框架是统一的。我实际上从自己零散的设计稿,创建了广义的结构化数据模型 🥰 这种无论要做什么,都不需要学习新概念的Pythonic,就是我梦寐以求的。最讨厌折腾样版代码和API夹带的私货了。
#kt #build #dontknow 🤯居然不是默认输出纯java
freeCompilerArgs += [ '-Xno-call-assertions',
'-Xno-receiver-assertions',
'-Xno-param-assertions'
]
https://proandroiddev.com/kotlin-cleaning-java-bytecode-before-release-9567d4c63911
freeCompilerArgs += [ '-Xno-call-assertions',
'-Xno-receiver-assertions',
'-Xno-param-assertions'
]
https://proandroiddev.com/kotlin-cleaning-java-bytecode-before-release-9567d4c63911
Medium
Kotlin: cleaning Java bytecode before release
What’s is price of Kotlin null safety and how to remove additional bytecode
duangsuse::Echo
🤓 #moha #js #dev Van UI框架的作者是上海交大的
#js #recommend 框架🧰对比 https://component-party.dev/
https://unsuckjs.com/
https://js.coach/?collection=Vanilla+JS
https://jster.net/category/application-frameworks/
- 大列表,中文
- 前端小抄
#tool 各种在线设计师工具
#dontknow JQ 的
答:在2015就已经支持通过
解决了 issue
CDP/front_end/panels/event_listeners/EventListenersUtils
你可以在 chrome://inspect/#other 里看到Chrome如何查询这个
https://unsuckjs.com/
https://js.coach/?collection=Vanilla+JS
https://jster.net/category/application-frameworks/
- 大列表,中文
- 前端小抄
#tool 各种在线设计师工具
#dontknow JQ 的
$.on('li','click', fn)
明明在fn前包装了if判断,为什么还能解析到原位?答:在2015就已经支持通过
$._data($0,'events')
查询解包的函数注册解决了 issue
CDP/front_end/panels/event_listeners/EventListenersUtils
你可以在 chrome://inspect/#other 里看到Chrome如何查询这个
component-party.dev
Component Party
Web component JS frameworks overview by their syntax and features: Svelte 5, React, Vue 3, Angular Renaissance, Angular, Lit, Ember Octane, Solid.js, Svelte 4, Vue 2, Alpine, Ember Polaris, Mithril, Aurelia 2, Qwik, Marko, Aurelia 1
#design #dontknow
https://docle.github.io/2018/08/26/Why-Numbering-Should-Start-At-Zero/
Dijkstra: 在我们平时接触使用的大多数编程语言中,编号都是从 0 开始的。接受了这是一个惯例后,很少有人会去想为什么是从 0 开始?
为了表示区间 i=2 3 .. 12 可以写
a. 2 ≤ i < 13
b. 1 < i ≤ 12
c. 2 ≤ i ≤ 12
d. 1 ≤ i ≤ 13
哪个更适合作为标准?看一致性!
i=1..<12 的差正好是长度,也就是说,这样区间的列表正好能描述代码高亮,省得去算 A+1 ≤ i ≤ B
不过, i=0<..1 的差也是长度,但那样 range(3) 和 my_list[:3] 的长度就不直观了
C里,a[0]=*(a+0); a[rand()%n(a)] 用于选随机数-- (x%n)<n ; a.index(x) 没找到时是-1,正好能 suffix(s:="a.txt",x:="."); s[s.index(x)+1:]
(s[0:i], s[i:]) 更是能二分一个字符串
既然如此!为什么我要从1开始数? 因为常识。
假设你没学过编程,哪个更自然?
无论区间还是分割,都应当用专门的类型描述,典型的用例就是LRC/VTT字幕(二者的区别是lrc字幕时长可以不写)
如果用Range建模lrc文件,恐怕会很生硬
https://docle.github.io/2018/08/26/Why-Numbering-Should-Start-At-Zero/
Dijkstra: 在我们平时接触使用的大多数编程语言中,编号都是从 0 开始的。接受了这是一个惯例后,很少有人会去想为什么是从 0 开始?
为了表示区间 i=2 3 .. 12 可以写
a. 2 ≤ i < 13
b. 1 < i ≤ 12
c. 2 ≤ i ≤ 12
d. 1 ≤ i ≤ 13
哪个更适合作为标准?看一致性!
i=1..<12 的差正好是长度,也就是说,这样区间的列表正好能描述代码高亮,省得去算 A+1 ≤ i ≤ B
不过, i=0<..1 的差也是长度,但那样 range(3) 和 my_list[:3] 的长度就不直观了
C里,a[0]=*(a+0); a[rand()%n(a)] 用于选随机数-- (x%n)<n ; a.index(x) 没找到时是-1,正好能 suffix(s:="a.txt",x:="."); s[s.index(x)+1:]
(s[0:i], s[i:]) 更是能二分一个字符串
既然如此!为什么我要从1开始数? 因为常识。
-a [1 2 3]
(a first) == a#1
a#1 + a#2 == 3
a#1~2
a (inc 1 -2): (i) a#i
a=[1 2 3]
a.first == a.0
a.0 + a.1 == 3
a.(1~1)
inc(1, a.iLast-1): (i) a.i
let a = [1, 2, 3]
a.first == a[0]
a[0] + a[1] == 3
a[0:1]
a[0:-1]
假设你没学过编程,哪个更自然?
无论区间还是分割,都应当用专门的类型描述,典型的用例就是LRC/VTT字幕(二者的区别是lrc字幕时长可以不写)
如果用Range建模lrc文件,恐怕会很生硬
Docle の Blog
Why Numbering Should Start At Zero
前言在我们平时接触使用的大多数编程语言中,编号都是从 0 开始的。接受了这是一个惯例后,很少有人会去想为什么是从 0 开始?如果这是惯例,为什么不是其他的惯例呢?Edsger W. Dijkstra 教授的这个小备忘录也许可以解开我们的疑惑。 原文链接:http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html 译文为
#sql #dontknow https://avi.im/blag/2024/sqlite-facts/
>It is maintained by three people. They don’t allow outside contributions.
最崩不住的一条语法无检查
>It is maintained by three people. They don’t allow outside contributions.
CREATE TABLE t(value SPONGEBLOB) --- This is BLOB type!
最崩不住的一条语法无检查
avi.im
Collection of insane and fun facts about SQLite - blag
Some of the interesting and insane facts I learned about SQLite