AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-881712

Mark's questions

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

Problema de solicitação flexível: é possível alterar a ordem do fluxo?

  • 5

Esta é minha tentativa de criar um modelo CSS com os seguintes recursos:

  • para viewports menores (< 1200px) coluna única, com estes itens:

    1. box-menu
    2. box-data
    3. box-footer
  • para janelas de visualização maiores, mude para um layout de duas colunas:

    • coluna da esquerda: box-menue box-footer sem qualquer rolagem
    • coluna da direita: box-datapermitindo a rolagem desta coluna somente se o conteúdo for maior que a altura disponível

Aqui está meu código:

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

O código de viewport menor está funcionando bem. Quando ele muda para o layout de duas colunas, o box-footeré colocado (como esperado) depois do box-datacausando uma lacuna:

brecha

Tentei consertar com a orderpropriedade, mas ela altera a ordem dos itens, não a ordem do fluxo.

Pelo que entendi, o flex contará 1. superior esquerdo, 2. superior direito, 3. inferior esquerdo, etc. Em vez disso, para atender às minhas necessidades, deveria ser 1 superior esquerdo (menu), 2 inferiores esquerdos (rodapé) e 3 superiores direitos (dados).

Como colocar o box-footerlogo abaixo box-menusem deixar espaço?

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

Leia as linhas do UART usando fgets e selecione

  • 7

Estou tentando usar fgetsesp-idf para ler uma linha inteira do UART.

O código de referência básico é o exemplo select . Até agora, aqui está meu código:

#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);

aqui a função loop:

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()");
    }
}

a função fgets requer uma FILE *variável como terceiro parâmetro. Mas eu só tenho ints ( fd, s) e fd_set( rfds).

Tentei alterar o código para usar FILE *:

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

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

já que fgetsestá bloqueando preciso verificar se há alguns dados primeiro. Mas agora selectrequer um fd_sete não um FILE *:

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

Como posso "converter" FILE *para fd_setou intpara FILE *?

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

Botão de alternância da barra de navegação aberto, mas não fechado depois

  • 6

Aqui está meu código com uma barra de navegação retrátil. O botão toggler abre, mas não fecha o menu:

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/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/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-BBtl+eGJRgqQAUMxJ7pMwbEyER4l1g+O15P+16Ep7Q9Q+zqX6gSbd85u4mG4QzX+" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/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/[email protected]/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>

Encontrei esta pergunta semelhante, mas meu código já parece como a resposta sugere (incluir jquery antes do bootstrap). Por que ele funciona de uma única maneira?

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

O Buildroot falha ao compilar o host-heimdal

  • 4

Esta é minha defconfigversão ligeiramente modificada de 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

emissão make, estas são as últimas linhas da saída:

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

Procurei dentro da xconfigferramenta por host-heimdalmas não encontrei nada. Por que ela falha? Quer dizer, não alterei nada sobre sua configuração.

ATUALIZAR

  • Versão do Buildroot:2024.08-rc3
  • Método de download: git clone
  • Versão do host: Ubuntu 24.04
gcc
  • 1 respostas
  • 18 Views
Martin Hope
Mark
Asked: 2024-08-15 17:06:53 +0800 CST

Evite o uso de alias em consulta com cláusula SELECT aninhada

  • 6

Eu tenho esta tabela:

eu ia área nome valor
1 UM abc 1.2
2 B abc 2.3
3 C definitivamente 3.4

Consigo calcular o SUMde valuespara cada um name:

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

e produzirá:

nome total
abc 3.5
definitivamente 3.4

Agora quero adicionar esses valores como uma coluna calculada na tabela, minha saída esperada é:

eu ia área nome valor total
1 UM abc 1.2 3.5
2 B abc 2.3 3.5
3 C definitivamente 3.4 3.4

Minha tentativa foi adicionar a SELECTcláusula como coluna:

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

mas falha:

Subconsulta retorna mais de 1 linha

Eu entendo o porquê: ele SELECTexibirá todos os nomes, não apenas o do registro atual. Então adicionei uma WHEREcláusula forçando a seleção apenas do nome atual:

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

funciona! A desvantagem é que a namecoluna agora é chamada current_name.

Existe uma maneira de evitar o uso do alias para manter o nome real da coluna?

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

Classificando uma lista vinculada mantendo alguns elementos agrupados

  • 5

Eu tenho uma lista vinculada:

MyLinkedList::LinkedList<Event *> list;

de onde LinkedListvem desta biblioteca e Eventé esta estrutura:

typedef struct 
{
    TimeSpan time;
    int value;

    bool queued;
} Event;

de onde TimeSpanvem esta biblioteca. Após preencher a lista com alguns itens executo a seguinte função:

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;
}

a comparefunção é definida da seguinte forma:

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());
}

Apenas ordena os elementos pelo seu tempo. Este código funciona bem.

Agora preciso lidar com o queuedsinalizador na estrutura. Aqui está um exemplo de dados de entrada:

Tempo Valor Enfileiradas
18:00 1 falso
xx:xx 2 verdadeiro
xx:xx 3 verdadeiro
10h30 4 falso
xx:xx 5 verdadeiro
08:15 6 falso
06:45 7 falso

Ao ordenar, os itens com o queuedsinalizador definido devem seguir o item anterior (com queued não definido), independentemente do seu valor de tempo (daí o valor xx:xxna tabela).

