15/10/2008

Operator ?? em C#

Este operador verifica se o 1 valor é null caso seja devolve o valor das esquerda senão devolve o valor.

Exemplos:

string x = null;
Console.WriteLine(x ?? "1");

Será mostrado 1 pois o x é null logo será mostrado o 2 valor.


string x = "Valor";
Console.WriteLine(x ?? "1");

Neste Caso é mostrado 'Valor' .
Ler mais ...

Usar Code Snippets em C#



Para começar Code Snippets são fragmentos de código pré feitos, muitos dos códigos que utilizamos com regularidade como ciclos de repetição entre outros já vem definidos e prontos a ser utilizados.

Os code snippets podem ser utilizados de 3 maneiras, utilizando as teclas de atalho Crt+K mais Crt+X, acendendo ao menu Edit no tópico IntelliSence e Insert Snippet e por ultimo através do 3 botão do rato seleccionando a opção Insert Snippet.

Alem dos códigos definidos o utilizador tem a possibilidade de criar os seus próprio fragmentos de código e aconselho mesmo se utilizar uma determinado código constantemente a defini-lo evitando estar a fazer copy e paste constantemente.

Agora vamos ao que mais interessa que é como criar estes fragmentos de código, para começar devemos criar um ficheiro XML e obedecer a determinados regras tais como:

Deve começar sempre com:

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">


De seguida é introduzido um pequeno cabeçalho onde indica o titulo do fragmento de código bem como outras informações como o Author , Description .

<Header>
<Title>
My Output Writer
</Title>
<Author>
JPontes
</ Author>
<Description>
Escreve na consola
</Description>
</Header>


Neste momento vamos propriamente escrever o fragmento de código começando por indicar qual a linguagem que será inserido e o código a inserir :
Para a linguagem C# as referencias não são incluídas no xml sendo que estão devem ser incluídas manualmente, para o restos das linguagens pode acrescentar a entidade Reference para indicar as suas dependências.

<Snippet>
<Code Language=" CSharp ">
<![CDATA[Console.WriteLine("Texto");]]>
</Code>
</Snippet>
O ficheiro final CodeSnippetWriteOutput.snippet:

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>My Output Writer </Title>
<Author>JPontes</Author>
<Description>Escreve na consola</Description>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[Console.WriteLine("Texto aqui");]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

Agora basta importar o code snipped através do Code Sinpped Manager para poder utilizar nas suas aplicações.














E utilizar :

Referencias:
Ler mais ...

13/10/2008

Utilizar Syntax Highlighter no seu blog

Uma das maneira mais simples se introduzir o Syntax Highlighter é utilizando o Widget fornecido por 'FaziBear's' e que está disponível Aqui, para mais informações deve consultar o blog do mesmo FaziBear's.

Podem verificar no post anterior a este o widget a funcionar ,espero que no vosso também funcione.
Ler mais ...

Redireccionamento em PHP

Aqui fica um pequeno e simples exemplo de como implementar o redireccionamento em PHP:

‹?php
header( 'Location: http://www.jpontes.blogspot.com' ) ;
?›

Nota: Não deve introduzir mais código na pagina de redireccionamento .
(Já agora serve para testar o SyntaxHighlighter que introduzi no blog :-))
Ler mais ...

09/10/2008

Dicas MySql

Este post é uma adaptação do artigo original de “diegohellas” publicado na pagina www.php5.com.br . Este artigo enumera alguns recursos disponíveis no MySql para nos facilitar o desenvolvimento quando utilizamos o MySql.

Funções IN e NOT IN

Descrição: Esta função permite enquadrar determinado campo dentro de um conjunto especifico de valores caso função IN pois a função NOT IN vai excluir os campos que estão presentes nesse conjunto de valores.

Exemplo:
(Uso com Strings)
SELECT sigla, nome, população
FROM cidades
WHERE
Sigla IN(‘LISBOA’, ‘PORTO’, ‘LEIRIA’);
//NOT IN
Sigla NOT IN(‘LISBOA’, ‘PORTO’, ‘LEIRIA’);

(Uso com numeros)

