社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Matt

Matt 最近回复了

如果公关被拒绝了,我需要做进一步的改变,那么这个过程应该是什么?

继续关注你的功能分支。编辑、添加、提交并再次推送到功能分支的远程跟踪分支。完成。新的提交将自动添加到请求中。

例如,在 myfeature (假设其上游已配置为 origin/myfeature ,并且有一个正在等待的拉取请求):

echo hello > test.txt
git add test.txt; git commit -mtesting
git push

如果在浏览器中转到pull请求,您将看到此提交已按良好顺序附加到pull请求。


其他评论:

从origin/main获取所有更改并将其拉入my local

这可能是不必要的。您可以直接获取并启动功能分支 origin/main --no-track 当你这么做的时候,为了不被跟踪 起源/主要 错误地例如:

git fetch
git switch --no-track -c myfeature origin/main

这就产生了分支 我的特征 从更新的 main .

拉动(从原点/主方向重新基准)

这是不必要的。同样,您可以获取功能分支,然后将其重设为 ,但一旦你推动了这可能是一个坏主意,因为你现在将推动重写历史;而且可能没有必要。

主要的 ,最好先提取,然后合并 在按下功能分支之前,将其插入功能分支。

例如,在 我的特征

git fetch
git merge origin/main 

你的枝干永远不需要拔掉。

sourcetree似乎让我想从 origin/branch-1 (在第5阶段)而不是 起源/主要

不,您可以从Sourcetree中的任何远程分支提取。打开左边的Remotes类别,点击一个分支,然后选择Pull from。然而,我强烈建议不要使用pull。

Git从事 承诺 .你在Git的生活就是创建并可能共享提交。提交描述了 全部的 项目状态。

所以如果有文件 我的文件 在提交A中,然后删除该文件,并提交包含该删除的提交B(即提交B缺少该文件) 我的文件 ),这就是历史:有一个文件 我的文件 现在没有了。这就是你说的 git rm --cached 然后 git commit .

因此,当您提出拉取请求时,这是一个 合并 合并是指两个或多个分支机构各自独立完成的所有工作。在你的分支上,你的贡献之一是删除了 我的文件 .因此,将您的分支合并为一个仍有 我的文件 这是什么意思 我的文件 被删除。

3 年前
回复了 Matt 创建的主题 » Git提交可以有多个树对象吗?

这取决于“拥有”是什么意思。承诺 实际上是一棵树(“像树一样”),这就是为什么你可以 ls-tree 信息技术但这并不意味着它是 只有 提交中的树。每个被表示的子文件夹也是一个树对象。

它应用隐藏,就像它是一个增量,而不是一个快照

对的它在 它本身 快照,但“应用”是一种合并形式,是作为 差别 从它形成的头部开始。隐藏提交没有删除文件B中与其前面的头提交相关的文本,因此应用它不会删除文本。

如果你不懂合并逻辑,你可能想读我的 https://www.biteinteractive.com/understanding-git-merge/ .不仅合并本身,而且还原、切利拾取、重设基础和“应用”都使用合并逻辑。(这就是其中任何一个(包括应用隐藏)都可能因合并冲突而失败的原因。)

3 年前
回复了 Matt 创建的主题 » 我用python制作时钟时出错了

试试小写字母P:

string = strftime('%H:%M:%S %p')

但这是24小时制,所以你可能不需要上午或下午。如果您想要12小时制,请使用:

string = strftime('%I:%M:%S %p')

文件: https://www.programiz.com/python-programming/datetime/strftime

4 年前
回复了 Matt 创建的主题 » 无法通过git pull提取代码

默认情况下, git pull origin xyz git fetch origin xyz 然后 git merge FETCH_HEAD 。请务必注意,指定的远程分支是 未签出,但已整合 进入当地的分支机构。

它显示 * master 因为你实际上并没有通过运行 git拉原点xyz .然而,分支机构的变化 xyz 都融入了当地的 master 自获取后执行合并以来的分支。可能您想先切换到所需的分支( git checkout xyz )然后拉动这些变化( git pull ).

你可以用 git branch -a -vv 要显示远程和本地分支,包括跟踪信息以及当前签出的分支,请执行以下操作:

* xyz                   b7b2f7c [origin/xyz] Commit Message A
  main                  8c4124b [origin/main] Commit Message B
  remotes/origin/HEAD   -> origin/main
  remotes/origin/xyz    b7b2f7c Commit Message A
  remotes/origin/main   8c4124b Commit Message B
