我最近阅读了Code Complete,它建议我在实际编码之前创建一个项目规范.
这本书没有详细说明"规格"是什么,以及它们是如何制作的.因为这是软件开发的关键部分,所以我想知道如何创建并非过于详尽的质量规范.
哪里可以了解有关软件规格的更多信息?或者Code Complete中列出的任何其他先决条件?
业务合作伙伴建议使用JSON-RPC而不是SOAP构建Web服务库.(注意他们不是必须在.NET中构建,但我是)
我是这些数据的潜在消费者.
我过去曾使用JSON进行基于客户端的Ajax调用,但这个Web服务库主要用于服务器端调用和同步大量数据.
我对JSON-RPC没有多少经验.
问题:
谢谢
我一直在努力深入了解编译器如何生成机器代码,更具体地说是GCC如何处理堆栈.在这样做的过程中,我一直在编写简单的C程序,将它们编译成汇编并尽力理解结果.这是一个简单的程序及其生成的输出:
asmtest.c
:
void main() {
char buffer[5];
}
Run Code Online (Sandbox Code Playgroud)
asmtest.s
:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
leave
ret
Run Code Online (Sandbox Code Playgroud)
让我感到困惑的是为什么要为堆栈分配24个字节.我知道由于处理器如何寻址内存,堆栈必须以4为增量进行分配,但如果是这种情况,我们应该只将堆栈指针移动8个字节而不是24个.作为参考,缓冲区为17 bytes产生一个移动40个字节的堆栈指针,并且根本没有缓冲区移动堆栈指针8. 1到16个字节之间的缓冲区移动ESP
24个字节.
现在假设8个字节是必要的常量(它需要什么?),这意味着我们分配16个字节的块.为什么编译器会以这种方式对齐?我正在使用x86_64处理器,但即使是64位字也只需要8字节对齐.为什么会出现差异?
作为参考,我正在使用gcc 4.0.1运行10.5的Mac上进行编译,并且未启用任何优化.
我一直遇到这个代码的问题,我花了最近3个小时来挖掘并试图找到答案.由于我没有成功,我将发布代码并询问我应该在我的Web服务上使用哪种参数来处理此请求:
var args = [{ key: 'myId', value: 'myValue' }, { key: 'myOtherId', value: 'myOtherValue'}];
var dataToSend = { name: 'fooId', value: 'fooValue', args: args };
$.ajax({
type: 'POST',
url: 'fooURL',
data: dataToSend,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: OnSuccess,
error: OnError
});
Run Code Online (Sandbox Code Playgroud)
现在,我应该获得哪种签名才能获得"dataToSend"?
我试过了:
[WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Foo(string name, object value, List<Args> args)
{
return "OK";
}
public class Args
{
public string key { get; set; }
public object value { get; set; }
} …
Run Code Online (Sandbox Code Playgroud) 我用迭代器编写了自己的容器模板.我如何实现const_iterator?
template <class T>
class my_container {
private:
...
public:
my_container() : ... { }
~my_container() { }
class iterator : public std::iterator<std::bidirectional_iterator_tag, T> {
public: ...
Run Code Online (Sandbox Code Playgroud) 我想要弄清楚的是,我在Groovy中看到的是否与ExpandoMetaClasses有某种等价.我一直在阅读有关Open Classes的内容,但我无法确定Ruby允许类修改的范围.
借用上面博客中的一个例子,在Groovy中,我可以修改Java的String类并向它添加一个方法,如下所示:
String.metaClass.shout = {->
return delegate.toUpperCase()
}
println "Hello MetaProgramming".shout()
// output
// HELLO METAPROGRAMMING
Run Code Online (Sandbox Code Playgroud)
而且我认为 Ruby会让你重新定义这个类并且可能是别名(请帮助澄清我此时的误解):
class String
def foo
"foo"
end
end
puts "".foo # prints "foo"
Run Code Online (Sandbox Code Playgroud)
在Groovy中,有一些方法可以将核心Java库方法重新定义为单个实例或使用Categories的一组实例,这些方法与我在Ruby中定义为mixins的方式类似.
将开放类的范围扩展到特定实例或模块子集的方法有哪些?
如果我要安装一个已重新定义某个核心类的gem,那么只会影响该模块,或者是否会将任何.rb文件包含在受该影响的gem中?
为Ruby和Groovy做出一些可能的假设提前道歉,我对两者都很新,但一直试图找到两者之间的等价.
Django如何处理每个用户不同时区的情况?理想情况下,我想在UTC时区中运行服务器(例如,在settings.py中设置TIME_ZONE ="UTC"),因此所有日期时间都以UTC格式存储在数据库中.像这样的东西吓到了我,这就是为什么我更喜欢UTC到处都是.
但是,为每个用户存储时区并使用标准的django datetime格式和modelform包装器有多难.我是否期望必须在任何地方编写日期处理代码以将日期转换为用户的时区并再次返回UTC?
我仍在阅读django教程,但我知道在其他一些框架中处理用户时区可能会有多大的痛苦,这些框架假定系统时区无处不在,所以我想我现在就问.
额外:
我创建了一个带有标签,文本框和按钮的表单.在表单加载事件中,我调用了文本框的focus()函数.但是当我运行我的代码时,光标不会进入文本框.加载表单后,我需要光标转到文本框.怎么做?
也许没有区别,但要么比其他方式更好(或者可能是比两者更好的神秘'第三'方式!)......
var startTime;
$(document).ready(function() {
$("#lbl_ajaxInProgress").ajaxStart(function() {
// store the current date/time...
startTime = new Date();
// update labels
$(this).text('Yes');
$("#lbl_ajaxCallTime").text("-");
});
$("#lbl_ajaxInProgress").ajaxStop(function() {
// update labels
$(this).text('No');
$("#lbl_ajaxCallTime").text(myFunctionThatCalculatesTime(startTime));
});
});
Run Code Online (Sandbox Code Playgroud)
var startTime;
$(document).ready(function() {
$("#lbl_ajaxInProgress").ajaxStart(function() {
// update labels
$(this).text('Yes');
});
$("#lbl_ajaxInProgress").ajaxStop(function() {
// update labels
$(this).text('No');
});
$("#lbl_ajaxCallTime").ajaxStart(function() {
// store the current date/time...
startTime = new Date();
// update labels
$(this).text("-");
});
$("#lbl_ajaxCallTime").ajaxStop(function() {
// update labels
$(this).text(myFunctionThatCalculatesTime(startTime));
});
});
Run Code Online (Sandbox Code Playgroud)