Algoritmos de Ordenação

Irei mostrar alguns dos principais algoritmos de ordenação, veremos como funciona o Bubble Sort, Selection Sort, Quick Sort, Merge Sort e Heap Sort.

Não colocarei códigos aqui, até porque é muito fácil de encontrar, apenas o funcionamento com explicações e demonstrações em vídeos.

P.S.: Alguns vídeos têm sons!

BUBBLE SORT

O bubble sort, ou ordenação por flutuação (literalmente “por bolha”), é um algoritmo de ordenação dos mais simples. A ideia é percorrer o vetor diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequência. Essa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível, e disso vem o nome do algoritmo.

Características :
Algoritmo muito simples;
Lento para ordenar grande número de elementos, mas eficiente com poucos elementos;
O(n2) comparações e trocas;
Adaptativo: O(n) comparações e trocas se o algoritmo estiver parcialmente ordenado.
Pior Caso: O(n2), Caso Médio O(n2) melhor caso O(n).

Animação:

SELECTION SORT

O selection sort (ordenação por seleção) é um algoritmo de ordenação baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o de segundo menor valor para a segunda posição, e assim é feito sucessivamente com os (n-1) elementos restantes, até os últimos dois elementos.

Pior Caso: O(n2), Caso Médio O(n2) Melhor caso O(n2).

Animação:

QUICK SORT

O Quick Sort é um algoritmo baseado em Divisão e Conquista. Isso significa que ele divide sucessivamente um problema e partes menores . O próximo passo é solucionar recursivamente os sub-problemas, ou seja ordenar os elementos, e só então combinar as soluções menores de forma a obter a solução final.

Complexidade:

Pior Caso:  O(n2), Caso Médio: O(nlogn) e  Melhor caso:O(nlogn).

Animação:

MERGE SORT

Sua idéia básica é muito fácil: criar uma sequência ordenada a partir de duas outras também ordenadas. Para isso, ele divide a sequência original em pares de dados, ordena-as; depois as agrupa em sequências de quatro elementos, e assim por diante, até ter toda a sequência dividida em apenas duas partes.

Os três passos úteis dos algoritmos dividir-para-conquistar, ou divide and conquer, que se aplicam ao merge sort são:

Dividir: Dividir os dados em subsequências pequenas;

Conquistar: Classificar as duas metades recursivamente aplicando o merge sort;

Combinar: Juntar as duas metades em um único conjunto já classificado.

Complexidade:

Pior Caso:      O(nlogn), Caso Médio: O(nlogn), Melhor caso:O(nlogn).

Animação:

HEAP SORT

• HeapSort também é um método de seleção – ordena através de sucessivas seleções doelemento correto a ser posicionado em um segmento ordenado

• O HeapSort utiliza um heap binário paramanter o próximo elemento a serselecionado – heap binário: árvore binária mantida na forma de vetor – o heap é gerado e mantido no próprio vetor a ser ordenado (no segmento não-ordenado)

Complexidade:

Pior Caso:      O(nlogn), Caso Médio: O(nlogn), Melhor caso:O(nlogn).

Você sabe o que é um Heap? Primeiro vamos entender o que é um Heap.

Heap Binário – Exemplo

• raiz da árvore: primeira posição do vetor

• filhos de um nodo na posição i: posições 2i e 2i + 1

• pai de um nodo na posição i: posição ëi / 2û

Heap Binário Máximo

• Heap Binário tal que um nodo pai tem valor maior ou igual ao valor dos nodos filhos

Funcionamento

1. Transformação do vetor em um heap binário máximo (Construção do Heap)

2. Ordenação – a cada iteração seleciona-se o maior elemento (na raiz do heap) e o adiciona no início de um segmento ordenado – após cada seleção de elemento, o heap deve ser reorganizado para continuar sendo um heap binário máximo.

• Método auxiliar responsável pelo ajuste de um elemento no heap – método ajustaElemento(posição, vetor.lenght)

– realiza trocas no heap para posicionar

corretamente um elemento

• Exemplo: ajustaElemento(1, 7)

Ajuste de Elementos

• Executa até que o elemento seja transferido para uma posição i > ën/2û – após a posição ën/2û , o elemento já é um nodo folha