3 年前
回复了 Matt 创建的主题 » 具有双版本控制的git超级存储库

所以基本上答案是否定的。除了作为子模块,嵌套存储库不受支持。如果我们有这样的层次结构:

myFolder
.git
    myInnerFolder
    .git

...那么如果 myInnerFolder 对用户可见 .git 属于 myFolder 总之,它被视为一个子模块。你的选择是要么忽略 myInnerFolder 因此,更高级别的Git甚至不会查看它的内部,或者接受另一个回购协议的工作树中的一个回购协议是一个子模块的事实。

正方形的图中有标签/分支名称指向它们,尽管你在截图中省略了图的右侧,从而掩盖了这一事实。

5 年前
回复了 Matt 创建的主题 » 在文本文件Python中搜索大写单词的数量

假设我们有一个示例文件 doc.txt 内容如下:

这是一个识别大写单词的测试文件。 我创建这个示例是因为问题的需求可能会有所不同。 例如,像SQL这样的首字母缩略词应该算作大写吗? 如果是:这将导致九个。

如果要计算大写(也称为标题大小写)单词,但排除所有大写单词(如首字母缩略词),可以执行以下操作:

def count_capital_words(filename):                                               
    count = 0                                                                    
    with open(filename, 'r') as fp:                                              
        for line in fp:                                                          
            for word in line.split():                                            
                if word.istitle():                                               
                    print(word)                                                  
                    count += 1                                                   
    return count


print(count_capital_words('doc.txt'))  # 8

filter(None, ...) 功能将确保 word IndexError 如果是这样的话:

def count_capital_words(filename):                                               
    count = 0                                                                    
    with open(filename, 'r') as fp:                                              
        for line in fp:                                                          
            for word in filter(None, line.split()):                              
                if word[0].isupper():                                            
                    count += 1                                                   
    return count


print(count_capital_words('doc.txt'))  # 9

from itertools import chain                                                      


def get_words(filename):                                                         
    with open(filename, 'r') as fp:                                              
        words = chain.from_iterable(line.split() for line in fp)                 
        yield from words 
5 年前
回复了 Matt 创建的主题 » 将数组传递给jQuery每个函数以重新格式化数据

不能使用短的C语法推送到数组 (list[] = val) . 您将寻找一个名为 push

var x = []; // declare an array
var myObject = { a: 1, b: 2 }; // Defining an example object
var mySecondObject = { a: 3, b: 5 }; // another sample object
x.push(myObject);
x.push(mySecondObject);

console.log(x);

输出:

[
    { a: 1, b: 2 },
    { a: 3, b: 5 }
]

如果我们使用您提供的代码:

var parsed = [];
var count = 0;
$.each(data, function(k, outer) {
  count += 1;
  parsed[count].push(k);
  $.each(outer, function(i, inner) {
    parsed[count].push(i);
    });
});

如果要允许push确定基于0的自动索引,则不一定需要count变量。

6 年前
回复了 Matt 创建的主题 » Python中的8皇后解决方案

谢谢大家的意见。我发现问题出在我的diagsOK()函数的实现上。我仍然不确定这个函数哪里出错了,但是我在如何正确地编写这个函数上做了一些思考,并提出了下面的解决方案。这个问题肯定有一个更简单、更优雅的解决方案,但我想用我知道的方法来解决它。我已经测试了下面的解决方案,它是有效的。我很高兴:-)

# Matt Lozier's 8 Queens Solution in Python.
#
# Thanks to Eilon Lipton (elipton@microsoft.com) for his logic 
# in implementing the addQueen() function, which I adapted to Python
# from his C implementation.

# This 2D array (or in Python lists of lists) is one solution

board = [[0, 0, 0, 0, 0, 1, 0, 0],
         [0, 0, 0, 1, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 1, 0],
         [1, 0, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0, 0, 1],
         [0, 1, 0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 1, 0, 0, 0],
         [0, 0, 1, 0, 0, 0, 0, 0]]

def clearBoard(board):
    for i in range(8):
        for j in range(8):
            board[i][j] = 0

def printBoard(board):
    for i in range(8):
        for j in range(8):
            if board[i][j] == 1:
                print("Q", end="")
            else:
                print("X", end="")
        print("")
    print("")

def checkColsOK(board):
    for i in range(8):
        sum = 0
        for j in range(8):
            sum += board[j][i]
        if sum > 1:
            return 0




def checkRowsOK(board):
    for i in range(8):
        sum = 0
        for j in range (8):
            sum += board[i][j]
        if sum > 1:
            return 0


def checkDiagsOK(board):

