AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-881712

Mark's questions

Martin Hope
Mark
Asked: 2025-04-02 13:47:27 +0800 CST

灵活排序问题:是否可以改变流程顺序?

  • 5

我尝试创建具有以下功能的 CSS 模板:

  • 对于较小的视口(<1200px)单列,包含以下项目:

    1. box-menu
    2. box-data
    3. box-footer
  • 对于更大的视口,请切换到两列布局:

    • 左栏:box-menu无需box-footer 滚动
    • 右列:如果内容长度超过可用高度,则仅box-data允许滚动此列

这是我的代码:

:root {
  --color-text: #521D03;
  --color-menu-background: #33dd00;
  --color-content-background: #FFFFFF;
  --color-lines: #521D03;
}

html,
body,
.container {
  height: 100%;
}

body {
  margin: 0;
}

.container {
  display: flex;
  flex-direction: column;
}

.button {
  display: block;
  font-weight: bold;
  font-size: 32px;
  line-height: 0.9em;
  text-decoration: none;
  letter-spacing: 0.02em;
  color: var(--color-text);
}

.box {
  padding: 1em;
  box-sizing: border-box;
  display: flex;
  flex-flow: column;
  color: var(--color-text);
}

.box-menu {
  background-color: var(--color-menu-background);
  text-align: center;
  justify-content: space-around;
}

.box-data {
  background-color: var(--color-content-background);
  background-color: #aaaaaa;
  flex: 1;
}

.box-footer {
  background-color: var(--color-menu-background);
  line-height: 1em;
  text-align: center;
}

