Pular para o conteúdo principal

· Leitura de 4 minutos
Anderson Marlon

Caspar Camille Rubin

Neste artigo, irei te ensinar a enviar notificação no seu canal do Discord para todo o momento em que sua live estiver online, claro que recomendo que seja a sua live ou de alguém muito conhecido - não para meios comerciais - por conta da quantidade de uma applet/receita dentro da plataforma - no máximo dois na free tier.

Parte 1 - Registrar no IFTTT

Acesse https://ifttt.com/ e crie uma conta (se ainda não tiver uma)

Parte 2 - Criar um Webhook do Discord

  • Encontre o canal do Discord para o qual você gostaria de enviar os tweets.

  • Nas configurações desse canal, encontre a opção Webhooks e crie um novo webhook. Observação: Este URL deve ser mantido privado. Permite que qualquer pessoa escreva mensagens nesse canal específico usando esse URL específico. Mantenha-o seguro!

    WebhookDiscord

  • Nomeie o webhook como quiser e fique à vontade para alterar a imagem de perfil genérica. Escolhi este ícone porque se encaixa bem no círculo.

  • Copie o URL para algum lugar e mantenha-o à mão para a próxima etapa.

Parte 3 - Criar um novo applet/receita no IFTTT

  1. Acesse aqui para criar um novo "Applet".
  2. Clique no grande azul "[+] This" e escolha "Twitch" (use a barra de pesquisa para encontrá-lo rapidamente).
  3. Conecte sua conta, se necessário.
  4. Escolha "Nova transmissão iniciada por você" (deve ser a segunda opção da esquerda para a direita).
  5. Clique no grande azul "[+] That" e escolha "Webhooks".
  6. Escolha "Fazer uma solicitação web" (deve ser a única opção).
  7. Preencha os seguintes detalhes:
    • URL: [seu URL da "parte 2" acima]
    • Método: POST
    • Tipo de conteúdo: application/json
    • Corpo: [veja o trecho abaixo]
  8. Clique em "Criar ação".
  9. Pronto!

Trecho para o "Corpo"

Os webhooks são super personalizáveis e permitem criar visuais bastante detalhados. No entanto, seu formato também é um pouco complexo de acertar sem testes extensivos, então aqui está um modelo que seria útil para a maioria das pessoas:

{
"content": "{{ChannelName}} foi ao vivo no Twitch",
"embeds": [{
"title": "{{ChannelUrl}}",
"url": "{{ChannelUrl}}",
"color": 6570404,
"footer": {
"text": "{{CreatedAt}}"
},
"image": {
"url": "{{StreamPreview}}"
},
"author": {
"name": "{{ChannelName}} está transmitindo agora"
},
"fields": [
{
"name": "Jogando",
"value": "{{Game}}",
"inline": true
},
{
"name": "Iniciado em (fuso horário do streamer)",
"value": "{{CreatedAt}}",
"inline": true
}
]
}]
}

Este trecho que produzimos, irá criar uma notificação personalizada como abaixo - usamos o canal do xQcow como exemplo:

Mensagem Personalizada

Caso queira ter uma mensagem personalizada para alguma categoria, troque a variável pela mensagem que desejar.

Um exemplo, é substituir o content para aquilo que quiser.

Ao invés de {{ChannelName}} foi ao vivo no Twitch, mudaremos para {{ChannelName}} está ao vivo no Twitch!, por exemplo.

Mostrar sua foto de perfil da Twitch no incorporado (avançado)

Se você deseja mostrar sua foto de perfil do Twitch na caixa:

  1. Acesse o Twitch
  2. Clique com o botão direito do mouse em sua foto de perfil no canto superior direito:

  1. Clique em "Copiar endereço da imagem"
  2. Cole esse endereço neste blob em vez de <URL_DA_IMAGEM>:
"thumbnail": {
"url": "<URL_DA_IMAGEM>"
},
  1. Cole esse blob abaixo da área image no blob principal, para que essa parte mude de:
    "footer": {
"text": "{{CreatedAt}}"
},
"image": {
"url": "https://static-cdn.jtvnw.net/previews-ttv/live_user_{{ChannelName}}-1280x720.jpg"
},
"author": {
"name": "{{ChannelName}} está transmitindo agora!"
},

Para isso:

    "footer": {
"text": "{{CreatedAt}}"
},
"image": {
"url": "https://static-cdn.jtvnw.net/previews-ttv/live_user_{{ChannelName}}-1280x720.jpg"
},
"thumbnail": {
"url": "<URL_DA_IMAGEM>"
},
"author": {
"name": "{{ChannelName}} está transmitindo agora!"
},

Observação: O endereço da imagem que você acabou de usar para sua foto de perfil do Twitch pode parar de funcionar se você mudar sua foto. Então é recomendado que pegue a imagem URL do seu perfil do Twitch - toda vez que alterar - e cole no blob principal.

Créditos

· Leitura de 5 minutos
Anderson Marlon

Dell

Neste artigo, exploraremos duas abordagens distintas para lidar com desafios e projetos complexos, utilizando a analogia do processo de desenvolvimento com dois modelos diferentes: o Modelo "Cultivar a Semente" e o Modelo "Kit de Ferramentas".

Cultivar a Semente x Kit de Ferramentas

O modelo "Cultivar a Semente" a gente pode assimilar com o processo de cultivar uma planta a partir de uma semente. Ele envolve tentativas, erros, aprendizado, experimentos e constante melhoria. Assim como uma planta cresce e se desenvolve ao longo do tempo, este modelo exige paciência, persistência e dedicação para alcançar o resultado desejado, mas relaxe, nem sempre conseguimos conquistar isso e entra o modelo "Lixo x Tesouro", mas vamos voltar a comparação dos dois modelos anteriores. A forma de cultivar a semente, é como se estivéssemos construindo algo do zero, enfrentando desafios e aprendendo com cada desafio no caminho. Essa metodologia proporciona uma profunda imersão no projeto, permitindo a construção de uma base sólida de conhecimento e experiência.

Por outro lado, o Modelo "Kit de Ferramentas" representa uma abordagem mais simplificada e eficiente. Imagine que você já tenha criado uma série de modelos prontos para uso. Quando um novo projeto surge, você pode simplesmente selecionar e adaptar esses modelos conforme necessário, seria mais fácil tentar furar uma parede do seu jeito ou usar uma ferramenta de pronta para isso? Claro, vamos economizar tempo e esforço, no entanto, essa praticidade tem suas limitações. Se surgir um problema inesperado ou uma necessidade específica, pode ser difícil lidar com isso sem a base de conhecimento e experiência adquirida por meio do Cultivar a Semente.

A diferença entre os dois modelos é o desafio versus a praticidade. Enquanto o Cultivar a Semente oferece uma jornada desafiadora, repleta de aprendizado e crescimento por si só, o Modelo Kit de Ferramentas proporciona uma solução rápida e prática, com pouca parte aprofundada. No entanto, é importante reconhecer que o caminho mais fácil nem sempre é o mais adequado. Voltar ao Cultivar a Semente pode ser necessário para resolver problemas complexos ou alcançar novos patamares de excelência, no entanto, é claro, temos que dar dois passos para trás para avançarmos cinco a frente e esse tipo de coisa, pode acabar desanimando muita gente. Você escolher usar o kit de ferramentas, quando na verdade precisa cultivar a semente pode te causar um tempo de estudo, aprendizados e erros que poderão ser cruciais para você, ou não, vemos isso em "Interprete as coisas como um curso". Portanto, é essencial encontrar um equilíbrio entre essas abordagens, escolhendo a mais adequada para cada projeto e desafio que surgir.

Interprete as coisas como um curso

Imagine que você gastou horas, dinheiro em fazer um projeto para um cliente - esse cenário já aconteceu comigo - você passou noites em claro, estudou coisas que jamais teria estudado se não fosse esse projeto em específico e se dedicou, mas por algum motivo, o cliente simplesmente desistiu e não quer mais o projeto. Como você interpretaria essa ação? Para muitos, foi tempo e dinheiro jogados fora? Certo? Pode até ser, mas tente ver por uma perspectiva diferente, tente imaginar e interpretar as coisas como um curso. Você não gastou tempo e dinheiro atoa, você simplesmente participou de um curso, aonde a lógica que você incrementou e estudou, foram os responsáveis por te dar essa didática. Então você não gastou, vamos supor, quinhentos reais em um projeto e perdeu esse dinheiro, o que de fato aconteceu, foi que você pegou quinhentos reais e investiu em um curso aprofundado sobre a área em questão, e agora, por mais que você saiba apenas a ponta daquela área em especifica, você tem a capacidade de desenvolver várias outras aplicações em cima desse aprendizado ou você pode simplesmente, criar uma kit de ferramenta para esse tipo de projeto. É incrível, não é?

Lixo x Tesouro

Tá, mas aonde entra a questão do Lixo e Tesouro nessa questão? Existem muitas pessoas que vão chegar para você e dizer que o tempo que você gastou com aquele projeto ou ter interesse em um determinado assunto foi por água a baixo, mas não é bem assim. Para você, foi um tempo precioso, mas foi recompensado de outra maneira, certo? Vamos pensar assim, é claro. Enquanto para a outra pessoa, foi um lixo, uma total perda de tempo pra você. E é assim que funciona as coisas. Muitos assuntos, ideias de projetos e até mesmo abordagens, podem ser consideradas um lixo PARA AQUELA PESSOA e não para você, da mesma maneira que o assunto que ela tanto gosta pode ser um lixo para você e valioso para ela e está tudo bem. A ideia que Deschamps passa é para evitarmos tentar viver no mundo das outras pessoas e tentar viver o nosso da nossa maneira, seja para pegar coisas lixos e transformar em tesouro ou até mesmo pegar o tesouro e transformar em lixo, mas independente das duas, ambas, serão experiência, lembre-se disso.

· Leitura de 5 minutos
Anderson Marlon

Anderson Marlon

No dia primeiro de março ocorreu o Front-end Universe pela NodeBR com o apoio do iFood, mas o que isso significa para as pessoas que nunca estiveram em um evento desses ou que são juniors, mas tem vergonha de comparecer ou até mesmo acha que vai ficar perdido em um evento de tecnologia desse nível?

Bom, você não vai ficar perdido e é um evento para todos os níveis. Uma das notícias boas é que o NodeBR, pretende trazer mais eventos como esse para Campinas, o que é um presente, já que na maioria das vezes, os eventos são em São Paulo e até mesmo eu, não tenho disponibilidade ou o financeiro para estar presente.

Vamos lá.

O que é o NodeBR?

NodeBR é uma comunidade brasileira de Javascript para quem tem interesse em aprender e se aprofundar. O foco é literalmente ajudar outros desenvolvedores através de eventos, meetups e conferências, sempre trazendo um assunto novo, uma abordagem diferente para os curiosos e coisas assim. A comunidade tem grandes pessoas envolvidas nesse time, como Erick Wendel, Ana Neri, Lucas Santos, Monica Craveiro de Menezes, Mayumi Shingaki, Natiely Alves e Denis Velrino - As redes dos membros da equipe estão em https://nodebr.org/. Claro, que esse time é muito maior, existe uma série de voluntários que ajudam e estão presentes nesses eventos e que fazem toda a diferença na questão da organização e apresentação desses eventos.

Front-end Universe

Mas o que aconteceu nesse evento em Campinas?

Às 19hrs até 19h10 teve o Credenciamento e abertura com a NodeBR, mostrando todo o cenário que a NodeBR atua, seus objetivos, e o que podemos fazer para melhorar e ajudar essa comunidade.

Às 19h10 - 19h15 tivemos a Abertura Ifood, com Rafael Ireno, que explicou toda a jornada e os objetivos do iFood, as tecnologias que trabalham e já trabalharam dentro da empresa e a intenção de apoiar ainda mais o NodeBR para futuros eventos.

Paula Bonini

Às 19h15, tivemos a Paula Bonini que apresentou o Frontend Além do Código, explicando a necessidade da diversidade nos times, qual é o seu papel dentro do time, levando em consideração todas as posições envolvidas e o que fazer quando essa ausência existe.

A empatia com os "não-techs", como é o caso de trabalhar com dois times em que um não existe contato algum com desenvolvimento e programação. Qual é a abordagem que deve ser feita com isso.

A necessidade e importância de participar dos ritos que nada mais é que participar de reuniões e refinamentos mesmo que sejam focadas em outro setor da sua empresa, mas que ainda sim, possuem contato com você no futuro, e ter conhecimento de toda a produção do produto e a solução, e possivelmente esclarecer dúvidas e esclarecimentos que podem ser evitados antes de chegar de fato no seu setor.

E por último, mas não menos importante, a experiência do usuário, a padronização da aplicação, e coerência de novos protótipos. Conhecer a sua aplicação, seu cliente, a forma como ele utiliza uma aplicação e entender o que de fato precisa melhorar baseado no histórico de dificuldade e reclamações do usuário.

Rafael Paiva

Às 19h45, tivemos com Rafael Paiva as Novidades no Angular 2024, também conhecido como "Momentum" ou "Renaissance", desde o ano passado o framework vem trazendo updates significativos buscando melhorar performance e simplificar o aprendizado inicial na ferramenta, diminuindo a curva de aprendizado e facilitando o entendimento para quem está começando. Dentre as novidades temos: Standalone Components, Signals, New Built-in Control-Flow e Deferrable Views, além de uma nova marca, nova documentação com tutoriais e a caminho de permitir aplicações Full Zoneless.

Depois tivemos um Coffee Break para conhecermos todo o pessoal que estava no evento.

Daniel Freitas

E por último, O impacto do front na vida do entregador com Daniel Freitas, ciclista e ativista usuário do iFood. Ciclista entregador, com 12 anos de experiência nas entregas, sendo os últimos oito pelas plataformas digitais, compartilhou muitas gravações de tela durante suas entregas e seus pedidos como cliente final do iFood para promover uma reflexão sobre a importância do frontend na rotina de todas as personas envolvidas em um pedido.

--

A experiência com tudo isso envolveu tanto para quem está começando, assim como quem já está consolidado na área, são experiências que não conseguimos e obtemos pelo dia a dia, não é sempre lidar com código, entender o que é uma mudança de estado ou até mesmo lógicas de programação e horas de reuniões.

O que aprendemos até mesmo com a experiência do Daniel, é que de fato não adianta desenvolver uma aplicação bonita, simples e funcional para o cliente, muitas vezes temos que ter um dia de cliente para entender as falhas, os comportamentos inesperados e soluções.

Ele mesmo relatou que jamais recusou entregar, e sem querer, ao tentar retirar o celular do bolso, acabou cancelando por dar o famoso ~ miss click ~ na hora de pegar o celular. E é algo que poderia ser evitado com uma confirmação de usuário, caso ele gostaria de recusar o atendimento do cliente, assim como em várias outras ocasiões.

Mas, fica a reflexão de que, se você tiver oportunidade, você pode estar começando literalmente agora, ou estar a tempos desenvolvendo, vá a esses eventos que de mãos vazias jamais sairá.

Caso queira ver como foi o evento completo e obter toda a experiência em primeira mão - mesmo que seja online - para absorver o conhecimento e entender tudo o que foi falado, desde a importância com o time, com o cliente, enfim, entender tudo o que foi passado no evento, é só clicar na imagem abaixo.

E claro, deixo a mensagem para refletir sempre além do código e também, acompanhar o NodeBR nas redes e ficar de olho para os próximos eventos.

Youtube NodeBR

· Leitura de 52 minutos
Anderson Marlon

Praveen Thirumurugan

Esse curso foi desenvolvido pela Kalify Inc e publicado em 12 de Maio de 2023.

1. Introdução

Bem-vindo ao curso "Introdução ao Código Aberto"! Este curso abrangente irá guiá-lo pelo fascinante mundo do código aberto e ajudá-lo a se tornar um contribuidor ativo. Ao final deste curso, você deve ter uma compreensão sólida de como encontrar, participar e contribuir para projetos de código aberto, bem como de como desenvolver seu currículo de código aberto. Mas antes, vamos preparar o terreno discutindo os pré-requisitos, objetivos e expectativas deste curso.

Pré-requisitos

Antes de mergulhar no mundo do código aberto, é essencial ter uma compreensão básica dos conceitos de programação e alguma experiência trabalhando com código. Embora o curso forneça exemplos e demonstrações, você obterá o máximo proveito do material se já tiver algum conhecimento prévio.

Além disso, este curso pressupõe que você está familiarizado com Git e GitHub. Git é um sistema de controle de versão amplamente utilizado, e GitHub é uma plataforma popular para hospedar e colaborar em repositórios Git. Se você ainda não está familiarizado com Git e GitHub, recomendamos que você reserve um tempo para aprender o básico antes de começar este curso.

Objetivos

Ao longo deste curso, nossos principais objetivos são ajudá-lo a:

  1. Compreender o Código Aberto e seus Benefícios: Vamos explorar o conceito de código aberto, sua história e os muitos benefícios de contribuir para projetos de código aberto.
  2. Aprender a Encontrar Projetos de Código Aberto: Descobrir projetos que se encaixem em seus interesses e habilidades é crucial para uma experiência de código aberto enriquecedora. Apresentaremos ferramentas e técnicas para encontrar projetos para os quais você possa contribuir.
  3. Dominar Ferramentas e Processos de Contribuição: Forneceremos uma visão geral das ferramentas e processos essenciais necessários para uma colaboração de código aberto bem-sucedida, como controle de versão, revisão de código e plataformas de comunicação.
  4. Ganhar Experiência Prática: Seguindo exemplos e demonstrações, você terá a oportunidade de praticar suas habilidades e ganhar confiança em sua capacidade de contribuir para projetos de código aberto.
  5. Desenvolver seu Currículo de Código Aberto: Destacar suas contribuições de código aberto é essencial para construir sua reputação na comunidade e demonstrar sua experiência a potenciais empregadores ou clientes. Discutiremos estratégias para desenvolver e manter seu currículo de código aberto.

Expectativas

Este curso foi projetado para fornecer uma base sólida na colaboração de código aberto. Embora cubramos uma variedade de tópicos e forneçamos exemplos, demonstrações e oportunidades de prática, é essencial manter expectativas realistas sobre o que você pode realizar durante o curso.

  1. A Prática é Crucial: Aprender sobre código aberto é apenas o começo; para realmente desenvolver suas habilidades e se tornar um contribuidor competente, você precisará praticar regularmente. Lembre-se de que quanto mais você contribuir para projetos de código aberto, mais aprenderá e crescerá como desenvolvedor.

  2. Paciência é a Chave: Dominar a colaboração de código aberto leva tempo e esforço. Não desanime se encontrar desafios ao longo do caminho; lembre-se de que cada contribuição, por menor que seja, é valiosa e ajuda a melhorar o projeto.

  3. Envolvimento com a Comunidade: Código aberto é mais do que apenas código; trata-se das pessoas que colaboram e contribuem para os projetos. Interaja com a comunidade fazendo perguntas, compartilhando seu conhecimento e apoiando os outros. Construir relacionamentos com outros contribuidores melhorará sua experiência de código aberto e ajudará você a crescer como desenvolvedor.

  4. Aprendizado Contínuo: O código aberto é um campo em constante evolução, com novos projetos, ferramentas e tecnologias surgindo o tempo todo. Mantenha-se curioso e aberto ao aprendizado e aproveite recursos como documentação, tutoriais e fóruns comunitários para aprofundar seu conhecimento e se manter atualizado sobre os últimos desenvolvimentos.

  5. Cultivar uma Mentalidade de Crescimento: Enfrente os desafios e oportunidades que surgem com a colaboração de código aberto. Adote uma mentalidade de crescimento focada na aprendizagem, melhoria e resiliência. Ao considerar os obstáculos como oportunidades de crescimento, você estará melhor preparado para navegar no complexo mundo do código aberto e ter sucesso em suas contribuições.

Estrutura do Curso

Este curso está dividido em vários capítulos, cada um projetado para cobrir um aspecto específico da colaboração de código aberto:

  1. Introdução: Começaremos preparando o terreno para a sua jornada de código aberto, discutindo pré-requisitos, objetivos e expectativas.
  2. O que é Código Aberto?: Neste capítulo, exploraremos a definição de código aberto e sua história, fornecendo uma base sólida para compreender o contexto da colaboração de código aberto.
  3. Por que o Código Aberto?: Abordaremos os benefícios do código aberto, incluindo o acesso ao conhecimento, à comunidade e ao desenvolvimento de habilidades.
  4. Ferramentas para o Sucesso: Este capítulo apresentará as ferramentas essenciais para uma colaboração de código aberto bem-sucedida, incluindo GitHub, Git, CodeSee, VS Code e Discord.
  5. Como Contribuir para o Código Aberto: Neste capítulo, discutiremos o processo de encontrar projetos para trabalhar, enviar contribuições, integrar-se a um novo projeto e o que esperar após o envio de sua contribuição.
  6. A Receita Secreta: Este capítulo revelará estratégias e técnicas para começar, ganhar terreno em suas contribuições e desenvolver seu currículo de código aberto.
  7. Conclusão: Concluiremos o curso com pontos-chave e discutiremos os próximos passos em sua jornada de código aberto.

