Ir ao conteúdo
  • Cadastre-se

arfneto

Membro Pleno
  • Posts

    6.207
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de arfneto em Questionamentos sobre a ONU EG8145v5. foi marcado como solução   
    O que importa não é só a quantidade de equipamentos mas a cobertura. Como eu disse, não dá pra colocar um rádio em dois lugares, E assim, em especial a 5GHz não é esperto desligar o wifi que você já tem na ONU. Raramente wifi a 5ghz passa com qualidade mais de uma parede...
     
    Sobre o duplo NAT se tem é porque ligou errado. Não deve nunca usar a porta WAN em roteadores que não o que está ligado de fato à WAN. A menos que possa desabilitar NAT no primeiro roteador e ligar apenas roteadores nesse nível, mas aí provavelmente saberia porque precisa disso e como fazer.
     
    Nos últimos meses postei muitos roteiros, desenhos, roteiros e argumentos de como ligar muitos roteadores ao mesmo tempo em redes domésticas ou de pequenas empresas. E parei de repetir.
     
    Tenho uma lista de alguns tópicos e pode ver lá e perguntar aqui sobre qualquer dúvida...
     
    Veja 
    Alguns números
    https://www.clubedohardware.com.br/forums/topic/1605208-como-criar-uma-rede-pública-isolado-com-um-segundo-roteador/#comment-8429612
     
    Outro caso
    https://www.clubedohardware.com.br/forums/topic/1606750-configurando-roteadores-d-link-dir-842-e-apple/#comment-8434558
     
    detalhes aqui
     
    https://www.clubedohardware.com.br/forums/topic/1613345-abrir-porta-com-modem-que-distribui-faixa-de-ip-diferente-para-o-roteador/#comment-8460463
     
    exemplo
     
    https://www.clubedohardware.com.br/forums/topic/1625440-velocidade-duplex-pode-causar-quedas-de-internet/#comment-8506640
     
    resumo 
     
    Nunca conecte roteadores secundários via porta WAN. Isso cria outras redes IP e segmenta o tráfego. A primeira rede não vê as outras. As outras veêm a primeira apenas porque nela é que está o gateway padrão dos roteadores. Fora isso quase nada funciona mais direito. Incorre em múltiplo NAT e pode perder metade da banda nas redes que não a primeira só por causa disso. Nada vai funcionar direito com dispositivos que não estejam na mesma rede IP. Isso inclui espelhamento de tela de celulares, compartilhamento de arquivos, impressoras wifi, lâmpadas acessórios smart  e outras coisas. Encaminhamento de portas tem que ser repetido em TODAS as redes secundárias. Broadcast de rede não passa pelos roteadores e assim coisas como Wake-on-LAN não vão funcionar. Desconexão temporárias por alguns segundos  acontecem quase sempre devido aos intervalos de lease de DHCP. Acesso remoto é um pesadelo.  


  2. O post de arfneto em Ligar computador de qualquer canto fora da minha rede. Wake on Wan/Wake on Lan. foi marcado como solução   
    Não, @snake odeia HD não é por isso que existe essa opção 
     
    E ela não é a mesma coisa que WOR ou WOL.
     
    No BIOS --- sim, em português BIOS é masculino, o S de sistema, masculino --- essa opção existe em geral com 3 opções: "Último Estado", "Ligado" e  Desligado" para permitir essencialmente que 
    ao cair a força: quando voltar a energia o micro possa reiniciar sozinho. Isso existe porque em caso de micros que existem apenas para rodar algum aplicativo, talvez sem teclado ou monitor, no caso de cair a força ele reinicie sozinho e tudo volte ao normal (usando scripts de login e de configuração) sem ter que ir alguém até lá só pra apertar o botão. Os tais "servidores" por exemplo. Imagine ter um servidor de mídia em sua casa, com mídia. Filmes e vídeos e música. Ele pode ficar dentro do armário ou no teto ou em outro piso. Ao ligar o micro o aplicativo de mídia entra no ar. Plex é o exemplo mais comum. E logo em seguida você pode passar a assistir mídia pela rede toda ou mesmo de fora dela. para esse caso se usa a configuração "Last State" de modo que se o micro estava ligado e desliga ao voltar a força ele liga de novo mas nesse caso se você o desligar e cair a força nada acontece ao voltar: o micro continua desligado como desligado estava. E é isso o que se quer e é isso que essa opção resolve com a configuração em OFF ao cair a força --- mesmo com o servidor ligado --- quando voltar ele não vai ligar. Essa é a configuração para um computador comum. mas com a seleção em "Always on"  --- ou seja lá como estiver em sua versão de BIOS --- ao ligar na tomada ele sempre vai ligar. Não há como saber se é o que você quer. Se você tirar a placa e levar para outro lugar ou para outro uso continua assim. Se rodar outro sistema continua assim. Se você mudar o micro de lugar e ligar na tomada ele vai ligar. De bobeira. TODA VEZ. E pode ter gente que não sabe disso, ao seu lado no escritório ou em casa. essa é a mesma coisa que acontece com WOR: você deixa seu micro ligado permanentemente a um ramal no escritório, ou a uma linha telefônica. Se alguém ligar, de propósito ou não ele vai ligar. Se alguém ligar da Polonia a cobrar ele vai ligar. Pela tensão do Ring apenas. Não é o que se quer em geral, mas décadas atrás isso já era um avanço porque permitia o óbvio: ligar um servidor ou um computador importante por telefone, sem ter que ir até ele. existiam até tomadas controladas por telefone, exatamente o que faz essa que mostrou aí, só que essas de hoje usam ethernet (wifi é ethernet). E qual a diferença afinal?
     
    Simples: WOL usa pacotes de broadcast que tem o endereço de rede do micro a ser ligado embutido na mensagem. Tem o endereço da placa de rede, não o endereço IP, claro, já que a máquina provavelmente está desligada. Todos os micros da rede recebem isso, mas apenas a placa de rede com esse endereço vai atender e ligar o micro, se as outras condições estiverem ok.
     
    Ainda pode ser enviado por engano, mas entenda o quanto é mais confiável...
     
    Não é como essa tomada que pode ligar um lustre no fim do corredor. 
     
    Pode atender a necessidade de muitos, mas espero que tenha entendido que não é a mesma coisa que Wake on Lan e que essa opção de configuração não existe para isso.
     
    As opções de Wake-up são as que em geral estão no mesmo menu no BIOS:
    atividade via PCI atividade via PCIx RTC - relógio: liga em certo horário teclado - para teclados que tem a tecla POWER ou uma convenção como Control-ESC mouse - algum movimento no mouse liga a máquina  
     
     
     
  3. O post de arfneto em Rede caseira entre um PC desktop (sem wifi) e um Macbook (não conecta cabo) foi marcado como solução   
    "Rede caseira entre um PC desktop (sem wifi) e um Macbook (sem ethernet)"
     
    @ThiagoVideo wifi também é ethernet...
     
    Se os dois acessam a impressora então já tem uma parte do caminho. Se acessa a internet a partir dos dois estão na mesma rede ou ao menos compartilham o mesmo gateway de algum modo...
     
    O simples é criar uma conta no MAC e no Windows com o mesmo nome e senha. E colocar os dois no mesmo grupo de trabalho. Acho que isso pode ser feito direto na interface gráfica dos dois sistemas, sem instalar nada mais.
     
    Se for preciso instalar algo instale SMB no MAC --- o pacote SAMBA --- e edite smb.conf para criar as contas e compartilhamentos do MAC para o Windows. Do lado do MAC o cliente SMB já deve localizar os compartilhamentos do windows e não precisa fazer nada.
     
    MacOS é Linux há tempos. Então pode abrir um terminal e ver se existe a pasta /etc/samba por exemplo
  4. O post de arfneto em PC conectado via cabo não encontra Notebook conectado via Wi-Fi foi marcado como solução   
    Pode ter algo do tipo wifi isolation que pode estar ativo na configuração do wifi. Se não tem acesso ao aparelho deve consultar o provedor e pedir para desabilitar. Muita gente achava que isso era bom e que aumentava a segurança... 
  5. O post de arfneto em Reestruturar WiFi de uma casa grande foi marcado como solução   
    Bem, se leu o que eu escrevi já deve imaginar o que vou escrever a seguir: ligue toda a infraestrutura via cabo. Descarte o repetidor e compre outro roteador. Repetidores são algo pra usar em algum tipo de emergência. Vão repetir um sinal quando começar a degradar? E o máximo que vão repetir é o que chega até ele. E o tráfego do que vier a ser ligado nele vai todo passar por ele.
     
    Coloque um roteador perto de cada TV e um outro lá pro fim da casa. Esse terceiro pode ser um AP wifi mesmo, mas um roteador é melhor porque o preço é parecido e o roteador vai te dar mais 3 portas LAN, já que cada roteador tem um switch embutido.
     
    Se for comprar algo wifi não compre NADA que não seja wifi6 ou wifi6E. Sobre onde colocar apenas use um celular e um aplicativo como o wifi analyzer que tem pro telefone do robo e o da frutinha. Coloque seu Archer onde quer medir o sinal e simplesmente veja na tela do celular os valores em dbm. Nem precisa saber o que é bom. Pode só conectar e ver as barrinhas. E claro que não precisa de internet. A rede wifi é um subconjunto da rede local. Nada tem a ver com a internet.
     
     
    Deve estar enganado quanto ao DHCP. Fixou mesmo endereços para os celulares e as TV?
     
    Como sabe se tem uma única rede IP?
     
    Não teria ligado o C60 ou o tal repetidor via porta WAN teria? Usou aquela porta azul????
     
    Como te expliquei cada roteador inclui um switch. O da VIVO tem 3 portas LAN o C60 tem 4. Como tem que ligar um ao outro vai usar uma de cada.
     
     
  6. O post de arfneto em Computador não consegue achar rede wifi sem fio foi marcado como solução   
    Isso explica tudo
  7. O post de arfneto em Dois roteadores na mesma ONU foi marcado como solução   
    Como te disse, parei de explicar as mesmas coisas em todos os tópicos, e por isso só passo adiante a mesma lista acho que desde julho. E nessa semana parei de passar até alista e passei apenas duas vezes um tópico que tem a lista 😄 Não leve a mal.
     
    Acho que com o passar do tempo está cada vez mais comum usar vários roteadores e pontos de acesso wifi na mesma rede e sem algum equipamento especialmente configurado na entrada --- border router.

    E tem muitos mitos nessa área no BR, como:
    não poder ter mais de um servidor DHCP na rede (se pode e muitas vezes deve ter). ligar roteadores em série e não em paralelo (é um desastre em termos de performance e tráfego inútil). não pode ter mais de um acesso a internet na mesma rede sem um equipamento especial (pode e é simples). usar as portas WAN em roteadores que não estão ligados ao gateway público (o roteador da operadora). E se pode perder mais de metade da banda devido ao múltiplo NAT.  Assim muita gente pergunta a mesma coisa e poucos pesquisam sobre o que já está escrito aqui.
     
    Notou que tem uma legenda na lista de tópicos que eu mostrei?
     
     
    Usar como AP desativa todo o resto que tem no roteador. Pode em muitos casos desativar as portas LAN. Cuidado.
     
    Em geral o simples é
    não mudar nada: usar como router, mantendo o uso de wifi e do switch embutido (as portas LAN) e sempre que possível mantendo o uso do serviço de DHCP em pelos menos um outro roteador. usar redes e senhas diferentes no wifi porque exceto pelo caso de mesh a conexão vai mesmo cair ao mudar de uma antena para outra. Não usar nunca a porta WAN a menos que tenha desabilitado NAT na rede do modem e só tenha ligado roteadores na rede primária. Usar endereços fixos nos roteadores, obviamente fora da faixa de DHCP em uso.  
     
  8. O post de arfneto em Código para obter deslocamento de arquivo de swap no Linux foi marcado como solução   
    Para combater o tédio vale tudo. Mas essa linha não se trata de "bruxaria" nem é nada de especial.
     
    Um pouco de história
     
    Todo script no Unix, hoje Linux ou Android ou MacOS 🙂  pode ser um programa C.
     
    C foi criada para ajudar a escrever o Unix awk estava no Unix desde o início Mais ainda: o K de AWK é o mesmo do primeiro e clássico livro de C, The C Programming Language, o hoje professor em Princeton entre outras coisas, Brian Kernighan. Aho e Weinberger e também Dennis Ritchie e Ken Thompson trabalhavam todos nos laboratórios Bell.
     
    O comando
     
    filefrag -v /swapfile | awk '$1=="0:" {print substr($4, 1, length($4)-2)}'  
    Na documentação citada
     

     
     
     
     
     
     
     
     
     
     
     
    Então está claro que o comando apenas resulta em 38912.
     
    pipes são  essenciais em Unix. '|' é o símbolo de pipe em Unix e pipes foram criadas na mesma época em que C, na primeira vez em que se teve memória e performance suficiente para rodar um sistema e compilar algo em um computador, incluído aí o próprio sistema. O primeiro computador assim foi o PDP-11/45 e aí só aí provavelmente o Unix virou algo significativo.
     
    De volta ao programa: a saída do filefrag é passada para um programa AWK de uma única linha e ele retorna o deslocamento do arquivo de swap.
     
    O programa de uma linha, em um arquivo 'pgm'
     
    $1=="0:" {print substr($4, 1, length($4)-2)}  
    Um arquivo de teste chamado 'coisa'
     
    Filesystem type is: ef53 File size of /swapfile is 4294967296 (1048576 blocks of 4096 bytes) ext: logical_offset: physical_offset: length: expected: flags: 0: 0.. 0: 38912.. 38912: 1: 1: 1.. 22527: 38913.. 61439: 22527: unwritten 2: 22528.. 53247: 899072.. 929791: 30720: 61440: unwritten 0: 0.. 0: ClubeDoHardware.. 38912: 1:  
    O que você fez em seu programa C é equivalente a pegar o valor do offset do primeiro segmento do arquivo, aquele número que está na quarta coluna da linha que começa claro por : "0:" , na saída do filefrag come vê acima: 38912. O arquivo acima claro em uma linha a mais e vou mostrar porque a seguir.
     
    O que o programa de uma linha faz? 
     
    em todas as linhas que tem "0:" mostra na tela o quarto campo, exceto as duas últimas letras. E é só isso
     
    Exemplo
     
    [arfneto@fedora ~]$ cat coisa Filesystem type is: ef53 File size of /swapfile is 4294967296 (1048576 blocks of 4096 bytes) ext: logical_offset: physical_offset: length: expected: flags: 0: 0.. 0: 38912.. 38912: 1: 1: 1.. 22527: 38913.. 61439: 22527: unwritten 2: 22528.. 53247: 899072.. 929791: 30720: 61440: unwritten 0: 0.. 0: ClubedoHardware.. 38912: 1: [arfneto@fedora ~]$ cat pgm $1=="0:" {print substr($4, 1, length($4)-2)} [arfneto@fedora ~]$ awk -f pgm coisa 38912 ClubedoHardware
    Como vê a saída seria mesmo 38912. Só não foi porque eu coloquei mais uma linha lá no arquivo de entrada para mostrar o efeito.
     
    Do manual de AWK
     
     
    Sobre o programa C
    não há razão pra alocar map dinamicamente se o tamanho já é conhecido desde o início 5 'goto fim' para economizar uma linha de programa talvez só deixe o programa mais confuso de ler  calloc para map é redundante porque a estrutura vai ser toda reeescrita pela chamada a ioctl uma variável iniciada com EXIT_FAILURE para eventualmente trocar o valor para EXIT_SUCCESS pode ser exagero. Porque não retornar as constantes simplesmente? Foram criadas para isso. sair com exit() em main é pouco relevante.  
    Se pode reescrever em C todos os scripts que rodam no boot por exemplo. Tédio à parte pode não haver razão para tanto.
     
     
  9. O post de arfneto em Acessar roteador secundário, terciário, quaternário foi marcado como solução   
    Não sei de onde apareceu essa nomenclatura, já li em outros lugares. Eles não estão "em bridge". bridge é outra coisa. LAN to LAN não é bridge exceto no desenho. Crie uma bridge no Windows ou no Linux e verá a diferença.
     
    Eles estão na rede, são dispositivos normais da rede local. Que não tem bridges, ao menos não por eles. Note que o fato de estarem em cascata é terrível em termos de performance e claro que vai penalizar todo mundo. A capacidade de tráfego e comutação desses roteadores comuns é pequena. E se tiver por exemplo algo que gera muito tráfego lá entre os dispositivos no terceiro ou quarto nível a rede toda vai sofrer. 
     
    Procure a todo custo usar um cabo direto entre o roteador principal e esses, 3 cabos. E considere um switch de qualidade lá no começo da coisa.
     
    Vários servidores DHCP na rede "pode ser até bastante recomendável"  desde que feito de propósito.
     
    A questão do forwarding é simples se tem espaço na tabela de encaminhamento. Cada roteador em geral atende na porta 80 ou permite que você escolha outra para a interface de gerenciamento, tipo 8080 ou 1080 ou a que queira. Então você escolhe uma porta para cada um, tipo 10002 10003 e 10004 para os 3 outros, e no primário você encaminha o tráfego que entrar para 10002 para 192.168.0.2 e assim por diante. 
  10. O post de arfneto em Como faço uma função que gere uma cópia de uma lista? foi marcado como solução   
    Não, não copia. A função apenas cria um novo ponteiro para o início da lista original:
     
    List* copy_x(List* li) { if (li == NULL) return 0; List* node = (List*)malloc(sizeof(List)); if (node == NULL) return 0; node = li; return node; }  
    Para copiar a lista é preciso criar novos nodes e copiar os dados da lista original. E claro que o endereço de início da cópia será diferente. Assim a única coisa que foi copiada na função que escreveu está errada.
     
    Sobre essa declaração
     
    struct database { struct student info; struct database* next; }; typedef struct database Database;  
    ela deveria estar em exercises.h e não solta aí no meio da implementação. Escrevendo assim só vai ter problemas para achar as coisas e para reaproveitar esse código.
     
    E o normal é escrever a definição no typedef assim:
     
    typedef struct { char name[50]; int number; } Student; typedef struct database { Student info; struct database* next; } Database;  
    Student pode e deve ser anônima. Não precisa de 2 nomes para a mesma coisa.
    E Database precisa de outro nome mas esse deve ser reservado para uso interno apenas.
     
    Evite isso como a COVID-19:
     
    typedef struct database* List;  
    NUNCA crie tipos que são ponteiros. Deixe isso para a Microsoft e espere que eles também desistam. E no caso desses --- a Microsoft --- esses nomes sempre começam por P. É um inferno e sempre cai na sua cabeça. A linguagem C já resolveu isso: um asterisco na declaração indica que é um ponteiro. Se usar um nome você daqui a meia hora ou qualquer um que tenha que ler seu programa vai ter que ficar lendo a definição para saber que List é um ponteiro.
     
    E usar isso
     
    int insert_start_wr(List* x, Student);  
    no seu programa quer dizer que x é o que? database** e isso é um inferno. Fuja disso.
     
    Sobre as listas ligadas
     
    A lista é um conjunto possivelmente vazio de nós. E cada nó aponta para um dado, ou contém um dado como no seu exemplo. São 3 coisas e seu programa só tem duas. E isso vai complicar tudo. Imagino que see() seja uma função de teste que mostra o conteúdo da lista. Não escreveu isso.
     
    List* create();  
    Isso quer dizer que create() retorna um ponteiro para um ponteiro para database. Muito complicado. Defina os dados, os nós e a lista e declare create retornando Lista*, o simples.
     
    insert()
     
    Sua lista é de nós e os nós contém estudantes então inserir um estudante na lista deveria ser 
     
    int insert(Student* um, Lista* lista);  
    porque é mais simples: recebe um ponteiro para um dado e um ponteiro para a lista e insere. Deu certo? retorna 0, o normal em C.
     
     
    Considere esse exemplo de declaração e compare:
    typedef struct { char name[50]; int number; } Student; typedef Student Info; typedef struct um_node { Info info; struct um_node* next; } Node; typedef struct { size_t size; Node* ini; } Lista; Lista* create(); Lista* delete (Lista*); int insert_back(Student*, Lista*); int insert_front(Student*, Lista*); Lista* copy(Lista*);  
    Essa é a maneira clássica de escrever isso. Note que a lista é de nós e cada nó tem um Info que é o dado. 
     
    E um typedef nesse caso define Info como sendo Student. Assim as funções podem ser copiadas para outros usos, como aquele próximo exercício 🙂 que pode ser de playlist, ou de livros ou de produtos e tal...
     
    Em geral são usados apenas ponteiros nas funções porque é mais compacto e rápido.
     
     
     
  11. O post de arfneto em Programa de limpeza de casas foi marcado como solução   
    Meu palpite grátis:
     
    Evite esse tipo de comentário:
     
    /*Função principal, responsável por chamar as demais funções abaixo*/ int main() {
    Comente o que está fazendo ou porque está fazendo deste modo
     
    Seu programa tem muitos erros ainda.
     
    Deixe os protótipos FORA de main(). Se metragem_limpeza() retorna um int porque calcula em um float? Teste o retorno de scanf(). É ingênuo não testar e seguir cegamente em frente. 2 printf() de uma linha são dezenas de vezes mais lerdos que um printf() de suas linhas. E se não vai formatar nada não use printf e sim puts(). Evite esses comentários com  /* */ e use o mais prático //  
     
  12. O post de arfneto em Duas conexões Ethernet diferentes numa mesma casa foi marcado como solução   
    Uma conexão ethernet é entre dois pontos. Uma rede ethernet é um conjunto dessas conexoes e nada tem a ver com INTERNET, não sei se é disso que está falando.
     
     
    Um AP, ponto de acesso no popular, oferece acesso a um recurso que chega de alguma maneira, por radio ou por algum cabo, de rede, de fibra otica ou por eletricidade mesmo. O recurso pode vir de um roteador, de um switch, de um computador, qualquer coisa.
     
     
    Sim, é possível e bem comum. Um exemplo doméstico trivial:  numa casa comprida do outro lado da piscina tem uma TV que tem conexão de rede mas não tem wifi. Então se pode usar um AP nessa configuração: o sinal vem por wifi de outro ponto de acesso e se liga a TV na saída RJ45 desse aparelho.
     
     
     
    Não é preciso ter um segundo provedor. E ter um segundo provedor não implica em uma segunda rede ethernet. Pode ter vários provedores ligados na mesma rede ethernet física. Como pode não ter nenhum provedor. Rede local, a LAN, nada tem a ver com a internet. Os pacotes que não são de sua rede vão para o gateway padrão a menos de alguma rota armazenada em algum roteador. Só isso. 
     
     
    Ainda sobre isso, considere que wifi também é ethernet, só muda a mídia física de cabo para rádio.
  13. O post de arfneto em Puxar cabo de rede de 25 metros faz perder velocidade? foi marcado como solução   
    @PedroNoal
     
    Cobre é o melhor condutor. Não sei de onde "o pessoal"  concluiu que não era CAT5e, e não sei porque o CAT6 ou CAT7 seria mais confiável. Esses cabos são vendidos em caixas de pouco mais de 300m. Como vai precisar de só um pouco talvez possa procurar por alguém quie venda por metro, como alguém de infraestrutura na sua cidade.
  14. O post de arfneto em Configuração roteador para repetidor de sinal foi marcado como solução   
    Esse aparelho não permite ao servidor DHCP definir o endereço do gateway padrão então deverá mesmo desabilitar.
     
    Se pode levar um cabo até ele faça isso e use o modo AP Access Point e não o modo repetidor. E na configuração de rede sem fio use nome e senha como preferir.
    Ao menos num primeiro momento use um novo nome para poder comparar os níveis de sinal em vários pontos da casa.
     
    Ao desmarcar a caixa como ve na figura abre um formulário para digitar a senha
     
    Defina antes de tudo um endereço de rede para ele dentro de sua rede primaria e fora da faixa de dhcp, para não perder acesso à configuração desse aparelho.
     
    Você tem outros roteadores ou AP alem desse e do roteador do provedor?
  15. O post de arfneto em Canal do roteador e latência foi marcado como solução   
    Não existe "ping" de download ou de upload. ping é um pacote padrão de dados que é enviado para um lugar pra ver se ele está lá e quanto demora a resposta.
     o outro lado pode estar lá e nem responder. Seu roteador por exemplo provavelmente tem isso como opção.
     
    Veja ao lado uma configuração dessas de um roteador antigo da marca d-link.
     
     
    Quanto aos canais em uso no wifi provavelmente é melhor não mexer nisso. A razão é simples: isso é dinâmico e só vale na hora em que usa o Analyzer e ele mede os sinais. No minuto seguinte seus vizinhos podem ligar ou desligar aparelhos de alta potência também configurados manualmente nos mesmos canais que você viu livres ou congestionados...
     
    Se espera que não faça diferença o programa que usou, já que todos eles medem a mesma coisa.
  16. O post de arfneto em É possível substituir o modem Vivo Fibra? foi marcado como solução   
    @Felipe-Bat sim. precisa configurar de acordo ou vai perder metade da banda do que for para o segundo.
     
    postei uns numeros, desenhos e explicação aqui umas vezes, e parei de repetir. Em resumo: não use a porta WAN, use uma única rede LAN. Coloque o segundo do lado oposto da casa, ligue os dois via cabo. Pode ver em
     
    numeros no 1 
     
    detalhes aqui
     
    exemplo no 3 
     
    resumo
     
  17. O post de arfneto em Sugestões de placa de rede wireless para usar no Dell Optiplex 3020 foi marcado como solução   
    Qualquer uma que tenha WIFI6 ou superior, como a Intel AX210
  18. O post de arfneto em não consigo concatenar e ler strings foi marcado como solução   
    Sei que é usual e dá pra ver por esses exemplos aqui, mas IDE é masculino. UM IDE, porque IDE é ambiente e ambiente em português é masculino.
     
     
    Code::Blocks  é apenas um ambiente de desenvolvimento, nada mais. Sequer inclui um compilador. Visual Studio é um ambiente gigante muli-linguagem. E não necessariamente inclui um compilador.
     
    Não há um "problema" especial. Só está bem errado o que escreveu. 
     
    C e C++ são linguagens muito padronizadas, com mais de 50 anos. C++ em especial é controlada por um comitê e em normas publicadas a cada 3 anos. C++23 vai sair em 2023 😄  por exemplo.
     
    Visual Studio roda com o compilador da Microsoft e o Code::Blocks com qualquer um inclusive esse. Em geral é instalado com o compilador gcc. 
     
    Mas quem define C++ é o padrão iso. Nos últimos anos o compilador da Microsoft tem estado adiante em termos da linguagem do que o gcc ou o clang, os outros compiladores mais comuns para essas linguagens. corotinas e std::format por exemplo estão no compilador da Microsoft há anos e agora em 2023 estão chegando no gcc, se é que roda tudo da linguagem.
     
    Um problema comum: o Code::Blocks muitas vezes é instalado com uma versão de gcc de anos e anos atrás e configurado para uma versão de C++ ainda mais antiga, como de 1998. E o C de 1989. E aí os estudantes ficam com a noção de que isso é a linguagem e ficam com a versão de décadas atrás.
     
    Não existe o C++ do Code::Blocks e o C++ da Microsoft. Existe C++ como no standard. Há uma pequena liberalidade para implementação por parte dos caras que escrevem os compiladores mas não afeta o nível comum de programas. Muito menos os programas de estudantes.
     
     
    Sobre o programa como postou 
     
    Declarou esse protótipo
     
    void jogar(string palavra, int tentativas);  
    E escreveu essa função
     
    void jogar( string palavra, string palavraresolvida, int tentativas) { // ... }  
    E está errado em qualquer plataforma.
     
    Declarou
     
    bool verificar(string palavra, char resp);  
    mas escreveu 
     
    bool verificar( string palavra, string& palavraresolvida, char resp) { //... }  
    E está claro errado em qualquer caso. 
     
    Os protótipos tem menos argumentos que as funções que declarou. C++ tem poliformismo, overloading. Então pode ter várias funções --- o sentido de poli --- com o mesmo nome e argumentos diferentes. Então para o compilador pode estar certo mas para o linker não vai ter a função certa para gerar o código. Apenas corrija isso.
     
    O compilador não sabe se você tem a função com DOIS argumentos num outro arquivo então até aí tudo bem. Só que não tem. E aí na fase seguinte de link para gerar o executável não tem a função com 2 argumentos....
     
    Veja o primeiro erro de seu programa na visão do compilador...
     
    error C2660: 'jogar': function does not take 2 arguments  
    E o que tem na linha 21
     
    jogar(palavra, tentativas);  
    Só que a única versão de jogar() que você escreveu tem 3 argumentos e não 2.
     
     
    Só está errado. Para o gcc no Code::Blocks ou o CL.exe do Visual Studio, para qualquer versão de C++
     
    getline(cin, tolower(resp));  
    Pois é: getline()  está definida onde??? Não incluiu string. Está errado. Incluiu cstring que é outro bicho.
     
    Mais ainda: tivesse você incluído string ainda ia dar erro.
     
    Leia o manual.
     
    istream& getline (istream& is, string& str);  
    Nem precisa na verdade porque Visual Studio mostra a definição: basta deixar o ponteiro do mouse sobre a chamada e ficar olhando...

     
    Claro, isso porque tolower() retorna o que? basta apontar...
     

     
    Retorna um int.
     
    Então está escrito aí que getline espera 2 parâmetros nesse caso: um (a) stream e uma referência para string. Você forneceu um int. Não tem isso. Só não deu esse erro porque o IDE sequer achou a definição de geline() já que você também não colocou o #include <string>
     
    E note que getline tem outros overloads. Pode ser chamada com 3 parâmetros por exemplo.
     
    Acho melhor corrigir esse mínimo e postar o novo código antes de ver os outros erros.
     
     
     
     
  19. O post de arfneto em Uso de DNS dinâmico em roteadores. foi marcado como solução   
    @Calborghete Não pode fazer isso. Cada fabricante desses roteadores inscreve algumas opções de DDNS na programação de seus aparelhos, a critério deles e não seu. Em geral No-IP está sempre presente. Alguns fabricantes podem manter servidores de registro próprios também. Sei que o fabricante D-Link por exemplo deixou de oferecer isso em 2020.
     
    Se seu roteador não tem esse serviço disponível deve usar um cliente de registro do seu provedor DDNS em sua rede rodando em algum dispositivo nela, como um PC que ligue constantemente.
     
     
  20. O post de arfneto em Como levar a net pro pc sem ter cabo foi marcado como solução   
    Não compre nada que não tenha ao menos wifi6.
     
    E se for usar um adaptador USB não compre nada que não seja USB 3.0.
     
    @Goner https://www.kabum.com.br/produto/148229/adaptador-wireless-tp-link-usb-2-0-ac600-archer-t2u?srsltid=AeTuncrn5nWSFsLRHiYdqsm1r_GCdOH0pYr2sDnzdq6HN9jYqpNR6_TbYLc Esse adaptador chega a modestos 433mbps a 5ghz e ultra modestos 150 mbps a 2.4ghz. Fuja disso.
     
    Essa placa tem dois slots PCIx x1. Então o simples deve ser usar algo moderno como uma AX200 da Intel, com wifi6 até 2400mbps e ainda tem Bluetooh 5.2 (até 2000mbps)
  21. O post de arfneto em codigo com erro, 3 warnings que não consigo identificar foi marcado como solução   
    Não consigo entender porque escreveu assim.
     
    Há muitos problemas em seu código. A maioria bem comum a ponto de eu ter uma lista para copiar dela.
     
    De todo modo:
     
     
    Imagino que deva levar o enunciado a sério. Porque então declarou isso como está abaixo?
     
    int* pares(int n, int* vet) { int x, par = 0; for (x = 0; x < n; x++) { if (vet[x] % 2 == 0) { par++; } } return par; }  
    Está
    escrito aí que a função retorna int* um ponteiro para int. Só que você escreveu
     
    int par = 0;  
    e
     
    return par;  
    É claro que está errado.  Continuaria errado mas iria compilar se escrevesse return &par que claro é do tipo int*.  E seu programa ia cancelar em seguida.
     
    int vet[TAM];  
    Isso está também errado. TAM deve ser conhecido em tempo de compilação. 
     
    E aqui é o mesmo caso:
     
    int par; int i; printf("Digite o tamanho do vetor"); scanf("%d", &TAM); for (i = 0; i < TAM; i++) { scanf("%d", &vet[i]); } par = pares(TAM, vet);  
    par é int e pares() retorna int*. Está errado.
     
    Outras coisas pra pensar:
     
    scanf() retorna um int. TESTE. Leia o manual. É ingênuo seguir sem estar. não declare mais que uma variável por linha deixe main() sempre como a primeira função do programa, se possível em um programa separado nunca use nada global. Declare variáveis de controle DENTRO do for inicialize TODAS as variáveis.  
    int pares(int n, int* vet) { int par = 0; for (int x = 0; x < n; x++) if (vet[x] % 2 == 0) par++; return par; }  
    Assim por exemplo estaria certo e mais simples de ler.
  22. O post de arfneto em Quero instalar uma placa de rede com wifi e bluetooth no meu pc foi marcado como solução   
    @MuriTG25 Essa https://www.intel.com.br/content/www/br/pt/products/sku/204836/intel-wifi-6e-ax210-gig/specifications.html intel ax210 deve servir e tem um pé no futuro porque é tri-band. Custa uns 250 reais ou pouco mais
  23. O post de arfneto em calcular e exibir um histograma de caracteres passados como argumento foi marcado como solução   
    Sobre os programas
     
    Acho que não estão assim bons. em muitos erros ainda, em especial o segundo.
     
    Claro que os dois deviam ser iguais exceto por usar a linha de comando para passar a palavra a ser usada, e claro que o segundo é muito melhor. Ao usar o programa (que lê uma única palavra) o cara já sabe qual é a palavra e é um porre ter que chamar o programa e ficar esperando o prompt para digitar a palavra que o cara já sabe qual é para depois teclar ENTER de novo.
     
    Imagine o compilar te perguntando a cada vez: "Digite o nome do programa que deseja compilar:"
     
    Sobre o enunciado
     
     
    Está claro que é para receber uma palavra como parâmetro então o primeiro programa não está ok, mesmo usando uma função que recebe a palavra
     
     
    E o primeiro programa só mostra o histograma. E o resto? O tal relatório?
     
    Do primeiro programa
     
    const int tamanho = 26; const int nLetras = 26; int counts[nLetras] = {}; void count(char[], int[]); int main() { int counts[nLetras]; char t[tamanho]; // ...  
    Isso está errado e o compilador te avisou. Declarou duas vezes counts[].
     
    O programa vai dar erro se vierem caracteres especiais na palavra porque não vai ter índice no vetor para armazenar, uma vírgula por exemplo.
     
    count(t, counts);  
    Essa não foi uma escolha feliz para os nomes.
     
    No segundo programa
     
    char letra[palavra.length()]; // determina o tamanho do  
    não pode declarar o tamanho do vetor com um tamanho conhecido apenas quando o programa está rodando. Use std::array em C++ por exemplo. Ou std::string.
     
    Isso está errado:
     
    int main(int argc, char* argv[]) { // pede um argumento que seria a palavra string palavra = argv[1]; // aqui é o segundo argumento cout << "A palavra selecionada é: " << argv[1] << endl; // mostra a palavra que foi escolhida  
    E se o cara não digitar nada? Existe uma razão para argc existir e é essa. Teste.
  24. O post de arfneto em Velocidade & Duplex pode causar quedas de internet? foi marcado como solução   
    Como é uma "queda de internet"? O que percebe? Em que serviços?
     
    Velocidade e status de duplex na configuração de rede são coisas da conexão de rede e nada tem a ver com a internet.
    Seu computador não está conectado com a internet.
    E esses parâmetros não devem ser definidos pelo usuário ou por um visionário que escreve um "tutorial" e publica recomendando usar 1000 mbps e full duplex. Esses valores são negociados pelos drivers de cada lado no cabo no momento da conexão. Se especifica isso manualmente em casos em que se precisa conectar a uma velocidade INFERIOR à provável do link, ou desabilitar FD, para testar um periférico por exemplo.
     
    Cabos Cat5E são os adequados para essas conexões desde os anos 90. Mas mesmo cabos cat5, se achar algum, em curtas distâncias conectam a 1000 mbps.
     
    Medidores de performance com a internet só medem isso, e entre uns servidores e seu dispositivo. Não garantem nenhum resultado em outros usos. E nem esse, já que pode testar em seguida e conseguir bem menos ou bem mais 🙂
     
    Servidores DNS só vão mudar a latência e o tempo de resposta até conseguir um endereço IP correspondente ao nome. Isso é DNS. E provavelmente os do Google não vão ser os melhores em nenhum caso. Em geral os mais rápidos são os do provedor, pela simples questão de menor latência. Se tiver tempo para isso use  DNSBench por exemplo e faça uma medida em sua rede. E use os dois primeiros da lista. É o que todo mundo faz: mede. E meça novamente de tempos em tempos ou claro se mudar de provedor.
     
    Como estão ligados esses roteadores adicionais? Não estariam ligados via porta WAN deles estariam? Se for o caso pode ser onde está indo boa parte de sua banda contratada. Desligue isso pra ver e meça de novo...
     
    Deixe todos os parâmetros de rede no automático se não tem uma coisa objetiva para mudar lá.

     
  25. O post de arfneto em Programa c++ que informe a quantidade de números positivos e negativos foi marcado como solução   
    Esse curso deve ser interessante. Então a primeira lê um arquivo que foi criado pela segunda parte? Muito bom.
     
     
    Talvez esteja complicando as coisas... Mas qualk é objetivamente sua dificuldade? Porque não postou o programa? Ou perguntou algo sobre essa dificuldade?
     
    Considere o arquivo x.txt do exemplo acima
     
    2 1 2 5 -1 -2 -3 -4 5 3 1 2 3 0  
    E um complicado programa como esse
     
    #include <iostream> #include <fstream> int main(void) { std::ifstream entrada {"x.txt"}; if (not entrada) { std::cerr << "Erro ao abrir arquivo\n"; return -1; } int valor; entrada >> valor; while (entrada) { std::cout << valor << " "; entrada >> valor; }; entrada.close(); std::cout << "\nFim!\n"; return 0; }  
    Ele vai mostrar o esperado
     
    2 1 2 5 -1 -2 -3 -4 5 3 1 2 3 0 Fim!  
    Claro que para criar o arquivo é igualzinho, mas ao contrário...
     
    Esse complicado programa cria o MESMO arquivo que o outro le:
     
    #include <fstream> #include <iostream> int main(void) { std::ofstream saida{"y.txt"}; if (not saida) { std::cerr << "Erro ao abrir arquivo\n"; return -1; } saida << "\ 2 1 2\n\ 5 -1 -2 -3 -4 5\n\ 3 1 2 3\n\ 0\n"; saida.close(); std::cout << "\nFim!\n"; return 0; }  
     
     
     
    Não use essas coisas em C++ a menos que realmente precise de alguma funcionalidade dessas funções. Que funcionalidade? scan. Por isso elas tem esse nome.
     
    Só vai perder tempo usando isso. sem necessidade. C++ é mais expressiva e simples para esses casos. Use streams. Muito mais simples.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!