duangsuse::Echo
711 subscribers
4.23K photos
127 videos
583 files
6.44K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
草(是不是之前定义的就不是自动内联优化的了 #cplusplus #ce
Forwarded from Phonograph (Ralph 萌新喵)
草???
果然每次翻 cppreference 都会有惊喜
第一次听说内联变量
#linux #sysadmin #Telegram #scripting 草,上面还有人pam Telegram认证才能ssh登录的
Forwarded from Tindy | SIGHUP
我bot还接受 /shutdown_all_instances /ufw_panic_on
#ce #plt #JS #DontKnow#JavaScript 的一个 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 后是 string

other:
如果返回的是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 什么的也会吧:

for (let i of [1,2]) try{break} finally {console.log(i)} //1
看来实现编译器的人必须深刻认识各种控制流结构,这得先执行 finally 块,才能真的 return/break ... 不过这大丈夫吗
finally 块的词法(变量)上下文好像和 try 是一起的,但如果能引用 try 内定义的变量,会不会 access to uninitialized...
https://lab.xecades.xyz/Fourier/?img=5
感觉自己的智商严重需要重构了…… 看了下基本绘制结构我明白了,当时找 img= 参数引用的时候想当然查 (n + 1) 这个表达式,三次没找到后才在已发现 loadPageVar() 后明白编号到零基数组引数是 -1,明显没过脑子(或者记性不好/数性太差),就凭这?心理各种崩溃。

是用 setInterval (timer) 累积dt 更新的(缺点 dt 是常量)
generate(t) 基于 getSvgInfo() (load onto <svg> tag)和 getDotInfo() (use style "offset-distance"&canvas.origin)
整体代码质量较好,非常简短而整洁,建立了 Axiscomplex 的 class,helper(common abst.)/canvas/main logic 三文件符合拆分直觉,命名和算法封装方式偏 C 化(静态指定子程序输出的目标存储空间,对应其参数也是写死的;即便程序生命周期仅调用一次)

待会重构下(也只能是拿 #TypeScript 了),算是安抚可怜的我…… 😭
#Telegram #Java #Android 竟然 1M 多……
#Windows #tgtext
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 的功能了
大佬也有过找这种接口的时候啊
duangsuse::Echo
#Linux #cplusplus https://file.xecades.xyz/Linux/ 这个写的有 ANSI escape, curses 和 tcasetattr, ioctl 在 Linux 下 nonblocking-getchar 和 get terminal size 的功能了 大佬也有过找这种接口的时候啊
#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, 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
This media is not supported in your browser
VIEW IN TELEGRAM