Etapa de Ordenação

• A cada iteração seleciona o maior elemento do heap (sempre está na primeira posição) e o troca com o elemento no final do segmento não- ordenado

• Após a troca, o novo elemento raiz do heap deve ser ajustado (deve-se chamar ajustaElemento para o nodo raiz)

• O processo termina quando o heap tiver somente 1 elemento (vetor ordenado) Nesse caso, um Heap Máximo.

Referências:

Wikipédia

Vimeo.com

Ordenação de Dados(III)

UFSC-CTC-INE

INE5384 – Estruturas de Dados

Prof. Ronaldo S. Mello

UNICAMP

Abraços!

Torne-se Excelente!

Olá pessoal, recentemente vi um link no twitter falando sobre como “quebrar a casquinha do ovo” e nos tornarmos excelente em algo que fazemos. São 8 dicas fantásticas.

As 8 dicas de como se tornar excelente e aproveitar as oportunidades são de autoria do Klaus Wuestefeld, autor do manifesto da Computação Soberana e criador do Prevayler.

1 – Torne-se excelente:

Seja realmente bom em alguma coisa. Não fique só choramingando ou querendo progredir às custas dos outros. Não pense que porque você sentou 4 anos numa faculdade ouvindo um professor falar sobre software que você sabe alguma coisa. Jogador de futebol não aprende a jogar bola tendo aula. Ele pratica. Instrumentistas geniais não aprendem a tocar tendo aula. Eles praticam. Pratique. Chegue em casa depois do trabalho e da aula e pratique. No final de semana, pratique.

Crie seu próprio virus, seu próprio jogo, seu proprio SO, seu próprio gerenciador de janelas, seu próprio webserver, sua própria VM, qualquer coisa. Varias coisas.

Nao precisa ser só programação. Pode ser networking, vendas, etc. Só precisa ser bom mesmo. Tenha paixão pela coisa.

As melhores práticas do mercado são polinizadas primeiro nos projetos de software livre. Aprenda com eles.

Discípulo, viajante, mestre: Primeiro seja um discípulo, tenha mestres locais, aprenda alguma coisa com alguém realmente bom, qualquer estilo. Depois viaje, encontre outros mestres e aprenda o estilo deles. Por fim, tenha o seu estilo, tenha discípulos, seja um mestre.

Vou fazer o curso da Mary Poppendieck em São Paulo semana que vem e quando tiver o curso de Scrumban do Alisson e do Rodrigo quero fazer também.

“Torne-se excelente” também pode ser chamado de “Melhoria Continua” ou “Learning”.

2 – Não seja deslumbrado

Desenvolvimento de software é a mesma coisa há 60 anos: modelo imperativo. Há 30 anos: orientação a objetos. Bancos de dados relacionais: 30 anos. (“Web”, por exemplo, não é uma tecnologia ou um paradigma. É meramente um conjunto de restrições sobre como desenvolver e distribuir seu software).

Não corra atras da última buzzword do mercado. Busque a essência, os fundamentos.

Busque na wikipédia e grokke: determinismo, complexidade de algoritmos “O()”, problema de parada de turing. Pronto, pode largar a faculdade. Falando sério.

Trabalhe com software livre. Não dê ouvidos a grandes empresas, grandes instituições ou grandes nomes só porque são grandes.

Você acha que vai aprender mais, ter mais networking e mais chance de alocação no mercado trabalhando em par comigo no Sneer por um ano, 8h por semana, ou passando 4 anos na faculdade, 20h por semana, pagando sei lá quanto por mes?

Você acha que vai aprender mais trabalhando em par com o Bamboo 6 meses na linguagem boo e na engine do Unity ou fazendo um ano de pós em “a buzzword da moda”?

“Nao seja deslumbrado” também é conhecido como “Coolness”.

3 – Mantenha-se Móvel

Com a demanda que temos hoje no mercado, se você é desenvolvedor de software e não consegue negociar um contrato com uma empresa onde você é pago por hora e pode trabalhar quantas horas quiser com um mínimo de meio período, você precisa rever a sua vida.

É melhor ter dois empregos de meio-período que um de período integral, porque você pode largar um deles a qualquer momento.

Você nunca vai conseguir nada melhor se não tiver tempo, se não tiver disponibilidade para pegar algo melhor quando aparecer.

Você sustenta seus pais e 7 irmãos? Não. Entao para de ser ganancioso e medroso no curto prazo, para de pagar faculdade, mestrado, pós, MBA, sei lá o que e vai aprender e empreender.

Trabalhe remoto. Não é o mais fácil, mas é perfeitamente possível.

Não fique reclamando que está trabalhando demais. Aumente seu preço e trabalhe menos.

4 – Emparceire-se Promiscuamente

Participe de dojos, de congressos, de projetos de software livre. Tenha amigos, colegas, conhecidos. Seja conhecido. Nao faça ruído em seis projetos e doze fóruns. Ajude de verdade em um ou dois projetos de cada vez. Ao longo do tempo, você terá ajudado em vários projetos, trabalhado em varias empresas.

5 – Mentalidade de Abundância

Ajude seus amigos sem cobrar (a “camaradagem” do Vinícius). Dê palestras gratuitas. Cursos gratuitos. Participe de projetos de software livre.

Pare as vezes uma tarde para receber um amigo seu e explicar seu projeto. Vá visitar seus amigos nos projetos deles. Viaje com algum amigo seu pra visitar um cliente dele, só pra conversar e fazer companhia.

Você tem um espaço onde dá cursos? É uma Aspercom, Caelum da vida? Chama os brothers para dar curso. Caramba, bola um modelo em que as pessoas podem se inscrever para cursos variados, pagando um sinal, e mantém tipo uma agenda pre-combinada: “Será numa terça e quinta a noite, avisadas com duas semanas de antecedência”.

Se rolar, beleza, se depois de meses não der certo, devolve o sinal. Pode ser curso de Prevayler, de Kanban, de Scrum, de Lean, de Computação Soberana, de Restfulie, de Cucumber, de Rails, de Teste Automatizado Mega-Avançado, qualquer coisa.

Chame amigos seus pra dar curso em dupla com você. Divida clientes. Divida projetos, mesmo que não precise de ajuda.

Dizia o pai de um brother meu de infância: “Tudo que custa dinheiro é barato.”

6 – Busque modelos de custo zero

Trabalhe em coisas que tem custo administrativo/burocrático/manutenção zero. Por menos ganho que tragam, depois de prontas, estarão tendo uma relação custo/benefício infinitamente vantajosa.

7 – Ganhe notoriedade

Faça coisas massa. Participe de projetos de software livre. Dê palestras gratuitas. Promova eventos (dojos, debates, grupos de usuários, etc).

8 – Não tenha medo (Por Dairton Bassi)

Meta a cara. Arrisque empreender. Arrisque inovar. O que você tem a perder? No máximo um emprego, mas isso pode ser revertido facilmente em um mercado aquecido como o atual. O pior que pode acontecer é não dar certo. Mesmo assim você terá aprendido muito mais do que batendo cartão.

Saia da zona de conforto. Se o seu trabalho estiver fácil e sob controle, isso significa que ele não está mais agregando para a sua evolução técnica e pessoal.

Não desperdice a chance de trocar de função se a nova oportunidade for mais desafiadora. Isso fará você crescer tecnicamente e o preparará para desafios maiores ainda. Conhecer pessoas novas é tão importante quanto manter-se em contato com código.

Não se detenha por insegurança ou pela sensação de despreparo. Como você acha que vai ganhar experiência em alguma coisa se sempre adiá-la?

Fonte: InfoQ

Abraços!

As 8 dicas de como se tornar excelente e aproveitar as oportunidades são de autoria do Klaus Wuestefeld, autor do manifesto da Computação Soberana e criador do Prevayler.

1 – Torne-se excelente:

Seja realmente bom em alguma coisa. Não fique só choramingando ou querendo progredir às custas dos outros. Não pense que porque você sentou 4 anos numa faculdade ouvindo um professor falar sobre software que você sabe alguma coisa. Jogador de futebol não aprende a jogar bola tendo aula. Ele pratica. Instrumentistas geniais não aprendem a tocar tendo aula. Eles praticam. Pratique. Chegue em casa depois do trabalho e da aula e pratique. No final de semana, pratique.

