小编San*_*hal的帖子

如何有效地计算筛选选项的总计

我正在开发一个网上商店类型的应用程序.我经常在其他网站上看到的一个功能是过滤选项的细分,之后总共过滤选项会有多少结果.您经常在计算机网站(例如Newegg)或二手车网站上看到此信息.例:

CPU:
  * AMD (315)
  * Intel (455)

Video card:
  * ATI (378)
  * Nvidia (402)
Run Code Online (Sandbox Code Playgroud)

我怎样才能有效地计算这些总数?我正在研究的网站将有许多不同的产品(10.000+),有许多不同的选择.更糟糕的是,产品在不断变化.

试图预先计算所有不同的过滤组合总数似乎是不可行的.如果我有5个不同的过滤器,每个过滤器有4个选项,那么选项的可能性就是多少20 * 16 * 12 * 8 * 4 = 122880.计算它需要很长时间.

另一种选择是按需查询并缓存结果(例如在Redis中).但是,如果不断添加和删除产品,我怎么能有效地管理缓存呢?缓存通常是陈旧的.我担心我必须以微观方式管理缓存失效,从而导致一个非常复杂和脆弱的实现.另一种方法是使广泛的缓存部分无效.但是,在无效之后,我的数据库会被需要重新计算这些总数的活跃用户的查询匆匆忙忙.

有一个漂亮而优雅的方式来处理这个问题吗?

caching filter

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

如何在PHP中对64位大型文件进行解码

我的PHP Web应用程序有一个API,可以接收base64编码的合理大文件(最大32 MB).目标是在我的文件系统上的某处写入这些文件.当然是解码的.这样做资源最少的方法是什么?

编辑:通过API接收文件意味着我的PHP应用程序中有32MB字符串,而不是磁盘上某处的32 MB源文件.我需要将该字符串解码为文件系统.

使用PHP自己的base64_decode()并没有削减它,因为它使用了大量的内存,所以我一直在运行PHP的内存限制(我知道,我可以提高这个限制,但我不觉得允许PHP使用256MB左右每个过程).

还有其他选择吗?我可以手动完成吗?或者将文件写入磁盘编码并调用一些外部命令?任何想法?

php memory base64

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

在Symfony2和SonataAdmin中翻译数字状态代码

在Symfony2中处理字符串表示和数字代码翻译的最佳方法是什么?

假设我有这样一个实体:

<?php

class Message
{
    const STATUS_NEW       = 0;
    const STATUS_SENT      = 1;
    const STATUS_DELIVERED = 2;

    /**
     * @var int
     */
    private $status = self::STATUS_NEW;

    public function getStatus()
    {
        return $this->status;
    }
}
Run Code Online (Sandbox Code Playgroud)

在前端和SonataAdmin后端,我不想显示数字代码而是字符串.例如'新','已发送'和'已发送'.但我也希望能够翻译这些字符串(例如荷兰语'Nieuw','Verzonden'和'Afgeleverd').

因此,有两个转换步骤:首先从数字代码到字符串或翻译键,然后再到本地化字符串.

我最好在哪里以及如何进行这些转换?在我自己的控制器/视图的前端和基于SonataAdmin的支持?

php translation symfony sonata-admin

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

开发数据库凭证最佳做法?

处理内部开发数据库的凭据的最佳实践是什么?对于应用程序还是开发人员?

当前,我们为每个开发数据库创建一个单独的用户/密码,并在代码存储库中提交这些凭据。但是,我们希望摆脱将凭证存储在存储库中的趋势。问题在于我们的开发人员和应用程序都需要访问数据库。

  • 给予开发人员自己的个人帐户以使他们能够访问所有开​​发数据库是一种好习惯吗?甚至所有开发和生产数据库?
  • 开发人员应该在开发环境中使用自己的个人帐户吗?还是应该使用其他的?
  • 如果他们应该使用不同的帐户,那么每个开发数据库都应该有一套单独的凭据吗?还是我们应该创建一个可以访问开发人员可以在其所有应用程序中使用的所有dev数据库的帐户?
  • 如果我们应该为每个开发数据库使用单独的帐户,那么开发人员在为自己建立新的开发环境时应如何获得这些凭据?我们发现,尝试手动跟踪这些内容(例如Wiki)非常容易出错,并且很快就会过时。

如果重要的话,我们使用MySQL(准确地说是Percona)。

mysql database development-environment credentials

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

自1800年12月28日以来,几天的日历似乎有多少?

我的任务是从一些奇怪的旧系统中读取一些数据.
系统包含许多日期,但它们都是奇怪的格式.它们是从大约55,000到大约的整数80,000.

我知道两个确定日期:

58,112 equals February 5, 1960  (originally written as Feb 2,1960 [*])
61,439 equals March 16, 1969

[*] This typo explains some of the comments initially challenging the
    leap-year awareness of the calendar.
