小编Stu*_*uck的帖子

使用Symfony2和FOSUserBundle从移动设备创建/登录用户

首先,我想创建一个用户从我的Android应用程序向服务器发送一个后请求,该服务器使用Symfony2和FOSUserBundle.

最后,我想从移动应用程序登录用户,然后与服务器进行数据通信.

我知道如何在android-device上实现post-request.但我不知道如何配置FOSUserBundle和security.yml等以满足我的需求.虽然我可能需要一个_csrf_token或其他东西,我不知道从哪里得到它.

我已经将身份验证方法从form_login更改为http_basic,并认为这将是进行身份验证的最简单方法(使用https来保护密码).

但是现在......我需要做什么,以实现创建和登录没有表单的操作?我需要在移动设备上的后请求中添加什么内容?

感谢您的任何想法,意见和解决方案!

android bundle symfony

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

SQL删除一个表+一个连接表?

我有三个表:log,activity和jointable(many2many) log_activity(与log_idactivity_id+附加信息数据列).

我想删除loglog_activity.

我希望保留特定用户的所有日志,并且只保留其他用户的100行. 这意味着我想删除所有匹配a的行WHERE log.user_id != 1,但是最后的100(ORDER BY log.timestamp DESC).

我还想从连接log_activity表中删除与删除的日志相关的所有条目.该activity表应被感动.

我认为db.delete(TABLE_NAME, whereClause , whereArgs);在这种情况下没有帮助..

有人能够提出有效的解决方案吗?


UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE


受Jacob Eggers和plafond的回答以及进一步研究的启发,我现在正在尝试这样做,但它还没有奏效:

CREATE TABLE IF NOT EXISTS log ( 
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INTEGER NOT NULL,
    timestamp LONG NOT NULL
);

CREATE TABLE IF NOT EXISTS …
Run Code Online (Sandbox Code Playgroud)

java sql sqlite android

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

在maven 2编译期间设置java系统属性?

我有一个maven配置文件,并希望设置一个属性,该属性稍后可用于java中的每个System.getProperty(..):

<profile>
  <id>local-dev</id>
  <properties>
    <my.comp.my.prop>myValue</my.comp.my.prop>
  </properties>
</profile>
Run Code Online (Sandbox Code Playgroud)

我想System.getProperty("my.comp.my.prop")成为,"myValue"但它是null..我如何正确设置?:)

Thansk!

maven-2 maven

5
推荐指数
2
解决办法
7937
查看次数

如何重新打包HttpClient 4.3.1并删除对commons-logging的依赖?

