小编Ars*_*nko的帖子

在T-SQL中,如何插入一个默认设置了所有值的新行?

在Microsoft SQL数据库中,我有一个表,其中每列都有默认值(固定值或标识之类的东西getdate()).

我正在尝试编写一个SQL语句,它将插入一个新行,其中每个单元格都有一个默认值.

也不

insert into MySchema.MyTable
Run Code Online (Sandbox Code Playgroud)

也不

insert into MySchema.MyTable () values ()
Run Code Online (Sandbox Code Playgroud)

是有效的语法.

那么是否可以在不指定任何值的情况下插入新行?

sql t-sql syntax insert default-value

13
推荐指数
1
解决办法
2355
查看次数

DotNet - 什么是int*?

简单的问题,我导入一个DLL函数,参数是int*.当我尝试输入Method(0)时,我收到一条错误,上面写着:"int和int*无法转换".

那是什么意思?

.net c# pointers

12
推荐指数
2
解决办法
2847
查看次数

用PHP编写合同编程

按合同编程是.NET的一个现代趋势,但是PHP中的代码契约的库/框架呢?您如何看待这种范例对PHP的适用性?

谷歌搜索"代码合同PHP"没有给我任何帮助.

注意:"按合同编写代码",我指的是按合同设计,因此它与.NET或PHP接口无关.

php design-patterns design-by-contract code-contracts

12
推荐指数
1
解决办法
7096
查看次数

我的代码有什么安全问题?

几年前,我在PHP中发布一个关于某种方式的问题的答案,让用户在URI中传递要下载的文件的相对路径,同时防止目录遍历.

我得到了一些评论,说明代码是不安全的,还有一些downvotes(最近的是今天).这是代码:

$path = $_GET['path'];
if (strpos($path, '../') !== false ||
    strpos($path, "..\\") !== false ||
    strpos($path, '/..') !== false ||
    strpos($path, '\..') !== false)
{
    // Strange things happening.
}
else
{
    // The request is probably safe.
    if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $path))
    {
        // Send the file.
    }
    else
    {
        // Handle the case where the file doesn't exist.
    }
}
Run Code Online (Sandbox Code Playgroud)

我一遍又一遍地检查了代码,对其进行了测试,但仍无法理解它引入的安全问题.

我在评论中得到的唯一提示是../可以替换为%2e%2e%2f.这不是问题,因为PHP会自动将其转换为../.

这段代码有什么问题?什么可能是允许目录遍历或以某种方式破坏某些内容的输入值?

php security

12
推荐指数
2
解决办法
207
查看次数

为什么要创建DLL而不是将所有内容编译成一个大的可执行文件?

我看到并完成了许多小型产品,其中同一块软件被分成一个可执行文件和几个DLL,这些DLL不仅仅是由其他人完成的共享库,而是专门为这个软件完成的库,由同一个开发团队.(我不是在这里谈论大规模的产品,只需要数百个DLL并与其他产品广泛分享.)

据我所知,从开发人员的角度来看,将代码分成几个部分,每个部分都编译成一个单独的DLL .这意味着:

  • 如果开发人员更改了一个项目,他必须只重新编译这个项目,而依赖项目可以更快.
  • 项目可以由团队中的单个开发人员完成,而其他开发人员只需使用提供的接口,而无需插入代码.
  • 软件的自动更新有时可能更快,服务器影响更小.

但最终用户呢?当一切都可以组合在一起时,提供一个由一个EXE和几个DLL组成的软件并不是一件坏事吗?毕竟:

  • 用户可能甚至不了解这些文件是什么以及为什么他们在硬盘上填充内存,
  • 用户可能想要移动程序,例如将其保存在USB闪存驱动器上.拥有一个大的可执行文件可以简化
  • 大多数防病毒软件都会检查每个DLL.检查一个可执行文件将比较小的可执行文件和几十个库快得多.
  • 使用DLL会使某些事情变得更慢(例如,在.NET Framework中,必须找到并检查"好"库是否已签名),
  • 如果DLL被删除或被错误的版本替换会发生什么?每个程序都处理这个吗?或者它甚至没有解释它有什么问题就崩溃了?
  • 有一个大的可执行文件有一些其他的优势.

所以是不是但从最终用户的角度更好,对于小/中等规模的方案,以提供一个大的可执行文件?如果是这样,为什么没有工具允许轻松实现(例如,集成在通用IDE中的魔术工具将整个解决方案编译成一个可执行文件,当然不是每次,但是按需或在部署期间).


这有点类似于将所有CSS或所有JavaScript文件放入用户的一个大文件中.拥有多个文件对于开发人员而言更加智能,并且更易于维护,但将网站的每个页面链接到两个文件而不是几十个文件可以优化性能.以同样的方式,CSS精灵对于设计师来说是可怕的,因为它们需要更多的工作,但从用户的角度来看更好.

