小编Wim*_*ink的帖子

使用键值对作为参数

简单.如果我使用:

public void Add(params int[] values)
Run Code Online (Sandbox Code Playgroud)

然后我可以用它作为:

Add(1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)

但现在我正在处理键值对!我有一个KeyValue类来将整数链接到字符串值.所以我开始:

public void Add(params KeyValue[] values)
Run Code Online (Sandbox Code Playgroud)

但我不能用这个:

Add(1, "A", 2, "B", 3, "C", 4, "D");
Run Code Online (Sandbox Code Playgroud)

相反,我被迫使用:

Add(new KeyValue(1, "A"), new KeyValue(2, "B"), new KeyValue(3, "C"), new KeyValue(4, "D"));
Run Code Online (Sandbox Code Playgroud)

Ewww ......我已经不喜欢这个......

所以,现在我使用不带params修饰符的Add函数,只是将一个预定义的数组传递给这个函数.因为它只是用于测试的快速初始化,所以我不需要太多麻烦需要这些额外的代码,尽管我想保持代码简单易读.我很想知道使用我不能使用的方法的技巧但是有没有办法在不使用"new KeyValue()"构造的情况下做到这一点?

c# shorthand

11
推荐指数
1
解决办法
1万
查看次数

如何识别恶意源代码?

意识到!创建间谍软件,计算机病毒和类似的恶意软件在您居住的地方可能是非法的,几乎每个人都被认为是非常不道德的.尽管如此,我还是要问这一点,以提高人们对创建它的难易程度的认识.在W32/Induc-A被一个想出一种传播方式的人引入这个世界之后,我问这个问题.所以我想知道如何创建病毒,以便将来能够识别它们!

最近发现了一种新的病毒,它通过替换开发人员的库代码副本来传播自己.实际上,通过Delphi 4到7的源代码.发生的事情是,在野外有一种病毒,它在计算机中搜索一个名为SYSCONST.PAS的文件,它将自己添加为源代码.该文件恰好是Delphi运行时库的源文件.(这个运行时源代码可供Delphi开发人员使用.)因此,在被感染后,程序员会在不知情的情况下创建大量新版本的病毒.由于病毒扫描程序有时会产生误报,因此许多开发人员可能因此决定忽略扫描程序的警告,甚至可能在构建项目时禁用扫描程序.更糟糕的是,他们的项目甚至可能会触发客户的扫描程序,因此这些程序员可能不会检查他们的源代码,而只是试图以某种方式欺骗扫描程序.也就是说,如果病毒扫描程序甚至能够识别病毒,那不太可能.因此,我们的软件开发人员可能会在没有意识到我们正在做的事情的情

那么,如何创建病毒呢?简单:让你的源代码被病毒感染,你就完成了!

好的,所以Delphi 4到7的源代码可能会被感染.所有Delphi开发人员,请检查您的源文件!案例只是一个概念验证,显然它可以非常成功.此外,大多数病毒扫描程序不会检查源代码,只关注可执行文件.这种病毒可能会在相当长一段时间内未被发现.

这种病毒也很成功,因为它滥用了源代码.Delphi是一个商业项目,源代码可用.但谁能确定这些黑客不会以类似的方式攻击开源项目?那里有很多开源项目,谁会检查它们,确保它们都以一种体面的方式运行?如果有人正在检查代码,他是否能够识别是否有恶意代码?

因此,为了确保我们能够识别恶意源代码,我不得不问:我如何创建病毒?如何识别会产生病毒的代码?大多数恶意软件想要做什么?


关于Delphi运行时源代码有一些讨论,关于这个代码是开源的还是没有.从他们开始使用Kylix支持Linux的那一刻起,Borland就使用双许可证作为他们的源代码.因此,源代码声明了一个"GPL"符号,表示库是否编译为GPL代码.作为GPL,源代码将是开源的.这也恰好是受病毒攻击的源版本.无论如何,为了避免在这里进行讨论,我在这里提出了这个问题,因此我们可以更多地关注病毒问题而不是Delphi.基本上,我们谈论的是攻击源代码的病毒.从技术上讲,所有源代码都可能存在风险,但开源代码可能是候选者,因为黑客知道它的结构,并且可以针对很少修改的文件,因此很少检查.(如果他们可以破解他们的方式进入CVS系统,他们甚至可以删除他们修改的痕迹,因此没有人会注意到修改!)

delphi open-source virus

11
推荐指数
2
解决办法
4067
查看次数

如何检测可能正在分析我的软件的调试器或其他工具?

