Usando Ionic.Utils.Zip com c#

O assembly Ionic.Utils.Zip é composto de classes fáceis de usar e é usado para a criação de arquivos compactados(zipados).Nesse exemplo,mostrarei como criar um arquivo simples e compactado via código.



Using Ionic.Utils.Zip; //usando a referencia
.
.
.
.
Zipfile zip = new ZipFile("fotos.zip"); //criando a instancia
zip.AddFile("foto001.jpg"); //adicionando arquivos
zip.AddFile("foto002.jpg");
zip.AddFile("foto003.jpg");
zip.Save("fotos.zip"); //salvando o zip


Tutorial - Manipulando XML com C#

Para manipular arquivos XML podemos usar as classes do namespace System.Xml,praticas e faceis de aprender .Nesse tutorial usaremos a classe XMLTextWriter,para a escrita e a classe XMLDocument para a iteração sobre os nós do arquivo.

Escrevendo um arquivo XML

XmlTextWriter chave = new XmlTextWriter("galeria_arte.xml",null);
chave.WriteStartDocument();
chave.WriteStartElement("Quadro");
chave.WriteElementString("Autor", "Henri Matisse");
chave.WriteElementString("Título", "Natureza Morta com Magnólias");
chave.WriteElementString("Estilo", "Fauvismo");
chave.WriteElementString("Ano", "1941");
chave.WriteEndElement();
chave.Close();



Lendo o conteúdo de um arquivo XML

Para ler um XML vamos primeiro declarar um novo XMLDocument,em seguida iterar sobre os nós e por fim recuperar os seus valores.


XmlDocument doc = new XmlDocument();
doc.Load("galeria_arte.xml");
XmlNode nos = doc.SelectSingleNode("/Quadro/Autor");
XmlNode nos2 = doc.SelectSingleNode("/Quadro/Titulo");
XmlNode nos3 = doc.SelectSingleNode("/Quadro/Estilo");
XmlNode nos4 = doc.SelectSingleNode("/Quadro/Ano");
string no1 = nos.InnerText;// para acessar o valor do elemento use a propriedade InnerText.


Como se pode notar,o namespace System.Xml oferece todo o suporte para a manipulaçao de xml.Se quiser se aprofundar no assunto consulte a documentação no forum msdn.

Trabalhando com arquivos e pastas no C#

Para facilitar o trabalho do desenvolvedor o namespace System.IO disponibiliza algumas classes bastante úteis e fáceis de usar,como a classe DirectoryInfo para manipulação das pastas e a classe FileInfo que promove informações e meios de manipulação de arquivos. O seguinte código retorna o numero de arquivos em determinada pasta.Ele verifica a existencia da pasta informada(caso contrario cria a mesma),recupera os arquivos armazenados nela e por fim faz a iteração que incrementa uma variavel do tipo int que representa o numero total de arquivos.


int VerificarArquivos()
{
int num_arqs = 0;
DirectoryInfo direc = new DirectoryInfo("C:/arquivos");
if (direc.Exists == true)
{
FileInfo[] arq = direc.GetFiles();

foreach (FileInfo arqs in arq)
{
num_arqs++;
}

}
else
{
direc.Create();
}
return num_arqs;
}


Dicas de Segurança em Formulários PHP

Os formulários e os dados vindos do cliente constituem um ponto chave na elaboração de qualquer projeto web.Devido à sua vulnerabilidade a ataques,todo desenvolvedor deve se preocupar tanto com a consistência quanto com a autenticidade desses dados.Para isso, o PHP disponibiliza funções nativas para evitar os tipos mais comuns de ataque,que são a injeção de sql e ataques cross-site scripting.A versão 5.0 traz a função mysql_real_escape_string() que escapa os caracteres especiais numa string para usar no mysql.Na prevenção do famigerado cross-site scripting devemos prover o sistema com um mecanismo de bloqueio de tags HTML,fazendo uso,por exemplo,da função strip_tags() do PHP,lembrando que esses tipos de ataques evoluem constantemente e uma filtragem de conteúdo é a abordagem mais recomendada para a proteção do sistema.

Ferramenta Refactor para Visual Studio

Estive trabalhando num projeto de cms em C# recentemente e me deparei com a necessidade de uma ferramenta de reutilização de código. Para aqueles que usam a versão Express do Visual Studio,a ferramenta refactor não disponibiliza a opçao encapsule field. Pensando em facilitar a vida e economizar o tempo desse pessoal, desenvolvi esta ferramenta em WPF que gera o código automaticamente,bastando apenas entrar com o nome do campo seguido do nome da propriedade. Em breve estarei disponibilizando para download aqui no blog.


