小编mul*_*sen的帖子

多行的python pprint词典

我正试图获得一本字典的印刷品,但我没有运气:

>>> 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.

python dictionary python-2.7 pprint

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

纯javascript来检查是否有东西悬停(没有设置鼠标悬停/输出)

我见过这个jQuery语法:

if($(element).is(':hover')) { do something}
Run Code Online (Sandbox Code Playgroud)

由于我不使用jQuery,我正在寻找在纯JavaScript中执行此操作的最佳方法.

我知道我可以保持一个全局变量,设置/它通过取消设置mouseovermouseout,但我不知道是否有某种方式通过DOM,而不是检查元素的本地属性?也许是这样的:

if(element.style.className.hovered === true) {do something}
Run Code Online (Sandbox Code Playgroud)

此外,它必须是跨浏览器兼容的.

javascript jquery hover

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

bedbase社区版超过2个节点

我目前正在围绕沙发基础数据库建立一个网站,如果它受欢迎,我很可能会在未来某个阶段在2台以上的机器上托管网站和数据库.它仍然是一个公平的方式,所以我想要一些信息来帮助我决定从这里走哪个方向.我的问题是:

  1. 有人知道我是否被允许在超过2个节点上部署couchbase的免费版(ce)?如果答案因版本而异,那么请告诉我哪个版本允许(如果有的话).

  2. 如果无法在超过2个节点上部署免费版本的couchbase,那么有人可以解释这是通过软件还是法律来阻止的?

在couchbase网站上发现了以下声明:

社区版(CE)最适合非商业开发人员,其中花一些时间来弄清楚或解决问题不会导致重大问题.在生产系统上使用这些二进制文件没有任何限制

这听起来好像软件可以安装在生产中所需数量的机器上,而无需付费,但是另一个沙发基页会显示:

寻找免费版本?我们的企业版免费版提供Couchbase Server的全部功能,可在开发中无限制地使用,在生产群集中最多可使用两个节点.

所以我很困惑.也许这最后一个只是指支持的成本,而不是与软件本身相关的任何成本?

couchbase

11
推荐指数
3
解决办法
9207
查看次数

splice正在影响以前复制的变量

可能重复:
在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因为分配可能是参考?

javascript

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

正则表达式在第一个可选字符串之前捕获所有内容

我想捕获一个模式,但不包括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)

php regex

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

如何将跟踪对象(sys.exc_info()[2]与sys.exc_traceback相同)作为字符串?

我有一个捕获所有异常的函数,我希望能够在此函数中将回溯作为字符串.

到目前为止,这不起作用:

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)

python string data-conversion string-conversion traceback

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

vim php_javascriptInStrings选项?

我注意到我的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)

javascript php vim syntax-highlighting

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

php取消设置影响全局范围的本地引用

我遇到了一些非常奇怪的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)

php

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

git checkout不会删除应该删除的文件

使用公共仓库,我想让我的主分支回到过去的某个提交.我已经查看了选项,对我来说最好的事情看起来是对所需提交的简单检查,然后提交到主分支.但是,当我执行检出时,它不会删除在指定的提交哈希之后添加到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)

git git-checkout

6
推荐指数
2
解决办法
7605
查看次数

Firebase 与 Microsoft 的身份验证给出了空用户对象

我正在使用 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 azure firebase-authentication

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