duangsuse::Echo
#statement #dev #design 编程者像舞蹈编排者一样,就是什么时候做什么事情而已。 什么时候是指外部输入和环境变化带来的事件入口及传播;什么事情是指对数据的处理与判断。 编程就是总结物上之事的客观规律并加以主观控制,实际一步就是美感地设计代码/项目的结构和利用下层接口。程序的设计和科学一样,只要习惯了所处的这个死板的「世界」,明白目标的流程和时序/存储关键点、灵活复用代码,无论看起来多么复杂或强大的程序都能按部就班地设计出来! #functional 程序序列 生成/归纳 ,比如对第一次/第一项的特殊处理或重复语句…
编程者像舞蹈编排者一样,就是什么时候做什么事情而已。
什么时候是指外部输入和(内部)环境变化带来的事件入口及传播;什么事情是指对数据的处理(读写,生成,归纳)与判断。
编程就是总结物上之事的客观规律并加以主观控制,实际一步就是美感地设计代码/项目的结构和利用下层接口。
程序的设计和科学一样,只要习惯了所处的这个死板的「世界」,明白目标的流程和时序/存储关键点、灵活复用代码,
无论看起来多么复杂或强大的程序都能按部就班地设计出来!
🌝🤔很多时候大家看起来觉得很复杂的软件都是有套路的, Tab(notebook)&indicator ,可移动重组 Panel , drag&drop ,自定义渲染的子控件
项目保存是序列化、导入导出是表现形式互化,撤销重做是编辑栈,还有设置、按键编辑器什么的,
它们都是很常见的交互组成成分,对多线程的 desktop #gui 而言监听分派和 style 自定义可能没 mobile 麻烦,但是很多人还是不得不利用过低层/辣鸡封装的API定义这些东西,心疼
什么时候是指外部输入和(内部)环境变化带来的事件入口及传播;什么事情是指对数据的处理(读写,生成,归纳)与判断。
编程就是总结物上之事的客观规律并加以主观控制,实际一步就是美感地设计代码/项目的结构和利用下层接口。
程序的设计和科学一样,只要习惯了所处的这个死板的「世界」,明白目标的流程和时序/存储关键点、灵活复用代码,
无论看起来多么复杂或强大的程序都能按部就班地设计出来!
🌝🤔很多时候大家看起来觉得很复杂的软件都是有套路的, Tab(notebook)&indicator ,可移动重组 Panel , drag&drop ,自定义渲染的子控件
项目保存是序列化、导入导出是表现形式互化,撤销重做是编辑栈,还有设置、按键编辑器什么的,
它们都是很常见的交互组成成分,对多线程的 desktop #gui 而言监听分派和 style 自定义可能没 mobile 麻烦,但是很多人还是不得不利用过低层/辣鸡封装的API定义这些东西,心疼
duangsuse::Echo
编程者像舞蹈编排者一样,就是什么时候做什么事情而已。 什么时候是指外部输入和(内部)环境变化带来的事件入口及传播;什么事情是指对数据的处理(读写,生成,归纳)与判断。 编程就是总结物上之事的客观规律并加以主观控制,实际一步就是美感地设计代码/项目的结构和利用下层接口。 程序的设计和科学一样,只要习惯了所处的这个死板的「世界」,明白目标的流程和时序/存储关键点、灵活复用代码, 无论看起来多么复杂或强大的程序都能按部就班地设计出来! 🌝🤔很多时候大家看起来觉得很复杂的软件都是有套路的, Tab(…
#linux 🌚 机房里发现 vmware 什么华清远见开发环境, Ubuntu 12 ,估计自带的 arm gcc / Android4.x source tree 嵌入式开发
看到了一些 C 语言示例(包括 inet bind server 的) 就想传一下,共享桥接网络和独占USB设备都可以用,但辣鸡 Ubuntu 没有自带 gvfs-mtp 竟不能用数据线-_-||,还好 SMB 网络访问正常, host 机网络共享中心开访问,再设置下文件夹写权限果然能用了
看到了一些 C 语言示例(包括 inet bind server 的) 就想传一下,共享桥接网络和独占USB设备都可以用,但辣鸡 Ubuntu 没有自带 gvfs-mtp 竟不能用数据线-_-||,还好 SMB 网络访问正常, host 机网络共享中心开访问,再设置下文件夹写权限果然能用了
https://t.me/rynif/22773 #life #China 现在的应用就是却人类友好设计了…… 对设计便利的重视真的和个人技术水平没有一点关系,真的。
有的人即便技术水平高,但他不能在意到易使用化的编程精力分配,或者改进变量刷新的架构上的问题,我觉得如果一个人算法和数学很好但对优化软件的基本流程没有长进,是太可惜的。
有的人即便技术水平高,但他不能在意到易使用化的编程精力分配,或者改进变量刷新的架构上的问题,我觉得如果一个人算法和数学很好但对优化软件的基本流程没有长进,是太可惜的。
Telegram
::rynco::army_of_two
“北斗掉线”事件背后:不懂人情的技术是残酷的
2021-04-09 13:43 #奇客故事
作者|高飞 奇客故事(ID:cybergushi)
一位货车司机,因为北斗掉线而选择自杀结束生命,这是「货拉拉用户跳车事件」之后,货车行业的第二起科技事故。
「货拉拉事件」后续,是货拉拉上线了一系列安全整改措施。从公开资料来看,包括行程录音、行驶记录仪、逾期预警等。
但很遗憾,货拉拉的整改措施,其实对司机和乘客的保护作用并不会太大——为什么这么说呢,因为这是由目前城市的暴力犯罪类型所决定的。
由于技…
2021-04-09 13:43 #奇客故事
作者|高飞 奇客故事(ID:cybergushi)
一位货车司机,因为北斗掉线而选择自杀结束生命,这是「货拉拉用户跳车事件」之后,货车行业的第二起科技事故。
「货拉拉事件」后续,是货拉拉上线了一系列安全整改措施。从公开资料来看,包括行程录音、行驶记录仪、逾期预警等。
但很遗憾,货拉拉的整改措施,其实对司机和乘客的保护作用并不会太大——为什么这么说呢,因为这是由目前城市的暴力犯罪类型所决定的。
由于技…
duangsuse::Echo
https://t.me/rynif/22773 #life #China 现在的应用就是却人类友好设计了…… 对设计便利的重视真的和个人技术水平没有一点关系,真的。 有的人即便技术水平高,但他不能在意到易使用化的编程精力分配,或者改进变量刷新的架构上的问题,我觉得如果一个人算法和数学很好但对优化软件的基本流程没有长进,是太可惜的。
明明能做到很麻烦的事情,使用了不常见的特例化 标准数据结构API ,能为高复用可配置的标杆结构套上程序进行解释,却没有重视一些基础的使用流程上几行代码就能实现的 trick;反而是一些只会简单 runtime-Intrinsic&C-data 的人设计的程序便于调参和情景适应,明明就只差一步啊,可是不被意识到这些细节啊。
#dev 物理命名法 (前缀?) 涵义😋
只有写一段代码重复写到无聊但从不写冗余代码的人能理解这种做法的意义。
实际一点的活用见上
a b : paired item
c: char
d: step/dict
e: element; ev: event; ex: exception
f: math func/file; fp: file path
g: graphics
h: height
i: index
j: 2nd dim index
k: ratio/key
l: distance
m: 2nd dim size
n: dim size/count
o: simple object; op: subroutine closure
p: predicate
q:
r: degree
s: str/stream
t: target/text
u:
v: value (of k)
w: width
x y z: left top pos/list item
0: base or elder element
1: new or stop value
只有写一段代码重复写到无聊但从不写冗余代码的人能理解这种做法的意义。
实际一点的活用见上
a b : paired item
c: char
d: step/dict
e: element; ev: event; ex: exception
f: math func/file; fp: file path
g: graphics
h: height
i: index
j: 2nd dim index
k: ratio/key
l: distance
m: 2nd dim size
n: dim size/count
o: simple object; op: subroutine closure
p: predicate
q:
r: degree
s: str/stream
t: target/text
u:
v: value (of k)
w: width
x y z: left top pos/list item
0: base or elder element
1: new or stop value
Telegram
duangsuse::Echo
#statement #dev #pl 补充一句,我用的不是匈牙利命名法(这个名字本身怎么那么狭隘……匈牙利人常用么)
匈牙利命名法是 property(常量/类属性/可变量)+简写type+描述
我的命名法是在长期重构和编程中自创的,大小写分词(camel/snake)基于 Kotlin 的规范,但在特定子程序(涉及物理量/同名不同形式量 比较多的)会有更清晰的模式,甚至可以替代类型声名,我管它叫『物理命名法』
匈牙利命名法重视类型前缀,物理命名法却重视类型本身——因为很多作用域范围内同类型只会有一个值,或一个…
匈牙利命名法是 property(常量/类属性/可变量)+简写type+描述
我的命名法是在长期重构和编程中自创的,大小写分词(camel/snake)基于 Kotlin 的规范,但在特定子程序(涉及物理量/同名不同形式量 比较多的)会有更清晰的模式,甚至可以替代类型声名,我管它叫『物理命名法』
匈牙利命名法重视类型前缀,物理命名法却重视类型本身——因为很多作用域范围内同类型只会有一个值,或一个…
#dev #life #js #web #gui 咱要实现一个 Tab(notebook) 控件。
A: 今日校园的 tab 也要做,这个难度可就不小了
B: 无非是一个 nav 后接个大横列 div ,初始全隐+切首页,切换隐:active+设置新:active 加减 hidden
onclick 的 nav span 元素添加 no 属性,直接和后面横列 div.children 1:1 对应
A: 那么下面的动画条呢?
B: 可以用 canvas 做 background-image repeat-x 再调 offset-x 吧
A: 貌似不可以吧。背景图是不能 overflow 显示的,必须做成单一元素
B: 那就做成 div 条盒子,设置 position:absolute 再切 left width 的 transition 就好了
A: 我想关键的问题是,不同页面间有点元素要复用…… 这就非常头疼
B: 无非就是第二层嵌套是不是 for(pagedIndices)showHide 操作的问题了,我觉得只能做成 div.replacer 的形式,而不能是 tag.copy-to-keep ,当然那样或许性能好些?
A: copy 的问题在于不知在哪重新插入,如何在 DOM 数据上提供这种指定接口,而且恢复也比较麻烦。
B: 2h 写了一个 https://64f1aq.coding-pages.com/HTMLs/school/_2/tabs.html
我用的 plan B,毕竟多两个 node 有点不爽,而且不用 replacer 也能实现 cloneNode 补贴式的x滑动
提供的 api 基于 childNodes[attr("no")] 和 e.groupBy(attr("tabs"))
A: 今日校园的 tab 也要做,这个难度可就不小了
B: 无非是一个 nav 后接个大横列 div ,初始全隐+切首页,切换隐:active+设置新:active 加减 hidden
onclick 的 nav span 元素添加 no 属性,直接和后面横列 div.children 1:1 对应
A: 那么下面的动画条呢?
B: 可以用 canvas 做 background-image repeat-x 再调 offset-x 吧
A: 貌似不可以吧。背景图是不能 overflow 显示的,必须做成单一元素
B: 那就做成 div 条盒子,设置 position:absolute 再切 left width 的 transition 就好了
A: 我想关键的问题是,不同页面间有点元素要复用…… 这就非常头疼
B: 无非就是第二层嵌套是不是 for(pagedIndices)showHide 操作的问题了,我觉得只能做成 div.replacer 的形式,而不能是 tag.copy-to-keep ,当然那样或许性能好些?
A: copy 的问题在于不知在哪重新插入,如何在 DOM 数据上提供这种指定接口,而且恢复也比较麻烦。
B: 2h 写了一个 https://64f1aq.coding-pages.com/HTMLs/school/_2/tabs.html
我用的 plan B,毕竟多两个 node 有点不爽,而且不用 replacer 也能实现 cloneNode 补贴式的x滑动
提供的 api 基于 childNodes[attr("no")] 和 e.groupBy(attr("tabs"))
https://github.com/emmetio/stream-reader #js #parsing
Emmetio 这个组织给了我一种很怀念的感觉。明明做过那么多,我却仍然不记得 () 用一个栈是该怎么解析的,貌似要手动维护栈顶被嵌套吧。
其实它做了那么多,我觉得影响也蛮大的,但 64 个项目它就只火了一个,但真的可以称之为前端码农与工程师的分界线,一个可以被称为『业界锚点』的项目,都是5年多前了,他用的一些 doc.fragment 这种 API 我都不熟悉。
你会发现整个社区基本都是一个人维护的,给人一种普通人历经挫折终于成功重构了自己和恶心的领域惯例的感觉。
ParserKt 是 peek&consume 的绝对纯字符流,可玩多了「魔法」和「极简」后我也想把 parser 的操作回归工程常规,毕竟它本来就是负责把 str 与 obj,list 数据对应的,不可能脱离工程逻辑风格,各种内部 API 上低限制多变量也值得尝试,能省代码量。
从项目名也能看到很多 expander, matcher, parser 和 binding,plugin; analyzer,resolver,formatter 等杂项工具
当然,其实他的技术也未必拔尖(😒可是对那些连 substr(i,n) slice(i0,i1) index 计算都不习惯的人来说这算是神), CSS 解析器只弄了数据侧框架(约等于没搞明白文本表示和程序/数据结构的关系),许多明明只是 snippet 级的算法还专门建立 repo 去存。
但是啊。
我真觉得这种「不务正业」但做到的事却最终从根本上影响了「正业」的人是很有趣的
至少他们是那种明白什么是重要,什么可以省略的人,在越来越嘈杂的 Web 这种心情很可贵。
我最近也在写一个 emet.js,当然它目前并没应用上取前缀解析子程序,祈祷我对所谓「模式」的理解能支持住它吧,当然,哪怕完全不用解析器技术单靠 API 设计我也能让 DOM/JS 更好融合在一起,可果然是新东西好玩一些啊。😋
Emmetio 这个组织给了我一种很怀念的感觉。明明做过那么多,我却仍然不记得 () 用一个栈是该怎么解析的,貌似要手动维护栈顶被嵌套吧。
其实它做了那么多,我觉得影响也蛮大的,但 64 个项目它就只火了一个,但真的可以称之为前端码农与工程师的分界线,一个可以被称为『业界锚点』的项目,都是5年多前了,他用的一些 doc.fragment 这种 API 我都不熟悉。
你会发现整个社区基本都是一个人维护的,给人一种普通人历经挫折终于成功重构了自己和恶心的领域惯例的感觉。
ParserKt 是 peek&consume 的绝对纯字符流,可玩多了「魔法」和「极简」后我也想把 parser 的操作回归工程常规,毕竟它本来就是负责把 str 与 obj,list 数据对应的,不可能脱离工程逻辑风格,各种内部 API 上低限制多变量也值得尝试,能省代码量。
从项目名也能看到很多 expander, matcher, parser 和 binding,plugin; analyzer,resolver,formatter 等杂项工具
当然,其实他的技术也未必拔尖(😒可是对那些连 substr(i,n) slice(i0,i1) index 计算都不习惯的人来说这算是神), CSS 解析器只弄了数据侧框架(约等于没搞明白文本表示和程序/数据结构的关系),许多明明只是 snippet 级的算法还专门建立 repo 去存。
但是啊。
我真觉得这种「不务正业」但做到的事却最终从根本上影响了「正业」的人是很有趣的
至少他们是那种明白什么是重要,什么可以省略的人,在越来越嘈杂的 Web 这种心情很可贵。
我最近也在写一个 emet.js,当然它目前并没应用上取前缀解析子程序,祈祷我对所谓「模式」的理解能支持住它吧,当然,哪怕完全不用解析器技术单靠 API 设计我也能让 DOM/JS 更好融合在一起,可果然是新东西好玩一些啊。😋
GitHub
GitHub - emmetio/stream-reader: Reads text as stream
Reads text as stream. Contribute to emmetio/stream-reader development by creating an account on GitHub.
duangsuse::Echo
#dev #life #js #web #gui 咱要实现一个 Tab(notebook) 控件。 A: 今日校园的 tab 也要做,这个难度可就不小了 B: 无非是一个 nav 后接个大横列 div ,初始全隐+切首页,切换隐:active+设置新:active 加减 hidden onclick 的 nav span 元素添加 no 属性,直接和后面横列 div.children 1:1 对应 A: 那么下面的动画条呢? B: 可以用 canvas 做 background-image repeat…
#life #dev #sports #game (没错我没有发错地 ←_←)
台球其实没有那么多诀窍,没有什么能算三四次碰撞以后的人先赢,只是把第一次击球的角度力度控制到分毫不差——因为丝毫的偏差都可能让机会球变成困难球,注意并学习碰球上的位置,不要给对方一次机会。
设计各种能用程序描述的东西,未必要做到无需调试而一次通过。像 Chrome DevTools 一样方便的工具也很重要,善用 watch 切分并预览闭包调用方/关键数据构造处的情况。
多用 filter map groupBy flatten 等函数式序列操作简化代码,把难以实现的程序拆成子项目用简短的示例数据击破,利用并相信自己熟悉的API和既定子程序,稍微调试就能完成早已确信能成功的操作算法!
台球其实没有那么多诀窍,没有什么能算三四次碰撞以后的人先赢,只是把第一次击球的角度力度控制到分毫不差——因为丝毫的偏差都可能让机会球变成困难球,注意并学习碰球上的位置,不要给对方一次机会。
设计各种能用程序描述的东西,未必要做到无需调试而一次通过。像 Chrome DevTools 一样方便的工具也很重要,善用 watch 切分并预览闭包调用方/关键数据构造处的情况。
多用 filter map groupBy flatten 等函数式序列操作简化代码,把难以实现的程序拆成子项目用简短的示例数据击破,利用并相信自己熟悉的API和既定子程序,稍微调试就能完成早已确信能成功的操作算法!
#js #web 我草我终于记起来下载文件blob 好像是 location="blob+base64:"+atob() 那种,然后我在 doc.styleSheets 里改 rule.style 应该能反映在 Ctrl+S 保存网页里吧!
做这两个API就能快速完成网页截图和 SinglePage ff扩展 html 保存 css url() 的问题了
做这两个API就能快速完成网页截图和 SinglePage ff扩展 html 保存 css url() 的问题了
520.py
1.3 KB
#python 520小白性质秀操作日期计算脚本 https://pastebin.ubuntu.com/p/rshM7NfZKY/
#windows #js qv2ray.net install doc (#powersh)
choco PM:
另,支持 form widgets 和 Word 主题的 html 编辑器 fckeditor 的 samples 告诉我,原来 ff 的 about:config 里可以调 security.fileuri.strict_origin 看本地项目的啊😒 可惜 ff 好像不能用 svg 和 es6
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # Allow script execution iwr -useb get.scoop.sh | iex choco PM:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) 另,支持 form widgets 和 Word 主题的 html 编辑器 fckeditor 的 samples 告诉我,原来 ff 的 about:config 里可以调 security.fileuri.strict_origin 看本地项目的啊😒 可惜 ff 好像不能用 svg 和 es6
#JS #Web #tricks 我检查了一下各种网页截屏的方法,可以用 phantomjs 或者 Selemium 通过(模拟)浏览器 api 也可以通过 ff 类的 ctx.drawWindow 、 svg remoteObject 或 dom-to-png , 我觉得最好的方法大概是在 ff 里利用 browser.tabs API ,不需要接触 cdp 的 开发者工具协议 什么的略内部 API
dataUriToBlob=|>splitNth(",",1)|atob|Uint8Array.from(it,|>it.charCodeAt(0))|new Blob([it],type:"image/png")
with(browser)
await tabs.captureVisibleTab()|dataUriToBlob|URL.createObjectURL|downloads.download(url:it,filename:"screen.png")MDN Web Docs
tabs.captureTab() - Mozilla | MDN
Creates a data URL encoding the image of an area of the given tab. You must have the <all_urls> permission to use this method.
The account of the user that owns this channel has been inactive for the last 5 months. If it remains inactive in the next 18 days, that account will self-destruct and this channel may no longer have an owner.
duangsuse::Echo
@duangsuse
🙏谢谢大家的关心😅
尽管小号 @duangsuse1 已经默认3个月销了
学校里,我1年前老设备连线登录也直接数据清空了
桌面版小号也直接销了,说明tg的确很重视安全,把我sd卡的歌都删了,就因为我旧版客户端“不小心”连上了服务,草…… 后来还以为是客户端版本问题,发现确实是设备认证弱可信。
感谢 @mivik233 在某站提醒我,以后我会偶尔更新提纲性强点的内容,感谢大家的不离不弃😂
感觉也变了许多,microUSB 变少数了、输入法大写锁定默认了、安卓输入框api不统一了,以前不喜欢的边框手势习惯了……
尽管小号 @duangsuse1 已经默认3个月销了
学校里,我1年前老设备连线登录也直接数据清空了
桌面版小号也直接销了,说明tg的确很重视安全,把我sd卡的歌都删了,就因为我旧版客户端“不小心”连上了服务,草…… 后来还以为是客户端版本问题,发现确实是设备认证弱可信。
感谢 @mivik233 在某站提醒我,以后我会偶尔更新提纲性强点的内容,感谢大家的不离不弃😂
感觉也变了许多,microUSB 变少数了、输入法大写锁定默认了、安卓输入框api不统一了,以前不喜欢的边框手势习惯了……
duangsuse::Echo
🙏谢谢大家的关心😅 尽管小号 @duangsuse1 已经默认3个月销了 学校里,我1年前老设备连线登录也直接数据清空了 桌面版小号也直接销了,说明tg的确很重视安全,把我sd卡的歌都删了,就因为我旧版客户端“不小心”连上了服务,草…… 后来还以为是客户端版本问题,发现确实是设备认证弱可信。 感谢 @mivik233 在某站提醒我,以后我会偶尔更新提纲性强点的内容,感谢大家的不离不弃😂 感觉也变了许多,microUSB 变少数了、输入法大写锁定默认了、安卓输入框api不统一了,以前不喜欢的边框手势习惯了……
额虽然tg提醒我换号,但注册-销号也消耗手机号的(occured..MsgID都没翻译);旧版客户端登录验证码都看不到,但那是我唯一的会话了 我怕更新不好无root也没法重装或暴力拿authToken,还好有Device>Scan QR
见
https://core.telegram.org/api/obtaining_api_id
[api](https://core.telegram.org/method/auth.exportLoginToken)
有趣的是tg有两个类似OAuth的功能,Passport和bot的『无缝登录』 https://core.telegram.org/api/url-authorization
好像前者是涉及加密PM这类的,所以和API id不一样
当然Scan QR还是和大部分一样,让有令牌设备确认登录(不是二维码化令牌噢
有趣的是小米的编辑框不能触发原来的选区菜单,于是我在“原生”客户端甚至享受不到md排版,且无法在语言设置里修复,科技退步😂
见
https://core.telegram.org/api/obtaining_api_id
[api](https://core.telegram.org/method/auth.exportLoginToken)
有趣的是tg有两个类似OAuth的功能,Passport和bot的『无缝登录』 https://core.telegram.org/api/url-authorization
好像前者是涉及加密PM这类的,所以和API id不一样
当然Scan QR还是和大部分一样,让有令牌设备确认登录(不是二维码化令牌噢
有趣的是小米的编辑框不能触发原来的选区菜单,于是我在“原生”客户端甚至享受不到md排版,且无法在语言设置里修复,科技退步😂
core.telegram.org
Creating your Telegram Application
How to get your application identifier and create a new Telegram app.