小编Joe*_*Joe的帖子

Android build默认在build.gradle中构建什么产品风味?

我们有一个使用新Gradle构建系统的Android项目,我们使用Android Studio作为开发工具.如果指定了多种产品风格build.gradle,我们会注意到Android Studio按字母顺序构建了第一个.有没有办法告诉Android Studio在开发过程中只构建和测试特定的产品风格?

android gradle android-studio android-gradle-plugin

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

Vim退格键仅适用于新文本

为了好玩,我决定从源代码编译vim.简而言之,构建似乎很顺利,但是当我进入插入模式时,我无法使用<BACKSPACE>键删除在插入模式下使用<ENTER>键创建的现有字符或换行符.这个发行版的预制包就可以了.我也知道退格键本身没有问题,因为我可以对我刚输入的字符进行退格,而不是现有的字符.

这几乎是有道理的,因为vim大部分时间都是按行进行的.我需要设置一个标志来支持这种行为吗?或者设计进入正常模式以删除现有字符/换行符更快?

vim

26
推荐指数
1
解决办法
2909
查看次数

在成员函数中返回*this

我最近使用了一个允许以下类型语法的库:

MyClass myObject;
myObject
    .setMember1("string value")
    .setMember2(4.0f)
    .setMember3(-1);
Run Code Online (Sandbox Code Playgroud)

显然,这是通过让setter返回MyClass&type来实现的; 类似return*this.我喜欢这段代码的样子,但我看不太多.当发生这种情况时,我通常会怀疑为什么.

那么,这是一种不好的做法吗?像这样做的一些含义是什么?

c++ class this

13
推荐指数
2
解决办法
720
查看次数

使用HG Subversion推送到SVN时的工作流程

这个问题是非常相似,在提出的一个这样的问题,但我有解决方法如下一些问题.

问题:

基本上我有一个subversion服务器和一个mercurial本地客户端.扩展hg-subversion允许mercurial充当subversion客户端.这对我来说是理想的,因为我可以在我的subversion开发分支中创建无限的功能分支,并在我选择合适时合并它们.

由于subversion的限制,我无法将分支合并提交到subversion存储库.实际上,我不需要提交每个分支合并,我只想将"默认"分支头提交给SVN.

拟议的解决方案:

Harvey建议的解决方法用户是修改我的工作流程,以包含用于开发的hgsubversion克隆的仅hg克隆.

引用哈维的话:

诀窍是学习修改后的hg < - > hgsubversion < - > svn工作流程.一旦你"了解"它的工作方式,你就不会有任何麻烦.你只需输入几个命令.我实际上已经开始编写脚本来使这个过程(重复性)更容易.典型流程:[in"hg"repo]提交一系列更改; 把他们推向"hgsubversion"; [切换到"hgsubversion"] hg update(hgsubversion需要这个); hg推送到"svn"(在你推送并在本地删除你的变更集后自动重新拉出); [切换回"hg"] hg从"hgsubversion"拉出; hg剥离较旧的重复项b/c"hg"不是hgsubversion克隆,并且不知道自动剥离旧的变更集.

我遇到的问题:

我遇到了从hgsubversion运行hg push到svn存储库的问题.我仍然收到错误消息,"abort:抱歉,找不到合并修订版的svn父版."

不可否认,我不是100%关于hgsubversion如何推动对svn的修改.老实说,我希望看到我的本地副本被推送到svn服务器的状态.

HALP?

svn mercurial hgsubversion

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

如何将PostgreSQL字符串迁移到文本类型?

我们正在使用看起来像这样的JPA注释类型(groovy代码):

@Entity
@EqualsAndHashCode
class TextNote extends Serializable {
    @Id Long id
    String text
}
Run Code Online (Sandbox Code Playgroud)

在第一次编写时,我是JPA的新手并首先编写SQL,然后使注释的类与SQL匹配.阅读PostgreSQL似乎以下是我想要的表:

CREATE TABLE textnote (
    id bigint NOT NULL,
    text text
);
Run Code Online (Sandbox Code Playgroud)

这很有效,我们的表格看起来像这样:

 id  |          text
-----+------------------------
 837 | really long text here
Run Code Online (Sandbox Code Playgroud)

我现在要做的是纠正JPA实体看起来像这样:

@Entity
@EqualsAndHashCode
class TextNote extends Serializable {
    @Id Long id
    @Lob String text
}
Run Code Online (Sandbox Code Playgroud)

通过添加@Lob注释,JPA提供程序(在我的情况下,hibernate)可以为我正确生成DDL,以防我们想要交换数据库.它还准确记录了我想要的文本字段.现在,当一个笔记被创建时,我看到这样的东西:

 id  |          text
-----+------------------------
 837 | 33427
Run Code Online (Sandbox Code Playgroud)

这对于新笔记来说很好,因为当我使用String getText()在代码中读取它时,它会返回非常长的文本.老实说我不知道​​PostgreSQL如何实现这种text类型,理论上我也不需要.但是,我们的生产数据库已经使用没有@Lob注释的旧代码存储了许多注释.在现有数据库上运行新代码会产生如下问题:

org.springframework.dao.DataIntegrityViolationException: Bad value for type long : not a number this time; …
Run Code Online (Sandbox Code Playgroud)

postgresql jpa

10
推荐指数
2
解决办法
9207
查看次数

分离资源服务器和授权服务器的正确方法是什么?

使用spring-security-oauth2保护我的资源免受可充当授权服务器的SSO端点的影响.当文档说明时我有点困惑:

OAuth 2.0中的提供者角色实际上是在授权服务和资源服务之间分配的,虽然这些角色有时位于同一个应用程序中,但是使用Spring Security OAuth,您可以选择将它们分成两个应用程序,还可以拥有多个共享的资源服务授权服务.

但我认为我没有找到这种情况的例子.在sparklr/tonr中,授权服务器和资源服务器位于同一个应用程序中.我从搜索中看到的唯一例子是spring-servlet.xml,它需要这个自定义实现ResourceServerTokenServices才能工作.

ResourceServerTokenServices如果可能的话,我想避免编写自定义实现.是否有另一种方法来支持资源服务器中的外部授权服务器?有点像:

<bean class="com.example.ExternalAuthorizationServerTokenServices" 
    p:remote-url="https://my-oauth-compatible-sso.com" 
    p:token-endpoint="/oauth/access_token" 
    p:authorize-endpoint="/oauth/authorize" />
Run Code Online (Sandbox Code Playgroud)

这可能吗?

*编辑:我将添加它作为一种解决方法(或者这可能是预期的解决方案)我正在使用jdbc令牌存储并依赖于这两个服务器碰巧有权访问该数据库的事实.

spring-security oauth-2.0

9
推荐指数
1
解决办法
2739
查看次数

在gradle项目中使用archivesBaseName无效

我正在尝试命名由gradle构建的工件.看看这个build.gradle:

archivesBaseName='this_is_ignored'
apply plugin: 'groovy'
archivesBaseName='this_is_also_ignored'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.+'
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过gradle.properties:

archivesBaseName=`this_is_ignored_too`
Run Code Online (Sandbox Code Playgroud)

在每种情况下都会./gradlew build根据项目所在的文件夹生成一个.jar文件(根据我的理解project.name,我只是希望用它来覆盖它archivesBaseName).

换句话说,我想:

~/gradle-helloworld > ./gradlew build
Run Code Online (Sandbox Code Playgroud)

生成this_is_ignored.jar,但它正在生成gradle-helloworld.jar.

有任何想法吗?

groovy gradle

9
推荐指数
1
解决办法
4372
查看次数

如何刷新:真的不同于手动刷新currentSession?

我有一个GORM对象,我正在进行集成测试.它有一个beforeUpdate钩子,可以保存以前密码哈希的历史记录.代码看起来像这样:

class Credentials {
    List passwordHistory = []
    String username
    String password

    static hasMany = [passwordHistory : String]

    def beforeUpdate() {
        // of course I'm not really storing plain-text passwords, but
        // this is just for illustration.
        if (isDirty('password')) { passwordHistory << password }
    }
}
Run Code Online (Sandbox Code Playgroud)

在集成测试中,我想知道为什么:

appUser.credentials.password = newPassword
appUser.save(flush: true)
sessionFactory.currentSession.flush()
AppUser.withNewSession {
    appUser = AppUser.get(appUser.id)
    appUser.credentials.empty // eagerly fetch the list while session is open
}
assert !appUser.credentials.passwordHistory.empty() // contains the previous password
Run Code Online (Sandbox Code Playgroud)

有效,但是

appUser.credentials.password …
Run Code Online (Sandbox Code Playgroud)

grails hibernate grails-orm

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

生产数据库中的Flyway集成

我们在生产中有一个数据库,它在"user"表中已有很多行.请考虑以下来自flyway网站的声明:

如果您有一个尚未由Flyway填充的现有数据库,那么这是要走的路:

  • 创建一个初始迁移脚本,该脚本将重新创建当前状态并为其提供较低的版本号.
  • 使用flyway:init创建元数据表并将此脚本设置为当前版本.

我想使用flyway管理我的模式和数据库中的各种常量,但我不希望V1__Base_version.sql包含我们当前生产用户的帐户信息,特别是考虑到它存储在SCM中.如果我正确地理解了这些指令,我需要能够用V1__Base_version.sql"重新创建[my]当前状态".

那么只使用模式创建初始迁移并且常量可以正常工作吗?或者我们工作站上的数据库是否需要与生产中的数据库100%匹配?

database migration flyway

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

是否可以在Bamboo的电子邮件通知中附加工件?

我们有一个生成可执行工件的计划.有没有办法告诉Bamboo在构建通知中将这些工件作为附件发送电子邮件?为了记录,我们按需使用atlassian.

bamboo

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