我正在为项目编写Cocoa API,API需要一个委托.我提出的协议将所有方法声明为可选,但为什么我会这样做而不是仅仅记录头文件中的委托方法并将普通id作为参数?
function valid()
{
begin_checked = false;
end_checked = false;
alert("begin_checked: " +begin_checked);
alert("end_checked: " +end_checked);
if (document.dd.begin.checked.length == undefined || document.dd.end.checked.length == undefined )
{
alert("In undefined");
}
alert("end");
}
Run Code Online (Sandbox Code Playgroud)
当if语句为false时,它永远不会报警("结束")?如果是真的,它会正确执行.为什么?
我也在zfforums上问了这个问题,但我可能会在这里得到回复.
所以Zend框架是一个通用的,灵活的,松散耦合的,高质量的框架.但是,我发现一些MVC部分不一致且过于复杂.希望你们中的一些人可以证明一些zf设计决策并回答一些问题:
一般问题/评论
为什么zend mvc不遵循与其他zend组件相同的命名约定?例如,mvc使用小写,多个目录名称和类名称不以目录信息为前缀,因此无法轻松自动加载.
我想要添加模块根目录的选项.这样,我就不必通过添加控制器/模块目录来显式配置调度程序.我可以放入一个模块并立即访问它.
为什么视图和动作助手之间有区别?目前,帮助程序并非设计为在整个代码中共享,并且存在加载和访问帮助程序的不一致方法.其他框架允许您在代码中的任何位置共享相同的帮助程序.我认为不需要专门化和违反DRY.
Zend查看问题
为什么视图使用"$ this"来访问资源?我没有看到额外打字的需要.其他一些框架提取()一个视图变量数组,允许从视图中加载全局函数或自动加载静态助手:myHelper :: someMethod();
为什么视图帮助程序每个类只允许一个函数?这导致了很多课程和相关的维护.我更喜欢使用已经提到的任何数量的方法的静态类.
因此,Python函数可以返回多个值.让我感到震惊的是,如果可能的话,这将是方便的(尽管可读性稍差).
a = [[1,2],[3,4]]
def cord():
return 1, 1
def printa(y,x):
print a[y][x]
printa(cord())
Run Code Online (Sandbox Code Playgroud)
......但事实并非如此.我知道你可以通过将两个返回值转储到临时变量中来做同样的事情,但它看起来并不优雅.我还可以将最后一行重写为"printa(cord()[0],cord()[1])",但这会执行两次cord().
有一种优雅,有效的方法吗?或者我应该只看到关于过早优化的引用并忘记这一点?
这篇flickr博客文章讨论了他们对人物选择器自动完成的最新改进背后的想法.
他们必须克服的一个问题是如何解析和处理客户端这么多数据(即所有联系人).他们尝试通过AJAX获取XML和JSON,但发现它太慢了.然后他们说这是通过动态生成的脚本标记(带回调函数)加载数据:
JSON和动态脚本标记:快速但不安全
使用大字符串操作是最后一种方法的问题的理论,我们从使用Ajax转而使用动态生成的脚本标记来获取数据.这意味着联系人数据从未被视为字符串,而是在下载后立即执行,就像任何其他JavaScript文件一样.性能差异令人震惊:解决10,000个联系人的时间为89毫秒(减少了3个数量级),而172个联系人的最小情况只需要6毫秒.每个联系人的解析时间实际上减少了,列表变得越大.这种方法看起来很完美,除了一件事:为了执行这个JSON,我们必须将它包装在一个回调方法中.由于它是可执行代码,世界上任何网站都可以使用相同的方法下载Flickr成员的联系人列表.这是一个交易破坏者.(强调我的)
有人可以在这里考虑确切的安全风险(可能有样本利用)?如何通过脚本标记中的"src"属性加载给定文件,而不是通过AJAX调用加载该文件?
服务器端javascript的使用是否普遍?为什么会使用它而不是任何其他服务器端脚本?是否有特定的用例使其比其他服务器端语言更好?
另外,对如何开始尝试它感到困惑,我在freeBSD上,为了运行服务器端javascript,我还需要安装什么?
对于在发送电子邮件之前自动保存电子邮件或在完成或正式保存之前保存博客文章的应用程序,最佳策略是什么?是否最好在数据库中使用单独的表格进行临时草稿,或者将状态列标记为草稿或发布?我不是在寻找代码,只是方法,但任何其他相关的建议都会受到欢迎,比如保存的频率等等.
当我发送304响应时.浏览器将如何解释我与304一起发送的其他标头?
例如
header("HTTP/1.1 304 Not Modified");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
Run Code Online (Sandbox Code Playgroud)
这是否会确保浏览器不会发送另一个有条件的GET请求(也没有任何请求),直到$ offset时间"用完"?
另外,其他标题呢?
我应该像304一样发送这样的标题:
header('Content-Type: text/html');
Run Code Online (Sandbox Code Playgroud)
我必须发送:
header("Last-Modified:" . $modified);
header('Etag: ' . $etag);
Run Code Online (Sandbox Code Playgroud)
为确保浏览器在下次$ offset已"用完"时发送条件GET请求,或者只是保存旧的Last Modified和Etag值?
发送304响应标头时是否还有其他事项需要注意?
我最近安装了technoweenie/restful-authentication插件(按照承诺的方式工作),但是在经历过的时候users_controller#created,我发现了对user模型上的方法调用的引用
@user.register!
Run Code Online (Sandbox Code Playgroud)
有谁知道定义方法的位置?我几乎搜索了所有生成的代码,但仍然没有看到寄存器方法.
我刚刚开始学习WPF,我试图在ItemsControl中使用GridViewRowPresenter来实质上复制HTML中的简单表的功能.ListView不合适,因为它是交互式的(我不想要).我绑定到未知数量的对象的通用列表.
我有一个自定义对象的列表,它有两个字符串属性:FirstName和LastName.以下代码有效:
<ItemsControl Name="myItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FirstName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
虽然这没有任何结果:
<ItemsControl Name="myItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<GridViewRowPresenter>
<GridViewRowPresenter.Columns>
<GridViewColumnCollection>
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}"></GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}"></GridViewColumn>
</GridViewColumnCollection>
</GridViewRowPresenter.Columns>
</GridViewRowPresenter>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始,我非常感谢任何帮助!谢谢!
javascript ×3
php ×2
autosave ×1
cocoa ×1
cocoa-touch ×1
data-binding ×1
delegates ×1
get ×1
http-headers ×1
itemscontrol ×1
json ×1
protocols ×1
python ×1
return-value ×1
scripting ×1
security ×1
server-side ×1
wpf ×1