quarta-feira, 25 de setembro de 2013

Criando um arquivo TXT com C#



















Olá pessoal, aqui mais uma daquelas dicas rápida, e extremamente necessária para quem esta começando. Como gravar um arquivo TXT em uma determinada pasta?

Temos que ter o caminho completo de onde será gravado, junto com o nome do arquivo a ser gerado, e o conteúdo do arquivo.

O Framework já possui a função que escreve o arquivo (File.WriteAllText, que fica dentro do Namespace System.IO), basta invoca-lá e passar como parâmetros o caminho completo, e o conteúdo. O código fica assim:

string caminhoArquivo = @"C:\apps\NomeArquivo.txt"; //caminho completo
            
StringBuilder sConteudo = new StringBuilder();
sConteudo.AppendLine("Primeira linha do arquivo.");
sConteudo.AppendLine("Segunda linha do arquivo.");
sConteudo.AppendLine("Terceira e última linha do arquivo.");
//invocando o método WriteAllText, informando o caminho e o conteúdo
System.IO.File.WriteAllText(caminhoArquivo, sConteudo.ToString());

Claro que esse simples código apenas gera o TXT com o conteúdo, porém vai da sua necessidade verificar se o arquivo existe, se você quer adicionar conteúdo a um arquivo existente, enfim, as possibilidade são infinitas sobre o que pode ser feito com a criação/manutenção de um arquivo.

terça-feira, 24 de setembro de 2013

Dica - Rodando ASP.Net em um servidor de Produção



















Uma dica muito valiosa, e importante é não executar o ASP.Net em um servidor de produção com o DEBUG ativado.

Alguns motivos:
  • A compilação de páginas é muito mais demorada, pois as otimizações do engine são desabilitadas;
  • O código leva um tempo maior para ser executado, pois os caminhos de depuração estão desativados;
  • O pool da aplicação do IIS passa a utilizar muito mais memória para aplicação;
  • Imagens e scripts utilizados por componentes (como o Ajax Toolkit, por exemplo) não são armazenados no cachê;
  • E a mais perigosa de todas, é que com isso, em caso de uma exceção não tratada as mensagens são exibidas detalhadamente no servidor remoto, expondo a aplicação;
O recurso é muito importante e útil na resolução de problemas, porém é uma boa prática deixar a função desabilitada em um ambiente de produção.

terça-feira, 17 de setembro de 2013

Dica de SQL - Inserindo data no Formato dd/MM/aaaa




















Todo mundo já passou por algum tipo de problema na hora de fazer uma inserção, ou atualização em um banco de dados. Você passa a data no formato (dd/MM/aaaa) ele grava em outro (aaaa/MM/dd), (aaaa/dd/MM), ou qualquer outro formato padrão que esteja configurado no servidor.

Esse é um problema comum, pois tem haver com as configurações de data e hora do servidor (geralmente configurados no padrão EN).

Para inserirmos uma data de forma correta, independete do formato do servidor, temos que converter o valor.

Vamos criar uma tabela temporária e tentar inserir uma data no formato dd/MM/aaaa (30/12/2013).

1.º - CREATE TABLE #tmpTable (data DATE)
2.º - INSERT INTO #tmpTable (data) VALUES ('30/12/2013')

O seguinte erro é apresentado:





Isso aconteceu pois o sistema entendeu que estamos inserindo o mês 30, do dia 12, do ano de 2013, quando na verdade estamos inserindo o dia 30, do mês 12, de ano de 2013.

Para essa inserção/atualização funcionar vamos converter o formato utilizando a seguinte síntaxe:
INSERT INTO #tmpTable (data) VALUES (CONVERT(DATETIME,'30/12/2013',103))



Bem, essa é apenas uma dica simples de como inserir a data no formato dd/MM/aaaa em um campo do tipo DATE ou DATETIME.

segunda-feira, 16 de setembro de 2013

C# - Como abrir um arquivo (DOC, PDF, XLS) pelo Windows Form




















Uma dica simples e rápida para você. Quando precisar abrir algum arquivo de dentro de uma aplicação C# (Windows Forms) é só executar o comando:

