{
  "version": "https://jsonfeed.org/version/1",
  "title": "Meus 10 Centavos",
  "home_page_url": "https://meus10centavos.vercel.app/",
  "feed_url": "https://meus10centavos.vercel.app//index.json",
  "description": "Meus 10 centavos de contribuição para uma discussão que ninguém pediu minha opinião",
  "items": [
    {
      "id": "https://meus10centavos.vercel.app//cv-aplicada.html",
      "url": "https://meus10centavos.vercel.app//cv-aplicada.html",
      "title": "Computer Vision: notas técnicas de um pipeline completa",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h2><a href=\"#computer-vision-para-avaliação-de-feridas-notas-técnicas-de-um-pipeline-end-to-end\" aria-hidden=\"true\" class=\"anchor\" id=\"computer-vision-para-avaliação-de-feridas-notas-técnicas-de-um-pipeline-end-to-end\"></a><strong>Computer Vision para avaliação de feridas: notas técnicas de um pipeline end-to-end</strong></h2>\n<p>Este post documenta o que aprendi ao implementar um sistema de inferência CV para segmentação, classificação e mensuração métrica de feridas crônicas. O foco é arquitetura, algoritmos e decisões de engenharia.</p>\n<p>Este post resume o que estudei, aprendi, e apliquei ao longo desse caminho.</p>\n<hr />\n<h2><a href=\"#o-problema-de-pixels-a-centímetros\" aria-hidden=\"true\" class=\"anchor\" id=\"o-problema-de-pixels-a-centímetros\"></a><strong>O problema: de pixels a centímetros</strong></h2>\n<p>Avaliar feridas crônicas envolve duas tarefas distintas de visão computacional:</p>\n<ol>\n<li><strong>Segmentação</strong> — encontrar exatamente onde está a lesão na imagem.</li>\n<li><strong>Classificação</strong> — inferir sinais clínicos (infecção, exsudato, etc.).</li>\n</ol>\n<p>Mas há um terceiro desafio, que só aparece quando você coloca o sistema no mundo real: <strong>como converter pixels em centímetros?</strong> Sem escala espacial, uma máscara bonita ainda não responde à pergunta que importa: <em>qual é a área da ferida?</em></p>\n<p>Esse detalhe mudou completamente minha forma de pensar sobre CV.</p>\n<h2><a href=\"#1-arquitetura-do-sistema\" aria-hidden=\"true\" class=\"anchor\" id=\"1-arquitetura-do-sistema\"></a><strong>1. Arquitetura do sistema</strong></h2>\n<p>O pipeline é distribuído em três camadas:</p>\n<table>\n<thead>\n<tr>\n<th><strong>Camada</strong></th>\n<th><strong>Stack</strong></th>\n<th><strong>Responsabilidade</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Mobile</td>\n<td>React Native / Expo</td>\n<td>Captura, upload via presigned URL S3</td>\n</tr>\n<tr>\n<td>Backend</td>\n<td>NestJS + MongoDB</td>\n<td>Auth JWT, metadados clínicos, orquestração</td>\n</tr>\n<tr>\n<td>CV Service</td>\n<td>FastAPI + PyTorch/OpenCV</td>\n<td>Inferência, pós-processamento, geometria, calibração</td>\n</tr>\n</tbody>\n</table>\n<p>O serviço CV expõe <code>POST /infer</code> (JSON <code>{ image_url }</code> ou multipart <code>file</code>), autenticado via header <code>x-api-key</code>, com cache Redis (<code>SHA-256</code> do payload) e rate limiting (60 req/min).</p>\n<p>Além dos algoritmos, aprendi a estruturar um serviço de inferência de produção:</p>\n<ul>\n<li><strong>FastAPI</strong> como microserviço de CV, separado do backend NestJS.</li>\n<li><strong>Orquestrador</strong> que coordena segmentação, classificação, calibração e medição.</li>\n<li><strong>Modo debug</strong> que salva artefatos intermediários (01–09 + meta.json) para inspecionar cada etapa.</li>\n<li><strong>Erros tipados</strong> com mensagens técnicas e amigáveis para o frontend.</li>\n<li><strong>Cache Redis</strong> e rate limiting para uso em produção.</li>\n<li><strong>Testes unitários</strong> para detecção ArUco, geometria, pós-processamento e validação.</li>\n</ul>\n<p>A lição: em CV aplicada, <strong>observabilidade</strong> importa tanto quanto acurácia. Sem debug visual, você debugga no escuro.</p>\n<p>Dois modelos rodam em produção:</p>\n<ul>\n<li><strong>Segmentação</strong>: U-Net + EfficientNet-B3 → <strong>TorchScript</strong> (<code>torch.jit.trace</code>)</li>\n<li><strong>Classificação</strong>: EfficientNet-B3 (<code>timm</code>) → <strong>ONNX opset 17</strong> com batch dinâmico</li>\n</ul>\n<hr />\n<h2><a href=\"#2-treinamento\" aria-hidden=\"true\" class=\"anchor\" id=\"2-treinamento\"></a><strong>2. Treinamento</strong></h2>\n<h3><a href=\"#21-segmentação\" aria-hidden=\"true\" class=\"anchor\" id=\"21-segmentação\"></a><strong>2.1 Segmentação</strong></h3>\n<p>Para segmentação, usei uma U-Net com encoder EfficientNet-B3, pré-treinado no ImageNet, via segmentation_models_pytorch. A escolha faz sentido: EfficientNet oferece um bom equilíbrio entre capacidade e eficiência, e a U-Net é o padrão de ouro para máscaras semânticas.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">smp.Unet(\n\nencoder_name=&quot;efficientnet-b3&quot;,\n\nencoder_weights=&quot;imagenet&quot;,\n\nin_channels=3,\n\nclasses=1,\n\n)\n</code></pre>\n<table>\n<thead>\n<tr>\n<th><strong>Hiperparâmetro</strong></th>\n<th><strong>Valor</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Loss</td>\n<td><code>DiceLoss(mode=&quot;binary&quot;)</code></td>\n</tr>\n<tr>\n<td>Optimizer</td>\n<td>AdamW, lr = 1e-3</td>\n</tr>\n<tr>\n<td>Batch size</td>\n<td>4</td>\n</tr>\n<tr>\n<td>Image size</td>\n<td>512×512</td>\n</tr>\n<tr>\n<td>Early stopping</td>\n<td>patience = 5 (maximize val Dice)</td>\n</tr>\n<tr>\n<td>Mixed precision</td>\n<td>AMP (<code>GradScaler</code>)</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Augmentações</strong> (<code>albumentations</code>):</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">A.Resize(512, 512)\n\nA.HorizontalFlip(p=0.5)\n\nA.VerticalFlip(p=0.2)\n\nA.RandomRotate90(p=0.5)\n\nA.ShiftScaleRotate(shift_limit=0.05, scale_limit=0.1, rotate_limit=20, p=0.5)\n\nA.ColorJitter(p=0.3)\n\nA.Normalize()\n</code></pre>\n<h3><a href=\"#o-que-aprendi-no-treinamento\" aria-hidden=\"true\" class=\"anchor\" id=\"o-que-aprendi-no-treinamento\"></a><strong>O que aprendi no treinamento</strong></h3>\n<ul>\n<li><strong>Dice Loss</strong> funciona melhor que BCE pura para classes desbalanceadas, feridas geralmente ocupam uma fração pequena da imagem.</li>\n<li><strong>Mixed precision (AMP)</strong> reduz uso de memória e acelera o treino sem perda perceptível de qualidade.</li>\n<li><strong>Augmentações</strong> (flip, rotação, color jitter, shift/scale) são essenciais, mas insuficientes se o dataset não refletir condições reais de captura.</li>\n<li>Métricas como <strong>IoU e Dice</strong> no validation set são úteis, mas não garantem nada em fotos mobile com flash, sombra ou compressão JPEG agressiva.</li>\n</ul>\n<p>Exportei o modelo para <strong>TorchScript</strong>, o que me ensinou que o caminho treino → produção tem requisitos próprios: normalização idêntica, tamanho de entrada fixo e cuidado com operadores suportados na exportação.</p>\n<h3><a href=\"#22-classificação\" aria-hidden=\"true\" class=\"anchor\" id=\"22-classificação\"></a><strong>2.2 Classificação</strong></h3>\n<p>EfficientNet-B3 via <code>timm</code>, <code>BCEWithLogitsLoss</code>, lr = 3e-4, batch = 8, image size = 384. Métrica: F1.</p>\n<h3><a href=\"#23-export\" aria-hidden=\"true\" class=\"anchor\" id=\"23-export\"></a><strong>2.3 Export</strong></h3>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\"># TorchScript (seg)\n\nscripted = torch.jit.trace(model, dummy_input)  *# dummy: (1, 3, 512, 512)*\n\n# ONNX (cls)\n\ntorch.onnx.export(..., opset_version=17, dynamic_axes={&quot;input&quot;: {0: &quot;batch&quot;}})\n</code></pre>\n<p><strong>Constraint crítico</strong>: a normalização e o resize da inferência devem ser idênticos ao treino. Qualquer divergência degrada a distribuição de logits da U-Net e desloca o threshold ótimo de binarização.</p>\n<hr />\n<h2><a href=\"#3-pipeline-de-inferência-orquestrador\" aria-hidden=\"true\" class=\"anchor\" id=\"3-pipeline-de-inferência-orquestrador\"></a><strong>3. Pipeline de inferência (orquestrador)</strong></h2>\n<p>Fluxo completo em <code>run_inference_pipeline()</code>:</p>\n<p>original (HxW) → cap MAX_WORKING_DIMENSION=1536 (INTER_AREA) → preprocess_mobile_rgb (CLAHE + brightness norm + unsharp) → letterbox 512×512 (scale = 512/max(h,w), pad simétrico) → tensor (C,H,W) normalizado → U-Net → prob map (512×512) → unletterbox → working resolution → postprocess_wound_mask (threshold sweep + morfologia + CC) → extract_wound_geometry (PCA + minAreaRect + Feret) → overlay PNG base64</p>\n<p>A mesma informação de forma mais bonita:</p>\n<img src=\"/media/diagrama.png\" alt=\"Diagrama de fluxo da análise de feridas\" width=\"1000\" height=\"1000\">\n<h3><a href=\"#31-letterbox--unletterbox\" aria-hidden=\"true\" class=\"anchor\" id=\"31-letterbox--unletterbox\"></a><strong>3.1 Letterbox / Unletterbox</strong></h3>\n<p>Dado <code>target_size = 512</code>:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">scale = target_size / max(h, w)\n\ncontent_w = round(w * scale)\n\ncontent_h = round(h * scale)\n\npad_left = (512 - content_w) // 2\n\npad_top  = (512 - content_h) // 2\n</code></pre>\n<p>A máscara inferida é recortada da região <code>[pad_top:pad_top+content_h, pad_left:pad_left+content_w]</code> e redimensionada para <code>(working_h, working_w)</code> com <code>INTER_NEAREST</code> (preserva binarização).</p>\n<p><strong>Por que importa</strong>: resize direto para 512×512 distorce aspect ratio e altera a geometria da ferida. Letterbox mantém proporções; o custo é propagar <code>LetterboxMeta</code> (scale, pad_left, pad_top) em todo o pipeline.</p>\n<h3><a href=\"#32-pré-processamento-mobile\" aria-hidden=\"true\" class=\"anchor\" id=\"32-pré-processamento-mobile\"></a><strong>3.2 Pré-processamento mobile</strong></h3>\n<p>Aplicado no espaço <strong>LAB</strong> (preserva crominância):</p>\n<ol>\n<li><strong>CLAHE</strong> no canal L: <code>clipLimit=2.0</code>, <code>tileGridSize=(8,8)</code></li>\n<li><strong>Normalização de brilho</strong>: se <code>mean(gray) &lt; 90</code> ou <code>&gt; 200</code>, escala por <code>α = clip(128/mean, 0.85, 1.15)</code></li>\n<li><strong>Unsharp mask</strong>: <code>out = 1.25·img - 0.25·GaussianBlur(img, σ=1.0)</code></li>\n</ol>\n<p>Ativado via <code>MOBILE_IMAGE_PREPROCESS=true</code>. Não altera geometria — apenas distribuição de intensidade.</p>\n<hr />\n<h2><a href=\"#4-pós-processamento-de-máscara\" aria-hidden=\"true\" class=\"anchor\" id=\"4-pós-processamento-de-máscara\"></a><strong>4. Pós-processamento de máscara</strong></h2>\n<p>Entrada: mapa probabilístico <code>P ∈ [0,1]^{H×W}</code>. Saída: máscara binária + contorno + <code>geometry_confidence</code>.</p>\n<p>Em vez de um threshold fixo, implementei um <strong>sweep automático</strong> (0.35, 0.40, 0.45, 0.50, 0.55) que escolhe o valor que gera componentes utilizáveis. Depois:</p>\n<ul>\n<li>Morfologia leve para fechar buracos sem fragmentar a região.</li>\n<li>Análise de <strong>componentes conectados</strong> com filtros de plausibilidade (área, aspect ratio, compactness, solidity).</li>\n<li>Fallback para regiões pequenas mas clinicamente plausíveis quando nenhum componente “estrito” passa nos critérios.</li>\n</ul>\n<h3><a href=\"#41-threshold-sweep\" aria-hidden=\"true\" class=\"anchor\" id=\"41-threshold-sweep\"></a><strong>4.1 Threshold sweep</strong></h3>\n<p><code>sweep = [0.35, 0.40, 0.45, 0.50, 0.55]  # default produção</code></p>\n<p><code>binary_t = (GaussianBlur(P, k=3) &gt; t).astype(uint8)</code></p>\n<p>Para cada <code>t</code>, computa score baseado em componentes conectados utilizáveis. Seleciona o threshold com melhor score.</p>\n<p><strong>Observação empírica</strong>: threshold 0.65 (comum em papers) produz máscaras vazias em fotos mobile com logits calibrados para distribuição diferente do val set. Default de produção: <strong>0.40</strong>.</p>\n<h3><a href=\"#42-morfologia\" aria-hidden=\"true\" class=\"anchor\" id=\"42-morfologia\"></a><strong>4.2 Morfologia</strong></h3>\n<p>open:  kernel 3×3, 1 iteração  (remove ruído pontual)</p>\n<p>close: kernel 5×5, 1 iteração (fecha buracos internos)</p>\n<p>Parâmetros tunáveis via env (<code>MASK_OPEN_KERNEL</code>, <code>MASK_CLOSE_KERNEL</code>).</p>\n<h3><a href=\"#43-seleção-de-componentes-conectados\" aria-hidden=\"true\" class=\"anchor\" id=\"43-seleção-de-componentes-conectados\"></a><strong>4.3 Seleção de componentes conectados</strong></h3>\n<p><code>cv2.connectedComponentsWithStats</code> → filtros em cascata:</p>\n<table>\n<thead>\n<tr>\n<th><strong>Filtro</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Função</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>max_area_fraction</code></td>\n<td>0.50</td>\n<td>Rejeita blob &gt; 50% da imagem</td>\n</tr>\n<tr>\n<td><code>max_aspect_ratio</code></td>\n<td>10.0</td>\n<td>Rejeita estruturas filamentares</td>\n</tr>\n<tr>\n<td><code>min_compactness</code></td>\n<td>0.04</td>\n<td><code>4π·A / P²</code> — rejeita formas irregulares demais</td>\n</tr>\n<tr>\n<td><code>min_solidity</code></td>\n<td>0.15</td>\n<td><code>A / A_convex_hull</code></td>\n</tr>\n<tr>\n<td><code>min_area_fraction</code></td>\n<td>0.0002</td>\n<td>Área mínima relativa</td>\n</tr>\n<tr>\n<td><code>min_dimension_px</code></td>\n<td>12</td>\n<td>Dimensão mínima do bbox</td>\n</tr>\n</tbody>\n</table>\n<p>Seleção em <strong>3 níveis</strong>:</p>\n<ol>\n<li><strong>Strict</strong> — passa todos os filtros</li>\n<li><strong>Relaxed</strong> — filtros parcialmente relaxados</li>\n<li><strong>Plausible fallback</strong> — se única candidata razoável, aceita região pequena (<code>MASK_ALLOW_PLAUSIBLE_FALLBACK=true</code>)</li>\n</ol>\n<p>Isso evita o cenário clássico: modelo acerta parcialmente a ferida, mas CC analysis descarta o único componente válido.</p>\n<h3><a href=\"#44-validação-pré-geometria\" aria-hidden=\"true\" class=\"anchor\" id=\"44-validação-pré-geometria\"></a><strong>4.4 Validação pré-geometria</strong></h3>\n<p>Antes de extrair contorno, <code>validate_wound_presence()</code> verifica se <code>prob_max</code> e <code>area_fraction@0.5</code> excedem limites mínimos. Falha → <code>WoundNotDetectedError</code> com <code>prob_max</code> no payload técnico.</p>\n<p>Aprendi que pós-processamento é metade do produto em segmentação médica. O modelo diz onde provavelmente está a ferida; o pipeline decide o que mostrar ao clínico.</p>\n<hr />\n<h3><a href=\"#5-clahe\" aria-hidden=\"true\" class=\"anchor\" id=\"5-clahe\"></a><strong>5 CLAHE</strong></h3>\n<p>O <strong>Contrast Limited Adaptive Histogram Equalization</strong> melhora contraste local em fotos com sombras ou pele escura/clara desigual. É processamento clássico de CV, mas faz diferença real antes da inferência neural.</p>\n<hr />\n<h2><a href=\"#6-análise-de-coloração-tecidual\" aria-hidden=\"true\" class=\"anchor\" id=\"6-análise-de-coloração-tecidual\"></a>6. Análise de coloração tecidual</h2>\n<p>Esta foi uma das partes mais interessantes do projeto: traduzir cor percebida em percentuais clínicos sem treinar um classificador de cor separado.</p>\n<h3><a href=\"#61-fundamentação-clínica\" aria-hidden=\"true\" class=\"anchor\" id=\"61-fundamentação-clínica\"></a>6.1 Fundamentação clínica</h3>\n<p>Na prática de curativos, a coloração do leito da ferida orienta conduta. O sistema mapeia pixels para seis categorias inspiradas na escala RYB (Red-Yellow-Black), estendida com roxo e branco:</p>\n<table>\n<thead>\n<tr>\n<th>Classe</th>\n<th>Interpretação clínica (heurística)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Vermelho</td>\n<td>Granulação — tecido de cicatrização</td>\n</tr>\n<tr>\n<td>Amarelo</td>\n<td>Esfacelo — possível necessidade de desbridamento</td>\n</tr>\n<tr>\n<td>Preto</td>\n<td>Necrose/eschar — desbridamento</td>\n</tr>\n<tr>\n<td>Roxo</td>\n<td>Hematoma/equimose perilesional</td>\n</tr>\n<tr>\n<td>Branco</td>\n<td>Tecido pálido/isquêmico, biofilme</td>\n</tr>\n<tr>\n<td>Outros</td>\n<td>Pixels que não se encaixam nas regras</td>\n</tr>\n</tbody>\n</table>\n<p>A API retorna isso via WoundColorAnalysis (Pydantic), com valores em percentual (0–100) arredondados a 2 casas:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">class WoundColorAnalysis(BaseModel):\n  vermelho: float   # granulação\n  amarelo: float    # esfacelo/infecção\n  preto: float      # necrose\n  roxo: float       # hematoma\n  branco: float     # isquêmico/biofilme\n  outros: float\n\n</code></pre>\n<p>No mobile, os percentuais alimentam a tela de nova ferida, o <code>TissueColorPieChart</code> e a seção de evolução temporal (<code>WoundEvolutionSection</code>), permitindo comparar coloração entre capturas do mesmo paciente.</p>\n<h3><a href=\"#62-pipeline-de-roi-para-coloração\" aria-hidden=\"true\" class=\"anchor\" id=\"62-pipeline-de-roi-para-coloração\"></a>6.2 Pipeline de ROI para coloração</h3>\n<p>Função: <code>analyze_wound_colors(image_rgb, mask_prob)</code>.</p>\n<p>Passo 1 — Alinhamento e binarização permissiva</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">mask_aligned = align_mask_to_image(image, mask, &quot;analyze_wound_colors&quot;)\nbinary = (mask_aligned &gt; 0.20).astype(uint8)  # threshold baixo: incluir bordas difusas\n</code></pre>\n<p>A análise só é chamada após <code>validate_wound_presence()</code>, então o threshold de 0.20 (vs 0.40 da geometria) é intencional: captura toda a região provável de ferimento, incluindo halos de baixa confiança na borda.</p>\n<p>Passo 2 — Limpeza morfológica</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">MORPH_CLOSE(kernel 3×3, 1 iter)\nMORPH_OPEN(kernel 3×3, 1 iter)\n→ largest connected component\n</code></pre>\n<p>Passo 3 — Máscara de borda</p>\n<p>Remove 1% das margens da imagem para evitar contaminação por pele circundante ou artefatos de borda:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">margin_h = max(1, int(h * 0.01))\nmargin_w = max(1, int(w * 0.01))\nedge_mask[0:margin_h, :] = 0\nedge_mask[h-margin_h:, :] = 0\n# idem para colunas\nbinary = binary * edge_mask\n</code></pre>\n<p>Passo 4 — Fallback</p>\n<p>Se <code>wound_pixels == 0</code> após filtros, reutiliza <code>mask &gt; 0.15</code> sem máscara de borda, evita retorno zerado em feridas pequenas ou próximas à borda do frame.</p>\n<h3><a href=\"#63-classificação-pixel-a-pixel-hsv--rgb\" aria-hidden=\"true\" class=\"anchor\" id=\"63-classificação-pixel-a-pixel-hsv--rgb\"></a>6.3 Classificação pixel a pixel (HSV + RGB)</h3>\n<p>Conversão para HSV OpenCV:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">image_hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV)\n# H ∈ [0, 179], S ∈ [0, 255], V ∈ [0, 255]\n# Normalização: h/179, s/255, v/255\n</code></pre>\n<p>Para cada pixel <code>(r,g,b)</code> e <code>(h,s,v)</code> dentro da ROI:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">intensity = (r + g + b) / 3\nmax_rgb   = max(r, g, b)\nmin_rgb   = min(r, g, b)\n</code></pre>\n<p>Ordem de decisão (first-match wins — evita ambiguidade):</p>\n<p><code>Preto → Branco → Roxo → Vermelho → Amarelo → Outros</code></p>\n<p>Preto (necrose)</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">if v &lt; 0.12 or (intensity &lt; 0.15 and max_rgb &lt; 0.2):\n    → preto\nelif v &lt; 0.18 and intensity &lt; 0.20 and s &lt; 0.25:\n    → preto\n\n</code></pre>\n<p>Prioridade máxima: sombras profundas e tecido necrótico têm valor HSV baixo.</p>\n<p>Branco (isquêmico / biofilme)</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">elif s &lt; 0.12 and v &gt; 0.65:\n    → branco\nelif s &lt; 0.18 and v &gt; 0.75 and max_rgb &gt; 0.7:\n    → branco\nelif s &lt; 0.20 and v &gt; 0.70 and |r-g| &lt; 0.1 and |g-b| &lt; 0.1:\n    → branco  # tons acinzentados claros\n</code></pre>\n<p>Baixa saturação + alto valor = tecido pálido ou esbranquiçado.</p>\n<p>Roxo (hematoma)\nRegras HSV e RGB combinadas:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">elif 0.68 &lt;= h &lt;= 0.92 and s &gt; 0.25 and v &gt; 0.2:\n    → roxo\nelif r &gt; 0.35 and b &gt; 0.35 and g &lt; 0.35 and s &gt; 0.18:\n    → roxo  # R e B dominantes, G suprimido\n</code></pre>\n<p>Vermelho (granulação)</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">elif (h &lt; 0.04 or h &gt; 0.96) and s &gt; 0.35 and v &gt; 0.25:\n    → vermelho  # matiz no extremo do círculo H (vermelho puro)\nelif r &gt; 0.55 and r &gt; g*1.25 and r &gt; b*1.25 and s &gt; 0.25:\n    → vermelho  # dominância de R no RGB\nelif r &gt; 0.50 and r &gt; g*1.2 and s &gt; 0.30 and 0.2 &lt; v &lt; 0.5:\n    → vermelho  # granulação mais escura\n</code></pre>\n<p>Amarelo (esfacelo)</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">elif 0.12 &lt;= h &lt;= 0.28 and s &gt; 0.35 and v &gt; 0.3:\n    → amarelo\nelif r &gt; 0.45 and g &gt; 0.45 and b &lt; 0.35 and s &gt; 0.25:\n    → amarelo  # R+G altos, B baixo\nelif 0.28 &lt;= h &lt;= 0.40 and s &gt; 0.30 and g &gt; r and g &gt; b:\n    → amarelo  # amarelo-esverdeado (infecção)\nelif 0.10 &lt;= h &lt;= 0.25 and s &gt; 0.25 and 0.25 &lt; v &lt; 0.55:\n    → amarelo  # esfacelo âmbar/escuro\n</code></pre>\n<p>Outros\nPixels que não satisfazem nenhuma regra acima.</p>\n<h3><a href=\"#64-agregação\" aria-hidden=\"true\" class=\"anchor\" id=\"64-agregação\"></a>6.4 Agregação</h3>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">total = len(wound_region)  # pixels na ROI filtrada\ncolor_percentages = {\n  'vermelho': (red_count   / total) * 100.0,\n  'amarelo':  (yellow_count / total) * 100.0,\n  'preto':    (black_count  / total) * 100.0,\n  'roxo':     (purple_count / total) * 100.0,\n  'branco':   (white_count  / total) * 100.0,\n  'outros':   (other_count  / total) * 100.0,\n}\n# Σ ≈ 100%\n</code></pre>\n<h3><a href=\"#65-limitações-e-aprendizados-técnicos\" aria-hidden=\"true\" class=\"anchor\" id=\"65-limitações-e-aprendizados-técnicos\"></a>6.5 Limitações e aprendizados técnicos</h3>\n<p>Iluminação domina crominância. Flash direto, sombra e pele circundante alteram <code>(h,s,v)</code> de forma não linear. O código detecta alta variação (<code>std(RGB) &gt; 40</code>) e loga aviso, mas ainda não aplica correção adaptativa de thresholds — ponto de melhoria.</p>\n<p>Segmentação ≠ coloração. Um pixel classificado como vermelho pode ser pele saudável se a máscara vazou. A máscara de borda (1%) e o largest CC mitigam, mas não eliminam o problema.</p>\n<p>Rule-based vs ML. Escolhi regras explícitas porque:</p>\n<ul>\n<li>Interpretabilidade clínica (cada threshold é auditável)</li>\n<li>Zero dependência de dataset rotulado por cor</li>\n<li>Latência desprezível (~O(n) por pixel na ROI)</li>\n</ul>\n<p>O custo: sensibilidade a white balance da câmera e calibração de cor do dispositivo. Um classificador treinado em LAB normalizado ou um modelo multi-classe por patch seria o próximo passo natural.</p>\n<p>Dual color space é necessário. HSV isola matiz (útil para vermelho/amarelo/roxo), mas falha em tons acromáticos (preto/branco) — daí as regras RGB complementares com dominância de canal.</p>\n<p>Threshold de máscara diferente da geometria. Geometria usa binarização conservadora (0.40 + CC strict); coloração usa 0.20 permissivo. Aprendi que otimizar uma única máscara para ambos os fins é subótimo.</p>\n<h2><a href=\"#7-calibração-espacial\" aria-hidden=\"true\" class=\"anchor\" id=\"7-calibração-espacial\"></a><strong>7. Calibração espacial</strong></h2>\n<p>Sem <code>pixels_per_cm</code>, área em px² não tem unidade clínica. Implementei duas fontes:</p>\n<h3><a href=\"#71-aruco-default\" aria-hidden=\"true\" class=\"anchor\" id=\"71-aruco-default\"></a><strong>7.1 ArUco (default)</strong></h3>\n<p>Dictionary: DICT_4X4_50</p>\n<p>Marker ID:  0 (estrito)</p>\n<p>Size:       2.0 cm (lado físico)</p>\n<p>Pipeline de detecção:</p>\n<ol>\n<li>Grayscale + CLAHE</li>\n<li><code>cv2.aruco.ArucoDetector</code> (compatível com API legada <code>detectMarkers</code>)</li>\n<li>Filtra <code>marker_id == 0</code>; se múltiplos, seleciona o de maior perímetro</li>\n<li>Ordena cantos: TL → TR → BR → BL</li>\n<li><code>pixels_per_cm = mean(side_lengths_px) / marker_size_cm</code></li>\n</ol>\n<p><strong>Correção de perspectiva</strong> (opcional, <code>ARUCO_APPLY_PERSPECTIVE_CORRECTION=true</code>):</p>\n<p><code>src = corners[4×2]  (quadrilátero detectado)</code></p>\n<p><code>side = max(edge)  (lado em px)</code></p>\n<p><code>dst = [[0,0], [side,0], [side,side], [0,side]]</code></p>\n<p><code>H = cv2.getPerspectiveTransform(src, dst)</code></p>\n<p><code>rectified = cv2.warpPerspective(image, H, (side, side))</code></p>\n<p><code>mask' = cv2.warpPerspective(mask, H, ..., INTER_NEAREST)</code></p>\n<p>Homografia planar assume superfície do marcador (e da ferida) aproximadamente coplanar.\nViolação → erro sistemático em área.</p>\n<p>Erros tipados:</p>\n<ul>\n<li><code>marker_not_detected</code></li>\n<li><code>invalid_marker</code> (ID errado)</li>\n<li><code>calibration_failed</code> (marcador muito pequeno, &lt; ~24 px de lado)</li>\n</ul>\n<p><strong>Retry inteligente</strong>: se ArUco falha na imagem inteira, re-detecta usando preview binário da máscara como ROI hint.</p>\n<h3><a href=\"#72-régua-clínica-alternativa\" aria-hidden=\"true\" class=\"anchor\" id=\"72-régua-clínica-alternativa\"></a><strong>7.2 Régua clínica (alternativa)</strong></h3>\n<p>Como alternativa, implementei detecção de régua clínica com CV clássica:</p>\n<ol>\n<li>CLAHE → Canny → contornos</li>\n<li>Filtra contornos com <code>aspect_ratio &gt; 4.0</code> (corpo alongado)</li>\n<li><code>minAreaRect</code> → eixo principal</li>\n<li>Extrai strip 1D ao longo do eixo (60% da largura)</li>\n<li>Perfil de gradiente → detecção de picos periódicos (marcações cm)</li>\n<li><code>pixels_per_cm = median(Δx_entre_picos) / RULER_CM_PER_MAJOR_TICK</code></li>\n</ol>\n<p>Foi fascinante ver que não precisa de deep learning para tudo. Análise de sinais 1D sobre contornos resolve um problema real com interpretabilidade e baixo custo computacional.</p>\n<p>Confiança: CV do espaçamento entre picos + número de ticks + aspect ratio.</p>\n<h3><a href=\"#73-fallback\" aria-hidden=\"true\" class=\"anchor\" id=\"73-fallback\"></a><strong>7.3 Fallback</strong></h3>\n<p>Se <code>ALLOW_ASSUMED_FOV_FALLBACK=true</code> e calibração falha, usa <code>default_assumed_calibration(image_side_px)</code> — escala heurística baseada no FOV. <strong>Não é escala clínica</strong>; flag <code>calibration.is_clinical_scale()</code> distingue.</p>\n<p>Aprendi que ArUco é elegante na teoria e exigente na prática: o marcador precisa estar visível, plano, bem iluminado e com tamanho mínimo em pixels. Por isso o sistema retorna erros específicos (marker_not_detected, invalid_marker, calibration_failed) em vez de falhar silenciosamente.</p>\n<hr />\n<h2><a href=\"#8-extração-geométrica\" aria-hidden=\"true\" class=\"anchor\" id=\"8-extração-geométrica\"></a><strong>8. Extração geométrica</strong></h2>\n<p>Com a máscara binária e a calibração, extraio métricas clínicas:</p>\n<ul>\n<li><strong>Área</strong> e <strong>perímetro</strong> a partir do contorno real.</li>\n<li><strong>Comprimento × largura</strong> via PCA sobre os pontos do contorno, mais robusto que <code>boundingRect</code> para formas irregulares.</li>\n<li>Referência cruzada com <code>minAreaRect</code> e <strong>Feret diameter</strong> no convex hull.</li>\n<li>Dimensão final como <strong>mediana robusta</strong> entre PCA e retângulo rotacionado.</li>\n</ul>\n<p>Entrada: contorno <code>C = {(x_i, y_i)}</code>, calibração <code>{pixel_to_cm, confidence}</code>.</p>\n<h3><a href=\"#81-métricas-primárias-contorno-real\" aria-hidden=\"true\" class=\"anchor\" id=\"81-métricas-primárias-contorno-real\"></a><strong>8.1 Métricas primárias (contorno real)</strong></h3>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">area_px       = cv2.contourArea(C)\n\nperimeter_px  = cv2.arcLength(C, closed=True)\n</code></pre>\n<h3><a href=\"#82-dimensões-clínicas--pca-2d\" aria-hidden=\"true\" class=\"anchor\" id=\"82-dimensões-clínicas--pca-2d\"></a><strong>8.2 Dimensões clínicas — PCA 2D</strong></h3>\n<p>Centro: <code>μ = mean(C)</code></p>\n<p>Matriz de covariância: <code>Σ = cov(C - μ)</code></p>\n<p>Decomposição: <code>Σ = V Λ Vᵀ</code> via <code>np.linalg.eigh</code></p>\n<p>Autovetor <code>v₁</code> (maior autovalor) = eixo principal:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">proj_major = (C - μ) · v₁\n\nmajor_len  = max(proj_major) - min(proj_major)\n\nproj_minor = (C - μ) · v₂\n\nminor_len  = max(proj_minor) - min(proj_minor)\n\nangle_deg  = atan2(v₁_y, v₁_x) · 180/π\n</code></pre>\n<h3><a href=\"#83-referência-cruzada\" aria-hidden=\"true\" class=\"anchor\" id=\"83-referência-cruzada\"></a><strong>8.3 Referência cruzada</strong></h3>\n<ul>\n<li><code>minAreaRect(C)</code> → <code>(rect_major, rect_minor, rect_angle)</code></li>\n<li><strong>Feret diameter</strong> no convex hull: <code>(feret_max, feret_min)</code></li>\n</ul>\n<p>Dimensão final:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">width_px  = median(pca_major, rect_major)\n\nheight_px = median(pca_minor, rect_minor)\n</code></pre>\n<p><strong>Motivação</strong>: <code>cv2.boundingRect</code> superestima feridas alongadas e rotacionadas. PCA captura orientação; mediana entre PCA e minAreaRect reduz sensibilidade a outliers no contorno.</p>\n<h3><a href=\"#84-conversão-métrica\" aria-hidden=\"true\" class=\"anchor\" id=\"84-conversão-métrica\"></a><strong>8.4 Conversão métrica</strong></h3>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">area_cm²      = area_px       × pixel_to_cm²\n\nperimeter_cm  = perimeter_px   × pixel_to_cm\n\nwidth_cm      = width_px      × pixel_to_cm\n\nheight_cm     = height_px     × pixel_to_cm\n\ndiameter_cm   = max(width_cm, height_cm)\n</code></pre>\n<h3><a href=\"#85-validação-geométrica\" aria-hidden=\"true\" class=\"anchor\" id=\"85-validação-geométrica\"></a><strong>8.5 Validação geométrica</strong></h3>\n<p><code>geometry_confidence = min(calibration_confidence, mask_geometry_confidence)</code></p>\n<p>Checks de plausibilidade (<code>GEOMETRY_REQUIRE_VALID=true</code>):</p>\n<ul>\n<li>área mínima em cm²</li>\n<li>aspect ratio dentro de limites</li>\n<li>solidity/compactness acima de thresholds</li>\n</ul>\n<p>Falha → <code>InvalidGeometryError</code>.</p>\n<hr />\n<h2><a href=\"#9-taxonomia-de-erros\" aria-hidden=\"true\" class=\"anchor\" id=\"9-taxonomia-de-erros\"></a><strong>9. Taxonomia de erros</strong></h2>\n<p>O pipeline retorna erros estruturados (HTTP 422) com <code>message</code> (frontend) e <code>message_technical</code>:</p>\n<table>\n<thead>\n<tr>\n<th><strong>Exception</strong></th>\n<th><strong>Código</strong></th>\n<th><strong>Trigger</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>WoundNotDetectedError</code></td>\n<td><code>no_wound_detected</code></td>\n<td><code>prob_max</code> baixo, área @ 0.5 &lt; threshold</td>\n</tr>\n<tr>\n<td><code>MarkerNotDetectedError</code></td>\n<td><code>marker_not_detected</code></td>\n<td>ArUco ausente, <code>ARUCO_REQUIRED=true</code></td>\n</tr>\n<tr>\n<td><code>InvalidMarkerError</code></td>\n<td><code>invalid_marker</code></td>\n<td>ID ≠ 0</td>\n</tr>\n<tr>\n<td><code>CalibrationFailedError</code></td>\n<td><code>calibration_failed</code></td>\n<td>Marcador inválido / escala não clínica</td>\n</tr>\n<tr>\n<td><code>InvalidSegmentationError</code></td>\n<td><code>invalid_segmentation</code></td>\n<td>CC analysis falhou em todos os níveis</td>\n</tr>\n<tr>\n<td><code>GeometryExtractionError</code></td>\n<td><code>geometry_extraction_failed</code></td>\n<td>Contorno &lt; 5 pontos</td>\n</tr>\n<tr>\n<td><code>InvalidGeometryError</code></td>\n<td><code>invalid_geometry</code></td>\n<td>Validação geométrica falhou</td>\n</tr>\n</tbody>\n</table>\n<hr />\n<h2><a href=\"#10-observabilidade-e-debug\" aria-hidden=\"true\" class=\"anchor\" id=\"10-observabilidade-e-debug\"></a>10. Observabilidade e Debug</h2>\n<p>O sistema possui um modo avançado de observabilidade para facilitar a inspeção de toda a pipeline de segmentação e análise de cores. Quando <code>DEBUG_SEGMENTATION=true</code>, são aplicadas configurações mais permissivas para facilitar a identificação de problemas durante o processamento:</p>\n<ul>\n<li>Filtros de Componentes Conectados (CC) relaxados:\n<ul>\n<li><code>min_solidity = 0.08</code></li>\n<li><code>max_aspect_ratio = 20</code></li>\n</ul>\n</li>\n<li><code>GEOMETRY_MIN_CONFIDENCE = 0.20</code></li>\n</ul>\n<p>Para cada requisição é criado o diretório <code>debug_outputs/{request_id}/</code>, contendo todos os artefatos intermediários da pipeline:</p>\n<ul>\n<li><code>01_original.png</code></li>\n<li><code>02_...</code></li>\n<li><code>...</code></li>\n<li><code>09_overlay.png</code></li>\n<li><code>meta.json</code></li>\n</ul>\n<p>O arquivo <code>meta.json</code> reúne informações detalhadas do processamento, incluindo:</p>\n<ul>\n<li>Dimensões de cada etapa da pipeline;</li>\n<li>Thresholds utilizados;</li>\n<li>Estatísticas da máscara de probabilidade;</li>\n<li>Métricas de segmentação;</li>\n<li>Diagnósticos completos utilizados pela API.</li>\n</ul>\n<p>Além disso, a resposta da API passa a incluir o campo <code>segmentation_debug</code>, contendo informações detalhadas para auxiliar na investigação de falhas.</p>\n<p>Cada requisição também propaga um <code>ImagePipelineContext</code>, que registra automaticamente as dimensões produzidas em cada etapa da pipeline (<code>shape_log</code>), permitindo identificar rapidamente desalinhamentos entre a imagem original, a inferência da U-Net e a máscara final.</p>\n<h3><a href=\"#101-exemplo-de-shape_log\" aria-hidden=\"true\" class=\"anchor\" id=\"101-exemplo-de-shape_log\"></a>10.1 Exemplo de <code>shape_log</code></h3>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-text\">original_loaded:           shape=(3024, 4032, 3)\nworking_capped:            shape=(1152, 1536, 3)\npreprocessed_mobile:       shape=(1152, 1536, 3)\ninference_letterboxed:     shape=(512, 512, 3)\npredicted_mask_inference:  shape=(512, 512)\nmask_working_prob:         shape=(1152, 1536)\n</code></pre>\n<p>Esses registros são fundamentais para diagnosticar problemas como diferenças de escala, padding incorreto, redimensionamentos inadequados e desalinhamentos entre a máscara segmentada e a imagem original.</p>\n<h3><a href=\"#102-logs-da-análise-de-cores\" aria-hidden=\"true\" class=\"anchor\" id=\"102-logs-da-análise-de-cores\"></a>10.2 Logs da análise de cores</h3>\n<p>A etapa de análise de cores também possui observabilidade dedicada. Durante a execução são registrados:</p>\n<ul>\n<li>Quantidade de pixels analisados;</li>\n<li>Número de pixels classificados em cada cor;</li>\n<li>Percentuais finais de cada classe.</li>\n</ul>\n<p>Exemplo:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-text\">🎨 [ColorAnalysis] Pixels analisados: 4821\n🎨 [ColorAnalysis] Color counts - Red: 2104, Yellow: 891, Black: 312, ...\n🎨 [ColorAnalysis] Final percentages:\n{\n  'vermelho': 43.6,\n  'amarelo': 18.5,\n  ...\n}\n</code></pre>\n<p>Esses logs permitem validar tanto a qualidade da segmentação quanto a consistência da classificação cromática, tornando o processo de depuração significativamente mais eficiente.</p>\n<hr />\n<h2><a href=\"#11-testes-automatizados\" aria-hidden=\"true\" class=\"anchor\" id=\"11-testes-automatizados\"></a><strong>11. Testes automatizados</strong></h2>\n<p>Cobertura unitária em:</p>\n<ul>\n<li><code>test_aruco_detection.py</code> — detecção, filtro de ID, cálculo de escala</li>\n<li><code>test_ruler_detection.py</code> — picos periódicos, aspect ratio</li>\n<li><code>test_measurement_geometry.py</code> — PCA, Feret, conversão cm</li>\n<li><code>test_segmentation_postprocess.py</code> — threshold sweep, CC fallback</li>\n<li><code>test_pipeline_validation.py</code> — presença de ferida, erros tipados</li>\n</ul>\n<hr />\n<h2><a href=\"#12-lições-técnicas-consolidadas\" aria-hidden=\"true\" class=\"anchor\" id=\"12-lições-técnicas-consolidadas\"></a><strong>12. Lições técnicas consolidadas</strong></h2>\n<p><strong>1. Domain shift mobile &gt;&gt; ganho de arquitetura</strong></p>\n<p>Val Dice/IoU em dataset limpo não prediz comportamento em fotos 12 MP com flash, JPEG agressivo e glare. O pipeline de inferência (CLAHE, threshold sweep, CC fallback) compensa mais do que trocar encoder de B3 para B4.</p>\n<p><strong>2. Threshold é parâmetro de produção, não de treino</strong></p>\n<p>O sweep <code>[0.35…0.55]</code> é configurável via env. Diferentes dispositivos/câmeras exigem calibração empírica do threshold sem retreinar.</p>\n<p><strong>3. DL + CV clássica são complementares</strong></p>\n<table>\n<thead>\n<tr>\n<th><strong>Tarefa</strong></th>\n<th><strong>Abordagem</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Segmentação semântica</td>\n<td>U-Net (DL)</td>\n</tr>\n<tr>\n<td>Pré-processamento</td>\n<td>CLAHE, unsharp (CV clássica)</td>\n</tr>\n<tr>\n<td>Binarização robusta</td>\n<td>Threshold sweep + morfologia + CC</td>\n</tr>\n<tr>\n<td>Escala métrica</td>\n<td>ArUco / régua (CV clássica)</td>\n</tr>\n<tr>\n<td>Dimensões clínicas</td>\n<td>PCA + minAreaRect (álgebra linear)</td>\n</tr>\n<tr>\n<td>Correção de perspectiva</td>\n<td>Homografia (projective geometry)</td>\n</tr>\n</tbody>\n</table>\n<p><strong>4. Propagação de coordenadas é a fonte #1 de bugs</strong></p>\n<p>Letterbox → inferência → unletterbox → homografia (opcional) → overlay. Cada transformação precisa de metadados reversíveis. <code>assert_image_mask_aligned()</code> valida shape/dtype antes de geometria.</p>\n<p><strong>5. Fail-fast com diagnóstico</strong></p>\n<p>Retornar <code>prob_max=0.12</code> em <code>WoundNotDetectedError</code> é mais útil que retornar máscara vazia silenciosamente. Permite tuning de threshold e detecção de model drift em produção.</p>\n<p><strong>6. Export ≠ treino</strong></p>\n<p>TorchScript trace congela o grafo para <code>(1,3,512,512)</code>. Qualquer mudança de input size ou normalização exige re-export. ONNX com <code>dynamic_axes</code> no batch é mais flexível para classificação.</p>\n<hr />\n<h2><a href=\"#stack\" aria-hidden=\"true\" class=\"anchor\" id=\"stack\"></a><strong>Stack</strong></h2>\n<ul>\n<li>PyTorch 2.x + segmentation_models_pytorch + timm</li>\n<li>OpenCV 4.7+ (aruco, morfologia, homografia)</li>\n<li>FastAPI + uvicorn</li>\n<li>TorchScript (seg) / ONNX opset 17 (cls)</li>\n<li>Redis (cache + rate limit)</li>\n<li>pytest (unit tests)</li>\n</ul>\n<h2><a href=\"#o-que-eu-faria-diferente-e-o-que-recomendo-estudar\" aria-hidden=\"true\" class=\"anchor\" id=\"o-que-eu-faria-diferente-e-o-que-recomendo-estudar\"></a><strong>O que eu faria diferente (e o que recomendo estudar)</strong></h2>\n<ol>\n<li><strong>Dataset mobile-first</strong> — incluir desde o início fotos com flash, blur, glare, fundos clínicos variados e exemplos negativos (pele sã, tatuagens).</li>\n<li><strong>Validar IoU em holdout exclusivamente mobile</strong> — métricas de desktop enganam.</li>\n<li><strong>Não subestimar CV clássica</strong> — ArUco, morfologia, CLAHE e análise de contornos são ferramentas maduras que complementam deep learning.</li>\n<li><strong>Pensar em falhas desde o design</strong> — o sistema precisa dizer <em>por que</em> falhou, não apenas <em>que</em> falhou.</li>\n<li><strong>Threshold não é hiperparâmetro de treino</strong> — é parâmetro de produto, ajustável por ambiente.</li>\n</ol>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-07-08T00:00:00-00:00",
      "image": "/media/diagrama.png",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "IA",
        "computer vision"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//o-caminho-do-iniciante.html",
      "url": "https://meus10centavos.vercel.app//o-caminho-do-iniciante.html",
      "title": "O caminho do iniciante",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<p>O pior momento na carreira de dev é o início onde você não sabe para onde quer ir e provavelmente irá perder muito tempo fazendo algo que no momento você acha que é o caminho certo, mas daqui alguns meses notará que foi apenas uma perda de tempo. Essa é minha tentativia de te poupar esse tempo explicando por onde começar.</p>\n<p>O primeiro passo é a faculdade, e eu já tenho um texto sobre isso, esse é o segundo.</p>\n<h2><a href=\"#qual-melhor-linguagem-para-começar\" aria-hidden=\"true\" class=\"anchor\" id=\"qual-melhor-linguagem-para-começar\"></a>Qual melhor linguagem para começar?</h2>\n<p>A principal dúvida dos iniciantes. Serei curto e grosso igual meu pé, a melhor linguagem para começar é a que você iriá seguir carreira. Por exemplo, não faz sentido aprender uma linguagem fácil e depois aprender a que você quer, isso é total perda de tempo. E tem até uns animais que já vi sugerir começar pela mais difícil e depois ir para sua principal.</p>\n<p>Deixe-me justificar minha ideia. Quando você aprende uma linguagem de programação, você não vai aprender apenas a linguagem, também é necessário aprender o ecossistema. O que eu quero dizer com isso? Aprender a linguagem e as tecnologias adjacentes, frameworks, libs, etc. Tendo em vista isso, quanto antes você focar em um ecossitema melhor.</p>\n<p>Dito isso...</p>\n<h2><a href=\"#como-escolher-minha-linguagem\" aria-hidden=\"true\" class=\"anchor\" id=\"como-escolher-minha-linguagem\"></a>Como escolher minha linguagem?</h2>\n<p>Eu vejo três principais caminhos para escolher uma linguagem de programação:</p>\n<ul>\n<li>Interesse</li>\n<li>Mercado</li>\n<li>Sênior</li>\n</ul>\n<h3><a href=\"#área-de-interesse\" aria-hidden=\"true\" class=\"anchor\" id=\"área-de-interesse\"></a>Área de interesse</h3>\n<p>Aprenda o que te interessa. Eu acredito também que essa seja o caminho mais gratificante de aprendizado. Mas não é todo mundo que tem o privilégio de procurar uma linguagem apenas por interesse, né? É algo mais voltado para quem ainda é adolescente, para quem ainda está no ensino médio, não ingressou de fato numa faculdade, nem no mercado de trabalho, ainda está experimentando.</p>\n<p>Eu acho que escolher a linguagem de programação com base em interesse é muito legal e também muito gratificante. Mas aí entra outra questão, interesse em que exatamente? No caso, seria interesse em áreas. Ah, se tu quer aprender sobre machine learning, aprendizado de máquina, o mais indicado aí é estudar o famoso Python.</p>\n<p>Ah, mas meu interesse é, por exemplo, low level, linguagem de baixo nível, tu vai procurar sobre C, vai procurar sobre Zig, vai procurar aprender Rust. Seria com foco em interesse.</p>\n<h3><a href=\"#mercado\" aria-hidden=\"true\" class=\"anchor\" id=\"mercado\"></a>Mercado</h3>\n<p>Mas aí tem aquele ponto, né? Nem todo mundo tem esse privilégio. Às vezes, a pessoa tem que entrar no mercado o quanto antes. Aí, não pode olhar tanto a parte de interesse, né?</p>\n<p>Tu poderia escolher tua linguagem de programação com base no mercado, com base, por exemplo, no que está em alta.</p>\n<p>É ir no Google, procurar o que é que está em alta de linguagem de programação. Linguagens em alta, aí vamos ver aqui no Google. Aqui é uma pesquisada rápida no Google.</p>\n<p>As mais populares: Rust, Go, Java, JavaScript, Kotlin, TypeScript. Enfim, por aqui você já tira, né? Com base em mercado. Olhando as linguagens que estão em alta, daí tu já consegue achar um norte para seus estudos. Outra fonte muito boa é procurar pela vaga que lhe interessa no LinkedIn e busca pelas palavras que se repetem nas vagas.</p>\n<p>Mas ainda tem uma ressalva nessa questão de escolher linguagem com base no que está em alta. Seria basicamente o que está em alta hoje, pode não estar em alta amanhã.</p>\n<p>Essas daqui foram as linguagens em alta para agora, 2026. amanhã, em 2027, já pode ser outra, em 2028 pode ser outra. Enfim, isso muda.</p>\n<p>Obviamente que tu não vai ficar preso a uma linguagem só, né? Tipo, uma linguagem é uma ferramenta. Tu vai se adaptar conforme a necessidade, conforme o mercado, conforme o projeto que tu estiver fazendo. Tu vai se adaptar, obviamente.</p>\n<p>Mas, principalmente para a primeira linguagem de programação, tem uma curva de aprendizado muito grande. Enquanto para a tua segunda, tua terceira linguagem, já começa a perceber muitos padrões, tu fica mais fácil o aprendizado, tu pega as coisas mais rápido. Sem contar que algumas algumas linguagens também têm suas particularidades. Por exemplo, o Java é um bom exemplo. É uma linguagem fortemente tipada, enquanto o JavaScript não é fortemente tipado. Enfim, todas elas tem suas particularidades. Aí eu acredito que para a primeira linguagem deveria ser uma escolha, assim, bem feita com calma, entendeu? Porque você tem que levar em consideração vários fatores.</p>\n<p>Sobre mercado, ainda tem outro ponto. Você também poderia, ainda dentro de mercado,escolher uma linguagem com base no segmento, no setor de atuação.</p>\n<p>Então, os principais setores que eu lembrei aqui rapidamente foram esses, o setor bancário, mobile, web, embarcados. O setor bancário é muito forte o Java. Se tu quiser trabalhar e em banco, por exemplo, o Itaú, Nanobank, banco no geral, banco, fintech, é bom tu focar em Java.</p>\n<p>Já se tua ideia é ir para o mobile, pô, aí tu vai para o Kotlin, que é um filho do Java. Tu vai para o Swift, se for o desenvolvimento para iOS. Também tem o React Native para o desenvolvimento, para ambas as plataformas, né, o desenvolvimento Android e desenvolvimento iOS.</p>\n<p>Para o web, muito forte na web é o JavaScript, o TypeScript, né, e também o PHP. Se tu quer ir para a web, não tem muito o que fugir, tipo, sempre vai andar nessa linha aqui.</p>\n<p>Setor de embradados. Quem é grande nos embarcados é a família do C: C, C++, que são grandes para embarcados.</p>\n<p>Para a parte de jogos, C#, Unity. Tem o C# em grandes partes dos jogos. Se tu tá escolhendo a linguagem com base em mercado, eu não acho que jogos não seria o melhor segmento para tu seguir profissionalmente, eu acho que jogos eu acabaria enquadrando ali dentro de interesses também, o segmento de jogo é muito ruim no Brasil.</p>\n<h3><a href=\"#sênior\" aria-hidden=\"true\" class=\"anchor\" id=\"sênior\"></a>Sênior</h3>\n<p>A terceira via que eu imagino, seria tu escolher tua linguagem com base num sênior. Aí o que seria isso, exatamente? Por exemplo, tu tem um amigo que ele já é desenvolvedor, ele já trabalha com programação, e te passa o caminho das pedras.</p>\n<p>Por exemplo, ele trabalha com o Java no setor bancário, aí tu começando com o Java, ele já pode te passar as dicas do caminho a ser trilhado com o Java, porque cada linguagem meio que tem ali seu conjunto de ferramentas, frameworks, e no começo, às vezes, tu vai perder muito tempo pensando nesse caminho, tá entendendo?</p>\n<p>Tem vários frameworks do Java, eu vou citar aqui o Spring Boot e eu vou citar o Quarkus, esses dois frameworks são os principais para Java. Aí tu lá, iniciante, aí pode ser que tu acabe fazendo uma escolha entre aspas erradas, né, de ir pro Quarkus, enquanto o que tem mais adesão de mercado é o Spring Boot. Quando tu tiver interesse em ir pro mercado, tu tem um pouco mais de dificuldade, compreende?</p>\n<p>Então por isso eu acredito que também seria um bom caminho tu escolher uma linguagem de programação com base num sênior, não necessariamente um sênior, mas um amigo, uma pessoa próxima que já tem experiência prévia com alguma coisa e que possa te passar o caminho das pedras, ao invés de tu ter que ir lá do zero, pesquisar tudinho qual é melhor framework pra tal linguagem, com quais ferramentas aprender, a pessoa já pode ir te passando os toques.</p>\n<p>Ele vai te guiar com base num que é mais aceito pelo mercado, porque também é uma pessoa com mais experiência e tem mais visão.</p>\n<h2><a href=\"#tabela\" aria-hidden=\"true\" class=\"anchor\" id=\"tabela\"></a>Tabela</h2>\n<p>Irei te apresentar algumas subáreas que você pode ser como dev. Muito comum no início sequer imaginarmos que há essa diversidade.</p>\n<table>\n<thead>\n<tr>\n<th>Áreas</th>\n<th>Linguagens mais relevantes</th>\n<th>Principais aplicações</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Desenvolvimento Web (Front-end)</td>\n<td>JavaScript, TypeScript</td>\n<td>Interfaces web, SPAs, SSR, aplicações modernas</td>\n</tr>\n<tr>\n<td>Desenvolvimento Web (Back-end)</td>\n<td>JavaScript (Node.js), TypeScript, Java, C#, Go, PHP, Python</td>\n<td>APIs, microsserviços, sistemas web</td>\n</tr>\n<tr>\n<td>Desenvolvimento Mobile (Android)</td>\n<td>Kotlin, Java</td>\n<td>Aplicativos nativos para Android</td>\n</tr>\n<tr>\n<td>Desenvolvimento Mobile (iOS)</td>\n<td>Swift</td>\n<td>Aplicativos nativos para iPhone e iPad</td>\n</tr>\n<tr>\n<td>Desenvolvimento Mobile Multiplataforma</td>\n<td>TypeScript (React Native), Dart (Flutter)</td>\n<td>Apps para Android e iOS com uma única base de código</td>\n</tr>\n<tr>\n<td>Inteligência Artificial / Machine Learning</td>\n<td>Python, R, Julia</td>\n<td>IA, Deep Learning, Ciência de Dados</td>\n</tr>\n<tr>\n<td>Ciência de Dados / Análise de Dados</td>\n<td>Python, R, SQL</td>\n<td>Análise estatística, visualização e processamento de dados</td>\n</tr>\n<tr>\n<td>Engenharia de Dados</td>\n<td>Python, Java, Scala, SQL</td>\n<td>ETL, Big Data, pipelines de dados</td>\n</tr>\n<tr>\n<td>Computação em Nuvem (Cloud)</td>\n<td>Python, Go, Java, TypeScript</td>\n<td>Automação, infraestrutura, microsserviços</td>\n</tr>\n<tr>\n<td>DevOps / Automação</td>\n<td>Python, Bash, Go</td>\n<td>Scripts, CI/CD, infraestrutura como código</td>\n</tr>\n<tr>\n<td>Cibersegurança / Pentest</td>\n<td>Python, C, C++, Bash</td>\n<td>Ferramentas de segurança, análise e automação</td>\n</tr>\n<tr>\n<td>Sistemas Embarcados / IoT</td>\n<td>C, C++, Rust</td>\n<td>Microcontroladores, firmware, dispositivos eletrônicos</td>\n</tr>\n<tr>\n<td>Sistemas Operacionais</td>\n<td>C, C++, Rust</td>\n<td>Kernel, drivers e software de baixo nível</td>\n</tr>\n<tr>\n<td>Sistemas Militares e Aeroespaciais</td>\n<td>Ada, C, C++, Rust</td>\n<td>Sistemas de defesa, aviônica, radares, mísseis, satélites e software de missão crítica</td>\n</tr>\n<tr>\n<td>Programação de Baixo Nível</td>\n<td>C, C++, Assembly, Rust</td>\n<td>Hardware, sistemas críticos e otimização</td>\n</tr>\n<tr>\n<td>Desenvolvimento de Jogos</td>\n<td>C# (Unity), C++ (Unreal Engine), GDScript (Godot)</td>\n<td>Jogos 2D, 3D e engines de jogos</td>\n</tr>\n<tr>\n<td>Blockchain / Web3</td>\n<td>Solidity, Rust, Go, JavaScript</td>\n<td>Smart contracts, DeFi, criptomoedas</td>\n</tr>\n<tr>\n<td>Finanças / Bancos / Fintechs</td>\n<td>Java, Kotlin, C#, Go</td>\n<td>Sistemas bancários, meios de pagamento e alta disponibilidade</td>\n</tr>\n<tr>\n<td>Desktop</td>\n<td>C#, Java, C++, Electron (JavaScript/TypeScript)</td>\n<td>Aplicações para Windows, Linux e macOS</td>\n</tr>\n<tr>\n<td>Automação de Testes (QA)</td>\n<td>Java, Python, JavaScript, TypeScript</td>\n<td>Testes automatizados e qualidade de software</td>\n</tr>\n<tr>\n<td>Low Code / No Code</td>\n<td>JavaScript, TypeScript (para extensões), Power Fx</td>\n<td>Power Platform, OutSystems, Mendix e automações</td>\n</tr>\n<tr>\n<td>Computação Científica</td>\n<td>Python, Julia, MATLAB, Fortran</td>\n<td>Simulações, pesquisa e cálculos científicos</td>\n</tr>\n<tr>\n<td>Robótica</td>\n<td>C++, Python, Rust</td>\n<td>Robôs industriais e autônomos</td>\n</tr>\n<tr>\n<td>Visão Computacional</td>\n<td>Python, C++</td>\n<td>Reconhecimento de imagens e vídeos</td>\n</tr>\n<tr>\n<td>Processamento de Linguagem Natural (NLP)</td>\n<td>Python</td>\n<td>Chatbots, tradução e IA de texto</td>\n</tr>\n<tr>\n<td>Realidade Virtual (VR) e Aumentada (AR)</td>\n<td>C#, C++</td>\n<td>Experiências imersivas</td>\n</tr>\n<tr>\n<td>Computação Gráfica</td>\n<td>C++, C#, GLSL</td>\n<td>Renderização e motores gráficos</td>\n</tr>\n<tr>\n<td>CAD / Engenharia</td>\n<td>C++, C#, Python</td>\n<td>Softwares de engenharia e modelagem</td>\n</tr>\n<tr>\n<td>Bioinformática</td>\n<td>Python, R</td>\n<td>Genômica e análise biológica</td>\n</tr>\n<tr>\n<td>Saúde / Tecnologia Médica</td>\n<td>Java, C#, Python, C++</td>\n<td>Sistemas hospitalares e equipamentos médicos</td>\n</tr>\n<tr>\n<td>Telecomunicações</td>\n<td>C, C++, Erlang, Go</td>\n<td>Redes, centrais telefônicas e protocolos</td>\n</tr>\n<tr>\n<td>Sistemas Distribuídos</td>\n<td>Go, Java, Rust</td>\n<td>Serviços escaláveis e alta disponibilidade</td>\n</tr>\n<tr>\n<td>Computação de Alto Desempenho (HPC)</td>\n<td>C++, Fortran, Julia</td>\n<td>Supercomputadores e simulações</td>\n</tr>\n<tr>\n<td>Automação Industrial</td>\n<td>C, C++, Structured Text (IEC 61131-3), Python</td>\n<td>PLCs, fábricas inteligentes e controle industrial</td>\n</tr>\n<tr>\n<td>Trading Algorítmico</td>\n<td>Python, C++, Java</td>\n<td>Robôs de investimento e mercado financeiro</td>\n</tr>\n<tr>\n<td>Desenvolvimento de Compiladores</td>\n<td>C++, Rust, OCaml</td>\n<td>Compiladores, interpretadores e ferramentas de linguagem</td>\n</tr>\n<tr>\n<td>Bancos de Dados</td>\n<td>SQL, PL/SQL, T-SQL</td>\n<td>Administração e otimização de bancos de dados</td>\n</tr>\n<tr>\n<td>Engenharia Reversa</td>\n<td>C, C++, Python, Assembly</td>\n<td>Análise de binários e softwares</td>\n</tr>\n<tr>\n<td>Sistemas em Tempo Real</td>\n<td>Ada, C, C++, Rust</td>\n<td>Controle industrial, defesa e dispositivos críticos</td>\n</tr>\n</tbody>\n</table>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-07-07T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "carreira"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//guia-de-linkedin.html",
      "url": "https://meus10centavos.vercel.app//guia-de-linkedin.html",
      "title": "O guia de LinkedIn",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<p>Mais uma vez motivado pela preguiça de ensinar muitas pessoas a mesma coisa em um curto período de tempo, resolvi economizar saliva e escrever <strong>o guia de LinkedIn.</strong> Vou explicar como a rede funciona, como ter um posicionamento na rede, como fazer um bom perfil, etc.</p>\n<p><strong>Fontes</strong> <br />\nCertamente terá um @bado questionando &quot;com base em que você diz isso?&quot;, mas por incrível que pareça eu não tirei isso tudo da minha cavidade retal.</p>\n<p>Escrevo esse texto com base na minha experiência, no que eu testei, nas falhas e êxitos que tive. Também com base nas próprias métricas que o LinkedIn fornece sobre o  perfil.</p>\n<p>Além de convesas que tive com contratantes e donos de empresas, ou seja, eu ouvi diretamente o que incomada e o que eles gostam e vim repassar. E não orgulhosamente também adimito que já fui o otário que encontrou o esperto que tava vendendo o curso de currículo e LinkedIn, que realmente são eficazes, mas não valem o preço cobrado.</p>\n<h2><a href=\"#o-perfil-de-ouro\" aria-hidden=\"true\" class=\"anchor\" id=\"o-perfil-de-ouro\"></a>O perfil de ouro</h2>\n<p>Premeiramente parabéns por ter tomado vergonha na cara e estar tentando melhorar seu perfil, que atualmente está um repelente de contratantes.</p>\n<p>Vamos montar o perfil do Enzo (nome fictício)</p>\n<h3><a href=\"#url\" aria-hidden=\"true\" class=\"anchor\" id=\"url\"></a>URL</h3>\n<p>Enzo, você usaria @Enzo_Rei_Delas.https.418 como @ do seu Instagram? Não, né?! <strong>ENTÃO PORQUÊ KARALIOS VOCÊ VAI USAR UMA DESGRAÇA DESSA NA SUA REDE PROFISSIONAL?!</strong></p>\n<p>Provavelmente você ainda não reparou, mas cada usuário tem um URL especìfica no LinkedIn, é o equivalente ao @ do Instagram. <br />\nÉ muito comum ver pessoas que tem o nome muito comum, terem URLs cheias de números o que não é nada legal. A URL não é um fator que automáticamente rotula seu perfil como ruim, mas é um polimento, demonstra uma preocupação com detalhes.</p>\n<p>O ideal é você use seu próprio nome na URL ou use suas iniciais. Me citando como exemplo, meu nome é Fabrício e minha URL do LinkedIn é fabricio-ss, o &quot;ss&quot;, são as iniciais dos meus sobrenomes. Pois meus sobrenomes também são muito comuns.</p>\n<h3><a href=\"#foto-e-banner\" aria-hidden=\"true\" class=\"anchor\" id=\"foto-e-banner\"></a>Foto e Banner</h3>\n<h4><a href=\"#foto-de-perfil\" aria-hidden=\"true\" class=\"anchor\" id=\"foto-de-perfil\"></a>Foto de perfil</h4>\n<p>É de uma frequência assustadora, principalmente entre os iniciantes, as péssimas fotos de perfil. Quando penso que não há como ser pior alguém vem e supera...</p>\n<p>Cuidados com a foto</p>\n<ul>\n<li>A foto de perfil deve ser com foco no seu rosto, nunca de corpo inteiro;</li>\n<li>Em um ambiente bem iluminado, evite sombra no rosto;</li>\n<li>Sem boné ou óculos de Sol;</li>\n<li>A roupa deve ser de cor sólida;</li>\n<li>Sem logos gritantes de marcas;</li>\n<li>O fundo deve ser em um fundo neutro, uma parede branca, por exemplo;</li>\n<li>Nada de foto em grupo.</li>\n</ul>\n<p>Caso você queria uma foto feita com IA, aqui vai um prompt para gerar uma foto boa para o LinkedIn:</p>\n<p>Black and white studio portrait of a young man with short curly hair and glasses, wearing a fitted black t-shirt. He is posing with one hand on his chin in a thoughtful, confident expression, looking directly at the camera. Dramatic lighting (low-key lighting) with strong contrast, highlighting facial features and creating soft shadows. Dark solid background, minimalistic composition. Cinematic mood, sharp focus, high detail, professional photography, 85mm lens, shallow depth of field, ultra realistic, editorial style.</p>\n<p>Adicione uma foto de um modelo na posição que você quer e várias fotos suas, principalmente do rosto, em ângulos e iluminações variadas.</p>\n<p>Recomendo que use o GPT, foi onde eu fiz a minha.</p>\n<h4><a href=\"#banner\" aria-hidden=\"true\" class=\"anchor\" id=\"banner\"></a>Banner</h4>\n<p>Sobre o banner o ideal é que ele seja coeso com suas atividades, como você... é um dev o lógico é que o banner seja um wallpaper de código ou que seja referente a programação. Outra abordagem legal é com seu nome e as stacks que você atua.</p>\n<p>Exemplo: <br />\n<img src=\"/media/banner.png\" alt=\"banner\" width=\"700\" height=\"500\"></p>\n<h3><a href=\"#conexões\" aria-hidden=\"true\" class=\"anchor\" id=\"conexões\"></a>Conexões</h3>\n<p>Vai na seção Minha rede e adicione todos que são da mesma área que você, no caso outros desenvolvedores, até você atingir 500 conexões que é quando o algoritimo começa te considerar minimamente relevante. A partir desse marco você começa filtar, pois de fudido já basta você :) , então comece recusar estudantes, OpenToWork, e perfis assim.</p>\n<p>O ideal que você faça conexões com pessoas da mesma área que você, caso você esteja procurando emprego adicione o pessoal de RH e psicólogos que trabalham em RH e TechRecruiters. É muito interessante adicionar pessoas de áreas adjasentes a sua, por exemplo:</p>\n<ul>\n<li>Front-end adicionar UI/UX designer</li>\n<li>Back-end adicinoar pessoal de DevOps e CyberSecurity</li>\n<li>Front e Back se adcionarem mutuamente, etc.</li>\n</ul>\n<h3><a href=\"#headline\" aria-hidden=\"true\" class=\"anchor\" id=\"headline\"></a>Headline</h3>\n<p>Essa é a parte que você se rotula, é o que as pessoas olham quando pensam &quot;Quem esse cara pra falar isso?&quot; ao ver um comentário polémico em uma publicação. Motivo inclusive de memes pelo exagero que as pessoas fazem no LinkedIn para tentar demonstar execiva autoridade em funções simples. Não obstante também é visto usuário condenando seu perfil à forca pela má execução da rotulação.</p>\n<p>Coisas do tipo:</p>\n<p>&quot;Estudante da Ciência da Computaria na Uniesquina&quot; <br />\n&quot;Profissional XPTO em transição de carreira para programação&quot;</p>\n<p>Ou pior, os que fazem da headline uma sopa de letrinhas sem estratégia nenhuma</p>\n<p>&quot;Prgramador Java, JavaScript, Rust, React, Spring, CyberSegurança, certificado do curso qualquer da Udemy&quot;</p>\n<p>Headline tem que ser feita de forma estratégica! Ela é uma das principais formas de busca usada pelos contratantes, a headline pode jogar contra ou ao seu favor, dependendo de como for feita.</p>\n<p>A headline deve conter palavras-chave relevantes para sua atuação, por exemplo, para o front-enzo algumas palavras-chave importantes são JavaScript, TypeScrit e um dos três principais frameworks.</p>\n<p>Estrutura de uma boa headline: <br />\nsua profissão | stack</p>\n<p>Exemplo: <br />\nDesenolvedor Front-enzo | JavaScript/TypeScript, React, TailwindCSS</p>\n<p>As tecnologias citadas devem ser complementares, não faz sentido para o front-enzo adicionar Java e Spring Boot na sua headline.</p>\n<p>Quando você escreve vária tecnologias, a não ser que você seja um sênior com mais de 10 anos de exeriência, a impressão que possa é que você está pulando de galho em galho e não sabe com profundidade suficiente para atuar.</p>\n<h3><a href=\"#sobre\" aria-hidden=\"true\" class=\"anchor\" id=\"sobre\"></a>Sobre</h3>\n<p>Junto com a foto e a headline, o sobre compõe o top 3 partes que as pessoas mais errram. Muitas pessoas colocam que são &quot;devs apaixonados&quot; ou que são &quot;devs curiosos&quot;, mas cuidado que eu fiquei sabendo que o come C# de curioso está contratando...</p>\n<p>Muito comum as pessoas colocaram um texto gigante sem levar em consideração um fator. Ao entrar no seu perfil as pessoas não vêem todo o texto, só é possível ver as 4 primeiras linhas e se você não consegue fazer a pessoa que está olhando se interessar para clicar no botão ver mais.</p>\n<p>O segredo para um bom sobre é você dar o máximo de carteirada possível nessas linhas iniciais para causar interesse</p>\n<p>Exemplo: <br />\n<img src=\"/media/sobre.jpg\" alt=\"banner\" width=\"700\" height=\"500\"></p>\n<p>Observe que nesse exemplo tem 4 demonstrações de autorida: 1ª ser pesquisador, 2ª atuar em Health Tech,  3ª, tempo de expeeriência (mesmo sendo pouca), 4ª já ter feito sistema para órgão público.</p>\n<p>Ninguém está interessado na sua historinha de vida de paixão pela tecnologia desde a infância quando você desmontava eletrônicos velhos para ver como funcionavam. Quem recruta está procurando quem demonstra aptidão!</p>\n<p>Logo após você convencer quem está analisando seu perfil clicar em &quot;ver mais&quot; e desperdiçar mais alguns segundos da sua vida, você começa detlhar um pouco os tópicos das cateriadas e esmiussar sua atividade e responsabilidades, mas não muito há um campo exclusivo para isso, faça de forma resumida, comente só o que importa e o que impressiona.</p>\n<h4><a href=\"#principais-competências\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-competências\"></a>Principais competências</h4>\n<p>Essa seção fica em anexo com o sobre, aqui você lista as 5 habilidades mais importantes que você tem, novamente deve haver coesão nas tecnologias citadas. Minha recomendação é que sejam as mesmas da headline.</p>\n<h3><a href=\"#serviços\" aria-hidden=\"true\" class=\"anchor\" id=\"serviços\"></a>Serviços</h3>\n<p>Apesar de parece que essa parte é exclusiva para freelancers, mas também contribue para as análises automatizadas com modelos de ATS. Além de seu perfil ser mais recomendado, pelo simples fato de estar mais completo.</p>\n<h3><a href=\"#destaque\" aria-hidden=\"true\" class=\"anchor\" id=\"destaque\"></a>Destaque</h3>\n<p>Autoexplicativo.</p>\n<h3><a href=\"#experiência\" aria-hidden=\"true\" class=\"anchor\" id=\"experiência\"></a>Experiência</h3>\n<p>Outra seção que as pessoas fazer de forma muito inadequada. Descrever as experiência não é apenas colocar o tempo de atuação, nome da empresa e cargo.</p>\n<p>Estrutura da descrição da exeperiência:</p>\n<p>Breve descrição da atuação - Essa descrição deve ser mais ampla para dar um contexto do projeto que você trabalho. Qual era o projeo? Qual motivo do seu surgimento?</p>\n<p>Sua atuação - Cite quais foram suas responsabilidades. O que você fez? Como sua atuação impactou no projeto e por consequente na empresa?</p>\n<p>Resultado - Fale sobre as métricas de resultado. Com sua atuação nesse projeto quais resultados ele gerou? Quais os diferenciais?</p>\n<h3><a href=\"#formação-acadêmica\" aria-hidden=\"true\" class=\"anchor\" id=\"formação-acadêmica\"></a>Formação acadêmica</h3>\n<p>Sua Uniesquina fica aqui</p>\n<h3><a href=\"#licenças-e-certificados\" aria-hidden=\"true\" class=\"anchor\" id=\"licenças-e-certificados\"></a>Licenças e Certificados</h3>\n<p>Aqui os seu certificado de HTML5 da Udemy</p>\n<h3><a href=\"#projetos\" aria-hidden=\"true\" class=\"anchor\" id=\"projetos\"></a>Projetos</h3>\n<p>Se você tiver projetos open-source, acadêmico adicione aqui. É uma boa demonstração de capacidade técnica e de trabalho em equiper.</p>\n<h3><a href=\"#competências\" aria-hidden=\"true\" class=\"anchor\" id=\"competências\"></a>Competências</h3>\n<p>Você pode adicionar até 100 competências, você preencher essas 100 é muito importânte também pro algorítimo. Primeiro você adiciona suas competências técnicas (Linguagens, ferramentas, frameworks, tecnologias, etc), caso você não tenha habilidades técnicas suficientes então você usa das viadagens das softskills (escuta ativa, pensamento crítico, pensamento computacional, etc)</p>\n<h3><a href=\"#idiomas\" aria-hidden=\"true\" class=\"anchor\" id=\"idiomas\"></a>Idiomas</h3>\n<p>Aqui você adiciona que sabe a lingua do P, Elfico e Klingon</p>\n<h2><a href=\"#atividade\" aria-hidden=\"true\" class=\"anchor\" id=\"atividade\"></a>Atividade</h2>\n<p>Acredito que o LinkedIn é a única rede social que ninguém fica viciado e nem faz questão de entender como funciona tal qual o Instagram, por exemplo, onde todo mundo sonha em ter um mais de 5K de likes na sua foto no espelho do banheiro do shopping.</p>\n<p>O LinkedIn é uma rede social, isso parece uma obviedade, mas todo mundo ignora esse fator. O algorítimo favorece quem tem mais atividade, para entender isso basta comparar com aquela blogueirinha que você segue no Instagram que todos os dias posta um story dando bom dia. Ela não faz isso porquê ela acha bonito é porque mantem atividade e o algorítimo valoriza isso!</p>\n<p>Mas o LinkedIn não é a rede que você vai postar uma foto no espelho com a legenda &quot;indo alí&quot;, a atividade no LinkedIn é fundamentada em 4 pilares</p>\n<ul>\n<li>Esetabelecer marca pessoal</li>\n<li>Localizar as pessoas certas</li>\n<li>Interagir oferencendo insights</li>\n<li>Criar relacionamentos</li>\n</ul>\n<p>O que cada um quer dizer na prática?</p>\n<h3><a href=\"#esetabelecer-marca-pessoal\" aria-hidden=\"true\" class=\"anchor\" id=\"esetabelecer-marca-pessoal\"></a>Esetabelecer marca pessoal</h3>\n<p>Resumidamente, é ter o perfil preenchido com as informações necessáarias nos seus lugares. Onde você estudou, onde trabalhou, etc.</p>\n<h3><a href=\"#localizar-as-pessoas-certas\" aria-hidden=\"true\" class=\"anchor\" id=\"localizar-as-pessoas-certas\"></a>Localizar as pessoas certas</h3>\n<p>Criar conexão com as pessoas certas, ou seja pessoas do seu setor ou setor adjacente.</p>\n<h3><a href=\"#interagir-oferencendo-insights\" aria-hidden=\"true\" class=\"anchor\" id=\"interagir-oferencendo-insights\"></a>Interagir oferencendo insights</h3>\n<p>Prdouza conteúdo. &quot;Ah, não sei o que postar&quot;. Posta o que você está estudando, posta sua opnião sobre alguma polêmica do seu setor.</p>\n<h3><a href=\"#criar-relacionamentos\" aria-hidden=\"true\" class=\"anchor\" id=\"criar-relacionamentos\"></a>Criar relacionamentos</h3>\n<p>Faça comentário relevantes, não aqules sugerido da versão mobile ou qualquer porcaria tipo: &quot;top&quot;. Converse pela DM do LinkedIn (obs.: deixar e leva vacuo afeta essa pontuação)</p>\n<h2><a href=\"#criação-de-conteúdo\" aria-hidden=\"true\" class=\"anchor\" id=\"criação-de-conteúdo\"></a>Criação de conteúdo</h2>\n<p>Agora vai o ouro sobre publicar no LinkedIn: PUBLIQUE NO HORÁRIO QUE TODOS ESTÃO NO TRABALHO!</p>\n<p>O LinkedIn é uma rede profissional, ninguém acompanha o que rola fora do horário de trabalho (salvo exceçõe), rodo conteúdo publicado na sexta e no fim de semana tem queda em todas as métricas.</p>\n<h3><a href=\"#minha-estratégia\" aria-hidden=\"true\" class=\"anchor\" id=\"minha-estratégia\"></a>Minha estratégia</h3>\n<p>Eu costumo postar coneteúdo no primiro dia últil do LinkedIn (Segunda) e no último dia últil do LinkedIn (Quinta). Assim eu estarei presente no feed das pessoas assim que elas forem usar a rede na Segundo e serei o último post visto na semana também, as chances de ser lembrado são maiores e também o engajemnto é maior. O melhor horário para postar é entre 09:00 e 16:00, teste e veja em qual horário você tem mais engajamento.</p>\n<p>Se algum dia eu critiquei seu LinkedIn, melhore para que eu não tenha que criticá-lo novamente. De nada</p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-07-01T00:00:00-00:00",
      "image": "/media/banner.png",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "carreira",
        "tutorial",
        "guia"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//a-faculdade-perfeita.html",
      "url": "https://meus10centavos.vercel.app//a-faculdade-perfeita.html",
      "title": "A faculdade perfeita",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h1><a href=\"#a-escolha-perfeita-de-faculdade\" aria-hidden=\"true\" class=\"anchor\" id=\"a-escolha-perfeita-de-faculdade\"></a>A escolha perfeita de faculdade</h1>\n<p>Dessa vez iriei bostejar sobre faculdade, &quot;a decisão mais importante da sua vida&quot;. A dúvida mais comum principalmente entre os recém-saídos do ensino médio. Muitas questões corroem a mente nesse momento: Vale a pena fazer faculdade em 2077? Qual curso fazer? Unesquina ou Federal? Será que vou conseguir estágio? Preciso saber matemática? Etc, coisa e tal.</p>\n<p>Vou responder tais perguntas conforme o que eu lembrar das vezes que já me questionaram sobre isso.</p>\n<h2><a href=\"#faculdade-realmente-importavale-a-pena\" aria-hidden=\"true\" class=\"anchor\" id=\"faculdade-realmente-importavale-a-pena\"></a>Faculdade realmente importa/vale a pena?</h2>\n<p>Essa pergunta normalmente vem de pessoas que se acham Zuckerberg ou em pleno 2026 ainda estão iludidas com vendedores de cursos que falam que faculdade não é relevante.</p>\n<p>E sim, faculdade é muito importante, mas não pelos motivos que você está pensando (abordarei mais pra frente). Apesar de que todos os conhecimentos sobre desenvolvimento de software você pode aprender online em IAs, comunicades, ou como fazia os antigos Maias, pesquisando no Google e em fóruns. Faculdade torna-se muito relevantes por dois fatores: organização e mercado.</p>\n<p>Faculdade sempre vale a pena independênte do seu nível de conhecimento inicial ou objetivo de carreira. A faculdade sempre será vantajoso nem que seja &quot;apenas&quot; no network</p>\n<h3><a href=\"#mercado\" aria-hidden=\"true\" class=\"anchor\" id=\"mercado\"></a>Mercado</h3>\n<p>Pelo fato da área do desenvolvimento de software não ser regularizada, assunto para outro post, qualquer Enzo de 16 anos pode fazer o curso do Guanabara no YouTube e se denominar programador. Tendo isso em vista o mercado precisa criar meios de filtrar os candidatos. Coloque-se no lugar do contratante, você prefere um Enzo ou um profissinal de verdade? Como você verificaria a qualidade dos candidatos da forma mais rápida e barata?</p>\n<p>Resposta: requisitos</p>\n<p>Mesmo com essse filtro o Enzo e profissinal de verdade cumprem todos os requisitos, mas como filtrar se a pessoa tem maturidade, responsabilidade? Como validar se a pessoa tem realmente um conhecimento sólido? Então as empresas procuram indicadores indiretos de qualidade, um deles o diploma de faculdade.</p>\n<p>Faculdade não garante que você é bom, mas pelo menos dá indicativos de que você conseguiu passar em um processo seletivo difícil, no contexto de passar no SISU ou ProUni, teve contato com uma base teórica sólida, tem o mínimo de disciplina e dedicação pra ter concluído. Ou seja, reduz os riscos na contratação, que é o que importa.</p>\n<h3><a href=\"#organização\" aria-hidden=\"true\" class=\"anchor\" id=\"organização\"></a>Organização</h3>\n<p>Outro fator que torna a faculdade muito relevante, mesmo todo conteúdo sendo disponível online é a organização dos conteúdos, se você for estudante autodidata você será afogado pela quantidade de conteúdo, e nem sempre conteúdo de qualidade. Na faculdade você não terá dor de cabeça para fazer filtragem dos materiais de estudo nem das ordens que cada tópico deve ser estudado, além de que você tem uma régua clara para saber se você realmente sabe</p>\n<h2><a href=\"#federal-vs-uniesquina\" aria-hidden=\"true\" class=\"anchor\" id=\"federal-vs-uniesquina\"></a>Federal VS Uniesquina</h2>\n<p>Muitas pessoas acham que fazer Federal é uma garantia de ser bem sucedido na área, o que não passa nem perto de ser um fato. Isso pode ser uma realidade para outras áreas e profissões, mas como T.I. é quase um universo paralelo, onde muitas regra do mundo comum não se aplicam, a realidade é outra.</p>\n<p>Se você não for cursar em nenhuma dessas faculdades:</p>\n<ul>\n<li>ITA</li>\n<li>USP</li>\n<li>FIAP</li>\n<li>PUC</li>\n<li>mackenzie</li>\n<li>SPTech</li>\n<li>UFRJ</li>\n</ul>\n<p>(não necessáriamente em ordem de qualidade)</p>\n<p>Então f0da-s3 qual seja, não é nehuma relevante. Meus pêsames</p>\n<p>Essas são as faculdades com mais prestígio no mercado. Além de ter ou não faculdade ser uma forma de filtro em vagas, qual faculdade que você faz também é. Em algumas empresas eles tem faculdades favoritas, e as favoritas do universo de T.I. são essas.</p>\n<p>Mas calma calabreso, se você não está em nenhuma dessas não é o fim do mundo. Isso só faz diferença no quesito networking e facilidade em estágio pela carteirada do nome da faculdade, apenas isso.</p>\n<p><strong>NENHUMA FACULDADE IRÁ TE ENSINAR O QUE REALMENTE IMPORTA PARA O MERCADO!!!</strong></p>\n<p>Indepente da faculdade e curso que você fizer, você precisa estudar por fora de forma autodidata e é isso que torna a questão de qual faculdade fazer se torna meio f0da-s3.</p>\n<h3><a href=\"#indiação-e-networking\" aria-hidden=\"true\" class=\"anchor\" id=\"indiação-e-networking\"></a>Indiação e Networking</h3>\n<p>A nata do networkig está nessas instituições citadas anteriormente. Pois estão repleatas de donos e/ou filhos de donos empresas, empresas essa que usam algum tipo de sistema ou melhor ainda, são donos e/ou filhos de donos de empresas de T.I., consultoria, startaup que serão seus colegas de classe ou professores.</p>\n<p>Novamente, calma calabreso. Na sua unesquina ou federal qualquer também é possível fazer um bom networking, as faculdades tem programa de parceria com empresas e promovem feiras e eventos que fomentam o network, qualquer um faz networking em qualquer lugar. Networking é sobre saber ouvir, ser simples e manter-se visível.</p>\n<p>Te citarei dois casos de networks meus em difernetes contextos</p>\n<h4><a href=\"#internet\" aria-hidden=\"true\" class=\"anchor\" id=\"internet\"></a>Internet</h4>\n<p>Eu costumo manter atividade quase religiosa em comunidades de programadores no Discord, certo dia veio um dos membros da comunidade procurando alguém para fechar uma equipe para participar de um hackathon online. Nesse hackathon, mesmo não tendo ganho, foi onde nasceu o projeto da minha starup, além disso foi onde conhecei meus parceiros de equipe, atualmente sócios. Um desses sócios também é meu cliente, faço prestação de serviços tais como: automação, desenvolvimento, e hospedagem, para a empresa de engenharia dele.</p>\n<h4><a href=\"#sala-de-aula\" aria-hidden=\"true\" class=\"anchor\" id=\"sala-de-aula\"></a>Sala de aula</h4>\n<p>Eu sempre fui um bom aluno, participativo nas discussões em sala, sempre trazia perguntas provocativas, sempre extendia o papo depois da aula com os professores, não apenas sobre o conteúdo da aula, também de formas um pouco mais pessoais. Tentava ser mais que apenas um aluno, tentava tornar-me um amigo. Certo dia por feliz conincidência vejo ao longe a silueta de um ex-professor, me aproximo com a pergunta que assombr qualquer professor: &quot;lembra de mim?&quot;</p>\n<p>Conversamos uns 10 a 15 minutos atualizamos os acontecimentos da vida um do outro, trocamos Instagram. Nesse momento eu estava acho que no 2 ou 3 período da faculdade, no meio de 2025 paricipei de um hackathon de onde surguiu minha startup, fiz um post sobre, ele viu e convidou para participar de um projeto de pesquisa de HelthTech com visão computacional e IA.</p>\n<p>Fiz networking na sala de aula e na internet tenho outras diversas situações de network</p>\n<p>Para fazer networking no universo de T.I. não é difícil, basta destacar-se minimamente. No nosso universo está cheio dos esteriótipos do nerd que é super técnico, mas não consegue conversar com pessoas, tem dificuldade de olhar no olho, não se expressa bem. Então basta você saber ouvir, sorrir, manter-se visível e se comunicar de forma técnica só quando for com outo T.I.zinho.</p>\n<p>Caso você seja uma pessoa incapaz de socializar, leia o livro <a href=\"https://www.amazon.com.br/Como-fazer-amigos-influenciar-pessoas/dp/8543108683\">Como fazer amigos e influenciar pessoas</a> e aplique!</p>\n<h3><a href=\"#bolsa-de-pibic-e-pibit\" aria-hidden=\"true\" class=\"anchor\" id=\"bolsa-de-pibic-e-pibit\"></a>Bolsa de PIBIC e PIBIT</h3>\n<p>Caso não sáiba o que são, toma esse resumo do GPT</p>\n<p>PIBIC e PIBIT são programas voltados para estudantes de graduação que desejam iniciar na pesquisa ainda durante a faculdade, permitindo sair da teoria e começar a produzir conhecimento de forma estruturada.</p>\n<p>O PIBIC, Programa Institucional de Bolsas de Iniciação Científica, é focado na pesquisa acadêmica. Seu objetivo é desenvolver o pensamento científico, trabalhar com metodologia e, em muitos casos, gerar publicações. É mais alinhado com quem pretende seguir carreira acadêmica, como mestrado e doutorado.</p>\n<p>Já o PIBIT, Programa Institucional de Bolsas de Iniciação em Desenvolvimento Tecnológico e Inovação, tem uma abordagem mais prática. Ele busca transformar conhecimento em soluções aplicadas, como desenvolvimento de sistemas, produtos ou processos inovadores, sendo mais conectado ao mercado e à inovação.</p>\n<p>Também já me foi questionado por um jovem iludido sobre os projetos de pesquisa que seriam muito bons para seu currículo e que lhe geraria uma renda.</p>\n<p>Dada as definições, vamos no principal, dinheiro. A receita gerada desses projetos de pesquisa vem de bolsas, elas não são em quantidade suficiente para todos e também não são em valores altos a maioria não chega nem aos mil reais. Se você pensa na Federal só por causa desse dinheiro, já te jogo esse balde de água fria. Você focar em programas de estágio é muito mais vantajoso tanto na questão financeira e relevância no currículo.</p>\n<p>Se você está pensando no peso que dará ao seu currículo, será o peso de uma pena. Pois como um simpes estudante de gradução, você não terá aptidão técnica para fazer nada muito grandioso, o que impactara em você ter tarefas de baixa relevância, com exceção se você for um ponto fora da curva, mas se está lendo isso você não é. Esse projetos só darão relevância ao seu currículo caso você já esteja formado e tenha alguma experiência, o que te possibilita trabalhar em algo complexo.</p>\n<p>Esses programas só são recomendados para que tem interesse no meio científico e acadêmico, que a maioria dos devs estão cagando</p>\n<h2><a href=\"#qual-curso-fazer\" aria-hidden=\"true\" class=\"anchor\" id=\"qual-curso-fazer\"></a>Qual curso fazer?</h2>\n<p>Sinceramente, isso é outro f0da-s3. Independente do curso que você fizer, quando concluir todos irão sentar no mesmo lugar (lá ele), e escrever letrinhas coloridas, independente se no seu diploma tem escrito Engeharia de Software ou Sistemas para Internet</p>\n<p>O que realmente importa para você colocar na balança são: tempo do curso e seu objetivo de carreira</p>\n<h3><a href=\"#objetivo-de-carreira\" aria-hidden=\"true\" class=\"anchor\" id=\"objetivo-de-carreira\"></a>Objetivo de carreira</h3>\n<p>Se seu objetivo for seguir carreira acadêmica, quer focar nas titulações (mestrado, Ph.D, pós-doc), trabalhar em pesquisas (escrever artigos, apresentar seminários, etc). Nesse cenário Ciência da Computação (CC) é a melhor alternativa, pois te formará focando na parte científica.</p>\n<p>A única resalva é essa, mas se seu objetivo é ser dev pode fazer CC o qualquer outro, como já falei, todos irão sentar na mesma cadeira e exercer a mesma função.</p>\n<h3><a href=\"#tempo-do-curso\" aria-hidden=\"true\" class=\"anchor\" id=\"tempo-do-curso\"></a>Tempo do curso</h3>\n<p>Esse é um fator que deve ser bem analisado. Há formações mais curtas como Análise e Desenvolvimento de Sistemas (ADS), curso que eu fiz, que pega tudo que tem de mais importante no desenvolvimento de software e governança de T.I. retira o enchimento de linguiça formando o aluno em ~2 anos. Com essa formação você vai mais rápido para o mercado, também é vantajoso para quem quer ser concurseiro.\nPor outro lado você tem menos tempo para estudar de forma autodidata para ser minimamente competitivo no mercado quanod você se formar e menos tempo para procurar estágio. Nesses quesitos cursos como Ciência da Computação e Engenharia de Software, por exemplo, são mais vantajosos.</p>\n<p>Tirando essas considerações o que realmente muda na prática é o tempo que você vai passar em uma faculdade, o nome do curso no seu diploma, e sua experiência no curso, já que uns focam mais na matemática do que outros.</p>\n<h2><a href=\"#todos-os-cursos\" aria-hidden=\"true\" class=\"anchor\" id=\"todos-os-cursos\"></a>Todos os cursos</h2>\n<p>Aqui vai um resumo do GPT, mas muito bom do que você pode esperar de cada curso.</p>\n<h3><a href=\"#análise-e-desenvolvimento-de-sistemas-ads\" aria-hidden=\"true\" class=\"anchor\" id=\"análise-e-desenvolvimento-de-sistemas-ads\"></a>Análise e Desenvolvimento de Sistemas (ADS)</h3>\n<p>O curso de Análise e Desenvolvimento de Sistemas, conhecido como ADS, é o mais direto ao ponto. Trata-se de uma formação tecnológica, geralmente com duração entre dois e três anos, voltada para quem quer entrar rápido no mercado. As disciplinas giram em torno de lógica de programação, desenvolvimento web e mobile, banco de dados e construção de APIs. Existe também um contato inicial com engenharia de software, mas sem grande profundidade teórica. O foco aqui é execução: formar profissionais capazes de desenvolver sistemas funcionais no menor tempo possível. Por isso, é comum que egressos atuem como desenvolvedores front-end, back-end ou full-stack logo nos primeiros anos de carreira.</p>\n<h3><a href=\"#ciência-da-computação-cc\" aria-hidden=\"true\" class=\"anchor\" id=\"ciência-da-computação-cc\"></a>Ciência da Computação (CC)</h3>\n<p>Já o curso de Ciência da Computação segue uma linha completamente diferente. Ele é mais longo, mais denso e, honestamente, mais exigente. A base do curso está em algoritmos, estruturas de dados e matemática, incluindo cálculo e álgebra linear. Além disso, o aluno entra em contato com temas como inteligência artificial, compiladores e sistemas operacionais. O objetivo não é apenas ensinar a programar, mas desenvolver raciocínio computacional profundo. Isso abre portas para posições mais complexas, como engenharia de software em alto nível, machine learning e até pesquisa acadêmica. É o tipo de formação que exige mais esforço, mas também oferece mais amplitude de possibilidades no longo prazo.</p>\n<h3><a href=\"#engenharia-de-software\" aria-hidden=\"true\" class=\"anchor\" id=\"engenharia-de-software\"></a>Engenharia de Software</h3>\n<p>O curso de Engenharia de Software fica em um meio-termo interessante entre teoria e prática. Aqui, o foco não é só programar, mas entender como construir sistemas robustos e escaláveis. As disciplinas incluem arquitetura de software, padrões de projeto, testes, qualidade de código e metodologias ágeis. Também há uma preocupação maior com gestão de projetos e organização de equipes. O profissional formado nessa área tende a atuar como engenheiro de software, com potencial para evoluir para cargos como tech lead ou arquiteto de software, já que possui uma visão mais estruturada do desenvolvimento.</p>\n<h3><a href=\"#sistema-da-informação-si\" aria-hidden=\"true\" class=\"anchor\" id=\"sistema-da-informação-si\"></a>Sistema da Informação (SI)</h3>\n<p>Por outro lado, o curso de Sistemas de Informação traz uma abordagem mais voltada para o contexto empresarial. Além de programação e banco de dados, o aluno estuda processos de negócio, gestão de sistemas e governança de TI. Isso significa que ele não apenas desenvolve soluções, mas entende o problema que precisa ser resolvido dentro de uma organização. Esse perfil híbrido permite atuar tanto como desenvolvedor quanto como analista de sistemas ou até em funções mais estratégicas, conectando tecnologia e negócio.</p>\n<h3><a href=\"#engenharia-da-computação\" aria-hidden=\"true\" class=\"anchor\" id=\"engenharia-da-computação\"></a>Engenharia da Computação</h3>\n<p>Existe também o curso de Engenharia da Computação, que combina software com hardware. Aqui entram disciplinas como eletrônica, arquitetura de computadores e sistemas embarcados, além da programação em níveis mais baixos. É uma formação mais técnica e abrangente, indicada para quem tem interesse em trabalhar com dispositivos, IoT ou integração entre hardware e software. Para quem deseja seguir exclusivamente como desenvolvedor web, no entanto, pode ser uma escolha mais complexa do que o necessário.</p>\n<h3><a href=\"#outros\" aria-hidden=\"true\" class=\"anchor\" id=\"outros\"></a>Outros</h3>\n<p>Além desses, há formações mais especializadas, como Ciência de Dados, que foca em estatística, machine learning e análise de grandes volumes de dados. Nesse caminho, o profissional atua como cientista de dados, engenheiro de machine learning ou analista, lidando muito mais com modelos e previsões do que com desenvolvimento tradicional. Da mesma forma, cursos voltados para Banco de Dados aprofundam conhecimentos em modelagem, SQL avançado e performance, formando especialistas que atuam como engenheiros de dados ou DBAs. Já a área de Redes de Computadores direciona o aluno para infraestrutura, protocolos de comunicação, segurança e cloud computing, abrindo portas para carreiras em DevOps e engenharia de infraestrutura.</p>\n<p>No fim das contas, a escolha do curso define mais o ponto de partida do que o destino final. O mercado de tecnologia valoriza muito mais a capacidade de resolver problemas e construir soluções do que o nome específico da graduação. Um profissional de ADS pode, com prática e experiência, alcançar o mesmo nível técnico de alguém formado em Ciência da Computação. A diferença real está na profundidade da base e no tempo necessário para atingir determinados níveis de complexidade. Por isso, a decisão mais inteligente não é apenas “qual curso fazer”, mas “qual estratégia seguir para chegar onde você quer chegar”.</p>\n<h2><a href=\"#matemática\" aria-hidden=\"true\" class=\"anchor\" id=\"matemática\"></a>Matemática</h2>\n<p>Você não precisa ser o brabo da matemática muito menos gostar dela, você vai sofrer um pouco dependendo curso que escolher por causa das matérias de cálculo, mas no cotidiano da profissão você não vai usar. Salvo exceções de trabalho/área muito específicica, mas de na maioria das vezes não usará.</p>\n<p>Caso você não tenha gostado ou discorde, deixo que <a href=\"https://pt.wikipedia.org/wiki/Ariano_Suassuna\">Ariano Suassuna</a> responda por mim:</p>\n<blockquote>\n<p>A humanidade se divide em dois grupos: os que concordam comigo e os errados.<br />\n-- Ariano Suassuna</p>\n</blockquote>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-03-23T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "carreira"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//tudo-sobre-maquinas-virtuais.html",
      "url": "https://meus10centavos.vercel.app//tudo-sobre-maquinas-virtuais.html",
      "title": "Tudo sobre maquinas virtuais",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h2><a href=\"#introdução\" aria-hidden=\"true\" class=\"anchor\" id=\"introdução\"></a>Introdução</h2>\n<p>As máquinas virtuais (VMs) revolucionaram a forma como utilizamos recursos computacionais. Seja você um desenvolvedor, administrador de sistemas ou simplesmente um entusiasta de tecnologia, entender o funcionamento das VMs é essencial no cenário tecnológico atual. Neste guia completo, vamos explorar tudo o que você precisa saber sobre máquinas virtuais.</p>\n<h2><a href=\"#o-que-são-máquinas-virtuais\" aria-hidden=\"true\" class=\"anchor\" id=\"o-que-são-máquinas-virtuais\"></a>O Que São Máquinas Virtuais?</h2>\n<p>Uma máquina virtual é essencialmente um computador dentro de outro computador. Trata-se de um ambiente de software que emula um sistema computacional completo, incluindo processador, memória, armazenamento e dispositivos de rede. As VMs permitem executar múltiplos sistemas operacionais simultaneamente em um único hardware físico.</p>\n<h2><a href=\"#a-mágica-da-virtualização\" aria-hidden=\"true\" class=\"anchor\" id=\"a-mágica-da-virtualização\"></a>A Mágica da Virtualização</h2>\n<p>A tecnologia que torna as máquinas virtuais possíveis é chamada de virtualização. Através de um software chamado hypervisor, o hardware físico é abstraído e dividido em recursos virtuais que podem ser alocados para diferentes VMs. Cada máquina virtual opera de forma independente, sem interferir nas demais.</p>\n<h2><a href=\"#tipos-de-virtualização\" aria-hidden=\"true\" class=\"anchor\" id=\"tipos-de-virtualização\"></a>Tipos de Virtualização</h2>\n<h3><a href=\"#1-virtualização-completa-full-virtualization\" aria-hidden=\"true\" class=\"anchor\" id=\"1-virtualização-completa-full-virtualization\"></a>1. Virtualização Completa (Full Virtualization)</h3>\n<p>Na virtualização completa, o sistema operacional convidado (guest) não precisa ser modificado e não tem conhecimento de que está sendo executado em um ambiente virtual. O hypervisor intercepta todas as chamadas do sistema e as traduz conforme necessário.\nExemplos: VMware Workstation, VirtualBox, KVM</p>\n<h3><a href=\"#2-paravirtualização\" aria-hidden=\"true\" class=\"anchor\" id=\"2-paravirtualização\"></a>2. Paravirtualização</h3>\n<p>Neste modelo, o sistema operacional convidado é modificado para comunicar-se diretamente com o hypervisor, resultando em melhor desempenho. O guest &quot;sabe&quot; que está virtualizado e coopera com o hypervisor.\nExemplos: Xen, Hyper-V (em alguns modos)</p>\n<h3><a href=\"#3-virtualização-em-nível-de-sistema-operacional-containers\" aria-hidden=\"true\" class=\"anchor\" id=\"3-virtualização-em-nível-de-sistema-operacional-containers\"></a>3. Virtualização em Nível de Sistema Operacional (Containers)</h3>\n<p>Embora tecnicamente diferente de VMs tradicionais, os containers compartilham o kernel do sistema operacional host, mas isolam processos e recursos. São mais leves e rápidos que VMs completas.\nExemplos: Docker, LXC, Podman</p>\n<h2><a href=\"#hypervisors-o-coração-da-virtualização\" aria-hidden=\"true\" class=\"anchor\" id=\"hypervisors-o-coração-da-virtualização\"></a>Hypervisors: O Coração da Virtualização</h2>\n<h3><a href=\"#hypervisors-tipo-1-bare-metal\" aria-hidden=\"true\" class=\"anchor\" id=\"hypervisors-tipo-1-bare-metal\"></a>Hypervisors Tipo 1 (Bare-Metal)</h3>\n<p>Executam diretamente sobre o hardware físico, sem necessidade de um sistema operacional host. São mais eficientes e utilizados principalmente em ambientes empresariais.\n<strong>Principais opções:</strong></p>\n<ul>\n<li>VMware ESXi</li>\n<li>Microsoft Hyper-V</li>\n<li>Citrix XenServer</li>\n<li>KVM (Kernel-based Virtual Machine)</li>\n<li>Proxmox VE</li>\n</ul>\n<h2><a href=\"#melhores-opções-de-virtualização-por-sistema-operacional\" aria-hidden=\"true\" class=\"anchor\" id=\"melhores-opções-de-virtualização-por-sistema-operacional\"></a>Melhores Opções de Virtualização por Sistema Operacional</h2>\n<p>Escolher o hypervisor correto para seu sistema operacional é fundamental para obter máximo desempenho. Cada plataforma tem suas particularidades e tecnologias nativas que podem fazer grande diferença.</p>\n<h3><a href=\"#linux-a-plataforma-mais-flexível\" aria-hidden=\"true\" class=\"anchor\" id=\"linux-a-plataforma-mais-flexível\"></a>Linux: A Plataforma Mais Flexível</h3>\n<p>O Linux é sem dúvida o sistema operacional mais versátil para virtualização, oferecendo desde soluções enterprise até ferramentas leves para desenvolvedores.</p>\n<h4><a href=\"#kvm-kernel-based-virtual-machine---a-melhor-escolha\" aria-hidden=\"true\" class=\"anchor\" id=\"kvm-kernel-based-virtual-machine---a-melhor-escolha\"></a>KVM (Kernel-based Virtual Machine) - A Melhor Escolha</h4>\n<p><strong>Por que KVM é superior no Linux:</strong></p>\n<p>KVM está integrado diretamente ao kernel Linux desde a versão 2.6.20, transformando o próprio Linux em um hypervisor Tipo 1. Isso proporciona desempenho próximo ao nativo, frequentemente alcançando 95-98% da performance do hardware físico.</p>\n<p><strong>Vantagens técnicas:</strong></p>\n<ul>\n<li>Utiliza as extensões de virtualização do processador (Intel VT-x/AMD-V) de forma nativa</li>\n<li>Zero overhead de emulação para instruções do processador</li>\n<li>Suporte para nested virtualization (VMs dentro de VMs)</li>\n<li>Integração perfeita com QEMU para emulação de dispositivos</li>\n<li>Suporte a virtio drivers para I/O acelerado (disco e rede)</li>\n<li>Gerenciamento através de libvirt, virsh ou interfaces gráficas como Virt-Manager</li>\n</ul>\n<p><strong>Quando usar KVM:</strong></p>\n<ul>\n<li>Ambientes de produção e servidores</li>\n<li>Quando você precisa do máximo desempenho possível</li>\n<li>Infraestrutura on-premises que requer escalabilidade</li>\n<li>Laboratórios de desenvolvimento profissional</li>\n</ul>\n<p><strong>Instalação básica:</strong></p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-c># Ubuntu/Debian</a-c>\n<a-f>sudo</a-f> apt install qemu-kvm libvirt-daemon-system virtinst virt-manager\n\n<a-c># Fedora/RHEL/CentOS</a-c>\n<a-f>sudo</a-f> dnf install @virtualization\n\n<a-c># Arch Linux</a-c>\n<a-f>sudo</a-f> pacman <a-co>-S</a-co> qemu libvirt virt-manager</code></pre>\n<h4><a href=\"#virtualbox---para-facilidade-de-uso\" aria-hidden=\"true\" class=\"anchor\" id=\"virtualbox---para-facilidade-de-uso\"></a>VirtualBox - Para Facilidade de Uso</h4>\n<p>Embora KVM seja superior em performance, VirtualBox tem seu lugar no Linux por sua interface gráfica intuitiva e portabilidade. É ideal para usuários que migram do Windows ou Mac e querem algo familiar.</p>\n<p><strong>Vantagens:</strong></p>\n<ul>\n<li>Interface gráfica amigável</li>\n<li>Fácil compartilhamento de VMs entre diferentes sistemas</li>\n<li>Snapshots simples de gerenciar</li>\n<li>Guest Additions bem desenvolvidas</li>\n</ul>\n<p><strong>Desvantagem:</strong> Performance 10-15% inferior ao KVM devido à camada adicional de abstração.</p>\n<h4><a href=\"#proxmox-ve---para-home-labs-e-pequenas-empresas\" aria-hidden=\"true\" class=\"anchor\" id=\"proxmox-ve---para-home-labs-e-pequenas-empresas\"></a>Proxmox VE - Para Home Labs e Pequenas Empresas</h4>\n<p>Se você quer transformar uma máquina Linux em um servidor de virtualização completo com interface web, Proxmox é a escolha ideal. Combina KVM para VMs e LXC para containers.</p>\n<p><strong>Por que Proxmox:</strong></p>\n<ul>\n<li>Gerenciamento via web browser</li>\n<li>Clustering e alta disponibilidade integrados</li>\n<li>Backup automatizado</li>\n<li>Migração ao vivo de VMs (live migration)</li>\n<li>Totalmente gratuito e open-source</li>\n</ul>\n<h3><a href=\"#windows-performance-nativa-com-hyper-v\" aria-hidden=\"true\" class=\"anchor\" id=\"windows-performance-nativa-com-hyper-v\"></a>Windows: Performance Nativa com Hyper-V</h3>\n<p>No Windows, a escolha entre Hyper-V e soluções de terceiros depende de suas necessidades específicas.</p>\n<h4><a href=\"#hyper-v---a-escolha-profissional\" aria-hidden=\"true\" class=\"anchor\" id=\"hyper-v---a-escolha-profissional\"></a>Hyper-V - A Escolha Profissional</h4>\n<p><strong>Por que Hyper-V é a melhor opção no Windows:</strong></p>\n<p>Hyper-V é um hypervisor Tipo 1 integrado ao Windows 10/11 Pro e Windows Server. Quando habilitado, ele se torna a camada base do sistema, e até mesmo o próprio Windows passa a rodar como uma VM privilegiada.</p>\n<p><strong>Vantagens críticas:</strong></p>\n<ul>\n<li>Performance quase nativa (98-99%) por ser hypervisor bare-metal</li>\n<li>Integração perfeita com Windows e Active Directory</li>\n<li>Suporte para Dynamic Memory (ajuste automático de RAM)</li>\n<li>Enhanced Session Mode para melhor experiência de desktop</li>\n<li>Nested virtualization para desenvolvedores que usam Docker/WSL2</li>\n<li>Checkpoint (snapshots) automáticos e agendados</li>\n</ul>\n<p><strong>Requisitos:</strong></p>\n<ul>\n<li>Windows 10/11 Pro, Enterprise ou Education (não funciona em Home)</li>\n<li>Processador com SLAT (Second Level Address Translation)</li>\n<li>Mínimo 4GB de RAM (8GB recomendado)</li>\n</ul>\n<p><strong>Por que escolher Hyper-V:</strong></p>\n<ul>\n<li>Você trabalha profissionalmente com infraestrutura Windows</li>\n<li>Precisa integração com System Center ou Azure</li>\n<li>Quer máximo desempenho sem software de terceiros</li>\n<li>Desenvolve para ambientes Windows Server</li>\n</ul>\n<p><strong>Habilitação rápida:</strong></p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-powershell\"><a-c># Execute como Administrador</a-c>\n<a-f>Enable-WindowsOptionalFeature</a-f> -Online -FeatureName Microsoft-Hyper-V -All</code></pre>\n<h4><a href=\"#vmware-workstation-pro---para-profissionais-multiplataforma\" aria-hidden=\"true\" class=\"anchor\" id=\"vmware-workstation-pro---para-profissionais-multiplataforma\"></a>VMware Workstation Pro - Para Profissionais Multiplataforma</h4>\n<p>VMware Workstation oferece recursos avançados e melhor suporte para Linux guests no Windows.</p>\n<p><strong>Vantagens sobre Hyper-V:</strong></p>\n<ul>\n<li>Interface mais polida e intuitiva</li>\n<li>Melhor suporte para distribuições Linux exóticas</li>\n<li>Snapshots mais flexíveis e rápidos</li>\n<li>Unity Mode (integra aplicações da VM com Windows)</li>\n<li>Suporte superior para USB devices</li>\n</ul>\n<p><strong>Desvantagem:</strong> É pago (aproximadamente $200) e tem performance ligeiramente inferior ao Hyper-V.</p>\n<h4><a href=\"#virtualbox---a-opção-gratuita\" aria-hidden=\"true\" class=\"anchor\" id=\"virtualbox---a-opção-gratuita\"></a>VirtualBox - A Opção Gratuita</h4>\n<p>Para usuários domésticos com Windows Home ou quem precisa de algo simples e gratuito, VirtualBox continua sendo uma excelente escolha.</p>\n<p><strong>Ideal para:</strong></p>\n<ul>\n<li>Windows 10/11 Home (que não tem Hyper-V)</li>\n<li>Testes ocasionais</li>\n<li>Aprendizado e experimentação</li>\n<li>Quando você precisa mover VMs entre Windows, Linux e Mac</li>\n</ul>\n<p><strong>Performance:</strong> Aproximadamente 85-90% comparado ao Hyper-V, mas suficiente para a maioria dos casos de uso não-profissionais.</p>\n<h3><a href=\"#macos-otimizando-para-silicon-e-intel\" aria-hidden=\"true\" class=\"anchor\" id=\"macos-otimizando-para-silicon-e-intel\"></a>macOS: Otimizando para Silicon e Intel</h3>\n<p>O macOS apresenta desafios únicos, especialmente desde a transição para chips Apple Silicon (M1/M2/M3/M4).</p>\n<h4><a href=\"#para-macs-com-apple-silicon-m1m2m3m4\" aria-hidden=\"true\" class=\"anchor\" id=\"para-macs-com-apple-silicon-m1m2m3m4\"></a>Para Macs com Apple Silicon (M1/M2/M3/M4)</h4>\n<p>A arquitetura ARM do Apple Silicon mudou completamente o cenário de virtualização.</p>\n<p><strong>UTM + QEMU - A Melhor Escolha Gratuita</strong></p>\n<p><strong>Por que UTM é superior no Apple Silicon:</strong></p>\n<ul>\n<li>Baseado em QEMU otimizado para ARM64</li>\n<li>Virtualização nativa de ARM usando Hypervisor.framework da Apple</li>\n<li>Performance excelente para VMs ARM (Linux ARM, Windows 11 ARM)</li>\n<li>Interface nativa para macOS</li>\n<li>Completamente gratuito e open-source</li>\n</ul>\n<p><strong>Performance:</strong> VMs ARM alcançam 90-95% de performance nativa. VMs x86 (via emulação) são significativamente mais lentas (40-60%).</p>\n<p><strong>Melhor para:</strong></p>\n<ul>\n<li>Linux ARM (Ubuntu, Debian, Fedora ARM)</li>\n<li>Windows 11 ARM (com algumas limitações)</li>\n<li>Desenvolvedores que trabalham com arquitetura ARM</li>\n</ul>\n<p><strong>Limitação crítica:</strong> Emulação de x86/x64 é lenta. Se você precisa rodar Windows x64 ou Linux x64 regularmente, considere VMware Fusion ou Parallels.</p>\n<p><strong>VMware Fusion Player - Grátis para Uso Pessoal</strong></p>\n<p>Desde 2024, VMware Fusion Player tornou-se gratuito para uso pessoal e oferece boa performance no Apple Silicon através de sua camada de virtualização híbrida.</p>\n<p><strong>Vantagens:</strong></p>\n<ul>\n<li>Melhor compatibilidade com VMs x86/x64 (ainda via emulação, mas otimizada)</li>\n<li>Interface profissional e madura</li>\n<li>Integração com VMware vSphere</li>\n<li>Unity Mode (integra aplicações da VM com macOS)</li>\n</ul>\n<p><strong>Performance:</strong> VMs ARM (95%), VMs x86 emuladas (50-70%).</p>\n<p><strong>Parallels Desktop - A Opção Premium</strong></p>\n<p><strong>Por que Parallels é a melhor opção paga para Apple Silicon:</strong></p>\n<p>Parallels investiu pesadamente em otimizações para Apple Silicon e oferece a melhor experiência geral, especialmente para Windows.</p>\n<p><strong>Vantagens únicas:</strong></p>\n<ul>\n<li>Melhor performance para Windows 11 ARM (85-90% da velocidade nativa)</li>\n<li>Rosetta 2 integration para rodar aplicações x86 no Windows ARM</li>\n<li>Coherence Mode (aplicações Windows aparecem como apps macOS nativos)</li>\n<li>Otimizações de gráficos e bateria superiores</li>\n<li>Suporte técnico profissional</li>\n</ul>\n<p><strong>Custo:</strong> Aproximadamente $100/ano (assinatura).</p>\n<p><strong>Ideal para:</strong></p>\n<ul>\n<li>Profissionais que precisam usar Windows diariamente no Mac</li>\n<li>Desenvolvedores que precisam testar em Windows</li>\n<li>Usuários que valorizam facilidade de uso sobre custo</li>\n</ul>\n<h4><a href=\"#para-macs-intel-x86\" aria-hidden=\"true\" class=\"anchor\" id=\"para-macs-intel-x86\"></a>Para Macs Intel (x86)</h4>\n<p>Em Macs Intel, as opções são mais tradicionais e similares ao Windows.</p>\n<p><strong>VMware Fusion - Melhor Gratuita</strong></p>\n<p>Performance excelente para VMs x86/x64, interface profissional, integração com ferramentas VMware.</p>\n<p><strong>Parallels Desktop - Melhor Paga</strong></p>\n<p>Melhor experiência de usuário, performance superior para gráficos 3D, DirectX otimizado para jogos casuais.</p>\n<p><strong>VirtualBox - Alternativa Gratuita</strong></p>\n<p>Funciona bem mas com performance 10-15% inferior. Boa para aprendizado e testes ocasionais.</p>\n<h2><a href=\"#comparação-de-performance\" aria-hidden=\"true\" class=\"anchor\" id=\"comparação-de-performance\"></a>Comparação de Performance</h2>\n<h3><a href=\"#benchmark-típico-tempo-de-boot-linux-ubuntu-2204-em-hardware-idêntico\" aria-hidden=\"true\" class=\"anchor\" id=\"benchmark-típico-tempo-de-boot-linux-ubuntu-2204-em-hardware-idêntico\"></a>Benchmark Típico (tempo de boot Linux Ubuntu 22.04 em hardware idêntico):</h3>\n<p><strong>Linux:</strong></p>\n<ul>\n<li>KVM: 8 segundos</li>\n<li>VirtualBox: 12 segundos</li>\n<li>VMware: 10 segundos</li>\n</ul>\n<p><strong>Windows:</strong></p>\n<ul>\n<li>Hyper-V: 9 segundos</li>\n<li>VMware Workstation: 11 segundos</li>\n<li>VirtualBox: 14 segundos</li>\n</ul>\n<p><strong>macOS (Apple Silicon M2):</strong></p>\n<ul>\n<li>UTM (ARM Linux): 7 segundos</li>\n<li>Parallels (ARM Linux): 8 segundos</li>\n<li>VMware Fusion (ARM Linux): 9 segundos</li>\n<li>UTM (x86 Linux emulado): 45 segundos</li>\n</ul>\n<h2><a href=\"#recomendações-finais-por-caso-de-uso\" aria-hidden=\"true\" class=\"anchor\" id=\"recomendações-finais-por-caso-de-uso\"></a>Recomendações Finais por Caso de Uso</h2>\n<h3><a href=\"#para-máximo-desempenho-absoluto\" aria-hidden=\"true\" class=\"anchor\" id=\"para-máximo-desempenho-absoluto\"></a>Para Máximo Desempenho Absoluto:</h3>\n<ul>\n<li><strong>Linux:</strong> KVM com virtio drivers</li>\n<li><strong>Windows:</strong> Hyper-V</li>\n<li><strong>macOS Apple Silicon:</strong> UTM (para ARM) ou Parallels (para Windows ARM)</li>\n<li><strong>macOS Intel:</strong> VMware Fusion ou Parallels</li>\n</ul>\n<h3><a href=\"#para-facilidade-de-uso\" aria-hidden=\"true\" class=\"anchor\" id=\"para-facilidade-de-uso\"></a>Para Facilidade de Uso:</h3>\n<ul>\n<li><strong>Todas as plataformas:</strong> VirtualBox (interface consistente)</li>\n<li><strong>Windows:</strong> Hyper-V Manager (se já tem Pro)</li>\n<li><strong>macOS:</strong> Parallels Desktop</li>\n</ul>\n<h3><a href=\"#para-profissionaisempresas\" aria-hidden=\"true\" class=\"anchor\" id=\"para-profissionaisempresas\"></a>Para Profissionais/Empresas:</h3>\n<ul>\n<li><strong>Linux:</strong> Proxmox VE ou KVM com oVirt</li>\n<li><strong>Windows:</strong> Hyper-V com System Center</li>\n<li><strong>macOS:</strong> Parallels Desktop Pro</li>\n</ul>\n<h3><a href=\"#para-desenvolvimento\" aria-hidden=\"true\" class=\"anchor\" id=\"para-desenvolvimento\"></a>Para Desenvolvimento:</h3>\n<ul>\n<li><strong>Linux:</strong> KVM ou Docker (para containers)</li>\n<li><strong>Windows:</strong> Hyper-V + WSL2 ou Docker Desktop</li>\n<li><strong>macOS:</strong> Docker Desktop + UTM/Parallels para VMs completas</li>\n</ul>\n<h3><a href=\"#para-aprendizadoestudantes\" aria-hidden=\"true\" class=\"anchor\" id=\"para-aprendizadoestudantes\"></a>Para Aprendizado/Estudantes:</h3>\n<ul>\n<li><strong>Todas as plataformas:</strong> VirtualBox (gratuito, portável, simples)</li>\n</ul>\n<h2><a href=\"#vantagens-das-máquinas-virtuais\" aria-hidden=\"true\" class=\"anchor\" id=\"vantagens-das-máquinas-virtuais\"></a>Vantagens das Máquinas Virtuais</h2>\n<h3><a href=\"#consolidação-de-servidores\" aria-hidden=\"true\" class=\"anchor\" id=\"consolidação-de-servidores\"></a>Consolidação de Servidores</h3>\n<p>Múltiplos servidores virtuais podem rodar em um único servidor físico, reduzindo custos com hardware, energia e refrigeração. Empresas podem reduzir sua infraestrutura física em até 80%.</p>\n<h3><a href=\"#isolamento-e-segurança\" aria-hidden=\"true\" class=\"anchor\" id=\"isolamento-e-segurança\"></a>Isolamento e Segurança</h3>\n<p>Cada VM opera em um ambiente isolado. Se uma VM for comprometida por malware, as outras permanecem protegidas. Isso é especialmente útil para testes de software e ambientes de desenvolvimento.</p>\n<h3><a href=\"#snapshots-e-backup\" aria-hidden=\"true\" class=\"anchor\" id=\"snapshots-e-backup\"></a>Snapshots e Backup</h3>\n<p>VMs podem ter &quot;fotografias&quot; (snapshots) de seu estado em determinado momento. Se algo der errado, é possível reverter para um estado anterior em segundos. Backups completos de VMs também são mais simples de gerenciar.</p>\n<h3><a href=\"#portabilidade\" aria-hidden=\"true\" class=\"anchor\" id=\"portabilidade\"></a>Portabilidade</h3>\n<p>VMs podem ser facilmente movidas entre diferentes hosts físicos, facilitando migração, disaster recovery e balanceamento de carga. Uma VM criada em um servidor pode ser transferida para outro sem grandes complicações.</p>\n<h3><a href=\"#ambientes-de-teste\" aria-hidden=\"true\" class=\"anchor\" id=\"ambientes-de-teste\"></a>Ambientes de Teste</h3>\n<p>Desenvolvedores podem criar réplicas exatas de ambientes de produção para testes, sem risco de afetar sistemas reais. É possível testar atualizações, patches e novos softwares de forma segura.</p>\n<h3><a href=\"#economia-de-recursos\" aria-hidden=\"true\" class=\"anchor\" id=\"economia-de-recursos\"></a>Economia de Recursos</h3>\n<p>Ao invés de ter um servidor físico para cada aplicação ou serviço, você pode executar dezenas de VMs em um único servidor potente, otimizando o uso de recursos.</p>\n<h2><a href=\"#desvantagens-e-limitações\" aria-hidden=\"true\" class=\"anchor\" id=\"desvantagens-e-limitações\"></a>Desvantagens e Limitações</h2>\n<h3><a href=\"#overhead-de-desempenho\" aria-hidden=\"true\" class=\"anchor\" id=\"overhead-de-desempenho\"></a>Overhead de Desempenho</h3>\n<p>Há uma camada adicional entre o hardware e o sistema operacional, o que pode resultar em perda de desempenho de 5% a 15%, dependendo da carga de trabalho.</p>\n<h3><a href=\"#complexidade-de-gerenciamento\" aria-hidden=\"true\" class=\"anchor\" id=\"complexidade-de-gerenciamento\"></a>Complexidade de Gerenciamento</h3>\n<p>Ambientes com muitas VMs exigem ferramentas de gerenciamento sofisticadas e conhecimento especializado. A curva de aprendizado pode ser íngreme.</p>\n<h3><a href=\"#requisitos-de-hardware\" aria-hidden=\"true\" class=\"anchor\" id=\"requisitos-de-hardware\"></a>Requisitos de Hardware</h3>\n<p>Para executar múltiplas VMs, é necessário hardware robusto com bastante memória RAM, processadores potentes e armazenamento rápido.</p>\n<h3><a href=\"#licenciamento\" aria-hidden=\"true\" class=\"anchor\" id=\"licenciamento\"></a>Licenciamento</h3>\n<p>Dependendo do software utilizado, os custos de licenciamento podem ser significativos, especialmente em ambientes corporativos.</p>\n<h3><a href=\"#dependência-do-hypervisor\" aria-hidden=\"true\" class=\"anchor\" id=\"dependência-do-hypervisor\"></a>Dependência do Hypervisor</h3>\n<p>Se o hypervisor apresentar problemas, todas as VMs hospedadas nele são afetadas. Isso exige planejamento cuidadoso de redundância e alta disponibilidade.</p>\n<h2><a href=\"#casos-de-uso-práticos\" aria-hidden=\"true\" class=\"anchor\" id=\"casos-de-uso-práticos\"></a>Casos de Uso Práticos</h2>\n<h3><a href=\"#desenvolvimento-de-software\" aria-hidden=\"true\" class=\"anchor\" id=\"desenvolvimento-de-software\"></a>Desenvolvimento de Software</h3>\n<p>Desenvolvedores podem manter ambientes separados para diferentes projetos, com versões específicas de linguagens, bibliotecas e ferramentas, sem conflitos.</p>\n<h3><a href=\"#laboratórios-de-testes\" aria-hidden=\"true\" class=\"anchor\" id=\"laboratórios-de-testes\"></a>Laboratórios de Testes</h3>\n<p>Profissionais de segurança e estudantes podem criar laboratórios completos para praticar hacking ético, testar exploits e estudar malware de forma segura.</p>\n<h3><a href=\"#servidores-corporativos\" aria-hidden=\"true\" class=\"anchor\" id=\"servidores-corporativos\"></a>Servidores Corporativos</h3>\n<p>Empresas executam servidores de email, banco de dados, aplicações web e outros serviços em VMs, facilitando gerenciamento e escalabilidade.</p>\n<h3><a href=\"#cloud-computing\" aria-hidden=\"true\" class=\"anchor\" id=\"cloud-computing\"></a>Cloud Computing</h3>\n<p>Praticamente todos os serviços de nuvem (AWS, Azure, Google Cloud) utilizam virtualização para fornecer recursos computacionais aos clientes.</p>\n<h3><a href=\"#desktop-virtual-vdi\" aria-hidden=\"true\" class=\"anchor\" id=\"desktop-virtual-vdi\"></a>Desktop Virtual (VDI)</h3>\n<p>Empresas podem fornecer desktops virtuais aos funcionários, permitindo acesso remoto seguro e centralização do gerenciamento.</p>\n<h2><a href=\"#como-começar-com-máquinas-virtuais\" aria-hidden=\"true\" class=\"anchor\" id=\"como-começar-com-máquinas-virtuais\"></a>Como Começar com Máquinas Virtuais</h2>\n<h3><a href=\"#passo-1-escolha-um-hypervisor\" aria-hidden=\"true\" class=\"anchor\" id=\"passo-1-escolha-um-hypervisor\"></a>Passo 1: Escolha um Hypervisor</h3>\n<p>Para iniciantes, recomendo começar com <strong>VirtualBox</strong> (gratuito e open-source) ou <strong>VMware Workstation Player</strong> (versão gratuita para uso não comercial).</p>\n<h3><a href=\"#passo-2-requisitos-de-sistema\" aria-hidden=\"true\" class=\"anchor\" id=\"passo-2-requisitos-de-sistema\"></a>Passo 2: Requisitos de Sistema</h3>\n<p>Certifique-se de que seu computador atende aos requisitos:</p>\n<ul>\n<li>Processador com suporte a virtualização (Intel VT-x ou AMD-V)</li>\n<li>Mínimo de 8GB de RAM (16GB ou mais recomendado)</li>\n<li>Espaço em disco: pelo menos 50GB livres por VM</li>\n<li>Sistema operacional de 64 bits</li>\n</ul>\n<h3><a href=\"#passo-3-habilite-a-virtualização-na-bios\" aria-hidden=\"true\" class=\"anchor\" id=\"passo-3-habilite-a-virtualização-na-bios\"></a>Passo 3: Habilite a Virtualização na BIOS</h3>\n<p>Entre na BIOS/UEFI do seu computador e habilite a tecnologia de virtualização (geralmente chamada de Intel VT-x, AMD-V ou SVM).</p>\n<h3><a href=\"#passo-4-instale-o-hypervisor\" aria-hidden=\"true\" class=\"anchor\" id=\"passo-4-instale-o-hypervisor\"></a>Passo 4: Instale o Hypervisor</h3>\n<p>Baixe e instale o hypervisor escolhido seguindo as instruções do fabricante. O processo é geralmente simples e direto.</p>\n<h3><a href=\"#passo-5-crie-sua-primeira-vm\" aria-hidden=\"true\" class=\"anchor\" id=\"passo-5-crie-sua-primeira-vm\"></a>Passo 5: Crie Sua Primeira VM</h3>\n<ol>\n<li>Abra o hypervisor</li>\n<li>Clique em &quot;Nova&quot; ou &quot;Create New Virtual Machine&quot;</li>\n<li>Escolha o sistema operacional que deseja instalar</li>\n<li>Aloque recursos (RAM, CPU, disco)</li>\n<li>Monte a ISO do sistema operacional</li>\n<li>Inicie a VM e siga o processo de instalação</li>\n</ol>\n<h3><a href=\"#passo-6-instale-guest-additionstools\" aria-hidden=\"true\" class=\"anchor\" id=\"passo-6-instale-guest-additionstools\"></a>Passo 6: Instale Guest Additions/Tools</h3>\n<p>Após instalar o sistema operacional, instale as ferramentas de integração (Guest Additions no VirtualBox, VMware Tools no VMware) para melhor desempenho e funcionalidades adicionais.</p>\n<h2><a href=\"#melhores-práticas\" aria-hidden=\"true\" class=\"anchor\" id=\"melhores-práticas\"></a>Melhores Práticas</h2>\n<h3><a href=\"#alocação-de-recursos\" aria-hidden=\"true\" class=\"anchor\" id=\"alocação-de-recursos\"></a>Alocação de Recursos</h3>\n<p>Não aloque todos os recursos do host para uma VM. Deixe sempre recursos disponíveis para o sistema operacional host. Uma boa regra é usar no máximo 75% da RAM disponível para VMs.</p>\n<h3><a href=\"#snapshots-inteligentes\" aria-hidden=\"true\" class=\"anchor\" id=\"snapshots-inteligentes\"></a>Snapshots Inteligentes</h3>\n<p>Use snapshots antes de fazer mudanças importantes, mas não mantenha muitos snapshots ativos, pois eles consomem espaço e podem afetar o desempenho.</p>\n<h3><a href=\"#backups-regulares\" aria-hidden=\"true\" class=\"anchor\" id=\"backups-regulares\"></a>Backups Regulares</h3>\n<p>Mesmo com snapshots, mantenha backups regulares das VMs importantes. Exporte as VMs para locais seguros periodicamente.</p>\n<h3><a href=\"#segmentação-de-rede\" aria-hidden=\"true\" class=\"anchor\" id=\"segmentação-de-rede\"></a>Segmentação de Rede</h3>\n<p>Configure redes virtuais apropriadas para isolar VMs quando necessário. Use NAT para VMs que precisam acessar a internet, e rede interna para comunicação entre VMs.</p>\n<h3><a href=\"#atualizações\" aria-hidden=\"true\" class=\"anchor\" id=\"atualizações\"></a>Atualizações</h3>\n<p>Mantenha tanto o hypervisor quanto os sistemas operacionais convidados atualizados com os patches de segurança mais recentes.</p>\n<h3><a href=\"#documentação\" aria-hidden=\"true\" class=\"anchor\" id=\"documentação\"></a>Documentação</h3>\n<p>Documente a configuração de cada VM, incluindo propósito, recursos alocados e dependências. Isso facilitará muito a manutenção futura.</p>\n<h2><a href=\"#tecnologias-relacionadas\" aria-hidden=\"true\" class=\"anchor\" id=\"tecnologias-relacionadas\"></a>Tecnologias Relacionadas</h2>\n<h3><a href=\"#containers-vs-máquinas-virtuais\" aria-hidden=\"true\" class=\"anchor\" id=\"containers-vs-máquinas-virtuais\"></a>Containers vs Máquinas Virtuais</h3>\n<p>Enquanto VMs virtualizam o hardware completo, containers virtualizam apenas o sistema operacional. Containers são mais leves e iniciam mais rápido, mas VMs oferecem isolamento mais robusto.</p>\n<h3><a href=\"#computação-em-nuvem\" aria-hidden=\"true\" class=\"anchor\" id=\"computação-em-nuvem\"></a>Computação em Nuvem</h3>\n<p>A nuvem é construída sobre virtualização. AWS EC2, Azure VMs e Google Compute Engine são essencialmente VMs alugadas executando em datacenters massivos.</p>\n<h3><a href=\"#kubernetes-e-orquestração\" aria-hidden=\"true\" class=\"anchor\" id=\"kubernetes-e-orquestração\"></a>Kubernetes e Orquestração</h3>\n<p>Kubernetes gerencia containers, mas pode também gerenciar VMs através de projetos como KubeVirt, unindo o melhor dos dois mundos.</p>\n<h2><a href=\"#ferramentas-e-recursos-úteis\" aria-hidden=\"true\" class=\"anchor\" id=\"ferramentas-e-recursos-úteis\"></a>Ferramentas e Recursos Úteis</h2>\n<h3><a href=\"#gerenciamento-de-vms\" aria-hidden=\"true\" class=\"anchor\" id=\"gerenciamento-de-vms\"></a>Gerenciamento de VMs</h3>\n<ul>\n<li><strong>Vagrant:</strong> Automação de criação e configuração de VMs</li>\n<li><strong>Terraform:</strong> Infrastructure as Code para ambientes virtualizados</li>\n<li><strong>Ansible:</strong> Automação de configuração de VMs</li>\n<li><strong>vCenter:</strong> Gerenciamento centralizado para VMware</li>\n</ul>\n<h3><a href=\"#monitoramento\" aria-hidden=\"true\" class=\"anchor\" id=\"monitoramento\"></a>Monitoramento</h3>\n<ul>\n<li><strong>Nagios:</strong> Monitoramento de infraestrutura</li>\n<li><strong>Prometheus + Grafana:</strong> Métricas e visualização</li>\n<li><strong>Zabbix:</strong> Monitoramento abrangente</li>\n</ul>\n<h3><a href=\"#imagens-prontas\" aria-hidden=\"true\" class=\"anchor\" id=\"imagens-prontas\"></a>Imagens Prontas</h3>\n<ul>\n<li><strong>Vagrant Cloud:</strong> Imagens pré-configuradas de VMs</li>\n<li><strong>Turnkey Linux:</strong> Appliances virtuais prontos para uso</li>\n<li><strong>Bitnami:</strong> Stacks de aplicações prontas</li>\n</ul>\n<h2><a href=\"#tendências-futuras\" aria-hidden=\"true\" class=\"anchor\" id=\"tendências-futuras\"></a>Tendências Futuras</h2>\n<h3><a href=\"#edge-computing\" aria-hidden=\"true\" class=\"anchor\" id=\"edge-computing\"></a>Edge Computing</h3>\n<p>VMs estão sendo utilizadas em dispositivos de borda para processar dados localmente, reduzindo latência e dependência da nuvem.</p>\n<h3><a href=\"#confidential-computing\" aria-hidden=\"true\" class=\"anchor\" id=\"confidential-computing\"></a>Confidential Computing</h3>\n<p>Novas tecnologias como Intel SGX e AMD SEV permitem que VMs processem dados criptografados, aumentando ainda mais a segurança.</p>\n<h3><a href=\"#vms-sem-servidor-serverless-vms\" aria-hidden=\"true\" class=\"anchor\" id=\"vms-sem-servidor-serverless-vms\"></a>VMs sem Servidor (Serverless VMs)</h3>\n<p>Plataformas estão emergindo que combinam a flexibilidade de VMs com o modelo de cobrança e escalabilidade de serverless computing.</p>\n<h3><a href=\"#microserviços-em-vms\" aria-hidden=\"true\" class=\"anchor\" id=\"microserviços-em-vms\"></a>Microserviços em VMs</h3>\n<p>Apesar da popularidade de containers, muitas empresas continuam preferindo microserviços em VMs leves para maior isolamento.</p>\n<h2><a href=\"#conclusão\" aria-hidden=\"true\" class=\"anchor\" id=\"conclusão\"></a>Conclusão</h2>\n<p>As máquinas virtuais são uma tecnologia fundamental no mundo moderno da computação. Elas permitem melhor utilização de recursos, maior flexibilidade e segurança aprimorada. Seja para desenvolvimento, testes, produção ou aprendizado, as VMs são ferramentas indispensáveis.\nComeçar com virtualização pode parecer intimidador, mas com as ferramentas modernas e este guia, você está preparado para dar os primeiros passos. Experimente, pratique e descubra como as máquinas virtuais podem transformar sua forma de trabalhar com tecnologia.</p>\n<h2><a href=\"#fontes\" aria-hidden=\"true\" class=\"anchor\" id=\"fontes\"></a>Fontes</h2>\n<ul>\n<li><strong>Documentação oficial do VirtualBox:</strong> <a href=\"https://www.virtualbox.org/manual/\">https://www.virtualbox.org/manual/</a></li>\n<li><strong>Documentação do VMware:</strong> <a href=\"https://docs.vmware.com/\">https://docs.vmware.com/</a></li>\n<li><strong>Curso gratuito de virtualização:</strong> Coursera, Udemy, Linux Academy</li>\n<li><strong>Comunidades:</strong> Reddit r/homelab, r/virtualization</li>\n<li><strong>Certificações:</strong> VMware VCP, Microsoft MCSA, Red Hat RHCSA</li>\n</ul>\n<hr />\n<h5><a href=\"#créditos\" aria-hidden=\"true\" class=\"anchor\" id=\"créditos\"></a>Créditos</h5>\n<p>Agradeço a contribuição do Carlos Souza.</p>\n<p>GitHub: <a href=\"https://github.com/csouzape\">github.com/csouzape</a><br />\nX(antigo Twitter): <a href=\"https://x.com/kourge01\">x.com/kourge01</a><br />\nReddit: <a href=\"https://www.reddit.com/user/csouzape/\">reddit.com/user/csouzape/</a></p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-15T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Carlos Souza",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/219468948?v=4"
        }
      ],
      "tags": [
        "tutorial",
        "linux"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//git-pratico-para-iniciantes.html",
      "url": "https://meus10centavos.vercel.app//git-pratico-para-iniciantes.html",
      "title": "Git prático para iniciantes - O início de um projeto",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h1><a href=\"#introdução\" aria-hidden=\"true\" class=\"anchor\" id=\"introdução\"></a>Introdução</h1>\n<p>Antes de começar, já devo avisar que o objetivo desta série não é ensinar git de A até Z como muitos fazem, pois eu não acho que conseguiria fazer algo melhor do que a <a href=\"https://git-scm.com/book/pt-br/v2\">documentação do git</a>, que tem uma leitura fácil e entendível para quem está iniciando, além de ter uma boa parte já traduzida para o português brasileiro, caso tenha dificuldades com o inglês.</p>\n<p>Meu objetivo é simplificar seu aprendizado, abordando o essencial, destrinchando as entrelinhas e explicando de uma forma fácil para iniciantes.</p>\n<blockquote>\n<p><strong>Nota:</strong> Entenda que estamos falando do git (ferramenta de controle de versão), não do GitHub (repositório remoto). Isso porque em algum momento você irá trabalhar em empresas que utilizam outros, como BitBucket e GitLab. Pesquisem por conta sobre esses repositórios remotos. Se em algum momento eu me referir a repositório remoto, assuma que estou falando do GitHub para esses exemplos, mas o mesmo se aplicaria de forma similar aos outros citados.</p>\n</blockquote>\n<h1><a href=\"#inicializando-um-repositório-na-sua-máquina\" aria-hidden=\"true\" class=\"anchor\" id=\"inicializando-um-repositório-na-sua-máquina\"></a>Inicializando um repositório na sua máquina</h1>\n<p>Vamos supor que você já assistiu seu curso da Udemy ou do YouTube e já sabe o básico do funcionamento de git. Logo, caso tenha entendido corretamente, o primeiro passo é inicializar um repositório dentro do diretório do seu projeto com o comando <code>git init</code>.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git init\nInitialized empty Git repository in /home/enzo/projeto/.git/\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<p>O que você precisa entender agora é que, ao inicializar um repositório, um diretório chamado <code>.git</code> será criado no diretório do projeto e que por padrão, nenhum dos seus arquivos estará, mas o git já consegue vê-los. Além disso, todos seus arquivos começarão com o estado <code>untracked</code> ou &quot;não rastreado&quot;.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git status\nOn branch main\n\nNo commits yet\n\nUntracked files:\n  (use &quot;git add &lt;file&gt;...&quot; to include in what will be committed)\n        index.html\n        style.css\n\nnothing added to commit but untracked files present (use &quot;git add&quot; to track)\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<h1><a href=\"#as-três-áreas-do-git\" aria-hidden=\"true\" class=\"anchor\" id=\"as-três-áreas-do-git\"></a>As três áreas do git</h1>\n<p>É essencial que você entenda que o git possui três áreas e que seus arquivos vão ter estados nessas áreas. As áreas basicamente são: <em>working directory</em>, <em>staging area</em> e o diretório <code>.git</code> do projeto.</p>\n<img src=\"/media/git-areas.png\" alt=\"As três áreas do git\" width=\"700\" height=\"500\">\n<p>Resumindo o fluxo nessas áreas de maneira simples.</p>\n<ul>\n<li>Você faz alterações no seu projeto no <em>working directory</em></li>\n<li>Você adiciona as alterações na <em>staging area</em></li>\n<li>Você registra as alterações, que irão ser armazenadas no diretório <code>.git</code></li>\n</ul>\n<h1><a href=\"#preparando-para-o-commit\" aria-hidden=\"true\" class=\"anchor\" id=\"preparando-para-o-commit\"></a>Preparando para o commit</h1>\n<p>Você, como um ótimo desenvolvedor, terminou a primeira tarefa do projeto, que era criar o código HTML e o CSS de uma página importante e agora você quer que o git faça o versionamento desse código.</p>\n<p>Primeiro, precisamos adicionar as alterações que fizemos para a área de staging, ou &quot;área de preparo&quot;. Para isso, utilizamos o comando <code>git add</code> que pode ser chamado das seguintes formas:</p>\n<ul>\n<li><code>git add index.html</code>: Adiciona um arquivo específico</li>\n<li><code>git add index.html style.css</code>: Adiciona múltiplos arquivos</li>\n<li><code>git add foo/bar</code>: Adiciona todos os arquivos de um diretório</li>\n<li><code>git add .</code>: Adiciona todos os arquivos</li>\n</ul>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-pc-do-enzo:~/projeto$ git add index.html style.css\nenzo@pc-pc-do-enzo:~/projeto$ git status\nOn branch main\n\nNo commits yet\n\nChanges to be committed:\n  (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)\n        new file:   index.html\n        new file:   style.css\n\nenzo@pc-pc-do-enzo:~/projeto$\n</code></pre>\n<p>Como pode ver, as informações do comando <code>git status</code> são bem claras:</p>\n<ul>\n<li><strong>On branch main</strong>: Estamos na ramificação principal</li>\n<li><strong>No commits yet</strong>: Ainda não há nenhum commit no repositório</li>\n<li><strong>Changes to be committed</strong>: Mudanças que serão &quot;commitadas&quot;. Preste atenção nessa parte, pois os items da lista abaixo, irão para o próximo commit. Caso você queira retirar um arquivo que você colocou por engano, basta executar <code>git rm --cached &lt;nome-arquivo&gt;</code> para retirar da <em>staging area</em> de volta para o <em>working directory</em>.</li>\n</ul>\n<p>Agora, eu realmente espero que você tenha se questionado do seguinte:</p>\n<blockquote>\n<p>&quot;E se eu fizer uma modificação em um arquivo que eu já adicionei na <em>staging area</em>?&quot;</p>\n</blockquote>\n<p>E aqui entramos em outro conceito importante que não se aplica somente ao git, mas em muitas ferramentas que você vai encontrar e ele se chama <em><strong>diffing</strong></em>.</p>\n<p>Em termos simples, <em><strong>diffing</strong></em> é o processo de comparação entre arquivos, para saber o que mudou de um arquivo para outro. Você pode pensar nisso como um &quot;jogo dos 7 erros&quot;, onde você tinha duas imagens e precisava encontrar a diferença entre elas.</p>\n<p>Graças ao <em><strong>diffing</strong></em>, o git consegue te dizer exatamente quais linhas foram adicionadas (+) e quais linhas foram removidas (-) na comparação de uma versão anterior de um arquivo a uma versão atual.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git diff\ndiff --git a/index.html b/index.html\nindex c3939a0..e60d682 100644\n--- a/index.html\n+++ b/index.html\n@@ -7,12 +7,13 @@\n     &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;\n   &lt;/head&gt;\n   &lt;body&gt;\n-    &lt;h1&gt;Página inicial&lt;/h1&gt;\n+    &lt;h1&gt;Página inicial alterada&lt;/h1&gt;\n     &lt;p&gt;\n       Lorem ipsum dolor, sit amet consectetur adipisicing elit. Harum ipsum\n       temporibus minima explicabo molestiae repellendus deleniti dolore, at\n       vitae illo numquam eaque veritatis exercitationem. Aliquam repudiandae\n       similique quaerat quia optio.\n     &lt;/p&gt;\n+    &lt;p&gt;Uma nova alteração&lt;/p&gt;\n   &lt;/body&gt;\n &lt;/html&gt;\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<p>Então, quando você realiza a modificação de um arquivo que já está na <em><strong>staging area</strong></em>, esse arquivo terá uma versão na <em><strong>staging area</strong></em> que irá para o próximo <em>commit</em> e uma versão em estado <em><strong>modified</strong></em> no <em><strong>working directory</strong></em>.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git status\nOn branch main\n\nNo commits yet\n\nChanges to be committed:\n  (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)\n        new file:   index.html\n        new file:   style.css\n\nChanges not staged for commit:\n  (use &quot;git add &lt;file&gt;...&quot; to update what will be committed)\n  (use &quot;git restore &lt;file&gt;...&quot; to discard changes in working directory)\n        modified:   index.html\n\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<blockquote>\n<p>&quot;Mas e se quiser adicionar a nova alteração que fiz junto a que já está na <em><strong>staging area</strong></em>?&quot;</p>\n</blockquote>\n<p>Basta adicionar essa alteração com o <code>git add</code> quantas vezes forem necessárias.</p>\n<h1><a href=\"#realizando-o-commit\" aria-hidden=\"true\" class=\"anchor\" id=\"realizando-o-commit\"></a>Realizando o commit</h1>\n<p>A partir deste ponto, vamos assumir que você já fez e adicionou tudo o que era necessário e está pronto para o commit.</p>\n<blockquote>\n<p>Mas o que é esse tal de commit que tanto é falado?</p>\n</blockquote>\n<p>Um <em><strong>commit</strong></em> é um objeto do git que de fato vai registrar uma versão de código dentro do seu repositório git. Ele trás metadados como:</p>\n<ul>\n<li>O autor do <em>commit</em></li>\n<li>A data em que ele foi realizado</li>\n<li>Uma descrição</li>\n<li>O <em>hash</em> do <em>commit</em> (isso é o principal para o git, pois podemos rastrear a qualquer momento esse <em>commit</em> e ver o que foi feito nele)</li>\n<li>Quem aprovou seu <em>merge</em> em alguma ramificação (mais a frente você verá o conceito de <em>merge</em>, ou mesclagem)</li>\n</ul>\n<p>Para realizar o commit, você deve executar o comando <code>git commit</code>, que pode receber algumas opções, mas por enquanto vamos falar somente da <em>flag</em> <code>-m</code></p>\n<p>Se você deseja realizar o <em>commit</em> com uma descrição simples:</p>\n<p><code>git commit -m 'feat: implementação da página inicial do projeto'</code></p>\n<p>Se você deseja realizar o commit com uma descrição simples e informar mais detalhes:\n<code>git commit</code></p>\n<p>Isso irá abrir o editor padrão configurado para o git, para que você possa escrever mais detalhes sobre o <em>commit</em>. Você terá instruções em forma de comentários, indicando como você deve estruturar a mensagem.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">GNU nano 7.2                                 /home/enzo/projeto/.git/COMMIT_EDITMSG *\n\nfeat: implementação da página inicial do projeto\n&lt;ENTER&gt;\n- Criação do header fixo\n- Criação de efeito parallax\n- Carregamento de fontes via CDN\n\n# Please enter the commit message for your changes. Lines starting\n# with '#' will be ignored, and an empty message aborts the commit.\n#\n# On branch main\n#\n# Initial commit\n#\n# Changes to be committed:\n#       new file:   index.html\n#       new file:   style.css\n#\n# Changes not staged for commit:\n#       modified:   index.html\n#\n</code></pre>\n<p>Ao salvar e sair, seu <em>commit</em> terá sido realizado.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-pc-do-enzo:~/projeto$ git commit\n[main (root-commit) af17a38] feat: implementação da página inicial do projeto\n 2 files changed, 32 insertions(+)\n create mode 100644 index.html\n create mode 100644 style.css\nenzo@pc-pc-do-enzo:~/projeto$\n</code></pre>\n<p>E você pode ver detalhes sobre esse <em>commit</em> e outros, obtendo seus logs, com o comando <code>git log</code>.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">commit af17a38bca106c5316239f9e209cc3c1d43fd5c5 (HEAD -&gt; main)\nAuthor: Enzo da Silva &lt;enzosilva@gmail.com&gt;\nDate:   Fri Feb 6 03:42:34 2026 -0300\n\n    feat: implementação da página inicial do projeto\n\n    - Criação do header fixo\n    - Criação de efeito parallax\n    - Carregamento de fontes via CDN\n</code></pre>\n<h1><a href=\"#conclusão\" aria-hidden=\"true\" class=\"anchor\" id=\"conclusão\"></a>Conclusão</h1>\n<p>Nesta primeira parte da série, você aprendeu a inicializar um repositório git, preparar alterações para seu _<strong>commit</strong> e como realizá-lo.</p>\n<p>Além disso, expliquei sobre o <em><strong>diffing</strong></em>, que é o processo que o git usa para fazer comparações entre arquivos de versões diferentes, para saber qual mudança houve entre eles.</p>\n<p>Como material complementar, eu fortemente recomendo que você leia os capitulos 1.1 até o 2.3 da <a href=\"https://git-scm.com/book/pt-br/v2\">documentação do git</a> para entender com mais detalhes o que foi abordado aqui, pois sempre utilizo ele como base quando preciso explicar git</p>\n<h1><a href=\"#próximos-passos\" aria-hidden=\"true\" class=\"anchor\" id=\"próximos-passos\"></a>Próximos passos</h1>\n<p>No próximo capítulo, pretendo falar sobre:</p>\n<ul>\n<li>Como editar a mensagem de um <em>commit</em></li>\n<li>Como reverter um <em>commit</em> que já foi realizado</li>\n<li>Como adicionar alterações a um <em>commit</em> já realizado</li>\n<li>Repositórios remotos</li>\n<li>Configuração de chave SSH</li>\n<li>Assinatura de commits (isso aqui é importante e muita gente não sabe que existe e como fazer)</li>\n</ul>\n<h1><a href=\"#agradecimentos\" aria-hidden=\"true\" class=\"anchor\" id=\"agradecimentos\"></a>Agradecimentos</h1>\n<p>Queria deixar registrado, meu agradecimento ao meu amigo Fabrício, que criou este espaço e permitiu que eu e outras pessoas compartilhássemos nossos conhecimentos com vocês.</p>\n<h1><a href=\"#referências\" aria-hidden=\"true\" class=\"anchor\" id=\"referências\"></a>Referências</h1>\n<p><a href=\"https://git-scm.com/book/en/v2\">https://git-scm.com/book/en/v2</a></p>\n<p><a href=\"https://git-scm.com/book/pt-br/v2\">https://git-scm.com/book/pt-br/v2</a></p>\n<h5><a href=\"#créditos\" aria-hidden=\"true\" class=\"anchor\" id=\"créditos\"></a>Créditos</h5>\n<p>Agradeço a contribuição do Matheus Henrique.</p>\n<p>GitHub: <a href=\"https://github.com/mathstylish\">github.com/mathstylish</a><br />\nLinkedIn: <a href=\"https://www.linkedin.com/in/mathstylish/\">linkedin.com/in/mathstylish/</a></p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-11T00:00:00-00:00",
      "image": "/media/git-areas.png",
      "authors": [
        {
          "name": "Matheus Henrique",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/44449793?v=4"
        }
      ],
      "tags": [
        "versionamento",
        "guia"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//faz-sentido-ser-fullstack.html",
      "url": "https://meus10centavos.vercel.app//faz-sentido-ser-fullstack.html",
      "title": "Faz sentido ser Full-Stack?",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<blockquote>\n<p>&quot;Full-Stack é um indeciso, ele não sabe qual caminho seguir.&quot;  - Aleatório da Internet</p>\n</blockquote>\n<p>Foi com essa afirmação que eu me deparei outro dia, quando eu estava em um servidor de programadores, estava conversando, e um cidadão disse que, na opinião dele, um Full-Stack é um indeciso.</p>\n<p>Primeiramente se você está nesse artigo, é bem provável que você saiba o que é um Full-Stack, mas caso não saiba vou dar (lá ele!) uma explicação rápida.</p>\n<p>Um Full-Stack é o profissional da área de desenvolvimento que ele é capaz de desenvolver tanto o Front-End (a parte visual) quanto o Back-End (a parte mais lógica essencial da aplicação) tornando-se um Full-Stack, ele consegue trabalhar em uma aplicação sozinho cobrindo todas as necessidades.</p>\n<p>Por que eu discordo dessa afirmativa? Full-Stacks são altamente valorizados por terem justamente essa visão geral dos projetos. Na prática, quem precisa de um Full-Stack, majoritariamente é quem esteja priorizando entrega rápida e integração. Como por exemplo o trabalho de freelancer, de startups, de empresas pequenas.</p>\n<h2><a href=\"#visão-sistemática\" aria-hidden=\"true\" class=\"anchor\" id=\"visão-sistemática\"></a>visão sistemática.</h2>\n<p>Ser Full-Stack não significa necessariamente uma pessoa que está pulando de galho em galho, de tecnologia em tecnologia, sendo superficial em tudo. Significa ser adaptável, ser flexível, entende? Ser praticamente um &quot;canivete suíço&quot; da programação.</p>\n<p>Eu acredito que seja possível ser um Full-Stack, mas isso demanda no <strong>MÍNIMO</strong> uns <strong>4 anos</strong> para ser um Full-Stack.</p>\n<p>Eu não acredito naquela pessoa que diz:</p>\n<blockquote>\n<p>&quot;Ah, vou iniciar a programação hoje, minha meta é ser full stack, eu vou começar meus estudos. focando em ser um full stack desde agora.&quot;</p>\n</blockquote>\n<p>Não! Isso é ser <strong>Full-Esterco</strong>, faz merda no Front e no Back.</p>\n<p>Eu acredito que seja necessário no mais ou menos, no mínimo 2 anos de Front e 2 anos de Back para uma pesspa rotular-se como Full-Stack. Afinal, vamos ser sinceros, só de front-end, tem um monte de tecnologia: HTML, CSS, JavaScript, TypeScript, React, Tailwind, Next, e mais um monte.</p>\n<p>Isso pensando só no ecossistema JavaScript, obviamente. Se você, porque é minha stack, então falarei sob essa ótica, mas cada linguagem, também de front-end, tem seus frameworks específicos. Veja, são bastante tecnologias, e cada uma delas tem conceitos para se aprofundar.</p>\n<p>Eu não acredito num Full-Stack de 1 ano ou 2 anos, não. Full-Stack é uma construção a longo prazo. Como eu disse, Full-Stack não é uma pessoa que está pulando de galho em galho. É uma pessoa que tem uma visão geral de tudo.</p>\n<h2><a href=\"#flexibilidade-estratégica\" aria-hidden=\"true\" class=\"anchor\" id=\"flexibilidade-estratégica\"></a>Flexibilidade estratégica</h2>\n<p>Reforçando, o Full-Stack não é sobre ser mediano em tudo. Significa ter profundidade estratégica de acordo com o contexto. O que seria isso?</p>\n<p>Seria aprofundar seus conhecimentos de acordo com a demanda. Por exemplo, se eu entrar em uma equipe/projeto onde está precisando de um front-end, e tem uma tarefa específica, de uma tecnologia específica a qual eu não domino, então eu vou aprender ela e me aprofundo nela até onde for necessário. Da mesma forma, quando for a atuar no Back-End.</p>\n<h2><a href=\"#mentalidade-de-produto\" aria-hidden=\"true\" class=\"anchor\" id=\"mentalidade-de-produto\"></a>Mentalidade de produto</h2>\n<p>Essa é a parte que eu penso ser a melhor Full-Stack. É justamente não ver as coisas de forma isolada. É conseguir integrar e conversar com as diferentes equipes. Por exemplo, um Full-Stack, ao mesmo tempo que ele consegue pensar na performance, ele consegue pensar na UI e na UX, consegue pensar na escalabilidade de uma aplicação. Ele tem em mente que tudo faz parte de um único organismo.</p>\n<h2><a href=\"#mercado-exige-multidisciplinaridade\" aria-hidden=\"true\" class=\"anchor\" id=\"mercado-exige-multidisciplinaridade\"></a>Mercado exige multidisciplinaridade</h2>\n<p>Hoje ainda mais do que quando eu escrevi esse texto 9 meses atrás...<br />\nJá que a I.A. pode auxiliar bastante tanto no trablho em si, como nos estudos.</p>\n<p>Eu acredito que você queira crescer na carreira, atingir cargos cada vez mais altos. Imagina só, ser um sênior, mas que consegue entender ambos os lados de uma aplicação tanto Front como Back-End minimamente. Imagina você, sendo um Júnior, tendo um Sênior desse. Você teria respeito por ele? Teria admiração? Teria ele como uma referência técnica? Veja o quanto ele não tem a lhe agregar. Ao mesmo tempo, imagine-se você sendo esse Sênior. O quanto você não teria a agregar um Júnior?</p>\n<p>Pessoalmente, eu já vi algumas vagas de Pleno e de Sênior que pedem noções de Back-End. Não que ser um especialista não seja bom, obviamente. É incrível, é maravilhoso (dependendo do momento do mercado). Mas, principalmente, empresas pequenas e startups querem ROI o mais rápido possível. No curto e grosso, devs que façam mais com menos.</p>\n<p>Ser Full-Stack é especialmente interessante para quem está desempregado, imagine só, você um Front-End, apenas Front-End, você está ignorando toda uma fatia do mercado, porque você não tem conhecimento técnico para atingir aquela outra área. Você sendo Full-Stack, você não tem essa limitação... praticamente não há tempo ruim para Full-Stack, você é Front-End, você aplica para Front-End consegue, aplica para Back-End e consegue também.</p>\n<p>Sem contar que até para vagas específicas, como por exemplo, a vaga de front-end apenas, mas você vai se destacar no meio dos outros front-end. Enquanto uma pessoa só sabe mexer com o React, você sabendo o NodeJS, sabendo o Express, sabendo o NestJS, sabendo fazer uma integração com banco de dados, etc, etc, você, nesse momento, tem um diferencial. Você não cai mais no mesmo cesto que os outros.</p>\n<p>Caso você não tenha gostado ou discorde, deixo que <a href=\"https://pt.wikipedia.org/wiki/Ariano_Suassuna\">Ariano Suassuna</a> responda por mim:</p>\n<blockquote>\n<p>A humanidade se divide em dois grupos: os que concordam comigo e os errados.<br />\n-- Ariano Suassuna</p>\n</blockquote>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-04T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "carreira"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//como-fazer-um-bom-curriculo-otimizado-para-ats.html",
      "url": "https://meus10centavos.vercel.app//como-fazer-um-bom-curriculo-otimizado-para-ats.html",
      "title": "Como fazer um bom currículo otimizado para ATS",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h1><a href=\"#como-fazer-um-bom-currículo\" aria-hidden=\"true\" class=\"anchor\" id=\"como-fazer-um-bom-currículo\"></a>Como fazer um bom currículo</h1>\n<p>Essa estrutura de currículo é principalmente para profissionais de T.I., mais especificamente para programadores. Essa é a estrutura que eu mesmo uso e tenho tido bastante resultados.<br />\nO modelo de currículo que iriei te passar é <strong>otimizado para ATS.</strong></p>\n<p><strong>Observação:</strong> Caso você não saiba, meu caro juninho, quando vocẽ faz uma aplicação online para uma vaga, antes você passa por uma I.A. chamada ATS, Applicant Tracking System (Sistema de Rastreamento de Candidatos). Ou seja antes de você fazer os olhos do recrutador brilarem, você precisa fazer os leds do ATS ascenderem.</p>\n<p>Tenho quase certeza que você não tem noção da função de um currículo, não é um histórico de onde você trabalhou, o currículo serve para você dar carteirada e se exibir.</p>\n<h2><a href=\"#estrutura\" aria-hidden=\"true\" class=\"anchor\" id=\"estrutura\"></a>Estrutura</h2>\n<h3><a href=\"#cabeçalho-do-currículo\" aria-hidden=\"true\" class=\"anchor\" id=\"cabeçalho-do-currículo\"></a>Cabeçalho do currículo</h3>\n<p>No topo adicione suas informações. Nome e sobrenome, número de contato, LinkedIn e GitHub. CEP e cidade só se você estiver aplicando para presencial ou híbrido. A não ser que a vaga seja de modelo não motivo para você adicionar uma foto.</p>\n<p>Exemplo:</p>\n<img src=\"/media/cabeçalho.png\" alt=\"Cabeçalho\" width=\"700\" height=\"500\">\n<h3><a href=\"#resumo-profissional\" aria-hidden=\"true\" class=\"anchor\" id=\"resumo-profissional\"></a>Resumo profissional</h3>\n<p>Na parte do resumo profissional você adiciona qual sua função desejada, desenovlvedor Full-Stack, por exemplo. Importante que você não adicione &quot;patente&quot;, a empresa que descide se você é Júnior, Pleno ou Sênior.</p>\n<p>Por exemplo, se você colocar desenvolvedor Full-Stack Júnior, talvez você tenha capacidade de Pleno e até execute tarefas de Pleno, mas seja contratado como Júnior só pelo motivo de você ter se rotulado assim.</p>\n<p>No resumo profissional você tem que dar o máximo de carteirada em no máximo 4 linhas. Inclua tempo de experiência se você tiver, principais projetos relevantes que você participou. Adicione também sua linguagem e stack principal, isso já faz parte da otimização de ATS</p>\n<p>Exemplo: <br />\n<img src=\"/media/resumo.png\" alt=\"resumo\" width=\"700\" height=\"500\"></p>\n<p><strong>Observação:</strong> Não abuse do negrito, adicione apensas nas palavras que você quer que chame atenção. Negrito é apenas para as coisas importantes, se você colocar negrito em tudo então nada é importante.</p>\n<p>Prompt para gerar na IA:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">Escreva um resumo profissional com no máximo 4 linhas de modo que me passe autoridade\n\n- [cite sua stack]\n- [tempo de experiência]\n- [cite projetos revelantes/que você se orgulha/ foi difícil fazer]\n</code></pre>\n<h3><a href=\"#formação-acadêmica-e-idiomas\" aria-hidden=\"true\" class=\"anchor\" id=\"formação-acadêmica-e-idiomas\"></a>Formação acadêmica e idiomas</h3>\n<p>Autoexplicativo...</p>\n<p>Exemplo:<br />\n<img src=\"/media/formação.png\" alt=\"formação\" width=\"700\" height=\"500\"></p>\n<h3><a href=\"#experiência-profissional\" aria-hidden=\"true\" class=\"anchor\" id=\"experiência-profissional\"></a>Experiência profissional</h3>\n<p>A forma como você irá descrever suas experiência é um pouco diferente de como um currículo comum é estruturado.<br />\nPara vagas de T.I. o ideal é essa estrutura:</p>\n<ul>\n<li>Função exercida e período de atuação ao lado</li>\n<li>Empresa</li>\n<li>Resumo geral da sua atuação/do projeto</li>\n<li>Suas principais responsabilidades</li>\n<li>Destaque. O que você fez que foi muito foda, teve muito reconhecimento, ou muito difícil?</li>\n<li>Técnologias que você utilizou</li>\n</ul>\n<p><strong>Observação:</strong> É crucial que você procure passar o máximo de autoridade aqui, essa é sua hora de se exibir igual um pavão, só não mostra o rabo.</p>\n<p>Exemplo:<br />\n<img src=\"/media/experiencia.png\" alt=\"Experiência\" width=\"700\" height=\"500\"></p>\n<p>Cite suas três últimas experiências, ou projetos grandes caso você seja estudante. Caso não tenha projetos grandes, fale dos prjetos que você tem mais orgulho e adicione o link dos repositório e dele em produção (se aplicável).</p>\n<p>As tecnologias utilizadas são cruciais pra que seu currículo tenha êxito com o ATS, pois ele funciona lendo todo o seu currículo e buscando as palavras-chaves para a vaga. Exemplo: Full-Stack, COBOL, assembly, Cassandra</p>\n<h3><a href=\"#habilidades-e-tecnologias\" aria-hidden=\"true\" class=\"anchor\" id=\"habilidades-e-tecnologias\"></a>Habilidades e Tecnologias</h3>\n<p>Aqui você fará na seguinte estrutura:</p>\n<ul>\n<li>Linguagens:</li>\n<li>Frameworks e Bibliotecas:</li>\n<li>Banco de Dados:</li>\n<li>Ferramentas:</li>\n<li>Metodologias Ágeis:</li>\n<li>Soft skills:</li>\n</ul>\n<p>Exemplo:<br />\n<img src=\"/media/habilidades.png\" alt=\"Experiência\" width=\"700\" height=\"500\"></p>\n<p><strong>o currículo deve conter no máximo 3 páginas</strong></p>\n<p>👉 <a href=\"/media/exemplo.docx\">Baixar o modelo de currículo</a> 👈</p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-03T00:00:00-00:00",
      "image": "/media/cabeçalho.png",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "tutorial",
        "carreira"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//dicas-para-iniciantes-no-linux.html",
      "url": "https://meus10centavos.vercel.app//dicas-para-iniciantes-no-linux.html",
      "title": "Dicas para iniciantes no linux",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h2><a href=\"#sobre-este-guia\" aria-hidden=\"true\" class=\"anchor\" id=\"sobre-este-guia\"></a>Sobre Este Guia</h2>\n<p>Meu nome é Carlos Gabriel, sou desenvolvedor de sistemas com 7 anos de experiência em Linux. Este artigo reúne tudo que aprendi ao longo dessa jornada — incluindo os erros que cometi e como você pode evitá-los.</p>\n<h2><a href=\"#o-que-é-linux\" aria-hidden=\"true\" class=\"anchor\" id=\"o-que-é-linux\"></a>O que é Linux?</h2>\n<p>Linux é um sistema operacional gratuito e de código aberto, baseado em Unix, criado por Linus Torvalds em 1991. Ele gerencia o hardware e software de computadores, servidores, dispositivos móveis (Android) e até dispositivos IoT.\nPrincipais características:</p>\n<ul>\n<li>Segurança robusta — Menos vulnerável a vírus e malware</li>\n<li>Totalmente personalizável — Você controla cada aspecto do sistema</li>\n<li>Código aberto — Desenvolvido colaborativamente por milhares de programadores</li>\n<li>Gratuito — Sem custos de licença</li>\n</ul>\n<p>Hoje, o Linux é amplamente utilizado em servidores, supercomputadores, desktops e ambientes corporativos.</p>\n<h2><a href=\"#por-que-aprender-linux-em-2026\" aria-hidden=\"true\" class=\"anchor\" id=\"por-que-aprender-linux-em-2026\"></a>Por que Aprender linux em 2026</h2>\n<p>Com o fim do suporte ao Windows 10 em outubro de 2025, muitos usuários foram forçados a migrar para o Windows 11, que traz mudanças controversas:</p>\n<h3><a href=\"#problemas-do-windows-11\" aria-hidden=\"true\" class=\"anchor\" id=\"problemas-do-windows-11\"></a>Problemas do Windows 11:</h3>\n<ul>\n<li>Requisitos de hardware rígidos — TPM 2.0, CPU de 8ª geração ou superior</li>\n<li>Maior consumo de recursos — Usa mais RAM e processamento</li>\n<li>Recursos de IA integrados — Copilot e ferramentas que dependem de nuvem</li>\n<li>Telemetria intensiva — Coleta de dados do usuário</li>\n<li>Menor controle — Atualizações forçadas, recursos que não podem ser desativados</li>\n</ul>\n<h2><a href=\"#por-que-o-linux-é-a-alternativa\" aria-hidden=\"true\" class=\"anchor\" id=\"por-que-o-linux-é-a-alternativa\"></a>Por Que o Linux É a Alternativa?</h2>\n<ul>\n<li>Usa melhor o hardware disponível — Roda suavemente até em máquinas antigas</li>\n<li>Controle total — Você decide o que instala e roda no sistema</li>\n<li>Sem telemetria forçada — Sua privacidade é respeitada</li>\n<li>Sem obsolescência programada — Não há requisitos artificiais de hardware</li>\n<li>Comunidade ativa — Suporte gratuito de milhões de usuários pelo mundo</li>\n</ul>\n<h2><a href=\"#preparação-hardware-e-ferramentas\" aria-hidden=\"true\" class=\"anchor\" id=\"preparação-hardware-e-ferramentas\"></a>Preparação: Hardware e Ferramentas:</h2>\n<h3><a href=\"#1-escolha-do-pendrive\" aria-hidden=\"true\" class=\"anchor\" id=\"1-escolha-do-pendrive\"></a>1. Escolha do Pendrive</h3>\n<p>No início, usei um pendrive genérico de 8GB. Embora tecnicamente suficiente, a velocidade de leitura/gravação era muito lenta, tornando a instalação e testes demorados.\nMinha recomendação atual:</p>\n<ul>\n<li>Capacidade mínima: 16GB (ideal: 64GB ou mais)</li>\n<li>Modelo testado: SanDisk Cruzer Glide 64GB</li>\n<li>Por quê? Velocidade de leitura/gravação superior e espaço para múltiplas ISOs</li>\n</ul>\n<img src=\"/media/pendrive.png\" alt=\"Pendrive SanDisk Cruzer Glide 64GB\" width=\"200\" height=\"500\">\n<h3><a href=\"#2-criando-um-pendrive-bootável\" aria-hidden=\"true\" class=\"anchor\" id=\"2-criando-um-pendrive-bootável\"></a>2. Criando um Pendrive Bootável</h3>\n<p>Para instalar o Linux, você precisa tornar o pendrive &quot;bootável&quot; (inicializável). Existem três ferramentas principais:\nOpção 1: Ventoy (Recomendado)\nVantagens:</p>\n<ul>\n<li>Cria um pendrive multiboot</li>\n<li>Basta copiar as ISOs para o pendrive</li>\n<li>Mantém várias distribuições disponíveis ao mesmo tempo</li>\n<li>Não precisa reformatar para adicionar novas ISOs</li>\n</ul>\n<img src=\"/media/isos.png\" alt=\"Múltiplas ISOs no Ventoy\" width=\"700\" height=\"500\">\n<h3><a href=\"#como-usar\" aria-hidden=\"true\" class=\"anchor\" id=\"como-usar\"></a>Como usar:</h3>\n<ul>\n<li>\n<p>Baixe o Ventoy em <a href=\"https://www.ventoy.net/\">ventoy.net</a></p>\n</li>\n<li>\n<p>Instale no pendrive (isso irá formatá-lo)</p>\n</li>\n<li>\n<p>Copie os arquivos ISO das distribuições Linux diretamente para o pendrive</p>\n</li>\n<li>\n<p>Pronto! O Ventoy detecta automaticamente as ISOs</p>\n</li>\n<li>\n<p><a href=\"https://www.youtube.com/watch?v=11CkqZQ3scE&amp;t=43s\">Tutorial em vídeo</a> (processo permanece similar nas versões atuais)</p>\n</li>\n</ul>\n<h3><a href=\"#opção-2-rufus-apenas-windows\" aria-hidden=\"true\" class=\"anchor\" id=\"opção-2-rufus-apenas-windows\"></a>Opção 2: Rufus (Apenas Windows)</h3>\n<ul>\n<li>Interface simples e direta</li>\n<li>Ideal para criar um único sistema bootável</li>\n<li>\n<ul>\n<li>Download: <a href=\"https://rufus.ie/pt_BR/\">rufus.ie</a></li>\n</ul>\n</li>\n</ul>\n<p>Opção 3: balenaEtcher (Multiplataforma)</p>\n<p>Funciona em Windows, macOS e Linux\nInterface visual e intuitiva\nDownload: <a href=\"https://etcher.balena.io/\">etcher.balena.io</a></p>\n<h2><a href=\"#escolhendo-sua-primeira-distribuição\" aria-hidden=\"true\" class=\"anchor\" id=\"escolhendo-sua-primeira-distribuição\"></a>Escolhendo Sua Primeira Distribuição</h2>\n<p>Diferente do Windows e macOS, que são sistemas únicos, o Linux é modular. O &quot;Linux&quot; é apenas o kernel (núcleo do sistema). Ao redor dele, diferentes projetos combinam:</p>\n<ul>\n<li>Gerenciador de pacotes (APT, DNF, Pacman)</li>\n<li>Sistema de inicialização (systemd, OpenRC)</li>\n<li>Ambiente gráfico (GNOME, KDE, Cinnamon, XFCE)</li>\n<li>Ferramentas padrão</li>\n</ul>\n<p>Essas combinações geram diferentes distribuições (distros), cada uma com objetivos específicos.\nPara iniciantes, recomendo estas duas:</p>\n<h2><a href=\"#zorinos--familiaridade-instantânea\" aria-hidden=\"true\" class=\"anchor\" id=\"zorinos--familiaridade-instantânea\"></a>ZorinOS — Familiaridade Instantânea</h2>\n<p>Ideal para: Usuários vindos do Windows que querem transição suave</p>\n<h3><a href=\"#principais-características\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-características\"></a>Principais características:</h3>\n<ul>\n<li>Interface semelhante ao Windows — Barra de tarefas, menu iniciar, área de notificação</li>\n<li>Zorin Appearance — Permite trocar o layout do sistema com um clique (Windows, macOS, Ubuntu)</li>\n<li>Gerenciador APT — Mesmo do Ubuntu/Debian, com vasto repositório de software</li>\n<li>Pronto para jogos — Steam, Proton e drivers proprietários instalados facilmente</li>\n<li>Leve e otimizado — Roda bem até em hardware mais antigo</li>\n<li>Software Center intuitivo — Instale programas com interface gráfica</li>\n</ul>\n<p>Versões:</p>\n<p>Zorin OS Core (gratuita)\nZorin OS Lite (para PCs antigos) (foi descontinuado)\nZorin OS Pro (recursos extras, paga)</p>\n<p><a href=\"https://zorin.com/os/\">Download</a></p>\n<h2><a href=\"#linux-mint--estabilidade-comprovada\" aria-hidden=\"true\" class=\"anchor\" id=\"linux-mint--estabilidade-comprovada\"></a>Linux Mint — Estabilidade Comprovada</h2>\n<p>Ideal para: Quem quer um sistema estável, sem surpresas</p>\n<h3><a href=\"#principais-características-1\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-características-1\"></a>Principais características:</h3>\n<ul>\n<li>Baseado no Ubuntu LTS — Mesma base sólida, com toques próprios</li>\n</ul>\n<h3><a href=\"#três-ambientes-disponíveis\" aria-hidden=\"true\" class=\"anchor\" id=\"três-ambientes-disponíveis\"></a>Três ambientes disponíveis:</h3>\n<ul>\n<li>Cinnamon — Moderno e elegante (recomendado)</li>\n<li>MATE — Leve e tradicional</li>\n<li>Xfce — Ultraleve para hardware antigo</li>\n</ul>\n<h3><a href=\"#ferramentas-próprias-excepcionais\" aria-hidden=\"true\" class=\"anchor\" id=\"ferramentas-próprias-excepcionais\"></a>Ferramentas próprias excepcionais:</h3>\n<ul>\n<li>Update Manager — Controle total sobre atualizações</li>\n<li>Driver Manager — Instalação fácil de drivers</li>\n<li>Timeshift — Snapshots do sistema (restauração em caso de problema)</li>\n<li>Software Manager — Loja de aplicativos limpa e organizada</li>\n<li>Comunidade enorme — Fóruns ativos em português</li>\n<li>Documentação extensa — Guias para praticamente tudo</li>\n<li>Estável por natureza — Não força atualizações experimentais</li>\n</ul>\n<p><a href=\"https://linuxmint.com/\">Download</a></p>\n<h3><a href=\"#minha-recomendação\" aria-hidden=\"true\" class=\"anchor\" id=\"minha-recomendação\"></a>Minha recomendação:</h3>\n<ul>\n<li>ZorinOS se você quer algo que &quot;funcione&quot; imediatamente, com visual polido</li>\n<li>Linux Mint se você quer aprender mais sobre Linux e ter controle total\nAmbas são excelentes para iniciantes. Você não vai errar com nenhuma das duas.</li>\n</ul>\n<h2><a href=\"#hardware-o-que-você-precisa-saber\" aria-hidden=\"true\" class=\"anchor\" id=\"hardware-o-que-você-precisa-saber\"></a>Hardware: O Que Você Precisa Saber</h2>\n<p>A compatibilidade de hardware pode fazer ou quebrar sua experiência com Linux. Aqui está o que importa:\nPlacas de Vídeo: AMD vs NVIDIA</p>\n<h3><a href=\"#amd-recomendado-para-iniciantes\" aria-hidden=\"true\" class=\"anchor\" id=\"amd-recomendado-para-iniciantes\"></a>AMD (Recomendado para Iniciantes)</h3>\n<p>Vantagens:</p>\n<ul>\n<li>Drivers integrados ao kernel — Funciona &quot;out of the box&quot;</li>\n<li>Não requer instalação manual — Zero configuração</li>\n<li>Estabilidade superior — Menos problemas após atualizações</li>\n<li>Excelente compatibilidade geral — Tudo funciona imediatamente</li>\n<li>Ideal para jogos casuais — Steam, Proton, Lutris funcionam perfeitamente</li>\n</ul>\n<p>Desvantagens:</p>\n<ul>\n<li>Desempenho ligeiramente inferior em aplicações profissionais específicas</li>\n</ul>\n<p>Melhor para: Usuários que querem simplicidade e estabilidade</p>\n<h2><a href=\"#nvidia\" aria-hidden=\"true\" class=\"anchor\" id=\"nvidia\"></a>NVIDIA</h2>\n<p>Vantagens:</p>\n<p>Melhor desempenho em:</p>\n<ul>\n<li>Edição de vídeo (DaVinci Resolve, Blender)</li>\n<li>Inteligência Artificial / Machine Learning</li>\n<li>Renderização 3D</li>\n<li>Aplicações profissionais que usam CUDA</li>\n</ul>\n<p>Desvantagens:</p>\n<ul>\n<li>Drivers proprietários — Precisa instalar manualmente</li>\n<li>Pode quebrar após atualizações — Kernel atualiza, driver para de funcionar</li>\n<li>Configuração mais complexa — Wayland tem problemas históricos</li>\n<li>Requer manutenção — Você precisa entender como gerenciar drivers\nMelhor para: Profissionais que dependem de software específico NVIDIA</li>\n</ul>\n<h3><a href=\"#conclusão-amd-vs-nvidia\" aria-hidden=\"true\" class=\"anchor\" id=\"conclusão-amd-vs-nvidia\"></a>Conclusão: AMD vs NVIDIA</h3>\n<ul>\n<li>Para iniciantes: AMD é muito mais tranquilo. Funciona imediatamente e você não precisa se preocupar com drivers.</li>\n<li>Para profissionais: NVIDIA vale o esforço extra se você usa DaVinci Resolve, AI/ML ou softwares que dependem de CUDA.</li>\n<li>Ambas funcionam no Linux, mas AMD exige menos conhecimento técnico.</li>\n</ul>\n<h2><a href=\"#processadores-intel-vs-amd\" aria-hidden=\"true\" class=\"anchor\" id=\"processadores-intel-vs-amd\"></a>Processadores: Intel vs AMD</h2>\n<p>Boa notícia: ambos funcionam perfeitamente no Linux.</p>\n<p>-Intel: Gráficos integrados (Intel UHD, Iris Xe) funcionam nativamente\n-AMD: APUs Ryzen com Radeon integrada também funcionam nativamente\nProcessadores não são um problema no Linux em 2026.</p>\n<h2><a href=\"#protocolo-de-exibição-xorg-vs-wayland\" aria-hidden=\"true\" class=\"anchor\" id=\"protocolo-de-exibição-xorg-vs-wayland\"></a>Protocolo de Exibição: Xorg vs Wayland</h2>\n<p>Pense em Xorg e Wayland como &quot;maestros&quot; entre seus aplicativos e o hardware (monitor, mouse, teclado). Eles desenham janelas na tela e gerenciam interações.</p>\n<h3><a href=\"#xorg-x11--o-veterano\" aria-hidden=\"true\" class=\"anchor\" id=\"xorg-x11--o-veterano\"></a>Xorg (X11) — O Veterano</h3>\n<p>Usado em:</p>\n<ul>\n<li>Linux Mint (Cinnamon)\nDistribuições mais conservadoras, Ambientes de desktop tradicionais</li>\n</ul>\n<p>Vantagens:</p>\n<ul>\n<li>Extremamente estável e maduro</li>\n<li>Compatibilidade universal com aplicativos</li>\n<li>Suporte a todo tipo de hardware</li>\n</ul>\n<p>Limitações:</p>\n<ul>\n<li>Sem suporte nativo a VRR (Variable Refresh Rate / FreeSync / G-Sync)</li>\n<li>Problemas de tearing — Imagem &quot;rasgada&quot; ao mover janelas (como corrigir)</li>\n<li>Suporte 4K limitado — Funciona, mas não é otimizado</li>\n<li>Arquitetura antiga — Código de décadas atrás\nMelhor para: Quem usa aplicativos que ainda não suportam Wayland (alguns softwares profissionais)</li>\n</ul>\n<h3><a href=\"#wayland--o-futuro\" aria-hidden=\"true\" class=\"anchor\" id=\"wayland--o-futuro\"></a>Wayland — O Futuro</h3>\n<p>Usado em:</p>\n<ul>\n<li>ZorinOS (GNOME),Fedora,Ubuntu (padrão desde 2017),KDE Plasma (modo padrão)</li>\n</ul>\n<p>Vantagens:</p>\n<ul>\n<li>Suporte nativo a VRR — Monitores de alta taxa de atualização funcionam perfeitamente</li>\n<li>Excelente suporte 4K — Renderização otimizada</li>\n<li>Sem tearing por padrão — Imagem sempre fluida</li>\n<li>Mais seguro — Isolamento entre aplicativos</li>\n<li>Melhor desempenho — Menos overhead, mais FPS</li>\n</ul>\n<p>Limitações:</p>\n<ul>\n<li>\n<p>Alguns aplicativos ainda rodam via XWayland (camada de compatibilidade)</p>\n</li>\n<li>\n<p>Gravação de tela pode requerer permissões adicionais</p>\n</li>\n<li>\n<p>OBS Studio funciona perfeitamente, mas requer configuração inicial</p>\n</li>\n<li>\n<p>Melhor para: Maioria dos usuários, especialmente gamers e quem usa monitores modernos</p>\n</li>\n</ul>\n<h3><a href=\"#recomendação\" aria-hidden=\"true\" class=\"anchor\" id=\"recomendação\"></a>Recomendação</h3>\n<ul>\n<li>Use Wayland se sua distro oferece (ZorinOS, Fedora, Ubuntu)</li>\n<li>Use Xorg se você precisa de compatibilidade máxima com software antigo\nEm 2026, Wayland está maduro o suficiente para ser a escolha padrão.</li>\n</ul>\n<h2><a href=\"#hardware-de-terceiros--cuidado\" aria-hidden=\"true\" class=\"anchor\" id=\"hardware-de-terceiros--cuidado\"></a>Hardware de Terceiros — Cuidado!</h2>\n<p>Nem todo hardware &quot;funciona perfeitamente&quot; no Linux. Aqui está a realidade:</p>\n<h3><a href=\"#hardware-que-funciona-bem\" aria-hidden=\"true\" class=\"anchor\" id=\"hardware-que-funciona-bem\"></a>Hardware Que Funciona Bem</h3>\n<ul>\n<li>Webcams Logitech — Maioria funciona sem drivers</li>\n<li>Teclados e mouses — 99,9% funcionam nativamente</li>\n<li>Monitores — Todos funcionam, mas veja a seção Xorg vs Wayland</li>\n<li>SSDs e HDs — Compatibilidade total</li>\n<li>Impressoras HP e Brother — Excelente suporte via HPLIP e drivers oficiais</li>\n</ul>\n<h3><a href=\"#hardware-problemático\" aria-hidden=\"true\" class=\"anchor\" id=\"hardware-problemático\"></a>Hardware Problemático</h3>\n<ul>\n<li>Placas de captura (Elgato, AVerMedia):</li>\n<li>Suporte limitado ou inexistente</li>\n<li>Elgato HD60 S funciona, mas HD60 S+ tem problemas</li>\n<li>Considere alternativas genéricas baseadas em UVC (USB Video Class)</li>\n</ul>\n<h3><a href=\"#interfaces-de-áudio-profissionais\" aria-hidden=\"true\" class=\"anchor\" id=\"interfaces-de-áudio-profissionais\"></a>Interfaces de áudio profissionais:</h3>\n<p>-Focusrite Scarlett — Funciona bem\n-PreSonus — Funciona\n-RME, Universal Audio — Podem exigir configuração complexa\n-Verifique no <a href=\"https://wiki.linuxaudio.org/\">Linux Audio Wiki</a> antes de comprar</p>\n<h3><a href=\"#periféricos-rgb\" aria-hidden=\"true\" class=\"anchor\" id=\"periféricos-rgb\"></a>Periféricos RGB:</h3>\n<p>Iluminação RGB de teclados/mouses/gabinetes pode não funcionar\nSolução: OpenRGB — Ferramenta que controla maioria dos dispositivos RGB\nNem todos os dispositivos são suportados, verifique antes</p>\n<h3><a href=\"#notebooks-com-gráficos-híbridos-intel--nvidia\" aria-hidden=\"true\" class=\"anchor\" id=\"notebooks-com-gráficos-híbridos-intel--nvidia\"></a>Notebooks com gráficos híbridos (Intel + NVIDIA):</h3>\n<p>-Funciona, mas requer configuração (Optimus)\n-Considere usar apenas a Intel integrada se não precisar de desempenho gráfico</p>\n<h2><a href=\"#como-verificar-compatibilidade\" aria-hidden=\"true\" class=\"anchor\" id=\"como-verificar-compatibilidade\"></a>Como Verificar Compatibilidade</h2>\n<p>Antes de comprar hardware, pesquise:</p>\n<p>&quot;nome do produto + Linux compatibility&quot;\nVerifique o subreddit r/linux_hardware\nConsulte a lista de hardware certificado para Ubuntu</p>\n<h2><a href=\"#passo-a-passo-instalando-sua-primeira-distro\" aria-hidden=\"true\" class=\"anchor\" id=\"passo-a-passo-instalando-sua-primeira-distro\"></a>Passo a Passo: Instalando Sua Primeira Distro</h2>\n<p>Antes de Instalar</p>\n<ul>\n<li>Faça backup de tudo — Sério. Tudo.</li>\n<li>Decida: Dual-boot (Windows + Linux) ou Linux puro?</li>\n<li>Verifique se seu PC é UEFI ou BIOS — Necessário para configurar a BIOS</li>\n<li>Desative Secure Boot — Facilita a instalação (você pode reativar depois)</li>\n</ul>\n<h2><a href=\"#instalação-básica\" aria-hidden=\"true\" class=\"anchor\" id=\"instalação-básica\"></a>Instalação Básica</h2>\n<ol>\n<li>Conecte o pendrive bootável criado com Ventoy, Rufus ou Etcher</li>\n<li>Reinicie o computador e pressione a tecla de boot (geralmente F12, F2, DEL ou ESC)</li>\n<li>Selecione o pendrive no menu de boot</li>\n<li>Teste o sistema Live antes de instalar</li>\n<li>Clique em &quot;Instalar&quot; e siga o assistente:</li>\n<li>Escolha o idioma (Português Brasil)</li>\n<li>Conecte-se ao Wi-Fi (se disponível)</li>\n<li>Escolha o tipo de instalação:</li>\n<li>Apagar disco e instalar (recomendado para iniciantes),Instalar junto com Windows (dual-boot),Particionamento manual (avançado)</li>\n<li>Crie seu usuário e senha</li>\n<li>Aguarde a instalação (10-30 minutos)</li>\n<li>Reinicie e remova o pendrive</li>\n</ol>\n<p>Pronto! Você está no Linux.</p>\n<h2><a href=\"#primeiros-passos-após-instalar\" aria-hidden=\"true\" class=\"anchor\" id=\"primeiros-passos-após-instalar\"></a>Primeiros Passos Após Instalar</h2>\n<ol>\n<li>Atualize o Sistema\nAbra o terminal (Ctrl + Alt + T) e digite:</li>\n</ol>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo apt update &amp;&amp; sudo apt upgrade -y\n</code></pre>\n<p>Isso atualiza todos os pacotes do sistema.</p>\n<ol start=\"2\">\n<li>Instale Drivers (Se Necessário)</li>\n</ol>\n<ul>\n<li>ZorinOS: Abra &quot;Software &amp; Updates&quot; &gt; &quot;Additional Drivers&quot;</li>\n<li>Linux Mint: Abra &quot;Driver Manager&quot;, Se você tem placa NVIDIA, instale o driver proprietário aqui.</li>\n</ul>\n<ol start=\"3\">\n<li>Configure o Timeshift (Backup Automático)</li>\n</ol>\n<ul>\n<li>Linux Mint: Já vem instalado, apenas configure.</li>\n<li>ZorinOS/Ubuntu:</li>\n</ul>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo apt install timeshift -y\n</code></pre>\n<p>Crie snapshots antes de grandes mudanças no sistema.</p>\n<ol start=\"4\">\n<li>Aprenda Comandos Básicos do Terminal\nNão tenha medo do terminal! Aqui estão os mais úteis:</li>\n</ol>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\"># Atualizar sistema\nsudo apt update &amp;&amp; sudo apt upgrade\n\n# Instalar programa\nsudo apt install nome-do-programa\n\n# Remover programa\nsudo apt remove nome-do-programa\n\n# Limpar pacotes não utilizados\nsudo apt autoremove\n\n# Ver espaço em disco\ndf -h\n\n# Listar arquivos\nls -la\n\n# Copiar arquivo\ncp origem destino\n\n# Mover arquivo\nmv origem destino\n\n# Ver conteúdo de arquivo\ncat arquivo.txt\n\n# Editar arquivo de texto\nnano arquivo.txt\n</code></pre>\n<h2><a href=\"#recursos-e-comunidades-brasileiras\" aria-hidden=\"true\" class=\"anchor\" id=\"recursos-e-comunidades-brasileiras\"></a>Recursos e Comunidades Brasileiras</h2>\n<p>Fóruns e Comunidades</p>\n<p>-Diolinux — diolinux.com.br\n-Viva o Linux — vivaolinux.com.br\n-r/linuxbrasil — Subreddit brasileiro sobre Linux\n-Telegram: Grupos de ZorinOS Brasil, Linux Mint Brasil</p>\n<h2><a href=\"#canais-no-youtube\" aria-hidden=\"true\" class=\"anchor\" id=\"canais-no-youtube\"></a>Canais no YouTube</h2>\n<ul>\n<li>Diolinux — Notícias, reviews, tutoriais</li>\n<li>Bóson Treinamentos — Cursos completos de Linux</li>\n<li>Gabriel Torres — Tutoriais técnicos</li>\n</ul>\n<h2><a href=\"#conclusão\" aria-hidden=\"true\" class=\"anchor\" id=\"conclusão\"></a>Conclusão</h2>\n<p>Migrar para Linux em 2026 é mais fácil do que nunca. Com distribuições como ZorinOS e Linux Mint, você tem sistemas estáveis, bonitos e funcionais sem precisar ser um expert técnico.</p>\n<p>Lembre-se:</p>\n<ul>\n<li>Comece com uma distro amigável (ZorinOS ou Mint)</li>\n<li>Não tenha medo de testar antes de instalar (Live USB)</li>\n<li>A comunidade está aqui para ajudar</li>\n<li>Erros fazem parte do aprendizado</li>\n</ul>\n<h3><a href=\"#\" aria-hidden=\"true\" class=\"anchor\" id=\"\"></a></h3>\n<p>O Linux não é perfeito, mas oferece liberdade, controle e privacidade que sistemas proprietários simplesmente não podem igualar.</p>\n<h3><a href=\"#-1\" aria-hidden=\"true\" class=\"anchor\" id=\"-1\"></a></h3>\n<p>Sobre o autor: Carlos Gabriel é desenvolvedor de sistemas com 7 anos de experiência em Linux. Atualmente usa Fedora com Hyprland em sua máquina principal e contribui com a comunidade  de software livre.</p>\n<p>Gostou deste guia? Compartilhe com amigos que estão pensando em migrar para Linux. Tem dúvidas? Deixe nos comentários ou participe das comunidades mencionadas acima.</p>\n<h2><a href=\"#fontes\" aria-hidden=\"true\" class=\"anchor\" id=\"fontes\"></a>Fontes</h2>\n<ul>\n<li><a href=\"https://christitus.com/how-i-use-linux/\">https://christitus.com/how-i-use-linux/</a></li>\n<li><a href=\"https://pt.wikipedia.org/wiki/Linux\">https://pt.wikipedia.org/wiki/Linux</a></li>\n<li><a href=\"https://www.linux.org/\">https://www.linux.org/</a></li>\n</ul>\n<h5><a href=\"#créditos\" aria-hidden=\"true\" class=\"anchor\" id=\"créditos\"></a>Créditos</h5>\n<p>Agradeço a contribuição do Carlos Souza.</p>\n<p>GitHub: <a href=\"https://github.com/csouzape\">github.com/csouzape</a><br />\nX(antigo Twitter): <a href=\"https://x.com/kourge01\">x.com/kourge01</a>\\</p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-03T00:00:00-00:00",
      "image": "/media/pendrive.png",
      "authors": [
        {
          "name": "Carlos Souza",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/219468948?v=4"
        }
      ],
      "tags": [
        "tutorial",
        "linux"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//como-fazer-swap-em-zram.html",
      "url": "https://meus10centavos.vercel.app//como-fazer-swap-em-zram.html",
      "title": "Como fazer swap em Zram",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h2><a href=\"#como-fazer-swap-em-zram\" aria-hidden=\"true\" class=\"anchor\" id=\"como-fazer-swap-em-zram\"></a>Como Fazer Swap em Zram</h2>\n<p>Swap é muito útil no mundo Linux. Como dito em Como fazer swap\n, do Fabrício, o artigo apenas ensina como fazer swap via swapfile em distribuições médias. Porém, aqui serei mais complexo no ramo de swap. Sugiro que vejam primeiro o blog do Fabrício antes deste.</p>\n<p>Artigo citado: <a href=\"https://www.meus10centavos.com.br/como-fazer-swap.html\">Como fazer SWAP</a></p>\n<h2><a href=\"#zram\" aria-hidden=\"true\" class=\"anchor\" id=\"zram\"></a>Zram</h2>\n<p>O Zram (anteriormente compcache) é um módulo do kernel Linux que cria um dispositivo de bloco comprimido na RAM, funcionando como um “disco” de troca (swap) virtual. Ao comprimir dados em tempo real na memória, ele evita o uso do disco rígido ou SSD, que são mais lentos.</p>\n<ul>\n<li>\n<p>Em resumo, o Zram é muito mais rápido do que swapfile.</p>\n</li>\n<li>\n<p>É muito útil em sistemas rolling release, pois faz bastante diferença na velocidade do sistema, como no Fedora ou Arch Linux.</p>\n</li>\n</ul>\n<h2><a href=\"#arch-linux\" aria-hidden=\"true\" class=\"anchor\" id=\"arch-linux\"></a>Arch Linux</h2>\n<p>No Arch Linux temos o zram-generator. Certifique-se de que ele está instalado:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">\nsudo pacman -S zram-generator\n</code></pre>\n<p>Crie o arquivo de configuração em <code>/etc/systemd/zram-generator.conf</code>:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo vim /etc/systemd/zram-generator.conf\n</code></pre>\n<p>Ou, se preferir o Nano:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo nano /etc/systemd/zram-generator.conf\n</code></pre>\n<p>Dentro do arquivo zram-generator.conf, coloque:</p>\n<p>Para abordagem automática</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">[zram0]\n</code></pre>\n<h2><a href=\"#sugestão-de-tamanhos-de-zram\" aria-hidden=\"true\" class=\"anchor\" id=\"sugestão-de-tamanhos-de-zram\"></a>Sugestão de tamanhos de Zram</h2>\n<p>Se você tem 4 GB de RAM, use 2,5 GB de Zram ou igual\nSe tem 8 GB de RAM, use 4 GB de swap ou igual\nSe tem 16 GB de RAM, use 8 GB ou 12 GB de Zram\nSe tem 32 GB de RAM, use 4 GB ou 8 GB, apenas para manter</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">Obs.: O Zram é útil em máquinas com mais de 16 GB de RAM, pois quando a RAM chega a 100%, o Zram ou swapfile entra em ação para evitar travamentos. Quando o sistema não tem swap, ele pode simplesmente travar e fechar processos.\n</code></pre>\n<p>Exemplo de configuração manual:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">[zram0]\nzram-size = 4096  # exemplo de 4 GB de swap\n</code></pre>\n<p>Sempre use:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">zram-size = {RAM} x 1024\n</code></pre>\n<p>Exemplo: <code>8 GB = 8192</code></p>\n<h2><a href=\"#50-da-ram\" aria-hidden=\"true\" class=\"anchor\" id=\"50-da-ram\"></a>50% da ram</h2>\n<p>No mesmo arquivo, use:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">zram-size = ram / 2\n</code></pre>\n<p>Isso define o Zram como 50% da RAM total.</p>\n<h2><a href=\"#config-recomendada\" aria-hidden=\"true\" class=\"anchor\" id=\"config-recomendada\"></a>Config recomendada</h2>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">[zram0]\nzram-size = ram / 2\ncompression-algorithm = zstd\nswap-priority = 100\n\n</code></pre>\n<p>rapido e util</p>\n<h2><a href=\"#aplicar\" aria-hidden=\"true\" class=\"anchor\" id=\"aplicar\"></a>Aplicar</h2>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo systemctl daemon-reexec\nsudo systemctl start systemd-zram-setup@zram0.service\n</code></pre>\n<p>apos o reinicio execute:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">swapon --show\n</code></pre>\n<h5><a href=\"#créditos\" aria-hidden=\"true\" class=\"anchor\" id=\"créditos\"></a>Créditos</h5>\n<p>Agradeço a contribuição do Carlos Souza.</p>\n<p>GitHub: <a href=\"https://github.com/csouzape\">github.com/csouzape</a><br />\nX(antigo Twitter): <a href=\"https://x.com/kourge01\">x.com/kourge01</a><br />\nReddit: <a href=\"https://www.reddit.com/user/csouzape/\">reddit.com/user/csouzape/</a></p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-02T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Carlos Souza",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/219468948?v=4"
        }
      ],
      "tags": [
        "linux",
        "tutorial"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//como-fazer-swap.html",
      "url": "https://meus10centavos.vercel.app//como-fazer-swap.html",
      "title": "Como fazer SWAP",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h2><a href=\"#o-que-é-swap\" aria-hidden=\"true\" class=\"anchor\" id=\"o-que-é-swap\"></a>O que é SWAP?</h2>\n<p>A swap é uma extensão temporária da sua memória RAM, feita usando o espaço do seu SSD ou HD tipo uma &quot;memória RAM fake&quot;.</p>\n<p>Quando a RAM enche, o Linux começa a jogar dados &quot;menos usados&quot; pra esse espaço da swap, pra liberar RAM pra o que é mais urgente.</p>\n<p>&quot;E se eu não fizer isso?&quot;, você pode questionar. O Linux é um sistema que obedece cegamente, caso você esgote a memória RAM e não tenha uma swap configurada, ele simplismente vai travar o sistema e você vai ter que reiniciar sua máquina. Digo isso por experiência própria...</p>\n<p>&quot;Por qual motivo eu nunca ouvi falar disso?&quot;, talvez você esteja se questionando. Se você está nesse artigo então é grande a possibilidade de você ser recém-chegado no mundo Linux migrando do Ruindows, bem provavelmente. Os outros sistemas fazem esse gerenciamento de forma automática e você não precisa nem saber que isso existe.</p>\n<h2><a href=\"#como-a-swap-funciona-na-prática\" aria-hidden=\"true\" class=\"anchor\" id=\"como-a-swap-funciona-na-prática\"></a>Como a SWAP funciona na prática?</h2>\n<p>O sistema monitora o uso da RAM.</p>\n<p>Quando a RAM se aproxima do limite (dependendo do valor de <code>swappiness</code>), ele começa a mover partes da memória pouco usadas pra swap. Essas partes continuam acessíveis, mas ficam no SSD/HD (muito mais lento que a RAM). Isso evita travamentos e aumenta a estabilidade, principalmente em multitarefa.</p>\n<h3><a href=\"#observações-importantes\" aria-hidden=\"true\" class=\"anchor\" id=\"observações-importantes\"></a>Observações importantes!</h3>\n<p><strong>Swap é mais lenta que RAM.</strong><br />\nPorque seu SSD (ou pior, um HD) é muito mais lento que RAM. Se o sistema começar a depender demais da swap, você sente um lag violento.</p>\n<p><strong>Swap constante = desgaste do SSD.</strong><br />\nSwap em SSD não é o fim do mundo, mas se ela for usada o tempo todo, vai acelerar o desgaste. Por isso é bom manter a RAM &quot;limpa&quot; e limitar o uso da swap com <code>swappiness</code>.</p>\n<h2><a href=\"#configurando-swap\" aria-hidden=\"true\" class=\"anchor\" id=\"configurando-swap\"></a>Configurando SWAP</h2>\n<p>Rode o comando:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">swapon --show\n</code></pre>\n<p>Para verificar ter certeza se você tem uma swap, mas 90% de chance de não ter.<br />\nSe você não tem swap não terá nenhum retorno, mas se você tiver swap irá ter retorno semelhante a este:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">NAME      TYPE SIZE USED PRIO\n/swapfile file   8G   3G   -2\n</code></pre>\n<h4><a href=\"#criarativar-swap-file-se-não-tiver\" aria-hidden=\"true\" class=\"anchor\" id=\"criarativar-swap-file-se-não-tiver\"></a>Criar/ativar SWAP file (se não tiver)</h4>\n<h5><a href=\"#comando-completo\" aria-hidden=\"true\" class=\"anchor\" id=\"comando-completo\"></a>Comando completo:</h5>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\"># Cria um swap de 4GB (ajuste se quiser)\nsudo fallocate -l 4G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\n</code></pre>\n<p>Depois adicione no fstab para ativar automaticamente:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab\n</code></pre>\n<h5><a href=\"#comando-com-explicações\" aria-hidden=\"true\" class=\"anchor\" id=\"comando-com-explicações\"></a>Comando com explicações:</h5>\n<p>Criar um arquivo de swap com 4 GB</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo fallocate -l 4G /swapfile\n</code></pre>\n<p>Criamos um arquivo especial de 4 GB chamado <code>/swapfile</code>, que será usado como “RAM falsa” quando a memória real estiver cheia.</p>\n<p>Restringir o acesso ao arquivo de swap</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo chmod 600 /swapfile\n</code></pre>\n<p>Demos permissão de leitura/escrita só pro root, por segurança. Isso impede que outro processo leia ou altere esse arquivo diretamente.</p>\n<p>Formatar esse arquivo como uma área de swap</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo mkswap /swapfile\n</code></pre>\n<p>Dizemos ao sistema:\n“Esse arquivo aqui é uma área de swap, tá ok? 👉👉 ”<br />\nEle cria a estrutura de controle necessária.</p>\n<p>Ativar a swap agora</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">sudo swapon /swapfile\n</code></pre>\n<p>Ligamos a swap imediatamente.<br />\nA partir desse momento, o sistema pode começar a usar esse arquivo como memória auxiliar.\\</p>\n<p>Configurar para ativar automaticamente no boot</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab\n</code></pre>\n<p>Alteramos o arquivo <code>/etc/fstab</code> (que diz o que montar no boot), pra garantir que <strong>sempre que você reiniciar, a swap vai estar ativa.</strong></p>\n<p>Por padrão, o Linux só usa a swap quando a RAM já está no limite. Você pode mudar isso pra ele ser um pouco mais &quot;esperto&quot; e já ir aliviando antes de travar tudo.</p>\n<p>Rode:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">cat /proc/sys/vm/swappiness\n</code></pre>\n<p>Para verificar o valor atual. Provavelmente <code>60</code></p>\n<p>Reduza o lag e evitar travamento total, coloca algo tipo <code>20</code>:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">echo 'vm.swappiness=20' | sudo tee -a /etc/sysctl.conf\nsudo sysctl -p\n</code></pre>\n<p>Isso faz o sistema usar a swap de forma mais equilibrada com a RAM. Se quiser testar o comportamento, você pode começar com <code>30</code> e ir ajustando depois.</p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-02T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "tutorial",
        "linux"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//como-aprender-um-novo-idioma.html",
      "url": "https://meus10centavos.vercel.app//como-aprender-um-novo-idioma.html",
      "title": "Como aprender um novo idioma",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h3><a href=\"#observações\" aria-hidden=\"true\" class=\"anchor\" id=\"observações\"></a>Observações</h3>\n<p>Os exemplos de idioma alvo de prendizagem citado será o inglês, por ser o principal idioma de quem quer aprender outro idioma, mas o método de estudo que vou te passar podem ser aplicado para quaisquer idiomas.</p>\n<p>(Não cheguei a testar em idiomas asiáticos, idiomas locais do containente africano e nem arábicos)</p>\n<p><strong>APRENDER UM IDIOMA DEPENDE ÚNICA E EXCLUSIVAMENTE DE VOCÊ, É UM PROCESSO PURAMENTE MERITOCRÁTICO!</strong></p>\n<h2><a href=\"#por-que-aprender-outra-língua\" aria-hidden=\"true\" class=\"anchor\" id=\"por-que-aprender-outra-língua\"></a>Por que aprender outra língua?</h2>\n<p>Mais flexbilidade cognitiva, bilíngues/poliglotas tem mais facilidades em testes que exigem controle do processamento da linguagem, além de criar uma &quot;reserva cognitiva&quot; que mantem lucidez de pensamento por mais tempo na velhice. As consequência das doença neurodegenerativas tem sintomas mais brando em pessoas multilíngues, a Demência por exemplo, tem um atraso de 4 anos e meio!</p>\n<p>Aprender outra língua também cria um repertório maior para pensar e capacidade expressar-se com você mesmo (o nonólogo interno, a voz da sua cabeça). Pois a denpender da língua ou das línguas que você fala, isso pode moldar sua forma de perceber concitos abstratos como tempo linear, futuro, passado <em>et sim</em>.</p>\n<p>Melhora a capacidade de lidar com dados e informações, pois a memória de trabalho é aprimorada</p>\n<p>Estudos mostram que pessoas multilíngues tem maior capacidade de impaita.</p>\n<h2><a href=\"#meta-aprendizagem\" aria-hidden=\"true\" class=\"anchor\" id=\"meta-aprendizagem\"></a>Meta-aprendizagem</h2>\n<p>Antes de aprender outra língua o mais importante é aprender a aprender. Entender quais os processos por trás da aquisição de conhecimentos, para isso é importante que você pesquise como esses processos acontecem para a partir de então conseguir otimizar esses processos de acordo com o que funciona melhor para você, pois cada pessoa tem resultados diferentes com métodos diferentes, ou seja, o que funciona pra mim talvez não funcione para ti.\nMas de qualquer maneira irei passar o caminho das pedras que eu testei, segui e obtive os resultados que tenho.</p>\n<h3><a href=\"#curva-de-esquecimento-de-ebbinghaus\" aria-hidden=\"true\" class=\"anchor\" id=\"curva-de-esquecimento-de-ebbinghaus\"></a>Curva de esquecimento de Ebbinghaus</h3>\n<img src=\"/media/imagem_curva_de_aprendizagem.png\" alt=\"Curva de esquecimento de Ebbinghaus\" width=\"700\" height=\"500\">\n<p>Caso você não tenha entendido o diagrama acima, volte ao ensino médio e aprenda ler um gráfico, sinceramente não tem motivo pra você estar em um blog de T.I. se é incapaz de ler isso!<br />\nUma ressalva se você é de outra área e veio querendo aprender outro idioma pra crescimento profissional, nesse caso você está de parabéns.</p>\n<p>Um dos principais conceitos que você deve entender é a <a href=\"https://en.wikipedia.org/wiki/Forgetting_curve\">Curva de esquecimento de Ebbinghaus</a>. Segundo a teoria de Ebbinghaus, após você aprender algo novo em 24 horas você esquece 50% do conteúdo e para mitigar esse problema basta revisar com constância até que esse conteúdo se torne algo tão irraizado que você não esqueça mais.</p>\n<h2><a href=\"#principio-de-pareto\" aria-hidden=\"true\" class=\"anchor\" id=\"principio-de-pareto\"></a>Principio de Pareto</h2>\n<img src=\"/media/Principio_de _Pareto.png\" alt=\"Princípio de Pareto\" width=\"700\" height=\"500\">\n<p>O <a href=\"https://www.google.com/search?q=principio+de+pareto&amp;oq=principio+de+pare&amp;gs_lcrp=EgZjaHJvbWUqBwgAEAAYgAQyBwgAEAAYgAQyBggBEEUYOTIHCAIQABiABDIHCAMQABiABDIHCAQQABiABDIHCAUQABiABDIICAYQABgWGB4yCAgHEAAYFhgeMggICBAAGBYYHjIICAkQABgWGB7SAQg1NTQwajBqN6gCALACAA&amp;sourceid=chrome&amp;ie=UTF-8#vhid=Zo4Qt2IpTrhbqM&amp;vssid=l\"><strong>Princípio de Pareto</strong></a>, também conhecido como a <strong>regra 80/20</strong>, foi formulado pelo economista italiano <strong>Vilfredo Pareto</strong> no final do século XIX. Ele observou que 80% das terras na Itália pertenciam a 20% da população, e essa proporção se repetia em muitos outros contextos.</p>\n<h4><a href=\"#o-que-é-o-princípio-de-pareto\" aria-hidden=\"true\" class=\"anchor\" id=\"o-que-é-o-princípio-de-pareto\"></a>O que é o Princípio de Pareto?</h4>\n<p>De forma geral, o princípio afirma que <strong>80% das consequências vêm de 20% das causas</strong>. É uma regra empírica que pode ser aplicada em diversas áreas, como negócios, gestão de tempo, economia, produtividade e até mesmo no dia a dia.</p>\n<h4><a href=\"#como-isso-se-aplica-no-aprendizado-de-idiomas\" aria-hidden=\"true\" class=\"anchor\" id=\"como-isso-se-aplica-no-aprendizado-de-idiomas\"></a>Como isso se aplica no aprendizado de idiomas?</h4>\n<p>Você tendo decorado 20% do vocabulário coditiano de uma língua você consegue entender e participar de 80% dos diálogos, texto, mídias etc.</p>\n<h2><a href=\"#pilares-do-idioma\" aria-hidden=\"true\" class=\"anchor\" id=\"pilares-do-idioma\"></a>Pilares do idioma</h2>\n<p>Toda as línguas se desenvolvem sob 4 pilares: <br />\nEscrita - Capacidade de descrever ideias e se expressar por escrito. <br />\nLeitura - Capacidade de entender a absorver ideias, conceitos, sentimentos passados por escrito. <br />\nEscuta - Capaciade de entender nativos e estrangeiros em um idioma X, inglês por exemplo. <br />\nFala - A parte mais deseja e por isso muitas pessoas focam nela e deixam as outras de lado. A capacidade de expressar-se oralmente com nativos ou estrangeiros em um idioma X.</p>\n<h2><a href=\"#fluência\" aria-hidden=\"true\" class=\"anchor\" id=\"fluência\"></a>Fluência</h2>\n<p>A fluência constrói-se a partir do aprefeisoamento e equilíbrio das 4 habilidades citadas anteriormente.\nHá quem pense erroneamente que fluência é saber todas as palavras. No inglês há uma estimativa 250 mil palavras distintas, saber todas é impossível até para os próprios nativos. Em comparação no português há uma estimativa mais próxima de 370 mil palavras, de acordo com a última edição do Vocabulário Ortográfico da Língua Portuguesa (VOLP). <strong>Áulico, ignívomo, uxoricídio</strong>, são exemplos de palavras em português que eu aposto que você desconhece pelo menos uma delas, detalhe que essa é sua lingua mãe. Sendo assim, não se obrigue saber todas as palavras dos idiomas que você se propôr aprender.</p>\n<h2><a href=\"#ferramentas\" aria-hidden=\"true\" class=\"anchor\" id=\"ferramentas\"></a>Ferramentas</h2>\n<h4><a href=\"#duolingo-e-similares\" aria-hidden=\"true\" class=\"anchor\" id=\"duolingo-e-similares\"></a><a href=\"https://pt.duolingo.com/\">Duolingo</a> e similares</h4>\n<p>Para nós da geração Z que crecemos com forte influência dos Estados Unidos da América o inglês é uma lingua que tivemos contato desde muito cedo através de jogo, filmes, termos e outras fontes. Logo, é um idioma que mesmo que você não tenha pleno domínio, mas com certeza você tem noção de palavras e frases muito básicas como: <em>like</em>, <em>I love you</em>, <em>water</em>, <em>red</em>. Justamente o típo de vocabulário que o <a href=\"https://pt.duolingo.com/\">Duolingo</a> e apps similares te passam, por tanto é extremamente ineficiente para nós usarmos esses apps para aprender o inglês, mas para idiomas completamente fora de nossa realidade, aqueles que parecem idioma alienigena (na visão de um ocidental, nativo do continente americano da geração Z) tipo Alemão, Russo, Árabe, Francês... nesses caso é de muita utilidade começar por eles.</p>\n<h2><a href=\"#youtube-netflix-filmes\" aria-hidden=\"true\" class=\"anchor\" id=\"youtube-netflix-filmes\"></a>YouTube, Netflix, Filmes</h2>\n<p>Plataformas de filmes e streaming são exelêntes formas de ter contato com o idioma falado e treinar bastante a escuta, quando você está em um nível pelo menos no intermediário, quando você começa ter compreenção de ideias mais complexas e pensamentos abstratos podendo manter uma linha de raciocínio por um longo período além de ter vocabulário suficiente e discernimento dos sons para conseguir acompanhar um nativo.</p>\n<h2><a href=\"#animações-infantis\" aria-hidden=\"true\" class=\"anchor\" id=\"animações-infantis\"></a>Animações infantis</h2>\n<p>As animaçõees infantis, por exemplo Peppa Pig, são perfeitas para ter contato inicial com o idioma falado de modo não haver sentenças grande e complexas exelênte para inicar o treino da escuta</p>\n<h2><a href=\"#sites-de-notícias\" aria-hidden=\"true\" class=\"anchor\" id=\"sites-de-notícias\"></a>Sites de notícias</h2>\n<p>Perfeito para ter contato com o idioma escrito sem extender muito a ideia igual um livro que demanda um nível maior de aptidão com a leitura.<br />\nSugiro o <a href=\"https://www.newsinlevels.com/\">News in Levels</a> nele você consegue escolher seu nível de inglês e a partir disso ele te expõe as notícias com vocabulário e sentenças gramaticais mais complexas ou simples de acordo com sua escolha.</p>\n<h2><a href=\"#chat-gpt\" aria-hidden=\"true\" class=\"anchor\" id=\"chat-gpt\"></a>Chat GPT</h2>\n<p>Além de possibilitar treinar a leitura também é muito bom para treinar a escrtita, você pode pedir para ele temas para você sobre e ainda para que ele te corrija ou ensine tópicos gramaticais que tiver dificuldade.</p>\n<h2><a href=\"#livros-dáticos\" aria-hidden=\"true\" class=\"anchor\" id=\"livros-dáticos\"></a>Livros dáticos</h2>\n<p>A escolha de um material didádico é uma decisão importante, quase um casamento. É ele que ira guiar-lhe para sanar as lacunas na sua gramática, e lembre-se: gramática não é apenas sobre como escrever certo, se você não souber gramática também irá falar errado. Dependendo do idioma isso significa não ser entendido ou ser mal interpretado, então cuidado!</p>\n<p>Material didático para aprender inglês eu recomento a série Grammar in Use de Cambrige</p>\n<p><img src=\"/media/esssential_grammar_in_use.png\" alt=\"Essential Grammar in Use\" width=\"150\"> <img src=\"/media/english_grammar_in_use.png\" alt=\"English Grammar in Use\" width=\"150\"> <img src=\"/media/advanced_grammar_in_use.png\" alt=\"Advanced Grammar in Use\" width=\"150\"></p>\n<p>Iniciante - intermediário - Avançado</p>\n<p>Todos dispõem de exelentes explicações e exercícios além de um teste diagnóstico no final caso você não souber onde tem deficiência, caso não souber nada comece pela primeira unidade do primeiro livro.</p>\n<p>O terceiro livro, <em>Advanced Grammar in Use</em> é descartável caso você não pretenda estudar fora ou escrever textos acadêmicos ou jornalísticos em inglês.</p>\n<p>Caso seu foco seja outo idioma eu recomendo a série Complete (leanguage) Grammar.</p>\n<p><img src=\"/media/german.png\" alt=\"German\" width=\"150\"> <img src=\"/media/italian.png\" alt=\"Italian\" width=\"150\"> <img src=\"/media/spanish.png\" alt=\"Spanish\" width=\"150\"> <img src=\"/media/french.png\" alt=\"French\" width=\"150\"></p>\n<p>Tem para todos os idiomas, mas é necessário que você saiba inglês pois eles são completamente em inglês.</p>\n<h2><a href=\"#anki\" aria-hidden=\"true\" class=\"anchor\" id=\"anki\"></a>Anki</h2>\n<p>Para revisar vocabulário eu recomendo o anki, tem disponível versão web, desktop para computares e laptops, e app para mobile.\nO <a href=\"https://apps.ankiweb.net/\">Anki</a> mistura os conceitos de revisão espaçado com base na teoria da <a href=\"https://en.wikipedia.org/wiki/Forgetting_curve\">Curva de esquecimento de Ebbinghaus</a> e a técnica de memorização chamada Flash Cards. Os Flash Cards nada mais são que cartões onde de um lado tem uma pergunta e do outro a resposta, ou no caso dos idiomas de um lado a palavra no idioma X e do outra a tradução. Também é possível colocar audios assim treinando a escuta, leitura, memorização, e falar de uma vez</p>\n<p><figure><img src=\"/media/flashcards.png\" alt=\"Flashcards Anki\" /></figure></p>\n<h4><a href=\"#configurando-seu-anki\" aria-hidden=\"true\" class=\"anchor\" id=\"configurando-seu-anki\"></a>Configurando seu Anki</h4>\n<p><a href=\"https://www.youtube.com/watch?v=p2o0TCOX4bg\">Como Baixar e Instalar ANKI no Computador/Notebook</a> <br />\n<a href=\"https://www.youtube.com/watch?v=rGJORQdsfzg\">Como colocar áudios no Anki em minutos</a> <br />\n<a href=\"https://www.youtube.com/watch?v=xzwVq-fv8_E&amp;t=326s\">Como Ter Um Controle De Toda a Sua Revisão No Anki</a></p>\n<h2><a href=\"#livros\" aria-hidden=\"true\" class=\"anchor\" id=\"livros\"></a>Livros</h2>\n<p>Livros não didáticos são a melhor forma de criar vocabulário e aprender gramática de forma menos chata, o ideal é que você leia livros do seu gosto e interesse no idioma que está aprendendo, se você tiver o nível necessário para tal obviamente.</p>\n<h2><a href=\"#parceiro-de-conversação\" aria-hidden=\"true\" class=\"anchor\" id=\"parceiro-de-conversação\"></a>Parceiro de conversação</h2>\n<p>Tem um amigo que está aprendendo o mesmo idioma que você para conversarem é o melhor e mais divertido jeito de estudar e melhorar a fala.</p>\n<p>Nesse quesito, caso você não tenha um parceiro de conversação eu recomendo o uso do app <a href=\"https://tandem.net/pt-br\">Tandem</a>, nesse app você ensina seu idioma para um estrangeiro e ele te ensina o idioma dele. Você ensina português pra um estadounidense e ele te esnina inglês, por exemplo.</p>\n<h1><a href=\"#trilha\" aria-hidden=\"true\" class=\"anchor\" id=\"trilha\"></a>Trilha</h1>\n<p>Segui o método do linguista e educador Stephen Krashen. O seu método <em>language acquisition</em> baseia-se na ideia de adiquirir o idioma ao invés de estudá-lo igual nas escolas tradicionais, mas o ideal é consiliar os dois métodos.<br />\nO linguista defende que um idioma é separado em duas partes: inputs e outputs (entrada e saída de informações). Ele defende que devemos nos dedicar ao inputs (consumir o idiomas) para depois fazermos outputs (expressar o idioma), antes de expressar suas ideias é necessário que construa um vocabulário base do idioma e após o vocabulário específico, o vocabulário específico é referente as palavras da sua área profissional. Uma enfermeira, um advogado, um programador, e um vendedor precisam de vocabulários diferentes e que talvez não faça sentido para uma pessoa de outra profissão saber. Por exemplo, bisturí, para a enfermeira e para o médico é essencial saber essa palavra. Para o programador, o advogado, e o vendedor é completamente inútil.</p>\n<p>A forma que usei para aprender seguindo esse método foi:</p>\n<p>1 - Cataloguei as duas mil palavras mais comuns do inglês e decorei usando o Anki.</p>\n<p>2 - Comecei construir vocabulário específico de assuntos e termos da minha área de atuação, hobbies e interesses.</p>\n<p>3 - iniciei nos conceitos fundamentais da gramática e estrutura da língua para entender como ler.</p>\n<p>4 - Comecei ler. Ler sites de notícas, blogs, textos curtos. Somente quando me senti capaz é que eu comecei ler livros completos.</p>\n<p>5 - comecei assistindo vídeos com aúdio em inglês e legenda também em inglês (pelo YouTube), pois eu aprendi ler antes de tudo, eu sabia que seria necessário antes de ir para a escuta.</p>\n<p>6 - Comecei assistir videos sem legenda, e audio em inglês. Também comecei ouvir podcasts, que é mais difícico, pois não há video para olhar os movimentos da boca.</p>\n<p>7 - Procurei parceiros de conversação. Há quem defenda que a fala deve começar desde o inicio, mas eu acho perigoso, pois você pode criar vícios de linguagens. É mais danoso ter um vício de linguagem do que ter um &quot;atraso&quot; na fala.</p>\n<p>Obviamente eu não passei de uma fase para a outra em dias ou semanas, fui no meu tempo e tendo noção dos meus limites e do que eu realmete sabia, mas esse processo pode ser otimizado tudo depende do seu tempo disponível e dedicação.</p>\n<p>Qualquer dúvida é só falar comigo. Bons estudos.</p>\n<h4><a href=\"#referências\" aria-hidden=\"true\" class=\"anchor\" id=\"referências\"></a>Referências:</h4>\n<p>Canais<br />\n<a href=\"https://www.youtube.com/@GabrielPoliglota\">Gabriel Poliglota</a><br />\n<a href=\"https://www.youtube.com/@MundodoPoliglota\">Mundo do Poliglota</a><br />\n<a href=\"https://www.youtube.com/@anagomes_me\">Ana Gomes</a><br />\n<a href=\"https://www.youtube.com/c/Bil%C3%ADnguese\">Bilíngue-se</a><br />\n<a href=\"https://www.youtube.com/@BemPoliglota\">Bem Poliglota</a><br />\n<a href=\"https://www.youtube.com/@Canguroenglish\">Canguro English</a><br />\n<a href=\"https://www.youtube.com/@LearnEnglishwithBobtheCanadian\">Learn English with Bob the Canadian</a><br />\n<a href=\"https://www.youtube.com/@RealLifeEnglish1/videos\">RealLife English</a></p>\n<p>Videos<br />\n<a href=\"https://youtu.be/T8ej2DfMnvQ?si=wLNTPQF_hruLoJaq\">Os poderes de saber mais de uma língua</a><br />\n<a href=\"https://www.youtube.com/watch?v=_fmqo8p-57Q\">Como seu cérebro muda ao falar outros idiomas</a></p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-01T00:00:00-00:00",
      "image": "/media/imagem_curva_de_aprendizagem.png",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "tutorial",
        "inglês",
        "curso"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//como-matar-processos-no-linux.html",
      "url": "https://meus10centavos.vercel.app//como-matar-processos-no-linux.html",
      "title": "Como matar processos no linux",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<p>É um tutorial de algo besta, mas eu sempre acabo esquecendo como faz, então vou salvar aqui</p>\n<p>Lista todos os processo que estão rodando</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>sudo</a-f> ss <a-co>-tlpn</a-co></code></pre>\n<p>Lista todos os processos que estão rodando na porta &lt;número&gt;</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>sudo</a-f> ss <a-co>-tlpn</a-co> <a-o>|</a-o> <a-f>grep</a-f> <a-o>&lt;</a-o>número<a-o>&gt;</a-o></code></pre>\n<p>Exemplo:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>sudo</a-f> ss <a-co>-tlpn</a-co> <a-o>|</a-o> <a-f>grep</a-f> 8000</code></pre>\n<p>Mata processo que está rodando na porta 8000</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>sudo</a-f> kill <a-co>-9</a-co> `<a-f>sudo</a-f> lsof <a-co>-t</a-co> <a-co>-i:</a-co><a-o>&lt;</a-o>número<a-o>&gt;</a-o>`\n<a-f>sudo</a-f> kill <a-co>-9</a-co> <a-eb>$(</a-eb><a-f>lsof</a-f><a-eb> </a-eb><a-co>-t</a-co><a-eb> </a-eb><a-co>-i:</a-co><a-o>&lt;</a-o><a-eb>número</a-eb><a-o>&gt;</a-o><a-eb>)</a-eb></code></pre>\n<p>obs.: &lt;número&gt; deve ser todo incluindo o &lt;&gt; ser torcado pelo número</p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-01T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "tutorial",
        "linux"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//cursos-gratis.html",
      "url": "https://meus10centavos.vercel.app//cursos-gratis.html",
      "title": "Cursos grátis",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<p>Compilado de links de cursos grátis de diversas áreas, inclusive programação. A maioria das plataformas citadas eu mesmo já usei. Além dos links também trago como é a abordagem, se tem validade para horas complementares para faculdade e os principais cursos que cada plataforma oferece.</p>\n<h2><a href=\"#kultive\" aria-hidden=\"true\" class=\"anchor\" id=\"kultive\"></a><a href=\"https://kultivi.com/\">Kultive</a></h2>\n<h5><a href=\"#custo-e-validade\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade\"></a>Custo e validade</h5>\n<p>Oferece cursos 100% gratuitos e válidos como horas commplementares.</p>\n<h6><a href=\"#abordagem\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem\"></a>Abordagem:</h6>\n<p>Aulas gravadas, mas os professores são acessíveis no Instagram pra tirar dúvidas.</p>\n<h5><a href=\"#principais-cursos\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos\"></a>Principais cursos:</h5>\n<p>idiomas, vestibular(ENEM), conteúdo do ensino médio, concursos para polícia, OAB, saúde, negócios e carreira.<br />\n<a href=\"https://kultivi.com/\">https://kultivi.com/</a></p>\n<h2><a href=\"#fundação-bradesco\" aria-hidden=\"true\" class=\"anchor\" id=\"fundação-bradesco\"></a><a href=\"https://www.ev.org.br/#\">Fundação Bradesco</a></h2>\n<h5><a href=\"#custo-e-validade-1\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-1\"></a>Custo e validade</h5>\n<p>Oferece cursos 100% gratuitos e válidos como horas complementares.</p>\n<h6><a href=\"#abordagem-1\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-1\"></a>Abordagem:</h6>\n<p>Conteúdo escrito e exercício de fixação.</p>\n<h5><a href=\"#principais-cursos-1\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-1\"></a>Principais cursos:</h5>\n<p>Análise de dados, Inteligêncial artificial, negócios, investimentos, eduação, tecnologia, desenvolvimento pessoal e profissional, produtividade, programação, tecnologia da informação.<br />\n<a href=\"https://www.ev.org.br/#\">https://www.ev.org.br/#</a></p>\n<h2><a href=\"#instituto-federal-rio-grande-do-sul-pucrs\" aria-hidden=\"true\" class=\"anchor\" id=\"instituto-federal-rio-grande-do-sul-pucrs\"></a><a href=\"https://moodle.ifrs.edu.br/course/index.php?categoryid=38\">Instituto Federal Rio Grande do Sul (PUCRS)</a></h2>\n<h5><a href=\"#custo-e-validade-2\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-2\"></a>Custo e validade</h5>\n<p>Oferece cursos 100% gratuitos e válidos como horas complementares.</p>\n<h6><a href=\"#abordagem-2\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-2\"></a>Abordagem:</h6>\n<p>Conteúdo escrito, aulas gravadas e exercício de fixação.</p>\n<h5><a href=\"#principais-cursos-2\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-2\"></a>Principais cursos:</h5>\n<p>Ambiente e saúde, ciências exatas, ciências humanas, educação, eduação a distância, gestão e negócios, idiomas, línguas, literatura, informática, infraestrutura, pré-IFRS: preparatório para as Provas de ingresso no IFRS, proodução alimentícia, produção cultural, design, recursos naturais, turismo e hospitalidade.<br />\n<a href=\"https://moodle.ifrs.edu.br/course/index.php?categoryid=38\">https://moodle.ifrs.edu.br/course/index.php?categoryid=38</a></p>\n<h2><a href=\"#coursera\" aria-hidden=\"true\" class=\"anchor\" id=\"coursera\"></a><a href=\"https://www.coursera.org/\">Coursera</a></h2>\n<h5><a href=\"#custo-e-validade-3\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-3\"></a>Custo e validade</h5>\n<p>Oferece cursos pagos, mas tem como pedir bolsa de 100%. A maioria dos cursos são em lingua inglesa, mas há legendas e alguns feitos em português Válidos como horas complementares. Parceria com empresas grandes: Google, IBM, Stanford, University of Michigan, USP, ITA.</p>\n<h6><a href=\"#abordagem-3\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-3\"></a>Abordagem:</h6>\n<p>Conteúdo escrito, aulas gravadas e exercício de fixação.</p>\n<h5><a href=\"#principais-cursos-3\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-3\"></a>Principais cursos:</h5>\n<p>Engenharia de software e TI, negócios, vendas e marketing, ciência de dados e análise, saúde.<br />\n<a href=\"https://www.coursera.org/\">https://www.coursera.org/</a></p>\n<h2><a href=\"#curso-em-vídeo\" aria-hidden=\"true\" class=\"anchor\" id=\"curso-em-vídeo\"></a><a href=\"https://www.cursoemvideo.com/cursos/\">Curso em vídeo</a></h2>\n<h5><a href=\"#custo-e-validade-4\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-4\"></a>Custo e validade</h5>\n<p>Oferece cursos grátis, mas o certificado é pago, até o momento dessa pesquisa o valor é R$: 30, por certificado. Válidos como horas complementares.</p>\n<h6><a href=\"#abordagem-4\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-4\"></a>Abordagem:</h6>\n<p>Aulas gravadas e exercício de fixação.</p>\n<h5><a href=\"#principais-cursos-4\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-4\"></a>Principais cursos:</h5>\n<p>Engenharia de software e TI, negócios, vendas e marketing, ciência de dados e análise, saúde.<br />\n<a href=\"https://www.cursoemvideo.com/cursos/\">https://www.cursoemvideo.com/cursos/</a></p>\n<h2><a href=\"#udemy\" aria-hidden=\"true\" class=\"anchor\" id=\"udemy\"></a><a href=\"https://www.udemy.com/\">Udemy</a></h2>\n<h5><a href=\"#custo-e-validade-5\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-5\"></a>Custo e validade</h5>\n<p>Oferece cursos pagos, são caros, mas semanalmente tem promoções onde todos os cursos ficam por volta dos R$30. Válidos como horas complementares com ampla variedades de carga horária. Obs.: tem que saber filtrar os conteúdos de qualidade.</p>\n<h6><a href=\"#abordagem-5\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-5\"></a>Abordagem:</h6>\n<p>Aulas gravadas.</p>\n<h5><a href=\"#principais-cursos-5\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-5\"></a>Principais cursos:</h5>\n<p>Desenvolvimento de software e TI, negócios, Finanças, contabilidade, produtividade no escritório, desenvolvimento pessoal, desing, marketing, saúde e fitness, música.<br />\n<a href=\"https://www.udemy.com/\">https://www.udemy.com/</a></p>\n<h2><a href=\"#escola-virtual\" aria-hidden=\"true\" class=\"anchor\" id=\"escola-virtual\"></a><a href=\"https://www.escolavirtual.gov.br/catalogo\">Escola Virtual</a></h2>\n<h5><a href=\"#custo-e-validade-6\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-6\"></a>Custo e validade</h5>\n<p>Oferece cursos grátis. Não sei se tem validade com horas complementares.</p>\n<h6><a href=\"#abordagem-6\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-6\"></a>Abordagem:</h6>\n<p>Conteúdo escrito.</p>\n<h5><a href=\"#principais-cursos-6\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-6\"></a>Principais cursos:</h5>\n<p>Saneamento, análise e ciência de dados, finanças, comunicação, desenvolvimento pessoal, direito e legislação, direitos humanos, economia, educação e docência, estratégia e planejamento, ética, gestão de pessoas, gestão pública, infraestrutura,liderança, meio ambiente, logistica, políticas públicas, políticas sociais, regulação, saúde.<br />\n<a href=\"https://www.escolavirtual.gov.br/catalogo\">https://www.escolavirtual.gov.br/catalogo</a></p>\n<h2><a href=\"#havard\" aria-hidden=\"true\" class=\"anchor\" id=\"havard\"></a><a href=\"https://pll.harvard.edu/catalog/free\">Havard</a></h2>\n<h5><a href=\"#custo-e-validade-7\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-7\"></a>Custo e validade</h5>\n<p>Oferece cursos grátis, mas os certificados são pagos (em dolar). Não sei se tem validade com horas complementares.</p>\n<h6><a href=\"#abordagem-7\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-7\"></a>Abordagem:</h6>\n<p>Aulas gravadas e execícios de fixação.</p>\n<h5><a href=\"#principais-cursos-7\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-7\"></a>Principais cursos:</h5>\n<p>arte e desing, teologia, negócios, ciência da computação, ciência de dados, eduação e ensino, medicina e saúde, humanas, matemática, programação, ciência, ciências sociais.<br />\n<a href=\"https://pll.harvard.edu/catalog/free\">https://pll.harvard.edu/catalog/free</a></p>\n<h2><a href=\"#aprenda-mais\" aria-hidden=\"true\" class=\"anchor\" id=\"aprenda-mais\"></a><a href=\"https://aprendamais.mec.gov.br/\">Aprenda Mais</a></h2>\n<h5><a href=\"#custo-e-validade-8\" aria-hidden=\"true\" class=\"anchor\" id=\"custo-e-validade-8\"></a>Custo e validade</h5>\n<p>Oferece cursos grátis. Não sei se tem validade com horas complementares, mas acreidito que sim, pois são cursos oferecidos pelo Governo Federal em parceria com o Ministério da Eduação (MEC).</p>\n<h6><a href=\"#abordagem-8\" aria-hidden=\"true\" class=\"anchor\" id=\"abordagem-8\"></a>Abordagem:</h6>\n<p>conteúdo escrito.</p>\n<h5><a href=\"#principais-cursos-8\" aria-hidden=\"true\" class=\"anchor\" id=\"principais-cursos-8\"></a>Principais cursos:</h5>\n<p>ambiente e saúde, ciências exatas, ciências humanas, infraestrutura, ciências humanas, produção alimentícia, desenvolvimento eduacional e social, produção cultural e desing, gestão e negócios, recursos naturais, idiomas, linguas, literatura, segurança, informação, comunicação, turismo, hospitalidade e lazer, capacitação para autores.<br />\n<a href=\"https://aprendamais.mec.gov.br/\">https://aprendamais.mec.gov.br/</a></p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-01T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "curso"
      ],
      "language": "pt-BR"
    },
    {
      "id": "https://meus10centavos.vercel.app//como-criar-blog-marmite.html",
      "url": "https://meus10centavos.vercel.app//como-criar-blog-marmite.html",
      "title": "Como criar um blog com Marmite",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<p>Neste tutorial, vou mostrar como criar seu próprio blog usando o <strong>Marmite</strong>, um gerador de sites estáticos escrito em Rust.</p>\n<h2><a href=\"#o-que-é-o-marmite\" aria-hidden=\"true\" class=\"anchor\" id=\"o-que-é-o-marmite\"></a>O que é o Marmite?</h2>\n<p><a href=\"https://marmite.blog/\">Marmite</a> é um gerador de sites estáticos minimalista que transforma arquivos Markdown em um blog completo. Suas principais características são:</p>\n<ul>\n<li><strong>Zero configuração</strong> para começar</li>\n<li><strong>Escrito em Rust</strong> — rápido e eficiente</li>\n<li><strong>Temas e colorschemes</strong> incluídos</li>\n<li><strong>Busca integrada</strong></li>\n<li><strong>RSS Feed</strong></li>\n<li><strong>Suporte a tags e arquivos</strong></li>\n</ul>\n<h2><a href=\"#instalação\" aria-hidden=\"true\" class=\"anchor\" id=\"instalação\"></a>Instalação</h2>\n<p>A forma mais fácil de instalar é usando o script de instalação:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>curl</a-f> <a-co>-sS</a-co> https://marmite.blog/install.sh <a-o>|</a-o> <a-f>sh</a-f></code></pre>\n<p>Ou se você tem Rust instalado:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>cargo</a-f> install marmite</code></pre>\n<h2><a href=\"#criando-seu-primeiro-blog\" aria-hidden=\"true\" class=\"anchor\" id=\"criando-seu-primeiro-blog\"></a>Criando seu primeiro blog</h2>\n<ol>\n<li><strong>Crie uma pasta para o conteúdo:</strong></li>\n</ol>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>mkdir</a-f> meu-blog\n<a-f>cd</a-f> meu-blog</code></pre>\n<ol start=\"2\">\n<li><strong>Inicialize o blog:</strong></li>\n</ol>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>marmite</a-f> . <a-co>--init-site</a-co> \\\n    <a-co>--name</a-co> <a-s>&quot;Meu Blog&quot;</a-s> \\\n    <a-co>--tagline</a-co> <a-s>&quot;Minha descrição&quot;</a-s> \\\n    <a-co>--enable-search</a-co> true</code></pre>\n<ol start=\"3\">\n<li><strong>Crie seu primeiro post:</strong></li>\n</ol>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>marmite</a-f> . <a-co>--new</a-co> <a-s>&quot;Meu Primeiro Post&quot;</a-s> <a-co>-t</a-co> <a-s>&quot;novo,post&quot;</a-s></code></pre>\n<ol start=\"4\">\n<li><strong>Gere e visualize o site:</strong></li>\n</ol>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-bash\"><a-f>marmite</a-f> . <a-co>--serve</a-co></code></pre>\n<p>Acesse <code>http://localhost:8000</code> e veja seu blog funcionando!</p>\n<h2><a href=\"#estrutura-de-um-post\" aria-hidden=\"true\" class=\"anchor\" id=\"estrutura-de-um-post\"></a>Estrutura de um post</h2>\n<p>Os posts são arquivos Markdown com um frontmatter YAML:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-markdown\"><a-p>---</a-p>\n<a-pr>title</a-pr><a-p>:</a-p> <a-s>&quot;Título do Post&quot;</a-s>\n<a-pr>date</a-pr><a-p>:</a-p> <a-s>2026-01-31</a-s>\n<a-pr>tags</a-pr><a-p>:</a-p> <a-s>tag1, tag2</a-s>\n<a-p>---</a-p>\n\nConteúdo do post aqui...</code></pre>\n<h2><a href=\"#próximos-passos\" aria-hidden=\"true\" class=\"anchor\" id=\"próximos-passos\"></a>Próximos passos</h2>\n<ul>\n<li>Personalize o <code>marmite.yaml</code> com suas informações</li>\n<li>Explore os colorschemes disponíveis</li>\n<li>Adicione mais conteúdo!</li>\n</ul>\n<hr />\n<p>Gostou? Deixe seu comentário!</p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-01-31T00:00:00-00:00",
      "image": "",
      "authors": [
        {
          "name": "Fabrício Santos",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/90152237?v=4"
        }
      ],
      "tags": [
        "tutorial",
        "marmite",
        "rust",
        "blog"
      ],
      "language": "pt-BR"
    }
  ]
}