小编Set*_*son的帖子

Python PIL:如何将PNG图像写入字符串

我使用PIL生成了一个图像.如何将其保存到内存中的字符串?该Image.save()方法需要一个文件.

我想在字典中存储几个这样的图像.

python python-imaging-library

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

Pedantic gcc warning:在函数返回类型上输入限定符

当我第一次使用GCC 4.3编译我的C++代码时(在成功编译它之后没有4.1,4.0,3.4的-Wall -Wextra选项的警告)我突然遇到了一堆表单错误warning: type qualifiers ignored on function return type.

考虑temp.cpp:

class Something
{
public:
    const int getConstThing() const {
        return _cMyInt;
    }
    const int getNonconstThing() const {
        return _myInt;
    }

    const int& getConstReference() const {
        return _myInt;
    }
    int& getNonconstReference() {
        return _myInt;
    }

    void setInt(const int newValue) {
        _myInt = newValue;
    }

    Something() : _cMyInt( 3 ) {
        _myInt = 2;
    }
private:
    const int _cMyInt;
    int _myInt;
};
Run Code Online (Sandbox Code Playgroud)

跑步g++ temp.cpp …

c++ const gcc-warning

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

列表字典的笛卡尔积

我正在尝试编写一些代码来测试一堆输入参数的笛卡尔积.

我看过了itertools,但它的product功能并不完全是我想要的.是否有一个简单明显的方法来获取具有任意数量的键每个值中的任意数量的元素的字典,然后产生具有下一个排列的字典?

输入:

options = {"number": [1,2,3], "color": ["orange","blue"] }
print list( my_product(options) )
Run Code Online (Sandbox Code Playgroud)

示例输出:

[ {"number": 1, "color": "orange"},
  {"number": 1, "color": "blue"},
  {"number": 2, "color": "orange"},
  {"number": 2, "color": "blue"},
  {"number": 3, "color": "orange"},
  {"number": 3, "color": "blue"}
]
Run Code Online (Sandbox Code Playgroud)

python generator combinatorics

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

仅使用本地存储库历史记录的子集创建GitHub存储库

背景:我正在接近开放采购我已经工作了两年多的个人研究代码.它起初是一个SVN存储库,但大约一年前我转移到Git,我想在GitHub上分享代码.然而,多年来它累积了很多,我宁愿公共版本以其现状开始.但是,我仍然愿意为此做出贡献并融入其他人的潜在贡献.

问题是:有没有办法"分叉"一个git存储库,这样就不会在fork(它存在于GitHub上)上保留历史记录,但是我的本地存储库仍然有完整的历史记录,我可以拉/推送到GitHub?

我对大型存储库的管理端没有任何经验,所以非常感谢细节.

git fork github

44
推荐指数
1
解决办法
7159
查看次数

查找文件首次添加到Git存储库的日期/时间

是否有一个简单的Git命令来确定存储库中文件的"创建日期",即它首次添加的日期?

如果它甚至可以通过文件重命名/移动来确定它,那将是最好的.我希望它是一个计算机可读的单行输出; 可能是我没有找到正确的git log <fname>选项来做到这一点.

git

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

散列python函数以在修改函数时重新生成输出

我有一个具有确定性结果的python函数.运行并生成大量输出需要很长时间:

def time_consuming_function():
    # lots_of_computing_time to come up with the_result
    return the_result
Run Code Online (Sandbox Code Playgroud)

time_consuming_function不时修改,但我想避免它在没有变化的情况下再次运行.[ time_consuming_function仅取决于为此目的考虑的不可变的功能; 也就是说,它可能有来自Python库的函数,但不能来自我改变的其他代码片段.]向我提出的解决方案是缓存输出并缓存函数的一些"哈希".如果哈希值发生变化,则该函数将被修改,我们必须重新生成输出.

这可能还是荒谬?


更新:基于答案,看起来我想要做的是"memoize" time_consuming_function,除了代替(或除了)传递给不变函数的参数之外,我想要考虑一个本身会改变的函数.

python hash caching

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

模板:模板函数与类的模板成员函数不兼容

这是我实际拥有的一些代码的最小测试用例.它在尝试评估时失败a.getResult<B>():

