小编Jam*_*dle的帖子

Maven父母pom vs模块pom

在多项目构建中似乎有几种方法来构建父pom,我想知道是否有人对每种方式的优点/缺点有任何想法.

拥有父pom的最简单方法是将它放在项目的根目录中,即

myproject/
  myproject-core/
  myproject-api/
  myproject-app/
  pom.xml
Run Code Online (Sandbox Code Playgroud)

其中pom.xml既是父项目又是-core -api和-app模块

下一个方法是将父项分离到它自己的子目录中,如中所示

myproject/
  mypoject-parent/
    pom.xml
  myproject-core/
  myproject-api/
  myproject-app/
Run Code Online (Sandbox Code Playgroud)

父pom仍然包含模块,但它们是相对的,例如../myproject-core

最后,有一个选项,模块定义和父项分开,如

myproject/
  mypoject-parent/
    pom.xml
  myproject-core/
  myproject-api/
  myproject-app/
  pom.xml
Run Code Online (Sandbox Code Playgroud)

父pom包含任何"共享"配置(dependencyManagement,属性等),myproject/pom.xml包含模块列表.

目的是可扩展到大规模构建,因此应该可以扩展到大量项目和工件.

一些奖金问题:

  • 在源代码控制,部署目录,常见插件等中定义各种共享配置的最佳位置在哪里(我假设父母,但我经常被这种情况所困扰,他们最终在每个项目中而不是常见的一个).
  • maven-release插件,hudson和nexus如何处理你如何设置你的多项目(可能是一个巨大的问题,如果有人因为如何设置多项目构建而被抓住了,那就更多了?)

编辑:每个子项目都有自己的pom.xml,我把它留了下来以保持简洁.

java build-process maven-2

279
推荐指数
4
解决办法
15万
查看次数

Declaring Integers, Doubles, Floats, Strings etc. in Spring XML

Occasionally, Spring can't figure out what type a "value" should be. This happens when the property or constructor is of type "java.lang.Object". In these cases, Spring defaults to "java.lang.String". Sometimes this isn't the right choice, for example when using:

<jee:jndi-lookup id="test" jndi-name="java:comp/env/test" 
   default-value="10" expected-type="java.lang.Integer"/>
Run Code Online (Sandbox Code Playgroud)

如果查找失败并且必须回退到默认值,则表示类型不匹配.所以,相反,这需要做:

  <bean id="test" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/test" />
    <property name="defaultObject">
      <bean class="java.lang.Integer">
        <constructor-arg value="10" />
      </bean>
    </property>
  </bean>
Run Code Online (Sandbox Code Playgroud)

这有点冗长,特别是如果它们很多的话.是否有一些方便的方法来声明一个Integer/Long/Double/Float/String文字,而不必使用这种格式:

      <bean class="java.lang.Integer">
        <constructor-arg value="10" />
      </bean>
Run Code Online (Sandbox Code Playgroud)

java spring

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

Rails中的动态作业调度

我已经看过Rails的一些调度库,我想帮助选择一个,因为似乎没有一个能满足我的要求.这是一个相当常见的用例:

我们有许多报告,我们希望让用户在他们想要安排特定报告通过邮件发送给他们的时间和频率时进行设置.用户需要能够查看他们已安排的报告列表,并且他们应该能够取消或更改现有的计划报告.计划的作业应该在服务器重新启动后继续存在.目前,我并不担心只在一个rails服务器集群中的单个节点上运行作业.

  • Rufus调度程序看起来不错,但是我必须编写代码来保存作业并在rails重启时重新启动它们.
  • Delayed_job处理持久性但我无法看到如何定期运行作业,除非可能在新运行时重新安排作业
  • resqueresque调度似乎很接近,但我想,以避免对Redis的加入到我们的堆栈,我可能最终要重新实现一些UI的轨道,使用户可以添加/删除/管理作业,并如果它可以使用与应用程序其余部分相同的ActiveRecord后端,那就太棒了.

