小编sme*_*eeb的帖子

如何在Windows Git Gui中执行'git log'?

我只是使用Git Gui从GitHub克隆一个本地仓库,然后我检查了一个分支.我现在想要看到相当于做一个git log -50,但似乎无法在菜单选项或主屏幕上找到任何内容:

在此输入图像描述

如何查看最后50个更改的提交历史记录/数据?

git git-gui git-log

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

DropWizard/Jersey API客户端

DropWizard在引擎盖下使用Jersey进行REST.我试图找出如何为我的DropWizard应用程序将公开的RESTful端点编写客户端.

为了这个例子,让我们说我的DropWizard应用程序有一个CarResource,它为CRUDding汽车公开了一些简单的RESTful端点:

@Path("/cars")
public class CarResource extends Resource {
    // CRUDs car instances to some database (DAO).
    public CardDao carDao = new CarDao();

    @POST
    public Car createCar(String make, String model, String rgbColor) {
        Car car = new Car(make, model, rgbColor);
        carDao.saveCar(car);

        return car;
    }

    @GET
    @Path("/make/{make}")
    public List<Car> getCarsByMake(String make) {
        List<Car> cars = carDao.getCarsByMake(make);
        return cars;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我会想象,一个结构化的API客户端会是这样的一个CarServiceClient:

// Packaged up in a JAR library. Can be used by …
Run Code Online (Sandbox Code Playgroud)

java rest jersey webservices-client dropwizard

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

写自定义Shiro境界

我正在构建自己的AuthorizingRealm子类,并且很难将它连接到我的子类SecurityManager.

我的境界的本质:

public class MyRealm extends AuthorizingRealm { 
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { 
        try { 
            // My custom logic here 

        } catch(Throwable t) { 
            System.out.println(t.getMessage()); 
        } 
        SimpleAuthenticationInfo authn = new SimpleAuthenticationInfo(new MyUser(), "somePassword");
        return authn;
    } 

    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 
        try { 
            // My custom logic here 
        } catch(Throwable t) { 
            System.out.println(t.getMessage()); 
        }
        return new SimpleAuthorizationInfo();
    } 
}
Run Code Online (Sandbox Code Playgroud)

然后在我的'shiro.ini'中:

# ======================= 
# Shiro INI configuration 
# ======================= 
[main] 
myRealm = com.me.myapp.security.MyRealm 
Run Code Online (Sandbox Code Playgroud)

然后在我的Driver类/ main方法中(我用于测试): …

security authentication authorization shiro

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

使用Gradle-Artifactory插件发布子项目

我有以下多项目Gradle构建:

myapp/
    myapp-client/
        build.gradle
        src/** (omitted for brevity)
    myapp-shared/
        build.gradle
        src/** (omitted for brevity)
    myapp-server
        build.gradle
        src/** (omitted for brevity)
    build.gradle
    settings.gradle
Run Code Online (Sandbox Code Playgroud)

其中myapp/build.gradle的样子:

subprojects {
    apply plugin: 'groovy'
    sourceCompatibility = '1.7'
    targetCompatibility = '1.7'
    [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

    repositories {
        mavenCentral()
        maven {
            // My local/private Artifactory
            url "http://localhost:8081/artifactory/myapp-snapshots"
        }
    }

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

目前,3个子项目Gradle文件中的每一个都非常简单:

dependencies {
    compile (
        'org.apache.commons:commons-lang3:3.3.2'
    )
}
Run Code Online (Sandbox Code Playgroud)

这是我想要实现的目标:

  • 当我gradle clean build -Pversion=0.1.5从父myapp目录运行时,我希望所有三个子项目都使用0.1.5的版本构建; 因此myapp-client-0.1.5.jar …

publish artifactory gradle maven

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

Gradle C插件示例

在我的本地文件系统上,我有以下C项目目录结构:

derpus/
    src/
        derpus/
            c/
                derpus.c
            headers/
    build.gradle
Run Code Online (Sandbox Code Playgroud)

在哪里derpus.c:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    puts("Derp!");
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

我想使用Gradle Native(C)插件来管理derpus构建的全部范围.具体来说,我希望Gradle:

  1. 生成Gradle包装器,以便我可以gradlew用于所有构建调用; 和
  2. 编译并构建derpusderpus.exevia gradlew; 和
  3. 我运行时生成Eclipse项目信息,gradlew eclipse然后我可以将项目导入Eclipse(我已经预安装了Eclipse CDT插件)

这是我的build.gradle:

apply plugin: 'c'
apply plugin: 'eclipse'

sources {
    c {
        source {
            srcDir "src/derpus/c"
            include "**/*.c"
        }
        exportedHeaders {
            srcDir "src/derpus/headers"
        }
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
} …
Run Code Online (Sandbox Code Playgroud)

c eclipse-cdt gradle

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

何时使用各种Akka邮箱类型

我试图了解何时何地使用不同的内置Akka邮箱,以及何时适合自己推出.但是,该页面上没有任何地方可以解释实际上是什么" 有界邮箱 ",或者它与无限邮箱的行为方式不同.此外,该页面将邮箱归类为" 阻止 "与" 非阻止 ".虽然我对它的含义有很强的了解(除非邮箱首先被清空,否则可以将邮件发送到邮箱)我不是百分之百确定我理解这一点.因此,当他们将邮箱归类为有界或阻塞时,我不知道文档是什么意思,我很难告诉我什么时候应该使用每种类型.