Ao longo deste curso, forneceremos exemplos e demonstrações para ajudar a ilustrar os conceitos-chave e oferecer oportunidades práticas de aprendizado. Sempre que possível, apresentaremos projetos e ferramentas de código aberto reais, como a Kalify, para mostrar como aplicar as habilidades que você adquiriu.

Lembre-se de que, embora esses exemplos e demonstrações sejam projetados para orientá-lo e inspirá-lo, sua própria jornada de código aberto pode ser diferente, dependendo de seus interesses, habilidades e projetos escolhidos. Use os exemplos e demonstrações como ponto de partida, mas não tenha medo de explorar outros projetos, ferramentas e recursos à medida que continua a aprender e crescer.

Vamos Começar 🚀

Agora que preparamos o terreno, é hora de embarcar em sua jornada de código aberto! No próximo capítulo, entraremos na definição de código aberto e exploraremos sua história, estabelecendo as bases para uma compreensão mais profunda da colaboração de código aberto. Vamos lá!

2. O que é código aberto?

Neste capítulo, aprofundaremos o conceito de código aberto, sua definição e história. Adquirir uma compreensão profunda do código aberto ajudará você a apreciar o contexto no qual colaborará e contribuirá.

Definição

O código aberto se refere a um tipo de software cujo código-fonte é disponibilizado ao público, permitindo que qualquer pessoa visualize, use, modifique e distribua o código. Isso contrasta com o software proprietário, onde o código-fonte é mantido em segredo e apenas o programa compilado é distribuído. O princípio fundamental do código aberto é a ideia de colaboração e a crença de que o compartilhamento de conhecimento e recursos leva a software melhor, mais confiável e mais inovador.

O software de código aberto é construído com base na ideia de que, quando muitas pessoas trabalham juntas, podem criar algo maior do que a soma de suas partes. Os contribuintes para projetos de código aberto vêm de diversas origens e trazem uma ampla gama de habilidades, experiências e perspectivas para a mesa. Essa diversidade de pensamento e expertise leva a software mais robusto, inovador e confiável.

Licenças de Código Aberto

Para que um software seja considerado de código aberto, ele deve ser publicado sob uma licença que conceda aos usuários o direito de acessar, modificar e distribuir o código-fonte. Existem muitas licenças de código aberto disponíveis, cada uma com seu próprio conjunto de termos e condições. Algumas licenças de código aberto populares incluem a Licença MIT, a Licença Pública Geral GNU (GPL) e a Licença Apache.

Essas licenças são cruciais porque garantem que o software permaneça aberto e acessível a todos. Ao conceder aos usuários o direito de visualizar, modificar e distribuir o código, as licenças de código aberto promovem uma cultura de colaboração, inovação e compartilhamento de conhecimento.

Breve História do Código Aberto

A ideia de compartilhar livremente conhecimento e recursos existe há séculos, mas o movimento de código aberto, conforme o conhecemos hoje, remonta aos primórdios da computação.

Primeiros Passos

Nas décadas de 1950 e 1960, o software de computador estava frequentemente associado ao hardware de computador, e o código-fonte era compartilhado livremente entre pesquisadores e desenvolvedores. Durante esse período, era comum que programadores colaborassem, compartilhassem ideias e modificassem o código uns dos outros para se aprimorarem e inovarem.

No entanto, nas décadas de 1970 e 1980, à medida que a indústria de software começou a se expandir e se comercializar, as empresas começaram a considerar o software como um ativo valioso e começaram a restringir o acesso ao código-fonte. Essa mudança marcou o início da divisão entre o software proprietário e o movimento de código aberto emergente.

O Surgimento do Software Livre

Em resposta às crescentes restrições ao acesso e distribuição de software, o cientista da computação Richard Stallman fundou a Free Software Foundation (FSF) em 1985. O objetivo da FSF era promover o desenvolvimento e o uso de software livre, definido como software que concede aos usuários a liberdade de executar, estudar, compartilhar e modificar o código. Esse conceito é semelhante ao código aberto, mas enfatiza ainda mais os aspectos éticos e políticos da liberdade do software.

Stallman e a FSF posteriormente desenvolveram o projeto GNU (que significa "GNU's Not Unix"), um esforço ambicioso para criar um sistema operacional totalmente livre e aberto. Embora o projeto GNU tenha fornecido muitos componentes essenciais, ele ainda carecia de uma peça fundamental: um núcleo livre e aberto, o componente central de um sistema operacional.

A Chegada do Linux

Em 1991, um estudante de ciência da computação finlandês chamado Linus Torvalds desenvolveu um núcleo livre e de código aberto chamado Linux. Quando combinado com o sistema GNU, o Linux formou um sistema operacional completo, gratuito e de código aberto que ainda é amplamente utilizado hoje. O sucesso do Linux contribuiu para popularizar o conceito de código aberto e desencadeou uma onda de novos projetos, ferramentas e tecnologias.

A Iniciativa de Código Aberto

Em 1998, Christine Peterson, diretora executiva da Foresight, inventou o termo "software de código aberto" como um esforço deliberado para tornar este campo... mais compreensível para novatos e empresas. Ela, juntamente com Eric S. Raymond, Bruce Perens e outros desenvolvedores e defensores, posteriormente fundou a Open Source Initiative (OSI) para promover melhor esse conceito. A partir daí, a OSI desenvolveu a definição de código aberto, um conjunto de critérios que o software deve atender para ser considerado de código aberto. Esses critérios incluem distribuição gratuita, disponibilidade do código-fonte, trabalhos derivados e integridade da licença.

Os esforços da OSI para promover o código aberto despertaram um novo interesse e adoção por parte de indivíduos e organizações. Hoje, o software de código aberto é amplamente utilizado em várias indústrias, e muitas empresas de tecnologia conhecidas, como Google, IBM e Microsoft, apoiam e contribuem ativamente para projetos de código aberto.

O Crescimento das Comunidades de Código Aberto

À medida que o movimento de código aberto ganhava força, muitas comunidades e plataformas surgiram para facilitar a colaboração e o compartilhamento de conhecimento. Aqui estão alguns exemplos notáveis:

  • SourceForge: Lançada em 1999, a SourceForge foi uma das primeiras plataformas da web a fornecer ferramentas e recursos para que desenvolvedores colaborassem em projetos de código aberto. Em seu auge, a SourceForge hospedava milhares de projetos e atraía milhões de usuários.
  • GitHub: Fundado em 2008, o GitHub rapidamente se tornou a plataforma de referência para hospedagem e colaboração em repositórios Git. Hoje, o GitHub hospeda milhões de projetos de código aberto e conta com uma comunidade dinâmica de colaboradores de todo o mundo.
  • GitLab: Lançado em 2011 como uma alternativa de código aberto ao GitHub, o GitLab oferece uma série de ferramentas e recursos para gerenciar repositórios Git, rastrear problemas e facilitar a colaboração.

Essas plataformas desempenharam um papel crucial no estímulo ao crescimento das comunidades de código aberto e na facilitação da contribuição e colaboração de desenvolvedores em projetos.

O Aumento do Envolvimento das Empresas

Nos últimos anos, o envolvimento das empresas em projetos de código aberto aumentou significativamente. Muitas empresas reconhecem agora o valor do código aberto e contribuem ativamente para diversos projetos e os apoiam. Algumas empresas até mesmo tornaram de código aberto suas próprias ferramentas e tecnologias internas, como o TensorFlow do Google e o React do Facebook.

Esse envolvimento significativo das empresas não apenas aumentou os recursos e o apoio a projetos de código aberto, mas também ajudou a legitimar o movimento de código aberto e a promover sua adoção em larga escala.

A Evolução do Código Aberto

O movimento de código aberto percorreu um longo caminho desde seus primórdios. Hoje, o software livre está em toda parte, impulsionando tanto sites quanto aplicativos móveis, bem como inteligência artificial e algoritmos de aprendizado de máquina.

À medida que o código aberto continua a evoluir, novos projetos, ferramentas e tecnologias estão constantemente surgindo, expandindo os limites do possível e estimulando a inovação em uma ampla gama de indústrias.

A crescente popularidade do código aberto também deu origem a um ecossistema florescente de conferências, encontros e comunidades online onde desenvolvedores podem se reunir para aprender, colaborar e compartilhar conhecimentos. Ao participar desses eventos e se envolver com a comunidade de código aberto, você terá a oportunidade de desenvolver suas habilidades, construir sua rede e se manter atualizado sobre os últimos desenvolvimentos nessa área.

No próximo capítulo, exploraremos os muitos benefícios da contribuição para projetos de código aberto e veremos como a colaboração de código aberto pode ajudá-lo a acessar conhecimentos, se conectar a uma comunidade e desenvolver habilidades valiosas.

3. Por que o código aberto?

No capítulo anterior, exploramos o conceito de código aberto e sua história. Agora, vamos analisar os inúmeros benefícios de participar de projetos de código aberto. Ao compreender os benefícios da colaboração de código aberto, você estará melhor preparado para aproveitar as oportunidades que ela oferece e tirar o máximo proveito de sua jornada no mundo do código aberto.

Acesso ao Conhecimento

Um dos principais benefícios de contribuir para projetos de código aberto é a oportunidade de acessar uma variedade de conhecimentos e recursos. Como colaborador em um projeto de código aberto, você poderá:

  1. Aprender com projetos reais: Projetos de código aberto oferecem uma oportunidade única para estudar e aprender com código real. Ao examinar como outros desenvolvedores lidaram com problemas complexos, você pode adquirir conhecimento sobre melhores práticas, padrões de design e técnicas avançadas que pode aplicar em seus próprios projetos.

  2. Acessar diversas perspectivas: Projetos de código aberto atraem contribuidores de todo o mundo, cada um trazendo um conjunto único de habilidades, experiências e pontos de vista. Colaborando com outros, você pode ampliar sua compreensão de diferentes tecnologias, linguagens de programação e metodologias de desenvolvimento.

  3. Manter-se atualizado com as últimas tendências: A comunidade de código aberto está frequentemente na vanguarda da inovação, com o constante surgimento de novos projetos, ferramentas e tecnologias. Ao participar de projetos de código aberto, você pode se manter atualizado com os últimos desenvolvimentos em sua área e descobrir tendências emergentes e melhores práticas.

  4. Acessar recursos de alta qualidade: A comunidade de código aberto é conhecida por seu compromisso em produzir documentação, tutoriais e outros recursos educacionais de alta qualidade. Ao aproveitar esse tesouro de conhecimento, você pode aprofundar sua compreensão de diversas tecnologias e conceitos, continuando a evoluir como desenvolvedor.

Acesso à Comunidade

A comunidade de código aberto é uma rede global diversificada de desenvolvedores, entusiastas e defensores que compartilham uma paixão comum pela colaboração e compartilhamento de conhecimento. Contribuindo para projetos de código aberto, você pode:

  1. Conectar-se com pessoas de ideias semelhantes: Projetos de código aberto oferecem a oportunidade de colaborar com outras pessoas que compartilham seus interesses e paixões. Trabalhando juntos, você pode estabelecer laços e amizades duradouras que podem enriquecer sua vida pessoal e profissional.

  2. Expandir sua rede de contatos: A comunidade de código aberto é vasta e interconectada, com inúmeros projetos, eventos e fóruns nos quais os desenvolvedores se reúnem para colaborar e compartilhar conhecimento. Participando dessas atividades, você pode expandir sua rede profissional e se conectar com mentores, colaboradores e até mesmo potenciais empregadores.

  3. Desenvolver habilidades de comunicação e colaboração: Trabalhar em projetos de código aberto muitas vezes envolve colaboração com outras pessoas, seja remotamente ou pessoalmente. Isso pode ajudá-lo a desenvolver habilidades essenciais de comunicação e colaboração, como fornecer feedback construtivo, resolver conflitos e trabalhar eficazmente em equipe.

  4. Contribuir para a comunidade: Contribuir para projetos de código aberto é uma maneira de retribuir à comunidade que lhe forneceu conhecimentos e recursos valiosos. Compartilhando suas habilidades e experiência, você pode contribuir para o crescimento e o sucesso do movimento de código aberto.

Acesso às Habilidades

Contribuir para projetos de código aberto pode ajudá-lo a desenvolver uma ampla variedade de habilidades técnicas e não técnicas altamente valorizadas no mercado de trabalho. Como colaborador em projetos de código aberto, você terá a oportunidade de:

  1. Melhorar suas habilidades de programação: Trabalhar em projetos reais é uma excelente maneira de aprimorar suas habilidades de programação e aprofundar seu entendimento de diversas tecnologias e linguagens. Resolver problemas difíceis e aprender com outros contribuidores o ajudará a se tornar um desenvolvedor mais competente.

  2. Adquirir experiência com novas tecnologias: Projetos de código aberto frequentemente envolvem tecnologias e ferramentas avançadas que podem não ser usadas em seu trabalho ou estudos diários. Ao contribuir para esses projetos, você pode ganhar experiência prática com novas tecnologias e expandir seu conjunto de habilidades.

  3. Construir seu portfólio: Contribuir para projetos de código aberto permite que você crie um portfólio público de seu trabalho, destacando suas habilidades e experiência para potenciais empregadores. Um sólido portfólio de contribuições para projetos de código aberto pode ajudá-lo a se destacar no mercado de trabalho e demonstrar seu compromisso com a aprendizagem contínua e o desenvolvimento profissional.

  4. Desenvolver habilidades de resolução de problemas e pensamento crítico: Trabalhar em projetos de código aberto muitas vezes envolve resolver problemas complexos e tomar decisões importantes. Ao enfrentar esses desafios, você pode desenvolver habilidades valiosas de resolução de problemas e pensamento crítico que podem ser aplicadas em várias áreas de sua vida e carreira.

  5. Aprender gerenciamento de projetos e organização: Contribuir para projetos de código aberto pode expô-lo a vários aspectos do gerenciamento e organização de projetos, como definir prioridades, gerenciar prazos e coordenar com membros da equipe. Essas habilidades podem ser valiosas em sua vida pessoal e profissional, ajudando-o a se tornar uma pessoa mais eficiente e organizada.

  6. Desenvolver habilidades de liderança e mentoria: À medida que você ganha experiência na comunidade de código aberto, pode se encontrar em posição de mentor e guia para novos contribuidores. Assumindo esses papéis de liderança, você pode desenvolver habilidades essenciais, como comunicação, empatia e delegação, que podem ajudá-lo a ter sucesso em sua carreira e vida pessoal.

Benefícios Adicionais

Além dos benefícios mencionados anteriormente, a participação em projetos de código aberto também pode oferecer vários outros benefícios, como:

  1. Amplas oportunidades de emprego: Muitos empregadores valorizam a experiência em código aberto e estão ativamente em busca de candidatos que tenham demonstrado contribuições significativas para projetos de código aberto. Ao destacar suas contribuições, você aumenta suas chances de conseguir o emprego dos seus sonhos ou avançar em sua carreira.

  2. Realização pessoal: Contribuir para projetos de código aberto pode ser uma experiência gratificante, tanto pessoal quanto profissionalmente. Ao compartilhar suas habilidades e conhecimentos, você pode fazer uma diferença tangível no mundo e contribuir para algo maior do que você.

  3. Oportunidades de reconhecimento: Projetos de código aberto frequentemente chamam a atenção de líderes do setor, influenciadores e mídia. Ao fazer contribuições significativas para projetos líderes, você pode ser reconhecido e estabelecer-se como um especialista em sua área.

No próximo capítulo, discutiremos as ferramentas e recursos essenciais de que você precisará para ter sucesso em sua jornada no código aberto, incluindo GitHub, Git, CodeSee, VS Code e Discord. Ao se familiarizar com essas ferramentas, você estará melhor preparado para colaborar com os outros, gerenciar seus projetos e contribuir efetivamente para projetos de código aberto.

4. Ferramentas para o Sucesso

Para ter sucesso em sua jornada no código aberto, é essencial se familiarizar com as ferramentas e plataformas comumente usadas pela comunidade. Essas ferramentas ajudarão você a colaborar de forma eficaz, gerenciar seus projetos e contribuir para projetos de código aberto. Neste capítulo, abordaremos as seguintes ferramentas essenciais para a colaboração em código aberto:

  • GitHub e Git
  • CodeSee
  • VS Code (o editor)
  • Discord

Pré-Requisitos

Antes de seguir este guia, você deve realizar as seguintes ações:

GitHub e Git

Introdução ao Git

O Git é um sistema de controle de versão distribuído projetado para gerenciar projetos, desde os pequenos até os muito grandes, de maneira rápida e eficiente. Foi criado por Linus Torvalds, o criador do kernel Linux, para gerenciar o desenvolvimento do próprio kernel Linux.

O Git permite que os desenvolvedores acompanhem as alterações em seu código, colaborem com outros desenvolvedores e gerenciem várias versões de seus projetos. Algumas das principais características do Git incluem:

  • Branches (ramificações): O Git permite que os desenvolvedores criem ramos, que são cópias separadas de sua base de código. Isso permite que eles trabalhem em novos recursos ou correções de bugs sem afetar a base de código principal. Quando as alterações são concluídas, eles podem mesclar o ramo de volta à base de código principal.
  • Área de preparação (staging area): O Git fornece uma área de preparação onde os desenvolvedores podem preparar suas alterações antes de confirmá-las no repositório. Isso permite que eles revisem e organizem suas alterações antes de torná-las permanentes.
  • Controle de versão distribuído: Ao contrário dos sistemas de controle de versão centralizados, o Git é um sistema de controle de versão distribuído. Isso significa que cada desenvolvedor possui uma cópia completa do repositório em sua máquina local, permitindo que trabalhem offline e independentemente de um servidor central.

Introdução ao GitHub

O GitHub é uma plataforma web de controle de versão e colaboração que utiliza o Git como tecnologia subjacente. Ele oferece uma interface simples e amigável para gerenciar repositórios Git, bem como uma variedade de recursos e ferramentas para colaborar com outros desenvolvedores.

Aqui estão algumas das principais características do GitHub:

  • Rastreamento de problemas: O GitHub possui um sistema integrado de rastreamento de problemas que permite que os desenvolvedores criem, atribuam e gerenciem problemas relacionados aos seus projetos. Os problemas podem ser categorizados usando rótulos, marcos e destinatários, facilitando o acompanhamento do progresso do projeto e a priorização das tarefas.
  • Pull Requests (solicitações de pull): O GitHub introduz o conceito de "solicitações de pull", que permite que os desenvolvedores proponham alterações à base de código de um projeto. As solicitações de pull permitem a revisão de código, discussão e colaboração antes que as alterações sejam mescladas na base de código principal.
  • Fork (bifurcação): O GitHub permite que os usuários criem uma cópia de um repositório, chamada de bifurcação (fork). Isso lhes permite fazer alterações na base de código sem afetar o projeto original. Depois de concluir as alterações, eles podem enviar uma solicitação de pull para que suas alterações sejam revisadas e, possivelmente, mescladas na base de código principal.
  • GitHub Actions (ações do GitHub): O GitHub Actions é uma poderosa ferramenta de automação que permite criar fluxos de trabalho personalizados para automatizar tarefas como compilação, teste e implantação de seu código.

Começando com Git e GitHub

