小编ale*_*x88的帖子

使用JMS Serializer包添加额外字段

我有一个实体,我通常使用JMS Serializer包进行序列化.我必须在序列化中添加一些字段,这些字段不驻留在实体本身中,而是通过一些数据库查询收集.

我的想法是创建一个自定义对象,用实体字段填充字段并添加自定义对象.但是对于每个变体(我使用很多序列化组)而言,这似乎有点棘手且昂贵.

有没有更好/标准的方法来做到这一点?用工厂?前/后序列化事件?

也许我可以监听序列化并检查实体类型和序列化组添加自定义字段?但是,不是对每个实体进行查询,而是收集相关实体的所有数据然后将其添加到它们中更好.任何帮助表示赞赏

serialization symfony jmsserializerbundle

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

Kotlin 无法找到或加载主类

我正在尝试使用 intelliJ 想法从 kotlin 应用程序构建一个 jar,一切都可以从 intellij 运行,它能够使用该main方法运行 kotlin 文件,但是在使用该方法构建 jar 后,gradle jar我得到:

java -cp build/libs/sensorPreprocessor-1.0-SNAPSHOT.jar co.myapp.sensorPreprocessor.MqttPollerKt
Error: Could not find or load main class co.myapp.sensorPreprocessor.MqttPollerKt
Run Code Online (Sandbox Code Playgroud)

我的build.gradle是这个:



plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.31'
    id "com.commercehub.gradle.plugin.avro" version '0.16.0'
}

apply plugin: 'kotlin'
apply plugin: 'application'
mainClassName = 'co.myapp.sensorPreprocessor.MqttPollerKt'

group 'co.myapp'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    jcenter()
    maven {
        url  "https://dl.bintray.com/cbeust/maven"
    }
    maven {
        url  "http://packages.confluent.io/maven/"
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    compile "org.jetbrains.kotlin:kotlin-reflect:1.3.31"
    testCompile group: …
Run Code Online (Sandbox Code Playgroud)

java gradle kotlin

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

Neo4j,获取一组节点之间的所有关系

我有一个基于属性获取节点的查询

MATCH (c { type: 'sometype' })
WITH c LIMIT 100
RETURN c
Run Code Online (Sandbox Code Playgroud)

我想要的只是获取结果集中节点之间的所有关系,在IRC上有人告诉我使用:

MATCH (c { type: 'sometype'])
WITH c LIMIT 100
OPTIONAL MATCH (c)-[r]-()
RETURN c, r
Run Code Online (Sandbox Code Playgroud)

但是这将包括从节点c到结果集之外的节点的关系,在我的情况下(几十万个关系)可能会产生非常大的无用结果集或性能问题)

有没有办法实现这一目标?

neo4j cypher

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

管道中的模式匹配

我要解析一个xml文档,从xml节点中提取一个整数.

目前我有:

try do
  Floki.find(node, "stat[type='jersey_num']")
    |> Floki.text
    |> Integer.parse
    |> elem(0)
rescue
  e -> nil
end
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但我不喜欢拯救一切,我想做的事情如下:

Floki.find(node, "stat[type='jersey_num']")
  |> Floki.text
  |> case Integer.parse do
    { int, _binary } -> int
    _                -> nil
  end
Run Code Online (Sandbox Code Playgroud)

但我进入unhandled operator ->第四行,有没有办法做到这一点?

elixir

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

Symfony2:如果缺少某些字段,请在登录后让用户完成注册

我正在使用HWIOAuthBundle让用户使用Oauth登录,我创建了一个自定义用户提供程序,以便在用户不存在的情况下创建用户:

