小编Rob*_*een的帖子

Haskell IORef数组用法

我正在开发一个程序,它使用大量IORef的数据类型列表.哪种内存/处理器效率更高的方法:

[IORef Foo]
Run Code Online (Sandbox Code Playgroud)

要么

IORef [Foo]
Run Code Online (Sandbox Code Playgroud)

忽略我使用列表而不是向量或数组的事实.

monads haskell functional-programming data-structures ioref

5
推荐指数
1
解决办法
364
查看次数

将最近的提交转移到另一个分支

我为一些测试目的创建了一个额外的分支.

在开始工作之前,我切换回主分支,喝完茶后,我开始添加文件并修改master分支中的其他文件.

只有在我提交之后,我才记得我在主分支中,而在开始更改之前我必须切换到我的第二分支.

如果可以将此提交发送到第二个分支并从主分支中删除它,您能告诉我吗?

谢谢

git

5
推荐指数
2
解决办法
836
查看次数

使用 sbt 将 Debian 软件包发布到 Artifactory

我正在使用 sbt-native-packager 为我的 Scala Play 2 项目创建 Debian 软件包并将其发布到 Artifactory 存储库。

到目前为止,我能够生成.deb包,但无法将其发布到神器 URL。发布的唯一工件是 debian.changes文件,但不是实际.deb文件。

我最近升级到 Play 2.3.2,它使用 sbt 0.13.5 和 sbt-native-packager 0.7.4。这可能是相关的,因为将 .deb 文件发布到工件确实可以与 sbt-native-packager 0.7.1 一起使用。

我努力尝试理解这个问题,并确实发现在最新版本中我必须添加debianChangelog in Debian := Some(file("src/debian/changelog"))到我的.sbt文件中,但我现在陷入困境。

我的问题很简单,.deb当我这样做时没有发布任何文件debian:publish。仅.changes发布文件:
[info] published atk to http:...:8081/artifactory/atk-snapshots/atk/atk/1.0-SNAPSHOT/atk-1.0-SNAPSHOT.changes

有人知道我应该做什么来解决我的发布问题吗?

我在项目的 .sbt 文件中将以下设置作为导入和版本:

import com.typesafe.sbt.SbtNativePackager._
import com.typesafe.sbt.SbtNativePackager.NativePackagerKeys._
import com.typesafe.sbt.packager.archetypes.ServerLoader.SystemV
import NativePackagerKeys._

name := """atk"""

scalacOptions += "-target:jvm-1.7"

javacOptions ++= Seq("-source", "1.7", "-target", "1.7")

version := …
Run Code Online (Sandbox Code Playgroud)

sbt-native-packager

5
推荐指数
1
解决办法
1031
查看次数

Forked IORef阅读器功能似乎停止主线程

我正在做一些并发和内存可见性的实验,并遇到了这种奇怪的行为(请参阅注释内联):

module Main
    where

import Data.IORef
import Control.Concurrent
import System.CPUTime

import System.IO

main = do
    hSetBuffering stdout NoBuffering

    r <- newIORef False
    putStrLn "forking..."  -- PRINTED
    forkIO $ f r
    threadDelay 1000000

    putStrLn "writeIORef"  -- NEVER PRINTED
    writeIORef r True

    threadDelay maxBound

f :: IORef Bool -> IO ()
f r = readIORef r >>= \b-> if b then print "NEVER PRINTED" else f r
Run Code Online (Sandbox Code Playgroud)

我希望writeIORef孩子线程可能看不到,但主线程不能简单地(显然)停止.

编译于ghc 7.8.3

 cabal exec ghc -- --make -fforce-recomp -O2 -threaded visibility.hs  
Run Code Online (Sandbox Code Playgroud)

并运行 …

concurrency haskell ghc ioref

5
推荐指数
1
解决办法
112
查看次数

如何将提交从一个分支复制到另一个分支

我有两个我正在努力的功能

共享 - 提交 - A - B - C Feat1

共享 - 提交 - D - E - F Feat2

