RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-201445

gil9red's questions

Martin Hope
gil9red
Asked: 2024-07-01 20:22:34 +0000 UTC

如何创建 SQLite3 备份?

  • 8

SQLite3将数据存储在一个或多个文件中(对于WAL模式)并通过复制数据库文件提出了一种解决方案(示例):

def db_create_backup(
        log: logging.Logger,
        backup_dir=BACKUP_DIR_NAME,
        date_fmt="%Y-%m-%d",
):
    backup_path = Path(backup_dir)

    backup_path_db = backup_path / DB_DIR_NAME.name
    backup_path_db.mkdir(parents=True, exist_ok=True)

    ...

    zip_name = dt.datetime.today().strftime(date_fmt)
    zip_name = backup_path_db / zip_name

    attempts = 5
    for i in range(attempts):
        try:
            log.info(f"Создание бэкапа базы данных в: {zip_name}")
            shutil.make_archive(zip_name, "zip", DB_DIR_NAME)

            ...

但尽管这种解决方案效率很高,但它还是引起了人们的怀疑——它看起来像自行车拐杖。

是否可以更正确地创建 sqlite3 备份?

python
  • 2 个回答
  • 48 Views
Martin Hope
gil9red
Asked: 2024-07-01 19:50:15 +0000 UTC

如何为一个文件创建 zip 压缩包?

  • 5

我尝试使用Shutil.make_archive从文件而不是文件夹创建存档,因为......在英语堆栈上,有人发布了此解决方案的答案,但在我的存档中,该文件不在根目录中,而是沿着重复其当前路径的路径,例如:

C:\Users\ipetrash\PycharmProjects\SimplePyScripts\sqlite3__examples\databases\backup\backup_2024-07-01.db.zip\Users\ipetrash\PycharmProjects\SimplePyScripts\sqlite3__examples\databases\backup

在此输入图像描述

为了:

import shutil
print(shutil.make_archive(file_name_backup.name, "zip", DIR_DB_BACKUP, file_name_backup))
# C:\Users\ipetrash\PycharmProjects\SimplePyScripts\sqlite3__examples\backup_2024-07-01.db.zip

print(shutil.make_archive(file_name_backup, "zip", DIR_DB_BACKUP, file_name_backup))
# C:\Users\ipetrash\PycharmProjects\SimplePyScripts\sqlite3__examples\databases\backup\backup_2024-07-01.db.zip

我怀疑如果在归档之前更改当前的活动目录,将文件放在根目录下的归档中会有所帮助,但这不是理论,然后返回它...不方便...

解决办法是什么?

python
  • 1 个回答
  • 28 Views
Martin Hope
gil9red
Asked: 2022-05-20 03:17:35 +0000 UTC

如何查看peewee生成的运行查询?

  • 1

我尝试了sql注入,但是没有用。但是,如果您显示查询,则它正在工作。

准备测试代码:

from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()

    class Meta:
        database = db

db.connect()
db.create_tables([Person])

for i in range(5):
    Person(name=f'name_{i+1}').save()

query = Person.select().where(Person.name == "123' or '1' = '1")
print(query)
print(len(list(query)))

结果:

SELECT "t1"."id", "t1"."name" FROM "person" AS "t1" WHERE ("t1"."name" = '123' or '1' = '1')
0

如您所见,请求是有效的,但它没有返回任何内容。

让我们尝试相同的查询:

在此处输入图像描述

请求有效。

那么peewee实际上传递给数据库驱动程序的是什么?

如何查看此请求?

python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-04-26 16:15:30 +0000 UTC

使用带有证书的请求时出现“[SSL: CA_MD_TOO_WEAK] ca md too weak (_ssl.c:3862)')”错误

  • 1

我有一个工作脚本,根据证书进入公司网站:

PEM_FILE_NAME = str(DIR / 'ipetrash.pem')

headers = {
    'User-Agent': USER_AGENT,
}

rs = requests.post(URL, data=data, headers=headers, cert=PEM_FILE_NAME, verify=False)

但他停止了工作。我怀疑原因是python3.10中的ssl更新

如何解决?

错误:

