- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序,其中输入文件被拆分为多个文件(Shamir 的 secret 共享方案)。
这是我想象的管道:
bsl !! 0
将被写入文件 0,bsl !! 1
被写入文件 1 等等)srcFile
和我们的输出文件
outFile0
,
outFile1
Và
outFile2
)
["133", "426", "765"]
。 .所以
"133"
将写入
outFile0
,
"426"
ĐẾN
outFile1
Và
"765"
ĐẾN
outFile2
.然后我们从
srcFile
中读取“DEF” ,对其进行处理,并将相应的输出写入每个输出文件。
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE OverloadedStrings #-}
import ClassyPrelude.Conduit
import Safe (atMay)
import Text.Printf
import Filesystem.Path.CurrentOS (decodeString, encodeString)
import Control.Monad.Trans.Resource (runResourceT, ResourceT(..))
-- get the output file name given the base (file) path and the split number
getFileName :: FilePath -> Int -> FilePath
getFileName basePath splitNumber = decodeString $ encodeString basePath ++ "." ++ printf "%03d" splitNumber
-- Get the sink file, given a filepath generator (that takes an Int) and the split number
idxSinkFile :: MonadResource m
=> (Int -> FilePath)
-> Int
-> Consumer [ByteString] m ()
idxSinkFile mkFP splitNumber =
concatMapC (flip atMay splitNumber) =$= sinkFile (mkFP splitNumber)
sinkMultiFiles :: MonadResource m
=> (Int -> FilePath)
-> [Int]
-> Sink [ByteString] m ()
sinkMultiFiles mkFP splitNumbers = getZipSink $ otraverse_ (ZipSink . idxSinkFile mkFP) splitNumbers
simpleConduit :: Int -> Conduit ByteString (ResourceT IO) [ByteString]
simpleConduit num = mapC (replicate num)
main :: IO ()
main = do
let mkFP = getFileName "test.txt"
splitNumbers = [0..2]
runResourceT $ sourceFile "test.txt" $$ simpleConduit (length splitNumbers) =$ sinkMultiFiles mkFP splitNumbers
1 Câu trả lời
一种可能性是让您的算法输出类似于 (Int, ByteString)
的内容。 , 其中 Int
是指定输出文件的索引(当然您可以使用任何其他类型作为键)。这样,管道可以决定它想要将其输出附加到哪个文件。
import Data.Conduit
import qualified Data.Conduit.List as C
import qualified Data.Foldable as F
-- | Filter only pairs tagged with the appropriate key.
filterInputC :: (Monad m, Eq k) => k -> Conduit (k, a) m a
filterInputC idx = C.filter ((idx ==) . fst) =$= C.map snd
-- | Prepend a given sink with a filter.
filterInput :: (Monad m, Eq k) => k -> Sink a m r -> Sink (k, a) m r
filterInput idx = (filterInputC idx =$)
-- | Given a list of sinks, create a single sink that directs received values
-- depending on the index.
multiSink_ :: (Monad m) => [Sink a m ()] -> Sink (Int, a) m ()
multiSink_ = getZipSink . F.sequenceA_ . fmap ZipSink
. zipWith filterInput [0..]
multiSink_
可以使用(测试接收器只是将所有内容打印到带有适当前缀的标准输出,而不是写入文件)。
-- | A testing sink that just prints its input, marking it with
-- a given prefix.
testSink :: String -> Sink String IO ()
testSink prefix = C.mapM_ (putStrLn . (prefix ++))
-- | An example that produces indexed output.
testSource :: (Monad m) => Source m (Int, String)
testSource = do
yield (0, "abc")
yield (0, "def")
yield (1, "opq")
yield (0, "0")
yield (1, "1")
yield (2, "rest")
main :: IO ()
main = testSource $$ multiSink_ (map testSink ["1: ", "2: ", "3: "])
关于haskell - 管道 - 管道内的多个输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23169458/
Tôi đang sử dụng đường dẫn Tài sản để quản lý các tài sản giao diện người dùng của ứng dụng Grails 3.0 của mình. Tuy nhiên, bản đồ nguồn cho các tệp CoffeeScript có vẻ như chưa được tạo. Có cách nào để kích hoạt nó không? Bản build.gradle của tôi
Tôi có một quy trình mà tôi muốn: cung cấp một số tài nguyên, chạy một số thử nghiệm, hủy bỏ tài nguyên. Tôi muốn tác vụ phân tích ở bước 3 được chạy bất kể thử nghiệm ở bước 2 có thành công hay không. Theo như tôi biết runAfter chỉ chạy một tác vụ nếu tác vụ trước đó thành công
Nếu tôi chạy lệnh sau: Measure-Command -Expression {gci -Path C:\ -Recurse -ea SilentlyContinue | where Extension
Tôi biết rằng pipe là một ký tự đặc biệt và tôi cần sử dụng: Scanner input = new Scanner(System.in); String line = input.next
Tôi lại gặp vấn đề tương tự, tôi đã có cách xử lý mặc định nhưng nó cứ làm tôi khó chịu. Có cách nào tốt hơn không? Về cơ bản, tôi có một đường ống chạy, thực hiện một số thao tác trong đường ống và muốn trả về một cặp khóa/giá trị từ bên trong đường ống. Tôi muốn toàn bộ đường ống trả về một giá trị duy nhất có kiểu ps
Tôi có ba môi trường: dev, hml và qa. Trong đường ống của tôi, tùy thuộc vào nhánh, giai đoạn có điều kiện để kiểm tra xem nó có chạy hay không: - giai đoạn: Project_Deploy_DEV điều kiện: eq(biến
Tôi đang chạy Jenkins phiên bản 2.82 và muốn sử dụng tính năng Pipeline khi tạo một công việc mới. Nhưng tôi không thấy điều này được liệt kê là một tùy chọn. Tôi chỉ có thể chuyển đổi giữa các dự án freestyle, dự án maven, dự án bên ngoài và nhiều cấu hình.
Trong khi thực hiện một số quan sát về một vấn đề trước đó (haskell-data-hashset-from-unordered-container-performance-for-large-sets), tôi tình cờ gặp phải một điều kỳ lạ
Tôi đang tìm hiểu cách sử dụng lệnh pipes để truyền đầu ra chuẩn làm đối số cho các lệnh khác. Ví dụ, hãy xem xét tình huống này: ls | grep Hello Cấu trúc của grep tuân theo mẫu này: grep SearchTerm PathOfFi
Có cách nào để không bị lỗi với bước đường ống khai báo mà thay vào đó sẽ hiển thị cảnh báo không? Hiện tại tôi đang khắc phục bằng cách thêm || exit 0 vào cuối dòng lệnh sh để lệnh này luôn thoát bình thường. Ví dụ hiện tại: sh 'vendor/bin/phpcs
Chúng tôi đang di chuyển từ thiết lập Jenkins cũ sang máy chủ mới, trong đó tất cả các kế hoạch đều là đường ống jenkinsfile khai báo... tuy nhiên, khi sử dụng đường ống, chúng tôi không thể xóa thủ công không gian làm việc nữa. Làm thế nào để thiết lập Jenkins để cho phép dọn dẹp thủ công theo yêu cầu?
Tôi đã đọc ví dụ sau về Pipelines và GridSearchCV trong Python: http://www.davidsbatista.net/blog/2017/04/01/docume
Tôi có một tập lệnh đường ống như thế này: node('linux'){ stage('Setup'){ echo "Build Stage" } stage('Build'){ echo
Tôi đang sử dụng bitbucket pipelines để đào tạo Đây là bitbucket-pipelines.yml của tôi: image: php:7.2.9 pipelines: default:
Tôi đang viết một chương trình trong đó tập tin đầu vào được chia thành nhiều tập tin (phương pháp chia sẻ bí mật của Shamir). Đây là cách tôi hình dung về đường ống: Nguồn: Conduit đọc từ đầu vào bằng Conduit.Binary.sourceFile:
Tôi đã tạo một đường ống có một giai đoạn chỉ được thực hiện trên nhánh phát triển. Giai đoạn này cũng yêu cầu sự tham gia của người dùng. Tại sao nó bị kẹt ở phần nhập dữ liệu của người dùng ở các bước này mặc dù tôi đang ở một nhánh khác? Khi tôi cung cấp thông tin, chúng sẽ được bỏ qua một cách chính xác. sân khấu ('Deplo
Tôi đang cố gắng học hàm pipe (%>%). Khi cố gắng chuyển đổi từ dòng mã này sang dòng mã khác thì không được. ---- Mã R -- phiên bản gốc----- set.seed(1014) replicate(6,sample(1:8))
Trong Jenkins Pipeline, làm thế nào để sao chép các thành phần từ bản dựng trước sang bản dựng hiện tại? Tôi muốn thực hiện việc này ngay cả khi bản dựng trước đó không thành công. Câu trả lời tốt nhất là Stuart Rowe, cũng trong Pipeline Authoring Si
Tôi đang cố gắng sử dụng phương pháp tiếp cận đường ống Jenkins để thực hiện các công việc đã xác định. Đây là một ví dụ đơn giản: build('jenkins-test-project-build', param1 : 'some-
Khi tôi loại trừ các đối tượng thông qua lệnh pipe sử dụng bộ lọc where, nó không cung cấp cho tôi kết quả đầu ra chính xác. PS C:\Users\Administrator> $proall = Get-ADComputer -filter *
Tôi là một lập trình viên xuất sắc, rất giỏi!