Crie seu próprio virus, seu próprio jogo, seu proprio SO, seu próprio gerenciador de janelas, seu próprio webserver, sua própria VM, qualquer coisa. Varias coisas.

Nao precisa ser só programação. Pode ser networking, vendas, etc. Só precisa ser bom mesmo. Tenha paixão pela coisa.

As melhores praticas do mercado são polinizadas primeiro nos projetos de software livre. Aprenda com eles.

Discípulo, viajante, mestre: Primeiro seja um discípulo, tenha mestres locais, aprenda alguma coisa com alguém realmente bom, qualquer estilo. Depois viaje, encontre outros mestres e aprenda o estilo deles. Por fim, tenha o seu estilo, tenha discípulos, seja um mestre.

Vou fazer o curso da Mary Poppendieck em São Paulo semana que vem e quando tiver o curso de Scrumban do Alisson e do Rodrigo quero fazer também.

“Torne-se excelente” também pode ser chamado de “Melhoria Continua” ou “Learning”.

2 – Não seja deslumbrado

Desenvolvimento de software é a mesma coisa há 60 anos: modelo imperativo. Há 30 anos: orientação a objetos. Bancos de dados relacionais: 30 anos. (“Web”, por exemplo, não é uma tecnologia ou um paradigma. É meramente um conjunto de restrições sobre como desenvolver e distribuir seu software).

Não corra atras da última buzzword do mercado. Busque a essência, os fundamentos.

Busque na wikipédia e grokke: determinismo, complexidade de algoritmos “O()”, problema de parada de turing. Pronto, pode largar a faculdade. Falando sério.

Trabalhe com software livre. Não dê ouvidos a grandes empresas, grandes instituições ou grandes nomes só porque são grandes.

Você acha que vai aprender mais, ter mais networking e mais chance de alocação no mercado trabalhando em par comigo no Sneer por um ano, 8h por semana, ou passando 4 anos na faculdade, 20h por semana, pagando sei lá quanto por mes?

Você acha que vai aprender mais trabalhando em par com o Bamboo 6 meses na linguagem boo e na engine do Unity ou fazendo um ano de pós em “a buzzword da moda”?

“Nao seja deslumbrado” também é conhecido como “Coolness”.

3 – Mantenha-se Móvel

Com a demanda que temos hoje no mercado, se você é desenvolvedor de software e não consegue negociar um contrato com uma empresa onde você é pago por hora e pode trabalhar quantas horas quiser com um mínimo de meio período, você precisa rever a sua vida.

É melhor ter dois empregos de meio-período que um de período integral, porque você pode largar um deles a qualquer momento.

Você nunca vai conseguir nada melhor se não tiver tempo, se não tiver disponibilidade para pegar algo melhor quando aparecer.

Você sustenta seus pais e 7 irmãos? Não. Entao para de ser ganancioso e medroso no curto prazo, para de pagar faculdade, mestrado, pós, MBA, sei lá o que e vai aprender e empreender.

Trabalhe remoto. Não é o mais fácil, mas é perfeitamente possível.

Não fique reclamando que está trabalhando demais. Aumente seu preço e trabalhe menos.

4 – Emparceire-se Promiscuamente

Participe de dojos, de congressos, de projetos de software livre. Tenha amigos, colegas, conhecidos. Seja conhecido. Nao faça ruído em seis projetos e doze fóruns. Ajude de verdade em um ou dois projetos de cada vez. Ao longo do tempo, você terá ajudado em vários projetos, trabalhado em varias empresas.

5 – Mentalidade de Abundância

Ajude seus amigos sem cobrar (a “camaradagem” do Vinícius). Dê palestras gratuitas. Cursos gratuitos. Participe de projetos de software livre.

Pare as vezes uma tarde para receber um amigo seu e explicar seu projeto. Vá visitar seus amigos nos projetos deles. Viaje com algum amigo seu pra visitar um cliente dele, só pra conversar e fazer companhia.

