RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

andreymal's questions

Martin Hope
andreymal
Asked: 2024-09-25 00:57:09 +0000 UTC

如何使图片链接占据所需的最小面积?

  • 7

我有一个先前已知大小的容器,其中有一个链接,其中包含先前未知大小的图像。图片可以比容器大或小。

我想将图像放入容器中 -object-fit: contain这很好用,但问题是可点击的链接保留在边缘周围的空白区域中,因为空白区域被视为图像的一部分,而图像位于链接内部。

是否可以以某种方式调整样式,使链接区域与图像的可见区域完全匹配,并且没有可点击的空间?

在下面的例子中,垂直图像左右的空格是不可点击的,因为我没有设置它width并且图像没有水平拉伸,但是水平图像上方和下方的空格是可点击的,因为我指定了它height: 100%用于拉伸,但是如何在不破坏链接的情况下拉伸图像height,我想不出一个。

愚蠢的替换height: 100%适用max-height: 100%于大图片(缩小到所需的尺寸),但不适用于小图片,因为它们没有理由拉伸。

.image-list {
  margin: 0;
  list-style: none;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
}

/* Тот самый контейнер заранее известного размера */
.image-item {
  width: 652px;
  height: 652px;
  text-align: center;
  margin: 4px;
  background-color: black;
  border: 4px solid #555;
}

/* Размер картинки в общем случае неизвестен */
.image {
  vertical-align: middle;
  max-width: 100%;
  height: 100%;
  object-fit: contain;
}
<ul class="image-list">
  <li class="image-item">
    <a href="#" class="image-link">
      <img src="https://isstatic.askoverflow.dev/4hPGizOL.jpg" class="image">
    </a>
  </li>
  <li class="image-item">
    <a href="#" class="image-link">
      <img src="https://isstatic.askoverflow.dev/gYCiAKHI.jpg" class="image">
    </a>
  </li>
</ul>

css
  • 2 个回答
  • 60 Views
Martin Hope
andreymal
Asked: 2022-03-12 00:40:17 +0000 UTC

是否可以等待 <video> 完全加载?

  • 5

我有一个视频文件(例如,25 MiB)-我事先知道它很小并且可以放入缓存中,但是为了使任务复杂化,我们假设事先不知道它的持续时间(另一个示例,也是 25 MiB )。例如,我想等待它完全加载,然后才开始播放,这样就可以保证没有任何延迟。

令我惊讶的是,我发现标签<video>缺少一个事件load。有事件和progress,但不清楚如何处理它们。我曾经尝试通过比较时长来计算下载结束,但是,首先,这种方法的可靠性存在疑问,其次,如果持续时间基本未知,它将无法工作。loadeddatacanplaythrough

对此,我有疑问:

  • 浏览器会真正将视频文件下载到最后,还是只是稍微缓冲一下?
  • 如果是这样,是否可以捕捉下载完成的那一刻?
  • 如果没有,是否可以捕捉浏览器停止进一步下载的时刻?(UPD:我找到了一个事件suspend,但是关于满载的问题仍然是相关的)

以下是两个相同的片段,其中包含不同的视频文件供您使用。

const video = document.getElementById("video");
video.onload = () => console.log("onload не срабатывает");
video.onprogress = (event) => {
  console.log(`progress ${event.timeStamp}, duration: ${video.duration}`);
};
video.onloadeddata = () => console.log("loadeddata");
video.oncanplaythrough = () => console.log("canplaythrough");
video.onsuspend = () => console.log("suspend");
<video
  id="video"
  src="https://andreymal.org/files/bbb-test/bbb-with-duration.mp4"
  controls
  preload="auto"
  style="margin-bottom: 100vh">
</video>

const video = document.getElementById("video");
video.onload = () => console.log("onload не срабатывает");
video.onprogress = (event) => {
  console.log(`progress ${event.timeStamp}, duration: ${video.duration}`);
};
video.onloadeddata = () => console.log("loadeddata");
video.oncanplaythrough = () => console.log("canplaythrough");
video.onsuspend = () => console.log("suspend");
<video
  id="video"
  src="https://andreymal.org/files/bbb-test/bbb-without-duration.mp4"
  controls
  preload="auto"
  style="margin-bottom: 100vh">
