Forwarded from Tindy | SIGHUP
我bot还接受 /shutdown_all_instances /ufw_panic_on
#ce #plt #JS #DontKnow 在 #JavaScript 的一个
(其中 fetch 返回一个 Promise,且这个 Promise 一定是成功的)
duangsuse:
await 的话等价 yield 执行权给 awaiter ,成功了 return it ,大概是 Promise<String> ?
reply:
正常 async 函数返回值也是
other:
如果返回的是promise那么还得await或是then
reply:
并不需要,Promise 套娃是会自动解开的
duangsuse:
[In reply to duangsuse]
呃……想起来了,async awaiter 其实会自动 await yield 的 Promise ,而 return 也是一种 yield
duangsuse:
[In reply to reply]
duangsuse:
[In reply to duangsuse]
亦可简写为
果然是 try-catch 时控制流易跑偏……看来在协程continuation的实现方面结构化异常处理需要注意啊
duangsuse:
[In reply to reply]
感觉你这个和举的例子有点区别啊…… 举的例子里 return 是实际执行的最后一条语句
第一个…… 不对,看起来是我默认错了
最后一行和实际末语句是有区别的,如在
尾调用优化也是
duangsuse, [13.01.21 11:06]
try {} 里的 return 语句居然还能前置执行 finally {} ,涨知识了
之前哪里能用到这么多 try 块……
await 休眠当前函数实现的不错,看来这个问题是问“控制流什么方法可以在 return 前加逻辑”啊
回答本身是执行顺序问题。如果直接 return Promise 会被 awaiter 处理,类型上也没错
async function 中,请问在什么情况下 return fetch(...) 和 return await fetch(...) 会有区别?(其中 fetch 返回一个 Promise,且这个 Promise 一定是成功的)
duangsuse:
async function 相当于一个可带 awaiter 的 function* ,封装为 Promise
直接 return Promise 大概会得到二层的这个await 的话等价 yield 执行权给 awaiter ,成功了 return it ,大概是 Promise<String> ?
reply:
正常 async 函数返回值也是
Promise<string> 哦(注: fetch() resolve 后是 stringother:
如果返回的是promise那么还得await或是then
reply:
并不需要,Promise 套娃是会自动解开的
duangsuse:
[In reply to duangsuse]
呃……想起来了,async awaiter 其实会自动 await yield 的 Promise ,而 return 也是一种 yield
duangsuse:
[In reply to reply]
async function op1() { return Promise.resolve(100); }
async function op2() { return 100; }
for (let op of [op1,op2]) op().then(console.log); //100 x2
function foldN(n, op, x) { var acc=x; for (var i=0;i<n; i++) {acc = op(acc);} return acc; }
foldN(4, (x) => Promise.resolve(x), 100).then(console.log)
reply:try { return op1(); } finally { op2(); }
里 op1() 先执行try { return await op1(); } finally { op2(); }
里 op2() 先执行duangsuse:
[In reply to duangsuse]
亦可简写为
const puts=console.info;
const op1 = async()=>Promise.resolve(100), op2 = async()=>100;
for (let op of [op1,op2]) op().then(puts);
foldN(4, v=>Promise.resolve(v), 100).then(puts);另外一般内部实现的 awaiter 亦可这么定义:
function __onestep(gen) {
let {value, done} = gen.next();
if (!done && value instanceof Promise) value.then(x => __onestep(gen.next(x)) );
else return value;
}
function __awaiter(gen) { return Promise((resolve, reject) => { resolve(__onestep(gen)); }; }
未实现 reject果然是 try-catch 时控制流易跑偏……看来在协程continuation的实现方面结构化异常处理需要注意啊
duangsuse:
[In reply to reply]
感觉你这个和举的例子有点区别啊…… 举的例子里 return 是实际执行的最后一条语句
第一个…… 不对,看起来是我默认错了
最后一行和实际末语句是有区别的,如在
() => { return 1; print(); } 里。尾调用优化也是
return thisOp(); 是可变成循环, return thisOp()+1; 仍需保留调用栈duangsuse, [13.01.21 11:06]
try {} 里的 return 语句居然还能前置执行 finally {} ,涨知识了
之前哪里能用到这么多 try 块……
await 休眠当前函数实现的不错,看来这个问题是问“控制流什么方法可以在 return 前加逻辑”啊
回答本身是执行顺序问题。如果直接 return Promise 会被 awaiter 处理,类型上也没错
duangsuse::Echo
#ce #plt #JS #DontKnow 在 #JavaScript 的一个 async function 中,请问在什么情况下 return fetch(...) 和 return await fetch(...) 会有区别? (其中 fetch 返回一个 Promise,且这个 Promise 一定是成功的) duangsuse: async function 相当于一个可带 awaiter 的 function* ,封装为 Promise 直接 return Promise 大概会得到二层的这个…
一开始就应往协程阻塞(await) 和非阻塞(return&awaited by async awaiter) 上想
估计不止 try-finally 里的 return 会前置跳转到 finally {} ,break 什么的也会吧:
看来实现编译器的人必须深刻认识各种控制流结构,这得先执行 finally 块,才能真的 return/break ... 不过这大丈夫吗
finally 块的词法(变量)上下文好像和 try 是一起的,但如果能引用 try 内定义的变量,会不会 access to uninitialized...
估计不止 try-finally 里的 return 会前置跳转到 finally {} ,break 什么的也会吧:
for (let i of [1,2]) try{break} finally {console.log(i)} //1 看来实现编译器的人必须深刻认识各种控制流结构,这得先执行 finally 块,才能真的 return/break ... 不过这大丈夫吗
finally 块的词法(变量)上下文好像和 try 是一起的,但如果能引用 try 内定义的变量,会不会 access to uninitialized...
Forwarded from duangsues.is_a? SaltedFish
https://lab.xecades.xyz/Fourier/?img=5
感觉自己的智商严重需要重构了…… 看了下基本绘制结构我明白了,当时找 img= 参数引用的时候想当然查
是用
整体代码质量较好,非常简短而整洁,建立了
待会重构下(也只能是拿 #TypeScript 了),算是安抚可怜的我…… 😭
感觉自己的智商严重需要重构了…… 看了下基本绘制结构我明白了,当时找 img= 参数引用的时候想当然查
(n + 1) 这个表达式,三次没找到后才在已发现 loadPageVar() 后明白编号到零基数组引数是 -1,明显没过脑子(或者记性不好/数性太差),就凭这?心理各种崩溃。是用
setInterval (timer) 累积dt 更新的(缺点 dt 是常量)generate(t) 基于 getSvgInfo() (load onto <svg> tag)和 getDotInfo() (use style "offset-distance"&canvas.origin)整体代码质量较好,非常简短而整洁,建立了
Axis 和 complex 的 class,helper(common abst.)/canvas/main logic 三文件符合拆分直觉,命名和算法封装方式偏 C 化(静态指定子程序输出的目标存储空间,对应其参数也是写死的;即便程序生命周期仅调用一次)待会重构下(也只能是拿 #TypeScript 了),算是安抚可怜的我…… 😭
#JS #web #drawing https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Transformations
MDN Web Docs
Transformations - Web APIs | MDN
Earlier in this tutorial we've learned about the canvas grid and the coordinate space. Until now, we only used the default grid and changed the size of the overall canvas for our needs. With transformations there are more powerful ways to translate the origin…
#Windows #tgtext
LcdDem:
wsript,cscript是啥
[In reply to LcdDem]
Win 内置的 JS + VBS 解释器
当然那个 JS 解释器非常残废
ES5 说不定都不全
LiangXiang Shen:
没有异步,没有xhr
那就是给 BAT 写扩展同样没什么用
六七年前贴吧整这些东西整的热火朝天,现在全冷了
你甚至可以把 HTML 和 Batch 混写
同一个文件 cmd.exe 和 mshta.exe 都能开
LcdDem:
wsript,cscript是啥
[In reply to LcdDem]
Win 内置的 JS + VBS 解释器
当然那个 JS 解释器非常残废
ES5 说不定都不全
LiangXiang Shen:
没有异步,没有xhr
那就是给 BAT 写扩展同样没什么用
六七年前贴吧整这些东西整的热火朝天,现在全冷了
你甚至可以把 HTML 和 Batch 混写
同一个文件 cmd.exe 和 mshta.exe 都能开
#Linux #cplusplus https://file.xecades.xyz/Linux/
这个写的有 ANSI escape, curses 和 tcasetattr, ioctl 在 Linux 下 nonblocking-getchar 和 get terminal size 的功能了
大佬也有过找这种接口的时候啊
这个写的有 ANSI escape, curses 和 tcasetattr, ioctl 在 Linux 下 nonblocking-getchar 和 get terminal size 的功能了
大佬也有过找这种接口的时候啊
duangsuse::Echo
#Linux #cplusplus https://file.xecades.xyz/Linux/ 这个写的有 ANSI escape, curses 和 tcasetattr, ioctl 在 Linux 下 nonblocking-getchar 和 get terminal size 的功能了 大佬也有过找这种接口的时候啊
#Python #crawler 爬虫全部文件的小脚本
extractinfo.py: #code
没有移除 .. 等特殊路径
mkdir -p craw/xecades_files/
wget -r -nH https://file.xecades.xyz/ python extractinfo.py `find -type d|xargs`实现(元素数据格式 table, 实际
tr=li; td[]=css(.row)):extractinfo.py: #code
from bs4 import BeautifulSoup
def scrapeTable(e, css_tr, css_td, transform=lambda e: e.text.strip()):
return [list(map(transform, row.select(css_td))) for row in e.select(css_tr)]
from sys import argv
from os import path, linesep; colsep = ": "
for dfp in argv[1:]:
with open(path.join(dfp,"index.html"), "r") as f:
eDir = BeautifulSoup(f.read(), features="lxml").select_one("#directory-listing")
items = scrapeTable(eDir, "li .row", "span")
with open(path.join(dfp, "index.txt"), "w") as fOut: fOut.write(linesep.join([colsep.join(row) for row in items])) 没有移除 .. 等特殊路径
duangsuse::Echo
#Python #crawler 爬虫全部文件的小脚本 mkdir -p craw/xecades_files/ wget -r -nH https://file.xecades.xyz/ python extractinfo.py `find -type d|xargs` 实现(元素数据格式 table, 实际 tr=li; td[]=css(.row)): extractinfo.py: #code from bs4 import BeautifulSoup def scrapeTable(e, css_tr…
cat `find -name index.txt`|awk -F: '{gsub("^\\s","",$2);if($2!="-")print($2.":", $1)}' #dalao 不得不说,真的很硬核: #math #statics #signal #web #js #drawing #linux #flash #game
元胞自动机 | 康威生命游戏(零玩家)..: LIFE.cpp
[停止更新] 它存在的意义就是方便我复制一些代码片段..: TextInputer.cpp
生命游戏(彩色): LIFE
并没有用(ANSI Terminal,ncurses): TextInputer
获取键值(termios.h): GetKeyDown.cpp
获取窗口大小(ioctl,TIOCWINSZ,struct winsz)..: GetWindowSize.cpp
打方块swf小游戏(2x ping-pong bar, with intro text/ball animation): Block
初二做的小游戏 | 当时火遍了全校: Block.swf (在线) - 这玩意声音有点大 所以先做好心理准备
模拟蓝屏(win7): BlueScreen
假装自己电脑蓝屏了 | 恶搞: BlueScreen.html (Pic.png)
神经网络 5%/100% 数据库: 5TestData.txt, 100TestData.txt
MNIST csv数据包: MNIST.7z
英语单词数据库: Database.txt
顾名思义: 天河二号申请表.docx
挺好(: 原子弹制作从入门到精通.pdf
更好(..: 有关苛性氢的危害的报告.pdf
#algorithm #cplusplus
AC自动机算法: AC Automaton.cpp
生成ASCII(sleep&print)动画: ASCII.cpp
数据测试器(<ctime> clock()函数) | 然而只能获得每次允许的耗时: DataTester.cpp
两种最大公倍数的求法: GCD.cpp
吉姆拉尔森计算公式(估计是位运算...) | 计算今天星期几: Kim Larsen.cpp
KMP算法: KMP Search.cpp
曼德勃罗集(Mandelbrot)的控制台写法: Mandelbrot.cpp
Manacher回文子串: Manacher Palindrome.cpp
手动开平方根(实现为部分函数): Manual Sqrt.cpp
线段树: Segment Tree.cpp
泰勒展开求 sinHome: Taylor Sin.cpp
模板(懒 (OIer意味上的): template.cpp
我是真羡慕那个初二flash游戏火遍全校的,反正以我的水平,那时候,是做不到吧。(哭晕的是目前也未必能做到,很多时候项目模块管理都能卡死了 别说算法和高端接口)
最令这个大佬自豪的是整个博客的框架是他学 HTML/JS/CSS 三天后写出来的,我觉得非常可以,博客就是要像坟墓一样简洁,因为最终才能意识到的真理往往是简单的,真
草我什么时候才能把自己的 LiteratePy 博客搞出来
最令这个大佬自豪的是整个博客的框架是他学 HTML/JS/CSS 三天后写出来的,我觉得非常可以,博客就是要像坟墓一样简洁,因为最终才能意识到的真理往往是简单的,真
草我什么时候才能把自己的 LiteratePy 博客搞出来