.box-menu .menu-header {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.box-data .data-header {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.box-data .data-content {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.box-data .data-footer {
  flex: 0 1 150px;
  text-align: center;
}

/* Larger viewports */
@media (min-width: 1200px) {
  .container {
    flex-direction: row;
    flex-wrap: wrap;
  }

  .box-menu,
  .box-data,
  .box-footer {
    flex-basis: 50%;
  }

  .box-menu {
    height: calc(100% - 150px);
  }

  .box-footer {
    height: 150px;
  }

  .box-data {
    height: 100%;
    overflow-y: auto;
  }
}
<div class="container">
  <div class="box box-menu">

    <div class="menu-header">
      <h1>MY LOGO</h1>
    </div>

    <div class="menu-content">
      <a class="button" href="/">MENU 1</a>
      <a class="button" href="/">MENU 2</a>
      <a class="button" href="/">MENU 3</a>
    </div>

  </div>
  <div class="box box-data">

    <div class="data-header">
      <div class="nav-section">
        <h3>MY NAV</h3>
      </div>
    </div>

    <div class="data-content">
      MY LONG CONTENT

      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
      <p>
        Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.
      </p>
    </div>

    <div class="data-footer">
      <div class="menu-content">
        <a class="button clear">MY BUTTON</a>
      </div>
    </div>

  </div>

  <div class="box box-footer">
    MY FOOTER
  </div>

</div>

较小的视口代码运行良好。当它切换到两列布局时,它会被放置在导致间隙的后面box-footer(正如预期的那样) :box-data

差距

我尝试使用属性来修复order,但它改变了项目的顺序,而不是流的顺序。

据我所知,flex 将计算 1. 左上角、2. 右上角、3. 左下角等...相反,为了满足我的需要,它应该是 1 左上角(菜单)、2 左下角(页脚)和 3 右上角(数据)。

如何将其无间隙地放置box-footer在正下方?box-menu

html
  • 2 个回答
  • 47 Views
Martin Hope
Mark
Asked: 2024-11-13 00:13:17 +0800 CST

使用 fgets 从 UART 读取行并选择

  • 7

我正在尝试fgets在 esp-idf 中使用从 UART 读取整行。

基本参考代码是选择示例。到目前为止,这是我的代码:

#define DLP_RFID2_BUF_SIZE 256
static char buffer[DLP_RFID2_BUF_SIZE];

uart_config_t uart_config = 
{
    .baud_rate = 115200,
    .data_bits = UART_DATA_8_BITS,
    .parity    = UART_PARITY_DISABLE,
    .stop_bits = UART_STOP_BITS_1,
    .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
    .source_clk = UART_SCLK_DEFAULT,
};

ESP_ERROR_CHECK(uart_driver_install(UART_NUM_1, DLP_RFID2_BUF_SIZE * 2, 0, 0, NULL, 0));
ESP_ERROR_CHECK(uart_param_config(UART_NUM_1, &uart_config));
ESP_ERROR_CHECK(uart_set_pin(UART_NUM_1, PIN_DLP_RFID2_TX, PIN_DLP_RFID2_RX, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));

if ((fd = open("/dev/uart/1", O_RDWR)) == -1) 
{
    ESP_LOGE(TAG, "Cannot open UART");
    return fd;
}

uart_vfs_dev_use_driver(UART_NUM_1);

这里是循环函数:

int s;
fd_set rfds;
struct timeval tv = {
    .tv_sec = 0,
    .tv_usec = 20000,
};

FD_ZERO(&rfds);
FD_SET(fd, &rfds);

s = select(fd + 1, &rfds, NULL, NULL, &tv);

if (s < 0) 
{
    ESP_LOGE(TAG, "Select failed: errno %d (%s)", errno, strerror(errno));
} 
else if (s == 0) 
{
    ESP_LOGI(TAG, "Timeout has been reached and nothing has been received");
} 
else 
{
    if (FD_ISSET(fd, &rfds)) 
    {
        if (fgets(buffer, sizeof(buffer), ???))
        {
            // do something
        }
    } 
    else 
    {
        ESP_LOGE(TAG, "No FD has been set in select()");
    }
}

fgets函数需要一个FILE *变量作为第三个参数。但我只有ints ( fd, s) 和fd_set( rfds)。

我尝试更改代码以便使用FILE *:

FILE *f = fopen("/dev/uart/1", "rw");

// ...
if (fgets(buffer, sizeof(buffer) - 1, f))
{
    // do something
}

由于fgets是阻塞的,我需要先检查是否有一些数据。但现在select需要一个fd_set而不是一个FILE *:

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);

我怎样才能“转换”FILE *为fd_set或?intFILE *

c
  • 1 个回答
  • 38 Views
Martin Hope
Mark
Asked: 2024-10-29 01:26:37 +0800 CST

导航栏切换按钮打开但之后不关闭

  • 6

这是我的代码,带有可折叠的导航栏。切换按钮会打开菜单,但不会关闭菜单:

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css" integrity="sha384-4LISF5TTJX/fLmGSxO53rV4miRxdg84mZsxmO8Rx5jGtp/LbrixFETvWa5a6sESd" crossorigin="anonymous">

    <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
    <script src="https://code.jquery.com/ui/1.14.0/jquery-ui.min.js" integrity="sha256-Fb0zP4jE3JHqu+IBB9YktLcSjI1Zc6J2b6gTjB0LpoM=" crossorigin="anonymous"></script>

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.min.js" integrity="sha384-BBtl+eGJRgqQAUMxJ7pMwbEyER4l1g+O15P+16Ep7Q9Q+zqX6gSbd85u4mG4QzX+" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.9.2/umd/popper.min.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css" />

<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #134d8c;">
    <div class="container-fluid">
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                <li class="nav-item">
                    <a href="/www" class="nav-link <?php echo ($page == 'home') ? 'active' : '' ?>">
                        <i class="fs-5 bi-house"></i> <span class="ms-1 me-2 d-none d-sm-inline">Home</span>
                    </a>
                </li>
                <li class="nav-item">
                    <a href="parametri.php" class="nav-link <?php echo ($page == 'parametri') ? 'active' : '' ?>">
                        <i class="fs-5 bi-gear"></i> <span class="ms-1 me-2 d-none d-sm-inline">Parametri</span>
                    </a>
                </li>
                <li class="nav-item">
                    <a href="anagrafiche.php?nav=anagrafica_alunni" class="nav-link <?php echo ($page == 'anagrafica_alunni') ? 'active' : '' ?>">
                        <i class="fs-5 bi-backpack2"></i> <span class="ms-1 me-2 d-none d-sm-inline">Anagrafica alunni</span>
                    </a>
                </li>
                <li class="nav-item">
                    <a href="anagrafiche.php?nav=anagrafica_famiglie" class="nav-link <?php echo ($page == 'anagrafica_famiglie') ? 'active' : '' ?>">
                        <i class="fs-5 bi-people"></i> <span class="ms-1 me-2 d-none d-sm-inline">Anagrafica famiglie</span>
                    </a>
                </li>
                <li class="nav-item">
                    <a href="bonus.php" class="nav-link <?php echo ($page == 'bonus') ? 'active' : '' ?>">
                        <i class="fs-5 bi-trophy"></i> <span class="ms-1 me-2 d-none d-sm-inline">Bonus</span>
                    </a>
                </li>
                <li class="nav-item">
                    <a href="turni_pulizie.php" class="nav-link <?php echo ($page == 'turni_pulizie') ? 'active' : '' ?>">
                        <i class="fs-5 bi-trash"></i> <span class="ms-1 me-2 d-none d-sm-inline">Turni pulizie</span>
                    </a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                        <i class="fs-5 bi-cookie"></i> Turni cucina
                    </a>
                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <li><a href="turni_cucina.php" class="ms-1 me-2 nav-link <?php echo ($page == 'turni_cucina') ? 'active' : '' ?>">Calendario</a></li>
                        <li><a href="turni_cucina_famiglie.php" class="ms-1 me-2 nav-link <?php echo ($page == 'turni_cucina_famiglie') ? 'active' : '' ?>">Famiglie</a></li>
                        <li><a href="turni_fissi_cucina.php" class="ms-1 me-2 nav-link <?php echo ($page == 'turni_fissi_cucina') ? 'active' : '' ?>">Fissi</a></li>
                        <li><a href="turni_cucina_scambi.php" class="ms-1 me-2 nav-link <?php echo ($page == 'turni_cucina_scambi') ? 'active' : '' ?>">Scambi</a></li>
                        <li><a href="turni_cucina_pagamenti.php" class="ms-1 me-2 nav-link <?php echo ($page == 'turni_cucina_pagamenti') ? 'active' : '' ?>">Pagamenti</a></li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
</nav>

我找到了类似的问题,但我的代码似乎已经如答案所示(在 bootstrap 之前包含 jquery)。为什么它只能以一种方式工作?

javascript
  • 1 个回答
  • 41 Views
Martin Hope
Mark
Asked: 2024-09-03 16:21:28 +0800 CST

Buildroot 无法编译 host-heimdal

  • 4

这是我defconfig稍加修改的configs/raspberrypi3_64_defconfig:

$ cat defconfig 
BR2_aarch64=y
BR2_cortex_a53=y
BR2_ARM_FPU_VFPV4=y

# patches
BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches"
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y

BR2_SYSTEM_DHCP="eth0"

# Linux headers same as kernel, a 6.6 series
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y

BR2_TOOLCHAIN_BUILDROOT_CXX=y

BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz"
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3"

BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3-64/config_3_64bit.txt"

# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y

# Filesystem / image
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3-64/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3-64/post-image.sh"

# Enable compressed kernel module support
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_KMOD_TOOLS=y
BR2_PACKAGE_XZ=y
BR2_PACKAGE_KMOD=y
BR2_PACKAGE_HOST_KMOD_XZ=y

发出make,这是输出的最后几行:

checking for library containing yywrap... -ll
checking for gawk... (cached) gawk
checking for ln -s or something else... ln -s
checking for __attribute__... no
checking for ld --version-script... yes
checking whether C compiler accepts -Wno-error=enum-conversion... yes
checking whether C compiler accepts -Wno-unused-but-set-variable... yes
checking for openldap... no
checking pkg-config is at least version 0.9.0... yes
checking for MICROHTTPD... no
checking for CJWT... no
checking for CJSON... no
checking for sqlite3... no
checking for libintl... no
checking for crypto library... included libhcrypto
checking if compiling threadsafe libraries... yes
checking for inline... inline
checking for an ANSI C-conforming const... yes
checking for size_t... no
checking for egrep... (cached) /usr/bin/grep -E
checking for pid_t... no
checking for uid_t... no
checking for gid_t... no
checking return type of signal handlers... void
checking for standards.h... no
checking for netinet/ip.h... no
checking for netinet/tcp.h... no
checking for egrep -e... (cached) /usr/bin/grep -E
checking for /home/mark/dev/buildroot/output/host/bin/ccache /usr/bin/gcc  options needed to detect all undeclared functions... cannot detect
configure: error: in '/home/mark/dev/buildroot/output/build/host-heimdal-f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17':
configure: error: cannot make /home/mark/dev/buildroot/output/host/bin/ccache /usr/bin/gcc  report undeclared builtins
See 'config.log' for more details
make[1]: *** [package/pkg-generic.mk:279: /home/mark/dev/buildroot/output/build/host-heimdal-f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17/.stamp_configured] Errore 1
make: *** [Makefile:83: _all] Errore 2

我搜索了xconfig工具内部host-heimdal,但什么也没找到。为什么会失败?我的意思是,我没有更改其配置。

更新

  • Buildroot版本:2024.08-rc3
  • 下载方法:git clone
  • 主机版本:Ubuntu 24.04
gcc
  • 1 个回答
  • 18 Views
Martin Hope
Mark
Asked: 2024-08-15 17:06:53 +0800 CST

避免在嵌套 SELECT 子句的查询中使用别名

  • 6

我有这张表:

ID 区域 姓名 价值
1 一个 美国广播公司 1.2
2 乙 美国广播公司 2.3
3 碳 定义 3.4

我可以计算SUM每个values的name:

SELECT 
    name, 
    SUM(value) AS "total" 
FROM table 
GROUP BY name;

它将输出:

姓名 全部的
美国广播公司 3.5
定义 3.4

现在我想将这些值作为计算列添加到表中,我的预期输出是:

ID 区域 姓名 价值 全部的
1 一个 美国广播公司 1.2 3.5
2 乙 美国广播公司 2.3 3.5
3 碳 定义 3.4 3.4

我的尝试是将该条款添加SELECT为列:

SELECT 
    table.*, 
    (SELECT 
        SUM(value) AS "total" 
        FROM table 
        GROUP BY name) 
FROM table

但失败了:

子查询返回多于 1 行

我理解为什么:SELECT将输出所有名称,而不仅仅是当前记录的名称。所以我添加了一个WHERE子句,强制仅选择当前名称:

SELECT 
    id,
    area,
    name AS current_name,
    value,
    (SELECT 
        SUM(value) 
        FROM table
        WHERE name=current_name
        GROUP BY name) AS "total" 
FROM table

成功了!缺点是该name列现在被称为current_name。

有没有办法避免使用别名而保留实际的列名?

sql
  • 2 个回答
  • 32 Views
Martin Hope
Mark
Asked: 2024-06-05 14:10:02 +0800 CST

对链表进行排序,将一些元素打包在一起

  • 5

我有一个链接列表:

MyLinkedList::LinkedList<Event *> list;

来自LinkedList这个库,并且Event是这个结构:

typedef struct 
{
    TimeSpan time;
    int value;

    bool queued;
} Event;

TimeSpan来自这个图书馆的地方。用一些项目填充列表后,我运行以下函数:

bool Events::Save()
{
    // order the elements by the time
    _listEvents.sort(compare);

    // open a file for writing    

    for (int i = 0; i < _listEvents.size(); i++)
    {
        Event *event = _listEvents.get(i);
        // write the item to the file
        writeEvent(file, *event);
    }

    file.close();
    return true;
}

该compare函数定义如下:

int compare(Event *&ev1, Event *&ev2)
{
    if (ev1->time.hours() > ev2->time.hours()) return true;
    if (ev1->time.hours() < ev2->time.hours()) return false;
    return (ev1->time.minutes() > ev2->time.minutes());
}

它只是按元素的时间对元素进行排序。这段代码工作正常。

现在我需要处理queued结构中的标志。这里是一个示例输入数据:

时间 价值 排队
18:00 1 错误的
xx:xx 2 真的
xx:xx 3 真的
10:30 4 错误的
xx:xx 5 真的
08:15 6 错误的
06:45 7 错误的

queued排序时,设置了标志的项目必须位于前一个项目(queued 未设置)之后,无论其时间值如何(因此xx:xx在表中)。

预期输出是:

时间 价值 排队
06:45 7 错误的
08:15 6 错误的
10:30 4 错误的
xx:xx 5 真的
18:00 1 错误的
xx:xx 2 真的
xx:xx 3 真的

换句话说:如果queued是,则false元素将照常排序(按时间),如果是,则true它们必须遵循前一个元素(就像它们“分组”在一起)。

由于该compare函数只能处理两个项目,并且除了初始订单之外我没有其他信息,因此如何将这些queued项目与其“父”项目保留在一起?

c++
  • 1 个回答
  • 48 Views
Martin Hope
Mark
Asked: 2024-02-11 19:26:17 +0800 CST

每次调用时都会清除父变量上的 array_push [重复]

  • 5
这个问题在这里已经有答案了:
修改匿名函数内的全局范围变量 (1 个答案)
8 小时前关闭。

这是我的代码:

<?php 
require('vendor/autoload.php');
use PhpMqtt\Client\MqttClient;
use PhpMqtt\Client\ConnectionSettings;

$temperature = array();

$server   = '<address>';
$port     = 1883;
$clientId = 'id';

$connectionSettings = (new ConnectionSettings)
  ->setKeepAliveInterval(60)
  ->setLastWillQualityOfService(1);

  $mqtt = new MqttClient($server, $port, $clientId, MqttClient::MQTT_3_1);
  $mqtt->connect($connectionSettings, true);

$mqtt->subscribe('foo', function ($topic, $message) use ($temperature) {
    printf("Received message on topic [%s]: %s\n", $topic, $message);
    $obj = json_decode($message);

    array_push($temperature, floatval($obj->temp));
    echo count($temperature);
}, 0);

$mqtt->loop(true);

我运行这个片段:

php mqtt_recv.php

然后我向上述主题发送几条消息,输出为:

Received message on topic [foo]: {"temp":"20.0"}
1
Received message on topic [foo]: {"temp":"20.2"}
1
Received message on topic [foo]: {"temp":"20.4"}
1
Received message on topic [foo]: {"temp":"20.6"}
1

为什么每次调用时父变量$temperature都会被清除?

我很确定这取决于使用,use因为在根级别执行相同的操作会导致预期的行为。阅读文档我理解“继承变量的值来自定义函数时,而不是调用时”,但是在第一次调用之后,变量不应该保留新值吗?

  • 2 个回答
  • 55 Views
Martin Hope
Mark
Asked: 2023-12-25 19:45:17 +0800 CST

使用响应式网格系统,将两列保留在同一行,同时允许更多列用于更大的屏幕

  • 6

这是用Chota编写的简单片段:

.card {
  margin: 30px;
}

.tag {
  margin-left: .5em;
}

.field {
  border-radius: 5px;
}
<link rel="stylesheet" href="https://unpkg.com/chota@latest">
<link rel="icon" href="./favicon.ico" type="image/x-icon">

<div class="row is-center">
  <div class="col-12 col-6-md col-4-lg">
    <div class="card">
      <header class="is-center">
        <h4>Controllo remoto stufa</h4>
      </header>
      <p class="is-center">La stufa è<span class="tag">SPENTA</span></p>
      <div class="is-center">
        <button class="button error">ON/OFF</button>
      </div>
      <hr>
      <div class="row">
        <div class="col-6 is-center">
          <img src="https://icongr.am/material/thermometer.svg?size=24">Temperatura
        </div>
        <div class="col-6 is-center">
          <span class="tag field">22 °C</span>
        </div>
      </div>
      <div class="row">
        <div class="col-6 is-center">
          <img src="https://icongr.am/material/water-outline.svg?size=24">Umidità
        </div>
        <div class="col-6 is-center">
          <span class="tag field">50% RH</span>
        </div>
      </div>
      <div class="row">
        <div class="col-6 is-center">
          <img src="https://icongr.am/material/calendar-month.svg?size=24">Data<span class="tag field">25/12/2023</span>
        </div>
        <div class="col-6 is-center">
          <img src="https://icongr.am/material/clock-outline.svg?size=24">Ora<span class="tag field">12:00</span>
        </div>
      </div>
    </div>
  </div>
</div>

这是它在大屏幕上的显示方式:

在此输入图像描述

在较小的屏幕中:

在此输入图像描述

我希望,即使在较小的屏幕中,标签(即“温度”)及其值也保持在同一行。由于网格系统的宽度是 12 并且文档说:

对于设备宽度 < 600 像素,所有列均为 100%

我认为添加两列和类col-6应该会导致单行有两列,即使对于较小的设备也是如此。

显然我错了。我应该如何更改我的网格?

作为奖励...我想允许在较大的屏幕上有几个字段(在示例中,如日期和时间),而在中/较小的屏幕上,它应该回退到只有一个行字段。

有没有一种简单的方法可以实现这一目标?

html
  • 1 个回答
  • 36 Views
Martin Hope
Mark
Asked: 2023-10-03 18:50:52 +0800 CST

什么会导致 OpcUa 中发生 BadTimeout?

  • 5

我有一个通过 QtOpcUa 交换数据的 Qt 应用程序。我没有任何轮询或浏览或其他操作,但有一堆订阅。每隔几分钟,我就会BadTimeout从服务器收到一条关闭连接的错误。

仅当我启用了任何订阅并且连接了多个 PLC 时才会发生这种情况。但是什么会导致这样的超时呢?

我在这里读到:

操作超时。

订阅如何“超时”?这是服务器自己完成的!这是服务器的问题还是我可以在客户端做任何事情?

我收到的消息是:

[20231003 12:51:19 I] unknown:0 - "Received a ServiceFault response"
[20231003 12:51:19 I] unknown:0 - "The ServiceResult has the StatusCode BadTimeout"
[20231003 12:51:19 W] unknown:0 - "Received Timeout for Publish Response"
qt
  • 1 个回答
  • 17 Views
Martin Hope
Mark
Asked: 2023-09-09 04:56:03 +0800 CST

PHP exec date -s 运行正常但不更新日期时间

  • 5

这是我的简单 PHP 文件:

<?php
if (strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') {
    if (isset($_POST['datetime'])) {
        $datetime = htmlspecialchars($_POST['datetime']);
        $datetime[10] = ' ';
        $datetime = substr($datetime, 0, 19);
        die (json_encode(exec('date -s' . escapeshellarg($datetime))));
    }
}

这里是发送数据的 javascript 片段:

function syncTime() {
    let data = new FormData();
    data.set("datetime", new Date().toISOString());

    fetch("datetime.php", {
        method: 'POST',
        body: data
    })
        .then(response => response.json())
        .then(json => console.log(json));
        .catch(err => console.log('Request Failed', err));
}

发送的内容是这样的:

2023-09-08T20:49:28.696Z

清理后$datetime看起来像:

2023-09-08 20:49:28

因此执行的命令是:

date -s "2023-09-08 20:49:28"

该命令已成功执行,因为我收到了输出:

Fri Sep  8 20:49:28 UTC 2023

但检查服务器上的实际情况date发现该命令实际上并未执行:

# date
Thu Jan  1 08:34:07 UTC 1970

但如果我手动输入上面完全相同的命令,它就会起作用:

# date -s "2023-09-08 20:49:28"
Fri Sep  8 20:49:28 UTC 2023
# date
Fri Sep  8 20:49:28 UTC 2023

这里发生了什么?我正在为 Raspberry Pi 3 开发 Linux,并apache2以 root 身份运行。

  • 1 个回答
  • 14 Views
Martin Hope
Mark
Asked: 2023-09-05 20:24:49 +0800 CST

HTML 100vh 不处理 Android 上的浏览​​器工具栏

  • 5

在桌面上,如果我将body或 a设置div为 以便100vh占用所有屏幕空间并让溢出正常运行,则标签的实际高度是浏览器内容窗口的真实可见高度。

相反,在 Android 上(使用 Mozilla Focus 117.0 进行测试),它不会处理浏览器标题,因此页面不完整。

html {
  height: 100%;
}

body {
  min-height: 100%;
}

.content {
  height: 100vh;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm" crossorigin="anonymous"></script>

<form>
  <div class="col-lg-6 mx-auto d-flex flex-column content">
    <div class="container-fluid bg-light px-3 pt-1 flex-shrink-1">
      <p class="text-center display-4 h1">My project</p>
      <hr class="my-1">
    </div>

    <div class="p-2 flex-grow-1 overflow-scroll">
      <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta.
        Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh.
        Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet.
        Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna
        non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in
        justo eu magna luctus suscipit. Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
        posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue.
        Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. Cras metus. Sed aliquet risus a tortor. Integer id quam.
        Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. Aenean laoreet. Vestibulum nisi lectus, commodo ac, facilisis ac, ultricies eu, pede. Ut orci risus, accumsan
        porttitor, cursus quis, aliquet eget, justo. Sed pretium blandit orci.
      </p>
    </div>

    <div class="px-2 flex-shrink-1">
      <hr class="my-1">
      <div class="input-group">
        <input type="text" class="form-control" placeholder="Placeholder..." aria-label="Placeholder..." aria-describedby="submit">
        <button class="btn btn-outline-secondary" type="submit" id="submit">Send</button>
      </div>
      <div class="my-1 alert alert-success" role="alert">
        Some messages
      </div>
    </div>

    <div class="px-2 flex-shrink-1">
      <div id="carousel" class="carousel slide carousel-fade" data-bs-ride="carousel">
        <div class="carousel-inner">
          <div class="carousel-item active">
            <img src="banner/test1.jpg" class="d-block w-100" alt="SAMPLE BANNER">
          </div>
        </div>
      </div>
    </div>
  </div>
</form>

具体来说,如果用户向下滚动页面时浏览器隐藏工具栏,就会发生这种情况。例如,在我的 apache Web 服务器上运行的完全相同的代码会导致我描述的问题,但无论出于何种原因,如果我在 stackoverflow.com内运行代码片段:

  1. 浏览器不隐藏工具栏
  2. 溢出工作正常

我想可以告诉浏览器保留工具栏(即this),但这对我来说似乎是一个解决方法。

有没有办法在有或没有浏览器工具栏的情况下将可见高度设置为实际可用空间?

这似乎是这个问题的重复,但我不想改变浏览器行为,我只想使用可用空间。

android
  • 1 个回答
  • 25 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve