A evolução da web e dos navegadores

Infográfico interativo sobre a evolução de navegadores e da web. Esse infográfico apresenta os principais navegadores da web desde 1993, como, por exemplo, Mosaic, Netscape, Opera, Internet Explorer, Safari, Firefox

Infográfico interativo sobre a evolução de navegadores e da web. Esse infográfico apresenta os principais navegadores da web desde 1993, como, por exemplo, Mosaic, Netscape, Opera, Internet Explorer, Safari, Firefox

Evolução das tecnologias para web, como HTML5, CSS3, WebGL, java, http e etc e dos navegadores Safari, Internet Explorer, Chrome, Firefox e demais

Ferramentas e Plugins de apoio a qualidade do código

FindBugs – Ferramenta que varre o byte-code gerado em busca de código malicioso, práticas ruins, erros do desenvolvedor

 

PMD – Ferramenta de análise baseada no código fonte, faz uma varredura e indica possíveis melhorias como : 

  • Possíveis erros: trechos de tratamento de exceções vazios (try/catch/finally);
  • Código morto: variáveis e parâmetros não utilizados, métodos privados;
  • Código sub-otimizado: uso desnecessário de String/StringBuffer;
  • Expressões complicadas: uso desnecessário de ifs, fors que poderiam ser implementados como while

Checkstyle – Com foco no estilo de codificação e não na lógica ou integridade do código, verifica comprimento de linha em caracteres, identação, convenção de nomes, 

 

UCDetector – Plugin do eclipse para analise de código, faz uma varredura e indica código desnecessário, como classe não usadas, métodos e etc.

 

 

Concatenando linhas de uma tabela em uma única linha na consulta sql no oracle

Se você já precisou concatenar  várias linhas em uma única coluna, separando-as por vírgula, segue uma dica de como fazer essa consulta no exemplo  abaixo

Você tem uma TABELA tab_01 no seguinte formato :

“CAMPO”
—————
“familia”
“casais”
“saude”
“nerd”
“psiquiatria”

E você quer realizar uma consulta onde o conteúdo da tab_01 seja concatenado em uma única linha da seguinte forma

“CAMPO”
——————-
“casais,familia,nerd,psiquiatria,saude”

O consulta sql abaixo resolve seu problema no Oracle 10g ou superior

SELECT LTRIM(SYS_CONNECT_BY_PATH(CAMPO, ‘,’),’,’) CAMPO
FROM ( SELECT CAMPO,
ROW_NUMBER() OVER (ORDER BY CAMPO) FILA
FROM tab_01)
WHERE CONNECT_BY_ISLEAF = 1
START WITH FILA = 1 CONNECT BY PRIOR FILA = FILA – 1

 

No mysql você faz isso  com uma função chamada “group_concat”

 

Criando um Projeto Web usando Maven e Eclipse

Primeira coisa a fazer é instalar e configurar o Maven, o link seguinte mostra como fazer isso: http://maven.apache.org/download.html

Acesse sua pasta de projetos, no meu caso criei uma pasta chamada C:\projetos que usarei como workspace do eclipse

Abra o prompt de comando, acesse essa pasta e execute o seguinte comando:

 mvn archetype:create -DgroupId=com.mycompany.projectname -DartifactId=projectname -DarchetypeArtifactId=maven-archetype-webapp

Conforme imagem abaixo:
novoprojeto_maven_01

ONDE:
-DartifactId é o nome do seu projeto -DgrouipId é o nome que será usando para o pacote padrão, poderia ser por exemplo com.regifelix.minhaapp
Altere “com.mycompany.projectname” e “projectname” como quiser.
O comando irá fazer download do necessário, poms e jars e irá criar uma pasta com a arquitetura básica com o arquivo pom.xml .

Após executar o comando dever aparecer a mensagem “BUILD SUCCESS” :

novoprojeto_maven_02

O Maven irá criar um novo projeto maven na seguinte estrutura:

novoprojeto_maven_03

O pom.xml é o projeto do Maven que será usaldo para build do projeto.

Agora para que o projeto possa ser importando no eclipse, no prompt de comando, acesse a pasta do projeto que criamos projectname e execute o seguinte comando:

  mvn eclipse:eclipse -Dwtpversion=2.0

Conforme imagem abaixo:
novoprojeto_maven_04

O Maven ira criar os arquivos .classpath e .project do eclipse. Depois disso abra o eclipse e importe o projeto.

Na aba Package clique com o botão direito do mouse e acesse a opção import, conforme imagem abaixo:

novoprojeto_maven_05

Acesse o item “General/Existing Projects into Workspace”, e clique em Next :

novoprojeto_maven_06

