小编mar*_*o.m的帖子

从char获取一个istream*

我有一个char*和我从库中收到的数据长度,我需要将数据传递给一个带有istream的函数.

我知道我可以创建一个字符串流但是会复制所有数据.而且,数据肯定会有0,因为它是一个zip文件,创建一个字符串流将把数据带到我认为的第一个0.

有没有办法从char*创建一个istream,它的大小没有复制所有数据?

c++ istream

51
推荐指数
5
解决办法
4万
查看次数

Clojure Long Literal String

我想要的是

某些编程语言具有创建多行文字字符串的功能,例如:

some stuff ... <<EOF
  this is all part of the string
  as is this
  \ is a literal slash
  \n is a literal \ followed by a literal n
  the string ends on the next line
EOF
Run Code Online (Sandbox Code Playgroud)

问题:Clojure有类似的东西吗?我意识到"处理多行很好,但我希望它也能正确处理\为文字.

谢谢!

clojure

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

如何在erlang中进行依赖注入和模拟?

在Java中编写代码时,通过模拟协作对象,使用组合依赖注入非常有帮助,从而可以轻松地进行纯单元测试.

我发现在Erlang中做同样的事情并不那么简单,而且代码更脏.

这可能是我的错,因为我对Erlang很新,并且对JUnit,EasyMock和java接口非常沉迷......

假设我有这个愚蠢的功能:

%% module mymod
handle_announce(Announce) ->
    AnnounceDetails = details_db:fetch_details(Announce),
    AnnounceStats = stats_db:fetch_stats(Announce),
    {AnnounceDetails, AnnounceStats}.
Run Code Online (Sandbox Code Playgroud)

在单元测试时mymod,我只想证明details_dbstats_db使用正确的参数调用,并且正确使用了返回值.在其他地方测试details_dbstats_db生成正确值的能力.

为了解决这个问题,我可以这样重构我的代码:

%% module mymod
handle_announce(Announce, [DetailsDb, StatsDb]) ->
    AnnounceDetails = DetailsDb:fetch_details(Announce),
    AnnounceStats = StatsDb:fetch_stats(Announce),
    {AnnounceDetails, AnnounceStats}.
Run Code Online (Sandbox Code Playgroud)

并以这种方式进行测试(基本上将调用直接存入测试模块):

%% module mymod_test
handle_announce_test() ->
    R = mymod:handle_announce({announce, a_value}, [?MODULE, ?MODULE, ?MODULE]),
    ?assertEqual({details,stats}, R).

fetch_details({announce, a_value}) ->
    details.

fetch_stats({announce, a_value}) ->
    stats.
Run Code Online (Sandbox Code Playgroud)

它工作正常,但应用程序代码变脏了,我总是要随身携带那些丑陋的模块列表.

