<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.2">Jekyll</generator><link href="http://edcaraujo.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://edcaraujo.com/" rel="alternate" type="text/html" /><updated>2025-10-05T13:42:07-03:00</updated><id>http://edcaraujo.com/feed.xml</id><title type="html">edcaraujo</title><subtitle>Olá! Me chamo Eduardo, sou Líder de Tecnologia com +12 anos de experiência, especializado em gestão estratégica e crescimento de plataformas escaláveis.</subtitle><entry><title type="html">InterFatecs 2019</title><link href="http://edcaraujo.com/blog/programacao-competitiva/2019/09/12/interfatecs-2019.html" rel="alternate" type="text/html" title="InterFatecs 2019" /><published>2019-09-12T00:00:00-03:00</published><updated>2019-09-12T00:00:00-03:00</updated><id>http://edcaraujo.com/blog/programacao-competitiva/2019/09/12/interfatecs-2019</id><content type="html" xml:base="http://edcaraujo.com/blog/programacao-competitiva/2019/09/12/interfatecs-2019.html"><![CDATA[<p>No dia <strong>24/08/2019</strong> aconteceu a fase final do <a href="https://www.fatecourinhos.edu.br/interfatecs">InterFatecs 2019</a>. Para quem não sabe, o InterFatecs ou Maratona de Programação InterFatecs é a segunda maior competição do país nos moldes do <a href="https://icpc.baylor.edu/">ICPC</a>. Neste ano, a <strong>fase final</strong> aconteceu em <a href="https://goo.gl/maps/ziHB3KhQhQd2jFDe9">Ourinhos - SP</a> com 170 alunos de 37 Fatecs de todo o estado, em que a Fatec de Ribeirão Preto garantiu duas equipes no <code class="language-plaintext highlighter-rouge">#Top10</code>.</p>

<p><img src="/images/posts/bba1e7cde3cac7061bdbdcfae17a8d3e.jpg" alt="InterFatecs 2019" /></p>

<p>Nesse dia, partimos de <a href="https://goo.gl/maps/yG2n9ynWoSuVhvLZ8">Ribeirão Preto - SP</a> bem cedo, por volta das 3am, em direção a <a href="https://goo.gl/maps/ziHB3KhQhQd2jFDe9">Ourinhos - SP</a>. Havíamos selecionados cinco equipes para a fase final, mas como tivemos uma desistência, o que seria um mini ônibus, acabou virando uma van bem cheia (com Wi-Fi :p). Tirando as equipes que dormiram na Fatec Ourinhos, fomos uma das primeiras Fatecs a chegar. A competição seguiu a agenda: credenciamento, café da manhã, aquecimento, abertura, almoço, competição, lanche, premiação e volta para casa. Ao todo foram quase 24h dedicadas à competição até voltarmos com duas equipes no <code class="language-plaintext highlighter-rouge">#Top10</code> e outras duas focadas em subir no próximo ano. É, houve também uma bela discussão sobre uma questão que durou boa parte da volta.</p>

<p>Na verdade, desde 2017, primeiro ano em que a Fatec Ribeirão Preto enviou equipes para o InterFatecs, a unidade mantém um resultado expressivo na competição. Este ano a Fatec Ribeirão Preto finalizou a competição com o <code class="language-plaintext highlighter-rouge">5º</code>, <code class="language-plaintext highlighter-rouge">7º</code>, <code class="language-plaintext highlighter-rouge">40º</code> e <code class="language-plaintext highlighter-rouge">44º</code> lugar. Vale lembrar que a competição este ano começou com cerca de <strong>2,4 mil</strong> alunos de <strong>73 Fatecs</strong>, o que demonstra uma excelente consistência nos resultados alcançados na competição. Para quem não sabe, <strong>eu atuo com técnico voluntário</strong> das equipes de Ribeirão Preto e fiquei bastante feliz com o resultado, mesmo este ano não podendo ser o técnico que essa galera merece :/. Porém, promessa foram feitas e ano que vem o caneco volta para casa. Sim, em 2017, nosso primeiro ano, a equipe <strong>TEAM 171</strong> finalizou a competição em primeiro lugar em ambas as fases e o troféu passou um ano por aqui (alguém sabia disso?).</p>

<p>Infelizmente ainda não tive acesso aos casos de teste deste ano. Minha ideia era fazer um <em>post</em> mais extenso, detalhando minhas soluções e destacando alguns casos de teste. Na verdade, não temos disponível publicamente (pelo menos eu não encontrei) todas as provas e casos de teste das edições anteriores, mas sei que algumas delas estão disponíveis no <a href="https://ucoder.com.br/estudantes">uCoder</a>. Isso é importante para sentirmos o nível da competição, além de ser obrigatório a resolução das edições anteriores no treinamento (não acha?). No meu ponto de vista, a tendência é o nível subir cada vez mais nos próximos anos, juntamente com o nível das equipes, algo que já vem acontecendo, e, quem sabe, se aproximar das questões e exigências da <a href="http://maratona.ime.usp.br/">Maratona de Programação</a>, que certamente no futuro estará na agenda dessas equipes juntamente com o InterFatecs.</p>

<p>Bom, até ter acesso aos arquivos da competição, resolvi falar um pouco das equipes, resultados e os próximos passo. Mas, caso queiram adiantar alguma coisa, basta entrar em <a href="/#contato">contato</a> (ou comentar no <em>post</em>).</p>

<h2 id="equipes">Equipes</h2>

<p>As equipes de Ribeirão Preto selecionadas para a fase final foram:</p>

<p><img src="/images/posts/6f1a68f8ed5ebd60eb889acb93e8745f.jpg" alt="Equipe PYTHON ACIMA DE TUDO, C ACIMA DE TODOS (5º lugar)" /></p>

<p><strong>Python acima de tudo, C acima de todos (5º lugar)</strong></p>