Traceback (most recent call last):
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
    conn.connect()
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 416, in connect
    self.sock = ssl_wrap_socket(
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\ssl_.py", line 418, in ssl_wrap_socket
    context.load_cert_chain(certfile, keyfile)
ssl.SSLError: [SSL: CA_MD_TOO_WEAK] ca md too weak (_ssl.c:3862)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 439, in send
    resp = conn.urlopen(
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='jira.compassplus.ru', port=443): Max retries exceeded with url: /pa-reports/ (Caused by SSLError(SSLError(398, '[SSL: CA_MD_TOO_WEAK] ca md too weak (_ssl.c:3862)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\ipetrash\PycharmProjects\SimplePyScripts\current_job_report\get_user_and_deviation_hours.py", line 169, in <module>
    name, deviation_hours = get_user_and_deviation_hours()
  File "C:\Users\ipetrash\PycharmProjects\SimplePyScripts\current_job_report\get_user_and_deviation_hours.py", line 159, in get_user_and_deviation_hours
    content = get_report_context()
  File "C:\Users\ipetrash\PycharmProjects\SimplePyScripts\current_job_report\get_user_and_deviation_hours.py", line 74, in get_report_context
    return _send_data(data)
  File "C:\Users\ipetrash\PycharmProjects\SimplePyScripts\current_job_report\get_user_and_deviation_hours.py", line 58, in _send_data
    rs = session.post(URL, data=data)
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 590, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\ipetrash\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='jira.compassplus.ru', port=443): Max retries exceeded with url: /pa-reports/ (Caused by SSLError(SSLError(398, '[SSL: CA_MD_TOO_WEAK] ca md too weak (_ssl.c:3862)')))
python-3.x
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-10-07 15:14:06 +0000 UTC

默认情况下,使用 bot 处理程序是异步的 (run_async=True)

  • 0

在python-telegram-bot库中,默认情况下按顺序处理请求。

对于并行工作,使用了一个装饰器@run_async,它必须添加到所有处理函数中,例如:

import threading

from telegram import Update
from telegram.ext import Updater, MessageHandler, Filters, CallbackContext
from telegram.ext.dispatcher import run_async

@run_async
def on_request(update: Update, context: CallbackContext):
    message = update.effective_message
    message.reply_text(f'Thread: {threading.current_thread()}')

if __name__ == '__main__':
    updater = Updater(TOKEN)

    dp = updater.dispatcher
    dp.add_handler(MessageHandler(Filters.text, on_request))

    updater.start_polling()
    updater.idle()

但是从版本13开始,装饰器已被弃用,而是库提供在处理程序中使用同名参数Handler或通过方法运行函数Dispatcher.run_async(这有点不同):

TelegramDeprecationWarning: The @run_async decorator is deprecated. Use the `run_async` parameter of your Handler or `Dispatcher.run_async` instead.
  return self.callback(update, context)

使用参数run_async=True有效:

import threading

from telegram import Update
from telegram.ext import Updater, MessageHandler, Filters, CallbackContext

def on_request(update: Update, context: CallbackContext):
    message = update.effective_message
    message.reply_text(f'Thread: {threading.current_thread()}')

if __name__ == '__main__':
    updater = Updater(TOKEN)

    dp = updater.dispatcher
    dp.add_handler(MessageHandler(Filters.text, on_request, run_async=True))

    updater.start_polling()
    updater.idle()

但是切换到参数run_async=True而不是装饰器存在问题@run_async

毕竟,您需要在所有受支持的机器人中执行以下操作:

  1. 删除装饰器导入from telegram.ext.dispatcher import run_async
  2. 删除@run_async所有处理函数中的装饰器
  3. 为所有处理程序指定一个参数run_async=True
    • 顺便说一句,这也适用于添加错误处理程序Dispatcher.add_error_handler的方法

有些机器人可以有大约 50 个处理程序。每个处理程序指定该参数的成本很高。当然,你可以离开旧版本,但是如果你想更新版本,那么你可以在这里做什么呢?

如何不那么痛苦地切换到机器人的异步模式?


PS。

可以通过线程的名称来理解单独线程中的处理函数,当f'Thread: {threading.current_thread()}'.

这里没有线程:

Thread: <Thread(Bot:{id бота}:dispatcher, started 772)>

而这个在流中:

Thread: <Thread(Bot:{id бота}:worker:a36abf98-33a8-4c73-8c02-51a3e5241b5e_0, started 26488)>
python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-09-20 17:14:02 +0000 UTC

从注册表获取启动文件夹(启动)的路径

  • 1

根据文章,启动文件夹(Startup)可以是所有用户的,也可以是当前用户的,加上它们的位置可以通过注册表来改变,所以需要从注册表中获取它们的路径

可能的方式:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Startup
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup

您需要获取它们的绝对路径和文件夹的路径SystemExplorerDisabled(这是从自动运行中删除的那些文件的文件夹)

python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-09-17 16:51:00 +0000 UTC

使用具有不同线程的调度时的线程竞争

  • 1

在我的一个项目中,我注意到一个问题schedule:

  • 我有几个函数在单独的线程中按计划运行(时间不同)
  • 但我注意到其中一个函数被同时调用了两次

我抛出了一个最小的例子,问题得到了证实。函数调用确实是重复的

例子:

import threading
import time

import schedule


def run1():
    print('run1', threading.current_thread())
    time.sleep(2)


def run2():
    print('run2', threading.current_thread())
    time.sleep(3)


def run_schedule(timeout, run):
    schedule.every(timeout).seconds.do(run)

    while True:
        schedule.run_pending()
        time.sleep(1)


threading.Thread(target=run_schedule, args=[5, run1]).start()
threading.Thread(target=run_schedule, args=[7, run2]).start()

结论:

run1 run1 <Thread(Thread-1, started 17828)>
<Thread(Thread-2, started 14008)>
run2 <Thread(Thread-2, started 14008)>
run2 <Thread(Thread-1, started 17828)>

如您所见,每个线程调用一次函数,这会导致run_pending

python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-08-02 17:29:36 +0000 UTC

以flask为例,在web服务器中实现一个API来返回不同类型的数据

  • 1

比如让服务器返回客户端的IP

以html形式返回,如何以json和xml形式返回?

import logging
from flask import Flask, request


app = Flask(__name__)
logging.basicConfig(level=logging.DEBUG)


@app.route('/')
def index():
    return request.remote_addr


if __name__ == '__main__':
    app.run(
        host='0.0.0.0',
        port=5000
    )
python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-07-30 17:54:01 +0000 UTC

使用 QSqlTableModel 和 QSqlQueryModel 加载时,如何控制从 SQLite 接收的数据量?

  • 2

有一个 QSqlTableModel 的示例(对于QSqlQueryModel ,代码几乎相同):

from PyQt5.QtWidgets import QApplication, QTableView
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel, QSqlQuery


db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('database.sqlite')
if not db.open():
    raise Exception(db.lastError().text())

TABLE = 'word2emoji'
query = QSqlQuery()
query.exec(f'SELECT COUNT(*) FROM {TABLE}')
query.next()
TABLE_ROW_COUNT = query.value(0)


def update_window_title():
    mw.setWindowTitle(f'{model.rowCount()} / {TABLE_ROW_COUNT}')


app = QApplication([])

model = QSqlTableModel()
model.rowsInserted.connect(update_window_title)
model.setTable(TABLE)
model.select()

mw = QTableView()
mw.setEditTriggers(QTableView.NoEditTriggers)
mw.setModel(model)
mw.resize(600, 480)
mw.show()

update_window_title()

app.exec()

启动时,从数据库中读取 256 条记录,向下滚动时,会加载新部分

我想控制记录的数量以便显示更少,例如,100

python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-04-22 16:04:17 +0000 UTC

如何解决球互相挂着的问题?

  • 5

可以通过点击场地来创建球,但为了说明问题,我已经提前创建了 2 个球。

运动时,球可以互相进入,斥力机构起作用,这会改变球的运动矢量,但球可能来不及退出,就会出现挂起。或者用户可以将球粘在一起,它们也将在彼此中。

挂断:

在此处输入图像描述

最小的例子:

import math
from random import randint

from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt, QPointF, QTimer


class Ball:
    def __init__(self, pos, r=25):
        self.x = pos.x()
        self.y = pos.y()
        self.r = r

        self.dx = self.dy = 0
        while self.dx == 0 and self.dy == 0:
            self.dx = randint(-3, 3)
            self.dy = randint(-3, 3)

        self.color = QColor(randint(0, 255), randint(0, 255), randint(0, 255))

    @property
    def center(self):
        return self.x, self.y

    @property
    def top(self):
        return self.y - self.r

    @property
    def bottom(self):
        return self.y + self.r

    @property
    def left(self):
        return self.x - self.r

    @property
    def right(self):
        return self.x + self.r

    def move(self):
        self.x += self.dx
        self.y += self.dy

    def is_collide(self, other):
        dx = self.x - other.x
        dy = self.y - other.y
        return math.sqrt(dx * dx + dy * dy) < self.r + other.r

    def draw(self, painter):
        painter.setPen(Qt.black)
        painter.setBrush(self.color)

        painter.drawEllipse(QPointF(self.x, self.y), self.r, self.r)


class Window(QWidget):
    def __init__(self):
        super().__init__()

        self.timer = QTimer()
        self.timer.timeout.connect(self._on_timeout)
        self.timer.setInterval(30)
        self.timer.start()

        self.balls = [
            Ball(QPointF(200, 200)),
            Ball(QPointF(220, 220))
        ]

    def _on_timeout(self):
        for ball in self.balls:
            ball.move()

            # Отталкивание от стены
            if ball.left <= 0 or ball.right >= self.width():
                # Возврат шарика, если тот в стене
                if ball.left < 0:
                    ball.x = 0 + ball.r
                if ball.right > self.width():
                    ball.x = self.width() - ball.r

                ball.dx *= -1

            # Отталкивание от стены
            if ball.top <= 0 or ball.bottom >= self.height():
                # Возврат шарика, если тот в стене
                if ball.top < 0:
                    ball.y = 0 + ball.r
                if ball.bottom > self.height():
                    ball.y = self.height() - ball.r

                ball.dy *= -1

        num = len(self.balls)
        # Проверка столкнования шариков
        for i in range(num):
            for j in range(i + 1, num):
                if self.balls[i].is_collide(self.balls[j]):
                    self.balls[i].dx, self.balls[j].dx = self.balls[j].dx, self.balls[i].dx
                    self.balls[i].dy, self.balls[j].dy = self.balls[j].dy, self.balls[i].dy

        self.update()

    def mouseReleaseEvent(self, event):
        ball = Ball(event.pos())
        self.balls.append(ball)
        self.update()
    
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)

        for ball in self.balls:
            ball.draw(painter)


if __name__ == '__main__':
    app = QApplication([])

    w = Window()
    w.show()

    app.exec()

我认为我们需要确保球在它们设法相互进入的距离内相互排斥,但是算法的想法存在问题。

我扔了它,大约和我想象的一样(红线是球相互进入的距离,箭头是它们矢量的方向):

在此处输入图像描述


UPD。当球在改变矢量之前发生碰撞时,我试图后退一步,但这没有帮助:

    def move_back(self):
        self.x -= self.dx
        self.y -= self.dy
#    ^^^^^^^^^^^^^^^^^^^^^^^
...

        for i in range(num):
            for j in range(i + 1, num):
                if self.balls[i].is_collide(self.balls[j]):
                    self.balls[i].move_back()
                    self.balls[j].move_back()
#                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^

                    self.balls[i].dx, self.balls[j].dx = self.balls[j].dx, self.balls[i].dx
                    self.balls[i].dy, self.balls[j].dy = self.balls[j].dy, self.balls[i].dy

UPD2。更改向量后更进一步也无济于事:

                    self.balls[i].dx, self.balls[j].dx = self.balls[j].dx, self.balls[i].dx
                    self.balls[i].dy, self.balls[j].dy = self.balls[j].dy, self.balls[i].dy

                    self.balls[i].move()
                    self.balls[j].move()

UPD3。可以部分解决问题,但这是一个狂野的拐杖,当它们相互进入时,球会移动很远,这可能会导致连锁反应。在这里,我试图找出球之间的距离有多大,如果它小于一个半径的值,那么两个球都被赋予了运动:

        # Проверка столкнования шариков
        for i in range(num):
            for j in range(i + 1, num):
                if self.balls[i].is_collide(self.balls[j]):
                    dx = self.balls[i].x - self.balls[j].x
                    dy = self.balls[i].y - self.balls[j].y
                    d = math.sqrt(dx * dx + dy * dy)
                    
                    self.balls[i].dx, self.balls[j].dx = self.balls[j].dx, self.balls[i].dx
                    self.balls[i].dy, self.balls[j].dy = self.balls[j].dy, self.balls[i].dy

                    if d < self.balls[i].r * 1.8:
                        self.balls[i].x += -d * (1 if self.balls[i].dx < 0 else -1)
                        self.balls[i].y += -d * (1 if self.balls[i].dy < 0 else -1)

                        self.balls[j].x += -d * (1 if self.balls[j].dx < 0 else -1)
                        self.balls[j].y += -d * (1 if self.balls[j].dy < 0 else -1)

UPD4。也是一个旁路,但这次是由用户创建球。在这里,在鼠标单击事件中,我们检查新球是否与其他球不相交:

    def mouseReleaseEvent(self, event):
        ball = Ball(event.pos())
        if any(x.has_collide(ball) for x in self.balls):
            return

        self.balls.append(ball)
        self.update()
python
  • 2 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-01-15 00:25:54 +0000 UTC

在 Win10 中将窗口移动到第二个虚拟桌面

  • 1

我有几个从启动时运行的 ConEmu 应用程序(8 个)。我用手将它们转移到第二个桌面,这很不方便。

我想自动将窗口移动到第二个桌面。

python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2022-01-05 04:12:04 +0000 UTC

沿 X 轴的标签的美丽位置

  • 2

最好不要经常有值,而是说,在一段时间内。

X轴问题的本质:

在此处输入图像描述

图表创建片段:

      var ctx = document.getElementById("lineChart").getContext("2d");
      var lineChart = new Chart(ctx, {
        type: 'line',
        data: {
          labels: labels,
          datasets: [{
            label: 'Value',
            lineTension: 0,
            borderColor: "#3e95cd",
            data: data,
          }],
        },
        options: {
          scales: {
            xAxes: [{
              type: 'time',
              time: {
                unit: 'day',
                tooltipFormat: 'DD/MM/YYYY HH:mm:ss',
                displayFormats: {
                  day: 'DD/MM'
                }
              },
              distribution: 'linear'
            }]
          },
          tooltips: {
            callbacks: {
              afterLabel: function(tooltipItem, data) {
                return window.value_by_human[tooltipItem.yLabel];
              }
            }
          }
        }
      });
    }

完整示例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js"></script>

  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap-grid.css">
</head>

<body>

  <div class="container-fluid">
    <div class="row m-2">
      <div class="col table-responsive">
        <table id="people_reacheds" class="table table-hover" style="display:none">
          <tbody>
            <tr>
              <th scope="col" class="text-white bg-dark">DATE:</th>

              <td class="date" title="31/12/2020 04:40:21" date_iso="2020-12-31T04:40:21.935162">31/12/2020</td>

              <td class="date" title="30/12/2020 08:46:43" date_iso="2020-12-30T08:46:43.711484">30/12/2020</td>

              <td class="date" title="24/12/2020 20:09:33" date_iso="2020-12-24T20:09:33.091634">24/12/2020</td>

              <td class="date" title="17/12/2020 21:39:33" date_iso="2020-12-17T21:39:33.601907">17/12/2020</td>

              <td class="date" title="14/12/2020 23:28:48" date_iso="2020-12-14T23:28:48.422827">14/12/2020</td>

              <td class="date" title="07/12/2020 23:28:46" date_iso="2020-12-07T23:28:46.715471">07/12/2020</td>

              <td class="date" title="30/11/2020 23:28:44" date_iso="2020-11-30T23:28:44.779245">30/11/2020</td>

              <td class="date" title="23/11/2020 23:28:42" date_iso="2020-11-23T23:28:42.873055">23/11/2020</td>

              <td class="date" title="16/11/2020 23:28:39" date_iso="2020-11-16T23:28:39.656186">16/11/2020</td>

              <td class="date" title="15/11/2020 07:04:26" date_iso="2020-11-15T07:04:26.035520">15/11/2020</td>

              <td class="date" title="08/11/2020 07:04:24" date_iso="2020-11-08T07:04:24.615554">08/11/2020</td>

              <td class="date" title="01/11/2020 07:04:22" date_iso="2020-11-01T07:04:22.667045">01/11/2020</td>

              <td class="date" title="25/10/2020 07:04:20" date_iso="2020-10-25T07:04:20.926777">25/10/2020</td>

              <td class="date" title="19/10/2020 18:41:20" date_iso="2020-10-19T18:41:20.984605">19/10/2020</td>

              <td class="date" title="12/10/2020 18:41:19" date_iso="2020-10-12T18:41:19.241482">12/10/2020</td>

              <td class="date" title="10/10/2020 03:37:29" date_iso="2020-10-10T03:37:29.812292">10/10/2020</td>

              <td class="date" title="03/10/2020 03:37:28" date_iso="2020-10-03T03:37:28.622003">03/10/2020</td>

              <td class="date" title="01/10/2020 20:36:52" date_iso="2020-10-01T20:36:52.072139">01/10/2020</td>

              <td class="date" title="29/09/2020 23:20:36" date_iso="2020-09-29T23:20:36.477150">29/09/2020</td>

              <td class="date" title="22/09/2020 23:20:35" date_iso="2020-09-22T23:20:35.457498">22/09/2020</td>

              <td class="date" title="15/09/2020 23:20:33" date_iso="2020-09-15T23:20:33.323655">15/09/2020</td>

              <td class="date" title="08/09/2020 23:20:30" date_iso="2020-09-08T23:20:30.532326">08/09/2020</td>

              <td class="date" title="03/09/2020 09:42:13" date_iso="2020-09-03T09:42:13.429384">03/09/2020</td>

              <td class="date" title="27/08/2020 09:42:10" date_iso="2020-08-27T09:42:10.154810">27/08/2020</td>

              <td class="date" title="20/08/2020 09:42:08" date_iso="2020-08-20T09:42:08.121289">20/08/2020</td>

              <td class="date" title="13/08/2020 09:42:06" date_iso="2020-08-13T09:42:06.618824">13/08/2020</td>

              <td class="date" title="11/08/2020 11:26:23" date_iso="2020-08-11T11:26:23.266438">11/08/2020</td>

              <td class="date" title="05/08/2020 02:23:43" date_iso="2020-08-05T02:23:43.656755">05/08/2020</td>

              <td class="date" title="29/07/2020 02:23:41" date_iso="2020-07-29T02:23:41.906773">29/07/2020</td>

              <td class="date" title="28/07/2020 11:13:58" date_iso="2020-07-28T11:13:58.412371">28/07/2020</td>

              <td class="date" title="23/07/2020 11:48:07" date_iso="2020-07-23T11:48:07.281745">23/07/2020</td>

              <td class="date" title="16/07/2020 11:48:05" date_iso="2020-07-16T11:48:05.935886">16/07/2020</td>

              <td class="date" title="09/07/2020 11:48:02" date_iso="2020-07-09T11:48:02.151930">09/07/2020</td>

              <td class="date" title="02/07/2020 11:48:00" date_iso="2020-07-02T11:48:00.163430">02/07/2020</td>

              <td class="date" title="30/06/2020 02:24:04" date_iso="2020-06-30T02:24:04.733718">30/06/2020</td>

              <td class="date" title="28/06/2020 03:58:20" date_iso="2020-06-28T03:58:20.680849">28/06/2020</td>

              <td class="date" title="20/06/2020 22:15:35" date_iso="2020-06-20T22:15:35.938966">20/06/2020</td>

              <td class="date" title="20/06/2020 03:17:46" date_iso="2020-06-20T03:17:46.741782">20/06/2020</td>

              <td class="date" title="19/06/2020 09:34:34" date_iso="2020-06-19T09:34:34.784125">19/06/2020</td>

              <td class="date" title="12/06/2020 09:34:33" date_iso="2020-06-12T09:34:33.270590">12/06/2020</td>

              <td class="date" title="09/06/2020 09:30:47" date_iso="2020-06-09T09:30:47.568126">09/06/2020</td>

              <td class="date" title="02/06/2020 09:30:46" date_iso="2020-06-02T09:30:46.175859">02/06/2020</td>

              <td class="date" title="28/05/2020 23:16:36" date_iso="2020-05-28T23:16:36.354410">28/05/2020</td>

              <td class="date" title="21/05/2020 23:16:34" date_iso="2020-05-21T23:16:34.626614">21/05/2020</td>

              <td class="date" title="15/05/2020 02:23:09" date_iso="2020-05-15T02:23:09.083082">15/05/2020</td>

              <td class="date" title="13/05/2020 11:52:16" date_iso="2020-05-13T11:52:16.130476">13/05/2020</td>

              <td class="date" title="10/05/2020 12:31:42" date_iso="2020-05-10T12:31:42.618969">10/05/2020</td>

              <td class="date" title="06/05/2020 03:10:43" date_iso="2020-05-06T03:10:43.009306">06/05/2020</td>

              <td class="date" title="29/04/2020 03:10:41" date_iso="2020-04-29T03:10:41.236857">29/04/2020</td>

              <td class="date" title="22/04/2020 03:10:39" date_iso="2020-04-22T03:10:39.274119">22/04/2020</td>

              <td class="date" title="17/04/2020 18:12:27" date_iso="2020-04-17T18:12:27.117513">17/04/2020</td>

              <td class="date" title="16/04/2020 00:27:37" date_iso="2020-04-16T00:27:37.021293">16/04/2020</td>

              <td class="date" title="15/04/2020 21:37:02" date_iso="2020-04-15T21:37:02.737052">15/04/2020</td>

              <td class="date" title="08/04/2020 21:37:00" date_iso="2020-04-08T21:37:00.921747">08/04/2020</td>

              <td class="date" title="08/04/2020 02:24:51" date_iso="2020-04-08T02:24:51.791654">08/04/2020</td>

              <td class="date" title="31/03/2020 23:13:35" date_iso="2020-03-31T23:13:35.115623">31/03/2020</td>

              <td class="date" title="24/03/2020 23:13:33" date_iso="2020-03-24T23:13:33.876696">24/03/2020</td>

              <td class="date" title="23/03/2020 01:13:03" date_iso="2020-03-23T01:13:03.575580">23/03/2020</td>

              <td class="date" title="16/03/2020 01:13:01" date_iso="2020-03-16T01:13:01.631929">16/03/2020</td>

              <td class="date" title="09/03/2020 01:13:00" date_iso="2020-03-09T01:13:00.378092">09/03/2020</td>

              <td class="date" title="02/03/2020 01:12:58" date_iso="2020-03-02T01:12:58.064142">02/03/2020</td>

              <td class="date" title="24/02/2020 01:12:56" date_iso="2020-02-24T01:12:56.776900">24/02/2020</td>

              <td class="date" title="18/02/2020 15:35:55" date_iso="2020-02-18T15:35:55.790940">18/02/2020</td>

              <td class="date" title="11/02/2020 15:35:53" date_iso="2020-02-11T15:35:53.823624">11/02/2020</td>

              <td class="date" title="04/02/2020 15:35:52" date_iso="2020-02-04T15:35:52.352451">04/02/2020</td>

              <td class="date" title="03/02/2020 23:32:19" date_iso="2020-02-03T23:32:19.980404">03/02/2020</td>

              <td class="date" title="29/01/2020 21:19:55" date_iso="2020-01-29T21:19:55.745535">29/01/2020</td>

              <td class="date" title="27/01/2020 03:08:28" date_iso="2020-01-27T03:08:28.967907">27/01/2020</td>

              <td class="date" title="22/01/2020 22:41:19" date_iso="2020-01-22T22:41:19.906786">22/01/2020</td>

              <td class="date" title="17/01/2020 00:08:45" date_iso="2020-01-17T00:08:45.138537">17/01/2020</td>

              <td class="date" title="13/01/2020 21:50:43" date_iso="2020-01-13T21:50:43.761530">13/01/2020</td>

              <td class="date" title="07/01/2020 03:28:01" date_iso="2020-01-07T03:28:01.838701">07/01/2020</td>

              <td class="date" title="06/01/2020 23:06:19" date_iso="2020-01-06T23:06:19.051112">06/01/2020</td>

              <td class="date" title="03/01/2020 13:57:24" date_iso="2020-01-03T13:57:24.987168">03/01/2020</td>

              <td class="date" title="30/12/2019 04:06:02" date_iso="2019-12-30T04:06:02.288590">30/12/2019</td>

              <td class="date" title="27/12/2019 17:28:35" date_iso="2019-12-27T17:28:35.826498">27/12/2019</td>

              <td class="date" title="23/12/2019 23:11:08" date_iso="2019-12-23T23:11:08.050501">23/12/2019</td>

              <td class="date" title="16/12/2019 23:11:06" date_iso="2019-12-16T23:11:06.384122">16/12/2019</td>

              <td class="date" title="11/12/2019 05:33:06" date_iso="2019-12-11T05:33:06.753995">11/12/2019</td>

              <td class="date" title="05/12/2019 10:02:38" date_iso="2019-12-05T10:02:38.337612">05/12/2019</td>

              <td class="date" title="28/11/2019 10:02:36" date_iso="2019-11-28T10:02:36.291164">28/11/2019</td>

              <td class="date" title="21/11/2019 10:02:33" date_iso="2019-11-21T10:02:33.813003">21/11/2019</td>

              <td class="date" title="14/11/2019 06:14:40" date_iso="2019-11-14T06:14:40.750659">14/11/2019</td>

              <td class="date" title="07/11/2019 21:21:10" date_iso="2019-11-07T21:21:10.453900">07/11/2019</td>

            </tr>
            <tr>
              <th scope="col" class="text-white bg-dark">VALUE:</th>

              <td class="value" title="1000000">~1.0m</td>

              <td class="value" title="999000">~999k</td>

              <td class="value" title="991000">~991k</td>

              <td class="value" title="978000">~978k</td>

              <td class="value" title="972000">~972k</td>

              <td class="value" title="959000">~959k</td>

              <td class="value" title="946000">~946k</td>

              <td class="value" title="933000">~933k</td>

              <td class="value" title="920000">~920k</td>

              <td class="value" title="916000">~916k</td>

              <td class="value" title="903000">~903k</td>

              <td class="value" title="891000">~891k</td>

              <td class="value" title="879000">~879k</td>

              <td class="value" title="870000">~870k</td>

              <td class="value" title="859000">~859k</td>

              <td class="value" title="855000">~855k</td>

              <td class="value" title="844000">~844k</td>

              <td class="value" title="842000">~842k</td>

              <td class="value" title="839000">~839k</td>

              <td class="value" title="828000">~828k</td>

              <td class="value" title="818000">~818k</td>

              <td class="value" title="809000">~809k</td>

              <td class="value" title="802000">~802k</td>

              <td class="value" title="795000">~795k</td>

              <td class="value" title="788000">~788k</td>

              <td class="value" title="781000">~781k</td>

              <td class="value" title="779000">~779k</td>

              <td class="value" title="772000">~772k</td>

              <td class="value" title="765000">~765k</td>

              <td class="value" title="764000">~764k</td>

              <td class="value" title="759000">~759k</td>

              <td class="value" title="751000">~751k</td>

              <td class="value" title="743000">~743k</td>

              <td class="value" title="734000">~734k</td>

              <td class="value" title="732000">~732k</td>

              <td class="value" title="729000">~729k</td>

              <td class="value" title="721000">~721k</td>

              <td class="value" title="720000">~720k</td>

              <td class="value" title="719000">~719k</td>

              <td class="value" title="710000">~710k</td>

              <td class="value" title="706000">~706k</td>

              <td class="value" title="696000">~696k</td>

              <td class="value" title="690000">~690k</td>

              <td class="value" title="678000">~678k</td>

              <td class="value" title="666000">~666k</td>

              <td class="value" title="663000">~663k</td>

              <td class="value" title="659000">~659k</td>

              <td class="value" title="652000">~652k</td>

              <td class="value" title="640000">~640k</td>

              <td class="value" title="627000">~627k</td>

              <td class="value" title="619000">~619k</td>

              <td class="value" title="616000">~616k</td>

              <td class="value" title="615000">~615k</td>

              <td class="value" title="602000">~602k</td>

              <td class="value" title="601000">~601k</td>

              <td class="value" title="589000">~589k</td>

              <td class="value" title="578000">~578k</td>

              <td class="value" title="575000">~575k</td>

              <td class="value" title="566000">~566k</td>

              <td class="value" title="556000">~556k</td>

              <td class="value" title="547000">~547k</td>

              <td class="value" title="538000">~538k</td>

              <td class="value" title="531000">~531k</td>

              <td class="value" title="521000">~521k</td>

              <td class="value" title="512000">~512k</td>

              <td class="value" title="511000">~511k</td>

              <td class="value" title="505000">~505k</td>

              <td class="value" title="501000">~501k</td>

              <td class="value" title="496000">~496k</td>

              <td class="value" title="489000">~489k</td>

              <td class="value" title="485000">~485k</td>

              <td class="value" title="479000">~479k</td>

              <td class="value" title="478000">~478k</td>

              <td class="value" title="476000">~476k</td>

              <td class="value" title="474000">~474k</td>

              <td class="value" title="473000">~473k</td>

              <td class="value" title="467000">~467k</td>

              <td class="value" title="459000">~459k</td>

              <td class="value" title="452000">~452k</td>

              <td class="value" title="444000">~444k</td>

              <td class="value" title="435000">~435k</td>

              <td class="value" title="427000">~427k</td>

              <td class="value" title="420000">~420k</td>

              <td class="value" title="414000">~414k</td>

            </tr>
          </tbody>
        </table>
      </div>
    </div>

    <div class="row">
      <div class="col">
        <div class="container">
          <canvas id="lineChart"></canvas>
        </div>
      </div>
    </div>
  </div>

  <script>
    window.value_by_human = new Map();

    function fill_chart(row) {
      window.value_by_human.clear();

      let labels = [];
      let data = [];

      let data_items = $('#people_reacheds > tbody > tr:nth-of-type(1) > td');
      let value_items = $('#people_reacheds > tbody > tr:nth-of-type(2) > td');

      for (let i = 0; i < data_items.length; i++) {
        let td_data = $(data_items[i]);
        let td_value = $(value_items[i]);

        let date_iso = td_data.attr('date_iso');
        let value = parseInt(td_value.attr('title'));

        window.value_by_human[value] = td_value.text();

        labels.push(date_iso);
        data.push({
          x: date_iso,
          y: value
        });
      }

      var ctx = document.getElementById("lineChart").getContext("2d");
      var lineChart = new Chart(ctx, {
        type: 'line',
        data: {
          labels: labels,
          datasets: [{
            label: 'Value',
            lineTension: 0,
            borderColor: "#3e95cd",
            data: data,
          }],
        },
        options: {
          scales: {
            xAxes: [{
              type: 'time',
              time: {
                unit: 'day',
                tooltipFormat: 'DD/MM/YYYY HH:mm:ss',
                displayFormats: {
                  day: 'DD/MM'
                }
              },
              distribution: 'linear'
            }]
          },
          tooltips: {
            callbacks: {
              afterLabel: function(tooltipItem, data) {
                return window.value_by_human[tooltipItem.yLabel];
              }
            }
          }
        }
      });
    }

    $(document).ready(function() {
      fill_chart();
    });
  </script>

</body>

</html>

javascript
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-08-08 02:53:37 +0000 UTC

旧的 youtube 视频按需搜索脚本坏了

  • 6

我有这样一个用于在 YouTube 上搜索的脚本(我在电报机器人中使用它):

import urllib
import re
import random

link = urllib.parse.urlencode({"search_query": msg})
content = urllib.request.urlopen("https://www.youtube.com/results?" + link)
search_results = re.findall('href=\"\/watch\?v=(.*?)\"', content.read().decode())
if len(search_results) > 0:
    search_results = search_results[0:9:1]
    choice_f = random.choice(search_results)
    yt_link = "https://www.youtube.com/watch?v="+choice_f

他不整洁,他通过正则表达式工作,总的来说,他不是我的:)

