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 / coding / 问题

All perguntas(coding)

Martin Hope
YahyaB
Asked: 2025-04-24 01:07:02 +0800 CST

Como converter todos os números decimais de uma string para binários em Java?

  • 5

Eu precisava converter números decimais de uma string para binário. Precisava usar isso em um programa.

Eu tentei este código:

static String numbers = "48, 40, 6, 82, 222, 94, 152, 46, 77";
        
public static void main(String[] args) {
    for (int i = 0; i < 255; i++) {
        numbers = numbers.replaceAll(Integer.toString(i), Integer.toBinaryString(i));
    }
    System.out.println(numbers);
}

O que eu esperava do console: 110000, 101000, 110, 1010010, 11011110, 1011110, 10011000, 101110, 1001101

O que realmente aconteceu:

11011011110010110110111100100110110111100101101101111001000,
110110111100101101101111001000,
11011011110010110111101101111001010,
1101101111001011011011110010001101101111001010,
110110111100101011011011110010101101101111001010,
11011011110010110110111100100110110111100101101111011011110010110110111100100,
1101101111001011011110110111100101011011011110010110111101101111001010,
1101101111001011011011110010011011011110010110111101101111001010,
11011011110010110111110110111100101101111101101111001011

Acho que o conversor ( forloop) está convertendo números que já foram convertidos (por exemplo 10, 110, 100)

java
  • 3 respostas
  • 92 Views
Martin Hope
Evgeny Ilyin
Asked: 2025-04-24 01:01:13 +0800 CST

Representações de tipos e comportamento indefinido em C

  • 8

Estou estudando ISO/IEC 9899:2023 (E) 6.2.6 Representações de tipos: 6.2.6.1 Geral, parágrafo 6:

Certas representações de objetos não precisam representar um valor do tipo de objeto. Se tal representação for lida por uma expressão lvalue que não possui tipo de caractere, o comportamento é indefinido. Se tal representação for produzida por um efeito colateral que modifica todo ou parte do objeto por uma expressão lvalue que não possui tipo de caractere, o comportamento é indefinido. 54) Tal representação é chamada de representação sem valor.

Estou interessado na frase em destaque. Isso significa que, por exemplo:

union {
  int i;
  float f;
} u;

(onde, digamos, sizeof(int) == sizeof(float) == 4 e o tipo 'int' não tem bits de preenchimento),

a linha de código

u.i = some_value; // some_value has 'int' type

conterá comportamento indefinido? Afinal, com essa linha, posso (potencialmente) criar uma visualização sem o valor do membro 'f' do objeto de união (por exemplo, NaN).

c
  • 1 respostas
  • 108 Views
Martin Hope
Pierre
Asked: 2025-04-24 00:46:24 +0800 CST

java java.net.http.HttpClient retorna status http 403 enquanto curl funciona bem

  • 5

Estou tentando buscar uma string JSON de um servidor (GraphQL?). A entrada é uma string JSON + requisição POST e a saída é um documento JSON.

Ao usar curl , funciona (bem, sejamos honestos, funciona se você não chamar o servidor muitas vezes).

 curl -v  'https://afb.ukbiobank.ac.uk/api' -X POST -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: en-US,en;q=0.5'  -H 'Content-Type: application/json' -H 'Origin: https://afb.ukbiobank.ac.uk' -H 'Connection: keep-alive' -H 'Referer: https://afb.ukbiobank.ac.uk/variant/chr3-38435047-A-G'  --data-raw '{"query":"\nquery VariantSplitPopulationQuery($chrom: String!, $pos: Int!, $ref: String!, $alt: String!) {\n    variant(chrom: $chrom, pos: $pos, ref: $ref, alt: $alt) {\n      Chrom\n      Pos\n      Ref\n      Alt\n      alleleCount\n      alleleNum\n      alleleFreq\n      nHomozygotes\n      maxImpact\n      maxConsequence\n      HGVSp\n      geneSymbol\n      populationDetails {\n        population\n        alleleCount\n        alleleNum\n        alleleFreq\n        nHomozygotes\n        nHemiAlt\n      }\n    }\n  } \n","variables":{"chrom":"chr3","pos":38435047,"ref":"A","alt":"G"}}'