<ul>
  <li>Eric Monteiro Galotti de Souza</li>
  <li>Júlio Cesar Yoshimine</li>
  <li>André Luan dos Santos Pavanelli</li>
  <li>Bruna Danielle de Oliveira Gobi</li>
</ul>

<p><img src="/images/posts/03ff7c60714a90b3d15147331f9c2a69.jpg" alt="Equipe TEAM 171 (7º lugar)" /></p>

<p><strong>TEAM 171 (7º lugar)</strong></p>

<ul>
  <li>Cainã Paulosso Bonfiglioli (não está na foto)</li>
  <li>John Lennon Grisostomo Barbosa</li>
  <li>Welton Antonio Gomes</li>
  <li>Carlos Eduardo de Oliveira Silva</li>
</ul>

<p><strong>CAFÉ# (40º lugar)</strong></p>

<ul>
  <li>Alessa Maria de Carvalho Almeida Moreira</li>
  <li>Iago de Carvalho Butignon</li>
  <li>Thiago de Barros Nabruzzi</li>
  <li>Felipe Tamassia Luzenti</li>
</ul>

<p><strong>KVM ZIKA (44º lugar)</strong></p>

<ul>
  <li>Kauan Costa Santos</li>
  <li>Victor William Paulini</li>
  <li>Michel dos Santos Kuguio</li>
  <li>Carlos Vinicius Macedo de Sousa</li>
</ul>

<p><strong>American PY (não pode ir)</strong></p>

<ul>
  <li>Pablo Henrique Aguilar</li>
  <li>Pedro Trajano Contart de Oliveira</li>
  <li>William Kenji Hiraoka</li>
  <li>Victor Azevedo</li>
</ul>

<h2 id="resultado">Resultado</h2>

<p>Este ano a prova contou com 9 questões, todas elas com solução na competição. As equipes campeãs, <code class="language-plaintext highlighter-rouge">#Top2</code>, chegaram a resolver 8 questões dentro das 5h, tendo uma das equipes de Ribeirão Preto assumindo a ponta em alguns momentos. Na verdade, o <code class="language-plaintext highlighter-rouge">#Top5</code> sofreu bastante alteração durante a competição o que rendeu um ambiente acirrado e tenso para quem estava de olho no placar. Como disse, ainda estou aguardando a liberação dos casos de teste para minhas soluções e espero não deixar ninguém com raiva por conta disso (sempre ficava assim após descobrir a solução da questão que passei horas travado durante a competição).</p>

<p>Bom, no final, as 5 melhores equipes foram:</p>

<table>
  <thead>
    <tr>
      <th><strong>#</strong></th>
      <th><strong>EQUIPE</strong></th>
      <th><strong>UNIDADE</strong></th>
      <th>SCORE</th>
      <th>INTEGRANTES</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1º</td>
      <td>Renegades</td>
      <td>Fatec Sorocaba</td>
      <td>8 (1008)</td>
      <td>Gabriel Felicidade, Guilherme Sernajoto e Rafael de Souza.</td>
    </tr>
    <tr>
      <td>2º</td>
      <td>Jumentus</td>
      <td>Fatec Ourinhos</td>
      <td>8 (1195)</td>
      <td>André Mendes, Flaviano da Cruz e Guilherme Moreira .</td>
    </tr>
    <tr>
      <td>3º</td>
      <td>Filhos de Hermes</td>
      <td>Fatec Bauru</td>
      <td>7 (1010)</td>
      <td>Alisson Henrique, Barbosa de Vasconcellos e Braidon Alves</td>
    </tr>
    <tr>
      <td>4º</td>
      <td>Pastor Edson. Aleluia, irmão!</td>
      <td>Fatec Mogi das Cruzes</td>
      <td>6 (565)</td>
      <td>Cauan Lima, Marcelo Correa Filho e Yehoshua de Oliveira.</td>
    </tr>
    <tr>
      <td><strong>5º</strong></td>
      <td><strong>Python acima de tudo, C acima de todos</strong></td>
      <td><strong>Fatec Ribeirão Preto</strong></td>
      <td><strong>6 (587)</strong></td>
      <td><strong>André Pavanelli, Eric de Souza e Júlio Yoshimine.</strong></td>
    </tr>
  </tbody>
</table>

<p>Um detalhe interessante é que mais da metade das submissões foram em <code class="language-plaintext highlighter-rouge">python</code> (53%) e o índice de equipes que zeraram foi mínimo. A segunda maior linguagem utilizada foi o <code class="language-plaintext highlighter-rouge">C/C++</code> (33%), seguida do <code class="language-plaintext highlighter-rouge">Java</code> (15%). Isso mostra o cenário bem dominante do <code class="language-plaintext highlighter-rouge">python</code>, que acredito ser a tendência (também) nesse ambiente de programação competitiva. Para quem não está acostumado, a taxa de submissão seguiu o padrão: picos no início (10-20min) e término (290-300min) da competição. Uma dica importante é não esquecer de adaptar as estratégias e comportamento da equipe conforme os minutos vão avançando, daí a necessidade de periodicamente reavaliar o plano de ação (ordem de resolução dos problemas), considerando o <em>status</em> da equipe (exaustão), tempo de competição (min) e o plano de ação utilizado pelas outras equipes.</p>

<p>Estou me organizando para publicar alguns <em>posts</em> relacionados à programação competitiva. Assim, posso detalhar uma série de dicas e orientações que passo para as equipes.</p>

<h2 id="próximos-passos">Próximos passos</h2>

<p>Atualmente as equipes estão em processo de renovação (os alunos se formam, Graças a Deus, certo?), mas o clima não poderia estar melhor. Nessa final já contamos com alunos dos primeiros períodos e a volta de uma final sempre anima os outros alunos da unidade. Assim, o plano é montar um treinamento bem especial e, vejam só, aqueles que estão se formando estarão envolvidos também no treinamento. Sem muitos detalhes, acredito termos grandes chances ano que vem e <strong>em 2020 o InterFatecs acontecerá aqui em Ribeirão Preto</strong>, onde com certeza não deixaremos o caneco passar.</p>

