小编Kyl*_*and的帖子

使用HTML5 History API的好教程(Pushstate?)

我正在研究使用HTML5 History API解决与AJAX加载内容的深层链接问题,但我正在努力开始.有没有人知道有什么好的资源?

我想使用它,因为它似乎是一种很好的方式,允许发送链接的可能性可能没有JS打开.当有人向JS发送链接给某人时,很多解决方案都会失败.

我最初的研究似乎指向JS中的History API和pushState方法.

http://html5demos.com/history

javascript html5 pushstate html5-history

168
推荐指数
4
解决办法
13万
查看次数

如何在Git中查看文件历史记录?

使用Subversion,我可以使用TortoiseSVN来查看文件的历史记录/日志.

我怎么能用Git做到这一点?

只查找特定文件的历史记录,然后比较不同版本的能力.

git timeline git-diff git-log revision-history

125
推荐指数
8
解决办法
15万
查看次数

在Chrome中加载页面上的Popstate

我正在为我的网络应用程序使用History API,但有一个问题.我执行Ajax调用以更新页面上的一些结果并使用history.pushState()来更新浏览器的位置栏而不重新加载页面.然后,当然,我使用window.popstate来恢复单击后退按钮时的先前状态.

问题是众所周知的 - Chrome和Firefox以不同的方式对待popstate事件.虽然Firefox没有在第一次加载时启动它,但Chrome确实如此.我想拥有Firefox风格并且不会在加载时触发事件,因为它只是在加载时使用完全相同的结果更新结果.除了使用History.js之外是否有解决方法?我不想使用它的原因是 - 它本身需要太多的JS库,因为我需要在已经有太多JS的CMS中实现它,我想最小化JS我放入它.

所以,想知道是否有办法让Chrome不加载'popstate'加载,或者有人试图使用History.js,因为所有库一起混合成一个文件.

html5 google-chrome javascript-events browser-history

94
推荐指数
5
解决办法
5万
查看次数

"未定义的行为"真的允许*发生任何事情吗?

编辑:这个问题并不是一个讨论未定义行为的(de)优点的论坛,但这就是它的变化.在任何情况下,这个关于假设的C编译器没有未定义行为的线程可能对那些认为这是一个重要主题的人更感兴趣.


当然,"未定义行为"的经典伪装例子是"鼻子恶魔" - 物理上是不可能的,无论C和C++标准允许什么.

因为C和C++社区倾向于强调未定义行为的不可预测性以及允许编译器在遇到未定义行为时使程序完全做任何事情的想法,所以我假设标准没有任何限制关于行为,以及未定义的行为.

C++标准中相关引用似乎是:

[C++14: defns.undefined]: [..]允许的未定义行为包括完全忽略不可预测的结果,在转换或程序执行期间以环境特征(有或没有发出诊断消息)的文档方式执行,终止转换或执行(发布诊断信息).[..]

这实际上指定了一小组可能的选项:

  • 忽略这种情况 - 是的,标准继续说这会产生"不可预测的结果",但这与编译器插入代码不同(我认为这是一个先决条件,你知道,鼻子恶魔).
  • 以文件化的方式表现环境 - 这实际上听起来相对温和.(我当然没有听说过任何有关鼻腔恶魔的记录.)
  • 终止翻译或执行 - 使用诊断,不能少.那个UB会表现得那么好吗?

我假设在大多数情况下,编译器选择忽略未定义的行为; 例如,当读取未初始化的内存时,可能是插入任何代码以确保一致行为的反优化.我认为陌生人类型的未定义行为(例如" 时间旅行 ")将属于第二类 - 但这需要记录这些行为并"环境特征"(所以我猜鼻腔恶魔只能由地狱计算机?).

我误解了这个定义吗?这些仅仅是可能构成未定义行为的例子,而不是一个全面的选项列表吗?"任何可能发生的事情"的说法仅仅意味着忽视这种情况的意外副作用吗?

编辑:两个小问题澄清:

  • 我认为从原始问题中可以清楚地看出,我认为对大多数人来说都是如此,但无论如何我都会拼出来:我确实意识到"鼻子恶魔"是诙谐的.
  • 请不要写的(其他)答案解释UB允许特定于平台的编译器优化,除非你解释它是如何允许的优化,实现定义的行为也不会允许.

c c++ undefined-behavior language-lawyer

93
推荐指数
6
解决办法
6796
查看次数

在没有括号的Java中调用新对象的方法:操作违规的顺序?

根据此Java运算符优先级和关联性表,成员访问优先级高于new运算符.

但是,给定一个类myClass和一个非静态成员函数myFunction,以下代码行是有效的:

new myClass().myFunction();

如果.之前评估过new,该行怎么执行?换句话说,为什么不需要括号?

(new myClass()).myFunction();

我的猜测是,由于()共享优先.,因此myClass()首先进行评估,因此编译器甚至在评估new关键字之前就知道myClass正在调用具有零参数的构造函数.然而,这似乎仍然暗示第一行应该是相同的new (myClass().myFunction());,但事实并非如此.

