小编Seb*_*zyk的帖子

在应用程序启动时运行代码Phoenix Framework(Elixir)

如果您的应用程序/ api在vanilla Phoenix应用程序中启动,您是否会将要运行的代码放入?假设我想确保创建一些mnesia表或配置我的记录器后端.另一件事是运行时配置.他们在文档中提到它,但我不清楚在哪里定义/更改运行时配置.

Endpoint.ex 看起来像是一个完成初始配置的地方,但通过查看文档,我找不到任何允许我在启动时只运行一次代码的回调.

elixir phoenix-framework

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

gulp typescript抛出错误TS2300:重复标识符'时刻'

我有一个使用Yeoman gulp typescript生成器生成的Angular应用程序.

在构建打字稿期间突然没有任何明显的原因(项目中的更改)开始抛出错误:

.tmp/typings/moment/moment-node.d.ts(6,16): error TS2300: Duplicate  identifier 'moment'.
[22:08:34] [TypeScript] TypeScript error: .tmp/typings/moment/moment-node.d.ts(6,16): error TS2300: Duplicate identifier 'moment'.
.tmp/typings/moment/moment.d.ts(8,13): error TS2300: Duplicate identifier 'moment'.
Run Code Online (Sandbox Code Playgroud)

请参阅以下文件的内容以供参考.我删除"TSD:安装"从gulp script任务,以防止从构建覆盖d.ts文件和tsd.d.ts文件.然后试图修改tsd.d.ts来解决问题(我试图删除时刻节点,那一刻,变更单,我也尝试过编辑moment.d.ts和矩node.d.ts,没有什么工作:/) .

我的tsd.json文件:

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": ".tmp/typings",
  "bundle": ".tmp/typings/tsd.d.ts"
}
Run Code Online (Sandbox Code Playgroud)

我的script.js(gulp taks):

'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var browserSync = require('browser-sync');

var $ = require('gulp-load-plugins')();

  var tsProject = $.typescript.createProject({
    target: 'es5',
    sortOutput: true
  });

  gulp.task('scripts', ['tsd:install'], function …
Run Code Online (Sandbox Code Playgroud)

momentjs yeoman typescript gulp tsd

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

ElasticSearch根据来自不同类型的查询的结果来提升文档分数

我正在基于ElasticSearch对电子商务产品目录进行原型设计.每个产品都被索引为一个文档(其中包含名称和描述等属性).

有一件事我无法解决,我想根据用户的购买历史来提高某些产品的得分.

我能想到的唯一选择是将购买历史存储为产品的子文档.然后使用custom_filters_score和过滤器来查找具有给定userId的子文档.在这种情况下,过滤器确定给定用户是否已购买给定产品,如果是,则会提高分数.

这种方法的问题在于,某些产品每个月可能会被购买数十万次,而且我不确定ElasticSearch在这种情况下的表现如何.

完美的解决方案是,如果我可以将购买历史记录放在单独的索引或相同的索引中,而是作为不同的文档类型(比如'userspurchasehistory').示例文档:

{userId: 1234, purchesedProducts: [34,112323,1223,32342,31234]}
Run Code Online (Sandbox Code Playgroud)

然后使用表达如下内容的查询得分提升:如果术语34(productId)存在于'userId'等于1234的userspurchasehistory(type)文档的'purchesedProducts'(字段名称)中,则按因子2提升查询.

这里有什么想法或想法吗?

更新:

我已对大型产品目录和大量销售数据进行了一些测试:产品(类型)文档数:500 000 SalesHistory(类型)文档数:14 000 000索引大小:2.5GB Elastic Serach:一个节点,所有默认设置

SalesHistory docuemtns是产品文档的子文档.销售分录:

~20% of products: 40 entries 
~20% of products: 30 entries 
~20% of products: 20 entries 
~20% of products: 10 entries 
~20% of products: 5 entries 

200 products with 10 000 sales entries (plus previously added 5-40 entries)
200 products with  5 000 sales entries (plus previously added 5-40 entries)
200 products with  2 500 sales entries (plus previously added …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

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

结合两个Oservable,确保一个,对第二个变化作出反应

我有两个hot/warm observable,一个提供用户角色定义列表和第二个用户列表(这些ReplaySubject(1)的工作方式类似于BehaviorSubject而没有起始值).

要显示用户,我需要确保我有角色定义列表.此外,如果角色列表更改或用户更改列表,我必须重新呈现列表.

我想用rxjs的功能并结合这两个observable来获得我描述的语义.我尝试了许多运算符,如switchMap,mergeMap,faltMap,forkJoin和zip但是我无法使其工作.

我能使它工作的唯一方法是使用两个这样的订阅:

 this.userRoleStore.observable.subscribe((roles) => {
      this.roles = roles;
      if (this.users == null) {
        this.userStore.observable.subscribe(users => {
          this.users = users;
        })
      }
 });
Run Code Online (Sandbox Code Playgroud)

这样我确保在尝试渲染用户之前就拥有了角色,并且只要用户和角色发生变化,它就会更新.

最有希望的是拉链操作器,但是当只有一个可观察到的变化时它不会触发.只有当第一个observable具有新值时才会触发SwitchMap运算符(因此我只获得有关用户或用户角色更改的更新).

rxjs rxjs5 angular

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

当 angular-cli 报告错误时,TeamCity 构建失败

我正在尝试配置团队城市以运行 angular 5 应用程序构建。我有这个脚本的 powershell 步骤(它在构建步骤定义中,而不是单独的文件中)。npm run buildng build

npm install
npm run build
Run Code Online (Sandbox Code Playgroud)

出于某种原因,即使ng build团队城市建设失败也不会失败。来自的状态代码npm run不会传播回 powershell。

请参阅以下屏幕: 在此处输入图片说明

teamcity npm angular-cli

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