<p>Até mais.</p>]]></content><author><name></name></author><category term="blog" /><category term="programacao-competitiva" /><category term="interfatecs" /><category term="fatec" /><category term="ribeirão preto" /><category term="programação competitiva" /><category term="maratona de programação" /><summary type="html"><![CDATA[No dia 24/08/2019 aconteceu a fase final do InterFatecs 2019. Para quem não sabe, o InterFatecs ou Maratona de Programação InterFatecs é a segunda maior competição do país nos moldes do ICPC. Neste ano, a fase final aconteceu em Ourinhos - SP com 170 alunos de 37 Fatecs de todo o estado, em que a Fatec de Ribeirão Preto garantiu duas equipes no #Top10.]]></summary></entry><entry><title type="html">Changelog • edcaraujo (3991ad2)</title><link href="http://edcaraujo.com/blog/changelog/2019/09/08/changelog-edcaraujo-3991ad2.html" rel="alternate" type="text/html" title="Changelog • edcaraujo (3991ad2)" /><published>2019-09-08T00:00:00-03:00</published><updated>2019-09-08T00:00:00-03:00</updated><id>http://edcaraujo.com/blog/changelog/2019/09/08/changelog-edcaraujo-3991ad2</id><content type="html" xml:base="http://edcaraujo.com/blog/changelog/2019/09/08/changelog-edcaraujo-3991ad2.html"><![CDATA[<p>Ah, sim. Finalmente. Como prometido, a partir do <em>commit</em> <a href="https://github.com/edcaraujo/edcaraujo/commit/3991ad251a3adf8613c0361e1e66dac0b9792efe">3991ad2</a> venho disponibilizando alguns conteúdos dos meus <em>backups</em> dos <em>backups</em> dos <em>backups</em>, como provavelmente você deve ter também (eu acho). Além de uma organização geral do site, uma preparação para os conteúdos que ainda virão, disponibilizei boa parte do material (tudo que encontrei até agora) do projeto da <a href="/projetos/isbdesigner">isbdesigner</a>.</p>

<p>A <a href="/projetos/isbdesigner/">isbdesigner</a> é o resultado do meu trabalho de mestrado no laboratório <a href="telemidia.puc-rio.br/">TeleMídia</a> da <a href="http://www.puc-rio.br/">PUC-Rio</a> sob orientação do <a href="http://www.telemidia.puc-rio.br/~lfgs/">Prof. Luiz Fernando Gomes Soares</a>. A ferramenta procura facilitar o projeto e criação de aplicações interativas para a TV digital através de <strong>storyboards interativos</strong>. Com isso, deixei público <a href="/projetos/isbdesigner/#apresentações">apresentações</a> e organizei os <a href="/projetos/isbdesigner/#downloads"><em>downloads</em></a> (logos, modelos etc.), que em algum momento se tornaram indisponíveis.</p>

<p>Sempre foi um projeto que adorei trabalhar e ainda vejo potencial de evolução da ferramenta. Cheguei a pincelar tópicos relacionados à aplicações <a href="https://pt.wikipedia.org/wiki/Transmídia">transmidiáticas</a> durante o início do doutorado nesse sentido, mas acabou tomando outros caminhos até o projeto estacionar. Espero que seja útil de alguma forma e, agora que as bases estão estabelecidas, nova publicações seguirão em um ritmo forte.</p>

<p>Qualquer dúvida ou sugestão, por favor, aguardo o seu comentário.</p>

<p>Até mais.</p>]]></content><author><name></name></author><category term="blog" /><category term="changelog" /><category term="site" /><category term="edcaraujo" /><category term="isbdesigner" /><summary type="html"><![CDATA[Ah, sim. Finalmente. Como prometido, a partir do commit 3991ad2 venho disponibilizando alguns conteúdos dos meus backups dos backups dos backups, como provavelmente você deve ter também (eu acho). Além de uma organização geral do site, uma preparação para os conteúdos que ainda virão, disponibilizei boa parte do material (tudo que encontrei até agora) do projeto da isbdesigner.]]></summary></entry><entry><title type="html">Novas mudanças à frente</title><link href="http://edcaraujo.com/blog/rotina/2019/08/20/novas-mudancas-a-frente.html" rel="alternate" type="text/html" title="Novas mudanças à frente" /><published>2019-08-20T00:00:00-03:00</published><updated>2019-08-20T00:00:00-03:00</updated><id>http://edcaraujo.com/blog/rotina/2019/08/20/novas-mudancas-a-frente</id><content type="html" xml:base="http://edcaraujo.com/blog/rotina/2019/08/20/novas-mudancas-a-frente.html"><![CDATA[<p>Já faz algum tempo desde a última vez que fiz alguma postagem ou mudança crítica no site. Bom, isso chega ao fim hoje. Na verdade, tenho diversos planos para o futuro do site, especialmente para o blog. Assim, pretendo compartilhar novidades da minha rotina, dicas, tutoriais, artigos, notícias etc.</p>

<p>No entanto, o primeiro passo para isso é completar as lacunas do site. Mesmo para os conteúdos já disponíveis no site, existem várias informações ainda não publicadas, especialmente relacionadas aos projetos, seja apresentações, documentos, links, releases, demos etc. Normalmente essas lacunas estão identificadas pelo o texto abaixo:</p>

<blockquote>
  <p>Meu <a href="https://pt.wikipedia.org/wiki/Especial:Aleat%C3%B3ria"><i class="fas fa-dog"></i></a> comeu esta seção. :)</p>
</blockquote>

<p>A mensagem que quero passar com o lembrete é que há conteúdo para publicar ali, porém ainda está sendo organizado, formatado ou coletado. Para quem já tentou, clicar no <a href="https://pt.wikipedia.org/wiki/Especial:Aleat%C3%B3ria"><i class="fas fa-dog"></i></a> leva você diretamente para um artigo aleatório no <a href="https://pt.wikipedia.org/">Wikipedia</a>. É uma tentativa de encontrar um conteúdo interessante até disponibilizar o meu :).</p>