(...)
> POST /api HTTP/2
> Host: afb.ukbiobank.ac.uk
> User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0
> Accept: application/json, text/plain, */*
> Accept-Language: en-US,en;q=0.5
> Content-Type: application/json
> Origin: https://afb.ukbiobank.ac.uk
> Connection: keep-alive
> Referer: https://afb.ukbiobank.ac.uk/variant/chr3-38435047-A-G
> Content-Length: 596
(..)
< 
{"data":{"variant":{"Chrom":"chr3","Pos":38435047,"Ref":"A","Alt":"G","alleleCount":587506,"alleleNum":980494,"alleleFreq":0.5991938757401881,"nHomozygotes":178020,"maxImpact":"LOWEST","maxConsequence":"intergenic_variant","HGVSp":".","geneSymbol":"XYLB","populationDetails":[{"population":"African","alleleCount":3779,"alleleNum":18454,"alleleFreq":0.20477945160940716,"nHomozygotes":438,"nHemiAlt":null},{"population":"Ashkenazi Jewish","alleleCount":3032,"alleleNum":5714,"alleleFreq":0.5306265313265663,"nHomozygotes":796,"nHemiAlt":null},{"population":"East Asian","alleleCount":2101,"alleleNum":4484,"alleleFreq":0.4685548617305977,"nHomozygotes":507,"nHemiAlt":null},{"population":"Non-Finnish European","alleleCount":558994,"alleleNum":917198,"alleleFreq":0.6094583721290278,"nHomozygotes":170620,"nHemiAlt":null},{"population":"Other","alleleCount":8312,"alleleNum":15340,"alleleFreq":0.5418513689700131,"nHomozygotes":2309,"nHemiAlt":null},{"population":"South Asian","alleleCount":11288,"alleleNum":19304,"alleleFreq":0.5847492747617075,"nHomozygotes":3350,"nHemiAlt":null}]}}}

Mas quando quero usar um cliente Java, ele sempre retorna um código 403 (e uma página HTML em vez de JSON). Aqui está um exemplo mínimo que usa a consulta acima.


import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Test {

    public static void main(final String[] args) {
        try {
            final String query="{\n" +
                    "    \"query\": \"\nquery VariantSplitPopulationQuery($chrom: String!, $pos: Int!, $ref: String!, $alt: String!) {\n    variant(chrom: $chrom, pos: $pos, ref: $ref, alt: $alt) {\n      Chrom\n      Pos\n      Ref\n      Alt\n      alleleCount\n      alleleNum\n      alleleFreq\n      nHomozygotes\n      maxImpact\n      maxConsequence\n      HGVSp\n      geneSymbol\n      populationDetails {\n        population\n        alleleCount\n        alleleNum\n        alleleFreq\n        nHomozygotes\n        nHemiAlt\n      }\n    }\n  } \n\",\n" +
                    "    \"variables\": {\n" +
                    "        \"chrom\": \"chr3\",\n" +
                    "        \"pos\": 38435047,\n" +
                    "        \"ref\": \"A\",\n" +
                    "        \"alt\": \"G\"\n" +
                    "    }\n" +
                    "}\n";
            HttpClient httpClient = HttpClient.newHttpClient();
            
        
            HttpRequest.Builder hb= HttpRequest.newBuilder();
            
            hb.header("User-Agent","Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0");
            hb.header("Accept","application/json, text/plain, */*");
            hb.header("Accept-Language","en-US,en;q=0.5");
            hb.header("Content-Type","application/json");
            hb.header("Origin","https://afb.ukbiobank.ac.uk");
            hb.header("Referer","https://afb.ukbiobank.ac.uk/variant/chr3-38435047-A-G");
            

            hb.uri(URI.create("https://afb.ukbiobank.ac.uk/api"));
            hb.POST(HttpRequest.BodyPublishers.ofString(query));
            HttpRequest request = hb.build();
            
            
            HttpResponse<String> resp= httpClient.send(request, HttpResponse.BodyHandlers.ofString());
            System.err.println(resp.body());
            System.err.println(resp.statusCode());
                
        }
        catch(Throwable err) {
            err.printStackTrace();
        }
    }
}