SELECT nome, email, idade
FROM curriculos
WHERE
idade IN (18, 19, 20)
//NOT IN
idade NOT IN (15, 16, 17)

Função IF

Descrição: Funções habitual da programação e expressa condição.

IF(condição, caso verdadeiro, caso contrário)

SELECT nome, email, IF(sexo =”M”, “Masculino”, “Feminino”)
FROM currículos

Função CASE WHEN:

Descrição: Tal como a anterior

CASE campo
WHEN “valor1” THEN “Novo valor”

Controle de fluxo

SELECT nome, setor
CASE mes_nascimento
WHEN 01 THEN “Janeiro”
WHEN 02 THEN “Fevereiro”
WHEN 03 THEN “Março”
WHEN 04 THEN “Abril”
WHEN 05 THEN “Maio”
WHEN 06 THEN “Junho”
WHEN 07 THEN “Julho”
WHEN 08 THEN “Agosto”
WHEN 09 THEN “Setembro”
WHEN 10 THEN “Outubro”
WHEN 11 THEN “Novembro”
ELSE “Dezembro” END AS mes_nascimento
FROM funcionários

OU

SELECT
CASE
WHEN continente = “América” THEN “Continente americano”
WHEN pais = “Brasil” THEN “Continente sul americano”
WHEN continente = “Mexico” THEN “Continente norte americano”
…....


Funções matemáticas

Trigonometria

pi() = 3.14.15.93
radians(180) = 3.1415926535898
sin(radians(60)) = 0.866025
sqrt(3)/2 = 0.86602540
degrees(asin(sqrt(3)/2)) = 60

Logarítimo e potência

log(2) = 0.693147
exp(1) = 2.718282
power(2,5) = 32.000000
log10(100) = 2.000000
mod(13,7) = 6
13%7 = 6
abs(-42) = 42
sign(0) = 0

Arredondamento

ceiling(2.5) = 3 - Arredonda para cima ;
floor(2.5) = 2 - Arredonda para baixo ;
round(2.5) = 2 - Arredonda para o inteiro mais próximo;
round(2.51) = 3
truncate(2.5,0) = 2 - Elimina as casas decimais ;

Funções de string

SELECT CONCAT('My', 'S', 'QL'); – junta 1 ou mais strings;
substring – pega partes de uma string baseado na posição
substring_index – pega partes da string baseado nos delimitadores
instr – encontra numa string uma sub-string e devolve a posição onde começa essa sub-string.
replace – Substitui caracteres numa string.
length – calcula o tamanho da string



substring_index(“diegohellas@hotmail.com”, “@”, 1) = diegohellas
substring_index(“orders.mysql.com”, “.”, -2) = mysql.com
reverse(“orders.mysql.com”) = moc.lqsym.sredro
upper(“mysql”) = MYSQL
lower(“MySQL”) = mysql
rpad(“Diego”, 10, “.”) = diego…..
char(77,121,83,81,76) = MySQL
left(“Diego Felipe Hellas”, 3) = Die
mid(“Diego Felipe Hellas Moreira Alves”, 13,6) = Hellas
rught(‘Diego Hellas“, 6) = Hellas
trim(“Q”, from “QQQQMySQL ABQQQ”) = MySQL AB

Funções de tempo e de data

NOW() e intervalos

SELECT NOW() – irá retornar a data e hora actual do servidor MySQL no formato
aaaa-mm-dd hh:mm:ss


SELECT NOW() + INTERVAL 2DAY – irá retornar a data e hora do servidor, só que com uma diferença de 2 dias para frente(ex: hoje é 2008-10-06 ele irá retornar 2008-10-08), essa diferença pode ser negativa também, e o intervalo pode ser horas, minutos, segundos, dias, semanas, meses, anos, etc;


Formatando datas com o DATE_FORMAT()

Sintaxe:
DATE_FORMAT(campo, ‘formato desejado’)