<p>De qualquer forma, o recado que fica é que nas próximas semana vários conteúdos serão disponibilizados e pretendo manter essa rotina, tirando algumas coisas da gaveta.</p>

<p>Até lá.</p>]]></content><author><name></name></author><category term="blog" /><category term="rotina" /><category term="site" /><category term="edcaraujo" /><summary type="html"><![CDATA[Já faz algum tempo desde a última vez que fiz alguma postagem ou mudança crítica no site. Bom, isso chega ao fim hoje. Na verdade, tenho diversos planos para o futuro do site, especialmente para o blog. Assim, pretendo compartilhar novidades da minha rotina, dicas, tutoriais, artigos, notícias etc.]]></summary></entry><entry><title type="html">Compilando o NCL Composer com o Qt Creator e CMake no Ubuntu</title><link href="http://edcaraujo.com/blog/tutoriais/2017/01/17/compilando-o-ncl-composer-com-o-qt-creator-e-cmake-no-ubuntu.html" rel="alternate" type="text/html" title="Compilando o NCL Composer com o Qt Creator e CMake no Ubuntu" /><published>2017-01-17T00:00:00-02:00</published><updated>2017-01-17T00:00:00-02:00</updated><id>http://edcaraujo.com/blog/tutoriais/2017/01/17/compilando-o-ncl-composer-com-o-qt-creator-e-cmake-no-ubuntu</id><content type="html" xml:base="http://edcaraujo.com/blog/tutoriais/2017/01/17/compilando-o-ncl-composer-com-o-qt-creator-e-cmake-no-ubuntu.html"><![CDATA[<p>Para quem acompanha o <a href="https://github.com/telemidia/nclcomposer">repositório</a> do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a> já deve estar sabendo que aos pouco estamos migrando o nosso sistema de <em>build</em> para o <a href="https://cmake.org/">CMake</a> (thanks to <a href="http://www.telemidia.puc-rio.br/~robertogerson/">@robertogerson</a>). A maior parte dos benefícios, por enquanto, estão relacionados com a geração dos <em>releases</em> e com os sistemas de integração contínua, detalhes que não vou tratar aqui.</p>

<p>Dessa forma, recomendamos que todos aqueles que estão desenvolvendo, estudando, brincando ou passando um tempo com o NCL Composer, que <strong>migrem</strong> para o CMake. Nossa intenção é aos poucos remover completamente os arquivos de projeto do <em>qmake</em> (.pro). Então, para não ser pego de surpresa, aproveite as dicas deste <em>post</em> e dê as boas vindas ao CMake.</p>

<p>Antes de continuar, quero alertar que este <em>post</em> é do interesse daqueles que querem ou estão trabalhando no <strong>desenvolvimento</strong> do NCL Composer ou de <em>plugins</em> para o mesmo. Caso esteja interessado apenas em utilizar o NCL Composer, visite a página oficial do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a> para fazer o <a href="http://composer.telemidia.puc-rio.br/en/download">download</a> da <em>release</em> mais recente. Mas, mesmo que você seja apenas um curioso, é bem-vindo a ficar por aqui.</p>

<p>Outro detalhe é que neste <em>post</em> tratarei somente dos detalhes envolvendo o Ubuntu (<strong>Linux</strong>). Prometo fazer um <em>post</em> semelhante para o <strong>Windows</strong> e, quem sabe, <strong>macOS</strong>. Caso esteja interessado em adiantar alguma informação com relação aos outros SO, deixe um comentário ou entre <a href="/#contato">em contato</a>.</p>

<p>Como referência, estou utilizando: <strong>Ubuntu 16.04 LTS</strong>, <strong>Qt 5.7</strong>, <strong>Qt Creator 4.0.2</strong> e <strong>CMake 3.5.1</strong>.</p>

<p>Ótimo! Agora chegou a hora de colocar a mão na massa. :)</p>

<p>Nossa tarefa será dividida em <strong>4</strong> etapas:</p>

<ul>
  <li><a href="#download-das-depend%c3%aancias">Download das dependências</a></li>
  <li><a href="#download-do-c%c3%b3digo">Download do código</a></li>
  <li><a href="#configura%c3%a7%c3%a3o-do-projeto">Configuração do Projeto</a></li>
  <li><a href="#configura%c3%a7%c3%a3o-da-execu%c3%a7%c3%a3o">Configuração da execução</a></li>
</ul>

<p>Como deve ter percebido pelos tópicos, <strong>não</strong> estou considerando que o código do NCL Composer tenha sido <strong>baixado</strong>, ou seja, que você é um desenvolvedor antigo do projeto. Se esse é o caso, lembre-se de <strong>desinstalar</strong> a versão atual, <strong>limpar</strong> os arquivos gerados a partir da compilação anterior e <strong>atualizar</strong> o código. Para isso, primeiramente, <strong>navegue</strong> para diretório onde o código do NCL Composer está localizado. Faça isso através do comando abaixo.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd /path/to/nclcomposer/
</code></pre></div></div>

<p>Lembre-se de <strong>substituir</strong> o <code class="language-plaintext highlighter-rouge">'/path/to/nclcomposer'</code> pelo <strong>caminho</strong> correto no seu ambiente. No meu caso, por exemplo, eu executei comando da seguinte forma:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd /home/edcaraujo/Workspace/cpp/nclcomposer/
</code></pre></div></div>

<p>Em seguida, execute os comandos para <strong>limpeza</strong> e <strong>atualização</strong> do código conforme descritos abaixo.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo make uninstall
sudo make clean
sudo make distclean

git pull
</code></pre></div></div>

<p>Feito isso, sendo você um desenvolvedor <strong>antigo</strong>, podemos pular diretamente para <a href="#configuração-do-projeto">terceira etapa</a>.</p>

<h2 id="download-das-dependências">Download das dependências</h2>