Você tem um espaço onde dá cursos? É uma Aspercom, Caelum da vida? Chama os brothers para dar curso. Caramba, bola um modelo em que as pessoas podem se inscrever para cursos variados, pagando um sinal, e mantém tipo uma agenda pre-combinada: “Será numa terça e quinta a noite, avisadas com duas semanas de antecedência”.

Se rolar, beleza, se depois de meses não der certo, devolve o sinal. Pode ser curso de Prevayler, de Kanban, de Scrum, de Lean, de Computação Soberana, de Restfulie, de Cucumber, de Rails, de Teste Automatizado Mega-Avançado, qualquer coisa.

Chame amigos seus pra dar curso em dupla com você. Divida clientes. Divida projetos, mesmo que não precise de ajuda.

Dizia o pai de um brother meu de infância: “Tudo que custa dinheiro é barato.”

6 – Busque modelos de custo zero

Trabalhe em coisas que tem custo administrativo/burocrático/manutenção zero. Por menos ganho que tragam, depois de prontas, estarão tendo uma relação custo/benefício infinitamente vantajosa.

7 – Ganhe notoriedade

Faça coisas massa. Participe de projetos de software livre. Dê palestras gratuitas. Promova eventos (dojos, debates, grupos de usuários, etc).

8 – Não tenha medo (Por Dairton Bassi)

Meta a cara. Arrisque empreender. Arrisque inovar. O que você tem a perder? No máximo um emprego, mas isso pode ser revertido facilmente em um mercado aquecido como o atual. O pior que pode acontecer é não dar certo. Mesmo assim você terá aprendido muito mais do que batendo cartão.

Saia da zona de conforto. Se o seu trabalho estiver fácil e sob controle, isso significa que ele não está mais agregando para a sua evolução técnica e pessoal.

Não desperdice a chance de trocar de função se a nova oportunidade for mais desafiadora. Isso fará você crescer tecnicamente e o preparará para desafios maiores ainda. Conhecer pessoas novas é tão importante quanto manter-se em contato com código.

Não se detenha por insegurança ou pela sensação de despreparo. Como você acha que vai ganhar experiência em alguma coisa se sempre adiá-la?

 

The Developer’s Conference 2010 – Floripa!

Lançamento do TDC Florianópolis 2010

Neste ano, o TDC Florianópolis, repetindo o imenso sucesso do TDC São Paulo, traz um modelo bastante diferenciado dos anos anteriores, organizado por trilhas, e com palestras específicas por tecnologia. A inscrição é realizada por trilha  com um custo extremamente acessível.

Trilhas Stadium

As trilhas Stadium Sábado e Stadium Domingo não são restritas a um tema específico e apresentam uma grade diferenciada com apresentações de diversos temas como Arduino, Spring, Mobile, Ruby, SOA e PHP, realizando uma forte integração entre as comunidades.

Mais informações

Abraços!

Primeiro post do evento 1º DevDay Curitiba! “Business Intelligence usando informações Geoespaciais” – Thiago Zavaschi

Olá pessoal,

Conforme prometido, segue o primeiro post do evento DevDay Curitiba que aconteceu no último dia 25/09 na Faculdade de Tecnologia OPET. Os posts seguirão a ordem das palestras. A primeira palestra do dia foi com Thiago Zavaschi, falando sobre Business Intelligence usando informações Geoespaciais. Outra coisa, esses posts serão uma síntese de cada palestra.

Os exemplos desse post foram feitos com a edição Developer do SQL Server 2008, mas com qualquer edição funciona.

Bom, vamos ao que importa!

A parte inicial da palestra foi uma introdução sobre dados geoespaciais no SQL Server 2008.

Em primeiro lugar vamos aprender o que são dados geoespaciais, já sabemos que o SQLServer 2008 implementa nativamente o recurso de dados espaciais. Mas o que são esses tipos de dados?

O SQLServer 2008 possui dois tipos de dados que permitem armazenar, pontos, linhas, polígonos, mapas enfim, permite trabalhar com geoprocessamento. etc. Existem dois tipos de dados espaciais, são eles Geometry e Geography. Mas qual a diferença? O tipo de dados Geometry é utilizado para armazenar dados como pontos, linhas, mapas planificados, e polígonos. Já o tipo Geography permite armazenar dados de latitude e longitude, posicionamento no globo terrestre, como os dados usados em um GPS por exemplo. Esses tipos são padronizados pelo Open Geospatial Consortium (OGC).

