程序设计

专业和发烧友程序员的问答

23
如何避免在Node.js中长时间嵌套异步函数
我想制作一个页面来显示数据库中的某些数据,因此我创建了一些函数来从数据库中获取数据。我只是Node.js中的新手,据我了解,如果我想在一个页面中使用它们(HTTP响应),则必须将它们全部嵌套: http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); var html = "<h1>Demo page</h1>"; getSomeDate(client, function(someData) { html += "<p>"+ someData +"</p>"; getSomeOtherDate(client, function(someOtherData) { html += "<p>"+ someOtherData +"</p>"; getMoreData(client, function(moreData) { html += "<p>"+ moreData +"</p>"; res.write(html); res.end(); }); }); }); 如果有很多类似的功能,那么嵌套就会成为问题。 有办法避免这种情况吗?我想这与如何组合多个异步函数有关,这似乎是基本的东西。

6
TeamViewer有多快?
抱歉,长度太长了。 介绍 我正在Windows Vista / 7的C#4.0中开发远程桌面软件(只是为了好玩)。我已经克服了一些基本的障碍:我拥有一个健壮的UDP消息传递系统,相对简洁的程序设计,一个镜像驱动程序(DemoForge提供的免费DFMirage镜像驱动程序)已启动并正在运行,并且我已为所有实现了NAT遍历对称NAT除外的NAT类型(存在于公司防火墙中)。 关于屏幕传输/共享,由于有了镜像驱动程序,我会自动收到有关更改的屏幕区域的通知,并且可以简单地将镜像驱动程序的不断变化的屏幕位图编组到自己的位图。然后,我将屏幕区域压缩为PNG并将其从服务器发送到我的客户端。事情看起来还不错,但是还不够快。它和VNC一样慢(顺便说一句,我不使用VNC协议,只是一个自定义的业余协议)。 从最慢的远程桌面软件到最快的远程桌面软件,该列表通常从所有类似VNC的实现开始,然后攀升至Microsoft Windows Remote Desktop ...然后是... TeamViewer。对于CrossLoop和LogMeIn不太清楚-我没有使用过它们,但是TeamViewer的速度非常快。从字面上看,它是真实的。我tree在命令提示符下运行了一条命令,并以20毫秒的延迟进行了更新。我可以比笔记本电脑慢几毫秒来浏览网页。在Visual Studio中垂直滚动代码的延迟时间为50毫秒。考虑一下要完成所有这些工作,TeamViewer的屏幕传输解决方案必须多么强大。 VNC使用基于轮询的挂钩来检测屏幕变化,并在最坏的情况下进行暴力屏幕捕获/比较。在最佳状态下,他们使用DFMirage之类的镜像驱动程序。我在这个水平上。他们使用了称为RFB协议的协议。 Microsoft Windows远程桌面显然比VNC高出了一步。我从StackOverflow上的某个地方听到,Windows远程桌面不会发送屏幕位图,而是发送实际的绘图命令。这非常出色,因为它可以发送简单的文本(在此坐标处绘制此矩形并使用此渐变为其着色)!远程桌面确实非常快-这是在家中工作的标准方式。它使用了一种称为RDP协议的东西。 现在,TeamViewer对我来说是一个完全的谜。显然,他们发布了版本2的源代码(TeamViewer是2012年2月的版本7)。人们已经读过它,并说版本2没有用-它只是对具有自动NAT遍历的VNC的一些改进。 但是版本7 ...现在快得离谱了。我的意思是,它实际上比Windows Remote Desktop快。我已经使用TeamViewer流式传输DirectX 3D游戏(速度为1 fps,但Windows远程桌面甚至不允许DirectX运行)。 顺便说一句,TeamViewer 无需镜像驱动程序即可完成所有这些操作。可以选择安装一个,但速度会更快一点。 问题 我的问题是,TeamViewer怎么这么快?一定不可能。如果您即使在24位深度(16位深度也很丑陋)下都具有1920 x 1080分辨率,那仍然是6,220,800字节原始数据。即使使用libjpeg-turbo(大型公司使用的最快的JPG压缩库之一)将其压缩到30KB(让我们非常慷慨),也需要花费一些时间才能通过TeamViewer的服务器进行路由(TeamViewer通过简单地代理流量来绕过公司的对称NAT)他们的服务器)。而libjpeg-turbo压缩将需要时间来压缩。对于我来说,高质量的JPG压缩需要175毫秒才能完成1920 x 1080的完整屏幕截图。如果主机计算机运行Atom处理器,则该数字将增加。我只是不了解TeamViewer如何如此出色地优化了屏幕传输。同样,小尺寸图像可能会被高度压缩,但至少要花费数十毫秒的压缩时间。大型图像无需花费时间即可压缩,但需要很长时间才能通过。不知何故,TeamViewer完成了整个过程,每秒获得大约20-25帧。我使用了网络监视器,TeamViewer在500 Kbps和1 Mbps的速度下仍然没有滞后(在该传输速率下,VNC软件滞后了几秒钟)。在我的tree在命令提示符测试中,TeamViewer接收入站数据的速率为1 Mbps,并且仍以5-6 fps的速度运行。VNC和远程桌面不这样做。又怎样? 答案会有些复杂和复杂,因此,如果您只是说这是因为它们使用UDP而不是TCP(请相信他们实际上确实确实使用TCP确实成功),请不要发布0.02美元。 我希望在StackOverflow上的某个地方有TeamViewer开发人员。 潜在答案 人们回复后将对此进行更新。 我的想法是,首先,TeamViewer具有很好的网络控制。例如,他们将大数据包拆分为MTU大小以下,并且从不浪费行程。他们可能有各种各样的花哨的钩子来检测屏幕变化以及非常快的XOR图像比较。