<p>Para baixar e compilar o NCL Composer é preciso instalar o <a href="https://git-scm.com/">Git</a> e <a href="https://www.qt.io/">Qt</a>. Porém, para fazer valer o próposito deste <em>post</em>, também precisaremos do <a href="https://www.qt.io/ide/">Qt Creator</a> e do <a href="https://cmake.org/">CMake</a>. Assim, abra um terminal e execute o seguinte comando:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get -y install git qt5 qtcreator cmake
</code></pre></div></div>

<p>Terminado a instalação já podemos ir para a <a href="#download-do-código">próxima etapa</a>.</p>

<p>Para mais detalhes sobre as dependências acesse a página oficial do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a>.</p>

<h2 id="download-do-código">Download do código</h2>

<p>O código do NCL Composer está hopedado no <a href="https://github.com/telemidia/nclcomposer">GitHub</a>. Portanto, para baixar o código, abra um terminal e execute o seguinte comando:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/telemidia/nclcomposer.git
</code></pre></div></div>

<p>Lembre-se de guardar o local em que você está baixando o código. Usaremos essa informação nas próximas etapas.</p>

<h2 id="configuração-do-projeto">Configuração do Projeto</h2>

<p>Para configurar o projeto, primeiro devemos importá-lo para o Qt Creator. Para importar o projeto, abra o Qt Creator e siga para o <strong>menu</strong> <code class="language-plaintext highlighter-rouge">File</code> &gt; <code class="language-plaintext highlighter-rouge">Open File or Project...</code> (Figura 1).</p>

<p><img src="/images/posts/d3d3ee634288f7b291e5f69a3dc8a2cb.png" alt="Abrindo o NCL Composer com o Qt Creator" /></p>

<p><em>Figura 1 - Abrindo o NCL Composer com o Qt Creator</em></p>

<p>Após clicar o menu <code class="language-plaintext highlighter-rouge">File</code> &gt; <code class="language-plaintext highlighter-rouge">Open File or Project...</code> o Qt Creator irá abrir uma janela para seleção do arquivo. <strong>Selecione</strong> o arquivo <code class="language-plaintext highlighter-rouge">CMakeList.txt</code> na raiz do projeto do NCL Composer (Figura 2) e clique em <code class="language-plaintext highlighter-rouge">Open</code>. O arquivo <code class="language-plaintext highlighter-rouge">CMakeList.txt</code> é o arquivo de projeto do CMake.</p>

<p><img src="/images/posts/971b865d634a8dc937d52005e7026d4f.png" alt="Abrindo o NCL Composer com o Qt Creator (Diálogo)" /></p>

<p><em>Figura 2 - Abrindo o NCL Composer com o Qt Creator (Diálogo)</em></p>

<p>Com isso terminamos de importar o projeto. Agora vamos ao próximo passo, a <strong>configuração</strong> do projeto de fato. Logo após abrir o arquivo <code class="language-plaintext highlighter-rouge">CMakeList.txt</code> o Qt Creator irá apresentar a aba de Configuração de Projeto (Figura 3).</p>

<p><img src="/images/posts/392d47ae1e70f97c7cb34b03cd509a9f.png" alt="Configurando o NCL Composer no Qt Creator" /></p>

<p><em>Figura 3 - Configurando o NCL Composer no Qt Creator</em></p>

<p>Clique em <code class="language-plaintext highlighter-rouge">Details</code> para visualizar todas as configuração de <em>build</em> (Figura 4).</p>

<p><img src="/images/posts/ea42b79a76fad5872690cef8e79f9001.png" alt="Configurando o NCL Composer no Qt Creator (Detalhes)" /></p>

<p><em>Figura 4 - Configurando o NCL Composer no Qt Creator (Detalhes)</em></p>

<p>Em cada uma das configurações (<em>Default</em>, <em>Debug</em>, <em>Release</em>, etc.) <strong>altere</strong> o diretório de <em>build</em>. No nosso caso, vamos alterar a parte final de cada caminho para <code class="language-plaintext highlighter-rouge">'/nclomposer/build'</code>, ou seja, o local onde você baixou o código na <a href="#download-do-código">etapa anterior</a> + <code class="language-plaintext highlighter-rouge">'/nclomposer/build'</code>. Assim, no meu caso, por exemplo, alterarei o diretório de <em>build</em> de cada uma das configurações para:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/home/edcaraujo/Workspace/cpp/nclcomposer/build
</code></pre></div></div>

<p>Feito isso (Figura 5), clique em <code class="language-plaintext highlighter-rouge">Configure Project</code> pra finalizar. É importante dizer que estamos fazer isso por simplicidade, dado que o correto é manter um diretório de <em>build</em> diferente para cada configuração.</p>

<p><img src="/images/posts/252abadf9bbd43191336592a7b5e5b49.png" alt="Configurando o NCL Composer no Qt Creator (Nova Configuração)" /></p>

<p><em>Figura 5 - Configurando o NCL Composer no Qt Creator (Nova Configuração)</em></p>

<p>Uma vez finalizado, os arquivos do projeto são listados (Figura 6) e estamos prontos para brincar com o código. Porém, antes que a diversão comece é interessante que compilemos o código para saber se está tudo certo.</p>

<p><img src="/images/posts/89fd05ce5a811ea0aa4234f7faecf929.png" alt="Configurando o NCL Composer no Qt Creator (Resultado)" /></p>

<p><em>Figura 6 - Configurando o NCL Composer no Qt Creator (Resultado)</em></p>

<p>Para <strong>compilar</strong> basta clicar no ícone de <em>build</em> (Figura 7) na barra de ferramentas do Qt Creator. Outra forma é usar o atalho <code class="language-plaintext highlighter-rouge">ctrl</code>+<code class="language-plaintext highlighter-rouge">b</code>.</p>

<p><img src="/images/posts/c5fe3b45de0286a98937dd7da2b7f171.png" alt="Compilando o NCL Composer com o Qt Creator" /></p>

<p><em>Figura 7 - Compilando o NCL Composer com o Qt Creator</em></p>

