我正在Haskell中构建一个日志文件解析器.我正在使用堆栈来构建它.运行stack build命令很愉快,我的项目编译.stack test但是,运行会产生以下错误:
parser-test: executable not found
Run Code Online (Sandbox Code Playgroud)
我在错误消息上方看到以下警告,但我不知道如何避免它引用的重定向.
Warning: output was redirected with -o, but no output will be generated because there is no Main module.
Run Code Online (Sandbox Code Playgroud)
我还没有编写任何测试,所以测试文件是由它创建的stack new.我的cabal文件如下所示:
...
category: Executable
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
library
hs-source-dirs: src
exposed-modules: LogParser
build-depends: base >= 4.7 && < 5
, attoparsec
, bytestring
, old-locale
, time
default-language: Haskell2010
executable parser-exe
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base
, …Run Code Online (Sandbox Code Playgroud) 我有一个中等大(约60,000行乘15列)csv文件,我正在与熊猫一起工作.每行代表一个人并包含个人数据.我想匿名呈现数据.我想要这样做的一种方法是替换特殊列中罕见的值.我最初尝试这样做如下:
def clean_data(entry):
if df[df.column_name == entry].index.size < 10:
return 'RARE_VALUE'
else:
return entry
df.new_column_name = df.column_name.apply(clean_data)
Run Code Online (Sandbox Code Playgroud)
但每次运行它都冻结了我的系统.不幸的是,这意味着我没有有用的调试数据.有谁知道这样做的正确方法?该列包含字符串和空值.
我使用attoparsec编写了一个日志文件解析器.我所有较小的解析器都是成功的,组合的最终解析器也是如此.我通过测试证实了这一点.但是我对使用解析后的流执行操作感到磕磕绊绊.
我开始尝试将成功解析的输入传递给函数.但似乎得到的是Done (),我认为这意味着日志文件已经被这一点消耗了.
prepareStats :: Result Log -> IO ()
prepareStats r =
case r of
Fail _ _ _ -> putStrLn $ "Parsing failed"
Done _ parsedLog -> putStrLn "Success" -- This now has a [LogEntry] array. Do something with it.
main :: IO ()
main = do
[f] <- getArgs
logFile <- B.readFile (f :: FilePath)
let results = parseOnly parseLog logFile
putStrLn "TBC"
Run Code Online (Sandbox Code Playgroud)
我想在消耗输入时从日志文件中累积一些统计信息.例如,我正在解析响应代码,我想计算有多少2**响应和多少4/5**响应.我正在解析每个响应作为Ints返回的字节数,我想有效地对它们求和(听起来像foldl'?).我已经定义了这样的数据类型:
data Stats = Stats …Run Code Online (Sandbox Code Playgroud) 我想在一个docker容器中运行yesod web应用程序,链接到另一个docker容器中的postgres数据库.
我有以下文件层次结构:
/
api/
Dockerfile
database/
Dockerfile
docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
该docker-compose.yml如下所示:
database:
build: database
api:
build: api
command: .cabal/bin/yesod devel # dev setting
environment:
- HOST=0.0.0.0
- PGHOST=database
- PGPORT=5432
- PGUSER=postgres
- PGPASS
- PGDATABASE=postgres
links:
- database
volumes:
- api:/home/haskell/
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud)
运行sudo docker-compose up失败要么完全启动api容器,要么经常启动,出现以下错误:
api_1 | Yesod devel server. Press ENTER to quit
api_1 | yesod: <stdin>: hGetLine: end of file
personal_api_1 exited with code 1
Run Code Online (Sandbox Code Playgroud)
但是,如果我运行sudo docker-compose database up …