有时您没有源代码,需要对程序或黑盒进行反向工程.有趣的战争故事吗?
这是我的一个:
几年前我需要重写一个我没有源代码的设备驱动程序.设备驱动程序在旧的CP/M微型计算机上运行,并通过串行端口驱动专用的照排机.几乎没有照相排版机的文件可供我使用.
我最终在DOS PC上将一个串口监视器混合在一起,模仿了照相排版机器的响应.我将DOS PC连接到CP/M机器,并在我通过CP/M机器输入数据时开始记录来自设备驱动程序的数据.这使我能够找出设备驱动程序使用的握手和编码,并为DOS机器重新创建一个等效的.
我有一个主/详细信息表,并希望根据详细信息表更新主表中的一些汇总值.我知道我可以像这样更新它们:
update MasterTbl set TotalX = (select sum(X) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalY = (select sum(Y) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalZ = (select sum(Z) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
Run Code Online (Sandbox Code Playgroud)
但是,我想在一个声明中做到这一点,如下所示:
update MasterTbl set TotalX = sum(DetailTbl.X), TotalY = sum(DetailTbl.Y), TotalZ = sum(DetailTbl.Z)
from DetailTbl
where DetailTbl.MasterID = MasterTbl.ID group by MasterID
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我也尝试过省略"group by"子句的版本.我不确定我是否遇到了我的特定数据库(Advantage)或我的SQL限制.可能是后者.有人可以帮忙吗?
我的程序有没有办法确定它何时在远程桌面(终端服务)上运行?
我想在程序在远程桌面会话上运行时启用"不活动超时".由于用户因打开远程桌面会话而臭名昭着,我希望我的程序在指定的不活动时间后终止.但是,我不希望为非RD用户启用非活动超时.
多年来,我最重要的工具之一是增量复制实用程序,它比较两个目录的内容,并显示哪些文件更新/更旧/添加/删除.每天我发现自己在我的两台台式机和服务器之间复制源代码文件夹,这样的实用程序对于避免用旧文件覆盖新文件以及仅通过复制更改的文件来节省时间至关重要.此外,该实用程序允许我在源文件夹中查看我不一定要复制的新文件(如临时文件),而我可以删除它们.
像任何订阅NIH思维方式的人一样,我编写了自己的实用程序来比较两个文件夹的内容,让我标记要复制,删除,区分或忽略的文件.我有很多版本的这个实用程序可以回到DOS,OS/2和Win32.
我每天都使用这个实用程序,它让我想知道:其他人使用什么?当然有类似的程序可以做到这一点...我的实用程序没有差异屏幕,偶尔看到两个更改文件之间的区别是很好的.
你用什么来比较和逐步复制文件夹?