<p>Passado alguns minutos a compilação deve terminar. Depois disso podemos executar o NCL Composer e nossa tarefa estará concluída. Portanto, vamos para <a href="#configuração-da-execução">última etapa</a>!</p>

<h2 id="configuração-da-execução">Configuração da execução</h2>

<p>De forma resumida, o que vamos fazer aqui é dizer para o Qt Creator onde está localizado o binário gerado a partir da compilação. Para fazermos isso, clicamos em <code class="language-plaintext highlighter-rouge">Project</code> na barra de ferramentas do NCL Composer (Figura 8). Em seguida, selecionamos a aba <code class="language-plaintext highlighter-rouge">Run</code> e alteramos o <code class="language-plaintext highlighter-rouge">Working directory</code> para o local na qual o binário é gerado.</p>

<p><img src="/images/posts/ae37b64c77a7e50fc92d3d44600a35df.svg" alt="Configurando a Execução do NCL Composer" /></p>

<p><em>Figura 8 - Configurando a Execução do NCL Composer</em></p>

<p>O caminho para binário será <code class="language-plaintext highlighter-rouge">'/path/to/build'</code> + <code class="language-plaintext highlighter-rouge">'/bin'</code>. O <code class="language-plaintext highlighter-rouge">'/path/to/build'</code> foi o que definimos na <a href="#configuração-do-projeto">etapa anterior</a>. Portanto, no meu caso, devo <strong>alterar</strong> o <code class="language-plaintext highlighter-rouge">Working directory</code> para:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/home/edcaraujo/Workspace/cpp/nclcomposer/build/bin
</code></pre></div></div>

<p>Feito isso (Figura 9) estamos prontos para executar o NCL Composer.</p>

<p><img src="/images/posts/7139fe2d84f74b98a255fd889577822a.png" alt="Configurando a Execução do NCL Composer (Nova Configuração)" /></p>

<p><em>Figura 9 - Configurando a Execução do NCL Composer (Nova Configuração)</em></p>

<p>Para <strong>executar</strong> o NCL Composer basta clicar no ícone de <em>run</em> (Figura 10) na barra de ferramentas do Qt Creator. Outra forma mais fácil é usar o atalho <code class="language-plaintext highlighter-rouge">ctrl</code>+<code class="language-plaintext highlighter-rouge">r</code>.</p>

<p><img src="/images/posts/2b8c3cd71fed65488387f78ddcfb9617.svg" alt="Executando o do NCL Composer" /></p>

<p><em>Figura 10 - Executando o do NCL Composer</em></p>

<p><strong>Pronto!</strong> Terminamos a nossa tarefa. Agora é possível contribuir com o projeto ou desenvolver seu próprio <em>plugin</em>. Se estiver curioso em como contribuir ou criar um novo <em>plugin</em> é só acessar a página oficial do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a>.</p>

<p>Caso ainda restam dúvidas, comente ou entre em contato. Não precisa se limitar ao assunto deste <em>post</em>.</p>

<p>TV Digital de faz com Ginga! :)</p>]]></content><author><name></name></author><category term="blog" /><category term="tutoriais" /><category term="cmake" /><category term="qtcreator" /><category term="ubuntu" /><category term="c++" /><category term="qt" /><category term="authoring" /><category term="multimedia" /><category term="ginga" /><category term="ncl" /><category term="nclcomposer" /><category term="telemidia" /><category term="puc-rio" /><category term="digital tv" /><category term="plugins" /><summary type="html"><![CDATA[Para quem acompanha o repositório do NCL Composer já deve estar sabendo que aos pouco estamos migrando o nosso sistema de build para o CMake (thanks to @robertogerson). A maior parte dos benefícios, por enquanto, estão relacionados com a geração dos releases e com os sistemas de integração contínua, detalhes que não vou tratar aqui.]]></summary></entry><entry><title type="html">Changelog • nclcomposer (0.3.0)</title><link href="http://edcaraujo.com/blog/changelog/2016/10/20/changelog-nclcomposer-0.3.0.html" rel="alternate" type="text/html" title="Changelog • nclcomposer (0.3.0)" /><published>2016-10-20T00:00:00-02:00</published><updated>2016-10-20T00:00:00-02:00</updated><id>http://edcaraujo.com/blog/changelog/2016/10/20/changelog-nclcomposer-0.3.0</id><content type="html" xml:base="http://edcaraujo.com/blog/changelog/2016/10/20/changelog-nclcomposer-0.3.0.html"><![CDATA[<p>Há alguns dias a versão <code class="language-plaintext highlighter-rouge">0.3.0</code> do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a> está disponível para <a href="http://composer.telemidia.puc-rio.br/en/download">download</a>. Essa versão traz várias melhorias, especialmente no plugin da <strong>Visão Estrutural</strong>. As mudanças na Visão Estrutural vão desde elementos da interface até uma completa restruturação do código.</p>

<p><img src="/images/posts/ad70e185481cb44b00eb66e29f336970.png" alt="Nova Visão Estrutural no NCL Composer" /></p>

<p><em>Figura 1 - Nova Visão Estrutural no NCL Composer</em></p>

<p>Além de todas as funcionalidades da versão anterior, a nova Visão Estrutural inclui também:</p>

<ul>
  <li>suporte à <em>undo/redo</em>;</li>
  <li>suporte à organização automática das entidades da visão (esta opção está <strong>desabilitada</strong> por padrão);</li>
  <li>novos diálogos para criação e edição dos <code class="language-plaintext highlighter-rouge">&lt;link/&gt;</code>, <code class="language-plaintext highlighter-rouge">&lt;bind/&gt;</code>, <code class="language-plaintext highlighter-rouge">&lt;linkParam/&gt;</code> e <code class="language-plaintext highlighter-rouge">&lt;bindParam/&gt;</code>;</li>
  <li>barra de ferramentas para facilitar o acesso as funcinalidades da visão.</li>
</ul>

<h2 id="antes-e-depois">Antes e depois</h2>