19
为Excel生成CSV文件,以及如何在值中包含换行符
我需要为Excel生成一个文件,该文件中的某些值包含多行。 那里也有非英语文本,因此文件必须是Unicode。 我现在生成的文件如下所示:(在UTF8中,混合了非英语文本并有很多行) Header1,Header2,Header3 Value1,Value2,"Value3 Line1 Value3 Line2" 请注意,多行值包含在双引号中,并带有普通的日常换行符。 根据我在网上发现的信息,该方法行之有效,但至少在不赢得Excel 2007和UTF8文件的情况下,它没有,Excel将第三行视为第二行数据,而不是第一行第二行。 这必须在我的客户的计算机上运行,​​并且我无法控制他们的Excel版本,因此我需要一个可以在Excel 2000及更高版本上使用的解决方案。 谢谢 编辑:我通过有两个CSV选项“解决了”我的问题,一个用于Excel(Unicode,制表符分隔,字段中没有换行符),另一个用于世界其他地区(UTF8,标准CSV)。 不是我一直在寻找的东西,但至少它能起作用(到目前为止)
158 excel  csv  newline 


14
如何更改字段的类型?
我试图从mongo shell中更改字段的类型。 我正在做... db.meta.update( {'fields.properties.default': { $type : 1 }}, {'fields.properties.default': { $type : 2 }} ) 但这不起作用!
158 mongodb 

5
将数据库字段加1
使用MySQL,如果我有一个字段(例如登录名),我将如何在sql命令中将该字段更新为1? 我正在尝试创建一个INSERT查询,该查询创建firstName,lastName和登录名。但是,如果firstName和lastName的组合已经存在,则将登录数增加1。 因此表格可能看起来像这样。 firstName----|----lastName----|----logins John Jones 1 Steve Smith 3 我需要一个命令,该命令在运行时将插入一个新的人(即Tom Rogers),或者如果使用约翰·琼斯的名字则增加登录名。
158 mysql  insert  increment 

5
如何酿造链接特定版本?
我在/usr/local/Cellar/libfoolike中有几个包装相同的小桶/usr/local/Cellar/libfoo/1.0.1,/usr/local/Cellar/libfoo/HEAD并且/usr/local/Cellar/libfoo/mycopy 如何制作链接到特定版本的链接?
158 homebrew 

5
什么是字典视图对象?
在python 2.7中,我们获得了可用的字典视图方法。 现在,我知道以下内容的优缺点: dict.items()(和values,keys):返回一个列表,以便您可以实际存储结果,并且 dict.iteritems() (等等):返回一个生成器,因此您可以逐个迭代生成的每个值。 有什么用dict.viewitems()(等等)?他们有什么好处?它是如何工作的?到底是什么看法? 我读到该视图始终反映字典中的变化。但是,从性能和内存的角度来看,它的表现如何?优点和缺点是什么?
158 python  view  dictionary 


12
Xcode:构建失败,但没有错误消息
使用Xcode 4.5.1。我们的项目在过去三个月中一直运行良好,但是突然间,当我尝试进行构建时,它说“构建失败”,但是在三角形感叹号选项卡上没有显示任何错误,也没有给出弹出它的原因建立失败。 我们尚未更改包标识符或任何其他项目属性。我尝试过清理,然后构建,但是没有运气。 是什么原因引起的? 与此问题类似,但没有解决方案适用。
158 xcode  build 

30
Android设备未显示在adb列表中
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 我有一个使用USB电缆连接到Windows盒的HP Slate 21。设备上已启用USB调试。后加入适当的%SingleAdbInterface%和%CompositeAdbInterface%条目的android_winusb.inf文件,我现在看到的“Android ADB接口”在我的设备管理器。但是,adb devices在命令行上运行不会显示设备。 我还有另一台HP平板电脑7,在的情况下显示的很好adb devices。 我从“设备管理器”中看到的唯一区别是,可以工作的一个名为“ Android Composite ADB接口”,另一个名为“ Android ADB接口”。 还有另一个细微的区别。在winusb.inf文件中,对于Slate 7,我%CompositeAdbInterface%定义了两个条目,但是对于Slate 21,仅%CompositeAdbInterface%定义了一个条目。 我的设置有什么问题?
158 android  adb 

7
如何自动裁剪和居中图像
给定任意图像,我想从图像中心裁剪一个正方形并将其显示在给定的正方形内。 这个问题与此类似:CSS显示已调整大小并裁剪的图像,但我不知道图像的大小,因此无法使用设置的边距。
158 css 



18
无法加载文件或程序集'System.Net.Http.Formatting'或其依赖项之一。该系统找不到指定的路径
我出于实践原因使用了一个小型MVC应用程序,但是现在每次尝试调试时都会遇到错误: Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. The system cannot find the path specified. 我已经用Google搜索,但是找不到解决方案。我正在使用.NET 4.5。 它不能是DLL文件,因为我正在使用.Net 4.5。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.