小编Pet*_*mit的帖子

如何为闭包参数声明生命周期?

我想在Rust中为一个闭包声明一个生命周期,但我找不到添加生命周期声明的方法.

use std::str::SplitWhitespace;

pub struct ParserError {
    pub message: String,
}

fn missing_token(line_no: usize) -> ParserError {
    ParserError {
        message: format!("Missing token on line {}", line_no),
    }
}

fn process_string(line: &str, line_number: usize) -> Result<(), ParserError> {
    let mut tokens = line.split_whitespace();

    match try!(tokens.next().ok_or(missing_token(line_number))) {
        "hi" => println!("hi"),
        _ => println!("Something else"),
    }

    // The following code gives "cannot infer appropriate lifetime.....
    // let nt = |t: &mut SplitWhitespace| t.next().ok_or(missing_token(line_number));
    // match try!(nt(&mut tokens)) {
    //     "there" => println!("there"),
    // …
Run Code Online (Sandbox Code Playgroud)

closures lifetime rust

17
推荐指数
3
解决办法
4236
查看次数

针对不同的目标体系结构进行编译和优化

简介:我想利用编译器优化和处理器指令集,但仍然有一个可移植的应用程序(在不同的处理器上运行).通常我可以编译5次,让用户选择正确的运行.

我的问题是:我怎样才能自动执行此操作,以便在运行时检测处理器并执行正确的可执行文件而无需用户选择它?


我的应用程序有很多低级数学计算.这些计算通常会持续很长时间.

我想利用尽可能多的优化,最好也是(并不总是支持)指令集.另一方面,我希望我的应用程序可移植且易于使用(因此我不想编译5个不同的版本并让用户选择).

是否有可能编译我的代码的5个不同版本并动态运行在执行时可能的最优化版本?有5个不同的版本,我的意思是不同的指令集和不同的处理器优化.

我不关心应用程序的大小.

此刻我在Linux上使用gcc(我的代码是用C++编写的),但我对英特尔编译器和MinGW编译器的编译也感兴趣.

可执行文件不一定能够在不同的操作系统上运行,但理想情况下也可以自动选择32位和64位.

编辑:请明确指示如何操作,最好使用小代码示例或解释链接.从我的角度来看,我需要一个超级通用的解决方案,它适用于我后来的任何随机C++项目.

编辑我将奖金分配给了ShuggyCoUk,他有很多指针需要注意.我本来希望在多个答案之间拆分,但这是不可能的.我还没有实现,所以问题仍然是"开放"!请继续添加和/或改进答案,即使不再给予奖励.

谢谢大家!

c++ optimization gcc compilation

16
推荐指数
4
解决办法
4166
查看次数

为什么有人会使用#if 1 C预处理器指令?

我正在查看一些C源代码,我不明白以下部分

#if 1

   typedef unsigned short PronId;
   typedef unsigned short LMId;
#  define LM_NGRAM_INT

#else

   typedef unsigned int LMId;
   typedef unsigned int PronId;
#  undef LM_NGRAM_INT

#endif
Run Code Online (Sandbox Code Playgroud)

有人会这样做#if 1吗?难道只有第一个块会被处理吗?

c-preprocessor preprocessor-directive

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

如何在C++中逐行读取文件中的整数组

我有一个文本文件,每行包含一个或多个整数,由空格分隔.我怎样才能以优雅的方式用C++阅读这篇文章?如果我不关心线条,我可以使用cin >>,但重要的是哪一行是整数.

输入示例:

1213 153 15 155
84 866 89 48
12
12 12 58
12
Run Code Online (Sandbox Code Playgroud)

c++ input

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

Rust有什么像scanf吗?

我需要在每一行解析一个文件

<string><space><int><space><float>
Run Code Online (Sandbox Code Playgroud)

例如

abce 2 2.5
Run Code Online (Sandbox Code Playgroud)

在CI中会做:

scanf("%s%d%f", &s, &i, &f);
Run Code Online (Sandbox Code Playgroud)

如何在Rust中轻松地和惯用地执行此操作?

string parsing rust

15
推荐指数
3
解决办法
5427
查看次数

什么是在Google AppEngine(python)中存储配置的好地方

我正在制作一个Google AppEngine应用程序,我怀疑是否应该存储(敏感)配置数据,如凭据.

我应该为配置创建一个bigtable实体,还是有另一种建议的方式来存储它.

python google-app-engine configuration-files

14
推荐指数
2
解决办法
2979
查看次数

读取配置值的顺序是什么?

对于我正在编写的python程序,我想给出以三种不同方式配置它的机会.环境变量,配置文件和命令行参数.

从逻辑上讲,我认为命令行参数应始终具有最高优先级.我有点怀疑环境变量是否应优先于配置文件?配置文件是系统范围的,用户特定的还是在命令行中作为参数给出是否重要?

(注意我的平台是Unix/Linux)

configuration environment-variables configuration-files command-line-arguments

14
推荐指数
2
解决办法
2120
查看次数

如何为php应用程序部署

我目前正在为慈善组织开发一个php应用程序,现在我正处于定义部署实践的阶段.

我们的应用程序使用Zend Framework和Doctrine.该应用程序将推广到不同的服务器,每个服务器都有不同的配置文件.这些机器都是Windows和Linux(但都使用Apache和PHP 5.2+).

源可以在subversion存储库中找到,我们希望在Linux服务器上构建和存储我们的包.

我们希望更新过程与在应用程序目录中运行更新命令一样简单,其中up​​date命令还更新数据库(使用doctrine脚本)并确保框架的依赖性.此更新命令必须是计算机上的命令(我们不能ssh到它们).优选地,我们可以选择下载新版本或提供已经下载的具有新版本的tarball.(但只下载或只有tarball也可以)

具有安装和更新(新版本)的包也优选地由单个命令构建.

我一直在读一些关于phar,pear,phing的内容,但我不知道最好的方法是什么.连续集成服务器并不是必需的,但我认为在构建版本后会自动部署测试环境.

最初只需要更新php应用程序非常容易,最初填写配置文件时可以手动完成安装.

php deployment dependency-management

13
推荐指数
1
解决办法
3823
查看次数

是否有可能给python dict一个初始容量(并且它是有用的)

我正在填写一个包含大约10,000,000个项目的python dict.我对dict(或hashtables)的理解是,当有太多的元素进入它们时,需要调整大小,这个操作花费了相当长的时间.

有没有办法对python dict说你将至少存储n个项目,以便它可以从一开始就分配内存?或者这种优化对我的跑步速度没有任何好处?

(不,我没有检查过我的小脚本的缓慢是因为这个,我实际上现在不会怎么做.但是我会用Java做的,设置HashSet的初始容量吧)

python dictionary capacity

12
推荐指数
1
解决办法
7123
查看次数

请求一个简单的alembic工作示例,用于自动生成迁移

我从我的ubuntu安装了alembic 0.3.4,sqlalchemy,SQLite版本3.7.4,并将SQLAlchemy 0.6.4升级到SQLAlchemy 0.7或更高版本.我按照说明操作:http://alembic.readthedocs.org/en/latest/tutorial.html

现在我正在测试:自动生成迁移我创建了一个包:schemas和一个包标记下的模式:init .py,其中定义了一行:

__all__ = ["teacher"]
Run Code Online (Sandbox Code Playgroud)

我还在schemas目录中创建了一个模块文件:dbmodel.py,其中包含以下内容

Base = declarative_base()
class teacher(Base):
      __tablename__ = 'teacher' 
      id = Column(Integer, primary_key=True)
      name = Column(String)
      department = Column(String)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我创建了一个sqlite数据库,并且在自动生成迁移之前进行一些测试它运行正常.我配置了env.py文件.添加了两行:

from schemas.dbmodel import Base
target_metadata = Base.metadata
Run Code Online (Sandbox Code Playgroud)

然后我跑:

alembic revision --autogenerate -m "Added teacher table"
Run Code Online (Sandbox Code Playgroud)

但仍然得到错误:

Traceback (most recent call last):
File "/usr/local/bin/alembic", line 9, in <module>
    load_entry_point('alembic==0.3.4', 'console_scripts', 'alembic')()
  File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/config.py", line 229, in main
    **dict((k, getattr(options, k)) for k in kwarg)
  File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/command.py", line 93, …
Run Code Online (Sandbox Code Playgroud)

python orm data-migration sqlalchemy alembic

12
推荐指数
1
解决办法
6039
查看次数