在I/O安全方面,C标准库非常差.许多函数都有缓冲区溢出(gets,scanf),或者如果没有给出正确的参数(scanf),可能会破坏内存,依此类推.每隔一段时间,我就遇到一位有进取心的黑客,他自己编写了一个缺乏这些缺陷的图书馆.
你见过的这些图书馆有哪些最好的?您是否在生产代码中使用过它们,如果是这样,那么它们不仅仅是业余爱好项目?
假设我有一个名为Tasking的组件(我无法修改),它暴露了一个方法"DoTask",它执行一些可能冗长的计算并通过事件TaskCompleted返回结果.通常,这是在用户在获得结果后关闭的窗体中调用的.
在我的特定场景中,我需要将一些数据(数据库记录)与TaskCompleted中返回的数据相关联,并使用它来更新数据库记录.
我已经调查了使用AutoResetEvent来处理事件的时间.问题是AutoResetEvent.WaitOne()将阻塞,永远不会调用事件处理程序.通常,AutoResetEvents被称为一个单独的线程,所以我想这意味着事件处理程序与调用的方法位于同一个线程上.
本质上我想通过阻塞将异步调用(通过事件返回结果)转换为同步调用(即从另一个类调用DoSyncTask),直到处理事件并将结果放在事件处理程序可访问的位置以及调用启动异步调用的方法的方法.
public class SyncTask
{
TaskCompletedEventArgs data;
AutoResetEvent taskDone;
public SyncTask()
{
taskDone = new AutoResetEvent(false);
}
public string DoSyncTask(int latitude, int longitude)
{
Task t = new Task();
t.Completed = new TaskCompletedEventHandler(TaskCompleted);
t.DoTask(latitude, longitude);
taskDone.WaitOne(); // but something more like Application.DoEvents(); in WinForms.
taskDone.Reset();
return data.Street;
}
private void TaskCompleted(object sender, TaskCompletedEventArgs e)
{
data = e;
taskDone.Set(); //or some other mechanism to signal to DoSyncTask that the work is complete.
}
}
In a Windows …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET MVC表单,可能(通常会)提交一个响应,触发"从客户端检测到一个潜在危险的Request.Form值"错误.
为了解决这个问题,我在页面指令中放置了一个ValidateRequest ="false".
唯一的问题:我仍然得到错误!
现在,一切都很好,直到我今天早上更新到ASP.NET MVC RC,并且(根据自述文件),将以下内容放在Views web.config中:
<pages validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
Run Code Online (Sandbox Code Playgroud)
因此,对于所有页面,validateRequest都应为false,对吧?我错过了什么?
突出显示此网页上的一些文字,然后基本上点击文档的任何位置.您的选择将消失.
当用户通过CSS或Javascript单击特定元素时,有没有办法防止此行为?
例如:
var element = document.getElementById("foo");
foo.onclick = function(e){
//some magic here that prevents deselection from occuring
}
Run Code Online (Sandbox Code Playgroud)
要么
foo.style.preventDeselect = "true";
Run Code Online (Sandbox Code Playgroud)
编辑:也许我可以存储选择,然后"鼠标点击"恢复选择?有没有办法存储选择,然后重新选择它?
谢谢!
是否有一种结构化语言以合理的方式声明样式,然后可以将其呈现为浏览器特定的css文件,类似于GWT对Javascript的作用?
它理想地是一种支持变量,处理浏览器怪癖和差异的语言(例如过滤器:alpha与不透明度),为诸如居中等常见任务提供直观的语法,并且有一种方法可以为功能较弱的浏览器表达回退.
我从我们的一个客户那里得到了一个错误,并且认为问题在于MSVCR80.DLL v8.0.50727.3053 - 这是我在任何地方都找不到的版本,但谷歌搜索发现了大量其他崩溃报告.
我系统上的最新版本(以及其他版本)是8.0.50727.1433,Microsoft Visual C++ 2005 SP1可再发行软件包(x86)仅版本8.0.5027.762(目前与我们使用的合并模块相同)
是否有"官方"链接来获取此更新?它是否与任何其他Microsoft产品捆绑在一起?
编辑:请不要通过电子邮件发送给我,我正在寻找SxS安装.
编辑2:该死的,毕竟这不是问题:(
我创建了一个自我生成的证书来签署DLL.当我将此DLL加载到我的C++应用程序中时,我可以使用WinVerifyTrust api验证代码签名证书是否有效.
但我无法找到一种方法来检测DLL已被我的一个证书签名.即使使用CryptQueryObject api,我也找不到任何有用的信息.
有没有人知道如何做到这一点?或者它是否可能发生?
谢谢
我每隔x秒就检查一次Oracle数据库表以查看是否有新数据要处理(其他实时应用正在填充它).
我们的新客户业务流程迫使我们实时填充此表,同时包含大量记录(比如10 000),但每天只有几次.下次我的应用程序检查是否有任何要处理的内容时,它会遇到10 000条记录并尝试处理它.
它设计得不是很好,而且规模不够好.快速修复将限制应用程序从Oracle获取的记录数,下次它将选择另外50(或其他)等.
如何在Oracle SQL中限制返回的记录数?订单很重要!
select *
from cool_table where date >= to_date('200901010000', 'YYYYMMDDhh24mi')
order by seq_nr, entry_dts;
Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习C++,所以你不得不忍受我的无知.有没有办法声明函数,以便可以在不使用它们的函数之前编写它们.我正在使用一个cpp文件(不是我的决定)而且我的函数调用自己,因此没有真正的顺序将它们放入.在使用它们之前#define函数的任何方式或者那种效果?或者也许是一种用范围运算符标记它们的方法,这种运算符并不意味着它们实际上属于类的一部分?
提前致谢
我试图在C#中序列化Exception对象.但是,似乎不可能,因为Exception类没有标记为[Serializable].有办法解决这个问题吗?
如果在执行应用程序期间出现问题,我希望被告知发生的异常.
我的第一反应是序列化它.
c# ×2
c++ ×2
css ×2
.net ×1
asp.net-mvc ×1
c ×1
code-signing ×1
delegates ×1
dll ×1
events ×1
exception ×1
function ×1
gwt ×1
html ×1
html-select ×1
javascript ×1
low-level ×1
oracle ×1
scope ×1
sql ×1