一个非常简单的情况.我正在研究Delphi 2007中的一个应用程序,它经常被编译为'Release',但仍然在调试器下运行.有时它也会在SilkTest下运行,用于回归测试.虽然这很有趣但我想做一些特别的事......

我想检测我的应用程序是否在调试器/回归测试器中运行,如果是这种情况,我希望应用程序知道使用了哪个工具!(因此,当应用程序崩溃时,我可以在其错误报告中报告此信息.)

任何建议,解决方案?

delphi testing debugging delphi-2007

10
推荐指数
1
解决办法
2434
查看次数

从SOAP请求中删除命名空间

我已导入WSDL并使用它来发送SOAP请求.它看起来像这样:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Body>
        <Calculate xmlns="urn:xx.WSDL.xxxxxWebService">
            <ContractdocumentIn>
                <AL>
                ...More XML...
Run Code Online (Sandbox Code Playgroud)

问题是xmlns="urn:xx.WSDL.xxxxxWebService"Calculate元素中的部分.Web服务无法接受此操作.Web服务不喜欢这样的命名空间...
使用SoapUI我发现这个请求工作正常:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:col="http://example.com.service.xxx/">
    <SOAP-ENV:Body>
        <col:Calculate>
            <ContractdocumentIn>
                <AL>
                    ...More XML...
Run Code Online (Sandbox Code Playgroud)

那么,如何将请求从第一个版本更改为第二个版本?(不使用肮脏的技巧!)
(如果这会导致正确的请求格式,重新导入不是问题.)




再次:不允许任何肮脏的技巧,比如黑客攻击请求流来修改它!


虽然我还没有完全测试过,但似乎C#/ VS2010和Delphi 2010也无法使用我想要调用的Web服务.一个似乎是用Java编写的Web服务.SoapUI恰好用Java编写,因此我们有一个Java客户端与Java服务通信,这似乎工作得很好.但任何其他客户?
无论如何,还有时间添加两个标签:"Java",因为它是一个Java服务,而"vs2010"因为.NET也不喜欢这个服务.
我正准备在.NET中编写一个包含此服务的包装器,希望这样可行......但事实并非如此.所以这是一个非常严重的缺陷,可能是Java漏洞......

java delphi soap delphi-2007 visual-studio-2010

10
推荐指数
2
解决办法
8312
查看次数

在Windows上为Mac OS X开发?

好吧,简单的情况.我碰巧是一名软件工程师,主要使用Delphi和C#进行软件开发.Delphi非常适合桌面应用程序,而C#是ASP.NET与Web应用程序的理想组合.但是,我正在考虑更多地了解Mac的软件开发.Xcode和Cocoa将成为开始的环境.学习新语言对我来说没问题!

然而,在开始在Mac上编写代码之前,我首先需要购买一个并且它们价格合理,所以购买一个是一个决定,我需要几个月才知道我需要哪一个.所以,为了帮助我,我想知道在不需要Mac的情况下我必须了解更多关于Mac开发的可能性!

例如,OS X是否在VMWare环境中工作?开发工具是否也适用于Windows?OS X库是否有明确的API概述?

或者我应该先购买Mac,玩几周,然后决定如何为它开发软件?换句话说,我现在应该开始消费,还是几个月后开始消费?:-)

macos generic-programming

9
推荐指数
2
解决办法
1万
查看次数

如何用5000个PNG文件创建一个电影?

好吧,简单的情况.我创建了大约5000帧作为PNG文件,我想在.NET应用程序中显示为动画.每张图片的大小为1920x1080,PNG文件使用Alpha通道进行(部分)透明.这会使事情变得复杂,因为我宁愿保持透明.(但如果这是不可能的,我只会在每个PNG上添加背景图片.)

由于图像量很大,我需要大量的内存.那么,运行Vista 64位的1 TB硬盘和12 GB四核Intel Xeon系统正在解决这些内存需求.但除非创建一个工具来支持64位,否则它可能会在加载5000个图像中的800个之后窒息.所以我需要一个可以做到这一点的工具.

电影格式并不重要.只要图像质量保持很高,压缩也不会.(而且有一个原因,我使用了这么大的分辨率!)无损压缩是首选.我的系统足够快,以后再播放电影,所以我不担心它的速度.但是,图像质量是这里最重要的因素.

到目前为止,我已经提出了两个选项:1)我找到了一些可以处理这么多数据的免费工具.(免费或非常便宜.)2)我自己写这样一个工具......

选项1在这里有点不合适.此外,作为一名软件工程师,我的手只是抽搐自己写的!在C#中,最好没有第三方库.所以我的问题: - 从哪里开始自己写这个?


