我正试图获得一本字典的印刷品,但我没有运气:
>>> import pprint
>>> a = {'first': 123, 'second': 456, 'third': {1:1, 2:2}}
>>> pprint.pprint(a)
{'first': 123, 'second': 456, 'third': {1: 1, 2: 2}}
Run Code Online (Sandbox Code Playgroud)
我希望输出在多行上,如下所示:
{'first': 123,
'second': 456,
'third': {1: 1,
2: 2}
}
Run Code Online (Sandbox Code Playgroud)
可以pprint
这样吗?如果没有,那么哪个模块呢?我正在使用Python 2.7.3.
我见过这个jQuery语法:
if($(element).is(':hover')) { do something}
Run Code Online (Sandbox Code Playgroud)
由于我不使用jQuery,我正在寻找在纯JavaScript中执行此操作的最佳方法.
我知道我可以保持一个全局变量,设置/它通过取消设置mouseover
和mouseout
,但我不知道是否有某种方式通过DOM,而不是检查元素的本地属性?也许是这样的:
if(element.style.className.hovered === true) {do something}
Run Code Online (Sandbox Code Playgroud)
此外,它必须是跨浏览器兼容的.
我目前正在围绕沙发基础数据库建立一个网站,如果它受欢迎,我很可能会在未来某个阶段在2台以上的机器上托管网站和数据库.它仍然是一个公平的方式,所以我想要一些信息来帮助我决定从这里走哪个方向.我的问题是:
有人知道我是否被允许在超过2个节点上部署couchbase的免费版(ce)?如果答案因版本而异,那么请告诉我哪个版本允许(如果有的话).
如果无法在超过2个节点上部署免费版本的couchbase,那么有人可以解释这是通过软件还是法律来阻止的?
我在couchbase网站上发现了以下声明:
社区版(CE)最适合非商业开发人员,其中花一些时间来弄清楚或解决问题不会导致重大问题.在生产系统上使用这些二进制文件没有任何限制
这听起来好像软件可以安装在生产中所需数量的机器上,而无需付费,但是另一个沙发基页会显示:
寻找免费版本?我们的企业版免费版提供Couchbase Server的全部功能,可在开发中无限制地使用,在生产群集中最多可使用两个节点.
所以我很困惑.也许这最后一个只是指支持的成本,而不是与软件本身相关的任何成本?
可能重复:
在javascript中按值复制数组
我有一个有趣的JavaScript问题.我复制一个数组变量只对副本进行修改,然后拼接副本删除一个元素.但是原始数组变量受到拼接的影响 - 就好像副本是'按引用复制':
window.onload = function() {
var initial_variable = ['first', 'second', 'third'];
var copy_initial_variable = initial_variable;
copy_initial_variable.splice(0, 1);
alert('initial variable - ' + initial_variable);
};
//output: initial variable - second,third
Run Code Online (Sandbox Code Playgroud)
首先,这是javascript的故意行为还是一个bug?
其次,我如何制作数组的副本并删除副本中的元素但不能删除原始元素?
有一件事让我觉得以上可能是一个javascript错误,这种行为只发生在数组而不是整数.例如:
window.onload = function() {
var initial_variable = 1;
var copy_initial_variable = initial_variable;
copy_initial_variable = 2;
alert('initial variable - ' + initial_variable);
};
//output: initial variable - 1
Run Code Online (Sandbox Code Playgroud)
如果行为是一致的,那么这应该输出,2
因为分配可能是参考?
我想捕获一个模式,但不包括preg_match的可选其他模式的第一个实例,例如:
ABCDEFGwTW$% | capture ABCD
@Q%HG@H%hg afdgwsa g weg#D DEFG | capture @Q%HG@H%hg afdgwsa g weg#D D
@Q%HDEFG@H%hg afdgwsa g weg#D DEFG | capture @Q%HD
Run Code Online (Sandbox Code Playgroud)
因此,在上述情况下,EFG
捕获字符串的第一个实例之前的任何内容.另外,如果EFG
字符串不存在,那么我想捕获整个字符串.
我本以为会有以下工作,但没有这样的运气:
$pattern = '/(.*)(?:EFG)?/';
preg_match($pattern, 'Q$TQ@#%GEFGw35hqb', $matches);
print_r($matches);
//should give: 'Q$TQ@#%G'
Run Code Online (Sandbox Code Playgroud) 我有一个捕获所有异常的函数,我希望能够在此函数中将回溯作为字符串.
到目前为止,这不起作用:
def handle_errors(error_type, error_message, error_traceback):
"""catch errors"""
import traceback
error = {}
error['type'] = error_type.__name__
error['message'] = str(error_message)
error['file'] = os.path.split(error_traceback.tb_frame.f_code.co_filename)[1]
error['line'] = error_traceback.tb_lineno
error['traceback'] = repr(traceback.print_tb(error_traceback))
### finalise error handling and exit ###
sys.excepthook = handle_errors
Run Code Online (Sandbox Code Playgroud)
这error['traceback']
是错误的界限.我甚至需要使用该traceback
模块吗?
根据另一个模糊相似的问题,我试过:
error['traceback'] = repr(error_traceback.print_exc())
Run Code Online (Sandbox Code Playgroud)
...但这会产生错误:
Error in sys.excepthook:
Traceback (most recent call last):
File "xxxxxxxxxxx", line 54, in handle_errors
error['traceback'] = repr(error_traceback.print_exc())
AttributeError: 'traceback' object has no attribute 'print_exc'
Run Code Online (Sandbox Code Playgroud) 我注意到我的ubuntu机器上的语法/ php.vim文件有一个php_htmlInStrings
选项.我可以启用此选项以在我的php文件中显示字符串中的HTML语法突出显示,这很棒.我还想在php文件中的字符串中进行javascript语法高亮显示.有人知道是否可以这样做,如果可以,我该怎么做?
编辑 - 增加额外的可能性
我还要提一下,我会很高兴解决方案,我必须在输出结果之前通过php函数解析我的所有javascript字符串.这可能会解决下面的conner建议的问题,其中vim无法确定字符串是否包含javascript.例如:
$js = "some regular text which is not javascript##now vim has
detected that this part is javscript##back to regular text";
parse($js);
function parse($str)
{
return str_replace('##', '', $str);
}
Run Code Online (Sandbox Code Playgroud)
我很乐意这样做的原因是因为我可能会在我的项目中加入一个html/css/js变量minifier,无论如何都会对字符串进行替换.
当然,如果有一个vim特定的等效字符,##
它不会显示在源代码中,也不需要过滤掉,那么这将是更好的...
重新编辑2
根据下面的conner解决方案,可以实现所需的效果,如下所示:
$js = "<script>some javascript</script>";
Run Code Online (Sandbox Code Playgroud)
( :let php_htmlInStrings=1
在vim中).如果有人可以向我展示使javascript语法突出显示在以下字符串中所需的vim脚本,那么我将奖励他们答案:
$js = /*<script>*/"some javascript"/*</script>*/;
Run Code Online (Sandbox Code Playgroud) 我遇到了一些非常奇怪的PHP行为(ubuntu 10.04上的5.3.2).应该在本地范围内发生的未设置会影响调用者函数的范围.以下代码片段是我的代码的简化,它显示了我只能假设的错误:
<?php
function should_not_alter($in)
{
$in_ref =& $in['level1'];
should_only_unset_locally($in);
return $in;
}
function should_only_unset_locally($in)
{
unset($in['level1']['level2_0']);
}
$data = array('level1' => array('level2_0' => 'first value', 'level2_1' => 'second value'));
$data = should_not_alter($data); //test 1
//should_only_unset_locally($data); //test 2
print_r($data);
?>
Run Code Online (Sandbox Code Playgroud)
如果运行上面的内容,您将看到该值'first value'
已从$data
全局范围中的数组中取消设置.但是,如果你评论test 1
并运行,test 2
这不会发生.
我只能假设php不喜欢引用数组元素.在我的代码中我需要改变$in_ref
- 因此$in_ref =& $in['level1'];
上面代码中的行的原因.我意识到删除这一行将解决'first value'
在全局范围内未设置的问题,但这不是一个选项.
任何人都可以确认这是否是PHP的预期行为?
我怀疑这是一个错误,而不是一个功能,因为这种行为与php处理具有普通(非数组)变量的作用域和引用的方式不一致.例如,使用字符串而不是数组函数should_only_unset_locally()
对全局范围没有影响:
<?php
function should_not_alter($in)
{
$in_ref =& $in;
should_only_unset_locally($in);
return $in;
}
function should_only_unset_locally($in) …
Run Code Online (Sandbox Code Playgroud) 使用公共仓库,我想让我的主分支回到过去的某个提交.我已经查看了选项,对我来说最好的事情看起来是对所需提交的简单检查,然后提交到主分支.但是,当我执行检出时,它不会删除在指定的提交哈希之后添加到master中的某些文件.
例如,如果我想回到提交aaa1
:
$ cd working-copy-top-dir
$ git checkout master
$ git checkout -- .
$ git clean -fd
$ git checkout aaa1 .
$ git clean -fd
Run Code Online (Sandbox Code Playgroud)
但此时添加的一些文件aaa1
仍在工作副本中.什么是checkout
命令来获得工作拷贝数据回来是怎么回事的aaa1
?
$ git --version
git version 2.7.2.windows.1
Run Code Online (Sandbox Code Playgroud) 我正在使用 Google Firebase 实现网络用户登录。我在 Google 和 Facebook 上使用了此功能(我正在获取填充的user
对象),但对于 Microsoft 登录,即使在登录屏幕上授权后,我也会进入null
该对象。user
我的代码:
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.17.2/firebase-app.js";
import {
getAuth,
signInWithRedirect,
getRedirectResult,
signOut,
GoogleAuthProvider,
FacebookAuthProvider,
OAuthProvider, // microsoft
onAuthStateChanged
} from "https://www.gstatic.com/firebasejs/9.17.2/firebase-auth.js";
const firebaseConfig = { /* my settings */ };
const firebase = initializeApp(firebaseConfig);
const auth = getAuth(firebase);
document.querySelector('.login-with button.microsoft').addEventListener('click', microsoftSignIn, false);
function microsoftSignIn() {
const provider = new OAuthProvider('microsoft.com');
signInWithRedirect(auth, provider);
}
onAuthStateChanged(auth, user => {
if (user) {
console.log("user is logged in", …
Run Code Online (Sandbox Code Playgroud) javascript ×4
php ×3
python ×2
azure ×1
couchbase ×1
dictionary ×1
git ×1
git-checkout ×1
hover ×1
jquery ×1
pprint ×1
python-2.7 ×1
regex ×1
string ×1
traceback ×1
vim ×1