Os dados espaciais são armazenados no banco como qualquer outro tipo de dado, e podem ser recuperados em uma query. Agora vejamos o seguinte, quando você executa uma query no SQL Server 2008 e traz um desses tipos, automaticamente é incluída uma guia de resultados chamada “Resultados Espaciais”.

Vamos executar o seguinte comando utilizando o tipo geography:

select (geography::STGeomFromText(‘POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))’, 4326)) from SpatialTable

Note que temos como resultado uma sequencia hexadecimal (conforme imagem acima) que de imediato não diz muita coisa, você deve estar pensando “hum que interessante!”. Mas agora começamos a tornar as coisas mais interessantes, ao clicar na guia Resultados espaciais podemos ver uma figura como a imagem abaixo:

Note no comando SQL que o primeiro parâmetro e o último são iguais “((-122.358 47.653” isso é necessário para fecharmos o nosso polígono, outro detalhe é que estou usando o tipo geography, e sendo esse utilizado em mapas elipsoidais, posso escolher a projeção que melhor me atende.

Com os tipos de dados geometry, além de criar linhas, polígonos, desenhar mapas também podemos fazer muitos cálculos como áreas de uma figura, verificar se um ponto pertente a uma reta, intersecção de formas, calcular distancias entre as figuras etc.

select geometry::STPolyFromText(‘POLYGON((3 1,1 1, 2 2, 2 3, 1 1,3 1))’, 0)

Ao desenhar uma imagem, caso os pontos finais e iniciais não coincidam, você receberá uma mensagem de erro como essa abaixo:

Msg 6522, Level 16, State 1, Line 1

Erro do .NET Framework durante a execução de rotina definida pelo usuário ou agregação “geometry”:

System.FormatException: 24306: The Polygon input is not valid because the start and end points of the ring are not the same. Each ring of a polygon must have the same start and end points.

System.FormatException:

at Microsoft.SqlServer.Types.Validator.Execute(Transition transition)

at Microsoft.SqlServer.Types.Validator.EndFigure()

at Microsoft.SqlServer.Types.ForwardingGeoDataSink.EndFigure()

at Microsoft.SqlServer.Types.OpenGisWktReader.ParseLineStringText()

at Microsoft.SqlServer.Types.OpenGisWktReader.ParsePolygonText()

at Microsoft.SqlServer.Types.OpenGisWktReader.ParseTaggedText(OpenGisType type)

at Microsoft.SqlServer.Types.OpenGisWktReader.Read(OpenGisType type, Int32 srid)

at Microsoft.SqlServer.Types.SqlGeometry.GeometryFromText(OpenGisType type, SqlChars text, Int32 srid)

at Microsoft.SqlServer.Types.SqlGeometry.STPolyFromText(SqlChars polygonTaggedText, Int32 srid)

Hierarquia dos dados espaciais

Temos 11 tipos de instância de dados espaciais, no entanto é permitido que instaciemos 7 tipos para trabalhar.

São eles:

  • Point
  • MultiPoint
  • LineString
  • MultiLineString
  • Polygon
  • MultiPolygon
  • GeometryCollection

Na imagem abaixo (destacados em azul), podemos ver a hierarquia dos tipos de instâncias (Geometry e Geography).

A primeira parte da palestra finaliza com essa introdução sobre os tipos geoespaciais. Partimos agora para aplicações desses tipos de dados.

Como o foco da palestra era B.I usando dados geoespaciais, Zavaschi iniciou essa parte explicando que um B.I precisa ter duas características principais:

1-    Deve ser rápido;

2-    Deve ser preciso.

As duas características acima são fundamentais para esse tipo de sistema.

Ele até criou uma situação pra exemplificar bem essas características:

“Um cidadão pergunta a hora para outra pessoa, então a pessoa aguarda, aguarda, aguarda e aguarda mais ainda, 2 minutos depois ela responde.”

Dessa situação, concluímos que:

1-    A resposta não foi rápida;

2-    A resposta não foi precisa;

Quando a pessoa recebeu a resposta, a hora já não era mais precisa, nem tampouco servia para ela tomar uma decisão, se houvesse uma oportunidade, ele já havia perdido.

Sabemos que hoje as empresas têm cada vez mais necessidades de incorporar informações visuais nas suas análises e tomadas de decisões, a frequência com que as pessoas consomem esses dados aumenta exponencialmente a cada dia.O SQLServer 2008 fornece esse mecanismo nativo para que as empresas tirem o melhor proveito para seus negócios com o máximo de performance. O SQL Server 2008, incorpora o suporte a índices espaciais, mecanismo que otimiza a busca das informações .

Veremos agora alguns cenários onde a inclusão de dados geoespaciais podem melhorar a eficiência de um negócio e torna-lo mais competitivo:

  • Os dados geoespaciais permitem uma melhor compreensão dos cenários pela análise visual.
  • É possível visualizar as regiões onde as vendas se concentram e onde estão fracas;
  • Criar mapas temáticos específicos por produtos ou serviços oferecidos;
  • Para o segmento de transporte rodoviário, por exemplo, é possível calcular distâncias e definir rotas para chegar ao destino;
  • Monitoramento com informações visuais;

Por enquanto é isso.

Até o próximo!

Abraços!

 

XII Semana da Computação – UDESC

A XII Semana da Computação acontecerá do dia 4 ao dia 8 de outubro de 2010 na UDESC – Joinville. Este ano o evento está sendo organizado pelos membros do Centro Acadêmico de Ciência da Computação (CACiC) e coordenado pela professora Avanilde Kemczinski.
O objetivo do evento é trazer à comunidade acadêmica um espaço de discussão, aprendizagem e integração entre alunos, professores e profissionais da área, proporcionar um ambiente agradável e descontraído para troca de conhecimento e também despertar no aluno interesse em novas áreas.
Além de palestras e mini-cursos, estamos preparando outras atrações para mostrar ao aluno de computação onde pode ser aplicado o conhecimento adquirido em sala de aula.
Vale destacar que o evento conta com grande apoio dos professores e alunos do Departamento de Ciência da Computação (DCC) e que sem este apoio não teria condições de acontecer. Portanto, em nome do CACiC, fica aqui o agradecimento à todos os que estão apoiando o projeto e contamos com a presença de todos para fazer desta semana da computação um sucesso como foram as anteriores.

Grade e Inscrições. Participem!!

Abraços!

1º DevDay Curitiba

O evento aconteceu na OPET – Faculdade de Tecnologia em Curitiba, eu já estava familiarizado com o local, pois havia ido em agosto em um outro evento no mesmo local. Saimos de Joinville as 06:00 da manhã, eu Marcos, Guilherme e Vilmar para o 1º DevDay. Expectativa grande!! O evento foi organizado por Igor Musardo e Rodolpho Marques do Carmo. Começamos o dia revendo alguns amigos(as), Djonatas Tenfen, Thiago Zavaschi e Nathália Zavaschi, (Djonatas e Thiago  também eram palestrantes do evento), além do café (pra lá de especial e) e rever os amigos, também rola um networking profissional nesses eventos. Durante o dia tivemos uma sequência de palestras técnicas sobre várias tecnologias, usando informações Geoespaciais e BI no SQLServer, Windows Phone7, MVVM, ASP.NET MVC,Silverlight e uma palestra sobre Desenvolvimento Profissional no final do dia. Após isso tudo iríamos fazer uma sessão de Coding Dojo, mas o tempo foi curto pra tanta atividade. Aguardo a segunda edição do evento. Nos próximos dias estarei colocando em forma de posts cada uma das palestras para compartilhar com quem não foi ao evento. Partcipar desses eventos é de uma importância enorme para o seu desenvolvimento pessoal e principalmente profissional, sempre que posso estou participando. Vou relacionar alguns motivos para que uma pessoa participe desses eventos:

1 – Se você é um universitário, provavelmente está começando a trabalhar agora na área, ou ainda nem trabalha, para essas pessoas, além da oprtunidade de networking profissional, você pode conhecer alguma área da TI que lhe chame a atenção e você venha a se especizaliar,  por exemplo, Banco de dados, Aplicações para dispositivos móveis, desenvolvimento para web, Designer Gráfico, Infra etc. então nesse item já temos 2 motivos.

2 – Conhecer novas tecnologias e ficar por dentro do que está ocorrendo na sua área profissional, visto que se você não se atualiza constantemente, um abraço meu amigo;

3 – Se você já é um profissional da área, então você estará se reciclando ao participar;

4 – Nesses eventos, sempre há empresas recrutando pessoas, então está aí a chance de uma possível ascenção profissional ou um emprego novo, para ter uma idéia nos últimos eventos que participei, estavam presentes pelo menos 2 empresas de RH fazendo recrutamento, além das empresas participantes do evento, isso porque pessoal qualificado está em baixa no mercado, portanto atualize-se e estude.

6 – Coffee Break – esse é sensacional! :)

7 – Você sempre encontra pessoas de outros eventos;

8 – Brindes, já ganhei ferramentas de desenvolvimento, e no DevDay ganhei um pen drive :) Show de bola;

