我有一个带有Makefile的小项目,我试图转换为CMake,主要是为了获得CMake的经验.出于此示例的目的,项目包含一个源文件(C++,虽然我认为该语言不是特别相关)和一个我从其他地方复制过的静态库文件.为了论证,假设库的源代码不可用; 我只有.a文件和相应的标题.
我手工制作的Makefile包含以下构建规则:
main: main.o libbingitup.a
g++ -o main main.o libbingitup.a
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.我如何告诉CMake重现这个?当然,这不是字面上的精确makefile,而是包含等效链接命令的东西.我尝试过明显但天真的方式,比如
add_executable(main main.cpp libbingitup.a)
Run Code Online (Sandbox Code Playgroud)
要么
add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)
Run Code Online (Sandbox Code Playgroud)
以及与各种事物link_directories(.)
或add_library(bingitup STATIC IMPORTED)
等,但没有到目前为止,结果在一个成功的连锁.我该怎么办?
版本详细信息:Linux(Kubuntu 12.04)上的CMake 2.8.7和GCC 4.6.3
假设我有一个浮点数数组,按排序(让我们说升序)排序,其总和已知是一个整数N
.我希望将这些数字"舍入"为整数,同时保持其总和不变.换句话说,我正在寻找一种算法,将浮点数数组(称之为 fn
)转换为整数数组(称之为in
),这样:
N
fn[i]
与其对应的整数之间的差值in[i]
小于1(或者如果你真的必须等于1)fn[i] <= fn[i+1]
),整数也将按排序顺序(in[i] <= in[i+1]
)鉴于满足这四个条件,sum((in[i] - fn[i])^2)
最好将舍入方差()最小化的算法,但这并不是什么大问题.
例子:
[0.02, 0.03, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14] => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] [0.1, 0.3, 0.4, 0.4, 0.8] => [0, 0, 0, 1, 1] [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] => [0, 0, 0, …
在我使用SQLAlchemy和Elixir编写的一个小脚本中,我需要获取特定列的所有不同值.在普通的SQL中,它只是一个简单的问题
SELECT DISTINCT `column` FROM `table`;
Run Code Online (Sandbox Code Playgroud)
我知道我可以"手动"运行该查询,但如果可以,我宁愿坚持使用SQLAlchemy声明性语法(和/或Elixir).我确信它一定是可能的,我甚至在SQLAlchemy文档中看到过这种类似的暗示,但我一直在寻找这些文档几个小时(以及Elixir的文档),我就是不能似乎真的弄清楚它将如何完成.那我错过了什么?
当我反复遍历ArrayList时,我得到一个IndexOutOfBoundsException.我尝试进行前向迭代,没有问题.我希望并知道列表中有五个元素.代码如下:
Collection rtns = absRtnMap.values();
List list = new ArrayList(rtns);
Collections.sort(list);
for(int j=list.size();j>0;j=j-1){
System.out.println(list.get(j));
}
Run Code Online (Sandbox Code Playgroud)
前向迭代 - 工作正常,但对我没用:
for(int j=0;j<list.size();j++){
System.out.println(list.isEmpty());
System.out.println(list.get(j));
} // this worked fine
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in thread "Timer-0" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at model.Return.getReturnMap(Return.java:61)
at controller.Poller$1.run(Poller.java:29)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
此外,如果有人知道反向迭代更好的习语,我很乐意尝试这一点.
我正在尝试使用Python 3 asyncio模块连接到另一方并获得此错误:
36 sslcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
---> 37 sslcontext.load_cert_chain(cert, keyfile=ca_cert)
38
SSLError: [SSL] PEM lib (_ssl.c:2532)
Run Code Online (Sandbox Code Playgroud)
问题是错误的意思.我的证书是正确的,密钥文件(CA证书)可能不正确.
numpy中是否存在一个函数,告诉我一个值是数值类型还是numpy数组?我正在编写一些数据处理代码,需要处理几种不同表示中的数字("数字"我指的是数字量的任何表示,可以使用标准算术运算符来操作,+, - ,*,/,**).
我正在寻找的行为的一些例子
>>> is_numeric(5)
True
>>> is_numeric(123.345)
True
>>> is_numeric('123.345')
False
>>> is_numeric(decimal.Decimal('123.345'))
True
>>> is_numeric(True)
False
>>> is_numeric([1, 2, 3])
False
>>> is_numeric([1, '2', 3])
False
>>> a = numpy.array([1, 2.3, 4.5, 6.7, 8.9])
>>> is_numeric(a)
True
>>> is_numeric(a[0])
True
>>> is_numeric(a[1])
True
>>> is_numeric(numpy.array([numpy.array([1]), numpy.array([2])])
True
>>> is_numeric(numpy.array(['1'])
False
Run Code Online (Sandbox Code Playgroud)
如果不存在这样的函数,我知道编写一个函数应该不难
isinstance(n, (int, float, decimal.Decimal, numpy.number, numpy.ndarray))
Run Code Online (Sandbox Code Playgroud)
但是我应该在列表中包含其他数字类型吗?
我在推送时不断从git收到此错误消息,即使我在翻过来之后尝试它:
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '[repo url]' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes (e.g. 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
以下是分支历史记录的样子:
A---B---C
| |
D E-F
A initial commit (me)
B some commit (me)
C master
D some commit (other dev)
E remotes/origin/master - Merge branch 'master' of [repo url]
F Local …
Run Code Online (Sandbox Code Playgroud) 在尝试处理浮点运算问题时,我遇到了一些有点混乱的问题.
一,代码.我已经将我的问题的本质提炼到这个例子中:
#include <iostream>
#include <iomanip>
using namespace std;
typedef union {long long ll; double d;} bindouble;
int main(int argc, char** argv) {
bindouble y, z, tau, xinum, xiden;
y.d = 1.0d;
z.ll = 0x3fc5f8e2f0686eee; // double 0.17165791262311053
tau.ll = 0x3fab51c5e0bf9ef7; // double 0.053358253178712838
// xinum = double 0.16249854626123722 (0x3fc4ccc09aeb769a)
xinum.d = y.d * (z.d - tau.d) - tau.d * (z.d - 1);
// xiden = double 0.16249854626123725 (0x3fc4ccc09aeb769b)
xiden.d = z.d * (1 - tau.d);
cout << hex << …
Run Code Online (Sandbox Code Playgroud) 我的工作中,我有一个非常服务特定功能的一些小模块Python的Web应用程序:session.py
,logger.py
,database.py
,等,并通过"小"我真的不意味着小; 这些文件中的每一个目前包括大约3-5行代码,或者最多可能包含10行代码.我可能有一些导入和一个类定义或两个.我想知道,有什么理由我应该或不应该将这些合并到一个模块中,类似于misc.py
什么?
我的想法是,拥有单独的模块有助于代码清晰度,稍后,如果这些模块有可能增长到超过10行,我将不会感到如此糟糕.但另一方面,拥有一堆只有几行的文件似乎是一种浪费!并且多文件与单文件方法之间的资源使用有任何显着差异吗?(当然,我远远不能担心资源使用问题,但我忍不住要求......)
我查看过是否曾经问过这个问题,并没有看到任何特定于Python的内容,但如果它实际上是重复的,我会很感激被指向正确的方向.
我有这样的python应用程序
/
/crawl.py
/crawl/__init__.py
/crawl/john.py
/tests/test_john.py
Run Code Online (Sandbox Code Playgroud)
我想要做的是运行test_john.py
需要使用的单元测试,john.py
但它在另一个文件夹中.
在我tests/test_john.py
运行时,我得到了这个
Traceback (most recent call last):
File "test_john.py", line 2, in <module>
from john import John
ImportError: No module named john
Run Code Online (Sandbox Code Playgroud)
那么如何从爬网文件夹中导入一个类....