此外,如果重新启动该actor,似乎是清除演员邮箱的默认Akka行为.我想阻止这种情况,但不确定解决方案是使用这些内置邮箱类型之一(本页未提及消息持久性)或以某种方式使用持久性actor来实现此类无损.

messaging actor akka

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

Mac主机不喜欢Docker容器端口转发

我是第一次尝试使用Docker,我正试图让一个Spring Boot Web应用程序在Docker容器中运行.我正在构建应用程序(将其打包成一个独立的jar),然后将其添加到Docker镜像(这就是我想要的).

你可以在GitHub上的这个Bootup回购中找到我的SSCCE,它的README具有重现我所看到的所有指令.但基本上:

  • 我将Web应用程序构建到jar中
  • 运行docker build -t bootup .哪个成功
  • 运行docker run -it -p 9200:9200 -d --name bootup bootup然后容器似乎启动就好了,正如docker ps下面输出的证据
  • 但是,当我指向浏览器时http://localhost:9200,我什么都没得到

docker ps 输出:

CONTAINER ID        IMAGE               COMMAND                  CREATED
a8c4ee64a1bc        bootup              "/bin/sh -c 'java -ja"   2 days ago

STATUS              PORTS                    NAMES
Up 12 seconds       0.0.0.0:9200->9200/tcp   bootup
Run Code Online (Sandbox Code Playgroud)

Web应用程序配置为在端口9200上运行,而不是 Java默认值8080.您可以通过运行在docker之外运行应用程序(因此,只在本地主机上)来自行查看./gradlew clean build && java -jar build/libs/bootup.jar.

据我所知,我的主机上没有运行阻止端口的防火墙(我在Mac 10.11.5上验证System Preferences >> …

java macos portforwarding docker docker-networking

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

实现零停机Cassandra/DataStax迁移

我有一个Cassandra集群(3个节点,所有节点都部署到AWS)我试图迁移到DataStax集群.现在是时候停止自己管理这些节点了.

我有多个生产者和消费者全天都在读取/写入我的Cassandra集群的数据.我没有选择将app/service/proxy放在我的Cassandra集群前面,然后只是干净地翻转开关,以便所有读/写进出我的Cassandra,再到DataStax.因此,没有一种方法可以一次迁移一个表.我还试图为数据的所有生产者/消费者实现零(或接近零)停机时间.一个硬性要求:迁移不能有损.没有丢失的数据!

我认为这里最好的策略是一个四步过程:

  1. 不知何故,将DataStax配置为我的Cassandra集群的副本,有效地创建到DataStax的流复制
  2. 一旦DataStax完全"赶上"我的Cassandra中的其他节点,让生产者写入我当前的Cassandra集群,但将消费者/读者切换到DataStax(即,重新配置它们以连接到DataStax,然后重新启动它们).不是零停机时间,但我可以忍受简单的重启.(同样,零停机解决方案是首选.)
  3. 将生产者切换到DataStax.同样,只有接近零停机时间,因为这涉及将生产者重新配置为指向DataStax,然后需要重新启动以获取新配置.零停机解决方案将是首选.
  4. 一旦来自"旧"Cassandra集群的复制流量消耗为零,我们现在就没有"非"新信息,我的非DataStax节点需要写入DataStax.用火来杀死那些节点.

这个解决方案是我能提出的最微创,最接近零停机的解决方案,但假设了以下几点:

  • 也许不可能将DataStax视为可以复制到的额外节点(是/否?)
  • 也许Cassandra和/或DataStax有一些我不知道的神奇特性/功能,可以比这个解决方案更好地处理迁移; 或者可能有第三方(理想的开源)工具可以更好地处理这个问题
  • 我不知道如何监视从"旧"Cassandra节点到DataStax的复制"流量".在我可以安全地关闭+杀死旧节点之前需要知道如何做到这一点(再次,不能丢失数据).

我想我想知道这个策略是否:(1)可行/可行,(2)最佳; 如果Cassandra/DataStax生态系统中有任何功能/工具,我可以利用它来做得更好(更快,零停机时间).

data-migration downtime cassandra datastax

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

Xcode 9:块压缩的有效负载操作失败

MacBook Pro El Capitan(10.11.6)在这里.我正在尝试安装Xcode 9,以便我可以使用ARKit.在Apple Developer的网站上,我能找到的唯一版本是9 Xcode_9_beta_6.xip(如果我错了请纠正我!),所以我下载它:

在此输入图像描述

然后我提取并运行XIP文件:

在此输入图像描述

但是由于这个奇怪的错误谷歌并没有真正帮助我(根本),这个操作失败了:

在此输入图像描述

有什么想法在这里发生了什么?

macos xcode ios xcode9-beta

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

通过实例在AngularJS/Ionic中进行深度链接

我正在为iOS + Android构建一个AngularJS(1.x)和Ionic/Cordova移动应用程序.我想在我的登录页面添加/创建"深层链接",这样当我向新用户发送" 确认您的电子邮件 "电子邮件时,他们会点击链接确认他们的注册,然后如果他们在他们的移动设备(安装了我的应用程序),它们将直接进入应用程序登录页面.

我看到了这个插件,但我没有在AngularJS/Ionic/Cordova应用程序中创建深层链接的经验.有任何想法吗?

deep-linking angularjs cordova ionic-v1

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