现在它没有返回任何东西,我想弄清楚发生了什么变化以及如何修复它。

python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-08-02 19:39:37 +0000 UTC

电报机器人如何从用户那里获取电话号码和位置?

  • 0

我想发送联系人和位置,例如,通过 上的按钮ReplyKeyboardMarkup。

最小的例子:

# pip install python-telegram-bot
from telegram import Update, ReplyKeyboardMarkup, KeyboardButton
from telegram.ext import Updater, MessageHandler, CommandHandler, Filters, CallbackContext

import config

...

def on_request(update: Update, context: CallbackContext):
    message = update.message

    message.reply_text(
        'Echo: ' + message.text
    )


def main():
    updater = Updater(
        config.TOKEN,
        use_context=True
    )

    dp = updater.dispatcher

    dp.add_handler(CommandHandler('start', on_start))
    dp.add_handler(MessageHandler(Filters.text, on_request))
    
    updater.start_polling()
    
    updater.idle()


if __name__ == '__main__':
    main()
python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-07-09 00:56:14 +0000 UTC

如何在pygame中检查圆形精灵的碰撞?

  • 3

我将ball_1随机放置在屏幕上,ball_2由鼠标光标控制,如何检查它们是否发生碰撞?

例子:

import sys
import random

import pygame


BLACK = (  0,   0,   0)
WHITE = (255, 255, 255)