System.Diagnostics.Process.Start(@"C:\teste\nomeArquivo.doc");

Esse arquivo pode conter qualquer extensão, isso mesmo, qualquer extensão, pois quem abre o aplicativo (arquivo) não é o Framework e nem a sua aplicação .Net, e sim o programa correspondente a extensão (previamente instalado no computador). Por exemplo, se você chamar o arquivo nome.doc, automaticamente o MS Word será aberto (se estiver instalado - óbvio), pois é o programa associado a extensão. Se você colocar um arquivo que não existe uma associação à um programa, será aberto uma tela para que você selecione o programa que deseja utilizar para abrir o arquivo.

sexta-feira, 13 de setembro de 2013

Entenda o que é Pascal Case e Camel Case



















Pascal Case e Camel Case são denominações (em inglês) para a prática de escrever palavras compostas ou frases, e são largamente utilizadas em linguagens de programação, como C#, Java, Ruby, PHP, principalmente nas definições de classes, objetos, e métodos.

Camel Case
Cada palavra é iniciada por uma letra minúscula, e unidas sem espaço. Geralmente utilizado na criação de classes e objetos.
Exemplo: nomeCompleto, valorDesconto, tipoCliente

Pascal Case
Cada palavra é iniciada com uma letra maiúscula. O padrão PascalCase é mais utilizado para nomear métodos.
Exemplo: CalculaDesconto(), ValidaEmail(), ImprimeCadastro()

Esse padrão é muito utilizado (em alguns casos obrigatórios) no mercado, além de ser uma boa prática. Agora um exemplo de um trecho de código utilizando os padrões Pascal Case e Camel Case.

int totalContador = 0;
void ExibirMensagem(string nome)
{
   string mensagemCompleta = string.format("Olá {0}, você é o visitante de número {1}", nome, totalContador);
   totalContador++;

}


quinta-feira, 12 de setembro de 2013

Dica de SQL - Identificar se banco está em Full Recovery Model























Quando alteramos o recovery model de uma base para full na verdade a base não passa a trabalhar imediatamente com o recovery model full. Ela estará utilizando um recovery model pseudo-simple até que um backup full seja realizado e a base possa relamente trabalhar com o recovery model full. 

Como identificar se uma base está trabalhando com recovery model full ou pseudo-simple ? 

Nem sempre saber a data do último backup é suficiente, você precisa saber se o último backup foi realizado após a base ter sido mudada para recovery model full. O simples ato de mudar o recovery model para simple e depois para full - prática se tornando conhecida para limpar arquivos de log - inutiliza a sequencia de backups e faz a base trabalhar no recovery model pseudo-simple até que o próximo backup full seja realizado. 

Para identificar com maior precisão se um banco está trabalhando com recovery model full ou pseudo simple podemos utilizar a seguinte query : 

select name,last_log_backup_lsn from 
sys.databases a, sys.database_recovery_status b 
where a.database_id=b.database_id 

Com essa query basta examinarmos o campo last_log_backup_lsn. Se estiver nulo, o database não está em full, podendo estar no pseudo-simple recovery model. Se não estiver nulo, a sequencia de backups de logs está ok, o database está em full. 

quarta-feira, 11 de setembro de 2013

Dica de SQL - Obtendo o tamanho de um campo text/varchar(max)























A função LEN não funciona com campos do tipo text e varchar(max). Mas e se precisarmos saber o tamanho do campo para alguma finalidade?

A solução é bem simples, é só utilizar a função DATALENGTH. Essa função devolve o tamanho ocupado, em bytes, por um campo, independente do tipo que seja. No caso de um campo texto, esse tamanho equivale ao tamanho do texto. 

Veja um exemplo : 
SELECT DATALENGTH(campo) FROM tabela 

Teremos o tamanho do campo texto em todos os registros. 

Temos apenas que nos atentar caso o campo seja do tipo ntext ou nvarchar(max), pois como o tamanho é em bytes, o resultado é o dobro do tamanho. Uma dica é dividi-lo por 2, caso seja necessário.