根据scala-wartremover静态分析工具,我必须将"final"放在我创建的每个case类的前面:错误消息说"case classes必须是final".
根据scapegoat(Scala的另一个静态分析工具)而不是我不应该(错误消息:"案例类的冗余最终修饰符")
谁是对的,为什么?
我有一个20GB + rdb转储生产.我怀疑有一组特定的钥匙膨胀它.我想有办法总是发现静态转储分析中的前100个最大的对象,或者问它到服务器本身,顺便说一下,它有7M对象.
像rdbtools这样的转储分析工具对此(我认为)真正常见的用例没有帮助!
我正在考虑编写一个脚本并使用"redis-cli调试对象"迭代整个键集,但我觉得必须有一些我缺少的工具.
" 序列 " 一词意味着一个接一个的一系列动作.
object Test {
def main(args: Array[String]) {
def producer() = {
val list = Seq(
future { println("startFirst"); Thread.sleep(3000); println("stopFirst") },
future { println("startSecond"); Thread.sleep(1000); println("stopSecond") }
)
Future.sequence(list)
}
Await.result(producer, Duration.Inf)
}
}
Run Code Online (Sandbox Code Playgroud)
因此我希望打印这个程序:
startFirst
stopFirst
startSecond
stopSecond
甚至:
startSecond
stopSecond
startFirst
stopFirst
但不是(因为它发生):
startFirst
startSecond
stopSecond
stopFirst
为什么不调用此方法Future.parallel()?我应该用什么来保证期货的所有 Seq期货都是连续触发的(而不是并行的)?
这个Git问题与另一个关于SVN的问题非常相似.
我有一个充满大文件的repo,我需要添加一个文件.这在SVN中非常容易.
svn import -m "Adding just a file" file_name http://path/to/svn/repo/file_name
如何在Git中实现这个简单的任务?
我想让我的客户直接与ElasticSearch REST API对话,显然阻止他们执行任何数据或配置更改.
我看了一下ElasticSearch REST接口,我注意到了这种模式:HTTP GET请求非常安全(无害查询和集群状态).
所以我认为我可以将Cloudfront用作仅允许GET/HEAD方法的CDN /代理(您可以将其限制在主配置中).
到目前为止一切都很好,一切都已成立.但事情不起作用,因为我需要向全世界开放我的EC2安全组才能从Cloudfront访问!我真不想要这个!
当我将EC2与RDS一起使用时,我可以简单地允许访问RDS安全组中的EC2安全组.为什么我不能使用CloudFront执行此操作?或者我可以吗?
想法?
编辑:它没有记录,但ES接受facets查询,它涉及(JSON)主体,不仅使用POST,还使用GET.这通过不忽略GET请求(源)的主体来简单地破坏HTTP建议(对于RFC3616 ).这是因为,正如所指出的那样,直接暴露ES REST接口可能导致使用复杂查询的轻松DOS攻击.我仍然相信,少一个代理仍然值得.
编辑:我另一个选项是跳过CloudFront的并增加了安全层作为ElasticSearch插件,如图点击这里
rest http amazon-web-services elasticsearch amazon-cloudfront
我得到了一个典型的例子:
INSERT INTO user_logins (username, logins)
VALUES ('Naomi',1),('James',1)
ON CONFLICT (username)
DO UPDATE SET logins = user_logins.logins + EXCLUDED.logins;
Run Code Online (Sandbox Code Playgroud)
但现在我还需要知道:
这应该是非常直接的,但我看不到任何工作被执行.我在任务的execute()方法上有一个断点,没有任何线程到达那里.我没有弄到什么问题.
工作
class Printer implements Job{
public Printer(){
System.out.println("created printer");
}
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("hi" + context.getFireTime());
}
}
Run Code Online (Sandbox Code Playgroud)
主要课程
class MyClass {
public static void main(String[] args) throws Throwable {
Scheduler s = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = newJob(Printer.class).build();
CronTrigger trigger =
newTrigger()
.withIdentity("a", "t")
.withSchedule(cronSchedule("0/5 * * * * ?").inTimeZone(TimeZone.getDefault()))
.forJob(job).build();
s.scheduleJob(job, trigger);
// This prints the right date!
System.out.println(trigger.getNextFireTime());
s.start();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我发现我没有quartz.property文件,所以有可能没有创建石英线程池.因此,正如文档中所读,我使用StdSchedulerFactory替换了以下代码:
DirectSchedulerFactory.getInstance().createVolatileScheduler(10);
Scheduler s = DirectSchedulerFactory.getInstance().getScheduler();
Run Code Online (Sandbox Code Playgroud)
你猜怎么着?还没有运气.同样的效果.应用程序保持活着,触发不触发.
我来自斯卡拉.所以我经常这样做:
println((1 to 10).filter(_ < 3).map(x => x*x))
Run Code Online (Sandbox Code Playgroud)
在Haskell中,在我发现我可以使用$和删除所有嵌套的括号之后.,我最近发现自己写了:
putStrLn . show . map (**2) . filter (< 3) $ [1..10]
Run Code Online (Sandbox Code Playgroud)
现在,这有效,但代码从右向左阅读,除非我转向阿拉伯语,否则我很难理解.
有没有其他技巧让我从左到右连接功能?或者这只是Haskell惯用的方式?
最近发布了Scala native,但他们使用的垃圾收集器(目前)非常简陋,并且不适合严肃使用.
所以我想知道:为什么不将Scala转换为Go(一个scala.js)?它将是一个快速,可移植的运行时.他们的GC越来越好了.更不用说伟大的并发模型的继承:渠道和goroutines.
我正在尝试为Kibana添加基于角色的访问控制,以便为不同类型的用户提供不同的权限和仪表板,我找到了这些项目:
我发现的是:
Elastic Shield(现在称为X-Pack)是最好的,但不幸的是它只有30天免费试用.
搜索保护模块有点复杂,它可以完成这项工作,但它不是免费的商业用途,不适合我的情况.
ReadonlyREST插件允许您定义哪个用户读取哪些数据,他们的Enterprise Kibana插件(非免费)也允许您为组或用户分配kibana索引.
Kibana Plugin Own Home是一种解决方案,因为它为不同的用户定义了不同的kibana索引,这是不切实际的.
如果您知道上述项目的任何其他项目或任何解决方法满足我的要求,我将非常感激.
scala ×4
case-class ×1
cron ×1
future ×1
git ×1
github ×1
go ×1
haskell ×1
http ×1
java ×1
kibana ×1
postgresql ×1
redis ×1
rest ×1
scala-native ×1
svn ×1
upsert ×1
user-roles ×1