Pesquisa

domingo, 4 de abril de 2010

Comandos SQL

Funções de agrupamento:

AVG() = Retorna o valor médio de uma coluna específica
BINARY_CHECKSUM() = O valor do BINARY_CHECKSUM computado sobre uma linha ou uma tabela ou sobre uma lista de expressões. BINARY CHECKSUM é usada para detectar alterações em uma linha ou uma tabela.
CHECKSUM() = O valor de CHECKSUM computado sobre uma linha ou uma tabela, ou sobre uma lista de expressões. CHECKSUM é usada para construir índices de hash.
CHECKSUM_AGG() = O valor de CHECKSUM de um grupo. Valores nulos são ignorados.
COUNT() = Retorna o número de linhas
COUNT_BIG() = igual ao COUNT mas o COUNT_BIG sempre retorna um tipo de dados bigint.
MAX() = Retorna o valor máximo de uma coluna específica
MIN() = Retorna o valor mínimo de uma coluna específica
SUM() = Retorna a soma de uma coluna específica
STDEV() = Desvio padrão de todos os valores
STDEVP() = Desvio padrão da população
VAR() = Variância estatistica de todos os valores
VARP() = Variância estatística de todos os valores da população

Funções de manipulação de strings:

ASCII(string) = pega o valor em ASCII da string
CHAR(integer) = troca inteiro do ASCII em um caráter
LEN(string) = Identifica o comprimento de uma expressão em caracteres
LOWER(string) = converte uma string uppercase para lowercase.
LTRIM(string) = remove os espaços em branco
PATINDEX(posicao, expressao) = devolve a posicão de uma string dentro de um texto. Se não encontrar, retorna zero.
REPLICATE(string, integer) = Repete N vezes um caractere especificado
REVERSE(string) = retorna o inverso de uma expressao
RTRIM (string) = remove os espaços em branco à direita de uma string
SPACE(integer) = que retorna o número de espaços em branco informados no parâmetro
STUFF(string texto, X, Y, string texto_a_inserir) = apaga da string "texto" os y caracteres a partir da posição x e os substitui por "texto_a_inserir"
SUBSTRING(string texto, posicao_inicial, tamanho) = retorna uma string com o comprimento definido em "tamanho" extraida da string "texto", a partir da "posicao_inicial"
UPPER(string) = retorna string em maiusculas

Funções de manipulação de data/hora:

nomes das partes de data:

Year = yy, yyyy
Quarter = qualquer, que
Month = mm, m
Dayofyear = dy, y
Day = dd, d
Week = wk, ww
Hour = hh
Minute = mi, n
Second = ss, s
Millisecond = ms

DATEADD (parte, numero, data) = adiciona um valor a parte de uma data
DATEDIFF (parte, data inicial, data final) = subtrai a data inicial da data final, indicando o resultado na unidade definida em "parte"
GETDATE() = retorna a data atual do sistema
DATENAME (parte, data) = retorna o nome da parte de uma data
DATEPART(parte, data) = retorna a parte de uma data

Funções de Sistema:

CAST(expressao as datatype) = converte uma expressao no datatype informado
COL_LENGTH(nome_da_tabela, nome_da_coluna) = retorna o tamanho da coluna
COL_NAME(id_da_tabela, id_da_coluna) = retorna o nome da coluna
DATALENGTH(expressao) = retorna o numero de bytes usados para armazenar a expressao
DB_ID(nome_do_banco) = retorna o ID do banco informado
DB_NAME(id_do_banco) = retorna o nome do banco
HOST_ID() = retorna a ID da estação que está acessando o SQL Server
HOST_NAME() = retorna o nome da estação que está acessando o SQL Server
IDENT_INCR(nome_da_tabela_ou_view) = retorna o valor incrementado
IDENT_SEED(tabela_ou_view) = retorna o valor inicial da coluna
INDEX_COL(nome_da_tabela, indice_id, chave_id) = retorna o nome da coluna que participa do índice
ISNULL(expressao, valor) = se a expressao for null, troca pelo valor especificado
ISNUMERIC(expressao) = retorna 1 se a expressao for numerica e 0 se não for
NEWID() = retorna um novo valor do tipo uniqueidentifier
NULLIF(expressao_1, expressao_2) = retorna nulo se as duas expressoes forem equivalentes. Se não forem, retorna a primeira expressao.
OBJECT_ID(nome_do_objeto) = retorna o ID de um objeto, a partir do nome fornecido
OBJECT_NAME(ID_do_objeto) = retorna o nome do objeto, a partir do ID fornecido
PARSENAME(objeto, parte) = retorna a parte do nome de um objeto, desde que tenha sido qualificado
STATS_DATE(tabela_id, indice_id) = retorna a data em que as estatísticas do índice foram atualizadas
SUSER_SID(nome_do_usuario) = retorna o ID do usuario informado
SUSER_NAME(usuario_id) = retorna o id do usuário no servidor. O argumento é opcional.
SUSER_SNAME(id_do_usuario) = retorna o nome do usuario informado. Se nenhum ID de usuario for passado para a função, retorna o nome do usuario logado
USER_ID(nome_do_usuario) = retorna o ID do usuario informado para o BD em uso
USER_NAME(id_do_usuario) = retorna o usuario conectado ao BD