<p><img src="/images/posts/a0b3e33f7e0ccc813b7b8ec157e0aa99.png" alt="Visão Estrutural (0.2.1) do NCL Composer" /></p>

<p><em>Figura 2 - Visão Estrutural (0.2.1) no NCL Composer</em></p>

<p><img src="/images/posts/129fe989c18a3ae95720b17918973a6e.png" alt="Visão Estrutural (0.3.0) do NCL Composer" /></p>

<p><em>Figura 3 - Visão Estrutural (0.3.0) no NCL Composer</em></p>

<p>Através das figuras acima é possível observar algumas das mudanças trazidas pela nova versão da Visão Estrutual. Além da barra de ferramentas, mencionada anteriormente, a partir das figuras é possível identificar também uma nova organização do menu contextual e a utilização de novos ícones para algumas das entidades.</p>

<p>Existem ainda outras novidades, então, para entender melhor as mudanças entre as versões, abaixo são detalhadas como algumas tarefas eram realizadas na versão <code class="language-plaintext highlighter-rouge">0.2.1</code> e como são realizadas agora na <code class="language-plaintext highlighter-rouge">0.3.0</code>.</p>

<ul>
  <li><a href="../../../../2016/10/20/nova-versao-da-visao-estrutural-do-ncl-composer.html#adicionando-entidades">Adicionando entidades</a></li>
  <li><a href="../../../../2016/10/20/nova-versao-da-visao-estrutural-do-ncl-composer.html#adicionando-relacionamentos">Adicionando relacionamentos</a></li>
</ul>

<h3 id="adicionando-entidades">Adicionando entidades</h3>

<p><img src="/images/posts/12e6548eefdcf0389c9b37e1fdaae90a.gif" alt="Adicionando Entidades com a Visão Estrutural (0.2.1) do NCL Composer" /></p>

<p><em>Figura 4 - Adicionando Entidades com a Visão Estrutural (0.2.1) no NCL Composer</em></p>

<p><img src="/images/posts/2fa1961ffa964bb41911077d5f6d3aea.gif" alt="Adicionando Entidades com a Visão Estrutural (0.3.0) no NCL Composer*" /></p>

<p><em>Figura 5 - Adicionando Entidades com a Visão Estrutural (0.3.0) no NCL Composer</em></p>

<p>A partir da barra de ferramentas, a versão <code class="language-plaintext highlighter-rouge">0.3.0</code> da Visão Estrutural possibilita a adição de novas entidades de maneira bem mais rápida. No caso da versão anterior, <code class="language-plaintext highlighter-rouge">0.2.1</code>, novas entidades só poderiam ser adicionadas por meio do menu contextual, exigindo do autor um número muito maior de interações para realizar, por exemplo, a tarefa de inserir uma nova mídia.</p>

<p>Além, da barra de ferramentas, a versão <code class="language-plaintext highlighter-rouge">0.3.0</code> permite que as entidades possam ser adicionadas também através de atalhos de teclado. Assim:</p>

<ul>
  <li>Tecla <code class="language-plaintext highlighter-rouge">3</code>: <img src="/images/extra/icons/cpricon/0.1.0/4637a12619bcd4f81eff1834a97738a0.png" alt="4637a12619bcd4f81eff1834a97738a0" /> - Adiciona uma mídia na entidade selecionada.</li>
  <li>Tecla <code class="language-plaintext highlighter-rouge">4</code>: <img src="/images/extra/icons/cpricon/0.1.0/767ac29f6853ae3196040c091f60bf80.png" alt="767ac29f6853ae3196040c091f60bf80" /> - Adiciona um contexto na entidade selecionada.</li>
  <li>Tecla <code class="language-plaintext highlighter-rouge">5</code>: <img src="/images/extra/icons/cpricon/0.1.0/e68a8264658b5f57356083f7d336dc75.png" alt="e68a8264658b5f57356083f7d336dc75" />- Adiciona um <em>switch</em> na entidade selecionada.</li>
  <li>Tecla <code class="language-plaintext highlighter-rouge">6</code>: <img src="/images/extra/icons/cpricon/0.1.0/655f1408b210b5c903ada389b3274592.png" alt="655f1408b210b5c903ada389b3274592" />- Adiciona um <em>body</em> no projeto.</li>
  <li>Tecla <code class="language-plaintext highlighter-rouge">7</code>: <img src="/images/extra/icons/cpricon/0.1.0/88436df97d2ccb07d88be134690f429a.png" alt="88436df97d2ccb07d88be134690f429a" />- Adiciona uma área na entidade selecionada.</li>
  <li>Tecla <code class="language-plaintext highlighter-rouge">8</code>: <img src="/images/extra/icons/cpricon/0.1.0/10c6724abbd112b4259d1370a80d7ba8.png" alt="10c6724abbd112b4259d1370a80d7ba8" /> - Adiciona uma propriedade na entidade selecionada.</li>
  <li>Tecla <code class="language-plaintext highlighter-rouge">9</code>: <img src="/images/extra/icons/cpricon/0.1.0/fe722af773e3379d04ffd2e1fbcd9f6d.png" alt="fe722af773e3379d04ffd2e1fbcd9f6d" /> - Adiciona uma porta na entidade selecionada.</li>
  <li>Tecla <code class="language-plaintext highlighter-rouge">0</code>: <img src="/images/extra/icons/cpricon/0.1.0/19bb5dbacbe287ba704b32cc2d229ab9.png" alt="19bb5dbacbe287ba704b32cc2d229ab9" /> - Adiciona uma porta de <em>switch</em> na entidade selecionada.</li>
</ul>

<p>Um detalhe especial, que vale tanto para a barra de ferramentas quanto para os atalhos, é que uma ação de adição pode ser <strong>ignorada</strong> caso nenhuma entidade esteja selecionada ou se a entidade selecionada não permitir adicionar como um de seus filhos entidades do tipo da ação. Por exemplo, se o autor seleciona uma mídia e aperta a tecla <code class="language-plaintext highlighter-rouge">4</code> a ação será ignorada, uma vez que o autor está tentando adicionar um contexto como filho de uma mídia. A exceção a essa regra é o <em>body</em>, que só será ignorado caso o projeto já contenha um outro <em>body</em>.</p>

