我在大学里接受过有关正式系统的教学,但我很失望,他们似乎并没有在真正的单词中使用它们.
我喜欢能够知道某些代码(对象,函数,等等)可以工作的想法,而不是通过测试,而是通过证明.
我确信我们都熟悉物理工程和软件工程之间不存在的相似之处(钢铁行为可预测,软件可以做任何事情 - 谁知道!),我很想知道是否有任何语言可以在真实的单词中使用(要求Web框架太多要问?)
我听说过像scala这样的函数式语言的可测试性.
作为软件工程师我们有什么选择?
java testing formal-verification functional-programming scala
import org.scalatest.{ FlatSpec, Matchers, ParallelTestExecution }
import org.scalatest.concurrent.ScalaFutures
import org.apache.thrift.TApplicationException
class Test extends FlatSpec with Matchers with ScalaFutures with ParallelTestExecution {
it should "throw org.apache.thrift.TApplicationException for invalid Ids" in {
val future: Future[Response] = ThriftClient.thriftRequest
whenReady(future) {
res => {
intercept[TApplicationException] {
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题:如何在没有阻塞的情况下断言期货中的预期失败?以上不起作用,在intercept块之前抛出异常.
当我df -h在我的Amazon EC2服务器上运行时,这是输出:
[ec2-user@ip-XXXX ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 25G 25G 0 100% /
tmpfs 4.0G 0 4.0G 0% /dev/shm
Run Code Online (Sandbox Code Playgroud)
由于某种原因,某些东西正在占用我的存储空间.
我试图找到所有的大文件/文件夹,这就是我得到的回报:
[ec2-user@ip-XXXX ~]$ sudo du -a / | sort -n -r | head -n 10
993580 /
639296 /usr
237284 /usr/share
217908 /usr/lib
206884 /opt
150236 /opt/app
150232 /opt/app/current
150224 /opt/app/current/[deleted].com
113432 /usr/lib64
Run Code Online (Sandbox Code Playgroud)
我怎样才能知道我的存储空间是什么?
我的一个TeamCity v7.0构建项目依赖于在当前开发分支和主分支之间使用diff来确定需要运行的内容.我写了一个小脚本,使用类似的东西:
git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles
Run Code Online (Sandbox Code Playgroud)
不幸的是,构建日志表明它git diff不起作用.当我进入这个项目的buildAgent/work目录时,我发现没有.git文件夹,所以它无法执行所需的git操作.
我已经把TW-15873中提到teamcity.git.use.local.mirrors=true的buildAgent.properties文件放入了文件中,但这似乎没有任何帮助.
我可以做些什么来在脚本中为我的构建步骤更改两个分支之间的文件列表?
"愉快"的含义,例如:你可以以"自然"的方式编写语法而不必以复杂的方式重写它们,而不必引入枯燥的样板.
让我们为这个问题的目的规定,除非技术性能在病理上是坏的,否则性能不是最重要的问题.
尽管如此,你可能想提一下,当出于性能原因而不得不重写语法时,技术是否会失败.
在回答这个问题时,请让我了解你曾经使用的语法的大小和复杂性.此外,您是否使用了相关技术的任何值得注意的"高级"功能,以及您对这些功能的印象.
当然,这个问题的答案可能取决于领域,在这种情况下,我很乐意了解这一事实.
众所周知,Jenkins 2.0已经发布,它不仅仅是持续集成(CI),还包括持续交付(CD).所以我想问一下,与Jenkins 2.0相比,Spinnaker的竞争优势是什么?
我已经将scalac命令行参数添加-Ywarn-value-discard到我的构建中,因为这会捕获我在代码中找到的一个微妙的错误.但是,我现在得到一些关于"丢弃的非单位价值"的警告,这些警告是关于有意丢弃的,而不是错误的.我该如何压制这些警告?
写完这篇文章之后,我决定将我的钱放在我的嘴边,并开始转换我以前使用的项目recursion-schemes.
有问题的数据结构是一个懒惰的kdtree.请查看具有显式和隐式递归的实现.
这主要是一种简单的转换:
data KDTree v a = Node a (Node v a) (Node v a) | Leaf v a
Run Code Online (Sandbox Code Playgroud)
至
data KDTreeF v a f = NodeF a f f | Leaf v a
Run Code Online (Sandbox Code Playgroud)
现在对整个shebang进行基准测试后,我发现该KDTreeF版本比普通版本慢了两倍(在这里找到整个版本).
这只是额外的Fix包装,让我放慢了速度吗?有什么我可以做的吗?
cata (fmap foo algebra)了好几次.这是好习惯吗?recursion-schemes包.这有关系吗?https://ghc.haskell.org/trac/ghc/wiki/NewtypeWrappers
是newtype Fix f = Fix …
我正在关注"Java的艺术与科学"一书,它展示了如何计算闰年.本书使用ACM Java Task Force的库.
这是书籍使用的代码:
import acm.program.*;
public class LeapYear extends ConsoleProgram {
public void run()
{
println("This program calculates leap year.");
int year = readInt("Enter the year: ");
boolean isLeapYear = ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0));
if (isLeapYear)
{
println(year + " is a leap year.");
} else
println(year + " is not a leap year.");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这就是我计算闰年的方法.
import acm.program.*;
public class LeapYear extends ConsoleProgram { …Run Code Online (Sandbox Code Playgroud) 其他答案建议使用"-Xlog-implicits"选项来调试"分散隐式扩展"错误.但是,它也会在与这些错误无关的地方记录大量含义.有没有办法限制它只能解释产生编译错误的地方?