问候,
我正在研究一个基于JS的应用程序,它可以执行一些复杂的工作并记录一些信息(实际上,多达数百行)<div>
.
我的目标是有一个"保存日志"按钮,触发浏览器的下载对话框以保存我的日志记录内容<div>
.
更简洁地说,这些是此功能的要求:
text/plain
,因此浏览器可以建议默认操作(如"在记事本上打开"),就像正常的文件下载一样.这可以被视为第一个要求的特定方面.<div>
文本编辑器的内容复制粘贴到文本编辑器并将其保存在那里是绝对可怕的,这正是我试图避免的原因.我一直在这个网站上搜索,在WHATWG和W3C网站上以及网络上都没有成功.这可行吗?
我最接近的是使用data:
网址.我的第一次尝试,执行POST操作,无法获得内容类型,所以它会回到UA的启发式.通过设置一个<a>
看起来像一个按钮并给它一个type
属性的链接,我得到了稍微好一些,但随后UA将发挥太聪明并呈现内容而不是保存(并要求用户在该步骤从浏览器保存文件)变得比采用复制粘贴方法更糟糕,因为页面保存在浏览器之间变化很大).
如果只是某种方式将data:
网址与"内容处理"类似的提示结合起来,事情就会变得非常顺利.
此致,Herenvardo
问候,
我正在开发一个使用六角形瓷砖地图的3D变体的游戏项目.瓷砖实际上是立方体,而不是六角形,但是像六边形一样布局(因为正方形可以转换为立方体从2D到3D外推,但没有十六进制的3D版本).这里有一个4x4x4地图的例子,而不是冗长的描述:
(我已经突出显示了一个任意的瓷砖(绿色)及其相邻的瓷砖(黄色),以帮助描述整个事物应该如何工作;但邻接功能不是问题,已经解决了.)
我有一个结构类型来表示图块,而地图则表示为一个3D图块的图块(包含在一个Map
类中以添加一些实用工具方法,但这并不是很相关).每个瓷砖应该代表一个完美的立方体空间,它们的大小完全相同.而且,相邻"行"之间的偏移恰好是图块大小的一半.
这是足够的背景; 我的问题是:
考虑到两个点的坐标A
和B
,我怎么能生成砖(或者说,它们的坐标),其之间的直线的名单A
和B
会生气吗?
这将在以后用于各种目的,例如确定视线,充电路径合法性等.
顺便说一下,这可能很有用:我的地图使用(0,0,0)作为参考位置.地图的"锯齿状"可以定义为将每个瓷砖((y+z) mod 2) * tileSize/2.0
从它在"理智"笛卡尔系统上的位置向右偏移.对于非锯齿状的行,产生0; 对于行为(y+z) mod 2
1,它产生0.5个tile.
我正在研究面向.Net Framework 4.0的C#4; 但我真的不需要特定的代码,只需要算法来解决奇怪的几何/数学问题.我一直在努力解决这个问题几天无济于事; 并试图在纸上绘制整个东西以"可视化"它也没有帮助:(.
提前感谢您的回答
language-agnostic algorithm geometry raytracing hexagonal-tiles
好吧,这里有一段很糟糕的代码:
public class Log : CachingProxyList<Event> {
public static Log FromFile(String fullPath) {
using (FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read)) {
using (StreamReader sr = new StreamReader(fs)) {
return new Log(sr);
}
}
}
public Log(StreamReader stream)
: base(Parser.Parse(Parser.Tokenize(stream))) {
/* Here goes some "magic", the whole reason for this
* class to exist, but not really relevant to the issue */
}
}
Run Code Online (Sandbox Code Playgroud)
现在问题的一些背景:
CachingProxyList
是一个IEnumerable<T>
提供自定义"缓存"枚举器的实现:它接受一个IEnumerable<T>
构造函数,最初通过它进行枚举,但是将每个项目保存在私有List<T>
字段上,以便在继续进行实际解析之前进行进一步的迭代(而不是不时地解析;或者只是解析一个巨大的日志来查询它的一小部分).
请注意,实际上需要进行此优化,并且大部分已经在使用(如果我删除了using
语句,除了泄漏的文件句柄外,一切都很顺利).
这两个 …
我正在开发一个Web应用程序,其中包含多个表单,用户需要输入通常包含空格和/或加号的数据.
数据通常通过GET
请求发送; 或通过POST
具有application/x-www-form-urlencoded
Content-Type标头的请求.
我尝试过使用Vars()
和param
Perl的CGI
模块,但这两种方法都坚持将+
符号转换为空格.
该CGI
模块是否提供任何保护+
标志的机制; 或者我应该抛弃CGI
并手动解析STDIN
输入?
注意:
使用大量表单(超过一百个),并在集中式实用程序库中进行CGI预处理,我非常偏向服务器端解决方案而不是客户端方法(换句话说) ,我宁愿在预处理代码上处理一次问题,而不是在数百个地方添加JS噪声.
提前感谢您提供的任何帮助.
示例:
根据注释中的请求,以下是触发此问题的某些代码的(简化)示例.
HTML
<form action="/cgi-bin/some-script.pl">
<input name="some_field" value="1 + 1 is 2">
<input name="submit" type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
Perl的
use CGI;
my $some_variable = CGI::param('some_field');
Run Code Online (Sandbox Code Playgroud)
与默认值submiting形式和运行的服务器端代码后,$some_variable
的值"1 1 is 2"
(有1的之间的三个空间,无论是SO站点或浏览器可以被它们折叠成一个单一的空间) ; 在理想的结果将获得价值"1 + 1 is 2"
在这个变量.
algorithm ×1
c# ×1
cgi ×1
dispose ×1
enumerator ×1
geometry ×1
html ×1
javascript ×1
perl ×1
raytracing ×1