class Ball(pygame.sprite.Sprite):
    def __init__(self, size, pos=(0, 0), color=WHITE):
        super().__init__()

        self.image = pygame.Surface([size, size], pygame.SRCALPHA)
        pygame.draw.ellipse(self.image, color, [0, 0, size, size])

        # Для правильной работы функции pygame.sprite.Group.draw
        self.rect = self.image.get_rect()
        self.rect.center = pos


pygame.init()

color = BLACK
screen = pygame.display.set_mode((600, 600))
clock = pygame.time.Clock()
x, y = random.randrange(0, 500), random.randrange(0, 500)

fnt = pygame.font.Font(None, 40)

ball_1 = Ball(size=100, pos=(x, y), color=BLACK)
ball_2 = Ball(size=50, color=BLACK)

balls = pygame.sprite.Group()
balls.add(ball_1)
balls.add(ball_2)


while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

        elif event.type == pygame.MOUSEMOTION:
            ball_2.rect.center = event.pos
            break

    screen.fill(WHITE)
    balls.draw(screen)

    text = fnt.render("Collision!", True, color)
    screen.blit(text, (260, 20))

    # Как проверить, что ball_1 и ball_2 пересеклись?
    if ...:
        color = BLACK
    else:
        color = WHITE

    pygame.display.update()
    clock.tick(60)
