Postagens

Mostrando postagens de 2009

Postagem em destaque

Código Limpo: Nomes Significativos

Imagem
Às vezes fico com um assunto na cabeça por semanas, até achar uma situação ou um exemplo que esclareça a situação. Explico: estava querendo já a algum tempo escrever sobre boas práticas de programação, e pensei em iniciar por "Nomes Significativos", para seguir a nomenclatura utilizada pelo ótimo livro Código Limpo , de Robert C. Martin.  Entretanto, ficava sempre amarrado em exemplos que pareciam ser bons, mas que ainda eu não tinha visto a utilidade prática.  Antes de continuar preciso explicar que tenho um hábito de anotar num bloco de papel todas as ideias que surgem, pois elas desaparecem com a mesma velocidade que aparecem. Para isso tenho um bloco e caneta na mesa de cabeceira (além de um no banheiro), pois esses são os lugares onde tenho mais ideias... Vai entender... Semana passada, estava com um problema bem complicado e tive uma ideia: "vou criar uma variável para indicar que quando um arquivo tiver um certo tamanho deve gravar algumas informações no log. Pois

Ponto de Restauração Automático

Você pode automatizar a criação de pontos de restauração do Windows. Para isso basta criar um arquivo com a extensão .VBS e inserir o seguinte código: Set sr = getobject("winmgmts:\\.\root\default:Systemrestore") msg = "Novo Ponto de Restauração criado." & vbCR msg = msg & "Listado: " & vbCR msg = msg & "Ponto de Restauração automático em " & Date & " " & Time If (sr.createrestorepoint("--- Ponto de restauração automático ---", 0, 100)) <> 0 Then MsgBox "Criação de ponto falhou!" End If Depois basta arrastar o arquivo criando para a pasta Iniciar > Programas > Inicializar. Assim, cada vez que você iniciar o Windows o script criará um ponto de restauração. Você também pode agendar (Iniciar > Programas > Acessórios > Ferramentas de Sistema > Tarefas Agendadas) a execução do programa com a periodicidade que você desejar. O programa pode ser baixado daqui :

VirusTotal

Encontrei por acaso um serviço bem interessante na rede: é o VirusTotal . "VirusTotal é um serviço que analisa arquivos suspeitos e proporciona uma rápida detecção de vírus, worms, cavalos de tróia, e todos os tipos de arquivos maliciosos detectados por vários mecanismos de antivírus."

Quadrado Mágico - Parte 1

Irei publicar uma série de postagens sobre algoritmos para resolução dos Quadrados Mágicos . A postagem de hoje é bem simples e tem algumas limitações (por exemplo, só aceita quadrados de grau 3). Mas minha intenção é justamente essa: pegar o algoritmo e ir tornando-o mais complexo e mais genérico. No futuro, tentarei adaptar esse algoritmo para resolução de outro quebra-cabeças que gosto muito: SUDOKU. Mas vamos ao que interessa, que é o código do programa. Desenvolvi em Delphi, mas ele é simples e facilmente adaptável a outras linguagens: {$APPTYPE CONSOLE} program qm; uses SysUtils, Windows, Dialogs, Math, Forms; const GRAU = 3; // Grau do quadrado GRAU2 = GRAU*GRAU; // Total de elementos do quadrado TOTAL = (((1 + GRAU2) * GRAU2) div 2) div GRAU; // Soma total a ser alcançada type TAQuad = array[1..GRAU2] of integer; // Tipo Quadrado var q: TAQuad; limite: int64; // -------------------------------------------------------- // Mostra

Falta de criatividade

Por que os nomes de sistemas, em sua grande maioria, são siglas e começam com a letra S? SCP (Sistema de Contas a Pagar), SCR (Sistema de Contas a Receber), SCE (Sistema de Controle de Estoque), SGE (Sistema de Gestão Empresarial), e por aí vai. Sejam criativos!

BlueScreenView

Imagem
O utilitário BlueScreenView , um freeware da NirSoft, mostra a mesma mensagem que você recebe na Blue Screen of Death (Tela Azul da Morte). É uma maneira muito mais prática e fácil de tentar resolver o problema, pois era comum ter que anotar os dados numa folha de papel ou tirar uma foto da tela.

Removendo caracteres especiais de uma string