a saída é:

<!DOCTYPE html><h(...)
403

Como posso fazer o programa Java funcionar? Obrigado!

EDIT: Também testei com '\n' em vez de '\n' na string json, mas obtive o mesmo resultado:

(...)
"    \"query\": \"\\nquery VariantSplitPopulationQuery($chrom: String!, $pos: Int!, $ref: String!, $alt: String!) {\\n    variant(chrom: $chrom, pos: $pos, ref: $ref, alt: $alt) {\\n      Chrom\\n      Pos\\n      Ref\\n      Alt\\n      alleleCount\\n      alleleNum\\n      alleleFreq\\n      nHomozygotes\\n      maxImpact\\n      maxConsequence\\n      HGVSp\\n      geneSymbol\\n      populationDetails {\\n        population\\n        alleleCount\\n        alleleNum\\n        alleleFreq\\n        nHomozygotes\\n        nHemiAlt\\n      }\\n    }\\n  } \\n\",\n" +

(...)
java
  • 1 respostas
  • 62 Views
Martin Hope
Nancy Moore
Asked: 2025-04-23 21:59:16 +0800 CST

Como permitir corretamente múltiplas origens para uma solicitação de origem cruzada (CORS)?

  • 5

O phpcódigo abaixo permite que apenas a URL http://example1.comtenha acesso à aplicação. Como posso permitir acesso apenas às quatro URLs abaixo em PHP?

http://example1.com
http://example2.com
http://example3.com
http://example4.com
<?php
error_reporting(0);
header('Access-Control-Allow-Origin: http://example1.com');
header('Access-Control-Allow-Methods: POST');
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");




$allowedOrigin = 'http://example1.com'; // Your expected origin

if ($_SERVER['HTTP_ORIGIN'] !== $allowedOrigin) {
    //echo "Access Denied.";
$return_arr = array("msg"=>"Access Denied");
echo json_encode($return_arr);
    exit();
}

$validReferer = 'http://example1.com/'; // Change to your actual domain!  Include trailing slash if the AJAX call comes from a subfolder
if (strpos($_SERVER['HTTP_REFERER'], $validReferer) !== 0) {
   // echo "Access Denied (Invalid Referer).";
$return_arr = array("msg"=>"Access Denied");
echo json_encode($return_arr);
    exit();
}

// begin insert records into database
?>
  • 2 respostas
  • 26 Views
Martin Hope
Adon Bilivit
Asked: 2025-04-23 20:58:07 +0800 CST

Mecanismo de seleção ideal ao escolher linhas relevantes de um dataframe

  • 6

Tenho uma planilha grande do Excel. Só me interessam certas colunas. Além disso, só me interessam linhas em que colunas específicas atendem a determinados critérios.

As seguintes obras:

import pandas as pd
import warnings

# this suppresses the openpyxl warning that we're seeing
warnings.filterwarnings("ignore", category=UserWarning, module="openpyxl")

# These are the columns we're interested in
COLUMNS = [
    "A",
    "B",
    "C"
]

# the source file
XL = "source.xlsx"
# sheet name in the source file
SHEET = "Sheet1"
# the output file
OUTPUT = "target.xlsx"
# the sheet name to be used in the output file
OUTSHEET = "Sheet1"

# This loads the entire spreadsheet into a pandas dataframe
df = pd.read_excel(XL, sheet_name=SHEET, usecols=COLUMNS).dropna()
# this replaces the original dataframe with rows where A contains "FOO"
df = df[df["A"].str.contains(r"\bFOO\b", regex=True)]
# now isolate those rows where the B contains "BAR"
df = df[df["B"].str.contains(r"\bBAR\b", regex=True)]
# output to the new spreadsheet
df.to_excel(OUTPUT, sheet_name=OUTSHEET, index=False)