A saída esperada é:

Tempo Valor Enfileiradas
06:45 7 falso
08:15 6 falso
10h30 4 falso
xx:xx 5 verdadeiro
18:00 1 falso
xx:xx 2 verdadeiro
xx:xx 3 verdadeiro

Em outras palavras: if queuedis falseos elementos serão ordenados normalmente (por seu tempo), if is trueeles devem seguir o elemento anterior (como se estivessem "agrupados" juntos).

Como a comparefunção pode lidar apenas com dois itens e não tenho outras informações além do pedido inicial, como posso manter os queueditens com o item “pai”?

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

array_push em uma variável pai é limpo em cada chamada [duplicado]

  • 5
Essa pergunta já tem resposta aqui :
Modifique uma variável com escopo global dentro de uma função anônima (1 resposta)
Fechado há 8 horas .

Aqui meu código:

<?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);

Eu executo este recorte com:

php mqtt_recv.php

então envio várias mensagens para o tópico acima e o resultado é:

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

por que em cada chamada a variável pai $temperatureé limpa?

Tenho certeza de que depende do uso, useporque fazer o mesmo no nível raiz leva ao comportamento esperado. Lendo a documentação entendi que "O valor da variável herdada é de quando a função é definida, não quando chamada", mas após a primeira chamada, a variável não deveria manter os novos valores?

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

Usando um sistema de grade responsivo, mantenha duas colunas na mesma linha e permita mais colunas para telas maiores

  • 6

Aqui está um trecho simples escrito com 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>

Veja como aparece em telas grandes:

insira a descrição da imagem aqui

e em telas menores:

insira a descrição da imagem aqui

Quero, mesmo em telas menores, manter na mesma linha as etiquetas (ou seja, "Temperatura") e seus valores. Como a largura do sistema de grade é 12 e a documentação diz:

Todas as colunas são 100% para largura do dispositivo <600px

Achei que adicionar duas colunas com classe col-6deveria levar a uma única linha com duas colunas, mesmo para dispositivos menores.

Obviamente estou errado. Como devo mudar minha grade?

Como bônus ... eu gostaria de permitir que telas maiores tivessem alguns campos (no exemplo, como data e hora), enquanto em telas intermediárias/menores ele deveria voltar a ter apenas um campo por linha.

Existe uma maneira simples de conseguir isso?

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

O que pode causar um BadTimeout no OpcUa?

  • 5

Tenho uma aplicação Qt que troca dados via QtOpcUa. Não tenho nenhuma pesquisa, navegação ou outra operação, mas um monte de assinaturas. A cada poucos minutos recebo um BadTimeouterro do servidor que fecha a conexão.

Isso acontece somente se eu tiver alguma assinatura habilitada e mais de um CLP conectado. Mas o que pode causar esse tempo limite?

Aqui eu li:

A operação expirou.

Como uma assinatura pode expirar? Isso é feito pelo próprio servidor! É um problema do servidor ou posso fazer alguma coisa do lado do cliente?

As mensagens que recebo são:

[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 respostas
  • 17 Views
Martin Hope
Mark
Asked: 2023-09-09 04:56:03 +0800 CST

PHP exec date -s funciona bem, mas não atualiza datetime

  • 5

Aqui meu arquivo PHP simples:

<?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))));
    }
}

aqui o snippet javascript que envia dados:

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));
}

O conteúdo enviado é assim:

2023-09-08T20:49:28.696Z

depois de limpar $datetimefica assim:

2023-09-08 20:49:28

portanto, o comando executado é:

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

o comando foi executado com sucesso porque recebo de volta a saída:

Fri Sep  8 20:49:28 UTC 2023

mas verificar o dateservidor real revela que o comando não foi realmente executado:

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

Mas se eu digitar manualmente o mesmo comando acima, ele funcionará:

# 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

O que esta acontecendo aqui? Estou trabalhando no Linux para Raspberry Pi 3 e apache2rodando como root.

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

HTML 100vh não cuida da barra de ferramentas do navegador no Android

  • 5

Na área de trabalho, se eu definir bodyou a divpara 100vhocupar todo o espaço da tela e deixar o overflow funcionar bem, a altura real da tag será a altura real visível da janela de conteúdo do navegador.

Em vez disso, no Android (testado com Mozilla Focus 117.0) ele não cuida do cabeçalho do navegador e a página não fica completa.

html {
  height: 100%;
}

body {
  min-height: 100%;
}

.content {
  height: 100vh;
}
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/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>

Especificamente, isso acontece se o navegador ocultar a barra de ferramentas quando o usuário rolar a página para baixo. Por exemplo, o mesmo código em execução no meu servidor Apache leva ao problema que descrevi, mas por qualquer motivo, se eu executar o snippet dentro de stackoverflow.com:

  1. o navegador não esconde a barra de ferramentas
  2. o estouro funciona bem

Eu acho que é possível dizer ao navegador para manter a barra de ferramentas (ou seja, esta ), mas parece uma solução alternativa para mim.

Existe uma maneira de definir a altura visível para o espaço real disponível com ou sem a barra de ferramentas do navegador?

Parece uma duplicata desta pergunta, mas não quero alterar o comportamento do navegador, só quero usar o espaço disponível .

android
  • 1 respostas
  • 25 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve