维护代码时要遵循的最佳实践和经验法则是什么?在开发分支中只有生产就绪代码,或者开发分支中是否有未经测试的最新代码,这是一种好的做法吗?
你们如何维护开发代码和生产代码?
编辑 - 补充问题 - 您的开发团队是否遵循"尽快提交 - 通常 - 甚至是代码包含 - 次要错误或不完整"协议或"提交 - 只有完美的代码"协议,同时将代码提交给开发分支?
我知道数据URI,其中base64
编码数据可以内联使用,如图像.今天我收到的电子邮件实际上是垃圾邮件,其主题中有一个动画(gif)图标:
这是仅图标:
因此,我唯一想到的就是关于数据URI以及Gmail是否允许在主题中插入某种表情符号.我看到了电子邮件的完整详细版本,并在下图中指出了主题行:
所以GIF来自=?UTF-8?B?876Urg==?=
编码字符串,类似于数据URI方案但是我无法从中获取图标.这是元素HTML源:
长话短说,有很多表情从https://mail.google.com/mail/e/XXX
哪里XXX
是十六进制数字.他们没有记录在案,或者我找不到它.如果这是关于数据URI,那么如何将它们包含在Gmail的电子邮件主题中呢?(我将该电子邮件转发到雅虎电子邮件帐户,[?]
而不是图标),如果不是,那么该编码字符串是如何解析的?
我正在使用MySQL的AUTO_INCREMENT字段和InnoDB来支持事务.我注意到当我回滚事务时,AUTO_INCREMENT字段没有回滚?我发现它是按照这种方式设计的,但有没有解决方法呢?
我搜索并阅读了大部分相关主题,但它们并不是我想要的.
我有一个带有json_encode
PHP函数的JSON enocded字符串:
{"casts":["Matthew Modine","Adam Baldwin","Vincent D'Onofrio"],"year":1987}
Run Code Online (Sandbox Code Playgroud)
我正在使用jQuery将值放在适当的字段中,在测试的情况下我做了以下操作:
<script>
var obj = jQuery.parseJSON('<?=$data?>');
console.log(obj);
</script>
Run Code Online (Sandbox Code Playgroud)
假设$ data是这样的:
$data =
<<<END
{"casts":["Matthew Modine","Adam Baldwin","Vincent D'Onofrio"],"year":1987}
END;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Google Chrome控制台会生成什么:
Uncaught SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)
但是,当我对JSON编码的字符串进行更改时 - 将反斜杠添加到单引号:
{"casts":["Matthew Modine","Adam Baldwin","Vincent D\'Onofrio"],"year":1987}
Run Code Online (Sandbox Code Playgroud)
控制台输出正常:
Object {casts: Array[3], year: 1987}
casts: Array[3]
year: 1987
Run Code Online (Sandbox Code Playgroud)
问题是:控制台中的这个错误是预期的吗?我想逃避或更换'
有\'
会这么脏!
更新
实际上$ data数据来自a json_encode($var)
而$ var是一个数组!
$data = json_encode($var);
Run Code Online (Sandbox Code Playgroud) 我最近读过有关Java Script正则表达式的内容,但我感到很困惑.
我的作者说必须在所有正则表达式声明的开头和结尾包含插入符号(^
)和美元符号($
)?为什么实际需要这个?它的目的是什么?
如果错了,请纠正我!
根据邮件地址验证的RFC-822,有一个基于PERL的怪物正则表达式,当我尝试在在线正则表达式测试器中使用它时实际上有很多错误:
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ …
Run Code Online (Sandbox Code Playgroud) 在Laravel中,您可以轻松定义功能,然后在用户请求中挂钩,以执行不同的操作:
$gate->define('update-post', function ($user, $post) {
return $user->id === $post->user_id;
});
Run Code Online (Sandbox Code Playgroud)
但几乎所有我定义的能力都包含$user->id === $model->user_id
在其中.我不喜欢它,因为它是一种重复的条件,我认为它可能更抽象.
我定义的大部分功能都是根据更新/删除记录,所以如果我可以将全局条件应用于所有这些记录,或者如果可以有一个组能力定义哪个类似于我们在路由中所做的那样,那么会更好.
它有什么解决方法吗?我真的很喜欢干.
我正在通过两个单独的调试工具调试^(A+)*B
一个字符串上的正则表达式AAAC
(例如来自rexegg.com):我有权访问:
以下是结果(左侧的regex101):
我的问题主要不在于对我来说同样重要的步骤数量,而是回溯的方式.为什么我们看到差异?(regex101使用PCRE lib并且我将RegexBuddy lib设置为相同)
全面的逐步解释对我有利.
不使用u
标志可以使用的十六进制范围是[\x{00}-\x{ff}]
,但是使用u
标志它可以达到一个4字节的值\x{7fffffff}
([\x{00000000}-\x{7fffffff}]
).
所以,如果我执行以下代码:
preg_match("/[\x{00000000}-\x{80000000}]+/u", $str, $match);
Run Code Online (Sandbox Code Playgroud)
会得到这个错误:
Warning: preg_match(): Compilation failed: character value in \x{...} sequence is too large
Run Code Online (Sandbox Code Playgroud)
所以我无法匹配类似于 with equivalent hex value of
f0 a1 83 81
.问题不在于如何匹配这些字母,而是这个范围和这个边界如何来自u
修饰符应该将字符串视为UTF-16
echo PCRE_VERSION;
Run Code Online (Sandbox Code Playgroud)
PCRE版本与PHP 5.3.24 - 5.3.28,5.4.14 - 5.5.7:
8.32 2012-11-30
Run Code Online (Sandbox Code Playgroud)
PCRE版本与PHP 5.3.19 - 5.3.23,5.4.9 - 5.4.13:
8.31 2012-07-06
Run Code Online (Sandbox Code Playgroud)
请考虑以下代码:
final class TinkerWithMe {
protected $key1 = 19;
private $key2 = 88;
}
$class = new TinkerWithMe();
$getKeys = function() {
return array($this->key1, $this->key2);
};
$oldKeys = $getKeys->call($class);
$newKey1 = 96;
$newKey2 = 42;
$setKeys = function() use ($newKey1, $newKey2) {
$this->key1 = $newKey1;
$this->key2 = $newKey2;
};
$setKeys->call($class);
Run Code Online (Sandbox Code Playgroud)
当您可以通过闭包或反射轻松解决问题时,为什么还要考虑OOP的可见性?
有没有办法阻止我失踪的这种事情?
php ×4
regex ×4
backtracking ×1
base64 ×1
class ×1
closures ×1
data-uri ×1
deployment ×1
gmail ×1
innodb ×1
javascript ×1
jquery ×1
laravel ×1
laravel-5.1 ×1
mysql ×1
oop ×1
pcre ×1
preg-match ×1
reflection ×1
transactions ×1