Isso funciona. No entanto, não consigo deixar de pensar que pode haver uma maneira melhor de gerenciar os critérios de seleção, especialmente se/quando eles se tornarem mais complexos.

Ou será que o "passo a passo" é bom?

python
  • 1 respostas
  • 32 Views
Martin Hope
Razvan Zamfir
Asked: 2025-04-23 20:54:00 +0800 CST

O plugin de truncamento funciona apenas na primeira página de uma tabela de tabelas de dados

  • 5

Estou usando DataTables para exibir, paginar e classificar um conjunto de dados.

new DataTable('#employees', {
  info: false,
  paging: true,
  filter: false,
  "aLengthMenu": [5, 10],
  initComplete: function() {
    if (this.api().page.info().pages < 2) {
      $('.dt-paging').hide();
    }
  }
});

$(document).ready(function() {
  $('.truncate').block_ellipsis({
    lines: 2,
    more: function(nb) {
      return '<span class="badge bg-secondary">Show ' + nb + ' more</span>';
    },
    less: '<span class="badge bg-secondary">Show less</span>'
  });
});
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/2.1.8/css/dataTables.bootstrap5.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.slim.min.js"></script>
<script src="https://cdn.datatables.net/2.1.8/js/dataTables.min.js"></script>
<script src="https://cdn.datatables.net/2.1.8/js/dataTables.bootstrap5.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://www.jqueryscript.net/demo/jQuery-Plugin-To-Show-ide-Block-Elements-Block-Ellipsis/dist/block_ellipsis.js"></script>



<div class="container-fluid my-2">
  <h2>Data Tables</h2>
  <table id="employees" class="table table-bordered table-striped mx-1">
    <thead>
        <tr>
            <th class="w-auto">Name</th>
            <th class="w-25">Position</th>
            <th class="w-10">Office</th>
            <th class="w-25">Age</th>
            <th class="w-10">Skills</th>
            <th class="w-10">Salary</th>
        </tr>
    </thead>
    <tbody>
        <tr>            
            <td>Tiger Nixon</td>
            <td>System Architect</td>
            <td>Edinburgh</td>
            <td>61</td>
            <td class="truncate">
                <span class="badge rounded-pill bg-secondary">JavaScript</span>
                <span class="badge rounded-pill bg-secondary">CSS</span>
                <span class="badge rounded-pill bg-secondary">PHP</span>
                <span class="badge rounded-pill bg-secondary">Laravel</span>
                <span class="badge rounded-pill bg-secondary">Java</span>
                <span class="badge rounded-pill bg-secondary">Node</span>
                <span class="badge rounded-pill bg-secondary">CI/CD</span>
            </td>
            <td>$320,800</td>
        </tr>
        <tr>            
            <td>Garrett Winters</td>
            <td>Accountant</td>
            <td>Tokyo</td>
            <td>63</td>
            <td class="truncate">
                <span class="badge rounded-pill bg-secondary">JavaScript</span>
                <span class="badge rounded-pill bg-secondary">CSS</span>
                <span class="badge rounded-pill bg-secondary">PHP</span>
            </td>
            <td>$170,750</td>
        </tr>
        <tr>                
            <td>Ashton Cox</td>
            <td>Senior Software Developer</td>
            <td>San Francisco</td>
            <td>66</td>
            <td class="truncate">
                <span class="badge rounded-pill bg-secondary">JavaScript</span>
                <span class="badge rounded-pill bg-secondary">CSS</span>
                <span class="badge rounded-pill bg-secondary">PHP</span>
                <span class="badge rounded-pill bg-secondary">Laravel</span>
                <span class="badge rounded-pill bg-secondary">React</span>
                <span class="badge rounded-pill bg-secondary">Angular</span>
                <span class="badge rounded-pill bg-secondary">Java</span>
            </td>
            <td>$86,000</td>
        </tr>
        <tr>            
            <td>Cedric Kelly</td>
            <td>Senior Javascript Developer</td>
            <td>Edinburgh</td>
            <td>22</td>
            <td class="truncate">
                <span class="badge rounded-pill bg-secondary">JavaScript</span>
                <span class="badge rounded-pill bg-secondary">CSS</span>
            </td>
            <td>$433,060</td>
        </tr>
        <tr>            
            <td>Ștefan Popa</td>
            <td>Accountant</td>
            <td>Tokyo</td>
            <td>33</td>
            <td class="truncate">
                <span class="badge rounded-pill bg-secondary">CSS</span>
                <span class="badge rounded-pill bg-secondary">React</span>
            </td>
            <td>$162,700</td>
        </tr>
        <tr>            
            <td>Allan Smith</td>
            <td>Accountant</td>
            <td>London</td>
            <td>33</td>
            <td class="truncate">
                <span class="badge rounded-pill bg-secondary">CSS</span>
                <span class="badge rounded-pill bg-secondary">React</span>
            </td>
            <td>$162,700</td>
        </tr>
    </tbody>
  </table>
