Ir para conteúdo
Propaganda

Zmovir

Membro
  • Total de Posts

    10
  • Registro em

  • Última visita

  • Dias Ganhos

    2

Zmovir ganhou no último dia 11 de Setembro 2024

Zmovir teve o conteúdo mais curtida!

3 Seguidores

Sobre Zmovir

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Zmovir's Achievements

Enthusiast

Enthusiast (6/14)

  • One Year In
  • Very Popular Rara
  • First Post
  • Dedicated
  • Conversation Starter Rara

Emblemas Recentes

280

Reputação

  1. Boa noite pessoal, tudo certo? Deixo aqui alguns agentes que montei como um kit de inspeção para quem desenvolve em cima de OTServer e quer uma análise completa do server e do client sem ter que ficar mandando arquivo por arquivo para a IA. A ideia é simples: vocês só usam o ORCHESTRATOR.md, dizem para a IA qual é a pasta do servidor e qual é a pasta do client, e o orquestrador roda automaticamente todos os agentes necessários. Link: [Hidden Content] O processo funciona em qualquer ambiente: Cursor, Windsurf, VSCode com chat, Claude ou Kiro. Basta abrir o projeto, colar o conteúdo do orquestrador no chat, informar as duas pastas e mandar executar. A IA faz o resto sozinha. No final ela entrega relatórios em Markdown apontando erros de Lua, risco de crash em C++, inconsistências de XML, problemas de tick, conflitos de storage, sincronização protocolo/client e outros pontos importantes que normalmente só aparecem quando o servidor já está rodando. A ideia é ajudar quem está começando ou quem quer revisar um projeto maior sem perder tempo. É só colar o orquestrador, indicar as pastas e aguardar os relatórios. Utilizei a base PokeBrave vazada no ano passado para isso, segue input na IA: Leia o arquivo ORCHESTRATOR.md para ter o contexto do que deve rodar, após isso execute cada agente e gere os outputs, na otcv8 vai encontrar informações sobre o client e na server-main vai encontrar as informações sobre o servidor, lembrando que esta base é a Poke Brave vazada em 2024. Com isso ele leu nossa pasta de Agents e executou todos (Média de 45 minutos para ler todo o projeto e gerar todos os relatórios) Ele gerou arquivos de saída: PROTOCOL_SYNC.md: - Compara opcodes, mensagens e estrutura de pacotes entre: - Source C++ (server) - Client OTC (ou derivados) - Encontra: - OpCodes inconsistentes. - Pacotes com tamanhos diferentes em client/server. - Campos lidos/escritos em ordem diferente. LUA_ERRORS.md: - Analisa: - Chamadas a funções inexistentes. - Uso de variáveis potencialmente `nil`. - Callbacks com retorno errado. - Loops pesados em eventos frequentes. CONTENT_INTEGRITY.md: - Cruza: - `items.xml`, `monsters/*.xml`, `spells`, `actions`, `movements`, `weapons`, `vocations`. - Procura: - IDs inexistentes. - Loot apontando para itens que não existem. - Spells/efeitos inválidos. - actions/movements sem script. TICK_PERFORMANCE.md: - Olha: - Game loop em C++. - Scripts Lua de alta frequência (globalevents, onThink, etc.). - Procura: - Loops pesados. - Consultas caras em contextos sensíveis. - Sistemas que escalam mal com número de players/monstros. QUEST_STORAGE_REPORT.md: - Mapeia: - Uso de storages em scripts Lua. - Procura: - IDs usados em sistemas diferentes. - Storages lidos e nunca escritos. - Storages escritos e nunca lidos. - Lógicas incoerentes de progresso. CPP_CRASH_RISKS.md: - Analisa: - Acessos a ponteiros sem checagem. - Uso de containers sem validação de limites. - Funções com fluxos sem retorno. - Switches sem tratamento mínimo de casos inesperados. CODE_SMELLS.md: - Em Lua e C++: - Funções gigantes. - `if` aninhado demais. - Código duplicado. - Variáveis/funções com nomes genéricos demais em contexto crítico. - Mistura de muitas responsabilidades num único trecho. AGENT_ARCHITECTURE_DOC.md: - Detalha o funcionamento do servidor e arquitetura, o que cada arquivo faz. Bom uso a todos!
  2. Passo 1: Obter a API Key e Gerar o Token de Acesso - Va até: [Hidden Content] - Crie um novo Power-UP - Copie a Key gerada; - Agora gere um token de acesso, use a seguinte url: [Hidden Content],write&response_type=token&key=YOUR_API_KEY Obs: O parâmetro expiration=never define que o token nunca expirará. Caso prefira um tempo limitado, você pode usar valores como 1day, 30days, etc. MeuApp é o Power-UP que criou, também não esqueça de colocar sua API Key. Agora que tem seu Token e API Key em mãos, vamos para o próximo passo. Passo 2: Obter o ID do Quadro (Board ID) - Acesse o Trello e Vá para o Quadro que deseja automatizar - Na URL do navegador, você verá algo como: [Hidden Content] O ID do Quadro é o valor entre /b/ e o nome do quadro. No exemplo acima, o ID do quadro é XXXXX. Passo 3: Obter o ID da Lista (List ID) - Utilize a API do Trello para Listar as Listas do Quadro: [Hidden Content] Apenas coloque os dados gerados, isso irá retornar um JSON com a lista de todos os quadros e seus IDs. [ { "id": "5a1e67b99b9c32d9a5e66b54", "name": "To Do", "closed": false }, { "id": "5a1e67b99b9c32d9a5e66b55", "name": "Bugs", "closed": false } ] Passo 4: Configurar o Postman para Criar Cartões no Trello Agora que você tem a API Key, o Token de Acesso, o ID do Quadro e o ID da Lista, pode usar o Postman para criar um cartão automaticamente no Trello. - Abra o Postman e crie uma nova requisição do tipo Post - Insira a url: [Hidden Content] Agora vá em Params e adicione as keys: key - Sua API Key token - Seu Token de Acesso idList - ID da Lista name - Título da task desc - Descrição da task Após configurar os parâmetros, clique no botão Send para enviar a requisição. Agora você pode integrar isso onde quiser.
  3. Este script visa automatizar a leitura e análise de arquivos de log do TFS, identificando erros. Ele foi projetado para ajudar você a encontrar os erros nos logs do TFS, fornecendo uma visão detalhada de cada erro encontrado, incluindo rastreamento de pilha e contexto adicional. Instale o Python Em uma pasta, adicione todos os ".log" do TFS e execute o script (python log_análise_script.py) import os import re def suggest_fix(error_message): if "Invalid argument" in error_message: return "Verifique se os parâmetros passados estão corretos e no formato esperado." elif "CreatureScript Interface" in error_message: return "Verifique os scripts das criaturas e valide se estão de acordo com a documentação." elif "Action Interface" in error_message: return "Valide as ações e eventos registrados para evitar conflitos ou configurações incorretas." elif "OTBM Loader" in error_message: return "Verifique a integridade dos arquivos de mapa ou tente carregar um backup." elif "attempt to index field" in error_message: return "Verifique se a variável referenciada está corretamente inicializada ou se não há valores nulos inesperados." elif "stack traceback" in error_message or "Traceback" in error_message: return "Rastreie a origem do erro no código e trate exceções de forma adequada." else: return "Erro desconhecido. Verifique a documentação ou revise o código." def analyze_logs(log_folder): error_pattern = re.compile(r"(ERROR|FATAL|Exception|Traceback|stack traceback)", re.IGNORECASE) context_lines = 5 results = [] all_errors = [] for root, dirs, files in os.walk(log_folder): for file in files: if file.endswith(".log"): file_path = os.path.join(root, file) with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: lines = f.readlines() for i, line in enumerate(lines): if error_pattern.search(line): start = max(i - 1, 0) end = min(i + context_lines, len(lines)) error_context = lines[start:end] error_message = ''.join(error_context).strip() suggestion = suggest_fix(error_message) results.append((file, error_message, suggestion)) all_errors.append(f"Arquivo: {file}\nErro: {error_message}\nSugestão: {suggestion}\n{'-'*50}") return results, all_errors def generate_output(log_folder): log_analysis_results, all_errors = analyze_logs(log_folder) output_file = os.path.join(log_folder, "log_error_report.txt") with open(output_file, 'w', encoding='utf-8') as f: for error in all_errors: f.write(error + "\n") print(f"Relatório gerado: {output_file}") log_folder = os.path.dirname(os.path.abspath(__file__)) generate_output(log_folder) Após rodar esse script, será gerado um arquivo chamado: log_error_report.txt mostrando os erros separados, para uma leitura mais dinâmica.
  4. [Hidden Content]
  5. Pro servidor teria que utilizar o tipo de dado que o client envia pro server e alterar o sever pra aceitar esses dados. Recomendo utilizar o K6 para isso
  6. Locust é uma ferramenta open-source para testes de carga que permite simular o comportamento de múltiplos usuários simultâneos em uma aplicação web. Neste tutorial, vamos usar o Locust para simular um ataque DDoS (Distributed Denial of Service) em um site e fornecer dicas sobre como proteger sua infraestrutura contra esses ataques. 1° Configurar o Ambiente: - Python 3.6+ - Um servidor web ou VPS como alvo. - Locust instalado (pip install locust) 2° Criando o Script de Teste no Locust (Arquivo .py) from locust import HttpUser, task, between class DDoSUser(HttpUser): wait_time = between(1, 3) @task def attack(self): self.client.get("/") 3° Executando o Locust: locust -f seu_script.py Agora basta acessar a interface web do Locust ([Hidden Content]) Adicionar o número de usuários que deseja simular Rampup (Duração de segundos) Host que será testado E como eu me protejo disso? - Usar um Firewall de Aplicação Web (WAF) Um WAF (Firewall de Aplicação Web) atua como uma barreira entre o seu site e o tráfego da web. Ele filtra, monitora e bloqueia tráfego HTTP/HTTPS potencialmente malicioso, incluindo ataques DDoS. Um WAF pode analisar solicitações em tempo real e tomar decisões sobre permitir ou bloquear com base em regras pré-definidas ou aprendizado de máquina. Deve verificar com sua VPS como realizar a configuração de WAF. - Implementar Rate Limiting Rate Limiting controla o número de requisições que um IP pode fazer a um servidor dentro de um período específico. Isso é útil para evitar que um único IP, ou um conjunto de IPs controlados por um atacante, sobrecarregue o servidor enviando um grande número de requisições em um curto período. Recomendo a implementação via Nginx da configuração de limite. - Usar CDNs Uma CDN (Content Delivery Network) distribui o conteúdo do seu site através de uma rede de servidores localizados em várias partes do mundo. Quando um usuário faz uma solicitação, a CDN serve o conteúdo a partir do servidor mais próximo, reduzindo a carga no servidor principal e ajudando a mitigar ataques DDoS ao distribuir o tráfego. Deve ser atualizado nas configurações do DNS do seu servidor de nomes na VPS. - Implementação de Monitoramento e Resposta Automática Sistemas de monitoramento ajudam a detectar picos de tráfego anormais e a resposta automática pode bloquear ou mitigar esses ataques em tempo real. Esses sistemas podem acionar scripts para bloquear IPs suspeitos ou escalar automaticamente os recursos do servidor. Recomendo que instale e configure o Zabbix para monitorar seu servidor, defina como identificar os picos e ações automáticas como bloqueio de IPs. - Dimensionamento Horizontal O dimensionamento horizontal envolve adicionar mais servidores à sua infraestrutura para lidar com o aumento do tráfego, em vez de simplesmente aumentar os recursos de um único servidor. Isso distribui a carga, tornando o sistema mais resiliente a ataques DDoS. - Lista Negra de IPs e Países Bloquear IPs específicos ou até mesmo regiões geográficas inteiras que não fazem parte do seu público-alvo pode reduzir significativamente a superfície de ataque.
  7. Acho que o link expirou, segue o novo: [Hidden Content] Em questão de vídeos, infelizmente estou sem tempo para gravar, mas vou montar uma IA para tirar dúvidas no chat e posso tirar dúvidas via chat/call.
  8. Boa noite, Gerei algumas aulas de programação e um roteiro detalhado que pode ser visto em: [Hidden Content] Podem dar sugestões de temas para as próximas aulas. Até agora temos: LUA, HTML, CSS e JavaScript.
  9. Este projeto é um bot do Discord que gera e exibe perfis de jogadores e rankings com base em dados obtidos de uma API externa. O bot foi desenvolvido em Python, utilizando a biblioteca discord.py para gerenciar as interações com o Discord, e a biblioteca Pillow para gerar as imagens. Funcionalidades Comando de Perfil de Jogador (!perfil): Busca e exibe o perfil de um jogador, incluindo seu nível, Pokémon descobertos e capturados, quests e afiliação a um clã. O perfil é apresentado como uma imagem gerada. Comando de Ranking dos Melhores Jogadores (!ranking): Busca e exibe os 10 melhores jogadores com base nos seus níveis. O ranking é apresentado como uma imagem gerada. Pré-requisitos Python 3.7 ou superior Token de Bot do Discord Uma API que forneça dados de jogadores e ranking (Substitua as URLs das APIs no código com os seus endpoints reais) Instação: pip install -r requirements.txt python bot.py !perfil <nome_do_jogador>: Gera e envia uma imagem mostrando o perfil do jogador com o nome especificado. !ranking: Gera e envia uma imagem mostrando os 10 melhores jogadores. Código: [Hidden Content]
  10. Contrato programador que deseje mexer nas Sources do meu OTCV8, preciso que seja feito sombras para alguns itens e efeito de nuvens passando pelo chão (menos onde tenha teto). Entrar em contato.
      • 1
      • Like
×
  • Criar Novo...