我想重新打包apache的httpclient lib,用一个Android应用程序发送它(比如https://code.google.com/p/httpclientandroidlib/但是使用HttpClient 4.3.1)

因此,我手动下载了httpclient 4.3.1 jar(包括其所有依赖项)并使用jarjar重新打包它:

x@x$: cd libs && for f in *.jar; do java -jar ../jarjar-1.4.jar process ../rules.txt $f out/my-$f; done
Run Code Online (Sandbox Code Playgroud)

使用rules.txt:

 rule org.apache.http.** my.repackaged.org.apache.http.@1
Run Code Online (Sandbox Code Playgroud)

然后我用ant将输出放在一起:

<project name="MyProject" default="merge" basedir=".">
  <target name="merge">
        <zip destfile="my-org-apache-httpclient-4.3.1.jar">
            <zipgroupfileset dir="libs/out" includes="*.jar"/>
        </zip>
  </target>
</project>
Run Code Online (Sandbox Code Playgroud)

我可以使用该文件来开发和测试我的应用程序,但如果我在android上部署它,它会抛出一个异常,就像它找不到my.repackaged.org.apache.logging.log4j.something引用的那样my.package.org.apache.logging.whatEver.

所以,现在我想通过使用字节码操作来消除对commons-logging的任何依赖.这已经在以前完成:http://sixlegs.com/blog/java/dependency-killer.html

但我想知道我是怎么做到的?org.apache.commons.logging.Log只有依赖项:

x$x$: java -jar jarjar-1.4.jar find jar my-org-apache-httpclient-4.3.1.jar commons-logging-1.1.3.jar
my/http/impl/execchain/ServiceUnavailableRetryExec -> org/apache/commons/logging/Log
my/http/impl/execchain/RetryExec -> org/apache/commons/logging/Log
my/http/impl/execchain/RedirectExec -> org/apache/commons/logging/Log
my/http/impl/execchain/ProtocolExec -> org/apache/commons/logging/Log
...
Run Code Online (Sandbox Code Playgroud)

我认为要走的路是,删除这些依赖项并将其替换为自己的实现,就像他在此处所做的那样 …

android httpclient jarjar apache-commons-logging androidhttpclient

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

如何将前端给出的临时ID映射到生成的后端ID?

使用案例:用户可以使用JavaScript编写的单页Web应用程序来CRUD多项选择题.

  1. 创建一个新问题并添加一些选项都发生在浏览器/前端(FE)中.
  2. 在用户单击保存按钮之前,FE会为问题和所有选项创建并使用临时ID("_ 1","_ 2",...).
  3. 保存新创建的问题时,FE会将包含临时ID的JSON发送到后端
  4. 因此,FE期望201 CREATED包含一个map 临时id - > backend id来更新其id.
  5. 用户决定添加另一个选项(在FE侧再次使用临时ID)
  6. 用户单击"保存",FE会发送更新的问题,其中包含后端ID(对于问题和现有选项)和临时ID(对于新创建的选项)
  7. 要更新新创建的选项的ID,FE期望响应包含此id的映射.

我们应该如何在后端实现最后一部分(5-7添加选项)的对应部分?

我试试这个,但我坚持不能得到孩子的ID.

实体

@Entity
public class Question {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToMany(mappedBy = "config", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Option> options = new ArrayList<>();
    // ...
}


@Entity
public class Option {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "question_id", nullable = false)
    private Question question; …
Run Code Online (Sandbox Code Playgroud)

spring jpa spring-data spring-data-jpa spring-boot

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

错误:启动失败:确定启动命令:没有默认进程时需要命令

将 spring boot 升级到 2.4 后,我们无法运行通过此脚本创建的最终 docker 镜像:

script:
    - echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
    - apk add openjdk11
    - ./gradlew bootBuildImage --imageName=$DOCKER_IMAGE_INTERMEDIATE
    - docker build -f ./docker/Dockerfile --build-arg base_image=$DOCKER_IMAGE_INTERMEDIATE -t $DOCKER_IMAGE_TAGGED .
    - docker push $DOCKER_IMAGE_TAGGED
    - docker tag $DOCKER_IMAGE_TAGGED $DOCKER_IMAGE_LATEST
    - docker push $DOCKER_IMAGE_LATEST
Run Code Online (Sandbox Code Playgroud)

我们Dockerfile只是创建一个文件夹并将chown其发送给CNB用户:

# The base_image holds a reference to the image created by ./gradlew bootBuildImage
ARG base_image
FROM ${base_image}

ENV SOME_PATH /var/lib/some/files

USER root

RUN …
Run Code Online (Sandbox Code Playgroud)

spring buildpack spring-boot paketo

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

nginx 缓存的index.html 强制重新加载

在服务器迁移期间,新的 nginx 配置缺少缓存控制指令。因此,我们最终得到了一个缓存index.html,这对于我们的 SPA 来说非常糟糕,如果我们部署新代码,它就不再刷新。我们需要不缓存index.html。

这是我们几天前上线的(错误的)nginx 配置:

server {
  listen 80;

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root   /usr/share/nginx/html;
  }

}
Run Code Online (Sandbox Code Playgroud)

我们修复了我们的配置:

server {
  listen 80;

  root /usr/share/nginx/html;

  location / {
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
    add_header Cache-Control "no-store, no-cache, must-revalidate";
  }

  location ~* \.(js|jpg|jpeg|gif|png|svg|css)$ {
    add_header Cache-Control "max-age=31536000, public";
  }

  error_page   500 502 503 504  /50x.html;

  location = …
Run Code Online (Sandbox Code Playgroud)

caching nginx browser-cache

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

基于对挂起函数的调用构建流程结果

我正在学习协程,需要一些帮助来理解基本用例。

实现一个非阻塞方法:

  • 从(反应式)数据库中获取单个项目
  • 根据该项目的时间戳确定范围(即该项目所在的月份)
  • 获取该月的所有项目
  • 返回项目为Flow

方法

因为它必须返回一个Flow我不会使用的suspend(就像我返回单个项目时一样)。返回Flowsuspend(哪种返回 a Mono)最常见的是互斥的,对吗?

所以我想出了这个签名:

override fun getHistory(beforeUtcMillisExclusive: Long): Flow<Item>
Run Code Online (Sandbox Code Playgroud)

尝试实施:

val itemInNextPeriod = itemRepository.findOneByTimestampLessThan(beforeUtcMillisExclusive)
if (itemInNextPeriod == null) {
  return emptyFlow()
} else {
  val range = calcRange(itemInNextPeriod.timestamp)
  return itemRepository.findByTimestampGreaterThanEqualAndTimestampLessThan(range.start, range.end)
}
Run Code Online (Sandbox Code Playgroud)

这给了我第一行:

挂起函数“findOneByTimestampLessThan”只能从协程或另一个挂起函数调用

我理解这里不允许我们调用挂起函数的问题,并且当已经返回流时,IntelliJ“添加挂起”提出的解决方案没有意义。

所以,从这个问题我得到了使用的想法return flow {...}

return flow {
  val itemInNextPeriod = itemRepository.findOneByTimestampLessThan(beforeUtcMillisExclusive)
  if (itemInNextPeriod == null) {
    return@flow
  } else {
    val range = calcRange(itemInNextPeriod.timestamp)
    return@flow …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines

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

webflux:内部事件总线和异步、Loosley 耦合的事件侦听器

如何实现内部事件总线以在 webflux spring 堆栈中执行异步操作?

我想要一个服务发出一个事件:

@Service
class FeedServiceImpl(/*...dependencies...*/) : FeedService {
  override suspend fun deleteEntry(entryId: Long) {
    entryRepository.deleteById(entryId)
    publishEvent(
      FeedEntryDeletedEvent(
        timestamp = time.utcMillis(),
        entryId = entryId,
      )
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

发布者服务不知道的不同组件应该能够决定对该事件做出反应。

@Service
class CommentServiceImpl(/*...dependencies...*/): CommentService {
  override suspend fun onDeleteEntry(event: FeedEntryDeletedEvent) {
    // do stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

在 MVC 应用程序中,我将使用在处理程序 ( ) 上ApplicationEventPublisher发布事件 ( publishEvent) 和@EventListener+ 。@AsynconDeleteEntry

反应式堆栈中的等效项是什么?

我考虑的另一个选择是运行嵌入式消息服务,因为这应该意味着异步语义。但这对于一个简单的场景来说感觉是很大的开销。


我找到了这些SO线程

但他们不回答这种情况,因为他们假设发布者知道侦听器。但我需要松散耦合。

我还发现了这些春季问题 …

spring spring-boot spring-webflux

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

dirPagination不起作用(Angular JS分页)

我试图使用dirPagination但它不起作用.请参阅我的代码:http://plnkr.co/edit/18BxNhHRNyRoI17sBGQF?p = preview

我的代码:

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<link data-require="bootstrap-css@3.1.1" data-semver="3.1.1" rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" />
<script data-require="angular.js@1.3.0-beta.5" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<script data-require="jquery@*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script data-require="bootstrap@3.1.1" data-semver="3.1.1" src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

<script>
var myApp = angular.module('myApp', [])
    .controller('PsCtrl', ['$scope', function ($scope) {
        $scope.data = [
            {a:1, b:1},
            {a:2, b:2},
            {a:3, b:3}
        ];
    }]);
</script>


<script src="dirPagination.js"></script>
</head>
<body>

<div ng-controller="PsCtrl">
    ItemCount: {{data.length}}
    <ul>
        <li dir-paginate="item in data | itemsPerPage: 2">{{ item }}</li>
    </ul>
    <dir-pagination-controls></dir-pagination-controls>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我只把它作为输出:

ItemCount: …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive dirpagination

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