问题是,为了测试Feat2我也确实需要Feat1,但我仍然希望它们作为单独的分支,因为它们是不同的.有什么好方法可以对Feat2进行更改,然后快速创建第三个分支,这两个分支都在一起,不需要我每次都要销毁它.

共享 - 提交 - Feat1 - Feat2

我在做的是

git checkout feat2 git branch -b combo git rebase -i feat1

但是当我对feat2进行更新时,我不知道如何合并这些新的更改.

git

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

如何在 Linux 中使用 grep 搜索包含方括号(“[ ]”)的文本

我正在尝试在文件中搜索包含“[]”括号的文本。例如,

list[1];
i[ab1];
Run Code Online (Sandbox Code Playgroud)

我试过了grep -i \[[a-z||1-9]*\] myfile。但它不起作用。这些方括号是特殊字符。我不知道如何逃避那里的特殊含义。任何人都可以提出任何建议吗?

regex linux grep

5
推荐指数
2
解决办法
7582
查看次数

getopts - 如果标志为空 getopts 使用下一个标志

我正在尝试将 getopts 用于 bash 脚本。该脚本可以有标志,所有这些标志都是强制性的,并且需要包含一个值。当应该包含值的强制标志之一为空时,getopts 使用下一个行标志作为其内容。我该如何防止这种情况?

这是我的例子:

#!/bin/bash

while getopts "A:B:" OPTION
do
        case $OPTION in
        A)
        GILIA="$GILIA $OPTARG"
        echo GILIA $GILIA
        ;;
        B)
        GILIB="$GILIB $OPTARG"
        echo GILIB $GILIB
        ;;
        esac
done
Run Code Online (Sandbox Code Playgroud)

当使用两个带有值的标志时:

./test_opt2 -A aaa -B bbb
GILIA aaa
GILIB bbb
Run Code Online (Sandbox Code Playgroud)

当使用“-A”标志为空时:

./test_opt2 -A  -B bbb
GILIA -B
Run Code Online (Sandbox Code Playgroud)

我知道这是 getopts 的正常/典型行为,并且我确信有一种方法可以解决这个问题......

有任何想法吗?

bash getopts

5
推荐指数
1
解决办法
4593
查看次数

使用HyperLogLog对代码进行可靠的集成测试?

我们正在使用Twitter在Algebird中实现HyperLogLog.给定N和我们的系统中的检查,使用HyperLogLog估计逐渐增长的集合的当前大小并测试它是否多于或少于N,我们如何编写测试此检查的集成或系统测试,如果我们调用HyperLogLog的代码是正确的,几乎可以保证通过?被测系统是非确定性的,因为,一方面,它是多线程的.

我的第一个想法是,编写一个对这个用例可靠的集成测试的正确方法是"放弃我们的标准".那么,什么是足够数量的项目(M)发布到端点,以确保HyperLogLog将估计项目的总数超过N,概率,例如,> = 0.999999?

还是有更好的方法?

标准误差界限是可配置的,但这并不直接告诉我们偶尔可能看到的最大误差界限 - 这是我关心的,以避免随机失败的CI构建在主人身上造成浪费的时间和头发-pulling!

我还担心我们在测试中生成随机数据的方式可能不会在相关方面生成均匀分布的随机数据,这可能会对概率计算产生重大影响.

integration-testing approximation hyperloglog

5
推荐指数
1
解决办法
127
查看次数

如何使用 apt-get 安装旧版本的 php?

我有这个旧版本的软件包,我想将其安装在 Ubuntu 上。

https://launchpad.net/ubuntu/+source/php5/5.3.10-1ubuntu3.20
Run Code Online (Sandbox Code Playgroud)

如何使用 apt-get 安装它?谢谢

linux ubuntu apt-get

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

如何使用Gradle将文件夹结构(不是文件)发布到maven仓库?

我们需要将JavaDoc作为站点而不是存档发布到我们的maven存储库,以便可以直接从那里浏览它.我们基于maven的项目已经实现了这一点,但我们无法通过Gradle找到解决方法 - 我认为使用"站点部署".

搜索这一点非常复杂,因为"网站"是一个如此重载的术语,其他搜索不会产生任何结果.

gradle

5
推荐指数
1
解决办法
280
查看次数