我一直很想知道是否有可能将Haskell的强大功能应用到嵌入式实时世界,并且在谷歌搜索中找到了Atom软件包.我假设在复杂的情况下,代码可能具有所有经典的C错误 - 崩溃,内存损坏等,然后需要将其追溯到导致它们的原始Haskell代码.所以,这是问题的第一部分:"如果您有使用Atom的经验,那么您是如何处理调试已编译C代码中的低级错误并将其修复为Haskell原始代码的任务的?"
我搜索了Atom的更多示例,这篇博文提到了生成的C代码22KLOC(显然没有代码:),包含的示例是一个玩具.这个和这个引用有一些更实用的代码,但这是结束的地方.我在这个主题中加入"相当大"的原因是,如果您可以分享使用300KLOC +范围内生成的C代码的经验,我最感兴趣.
因为我是一名Haskell新手,显然可能有其他方法由于我未知的未知因素而未找到,所以在这方面任何其他自我教育的指针都会非常感激 - 这是问题的第二部分 - "在Haskell中进行实时开发会有什么其他实用方法(如果)?" 如果多核也在图片中,这是一个额外的加号:-)
(关于Haskell本身用于此目的的用法:从我在这篇博文中读到的内容,Haskell中的垃圾收集和懒惰使其在调度方面具有相当不确定性,但可能在两年内发生了一些变化.现实世界的Haskell编程问题在SO上是我能找到的最接近这个话题的人)
注意:上面的"实时"将更接近"硬实时" - 我很好奇是否可以确保主要任务未执行的暂停时间小于0.5ms.
我对协议(和游戏循环)如何适用于这些类型的游戏感兴趣; 任何指针或见解表示赞赏.
我猜主循环会有一个世界状态,每秒会提前几个"滴答",但是玩家的命令是如何执行的?什么样的数据需要来回传递?
几年前我被教过,在嵌入式系统或(非Linux-)内核开发C++等实时应用程序中, 例外是不可取的.(也许那个教训来自gcc-2.95之前).但我也知道,异常处理变得更好.
那么,C++是否 -在实践中实时应用程序的上下文中的异常
更新:异常处理是否真的需要 启用RTTI(正如一位回答者建议的那样)?是否涉及动态演员表或类似情节?
我正在尝试使用nvd3.js创建一个实时图表,它会定期更新,并且会产生实时处理数据的印象.
现在我已经能够创建一个定期更新图形的函数,但我无法在"状态"之间进行平滑过渡,例如向左转换的行.
这是我使用nvd3.js所做的,这里有趣的代码是:
d3.select('#chart svg')
.datum(data)
.transition().duration(duration)
.call(chart);
Run Code Online (Sandbox Code Playgroud)
现在,我已经能够使用d3.js生成我想要的东西,但我希望能够使用nvd3.js提供的所有工具.这是我想用nvd3制作的
使用d3.js进行转换的有趣代码是:
function tick() {
// update the domains
now = new Date();
x.domain([now - (n - 2) * duration, now - duration]);
y.domain([0, d3.max(data)]);
// push the accumulated count onto the back, and reset the count
data.push(Math.random()*10);
count = 0;
// redraw the line
svg.select(".line")
.attr("d", line)
.attr("transform", null);
// slide the x-axis left
axis.transition()
.duration(duration)
.ease("linear")
.call(x.axis);
// slide the line left
path.transition()
.duration(duration)
.ease("linear")
.attr("transform", "translate(" …Run Code Online (Sandbox Code Playgroud) 我真的很好奇
如何编写谷歌文档等协作工具?
我能想到的最接近的事情是编写一个像聊天这样的消息传递系统,然后来回发送消息,以便每个客户端自我更新.
你知道他们编写像这样的小工具的教程/演示吗?
他们使用什么工具来做这种应用?
TIA可以提供任何指示.
我正在试图弄清楚如何编写一个可以动态解码音频莫尔斯电码的应用程序.我找到了这个文档,它解释了如何在Android中录制麦克风的音频.我想知道的是,是否可以从麦克风访问原始输入或是否必须将其写入/读取到文件.
谢谢.
既然市场数据提供商的寡头成功杀死了OpenQuant,那么对于实时市场数据的专有和昂贵的订阅是否有任何替代方案?
理想情况下,我希望能够监控来自纽约证券交易所,纳斯达克和美国证券交易所(约6000个符号)的蜱虫证券.
大多数供应商同时限制500个符号可观察,这对我来说是不可接受的,即使可以想象500个符号之间的轮换,即.制作5秒的窗户.每个符号的每分钟有效观察.
目前我正在通过一个名为谷歌财经的Java线程池来做这件事,但由于几个原因,这是令人不满意的,其中一个原因是谷歌没有返回交易量,但主要原因是谷歌迅速杀死试图利用的机器人这项服务;-)
任何提示非常感谢,
干杯
使用Android时,我丢失了传入USB数据流的数据,在Windows中读取相同的设备/流时我不会丢失这些数据.(我知道Android不是一个实时操作系统,但Windows也不是,而Windows在跟上数据方面没有问题.)
我使用具有内置4K缓冲区的FTDI 2232H芯片以大约3.5MB /秒的速度传输数据.libusb中的bulk_transfer调用一次可以请求16K,因此Android需要每4ms左右收集一次USB缓冲区的内容.
我试过:用Java和C语言编写,将线程(和/或进程)优先级提高到它的最高,同步和异步例程,我甚至为每个USB读取传递一个单独的缓冲区,所以我甚至不需要复制连续读取之间的数据.(在传输过程中没有垃圾收集.)我只需要缓冲20MB的数据,所以这都是RAM.
尽管如此,Android还是"没有绕过"USB数据,有时在读取之间等待长达12ms,导致一堆数据丢失.
有没有人有任何想法?DMA?对内核有某种"实时"请求?
现在,在大多数流行网站中,实时更新很常见,这些网站使用量很大.
我想知道这些"实时更新"是如何工作的?我只是在寻找一般鸟类的观点.我怀疑JS不能每隔X秒调用服务器进行更新,然后将其附加到<ul>.从服务器发送的通知是否会提取更多内容?
如果有一个简单的文章如何通过演示来解释这个,那会很棒吗?
Google云端硬盘使用什么技术进行实时操作?
当我输入多个用户正在访问的Google云端硬盘文档时,Chrome开发者工具网络标签显示没有WebSockets.
我看到两种最常见的AJAX调用类型都有"绑定"?还是"保存?" 在URL中."保存?" 每次输入时都会发出POST请求,这对于向服务器发送更新很有意义.
当另一个用户输入时,最近的"绑定?" GET呼叫保持打开状态,通过该连接传输的数据量也会增加.周期性地,"绑定?"被关闭,新的打开,逻辑似乎是持续时间和数据大小的一些功能.
这不是长轮询,因为当服务器发送更新时,它不会完成响应.
这似乎不是服务器发送的事件,因为内容类型是"text/plain"而不是"text/stream".
Google正在做什么名称?如果是这样,我该如何尝试实现呢?