Classe TOperacao

Classe muito útil que determina o tempo de duracao de qualquer operacao,seja ela local,consulta a bancos de dados,tempo de carregamento da página,etc.

Código

<?php
class TOperacao{

private $tinicial,$tfinal,$tgasto;

public function TOperacao()
{
$this->tinicial=0;
$this->tfinal=0;
$this->tgasto=0;
}

public function iniciarContagem()
{
$this->tinicial=microtime(true);
}

public function pararContagem()
{
$this->tfinal=microtime(true);
if($this->tfinal >= $this->tinicial)
{
$this->tgasto=$this->tfinal-$this->tinicial;
echo("
Tempo gasto na operação: $this->tgasto s");
}
}

}

?>


Exemplo de uso da Classe TOperacao:


<?php
require("TOperacao.php");
$tempo=new TOperacao();
$tempo->iniciarContagem(); //lembre-se de executar o metodo iniciar nas primeiras linhas
for($contador=0;$contador<100;$contador++)
{
print($contador);
}
$tempo->pararContagem();//aqui sera exibido o tempo gasto na operacao

?>

Verifica palavra em um conjunto reservado

A seguinte funçao verifica a ocorrência de determinada palavra numa lista pré-definida de palavras,retornando true se a palavra não pertencer à lista e false caso contrário.Muito útil para a filtragem de dados de entrada e para evitar,por exemplo, o uso de palavras obscenas ou o nome do Presidente dos EUA circulando pelo seu site.


Escrevendo o código

<?php
function verificaString($texto)
{
$dicionario=array("cavalo","vaca","sardinha","cao","baleia");
if(in_array(strtolower($texto),$dicionario))
return false;
else
return true;
}
// exemplo de uso da funcao.Note que a variavel $palavra pode
receber,por exemplo, o valor de um campo de formulário.
$palavra = "Cavalo";
if(verificaString($palavra))
echo("A palavra passou no teste");
else
echo("Essa palavra é reservada");
?>


Esse código pode e deve ser melhorado para tratar da ocorrencia em um texto inteiro e retornar tambem,por exemplo, o número de vezes que determinada palavra da lista aparece em um texto...use a sua imaginação!

O resultado desse script é:

Essa palavra é reservada

Gerador de números aleatórios

A seguinte funcao gera numeros aleatórios de 1 a 1000 e é executada de acordo com o numero de vezes passados como parâmetro para a funcao.Números aleatórios podem ser úteis em diversas situaçoes.

Escrevendo o código


<?php
function sorteia($vezes)
{
$numgerados=$vezes;
for($cont=1;$cont<=$numgerados;$cont++)
{
$limite=rand(1,999);
$sorteado=rand(1,$limite);
echo ("$sorteado\n");
}
}
sorteia(5); // usando a funcao para sortear 5 numeros aleatorios
?>


O código acima tem como resultado algo semelhante a isso:

52 183 465 297 10

Exibir saudacao de data e hora personalizadas

O seguinte código captura a data e hora do sistema e exibe uma mensagem personalizada de acordo com o período do dia.

Escrevendo o código


<?php

$data=date('d/m/Y');
$hora=date('H');
$minutos=date('i');
$segundos=date('s');

if($hora>=12 && $hora<18)
echo("Boa Tarde, hoje é $data - $hora:$minutos:$segundos");

if($hora>=18 && $hora<24)
echo("Boa Noite, hoje é $data - $hora:$minutos:$segundos");

if($hora>=24 && $hora<12)
echo("Bom Dia, hoje é $data - $hora:$minutos:$segundos");

?>


O resultado do script é uma saudacao como essa:

Boa Noite, hoje é 15/04/2009 - 19:06:41

PHP e Javascript

Há muito tempo,o Javascript vem sendo a linguagem client-side mais usada pela maioria dos desenvolvedores.Nesse artigo,iremos aprender a integrar esses duas tecnologias no seu código,tornando seu projeto mais seguro e menos suscetível à erros.Antes de mais nada, precisamos entender que a passagem de valores de um código php para um outro Javascript é perfeitamente transparente,mas o contrário exige um pouco mais de trabalho.O nosso exemplo vai usar a funcao alert do Javascript para imprimir um valor de uma variável definida no código php.

Iniciando em PHP - Parte 1

Olá, hoje começaremos uma série de artigos que tem por objetivo ensinar ao leitor todas as nuances e facilidades dessa formidável linguagem de programação.Seguiremos por caminhos algumas vezes tortuosos,em outras um céu de estrelas,mas sempre explicando passo a passo os procedimentos e sua importancia dentro do contexto do seu código.


1- Iniciando

Essa série de artigos é pra voce que não sabe absolutamente nada sobre PHP,ou está iniciando agora com programação,mas deseja aprender de forma simples e com uma linguagem clara.Primeiramente,devemos começar apresentando a anatomia básica de um script. Todo código em PHP deve ser precedido por uma tag de abertura e encerrado com uma tag de fechamento.

<?php ou <?


Acima estão os exemplos mais comuns de tags de abertura,sendo que a primeira forma é a mais recomendade devido à compatibilidade com a versão 4 do PHP. Ao declararmos uma tag de abertura estamos dizendo ao navegador que o que se segue é o conteúdo de um script.Então,nada mais lógico do que avisarmos quando ele acaba,usando as tags de fechamento,exemplificada abaixo:

?>


Então,a anatomia básica de um script,isto é,o mínimo que ele deve conter é algo como a que se segue:

<?php

codigo que executa algo

?>


Mão na massa!

Vamos agora escrever o primeiro script que tem como finalidade calcular quantos dias voce tem de vida baseado na sua idade. Para isso,vamos primeiro entender o conceito de variáveis e como elas são usadas no php.

Variáveis

À grosso modo,variáveis são locais específicos na memória que podem receber diversos tipos de valores que podem mudar ou não no decorrer do processamento do código.O php conta com 4 tipos básicos de variáveis,cada um servindo à determinado fim.

Tipos de Variáveis

1-int
2-float
3-boolean
4-string

Tipo int

São variáveis que armazenam números não fracionarios,como {1,2,-3,-6}.O tamanho de um inteiro é dependente da plataforma do seu sistema operacional, sendo um numero aproximado a 2 bilhões o valor mais comum.


Tipo float

Armazenam números com casas decimais,como {1.5,0.4,2.0} e possuem uma grande faixa de tamanho,aproximadamente com 15 dígitos de precisão.


Tipo boolean

Armazenam somente dois valores,o verdadeiro ou falso(true or false),sendo usado para comparações lógicas.


Tipo string

As variáveis do tipo string podem receber praticamente quaisquer valores ,comumente usada para textos,ela pode ser tambem um trecho de uma música,uma imagem,etc.

Abra seu bloco de notas para começar a escrever o seu código.Agora que entendemos melhor as variáveis,fica fácil deduzir que tipos iremos usar no nosso primeiro script. Se queremos calcular quantos dias uma pessoa tem de vida, logicamente estaremos lidando com números inteiros, sendo então o tipo int escolhido para a tarefa.Nosso script se chamará "calculadias"

Escrevendo o código do arquivo calculadias.php



<?php
$idade=10;
$diasano=365;
$calculo=$idade*$diasano;
echo $calculo;
?>



Depois de digitar o seu código salve o arquivo com o nome de "calculadias.php" e execute o script.

Explicando o código do arquivo calculadias.php

Vemos claramente no código a tag de abertura na primeira linha,seguida pela declaração da variável $idade (o nome de todas as variáveis do php devem iniciar com um cifrão,e não devem começar com números nem underline) que recebe como exemplo o valor 10 (voce pode substituir pelo valor da sua idade).Na linha seguinte podemos perceber a declaração da variável $diasano que recebe o numero de dias que tem em um ano,seguido da variável $calculo que efetivamente faz a multiplicação da idade pelo numero de dias no ano.A última linha antes da tag de fechamento é uma função do php que serve para exibir dados de saida,no nosso caso ela vai exibir o resultado do cálculo no browser.O exemplo vai imprimir 3650 na tela.


Considerações Finais


Por hoje terminamos essa primeira parte da série de artigos Iniciando em PHP. Lembrando que a prática leva a perfeição,e que,apesar de fácil e intuitiva,o php tem uma série de componentes e funções úteis que realmente merecem serem estudados. No próximo artigo,discutiremos os famosos arrays e conheceremos outros tipos de dados que podem facilmente serem usados no seu código.