小编Uli*_*ler的帖子

Haskell:Unix域套接字

我找不到关于在Haskell中处理Unix Domain套接字的好信息.我需要一个简单的函数来打开一个套接字并向它写一个命令.任何人都可以帮我提一下在哪里阅读或者举个例子吗?

基本上,我需要移植这个简单的Ruby函数(如果它有助于理解我的意思):

def monitor(string_command)
  require "socket"
  socket = File.join($vbase, @name, "monitor.soc")
  raise RuntimeError, "Monitor socket does not exst!" unless File.exist? socket
  begin
    UNIXSocket.open(socket) do |s|
      s.puts string_command
      s.flush
    end
  rescue
    return false
  end
  true
end
Run Code Online (Sandbox Code Playgroud)

它只会打开套接字并向其写入命令,成功后返回true.谢谢.

haskell unix-socket

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

http-conduit浏览器用法

我正在尝试使用HTTPS从网站上抓取数据.我成功地使用Network.HTTP.Conduit发布基本请求(发布凭据等),但是无法从响应头(Set-Cookie)中提取cookie信息.貌似http-conduit有自己的处理cookie 的机制,我无法理解.

Network.HTTP.Conduit.Browser似乎自动处理cookie(我很好),但由于缺少文档,我无法使用它.

有经验处理http-conduit浏览器模块的人可以告诉我如何:

  1. 处理自签名证书(我设法在基本模块中使用managerCheckCerts执行此操作)
  2. 在正文中发送带有URL编码参数的POST请求,而不是遵循任何重定向(我在基础模块中使用了urlEncodedBody)
  3. 在简单的GET请求中使用2.步骤中的cookie并将响应读作(懒惰)ByteString(我本来会使用httpLbs)

对我来说,看起来Network.HTTP.Conduit.Browser的抽象级别比Network.HTTP.Conduit更适合我的应用程序,所以即使我可以使用后者手动处理cookie,我也想进行切换.

https haskell session-cookies web-scraping http-conduit

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

node.js async.series无法正常工作

这段代码直接取自以下示例:https://github.com/caolan/async#seriestasks-callback

var async = require("async");
async.series([
    function() { console.log("a"); },
    function() { console.log("b"); }
], function(err, results){
    console.log(err);
    console.log(results);
});
Run Code Online (Sandbox Code Playgroud)

但它不起作用.打印"a"后停止.

它是最新版本的异步模块的错误还是我的用法有问题?

asynchronous node.js node-async

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

bitbucket无法合并无关分支

我在bitbucket上有存储库(比如说A)和分叉存储库A-dev.一切都运作良好3个月.但是最近,当我试图在A-dev中创建pull请求时,它说:

无法合并无关分支

为什么会发生这种情况以及如何解决?无论如何要排除故障吗?

谢谢. 编辑 错误的屏幕截图

git bitbucket

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

这个值在git中意味着什么?

在一个.gitattributes文件中,我找到了以下行

*.cs   text diff=csharp
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

c# git gitattributes

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

在Yesod中查找查询参数

我刚刚初始化了一个Yesod项目(没有数据库)yesod init.

我的HomeRGET处理程序如下所示:

getHomeR :: Handler Html
getHomeR = do
    (formWidget, formEnctype) <- generateFormPost sampleForm
    let submission = Nothing :: Maybe (FileInfo, Text)
        handlerName = "getHomeR" :: Text
    defaultLayout $ do
        aDomId <- newIdent
        setTitle "Welcome To Yesod!"
        $(widgetFile "homepage")
Run Code Online (Sandbox Code Playgroud)

使用时yesod devel,我可以访问默认主页http://localhost:3000/.

如何修改上面列出的处理程序以检索(和显示)HTTP GET查询参数,例如id=abc123访问此URL时:

http://localhost:3000/?id=abc123

注意:这个问题已经回答Q&A风格,因此故意不显示研究工作!

haskell query-parameters yesod

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

cmdargs值没有等号的参数

我用来cmdargs为我的Haskell程序编写CLI解析器.

让我们假设这个程序直接来自他们的例子:

{-# LANGUAGE DeriveDataTypeable #-}
import System.Console.CmdArgs.Implicit

data Sample = Sample {hello :: String} deriving (Show, Data, Typeable)

sample = Sample{hello = def &= help "World argument" &= opt "world"}
         &= summary "Sample v1"

main = print =<< cmdArgs sample
Run Code Online (Sandbox Code Playgroud)

如果调用该程序cmdtest.hs,我可以执行

$ runghc cmdtest.hs --hello=world
Sample {hello = "world"}
Run Code Online (Sandbox Code Playgroud)

但是,如果我省略等号(如-o选项中所示gcc -o foo foobar.c),cmdargs会尝试识别world为位置参数

$ runghc cmdtest.hs --hello world
Unhandled argument, none expected: world
Run Code Online (Sandbox Code Playgroud)

是否有任何选项/注释我可以设置为在cmdargs中允许此语法?

更新:使用短选项会暴露同样的问题:

$ runghc cmdtest.hs …
Run Code Online (Sandbox Code Playgroud)

haskell command-line-arguments haskell-cmdargs

7
推荐指数
1
解决办法
323
查看次数

在调试期间禁用STM32 IWDG

我在STM32F4微控制器上有一个ChibiOS 3.x程序,我使用IWDG看门狗来重置MCU,如下所示:

int main() {
    iwdgInit();
    iwdgStart(&IWDGD, &wd_cfg);
    while(true) {
        // ... do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我现在连接我的调试器,并且在任何时候停止程序(手动或通过断点),微控制器将在看门狗配置定义的超时后重置(因此在我的调试过程中会导致问题)

如何禁用此行为,即如何在核心因调试器而停止时禁用IWDG?

我已经尝试完全禁用它,但是,我需要让它保持运行以捕获不需要的IWDG重置.

c watchdog stm32 chibios

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

在Python中解压缩.bz2文件

所以,这是一个看似简单的问题,但我显然非常沉闷.我有一个小脚本从网页下载所有的.bz2文件,但由于某种原因,该文件的解压缩让我头疼.

我是一个Python新手,所以答案可能很明显,请帮助我.

在脚本的这一部分,我已经有了这个文件,我只是想把它读出来变量,然后解压缩?是对的吗?我已经尝试了各种方法来做到这一点,我通常在这个片段的最后一行得到"ValueError:找不到流的结尾"错误.我试图打开zipfile并以无数种方式将其写入字符串.这是最新的.

openZip = open(zipFile, "r")
s = ''
while True:
    newLine = openZip.readline()
    if(len(newLine)==0):
       break
    s+=newLine
    print s                   
    uncompressedData = bz2.decompress(s)
Run Code Online (Sandbox Code Playgroud)

嗨Alex,我应该列出我尝试过的所有其他方法,因为我尝试过read()方式.

方法A:

print 'decompressing ' + filename

fileHandle = open(zipFile)
uncompressedData = ''

while True:            
    s = fileHandle.read(1024)
    if not s:
        break
        print('RAW "%s"', s)
        uncompressedData += bz2.decompress(s)

        uncompressedData += bz2.flush()

        newFile = open(steamTF2mapdir + filename.split(".bz2")[0],"w")
        newFile.write(uncompressedData)
        newFile.close()   
Run Code Online (Sandbox Code Playgroud)

我收到错误:

uncompressedData += bz2.decompress(s)
ValueError: couldn't find end of stream
Run Code Online (Sandbox Code Playgroud)

方法B.

zipFile = steamTF2mapdir + filename
print 'decompressing ' …
Run Code Online (Sandbox Code Playgroud)

python compression

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

Fork和Execlp

我尝试使用fork和execlp的程序,其中父地址空间被"ls"命令替换.

#include<stdio.h>
main()
{
    int pid,j=10,fd;
    pid=fork();
    if(pid==0)
    {
        printf("\nI am the child\n");
        execlp("/bin/ls","ls",NULL);
        printf("\nStill I am the child\n");

    }
    else if (pid > 0)
    {
        printf("\n I am the parent\n");
        wait();
    } 
}
Run Code Online (Sandbox Code Playgroud)

当我执行程序时,最后一行的孩子

printf("\nStill I am the child\n");
Run Code Online (Sandbox Code Playgroud)

没有打印.为什么?

c linux fork exec

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