<p>Para evitar qualquer erro nesse sentido, a nova Visão Estrutural desabilita botões na barra de ferramenta e remove atalhos de teclados conforme o tipo da entidade selecionada na visão.</p>

<p>Mesmo na adição de novas entidades através do menu contextual, existem diferenças entre as duas versões. No caso da versão <code class="language-plaintext highlighter-rouge">0.2.1</code>, sempre que uma nova entidade é adicionada através do menu contextual, ela é posicionada automaticamente no centro (ou no espaço livre mais próximo no centro) da entidade de destino, a entidade sob a qual o menu contextual foi exibido. Já na versão <code class="language-plaintext highlighter-rouge">0.3.0</code>, a entidade adicionada é posicionada nas mesmas coordenadas do menu contextual. Isso evita que o autor perca tempo procurando em que posição da entidade de destino a recém adicionada entidade foi posicionada.</p>

<h3 id="adicionando-relacionamentos">Adicionando relacionamentos</h3>

<p><img src="/images/posts/72cc6b3522ed622e18b28fa78468de87.gif" alt="Adicionando Relacionamentos com a Visão Estrutural (0.2.1) no NCL Composer" /></p>

<p><em>Figura 6 - Adicionando Relacionamentos com a Visão Estrutural (0.2.1) no NCL Composer</em></p>

<p><img src="/images/posts/8d79c8a4f54e556f9d574345a86d7e33.gif" alt="Adicionando Relacionamentos com a Visão Estrutural (0.3.0) no NCL Composer" /></p>

<p><em>Figura 7 - Adicionando Relacionamentos com a Visão Estrutural (0.3.0) no NCL Composer</em></p>

<p>A versão <code class="language-plaintext highlighter-rouge">0.3.0</code> traz novos atalhos para criar relacionamentos. Além de segurar tecla <code class="language-plaintext highlighter-rouge">Shift</code>, meio utilizado pela versão <code class="language-plaintext highlighter-rouge">0.2.1</code>, é possíver habilitar o modo de criação de <em>link</em> através da barra de ferramentas ou através da tecla <code class="language-plaintext highlighter-rouge">2</code>. Uma vez habilitado o modo de criação de <em>link</em>, o autor pode clicar na entidade de origem e arrastar o <em>mouse</em> até a entidade de destino, conforme figuras acima.</p>

<p>Assim que identificados as entidades de origem e destino, caso seja permitido criar um relaciomaneto entre essas entidades, uma caixa de diálogo será apresentada para finalizar o processo de criação do <em>link</em>. É justamente nessa caixa de diálogo que está mais uma novidade da versão <code class="language-plaintext highlighter-rouge">0.3.0</code>. Depois de selecionar o conector e os papeis (<em>role</em>) das entidades do relacionamento, na versão <code class="language-plaintext highlighter-rouge">0.3.0</code> o autor pode especificar desde já os valores dos parâmetros do <em>link</em> e dos <em>binds</em>. No caso da versão <code class="language-plaintext highlighter-rouge">0.2.1</code>, só é possível especificar os parâmetros do <em>link</em> e dos <em>binds</em> depois da criação do link através de uma outra caixa de diálogo. Observando alguns usuários durante o processo de autoria, frequentemente esses autores esqueciam de editar os parâmetros do <em>link</em> e dos <em>binds</em> na versão <code class="language-plaintext highlighter-rouge">0.2.1</code>.</p>

<p>Outro detalhe, transparente para usuário, é que a partir da versão <code class="language-plaintext highlighter-rouge">0.3.0</code> as informações dos conectores são carregados diretamente do núcleo do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a>. Isso evita alguns possíveis problemas de sincronização das informações dos conectores encontrados na versão <code class="language-plaintext highlighter-rouge">0.2.1</code>.</p>

<h2 id="conclusão">Conclusão</h2>

<p>A nova versão da Visão Estrutural traz várias novidades, boa parte delas discutidas neste artigo. Para os desenvolvedores as mudanças são ainda maiores, especialmente por conta da reestruturação e refatoração do código. São mais de 6000 linhas de código a menos do que a versão anterior.</p>

<p>O código da nova Visão Estrutural e de todo o projeto do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a> está disponívem em: <a href="https://github.com/telemidia/nclcomposer">https://github.com/telemidia/nclcomposer</a>.</p>

<p>É importante lembrar que o <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a> ainda está em versão beta, então <em>bugs</em> ainda podem ser encontrados. Para reportar algum problema, entre em contato através do email [nclcomposer-dev@googlegroups.com][nclcomposer-mail] ou acesse o <a href="http://composer.telemidia.puc-rio.br/">redmine</a> do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a>.</p>

<p>Para próxima versão, novas mudanças estão planejadas. Dentre elas está a remoção do <em>body</em> da Visão Estrutural. Tanto essa quanto outras mudanças podem ser acompanhadas também pelo <a href="http://composer.telemidia.puc-rio.br/">redmime</a> do <a href="http://composer.telemidia.puc-rio.br/">NCL Composer</a>.</p>]]></content><author><name></name></author><category term="blog" /><category term="changelog" /><category term="c++" /><category term="qt" /><category term="authoring" /><category term="multimedia" /><category term="ginga" /><category term="ncl" /><category term="nclcomposer" /><category term="telemidia" /><category term="puc-rio" /><category term="digital tv" /><category term="plugins" /><summary type="html"><![CDATA[Há alguns dias a versão 0.3.0 do NCL Composer está disponível para download. Essa versão traz várias melhorias, especialmente no plugin da Visão Estrutural. As mudanças na Visão Estrutural vão desde elementos da interface até uma completa restruturação do código.]]></summary></entry></feed>