Esses são apenas alguns motivos para você ir a eventos como esse. Até a próxima.

Abraços!

Evento “Dev” em Curitiba 25/09

DevDay Curitiba

DevDay Curitiba é o Dia dos  Desenvolvedores de Software de Curitiba voltado para toda a comunidade “DEV”.

Um evento que reúne os melhores profissionais desenvolvedores de software em um dia repleto de palestras.

Com objetivo de enriquecer os conhecimentostrocar experiênciascompartilhar as informaçõespromovendo importantes discussões sobre as melhores práticas, técnicas e resultados.

Além de tornar Curitiba rota para os melhores e mais importantes eventos de tecnologia do país.

DevDay Curitiba é um evento técnico voltado para:

  • Desenvolvedores de software;
  • Alunos das áreas de desenvolvimento de sistemas;
  • Professores;
  • E amantes da tecnologia.

Mais informações.

Enviando SMS pelo MSN.

Olá pessoal,

Hoje veremos como configurar o MSN para envio de SMS para celulares.

Em primeiro lugar, se você não possui uma no Windows Live é obrigatório que faça, http://www.windowslive.com.br.

Após você efetuar o login clique em Windows Live e em seguida na opção Dispositivos conforme imagem abaixo.

O próximo passo é clicar no link Adicionar um telefone.

