你有没有得到任何提示或黑客,以充分利用Visual Studio 2008中的JavaScript intellisense选项?
Visual Studio向我显示"名称空间"并使用文档功能(<param>和<summary>).我一直无法得到<return>文档功能.
现在,这一切都很好.但是,当我调用特权函数时,Visual Studio不知道它,因此我没有得到任何文档.
有没有什么方法可以将公共变量和特权函数暴露给Visual Studios智能感知功能,同时仍然使用私有成员创建对象?
我见过有人说使用不带参数的catch是不好的形式,特别是如果catch没有做任何事情:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
catch // No args, so it will catch any exception
{}
reader.Close();
Run Code Online (Sandbox Code Playgroud)
但是,这被认为是好的形式:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
finally // Will execute despite any exception
{
reader.Close();
}
Run Code Online (Sandbox Code Playgroud)
据我所知,将清理代码放在finally块中并在try..catch块之后放置清理代码之间的唯一区别是,如果你的try块中有return语句(在这种情况下,最后清理代码将是运行,但try..catch之后的代码不会).
否则,最后有什么特别之处?
我确定有一些带有perl,ruby,bash的简单单线程,无论是什么让我在循环中运行命令,直到我在stdout中观察到一些字符串,然后停止.理想情况下,我也想捕获stdout,但如果要进入控制台,这可能就足够了.
目前所讨论的特定环境是RedHat Linux,但有时在Mac上也需要同样的东西.所以,通用和*nixy是最好的.不关心Windows - 大概是一个*nixy的东西可以在cygwin下工作.
更新:请注意,通过"观察一些字符串"我的意思是"stdout包含一些字符串"而不是"stdout IS some string".
在Java中,我有一个VertexJava3D类的子类Point3f.现在Point3f根据equals()其坐标值计算,但对于我的Vertex类,我想要更严格:如果它们是同一个对象,则两个顶点相等.到现在为止还挺好:
class Vertex extends Point3f {
// ...
public boolean equals(Object other) {
return this == other;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这违反了合同equals(),但由于我只将顶点与其他顶点进行比较,这不是问题.
现在,为了能够将顶点放入a中HashMap,该hashCode()方法必须返回与之一致的结果equals().它目前正在这样做,但可能将其返回值基于其字段Point3f,因此将为Vertex具有相同坐标的不同对象提供哈希冲突.
因此,我想hashCode()基于对象的地址,而不是从Vertex字段中计算它.我知道这个Object类会这样做,但是我不能调用它的hashCode()方法,因为Point3f它会覆盖它.
所以,实际上我的问题是双重的:
equals()吗?编辑:我只想到了一些东西......我可以int在对象创建时生成一个随机值,并将其用于哈希码.这是一个好主意吗?为什么不)?
当使用它来管理多对多关系时,Apple的文档-setPrimitiveValue:forKey:在两个方面含糊不清.
首先他们说:
如果您尝试设置与新NSMutableSet对象的多对多关系,它将(最终)失败.
最后?那有什么意思?它会在以后失败-[NSManagedObjectContext save:]吗?当托管对象变成故障然后再回来时?什么时候?我是否可以编写一个测试用例来持续按需重新创建失败?
其次,提供示例代码以正确处理这种情况,他们写道:
首先使用现有的set
primitiveValueForKey:(确保方法不返回nil)
我应该怎么做,如果/当方法不返回零?assert()它并立即失败,因为这意味着整个对象图已损坏,保存将导致数据丢失?NSAssert()在它上面作为对来电者的警告,但按下(默默无为)?
现在我只是NS[Mutable]Set在那种情况下直接分配我想要的东西,就像这样:
- (void)setChildren:(NSSet*)value_ {
NSMutableSet *mutableRelationshipSet = [[[self primitiveValueForKey:@"children"] mutableCopy] autorelease];
if (mutableRelationshipSet) {
[mutableRelationshipSet setSet:value_];
[self setPrimitiveValue:mutableRelationshipSet forKey:@"children"];
} else {
[self setPrimitiveValue:value_ forKey:@"children"];
}
}
Run Code Online (Sandbox Code Playgroud)
那是错的吗?
我正在开发一个介于电子邮件服务和社交网络之间的Web应用程序.我觉得它有可能在未来发展壮大,所以我担心可扩展性.
我决定为每个活跃用户创建一个单独的SQLite数据库,而不是使用一个集中式MySQL/InnoDB数据库然后对其进行分区:每个"分片"一个活跃用户.
这样,备份数据库就像每天一次将每个用户的小型数据库文件复制到远程位置一样简单.
扩展将像添加额外的硬盘来存储新文件一样简单.
当应用程序超出单个服务器时,我可以使用GlusterFS在文件系统级别将服务器链接在一起并运行应用程序,或者构建一个简单的SQLite代理系统,允许每个服务器操作相邻服务器中的sqlite文件.
并发问题将是最小的,因为每个HTTP请求一次只能触及一个或两个数据库文件,成千上万,而SQLite只会阻止读取.
我敢打赌,这种方法可以让我的应用程序优雅地扩展,并支持许多很酷和独特的功能.我打错了吗?我错过了什么吗?
更新我决定采用一种不太极端的解决方案,到目前为止工作正常.我正在使用固定数量的分片 - 准确地说是256个sqlite数据库.通过简单的散列函数将每个用户分配并绑定到随机分片.
我的应用程序的大多数功能每个请求只需要访问一个或两个分片,但有一个特别需要在256到10个不同的分片上执行简单查询,具体取决于用户.测试表明,如果所有数据都缓存在RAM中,则需要大约0.02秒或更短的时间.我想我可以忍受这个!
UPDATE 2.0我移植应用到MySQL/InnoDB和能够得到有关规则请求相同的性能,但对于需要碎片步行一个请求时,InnoDB快4-5倍.出于这个原因,以及其他原因,我正在放弃这种架构,但我希望某个地方找到它的用途......谢谢.
很多时候我在HTML页面中看到过像这样的链接:
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
Run Code Online (Sandbox Code Playgroud)
return false那里有什么影响?
而且,我通常不会在按钮中看到它.
这是指定的吗?在w3.org的某些规范中?
我想在我的所有应用程序服务器上安装gem,但是gem install需要sudo访问权限 - 如何仅在运行此capistrano命令时启用sudo?
换句话说,我不希望在我的所有部署配方中使用sudo,就在我在命令行上调用此命令时.
模板在已有的编程语言中是一项相当健康的业务,但有哪些好的可以在JavaScript中处理?
"模板"是指接受数据对象作为输入的文档,将数据插入某种序列化标记语言,并输出标记.众所周知的例子是JSP,原始的PHP,XSLT.
"好",我的意思是HTML作者的声明和容易编写,它是健壮的,并且它也支持其他语言.比我所了解的选项更好.一些"不好"的例子:
字符串数学:
element.innerHTML = "<p>Name: " + data.name
+ "</p><p>Email: " + data.email + "</p>";
Run Code Online (Sandbox Code Playgroud)
显然太笨重,HTML结构不明显.
XSLT:
<p><xsl:text>Name: </xsl:text><xsl:value-of select="//data/name"></p>
<p><xsl:text>Email: </xsl:text><xsl:value-of select="//data/email"></p>
Run Code Online (Sandbox Code Playgroud)
//结构上这很好用,但是让我们面对它,XSLT会混淆HTML开发人员.
Trimpath:
<p>Name: ${data.name}</p><p>Email: ${data.email}</p>
Run Code Online (Sandbox Code Playgroud)
//这很好,但处理器仅在JavaScript中受支持,并且该语言有点原始(http://code.google.com/p/trimpath/wiki/JavaScriptTemplateSyntax).
我很想看到一个JSP或ASP或PHP的子集移植到浏览器,但我还没有找到.
现在人们在JavaScript中使用什么来模仿它们?
几个月后,这里发布了大量可行的模板语言,但大多数语言都不能用于任何其他语言.大多数这些模板无法在JavaScript引擎之外使用.
例外是微软 - 您可以在浏览器或任何其他ASP引擎中处理相同的ASP.由于您已经绑定到Microsoft系统,因此它有自己的一组可移植性问题.我已经将其标记为答案,但我仍然对更便携的解决方案感兴趣.
感谢所有输入到目前为止!
当我开始编写数据库查询时,我还不知道JOIN关键字,当然我只是扩展了我已经知道的并写了这样的查询:
SELECT a.someRow, b.someRow
FROM tableA AS a, tableB AS b
WHERE a.ID=b.ID AND b.ID= $someVar
Run Code Online (Sandbox Code Playgroud)
现在我知道这和INNER JOIN一样,我在代码中找到所有这些查询,并问自己是否应该重写它们.他们有什么臭的或他们就好吗?
编辑:
我的回答摘要:此查询没有任何问题,但使用关键字最有可能使代码更易读/可维护.
我的结论是:我不会改变我的旧查询,但我将纠正我的写作风格,并在将来使用关键字.
谢谢你的回答!