小编dav*_*dav的帖子

在焦点上触发谷歌地图自动完成

如何重现问题:

在此页面上 https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform

例如20 Water Street, New York City, NY, United States,选择一些地址(正如预期的那样,字段填充了信息).现在,例如在地址更改20到10中,而不是从建议列表中选择地址,只需单击页面上的某个位置即可.建议的列表消失,新地址10 Water Street, New York City, NY, United States保留在输入字段中,但字段信息未更新.

我用它来获得经度和纬度.因此,如果用户不是点击地址,而是点击外部,看起来就像是他改变了地址,但事实上我仍然会拥有之前地址的Lat和Lng.

这是init函数

var autocomplete;
function initialize() {
    autocomplete = new google.maps.places.Autocomplete(
    /** @type {HTMLInputElement} */
    (document.getElementById('addressAutocomplete')), {
        types : [ 'geocode' ]
    });

    google.maps.event.addListener(autocomplete, 'place_changed', function() {
        var place = autocomplete.getPlace();
        console.log(place);
    });
}
Run Code Online (Sandbox Code Playgroud)

我认为smth就像这样可以工作,但事实并非如此,这条线console.log(place);输出未定义

$(document).ready(function() {
    $(document).on('focusout', '#addressAutocomplete', function() {
        google.maps.event.trigger(autocomplete, 'place_changed', {});
    });
});
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript jquery google-maps google-maps-api-3

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

密码最大长度与bcrypt,河豚

我的问题来自于 如何使用河豚散列长密码(> 72个字符)

我使用bcrypt(河豚)来哈希密码.所以,正如我从这个问题中发现的那样 https://security.stackexchange.com/questions/39849/does-bcrypt-have-a-maximum-password-length

它的字符数限制为72.

所以,我开始考虑限制密码的最大长度,但是在这些问题及其答案之后

https://security.stackexchange.com/questions/33470/what-technical-reasons-are-there-to-have-low-maximum-password-lengths

为什么要限制密码的长度?

我应该在密码上加上最大长度吗?

所有人都说是反对的.提到的东西,比如

  • 节省存储空间
  • 旧的Unix系统经验
  • 与不支持长密码的旧系统交互
  • 公约(即"我们总是这样做")
  • 简单的天真或无知.
  • 以明文存储
  • 此外,a maximum length specified on a password field should be read as a SECURITY WARNING通过这个答案 - /sf/answers/6980711/
  • 等等

所以,我认为我不符合其中一个案例.当然,我同意愚蠢的限制,例如最大长度10,甚至更糟,8或6,但不是30,40或更长的密码(盐渍)被认为是安全的?从这篇文章(虽然有点旧),但它说

it can make only 71,000 guesses against Bcrypt per second
Run Code Online (Sandbox Code Playgroud)

http://arstechnica.com/security/2012/12/25-gpu-cluster-cracks-every-standard-windows-password-in-6-hours/

这适用于8个字符的密码.因此,我想象自定义彩虹表会蛮力一个30个或更多字符密码(考虑到每个密码都有自己的盐),因为彩虹表大小呈指数增长

引用同一篇文章的评论

每次在密码中添加一个字符时,都会以指数方式增加通过暴力破解所需的难度.例如,8-char密码的密钥空间为95 ^ 8组合,而20-char密码的密钥空间为95 ^ 20组合.

因此,对于一个20长度密码与bcrypt根据那将是必要95 ^ 20 /(71 000*3600*24*365)~10年28度(如果我做对了)

qsn1:现在,在这种情况下,使用blowfish有一个意思是不要将密码最大长度限制为72,因为在任何情况下都会被截断,因此这里没有额外的安全性增益.

qsn2:即使存在salt(每个用户都是唯一的并保存在db中),毕竟我想在密码中添加pepper(在应用程序中硬编码而不是保存在db中).我知道是否会增加一些额外的安全性,但我认为以防万一db(或db backup)只是泄露,胡椒将是有用的. https://security.stackexchange.com/a/3289/38200 所以,为了能够添加20个字符胡椒,我需要将密码最大长度设置为50左右.我想这样:让我们说用户是使用70个字符,在大多数情况下(如果不是全部),它将是一些短语或类似的,而不是生成强大的字符,因此将用户限制为50最大长度并添加另一个20-22更安全字符胡椒肯定更安全/随机.另外,让我们说黑客正在使用"常用短语"的彩虹表,我认为有更高的机会,这72 character common phrase将被黑客攻击,而不是50 character common phrase + 22 character …

encryption passwords password-policy password-storage password-encryption

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

PSR2-键和值之间的多行数组缩进

根据PSR2,在键和多行数组的值之间具有空格的正确方法是什么。

$result = [
    'key1'           => 'value1',
    'another_key'    => 'value2',
    'some_other_key' => 'value3'
];
Run Code Online (Sandbox Code Playgroud)

$result = [
    'key1' => 'value1',
    'another_key' => 'value2',
    'some_other_key' => 'value3'
];
Run Code Online (Sandbox Code Playgroud)