Em “Select root directory”, selecione o diretório que você esta usando como workspace, no meu caso C:\projetos

novoprojeto_maven_07




Feito isso irá aparecer para importar o projeto que criamos :

novoprojeto_maven_08

Então clique em “Finish” para importar o projeto no eclipse.

Após importado o projeto ficará da seguinte forma :
novoprojeto_maven_09

Pronto ! Projeto criado no eclipse

Se você abrir o arquivo pom.xml, verá que ele ficou da seguinte forma:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.projectname</groupId>
  <artifactId>projectname</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>projectname Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>projectname</finalName>
  </build>
</project>




O maven já adicionou por padrão a dependência do Junit, no Build Path conforme imagem abaixo:

novoprojeto_maven_10

Caso queira adicionar outras dependências ao projeto, basta alterar o pom.xml e acrescentar a tag do seu jar abaixo da dependencia do junit, o maven fará o papel de baixar essa nova dependência para o seu projeto.




Vamos agora executar nosso projeto usando o servidor Jetty, caso não tenha instalado o Jetty no seu eclipse, o que por padrão o eclipse não tem instalado você pode seguir o seguinte tutorial :
http://www.loiane.com/2011/07/integrando-jetty-com-eclipse/

Tendo o Jetty instalado no seu eclipse, vamos executar o projeto no servidor do jetty, iniciando a aplicação web.
Clique com o botão direito sobre o nome do seu projeto, no meu caso sobre “projectname”, depois em “Run as”, depois na opção “Run Jetty”, conforme imagem a seguir:

novoprojeto_maven_11

Na aba console do eclipse irá mostrar que o Jetty foi iniciado e esta executando na porta 8080 conforme imagem a seguir:

novoprojeto_maven_12

Caso seu eclipse não esteja exibindo a aba console acesse o menu superior do eclipse, em Window / Show View / Console irá mostrar no painel a aba do console.

Depois de iniciado o Jetty, vamos acessar nossa aplicação pelo browser:

abra seu navegador e digite:

 http://localhost:8080/projectname/

Onde projectname, é o nome do seu projeto, o navegador deve exibir uma tela com o conteúdo do arquivo index.jsp conforme abaixo:
novoprojeto_maven_13

Espero ter ajudado e até a próxima.

Procedimento para colocar Scheduler no Solr

solr
Procedimento para criar uma tarefa usando o DataImportHandler e através de uma Scheduler no próprio Solr fazer essa indexação de tempos em tempos.

A documentação de como adicionar uma scheduler no Solr encontra-se no seguinte endereço:
http://wiki.apache.org/solr/DataImportHandler#Scheduling

$solar.home = pasta principal do solar, no caso utilizando Jetty, é a pasta onde encontra-se o arquivo start.jar do jetty. No meu exemplo descompactei o Solr na pasta C:\Solr\solr-4.4.0 e a pasta home ficou C:\Solr\solr-4.4.0\example.

O procedimento consiste em 3 Passos:

