我有一个实体,我通常使用JMS Serializer包进行序列化.我必须在序列化中添加一些字段,这些字段不驻留在实体本身中,而是通过一些数据库查询收集.
我的想法是创建一个自定义对象,用实体字段填充字段并添加自定义对象.但是对于每个变体(我使用很多序列化组)而言,这似乎有点棘手且昂贵.
有没有更好/标准的方法来做到这一点?用工厂?前/后序列化事件?
也许我可以监听序列化并检查实体类型和序列化组添加自定义字段?但是,不是对每个实体进行查询,而是收集相关实体的所有数据然后将其添加到它们中更好.任何帮助表示赞赏
我正在尝试使用 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) 我有一个基于属性获取节点的查询
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到结果集之外的节点的关系,在我的情况下(几十万个关系)可能会产生非常大的无用结果集或性能问题)
有没有办法实现这一目标?
我要解析一个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 ->第四行,有没有办法做到这一点?
我正在使用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) 我有一个简单的节点应用程序,应该从客户端编写指标.客户端使用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)
但似乎没有解压缩,膨胀,枪口工作.
我试图比较两个日期之间的差异,但似乎结果是非常错误的,例如这段代码:
$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变量来检查差异,谢谢你的回答
在生产中,我们使用 amazon opsworks 来编排我们的机器。我创建了一个厨师配方来部署新代码(因此实际上创建了一个新的发布文件夹,在那里执行操作,然后将符号链接切换到新文件夹)和另一个配方,用于在添加新数据库从属时重新配置我们的 symfony 应用程序更改 yml 文件等等。
问题是重新配置阶段发生在当前运行的代码上,并且由于我必须运行缓存:清除和缓存:预热,因此请求同时失败,因为它们找不到缓存文件/文件夹。
如何立即清除缓存?也许在另一个文件夹中加热它然后切换它们?
更好的解决方案?
我正在尝试执行以下查询:
$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) symfony ×4
php ×2
capistrano ×1
chef-infra ×1
comparison ×1
cypher ×1
datetime ×1
diff ×1
doctrine-orm ×1
elixir ×1
express ×1
gradle ×1
java ×1
kotlin ×1
neo4j ×1
node.js ×1
oauth ×1
symfony-2.1 ×1
zlib ×1