小编Cor*_*lks的帖子

将Google Chart保存为SVG?

新的Google Chart API会将图表创建为SVG(而不是以前的PNG).我希望能够保存生成的SVG.我怎样才能做到这一点?

如果我使用Chrome检查页面上的元素,我可以找到包含SVG的svg标记.我希望能够使用JavaScript获取生成的SVG.我不想在JavaScript中搜索HTML源代码中的svg标记,如果有办法直接从图表对象(可能是ChartWrapper类?)获取SVG字符串,那将是更好的选择.

javascript google-visualization

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

如何让Emacs用我的代码缩进我的//注释?

我对Emacs了解不多,但经过一些谷歌搜索,我编辑了我的 .emacs文件如下:

(setq c-default-style "bsd" c-basic-offset 4)
Run Code Online (Sandbox Code Playgroud)

我的目标是通过4个间距的标签获得Allman风格的缩进.它按预期工作,但现在我的//评论没有缩进我的代码.在我更改之前,当我键入时//,它将自动缩进以与函数中的其余代码一致.如何让Emacs自动缩进//评论?

我已经尝试添加c-indent-comments-syntactically-p 1到上面的.emacs文件,但这没有改变它...

例如:

int main()
{
    // I'd like this line to be auto-indented to match the block
    for (int i = 0; i < 10; ++i)
    {
        // And this line to be auto-indented to match the block
        doStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

目前,TAB不会缩进我的//评论,也不会自动缩进.

c c++ emacs

11
推荐指数
1
解决办法
2257
查看次数

如何将CA证书捆绑包拆分为单独的文件?

我正在使用OpenSSL,需要一个理智的默认CA列表.我正在使用由cURL捆绑的 Mozilla的可信CA列表.但是,我需要拆分此CA证书捆绑包,因为OpenSSL文档说:

如果CApath不为NULL,则它指向包含PEM格式的CA证书的目录.每个文件都包含一个CA证书.这些文件由CA主题名称哈希值查找,因此必须可用.

例如,ca-bundle.crt直接使用该文件可以正常工作:

openssl-1.0.1g> ./apps/openssl s_client -connect www.google.com:443 -CAfile /home/user/certs/ca-bundle.crt
...
    Verify return code: 0 (ok)
---
DONE
Run Code Online (Sandbox Code Playgroud)

但指定包含该ca-bundle.crt文件的目录不起作用:

openssl-1.0.1g> ./apps/openssl s_client -connect www.google.com:443 -CApath /opt/aspera/certs
    Verify return code: 20 (unable to get local issuer certificate)
---
DONE
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我的文件夹不符合文档要求的内容(即包含PEM格式的CA证书的目录,每个文件包含一个证书,由哈希值命名).我的目录只有一组证书.

如何拆分我的证书包以遵守OpenSSL的请求,即每个证书都在一个单独的文件中?如果可以进行散列也可以获得奖励(尽管如果需要的话,如果所有证书都在单个文件中,我可以自己编写脚本).

linux ssl openssl

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

绑定lambda的速度(通过std :: function)与functor struct的operator()

auto lam = [](int a, int b, int c) { return a < b && b < c; };

struct functor {
  int a;
  int b;
  bool operator()(int n) const { return a < n && n < b; }
};
Run Code Online (Sandbox Code Playgroud)

在第一版中,我们

std::vector<std::function<bool (int)>> lamvals;
// get parameters and for each
lamvals.emplace_back(std::bind(lam, a, std::placeholders::_1, b));
Run Code Online (Sandbox Code Playgroud)

替代方案是

std::vector<functor> lamvals;
// get parameters and for each
lamvals.emplace_back(functor{a, b});
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我们都有一个简单的迭代

    return std::any_of(lamvals.cbegin(), lamvals.cend(),
            [n](const decltype(lamvals)::value_type & t){return t(n);});
Run Code Online (Sandbox Code Playgroud)

我看到速度差为3:1,绑定的lambda更慢.仿函数几乎与存储整数对和硬编码测试一样快.显然,硬编码对于生产代码没那么有用,因为会有几个函数在起作用,而不仅仅是在它们之间.但是,我可以选择许多仿函数或许多lambdas.后者是更少的代码行,看起来更干净,但我认为我无法承受这种速度差异; 此代码处于关键循环中.

我正在寻找加速建议.

c++ performance lambda c++11

11
推荐指数
1
解决办法
2557
查看次数

用户定义的文字,下划线和全局名称

在C++ 11中,我们获得了用户定义的文字.C++标准有这些例子,例如:

long double operator "" _w(long double);
Run Code Online (Sandbox Code Playgroud)

它说文字应该以下划线开头:

17.6.4.3.5用户定义的文字文字
不以下划线开头的文字符号标识符保留用于将来的标准化.

但是,标准中还有另一部分说

17.6.4.3.2全局名称
某些名称和函数签名集始终保留给实现:
- 每个包含双下划线_ _的名称或以下划线后跟大写字母(2.12)开头的名称保留给实现任何用途.
- 以下划线开头的每个名称都保留给实现,以用作全局名称空间中的名称.

我希望更好地理解17.6.4.3.2(全局名称)所说的/意味着什么以及它与17.6.4.3.5(用户定义的字面文字)的关系.特别:

  • 17.6.4.3.2(全局名称)的第二部分是否要求_w在命名空间中定义用户定义的文字(如上所述)(即不在全局命名空间中)?如果是这样,我希望标准能说明这一点.
  • 我假设17.6.4.3.2(全局名称)的第一部分排除了用户定义的文字,如_W(大写)__w_w__(两个连续的下划线).正确?

编辑:

作为后续行动,标准的一部分说:

13.5.8用户定义的文字
[...]
2 声明者id为文字操作符id的声明应该是命名空间范围函数或函数模板的声明(它可以是友元函数(11.3)),函数模板的显式实例化或特化,或者使用声明(7.3.3).使用literal-operator-id声明的函数是文字运算符.使用literal-operator-id声明的函数模板是文字运算符模板.

强调我的.当它说"namespace-scope"时,这意味着用户定义的文字需要在用户定义的命名空间中声明(即不在全局命名空间中)?

稍后编辑:

当问题第一次被问到时它不存在,但现在也有这个相关的问题和答案,读者可以在审查下面的答案后另外检查.

c++ c++11

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

控制Android NDK中的编译器标志?

我知道我可以LOCAL_CFLAGS用来将参数传递给编译器.但是,ndk-build在我之后插入选项LOCAL_CFLAGS,因此它们优先.例如,我想指定-Ofast,但在我自己的标志之后ndk-build添加-O2,并且由于只有最后一个选项是有效的,我无法使用某些优化标志集来测试我的代码.

有没有办法强制我LOCAL_CFLAGS成为构建命令的最后一个选项,或禁用ndk-build使用某些标志?

例如,我LOCAL_CFLAGS的设置为:

-Wall -Wno-psabi -Ofast -D CP_USE_DOUBLES=0 -D USE_CHIPMUNK
Run Code Online (Sandbox Code Playgroud)

g++对此的呼吁ndk-build是:

/Library/Android/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi-v7a/objs/native-activity/Main.o.d -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Ijni -Ijni/Chipmunk/include/chipmunk -I/Library/Android/android-ndk-r8b/sources/android/native_app_glue -I/Library/Android/android-ndk-r8b/sources/cxx-stl/stlport/stlport -I/Library/Android/android-ndk-r8b/sources/cxx-stl//gabi++/include -Ijni -DANDROID -Wall -Wno-psabi -Ofast -D CP_USE_DOUBLES=0 -D USE_CHIPMUNK -Wa,--noexecstack -frtti -O2 -DNDEBUG -g -I/Library/Android/android-ndk-r8b/platforms/android-9/arch-arm/usr/include -c jni/Main.cpp -o ./obj/local/armeabi-v7a/objs/native-activity/Main.o

那里有很多,但特别注意它首先指定 …

android android-ndk

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

主题继承在Android中的运作方式究竟如何?

我有以下主题res/values/styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="AppBaseTheme" parent="@android:style/Theme.NoTitleBar">
    </style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

如果我删除该<item name="android:windowNoTitle">true</item>行,我的活动就会有标题栏.但是,如果我在那里保留那条线,那么它们就没有标题栏(这就是我想要的).

我很好奇为什么parent="@android:style/Theme.NoTitleBar"似乎没有效果?并parent没有做什么,我认为它呢?我认为它的工作原理如下:

@android:style/Theme.NoTitleBar --> AppBaseTheme --> AppTheme
^                                   ^                ^
|                                   |                |
|                                   |                Has everything AppBaseTheme
|                                   |                does, unless it's overridden
|                                   |
|                                   Has everything @android:style/Theme.NoTitleBar
|                                   does, unless it's overridden (which I'm not
|                                   doing)
|
Sets whatever it needs to to not have a title, which I assume …
Run Code Online (Sandbox Code Playgroud)

android

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

线程之间是否存在共享变量的编译器优化问题?

请考虑以下示例.目标是使用两个线程,一个用于"计算"一个值,另一个用于消耗和使用计算值(我试图简化这个).计算线程通过使用条件变量向另一个线程发信号通知该值已经计算并准备就绪,之后等待线程消耗该值.

// Hopefully this is free from errors, if not, please point them out so I can fix
// them and we can focus on the main question
#include <pthread.h>
#include <stdio.h>

// The data passed to each thread. These could just be global variables.
typedef struct ThreadData
{
  pthread_mutex_t mutex;
  pthread_cond_t cond;
  int spaceHit;
} ThreadData;

// The "computing" thread... just asks you to press space and checks if you did or not
void* getValue(void* td)
{
  ThreadData* data …
Run Code Online (Sandbox Code Playgroud)

c c++ multithreading pthreads

10
推荐指数
2
解决办法
996
查看次数

为什么这段代码在Clang ++中有效但不在G ++中?

请考虑以下代码:

struct Foo
{
    int x, y;

    Foo() = default;
    Foo(const Foo&) = delete;
    Foo& operator=(const Foo&) = delete;
};

int main()
{
    Foo f1 {1, 2};
    Foo f2 = {1, 2};
}
Run Code Online (Sandbox Code Playgroud)

使用clang ++进行编译不会产生任何错误:

$ clang++ --version
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.4.0
Thread model: posix
$ clang++ -std=c++11 -stdlib=libc++ -pedantic t.cpp -o out
...builds and runs fine...
Run Code Online (Sandbox Code Playgroud)

但是,通过ideone使用g ++ 4.8.1进行编译会产生错误:

prog.cpp: In function ‘int main()’:
prog.cpp:12:17: error: no matching function for …
Run Code Online (Sandbox Code Playgroud)

c++ g++ c++11 clang++

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

对于std :: basic_string <T> foo ="foo",无法推导出T = char?

问题: 在下面的代码中,模板参数类型推导似乎对第一个样本失败,但对第二个样本则失败.我不明白为什么第一个样本无法推断出来T = char.我认为T可以从转换时,可以推断"foo"std::bacis_string<T>,但即使没有工作,我公司提供的第二个功能参数,它,我想,显然会制约Tchar.为什么会失败?

不起作用:

#include <iostream>
#include <string>

template <typename T>
void print(const std::basic_string<T>& a, const std::basic_string<T>& b)
{
    std::cout << a << b << std::endl;
}

int main()
{
    std::string bar = "bar";
    print("foo", bar);
}
Run Code Online (Sandbox Code Playgroud)

错误:

string.cpp:14:5: error: no matching function for call to 'print'
    print("foo", bar);
    ^~~~~
string.cpp:6:6: note: candidate template ignored: could not match
      'basic_string<type-parameter-0-0, char_traits<type-parameter-0-0>,
      allocator<type-parameter-0-0> >' against 'char …
Run Code Online (Sandbox Code Playgroud)

c++

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