java parsing operator-precedence

30
推荐指数
1
解决办法
4060
查看次数

为什么python的list.append()方法的时间复杂度为O(1)?

正如TimeComplexity文档中所见,Python的list类型实现使用数组.

因此,如果正在使用数组并且我们做了一些追加,最终您将不得不重新分配空间并将所有信息复制到新空间.
毕竟,怎么可能是O(1)最坏的情况?

python time-complexity amortized-analysis python-2.7

27
推荐指数
3
解决办法
2万
查看次数

在常量表达式中调用的`static constexpr`函数是......错误?

我有以下代码:

class MyClass
{
  static constexpr bool foo() { return true; }
  void bar() noexcept(foo()) { }    
};
Run Code Online (Sandbox Code Playgroud)

我希望,因为它foo()是一个static constexpr函数,并且因为它是在bar声明之前定义的,所以这是完全可以接受的.

但是,g++给我以下错误:

 error: ‘static constexpr bool MyClass::foo()’ called in a constant expression
Run Code Online (Sandbox Code Playgroud)

这是......不太有用,因为在常量表达式中调用函数的能力是整个点constexpr.

clang++更有帮助.除了声明参数noexcept必须是常量表达式的错误消息之外,它还说:

note: undefined function 'foo' cannot be used in a constant expression
note: declared here
static constexpr bool foo() { return true; }
                      ^
Run Code Online (Sandbox Code Playgroud)

那么......这是一个两遍编译问题吗?问题是编译器在定义任何成员函数之前是否尝试声明它们中的所有成员函数?(注意,在类的上下文之外,编译器都不会抛出错误.)这让我感到惊讶; 直观地说,我认为static constexpr成员函数不能在任何和所有常量表达式中使用,无论是在类中还是在类中.

c++ constant-expression noexcept constexpr c++11

23
推荐指数
1
解决办法
3474
查看次数

将cygwin主目录设为Windows的用户配置文件

当我在Windows机器上开发Ruby on Rails时,我需要使用cygwin来模拟Unix命令提示符.现在的问题是,每次当我打开cygwin的终端的时候,我把这个目录C:/ Cygwin的/家/ my_user_name而不是Windows的默认用户目录C:/用户/ my_user_name.

有谁知道如何将cygwin的默认主目录设为Windows默认的C:/ Users/my_user_name目录?

我已经浏览了Stack Overflow中提供的各种解决方案,但它们都不适合我,"mkpasswd"也不起作用.这与我的操作系统版本有什么关系,或者其他什么?

我使用的是cygwin 1.7.5,我的操作系统是Windows 7 Business 64位.

cygwin

21
推荐指数
3
解决办法
2万
查看次数

可以`*this`是`move()`d?

我想定义一个用于编组数据的类; 当编组完成后,我想move从其中输出编组数据,这可能会使编组对象无效.

我相信这可以通过以下static功能实现extractData:

class Marshaller
{
  public:
    static DataType extractData(Marshaller&& marshaller)
    {
      return std::move(marshaller.data);
    }
  private:
    DataType data;
}
Run Code Online (Sandbox Code Playgroud)

这有点不方便打电话,但是:

Marshaller marshaller;
// ... do some marshalling...
DataType marshalled_data{Marshaller::extractData(std::move(marshaller))};
Run Code Online (Sandbox Code Playgroud)

那么我可以用成员函数包装它吗?

DataType Marshaller::toDataType()
{
  return Marshaller::extractData(std::move(*this));
}
Run Code Online (Sandbox Code Playgroud)

当然,这将使用以下方式调用:

DataType marshalled_data{marshaller.toDataType()};
Run Code Online (Sandbox Code Playgroud)

...对我来说,看起来更好.但那std::move(*this)件事看起来非常可疑.在调用的上下文中toDataType(),marshaller不能再次使用,但我不认为编译器可以知道:函数体可能在调用者的编译单元之外,所以没有什么可以表明marshaller已经move()应用于它.

这是未定义的行为吗?它完全没问题吗?还是介于两者之间?有没有更好的方法来实现相同的目标,最好不使用宏或要求调用者明确move marshaller

编辑:使用G ++和Clang ++,我发现我不仅可以编译上面的用例,而且我实际上可以继续通过编组器对底层数据进行修改,然后使用该toDataType函数重新提取修改后的数据.我还发现已经提取的数据marshalled_data继续被更改marshaller,这表明它在调用上下文marshalled_data之间共享marshaller,所以我怀疑存在内存泄漏或未定义的行为(来自双删除) .

编辑2: …

c++ move-semantics c++11

21
推荐指数
3
解决办法
1124
查看次数

从文件路径c ++获取目录

获取文件所在目录的最简单方法是什么?我正在使用它来查找工作目录.

string filename = "C:\MyDirectory\MyFile.bat" 
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我应该得到"C:\ MyDirectory".

c++ visual-c++

19
推荐指数
9
解决办法
6万
查看次数