小编Rob*_*bie的帖子

使用require.js,backbone和underscore本地化模板

这个问题是关于模板化和本地化的,通过backbone.js使用require.js和下划线模板.应用程序需要动态本地化.

在开始一条后来证明有问题的路径之前,有没有比我正在考虑的更好的解决方案 - 我关注速度和内存,反复合并和处理语言数组.假设是2-3万个语言字符串.

当前的方法(有效,但看起来处理器很重):

  1. 使用I18N捆绑方法,创建语言"包含",其基本上包含所有模板的已翻译元素
  2. 将此对象/数组元素与模型属性(来自主干)合并,并将合并的批次传递到下划线模板中

.

define(['backbone', 'models/model', 'text!template.html', 'i18n!my/nls/translatedbits'],
  function(Backbone, MyModel, TemplateText, TranslationObject) {
  var View = Backbone.View.extend({
    model: {},

    initialize : function(params) {
      this.model = new MyModel();
    },

    render : function(callBack) {
      // Get the model attributes
      var templateParams = _.clone(this.model.attributes);
      // Bolt on the tranlsated elements (established from require.js I18N plugin)
      templateParams.t = TranslationObject;
      // Pass the lot ot the template
      var template = _.template(TemplateText, this.model.attributes);
      $(this.el).html( template );
      return this;
    }

  }); …
Run Code Online (Sandbox Code Playgroud)

templates localization requirejs backbone.js underscore.js

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

Gulp-sass无法编译scss文件

我正在使用Gulp将我的sass编译成css.一个简单的任务编译目录中的style.scss文件,_/sass并将输出保存到项目的根目录中.style.scss仅用于导入目录中的其他文件_/sass.

当我从命令行($ gulp)运行默认任务时,我得到一个sass无法编译的错误.它包含在下面.我已从包含的文件中删除所有内容并再次运行该任务.我仍然收到相同的错误(我在网上看到的建议这可能会测试编码问题.我不完全理解编码以及这可能会破坏我的场景中的事情).

我也从命令行运行,$ sass _/sass/style.scss style.css它与包含文件中的内容完美配合.这告诉我gulp sass插件本身存在问题.

来自gulpfile.js的相关片段:

var gulp = require('gulp');
var sass = require('gulp-sass');

// Compile sass files
gulp.task('sass', function () {
    gulp.src('./_/sass/style.scss')
        .pipe(sass())
        .pipe(gulp.dest('./'));
});

// The default task (called when you run `gulp`)
gulp.task('default', function() {
  gulp.run('sass');

  // Watch files and run tasks if they change

  gulp.watch(['./_/sass/style.scss'], function() {
    gulp.run('sass');
  })
});
Run Code Online (Sandbox Code Playgroud)

style.scss的全部内容:

/* RESET */
@import '_/sass/reset';
/* TYPOGRAPHY */
@import '_/sass/typography'; …
Run Code Online (Sandbox Code Playgroud)

css sass gulp

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

释放PDO预处理语句(DEALLOCATE PREPARE)

PDO准备好的陈述应该在使用后释放吗?如果是这样,怎么样?具体来说,我问的是MySQL - 你怎么能,也应该DEALLOCATE PREPARE通过PDO 打电话.(编辑:澄清一下,这个问题并不是指仿效准备,而是真正的准备.)

此外 - 这会释放结果集(大时)吗?

说明:

我已经看到了代码

$stmnt = $db->prepare($sql);
$stmnt->execute($aParams);
$stmnt = null;
Run Code Online (Sandbox Code Playgroud)

这让我想知道这是做什么的,何时,如果f unset($stmnt);会有所不同?

手册表明

准备好查询后,数据库将分析,编译和优化其执行查询的计划.[...]通过使用预准备语句,应用程序避免重复分析/编译/优化循环.

这往往表明你应该取消分配语句,MySQL有能力.所以,

  1. 你可以打电话DEALLOCATE PREPARE,怎么打电话
  2. 你应该这样做吗?
  3. 并且任何人都可以确认设置语句为null(或取消设置语句)将与mysql_和mysqli_的"free_result"相同吗?
  4. 它会立即发生,还是等待垃圾收集器启动?

为了完整性,另一个提到"free_result"和"close"函数的SO问题mysqli_()表明释放语句实际上增加了时间(除非你有大量的内存使用并需要空间).但是"free_result"不同于释放SQL服务器而不是缓存准备好的语句.

php mysql pdo prepared-statement

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

如何使用持久连接在AWS中处理PDO MySQL故障转移

我们遇到了AWS Aurora故障转移问题,并正在寻找解决方法的指针。

情境

AWS Aurora设置了两个端点:

  • 作家:
    • 主机:stackName-dbcluster-ID.cluster-ID.us-west-2.rds.amazonaws.com
    • 解析为IP:10.1.0.X
  • 读者:
    • 主机:stackName-dbcluster-ID.cluster-ro-ID.us-west-2.rds.amazonaws.com
    • 解析为IP:10.1.0.Y

因此,我们的PDO MySQL连接字符串为stackName-dbcluster-ID.cluster-ID.us-west-2.rds.amazonaws.com(用于编写)

故障转移后

故障转移时,DNS条目将翻转为指向以下位置:

  • 读者:
    • 主机:stackName-dbcluster-ID.cluster-ro-ID.us-west-2.rds.amazonaws.com
    • 解析为IP:10.1.0.X
  • 作家:
    • 主机:stackName-dbcluster-ID.cluster-ID.us-west-2.rds.amazonaws.com
    • 解析为IP:10.1.0.Y

至关重要的是,PDO连接字符串(用于写入)仍然是相同的“ stackName-dbcluster-ID.cluster-ID.us-west-2.rds.amazonaws.com”,但指向不同的IP地址。

发生了什么

我们遇到了错误1290“ SQLSTATE [HY000]:一般错误:1290 MySQL服务器正在使用--read-only选项运行,因此它无法执行此语句”。

随着数据库引擎停止启动,我们的初始持久连接将“消失”并失效(我们将在重新连接/重试代码中立即进行处理)。

但是,上面的错误表示将向旧节点建立新连接,但随后不会随着DNS更改的传播而进一步失效。它们持续了10/15分钟(远远超出了DNS的TTL)。

我的问题

  1. 有谁知道是否基于连接字符串检索了PDO上的持久连接,还是使用IP或其他签名更可靠?证据表明它是主机名,但需要确认。
  2. 有谁知道在PDO中将持久连接标记为“无效”的方法,因此不再使用它吗?
  3. 或者,有什么我想念的吗?

旁注

我们已经有适当的代码来处理重试,并且告诉他们重试以获得新的非持久连接(有效)。在这一点上,我们可以“无效” PDO连接,因此脚本的下一次运行不会一遍又一遍地重复此循环。

故障转移可以随时发生,因此我们无法执行手动操作,例如重新启动php(因为我们这次必须这样做)。

没有持久的连接,性能会明显降低。

FastCGI,Centos 16,PHP 7.2,MySQLD 5.0.12-dev(在Centos上是正常的-请参阅https://superuser.com/questions/1433346/php-shows-outdated-mysqlnd-version

php mysql pdo amazon-web-services amazon-aurora

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

前端控制器将参数链接到应用逻辑的最佳方法?

我正在使用Front Controller设计模式构建应用程序,并且只有一个页面index.php,所有用户请求都通过该页面作为参数传递(与常规设计中的不同页面/控制器相对).

如何将这些参数连接到应用程序逻辑?

例如,我有两种不同的行为:

index.php?action=userLogin&username=admin&password=qwerty //process user login

index.php?action=displayUsersTable //show registered users
Run Code Online (Sandbox Code Playgroud)

目前我有一个array系统接受的所有操作(以及预期的参数),我将actionURL中的param与key此数组的比较进行比较,然后检查此操作所需的参数.

//1 = optional, 2=required
$systemActions = [
      "userLogin" => [
            "login" => 2,
            "password" => 2
                     ],
      "displayUsersTable" => []
                 ];
Run Code Online (Sandbox Code Playgroud)

显然,随着系统的发展,这将成为一个怪物阵列.

是否有更好的方法将发送到前端控制器的参数绑定到系统操作?

php front-controller

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

资源没有设定 - Magento

我试图从mysql数据库中获取记录 Mage::getModel('amshuhucustomer/groupdomain')->load($id);

它正在与observer一起工作,所以不需要config.xml中的前端

但它没有加载并说"资源未设置"

模块的/ etc/config.xml中

<global>
    <models>
        <amshuhucustomer>
            <class>Amshuhu_Customer_Model</class>
            <resourceModel>amshuhucustomer_mysql4</resourceModel>
        </amshuhucustomer>
        <amshuhucustomer_mysql4>
            <class>Amshuhu_Customer_Model_Mysql4</class>
            <entities>
                <groupdomain>
                    <table>customergroupdomain</table>
                </groupdomain>
            </entities>
        </amshuhucustomer_mysql4>
    </models>
    <resources>
        <amshuhucustomer_setup>
            <setup>
                <module>Amshuhu_Customer</module>
                <class>Amshuhu_Customer_Model_Mysql4_Setup</class>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </amshuhucustomer_setup>
        <amshuhucustomer_write>
            <connection>
                <use>core_write</use>
            </connection>
        </amshuhucustomer_write>
        <amshuhucustomer_read>
            <connection>
                <use>core_read</use>
            </connection>
        </amshuhucustomer_read>
    </resources>
......
</global>
Run Code Online (Sandbox Code Playgroud)

Groupdomain.php

class Amshuhu_Customer_Model_Mysql4_Groupdomain extends Mage_Core_Model_Mysql4_Abstract
{
    protected function _construct()
    {
        $this->_init('amshuhucustomer/groupdomain', 'id');
    }
}
Run Code Online (Sandbox Code Playgroud)

php mysql magento magento-1.x

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