我找不到关于在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.谢谢.
我正在尝试使用HTTPS从网站上抓取数据.我成功地使用Network.HTTP.Conduit发布基本请求(发布凭据等),但是无法从响应头(Set-Cookie)中提取cookie信息.貌似http-conduit有自己的处理cookie 的机制,我无法理解.
Network.HTTP.Conduit.Browser似乎自动处理cookie(我很好),但由于缺少文档,我无法使用它.
有经验处理http-conduit浏览器模块的人可以告诉我如何:
对我来说,看起来Network.HTTP.Conduit.Browser的抽象级别比Network.HTTP.Conduit更适合我的应用程序,所以即使我可以使用后者手动处理cookie,我也想进行切换.
这段代码直接取自以下示例: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"后停止.
它是最新版本的异步模块的错误还是我的用法有问题?
我在bitbucket上有存储库(比如说A)和分叉存储库A-dev.一切都运作良好3个月.但是最近,当我试图在A-dev中创建pull请求时,它说:
无法合并无关分支
为什么会发生这种情况以及如何解决?无论如何要排除故障吗?
谢谢.
编辑

我刚刚初始化了一个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风格,因此故意不显示研究工作!
我用来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) 我在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重置.
所以,这是一个看似简单的问题,但我显然非常沉闷.我有一个小脚本从网页下载所有的.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) 我尝试使用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)
没有打印.为什么?
haskell ×4
c ×2
git ×2
asynchronous ×1
bitbucket ×1
c# ×1
chibios ×1
compression ×1
exec ×1
fork ×1
http-conduit ×1
https ×1
linux ×1
node-async ×1
node.js ×1
python ×1
stm32 ×1
unix-socket ×1
watchdog ×1
web-scraping ×1
yesod ×1