<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8117288392969111021</id><updated>2024-09-04T18:53:53.146-07:00</updated><category term="java"/><category term="OMR"/><category term="ecf"/><category term="paf"/><category term="tef"/><category term="Artigo"/><category term="Cartões de Resposta"/><category term="Correção"/><category term="HOLAP"/><category term="MOLAP"/><category term="OLAP"/><category term="ROLAP"/><category term="Sistemas Gerenciais"/><category term="XML"/><category term="XStream"/><category term="bancos de dados"/><category term="monografia"/><title type='text'>Vantuil Oliveira</title><subtitle type='html'>Java e outras coisinhas mais...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-5659725478609594992</id><published>2013-04-28T15:34:00.000-07:00</published><updated>2013-11-18T16:15:51.126-08:00</updated><title type='text'>Tela de notificação transparente</title><content type='html'>Esses dias estava precisando criar uma telinha pra mostrar notificações de novos email recebido.&lt;br /&gt;
O programa recebe emails enviados por celulares android, interpreta o XML que está neles e apresenta uma notificação no computador do cliente dizendo que ele recebeu um novo pedido.&lt;br /&gt;
Esse código foi muito útil:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
import java.util.Date;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;


/**
 * Simple demo on how a translucent window
 * looks like when is used to display the system clock.
 * @author &lt;a href=&quot;http://stackoverflow.com/users/20654/oscarryz&quot;&gt;Oscar Reyes&lt;/a&gt;
 */
public class TranslucencyDemo extends JPanel implements ActionListener {

    private static final SimpleDateFormat sdf = new SimpleDateFormat(&quot;HH:mm:ss&quot;);
    private final Date now = new Date();
    private final Timer timer = new Timer(1000, this);
    private final JLabel text = new JLabel();

    public TranslucencyDemo() {
        super(true);
        timer.start();
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        now.setTime(System.currentTimeMillis());
        text.setText(String.format(&quot;&lt;html&gt;&lt;body&gt;&lt;span&gt;%s&lt;/span&gt;&lt;/body&gt;&lt;/html&gt;&quot;,sdf.format(now)));
    }