(如果你想知道,这部电影是一部动画片,一名年轻女子走过一些城市的街道,经过几个提到产品特征的标志.在电影结束时,她走向一个更大的标志它显示了产品本身的名称.它是一个长而连续的场景,没有休息.创造真正的乐趣!大约10 GB的图像......)

c# animation

8
推荐指数
3
解决办法
4万
查看次数

如何分析BSOD以及它将为我提供的错误信息?

好吧,幸运的是我没有编写很多导致BSOD的应用程序,但我只是想知道这个屏幕上信息的有用性.它是否包含任何可以帮助我在代码中找到错误的有用信息?如果是这样,我到底需要什么?

然后,系统重新启动,可能已在某处向系统写入了一些错误日志或其他信息.它在哪里,它包含什么以及如何使用它来改进我的代码?

过去,当我与PBX系统进行交互时,我确实经常得到一个BSOD,因为它的驱动程序的文档数量不存在,所以我不得不做一些试错编码.幸运的是,我现在为另一家公司工作,并且由于我的代码而没有看到任何BSOD.

bsod

8
推荐指数
1
解决办法
1734
查看次数

LOGO的当前状态是什么?(编程语言)

在另一个QI看到有人提到LOGO,它让我想起过去的一些编程语言,主要用于教育目的.基本上,你必须用笔在后面编写一只乌龟.通过告诉它在哪里移动,笔会绘制线条.它还可以提升笔移动而不画线.我对这种语言有着美好的回忆,因为它是大约30年前我用过的第一种语言之一.(是的,我已经老了.)好吧,我只用LOGO编程了两天左右,但它让我迷上了编程.

但我想知道它的维基百科页面上的LOGO信息是否仍然正确.更重要的是,是否有可以创建.NET二进制文件的版本?是否只有LOGO口译员和没有编译器?这种教育语言的现状如何?

更有意思的是,SO的专家是否曾在过去尝试过LOGO?

是的,我知道.如今这种语言有点古老,但是当我记得这段有趣的语言时,我得到了一些温暖而舒适的回忆.对于当时的青少年来说,这很有趣!

logo-lang

8
推荐指数
2
解决办法
1744
查看次数

允许红外设备发送信号以控制PC的监视器

我有一台可以用作电视的显示器(它有一个DVI-D连接器和一个电缆连接器.)有一段时间我的电脑上有一个红外设备用于同步我的PDA和手机.

我希望我的电脑的红外/ irDA设备向我的显示器发送信号,以便在电视和电脑模式之间切换.(或者以其他方式控制显示器,例如在登录/注销期间打开和关闭显示器.)为此,我需要:

  1. 使用PC设备记录监视器遥控器上的命令.
  2. 从我的电脑向我的显示器重复该信号以发送命令.

凭借近30年的编程经验,代码没有问题.但由于我对红外设备的唯一了解非常有限,我需要一些有用的提示和技巧.

一个谷歌搜索将提供大量的是有用的链接.但我可以使用帮助找到最有用的.

c# infrared

8
推荐指数
1
解决办法
2035
查看次数

在.NET项目中移动项目文件

它与代码无关,但与IDE有关.我正在开发一个包含大约35个不同项目的.NET解决方案.需要将这些项目重新组织为新的文件夹结构.为什么?因为其中大约10个将被删除,其余的将被分成更多的逻辑单元.一种方法是创建一个新的解决方案,将项目拖放到Windows资源管理器中的新文件夹树中,然后将它们添加到新的解决方案中.说实话,这听起来很愚蠢!

有没有办法将项目从IDE中移动到不同的文件夹中?我试图"另存为"项目,但IDE不会接受不同的文件夹.

这很烦人,但是因为文件夹名称中有一些错误的选择,我现在仍然坚持使用这些名称.


示例:现在我有一个项目主文件夹,其中包含名为"Client","Server","Business","Database"等的子文件夹.在这些子文件夹中,有更多子文件夹,每个子文件夹都是一个三位数字.在每个编号的文件夹中都有一个以某种逻辑方式命名的项目,例如Company.Business.Customers,在该项目中具有额外的逻辑.问题是并非所有项目都遵循这个命名约定,我认为它已经过时了.像Company.Business.Customers这样的项目应该只在项目根目录中名为Company.Business.Customers的文件夹中,这样才能更容易识别.该名称已经明确表明它是该项目的业务类.客户类内的明确划分,业务类和其他更多只需要在解决方案中安排,但我想平整文件结构.(并删除一些过时的项目.)基本上,我不是重构,我只是在清理.VS2008似乎没有这样的选择,但......

c# visual-studio-2008

8
推荐指数
2
解决办法
6131
查看次数