我尝试了几个模拟库(erlymock和(另一个),但我并不满意.

你如何对你的erlang代码进行单元测试?

谢谢!

erlang unit-testing dependency-injection mocking

21
推荐指数
1
解决办法
3652
查看次数

ACE vs Boost vs Poco vs wxWidgets

我在ACE,BoostwxWidgets方面拥有丰富的经验.我最近找到了POCO库.有没有人对它们有任何经验,以及它们在性能和可靠性方面与ACE,Boost和wxWidgets相比如何?

我特别感兴趣用POCO取代ACE.我无法让ACE使用带有x64目标的VS2008进行编译.我主要使用ACE_Task,所以我认为我可以用Poco的线程和消息队列替换它们.

我感兴趣的POCO的其他部分是HTTPServer,HTTPClient和LayeredConfiguration.这些库与Boost和wxWidgets中的库类似,但我尝试将wxWidgets的使用限制为GUI组件,而类似的Boost库则很难.

我对任何人可以分享关于POCO的任何经验感兴趣,无论好坏.

c++ boost ace poco-libraries

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

POCO C++ - NET SSL - 如何发布HTTPS请求

如何正确执行POST到HTTPS服务器并正确嵌入登录数据.下面的代码不会返回任何cookie(在Wininet中它会).我想知道POCO HTTP库如何处理HTTP重定向?

MyApp()
{
    try
    {
        const Poco::URI uri( "https://localhost.com" );
        const Poco::Net::Context::Ptr context( new Poco::Net::Context( Poco::Net::Context::CLIENT_USE, "", "", "rootcert.pem" ) );
        Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context );
        Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_POST, "/login.php" );
        req.setContentType("Content-Type: application/x-www-form-urlencoded\r\n");
        req.setKeepAlive(true);

        std::string reqBody("username=???&password=???&action_login=Log+In\r\n\r\n");
        req.setContentLength( reqBody.length() );

        //Poco::Net::HTTPBasicCredentials cred("???", "???");
        //cred.authenticate(req);
        session.sendRequest(req) << reqBody;
        Poco::Net::HTTPResponse res;
        std::istream& rs = session.receiveResponse(res);
        std::string resp;

        std::vector<Poco::Net::HTTPCookie> cookies;
        res.getCookies( cookies );
    }
    catch( const Poco::Net::SSLException& e )
    {
        std::cerr << e.what() << ": " << e.message() << std::endl;
    }
    catch( const std::exception& …
Run Code Online (Sandbox Code Playgroud)

c++ https post http poco-libraries

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

IPC的可移植C++库(进程和共享内存),Boost vs ACE vs Poco?

我需要一个可移植的C++库来进行IPC.到目前为止我使用了fork()和SysV共享内存,但这限制了我使用Linux/Unix.我发现有3个主要的C++库提供便携式解决方案(包括Windows和Mac OS X).我真的很喜欢Boost,并且想要使用它,但我需要进程,看起来这只是一个实验分支,直到现在!?我以前从未听说过ACE或POCO,因此我被困住了,我不知道选择哪一个.我需要fork(),sleep()(usleep()会很棒)和共享内存当然.性能和文档也是重要的标准.

谢谢你的帮助!

c++ boost ipc process

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

如果进程的pid已知,如何查看一个指定的进程消息队列?

在Erlang shell中,flush()可以用来获取shell进程的消息队列.

是否可以通过了解其PID来了解另一个进程的消息队列长度?

erlang

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

Coursera jupyterNotebook:回到开头

我正在使用 Coursera 的 jupyterNotebook,但没有办法将所有内容恢复到开头。

在此处输入图片说明

唯一相关的选项似乎是“恢复到检查点”——但我一开始没有保存检查点。

这是否意味着我无法恢复到它?

python jupyter-notebook

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

N个重叠会议日程表的最佳房间数和大小

我碰到了这个问题,我不确定我的解决方案是否是最佳的.

问题

给定N加权(Wi)和可能重叠的间隔(表示会议时间表),找到进行所有会议所需的会议室的最小数量"&".

|---10------|. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .|---------8---------|

        |------8-----|          |----------10-----------|

                  |--------6-------|
Run Code Online (Sandbox Code Playgroud)

对于上述时间表,我们需要两个10和10个容量的会议室.( 我对么 ? )

我的解决方案

如果我们有一个容量大于需要的会议室使用它,如果没有符合标准的会议室,建立新房间或增加现有房间,请从一个房间,并从左侧穿过间隔.新的能力.

例:

10点开始 - {10}

8点开始 - {10,8}

10月底结束 - {10-free,8}

6点开始 - {10,8}

结束8 - {10,8-free}

10的开头= {10,8 + = 2}或{10,10}

等等.....

这基本上是贪心的..

  • 有人可以证明这不是最优的吗?
  • 如果这是非最佳的解决方案是什么?DP?

algorithm scheduling dynamic-programming greedy intervals

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

EUnit和io:格式

我想使用EUnit测试一些第三方Erlang代码.

代码功能的输出使用显示在标准输出上io:format/2.我想捕获该输出并对?assert将要打印的字符串执行测试.我无法修改第三方代码.

这是用Erlang做到这一点的方法吗?(例如,在Java中,我可以简单地将System.setOut()用于输出流).

更新:

group_leader/2似乎是在正确的轨道上.

但是,我仍然没有看到它如何允许我捕获打印的字符串,io:format所以我可以测试我的断言.一个非常简单的代码示例是:

result(Value) ->
    io:format("Result: ~w~n", [Value]).

test_result() ->
    ?assertMatch("Result: 5~n", result(5)).
Run Code Online (Sandbox Code Playgroud)

显然,函数的返回result/1是原子ok,但实际上我想测试输出到控制台的字符串(即"Result: 5~n").

这种方法我错了,因为似乎没有其他人这样做(根据我缺乏搜索结果判断)?

背景:第三方代码是一个交互式控制台应用程序,因此所有功能仅用于io:format显示结果.

erlang

7
推荐指数
2
解决办法
2697
查看次数