ruby-on-rails scheduled-tasks

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

使用协议缓冲区进行二进制日志

我们正在考虑使用Protocol Buffers进行二进制日志记录,因为:

  • 无论如何,这就是我们编码对象的方式
  • 它相对紧凑,读/写速度快等.

这就是说,它不是很明显,我们应该如何去做,因为这些API往往把重点放在创建整个对象,所以包装DataLogEntry列表作为在DataLogFile重复场会是什么,你会在短信方面怎么做,但我们真正想要的只是能够编写然后读取整个DataLogEntry,将其附加到文件的末尾.

我们这样做的第一个问题是这样做(在测试中:

        FileInputStream fileIn = new FileInputStream(logFile);
        CodedInputStream in = CodedInputStream.newInstance(fileIn);
        while(!in.isAtEnd()) {
            DataLogEntry entry = DataLogEntry.parseFrom(in);
            // ... do stuff
        }
Run Code Online (Sandbox Code Playgroud)

仅导致从流中读取1个DataLogEntry.没有isAtEnd,它永远不会停止.

思考?

编辑:我已经切换到使用entry.writeDelimitedTo和BidLogEntry.parseDelimitedFrom,这似乎工作...

java protocol-buffers

7
推荐指数
1
解决办法
4253
查看次数

一线HTTPS服务器

有相当多的一行HTTP服务器可用,例如

蟒蛇

python -m SimpleHTTPServer 8000
Run Code Online (Sandbox Code Playgroud)

红宝石

ruby -run -ehttpd . -p8000
Run Code Online (Sandbox Code Playgroud)

等等

是否有1行HTTPS服务器?如果他们生成自己的自签名证书,那就更好了。少数几行也可以。

https http

7
推荐指数
2
解决办法
1333
查看次数

使用JNDI进行分布式配置

我们正在研究如何在主要基于Java的部署中进行分布式配置.我们有许多应用程序,集中应用程序的配置是有意义的.JNDI似乎是标准选择,可能会退回到像ApacheDS这样的东西(我们也可以在那里存储非Java配置).以下是我考虑过的一些事情.有没有人尝试类似的东西?有什么建议吗?:

分散式

这将适用于多台机器上的多个应用程序,其中一些应用程序将被群集化.理想情况下,Directory Server也应该是群集的.

轻量级

JNDI对它有一点点的感觉.任何人都使用替代分布式配置机制.应用程序本身往往相对轻量级而不是完整的Java EE应用程序(无论Java EE仍然被认为是重量级的,并且需求肯定是重量级的,这一点仍然存在争议).

支持后备

通常,相同的配置适用于多个应用程序(例如,多个应用程序可能连接到同一数据库).另一方面,某些应用程序可能需要特定配置.有时很难事先知道应用程序是使用"全局"配置还是特定的配置,因此能够首先搜索应用程序/主机特定配置然后退回将是好的.我在考虑这样的结构:

/ global/host/application/instance或/ global/application/host/instance:

因此,首先检查该主机上是否存在特定于此应用程序实例的任何配置,然后检查该主机是否存在特定于此应用程序的任何配置,然后检查是否有针对此应用程序的特定内容,然后尝试全局设置.对于这种事情,有没有最佳做法?

实时配置更改

Spring允许使用jee:jndi-lookup进行配置,您可以选择不缓存值,这意味着每个请求都会查找它.我不确定"String"类型配置值是否有意义.它似乎也没有使用NamingListener方法来检测DS中的更改.能够更新Directory Server上的值并将该更改广播到使用它的所有应用程序将是一件好事.

其他考虑

  • 管理不同的环境
  • 将配置添加到源代码管理,以便可以对其应用更改管理
  • 管理不同的版本
  • 滚回来

java configuration distributed jndi

6
推荐指数
1
解决办法
2418
查看次数

返回一个更简单的Iterator接口而不是Rust中的Map

我想写这个:

fn fibs() -> std::iter::Iterator<int> {
    return std::iter::iterate((1i, 1i), |(a, b)| { (b, a + b) }).map(|(a, _)| a)
}
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,我会收到此错误:

error: explicit lifetime bound required
fn fibs() -> std::iter::Iterator<int> {
             ^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

如果我写出完整的界面,它编译:

fn fibs() -> std::iter::Map<'static, (int, int), int, std::iter::Iterate<'static, (int, int)>> {
    return std::iter::iterate((1i, 1i), |(a, b)| { (b, a + b) }).map(|(a, _)| a)
}
Run Code Online (Sandbox Code Playgroud)

有没有办法返回更简单的界面?

rust

6
推荐指数
1
解决办法
1041
查看次数

拦截/装饰PartialFunction

我如何拦截PartialFunction?例如,在演员中,如果我想在将其传递到处理方法之前打印以下接收方法中的所有内容:

class MyActor extends Actor {
  def receive : Receive = process
  def process : Receive = {
    case Some(x) => /* do one thing */ ()
    case None => /* do another thing */ ()
    case _ => /* do something else */ ()
  }
}
Run Code Online (Sandbox Code Playgroud)

scala

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

Ansible - 如果满足前提条件,则仅运行一系列任务

我有一个我需要从远程URL安装的软件包,如:

- get-url: url=http://foo.com/foo.deb dest=/tmp

- command: dpkg --skip-same-version -i /tmp/foo.deb

- apt: update_cache=yes

- apt: pkg=foo state=present
Run Code Online (Sandbox Code Playgroud)

如果pkg = foo不存在,我只想运行前3个.实现这一目标的最佳方法是什么?

ansible ansible-playbook

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

去和回调

我相信通道的使用比回调更受欢迎,有没有办法用更惯用的通道重写它,或者在这里使用回调可以:

type SomeServer struct { }

func RunSomeServer(callback func(SomeServer)) {
    someServer := SomeServer{}
    // do some other setup
    callback(someServer)
    // tear things down
}

func TestSomeServer(t *testing.T) {
    // some server only exists for the lifetime of the callback
    RunSomeServer(func(someServer SomeServer) {
        // run some tests against some Server
    })
}
Run Code Online (Sandbox Code Playgroud)

go

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

Amazon AWS EC2容器服务是否支持卷?

文件建议不.有关其任务定义页面的更多信息,包括一个mysql示例,其中数据卷通常是一个相当不错的主意,即:

{
  "image": "mysql",
  "name": "db",
  "cpu": 10,
  "memory": 500,
  "essential": true,
  "entryPoint": [
    "/entrypoint.sh"
  ],
  "environment": [
    {
      "name": "MYSQL_ROOT_PASSWORD",
      "value": "pass"
    }
  ],
  "portMappings": []
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs

4
推荐指数
1
解决办法
5063
查看次数

如何将AWS Kinesis Firehose格式的记录格式化为Redshift?

考虑以下:

  • Redshift中的一个名为"people"的表,其中包含字段ID,名称和年龄
  • 名为'people'的kinesis firehose流,配置为写入'people'表,'Redshift table columns'的值为'id,name,age'

目前尚不清楚如何格式化'数据'blob.以下是使用制表符分隔的数据代码的示例:

let AWS = require('aws-sdk');
let firehose = new AWS.Firehose();
let params = {
  DeliveryStreamName: 'people',
  // id,name,age
  Records: [{Data: '4ccf6d3a-acdf-11e5-ad54-28cfe91fa8f1\tBob\tSmith'}]
};
firehose.putRecordBatch(params, (err, result) => {
  console.log(err || result);
});
Run Code Online (Sandbox Code Playgroud)

以下是我检查过的一些文档:

amazon-web-services amazon-redshift amazon-kinesis-firehose

4
推荐指数
1
解决办法
4135
查看次数