小编Jim*_*son的帖子

使用decltype获取表达式的类型,不使用const

考虑以下程序:

int main ()
{
    const int e = 10;

    for (decltype(e) i{0}; i < e; ++i) {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

这无法使用clang(以及gcc)进行编译:

decltype.cpp:5:35: error: read-only variable is not assignable
    for (decltype(e) i{0}; i < e; ++i) {
                                  ^ ~
Run Code Online (Sandbox Code Playgroud)

基本上,编译器假设i必须是const,因为e是.

有没有办法可以decltype用来获取类型e,但删除说明const符?

c++ decltype c++11

36
推荐指数
4
解决办法
8689
查看次数

在javascript Date对象中获取当前文档的Last-Modified日期

浏览器提供了一种通过查看来确定文档上次修改日期的方法document.lastModified.此属性由HTTP Last-Modified标头确定,并作为字符串返回.

我的目标是将此属性转换为Javascript Date对象.目前我正在使用

var date = new Date(document.lastModified);
Run Code Online (Sandbox Code Playgroud)

哪个成功解析了字符串.但是,我很好奇这是否适用于浏览器和跨语言环境.

对我来说非常有趣的是,它document.lastModified表示与Last-Modified给定的HTTP 头相同的日期,但字符串不相同.在我看来,浏览器解析Last-Modified标头,将其转换为内部日期表示,然后document.lastModified根据它设置为字符串.如果是这种情况,document.lastModified可能会以一种方式格式化,以便Javascript Date构造函数可以解析它,因为它们都可能使用相同的区域设置和格式规则.但我无法确认这一点.

javascript browser date

10
推荐指数
1
解决办法
1万
查看次数

使用Julia更新运算符进行不必要的分配

考虑以下功能:

function mytest(x, b)
    y = zeros(x[:,:,1])
    for i in 1:length(b)
        y += b[i] * x[:,:,i]
    end
    return y
end
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到以下内容:

x = rand(30,30,100000)
b = rand(100000)
@time mytest(x,b)

elapsed time: 0.571765222 seconds (727837732 bytes allocated, 66.49% gc time)
Run Code Online (Sandbox Code Playgroud)

为什么要分配这么多内存并花费这么多时间进行垃圾回收?代码应该是类型稳定的,我希望+=运营商不执行重新分配.但是,似乎每次添加两个矩阵时它都会重新分配.

我应该认为这是朱莉娅的一个错误吗?更重要的是,我如何以不重新分配的方式编写此代码?

编辑:修正错字.

profiling garbage-collection memory-management julia

8
推荐指数
1
解决办法
343
查看次数

如何在IPython笔记本中加载Raphael,避免因require.js而出现的一些问题?

在IPython笔记本中,可以预期以下代码会导致Raphael.js成功加载到全局命名空间中.

from IPython.display import Javascript

raphael_url = "https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"
Javascript('alert(Raphael);', lib=[raphael_url])
Run Code Online (Sandbox Code Playgroud)

但是,它在使用require.js的最新版本的IPython中不起作用.事实证明,IPython加载jQuery.getScript()的Raphael.js会识别require.js的存在,因此不会将自身插入到全局命名空间中.实际上,如果首先运行javascript代码删除window.define对象,Raphael就不再意识到require.js存在,并且它会根据我的意愿将自身插入到全局命名空间中.换句话说,上面的代码在运行以下代码后工作:

Javascript('window.define = undefined;')
Run Code Online (Sandbox Code Playgroud)

因此,我能够让Raphael在最新版本的IPython笔记本中加载的唯一方法是删除(或预留)window.define.

确定问题之后,我对require.js不太熟悉,知道哪些软件对协议起作用.拉斐尔是否使用了一种糟糕的方法来测试require.js的存在?IPython应该直接使用require.js而不是jQuery.getScript()加载用户提供的JavaScript库吗?或者有一种方式我作为用户应该拥抱require.js,这将给我的Raphael对象,而不需要任何特殊的黑客?(如果上一个问题的答案是肯定的,有没有办法我也可以支持旧版本的IPython笔记本,它们不使用require.js?)

raphael requirejs ipython-notebook

7
推荐指数
1
解决办法
844
查看次数

boost :: shared_polymorphic_downcast在boost 1.53.0中消失了.我应该用什么呢?

boost::shared_polymorphic_downcast1.52.01.53.0之间消失.在发行说明中没有提到任何内容,并且提交(r81463)仅包含神秘的日志消息"Update shared_ptr casts".

我不清楚我现在应该使用什么,或者为什么删除此功能.有人可以帮忙吗?

编辑:感谢大家的见解.我发现自己有点沮丧,提升会在没有任何理由或通知的情况下在版本中进行向后兼容的更改,我也发现它们删除了有用的功能令人沮丧.但根据回复,我可以用两行代码而不是一行来做我想要的,所以我认为这就足够了.尽管如此,我仍然没有回答这个问题,因为没有人提供一种简单的方法来获得旧的行为boost::shared_polymorphic_downcast; 也就是说,使用dynamic_cast何时启用调试,何时启用调试static_cast.

c++ boost shared-ptr

6
推荐指数
1
解决办法
2276
查看次数

如何在 Rust 中更改向量的长度?

编者注:这个问题早于 Rust 1.0 并且从那时起语法和方法发生了变化。一些答案说明了 Rust 1.0。

我有一个函数,我想修改一个向量到位。

fn f(v: &mut Vec<int>) {
    v = Vec::from_elem(10 as uint, 0i);
}

fn main() {
    let mut v: Vec<int> = Vec::new();
    f(&mut v);
}
Run Code Online (Sandbox Code Playgroud)

但这无法编译。具体来说,我想调整大小v以包含 10 个零值元素。我究竟做错了什么?

vector rust

6
推荐指数
1
解决办法
4253
查看次数

如何测试 stdin 在 julia 中是否有可用输入?

我想检测stdin在短时间内是否有输入,并以任何一种方式继续执行,结果存储在Bool. (我的真正目标是在终端中运行的模拟上实现一个暂停按钮。第二次按键应该取消暂停程序,它应该继续执行。)我尝试使用,poll_fd但它不起作用stdin

julia> FileWatching.poll_fd(stdin, readable=true)
ERROR: MethodError: no method matching poll_fd(::Base.TTY; readable=true)
Run Code Online (Sandbox Code Playgroud)

有没有办法对朱莉娅起作用?我找到了一个适用于 python 的解决方案,我已经考虑通过 PyCall 使用它,但我正在寻找

  1. 一种更干净、纯粹的朱莉娅方式;和
  2. 一种不会对抗或可能干扰 julia 使用 libuv 的方式。

polling julia

4
推荐指数
1
解决办法
274
查看次数

如何在Julia中确定人类可读的文件大小?

我想在Julia中向用户显示一个人类可读的文件大小.

例如,Python有humanize.naturalsize():

>>> humanize.naturalsize(1000000)
'1.0 MB'
>>> humanize.naturalsize(1000000, binary=True)
'976.6 KiB'
Run Code Online (Sandbox Code Playgroud)

我怎样才能在朱莉娅实现这一目标?

julia

3
推荐指数
1
解决办法
316
查看次数