<?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>Desenvolva-se</title>
	<atom:link href="http://www.leandromello.com/Blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.leandromello.com/Blog</link>
	<description>Blog sobre tecnologia e desenvolvimento de sites</description>
	<lastBuildDate>Thu, 12 May 2011 19:20:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Gerar classes .NET a partir de XSD &#8211; Serialização de objetos</title>
		<link>http://www.leandromello.com/Blog/?p=148</link>
		<comments>http://www.leandromello.com/Blog/?p=148#comments</comments>
		<pubDate>Thu, 12 May 2011 19:20:46 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Por Leandro]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Quick Tip]]></category>

		<guid isPermaLink="false">http://www.leandromello.com/Blog/?p=148</guid>
		<description><![CDATA[Fala Pessoal! Quando trabalhamos com serialização de objetos, muitas vezes temos que partir apenas do schema do XML para criar nossas classes serializáveis. Para ganharmos tempo, temos uma ferramenta no Visual Studio que gera as classes necessárias automáticamente de acordo com o schema XSD. Para gerar as classes a partir do programa xsd.exe, basta abrir [...]]]></description>
			<content:encoded><![CDATA[<p>Fala Pessoal!</p>
<p>Quando trabalhamos com serialização de objetos, muitas vezes temos que partir apenas do schema do XML para criar nossas classes serializáveis. Para ganharmos tempo, temos uma ferramenta no Visual Studio que gera as classes necessárias automáticamente de acordo com o schema XSD.</p>
<p>Para gerar as classes a partir do programa <strong>xsd.exe</strong>, basta abrir o Visual Studio 2008 Command Prompt e digitar o seguinte:</p>
<pre>xsd C:\scr3030.201102.xsd  /c /l:VB /o:C:\</pre>
<p>Explicando:</p>
<p>xsd -&gt; xsd.exe, executável que irá gerar as classes.<br />
C:\scr3030.201102.xsd -&gt; Local do schema XSD<br />
/c -&gt; Opção para geração de classes. Também é possível gerar uma dll ou um DataSet.<br />
/l:VB -&gt; Linguagem que será gerada a classe.<br />
/o:C:\ -&gt; Diretório de saída.</p>
<p>Para mais detalhes, acesse a documentação no MSDN <a title="XML Schema Definition Tool (Xsd.exe)" href="http://msdn.microsoft.com/en-us/library/x6c1kb0s%28v=VS.100%29.aspx" target="_blank">aqui</a>.</p>
<p>É isso. Simples e quebra um galhão! rs</p>
<p>Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=148</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Usando o ASP.NET Ajax Auto Complete Extender</title>
		<link>http://www.leandromello.com/Blog/?p=128</link>
		<comments>http://www.leandromello.com/Blog/?p=128#comments</comments>
		<pubDate>Thu, 06 Jan 2011 02:36:26 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[Ajax Control Toolkit]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Por Leandro]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://www.leandromello.com/Blog/?p=128</guid>
		<description><![CDATA[Fala Pessoal! Vemos muitos exemplos na internet de uso do Ajax Complete Extender com um Web Service. Porém, também podemos usá-lo acessando um método de uma página ASPX. É o que vamos ver agora. Let’s go! 1 – Crie um novo projeto no Visual Studio e adicione uma página aspx 2 – Coloque o seguinte [...]]]></description>
			<content:encoded><![CDATA[<p>Fala Pessoal!</p>
<p>Vemos muitos exemplos na internet de uso do Ajax Complete Extender com um Web Service. Porém, também podemos usá-lo acessando um método de uma página ASPX. É o que vamos ver agora. Let’s go!</p>
<h4>1 – Crie um novo projeto no Visual Studio e adicione uma página aspx</h4>
<p><a href="http://www.leandromello.com/Blog/wp-content/uploads/2011/01/image.png" rel="lightbox[128]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://www.leandromello.com/Blog/wp-content/uploads/2011/01/image_thumb.png" border="0" alt="image" width="134" height="82" /></a></p>
<h4>2 – Coloque o seguinte código na página Default.aspx</h4>
<p>Lembre-se de adicionar a referência à DLL do AJAX Control Toolkit ao projeto e inserir a tag Register na página.</p>
<pre name="code" class="html">&lt;%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="actk" %&gt;</pre>
<p>Agora os controles:</p>
<pre name="code" class="html"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
<style>
        .autocomplete_completionListElement
        {
            margin: 0px !important;
            background-color: white;
            color: windowtext;
            border: buttonshadow;
            border-width: 1px;
            border-style: solid;
            cursor: 'default';
            overflow: auto;
            height: auto;
            max-height: 300px;
            text-align: left;
            list-style-type: none;
        }
        .autocomplete_highlightedListItem
        {
            background-color: #c6e6b3;
            color: black;
            padding: 1px;
            margin-left: -35px;
        }
        .autocomplete_listItem
        {
            background-color: window;
            color: windowtext;
            padding: 1px;
            margin-left: -30px;
        }
    </style>

</head>
<body>
<form id="form1" runat="server">
    <actk:toolkitscriptmanager ID="ToolkitScriptManager1" runat="server">
    </actk:toolkitscriptmanager>
<div>
        <asp:label ID="lblCliente" runat="server" AssociatedControlID="txtCliente">Cliente:</asp:label>
        <asp:textbox ID="txtCliente" runat="server" CssClass="textEntry" Width="500px" ClientIDMode="Static"
            MaxLength="100"></asp:textbox>
        <actk:autocompleteextender ID="txtCliente_AutoCompleteExtender" runat="server" Enabled="True"
            TargetControlID="txtCliente" ServicePath="Default.aspx" MinimumPrefixLength="1"
            CompletionInterval="0" ServiceMethod="PesquisarClientes" EnableCaching="true"
            BehaviorID="AutoCompleteExCli" CompletionSetCount="20" CompletionListCssClass="autocomplete_completionListElement"
            CompletionListItemCssClass="autocomplete_listItem" CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem">
            <animations>
                <onshow>
                    <sequence>
                        < %-- Make the completion list transparent and then show it --%>
                        <opacityaction Opacity="0" />
                        <hideaction Visible="true" />

                        < %--Cache the original size of the completion list the first time
                            the animation is played and then set it to zero --%>
                        <scriptaction Script="
                            // Cache the size and setup the initial size
                            var behavior = $find('AutoCompleteExCli');
                            if (!behavior._height) {
                                var target = behavior.get_completionList();
                                behavior._height = target.offsetHeight - 2;
                                target.style.height = '0px';
                            }" />

                        < %-- Expand from 0px to the appropriate size while fading in --%>
<parallel Duration=".4">
                            <fadein />
                            <length PropertyKey="height" StartValue="0" EndValueScript="$find('AutoCompleteExCli')._height" />
                        </parallel>
                    </sequence>
                </onshow>
                <onhide>
                    < %-- Collapse down to 0px and fade out --%>
<parallel Duration=".4">
                        <fadeout />
                        <length PropertyKey="height" StartValueScript="$find('AutoCompleteExCli')._height" EndValue="0" />
                    </parallel>
                </onhide>
            </animations>
        </actk:autocompleteextender>
    </div>
</form>

</body>
</html></pre>
<h4>3 – Métodos que o Complete Extender usará(Default.aspx.cs):</h4>
<pre name="code" class="c#">///
<summary>
        /// Método para pesquisa de Clientes
        /// </summary>

        ///
<param name="prefixText">Texto digitado para pesquisa</param>
        ///
<param name="count">Total de resultados para mostrar</param>
        /// <returns>Array contendo os clientes de acordo com a pesquisa</returns>
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public static string[] PesquisarClientes(string prefixText, int count)
        {
            List<string> Clientes = GetAllClients().Where(cli => cli.ToLower().Contains(prefixText.ToLower())).ToList(); // Obtendo clientes de acordo com o texto digitado

            List</string><string> results = new List</string><string>();
            int total = 0;

            // Efetuando o count
            foreach (var cliente in Clientes)
            {
                if (total == count)
                    break;

                results.Add(cliente);
                total++;
            }

            return results.ToArray();
        }

        public static List</string><string> GetAllClients()
        {
            return new List</string><string>() { "Alexandre",
                                        "Bárbara",
                                        "Carlos",
                                        "Daniel",
                                        "Emanuel",
                                        "Fábio",
                                        "Gabriel",
                                        "Humberto",
                                        "Igor",
                                        "Júnior",
                                        "Karina",
                                        "Leandro",
                                        "Márcia",
                                        "Neide",
                                        "Oliveira",
                                        "Patrick",
                                        "Queiroz",
                                        "Ricardo",
                                        "Sandra",
                                        "Tatiana",
                                        "Vanessa",
                                      };
        }</string></pre>
<p>Pronto!</p>
<p>Agora você tem o seu Auto Complete Extender funcionando sem uso de web services. Esta é uma solução simples que pode e deve ser melhorada e adaptada para a sua necessidade.</p>
<p>Qualquer dúvida postem nos comentários.</p>
<p><a href="http://leandromello.com/Downloads.aspx?downID=3" target="_blank">Download do código fonte completo</a></p>
<p>Um abraço!</p>
<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "ajax";
            bb_bid  = "187172";
            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 -->]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=128</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criptografia com PHP</title>
		<link>http://www.leandromello.com/Blog/?p=108</link>
		<comments>http://www.leandromello.com/Blog/?p=108#comments</comments>
		<pubDate>Mon, 18 Oct 2010 19:55:10 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quick Tip]]></category>

		<guid isPermaLink="false">http://www.leandromello.com/Blog/?p=108</guid>
		<description><![CDATA[Fala Pessoal! O PHP permite usar criptografiade 3 formas simples, sendo que em apenas uma delas existe “volta”, ou seja, a descriptografia da string. 1 – base64 Codigica uma string com base64. Para codificar, usa-se o método base64_encode() e para decodificar usa-se base64_decode(). echo(base64_encode("senha")); echo(base64_decode("c2VuaGE=")); 2 – MD5 Codifica uma string em um hash hexadecimal [...]]]></description>
			<content:encoded><![CDATA[<p>Fala Pessoal!</p>
<p>O PHP permite usar <a class="bbli" href="http://sledge.boo-box.com/list/page/Y3JpcHRvZ3JhZmlhXyMjX2Jhcl8jI190YWdnaW5nLXRvb2wtd3BfIyNfMTg3MTcy-64">criptografia<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a>de 3 formas simples, sendo que em apenas uma delas existe “volta”, ou seja, a descriptografia da string.</p>
<h4>1 – base64</h4>
<p>Codigica uma string com base64. Para codificar, usa-se o método <strong>base64_encode()</strong> e para decodificar usa-se <strong>base64_decode()</strong>.</p>
<pre name="code" class="php">
   echo(base64_encode("senha"));
   echo(base64_decode("c2VuaGE="));
</pre>
<h4>2 – MD5</h4>
<p>Codifica uma string em um hash hexadecimal de 32 caracteres. Não há método para decodificação.</p>
<pre name="code" class="php">
   echo(md5("senha"));
</pre>
<h4>3 &#8211; Crypt</h4>
<p>Retorna uma string criptografada usando o algoritmo Unix Standard DES-based. Não há método para decodificação.</p>
<pre name="code" class="php">
   echo(crypt("senha"));
</pre>
<p>Das três formas, a mais <a class="bbli" href="http://sledge.boo-box.com/list/page/c2VndXJhXyMjX2Jhcl8jI190YWdnaW5nLXRvb2wtd3BfIyNfMTg3MTcy-56">segura<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a>é MD5.</p>
<p>Bom, é isso.</p>
<p>Um abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=108</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exportando dados do Excel para SQL Query &#8211; Quick Tip</title>
		<link>http://www.leandromello.com/Blog/?p=83</link>
		<comments>http://www.leandromello.com/Blog/?p=83#comments</comments>
		<pubDate>Wed, 03 Mar 2010 16:12:56 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[Quick Tip]]></category>

		<guid isPermaLink="false">http://www.leandromello.com/Blog/?p=83</guid>
		<description><![CDATA[Hoje tive a necessidade de importar dados do Microsoft Excel para uma query em SQL ou mesmo diretamente para uma tabela do banco. Isso seria simples usando o DTS (Data Transformation Services), mas ai que estava o problema: Eu só estou com o SQL Server 2005 Express instalado. Eis então a questão: Como gerar as [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje tive a necessidade de importar dados do <a class="bbli" href="http://sledge.boo-box.com/list/page/TWljcm9zb2Z0XyMjX2Nsb3VkXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xODcxNzI=-64">Microsoft<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> Excel para uma query em SQL ou mesmo diretamente para uma tabela do banco. Isso seria simples usando o <a title="DTS" href="http://www.databasejournal.com/features/mssql/article.php/3580216/SQL-Server-2005-Import--Export-Wizard.htm" target="_blank">DTS</a> (Data Transformation Services), mas ai que estava o problema: Eu só estou com o SQL Server 2005 Express instalado.</p>
<p>Eis então a questão: Como gerar as querys para inserir em uma tabela as 8000 linhas da <a class="bbli" href="http://sledge.boo-box.com/list/page/cGxhbmlsaGFfIyNfY2xvdWRfIyNfdGFnZ2luZy10b29sLXdwXyMjXzE4NzE3Mg==-64">planilha<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> Excel? Então, veio uma pessoa iluminada e me entregou a seguinte fórmula:</p>
<blockquote><p>=CONCATENAR(&#8220;INSERT INTO nome_tabela VALUES (&#8216;&#8221;;ARRUMAR(A2);&#8221;&#8216;, &#8216;&#8221;;ARRUMAR(B2);&#8221;&#8216;, &#8216;&#8221;;ARRUMAR(C2);&#8221;&#8216;, &#8216;&#8221;;ARRUMAR(D2);&#8221;&#8216;);&#8221;)</p></blockquote>
<p>Esse foi o &#8220;jump of the cat&#8221; mais simples que já vi. Vamos fazer um exemplo para que fique mais claro.</p>
<h2>1 &#8211; Considere a planilha abaixo:</h2>
<div id="attachment_87" class="wp-caption aligncenter" style="width: 274px"><a href="http://www.leandromello.com/Blog/wp-content/uploads/2010/03/Planilha_Sem_Query.jpg" rel="lightbox[83]"><img class="size-full wp-image-87" title="Planilha sem query" src="http://www.leandromello.com/Blog/wp-content/uploads/2010/03/Planilha_Sem_Query.jpg" alt="" width="264" height="204" /></a><p class="wp-caption-text">Planilha sem query</p></div>
<p style="text-align: center;">
<h2>2 &#8211; Adicione o script:</h2>
<div id="attachment_85" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.leandromello.com/Blog/wp-content/uploads/2010/03/Planilha_Com_Funcao.jpg" rel="lightbox[83]"><img class="size-medium wp-image-85" title="Planilha com o script" src="http://www.leandromello.com/Blog/wp-content/uploads/2010/03/Planilha_Com_Funcao-300x71.jpg" alt="" width="300" height="71" /></a><p class="wp-caption-text">Planilha com o script</p></div>
<h2>3 &#8211; Arraste para as outras linhas:</h2>
<div id="attachment_86" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.leandromello.com/Blog/wp-content/uploads/2010/03/Planilha_Com_Query.jpg" rel="lightbox[83]"><img class="size-medium wp-image-86" title="Planilha com query" src="http://www.leandromello.com/Blog/wp-content/uploads/2010/03/Planilha_Com_Query-300x73.jpg" alt="" width="300" height="73" /></a><p class="wp-caption-text">Planilha com query</p></div>
<p>Pronto! Agora é só copiar tudo e salvar em um arquivo &#8220;.sql&#8221;</p>
<p>Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=83</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TV Digital na Campus Party 2010</title>
		<link>http://www.leandromello.com/Blog/?p=44</link>
		<comments>http://www.leandromello.com/Blog/?p=44#comments</comments>
		<pubDate>Mon, 25 Jan 2010 14:49:00 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Ginga]]></category>
		<category><![CDATA[NCL]]></category>
		<category><![CDATA[Por Luiz Araújo]]></category>
		<category><![CDATA[TV Digital]]></category>

		<guid isPermaLink="false">http://localhost/Blog/?p=44</guid>
		<description><![CDATA[A equipe da UFPB participará todos os dias do Campus Party 2010 que será realizado em São Paulo entre os dias 25 e 31 de janeiro. Estaremos presentes no stand do MCT (Ministério da Ciência e Tecnologia) demonstrando aplicações Ginga e explicando melhor o funcionamento dos projetos hospedados em http://dev.openginga.org. Além disso, também serão ministradas [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>A equipe da UFPB participará todos os dias do <a href="http://www.campus-party.com.br">Campus Party 2010</a> que será realizado em São Paulo entre os dias 25 e 31 de janeiro. Estaremos presentes no stand do MCT (Ministério da Ciência e Tecnologia) demonstrando aplicações Ginga e explicando melhor o funcionamento dos projetos hospedados em <a href="http://dev.openginga.org">http://dev.openginga.org</a>. Além disso, também serão ministradas palestras, oficinas e encontro com a comunidade. Até o momento temos a confirmação dos seguintes eventos:</p>
<p>Todos os dias &#8211; 26,27,28,29,30,31 de janeiro<br />&#8212;&#8212;&#8211;<br />    Demo: Demonstrações de Aplicações Ginga<br />    Ministrante: Equipe da UFPB, PUC-Rio e DataPrev<br />    Local: Stand MCT na área Expo</p>
<p>Terça 26/01<br />&#8212;&#8212;</p>
<p>18:00 &#8211; 19:00<br />    Tv Digital &#8211; Construindo Interatividade com Ginga<br />    Ministrante: Edson Castilhos<br />    Local: Palco Software Livre</p>
<p>22:00 &#8211; 23:00<br />    TV Digital e Jornalismo<br />    Ministrante: Eduardo Pellanda e André Pase<br />    Local: Palco Software Livre</p>
<p>Quarta 27/01<br />&#8212;&#8212;&#8211;</p>
<p>10:00 &#8211; 12:00<br />    Mini-curso: Acessibilidade em TV Digital<br />    Ministrante: a definir<br />    Local: Stand MCT na área Expo</p>
<p>12:00 &#8211; 14:00<br />    Tutorial: Ginga Live CD<br />    Ministrante: Equipe PUC-Rio<br />    Local: Stand MCT na área Expo</p>
<p>14:00 &#8211; 16:00<br />    Oficina: Hands-On Ginga, criando aplicações NCL<br />    Ministrante: Equipe PUC-Rio<br />    Local: Stand MCT na área Expo</p>
<p>17:00 &#8211; 18:00<br />    Oficina: Hands-On Ginga, criando aplicações NCLua<br />    Ministrante: Equipe PUC-Rio<br />    Local: Stand MCT na área Expo</p>
<p>Quinta &#8211; 28/01<br />&#8212;&#8212;&#8211;</p>
<p>10:00 &#8211; 13:00<br />    Oficina: Hands-On Ginga, criando aplicações Ginga-J<br />    Ministrante: Raoni Kulesza e Jefferson Lima<br />    Local: Stand MCT na área Expo</p>
<p>16:00 &#8211; 20:00<br />    Oficina: Hands-On Ginga, Programação de Middleware para TVD<br />    Ministrante: Raoni Kulesza, Jefferson Lima, Álan Lívio e Vítor Baptista<br />    Local: Stand MCT na área Expo</p>
<p>Sexta &#8211; 29/01<br />&#8212;&#8212;&#8211;</p>
<p>16:00 &#8211; 20:00<br />    Encontro comunidade Ginga &#8211; Próximos passos, projetos e colaboração<br />    Ministrante: Equipe da PUC-Rio e UFPB<br />    Local: área de Barcamp</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=44</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nova versão do Virtual Set-top Box Ginga-NCL</title>
		<link>http://www.leandromello.com/Blog/?p=43</link>
		<comments>http://www.leandromello.com/Blog/?p=43#comments</comments>
		<pubDate>Mon, 28 Dec 2009 11:50:00 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[Ginga]]></category>
		<category><![CDATA[NCL]]></category>
		<category><![CDATA[Por Luiz Araújo]]></category>
		<category><![CDATA[TV Digital]]></category>

		<guid isPermaLink="false">http://localhost/Blog/?p=43</guid>
		<description><![CDATA[Post publicado originalmente na SubComunidade Ginga-NCL A Comunidade Ginga disponibilizou hoje uma nova versão do Virtual Set-top Box Ginga-NCL, máquina virtual VMWare que possui a implementação de referência do Ginga-NCL (C++) instalada e pronta para uso. Usuários de versões anteriores são recomendados a fazer a atualização. Ginga-NCL Virtual Set-top Box v.0.11.2 foi atualizado com o [...]]]></description>
			<content:encoded><![CDATA[<p>Post publicado originalmente na SubComunidade <a href="http://migre.me/f7YK">Ginga-NCL </a></p>
<p>A Comunidade Ginga disponibilizou hoje uma nova versão do Virtual Set-top Box Ginga-NCL, máquina virtual VMWare que possui a implementação de referência do Ginga-NCL (C++) instalada e pronta para uso. Usuários de versões anteriores são recomendados a fazer a atualização.
<p>Ginga-NCL Virtual Set-top Box v.0.11.2 foi atualizado com o novo código do Ginga-NCL (C++) v.0.11.2. O Set-top Box Virtual é uma máquina virtual VMWare com sistema Linux instalado e pré-configurado com todos os requisitos do Ginga-NCL (C++). Pode ser obtido por meio da SubComunidade Ginga-NCL, no box &#8220;Direto ao Ginga&#8221; <a href="http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/gingancl/">(http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/gingancl/</a>). Lá você encontra também um &#8220;HOW-TO&#8221; com dicas para instalar e operar o Set-top Box Virtual.</p>
<p>Para maiores informações sobre as modificações no código do Ginga-NCL, consulte os arquivos ChangeLog presentes em cada pacote de código-fonte presente no SVN (http://svn.softwarepublico.gov.br/trac/ginga/browser). A atualização corresponde à revisão 23 do SVN, que além das novidades <a href="http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/lars-blogger/one-entry?entry%5fid=17099500" target="" title="">publicadas aqui</a>, conta com um aprimoramentos no suporte à decodificação de dados em arquivos MPEG2 TS abertos localmente.</p>
<p>Comunidade Ginga<br /><a href="http://www.softwarepublico.gov.br/dotlrn/register?community_id=1101545&amp;referer=/dotlrn/clubs/ginga/">http://www.softwarepublico.gov.br/dotlrn/register?community_id=1101545&amp;referer=/dotlrn/clubs/ginga/</a></p>
<p>SubComunidade Ginga-NCL<br /><a href="http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/register?community_id=1160871&amp;referer=/dotlrn/clubs/ginga/gingancl">http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/register?community_id=1160871&amp;referer=/dotlrn/clubs/ginga/gingancl</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=43</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lançada a versão 0.11.1 do Ginga-NCL (C++)</title>
		<link>http://www.leandromello.com/Blog/?p=42</link>
		<comments>http://www.leandromello.com/Blog/?p=42#comments</comments>
		<pubDate>Sat, 12 Dec 2009 13:03:00 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[Ginga]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[Por Luiz Araújo]]></category>
		<category><![CDATA[TV Digital]]></category>

		<guid isPermaLink="false">http://localhost/Blog/?p=42</guid>
		<description><![CDATA[Foi anunciado hoje, dia 12, a nova versão do Ginga-NCL (C++). As grandes novidades ficaram por conta do suporte a múltiplos dispositivos e a utilização de luasocket na classe TCP. Comunidade Ginga, Encontra-se em nosso SVN uma nova release da implementação de referência do Ginga-NCL. Em breve, as ferramentas Ginga-NCL Virtual STB e Ginga Live [...]]]></description>
			<content:encoded><![CDATA[<p>Foi anunciado hoje, dia 12, a nova versão do Ginga-NCL (C++). As grandes novidades ficaram por conta do suporte a múltiplos dispositivos e a utilização de <span style="font-style: italic;">luasocket</span> na classe <span style="font-style: italic;">TCP</span>.</p>
<blockquote><p>Comunidade Ginga,</p>
<p>Encontra-se em nosso SVN uma nova release da implementação de referência do Ginga-NCL. Em breve, as ferramentas Ginga-NCL Virtual STB e Ginga Live CD serão atualizadas para abrigar esta nova versão.</p>
<p>A revisão 22 do repositório corresponde à versão 0.11.1 do Ginga-NCL (C++), que possui as seguintes novas funcionalidades e evoluções:</p>
<ul>
<li>   Suporte a múltiplos dispositivos de exibição</li>
</ul>
<ul>
<li>   Suporte a objetos NCL embutidos</li>
</ul>
<ul>
<li>Otimização no uso de recursos, incluindo a liberação de componentes</li>
</ul>
<ul>
<li>   Manipulação de Transport Stream</li>
</ul>
<ul>
<li>         o Suporte a Sintonizadores USB ISDB-T</li>
</ul>
<ul>
<li>         o Avanços na manipulação do Carrossel de Objetos e Eventos de Fluxo</li>
</ul>
<ul>
<li>         o Suporte a cadeia Normal Play Time (NPT)</li>
</ul>
<ul>
<li>Classe TCP da API Lua agora utiliza luasocket ao invés da libasync</li>
</ul>
<ul>
<li>   Criado novo player TS</li>
</ul>
<ul>
<li>&#8220;gingalssm&#8221; agora gerencia Formatadores e cadeias temporais NPT</li>
</ul>
<ul>
<li>Nova arquitetura de formatadores aninhados para o suporte a objetos NCL embutidos.</li>
</ul>
<p>Os desenvolvedores de middleware podem fazer o checkout da nova versão imediatamente, seguindo as instruções na Wiki de Desenvolvimento. E podem consultar nossa lista de pontos em aberto (TODO List) para contribuições.</p></blockquote>
<p>Mais informações no <a href="http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/one-community?page_num=0">Portal do Software Público</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=42</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenhando Círculos em NCL/Lua</title>
		<link>http://www.leandromello.com/Blog/?p=41</link>
		<comments>http://www.leandromello.com/Blog/?p=41#comments</comments>
		<pubDate>Fri, 11 Dec 2009 14:25:00 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[Ginga]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[Por Luiz Araújo]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[TV Digital]]></category>

		<guid isPermaLink="false">http://localhost/Blog/?p=41</guid>
		<description><![CDATA[Implementei uma função que permite desenhar circulos com o Canvas para NCL/Lua Função function desenharCirculo ( X0 , Y0 , raio , mode ) function converterGrau2Rad ( x ) return ( x / 180 ) * math.pi end local tblPt = {} if mode ~= &#8216;fill&#8216; then mode = &#8216;frame&#8216; end for i=0, 360 do [...]]]></description>
			<content:encoded><![CDATA[<p>Implementei uma função que permite desenhar circulos com o Canvas para NCL/Lua</p>
<p><span style="font-weight: bold;">Função</span></p>
<p><span style="color: rgb(51, 51, 255);"></span><span style="color: rgb(51, 51, 255);"></span><br />
<blockquote><span style="color: rgb(51, 51, 255);">function </span>desenharCirculo ( X0 , Y0 ,  raio , mode )<br />
<blockquote>   <span style="color: rgb(51, 51, 255);">function</span> converterGrau2Rad ( x )<br />                   <span style="color: rgb(51, 51, 255);">return</span> ( x / 180 ) * math.pi<br />       <span style="color: rgb(51, 51, 255);">end</span></p>
<p>       <span style="color: rgb(51, 51, 255);">local</span> tblPt = {}</p>
<p>       <span style="color: rgb(51, 51, 255);">if</span> mode ~= &#8216;<span style="color: rgb(51, 204, 0);">fill</span><span style="color: rgb(51, 204, 0);"></span>&#8216; <span style="color: rgb(51, 51, 255);">then</span><br />                   mode = &#8216;<span style="color: rgb(51, 204, 0);">frame</span>&#8216;<br />       <span style="color: rgb(51, 51, 255);">end</span></p>
<p>       <span style="color: rgb(51, 51, 255);">for </span>i=0, 360 <span style="color: rgb(51, 51, 255);">do</span><br />                     <span style="color: rgb(51, 51, 255);">local </span>x = (raio * math.cos(converterGrau2Rad(i)))<br />                     <span style="color: rgb(51, 51, 255);">local </span>y = (raio * math.sin(converterGrau2Rad(i)))</p>
<p>                     <span style="color: rgb(51, 51, 255);">if </span>mode == &#8216;<span style="color: rgb(51, 204, 0);">frame</span>&#8216; <span style="color: rgb(51, 51, 255);">then</span><br />                     tblPt[i] = {}<br />                                   <span style="color: rgb(153, 0, 0);">table.insert</span>(tblPt[i],X0 &#8211; x)<br />                                   <span style="color: rgb(153, 0, 0);">table.insert</span>(tblPt[i],Y0 &#8211; y)<br />                     <span style="color: rgb(51, 51, 255);">end</span></p>
<p>                     <span style="color: rgb(51, 51, 255);">if </span>mode == &#8216;<span style="color: rgb(51, 204, 0);">fill</span>&#8216; <span style="color: rgb(51, 51, 255);">then</span><br />                                   <span style="color: rgb(153, 0, 0);">canvas:drawLine</span> (X0, Y0, X0 &#8211; x, Y0 &#8211; y)<br />                     <span style="color: rgb(51, 51, 255);">end</span></p>
<p>       <span style="color: rgb(51, 51, 255);">end</span></p>
<p>       <span style="color: rgb(51, 51, 255);">if </span>mode == &#8216;<span style="color: rgb(51, 204, 0);">frame</span>&#8216; <span style="color: rgb(51, 51, 255);">then</span></p>
<p>                     <span style="color: rgb(51, 51, 255);">for </span>i=0,<span style="color: rgb(153, 0, 0);"> table.maxn</span>(tblPt) <span style="color: rgb(51, 51, 255);">do</span></p>
<p>                                   <span style="color: rgb(51, 51, 255);">if </span>i == <span style="color: rgb(153, 0, 0);">table.maxn</span>(tblPt) <span style="color: rgb(51, 51, 255);">then</span><br />                                                 <span style="color: rgb(153, 0, 0);">canvas:drawLine</span> (tblPt[i][1], tblPt[i][2], tblPt[0][1], tblPt[0][2])<br />                                   <span style="color: rgb(51, 51, 255);">else</span><br />                                                 <span style="color: rgb(153, 0, 0);">canvas:drawLine</span> (tblPt[i][1], tblPt[i][2], tblPt[i+1][1], tblPt[i+1][2])<br />                                   <span style="color: rgb(51, 51, 255);">end</span></p>
<p>                     <span style="color: rgb(51, 51, 255);">end</span></p>
<p>        <span style="color: rgb(51, 51, 255);">end</span></p></blockquote>
<p><span style="color: rgb(51, 51, 255);">end</span></p></blockquote>
<p><span style="font-weight: bold;">A chamada para a função é a seguinte:</span></p>
<p><span style="color: rgb(153, 0, 0);">canvas:attrColor</span>(96, 181, 255, 255)<br /><span style="font-weight: bold;">desenharCirculo ( 250 , 250 , 20 , </span><span style="font-weight: bold;">&#8216;frame&#8217;</span><span style="font-weight: bold;"> )</span><br /><span style="color: rgb(153, 0, 0);">canvas:flush</span>()</p>
<p><span style="font-weight: bold;">Parâmetros<br /></span>A função trabalha com quatro parâmetros, são eles:<br /><span style="font-weight: bold;">X0:</span> A coordenada X do ponto central.<br /><span style="font-weight: bold;">Y0:</span> A coodenada Y do ponto central.<br /><span style="font-weight: bold;">Raio:</span> O tamanho do raio do círculo.<br /><span style="font-weight: bold;">Mode:</span> É o tipo de desenho que será feito. Se escolhido <span style="font-weight: bold; font-style: italic;">frame</span>, será desenhado apenas a moldura. Se for escolhido <span style="font-weight: bold; font-style: italic;">fill </span>o desenho será preenchido. O modo frame é utilizado como default.</p>
<p><span style="font-weight: bold;">Problemas</span><br />Nem tudo na vida é perfeito e esta função não seria diferente. Quando desenhamos um círculo com mode fill e raio muito grande, vemos algumas falhas. Se alguém conseguir solucionar o problema, escreva nos comentários que a função será atualizada e dado os devidos créditos. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=41</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TV Digital: Interatividade além do NCL</title>
		<link>http://www.leandromello.com/Blog/?p=40</link>
		<comments>http://www.leandromello.com/Blog/?p=40#comments</comments>
		<pubDate>Thu, 10 Dec 2009 00:13:00 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[LUA]]></category>
		<category><![CDATA[NCL]]></category>
		<category><![CDATA[Por Luiz Araújo]]></category>
		<category><![CDATA[TV Digital]]></category>

		<guid isPermaLink="false">http://localhost/Blog/?p=40</guid>
		<description><![CDATA[Texto publicado originalmente em: O Futuro é Digital Para quem pretende iniciar os estudos para desenvolver aplicativos interativos para TV Digital, eu digo: Essa é a hora. Apesar do mercado novo, algumas empresas já estão contratando. Uma delas, a Peta5, estava até o final de novembro com duas vagas para estagiar com desenvolvimento de aplicações [...]]]></description>
			<content:encoded><![CDATA[<p>Texto publicado originalmente em: <a target=_blank href="http://www.ofuturoedigital.com.br/blog/2009/12/tv-digital-interatividade-alem-do-ncl/">O Futuro é Digital</a> </p>
<p>Para quem pretende iniciar os estudos para desenvolver aplicativos interativos para TV Digital, eu digo: Essa é a hora. Apesar do mercado novo, algumas empresas já estão contratando. Uma delas, a Peta5, estava até o final de novembro com duas vagas para estagiar com desenvolvimento de aplicações interativas.</p>
<p>Mas o que eu preciso? Apenas o NCL? Resposta: Não!</p>
<p>O NCL atende perfeitamente bem para o que foi proposto: sincronismo de mídias. Muitas aplicações básicas poderão e deverão ser desenvolvidas apenas em NCL. No entanto, aplicações que exijam uma interface que varie de acordo com as opções selecionadas pelo telespectador, a melhor escolha será Lua e Java.</p>
<p>O Ginga Java ainda não possui o mesmo nível de maturidade que o Ginga NCL/Lua tem com relação à TV Digital. É possível desenvolver interfaces dinâmicas e ricas trabalhando apenas com Lua.</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yTwpi2hg8b4/SyA9wr4d4tI/AAAAAAAAEiM/B5xhrGai5Js/s1600-h/Post_LuizEAraujo_01-Regiao_reduzida.jpg" rel="lightbox[40]"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 180px;" src="http://2.bp.blogspot.com/_yTwpi2hg8b4/SyA9wr4d4tI/AAAAAAAAEiM/B5xhrGai5Js/s320/Post_LuizEAraujo_01-Regiao_reduzida.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413394658721915602" /></a><br /><center><span style="font-style:italic;">Seria possível criar imagens para serem utilizadas no NCL, pois a quantidade de Regiões existentes no Brasil é fixa. Mas e quando não sabemos ao certo os dados que deverão ser apresentados?</span></center></p>
<p>Participo atualmente de um projeto de Educação à Distância para TV Digital. Inicialmente toda a aplicação foi escrita em NCL que chamava algumas mídias Lua que efetivamente executavam os módulos da aplicação. Depois de sete meses e aproximadamente cinco ciclos de desenvolvimento praticamente jogados no lixo, partimos para o desenvolvimento exclusivamente em Lua.</p>
<p>Criamos um simples NCL que seu único trabalho é iniciar uma mídia Lua. A partir deste ponto, desde a simples tarefa da apresentação do menu principal até o controle de entrada de dados a partir do controle remoto passou a ser feito em Lua. Após seis meses, nos impressionamos com os ganhos obtidos. Nossa aplicação que conta com dez módulos, já possui seis desenvolvidos.</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yTwpi2hg8b4/SyA-DqVZMhI/AAAAAAAAEiU/cx6H8xs3t6M/s1600-h/Post_LuizEAraujo_02-Pesquisa_reduzida.jpg" rel="lightbox[40]"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 180px;" src="http://2.bp.blogspot.com/_yTwpi2hg8b4/SyA-DqVZMhI/AAAAAAAAEiU/cx6H8xs3t6M/s320/Post_LuizEAraujo_02-Pesquisa_reduzida.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413394984723886610" /></a><br /><center><span style="font-style:italic;">Na pesquisa, não sabemos quantas cidades serão retornadas.</span></center></p>
<p>Mas é preciso atenção, nem todas as bibliotecas disponíveis para linguagem Lua fazem parte do Ginga NCL/Lua.</p>
<p>A linguagem Lua para TV Digital conta com quatro módulos obrigatórios:<br /><strong><em>Canvas </em></strong>– Permite desenhar objetos em uma mídia Lua;<br /><strong><em>Event </em></strong>– Permite que mídias Lua se comuniquem com mídias NCL e outros objetos externos;<br /><strong><em>Persistent </em></strong>– Permite exportar variáveis de ambiente entre aplicações interativas;<br /><strong><em>Settings </em></strong>– Permite acesso às variáveis definidas no documento NCL.</p>
<p>Um exemplo de biblioteca Lua que não é obrigatória segundo a norma, é o Lua Socket que da suporte para conexões TCP. Para isso, é necessário utilizar o módulo <em>Event</em>.</p>
<p>Para quem pretende trabalhar com desenvolvimento para TV Digital, está é a dica que deixo: NCL é ótimo quando a idéia é apresentar informações que não varie tanto. Mas quando precisamos apresentar dados que pode variar de acordo com as opções escolhidas pelo telespectador, Lua pode ser uma grata surpresa.</p>
<p>Mais informações podem ser obtidas na <a href="http://softwarepublico.gov.br/ver-comunidade?community_id=1101545">comunidade Ginga</a> do portal do <a href="http://softwarepublico.gov.br/">Software Público<br /></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=40</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rebel EFI &#8211; Mac OS X Snow Leopard em PCs</title>
		<link>http://www.leandromello.com/Blog/?p=39</link>
		<comments>http://www.leandromello.com/Blog/?p=39#comments</comments>
		<pubDate>Tue, 27 Oct 2009 12:01:00 +0000</pubDate>
		<dc:creator>Leandro Mello</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[Por Luiz Araújo]]></category>
		<category><![CDATA[Sistema Operacional]]></category>

		<guid isPermaLink="false">http://localhost/Blog/?p=39</guid>
		<description><![CDATA[Longe dos holofotes do Windows 7, a Psystar, empresa baseada na Flórida, lançou o Rebel-EFI. O software permite que o usuário execute o Mac OS X em hardwares que não seja da Apple. O software já está disponível em versão trial e foi testado pela Computer World que lista a falta de compatibilidade como um [...]]]></description>
			<content:encoded><![CDATA[<p>Longe dos holofotes do Windows 7, a Psystar, empresa baseada na Flórida, lançou o Rebel-EFI. O software permite que o usuário execute o Mac OS X em hardwares que não seja da Apple.</p>
<p>O software já está disponível em versão trial e foi testado pela Computer World que lista a falta de compatibilidade como um dos maiores problemas do Rebel-EFI.</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_yTwpi2hg8b4/SubiYG7TGmI/AAAAAAAAEd8/WxB72oHTMQA/s1600-h/psystar_laptop.jpg" rel="lightbox[39]"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 277px;" src="http://4.bp.blogspot.com/_yTwpi2hg8b4/SubiYG7TGmI/AAAAAAAAEd8/WxB72oHTMQA/s320/psystar_laptop.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5397250107254184546" /></a></p>
<p><span style="font-weight:bold;">Para saber mais</span><br /><a href="http://www.psystar.com/" target=_blank>Rebel-EFI</a><br /><a href="http://www.computerworld.com/s/article/9139912/Review_Psystar_s_Rebel_EFI_Snow_Leopard_on_a_PC?taxonomyId=89&#038;pageNumber=1" target=_blank>Review Computer World</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandromello.com/Blog/?feed=rss2&#038;p=39</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

