<?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>Blog do PacMan &#187; script</title>
	<atom:link href="http://pacman.blog.br/blog/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>http://pacman.blog.br/blog</link>
	<description>Varias Coisas, por Tiago Peczenyj</description>
	<lastBuildDate>Thu, 26 Jan 2012 13:51:31 +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>Algoritmos Geneticos, Videos e VBScript</title>
		<link>http://pacman.blog.br/blog/windows/algoritmos-geneticos-videos-e-vbscript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=algoritmos-geneticos-videos-e-vbscript</link>
		<comments>http://pacman.blog.br/blog/windows/algoritmos-geneticos-videos-e-vbscript/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 22:07:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://pacman.blog.br/blog/?p=41</guid>
		<description><![CDATA[O Carlo &#8220;zED&#8221; Caputo ja tinha comentado sobre o uso de Algoritimo Genético para melhorar a qualidade dos vídeos aqui na globo.com, trabalho que rende bons frutos ao procurar profiles que combinem tamanho, qualidade e tempo de encoding. Ao trabalhar &#8230; <a href="http://pacman.blog.br/blog/windows/algoritmos-geneticos-videos-e-vbscript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O Carlo &#8220;zED&#8221; Caputo ja tinha comentado sobre o <a href="http://blog.globoi.com/webmedia/2007/10/29/uso-de-algoritimo-genetico-para-melhorar-a-qualidade-dos-videos/">uso de Algoritimo Genético para melhorar a qualidade dos vídeos</a> aqui na globo.com, trabalho que rende bons frutos ao procurar profiles que combinem tamanho, qualidade e tempo de encoding. Ao trabalhar com profiles <a href="http://en.wikipedia.org/wiki/H.264">H.264</a> descobrimos uma coisa interessante: nem todos os profiles tocavam no iPhone. Não havia nenhuma regra aparente para gerar um profile &#8220;universal&#8221;, então algum tipo de teste mais &#8220;hard&#8221; deveria ser feito.</p>
<p>Manualmente, vc arrastava o video através do iTunes e o mesmo era aceito ou rejeitado pelo aparelho, tarefa que, se feita manualmente, é muito chata. Como automatizar isso?</p>
<p>Lembrei que muitos programas no mundo windows possuem uma interface COM que pode ser invocada por um vbscript ou mesmo C#. Isso me foi util uma vez quando praticamente reinventei um Selenium para integrar com uma ferramenta de testes muito &#8216;exotica&#8217;, dica retirada do livro <a href="http://www.amazon.com/NET-Test-Automation-Recipes-Problem-Solution/dp/1590596633">.NET Test Automation Recipes: A Problem-Solution Approach</a>. Nosso amigo google ajudou a localizar uma prova de conceito ao fazer a pesquisa &#8220;itunes vbscript&#8221;:</p>
<p><a href="http://www.microsoft.com/technet/scriptcenter/funzone/tunes.mspx">iCame, iPod, iScripted: Scripting iTunes</a></p>
<p>Era o que eu precisava. Talvez vcs estejam curiosos sobre vbscript ao inves de Jscript: é mais comum usar vbscript para esse fim pelo mundo afora, uma vez que COM é confundido com .com das urls pela busca do google.</p>
<pre>Set objApp = CreateObject("iTunes.Application")
Wscript.Echo "Version: " &amp; objApp.Version</pre>
<p>Como podem ver, é muito simples. Existe um <a href="http://developer.apple.com/sdk/itunescomsdk.html">SDK</a> desenvolvido pela Apple para trabalhar com o iTunes que é muito bem documentado e me ajudou muito. Bastava agora saber como adicionar os videos e capturar quando ocorre uma rejeição ou não.</p>
<p>Detalhes a parte, quando enfrentamos esse tipo de desafio precisamos pensar em termos de manutenção de codigo: como criar um script que tenha vida loga? Decidi usar as tecnologias mais comuns e ser o mais claro possivel (por isso vbscript, que não é <strong>tão</strong> tosco assim).</p>
<p>A integração com o Algoritmo Genetico foi feita usando um <a href="http://pacman.blog.br/blog/uncategorized/trabalhando-com-servicos-assincronos/">serviço assíncrono</a> cuja integração era feita atraves do filesystem: bastava copiar um arquivo para um diretorio que um .bat do windows tomava conta do recado, disparando o vbscript. Foram necessarios algumas tentativas até chegar a uma estabilidade aceitável, pois acontecem coisas bem interessantes quando vc acessa uma aplicação via COM, principalmente quando um dispositivo esta ligado à USB e vc faz muitas vezes a mesma coisa. Como os serviços eram assincronos eu conseguia paralelizar parte das tarefas e, se precisasse escalar e testar em 2 ou mais aparelhos seria só desenvolver um sistema de lock apropriado (para 2 scripts não tentarem mover o mesmo arquivo).</p>
<p>Tirando o fato que eu tive q fazer coisas não-canônicas como usar o ping para localhost para simular um sleep (ok, considere isso como uma resposta ao select undef, undef, undef, 0.5;), foi divertido.</p>
<p>Esta estratégia pode ser usada em muitas coisas do mundo Windows, existem muitos exemplos pelo google afora e, se vc deseja algo mais profissional, basta usar o Visual Studio e programar em uma linguagem decente que compila e possui frameworks de teste unitários.</p>
]]></content:encoded>
			<wfw:commentRss>http://pacman.blog.br/blog/windows/algoritmos-geneticos-videos-e-vbscript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