    public static void main(String[] args) {

        JFrame f = new JFrame();
        setTranslucency( f );
        f.setUndecorated( true );
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setBackground(new Color(0f, 0f, 0f, 1f / 3f));
        f.add(new Translucent());
        f.pack();
        f.setVisible(true);
    }
    // taken from: http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/
    private static void setTranslucency( Window window){
        try {
               Class awtUtilitiesClass = Class.forName(&quot;com.sun.awt.AWTUtilities&quot;);
               Method mSetWindowOpacity = awtUtilitiesClass.getMethod(&quot;setWindowOpacity&quot;, Window.class, float.class);
               mSetWindowOpacity.invoke(null, window, Float.valueOf(0.75f));
            } catch (NoSuchMethodException ex) {
               ex.printStackTrace();
            } catch (SecurityException ex) {
               ex.printStackTrace();
            } catch (ClassNotFoundException ex) {
               ex.printStackTrace();
            } catch (IllegalAccessException ex) {
               ex.printStackTrace();
            } catch (IllegalArgumentException ex) {
               ex.printStackTrace();
            } catch (InvocationTargetException ex) {
               ex.printStackTrace();
            }
    }
}
&lt;/pre&gt;
Fonte:&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/3240415/how-to-create-a-notification-in-swing&quot;&gt;http://stackoverflow.com/questions/3240415/how-to-create-a-notification-in-swing&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Esse exemplo mostra a data em períodos pré-determinados. Você pode condicionar essa exibição. No meu caso a condição era a chegada de um novo email.&lt;br /&gt;
Esse é o resultado do código:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://desmond.yfrog.com/Himg52/scaled.php?tn=0&amp;amp;server=52&amp;amp;filename=u3k.png&amp;amp;xsize=640&amp;amp;ysize=640&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;http://desmond.yfrog.com/Himg52/scaled.php?tn=0&amp;amp;server=52&amp;amp;filename=u3k.png&amp;amp;xsize=640&amp;amp;ysize=640&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Vc pode altera a tela, a sua localização, seus componentes, criar um Listener pra abrir seu programa quando o usuário clicar nela. Enfim, usem a criatividade :D&lt;br /&gt;
&lt;br /&gt;
Outro projeto interessante para o mesmo fim é o Twinkle:&amp;nbsp;&lt;a href=&quot;http://www.swingfx.ch/twinkle&quot;&gt;http://www.swingfx.ch/twinkle&lt;/a&gt;&lt;br /&gt;
Deem uma olhada. Mas ele não pode ser usado com propósitos comerciais :(&lt;br /&gt;
Mas é muito bom e fácil de usar! Vejam aqui:&amp;nbsp;&lt;a href=&quot;http://blog.swingfx.ch/&quot;&gt;http://blog.swingfx.ch/&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://getfile1.posterous.com/getfile/files.posterous.com/temp-2011-08-02/CJuphbhbsfqFDFmseeyxxDaweFIjeexnscJglHjfDxIvhgthhpvHEJJchyIt/demo1.png.scaled500.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;134&quot; src=&quot;http://getfile1.posterous.com/getfile/files.posterous.com/temp-2011-08-02/CJuphbhbsfqFDFmseeyxxDaweFIjeexnscJglHjfDxIvhgthhpvHEJJchyIt/demo1.png.scaled500.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Espero que seja útil!</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/5659725478609594992/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2013/04/esses-dias-estava-precisando-criar-uma.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/5659725478609594992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/5659725478609594992'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2013/04/esses-dias-estava-precisando-criar-uma.html' title='Tela de notificação transparente'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-6879063788157989831</id><published>2012-04-24T11:54:00.005-07:00</published><updated>2012-04-24T11:56:37.384-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bancos de dados"/><category scheme="http://www.blogger.com/atom/ns#" term="HOLAP"/><category scheme="http://www.blogger.com/atom/ns#" term="MOLAP"/><category scheme="http://www.blogger.com/atom/ns#" term="OLAP"/><category scheme="http://www.blogger.com/atom/ns#" term="ROLAP"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas Gerenciais"/><title type='text'>OLAP, seus principais tipos, vantagens e desvantagens</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Mudando um pouco o meu foco e compartilhando algumas informações sobre meus últimos estudos. Vou comparar os principais tipos de OLAP: MOLAP, ROLAP E HOLAP.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Espero que ajude a quem precisa :D&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
OLAP (OnLine Analytical&amp;nbsp;
Processing ou Processamento analítico em tempo real) é um software cuja
tecnologia de construção permite analisar e visualizar dados corporativos de
forma rápida, consistente e interativa.&amp;nbsp; É em geral baseado em dados
históricos e utilizado para tomada de decisão .&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Existem basicamente dois tipo de OLAP, o
MOLAP(Multidimensional OnLine Analytical Processing) e ROLAP(Relational OnLine Analytical
Processing), e ainda uma solução híbrida que combina as características dos
dois primeiros, o HOLAP (Hybrid Online Analytical Processing).&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Veja as principais características, vantagens e desvantagens
dessas abordagens:&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: #1f497d; font-size: 12pt; line-height: 115%;&quot;&gt;MOLAP
&lt;/span&gt;&lt;/b&gt;– É a forma mais comum de OLAP, nesse modelo os dados são
armazenados em cubos multimensionais, e não em estruturas relacionais, como os
tradicionais bancos de dados. Em geral, os formatos de armazenamento são
proprietário, ou seja, cada empresa que desenvolve uma solução, desenvolve seu
próprio formato de dados.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;u&gt;&lt;b&gt;Vantagens:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Excelente desempenho. Cubos MOLAP são feitos para
recuperação rápida dos dados, e é excelente para operações de slice and dicing.&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Pode realizar operações complexas: Todos os
cálculos foram pré-processados quando o cubo foi criado, por isso cálculos
complexos são realizáveis e retornam o resultado rapidamente.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;u&gt;&lt;b&gt;Desvantagens:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l1 level1 lfo2; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Limitações na quantidade de dados que ele pode
lidar: Já que todos os cálculos são realizados no momento em que o cubo é
criado, não é possível colocar uma grande quantidade de dados no cubo. Isso não
quer dizer que o cubo não pode ser criado a partir de um grande número de
dados, pelo contrário. Entretanto,&amp;nbsp; devem
ser inseridas no cubos apenas informações sumarizadas.&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l1 level1 lfo2; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Investimento adicional: a tecnologia baseada em
cubos é, em geral, proprietária, e não está disponível na empresa, por isso
precisa ser contratada, exigindo investimento&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: #1f497d; font-size: 12pt; line-height: 115%;&quot;&gt;ROLAP&lt;/span&gt;&lt;/b&gt;
- Esta metodologia&amp;nbsp;baseia-se&amp;nbsp;em manipular&amp;nbsp;os dados armazenados&amp;nbsp;no
banco de dados relacional&amp;nbsp;para dar a aparência&amp;nbsp;de funcionalidade&amp;nbsp;slice
and dice do&amp;nbsp;OLAP&amp;nbsp;tradicional.&amp;nbsp;Em essência, cada&amp;nbsp;ação de&amp;nbsp;slice
and dice&amp;nbsp;é equivalente a adicionar&amp;nbsp;um &quot;WHERE&quot;&amp;nbsp;na instrução
SQL. O que significa que essa forma de OLAP usa o formato tradicional
dos bancos relacionais para simular uma estrutura multidimensional, que é o
grande objetivo do OLAP.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;u&gt;&lt;b&gt;Vantagens:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Pode lidar com grande quantidade de dados: a
limitação do tamanho dos dados no ROLAP não depende do ROLAP em sim, mas sim do
tamanho da base em que executa as operações.&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Pode utilizar funções inerentes aos bancos de
dados relacionais: em geral, os bancos de dados relacionais já vêm com uma gama
de funcionalidades. Tecnologias ROLAP que estão no topo de bases relacionais,
podem usufruir dessas funcionalidades.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;u&gt;&lt;b&gt;Desvantagens:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l1 level1 lfo2; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Desempenho pode ser ruim: Já que cada relatório
ROLAP pode necessitar de uma, ou várias, consultas SQL, isso pode tornar o
desempenho baixo, já que uma base de dados grande pode fazer com que o tempo
das consultas também seja grande.&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l1 level1 lfo2; text-indent: -18.0pt;&quot;&gt;
&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;Investimento adicional: a tecnologia baseada em
cubos é, em geral, proprietária, e não está disponível na empresa, por isso
precisa ser contratada, exigindo investimento&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: #1f497d; font-size: 12pt; line-height: 115%;&quot;&gt;HOLAP&lt;/span&gt;&lt;/b&gt;
– Combina o melhor da tecnologia multidimensional com o melhor da relacional.
Pode usar estratégias ROLAP quando é requerida sumarização e MOLAP quando um
nível de detalhamento maior for o objetivo.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Existem muitas controvérsias nas definições desses sistemas.
Pois os próprios fabricantes não têm um padrão para designá-los. Mas, por alto,
o princípio é esse :D&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Referências:&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;http://www.1keydata.com/datawarehousing/molap-rolap.html&quot;&gt;http://www.1keydata.com/datawarehousing/molap-rolap.html&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;http://www.geekinterview.com/question_details/271&quot;&gt;http://www.geekinterview.com/question_details/271&lt;/a&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/6879063788157989831/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2012/04/mudando-um-pouco-o-meu-foco-e.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/6879063788157989831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/6879063788157989831'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2012/04/mudando-um-pouco-o-meu-foco-e.html' title='OLAP, seus principais tipos, vantagens e desvantagens'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-8702798274713127266</id><published>2011-10-29T07:57:00.000-07:00</published><updated>2011-10-29T07:57:30.436-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="monografia"/><category scheme="http://www.blogger.com/atom/ns#" term="OMR"/><title type='text'>Monografia sobre Optical Mark Recognition</title><content type='html'>Como muita gente se interessou pelo meu artigo sobre reconhecimento de marcas digitais, resolvi publicar minha monografia sobre este assunto.&lt;br /&gt;
O artigo foi extraído da monografia, Não é lá grandes coisas, hehehe, mas dá para ter uma ideia melhor do que foi desenvolvido, como o sistema foi modelado e como as marcas são extraídas das imagens.&lt;br /&gt;
&lt;br /&gt;
Também tem algumas ideias sobre Padrões de Projetos, um dos assuntos mais interessante que estudei nos últimos tempos...&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;https://docs.google.com/open?id=0B7kSPQnN0HIuODQ0ZTc1MGEtYWM0OS00MmYxLWJhNTQtYmYyZjkxYWRjYmVm&quot;&gt;Veja a Monografia aqui&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;Espero que ajude... :D</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/8702798274713127266/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/10/monografia-sobre-optical-mark.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/8702798274713127266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/8702798274713127266'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/10/monografia-sobre-optical-mark.html' title='Monografia sobre Optical Mark Recognition'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-4912006785388080990</id><published>2011-10-03T15:34:00.000-07:00</published><updated>2011-10-03T15:34:48.141-07:00</updated><title type='text'>Java - Travando o Teclado</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Galera, segue um código para travar o teclado e o mouse do computador utilizando a biblioteca JNative.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://sourceforge.net/projects/jnative/files/jnative/1.4-RC2/JNative.jar/download&quot;&gt;Você pode fazer o download da biblioteca do Jnative aqui&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://jnative.free.fr/SPIP-v1-8-3/&quot;&gt;Ou visitar o site da biblioteca&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;O código é bem simples:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIMveyD0axBFs6yNRa7cAe4gkl81jfoNO2_hB8ULwpRI_6sIRJag9UDO_ZSRZgPeIwaCJKmdP6uaZQYyD0bJhvUCiGjLPIgG25el3pVAxDNXs6dAog75PrlcQ6hGl8MzGf59C3IO1RSY-b/s1600/travaTeclado.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIMveyD0axBFs6yNRa7cAe4gkl81jfoNO2_hB8ULwpRI_6sIRJag9UDO_ZSRZgPeIwaCJKmdP6uaZQYyD0bJhvUCiGjLPIgG25el3pVAxDNXs6dAog75PrlcQ6hGl8MzGf59C3IO1RSY-b/s1600/travaTeclado.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Depois de fazer o download, basta adicionar a biblioteca ao classpath do seu projeto, e colocar o código da figura acima.&lt;br /&gt;
Para liberar o teclado, você pode usar o mesmo código, apenas troque &quot;Blk&quot; por 0 (zero): blockInput.setParameter(0,0);&lt;br /&gt;
&lt;br /&gt;
Esse método pode ser bem útil pra quem está trabalhando com TEF, e precisa travar o teclado e o mouse quando a aplicação faz alguma impressão.</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/4912006785388080990/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/10/java-travando-o-teclado.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/4912006785388080990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/4912006785388080990'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/10/java-travando-o-teclado.html' title='Java - Travando o Teclado'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIMveyD0axBFs6yNRa7cAe4gkl81jfoNO2_hB8ULwpRI_6sIRJag9UDO_ZSRZgPeIwaCJKmdP6uaZQYyD0bJhvUCiGjLPIgG25el3pVAxDNXs6dAog75PrlcQ6hGl8MzGf59C3IO1RSY-b/s72-c/travaTeclado.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-927192433995692545</id><published>2011-08-22T10:58:00.000-07:00</published><updated>2011-08-22T10:58:58.270-07:00</updated><title type='text'>Artigo fluxo óptico</title><content type='html'>Mais um artigo &lt;strike&gt;meia boca&lt;/strike&gt;, desta vez&amp;nbsp;sobre fluxo óptico.&lt;br /&gt;
Neste trabalho eu comparei dois métodos para localização de fluxo óptico me sequências de imagens.&lt;br /&gt;
Fluxo óptico nada mais é, do que o movimento do pixel ao longo do tempo, em sequências de imagens, tais como vídeos.&lt;br /&gt;
Pode ser interessante para alguém.... :D&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B7kSPQnN0HIuMGFlMTBkZGEtOWZiNi00NjkyLWExMTQtN2M3ZTgyNzUwYzkz&amp;amp;hl=en_US&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Acesse o Artigo aqui&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/927192433995692545/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/08/artigo-fluxo-optico.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/927192433995692545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/927192433995692545'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/08/artigo-fluxo-optico.html' title='Artigo fluxo óptico'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-4526231572161335640</id><published>2011-07-20T11:06:00.000-07:00</published><updated>2011-07-20T11:14:05.655-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><category scheme="http://www.blogger.com/atom/ns#" term="XStream"/><title type='text'>XStream - Salvando arquivos XML com Java </title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;XStream é uma biblioteca simples para serializar objetos em arquivos XML, e desserializá-los em objetos Java. Ou seja, com essa biblioteca você é capaz de salvar seus objetos em arquivos XML e restaurar esse arquivos em objetos novamente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;Entre as principais vantagens de usar essa biblioteca estão:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 16px; line-height: 18px;&quot;&gt;É fácil de usar – Existe uma classe de alto nível que encapsula a biblioteca, com apenas uma classe você consegui salvar seus objetos em arquivos XML.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 16px; line-height: 18px;&quot;&gt;Desempenho – É rápido e consome pouca memória, por isso pode ser usado para objetos com muitos dados, ou em sistema que necessitem salvar muitos XML’s.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 16px; line-height: 18px;&quot;&gt;Não é necessário modificar classes e objetos -&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 16px; line-height: 18px;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 16px; line-height: 18px;&quot;&gt;Serializa campos internos, incluindo os private e final. Suporta classes internas e não públicas, e não exige que as classe possuam um construtor padrão.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black; font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;Para aplicações pequenas, em que não seja necessário XML complexo, o XStream se mostra como uma excelente opção. Sua facilidade de uso torna tudo mais simples, e o desenvolvedor precisa de poucas linhas para salvar e recuperar seus objetos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black; font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black; font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;Primeiramente é necessário fazer o download do arquivo .jar da biblioteca, o endereço é &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;&lt;a href=&quot;http://xstream.codehaus.org/download.html&quot;&gt;http://xstream.codehaus.org/download.html&lt;/a&gt;. Se o código for usado como mostrado nessa postagem não é necessário incluir nenhuma outra biblioteca ao seu projeto.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black; font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;O Exemplo a seguir foi adaptado do site da biblioteca. Primeiramente são criadas duas classes simples:&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: #CCFFCC; border: solid #008800 1.0pt; mso-border-alt: solid #008800 .75pt; mso-element: para-border-div; padding: 3.0pt 3.0pt 3.0pt 3.0pt;&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;public class Pessoa {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;&amp;nbsp; private String nome;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;&amp;nbsp; private String sobreNome;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;&amp;nbsp; private Fone fone;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;&amp;nbsp; private Fone celular;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;public class Fone {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;&amp;nbsp; private int codigo;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;&amp;nbsp; private String numero;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;background: #CCFFCC; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 8.5pt;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;Após ter as classes que deseja serializar, e adicionar a biblioteca ao seu ClassPath, inicie um objeto XStream. Ele será responsável pela serialização e desserialização dos objetos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: #CCFFCC; border: solid #008800 1.0pt; mso-border-alt: solid #008800 .75pt; mso-element: para-border-div; padding: 3.0pt 3.0pt 3.0pt 3.0pt;&quot;&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;XStream xstream = new XStream(new DomDriver());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;//O código abaixo é opcional&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;xstream.alias(&quot;pessoa&quot;, Pessoa.class);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;xstream.alias(&quot;telefone&quot;, Fone.class);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;Agora vamos mostrar os códigos para serializar um objeto da classe Pessoa. Basta usar o objeto xstream criado:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: #CCFFCC; border: solid #008800 1.0pt; mso-border-alt: solid #008800 .75pt; mso-element: para-border-div; padding: 3.0pt 3.0pt 3.0pt 3.0pt;&quot;&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;Pessoa joao = new Pessoa(“João”, “da Silva”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;joao.setFone(new Fone(1,”1234-456”));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;joao.setCelular(new Fone(2,”9999-9999”));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;String xml = xstream.toXML();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 18px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;Com essa “manobra” a variável xml recebe o seguinte valor:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;background: #CCFFCC; border: solid #008800 1.0pt; mso-border-alt: solid #008800 .75pt; mso-element: para-border-div; padding: 3.0pt 3.0pt 3.0pt 3.0pt;&quot;&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;pessoa&amp;gt;
  &amp;lt;nome&amp;gt;João&amp;lt;/nome&amp;gt;
  &amp;lt;sobrenome&amp;gt;da Silva&amp;lt;/sobrenome&amp;gt;
  &amp;lt;fone&amp;gt;
    &amp;lt;codigo&amp;gt;1&amp;lt;/codigo&amp;gt;
    &amp;lt;numero&amp;gt;1234-456&amp;lt;/numero &amp;gt;
  &amp;lt;/fone&amp;gt;
  &amp;lt;celular&amp;gt;
    &amp;lt;codigo&amp;gt;2&amp;lt;/codigo&amp;gt;
    &amp;lt;numero&amp;gt;9999-999&amp;lt;/numero &amp;gt;
  &amp;lt;/celular&amp;gt;
&amp;lt;/pessoa&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 16px; line-height: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 16px; line-height: 18px;&quot;&gt;Para desserializar é tão fácil quanto serializar:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: #CCFFCC; border: solid #008800 1.0pt; mso-border-alt: solid #008800 .75pt; mso-element: para-border-div; padding: 3.0pt 3.0pt 3.0pt 3.0pt;&quot;&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;Pessoa novoJoao = (Pessoa)xstream.fromXML(xml);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;É muito fácil né?!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;E tem muitas utilidades! Quando desenvolvi o ecf, utilizei para restaurar itens vendidos quando o programa fechava ou havia queda de energia, ele salvava, a cada item vendido o arquivo xml da classe Cupom, e se ocorrece alguma eventualidade, ele transforma esse xml em objeto, e pronto, a aplicação ficava no mesmo&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;estado em que estava quando aconteceu o problema.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif; font-size: 12pt; line-height: 115%;&quot;&gt;Abaixo seguem alguns códigos que podem ajudar :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: #CCFFCC; border: solid #008800 1.0pt; mso-border-alt: solid #008800 .75pt; mso-element: para-border-div; padding: 3.0pt 3.0pt 3.0pt 3.0pt;&quot;&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;//Para omitir algum campo do xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;//Não salvaremos o campo celular da classe Pessoa&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;xstream.omitField(Pessoa.class, “celular”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;---------------------------------------------------&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;//Para salvar em uma arquivo – podemos salvar em uma OutPutStream&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;xstream.&lt;/span&gt;&lt;span style=&quot;font-size: 8.5pt;&quot;&gt;&lt;a href=&quot;http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/XStream.html#toXML(java.lang.Object, java.io.OutputStream)&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; text-decoration: none;&quot;&gt;toXML&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-size: 8.5pt;&quot;&gt;(joao,&amp;nbsp;new FileOutPutStream(“arquivo.xml”));&lt;/span&gt;&lt;span class=&quot;apple-converted-space&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 13.5pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: black; font-size: 8.5pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;---------------------------------------------------&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;//Para recuperar de um arquivo- usando InputStream&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; white-space: normal;&quot;&gt;&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: #ccffcc; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;Pessoa novoJoao;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;novojoao = (Pessoa) xstream.fromXML(new FileInputStream(“arquivo.xml”));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;---------------------------------------------------&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;color: black; font-size: 8.5pt;&quot;&gt;//Para aceitar caracteres especiais&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: #CCFFCC; border: none; mso-border-alt: solid #008800 .75pt; mso-padding-alt: 3.0pt 3.0pt 3.0pt 3.0pt; padding: 0cm;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-size: 8.5pt;&quot;&gt;XStream&amp;nbsp;stream&amp;nbsp;=&amp;nbsp;newXStream(new DomDriver(&quot;ISO-8859-1&quot;));&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/4526231572161335640/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/07/xstream-salvando-arquivos-xml-com-java.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/4526231572161335640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/4526231572161335640'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/07/xstream-salvando-arquivos-xml-com-java.html' title='XStream - Salvando arquivos XML com Java &lt;g:plusone&gt;&lt;/g:plusone&gt;'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-4485881633825642181</id><published>2011-07-01T10:04:00.000-07:00</published><updated>2011-07-01T10:36:43.156-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Artigo"/><category scheme="http://www.blogger.com/atom/ns#" term="Cartões de Resposta"/><category scheme="http://www.blogger.com/atom/ns#" term="Correção"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="OMR"/><title type='text'>Artigo sobre sistema OMR para correção de Cartões de Resposta  </title><content type='html'>Enquanto não cumpro minha promessa de criar postagem frequentes para meu blog, vou deixar aqui um artigo sobre meu tema de monografia.&lt;div&gt;Trabalhei com Optical Mark Recognition (grosseiramente traduzido como Reconhecimento de Marcas Ópticas).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Neste trabalho usei processamento de imagens para corrigir Cartões de Respostas (gabaritos) de imagens provenientes de um scanner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Desenvolvi também o sistema que faz isso.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A ideia é simples. A partir de imagens digitalizadas de cartões de respostas, o sistema permite criar um modelo no qual temos as marcas contidas nessa imagem, e a partir desse modelo ele é capaz de dizer quais opções foram selecionadas por determinado candidato. Além disso os dados podem ser exportados em XML ou TXT.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Espero que possa ajudar alguém!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B7kSPQnN0HIuY2U5NjgwMGEtYWEyNy00MGVjLTgxN2UtNzkwMjBjMDMwN2Zl&amp;amp;hl=en_US&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Acesse o Artigo no GoogleDocs&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/4485881633825642181/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/07/enquanto-nao-cumpro-minha-promessa-de.html#comment-form' title='18 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/4485881633825642181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/4485881633825642181'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/07/enquanto-nao-cumpro-minha-promessa-de.html' title='Artigo sobre sistema OMR para correção de Cartões de Resposta  &lt;g:plusone&gt;&lt;/g:plusone&gt;'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-8795384837286002200</id><published>2011-03-09T09:12:00.000-08:00</published><updated>2011-03-09T09:15:47.658-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ecf"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="paf"/><category scheme="http://www.blogger.com/atom/ns#" term="tef"/><title type='text'>TEF - Dicas para quem vai homologar</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;Pra quem já está prestes a homologar, tenho algumas dicas que podem ajudar:&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Primeiro, e mais importante, fique tranqüilo, os certificadores não mordem, hehehe, pelo contrário, são muito gente boa e tranqüilos, se você não der muito trabalho para eles, eles também não darão pra você.&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Não discuta com os certificadores, faça tudo o que eles pedirem, peça que esclareçam as coisas se não entendeu, mas evite discussões inócuas que não te levaram a lugar nenhum.&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Foram muito tranqüilos comigo e me ajudaram bastante... Aproveitava o tempo entre um teste e outro pra conversar e ganhar a confiança. São super simpáticos e estão ali pra te ajudar!&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;A certificação da SevenPDV é mais pesada...&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Além do Check List que eles fazem, fazem os roteiros da amex e da Cielo(antiga VisaNet). É difícil fazer em um dia só.&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;A da Software Express é mais tranqüila, é apenas o roteiro de testes, fiz em menos de 2 horas!&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Comecei na Seven, mas não terminei a homologação no primeiro dia, ficou um roteiro e meio pra fazer ainda...&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Mas como já havia corrigido todos os bugs no checklist da Seven, a da software Express foi feita em menos de duas horas... Sem nenhuma alteração no código! Mais tarde ainda pude terminar a homologação do Cielo&lt;span style=&quot;mso-spacerun:yes&quot;&gt;  &lt;/span&gt;e do Amex... Portanto essa é a ordem que eu aconselho, primeiro dia SevenPDV e segundo Software Express, por que na primeira deixam q você termine os testes no outro dia!&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Desde que você tenha feito tudo certo, eles te darão todas as dicas para organizar seu sistema da forma que eles exigem... Uma dica importante é deixar para corrigir os erros apenas no final, vá anotando os testes do checklist que você foi reprovado e o que o homologador pedirá, e apenas corrija depois que ele verificar o último teste, isso te poupará tempo, muito tempo.&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Quando eu homologuei, com um dos homologadores estava corrigindo o teste assim que eu era reprovado, aí ele saia da mesa de homologação e enrolava até voltar e eu acabei perdendo muito tempo. Com a segunda homologadora passei por todos os testes primeiro, e depois em menos de uma hora corrigi todos os erros do sistema...&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Se alguém tiver mais alguma dúvida, por favor poste nos comentários que terei o maior prazer em responder...&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Eu ficava muito apreensivo sobre como seria a certificação e tal, por isso estou disposto a colaborar com quem precisar...&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;;)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/8795384837286002200/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/03/tef-dicas-para-quem-vai-homologar.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/8795384837286002200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/8795384837286002200'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/03/tef-dicas-para-quem-vai-homologar.html' title='TEF - Dicas para quem vai homologar'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-7972769385671636152</id><published>2011-03-03T12:03:00.000-08:00</published><updated>2011-03-03T12:10:41.550-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ecf"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="paf"/><category scheme="http://www.blogger.com/atom/ns#" term="tef"/><title type='text'>TEF - Começando com o TEF</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;Pra quem precisa homologar o TEF e está mais perdido que cachorro que cai do caminhão de mudança vou dar algumas dicas! :D&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Certifiquei o TEF no final do mês de janeiro de 2011, foi muita ralação pra conseguir fazer tudo que eu precisava! Fiz tudo em Java, usei várias biblioteca que pretendo falar sobre elas em outros posts!&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Para começar, eu vou definir alguns termos:&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;ECF&lt;/b&gt; – Emissor de Cupons Fiscais – É a velha e boa impressora fiscal! A comunicação no meu sistema foi feita através de dll’s, implementei para as impressoras Daruma e Bematech.&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;TEF&lt;/b&gt; – Transferência Eletrônica de Fundos – É o nome dado á comunicação feita com as operadoras de cartão de crédito. &lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;PAF&lt;/b&gt; – Programa Aplicativo Fiscal – É o sistema que faz a integração com o ECF. Ele é responsável por mandar os comandos para o ECF e controlar a interface com o usuário. O seu PAF deve, além de comunicar-se com a impressora, fazer a comunicação com o Gerenciador Padrão (GP), que é um sistema oferecido pelas operadoras de cartão de crédito que fará a devida comunicação com as operadoras.&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;Pra quem está começando o TEF agora, tenho uma notícia ruim... Vai dar muito trabalho... hehe, são muito detalhes e muito pouca documentação.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Vai depender muito da linguagem que está pensando em utilizar. A que tem mais material na internet é o Delphi, de longe... Java eu não achei material quase nenhum, então pesquisa os conceitos e me virava pra implementar, desde JNI e XML até Threads e Swing. Foi uma experiência excelente, que me fez aprender muito, mas me tirou muitas noites de sono...&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Ao longo dos próximos dias pretendo dar algumas dicas pra quem está começando a homologar, e pra quem está prestes a enfrentar os temíveis homologadores... :D&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/7972769385671636152/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/03/pra-quem-precisa-homologar-o-tef-e-esta.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/7972769385671636152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/7972769385671636152'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2011/03/pra-quem-precisa-homologar-o-tef-e-esta.html' title='TEF - Começando com o TEF'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-6941983172713589452</id><published>2010-06-28T07:33:00.000-07:00</published><updated>2010-06-28T07:45:22.566-07:00</updated><title type='text'>Plugin Netbeans 6.8 e Ice Faces</title><content type='html'>Galera está disponível no site da icesoft plugin do IceFaces para NetBeans 6.8 e 6.9!&lt;br /&gt;&lt;a href=&quot;http://www.icefaces.org/JForum/posts/list/15973.page&quot;&gt;Forum Icefaces&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ainda não testei! Quando testar posto aqui os resultados!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.icefaces.org/main/downloads/os-downloads.iface?category=NetBeans&quot;&gt;O download pode ser feito aqui!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Até a versão 6.0 o plugin do icefaces era uma mão na roda! Fazia quase tudo pro desenvolvedor! Vamos ver essas novas versões!</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/6941983172713589452/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2010/06/plugin-netbeans-68-e-ice-faces.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/6941983172713589452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/6941983172713589452'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2010/06/plugin-netbeans-68-e-ice-faces.html' title='Plugin Netbeans 6.8 e Ice Faces'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-2156648548756414894</id><published>2010-06-28T06:53:00.000-07:00</published><updated>2010-06-28T07:32:56.482-07:00</updated><title type='text'>JSF - Desenvolvendo componentes personalizados com IceFaces e Facelets - parte 2</title><content type='html'>Pessoal, promessa é dívida né!&lt;br /&gt;Demorei mto pra postar a segunda parte, tive problemas com trabalho, família e Trabalho de conclusão de curso que tomou todo o meu tempo!&lt;br /&gt;&lt;br /&gt;Já temos o JSF 2.0, que simplifica e padroniza a criação de componentes, mas mesmo assim vou falar como fiz aqui, ainda pode ser útil pra muita gente. Então pra não deixa ninguém na mão:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vamos criar um componente bem simples, bobo mesmo, mas ótimo pra dar uma idéia do que deve ser configurado:&lt;br /&gt;Primeiramento o componente que vamos criar será uma label com um texto:&lt;br /&gt;Ah, mas não implementaremos comportamento, não agora, ela será um caixa estática.&lt;br /&gt;Poderemos utilizar essa caixa onde quisermos no sistema, pra isso bastará fazermos o seguinte:&lt;br /&gt;&lt;v:labelcaixa titulo=&quot;Nome:&quot; texto=&quot;João&quot;&gt;&lt;br /&gt;Pense nas possibilidades! Esse é um exemplo bobo, mas quando implementei minha caixa de pesquisa vi o quanto a criação desse componentes é poderosa!&lt;br /&gt;&lt;br /&gt;Primeiro vou mostrar a estrutura de arquivos que vamos precisar:&lt;br /&gt;&lt;/v:labelcaixa&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib0LNIbQnTiYKPMi30-wjJmdGbYdOrLyM2eEBBBqz8oOyhx685C69kxl0NMQr0OI52TBFpwoVTa_BdBtC_NQkaludczVlKYh8OI_rWoDtB5dCPe7sjV2yNglHPpc0HZInsxghRyJaTo1nN/s1600/arquivos.PNG&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 236px; height: 237px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib0LNIbQnTiYKPMi30-wjJmdGbYdOrLyM2eEBBBqz8oOyhx685C69kxl0NMQr0OI52TBFpwoVTa_BdBtC_NQkaludczVlKYh8OI_rWoDtB5dCPe7sjV2yNglHPpc0HZInsxghRyJaTo1nN/s320/arquivos.PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5487825173965194066&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;v:labelcaixa titulo=&quot;Nome:&quot; texto=&quot;João&quot;&gt;&lt;br /&gt;caixa.xhtml - Esse é o arquivo onde ficará o nosso compontente.&lt;br /&gt;facelets.taglib.xml - Esse arquivo vai definir nossa biblioteca de componentes.&lt;br /&gt;web.xml - Nesse arquivo vamos colocar o parâmetro pra contar pro Facelets onde está a biblioteca de componentes.&lt;br /&gt;&lt;br /&gt;Vamos começar pelo web.xml, nele devemos adicionar entre as tags &lt;web-app&gt; e &lt;/web-app&gt;, o seguinte código:&lt;br /&gt;&lt;context-param&gt;    &lt;context-param&gt;&lt;br /&gt;        &lt;description&gt;Parâmetro que determina a localização do descritor das tags dos componentes Facelets&lt;/description&gt;&lt;br /&gt;        &lt;param-name&gt;facelets.LIBRARIES&lt;/param-name&gt;&lt;br /&gt;        &lt;param-value&gt;/WEB-INF/facelets/facelets.taglib.xml&lt;/param-value&gt;&lt;br /&gt;    &lt;/context-param&gt;&lt;br /&gt;Com isso estamos criando um parâmetro de contexto para definir a biblioteca de tagLibs do facelets.&lt;description&gt;&lt;/description&gt;&lt;param-value&gt;&lt;/param-value&gt;&lt;br /&gt;&lt;/context-param&gt;&lt;br /&gt;&lt;br /&gt;Com isso o Facelets será capaz de saber que o arquivo de biblioteca de componente está na pasta especificada em &lt;param-value&gt;&lt;/param-value&gt;&lt;param-value&gt;.&lt;br /&gt;&lt;br /&gt;Agora veja a estrutura do arquivo facelets.tablib.xml:&lt;br /&gt;&lt;/param-value&gt;&lt;/v:labelcaixa&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOH2U3o21UZOAIqc8IzoZgVg733E1uWeggLBLqpf13vCIeqlD9RbeUaSJTe_Kt8kO0hceWXgW1iBWq1z1TMTACIQflNbsCnmgfSbMpuYEs_x2ZsUfJqO9DC5TO-ViLqn9BgrKRdMdSbV9G/s1600/Estrutura_facelets.taglib.PNG&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 196px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOH2U3o21UZOAIqc8IzoZgVg733E1uWeggLBLqpf13vCIeqlD9RbeUaSJTe_Kt8kO0hceWXgW1iBWq1z1TMTACIQflNbsCnmgfSbMpuYEs_x2ZsUfJqO9DC5TO-ViLqn9BgrKRdMdSbV9G/s320/Estrutura_facelets.taglib.PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5487822768760773922&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;v:labelcaixa titulo=&quot;Nome:&quot; texto=&quot;João&quot;&gt;&lt;param-value&gt;Abaixo descreverei as tags:&lt;br /&gt;&lt;facelet-taglib&gt; - É a tag raiz, que especifica que esse arquivo é uma tablib, dentro dela podemos colocar quantas tags precisarmos.&lt;br /&gt;&lt;namespace&gt; - É um nome de referência para essa taglig, quando formos usarmos essa taglib em uma página informaremos esse namespace no xmlns.&lt;br /&gt;&lt;tag&gt; - Define uma tag, podemos ter quantas tags quisermos.&lt;br /&gt;&lt;tag-name&gt; - O nome que essa tag terá.&lt;br /&gt;&lt;source&gt; - O caminho do arquivo que corresponde à essa tag.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bom, após criarmos esses dois arquivos nossa aplicação já está apta para usar taglibs, só falta criarmos o próprio componente que corresponderá a tag que queremos. &lt;/tag-name&gt;&lt;/tag&gt;&lt;/namespace&gt;&lt;/facelet-taglib&gt;&lt;/param-value&gt;&lt;/v:labelcaixa&gt;O código da caixa de pesquisa seria bem simples, &lt;v:labelcaixa titulo=&quot;Nome:&quot; texto=&quot;João&quot;&gt;&lt;param-value&gt;&lt;facelet-taglib&gt;&lt;namespace&gt;&lt;tag&gt;&lt;tag-name&gt; isso será feito no arquivo caixa.xhtml que ficará da seguinte forma:&lt;br /&gt;&lt;br /&gt;&lt;/tag-name&gt;&lt;/tag&gt;&lt;/namespace&gt;&lt;/facelet-taglib&gt;&lt;/param-value&gt;&lt;/v:labelcaixa&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP-v51esOjM9z0HPO8Nq3V-etGKHrVC2OMLNPalmFTPpeQaQVJqpunU8EFq0w8C0OwS5Vr7Ppr-h0Mq33LjDk70jzQJJUVNKwcAHYfQPdtvGGoqteKQzwPU7BagdJWRSt2WvDvJTJchU7s/s1600/caixa.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 107px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP-v51esOjM9z0HPO8Nq3V-etGKHrVC2OMLNPalmFTPpeQaQVJqpunU8EFq0w8C0OwS5Vr7Ppr-h0Mq33LjDk70jzQJJUVNKwcAHYfQPdtvGGoqteKQzwPU7BagdJWRSt2WvDvJTJchU7s/s320/caixa.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5487826441811667858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;v:labelcaixa titulo=&quot;Nome:&quot; texto=&quot;João&quot;&gt;&lt;param-value&gt;&lt;facelet-taglib&gt;&lt;namespace&gt;&lt;tag&gt;&lt;tag-name&gt;Agora na página que você deseja atilizar seu componente basta fazer a seguinte chamada no xmlns chamando o namespace do seu taglib:&lt;br /&gt;&lt;/tag-name&gt;&lt;/tag&gt;&lt;/namespace&gt;&lt;/facelet-taglib&gt;&lt;/param-value&gt;&lt;/v:labelcaixa&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDE20d7QnD4k1raJIs6Cs0IOK_H_qg4cnRrkIeYRWohd_gnTsh2i73RJaw0GV_g0o8IBdu4wzwKRuf3y_jArzf8PYqU74rSCn7q9A9dT0dNMf_JPYo6N9VYG1go65CfWtJo7Z7Hi8igOQC/s1600/xlmns.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 109px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDE20d7QnD4k1raJIs6Cs0IOK_H_qg4cnRrkIeYRWohd_gnTsh2i73RJaw0GV_g0o8IBdu4wzwKRuf3y_jArzf8PYqU74rSCn7q9A9dT0dNMf_JPYo6N9VYG1go65CfWtJo7Z7Hi8igOQC/s320/xlmns.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5487828442134030290&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;v:labelcaixa titulo=&quot;Nome:&quot; texto=&quot;João&quot;&gt;&lt;param-value&gt;&lt;facelet-taglib&gt;&lt;namespace&gt;&lt;tag&gt;&lt;tag-name&gt;&lt;br /&gt;e usar a tag de acordo com o que colocou no xmlns dessa forma, passando os atributos que podem ser utilizados pela tag:&lt;br /&gt;&lt;/tag-name&gt;&lt;/tag&gt;&lt;/namespace&gt;&lt;/facelet-taglib&gt;&lt;/param-value&gt;&lt;/v:labelcaixa&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj34405gqHxywneYjZeIvFJ-Kptzoab8jPlXbBLhRbdOyKubYBfm7oQ44Upbo7hyphenhyphenKNuJ2NJu7YtM8hMP_mFzfZPxPKHkS6kKAbdXKK6fGwBPTI1OzdO7vbDsKOIaP2bN4Oih4XC7v2zT5ul/s1600/arquivo.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 102px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj34405gqHxywneYjZeIvFJ-Kptzoab8jPlXbBLhRbdOyKubYBfm7oQ44Upbo7hyphenhyphenKNuJ2NJu7YtM8hMP_mFzfZPxPKHkS6kKAbdXKK6fGwBPTI1OzdO7vbDsKOIaP2bN4Oih4XC7v2zT5ul/s320/arquivo.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5487830861229960610&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;O resultado no navegador é o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzbdTzcDqeF-jOO0UOVoXbpm117_e-LRw5joFp9fmSaNVOQ84oHnE0dT9ER2jVP1r2CAaopNFsb9b1bU6c2HlRE_aXgQo5cWeEvoAP-62lmYMvLhPdGB4O8SbPVglqoo0d9RlHDpB-1euM/s1600/res.PNG&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 213px; height: 68px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzbdTzcDqeF-jOO0UOVoXbpm117_e-LRw5joFp9fmSaNVOQ84oHnE0dT9ER2jVP1r2CAaopNFsb9b1bU6c2HlRE_aXgQo5cWeEvoAP-62lmYMvLhPdGB4O8SbPVglqoo0d9RlHDpB-1euM/s320/res.PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5487830863620207746&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;São grandes as possibilidades para essa solução!&lt;br /&gt;Podemos a partir dela criar componentes complexos com lógica inserida em classes que facilitarão muito o desenvolvimento e a modularização do seu sistema!&lt;br /&gt;&lt;br /&gt;Postarei um componente mais complexo, agora que já sabem com criar um simples fica tudo mais fácil!&lt;br /&gt;Até o próximo!&lt;br /&gt;&lt;v:labelcaixa titulo=&quot;Nome:&quot; texto=&quot;João&quot;&gt;&lt;param-value&gt;&lt;facelet-taglib&gt;&lt;namespace&gt;&lt;tag&gt;&lt;tag-name&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&quot;As pessoas podem duvidar do que você diz, mas elas acreditarão no que você faz. &quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;[Lewis Cass]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tag-name&gt;&lt;/tag&gt;&lt;/namespace&gt;&lt;/facelet-taglib&gt;&lt;/param-value&gt;&lt;/v:labelcaixa&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/2156648548756414894/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2010/06/jsf-desenvolvendo-componentes.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/2156648548756414894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/2156648548756414894'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2010/06/jsf-desenvolvendo-componentes.html' title='JSF - Desenvolvendo componentes personalizados com IceFaces e Facelets - parte 2'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib0LNIbQnTiYKPMi30-wjJmdGbYdOrLyM2eEBBBqz8oOyhx685C69kxl0NMQr0OI52TBFpwoVTa_BdBtC_NQkaludczVlKYh8OI_rWoDtB5dCPe7sjV2yNglHPpc0HZInsxghRyJaTo1nN/s72-c/arquivos.PNG" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-118615181249161870</id><published>2009-12-18T04:49:00.000-08:00</published><updated>2009-12-18T05:13:07.234-08:00</updated><title type='text'>JSF - Desenvolvendo componentes personalizados com IceFaces e Facelets - parte 1</title><content type='html'>Eu estava desenvolvendo uma pesquisa para o sistema que estouconstruindo atualmente. Depois de muita pesquisa resolvemos utilizar IceFaces, já que é o padrão da Sun, e Facelets, que, além do benefício do template, torna o sistema mais rápido e a reutilização de componentes JSF muito mais fácil. Dizem alguns que a performance do sistema melhora entre 30 e 50%...&lt;div&gt;&lt;br /&gt;Estávamos construindo uma tabela para lançamento de lotes, coisas do sistema orçamentário municipal, ficou uma tela bonitinha com uma pesquisa excelente. Um painel Modal, com uma tabela e um data paginator.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsQgaaPLqiUByL4Qn5AGH2VDu3EAPeU_IQrfrTgheKeRynGmOtDBXHXGvVFqX6HNOo6TXpLnR98xBeuEbjMRZ7CeiIqXKIQ7buGe0ae3RktOG-kHYdam7i_PJLY5KnJF9wpnQoDk7rl0EV/s1600-h/telaPes.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 261px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsQgaaPLqiUByL4Qn5AGH2VDu3EAPeU_IQrfrTgheKeRynGmOtDBXHXGvVFqX6HNOo6TXpLnR98xBeuEbjMRZ7CeiIqXKIQ7buGe0ae3RktOG-kHYdam7i_PJLY5KnJF9wpnQoDk7rl0EV/s320/telaPes.bmp&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5416558817416999426&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; ;font-size:x-small;&quot;&gt;Tela de pesquisa&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;Mas aí veio a dúvida, eu vou ter que reescrever esse código, que não era pequeno, em todas as telas que eu precisar de uma pesquisa? Não, eu não podia fazer isso, e se eu precisasse alterar essa pesquisa? Sairia alterando de página em página? Loucura né!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Levei bastante tempo pra saber quais frameworks usar e como implementar isso, e pretendo compartilhar numa série de posts, que ainda não sei quantos, minhas experiências e tormentos, que, de forma alguma, foram poucos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;A IDE que eu utilizo é o NetBeans 6.5.1, tenho plugin do facelets e do IceFaces instalados, a criação do projeto com o IceFaces integrado ao facelets é cheia das peculiaridades, portanto recomendo que &lt;a href=&quot;http://vantuiloliveira.blogspot.com/2009/12/achei-esse-video-que-ensina-configura-o.html&quot;&gt;entrem nesse post&lt;/a&gt; e sigam os passos do vídeo. O NetBeans é, pra mim, de longe, a melhor IDE para desenvolvimento Java, tanto web quanto Desktop, não tenho nada contra Eclipse JDev, ou qualquer outra IDE, simplesmente prefiro o NetBeans, por questões de usabilidade, e, principalmente, por que já estou adaptado a ele.&lt;br /&gt;&lt;br /&gt;Então vamos a uma introdução sobre Facelets e IceFaces:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;IceFaces&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;Segundo o site do IceSoft, a empresa administradora do IceFaces: &quot;ICEfaces é mais do que uma biblioteca de componentes Ajax JSF, é um framework J2EE Ajax para desenvolvimento e implantação de aplicativos corporativos ricos. Com ICEfaces, desenvolvedores Java podem facilmente desenvolver aplicativos corporativos ricos em Java, não JavaScript.&quot;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Simplificando o IceFaces é um conjunto de componentes JSF com suporte a Ajax. Mas ele vai além disso, tem até algumas coisas diferentes do próprio JSF, como o ciclo de vida dos beans, que em alguns pontos se diferem de outras implementações.&lt;br /&gt;Vocês podem visualizar uma &lt;a href=&quot;http://component-showcase.icefaces.org/&quot;&gt;demonstração de componentes do IceFaces&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Existe uma versão free do IceFaces, mas como tudo no mundo capitalista existe uma versão paga, com componentes extras e suporte da IceSoft.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot; color: rgb(51, 51, 255); font-weight: bold; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;Facelets&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Segundo a Wikipédia:&lt;br /&gt;&quot;Facelets é um framework web de código aberto sob a licença Apache, é uma tecnologia alternativa para a renderização e visualização do JavaServer Faces.&lt;br /&gt;Em prática o Facelets é um framework que permite templating, utiliza XHTML, e torna a criação de componente muito mais simples.&quot;&lt;br /&gt;&lt;br /&gt;Não vou falar aqui sobre configurações pra que o Facelets funcione, acho bem mais sensato utilizar o NetBeans, mas se você é chato, e gosta de fazer tudo a mão, o google tem muita informação, inclusive no site do IceFaces IceFaces.org, tem tutoriais falando sobre essa configuração.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Embora eu tenha implementado com Facelets, acho que a implementação com outros frameworks não será muito diferente. O mais interessante de tudo é a classe que criei para gerenciar a tela de pesquisa, que abstraiu toda a complexidade da lógica da tela de pesquisa, mas isso é assunto pra outro post!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;No próximo post vou falar sobre a criação de componentes básicos, paraentender os conceitos de criação de componentes. Vou mostrar como aprendi a criar um componente com um label e um campo de texto, aliás, esse é o único exemplo que encontrei na internet, depois vou falar sobre a criação de componentes mais sofisticados, os quais possuem pouquíssima referência bibliográfica.&lt;br /&gt;&lt;br /&gt;Espero publicar os próximos posts  o mais rápido possível que minha vida de universitário e proletariado me permitirem... Até o próximo!!!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/118615181249161870/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2009/12/jsf-desenvolvendo-componentes.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/118615181249161870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/118615181249161870'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2009/12/jsf-desenvolvendo-componentes.html' title='JSF - Desenvolvendo componentes personalizados com IceFaces e Facelets - parte 1'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsQgaaPLqiUByL4Qn5AGH2VDu3EAPeU_IQrfrTgheKeRynGmOtDBXHXGvVFqX6HNOo6TXpLnR98xBeuEbjMRZ7CeiIqXKIQ7buGe0ae3RktOG-kHYdam7i_PJLY5KnJF9wpnQoDk7rl0EV/s72-c/telaPes.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8117288392969111021.post-5169391842334809961</id><published>2009-12-09T02:36:00.000-08:00</published><updated>2009-12-10T03:36:31.920-08:00</updated><title type='text'>JSF + Facelets + IceFaces no NetBeans</title><content type='html'>Achei esse video que ensina a configurar o Facelets com o IceFaces no NetBeans. Depois de apanhar muito pra tentar fazer esses frameworks funcionarem juntos consegui esse video.&lt;br /&gt;&lt;br /&gt;Apos instalar os plugins do IceFaces e do Facelets que podem ser baixados no site do NetBeans ou a partir do Gerenciador de plugins, basta criar um projeto como o mostrado no video e tudo executa tranquilinho.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/S93Jj1K4F9g&amp;hl=pt&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/S93Jj1K4F9g&amp;hl=pt&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Fica aí a dica, qualquer dúvida deixem nos comentários. ;)</content><link rel='replies' type='application/atom+xml' href='http://vantuiloliveira.blogspot.com/feeds/5169391842334809961/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vantuiloliveira.blogspot.com/2009/12/achei-esse-video-que-ensina-configura-o.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/5169391842334809961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8117288392969111021/posts/default/5169391842334809961'/><link rel='alternate' type='text/html' href='http://vantuiloliveira.blogspot.com/2009/12/achei-esse-video-que-ensina-configura-o.html' title='JSF + Facelets + IceFaces no NetBeans'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06834991412127720007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>