</div>

Estou usando o plugin Block Ellipsis para truncar as células na coluna "Habilidades" se elas forem muito longas.

O problema que enfrento é que o truncamento só funciona na primeira página de resultados.

O que causa esse problema e como posso corrigi-lo?

javascript
  • 1 respostas
  • 20 Views
Martin Hope
user2962393
Asked: 2025-04-23 19:32:16 +0800 CST

Obtenha o par de clique único (coluna, linha) da tabela SwiftUI no macOS

  • 5

Quando o usuário clica uma vez em uma SwiftUI Tableno macOS, gostaria de saber o par (coluna, linha) clicado, ou ponto. Adicionei onTapGesture()um manipulador ao Table, mas ele nunca é invocado. Como posso descobrir qual (coluna, linha) foi clicada?

Meu objetivo é implementar a seleção de células no meu modelo de visualização. Preciso ser capaz de determinar o par clicado (coluna, linha) para selecionar a célula correta no modelo de visualização.

Abaixo está o código de exemplo da Apple, ao qual adicionei o onTapGesture()manipulador ineficaz.

struct Person: Identifiable {
    let givenName: String
    let familyName: String
    let emailAddress: String
    let id = UUID()
}
struct PeopleTable: View {
    @State private var people = [
        Person(givenName: "Juan", familyName: "Chavez", emailAddress: "[email protected]"),
        Person(givenName: "Mei", familyName: "Chen", emailAddress: "[email protected]"),
        Person(givenName: "Tom", familyName: "Clark", emailAddress: "[email protected]"),
        Person(givenName: "Gita", familyName: "Kumar", emailAddress: "[email protected]")
    ]
    var body: some View {
        Table(people) {
            TableColumn("Given Name", value: \.givenName)
            TableColumn("Family Name", value: \.familyName)
            TableColumn("E-Mail Address", value: \.emailAddress)
        }
        .onTapGesture(perform: { p in
            print("clicked point \(p)")
        })
    }
}
#Preview {
    PeopleTable()
}
swiftui
  • 1 respostas
  • 25 Views
Martin Hope
routern
Asked: 2025-04-23 19:31:06 +0800 CST

Como ocultar o fundo de matchedTransitionSource?

  • 5

Como posso ocultar o fundo de um NavigationLink animado enquanto uso o gesto de deslizar para voltar? Aqui está o que eu tenho atualmente: e como eu quero que fique: semelhante ao app Fotos do iOS. Não tenho problema em cobrir o fundo com uma cor sólida ou um desfoque forte, mas não quero que ele fique visível durante a transição.
animação #1

animação #2

struct ContentView: View {
    @Namespace private var transitionNamespace
    var body: some View {
        NavigationStack {
            VStack {
                Text("Should not be visible while swiping")

                let value = "details"
                NavigationLink(value: value) {
                    Text("Link")
                        .frame(width: 200, height: 50)
                        .background(Color.green.opacity(0.5))
                        .clipShape(RoundedRectangle(cornerRadius: 32))
                        .matchedTransitionSource(id: value, in: transitionNamespace)
                }
            }
            .navigationDestination(for: String.self) { value in
                ZStack {
                    Color.yellow.ignoresSafeArea(.all)
                    Text(value)
                }
                .navigationTransition(.zoom(sourceID: value, in: transitionNamespace))
                .navigationBarBackButtonHidden(true)
            }
        }
    }
}

