<?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/"
	>

<channel>
	<title>RedRails &#187; Projetos</title>
	<atom:link href="http://www.redrails.com.br/topicos/projetos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.redrails.com.br</link>
	<description></description>
	<lastBuildDate>Fri, 03 Feb 2012 22:46:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image>
<link>http://www.redrails.com.br</link>
<url>http://www.redrails.com.br/wp-content/mbp-favicon/favicon.ico</url>
<title>RedRails</title>
</image>
		<item>
		<title>Piadas Curtas e Engraçadas para SMS &#8211; Droido: Piadas Para Android</title>
		<link>http://www.redrails.com.br/2011/11/piadas-curtas-e-engracadas-para-sms-droido-piadas-para-android/</link>
		<comments>http://www.redrails.com.br/2011/11/piadas-curtas-e-engracadas-para-sms-droido-piadas-para-android/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 20:12:29 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Piadas]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[Aplicativo]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=1309</guid>
		<description><![CDATA[Uma coleção de piadas selecionadas para sorrir e para fazer seus amigos sorrirem junto. Faça um amigo rir e será lembrado sempre. Sabe aquele amigo de faculdade, aquele amigo da escola ou aquela turma que você se divertia muito? a quanto tempo você não se comunica com eles? Hora de dar uma aparecida em? que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://market.android.com/details?id=br.com.redrails.piadas"><img class="aligncenter size-full wp-image-1311" title="market_banner_half" src="http://www.redrails.com.br/wp-content/uploads/2011/11/market_banner_half.png" alt="" width="500" height="244" /></a></p>
<p><iframe src="http://www.youtube.com/embed/KC2dqrtrWic" frameborder="0" width="420" height="315"></iframe></p>
<p>Uma coleção de piadas selecionadas para sorrir e para fazer seus amigos sorrirem junto. Faça um amigo rir e será lembrado sempre.</p>
<p>Sabe aquele amigo de faculdade, aquele amigo da escola ou aquela turma que você se divertia muito? a quanto tempo você não se comunica com eles? Hora de dar uma aparecida em? que tal mandar aquela mensagem engraçada para puxar um assunto&#8230; a não sabe nenhuma ou tem maior preguiça de escrever usando seu aparelho?<br />
Seus problemas acabaram, construímos esse programinha para você. Basta escolher a piada clicar e pronto pode manda-la para quem quiser. Fácil não?<br />
Então não perca tempo baixe agora!<br />
<a href="https://market.android.com/details?id=br.com.redrails.piadas"><img class="alignright size-full wp-image-1310" title="hires_half" src="http://www.redrails.com.br/wp-content/uploads/2011/11/hires_half.png" alt="" width="250" height="250" /></a><br />
<a href="http://www.redrails.com.br/wp-content/uploads/2011/11/img.png"><img class="alignleft size-full wp-image-1319" title="img" src="http://www.redrails.com.br/wp-content/uploads/2011/11/img.png" alt="" width="195" height="195" /></a></p>
<p>Link para download:<a href=" https://market.android.com/details?id=br.com.redrails.piadas" target="_blank"> https://market.android.com/details?id=br.com.redrails.piadas</a></p>
<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "Aplicativo";
            bb_bid  = "1611534";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "7";bb_format = "bbc";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2011/11/piadas-curtas-e-engracadas-para-sms-droido-piadas-para-android/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2011/11/piadas-curtas-e-engracadas-para-sms-droido-piadas-para-android/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Android Icon Maker</title>
		<link>http://www.redrails.com.br/2011/09/android-icon-maker/</link>
		<comments>http://www.redrails.com.br/2011/09/android-icon-maker/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 15:31:46 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Projetos]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=1135</guid>
		<description><![CDATA[Create Android Icons in All Basic Resolutions With this program is possible generate and resize icons in 8 different resolutions with one click. Table 1. Summary of finished icon dimensions for each of the three generalized screen densities, by icon type. Icon Type Standard Asset Sizes (in Pixels), for Generalized Screen Densities Low density screen [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.redrails.com.br/wp-content/uploads/2011/09/Android_icon_maker.jpg"><img class="aligncenter size-full wp-image-1141" title="Android_icon_maker" src="http://www.redrails.com.br/wp-content/uploads/2011/09/Android_icon_maker.jpg" alt="" width="450" height="338" /></a></p>
<p>Create <a class="bbli" href="http://sledge.boo-box.com/list/page/QW5kcm9pZF8jI19fIyNfdGFnZ2luZy10b29sLXdwXyMjXzE2MTE1MzQ=-56">Android<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> Icons in All Basic Resolutions</p>
<p>With this program is possible generate and resize icons in 8 different resolutions with one click.</p>
<p><script type="text/javascript">// <![CDATA[
 	bb_bid = "1611534"; 	bb_lang = "pt-BR"; 	bb_keywords = ""; 	bb_name = "custom"; 	bb_limit = "9"; 	bb_format = "bbo";
// ]]&gt;</script><br />
<script type="text/javascript" src="http://static.boo-box.com/javascripts/embed.js"></script></p>
<p><span id="more-1135"></span></p>
<p id="screens-table"><strong>Table 1.</strong> Summary of finished icon dimensions for each of the three generalized screen densities, by icon type.</p>
<table border="1">
<tbody>
<tr>
<th><span style="color: #008000;">Icon Type</span></th>
<th colspan="3"><span style="color: #008000;">Standard Asset Sizes (in Pixels), for Generalized Screen Densities</span></th>
</tr>
<tr>
<td></td>
<th><span style="color: #008000;">Low density screen <em>(ldpi)</em></span></th>
<th><span style="color: #008000;">Medium density screen <em>(mdpi)</em></span></th>
<th><span style="color: #008000;">High density screen <em>(hdpi)</em></span></th>
</tr>
<tr>
<th><span style="color: #008000;">Launcher</span></th>
<td><span style="color: #008000;">36 x 36 px</span></td>
<td><span style="color: #008000;">48 x 48 px</span></td>
<td><span style="color: #008000;">72 x 72 px</span></td>
</tr>
<tr>
<th><span style="color: #008000;">Menu</span></th>
<td><span style="color: #008000;">36 x 36 px</span></td>
<td><span style="color: #008000;">48 x 48 px</span></td>
<td><span style="color: #008000;">72 x 72 px</span></td>
</tr>
<tr>
<th><span style="color: #008000;">Status Bar</span></th>
<td><span style="color: #008000;">19 x 19 px</span></td>
<td><span style="color: #008000;">25 x 25 px</span></td>
<td><span style="color: #008000;">38 x 38 px</span></td>
</tr>
<tr>
<th><span style="color: #008000;">Tab</span></th>
<td><span style="color: #008000;">24 x 24 px</span></td>
<td><span style="color: #008000;">32 x 32 px</span></td>
<td><span style="color: #008000;">48 x 48 px</span></td>
</tr>
<tr>
<th><span style="color: #008000;">Dialog</span></th>
<td><span style="color: #008000;">24 x 24 px</span></td>
<td><span style="color: #008000;">32 x 32 px</span></td>
<td><span style="color: #008000;">48 x 48 px</span></td>
</tr>
<tr>
<th><span style="color: #008000;">List View</span></th>
<td><span style="color: #008000;">24 x 24 px</span></td>
<td><span style="color: #008000;">32 x 32 px</span></td>
<td><span style="color: #008000;">48 x 48 px</span></td>
</tr>
</tbody>
</table>
<p>Font: <a title="Android Guide Lines" href="http://developer.android.com/guide/practices/ui_guidelines/icon_design.html" target="_blank">Android Icon Design Guidelines</a><br />
<a title="Download Android Icon Maker" href="http://www.redrails.com.br/wp-content/plugins/download-monitor/download.php?id=10" target="_blank"><img class="aligncenter" title="DowloadBt" src="http://www.redrails.com.br/wp-content/uploads/2011/09/DowloadBt.png" alt="Android Icon Maker" width="200" height="150" /></a></p>
<h1><span style="color: #0000ff;text-align: center;"><strong><a class="downloadlink" href="http://www.redrails.com.br/wp-content/plugins/download-monitor/download.php?id=10" title="Versão0.9.8.1 download feito 2459  vezes" >Download Android Icon Maker (2459)</a></strong></span></h1>
<p><br/><br />
<br/><br />
<br/></p>
<div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2011/09/android-icon-maker/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2011/09/android-icon-maker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como colocar icone em um Window/Frame com Java (Método Simples)</title>
		<link>http://www.redrails.com.br/2011/09/como-colocar-icone-em-um-windowframe-com-java-metodo-simples/</link>
		<comments>http://www.redrails.com.br/2011/09/como-colocar-icone-em-um-windowframe-com-java-metodo-simples/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 15:00:59 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Projetos]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=1127</guid>
		<description><![CDATA[Olá amigos, Desenvolvendo um pequeno aplicativo aqui que logo mais posto no blog me deparei com um problema que acabou de dando um pouco de dor de cabeça. Para livra-los desse incômodo trago aqui uma solução bem simples. No Netbeans quando cria-se uma Aplicação Desktop existe no projeto um esquema bem legal de resources, vou-lhes [...]]]></description>
			<content:encoded><![CDATA[<p>Olá amigos,</p>
<p>Desenvolvendo um pequeno aplicativo aqui que logo mais posto no blog me deparei com um problema que acabou de dando um pouco de dor de cabeça. Para livra-los desse incômodo trago aqui uma solução bem simples.</p>
<p>No Netbeans quando cria-se uma Aplicação Desktop existe no projeto um esquema bem legal de resources, vou-lhes mostrar como utiliza-lo.<br />
<script type="text/javascript">
	bb_bid = "1611534";
	bb_lang = "pt-BR";
	bb_keywords = "";
	bb_name = "custom";
	bb_limit = "9";
	bb_format = "bbo";
</script><br />
<script type="text/javascript" src="http://static.boo-box.com/javascripts/embed.js"></script><br />
Bom meu problema é simples queria coloca um ícone na janela da aplicação e que por consequência fica também na barra de tarefas, assim: </p>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2011/09/Java_Icon.png"><img src="http://www.redrails.com.br/wp-content/uploads/2011/09/Java_Icon.png" alt="" title="Java_Icon" width="417" height="316" class="aligncenter size-full wp-image-1130" /></a><br />
<span id="more-1127"></span><br />
Ok conseguia coloca o ícone utilizando várias técnicas achadas por ai, mas um problema surgia ao tentar distribuir (dist) o jar. A solução já estava ali só era necessário utiliza-la. Vamos lá:<br />
Primeiro coloque seu ícone (em nosso ex icon.png )na pasta resources (PROJETO/src/PACOTE/resources)<br />
<a href="http://www.redrails.com.br/wp-content/uploads/2011/09/resource_folder.png"><img src="http://www.redrails.com.br/wp-content/uploads/2011/09/resource_folder.png" alt="" title="resource_folder" width="509" height="369" class="aligncenter size-full wp-image-1132" /></a></p>
<p>Feito isso encontre o arquivo de propriedades seu JFrame principal (no meu caso AndroidIconMakerView.properties)</p>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2011/09/prop.png"><img src="http://www.redrails.com.br/wp-content/uploads/2011/09/prop.png" alt="" title="prop" width="350" height="300" class="aligncenter size-full wp-image-1131" /></a></p>
<p>Adicione a linha de propriedades</p>
<pre class="brush: bash; title: ; notranslate">
windowIcon.icon=icon.png
</pre>
<p>Feito isso sobra a &#8220;difícil&#8221; parte da codificação, assim:</p>
<pre class="brush: java; title: ; notranslate">
        getFrame().setIconImage(resourceMap.getImageIcon(&quot;windowIcon.icon&quot;).getImage());
</pre>
<p>Gostaram?</p>
<div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2011/09/como-colocar-icone-em-um-windowframe-com-java-metodo-simples/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2011/09/como-colocar-icone-em-um-windowframe-com-java-metodo-simples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SuDroid: Executando comando como super usuário (root) no Android</title>
		<link>http://www.redrails.com.br/2011/07/executando-comando-como-super-usuario-root-no-android/</link>
		<comments>http://www.redrails.com.br/2011/07/executando-comando-como-super-usuario-root-no-android/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 19:17:07 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[QoV]]></category>
		<category><![CDATA[SuDroid]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=1105</guid>
		<description><![CDATA[Implementação do sistema de sondagem de sinal Para realizarmos um ping no Android precisamos executar chamadas em recursos do sistema através de métodos presentes no Java, já que esse recurso não está presente na API do sistema da Google. Um problema na realização dessa técnica para executar o PING é que ela necessita de permissões [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.redrails.com.br/wp-content/uploads/2011/07/android2.jpg" alt="Android Hacker Super User RedRails" /></p>
<p>Implementação do sistema de sondagem de sinal</p>
<p>Para realizarmos um ping no Android precisamos executar chamadas em recursos do sistema através de métodos presentes no Java, já que esse recurso não está presente na API do sistema da Google. Um problema na realização dessa técnica para executar o PING é que ela necessita de permissões de super usuário para ser realizada em um</p>
<p>Para realizar um ping no java, podemos utilizar o método Runtime.getRuntime().exec(); que realiza uma chamada no sistema, permitindo executar comandos como se estivessemos no console do sistema operacional. O problema desse procedimento é que o executável ping (/system/bin/ping) está limitado para usuários normais (figura 1), essa limitação permite que o ping serja feito apenas em endereço local (figura 2). Dessa maneira necessitamos de acesso de super usuário para que possamos realizar o ping sem tal empecilho.</p>
<p>O processo de conceder acesso de super usuário (root) para um dispositivo é conhecido como rootear. um dispositivo rooteado (rooted) permite que usuários comuns executem ações de super usuário no dispositivo. Podemos rootear um dispositivo através de modificações no SO obtidas com por exemplos outros aplicativos que realizam esse processo.</p>
<p>Em nosso exemplo utilizaremos um aplicativo chamado Superuser (https://market.android.com/details?id=com.noshufou.android.su)  para auxilio no gerenciamento de permissões do Android </p>
<p>Abaixo a descrição da classe necessária para execução como super usuário.</p>
<p><span id="more-1105"></span></p>
<pre class="brush: java; title: ; notranslate">

package br.com.redrails;
/*
 * Luiz Carvalho
 * @LuizCarvalho
 * luizcarvalho@redrails.com.br
 * www.redrails.com.br
 * http://br.linkedin.com/in/luizkarvalho (recommend me)
 * more in http://www.redrails.com.br/tags/QoV/
 * */

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

public class SuDroid {
	// private static final String TAG = &quot;sudroid&quot;;

	public String success_msg = null;
	public String error_msg = null;
	public Boolean success = false;

	public SuDroid(String command) {
		Process proc = run(command);

		try {

			if (proc.waitFor() == 0)
				success = true;

			success_msg = getResult(proc.getInputStream());
			error_msg = getResult(proc.getErrorStream());

		} catch (InterruptedException ex) {
			success = false;
			print(&quot;Error in execute command: &quot; + ex.toString());
		} catch (NullPointerException ex) {
			success = false;
			print(&quot;Error in execute command:  &quot; + ex.toString());
		}

	}

	public String result() {
		return &quot;&quot;;
	}

	public Process run(String command) {
		Process proc = null;
		try {
			proc = Runtime.getRuntime().exec(&quot;sudo&quot;);
			DataOutputStream dataProc = new DataOutputStream(proc.getOutputStream());
			dataProc.writeBytes(&quot;exec &quot; + command + &quot;\n&quot;);
			dataProc.flush();
		} catch (Exception ex) {
			print(ex.getMessage());
			success = false;
			proc = null;
		}
		return proc;
	}

	private String getResult(InputStream istream) {
		String line = null;
		StringBuffer result = new StringBuffer();
		BufferedReader dataIstream = new BufferedReader(new InputStreamReader(
				istream));

		try {
			while ((line = dataIstream.readLine()) != null) {
				result.append(line + &quot;\n&quot;);
			}
			dataIstream.close();
		} catch (Exception ex) {
			success = false;
			print(ex.getMessage());
		}

		if (result != null) {
			return result.toString();
		} else
			return null;

	}

	public void print(String msg) {
		System.out.println(msg);
		// Log.e(TAG, &quot;A Error Occurred: &quot; + e.toString());
	}

}
</pre>
<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "SuDroid";
            bb_bid  = "1611534";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "7";bb_format = "bbc";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2011/07/executando-comando-como-super-usuario-root-no-android/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2011/07/executando-comando-como-super-usuario-root-no-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenho de Poligonos no Google Earth usando Ruby</title>
		<link>http://www.redrails.com.br/2010/11/desenho-de-poligonos-no-google-earth-usando-ruby/</link>
		<comments>http://www.redrails.com.br/2010/11/desenho-de-poligonos-no-google-earth-usando-ruby/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 20:39:07 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Projetos]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=887</guid>
		<description><![CDATA[Considerando nosso último post, conseguimos definir os pontos de intersecções entre as linhas que compõem o contorno, mas e agora de posse dessas informações como vamos desenhar isso no mapa? Essa técnica pode ser usada para desenhar em qualquer* linguagem ou componente do Google Earth, mas para melhor entendimento vamos pegar o desenho de polígonos [...]]]></description>
			<content:encoded><![CDATA[<p>Considerando nosso<a href="http://www.redrails.com.br/2010/11/parte-1-calculando-coordenadas-finais-possuindo-um-ponto-inicial-a-distancia-e-o-azimute-angulo/" target="_blank"> último post</a>, conseguimos definir os pontos de intersecções entre as linhas que compõem o contorno, mas e agora de posse dessas informações como vamos desenhar isso no mapa?</p>
<p>Essa técnica pode ser usada para desenhar em qualquer* linguagem ou componente do Google Earth, mas para melhor entendimento vamos pegar o desenho de polígonos utilizando Ruby.</p>
<p>Primeiro vamos entender sobre os arquivos de entrada e saída:</p>
<p>KML Estrutura XML composta pelas descrições de cada componente. <a href="http://code.google.com/apis/kml/documentation/">Saiba mais (documentação)</a>.</p>
<p>KMZ é um arquivo comprimido (ZIP) contendo seu KML e possíveis imagens utilizadas. <a href="http://code.google.com/apis/kml/documentation/kmzarchives.html">Saiba mais (documentação)</a>.</p>
<p>É extremamente recomendável que você leia a documentação sobre os dois arquivos.</p>
<p>Sabendo esse mínimo sobre os dois arquivos, vamos escolher o KML por ser mais simples de manipular e de demonstrar o funcionamento.</p>
<p>Não vamos explicar aqui todas as tags do KML para isso consulte a <a href="http://code.google.com/apis/kml/documentation/kmlreference.html">documentação</a>, citaremos apenas as principais tags que compõe nosso exemplo.</p>
<p>Para melhor visualização nosso KML já foi dividido em métodos:</p>
<p>O método abaixo define o cabeçalho de nosso KML (XML) e dá inicio ao documento com a tag &lt;Document&gt; [Atenção o KML é case-sensitive]</p>
<p>Name: especifica o nome do grupo de componentes que vai ser criados para esse documento.<br />
<span id="more-887"></span></p>
<pre class="brush: ruby; title: ; notranslate">

def kml_inicio

    &quot;&lt;?xml version='1.0' encoding='UTF-8'?&gt;
        &lt;kml xmlns='http://www.opengis.net/kml/2.2'
             xmlns:gx='http://www.google.com/kml/ext/2.2'
             xmlns:kml='http://www.opengis.net/kml/2.2'
             xmlns:atom='http://www.w3.org/2005/Atom'&gt;
        &lt;Document&gt;
          &lt;name&gt;Contornos de Propagação para Radiodifusão&lt;/name&gt;
          &lt;open&gt;1&lt;/open&gt;&quot;

end
</pre>
<p>Esse segundo segmento é responsável pela definição de cores e largura dos contornos, foram definidas 4 cores para as quatro coordenadas que serão desenhadas. Sendo composta por 6 digitos hexadecimais, observem que ao ser inserida no KML elas recebem 2 outros caracteres, (00 e FF) que são responsáveis pelas definições de opacidade. O 00 garante que o preenchimento não vai ser visível enquanto a linha sim, tanto para modo normal, quando para o modo highlight ( mouse over ), Width é responsável pela largura do contorno.</p>
<p>Após a definição dos 8 estilos (Style&gt;LineStyle)  ( 4 normais e 4 highlight) é criado mais 4 tags responsáveis (StyleMap) que agrupam os outros 8 estilos em pares, definindo assim os 2 estados para cada contorno.</p>
<pre class="brush: ruby; title: ; notranslate">

def kml_estilos

    template = &quot;&quot;
    cor={1=&gt;&quot;00ffff&quot;,2=&gt;&quot;FF6600&quot;,3=&gt;&quot;0000ff&quot;,4=&gt;&quot;33CCFF&quot;}
    tipos = [&quot;normal&quot;,&quot;highlight&quot;]
    (1..4).each do |numero|
      tipos.each do |tipo|
        template+=&quot;&lt;Style id='contorno#{numero}_#{tipo}'&gt;
            &lt;LineStyle&gt;
              &lt;color&gt;ff#{cor[numero]}&lt;/color&gt;
              &lt;width&gt;2&lt;/width&gt;
            &lt;/LineStyle&gt;
            &lt;PolyStyle&gt;
              &lt;color&gt;00#{cor[numero]}&lt;/color&gt;
            &lt;/PolyStyle&gt;
          &lt;/Style&gt;&quot;
      end

      template+=&quot;&lt;StyleMap id='contorno#{numero}'&gt;
            &lt;Pair&gt;
              &lt;key&gt;normal&lt;/key&gt;
              &lt;styleUrl&gt;#contorno#{numero}_normal&lt;/styleUrl&gt;
            &lt;/Pair&gt;
            &lt;Pair&gt;
              &lt;key&gt;highlight&lt;/key&gt;
              &lt;styleUrl&gt;#contorno#{numero}_highlight&lt;/styleUrl&gt;
            &lt;/Pair&gt;
          &lt;/StyleMap&gt;&quot;
    end
    template

end
</pre>
<p>Após abrirmos as tags do documentos e definirmos os estilos de cores de cada contorno vamos então desenha-los. O método abaixo necessita que seja passado o numero do contorno ( ou seja vai ser chamado 4 vezes, uma para cada contorno) e as coordenadas referentes a cada um destes.</p>
<p>Tags: name: o nome do contorno que irá aparecer no google Earth agrupado pelo primeiro name que definiu o documento.</p>
<p>StyleUrl: O estilo que vai definir as propriedades do contorno.</p>
<p>Polygon&gt;Coordinates: Requer os pares de Lon,lat ( atenção, os pares são invertidos exatamente assim) separados um par de outro por espaço.</p>
<pre class="brush: ruby; title: ; notranslate">

def desenhar_poligonos(numero,coordenadas)
    &quot;	&lt;Placemark&gt;
    		&lt;name&gt;Contorno #{numero}&lt;/name&gt;
    		&lt;styleUrl&gt;#contorno#{numero}&lt;/styleUrl&gt;
    		&lt;Polygon&gt;
    			&lt;tessellate&gt;1&lt;/tessellate&gt;
    			&lt;outerBoundaryIs&gt;
    				&lt;LinearRing&gt;
    					&lt;coordinates&gt;
                  #{coordenadas}
              &lt;/coordinates&gt;
    				&lt;/LinearRing&gt;
    			&lt;/outerBoundaryIs&gt;
    		&lt;/Polygon&gt;
    	&lt;/Placemark&gt;&quot;
end
</pre>
<p>E por fim, mas não menos importante, vamos fechar nosso arquivo:</p>
<pre class="brush: ruby; title: ; notranslate">

def kml_fim

    &quot;\n  &lt;/Document&gt;\n&lt;/kml&gt;&quot;

end
</pre>
<p>E para gerar nosso arquivo completo? Muito simples agora:</p>
<pre class="brush: ruby; title: ; notranslate">

def kml_default_template(coordenadas)

default_template = kml_inicio

default_template+= kml_estilos

(1..4).each do |numero|

default_template+= desenhar_poligonos(numero, coordenadas[numero])

end

default_template+=kml_fim

end
</pre>
<p>E pronto. Save o resultado em um arquivo e nomeie como aqualquer_coisa.kml e dê dois cliques, se seu Google Earth estiver instalado normalmente você verá algo parecido com isso:</p>
<div class="wp-caption aligncenter" style="width: 663px"><img title="Polígono desenhado no google Earth via Código" src="http://www.redrails.com.br/wp-content/uploads/2010/11/gerador_de_poligonos_2.jpeg" alt="Polígono desenhado no google Earth via Código" width="653" height="534" /><p class="wp-caption-text">Polígono desenhado no google Earth via Código</p></div>
<div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2010/11/desenho-de-poligonos-no-google-earth-usando-ruby/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2010/11/desenho-de-poligonos-no-google-earth-usando-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Parte 1: Calculando coordenadas finais possuindo um ponto inicial, a distância e o Azimute ( ângulo)</title>
		<link>http://www.redrails.com.br/2010/11/parte-1-calculando-coordenadas-finais-possuindo-um-ponto-inicial-a-distancia-e-o-azimute-angulo/</link>
		<comments>http://www.redrails.com.br/2010/11/parte-1-calculando-coordenadas-finais-possuindo-um-ponto-inicial-a-distancia-e-o-azimute-angulo/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 14:05:14 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Projetos]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=872</guid>
		<description><![CDATA[Contornos de Propagação para Radiodifusão plotados no Google Earth parte 1 . Parte 1: Calculando coordenadas finais possuindo um ponto inicial, a distância e o Azimute ( ângulo) Olá esporádicos leitores do RedRails, hoje vamos começar uma serie sobre cálculos de coordenadas, Google Earth e Ruby. Me foi proposto um problema, um engenheiro de telecomunicações [...]]]></description>
			<content:encoded><![CDATA[<h2>Contornos de Propagação para Radiodifusão plotados no Google Earth parte 1</h2>
<p>.</p>
<h3>Parte 1: Calculando coordenadas finais possuindo um ponto inicial, a distância e o Azimute ( ângulo)</h3>
<p>Olá esporádicos leitores do RedRails, hoje vamos começar uma serie sobre cálculos de coordenadas, Google Earth e Ruby. Me foi proposto um problema, um engenheiro de telecomunicações tem um grande trabalho na hora de desenvolver seus projetos quanto ao desenho do alcance de uma antena de radiodifusão, pois deve traçar o raio de alcance dessa antena em todas as direções, ou seja, se ele for considerar os 360 graus do circulo e sendo que deve desenhar quatro contornos de alcance teríamos 1440 pontos, isso dá um trabalho considerável.</p>
<p>Logo abaixo temos uma amostra do resultado a ser atingido. Temos 3 traçados visíveis, pois o contorno 2 e o contorno protegido são equivalentes. A antena é simbolizada pelo triângulo no centro dos contornos, observem a irregularidade apresentada no lado direito da imagem. É exatamente esse o intuído dessa plotagem demonstrar visualmente o alcance e as possíveis adversidades que seu sinal pode encontrar em nosso exemplo uma cadeia de montanhas está obstruindo o sinal.</p>
<p><a href="../wp-content/uploads/2010/11/gerador_de_poligonos_2.jpeg"></a><a href="http://www.redrails.com.br/wp-content/uploads/2010/11/gerador_de_poligonos_2.jpg"></a><a href="http://www.redrails.com.br/wp-content/uploads/2010/11/gerador_de_poligonos_2.jpeg"><img class="aligncenter size-full wp-image-873" title="gerador_de_poligonos_2" src="http://www.redrails.com.br/wp-content/uploads/2010/11/gerador_de_poligonos_2.jpeg" alt="" width="653" height="534" /></a><span id="more-872"></span></p>
<p>Como podemos solucionar esse tipo de problema? Primeiro analisaremos nossas variáveis, conhecemos uma coordenada inicial (onde a torre se encontra, ou um provável local para sua implantação): lat1, lon1. A ANATEL disponibiliza para esse tipo de trabalho as distâncias para até os contornos para cada azimute (grau de inclinação da reta em relação ao norte verdadeiro) que em nosso caso vai ser uma sequencia definida da criação do contorno.</p>
<p>Agora para calcular a coordenada referente a cada dado disponibilizado foi a parte mais trabalhosa, depois de algum tempo de pesquisa conseguimos encontrar uma função matemática que resolveu nosso problema.</p>
<h2>A Fórmula Direta de Vincenty (Vincenty ‘Direct’ formula)</h2>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2010/11/vinc_d.jpg"><img class="aligncenter size-full wp-image-874" title="vinc_d" src="http://www.redrails.com.br/wp-content/uploads/2010/11/vinc_d.jpg" alt="" width="750" height="429" /></a> <a href="http://www.redrails.com.br/wp-content/uploads/2010/11/gerador_de_poligonos_2.jpeg"></a></p>
<p>Para facilitar o entendimento nosso amigo <a href="http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html">Chris Veness</a> a converteu em algoritmo:</p>
<blockquote><p><em>a</em>, <em>b</em> = major &amp; minor semiaxes of the ellipsoid<br />
<em>f</em> = flattening (<em>a</em>−<em>b</em>)/<em>a</em><br />
φ<sub>1</sub>, φ<sub>2</sub> = geodetic latitude<br />
<em>s</em> = length of the geodesic<br />
α<sub>1</sub>, α<sub>2</sub> = azimuths of the geodesic <em>(initial/final bearing)</em></p>
<p>tan<em>U</em><sub>1</sub> = (1−<em>f</em>).tanφ<sub>1</sub> <em>(U is ‘reduced latitude’)</em><br />
cos<em>U</em><sub>1</sub> = 1/√(1+tan²<em>U</em><sub>1</sub>), sin<em>U</em><sub>1</sub> = tan<em>U</em><sub>1</sub>.cos<em>U</em><sub>1</sub> <em>(trig identities; §6)</em><br />
σ<sub>1</sub> = atan2(tan<em>U</em><sub>1</sub>, cosα<sub>1</sub>) (1) sinα = cos<em>U</em><sub>1</sub>.sinα<sub>1</sub> (2) cos²α = 1 − sin²α <em>(trig identity; §6)</em><br />
<em>u</em>² = cos²α.(<em>a</em>²−<em>b</em>²)/<em>b</em>²<sub> </sub><br />
<em>A</em> = 1+<em>u</em>²/16384.{4096+<em>u</em>².[−768+<em>u</em>².(320−175.<em>u</em>²)]}<sub> </sub>(3)<br />
<em>B</em> = <em>u</em>²/1024.{256+<em>u</em>².[−128+<em>u</em>².(74−47.<em>u</em>²)]}<sub> </sub>(4)<br />
σ = <em>s</em> / <em>b.A</em> <em>(1st approximation)</em>, σ′ = 2π</p>
<p>while abs(σ−σ′) &gt; 10<sup>-12</sup> { <em>(i.e. 0.06mm)</em><br />
cos2σ<sub>m</sub> = cos(2.σ<sub>1</sub> + σ) (5)<br />
Δσ = <em>B</em>.sinσ.{cos2σ<sub>m</sub> + <em>B</em>/4.[cosσ.(−1 + 2.cos²2σ<sub>m</sub>) − <em>B</em>/6.cos2σ<sub>m</sub>.(−3 + 4.sin²σ).(−3 + 4.cos²2σ<sub>m</sub>)]} (6)   σ′ = σ     σ = <em>s</em> / <em>b.A</em> + Δσ (7)<br />
}</p>
<p>φ<sub>2</sub> = atan2(sin<em>U</em><sub>1</sub>.cosσ + cos<em>U</em><sub>1</sub>.sinσ.cosα<sub>1</sub>, (1−<em>f</em>).√[sin²α + (sin<em>U</em><sub>1</sub>.sinσ − cos<em>U</em><sub>1</sub>.cosσ.cosα<sub>1</sub>)²]) (8)<br />
λ = atan2(sinσ.sinα<sub>1</sub>, cosU<sub>1</sub>.cosσ − sin<em>U</em><sub>1</sub>.sinσ.cosα<sub>1</sub>) (9)</p>
<p><em>C</em> = <em>f</em>/16.cos²α.[4+<em>f</em>.(4−3.cos²α)] (10)<br />
<em>L</em> = λ − (1−<em>C</em>).<em>f</em>.sinα.{σ+<em>C</em>.sinσ.[cos2σ<sub>m</sub> + <em>C</em>.cosσ.(−1 + 2.cos²2σ<sub>m</sub>)]} <em>(difference in longitude)</em> (11) α<sub>2</sub> = atan2(sinα, −sin<em>U</em><sub>1</sub>.sinσ + cos<em>U</em><sub>1</sub>.cosσ.cosα<sub>1</sub>) <em>(reverse azimuth)</em> (12)<br />
p<sub>2</sub> = (φ<sub>2</sub>, λ<sub>1</sub>+L)</p></blockquote>
<h3>E finalmente nosso código em Ruby.</h3>
<pre class="brush: ruby; title: ; notranslate">
&lt;pre&gt;
&lt;div id=&quot;LC4&quot;&gt;class Vincent&lt;/div&gt;
&lt;div id=&quot;LC5&quot;&gt;  def initialize(lat1,lon1)&lt;/div&gt;
&lt;div id=&quot;LC6&quot;&gt;    #Origem e Destino&lt;/div&gt;
&lt;div id=&quot;LC7&quot;&gt;    @lat1 = lat1&lt;/div&gt;
&lt;div id=&quot;LC8&quot;&gt;    @lon1=lon1&lt;/div&gt;
&lt;div id=&quot;LC9&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;LC10&quot;&gt;    #---- Dados do Elipsóide de Revolução --------------------------------------&lt;/div&gt;
&lt;div id=&quot;LC11&quot;&gt;    #http://pt.wikipedia.org/wiki/Figura_da_Terra&lt;/div&gt;
&lt;div id=&quot;LC12&quot;&gt;    @a = 6378137 # Maior semi-eixo da Elipsóide Terrestre - WGS66 (1966)[EUA/DoD]&lt;/div&gt;
&lt;div id=&quot;LC13&quot;&gt;    @b = 6356752.3142 # Maior semi-eixo da Elipsóide Terrestre - WGS66 (1966)[EUA/DoD]&lt;/div&gt;
&lt;div id=&quot;LC14&quot;&gt;    @f = 1/298.257223563 #	Achatamento inverso - WGS66 (1966)[EUA/DoD]&lt;/div&gt;
&lt;div id=&quot;LC15&quot;&gt;  end&lt;/div&gt;
&lt;div id=&quot;LC17&quot;&gt;  #------------ ADDONS ------------------------&lt;/div&gt;
&lt;div id=&quot;LC18&quot;&gt;  def todeg(num)&lt;/div&gt;
&lt;div id=&quot;LC19&quot;&gt;    num*57.29578&lt;/div&gt;
&lt;div id=&quot;LC20&quot;&gt;  end&lt;/div&gt;
&lt;div id=&quot;LC22&quot;&gt;  def torad(angle)&lt;/div&gt;
&lt;div id=&quot;LC23&quot;&gt;    angle/57.29578&lt;/div&gt;
&lt;div id=&quot;LC24&quot;&gt;  end&lt;/div&gt;
&lt;div id=&quot;LC26&quot;&gt;  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;/div&gt;
&lt;div id=&quot;LC27&quot;&gt;  #&lt;/div&gt;
&lt;div id=&quot;LC28&quot;&gt;  #{} Calculate destination point given start point lat/long (numeric degrees),&lt;/div&gt;
&lt;div id=&quot;LC29&quot;&gt;  # bearing (numeric degrees) &amp; distance (in m).&lt;/div&gt;
&lt;div id=&quot;LC30&quot;&gt;  #&lt;/div&gt;
&lt;div id=&quot;LC31&quot;&gt;  # from: Vincenty direct formula - T Vincenty, &quot;Direct and Inverse Solutions of Geodesics on the&lt;/div&gt;
&lt;div id=&quot;LC32&quot;&gt;  #       Ellipsoid with application of nested equations&quot;, Survey Review, vol XXII no 176, 1975&lt;/div&gt;
&lt;div id=&quot;LC33&quot;&gt;  #       http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf&lt;/div&gt;
&lt;div id=&quot;LC34&quot;&gt;  #&lt;/div&gt;
&lt;div id=&quot;LC35&quot;&gt;  def calculate(az, dist)&lt;/div&gt;
&lt;div id=&quot;LC36&quot;&gt;    s = dist&lt;/div&gt;
&lt;div id=&quot;LC37&quot;&gt;    alpha1 = torad(az)&lt;/div&gt;
&lt;div id=&quot;LC38&quot;&gt;    cos_alpha1 = Math.cos(alpha1)&lt;/div&gt;
&lt;div id=&quot;LC39&quot;&gt;    sin_alpha1 = Math.sin(alpha1)&lt;/div&gt;
&lt;div id=&quot;LC41&quot;&gt;    tan_u1 = (1-@f) * Math.tan(torad(@lat1))&lt;/div&gt;
&lt;div id=&quot;LC42&quot;&gt;    cos_u1 = 1 / Math.sqrt((1 + tan_u1*tan_u1))&lt;/div&gt;
&lt;div id=&quot;LC43&quot;&gt;    sin_u1 = tan_u1*cos_u1&lt;/div&gt;
&lt;div id=&quot;LC44&quot;&gt;    sigma1 = Math.atan2(tan_u1, cos_alpha1)&lt;/div&gt;
&lt;div id=&quot;LC45&quot;&gt;    sin_alpha = cos_u1 * sin_alpha1;&lt;/div&gt;
&lt;div id=&quot;LC46&quot;&gt;    cos_sq_alpha = 1 - sin_alpha*sin_alpha;&lt;/div&gt;
&lt;div id=&quot;LC47&quot;&gt;    u_sq = cos_sq_alpha * (@a*@a - @b*@b) / (@b*@b)&lt;/div&gt;
&lt;div id=&quot;LC48&quot;&gt;    an = 1 + u_sq/16384*(4096+u_sq*(-768+u_sq*(320-175*u_sq)));&lt;/div&gt;
&lt;div id=&quot;LC49&quot;&gt;    bn = u_sq/1024 * (256+u_sq*(-128+u_sq*(74-47*u_sq)));&lt;/div&gt;
&lt;div id=&quot;LC51&quot;&gt;    sigma = (s / (@b*an))&lt;/div&gt;
&lt;div id=&quot;LC52&quot;&gt;    sigma_p = (2*Math::PI)&lt;/div&gt;
&lt;div id=&quot;LC53&quot;&gt;    while true&lt;/div&gt;
&lt;div id=&quot;LC54&quot;&gt;      cos2_sigma_m = Math.cos(2*sigma1 + sigma);&lt;/div&gt;
&lt;div id=&quot;LC55&quot;&gt;      sin_sigma = Math.sin(sigma)&lt;/div&gt;
&lt;div id=&quot;LC56&quot;&gt;      cos_sigma = Math.cos(sigma)&lt;/div&gt;
&lt;div id=&quot;LC57&quot;&gt;      delta_sigma = bn*sin_sigma*(cos2_sigma_m+bn/4*(cos_sigma*(-1+2*cos2_sigma_m*cos2_sigma_m)-&lt;/div&gt;
&lt;div id=&quot;LC58&quot;&gt;            bn/6*cos2_sigma_m*(-3+4*sin_sigma*sin_sigma)*(-3+4*cos2_sigma_m*cos2_sigma_m)));&lt;/div&gt;
&lt;div id=&quot;LC59&quot;&gt;      sigma_p = sigma;&lt;/div&gt;
&lt;div id=&quot;LC60&quot;&gt;      sigma = s / (@b*an) + delta_sigma;&lt;/div&gt;
&lt;div id=&quot;LC61&quot;&gt;      break if ((sigma.abs-sigma_p) &gt; 1.0e-012) or sigma.abs==sigma_p&lt;/div&gt;
&lt;div id=&quot;LC62&quot;&gt;    end&lt;/div&gt;
&lt;div id=&quot;LC64&quot;&gt;    tmp = sin_u1*sin_sigma - cos_u1*cos_sigma*cos_alpha1;&lt;/div&gt;
&lt;div id=&quot;LC65&quot;&gt;    lat2 = Math.atan2(sin_u1*cos_sigma + cos_u1*sin_sigma*cos_alpha1,&lt;/div&gt;
&lt;div id=&quot;LC66&quot;&gt;      (1-@f)*Math.sqrt(sin_alpha*sin_alpha + tmp*tmp));&lt;/div&gt;
&lt;div id=&quot;LC67&quot;&gt;    lambda = Math.atan2(sin_sigma*sin_alpha1, cos_u1*cos_sigma - sin_u1*sin_sigma*cos_alpha1);&lt;/div&gt;
&lt;div id=&quot;LC68&quot;&gt;    cn = @f/16*cos_sq_alpha*(4+@f*(4-3*cos_sq_alpha));&lt;/div&gt;
&lt;div id=&quot;LC69&quot;&gt;    ln = lambda - (1-cn) * @f * sin_alpha *&lt;/div&gt;
&lt;div id=&quot;LC70&quot;&gt;    (sigma + cn*sin_sigma*(cos2_sigma_m+cn*cos_sigma*(-1+2*cos2_sigma_m*cos2_sigma_m)));&lt;/div&gt;
&lt;div id=&quot;LC72&quot;&gt;    rev_az = Math.atan2(sin_alpha, -tmp);&lt;/div&gt;
&lt;div id=&quot;LC74&quot;&gt;    {:lat=&gt;todeg(lat2),:lon=&gt; @lon1+todeg(ln),:rev_az=&gt;rev_az}&lt;/div&gt;
&lt;div id=&quot;LC75&quot;&gt;#C: -9.740848496159662,-48.04187046994603&lt;/div&gt;
&lt;div id=&quot;LC77&quot;&gt;  end&lt;/div&gt;
&lt;div id=&quot;LC80&quot;&gt;end&lt;/div&gt;&lt;/pre&gt;
</pre>
<p>Logo mais teremos mais post sobre o assunto.<br />
o Projeto já implementado vocês podem conferir em meu <a title="LuizCarvalho On Github" href="https://github.com/LuizCarvalho/azimute" target="_blank">Github</a><br />
<a title="Ir para página do projeto Azimute" href="https://github.com/LuizCarvalho/azimute" target="_blank"><img src="https://github.com/images/modules/header/logov3-hover.png" alt="Ir para página do projeto Azimute" /></a></p>
<p>Agradecimentos a Eng. Antonio Ernani por toda colaboração e para geração dos poligonos vejam o próximo post (http://www.redrails.com.br/2010/11/desenho-de-poligonos-no-google-earth-usando-ruby/)</p>
<div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2010/11/parte-1-calculando-coordenadas-finais-possuindo-um-ponto-inicial-a-distancia-e-o-azimute-angulo/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2010/11/parte-1-calculando-coordenadas-finais-possuindo-um-ponto-inicial-a-distancia-e-o-azimute-angulo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>J2ME: Problemas ao Instalar Jar em Aparelhos Sony Ericsson</title>
		<link>http://www.redrails.com.br/2009/10/j2me-problemas-ao-instalar-jar-em-aparelhos-sony-ericsson/</link>
		<comments>http://www.redrails.com.br/2009/10/j2me-problemas-ao-instalar-jar-em-aparelhos-sony-ericsson/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 17:31:41 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[J2ME]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Sony]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=615</guid>
		<description><![CDATA[Estou brincando um pouco com J2ME após terminar minha aplicação, tive um bom probleminha. Meu aplicativo não instalava. Achei que o problema estaria em alguma biblioteca ou habilidades que deviam estar em conflito, Mandei hello words, Instalei o SDK da Sony Ericsson e nada. no fim das contas descobri que bastava copiar a aplicação para [...]]]></description>
			<content:encoded><![CDATA[<p>Estou brincando um pouco com J2ME após terminar minha aplicação, tive um bom probleminha. Meu aplicativo não instalava.<br />
Achei que o problema estaria em alguma biblioteca ou habilidades que  deviam estar em conflito, Mandei hello words, Instalei o SDK da Sony Ericsson e nada. no fim das contas descobri que bastava copiar a aplicação para memória interna do aparelho, e não tentar instala-lo do Memory Stick que tudo funcionaria.</p>
<p>Celular Modelo: W580i<br />
NetBeans: 6.7.1<br />
Plataforma: CLDC/MIDP<br />
Emulador: Java(TM) Plataform Micro Edition SDK 3.0<br />
Dispositivo: ClamShell CldcPhone1<br />
Configuração: CLDC-1.1<br />
Perfil do Dispositivo: MIDO-2.0<br />
Pacote: Mobile Media API 1.1</p>
<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "Mobile";
            bb_bid  = "1611534";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "7";bb_format = "bbc";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2009/10/j2me-problemas-ao-instalar-jar-em-aparelhos-sony-ericsson/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2009/10/j2me-problemas-ao-instalar-jar-em-aparelhos-sony-ericsson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monografia: GEtna  &#8211;  Gerador Ruby On Rails a Partir de banco de Dados</title>
		<link>http://www.redrails.com.br/2009/09/monografia-getna-gerador-ruby-on-rails-a-partir-de-banco-de-dados/</link>
		<comments>http://www.redrails.com.br/2009/09/monografia-getna-gerador-ruby-on-rails-a-partir-de-banco-de-dados/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 20:09:18 +0000</pubDate>
		<dc:creator>Luiz Carvalho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[Getna]]></category>
		<category><![CDATA[Monografia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.redrails.com.br/?p=580</guid>
		<description><![CDATA[Bom galera já estava em tempo de compatilhar minha monografia, de tempos em tempos a galera pedia para enviar, então nada mais justo (e fácil) que por ela aqui no blog. UNIVERSIDADE FEDERAL DO TOCANTINS CAMPUS UNIVERSITÁRIO DE PALMAS BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO GETNA: GERADOR DE CÓDIGO RUBY ON RAILS A PARTIR DE BANCO [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 20px 0  40px 0;">Bom galera já estava em tempo de compatilhar minha monografia, de tempos em tempos a galera pedia para enviar, então nada mais justo (e fácil) que por ela aqui no blog.</p>
<hr />
<p style="text-align: center;"><strong>UNIVERSIDADE FEDERAL DO TOCANTINS<br />
CAMPUS UNIVERSITÁRIO DE PALMAS<br />
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO</strong></p>
<p style="text-align: center;"><strong>GETNA: GERADOR DE CÓDIGO RUBY ON RAILS<br />
A PARTIR DE BANCO DE DADOS</strong></p>
<p style="text-align: center;"><strong>Palmas<br />
2008<br />
LUIZ ARÃO ARAÚJO CARVALHO</strong></p>
<p><strong>Resumo</strong><br />
Na literatura, existem vários geradores de código disponíveis que tem como<br />
principal propósito automatizar o processo de desenvolvimento de aplicações em<br />
diversas linguagens de programação. Este trabalho apresenta o desenvolvimento<br />
de um gerador de código, denominado GEtna, com a função de criar as classes a<br />
partir de um determinado banco de dados. Vale a pena ressaltar que o gerador<br />
GEtna difere dos existentes pelas suas funcionalidades disponibilizadas.<br />
O gerador proposto aumenta a velocidade do processo de desenvolvimento<br />
de uma aplicação Rails, pois recebe como entrada tabelas de um banco de dados<br />
relacional (MySQL, PostgreSQL ou SQLite) e fornece como saída toda a estrutura<br />
de arquivos (classes). Vale a pena ressaltar que o GEtna proporciona uma<br />
padronização das classes geradas e, conseqüentemente, sustenta sua legibilidade,<br />
que é um fator muito importante quando se trabalha com equipes de<br />
desenvolvedores. Assim, neste trabalho será apresentada uma descrição sobre<br />
geradores de código, padrões de projeto, métodos de mapeamento e definições de<br />
dados que são fundamentais para o desenvolvimento de um gerador de código.</p>
<p>Palavras-chave: Banco de Dados Relacional, Desenvolvimento de Sistema,<br />
Gerador de Código, Rails.</p>
<p><strong>ABSTRACT</strong></p>
<p>In literature, there are several available code generators that have the main<br />
goal to automatize the application development process for some programming<br />
languages. This work presents the development of a code generator, named GEtna,<br />
that creates classes from a specific database. It’s important to note that GEtna<br />
generator differs of other generators by your available functionalities.<br />
The proposed generator increases the velocity of a Rails application<br />
development process because it receives as input relational database tables<br />
(MySQL, PostgreSQL or SQLite), and provides as output the complete file structure<br />
(class). The GEtna provides a padronization of generated classes and,<br />
consequently, maintains the legibility that is a very important factor when there are<br />
developers’ groups. So, in this work a description about code generators, design<br />
patterns, mapping methods and data definition is presented because they are<br />
essential for a code generator development.</p>
<p>Keywords: Relational Database, System Development, Code Generator, Rails.</p>
<hr />
<p style="margin: 20px 0  5px 0;">Não, não eu não vou Copiar a Monografia toda aqui não, em baixo eu exportei em diversos formatos para que seja aberto não importa a situação. Coloquei também o Original podendo ser usado como Modelo para você redigir sua monografia no padrão usado pela UFT.  Só lembrando consegui um 10 com essa monografia então cuidem muito bem dela.</p>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2009/09/Monografia_v40_ULTIMATE_11-12-2008.docx" target="_blank"><img src="http://www.redrails.com.br/wp-content/uploads/2009/09/file-extension-docx-microsoft-office-word-icon1.png" alt="" width="148" height="148" /></a>Original(DocX)</p>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2009/09/Monografia_v40_ULTIMATE_11-12-2008.pdf" target="_blank"><img src="http://www.redrails.com.br/wp-content/uploads/2009/09/Adobe-Reader-File-150x150.png" alt="" /></a>Pdf</p>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2009/09/Monografia_v40_ULTIMATE_11-12-2008.txt" target="_blank"><img src="http://www.redrails.com.br/wp-content/uploads/2009/09/Document.png" alt="" width="164" height="164" /></a>Txt</p>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2009/09/Monografia_v40_ULTIMATE_11-12-2008.mht" target="_blank"><img src="http://www.redrails.com.br/wp-content/uploads/2009/09/HTML.png" alt="" width="151" height="151" /></a>Html</p>
<p><a href="http://www.redrails.com.br/wp-content/uploads/2009/09/Monografia_v40_ULTIMATE_11-12-2008Convertido.doc" target="_blank"><img src="http://www.redrails.com.br/wp-content/uploads/2009/09/WORD-FILE-2.png" alt="" /></a>Doc</p>
<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "Ruby";
            bb_bid  = "1611534";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "7";bb_format = "bbc";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end --><div class="plus-one-wrap"><g:plusone href="http://www.redrails.com.br/2009/09/monografia-getna-gerador-ruby-on-rails-a-partir-de-banco-de-dados/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.redrails.com.br/2009/09/monografia-getna-gerador-ruby-on-rails-a-partir-de-banco-de-dados/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

