在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)
是有效的语法.
那么是否可以在不指定任何值的情况下插入新行?
简单的问题,我导入一个DLL函数,参数是int*.当我尝试输入Method(0)时,我收到一条错误,上面写着:"int和int*无法转换".
那是什么意思?
按合同编程是.NET的一个现代趋势,但是PHP中的代码契约的库/框架呢?您如何看待这种范例对PHP的适用性?
谷歌搜索"代码合同PHP"没有给我任何帮助.
注意:"按合同编写代码",我指的是按合同设计,因此它与.NET或PHP接口无关.
几年前,我在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会自动将其转换为../.
这段代码有什么问题?什么可能是允许目录遍历或以某种方式破坏某些内容的输入值?
我看到并完成了许多小型产品,其中同一块软件被分成一个可执行文件和几个DLL,这些DLL不仅仅是由其他人完成的共享库,而是专门为这个软件完成的库,由同一个开发团队.(我不是在这里谈论大规模的产品,只需要数百个DLL并与其他产品广泛分享.)
据我所知,从开发人员的角度来看,将代码分成几个部分,每个部分都编译成一个单独的DLL .这意味着:
但最终用户呢?当一切都可以组合在一起时,提供一个由一个EXE和几个DLL组成的软件并不是一件坏事吗?毕竟:
所以是不是但从最终用户的角度更好,对于小/中等规模的方案,以提供一个大的可执行文件?如果是这样,为什么没有工具允许轻松实现(例如,集成在通用IDE中的魔术工具将整个解决方案编译成一个可执行文件,当然不是每次,但是按需或在部署期间).
这有点类似于将所有CSS或所有JavaScript文件放入用户的一个大文件中.拥有多个文件对于开发人员而言更加智能,并且更易于维护,但将网站的每个页面链接到两个文件而不是几十个文件可以优化性能.以同样的方式,CSS精灵对于设计师来说是可怕的,因为它们需要更多的工作,但从用户的角度来看更好.
我通过浏览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编程的"现实世界"中,首选方法是什么:
我需要从开始到结束两次读取一个流.
但是以下代码抛出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?
查看Stack Exchange上的Web套接字,我注意到Chrome中的某些消息以绿色背景显示:

这些消息有什么特别之处?这些是什么?
我即将为我的应用程序实现一个非常基本的许可功能.每台计算机(或每个操作系统)或每个用户可以授予序列号(对于Windows Server中的CAL:如果我的应用程序由一台计算机上的多个用户使用,或者一个用户使用多个用户)机).
对于每个操作系统许可,我用的SerialNumber的Win32_OperatingSystem.
对于每用户许可,我使用:
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机器上运行吗?(例如,使用主板串口是错误的)
在编译使用代码契约的代码时,我有一个非常奇怪的错误,我不明白.
[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)?