Funções Matematicas:

ABS(numero) = retorna o valor absoluto do numero
ACOS(float) = retorna o arco-coseno do numero informado
ASIN(float) = retorna o arco-seno do numero informado
ATAN(float) = retorna o arco-tangente do numero informado
ATN2(Float expressao_1, float expressao_2) = Arco-tangente do valor definido pela divisão da primeira expressão pela segunda
CEILING(numero) = retorna o menor inteiro que seja maior ou igual ao numero informado
COS(float) = retorna o coseno do numero informado
COT(float) = retorna o cotangente do numero informado
DEGREES(numero) = converte radianos para graus
EXP(float) = retorna o exponencial de um numero especificado
FLOOR(numero) = retorna o maior inteiro que seja menor ou igual ao numero informado
LOG(float) = retorna o logaritmo natural do numero informado
LOG10(float) = retorna o logaritmo base 10 do numero informado
PI() = retorna o valor de PI 3.1415926535897931.
POWER(numero, potencia) = retorna o valor elevado à potencia informada
RADIANS(numero) = converte graus para radianos
RAND(expressao) = um número aleatório entre 0 e 1. Expressão é opcional e será usada como semente da cadeia pseudo-aleatória
ROUND(numero, precisao, arredonda_ou_trancar) = arredonda ou tranca o numero fornecido de acordo com a precisao informada. Se o terceiro parametro não for passado para a funçao, o numero é arredondado. Se quiser que o numero seja truncado, deve-se fornecer o valor 1
SIGN(numero) = retorna sinal positivo, negativo ou zero do numero
SIN(float) = retorna o seno do angulo especificado
SQRT(float) = retorna a raiz quadrada de um numero
TAN(float) = retorna a tangente de um numero informado
SQUARE(float) = retorna o quadrado de um numero

Função de conversão:

CONVERT(tipo(tamanho), expressão, estilo) = converte a expressão para o tipo de dado. O tamanho e o estilo são opcionais

Créditos:

http://scriptbrasil.com.br

SQL – “Rastreando” objetos

Através do script abaixo é possivel rastrear quais stored procedures, functions, triggers, etc… que são impactadas por alguma mudança em nome de tabelas, inserção de uma coluna nova, etc…
 
select so.name, crdate
from
syscomments sc
inner join sysobjects so on sc.id = so.id
where text like '%texto%'
group by so.name, crdate

terça-feira, 27 de outubro de 2009

Redes sociais

Redes sociais estão cada vez mais movendo pessoas, seja qual for o interesse ou motivo.

Orkut, Facebook, Twitter são redes sociais que invadiram de vez a internet.

Mas se engana quem acha que somente esses gigantes atraem milhões bilhões de pessoas.

Redes sociais vão muito além de apresentar e compartilhar seu perfil e suas idéias.

domingo, 25 de outubro de 2009

Buscar HTML de Página

Utilizando o HttpWebRequest é possivel buscar o conteudo HTML de uma página.

Abaixo um exemplo:

public static String BuscarHtmlPagina(String url)
{
ASCIIEncoding encoding = new ASCIIEncoding();
String parametro = String.Empty;

byte[] buffer = encoding.GetBytes(parametro);

System.Uri enderecoRequisicaoTemplate = new Uri(url);

HttpWebRequest requisicaoWeb = (HttpWebRequest)WebRequest.Create(enderecoRequisicaoTemplate);

if (!String.IsNullOrEmpty(ConfigurationSettings.AppSettings["USUARIO-AUTENTICACAO"]))
{
requisicaoWeb.PreAuthenticate = true;

CredentialCache credencial = new CredentialCache();
credencial.Add(enderecoRequisicaoTemplate, "Basic", new NetworkCredential(ConfigurationSettings.AppSettings["USUARIO-AUTENTICACAO"], ConfigurationSettings.AppSettings["SENHA-AUTENTICACAO"], ConfigurationSettings.AppSettings["DOMINIO-AUTENTICACAO"]));
requisicaoWeb.Credentials = credencial;
}

if (!String.IsNullOrEmpty(ConfigurationSettings.AppSettings["NOME-PROXY"]))
{
System.Net.WebProxy proxy = new System.Net.WebProxy(ConfigurationSettings.AppSettings["NOME-PROXY"], Convert.ToInt32(ConfigurationSettings.AppSettings["PORTA-PROXY"]));
String usuarioProxy = ConfigurationSettings.AppSettings["USUARIO-PROXY"];
String senhaProxy = ConfigurationSettings.AppSettings["SENHA-PROXY"];
String dominioProxy = ConfigurationSettings.AppSettings["DOMINIO-PROXY"];

proxy.Credentials = new System.Net.NetworkCredential(usuarioProxy, senhaProxy, dominioProxy);
requisicaoWeb.Proxy = proxy;
}

requisicaoWeb.ContentType = "text/html; charset=windows-1252";
requisicaoWeb.Timeout = 60000;
requisicaoWeb.KeepAlive = true;
requisicaoWeb.UserAgent = "Mozilla/4.0 (compatible;MSIE 6.0b;Windows NT 5.0)";
requisicaoWeb.ContentLength = buffer.Length;
requisicaoWeb.Method = "POST";
requisicaoWeb.AllowAutoRedirect = true;
requisicaoWeb.AllowWriteStreamBuffering = true;
requisicaoWeb.MaximumAutomaticRedirections = 1;
requisicaoWeb.Method = "POST";
requisicaoWeb.ContentLength = buffer.Length;

Stream stream = requisicaoWeb.GetRequestStream();
stream.Write(buffer, 0, buffer.Length);
stream.Close();

HttpWebResponse httpWebResponse = null;
Stream resposta = null;
StreamReader streamRead = null;
Char[] readBuffer = new Char[256];

try
{
httpWebResponse = (HttpWebResponse)requisicaoWeb.GetResponse();
resposta = httpWebResponse.GetResponseStream();
Encoding enc = Encoding.GetEncoding(1252);
streamRead = new StreamReader(resposta, enc);

}
catch (Exception falha)
{
throw falha;
}

int contador = streamRead.Read(readBuffer, 0, 256);
StringBuilder paginaRequisitada = new StringBuilder();

while (contador > 0)
{
String resultData = new String(readBuffer, 0, contador);
paginaRequisitada.Append(resultData);
contador = streamRead.Read(readBuffer, 0, 256);
}

streamRead.Close();
resposta.Close();

httpWebResponse.Close();
return paginaRequisitada.ToString();
}



domingo, 21 de junho de 2009

IsPostBack para requisição Ajax