public function loadUserByOAuthUserResponse(UserResponseInterface $response)
{
    $attr = $response->getResponse();
    switch($response->getResourceOwner()->getName()) {
        case 'google':
            if(!$user = $this->userRepository->findOneByGoogleId($attr['id'])) {
                if(($user = $this->userRepository->findOneByEmail($attr['email'])) && $attr['verified_email']) {
                    $user->setGoogleId($attr['id']);
                    if(!$user->getFirstname()) {
                        $user->setFirstname($attr['given_name']);
                    }
                    if(!$user->getLastname()) {
                        $user->setLastname($attr['family_name']);
                    }
                    $user->setGoogleName($attr['name']);
                }else{
                    $user = new User();
                    $user->setUsername($this->userRepository->createUsernameByEmail($attr['email']));
                    $user->setEmail($attr['email']);
                    $user->setFirstname($attr['given_name']);
                    $user->setLastname($attr['family_name']);
                    $user->setPassword('');
                    $user->setIsActive(true);
                    $user->setGoogleId($attr['id']);
                    $user->setGoogleName($attr['name']);
                    $user->addGroup($this->groupRepository->findOneByRole('ROLE_USER'));
                    $this->entityManager->persist($user);
                }
            }
            break;
        case 'facebook':
            if(!$user = $this->userRepository->findOneByFacebookId($attr['id'])) {
                if(($user = $this->userRepository->findOneByEmail($attr['email'])) && $attr['verified']) {
                    $user->setFacebookId($attr['id']);
                    if(!$user->getFirstname()) {
                        $user->setFirstname($attr['first_name']);
                    }
                    if(!$user->getLastname()) {
                        $user->setLastname($attr['last_name']);
                    }
                    $user->setFacebookUsername($attr['username']);
                }else{
                    $user = new User();
                    $user->setUsername($this->userRepository->createUsernameByEmail($attr['email']));
                    $user->setEmail($attr['email']); …
Run Code Online (Sandbox Code Playgroud)

oauth symfony symfony-2.1 hwioauthbundle

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

使用node + express解压缩POST主体

我有一个简单的节点应用程序,应该从客户端编写指标.客户端使用python的zlib模块压缩json格式的度量标准,我正在尝试添加一个中间件,以便在快速发生bodyParse之前解压缩请求帖子.

我的中间件只是默认情况下由express提供的中间件:

app.configure(function(){
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.cookieParser('your secret here'));
    app.use(express.session());
    app.use(app.router);
    app.use(require('less-middleware')({ src: __dirname + '/public' }));
    app.use(express.static(path.join(__dirname, 'public')));
});
Run Code Online (Sandbox Code Playgroud)

我试图添加一个简单的中间件来获取数据然后解压缩它:

app.use(function(req, res, next) {
    var data = '';
    req.addListener("data", function(chunk) {
        data += chunk;
    });

    req.addListener("end", function() {
        zlib.inflate(data, function(err, buffer) {
            if (!err) {
                req.body = buffer;
                next();
            } else {
                next(err);
            }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

问题是zlib.inflate我收到此错误:

Error: incorrect header check
Run Code Online (Sandbox Code Playgroud)

数据已经使用python的zlib模块进行了压缩:

zlib.compress(jsonString)
Run Code Online (Sandbox Code Playgroud)

但似乎没有解压缩,膨胀,枪口工作.

zlib node.js express

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

PHP:Datetime :: Diff结果比较

我试图比较两个日期之间的差异,但似乎结果是非常错误的,例如这段代码:

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days')."<br />";

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-15');
$interval2 = $datetime1->diff($datetime2);
echo $interval2->format('%R%a days')."<br />";

if($interval == $interval2){ echo "true"; }else{echo "false"; }
Run Code Online (Sandbox Code Playgroud)

返回true,但在上面你可以看到日期差异不一样,实际上echo打印+2和+4.如何比较2个日期差异?

编辑:datetime :: diff返回一个dateinterval对象,实际上它没有实现比较运算符,https: //bugs.php.net/bug.php?id = 49914我将使用dateinterval变量来检查差异,谢谢你的回答

php comparison diff datetime

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

Symfony:清除缓存而不中断服务

在生产中,我们使用 amazon opsworks 来编排我们的机器。我创建了一个厨师配方来部署新代码(因此实际上创建了一个新的发布文件夹,在那里执行操作,然后将符号链接切换到新文件夹)和另一个配方,用于在添加新数据库从属时重新配置我们的 symfony 应用程序更改 yml 文件等等。

问题是重新配置阶段发生在当前运行的代码上,并且由于我必须运行缓存:清除和缓存:预热,因此请求同时失败,因为它们找不到缓存文件/文件夹。

如何立即清除缓存?也许在另一个文件夹中加热它然后切换它们?

更好的解决方案?

capistrano chef-infra symfony

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

选择多个实体学说

我正在尝试执行以下查询:

$qb = $this->getEntityManager()->createQueryBuilder();
$referredUsers = $qb->select(['referred', 'referral', 'match'])
    ->from('ProjectContestBundle:UserParticipation', 'up')
    ->innerJoin('ProjectUserBundle:User', 'referred', 'WITH', 'up.user = referred')
    ->innerJoin('ProjectUserBundle:User', 'referral', 'WITH', 'up.referral = referral.referralCode')
    ->innerJoin('ProjectContestBundle:UserParticipation', 'upr', 'WITH', 'upr.user = referral')
    ->innerJoin('ProjectMatchBundle:Match', 'match', 'WITH', 'match.owner = referred')
    ->where('up.contest = :contest')->andWhere('upr.contest = :contest')
    ->setParameter('contest', $contest)
    ->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)

我期望结果是一个行数组,其中每一行都是 type [User, User, Match],但是 Doctrine 返回一个带有混合实体内容的普通数组。

然后我尝试通过以下方式使其更简单:

$qb = $this->getEntityManager()->createQueryBuilder();
$referredUsers = $qb->select(['referred.id', 'referral.id', 'match.id'])
    ->from('ProjectContestBundle:UserParticipation', 'up')
    ->innerJoin('ProjectUserBundle:User', 'referred', 'WITH', 'up.user = referred')
    ->innerJoin('ProjectUserBundle:User', 'referral', 'WITH', 'up.referral = referral.referralCode')
    ->innerJoin('ProjectContestBundle:UserParticipation', 'upr', 'WITH', 'upr.user = referral') …
Run Code Online (Sandbox Code Playgroud)

php symfony doctrine-orm

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