<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Coffee&#38;Byte</title>
	<atom:link href="http://viniciusknob.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://viniciusknob.wordpress.com</link>
	<description>Para tudo existe uma lógica. A minha é essa!</description>
	<lastBuildDate>Mon, 10 Oct 2011 06:21:04 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='viniciusknob.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Coffee&#38;Byte</title>
		<link>http://viniciusknob.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://viniciusknob.wordpress.com/osd.xml" title="Coffee&#38;Byte" />
	<atom:link rel='hub' href='http://viniciusknob.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Jetty: Welcome File List não é prioridade</title>
		<link>http://viniciusknob.wordpress.com/2011/10/10/jetty-welcome-file-list-nao-e-prioridade/</link>
		<comments>http://viniciusknob.wordpress.com/2011/10/10/jetty-welcome-file-list-nao-e-prioridade/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 06:03:43 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Contribuição]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=158</guid>
		<description><![CDATA[        Sempre utilizei o Tomcat. Lendo por ai vi algumas vantagens que o Jetty possui. Gostei do fato de você poder alterar sua aplicação e não precisar dar um restart no server para ele atualizar o war e assim utilizar o que foi atualizado. Jetty faz isso observando as mudanças e eu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=158&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><img class="aligncenter" title="Jetty-welcome-file-list" src="http://cache2.artprintimages.com/p/LRG/21/2112/XJ9ED00Z/art-print/jonathan-andrew-blue-fog-and-jetty.jpg" alt="" width="400" height="314" /></p>
<p style="text-align:justify;">        Sempre utilizei o Tomcat. Lendo por ai vi algumas vantagens que o Jetty possui. Gostei do fato de você poder alterar sua aplicação e não precisar dar um restart no server para ele atualizar o war e assim utilizar o que foi atualizado. Jetty faz isso observando as mudanças e eu posso escolher o tempo de intervalo entre essas observações, mas não é esse o ponto aqui, é apenas um diferencial que acho interessante destacar. Vamos lá então!</p>
<h3><strong>Pré-requisitos&#8230;</strong></h3>
<p>JDK – Que é composto pelo JRE, que por sua vez é composto pela JVM, isso será necessário já que estamos lidando com um Servidor Web para Java.<br />
Jetty(Binário) &#8211; Para esse exemplo estou usando a versão 7.5.x.<br />
Jetty WTP Adaptor &#8211; Um plugin para Eclipse que vai melhorar a interação com o Jetty.<br />
Eclipse IDE &#8211; Para esse exemplo estou usando o Eclipse Indigo.</p>
<h3><strong>Objetivo</strong></h3>
<p style="text-align:justify;">        Minha intenção com esse post é descrever os passos que fiz para usar o Jetty em uma aplicação e também descrever a solução que usei para a não priorização da welcome-file-list no web.xml pelo Jetty.</p>
<h3><strong>Processo de Instalação</strong></h3>
<p>Baixe e descompacte o binário do Jetty em um local &#8220;decente&#8221;. Eu criei uma pasta no C: com o nome de &#8220;jetty&#8221;, em minúsculo mesmo, e descompactei ali dentro.<br />
No Eclipse, instale o plugin WTP Adaptor utilizando o endereço &#8220;http://download.eclipse.org/jetty/updates/jetty-wtp&#8221;.<br />
Crie um novo Server Jetty e referencie aquele local onde você descompactou o binário do Jetty.<br />
De um start no Server e vá até o navegador e digite http://localhost:8080, se aparecer a página do Jetty é sinal que o negócio bufow.</p>
<h3><strong>Welcome File List não é prioridade</strong></h3>
<p style="text-align:justify;">        Bom, falar sobre isso é um pouco complicado pois não tenho muito conhecimento. O pouco que entendi é que o Jetty faz uma chamada a um servlet default para impedir que na ausência de um arquivo listado na welcome-list-file retorne um erro 404. Sendo assim ele usa como primeira chamada o &#8220;/&#8221; efetuando uma requisição, o servlet por sua vez deve fazer um redirect para o que seria a página inicial default, no meu caso o index.jsp.<br />
Procurei e não encontrei onde eu poderia alterar para que o Jetty não fizesse mais isso, mas não encontrei. O que achei foram classes criadas especialmente para iniciar o Jetty setando a página inicial entre outras coisas, mas mais uma vez não é isso que eu quero. Quero continuar na mesma linha do Tomcat.<br />
A solução depois de mais de 18h de pesquisa e tentativas foi aderir a idéia. Acontece que estou usando Struts 2 e sendo assim tenho que criar uma Action que me redireciona para a primeira página. O mais interessante disso é que se depois eu preferir o Jetty posso colocar nessa Action o getInstance para a Factory de EntityManager, mas isso já é assunto para outro post.</p>
<h3><strong>Action criada:</strong></h3>
<p><pre class="brush: javafx;">
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

public class WelcomeAction {
        @Action(value = &quot;&quot;, results = {
            @Result(name = &quot;welcome&quot;, location = &quot;/index.jsp&quot;)
        }
    )
    public String execute() {
        return &quot;welcome&quot;;
    }
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=158&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2011/10/10/jetty-welcome-file-list-nao-e-prioridade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>

		<media:content url="http://cache2.artprintimages.com/p/LRG/21/2112/XJ9ED00Z/art-print/jonathan-andrew-blue-fog-and-jetty.jpg" medium="image">
			<media:title type="html">Jetty-welcome-file-list</media:title>
		</media:content>
	</item>
		<item>
		<title>Chat Multicast UDP: uma tarefa de aula!</title>
		<link>http://viniciusknob.wordpress.com/2011/08/24/chat-multicast-udp-uma-tarefa-de-aula/</link>
		<comments>http://viniciusknob.wordpress.com/2011/08/24/chat-multicast-udp-uma-tarefa-de-aula/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 05:52:29 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Problema]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=143</guid>
		<description><![CDATA[Em uma de minhas aulas de Desenvolvimento de Aplicações Distribuídas recebi a tarefa de criar um CHAT do tipo “Command Line” utilizando Multicast e UDP. Como saiu uma coisa legal então resolvi colocar o código a disposição, que claro pode ser melhorado. Foi utilizado Thread e apenas um arquivo foi criado. Para que exista comunicação, execute o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=143&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Em uma de minhas aulas de Desenvolvimento de Aplicações Distribuídas recebi a tarefa de criar um CHAT do tipo “Command Line” utilizando Multicast e UDP. Como saiu uma coisa legal então resolvi colocar o código a disposição, que claro pode ser melhorado. Foi utilizado Thread e apenas um arquivo foi criado. Para que exista comunicação, execute o arquivo em cada computador que se deseja efetuar a comunicação. A tarefa foi em grupo e os outros integrantes são citados no arquivo. A classe principal eu resolvi fazer uma referencia ao tipo de coleção utilizada para mensagens pendentes e ao próprio exercício, que ficou algo como My LinkedList Chat Multicast.</p>
<p><pre class="brush: javafx;">
package br.com.chat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;

/**
 * Classe responsavel por cuidar da interacao do usuario. A classe obtem o nome
 * do usuario, mostra as mensagens pendentes recebedidas por uma thread e entao
 * pede se o usuario deseja digitar algo para enviar. A classe tambem instancia
 * a thread de controle do receive.
 *
 * @authors Vinicius Knob, Edipo Federle and Marcela Pedrini
 *
 */
public class MyLinkedListChatMulticast {

	/*
	 * Local de mensagens pendentes, ainda nao lidas. Todas as mensagens
	 * recebidas sao guardadas nesse local que eh um array ordenado para depois
	 * serem lidas. Esse array eh static pois precisa ser compartilhado com uma
	 * thread.
	 */
	private static LinkedList&lt;String&gt; mensagensPendentes = new LinkedList&lt;String&gt;();

	public static void main(String[] args) {
		int porta = 9999;
		InetAddress enderecoMulticast;
		MulticastSocket socket;
		String nomeUsuario;
		byte[] dados = new byte[140];
		DatagramPacket datagrama;

		try {

			/*
			 * Criando o chat
			 */
			enderecoMulticast = InetAddress.getByName(&quot;233.99.77.22&quot;);
			socket = new MulticastSocket(porta);
			socket.joinGroup(enderecoMulticast);

			/*
			 * Obtendo o nome do usuario do chat
			 */
			nomeUsuario = lerString(&quot;Digite seu nome: &quot;);

			/*
			 * Sendo gentil com o usuario
			 */
			System.out.println(&quot;\n***** Ola &quot; + nomeUsuario
					+ &quot;, voce esta online! *****\n&quot;);

			/*
			 * Enviando apresentacao a todos do chat
			 */
			dados = criarStringConsole(nomeUsuario, &quot;Estou Online!&quot;);
			datagrama = new DatagramPacket(dados, dados.length,
					enderecoMulticast, porta);
			socket.send(datagrama);

			/*
			 * Isso eh um bloco de limpesa do array de bytes.
			 */
			for (int i = 0; i &lt; dados.length; i++) {
				dados[i] = 0;
			}

			/*
			 * Instanciando a thread para cuidar do recebimento de mensagens
			 */
			new GestorReceive(socket, datagrama, nomeUsuario).start();

			/*
			 * Loop que ira mostrar as mensagens pendentes e oferecer ao usuario
			 * para digitar algo. O boolean controla a vida do laco.
			 */
			boolean viver = true;
			while (viver) {

				/*
				 * Usuario tem a chance de digitar algo para enviar
				 */
				String mensagem = lerString(&quot;&gt;&gt; &quot;); // bloqueante

				/*
				 * Quando o usuario nao deseja digitar nada, entao ele tera que
				 * digitar um codigo de escape &quot;w!&quot;, se nao for usado esse
				 * codigo, eh por que o usuario digitou algo que deva ser
				 * enviado a todos.
				 */
				if (!mensagem.equals(&quot;w!&quot;)) {
					/*
					 * Se a mensagem for igual a &quot;exit&quot;, significa que o usuario
					 * quer sair, entao a mensagem eh alterada para que seja
					 * enviado aos outros usuario algo mais decente = [USUARIO
					 * OFFLINE].
					 */
					if (mensagem.equals(&quot;exit&quot;)) {
						mensagem = &quot;[USUARIO OFFLINE]&quot;;
						viver = false;
					}

					/*
					 * O que sera mostrado no console do usuario sera a hora
					 * atual, o nome do usuario que enviou a mensagem e a
					 * mensagem dele
					 */
					dados = criarStringConsole(nomeUsuario, mensagem);
					datagrama = new DatagramPacket(dados, dados.length,
							enderecoMulticast, porta);
					socket.send(datagrama);

					/*
					 * Isso eh um bloco de limpesa do array de bytes.
					 */
					for (int i = 0; i &lt; dados.length; i++) {
						dados[i] = 0;
					}
				}
				/*
				 * Verifica a existencia de mensagens pendentes e as mostra
				 */
				verificarMensagensPendentes(nomeUsuario);

			}

		} catch (Exception exc) {
			throw new RuntimeException(exc.toString());

		}

	}

	/**
	 * Metodo que cria a string que deve ser mostrada para o usuario no console.
	 *
	 * @param nomeUsuario
	 *            - Nome do usuario.
	 * @param mensagem
	 *            - Mensagem enviada.
	 * @return Um array de bytes formatado.
	 */
	public static byte[] criarStringConsole(String nomeUsuario, String mensagem) {
		byte[] mensagemConsole = new byte[140];
		/*
		 * Montando uma string buffer para conter a mensagem
		 */
		StringBuffer stringMensagem = new StringBuffer();
		stringMensagem.append(&quot;[&quot;);
		stringMensagem.append(horaAtual());
		stringMensagem.append(&quot;] &quot;);
		stringMensagem.append(nomeUsuario);
		stringMensagem.append(&quot; diz: &quot;);
		stringMensagem.append(mensagem);

		mensagemConsole = stringMensagem.toString().getBytes();

		return mensagemConsole;
	}

	/**
	 * Metodo para mostrar a hora atual no formato &quot;HH:mm:ss&quot;
	 *
	 * @return A hora atual formatada como HH:mm:ss
	 */
	public static String horaAtual() {
		return new SimpleDateFormat(&quot;HH:mm:ss&quot;).format(new Date());
	}

	/**
	 * Metodo para ler uma String do teclado. Retorna a String lida ou refaz o
	 * metodo caso houve algum erro na leitura.
	 */
	public static String lerString() {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			String lido = br.readLine();
			return lido;
		} catch (IOException e) {
			System.out.println(&quot;Erro ao ler a string! Digite novamente.&quot;);
			return lerString();
		}
	}

	/**
	 * Metodo que recebe e mostra uma mensagem, depois chama o metodo de ler uma
	 * nova String.
	 */
	public static String lerString(String mensagem) {
		System.out.print(mensagem);
		return lerString();
	}

	/**
	 * Metodo que verifica a existencia de mensagens pendentes. Esse metodo
	 * utiliza o metodo getMensagens() para esvaziar o array de mensagens caso
	 * exista algo. Nao retorna nada pois o que o metodo faz eh verificar as
	 * mensagens e ja mostra-las no console.
	 */
	public static synchronized void verificarMensagensPendentes(
			String nomeUsuario) {
		/*
		 * Buscando o array de mensagens pendentes
		 */
		LinkedList&lt;String&gt; mensagensParaVerificacao = new LinkedList&lt;String&gt;(
				getMensagens());

		/*
		 * Agui eh verificado se existem mensagens pendentes se existir, entao
		 * ele pegara uma a uma as mensagens ja ordenadas e mostrara no console
		 * para o usuario
		 */
		if (!mensagensParaVerificacao.isEmpty()) {
			Iterator&lt;String&gt; i = mensagensParaVerificacao.iterator();
			while (i.hasNext()) {
				String textoRecebido = i.next();

				/*
				 * Aqui eh verificado se na mensagem contem a palavra chave
				 * &quot;EXIT&quot;, que indica que um usuario deseja encerrar o chat,
				 * tambem eh verificado se o usuario solicitante eh½ o mesmo que
				 * esta na maquina, para que nao exista conflito se a makina
				 * receber um exit de outro usuario.
				 */
				if ((textoRecebido.contains(&quot;[USUARIO OFFLINE]&quot;))
						&amp;&amp; (textoRecebido.contains(nomeUsuario))) {
					System.exit(0);
				} else {
					System.out.println(textoRecebido.trim());
					System.out.flush();
				}
			}
		}
	}

	/**
	 * Metodo para pegar todas as mensagens pendentes. O metodo faz uma copia do
	 * array de mensagens e entao esvazia o array para que seja possivel receber
	 * novas mensagens sem existir as que ja foram lidas, sendo assim, cada vez
	 * que as mensagens forem pegas, nao serao mostradas as mensagens ja pegas
	 * anteriormente.
	 *
	 * @return Um array de todas as mensagens recebidas.
	 */
	public static LinkedList&lt;String&gt; getMensagens() {
		LinkedList&lt;String&gt; copiaMensagensPendentes = new LinkedList&lt;String&gt;(
				mensagensPendentes);
		mensagensPendentes.clear();
		return copiaMensagensPendentes;
	}

	/**
	 * Metodo para substituir o array existente por um novo array vazio para
	 * receber mensagens
	 *
	 * @param mensagens
	 *            - O novo array de mensagens.
	 */
	public static void setMensagens(LinkedList&lt;String&gt; mensagens) {
		mensagensPendentes = new LinkedList&lt;String&gt;(mensagens);
	}

	/**
	 * Metodo para armazenar uma mensagem como pendente no array de mensagens.
	 *
	 * @param mensagem
	 *            - A mensagem para ser armazenada.
	 */
	public static synchronized void setMensagem(String mensagem) {
		mensagensPendentes.add(mensagem);
	}

}

/**
 * Thread que ficara encarregada de controlar o recebimento de mensagens por
 * receive. Essa Thread guarda as mensagens em um array que seria um local para
 * mensagens pendentes, ainda nao lidas.
 *
 * @authors Vinicius Knob, Edipo Federle and Marcela Pedrini
 *
 */
class GestorReceive extends Thread {
	MulticastSocket socket;
	String nomeUsuario;
	byte[] dados = new byte[140];
	DatagramPacket datagrama;

	public GestorReceive(MulticastSocket skt, DatagramPacket dtg, String nmusr) {
		socket = skt;
		datagrama = dtg;
		nomeUsuario = nmusr;
	}

	public void run() {

		try {

			/*
			 * Essa variavel vai controlar a vida da thread
			 */
			boolean viver = true;

			/*
			 * Loop encarregado de receber mensagens e guarda-las no array de
			 * mensagens pendentes
			 */
			while (viver) {

				/*
				 * Colocando um array de dados vazio sobre o array anterior
				 */
				datagrama.setData(dados);
				/*
				 * Receive eh bloqueante
				 */
				socket.receive(datagrama);
				dados = datagrama.getData();
				String mensagem = new String(dados);

				/*
				 * Aqui eh verificado se na mensagem contem a palavra chave
				 * &quot;EXIT&quot;, que indica que um usuario deseja encerrar o chat,
				 * tambem eh verificado se o usuario solicitante eh o mesmo que
				 * esta na maquina, para que nao exista conflito se o makina
				 * receber um exit de outro usuario. Isso encerrara a vida da
				 * thread.
				 */
				if ((mensagem.contains(&quot;exit&quot;))
						&amp;&amp; (mensagem.contains(nomeUsuario))) {
					viver = false;
				}
				MyLinkedListChatMulticast.setMensagem(mensagem);

				/*
				 * Isso eh um bloco de limpesa do array de bytes.
				 */
				for (int i = 0; i &lt; dados.length; i++) {
					dados[i] = 0;
				}
			}

		} catch (Exception exc) {
			System.err.println(exc.toString());
		}
	}
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=143&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2011/08/24/chat-multicast-udp-uma-tarefa-de-aula/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>
	</item>
		<item>
		<title>Resolva o problema&#8230; Próximo número da sequencia!</title>
		<link>http://viniciusknob.wordpress.com/2011/05/08/resolva-o-problema-proximo-numero-da-sequencia/</link>
		<comments>http://viniciusknob.wordpress.com/2011/05/08/resolva-o-problema-proximo-numero-da-sequencia/#comments</comments>
		<pubDate>Mon, 09 May 2011 01:14:31 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Problema]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=138</guid>
		<description><![CDATA[Obs.: Dizem que&#8230; - se você for um engenheiro, 3 minutos são suficientes para resolver; - se você for um arquiteto, 3 horas; - se você for um contador, 3 dias; - se você for um advogado, nem em 3 meses!! QUAL É O PRÓXIMO NÚMERO DA SEQUÊNCIA ABAIXO? 1, 2, 6, 42, 1806, _____??? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=138&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Obs.: Dizem que&#8230;</p>
<p>- se você for um engenheiro, 3 minutos são suficientes para resolver;<br />
- se você for um arquiteto, 3 horas;<br />
- se você for um contador, 3 dias;<br />
- se você for um advogado, nem em 3 meses!!</p>
<p>QUAL É O PRÓXIMO NÚMERO DA SEQUÊNCIA ABAIXO?<br />
1, 2, 6, 42, 1806, _____???</p>
<p>&#8216;</p>
<p>&#8216;</p>
<p>&#8216;</p>
<p>______________________________________________</p>
<p>¬¬&#8217; Noosaaa, eu levei 3 segundos pra encontra o padrão!</p>
<p>Resposta: 3263442</p>
<p>Posso me considerar um nerd?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=138&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2011/05/08/resolva-o-problema-proximo-numero-da-sequencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalando TomCat</title>
		<link>http://viniciusknob.wordpress.com/2011/03/21/instalando-tomcat/</link>
		<comments>http://viniciusknob.wordpress.com/2011/03/21/instalando-tomcat/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 00:52:30 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Contribuição]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=107</guid>
		<description><![CDATA[Pré-requisitos&#8230; JDK &#8211; Que é composto pelo JRE, que por sua vez é composto pela JVM, isso será necessário já que estamos lidando com um Servidor Web para Java. TomCat &#8211; Preferencialmente a última versão liberada. Objetivo Todos os posts que vi na internet ensinavam quase tudo, mas um grande problema que vi sempre foram [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=107&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2><img class="aligncenter" src="http://sp8.fotolog.com/photo/56/35/100/jadsonaugusto/1223166020031_f.jpg" alt="" width="386" height="310" /></h2>
<h2>Pré-requisitos&#8230;</h2>
<p>JDK &#8211; Que é composto pelo JRE, que por sua vez é composto pela JVM, isso será necessário já que estamos lidando com um Servidor Web para Java.</p>
<p>TomCat &#8211; Preferencialmente a última versão liberada.</p>
<h2>Objetivo</h2>
<p>Todos os posts que vi na internet ensinavam quase tudo, mas um grande problema que vi sempre foram as variáveis de ambiente. Aqui vou mostrar os passos que segui para a instalação do TomCat em um computador com Windows, onde que existe a ausencia de um instalador .exe.</p>
<h2>Processo de Instalação</h2>
<p>Descompactar o arquivo do TomCat baixado em C:\ e renomear a pasta resultante para &#8220;tomcat&#8221;.</p>
<p>Resultado: &#8220;C:\tomcat&#8221;.</p>
<p>Criar quatro variáveis de ambiente, para isso clique com o botão direito em Meu Computador &gt; Propriedades &gt; Avançado &gt; Variáveis de Ambiente.</p>
<p>1. Nome: &#8220;CATALINA_HOME&#8221;;  Valor: &#8220;C:\tomcat&#8221;.</p>
<p>ou seja, local onde foi descompactado o TomCat.</p>
<p>2. Nome: &#8220;CLASSPATH&#8221;; Valor: &#8220;C:\tomcat\lib\servlet-api.jar;C:\tomcat\lib\jsp-api.jar;&#8221;.</p>
<p>ou seja, local onde estão os arquivos .jar do Servelt e JSP.</p>
<p>3. Nome: &#8220;JAVA_HOME&#8221;; Valor: &#8220;C:\Arquivos de programas\Java\jdk1.6.0_16&#8243;.</p>
<p>ou seja, local de instalação do JDK.</p>
<p>4. Nome: &#8220;JRE_HOME&#8221;; Valor: &#8220;C:\Arquivos de programas\Java\jre6&#8243;.</p>
<p>ou seja, local de instalação do JRE.</p>
<p>Agora vamos criar um atalho que será o &#8220;Iniciar TomCat&#8221; e outro que será o &#8220;Encerrar TomCat&#8221; para o TomCat:</p>
<p>Entrar em C:\tomcat\bin e procurar o arquivo startup.bat, botão direito, Enviar para Área de Trabalho, isso criará um atalho, vá até ele, renomeie para &#8220;Iniciar TomCat&#8221;.</p>
<p>Procurar agora o arquivo shutdown.bat, botão direito, Enviar para Área de Trabalho, isso  criará um atalho, vá até ele, renomeie para &#8220;Encerrar TomCat&#8221;.</p>
<p>Agora temos os atalhos para iniciar e encerrar o servidor TomCat em nossa Área de Trabalho.</p>
<p>OBS: Se você integrar o TomCat com alguma IDE, nao precisará desses atalhos de iniciar e finalizar, pois a IDE gerencia isso!</p>
<p>Após iniciar o TomCat, vá até o navegador e digite &#8220;http://localhost:8080, se aparecer a página do TomCat, é por que deu certo!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=107&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2011/03/21/instalando-tomcat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>

		<media:content url="http://sp8.fotolog.com/photo/56/35/100/jadsonaugusto/1223166020031_f.jpg" medium="image" />
	</item>
		<item>
		<title>Eclipse + EPIC + Templates = Agilidade</title>
		<link>http://viniciusknob.wordpress.com/2010/09/06/eclipse-epic-templates-agilidade/</link>
		<comments>http://viniciusknob.wordpress.com/2010/09/06/eclipse-epic-templates-agilidade/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 17:32:50 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Contribuição]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=91</guid>
		<description><![CDATA[Para entender melhor a finalidade desse post é necessário entender o que é um modelo. Então eu indico a seguinte leitura como inicio: &#62; Construir Aplicativos Perl com o Eclipse &#62; Usar o EPIC para Construir, Editar e Desenvolver &#62; Modelos e Módulos: Aqui:  http://www.ibm.com/developerworks/br/library/os-perlecl/section7.html Após a leitura você tem agora o conhecimento sobre o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=91&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://www.vwclubepb.com/vwclubepb.com/wp-content/uploads/2010/12/velocimetro.jpg" alt="" width="400" height="296" /></p>
<p>Para entender melhor a finalidade desse post é necessário entender o que é um modelo. Então eu indico a seguinte leitura como inicio:</p>
<p>&gt; Construir Aplicativos Perl com o Eclipse &gt; Usar o EPIC para Construir, Editar e Desenvolver &gt; Modelos e Módulos:</p>
<p>Aqui:  <a href="http://www.ibm.com/developerworks/br/library/os-perlecl/section7.html">http://www.ibm.com/developerworks/br/library/os-perlecl/section7.html</a></p>
<p>Após a leitura você tem agora o conhecimento sobre o que pode ser feito com o plugin do EPIC no Eclipse. Agora, basta aplicar isso, então eu indico a leitura de algum site que proporcione a sintaxe de muitas coisas rotineiras da linguagem, por exemplo:</p>
<p>&gt; Perl Syntax:</p>
<p>Aqui: <a href="http://codesyntax.netfirms.com/lang-perl.htm">http://codesyntax.netfirms.com/lang-perl.htm</a></p>
<p>Existem vários na internet, mas esse ai é bem completo. Agora então, temos que converter essa sintaxe, para a sintaxe de modelo. Abaixo listo algumas das que fiz e utilizo. São simples e muito conhecidas, mas é muito mais rápido apenas pressionar CTRL+SPACE e ter a disposição elas prontas para inserção. O caminho: Window &gt; Preferences &gt; Perl EPIC &gt; Editor &gt; Templates &gt; New:</p>
<blockquote><p><pre class="brush: perl;">

for($$${var},$$${var}&lt;=$$${maxvalue},$$${var}++)
{

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

for($$${minvalue}..$$${maxvalue})
{

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

for($$${var},$$${var}&lt;=$$${maxvalue},$$${var}++)
{

    next if($$${var} == $$${value});

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

for($$${var},$$${var}&lt;=$$${maxvalue},$$${var}++)
{

    last if($$${var} == $$${value});

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

foreach $$${var} ($$@{arr})
{

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

foreach($$@{arr})
{

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

$$${var} = $$${value};

while ($$${var} &lt; $$${maxvalue})
{

    $$${var}++;

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

$$${var} = $$${value};

until ($$${var} == $$${valueCompare})
{

    $$${var}--;

}

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

$$${var} = $$${value};

do
{

} while ($$${var} != $$${valueCompare});

</pre></p></blockquote>
<blockquote><p><pre class="brush: perl;">

$$${var} = $$${value};

do
{

} until ($$${var} == $$${valueCompare});

</pre></p></blockquote>
<p>Bom, ai estão alguns modelos que criei, com certeza da para fazer vários além desses.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=91&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2010/09/06/eclipse-epic-templates-agilidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>

		<media:content url="http://www.vwclubepb.com/vwclubepb.com/wp-content/uploads/2010/12/velocimetro.jpg" medium="image" />
	</item>
		<item>
		<title>Ciclo de Vida do Software</title>
		<link>http://viniciusknob.wordpress.com/2010/09/04/ciclo-de-vida-do-software-2/</link>
		<comments>http://viniciusknob.wordpress.com/2010/09/04/ciclo-de-vida-do-software-2/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 13:35:58 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Contribuição]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=61</guid>
		<description><![CDATA[O ciclo de vida de software consiste em um cronograma lógico e aplicável a todo software existente, com menor ou maior tempo, e sua função é afirmar fases que o software passa desde seu nascimento até sua inevitável morte. O ciclo auxilia na definição dos objetivos, no fluxo de trabalho e organização do projeto como [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=61&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://cyberdiet.terra.com.br/cyberdiet/imagens/interacao/original/6/a-vida-e-o-resultado-de-como-voce-utiliza-seu-tempo-6-8.jpg" alt="" width="560" height="374" /></p>
<p>O ciclo de vida de software consiste em um cronograma lógico e aplicável a todo software existente, com menor ou maior tempo, e sua função é afirmar fases que o software passa desde seu nascimento até sua inevitável morte. O ciclo auxilia na definição dos objetivos, no fluxo de trabalho e organização do projeto como um todo. Não existe ainda uma padronização quanto à descrição exata das fases, porém duas coisas são certas: um software terá bugs e um dia terá seu fim, não há como fugir disso.</p>
<p>Pode-se usar como modelo para o ciclo de vida do software um onde temos fases bem definidas e que não fogem da idéia de concepção e morte, mas existem outros, o que realmente deve se levar em conta é a equipe envolvida, o conhecimento existente, tempo disponível (prazo), como o cliente é e como quer e o valor disponível para investimento. Tudo isso impacta na escolha do modelo de ciclo de vida.</p>
<p>Todo software inicia-se com uma definição que consiste em recolher meios para solucionar um problema existente, de forma ágil, autônoma e computacional. O que deve ser destacado aqui é que por mais bem feito que seja essa solução, alguém um dia vai olhar para isso e fazer melhor, mas enfim, tem-se a definição como o inicio para toda a dor de cabeça.</p>
<p>A definição vai deixar claro para todas as partes o que será feito, como será feito e o que será preciso ter para que seja feito. É a fase dos primeiros documentos para “gestação” que está por vir, ou seja, toda cerimônia de preparação e carinho na criação do filho imaculado chamado software. A única diferença com a vida real é que aqui você escolhe o sexo do filho, se bem que os avanços da ciência já permitem manipular embriões, enfim, é você que decide como ele será, e como um bom pai, você precisa carregar esse filho depois.</p>
<p>Terminada a escolha da mãe e as características do filho é hora de “transar”, tem-se aí o inicio do orgasmo, da tensão, do stress, da vontade, do objetivo e todo o resto que envolve a produção e desenvolvimento do software. Lembrando que se você não definiu bem a mamãe e não deu muita bola pra detalhes psicológicos ou mesmo físicos do seu filho, prepare-se, por enquanto são só rosas, mas o inferno virá.</p>
<p>Toda documentação será fundamental para que haja um meio de guiar a você mesmo, ou sua equipe, dependendo da complexidade da ferramenta futura influenciará totalmente no tamanho da documentação e também nos esforços em manter o máximo possível de padrões e abstrações, aquela coisa toda de qualidade e reuso tem sim muita importância, e isso reflete não só agora, mas como já foi dito, no começo são rosas, mas o inferno virá.</p>
<p>No caminho das índias temos agora que implementar e utilizar a padronização, codificar e testar, validar o que já foi feito, prototipar, visitar o cliente, voltar ao trabalho, consultar a bola de cristal de vez em quando e visualizar o futuro baseando-se no passado. É essa a hora de por tudo em pratica, “mãos à obra”, “let’s go!”. Não serão exatos nove meses para gestação, mas prazos devem ser criados e seguidos, e em pouco tempo, você verá seu filho correndo feliz, caindo, levantando, e todo aquele loop infinito de choradeira e amparo.</p>
<p>Um belo dia você acorda e percebe que seu filho cresceu e precisa levá-lo para a escola, especializá-lo em algo, torná-lo melhor, transformá-lo em algo maduro e consciente. Pois é, o software vai passar por manutenções e periódicas melhorias no código para buscar o melhor desempenho e qualidade. Parabéns! Você está no ciclo de vida do software e agora tem que conseguir ultrapassar a desgraça dos infinitos bugs e gerar novas versões, eis a evolução.</p>
<p>Um bom projeto de desenvolvimento não deve resultar em muitos bugs, mas sempre haverá. O software é feito por humanos e humanos erram, então temer o inevitável é ridículo, tem-se sim que enfrentar, está no sangue, ou melhor, no ciclo. A manutenção permitirá ao software aquele alongamento de vida útil citado anteriormente, trazendo um tempo maior de durabilidade no mercado. Com o tempo, não há mais muito que se fazer, pois a base também evolui, ou seja, os sistemas operacionais, ou até mesmo o hardware. Novas plataformas, novas versões e novos projetos. Recomeça a vida, vamos ao loop!</p>
<p>O ciclo de vida de software é isso. Um ciclo como nós temos em nossa vida, um ciclo que permite a evolução e a herança. Herdar o conhecimento do anterior é ter maior confiança para novos projetos, é saber o que fazer quando tudo parar, ou mesmo, saber onde atacar antes mesmo que tudo pare. O ciclo permite não só a evolução, assim como na realidade, ele também classifica e somente os mais fortes permanecem.<strong></strong></p>
<p>Com a crescente adoção de software pelos variados produtos no mercado, a comunidade envolvida no processo de desenvolvimento vem criando normas e padrões para projetos envolvendo o ciclo de vida. A Norma ISO/IEC 12207 é umas dessas normas e define uma forma estruturada de construir software, visando à semelhança com outras engenharias em assuntos específicos como desenvolvimento e manutenção. São 3 classes, 17 processos, 74 atividades e 224 tarefas vistas como recomendações ou requisitos para um bom ciclo de vida.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=61&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2010/09/04/ciclo-de-vida-do-software-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>

		<media:content url="http://cyberdiet.terra.com.br/cyberdiet/imagens/interacao/original/6/a-vida-e-o-resultado-de-como-voce-utiliza-seu-tempo-6-8.jpg" medium="image" />
	</item>
		<item>
		<title>Eclipse + EPIC = IDE Perl</title>
		<link>http://viniciusknob.wordpress.com/2010/08/28/eclipse-epic-ide-perl/</link>
		<comments>http://viniciusknob.wordpress.com/2010/08/28/eclipse-epic-ide-perl/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 17:35:45 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Contribuição]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=65</guid>
		<description><![CDATA[Bom, senti vontade de contribuir então, pois quando fui tentar encontrar uma IDE para Perl, e demorei pra perceber que existe, foi um tanto duvidoso o que instalar e o que usar, enfim, resolvi optar por Eclipse + EPIC, apesar da gama de tutoriais prontos para ambientes UNIX eu estou em um ambiente WIN32 e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=65&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bom, senti vontade de contribuir então, pois quando fui tentar encontrar uma <strong><em>IDE para Perl</em></strong>, e demorei pra perceber que existe, foi um tanto duvidoso o que instalar e o que usar, enfim, resolvi optar por <strong><em>Eclipse + EPIC</em></strong>, apesar da gama de tutoriais prontos para ambientes UNIX eu estou em um ambiente WIN32 e a coisa muda um pouco. Então eu vou listar alguns links úteis para quem estiver procurando pelo mesmo que eu estive:</p>
<p><strong>Um vídeo de como instalar tudo e configurar:</strong></p>
<span style="text-align:center; display: block;"><a href="http://viniciusknob.wordpress.com/2010/08/28/eclipse-epic-ide-perl/"><img src="http://img.youtube.com/vi/i-8yDh5dIA0/2.jpg" alt="" /></a></span>
<p><strong>Links:</strong></p>
<ul>
<li><a href="http://www.epic-ide.org/">Epic-ide.org</a></li>
<li><a href="http://www.ibm.com/developerworks/br/library/os-perlecl/index.html">Construir Aplicativos Perl com o Eclipse</a></li>
</ul>
<p>Usei isso ai da net e já deu pra aprender como usar e iniciar, o resto é seguir o modelo &#8220;mecherico&#8221; que se aprende!! Valeu!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=65&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2010/08/28/eclipse-epic-ide-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>
	</item>
		<item>
		<title>Ola Mundo! em Perl via .bat</title>
		<link>http://viniciusknob.wordpress.com/2010/08/13/ola-mundo-em-perl-via-bat/</link>
		<comments>http://viniciusknob.wordpress.com/2010/08/13/ola-mundo-em-perl-via-bat/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 17:19:17 +0000</pubDate>
		<dc:creator>viniciusknob</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://viniciusknob.wordpress.com/?p=5</guid>
		<description><![CDATA[Iniciando em Perl com programa Ola Mundo! via arquivo em lote (.bat)<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=5&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Iniciando meus estudos em Perl. Ai vai uma aplicação inicial: Hello World!</p>
<p>Atento para o detalhe que estou usando um Win32 e o programa tradutor open source é o Strawberry Perl. Esse tradutor é simples de instalar, segue a idéia de next&gt;next&gt;next e fim. Basta procurar na web que logo se acha para baixar.</p>
<blockquote><p><strong># Primeiro programa em Perl</strong></p>
<p><strong>print &#8220;Ola Mundo!&#8221;</strong></p></blockquote>
<p>Até onde eu pude ler a respeito, as ultimas versões de Perl aceitam o comando &#8220;say&#8221; no lugar de &#8220;print&#8221;, mas por acaso não anotei o endereço do site, assim que encontrar escreverei a respeito!</p>
<p>Para executar o programa Ola Mundo! deve-se acessar o &#8220;cmd&#8221; (Iniciar, Executar, digite &#8220;cmd&#8221;). Na tela de prompt digite:</p>
<blockquote><p><strong>perl [endereço do arquivo]</strong></p></blockquote>
<p>no meu caso, eu utilizei a própria pasta que o interpretador criou no C:\ e criei uma pasta nova chamada &#8220;arquivos&#8221;. Então, ficaria assim:</p>
<blockquote><p><strong>perl C:\Perl\arquivos\OlaMundo.pl</strong></p></blockquote>
<p>A extensão &#8220;pl&#8221; se refere a arquivos perl. Usei o próprio bloco de notas e salvei como &#8220;OlaMundo.pl&#8221;.</p>
<p>Como ir toda vez no cmd me deixou meio ansioso, fiz então um arquivo em lote .bat para executar os testes. Ficou assim:</p>
<blockquote><p><strong>1. @echo off<br />
2. ECHO.<br />
3. ECHO EXECUTANDO: OlaMundo<br />
4. ECHO ====================<br />
5. ECHO.<br />
6. perl OlaMundo.pl<br />
7. pause</strong></p></blockquote>
<p>Esse arquivo .bat eu coloquei dentro da pasta &#8220;arquivos&#8221; e toda vez que quero testar, apenas altero as linhas 3 e 6 que se referem ao nome do arquivo sendo chamado pelo interpretador perl. Na linha 3 é apenas um comentário para identificação, pode ser ignorado, mas a linha 6 é o que executa o arquivo .pl. Eu chamo isso de automatização, mesmo sendo que mexer no cmd de uma certa emoção, prefiro ainda ser rápido. Esse arquivo poderia ser escrito apenas assim:</p>
<blockquote><p><strong>perl OlaMundo.pl<br />
pause</strong></p></blockquote>
<p>O comando &#8220;pause&#8221; é um comando do prompt, não tem nada a ver com perl, mas trava a janela do cmd para visualização, se não for usado, tudo que você verá vai ser uma &#8220;piscada&#8221; de janela. Não se esqueça de salvar esse arquivos como &#8220;.bat&#8221;. O meu eu salvei como &#8220;teste.bat&#8221;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/viniciusknob.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/viniciusknob.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/viniciusknob.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/viniciusknob.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/viniciusknob.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/viniciusknob.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/viniciusknob.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/viniciusknob.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/viniciusknob.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/viniciusknob.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/viniciusknob.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/viniciusknob.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/viniciusknob.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/viniciusknob.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=viniciusknob.wordpress.com&amp;blog=15187877&amp;post=5&amp;subd=viniciusknob&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://viniciusknob.wordpress.com/2010/08/13/ola-mundo-em-perl-via-bat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/196d644daeaf8e43e71fdfdfd5e2e6bd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">viniciusknob</media:title>
		</media:content>
	</item>
	</channel>
</rss>
