在用户上传文件后,我们必须对图像进行一些额外的处理,例如调整大小并上传到S3.这可能需要多达10秒钟.显然我们是在后台完成的.但是,我们希望立即向用户显示结果页面,并简单地显示微调器,直到图像到达s3的永久家中.
我正在寻找一种方法来检测某个图像无法以交叉浏览器的方式正确加载(404).如果发生这种情况,我们希望使用JS在其位置显示一个微调器并每隔几秒重新加载一次图像,直到它可以从s3成功加载.
我一直在研究简单模板语言的解析器.我正在使用Ragel.
要求是适度的.我正在尝试找到可以嵌入输入字符串中任何位置的[[tags]].
我正在尝试解析一个简单的模板语言,可以在HTML中嵌入{{foo}}等标记.我尝试了几种方法来解析这个问题,但不得不求助于使用Ragel扫描程序并使用低效的方法,只将单个字符匹配为"全部捕获".我觉得这是错误的做法.我基本上滥用扫描仪的最长匹配偏差来实现我的默认规则(它只能是1个字符长,所以它应该永远是最后的手段).
%%{
machine parser;
action start { tokstart = p; }
action on_tag { results << [:tag, data[tokstart..p]] }
action on_static { results << [:static, data[p..p]] }
tag = ('[[' lower+ ']]') >start @on_tag;
main := |*
tag;
any => on_static;
*|;
}%%
Run Code Online (Sandbox Code Playgroud)
(用红宝石写的动作,但应该很容易理解).
How would you go about writing a parser for such a simple language? Is Ragel maybe not the right tool? It seems you have to fight Ragel tooth and nails if the syntax is …