我在Mac上使用GIT.说够了.我有工具,我有经验.我想继续使用它.这里没有战争......
问题始终在于互操作性.大多数人都使用SVN,这对我来说很棒.Git SVN开箱即用,是一个没有多余装饰的解决方案.人们可以继续愉快地使用SVN,我不会丢失我的工作流程,也不会丢失我的工具.
现在......有些人和Mercurial一起来了.对他们来说很好:他们有他们的理由.但我找不到任何GIT HG开箱即用.我不想切换到HG,但我仍然需要与他们的存储库进行互操作.
你们中的任何人都知道一个简单的解决方案吗?
考虑以下对集合的简单操作:
static List<int> x = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var result = x.Where(i => i % 2 == 0).Where(i => i > 5);
Run Code Online (Sandbox Code Playgroud)
现在让我们使用表达式.以下代码大致相当:
static void UsingLambda() {
Func<IEnumerable<int>, IEnumerable<int>> lambda = l => l.Where(i => i % 2 == 0).Where(i => i > 5);
var t0 = DateTime.Now.Ticks;
for (int j = 1; j < MAX; j++)
var sss = lambda(x).ToList();
var tn = DateTime.Now.Ticks;
Console.WriteLine("Using lambda: {0}", tn …Run Code Online (Sandbox Code Playgroud) 我试图了解在Scala中讨论部分应用程序的优点.请考虑以下代码:
def sum(f: Int => Int) = (a: Int, b: Int) => f(a) + f(b)
def sum2(f: Int => Int, a: Int, b: Int): Int = f(a) + f(b)
def sum3(f: Int => Int)(a: Int, b: Int): Int = f(a) + f(b)
val ho = sum({identity})
val partial = sum2({ identity }, _, _)
val currying = sum3({ identity })
val a = currying(2, 2)
val b = partial(2, 2)
val c = ho(2, 2)
Run Code Online (Sandbox Code Playgroud)
那么,如果我可以轻松计算部分应用的功能,那么currying的优点是什么?
我最近一直试图围绕Akka和基于演员的系统的概念.虽然我对Akka基本原理有很好的理解,但现在我仍然在集群和远程演员方面遇到一些问题.
我将尝试使用Play Framework 2.0附带的WebSocket聊天示例来说明问题:有一个持有WebSockets并保留当前连接用户列表的actor.演员基本上在技术上和逻辑上代表聊天室.只要在单个服务器上运行单个聊天室,这就完美无缺.
现在,我正在尝试理解当我们讨论在服务器群集上运行的许多动态聊天室(可以随时打开/关闭的新房间)时添加或删除单个节点时如何扩展此示例根据目前的需求).在这种情况下,用户A可以连接到服务器1,而用户B连接到服务器2.两者可能在同一个聊天室中进行通话.在每个服务器上仍然会有一个actor(对于每个聊天室?),它保存WebSocket实例以接收和发布事件(消息)给正确的用户.但从逻辑上讲,服务器1或服务器2上只应有一个聊天室角色,其中包含当前连接用户(或类似任务)的列表.
您将如何实现这一目标,最好是在"纯akka"中,而不添加ZeroMQ或RabbitMQ等额外的消息传递系统?
这是我到目前为止所提出的,请告诉我这是否有意义:
如果服务器2出现故障,则必须以某种方式在服务器2上重新创建/移动聊天室角色,尽管这不是我现在主要关注的问题.我最想知道演员如何在各种基本上独立的机器上进行动态发现,可以使用Akka的工具集来完成.
我一直在看Akka的文档很长一段时间了,所以也许我错过了这里显而易见的.如果是的话,请赐教:-)
任何人都可以解释我为什么这样做:
a.mapValues(_.size)
Run Code Online (Sandbox Code Playgroud)
代替
a.mapValues(x => x.size)
Run Code Online (Sandbox Code Playgroud)
但我不能这样做
a.groupBy(_)
Run Code Online (Sandbox Code Playgroud)
代替
a.groupBy(x => x)
Run Code Online (Sandbox Code Playgroud) SOOOO ...
Semigroups,Monoids,Monads,Functors,Lenses,Catamorphisms,Anamorphisms,Arrows ......这些听起来都很好,经过一两次(或十次)运动后,你可以掌握它们的本质.而且Scalaz,你可以免费获得它们......
然而,就现实世界的编程而言,我发现自己很难找到这些概念的用法.是的,当然我总是在网上找到一个人在Scala上使用Monads for IO或Lenses,但是......仍然......
我试图找到的是模式的"规定"线.类似的事情:"在这里,你试图解决这个问题,解决这个问题的一个好方法是用这种方式使用镜头!"
建议?
更新:沿着这些方面,有一两本书的内容会很棒(感谢Paul):Java核心库中的GoF设计模式示例
根据Scala 2.10,与1.6的默认发射相比,JVM 1.7发射字节码有什么优势(如果有的话)?
我在OSX上使用Xcode来开发命令行C应用程序.我还想使用Instruments来分析和查找内存泄漏.
但是,在从仪器内启动应用程序时,我找不到显示控制台的方法.我也无法附加到正在运行的命令行进程(它退出时出错):
这是一个示例代码:
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <setjmp.h>
static sigjmp_buf jmpbuf;
void handler(int sig) {
char c[BUFSIZ];
printf ("Got signal %d\n", sig);
printf ("Deseja sair? (s/n) ");
fgets(c, sizeof(c), stdin);
if(c[0] == 's') {
exit(0);
} else {
siglongjmp(jmpbuf, 1);
}
}
int main(void) {
char buf[BUFSIZ];
signal(SIGINT, handler);
sigsetjmp(jmpbuf, 1);
while(1) {
printf(">>>");
fgets(buf, sizeof(buf), stdin);
printf ("Introduziu: %s\n", buf);
}
return(0);
}
Run Code Online (Sandbox Code Playgroud)
这是我启动Instruments后尝试连接到xcode中正在运行的进程时出现的错误:
[Switching to process 1475]
[Switching to process 1475]
Error while running hook_stop: …Run Code Online (Sandbox Code Playgroud) 让我们想象一下Java中假设的HFT系统,需要(非常)低延迟,许多短暂的小对象在某种程度上是由于不变性(Scala?),每秒数千个连接,以及在事件驱动架构(akka和amqp?).
对于那里的专家来说,(假设)对JVM 7的最佳调整是什么?什么类型的代码会让它开心?Scala和Akka会为这种系统做好准备吗?
注意:已经有一些类似的问题,像这样的一个,但我还没有找到一个覆盖斯卡拉(它有自己的特质足迹在JVM).
考虑以下两个特征:
trait Poked extends Actor {
override def receive = {
case Poke(port, x) => ReceivePoke(port, x)
}
def ReceivePoke(port: String, x: Any)
}
trait Peeked extends Actor {
override def receive = {
case Peek(port) => ReceivePeek(port)
}
def ReceivePeek(port: String)
}
Run Code Online (Sandbox Code Playgroud)
现在考虑我可以创建一个实现两个特征的新Actor:
val peekedpoked = actorRef(new Actor extends Poked with Peeked)
Run Code Online (Sandbox Code Playgroud)
如何撰写接收处理程序?即,接收器应该是类似下面的代码,虽然"自动生成"(即,所有特征应该组成):
def receive = (Poked.receive: Receive) orElse (Peeked.receive: Receive) orElse ...
Run Code Online (Sandbox Code Playgroud) scala ×6
akka ×3
jvm ×2
performance ×2
akka-cluster ×1
bytecode ×1
c ×1
c# ×1
composition ×1
currying ×1
debugging ×1
dvcs ×1
git ×1
instruments ×1
interop ×1
lambda ×1
low-latency ×1
macos ×1
mercurial ×1
scalaz ×1
xcode ×1