Planet Geek http://www.planetgeek.org/ en Planet Geek - http://www.planetgeek.org/ http://www.planetgeek.org/ https://planetgeek.org/images/pgrsslogo.gif Planet Geek 48 48 Planet Geek Aberto até de Madrugada: Epic volta aos tribunais para forçar Apple a aceitar o Fortnite https://abertoatedemadrugada.com/2025/05/epic-volta-aos-tribunais-para-forcar.html https://abertoatedemadrugada.com/2025/05/epic-volta-aos-tribunais-para-forcar.html <div><a href="https://abertoatedemadrugada.com/2025/05/epic-volta-aos-tribunais-para-forcar.html"><img alt="" border="0" data-original-height="1000" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi__a5KCPcPKbB0oJjRQRQLiE9rBEabI_KSEsWIqFHQqLWbvQrUAIie-VUGxucam_XhsKDlOvjYrm1gruKoYQOuXYMbeifbToPG-r6leZzBAM2Fl2pU529XRI1GKVxsjYFL2bAz9G_h1s9SLApFzqAMH7nM6uowcgehkPOf3YI9IMCpHa-TR18IRx_sFKk_/s1600/fortnite.jpg" width="600"></a></div> A Epic Games pediu a uma ju&iacute;za para obrigar a Apple a aprovar o regresso de Fortnite &agrave; App Store nos EUA, alegando que a empresa est&aacute; a violar uma ordem judicial recente.<br><br><a name="more"></a> Segundo a Epic, a Apple est&aacute; a ignorar a decis&atilde;o de abril que <a href="https://abertoatedemadrugada.com/2025/05/epic-derrota-apple-nas-comissoes-da-app.html">impede a rejei&ccedil;&atilde;o de apps</a> apenas por inclu&iacute;rem links para m&eacute;todos de pagamento externos.<br><br> Numa carta partilhada pela Epic, a Apple afirma que n&atilde;o analisar&aacute; a submiss&atilde;o de Fortnite at&eacute; que o tribunal de recurso decida sobre o seu pedido para suspender parcialmente a decis&atilde;o. A Epic v&ecirc; isto como uma retalia&ccedil;&atilde;o e garante que o jogo cumpre todas as diretrizes da App Store &mdash; algo que, segundo a pr&oacute;pria Apple, seria suficiente para ser aceite.<br><br><blockquote><p dir="ltr" lang="en">Yesterday afternoon, Apple broke its week-long silence on the status of our app review with a letter saying they will not act on the Fortnite app submission until the Ninth Circuit Court rules on the partial stay. We believe this violates the Court&rsquo;s Injunction and we have filed&hellip;</p>&mdash; Epic Games Newsroom (@EpicNewsroom) <a href="https://twitter.com/EpicNewsroom/status/1923558197802971459?ref_src=twsrc%5Etfw">May 17, 2025</a></blockquote> <br> O impasse j&aacute; afetou tamb&eacute;m o mercado europeu. Ap&oacute;s uma atualiza&ccedil;&atilde;o da vers&atilde;o da UE que inclu&iacute;a o acesso ao mercado dos EUA, a Apple retirou Fortnite da App Store europeia. Mais tarde, pediu &agrave; Epic para reenviar a app sem o suporte aos EUA, evitando assim problemas noutras regi&otilde;es. Mas a Epic contesta, dizendo que isso obrigaria a criar v&aacute;rias vers&otilde;es do jogo - algo que contradiz as regras da Apple.<br><br> Agora, a Epic quer que o tribunal fa&ccedil;a cumprir a decis&atilde;o, declare novamente a Apple em desrespeito e obrigue a empresa a aceitar qualquer vers&atilde;o do Fortnite que esteja conforme. Tudo depender&aacute; de como a ju&iacute;za interpreta esta nova situa&ccedil;&atilde;o, especialmente depois das duras cr&iacute;ticas feitas &agrave; Apple na decis&atilde;o de 30 de abril.<br><br> Tue, 20 May 2025 20:00:00 +0000 Aberto até de Madrugada: Google Wallet pode pedir PIN em Android e Wear OS https://abertoatedemadrugada.com/2025/05/google-wallet-pode-pedir-pin-em-android.html https://abertoatedemadrugada.com/2025/05/google-wallet-pode-pedir-pin-em-android.html <div><a href="https://abertoatedemadrugada.com/2025/05/google-wallet-pode-pedir-pin-em-android.html"><img alt="" border="0" width="600" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpVKJ50DRtOPHMiCF1RhlKOI5Wnht-i5sg9y6mMprDCnSBY5uarOOfSK9n3TdB41ShPj99HNK8F4qcvvJdG9naEjVu13D0AZ9JFuEEw9hFe9HTQj6wyooVX5Q3hSH8HK1qyei_AQtQjcQ2s9beTm_pIcg7gFdRHzuWuehUPZeE9CmOx3q7GDpD1WL67iS4/s1600/androidwallet.jpg"></a></div> Aceder &agrave; Google Wallet poder&aacute; tornar-se menos conveniente em breve, mas mais segura, com exig&ecirc;ncia de autentica&ccedil;&atilde;o.<br><br><a name="more"></a> A Google est&aacute; a testar refor&ccedil;os de seguran&ccedil;a no Google Wallet para Android e Wear OS. Em breve, poder&aacute; ser necess&aacute;rio autenticar a identidade n&atilde;o s&oacute; para fazer pagamentos, mas tamb&eacute;m para aceder ao ecr&atilde; principal da aplica&ccedil;&atilde;o. Ou seja, ser&aacute; preciso desbloquear com PIN, palavra-passe ou biometria, mesmo que seja apenas para ver os cart&otilde;es e documentos digitais.<br><br> Esta mudan&ccedil;a surge ap&oacute;s uma actualiza&ccedil;&atilde;o em 2024 que obrigava &agrave; verifica&ccedil;&atilde;o antes de pagamentos sem contacto, com exce&ccedil;&atilde;o para transportes p&uacute;blicos. Agora que a aplica&ccedil;&atilde;o guarda tamb&eacute;m documentos como cartas de condu&ccedil;&atilde;o e cart&otilde;es de estudante, faz sentido garantir uma prote&ccedil;&atilde;o extra.<br><br> No caso dos rel&oacute;gios com Wear OS, a Google pode voltar a exigir a introdu&ccedil;&atilde;o do PIN em cada pagamento por aproxima&ccedil;&atilde;o. Embora esta medida j&aacute; tenha causado pol&eacute;mica no passado por ser vista como um erro, alguns utilizadores relatam que voltou, e o apoio t&eacute;cnico da Google afirma que <a href="https://www.androidpolice.com/google-wallet-testing-stronger-security-measures-android-wear-os/">poder&aacute; tornar-se permanente</a>.<br><br> Nada disto est&aacute; oficialmente confirmado, mas tudo indica que a Google pretende tornar o Wallet mais seguro, &agrave; medida que a app passa a guardar mais do que apenas cart&otilde;es banc&aacute;rios.<br><br> Tue, 20 May 2025 17:30:00 +0000 Alexsandro Felix: Guia Prático: Manipule Listas em Python com Facilidade https://blog.ffelix.eti.br/guia-pratico-manipule-listas-em-python-com-facilidade/ https://blog.ffelix.eti.br/guia-pratico-manipule-listas-em-python-com-facilidade/ <p>Se voc&ecirc; est&aacute; come&ccedil;ando sua jornada na programa&ccedil;&atilde;o com Python, provavelmente j&aacute; se deparou com listas &ndash; essas estruturas incr&iacute;veis que armazenam dados de forma organizada e flex&iacute;vel. Hoje, vamos destrinchar um c&oacute;digo simples, mas poderoso, que manipula uma lista de pre&ccedil;os. Nosso objetivo? Explicar cada linha de forma clara, com um toque de bom humor, para que voc&ecirc; n&atilde;o s&oacute; entenda o que est&aacute; acontecendo, mas tamb&eacute;m se sinta confiante para testar e brincar com o c&oacute;digo. Vamos mergulhar nesse universo de n&uacute;meros e aprender como ordenar, somar, encontrar m&aacute;ximos, m&iacute;nimos e muito mais!</p> <p>Nosso c&oacute;digo de exemplo &eacute; um script Python que manipula uma lista de pre&ccedil;os de produtos. Ele &eacute; perfeito para iniciantes que querem entender como trabalhar com listas e fun&ccedil;&otilde;es b&aacute;sicas da linguagem. Vamos analisar cada parte, explicar o que ela faz e fornecer exemplos pr&aacute;ticos para voc&ecirc; testar. Ao final, voc&ecirc; estar&aacute; pronto para aplicar esses conceitos em seus pr&oacute;prios projetos e, quem sabe, dar um passo a mais na sua jornada de aprendizado com Python!</p> <h2>O C&oacute;digo Explicado: Manipulando Pre&ccedil;os com Python</h2> <p>Aqui est&aacute; o c&oacute;digo que vamos explorar:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>prices = [33, 49, 55, 14] print(prices) # prices in order sorted_prices = sorted(prices) print(f&rdquo;pre&ccedil;os em ordem crescente: {sorted_prices}&rdquo;) # invertered prices inv_prices = sorted(prices, reverse=True) print(f&rdquo;pre&ccedil;os em ordem decrescente: {inv_prices}&rdquo;) # only 3 bigger prices print(f&rdquo;Os 3 maiores pre&ccedil;os: {inv_prices[:3]}&rdquo;) # total price total = sum(prices) print(f&rdquo;Soma total: {total}&rdquo;) # maximum price max_price = max(prices) print(f&rdquo;o valor mais alto &eacute;: {max_price}&rdquo;) # minumim price min_price = min(prices) print(f&rdquo;o menor valor &eacute;: {min_price}&rdquo;) # number of products n_products = len(prices) print(f&rdquo;quantia de itens: {n_products}&rdquo;) # average average = total / n_products print(f&rdquo;a media de valor &eacute;: {average}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>prices </span><span>=</span><span> </span><span>[</span><span>33</span><span>,</span><span> </span><span>49</span><span>,</span><span> </span><span>55</span><span>,</span><span> </span><span>14</span><span>]</span></span> <span><span>print</span><span>(</span><span>prices</span><span>)</span></span> <span></span> <span><span># prices in order</span></span> <span><span>sorted_prices </span><span>=</span><span> </span><span>sorted</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"pre&ccedil;os em ordem crescente: </span><span>{</span><span>sorted_prices</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span># invertered prices</span></span> <span><span>inv_prices </span><span>=</span><span> </span><span>sorted</span><span>(</span><span>prices</span><span>,</span><span> </span><span>reverse</span><span>=True</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"pre&ccedil;os em ordem decrescente: </span><span>{</span><span>inv_prices</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span># only 3 bigger prices</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Os 3 maiores pre&ccedil;os: </span><span>{</span><span>inv_prices</span><span>[:</span><span>3</span><span>]</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span># total price</span></span> <span><span>total </span><span>=</span><span> </span><span>sum</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Soma total: </span><span>{</span><span>total</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span># maximum price</span></span> <span><span>max_price </span><span>=</span><span> </span><span>max</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"o valor mais alto &eacute;: </span><span>{</span><span>max_price</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span># minumim price</span></span> <span><span>min_price </span><span>=</span><span> </span><span>min</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"o menor valor &eacute;: </span><span>{</span><span>min_price</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span># number of products</span></span> <span><span>n_products </span><span>=</span><span> </span><span>len</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"quantia de itens: </span><span>{</span><span>n_products</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span># average</span></span> <span><span>average </span><span>=</span><span> total </span><span>/</span><span> n_products</span></span> <span><span>print</span><span>(</span><span>f</span><span>"a media de valor &eacute;: </span><span>{</span><span>average</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>Agora, vamos dissecar cada trecho para que voc&ecirc; entenda exatamente o que est&aacute; acontecendo e como pode usar essas t&eacute;cnicas em outros projetos.</p> <h2>Criando e Exibindo a Lista de Pre&ccedil;os</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>prices = [33, 49, 55, 14] print(prices)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>prices </span><span>=</span><span> </span><span>[</span><span>33</span><span>,</span><span> </span><span>49</span><span>,</span><span> </span><span>55</span><span>,</span><span> </span><span>14</span><span>]</span></span> <span><span>print</span><span>(</span><span>prices</span><span>)</span></span></code></pre></div> <p>Aqui, criamos uma lista chamada <code>prices</code> com quatro valores: 33, 49, 55 e 14. Uma lista em Python &eacute; como uma sacola de compras &ndash; voc&ecirc; pode colocar v&aacute;rios itens dentro dela, e cada item pode ser acessado ou manipulado. O comando <code>print(prices)</code> simplesmente exibe a lista na tela: <mark>[33, 49, 55, 14].</mark></p> <p><strong>Teste voc&ecirc; mesmo</strong>: Crie uma lista com pre&ccedil;os de produtos que voc&ecirc; gosta (como livros, jogos ou lanches). Use o <code>print()</code> para exibir a lista e veja o resultado!</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly># Exemplo para voc&ecirc; testar meus_precos = [20, 15, 30, 25] print(meus_precos) # Sa&iacute;da: [20, 15, 30, 25]</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span># Exemplo para voc&ecirc; testar</span></span> <span><span>meus_precos </span><span>=</span><span> </span><span>[</span><span>20</span><span>,</span><span> </span><span>15</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>25</span><span>]</span></span> <span><span>print</span><span>(</span><span>meus_precos</span><span>)</span><span> </span><span># Sa&iacute;da: [20, 15, 30, 25]</span></span></code></pre></div> <h2>Ordenando a Lista em Ordem Crescente</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>sorted_prices = sorted(prices) print(f&rdquo;pre&ccedil;os em ordem crescente: {sorted_prices}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>sorted_prices </span><span>=</span><span> </span><span>sorted</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"pre&ccedil;os em ordem crescente: </span><span>{</span><span>sorted_prices</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>A fun&ccedil;&atilde;o <code>sorted()</code> pega a lista <code>prices</code> e a organiza em ordem crescente (do menor para o maior). O resultado &eacute; armazenado em <code>sorted_prices</code>. No nosso caso, a sa&iacute;da ser&aacute;: <mark>[14, 33, 49, 55]</mark>. A string formatada com <code>f (f-string)</code> deixa a sa&iacute;da mais amig&aacute;vel: pre&ccedil;os em ordem crescente: <mark>[14, 33, 49, 55]</mark>.</p> <p><strong>Por que isso &eacute; &uacute;til</strong>? Imagine que voc&ecirc; est&aacute; comparando pre&ccedil;os em uma loja online. Ordenar os pre&ccedil;os ajuda a encontrar o mais barato rapidinho!</p> <p><strong>Teste voc&ecirc; mesmo</strong>: Modifique a lista meus_precos do exemplo anterior e ordene-a em ordem crescente.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>meus_precos = [20, 15, 30, 25] ordenados = sorted(meus_precos) print(f&rdquo;Pre&ccedil;os ordenados: {ordenados}&rdquo;) # Sa&iacute;da: Pre&ccedil;os ordenados: [15, 20, 25, 30]</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>meus_precos </span><span>=</span><span> </span><span>[</span><span>20</span><span>,</span><span> </span><span>15</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>25</span><span>]</span></span> <span><span>ordenados </span><span>=</span><span> </span><span>sorted</span><span>(</span><span>meus_precos</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Pre&ccedil;os ordenados: </span><span>{</span><span>ordenados</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: Pre&ccedil;os ordenados: [15, 20, 25, 30]</span></span></code></pre></div> <p>Se voc&ecirc; quer aprender mais sobre estruturas como listas e como manipul&aacute;-las, recomendo dar uma olhada no artigo <a href="https://blog.ffelix.eti.br/python-para-iniciantes-lacos-e-variaveis-descomplicados/" target="_blank" rel="noopener" title="">Python para Iniciantes: La&ccedil;os e Vari&aacute;veis Descomplicados</a>. Ele &eacute; perfeito para refor&ccedil;ar esses conceitos!</p> <h2>Ordenando em Ordem Decrescente</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>inv_prices = sorted(prices, reverse=True) print(f&rdquo;pre&ccedil;os em ordem decrescente: {inv_prices}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>inv_prices </span><span>=</span><span> </span><span>sorted</span><span>(</span><span>prices</span><span>,</span><span> </span><span>reverse</span><span>=True</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"pre&ccedil;os em ordem decrescente: </span><span>{</span><span>inv_prices</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>Aqui, usamos a mesma fun&ccedil;&atilde;o <code>sorted()</code>, mas com o par&acirc;metro <code>reverse=True</code>, que inverte a ordem, <mark>organizando do maior para o menor. A sa&iacute;da ser&aacute;:</mark><mark> [55, 49, 33, 14]</mark>. Isso &eacute; &oacute;timo para identificar os itens mais caros rapidamente.</p> <p><strong>Teste voc&ecirc; mesmo</strong>: Pegue a lista <code>meus_precos</code> e ordene-a em ordem decrescente.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>meus_precos = [20, 15, 30, 25] invertidos = sorted(meus_precos, reverse=True) print(f&rdquo;Pre&ccedil;os em ordem decrescente: {invertidos}&rdquo;) # Sa&iacute;da: [30, 25, 20, 15]</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>meus_precos </span><span>=</span><span> </span><span>[</span><span>20</span><span>,</span><span> </span><span>15</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>25</span><span>]</span></span> <span><span>invertidos </span><span>=</span><span> </span><span>sorted</span><span>(</span><span>meus_precos</span><span>,</span><span> </span><span>reverse</span><span>=True</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Pre&ccedil;os em ordem decrescente: </span><span>{</span><span>invertidos</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: [30, 25, 20, 15]</span></span></code></pre></div> <h2>Selecionando os Tr&ecirc;s Maiores Pre&ccedil;os</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>print(f&rdquo;Os 3 maiores pre&ccedil;os: {inv_prices[:3]}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>print</span><span>(</span><span>f</span><span>"Os 3 maiores pre&ccedil;os: </span><span>{</span><span>inv_prices</span><span>[:</span><span>3</span><span>]</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>Aqui, usamos o fatiamento <code>([:3])</code> para pegar os tr&ecirc;s primeiros itens da lista <code>inv_prices</code>. Como ela j&aacute; est&aacute; em ordem decrescente, isso nos d&aacute; os tr&ecirc;s maiores pre&ccedil;os: [<mark>55, 49, 33]</mark>.</p> <p><strong>Por que isso &eacute; legal</strong>? Se voc&ecirc; est&aacute; gerenciando uma loja, pode querer destacar os produtos premium. Esse truque &eacute; perfeito para isso!</p> <p><strong>Teste voc&ecirc; mesmo</strong>: Crie uma lista com 5 pre&ccedil;os e exiba apenas os dois maiores.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>precos_loja = [100, 50, 75, 25, 10] maiores = sorted(precos_loja, reverse=True)[:2] print(f&rdquo;Os 2 maiores pre&ccedil;os: {maiores}&rdquo;) # Sa&iacute;da: [100, 75]</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>precos_loja </span><span>=</span><span> </span><span>[</span><span>100</span><span>,</span><span> </span><span>50</span><span>,</span><span> </span><span>75</span><span>,</span><span> </span><span>25</span><span>,</span><span> </span><span>10</span><span>]</span></span> <span><span>maiores </span><span>=</span><span> </span><span>sorted</span><span>(</span><span>precos_loja</span><span>,</span><span> </span><span>reverse</span><span>=True</span><span>)[:</span><span>2</span><span>]</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Os 2 maiores pre&ccedil;os: </span><span>{</span><span>maiores</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: [100, 75]</span></span></code></pre></div> <h2>Calculando a Soma Total</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>total = sum(prices) print(f&rdquo;Soma total: {total}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>total </span><span>=</span><span> </span><span>sum</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Soma total: </span><span>{</span><span>total</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>A fun&ccedil;&atilde;o <code>sum()</code> soma todos os valores da lista <code>prices</code>. No nosso caso, <mark>33 + 49 + 55 + 14 = 151</mark>. A sa&iacute;da ser&aacute;: <mark>Soma total: 151</mark>.</p> <p><strong>Teste voc&ecirc; mesmo</strong>: Some os pre&ccedil;os da sua lista <code>meus_precos</code>.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>meus_precos = [20, 15, 30, 25] total = sum(meus_precos) print(f&rdquo;Soma total: {total}&rdquo;) # Sa&iacute;da: Soma total: 90</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>meus_precos </span><span>=</span><span> </span><span>[</span><span>20</span><span>,</span><span> </span><span>15</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>25</span><span>]</span></span> <span><span>total </span><span>=</span><span> </span><span>sum</span><span>(</span><span>meus_precos</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Soma total: </span><span>{</span><span>total</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: Soma total: 90</span></span></code></pre></div> <h2>Encontrando o Maior e o Menor Pre&ccedil;o</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>max_price = max(prices) print(f&rdquo;o valor mais alto &eacute;: {max_price}&rdquo;) min_price = min(prices) print(f&rdquo;o menor valor &eacute;: {min_price}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>max_price </span><span>=</span><span> </span><span>max</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"o valor mais alto &eacute;: </span><span>{</span><span>max_price</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span>min_price </span><span>=</span><span> </span><span>min</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"o menor valor &eacute;: </span><span>{</span><span>min_price</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>As fun&ccedil;&otilde;es <code>max()</code> e <code>min()</code> retornam, respectivamente, o maior e o menor valor da lista. Aqui, o maior pre&ccedil;o &eacute; <mark>55</mark> e o menor &eacute; <mark>14</mark>.</p> <p><strong>Teste voc&ecirc; mesmo</strong>: Encontre o maior e o menor pre&ccedil;o da sua lista.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>meus_precos = [20, 15, 30, 25] maior = max(meus_precos) menor = min(meus_precos) print(f&rdquo;Maior pre&ccedil;o: {maior}, Menor pre&ccedil;o: {menor}&rdquo;) # Sa&iacute;da: Maior pre&ccedil;o: 30, Menor pre&ccedil;o: 15</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>meus_precos </span><span>=</span><span> </span><span>[</span><span>20</span><span>,</span><span> </span><span>15</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>25</span><span>]</span></span> <span><span>maior </span><span>=</span><span> </span><span>max</span><span>(</span><span>meus_precos</span><span>)</span></span> <span><span>menor </span><span>=</span><span> </span><span>min</span><span>(</span><span>meus_precos</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Maior pre&ccedil;o: </span><span>{</span><span>maior</span><span>}</span><span>, Menor pre&ccedil;o: </span><span>{</span><span>menor</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: Maior pre&ccedil;o: 30, Menor pre&ccedil;o: 15</span></span></code></pre></div> <h2>Contando o N&uacute;mero de Itens</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>n_products = len(prices) print(f&rdquo;quantia de itens: {n_products}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>n_products </span><span>=</span><span> </span><span>len</span><span>(</span><span>prices</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"quantia de itens: </span><span>{</span><span>n_products</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>A fun&ccedil;&atilde;o <code>len()</code> conta quantos itens est&atilde;o na lista. Aqui, temos 4 pre&ccedil;os, ent&atilde;o a sa&iacute;da &eacute;: quantia de itens: <mark>4</mark>.</p> <p><strong>Teste voc&ecirc; mesmo</strong>: Conte os itens da sua lista.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>meus_precos = [20, 15, 30, 25] quantidade = len(meus_precos) print(f&rdquo;Quantidade de itens: {quantidade}&rdquo;) # Sa&iacute;da: Quantidade de itens: 4</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>meus_precos </span><span>=</span><span> </span><span>[</span><span>20</span><span>,</span><span> </span><span>15</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>25</span><span>]</span></span> <span><span>quantidade </span><span>=</span><span> </span><span>len</span><span>(</span><span>meus_precos</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Quantidade de itens: </span><span>{</span><span>quantidade</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: Quantidade de itens: 4</span></span></code></pre></div> <h2>Calculando a M&eacute;dia</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>average = total / n_products print(f&rdquo;a media de valor &eacute;: {average}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>average </span><span>=</span><span> total </span><span>/</span><span> n_products</span></span> <span><span>print</span><span>(</span><span>f</span><span>"a media de valor &eacute;: </span><span>{</span><span>average</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>Para calcular a m&eacute;dia, dividimos a soma total <mark>(total)</mark> pelo n&uacute;mero de itens <code>(n_products)</code>. Aqui, <mark>151 / 4 = 37.75</mark>. A sa&iacute;da &eacute;: a <mark>media de valor &eacute;:</mark><mark>37.75</mark>.</p> <p><strong>Teste voc&ecirc; mesmo</strong>: Calcule a m&eacute;dia da sua lista.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>meus_precos = [20, 15, 30, 25] total = sum(meus_precos) quantidade = len(meus_precos) media = total / quantidade print(f&rdquo;A m&eacute;dia de valor &eacute;: {media}&rdquo;) # Sa&iacute;da: A m&eacute;dia de valor &eacute;: 22.5</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>meus_precos </span><span>=</span><span> </span><span>[</span><span>20</span><span>,</span><span> </span><span>15</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>25</span><span>]</span></span> <span><span>total </span><span>=</span><span> </span><span>sum</span><span>(</span><span>meus_precos</span><span>)</span></span> <span><span>quantidade </span><span>=</span><span> </span><span>len</span><span>(</span><span>meus_precos</span><span>)</span></span> <span><span>media </span><span>=</span><span> total </span><span>/</span><span> quantidade</span></span> <span><span>print</span><span>(</span><span>f</span><span>"A m&eacute;dia de valor &eacute;: </span><span>{</span><span>media</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: A m&eacute;dia de valor &eacute;: 22.5</span></span></code></pre></div> <h2>Por Que Python &eacute; T&atilde;o Incr&iacute;vel para Isso?</h2> <p>Python &eacute; uma linguagem simples, mas poderosa, que permite manipular dados com poucas linhas de c&oacute;digo. Se voc&ecirc; est&aacute; come&ccedil;ando, pode parecer que h&aacute; muito a aprender, mas com pr&aacute;tica, essas opera&ccedil;&otilde;es v&atilde;o parecer brincadeira de crian&ccedil;a! Quer saber por que Python &eacute; a escolha perfeita para iniciantes e profissionais? Confira este artigo: <a href="https://blog.ffelix.eti.br/python-vs-outras-linguagens-por-que-escolher-python-em-2025/" target="_blank" rel="noopener" title="">Python vs. Outras Linguagens: Por Que Escolher Python em 2025</a>?.</p> <p>E se voc&ecirc; quer acelerar sua jornada, recomendo o e-book <a href="https://go.hotmart.com/F13340196Y" target="_blank" rel="noopener" title="">Python de A-Z: Guia de Primeiros Passos com a Linguagem</a> (clique <a href="https://go.hotmart.com/F13340196Y" title="">aqui</a> para adquirir). Ele &eacute; perfeito para quem est&aacute; come&ccedil;ando e quer dominar os fundamentos com exemplos pr&aacute;ticos e explica&ccedil;&otilde;es claras. Pense nisso como seu mapa do tesouro para aprender Python!</p> <h2>Dica Extra: Loops para Manipular Listas</h2> <p>Para dar um gostinho a mais, que tal usar um loop para exibir cada pre&ccedil;o da lista individualmente? Isso &eacute; &uacute;til para processar cada item de forma personalizada. Veja este exemplo:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" aria-label="Copy"><textarea aria-hidden="true" readonly>precos = [33, 49, 55, 14] for preco in precos: print(f&rdquo;Pre&ccedil;o individual: {preco}&rdquo;)</textarea><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>precos </span><span>=</span><span> </span><span>[</span><span>33</span><span>,</span><span> </span><span>49</span><span>,</span><span> </span><span>55</span><span>,</span><span> </span><span>14</span><span>]</span></span> <span><span>for</span><span> preco </span><span>in</span><span> precos</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Pre&ccedil;o individual: </span><span>{</span><span>preco</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <p>Sa&iacute;da:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill=&q Tue, 20 May 2025 16:12:52 +0000 Aberto até de Madrugada: Hub USB-C Baseus 9-em-1 com 2 HDMI a €36 https://abertoatedemadrugada.com/2025/05/hub-usb-c-baseus-9-em-1-com-2-hdmi-36.html https://abertoatedemadrugada.com/2025/05/hub-usb-c-baseus-9-em-1-com-2-hdmi-36.html <div><a href="https://abertoatedemadrugada.com/2025/05/hub-usb-c-baseus-9-em-1-com-2-hdmi-36.html"><img alt="" border="0" data-original-height="844" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIvfoldxGEmP-9ioKn0YsfbQpQORaR91HT3pwwkBPP3cavqinovcBFCqk9CpDTko_yWfpaWlMX1uQmMsH39UFxkGp3gMIqzNgIzFdCkKQEFrH-xHA4fCBQhWV2LfpLvmPybf3qlZcTIj-eMb4H6EODE6GqsbVncM5C_EYrFiwCNTzPJuTfUHwGWxLZHA/s1600/baseus.jpg" width="600"></a></div> O processo de transi&ccedil;&atilde;o para as portas USB-C faz inevitavelmente com que seja necess&aacute;rio usar um hub para manter as liga&ccedil;&otilde;es tradicionais, e &eacute; precisamente isso que faz este hub Baseus 9-em-1 com 2 portas HDMI.<br><br><a name="more"></a>O objectivo das fichas USB-C era passarem a ser a liga&ccedil;&atilde;o universal para tudo, mas esse &eacute; um processo que n&atilde;o pode ser feito de um dia para o outro. A maioria dos utilizadores continuar&aacute; a ter in&uacute;meros produtos que contam com outras fichas, e o recurso a adaptadores, ou um hub, acaba por ser indispens&aacute;vel.<br><br> No caso deste <a href="https://amzn.to/3ZAXKSr">hub USB-C Baseus</a>, uma &uacute;nica porta USB-C pode multiplicar-se em: 2x portas USB 3.0, 1 porta USB-C com PD 100W, 1x porta USB 2.0 de 480 Mbps, leitor de cart&otilde;es SD, leitor de cart&otilde;es microSD (que podem ser usados em simult&acirc;neo), 1x porta Ethernet Gigabit, e 2x portas HDMI com suporte para resolu&ccedil;&otilde;es 4K.<br><div><a href="https://amzn.to/3ZAXKSr"><img alt="" border="0" data-original-height="751" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU_BLWeA1WYUACdf7KUTpoRCufnPeiaGCsg9KajcwywRW55QGSVAwLlar8RtHoF678A375u42c-Pls-yF4qPTPxwGzCljtxA2Qpsig4E8sIvvxAqhRlLxuEHwZKI-I3bS-G8TzxM9Q1P-X4wHpZFPCA9JgtlAvOY4zaRvwi85woKT1sQPrLEGIBzLRYw/s600/baseushub.jpg" width="600"></a></div> Este <a href="https://amzn.to/3ZAXKSr">hub USB-C Baseus 9-em-1</a> est&aacute; dispon&iacute;vel por 39 euros na Amazon Espanha - activar desconto de 40%.<br><br> Este hub suporta tamb&eacute;m carregamento r&aacute;pido via USB-PD at&eacute; um m&aacute;ximo de 100 W; pelo que ser&aacute; mais que suficiente para recarregar port&aacute;teis usando um &uacute;nico cabo, enquanto simultaneamente d&aacute; acesso a todas as demais portas que disponibiliza; mas o elemento que ser&aacute; mais diferenciador ser&aacute; o de permitir a utiliza&ccedil;&atilde;o de dois monitores externos, usando as 2 portas HDMI.<br><br> Tamb&eacute;m est&aacute; dispon&iacute;vel uma vers&atilde;o que permite <a href="https://amzn.to/3SHH2QR">ligar at&eacute; quatro monitores</a>.<br><br><br> Acompanha as melhores promo&ccedil;&otilde;es di&aacute;rias no nosso grupo <a href="https://www.facebook.com/groups/AadM.Promos/?sorting_setting=CHRONOLOGICAL">AadM Promos</a>.<br><br> Tue, 20 May 2025 15:30:00 +0000 Aberto até de Madrugada: Huawei apresenta MateBook Fold Ultimate: portátil dobrável de 18&quot; https://abertoatedemadrugada.com/2025/05/huawei-apresenta-matebook-fold-ultimate.html https://abertoatedemadrugada.com/2025/05/huawei-apresenta-matebook-fold-ultimate.html <div><a href="https://abertoatedemadrugada.com/2025/05/huawei-apresenta-matebook-fold-ultimate.html"><img alt="" border="0" width="600" data-original-height="800" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZZWBMRTQkdcWHCGNZwNMvWyyCUbqwhtS_BBVEiZZWUJP-fBFxffCAUW62oSbMitUAjel-zmtd2j06X5V9M1cet06THDx-frxjqJtIkFlmr04EEHBcyWnvklTpYoT_gBMGrjzOSh75sNeHsCv7qbvgmjxuHalsvssIhWA6FG-_K_N0wcFcNgYi-HlC_b3o/s1600/huaweifoldbook.jpg"></a></div> A Huawei revelou oficialmente o MateBook Fold Ultimate, um port&aacute;til dobr&aacute;vel com um ecr&atilde; OLED de 18", que se dobra at&eacute; ficar com o tamanho de um de 13".<br><br><a name="more"></a> O <a href="https://consumer.huawei.com/cn/harmonyos-computer/matebook-fold-ultimate-design/">MateBook Fold Ultimate</a> corre o sistema HarmonyOS PC e adapta-se a v&aacute;rios modos de utiliza&ccedil;&atilde;o, incluindo posi&ccedil;&atilde;o vertical ou horizontal completa, ou a 90&deg; com teclado virtual.<br><br> O ecr&atilde; tem uma propor&ccedil;&atilde;o 4:3 quando totalmente aberto e resolu&ccedil;&atilde;o de 3.296 x 2.472 p&iacute;xeis, com brilho at&eacute; 1.600 nits. A tecnologia OLED LTPO de dupla camada reduz o consumo de energia em 30% e triplica a durabilidade. A estrutura &eacute; em fibra de carbono, com prote&ccedil;&atilde;o por fluido n&atilde;o newtoniano (endurece apenas quando sujeito a impactos).<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8QitYFDPBx48zaeiK28__pcaYfmKxL74seDM-vOSW_M0j4HQJJfbKc46OCL64x0SCZjlU8ErUW_kxHXE0k5RTCcLxSnSUB8XGL63E1w5k7ssnMexJ5-eaDT8iEa29TRKvW9QrkN0Ii5zTTFMk8XKHddWkgyvLuBVrtfTTNY7c18tv2Ql8jpnwBUehswu8/s1240/matebookfold.jpg"><img alt="" border="0" data-original-height="860" data-original-width="1240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8QitYFDPBx48zaeiK28__pcaYfmKxL74seDM-vOSW_M0j4HQJJfbKc46OCL64x0SCZjlU8ErUW_kxHXE0k5RTCcLxSnSUB8XGL63E1w5k7ssnMexJ5-eaDT8iEa29TRKvW9QrkN0Ii5zTTFMk8XKHddWkgyvLuBVrtfTTNY7c18tv2Ql8jpnwBUehswu8/s600/matebookfold.jpg" width="600"></a></div> Apesar do ecr&atilde; generoso, o port&aacute;til mant&eacute;m-se leve e fino &ndash; pesa 1,16 kg fechado e apenas 7,3 mm quando aberto. Inclui 32GB de RAM e at&eacute; 2TB de SSD, embora o processador ainda n&atilde;o tenha sido revelado. Tamb&eacute;m vem com um teclado sem fios ultrafino de 5mm, feito em liga de alum&iacute;nio.<br><br> O MateBook Fold Ultimate estar&aacute; dispon&iacute;vel em tr&ecirc;s cores, com acess&oacute;rios a condizer, incluindo capas e um carregador USB-C de 140W. Com Wi-Fi 6, Bluetooth 5.2, seis colunas e quatro microfones, est&aacute; preparado para qualquer utiliza&ccedil;&atilde;o. J&aacute; est&aacute; em pr&eacute;-venda na China, com lan&ccedil;amento a 6 de junho. Os pre&ccedil;os come&ccedil;am nos 2.950 euros para o modelo de 1TB.<br><br> Tue, 20 May 2025 13:30:00 +0000 Aberto até de Madrugada: Apple pode deixar trocar Siri por ChatGPT ou Gemini https://abertoatedemadrugada.com/2025/05/apple-pode-deixar-trocar-siri-por.html https://abertoatedemadrugada.com/2025/05/apple-pode-deixar-trocar-siri-por.html <div><a href="https://abertoatedemadrugada.com/2025/05/apple-pode-deixar-trocar-siri-por.html"><img alt="" border="0" width="600" data-original-height="919" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-16L8HDzRF57fp_MvHaeR4TMKE-QJkc2oGOLcUVSwnAtgj5CV3ztLnxAbbFcMcR6QUXsN-lpEqxZORdtVYt3T-0zLDe1uQU-H5H6Tmj1hbuh0w6dm5n7PCJFTUNXLhWIIMIlUTucjqAPdaCPEQaTQqBFlmsh-BxIxrL7VM12Y-HcY6SAa8H0n5FXCjoP5/s1600/appleai.jpg"></a></div> A Apple poder&aacute; em breve dar aos utilizadores dos iPhone a liberdade de escolher o assistente de voz que preferirem.<br><br><a name="more"></a> Segundo alguns relatos, a empresa est&aacute; a considerar o <a href="https://www.bloomberg.com/news/features/2025-05-18/how-apple-intelligence-and-siri-ai-went-so-wrong">suporte para assistentes AI de terceiros</a>, como o ChatGPT, Amazon Alexa ou Google Gemini, permitindo aos utilizadores usarem um assistente alternativo directamente no sistema, al&eacute;m da Siri, pela primeira vez em mais de 10 anos.<br><br> Esta poss&iacute;vel mudan&ccedil;a surge numa altura em que a Apple enfrenta press&atilde;o por parte dos utilizadores e regula&ccedil;&otilde;es europeias mais rigorosas, que promovem maior liberdade de escolha e concorr&ecirc;ncia. Ao permitir assistentes de AI alternativos, a marca poder&aacute; evitar conflitos legais, especialmente no espa&ccedil;o europeu. Actualmente a Apple j&aacute; permite fazer a integra&ccedil;&atilde;o do ChatGPT via Siri, pelo que h&aacute; curiosidade em saber se este novo m&eacute;todo substituiria por completo a Siri ou se limitaria a permitir maior liberdade na integra&ccedil;&atilde;o de assistentes via Siri.<br><br> Se se confirmar, a possibilidade de trocar a Siri por alternativas como o ChatGPT representar&aacute; uma mudan&ccedil;a importante para a Apple, que sempre manteve um controlo apertado sobre o seu ecossistema. Mas num mercado dominado por modelos de linguagem avan&ccedil;ados, manter a Siri como &uacute;nica op&ccedil;&atilde;o poder&aacute; j&aacute; n&atilde;o ser suficiente.<br><br> Tue, 20 May 2025 11:00:00 +0000 Aberto até de Madrugada: Ganha um mini-leitor MP3 BT https://abertoatedemadrugada.com/2025/05/ganha-um-mini-leitor-mp3-bt.html https://abertoatedemadrugada.com/2025/05/ganha-um-mini-leitor-mp3-bt.html <div><a href="https://abertoatedemadrugada.com/2025/05/ganha-um-mini-leitor-mp3-bt.html"><img alt="" border="0" data-original-height="958" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsjpom7jSNEyqVd_a1I-IIgxBzaSTPiO_0htc6axrBuc0lpduHWeFAmwahm35bw60s3HWzn6VNS-VE0BpaDeedkEfXCNkPv03S_UhtHb3zGDy6mqf0ilpxSDlIQX6FkAtVJQBv_Jf4oWw/s1600/mp3.jpg" width="600"></a></div> Todas as semanas temos gadgets para vos oferecer, e desta vez a escolha recai sobre um mini-leitor MP3 compacto bastante simp&aacute;tico.<br><br><a name="more"></a> Em tempos pequenas maravilhas da tecnologia, os leitores MP3 perderam protagonismo com a ascens&atilde;o dos smartphones e das suas impressionantes capacidades. Mas, isto n&atilde;o significa que n&atilde;o possam haver situa&ccedil;&otilde;es em que continue a ser prefer&iacute;vel usar um leitor MP3 dedicado, e por isso mesmo estamos a oferecer um bastante compacto, com <a href="https://amzn.to/3WNK2fz">ecr&atilde; de 1.8" e Bluetooth</a>, para que possam continuar a ouvir a m&uacute;sica sem fios.<br><div><a href="https://amzn.to/3WNK2fz"><img alt="" border="0" data-original-height="750" data-original-width="1500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqTiIxfqAuo9n0NuIHUShhtrMhi5M0UmK3e-41ei3xL37TZ-197iSbfM1xeiCE_ksPxDxzufY6tzqprEHMqfcHeO_zfHGJSQE-hZwqV2ZD8oj-GXHPAJg53a9klVCNxdezMPp-TbUSJt8/s560/mp3player.jpg"></a></div> J&aacute; sabem como funcionam os nossos passatempos semanais: ao longo dos pr&oacute;ximos dias iremos colocando diferentes perguntas no formul&aacute;rio que se segue, e no final o mesmo ser&aacute; oferecido aleatoriamente entre os participantes que tiverem acertado correctamente pelo menos numa delas (sendo que mais respostas certas melhorar&atilde;o as vossas probabilidades de ganharem - mas aten&ccedil;&atilde;o, pois apenas conta a primeira resposta que derem a cada pergunta.)<br><br>Loading&hellip;<br><!--<span style="color: red;"><b>Passatempo encerrado:</b></span> O vencedor foi o , que j&aacute; foi contactado por email com as boas not&iacute;cias. Fica atento aos <a href="http://abertoatedemadrugada.com/search/label/Passatempos">pr&oacute;ximos passatempos</a>.<br />--><br> Passatempo aberto a todos os participantes com morada em Portugal.<br><br> Tue, 20 May 2025 09:00:00 +0000 Aberto até de Madrugada: Xiaomi apresenta SU7 no dia 22 de Maio https://abertoatedemadrugada.com/2025/05/xiaomi-apresenta-su7-no-dia-22-de-maio.html https://abertoatedemadrugada.com/2025/05/xiaomi-apresenta-su7-no-dia-22-de-maio.html <div><a href="https://abertoatedemadrugada.com/2025/05/xiaomi-apresenta-su7-no-dia-22-de-maio.html"><img alt="" border="0" data-original-height="800" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRSQtGcIAak3Uo5Vp9MYHEb0Xk2vGTU0SaLgU5VpGOKcrXF6-tDw4IcRn52qgyatTbw0XZ3ci_jKj7IIu-Uiq9LK_J-HFdDfz_HbLU-m0lL4V7YyQTtTrLu2VQJQ0LlJdWE3fOrC0ga9tX3Nfs5vkLap3NvdiND2k_mth8Z6VavQQvyT9_foQoE_CvFdnv/s1600/yu7.jpg" width="600"></a></div> A Xiaomi vai revelar o seu primeiro SUV el&eacute;ctrico, o YU7, no dia 22 de Maio. Este lan&ccedil;amento d&aacute; continuidade ao SU7 e coloca a marca a concorrer directamente com o Tesla Model Y no segmento dos SUV m&eacute;dios.<br><br><a name="more"></a> De acordo com registos oficiais, o <a href="https://cnevpost.com/2025/05/19/xiaomi-to-unveil-yu7-may-22/">YU7</a> mede 4.999 mm de comprimento, 1.996 mm de largura e 1.600 mm de altura, com uma dist&acirc;ncia entre eixos de 3 metros - ligeiramente maior do que o Model Y, oferecendo mais espa&ccedil;o interior. A Xiaomi ainda n&atilde;o divulgou dados de pot&ecirc;ncia, mas a fasquia est&aacute; alta depois dos 1.548 cv do SU7 Ultra apresentados em 2024.<br><br> Apesar de ser estreante no sector autom&oacute;vel, a Xiaomi EV entregou mais de 28.000 viaturas em Abril, o s&eacute;timo m&ecirc;s consecutivo acima das 20 mil unidades. Contudo, a marca enfrenta desafios: um acidente mortal com um SU7 em Mar&ccedil;o e queixas sobre a qualidade provocaram tr&ecirc;s semanas seguidas de queda nas vendas na China.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg89Sz_oRPoS2UQ3KxkLfL6UqE-NXc9rqe6X0smsBIYmTK7uc93Ufm-cWE7eAHczVt-V8FytQWlJ7WLDO-Tvtg_KINKlEKrKhMhcDh2znsbeFXhpNgGuBwBr85FVkAk6TkAE1TUXX_m24bN6hP6DEkTiZmyLi_ZOoYyoSnIobi3YBHiGH-zunbGBajBmnVh/s1200/yu7back.jpg"><img alt="" border="0" data-original-height="599" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg89Sz_oRPoS2UQ3KxkLfL6UqE-NXc9rqe6X0smsBIYmTK7uc93Ufm-cWE7eAHczVt-V8FytQWlJ7WLDO-Tvtg_KINKlEKrKhMhcDh2znsbeFXhpNgGuBwBr85FVkAk6TkAE1TUXX_m24bN6hP6DEkTiZmyLi_ZOoYyoSnIobi3YBHiGH-zunbGBajBmnVh/s600/yu7back.jpg" width="600"></a></div> O evento de quinta-feira vai al&eacute;m do SUV. A Xiaomi apresentar&aacute; tamb&eacute;m o seu primeiro processador m&oacute;vel pr&oacute;prio (Xring O1), o smartphone Xiaomi 15S Pro e o tablet Xiaomi 7 Ultra, refor&ccedil;ando a estrat&eacute;gia de integrar todo o ecossistema tecnol&oacute;gico sob a mesma marca.<br><br> Tue, 20 May 2025 07:00:00 +0000 Aberto até de Madrugada: Defendnot consegue desactivar o Microsoft Defender no Windows https://abertoatedemadrugada.com/2025/05/defendnot-consegue-desactivar-o.html https://abertoatedemadrugada.com/2025/05/defendnot-consegue-desactivar-o.html <div><a href="https://abertoatedemadrugada.com/2025/05/defendnot-consegue-desactivar-o.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYqhgIbfmkJ_2LDnDxVP2uJXb-_1Yailhu0dE_i37swKmcKQtx7cGOyhoATNHHYJ_xtVxeF6HLYOzEVuoNyrBMaGa73on126b7Fc871U5rR_xHqxEnHbrBtOOL2qgZ3_jMcjTODRh6ms3IZ5A3pIh6j_YNda8RpSc6zt6clV4Avvh-gwjbf9O3bccCyqp8/s1600/defender.jpg" width="600"></a></div> Uma ferramenta chamada <a href="https://github.com/es3n1n/defendnot">Defendnot</a>&nbsp; consegue enganar o Windows e desactivar o Microsoft Defender, mesmo quando n&atilde;o existe outro antiv&iacute;rus instalado.<br><br><a name="more"></a> A t&eacute;cnica passa por registar um antiv&iacute;rus falso usando uma API n&atilde;o documentada do Windows Security Center (WSC), que serve normalmente para informar o sistema de que outro software de seguran&ccedil;a est&aacute; ativo.<br><br> Sempre que um antiv&iacute;rus leg&iacute;timo se regista, o Windows desativa automaticamente o Defender para evitar conflitos. A ferramenta Defendnot, criada pelo investigador es3n1n, simula esse comportamento com uma DLL de antiv&iacute;rus falsa constru&iacute;da de raiz, evitando problemas legais como os que levaram &agrave; remo&ccedil;&atilde;o da ferramenta anterior no-defender, que usava c&oacute;digo de terceiros.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvjPdiu8zxbVWFsXePMa25GSDRXz8x8FFiV6ioO_kIk6U0GFAE2sdH7BpFKWNScwyol9Ufp5B2Af9e1XA4cEuO9POAWx9mvhXx_wkYqx8K81SjviczP6fsJBaOtUl3ZestSLPyusb0g0ZHoz2hWS6Yo27Q9A5oAQLsTHHEJvk-vSFHBOnbIRx3L5eH0pPf/s1306/defendnot.jpg"><img alt="" border="0" data-original-height="1005" data-original-width="1306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvjPdiu8zxbVWFsXePMa25GSDRXz8x8FFiV6ioO_kIk6U0GFAE2sdH7BpFKWNScwyol9Ufp5B2Af9e1XA4cEuO9POAWx9mvhXx_wkYqx8K81SjviczP6fsJBaOtUl3ZestSLPyusb0g0ZHoz2hWS6Yo27Q9A5oAQLsTHHEJvk-vSFHBOnbIRx3L5eH0pPf/s600/defendnot.jpg" width="600"></a></div> O truque funciona ao injetar a DLL falsa num processo de sistema confi&aacute;vel, como o Taskmgr.exe, que &eacute; assinado pela Microsoft. A partir desse processo, a ferramenta regista o antiv&iacute;rus falso com um nome &agrave; escolha do utilizador, o que leva o Defender a desligar-se de imediato. O Defendnot inclui ainda um carregador de configura&ccedil;&atilde;o e garante persist&ecirc;ncia ao criar uma tarefa autom&aacute;tica no Agendador de Tarefas do Windows.<br><br> Apesar de ser apresentado como um projeto de investiga&ccedil;&atilde;o, o Defendnot exp&otilde;e uma falha grave na forma como o Windows gere os registos de antiv&iacute;rus. O Microsoft Defender j&aacute; est&aacute; a detetar esta amea&ccedil;a com o nome Win32/Sabsik.FL.!ml, mas fica o aviso: mesmo funcionalidades de seguran&ccedil;a aparentemente bem protegidas podem ser manipuladas.<br><br> Mon, 19 May 2025 20:00:00 +0000 Aberto até de Madrugada: Ford F-150 Lightning ultrapassa Tesla Cybertruck nos EUA https://abertoatedemadrugada.com/2025/05/ford-f-150-lightning-ultrapassa-tesla.html https://abertoatedemadrugada.com/2025/05/ford-f-150-lightning-ultrapassa-tesla.html <div><a href="https://abertoatedemadrugada.com/2025/05/ford-f-150-lightning-ultrapass-tesla.html"><img alt="" border="0" data-original-height="886" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHZTcN4pTXiAkz9tVPjWF8v2-BENuHpGGpbm_HUbFi0YtVC0CpFIeTUH9yoDHsDbaRHtwVM3U0_r6TK01l-dcHN8DVa1Gd-BIv6b-OTZ1XZB6vH-jNWkvbwTHJaMOhwrtWt-RGmQ0USKDDhb55r3AvVKqDgeV_TBgld7X-sdxbjRhEwbAb3CSwYKQKgGEP/s1600/f150.jpg" width="600"></a></div> O cen&aacute;rio para a Tesla fica mais complicado, com a rival Ford F-150 a ultrapassar as vendas do Cybertruck.<br> - <br><a name="more"></a> A corrida das pick-ups el&eacute;tricas ganhou um novo l&iacute;der: a <a href="https://www.spglobal.com/automotive-insights/en">Ford F-150 Lightning ultrapassou o Tesla Cybertruck</a> nas vendas do primeiro trimestre de 2025. Segundo dados da S&amp;P Global Mobility, a Ford registou 7.913 unidades entre janeiro e mar&ccedil;o, enquanto a Tesla ficou-se pelas 7.126.<br><br> Outras fontes, como a Cox Automotive, confirmam a tend&ecirc;ncia com n&uacute;meros ligeiramente diferentes: 7.187 Lightnings vendidas contra 6.404 Cybertrucks. Apesar das varia&ccedil;&otilde;es, o resultado &eacute; claro: a Ford recuperou a lideran&ccedil;a, depois de a Tesla ter ocupado o primeiro lugar durante algum tempo.<br><br> Asvendas do Cybertruck tem vindo a cair. Depois de vender mais de 16 mil unidades no terceiro trimestre de 2023, a Tesla tem registado uma quebra constante, ficando agora abaixo das 7 mil unidades e aparentemente <a href="https://abertoatedemadrugada.com/2025/05/tesla-vai-suspender-producao-do.html">tendo suspendido a produ&ccedil;&atilde;o</a>. A Lightning tamb&eacute;m n&atilde;o est&aacute; a bater recordes, mas tem conseguido manter-se &agrave; frente.<br><br> As pick-ups el&eacute;tricas enfrentam v&aacute;rios desafios. Precisam de baterias grandes, o que as torna caras e pesadas &mdash; pouco ideal para quem precisa de rebocar, andar fora de estrada ou fazer longas viagens. Marcas como Chevrolet, GMC, Rivian e Ram tamb&eacute;m est&atilde;o a lidar com atrasos e quebras nas entregas. Para j&aacute;, a Ford est&aacute; na frente, mas tudo se pode alterar nos pr&oacute;ximos meses.<br><br> Mon, 19 May 2025 17:30:00 +0000 Aberto até de Madrugada: Carregador Powerowl com 8 pilhas recarregáveis a €19 https://abertoatedemadrugada.com/2025/05/carregador-powerowl-com-8-pilhas.html https://abertoatedemadrugada.com/2025/05/carregador-powerowl-com-8-pilhas.html <div><a href="https://abertoatedemadrugada.com/2025/05/carregador-powerowl-com-8-pilhas.html"><img alt="" border="0" data-original-height="880" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiXP-3Ra6tGJFjK1j0X9-_RV1Rq4Zeex8bfldkbOhEpXxaSagQ8xr9TLxAn2OslgGu4-M2WzK8PTKjA5NCYOmz9t0TqVNS283aB52fqwiCZhi10ye_yfK0ipYpY9ofpOSXtID4gShHh1r9d9ZdlAYhDfEWiUruHo5YwWS0Or4CKXtEOYZqMbFVgLZliIEW/s1600/powerowl.jpg" width="600"></a></div> Para evitar a troca infind&aacute;vel das pilhas, nada como usar pilhas recarreg&aacute;veis e este pack da Powerowl com carregador e 8 pilhas &eacute; uma excelente forma de come&ccedil;ar.<br><br><a name="more"></a> Vivemos num mundo "mobile" em que assumimos que as coisas funcionam sem necessidade de estarem agarradas a cabos de alimenta&ccedil;&atilde;o, e isso faz com que exista uma depend&ecirc;ncia cr&iacute;tica em baterias e pilhas. No caso das pilhas, que continuam a ser comuns em coisas como controlos remotos, gamepads, teclados wireless e muitas outras coisas, uma das melhores op&ccedil;&otilde;es &eacute; trocar as pilhas convencionais por <a href="https://amzn.to/4jLR1yJ">pilhas recarreg&aacute;veis reutiliz&aacute;veis</a>, e o investimento n&atilde;o &eacute; assim t&atilde;o avultado quanto se possa pensar.<br><div><a href="https://amzn.to/4jLR1yJ"><img alt="" border="0" data-original-height="500" data-original-width="1024" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUOoMtJMpGcuccPMV4lbmq8i4BDXHr7iGigLTAM9y0cYIAOpFJlcbHw1bJqshQsKmc7m34xcRgBUj-gbCgr3WetP4qCpk8fmFtdAfoHm0X1at9TjI9uxgw5H3RdBs6SyracxtQyxWf8oj61wurwMv30lLGpHtA9xbItLAqWDoC2qrwOeV_J9IbnklAnjgw/s600/powerowlbat.jpg" width="600"></a></div> Este <a href="https://amzn.to/4jLR1yJ">carregador Powerowl j&aacute; traz 8 pilhas recarreg&aacute;veis</a> e custa apenas 19 euros - activar desconto de 20%.<br><br> As pilhas AA inclu&iacute;das s&atilde;o de 2800 mAh, e este carregador tem a vantagem de usar uma comum ficha USB e permitir carregar pilhas individualmente (alguns s&oacute; permitem carregar pares). Podem apanhar um pack de <a href="https://amzn.to/4eohGzP">mais 8 pilhas AA de 2800 mAh</a> por 12 euros.<br><br><br> Acompanha as melhores promo&ccedil;&otilde;es di&aacute;rias no nosso grupo <a href="https://www.facebook.com/groups/AadM.Promos?sorting_setting=CHRONOLOGICAL">AadM Promos</a>.<br><br> Mon, 19 May 2025 15:30:00 +0000 Aberto até de Madrugada: Renault revela Savane 4x4 concept https://abertoatedemadrugada.com/2025/05/renault-revela-savane-4x4-concept.html https://abertoatedemadrugada.com/2025/05/renault-revela-savane-4x4-concept.html <div><a href="https://abertoatedemadrugada.com/2025/05/renault-revela-savane-4x4-concept.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWPnvuipJdKbbJ66GYgm2v5Lmd_u8olBgeHyzg60fFxQ7hehwR-pc4n1atKL5wHiWhRqi_o7DYaFQJQsUjR-GiMo_br4ejDK47OMEwOARTYwU5mJjL7idIIVo9vS1gXxc3H9-YSD69QfQI4fXzv6td1AbVsP-a5YADrLIDFYBHeTe1SOqb3xNstidyDgZ6/s1600/renault4savage%20%282%29.jpg" width="600"></a></div> A Renault est&aacute; a tirar partido da popularidade dos modelos antigos renovados em vers&atilde;o el&eacute;trica, e avan&ccedil;a com o Savane 4x4 concept.<br><br><a name="more"></a> A Renault apresentou uma nova vers&atilde;o mais robusta do Renault 4 el&eacute;trico, o <a href="https://media.renault.com/renault-4-savane-4x4-concept-makes-its-global-debut-at-roland-garros-2025/">Savane 4x4 concept</a>. Este prot&oacute;tipo d&aacute; um toque aventureiro ao pequeno crossover, ao adicionar tra&ccedil;&atilde;o integral gra&ccedil;as a um segundo motor el&eacute;trico no eixo traseiro &mdash; algo que o modelo original n&atilde;o tem.<br><br> Al&eacute;m do novo sistema de tra&ccedil;&atilde;o, o Savane recebe uma suspens&atilde;o elevada, pintura exclusiva Jade Green, um tejadilho em tecido com padr&atilde;o pixelizado e pneus Goodyear UltraGrip montados em jantes de 18 polegadas. A Renault alargou ainda as vias dianteira e traseira em 10 mm e aumentou a dist&acirc;ncia ao solo em 15 mm, para maior estabilidade e capacidade fora de estrada.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQZcSpOhVDgzIN5W7kg0tQoA52pmIKzcBbt7NIKCarqYKZ8jhEXhP2zhJCNHEdChyEoYZfEs_OUq75L-Pn_mNaGHErg4e_L8sLAEE10eMyEvzWjySisZ2IarVtYs14F3thc-OBFzYDhXMXjqatIr7OCsf2Ihway6qNUNW2NSHLJPz2pIaBbjKxTIKstl2/s1200/renault4savage%20%283%29.jpg"><img alt="" border="0" data-original-height="674" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQZcSpOhVDgzIN5W7kg0tQoA52pmIKzcBbt7NIKCarqYKZ8jhEXhP2zhJCNHEdChyEoYZfEs_OUq75L-Pn_mNaGHErg4e_L8sLAEE10eMyEvzWjySisZ2IarVtYs14F3thc-OBFzYDhXMXjqatIr7OCsf2Ihway6qNUNW2NSHLJPz2pIaBbjKxTIKstl2/s600/renault4savage%20%283%29.jpg" width="600"></a></div> <div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitD91rctlDCCKfo4rhEjSOU2dEfRzv6-fS_7bzGiqlMJCizfuXRC-cTEf5QH1rbiPghK7_41TH03sZ2SQjtFcqdv3FJcnuCcS0LcZ4X1wsjRr29sGddNRlIhL7juwXfCFi6wPmXnBiqiE-MV0wEUfAalZtOH1dx578oXQCbERHcbMxzB0awEVrwOgSH16V/s1200/renault4savage%20%281%29.jpg"><img alt="" border="0" data-original-height="674" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitD91rctlDCCKfo4rhEjSOU2dEfRzv6-fS_7bzGiqlMJCizfuXRC-cTEf5QH1rbiPghK7_41TH03sZ2SQjtFcqdv3FJcnuCcS0LcZ4X1wsjRr29sGddNRlIhL7juwXfCFi6wPmXnBiqiE-MV0wEUfAalZtOH1dx578oXQCbERHcbMxzB0awEVrwOgSH16V/s600/renault4savage%20%281%29.jpg" width="600"></a></div> A marca n&atilde;o revelou os n&uacute;meros de pot&ecirc;ncia deste sistema de dois motores, mas dever&aacute; superar facilmente o modelo de s&eacute;rie, que tem 148 cv e acelera dos 0 aos 100 km/h em 8,2 segundos. O concept poder&aacute; usar uma bateria de 52 kWh, semelhante &agrave; vers&atilde;o mais equipada do Renault 4, com autonomia at&eacute; 400 km.<br><br> Assente na plataforma AmpR Small, partilhada com modelos como o Renault 5 e o novo Nissan Micra, o Savane mostra que &eacute; poss&iacute;vel ter tra&ccedil;&atilde;o total nesta base. A produ&ccedil;&atilde;o ainda n&atilde;o foi confirmada, mas a Renault j&aacute; apostou antes em projetos mais ousados. Se chegar ao mercado, custar&aacute; certamente mais do que os &euro;31.490 do modelo de s&eacute;rie, mas poder&aacute; ser uma op&ccedil;&atilde;o interessante para quem quer um el&eacute;trico compacto com mais estilo e capacidade.<br><br> Mon, 19 May 2025 13:30:00 +0000 A Minha Alegre Casinha: EUA têm mais de 26 GW de baterias na rede eléctrica http://aminhaalegrecasinha.com/2025/05/eua-tem-mais-de-26-gw-de-baterias-na.html http://aminhaalegrecasinha.com/2025/05/eua-tem-mais-de-26-gw-de-baterias-na.html <div><a href="http://aminhaalegrecasinha.com/2025/05/eua-tem-mais-de-26-gw-de-baterias-na.html"><img alt="" border="0" width="600" data-original-height="870" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi4jRRWRxbqyatnoE4YdsfJJoWPSBaIMKLlpIgvwruB2eWAq5pXUzHeX8H-oOsPtDIKzfd0eslF4N8sMNTbDY_gTQL3dk_cglT_OaYkvYD2FPfjMbGbELnOYw9yuMcJePJy3L7Jp4KPkzM-xHpx_unuSN1XDbrNjYWs5IH_ZUqZaKqvPY60Y3gplzP4nnp/s1600/batterygrid.jpg"></a></div> Os EUA aumentaram consideravelmente o uso de baterias para estabiliza&ccedil;&atilde;o da rede el&eacute;ctrica nos &uacute;ltimos anos.<br><br><a name="more"></a> Quando ainda muito se fala sobre o <a href="https://abertoatedemadrugada.com/2025/04/o-motivo-do-apagao-em-portugal-e-espanha.html">apag&atilde;o ib&eacute;rico</a>, o uso de baterias para efeito de estabiliza&ccedil;&atilde;o da rede pode ser uma das op&ccedil;&otilde;es a considerar (a par de outros sistemas de recupera&ccedil;&atilde;o / reaproveitamento de energia como bombear a &aacute;gua das barragens de volta para os reservat&oacute;rios). <br><br> Enquanto ia explorando o caso para saber que tipo de instala&ccedil;&otilde;es j&aacute; existe, descobri que <a href="https://www.wired.com/story/grid-scale-battery-storage-is-quietly-revolutionizing-the-energy-system/">nos EUA</a>, em 2024, j&aacute; existia uma <a href="https://www.eia.gov/todayinenergy/detail.php?id=64705">capacidade de 26 GW de energia em baterias</a> para estabiliza&ccedil;&atilde;o da rede - que se prev&ecirc; que duplique at&eacute; 2026. Apesar de ser uma solu&ccedil;&atilde;o dispendiosa face a outras, tem a grande vantagem de dar resposta instant&acirc;nea &agrave;s necessidades da rede; e n&atilde;o se podendo esquecer que n&atilde;o &eacute; necess&aacute;rio usar as baterias "caras" como as que s&atilde;o utilizadas em ve&iacute;culos, pois pode optar-se por baterias mais econ&oacute;micas que tenham menor densidade energ&eacute;tica (para uma instala&ccedil;&atilde;o industrial, torna-se irrelevante o seu peso e volume).<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTWsffZJ9WMiihgiHN7xLXkCwXGfhMmPH-Fr7pFQkAbECfLqxvhri68_JByjYIzhwknQ4ica35jqsTHsbsXkm4XT-4ydEYCDErSscG1EpfwPX7dftszG4IC8UhmroSAfT9uoTxFnn4ICbowYcIZNbukW2m4mxW4-7wDwdcyrCZ-ivSCKw1p2BK7Rdjw-aW/s960/batup.jpg"><img alt="" border="0" width="600" data-original-height="576" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTWsffZJ9WMiihgiHN7xLXkCwXGfhMmPH-Fr7pFQkAbECfLqxvhri68_JByjYIzhwknQ4ica35jqsTHsbsXkm4XT-4ydEYCDErSscG1EpfwPX7dftszG4IC8UhmroSAfT9uoTxFnn4ICbowYcIZNbukW2m4mxW4-7wDwdcyrCZ-ivSCKw1p2BK7Rdjw-aW/s600/batup.jpg"></a></div> Podem tamb&eacute;m considerar-se outras op&ccedil;&otilde;es de armazenamento de energia - h&aacute; at&eacute; sistemas que usam <a href="https://abertoatedemadrugada.com/2022/07/bateria-de-areia-entra-em-funcionamento.html">areia aquecida</a> como forma de armazenamento de energia. O ponto cr&iacute;tico, para efeitos de estabiliza&ccedil;&atilde;o da rede el&eacute;ctrica, &eacute; o de ser um sistema que possa reagir de forma imediata &agrave;s necessidades, assegurando a rede at&eacute; que outras fontes de energia tenham tempo para entrar em ac&ccedil;&atilde;o.<br><br><br> Mon, 19 May 2025 12:45:00 +0000 Aberto até de Madrugada: Xiaomi confirma chip próprio Xring O1 https://abertoatedemadrugada.com/2025/05/xiaomi-confirma-chip-proprio-xring-o1.html https://abertoatedemadrugada.com/2025/05/xiaomi-confirma-chip-proprio-xring-o1.html <div><a href="https://abertoatedemadrugada.com/2025/05/xiaomi-confirma-chip-proprio-xring-o1.html"><img alt="" border="0" width="600" data-original-height="1085" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW87q2idEgoHd6mbsOfj1qRzjjR1_2Fo9SOELCDfhtaqLRE8pUPQe-Xwy8ILvYDvBjmGe1G1SnsVquyzwcTIuAsoGTu87KDoJeagp_VX34H4CIoVRc-0sZJsFGougEJIMMcPNWIHW6J7roAyfLORYHHZNr0XC33XHJEoLmNhhURKvq4jXB9Cuir_8A2V_n/s1600/xiaomi.jpg"></a></div> A Xiaomi vai juntar-se &agrave; Apple, Samsung, e Huawei, no uso de chips pr&oacute;prios nos seus smartphones e tablets, com o Xring O1.<br><br><a name="more"></a> A Xiaomi confirmou oficialmente que o seu <a href="https://m.weibo.cn/detail/5166664397360334">primeiro processador</a> desenvolvido internamente est&aacute; a caminho e j&aacute; tem nome e data de apresenta&ccedil;&atilde;o. O chip vai chamar-se Xring O1 a n&iacute;vel internacional (e Xuanjie O1 na China), e ser&aacute; revelado no final de Maio.<br><br> Com esta aposta, a Xiaomi pretende reduzir a sua depend&ecirc;ncia da Qualcomm e MediaTek, ganhando mais controlo sobre o hardware e, potencialmente, reduzindo custos. Segundo fugas de informa&ccedil;&atilde;o, o Xring O1 ser&aacute; produzido com tecnologia de 5nm e ter&aacute; um CPU de 8 n&uacute;cleos: um Cortex-X925, tr&ecirc;s Cortex-A725 e quatro Cortex-A520, com velocidades at&eacute; 3,2GHz. Vai contar ainda com GPU da Imagination Technologies e modem 5G da Unisoc.<br><br> Em termos de desempenho, espera-se que esteja ao n&iacute;vel do Snapdragon 8 Gen 2 - o que seria um excelente in&iacute;cio para um chip de estreia. A revela&ccedil;&atilde;o oficial &eacute; esperada para breve, por isso n&atilde;o falta muito para conhecermos todos os detalhes.<br><br> Mon, 19 May 2025 11:00:00 +0000 Aberto até de Madrugada: Módulo de tomadas Aonoka com 3 USB + 3 tomadas a €20.99 https://abertoatedemadrugada.com/2025/05/modulo-de-tomadas-aonoka-com-3-usb-3.html https://abertoatedemadrugada.com/2025/05/modulo-de-tomadas-aonoka-com-3-usb-3.html <div><a href="https://abertoatedemadrugada.com/2025/05/modulo-de-tomadas-aonoka-com-3-usb-3.html"><img alt="" border="0" data-original-height="910" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYOD6k7b592JqA6IfwTZDlLFqeNJhDA5xmkDiP7EpDDthIwHYQdJPhTF7V0KbXB0CM2X3gK-VLPDWVQLAWIlGBROOGNWTMBYgILv6_1ZUXV-zPqP6KL4vnlqNzvUQTbvj5M1vNQBpYOLWHakY5ZwH2EvuH7oznwvlnTbn9H9lZEdc-7LfEjQ0FrPnYKWE8/s1600/aonokaplug.jpg" width="600"></a></div> Uma excelente op&ccedil;&atilde;o para quem tem que lidar com um n&uacute;mero crescente de dispositivos USB para recarregar, &eacute; usar um m&oacute;dulo de tomada com portas USB integradas, como &eacute; o caso deste m&oacute;dulo de tomada Aonoka com 3 tomadas mais 3 USB.<br><br><a name="more"></a>Hoje em dia temos uma grande variedade de carregadores USB, mas estes <a href="https://amzn.to/4isOsBc">m&oacute;dulos de tomada com portas USB</a> integradas acabam por ser uma solu&ccedil;&atilde;o bastante atractiva, j&aacute; que permitem manter a utilidade da tomada original, mas adicionando portas USB adicionais para carregarem outros equipamentos sem necessidade de carregadores individuais.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeCUkWGpyC-2B0OSuZEJbE7ETSGEc52KAwq3QqbLwHu719xNCDRXIQl4CpAVH49nTunXYiZ81eFHHLqKvKgfU936A0LCAZtWk85D-Xd1067spwx32umwwHwjEO7r40oVOzHhbf11Z8Oc1ccHhV8zAds31hci_pCmNCHIgTLBjCFlgwQBUbavRmOtg8_cEx/s1600/aonoka.jpg"><img alt="" border="0" data-original-height="667" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeCUkWGpyC-2B0OSuZEJbE7ETSGEc52KAwq3QqbLwHu719xNCDRXIQl4CpAVH49nTunXYiZ81eFHHLqKvKgfU936A0LCAZtWk85D-Xd1067spwx32umwwHwjEO7r40oVOzHhbf11Z8Oc1ccHhV8zAds31hci_pCmNCHIgTLBjCFlgwQBUbavRmOtg8_cEx/s600/aonoka.jpg" width="600"></a></div> Este <a href="https://amzn.to/4isOsBc">m&oacute;dulo de tomada Aonoka </a> com 3 tomadas mais 3 USB (2x USB-C, 1x USB-A) est&aacute; dispon&iacute;vel por apenas 20.99 euros na Amazon Espanha - activar desconto de 3 euros.<br><br> As portas USB podem fornecer at&eacute; 20W PD e 18W QC, suficiente para assegurar um carregamento r&aacute;pido na maioria dos dispositivos sem necessidade de ocupar uma tomada com um carregador USB dedicado. Como particularidade adicional, a ficha rotativa na traseira permite colocar o m&oacute;dulo na horizontal ou vertical, conforme seja mais conveniente, e ainda conta com pr&aacute;ticos interruptores individuais para cada tomada e para as portas USB, para eliminar os chamados consumos "fantasma" de equipamentos em standby.<br><br> &Eacute; uma op&ccedil;&atilde;o bastante interessante, especialmente para locais como casas de banho ou cozinhas, onde ser&aacute; conveniente manter o acesso &agrave; tomada el&eacute;ctrica, mas ainda assim arranjar forma de recarregar aparelhos via USB - n&atilde;o s&oacute; os habituais smartphones e tablets, mas tamb&eacute;m coisas como colunas Bluetooth, rel&oacute;gios, ilumina&ccedil;&atilde;o recarreg&aacute;vel, escovas de dentes e m&aacute;quinas de barbear, etc.<br><br><br> Acompanha as melhores promo&ccedil;&otilde;es di&aacute;rias no nosso grupo <a href="https://www.facebook.com/groups/AadM.Promos/?sorting_setting=CHRONOLOGICAL">AadM Promos</a>.<br><br> Mon, 19 May 2025 09:00:00 +0000 Aberto até de Madrugada: iPhone 17 Air com bateria de 2800 mAh? https://abertoatedemadrugada.com/2025/05/iphone-17-air-com-bateria-de-2800-mah.html https://abertoatedemadrugada.com/2025/05/iphone-17-air-com-bateria-de-2800-mah.html <div><a href="https://abertoatedemadrugada.com/2025/05/iphone-17-air-com-bateria-de-2800-mah.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqEJSCIQKNWpGtve4o30Jbf3uqZdF5pNs3RsAwjpMIZVWQ1cKFmmdXlLzm0vWt5bIkW-DptkfYK1fqFSbgo7rUm9ZPotIJhp1Q0I0gu402NPmtu2dYycni2b0A4M2fGBtgJHX9RcCCM4uh8zSjiUXZzKwEznYJ1-SjgAtl7W1VsxkzYvrf6AnTFQUD5oRC/s1600/iphoneair.jpg" width="600"></a></div> O novo iPhone 17 Air dever&aacute; levar ao limite a redu&ccedil;&atilde;o da capacidade da bateria.<br><br><a name="more"></a> Um novo leak revelou detalhes curiosos sobre o futuro iPhone 17 Air, e nem todos agradam. O modelo dever&aacute; ter apenas 5,5 mm de espessura, tornando-se o iPhone mais fino de sempre, mas isso vem com um custo: uma <a href="https://m.blog.naver.com/PostView.naver?blogId=yeux1122&amp;logNo=223868166518&amp;navType=by" rel="nofollow">bateria de apenas 2.800 mAh</a>.<br><br> &Eacute; uma diferen&ccedil;a significativa face a concorrentes como o Samsung Galaxy S25 Edge, que oferece uma bateria de 3.900 mAh num formato semelhante. Ainda assim, h&aacute; quem acredite que a Apple poder&aacute; recorrer a tecnologia de alta densidade para aumentar a capacidade em 15 a 20%. A fuga de informa&ccedil;&atilde;o indica ainda que o novo iPhone pesar&aacute; apenas 145 gramas, menos que o Galaxy S25 Edge, mesmo tendo potencialmente um ecr&atilde; maior.<br><br> Enquanto alguns suspeitam que a marca est&aacute; a reduzir a bateria de prop&oacute;sito para vender mais capas com bateria, h&aacute; tamb&eacute;m rumores de que est&aacute; a desenvolver uma funcionalidade inteligente, baseada em AI, para <a href="https://abertoatedemadrugada.com/2025/05/apple-prepara-gestao-ai-da-bateria-dos.html">optimizar a autonomia</a>&nbsp;sem depender de uma bateria maior. Mas, ser&aacute; algo que ter&aacute; que ser visto para se acreditar.<br><br> Mon, 19 May 2025 07:00:00 +0000 Aberto até de Madrugada: Apple penaliza apps que escapam às comissões com avisos de perigo https://abertoatedemadrugada.com/2025/05/apple-penaliza-apps-que-escapam-as.html https://abertoatedemadrugada.com/2025/05/apple-penaliza-apps-que-escapam-as.html <div><a href="https://abertoatedemadrugada.com/2025/05/apple-penaliza-apps-que-escapam-as.html"><img alt="" border="0" width="600" data-original-height="931" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFrpbOWRy7i0wPjCZZ0b-5KuUSyqeqElaVcpnNiaTg2griv8hFIxiPcGEPXffa_YXpIctIBTIZbRkPs24CAmlO0nyTVH___VBpj5nMPRBCHteKDioBq0wdc7vuVay9Osh9hOWN8ZE3kNhGjNK8cPX5KUwiHe03eiUisNZigXWgystrbj0UDXtHPR8FgVJ0/s1600/applescare.jpg"></a></div> A Apple est&aacute; a apresentar aviso de "perigo" nas apps que adoptaram sistemas de pagamento externos que escapam &agrave;s suas comiss&otilde;es.<br><br><a name="more"></a> A Apple volta a ser criticada na Europa por tentar afastar utilizadores de apps que oferecem m&eacute;todos de pagamento alternativos. Certas apps na App Store, como a Instacar da Hungria, surgem agora com um &iacute;cone de aviso vermelho e uma mensagem a alertar que n&atilde;o utilizam o sistema de pagamentos "privado e seguro" da Apple, insinuando riscos adicionais.<br><br> Este aviso j&aacute; existe desde Mar&ccedil;o de 2024, quando a Apple come&ccedil;ou a cumprir a Lei dos Mercados Digitais da UE (DMA). Contudo, como poucas apps adoptaram pagamentos externos, o tema passou despercebido, at&eacute; agora. A Apple diz estar disposta a mudar para um aviso menos agressivo (que foi o que tinha indicado aos developers que iria utilizar) mas que aguarda da UE para o implementar.<br><blockquote><p lang="en" dir="ltr">On the left is what Apple tells developers their apps are going to look like if they add support for alternative payment systems. <br><br>On the right is what Apple actually shows. <br><br>Would love to see all the &ldquo;make it more scary&rdquo; internal communications that led to this: <a href="https://t.co/fjOJVDeu7v">pic.twitter.com/fjOJVDeu7v</a></p>&mdash; Kosta Eleftheriou (@keleftheriou) <a href="https://twitter.com/keleftheriou/status/1923226062906863923?ref_src=twsrc%5Etfw">May 16, 2025</a></blockquote> A mensagem explica que os utilizadores ter&atilde;o de fornecer dados pessoais e de pagamento directamente aos programadores e seus parceiros, apresentando isto como uma preocupa&ccedil;&atilde;o de privacidade e seguran&ccedil;a. No entanto, h&aacute; quem considere que o objectivo &eacute; simplesmente desencorajar a concorr&ecirc;ncia - j&aacute; que isso &eacute; meramente o que se passa em todo e qualquer pagamento online.<br><br> A abordagem da Apple j&aacute; motivou cr&iacute;ticas das autoridades europeias, que acusam a empresa de tornar excessivamente complicado o uso de lojas de apps e pagamentos alternativos. A pol&eacute;mica intensificou-se ap&oacute;s o caso Epic vs Apple, que proibiu este tipo de t&aacute;cticas dissuasoras nos EUA - uma decis&atilde;o que, por agora, a Apple n&atilde;o aplicou ao resto do mundo.<br><br> Sun, 18 May 2025 20:00:00 +0000 Alexsandro Felix: Fotos Esportivas Incríveis: Equipamento Antigo https://blog.ffelix.eti.br/alem-do-clique-capturando-a-alma-do-esporte-mesmo-com-equipamento-das-antigas/ https://blog.ffelix.eti.br/alem-do-clique-capturando-a-alma-do-esporte-mesmo-com-equipamento-das-antigas/ <p>E a&iacute;, pessoal! Quem me acompanha aqui no blog sabe que eu adoro misturar minhas paix&otilde;es por tecnologia e por registrar momentos &ndash; e a fotografia esportiva &eacute; um prato cheio pra isso. Mas, confesso, nem sempre foi um mar de rosas (ou melhor, um campo de futebol iluminado!).</p> <p>Capturar a emo&ccedil;&atilde;o, a velocidade e a imprevisibilidade do esporte &eacute; um desafio e tanto. Um fra&ccedil;&atilde;o de segundo pode ser a diferen&ccedil;a entre a foto ic&ocirc;nica e um borr&atilde;o sem sentido. E, no in&iacute;cio da minha jornada nesse universo, eu sentia isso na pele, e muito!Meu equipamento inicial se resumia a uma guerreira Canon EOS 60D e uma lente Sigma 18-75mm 2.8. Era o que tinha na &eacute;poca, e eu me virava como podia. Essa combina&ccedil;&atilde;o me ensinou DEMAIS sobre limites e criatividade para super&aacute;-los.</p> <figure><a href="https://amzn.to/4ksCJDG"><img data-recalc-dims="1" decoding="async" width="800" height="717" data-attachment-id="1098" data-permalink="https://blog.ffelix.eti.br/canon_eos_60d/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?fit=1337%2C1198&amp;ssl=1" data-orig-size="1337,1198" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="Canon_EOS_60D" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?fit=300%2C269&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?fit=800%2C717&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?resize=800%2C717&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?resize=1024%2C918&amp;ssl=1 1024w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?resize=300%2C269&amp;ssl=1 300w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?resize=768%2C688&amp;ssl=1 768w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Canon_EOS_60D.jpg?w=1337&amp;ssl=1 1337w" sizes="(max-width: 800px) 100vw, 800px"></a></figure><p>A 60D, coitada, &eacute; de uma &eacute;poca em que c&acirc;meras DSLR reinavam, e hoje em dia &eacute; at&eacute; dif&iacute;cil achar uma novinha por a&iacute;! Se voc&ecirc; est&aacute; come&ccedil;ando hoje e procura algo na mesma pegada DSLR vers&aacute;til, uma op&ccedil;&atilde;o bacana seria algo como esta c&acirc;mera <a href="https://amzn.to/4j9VlXR" target="_blank" rel="noopener" title="">aqui</a> (Link Afiliado), pois de t&atilde;o antiga que ela &eacute;, fica muito dif&iacute;cil encontrar uma nova para comprar, ent&atilde;o indico a <a href="https://amzn.to/4j9VlXR" target="_blank" rel="noopener" title="">Canon EOS Rebel T100</a> porque &eacute; uma c&acirc;mera de entrada boa e tem um valor acess&iacute;vel. E a <a href="https://amzn.to/44FqfUx" target="_blank" rel="noopener" title="">Sigma 28-70 mm</a> essa daqui (<a href="https://amzn.to/44FqfUx" target="_blank" rel="noopener" title="">Link Afiliado</a>), que usei muito, era minha fiel companheira para os cliques mais gerais.</p> <figure><a href="https://amzn.to/44FqfUx"><img data-recalc-dims="1" decoding="async" width="598" height="1000" data-attachment-id="1100" data-permalink="https://blog.ffelix.eti.br/sigma_28-70mm/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/sigma_28-70mm.webp?fit=598%2C1000&amp;ssl=1" data-orig-size="598,1000" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="sigma_28-70mm" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/sigma_28-70mm.webp?fit=179%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/sigma_28-70mm.webp?fit=598%2C1000&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/sigma_28-70mm.webp?resize=598%2C1000&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/sigma_28-70mm.webp?w=598&amp;ssl=1 598w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/sigma_28-70mm.webp?resize=179%2C300&amp;ssl=1 179w" sizes="(max-width: 598px) 100vw, 598px"></a></figure><p>Com esse kit, muitas vezes eu sentia que estava &ldquo;longe&rdquo; demais da a&ccedil;&atilde;o, ou que perdia aquele detalhe crucial do rosto do atleta pela falta de zoom. Era frustrante, mas me for&ccedil;ou a pensar fora da caixa, a me posicionar melhor, a antecipar os movimentos.</p> <p>A virada veio depois de um tempo, com muito suor e economia, quando consegui adquirir uma lente <a href="https://amzn.to/44LpXeU" target="_blank" rel="noopener" title="">Canon 75-300mm 4.0</a>. Ah, essa lente aqui (<a href="https://amzn.to/44LpXeU" target="_blank" rel="noopener" title="">Link Afiliado</a>)! De repente, o campo pareceu menor, e eu conseguia trazer a a&ccedil;&atilde;o para mais perto, capturando express&otilde;es, o foco no olhar, a tens&atilde;o do momento de um jeito que antes era imposs&iacute;vel</p> <figure><a href="https://amzn.to/44LpXeU"><img data-recalc-dims="1" loading="lazy" decoding="async" width="545" height="1000" data-attachment-id="1102" data-permalink="https://blog.ffelix.eti.br/lente_canon_ef_75-300mm_f4-0-5-6/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/lente_canon_EF_75-300mm_F4.0-5.6.webp?fit=545%2C1000&amp;ssl=1" data-orig-size="545,1000" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="lente_canon_EF_75-300mm_F4.0-5.6" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/lente_canon_EF_75-300mm_F4.0-5.6.webp?fit=164%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/lente_canon_EF_75-300mm_F4.0-5.6.webp?fit=545%2C1000&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/lente_canon_EF_75-300mm_F4.0-5.6.webp?resize=545%2C1000&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/lente_canon_EF_75-300mm_F4.0-5.6.webp?w=545&amp;ssl=1 545w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/lente_canon_EF_75-300mm_F4.0-5.6.webp?resize=164%2C300&amp;ssl=1 164w" sizes="auto, (max-width: 545px) 100vw, 545px"></a></figure><p>Essa experi&ecirc;ncia me mostrou que, embora o equipamento ajude MUITO (e uma boa teleobjetiva faz milagres na fotografia esportiva!), a t&eacute;cnica, o olhar e a capacidade de antecipa&ccedil;&atilde;o s&atilde;o igualmente (ou mais!) importantes. &Eacute; sobre entender o esporte, ler o jogo e estar no lugar certo na hora certa, combinando isso com o dom&iacute;nio da sua c&acirc;mera e lente.</p> <figure><a href="https://banlek.com/asfelix"><img data-recalc-dims="1" loading="lazy" decoding="async" width="683" height="1024" data-attachment-id="1103" data-permalink="https://blog.ffelix.eti.br/basquete/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?fit=1707%2C2560&amp;ssl=1" data-orig-size="1707,2560" data-comments-opened="1" data-image-meta=&#039;{"aperture":"4","credit":"Alexsandro Felix","camera":"Canon EOS 60D","caption":"","created_timestamp":"1716729120","copyright":"","focal_length":"70","iso":"6400","shutter_speed":"0.0025","title":"","orientation":"1"}&#039; data-image-title="Basquete" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?fit=200%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?fit=683%2C1024&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete.jpg?resize=683%2C1024&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?resize=683%2C1024&amp;ssl=1 683w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?resize=768%2C1152&amp;ssl=1 768w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?resize=1024%2C1536&amp;ssl=1 1024w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?resize=1365%2C2048&amp;ssl=1 1365w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?w=1707&amp;ssl=1 1707w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Basquete-scaled.jpg?w=1600&amp;ssl=1 1600w" sizes="auto, (max-width: 683px) 100vw, 683px"></a></figure><p>Hoje, continuo aprendendo e experimentando, sempre buscando capturar n&atilde;o apenas a a&ccedil;&atilde;o, mas a paix&atilde;o e a emo&ccedil;&atilde;o que movem atletas e torcedores. &Eacute; uma busca constante por aquele clique que conta uma hist&oacute;ria inteira.</p> <p>Se voc&ecirc; se interessou pelo meu trabalho e quiser ver um pouco mais dessas hist&oacute;rias contadas por imagens, ou at&eacute; mesmo adquirir uma foto, convido voc&ecirc; a visitar meu <a href="https://banlek.com/asfelix" target="_blank" rel="noopener" title="">portf&oacute;lio</a>.</p> <figure><a href="https://banlek.com/asfelix"><img data-recalc-dims="1" loading="lazy" decoding="async" width="577" height="1024" data-attachment-id="1104" data-permalink="https://blog.ffelix.eti.br/volleyball/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?fit=1442%2C2560&amp;ssl=1" data-orig-size="1442,2560" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"Alexsandro Felix","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"1"}&#039; data-image-title="Volleyball" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?fit=169%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?fit=577%2C1024&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball.jpg?resize=577%2C1024&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?resize=577%2C1024&amp;ssl=1 577w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?resize=169%2C300&amp;ssl=1 169w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?resize=768%2C1364&amp;ssl=1 768w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?resize=865%2C1536&amp;ssl=1 865w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?resize=1153%2C2048&amp;ssl=1 1153w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Volleyball-scaled.jpg?w=1442&amp;ssl=1 1442w" sizes="auto, (max-width: 577px) 100vw, 577px"></a></figure><p>E voc&ecirc;, quais desafios j&aacute; enfrentou na fotografia e como os superou? Conta pra mim nos coment&aacute;rios</p> <p></p><p>The post <a href="https://blog.ffelix.eti.br/alem-do-clique-capturando-a-alma-do-esporte-mesmo-com-equipamento-das-antigas/">Fotos Esportivas Incr&iacute;veis: Equipamento Antigo</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Sun, 18 May 2025 19:40:56 +0000 Aberto até de Madrugada: O arranha-céus que esteve quase a cair https://abertoatedemadrugada.com/2025/05/o-arranha-ceus-que-esteve-quase-cair.html https://abertoatedemadrugada.com/2025/05/o-arranha-ceus-que-esteve-quase-cair.html <div><a href="https://abertoatedemadrugada.com/2025/05/o-arranha-ceus-que-esteve-quase-cair.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH7RR0iY0D4eaQWB9_-YvgqSfaoldNXPVt1vUrfUu0QXCF2eByXJQq6YsnaJoPuj84qhMAl7ur6cDPZi0EydXVMcj4CTiJmJewq8w-RE-SzxbctuezVeAdXgk9f0EikFQ6j9LyQv9zIP861ni-5uZnqmN12S2HcJ_3QLY3dqJdn8QS9B7qalWYSpLLSix3/s1600/citicorp.jpg" width="600"></a></div> O edif&iacute;cio da Citicorp &eacute; um curioso exemplo de um "desastre prestes a acontecer" - mas que felizmente foi corrigido a tempo.<br><br><a name="more"></a> Por muito impressionante que sejam os feitos de engenharia da era moderna, existem tamb&eacute;m alguns casos que demonstram o que pode acontecer quando as coisas n&atilde;o s&atilde;o feitas da forma correcta. O edif&iacute;cio da Citicorp &eacute; mais um dos arranha-c&eacute;us que faz parte da moldura arquitect&oacute;nica do perfil de Manhatan, mas que esconde uma hist&oacute;ria que se poderia ter tornado numa grande cat&aacute;strofe.<br><br> O <a href="https://en.wikipedia.org/wiki/Citigroup_Center" rel="nofollow">Citicorp Center</a> (agora Citigroup Center) foi constru&iacute;do em 1977 e, com 279 metros de altura, ainda hoje permanece um dos mais altos arranha-c&eacute;us do planeta. A concep&ccedil;&atilde;o da sua estrutura ficou a cargo de William LeMessurier, que ficou condicionado por alguns factores externos: num dos cantos do terreno estava uma igreja que exigiu ser mantida no local, fazendo com que fosse necess&aacute;rio recorrer a uma incomum estrutura de suporte. Uma estrutura que se acreditava ser suficientemente capaz, assistida por um sistema de amortecimento no topo, mas que anos mais tarde foi posta em causa na sequ&ecirc;ncia de uma pergunta inocente de um estudante. A estrutura n&atilde;o tinha sido feita exactamente como tinha sido originalmente planeada, com vigas que foram aparafusadas em vez de soldadas e, em caso do edif&iacute;cio ficar exposto a fortes ventos na diagonal, <a href="https://en.wikipedia.org/wiki/Citicorp_Center_engineering_crisis">ficava em s&eacute;rio risco de colapsar</a>.<br><br><br><div></div> <br><br> Felizmente, em vez de tentarem abafar o caso e ignorarem o poss&iacute;vel desastre, deu-se in&iacute;cio a um processo de aplica&ccedil;&atilde;o de corre&ccedil;&otilde;es, feito em segredo durante a noite - e acautelando um plano de emerg&ecirc;ncia para evacua&ccedil;&atilde;o da &aacute;rea afectada - que acabou por trazer seguran&ccedil;a ao edif&iacute;cio, e fazer com que ainda hoje permane&ccedil;a em opera&ccedil;&atilde;o.<br><br> Sun, 18 May 2025 17:30:00 +0000 Ricardo Saramago: Capcom Fighting Collection 2 https://www.odrakir.com/blog/2025/05/18/capcom-fighting-collection-2/ https://www.odrakir.com/blog/2025/05/18/capcom-fighting-collection-2/ <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-8.png?ssl=1"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="555" height="555" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-8.png?resize=555%2C555&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-8.png?w=555&amp;ssl=1 555w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-8.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-8.png?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 555px) 100vw, 555px"></a></figure><blockquote> <p>Note: I should have included this in my latest random stuff post, but I completely forgot&hellip;</p> </blockquote> <p>If there&rsquo;s one thing that still hits me right in the nostalgia, it&rsquo;s a solid Capcom fighting game from the golden era of Arcade gaming and now, with Capcom Fighting Collection 2, Capcom did it again.</p> <p>After the first collection gave us a beautifully preserved slice of arcade history, this second volume feels like a deep cut mixtape curated by someone who really gets it.</p> <p>We&rsquo;re talking pixel-perfect ports, rollback netcode, and (thankfully) customizable controls that make it playable whether you&rsquo;re using a stick, pad, or even a hitbox. Titles that barely saw proper home releases finally get their moment&mdash;Red Earth, Cyberbots, Rival Schools 2 (finally!), and a few surprises that I won&rsquo;t spoil here. The best for me? Power Stone, Power Stone 2 and Street Fighter Alpha 3 Upper, three games that I don&rsquo;t play since I retired my beloved PSP.</p> <figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title1-1.webp?ssl=1"><img data-recalc-dims="1" decoding="async" width="600" height="422" data-id="2076" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title1-1.webp?resize=600%2C422&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title1-1.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title1-1.webp?resize=300%2C211&amp;ssl=1 300w" sizes="(max-width: 600px) 100vw, 600px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title2-1.webp?ssl=1"><img data-recalc-dims="1" decoding="async" width="600" height="420" data-id="2077" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title2-1.webp?resize=600%2C420&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title2-1.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title2-1.webp?resize=300%2C210&amp;ssl=1 300w" sizes="(max-width: 600px) 100vw, 600px"></a></figure></figure><figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title3.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="420" data-id="2078" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title3.webp?resize=600%2C420&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title3.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title3.webp?resize=300%2C210&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title4.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="420" data-id="2079" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title4.webp?resize=600%2C420&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title4.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title4.webp?resize=300%2C210&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></a></figure></figure><figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title5.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="420" data-id="2080" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title5.webp?resize=600%2C420&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title5.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title5.webp?resize=300%2C210&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title6.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="420" data-id="2081" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title6.webp?resize=600%2C420&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title6.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title6.webp?resize=300%2C210&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></a></figure></figure><figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title7.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="420" data-id="2082" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title7.webp?resize=600%2C420&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title7.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title7.webp?resize=300%2C210&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title8.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="420" data-id="2083" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title8.webp?resize=600%2C420&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title8.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/logo_title8.webp?resize=300%2C210&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></a></figure></figure><p>This isn&rsquo;t just a dump of old ROMs&mdash;it&rsquo;s preservation with love. Menus are slick, the museum mode is surprisingly rich, and online play is smooth (at least in my tests). Capcom didn&rsquo;t phone this in&mdash;they knew exactly who they were making this for: us, the arcade kids who never really grew up.</p> <p>Capcom Fighting Collection 2 is available since May 16th for PC and consoles, so you don&rsquo;t have an excuse not to play it.</p> <p>Is it niche? A bit&hellip; some players probably never played the 3D titles in the collection&hellip; Is it essential? If you grew up mashing out hadoukens with your friends on a CRT and still get chills from that CPS2 arcade startup sound&hellip; then yes. 100% yes.</p> <p></p> Sun, 18 May 2025 17:22:32 +0000 Aberto até de Madrugada: Cientistas transformam chumbo em ouro no LHC https://abertoatedemadrugada.com/2025/05/cientistras-transformam-chumbo-em-ouro.html https://abertoatedemadrugada.com/2025/05/cientistras-transformam-chumbo-em-ouro.html <div><a href="https://abertoatedemadrugada.com/2025/05/cientistras-transformam-chumbo-em-ouro.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRiID8xvMvnZZz7O2giifBePpRfCsW3_lid6whUbew4rQn41tKO1WSVtSpKfPlL3ljSNEDXsJ_bsCMY5SsHUwA8VJ27gkOR6ZYaqSSlb97IB90ZsQwn0qt3Qmws8O-i78oh-WWqTiN1JRR7abO2dNpEsZJqyQb745xsnIZ0wRI0L4CuoTnENIeUJtisi2Z/s1600/lhc.jpg" width="600"></a></div> O sonho de transformar chumbo em ouro tornou-se realidade, e tudo o que &eacute; preciso &eacute; fazer colidir &aacute;tomos &agrave; velocidade da luz.<br><br><a name="more"></a> Os cientistas conseguiram finalmente realizar o sonho antigo dos alquimistas: transformar chumbo em ouro. No LHC (Large Hadron Collider), investigadores conseguiram esta transmuta&ccedil;&atilde;o n&atilde;o atrav&eacute;s de colis&otilde;es directas, mas por um novo processo que envolve intera&ccedil;&otilde;es de "quase contacto" entre n&uacute;cleos at&oacute;micos.<br><br> Quando &aacute;tomos de chumbo passam muito pr&oacute;ximos a velocidades pr&oacute;ximas da luz, geram campos electromagn&eacute;ticos t&atilde;o fortes que provocam rajadas de fot&otilde;es. Estas intera&ccedil;&otilde;es fazem com que os n&uacute;cleos dos &aacute;tomos vibrem e libertem part&iacute;culas como neutr&otilde;es e prot&otilde;es.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgklr5F7hd4zfWRbpvtKdwCYL4vcOzR7yTYns_1AoPiJ36bk3fIIDJQWobYW2rVWnAF3dQ8OjbsQB-z7ciLz0969mNELOJWITt2dq8YkpQmxQuHlZWypepB_BLoUS-TZ3_RlXz-ghiv6SZMRci6Ihvhy1HOOoIT253xSQA1IWhSvc0fqqIeYwpn2QZBA3S/s1440/pbag.jpg"><img alt="" border="0" width="600" data-original-height="810" data-original-width="1440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgklr5F7hd4zfWRbpvtKdwCYL4vcOzR7yTYns_1AoPiJ36bk3fIIDJQWobYW2rVWnAF3dQ8OjbsQB-z7ciLz0969mNELOJWITt2dq8YkpQmxQuHlZWypepB_BLoUS-TZ3_RlXz-ghiv6SZMRci6Ihvhy1HOOoIT253xSQA1IWhSvc0fqqIeYwpn2QZBA3S/s600/pbag.jpg"></a></div> Neste caso, os &aacute;tomos de chumbo perderam tr&ecirc;s prot&otilde;es, transformando-se assim <a href="https://www.home.cern/news/news/physics/alice-detects-conversion-lead-gold-lhc">em &aacute;tomos de ouro</a>. A quantidade de ouro foi m&iacute;nima e durou pouco tempo, mas &eacute; uma demonstra&ccedil;&atilde;o impressionante de transmuta&ccedil;&atilde;o nuclear gra&ccedil;as &agrave; f&iacute;sica moderna.<br><br> Apesar de n&atilde;o ter valor comercial, esta descoberta ajuda a compreender melhor as for&ccedil;as fundamentais da natureza. &Eacute; um exemplo curioso de como a ci&ecirc;ncia consegue dar vida a antigos mitos - mesmo que apenas por um fugaz instante.<br><br> Sun, 18 May 2025 15:30:00 +0000 Ricardo Saramago: Random Sunday Stuff https://www.odrakir.com/blog/2025/05/18/random-sunday-stuff/ https://www.odrakir.com/blog/2025/05/18/random-sunday-stuff/ <p>Thinking of starting a Sunday ritual here &mdash; a weekly post with random things that caught my eye and felt worth sharing. Not sure if it&rsquo;ll stick, but let&rsquo;s give it a shot.</p> <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-4.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="652" height="388" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-4.png?resize=652%2C388&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-4.png?w=652&amp;ssl=1 652w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-4.png?resize=300%2C179&amp;ssl=1 300w" sizes="auto, (max-width: 652px) 100vw, 652px"></a></figure><p><strong>The Conan O&rsquo;Brien Mark Twain Award special on Netflix.</strong> <br>Hands down one of the best comedy specials I&rsquo;ve seen in a long time. The roasts from his friends are brutally funny, and there&rsquo;s a sharp political undertone that never lets you forget the current state of the US. If you&rsquo;re a Conan fan (or just into smart, fearless comedy), don&rsquo;t miss this.<br></p> <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="1024" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?resize=1024%2C1024&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?resize=1024%2C1024&amp;ssl=1 1024w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?resize=1536%2C1536&amp;ssl=1 1536w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-5.png?resize=2048%2C2048&amp;ssl=1 2048w" sizes="auto, (max-width: 1000px) 100vw, 1000px"></a></figure><p><strong>Dire Straits &ndash; Brothers In Arms &ndash; 40th Anniversary</strong><br>Released on May 16, this iconic album is now out on all major streaming platforms, Vinyl, CD, and Blu-ray &mdash; featuring lush Dolby Atmos and 5.1 mixes. This record shaped a big part of my youth, and I couldn&rsquo;t resist grabbing it. It sounds absolutely fantastic.</p> <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-6.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="774" height="774" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-6.png?resize=774%2C774&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-6.png?w=774&amp;ssl=1 774w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-6.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-6.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-6.png?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 774px) 100vw, 774px"></a></figure><p><strong>OsbsoleteSony</strong> &ndash; <a href="https://www.instagram.com/obsoletesony/">https://www.instagram.com/obsoletesony/</a></p> <p>If you grew up in the &rsquo;80s and &rsquo;90s like I did, chances are you had at least one Sony product in your life.<br>I was a huge Sony fan back then. The last audio device I owned from them was a Minidisc recorder &mdash; I absolutely loved that thing and held onto it for years, until I traded it for a Creative Jukebox. Looking back, I really wish I had kept it. There&rsquo;s something almost mystical about the design aesthetic of Sony products from that era &mdash; a mix of elegance, precision, and futuristic minimalism that&rsquo;s hard to find today.</p> <p>I remember seeing the PS5 for the first time and instinctively rejecting it. It just didn&rsquo;t have that magic.<br>Honestly, I&rsquo;d love to see Sony release a proper, affordable media player &mdash; CD player and all &mdash; designed in the spirit of their golden years.</p> <p>Anyway, I digress.<br>If you&rsquo;re a fellow Sony nostalgist, check out the @ObsoleteSony Instagram account. It&rsquo;s packed with gorgeous shots of classic devices from that era. If you&rsquo;re not following them yet, you&rsquo;re missing out. </p> <p>There&rsquo;s also an official Design Gallery site from Sony <a href="https://www.sony.com/en/SonyInfo/design/gallery/">here</a>.</p> Sun, 18 May 2025 14:15:46 +0000 Aberto até de Madrugada: Doom: The Dark Ages https://abertoatedemadrugada.com/2025/05/doom-dark-ages.html https://abertoatedemadrugada.com/2025/05/doom-dark-ages.html <div><a href="https://abertoatedemadrugada.com/2025/05/doom-dark-ages.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOQp2JJ8OYDETshvfv639AE834QeK83hAFqOhIBoBWbv5ku3e0JFyqH87c6xk91jwcfwbcRsQSzBzTDBBpJ2OZMprNqd4OnZHwLl-6Yj3ipzFKnsOyjGDD3ThJlhEQI-0DeXWtWPRtI03_W2RofmpfQPecY8HYxRopmx-RBXs3_S-yauM0_HRAGfD_Dqam/s1600/doom.jpg" width="600"></a></div> J&aacute; est&aacute; dispon&iacute;vel o Doom: The Dark Ages, a mais recente vers&atilde;o de um cl&aacute;ssico que transformou os jogos de computador.<br><br><a name="more"></a> Depois do Doom Eternal, este Doom: The Dark Ages traz-nos mais uma dose de carnificina digital, desta vez refor&ccedil;ando ainda mais a componente "medieval" do jogo.<br><br> Mas, por tr&aacute;s da divers&atilde;o de destruir tudo o que nos aparece pela frente da forma mais criativa poss&iacute;vel, esconde-se um poderoso motor gr&aacute;fico altamente avan&ccedil;ado, quer a n&iacute;vel da qualidade de imagem (com reflexos e ilumina&ccedil;&atilde;o), como tamb&eacute;m a n&iacute;vel da simula&ccedil;&atilde;o f&iacute;sica. Detalhes que quase poder&atilde;o passar despercebidos pelo meio da intensa ac&ccedil;&atilde;o mas que contribuem para dar um n&iacute;vel de realismo que, tradicionalmente, n&atilde;o estava presente neste tipo de jogos.<br><br> Como sempre, vale a pena experimentar e desfrutar.<br><br><div></div> <br><div></div> <br> Para os f&atilde;s, podem tamb&eacute;m apreciar as diferen&ccedil;as e evolu&ccedil;&otilde;es dos diferentes inimigos e criaturas - bem distantes do amontoado de pixels do Doom original.<br><br><div></div> <br> Sun, 18 May 2025 13:30:00 +0000 Aberto até de Madrugada: Viagem ao Japão - parte 2 https://abertoatedemadrugada.com/2025/05/viagem-ao-japao-parte-2.html https://abertoatedemadrugada.com/2025/05/viagem-ao-japao-parte-2.html <div><a href="https://abertoatedemadrugada.com/2025/05/viagem-ao-japao-parte-2.html"><img alt="" border="0" data-original-height="945" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6rgMmejJbv6wtb20AzXeuugwnL8_x30v0rcg6GW2eK5XlwBV3zgyCv_qZsSl-QOTPcwif5fF_6OuMKyHUG1Bop1JGLSd-YELVA-vPkXRlfj169grU9gusn-XKAxyGkohSdF7y98hX45j7ir9aUCds6ieA5FifbqHGqH5B06UkL4VghKEWO3bOn2Jzk1bv/s1600/nara.jpg" width="600"></a></div> O Jap&atilde;o &eacute; tudo aquilo que se poderia imaginar - e mais.<br><br><a name="more"></a> Quem acompanha regularmente o AadM saber&aacute; que tem estado em "modo especial" devido a uma <a href="https://abertoatedemadrugada.com/2025/05/viagem-ao-japao.html">viagem ao Jap&atilde;o</a> (que ainda est&aacute; a decorrer) e que me for&ccedil;ou a alterar a rotina habitual de publica&ccedil;&otilde;es. Mesmo estando ainda a meio da viagem, finalmente consegui arranjar uma curta pausa para vir partilhar como tem sido - embora o rescaldo final fique para mais tarde.<br><br> Neste momento j&aacute; estou em T&oacute;quio, que &eacute; precisamente aquilo que se poderia imaginar, tal como se v&ecirc; nos filmes e s&eacute;ries: uma mega-metr&oacute;pole que acumula mais pessoas que o nosso Portugal; e onde as coisas fluem bastante bem, em grande parte devido &agrave; imensa organiza&ccedil;&atilde;o impl&iacute;cita dos japoneses.<br><blockquote><p dir="ltr" lang="en">Tokyo by night <a href="https://t.co/e6fsSLyScC">pic.twitter.com/e6fsSLyScC</a></p>&mdash; Carlos Martins (@ptnik) <a href="https://twitter.com/ptnik/status/1923528394811244985?ref_src=twsrc%5Etfw">May 16, 2025</a></blockquote> Ainda n&atilde;o fui &agrave;s partes da cidade que tenho mais curiosidade em ver, como <a href="https://pt.wikipedia.org/wiki/Akihabara">Akihabara</a>, mas n&atilde;o ir&aacute; escapar nos pr&oacute;ximos dias. Entretanto, posso dizer que j&aacute; sou um mestre no dom&iacute;nio das sanitas japonesas, e tamb&eacute;m j&aacute; passei pelos banhos p&uacute;blicos (que, obviamente, tem que ser algo vivido ao vivo e n&atilde;o pode ser partilhado com imagens ou v&iacute;deos! :)<br><br> &#12414;&#12383;&#26126;&#26085;&#12397; (at&eacute; amanh&atilde;!)<br><br> Sun, 18 May 2025 11:00:00 +0000 Aberto até de Madrugada: Android 16 prepara ecrã dividido 90:10 https://abertoatedemadrugada.com/2025/05/android-16-prepara-ecra-dividido-9010.html https://abertoatedemadrugada.com/2025/05/android-16-prepara-ecra-dividido-9010.html <div><a href="https://abertoatedemadrugada.com/2025/05/android-16-prepara-ecra-dividido-9010.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7gbs_EMb78gn7PVDgc0mLfFB-Q_p97NOTYUBbD8lPE7ep3xda0bvGgZyrvgXWFyePFiwKb6Yo1rRdiT_JiRXih6A2tubCk9ZJ0mMbnIq62_oFJvPfFQxkNf9FQ0FcCsrL19kjcnKrEC-rKcxpjGcP7j9G2CjAWWZbHIL9fPE3sU9Vs6LfHbiSSBIt5yvz/s1600/android9010.jpg" width="600"></a></div> O novo Android 16 dever&aacute; trazer um novo modo de ecr&atilde; dividido 90:10 inspirado no que j&aacute; existe nos OnePlus.<br><br><a name="more"></a> A Google est&aacute; a preparar um novo modo de ecr&atilde; dividido para o Android 16 que promete melhorar a multitarefa nos smartphones. Em vez da habitual divis&atilde;o 70:30, este novo formato usa uma <a href="https://www.androidauthority.com/android-16-90-10-split-screen-3557268/">propor&ccedil;&atilde;o de 90:10</a>, permitindo que uma app ocupe quase todo o ecr&atilde;, enquanto a outra continua acess&iacute;vel numa pequena &aacute;rea.<br><br> O truque est&aacute; no toque: ao tocar na app mais pequena, o Android troca imediatamente os tamanhos - a app pequena passa a ocupar 90% do ecr&atilde; e a maior reduz-se a 10%. &Eacute; uma forma simples e r&aacute;pida de alternar entre apps sem sair do modo de ecr&atilde; dividido, resolvendo a falta de espa&ccedil;o nos telem&oacute;veis. <div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsVWC2MrruPI_0z3DzS2SdWDCiO2LIvVM3wGLfgKZq7br8CZbhJBDM-z7ig2qCFbgXkkLoF7heRIR7R07JNoExcitArzu88vUgGjjYXZwILZ369v_-JVg9283Q3oVcfWb9db9gSEt6P6J-N3QcCeqTsyu60hgpNxdxoJ7kMO9Huu2WBrnpYz32Cc28loOM/s1600/androidmulti90.jpg"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsVWC2MrruPI_0z3DzS2SdWDCiO2LIvVM3wGLfgKZq7br8CZbhJBDM-z7ig2qCFbgXkkLoF7heRIR7R07JNoExcitArzu88vUgGjjYXZwILZ369v_-JVg9283Q3oVcfWb9db9gSEt6P6J-N3QcCeqTsyu60hgpNxdxoJ7kMO9Huu2WBrnpYz32Cc28loOM/s600/androidmulti90.jpg" width="600"></a></div> <br><br><div></div> <br> Esta funcionalidade parece claramente inspirada no sistema Open Canvas da OnePlus, embora n&atilde;o se saiba se houve colabora&ccedil;&atilde;o entre as duas empresas. Seja como for, &eacute; uma melhoria inteligente que tornar&aacute; a multitarefa mais pr&aacute;tica nos dispositivos Android.<br><br> Embora ainda n&atilde;o haja data oficial de lan&ccedil;amento, a funcionalidade est&aacute; praticamente pronta e poder&aacute; chegar num dos pr&oacute;ximos updates do Android 16. Para quem usa v&aacute;rias apps em simult&acirc;neo, esta novidade ser&aacute; muito bem-vinda.<br><br> Sun, 18 May 2025 10:00:00 +0000 Aberto até de Madrugada: LG e Mediatek criam sistema Android multi-ecrã para automóveis https://abertoatedemadrugada.com/2025/05/lg-e-mediatek-criam-sistema-android.html https://abertoatedemadrugada.com/2025/05/lg-e-mediatek-criam-sistema-android.html <div><a href="https://abertoatedemadrugada.com/2025/05/lg-e-mediatek-criam-sistema-android.html"><img alt="" border="0" width="600" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7B9JP5t7qcw6yaerZoquTx-omHc4iGKeoiXP-QU65UdQHgzNxRfen23KPrpnZ1rsh5jkZRh8Adco-knCKOmxfzA4ouybn2tW46wR_GnNW9ZXUz9Sti2tqyCgYI16VCpHGHsLuC5uGg2SdkHUDX3qOHtpcMRPI91Wc9MF_FZR__Lm3TyL2Wm96Ok50A6Pi/s1600/LGCMU.jpg"></a></div> A LG Electronics e a MediaTek apresentaram a sua estrutura Concurrent Multi-User (CMU), alicer&ccedil;ada em Android, aplicada a sistemas de Infotainment In-Vehicle (IVI), no Sal&atilde;o Autom&oacute;vel de Xangai.<br><br><a name="more"></a> A estrutura CMU &eacute; a primeira do seu g&eacute;nero a ser implementada no sistema operativo Android Automotive OS (AAOS) da Google. Esta solu&ccedil;&atilde;o permite que os passageiros utilizem simultaneamente v&aacute;rios ecr&atilde;s num &uacute;nico sistema operativo Android, respondendo &agrave; necessidade de um melhor consumo de conte&uacute;dos no ve&iacute;culo, &agrave; medida que os ecr&atilde;s se tornam maiores e mais diversificados na era dos ve&iacute;culos definidos por software (SDV).<br><br> A estrutura proporciona aos ocupantes do ve&iacute;culo uma experi&ecirc;ncia Android multi-dispositivo sem falhas num sistema unificado. Os condutores podem utilizar o sistema de navega&ccedil;&atilde;o enquanto o passageiro do banco da frente v&ecirc; v&iacute;deos e os passageiros do banco de tr&aacute;s jogam jogos - tudo em simult&acirc;neo e de forma independente, de acordo com as normas de seguran&ccedil;a.<br><br> Anteriormente, as configura&ccedil;&otilde;es t&iacute;picas de ve&iacute;culos com um ecr&atilde; central de informa&ccedil;&atilde;o (CID) e dois ecr&atilde;s de entretenimento nos bancos traseiros (RSE) exigiam v&aacute;rias m&aacute;quinas virtuais (VM) Android. A tecnologia CMU simplifica esta configura&ccedil;&atilde;o, ao executar tudo num &uacute;nico sistema operativo Android, reduzindo os requisitos de CPU, mem&oacute;ria e armazenamento e minimizando a carga do sistema.<br><br> A estrutura CMU transforma as experi&ecirc;ncias no ve&iacute;culo, criando espa&ccedil;os digitais personalizados para os passageiros. Cada utilizador pode iniciar sess&atilde;o no seu pr&oacute;prio ecr&atilde;, ligar auscultadores Bluetooth ou controladores de jogos, gerir defini&ccedil;&otilde;es de privacidade e pode at&eacute; partilhar filmes, jogos e &aacute;udio em v&aacute;rios ecr&atilde;s. Os pais podem definir controlos parentais para garantir uma experi&ecirc;ncia segura e adequada &agrave; idade das crian&ccedil;as.<br><br> A estrutura CMU foi introduzida como uma carater&iacute;stica essencial do AAOS15. Para al&eacute;m das fun&ccedil;&otilde;es principais do AAOS, a LG oferece carater&iacute;sticas exclusivas, como o suporte de auscultadores Bluetooth independentes, Text-To-Speech, controlos parentais e espelhamento f&aacute;cil atrav&eacute;s de gestos. A LG tira partido das suas d&eacute;cadas de experi&ecirc;ncia na otimiza&ccedil;&atilde;o do desempenho dos dispositivos m&oacute;veis Android, que adquiriu enquanto operava um neg&oacute;cio m&oacute;vel.<br><br><br><h5>[<a href="https://www.pelaestradafora.com/">Pela Estrada Fora</a>]</h5> Sun, 18 May 2025 09:00:00 +0000 Alexsandro Felix: Ubuntu: Corrigir Erro ‘Lista de Fontes’ Fácil https://blog.ffelix.eti.br/solucao-para-a-lista-de-fontes-nao-pode-ser-lida-no-ubuntu/ https://blog.ffelix.eti.br/solucao-para-a-lista-de-fontes-nao-pode-ser-lida-no-ubuntu/ <p>Se voc&ecirc; &eacute; um entusiasta do Linux e j&aacute; se deparou com o temido erro &ldquo;A lista de fontes n&atilde;o pode ser lida&rdquo; ao tentar atualizar o Ubuntu, sabe que &eacute; como tentar pedir um caf&eacute; numa m&aacute;quina quebrada: frustrante, mas n&atilde;o imposs&iacute;vel de consertar! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f605.png" alt="&#128517;"> Esse problema, comum entre usu&aacute;rios do Ubuntu, geralmente est&aacute; ligado a configura&ccedil;&otilde;es erradas nos reposit&oacute;rios de software ou permiss&otilde;es bagun&ccedil;adas. Neste artigo, vamos mergulhar de cabe&ccedil;a no problema, com explica&ccedil;&otilde;es did&aacute;ticas, exemplos de c&oacute;digo test&aacute;veis e um toque de humor para deixar sua jornada mais leve. Preparado para fazer seu Ubuntu cantar de novo? Vamos l&aacute;!</p> <h2>Por Que Esse Erro Acontece?</h2> <p>O erro ocorre quando o gerenciador de pacotes APT (Advanced Package Tool) do Ubuntu n&atilde;o consegue ler o arquivo de reposit&oacute;rios (/etc/apt/sources.list) ou os arquivos complementares em /etc/apt/sources.list.d/. As causas mais comuns s&atilde;o:</p> <ul><li><strong>Linhas mal formatadas</strong> nos arquivos de reposit&oacute;rios.</li> <li><strong>Permiss&otilde;es incorretas</strong> que impedem o acesso aos arquivos.</li> <li><strong>URLs de reposit&oacute;rios quebradas</strong> ou servidores fora do ar.</li> <li><strong>Cache corrompido do APT</strong>.</li> </ul><p>Nosso objetivo &eacute; consertar isso passo a passo, com comandos que voc&ecirc; pode copiar, colar e testar. E, claro, entender o que cada um faz!</p> <h2>Passo a Passo para Resolver o Erro</h2> <h3>Identifique o Problema com o Comando de Atualiza&ccedil;&atilde;o</h3> <p>Primeiro, vamos ver a mensagem de erro completa. Abra o terminal (atalho: Ctrl + Alt + T) e execute:</p> <pre><code>sudo apt update</code></pre> <p>A sa&iacute;da pode mostrar algo como:</p> <pre><code>E: N&atilde;o foi poss&iacute;vel ler o arquivo de lista de fontes /etc/apt/sources.list.d/algum_repositorio.list E: A lista de fontes n&atilde;o pode ser lida.</code></pre> <p>Anote o arquivo ou linha mencionada. Isso &eacute; a pista do crime! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f575-fe0f-200d-2642-fe0f.png" alt="&#128373;&#65039;&zwj;&#9794;&#65039;"></p> <h3>Inspecione o Arquivo sources.list</h3> <p>O arquivo principal de reposit&oacute;rios est&aacute; em /etc/apt/sources.list. Vamos abri-lo para verificar:</p> <pre><code>sudo nano /etc/apt/sources.list</code></pre> <p>No editor Nano, voc&ecirc; ver&aacute; linhas como:</p> <pre><code>deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse</code></pre> <h4>O que procurar?</h4> <ul><li><strong>Linhas estranhas</strong>: URLs quebradas ou reposit&oacute;rios de terceiros mal configurados.</li> <li><strong>Formato incorreto</strong>: Cada linha deve come&ccedil;ar com deb ou deb-src, seguida de uma URL v&aacute;lida, codinome da vers&atilde;o (ex.: jammy para Ubuntu 22.04) e componentes (ex.: main, universe).</li> </ul><p>Se encontrar algo errado, comente a linha adicionando # no in&iacute;cio ou corrija a URL. Por exemplo, se uma linha aponta para um reposit&oacute;rio inexistente:</p> <pre><code># Comentar linha problem&aacute;tica # deb http://repositorio-invalido.com/ubuntu jammy main</code></pre> <p>Salve com Ctrl + O, pressione Enter e saia com Ctrl + X.</p> <h3>Verifique Arquivos em sources.list.d</h3> <p>Reposit&oacute;rios de terceiros podem estar em /etc/apt/sources.list.d/. Liste os arquivos:</p> <pre><code>ls /etc/apt/sources.list.d/</code></pre> <p>Se houver arquivos suspeitos (ex.: repositorio_quebrado.list), abra-os:</p> <pre><code>sudo nano /etc/apt/sources.list.d/repositorio_quebrado.list</code></pre> <p>Corrija ou comente linhas problem&aacute;ticas. Se o reposit&oacute;rio n&atilde;o for essencial, mova o arquivo para um local seguro:</p> <pre><code>sudo mv /etc/apt/sources.list.d/repositorio_quebrado.list /tmp/</code></pre> <h3>Ajuste as Permiss&otilde;es</h3> <pre><code>sudo chmod 644 /etc/apt/sources.list sudo chmod -R 644 /etc/apt/sources.list.d/* sudo chown root:root /etc/apt/sources.list sudo chown -R root:root /etc/apt/sources.list.d/*</code></pre> <p>Esses comandos garantem que os arquivos tenham permiss&otilde;es de leitura para todos e sejam pertencentes ao usu&aacute;rio root.</p> <h3>Restaure o sources.list Padr&atilde;o (Se Necess&aacute;rio)</h3> <p>Se o sources.list estiver muito bagun&ccedil;ado, crie um novo. Fa&ccedil;a backup do atual:</p> <pre><code>sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak</code></pre> <p>Crie um novo arquivo:</p> <pre><code>sudo nano /etc/apt/sources.list</code></pre> <p>Adicione as linhas padr&atilde;o para sua vers&atilde;o do Ubuntu. Para o Ubuntu 22.04 (Jammy), use:</p> <pre><code>deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse</code></pre> <p>Para outras vers&otilde;es, substitua jammy pelo codinome correto (ex.: focal para 20.04). Salve e saia.</p> <h3>Limpe o Cache do APT</h3> <p>Um cache corrompido pode causar o erro. Limpe-o:</p> <pre><code>sudo apt clean sudo rm -rf /var/lib/apt/lists/*</code></pre> <p>Isso remove listas de pacotes antigas. Agora, atualize novamente:</p> <pre><code>sudo apt update</code></pre> <h3>Troque o Servidor de Reposit&oacute;rios</h3> <p>Se o erro persistir, o servidor pode estar fora do ar. Mude para outro servidor:</p> <ul><li>Abra o aplicativo &ldquo;Programas e Atualiza&ccedil;&otilde;es&rdquo; ou execute</li> </ul><pre><code>sudo software-properties-gtk</code></pre> <ul><li>Na aba &ldquo;Software Ubuntu&rdquo;, selecione outro servidor em &ldquo;Baixar de&rdquo; (ex.: &ldquo;Servidor Principal&rdquo;).</li> <li>Atualize com:</li> </ul><pre><code>sudo apt update</code></pre> <h3>Resolva Problemas de DNS</h3> <p>Se o APT n&atilde;o consegue acessar os reposit&oacute;rios, pode ser um problema de DNS. Teste um DNS p&uacute;blico:</p> <pre><code>sudo nano /etc/resolv.conf</code></pre> <p>Adicione:</p> <pre><code>nameserver 8.8.8.8 nameserver 8.8.4.4</code></pre> <p>Salve e tente:</p> <pre><code>sudo apt update</code></pre> <h2>Dica de Ouro: Domine o Linux com um Guia Pr&aacute;tico</h2> <figure><a href="https://amzn.to/4koYHr2"><img data-recalc-dims="1" loading="lazy" decoding="async" width="452" height="678" data-attachment-id="1090" data-permalink="https://blog.ffelix.eti.br/linux_guia_pratico/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Linux_guia_pratico.jpeg?fit=452%2C678&amp;ssl=1" data-orig-size="452,678" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="Linux_guia_pratico" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Linux_guia_pratico.jpeg?fit=200%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Linux_guia_pratico.jpeg?fit=452%2C678&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Linux_guia_pratico.jpeg?resize=452%2C678&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Linux_guia_pratico.jpeg?w=452&amp;ssl=1 452w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/Linux_guia_pratico.jpeg?resize=200%2C300&amp;ssl=1 200w" sizes="auto, (max-width: 452px) 100vw, 452px"></a></figure><p>Resolver erros como esse &eacute; s&oacute; o come&ccedil;o da sua jornada no Linux. Para dominar comandos essenciais e evitar dores de cabe&ccedil;a, recomendo o livro <a href="https://amzn.to/4koYHr2" target="_blank" rel="noopener" title="">Linux, Guia Pr&aacute;tico &ndash; Comandos Essenciais</a>. Ele &eacute; perfeito para quem quer entender o sistema de forma clara e direta, com exemplos pr&aacute;ticos que v&atilde;o te salvar em momentos como este. Garanta o seu e leve suas habilidades no Linux para o pr&oacute;ximo n&iacute;vel! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4da.png" alt="&#128218;"></p> <h2>Testando o Resultado</h2> <p>Depois de seguir os passos, seu sudo apt update deve rodar sem erros, mostrando algo como:</p> <pre><code>Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]F etched 119 kB in 1s (100 kB/s)Reading package lists... Done</code></pre> <p>Se ainda houver problemas, compartilhe a sa&iacute;da do comando nos coment&aacute;rios do blog. Vamos resolver juntos!</p> <h2>Conclus&atilde;o e Convite para A&ccedil;&atilde;o</h2> <p>Pronto! Voc&ecirc; acabou de transformar um erro chato em uma oportunidade de aprender mais sobre o Ubuntu. <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f60e.png" alt="&#128526;"> O Linux &eacute; assim: quanto mais voc&ecirc; mexe, mais descobre seus segredos. Quer continuar essa aventura? Confira outros artigos no blog, como &ldquo;Como Instalar Pacotes no Ubuntu&rdquo; ou &ldquo;Dicas para Otimizar seu Sistema Linux&rdquo;. Inscreva-se na nossa newsletter para receber dicas exclusivas e n&atilde;o perca nenhum conte&uacute;do! Deixe seu coment&aacute;rio abaixo: conseguiu resolver o erro? Qual foi sua maior dificuldade? Sua participa&ccedil;&atilde;o faz nosso blog crescer! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f680.png" alt="&#128640;"></p><p>The post <a href="https://blog.ffelix.eti.br/solucao-para-a-lista-de-fontes-nao-pode-ser-lida-no-ubuntu/">Ubuntu: Corrigir Erro &lsquo;Lista de Fontes&rsquo; F&aacute;cil</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Sat, 17 May 2025 23:41:35 +0000 Aberto até de Madrugada: Chrome corrige vulnerabilidade que deixava roubar dados https://abertoatedemadrugada.com/2025/05/chrome-corrige-vulnerabilidade-que.html https://abertoatedemadrugada.com/2025/05/chrome-corrige-vulnerabilidade-que.html <div><a href="https://abertoatedemadrugada.com/2025/05/chrome-corrige-vulnerabilidade-que.html"><img alt="" border="0" width="600" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLiJ3lUVgyyhyphenhyphenppLHpemGuK6-86SGAn_wUrBfwimv-DnJsozLTczDNHz2u3_6vxMMr2pwPuFNvR_RMN7ztflHaVQ-jLmUmNJ7OnCgfPK2GFTpYju8pPVwydMzmgv7xBXAAbaVrykTSDwX58I2tsslZOgToblXk2yvoD6yARhcK6Bcp4HWZKGDuooHrjeHl/s1600/chrome%20%282%29.jpg"></a></div> A Google lan&ccedil;ou uma actualiza&ccedil;&atilde;o urgente para corrigir uma falha grave no Chrome que podia permitir a hackers assumir o controlo de contas.<br><br><a name="more"></a> A vulnerabilidade, identificada como <a href="https://chromereleases.googleblog.com/2025/05/stable-channel-update-for-desktop_14.html">CVE-2025-4664</a>, afecta o componente Loader do Chrome e pode ser explorada para roubar dados sens&iacute;veis atrav&eacute;s de p&aacute;ginas web maliciosas.<br><br> J&aacute; existe um exploit p&uacute;blico para esta falha, o que levanta preocupa&ccedil;&otilde;es sobre poss&iacute;veis ataques reais. Embora a Google n&atilde;o confirme explora&ccedil;&otilde;es activas, o alerta deixa essa possibilidade em aberto. O problema foi descoberto pelo investigador Vsevolod Kokorin, que explicou como tokens OAuth e par&acirc;metros de consulta podem ser expostos atrav&eacute;s de pol&iacute;ticas de referrer inseguras.<br><br> A correc&ccedil;&atilde;o j&aacute; est&aacute; dispon&iacute;vel para utilizadores de Windows, Linux e macOS, com as vers&otilde;es 136.0.7103.113 e .114 a serem distribu&iacute;das progressivamente. Recomenda-se actualizar o Chrome manualmente ou reiniciar o navegador para garantir a instala&ccedil;&atilde;o autom&aacute;tica.<br><br> Esta &eacute; a segunda falha cr&iacute;tica corrigida no Chrome este ano, depois de um zero-day explorado em ataques de espionagem em Mar&ccedil;o. A Google mant&eacute;m o foco em refor&ccedil;ar a seguran&ccedil;a do navegador, especialmente com exploits a serem divulgados publicamente e ataques a surgir cada vez mais depressa.<br><br> Sat, 17 May 2025 20:00:00 +0000 Ricardo Saramago: Notebook Therapy https://www.odrakir.com/blog/2025/05/17/notebook-therapy/ https://www.odrakir.com/blog/2025/05/17/notebook-therapy/ <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20200714_134646.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="576" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20200714_134646.jpg?resize=1024%2C576&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20200714_134646.jpg?resize=1024%2C576&amp;ssl=1 1024w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20200714_134646.jpg?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20200714_134646.jpg?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20200714_134646.jpg?resize=1536%2C864&amp;ssl=1 1536w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20200714_134646.jpg?w=1630&amp;ssl=1 1630w" sizes="auto, (max-width: 1000px) 100vw, 1000px"></a></figure><p>This could easily be the name of a blog. Maybe it already is. But that&rsquo;s beside the point.</p> <p>I&rsquo;ve been trying to slow down for a long time &mdash; to break away from the chaos of daily life. To do that, I&rsquo;ve forced myself to journal.</p> <p>It helps me clear my mind, organize my life, align my thoughts, and &mdash; most importantly &mdash; nurture a creativity that&rsquo;s been running on empty.</p> <p>Now, this isn&rsquo;t some new revelation. I was a Moleskine user for decades. A loyalist. But over time, it started to feel&hellip; limiting. I wanted something more flexible. Something modular. A system I could shape around me, not the other way around.</p> <p>Because journaling, for me, isn&rsquo;t just writing. It&rsquo;s also collage. Sketching. Watercolor. Scratching out wild ideas and painting over them with new ones. It&rsquo;s experimentation. It&rsquo;s&hellip; me.</p> <p>Funny thing though &mdash; even though I love writing in notebooks, I feel oddly freer when I type in a computer. Maybe it&rsquo;s the impermanence of a blinking cursor versus the commitment of a fountain pen on paper. I scribble and scratch, sure &mdash; but the pressure is always there. Still, I digress.</p> <p>With Moleskine no longer doing it for me, I started searching. And wow &mdash; the stationery world is massive. So many brands, so many systems, so many rabbit holes to fall into.</p> <p>I made a list of what I needed:</p> <ul><li>Mix-and-match paper types and mediums</li> <li>Easy to replace components</li> <li>Stylish and/or elegant (yes, I&rsquo;m that kind of person)</li> <li>Strong brand and community support</li> <li>Bigger than A6</li> <li>Matching accessories (I hate mixing brands)</li> <li>Suitable for both personal and professional use</li> </ul><p>My first discovery was Paper Republic, a beautiful European brand. I got the Grand Voyageur XL &mdash; loved the leather, loved the refill options. It became my personal notebook for a while.</p> <p>But something was missing. The quality? Impeccable. The feel? Luxurious. But&hellip; no real community that I felt I could fit in. No shared excitement. And over time, I used it less and less for personal stuff, keeping it mainly for work.</p> <p>After looking for something else, I stumbled into Traveler&rsquo;s Notebook by Traveler&rsquo;s Company, Japan. My first reaction? Mixed. It looked familiar &mdash; kind of like my Grand Voyageur XL &mdash; but the dimensions felt odd. Not quite A5. Still, I kept digging.</p> <p>I discovered a whole ecosystem: themed refills, brass accessories, matching pens, vibrant communities, blogs, YouTube channels. Despite the initial language barrier, I was hooked.</p> <figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20240722_173623.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="917" height="917" data-id="2053" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20240722_173623.jpg?resize=917%2C917&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20240722_173623.jpg?w=917&amp;ssl=1 917w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20240722_173623.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20240722_173623.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20240722_173623.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 917px) 100vw, 917px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20241115_195529.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="907" height="907" data-id="2054" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20241115_195529.jpg?resize=907%2C907&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20241115_195529.jpg?w=907&amp;ssl=1 907w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20241115_195529.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20241115_195529.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20241115_195529.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 907px) 100vw, 907px"></a></figure></figure><p>So I took the plunge. Ordered a notebook and some accessories. And that was it. I got it. This was more than a notebook &mdash; it was a world. I ended up getting a second one just for sketching and painting. I use them both regularly as my main daily drivers.</p> <p>One day, I stumbled upon a <a href="https://arslan.io/2025/02/24/plotter-notebook-system/">blog post</a> by <a href="https://arslan.io/">Fatih Arslan</a> &mdash; a deep dive into a Japanese system called <a href="https://www.plotter-japan.com/">Plotter</a>, made by a sister company of Traveler&rsquo;s Company.</p> <p>Plotter is&hellip; different. It&rsquo;s sleek. Modular. Minimal. It&rsquo;s a ring binder system with a focus on projects. You can mix paper types, use only what you need, keep it lean and purposeful. It immediately resonated with how I think and work.</p> <p>There was one catch: Plotter products weren&rsquo;t available in Europe. But I had a lucky break &mdash; a friend went to Japan and I sent him on a mission.</p> <figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133403.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="917" height="917" data-id="2055" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133403.jpg?resize=917%2C917&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133403.jpg?w=917&amp;ssl=1 917w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133403.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133403.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133403.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 917px) 100vw, 917px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133856.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="917" height="917" data-id="2056" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133856.jpg?resize=917%2C917&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133856.jpg?w=917&amp;ssl=1 917w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133856.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133856.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_133856.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 917px) 100vw, 917px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141348.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="917" height="917" data-id="2058" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141348.jpg?resize=917%2C917&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141348.jpg?w=917&amp;ssl=1 917w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141348.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141348.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141348.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 917px) 100vw, 917px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141448.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="917" height="917" data-id="2057" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141448.jpg?resize=917%2C917&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141448.jpg?w=917&amp;ssl=1 917w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141448.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141448.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141448.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 917px) 100vw, 917px"></a></figure><figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141544.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="917" height="917" data-id="2059" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141544.jpg?resize=917%2C917&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141544.jpg?w=917&amp;ssl=1 917w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141544.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141544.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/20250417_141544.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="auto, (max-width: 917px) 100vw, 917px"></a></figure></figure><p>Here&rsquo;s what I got:</p> <ul><li>Pueblo 6-Ring Leather Binder (A5 Size) Black</li> <li>6mm Ruled Paper 80 sheets (A5 Size)</li> <li>Drawing Paper 30 sheets (A5 Size)</li> <li>5mm Dot Grid 80 sheets (A5 Size)</li> <li>Project Manager 6 Colors Assortment (A5 Size)</li> <li>Zipper Case (A5 Size)</li> <li>Leather Ring Supporter (A5 Size)</li> <li>Ruler Pad (A5 Size)</li> <li>Leather Pen Holder with Lifter (A5 Size)</li> <li>Band with Lifter (A5 Size)</li> </ul><p>This allowed me to setup my Plotter to manage personal projects: goal setting, notes, to-do lists, creative planning. It&rsquo;s become a second brain &mdash; structured, yet deeply personal.</p> <p>So where am I now?</p> <ul><li>Paper Republic: for work</li> <li>Traveler&rsquo;s Notebook: for journaling, sketching, painting</li> <li>Plotter: for managing personal projects and creativity</li> </ul><p>Is it overkill? Maybe. But honestly? I enjoy it. And that&rsquo;s what matters.</p> <p>If you&rsquo;re curious about Plotter, I highly recommend Fatih Arslan&rsquo;s blog post and the <a href="https://plotterusa.com/what-is-plotter-analog-method/">Plotter USA website</a> &mdash; they&rsquo;re great resources to understand the system better.</p> <p></p> Sat, 17 May 2025 18:03:00 +0000 Aberto até de Madrugada: SanDisk lança SSD WD Black SN8100 de 14.9 GB/s https://abertoatedemadrugada.com/2025/05/sandisk-lanca-ssd-wd-black-sn8100-de.html https://abertoatedemadrugada.com/2025/05/sandisk-lanca-ssd-wd-black-sn8100-de.html <div><a href="https://abertoatedemadrugada.com/2025/05/sandisk-lanca-ssd-wd-black-sn8100-de.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY3tfTnXzmgSg6FZqVgM9WcBLwoTFcuxEqeTYmPiWHzOfwQwyxgJTnC5KdwQGHsoJv8BxwCdf9g4ijwiTEqbTIyWYLzjt2Zx-QTUbjfQjIkF3H6aD-GTfUfnK8uTx4ru6Bps4ErZ5JYiZplzIlAW1BwvfE8z_AAlmgr40gx7zKoGP1GbwcL8NDRdbq35G_/s1600/SN8100.jpg" width="600"></a></div> A SanDisk revelou o seu novo SSD WD Black SN8100, apresentado como o NVMe PCIe Gen 5.0 mais r&aacute;pido do mundo com transfer&ecirc;ncias de quase 15GB/s.<br><br><a name="more"></a> Com velocidades de leitura at&eacute; 14.900MB/s e capacidades que chegam aos 8TB, este modelo &eacute; pensado para gamers, criadores de conte&uacute;do e aplica&ccedil;&otilde;es de intelig&ecirc;ncia artificial. Al&eacute;m da velocidade, a SanDisk garante que o SN8100 &eacute; 100% mais eficiente em termos de consumo energ&eacute;tico face &agrave; gera&ccedil;&atilde;o anterior. O SSD utiliza tecnologia BiCS8 TLC 3D NAND, que promete uma gest&atilde;o t&eacute;rmica superior e um design mais compacto.<br><br> Em termos t&eacute;cnicos, o SN8100 oferece at&eacute; 14.900MB/s de leitura e 14.000MB/s de escrita, com um desempenho aleat&oacute;rio de 2,3 milh&otilde;es de IOPS nos modelos de 2TB e 4TB. Os pre&ccedil;os come&ccedil;am nos 179,99 d&oacute;lares para a vers&atilde;o de 1TB, embora as especifica&ccedil;&otilde;es m&aacute;ximas sejam exclusivas das vers&otilde;es com mais capacidade. Est&aacute; ainda prevista uma vers&atilde;o com dissipador para o final do ano, assim como o modelo de 8TB.<br><br> &Eacute; tamb&eacute;m indicador que os SSDs PCIe 5.0 de 15 GB/s se come&ccedil;am a tornar mais comuns, e que n&atilde;o dever&aacute; demorar muito para que se tornem suficientemente acess&iacute;veis para todos os utilizadores.<br><br> Sat, 17 May 2025 17:30:00 +0000 Aberto até de Madrugada: Robot Lingxi X2 mostra as suas capacidades https://abertoatedemadrugada.com/2025/05/robot-lingxi-x2-mostra-as-suas.html https://abertoatedemadrugada.com/2025/05/robot-lingxi-x2-mostra-as-suas.html <div><a href="https://abertoatedemadrugada.com/2025/05/robot-lingxi-x2-mostra-as-suas.html"><img alt="" border="0" width="600" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheLA44gOTvdc2J97W5dmtGSahDnYOUWDBK6UAoFRZ5cQmfd-y0Vjop0f_UedwXGomUX7XaWgfv-sabybYThATeQib6iAf3cgNFuiFd1bTQeRxEeIdSXbxnksLekHBMJjwheVTLZe5WKOS7k270tmaz866fzCggYm_1GmPEOiQZN4GJjeoYyNKichXTc5Bu/s1600/lingx2.jpg"></a></div> O robot human&oacute;ide Lingxi X2 da AgiBot demonstrou ou seus mais recentes avan&ccedil;os.<br><br><a name="more"></a> Os robots human&oacute;ides t&ecirc;m sido uma das coisas que mais t&ecirc;m evolu&iacute;do nos &uacute;ltimos anos, tirando partido da tecnologia AI, e a AgiBot mostra-nos aquilo que o seu Lingxi X2 consegue fazer, incluindo coisas como equil&iacute;brio din&acirc;mico, rota&ccedil;&otilde;es r&aacute;pidas, recupera&ccedil;&atilde;o de quedas, e outros.<br><blockquote><p lang="en" dir="ltr">New video of AGIBOT&#039;s Lingxi X2 robot showcasing dynamic movements, fall recovery, quiet operation, and vision-based perception/planning. <a href="https://t.co/5D2FMCnb1u">https://t.co/5D2FMCnb1u</a> <a href="https://t.co/pbDiM2xKKF">pic.twitter.com/pbDiM2xKKF</a></p>&mdash; The Humanoid Hub (@TheHumanoidHub) <a href="https://twitter.com/TheHumanoidHub/status/1923259033160384676?ref_src=twsrc%5Etfw">May 16, 2025</a></blockquote> Nem ser&aacute; recomend&aacute;vel tentar arriscar no quanto isto ir&aacute; evoluir ainda mais ao longo dos pr&oacute;ximos 12 anos.<br><br> Sat, 17 May 2025 15:30:00 +0000 Aberto até de Madrugada: Serviço Max voltará a ser HBO Max https://abertoatedemadrugada.com/2025/05/servico-max-voltara-ser-hbo-max.html https://abertoatedemadrugada.com/2025/05/servico-max-voltara-ser-hbo-max.html <div><a href="https://abertoatedemadrugada.com/2025/05/servico-max-voltara-ser-hbo-max.html"><img alt="" border="0" data-original-height="800" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRZZj75EbtMpAD-2DzsX5_iNR2fV3PONEtp0qFyx03WgPBz5tgkdZWl304XguoWU-PfGrZm2OlErshZJoMLidzdjzWl2F5PJ855RljF9jhbZHjBqmc44CA_G-ig1kFLude8ERax69K9ZFAAl9WJZ5LhPXrKirRmasjvMwsx9-AjZgL0DeQTvmfdL1uckUL/s1600/max.jpg" width="600"></a></div> A Warner Bros. Discovery vai voltar a chamar o seu servi&ccedil;o de streaming "HBO Max", revertendo a decis&atilde;o de 2023 que o encurtou para apenas "Max".<br><br><a name="more"></a> A mudan&ccedil;a acontecer&aacute; este ver&atilde;o e pretende refor&ccedil;ar a identidade "&uacute;nica" da plataforma, apostando no peso da marca HBO. A altera&ccedil;&atilde;o para "Max" foi uma tentativa de alargar o p&uacute;blico-alvo, mas acabou por causar confus&atilde;o, j&aacute; que muitos associam o servi&ccedil;o ao conte&uacute;do premium da HBO. Com a concorr&ecirc;ncia a apertar, a empresa quer agora recentrar-se em conte&uacute;dos de qualidade para adultos e fam&iacute;lias.<br><br> Ainda n&atilde;o se sabe se o regresso do nome trar&aacute; de volta o antigo design da app. Em 2023, os utilizadores foram obrigados a descarregar uma aplica&ccedil;&atilde;o completamente nova, algo que gerou cr&iacute;ticas e frustra&ccedil;&atilde;o.<br><br> A pr&oacute;pria empresa brincou com a situa&ccedil;&atilde;o nas redes sociais, assumindo com humor esta mudan&ccedil;a de planos. No fundo, a Warner Bros. Discovery aposta no reconhecimento da marca HBO para se manter relevante no mercado do streaming.<br><br><br> Sat, 17 May 2025 13:30:00 +0000 Ricardo Saramago: Eversolo Play Streaming Amplifier https://www.odrakir.com/blog/2025/05/17/eversolo-play-streaming-amplifier/ https://www.odrakir.com/blog/2025/05/17/eversolo-play-streaming-amplifier/ <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-2.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="760" height="551" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-2.png?resize=760%2C551&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-2.png?w=760&amp;ssl=1 760w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/image-2.png?resize=300%2C218&amp;ssl=1 300w" sizes="auto, (max-width: 760px) 100vw, 760px"></a></figure><p>Just caught <a href="https://stereonet.com/reviews/eversolo-play-streaming-amplifier-first-look">this</a> on my radar today &mdash; and I&rsquo;m genuinely excited.</p> <p>I&rsquo;ve been eyeing a few Eversolo DACs and players for a while now, especially since I revamped my music setup (more on that in a future post), and now, the newly announced <a href="https://www.eversolo.com/Product/index/model/play/target/fxVC4T0PzE3eq7k9e%5Bld%5D3ulg%3D%3D.html#/">Eversolo Play Streaming Amplifier</a> looks like it checks all the boxes on my list of requirements.</p> <p>It even comes in two editions: one with a built-in CD player, and one without. Originally, CD support was just a &ldquo;nice-to-have&rdquo; for me&hellip; but now? It&rsquo;s officially a must-have. Although my main source of music is digital (local files and streaming), I still have hundreds of CDs. And no, I never joined the vinyl bandwagon. </p> <p>Now we wait for it to make its way across the pond to Europe. </p> <p>Can&rsquo;t wait to get my hands (and ears) on it.</p> <p></p> Sat, 17 May 2025 12:30:47 +0000 A Minha Alegre Casinha: Como fazer um controlador de fita LED WRGB com ESP32 http://aminhaalegrecasinha.com/2025/05/como-fazer-um-controlador-de-fita-led.html http://aminhaalegrecasinha.com/2025/05/como-fazer-um-controlador-de-fita-led.html <div><a href="http://aminhaalegrecasinha.com/2025/05/como-fazer-um-controlador-de-fita-led.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3P8zmOsp81SdEAf9umyQ3oMZ4qTbAkLTZ6-5zxBCW5FunOYS858-tBakRDACfU3ZozPUPK1cdkp1YCExFUD03a9DCBZtFXhLW5ghR27MJJuO2IsMwQ-fkH8mYPkMwCJAGgx1L6NoHKQd5eRQASpbENQXxCZiaHCtE7eDSLJpeFT_hQfq8a6IWU5nJUixo/s1600/LEDcontrolHA%20%282%29.jpg" width="600"></a></div> Com um ESP32 podemos fazer um vers&aacute;til controlador de fitas LED RGBW, com sensor de movimento, ilumina&ccedil;&atilde;o, e temperatura, inclu&iacute;dos - para integra&ccedil;&atilde;o no Home Assistant.<br><br><a name="more"></a> N&atilde;o h&aacute; falta de sistemas de ilumina&ccedil;&atilde;o que podem ser facilmente (ou n&atilde;o t&atilde;o facilmente) integrados no Home Assistant, mas quem desejar a maior versatilidade para um sistema que n&atilde;o fique dependente da boa vontade de um qualquer fabricante poder&aacute; preferir criar o seu pr&oacute;prio controlador por medida.<br><br> Como sempre, o <a href="https://www.instructables.com/All-in-one-RGBW-LEDs-Controller-With-Temperature-a/">c&eacute;rebro do sistema</a> recai sobre um ESP32, assistido por quatro m&oacute;dulos MOSFET para o controlo de pot&ecirc;ncia de cada um dos canais da fita LED (RGB + W).<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHZx-wIVhmL7zJo74NFkMnVz3Ndn4hsO_KSycHEMlq3qaagxN5UkQHIpIgwo8ZBiUag-EYT3cs-lDr-Hi_ZifZuymx3aJSRKyU54aSiSVV7UkV5XUMXmiXU4N8PfWmRJCMk3pW9VxhHJTC8R_KtzQNWDYUMp2S_JjxQtL27Ata92iFCPHHKEGVw6j1c0Cy/s1024/LEDcontrolHA%20%281%29.jpg"><img alt="" border="0" data-original-height="576" data-original-width="1024" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHZx-wIVhmL7zJo74NFkMnVz3Ndn4hsO_KSycHEMlq3qaagxN5UkQHIpIgwo8ZBiUag-EYT3cs-lDr-Hi_ZifZuymx3aJSRKyU54aSiSVV7UkV5XUMXmiXU4N8PfWmRJCMk3pW9VxhHJTC8R_KtzQNWDYUMp2S_JjxQtL27Ata92iFCPHHKEGVw6j1c0Cy/s600/LEDcontrolHA%20%281%29.jpg" width="600"></a></div> Sendo um sistema criado de raiz, temos tamb&eacute;m a liberdade de integrar sensores adicionais, como um sensor de movimento, ilumina&ccedil;&atilde;o e temperatura. Isto permite que se possa fazer controlo directamente no m&oacute;dulo, se desejado (como acender a fita quando h&aacute; movimento e estiver escuro), como tamb&eacute;m reportar essa informa&ccedil;&atilde;o para o Home Assistant, para que possa ser usado em combina&ccedil;&atilde;o com ac&ccedil;&otilde;es adicionais - como acender mais luzes, ou manter um registo hist&oacute;rico da temperatura. A parte do software tamb&eacute;m fica imensamente simplificada recorrendo-se ao popular <a href="https://esphome.io/">ESPHome</a>.<br><br><div></div> <br> Uma op&ccedil;&atilde;o a ter em conta, tanto para se poder criar um sistema por medida com funcionalidades que possam n&atilde;o existir em produtos comerciais, como para n&atilde;o se ficar dependente de um produto que possa deixar de existir daqui a um par de anos e deixar-nos encravados &agrave; procura de alternativas.<br><br> Sat, 17 May 2025 12:05:00 +0000 Ricardo Saramago: Enter the Server – Part Four (Yes, 10 Years Later!) https://www.odrakir.com/blog/2025/05/17/enter-the-server-part-four-yes-10-years-later/ https://www.odrakir.com/blog/2025/05/17/enter-the-server-part-four-yes-10-years-later/ <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2015/07/c03760124.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="474" height="356" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2015/07/c03760124.png?resize=474%2C356&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2015/07/c03760124.png?w=474&amp;ssl=1 474w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2015/07/c03760124.png?resize=300%2C225&amp;ssl=1 300w" sizes="auto, (max-width: 474px) 100vw, 474px"></a></figure><p>Here we are again &mdash; almost a full decade later &mdash; with part four of my home server saga!</p> <p>And yes, unbelievably, it&rsquo;s <em>still the same</em> server from <a href="https://www.odrakir.com/blog/2015/07/07/enter-the-server-part-three/">all those years ago</a>: the ever-reliable <strong>HP Microserver Gen8</strong>. Quiet, stable, and surprisingly capable after all this time. It hasn&rsquo;t been running ESXi Free for a while now, and many of the original services have been retired &mdash; either because I no longer needed them, or I found better alternatives.</p> <p>Currently, it&rsquo;s running <strong><a href="https://www.truenas.com/truenas-scale/">TrueNAS Scale</a> (Dragonfish-24.04.2.5)</strong> &mdash; and the transition was mostly smooth. The only hiccup? I had to wipe out my previous RAID setup. TrueNAS doesn&rsquo;t play well with hardware RAID, especially with the <strong>HP Smart Array P420 Controller</strong> I had added years ago. It has its own storage architecture that prefers direct disk access.</p> <h3>What&rsquo;s Still Running:</h3> <ul><li><strong>File Sharing</strong> &ndash; Native SMB shares from TrueNAS. Solid and reliable.</li> <li><strong>Backup</strong> &ndash; Using <strong><a href="https://www.bvckup2.com/">Bvckup 2 Pro</a></strong> on my PCs, targeting the Gen8 for storage.</li> <li><strong>Plex</strong> &ndash; Long gone. These days, streaming services like Netflix and Prime have taken over.</li> <li><strong>Download Management</strong> &ndash; Also retired.</li> <li><strong>SFTP Server</strong> &ndash; Used to share public files, but no longer needed.</li> <li><strong>VPN / Private Cloud</strong> &ndash; Replaced everything with <strong><a href="https://tailscale.com/">Tailscale</a></strong>, and it&rsquo;s been a game-changer. Seriously, one of the best additions I&rsquo;ve made. If you don&rsquo;t know Tailscale, it&rsquo;s a zero-config VPN that uses WireGuard under the hood and creates a private mesh network between your devices &mdash; wherever they are. I can now access the TrueNAS dashboard, SMB shares, or SSH into my server from literally anywhere (even my phone), with no firewall tweaks or weird NAT rules. It even supports MagicDNS and exit nodes if you want all your traffic to route securely through your home network. Well&hellip; now recalling I had to make a few tweaks, because I installed Taiscale in my EdgeRouter X&hellip; but I didn&rsquo;t had to, I just wanted to play with it a bit more, because, hacking.</li> </ul><p>The Gen8 is now handling a few extra duties that weren&rsquo;t part of the original plan:</p> <ul><li><strong>UniFi Network Controller</strong> &ndash; Running on a lightweight Ubuntu VM. TrueNAS&rsquo;s built-in virtualization makes this easy.</li> <li><strong>AdGuard Home</strong> &ndash; This one has become indispensable in a household with teens, smart TVs, tablets, and IoT clutter. I run <a href="https://adguard.com/en/adguard-home/overview.html">AdGuard Home</a> in a container on the Gen8. It acts as a local DNS sinkhole, filtering ads, trackers, and shady domains before they even reach your devices. It also gives me visibility into where traffic is going and what&rsquo;s being blocked. It has centralized content filtering (for devices that don&rsquo;t support ad blockers natively), you can set per-device rules (yes, you can &ldquo;accidentally&rdquo; block TikTok and other social media sites just for the kids). It has a minimal resource usage as it&rsquo;s very lightweight and the web interface is clean and simple to use. Total win.<br></li> </ul><h3>What&rsquo;s Next?</h3> <p>Unless the Gen8 suffers a critical hardware failure, I plan to keep it running. It&rsquo;s not the fastest thing in the world, but for what I need, it&rsquo;s perfectly fine. If something dies, I might go with a newer Mini PC build &mdash; compact, silent, low power, and capable of running Proxmox or even TrueNAS Scale with ease.</p> <p>Funny thing &mdash; I&rsquo;ve already replaced my personal laptop with a Mini PC (but that&rsquo;s a story for another post).</p> <p>For now, though?<br>Ol&rsquo; Faithful lives on.</p> Sat, 17 May 2025 11:08:57 +0000 Aberto até de Madrugada: GPT-4.1 chega ao ChatGPT https://abertoatedemadrugada.com/2025/05/gpt-41-chega-ao-chatgpt.html https://abertoatedemadrugada.com/2025/05/gpt-41-chega-ao-chatgpt.html <div><a href="https://abertoatedemadrugada.com/2025/05/gpt-41-chega-ao-chatgpt.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitPxp_SY4WohT-GKvUQmMTnCoJ9XSyQL6uvkWlZ-4LlNQ1vQeWrDFgUOlscjlrBMRbLdsCLLqfNE0YphVaynM0-rod45ysTStz775P8Wm0eyWnxdx4ztByIZPxYbKA5hKWuvDB47LuEXnM0xZKRXBlzDOyqyzSuRDKZz6QibOjyk5e5IeLM_dX5GGChgmA/s1600/GPT.jpg" width="600"></a></div> A OpenAI lan&ccedil;ou oficialmente o modelo GPT-4.1 no ChatGPT, ficando j&aacute; dispon&iacute;vel para subscritores dos planos Plus, Pro e Team.<br><br><a name="more"></a> Este novo modelo promete melhor desempenho em tarefas de programa&ccedil;&atilde;o e uma maior precis&atilde;o no seguimento de instru&ccedil;&otilde;es. Para os utilizadores gratuitos, a empresa <a href="https://x.com/OpenAI/status/1922707554745909391">substituiu o GPT-4o mini pelo GPT-4.1 mini</a> como modelo padr&atilde;o. Isto significa que todos ir&atilde;o beneficiar de melhorias na velocidade e capacidade de contexto. Quem usa a extens&atilde;o ChatGPT com a Apple Intelligence ver&aacute; tamb&eacute;m o GPT-4.1 mini como novo padr&atilde;o.<br><br> Um dos maiores destaques &eacute; a janela de contexto alargada - ambos os modelos GPT-4.1 conseguem lidar com at&eacute; um milh&atilde;o de tokens por vez, muito acima do limite de 128.000 tokens do GPT-4o - isto permite conversas mais longas e complexas sem perder o fio &agrave; meada.<br><br> A OpenAI garantiu que os utilizadores Enterprise e Education ter&atilde;o acesso ao GPT-4.1 nas pr&oacute;ximas semanas. Ambos os modelos passaram pelas habituais verifica&ccedil;&otilde;es de seguran&ccedil;a antes de serem disponibilizados ao p&uacute;blico.<br><br> Sat, 17 May 2025 11:00:00 +0000 Aberto até de Madrugada: Sony lança WH-1000XM6 https://abertoatedemadrugada.com/2025/05/sony-lanca-wh-1000xm6.html https://abertoatedemadrugada.com/2025/05/sony-lanca-wh-1000xm6.html <div><a href="https://abertoatedemadrugada.com/2025/05/sony-lanca-wh-1000xm6.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgosm_uO5ITjJxG6_69gnAboaoLh6QcPAdg88Zu8xHoqs7jG7Qj0skZGvP2H0ZXtmFHU8ruOMUZrHb2Bx3EelRvt5JMz8gmPNSZrwDerYQ9h9iETE2VWjvlxhfil9zoOkEn_fwpV-RQAZqUIel4n_wQTasE8BxU7SgqASBclMbHbI9DMfFt5J2sPHE9DurH/s1600/Sony%20WH-1000XM6%20%281%29.jpg" width="600"></a></div> A Sony apresentou oficialmente os WH-1000XM6, a nova gera&ccedil;&atilde;o dos seus auscultadores topo de gama com cancelamento de ru&iacute;do.<br><br><a name="more"></a> Este modelo recupera a dobradi&ccedil;a de gera&ccedil;&otilde;es anteriores para facilitar o transporte, melhora a qualidade de som e o ANC, mas continua sem resist&ecirc;ncia &agrave; &aacute;gua ou &aacute;udio via USB-C.<br><br> O destaque vai para o design dobr&aacute;vel, mais pr&aacute;tico e agora com uma estrutura refor&ccedil;ada. O novo chip QN3 e um sistema de 12 microfones melhoram o cancelamento de ru&iacute;do e o modo ambiente, enquanto os comandos por voz passaram a ser m&atilde;os-livres. Tamb&eacute;m foi adicionado suporte a Bluetooth 5.3 com Auracast, ideal para partilhar &aacute;udio em espa&ccedil;os p&uacute;blicos.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjauvTN3rwiGVsyAECXLTKuAuXZ2JwbHDh05mXFWDetCMHpcMDL2rHM-3sdhodhUtTQQ_qCIvXAI5LTddLPpRANKpk3KbOK-0o28kkufaE9jfNjMAtqslKWrRUvLCNKjnLmsO3MRNYALvzQb1uxx2V7QNHq53FENumWtDPc5zqQP-d3u2eo0B7AHjso-TJe/s1200/Sony%20WH-1000XM6%20%282%29.jpg"><img alt="" border="0" data-original-height="1200" data-original-width="1200" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjauvTN3rwiGVsyAECXLTKuAuXZ2JwbHDh05mXFWDetCMHpcMDL2rHM-3sdhodhUtTQQ_qCIvXAI5LTddLPpRANKpk3KbOK-0o28kkufaE9jfNjMAtqslKWrRUvLCNKjnLmsO3MRNYALvzQb1uxx2V7QNHq53FENumWtDPc5zqQP-d3u2eo0B7AHjso-TJe/w400-h400/Sony%20WH-1000XM6%20(2).jpg" width="400"></a></div> Os codecs mant&ecirc;m-se nos formatos SBC, AAC, LDAC e LC3, sem sinais de aptX ou Snapdragon Sound. A autonomia foi ligeiramente aumentada e as almofadas das orelhas s&atilde;o agora substitu&iacute;veis, mas continua a n&atilde;o haver reprodu&ccedil;&atilde;o de &aacute;udio via USB-C nem certifica&ccedil;&atilde;o IP - uma das coisas mais pedidas pelos clientes.<br><br> Apesar das limita&ccedil;&otilde;es, a Sony respondeu aos pedidos mais importantes dos utilizadores. Os WH-1000XM6 posicionam-se como uma alternativa forte aos concorrentes premium, como os AirPods Max, mantendo a Sony no topo do segmento ANC.<br><br> Sat, 17 May 2025 10:00:00 +0000 Aberto até de Madrugada: Carregamentos na rede Mobi.E crescem 48% em Abril https://abertoatedemadrugada.com/2025/05/carregamentos-na-rede-mobie-crescem-48.html https://abertoatedemadrugada.com/2025/05/carregamentos-na-rede-mobie-crescem-48.html <div><a href="https://abertoatedemadrugada.com/2025/05/carregamentos-na-rede-mobie-crescem-48.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq-ok7LSKsdoQA5iPnb8YQXsoyx-ef1MPjNRMSbupqOSJOg6crS8sXZnjl2OVpv55pOhL3fLR4DFxcGUD52P5m60qzfZwbysNP4mRhBoqjVhQ64WHQ7jb_ZXlperm1NY6pn5ZHp1RKHZNnQaMukH2MWTReo_trkSr6je6Fxul9x_Lu-iRJ_pSnxSRFOwz9/s1600/mobieE.jpg" width="600"></a></div> A prefer&ecirc;ncia pelos carros el&eacute;ctricos continua a fazer-se sentir no aumento dos carregadores p&uacute;blicos da rede Mobi.E.<br><br><a name="more"></a> A rede Mobi.E registou, em abril, cerca de 665 mil carregamentos, o que representa um aumento de 48% face ao mesmo m&ecirc;s do ano passado, que foram efetuados por mais de 115.500 utilizadores distintos, n&uacute;mero nunca antes atingido num &uacute;nico m&ecirc;s e uma subida de 52% em compara&ccedil;&atilde;o com o per&iacute;odo hom&oacute;logo. Quanto &agrave; energia consumida, foi de cerca de 14,7 GWh, mais 63% em rela&ccedil;&atilde;o a abril de 2024.<br><br> Em m&eacute;dia, foram efetuados 22.176 carregamentos por dia, a m&eacute;dia mais alta de sempre, que representa um aumento face ao m&ecirc;s de mar&ccedil;o, quando foi registada uma m&eacute;dia de 21.602 carregamentos.<br><br> Nos primeiros quatro meses do ano, o n&uacute;mero de carregamentos j&aacute; ultrapassou os 2,5 milh&otilde;es, um aumento de 48% em compara&ccedil;&atilde;o com o mesmo per&iacute;odo de 2024. Estes carregamentos foram efetuados por cerca de 200 mil utilizadores distintos, mais 52% do que nos primeiros quatro meses do ano passado.<br><br> A infraestrutura tem acompanhado o crescimento da procura. No final de abril, a rede de carregamento p&uacute;blica disponibilizava 6.193 postos, o que corresponde a 11.517 pontos (tomadas que podem estar a carregar em simult&acirc;neo). Destes, mais de 2.360 eram de carregamento r&aacute;pido ou ultrarr&aacute;pido (com pot&ecirc;ncia superior a 22 kW), representando 38,1% do total da rede.<br><br> Outro dado importante &eacute; o facto de, a 30 de abril, a rede Mobi.E disponibilizar mais de 382.922 kW de pot&ecirc;ncia, ultrapassando o exigido pelo regulamento europeu para a cria&ccedil;&atilde;o de uma infraestrutura para combust&iacute;veis alternativos (AFIR), que determina que deve existir uma pot&ecirc;ncia de 1,3 kW por cada ve&iacute;culo 100% el&eacute;trico e 0,8 kW por cada ve&iacute;culo h&iacute;brido plug in.<br><br> Em termos de poupan&ccedil;a ambiental, no quarto m&ecirc;s de 2025, a utiliza&ccedil;&atilde;o da rede Mobi.E evitou que fossem emitidas para a atmosfera mais de 11.800 toneladas de di&oacute;xido de carbono. Seriam necess&aacute;rias cerca de 195 mil &aacute;rvores, em ambiente urbano, com 10 anos, para reter o mesmo CO2.<br><br> Em m&eacute;dia, existem atualmente 94 tomadas por 100 quil&oacute;metros de estrada e 127 tomadas por 100 mil habitantes.<br><br><h5>[<a href="https://www.pelaestradafora.com/">Pela Estrada Fora</a>]</h5> Sat, 17 May 2025 09:00:00 +0000 Alexsandro Felix: Aprenda a Criar Funções no Python com Exemplos Práticos https://blog.ffelix.eti.br/aprenda-a-criar-funcoes-no-python-com-exemplos-praticos/ https://blog.ffelix.eti.br/aprenda-a-criar-funcoes-no-python-com-exemplos-praticos/ <p>Se voc&ecirc; est&aacute; come&ccedil;ando a programar em Python, provavelmente j&aacute; se deparou com a necessidade de organizar seu c&oacute;digo para evitar aquela bagun&ccedil;a de linhas repetitivas. &Eacute; aqui que as fun&ccedil;&otilde;es entram em cena, como super-hero&iacute;nas do seu script! Neste artigo, vamos explorar o que s&atilde;o fun&ccedil;&otilde;es, sua sintaxe, como usar par&acirc;metros e valores de retorno, e por que elas s&atilde;o essenciais para manter seu c&oacute;digo limpo e eficiente. Tudo isso com exemplos pr&aacute;ticos que voc&ecirc; pode testar agora mesmo! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f604.png" alt="&#128516;"></p> <p>Pronto para dar um salto no seu aprendizado de Python? Vamos mergulhar de cabe&ccedil;a!</p> <h2>O que s&atilde;o Fun&ccedil;&otilde;es em Python?</h2> <p>Fun&ccedil;&otilde;es s&atilde;o como receitas de bolo: um conjunto de instru&ccedil;&otilde;es que voc&ecirc; pode chamar sempre que precisar, sem precisar reescrever tudo. Elas permitem que voc&ecirc; modularize seu c&oacute;digo, ou seja, divida-o em peda&ccedil;os reutiliz&aacute;veis, facilitando a manuten&ccedil;&atilde;o e a leitura.</p> <p>Em Python, uma fun&ccedil;&atilde;o &eacute; definida com a palavra-chave <code>def</code>, seguida pelo nome da fun&ccedil;&atilde;o e, opcionalmente, par&acirc;metros. Quando voc&ecirc; chama a fun&ccedil;&atilde;o, ela executa o bloco de c&oacute;digo associado. Simples, n&eacute;? Mas poderoso!</p> <h2>Sintaxe B&aacute;sica de uma Fun&ccedil;&atilde;o</h2> <p>A sintaxe de uma fun&ccedil;&atilde;o em Python &eacute; assim:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="def nome_da_funcao(parametro1, parametro2): # Bloco de c&oacute;digo return resultado" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>def</span><span> </span><span>nome_da_funcao</span><span>(</span><span>parametro1</span><span>,</span><span> </span><span>parametro2</span><span>):</span></span> <span><span> </span><span># Bloco de c&oacute;digo</span></span> <span><span> </span><span>return</span><span> resultado</span></span></code></pre></div> <ul><li><code>def</code>: Indica que voc&ecirc; est&aacute; definindo uma fun&ccedil;&atilde;o.</li> <li><code>nome_da_funcao</code>: Escolha um nome descritivo (use letras min&uacute;sculas e _ para separar palavras, como calcular_media).</li> <li><code>parametro1, parametro2</code>: Vari&aacute;veis que a fun&ccedil;&atilde;o recebe (opcional).</li> <li><code>return</code>: Devolve um resultado (tamb&eacute;m opcional).</li> </ul><p>Vamos ver um exemplo pr&aacute;tico:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;def saudar_usuario(nome): mensagem = f"Ol&aacute;, {nome}! Bem-vindo ao mundo Python!" return mensagem # Chamando a fun&ccedil;&atilde;o print(saudar_usuario("Jo&atilde;o")) # Sa&iacute;da: Ol&aacute;, Jo&atilde;o! Bem-vindo ao mundo Python!&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>def</span><span> </span><span>saudar_usuario</span><span>(</span><span>nome</span><span>):</span></span> <span><span> mensagem </span><span>=</span><span> </span><span>f</span><span>"Ol&aacute;, </span><span>{</span><span>nome</span><span>}</span><span>! Bem-vindo ao mundo Python!"</span></span> <span><span> </span><span>return</span><span> mensagem</span></span> <span></span> <span><span># Chamando a fun&ccedil;&atilde;o</span></span> <span><span>print</span><span>(</span><span>saudar_usuario</span><span>(</span><span>"</span><span>Jo&atilde;o</span><span>"</span><span>))</span><span> </span><span># Sa&iacute;da: Ol&aacute;, Jo&atilde;o! Bem-vindo ao mundo Python!</span></span></code></pre></div> <p><strong>Teste voc&ecirc; mesmo</strong>: Copie esse c&oacute;digo, mude o nome para o seu e execute. Viu como &eacute; f&aacute;cil? <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f60e.png" alt="&#128526;"></p> <figure><a href="https://amzn.to/4ds98YM"><img data-recalc-dims="1" loading="lazy" decoding="async" width="471" height="651" data-attachment-id="1082" data-permalink="https://blog.ffelix.eti.br/pense_em_python/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/pense_em_python.jpeg?fit=471%2C651&amp;ssl=1" data-orig-size="471,651" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="pense_em_python" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/pense_em_python.jpeg?fit=217%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/pense_em_python.jpeg?fit=471%2C651&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/pense_em_python.jpeg?resize=471%2C651&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/pense_em_python.jpeg?w=471&amp;ssl=1 471w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/pense_em_python.jpeg?resize=217%2C300&amp;ssl=1 217w" sizes="auto, (max-width: 471px) 100vw, 471px"></a></figure><h2>Par&acirc;metros: Dando Vida &agrave;s Fun&ccedil;&otilde;es</h2> <p>Par&acirc;metros permitem que suas fun&ccedil;&otilde;es sejam flex&iacute;veis. Eles s&atilde;o como os ingredientes da sua receita: voc&ecirc; pode mudar a quantidade ou o tipo para obter resultados diferentes. Existem alguns tipos de par&acirc;metros em Python:</p> <ul><li><strong>Par&acirc;metros obrigat&oacute;rios</strong>: Devem ser passados na chamada da fun&ccedil;&atilde;o.</li> <li><strong>Par&acirc;metros opcionais</strong>: T&ecirc;m valores padr&atilde;o e n&atilde;o precisam ser informados.</li> </ul><p>Exemplo com par&acirc;metros obrigat&oacute;rios e opcionais:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;def calcular_preco(produto, desconto=0): preco = 100 # Pre&ccedil;o base fict&iacute;cio preco_final = preco - (preco * desconto / 100) return f"O pre&ccedil;o de {produto} com {desconto}% de desconto &eacute; R${preco_final:.2f}" # Testando print(calcular_preco("Camiseta")) # Sa&iacute;da: O pre&ccedil;o de Camiseta com 0% de desconto &eacute; R$100.00 print(calcular_preco("T&ecirc;nis", 20)) # Sa&iacute;da: O pre&ccedil;o de T&ecirc;nis com 20% de desconto &eacute; R$80.00&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>def</span><span> </span><span>calcular_preco</span><span>(</span><span>produto</span><span>,</span><span> </span><span>desconto</span><span>=</span><span>0</span><span>):</span></span> <span><span> preco </span><span>=</span><span> </span><span>100</span><span> </span><span># Pre&ccedil;o base fict&iacute;cio</span></span> <span><span> preco_final </span><span>=</span><span> preco </span><span>-</span><span> </span><span>(</span><span>preco </span><span>*</span><span> desconto </span><span>/</span><span> </span><span>100</span><span>)</span></span> <span><span> </span><span>return</span><span> </span><span>f</span><span>"O pre&ccedil;o de </span><span>{</span><span>produto</span><span>}</span><span> com </span><span>{</span><span>desconto</span><span>}</span><span>% de desconto &eacute; R$</span><span>{</span><span>preco_final</span><span>:.2f</span><span>}</span><span>"</span></span> <span></span> <span><span># Testando</span></span> <span><span>print</span><span>(</span><span>calcular_preco</span><span>(</span><span>"</span><span>Camiseta</span><span>"</span><span>))</span><span> </span><span># Sa&iacute;da: O pre&ccedil;o de Camiseta com 0% de desconto &eacute; R$100.00</span></span> <span><span>print</span><span>(</span><span>calcular_preco</span><span>(</span><span>"</span><span>T&ecirc;nis</span><span>"</span><span>,</span><span> </span><span>20</span><span>))</span><span> </span><span># Sa&iacute;da: O pre&ccedil;o de T&ecirc;nis com 20% de desconto &eacute; R$80.00</span></span></code></pre></div> <p><strong>Dica pr&aacute;tica</strong>: Experimente mudar o valor do desconto ou at&eacute; adicionar um par&acirc;metro extra, como um imposto. Isso vai te ajudar a entender como os par&acirc;metros funcionam na pr&aacute;tica!</p> <p>Quer acelerar seu aprendizado? O e-book Python de A-Z: Guia de Primeiros Passos com a Linguagem &eacute; perfeito para iniciantes que querem dominar conceitos como fun&ccedil;&otilde;es de forma pr&aacute;tica e divertida. <a href="https://go.hotmart.com/F13340196Y" title="">Confira aqui e comece hoje mesmo</a>!</p> <h2>Valores de Retorno: O que a Fun&ccedil;&atilde;o &ldquo;Entrega&rdquo;?</h2> <p>O <code>return</code> &eacute; como o gar&ccedil;om que traz o prato pronto da cozinha. Ele devolve o resultado da fun&ccedil;&atilde;o para quem a chamou. Sem o <code>return</code>, a fun&ccedil;&atilde;o pode executar a&ccedil;&otilde;es, mas n&atilde;o entrega um valor espec&iacute;fico.</p> <p>Exemplo com m&uacute;ltiplos retornos:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;def calcular_estatisticas(numeros): soma = sum(numeros) media = soma / len(numeros) return soma, media # Retorna dois valores # Testando lista = [10, 20, 30, 40] soma, media = calcular_estatisticas(lista) print(f"Soma: {soma}, M&eacute;dia: {media}") # Sa&iacute;da: Soma: 100, M&eacute;dia: 25.0&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>def</span><span> </span><span>calcular_estatisticas</span><span>(</span><span>numeros</span><span>):</span></span> <span><span> soma </span><span>=</span><span> </span><span>sum</span><span>(</span><span>numeros</span><span>)</span></span> <span><span> media </span><span>=</span><span> soma </span><span>/</span><span> </span><span>len</span><span>(</span><span>numeros</span><span>)</span></span> <span><span> </span><span>return</span><span> soma</span><span>,</span><span> media </span><span># Retorna dois valores</span></span> <span></span> <span><span># Testando</span></span> <span><span>lista </span><span>=</span><span> </span><span>[</span><span>10</span><span>,</span><span> </span><span>20</span><span>,</span><span> </span><span>30</span><span>,</span><span> </span><span>40</span><span>]</span></span> <span><span>soma</span><span>,</span><span> media </span><span>=</span><span> </span><span>calcular_estatisticas</span><span>(</span><span>lista</span><span>)</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Soma: </span><span>{</span><span>soma</span><span>}</span><span>, M&eacute;dia: </span><span>{</span><span>media</span><span>}</span><span>"</span><span>)</span><span> </span><span># Sa&iacute;da: Soma: 100, M&eacute;dia: 25.0</span></span></code></pre></div> <p><strong>Teste voc&ecirc; mesmo</strong>: Crie uma lista com outros n&uacute;meros e passe para a fun&ccedil;&atilde;o. Tente adicionar mais c&aacute;lculos, como o maior valor <code>(max(numeros))</code>. Isso vai refor&ccedil;ar seu entendimento!</p> <h2>Por que Fun&ccedil;&otilde;es s&atilde;o T&atilde;o Importantes?</h2> <p>Imagine escrever um c&oacute;digo com 500 linhas, onde voc&ecirc; repete o mesmo c&aacute;lculo de m&eacute;dia 10 vezes. Se precisar mudar algo, vai ter que editar cada trecho. <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f62b.png" alt="&#128555;"> Com fun&ccedil;&otilde;es, voc&ecirc; escreve o c&aacute;lculo uma vez e o reutiliza quantas vezes quiser. Benef&iacute;cios das fun&ccedil;&otilde;es incluem:</p> <ul><li><strong>Reutiliza&ccedil;&atilde;o</strong>: Evita repetir c&oacute;digo (o famoso DRY &ndash; Don&rsquo;t Repeat Yourself).</li> <li><strong>Organiza&ccedil;&atilde;o</strong>: Divide o c&oacute;digo em blocos l&oacute;gicos, tornando-o mais f&aacute;cil de entender.</li> <li><strong>Manuten&ccedil;&atilde;o</strong>: Altera&ccedil;&otilde;es em uma fun&ccedil;&atilde;o afetam todas as chamadas, economizando tempo.</li> <li><strong>Legibilidade</strong>: Nomes descritivos de fun&ccedil;&otilde;es tornam o c&oacute;digo quase auto explicativo.</li> </ul><p>Exemplo pr&aacute;tico de organiza&ccedil;&atilde;o:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;def calcular_imc(peso, altura): imc = peso / (altura ** 2) if imc &lt; 18.5: return f"Seu IMC &eacute; {imc:.2f}: Abaixo do peso" elif 18.5 &lt;= imc &lt; 25: return f"Seu IMC &eacute; {imc:.2f}: Peso normal" else: return f"Seu IMC &eacute; {imc:.2f}: Sobrepeso" # Testando print(calcular_imc(70, 1.75)) # Sa&iacute;da: Seu IMC &eacute; 22.86: Peso normal&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>def</span><span> </span><span>calcular_imc</span><span>(</span><span>peso</span><span>,</span><span> </span><span>altura</span><span>):</span></span> <span><span> imc </span><span>=</span><span> peso </span><span>/</span><span> </span><span>(</span><span>altura </span><span>**</span><span> </span><span>2</span><span>)</span></span> <span><span> </span><span>if</span><span> imc </span><span>&lt;</span><span> </span><span>18.5</span><span>:</span></span> <span><span> </span><span>return</span><span> </span><span>f</span><span>"Seu IMC &eacute; </span><span>{</span><span>imc</span><span>:.2f</span><span>}</span><span>: Abaixo do peso"</span></span> <span><span> </span><span>elif</span><span> </span><span>18.5</span><span> </span><span>&lt;=</span><span> imc </span><span>&lt;</span><span> </span><span>25</span><span>:</span></span> <span><span> </span><span>return</span><span> </span><span>f</span><span>"Seu IMC &eacute; </span><span>{</span><span>imc</span><span>:.2f</span><span>}</span><span>: Peso normal"</span></span> <span><span> </span><span>else</span><span>:</span></span> <span><span> </span><span>return</span><span> </span><span>f</span><span>"Seu IMC &eacute; </span><span>{</span><span>imc</span><span>:.2f</span><span>}</span><span>: Sobrepeso"</span></span> <span></span> <span><span># Testando</span></span> <span><span>print</span><span>(</span><span>calcular_imc</span><span>(</span><span>70</span><span>,</span><span> </span><span>1.75</span><span>))</span><span> </span><span># Sa&iacute;da: Seu IMC &eacute; 22.86: Peso normal</span></span></code></pre></div> <p><strong>Desafio</strong>: Modifique a fun&ccedil;&atilde;o para incluir mais categorias de IMC, como &ldquo;Obesidade&rdquo;. Execute e veja o resultado!</p> <p>Pronto para dar um passo al&eacute;m? Se voc&ecirc; quer usar Python para an&aacute;lise de dados, o curso Forma&ccedil;&atilde;o em An&aacute;lise de Dados com Python ensina desde fun&ccedil;&otilde;es at&eacute; visualiza&ccedil;&otilde;es incr&iacute;veis. <a href="https://go.hotmart.com/C99673846R" target="_blank" rel="noopener nofollow" title="">Clique aqui e transforme seus projetos!</a></p> <h2>Dicas para Criar Fun&ccedil;&otilde;es Eficientes</h2> <ul><li><strong>Nomes descritivos</strong>: Use nomes como <code>calcular_media</code> em vez de <code>cm</code>.</li> <li><strong>Coment&aacute;rios</strong>: Explique o que a fun&ccedil;&atilde;o faz, especialmente se for complexa.</li> <li><strong>Evite fun&ccedil;&otilde;es longas</strong>: Se uma fun&ccedil;&atilde;o tem mais de 20 linhas, considere dividi-la.</li> <li><strong>Teste sempre</strong>: Antes de usar uma fun&ccedil;&atilde;o em um projeto maior, teste-a com diferentes entradas.</li> </ul><h2>Conclus&atilde;o: Fun&ccedil;&otilde;es s&atilde;o suas Melhores Amigas!</h2> <p>Fun&ccedil;&otilde;es em Python s&atilde;o como atalhos que tornam seu c&oacute;digo mais organizado, reutiliz&aacute;vel e f&aacute;cil de manter. Com elas, voc&ecirc; pode transformar um emaranhado de linhas em um script elegante e funcional. Agora que voc&ecirc; aprendeu a criar fun&ccedil;&otilde;es, que tal coloc&aacute;-las em pr&aacute;tica em seus projetos?</p> <p>Gostou deste artigo? Deixe um coment&aacute;rio contando como voc&ecirc; usa fun&ccedil;&otilde;es no seu c&oacute;digo ou qual exemplo achou mais legal! N&atilde;o esque&ccedil;a de explorar outros artigos no blog para continuar sua jornada em Python e inscreva-se na nossa newsletter para receber dicas exclusivas diretamente no seu e-mail. <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f680.png" alt="&#128640;"></p><p>The post <a href="https://blog.ffelix.eti.br/aprenda-a-criar-funcoes-no-python-com-exemplos-praticos/">Aprenda a Criar Fun&ccedil;&otilde;es no Python com Exemplos Pr&aacute;ticos</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Sat, 17 May 2025 06:36:18 +0000 Alexsandro Felix: Dicas de Leitura: ‘Um Estudo em Vermelho’ para Fãs de Mistério https://blog.ffelix.eti.br/dicas-de-leitura-um-estudo-em-vermelho-para-fas-de-misterio/ https://blog.ffelix.eti.br/dicas-de-leitura-um-estudo-em-vermelho-para-fas-de-misterio/ <figure><a href="https://amzn.to/4k04X91"><img data-recalc-dims="1" loading="lazy" decoding="async" width="554" height="554" data-attachment-id="1075" data-permalink="https://blog.ffelix.eti.br/um_estudo_em_vermelho/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/um_estudo_em_vermelho.jpeg?fit=554%2C554&amp;ssl=1" data-orig-size="554,554" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="um_estudo_em_vermelho" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/um_estudo_em_vermelho.jpeg?fit=300%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/um_estudo_em_vermelho.jpeg?fit=554%2C554&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/um_estudo_em_vermelho.jpeg?resize=554%2C554&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/um_estudo_em_vermelho.jpeg?w=554&amp;ssl=1 554w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/um_estudo_em_vermelho.jpeg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/um_estudo_em_vermelho.jpeg?resize=150%2C150&amp;ssl=1 150w" sizes="auto, (max-width: 554px) 100vw, 554px"></a></figure><p>Bem-vindos a uma nova tradi&ccedil;&atilde;o no blog! A partir de agora, toda sexta-feira ser&aacute; dedicada a uma dica de leitura para descontrair, fugir um pouco do c&oacute;digo e mergulhar em hist&oacute;rias incr&iacute;veis. E para come&ccedil;ar com o p&eacute; direito, vamos falar de um cl&aacute;ssico da literatura: <em>Um Estudo em Vermelho</em>, de Arthur Conan Doyle. Prepare-se para conhecer o in&iacute;cio da lend&aacute;ria dupla Sherlock Holmes e Dr. Watson, com um review e resumo sem spoilers, perfeito para quem quer se aventurar nesse romance policial.</p> <h2>Por que uma pausa para leitura?</h2> <p>Aqui no blog, amamos Python, tecnologia e programa&ccedil;&atilde;o. Mas tamb&eacute;m sabemos que uma boa hist&oacute;ria pode recarregar as energias e inspirar novas ideias. Por isso, decidimos trazer, toda sexta, sugest&otilde;es de livros que n&atilde;o t&ecirc;m nada a ver com c&oacute;digo, mas que v&atilde;o enriquecer seu repert&oacute;rio cultural e te ajudar a relaxar. E para estrear essa s&eacute;rie, nada melhor que o primeiro caso de Sherlock Holmes!</p> <h2>Um Estudo em Vermelho: Sobre o que &eacute; o livro?</h2> <p>Publicado em 1887, <em>Um Estudo em Vermelho</em> &eacute; o romance que apresentou ao mundo o detetive Sherlock Holmes e seu fiel companheiro, Dr. John Watson. Escrito por Arthur Conan Doyle, o livro &eacute; um marco da literatura policial e combina suspense, l&oacute;gica afiada e uma narrativa envolvente. A hist&oacute;ria come&ccedil;a com Watson, um m&eacute;dico militar rec&eacute;m-chegado a Londres, buscando um lugar para morar. Por acaso, ele conhece Holmes, um exc&ecirc;ntrico &ldquo;consultor detetive&rdquo; com m&eacute;todos peculiares. Juntos, eles s&atilde;o arrastados para investigar um crime misterioso que desafia a pol&iacute;cia.</p> <p>O livro &eacute; dividido em duas partes: a primeira foca na investiga&ccedil;&atilde;o em Londres, enquanto a segunda explora o passado dos personagens envolvidos no caso. Sem dar spoilers, posso garantir que a trama &eacute; cheia de reviravoltas e mostra o brilhantismo de Holmes em a&ccedil;&atilde;o, com suas dedu&ccedil;&otilde;es impressionantes.</p> <h2>Por que ler Um Estudo em Vermelho?</h2> <ul><li><strong>Introdu&ccedil;&atilde;o a Sherlock Holmes</strong>: Se voc&ecirc; nunca leu nada sobre o detetive mais famoso da literatura, este &eacute; o ponto de partida ideal. Aqui, voc&ecirc; conhece a ess&ecirc;ncia de Holmes &ndash; sua mente anal&iacute;tica, sua excentricidade e at&eacute; suas manias.</li> <li><strong>Narrativa envolvente</strong>: A escrita de Conan Doyle &eacute; acess&iacute;vel e cativante, perfeita tanto para leitores experientes quanto para quem est&aacute; come&ccedil;ando.</li> <li><strong>Mist&eacute;rio bem constru&iacute;do</strong>: O caso central &eacute; intrigante e mant&eacute;m voc&ecirc; grudado nas p&aacute;ginas, tentando desvendar o enigma junto com Holmes.</li> <li><strong>Hist&oacute;ria curta e fluida</strong>: A edi&ccedil;&atilde;o que tenho em m&atilde;os tem apenas 190 p&aacute;ginas, &eacute; uma leitura r&aacute;pida, ideal para uma pausa no fim de semana.</li> </ul><p>Al&eacute;m disso, o livro &eacute; uma &oacute;tima pedida para quem gosta de hist&oacute;rias que misturam l&oacute;gica e emo&ccedil;&atilde;o, algo que, de certa forma, ressoa com o pensamento estruturado de um programador!</p> <h2>Para quem &eacute; esse livro?</h2> <p><em>Um Estudo em Vermelho</em> &eacute; perfeito para:</p> <ul><li>F&atilde;s de suspense e hist&oacute;rias policiais.</li> <li>Leitores que querem conhecer Sherlock Holmes pela primeira vez.</li> <li>Quem busca uma leitura leve, mas inteligente, para relaxar.</li> <li>Amantes de cl&aacute;ssicos que marcaram a literatura</li> </ul><p>Se voc&ecirc; curte s&eacute;ries como Sherlock (da BBC) ou filmes sobre detetives, esse livro vai te conquistar.</p> <h2>Onde comprar Um Estudo em Vermelho?</h2> <p>Se voc&ecirc; ficou curioso para mergulhar nessa aventura, recomendo adquirir Um <em>Estudo em Vermelho</em> pela Amazon. Clique aqui para comprar: <a href="https://amzn.to/4j86RTE" target="_blank" rel="noopener" title="">Comprar Um Estudo em Vermelho na Amazon</a>. Escolha entre edi&ccedil;&otilde;es f&iacute;sicas, e-books ou at&eacute; audiobooks, dependendo do seu estilo de leitura.</p> <h2>Dicas para aproveitar a leitura:</h2> <ul><li><strong>Crie um clima</strong>: Leia em um ambiente tranquilo, talvez com uma x&iacute;cara de ch&aacute; ou caf&eacute;, para entrar no clima vitoriano de Londres.</li> <li><strong>Preste aten&ccedil;&atilde;o aos detalhes</strong>: Holmes &eacute; mestre em observar o que ningu&eacute;m v&ecirc;. Tente captar as pistas que Conan Doyle deixa na narrativa.</li> <li><strong>Continue a jornada</strong>: Se gostar do livro, saiba que ele &eacute; o primeiro de uma s&eacute;rie de hist&oacute;rias sobre Holmes. H&aacute; muito mais para explorar!</li> </ul><h2>Conclus&atilde;o: Uma leitura que vale a pena</h2> <p><em>Um Estudo em Vermelho</em> &eacute; um cl&aacute;ssico atemporal que combina suspense, intelig&ecirc;ncia e personagens inesquec&iacute;veis. &Eacute; a escolha perfeita para come&ccedil;ar nossa s&eacute;rie de dicas de leitura &agrave;s sextas-feiras, trazendo um momento de descontra&ccedil;&atilde;o para equilibrar a rotina de c&oacute;digos e algoritmos. Se voc&ecirc; est&aacute; procurando uma hist&oacute;ria que prenda sua aten&ccedil;&atilde;o e te transporte para a Londres do s&eacute;culo XIX, este livro &eacute; para voc&ecirc;.</p> <p><strong>E agora, quero ouvir de voc&ecirc;</strong>! J&aacute; leu <em>Um Estudo em Vermelho</em> ou outras aventuras de Sherlock Holmes? Tem alguma dica de livro para nossas pr&oacute;ximas sextas-feiras? Deixe seu coment&aacute;rio abaixo e compartilhe suas impress&otilde;es! Al&eacute;m disso, n&atilde;o perca os outros artigos do blog &ndash; temos dicas de Python, tecnologia e muito mais. Inscreva-se na nossa newsletter para receber as novidades direto no seu e-mail e n&atilde;o perder nenhuma dica de leitura ou tutorial. At&eacute; a pr&oacute;xima sexta!</p><p>The post <a href="https://blog.ffelix.eti.br/dicas-de-leitura-um-estudo-em-vermelho-para-fas-de-misterio/">Dicas de Leitura: &lsquo;Um Estudo em Vermelho&rsquo; para F&atilde;s de Mist&eacute;rio</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Sat, 17 May 2025 01:49:17 +0000 Alexsandro Felix: O Futuro das Carreiras com Python e Inteligência Artificial https://blog.ffelix.eti.br/o-futuro-das-carreiras-com-python-e-inteligencia-artificial/ https://blog.ffelix.eti.br/o-futuro-das-carreiras-com-python-e-inteligencia-artificial/ <p>E a&iacute;, pessoal do blog!</p> <p>Sabe aquelas not&iacute;cias sobre Intelig&ecirc;ncia Artificial que parecem coisa de filme? Pois &eacute;, a IA n&atilde;o &eacute; mais fic&ccedil;&atilde;o cient&iacute;fica, ela t&aacute; aqui, transformando o mercado de trabalho e criando um monte de oportunidades novas e bacanas. E se voc&ecirc; t&aacute; pensando em entrar nessa onda, ou dar um UP na sua carreira, prepare-se: tem uma linguagem de programa&ccedil;&atilde;o que &eacute; a chave para abrir muitas dessas portas. Acertou quem pensou em&hellip; <strong>Python</strong>!</p> <p>Recentemente, demos uma olhada numa mat&eacute;ria super interessante (l&aacute; no <a href="https://oantagonista.com.br/brasil/as-carreiras-que-mais-crescem-com-a-inteligencia-artificial-em-2025/" target="_blank" rel="noopener" title="">O Antagonista</a>) que falava sobre as carreiras que prometem bombar com o avan&ccedil;o da Intelig&ecirc;ncia Artificial em 2025. E o que a gente viu? Que muitas dessas &aacute;reas quent&iacute;ssimas t&ecirc;m um denominador comum: o bom e velho (nem t&atilde;o velho assim!) Python.</p> <h2>Carreira Turbinada Pela IA? Python T&aacute; No Meio!</h2> <p>O artigo destaca algumas posi&ccedil;&otilde;es que estar&atilde;o em alta. Duas que chamaram MUITO a aten&ccedil;&atilde;o e que tem tudo a ver com o nosso papo por aqui s&atilde;o:</p> <ul><li><strong>Especialista em Intelig&ecirc;ncia Artificial e Machine </strong>Learning: Pensa em treinar m&aacute;quinas para aprender, tomar decis&otilde;es, reconhecer padr&otilde;es. &Eacute; um campo fascinante que t&aacute; revolucionando ind&uacute;strias inteiras. E adivinha qual linguagem &eacute; a mais usada pelas maiores empresas e pesquisadores da &aacute;rea? Exato: Python, com suas bibliotecas poderosas como TensorFlow e PyTorch.</li> <li><strong>Analista de Dados e Business Intelligence</strong>: Com a IA gerando e processando volumes gigantescos de dados, algu&eacute;m precisa dar sentido a tudo isso! Analistas de dados s&atilde;o como detetives modernos, encontrando tesouros de informa&ccedil;&atilde;o escondidos nos n&uacute;meros. Python &eacute; essencial aqui, com ferramentas como Pandas e NumPy que transformam a an&aacute;lise de dados de uma tarefa chata para algo eficiente e, ouso dizer, elegante!</li> </ul><p>O artigo tamb&eacute;m mencionou o <strong>Desenvolvedor de Automa&ccedil;&otilde;es com IA</strong>, outra &aacute;rea onde saber programar (e Python &eacute; &oacute;timo para isso!) te d&aacute; uma super vantagem para conectar sistemas e otimizar processos usando APIs e modelos de linguagem.</p> <h2>Por Que Python Se Deu T&atilde;o Bem Nesse Casamento Com a IA?</h2> <p>N&atilde;o &eacute; por acaso que Python virou a &ldquo;l&iacute;ngua oficial&rdquo; da IA e Data Science. Sua sintaxe limpa e f&aacute;cil de ler (lembra do nosso papo sobre Python n&atilde;o morder?), a vasta quantidade de bibliotecas prontas (tipo &ldquo;kits&rdquo; de ferramentas pra IA e dados) e a comunidade ativa tornam o desenvolvimento nessas &aacute;reas muito mais r&aacute;pido e eficiente.</p> <p>&Eacute; como ter um carro superpotente e f&aacute;cil de dirigir numa estrada novinha em folha, em vez de tentar pilotar um trator numa trilha esburacada. <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f609.png" alt="&#128521;"></p> <h2>Quer Pegar Essa Onda do Futuro? Comece Agora Com Python!</h2> <figure><a href="https://amzn.to/4k0cMLT"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="424" data-attachment-id="1031" data-permalink="https://blog.ffelix.eti.br/livro_paperback_600/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?fit=600%2C424&amp;ssl=1" data-orig-size="600,424" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="livro_paperback_600" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?fit=300%2C212&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?fit=600%2C424&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?resize=600%2C424&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?resize=300%2C212&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></a></figure><p>Viu s&oacute;? A Intelig&ecirc;ncia Artificial n&atilde;o &eacute; uma amea&ccedil;a para todas as carreiras, mas sim um convite para evoluir e se adaptar. E aprender Python &eacute;, sem d&uacute;vida, um dos melhores investimentos que voc&ecirc; pode fazer hoje para surfar nessa onda e garantir seu espa&ccedil;o nas profiss&otilde;es do futuro.</p> <p>Se voc&ecirc; t&aacute; co&ccedil;ando a cabe&ccedil;a, pensando &ldquo;Ok, me convenceram, mas por onde eu come&ccedil;o de verdade?&rdquo;, a boa not&iacute;cia &eacute; que dar os primeiros passos com Python &eacute; mais simples do que parece. &Agrave;s vezes, um bom guia pr&aacute;tico faz toda a diferen&ccedil;a para organizar as ideias e come&ccedil;ar com o p&eacute; direito. Para quem busca um material que vai direto ao ponto para n&atilde;o se perder no labirinto inicial e quer construir uma base s&oacute;lida, o <a href="https://go.hotmart.com/F13340196Y" target="_blank" rel="noopener" title="">Python de A-Z, guia de primeiros passos com a linguagem</a> pode ser exatamente o que voc&ecirc; precisa para ligar o motor da sua jornada no mundo da programa&ccedil;&atilde;o.</p> <p>E se voc&ecirc; j&aacute; deu os primeiros passos e a &aacute;rea de dados te chamou a aten&ccedil;&atilde;o &ndash; afinal, a IA vive de dados! &ndash; e quer se aprofundar para dominar as t&eacute;cnicas mais usadas no mercado, transformando dados brutos em insights valiosos, investir em uma forma&ccedil;&atilde;o completa em An&aacute;lise de Dados com Python &eacute; um movimento inteligente. A <a href="https://go.hotmart.com/C99673846R" target="_blank" rel="noopener" title="">Forma&ccedil;&atilde;o em An&aacute;lise de Dados com Python</a> &eacute; um caminho excelente para quem busca especializa&ccedil;&atilde;o e quer se destacar em uma das &aacute;reas mais promissoras impulsionadas pela era da Intelig&ecirc;ncia Artificial.</p> <h2>Intelig&ecirc;ncia Artificial.A IA T&aacute; A&iacute;, e Seu Aprendizado Tamb&eacute;m Pode Estar!</h2> <p>A mensagem &eacute; clara: a Intelig&ecirc;ncia Artificial est&aacute; moldando o futuro do trabalho, e o conhecimento em linguagens como Python &eacute; um diferencial enorme. Aproveite esse momento para investir em voc&ecirc;, aprender uma habilidade com alta demanda e se posicionar para as oportunidades que v&ecirc;m por a&iacute;.A jornada de aprendizado &eacute; cont&iacute;nua e empolgante. Mergulhe de cabe&ccedil;a, construa seus projetos e fa&ccedil;a parte da comunidade que est&aacute; criando o futuro</p> <p>Curtiu o panorama e se animou para aprender Python? Temos mais conte&uacute;do esperando por voc&ecirc;!</p> <ul><li>Deixe seu coment&aacute;rio aqui embaixo! Qual carreira da era da IA te interessa mais?</li> <li>Explore outros artigos no nosso blog e continue sua jornada de aprendizado!N&atilde;o perca nossas novidades e dicas exclusivas! </li> <li>Assine nossa newsletter agora mesmo e receba conte&uacute;do de valor direto na sua caixa de entrada!Vamos juntos nessa!</li> </ul><p></p><p>The post <a href="https://blog.ffelix.eti.br/o-futuro-das-carreiras-com-python-e-inteligencia-artificial/">O Futuro das Carreiras com Python e Intelig&ecirc;ncia Artificial</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Sat, 17 May 2025 00:04:03 +0000 Aberto até de Madrugada: Android 16 reforça segurança do Advanced Protection https://abertoatedemadrugada.com/2025/05/android-16-reforca-seguranca-do.html https://abertoatedemadrugada.com/2025/05/android-16-reforca-seguranca-do.html <div><a href="https://abertoatedemadrugada.com/2025/05/android-16-reforca-seguranca-do.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg03UHY8B79v02_XDhDgsZQ4MCGgg1MWAdZHmp-CqsrXFNj7mKdPxV_1OiNapJ9AoIsPvugvAu0Aa_bQ9PKlXIWDee5sBYn32urKV492CpIG0bJLLus86FIdTrFteb6vAeMb-Ql2SGep_7zrHJRavUVeFDciVkRBmup7gzPEBziFkV_RHcFIuJoBUAdwo81/s1600/android16prot.jpg" width="600"></a></div> Para o Android 16 a Google est&aacute; a preparar uma s&eacute;rie de melhorias para a seguran&ccedil;a do sistema e utilizadores.<br><br><a name="more"></a> O Android 16 vai refor&ccedil;ar a seguran&ccedil;a com melhorias importantes no &#039;<a href="https://www.bleepingcomputer.com/news/security/android-16-expands-advanced-protection-with-device-level-security/">Advanced Protection</a>&#039;, que passa agora a proteger o pr&oacute;prio dispositivo, para al&eacute;m da conta Google. Esta nova camada de prote&ccedil;&atilde;o, semelhante ao Lockdown Mode da Apple, combina as ferramentas de seguran&ccedil;a mais avan&ccedil;adas do Android num &uacute;nico modo, que bloqueia o sistema, impede altera&ccedil;&otilde;es maliciosas e dificulta ataques com spyware que exploram vulnerabilidades zero-day.<br><br> Entre as prote&ccedil;&otilde;es est&atilde;o o arranque verificado, sandboxing rigoroso das apps, bloqueio da porta USB e rein&iacute;cio autom&aacute;tico do equipamento ap&oacute;s 72 horas sem uso. O Android 16 tamb&eacute;m introduz o &#039;intrusion logging&#039;, que regista tentativas de manipula&ccedil;&atilde;o num log encriptado na cloud, e impede que o dispositivo se ligue automaticamente a redes Wi-Fi inseguras. Algumas destas fun&ccedil;&otilde;es v&atilde;o depender do fabricante e chegar&atilde;o mais tarde este ano.<br><br> Para al&eacute;m da seguran&ccedil;a no dispositivo, o Android 16 inclui novas defesas contra burlas. Destaca-se o bloqueio de a&ccedil;&otilde;es arriscadas durante chamadas de n&uacute;meros desconhecidos e o &#039;Key Verifier&#039; na app Mensagens, que usa chaves de encripta&ccedil;&atilde;o para confirmar a identidade dos contactos, ajudando a evitar fraudes e ataques de troca de SIM.<br><br> A Google tamb&eacute;m melhorou as fun&ccedil;&otilde;es anti-roubo, transformando o Find My Device no &#039;Find Hub&#039; &mdash; um servi&ccedil;o alargado que funciona com etiquetas Bluetooth, parcerias com companhias a&eacute;reas e, em breve, ter&aacute; suporte para liga&ccedil;&atilde;o via sat&eacute;lite, permitindo manter o contacto mesmo em locais sem sinal m&oacute;vel.<br><br> Fri, 16 May 2025 20:00:00 +0000 Ricardo Saramago: Of Jazz and Whisky https://www.odrakir.com/blog/2025/05/16/of-jazz-and-whisky/ https://www.odrakir.com/blog/2025/05/16/of-jazz-and-whisky/ <figure><a href="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/jazz-and-whisky.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="768" src="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/jazz-and-whisky.png?resize=1024%2C768&amp;ssl=1" alt="" srcset="https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/jazz-and-whisky.png?w=1024&amp;ssl=1 1024w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/jazz-and-whisky.png?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/www.odrakir.com/blog/wp-content/uploads/2025/05/jazz-and-whisky.png?resize=768%2C576&amp;ssl=1 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px"></a></figure><p>Ten years ago, I couldn&rsquo;t stand either.</p> <p>Jazz sounded like a dissonant chaos. Whisky burned on the way down. Both felt like they belonged to someone older, wiser &mdash; someone else entirely, but not mine.</p> <p>I discovered the wonders of traditional wet shaving in 2017.<br>This was how my grandfather used to shave &mdash; a double-edged blade, shaving soap lathered by hand into a rich foam. No more skin rashes, no more infected follicles, no redness on my pale face. Shaving became a ritual, almost ceremonial. But something was missing.</p> <p>&ldquo;Why not listen to some music?&rdquo; I thought.<br>The usual rock wasn&rsquo;t cutting it (no pun intended), so I put on some jazz &mdash; a genre I never liked much. But hey, I hadn&rsquo;t shaved like this before either. Why not keep stepping outside my comfort zone?</p> <p>Spotify, by some stroke of kismet, recommended <strong>Kind of Blue</strong> by <strong>Miles Davis</strong>.<br>I recognized the name &mdash; a jazz legend &mdash; but I had no idea what his music sounded like. Same with <strong>John Coltrane</strong>. <strong>&ldquo;Cannonball&rdquo; Adderley</strong>, <strong>Paul Chambers</strong>, <strong>Jimmy Cobb</strong>, <strong>Bill Evans</strong>, and <strong>Wynton Kelly</strong> were complete strangers to me.</p> <p>Hot water. Lather. Blade. And then &mdash; <strong>So What</strong>.<br>I literally stopped shaving when Miles&rsquo; trumpet came in. I was hooked.<br>It didn&rsquo;t sound like the typical chaotic jazz I remembered. It felt both old and new. The improvisation wasn&rsquo;t dissonant. Every instrument had a voice, a role, a place in the tune. It flowed.</p> <p>I had no idea I was listening to one of the greatest jazz masterpieces ever created.<br>And then Coltrane&rsquo;s tenor saxophone joined in.<br>There I was, having a religious experience &mdash; with a razor blade in my hand. Almost ten minutes of pure bliss.</p> <p>In time, my taste for jazz deepened.<br><strong>Miles</strong>. <strong>Coltrane</strong>.<strong> Parker</strong>.<strong> Brubeck</strong>.<strong> Evans</strong>.<br>They weren&rsquo;t just playing music &mdash; they were having conversations, full of pauses, detours, contradictions. The kind I understood better as I got older.</p> <p>Jazz taught me that beauty doesn&rsquo;t always follow a straight line.<br>That it&rsquo;s okay to feel a little lost inside a song &mdash; as long as you keep listening.<br>(Though I still struggle with modern jazz. I&rsquo;m stuck in the classics. And honestly? I don&rsquo;t care.)</p> <p>I had my beer phase. Then a wine phase.<br>But none of it ever felt truly mine.<br>Whisky came later, like a punctuation mark at the end of long days.</p> <p>At first, it was about the ritual.<br>The quiet of pouring a dram. The weight of the glass.<br>The warmth that spreads &mdash; not just through the body, but the mood.<br>The comfort it gifts to the soul.</p> <p>I started noticing differences:<br>Peat smoke. Sherry casks. The sweetness of a bourbon versus the sharp clarity of a Japanese blend.<br>It stopped being about the alcohol. It became about the taste. The story.<br>About how jazz sounded with a side of whisky.</p> <p>I fell in love with the Japanese brands &mdash; Suntory, Nikka&hellip;<br>There&rsquo;s something in Japanese whisky that flows over your tastebuds like a wave of heat and flavour.<br>You can taste every decision the Master Blender made. It&rsquo;s craftsmanship in a glass.</p> <p>What jazz and whisky have in common is patience.<br>They don&rsquo;t demand your attention.<br>They wait for you to come to them.<br>They reward slowing down, leaning in, letting go of certainty.</p> <p>In a world that worships speed, they taught me the pleasure of drifting.<br>Of shutting down &mdash; just a little. Enough to feel something again.</p> <p>I&rsquo;m no connoisseur &mdash; not in jazz, not in whisky. But I know what I like.<br>A moody <strong>Bill Evans</strong> track on a rainy night.<br>A smoky Monkey Shoulder in a quiet room.</p> <p>They remind me I&rsquo;ve grown &mdash; not just older, but deeper.<br>More comfortable in my own silences.<br>More curious than certain.</p> <p>So here&rsquo;s to the long road of acquired tastes.<br>To music you once found confusing.<br>To drinks you once found harsh.<br>To the surprising ways we evolve &mdash; without even noticing.</p> Fri, 16 May 2025 19:47:26 +0000 Aberto até de Madrugada: Aston Martin mostra CarPlay Ultra da Apple https://abertoatedemadrugada.com/2025/05/aston-martins-mostra-carplay-ultra-da.html https://abertoatedemadrugada.com/2025/05/aston-martins-mostra-carplay-ultra-da.html <div><a href="https://abertoatedemadrugada.com/2025/05/aston-martins-mostra-carplay-ultra-da.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRPKE_-daH1x-E2JshDJeefKcUMM8RNPkxDJYg3WvVHBdqoWXWWyamFlf5wwFr8UmZZwpJ0GrXKPYFnX1SsuBcr6mKuXlQqvOYZFj89PPTbU1B__KYwp36WpmBsrToPvlune5B0NQ8QC71tUdnulmW9nNBPXsW59sXhOuiaAxx-BEfB8wESlpdPMFPG4PV/s1600/carplay.jpg" width="600"></a></div> Depois de muitos atrasos e demoras, a Apple mostra o CarPlay Ultra em ac&ccedil;&atilde;o, num Aston Martin.<br><br><a name="more"></a> <br> O novo CarPlay Ultra da Apple foi finalmente mostrado ao mundo em v&iacute;deos reais que revelam a experi&ecirc;ncia avan&ccedil;ada de infoentretenimento em a&ccedil;&atilde;o. As imagens, partilhadas pela Aston Martin e outros meios, mostram em detalhe como o sistema se integra nos ve&iacute;culos, permitindo personalizar o painel de instrumentos, navegar e controlar v&aacute;rias fun&ccedil;&otilde;es do carro.<br><br> O CarPlay Ultra oferece uma liga&ccedil;&atilde;o ainda mais profunda entre o iPhone e os ecr&atilde;s do carro, com widgets, temas e um painel de bordo altamente personaliz&aacute;vel. Funciona com iPhone 12 ou mais recente, desde que corra iOS 18.5 ou superior. <br><br><div></div> <br><div></div> <br> Por agora, o CarPlay Ultra est&aacute; dispon&iacute;vel apenas em novos modelos da Aston Martin na Am&eacute;rica do Norte, com expans&atilde;o global prevista para o pr&oacute;ximo ano. Certos modelos atuais da marca tamb&eacute;m poder&atilde;o receber o sistema atrav&eacute;s de uma atualiza&ccedil;&atilde;o de software nos concession&aacute;rios.<br><br> Outros fabricantes, como Hyundai, Kia e Genesis, ainda est&atilde;o a trabalhar para trazer o CarPlay Ultra aos seus carros, com o objetivo de disponibilizar a experi&ecirc;ncia a mais condutores em todo o mundo.<br><br> Fri, 16 May 2025 17:30:00 +0000 Aberto até de Madrugada: Descontos Windows 11 a €17 na CdkeySales https://abertoatedemadrugada.com/2025/05/descontos-windows-11-17-na-cdkeysales.html https://abertoatedemadrugada.com/2025/05/descontos-windows-11-17-na-cdkeysales.html <div><a href="https://abertoatedemadrugada.com/2025/05/descontos-windows-11-17-na-cdkeysales.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIJzlpylUpk1ey6O6r_6oczA7KYxyNU3T1dbM7BCHKMtgU-Rf04X8VovKb8bch_c_yAXjOBtY82U12T_pIlaa97jCdJ-0afMO-cJsrf5bTc4nmg01A82p1cYSUXpp5y_aJsQnpU2O1czofW0KtU0N2pTrxEXf1bsjwqYi3EDJBgRO46Bo3nk80ecpV-_d1/s1600/ab%20cover.jpg" width="600"></a></div> <a name="more"></a> Com o Windows 10 a aproximar-se do seu fim (em Outubro de 2025), come&ccedil;a a ser necess&aacute;rio pensar na mudan&ccedil;a para o mais recente Windows 11. O Windows 11 adopta um design mais moderno e simplificado com um menu Iniciar centralizado, multitarefa melhorada atrav&eacute;s dos Snap Layouts e vantagens para jogos como o DirectStorage para tempos de carregamento mais r&aacute;pidos, conta tamb&eacute;m com uma integra&ccedil;&atilde;o cada vez mais robusta com o Copilot para se poder tirar partido do assistente AI da Microsoft. Apesar de ainda ser poss&iacute;vel <a href="https://pt.cdkeysales.com/cs/W10P-AB">comprar licen&ccedil;as Windows</a> para ambos os sistemas na CdkeySales, a recomenda&ccedil;&atilde;o vai obviamente para as <a href="https://pt.cdkeysales.com/cs/W11P-AB">chaves para Windows 11</a> para que se possa tirar partido de todas as novidades e melhorias.<br><br><b>C&oacute;digo de desconto <span>35%</span>: <span>AB35</span></b><span><br></span><h4> Windows</h4><a href="https://pt.cdkeysales.com/cs/W11P-AB">Lifetime MS Windows 11 Pro OEM KEY GLOBAL</a>&nbsp;&euro;18,67 (<b>35% off</b> code <b><span>AB35</span></b>)<br><a href="https://pt.cdkeysales.com/cs/W11H-AB">Lifetime MS Windows 11 Home OEM KEY GLOBAL</a>&nbsp;&euro;17,95 (<b>35% off</b> code <b><span>AB35</span></b>)<br><a href="https://pt.cdkeysales.com/cs/W10P-AB">Lifetime MS Windows 10 Pro OEM KEY GLOBAL</a>&nbsp;&euro;14,01 (<b>35% off</b> code <b><span>AB35</span></b>)<br><a href="https://pt.cdkeysales.com/cs/W10H-AB">Lifetime MS Windows 10 Home OEM KEY GLOBAL</a>&nbsp;&euro;11,58 (<b>35% off</b> code <b><span>AB35</span></b>)<br><h4>Office</h4> <a href="https://pt.cdkeysales.com/cs/O19P-AB">Lifetime MS Office 2019 Professional Plus Key GLOBAL</a>&nbsp;&euro;38,53 (<b>35% off</b> code <b><span>AB35</span></b>)<br><a href="https://pt.cdkeysales.com/cs/O16P-AB">Lifetime MS Office 2016 Professional Plus Key GLOBAL</a>&nbsp;&euro;23,17 (<b>35% off</b> code <b><span>AB35</span></b>)<br><a href="http://pt.cdkeysales.com/cs/O365-AB">Microsoft Office 365 One Year Account for One Device</a>&nbsp;&euro;17,09 (<b>35% off</b> code <b><span>AB35</span></b>)<br><h4>Combos Windows+Office</h4> <a href="https://pt.cdkeysales.com/cs/PACK1-AB">Lifetime Windows 10 Pro + Office 2016 Pro Plus Keys Pack</a>&nbsp;&euro;34,68 (<b>35% off</b> code <b><span>AB35</span></b>)<br><a href="https://pt.cdkeysales.com/cs/PACK2-AB">Lifetime Windows 10 Pro + Office 2019 Pro Plus Keys Pack</a>&nbsp;&euro;48,35 (<b>35% off</b> code <b><span>AB35</span></b>)<br><!--<h4>Outros produtos</h4> <a href="http://pt.cdkeysales.com/cs/VS-AB">Microsoft Visual Studio 2022 Enterprise Key Global</a>&nbsp;&euro;78,32 (35% off code AB35)<br /><a href="http://pt.cdkeysales.com/cs/SQL-AB">Microsoft SQL Server 2019 Standard 2 Core Key Global</a>&nbsp;&euro;71,82 (35% off code AB35)<br /> <br />--><!--<br> Al&eacute;m dessa mega promo&ccedil;&atilde;o, a Bzfuture.com tamb&eacute;m est&aacute; oferecendo <b>descontos de at&eacute; 15%</b> na utiliza&ccedil;&atilde;o do cup&atilde;o de descontos <b>AB15</b>:<br /><a href="https://pt.bzfuture.com/dareu-a710-trimode-connection-gaming-headset.html#AB">Dareu A710 gaming headset</a>&nbsp;(&euro;64,59)<br /><a href="https://pt.bzfuture.com/dareu-ek871-tri-mode-connection-hotswap-mechanical-gaming-keyboard.html#AB">Dareu EK871 gaming keyboard</a>&nbsp;(&euro;63,74)<br /><a href="https://pt.bzfuture.com/gaming-accessories/e-yooso-k620-usb-mechanical-gaming-keyboard-blue-switch-87-key-backlit.html#AB">E-YOOSO K620 gaming keyborad</a>&nbsp;(&euro;32,29)<br /> <br />--><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghW_fZQ03TRO4U1dHJAXXPE-Ec89fdFjPfXJf-XjL1cmVQmyEW4Q9fJdcSd0k4uZG4cpWFnJaau3Wo5kPnDWs-Xoc60i2MOdsnWmOGoGvXzpGhVBbHtqJy8RwRZHVuSejpGcH0NSDjQvIxIgazN1T2bUTqxpOnPC6bPPbLd5eNqjjTbXxQEhOtN06FDqoj/s1200/ab%205.16%20%281%29.jpg"><img alt="" border="0" data-original-height="800" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghW_fZQ03TRO4U1dHJAXXPE-Ec89fdFjPfXJf-XjL1cmVQmyEW4Q9fJdcSd0k4uZG4cpWFnJaau3Wo5kPnDWs-Xoc60i2MOdsnWmOGoGvXzpGhVBbHtqJy8RwRZHVuSejpGcH0NSDjQvIxIgazN1T2bUTqxpOnPC6bPPbLd5eNqjjTbXxQEhOtN06FDqoj/s600/ab%205.16%20%281%29.jpg" width="600"></a></div> O processo de compra &eacute; bastante simples, bastando ir adicionando os produtos pretendidos ao carrinho de compras, e inserir o c&oacute;digo de desconto no campo respectivo antes de prosseguir para o checkout.<br><!--<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNXRUYG3ey7PTqvk_QCUTRIbBfLSVU8Lhx2KhpFJmUEl6TyMP6ReYHN1NkXeprg1MZGtYz2KNJgwPrvAJ7-W4pNV9Yj-iY9Ej3FhlaWn9yJ09KBWAnlZnDyTNS58qvtNS-7pEG-281Y-4pThUbA5-Zt-c2N37g9KpzdqJPO9Ly6Q7cibcQ4YkkiEbRk8XI/s1204/product%20page--CS-PT.jpg" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="750" data-original-width="1204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNXRUYG3ey7PTqvk_QCUTRIbBfLSVU8Lhx2KhpFJmUEl6TyMP6ReYHN1NkXeprg1MZGtYz2KNJgwPrvAJ7-W4pNV9Yj-iY9Ej3FhlaWn9yJ09KBWAnlZnDyTNS58qvtNS-7pEG-281Y-4pThUbA5-Zt-c2N37g9KpzdqJPO9Ly6Q7cibcQ4YkkiEbRk8XI/s600/product%20page--CS-PT.jpg" width="600" /></a></div>--><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvH2e-y9Xv35swgM3RDCIHS8z7yTR61wPUYZsMGH05A8cmbQ0RF7MfqJjdyxRAI4AzYCq7JRI1YNguXadwSN2T6ph58x12T3EezAnhjsD5yQl73Vk6BYwqkD0pdQ6NUpNSBSaTiJBXa5Ywc4s2MPrNc7oW5TZeS7tV4eWbh6EEN5bsXlRFIik3MoI8AkjU/s1713/official%20price-pt.jpg"><img alt="" border="0" data-original-height="954" data-original-width="1713" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvH2e-y9Xv35swgM3RDCIHS8z7yTR61wPUYZsMGH05A8cmbQ0RF7MfqJjdyxRAI4AzYCq7JRI1YNguXadwSN2T6ph58x12T3EezAnhjsD5yQl73Vk6BYwqkD0pdQ6NUpNSBSaTiJBXa5Ywc4s2MPrNc7oW5TZeS7tV4eWbh6EEN5bsXlRFIik3MoI8AkjU/s600/official%20price-pt.jpg" width="600"></a></div> <div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7atO2wLppa4NUaeCd0wqM1hb8MBah0YrNeYdBa46EhmBkB-nfl0c_r54oFoz1OEn4De7I_-OLHjnqFRqbgDb31-yZyTnmyfzlNaBxZinYkfZuok70zir2fUfPQDcQzMiRWjxYOygx8wumFdl7_99vbF9YMpX2YCrkl3dIYZH7CAIexrnfqBC4WHAUKp-J/s1214/USING%20CODE%20AB35.jpg"><img alt="" border="0" data-original-height="698" data-original-width="1214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7atO2wLppa4NUaeCd0wqM1hb8MBah0YrNeYdBa46EhmBkB-nfl0c_r54oFoz1OEn4De7I_-OLHjnqFRqbgDb31-yZyTnmyfzlNaBxZinYkfZuok70zir2fUfPQDcQzMiRWjxYOygx8wumFdl7_99vbF9YMpX2YCrkl3dIYZH7CAIexrnfqBC4WHAUKp-J/s600/USING%20CODE%20AB35.jpg" width="600"></a></div> <!--<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqYkO20wLa_-vDD34Db73tUJ7iBOBOGsDFQlr5Cy9jo4o6xOGyi86iJwvXmpbq1pgA0CzT_5O6cdtSXOZbXEd0FwoFluIQmNTx3lwK8ISVSmqPiYS2CFSLP8OpMoDiGYr3QUIUaNObLwcVZe0IBUBxAzTdahQWXwmU-hp4Rjw1qiAFV6GdBazKW_iXqg/s1162/purchased%20oder-PT.jpg" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="762" data-original-width="1162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqYkO20wLa_-vDD34Db73tUJ7iBOBOGsDFQlr5Cy9jo4o6xOGyi86iJwvXmpbq1pgA0CzT_5O6cdtSXOZbXEd0FwoFluIQmNTx3lwK8ISVSmqPiYS2CFSLP8OpMoDiGYr3QUIUaNObLwcVZe0IBUBxAzTdahQWXwmU-hp4Rjw1qiAFV6GdBazKW_iXqg/s600/purchased%20oder-PT.jpg" width="600" /></a></div>--> <b> Como activar o c&oacute;digo de desconto AB35</b><br> Depois de adicionado ao carrinho (bot&atilde;o Comprar Agora), antes de confirmar a encomenda, dever&aacute; inserir o c&oacute;digo AB35 na caixa "C&oacute;digo de promo&ccedil;&atilde;o" e clicar em "Aplicar".<br><br> &Eacute; poss&iacute;vel fazer o pagamento via PayPal - o que &eacute; sempre recomendado como medida de protec&ccedil;&atilde;o adicional em todas as compras online - e temos &agrave; disposi&ccedil;&atilde;o o servi&ccedil;o de suporte via live chat no site ou atrav&eacute;s do email [email protected].<br><br><br><b>Como activar a licen&ccedil;a do Windows 10 / 11</b><br> Para activar a licen&ccedil;a do Windows 10 ou Windows 11, basta aceder &agrave;s configura&ccedil;&otilde;es do Windows e, na sec&ccedil;&atilde;o "Ativa&ccedil;&atilde;o" clicar no bot&atilde;o "Alterar chave do produto". Surgir&aacute; uma janela onde se pode inserir o c&oacute;digo de activa&ccedil;&atilde;o do Windows que acabou de adquirir.<br><div><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_5F3nLAUMVLsOdoOnczpFS-XNhSd5cdeOaBxPxfVwAB1Cr04Bm6jO76znoE54NOCdkPj2YcldgTnsk5PJTO63PF9dC8EKjY-lCav1GWA34ffTSTrS16qo0OqVg6W0pgoi2QfvdPC5lgHNAJXO8B4M8rM6jcUgBQ7TP1JRMfDQ83bZBCwxyMX_e995Jg=s661"><img alt="" border="0" data-original-height="521" data-original-width="661" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_5F3nLAUMVLsOdoOnczpFS-XNhSd5cdeOaBxPxfVwAB1Cr04Bm6jO76znoE54NOCdkPj2YcldgTnsk5PJTO63PF9dC8EKjY-lCav1GWA34ffTSTrS16qo0OqVg6W0pgoi2QfvdPC5lgHNAJXO8B4M8rM6jcUgBQ7TP1JRMfDQ83bZBCwxyMX_e995Jg=s400" width="400"></a></div> Ao concluir, ser&aacute; apresentada uma mensagem informando que a licen&ccedil;a est&aacute; activa e validada.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicBZLSHMWPqFSOEmS3_DH6NoMmVUJvhiwYNX77wUYmO3pzCBfiETmdar-YJ1A_cGpb7Ts_lHknnI-RefgzEPqDXwk6m_6nf4znaYl-3-S8_eyKQ1-Q8ADxdLuP0So5890T__GMq_SlP--Za8eJ7-SQPbbs0c47iCQSd8-dsMgSHJhBhEk8pro9yoVJVQ/s1600/Activation-PT%20%281%29.jpg"><img alt="" border="0" data-original-height="854" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicBZLSHMWPqFSOEmS3_DH6NoMmVUJvhiwYNX77wUYmO3pzCBfiETmdar-YJ1A_cGpb7Ts_lHknnI-RefgzEPqDXwk6m_6nf4znaYl-3-S8_eyKQ1-Q8ADxdLuP0So5890T__GMq_SlP--Za8eJ7-SQPbbs0c47iCQSd8-dsMgSHJhBhEk8pro9yoVJVQ/s600/Activation-PT%20%281%29.jpg" width="600"></a></div> &Eacute; poss&iacute;vel fazer o pagamento via PayPal - o que &eacute; sempre recomendado como medida de protec&ccedil;&atilde;o adicional.<br><br> N&atilde;o se esque&ccedil;am que no caso dos Windows e Office, o download continuar&aacute; a ser feito do site da Microsoft, com a compra a disponibilizar apenas as chaves para activar os produtos:<br><ul><li>Windows 11 - [ <a href="https://www.microsoft.com/en-us/software-download/windows11">Download Link</a> ]</li><li>Windows 10 - [ <a href="https://www.microsoft.com/en-us/software-download/windows10">Download Link</a> ]</li> <li>Microsoft Office 2016 Professional Plus - [ <a href="https://setup.office.com/">Download Link</a> ]</li> <li>Microsoft Office 2019 Professional Plus - [ <a href="https://setup.office.com/">Download Link</a> ]</li> <li>Microsoft Office 2021 Professional Plus - [ <a href="https://setup.office.com/">Download Link</a> ]</li> </ul><br> [Artigo patrocinado por <a href="http://en.mediamz.com/">Mediamz</a>]<br><br> Fri, 16 May 2025 15:30:00 +0000 Aberto até de Madrugada: DJI lança drone com projectores e altofalante de alta potência https://abertoatedemadrugada.com/2025/05/dji-lanca-drone-com-projectores-e.html https://abertoatedemadrugada.com/2025/05/dji-lanca-drone-com-projectores-e.html <div><a href="https://abertoatedemadrugada.com/2025/05/dji-lanca-drone-com-projectores-e.html"><img alt="" border="0" data-original-height="940" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAfzOqRUtmJnFPgHLPFCtW_c85UUsdXJxFWYcco0CPvz9SgK1Lmms9XeHas4GAHsTzwS8VjaNXMKdTl9iDwlmtHRAj0gGH-uNMicQedRc6-kfne5amqq-mf06wN66VSehYEBN3bqmDhpdzcq3KvlhOUQ2YDGYoOKvFb_zg2npL6ix_fr0LYsEQxCGGKsFc/s1600/djispeakerlight.jpg" width="600"></a></div> A DJI expandiu a sua gama de acess&oacute;rios para drones, com um altofalante e projector de alta pot&ecirc;ncia.<br><br><a name="more"></a> O <a href="https://enterprise.dji.com/zenmuse-v1">Zenmuse V1 speaker</a> consegue emitir mensagens de voz a 127 dB, o equivalente ao som de um avi&atilde;o a descolar. O objectivo &eacute; ajudar equipas de emerg&ecirc;ncia e seguran&ccedil;a p&uacute;blica a comunicar de forma clara e eficaz a partir do ar, seja em situa&ccedil;&otilde;es de resgate, controlo de multid&otilde;es ou gest&atilde;o de tr&acirc;nsito.<br><br> Este altifalante pode ser instalado nos drones Matrice 350 RTK e Matrice 300 RTK, e permite transmitir mensagens at&eacute; 500 metros de dist&acirc;ncia mesmo em ambientes ruidosos. As mensagens podem ser gravadas em tempo real, escritas em texto e convertidas para voz, ou carregadas atrav&eacute;s da app DJI Pilot 2.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXFZRf-1AJGsX7Gcex_sy_9EXLWEgd6UrslkYy_bgB28-ad8UOfJiTW4BqzWYeqt8m-sYuaI2Lw_Q7xX8thRI2cY4i7tgznZA-xfc36xGsSzifnL2RvYl6-NRs8kp2acKwwPlKWdJJazWuSu8z4Itp6Vmvp-yy9CqmtO0tP48S5Y6XFPpw4W2bBXC6uKAP/s1600/djinight.jpg"><img alt="" border="0" data-original-height="1067" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXFZRf-1AJGsX7Gcex_sy_9EXLWEgd6UrslkYy_bgB28-ad8UOfJiTW4BqzWYeqt8m-sYuaI2Lw_Q7xX8thRI2cY4i7tgznZA-xfc36xGsSzifnL2RvYl6-NRs8kp2acKwwPlKWdJJazWuSu8z4Itp6Vmvp-yy9CqmtO0tP48S5Y6XFPpw4W2bBXC6uKAP/s600/djinight.jpg" width="600"></a></div> Al&eacute;m <b><a href="https://abertoatedemadrugada.com/12"></a></b>do altifalante, a DJI revelou tamb&eacute;m o novo <a href="https://enterprise.dji.com/zenmuse-s1">Zenmuse S1 spotlight</a>, um holofote que utiliza tecnologia LEP (Laser Excited Phosphor) para oferecer uma ilumina&ccedil;&atilde;o intensa, com dois modos de luz: com maior &aacute;rea ou modo mais focado. Ambos os modos podem ser activados simultaneamente para a m&aacute;xima ilumina&ccedil;&atilde;o, ideal para opera&ccedil;&otilde;es nocturnas ou buscas.<br><br><div></div> <br> A DJI ainda n&atilde;o revelou pre&ccedil;os nem datas de lan&ccedil;amento, mas estes novos acess&oacute;rios mostram como os drones est&atilde;o a tornar-se ferramentas essenciais para as mais diversas &aacute;reas, indo para al&eacute;m da simples capta&ccedil;&atilde;o de imagens a&eacute;reas.<br><br> Fri, 16 May 2025 13:30:00 +0000 Alexsandro Felix: Break e Continue: Controle de Fluxo em Python https://blog.ffelix.eti.br/break-e-continue-controle-de-fluxo-em-python/ https://blog.ffelix.eti.br/break-e-continue-controle-de-fluxo-em-python/ <p>Ol&aacute;, futuro mestre do Python! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f44b.png" alt="&#128075;">Se voc&ecirc; j&aacute; deu os primeiros passos no mundo da programa&ccedil;&atilde;o com Python, provavelmente j&aacute; esbarrou nos famosos loops (<code>for</code> e <code>while</code>). Eles s&atilde;o super &uacute;teis para repetir tarefas e automatizar processos chatos (ningu&eacute;m quer copiar e colar c&oacute;digo 100 vezes, n&eacute;?).Mas e se, no meio de um loop, voc&ecirc; precisar dar um &ldquo;chega!&rdquo; ou pular uma etapa espec&iacute;fica? &Eacute; a&iacute; que entram em cena nossos amigos <code>break</code> e <code>continue</code>. Pense neles como os bot&otilde;es de controle que te d&atilde;o o poder de microgerenciar o fluxo dos seus loops.Neste artigo, vamos desvendar esses dois comandos, entender quando e como us&aacute;-los, e claro, vamos colocar a m&atilde;o na massa com exemplos pr&aacute;ticos que voc&ecirc; pode rodar a&iacute; no seu computador! Preparado para dar um upgrade no seu controle de fluxo? Ent&atilde;o, bora l&aacute;!</p> <h2>break: O Bot&atilde;o de P&acirc;nico (ou Sa&iacute;da R&aacute;pida) do Seu Loop</h2> <p>Imagine que voc&ecirc; est&aacute; procurando por algo em uma lista gigantesca. Quando voc&ecirc; encontra o que procura, faz sentido continuar vasculhando a lista inteira? Claro que n&atilde;o! Voc&ecirc; quer parar na hora, certo?&Eacute; exatamente isso que o comando <code>break</code> faz. Quando o Python encontra um <code>break</code> dentro de um loop (<code>for</code> ou <code>while</code>), ele <strong>interrompe o loop imediatamente</strong>, sem terminar as itera&ccedil;&otilde;es restantes, e continua executando o c&oacute;digo que vem depois do loop. &Eacute; como apertar o bot&atilde;o de &ldquo;ejetar&rdquo; do seu loop!</p> <h3>Quando usar break?</h3> <ul><li>Quando voc&ecirc; encontrou o item que procurava em uma lista e n&atilde;o precisa mais continuar.</li> <li>Quando uma condi&ccedil;&atilde;o de erro inesperada acontece dentro do loop.</li> <li>Quando voc&ecirc; quer garantir que o loop pare depois de um certo n&uacute;mero de execu&ccedil;&otilde;es, mesmo que a condi&ccedil;&atilde;o do loop ainda seja verdadeira (cuidado para n&atilde;o criar loops infinitos sem querer</li> </ul><h2>Exemplo Pr&aacute;tico: Encontrando um N&uacute;mero Secreto</h2> <p>Vamos supor que temos uma lista de n&uacute;meros e queremos parar de procurar assim que encontrarmos o n&uacute;mero 7.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;numeros = [1, 3, 5, 7, 9, 11, 13, 15] numero_secreto = 7 print("Procurando pelo n&uacute;mero secreto...") for numero in numeros: print(f"Verificando o n&uacute;mero: {numero}") if numero == numero_secreto: print(f"UHUU! Encontrei o n&uacute;mero secreto: {numero}!") break # &lt;- O break entra em a&ccedil;&atilde;o aqui! print("Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca.") # Esta linha s&oacute; executa se n&atilde;o encontrar o n&uacute;mero secreto print("Busca finalizada (fora do loop).")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>numeros </span><span>=</span><span> </span><span>[</span><span>1</span><span>,</span><span> </span><span>3</span><span>,</span><span> </span><span>5</span><span>,</span><span> </span><span>7</span><span>,</span><span> </span><span>9</span><span>,</span><span> </span><span>11</span><span>,</span><span> </span><span>13</span><span>,</span><span> </span><span>15</span><span>]</span></span> <span><span>numero_secreto </span><span>=</span><span> </span><span>7</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>Procurando pelo n&uacute;mero secreto...</span><span>"</span><span>)</span></span> <span></span> <span><span>for</span><span> numero </span><span>in</span><span> numeros</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Verificando o n&uacute;mero: </span><span>{</span><span>numero</span><span>}</span><span>"</span><span>)</span></span> <span><span> </span><span>if</span><span> numero </span><span>==</span><span> numero_secreto</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"UHUU! Encontrei o n&uacute;mero secreto: </span><span>{</span><span>numero</span><span>}</span><span>!"</span><span>)</span></span> <span><span> </span><span>break</span><span> </span><span># &lt;- O break entra em a&ccedil;&atilde;o aqui!</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca.</span><span>"</span><span>)</span><span> </span><span># Esta linha s&oacute; executa se n&atilde;o encontrar o n&uacute;mero secreto</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>Busca finalizada (fora do loop).</span><span>"</span><span>)</span></span></code></pre></div> <h3>Como rodar e o que esperar:</h3> <ul><li>Copie e cole este c&oacute;digo em um arquivo meu_loop.py (ou o nome que preferir).</li> <li>Abra seu terminal ou prompt de comando.</li> <li>Navegue at&eacute; a pasta onde salvou o arquivo.</li> <li>Execute o c&oacute;digo com o comando: python meu_loop.py</li> </ul><h3>Sa&iacute;da esperada:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Procurando pelo n&uacute;mero secreto... Verificando o n&uacute;mero: 1 Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca. Verificando o n&uacute;mero: 3 Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca. Verificando o n&uacute;mero: 5 Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca. Verificando o n&uacute;mero: 7 UHUU! Encontrei o n&uacute;mero secreto: 7! Busca finalizada (fora do loop)." aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Procurando pelo n&uacute;mero secreto...</span></span> <span><span>Verificando o n&uacute;mero</span><span>:</span><span> </span><span>1</span></span> <span><span>Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca</span><span>.</span></span> <span><span>Verificando o n&uacute;mero</span><span>:</span><span> </span><span>3</span></span> <span><span>Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca</span><span>.</span></span> <span><span>Verificando o n&uacute;mero</span><span>:</span><span> </span><span>5</span></span> <span><span>Esse n&atilde;o &eacute; o n&uacute;mero secreto... continuando a busca</span><span>.</span></span> <span><span>Verificando o n&uacute;mero</span><span>:</span><span> </span><span>7</span></span> <span><span>UHUU! Encontrei o n&uacute;mero secreto</span><span>:</span><span> </span><span>7</span><span>!</span></span> <span><span>Busca </span><span>finalizada</span><span> </span><span>(</span><span>fora do loop</span><span>).</span></span></code></pre></div> <h3>Entendendo o que aconteceu</h3> <p>O loop come&ccedil;ou a iterar pela lista numeros. A cada n&uacute;mero, ele imprimiu que estava verificando. Quando chegou no n&uacute;mero 7, a condi&ccedil;&atilde;o<code> if numero == numero_secreto</code>: se tornou verdadeira. Ele imprimiu a mensagem de sucesso e, imediatamente, encontrou o <code>break</code>. Isso fez com que o loop fosse encerrado naquele exato momento. A mensagem &ldquo;Esse n&atilde;o &eacute; o n&uacute;mero secreto&hellip;&rdquo; n&atilde;o foi impressa para os n&uacute;meros 9, 11, 13 e 15, porque o loop parou antes de chegar neles. O c&oacute;digo ent&atilde;o continuou a execu&ccedil;&atilde;o depois do loop, imprimindo &ldquo;Busca finalizada&hellip;&rdquo;.Ficou claro o poder do <code>break</code>? Ele &eacute; direto e reto: achou, parou</p> <figure><a href="https://amzn.to/3yNBMn6"><img data-recalc-dims="1" loading="lazy" decoding="async" width="280" height="280" data-attachment-id="1063" data-permalink="https://blog.ffelix.eti.br/amazonoriginal280x280/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/amazonoriginal280x280.png?fit=280%2C280&amp;ssl=1" data-orig-size="280,280" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="amazonoriginal280x280" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/amazonoriginal280x280.png?fit=280%2C280&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/amazonoriginal280x280.png?fit=280%2C280&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/amazonoriginal280x280.png?resize=280%2C280&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/amazonoriginal280x280.png?w=280&amp;ssl=1 280w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/amazonoriginal280x280.png?resize=150%2C150&amp;ssl=1 150w" sizes="auto, (max-width: 280px) 100vw, 280px"></a></figure><h2>continue: Pulando a Fogueira (ou a Etapa Chata)</h2> <p>Agora, imagine outra situa&ccedil;&atilde;o. Voc&ecirc; est&aacute; processando uma lista de arquivos, mas sabe que alguns deles est&atilde;o corrompidos e n&atilde;o podem ser processados. Voc&ecirc; n&atilde;o quer parar todo o processo por causa de um arquivo ruim, quer? Voc&ecirc; s&oacute; quer pular aquele espec&iacute;fico e ir para o pr&oacute;ximo.</p> <p>&Eacute; para isso que serve o comando <code>continue</code>. Quando o Python encontra um <code>continue</code> dentro de um loop, ele pula todo o c&oacute;digo restante da itera&ccedil;&atilde;o atual e vai direto para a pr&oacute;xima itera&ccedil;&atilde;o do loop.</p> <p>&Eacute; como pular uma casa no jogo da vida ou pular a fila do banco (na programa&ccedil;&atilde;o &eacute; permitido!).</p> <h2>Quando usar continue?</h2> <ul><li>Quando voc&ecirc; precisa pular o processamento de um item espec&iacute;fico que n&atilde;o atende a uma condi&ccedil;&atilde;o.</li> <li>Para otimizar loops, pulando etapas desnecess&aacute;rias para certos elementos.</li> <li>Para lidar com casos excepcionais dentro de uma itera&ccedil;&atilde;o sem parar o loop inteiro.</li> </ul><h3>Exemplo Pr&aacute;tico: Pulando N&uacute;meros Pares</h3> <p>Vamos iterar por uma lista de n&uacute;meros e imprimir apenas os n&uacute;meros &iacute;mpares, pulando os pares.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print("Imprimindo apenas n&uacute;meros &iacute;mpares:") for numero in numeros: print(f"\n--- Verificando o n&uacute;mero: {numero} ---") # Adicionei esses prints para vermos o fluxo if numero % 2 == 0: # Verifica se o n&uacute;mero &eacute; par (resto da divis&atilde;o por 2 &eacute; 0) print(f"Ops! O n&uacute;mero {numero} &eacute; par. Pulando esta itera&ccedil;&atilde;o com continue...") continue # &lt;- O continue entra em a&ccedil;&atilde;o aqui! # Este c&oacute;digo s&oacute; ser&aacute; executado se o continue N&Atilde;O for encontrado print(f"O n&uacute;mero {numero} &eacute; &iacute;mpar. Processando...") print(f"Processado: {numero * 2}") # Apenas um exemplo de "processamento" print("\nProcessamento de &iacute;mpares finalizado (fora do loop).")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>numeros </span><span>=</span><span> </span><span>[</span><span>1</span><span>,</span><span> </span><span>2</span><span>,</span><span> </span><span>3</span><span>,</span><span> </span><span>4</span><span>,</span><span> </span><span>5</span><span>,</span><span> </span><span>6</span><span>,</span><span> </span><span>7</span><span>,</span><span> </span><span>8</span><span>,</span><span> </span><span>9</span><span>,</span><span> </span><span>10</span><span>]</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>Imprimindo apenas n&uacute;meros &iacute;mpares:</span><span>"</span><span>)</span></span> <span></span> <span><span>for</span><span> numero </span><span>in</span><span> numeros</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"</span><span>\n</span><span>--- Verificando o n&uacute;mero: </span><span>{</span><span>numero</span><span>}</span><span> ---"</span><span>)</span><span> </span><span># Adicionei esses prints para vermos o fluxo</span></span> <span><span> </span><span>if</span><span> numero </span><span>%</span><span> </span><span>2</span><span> </span><span>==</span><span> </span><span>0</span><span>:</span><span> </span><span># Verifica se o n&uacute;mero &eacute; par (resto da divis&atilde;o por 2 &eacute; 0)</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Ops! O n&uacute;mero </span><span>{</span><span>numero</span><span>}</span><span> &eacute; par. Pulando esta itera&ccedil;&atilde;o com continue..."</span><span>)</span></span> <span><span> </span><span>continue</span><span> </span><span># &lt;- O continue entra em a&ccedil;&atilde;o aqui!</span></span> <span><span> </span></span> <span><span> </span><span># Este c&oacute;digo s&oacute; ser&aacute; executado se o continue N&Atilde;O for encontrado</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"O n&uacute;mero </span><span>{</span><span>numero</span><span>}</span><span> &eacute; &iacute;mpar. Processando..."</span><span>)</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Processado: </span><span>{</span><span>numero </span><span>*</span><span> </span><span>2</span><span>}</span><span>"</span><span>)</span><span> </span><span># Apenas um exemplo de "processamento"</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Processamento de &iacute;mpares finalizado (fora do loop).</span><span>"</span><span>)</span></span></code></pre></div> <h3>Como rodar e o que esperar:</h3> <ul><li>Copie e cole este c&oacute;digo em um arquivo (ex: meu_continue.py).</li> <li>Execute-o no terminal/prompt: python meu_continue.py</li> </ul><h3>Sa&iacute;da esperada:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Imprimindo apenas n&uacute;meros &iacute;mpares: --- Verificando o n&uacute;mero: 1 --- O n&uacute;mero 1 &eacute; &iacute;mpar. Processando... Processado: 2 --- Verificando o n&uacute;mero: 2 --- Ops! O n&uacute;mero 2 &eacute; par. Pulando esta itera&ccedil;&atilde;o com continue... --- Verificando o n&uacute;mero: 3 --- O n&uacute;mero 3 &eacute; &iacute;mpar. Processando... Processado: 6 --- Verificando o n&uacute;mero: 4 --- Ops! O n&uacute;mero 4 &eacute; par. Pulando esta itera&ccedil;&atilde;o com continue... --- Verificando o n&uacute;mero: 5 --- O n&uacute;mero 5 &eacute; &iacute;mpar. Processando... Processado: 10 --- Verificando o n&uacute;mero: 6 --- Ops! O n&uacute;mero 6 &eacute; par. Pulando esta itera&ccedil;&atilde;o com continue... --- Verificando o n&uacute;mero: 7 --- O n&uacute;mero 7 &eacute; &iacute;mpar. Processando... Processado: 14 --- Verificando o n&uacute;mero: 8 --- Ops! O n&uacute;mero 8 &eacute; par. Pulando esta itera&ccedil;&atilde;o com continue... --- Verificando o n&uacute;mero: 9 --- O n&uacute;mero 9 &eacute; &iacute;mpar. Processando... Processado: 18 --- Verificando o n&uacute;mero: 10 --- Ops! O n&uacute;mero 10 &eacute; par. Pulando esta itera&ccedil;&atilde;o com continue... Processamento de &iacute;mpares finalizado (fora do loop)." aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Imprimindo apenas n&uacute;meros &iacute;mpares</span><span>:</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>1</span><span> </span><span>--</span><span>-</span></span> <span><span>O n&uacute;mero </span><span>1</span><span> &eacute; &iacute;mpar</span><span>.</span><span> Processando...</span></span> <span><span>Processado</span><span>:</span><span> </span><span>2</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>2</span><span> </span><span>--</span><span>-</span></span> <span><span>Ops! O n&uacute;mero </span><span>2</span><span> &eacute; par</span><span>.</span><span> Pulando esta itera&ccedil;&atilde;o com </span><span>continue</span><span>...</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>3</span><span> </span><span>--</span><span>-</span></span> <span><span>O n&uacute;mero </span><span>3</span><span> &eacute; &iacute;mpar</span><span>.</span><span> Processando...</span></span> <span><span>Processado</span><span>:</span><span> </span><span>6</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>4</span><span> </span><span>--</span><span>-</span></span> <span><span>Ops! O n&uacute;mero </span><span>4</span><span> &eacute; par</span><span>.</span><span> Pulando esta itera&ccedil;&atilde;o com </span><span>continue</span><span>...</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>5</span><span> </span><span>--</span><span>-</span></span> <span><span>O n&uacute;mero </span><span>5</span><span> &eacute; &iacute;mpar</span><span>.</span><span> Processando...</span></span> <span><span>Processado</span><span>:</span><span> </span><span>10</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>6</span><span> </span><span>--</span><span>-</span></span> <span><span>Ops! O n&uacute;mero </span><span>6</span><span> &eacute; par</span><span>.</span><span> Pulando esta itera&ccedil;&atilde;o com </span><span>continue</span><span>...</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>7</span><span> </span><span>--</span><span>-</span></span> <span><span>O n&uacute;mero </span><span>7</span><span> &eacute; &iacute;mpar</span><span>.</span><span> Processando...</span></span> <span><span>Processado</span><span>:</span><span> </span><span>14</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>8</span><span> </span><span>--</span><span>-</span></span> <span><span>Ops! O n&uacute;mero </span><span>8</span><span> &eacute; par</span><span>.</span><span> Pulando esta itera&ccedil;&atilde;o com </span><span>continue</span><span>...</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>9</span><span> </span><span>--</span><span>-</span></span> <span><span>O n&uacute;mero </span><span>9</span><span> &eacute; &iacute;mpar</span><span>.</span><span> Processando...</span></span> <span><span>Processado</span><span>:</span><span> </span><span>18</span></span> <span></span> <span><span>--</span><span>-</span><span> Verificando o n&uacute;mero</span><span>:</span><span> </span><span>10</span><span> </span><span>--</span><span>-</span></span> <span><span>Ops! O n&uacute;mero </span><span>10</span><span> &eacute; par</span><span>.</span><span> Pulando esta itera&ccedil;&atilde;o com </span><span>continue</span><span>...</span></span> <span></span> <span><span>Processamento de &iacute;mpares </span><span>finalizado</span><span> </span><span>(</span><span>fora do loop</span><span>).</span></span></code></pre></div> <h3>Entendendo o que aconteceu:</h3> <p>O loop percorre cada n&uacute;mero. Quando o n&uacute;mero &eacute; par, a condi&ccedil;&atilde;o <code>numero % 2 == 0</code> &eacute; verdadeira. A mensagem &ldquo;Ops!&hellip;&rdquo; &eacute; impressa, e ent&atilde;o o continue &eacute; executado. Isso faz com que o Python ignore a linha <code>print(f"O n&uacute;mero {numero} &eacute; &iacute;mpar. Processando...") </code>e a linha <code>print(f"Processado: {numero * 2})</code> para aquele n&uacute;mero (o n&uacute;mero par). Ele &ldquo;pula&rdquo; o restante da itera&ccedil;&atilde;o e vai direto para o pr&oacute;ximo n&uacute;mero da lista. Quando o n&uacute;mero &eacute; &iacute;mpar, a condi&ccedil;&atilde;o <code>if numero % 2 == 0</code>: &eacute; falsa, o <code>continue</code> n&atilde;o &eacute; executado, e o c&oacute;digo de &ldquo;processamento&rdquo; &eacute; executado normalmente.Viu a diferen&ccedil;a? O <code>break</code> para tudo, o <code>continue</code> apenas pula a vez atual.</p> <h2>break vs. continue: Qual Usar Quando?</h2> <p>A diferen&ccedil;a &eacute; crucial e simples:</p> <ul><li><code>break</code>: <strong>PARA TUDO</strong>! Sai completamente do loop.</li> <li><code>continue</code>: <strong>PR&Oacute;XIMO</strong>! Pula o resto da itera&ccedil;&atilde;o atual e vai para a pr&oacute;xima.</li> </ul><p>Seu uso depende do que voc&ecirc; precisa fazer: parar ou pular.</p> <h2>Indo Al&eacute;m e Construindo Coisas Incr&iacute;veis com Python</h2> <p>Compreender como controlar o fluxo dos seus programas, seja com loops, if/else, break ou continue, &eacute; um passo GIGANTE na sua jornada Python. S&atilde;o esses fundamentos que te permitem construir l&oacute;gicas mais complexas e resolver problemas reais.Se voc&ecirc; est&aacute; gostando de desvendar esses segredos e quer ir al&eacute;m, construir projetos de verdade e solidificar sua base em Python de forma completa, desde os primeiros passos at&eacute; t&oacute;picos mais avan&ccedil;ados, eu tenho uma recomenda&ccedil;&atilde;o especial: o e-book <a href="https://go.hotmart.com/F13340196Y" target="_blank" rel="noopener" title="">Python de A-Z, guia de primeiros passos com a linguagem</a>. &Eacute; um material pensado para te acompanhar nessa jornada, cheio de exemplos e explica&ccedil;&otilde;es claras. Ele pode ser o seu mapa para dominar Python! <a href="https://go.hotmart.com/F13340196Y" target="_blank" rel="noopener" title="">Garanta seu exemplar e acelere seu aprendizado</a>! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f609.png" alt="&#128521;"></p> <h2>Reforce Seu Aprendizado!</h2> <p>Dominar loops &eacute; fundamental. Para complementar o que vimos aqui e aprofundar ainda mais seus conhecimentos sobre loops em Python, recomendo a leitura destes outros artigos no blog:</p> <ul><li><a href="https://blog.ffelix.eti.br/python-para-iniciantes-lacos-e-variaveis-descomplicados/" target="_blank" rel="noopener" title="">Python para Iniciantes: La&ccedil;os e Vari&aacute;veis Descomplicados</a></li> <li><a href="https://blog.ffelix.eti.br/dominando-loops-em-python-guia-completo/" target="_blank" rel="noopener" title="">Dominando Loops em Python: Guia Completo</a></li> </ul><p>Eles v&atilde;o te dar uma vis&atilde;o ainda mais robusta sobre o assunto!</p> <h2>Conclus&atilde;o (e um Pedido!)</h2> <p>A&iacute; est&atilde;o eles: <code>break</code> e <code>continue</code>! Ferramentas simples, mas poderos&iacute;ssimas para controlar o fluxo dos seus loops em Python. Lembre-se: <code>break</code> para tudo, <code>continue</code> pula uma volta. Pratique com os exemplos, modifique-os, teste seus pr&oacute;prios cen&aacute;rios. A pr&aacute;tica leva &agrave; perfei&ccedil;&atilde;o (e a menos bugs chatos!).</p> <p>Curtiu o artigo? Conseguiu rodar os exemplos? Tem alguma d&uacute;vida ou um jeito diferente de usar break ou continue? Deixe seu coment&aacute;rio abaixo! Sua intera&ccedil;&atilde;o &eacute; super importante pra gente!</p> <p>E j&aacute; que voc&ecirc; est&aacute; por aqui, que tal explorar outros artigos no blog? Temos conte&uacute;do fresquinho saindo do forno para te ajudar a se tornar um desenvolvedor Python incr&iacute;vel. Ah, e n&atilde;o se esque&ccedil;a de se inscrever na nossa newsletter para n&atilde;o perder nenhuma novidade!At&eacute; a pr&oacute;xima aventura Pyth&ocirc;nica! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/2728.png" alt="&#10024;"></p> <p></p><p>The post <a href="https://blog.ffelix.eti.br/break-e-continue-controle-de-fluxo-em-python/">Break e Continue: Controle de Fluxo em Python</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Fri, 16 May 2025 11:29:51 +0000 Aberto até de Madrugada: Copilot ganha activaçao por voz https://abertoatedemadrugada.com/2025/05/copilot-ganha-activacao-por-voz.html https://abertoatedemadrugada.com/2025/05/copilot-ganha-activacao-por-voz.html <div><a href="https://abertoatedemadrugada.com/2025/05/copilot-ganha-activacao-por-voz.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1cb3yW20qx7hfSLGLHw8nBvmKoRcSjhPj4WZ1yae7ZqR16beOgn226Kam_HVmG5vlWVXDAPV9jRCFQQhqMF_tkAlX8t5_F3GCnyg1jbPgiwXuggFg39BACgFGnWHg4LrkLTboHFvUJrMfuEqb8YMmv2m4o6Lgy1-0E6PPYn36AEXvc8-PfF1vENg1pvG5/s1600/copilot.jpg" width="600"></a></div> Os utilizadores Windows poder&atilde;o come&ccedil;ar a dar uso ao Copilot por interm&eacute;dio de activa&ccedil;&atilde;o por voz.<br><br><a name="more"></a> A Microsoft tornou mais f&aacute;cil falar com o Copilot no Windows 11 ao lan&ccedil;ar uma nova funcionalidade de ativa&ccedil;&atilde;o por voz. Agora, <a href="https://blogs.windows.com/windows-insider/2025/05/14/copilot-on-windows-hey-copilot-begins-rolling-out-to-windows-insiders/">basta dizer "Hey, Copilot"</a> para chamar o assistente de IA, sem precisar clicar em nada. Esta op&ccedil;&atilde;o m&atilde;os-livres, semelhante ao antigo "Hey, Cortana", est&aacute; dispon&iacute;vel para utilizadores do programa Windows Insider.<br><br> Por defeito, a funcionalidade est&aacute; desligada e tem de ser ativada manualmente nas defini&ccedil;&otilde;es do Copilot, na sec&ccedil;&atilde;o Modo de Voz. Ao ser ativado, aparece um microfone flutuante no ecr&atilde;, permitindo conversar diretamente com o Copilot. Quem preferir, pode usar o atalho ALT+Espa&ccedil;o durante dois segundos para o mesmo efeito.<br><br> A Microsoft garante que a privacidade dos utilizadores est&aacute; protegida, explicando que o computador apenas escuta o comando de ativa&ccedil;&atilde;o atrav&eacute;s de uma mem&oacute;ria tempor&aacute;ria de 10 segundos, que n&atilde;o &eacute; gravada nem enviada para a cloud. No entanto, ap&oacute;s o Copilot ser ativado, os comandos de voz s&atilde;o processados na cloud, mas sem serem armazenados, a n&atilde;o ser que o utilizador autorize partilhar dados para treinar o modelo de IA.<br><br> Por agora, a funcionalidade s&oacute; suporta ingl&ecirc;s e n&atilde;o funciona se o PC estiver desligado ou bloqueado. A Microsoft promete alargar o suporte a mais l&iacute;nguas em futuras atualiza&ccedil;&otilde;es.<br><br> Fri, 16 May 2025 11:00:00 +0000 Ricardo Saramago: Still Alive https://www.odrakir.com/blog/2025/05/16/still-alive/ https://www.odrakir.com/blog/2025/05/16/still-alive/ <p>It has been almost 10 years since I stopped blogging. </p> <p>With the focus changing from blogging to social media, I lost the attention span, the time and motivation I usually dedicated to this&hellip; also, I found that my opinions and posts became mostly a drop in an ocean of echoes.</p> <p>When I and others started the tech / geek blogging scene in Portugal, things were very different. There are still a few that resist like<a href="https://taoofmac.com/"> Rui</a>, <a href="http://celso.io/" data-type="link" data-id="celso.io">Celso</a>, <a href="http://macacos.com/" data-type="link" data-id="macacos.com">Pedro </a>and <a href="http://hugocardoso.com/blog">Hugo</a>, but I just hadn&rsquo;t the energy or the motivation necessary to keep blogging like they did.</p> <blockquote> <p><strong>Why this post now?</strong></p> </blockquote> <p>Well&hellip; for a sanity check. Because I felt the need to blog / write again. Not that I have much to say, of even that it might be of interest to the World, but in a time where most of the Internet is crap, violence or even AI generated, I felt like I needed to build my own &ldquo;oasis&rdquo;.</p> <p>What will I bring here? Old man rants about everything mostly. Kinda like that Family Guy sketch &ldquo;What grinds my gears&rdquo; stuff.</p> <p>Bare with me, I&rsquo;m close to 3 years of being 50.</p> Fri, 16 May 2025 09:58:37 +0000 Aberto até de Madrugada: Produtos da Semana https://abertoatedemadrugada.com/2025/05/produtos-da-semana16.html https://abertoatedemadrugada.com/2025/05/produtos-da-semana16.html <i>A nossa rubrica de <a href="http://abertoatedemadrugada.com/search/label/Produtos%20da%20Semana">Produtos da Semana</a> agrupa uma lista de produtos e not&iacute;cias que vamos compilando ao longo da semana e que achamos que ser&aacute; do interesse geral.</i><br><br><h3>Philips Evnia 25M2N5200U: O monitor de esports para jogadores competitivos</h3> <div><a href="https://abertoatedemadrugada.com/2025/05/produtos-da-semana16.html"><img alt="" border="0" data-original-height="1080" data-original-width="1080" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEindJD0Bjos-P8wORoHqfxsP7_3pAK1UIq8BKhTvUto1XOGG9Rm0TJ1PCn0k4HVmsJj-UlN_05CPxU4yN6ve5v_DNzqktmc0nzn6owaXIdjEJKCqJKbytCzzvarZjmkup_xIMr0UEdhW55krAhjSsWtmamUDd-UllAODuIm9mA9GQuCUXrVk_USgeNHqqQE/s1600/IMG%201%20-%2025M2N5200U.jpg" width="400"></a></div> <a name="more"></a> O Philips Evnia 25M2N5200U est&aacute; apetrechado com funcionalidades projetadas para proporcionar aos jogadores de esports uma experi&ecirc;ncia consistentemente impressionante. <br><br> Para come&ccedil;ar, &eacute; extremamente veloz. Com uma taxa de atualiza&ccedil;&atilde;o de 390Hz overclokable, input lag reduzido e tempo de resposta de 0,3 ms Smart MBR, a jogabilidade &eacute; n&iacute;tida, certeira e intensa. Sem borr&otilde;es, efeito fantasma ou atrasos na imagem. Com uma jogabilidade t&atilde;o flu&iacute;da, os utilizadores v&atilde;o jurar que atravessaram o ecr&atilde;. Al&eacute;m disso, &eacute; um aut&ecirc;ntico festim visual. A resolu&ccedil;&atilde;o full HD FastIPS 1920 x 1080 deste monitor &eacute; aumentada por funcionalidades gr&aacute;ficas de ponta. O DisplayHDR 400 com certifica&ccedil;&atilde;o VESA oferece a profundidade e defini&ccedil;&atilde;o necess&aacute;rias para imagens convincentemente realistas, enquanto o SmartContrast fluida e automaticamente ajusta as cores e retroilumina&ccedil;&atilde;o para melhorar o contraste. Para proporcionar aos jogadores uma vantagem sobre os seus advers&aacute;rios em ambientes escuros, onde a perce&ccedil;&atilde;o visual pode ser condicionada pela sombra, o Stark ShadomBoost oferece tr&ecirc;s n&iacute;vel com satura&ccedil;&atilde;o de cor melhorada e elevado contraste, conseguindo o equil&iacute;brio perfeito entre luz e escurid&atilde;o. Para assegurar conectividade completa com todos os perif&eacute;ricos e uma atualiza&ccedil;&atilde;o f&aacute;cil da configura&ccedil;&atilde;o de gaming, este modelo integra 2 portas HDMI 2.0, 1 DisplayPort 1.4, hub USB e sa&iacute;da para auscultadores, cobrindo a maioria das necessidades dos jogadores. <br><br> Finalmente, o Philips Evnia 25M2N5200U oferece aos jogadores mais exigentes um conjunto de funcionalidades destinadas a aumentar o desempenho para que tirem mais partido de cada sess&atilde;o de jogo. O modo SmartImage Game oferece acesso um OSD de acesso r&aacute;pido com m&uacute;ltiplas op&ccedil;&otilde;es projetadas especificamente para oferecer aos jogadores mais controlo sobre a sua experi&ecirc;ncia. Estas incluem os modos First Person Shooting, Racing, Real Time Strategy, entre outros. O Smart Crosshair melhora a precis&atilde;o em jogos de a&ccedil;&atilde;o na primeira pessoa, proporcionando aos utilizadores uma vantagem enquanto procuram e atingem os inimigos. O modo LowBlue e tecnologia Flicker-free reduz o esfor&ccedil;o e cansa&ccedil;o para os olhos, oferecendo aos jogadores maior conforto e paz de esp&iacute;rito. Por fim, um stand ajust&aacute;vel permite aos utilizadores rodar, inclinar e ajustar o monitor &agrave; posi&ccedil;&atilde;o ideal, tornando cada sess&atilde;o de jogo o mais confort&aacute;vel e envolvente poss&iacute;vel. <br><br> O Philips Evnia 25M2N5200U estar&aacute; dispon&iacute;vel a partir de meados de maio com um pre&ccedil;o recomendado pelo fabricante de 379 euros. <br><br><br><h3> Hama MOB.BT - Som potente e sem fios para quem procura qualidade premium em movimento</h3> <div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyIOyLme_0mtDO7hssOSJfBORXmK8MryQ4To6k0ZXmolK4fJHsIy3BRPuqs7vxlMSis0FmCKZwpmd37FPF9CPOA6sY6iIgx-mvtD1MWGcD_xr7_XMQYx7ORoRiGqYpUrM-9bnnTdOmXTF1uAHsvGuT_pbiKtCxSbS3rrmTjt90IQVxCsUqSx_z1rjYs1n7/s1000/00188232awd3.jpg"><img alt="" border="0" data-original-height="1000" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyIOyLme_0mtDO7hssOSJfBORXmK8MryQ4To6k0ZXmolK4fJHsIy3BRPuqs7vxlMSis0FmCKZwpmd37FPF9CPOA6sY6iIgx-mvtD1MWGcD_xr7_XMQYx7ORoRiGqYpUrM-9bnnTdOmXTF1uAHsvGuT_pbiKtCxSbS3rrmTjt90IQVxCsUqSx_z1rjYs1n7/s400/00188232awd3.jpg" width="400"></a></div> <br> A Hama acaba de lan&ccedil;ar em Portugal a sua nova coluna port&aacute;til sem fios da s&eacute;rie MOB.BT, criada para os utilizadores que procuram um modelo f&aacute;cil de transportar e capacidades de utiliza&ccedil;&atilde;o "todo-o-terreno", sem descurar um som de qualidade "premium". <br><br> A parceria com a Canton trouxe &agrave; nova Hama MOB.BT Ultimate Pro as melhorias mais recentes introduzidas no hardware para reprodu&ccedil;&atilde;o de som de classe profissional. O modelo conta com um potente amplificador de 120 Watt, enquanto o altifalante Bluetooth est&aacute; equipado com um sistema bidirecional de alta-fidelidade programado para reproduzir os sons agudos e m&eacute;dios, que se junta a dois radiadores passivos adicionais, que ajudam a refor&ccedil;ar os sons mais graves. O modelo integra um equalizador com tr&ecirc;s efeitos sonoros distintos &ndash; Bass Sound, Power Sound e Balanced Sound &ndash; que oferecem uma experi&ecirc;ncia auditiva perfeita em qualquer cen&aacute;rio, ambiente e localiza&ccedil;&atilde;o, seja numa festa dentro de quatro paredes, numa praia ou no jardim, tudo &agrave; dist&acirc;ncia de um simples bot&atilde;o. Nos casos em que os utilizadores procuram um som est&eacute;reo ainda mais envolvente e poderoso, a fun&ccedil;&atilde;o True-Wireless-Stereo (TWS) permite ligar duas ou mais MOB.BT Ultimate Pro atrav&eacute;s de Bluetooth, transformando o som numa verdadeira experi&ecirc;ncia estereof&oacute;nica. <br><br> A nova coluna MOB.BT Ultimate Pro da Hama destaca-se tamb&eacute;m pela grande versatilidade que oferece aos utilizadores ao n&iacute;vel dos dispositivos poss&iacute;veis de ligar. Al&eacute;m da liga&ccedil;&atilde;o Bluetooth est&atilde;o dispon&iacute;veis uma porta USB-C com fun&ccedil;&atilde;o Power Pack, para carregamento de outros dispositivos (smartphones, tablets, etc.), porta USB-A e entradas AUX atrav&eacute;s de tomadas do tipo "jack" (6,3 mm) e mini-jack (3,5 mm). Alem de m&uacute;sica por Bluetooth, isto significa que a MOB.BT Ultimate Pro pode tamb&eacute;m funcionar como sistema de karaoke, atrav&eacute;s da liga&ccedil;&atilde;o de um microfone, como amplificador para guitarra el&eacute;trica, ou como sistema de som que reproduz m&uacute;sica a partir de um disco USB externo. <br><br> A bateria recarreg&aacute;vel que acompanha a nova coluna port&aacute;til da Hama faz tamb&eacute;m jus ao som e &agrave;s funcionalidades premium deste modelo: os utilizadores podem desfrutar das suas m&uacute;sicas preferidas por Bluetooth durante at&eacute; 24 horas, mais do que suficientes para momentos de dan&ccedil;a e de divers&atilde;o "non-stop". Al&eacute;m disso, a certifica&ccedil;&atilde;o de acordo com a norma IPX6 torna a MOB.BT Ultimate Pro numa solu&ccedil;&atilde;o port&aacute;til e robusta em diferentes condi&ccedil;&otilde;es atmosf&eacute;ricas, mantendo o seu altifalante protegido contra chuva, jatos e salpicos de &aacute;gua. Por fim, com a App "Hama Smart Home" &eacute; poss&iacute;vel controlar confortavelmente as funcionalidades da coluna de som, incluindo a personaliza&ccedil;&atilde;o das defini&ccedil;&otilde;es do equalizador, a altera&ccedil;&atilde;o do nome ou simplesmente verificar o n&iacute;vel da carga da bateria em percentagem. Como empresa h&aacute; muito apostada na preserva&ccedil;&atilde;o respons&aacute;vel do ambiente, a embalagem destas Hama MOB.BT Ultimate Pro &eacute; 100% isenta de pl&aacute;stico e todo o papel, cart&atilde;o e papel&atilde;o usados s&atilde;o provenientes de pr&aacute;ticas sustent&aacute;veis de gest&atilde;o florestal, com Certifica&ccedil;&atilde;o FSC. <br><br> Em Portugal, a Hama MOB.BT Ultimate Pro tem um pre&ccedil;o de venda recomendado de 249 euros. <br><br><br><h3>LG lan&ccedil;a QNED EVO 2025</h3> <div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD20FcoMeefpYqpU8DDlQ3NOkFnPuMq9T2zyaAGwi1UOoMCSVJEWHTrQPRtgBjifPcRPXwdaa8bqFBp6rXi0uJcRSaUoyGjZjyPIJqajP2H-hLs9yG82V80CBYH9wS2pXVMTrEwJueGVf91J6OVodUfJzG-EBU8WcatxXOef4dPjw4kgvlbh2bhJYvqJQw/s900/LG%20-%20QNED%20evo%202025%20%282%29.jpg"><img alt="" border="0" data-original-height="593" data-original-width="900" height="421" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD20FcoMeefpYqpU8DDlQ3NOkFnPuMq9T2zyaAGwi1UOoMCSVJEWHTrQPRtgBjifPcRPXwdaa8bqFBp6rXi0uJcRSaUoyGjZjyPIJqajP2H-hLs9yG82V80CBYH9wS2pXVMTrEwJueGVf91J6OVodUfJzG-EBU8WcatxXOef4dPjw4kgvlbh2bhJYvqJQw/w640-h421/LG%20-%20QNED%20evo%202025%20(2).jpg" width="640"></a></div> <br> A LG Electronics Inc. est&aacute; a lan&ccedil;ar a sua linha QNED evo 2025, refor&ccedil;ando a sua presen&ccedil;a no segmento de TV LCD premium. Marcando um salto significativo para as TVs LCD, as novas TVs QNED evo herdam o valor diferenciado do LG OLED, juntamente com v&aacute;rias solu&ccedil;&otilde;es de cores, tecnologia Mini LED, o mais recente processador &alpha; (Alpha) AI, desempenho de jogos de primeira linha e a vers&aacute;til e premiada plataforma webOS. <br><br> Certificadas pela Intertek por atingirem 100% de volume de cor, estas TVs de vanguarda reproduzem cores ricas e reais em ambientes claros e escuros. Com a solu&ccedil;&atilde;o Dynamic QNED Color patenteada pela empresa, que substitui a tecnologia de pontos qu&acirc;nticos, os espectadores podem esperar profundidade, nitidez e precis&atilde;o excecionais, independentemente das condi&ccedil;&otilde;es de ilumina&ccedil;&atilde;o. Com a tecnologia Mini LED alimentada pelo processador Alpha AI, os modelos QNED evo apresentam um controlo de luz refinado, melhorando o contraste e a precis&atilde;o das imagens para garantir pretos mais profundos, realces mais brilhantes e uma qualidade de imagem equilibrada. Os algoritmos avan&ccedil;ados de IA controlam eficazmente cada zona para proporcionar um desempenho superior, para al&eacute;m dos visuais envolventes do Mini LED. Para melhorar ainda mais a qualidade de imagem e som, o AI Picture Pro da LG otimiza o detalhe, a profundidade e a precis&atilde;o, afinando cada cena com um processamento sofisticado para obter a qualidade de imagem mais refinada em todos os conte&uacute;dos. <br><br> O AI Object Enhancer identifica e melhora rostos, corpos e elementos-chave de cada cena para um maior detalhe e naturalismo. O Dynamic Tone Mapping Pro divide cada cena em blocos e afina o brilho e o contraste, criando imagens mais vivas e realistas. Complementando estas melhorias, o AI Sound Pro mergulha os espectadores em som surround 9.1.2 virtual, enriquecendo a profundidade e a clareza espacial atrav&eacute;s das colunas incorporadas no televisor. A linha tamb&eacute;m apresenta funcionalidades altamente personalizadas, gra&ccedil;as &agrave; tecnologia de Intelig&ecirc;ncia Artificial que consegue compreender as prefer&ecirc;ncias &aacute;udio e visuais &uacute;nicas de cada utilizador. Analisando mais de 1,6 mil milh&otilde;es de defini&ccedil;&otilde;es de imagem e 40 milh&otilde;es de perfis de som, o AI Picture/Sound Wizard leva a personaliza&ccedil;&atilde;o a um novo n&iacute;vel, recomendando modos &aacute;udio e visuais adaptados para cada utilizador. <br><br> Para maior comodidade, a LG introduz um bot&atilde;o de IA no Comando M&aacute;gico de IA, proporcionando um reconhecimento de voz intuitivo e uma navega&ccedil;&atilde;o sem esfor&ccedil;o. A fun&ccedil;&atilde;o de ponteiro do telecomando funciona como um rato de computador, permitindo aos utilizadores explorar facilmente o conte&uacute;do e ajustar os modos de visualiza&ccedil;&atilde;o. Um conjunto de funcionalidades alimentadas por IA cria uma experi&ecirc;ncia de entretenimento profundamente personalizada. O AI Voice ID reconhece vozes individuais para mudar de perfil e recomendar conte&uacute;dos personalizados. O LG AI Concierge analisa o hist&oacute;rico de visualiza&ccedil;&otilde;es e os h&aacute;bitos do utilizador para fornecer sugest&otilde;es de conte&uacute;do e recomenda&ccedil;&otilde;es de palavras-chave, enquanto a Pesquisa de IA &ndash; alimentada por um Modelo de Linguagem Ampla &ndash; compreende o contexto de conversa&ccedil;&atilde;o e a inten&ccedil;&atilde;o do utilizador para uma descoberta de conte&uacute;do mais intuitiva. A integra&ccedil;&atilde;o do Microsoft Copilot simplifica ainda mais o processo, ajudando os utilizadores a encontrar e organizar informa&ccedil;&otilde;es complexas de forma eficiente, e o AI Chatbot identifica potenciais desafios do utilizador e oferece solu&ccedil;&otilde;es atempadas e eficazes. Os modelos QNED evo 2025 elevam a experi&ecirc;ncia do utilizador atrav&eacute;s destas funcionalidades avan&ccedil;adas de IA e da premiada plataforma de smart TV webOS 25. Equipado com o novo processador Alpha AI, o webOS 25 oferece maior personaliza&ccedil;&atilde;o e conveni&ecirc;ncia. Estendendo os benef&iacute;cios para al&eacute;m da compra inicial, os propriet&aacute;rios de televis&otilde;es com webOS da LG podem desfrutar da experi&ecirc;ncia de smart TV mais atualizada durante cinco anos. <br><br> Os novos modelos QNED evo tamb&eacute;m podem funcionar como hubs centrais de casa inteligente. O Home Hub oferece conetividade multiplataforma atrav&eacute;s da integra&ccedil;&atilde;o do LG ThinQ e do Google Home, permitindo aos utilizadores gerir os seus dispositivos dom&eacute;sticos inteligentes atrav&eacute;s de uma interface &uacute;nica e intuitiva. O suporte para Apple AirPlay e Google Cast melhora a compatibilidade m&oacute;vel, permitindo a partilha perfeita de conte&uacute;dos de dispositivos pessoais para o grande ecr&atilde;. Os gamers v&atilde;o poder apreciar as poderosas capacidades de jogo dos televisores QNED evo, incluindo movimentos fluidos, imagens vivas e controlos f&aacute;ceis no jogo. Como hub central de jogos, o LG Gaming Portal serve como uma forma f&aacute;cil para os jogadores descobrirem novos t&iacute;tulos e desfrutarem dos que j&aacute; adoram. Atrav&eacute;s de parcerias com os principais servi&ccedil;os de jogos na nuvem, juntamente com muitos jogos nativos da aplica&ccedil;&atilde;o webOS, a LG oferece uma vasta sele&ccedil;&atilde;o de jogos de v&aacute;rios g&eacute;neros, permitindo aos utilizadores jogar instantaneamente sem a necessidade de consolas de jogos ou downloads. Suportando 4K 144Hz com AMD FreeSync Premium, estas TVs aumentam a fluidez e a nitidez dos movimentos que acompanham cada movimento sem trepida&ccedil;&atilde;o ou solu&ccedil;os visuais. A destacar a linha de produtos est&aacute; a QNED9M, a primeira TV QNED da LG que pode transmitir &aacute;udio e v&iacute;deo sem fios atrav&eacute;s da tecnologia True Wireless. Esta inova&ccedil;&atilde;o, inicialmente exclusiva da s&eacute;rie LG OLED evo M, estende-se agora &agrave; QNED, dando a mais clientes a capacidade de desfrutar de conte&uacute;do 4K de alta defini&ccedil;&atilde;o sem fios, sem perda de qualidade de imagem ou atraso. Ao ligar-se &agrave; Zero Connect Box, o QNED9M pode transmitir &aacute;udio e v&iacute;deo sem fios a at&eacute; 144 Hz, sem lat&ecirc;ncia ou perda de qualidade de imagem e som, ao mesmo tempo que cumpre os crit&eacute;rios de uma experi&ecirc;ncia AMD FreeSync Premium. Al&eacute;m disso, a Zero Connect Box elimina a necessidade de consolas de jogos e set-top boxes &agrave; volta do ecr&atilde;, resultando numa configura&ccedil;&atilde;o elegante e sem confus&atilde;o. <br><br> Dispon&iacute;veis em tamanhos que variam entre as 50 e as 100 polegadas, os modelos 2025 QNED evo satisfazem as diversas necessidades dos consumidores atuais. &Agrave; medida que a procura de ecr&atilde;s ultragrandes continua a aumentar, a nova QNED TV de 100 polegadas da LG proporciona uma experi&ecirc;ncia de qualidade cinematogr&aacute;fica, trazendo para casa imagens imersivas e semelhantes &agrave;s do cinema. A linha de TVs QNED evo 2025 da LG estar&aacute; dispon&iacute;vel a partir de maio na Coreia, nos Estados Unidos e em pa&iacute;ses europeus, com outros mercados a seguirem-se ao longo do ano. <br><br><br><h3>SPC lan&ccedil;a o tablet GRAVITY PRO</h3> <br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn1wmTKwhDSSQRZoA87CmfBBNGL8ErSuoifdUYEc3NsNvNX59URbDR7Dldnvag7PWoNBJ3gArtFU5MoNZKoPOVTbHr-rLD_ltsHbQTo9SXlS60TwyB1BMIgy8Wn-E-UWqWSKj9O1rWE1p574fVBZHooPvKrJsVTgWxPYupFpLiFQvHbCi84ZbKQKbj2hMn/s653/unnamed.jpg"><img alt="" border="0" data-original-height="574" data-original-width="653" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn1wmTKwhDSSQRZoA87CmfBBNGL8ErSuoifdUYEc3NsNvNX59URbDR7Dldnvag7PWoNBJ3gArtFU5MoNZKoPOVTbHr-rLD_ltsHbQTo9SXlS60TwyB1BMIgy8Wn-E-UWqWSKj9O1rWE1p574fVBZHooPvKrJsVTgWxPYupFpLiFQvHbCi84ZbKQKbj2hMn/s400/unnamed.jpg" width="400"></a></div> <br> A SPC, empresa tecnol&oacute;gica europeia especializada no desenvolvimento de produtos de eletr&oacute;nica de consumo apresenta o novo GRAVITY PRO, o primeiro tablet da marca com tecnologia Matte View Display, que cuida da sa&uacute;de dos nossos olhos, reduzindo o encandeamento e oferecendo uma experi&ecirc;ncia visual suave e confort&aacute;vel, adaptando-se constantemente a todas as condi&ccedil;&otilde;es de luminosidade, tanto no exterior como no interior. <br><br> Quer esteja em casa, no escrit&oacute;rio ou ao ar livre, o Matte View Display reduz o brilho da luz no ecr&atilde; para que possa ler, trabalhar ou ver s&eacute;ries com total nitidez. A tecnologia IPS Incell e resolu&ccedil;&atilde;o Full HD nas vers&otilde;es de 11" e 12" garante um &acirc;ngulo de visualiza&ccedil;&atilde;o ideal, perfeito para longas sess&otilde;es frente ao ecr&atilde; sem desconforto visual. Quantas vezes j&aacute; tentou utilizar um tablet &agrave; luz do sol ou num ambiente com muita ilumina&ccedil;&atilde;o e acabou por ver mais reflexos do que o pr&oacute;prio conte&uacute;do no ecr&atilde;? Com o novo GRAVITY PRO, isso n&atilde;o acontece. O novo ecr&atilde; integra um tratamento Anti-Glare (AG), uma tecnologia que transforma a superf&iacute;cie original do ecr&atilde; &mdash; naturalmente brilhante e reflexiva &mdash; numa superf&iacute;cie mate com reflex&atilde;o difusa. Isto significa que, em vez de refletir diretamente a luz para os seus olhos, o ecr&atilde; dispersa essa luz em diferentes dire&ccedil;&otilde;es, reduzindo significativamente o encandeamento. O resultado? Uma visualiza&ccedil;&atilde;o mais clara e confort&aacute;vel, mesmo em ambientes com muita luz, e uma prote&ccedil;&atilde;o extra para os teus olhos durante longos per&iacute;odos de utiliza&ccedil;&atilde;o. Al&eacute;m de melhorar a experi&ecirc;ncia visual, o novo tratamento do ecr&atilde; do novo GRAVITY PRO tamb&eacute;m traz benef&iacute;cios t&aacute;teis. A textura ligeiramente microestruturada, conseguida atrav&eacute;s de tecnologia de precis&atilde;o a n&iacute;vel nanom&eacute;trico, oferece uma sensa&ccedil;&atilde;o ao toque mais suave e controlada. Navegar, trabalhar ou ver filmes no tablet torna-se uma experi&ecirc;ncia mais agrad&aacute;vel, natural e precisa &mdash; como se estivesse a deslizar os dedos sobre papel. <br><br> Equipado com processador Octa Core Unisoc T606 e 6 GB de RAM, o SPC GRAVITY PRO permite alternar entre aplica&ccedil;&otilde;es, navegar, ver v&iacute;deos ou editar documentos sem interrup&ccedil;&otilde;es. O desempenho fluido adapta-se &agrave;s exig&ecirc;ncias do teletrabalho, estudo e entretenimento, acompanhando o ritmo do utilizador durante todo o dia. Com 256 GB de armazenamento interno e possibilidade de expans&atilde;o at&eacute; 512 GB mais via microSD, este tablet oferece espa&ccedil;o suficiente para guardar v&iacute;deos, fotografias, documentos, aplica&ccedil;&otilde;es e jogos, ou seja, tudo acess&iacute;vel mesmo sem liga&ccedil;&atilde;o &agrave; internet. A sua conectividade 4G com Dual SIM permite usar dois n&uacute;meros diferentes num s&oacute; dispositivo &mdash; ideal para gerir a vida pessoal e profissional. Com Wi-Fi 5, mant&eacute;m uma liga&ccedil;&atilde;o r&aacute;pida e est&aacute;vel em qualquer ambiente. De salientar, que a sua bateria de 6.000 mAh (11") ou 8.000 mAh (12") oferece at&eacute; 10 e 12,5 horas de utiliza&ccedil;&atilde;o em reprodu&ccedil;&atilde;o cont&iacute;nua, respetivamente. Quando for necess&aacute;rio recarregar, o sistema de carga r&aacute;pida a 18W via USB-C permite recuperar 100% da bateria em apenas 90 minutos. Conta ainda com fun&ccedil;&atilde;o de carga inversa, ideal para alimentar outros dispositivos em caso de emerg&ecirc;ncia. <br><br> Com c&acirc;mara traseira de 13 Mpx para fotos n&iacute;tidas e v&iacute;deos em Full HD, e c&acirc;mara frontal de 8 Mpx, o GRAVITY PRO &eacute; ideal para videochamadas, aulas online, conefence calls ou partilhas nas redes sociais com qualidade garantida. Mas o seu design, n&atilde;o fica atr&aacute;s. O seu corpo met&aacute;lico em cor Lunar Mist confere-lhe um visual sofisticado, resistente e moderno &mdash; &agrave; altura de qualquer contexto profissional ou pessoal. O SPC GRAVITY PRO estar&aacute; dispon&iacute;vel a partir de 13 de maio, por 229,90&#8239;euros (vers&atilde;o 11") e por 249,90&#8239;euros (vers&atilde;o 12"). <br><br><br> Fri, 16 May 2025 08:00:00 +0000 Aberto até de Madrugada: MS corrige problema de dual-boot com Linux nos PCs com Windows https://abertoatedemadrugada.com/2025/05/ms-corrige-problema-de-dual-boot-com.html https://abertoatedemadrugada.com/2025/05/ms-corrige-problema-de-dual-boot-com.html <div><a href="https://abertoatedemadrugada.com/2025/05/ms-corrige-problema-de-dual-boot-com.html"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSYPU3i1FrhyGBCJqpUbUmqKN5ooGqV7uxt6yKQXeHSkIndpLpY-BgHQpha8fhjhL3RW2DgPmA-AVst_8yDlOE-39wX7GR_lw1bIct4TdcksCjNnhNzSvXhsb1_cPM00sjbuaaDvWXQ3FvD7D71gR6eiJL4QjX5FvJfvneb1fgPvVXBDvyv_k3hVnhN7h9/s1600/linuxboot.jpg" width="600"></a></div> Demorou, mas a MS corrigiu o erro que encravava o arranque de Linux em dual boot em m&aacute;quinas Windows.<br><br><a name="more"></a> A Microsoft resolveu finalmente um problema antigo que <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-fixes-linux-boot-issues-on-dual-boot-windows-systems/">impedia o arranque do Linux em PCs com dual boot</a> e Secure Boot ativo. A falha surgiu ap&oacute;s a atualiza&ccedil;&atilde;o de seguran&ccedil;a do Windows em agosto de 2024 e afetou sistemas com Windows e v&aacute;rias distribui&ccedil;&otilde;es Linux, como Ubuntu, Mint e outras. A origem estava numa atualiza&ccedil;&atilde;o ao SBAT do Secure Boot, que bloqueava incorretamente os bootloaders ao tentar corrigir uma falha no GRUB2.<br><br> Apesar de a Microsoft ter garantido que sistemas em dual boot n&atilde;o receberiam a atualiza&ccedil;&atilde;o, muitos utilizadores com m&eacute;todos personalizados acabaram por ser afetados. Isto resultou em erros como "SBAT self-check failed" e impossibilidade de arrancar o Linux. A empresa forneceu uma solu&ccedil;&atilde;o tempor&aacute;ria em agosto de 2024, mas n&atilde;o resolveu totalmente o problema.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixUSZaOPoYKYOUl9gNDSbQ4wk-oKKfsZBWd_zdO7PMg8XlTe3JxBv8GD2DBScgPXJGzYUzWOxEaOtMXXUBfPFfu5TMdvBswZ1l6-N2EXFlzUYnRvAfP9CUINVJcgekl5i6Wlk-ZCsAc55Z8cCgwpAimrhDU9MltYM3XdbdWVErUGeskhSCtecweizNN_Mi/s1024/linuxfail.jpg"><img alt="" border="0" data-original-height="181" data-original-width="1024" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixUSZaOPoYKYOUl9gNDSbQ4wk-oKKfsZBWd_zdO7PMg8XlTe3JxBv8GD2DBScgPXJGzYUzWOxEaOtMXXUBfPFfu5TMdvBswZ1l6-N2EXFlzUYnRvAfP9CUINVJcgekl5i6Wlk-ZCsAc55Z8cCgwpAimrhDU9MltYM3XdbdWVErUGeskhSCtecweizNN_Mi/s600/linuxfail.jpg" width="600"></a></div> Agora, nove meses depois, a Microsoft lan&ccedil;ou uma corre&ccedil;&atilde;o definitiva nas atualiza&ccedil;&otilde;es de seguran&ccedil;a de maio de 2025. Recomenda-se a todos os utilizadores afetados que instalem as atualiza&ccedil;&otilde;es mais recentes do Windows, que corrigem finalmente o comportamento errado do SBAT e deixam de bloquear os bootloaders do Linux.<br><br> A par da corre&ccedil;&atilde;o, a Microsoft j&aacute; tinha deixado de aplicar automaticamente a atualiza&ccedil;&atilde;o problem&aacute;tica em setembro de 2024 e ofereceu um comando no registo do Windows para quem quiser bloquear futuras atualiza&ccedil;&otilde;es SBAT manualmente. Segundo a empresa, as atualiza&ccedil;&otilde;es desde setembro de 2024 j&aacute; n&atilde;o incluem as defini&ccedil;&otilde;es que causaram o problema.<br><br> Thu, 15 May 2025 20:00:00 +0000 Alexsandro Felix: Tratamento de Erros de Input em Python: Dicas Práticas https://blog.ffelix.eti.br/tratamento-de-erros-de-input-em-python-dicas-praticas/ https://blog.ffelix.eti.br/tratamento-de-erros-de-input-em-python-dicas-praticas/ <p>Ol&aacute;, futuro mestre do Python! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f40d.png" alt="&#128013;"> Se voc&ecirc; est&aacute; aqui, provavelmente j&aacute; se deparou com aquela mensagem de erro assustadora ao tentar coletar dados de um usu&aacute;rio no Python. Talvez o programa esperasse um n&uacute;mero e o usu&aacute;rio digitou &ldquo;banana&rdquo;. Ou quem sabe ele apertou Enter sem querer, e o Python jogou um <code>ValueError</code> na sua cara. N&atilde;o se preocupe! Neste artigo, vamos mergulhar no mundo dos erros na entrada de dados em Python, entender por que eles acontecem e, o mais importante, como evit&aacute;-los com exemplos pr&aacute;ticos que voc&ecirc; pode testar agora mesmo. Vamos aprender juntos, com um toque de humor e muitos c&oacute;digos para voc&ecirc; brincar!</p> <p>A prop&oacute;sito, manter este blog exige caf&eacute;, tempo e um pouco de dinheiro. As propagandas que voc&ecirc; v&ecirc; por aqui ajudam a cobrir os custos, j&aacute; que eu n&atilde;o ganho nada diretamente por escrever esses artigos. Se voc&ecirc; gosta do conte&uacute;do, considere adquirir os livros de Python que recomendo na Amazon atrav&eacute;s dos meus links de <a href="https://amzn.to/3yNBMn6" target="_blank" rel="noopener" title="">afiliado</a> ou confira os cursos que anuncio no blog. Quem sabe, se a receptividade for boa, eu me anime a escrever um livro sobre Python no futuro! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f604.png" alt="&#128516;"> Agora, vamos ao que interessa.</p> <h2>Por que os erros na entrada de dados acontecem?</h2> <p>Quando voc&ecirc; usa a fun&ccedil;&atilde;o <code>input()</code> em Python, est&aacute; pedindo ao usu&aacute;rio para digitar algo. O problema &eacute; que os usu&aacute;rios (incluindo voc&ecirc; e eu) s&atilde;o imprevis&iacute;veis. Eles podem digitar letras onde voc&ecirc; esperava n&uacute;meros, deixar o campo em branco ou at&eacute; tentar trollar o programa com emojis. <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f61c.png" alt="&#128540;"> O Python, sendo bem exigente, n&atilde;o lida bem com essas surpresas e pode lan&ccedil;ar erros como:</p> <ul><li><strong>ValueError</strong>: Quando o usu&aacute;rio digita algo que n&atilde;o pode ser convertido para o tipo esperado (ex.: tentar converter &ldquo;abc&rdquo; para int).</li> <li><strong>KeyboardInterrupt</strong>: Quando o usu&aacute;rio interrompe o programa (Ctrl+C).</li> <li><strong>EOFError</strong>: Quando o usu&aacute;rio tenta encerrar a entrada (Ctrl+D ou Ctrl+Z, dependendo do sistema).</li> <li><strong>TypeError</strong>: Quando voc&ecirc; tenta usar o dado de forma inadequada.</li> </ul><p>Nosso objetivo &eacute; criar programas que sejam <strong>robustos</strong> e lidem com essas situa&ccedil;&otilde;es sem quebrar. Vamos ver como fazer isso com exemplos pr&aacute;ticos.</p> <h2>Exemplo 1: Capturando um n&uacute;mero inteiro</h2> <p>Imagine que voc&ecirc; est&aacute; criando um programa que calcula a idade de uma pessoa daqui a 10 anos. Voc&ecirc; precisa que o usu&aacute;rio digite a idade atual, que deve ser um n&uacute;mero inteiro. Aqui est&aacute; um c&oacute;digo inicial (e ing&ecirc;nuo):</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;idade = int(input("Digite sua idade: ")) idade_futura = idade + 10 print(f"Daqui a 10 anos, voc&ecirc; ter&aacute; {idade_futura} anos!")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>idade </span><span>=</span><span> </span><span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Digite sua idade: </span><span>"</span><span>))</span></span> <span><span>idade_futura </span><span>=</span><span> idade </span><span>+</span><span> </span><span>10</span></span> <span><span>print</span><span>(</span><span>f</span><span>"Daqui a 10 anos, voc&ecirc; ter&aacute; </span><span>{</span><span>idade_futura</span><span>}</span><span> anos!"</span><span>)</span></span></code></pre></div> <p>Teste esse c&oacute;digo. Se o usu&aacute;rio digitar 25, ele ver&aacute;:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Digite sua idade: 25 Daqui a 10 anos, voc&ecirc; ter&aacute; 35 anos!" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Digite sua idade</span><span>:</span><span> </span><span>25</span></span> <span><span>Daqui a </span><span>10</span><span> anos</span><span>,</span><span> voc&ecirc; ter&aacute; </span><span>35</span><span> anos!</span></span></code></pre></div> <p>Perfeito, n&eacute;? Mas e se o usu&aacute;rio digitar <em>vinte e cinco </em>ou simplesmente apertar Enter? O Python vai jogar um <code>ValueError</code> na sua cara. Vamos melhorar esse c&oacute;digo usando tratamento de exce&ccedil;&otilde;es com <code>try</code> e <code>except</code>:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;while True: try: idade = int(input("Digite sua idade: ")) idade_futura = idade + 10 print(f"Daqui a 10 anos, voc&ecirc; ter&aacute; {idade_futura} anos!") break # Sai do loop se tudo der certo except ValueError: print("Ops! Por favor, digite um n&uacute;mero inteiro v&aacute;lido.")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>while</span><span> </span><span>True</span><span>:</span></span> <span><span> </span><span>try</span><span>:</span></span> <span><span> idade </span><span>=</span><span> </span><span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Digite sua idade: </span><span>"</span><span>))</span></span> <span><span> idade_futura </span><span>=</span><span> idade </span><span>+</span><span> </span><span>10</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Daqui a 10 anos, voc&ecirc; ter&aacute; </span><span>{</span><span>idade_futura</span><span>}</span><span> anos!"</span><span>)</span></span> <span><span> </span><span>break</span><span> </span><span># Sai do loop se tudo der certo</span></span> <span><span> </span><span>except</span><span> </span><span>ValueError</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Ops! Por favor, digite um n&uacute;mero inteiro v&aacute;lido.</span><span>"</span><span>)</span></span></code></pre></div> <p>Agora, se o usu&aacute;rio digitar algo inv&aacute;lido, como <em>banana</em>, o programa n&atilde;o quebra. Ele exibe uma mensagem amig&aacute;vel e pede a entrada novamente.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Digite sua idade: banana Ops! Por favor, digite um n&uacute;mero inteiro v&aacute;lido. Digite sua idade: 25 Daqui a 10 anos, voc&ecirc; ter&aacute; 35 anos!" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Digite sua idade</span><span>:</span><span> banana</span></span> <span><span>Ops! Por favor</span><span>,</span><span> digite um n&uacute;mero inteiro v&aacute;lido</span><span>.</span></span> <span><span>Digite sua idade</span><span>:</span><span> </span><span>25</span></span> <span><span>Daqui a </span><span>10</span><span> anos</span><span>,</span><span> voc&ecirc; ter&aacute; </span><span>35</span><span> anos!</span></span></code></pre></div> <p><strong>Por que isso funciona</strong>? O bloco <code>try</code> tenta executar o c&oacute;digo arriscado <code>(int(input()))</code>, e se algo der errado, o <code>except ValueError</code> captura o erro e d&aacute; uma chance ao usu&aacute;rio de tentar novamente. O <code>while True</code> mant&eacute;m o loop at&eacute; que a entrada seja v&aacute;lida.</p> <h2>Exemplo 2: Validando entradas espec&iacute;ficas</h2> <p>Agora, vamos supor que voc&ecirc; quer que o usu&aacute;rio digite apenas uma idade entre 0 e 120 anos (porque, convenhamos, ningu&eacute;m tem 150 anos ou idade negativa, n&eacute;?). Vamos adicionar uma valida&ccedil;&atilde;o extra:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;while True: try: idade = int(input("Digite sua idade (0 a 120): ")) if 0 &lt;= idade &lt;= 120: idade_futura = idade + 10 print(f"Daqui a 10 anos, voc&ecirc; ter&aacute; {idade_futura} anos!") break else: print("Idade inv&aacute;lida! Digite um n&uacute;mero entre 0 e 120.") except ValueError: print("Ops! Digite um n&uacute;mero inteiro v&aacute;lido.")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>while</span><span> </span><span>True</span><span>:</span></span> <span><span> </span><span>try</span><span>:</span></span> <span><span> idade </span><span>=</span><span> </span><span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Digite sua idade (0 a 120): </span><span>"</span><span>))</span></span> <span><span> </span><span>if</span><span> </span><span>0</span><span> </span><span>&lt;=</span><span> idade </span><span>&lt;=</span><span> </span><span>120</span><span>:</span></span> <span><span> idade_futura </span><span>=</span><span> idade </span><span>+</span><span> </span><span>10</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Daqui a 10 anos, voc&ecirc; ter&aacute; </span><span>{</span><span>idade_futura</span><span>}</span><span> anos!"</span><span>)</span></span> <span><span> </span><span>break</span></span> <span><span> </span><span>else</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Idade inv&aacute;lida! Digite um n&uacute;mero entre 0 e 120.</span><span>"</span><span>)</span></span> <span><span> </span><span>except</span><span> </span><span>ValueError</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Ops! Digite um n&uacute;mero inteiro v&aacute;lido.</span><span>"</span><span>)</span></span></code></pre></div> <p>Teste esse c&oacute;digo! Se o usu&aacute;rio digitar <em>-5 </em>ou <em>200</em>, ele ver&aacute; uma mensagem pedindo uma idade v&aacute;lida. Se digitar <em>abc</em>, o <code>ValueError</code> entra em a&ccedil;&atilde;o. Esse c&oacute;digo &eacute; mais robusto porque combina tratamento de exce&ccedil;&otilde;es com valida&ccedil;&atilde;o l&oacute;gica.</p> <h2>Exemplo 3: Lidando com entradas vazias e outros erros</h2> <p>&Agrave;s vezes, o usu&aacute;rio pode simplesmente apertar Enter sem digitar nada, ou at&eacute; tentar encerrar o programa com Ctrl+C. Vamos criar um programa que lida com essas situa&ccedil;&otilde;es. Aqui, queremos que o usu&aacute;rio digite o nome de uma cidade e um n&uacute;mero de dias para uma previs&atilde;o do tempo fict&iacute;cia:</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;while True: try: cidade = input("Digite o nome da cidade: ").strip() if not cidade: print("Ei, n&atilde;o deixe o campo vazio! Digite o nome de uma cidade.") continue dias = int(input("Quantos dias de previs&atilde;o (1 a 7)? ")) if 1 &lt;= dias &lt;= 7: print(f"Previs&atilde;o do tempo para {cidade} por {dias} dias: Ensolarado! &#9728;") break else: print("Por favor, escolha entre 1 e 7 dias.") except ValueError: print("Ops! O n&uacute;mero de dias deve ser um n&uacute;mero inteiro.") except KeyboardInterrupt: print("\nPrograma interrompido pelo usu&aacute;rio. At&eacute; mais!") break except EOFError: print("\nEntrada encerrada. At&eacute; mais!") break&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>while</span><span> </span><span>True</span><span>:</span></span> <span><span> </span><span>try</span><span>:</span></span> <span><span> cidade </span><span>=</span><span> </span><span>input</span><span>(</span><span>"</span><span>Digite o nome da cidade: </span><span>"</span><span>).</span><span>strip</span><span>()</span></span> <span><span> </span><span>if</span><span> </span><span>not</span><span> cidade</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Ei, n&atilde;o deixe o campo vazio! Digite o nome de uma cidade.</span><span>"</span><span>)</span></span> <span><span> </span><span>continue</span></span> <span><span> dias </span><span>=</span><span> </span><span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Quantos dias de previs&atilde;o (1 a 7)? </span><span>"</span><span>))</span></span> <span><span> </span><span>if</span><span> </span><span>1</span><span> </span><span>&lt;=</span><span> dias </span><span>&lt;=</span><span> </span><span>7</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Previs&atilde;o do tempo para </span><span>{</span><span>cidade</span><span>}</span><span> por </span><span>{</span><span>dias</span><span>}</span><span> dias: Ensolarado! &#9728;"</span><span>)</span></span> <span><span> </span><span>break</span></span> <span><span> </span><span>else</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Por favor, escolha entre 1 e 7 dias.</span><span>"</span><span>)</span></span> <span><span> </span><span>except</span><span> </span><span>ValueError</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Ops! O n&uacute;mero de dias deve ser um n&uacute;mero inteiro.</span><span>"</span><span>)</span></span> <span><span> </span><span>except</span><span> </span><span>KeyboardInterrupt</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Programa interrompido pelo usu&aacute;rio. At&eacute; mais!</span><span>"</span><span>)</span></span> <span><span> </span><span>break</span></span> <span><span> </span><span>except</span><span> </span><span>EOFError</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Entrada encerrada. At&eacute; mais!</span><span>"</span><span>)</span></span> <span><span> </span><span>break</span></span></code></pre></div> <p>Teste esse c&oacute;digo e tente:</p> <ul><li>Deixar o campo da cidade vazio (apertar Enter).</li> <li>Digitar uma letra no campo de dias.</li> <li>Usar Ctrl+C para interromper</li> </ul><p>O programa lida com tudo isso de forma elegante! A fun&ccedil;&atilde;o <code>strip()</code> remove espa&ccedil;os em branco, e verificamos se a string est&aacute; vazia com <code>if not cidade</code>. Tamb&eacute;m capturamos <code>KeyboardInterrupt</code> e <code>EOFError</code> para evitar que o programa quebre de forma feia.</p> <h2>Dicas para evitar erros na entrada de dados</h2> <ul><li><strong>Use</strong> <code>try</code> e <code>except</code> sempre: Eles s&atilde;o seus melhores amigos para lidar com entradas inesperadas.</li> <li><strong>Valide os dados</strong>: N&atilde;o confie que o usu&aacute;rio vai seguir as regras.</li> <li><strong>Verifique intervalos</strong>, tipos e formatos.D&ecirc; feedback claro: Mensagens como &ldquo;Digite um n&uacute;mero v&aacute;lido&rdquo; ajudam o usu&aacute;rio a entender o erro.</li> <li><strong>Teste exaustivamente</strong>: Tente quebrar seu pr&oacute;prio programa com entradas malucas (letras, n&uacute;meros negativos, emojis, etc.).</li> <li><strong>Considere entradas vazias</strong>: Sempre verifique se o usu&aacute;rio deixou o campo em branco</li> </ul><h2>Um pedido do cora&ccedil;&atilde;o <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/2764.png" alt="&#10084;"></h2> <p>Escrever artigos como este leva tempo e dedica&ccedil;&atilde;o, e eu fa&ccedil;o isso porque amo ensinar Python! As propagandas no blog ajudam a pagar as contas, mas se voc&ecirc; quiser apoiar ainda mais, considere comprar os <a href="https://amzn.to/3yNBMn6" target="_blank" rel="noopener" title="">livros de Python</a> que recomendo atrav&eacute;s dos meus links de afiliado na Amazon ou conferir os cursos que anuncio. Se voc&ecirc;s gostarem bastante, quem sabe eu n&atilde;o lan&ccedil;o um livro sobre <strong>Python</strong> no futuro? <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f604.png" alt="&#128516;"></p> <figure><a href="https://amzn.to/3yNBMn6"><img data-recalc-dims="1" loading="lazy" decoding="async" width="280" height="280" data-attachment-id="1054" data-permalink="https://blog.ffelix.eti.br/kuassociates280x280/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/KUassociates280x280.png?fit=280%2C280&amp;ssl=1" data-orig-size="280,280" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="KUassociates280x280" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/KUassociates280x280.png?fit=280%2C280&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/KUassociates280x280.png?fit=280%2C280&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/KUassociates280x280.png?resize=280%2C280&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/KUassociates280x280.png?w=280&amp;ssl=1 280w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/KUassociates280x280.png?resize=150%2C150&amp;ssl=1 150w" sizes="auto, (max-width: 280px) 100vw, 280px"></a></figure><h2>Vamos continuar aprendendo juntos?</h2> <p>Gostou do artigo? Ent&atilde;o n&atilde;o pare por aqui! Explore outros posts no blog para turbinar suas habilidades em Python. Que tal se inscrever na nossa newsletter para receber dicas exclusivas e novos artigos diretamente no seu e-mail? Deixe um coment&aacute;rio abaixo contando como voc&ecirc; lida com erros de entrada nos seus programas ou se j&aacute; passou por alguma situa&ccedil;&atilde;o engra&ccedil;ada com <code>input()</code>. Sua intera&ccedil;&atilde;o me motiva a continuar criando conte&uacute;do!</p><p>The post <a href="https://blog.ffelix.eti.br/tratamento-de-erros-de-input-em-python-dicas-praticas/">Tratamento de Erros de Input em Python: Dicas Pr&aacute;ticas</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Thu, 15 May 2025 19:15:45 +0000 Alexsandro Felix: Como Construir um Portfólio Impactante em Python https://blog.ffelix.eti.br/como-construir-um-portfolio-impactante-em-python/ https://blog.ffelix.eti.br/como-construir-um-portfolio-impactante-em-python/ <p>Fala, dev! T&aacute; naquela saga de conquistar a vaga dos sonhos em Python? Ou quem sabe dar um &ldquo;up&rdquo; na carreira? Ent&atilde;o se liga, porque o seu portf&oacute;lio &eacute; a chave mestra pra abrir todas as portas! Esquece o curr&iacute;culo boring, aqui a gente mostra c&oacute;digo de verdade!</p> <h2>Por que um portf&oacute;lio Python &eacute; t&atilde;o importante?</h2> <p>Imagina que voc&ecirc; &eacute; um super-her&oacute;i&hellip; seu portf&oacute;lio &eacute; tipo a sua cole&ccedil;&atilde;o de trof&eacute;us, mostrando todas as suas habilidades e feitos extraordin&aacute;rios! Em vez de listar &ldquo;sei fazer isso&rdquo;, voc&ecirc; mostra que sabe!</p> <ul><li><strong>Prova social</strong>: Empresas amam ver projetos reais, n&atilde;o s&oacute; palavras bonitas.Diferencia&ccedil;&atilde;o: Se destaca da multid&atilde;o de curr&iacute;culos gen&eacute;ricos.</li> <li><strong>Aprendizado cont&iacute;nuo</strong>: A melhor forma de aprender &eacute; colocando a m&atilde;o na massa.</li> <li><strong>Networking</strong>: Compartilhe seus projetos e conhe&ccedil;a outros devs incr&iacute;veis.</li> </ul><h2>Projetos para dar um &ldquo;tchan&rdquo; no seu portf&oacute;lio Python</h2> <p>Sem ideias? Relaxa! Preparei um card&aacute;pio de projetos que v&atilde;o deixar os recrutadores babando:</p> <ul><li><strong>Web Scraping Divertido</strong>: <ul><li>Crie um script que coleta dados de um site que voc&ecirc; curte (not&iacute;cias, games, receitas&hellip;).</li> <li><strong>Plus</strong>: Use bibliotecasc omo BeautifulSoup e Scrapy.</li> <li><strong>Exemplo de projeto</strong>: que tal um script que coleta os pre&ccedil;os dos seus jogos favoritos toda semana e te manda um alerta quando tem promo&ccedil;&atilde;o.</li> </ul></li> <li><strong>API Rest de Respeito</strong>: <ul><li>Desenvolva uma API usando FastAPI ou Flask para gerenciar alguma informa&ccedil;&atilde;o &uacute;til (tarefas, filmes, receitas&hellip;).</li> <li><strong>Plus</strong>: Documente sua API com Swagger e use autentica&ccedil;&atilde;o.</li> <li><strong>Exemplo de projeto</strong>: Desenvolva uma API para organizar seus livros, com busca, cadastro e tudo mais.</li> </ul></li> <li><strong>An&aacute;lise de Dados &ldquo;Mito&rdquo;</strong>: <ul><li>Analise um dataset interessante (pode ser de finan&ccedil;as, esportes, clima&hellip;) com Pandas.</li> <li><strong>Plus</strong>: Crie visualiza&ccedil;&otilde;es incr&iacute;veis com Matplotlib ou Seaborn.</li> <li><strong>Exemplo de projeto</strong>: Analise os dados de vendas da sua loja online e descubta os produtos mais populares.</li> </ul></li> <li><strong>Projeto de Machine Learning &ldquo;Brabo&rdquo;</strong>: <ul><li>Crie um modelo simples para prever alguma coisa (pre&ccedil;o de a&ccedil;&otilde;es, resultados de jogos&hellip;).</li> <li><strong>Plus</strong>: Use bibliotecas como Scikit-learn ou TensorFlow.</li> <li><strong>Exemplo de projeto</strong>: Crie um modelo para prever se um email &eacute; spam ou n&atilde;o.</li> </ul></li> <li><strong>Automa&ccedil;&atilde;o &ldquo;Ninja&rdquo;</strong>: <ul><li>Automatize tarefas repetitivas (enviar emails, organizar arquivos&hellip;).</li> <li><strong>Plus</strong>: Use bibliotecas como Selenium ou PyAutoGUI.</li> <li><strong>Exemplo de projeto</strong>: Crie um script para enviar emails de parab&eacute;ns para seus amigos e familiares no dia de seus anivers&aacute;rios.</li> </ul></li> </ul><h2>Dicas de ouro para o seu portf&oacute;lio Python:</h2> <ul><li><strong>GitHub &eacute; seu melhor amigo</strong>: Use o GitHub para hospedar seus projetos e mostrar seu c&oacute;digo.</li> <li><strong>README que impressiona</strong>: Crie um README claro e objetivo, explicando o que o projeto faz, como usar e quais tecnologias foram usadas.</li> <li><strong>C&oacute;digo limpo e organizado</strong>: Use boas pr&aacute;ticas de programa&ccedil;&atilde;o, comente seu c&oacute;digo e siga um estilo consistente.</li> <li><strong>Mostre seus &ldquo;power-ups&rdquo;</strong>: Destaque suas habilidades extras (testes, deploy, etc.).</li> <li><strong>N&atilde;o tenha medo de errar</strong>: Mostrar seus erros e como voc&ecirc; os resolveu tamb&eacute;m &eacute; importante!</li> <li><strong>Pe&ccedil;a feedback</strong>: Mostre seu portf&oacute;lio para outros devs e pe&ccedil;a sugest&otilde;es.</li> </ul><h2>Onde divulgar seu portf&oacute;lio Python:</h2> <ul><li><strong>LinkedIn</strong>: A rede social dos profissionais.</li> <li><strong>Seu curr&iacute;culo</strong>: Inclua um link para o GitHub.</li> <li><strong>Seu blog/site</strong>: Se voc&ecirc; tiver um blog, compartilhe seus projetos l&aacute;.</li> <li><strong>Comunidades online</strong>: Participe de f&oacute;runs e grupos de Python e mostre seus projetos.</li> <li><strong>Eventos</strong>: Conhe&ccedil;a outros devs e mostre seu trabalho pessoalmente.</li> </ul><p>E a&iacute;, curtiu as dicas? Ent&atilde;o n&atilde;o perca tempo e comece a construir seu portf&oacute;lio Python hoje mesmo! Explore mais artigos do blog para turbinar suas habilidades e se inscreva na nossa newsletter para n&atilde;o perder nenhuma novidade</p><p>The post <a href="https://blog.ffelix.eti.br/como-construir-um-portfolio-impactante-em-python/">Como Construir um Portf&oacute;lio Impactante em Python</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Thu, 15 May 2025 17:54:38 +0000 Aberto até de Madrugada: Tesla vai suspender produção do Cybertruck e Model Y nos EUA https://abertoatedemadrugada.com/2025/05/tesla-vai-suspender-producao-do.html https://abertoatedemadrugada.com/2025/05/tesla-vai-suspender-producao-do.html <div><a href="https://abertoatedemadrugada.com/2025/05/tesla-vai-suspender-producao-do.html"><img alt="" border="0" width="600" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3vP1fWbiDhF-cHWhkXse0IJefbI2Scep9UhuJkYNWbrsBblK38EGsWHS6tAARoKMhQg-w18NRT3GUNJ8zWZmGTK7oODmLAHQon6RG7TBCFittFvxf6IolnfVRsm66x6gmsI1s5WskeuOigVvFY7Qh1kCv410FzqoYfIAbtQ3WzFntVLxuP2UuEVlcD3WV/s1600/modelY.jpg"></a></div> Os problemas da Tesla parecem estar a complicar-se, obrigando a suspender a produ&ccedil;&atilde;o do Cybertruck e do novo Model Y.<br><br><a name="more"></a> A Tesla est&aacute; a suspender temporariamente a <a href="https://www.businessinsider.com/tesla-model-y-cybertruck-workers-stay-home-memorial-day-2025-5">produ&ccedil;&atilde;o dos Model Y e Cybertruck</a> na f&aacute;brica de Austin, no Texas, devido &agrave; quebra cont&iacute;nua da procura. Funcion&aacute;rios relataram que foram convidados a tirar uma semana de folga ou a realizar tarefas de limpeza e forma&ccedil;&atilde;o em vez das habituais fun&ccedil;&otilde;es na linha de montagem. Tamb&eacute;m a linha do Cybertruck ir&aacute; parar na &uacute;ltima semana de maio - fruto do excesso de <a href="https://abertoatedemadrugada.com/2025/05/tesla-acumula-10-mil-cybertrucks.html">carros encravados em stock</a>.<br><br> Este cen&aacute;rio &eacute; preocupante, principalmente porque o Model Y tem sido o carro mais vendido da marca. N&atilde;o &eacute; a primeira vez que a f&aacute;brica de Austin ajusta hor&aacute;rios, mas a frequ&ecirc;ncia crescente destas pausas mostra dificuldades da Tesla em equilibrar a produ&ccedil;&atilde;o com a procura em queda. J&aacute; o Cybertruck, que come&ccedil;ou com grande entusiasmo, parece tamb&eacute;m estar a perder f&ocirc;lego rapidamente.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX5hQQf_uHGx5XhiW1RzYHcfR0aRt6aTdaZHy_L6f2jKbDUI3zD4wRXjp4Ah1Ij3YSxCg1cbJ8AWYUIB4_6ZeYIr25t9xTBCUHGXciPsGBADG1hncPZM9fuqr-JyxsHbqcrqZABs3yjWL94NH7WXR-DfpKna8j4QfsHmKO2XnOG24GyHuyvhoCqE-92CwX/s1600/cybertruck.jpg"><img alt="" border="0" width="600" data-original-height="901" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX5hQQf_uHGx5XhiW1RzYHcfR0aRt6aTdaZHy_L6f2jKbDUI3zD4wRXjp4Ah1Ij3YSxCg1cbJ8AWYUIB4_6ZeYIr25t9xTBCUHGXciPsGBADG1hncPZM9fuqr-JyxsHbqcrqZABs3yjWL94NH7WXR-DfpKna8j4QfsHmKO2XnOG24GyHuyvhoCqE-92CwX/s600/cybertruck.jpg"></a></div> O objetivo inicial de Elon Musk de fabricar 250 mil Cybertrucks por ano j&aacute; foi revisto para 120 mil, mas mesmo essa meta parece dif&iacute;cil de alcan&ccedil;ar. Em 2024, a Tesla vendeu cerca de 39 mil unidades, e no primeiro trimestre de 2025 as vendas ca&iacute;ram para apenas 6.406, menos de metade dos trimestres anteriores.<br><br> Mesmo com o Model Y a receber uma atualiza&ccedil;&atilde;o recente, a Tesla est&aacute; a enfrentar uma quebra nas entregas globais, com uma descida de 13% no &uacute;ltimo ano &ndash; o pior registo em dois anos. Nos Estados Unidos, as vendas ca&iacute;ram 5,6%, enquanto o mercado autom&oacute;vel no geral cresceu 7,3%, aumentando a press&atilde;o sobre a marca num cen&aacute;rio de concorr&ecirc;ncia cada vez mais forte.<br><br> Thu, 15 May 2025 17:30:00 +0000 Alexsandro Felix: Dominando Loops em Python: Guia Completo https://blog.ffelix.eti.br/dominando-loops-em-python-guia-completo/ https://blog.ffelix.eti.br/dominando-loops-em-python-guia-completo/ <p>E a&iacute;, futuro(a) mestre do Python! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f40d.png" alt="&#128013;"> Preparado(a) para dar um chega pra l&aacute; nas tarefas repetitivas e deixar o computador trabalhar por voc&ecirc;? Se a resposta &eacute; &ldquo;SIM, PELO AMOR DE TUDO QUE &Eacute; MAIS SAGRADO!&rdquo;, ent&atilde;o voc&ecirc; est&aacute; no lugar certo! Hoje vamos mergulhar no universo dos loops em Python, os superpoderes que v&atilde;o te permitir automatizar o t&eacute;dio e focar no que realmente importa: criar coisas incr&iacute;veis</p> <p>Imagine ter que escrever print(&ldquo;Ol&aacute;!&rdquo;) 100 vezes. Que chatice, n&eacute;? &Eacute; a&iacute; que os loops entram em cena, como verdadeiros her&oacute;is da produtividade! Em Python, temos dois tipos principais de loops que v&atilde;o se tornar seus melhores amigos: o for e o while.</p> <h2>O Loop for: Seu Parceiro para Iterar em Sequ&ecirc;ncias</h2> <p>O loop&nbsp;<code>for</code>&nbsp;&eacute; o cara quando voc&ecirc; precisa percorrer itens em uma sequ&ecirc;ncia, como uma lista, uma tupla, uma string ou at&eacute; mesmo um intervalo de n&uacute;meros gerado pela fun&ccedil;&atilde;o&nbsp;range(). Pense nele como um detetive que examina cada pista (item) em uma cena do crime (sequ&ecirc;ncia).</p> <h3>Sintaxe b&aacute;sica:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="for variavel_temporaria in sequencia: # Bloco de c&oacute;digo a ser executado para cada item # Fa&ccedil;a alguma coisa com a variavel_temporaria" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>for</span><span> variavel_temporaria </span><span>in</span><span> sequencia</span><span>:</span></span> <span><span> </span><span># Bloco de c&oacute;digo a ser executado para cada item</span></span> <span><span> </span><span># Fa&ccedil;a alguma coisa com a variavel_temporaria</span></span></code></pre></div> <p>Vamos ver na pr&aacute;tica?</p> <h2>Exemplo 1: Percorrendo uma lista de compras</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;lista_de_compras = ["Ma&ccedil;&atilde;s", "Bananas", "Leite", "P&atilde;o", "Caf&eacute;"] print("Minha lista de compras:") for item in lista_de_compras: print(f"- {item}") # Usando f-string para formatar a sa&iacute;da!&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>lista_de_compras </span><span>=</span><span> </span><span>[</span><span>"</span><span>Ma&ccedil;&atilde;s</span><span>"</span><span>,</span><span> </span><span>"</span><span>Bananas</span><span>"</span><span>,</span><span> </span><span>"</span><span>Leite</span><span>"</span><span>,</span><span> </span><span>"</span><span>P&atilde;o</span><span>"</span><span>,</span><span> </span><span>"</span><span>Caf&eacute;</span><span>"</span><span>]</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>Minha lista de compras:</span><span>"</span><span>)</span></span> <span><span>for</span><span> item </span><span>in</span><span> lista_de_compras</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"- </span><span>{</span><span>item</span><span>}</span><span>"</span><span>)</span><span> </span><span># Usando f-string para formatar a sa&iacute;da!</span></span></code></pre></div> <h3>Sa&iacute;da esperada:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Minha lista de compras: - Ma&ccedil;&atilde;s - Bananas - Leite - P&atilde;o - Caf&eacute;" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Minha lista de compras</span><span>:</span></span> <span><span>-</span><span> Ma&ccedil;&atilde;s</span></span> <span><span>-</span><span> Bananas</span></span> <span><span>-</span><span> Leite</span></span> <span><span>-</span><span> P&atilde;o</span></span> <span><span>-</span><span> Caf&eacute;</span></span></code></pre></div> <p>Viu s&oacute;? O item assume o valor de cada elemento da lista_de_compras a cada &ldquo;rodada&rdquo; (itera&ccedil;&atilde;o) do loop. M&aacute;gico, n&eacute;?</p> <h2>Exemplo 2: Usando range() para contar at&eacute; 5</h2> <p>A fun&ccedil;&atilde;o range() &eacute; super &uacute;til para gerar sequ&ecirc;ncias num&eacute;ricas.</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;print("\nContando de 0 a 4:") for numero in range(5): # range(5) gera n&uacute;meros de 0 a 4 print(f"N&uacute;mero atual: {numero}") print("\nContando de 1 a 5:") for numero in range(1, 6): # range(inicio, fim_exclusive) print(f"N&uacute;mero atual: {numero}") print("\nContando de 2 em 2 at&eacute; 10:") for numero in range(2, 11, 2): # range(inicio, fim_exclusive, passo) print(f"N&uacute;mero atual: {numero}")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Contando de 0 a 4:</span><span>"</span><span>)</span></span> <span><span>for</span><span> numero </span><span>in</span><span> </span><span>range</span><span>(</span><span>5</span><span>):</span><span> </span><span># range(5) gera n&uacute;meros de 0 a 4</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"N&uacute;mero atual: </span><span>{</span><span>numero</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Contando de 1 a 5:</span><span>"</span><span>)</span></span> <span><span>for</span><span> numero </span><span>in</span><span> </span><span>range</span><span>(</span><span>1</span><span>,</span><span> </span><span>6</span><span>):</span><span> </span><span># range(inicio, fim_exclusive)</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"N&uacute;mero atual: </span><span>{</span><span>numero</span><span>}</span><span>"</span><span>)</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Contando de 2 em 2 at&eacute; 10:</span><span>"</span><span>)</span></span> <span><span>for</span><span> numero </span><span>in</span><span> </span><span>range</span><span>(</span><span>2</span><span>,</span><span> </span><span>11</span><span>,</span><span> </span><span>2</span><span>):</span><span> </span><span># range(inicio, fim_exclusive, passo)</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"N&uacute;mero atual: </span><span>{</span><span>numero</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <h3>Sa&iacute;da esperada:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Contando de 0 a 4: N&uacute;mero atual: 0 N&uacute;mero atual: 1 N&uacute;mero atual: 2 N&uacute;mero atual: 3 N&uacute;mero atual: 4 Contando de 1 a 5: N&uacute;mero atual: 1 N&uacute;mero atual: 2 N&uacute;mero atual: 3 N&uacute;mero atual: 4 N&uacute;mero atual: 5 Contando de 2 em 2 at&eacute; 10: N&uacute;mero atual: 2 N&uacute;mero atual: 4 N&uacute;mero atual: 6 N&uacute;mero atual: 8 N&uacute;mero atual: 10" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Contando de </span><span>0</span><span> a </span><span>4</span><span>:</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>0</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>1</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>2</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>3</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>4</span></span> <span></span> <span><span>Contando de </span><span>1</span><span> a </span><span>5</span><span>:</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>1</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>2</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>3</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>4</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>5</span></span> <span></span> <span><span>Contando de </span><span>2</span><span> em </span><span>2</span><span> at&eacute; </span><span>10</span><span>:</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>2</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>4</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>6</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>8</span></span> <span><span>N&uacute;mero atual</span><span>:</span><span> </span><span>10</span></span></code></pre></div> <h2>Exemplo 3: Iterando sobre os caracteres de uma string</h2> <p>Sim, strings s&atilde;o sequ&ecirc;ncias de caracteres!</p> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="palavra = &quot;Python&quot; print(f&quot;\nSoletrando a palavra &#039;{palavra}&#039;:&quot;) for letra in palavra: print(letra.upper()) # .upper() deixa a letra mai&uacute;scula" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>palavra </span><span>=</span><span> </span><span>"</span><span>Python</span><span>"</span></span> <span><span>print</span><span>(</span><span>f</span><span>"</span><span>\n</span><span>Soletrando a palavra &#039;</span><span>{</span><span>palavra</span><span>}</span><span>&#039;:"</span><span>)</span></span> <span><span>for</span><span> letra </span><span>in</span><span> palavra</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>letra</span><span>.</span><span>upper</span><span>())</span><span> </span><span># .upper() deixa a letra mai&uacute;scula</span></span></code></pre></div> <h3>Sa&iacute;da esperada:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Soletrando a palavra &#039;Python&#039;: P Y T H O N" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Soletrando a palavra </span><span>&#039;</span><span>Python</span><span>&#039;</span><span>:</span></span> <span><span>P</span></span> <span><span>Y</span></span> <span><span>T</span></span> <span><span>H</span></span> <span><span>O</span></span> <span><span>N</span></span></code></pre></div> <h2>O Loop while: Repetindo Enquanto a Condi&ccedil;&atilde;o for Verdadeira</h2> <p>Enquanto o for &eacute; &oacute;timo para sequ&ecirc;ncias com um n&uacute;mero definido de itens, o loop while (que significa &ldquo;enquanto&rdquo; em ingl&ecirc;s) &eacute; perfeito para quando voc&ecirc; quer repetir um bloco de c&oacute;digo enquanto uma determinada condi&ccedil;&atilde;o for verdadeira. &Eacute; como dizer: &ldquo;Enquanto n&atilde;o chover, vou continuar na praia!&rdquo;.</p> <h3>Sintaxe b&aacute;sica:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="while condicao: # Bloco de c&oacute;digo a ser executado # IMPORTANTE: Algo aqui dentro deve, eventualmente, # tornar a &#039;condicao&#039; falsa para o loop n&atilde;o ser infinito!" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>while</span><span> condicao</span><span>:</span></span> <span><span> </span><span># Bloco de c&oacute;digo a ser executado</span></span> <span><span> </span><span># IMPORTANTE: Algo aqui dentro deve, eventualmente,</span></span> <span><span> </span><span># tornar a &#039;condicao&#039; falsa para o loop n&atilde;o ser infinito!</span></span></code></pre></div> <p>Alerta de Perigo! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f6a8.png" alt="&#128680;"> Cuidado com os loops infinitos! Se a condi&ccedil;&atilde;o do while nunca se tornar falsa, seu programa vai ficar preso rodando para sempre (ou at&eacute; voc&ecirc; interromp&ecirc;-lo &agrave; for&ccedil;a). &Eacute; como um hamster na rodinha, s&oacute; que menos fofo e mais problem&aacute;tico.</p> <h2>Exemplo 1: Contagem regressiva para o Ano Novo!</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;contador = 5 print("\nContagem regressiva para o Ano Novo (imagin&aacute;rio!):") while contador &gt; 0: print(f"{contador}...") contador = contador - 1 # Decrementamos o contador a cada itera&ccedil;&atilde;o print("FELIZ ANO NOVO!!! &#127881;")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>contador </span><span>=</span><span> </span><span>5</span></span> <span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Contagem regressiva para o Ano Novo (imagin&aacute;rio!):</span><span>"</span><span>)</span></span> <span><span>while</span><span> contador </span><span>&gt;</span><span> </span><span>0</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"</span><span>{</span><span>contador</span><span>}</span><span>..."</span><span>)</span></span> <span><span> contador </span><span>=</span><span> contador </span><span>-</span><span> </span><span>1</span><span> </span><span># Decrementamos o contador a cada itera&ccedil;&atilde;o</span></span> <span><span>print</span><span>(</span><span>"</span><span>FELIZ ANO NOVO!!! &#127881;</span><span>"</span><span>)</span></span></code></pre></div> <h3>Sa&iacute;da esperada:</h3> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Contagem regressiva para o Ano Novo (imagin&aacute;rio!): 5... 4... 3... 2... 1... FELIZ ANO NOVO!!! &#127881;" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>Contagem regressiva para o Ano </span><span>Novo</span><span> </span><span>(</span><span>imagin&aacute;rio!</span><span>):</span></span> <span><span>5</span><span>...</span></span> <span><span>4</span><span>...</span></span> <span><span>3</span><span>...</span></span> <span><span>2</span><span>...</span></span> <span><span>1</span><span>...</span></span> <span><span>FELIZ ANO NOVO!!! &#127881;</span></span></code></pre></div> <p>Percebeu como o contador = contador &ndash; 1 &eacute; crucial? Sem ele, contador seria sempre 5, e a condi&ccedil;&atilde;o contador &gt; 0 seria sempre verdadeira. Adeus, sanidade!</p> <h2>Exemplo 2: Pedindo uma senha at&eacute; o usu&aacute;rio acertar (simplificado)</h2> <div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;senha_secreta = "abracadabra" tentativa = "" # Inicializamos a vari&aacute;vel tentativa print("\n--- Mini Jogo da Senha ---") while tentativa != senha_secreta: tentativa = input("Digite a senha secreta: ") if tentativa != senha_secreta: print("Ops! Senha incorreta. Tente novamente.") print("Parab&eacute;ns! Voc&ecirc; descobriu a senha!")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>senha_secreta </span><span>=</span><span> </span><span>"</span><span>abracadabra</span><span>"</span></span> <span><span>tentativa </span><span>=</span><span> </span><span>""</span><span> </span><span># Inicializamos a vari&aacute;vel tentativa</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>\n</span><span>--- Mini Jogo da Senha ---</span><span>"</span><span>)</span></span> <span><span>while</span><span> tentativa </span><span>!=</span><span> senha_secreta</span><span>:</span></span> <span><span> tentativa </span><span>=</span><span> </span><span>input</span><span>(</span><span>"</span><span>Digite a senha secreta: </span><span>"</span><span>)</span></span> <span><span> </span><span>if</span><span> tentativa </span><span>!=</span><span> senha_secreta</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Ops! Senha incorreta. Tente novamente.</span><span>"</span><span>)</span></span> <span></span> <span><span>print</span><span>(</span><span>"</span><span>Parab&eacute;ns! Voc&ecirc; descobriu a senha!</span><span>"</span><span>)</span></span></code></pre></div> <p>Neste caso, o loop continua at&eacute; que o usu&aacute;rio digite &ldquo;abracadabra&rdquo;.</p> <h2>Controlando o Fluxo do Loop:</h2> <p>&Agrave;s vezes, voc&ecirc; precisa de um pouco mais de controle sobre seus loops. Python oferece algumas palavras-chave para isso:</p> <ul><li><strong>break</strong>: Interrompe o loop imediatamente, mesmo que a condi&ccedil;&atilde;o do while ainda seja verdadeira ou que ainda hajam itens no for. &Eacute; o &ldquo;CHEGA! Cansei!&rdquo; do seu c&oacute;digo.</li> </ul><div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;print("\nProcurando o n&uacute;mero 3 (e parando quando achar):") numeros = [1, 2, 3, 4, 5] for n in numeros: print(f"Verificando: {n}") if n == 3: print("Achei o 3! Saindo do loop...") break # Sai do loop for print("Fim da busca.")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Procurando o n&uacute;mero 3 (e parando quando achar):</span><span>"</span><span>)</span></span> <span><span>numeros </span><span>=</span><span> </span><span>[</span><span>1</span><span>,</span><span> </span><span>2</span><span>,</span><span> </span><span>3</span><span>,</span><span> </span><span>4</span><span>,</span><span> </span><span>5</span><span>]</span></span> <span><span>for</span><span> n </span><span>in</span><span> numeros</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"Verificando: </span><span>{</span><span>n</span><span>}</span><span>"</span><span>)</span></span> <span><span> </span><span>if</span><span> n </span><span>==</span><span> </span><span>3</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>"</span><span>Achei o 3! Saindo do loop...</span><span>"</span><span>)</span></span> <span><span> </span><span>break</span><span> </span><span># Sai do loop for</span></span> <span><span>print</span><span>(</span><span>"</span><span>Fim da busca.</span><span>"</span><span>)</span></span></code></pre></div> <ul><li><strong>continue</strong>: Pula para a pr&oacute;xima itera&ccedil;&atilde;o do loop, ignorando o restante do c&oacute;digo dentro do bloco naquela itera&ccedil;&atilde;o espec&iacute;fica. &Eacute; o &ldquo;Essa parte n&atilde;o me interessa, pr&oacute;ximo!&rdquo;.</li> </ul><div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=&#039;print("\nImprimindo apenas n&uacute;meros &iacute;mpares (pulando os pares):") for i in range(1, 11): # N&uacute;meros de 1 a 10 if i % 2 == 0: # Se o n&uacute;mero for par (resto da divis&atilde;o por 2 &eacute; 0) continue # Pula para a pr&oacute;xima itera&ccedil;&atilde;o print(f"&Iacute;mpar encontrado: {i}")&#039; aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Imprimindo apenas n&uacute;meros &iacute;mpares (pulando os pares):</span><span>"</span><span>)</span></span> <span><span>for</span><span> i </span><span>in</span><span> </span><span>range</span><span>(</span><span>1</span><span>,</span><span> </span><span>11</span><span>):</span><span> </span><span># N&uacute;meros de 1 a 10</span></span> <span><span> </span><span>if</span><span> i </span><span>%</span><span> </span><span>2</span><span> </span><span>==</span><span> </span><span>0</span><span>:</span><span> </span><span># Se o n&uacute;mero for par (resto da divis&atilde;o por 2 &eacute; 0)</span></span> <span><span> </span><span>continue</span><span> </span><span># Pula para a pr&oacute;xima itera&ccedil;&atilde;o</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"&Iacute;mpar encontrado: </span><span>{</span><span>i</span><span>}</span><span>"</span><span>)</span></span></code></pre></div> <ul><li><strong>else em loops</strong>: Uma caracter&iacute;stica menos conhecida, mas &uacute;til! O bloco else em um loop for ou while &eacute; executado <strong>apenas se o loop terminar normalmente</strong>, ou seja, sem ser interrompido por um break.</li> </ul><div data-code-block-pro-font-family="Code-Pro-JetBrains-Mono"><span><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="print(&quot;\nBuscando um item que N&Atilde;O est&aacute; na lista:&quot;) lista_frutas = [&quot;banana&quot;, &quot;ma&ccedil;&atilde;&quot;, &quot;laranja&quot;] fruta_procurada = &quot;uva&quot; for fruta in lista_frutas: if fruta == fruta_procurada: print(f&quot;&#039;{fruta_procurada}&#039; encontrada!&quot;) break else: # Este else pertence ao &#039;for&#039; print(f&quot;&#039;{fruta_procurada}&#039; n&atilde;o foi encontrada na lista.&quot;)" aria-label="Copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre tabindex="0"><code><span><span>print</span><span>(</span><span>"</span><span>\n</span><span>Buscando um item que N&Atilde;O est&aacute; na lista:</span><span>"</span><span>)</span></span> <span><span>lista_frutas </span><span>=</span><span> </span><span>[</span><span>"</span><span>banana</span><span>"</span><span>,</span><span> </span><span>"</span><span>ma&ccedil;&atilde;</span><span>"</span><span>,</span><span> </span><span>"</span><span>laranja</span><span>"</span><span>]</span></span> <span><span>fruta_procurada </span><span>=</span><span> </span><span>"</span><span>uva</span><span>"</span></span> <span><span>for</span><span> fruta </span><span>in</span><span> lista_frutas</span><span>:</span></span> <span><span> </span><span>if</span><span> fruta </span><span>==</span><span> fruta_procurada</span><span>:</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"&#039;</span><span>{</span><span>fruta_procurada</span><span>}</span><span>&#039; encontrada!"</span><span>)</span></span> <span><span> </span><span>break</span></span> <span><span>else</span><span>:</span><span> </span><span># Este else pertence ao &#039;for&#039;</span></span> <span><span> </span><span>print</span><span>(</span><span>f</span><span>"&#039;</span><span>{</span><span>fruta_procurada</span><span>}</span><span>&#039; n&atilde;o foi encontrada na lista."</span><span>)</span></span></code></pre></div> <p>Se &ldquo;uva&rdquo; estivesse na lista, o break seria executado e o else n&atilde;o.</p> <h2>Dominando os Fundamentos para Voos Mais Altos!</h2> <p>Ufa! Vimos bastante coisa, n&eacute;? Loops s&atilde;o uma parte fundamental da programa&ccedil;&atilde;o. Eles s&atilde;o a base para criar algoritmos mais complexos, processar grandes volumes de dados e, basicamente, fazer qualquer coisa &uacute;til de verdade com Python.</p> <p>Dominar esses la&ccedil;os &eacute; crucial, e se voc&ecirc; quer acelerar sua jornada do zero ao &ldquo;her&oacute;i do Python&rdquo;, solidificando n&atilde;o apenas os loops, mas todos os conceitos essenciais de forma clara e direta, eu tenho uma dica de ouro: o e-book &ldquo;<a href="https://go.hotmart.com/F13340196Y" target="_blank" rel="noopener" title="">Python de A-Z, guia de primeiros passos com a linguagem</a>&ldquo;. Pense nele como seu mapa do tesouro pessoal para desbravar o mundo Python sem se perder. &Eacute; um investimento certeiro para construir uma base s&oacute;lida e confiante! D&ecirc; uma espiada <a href="https://go.hotmart.com/F13340196Y" target="_blank" rel="noopener" title="">aqui</a>.</p> <h2>Que Tal um Livro F&iacute;sico para Acompanhar?</h2> <p>Para quem, como eu, adora ter um livro f&iacute;sico para rabiscar, consultar e ter sempre &agrave; m&atilde;o, uma excelente recomenda&ccedil;&atilde;o &eacute; o &ldquo;<a href="https://amzn.to/43vtwod" target="_blank" rel="noopener" title="">Introdu&ccedil;&atilde;o &agrave; Programa&ccedil;&atilde;o com Python</a>&rdquo; da Nilo Ney Coutinho Menezes. &Eacute; um cl&aacute;ssico que aborda os fundamentos de forma muito did&aacute;tica e completa, perfeito para complementar seus estudos online. Voc&ecirc; pode encontr&aacute;-lo <a href="https://amzn.to/43vtwod" target="_blank" rel="noopener" title="">aqui</a>.</p> <figure><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="424" data-attachment-id="1031" data-permalink="https://blog.ffelix.eti.br/livro_paperback_600/" data-orig-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?fit=600%2C424&amp;ssl=1" data-orig-size="600,424" data-comments-opened="1" data-image-meta=&#039;{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}&#039; data-image-title="livro_paperback_600" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?fit=300%2C212&amp;ssl=1" data-large-file="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?fit=600%2C424&amp;ssl=1" src="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?resize=600%2C424&amp;ssl=1" alt="" srcset="https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?w=600&amp;ssl=1 600w, https://i0.wp.com/blog.ffelix.eti.br/wp-content/uploads/2025/05/livro_paperback_600.webp?resize=300%2C212&amp;ssl=1 300w" sizes="auto, (max-width: 600px) 100vw, 600px"></figure><h2>Continue a Jornada!</h2> <p>E a&iacute;, curtiu essa aventura pelos loops em Python? Espero que sim! Lembre-se: a pr&aacute;tica leva &agrave; perfei&ccedil;&atilde;o. Ent&atilde;o, abra seu editor de c&oacute;digo, experimente os exemplos, modifique-os, crie seus pr&oacute;prios desafios. Quanto mais voc&ecirc; &ldquo;brincar&rdquo; com os loops, mais natural eles se tornar&atilde;o.</p> <p><strong>Gostou do artigo</strong>? Deixe seu coment&aacute;rio abaixo! Qual foi sua maior dificuldade com loops at&eacute; agora? O que mais voc&ecirc; gostaria de aprender sobre Python? Explore outros artigos aqui no blog para continuar sua jornada de aprendizado e, claro, <strong>n&atilde;o se esque&ccedil;a de assinar nossa newsletter</strong> para receber dicas fresquinhas, tutoriais e novidades do mundo Python diretamente no seu e-mail!At&eacute; a pr&oacute;xima, e bons c&oacute;digos! <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f609.png" alt="&#128521;"></p><p>The post <a href="https://blog.ffelix.eti.br/dominando-loops-em-python-guia-completo/">Dominando Loops em Python: Guia Completo</a> first appeared on <a href="https://blog.ffelix.eti.br/">Alexsandro Felix</a>.</p> Thu, 15 May 2025 15:36:36 +0000 Aberto até de Madrugada: Coluna BT Tronsmart T7 Lite a €33.99 https://abertoatedemadrugada.com/2025/05/coluna-bt-tronsmart-t7-lite-3399.html https://abertoatedemadrugada.com/2025/05/coluna-bt-tronsmart-t7-lite-3399.html <div><a href="https://abertoatedemadrugada.com/2025/05/coluna-bt-tronsmart-t7-lite-3399.html"><img alt="" border="0" width="600" data-original-height="910" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmrRXeFMmihyphenhyphenyYU2P_SSrj7jYM-IZqFXzJlqTuIOhtjxrMft4gaoD8agj-aLLVXkGmfgc6Hc8TpEtlHsrmoRtSCOxuWS0ds_gU5nNN2v_XFX2hErUG_5knCMqCYtLIKxoil0CzR_ynQ3nUsETvCJ8l0UWVD5jo9YvSp36slfrcBYQb8CVkAIaN4gkcfJQC/s1600/tronsmart.jpg"></a></div> Quem j&aacute; tiver passado pelas colunas Bluetooth de baixo custo e agora procurar algo com um pouco mais de pot&ecirc;ncia, ir&aacute; ficar satisfeito com esta Tronsmart T7 Lite.<br><br><a name="more"></a>O desaparecimento da ficha dos headphones tem fomentado a utiliza&ccedil;&atilde;o de colunas BT em cada vez mais situa&ccedil;&otilde;es (muitas vezes torna-se a &uacute;nica op&ccedil;&atilde;o poss&iacute;vel, a n&atilde;o ser que se recorra a <a href="https://abertoatedemadrugada.com/2020/01/receptor-bluetooth-para-headphones-ou.html">adaptadores BT para ficha de 3.5mm</a>). Em muitos casos acaba tamb&eacute;m por se revelar uma solu&ccedil;&atilde;o mais conveniente, permitindo que se chegue a casa e se comece a ouvir a m&uacute;sica na coluna em vez de se sofrer com a tentativa do smartphone reproduzir os sons graves com os seus altifalantes diminutos. E no caso desta <a href="https://amzn.to/482y4Sh">Tronsmart T7 Lite</a>, temos volume com fartura mas mantendo um tamanho relativamente compacto.<br><div><a href="https://amzn.to/49xTZRR"><img alt="" border="0" data-original-height="1000" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh33TUrkDsBKOGxvJxaLTIEjq8er5-c9YYB4V78SUpfjhGcMPYQr01ujWjxmsbkgFojlpefI8zkWGSAMckpkQy3uaoF79ddqDF8SkGZfzIXreJxX2-kX19oDW4W-Zv4sBkTO8zR3lNr5WWt6zDDzYLo4CYQWuHjTaZHgqG5jVfMD3bGpeUVHN0UweAjQKL6/s1600/T7Lite.jpg" width="600"></a></div> Esta coluna BT <a href="https://amzn.to/49xTZRR">Tronsmart T7 Lite</a> est&aacute; dispon&iacute;vel por 33.99 euros na Amazon Espanha - activar desconto de 15%.<br><br> Vem com uma bateria generosa para garantir que as sess&otilde;es de m&uacute;sica podem prolongar-se por 24 horas com o volume a 50%, demorando cerca de 3 a 4 horas a recarreg&aacute;-la. Conta tamb&eacute;m com porta USB-C, microfone para funcionar como sistema m&atilde;os livres ao efectuar chamadas telef&oacute;nicas, cart&atilde;o de mem&oacute;ria para reprodu&ccedil;&atilde;o de m&uacute;sicas, e para quem quiser duplicar a pot&ecirc;ncia sonora, pode emparelhar-se com uma coluna adicional para funcionar em modo stereo real.<br><br> Acompanha as melhores promo&ccedil;&otilde;es di&aacute;rias no nosso canal <a href="https://www.facebook.com/groups/AadM.Promos/?sorting_setting=CHRONOLOGICAL">AadM Promos</a>.<br><br> Thu, 15 May 2025 15:30:00 +0000 Aberto até de Madrugada: Xiaomi SU7 enfrenta queixas por capot opcional desportivo https://abertoatedemadrugada.com/2025/05/xiaomi-su7-enfrenta-queixas-por-capot.html https://abertoatedemadrugada.com/2025/05/xiaomi-su7-enfrenta-queixas-por-capot.html <div><a href="https://abertoatedemadrugada.com/2025/05/xiaomi-su7-enfrenta-queixas-por-capot.html"><img alt="" border="0" data-original-height="897" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6uujxxRTRZeW6uPGNNBzrPyE8ss8HRJcZxK9Pu-qBpAjbGfwGASU5kDw_I9TLVZWqsoWbXyiZJu7_voCMpljBTg_dwKYz-rHohb_Ij62E62UDT2f0669i2rDayaBZRdZo95fpn2E5DQ6YjvBlGyLPLG2xKqFNn0455Ck3MWY1sO95GIWxYUUSTE3lyjNb/s1600/su7ducts.jpg" width="600"></a></div> O capot desportivo opcional em fibra de carbono do Xiaomi SU7 est&aacute; a revelar-se um grande dor de cabe&ccedil;a para a marca.<br><br><a name="more"></a> Apesar das vendas impressionantes, o Xiaomi SU7 est&aacute; a gerar pol&eacute;mica devido a problemas de qualidade. O modelo ficou em &uacute;ltimo lugar no ranking chin&ecirc;s de qualidade de grandes ve&iacute;culos el&eacute;tricos a bateria, acumulando <a href="https://carnewschina.com/2025/05/13/xiaomi-su7-finished-dead-last-in-the-2025-q1-quality-rating-among-large-bev-sedans/">muitas mais queixas</a> do que a concorr&ecirc;ncia. Para agravar a situa&ccedil;&atilde;o, mais de 400 propriet&aacute;rios ter&atilde;o avan&ccedil;ado com um processo coletivo contra a Xiaomi, acusando-a de publicidade enganosa.<br><br> O conflito gira em torno do <a href="https://carnewschina.com/2025/05/13/xiaomi-dual-air-duct-controversy-escalates-over-400-su7-ultra-owners-join-legal-action/">capot opcional em fibra de carbono</a> do SU7, anunciado como tendo "dois t&uacute;neis de ar" funcionais para melhorar a refrigera&ccedil;&atilde;o e aerodin&acirc;mica. Contudo, testes feitos pelos donos mostram que n&atilde;o h&aacute; qualquer fluxo de ar ou benef&iacute;cios t&eacute;rmicos, levando a acusa&ccedil;&otilde;es de fraude publicit&aacute;ria. A Xiaomi j&aacute; pediu desculpa e ofereceu pontos de fideliza&ccedil;&atilde;o e a troca pelo capot em alum&iacute;nio, mas muitos clientes recusaram, apontando longos prazos de espera (quase um ano!) e compensa&ccedil;&otilde;es insuficientes.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbcjX1tB16utHzaXaspVjVjjpjVC-rL92RcpeNUe2D7nfnHuu8M5tBagO6N8InDIMAgIndRIWxjwN72_x0tAhpU7X21WZVTfTHoJAK9v4uboLfrXnElVT1f02ZZ8loeZOKz_huqfFpXxS2mVw2__1YaVYScnqBWtbiSD-0df5QWRVxpsRYij4y8DgrstKc/s1200/su7.jpg"><img alt="" border="0" data-original-height="674" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbcjX1tB16utHzaXaspVjVjjpjVC-rL92RcpeNUe2D7nfnHuu8M5tBagO6N8InDIMAgIndRIWxjwN72_x0tAhpU7X21WZVTfTHoJAK9v4uboLfrXnElVT1f02ZZ8loeZOKz_huqfFpXxS2mVw2__1YaVYScnqBWtbiSD-0df5QWRVxpsRYij4y8DgrstKc/s600/su7.jpg" width="600"></a></div> Este caso est&aacute; a tornar-se um grande problema para a divis&atilde;o autom&oacute;vel da Xiaomi, com o CEO Lei Jun a admitir que atravessam o per&iacute;odo mais dif&iacute;cil desde o lan&ccedil;amento da marca. Especialistas alertam que, se testes independentes confirmarem que os dutos s&atilde;o meramente est&eacute;ticos, a Xiaomi poder&aacute; enfrentar san&ccedil;&otilde;es ao abrigo das leis de publicidade da China.<br><br> Al&eacute;m da disputa legal, a pol&eacute;mica pode prejudicar o lan&ccedil;amento do SUV Xiaomi YU7 e abalar a imagem da marca. Alguns analistas acreditam que esta situa&ccedil;&atilde;o poder&aacute; obrigar os fabricantes a rever a forma como promovem componentes de performance no futuro.<br><br> Thu, 15 May 2025 13:30:00 +0000 A Minha Alegre Casinha: Raspberry Pi melhora soldadura e reduz devoluções http://aminhaalegrecasinha.com/2025/05/raspberry-pi-melhora-soldadura-e-reduz.html http://aminhaalegrecasinha.com/2025/05/raspberry-pi-melhora-soldadura-e-reduz.html <div><a href="http://aminhaalegrecasinha.com/2025/05/raspberry-pi-melhora-soldadura-e-reduz.html"><img alt="" border="0" data-original-height="901" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPXZlDpqbfKwNCt5XqE1zN8_mrmUQcrdqrLVdUBaCH0YesyZkdN1yAiptLZzO7cOIZxKZ0Qj_9gZnwdgfyaTYanjYwO6HGu70AvX8swxW8BNtm6W-LJ5p0_4n-XVkA-0Pv39DLzUrtgmynuuE-FwSrJrILSC_qspQ7Cw2MfzKvpGaVNVHnjFavYsI3T6B/s1600/rpi5.jpg" width="600"></a></div> Os populares Raspberry 5 passam a ser ainda mais fi&aacute;veis e robustos devido a um novo processo de soldadura dos componentes.<br><br><a name="more"></a> A Raspberry Pi anunciou ter feito <a href="https://www.raspberrypi.com/news/sustainable-solutions-with-raspberry-pi-how-intrusive-reflow-soldering-boosted-our-efficiency-and-cut-our-carbon-footprint/">altera&ccedil;&otilde;es no m&eacute;todo de soldadura</a>, que reduziu para metade o n&uacute;mero de devolu&ccedil;&otilde;es. Em vez de usar processos separados para os pequenos elementos SMD e para componentes maiores, como portas USB, a marca adoptou uma t&eacute;cnica chamada "intrusive reflow soldering" que permite soldar tudo de uma s&oacute; vez. O resultado? Menos problemas e uma produ&ccedil;&atilde;o mais r&aacute;pida.<br><br> Antes, as placas exigiam duas fases de soldadura: uma para os componentes de montagem na superf&iacute;cie (SMD) e outra para as pe&ccedil;as maiores com pinos que atravessam a placa, como o conector GPIO de 40 pinos. Estas pe&ccedil;as maiores, por estarem mais expostas ao desgaste f&iacute;sico, exigem liga&ccedil;&otilde;es mais robustas. Agora, ao aplicar pasta de soldar em ambos os tipos de liga&ccedil;&atilde;o, tudo &eacute; processado numa &uacute;nica passagem por um forno de reflow.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEPSGkHIqqheqyXn5uVENmbtNePP2s_jewFI2IE8pHMVTVYM54e0lzAiO16l91v8e8UuR9y3UooDCKr8E_LEdPPwbie0oCLq5yuOq0VneoMko1nE2ZUJBD-9_NRH_dXys9YEu3z0CkbNSaS2qeljYCbvWB9i2wT3z66Urre_g2kKssZ7istmxJH50NfhYE/s800/rpi5back.jpg"><img alt="" border="0" data-original-height="534" data-original-width="800" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEPSGkHIqqheqyXn5uVENmbtNePP2s_jewFI2IE8pHMVTVYM54e0lzAiO16l91v8e8UuR9y3UooDCKr8E_LEdPPwbie0oCLq5yuOq0VneoMko1nE2ZUJBD-9_NRH_dXys9YEu3z0CkbNSaS2qeljYCbvWB9i2wT3z66Urre_g2kKssZ7istmxJH50NfhYE/s600/rpi5back.jpg" width="600"></a></div> <br><div></div> <br> Este novo m&eacute;todo, afinado em parceria com a Sony no Reino Unido (que trata do processo de montagem dos Raspberry Pi), permitiu reduzir as devolu&ccedil;&otilde;es em 50% e acelerar a produ&ccedil;&atilde;o em 15%. A empresa tamb&eacute;m conseguiu tornar o processo mais ecol&oacute;gico, eliminando um banho de soldadura que se traduz num corte de 43 toneladas de emiss&otilde;es de CO2 por ano.<br><br> Thu, 15 May 2025 12:33:00 +0000 Aberto até de Madrugada: Apple prepara gestão AI da bateria dos iPhones https://abertoatedemadrugada.com/2025/05/apple-prepara-gestao-ai-da-bateria-dos.html https://abertoatedemadrugada.com/2025/05/apple-prepara-gestao-ai-da-bateria-dos.html <div><a href="https://abertoatedemadrugada.com/2025/05/apple-prepara-gestao-ai-da-bateria-dos.html"><img alt="" border="0" width="600" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK_Q9oU7Dm3u8xYH7ftTfrwssT34-lfrFlAEIhHo9xQwhWRGAjwYMTsT30hDOBYaBZAcvn6HpGNDvkQE6L70JvuQ88Jf7-4Lc-FzprIwUOak8TtVU-weq_SzpurgtLwew9Lj2C1NXy3oHrjfLonFoOKr-hwmc5E9QWGe6S1L_vY1IkwUVtuU5kV0NYkRJH/s1600/iphoneaibat.jpg"></a></div> Com o iOS 19, os iPhones poder&atilde;o aumentar a autonomia gra&ccedil;as a uma nova gest&atilde;o da bateria com tecnologia AI.<br><br><a name="more"></a> A Apple est&aacute; a preparar uma nova funcionalidade de <a href="https://www.bloomberg.com/news/articles/2025-05-12/apple-plans-ai-powered-battery-management-mode-for-devices-in-ios-19">poupan&ccedil;a de bateria alimentada por intelig&ecirc;ncia artificial</a>, que dever&aacute; chegar com o iOS 19. O sistema vai aprender os h&aacute;bitos di&aacute;rios de cada utilizador e ajustar a atividade em segundo plano para prolongar a autonomia ao longo do dia. Ao contr&aacute;rio de solu&ccedil;&otilde;es anteriores, a Apple est&aacute; a usar uma grande base de dados para treinar a AI, garantindo uma abordagem mais abrangente antes de se adaptar a cada utilizador.<br><br> Embora j&aacute; existam fun&ccedil;&otilde;es semelhantes em smartphones Android, nenhuma recorreu a AI nem a dados em larga escala, o que poder&aacute; tornar a proposta da Apple mais eficaz. Esta tecnologia poder&aacute; ser essencial para garantir uma boa autonomia no alegado iPhone 17 Air, que, devido ao seu design ultrafino, dever&aacute; contar com uma bateria mais pequena.<br><br> A Apple est&aacute; claramente a apostar em software inteligente para contornar limita&ccedil;&otilde;es de hardware, com a AI a reduzir dinamicamente o consumo de energia com base na hora do dia e nos padr&otilde;es de utiliza&ccedil;&atilde;o das apps. Espera-se que a empresa mostre uma antevis&atilde;o desta funcionalidade j&aacute; em junho, durante o WWDC. Dito isto, ser&aacute; tamb&eacute;m dif&iacute;cil que este sistema fa&ccedil;a "milagres" fa&ccedil;a aos sistemas de poupan&ccedil;a j&aacute; existentes - mas no que diz respeito &agrave; autonomia, todos os minutos extra s&atilde;o sempre bem vindos.<br><br> Thu, 15 May 2025 11:00:00 +0000 Aberto até de Madrugada: Hub USB 3.0 Vkusra 7-portas com interruptores individuais a €24 https://abertoatedemadrugada.com/2025/05/hub-usb-30-vkusra-7-portas-com.html https://abertoatedemadrugada.com/2025/05/hub-usb-30-vkusra-7-portas-com.html <div><a href="https://abertoatedemadrugada.com/2025/05/hub-usb-30-vkusra-7-portas-com.html"><img alt="" border="0" data-original-height="928" data-original-width="1472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDUEY4sLq8xAu7dKJDcPNF2u4PXxcld6zKcegZ0BGxPIIwz-xs1Z4RUsJj3cIwaCpqTy2UmLrpOBlg6F-KPaniHnTDDXYJGYtSRo8nOtDHZ3qU7gIxwyENggfUj9m51T6uPiT8iQndqtY/s1600/hubusb.jpg" width="600"></a></div> Precisam de um hub USB 3.0 com quantidade generosa de portas, mas que tamb&eacute;m permita deslig&aacute;-las individualmente sem tirar / meter fichas? Ent&atilde;o espreitem este hub.<br><br><a name="more"></a> Os hubs USB tornaram-se uma necessidade da vida moderna, especialmente para acompanharem os port&aacute;teis que v&ecirc;m equipados com poucas portas USB, que rapidamente se esgotam assim que ligamos um teclado e rato externo. Adicionalmente, h&aacute; casos particulares, de pessoas que precisam de um n&uacute;mero superior de portas USB. Este <a href="https://amzn.to/3tfLk7w">hub da Vkusra tem 7 portas</a> que permitem maior liberdade na quantidade de dispositivos USB que podemos utilizar, mas o que o torna mais especial &eacute; o facto de todas as portas contarem com o seu pr&oacute;prio bot&atilde;o para que possam ser ligadas ou desligadas individualmente.<br><div><a href="https://amzn.to/3tfLk7w"><img alt="" border="0" data-original-height="642" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiln8MMtqnFbGPG7sVLUAlS58CGhyd_YvLljJxkeIgkFB-gBEbi5FHCh4OQz5UZrWW0u5x_yNVEzJyapscyYrRZ5p3rnn9pDvK68S84NoEdCDngFnbpdetqosFKTgegxhLxU9ZmJV7tO2c/s560/hubusb_.jpg"></a></div> O <a href="https://amzn.to/3tfLk7w">hub USB 3.0 Vkusra 7-portas com interruptores</a> est&aacute; dispon&iacute;vel por apenas 24 euros na Amazon Espanha, e inclui fonte de alimenta&ccedil;&atilde;o - activar desconto de 20%.<br><br> Pode ser o companheiro ideal para quem tiver que fazer a replica&ccedil;&atilde;o de pens USB em m&eacute;dia escala (se precisar de mais, pode sempre investir num <a href="https://amzn.to/3ThfHVU">hub de 16 portas</a>, tamb&eacute;m com interruptores), ou simplesmente que tenha uma s&eacute;rie de equipamentos USB que deseje manter acess&iacute;veis (por exemplo: gravador CDs externo, scanner, c&acirc;maras digitais, webcam, discos externos, etc.) mas com a possibilidade de os poder desligar sem retirar a ficha - algo que at&eacute; pode funcionar como medida de protec&ccedil;&atilde;o, prevenindo que uma infec&ccedil;&atilde;o de ransomware se possa espalhar a um disco externo de backup, que apenas se ligue para os backups e depois se mantenha desligado.<br><br><br> Acompanha as melhores promo&ccedil;&otilde;es di&aacute;rias no nosso grupo <a href="https://www.facebook.com/groups/AadM.Promos?sorting_setting=CHRONOLOGICAL">AadM Promos</a>.<br><br> Thu, 15 May 2025 09:00:00 +0000 Aberto até de Madrugada: Google revela Material 3 Expressive https://abertoatedemadrugada.com/2025/05/google-revela-material-3-expressive.html https://abertoatedemadrugada.com/2025/05/google-revela-material-3-expressive.html <div><a href="https://abertoatedemadrugada.com/2025/05/google-revela-material-3-expressive.html"><img alt="" border="0" data-original-height="902" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9Gp7ZfZALaaDaiTdhPfBaNv6z3D6R79cylKjxN4AvzvznSy6mE68kcPmPIg4BrjpVLp5oOFvrCCGmSkdwYbZ9vJNuyKFqzewBThLqXaF3QG7pYyeraYDHrNES-ycdvTRErtLzDH_oelI9e0uMddyrf7s3JNOgk5NrIxB0i6TP4SQuukubwvPJvqvwHHMi/s1600/material3.jpg" width="600"></a></div> Depois dos leaks, chega o momento em que a Google oficializa o Material Design 3 Expressive, a mais recente vers&atilde;o do seu "look" para o Android (e n&atilde;o s&oacute;).<br><br><a name="more"></a> A Google revelou o <a href="https://blog.google/products/android/material-3-expressive-android-wearos-launch/">Material 3 Expressive</a>, a nova linguagem de design que vai estrear no Android 16 e no Wear OS 6. Esta atualiza&ccedil;&atilde;o refor&ccedil;a o Material You com mais op&ccedil;&otilde;es de personaliza&ccedil;&atilde;o, cores mais ousadas e anima&ccedil;&otilde;es mais fluidas, dando um ar mais moderno e expressivo ao ecossistema Android.<br><br> No Android 16, haver&aacute; anima&ccedil;&otilde;es mais din&acirc;micas, feedback h&aacute;ptico melhorado e um novo painel de defini&ccedil;&otilde;es r&aacute;pidas, agora redimension&aacute;vel, reorganiz&aacute;vel e com fundo desfocado. As paletas de cores din&acirc;micas tamb&eacute;m recebem um upgrade, e as apps da Google ser&atilde;o as primeiras a adotar o novo visual. O sistema vai ainda introduzir as Live Updates - notifica&ccedil;&otilde;es din&acirc;micas para atividades como navega&ccedil;&atilde;o ou entregas, vis&iacute;veis at&eacute; no Always-on Display.<br><br><div></div> <br> O Wear OS 6 vai seguir o mesmo caminho, com uma interface otimizada para ecr&atilde;s redondos, melhor aproveitamento de espa&ccedil;o e cores personalizadas em todo o sistema. A Google promete tamb&eacute;m anima&ccedil;&otilde;es mais suaves, autonomia 10% superior e a chegada do assistente Gemini AI aos rel&oacute;gios.<br><br> Os utilizadores beta do Android 16 poder&atilde;o experimentar o Material 3 Expressive numa atualiza&ccedil;&atilde;o futura, enquanto o novo visual para o Wear OS 6 s&oacute; chega mais tarde este ano. Mais detalhes sobre o Android 16 ser&atilde;o revelados na confer&ecirc;ncia Google I/O na pr&oacute;xima semana.<br><br> Thu, 15 May 2025 07:00:00 +0000 Aberto até de Madrugada: Google vai pagar $1.37B para encerrar caso de privacidade de dados no Texas https://abertoatedemadrugada.com/2025/05/google-vai-pagar-137b-para-encerrar.html https://abertoatedemadrugada.com/2025/05/google-vai-pagar-137b-para-encerrar.html <div><a href="https://abertoatedemadrugada.com/2025/05/google-vai-pagar-137b-para-encerrar.html"><img alt="" border="0" data-original-height="897" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbolN2jSMFT6zQuU5EXrG3uxpq2cD_6VZcA-u5tY7ce0_bZHIdTEEetM1MhG8Rn3Gvh-i4_Dgbvj8sczBvlz8CdAMpyj0-j00gz6RPFlLWd5_PtXHej2D04N-2mJieRb0dzuLOVtW2wccriQpl1W2TkpGwLkWkI_r-3eFe_5Hz0eR7b6lUtU_VpEevo-oY/s1600/gooogle.jpg" width="600"></a></div> Apesar das gigantes tecnol&oacute;gicas frequentemente culparem a UE por ser demasiado restritiva nas pol&iacute;ticas de dados, a Google n&atilde;o se livra de um pagamento "bilion&aacute;rio" no Texas.<br><br><a name="more"></a> A Google vai pagar 1,375 mil milh&otilde;es de d&oacute;lares para encerrar um <a href="https://www.bleepingcomputer.com/news/legal/google-to-pay-1375-billion-to-settle-texas-data-privacy-violations/">processo de privacidade de dados no Texas</a>, tornando-se a maior indemniza&ccedil;&atilde;o estatal de sempre contra a gigante tecnol&oacute;gica. O caso, iniciado em 2022, acusava a Google de recolher dados biom&eacute;tricos dos texanos, como scans faciais e de voz, sem o devido consentimento, violando as leis de privacidade do estado.<br><br> Segundo o processo, a Google usava esses dados desde 2015 para potenciar o seu neg&oacute;cio de publicidade direcionada, al&eacute;m de monitorizar localiza&ccedil;&atilde;o e pesquisas dos utilizadores, mesmo em modo inc&oacute;gnito no Chrome. O caso &eacute; considerado uma "vit&oacute;ria hist&oacute;rica", ultrapassando largamente outros acordos semelhantes noutras jurisdi&ccedil;&otilde;es.<br><br> A Google afirmou que este acordo encerra reclama&ccedil;&otilde;es antigas que j&aacute; levaram a altera&ccedil;&otilde;es nos seus produtos e pol&iacute;ticas, n&atilde;o sendo necess&aacute;rias mais a&ccedil;&otilde;es. A empresa sublinhou ainda que o acordo n&atilde;o representa qualquer admiss&atilde;o de culpa.<br><br> Este n&atilde;o &eacute; o primeiro embate do Texas com gigantes da tecnologia. Em 2024, o estado fechou um acordo de 1,4 mil milh&otilde;es de d&oacute;lares com a Meta por uso indevido de reconhecimento facial, e no in&iacute;cio deste ano processou a Allstate e a Arity por recolha ilegal de dados de condu&ccedil;&atilde;o de milh&otilde;es de americanos.<br><br> Wed, 14 May 2025 20:00:00 +0000 Aberto até de Madrugada: DJI lança Mavic 4 Pro com mais autonomia e qualidade https://abertoatedemadrugada.com/2025/05/dji-lanca-mavic-4-pro-com-mais.html https://abertoatedemadrugada.com/2025/05/dji-lanca-mavic-4-pro-com-mais.html <div><a href="https://abertoatedemadrugada.com/2025/05/dji-lanca-mavic-4-pro-com-mais.html"><img alt="" border="0" data-original-height="840" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOGa5t729cp0sTTWMxHg6aVERR78Dffiy_nZd4s_1UWFF5HBdY076S2Uyb2qPjAL77_UADDgr6yent-OKutJjv3IYKF8atOTiunGHPrqaNzneqeZ696cwiDm-E76_jKBxUPbaMcG8v7oQo7u0ACTDy219zsRMQslPl08D7PwZITLWPnFelNhQuH2tKM225/s1600/djimavic4pro.jpg" width="600"></a></div> A DJI refor&ccedil;a o seu cat&aacute;logo com o novo drone Mavic 4 Pro com mais autonomia, qualidade de imagem melhorada, e novo gimbal 360&deg; Infinity.<br><br><a name="more"></a> A DJI revelou oficialmente o <a href="https://www.dji.com/uk/media-center/announcements/dji-release-mavic-4-pro">Mavic 4 Pro</a>, que chega com melhorias em praticamente todos os aspetos. O destaque vai para o novo gimbal 360&deg; Infinity, que permite rodar completamente as c&acirc;maras para capturar v&iacute;deos verticais e &acirc;ngulos criativos. Este gimbal suporta tr&ecirc;s c&acirc;maras renovadas: uma principal Hasselblad de 100MP, uma telefoto m&eacute;dia de 48MP e uma telefoto longa de 50MP, todas com reprodu&ccedil;&atilde;o de cores consistente e capacidades de v&iacute;deo at&eacute; 6K.<br><br> Em termos de desempenho, o Mavic 4 Pro traz uma bateria de 95Wh, garantindo at&eacute; 51 minutos de voo e velocidades que podem chegar aos 90km/h. O sistema de transmiss&atilde;o O4+ foi melhorado, permitindo um alcance m&aacute;ximo de 41km, com transmiss&atilde;o de v&iacute;deo HDR de 10 bits at&eacute; 30km.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIx2KBpxWDVjeqzjDVE26_2_6-2zIV8-WXA64rRmUlaO85s4ttaHKjnSAhZZpBcCZG6PSj7M6tcYsMvpGn_wbx7dLSoRzA2ExtNVFiWygEOlb035ClIhKVgQbYI-kAVKdyBvhkZ_77-fzDAyN3PlCICelKAMaHdljbs0RaoWiOTl6LXoBTkTtxCZrxHVs9/s1195/mavic4prospecs.jpg"><img alt="" border="0" data-original-height="1195" data-original-width="880" height="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIx2KBpxWDVjeqzjDVE26_2_6-2zIV8-WXA64rRmUlaO85s4ttaHKjnSAhZZpBcCZG6PSj7M6tcYsMvpGn_wbx7dLSoRzA2ExtNVFiWygEOlb035ClIhKVgQbYI-kAVKdyBvhkZ_77-fzDAyN3PlCICelKAMaHdljbs0RaoWiOTl6LXoBTkTtxCZrxHVs9/s600/mavic4prospecs.jpg"></a></div> A seguran&ccedil;a e fun&ccedil;&otilde;es inteligentes tamb&eacute;m receberam melhorias. O drone conta com seis c&acirc;maras olho de peixe com melhor desempenho em pouca luz, al&eacute;m de dois processadores para navega&ccedil;&atilde;o e dete&ccedil;&atilde;o de obst&aacute;culos, mesmo sem GPS. O sistema ActiveTrack 360&deg; atualizado permite seguir ve&iacute;culos at&eacute; 200 metros de dist&acirc;ncia, mesmo que parcialmente ocultos.<br><br> A DJI lan&ccedil;a ainda o novo comando RC Pro 2 com ecr&atilde; mini-LED de 7"e o Parallel Charging Hub, que carrega tr&ecirc;s baterias de forma eficiente ou funciona como power bank de 100W. O Mavic 4 Pro j&aacute; est&aacute; dispon&iacute;vel na Europa a partir dos &euro;2.100, com op&ccedil;&otilde;es mais completas a chegarem aos &euro;3.540.<br><br><div></div> Wed, 14 May 2025 17:30:00 +0000 Aberto até de Madrugada: Monitor 27&quot; 4K ASUS ROG Strix XG27UCS de 160Hz a €329 https://abertoatedemadrugada.com/2025/05/monitor-27-4k-asus-rog-strix-xg27ucs-de.html https://abertoatedemadrugada.com/2025/05/monitor-27-4k-asus-rog-strix-xg27ucs-de.html <div><a href="https://abertoatedemadrugada.com/2025/05/monitor-27-4k-asus-rog-strix-xg27ucs-de.html"><img alt="" border="0" data-original-height="888" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWAYAaMigVU-7MjR7t8gU8pW_DlzcrrIHcG-n5XjgUBQ7ZHuuRZQAzdb3zKJHNL0ZqBUsn6ITaRfjJbtaqa5k5cGGKQqKLgZLr01wI0FlR7h3MoTydZuGn_SFkCUWqKO0HVqrlVyLDzQH5jXHUHSeq30ATbmocWLmq-j0WfY50w14Lm68orhteNqnji9pS/s1600/ASUS_ROG_Strix_XG27UCS.jpg" width="600"></a></div> Ideal para quem procura um monitor 4K para entrar na &aacute;rea do gaming de alta-frequ&ecirc;ncia este ASUS ROG Strix XG27UCS permite dar o salto dos 60 Hz para os 160 Hz.<br><br><a name="more"></a> O <a href="https://amzn.to/3Wwdt5X">ASUS ROG Strix XG27UCS</a> &eacute; um monitor 4K UHD (3840 x 2160 pixeis) de 27" com G-Sync e FreeSync Premium Pro, que chega com um design atractivo e margens reduzidas no topo e nos lados, o que tamb&eacute;m facilita a sua utiliza&ccedil;&atilde;o em modo multi-monitor para um setup gaming mais envolvente.<br><br><div><a href="https://amzn.to/3Wwdt5X"><img alt="" border="0" data-original-height="750" data-original-width="1500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjng-au4FPuDsczPSzqvO0SNXe6p_n94_ZjQZLZRw54tQf2D2sNCGXgk0Uc9xNq78LIIrAuKPlm_s5doM7aRpu7w1gD1nLxRF_u2zPVszB8ir58X9MbNiUA0JOphtq9h4GRLSmPdHpPOtOz0W05ulbnubywh8bgXN3YRcG2Jr3sQtUpRfNrQwK3D5Bu0HQx/s600/StrixXG27UCS.jpg" width="600"></a></div> Este monitor <a href="https://amzn.to/3Wwdt5X">ASUS ROG Strix XG27UCS</a> est&aacute; dispon&iacute;vel por 329 euros na Amazon Espanha.<br><br> Ainda por cima estamos a falar de um monitor com painel IPS (Fast IPS), que garante a reprodu&ccedil;&atilde;o de todas as tonalidades de cor com exactid&atilde;o, combinando essa qualidade com a fluidez que &eacute; poss&iacute;vel obter com os 160 Hz. Mas claro que, para isso, ser&aacute; tamb&eacute;m conveniente assegurar que se tem um computador e placa gr&aacute;fica capazes de aguentar com os jogos a essas frequ&ecirc;ncias, caso contr&aacute;rio n&atilde;o estaremos a tirar total partido das suas capacidades. A n&iacute;vel das entradas temos 1x HDMI 2.1, 1x DisplayPort 1.4, e 1x USB-C, permitindo a f&aacute;cil liga&ccedil;&atilde;o de m&uacute;ltiplos dispositivos.<br><br><br> Acompanha as melhores promo&ccedil;&otilde;es di&aacute;rias no nosso grupo <a href="https://www.facebook.com/groups/AadM.Promos?sorting_setting=CHRONOLOGICAL">AadM Promos</a>.<br><br> Wed, 14 May 2025 15:30:00 +0000 Aberto até de Madrugada: Xiaomi 16 chega em Setembro com Snapdragon 8 Elite 2 https://abertoatedemadrugada.com/2025/05/xiaomi-16-chega-em-setembro-com.html https://abertoatedemadrugada.com/2025/05/xiaomi-16-chega-em-setembro-com.html <div><a href="https://abertoatedemadrugada.com/2025/05/xiaomi-16-chega-em-setembro-com.html"><img alt="" border="0" width="600" data-original-height="1000" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUQCNw09C7kEqiANbuIdb11aud6djPwU2Ee_qa6h7N6L4d0N0VqsScVYJ6WAnplJMKdK_rCUTzrFaJHx9wzmvamPb4XfkJvK_ijGmCW7LXTpzu4XmHmnYXHcucrW1YpdXX1vizyI7lS6fhBqBSMr1MRsuD44F05iHG3cSasPFN4jTgZUMcFcuiff2YJ314/s1600/xiaomi16.jpg"></a></div> O Xiaomi 16 poder&aacute; ser o primeiro smartphone no mercado com um Snapdragon 8 Elite 2, e chegar antes do tempo esperado.<br><br><a name="more"></a> A Xiaomi poder&aacute; antecipar o lan&ccedil;amento do Xiaomi 16, <a href="https://weibo.com/5888095979/Prk8Zk8Z4#comment">com rumores</a> a apontarem para uma apresenta&ccedil;&atilde;o em setembro. O equipamento dever&aacute; ser o primeiro a estrear o novo Snapdragon 8 Elite 2, inicialmente apenas na China, com uma exclusividade que, ao que tudo indica, durar&aacute; poucos dias.<br><br> O grande destaque vai mesmo para a bateria, com o Xiaomi 16 a ser testado com uns impressionantes 6.800 mAh de capacidade, algo in&eacute;dito num smartphone deste tamanho, j&aacute; que o ecr&atilde; n&atilde;o dever&aacute; crescer muito face ao modelo anterior. A confirmar-se, ter&aacute; tamb&eacute;m carregamento r&aacute;pido a 100W, colocando-o entre os topos de gama com maior autonomia do mercado.<br><br> Na fotografia, espera-se uma c&acirc;mara principal de 50 MP, complementada por uma lente telefoto perisc&oacute;pica, oferecendo mais versatilidade no zoom. O ecr&atilde; tamb&eacute;m promete liderar na sua categoria, podendo superar facilmente a concorr&ecirc;ncia.<br><br> Com este lan&ccedil;amento antecipado, tudo indica que a Qualcomm tamb&eacute;m dever&aacute; apresentar o seu Snapdragon 8 Elite 2 em setembro, mais cedo do que &eacute; habitual.<br><br> Wed, 14 May 2025 13:30:00 +0000 Aberto até de Madrugada: Samsung lança Galaxy S25 Edge com 5.8mm de espessura https://abertoatedemadrugada.com/2025/05/samsung-lanca-galaxy-s25-edge-com-58mm.html https://abertoatedemadrugada.com/2025/05/samsung-lanca-galaxy-s25-edge-com-58mm.html <div><a href="https://abertoatedemadrugada.com/2025/05/samsung-lanca-galaxy-s25-edge-com-58mm.html"><img alt="" border="0" data-original-height="952" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuIxOdJCxoH14zGBOZSC8lT-eAZz5nhamZHHO2LHd5pxuzRtwYGEteYa8t4p8w5QMER85IQZKjAT4pmUU7tH44ASzWmk7jaZu8PMuGG3HXQx-MCfl_-TXUm9qK8bMWSgC6mgHr2iDEsIkqFcIu9MjoihNost_Q280boQsPC8559uuzUGU_CDBsV_58Nws6/s1600/s25slim.jpg" width="600"></a></div> Embora seja discut&iacute;vel se o mercado quer smartphones ultra-finos, a Samsung avan&ccedil;a com o seu Galaxy S25 Edge com 5.8mm de espessura.<br><br><a name="more"></a> A Samsung apresentou oficialmente o <a href="https://news.samsung.com/global/meet-the-samsung-galaxy-s25-edge-an-engineering-marvel-of-new-slim-hardware-innovation">Galaxy S25 Edge</a>, posicionando-o como o seu smartphone ultra-fino para enfrentar o futuro iPhone 17 Air. Com apenas 5,8 mm de espessura e 163 g de peso, o S25 Edge aposta num design elegante, embora isso implique uma bateria mais modesta de 3.900 mAh. O ecr&atilde; &eacute; um Dynamic AMOLED 2X de 6,7" com resolu&ccedil;&atilde;o QHD+ e taxa de atualiza&ccedil;&atilde;o vari&aacute;vel at&eacute; 120 Hz, protegido por Gorilla Glass Ceramic 2. No interior, conta com o processador Snapdragon 8 Elite for Galaxy, 12 GB de RAM e at&eacute; 512 GB de armazenamento.<br><br> Na fotografia, destaca-se uma c&acirc;mara principal de 200 MP que possibilita zoom &oacute;ptico 2x, acompanhada por uma ultrawide de 12 MP com capacidades macro. As selfies ficam a cargo de uma c&acirc;mara frontal de 12 MP. O telem&oacute;vel inclui ainda certifica&ccedil;&atilde;o IP68, estrutura em tit&acirc;nio, e corre Android 15 com One UI 7.<br><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZd0OMx5BmLKUbnqD4XfGpKmD3J1ijDGsr6qQ-60fe8zj40810mak6Q08pomZ5Sd4eQawFw0JsP55oGvViPamp6KRkPF6STNV8risn81V0TjZLA-sOJfbIHJPiQhlhHi2Bb6hstB6kDIOyQpNU4Ro0bqAKK9EJGsJLlSHhrashW57oNJknL-OoXyBG2Jft/s1200/s25edge.jpg"><img alt="" border="0" data-original-height="641" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZd0OMx5BmLKUbnqD4XfGpKmD3J1ijDGsr6qQ-60fe8zj40810mak6Q08pomZ5Sd4eQawFw0JsP55oGvViPamp6KRkPF6STNV8risn81V0TjZLA-sOJfbIHJPiQhlhHi2Bb6hstB6kDIOyQpNU4Ro0bqAKK9EJGsJLlSHhrashW57oNJknL-OoXyBG2Jft/s600/s25edge.jpg" width="600"></a></div> O Galaxy S25 Edge fica dispon&iacute;vel nas cores Titanium Silver, Titanium Jetblack e Titanium Icyblue. Os pre&ccedil;os recomendados para Portugal s&atilde;o 1.419&euro; para a vers&atilde;o de 512GB e 1.299&euro; para a vers&atilde;o de 256GB, com as primeiras entregas marcadas para 30 de maio.<br><br> Wed, 14 May 2025 11:00:00 +0000