看起来第一个更具可读性,但是我们还有多余的空间。

php psr-2

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

左连接至少一行,右边是mysql的条件

我有2个表,餐馆和订单,订单表有restaurant_id,status而且date领域,每一天都是在订单表中的单独一行.

我需要过滤餐馆并仅显示在某个日期范围内至少有一个预订的餐厅,但我必须在日历上显示它,它应该看起来像一个有信息的餐馆列表.

像这样的Smth

在此输入图像描述

因此,这意味着如果at least one day with reserved status在该日期范围内满足条件,则也应该获取该餐馆的该日期范围的所有订单.

我无法进行通常的内部联接,

SELECT r.`id`, r.`name`, o.`date`, o.`status`
FROM restaurants r
INNER JOIN orders o ON r.id = o.restaurant_id AND o.date BETWEEN '2013-08-10' AND '2013-08-31'
AND status = 'reserved' 
Run Code Online (Sandbox Code Playgroud)

因为,在这种情况下,例如,对于restaurant2,我将不会获得8月31日的订单信息,因为尽管它的日期范围为10 - 31,但其状态为"已关闭".所以,我想这样做一个左连接

SELECT r.`id`, r.`name`, o.`date`, o.`status`,  o.`id` order_id
FROM restaurants r
LEFT JOIN orders o ON r.id = o.restaurant_id AND
o.date BETWEEN '2013-08-10' AND '2013-08-31' 
WHERE o.`id` IS NOT NULL 
Run Code Online (Sandbox Code Playgroud)