</video>

javascript
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-08-24 23:53:22 +0000 UTC

位置=/ 不起作用

  • 0

我想为主页注册特殊参数。

文档说:

位置 = / { [ 配置 A ] }

对于“/”提示,将选择配置 A

以下是我为自己写的:

$ cat /etc/nginx/sites-enabled/test.conf
server {
  listen 80;

  server_name example.ru;

  location = / {
    root /var/www/test;
    expires 0;
  }
}

$ sudo systemctl restart nginx

所有文件都在那里并且权限正确:

$ ls -alh /var/www/test
итого 12K
drwxr-xr-x  2 root root     4,0K авг 24 18:45 .
drwxr-xr-x  9 root www-data 4,0K авг 24 18:45 ..
-rw-r--r--  1 root root       19 авг 24 18:45 index.html

$ cat /var/www/test/index.html
<h1>It works!</h1>

但是在浏览器中,我看到了一个标准的 nginx 页面。

缓存自然被清除,甚至尝试过隐身模式。

为什么?

在此处输入图像描述

nginx
  • 3 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-07-26 01:36:29 +0000 UTC

如何从 7z 存档中手动读取元数据?

  • 5

我的任务是手动读取 7z 档案,而不使用 7z 实用程序。它们似乎是使用默认设置创建的,因此很可能版本 4 档案中的数据是使用 LZMA2 算法压缩的(在版本 3 档案中,显然是使用 LZMA1 算法),并且元数据在 LZMA1 中压缩(根据文档)。

使用科学戳方法,我设法从一些(但由于某种原因不是全部)档案中读取数据:

import lzma
with open('archive.7z', 'rb') as fp:
    fp.seek(32)  # Пропускаем 7z-заголовок
    data = lzma.LZMAFile(fp, format=lzma.FORMAT_RAW, filters=[{"id": lzma.FILTER_LZMA2}]).read()

但是,我不知道如何读取元数据。(是否应用了任何特殊过滤器?)

你能告诉我它们是如何编码的以及需要为 lzma 解压缩器设置哪些参数才能读取元数据吗?

7z
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-09-24 07:27:39 +0000 UTC

dd:为什么不能直接取和交换bs和count的值呢?

  • 4

让我们创建几个包含任何内容的文件,例如,大小为 2048 和 115424 字节:

$ truncate -s 2048 f1
$ truncate -s 115424 f2

让我们编写一个脚本,打印这些文件和另外 12465440 个来自 /dev/zero 的字节:

#!/bin/sh
cat f1 f2
dd if=/dev/zero bs=12465440 count=1 2>/dev/null

学校的算术知识告诉我们,这个脚本应该输出12582912字节:

$ ./script.sh | dd > something
24575+2 записей получено
24576+0 записей отправлено
12582912 байт (13 MB, 12 MiB) скопирован, 0,268635 s, 46,8 MB/s

如果我们指定 bs=1 count=12582912,那么按照同样的算法,什么都不会改变:

$ ./script.sh | dd bs=1 count=12582912 > something
12582912+0 записей получено
12582912+0 записей отправлено
12582912 байт (13 MB, 12 MiB) скопирован, 36,3194 s, 346 kB/s

该产品不应该改变乘法器的位置,但由于某种原因Linux不同意我的看法:

$ ./script.sh | dd bs=12582912 count=1 > something
0+1 записей получено
0+1 записей отправлено
2048 байт (2,0 kB, 2,0 KiB) скопирован, 0,00340212 s, 602 kB/s

如果您尝试再运行此命令几次,那么算法将开始完全发疯:

$ ./script.sh | dd bs=12582912 count=1 > something
0+1 записей получено
0+1 записей отправлено
117472 байт (117 kB, 115 KiB) скопирован, 0,00399192 s, 29,4 MB/s

