小编Fon*_*hau的帖子

IndexedDB模糊搜索

好的,首先,对不起我的英语.

我在一个web项目中工作,显示当我在输入框中键入内容时,但我想使用IndexedDB来提高Firefox中的查询速度.

使用WebSQL我有这句话:

db.transaction(function (tx) {
  var SQL = 'SELECT "column1", 
                    "column2" 
             FROM "table"
             WHERE "column1" LIKE ?
             ORDER BY "sortcolumn" DESC
             LIMIT 6';

  tx.executeSql(SQL, [searchTerm + '%'], function(tx, rs) {
    // Process code here
  });
});
Run Code Online (Sandbox Code Playgroud)

我想用IndexedDB做同样的事情,我有这个代码:

db.transaction(['table'], 'readonly')
  .objectStore('table')
  .index('sortcolumn')
  .openCursor(null, 'prev')
  .onsuccess = function (e) {
    e || (e = event);
    var cursor = e.target.result;
    if (cursor) {
        if (cursor.value.column1.substr(0, searchTerm.length) == searchTerm) {
            // Process code here
        } else {
            cursor.continue();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

但是速度太慢而且我的代码有问题......我想知道有没有更好的方法来做到这一点.

谢谢回复.

javascript indexeddb

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

如何在application.ini中设置数据库时区

我在Zend Framework中有一个应用程序,它必须运行与服务器不同的时区.是否可以选择在application.ini中设置数据库服务器(在本例中为MySQL)时区?

我目前的选择是:

resources.db.adapter = "Pdo_Mysql"
resources.db.params.charset = "utf8"
resources.db.params.driver_options.1002 = "SET NAMES utf8"
resources.db.params.host = "localhost"
resources.db.params.username = "usernam"
resources.db.params.password = "password"
resources.db.params.dbname = "databasename"
Run Code Online (Sandbox Code Playgroud)

我知道我可以做类似的事情SET timezone = 'Europe/London',但我真的需要在配置文件中做到这一点.

编辑

谷歌搜索我发现resources.db.params.driver_options.1002应该设置值PDO::MYSQL_ATTR_INIT_COMMAND.

因此resources.db.params.driver_options.1002 = "SET NAMES utf8, time_zone = 'Europe/London'" 应该做的伎俩.但到目前为止没有运气.

最终编辑

找到了.经过大量的搜索和调试后,我在Zend\Db\Adapter\Pdo\Mysql.php中找到了以下代码

if (!empty($this->_config['charset'])) {
    $initCommand = "SET NAMES '" . $this->_config['charset'] . "'";
    $this->_config['driver_options'][1002] = $initCommand; // 1002 = PDO::MYSQL_ATTR_INIT_COMMAND
}
Run Code Online (Sandbox Code Playgroud)

就像我resources.db.params.charset = "utf8"在我的application.ini中一样,它被覆盖了PDO::MYSQL_ATTR_INIT_COMMAND.

删除该行解决了它.

php mysql zend-framework

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

HTML表格很大时响应慢

我正在开发一个用于产品数据管理的webapp,其中产品数据显示在一个包含4列(索引号,SKU,产品描述和库存)的表中.

我面临的问题是,当表变得非常大(> 1000行)时,页面非常滞后,特别是当我将鼠标悬停在一行上时(我__CODE__在CSS中定义).

我尝试通过使用一些javascript来部分地显示数据并在用户向下滚动时加载更多来解决此问题:

/**
 * @namespace Start the project called 'stck'
 */
var stck = {};

/**
 * Variable to save stock loaded
 */
stck.stockInfo = [];

/**
 * Load the item informaction acording the SKU
 * @private
 * @param {string} SKU The SKU of the item
 */
stck.loadItemInformation = function(SKU) {
  var descriptionsTable = document.getElementById('descriptionsTable');
  for (var rowsLength = descriptionsTable.rows.length - 1; --rowsLength; ) {
    descriptionsTable.deleteRow(1);
  }
  var pricesTable = document.getElementById('pricesTable');
  for (var rowsLength = pricesTable.rows.length …
Run Code Online (Sandbox Code Playgroud)

javascript css html-table

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

如何从 PostgreSQL 存储过程返回结果集?

PostgreSQL从版本 11 开始支持存储过程(不是函数)。我创建了一个这样的存储过程:

CREATE OR REPLACE PROCEDURE get_user_list ()
  LANGUAGE SQL
  SECURITY DEFINER
  AS $$
  SELECT "id",
         "username",
         "display_name"
  FROM "user"
  ORDER BY "created_at" ASC;
$$;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行这个存储过程时,它不返回任何数据:

postgres=# CALL get_user_list();
CALL
postgres=# SELECT * FROM get_user_list();
ERROR:  get_user_list() is a procedure
LINE 1: SELECT * FROM get_user_list();
                      ^
HINT:  To call a procedure, use CALL.
Run Code Online (Sandbox Code Playgroud)

所以问题是,存储过程如何在 PostgreSQL 11+ 中返回其结果集?

postgresql postgresql-11

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

用户中止连接时回滚事务

首先,对不起我的英语,我在谷歌翻译的帮助下写了这篇文章.

我正在尝试使用PHP和Ajax创建像Google Wave这样的应用程序.我有一个textarea,当用户输入oninput内容时,检测到页面上的javascript 并将textarea的内容发送到服务器,服务器将内容存储到数据库中.

我正在做的是,每当我通过XHR发送内容时XHR.abort(),总是会中断先前的XHR请求.数据库中的数据很好,但有时它存储在以前的版本中.

我知道这是因为PHP没有停止执行,即使客户端已经中止,有时前一个请求花费了更多时间,最后一个请求并在最后一个请求之后完成,所以我读了"ignore_user_abort"函数的手册和"connection_aborted",但问题仍然存在.

我创建了这个脚本来模拟情况,我希望当我中止连接时(按"停止",关闭选项卡/窗口),数据库上没有任何新数据,但是5秒后,我仍然有新数据,所以当用户中止连接时,我需要帮助来回滚事务.

这是要模拟的脚本(定义了PDO_DSN,PDO_USER,PDO_PASS):

<?php
ignore_user_abort(true);

ob_start('ob_gzhandler');

$PDO = new PDO(PDO_DSN, PDO_USER, PDO_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

$PDO->beginTransaction();
$query = $PDO->query('INSERT INTO `table` (`content`) VALUES (' . $PDO->quote('test') . ')');
sleep(5);
echo ' ';
ob_flush();
flush();
if (connection_aborted()) {
  $PDO->rollBack();
  exit;
}
$PDO->commit();

ob_end_flush();
Run Code Online (Sandbox Code Playgroud)

php mysql ajax rollback abort

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

为什么Google Plus使用XHR加载CSS并使用<link>将其附加到<style>?

分析新的Google Plus的javascripts,我意识到Google Plus不是<link>用来引用CSS文件,而是使用XHR从文件中加载它,然后创建一个<style>然后加载CSS内容<style>.

Google使用此方法加载CSS的原因是什么?

证明:

D = function(a) {
  var b = document.createElement("style");
  b.type = "text/css";
  document.getElementsByTagName("head")[0].appendChild(b);
  b.styleSheet ? b.styleSheet.cssText = a : b.appendChild(document.createTextNode(a))
};

var ia = function(a, b) {
  if(4 == b.readyState) {
    var d = window;
    $("xcl");
    b.onreadystatechange = k;
    var c = b.status;
    if(400 > c) {
      try {
        var e = b.getResponseHeader("X-Framework-CSS-Blocks"), f = b.responseText;
        if(e) {
          for(var e = e.split(","), g = c = 0;g < e.length;g++) { …
Run Code Online (Sandbox Code Playgroud)

javascript css google-plus

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

如何触发iframe事件Jquery

我有一个IFRAME,我想从IFRAME的父级触发一个事件(在iframe中):

只是我想要做的一个粗略的例子:

<iframe id="i">
  <div id="test"></div>
  <script>
  $(document).ready(function() {  // Event is binded inside the iframe 

   $("#test").live({ click : function() { alert("hello"); } });
  });
  </script>
</iframe>

<script>
$(document).ready(function() { // Want to trigger it from outside the iframe
 $("#i").contents().find("#test").trigger("click");
});
</script>
Run Code Online (Sandbox Code Playgroud)

javascript iframe jquery

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

蓝牙低功耗与NFC

蓝牙低功耗是否也作为NFC进行身份验证(我的意思是,我们需要明确键入密码,还是执行自动身份验证)并传输数据.

BLE可以成为NFC的威胁.两者有什么区别?

在这里,我列出了一些我所知道的差异

BLE/NFC:

  • 它通信的速度(快/慢),
  • 协议ISO,设置时间(快/慢),
  • 功耗(取决于),
  • 安全(好/好)

蓝牙和BLE是两种不同的硬件,还是只有BT硬件表现为具有特定库和协议的BLE?

android nfc bluetooth-lowenergy

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