Especificador Descrição
%M Nome do mês (January..December)
%W Nome do dia da semana (Sunday..Saturday)
%D Dia do mês com o sufixo em Inglês (1st, 2nd, 3rd, etc.)
%Y Ano, numérico, com 4 dígitos
%y Ano, numérico, com 2 dígitos
%a Nome do dia da semana abreviado (Sun..Sat)
%d Dia do mês, numérico (00..31)
%e Dia do mês, numérico (0..31)
%m Mês, numérico (01..12)
%c Mês, numérico (1..12)
%b Nome do mês, abreviado (Jan..Dec)
%j Dia do ano (001..366)
%H Hora (00..23)
%k Hora (0..23)
%h Hora (01..12)
%I Hora (01..12)
%l Hora (1..12)
%i Minutos, numérico (00..59)
%r Horário, 12 horas (hh:mm:ss [AP]M)
%T Horário, 24 horas (hh:mm:ss)
%S Segundos (00..59)
%s Segundos (00..59)
%p AM ou PM
%w Dia da semana (0=Domingo..6=Sábado)
%U Semana (00..53), onde Domingo é o primeiro dia da semana
%u Semana (00..53), onde Segunda é o primeiro dia da semana
%% Caracter `%'.


Exemplos de uso:

O MySQL armazena as datas no formato aaaa-mm-dd

Para seleccionar a data no formato que queremos:

SELECT nome, DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) AS data
FROM funcionários

Desta forma podemos seleccionar a data no formato que pretendemos e se quisemos comparar a data já não temos de a converter de dd/mm/aaaa para aaaa-mm-dd;

SELECT nome, departamento
FROM funcionários
WHERE
DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) = ‘22/11/1986’
Função DATEDIFF

Calcula a diferença em dias entre duas datas

SELECT DATEDIFF('2006-12-31', '2006-01-01') = 364


Referencias
Ler mais ...

Utilizar Base de Dados MySql em C#

Para fazer a ligação a base de dados MySql vai ser necessário fazer o download do Conector Ado.net (http://dev.mysql.com/downloads/connector/net/5.2.html) ,no meu caso e como vou utilizar o visual Studio 2008 vou utilizar a ultima versão deste mesmo conector.


Findo a instalação do conector vamos criar uma aplicação Windows .

So para informação se tiver a utilizar o visual studio 2008 a ligação a base de dados MySql pode ser feita sem ter que escrever uma única linha de código , esta maneira vou deixar para o leitor descobrir sozinho :-).


Para começar crie uma DataGrid no formulário inicial e dei-lhe um nome no meu caso vou-lhe chamar myDataGrid, de seguida deve adicionar a referencia do MySQL.Data para isso seleccione o menu Project e add Reference e escolha o componente .Net com o nome MySQL.Data .


Agora vamos então ao código ,começamos por adicionar o namespaces


using MySql.Data.MySqlClient ;

private MySqlConnection myCon;

private MySqlDataAdapter myAdapter;

private DataSet myDataSet;


public Form1()

{

InitializeComponent();

MostraDados();

}


Para criar uma ligação a base de dados e preencher a datagrid criei a seguinte função:


private void MostraDados()

{

myDataSet = new DataSet();

//Cria a Ligação atravez de uma string de ligação

myCon = new MySqlConnection("Persist Security Info=False;database=test;server=localhost;user id=UtilizadorTeste;Password=teste");

try

{

// E estabelecido uma ligação com a base de dados

myCon.Open();

}

catch (System.Exception e)

{

// Ocoreu erro quande se tentou estabelecer a ligação com a base de dados.

MessageBox.Show(e.Message.ToString());

}

//Valida se a ligação está estabelecida

if (myCon.State == ConnectionState.Open)

{

//cria o adapter utilizando uma instrução SQL de forma a aceder a tabela Carros

myAdapter = new MySqlDataAdapter("SELECT * FROM carros", myCon);

//preenche o dataset atravez do adapter criado

myAdapter.Fill(myDataSet, "carros");


//A DataGrid terá como DataSource o dataSet prenchido anterior

myDataGrid.DataSource = myDataSet;

//Queremos mostrar a tabela dos carros

myDataGrid.DataMember = "carros";

}

finalizaLigacao();

}


A primeira coisa que fiz na função foi criar uma nova ligação a base de dados utilizando o conector MySqlConnection onde foi passada a string de conexão e que é constituída pelos seguintes valores que vou passar a explicar :


Persist Security Info=False

Significa que os dados sensiveis como a password não são devolvidos quando a conexão está ligado ou esteve ligada.

database=test

O nome da Base de Dados que vamos utilizar ,no meu caso foi utilizada a base de dados Chamada test

server=localhost

Nome do endereço de rede do motor de base de dados MySql no qual queremos fazer a ligação;

user id=UtilizadorTeste

Nome da conta a utilizar para aceder a base de dados;

Password=teste

Senha da conta que vai ser usada para aceder a base de dados;

[1]Para mais detalhes sobre a constituição desta setring de ligação veja na documentação do conector.(http://dev.mysql.com/doc/refman/6.0/en/connector-net-examples-mysqlconnection.html)


Findo a criação da ligação vamo-nos ligar a base de dados utilizando para isso o método Open,caso de erro será mostrado o erro .

De seguida e no caso de já estarmos ligados a base de dados vamos utilizar o nosso dataAdater e aceder a tabela que queremos mostrar na nossa datagrid :


myAdapter = new MySqlDataAdapter("SELECT * FROM carros", myCon);


Neste momento só nos basta preencher o dataset com os dados myAdapter.Fill(myDataSet, "carros"); e para mostar no datagrid dizer que o sorce do datagrid é o nosso datasel e que queremos mostrar a tabela carros e vuolá já podemos ver os dados no nosso DataGrid.


Só para finalizar e não menos importante temos de fechar a ligação que estabelecemos para isso e chamado o método

finalizaLigacao(); .


private void finalizaLigacao() {

if (myCon.State == ConnectionState.Open)

myCon.Close();

}


Ler mais ...

Momento Musical da Semana

Tal como tinha prometido da ultima semana vou apresentar mais um momento musical.
O álbum que vos apresento hoje é uma dos mais ouvidos na plataforma jamendo ,
o álbum chama-se "Lies and Speeches" dos Hype .
Este álbum enquadra-se no género pop/rock e tem musicas muito interessantes por isso proponho-vos a ouvir :
Ler mais ...

02/10/2008

Momento Musical

A partir de hoje e sempre que possível vou lançar um tópico sobre musica onde divulgarei artistas ou musicas que possa fazer download sem ter que pagar (respeitando as leis).

O alvo que hoje vos proponho a ouvir é o álbum "Lost Horizon" dos Chronique, este é disponibilizado pelo grupo na plataforma jamendo .
Este álbum insere-se no género alternativo com tendência para o rock,gótico e progressivo.
Espero que gostem porque o álbum está bastante original e na minha opinião também muito bom.
Ler mais ...

Protega melhor as suas passwords

Segue aqui alguns conselhos para tornar as suas passwords mais seguras:
  1. 1. Em primeiro lugar tente sempre utilizar sempre passwords fortes de forma a não facilitar a quebra de senhas através de ataques de força bruta ou de dicionário.A escolha de uma password forte deve envolver a utilização letras maiúsculas e minúsculas números e caracteres especiais. Um dos problemas destas passwords é o facto de poderem ser dificeis de lembrar ,então a melhor maneira e utilizar uma técnica que é retirar por exemplo as primeiras letras de uma frase que sabem que não se vão esquecer tipo:

    Gosto muito Deste blog -->password: Gmdb?Sim/na0

  2. Renovar a password . Mudar a password regularmente pois dificulta muito a vida a quem esteja a tentar descobrir a password .

  3. Limite o numero de tentativas de login falhados nos sistemas de forma que a partir de um certo numero de tentativas a conta seja bloqueada .A desvantagem disto e que depois ficamos também impedidos de aceder a conta .

  4. Evitar repetir constantemente a mesma password para todas as contas ,eu sei que e uma tendência que temos mas aconselho a ter entre 3 a 5 passwords diferentes.

  5. Listar últimos logins(Entradas) bem sucedidos , desta forma podemos verificar se alguém entrou na nossa conta sem autorização.

  6. Encriptar as passwords sempre que as guardar
Conclusão : Mesmo com tudo isto não garanto 100% que não lhe vão roubar as passwords
ou entrar na sua conta mas pelo menos está muito mais protegido da maior parte dos ataques.
Ler mais ...