发生了什么?为什么最后一条命令没有输出 12582912 字节?神秘数字 2048 和 117472 的由来是什么?

linux
  • 4 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-09-23 20:45:19 +0000 UTC

在 systemd loginctl 中配置访问

  • 2

我们这个新奇的 systemd 将我所有的秘密泄露给了外人:

guest@andreymal:~$ loginctl session-status 32757
32757 - andreymal (1000)
           Since: Wed 2019-09-04 02:09:11 MSK; 2 weeks 5 days ago
          Leader: 2535
          Remote: 127.0.0.1
         Service: sshd; type tty; class user
           State: closing
            Unit: session-32757.scope
                  ├─19648 SCREEN -dmS supersecret bash -c ./secretprogram.py --password correcthorsebatterystaple
                  ├─19649 bash -c ./secretprogram.py --password correcthorsebatterystaple
                  └─19650 ./secretprogram.py --password correcthorsebatterystaple

为什么非管理员用户会害怕阅读其他人的会话?systemd-logind(以及一般的 systemd)是否在某处设置了访问这些内容的设置?或者这是波特林的狡猾计划,迫使每个人都切换到容器?

linux
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-08-04 07:00:49 +0000 UTC

DCD0 字符是如何来自 D0 字节的?

  • 2

我有一个文件,其名称包含没有几个字节的悬空字节\xd0:

touch `echo -en 'test\xd0.txt'`

当我通过 python 查找目录中的文件列表时,它会为我将其解码为这样的 unicode 字符串:

>>> os.listdir('.')
['test\udcd0.txt']

通过这个 unicode 字符串,它允许我使用该文件:

>>> open('test\udcd0.txt', 'r').read()
''  # (логичный результат для пустого файла)

但是在这里,例如,它不再打印它:

>>> print('test\udcd0.txt')
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd0' in position 4: surrogates not allowed

\xd0问题:结果如何\udcd0?某处是否有明确定义的算法,或者它只是一个 CPython 实现细节?我可以以类似的方式自己编码和解码这些破碎的字符串吗?


为了进行比较,Python 2 中的 listdir(默认情况下所有字符串都是字节字符串)给出了我'test\xd0.txt',而不会以任何方式破坏存储在文件系统上的文件名。

python
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-07-11 03:32:25 +0000 UTC

事件实现的 asyncio.Event 和 asyncio.Future 之间的区别

  • 4

在 python 异步中,有asyncio.Event,它允许您通知相邻任务有关某些事件:

import asyncio
event = asyncio.Event()

async def task1():
    event.set()

async def task2():
    while True:
        await event.wait()
        event.clear()
        # do_some_work()

但是,对于相同的任务,您可以尝试简单地使用asyncio.Future:

import asyncio
event = asyncio.Future()

async def task1():
    if not event.done():
        event.set_result(True)

async def task2():
    global event
    while True:
        await event
        event = asyncio.Future()  # clear
        # do_some_work()

这些示例乍一看是等效的,并且工作方式相同。

但是,查看threading.Event 的实现,我看到其中使用了几个未来self._waiters = collections.deque(),并且为每个服务员创建了一个单独的未来。

然而,毕竟,你似乎可以多次等待同一个未来。所以,对于所有等待的人来说,一个未来就足够了。

或不?

简而言之,为什么asyncio.Event这么复杂?为什么它有双端队列和几个期货?asyncio.Event如果我使用一个单一的未来,我会遇到什么样的 rake ,就像在第二个例子中一样?

python
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-06-18 22:35:39 +0000 UTC

UUID 和 GUID 有什么区别?

  • 21

我经常看到这两个缩写,我想知道它们有什么区别?

терминология
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-04-26 17:15:42 +0000 UTC

禁用“请删除安装介质,然后按 Enter”

  • 1

如您所知,当您关闭 LiveCD/LiveUSB 时,Ubuntu 会显示以下消息:

是否有禁用此功能的选项?我需要远程重启计算机(我在加载的 LiveUSB 中设置了 SSH),根本没有人可以按 Enter。

linux
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-03-18 22:50:59 +0000 UTC

错误:无法启用逗留:没有这样的过程

  • 0

我想在 Ubuntu Server 18.04 上运行 lingering,但由于某种原因它没有启动:

# loginctl enable-linger andreymal
Could not enable linger: No such process

在桌面 Ubuntu 和 Arch 中,一切正常。

我试图阅读journalctl -f,但没有关于此的一行。

我没有找到任何内置调试,我不知道如何阅读 strace(但如果有人感兴趣,那么这里:https ://pastebin.com/YVHdrC0K )

如何理解缺失的内容和需要修复的内容?

linux
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-10-15 17:28:54 +0000 UTC

主管+nginx:tail -f 不工作

  • 1

它supervisord位于端口 9001。对其 Web 界面的访问是通过 nginx 组织的,如下所示:

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name supervisor.example.com;

  location / {
    proxy_pass http://127.0.0.1:9001;
    include proxy_params;
    proxy_read_timeout 120s;
  }
}

Supervisor Web 界面具有tail -f允许您实时监控日志的功能。

如果您tail -f通过类似的链接直接从主管打开http://example.com:9001/logtail/service_name,那么一切正常。(在实际生产中,出于安全原因,当然不能从 Internet 访问 9001 端口)

然而,同样的事情,但通过 nginx: https://supervisor.example.com/logtail/service_name- 不再起作用:在浏览器中显示一个无限加载的空页面。

谁应该受到责备,该怎么办?

nginx
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-10-01 04:07:37 +0000 UTC

不可理解的异步代码执行顺序

  • 1

我正在玩 asyncio 的可能性,在此过程中出现了以下代码:

import asyncio

async def my_task():
    print('Старт')
    await asyncio.sleep(0.5)
    print('Я не должен выполняться')

async def go():
    asyncio.create_task(my_task())
    await asyncio.sleep(0.48)
    print('Хватит')

loop = asyncio.get_event_loop()
loop.run_until_complete(go())

我希望它run_until_complete会在任务有时间工作之前完成asyncio.sleep(0.5),因此不应打印文本“我不能被执行”。

事实上,run_until_complete即使在它完成之后,它也会继续工作go(),并且任务正在解决:

为什么?发生了什么?我希望“足够”run_until_complete在打印后完成,但它会将控制权传递给任务。为什么?

如果计时器不够准确,我会理解,输出将是这样的:

Старт
Я не должен выполняться
Хватит

但结论显然不一样。为什么?

python
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-09-26 18:57:24 +0000 UTC

如何在子路径中运行 Django 站点?

  • 1

有一个任务是在 Django 上启动一个站点,而不是在整个域上,而是在子路径内,也就是说,http://example.com/subpath/在类型地址处打开主站点,在地址处打开http://example.com/subpath/admin/管理面板,等等。如何在不手动重写 urls.py 中的所有链接的情况下做到这一点?换句话说,如何在 Django 中为所有 URL 添加前缀?

python
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-12-16 02:38:35 +0000 UTC

为什么垂直对齐:中间低于中间?

  • 3

div {
  background-color: blue;
  height: 36px;
  line-height: 36px;
}

i {
  background-color: red;
  display: inline-block;
}

i.top {vertical-align: top;}
i.middle {vertical-align: middle;}
<div>foo<i class="top">top</i><i class="middle">middle</i>baz</div>

html
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-12-04 05:34:18 +0000 UTC

是否可以通过愚蠢地从数据库中复制目录来备份 MySQL?

  • 13

情况如下:有一个主 MySQL 服务器(准确地说是 MariaDB),有一个副本。每天晚上,带有副本的 mysqld 会关闭一段时间,然后将副本数据库中的爸爸(有条件/var/lib/mysql的)推入带有备份的存档中,然后重新打开 mysqld。

我从2014年就遇到过这样的案例(都是按照“我以后再想办法”的原则做的,这个“以后”总有一天会来的:)。我会定期尝试推出旧备份 - 它有效。虽然它有效。由于这种复制不是创建备份的“合法”形式(毕竟它不是 mysqldump 或 xtrabackup),我不能完全确定它的可靠性。