test.cpp: In function 'void printStuff(const A&)':
test.cpp:6: error: expected primary-expression before '>' token
test.cpp:6: error: expected primary-expression before ')' token
Run Code Online (Sandbox Code Playgroud)

代码是:

#include <iostream>

template< class A, class B>
void printStuff( const A& a)
{
    size_t value = a.getResult<B>();
    std::cout << value << std::endl;
}

struct Firstclass {
    template< class X >
    size_t getResult() const {
        X someInstance;
        return sizeof(someInstance);
    }
};

int main(int, char**) {
    Firstclass foo;

    printStuff<Firstclass, short int>(foo);
    printStuff<Firstclass, double>(foo);

    std::cout << foo.getResult< double >() …
Run Code Online (Sandbox Code Playgroud)

c++ templates

22
推荐指数
2
解决办法
3725
查看次数

带前向声明的默认模板参数

是否可以转发声明一个使用默认参数的类而不指定或知道这些参数?

例如,我想boost::ptr_list< TYPE >在Traits类中声明一个,而不将整个Boost库拖动到包含特征的每个文件中.我想声明 namespace boost { template<class T> class ptr_list< T >; },但这不起作用,因为它与真正的类声明不完全匹配:

template < class T,
    class CloneAllocator = heap_clone_allocator,
    class Allocator = std::allocator<void*>
    >
class ptr_list { ... };
Run Code Online (Sandbox Code Playgroud)

我的选择只是与它一起生活或boost::ptr_list< TYPE, boost::heap_clone_allocator, std::allocator<void*>在我的特质课程中指定吗?(如果我使用后者,我想也必须转发声明boost::heap_clone_allocator和包含<memory>,我想.)

我查看了Stroustrup的书,SO和其他互联网,但没有找到解决方案.通常人们担心不包括STL,解决方案是"只包括STL标题".但是,Boost是一个更大规模和编译器密集型的库,因此除非我绝对必须,否则我更愿意将其删除.

c++ templates forward-declaration

18
推荐指数
3
解决办法
9246
查看次数

Doxygen报告"潜在的递归类关系"

我有一个C++模板类base::Foo<class T>,我在另一个文件中有一个类base::bar::Foo : public base::Foo<Baz>.Doxygen似乎不喜欢这样,因为它会抛出一个错误

<unknown>:1: Detected potential recursive class relation between class snLib::mocTwod::DsaCell and base class DsaCell< snLib::mocTwod::ProblemTraits, detLib::cellDiffusionTwod::ProblemTraits >!
Run Code Online (Sandbox Code Playgroud)

有没有办法防止这种情况发生?Doxygen的文档没有讨论这个错误或关于"潜在的递归类关系"的任何内容.

"基础"类:

/*! \file snlib/DsaCell.hpp
 */
#ifndef snlib_DsaCell_hpp
#define snlib_DsaCell_hpp
#include "Dsa.hpp"

namespace snLib {
/*!
 * \brief  Implementation of naive cell-centered DSA
 */
template <class HoTraits_T, class LoTraits_T>
class DsaCell : public snLib::Dsa< HoTraits_T, LoTraits_T >
{
    [snip]
};
}
#endif
Run Code Online (Sandbox Code Playgroud)

导致问题的一个后代:

/*! \file snlib/twod/moc/DsaCell.hpp
 */
#ifndef snlib_twod_moc_DsaCell_hpp
#define snlib_twod_moc_DsaCell_hpp
#include "snlib/DsaCell.hpp"

#include "ProblemTraits.hpp" …
Run Code Online (Sandbox Code Playgroud)

c++ doxygen

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

Git钩子用于元数据存储/检索

git不可避免的怪癖之一是它无法存储和检索有关文件的元数据.例如,在mac上,标签以"扩展属性"(可访问xattr)存储,任何checkout/reset/merge/pull命令将在文件受结账影响时删除这些属性.

我已经环顾四周看看是否有人已经编写了保存元数据的脚本,但我干了.

所以我想做的是使用Git的钩子系统:

  1. 提交文件时读取扩展属性,
  2. 将属性写入存储在存储库中的文件,该文件也会被提交,
  3. 将扩展属性应用于在合并/签出/重置中修改的文件.

我应该使用哪个钩子?是post-receivepre-commit所有我需要?可以pre-commit还添加了一个文件,以提交(即写入新的属性之后)?

git metadata

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