小编pan*_*a82的帖子

node.js 0.12.x内存使用情况

试图将我的应用程序从节点0.10.x升级到节点0.12.x系列,我遇到了一个令人不快的惊喜:0.12使用比0.10多15%-20%的RAM.

从io.js问题页面上的几个 主题来看,似乎问题在于底层的v8引擎.

现在,软件更新很难向管理层出售.除此之外,需要支付更多的VPS硬件而且几乎没有明显的好处,这对我们来说是一个交易破坏者.

有没有办法禁用v8添加的任何新的铃声和口哨,占用额外的RAM?也许是吹捧的CPU配置文件?

我基本上在寻找一种v8交换机,它可以将内存使用量降低到与节点0.10附带的v8相当的水平.

memory performance node.js

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

PostgreSQL在存储函数中获取并释放LOCK

我有一个需要在多个大表上执行长时间更新的函数.在更新期间,一次需要将2-3个表锁定在EXCLUSIVE模式下.

由于并非所有表都需要同时锁定,理想情况下我只想锁定那些我当时正在更新的表,然后在我完成后删除锁.

例如.

-- Lock first pair of tables
LOCK TABLE tbl1_a IN EXCLUSIVE MODE;
LOCK TABLE tbl1_b IN EXCLUSIVE MODE;

-- Perform the update on tbl1_a and tbl1_b

-- Release the locks on tbl1_a and tbl1_b
--  HOW???

-- Proceed to the next pair of tables
LOCK TABLE tbl2_a IN EXCLUSIVE MODE;
LOCK TABLE tbl2_b IN EXCLUSIVE MODE;
Run Code Online (Sandbox Code Playgroud)

不幸的是,在plpgsql中没有等效的UNLOCK语句.删除LOCK的常规方法是COMMIT事务,但这在函数内部是不可能的.

这有什么解决方案吗?在函数完成之前显式释放锁的某种方法?或者运行某种子事务(也许通过在单独的函数中运行每个更新)?

UPDATE

我接受了没有解决方案.我将每个更新写入一个单独的函数并从数据库外部进行协调.感谢大家.

sql postgresql plpgsql

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

@import目录语句少

我现在较少的组织如下:

styles/pages/page1/index.less
styles/pages/page1/tab1.less
...
styles/widgets/widget1.less
styles/widgets/widget2.less
...
styles/tools/partials.less
...
styles/app.less
Run Code Online (Sandbox Code Playgroud)

我的app.less文件的全部内容都是@import带来所有其他部分的语句.

@import "tools/partials";
@import "widgets/widget1";
@import "widgets/widget2";
@import "pages/page1/index";
@import "pages/page1/tab1";
//...
Run Code Online (Sandbox Code Playgroud)

这些语句是手动维护的,这很糟糕.有没有更好的办法?

我梦想着这样的事情:

@import "tools/partials";
@import "widgets/*";
@import "pages/**/*";
Run Code Online (Sandbox Code Playgroud)

也许某种脚本在编辑器级别上处理这个问题(使用WebStorm)?或者为编译器本身提供某种插件?

现在我在我的应用程序中使用快速中间件提供较少的文件,但如果有解决方案,我可以轻松切换到grunt.

less express webstorm gruntjs

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

带有标签图案的Ember.js页面

我想要在issue/:id/edit路线上显示一个复杂的表格.我可以显示所需内容的唯一方法是使用多个标签.请参阅附带的草图以使情况更清晰:

在此输入图像描述

那么使用Ember框架实现这一目标的"规范"方法是什么?

我的第一次尝试是这样的:

模式1:部分

因此,所有数据都被加载并绑定到单个tickets/:id/edit路由和控制器.我使用partials来加载不同的标签.

这起初工作正常.然而随着应用程序的增长,单个控制器变得太小而无法处理所有事情.有几十个属性,没有明确的指示什么是常见的,什么属于单个页面.因此,我决定我需要一些方法将各个标签的逻辑分解为他们自己的"事物".

模式2:路线

每个选项卡都有自己的路由和控制器.所有数据都加载到基本/tickets/:id/edit路径中,所有子路径都从那里"借用"他们需要的东西.

setupController: function (controller, models) {
    var ticket = this.modelFor("ticketEdit").ticket;
    controller.set("model", ticket );
}
Run Code Online (Sandbox Code Playgroud)

其中一条子路线的示例

我已经实现了这一点,我已经在努力解决问题了.我需要阻止人们访问裸/edit路线.我需要阻止页面导航结束浏览器历史记录.我需要调整我的面包屑和其他小部件.

我可以自己解决所有这些问题(这不是问题的重点),但我不确定这是值得的.最重要的是,路线模式并不适合我需要的东西.所以在我把更多的时间扔到河边之前,我想我最好停下来想想是否有更好的模式.

想到两个候选人.

模式3:观点

所以我可以为每个选项卡创建一个单独的视图.他们都会分享TicketEditController,但我可以用一些自定义的东西打包它们,这样我就可以减轻公共控制器的负担.

缺点:它使水变得混乱.我需要显示的一些小部件是视图本身,可能希望从控制器实例化.当我开始在视图中的视图中添加视图时,不确定这将如何缩放.

不过,到目前为止,这似乎是最合适的.但我错过了什么吗?是否值得放弃路线模式?

模式4:组件

与视图类似.技术上可行,但需要对许多小部件进行重大重构,这些小部件假设他们可以直接访问共享控制器.但这种方法有很大的好处吗?不确定.

模式5:???

???


所以这就是你进来的地方.

  • 您如何看待这些方法?
  • 你用哪一个?
  • 对于这些/每一个,我都缺少哪些问题或好处?
  • 你能弄清楚'模式5',还是这些问题都是可行的方法?

ember.js

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

如何在discord.js中使用message.channel.send正确标记用户

如何在discord.js中使用message.channel.send正确标记用户?

这是我的代码:

function replaceAll(str, find, replacer) {
      return str.replace(new RegExp(find, 'g'), replacer);
    }
    Bot.on('message', (message) => {
      var mcontent = message.content;
      var mauth = message.author;
      var mtag = mauth.tag;
      if (mcontent.includes("@p")) {
        var newmsg = replaceAll(mcontent, "@p", "@" + mtag);
        message.delete();
        message.channel.send(newmsg);
    });
Run Code Online (Sandbox Code Playgroud)

并且,它显示以下内容:(顺便说一句,我是hieyou1#6009)[带有message.delete(); 禁用]

标签不存在

执行时没有控制台日志。

javascript node.js discord.js

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

在 Angular 2+ 中,我可以检测指令(如 routerLink)何时应用于我的自定义组件吗?

我有一个自定义按钮组件,如下所示(简化):

@Component({
    selector: 'my-button',
    template: `
        <button (click)="handleClick($event)">
            <ng-content></ng-content>
        </button>
    `
})
export class MyButtonComponent {
    @Output() public onClick: EventEmitter<Event> = new EventEmitter();

    handleClick(e) {
        this.onClick.emit(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

该按钮的正常用例是用户附加一个onClick处理程序。但是,有些用户希望使用按钮作为链接,如下所示:

<my-button [routerLink]="'/dashboard'">Go to dashboard</my-button>
Run Code Online (Sandbox Code Playgroud)

在这种情况下我想做的是将渲染my-button<a>元素而不是文字<button>。但为了做到这一点,我需要检测用户已将指令附加[routerLink]到它。

有什么办法可以做到这一点吗?

我知道我可以添加一个布尔@Input()属性来将渲染切换到<a>模式,但这感觉很笨拙。

javascript angular

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