python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-07-03 14:29:12 +0000 UTC

如何获取硒中元素的所有属性?

  • 1

关于主题的问题。

通过get_attribute(name)方法可以获取属性值,但是需要知道它的名字,所以该方法不适合。


作为测试示例,我建议显示input_el元素的所有属性:

# pip install selenium
from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10)  # seconds
driver.get('https://ru.stackoverflow.com/')

input_el = driver.find_element_by_css_selector('input.s-input__search')
python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-06-27 00:20:21 +0000 UTC

如何在 Firefox 中查看通过 websocket 发送的消息?

  • 0

我有 Firefox,并且有一个使用 websockets 的网站:http ://websocket.org/echo.html

此外,还需要了解在浏览器和服务器之间的 websocket 上传输了哪些消息。


测试样表:

在此处输入图像描述

websocket
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-06-15 23:25:39 +0000 UTC

通过 lambda 拆分字符串/列表

  • 2

如何使用 lambda 拆分字符串/列表?

例如:

1.我有一个字符串123-456-789,我为它定义了一个函数lambda x: x == '-'并得到[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

2.我有一个列表['123', '-', '456', '-', '789'],我为它定义了一个函数lambda x: x == '-'并得到[['123'], ['456'], ['789']]

3.我有一个单词列表,['Сообщество', 'здесь', ',', 'чтобы', 'помочь', 'вам', 'с', 'конкретными', 'проблемами', 'по', 'программированию', ',', 'алгоритмам', ',', 'языкам', 'программирования', '.']我想删除标点符号,所以我设置lambda x: x in ',.'了结果:

[['社区','这里'],['to','帮助','你','与','具体','问题','on','编程'],['算法'] , ['语言', '编程']]

没有实现的例子:

items = '123-456-789'

parts = split_by_func(items, lambda x: x == '-')
print(parts)
# [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']
python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-12-31 19:20:02 +0000 UTC

JSON中如何替换空值?

  • 2

有一个缺少值的json 。任何嵌套级别都可以,但您需要将所有内容替换null为[].

源json:

{
    "Action-bar": null,
    "Action": "Action",
    "Children": [
        {"Action": null},
        {"Action": true},
        {"Action": "false"},
        {"Action": {"need": null}}
    ],
    "RGB-bar": null
}
import json

genre_translate = json.load(
    open('genre_translate.json', encoding='utf-8')
)
...

需要获得:

{
    "Action-bar": [],
    "Action": "Action",
    "Children": [
        {
            "Action": []
        },
        {
            "Action": true
        },
        {
            "Action": "false"
        },
        {
            "Action": {
                "need": []
            }
        }
    ],
    "RGB-bar": []
}
python
  • 1 个回答
  • 10 Views
Martin Hope
gil9red
Asked: 2020-10-31 15:35:58 +0000 UTC

退出和退出有区别吗?

  • 6

type函数表明quit和exit是同一个对象:

print(type(quit), type(exit))
# <class '_sitebuiltins.Quitter'> <class '_sitebuiltins.Quitter'>

id函数返回不同的标识符:

print(hex(id(quit)), hex(id(exit)))
# 0x18caae42b70 0x18caae50630

帮助函数返回相同的描述:

Help on Quitter in module _sitebuiltins object:

class Quitter(builtins.object)
 |  Methods defined here:
 |  
 |  __call__(self, code=None)
 |      Call self as a function.
 |  
 |  __init__(self, name, eof)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  __repr__(self)
 |      Return repr(self).
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

在文档中,这两个函数都有一个共同的描述

quit(code=None)
exit(code=None)

打印时打印消息的对象,例如“使用 quit() 或 Ctrl-D(即 EOF)退出”,并在调用时使用指定的退出代码引发 SystemExit。


但是应该有区别吗?

python
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5