但我还需要添加一个条件,以保证至少有一个排,订单的状态="保留",我试图添加其中类似的条款COUNT(o.status = …

mysql sql join

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

按日期搜索mysql性能

我有大约100万条记录一张大桌子,有田start_dateend_date,与DATE类型.我需要检查一些日期范围的重叠数,比如在2013-08-20AND 之间2013-08-30,所以我使用.

SELECT COUNT(*) FROM myTable WHERE end_date >= '2013-08-20' 
AND start_date <= '2013-08-30'
Run Code Online (Sandbox Code Playgroud)

日期列已编制索引.重要的一点是,我搜索重叠的日期范围总是在将来,而表中记录的主要部分是过去的(比如大约97-99百万).所以,如果我添加一个列is_future - TINYINT,这个查询会更快,所以,只检查这样的条件

SELECT COUNT(*) FROM myTable WHERE is_future = 1 
AND end_date >= '2013-08-20' AND start_date <= '2013-08-30'
Run Code Online (Sandbox Code Playgroud)

它将排除剩余的9700万左右的记录,并将仅检查剩余的1-3百万条记录的日期条件?

我使用MySQL

谢谢

编辑

mysql引擎是innodb,但如果说是MyISAM则会很重要

这是创建表

CREATE TABLE `orders` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title`
  `start_date` date DEFAULT NULL,
  `end_date` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Run Code Online (Sandbox Code Playgroud)

在@Robert Co回答后 …

mysql

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

蓝色imp文件上传客户端大小图像调整大小和裁剪

我正在使用这个jquery图像上传插件 https://github.com/blueimp/jQuery-File-Upload

我需要的是调整大小/裁剪客户端大小的图像,因此它将具有精确的高度和宽度,然后上传到服务器.

这是上传脚本的一部分,它工作正常,唯一的问题是,它只是调整图像大小而不裁剪,我最终得到上传的图像,例如宽度150像素和高度说133像素(虽然高度并且初始图片的宽度超过1000像素,我想要精确的高度和宽度 - 150px).从选项列表我认为imageCrop应该做的伎俩,https://github.com/blueimp/jQuery-File-Upload/wiki/Options#imagecrop,但事实并非如此.我做错了什么,或者插件不支持我需要的功能?如果是这样,有什么办法可以使用这个插件使用一些外部库/函数来实现我需要的东西吗?

谢谢

编辑:

我也试过这个选项

 canvas: true,
 cover: true,
 crop: true,
 thumbnail: true,
 aspectRatio: '1/1'
Run Code Online (Sandbox Code Playgroud)

但无济于事

$('#fileupload').fileupload({
    url: 'test.php'
     dataType: 'json',
     imageCrop: true,
     process: [
         {
             action: 'load',
             fileTypes: /^image\/(gif|jpeg|png)$/,
             maxFileSize: 20000000 // 20MB
         },
         {
             action: 'resize',
             maxWidth: 150,
             maxHeight: 150,
             minWidth: 150,
             minHeight: 150,
             imageCrop: true
         },
         {
             action: 'save'
         },
         {action: 'duplicateImage'},
         {
             action: 'resize',
             maxWidth: 100,
             maxHeight: 100,
             minWidth: 100,
             minHeight: 100,
             imageCrop: true
         },
         {
             action: 'save' …
Run Code Online (Sandbox Code Playgroud)

jquery blueimp jquery-file-upload

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

在正则表达式结束时Php前瞻性断言

我想写一个带有断言的正则表达式从字符串中提取数字55 unknownstring/55.1,这是我的正则表达式

    $str = 'unknownstring/55.1';
    preg_match('/(?<=\/)\d+(?=\.1)$/', $str, $match);
Run Code Online (Sandbox Code Playgroud)

所以,基本上我想说的是给我斜线后面的数字,然后是一个点和数字1,之后就没有字符了.但它与正则表达式不匹配.我只是试图$从最后删除标志,它匹配.但是这个条件是必不可少的,因为我需要将它作为字符串的结尾,因为该unknownstring部分可以包含类似的文本,例如unknow/545.1nstring/55.1.也许我可以使用preg_match_all,并采取最后一场比赛,但我想了解为什么第一个正则表达式不起作用,我的错误在哪里.

谢谢

php regex regex-lookarounds

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

带有表锁定的Mysql事务

我需要使用表锁定(写入)并同时更新一些表,因此我同时需要事务,因为锁定不是事务安全的。

从 mysql 文档中,我阅读了以下内容 https://dev.mysql.com/doc/refman/5.6/en/lock-tables-and-transactions.html

对事务表(例如 InnoDB 表)使用 LOCK TABLES 和 UNLOCK TABLES 的正确方法是使用 SET autocommit = 0(不是 START TRANSACTION)开始事务,然后是 LOCK TABLES,并且在提交事务之前不调用 UNLOCK TABLES明确地。例如,如果您需要写入表 t1 并从表 t2 读取,您可以这样做:

SET autocommit=0;
LOCK TABLES t1 WRITE, t2 READ, ...;
... do something with tables t1 and t2 here ...
COMMIT;
UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)

当你调用 LOCK TABLES 时,InnoDB 在内部获取自己的表锁,而 MySQL 获取自己的表锁。InnoDB 在下一次提交时释放它的内部表锁,但是 MySQL 要释放它的表锁,你必须调用 UNLOCK TABLES。你不应该有 autocommit = 1,因为 InnoDB 在调用 LOCK TABLES 后立即释放它的内部表锁,很容易发生死锁。如果 autocommit = 1,InnoDB 根本不获取内部表锁,以帮助旧应用程序避免不必要的死锁。

另一方面,从这个页面我们有 https://dev.mysql.com/doc/refman/5.6/en/commit.html

要为一系列语句隐式禁用自动提交模式,请使用 START TRANSACTION 语句: …

mysql locking transactions table-locking

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

Mysql - 序列化失败:1213尝试获取锁定时发现死锁; 尝试重新启动事务

我有menus,categoriesproducts表.我使用的是mysql 5.5,所有表都是innoDB,在所有情况下,id都是自动增量的主键(int).

menus table
id, name, status

categories table
id, menu_id, name

products table
id, menu_id, category_id, status, name, url, content
Run Code Online (Sandbox Code Playgroud)

多个脚本可以并行运行,执行包含以下逻辑的相同php文件.

START TRANSACTION;
SET autocommit = 0;

LOCK TABLES products WRITE, categories WRITE, menus WRITE;

SELECT 
  p.`id`,
  p.`name`,
  p.`url`,
  p.`status`,
  c.`id` cat_id,
  c.`name` cat_name,
  m.`id` `menu_id`,
  m.`name` menu_name
FROM
  products p 
  LEFT JOIN categories c 
    ON p.`subcategory_id` = c.`id` 
  LEFT JOIN menus m 
    ON p.`menu_id` = m.`id` 
   WHERE p.`status` = 0 LIMIT 1 …
Run Code Online (Sandbox Code Playgroud)

mysql locking database-deadlocks table-locking

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

Cakephp在asp.net mvc中烘焙相当于

我用cakephp开发了几年,现在想尝试asp.net mvc.

在cakephp中有一个bake插件,允许基于可自定义的模板创建标准功能.例如,根据我的需要更改这些模板

1)用于控制器

https://github.com/cakephp/bake/blob/master/src/Template/Bake/Controller/controller.ctp https://github.com/cakephp/bake/blob/master/src/Template/Bake/Element /Controller/index.ctp https://github.com/cakephp/bake/blob/master/src/Template/Bake/Element/Controller/add.ctp

2)用于模型文件

https://github.com/cakephp/bake/blob/master/src/Template/Bake/Model/table.ctp

3)用于查看文件

https://github.com/cakephp/bake/blob/master/src/Template/Bake/Template/index.ctp https://github.com/cakephp/bake/blob/master/src/Template/Bake/Element /form.ctp

我可以从CLI运行命令并获得完整的功能验证,带有操作和视图文件的控制器文件 - 基于现有表的结构和它们之间的关系.该插件将根据模板文件在相应目录中创建实际的php文件.预先定制的烘焙模板允许在几分钟内生成CRUD或任何其他自定义功能.

asp.net mvc(v5或更高版本)中是否有类似的功能?所需的功能是能够完全自定义模板,模板将用于创建控制器,cshtml文件和模型文件 - 假设我们已经拥有数据库中具有外键关联的表.(最好免费,但不一定)

谢谢

asp.net-mvc cakephp

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