Ir para conteúdo
Fórum Script Brasil

Ricardo Martins

Membros
  • Total de itens

    35
  • Registro em

  • Última visita

Tudo que Ricardo Martins postou

  1. Atualmente estou trabalhando em um projeto no meu emprego que exige que eu mexa muito no prompt de comando do Windows. Existem certos momentos em que eu tenho que repetir uma sequência fixa de 6 comandos para fazer uma determinada operação. Foi aí que eu descobri que eu poderia usar um truque toda vez que eu precisasse digitar esses 6 comandos. Em vez de digitar os comandos manualmente, eu os digitava em um arquivo de texto no formato txt, salvava ele, mudava ele para a extensão bat e chamava ele no prompt de comando. Dessa forma, todos os comandos escritos no arquivo bat são executados no prompt como se eu tivesse digitado manualmente. Mas tem um porém nessa estratégia: Se a entrada de dados pedida pelo prompt for uma senha, os comandos no arquivo bat não funcionam mais, me obrigando a entrar com a senha manualmente. Vamos supor que eu execute o seguinte comando: git pull Esse comando é seguido pelo pedido de entrada de senha: password: Supondo que a senha seja 1234, não adianta nada eu colocar a segunda linha do arquivo bat com a comando 1234. Na verdade, esse comando funciona só DEPOIS que eu entro com a senha manualmente. Minha intenção é fazer com que todo o processo seja automatico, inclusive a entrada da senha. Como eu resolvo isso?
  2. Não sei se você já deve ter tentado isso, mas eis uma das coisas que eu tentaria: Aperte "Windows + R" para entrar no "Executar". Digite "msconfig" e dê enter. Na janela que aparece, entre na aba "Inicialização de programas". Nessa aba está toda a relação de programas que inicializam automaticamente junto com o Windows depois do boot. Dê uma olhada se o executável que está te incomodando está na lista e marcado para iniciar junto com o Windows. Caso esteja, é só desselecioná-lo e aplicar as alterações. Esta dica é recomendável também para usuários que querem diminuir o tempo que o sistema operacional leva pra carregar depois do boot e também para aumentar a performance do sistema como um todo.
  3. Sou estudante da área de Análise e Desenvolvimento de Sistemas e isso seria um bom conhecimento a se adquirir. Sou um usuário do Windows de longa data e no momento estou num emprego em que é necessário mexer com servidores Linux, mais especificamente Debian. No entanto, estou apanhando bastante desse prompt no qual a gente tem que digitar linhas de comando. Sabe como é, né? Estou acostumado a fazer as coisas usando interfaces gráficas. Gostaria de aprender desde o nível mais básico, como criar e excluir pastas, editar arquivos de texto, etc., até o nível mais avançado. Os livros podem estar em inglês, não tem problema. Até prefiro, pra falar a verdade.
  4. Vamos supor a seguinte situação: Eu tenho uma empresa que desenvolve programas de computador para outras empresas. Em outras palavras, eu tenho uma fábrica de softwares. De tempos em tempos, minha equipe de desenvolvimento encontra algumas coisas que podem ser melhoradas nos softwares que foram vendidos aos nossos clientes. Ex.: Encontra bugs que podem ser corrigidos, funcionalidades que podem ser otimizadas, etc. Depois de trabalharmos numa correção/melhoria dos softwares, queremos atualizar esse software nas empresas dos nossos clientes. Os computadores dos clientes estão constantemente conectados com os nossos servidores através desses softwares. Nossos servidores operam com o Linux e todos os clientes usam o Windows. Não queremos ter que atualizar os softwares dos nossos clientes um por um. Existe alguma ferramenta que eu possa usar para atualizar todos os arquivos e softwares dos clientes de uma vez através dessa conexão cliente/servidor? Ex.: Eu tenho um programa que se chama "Money Machine 1.0" e atualizei este para a versão 2.0. Esse software é usado por 50 clientes. Eu quero dar um comando aqui no meu servidor que atualize automaticamente esse software em todos os clientes. Pesquisei um pouco sobre um programa que se chama Git, pois ouvi dizer que ele podia fazer isso. No entanto, pelo que eu vi, não tive muita certeza de que ele pode mesmo fazer isso. Existe alguma ferramenta nesse estilo?
  5. Sabe os serviços do Windows? Aqueles listados numa janela que a gente entra depois de apertar CTRL + R e digitar "services.msc"? Então, tem alguns serviços lá que quando eu mudo o tipo de inicialização de desativado para automático, por exemplo, e depois clico em OK, recebo uma mensagem de erro irritante que diz: "o sistema não pode encontrar o caminho especificado". Eis a lista de serviços específicos que não estou conseguindo fazer funcionar por causa desse problema: Acesso a Dispositivo de Interface Humana Agente de Diretiva IPsec Auxiliar NetBIOS TCP/IP Brilho Adaptável Experiência com Aplicativo Horário do Windows Identidade do Aplicativo KtmRm para Coordenador de Transações Distribuídas Pesquisador de Computadores Serviço de Criptografia de Unidade de Disco BitLocker Serviço de Entrada de Tablet PC Serviço de Relatórios de Erro do Windows Serviço Enumerador de Dispositivos Portáteis Windows Defender Percebi um padrão nesses serviços. Todos eles tem como caminho do executável "C:\Windows\system32\svchost.exe -k <alguma coisa>". Achei que o arquivo svchost.exe talvez tivesse sido deletado acidentalmente, mas vi que ele está lá firme e forte. Aliás, existem outros serviços que são abertos normalmente através desse mesmo arquivo. Notei que nesses serviços que estão funcionado que o parâmetro usado depois do caminho do executável não é "-k" como nos serviços acima. Ou seja, o problema só afeta os serviços que tem como caminho de executável "C:\Windows\system32\svchost.exe" seguido do parâmetro "-k". Alguns desses serviços são necessários pra algumas tarefas que eu quero fazer, como compartilhamento de arquivos na rede. Como faço pra resolver isso?
  6. Estou pensando em desativar o agendador de tarefas do Windows pra otimizar o funcionamento do sistema, porém estou em dúvida se eu devo mesmo fazer isso. Se o agendador de tarefas agendasse somente coisas como desfragmentação e criação de ponto de restauração eu desativaria numa boa, pois uso softwares de terceiros pra esse tipo de coisa. Mas eu não sei que outro de tipo de coisas ele agenda. Até dei uma olhada no que estava agendado, mas não entendi muita coisa. Que tipos de tarefas o agendador de tarefas do Windows 7 agenda por padrão? Se eu desativá-lo, posso acabar prejudicando o sistema de alguma forma?
  7. Eu estou fazendo um TCC que envolve o desenvolvimento de uma suíte de jogos de lógica. Nessa suíte eu coloquei o Sudoku, Kakuro, Killer Sudoku e Sokoban. Talvez eu coloque mais outros, caso seja possível. No entanto, o meu projeto carece de parte teórica. O que eu quero mesmo é encontrar algo que fale sobre um possível relacionamento entre jogar jogos de lógica e ter um raciocínio mais apurado pra resolver as situações-problema do dia a dia. Na minha opinião, como os jogos de lógica exigem um raciocínio extremamente intenso, acredito que exercitar-se nesses jogos pode fazer a pessoa ficar "mais esperta" pra resolver os problemas do dia a dia. Ou seja, na minha opinião, o exercício do raciocínio no jogo não está reduzido única e somente pro jogo, mas se é expandido também pra vida. Mas quando eu procuro algo na internet pra tentar fundamentar essa minha teoria, tudo o que eu consigo encontrar são conteúdos falando sobre jogos educativos, que não é bem o que eu estou querendo. E então, jogos de lógica pode mesmo deixar a pessoa "mais inteligente"? Existe algo na internet que fale sobre isso?
  8. Tenta fazer assim: #include <stdio.h> #include <conio.h> int main() { if (unlink("c:\\test.txt") == 0) printf("Arquivo apagado com sucesso!"); else printf("Falha em apagar arquivo!"); getch(); return 0; } unlink é uma função feita pra apagar arquivos, apesar do nome pouco intuitivo. Mas atenção! Quando você for indicar o caminho do arquivo com uma string, toda vez que você colocar o caracter 'barra invertida' (\), você deve colocar ele duas vezes seguidas, senão o compilador vai entender que a combinação do barra com o caractere logo depois formam um caractere de escape. No exemplo acima ("c:\\test.txt"), se essa string tivesse só uma barra invertida, a barra invertida seguida do caractere 't' logo depois seria interpretado pelo compilador como uma tabulação (como aquela que a gente faz apertando a tecla TAB).
  9. Quando queremos armazenar vários valores de um mesmo tipo em sequência podemos usar vetores ou ponteiros. Em essência, os dois são a mesma coisa, pois vetores também são ponteiros. Porém, vetores são ponteiros CONSTANTES e como tal possui algumas limitações, como, por exemplo, não deixar de apontar pra área que apontam pra apontar pra outras áreas. Sendo assim, às vezes eu opto por usar ponteiros em vez de vetores, pois há momentos em que eu preciso fazer os ponteiros apontar pra outras áreas. Pra que eu possa ter essa flexibilidade no meu código, eu substituo vetores por ponteiros da seguinte forma: int *a, *b, *c; a= (int [5]) {1, 2, 3, 4, 5}; b= (int [5]) {11, 12}; c= (int []) {21, 22, 23, 24, 25}; Cada um desses ponteiros apontam pra áreas de memória com 5 elementos. Eles funcionam exatamente da mesma maneira que os vetores, mas com o diferencial de ser possível mudar os endereços apontados. A mesma construção mostrada anteriormente pode ser feita usando inicializações também. Porém, nesse caso é necessário incluir mais um cast pra que o compilador não acuse erros de compilação: int *a= (int *) (int [5]) {1, 2, 3, 4, 5}; int *b= (int *) (int [5]) {11, 12}; int *c= (int *) (int []) {21, 22, 23, 24, 25}; A minha dúvida está relacionada com as áreas de memória para qual os ponteiros apontam. Depois que essas operações são feitas, as áreas de memória são desalocadas? Ou seja, nos exemplos, os ponteiros estão apontando pra áreas de memória desalocadas? Caso estejam apontando pra áreas devidamente alocadas, essas áreas são desalocadas quando os ponteiros passam a apontar pra outros endereços? Exemplo: int *a= (int *) (int [5]) {1, 2, 3, 4, 5}; int b= 123; a= &b; Eu testei isso aqui em casa algumas vezes e nunca deu nenhum erro. Porém, eu não sei se não deu erro porque é uma construção válida da linguagem ou porque a linguagem é excessivamente permissiva, principalmente quando se trata de vetores.
  10. É isso mesmo que você falou! Não tinha parado pra pensar nesse objeto que é criado numa região qualquer da memória e que ele também é destruído. Valeu pela explicação.
  11. Vamos supor que eu tenha o seguinte código: #include <stdio.h> #include <conio.h> int main () { struct TEST { int num; ~TEST () { printf ("Você está dentro do destrutor!\n"); getch (); } }; TEST exemplo= {0}; exemplo.num= 0; exemplo= (TEST) {0}; return 0; } O código é bem simples. Primeiro eu crio uma estrutura com o nome TEST que contém: - Um variável para um número inteiro - Um destrutor que só imprimi uma mensagem na tela Depois eu demonstro as três formas possíveis de atribuição pra variável dentro da estrutura: - Na inicialização - Na atribuição individual de elementos de estrutura - Na atribuição em lote (que no caso é com um elemento só) Os destrutores só são executados quando a estrutura é destruída, ou seja, ou quando termina o bloco a qual ela pertence, ou quando é usada a desalocação dinâmica (usando delete). Nesse caso, estranhamente o destrutor é executado duas vezes. Se fosse uma vez só seria compreensível, já que a função main termina, a estrutura é destruída e o destrutor é executado. Daí eu percebi que a seguinte linha executa o destrutor, indevidamente, diga-se de passagem: exemplo= (TEST) {0}; Se você comentar ela, o destrutor é executado uma vez só, como tem que ser. Por que essa linha executa o destrutor? Se for de alguma relevância, eu fiz isso usando o wxDev-C++ 7.3.1.3.
  12. Esses dias atrás eu descobri uma coisa bem interessante sobre estruturas. Vamos supor que eu crie uma estrutura e, mais adiante, declare uma variável dessa estrutura: struct EXEMPLO { int a; float b; char *c; }; ... EXEMPLO ex; O que eu aprendi foi que é possível fazer uma atribuição para todos os elementos da estrutura duma vez só. Pode ser usando constantes: ex= (EXEMPLO) {25, 3.14, "Exemplo"}; Ou até mesmo variáveis: int inteiro= 25; float real= 3.14; char *string= "Exemplo"; ex= (EXEMPLO) {inteiro, real, string}; Como eu achava que só dava pra fazer isso na inicialização, quando eu queria atribuir valores para as variáveis dentro da estrutura, eu fazia uma por uma. Mais aí então surgiu uma curiosidade. E como é que eu faço essa atribuição "em massa" se a estrutura for anônima? Lembrando que pra fazer esse tipo de atribuição é necessário fazer um cast com o nome da estrutura que você criou. Então eu passei a tentar de várias formas possíveis e no final eu não consegui mesmo! Mas descobri outra coisa estranha. Quando eu digitava as linhas de código logo abaixo, o compilador não dava erro, mesmo se essas linhas fossem as únicas que tivesse digitado: struct::a; (struct::b) 1, 2, 3; (struct::c) {1, 2, 3}; int struct::d; Se o compilador não acusou nenhum erro, suponho que isso seja uma expressão válida que faça alguma coisa quando usada com alguma outra coisa. Mas eu não sei onde isso pode ter algum efeito e gostaria de saber. No que pode ser usado essas linhas de código enigmáticas? Caso faça alguma diferença, o meu compilador é o wxDev-C++ 7.3.1.
  13. Vamos supor que eu defina a seguinte estrutura: struct AGENDA { char *nome; char *email; }; E depois, em alguma parte do código, eu crio dinamicamente um elemento dessa estrutura: AGENDA *contato; contato= (AGENDA *) malloc (sizeof (AGENDA)); E então eu aloco dinamicamente os espaços necessários pra armazenar as strings nos ponteiros nome e e-mail: contato->nome= (char *) malloc (50*sizeof (char)); contato->email= (char *) malloc (50*sizeof (char)); Vamos supor agora que eu já usei essa estrutura e não preciso mais dela. Sendo assim, eu quero desalocar a estrutura, mas quero desalocar ela INTEIRA. É aí que fica a minha dúvida. Eu desaloco só a estrutura... free (contato); ... ou eu desaloco as strings primeiro pra, aí sim, desalocar a estrutura? free (contato->nome); free (contato->email); free (contato); Ou seja, se eu desalocar só a estrutura, as strings continuarão alocadas?
  14. Vamos supor que eu quero criar um jogo. No meio desse jogo pode acontecer centenas de coisas diferentes e que programando convencionalmente eu seria obrigado a usar um monte de ifs pra verificações pra saber quando e como cada uma dessas centenas de coisas vai acontecer. Mas e se esse monte de ifs usados pra verificação chegasse num ponto em que fizesse o código do jogo ficar muito carregado e o jogo com o desempenho comprometido. O que eu poderia usar no lugar disso? O que eu posso fazer pra que algo seja executado quando estiver dentro duma determinada condição sem precisar usar de verificações constantes e excessivas pra isso?
  15. Valeu pelas respostas! Me ajudaram a ter uma ideia do que fazer. Obrigado.
  16. Vamos supor que o usuário tenha as seguintes opções: 1 ( ) 2 ( ) 3 ( ) 4 ( ) 5 ( ) 6 ( ) 7 ( ) 8 ( ) 9 ( ) Inicialmente, esse quadro de seleções começa em branco e a partir daí o usuário escolhe algum(ns) número(s). Pode ser nenhum, um, vários, todos, enfim, qualquer combinação possível. O que eu quero fazer é um if no qual só vai ser possível saber a sentença dentro dos parenteses dele em tempo de execução. Vamos supor que o usuário escolheu esses números: 1 ( x ) 2 ( ) 3 ( ) 4 ( ) 5 ( x ) 6 ( ) 7 ( ) 8 ( x ) 9 ( ) Nesse caso o if ficaria assim: if (a== 1 || e== 5 || h== 8) Vamos supor que o usuário escolheu outros números: 1 ( ) 2 ( x ) 3 ( ) 4 ( x ) 5 ( x ) 6 ( x ) 7 ( ) 8 ( x ) 9 ( ) Nesse caso o if ficaria assim: if (b== 2 || c== 4 || d== 5 || e== 6 || g== 8) Caso ele não tenha selecionado nenhum ficaria assim: if (TRUE) E caso ele tenha selecionado todos ficaria assim: if (FALSE) O que eu quero é um if no qual a sentença dentro dele depende dos dados de entrada do usuário. Como podem ver, o número de possibilidades de combinações é muito grande, sendo assim, é totalmente inviável criar um if pra cada uma dessas possibilidades. Eu sei que tem um jeito diferente e talvez até mais fácil de fazer o que o programa se propõe, mas independente disso eu quero aprender coisas diferentes pra serem usadas futuramente em outros programas. Perguntei pra um amigo meu e ele me disse que em Clipper é possível guardar uma sentença dentro de uma variável. Depois é só colocar essa variável no if que fica como se a sentença estivesse lá. É possível fazer isso ou algo parecido em C?
  17. O que eu quero fazer é o seguinte: Vamos supor que eu criei uma variável com o nome "num". Se num valer -10, eu quero que passe a valer 10. Se num valer 10, eu quero que continue valendo 10. Ou seja, se for negativa, quero torná-la positiva, e se for positiva, quero mantê-la positiva. Sei que dá pra fazer isso usando if's e funções matemáticas, mas o que eu quero mesmo é fazer uma manipulação nos bits da variável. Quero mudar o último bit da variável, ou seja, aquela que quando é 0 significa que o número é positivo e quando é 1 significa que o número é negativo. Quero mudá-la pra passar a ser 0 se for 1, e continuar sendo 0 se for 0. Sei que existem aqueles operados binários (&, ^ e |) e imagino que eu tenha que usar algum deles. Então, como se faz essa operação?
  18. Queria saber se existe alguma função na linguagem C que abre arquivos executáveis armazenados no HD.
  19. Vamos supor que eu crie uma função com o seguinte protótipo: int teste (...); Uma função que retorna um número inteiro e que recebe um número indeterminado de parâmetros. O que eu gostaria de fazer é que essa função retornasse o número de parâmetros que foi passado pra ela. Depois que eu conseguisse isso, eu iria imprimir na tela essa quantidade. Ficaria mais ou menos assim na tela:
  20. Eis alguns lugares onde eu vi isso: Num exemplo de programa usando o comando fseek: fseek (arquivo, 0L, SEEK_END); No define do NULL dentro da biblioteca _NULL: #define NULL 0L Num exemplo de programa usando o comando sprintf: sprintf (string, "%ld", random (5000)+27500L); Se esses números fossem escritos sem o caractere "L" no final não ia dar na mesma?
  21. Vamos supor que no meu código exista a seguinte linha: x= (int *) malloc (10); Isso significa que eu aloquei 10 espaços pro ponteiro x que é do tipo int. Mas no programa que eu estou fazendo, não dá pra saber exatamente a quantidade de espaços alocados porque essa quantidade é definida dependendo de muitos fatores. Sendo assim, eu precisaria de alguma função que retorna o número de espaços alocados pra um determinado ponteiro. Existe alguma função dessas?
×
×
  • Criar Novo...