Outro pequeno problema relacionado: por que essa borda branca aparece enquanto o gesto está em andamento? Como posso corrigir a cor? bordas brancas

struct ContentView: View {
    @Namespace private var transitionNamespace
    var body: some View {
        NavigationStack {
            ZStack {
                Color.purple.ignoresSafeArea(.all)
//                    .padding(-200) // this is a solution?
                VStack {
                    Text("Should not be visible while swiping")

                    let value = "details"
                    NavigationLink(value: value) {
                        Text("Link")
                            .frame(width: 200, height: 50)
                            .background(Color.green.opacity(0.5))
                            .clipShape(RoundedRectangle(cornerRadius: 32))
                            .matchedTransitionSource(id: value, in: transitionNamespace)
                    }
                }
            }
            .navigationDestination(for: String.self) { value in
                ZStack {
                    Color.yellow.ignoresSafeArea(.all)
                    Text(value)
                }
                .navigationTransition(.zoom(sourceID: value, in: transitionNamespace))
                .navigationBarBackButtonHidden(true)
            }
        }
    }
}
  • 1 respostas
  • 36 Views
Martin Hope
Igr
Asked: 2025-04-23 19:24:13 +0800 CST

WooCommerce adiciona produto gratuito se houver outros produtos no carrinho. Problema de desaparecimento da barra de rolagem se o produto gratuito ainda não estiver presente [duplicado]

  • 5
Esta pergunta já tem respostas aqui :
Adicionar automaticamente ao carrinho uma variação de produto de presente programaticamente no WooCommerce? (1 resposta)
Ocultar produto de presente adicionado automaticamente do catálogo WooCommerce (1 resposta)
Fechado há 2 horas .

Este script lê o carrinho, verifica se os dois produtos estão presentes e adiciona outro diferente dos demais. A adição da quantidade do novo produto depende da quantidade dos demais.

Este script parece funcionar, mas o carregamento da página sofre um problema de exibição, pois a barra de rolagem desaparece e, portanto, não é possível navegar bem, se o produto gratuito for adicionado pelo script add_to_cart

add_action( 'template_redirect', 'pro_gift', 9);
function pro_gift() {
    if (is_cart()) {
        if ( sizeof( WC()->cart->get_cart() ) > 0) {
            $items_gift = WC()->cart->get_cart();
            $product_id = 33103;
            $product_ids = 33093;
            $product_id_gift = 34462;
            $product_id_size = 0;
            $product_ids_size = 0;
            $product_id_gift_size = 0;
            $product_id_gift_item = '';
            foreach($items_gift as $item_gift_k => $item_gift_v) { 
                if ($item_gift_v['product_id'] == $product_id ) {
                    $product_id_size = $item_gift_v['quantity'];
                }
                if ($item_gift_v['product_id'] == $product_ids ) {
                    $product_ids_size = $item_gift_v['quantity'];
                }
                if ($item_gift_v['product_id'] == $product_id_gift ) {
                    $product_id_gift_size = $item_gift_v['quantity'];
                    $product_id_gift_item = $item_gift_k;
                }
            }
            //echo '<!-- addo= p' .$product_gift. ' i' .$product_id_size. ' ids' .$product_ids_size. ' ig' .$product_id_gift_size. ' -->';
            if ($product_id_size > 0 && $product_ids_size > 0) {
                $product_gift = min($product_id_size, $product_ids_size);
                if ($product_gift > 0 && $product_id_gift_size == 0) {
                    WC()->cart->add_to_cart( $product_id_gift, $product_gift);
                }
                elseif ($product_gift > 0 && $product_id_gift_size > 0 && $product_id_gift_size < $product_gift) {
                    WC()->cart->set_quantity($product_id_gift_item, $product_gift);
                }
            }
        }
    }
}