Vamos agora inserir o número do telefone no formato DDD+Número.

Após você inserir o número e clicar em avançar, será enviado um código ao seu celular para garantir que aquele número realmente é seu. Esse código você informará na tela seguinte.

Após digitar o código e clicar em Avançar, basta agora aceitar o termo de uso e pronto, é só enviar SMS para os seus contatos. A pessoa que recebe não terá custo algum, apenas quem envia é que pagará pelo serviço o custo de 0,31 + impostos.

Finalmente para enviar um SMS basta clicar com o botão direito no contato que você deseja, e escolher a opção Enviar mensagem de texto.

Abraços!

Métodos obsoletos em C#

Olá pessoal,

Hoje veremos como dizer ao time de programadores “de agora em diante, não use mais esse método” de uma forma prática. O motivo de eu fazer esse post foi o fato de já ter me deparado com comentários nos cabeçalhos dos métodos afim de alertar aos programadores que não utilizassem mais tal método. Qual o problema de usar comentários? O problema é que só saberemos que esse método será removido no futuro, se por acaso abrirmos a biblioteca que o contém e então veremos o tal comentário, do contrário, continuaremos a utilizá-lo normalmente.

No exemplo, temos um método que no futuro, será removido, e precisamos avisar ao time de programadores que não mais o utilizem.



No Namespace System, temos o atributo “Obsolete” que serve para marcamos esse método como obsoleto. Podemos também colocar uma mensagem de aviso.

Informamos agora que esse método é obsoleto, ao usarmos, ele será sublinhado em verde para chamar a atenção do programador, e ao passarmos o mouse em cima será mostrado a mensagem abaixo com o texto que informamos.

Abraços!