• Criar um projeto Java simples com as classes SolrDataImportProperties.java, ApplicationListener.java e HTTPPostScheduler.java, gerar um jar com essas classes e adicionar na lib do Solr ( Existe um projetinho já pronto neste link https://code.google.com/p/solr-data-import-scheduler/downloads/list)
No caso geramos o jar dihs.jar e adicionamos no $solar.home/solr-webapp\webapp\WEB-INF\lib

• Adicionar o listener no web.xml que se encontra no caminho
$solar.home\solr-webapp\webapp\WEB-INF\web.xml

 <listener>
        <listener-class>
                org.apache.solr.handler.dataimport.scheduler.ApplicationListener
        </listener-class>
       </listener>

• Na pasta $solar.home/solr/conf criar o arquivo dataimport.properties com as informações abaixo, caso essa pasta não existir deve ser criada.

#Tue Jul 21 12:10:50 CEST 2010
metadataObject.last_index_time=2010-09-20 11\:12\:47
last_index_time=2010-09-20 11\:12\:47


#################################################
#                                               #
#       dataimport scheduler properties         #
#                                               #
#################################################

#  to sync or not to sync
#  1 - active; anything else - inactive
syncEnabled=1

#  which cores to schedule
#  in a multi-core environment you can decide which cores you want syncronized
#  leave empty or comment it out if using single-core deployment
syncCores=collection1

#  solr server name or IP address
#  [defaults to localhost if empty]
server=localhost

#  solr server port
#  [defaults to 80 if empty]
port=8983

#  application name/context
#  [defaults to current ServletContextListener's context (app) name]
webapp=solr

#  URL params [mandatory]
#  remainder of URL
params=/select?qt=/dataimport&command=delta-import&clean=false&commit=true

#  schedule interval
#  number of minutes between two runs
#  [defaults to 30 if empty]
interval=2

Na configuração acima o intervalo esta de dois em dois minutos, fazendo isso basta iniciar o Solr e verificar o arquivo de log $solar.home\logs\solr.log

Abaixo segue um exemplo de log:


INFO  - 2013-09-03 13:53:37.279; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Process started at .............. 03.09.2013 13:53:37 279
INFO  - 2013-09-03 13:53:37.280; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Full URL				http://localhost:8983/solr/collection1/select?qt=/dataimport&command=delta-import&clean=false&commit=true
INFO  - 2013-09-03 13:53:37.283; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Request method			POST
INFO  - 2013-09-03 13:53:37.284; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Succesfully connected to server	localhost
INFO  - 2013-09-03 13:53:37.285; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Using port			8983
INFO  - 2013-09-03 13:53:37.287; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Application name			solr
INFO  - 2013-09-03 13:53:37.288; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> URL params			/select?qt=/dataimport&command=delta-import&clean=false&commit=true
INFO  - 2013-09-03 13:53:37.297; org.apache.solr.handler.dataimport.DataImporter; Data Configuration loaded successfully
INFO  - 2013-09-03 13:53:37.297; org.apache.solr.handler.dataimport.DataImporter; Starting Delta Import
INFO  - 2013-09-03 13:53:37.305; org.apache.solr.handler.dataimport.SimplePropertiesWriter; Read dataimport.properties
INFO  - 2013-09-03 13:53:37.307; org.apache.solr.handler.dataimport.DocBuilder; Starting delta collection.
INFO  - 2013-09-03 13:53:37.313; org.apache.solr.handler.dataimport.DocBuilder; Running ModifiedRowKey() for Entity: course
INFO  - 2013-09-03 13:53:37.314; org.apache.solr.handler.dataimport.DocBuilder; Completed ModifiedRowKey for Entity: course rows obtained : 0
INFO  - 2013-09-03 13:53:37.315; org.apache.solr.handler.dataimport.DocBuilder; Completed DeletedRowKey for Entity: course rows obtained : 0
INFO  - 2013-09-03 13:53:37.316; org.apache.solr.handler.dataimport.DocBuilder; Completed parentDeltaQuery for Entity: course
INFO  - 2013-09-03 13:53:37.318; org.apache.solr.handler.dataimport.DocBuilder; Delta Import completed successfully
INFO  - 2013-09-03 13:53:37.319; org.apache.solr.handler.dataimport.DocBuilder; Time taken = 0:0:0.14
INFO  - 2013-09-03 13:53:37.320; org.apache.solr.update.processor.LogUpdateProcessor; [collection1] webapp=/solr path=/select params={clean=false&commit=true&command=delta-import&qt=/dataimport} {} 0 29
INFO  - 2013-09-03 13:53:37.322; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Response message			OK
INFO  - 2013-09-03 13:53:37.323; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Response code			200
INFO  - 2013-09-03 13:53:37.326; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Disconnected from server		localhost
INFO  - 2013-09-03 13:53:37.327; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Process ended at ................ 03.09.2013 13:53:37 327
INFO  - 2013-09-03 13:55:37.279; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Process started at .............. 03.09.2013 13:55:37 279
INFO  - 2013-09-03 13:55:37.280; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Full URL				http://localhost:8983/solr/collection1/select?qt=/dataimport&command=delta-import&clean=false&commit=true
INFO  - 2013-09-03 13:55:37.283; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Request method			POST
INFO  - 2013-09-03 13:55:37.284; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Succesfully connected to server	localhost
INFO  - 2013-09-03 13:55:37.286; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Using port			8983
INFO  - 2013-09-03 13:55:37.287; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> Application name			solr
INFO  - 2013-09-03 13:55:37.289; org.apache.solr.handler.dataimport.scheduler.HttpPostScheduler; [collection1] <index update process> URL params			/select?qt=/dataimport&command=delta-import&clean=false&commit=true

UOLDIVEO é destaque em Full Outsourcing na revista CRN Brasil

Logo UOL DIVEO

Logo UOL DIVEO

O Full Outsourcing é uma solução personalizada, que delega o gerenciamento do ambiente de TI  da empresa, ganhando agilidade para implementação de projetos e em qualidade dos profissionais responsáveis pela administração de rede.

Nesse ambiente o UOLDIVEO se destacou no mercado e concorre com gigantes como IBM e Amazon Web Services no Brasil, provendo soluções integradas, da camada da aplicação ao data center. 

segue abaixo o link da reportagem completa:

Edição de jul/13 da revista CRN Brasil
http://issuu.com/crn_brasil/docs/363_crn_pdf/13?e=1219031/4062913