# left to right, bottom up
    counter = 8
    sum = 0

    for i in range(8):
        x = i
        y = 0
        for j in range(counter):
            #print(board[y][x], end="")
            sum += board[y][x]
            x += 1
            y +=1
        counter -= 1

        #print("")
        #print("There are ", end="")
        #print(sum, end="")
        #print(" queens in this diagonal.")
        if sum > 1:
            return 0
        sum = 0


# right to left, top down
    counter = 8
    sum = 0

    for i in range(8):
        x = i
        y = 0
        for j in range(counter):
            #print(board[x][y], end="")
            sum += board[x][y]
            x += 1
            y +=1
        counter -= 1

        #print("")
        #print("There are ", end="")
        #print(sum, end="")
        #print(" queens in this diagonal.")

        if sum > 1:
            return 0
        sum = 0


# right to left, bottom up
    counter = 8
    sum = 0

    for i in reversed(range(8)):
        x = i
        y = 0
        for j in range(counter):
            #print(board[x][y], end="")
            sum += board[x][y]
            x -= 1
            y += 1
        counter -= 1

        #print("")
        #print("There are ", end="")
        #print(sum, end="")
        #print(" queens in this diagonal.")

        if sum > 1:
            return 0
        sum = 0

# left to right, top down
    counter = 8
    sum = 0

    for i in range(8):
        x = 7
        y = i
        for j in range(counter):
            #print(board[x][y], end="")
            sum += board[x][y]
            x -= 1
            y += 1
        counter -= 1

        #print("")
        #print("There are ", end="")
        #print(sum, end="")
        #print(" queens in this diagonal.")

        if sum > 1:
            return 0
        sum = 0

def addQueen(board, col):

    row = 0

    for row in range(8):
        board[row][col] = 1
        if (checkRowsOK(board) != 0 and checkDiagsOK(board) != 0):
            if col == 7:
                printBoard(board)
            else:
                addQueen(board, col + 1)
        board[row][col] = 0


clearBoard(board)
addQueen(board, 0)

#if checkDiagsOK(board) != 0:
#    print("Diagonals are OK!")

#if checkRowsOK(board) != 0:
#    print("Rows are OK!")

#if checkRowsOK(board) != 0:
#    print ("Cols are OK!")

#printBoard(board)

#clearBoard(board)

#printBoard(board)
6 年前
回复了 Matt 创建的主题 » python trim帮助变量(单括号和双括号)

你应该使用python regexp . 下面是python解释器的一个例子。试试看,如果符合你的需要就接受。

>>> import re
>>> s = '<img src="//d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/65115.gif" itemprop="image" alt="Gourmet Sushi" width="100" height="100" onerror="this.onerror = null;this.src = \'//dy3erx8o0a6nh.cloudfront.net/images/serp/serp_default_logo.svg\';">'
>>> pattern = re.compile(r'<img\s+src="//([^"]+)".*')
>>> for i in pattern.findall(s):
...     print(i)

d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/65115.gif
6 年前
回复了 Matt 创建的主题 » 如何设置redis请求的节点超时

这不是写得很清楚,但是当你用命令(如set,hset等)和时间限制调用它时,它会返回一个函数。用这些值调用这个返回函数。我不知道客户是从哪里来的,我想你应该把它放在范围内。这不是很好的代码,我建议你把你写的东西贴出来,然后问如何用它来实现你想要的。

6 年前
回复了 Matt 创建的主题 » dynamodb:使用python扫描vs查询

查询的一个明显问题是 and 而不是 & 使用“and”基本上就是删除查询的第一部分。

6 年前
回复了 Matt 创建的主题 » 使用git存储库签入/签出visual studion团队项目

根据你的描述,有可能 Team Found Version Control (TFVC) 在azure devops中是一个更好的版本控制选项。可能是 check out options 更像你所熟悉的。

在创建新项目或添加新的回购项目时,可以选择此版本控制选项。

6 年前
回复了 Matt 创建的主题 » 使用rabbitmq集成nodejs和python

https://www.npmjs.com/package/miko 是nameko的rpc协议的nodejs客户端。

您可能还想考虑使用grpc,而不是nameko附带的amqp rpc实现。这里有一个很棒的writeup和示例项目: https://itnext.io/grpc-apis-with-nameko-11bbd9492225

7 年前
回复了 Matt 创建的主题 » 在python3中如何将单词向后翻转?在这种情况下[副本]

递归方法:

def reverse(s): return s[0] if len(s)==1 else s[len(s)-1] + reverse(s[0:len(s)-1])

