小编Jil*_*urp的帖子

如何删除curl发送的默认标头

默认情况下,Curl会添加内容类型和用户代理等标头.通常这是一件好事,但我正在尝试测试当这些标头丢失时我们的服务器做了什么.我的问题是内容类型标题.如果丢失,服务器会正​​确地假定用户发送了json.但是,curl实际上添加了缺少的标题,并错误地假定我发布的内容是application/x-www-form-urlencoded.它还发送/的Accept标头.我想这是很好的默认行为,但我基本上希望它不发送我没有指定的标头.那有选择吗?

curl -v -X POST 'https://domain.com' -d '{...}'

> User-Agent: curl/7.37.1
> Host: domain.com
> Accept: */*
> Content-Length: 299
> Content-Type: application/x-www-form-urlencoded
Run Code Online (Sandbox Code Playgroud)

curl

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

适用于centos 6.5的openjdk 1.8软件包

我想尽快将我们的生产设置转移到openjdk 1.8.目前我们在centos 6.5上运行openjdk 1.7u55.

麻烦的是,我似乎无法直接从谷歌那里找到一个1.8的yum存储库.是否已在某处释放可用的rpm?如果是的话,在哪里?如果没有,那么可能会发生粗略的ETA(例如,centos 7或epel?).我可能要等几个星期但不会太久.

我至少能找到一些fedora软件包:https://apps.fedoraproject.org/packages/java-1.8.0-openjdk/builds

所以,这表明人们至少在研究这个问题,但我不知道这些软件包是否与centos一样稳定(或根本不工作).

为清楚起见,我知道这是jdk 1.8的早期阶段,并且我很清楚这些权衡.我不是在寻找有关如何从Oracle下载Oracle Java的构建说明或指令,因为它们缺少yum repo和许可证点击是令人讨厌的.

java openjdk centos6

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

获取所有maven依赖项,包括插件依赖项

我正在尝试让maven下载所有依赖项(编译,测试,插件等),以便我可以避免让我们的dockerized构建浪费不必要的时间一遍又一遍地下载它们.

我们已经对我们的maven构建进行了docker化,以便我们可以从jenkins运行它,而不需要在jenkins机器上安装许多构建特定的依赖项(Java,redis,maven依赖项等).我们的构建依赖于增量docker构建,它只执行实际需要重新运行的步骤.

我们的主要构建是一个DockerFile,有几个步骤来安装jdk,maven等.然后它做了

COPY ./pom.xml /opt/inbot-api/pom.xml RUN mvn dependency:copy-dependencies clean

这会将依赖项下载到本地maven存储库,然后清除目标目录.

然后我们将源树复制到映像并运行完整的构建.

COPY ./src /opt/inbot-api/src RUN mvn -e clean install

一般的想法是,在一台干净的机器上,docker将执行所有RUN步骤,但在增量构建时,它只会重新运行需要重新运行的东西.在每个运行步骤之后,它存储中间图像.因此,如果pom文件没有更改,则无需重新运行依赖项提取步骤,因为它会产生完全相同的结果.因此,它会加载已缓存的中间映像,其中包含已下载的所有依赖项.这正是我们想要的.

我们的DockerFile还有很多不太重要的东西,但最终它产生了一个包含我们编译工件的docker文件,一个nginx配置以及我们可以部署到ECS的所有运行时依赖项.

这几乎可以工作,除了mvn clean install仍然下载每个构建的额外插件依赖项.因此,这些是复制依赖性步骤未涵盖的依赖项.

我的问题是,我如何RUN mvn dependency:copy-dependencies clean下载所有依赖项,包括插件依赖项.我已经看到人们实际上做了一个mvn verify clean而不是mvn dependency:copy-dependencies clean但在我们的情况下这有点慢.我想知道是否有更好的方法来做到这一点.

我很感激有关如何改进这一点的任何反馈.

更新

我现在做了

RUN mvn -B -T 4 dependency:copy-dependencies dependency:resolve-plugins dependency:go-offline clean

之后它还会下载更多东西mvn clean install.一个mvn -o clean install仍然失败,尽管dependency:go-offline.所以,这个插件似乎已经被打破了.

maven docker

10
推荐指数
1
解决办法
2672
查看次数

自动部署到sonatype的oss maven存储库

我有几个github java项目.其中一个我已经手动部署到sonatype的存储库,以便它在maven中心发布.

这是一个有点痛苦的过程,因为它似乎涉及太多的箍以跳过和大量的手动工作,我想自动化.所以我实际上已经停止这样做,因为这只是太多的工作.有大量的文档表明这是可能的,并且相当多一些表明它以某种方式涉及使用nexus-staging-maven-plugin做一些事情.不幸的是,所有这些文档都是(以典型的maven风格)跳过基本细节,这使我能够以简单的方式找出允许我自动将发布版本自动发布到sonatype存储库所需的最少步骤(即没有我手动批准的东西).

那么,什么是我的pom中需要出现的模糊(假设一个标准的不复杂的java项目),包括sonatype存储库的url,我发现的所有文档似乎都坚持localhost:8081就是它,并且是必需的maven咒语让它做一个发布(最好通过mvn发布插件),让它签署工件,并让它将生成的工件部署到sonatype,批准并准备好同步到maven central等.

因此,我正在寻找在红宝石世界中替换"宝石推"的maven,它可以在一个方便的单行中完成工作.这是一个简单的例子,给出了一个我认可的jar文件,如何让它以最少量的大惊小怪结束在maven中心.

我非常感谢已经设置的pom文件的一些例子,我可以复制和改编.

编辑:

这是我工作的pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jillesvangurp</groupId>
    <artifactId>jsonj</artifactId>
    <version>1.34-SNAPSHOT</version>

    <name>JsonJ</name>
    <description>A framework for working with json in Java the "proper" way. No mappings or model classes, it's all just lovely json, but in Java.</description>
    <url>https://github.com/jillesvangurp/jsonj</url>

    <licenses>
        <license>
            <name>MIT license</name>
            <url>https://github.com/jillesvangurp/jsonj/blob/master/LICENSE</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>git://git@github.com:jillesvangurp/jsonj.git</url>
        <connection>scm:git:git@github.com:jillesvangurp/jsonj.git</connection>
        <developerConnection>scm:git:git@github.com:jillesvangurp/jsonj.git</developerConnection>
    </scm>

    <repositories>
        <repository>
            <id>sonatype-nexus-snapshots</id>
            <name>Sonatype Nexus Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories> …
Run Code Online (Sandbox Code Playgroud)

java nexus sonatype maven-plugin maven

8
推荐指数
1
解决办法
3072
查看次数

使用 bundle install --deployment 时如何包含 bundler 本身

我正在尝试将我的 ruby​​ 应用程序供应商化,这样我就不必在服务器上手动安装任何 gem,并且可以在我们的 puppet 设置中将我的应用程序部署为 rpm。

这几乎有效,尽管我在 Gemfile 中添加了一个 require 'bundler',但没有任何将它添加到 vendor 目录的痕迹。所以,我的应用程序失败了

no such file to load -- bundler
Run Code Online (Sandbox Code Playgroud)

正是在加载我们的依赖项的时候。

require 'bundler'
Bundler.setup 
Run Code Online (Sandbox Code Playgroud)

是否有一些明显的东西我在这里遗漏了,或者 bundler 实际上不能自己销售?

对于它的价值,我使用的是 jruby 1.7.8 并且有问题的应用程序具有以下 Gemfile:

# run with --local to use locally cached gems
# bundle install --full-index --without testing development

# vendorized setup for production
# bundle install --full-index --without testing development --deployment


source 'https://rubygems.org'

gem 'bundler' 
gem 'sinatra'
gem 'sinatra-flash'
gem 'sinatra-contrib'
gem 'rack-parser', :require => 'rack/parser'
gem 'dynamic_attributes', :github …
Run Code Online (Sandbox Code Playgroud)

ruby bundler

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

athena 跳过以下划线开头的键

我正在尝试与 aws athena 合作,对我们存储在 s3 中的 json 文件进行一些查询。因此,我设法创建了一个简单的模式,一切似乎都很好,直到我注意到我的一些文件没有被考虑在内。

文件的键是用户 ID,其中一些以 _ 开头。所有这些在雅典娜中都缺失了。它们存在于 s3 中。我能得到它们。它们与其他文件类似。但雅典娜没有看到他们。

显然它不喜欢在键的开头使用下划线。除了重命名所有文件之外,还有其他方法可以解决此问题吗?键中其他地方的下划线似乎不是问题。

我的架构(我通过删除字段来简化它):

CREATE EXTERNAL TABLE IF NOT EXISTS db.table ( `user_id` string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://xyz/myfiles/' TBLPROPERTIES ('has_encrypted_data'='false');

amazon-athena

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

杰克逊vs json简单的流解析

我在github上有一个json库https://github.com/jillesvangurp/jsonj

这个库有一个基于json simple的解析器,它使用一个处理程序类来完成我在库中创建JsonObject,JsonArray和JsonPrimitive实例的所有工作.

我见过人们发布各种基准测试表明,jackson解析器在性能方面和它一样好,而json simple是较慢的选项之一.因此,为了看看我是否可以提升性能,我创建了一个替代解析器,它使用jackson流API并调用我用于原始解析器的相同处理程序.从功能的角度来看,这很好用,非常简单.

你可以在这里找到相关的类(JsonHandler,JsonParser和JsonParserNg):https://github.com/jillesvangurp/jsonj/tree/master/src/main/java/com/github/jsonj/tools

但是,我没有看到我运行的各种测试有任何改进.

所以,我的问题是:我是否应该看到任何改进,如果是这样,为什么?在我看来,至少在流API模式下,两个库都具有相似的性能.

我对其他人对此的体验非常感兴趣.

java jackson json-simple

3
推荐指数
1
解决办法
9211
查看次数

在 OSX 上使用 G1 和 IntelliJ 2017.1 的冲突收集器组合

我正在尝试使用 Intellij Community Edition 2017.1 配置垃圾收集。使用以下/Users/jilles/Library/Preferences/IdeaIC2017.1/idea.vmoptions

# custom IntelliJ IDEA VM options

-XX:+UseG1GC
Run Code Online (Sandbox Code Playgroud)

它拒绝以此开始。上面的文件只有 1 个选项可以打开 G1。我只是删除了选项,直到我发现哪个选项导致了问题。经过一番挖掘,我至少设法让它在命令行上告诉我原因(这些东西永远不会出现在日志中):

~/Library/Preferences/IdeaIC2017.1 $ /Applications/IntelliJ\ IDEA\ CE.app/Contents/MacOS/idea
2017-04-14 13:41:52.697 idea[54761:1579154] allVms required 1.8*,1.8+
2017-04-14 13:41:52.701 idea[54761:1579163] fullFileName is: /Applications/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions
2017-04-14 13:41:52.701 idea[54761:1579163] fullFileName exists: /Applications/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions
2017-04-14 13:41:52.701 idea[54761:1579163] Value of IDEA_VM_OPTIONS is (null)
2017-04-14 13:41:52.701 idea[54761:1579163] Processing VMOptions file at /Users/jilles/Library/Preferences/IdeaIC2017.1/idea.vmoptions
2017-04-14 13:41:52.702 idea[54761:1579163] Done
Conflicting collector combinations in option list; please refer to the release notes for the combinations …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection intellij-idea

3
推荐指数
1
解决办法
5184
查看次数

使用 jackson-module-kotlin 反序列化泛型类

我正在尝试使用 jackson-kotlin 集成。大多数情况下它工作得很好,但我在反序列化泛型类型时遇到了麻烦。我尝试调整这个问题的答案:Jackson - Deserialize using generic class

    // create an object mapper
    val jsonFactory = JsonFactory()
    jsonFactory.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false)
    jsonFactory.configure(JsonParser.Feature.IGNORE_UNDEFINED, true)

    val objectMapper = ObjectMapper(jsonFactory)
    objectMapper.findAndRegisterModules()
    objectMapper.propertyNamingStrategy = PropertyNamingStrategy.SnakeCaseStrategy()
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)

    // simple generic type
    data class Inner(val meaningOfLife: Int)
    data class Outer<T>(val inner: T)

    val outer = Outer(Inner(42))

    val serialized = objectMapper.stringify(outer, true)
    println(serialized)

    // deserializing does not work using:
    // /sf/ask/816542611/
    val parsed = objectMapper.readValue<Outer<Inner>>(serialized, objectMapper.typeFactory.constructParametricType(Outer::class.java,Inner::class.java))
Run Code Online (Sandbox Code Playgroud)

这会引发异常:

com.fasterxml.jackson.databind.JsonMappingException: Cannot deserialize Class io.inbot.common.ObjectMapperTest$should handle generics$Outer (of type local/anonymous) as …
Run Code Online (Sandbox Code Playgroud)

generics jackson kotlin

3
推荐指数
1
解决办法
7374
查看次数