我开始研究Scala Koans,它是围绕一系列单元测试组织的,需要填充空白.(这个想法是在类似的Ruby Koans项目之后建模的.)你启动了运行测试的sbt工具,并告诫:
[info] + ***************************************** [info] + [info] + [info] + [info] + Please meditate on koan "None equals None" of suite "AboutEmptyValues" [info] + [info] + [info] + [info] + *****************************************
...所以你去看看这个单元测试它说:
test("None equals None") {
assert(None === __)
}
......并且,在冥想之后,你意识到你应该填写这样的空白:
test("None equals None") {
assert(None === None)
}
......然后它继续进行下一次单元测试.
不过,我的问题是这个===运算符是什么?我似乎无法在任何地方找到它.这是Scala Koans项目本身定义的DSL运营商吗?或者它是ScalaTest框架的一部分?或者在Scala中?
我只是开始熟悉种类的概念,所以如果我没有好好地提出我的问题,请耐心等待...
值有类型:
3 :: Int
[1,2,3] :: [Int]
('c',True) :: (Char,Bool)
Run Code Online (Sandbox Code Playgroud)
类型有种类:
the type 'Int' has kind *
the type '[Int]' also has kind *
but the type constructor [] has kind * -> *
similarly, the type (Char,Bool) has kind *
but the type constructor (,) has kind * -> * -> *
Run Code Online (Sandbox Code Playgroud)
Kinds有什么?
他们种类有类型,种类,品种或品种吗?
这个抽象序列到底有多远?我们是否会停止,因为我们没有语言,或者我们是否因为更远没有价值而停止?或者,或许,因为我们很快就达到了人类认知的极限,而且无法将我们的头脑包裹在更高级别的种类中?
一个相关的问题:语言为我们提供了值构造函数(如cons运算符)来创建值.语言还为我们提供了类型构造函数,如(,)或[]来创建类型.是否有任何语言可以使用类型构造函数来制作类型?
另一个我很好奇的边缘情况:我们显然有一种没有价值的类型,表示为⊥,称为"底部类型".有没有类型的东西:底层的?
我有一个GraphQL服务,我需要从iOS应用程序中获取,我正在尝试调查我的选项是针对此目的的客户端库.我最初的印象是,没有很多好的选择,我对此感到有些惊讶,因为Facebook的移动应用程序总是被引用为GraphQL本身的动机材料.
以下是我目前对我的选择的理解.我的问题是:我可以忽略哪些客户端库选项?我也很好奇你是否想象出适合iOS的理想GraphQL客户端库,它看起来像什么?
NSURLSession直接传递精心制作的手工制作的查询文档,并通过Dictionary代表生成的JSON进行洞察,或者我已经开始通过Erik Meijer的13个部分讲座(以及Graham Hutton的幻灯片)来学习Haskell.
在第4章的幻灯片上,第13页介绍了n + k模式的模式匹配语法.特别是,它说:
与数学一样,整数函数可以使用n + k模式定义,其中n是整数变量,k> 0是整数常量.
pred :: Int -> Int
pred (n+1) = n
Run Code Online (Sandbox Code Playgroud)
当我在REPL中自己尝试这个时,我收到一条错误消息:
*Main> let mypred (n+1) = n
<interactive>:65:13: Parse error in pattern: n + 1
Run Code Online (Sandbox Code Playgroud)
同样,如果我在*.hs文件中尝试它
mypred :: Int -> Int
mypred (n+1) = n
Run Code Online (Sandbox Code Playgroud)
编译器给出了类似的抱怨:
/Users/pohl/Code/praxis-haskell/helloworld.hs:14:9:
Parse error in pattern: n + 1
Run Code Online (Sandbox Code Playgroud)
我不明白如何使用n + k模式?
我的组织现在正在进行一场有趣的内部辩论,提出了一个我想向社会开放的问题.
手头的问题是我们的环境,我们在其中进行压力测试,容量测试,性能回归测试等.
争论的一方面是一些软件工程师希望这种环境尽可能地反映生产环境,以使结果尽可能有意义.虽然我们目前确实有这样的测试环境,但它的能力远远低于生产系统,而且这些软件工程师认为他们正在达到他们可以从中学到的极限.
争论的另一方面是一些网络工程师,他们既管理环境又控制钱包.虽然他们承认在能够更好地复制生产环境的环境中容量测试会更好,但他们认为 - 为了压力测试的目的 - 更温和的环境会产生放大性能瓶颈的影响,使它们更容易发现并修复
这最终将我们带到引起我兴趣的部分:一位软件工程师建议,虽然一个更温和的压力环境会增加你遇到一些瓶颈的可能性,但它并不一定意味着它可以帮助你找到你可能遇到的下一个瓶颈在生产中遇到.他认为,缩放效应可能不是线性的.
那个观点是否有价值?如果是,那为什么呢?这种非线性的来源是什么?
这里涉及许多活动部分:一组Java应用程序服务器,一组数据库服务器,为每个HTTP命中生成大量动态内容.
编辑:到目前为止,我很欣赏每个人的想法,但我真的希望有人能做的不仅仅是重新确认一方或另一方并实际解决"为什么"的问题.如果存在这种非线性,会产生什么?更好的是,如果原因表现在CPU,内存,带宽,延迟,子系统之间的交互,你有什么...... TerryE,你来的最近.如果没有其他人加强,您应该重新发布您的评论作为赏金的答案
architecture optimization stress-testing performance-testing
我正在玩一个简单的OCUnit测试用于iPhone应用程序,并且只是想断言应用程序委托是我期望它的类的实例.我没想到这个测试非常有用,但结果却揭示了我对Objective C的误解.
我首先得到了代表的参考.然后我记录回来的类名.在我的例子中,输出正确地说"app delegate的类名是CalculatorAppDelegate".
但是,下一行的断言失败了,我不明白为什么.
- (void)testAppDelegate
{
id appDelegate = [[UIApplication sharedApplication] delegate];
NSLog(@"app delegate's class name is %@", NSStringFromClass([appDelegate class]));
NSLog(@"is it kind? %i", [appDelegate isKindOfClass:[CalculatorAppDelegate class]]);
NSLog(@"is it member? %i", [appDelegate isMemberOfClass:[CalculatorAppDelegate class]]);
NSLog(@"class == class %i", [appDelegate class] == [CalculatorAppDelegate class]);
STAssertTrue([appDelegate isKindOfClass:[CalculatorAppDelegate class]], @"wtf");
}
Run Code Online (Sandbox Code Playgroud)
什么情况可能导致NSStringFromClass()返回正确的类名,而isKindOfClass返回false?
2011-03-19 15:51:13.864 Calculator[40092:207] app delegate's class name is CalculatorAppDelegate
2011-03-19 15:51:13.864 Calculator[40092:207] is it kind? 0
2011-03-19 15:51:13.865 Calculator[40092:207] is it member? 0
2011-03-19 15:51:13.865 Calculator[40092:207] class == class …Run Code Online (Sandbox Code Playgroud) 我意识到已经 充分 讨论了检查异常与Java中未经检查的异常的相对优点,我不打算重新审视整个辩论.
相反,当我阅读Joshua Bloch的Effective Java,第2版时,我想问一个非常具体的问题.在我阅读时,我注意到在第59项("避免不必要地使用已检查的异常")中,Joshua在Java API中给出了一个使用已检查异常的示例.具体来说,在Object:
protected Object clone()
throws CloneNotSupportedException
Run Code Online (Sandbox Code Playgroud)
...然后争辩说它应该是一个未经检查的例外.
如果使用API的程序员不能做得更好,那么未经检查的异常会更合适.未通过此测试的异常的一个示例是CloneNotSupportedException.它由Object.clone引发,只应在实现Cloneable(Item 11)的对象上调用它.实际上,catch块几乎总是具有断言失败的特征.异常的检查性质对程序员没有任何好处,但它需要努力并使程序复杂化.
然后我看着他是否有一个反向的例子,但我找不到一个.
所以我想问一下是否有人可以在Java中提供一个使用未经检查的异常的API示例,但是检查异常是更好的选择,并解释原因.一个现实世界的例子会更可取,但如果能够说明问题的话,我愿意接受一个人为的例子.
编辑: 对于那些投票决定将其视为非建设性的人,我想明确表示我不是在寻找意见,辩论,争论或扩展讨论.我也不参加民意调查.相反,我正在寻找能够清楚地分析收益如何超过成本的例子.(隐含的是承认有成本.)那就是说,我怀疑这个问题的性质是否有可能.我估计Jon Skeet不能这样做,它不可能完成.也许你是对的.如果必须,请关闭.
编辑:虽然我对这个回复不感兴趣,但我只是因为我的接受率而将此奖励给Jon.
在通过Cay S. Horstmann的"Scala for the Impatient"的过程中,我注意到第一章第一次练习所揭示的一些有趣的东西.
当我这样做时,我得到以下内容
scala> 3. % & * + - / > >= >> >>> ^ asInstanceOf isInstanceOf toByte toChar toDouble toFloat toInt toLong toShort toString unary_+ unary_- unary_~ |
但是我注意到如果我第二次点击Tab,我会得到一个略有不同的列表.
scala> 3. != ## % & * + - / >= >> >>> ^ asInstanceOf equals getClass hashCode isInstanceOf toByte toChar toDouble toFloat toInt toLong toShort toString unary_+ unary_- unary_~ |
REPL试图在这里告诉我什么?第二次出现的不同方法有什么特别之处吗?
StackOverflow上有几个问题讨论了何时应该使用assert语句而不是抛出一些异常的问题.(这里,这里,这里,这里和这里的例子.
但是,我开始怀疑assert-versus-throw的传统智慧是基于您在JVM中运行的假设.在GWT Universe中,您的Java被音译为JavaScript并在浏览器的上下文中运行,这一组权衡感觉不同:在浏览器中运行时,断言总是被编译掉,并且任何使JavaScript的大小变小的东西是一个胜利,特别是如果你的网络应用程序必须在手机上运行.断言确实可以在DevMode中运行,因此它们在开发过程中具有实用性.
所以我的问题是:有没有人考虑过一套最佳实践规则来管理如何在GWT中使用断言语句?我有我的团队成员问我"因为断言被编译出来,有它们是否有意义?",我想对他们有一个好的答案.
此外,是否有人对Google的GWT开发人员在此主题上的理念有所了解?查看GWT源代码,他们似乎经常使用它.
我在下面的问题的最终解决方法是说服我们的IT人员不要使用dockerhub注册表.唉,我无法得到任何其他工作.
我遇到了一个问题,我最初尝试让Docker在我的Mac上运行,运行10.8.5.看来我公司的证书重写代理似乎妨碍了获取图像:
orflongpmacx8:docker pohl_longsine$ docker run hello-world
Unable to find image 'hello-world:latest' locally
Pulling repository hello-world
FATA[0001] Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "bcauth")
Run Code Online (Sandbox Code Playgroud)
(事实上,当我登录到无线客户端 - 它没有这个有用的代理时 - 我可以通过这一步.但是,我需要弄清楚如何通过代理使这项工作,因为使用来宾无线是无法做到的长期解决方案.)
从表面上看,我的问题看起来非常像这个问题中回答的问题.但是,该问题中接受的答案对我不起作用,因为他们讨论的root_unix.go文件不会在Mac上调用.(通过浏览,我猜想会涉及到root_cgo_darwin.go和/或root_darwin.go.)
这并没有真正告诉我,在操作上,我需要做同样的安装某种可信证书的工作.我设法把手放在一个*.cer我认为是我需要的文件上,但我不知道该如何处理它.
我希望有人能指出我正确的方向.
编辑:我想也许我需要一些类似于这个页面建议的东西来添加证书.唉,我按照以下方式尝试遵循这些指示失败:
orflongpmacx8:docker pohl_longsine$ sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "~/Desktop/Certs/redacted.cer"
Password:
***Error reading file ~/Desktop/Certs/redacted.cer***
Error …Run Code Online (Sandbox Code Playgroud) scala ×3
haskell ×2
java ×2
scala-2.9 ×2
api-design ×1
architecture ×1
assert ×1
boot2docker ×1
cs193p ×1
docker ×1
exception ×1
ghci ×1
go ×1
graphql ×1
gwt ×1
ios ×1
iphone ×1
json ×1
macos ×1
objective-c ×1
ocunit ×1
optimization ×1
rest ×1
scalatest ×1
ssl ×1