如果有人非常了解 MySQL/MariaDB 的工作原理,请告诉我此类备份将来是否会出现任何陷阱?或者,如果你不忘记跑步mysql_upgrade,一切都会好起来的?或者,操作系统、系统库或配置设置的某些依赖项可能会意外破坏此类备份?

mysql
  • 3 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-11-22 04:17:25 +0000 UTC

如何为 Django 项目进行多个配置(settings.py)?

  • 4

很明显,例如在生产和开发过程中,项目配置应该是不同的。但是,默认情况下,Django 提供了使用单个settings.py,它包含所有内容,没有任何分离的提示。我想分享。

例如,在开发过程中,可以启用DEBUG = True和连接生产中无法做到的Debug Toolbar,使用特定的本地开发者数据库,放宽限制等。

另外,如果你想在某个 github 上发布一个 Django 项目,那么将它添加到存储库settings.py中并使用所有密码一点也不酷。如果你从那里删除密码,提交并返回密码,那么这一切都非常不方便,你可能会不小心忘记它并settings.py使用密码提交。是的,会有冲突。

如何将配置划分为不同的部分,以便生产设置、开发设置和密码以某种方式彼此分开?

python
  • 1 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-11-21 20:13:25 +0000 UTC

全角行分隔符

  • -1

有一项任务是在页面的整个宽度上添加行之间的分隔符。

似乎<hr/>应该设置所有内容,但细微差别是浏览器会根据窗口的宽度(自动换行)自动换行我的行,并且行数和它们分开的确切位置事先不知道. 但是你仍然需要分享。

如何在纯 HTML 和 CSS 中制作这样的分隔符?

它不仅仅是在文字下划线,所以它text-decoration不适合这里。(虽然如果调整它以获得正确的结果是现实的,我不介意)

html
  • 2 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-10-18 22:26:38 +0000 UTC

复杂元素的基线对齐

  • 3

我有一个行,行中有一堆不同背景和不同文本大小的元素,有两个任务:

  • 将这些元素的背景拉伸到行的全高

  • 将所有文本与基线对齐(由于底部有边框,因此有必要将其稍微移至块中心下方,使其看起来居中)

也就是说,我想要这样的东西:

最初,我用许多填充物愚蠢地做到了这一点,但后来有必要制作具有可变高度的自适应布局,并且支持填充物已经是某种地狱。将需要更少的拐杖,以便可以任意改变线的高度,同时没有任何东西分开。

另外,这两个任务要解决 - 只是吐。您可以将块拉伸到它们的全高,但是文本的垂直对齐方式会移出。您可以垂直对齐文本,但无法拉伸背景。这是我无法弄清楚如何一次解决所有问题的问题。

对齐但没有背景的片段:

.myblock {
  background-color: #fdd;
  height: 44px;
  border-bottom: 15px solid #ccf;
}

.myitem {
  display: inline-block;
  vertical-align: baseline;
  background-color: #ddf;
}

.myitem1 {
  font-size: 14px;
}

.myitem2 {
  font-size: 28px;
  margin-top: 10px;
}

.myitem3 button {
  margin: 0;
  padding: 0;
  border: 0;
  font-family: inherit;
  font-size: 18px;
  background-color: white;
}
<div class="myblock">
  <div class="myitem myitem1">Мелкие букофки</div>
  <div class="myitem myitem2">Бальщие букафки</div>
  <form class="myitem myitem3">
    <button>quit</button>
  </form>
</div>

html
  • 3 个回答
  • 10 Views
Martin Hope
andreymal
Asked: 2020-08-31 19:20:50 +0000 UTC

连接两个字符串并显示结果

  • -2

假设我有两行:

stroka1 = input()
stroka2 = input()

输入数据:

qwertyuiopasd
fghjklzxcvbnm

如何将这些行合并(添加)为一条并输出?

qwertyuiopasdfghjklzxcvbnm
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