我下载Application Verifier 4.0以测试我的应用程序以检查Vista/7是否存在问题.
我从Delphi 2010调试器运行,并在CPU视图中停止.显然,我对汇编程序一无所知!
所以,我尝试直接从Windows资源管理器运行,并且应用程序死掉.
(事实上,我不明白App Verifier究竟会做什么:我期待某种友好的信息).
这就是我得到的:
7C81A3E2 C3 ret
7C81A3E3 90 nop
7C81A3E4 8BFF mov edi,edi
ntdll.DbgUserBreakPoint:
7C81A3E6 CC int 3
7C81A3E7 C3 ret
7C81A3E8 8BFF mov edi,edi
7C81A3EA 8B442404 mov eax,[esp+$04]
7C81A3EE CC int 3
7C81A3EF C20400 ret $0004
ntdll.NtCurrentTeb:
7C81A3F2 64A118000000 mov eax, fs:[$00000018]
7C81A3F8 C3 ret
ntdll.RtlInitString:
7C81A3F9 57 push edi
Run Code Online (Sandbox Code Playgroud)
加载:
:7c81a3e2 ntdll.DbgBreakPoint + 0x1
:10003b68 ; C:\WINDOWS\system32\vrfcore.dll
:00396a9d ; C:\WINDOWS\system32\vfbasics.dll
:00397316 ; C:\WINDOWS\system32\vfbasics.dll
:7c84bcdb ; ntdll.dll
:7c8316f8 ; ntdll.dll
:7c83154f ; ntdll.dll …Run Code Online (Sandbox Code Playgroud) 我在使用Uploadify时遇到了问题,希望有人可以提供帮助.我已将Uploadify放入我的应用程序,并且所有工作正常(使用VS Web服务器).一切正常并检查,直到我将应用程序部署到使用集成Windows身份验证的测试环境中.
当我实际上去上传文件时,浏览器会显示登录提示.此时,即使您输入正确的用户名和密码,该请求似乎也无法完成,即使您告诉浏览器记住密码,它仍然会显示登录提示.
当这种情况开始发生时,我决定旋转Fiddler,看看发生了什么.但是猜猜是什么,当Fiddler正在运行问题时不会发生.
不幸的是,我无法让运行Fiddler成为运行应用程序的必要条件.因此,任何人都有任何想法.我知道在使用表单身份验证时,Uploadify/flash存在一些问题,但我认为它们并未贯彻到集成Windows身份验证.
有没有办法将信号编号(例如signal.SIGINT)映射到各自的名称(即"SIGINT")?
我希望能够在收到信号时在日志中打印信号的名称,但是我找不到从信号编号到Python中的名称的地图,即:
import signal
def signal_handler(signum, frame):
logging.debug("Received signal (%s)" % sig_names[signum])
signal.signal(signal.SIGINT, signal_handler)
Run Code Online (Sandbox Code Playgroud)
对于一些字典sig_names,所以当进程收到SIGINT时会打印:
Received signal (SIGINT)
Run Code Online (Sandbox Code Playgroud) 我正在阅读http://embeddedgurus.com/embedded-bridge/2010/03/different-bit-types-in-different-registers/,其中说:
通过读/写位,固件可在需要时设置和清除位.它通常首先读取寄存器,修改所需的位,然后将修改后的值写回
我已经遇到了这个问题,同时保留了一些由老盐嵌入式人员编写的生产代码.我不明白为什么这是必要的.
当我想设置/清除一点时,我总是只是或者使用位掩码.在我看来,这解决了任何线程安全问题,因为我假设设置(通过赋值或使用掩码进行设置)寄存器只需要一个周期.另一方面,如果您首先读取寄存器,然后修改,然后写入,读取和写入之间发生的中断可能导致向寄存器写入旧值.
那么为什么读 - 修改 - 写?还有必要吗?
list<int> foo;
list<int> foo2;
list<int>::iterator foo_end = foo.end();
list<int>::iterator foo2_end = foo2.end();
for (list<int>::iterator it = foo.begin(); it != foo2_end; ++foo) <- notice != comparison here
{
...
Run Code Online (Sandbox Code Playgroud)
这允许吗?它会正常工作吗?
我倾向于认为这是依赖于实现的,任何人都知道标准是否说明了这一点?
如果这是一个坏主意,如何在函数中分配内存?
鉴于MD5的已知弱点以及SHA1中讨论的最近(2009年5月)的弱点,新程序应该如何腌制和散列密码?
我见过SHA-256和SHA-512.
主要在Ruby on Rails中编程并使用PostgreSQL - 但其他语言和环境可能还需要计算密码哈希值.
如何启用我的BLL的自动排序,返回列表,CustomerList:GridView中的列表?
Customer是我自己的强类型类,CustomerList是客户列表.
我知道一种方法是在GridView中将AllowSorting属性设置为true并处理OnSorting事件并调用在CustomerList类中定义的排序方法.
但是我想要一个自动解决方案,我不需要处理OnSorting事件,它应该像GridView如何处理DataView,DataTable和DataSet的自动排序.
我需要在CustomerList或Customer类上实现一个能够实现该功能的接口吗?
alt text http://img260.imageshack.us/img260/3373/aa479347gridviewfg21enu.gif
几个星期前我开始使用linq to SQL.我真的厌倦了通过SQL查询直接使用SQL服务器(sqldatareader,sqlcommand和所有这些好东西).
在听说了linq to SQL和mvc后,我很快将所有项目都转移到了这些技术上.我希望linq对SQL工作的速度要慢一些,但结果却非常快,主要是因为我总是忘记在使用数据加载器时关闭连接.现在我不用担心.
但是有一个问题真的困扰我.有一页每天要求数千次.系统在开始时获取数据,使用它并更新它.主要是更新是++ @ - (增加和减少值).我曾经这样做过
UPDATE表SET值=值+ 1 WHERE ID = @I'd
它显然没有问题.但是使用linq to SQL,数据在开始时被移动,移动到类,更改然后保存.
Stats.registeredusers ++; Db.submitchanges();
假设有10万用户.Linq会说"让它成为100 001",而不是"让它增加1".
但是如果用户的价值已经增加(这种情况一直发生在我的网站上)那么linq将会像oops一样,这个值已经是100 001.无论我抛出什么异常"
您可以更改此行为,以便它不会抛出异常,但仍然不会将值设置为100 002.
就像我说的那样,它一直伴随着我.stas值平均每秒增加两次.我只需用经典的ado net重写这段代码.
所以我的问题是如何用linq解决问题
c ×2
action ×1
asp.net ×1
asp.net-mvc ×1
browser ×1
c# ×1
c++ ×1
debugging ×1
delphi ×1
delphi-2010 ×1
embedded ×1
encryption ×1
events ×1
file-upload ×1
flash ×1
gridview ×1
hash ×1
ienumerable ×1
iis ×1
iterator ×1
linq-to-sql ×1
malloc ×1
oop ×1
passwords ×1
python ×1
signals ×1
sorting ×1
stl ×1
uploadify ×1
windows-7 ×1