optimization performance dynamic-linking

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

结合PHP和HTML的首选方法?

我通过浏览phpBB2来学习PHP ,甚至向他们的数据库提交了一些mod,其他人下载并使用了这些mod.(我不相信phpBB2已经支持了phpBB3这么久了,所以v2 mods数据库不再存在.)

我最喜欢的关于phpBB的一个是他们的模板系统,它让编辑器完全分离HTML和PHP.PHP文件包含PHP:逻辑,数据库查询和激活模板.TPL文件包含模板:HTML,模板变量和专用HTML注释,以允许条件或重复块.

但是,每当我在网上看到某人的PHP代码时,它或者是一个使用单个函数等的小代码片段,或者PHP中充满了包含HTML的字符串(或者更糟糕的是,PHP与PHP散布在一起).phpBB是我看过的唯一一个实际上将语言和标记语言分开的PHP,向我建议很少有其他PHP代码库做这样的事情.

我想再次开始使用一些PHP,但这次它不会是一个phpBB论坛,它将在一个团队中.根据我的经验,PHP和HTML的分离是不常见的(如果我错了,请纠正我!).但是,我已经习惯了那个分界线,我讨厌阅读混合的PHP和HTML.

在PHP编程的"现实世界"中,首选方法是什么:

  • 带有HTML字符串的PHP文件
  • 用PHP块分解的HTML文件
  • PHP和HTML完全分开(我希望?)
  • 别的什么?

html php templates separation-of-concerns

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

为什么要部署StreamReader会使流不可读?

我需要从开始到结束两次读取一个流.

但是以下代码抛出ObjectDisposedException: Cannot access a closed file异常.

string fileToReadPath = @"<path here>";
using (FileStream fs = new FileStream(fileToReadPath, FileMode.Open))
{
    using (StreamReader reader = new StreamReader(fs))
    {
        string text = reader.ReadToEnd();
        Console.WriteLine(text);
    }

    fs.Seek(0, SeekOrigin.Begin); // ObjectDisposedException thrown.

    using (StreamReader reader = new StreamReader(fs))
    {
        string text = reader.ReadToEnd();
        Console.WriteLine(text);
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?什么是真的处置?为什么操纵StreamReader会以这种方式影响相关的流?期望可以多次读取可搜索流是不合逻辑的,包括几个StreamReaders?

c# idisposable stream streamreader

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

在Chrome中以绿色背景显示的网络套接字消息有什么特别之处?

查看Stack Exchange上的Web套接字,我注意到Chrome中的某些消息以绿色背景显示:

开发人员工具的网络选项卡的屏幕截图,显示带有绿色背景的消息,带有白色背景的普通消息

这些消息有什么特别之处?这些是什么?

google-chrome websocket

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

.NET应用程序每台机器/每用户许可

我即将为我的应用程序实现一个非常基本的许可功能.每台计算机(或每个操作系统)或每个用户可以授予序列号(对于Windows Server中的CAL:如果我的应用程序由一台计算机上的多个用户使用,或者一个用户使用多个用户)机).

  1. 对于每个操作系统许可,我用的SerialNumberWin32_OperatingSystem.

  2. 对于每用户许可,我使用:

    WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
    if (currentIdentity != null)
    {
        SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid;
        Console.WriteLine(userSid);
    }
    
    Run Code Online (Sandbox Code Playgroud)

然后将获得的OS序列号或SID的散列存储在数据库中,与应用程序序列相关联; 每次程序启动时,它都会查询服务器,发送OS SN/SID和应用程序序列的散列.

这样做是对的,还是完全错的?它会在每台Windows机器上运行吗?(例如,使用主板串口是错误的)

c# wmi licensing piracy serial-number

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

使用默认(类型)时为什么合同格式错误?

在编译使用代码契约的代码时,我有一个非常奇怪的错误,我不明白.

[ContractInvariantMethod]
private void ObjectInvariant()
{
    Contract.Invariant(
        this.isSubsidiary ||
        this.parentCompanyId == default(Guid));
}
Run Code Online (Sandbox Code Playgroud)

失败,出现以下错误:

合同格式错误.在方法'<ProjectName> .ObjectInvariant'中赋值后找到不变量.

如果代码修改如下:

[ContractInvariantMethod]
private void ObjectInvariant()
{
    Contract.Invariant(
        this.isSubsidiary ||
        this.parentCompanyId == Guid.Empty);
        // Noticed the Guid.Empty instead of default(Guid)?
}
Run Code Online (Sandbox Code Playgroud)

它汇编得很好.

我有什么问题default(Guid)

c# default-value code-contracts c#-4.0

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