Além do script acima, então vou tornar os novos produtos adicionados gratuitos com base na quantidade dos solicitados

add_action( 'woocommerce_cart_calculate_fees', 'pro_gift_d', 10 );
function pro_gift_d() {
    if (is_cart() || is_checkout()) {
        if ( sizeof( WC()->cart->get_cart() ) > 0) {
            $items_gift = WC()->cart->get_cart();
            $product_id = 33103;
            $product_ids = 33093;
            $product_id_gift = 34462;
            $product_id_size = 0;
            $product_ids_size = 0;
            $product_id_gift_size = 0;
            $product_gift_line = 0;
            foreach($items_gift as $item_gift_k => $item_gift_v) {
                if ($item_gift_v['product_id'] == $product_id ) {
                    $product_id_size = $item_gift_v['quantity'];
                }
                if ($item_gift_v['product_id'] == $product_ids ) {
                    $product_ids_size = $item_gift_v['quantity'];
                }
                if ($item_gift_v['product_id'] == $product_id_gift ) {
                    $product_id_gift_size = $item_gift_v['quantity'];
                    $product_gift_line = $item_gift_v['line_total'] / $product_id_gift_size;
                }
            }
            if ($product_id_size > 0 && $product_ids_size > 0 && $product_id_gift_size > 0) {
                $product_gift = min($product_id_size, $product_ids_size);
                $product_gift_discount = $product_gift_line * $product_gift;
                WC()->cart->add_fee( __('PROMO PRODOTTO GRATUITO', 'woocommerce'), -$product_gift_discount);
            }
        }
    }
}

Esses scripts parecem funcionar bem, adicionando um produto ao carrinho se houver dois outros produtos e fazendo isso com base na quantidade deles. Mas, como já mencionado, se o produto gratuito ainda não estiver presente no carrinho e, portanto, for adicionado com esta parte do script "WC()->cart->add_to_cart( $product_id_gift, $product_gift);", a barra de rolagem desaparece e não é possível navegar.

O que fiz de errado? E como o código poderia ser melhorado?

  • 1 respostas
  • 24 Views
Martin Hope
Stefan
Asked: 2025-04-23 19:07:45 +0800 CST

Como faço para excluir o 0 (zero) sem quebrar o alinhamento do campo?

  • 6

Para a Defesa de Consolas (guia do jogador / java), estou tentando criar uma grade/campo onde a torre deve ser defendida.

O alinhamento do código está funcionando até agora, mas estou tentando remover o zero no canto superior esquerdo, onde começam as colunas e linhas. Alguém tem alguma dica para remover e manter o campo igual? Sr. Stefan

code : 

package PlayersGuide.Opdracht11;

public class TowerDefenseField {
    public static void main(String[] args) {
        int size = 21;
        String[][] field = new String[21][21];

    /*
    make the grid :
    make a for loop that uses a dot "." as placeholder
    This for-loop makes the blueprint for the grid :
    for : int variable for 20 rows, condition : if number of rows is smaller then 20, 
    row increment/+ 1
    inner for loop : int var for columns, condition : if num of col is smaller then 20, 
    col increment/+ 1.
     */
    for(int row = 0; row < 21; row++) { // print 20 rows
        for (int col = 0; col < 21; col++) { // print 20 columns
            field[row][col] = "."; // this prints the dot on every column / row
        }
    }
        System.out.println("   "); // ruimte voor rijnummers! deze worden geprint, 
        //zowel als de nummer die "eroverheen"worden geprint.
        for (int col = 0; col < 21; col++){
            System.out.printf("%4s", col);
        }
        System.out.println("   ");
        for(int row = 1; row < 21; row++){
            System.out.printf("%4d | ", row);
            for (int col = 0; col < 20; col++){
             System.out.printf("%3s",field[row][col] + "   ");
            }
            System.out.println();
        }
    }
}
java
  • 1 respostas
  • 46 Views
Prev
Próximo

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