众所周知,在XHR(又名AJAX)Web应用程序中,没有为您的应用程序构建历史记录,单击刷新按钮通常会将用户移出他/她当前的活动.我偶然发现了location.hash(例如http://anywhere/index.html#somehashvalue)来规避刷新问题(使用location.hash通知你的应用程序它的当前状态并使用页面加载处理程序来重置该状态).这真的很好很简单.
这让我想到使用location.hash来跟踪我的应用程序的历史记录.我不想使用现有的库,因为它们使用iframe等.所以这是我的镍和硬币:当应用程序页面加载时我开始这样:
setInterval(
function(){
if (location.hash !== appCache.currentHash) {
appCache.currentHash = location.hash;
appCache.history.push(location.hash);
/* ... [load state using the hash value] ... */
return true;
}
return false;
}, 250
);
Run Code Online (Sandbox Code Playgroud)
(appCache是包含应用程序变量的预定义对象)想法是从哈希值触发应用程序中的每个操作.在体面的浏览器中,哈希值更改会在历史记录中添加一个条目,在IE(<= 7)中则不会.在所有浏览器中,向后或向前导航到具有其他哈希值的页面不会触发页面刷新.这就是间隔函数接管的地方.每次检测到哈希值更改(通过编程方式,或通过单击后退或前进)时,应用程序都可以采取适当的操作.应用程序可以跟踪它自己的历史记录,我应该能够在应用程序中显示历史记录按钮(特别是对于IE用户).
据我所知,这可以跨浏览器工作,并且在内存或处理器资源方面没有任何成本.所以我的问题是:这是否是管理XHR-apps历史的可行解决方案?优缺点都有什么?
更新:因为我使用我的自制框架,我不想使用现有的框架之一.为了能够在IE中使用location.hash并将其包含在历史中,我创建了一个简单的脚本(是的,它需要一个iframe),这可能对你有用.我在我的网站上发布它,随意使用/修改/批评它.
说我有一个IEnumerable.例如,{2,1,42,0,9,6,5,3,8}.
我需要获得与谓词匹配的项目的"运行".例如,如果我的谓词是
bool isSmallerThanSix(int number){...}
Run Code Online (Sandbox Code Playgroud)
我想获得以下输出:{{2,1},{0},{5,3}}
是否有内置功能可以实现这一目标?
到目前为止我有这个:
public static IEnumerable<IEnumerable<T>> GetSequences<T>(this IEnumerable<T> source,
Func<T, bool> selector) {
if (source == null || selector == null) {
yield break;
}
IEnumerable<T> rest = source.SkipWhile(obj => !selector(obj));
while (rest.Count() > 0) {
yield return rest.TakeWhile(obj => selector(obj));
rest = rest
.SkipWhile(obj => selector(obj))
.SkipWhile(obj => !selector(obj));
}
}
Run Code Online (Sandbox Code Playgroud)
这看起来很有效,但是我是在半夜写的,因此从星期二开始就效率低十五.是否有更好的,最好是内置(因此经过良好测试)的方式?
非常感谢你们的时间,
利雅.
最近我开始使用支持演员/代理/无共享架构的替代语言 - 即.scala,clojure等(clojure也支持共享状态).
到目前为止,我所阅读的大部分文档都集中在介绍级别.我正在寻找的是四人帮中更高级的文档,而不是基于什么共享.
为什么?它有助于改变设计思维的变化.简单的例子很简单,但在现实世界的Java应用程序(单线程)中,您可以拥有1000个具有复杂关系的成员的对象图.但是,基于代理的并发开发,它在设计大型系统时引入了一整套全新的思路.即.代理粒度 - 一个代理应管理多少状态 - 对性能的影响等,或者是将共享状态对象图映射到基于代理的系统的良好模式.将域模型映射到设计的技巧.讨论不是关于技术,而是关于如何在设计中最好地使用该技术(现实世界"复杂"的例子会很棒).
我想将我的MS SQL Server 2005存储过程自动保存到.sql文件(更喜欢我可以通过.bat调用的工具)所以我不必手动点击每个sproc并保存它.
我已经从devio IT中找到了SMOscript,但它收集了所有需要一些时间的表和sproc.有没有类似的工具,我可以定义哪些sproc(s)导出?此外,我错过了USE子句,其中SMOScript不会添加到导出文件,与手动导出为CREATE的脚本sproc相反.
最好的问候肖恩
我的一位同事重构了这段代码:
private void btnGeneral_Click(object sender, RoutedEventArgs e)
{
Button button = (Button)e.OriginalSource;
Type type = this.GetType();
Assembly assembly = type.Assembly;
string userControlFullName = String.Format("{0}.{1}", type.Namespace, button.Name);
UserControl userControl = (UserControl)assembly.CreateInstance(userControlFullName);
}
Run Code Online (Sandbox Code Playgroud)
这段代码:
private void btnGeneral_Click(object sender, RoutedEventArgs e)
{
Button button = (Button)e.OriginalSource;
Type type = this.GetType();
Assembly assembly = type.Assembly;
UserControl userControl = (UserControl)assembly.CreateInstance(String.Format("{0}.{1}", type.Namespace, button.Name));
}
Run Code Online (Sandbox Code Playgroud)
如果它只使用一次,你就不需要创建一个变量.
我的回答是,制作曾经使用过的变量是很好的做法,因为它:
反对这种方式的论据"更多代码行","不必要的变量"是使编译器的生活更容易但没有显着的速度或资源节省的参数.
任何人都可以想到一个不应该创建曾经使用过的变量名的情况吗?
一切都在标题:)
目前,我们有一个VS2005解决方案,包含20多个项目.喜欢
MySolution
MySolution.Modules.Foo
MySolution.Modules.Bar
[insert many here]
MySolution.Modules.Baz
Run Code Online (Sandbox Code Playgroud)
在一个项目中"合并"MySolution.Modules.*会有害吗?将保留所有名称空间,因此这里没有问题.
但有什么我没想过的吗?
注意:目前,不能有循环引用:如果MySolution.Modules.Foo引用MySolution.Modules.Bar,MySolution.Modules.Bar不能引用MySolution.Modules.Foo.所以我们必须小心不要创造一些.
我已经创建了一个jQuery UI Modal表单,我希望该表单能够触发回发,但是我很难让它运行起来.
我知道有很多基于使用SimpleModal插件的文章,我试图改编这些并覆盖_doPostback函数,但没有任何乐趣.
我认为问题在于我的__doPostBack函数调用以及参数应该是什么.是这样的吗?
这是我的表格
<form id="summaryForm" runat="server">
<div id="dialog" title="Quick Booking">
<p>Select user from list or enter name in box</p>
<fieldset>
<p><label>Is machine going out of the office?</label></p>
<asp:RadioButton TextAlign="Left" GroupName="outOfOffice" Text="Yes" ID="optYes" class="radio" runat="server" />
<asp:RadioButton TextAlign="Left" GroupName="outOfOffice" Text="No" ID="optNo" class="radio" runat="server" Checked="true" />
<label for="dropLstUser">User:</label>
<asp:DropDownList ID="dropLstUser" runat="server" />
<input type="text" name="txtUser" id="txtUser" value="" class="text" />
<label for="txtStartDate">Start Date:</label>
<input type="text" id="txtStartDate" name="txtStartDate" class="datepicker" />
<asp:HiddenField ID="assetField" runat="server" />
<%--<button onclick="performPostBack('summaryForm')">Postback</button>--%>
</fieldset>
</div>
//--------------------------------
Run Code Online (Sandbox Code Playgroud)
这是JavaScript代码: …
对于我们这些编程足够多的人,我确信我们已经遇到了许多不同风格的编码标准,您可以在编程时使用这些标准.
例如http://msdn.microsoft.com/en-us/library/ms229042.aspx
您可能会为您当前所在的公司或您正在处理的代码的原始作者推导出您的编码标准.编码样式通常用于特定的程序语言,一种编码语言中的某些样式可能不适合其他编程语言.当然,一些编码标准可以应用于许多不同的程序语言.
感谢您的时间.
编辑:我们知道有很多关于这个主题的相关文章,但是C#编码标准/ SO中的最佳实践在那里有一些非常有用的链接,值得一看.(查看ESV的.NET/C#指南上的2个链接 - 接受的答案)
对于那些使用f#的人来说,你使用它编写了哪些功能区域?什么是非常适合的语言,它与c#相比具有更强大和更轻松的功能?
在我的研究中,为了找到一种方法让PHP告诉我在我的网站上有多少人"在线",我发现有很多方法可以"估计"这个.
我已经选择记录网站上发生的所有事情,也是出于错误管理的缘故,但现在我一直在编写我的SQL查询.
基本上我有一个带有'IP','userid'和'datetime'的数据库,我认为像这样的查询可以解决这个问题:
SELECT distinct(IP), datetime
FROM `bigBrother`
WHERE datetime BETWEEN DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND NOW()
Run Code Online (Sandbox Code Playgroud)
问题是我的网站主要由学校网络上的学生查看和使用,而且......他们都拥有相同的IP.
所以问题是,我这样做是否正确,我可以从我的数据库中选择两个不同的行,以便我可以整理注册用户(谁将拥有'userid' - 其他人将拥有userid = 0)?