Algumas vezes precisamos remover alguns caracteres especiais de uma string. A maneira mais fácil de fazermos isso é utilizando as expressões regulares. Seu uso não é nenhum bicho de 7 cabeças. Segue aqui, um exemplo em ColdFusion. texto = 'Somente_Numeros e Letras 123456*'; retorno = reReplace(texto, '[^[:digit:][:alpha:]]', '', 'all'); // resultado: SomenteNumeroseLetras123456

Visualizando código fonte com SyntaxHighlighter

Já havia visto em vários blogs, o código de alguns programas bem formatado, com realce de cores, etc. Resolvi ir atrás e descobri que foram feitos utilizando a biblioteca SyntaxHighlighter . Se você quiser utilizá-lo em seu blog siga o roteiro abaixo. 1. Entre em Layout > Editar HTML e insira o seguinte código logo acima da tag </HEAD> : <link href="http://alexgorbatchev.com/pub/sh/2.1.364/styles/shCore.css" rel="stylesheet" type="text/css"> <link href="http://alexgorbatchev.com/pub/sh/2.1.364/styles/shThemeDefault.css" rel="stylesheet" type="text/css"> <script src="http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shCore.js" type="text/javascript"> <script src='http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shBrushCpp.js' type='text/javascript'/> <script src='http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shBrushJava.js' type='t

ODIN - Open Disk Image in a Nutshell

Imagem
Descobri um software muito interessante: ODIN - Open Disk Image in a Nutshell. Ele permite criar uma cópia de uma partição e restaurá-la posteriormente. É muito simples de usar e não é necessário instalá-lo, basta descompactar e executar. É muito útil para que gosta de testar, instalar, desinstalar diversos programas. Download: ODIN - Open Disk Image in a Nutshell

Lista de serviços do Windows

Esses dias fiz algumas alterações na inicialização de alguns serviços do Windows e depois não lembrava mais quais eu tinha habilitado/desabilitado. Para resolver esse problema, fiz um pequeno programa em Delphi que salva o status de inicialização de todos os serviços. Depois de compilá-lo, basta executar diretamente no Prompt de Comando. program SaveSvc; {$APPTYPE CONSOLE} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry; var reg : TRegistry; list: TStringList; arq: text; i, n: integer; nomeArquivo: string; begin if paramstr(1) <> '' then nomeArquivo := paramstr(1) else nomeArquivo := 'services.reg'; // cria a lista, vazia, em memória list := TStringList.Create; // cria o registro reg := TRegistry.Create; // localização da chave reg.RootKey := HKEY_LOCAL_MACHINE; // abre a chave dos serviços reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services') ; // popula a lista com todos os serviços reg.Get

Aplicação dos Logaritmos na Prática

Quando você está estudando logaritmos em Matemática, dificilmente alguém vai lhe dizer qual uma aplicação prática para isso. Mas saiba que existe: Suponha que você esteja construindo um gráfico com o número de acessos a um site. Num determinado período, de manhã por exemplo, o número máximo de acessos foi 43 às 11:00. À tarde, o número máximo de acessos foi 951. Para determinar qual o valor máximo no eixo y, basta utilizar a fórmula: maxY = 10 ^ (int(log(n)) + 1), onde n = 43 maxY = 10 ^ (int(log(n)) + 1) maxY = 10 ^ (int(1,6334) + 1) maxY = 10 ^ 2 maxY = 100 Já para o número de acessos feitos à tarde, ficaria assim: maxY = 10 ^ (int(log(n)) + 1), onde n = 951 maxY = 10 ^ (int(log(n)) + 1) maxY = 10 ^ (int(2,9781) + 1) maxY = 10 ^ 3 maxY = 1000 Pronto, de manhã o gráfico teria o eixo Y com o valor máximo igual a 100 e à tarde, com o valor máximo igual a 1000.

Exemplos de uso do NirCmd

O programa NirCmd permite você automatizar algumas tarefas de maneira muito simples, por exemplo: • Screenshot nircmd savescreenshot c:\temp\scr~%currdate.yyyyMMdd%_~%currtime.HHmmss%.png • 10 screenshot com intervalo de 1 minuto entre eles nircmd loop 10 60000 savescreenshot c:\temp\scr~%loopcount%.png • Deixa o pendrive como "read-only" nircmd regsetval dword "HKLM\System\CurrentControlSet\Control\StorageDevicePolicies" "WriteProtect" "1" • Deixa o pendrive como "writable" nircmd regsetval dword "HKLM\System\CurrentControlSet\Control\StorageDevicePolicies" "WriteProtect" "0"