Para identificar que uma página ASP.NET disparou um postback partir de uma requisição Ajax, basta utilizar a classe ScriptManager.
Veja o exemplo abaixo:
if(ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
{
  //Código executado quando ocorrer um postback por causa de uma requisição Ajax
}

sábado, 16 de maio de 2009

Melhoria de Performance - Boas práticas

Melhor arquitetura do software, melhor modelagem, melhor servidor, prever número de acessos… muitas coisas influenciam na performance de uma aplicação asp.net.

Além de tentar melhorar esses “pilhares” da performance, é necessário rever questões simples de desenvolvimento. Muitas vezes, simples detalhes de lógica de desenvolvimento é o ponto mais crítico e crucial para acabar com desempenho de qualquer aplicação.

DEV411 - ASP.NET:  Best Practices For Performance

10 Tips for Writing High-Performance Web Applications

Nos dois links acima existem pontos bem interessantes relacionados a performance e desenvolvimento.

Acredito que dois pontos bem relevantes são:

  • A utilização de vários “ResultSet” para uma pesquisa que retorne um SqlDataReader, assim, fazendo menos transações no banco de dados, e tratando o retorno na aplicação.
  • A paginação em banco de dados para retornar somente o volume necessário de dados, assim, melhorando o desempenho, já que não será processado informaçõe desnecessárias.
  • A utilização do cache.
  • A utilização do cast explicito no databinding de controles.

domingo, 3 de maio de 2009

Remover Acentos

Para remover os acentos de Strings aplica-se o seguinte método:

public static string RemoveAcento(this string texto)
{
texto = texto.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();

foreach (char c in texto.ToCharArray())
{
if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
{
sb.Append(c);
}
}
return sb.ToString();
}


Créditos: R0drigo da Silva Araujo

Web Trend Map

Mapa publicado anualmente pela iA Inc mapeia os 333 domínios mais influentes da web e as 111 pessoas mais influentes na Internet. Cada domínio é avaliado com base no tráfego, as receitas, a idade e a empresa que a possui.

Créditos: o UAU nosso de cada dia

Formatar DateTime

Existem várias maneiras de apresentar em String uma variável do tipo DateTime.
Basicamente existem duas coisas que influenciam nisso.
CultureInfo
Fornece as informações referentes à uma cultura específica (localidade). Essas informações influenciam diretamente em datas, caracteres, calendários, etc.
Mais informações sobre CultureInfo.
Exemplos:
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
Formatando a String
Customizando a formatação do método ToString() do objeto DateTime é possível fazer inúmeras combinações para a visulalização da data/hora.
Exemplos:
DateTime now = new DateTime(2006, 9, 07, 15, 06, 01, 08, DateTimeKind.Local);
now.ToString();      //"09/27/2006 15:06:01"

//Year
now.ToString("%y");   //"6"
now.ToString("yy");   //"06"
now.ToString("yyy");  //"2006"
now.ToString("yyyy"); //"2006"

//Month
now.ToString("%M");    //"9"
now.ToString("MM");    //"09"
now.ToString("MMM");   //"Sep"
now.ToString("MMMM");  //"September"

//Day
now.ToString("%d");    //"7"
now.ToString("dd");    //"07"
now.ToString("ddd");   //"Thu"
now.ToString("dddd");  //"Thursday"

//Hour
now.ToString("%h");    //"3"
now.ToString("hh");    //"03"
now.ToString("hhh");   //"03"
now.ToString("hhhh");  //"03"
now.ToString("%H");    //"15"
now.ToString("HH");    //"15"
now.ToString("HHH");   //"15"
now.ToString("HHHH");  //"15"

//Minutes
now.ToString("%m");    //"3"
now.ToString("mm");    //"03"
now.ToString("mmm");   //"03"
now.ToString("mmmm");  //"03"

//Seconds
now.ToString("%s");    //"1"
now.ToString("ss");    //"01"
now.ToString("sss");   //"01"
now.ToString("ssss");  //"01"

//Milliseconds
now.ToString("%f");    //"0"
now.ToString("ff");    //"00"
now.ToString("fff");   //"008"
now.ToString("ffff");  //"0080"
now.ToString("%F");    //""
now.ToString("FF");    //""
now.ToString("FFF");   //"008"
now.ToString("FFFF");  //"008"

//Kind
now.ToString("%K");    //"-07:00"
now.ToString("KK");    //"-07:00-07:00"
now.ToString("KKK");   //"-07:00-07:00-07:00"
now.ToString("KKKK");  //"-07:00-07:00-07:00-07:00"
// Note: The multiple K were just read as multiple instances of the
// single K

DateTime unspecified = new DateTime(now.Ticks, DateTimeKind.Unspecified);
unspecified.ToString("%K");   //""

DateTime utc = new DateTime(now.Ticks, DateTimeKind.Utc);
utc.ToString("%K");           //"Z"

//TimeZone
now.ToString("%z");     //"-7"
now.ToString("zz");     //"-07"
now.ToString("zzz");    //"-07:00"
now.ToString("zzzz");   //"-07:00"

//Other
now.ToString("%g");    //"A.D."
now.ToString("gg");    //"A.D."
now.ToString("ggg");   //"A.D."
now.ToString("gggg");  //"A.D."

now.ToString("%t");    //"P"
now.ToString("tt");    //"PM"
now.ToString("ttt");   //"PM"
now.ToString("tttt");  //"PM" 
Ou então utilizando as formatações padrões já existentes.
Exemplos:
now.ToString("d");  // "09/27/2006"
now.ToString("D");  // "Tuesday, 27 September 2006"
now.ToString("G");  // "09/27/2006 14:15:39"
Abaixo estão os padrões existentes.
Ano Mês Dia:
d = "MM/dd/yyyy"
D = "dddd, dd MMMM yyyy"
M or m = "MMMM dd"
Y or y = "yyyy MMMM"
Hora:
t = "HH:mm"
T = "HH:mm:ss"
Ano Mês Dia e Hora sem fusos horários:
f = "dddd, dd MMMM yyyy HH:mm"
F = "dddd, dd MMMM yyyy HH:mm:ss"
g = "MM/dd/yyyy HH:mm"
G = "MM/dd/yyyy HH:mm:ss"
Ano Mês Dia e Hora com fusos horários:
o = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK"
R or r = "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'"
s = "yyyy'-'MM'-'dd'T'HH':'mm':'ss"
u = "yyyy'-'MM'-'dd HH':'mm':'ss'Z'"
U = "dddd, dd MMMM yyyy HH:mm:ss"
A utilização de outro caractér acarretará uma Exception.
Créditos: Kathy Kam