[{"content":"Bom, esse vai ser um guia prático, rápido e sem enrolação. Você vai precisar de um pendrive de, pelo menos, 16GB; Tenha noção que o pendrive será formatado e você perderá todos os arquivos dele.\n1. Baixe a imagem oficial do windows 11 do site oficial da Microsoft: Download windows 11 (role a página até a seção \u0026ldquo;Baixar imagem de disco (ISO) do Windows 11 para dispositivos x64\u0026rdquo; \u0026gt; Baixar agora \u0026gt; selecionar idioma \u0026gt; confirmar \u0026gt; 64-bits baixar)\n2. Baixe o Rufus O rufus é uma ferramenta que ajuda a formatar e criar drives USB inicializáveis, como chaves/drives USB, cartões de memória e etc.\nBaixar rufus Após baixar o rufus, execute o .exe que você baixou;\n3. Criar o pendrive bootável Selecione essas opções na janela do Rufus, apontando para o seu pendrive: (Cuidado para não selecionar a partição errada! Pois ela será formatada!)\nclique em \u0026ldquo;Iniciar\u0026rdquo; e aguarde o processo terminar.\nE\u0026hellip; pronto! Você já tem um pendrive bootável e pode estar o usando para formatar seu pc! Esse post o foco é criar o pendrive.\nEu abordo de forma completa o processo de formatação aqui\n","permalink":"https://maggioni.dev/posts/windows/bootable-pendrive-windows/","summary":"Criando pendrive bootável para instalação limpa do windows","title":"Como criar um pendrive bootável para instalar o windows?"},{"content":"Hugo - Guia Completo para Criar e Gerenciar seu Blog Nesse post, iremos abordar os seguintes temas:\nO que é Hugo e por que usá-lo Instalação Criando seu primeiro site Estrutura de pastas Instalando e configurando temas Criando e organizando conteúdo Comandos essenciais Personalizando o tema Deploy e publicação O que é Hugo e por que usá-lo? Hugo é um gerador de sites estáticos escrito em Go. Ele pega seus arquivos Markdown e transforma em um site HTML completo em milissegundos - sem banco de dados, sem servidor PHP, sem complexidade.\nVantagens:\n⚡ Extremamente rápido (builds em milissegundos) 🔒 Mais seguro (sem backend vulnerável) 💸 Hospedagem gratuita ou barata (Netlify, Vercel, Github Pages) ✍️ Escreva posts em Markdown simples 🎨 Centenas de temas prontos 💡 Sites como o blog da Cloudflare e documentações de grandes projetos open source usam Hugo.\nInstalação Linux (Debian/Ubuntu) sudo apt install hugo Para a versão mais recente (recomendado):\nsudo snap install hugo macOS brew install hugo Windows Pelo Chocolatey:\nchoco install hugo-extended Pelo Winget:\nwinget install Hugo.Hugo.Extended ⚠️ Prefira sempre a versão extended - ela suporta SCSS/SASS, necessário para a maioria dos temas modernos.\nVerificando a instalação hugo version Criando seu primeiro site hugo new site meu-blog cd meu-blog Isso cria a estrutura base do projeto. Em seguida, inicie um repositório Git:\ngit init Estrutura de pastas meu-blog/ ├── archetypes/ # Templates padrão para novos conteúdos ├── assets/ # Arquivos processados (SCSS, JS) ├── content/ # Seus posts e páginas em Markdown ├── data/ # Arquivos de dados (JSON, YAML, TOML) ├── i18n/ # Traduções ├── layouts/ # Templates HTML customizados ├── public/ # Site gerado (não versionar) ├── resources/ # Cache de assets processados ├── static/ # Arquivos estáticos (imagens, fontes, CSS) ├── themes/ # Temas instalados └── hugo.toml # Configuração principal do site Pasta O que você vai mexer content/ Sempre - seus posts ficam aqui static/ Para adicionar imagens e arquivos layouts/ Para customizar o tema hugo.toml Para configurar o site themes/ Para instalar/atualizar temas Instalando e configurando temas Onde encontrar temas themes.gohugo.io - catálogo oficial com centenas de opções Instalando via Git Submodule (recomendado) git submodule add https://github.com/autor/nome-do-tema.git themes/nome-do-tema Ativar o tema no hugo.toml:\ntheme = \u0026#34;nome-do-tema\u0026#34; Atualizando o tema git submodule update --remote --merge Instalando via clone simples (sem submodule) git clone https://github.com/autor/nome-do-tema.git themes/nome-do-tema ⚠️ Com clone simples você não consegue atualizar facilmente. Prefira o submodule.\nExemplo com o tema PaperMod (muito popular) git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod hugo.toml:\nbaseURL = \u0026#34;https://seusite.com/\u0026#34; languageCode = \u0026#34;pt-br\u0026#34; title = \u0026#34;Meu Blog\u0026#34; theme = \u0026#34;PaperMod\u0026#34; Configuração principal - hugo.toml O arquivo hugo.toml controla tudo do seu site. Exemplo completo:\nbaseURL = \u0026#34;https://seusite.com/\u0026#34; languageCode = \u0026#34;pt-br\u0026#34; title = \u0026#34;Meu Blog\u0026#34; theme = \u0026#34;PaperMod\u0026#34; paginate = 10 enableRobotsTXT = true enableEmoji = true [params] author = \u0026#34;Seu Nome\u0026#34; description = \u0026#34;Um blog sobre tecnologia e desenvolvimento\u0026#34; ShowReadingTime = true ShowShareButtons = true ShowPostNavLinks = true ShowBreadCrumbs = true ShowCodeCopyButtons = true ShowToc = true [params.homeInfoParams] Title = \u0026#34;Olá! 👋\u0026#34; Content = \u0026#34;Bem-vindo ao meu blog sobre tecnologia\u0026#34; [[params.socialIcons]] name = \u0026#34;github\u0026#34; url = \u0026#34;https://github.com/seu-usuario\u0026#34; [[params.socialIcons]] name = \u0026#34;linkedin\u0026#34; url = \u0026#34;https://linkedin.com/in/seu-usuario\u0026#34; [menu] [[menu.main]] name = \u0026#34;Posts\u0026#34; url = \u0026#34;/posts/\u0026#34; weight = 1 [[menu.main]] name = \u0026#34;Sobre\u0026#34; url = \u0026#34;/about/\u0026#34; weight = 2 [[menu.main]] name = \u0026#34;Tags\u0026#34; url = \u0026#34;/tags/\u0026#34; weight = 3 Criando e organizando conteúdo Criando um novo post hugo new content posts/meu-primeiro-post.md O arquivo será criado em content/posts/ com o front matter padrão:\n+++ title = \u0026#39;Meu Primeiro Post\u0026#39; date = \u0026#39;2026-04-16T00:00:00-03:00\u0026#39; draft = true +++ Campos do front matter +++ title = \u0026#34;Título do Post\u0026#34; description = \u0026#34;Descrição curta para SEO\u0026#34; summary = \u0026#34;Resumo exibido na listagem\u0026#34; author = \u0026#34;Seu Nome\u0026#34; date = \u0026#39;2026-04-16T00:00:00-03:00\u0026#39; lastmod = \u0026#39;2026-04-16T00:00:00-03:00\u0026#39; # Data de última modificação draft = true # true = não publica tags = [\u0026#34;hugo\u0026#34;, \u0026#34;blog\u0026#34;] categories = [\u0026#34;desenvolvimento\u0026#34;] keywords = [\u0026#34;hugo\u0026#34;, \u0026#34;blog\u0026#34;, \u0026#34;tutorial\u0026#34;] cover: image = \u0026#34;posts/meu-post/capa.jpg\u0026#34; # Imagem de capa alt = \u0026#34;Descrição da imagem\u0026#34; showToc = true # Índice no post TocOpen = false # Índice aberto por padrão +++ Organizando com pastas (Page Bundles) Para posts com imagens, use a estrutura de bundle:\ncontent/ └── posts/ └── meu-post/ ├── index.md ← conteúdo do post ├── capa.jpg ← imagem de capa └── diagrama.png ← outras imagens Assim você referencia as imagens diretamente no Markdown:\n![Diagrama](diagrama.png) Criando uma página estática hugo new content about.md +++ title = \u0026#34;Sobre\u0026#34; layout = \u0026#34;page\u0026#34; +++ Olá, sou desenvolvedor e gosto de escrever sobre tecnologia... Rascunhos Posts com draft = true não são publicados. Para visualizá-los localmente:\nhugo server -D Quando estiver pronto para publicar, mude para:\ndraft = false Comandos essenciais Servidor local hugo server # Inicia o servidor em localhost:1313 hugo server -D # Inclui rascunhos (drafts) hugo server -p 8080 # Porta customizada hugo server --bind 0.0.0.0 # Acessível na rede local O servidor tem live reload - qualquer alteração no conteúdo ou tema atualiza o navegador automaticamente.\nBuild do site hugo # Gera o site na pasta /public hugo --minify # Minifica HTML, CSS e JS hugo -e production # Usa configuração de produção Gerenciamento de conteúdo # Criar novo post hugo new content posts/titulo-do-post.md # Criar nova página hugo new content sobre.md # Listar todo o conteúdo hugo list all # Listar apenas drafts hugo list drafts # Listar posts futuros (publishDate no futuro) hugo list future Módulos e temas # Atualizar submódulos (temas via git submodule) git submodule update --remote --merge # Ver versão do Hugo hugo version # Verificar configuração hugo config # Limpar cache hugo --gc Personalizando o tema Hugo segue uma hierarquia de templates: seu layout sobrescreve o do tema. Você nunca precisa editar os arquivos dentro de themes/ diretamente.\nSobrescrevendo um template Copie o arquivo do tema para a pasta layouts/ do seu projeto:\n# Exemplo: sobrescrever o template de post único cp themes/PaperMod/layouts/_default/single.html layouts/_default/single.html Agora edite layouts/_default/single.html à vontade. O tema original não é alterado.\nEstrutura de layouts layouts/ ├── _default/ │ ├── baseof.html # Template base (wrapping) │ ├── list.html # Página de listagem │ └── single.html # Página de post único ├── partials/ │ ├── header.html # Cabeçalho │ └── footer.html # Rodapé ├── index.html # Página inicial └── 404.html # Página de erro Adicionando CSS customizado Crie o arquivo assets/css/extended/custom.css (no PaperMod e temas similares):\n/* Exemplo: mudar a fonte do corpo */ body { font-family: \u0026#39;Inter\u0026#39;, sans-serif; } /* Mudar cor de destaque */ a { color: #ff6b6b; } Ou adicione no static/css/custom.css e referencie no hugo.toml:\n[params] customCSS = [\u0026#34;css/custom.css\u0026#34;] Adicionando JS customizado [params] customJS = [\u0026#34;js/custom.js\u0026#34;] Shortcodes customizados Shortcodes são componentes reutilizáveis dentro dos posts. Crie em layouts/shortcodes/:\nlayouts/shortcodes/aviso.html:\n\u0026lt;div class=\u0026#34;aviso aviso-{{ .Get \u0026#34;tipo\u0026#34; | default \u0026#34;info\u0026#34; }}\u0026#34;\u0026gt; {{ .Inner | markdownify }} \u0026lt;/div\u0026gt; Uso no Markdown:\n{{\u0026lt; aviso tipo=\u0026#34;atenção\u0026#34; \u0026gt;}} Isso é muito importante! {{\u0026lt; /aviso \u0026gt;}} Variáveis úteis nos templates {{ .Title }} \u0026lt;!-- Título do post --\u0026gt; {{ .Date }} \u0026lt;!-- Data --\u0026gt; {{ .Params.author }} \u0026lt;!-- Campo customizado do front matter --\u0026gt; {{ .Content }} \u0026lt;!-- Conteúdo completo do post --\u0026gt; {{ .Summary }} \u0026lt;!-- Resumo --\u0026gt; {{ .ReadingTime }} \u0026lt;!-- Tempo de leitura estimado --\u0026gt; {{ .WordCount }} \u0026lt;!-- Contagem de palavras --\u0026gt; {{ .Permalink }} \u0026lt;!-- URL completa --\u0026gt; {{ .Site.Title }} \u0026lt;!-- Título do site --\u0026gt; Imagens e assets Adicionando imagens estáticas Coloque em static/images/ e referencie assim:\n![Descrição](/images/foto.jpg) Processamento de imagens (Hugo Pipes) Hugo pode redimensionar imagens automaticamente:\n{{ $img := resources.Get \u0026#34;images/foto.jpg\u0026#34; }} {{ $resized := $img.Resize \u0026#34;800x\u0026#34; }} \u0026lt;img src=\u0026#34;{{ $resized.RelPermalink }}\u0026#34; alt=\u0026#34;Foto\u0026#34;\u0026gt; Deploy e publicação Github Pages 1. Crie um repositório no Github chamado seu-usuario.github.io\n2. Adicione o remote e envie:\ngit remote add origin git@github.com:seu-usuario/seu-usuario.github.io.git git push -u origin main 3. Crie o arquivo .github/workflows/hugo.yml:\nname: Deploy Hugo on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - name: Setup Hugo uses: peaceiris/actions-hugo@v3 with: hugo-version: \u0026#39;latest\u0026#39; extended: true - name: Build run: hugo --minify - name: Deploy uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./public 4. No Github, vá em Settings → Pages e selecione a branch gh-pages.\nNetlify (mais simples) 1. Conecte seu repositório Github no netlify.com\n2. Configure o build:\nCampo Valor Build command hugo --minify Publish directory public 3. Adicione a variável de ambiente:\nHUGO_VERSION = 0.145.0 Pronto - a cada git push, o Netlify faz o deploy automaticamente.\nVercel Conecte o repositório no vercel.com e selecione o framework Hugo. O Vercel detecta automaticamente as configurações necessárias.\nResumo dos comandos do dia a dia # Novo post hugo new content posts/meu-post.md # Visualizar com rascunhos hugo server -D # Gerar site para produção hugo --minify # Atualizar tema git submodule update --remote --merge # Ver configuração ativa hugo config Com isso você tem tudo que precisa para criar, personalizar e publicar um blog profissional com Hugo. É uma das ferramentas mais simples e poderosas para quem quer ter um blog sem complexidade de backend. ✍️🚀\n","permalink":"https://maggioni.dev/posts/create-a-blog-with-hugo/","summary":"Aprenda a instalar o Hugo, criar seu blog, instalar temas, personalizar e publicar do zero","title":"Tudo que você precisa saber sobre Hugo - Crie e gerencie seu blog"},{"content":"Git e Github — Guia Prático para Iniciantes Nesse post, iremos abordar os seguintes temas:\nComo conectar via SSH no Github Como enviar um repositório local para o remoto Comandos úteis Workflow com Git e Github O que é Git e por que usar? Git é um sistema de controle de versão distribuído criado por Linus Torvalds em 2005. Ele permite que você rastreie as alterações no seu código ao longo do tempo, volte para versões anteriores e colabore com outras pessoas sem sobrescrever o trabalho umas das outras.\nGithub é uma plataforma online que hospeda repositórios Git, facilitando a colaboração, o backup e o compartilhamento de projetos.\n💡 Pense no Git como uma \u0026ldquo;máquina do tempo\u0026rdquo; para o seu código, e no Github como a \u0026ldquo;nuvem\u0026rdquo; onde você guarda essas versões.\nInstalação Linux (Debian/Ubuntu) sudo apt update \u0026amp;\u0026amp; sudo apt install git -y macOS brew install git Windows Baixe o instalador em git-scm.com.\nApós instalar, pode fazer toda a configuração pelo terminal do git bash, comece configurando seu nome e e-mail:\ngit config --global user.name \u0026#34;Seu Nome\u0026#34; git config --global user.email \u0026#34;seu@email.com\u0026#34; Como conectar via SSH no Github A autenticação via SSH é mais segura e prática do que usar usuário e senha. Com ela, você não precisa digitar credenciais a cada push.\n1. Gerar a chave SSH ssh-keygen -t ed25519 -C \u0026#34;seu@email.com\u0026#34; Pressione Enter para aceitar o caminho padrão (~/.ssh/id_ed25519). Opcionalmente, defina uma senha para a chave.\n2. Adicionar a chave ao ssh-agent eval \u0026#34;$(ssh-agent -s)\u0026#34; ssh-add ~/.ssh/id_ed25519 3. Copiar a chave pública cat ~/.ssh/id_ed25519.pub Copie o conteúdo exibido no terminal.\n4. Adicionar a chave no Github Acesse Github → Settings → SSH and GPG keys Clique em New SSH key Cole a chave pública e salve 5. Testar a conexão ssh -T git@github.com Se tudo estiver correto, você verá:\nHi seu-usuario! You\u0026#39;ve successfully authenticated, but GitHub does not provide shell access. Como enviar um repositório local para o remoto Partindo do zero (novo projeto) # 1. Crie a pasta e entre nela mkdir meu-projeto \u0026amp;\u0026amp; cd meu-projeto # 2. Inicie o repositório Git git init # 3. Crie um arquivo inicial echo \u0026#34;# Meu Projeto\u0026#34; \u0026gt; README.md # 4. Adicione os arquivos ao stage git add . # 5. Faça o primeiro commit git commit -m \u0026#34;feat: primeiro commit\u0026#34; # 6. Renomeie a branch principal (boa prática) git branch -M main # 7. Conecte ao repositório remoto (crie o repo no Github antes) git remote add origin git@github.com:seu-usuario/meu-projeto.git # 8. Envie para o Github git push -u origin main ⚠️ Lembre-se de criar o repositório vazio no Github antes do passo 7. Não marque a opção de adicionar README para evitar conflitos.\nClonando um repositório existente git clone git@github.com:usuario/repositorio.git cd repositorio Comandos Úteis Informação e status Comando O que faz git status Mostra o estado atual dos arquivos git log Exibe o histórico de commits git log --oneline Histórico resumido em uma linha por commit git diff Mostra as diferenças ainda não staged git diff --staged Mostra as diferenças já no stage Stage e commits git add arquivo.txt # Adiciona um arquivo específico git add . # Adiciona todos os arquivos modificados git commit -m \u0026#34;mensagem\u0026#34; # Cria um commit git commit --amend # Edita o último commit (mensagem ou arquivos) Branches git branch # Lista as branches locais git branch minha-feature # Cria uma nova branch git checkout minha-feature # Muda para a branch git checkout -b minha-feature # Cria e já muda para a branch git switch -c minha-feature # Alternativa moderna ao checkout -b git merge minha-feature # Faz merge da branch na atual git branch -d minha-feature # Deleta a branch local Remoto git push origin main # Envia commits para o remoto git pull # Baixa e integra mudanças do remoto git fetch # Baixa mudanças sem integrar git remote -v # Lista os remotos configurados Desfazendo mudanças git restore arquivo.txt # Descarta mudanças não staged git restore --staged arquivo.txt # Remove do stage sem perder mudanças git revert HEAD # Cria um commit que desfaz o último git reset --soft HEAD~1 # Desfaz o último commit, mantém stage git reset --hard HEAD~1 # ⚠️ Desfaz tudo — use com cuidado! Stash (guardar mudanças temporariamente) git stash # Salva mudanças temporariamente git stash pop # Recupera a última mudança salva git stash list # Lista todos os stashes git stash drop # Remove o stash mais recente Workflow com Git e Github Um bom workflow evita conflitos e mantém o histórico organizado. O mais comum para times é o Feature Branch Workflow:\nPasso a passo main ──────────────────────────────────●───────── / feature/login ──●──●──●──────────────● 1. Sempre parta da main atualizada\ngit checkout main git pull 2. Crie uma branch para sua feature ou correção\ngit checkout -b feature/nome-da-feature 3. Desenvolva e faça commits pequenos e descritivos\ngit add . git commit -m \u0026#34;feat: adiciona tela de login\u0026#34; 4. Envie sua branch para o remoto\ngit push origin feature/nome-da-feature 5. Abra um Pull Request no Github\nNo Github, clique em \u0026ldquo;Compare \u0026amp; pull request\u0026rdquo;, descreva as mudanças e solicite revisão.\n6. Após aprovação, faça o merge e delete a branch\ngit checkout main git merge feature/nome-da-feature git branch -d feature/nome-da-feature git push origin --delete feature/nome-da-feature Boas práticas para mensagens de commit Use o padrão Conventional Commits:\nfeat: adiciona funcionalidade de login fix: corrige bug no formulário de cadastro docs: atualiza README com instruções de instalação style: formata código sem alterar lógica refactor: reorganiza estrutura de pastas test: adiciona testes para o módulo de auth chore: atualiza dependências Resumo rápido # Fluxo básico do dia a dia git pull # Atualiza o repositório local git checkout -b minha-feature # Cria e entra na branch # ... faz as alterações ... git add . # Stage das mudanças git commit -m \u0026#34;feat: minha feature\u0026#34; # Commit git push origin minha-feature # Envia para o Github # Abre Pull Request no Github Com esses conceitos e comandos você já consegue trabalhar de forma profissional com Git e Github no dia a dia. Bons commits! 🚀\n","permalink":"https://maggioni.dev/posts/commands-for-git-and-github/","summary":"Aprenda os comandos necessários de git e github","title":"Tudo oque você precisa saber sobre Git e Github"}]