Run Code Online (Sandbox Code Playgroud)

在我看来,这些整数是自1800年12月28日以来经过的天数.但我认为这是开始日历的一个非常奇怪的日期.闰年可能正在发生什么事情,什么 - 不会在以后引起问题.

有人认出这个日历吗?任何人都可以告诉我将这些整数转换为人类可读日期的正确方法是什么?

datetime calendar leap-year

4
推荐指数
2
解决办法
1463
查看次数

如何跟踪部署?

跟踪代码库部署的好方法是什么?我希望能够看到何时在特定服务器上部署了一个版本,谁发布了它,它解决了哪些问题,等等.

目前,我们有一个部署工具,可以在我们的问题跟踪器中生成包含所有这些信息的问题.这样可以轻松地将发布问题与相关问题相关联,但它也会污染我们的问题数据库.

我们还希望从内部开始持续集成,这意味着会有更多的发布问题.

是否有更好的跟踪版本的方法?

我们的技术堆栈是PHP(Symfony2),使用Phing作为构建系统,定制的基于Web的部署工具,用于错误跟踪的Mantis和用于存储库托管的Bitbucket.

deployment bug-tracking release release-management

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

从Capistrano 3中移除钩子

我想使用Capistrano 3部署我的PHP应用程序.我的应用程序使用Symfony 2作为框架,使用Phing作为构建系统.我已经安装了capistrano-symfony,所以我可以使用Capistrano内部的Symfony命令.

问题是它还修改了部署流程.具体来说,它在这里添加两个任务:

https://github.com/capistrano/symfony/blob/master/lib/capistrano/tasks/symfony.rake

  after "deploy:updated", "deploy:clear_controllers"
  after "deploy:updated", "deploy:assets:install"
Run Code Online (Sandbox Code Playgroud)

有没有办法再次从流程中删除这些钩子?这些操作已经由我的Phing构建脚本(由Capistrano调用)执行.没有必要再次运行它们.

deployment capistrano symfony capistrano3

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

如何在Sonata Admin中显示/隐藏某些行的操作

我正在使用Sonata Admin.是否可以在同一列表视图中显示仅针对某些行而不是其他行显示的操作?

例如,假设我有一个具有"活动"字段的用户实体.我想仅针对非活动用户显示"删除"操作,而不是针对活动用户.我怎样才能做到这一点?

php symfony sonata-admin

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

Arangodb自定义过滤器/访客为我的树图

我有一个包含两个边缘定义的图形,如下所示:

isDepartment: [organisation] -> [organisation]
hasAccess: [user] -> [organisation]
Run Code Online (Sandbox Code Playgroud)

组织嵌套在树中(无循环).有多个顶级组织没有任何传入isDepartment边缘.

用户被授予访问一个或多个组织的权限.这些可以是位于树下的某个顶层组织或组织.如果用户有权访问组织,则可以访问所有子组织.

我正在尝试构建一个自定义访问者或过滤器,为用户提供所有可访问的组织,包括它的根路径,以及属性(如果它们可访问或不可访问).

例如,采用以下组织结构:

  • 根A
    • 部门A.1
    • 部门A.2
  • 根B
    • 部门B.1
    • 部门B.2
    • Subdept.B.2.1
  • 根C
    • 部门C.1
    • 部门C.2

现在请带有访问权限的用户Root ADept. B.2.我想生成以下结果树:

  • 根A,可访问:true
    • 部门A.1,可访问:真实
    • 部门A.2,无障碍:真实
  • 根B,可访问:false
    • 部门B.2,可访问:真实
    • Subdept.B.2.1,access:true

请注意Root C并且Dept. B1不在结果中,因为用户无法访问它们,也无法访问任何子级.

另请注意,Root B包含但标记为not accessible.这是因为只允许用户访问Root B根本身但不是根本身的子.

如何编写完成此功能的自定义函数/访客/过滤器?

graph tree-traversal arangodb

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

Linux中的动态环境变量?

是否有可能在Linux中拥有动态环境变量?

我有一个网站服务器,网站遵循这种布局:

site/
    qa/
    production/
Run Code Online (Sandbox Code Playgroud)

我想有一个环境变量(例如APPLICATION_ENV),当我在qa目录时设置为"qa",当我在生产目录时设置为"production".原因是各个站点可以使用许多不同的进程,如果它们是QA或生产环境,则需要知道这些进程.有些站点在Apache下使用PHP,有些站点使用Node.js,有些站点使用命令行工具,cron作业等等.我想有一个关于它是QA还是生产环境的授权来源.

linux bash environment environment-variables

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

如何减少mysql数据库中现有日期列中的一天?

我有桌子tbl_dtcount。在该表中有一列用于日期。
现在我需要为该日期字段中的每一行减少一天。日期从2012-05-19到开始2012-07-03。执行此操作的 MySQL 更新语句是什么?

mysql date sql-update

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