例子:

print(reverse("Hello!"))    #!olleH
6 年前
回复了 Matt 创建的主题 » 对单独出现的元素应用jquery函数

目前我无法测试,但我认为这可以满足您的需要:

function showDiv() {
    if(counter == 0 ) { counter ++; return; }
    $('#whatsapp').find('#bubble-' + counter + ':not(.ignoreMe)').addClass('ignoreMe').show().jGravity({ 
        target: 'div.bubble',
        ignoreClass: 'ignoreMe',
        weight: 25, 
        depth: 5, 
        drag: true 
    });
    counter ++

它添加了一个类 ignoreMe 对于每个项,然后使用 :not 伪类。

6 年前
回复了 Matt 创建的主题 » 如何删除Git中已存在的目标路径?

不需要使用命令行。就把它扔了 gittest gitsub 垃圾桶里的文件夹。他们 .git 回购协议就在里面,会被扔掉。请注意,您丢失了所有的工作,您正在丢弃工作目录,但听起来这是您想要做的,如果您已经推到Bitbucket,您总是可以克隆一个新的工作目录,并得到您的工作。

6 年前
回复了 Matt 创建的主题 » 无法在python中使用imap连接gmail/outlook

第一步是检查imap.lasterrortext属性的内容,看看发生了什么。例如:

#  Connect to an IMAP server.
#  Use TLS
imap.put_Ssl(True)
imap.put_Port(993)
success = imap.Connect("imap.someMailServer.com")
if (success != True):
    print(imap.lastErrorText())
    sys.exit()

我的猜测是防火墙(软件或硬件)正在阻止出站连接。

另一种解决方案是使用gmail rest api,如以下示例所示: https://www.example-code.com/python/gmail.asp http端口(443)不太可能被防火墙阻止。您可以下载到Chilkat电子邮件对象中,然后以与通过IMAP下载完全相同的方式保存附件。

6 年前
回复了 Matt 创建的主题 » 在Jupyter笔记本中运行Tornado服务器

第1部分:让我们得到嵌套龙卷风

要找到所需的信息,您必须遵循以下crumbtrails,首先查看的发行说明中描述的内容 IPython 7 它将特别指出有关异步和等待部分的更多信息。 documentation ,到 this discussion , 建议使用 nest_asyncio .

关键在于:

  • a)要么欺骗python运行两个嵌套的事件循环。(Nest-Asyncio做什么)
  • b)您在已经存在的EventLoop上调度协程。(我不知道如何处理龙卷风)

我很确定你知道这些,但我相信其他读者会感激的。

不幸的是,除非您像在jupyterhub上那样控制部署,并且可以将这些行添加到自动加载的ipython初创公司脚本中,否则无法使其对用户完全透明。但我认为以下内容足够简单。

import nest_asyncio
nest_asyncio.apply()


# rest of your tornado setup and start code.

第2部分:Gotcha同步代码块EventLoop。

上一节只关注能够运行Tornado应用程序。但请注意 任何同步代码都将阻塞事件循环 ;因此在运行时 print(requests.get("http://localhost:8000")) 当您阻止EventLoop时,服务器似乎不工作,只有当等待EventLoop重新启动的代码完成执行时,它才会重新启动…(理解这是留给读者的练习)。你要么发行 print(requests.get(“http://localhost:8000”)) 从另一个内核 或者,使用aiohtp。

下面介绍如何以与请求类似的方式使用aiohtp。

import aiohttp
session =  aiohttp.ClientSession()
await session.get('http://localhost:8889')

在这种情况下,由于aiohtp是非阻塞的,所以事情看起来会正常工作。在这里,您可以看到一些额外的ipython魔力,我们可以自动检测异步代码并在当前的eventlocop上运行它。

一个很酷的练习可以是 request.get 在另一个内核的循环中,并运行 sleep(5) 在运行Tornado的内核中,看到我们停止处理请求…

第3部分:免责声明和其他途径:

这是 相当棘手 我建议不要在生产中使用,并警告您的用户这不是推荐的操作方法。

这并不能完全解决您的问题,您需要运行一些不在主线程中的东西,我不确定这是否可能。

你也可以试着和其他的循环跑者一起玩 trio curio ;它们可能允许您做默认情况下不能用Asyncio做的事情,比如嵌套,但是 here be dragoons . 我强烈推荐三重奏和 multiple blog posts around its creation 尤其是当你在教异步的时候。

享受,希望这有帮助,并请报告错误,以及确实有效的事情。