Para começar com o GitHub, siga as etapas abaixo:

  1. Instale o Git: Baixe e instale o Git em seu computador acessando o site oficial do Git (https://git-scm.com/) e seguindo as instruções de instalação para o seu sistema operacional.

  2. Configure o Git: Após instalar o Git, abra um terminal ou prompt de comando e configure suas informações de usuário Git executando os comandos a seguir:

git config --global user.name "Seu Nome de Usuário"
git config --global user.email "seu.email@exemplo.com"

Substitua "Seu Nome de Usuário" pelo seu nome completo e "seu.email@exemplo.com" pelo endereço de e-mail que você usou para se inscrever no GitHub.

Praticando com o VS Code

Para praticar o uso do GitHub, vamos criar um repositório, cloná-lo, fazer alterações e enviá-las.

  1. Crie um novo repositório: Faça login na sua conta do GitHub e vá para https://github.com/new ou clique no ícone "+" no canto superior direito e selecione "Novo repositório" no menu suspenso.

Escolha a opção "Seu" como proprietário do repositório e insira um nome para o seu repositório. Para este exemplo, usaremos repositorio-de-pratica.

Escolha se deseja que ele seja público ou privado. Você também pode optar por inicializar o repositório com um arquivo README, um arquivo .gitignore e/ou uma licença.

Para este exemplo, inicialize o repositório com um arquivo README.

  1. Clone o repositório: Depois de criar um novo repositório, você pode cloná-lo para sua máquina local executando o seguinte comando no seu terminal ou prompt de comando:
git clone https://github.com/seu-nome-de-usuario/nome-do-repositorio.git

Substitua "seu-nome-de-usuario" pelo seu nome de usuário no GitHub e "nome-do-repositorio" por repositorio-de-pratica.

  1. Acesse seu repositório no seu editor de código: Para este exemplo, estamos usando o VS Code. Abra o VS Code, vá para a guia Arquivo e abra o seu repositório de prática.

  2. Faça alterações e faça commit: Deve haver um arquivo no seu repositório: README.md. Neste arquivo, sob # repositorio-de-pratica, digite 'olá mundo!'. Depois de fazer as alterações, você pode adicioná-las ao commit.

Abra o seu terminal e verifique se você está no diretório correto. Por exemplo, meus projetos de código estão na minha pasta Projetos. Usando o meu terminal, eu entraria neste repositório com o seguinte comando:

cd projetos/repositorio-de-pratica

Depois de estar no diretório correto, use os seguintes comandos para adicionar as alterações que você fez e escrever uma mensagem de commit com uma descrição das alterações:

git add .
git commit -m "Sua mensagem de commit"

Substitua "Sua mensagem de commit" por uma breve descrição das alterações que você fez.

  1. Envie suas alterações: Após fazer o commit das suas alterações, você pode enviá-las para o seu repositório remoto no GitHub executando o seguinte comando:
git push origin main

Isso enviará suas mudanças para o ramo "main" do seu repositório remoto. Se você quiser verificar seu trabalho, vá para o seu repositório no GitHub. Você deverá ver 'olá mundo!' no seu arquivo README.md.

Agora você configurou com sucesso o Git e o GitHub na sua máquina local e está pronto para colaborar em projetos de código aberto!

CodeSee

CodeSee é uma ferramenta de visualização poderosa que ajuda os desenvolvedores a entenderem as bases de código complexas e a navegarem mais eficazmente em projetos grandes. Ao fornecer uma representação visual do seu código, o CodeSee permite que você:

  • Identifique as dependências: O CodeSee ajuda a entender como as diferentes partes da sua base de código estão conectadas e como as mudanças em uma área podem afetar outras áreas.
  • Analise a estrutura do código: O CodeSee permite visualizar a estrutura do seu código, facilitando a identificação de padrões, antipadrões e áreas para melhorias.
  • Navegue em bases de código grandes: Com o CodeSee, você pode navegar rapidamente em grandes bases de código e encontrar as partes do código nas quais precisa trabalhar.

Para começar a usar o CodeSee, visite o site oficial (https://www.codesee.io/) e siga as instruções para instalar a extensão no seu navegador e integrá-la à sua conta do GitHub.

VS Code

O Visual Studio Code (VS Code) é um editor de código popular, gratuito e de código aberto desenvolvido pela Microsoft. Ele suporta uma ampla variedade de linguagens de programação e oferece muitos recursos que o tornam uma excelente escolha para o desenvolvimento de código aberto:

  • Suporte integrado ao Git: O VS Code oferece suporte integrado ao Git, permitindo que você gerencie seus repositórios Git, faça o staging e confirme alterações e resolva conflitos de mesclagem diretamente no editor.
  • Extensibilidade: O VS Code oferece um ecossistema rico de extensões que podem melhorar sua experiência de desenvolvimento e adicionar suporte para linguagens, ferramentas e frameworks adicionais.
  • Terminal integrado: O VS Code inclui um terminal integrado que permite executar comandos, scripts e tarefas de construção diretamente no editor.
  • Customizável: O VS Code é altamente customizável, permitindo que você adapte o editor às suas preferências e fluxo de trabalho. Você pode personalizar o tema, os atalhos de teclado e as configurações para criar um ambiente de desenvolvimento personalizado.

Para baixar e instalar o VS Code, visite o site oficial (https://code.visualstudio.com/) e siga as instruções para o seu sistema operacional.

Discord

O Discord é uma plataforma popular de mensagens e chat de voz amplamente utilizada pelas comunidades de código aberto para comunicação e colaboração. Ao ingressar em servidores do Discord relacionados aos seus interesses e projetos, você pode:

  • Conectar-se com outros desenvolvedores: O Discord permite que você converse com outros desenvolvedores, faça perguntas e compartilhe seu conhecimento com a comunidade.
  • Ficar informado: Muitos projetos de código aberto usam o Discord para compartilhar atualizações, anúncios e outras informações importantes. Ao ingressar em seus servidores, você pode se manter informado sobre os últimos desenvolvimentos e contribuir de forma mais eficaz.
  • Participar de discussões: Os servidores do Discord frequentemente hospedam discussões sobre vários tópicos relacionados ao desenvolvimento de software livre. Ao participar dessas discussões, você pode:
  • Aprender com os outros
  • Compartilhar suas ideias
  • Contribuir para o conhecimento coletivo da comunidade

Encontre oportunidades de colaboração

Os servidores Discord podem ser uma excelente maneira de encontrar pessoas que compartilham seus interesses e buscam oportunidades de colaboração. Ao criar laços com outros desenvolvedores, você pode:

  • Descobrir novos projetos para trabalhar
  • Formar parcerias valiosas

Como começar

Para começar a usar o Discord, visite o site oficial (https://discord.com/) e crie uma conta. Depois de ter uma conta, você pode pesquisar comunidades e projetos open source em plataformas como GitHub, GitLab ou a Kalify Inc para encontrar seus servidores Discord e participar da conversa.

Próxima seção

No próximo capítulo, veremos como contribuir para projetos open source, incluindo como encontrar projetos para trabalhar, como enviar contribuições e como explicar o que acontece depois que sua contribuição é aceita.

5. Como contribuir para o código aberto

Neste capítulo, iremos orientá-lo pelo processo de contribuição para projetos de código aberto. Abordaremos os seguintes tópicos:

  • Encontrando projetos para contribuir
  • Como enviar uma contribuição?
  • Integração em um novo projeto
  • O que acontece em seguida?

Encontrando projetos para contribuir

Um dos primeiros desafios que você pode enfrentar ao entrar no mundo do código aberto é encontrar um projeto para contribuir. Aqui estão algumas dicas para ajudá-lo a descobrir projetos que correspondam aos seus interesses e habilidades:

  1. Explore o GitHub e o GitLab: Tanto o GitHub quanto o GitLab hospedam uma grande quantidade de projetos de código aberto. Você pode usar a função de pesquisa deles para encontrar projetos com base em palavras-chave, linguagens de programação ou tópicos específicos.

  2. Siga seus interesses: Pense nas ferramentas, estruturas (frameworks) e bibliotecas que você usa ou gostaria de aprender mais. Muitos desses projetos são de código aberto e recebem de bom grado contribuições da comunidade.

  3. Junte-se às comunidades de código aberto: Existem muitas comunidades, fóruns e plataformas de discussão online dedicados ao desenvolvimento de código aberto. Ao se juntar a essas comunidades, você pode entrar em contato com outros desenvolvedores, descobrir novos projetos e encontrar oportunidades de colaboração. Por exemplo, no servidor Discord da Kalify, compartilhamos problemas iniciais, projetos interessantes do GitHub e problemas abertos em nossos repositórios.

  4. Aproveite a comunidade: Kalify é uma comunidade que ajuda os desenvolvedores a descobrir projetos de código aberto para contribuir. Usando a Kalify, você pode encontrar projetos que correspondam aos seus interesses, habilidades e metas.

Começando a contribuir

Depois de encontrar um projeto ao qual você gostaria de contribuir, é importante entender como o projeto aceita contribuições. Aqui estão algumas etapas que você pode seguir para garantir que está seguindo os procedimentos estabelecidos pelos mantenedores para os contribuidores.

  1. Familiarize-se com o projeto: Leia a documentação do projeto, incluindo o arquivo README, para entender seu propósito, objetivos e convenções de codificação. Em seguida, leia o arquivo CONTRIBUTING para compreender o processo de contribuição. Explore o código do projeto, sua estrutura e as issues existentes.

  2. Encontre um bug/problema ou relate um bug: Procure por issues marcadas como "good first issue" (bom primeiro problema) ou "beginner-friendly" (amigável para iniciantes) que correspondam ao seu nível de habilidade. Você também pode identificar um recurso ou melhoria na qual gostaria de trabalhar e verificar se está alinhado com a roadmap do projeto. Isso pode envolver atualizações na documentação, correções de bugs, modificações de conteúdo, etc.

  3. Solicite atribuição do problema: Quando você fizer sua primeira contribuição a um projeto, é aconselhável solicitar que os mantenedores atribuam o problema a você. Isso garante que você não está duplicando esforços e que sua contribuição está alinhada com os objetivos e requisitos do projeto. Se não houver instruções no arquivo CONTRIBUTING, você pode comentar na issue: "Posso ser atribuído a este problema?". Quando um mantenedor o atribuir, você verá seu nome de usuário na issue.

Como enviar uma contribuição?

Depois de encontrar o projeto ao qual deseja contribuir, o próximo passo é enviar a contribuição. Aqui estão as etapas gerais do processo:

  1. Faça um fork do repositório: Crie uma cópia do repositório do projeto no seu próprio perfil GitHub. Isso criará uma cópia do repositório em sua conta GitHub, permitindo que você faça alterações no código sem afetar o projeto original.

  2. Clone o seu fork: Clone o repositório forkado para a sua máquina local usando o seguinte comando no seu terminal ou prompt de comando:

git clone https://github.com/username/nome-do-repositorio.git

Substitua "username" pelo seu nome de usuário GitHub e "nome-do-repositorio" pelo nome do repositório.

  1. Crie uma nova branch: Antes de fazer alterações, crie uma nova branch no seu repositório local para trabalhar na sua contribuição. Isso ajuda a manter suas alterações separadas da branch principal e facilita o envio de uma pull request posteriormente. Você pode criar uma nova branch com o seguinte comando:
git checkout -b nome-da-sua-branch

Substitua "nome-da-sua-branch" por um nome descritivo, como "correcao-bug-123" ou "nova-funcionalidade".

  1. Faça as suas alterações: Agora que você tem uma nova branch, pode fazer as alterações no código. Certifique-se de seguir as diretrizes e convenções de codificação do projeto, e teste as suas alterações para garantir que funcionam conforme o esperado.

  2. Confirme as suas alterações (commit): Após fazer as suas alterações, coloque-as na área de preparação e faça um commit usando os seguintes comandos:

git add .
git commit -m "Sua mensagem de commit"

Substitua "Sua mensagem de commit" por uma breve descrição das alterações que você fez.

  1. Envie as suas alterações (push): Envie as suas alterações para o seu repositório forkado no GitHub usando o seguinte comando:
git push origin nome-da-sua-branch

Substitua "nome-da-sua-branch" pelo nome da sua branch.

  1. Crie uma pull request: Após enviar as suas alterações, vá para o repositório original do projeto no GitHub e clique no botão "Nova pull request" (New pull request). Na lista suspensa "base repository" (repositório base), selecione o repositório original e, na lista suspensa "head repository" (repositório de origem), selecione o seu repositório forkado. Escolha a sua branch na lista suspensa "compare" (comparar) e clique em "Criar pull request" (Create pull request). Preencha as informações necessárias e envie a sua pull request.

  2. Responda aos comentários: Após enviar a sua pull request, os mantenedores do projeto podem fazer comentários ou solicitar alterações. Certifique-se de responder prontamente e considerar as preocupações ou sugestões que possam surgir.

Ao seguir essas etapas, você estará pronto para enviar as suas contribuições para projetos de código aberto e colaborar com outros desenvolvedores para melhorar o código base.

Prática

Agora que você sabe como encontrar e contribuir para projetos de código aberto, é hora de colocar as suas habilidades em prática. Vamos contribuir para esse site de documentação da Kalify usando a especificação "all contributors".

  1. Comece fazendo um fork do repositório, conforme descrito acima, mas desta vez, o repositório é o website-kalify: https://github.com/yagasaki7k/website-kalify. Clicando em "Fork" no GitHub, você criará uma cópia do repositório na sua conta do GitHub.

  2. Em seguida, clone esse repositório na sua máquina local. No seu terminal ou prompt de comando, execute o seguinte comando:

git clone git@github.com:[seu-nome-de-usuario]/repositorio.git

Este tutorial presume que o Node.js está instalado na sua máquina, o que é necessário para trabalhar com este projeto. Se você não tiver o Node.js instalado, pode baixá-lo em https://nodejs.org/pt-br/download/>.

  1. Depois de clonar, abra o projeto no seu terminal e execute npm install para instalar as dependências, lembre-se de estar dentro da pasta. Você também pode usar yarn se preferir outro gerenciador de pacotes.

  2. Crie uma nova branch: Antes de fazer alterações, lembre-se de criar uma nova branch no seu repositório local para trabalhar na sua contribuição. Você pode criar uma nova branch com o seguinte comando:

git checkout -b feature/[seu-nome-de-usuario]

Não se esqueça de substituir "[seu-nome-de-usuario]" pelo seu nome de usuário GitHub.

Lembre-se que assim que seu pull request for aceito, você já estará fazendo parte como contribuidor do projeto.

  1. Confirme as suas alterações, faça um commit e envie para o seu repositório forkado.

  2. Após o envio, vá para o repositório original do projeto no GitHub e clique em "Nova pull request" (New pull request). Na lista suspensa "base repository" (repositório base), selecione o repositório original e, na lista suspensa "head repository" (repositório de origem), selecione o seu repositório forkado. Escolha a sua branch na lista suspensa "compare" (comparar) e clique em "Criar pull request" (Create pull request). Preencha as informações necessárias e envie a sua pull request.

Parabéns! Você acabou de fazer uma contribuição para o código aberto! No próximo capítulo, você a adicionará ao seu portfólio de código aberto - um currículo para contribuições de código aberto onde poderá mostrar o seu trabalho e atrair potenciais empregadores e amigos que usam o Kalify. Por enquanto, vamos continuar com algumas notas sobre integração.

Integração em um Novo Projeto

Quando você se junta a um novo projeto de código aberto, é importante se familiarizar com as diretrizes, convenções e fluxo de trabalho do projeto. Aqui estão algumas dicas para ajudar você a ter sucesso na sua integração:

  1. Leia a documentação: Comece lendo a documentação do projeto, incluindo o arquivo README, as diretrizes de contribuição e o código de conduta. Isso ajudará você a entender os objetivos do projeto, os requisitos e as expectativas dos contribuidores.

  2. Junte-se à comunidade: Muitos projetos de código aberto têm comunidades online, fóruns ou plataformas de discussão onde os desenvolvedores podem fazer perguntas, compartilhar conhecimento e colaborar. Ao se juntar a essas comunidades, você pode entrar em contato com outros contribuidores, aproveitar suas experiências e obter ajuda para resolver os problemas que encontrar.

  3. Comece com tarefas pequenas: quando você está começando em um projeto, é aconselhável começar com tarefas pequenas e gerenciáveis, como corrigir bugs, adicionar testes ou atualizar a documentação. Isso ajudará você a se familiarizar com o código-fonte e o fluxo de desenvolvimento sem se sentir sobrecarregado.

  4. Peça ajuda: Se você não tem certeza de algo ou está enfrentando um problema, não hesite em pedir ajuda. As comunidades de código aberto geralmente são solidárias e acolhedoras, e outros contribuidores ficarão felizes em ajudar você.

  5. Seja paciente e persistente: Integrar-se a um novo projeto pode ser desafiador, especialmente se você for novo no desenvolvimento de código aberto. Seja paciente consigo mesmo e não desanime com falhas ou erros. Com perseverança e prática, você se tornará mais confortável e confiante em suas contribuições.

O que acontece em seguida?

Depois que sua contribuição for enviada e revisada, um dos seguintes resultados pode ocorrer:

  1. Sua contribuição é aceita: Se sua contribuição for aprovada pelos responsáveis pelo projeto, ela será mesclada na branch principal do código-fonte.

Parabéns! Seu trabalho agora faz parte do projeto e você fez uma contribuição valiosa para a comunidade de código aberto.

  1. Sua contribuição requer alterações: Às vezes, os responsáveis pelo projeto podem solicitar alterações em sua contribuição antes de aceitá-la. Isso pode ser devido a problemas de codificação, conflitos com outras alterações ou necessidade de documentação adicional. Nesse caso, faça as alterações solicitadas e envie novamente sua solicitação de pull.

  2. Sua contribuição é rejeitada: Em alguns casos, sua contribuição pode não atender aos objetivos ou requisitos do projeto, ou pode não ser a melhor solução para um problema. Se sua contribuição for rejeitada, não desanime. Considere os comentários recebidos como uma oportunidade de aprendizado e melhoria. Você sempre pode tentar contribuir para outro projeto ou enviar uma contribuição diferente para o mesmo projeto.

Continuando a contribuir para projetos de código aberto, você ganhará experiência valiosa, desenvolverá novas habilidades e construirá um portfólio sólido de trabalho. No próximo capítulo, discutiremos algumas estratégias para começar a contribuir para projetos de código aberto, ganhar terreno em suas contribuições e desenvolver seu currículo de código aberto com a ajuda da Kalify Inc.

Como contribuir para o código aberto

Neste capítulo, vamos guiá-lo pelo processo de contribuição para projetos de código aberto. Abordaremos os seguintes tópicos:

  • Encontrar projetos para trabalhar
  • Como enviar uma contribuição?
  • Integrando-se a um novo projeto
  • O que acontece em seguida?

Encontrar projetos para trabalhar

Um dos primeiros desafios que você pode enfrentar ao entrar no mundo do código aberto é encontrar um projeto ao qual contribuir. Aqui estão algumas dicas para ajudá-lo a descobrir projetos que se encaixem em seus interesses e habilidades:

  1. Explore o GitHub e o GitLab: O GitHub e o GitLab hospedam uma grande quantidade de projetos de código aberto. Você pode usar a função de pesquisa deles para encontrar projetos com base em palavras-chave, linguagens de programação ou tópicos específicos.

  2. Siga seus interesses: Pense nas ferramentas, estruturas e bibliotecas que você usa ou gostaria de aprender mais. Muitos desses projetos são de código aberto e recebem contribuições da comunidade com prazer.

  3. Junte-se às comunidades de código aberto: Existem muitas comunidades, fóruns e plataformas de discussão online dedicados ao desenvolvimento de código aberto. Ao se juntar a essas comunidades, você pode entrar em contato com outros desenvolvedores, descobrir novos projetos e encontrar oportunidades de colaboração. No servidor Discord da Kalify, por exemplo, compartilhamos problemas iniciais, projetos interessantes no GitHub e problemas abertos em nossos repositórios.

Começando a contribuir

Depois de encontrar um projeto ao qual gostaria de contribuir, é importante entender como o projeto recebe contribuições. Aqui estão algumas etapas que você pode seguir para garantir que está seguindo os procedimentos estabelecidos pelos responsáveis pelo projeto para os contribuidores.

  1. Familiarize-se com o projeto: Leia a documentação do projeto, incluindo o arquivo README, para entender o propósito, os objetivos e as convenções de codificação do projeto. Em seguida, leia o arquivo CONTRIBUTING para entender melhor o processo de contribuição. Familiarize-se com o código-fonte do projeto, sua estrutura e os problemas existentes (issues).

  2. Encontre um bug/problema ou relate um bug: Procure por problemas rotulados como "good first issue" (bom primeiro problema) ou "beginner-friendly" (amigável para iniciantes) que correspondam ao seu nível de habilidade. Você também pode identificar um recurso ou melhoria com os quais gostaria de trabalhar e verificar se eles estão alinhados com a trajetória do projeto. Isso pode incluir atualizações na documentação, correções de bugs, alterações de conteúdo, etc.

  3. Peça para ser atribuído ao problema: Quando você está fazendo sua primeira contribuição a um projeto, é aconselhável pedir aos responsáveis para ser atribuído ao problema. Isso garantirá que você não está trabalhando duplicadamente e que sua contribuição está de acordo com os objetivos e requisitos do projeto. Se não houver instruções no arquivo CONTRIBUTING, você pode comentar no problema, "Posso ser atribuído a este problema, por favor?" Quando o responsável atribuir o problema a você, você notará que o problema agora está etiquetado com seu nome de usuário.

Como enviar uma contribuição?

Depois de encontrar o projeto para o qual deseja contribuir, o próximo passo é enviar uma contribuição. Aqui estão os passos gerais do procedimento:

  1. Faça um fork do repositório: Crie uma cópia do repositório do projeto, isso criará uma cópia do repositório na sua conta do GitHub. Isso permitirá que você faça alterações na base de código sem afetar o projeto original.

  2. Clone o seu fork: Clone o repositório forkado para a sua máquina local executando o seguinte comando no seu terminal ou prompt de comando:

git clone https://github.com/username/repository-name.git

  1. Criar uma nova branch: Antes de fazer qualquer modificação, crie uma nova branch no seu repositório local para trabalhar na sua contribuição. Isso ajudará a manter suas alterações separadas da branch principal e facilitará a submissão de uma solicitação de pull request posteriormente. Você pode criar uma nova branch usando o seguinte comando:
git checkout -b seu-nome-de-branch

Substitua "seu-nome-de-branch" pelo nome descritivo da sua branch, como "correcao-bug-123" ou "adicao-nova-funcionalidade".

  1. Faça suas alterações: Agora que você criou uma nova branch, pode fazer as alterações no código-fonte. Certifique-se de seguir as diretrizes e convenções de codificação do projeto e teste suas alterações para garantir que elas funcionem como esperado.

  2. Confirme suas alterações (commit): Após concluir suas alterações, coloque-as na área de preparação e confirme-as (faça um commit) usando os seguintes comandos:

git add .
git commit -m "Sua mensagem de commit"

Substitua "Sua mensagem de commit" por uma breve descrição das alterações que você fez.

  1. Envie suas alterações (push): Envie suas alterações para o seu repositório fork no GitHub executando o seguinte comando:
git push -u origin seu-nome-de-branch

Substitua "seu-nome-de-branch" pelo nome da sua branch onde você fez as alterações.

  1. Enviar uma solicitação de pull request: Após ter enviado suas alterações, vá para o repositório original do projeto no GitHub e clique no botão "Nova solicitação de pull" (New pull request). Na lista suspensa "repositório base" (base repository), selecione o repositório original e, na lista suspensa "repositório de origem" (head repository), selecione o seu repositório fork. Escolha a sua branch na lista suspensa "comparar" (compare), e clique em "Criar solicitação de pull" (Create pull request). Preencha as informações necessárias e envie a sua solicitação de pull request.

  2. Responder aos comentários: Após enviar a sua solicitação de pull request, os mantenedores do projeto podem fornecer comentários ou solicitar alterações. Certifique-se de responder prontamente e levar em consideração as preocupações ou sugestões que possam ter.

Seguindo esses passos, você poderá enviar as suas contribuições para projetos open source e colaborar com outros desenvolvedores para melhorar o código-base.

6. A Receita Secreta

Neste capítulo, compartilharemos algumas estratégias e dicas menos conhecidas para ter um impacto duradouro na comunidade de código aberto. Discutiremos como focar em problemas em aberto, ganhar destaque em suas contribuições e desenvolver seu currículo de código aberto usando a Kalify.

Problemas em Aberto: Mais do que Corrigir Erros de Digitação

Embora corrigir erros de digitação e melhorar a documentação sejam contribuições valiosas para projetos de código aberto, é crucial olhar além dessas tarefas e concentrar-se na resolução de problemas em aberto. A resolução de problemas em aberto não apenas faz o projeto avançar, mas também permite que você desenvolva uma compreensão mais profunda da base de código e demonstre suas habilidades de resolução de problemas.

Aqui estão algumas dicas para encontrar e resolver problemas em aberto:

  1. Navegue pelo Rastreamento de Problemas: a maioria dos projetos de código aberto usa um sistema de rastreamento de problemas para gerenciar bugs, solicitações de recursos e outras tarefas. Explore o sistema de rastreamento de problemas em busca de problemas que correspondam aos seus interesses e habilidades.

  2. Procure Problemas Adequados para Iniciantes: muitos projetos usam rótulos como "bom primeiro problema" ou "pedido de ajuda" para indicar problemas adequados para iniciantes. Comece por esses problemas para ganhar confiança e adquirir experiência antes de abordar tarefas mais complexas.

  3. Compreenda o Problema: antes de mergulhar em um problema, certifique-se de compreender bem o problema e o resultado desejado. Se você não tiver certeza de algo, faça perguntas ou peça esclarecimentos aos mantenedores do projeto ou a outros contribuidores.

  4. Comunique suas Intenções: antes de começar a trabalhar em um problema, informe aos responsáveis pelo projeto e outros contribuidores que você está interessado em resolvê-lo. Isso pode ajudar a evitar esforços duplicados e garantir que todos estejam na mesma página.

  5. Teste Suas Alterações: depois de resolver um problema, teste cuidadosamente suas alterações para garantir que funcionem conforme o esperado e não introduzam novos problemas.

Ao focar em problemas em aberto em vez de simplesmente corrigir erros de digitação, você terá um impacto mais significativo nos projetos aos quais contribui e demonstrará seu compromisso com a comunidade de código aberto.

Destacando-se nas Contribuições

À medida que você se torna mais experiente em contribuições de código aberto, pode desejar aumentar seu impacto nos projetos em que trabalha e obter reconhecimento por seus esforços. Aqui estão algumas estratégias para se destacar em suas contribuições:

  1. Torne-se um Contribuidor Regular: Contribua regularmente para os mesmos projetos ao longo do tempo. Isso ajudará você a desenvolver um entendimento mais profundo da base de código, a construir relacionamentos com outros contribuidores e a se estabelecer como um membro valioso da comunidade.

  2. Assuma Tarefas Desafiadoras: à medida que você ganha experiência, aborde problemas e recursos mais complexos. Isso não apenas o ajudará a crescer como desenvolvedor, mas também demonstrará sua capacidade de lidar com tarefas difíceis e contribuir de maneira significativa para o projeto.

  3. Colabore com Outros: o código aberto trata da colaboração. Trabalhe com outros contribuidores para resolver problemas, desenvolver recursos e compartilhar conhecimento. Ao colaborar efetivamente, você melhorará não apenas o projeto, mas também criará uma rede sólida de conexões na comunidade de código aberto.

  4. Compartilhe seu Conhecimento: compartilhe seus conhecimentos e ideias escrevendo artigos, criando tutoriais ou fazendo apresentações sobre os projetos em que trabalha. Isso não apenas ajudará os outros a aprender com suas experiências, mas também o estabelecerá como um líder de opinião na comunidade de código aberto.

  5. Mentore Novos Contribuidores: à medida que você ganha experiência em contribuições de código aberto, considere orientar novos contribuidores que estão começando sua jornada no código aberto. Isso pode ajudar a retribuir à comunidade, desenvolver suas habilidades de liderança e construir uma reputação positiva.

Destacando Efetivamente Suas Contribuições

Informações importantes para incluir ao destacar suas contribuições:

  • Novos recursos que você criou.
  • Detalhes do projeto (ferramentas, bibliotecas, tamanho e complexidade).
  • O tipo de suas contribuições: correção de bug, funcionalidade, desempenho, documentação, etc.
  • Detalhes de sua contribuição, incluindo melhorias e impactos no projeto e na comunidade.
  • Detalhes sobre colaboração e trabalho em equipe.

Formato de seu Destaque

Para ser eficaz ao destacar suas contribuições, recomendamos usar o seguinte formato:

  • Título: deve ser uma breve descrição da contribuição. Por exemplo, "Criação de uma ação GitHub para mesclar automaticamente solicitações de pull".
  • Link
  • Descrição: ao destacar sua contribuição, recomendamos mencionar o impacto que teve em todo o projeto. Isso pode ser útil para enfatizar suas qualificações ao se candidatar a empregos, especialmente se você tiver lacunas em seu histórico de empregos. Considere usar o seguinte modelo para ajudar a transformar esse destaque em uma história:
  • Verbo de ação + nome + métrica + resultado.
  • Exemplo: enquanto revisava algumas solicitações de pull para o GirlScript Summer of Code deste ano, notei que a maioria delas não estava sendo mesclada, apesar da minha aprovação e da aprovação do proprietário. Portanto, criei uma ação GitHub onde as solicitações de pull são mescladas automaticamente quando passam pelas etapas de implantação (verbo de ação + nome), o que aumentou a produtividade em 80% (métrica + resultado).

Compartilhe-o!: Depois de criar um portfólio de contribuições de código aberto, você pode compartilhar seu currículo de código aberto com os outros clicando no botão de compartilhamento no cabeçalho de sua página de perfil. Isso pode ser especialmente útil ao se candidatar a empregos, ao fazer networking com outros desenvolvedores ou ao promover seu trabalho na comunidade de código aberto.

Ao aproveitar a Kalify para rastrear suas contribuições de código aberto e desenvolver seu currículo, você estará melhor preparado para destacar suas habilidades, experiência e impacto na comunidade de código aberto.

Em conclusão, começar com contribuições de código aberto e ter um impacto duradouro nos projetos em que você trabalha requer uma combinação de habilidades técnicas, colaboração e perseverança. Ao focar em problemas em aberto, ganhar destaque em suas contribuições e aproveitar a comunidade como a Kalify, você estará no caminho certo para uma jornada bem-sucedida e gratificante no código aberto.

7. Conclusão

Para concluir este curso sobre os fundamentos do código aberto, vamos recapitular as principais lições e discutir os próximos passos em sua jornada no código aberto.

Principais Pontos

Ao longo deste curso, abordamos uma série de tópicos projetados para ajudá-lo a entender e navegar pelo mundo do código aberto:

  1. O que é Código Aberto?: Discutimos a definição de código aberto, sua história e os princípios fundamentais que orientam o movimento de código aberto.

  2. Por que Código Aberto?: Exploramos os benefícios de participar de projetos de código aberto, incluindo acesso ao conhecimento, à comunidade e ao desenvolvimento de habilidades.

  3. Ferramentas para o Sucesso: Apresentamos as ferramentas e plataformas essenciais para contribuintes de código aberto, como GitHub, Git, CodeSee, Visual Studio Code e Discord.

  4. Como Contribuir para o Código Aberto: Discutimos o processo de encontrar projetos para trabalhar, enviar contribuições, integrar-se a novos projetos e o que acontece após o envio de sua contribuição.

  5. O Segredo do Sucesso: Compartilhamos estratégias para começar a contribuir para o código aberto, ganhar destaque em suas contribuições e desenvolver seu currículo de código aberto usando a Kalify.

Compreendendo esses conceitos e aplicando as estratégias que discutimos, você estará bem preparado para iniciar com sucesso sua jornada no mundo do código aberto.

Próximos Passos

Com o conhecimento e as ferramentas que você adquiriu neste curso, você está pronto para mergulhar no mundo do código aberto e começar a fazer contribuições significativas. Aqui estão os próximos passos que o ajudarão a avançar em sua jornada no código aberto:

  1. Identifique seus Interesses e Metas: Antes de começar a contribuir para projetos de código aberto, reserve algum tempo para refletir sobre seus interesses, paixões e objetivos. Isso o ajudará a identificar os projetos que correspondem aos seus valores e objetivos.

  2. Encontre Projetos para Contribuir: Utilize plataformas e comunidades como GitHub, Kalify Inc e CodeTriage para descobrir projetos de código aberto que se alinhem com seus interesses e habilidades. Procure projetos com comunidades ativas, documentação clara e diretrizes de contribuição bem definidas.

  3. Comece a Contribuir: Depois de identificar um projeto para contribuir, comece abordando tarefas pequenas e gerenciáveis para ganhar confiança e adquirir experiência. À medida que se sentir mais confortável, poderá enfrentar tarefas e desafios mais complexos.

  4. Conecte-se com a Comunidade de Código Aberto: Junte-se a fóruns online, plataformas de discussão e grupos de mídia social relacionados aos projetos que lhe interessam. Converse com outros contribuintes, faça perguntas e compartilhe seu conhecimento.

  5. Participe de Eventos e Conferências de Código Aberto: Participe de eventos, conferências e reuniões de código aberto para aprender com os outros, criar contatos com outros desenvolvedores e manter-se atualizado sobre as últimas tendências e melhores práticas no mundo do código aberto.

  6. Compartilhe suas Experiências: Documente sua jornada no campo do código aberto escrevendo artigos de blog, criando tutoriais ou fazendo apresentações. Isso não só permitirá que outros aprendam com suas experiências, mas também o posicionará como um líder de opinião na comunidade de código aberto.

  7. Aprendizado Contínuo: O código aberto é um campo dinâmico e em constante evolução. Mantenha-se atualizado com as últimas ferramentas, técnicas e melhores práticas participando de workshops, fazendo cursos online e lendo artigos e livros sobre desenvolvimento de código aberto. Incluímos uma seção de recursos adicionais para obter mais informações.

Em conclusão, iniciar a aventura do código aberto é uma experiência gratificante e enriquecedora que pode ajudá-lo a desenvolver novas habilidades, criar vínculos com pessoas que compartilham suas ideias e ter um impacto duradouro nos projetos em que trabalha. Com o conhecimento e as ferramentas que você adquiriu neste curso, você está bem preparado para enfrentar os desafios empolgantes e aproveitar as oportunidades que o esperam no mundo do código aberto. Então, vá em frente e comece a contribuir, a comunidade de código aberto aguarda ansiosamente sua participação!

8. Recursos Adicionais

Parabéns pela sua jornada no mundo do código aberto! Aqui estão algumas recursos para você aprender mais sobre como começar no código aberto:

Guias e tutoriais

  • Guias de Código Aberto do GitHub: guias abrangentes sobre vários aspectos do código aberto, incluindo como começar, contribuir, manter projetos e criar comunidades.

  • Primeiras Contribuições por Roshan Jossey: um guia amigável para iniciantes que o orientará durante sua primeira contribuição para um projeto de código aberto.

  • Guia para Iniciantes no Desenvolvimento de Software de Código Aberto pela Linux Foundation: um curso online gratuito que aborda os fundamentos do software de código aberto, incluindo sua história, licenças e modelos de desenvolvimento.

  • Rede de Estudantes de Código Aberto da Mozilla (OSSN): Fornece recursos e suporte para estudantes interessados em código aberto, incluindo guias, eventos e oportunidades de mentoria.

  • Introdução ao GitHub e Projetos de Código Aberto por DigitalOcean: uma série de tutoriais voltados para iniciantes que abrange o básico do código aberto, incluindo como encontrar projetos para contribuir, entender o código-fonte e enviar contribuições.

  • Open Source Friday pelo GitHub: um movimento global que incentiva indivíduos e organizações a contribuir com o código aberto toda sexta-feira. O site fornece recursos e guias sobre como começar no código aberto e encontrar projetos para contribuir.

9. Glossário

Referencial

Um referencial (repositório) é um local central onde o código é armazenado e gerenciado. No código aberto, os repositórios geralmente são hospedados em plataformas como GitHub, GitLab ou Bitbucket. Cada referencial pode conter um ou vários projetos, e os contribuidores podem enviar alterações no código através de solicitações de pull request.

Mantenedor

Um mantenedor é uma pessoa ou grupo de pessoas responsáveis pela manutenção de um projeto de código aberto específico. Os mantenedores geralmente são responsáveis por revisar e aceitar ou rejeitar as contribuições de outros contribuidores. Eles também têm o poder de tomar decisões finais sobre a direção e o escopo do projeto.

Membro Principal

Um membro principal é um contribuidor que recebeu privilégios ou responsabilidades adicionais em um projeto de código aberto. Os membros principais geralmente são contribuidores de confiança que demonstraram um profundo entendimento do projeto e fizeram contribuições significativas para o seu desenvolvimento.

Problema

Um problema é um bug que precisa ser corrigido no código. Problemas podem ser criados por qualquer pessoa e são frequentemente usados para rastrear bugs, solicitações de recursos e outras tarefas que precisam ser realizadas.

Contribuidor

Um contribuidor é qualquer pessoa que faça alterações, adições ou sugestões em um projeto de código aberto. Os contribuidores podem ser desenvolvedores, designers, redatores, testadores ou qualquer pessoa que ajude a melhorar o projeto.

Clonar

Clonar é o processo usado para copiar um repositório Git existente para um novo diretório local. O comando git clone criará um novo diretório local para o repositório, copiará todo o conteúdo do repositório especificado, criará rastreamento de branches remotas e extrairá uma branch inicial localmente. Por padrão, o Git clone criará uma referência ao repositório remoto chamado "origin".

Bifurcar

Um fork é uma cópia de um repositório. Quando você faz um fork de um repositório, cria uma nova cópia da base de código que pode modificar e experimentar sem afetar a base de código original.

Branch (Ramo)

Uma branch (ramo) é uma versão separada do código criada para fins de desenvolvimento. Branches permitem que contribuidores experimentem alterações sem afetar a base de código principal. Quando as alterações estão prontas para serem mescladas na base de código principal, geralmente são enviadas como uma solicitação de pull request.

Solicitação de Pull Request (Pull Request)

Uma solicitação de pull request é uma solicitação de um contribuidor a um mantenedor para mesclar as alterações feitas no código em uma base de código.

Mesclar

Mesclar é o processo de combinar as alterações de uma branch em outra. Quando uma solicitação de pull request é aceita e mesclada, as alterações feitas na solicitação de pull request se tornam parte da base de código principal.

Docs (Documentação)

"Docs" é uma abreviação da palavra "documentação," que é um pedaço de texto que fornece informações sobre como contribuir para projetos de código aberto e as expectativas dos contribuidores. O Markdown, uma linguagem de marcação baseada em texto, é frequentemente usada para criar esse tipo de conteúdo. Quer ver isso em ação? Confira o Guia de Estilo no nosso repositório Pizza Verse!

· Leitura de 11 minutos
Anderson Marlon

Nestjs.com

Minha maior dificuldade com NestJS era realmente entender Módulos, Controladores e Serviços, mas talvez o motivo disso seja não ter tido contato anterior com linguagens "mais pesadas" como Java ou frameworks como Angular que constantemente lidam com esse tipo de cenário.

Então, vou fazer uma espécie de Zettelkasten ou até mesmo - de leigo para leigo - e anotar tudo que eu tenho de dificuldade, cenários, analogias e tudo que é necessário para aprendermos juntos como o que é o NestJS e como ele funciona, já aviso que isso pode ficar grande esse tipo de conteúdo, então recomendo você utilizar o menu da direita para se orientar em tópicos e assuntos que sejam pertinentes a você ou ao assunto que esteja procurando. Bom, vamos lá!

O que é o NestJS?

NestJS é um framework para construção de aplicativos web em Node.js, que utiliza conceitos e padrões familiares aos desenvolvedores que já trabalham com Angular. Ele foi projetado para ser escalável, modular e fácil de manter. O NestJS utiliza TypeScript como sua linguagem principal, o que permite aos desenvolvedores aproveitar recursos avançados de tipagem estática e compilação para JavaScript.

Dúvida: Injeção de Dependência tem a ver?

Resumidamente, quando você injeta uma dependência, você tá fornecendo tudo que é externo e que uma classe precisa pra funcionar. Se você simplesmente importa de uma classe pra outra você acaba criando um acoplamento, porque a classe que recebe o import está diretamente ligada a que fornece.

Então sim, tem a ver, já que o NestJS usa classes.

Entendendo o que é Modules, Providers, Controllers e Services no NestJS

Modules (Módulos)

Seguindo a documentação do NextJS:

Um módulo é uma classe anotada com um decorador @Module(). O decorador @Module() fornece metadados que o Nest usa para organizar a estrutura da aplicação.

Cada aplicação tem pelo menos um módulo, um módulo raiz. O módulo raiz é o ponto de partida que o Nest usa para construir o grafo da aplicação - a estrutura interna de dados que o Nest usa para resolver relacionamentos e dependências de módulos e provedores. Embora teoricamente pequenas aplicações possam ter apenas o módulo raiz, esse não é o caso típico. Queremos enfatizar que os módulos são altamente recomendados como uma maneira eficaz de organizar seus componentes. Assim, para a maioria das aplicações, a arquitetura resultante empregará múltiplos módulos, cada um encapsulando um conjunto de capacidades intimamente relacionadas.

Entendeu? Senão, nem eu.

Mas vamos dissecar isso. Um módulo é uma classe que usa um decorador chamado @Module(), ou seja, ela é identificada por essa nomenclatura. Um módulo é obrigado a ter um módulo raiz que é o principal, talvez aquele vinculado ao aplicativo em si, ou seja, a base da árvore tem de vir de um módulo e depois a gente vai separando eles ou até mesmo criando galhos separados para a mesma aplicação. Sendo assim, eles são responsáveis e altamente recomendados, como citado acima por ser uma maneira eficaz de organizar os componentes.

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}

Aqui, podemos ver que o modulo é responsável pela importação dos controladores (controllers) e do provedores (providers), mas vamos usar a nomenclatura em português para facilitar, estamos aprendendo, não é mesmo?

Sabe-se que no controllers por exemplo, ele é um array: controllers: [CatsController],, podendo colocar mais de um controlador dentro do módulo e assim, se repetindo para os demais.

Mas vamos a minha opinião e experiência. Sabemos que podemos importar mais de vinte, se necessário, então, temos que ter consciência e bom senso de limitar isso a cinco e utilizar outros módulos para fazer outras importações, caso ao contrário, será a mesma coisa que no React, veremos uns trinta useState para criar coisas simples que até mesmo o Javascript puro poderia fazer.

Então atente-se a criação e importação de controladores para dentro dos módulos, se for o caso, crie ramificações, crie outro módulo, importe ele e importe os controladores para dentro dele identificando o cenário mais correto daquela situação, como Users Module, Orders Module e Chat Module (como o caso da imagem acima).

Para criarmos um módulo usando CLI, nós podemos usar o seguinte comando:

nest g module cats

Providers (Provedores)

Segundo a documentação, novamente, já que é importante seguir ela e segundo a própria comunidade, a documentação do NestJS é uma das mais bem feitas da atualidade.

Os Provedores são um conceito fundamental no Nest. Muitas das classes básicas do Nest podem ser tratadas como provedores - serviços, repositórios, fábricas, ajudantes, e assim por diante. A ideia principal de um provedor é que ele pode ser injetado como uma dependência; isso significa que os objetos podem criar várias relações entre si, e a função de "conectar" esses objetos pode ser amplamente delegada ao sistema de tempo de execução do Nest.

Entendeu o cenário? Eu acredito que ficou mais complexo do que a explicação dos módulos, mas vamos lá. De volta a dissecar.

Provedores é um conceito inicialmente, então ele é apenas uma ideia, mas ideia de que? De que classes básicas, são chamadas de provedores, como serviços, repositórios e outros exemplos de cenário, como eu traduzi ao pé da letra, fábricas e ajudantes são na verdade factories e helpers, pode ser que você tenha noção do uso desse cenário melhor do que eu.

A ideia dele é que ele pode ser injetado como uma dependência, lembra que mencionei mais acima? O que quer dizer que objetos podem ter relações entre si - lá ele - e podem se conectar e comunicar-se entre si, é uma espécie de pássaro passando informações entre as árvores (módulos).

Então o CatsService (service) mencionado dentro do provedores no código dos módulos, está correto? Sim. Services é um provider.

Ficou confuso? Se sim, entenda que no código, na hora que estamos importando CatsService para dentro de providers, estamos dizendo para nosso provedor que esse serviço (CatsService) irá prover uma funcionalidade, entendeu? Então, ele não é um modulo, ele é provedor, o motivo? Ele é um serviço. Por isso, é fundamental a nomenclatura, separar os nomes como DogService, BirdService, ou CatHelpers para entender que todos eles fazem parte de um provedor, é uma prática útil para organizar o código e evitar confusões.

O que é Serviços (Services) e quando usar?

Já sabemos que Services é uma coletânea de provedores, se ele tem alguma funcionalidade, ele é importado dentro do provedor, mas BirdService é um provedor? Sim. Ele é um service? Sim. Ele é um Helper? Não, já que não usamos essa nomenclatura e isso pode atrapalhar seu entendimento do código.

No NestJS, os serviços são classes que são importadas dentro do provedor, como mencionado, e eles possuem a lógica de negócios da aplicação. Eles são responsáveis por executar tarefas específicas, como acessar bancos de dados, realizar operações de leitura e gravação, executar cálculos complexos e interagir com outros serviços ou componentes da aplicação, vamos interpretar eles sendo como funções no Javascript, responsáveis por fazer a questão funcionar.

Acredito que no caso das importações, lembra que eu falei que o ideal é chamarmos cinco módulos e depois separarmos, se for o caso? Acredito que não tenha problema ter vinte importações, desde que ele não seja no módulo raiz, e sim, no módulo que ele é responsável, vamos usar o caso da calculadora, certo? Quantos services ele pode ter?

Posso criar um para adição, outro para subtração, outro para multiplicação e assim por diante e não tem problema. O problema maior é você colocar todas essas importações dentro do módulo raiz, sendo que estamos criando um celular, imagina a bagunça que seria, então o ideal, é criarmos um módulo chamado calculatorModule() e importar lá dentro esses services.

Outro exemplo é, em uma aplicação de lista de tarefas, você pode ter um serviço de TaskService que contém métodos para criar, atualizar, recuperar e excluir tarefas do banco de dados. Esse serviço pode ser importado (injetado) em um controlador de tarefas para lidar com as solicitações HTTP relacionadas às tarefas.

Para criar um serviço, via CLI, você pode utilizar o seguinte comando:

nest g service cats

Controllers (Controladores)

E vamos ver na documentação.

O objetivo de um controlador é receber solicitações específicas para a aplicação. O mecanismo de roteamento controla qual controlador recebe quais solicitações. Frequentemente, cada controlador tem mais de uma rota, e diferentes rotas podem realizar diferentes ações. Para criar um controlador básico, usamos classes e decoradores. Os decoradores associam classes com metadados necessários e permitem que o Nest crie um mapa de roteamento (vinculando solicitações aos controladores correspondentes).

Vamos simplificar isso. Qual é a funcionalidade de um controlador? Receber solicitações especificas para a aplicação, então podemos definir que ele pode receber uma funcionalidade para deletar, adicionar ou editar uma funcionalidade dentro da aplicação. Como eles podem ter mais de uma rota, então fica claro que podemos definir um task/delete ou task/create como rotar para fazer determinadas operações, como no caso de deletar e criar.

Para criar um controlador básico, utilizamos classes, assim como nos serviços e decoradores (decorators), os decoradores nesse caso do controlador é o @Controller('cats'), ele é que é o responsável por criar a rota que a aplicação ou usuário irá acessar para conseguir determinada coisa, vamos ver no código abaixo por exemplo:

import { Controller, Get } from '@nestjs/common';

@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}

Explicando o código acima, nós pegamos o @Controller, definimos que a rota que iremos usar (método de roteamento) será cats, então quando acessar localhost:3000/cats, por exemplo, seremos jogados para esse lugar. Definimos que ele é uma classe, como a nomenclatura já diz e que ele tem um @Get().

Mas o que isso significa? É que pelo método HTTP, essa rota ela terá o método GET, então fica fácil definir o que ela irá fazer, no caso, iremos devolver uma informação e dentro ainda, temos uma função chamada findAll() que é do tipo string, que irá retornar 'This action returns all cats'.

Complicado? Acho que não.

Para criar um controller usando CLI, usamos o seguinte comando:

nest g controller name

Entendendo o cenário

Ficou claro como usamos cada funcionalidade para aprendermos a usar o Nest? Claro, ele é um framework back-end de Javascript, então ele é meio que um compilado de funcionalidades em cima do Express. Então temos várias funções semi-prontas, que irão facilitar nossa vida para criar uma aplicação.

Usamos um módulo para definir categorias, como o caso de tarefas ou uma calculadora, levando em conta que são aplicações simples, usamos um controlador para dizer o que acontece quando acessar aquela rota em especifica, seja para deletar um cálculo ou armazenar ele, e usamos o serviço para fazer a funcionalidade funcionar, como fazer um cálculo, por exemplo.

Entendemos que o cenário para a criação desse tipo de aplicação varia muito, acabo que recomendando em utilizar em médias-altas aplicações. O que significa? Não há necessidade de utilizar um NestJS para usar métodos HTTP para criar uma calculadora por exemplo ou fazer um uso de uma simples API, mas existem vários cenários adequados como criar um dashboard financeiro, criar um site de notícias e deixar bem mais completo e esse tipo de cenário.

Considerações Finais

A documentação dele é bem explicada, como podemos ver, eu consegui entender bem mais o que de fato é o NestJS do que seguindo cursos ou vídeos no Youtube, eu simplesmente parei para ler a documentação e usei desse artigo para explicar o que eu aprendi para outra pessoa sobre o que foi passado. Entender todo o cenário, ler com calma, ver a funcionalidade daquele código pouco a pouco e tentar se auto explicar, é uma das maneiras mais simples de se aprender e absorver conhecimento, então não se assuste.

Espero de fato ter conseguido explicar todo o cenário básico do NestJS, espero que você possa pegar projetos e ideias no Youtube para clonar ou utilizar a seu favor para fixar ainda mais essas ideias de como ele funciona, e claro, entender quando utilizá-lo, já que ele é basicamente um carro bem veloz na mão de quem usa e você não vai usar ele para ir na padaria e buscar pão.

Espero ter ajudado, pois a construção desse artigo em si, já foi de grande ajuda até mesmo para mim em entender esse cenário e aplicação e bom, qualquer dúvida ou sugestão, você pode me chamar lá no Twitter ou na Comunidade no WhatsApp.

Obrigado por ter lido até aqui e até a próxima!

· Leitura de 23 minutos
Anderson Marlon

Sam Moghadam Khamseh

Isso não é um artigo sobre desenvolvimento ou tecnologia.

--

Liga Maior e Menor - 20 de Janeiro de 2024 / World's Premier Professional Taekwondo League

A metodologia do Kombat Taekwondo é criar alguém de referência no Taekwondo. Quando se menciona um atleta de competição em UFC, em Boxe ou qualquer outro esporte sempre irão mencionar algumas pessoas, mas no Taekwondo isso não existe e a meta do Kombat é fazer, é transformar essas pessoas de referencia em referencia mundial.

A filosofia do Kombat Taekwondo é a divulgação do esporte e suas academias, os diretores não tem função alguma em interferir na administração do projeto.

Major League - 18+ // Minor League - 18-

Equipe

Presidente de Eventos e Comissário de Eventos - Mestre Chuong Pham Árbitros - Robert Quon (Diretor), Marcelo Rezende (Co Presidente BR) e Elva Adams (Co Presidente USA)

É um esporte de combate distinto e uma liga administrativa pela marca Kombat Taekwondo. Utilizando suas próprias técnicas, suas próprias regras e maneiras de lhe dar com campeonatos sendo independente da WTF ou ITF.

Liga Profissional Campeonatos de títulos mundiais e campeonatos preliminares, sendo para idade a partir de dezoito anos.

Major League Open Mundial, Grand Prix, Torneio Locais, Regionais e Nacionais, sendo para idade a partir de dezoito anos.

Minor League Torneios Locais, Regionais e Nacionais, sendo para Mirim (8 - 9), Infantil (10 - 11), Cadete (12 - 14), Junior (15 - 17)

Qualificação dos oficiais de arbitragem

  • Idade mínima de 21 anos para Ligas Profissionais e Major.
  • Liga menores a partir de 18 anos
  • Faixas pretas em Taekwondo de todos os diferentes estilos.
  • Participar dos treinamentos e seminários necessários.
  • Manter bom condicionamento físico e compostura mental.
  • Demonstrar um conhecimento profundo das regras de competição.

Roles and Responsabilities

Árbitro (Um Central no Individual e Dois no Centro em lutas de Equipes) Controla e administra a luta, avalia advertências e penalidades, declaração do vencedor.

Juízes (Dois a três juízes) Seguir os critérios de julgamento para avaliar os dois competidores por meio de estratégias eficazes de luta e fazer sua própria avaliação independente de cada competidor.

Níveis da Carreira do Árbitro

Nível 1 - Junior / Minimo para graduação para Associado - 3 anos e minimo de 3 eventos

Nível 2 - Associado / Se tiver envolvimento como arbitro em eventos nacionalmente. Minimo para graduação para Profissional - 5 anos e minimo de 5 eventos

Nível 3 - Profissional / Se tiver envolvimento como arbitro em eventos mundiais ou de suma importância. Minimo para graduação para Delegado Técnico - 10 anos e minimo de 10 eventos

Nível 4 - Delegado Técnico / Se tiver envolvimento como arbitro em eventos olimpicos ou de suma importância.

Plano de Educação e Certificação

O treinamento contínuo será oferecido pessoalmente e/ou online. Todos os workshops e seminários de educação não têm curso algum para os árbitros.

A certificação é exigida e mantida pelo árbitro de todos os níveis. Cada árbitro deve participar do treinamento anual e passar no teste de conhecimento.

Nenhum treinamento ou certificação será necessário QUALQUER PAGAMENTO pela ou para Kombat Taekwondo.

Haverá testes de conhecimento posteriormente para análise anual de árbitros.

Vantagens para os árbitros

  • Participação na divisão da receita do evento, oferecendo incentivos financeiros por sua dedicação e contribuições.
  • Cobertura de despesas relacionadas a viagens, garantindo que seu serviço como árbitro seja apoiado e acessível.
  • Acesso a sessões de treinamento e seminário gratuitos, facilitando o desenvolvimento profissional contínuo e o aprimoramento de habilidades.

Plano de Remuneração do Árbitro Liga Profissional

Level 1 - Junior - $150 por evento Level 2 - Associado - $300 por evento Level 3 - Profissional - $800 por evento Level 4 - Delegado Técnico - Participação nos lucros

Transporte, alojamento e refeições serão fornecidos para todos os torneios e campeonatos de Taekwondo do Kombat. Todos os valores de pagamento são em dolar seguindo com base a cotação do dolar no dia. O pagamento é realizado com base apenas NO DIA DO EVENTO, já o dia da pesagem, será apenas realizado a hospedagem e pagamento da alimentação.

O ranqueamento é internacional.

Área de Competição

As lutas de Kombat Taekwondo são realizadas em um ringue especialmente projetado para o Kombat Taekwondo. A área de luta pode ser alterada para atender às exigências e/ou especificações estabelecidas pela Comissão de Eventos de Taekwondo Kombat responsável pela competição. É DE EXTREMA EXIGÊNCIA que seja dentro de um octogono e não em formato de quadrado como convencional no Taekwondo.

Árbitros/Juízes e Responsabilidades

  • O árbitro deve controlar e dirigir o combate.
  • O árbitro deve declarar o vencedor do combate
  • O árbitro aplica advertências e penalidades de acordo com as regras e regulamentos.
  • É nomeado um árbitro central para o combate individual.

Os oficiais de arbitragem deve usar vestuário aprovado Tênis preto, calça preta (não pode jeans), cinto preto, camisa polo do Kombat Taekwondo (Oficial)

Juízes Liga Minor

  • Será implementado um minimo de dois sistemas de juízes (três no máximo). No caso de ser utilizado um sistema de dois juízes, o árbitro central deve tomar a sua decisão para desempatar.
  • Os juízes seguirão os "Critérios de Julgamento" para avaliar ambos os competidores através de estratégias de luta e eficazes e escolher um vencedor.
  • Os juízes estarão posicionados em vários locais à volta da área de combate e tomarão a sua própria decisão independente sobre cada competidor.

Juízes Liga Major

  • Será implementado um sistema mínimo de dois juízes (máximo de três). No caso de ser utilizado um sistema de dois júzises, o árbitro central tomará a sua decisão para desempatar.
  • Os juízes seguirão os "Critérios de Julgamento" para avaliar ambos os competidores através de estratégias de luta e eficazes e preencherão o Cartão de Pontuação e Julgamento.
  • Os juízes estarão posicionados em vários locais à volta da área de combate e tomarão a sua própria decisão independente sobre cada competidor.

Equipamentos

O organizador é responsável por fornecer os suprimentos instruídos pela Comissão de Eventos do Kombat. Os competidores são responsáveis por suas próprias bandagens para mãos, tornozelos e pés e pelo uso de protetores de espuma. A equipe médica do evento e o(s) árbitro(s) designados(s) inspecionarão cada competidor antes de entrar no área de competição.

O que é itens obrigatórios? Luvas de mão e pé oficiais do evento, protetor genital (não é obrigatório no feminino), protetor bocal, protetor feminino (ou top como no UFC), protetor de braço e perna sem velcro (Espuma ou EVA). Os doboks não possuem restrições de cores de gola. Podendo lutar de camiseta, faixa e calça do dobok, não sendo obrigatório a parte de cima. O uso de protetor é obrigatório independente da vestimenta usada pelo atleta.

Já na Minor League, a luva é fechada, o uso do capacete (15-17 e 8-14 anos), qualquer modelo de capacete usado no Taekwondo pode ser utilizado, sem restrições e protetor de tórax são obrigatórios.

Vestuário

  • Os competidores são obrigados a usar trajes oficiais aprovados pelo COmité de Eventos do Kombat Taekwondo. Durante o combate, os competidores só podem usar uniformes de Taekwondo brancos ou pretos com faixas. Além disso, calças de Taekwondo brancas ou pretas com t-shirts da escola/equipe com faixas.
  • Sapatos ou qualquer outro tipo de calçado, com exceção de palmilhas aprovadas pelo Kombat Taekwondo, não podem ser usados durante a competição.
  • Os treinadores e outros acompanhantes podem usar pólos com calças desportivas ou fatos de treino da equipe. Fatos de treino ou trajes casuais de negócios também são opcionais. NÃO são permitidas calças de ganga ou sandálias/sapatos abertos.

Aparência

  • Cada competidor deve manter-se limpo e bem arrumado, além de vestir roupas limpas e usar equipamentos limpos antes do início da luta.
  • Não é permitido usar maquiagem, pintura facial ou corporal, joias ou outros acessíorios perfurantes durante a participação na competição ou exibição. Somente tatuagens permanentes serão permitidas; pinturas feitas com tinta ou qualquer outra substância como maquiagem não são permitidas.
  • Os competidores devem ter unhas das mãos e dos pés curtas e não podem usar objetos metálicos ou quaisquer outros objetos metálicos ou quaisquer outros objetos que possam ferir o oponente. É permitido pintas as unhas, mas unhas artificiais não são permitidas.
  • É permitida uma pequena quantidade de vaselina para aplicação apenas na área facial.
  • Os árbitros avaliarão se o cabelo do competidor representa alguma ameaça à sua segurança ou à do adversário.

Divisão de Peso na Major League

Feminino

  • -49Kg / 49.1 - 57kg
  • 57.1 - 67Kg
  • +67Kg

Masculino

  • -54Kg
  • 54.1Kg - 58kg
  • 58.1 - 63kg
  • 63.1kg - 68kg
  • 68.1kg - 74kg
  • 71.4kg - 80kg
  • 80.1kg - 87kg
  • +87kg

A comissão devem aprovar e não os árbitros que os lutadores subam ou desçam de categoria de peso durante a realização do evento.

Divisão de Peso na Minor League

Divisão de Peso

Procedimento para Pesagem

  • A pesagem geral dos competidores deverá ser realizada um dia antes OU na manhã do evento.
  • Durante a pesagem da Liga Maior, os competidores do sexo masculino deverão usar cueca, e as competidoras do sexo feminino deverão usar calcinha, sutiã ou biquini. Será permitida uma tolerância de 300 gramas. A Liga Menor os atletas deverão pesar de calça de dobok e camiseta. Será permitida uma tolerância de 800 gramas.
  • A pesagem geral será realizada uma vez, com uma oportunidade de pesagem adicional concedida a qualquer competidor que não tenha atingido a exigência de peso em sua primeira tentativa. Os competidores terão um intervalo de duas horas para uma segunda pesagem, sempre que decidirem usá-la, e não serão permitidas outras tentativas.
  • Para evitar a desqualificação durante a pesagem, balanças idênticas às oficiais devem ser fornecidas no local de acomodação do competidor ou no local da pesagem para as pré-pesagens.

Classificação e métodos de competições

  • Deve ser entre competidores da mesma categoria de peso.
  • Quando necessário, categorias de peso adjacentes podem ser combinadas para criar uma única classificação com a aprovação da comissão de eventos do Kombat Taekwondo.
  • A decisão do(s) comissários(s) do Kombat Taekwondo deve ser acompanhada da aceitação do competidor. Nenhum competidor poderá participar de mais de uma (1) categoria de peso em um evento.

Duração do combate e número de rounds

  • Cada combate consistirá em um round.
  • O combate individual tem duração de três mininos na Liga Maior, na categoria Cadete e Junior na Liga Menor.
  • Na Liga Menor as categorias Infantil e Mirim terá duração de dois minutos.
  • Não existe intervalo de rounds e caso o lutador vá ao chão, serão permitido dez segundos para se levantar e continuar a luta em pé.

Sistema de competição: Eliminatória Simples

Área de ataque permitida na Liga Maior

Técnicas de mãos e chutes

  • Toda a cabeça acima do queixo para técnicas de chute.
  • Face frontal e ambos os lados da cabeça para técnicas de mão/cotovelo.
  • Todo o corpo, exceto a área da coluna vertebral acima da linha da cintura, para ambas as técnicas.

Projeções

  • Entre o osso do tornozelo e o joelho (frontal, lateral ou posterior)

Área de ataque permitida na Liga Menor

Técnicas de mãos e chutes

  • Toda a cabeça acima do queixo, exceto a parte de trás da cabeça.

Projeções

  • Entre o osso do tornozelo e o joelho (frontal, lateral ou posterior)

Técnicas Válidas na Liga Menor

Mão e Braço

  • Soco de punho fechado, punho de martelo e punho de costas. Não é permitido golpear com o cotovelo.

Perna

  • Quaisquer técnicas de chute na zona permitida acima da cintura
  • Golpe de joelho sem segurar ou agarrar

Projeções

  • As técnicas de derrubada devem ser aplicadas segurando ou agarrando a parte superior do corpo e quando o adversário não tiver a dar pontapés/chutes.
  • Aplicar as técnicas de derrubada ao agarrar dentro de 3 segundos.

Luta no Solo

  • NÃO É PERMITIDO!

Técnicas de Perna (Chutes) na Liga Menor

  • Junior (15 - 17 anos) - Tórax (Full Contact) - Cabeça (Full Contact)
  • Cadete (12 - 14 anos) - Tórax (Full Contact) - Cabeça (Light Contact)
  • Infantil (10 - 11 anos) - Tórax (Full Contact) - Cabeça (Light Contact)
  • Mirim (8 - 9 anos) - Tórax (Full Contact) - Cabeça (Light Contact)

Definição de Contato Light

  • O contato ligeiro da mão e do pé com a cabeça.
  • Não há som no momento do contato.
  • A cabeça não se move, não existe potência.
  • Não há sangue ou marcas na cabeça.

Técnicas Válidas na Liga Maior

Mão e Braço

  • Soco de punho fechado, gancho, corte superior, punho de martelo e punho de costas.
  • Golpes de mão aberta, como golpes de faca e de mão de Ridge.
  • Golpes de cotovelo sem agarrar ou segurar o oponente em uma posição ereta.

Perna

  • Quaisquer técnicas de chute na zona permitida acima da cintura
  • Golpe de joelho em pé, sem segurar ou agarrar qualquer parte do corpo ou da cabeça.

Projeções

  • Rasteiras e raspagem são permitidos somente na faixa de aproximadamente 12 polegadas da parte inferior do calcanhar entre o osso do tornozelo e o joelho. É necessário segurar o oponente para essa técnica.
  • As técnicas de derrubada devem ser aplicadas segurando ou agarrando a parte superior do corpo e quando o oponente não estiver chutando.
  • Aplique as técnicas de derrubada ao agarrar (clinching) dentro de três segundos.
  • O girar passando a perna é permitido sem segurar.
  • NÃO é permitido o chute direto abaixo do joelho para tentar a raspagem.

Luta no Solo

  • Qualquer parte do corpo toca o chão, exceto o pé.
  • O competidor SÓ pode usar socos no rosto e no corpo sem segurar ou agarrar.
  • NÃO é permitido nenhum tipo de técnica de chute, exceto o "caído", em que o competidor em uma posição inferior pode chutar ou bloquear o opoennte. NÃO são permitidos chutes abaixo da cintura ou diretamente na frente do rosto.
  • Não é permitido qualquer chute direto (usando a sola do pé), quando se está no chão na intenção de afastar o oponente ou diretamente sobre o rosto.
  • Não é permitido sentar ou montar em cima do competidor no solo

Penalidades (15)

Mãos e Braço - Prohibited Hand Techniques (4)

  • Sufocamento ou qualquer golpe com a mão no pescoço ou na parte de trás da coluna vertebral.
  • Agarrar ou segurar o pescoço/cabeça/perna para realizar qualquer tipo de ataque.
  • Nenhum dedo em orifícios ou qualquer manipulação de articulação por meio de técnica de luta.
  • NÃO é permitido golpear com o cotovelo ou qualquer outra técnica de mão que não seja um soco direto quando o competidor estiver caído no chão, e o competidor caído NÃO pode chutar o atacante diretamente no rosto ou abaixo da cintura

Chutes ou Perna (4)

  • Chutar abaixo da linha da cintura, exceto em técnicas de derrubada.
  • Bloqueio de joelho ou bloqueio intencional de chutes com qualquer parte da perna.
  • Chute na parte de trás da coluna vertebral.
  • Chutar ou pisotear o competidor que está no chão.

Evitando uso de técnicas inseguras ou de má conduta

  • Regra dos 5 segundos: Se os competidores não estiverem lutando dentro de 5 segundos, o árbitro comandará verbalmente e em inglês "Fight", como advertência. Se a luta continuar sem nenhuma ação de um ou de ambos os competidores, será aplicada uma penalidade por "Evitar a luta".
  • Quando o competidor não demonstrar vontade de lutar, agarrando, segurando ou fugindo.
  • Dar cabeçadas, arrancar os olhos, fisgar peixes ou atacar os ombros.
  • Morder, arranhar, beliscar, torcer a carne, cuspir ou puxar o cabelo.
  • Não é permitido montar ou sentar no oponente caído para realizar qualquer tipo de ataque.
  • Puxar equipamentos e roupas de proteção.
  • Comportamento antidesportivo.
  • Fora da área de luta: Quando AMBOS os pés estão fora. Se o competidor for empurrado para fora com a mão, o peito ou o ombro, o outro competidor será penalizado.

Advertências verbais, penalidades oficiais e lesões resultantes de uma penalidade.

  • O Árbitro Central tem autoridade para emitir advertências verbais, penalidades ou desqualificar um competidor por faltas cometidas durante a luta. As advertências serão emitidas sem interromper a ação da luta em andamento.
  • A execução deliberada de qualquer técnica proibida resultará em uma penalidade imediata. Para emitir uma penalidade oficial, o árbitro separará os lutadores e se comunicará diretamente com o atleta que está sendo advertido.
  • A execução não intencional de golpes de mão e chutes proibidos receberá uma advertência verbal imediata.
  • A repetição de ações ilegais intencionais, quando o árbitro já tiver dado advertências verbais e/ou CINCO (5) penalidades oficiais, indicando uma clara intenção de causar lesão ao oponente, levará à desqualificação do competidor. Se um competidor tiver que ser desqualificado, o árbitro sinalizará acenando com as mãos acima da cabeça para indicar o término do combate.
  • Se um competidor sofrer uma lesão resultante de uma falta, se o competidor lesionado não puder continuar após consultar a equipe médica do evento, o competidor lesionado vencerá de acordo com as regras, regulamentos e políticas do Presidente da Comissão do Evento de Kombat Taekwondo.
  • Se um competidor sofre uma lesão provocada por um nocaute na cabeça, não poderá competir até receber autorização do médico, após sessenta (60) dias.

A vitória pode ser alcançada por

Nocaute

  • Nocaute por meio de ataques legais, como socos, chutes, joelhadas, cotoveladas ou quedas em que o competidor NÃO CONSEGUE CONTINUAR a luta devido aos golpes de alto impacto.
  • Nocaute duplo: Quando ambos os competidores forem nocauteados por ataques legais ao mesmo tempo e não conseguirem se levantar quando as 10 contagens terminarem, o vencedor da partida será determinado pelo cartão de pontuação do juiz antes do nocaute duplo.

Nocaute Técnico

  • Devido à interrupção do árbitro ou do médico. Por exemplo, quando um competidor não puder se defender devido à inferioridade técnica, uma lesão que comprometa seu bem-estar físico.
  • Solicitação de retirada do técnico ou do competidor.

Knockdowns

  • Knockdown no chão devido a técnicas legais de chutes e mãos de alto impacto.
  • O árbitro central começará a "cantar" 10 contagens (1 a 10) quando o competidor estiver no chão. O competidor caído deve tentar se levantar em 10 segundos.
  • As quedas causadas por qualquer técnica de derrubada (raspagens, golpes, arremessos), empurrões, desequilíbrio ou escorregões NÃO são consideradas knockdowns. O árbitro central iniciará a contagem "verbal" de 10 para lembrar o competidor caído de se levantar.
  • Quando um competidor sofrer 3 knockdowns durante a luta, ele irá perder por nocaute técnico.

Desqualificação

  • O competidor que cometer reptidamente ações ilegais "intencionais" receberá uma penalidade oficiail. Após receber seis (6) penalidades, o competidor será desqualificado da luta, o total de penalidade válidas são apenas de cinco.
  • Manipular o equipamento de proteção para obter vantagem ou causar lesões no adversário.
  • Derrubar um oponente por meio de ataques ilegais de qualquer tipo.

Decisão dos Juízes

Decisão Unânime

  • Quando os três juízes selecionam o mesmo competidor como vencedor do combate.

Decisão Dividida

  • Quando dois juízes escolhem um competidor como vencedor da partida e um juiz seleciona o oponente como vencedor. No caso de um sistema de dois juízes, o árbitro central deverá tomar uma decisão para critério de desempate.
  • No caso de uma competição ser concluída devido a uma lesão resultante de uma falta ou de uma ocorrência de nocaute duplo, serão aplicadas as regras estabelecidas pela comissão que preside com relação às decisões técnicas.
  • No final do combate, a decisão será anunciada pelo árbitro central como: "Juizes decisão", e anuncia o vencedor, no caso da liga menor.

Critérios de Julgamentos

Knockdowns

  • O knockdown ocorre quando o competidor é derrubado por golpes fortes e de alto impacto por meio de técnicas de mão/braço ou chute. Isso será determinado exclusivamente pelo árbitro.
  • 3 Knockdowns = TKO

Chutes, golpes e derrubadas eficazes

  • Golpes legais obtidos por meio de uma combinação de chutes e golpes que têm um impacto imediato com o potencial de levar a um nocaute.
  • Execução bem-sucedida de quedas, tentativas de submissão (sequência bruta de golpes aonde o oponente não consegue se defender ou reagir adequadamente) e obtenção de posições vantajosas que resultam em impacto imediato com potencial para levar a um nocaute.

Agressividade

  • Fazer tentativas agressivas para terminar a partida de forma eficaz.
  • O termo-chave é eficaz
  • Perseguir um oponente sem resultados efetivos ou impacto não deve influenciar as avaliações dos juízes, como o caso de chutes que são realizados como formas de intimidar ao invés de acertar.

Processo de avaliação e mensuração dos juízes

  • As avaliações em cada critério são feitas por nível de eficácia, não por pontos.
  • Cada técnica será avaliada de acrodo com os golpes desferidos com potência, ou seja, um atleta que desferir golpes e conseguir um knockdown não poderá ter o mesmo nível que seu adversário na técnica utilizada.
  • As técnicas de mão/braço ou chutes não devem ser registrados quantitativamente para determinar o nível dos ataques, mas devem ser registrados qualitativamente, ou seja, somente aqueles com potência e impacto no corpo ou na cabeça, descartando golpes que apenas tocam.

Pontuações no Ranking

Elas funcionam da seguinte maneira, o lutador que vencer no Mundial Open ganhará 40 pontos e receberá bônus se tiver knockout por chute sendo 15 pontos por cada combate e 10 pontos se caso for soco. Se for no Grand Prix, será 15 pontos pela vitória, 15 de bônus pelo knockout no chute e 10 de bônus se for no soco, e na liga maior será 5 pontos por vitória e os mesmos valores de bônus, 15 de chute e 10 de soco.

Os mandatos duram dois anos, sendo o total de pontos vigente no ano integros, ou seja, o que você ganhou não será afetado. No ano posterior o valor é reduzido para 50%. Se você ganhou 120 em 2024, você ficará com 60 em 2025, em 2026 esse valor é zerado, já que usa como base +50% com base no valor ganho no primeiro ano.

  • Os pontos são atribuídos com base na tabela de pontos de classificação por tipo de torneio e categoria de prêmio.
  • Os pontos atribuídos só serão válidos por dois anos completos a partir de primeiro de janeiro e serão revistos todos os anos.
  • Em todos os torneios da Liga Maior (League Major) que se realizem em dezembro, os pontos serão transferidos para o ano seguinte como Ano Um.
  • Durante o período de dois anos, os pontos serão deduzidos em 50% após cada ano concluído.
  • Se um atleta obtiver pontos numa divisão de peso e depois estriver pontos noutra divisão de peso num evento diferente, o atleta pertinente ganhará pontos em cada divisão de peso respectiva. Portanto, é possível ter atletas em mais de uma divisão de peso. Em nenhuma cirscunstância os pontos serão combinados.
  • Os pontos do ranking serão atualizados mensalmente e/ou no prazo de 30 dias imediatamente após o torneio.

Teste antidoping

  • Qualquer uso ou administração de drogas ou substâncias químicas descritas na Lista de Substâncias Proibidas da WADA é proibido. O Código Antidpoing da WADA deverá ser aplicado aos eventos do Kombat Taekwondo. As Regras Atidoping do Kombat Taekwondo deverão ser aplicadas aos eventos do Kombat Taekwondo.
  • O Organizador poderá realizar quaisquer testes de doping considerados necessários para determinar se um competidor violou essa regra. Qualquer competidor que se recuse a se submeter a esse teste ou que tenha violado essa regra será removido da classificação final, e o registro será transferido para o competidor seguinte na classificação da competição.

Benefícios de se tornar um clube licenciado do Kombat Taekwondo

  • O Licensed Club permite que os proprietários de clubes/escolas de Taekwondo e seus alunos se afiliem maior organização profissional de Taekwondo Kombat do mundo.
  • Listagem de clubes licenciados em https://www.kombattaekwondo.com.
  • Acesso por atacado aos aparelhos e equipamentos do Kombat Taekwondo.
  • Certificado de licença oficial do Kombat Taekwondo Club.
  • Bandeira oficial grautita do Kombat Taekwondo para o clube.
  • Acesso gratuito ou com desconto às séries e seminários educacionais do Kombat Taekwondo.
  • Acesso ao programa de certificação de faixa preta do Kombat Taekwondo.
  • Acesso VIP a todos os campeonatos de Taekwondo do KOmbat - dois ingressos por evento.
  • Oportunidade de gerente e promotor do Kombat Taekwon do em sua área/região.
  • Os clubes selecionados serão apresentados por meio dos parceiros de mídia do Kombat Taekwondo.
  • Elegível para os Prêmios de Reconhecimento de Clube para Instrutor, Técnico e Competidor.
  • Elegível para sediar acampamentos, seminários, treinamentos e outros eventos educacionais sancionados pelo Kombat Taekwondo.

Exigência de clube e custo de licenciamento

Exigência de clube

  • Deve participar do Seminário de Árbitros de Kombat Taekwondo online para entender as regras e regulamentos.
  • Deve ter um clube de Taekwondo físico dedicado em tempo integral (sem YMCA, academias de ginástica, etc.)
  • Deve ter um site do Taekwondo Club e páginas de mídia social
  • Deve oferecer no mínimo uma aula por semana dedicada ao treinamento Kombat Taekwondo
  • Requisitos para proprietário/instrutor do clube
    • Minimo ter 21 anos de idade
    • Minimo ser 1º Dan de Taekwondo (Faixa Preta)
    • Não ter registro criminal

Taxa de Licença Anual

  • Atual árbitro certificado pelo Kombat Taekwondo ou lutador profissional do Kombat
    • Isenção da taxa anual de licença
  • Academia/Escola de Taekwondo
    • Taxa anual de licença $100,00 (Cem doláres)

Anotações Extra Oficiais

É válida provocação durante a luta.

É válido usar gaiola para desferir golpes, mas não é permitido para evitar quedas ou projeções, será considerado falta, interpretado como fuga de combate.

Avisos e orientações durante a luta são permitidas, mas são consideradas como advertências, sendo avaliado pelo arbitro se necessário existir a penalidade ou não dependendo da gravidade da situação e a repetição das advertências.

Técnicas como tesoura para derrubar o adversário são permitidas, desde que no chão isso seja desvencilhado, caso o contrário, será interrompido e ambos os lutadores deverão retornar de pé e prosseguir com a luta

Futuramente será necessário licenciamento para participar do campeonato.

O licenciamento é válido para dois anos.

Kombat Taekwondo não tem limitações referente a Liga Nacional e a CBTKD atualmente.

O limite de idade não existe na Major League.

A licença da academia não envolve com a licença de arbitragem.

Os valores de inscrição são a cargo da organização do evento.

· Leitura de 11 minutos
Anderson Marlon

Daria Nepriakhina 🇺🇦

De antemão, já informo que esse é um artigo original do Gergely Orozz, e foi traduzido por mim. Como o conteúdo é muito completo, não vi necessidade de fazer adaptação ou alterar qualquer coisa nele, se estiver interessado, é só ler o artigo original em inglês

--

Recentemente, tenho conversado com pequenas e médias empresas, compartilhando as melhores práticas de engenharia que vejo usarmos na Uber, que eu recomendaria que qualquer empresa de tecnologia adotasse à medida que cresce. O único tópico que mais levanta as sobrancelhas e também solta uns momentos "aha!" é sobre como funciona o processo de planejamento da engenharia desde os primeiros anos do Uber.

Ao trabalhar em grandes empresas como a Microsoft ou em empresas menores como o Skyscanner, houve duas coisas relacionadas ao planejamento que sempre me incomodaram. Primeiro, a falta de visibilidade de outros que estão construindo ou tendo construído a mesma coisa que minha equipe. Em segundo lugar, a dívida tecnológica e arquitetónica acumulada devido a diferentes equipas construírem coisas de forma muito diferente, tanto em termos de abordagem como de qualidade.

E se eu dissesse que existe uma maneira de resolver esses dois problemas muito bem, usando algumas etapas simples? Um aviso: uma das etapas parecerá um pouco maluca. Aqui estão eles:

  1. Faça um planejamento antes de construir algo novo. Isso pode ser feito pessoalmente ou apenas conversando com os membros da equipe, desde que você tenha certeza de como fará as coisas.
  • Registre esse plano em um documento curto e escrito. Assim que estiver claro para a equipe como e o que você faz, será relativamente rápido escrever o "como" . Não exagere.
  • Faça com que algumas pessoas selecionadas aprovem este plano antes de começar a trabalhar. Semelhante a como é uma porta de boa qualidade mesclar uma pull request somente depois que alguém fizer uma revisão, faz uma grande diferença se, antes de iniciar o trabalho em um projeto, algumas pessoas relevantes validarem o trabalho planejado. Podem ser engenheiros seniores, pessoas de uma equipe que usarão o recurso e assim por diante.
  • Envie este documento de planejamento para todos engenheiros da empresa e deixe que todos comentem sobre isto. Sim, esta é a etapa que provavelmente parece loucura.
  • Faça com que todos sigam as etapas acima para cada projeto que esteja além de alguma complexidade super trivial e itere em um processo leve, tipo RFC< /span> para que funcione bem para sua organização ou empresa.

Por mais improvável que possa parecer, o processo acima funciona e é muito bem dimensionado, desde um punhado de engenheiros até equipes de milhares. Ele aborda não apenas questões de visibilidade ou redução do débito de tecnologia/arquitetura, mas também de difusão de conhecimento e de maior engajamento dos engenheiros no dia a dia. Este é o processo simples que recomendo a qualquer equipe de tecnologia de pequeno ou médio porte, especialmente se estiver em fase de crescimento. É também o processo que usamos e repetimos com sucesso na Uber, passando de dezenas de engenheiros para alguns milhares.

O poder de escrever coisas

Escrever e compartilhar essa escrita com outras pessoas cria responsabilidade. Também quase sempre leva a decisões mais completas. Uma maneira simples de aumentar a qualidade do código? Faça a revisão do código por escrito, antes de mesclar. Uma maneira simples de fazer com que uma reunião seja menos perda de tempo? Tenha uma agenda escrita antes da reunião e, em seguida, escreva e envie as decisões e ações posteriormente. Uma maneira simples de executar projetos com menos surpresas? Peça à equipe que escreva o que está planejando fazer e compartilhe com outras pessoas.

Nós, engenheiros, odiamos desperdiçadores de tempo. A documentação é frequentemente vista como uma dessas perdas de tempo, principalmente porque é chata de fazer. O planejamento é frequentemente visto como uma espécie de documentação, portanto há uma tendência natural de simplesmente pular esta etapa para obter eficiência. Eu gosto de inverter esse argumento sobre como economizar tempo.

Se todos concordarem como o projeto deve ser feito, escrever a abordagem será muito fácil. Basta capturar o entendimento compartilhado sobre o que é a abordagem, o que mudanças na arquitetura serão feitas, quais são as partes complicadas. Alguém da equipe deve ser capaz de fazer isso em algumas horas, e os outros membros da equipe concordam depois de ler. Normalmente, vejo isso sendo menos direto. "Não foi isso que eu quis dizer quando conversamos." ou "E esse importante caso extremo esquecemos?" e "Se mudarmos isso aqui, isso poderá quebrar essa outra parte do sistema" são coisas que muitas vezes surgem ao escrever o plano. É ótimo ter essas discussões antes de ter as mesmas realizações quando o projeto estiver na metade.

E quando as pessoas não concordam com a forma como o projeto deve ser feito ou quando há muitas mudanças? Isso já parece um projeto que levará muito mais tempo do que as pessoas pensam - pelo menos anotar as coisas deve dar uma imagem mais clara.

Revisores e disseminação de conhecimento em toda a organização

Embora escrever seja uma boa maneira de organizar os pensamentos, é um exercício muito diferente quando escrevemos para outra pessoa entender. É uma boa ideia especificar quem precisa ler este documento e dar um joinha. Depois que o plano for redigido, a maneira mais segura de garantir que as pessoas realmente leiam o documento é exigir que elas confirmem exatamente isso - por escrito, por meio, por exemplo, de um documento. um comentário.

Oi, Yagasaki aqui, só interrompendo rapidinho, a abordagem que optei por utilizar esse método com a Kalify, que é uma organização open source, foi simplesmente criar issues nos scrumboards especificamente para isso, assim, toda a comunidade terá acesso, além de poder comentar, abrir uma pull request diretamente por lá e várias outras interações que só agregam valor ao projeto e quem está dando manutenção e orientando sobre a solução do problema.

A parte de enviar o plano de como esse projeto será construído, para toda a organização de engenharia, via e-mail, é algo que pode parecer loucura. As pessoas muitas vezes se preocupam com a possibilidade de isso criar muito barulho. Isso é verdade e não. Os níveis de ruído certamente aumentarão. Felizmente, os filtros de e-mail são fáceis de criar - basta facilitar a filtragem desses tipos de e-mail. Ao mesmo tempo, há muito menos planos de projetos sendo enviados, mesmo com um tamanho de engenharia na casa das centenas ou milhares, do que as pessoas normalmente esperam.

O tipo de informação enviada às pessoas em uma organização molda consideravelmente a cultura. Ter uma organização com uma cultura para enviar planos de engenharia a todos (por exemplo, por e-mail) e convidar qualquer pessoa que comente estabelece um tom de confiança e responsabilidade. Durante meus primeiros meses na Uber, eu costumava ficar obcecado em ler documentos de planejamento de diversas equipes, citando aqueles em que eu tinha conhecimento de domínio relevante, por exemplo, na tecnologia. Nesses primeiros meses, aprendi muito mais sobre o que outras equipes trabalhavam do que em anos trabalhando em uma grande empresa onde essas informações não eram visíveis. Até hoje, ainda analiso os planos que as equipes fazem, para ter uma noção do que está acontecendo fora da minha pequena bolha.

Por fim, permitir que qualquer pessoa participe é uma parte fundamental para manter um padrão de engenharia consistente em toda a organização. Na Uber, tenho visto vários casos de pessoas de um lado da organização perceberem que outra equipe do outro lado da organização está planejando fazer algo semelhante ao que fizeram, mas com uma abordagem muito diferente. Por exemplo, uma equipe dos EUA que está construindo um novo recurso pode não ter considerado outras partes do mundo e uma equipe na Índia apontando lacunas na sua abordagem de localização. A transparência, o autoequilíbrio e a autocorreção das equipes acontecem com bastante naturalidade.

Adaptando o processo por meio de iteração

Na Uber, um processo descrito aqui tem sido usado desde os primeiros anos. Os detalhes de como esse processo de planejamento e revisão funcionou foram refinados à medida que a empresa crescia e amadurecia. O que começou como um e-mail para cada engenheiro se transformou em listas de e-mail por domínio (backend, mobile, web) e modelos criados por engenheiros para ajudar a transmitir informações de uma forma mais consistente. À medida que a empresa cresce e conta com milhares de engenheiros, mais ferramentas estão sendo construídas para tornar o processo de pesquisa e aprovação ainda mais fácil.

Uma parte interessante da iteração que vi é a evolução dos modelos. As pessoas que analisam muitas propostas de engenharia muitas vezes têm o mesmo tipo de perguntas. Perguntas como "Qual é a motivação para fazer este trabalho?" ou "Como isso será testado?" ou "Serão feitas alterações na arquitetura aqui?" eram perguntas muito comuns. Vendo a repetição deles, os engenheiros criaram modelos que são continuamente atualizados para facilitar a leitura e a escrita desses planos. Para dar um exemplo, foi assim que os modelos de backend e frontend (móvel/web) evoluíram há cerca de um ano, desde quando mudamos para modelos gerados:

Processo interno

  • Lista de aprovadores
  • Resumo (sobre o que é o projeto?)
  • Mudanças de arquitetura
  • SLAs de serviço
  • Dependências de serviço
  • -Carregar e carregar teste de performance
  • Preocupações com vários data centers
  • Considerações de segurança
  • Teste e sair da cama
  • Métricas e monitoramento
  • Considerações sobre suporte ao cliente

Móvel/Web

  • Lista de aprovadores
  • Resumo (sobre o que é o projeto?)
  • IU e interface de usuário Experiência do usuário
  • Mudanças de arquitetura
  • Interações de rede detalhadas
  • Dependências da biblioteca
  • Preocupações com segurança
  • Teste e sair da cama
  • Análise
  • Considerações sobre suporte ao cliente
  • Acessibilidade

Iterar e personalizar de acordo com as necessidades da equipe de engenharia é fundamental. No nosso caso, os modelos começaram a incluir coisas importantes que nos interessavam. Coisas como confiabilidade, escala, segurança. Na Uber, criamos muitos serviços menores, portanto, itens a serem considerados ao fazer isso - como testes de carga e desempenho ou SLAs - fazem parte desse domínio. Quando a acessibilidade se tornou um grande foco para dispositivos móveis, essa seção entrou no modelo. Você entendeu a ideia.

Um processo que escala

Na Uber, chamamos esse processo de RFC - Request for Comments, dadas as muitas semelhanças que ele tem com o processo de publicação de Request For Comments em a comunidade tecnológica. O processo travou porque foi iniciado cedo – quando a equipe de engenharia era pequena – e ajudou a dimensionar o conhecimento e a eliminar silos, à medida que a empresa continuava crescendo rapidamente. Ele cresceu notavelmente bem, de dezenas de engenheiros até poucos milhares. Começando com alguns milhares de engenheiros, novos desafios surgem com esse tipo de processo, o que é um bom problema por si só.

Para evitar que tudo isso seja excessivamente teórico, você pode ver nosso processo de RFC acontecer abertamente, verificando alguns de nossos projetos de código aberto, como BaseUI. BaseUI é um sistema de design da web composto por componentes modernos, responsivos e vivos. Todas as RFCs são publicadas e revisadas aqui e aqui. O desenvolvimento só começa após a aprovação da RFC.

Então esse processo é exclusivo da Uber? Longe disso. Grandes empresas de tecnologia, como Google, Facebook, Microsoft ou Amazon, criaram algo que se assemelha a algum nível de processo RFC. O Google chama isso de documentos de design e aqui está uma boa visão geral de como funciona. Registros de decisões de arquitetura - ADRs - Architecture Decision Record - também são um bom formato para usar.

A escala de quão completa deve ser a documentação, a quem os documentos são enviados, quão rigorosamente ela é revisada ou quão padronizada ela é em diferentes organizações é diferente para todas as empresas. Se você está em uma empresa de tecnologia onde o planejamento ainda é ad hoc, sem uma forma estruturada de registro/distribuição, uma das coisas que ajudará muito a escalar a engenharia é ter um tipo de processo RFC em vigor desde cedo. Experimente e repita como você faz isso. É assim que tudo sempre começa.

--

Eu, como uma pessoa experiente na área, falo que isso é uma das melhores práticas que você pode adotar em sua empresa, seja ela pequena, média ou grande. Acredito que isso é um dos pilares para que você consiga escalar sua empresa de forma saudável, sem quebrar a cultura e a qualidade do produto.

O motivo de tudo isso ser bom, como o Gergely mencionou, é o fato de que mesmo membros sem experiência alguma de codificação e o básico de lógica de programação, conseguem ajudar e auxiliar no desenvolvimento daquela funcionalidade de maneira mais eficaz e direta, abrindo ainda mais o leque de open source, no caso da Kalify, e obtendo mais contribuições e melhorias para o projeto.

· Leitura de 7 minutos
Anderson Marlon

Louis Hansel

Antes de tudo, isso não é realmente uma disputa, analisando o vídeo do Augusto Galego no Twitter sobre o mesmo assunto, estou separando as ideias que de fato, fazem sentido pra mim referente a uma análise de prós e contras.

Ultimamente ando sim, usando muito RestAPI, mais do que já usei GraphQL na vida. Acredito que a única vez em que usei, foi durante minha experiência na Stone para fazer comunicação com bot e tudo mais, então, é um assunto que de fato, eu preciso me aprofundar, ainda mais que quero atingir a plenitude como desenvolvedor fullstack, porém, não é algo que eu sinta firmeza ainda.

Você desenvolvedor, tem todo o direito de questionar meus prós e contras, e tirar dúvidas, se assim for, até por quê eu não sou nenhum especialista em GraphQL e utilizo bem mais o método de RestAPI no dia a dia. Então, vamos lá.

RestAPI (Representational State Transfer API) é uma abordagem arquitetural para criar serviços web, fazer a comunicação entre back-end e front-end para consumir dados. Ele é baseado no protocolo HTTP e utiliza os verbos HTTP (GET, POST, PUT, DELETE) para manipular recursos e representar o estado desses recursos por meio de representações como JSON ou XML.

Pontos Positivos do RestAPI:

Simplicidade: O RestAPI segue princípios simples e bem estabelecidos, como a utilização de URIs (Uniform Resource Identifiers) para identificar recursos e os verbos HTTP para manipular esses recursos. Isso torna a API fácil de entender e implementar.

Suporte Universal: RestAPIs são amplamente suportadas e podem ser acessadas por qualquer cliente que seja capaz de fazer requisições HTTP. Isso significa que a API pode ser consumida por diferentes tipos de aplicativos, como aplicativos web, aplicativos móveis e até mesmo por outros serviços web.

Escalabilidade: RestAPIs são altamente escaláveis, permitindo o crescimento da base de usuários e a expansão dos recursos de forma eficiente. Como o RestAPI é baseado no protocolo HTTP, ele pode ser facilmente distribuído e escalado horizontalmente para atender a um grande número de solicitações concorrentes.

Cache: RestAPIs oferecem suporte a recursos de cache embutidos no protocolo HTTP, como a utilização adequada dos cabeçalhos de cache. Isso permite que as respostas sejam armazenadas em cache em diferentes camadas, melhorando o desempenho e a eficiência da API.

Pontos Negativos do RestAPI:

Overfetching e Underfetching: Em APIs Restful tradicionais, é comum ocorrer overfetching (quando o cliente recebe mais dados do que o necessário) ou underfetching (quando o cliente precisa fazer várias chamadas para obter todos os dados necessários). Isso pode levar a um aumento no tráfego da rede e no tempo de resposta.

Rigidez: APIs Restful podem se tornar rígidas e difíceis de evoluir com o tempo. Isso ocorre porque qualquer mudança nos recursos ou na estrutura da API pode afetar a compatibilidade com versões anteriores e exigir atualizações nos clientes existentes.

Documentação: APIs Restful geralmente exigem uma documentação detalhada para que os clientes possam entender corretamente os recursos disponíveis, os formatos de dados aceitos e como usar corretamente os verbos HTTP. A falta de uma documentação clara e atualizada pode dificultar a adoção e o uso da API. Nesse caso, recomendo o uso do Swagger.

Falta de Padronização: Embora RestAPIs sigam princípios e diretrizes bem estabelecidos, a falta de uma padronização rigorosa pode levar a diferentes implementações e interpretações. Isso pode dificultar a interoperabilidade entre diferentes APIs e exigir esforço adicional para integrar e consumir diferentes serviços.

E o que é o RestFul?

API Rest e API Restful são termos frequentemente usados de forma intercambiável, mas há uma diferença sutil entre eles.

API Rest (ou simplesmente Rest) é uma abordagem arquitetural que define um conjunto de princípios e diretrizes para o design de serviços web. Esses princípios incluem o uso adequado dos verbos HTTP (GET, POST, PUT, DELETE) para manipular recursos, a utilização de URIs (Uniform Resource Identifiers) para identificar recursos e a representação do estado desses recursos por meio de formatos como JSON ou XML.

Por outro lado, API Restful (ou Restful API) refere-se a uma API que adere aos princípios e diretrizes do Rest de forma estrita. Isso significa que uma API Restful segue rigorosamente o protocolo HTTP e todas as suas características, como a utilização correta dos verbos HTTP, o uso de códigos de status adequados e a utilização de URIs significativas e amigáveis.

Em resumo, uma API Restful é uma implementação específica do Rest, seguindo estritamente seus princípios e diretrizes. Enquanto uma API Rest pode aderir aos princípios do Rest, mas não necessariamente de forma estrita.

Em termos práticos, a diferença entre API Rest e API Restful é sutil e muitas vezes negligenciada. Ambos os termos são usados para descrever APIs que seguem o estilo Rest, mas a terminologia "Restful" é frequentemente usada para enfatizar que a API adere rigorosamente aos princípios e diretrizes do Rest.

E quanto ao GraphQL?

GraphQL é uma linguagem de consulta para APIs e um tempo de execução para executar essas consultas com seus dados existentes. É uma alternativa à abordagem tradicional de RESTful APIs, fornecendo uma maneira mais eficiente e flexível de buscar e manipular dados.

Pontos Positivos do GraphQL:

Eficiência: Uma das principais vantagens do GraphQL é que ele permite que o cliente especifique exatamente os dados necessários, evitando assim o problema de overfetching ou underfetching que ocorre com frequência em APIs RESTful. Com GraphQL, o cliente pode buscar apenas os campos necessários para sua aplicação, reduzindo a largura de banda e o tempo de resposta.

Flexibilidade: Com GraphQL, o cliente tem controle total sobre os dados que deseja buscar. Ele pode especificar os campos e relacionamentos necessários em uma única consulta e obter todas as informações em uma única chamada. Isso reduz a necessidade de várias chamadas para diferentes endpoints e simplifica a lógica do cliente.

Evolução de API: GraphQL permite a evolução incremental de uma API sem quebrar a compatibilidade com versões anteriores. Os clientes podem adicionar novos campos às suas consultas sem afetar os aplicativos existentes. Isso proporciona uma experiência de desenvolvimento mais flexível e facilita a adoção de novos recursos.

Ferramentas e Ecossistema: GraphQL possui um ecossistema robusto de ferramentas e bibliotecas de suporte. Existem muitas ferramentas disponíveis para ajudar no desenvolvimento, como o GraphiQL, um IDE interativo que permite explorar e testar consultas GraphQL, além de bibliotecas em várias linguagens de programação que facilitam a integração do GraphQL em aplicativos existentes.

Pontos Negativos do GraphQL:

Curva de Aprendizado: Embora a ideia central do GraphQL seja simples, pode haver uma curva de aprendizado ao entender todos os conceitos e padrões associados. Isso pode ser especialmente verdadeiro para desenvolvedores acostumados com abordagens RESTful tradicionais.

Overfetching em Recursos Existentes: Embora o GraphQL seja eficiente para buscar apenas os campos necessários, pode haver casos em que os recursos existentes não são projetados para serem buscados dessa maneira. Isso pode levar a situações em que o GraphQL ainda busca mais dados do que o necessário, resultando em overfetching.

Complexidade do Servidor: Implementar e gerenciar um servidor GraphQL pode ser mais complexo do que uma API RESTful simples. Isso ocorre porque o servidor GraphQL precisa resolver consultas complexas e gerenciar a lógica de negócios para atender às necessidades específicas dos clientes.

Caching: O GraphQL não possui um mecanismo de cache embutido, o que significa que os desenvolvedores precisam implementar sua própria camada de cache para melhorar o desempenho. Isso pode adicionar complexidade ao desenvolvimento e à manutenção da API.

E qual escolher?

Em última análise, a escolha entre GraphQL e RestAPI depende das necessidades e requisitos do projeto.

Sua equipe é grande e não tem comunicação entre front-end e back-end? Não utiliza cache e não quer sofrer com overfetching? Recomendamos o GraphQL, claro, se os desenvolvedores estiverem habituados com isso.

Se a sua equipe não está habituada, você precisa de uma API simples e fácil de entender, que não vai te dar dor de cabeça que é fácil de implementar e que você não precisa de uma documentação extensa, recomendo o RestAPI. Mas, ainda será necessário ambos os setores da aplicações ter uma comunicação para que não haja overfetching e underfetching.

Claro que isso não é uma obrigação, apenas, uma recomendação. Não leve isso como uma verdade absoluta, pois, cada projeto é um projeto, e cada um tem suas necessidades. Dúvidas? Pode me questionar!

· Leitura de 19 minutos
Anderson Marlon

Leslie Jones

Antes de apresentar meu trabalho de conclusão de curso, que nada mais é do que validar minha parte teórica dentro do Taekwondo, recomendo que você veja (em inglês), toda a minha trajetória no tatame. Sei que isso não tem nada a ver com programação, como eu tenho o costume de publicar aqui, mas deixo registrado.

Prefácio

Neste trabalho de conclusão, exploraremos os diversos fatores e benefícios da prática do Taekwondo. Abordaremos a rica história da modalidade e os valores que permeiam tanto o tatame, por meio da hierarquia, técnicas e desenvolvimento mental, quanto o ambiente externo, destacando a participação em ações comunitárias e o comportamento do praticante diante das situações cotidianas.

Além disso, este trabalho refletirá sobre as experiências pessoais vivenciadas como atleta, proporcionando uma análise profunda das transformações que o cenário do Taekwondo promove nas pessoas e na percepção delas sobre o papel do praticante.

Os seguintes temas também estarão presentes: • Minha Experiência Técnica no Taekwondo • Taekwondo – Uma abordagem científica • Taekwondo – A Filosofia da Arte Marcial • O Taekwondo como Ferramenta Pedagógica no Desenvolvimento Integral dos Indivíduos • O Taekwondo e seu Impacto Filantrópico na Sociedade • A Gestão e Administração no Contexto do Taekwondo • Um roteiro de aula envolvendo aulos de 3 a 5 anos

Este trabalho visa oferecer uma visão abrangente e aprofundada do universo do Taekwondo, abordando aspectos técnicos, filosóficos, pedagógicos, sociais e administrativos associados à prática dessa arte marcial.

Agradecimentos

Primeiramente agradeço a Deus, antes de tudo. Segundamente, agradeço imensamente a cada um de vocês, expressando minha gratidão de forma individual e fixar o quanto vocês foram e são importantes na minha evolução como atleta de Taekwondo: Ao Grão Mestre Sang Min Cho, pelo seu profundo reconhecimento por sua liderança inspiradora, por ter introduzido o Taekwondo no Brasil e sua dedicação e por ter te conhecido pessoalmente.

Ao Grão Mestre Daniel, agradeço pela sabedoria transmitida e pelo exemplo de comprometimento com a arte marcial e com a nossa equipe, cada palavra de sabedoria reflete e molda meu pensamento e meu comportamento dentro e fora do tatame.

Aos Mestres Sérgio Pacheco e Alberto Iha, meus agradecimentos pela orientação e pela maestria demonstrada no ensino do Taekwondo como aprendizados no dia a dia e fortificação do meu ser, do meu conhecimento e da minha motivação durante a minha importante passagem pelo Taekwondo, obrigado por fortificarem meu caráter e por terem me recebido de braços abertos na equipe.

Ao Mestre Márcio Eugênio, por ter me introduzido ao Taekwondo e pela contribuição valiosa ao meu desenvolvimento no esporte, além de compartilhar comigo sua sabedoria e sempre me incentivar a continuar dando o melhor de mim.

Aos Professores Dinelson Braga, Mário Sérgio, David Brito, Maria Eduarda Neves, Matheus Iha, Lucas Camilo, Clara Pagotto e Nicole Caetano, expresso minha gratidão pelas lições aprendidas e pelo apoio contínuo trabalho durante a minha caminhada no Taekwondo.

Agradeço também ao todos os pais e atletas que são e que foram da Campinas Fighters por terem um pedaço significativo na evolução do meu ser dentro e fora do tatame, agradeço por todo o carinho, cuidado, ensino e esforço que tiveram para chegar aonde eu cheguei e por acreditarem em mim.

E ao Michel Oshima, meu reconhecimento por ser uma fonte constante de inspiração no Taekwondo, além de ser uma motivação é um ser que tem um pedaço nessa história por sempre acreditar em mim, no meu potencial e buscar sempre o meu melhor.

Cada um de vocês que desempenharam e ainda desempenham um papel fundamental em minha jornada no Taekwondo, sou grato por compartilhar esse caminho com indivíduos tão notáveis. Obrigado por sua dedicação e por tornarem essa experiência enriquecedora e inesquecível.

Minha Experiência Técnica no Taekwondo

Minha história começou em 2014, aos 17 anos, quando estava em busca de um esporte para praticar. Amigos sugeriram Boxe, Muay Thai, mas quando descobri o Taekwondo não quis saber de outro esporte.

Iniciei minha prática com o Mestre Márcio Eugênio e me formei até o 6º Gub. Após sua partida para Indaiatuba, busquei o Professor Anderson Neneco, chegando ao 4º Gup. Em 2020, encontrei a Campinas Fighters, liderados pelos, atualmente Mestres, Sérgio Pacheco e Alberto Iha, que me acolheram calorosamente com o devido conhecimento de Mestre Márcio Eugênio.

Sobre as minhas graduações Em 2014 graduei do 10º Gub ao 8º Gub – Pelo Mestre Márcio Eugênio Em 2015 fui para 6º Gub – Pelo Mestre Márcio Eugênio Em 2016 fui para o 4º Gub – Pelo Professor Anderson Neneco Em 2022 fui para o 3º Gub – Pela Campinas Fighters Em 2023 fui para o 2º e 1º Gub – Pela Campinas Fighters

Sobre as minhas conquistas

Pela equipe do Márcio Eugênio em 2014 Fui vice campeão pela equipe do Mestre Márcio Eugenio no Campeonato Badboy organizado pela OTC em Campinas

Pela equipe da Campinas Fighters em 2022 Fui Campeão da Copa América pela Campinas Fighters em Arujá, São Paulo Fui Campeão no Festival da Liga do Vale pela Campinas Fighters em São Paulo

Pela equipe da Campinas Fighters em 2023 Fiquei em Terceiro lugar na Primeira Etapa do Campeonato Paulista em Campinas Fui Campeão na Segunda Etapa do Campeonato Paulista em Boituva Fui Vice Campeão na Terceira Etapa do Campeonato Paulista em Piracicaba Fui Vice Campeão na Copa América em Arujá Fui Campeão no São Roque Internacional em São Roque

Taekwondo - Uma Abordagem Científica

Este artigo científico explora o Taekwondo como uma arte marcial, examinando sua história, benefícios para a saúde e seu impacto na mente e no corpo dos praticantes. Além disso, considera as aplicações contemporâneas do Taekwondo, tanto como uma disciplina esportiva quanto como um meio para o desenvolvimento pessoal.

O Taekwondo é uma arte marcial milenar que se originou na Coreia e tem raízes profundas na história e cultura desse país. Traduzido literalmente, "Taekwondo" significa o caminho dos pés e das mãos, indicando sua ênfase na utilização eficiente do corpo como uma unidade conjunta. Embora o Taekwondo seja frequentemente reconhecido por suas técnicas impressionantes de chute, ele abrange muito mais do que isso. Este artigo explora o Taekwondo de uma perspectiva científica, revelando seus benefícios físicos e mentais, bem como seu papel na sociedade contemporânea.

Benefícios para a Saúde

O Taekwondo é uma atividade física completa que oferece uma série de benefícios para a saúde. Em termos de condicionamento físico, ele melhora a resistência cardiovascular, a flexibilidade, a força e o equilíbrio. Os movimentos de chute desenvolvem a agilidade, equilibrio e a coordenação, enquanto a prática constante aprimora a postura e a consciência corporal.

Além dos benefícios físicos, o Taekwondo também promove a saúde mental. A disciplina exigida pela prática regular ajuda a desenvolver a autodisciplina e a concentração. O treinamento enfatiza a importância de controlar a mente e as emoções, o que pode ser aplicado em várias áreas da vida.

Impacto na Mente e no Corpo

O Taekwondo é uma das poucas atividades físicas que podem ter um impacto tão profundo tanto na mente quanto no corpo. Através da prática constante, os praticantes aprendem a superar desafios físicos e mentais. Esse processo de superação é fundamental para o crescimento pessoal e pode aumentar a autoestima e a confiança.

A concentração exigida pelo Taekwondo também é notável. Durante o treinamento e a competição, os praticantes devem estar totalmente presentes, o que pode levar a um estado de foco e imersão profunda, onde o tempo parece desaparecer e a mente está completamente envolvida na atividade, gerando um foco absoluto para quem está praticando, seja as demonstrações de movimento (poomsae) ou seja através da luta.

Aplicações Contemporâneas

Hoje, o Taekwondo é praticado em todo o mundo não apenas como uma arte marcial, mas também como um esporte competitivo. É um esporte olímpico desde 2000, e as competições de Taekwondo atraem atletas de elite de todo o mundo. Além disso, o Taekwondo mantém seu valor como uma ferramenta de desenvolvimento pessoal. Muitas academias ensinam não apenas as técnicas de combate, mas também os princípios éticos e filosóficos subjacentes. Isso permite que os praticantes apliquem os ensinamentos do Taekwondo em suas vidas cotidianas, promovendo uma sociedade mais respeitosa e compassiva.

O Taekwondo é muito mais do que uma simples arte marcial ou esporte. É um caminho para o desenvolvimento físico, mental e espiritual. Suas raízes históricas e filosóficas, combinadas com seus benefícios para a saúde e impacto na mente e no corpo, fazem dele uma disciplina verdadeiramente única. À medida que o Taekwondo continua a se espalhar pelo mundo, é importante lembrar seus valores fundamentais de respeito, disciplina e autoaperfeiçoamento. Como uma ferramenta para o desenvolvimento pessoal e um esporte de alto desempenho, o Taekwondo continua a inspirar pessoas de todas as idades a buscarem um equilíbrio saudável entre mente e corpo, além de buscarem a mentalidade que precisam para superar um desafio e ter mais estabilidade emocional.

Taekwondo - A Filosofia da Arte Marcial

Este artigo filosófico explora o Taekwondo como uma disciplina que vai além das técnicas de combate, mergulhando nas profundezas de sua filosofia. Ele examina os princípios fundamentais do Taekwondo, sua conexão com a filosofia oriental e como esses ensinamentos podem ser aplicados na vida cotidiana.

O Taekwondo, uma das mais antigas artes marciais do mundo, é conhecido por seus impressionantes chutes e técnicas de combate. No entanto, sob sua superfície física encontra-se uma rica filosofia que tem raízes profundas na cultura oriental. Este artigo explora o Taekwondo sob uma luz filosófica, revelando como seus princípios podem servir como um guia para viver uma vida significativa.

Harmonia com o Universo

Um dos princípios fundamentais do Taekwondo é a busca pela harmonia com o universo. Isso reflete a influência da filosofia oriental, especialmente do taoísmo e do budismo, que enfatizam a conexão entre todos os seres vivos e o cosmos. Os praticantes de Taekwondo são ensinados a respeitar a natureza e a buscar equilíbrio em todos os aspectos de suas vidas.

Yin e Yang

O conceito do yin e yang, que descreve a dualidade e a interdependência de forças opostas, desempenha um papel central no Taekwondo. Os praticantes aprendem a reconhecer as polaridades da vida e a encontrar equilíbrio entre elas. Isso se traduz não apenas em suas técnicas de combate, mas também em como eles enfrentam desafios e conflitos na vida cotidiana. O símbolo do Yin e Yang está presente também na bandeira da Coréia do Sul, de forma diferenciada do habitual, como estamos acostumados a ver, como a representatividade do preto e do branco com seus lados dentro de cada, levando em consideração que o bem tem um pouco do mal e o mal também tem um pouco do bem. O azul (parte de baixo), representa a força negativa do universo, isso na representatividade da bandeira, enquanto o vermelho (parte de cima), representa a força positiva.

Respeito e Cortesia

Outro pilar do Taekwondo é o respeito. Os praticantes são ensinados a respeitar seus instrutores, colegas e oponentes. Isso vai além de simples formalidades; é uma expressão do respeito pela humanidade como um todo. A cortesia é valorizada como uma maneira de criar um ambiente harmonioso dentro e fora do dojang (tatame), ou sala de treinamento.

Autoaperfeiçoamento Constante

O Taekwondo também enfatiza o conceito de autoaperfeiçoamento constante. Os praticantes são incentivados a buscar a excelência em tudo o que fazem, não apenas nas artes marciais. Isso inclui o desenvolvimento físico, mental e espiritual. A jornada do Taekwondo nunca termina; é uma busca eterna pela melhoria pessoal.

Aplicação na Vida Cotidiana

A filosofia do Taekwondo não se limita às paredes do dojang. Ela pode ser aplicada na vida cotidiana de várias maneiras. O respeito e a cortesia podem melhorar os relacionamentos interpessoais, enquanto a busca pelo equilíbrio pode ajudar a lidar com o estresse do cotidiano e os desafios que a vida nos apresenta, bem como, os desafios dentro do tatame. O autoaperfeiçoamento constante impulsiona a busca de objetivos pessoais e a autorreflexão, assim como o auto controle te capacita a tomar decisões mais sábias e ser uma pessoa paciente mediante ao cotidiano acelerado.

O Taekwondo é muito mais do que uma simples arte marcial; é uma filosofia de vida. Seus princípios de harmonia, yin e yang, respeito, cortesia e autoaperfeiçoamento constante oferecem orientação para aqueles que buscam uma vida significativa e gratificante. Ao internalizar esses ensinamentos, os praticantes de Taekwondo podem não apenas se tornar mestres das técnicas de combate, mas também mestres de si mesmos e de suas vidas, tomando decisões de forma consciente e visando além do que apenas o bem estar próprio. O Taekwondo é, em última análise, uma jornada em direção à iluminação pessoal e à realização espiritual.

O Taekwondo como Ferramenta Pedagógica no Desenvolvimento Integral dos Indivíduos

O Taekwondo, além de ser uma arte marcial milenar, revela-se uma poderosa ferramenta pedagógica para o desenvolvimento integral dos indivíduos. Ao integrar aspectos físicos, mentais e éticos, o Taekwondo contribui para a formação de alunos não apenas habilidosos em técnicas de combate, mas também cidadãos conscientes e responsáveis.

Desenvolvimento Físico

A prática do Taekwondo promove o desenvolvimento físico por meio de exercícios que trabalham a flexibilidade, força, resistência e coordenação motora. As técnicas precisas exigem controle sobre o corpo, contribuindo para uma postura saudável e para a prevenção de lesões através de aquecimentos e a prática contínua do esporte e correção durante os treinos.

Desenvolvimento Mental

A disciplina mental é uma característica essencial do Taekwondo. A necessidade de memorizar sequências de movimentos, regras e valores éticos fortalece a capacidade cognitiva dos praticantes. Além disso, a prática regular alivia o estresse, promovendo o equilíbrio emocional.

Educação Ética e Moral

Os princípios do Taekwondo são fundamentados em valores éticos e morais, como respeito, cortesia, integridade, perseverança, autocontrole e espírito indomável. Estes são transmitidos pelos mestres e instrutores, guiando os alunos não apenas nas artes marciais, mas na vida cotidiana.

Socialização e Respeito Mútuo

As academias de Taekwondo são comunidades inclusivas que promovem a socialização entre os praticantes. O respeito mútuo é cultivado, independentemente de idade, gênero ou origem. A prática das técnicas em duplas ou em grupo fomenta a cooperação e o trabalho em equipe.

Desenvolvimento da Autoconfiança

O Taekwondo desafia os praticantes a superar obstáculos, estabelecer metas e celebrar conquistas. Essa jornada de autodescoberta contribui significativamente para o desenvolvimento da autoconfiança e da autoestima.

O Taekwondo, como ferramenta pedagógica, transcende a mera instrução de técnicas de combate. Ao enfatizar o desenvolvimento físico, mental e ético, o Taekwondo prepara os alunos para enfrentar desafios, promovendo valores que perduram ao longo da vida. A prática constante dessa arte marcial não apenas aprimora habilidades físicas, mas molda caráteres, construindo cidadãos conscientes e responsáveis.

O Taekwondo e seu Impacto Positivo na Sociedade

O Taekwondo é muito mais do que uma arte marcial; é uma filosofia de vida que busca promover valores essenciais para a construção de uma sociedade mais justa, pacífica e resiliente. Originário da Coreia, o Taekwondo transcende fronteiras, impactando comunidades ao redor do mundo de maneira filantrópica das seguintes maneiras:

Educação e Disciplina

Uma das características fundamentais do Taekwondo é a ênfase na educação e disciplina. Mestres e instrutores desempenham um papel crucial na formação de jovens e crianças, proporcionando-lhes não apenas habilidades físicas, mas também um conjunto de valores que inclui respeito, cortesia, integridade e domínio sobre si.

Inclusão e Igualdade

O Taekwondo é uma prática inclusiva, aberta a todas as idades, gêneros e origens. Por meio da promoção da igualdade, a arte marcial se torna um veículo para que pessoas de diferentes contextos se unam em prol de um objetivo comum: o aprimoramento pessoal e coletivo.

Combate ao Bullying

A filosofia do Taekwondo desencoraja qualquer forma de agressão e incentiva a resolução pacífica de conflitos. Nas academias, a cultura anti-bullying é fortalecida, através do respeito ao próximo, a integridade e a questão de disciplina, proporcionando um ambiente seguro onde os praticantes aprendem a lidar com as diferenças de maneira respeitosa tanto dentro quanto fora do tatame.

Responsabilidade Social

Muitas academias de Taekwondo se envolvem ativamente em iniciativas filantrópicas, seja por meio de campanhas beneficentes, projetos sociais ou aulas gratuitas para comunidades carentes, além de contar com uma ação comunitária para divulgação do esporte e apoio aos praticantes. Essas ações demonstram o compromisso da comunidade de Taekwondo em contribuir positivamente para a sociedade.

Desenvolvimento Sustentável

Além dos benefícios sociais, o Taekwondo promove a saúde física e mental. A prática regular não apenas melhora a condição física, mas também reduz o estresse e aumenta a concentração, contribuindo para um estilo de vida saudável e equilibrado.

O Taekwondo é uma ferramenta poderosa para promover valores fundamentais e criar mudanças positivas na sociedade. À medida que mais pessoas se envolvem nessa arte marcial, a filantropia se torna uma extensão natural de seus princípios. O compromisso com a educação, inclusão, combate ao bullying, responsabilidade social e desenvolvimento sustentável faz do Taekwondo não apenas uma prática esportiva, mas uma força transformadora para o bem.

Gestão e Administração no Contexto do Taekwondo

A administração desempenha um papel vital no sucesso e na eficácia de qualquer organização, incluindo as academias de Taekwondo. Este trabalho explora os aspectos administrativos que contribuem para o funcionamento eficiente e sustentável de academias de Taekwondo, considerando desde a organização interna até estratégias para promover o esporte.

Organização Interna

A estrutura organizacional de uma academia de Taekwondo é crucial para o seu desempenho. Abordando a hierarquia dentro da academia, as responsabilidades dos instrutores e a importância da comunicação eficaz para manter a coesão. Dentro do tatame temos os auxiliares (Faixa vermelha e vermelha ponta preta) e os professores (Faixas Pretas) que são responsáveis pela administração dentro do tatame, assim como coordenação da aula e suporte aos menos graduados.

Gestão de Recursos

A administração eficaz de recursos, como espaço físico, equipamentos e materiais, é essencial para o funcionamento diário da academia, assim como banheiros e bebedouros ou acesso a água.

O recomendável é que se tenha um espaço com tatames ou uma área lisa e macia que evite lesões por conta das atividades de corrida, pulo, quedas e chutes realizados durante os treinamentos.

Assim como equipamentos como raquete, aparador ou saco de areia para ser realizados os treinos de luta e técnicas de chute e movimentação.

Planejamento de Aulas e Programas

A elaboração de planos de aulas eficientes e a implementação de programas de treinamento são fundamentais. Usando métodos de desenvolvimento de currículos que atendam às necessidades dos praticantes, incentivando a retenção, realização do objetivo daquela aula, seja para aperfeiçoamento de Poomsae, melhoria em algum aspecto em específico do Kyorugui ou até mesmo engajamento ou melhoria motora e do aspecto físico e a resistência de cada integrante.

Marketing e Captação de Alunos

Estratégias de marketing são vitais para atrair novos praticantes. Explorando métodos para promover a academia, atrair alunos e reter membros, destacando a importância do marketing digital e parcerias locais como academias, empresas de água, comércios locais, bancas e outros variantes.

Buscar optar por realizar as aulas em lugar público como praças e bosques, incentivará outros membros a participar do projeto, visando demonstrações de movimento e execuções de chutes que atraiam novos integrantes para a prática.

A gestão eficaz desempenha um papel crucial no sucesso contínuo das academias de Taekwondo. Ao abordar aspectos internos, otimização de recursos, planejamento curricular, eventos, e marketing, é possível criar um ambiente propício ao crescimento e à promoção do esporte.

O setor administrativo e os membros que nele fazem parte, buscam inspirar uma abordagem proativa para fortalecer e expandir a presença e a divulgação do Taekwondo em comunidades locais e além.

Roteiro de Aula de Taekwondo para Crianças de 3 a 5 Anos

Objetivo da Aula: Introdução rápida e interativa ao Taekwondo, focando no desenvolvimento motor, equilíbrio e noções básicas de respeito e disciplina.

Duração da Aula: Aproximadamente 45-90 minutos

Aquecimento (10 minutos): Atividades de Aquecimento: Iniciando com uma breve corrida em volta do tatame durante alguns minutos, e depois, usar a prática de jogos simples, como "Pega-pega de faixa", para elevar a temperatura corporal e preparar os músculos.

Exercícios Básicos (15 minutos): Posições Fundamentais: Demonstrações de posições básicas e a postura que deve se ter durante uma luta. Chutes Simples: Introdução a chutes suaves, como o "Chute Baixo", para desenvolver coordenação e equilíbrio. Utilizando também da raquete e do aparador para fazer filas de chute.

Técnicas Divertidas (15 minutos): Pulo de Bamboles: Com bamboles sobre o chão ou até mesmo usando das diferentes cores do tatame, introduzimos o aluno a correr em cores separadas e intercalando, auxiliando na coordenação motora e velocidade.

Também podemos usar os jogos com cores: Utilização de peças do tatame coloridos para associar cores a diferentes movimentos. Ou até mesmo pular sobre objetos: Tendo o foco de pensamentos e tomadas de decisões com mais agilidade e interatividade.

História e Filosofia (5 minutos): História do Taekwondo: Breve narrativa sobre a origem do Taekwondo adaptada para a compreensão infantil. Valores do Taekwondo: Enfatizando valores como respeito, disciplina e amizade.

Relaxamento e Encerramento (5 minutos): Relaxamento: As crianças alongam assim que encerram a aula para relaxar o músculo e evitar lesões.

Cumprimento Final: As crianças se despedem com um cumprimento, reforçando a importância do respeito ao término da aula e ao professor que acabou de dar a aula, além de citar os valores do Taekwondo como Cortesia, Integridade, Perserverança, Dominío Sobre Si, Espírito Indomável e as promessas como Respeitar os Intrutores e Superiores, Nunca Fazer Mal Uso do Taekwondo, Ser Campeão da Liberdade e da Justiça e Construir Mundo Mais Pacífico.

Observações: Usamos da linguagem simples, incentivando a participação ativa através de brincadeiras, mantendo a atmosfera lúdica para manter o interesse das crianças. Este roteiro pode ser adaptado conforme a dinâmica do grupo e a disponibilidade de materiais.

· Leitura de 5 minutos
Anderson Marlon

James Harrison

A programação é uma habilidade valiosa e altamente procurada nos dias de hoje. Se você está interessado em ingressar nesse emocionante mundo da tecnologia, é natural se perguntar por onde começar. Este artigo explora as diferentes trilhas da programação, especificamente front-end, back-end e desenvolvimento mobile, destacando as vantagens e desvantagens de cada uma. Além disso, discutiremos a decisão entre se tornar um especialista ou generalista em programação.

Primeiros Passos na Programação

Antes de escolher um caminho específico, é fundamental aprender os conceitos básicos da programação. Isso envolve compreender a lógica de programação, aprender uma ou mais linguagens de programação, entender estruturas de dados e algoritmos. Felizmente, existem muitos recursos online, cursos e tutoriais disponíveis para ajudar você a dar os primeiros passos. Inclusive existe o roadmap para seguir um passo a passo mais funcional de uma determinada área em específico.

Front-End: O Que o Usuário Vê

O que é Front-End?

O desenvolvimento front-end envolve a criação da interface com a qual os usuários interagem diretamente. Isso inclui tudo, desde o layout de um site até a forma como os botões funcionam. As tecnologias front-end mais comuns incluem HTML, CSS e JavaScript.

Vantagens do Front-End:

  • Visibilidade Imediata: Trabalhar no front-end permite que você veja instantaneamente o resultado do seu trabalho, pois lida com o que os usuários veem.
  • Criatividade: É uma ótima escolha para pessoas com habilidades criativas, pois envolve design e experiência do usuário.

Desvantagens do Front-End:

  • Rápida Evolução: As tecnologias front-end mudam rapidamente, exigindo constante aprendizado.
  • Limitação de Complexidade: Em projetos complexos, o front-end pode ter suas limitações em termos de processamento e armazenamento de dados.

Back-End: O Cérebro Por Trás das Operações

O que é Back-End?

O desenvolvimento back-end está relacionado ao funcionamento dos bastidores de um site ou aplicativo. Isso inclui servidores, bancos de dados e a lógica que permite que um sistema funcione.

Vantagens do Back-End:

  • Demanda Constante: Back-end é necessário para qualquer aplicativo ou site, tornando os desenvolvedores back-end altamente procurados.
  • Lógica Complexa: É uma escolha excelente para quem gosta de resolver problemas complexos e lógicos.

Desvantagens do Back-End:

  • Menos Visível: O trabalho no back-end é menos visível para os usuários finais, o que pode ser menos gratificante para alguns.
  • Requer Conhecimento Técnico Avançado: Requer uma compreensão profunda de servidores, segurança e bancos de dados.

Desenvolvimento Mobile: Mundos na Palma da Mão

O que é Desenvolvimento Mobile?

O desenvolvimento mobile envolve a criação de aplicativos para dispositivos móveis, como smartphones e tablets. Você pode escolher entre desenvolvimento iOS (Apple) ou Android (Google).

Vantagens do Desenvolvimento Mobile:

  • Ampla Demanda: Com o aumento constante no uso de dispositivos móveis, a demanda por desenvolvedores mobile é alta.
  • Acessibilidade: Seus aplicativos podem chegar a uma ampla audiência, tornando-o acessível a muitas pessoas.

Desvantagens do Desenvolvimento Mobile:

  • Plataformas Diferentes: Se você deseja criar aplicativos para ambas as principais plataformas, iOS e Android, precisa aprender duas linguagens de programação diferentes.
  • Atenção aos Detalhes: Pequenos erros podem levar a problemas significativos em aplicativos móveis, tornando-o um campo que exige atenção minuciosa.

Especialização Vs. Generalização

A decisão de se tornar um especialista em uma área específica ou um generalista que abrange várias áreas é importante. A especialização envolve aprofundar seus conhecimentos em um campo específico, tornando-se um especialista. Por exemplo, você pode se tornar um especialista em segurança cibernética, inteligência artificial ou desenvolvimento front-end.

Por outro lado, a generalização significa que você tem conhecimentos básicos em várias áreas e pode trabalhar em várias partes de um projeto. Isso pode ser benéfico em equipes menores ou ao iniciar sua própria empresa.

Eu falei sobre isso anteriormente em Front-end, Back-end, Fullstack, o que é e para onde ir? e particularmente prefiro que escolha ser especialista ao invés de generalista, isso te deixa mais destacado naquele seguimento do que qualquer outra pessoa genérica que sabe apenas o básico.

Conclusão

A escolha de aprender programação é um passo importante para entrar no mundo da tecnologia. Comece pelos conceitos básicos e, em seguida, explore as diferentes trilhas, como front-end, back-end e desenvolvimento mobile. Considere suas preferências pessoais, metas de carreira e demanda do mercado ao tomar sua decisão. E lembre-se, a programação é uma habilidade em constante evolução, então esteja preparado para aprender continuamente, independentemente do caminho que escolher.

Se ainda estiver com dúvidas sobre o que foi esclarecido aqui, você pode ver esse artigo - Front-end, Back-end, Fullstack, o que é e para onde ir? - novamente citando ele - que eu criei, usando analogias para explicar qual é a função de cada área. E bom, qualquer dúvida estou no Twitter/X, caso queira me procurar e tirar as devidas dúvidas.

Estamos também no [Whatsapp][https://chat.whatsapp.com/KOgletvhYCvFIpuo9SNgGJ] com o nosso grupo de Baby Developers, para as pessoas que almejam se tornar programadores de qualidade e querem uma dica, um auxílio e um guia, não só meu, mas de uma enorme comunidade para ir seguindo o caminho das pedras e evoluindo com mais facilidade.