<?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>seiti.eti.br &#187; software</title>
	<atom:link href="http://seiti.eti.br/blog/cat/software/feed" rel="self" type="application/rss+xml" />
	<link>http://seiti.eti.br/blog</link>
	<description>Programação e cacarecos tecnológicos</description>
	<lastBuildDate>Fri, 11 Nov 2011 21:14:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Cache e camadas no ArcGIS Server</title>
		<link>http://seiti.eti.br/blog/2010/cache-camadas-no-arcgis-server</link>
		<comments>http://seiti.eti.br/blog/2010/cache-camadas-no-arcgis-server#comments</comments>
		<pubDate>Mon, 08 Feb 2010 19:59:30 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[arcgis]]></category>
		<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=956</guid>
		<description><![CDATA[Estou trabalhando com o ArcGIS Server 9.3.1 e tenho de inserir alguns serviços nele. Cada serviço corresponde à uma camada, ou  layer, em meu mapa. Para melhorar o  desempenho &#8211; sofrível se comparado com o MapServer &#8211; existe uma opção &#8230; <a href="http://seiti.eti.br/blog/2010/cache-camadas-no-arcgis-server">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estou trabalhando com o ArcGIS Server 9.3.1 e tenho de inserir alguns serviços nele. Cada serviço corresponde à uma camada, ou <em> layer</em>, em meu mapa.</p>
<p>Para melhorar o  desempenho &#8211; sofrível se comparado com o <a href="http://mapserver.org/">MapServer</a> &#8211; existe uma opção para a utilização de <em>cache</em> no ArcGIS Server que funciona bem. Ao invés do servidor ter de reconstruir a imagem, toda vez que ela é requisitada, ele gera esta imagem apenas uma vez, grava em algum lugar e depois apenas a repassa para o servidor de aplicação.</p>
<p>Isto gerou um problema. Quando as imagens era geradas dinamicamente, havia a possibilidade do ArcGIS Server reprojetar e/ou reposicionar o mapa para  combiná-la com todos os layers.  Se um serviço usa EPSG:<a href="http://spatialreference.org/ref/epsg/4618/">4618</a> e outro usa <a href="http://spatialreference.org/ref/sr-org/95/">SR-ORG:95</a>,  por exemplo. Mas com o uso do cache, a imagem criada possui apenas o sistema de referenciamento definida no serviço, não podendo mudar.</p>
<p>Assim, ao combinar dois layers cujos sistemas de referenciamento espacial são diferentes, temos as seguintes situações:</p>
<ul>
<li>Os dois layers são dinâmicos:  um sistema é escolhido e os dois layers utilizam este;</li>
<li>Um dos layers é dinâmico e o outro possui cache: o dinâmico é projetado/adaptado ao sistema do que tem cache;</li>
<li>Os dois layers usam cache: apenas um deles é exibido. Não há reprojeção.</li>
</ul>
<p>O ideal então é manter um único sistema de referenciamento espacial nos serviços. E aproveitar para deixar todos no <a href="http://seiti.eti.br/blog/2010/sirgas-2000">SIRGAS2000</a>.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/arcgis-javascript-dojo-e-o-metodo-require" rel="bookmark" title="16 de setembro de 2009">ArcGIS Javascript, Dojo e o método require</a></li>
<li><a href="http://seiti.eti.br/blog/2010/sirgas-2000" rel="bookmark" title="27 de janeiro de 2010">SIRGAS 2000</a></li>
<li><a href="http://seiti.eti.br/blog/2010/sistema-de-referenciamento-espacial" rel="bookmark" title="18 de janeiro de 2010">Sistema de Referenciamento Espacial</a></li>
<li><a href="http://seiti.eti.br/blog/2008/sig-sistema-de-informacao-geografica" rel="bookmark" title="23 de abril de 2008">SIG &#8211; Sistema de Informação Geográfica</a></li>
</ul>
<p><!-- Similar Posts took 6.736 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2010/cache-camadas-no-arcgis-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArcSDE e MS SQL Server 2008</title>
		<link>http://seiti.eti.br/blog/2009/arcsde-e-ms-sql-server-2008</link>
		<comments>http://seiti.eti.br/blog/2009/arcsde-e-ms-sql-server-2008#comments</comments>
		<pubDate>Fri, 23 Oct 2009 18:32:09 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=845</guid>
		<description><![CDATA[O ArcSDE é um produto da ESRI que consiste-se em uma camada sobre bancos de dados relacionais, tornando-os capazes, se já não forem, de manipular informações geograficamente referenciadas, ou dados geo. O MS SQL Server 2008 é o banco de &#8230; <a href="http://seiti.eti.br/blog/2009/arcsde-e-ms-sql-server-2008">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.esri.com/software/arcgis/arcsde/"><strong>ArcSDE</strong> </a>é um produto da <strong>ESRI</strong> que consiste-se em uma camada sobre bancos de dados relacionais, tornando-os capazes, se já não forem, de manipular informações geograficamente referenciadas, ou dados <em>geo</em>.</p>
<p>O MS SQL Server 2008 é o banco de dados relacionais da Microsoft.</p>
<p>A versão mais recente do ArcSDE, a 9.3, tornou possível utilizar o tipo de geometria nativa: o  &#8216;GEOMETRY&#8217; . Mas como configurar o sistema de forma a utilizá-lo?</p>
<p>Existe uma entrada no banco de dados que deve ser alterada. Ela se encontra na tabela <strong>sde.db_tune</strong>. Dê uma xeretada para verifcar seu conteúdo:</p>
<pre class="brush: sql; title: ; notranslate">
SELECT *
FROM sde.dbtune
WHERE
    keyword like 'DEFAULTS'    AND
    parameter_name like 'GEOMETRY_STORAGE'
</pre>
<p>A entrada que deve ser alterada é esta:</p>
<pre class="brush: sql; title: ; notranslate">
UPDATE sde.dbtune
SET config_string = 'GEOMETRY'
WHERE
    keyword like 'DEFAULTS'    AND
    parameter_name like 'GEOMETRY_STORAGE'
</pre>
<p>A listagem de tipos disponíneis em seus respectivos sistema pode ser obtido no <a href="http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=An_overview_of_feature_geometry_and_raster_data_storage">help do ArcSDE</a>.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2010/inserindo-registro-geoespaciais-arcsde-e-sql-server" rel="bookmark" title="10 de março de 2010">Inserindo registros geoespaciais: ArcSDE e SQL Server</a></li>
<li><a href="http://seiti.eti.br/blog/2010/funcoes-geoespaciais-do-ms-sql-server-2008" rel="bookmark" title="12 de março de 2010">Funções Geoespaciais do MS SQL Server 2008</a></li>
<li><a href="http://seiti.eti.br/blog/2008/sig-sistema-de-informacao-geografica" rel="bookmark" title="23 de abril de 2008">SIG &#8211; Sistema de Informação Geográfica</a></li>
<li><a href="http://seiti.eti.br/blog/2009/upgrade-no-postgis" rel="bookmark" title="11 de agosto de 2009">Upgrade no PostGIS</a></li>
</ul>
<p><!-- Similar Posts took 5.436 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/arcsde-e-ms-sql-server-2008/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Regulamentação de profissões na área de TI</title>
		<link>http://seiti.eti.br/blog/2009/regulamentacao-de-profissoes-na-area-de-ti</link>
		<comments>http://seiti.eti.br/blog/2009/regulamentacao-de-profissoes-na-area-de-ti#comments</comments>
		<pubDate>Wed, 29 Jul 2009 00:11:36 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[pensamento]]></category>
		<category><![CDATA[texto]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=750</guid>
		<description><![CDATA[Há alguns dias recebi por email um link apontando para um projeto de lei (PLS - PROJETO DE LEI DO SENADO, Nº 607 de 2007)tramitando em nosso senado. O texto inicial é de autoria do senador Expedito Júnior,  com relatórios subseqüentes por &#8230; <a href="http://seiti.eti.br/blog/2009/regulamentacao-de-profissoes-na-area-de-ti">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Há alguns dias recebi por email um link apontando para um <a href="http://www.senado.gov.br/sf/atividade/Materia/Detalhes.asp?p_cod_mate=82918">projeto de lei (PLS - PROJETO DE LEI DO SENADO, Nº 607 de 2007)</a>tramitando em nosso senado. O texto inicial é de autoria do senador <a href="http://www.senado.gov.br/sf/senadores/senadores_institucional.asp?leg=a&amp;codparl=1189">Expedito Júnior</a>,  com relatórios subseqüentes por <a href="http://www.senado.gov.br/sf/senadores/senadores_institucional.asp?leg=a&amp;codparl=3400">Eduardo Azeredo</a> e <a href="http://www.senado.gov.br/sf/senadores/senadores_institucional.asp?leg=a&amp;codparl=4535">Marconi Perillo</a>.</p>
<p>Meu ponto de vista, <a href="http://tisimples.wordpress.com/2009/07/28/contra-a-regulamentacao-da-profissao-de-analista-de-sistemas/">compartilhada</a> <a href="http://pls607.wordpress.com/">por muitos</a>, é de que é uma lei desnecessária. Inútil.</p>
<p>Imagino que o objetivo do projeto de lei, ao regulamentar a área, seja de atribuir responsabilidades à alguns tipos de pessoas.  Para isso precisamos:</p>
<ol>
<li>identificar as responsabilidades;</li>
<li>identificar as pessoas.</li>
</ol>
<p>Estas <em>responsabilidades</em>,  ao menos até o <a href="http://legis.senado.gov.br/mate-pdf/62690.pdf">último texto</a>, são descritas como:</p>
<blockquote><p>É privativa de Analista de Sistemas a responsabilidade técnica por projetos e sistemas para processamento de dados, informática e automação, assim como a emissão de laudos, relatórios ou pareceres técnicos.</p></blockquote>
<p>E as <em>pessoas</em> descritas como (grifo meu):</p>
<blockquote><p>Art. 1º É livre, em todo o território nacional, o exercício das<br />
atividades de <strong>análise de sistemas</strong> e <strong>demais atividades relacionadas com a Informática</strong>, observadas as disposições desta Lei.</p></blockquote>
<p>O grande  problema é de tentar atribuir uma ampla gama de responsabilidades a um espectro imenso de profissionais.  Contornando este último  problema define-se <strong>Analista de Sistemas</strong>, profisisonal apto a exercer <strong>análise de sistemas</strong> e <strong>demais atividades relacionadas com a Informática</strong>,  como a pessoa formada nos cursos superiores de Análise de Sistemas, Ciência da Computação ou Processamento de Dados.</p>
<p>Isto não leva em conta muitas questões, levantadas por pessoas mais aptas que  nossos representantes no legislativo: a ACM, a IEEE e  a SBC, como cita <a href="http://blog.fragmental.com.br/2008/03/21/ainda-bem-que-estou-aqui/">Phillip Calçado</a>. O resultado a que chegaram:</p>
<blockquote><p>ACM e IEEE:</p>
<p>“ACM is opposed to the licensing of software engineers at this time because ACM believes it is premature and would not be effective at addressing the problems of software quality and reliability.</p></blockquote>
<blockquote><p>SBC:</p>
<p>1. Exercício da profissão de Informática deve ser livre e independer de diploma ou comprovação de educação formal.<br />
2. Nenhum conselho de profissão pode criar qualquer impedimento ou restrição ao princípio acima.<br />
3. A área deve ser Auto-Regulada.</p></blockquote>
<p>Sabemos que na prática esta lei não mudará nada, a não ser a necessidade de,  em orgãos públicos ou que prestam serviços ao governo,  existir algum Analista de Sistemas para assinar e se responsabilizar por um sistema de informação.</p>
<h3>Acredite, se quiser</h3>
<p>Muita gente clama pela lei e espera que ela seja selada, registrada, carimbada, avaliada, rotulada, aprovada. Acreditam que uma lei diferenciaria os profissionais entre competentes e não-competentes. Acreditam que é necessária uma lei para distinguir entre competentes e não-competentes. Acreditam que este é um bom modo de justificar o tempo e dinheiro gasto para se formarem.  Acreditam que empresas que não sabem contratar, vão passar a saber depois da lei.  Acreditam que seus salários vão subir. Acreditam que a profissão está banalizada, e este é um passo para torná-la séria.</p>
<p>É muita coisa para se acreditar.  Sinto muito, mas não acredito em nenhuma delas.  Acredito que  produzir melhor e com mais eficiência seja mais importante. Uma graduação não te garante isto. Uma <strong>boa graduação</strong> ajuda. Bastante. Ou inteligência, habilidade  e perseverança. Deixe o <strong>mercado </strong>separar o joio do trigo. Ele tem mais prática e competência neste jogo.</p>
<h3>Contramão</h3>
<p>Enquanto nossos políticos se preocupam em regulamentar uma profissão, há quem diga que ela <a href="http://www.codinghorror.com/blog/archives/001288.html">está morta</a>.  O <a href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf">controle é ilusão</a>, ao menos nos projetos que importam:</p>
<blockquote><p>Consistency and predictability are still desirable, but they haven’t ever been the most important things. For the past 40 years, for example, we’ve tortured ourselves over our inability to finish a software project on time and on budget. But as I hinted earlier, this never should have been the supreme goal. The more important goal is transformation, creating software that changes the world or that transforms a company or how it does business. We’ve been rather successful at transformation, often while operating outside our control envelope. Software development is and always will be somewhat experimental.</p></blockquote>
<p>Regulamentar, controlar, guiar. Parece não ser o caminho para obtermos melhores resultados.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/portingles" rel="bookmark" title="29 de janeiro de 2009">Portinglês</a></li>
<li><a href="http://seiti.eti.br/blog/2009/ajudando-o-proximo-com-o-kiva" rel="bookmark" title="8 de outubro de 2009">ajudando o próximo com o Kiva</a></li>
<li><a href="http://seiti.eti.br/blog/2009/programar-e-arte" rel="bookmark" title="17 de setembro de 2009">Programar é arte</a></li>
<li><a href="http://seiti.eti.br/blog/2008/so-long-and-thanks-for-all-the-fish" rel="bookmark" title="8 de agosto de 2008">So long, and thanks for all the fish!</a></li>
</ul>
<p><!-- Similar Posts took 5.200 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/regulamentacao-de-profissoes-na-area-de-ti/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>DSpace em um CentOS 5.3</title>
		<link>http://seiti.eti.br/blog/2009/dspace-em-um-centos-5-3</link>
		<comments>http://seiti.eti.br/blog/2009/dspace-em-um-centos-5-3#comments</comments>
		<pubDate>Wed, 15 Jul 2009 03:58:19 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=677</guid>
		<description><![CDATA[Novamente estou eu implantando o DSpace em um servidor Linux, desta vez um CentOS 5.3, um sistema operacional baseado nos pacotes disponibilizados pelo Red Hat Linux. Mas desta vez é a versão 1.5, ao invés da 1.4. Hora de desbravar &#8230; <a href="http://seiti.eti.br/blog/2009/dspace-em-um-centos-5-3">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Novamente estou eu implantando o DSpace em um servidor Linux, desta vez um CentOS 5.3, um sistema operacional baseado nos pacotes disponibilizados pelo Red Hat Linux. Mas desta vez é a versão 1.5, ao invés da 1.4. Hora de desbravar <a href="http://seiti.eti.br/blog/2009/resolvendo-o-problema-da-busca-no-dspace">novos</a> <a href="http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace">bugs</a>&#8230;</p>
<p>O <a href="http://www.dspace.org">DSpace</a> é uma biblioteca digital, mas pode ser encarado como uma ferramenta de gestão de documentos eletrônicos. No entanto sua construção tem como objetivo organizar e tornar acessível material técnico e científico, que por sua vez são incluídos no sistema pelos próprios autores (<em>self-archiving</em>).</p>
<p>Da versão 1.4 para a versão 1.5 ocorreram inúmeras mudanças. Dentre elas a adoção do Maven, para tratar das dependências de bibliotecas Java, e o estabelecimento de uma interface XML/XSLT denominada Manakin, embora a antiga interface em JSP continue sendo distribuído e funcionando.</p>
<p>Relato aqui então particularidades da instalação com relação ao CentOS. Detalhes e uma melhor descrição da instalação podem ser vistos na <a href="http://www.dspace.org/1_5_2Documentation/">documentação oficial</a>.</p>
<p><span id="more-677"></span></p>
<p>Primeiro é necessário ter um ambiente Java. Optei pelo OpenJDK mesmo, pela facilidade de instalação e atualização. Não vi necessidade em utilizar o Sun JDK. Diferente dos Debian e Ubuntus da vida, a família Red Hat utiliza o <strong>yum</strong> para gerenciar seus pacotes. Mas seu uso é bem intuitivo para quem está acostumado com o <em>apt-get</em>:</p>
<pre class="prettyprint">yum search jdk
yum install java-1.6.0-openjdk.i386</pre>
<p>Após instalado lembre-se de verificar se tudo correu bem:</p>
<pre class="prettyprint">java -version</pre>
<blockquote><p>java version &#8220;1.6.0&#8243;<br />
OpenJDK  Runtime Environment (build 1.6.0-b09)<br />
OpenJDK Client VM (build 1.6.0-b09, mixed mode)</p></blockquote>
<p>Java instalado, vamos colocar no ar o banco de dados PostgreSQL:</p>
<pre class="prettyprint">yum search postgres
yum install postgresql-server.i386
yum install postgresql.i386</pre>
<pre class="prettyprint">service postgresql start</pre>
<p>Os arquivos de configuração do PostgreSQL ficam em <tt>/var/lib/pgsql/data/</tt>.</p>
<p>Para criar um usuário dspace e configurar sua senha no CentOS:</p>
<pre class="prettyprint">useradd dspace
passwd dspace</pre>
<p>Vamos agora habilitar o sudo para o usuário dspace, pois não gosto de ter de logar como root a todo momento</p>
<pre class="prettyprint">visudo</pre>
<p>Incluindo a seguinte linha. Estas permissões podem ser restringidas depois:</p>
<blockquote><p>dspace  ALL=(ALL)	ALL</p></blockquote>
<p>Testando o novo usuário dspace e seu acesso ao <strong>sudo</strong>:</p>
<pre class="prettyprint">su - dspace
sudo touch bla</pre>
<p>Infelizmente, ao testar o sudo, surgiu este erro:</p>
<blockquote><p>Erro: sudo must setuid root</p></blockquote>
<p>Esquisito&#8230; Parece que não configuraram direito o sudo na distribuição do CentOS. O que ocorre é que eu não podia sequer executar o binário. Resolvido com o comando</p>
<pre class="prettyprint">chmod 4111 /usr/bin/sudo</pre>
<p>Agora instalemos o <strong>tomcat</strong>:</p>
<pre class="prettyprint">yum install tomcat5</pre>
<p>Voltando um pouco ao banco de dados. Agora que temos o usuário no CentOS, vamos definir um banco de dados para ele, com as permissões necessárias.</p>
<pre class="prettyprint">root# createuser -U postgres -d -A -P dspace
dspace$ createdb -U dspace -E UNICODE dspace</pre>
<p>Não esquecer de editar o arquivo  <tt>/var/lib/pgsql/data/postgresql.conf</tt> neste trecho, habilitando o acesso via TCP:</p>
<blockquote><p>listen_addresses = &#8216;localhost&#8217;<br />
port = 5432</p></blockquote>
<p>E o arquivo <tt>/var/lib/pgsql/data/pg_hba.conf</tt>, possibilitando o acesso de usuários locais mediante senha com hash em MD5:</p>
<blockquote><p>host    all         all         127.0.0.1/32          md5</p></blockquote>
<h3>Maven 2</h3>
<p>Agora vamos baixar o Maven 2 e instalá-lo. Desta vez temos de deixar de lado o yum e suas facilidades:</p>
<pre class="prettyprint">wget http://linorg.usp.br/apache/maven/binaries/apache-maven-2.2.0-bin.zip
unzip apache-maven-2.2.0-bin.zip
sudo cp -R apache-maven-2.2.0 /usr/local/
ln -s /usr/local/apache-maven-2.2.0 /usr/local/maven</pre>
<p>Edite o <tt>~/.bashrc</tt> com o seguinte conteúdo, definindo algumas variáveis de ambiente para facilitar sua vida:</p>
<blockquote><p>export M2_HOME=/usr/local/maven<br />
export PATH=${M2_HOME}/bin:${PATH}<br />
export JAVA_HOME=/etc/alternatives/java_sdk #uso o Java Open JDK, mude esta linha caso seu JVM seja outro</p></blockquote>
<p>Recarregue o bashrc para que as variáveis de ambiente tomem efeito:</p>
<pre class="prettyprint">source ~/.bashrc</pre>
<p>Seguindo o restante das instruções do DSpace encontrei mais um problema. Após rodar o <strong>mvn package</strong> foi criado o projeto pronto para compilação e deploy. Mas ao rodar o ant, com o comando <strong>ant fresh_install</strong> foi mostrada a seguinte mensagem de erro:</p>
<blockquote><p>BUILD FAILED<br />
/home/dspace/dspace-1.5.2-release/dspace/target/dspace-1.5.2-build.dir/build.xml:88: No supported regular expression matcher found</p></blockquote>
<p>Parece que faltou ao <strong>ant</strong> alguma biblioteca, que pode ser instalado através do yum:</p>
<pre class="prettyprint">sudo yum install ant-apache-regexp</pre>
<p>Bom, mesmo assim apareceu outro erro:</p>
<blockquote><p>Interpolation failed in value of property &#8220;db.name&#8221;, there is no property named &#8220;postgres&#8221;</p></blockquote>
<p>Que interpretei como algum problema na geração do <strong>dspace.cfg</strong>.  Verificando o dito cujo substitui:</p>
<blockquote><p>db.name = ${postgres}</p></blockquote>
<p>por</p>
<blockquote><p>db.name = ${postgres}</p></blockquote>
<p>Segui normalmente o restante da <a href="http://www.dspace.org/1_5_2Documentation/">documentação do DSpace</a>, mas na hora de <a href="http://www.dspace.org/1_5_2Documentation/ch03.html">agendar algumas tarefas</a> no CentOS, era apresentado um erro:</p>
<pre class="prettyprint">crontab -e</pre>
<blockquote><p>cron/dspace: Permission denied</p></blockquote>
<p>O jeito foi executar o comando como <strong>root</strong>:</p>
<pre class="prettyprint">sudo crontab -e -u dspace</pre>
<p>Outro problema ocorreu com o envio de emails, que gerava o erro: <strong>javax.mail.NoSuchProviderException: smtp</strong><br />
Resolvido removendo a seguyinte biblioteca Java, que parece entrar em conflito com a contida no DSpace:</p>
<pre class="prettyprint">sudo unlink /var/lib/tomcat5/common/lib/\[javamail\].jar
sudo /etc/init.dtomcat5 restart</pre>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/dspace-em-um-centos-5-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 3.5 disponível!!!</title>
		<link>http://seiti.eti.br/blog/2009/firefox-3-5-disponivel</link>
		<comments>http://seiti.eti.br/blog/2009/firefox-3-5-disponivel#comments</comments>
		<pubDate>Tue, 30 Jun 2009 18:19:47 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=700</guid>
		<description><![CDATA[Foi lançado hoje a nova versão deste formidável navegador. http://www.getfirefox.com Além de maior suporte aos padrões web mais atuais (HTML 5, CSS 2.1), aumentou bastante o desempenho, crucial para visitar sites Ajax: O Firefox mais rápido de todos As coisas &#8230; <a href="http://seiti.eti.br/blog/2009/firefox-3-5-disponivel">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Foi lançado hoje a nova versão deste formidável navegador.<br />
<a href="http://www.getfirefox.com">http://www.getfirefox.com</a></p>
<p>Além de maior suporte aos padrões web mais atuais (HTML 5, CSS 2.1), aumentou bastante o desempenho, crucial para visitar sites Ajax:</p>
<blockquote><p>O Firefox mais rápido de todos</p>
<p>As coisas mudam rapidamente na web, por isso melhoramos o motor do Firefox para assegurar que você possa acompanhá-las: o Firefox 3.5 é duas vezes mais rápido que o Firefox 3 e dez vezes mais rápido que o Firefox 2.* Dessa forma, aplicações Web como emails e sites de fotos estarão mais rápidas e sem atrasos.</p></blockquote>
<p>Meu uso indica que está tão rápido quanto o Chrome: super ligeiro! Agora tenho a velocidade do Chrome e os plugins indispensáeis do Firefox, como o Firebug.</p>
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2008/firefox-download-day" rel="bookmark" title="17 de junho de 2008">Firefox Download Day</a></li>
<li><a href="http://seiti.eti.br/blog/2008/vivo-online-no-firefox" rel="bookmark" title="25 de junho de 2008">Vivo Online no Firefox</a></li>
<li><a href="http://seiti.eti.br/blog/2008/eu-baixei-e-voce" rel="bookmark" title="25 de junho de 2008">Eu baixei, e você?</a></li>
</ul>
<p><!-- Similar Posts took 4.767 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/firefox-3-5-disponivel/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Não consegue listar os Databases no SQL Management Studio?</title>
		<link>http://seiti.eti.br/blog/2009/nao-consegue-listar-os-databases-no-sql-management-studio</link>
		<comments>http://seiti.eti.br/blog/2009/nao-consegue-listar-os-databases-no-sql-management-studio#comments</comments>
		<pubDate>Tue, 16 Jun 2009 21:05:29 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[Sql Management Studio]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=663</guid>
		<description><![CDATA[O MS SQL Management Studio (SMS) é uma ferramenta excelente para gerenciar seus bancos de dados. Isto não quer dizer que ele não tenha seus problemas. O pior deles é que, ao se tentar listar os bancos de dados do &#8230; <a href="http://seiti.eti.br/blog/2009/nao-consegue-listar-os-databases-no-sql-management-studio">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O MS SQL Management Studio (SMS) é uma ferramenta excelente para gerenciar seus bancos de dados. Isto não quer dizer que ele não tenha seus problemas.</p>
<p>O pior deles é que, ao se tentar listar os bancos de dados do sistema, e você não tiver permissão para visualizar <strong>um</strong> deles, o SMS graciosamente te apresentará esta mensagem de erro:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/seiti/3632901689/"><img class="aligncenter" title="Failed to retreive data for this request" src="http://farm4.static.flickr.com/3620/3632901689_d9fbe33a0d.jpg?v=0" alt="" width="500" height="167" /></a></p>
<blockquote><p>Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)</p>
<p>Additional information:<br />
An exception occured while executing a Transact-SQL statement or batch.<br />
(Microsoft.SqlServer.ConnectionInfo)<br />
The server principal &#8220;Seiti&#8221; is not able to access the database &#8220;AlgumBanco&#8221; under the current security context. (Microsoft SQL Server, Error: 916)</p></blockquote>
<p>Como então listar os bancos de dados? Não sou o único nem serei o último a enfrentar este problema, então é claro que alguém já <a href="http://blogs.sftsrc.com/stuart/archive/2009/05/13/SQL-2008-Management-Studio---Unable-to-Enumerate-Databases.aspx">blogou sobre isto e o resolveu</a>, inclusive <a href="http://sqlblog.com/blogs/aaron_bertrand/archive/2008/07/07/a-little-management-studio-oops.aspx">mais de uma pessoa</a>.</p>
<p>O problema consiste-se nas informações que são apresentadas no <em>Object Explorer Details</em> &#8211; para visualizá-lo tecle F7. Note as colunas que existem na visualização padrão: <em>Name, Policy Health State, Recovery Model, Compatibilty Level , Collation </em>e<em> Owner</em>.</p>
<p>Observe a coluna <strong>Collation</strong>. O SMS lista os bancos e verifica as informações que devem constar no <em>Object Explorer Details</em>.  Você não tem permissão sobre <strong>um</strong> dos bancos listados. Mas para saber o <em>collation</em> do banco deve-se ter permissões sobre o mesmo. O SMS entra em pânico, interrompe tudo, deixa de fazer o que deveria e mostra a mensagem de erro acima. Simples.</p>
<p>Como resolver? Clique com o direito sobre os nones das colunas e remova o <em>Collation</em>. O SMS ficará feliz da vida e fará o que devia fazer.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/instalando-pljava-no-postgresql" rel="bookmark" title="1 de abril de 2009">Instalando PLJava no PostgreSQL</a></li>
<li><a href="http://seiti.eti.br/blog/2006/para-os-que-nao-vivem-sem-um-terminal-de-linha-de-comando" rel="bookmark" title="7 de dezembro de 2006">Para os que não vivem sem um terminal de linha de comando</a></li>
<li><a href="http://seiti.eti.br/blog/2007/recriando-o-show-desktop" rel="bookmark" title="11 de julho de 2007">Recriando o Show Desktop</a></li>
<li><a href="http://seiti.eti.br/blog/2009/odbc-datasource-32bits-no-windows-7" rel="bookmark" title="31 de agosto de 2009">Odbc DataSource 32bits no Windows 7</a></li>
</ul>
<p><!-- Similar Posts took 6.751 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/nao-consegue-listar-os-databases-no-sql-management-studio/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Local Business Center update</title>
		<link>http://seiti.eti.br/blog/2009/google-local-business-center-update</link>
		<comments>http://seiti.eti.br/blog/2009/google-local-business-center-update#comments</comments>
		<pubDate>Thu, 04 Jun 2009 22:11:14 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=650</guid>
		<description><![CDATA[Li um post interessante no meu RSS Reader: http://googleblog.blogspot.com/2009/06/local-business-center-dashboard-opens.html Atualizaram o serviço e incluíram mais opções. Se você não conhece, o Google Local Business Center, ou Google LBC,  permite ao proprietário de uma empresa que apareça  no mapa do Google &#8230; <a href="http://seiti.eti.br/blog/2009/google-local-business-center-update">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Li um <em>post </em>interessante no meu RSS Reader:</p>
<p><a href="http://googleblog.blogspot.com/2009/06/local-business-center-dashboard-opens.html">http://googleblog.blogspot.com/2009/06/local-business-center-dashboard-opens.html</a></p>
<p>Atualizaram o serviço e incluíram mais opções. Se você não conhece, o <em>Google Local Business Center</em>, ou Google LBC,  permite ao proprietário de uma empresa que apareça  no mapa do Google Maps,  editar os dados apresentados.</p>
<p>Assim pode-se atualizar o telefone de contato, adicionar informações e tudo mais. Para isto é necessário provar que você é realmente responsável pela empresa, e aí entra em campo, em uma das opções,  o velho e conhecido correio.  Aquele do envelope e selo, lembra?</p>
<p>Bom, parece que existem indicadores interessantes para aqueles que possuem empresas com localização física:</p>
<blockquote>
<ul>
<li> Impressions: The number of times the business listing appeared as a result on a Google.com search or Google Maps search in a given period.</li>
<li>Actions: The number of times people interacted with the listing; for example, the number of times they clicked through to the business&#8217; website or requested driving directions to the business.</li>
<li>Top search queries: Which queries led customers to the business listing; for example, are they finding the listing for a cafe by searching for &#8220;tea&#8221; or &#8220;coffee&#8221;?</li>
<li>Zip codes where driving directions come from: Which zip codes customers are coming from when they request directions to your location.</li>
</ul>
</blockquote>
<p>Em resumo, são estatísticas geradas pelo próprio Google e seu sistema<br />
Google Maps, quando seu uso faz referência à sua empresa. Eu diria que<br />
servem para complementar o Google Analytics.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2008/gmail-tasks-e-google-maps" rel="bookmark" title="9 de dezembro de 2008">Gmail, Tasks e Google Maps</a></li>
<li><a href="http://seiti.eti.br/blog/2009/nao-consegue-adicionar-outra-conta-google-no-motorola-milestone" rel="bookmark" title="26 de dezembro de 2009">Não consegue adicionar outra conta Google no Motorola Milestone?</a></li>
<li><a href="http://seiti.eti.br/blog/2009/google-tasks-desktop" rel="bookmark" title="12 de maio de 2009">Google Tasks Desktop</a></li>
<li><a href="http://seiti.eti.br/blog/2008/migrando-para-o-google-apps-gmail" rel="bookmark" title="25 de junho de 2008">Migrando para o Google Apps Gmail</a></li>
</ul>
<p><!-- Similar Posts took 7.514 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/google-local-business-center-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolvendo o problema da busca no DSpace</title>
		<link>http://seiti.eti.br/blog/2009/resolvendo-o-problema-da-busca-no-dspace</link>
		<comments>http://seiti.eti.br/blog/2009/resolvendo-o-problema-da-busca-no-dspace#comments</comments>
		<pubDate>Thu, 28 May 2009 03:46:39 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=633</guid>
		<description><![CDATA[Ocorre um problema em minha instalação  do DSpace. As buscas realizadas contendo caracteres com diacríticos (acentuação e etc.) retornam resultados estranhos, pois os termos da busca ficam desfigurados. E não sou só eu que enfrento isto. Fui escarafunchar o código &#8230; <a href="http://seiti.eti.br/blog/2009/resolvendo-o-problema-da-busca-no-dspace">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ocorre um problema em minha <a href="http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace">instalação  do DSpace</a>. As buscas realizadas contendo caracteres com <a href="http://pt.wikipedia.org/wiki/Diacr%C3%ADtico">diacríticos</a> (acentuação e etc.) retornam resultados estranhos, pois os termos da busca ficam desfigurados. E <a href="http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace#comment-275">não sou só eu</a> que enfrento isto.</p>
<p>Fui escarafunchar o código fonte tentando encontrar alguma solução. Não encontrei nenhuma. Vamos apelar ao <strong><a href="http://www.google.com.br/search?q=dspace+diacritics+starts_with">onisciente</a></strong> então.</p>
<p>Um <a href="http://www.nabble.com/Acute-Accents----Searching-td23594758.html">post</a> me chamou a atenção para a configuração do Tomcat. É necessário editar o arquivo <tt>/etc/tomcat5/server.xml</tt> de formar que o elemento <em>Connector</em> em questão  tenha um atributo <strong>URIEncoding=&#8221;UTF-8&#8243;</strong>.</p>
<p>Embora este atributo seja sempre configurado no Connector padrão , que escuta na porta 8080,  me lembrei que eu havia configurado o <a href="http://seiti.eti.br/blog/2008/apache-tomcat">Tomcat</a> para funcionar em conjunto com o Apache, através do <em>mod_jk</em>, na porta <strong>8009 com o AJP Connector</strong>.</p>
<p>Fui verificar o arquivo server.xml e <strong>bingo</strong>! Foi só mudar de</p>
<pre>&lt;Connector port="8009" enableLookups="false"
    redirectPort="8080" protocol="AJP/1.3" /&gt;</pre>
<p>para</p>
<pre>&lt;Connector port="8009" enableLookups="false"
    redirectPort="8080" protocol="AJP/1.3"
    URIEncoding="UTF-8" /&gt;</pre>
<p>E a busca voltou a funcionar.</p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/resolvendo-o-problema-da-busca-no-dspace/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reintegrando um branch no SVN</title>
		<link>http://seiti.eti.br/blog/2009/reintegrando-um-branch-no-svn</link>
		<comments>http://seiti.eti.br/blog/2009/reintegrando-um-branch-no-svn#comments</comments>
		<pubDate>Sat, 16 May 2009 12:09:49 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=569</guid>
		<description><![CDATA[No meu trabalho utilizamos o excelente Subversion já há algum tempo (nem gosto de lembrar da época de zipar aquivos, colocar em uma pasta compartilhada da rede, nomear os zips com a data, sua cópia do projeto sempre diferente das &#8230; <a href="http://seiti.eti.br/blog/2009/reintegrando-um-branch-no-svn">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No meu trabalho utilizamos o  excelente <a href="http://seiti.eti.br/blog/2006/subversion">Subversion</a> já há algum tempo (nem gosto de lembrar da época de zipar aquivos, colocar em uma pasta compartilhada da rede, nomear os zips com a data, sua cópia do projeto sempre diferente das dos colegas etc e tal).</p>
<p>Mas só há algum tempo começamos a nos organizar um pouco melhor e utilizar o esquema de <em>trunk, branches e tags</em>.</p>
<p>E um problema surgiu ao tentarmos reintegrar um <em>branch</em> ao <em>trunk</em>:</p>
<blockquote><p>Retrieval of mergeinfo unsupported</p></blockquote>
<p>Que diabos é isto? Após pesquisar no <a href="http://www.google.com">oráculo</a> descobri que se trata de uma atualização do Subversion ocorrida entre as versões 1.4 e 1.5 que adicionaram novas funcionalidades.</p>
<p>Entretanto, para que estas funcionalidades sejam utilizadas é necessário atualizar seu repositório através do comando <strong><a href="http://subversion.tigris.org/svn_1.5_releasenotes.html#repos-upgrades">svnadmin upgrade</a></strong>:</p>
<pre class="prettyprint">svnadmin upgrade caminho_do_repositorio</pre>
<p>Feito isto, tudo ok!
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2008/subversion-notify-for-windows" rel="bookmark" title="30 de setembro de 2008">Subversion Notify for Windows</a></li>
<li><a href="http://seiti.eti.br/blog/2008/subversion-no-qnap-ts-109" rel="bookmark" title="6 de novembro de 2008">Subversion no Qnap TS-109</a></li>
<li><a href="http://seiti.eti.br/blog/2008/otimizando-o-tortoisesvn" rel="bookmark" title="16 de dezembro de 2008">Otimizando o TortoiseSVN</a></li>
</ul>
<p><!-- Similar Posts took 4.353 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/reintegrando-um-branch-no-svn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerando boletos bancários em Asp.NET &#8211; Parte I</title>
		<link>http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-i</link>
		<comments>http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-i#comments</comments>
		<pubDate>Thu, 14 May 2009 00:54:15 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[boleto]]></category>
		<category><![CDATA[crystal reports]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[linq to sql]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=573</guid>
		<description><![CDATA[Estou em um projeto que necessita a criação de um boleto bancário para o pagamento de um serviço. Como gerá-lo, usando o Visual Studio 2008, Crystal Reports e o Linq To Sql ? Boleto? Vamos primeiro entender do que é &#8230; <a href="http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-i">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estou em um projeto que necessita a criação de um boleto bancário para o pagamento de um serviço. Como gerá-lo, usando o Visual Studio 2008,  Crystal Reports e o <a href="http://seiti.eti.br/blog/2009/boas-praticas-em-linq-to-sql">Linq To Sql</a> ?</p>
<h3>Boleto?</h3>
<p>Vamos primeiro entender do que é composto basicamente um boleto:</p>
<ul>
<li><strong>Banco</strong>:  quem gerencia a transação;</li>
<li><strong>Cedente</strong>:  quem vai receber a grana;</li>
<li><strong>Sacado</strong>:  quem paga;</li>
<li><strong>Valor do documento</strong>: quanto será pago</li>
<li><strong>Data de vencimento</strong>: até quando pode ser pago;</li>
<li><strong>Modalidade</strong>:  com ou sem registro. O comum para vendas online é <em>sem registro</em>.  Se o sacado não pagar, a responsabilidade de correr atrás é do cedente.</li>
</ul>
<p>A entidade que padroniza os boletos no Brasil é  a Federação Brasileira de Bancos &#8211; <a href="http://www.febraban.com.br">FEBRABAN</a>.</p>
<p><span id="more-573"></span>É claro que o desenvolvedor deve conhecer mais que o básico, caso queira gerar um boleto.  Segue então o modelo do boleto do Itaú.  Mas note que ainda assim a descrição está resumida:<a class="flickr-image alignnone" title="Modelo de boleto Itaú" rel="flickr-mgr" href="http://www.flickr.com/photos/seiti/3525955045/"><img class="flickr-medium" src="http://farm4.static.flickr.com/3398/3525955045_d49dbcd0f5_o.png" alt="Modelo de boleto Itaú" /></a></p>
<p><strong>1</strong> &#8211; <em>Nome do banco</em>, que pode conter também seu logotipo;</p>
<p><strong>2</strong> -<em> Código do banco</em>, com seu respectivo DV;</p>
<p><strong>3</strong> &#8211; <em>Local de pagamento</em>;</p>
<p><strong>4</strong> &#8211; <em>Data do documento,</em> que é  quando ele foi gerado;</p>
<p><strong>5</strong> &#8211; <em>Número do documento</em>, obrigatório para carteiras sem registro</p>
<p><strong>6</strong> &#8211; <em>Carteira</em>, não utilizado pelo Itaú</p>
<p><strong>7</strong> &#8211; <em>Espécie</em>, use R$ para usar nossa moeda</p>
<p><strong>8</strong> &#8211; <em>Agência/Código Cedente</em>,  no formato 1234/56789-7 e  <em>Nosso Número</em>, no formato 123/45678901-5</p>
<p><strong>9</strong> &#8211; Uso exclusivo do funcionário caixa</p>
<p><strong>10</strong> &#8211; <em>Instruções</em>, condições para recebimento,  dados sobre multas por atraso, bancos autorizados etc.</p>
<p>A duas listagens acima já ajudam o programador a saber quais dados ele <strong>precisa</strong> ter à mão para gerar um boleto bancário. Alguns itens do boleto deverão ser <strong>criados automaticamente</strong> pelo sistema a partir destes dados, tais como a <em>linha digitável</em> e o <em>código de barras</em>.</p>
<p>Uma excelente fonte de documentação se encontra em <a href="http://www.phpboleto.com.br/">http://www.phpboleto.com.br/</a>. Lá existem outros modelos disponíveis para download.  E,  se seu projeto é em PHP, recomendo utilizá-lo!</p>
<p>Outro lugar legal para se informar é o site <a href="http://www.macoratti.net/boleto.htm">macoratti.com</a>.</p>
<h3>Criando um template</h3>
<p>Por meio do <em>Crystal Reports</em>, que já vem no Visual Studio 2008, criei o seguinte template:</p>
<p><a class="flickr-image alignnone" title="Template do boleto do Itaú no Crystal Reports" rel="flickr-mgr" href="http://www.flickr.com/photos/seiti/3528627827/"><img class="flickr-medium" src="http://farm4.static.flickr.com/3541/3528627827_0cc3fcfaee_o.png" alt="Template do boleto do Itaú no Crystal Reports" /></a></p>
<p>Note que ele contém só o esqueleto. Nenhum campo dinâmico foi adicionado (bom, talvez a <strong>espécie</strong>, que considerei ser sempre R$) ainda.</p>
<p>Template pronto,  precisamos dos dados para populá-lo. Criei uma classe cujas propriedades são os dados a serem inseridos no boleto:</p>
<pre class="brush: csharp; title: ; notranslate">namespace namespace Portal.Controles.Boleto
{
    public class Dados
    {
        public DateTime DataDocumento { get; set; }
        public DateTime DataVencimento { get; set; }
        public DateTime DataProcessamento { get; set; }

        public string Cedente { get; set; }
        public string SacadoResumido { get; set; }
        public string SacadoCompleto { get; set; }

        public string Agencia { get; set; }
        public string CodigoCedente { get; set; }

        public int NumeroDocumento { get; set; }
        public string EspecieDocumento { get; set; }
        public string Aceite { get; set; }
        public string NossoNumero { get; set; }
        public string Carteira { get; set; }

        public string Instrucoes { get; set; }

        public int Quantidade { get; set; }
        public decimal Valor { get; set; }
        public decimal ValorDocumento { get; set; }

        public string CodigoBaixa { get; set; }
        public bytes[] CodigoBarra { get; set; }
        public string LinhaDigitavel { get; set; }
    }
}</pre>
<p>Agora é preciso terminar o template do boleto. Ao compilar o projeto podemos inserir as propriedades da classe acima em nosso template.</p>
<p>Para adicionar  a classe recém criada como fonte de dados (<em>Data Source</em>) é só ir para <em>DataBase Fields → DataBase Expert</em>:</p>
<p><a class="flickr-image alignnone" title="DataBase Fields -&gt; Expert" rel="flickr-mgr" href="http://www.flickr.com/photos/seiti/3529470418/"><img class="flickr-medium" src="http://farm3.static.flickr.com/2384/3529470418_1d040bb663_o.png" alt="DataBase Fields -&gt; Expert" /></a></p>
<p>Na caixa de diálogo que se abre, é só escolher a classe recém criada.  Ficam à  disposição  todas as propriedades necessárias para popular o boleto:</p>
<p><a class="flickr-image alignnone" title="DataBase Fields" rel="flickr-mgr" href="http://www.flickr.com/photos/seiti/3529475678/"><img class="flickr-medium" src="http://farm4.static.flickr.com/3374/3529475678_9c499b492e_o.png" alt="DataBase Fields" /></a></p>
<p>Por meio do famigerado <em>arrastar e soltar</em>, é só terminar de criar o template, colocando os campos nos lugares corretos. Um trabalho simples, mas meio chato,  eu sei.</p>
<h3>Testando a geração do boleto</h3>
<p>Template pronto. Posso então criar uma classe encarregada de pegar os <strong>dados</strong>, pegar o <strong>template</strong>,<strong> </strong>juntá-los e serví-los. A classe não tem nada de mais, e está preparada para funcionar em ambiente Asp.NET:</p>
<pre class="brush: csharp; title: ; notranslate">namespace Portal.Controles.Boleto
{
    public enum Banco
    {
        ITAU
    }

    public class Boleto
    {
        CrystalDecisions.CrystalReports.Engine.ReportDocument rel;

        public Boleto(Banco banco, HttpServerUtility server)
        {
            rel = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
            rel.Load(GetTemplateFilePath(banco, server));
        }

        public void Baixa(HttpResponse response, IEnumerable dataSource)
        {
            rel.SetDataSource(dataSource);
            rel.ExportToHttpResponse(
                CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,
                response,
                true,
                string.Format(&quot;Boleto_{0}.pdf&quot;, DateTime.Now.Date.ToShortDateString()));
        }

        protected string GetTemplateFilePath(Banco banco, HttpServerUtility server)
        {
            switch (banco)
            {
                case Banco.ITAU:
                    return server.MapPath(&quot;~/Controles/Boleto/TemplateItau.rpt&quot;);
                default:
                    throw new Exception(&quot;Este tipo de boleto não foi implementado ainda&quot;);
            }
        }
    }
}</pre>
<p>É claro que muita coisa na classe pode ser melhorada, como o caminho até o arquivo do template, que está <em>hardcoded</em>.  Mas já funciona e está preparado para funcionar com mais de um tipo de template.</p>
<p>Como testar então o danado?</p>
<p>Criei uma página ASPX contendo um botão. Vinculei um método ao evento <strong>OnClick</strong>. O corpo do método segue abaixo:</p>
<pre class="brush: csharp; title: ; notranslate">protected void botao_OnClick(object sender, EventArgs e)
{
   Portal.Controles.Boleto.Boleto boleto = new Portal.Controles.Boleto.Boleto(Portal.Controles.Boleto.Banco.ITAU, Server);

    List dados = new List ();

    dados.Add(
        new Portal.Controles.Boleto.Dados()
        {
            Aceite = &quot;N&quot;,
             Agencia = &quot;1234&quot;,
             Carteira = &quot;123&quot;,
             Cedente = &quot;Indústria ACME&quot;,
             CodigoBaixa = &quot;123/12345678-9&quot;,
             CodigoBarra = File.ReadAllBytes(Server.MapPath(&quot;~/Caminhp/para/uma/imagem.jpg&quot;)),
             CodigoCedente = &quot;12345-6&quot;,
             DataDocumento = DateTime.Now,
             DataProcessamento = DateTime.Now,
             DataVencimento = DateTime.Now.AddDays(5),
             EspecieDocumento = &quot;AB&quot;,
             Instrucoes =
@&quot;Sujeito a protesto se ñao for pago no vencimento
no vencimento pagavel em qualquer agenia bancaria
apos vencimento cobrar R$ 0,42 por dia de atraso
apos vencimento cobrar multa de R$ 6,66&quot;,
             LinhaDigitavel = &quot;12345.12345 12345.123456 12345.123456 1 1230000066600&quot;,
             NossoNumero = &quot;123/12345678-9&quot;,
             NumeroDocumento = 123456890,
             Quantidade = 0,
             SacadoCompleto =
@&quot;Dino da Silva Sauro                  CNPJ - 12.345.678/123-11
Rua das Casas, S/N
01111-111        Vl Das Ruas          Sao Paulo          SP&quot;,
             SacadoResumido = &quot;Dino da Silva Sauro&quot;,
             Valor = 0,
             ValorDocumento = 666
         });

    boleto.Baixa(Response, dados);
}</pre>
<p>Ou seja, crie uma lista, lhe adicione um objeto passe tudo e mais um pouco para a classe Boleto e chame o método <em>Baixa</em>. Um boleto em pdf será gerado e entregue ao usuário pelo navegador.</p>
<h3>E agora?</h3>
<p>Agora que já temos a geração de um boleto <em>dummy</em> funcionando, precisamos acertar os dados que o compõem.</p>
<p>Existem regras para a linha digitável, precisamos calcular alguns dígitos verificadores e ainda gerar a imagem correspondente ao código de barras.</p>
<p>Isto fica para a <strong>Parte II</strong>! Aguardem!<br />
[<strong>Atualização</strong>: <a href="http://dl.dropbox.com/u/2295190/blog/TemplateItau.zip">Template do boleto</a> no Crystal Reports]<br />
[<strong>Atualização</strong>: Segunda parte no ar!<br />
<a href="http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-ii">http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-ii</a>]
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-ii" rel="bookmark" title="16 de julho de 2009">Gerando boletos bancários em Asp.NET &#8211; Parte II</a></li>
<li><a href="http://seiti.eti.br/blog/2008/criando-um-metodo-de-log-em-aspnet" rel="bookmark" title="28 de agosto de 2008">Criando um método de log em Asp.NET</a></li>
<li><a href="http://seiti.eti.br/blog/2009/explicit-construction-of-entity-type-in-query-is-not-allowed" rel="bookmark" title="3 de junho de 2009">Explicit construction of entity type &#8216;###&#8217; in query is not allowed</a></li>
<li><a href="http://seiti.eti.br/blog/2009/boas-praticas-em-linq-to-sql" rel="bookmark" title="7 de maio de 2009">Boas práticas em Linq To Sql</a></li>
</ul>
<p><!-- Similar Posts took 6.697 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-i/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Encodings e charsets em Asp.NET</title>
		<link>http://seiti.eti.br/blog/2009/encodings-e-charsets-em-aspnet</link>
		<comments>http://seiti.eti.br/blog/2009/encodings-e-charsets-em-aspnet#comments</comments>
		<pubDate>Wed, 13 May 2009 12:00:10 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[net]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=565</guid>
		<description><![CDATA[Geralmente não precisamos nos preocupar com os Encodings em uma aplicação em .NET. Isto porque ao desenvolvermos um sistema .NET, utilizamos ferramentas uniformizadas, afinal, elas provêm de uma mesma fabricante: Microsoft. (Já quando desenvolvemos soluções LAMP, ou mesmo WAMP, nosso &#8230; <a href="http://seiti.eti.br/blog/2009/encodings-e-charsets-em-aspnet">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Geralmente não precisamos nos preocupar com os Encodings em uma aplicação em .NET. Isto porque ao desenvolvermos um sistema .NET, utilizamos ferramentas uniformizadas, afinal, elas provêm de uma mesma fabricante: Microsoft.</p>
<p>(Já quando desenvolvemos soluções LAMP, ou mesmo WAMP, nosso cuidado precisa aumentar e muito.)</p>
<p>O fato é que o framework Asp.NET provê uma facilidade incrível para lidar com esta questão que sempre perturba os desenvolvedores. Mesmo no momento de se gravar ou ler arquivos do sistema de arquivos o encoding é tratada de forma automática.</p>
<p>A regra então é: não se preocupe com isto, a menos que algo dê errado e surja algum caractere estranho. E é claro que algo sempre dará errado.</p>
<p>Bom, então quando precisamos mudar o encoding de alguma string em Asp.NET? Simples:</p>
<pre class="prettyprint">Encoding.UTF8.GetString(Encoding.GetEncoding("iso8859-1").GetBytes("Texto com acentuação e caracteres não-ANSI"));</pre>
<p>A código acima toma uma string em<strong> ISO-8859-1</strong> e tranforma-a em uma no formato <strong>UTF-8</strong>.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2007/encodings-e-charsets" rel="bookmark" title="17 de maio de 2007">Encodings e charsets</a></li>
<li><a href="http://seiti.eti.br/blog/2010/fluent-nhibernate" rel="bookmark" title="19 de julho de 2010">Fluent NHibernate</a></li>
<li><a href="http://seiti.eti.br/blog/2009/gerando-boletos-bancarios-em-aspnet-parte-i" rel="bookmark" title="13 de maio de 2009">Gerando boletos bancários em Asp.NET &#8211; Parte I</a></li>
<li><a href="http://seiti.eti.br/blog/2009/conseguindo-a-url-completa-de-uma-pagina" rel="bookmark" title="19 de maio de 2009">Conseguindo a URL completa de uma página</a></li>
</ul>
<p><!-- Similar Posts took 5.512 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/encodings-e-charsets-em-aspnet/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Tasks Desktop</title>
		<link>http://seiti.eti.br/blog/2009/google-tasks-desktop</link>
		<comments>http://seiti.eti.br/blog/2009/google-tasks-desktop#comments</comments>
		<pubDate>Tue, 12 May 2009 12:47:59 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[organização]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=560</guid>
		<description><![CDATA[Os usuário do Gmail já devem conhecer o Google Tasks. Se não conhecem, basta habilitarem o dito cujo no Google Labs, e, de dentro das funções do Labs, habilitarem finalmente o Google Tasks. Se você possui mais de um monitor, &#8230; <a href="http://seiti.eti.br/blog/2009/google-tasks-desktop">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Os usuário do Gmail já devem conhecer o <a href="http://mail.google.com/mail/help/tasks/">Google Tasks</a>. Se não conhecem, basta habilitarem o dito cujo no <em>Google Labs</em>, e, de dentro das funções do <em>Labs</em>, habilitarem finalmente o Google Tasks.</p>
<p><a class="flickr-image alignnone" title="Google Tasks" rel="flickr-mgr" href="http://www.flickr.com/photos/seiti/3522527719/"><img class="flickr-medium" src="http://farm4.static.flickr.com/3370/3522527719_97b6db0f36_o.png" alt="Google Tasks" /></a></p>
<p>Se você possui <a href="http://seiti.eti.br/blog/2009/melhorando-a-mesa-de-trabalho-2">mais de um monitor</a>, deve saber como desktop widgets são úteis. Informação disponível com um rápido olhar.</p>
<p>Para conseguir transformar o Google Tasks em um widget de desktop, ou melhor, em um aplicativo desktop, você vai precisar do Google Chrome. Dentre <a href="http://www.makeuseof.com/tag/5-ways-to-access-your-google-tasks/">algumas maneiras</a> de se fazer isto, achei esta a mais simples:</p>
<ul>
<li>abra o Google Tasks standalone widget no Google Chrome. O enderço é  <a href="https://mail.google.com/tasks/ig">https://mail.google.com/tasks/ig</a>, ou <a href="https://mail.google.com/tasks/a/seiti.eti.br/ig">https://mail.google.com/tasks/a/seudominio.com.br/ig</a>, para quem usa o Google Apps (troque o seudominio.com por, bem, seu domínio;</li>
<li>clique na opção &#8220;Criar atalhos de aplicativo&#8221;; <a class="flickr-image alignnone" title="Google Chrome - Criando aplicativo desktop" rel="flickr-mgr" href="http://www.flickr.com/photos/seiti/3523396608/"><img class="flickr-medium" src="http://farm4.static.flickr.com/3541/3523396608_6f6fec7b09_o.png" alt="Google Chrome - Criando aplicativo desktop" /></a></li>
<li>pronto!</li>
</ul>
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2008/gmail-tasks-e-google-maps" rel="bookmark" title="9 de dezembro de 2008">Gmail, Tasks e Google Maps</a></li>
<li><a href="http://seiti.eti.br/blog/2009/sincronizando-a-agenda-do-google-e-a-do-google-apps" rel="bookmark" title="29 de dezembro de 2009">Sincronizando a agenda do Google e a do Google Apps</a></li>
<li><a href="http://seiti.eti.br/blog/2009/nao-consegue-adicionar-outra-conta-google-no-motorola-milestone" rel="bookmark" title="26 de dezembro de 2009">Não consegue adicionar outra conta Google no Motorola Milestone?</a></li>
<li><a href="http://seiti.eti.br/blog/2008/migrando-para-o-google-apps-gmail" rel="bookmark" title="25 de junho de 2008">Migrando para o Google Apps Gmail</a></li>
</ul>
<p><!-- Similar Posts took 10.734 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/google-tasks-desktop/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Compilando seu Web Application Project com o MSBuild</title>
		<link>http://seiti.eti.br/blog/2009/compilando-seu-web-application-project-com-o-msbuild</link>
		<comments>http://seiti.eti.br/blog/2009/compilando-seu-web-application-project-com-o-msbuild#comments</comments>
		<pubDate>Wed, 06 May 2009 21:44:03 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[compilação]]></category>
		<category><![CDATA[projeto]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=474</guid>
		<description><![CDATA[Programar em um IDE como o Visual Studio te dá muitas facilidades. O processo de compilação fica quase imperceptível para o desenvolvedor. O problema surge no momento em que você quer algo diferente, como compilar versões distintas do código a &#8230; <a href="http://seiti.eti.br/blog/2009/compilando-seu-web-application-project-com-o-msbuild">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Programar em um IDE como o Visual Studio te dá muitas facilidades. O processo de compilação fica quase imperceptível para o desenvolvedor.</p>
<p>O problema surge no momento em que você quer algo diferente, como compilar versões distintas do código a partir do mesmo fonte, automatizar o <em>build</em> no servidor etc .</p>
<p>Para os que já usam <strong>Makefile</strong> ou o <strong>Ant</strong>, isto é trivial. Mas isto também é simples para os que usam o Visual Studio!</p>
<p>Vamos ver como construir um simples arquivo para o <strong>MSBuild </strong>compilar nosso projeto.</p>
<p>Primeiro é necessário que você possua o MSBuild instalado. Não se preocupe,  o Visual Studio 2008 já o instala .</p>
<p>E onde está o diabo do <strong>msbuild.exe</strong>? Aqui:</p>
<pre>%windir%\Microsoft.NET\Framework\</pre>
<p>Ou melhor,  execute (com as aspas!) o seguinte comando em um terminal:</p>
<pre>"%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat"</pre>
<p>Teste digitando <strong>msbuild.exe /help</strong></p>
<p>Precisamos agora construir um <span style="text-decoration: line-through;">makefile</span> arquivo de instruções para o MSBuild, que chamarei de Makefile.proj:</p>
<pre class="code">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;Project DefaultTargets="Build"
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
  ToolsVersion="3.5"&gt;
  &lt;!-- aqui eu importo um projeto que já existe, contendo todos os
      arquivos e assemblies que fazem parte do processo de compilação--&gt;
  &lt;Import Project="MeuProjeto.csproj"/&gt;
  &lt;!-- aqui eu defino algumas variáveis úteis --&gt;
  &lt;PropertyGroup&gt;
      &lt;VersionNumber&gt;1.0.0&lt;/VersionNumber&gt;
      &lt;BuildRoot&gt;Deploy\Releases\$(VersionNumber)\&lt;/BuildRoot&gt;
      &lt;NewInstallDir&gt;$(BuildRoot)Install\&lt;/NewInstallDir&gt;
      &lt;UpgradeDir&gt;$(BuildRoot)Upgrade\&lt;/UpgradeDir&gt;
      &lt;CopyRoot&gt;..\EruditoHAOC_PROD_test\&lt;/CopyRoot&gt;
  &lt;/PropertyGroup&gt;
  &lt;ItemGroup&gt;
      &lt;SourceFiles Include="**\*.*" /&gt;
  &lt;/ItemGroup&gt;
  &lt;!-- Aqui entram as instruções para a compilação e cópia
      doas arquivos gerados para a pasta de deploy --&gt;
  &lt;Target Name="Build"&gt;
    &lt;MSBuild
        Projects="MeuProjeto.sln"
        Properties="OutputPath=$(NewInstallDir)bin\" /&gt;
    &lt;Copy
        SourceFiles="@(Content-&gt;'%(RelativeDir)%(FileName)%(Extension)')"
        DestinationFiles=
          "@(Content-&gt;'$(NewInstallDir)%(RelativeDir)%(FileName)%(Extension)')" /&gt;
    &lt;Copy
        SourceFiles="@(None-&gt;'%(RelativeDir)%(FileName)%(Extension)')"
        DestinationFiles=
          "@(None-&gt;'$(NewInstallDir)%(RelativeDir)%(FileName)%(Extension)')" /&gt;
    &lt;MakeDir
        Directories="@(Folder-&gt;'$(NewInstallDir)%(RelativeDir)')" /&gt;
    &lt;CreateItem
        Include="$(NewInstallDir)**"
        Exclude="**\App_Themes\**;**\Web.config"&gt;
        &lt;Output ItemName="UpgradeFiles" TaskParameter="Include" /&gt;
    &lt;/CreateItem&gt;
    &lt;Copy
        SourceFiles="@(UpgradeFiles)"
        DestinationFiles=
          "@(UpgradeFiles-&gt;'$(UpgradeDir)%(RecursiveDir)%(FileName)%(Extension)')" /&gt;
    &lt;MakeDir Directories="@(Folder-&gt;'$(UpgradeDir)%(RelativeDir)')" /&gt;
  &lt;/Target&gt;
  &lt;!-- Um exemplo de como copiar todo o projeto para outro lugar --&gt;
  &lt;Target Name="Deploy"&gt;
    &lt;Copy
      SourceFiles="@(SourceFiles)"
      DestinationFiles=
        "@(SourceFiles-&gt;'$(DeployRoot)%(RecursiveDir)%(FileName)%(Extension)')" /&gt;
  &lt;/Target&gt;
&lt;/Project&gt;</pre>
<p>Para compilar seu projeto agora basta rodar o comando <span style="text-decoration: line-through;">make</span> msbuild.exe, da seguinte forma:</p>
<pre class="code">MSBuild.exe Makefile.proj /target:Build</pre>
<p>Isto irá compilar e copiar o resultado da menira definida no xml Makefile.proj.</p>
<p>Referências:</p>
<ul>
<li><a href="http://www.writebetterbits.com/2008/02/deploying-aspnet-web-application.html">http://www.writebetterbits.com/2008/02/deploying-aspnet-web-application.html</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms164311.aspx">http://msdn.microsoft.com/en-us/library/ms164311.aspx</a></li>
</ul>
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2010/erro-no-deploy-automatico-hudson-versus-msbuild" rel="bookmark" title="11 de maio de 2010">Erro no deploy automático: Hudson versus MSBuild</a></li>
<li><a href="http://seiti.eti.br/blog/2009/httppostedfile-ie-versus-firefox" rel="bookmark" title="17 de maio de 2009">HttpPostedFile: IE versus Firefox</a></li>
<li><a href="http://seiti.eti.br/blog/2011/asp-net-web-forms-e-ninjas-parte-1" rel="bookmark" title="5 de setembro de 2011">Asp.Net, Web Forms e Ninjas &#8211; Parte 1</a></li>
<li><a href="http://seiti.eti.br/blog/2009/net-assembly-versioning" rel="bookmark" title="17 de junho de 2009">.Net Assembly versioning</a></li>
</ul>
<p><!-- Similar Posts took 5.600 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/compilando-seu-web-application-project-com-o-msbuild/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Múltiplas imagens no topo do seu blog</title>
		<link>http://seiti.eti.br/blog/2009/multiplas-imagens-no-topo-do-seu-blog</link>
		<comments>http://seiti.eti.br/blog/2009/multiplas-imagens-no-topo-do-seu-blog#comments</comments>
		<pubDate>Sat, 02 May 2009 03:40:33 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=466</guid>
		<description><![CDATA[Cansado de olhar a mesma imagem na testeira do meu blog (que nem uma foto era, apenas uma imagem artificial), decidi trocá-la. Por oito outras. Oito? Sim, mas elas são trocadas aleatoriamente (randômico não existe!) a cada reload da página. &#8230; <a href="http://seiti.eti.br/blog/2009/multiplas-imagens-no-topo-do-seu-blog">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Cansado de olhar a mesma imagem na testeira do meu blog (que nem uma foto era, apenas uma imagem artificial), decidi trocá-la. Por <strong>oito outras</strong>.</p>
<p>Oito? Sim, mas elas são trocadas aleatoriamente (randômico não existe!) a cada <em>reload</em> da página.</p>
<p>Como? Usando PHP, é claro!</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/seiti/3483991793/"><img class="aligncenter" src="http://farm4.static.flickr.com/3591/3483991793_09e05d8b1d_m.jpg" alt="" width="240" height="180" /></a></p>
<p>Darei algumas instruções logo abaixo,  que <strong>não</strong> são específicas do WordPress.</p>
<p>Primeiro eu criei um arquivo <em>CSS</em> denominado <em>multiple_header_images.css.php</em> (é verdade, basta olhar no código fonte daqui do blog). Este arquivo é um script php que gera um arquivo css. Para isto basta colocar uma linha especial logo no início do arquivo:</p>
<pre>&lt;?php header("Content-Type:text/css"); ?&gt;</pre>
<p>E por quê PHP? Para poder trocar o arquivo de imagem carregado pelo css. Basta observar o arquivo completo para entender:</p>
<pre>&lt;?php header("Content-Type:text/css"); ?&gt;
#header {
	background:url(img/header_&lt;? echo rand(1,8);?&gt;.jpg) 0 0 no-repeat !important;
}</pre>
<p>Note a tag &lt;? echo rand(1,8);?&gt;. Ela gera um número aleatório entre 1 e 8. A cada vez que o arquivo css é carregado ele vem com um conteúdo ligeiramente diferente. Ora ele carrega uma imagem <em>header_1.jpg</em>, ora uma <em>header_5.jpg</em> e assim em diante.</p>
<p>Claro que é preciso criar as 8 imagens, nomeá-las header_1.jpg, header_2.jpg etc, e depois colocá-las no local apropriado, no meu caso na pasta <strong>img</strong> (todas as imagens que utilizei foram fotografadas por mim! <img src='http://seiti.eti.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).</p>
<p>A diretiva <strong>!important</strong> serve para assegurar que o meu css referente ao #header terá precedência sobre o outro #header que já existe em algum outro lugar do passado.</p>
<p>E é só! <del datetime="2009-04-29T04:00:14+00:00">Roubei</del> Me inspirei <a href="http://www.robservatory.com/?p=191">neste</a> post.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2008/carteira-de-papel-diy" rel="bookmark" title="17 de setembro de 2008">Carteira de Papel DIY</a></li>
<li><a href="http://seiti.eti.br/blog/2008/um-open-id-para-todos-governar" rel="bookmark" title="14 de outubro de 2008">Um Open ID para todos governar</a></li>
<li><a href="http://seiti.eti.br/blog/2009/fontpark-20" rel="bookmark" title="27 de janeiro de 2009">Fontpark 2.0</a></li>
<li><a href="http://seiti.eti.br/blog/2008/constantes-no-php-e-o-padrao-typesafe-enum" rel="bookmark" title="5 de junho de 2008">Constantes no PHP e o padrão Typesafe enum</a></li>
</ul>
<p><!-- Similar Posts took 5.485 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/multiplas-imagens-no-topo-do-seu-blog/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lerdeza para remover arquivos no Vista?</title>
		<link>http://seiti.eti.br/blog/2009/lerdeza-para-remover-arquivos-no-vista</link>
		<comments>http://seiti.eti.br/blog/2009/lerdeza-para-remover-arquivos-no-vista#comments</comments>
		<pubDate>Fri, 24 Apr 2009 03:18:02 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[vista]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=405</guid>
		<description><![CDATA[Estes dias precisei remover alguns arquivos do computador. Uns 90 mil arquivos diversos. No Windows XP ou no Ubuntu isto seria realizado em um piscar de olhos, se você selecionar os arquivos e apagar com o comando Shift + Del. &#8230; <a href="http://seiti.eti.br/blog/2009/lerdeza-para-remover-arquivos-no-vista">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estes dias precisei remover alguns arquivos do computador. Uns 90 mil arquivos diversos. No Windows XP ou no Ubuntu isto seria realizado em um piscar de olhos, se você selecionar os arquivos e apagar com o comando <strong>Shift + Del</strong>.</p>
<p>Bom, no Vista tenho de esperar um pouco mais.<strong> 4 horas a mais</strong>, se o que o próprio sistema me apresenta estiver correto.</p>
<p>Tentei <a href="http://www.mydigitallife.info/2007/08/24/slow-file-and-folder-copy-move-transfer-or-delete-operation-speed-problem-in-vista-fix/">algumas soluções</a> para o problema.</p>
<p>Bom, agora demora algumas dezenas de minutos&#8230;..</p>
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace" rel="bookmark" title="14 de abril de 2009">Bug no Plugin de estatísticas do UMinho para o DSpace</a></li>
<li><a href="http://seiti.eti.br/blog/2008/iis-e-arquivos-mdb-e-mdf-tambem" rel="bookmark" title="17 de novembro de 2008">IIS e arquivos mdb (e mdf também!)</a></li>
<li><a href="http://seiti.eti.br/blog/2008/microsoft-projeto-mojave" rel="bookmark" title="25 de julho de 2008">Microsoft: Projeto Mojave</a></li>
<li><a href="http://seiti.eti.br/blog/2006/agrupando-arquivos-na-arvore-do-vs-2005" rel="bookmark" title="21 de dezembro de 2006">Agrupando arquivos na árvore do VS 2005</a></li>
</ul>
<p><!-- Similar Posts took 5.006 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/lerdeza-para-remover-arquivos-no-vista/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DNS poisoning na NET Virtua</title>
		<link>http://seiti.eti.br/blog/2009/dns-poisoning-na-net-virtua</link>
		<comments>http://seiti.eti.br/blog/2009/dns-poisoning-na-net-virtua#comments</comments>
		<pubDate>Tue, 14 Apr 2009 06:57:02 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[virtua]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=393</guid>
		<description><![CDATA[Andaram alterando o cache do DNS server do provedor de acesso à internet NET Virtua: Pra finalizar: Não utilizem os servidores DNS do Net Virtua! Fraude eletrônica no DNS do Net Virtua Moral da história: utilize o Open DNS. Chame &#8230; <a href="http://seiti.eti.br/blog/2009/dns-poisoning-na-net-virtua">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone" src="http://www.globoonliners.com.br/upload/escritofoto/17423.jpg" alt="" width="209" height="140" /></p>
<p>Andaram alterando o cache do DNS server do provedor de acesso à internet NET Virtua:<br />
<a href="http://stoa.usp.br/walrus/weblog/47484.html"><br />
Pra finalizar: Não utilizem os servidores DNS do Net Virtua!</a><br />
<a href="http://stoa.usp.br/calsaverini/weblog/47461.html">Fraude eletrônica no DNS do Net Virtua</a></p>
<p>Moral da história: utilize o <a href="http://www.opendns.com">Open DNS</a>. Chame aquele parente teu que manja de computador para configurar isto para você!<br />
Saia da Sibéria! E caia numa fria se usar os DNS da NET!
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/httppostedfile-ie-versus-firefox" rel="bookmark" title="17 de maio de 2009">HttpPostedFile: IE versus Firefox</a></li>
<li><a href="http://seiti.eti.br/blog/2009/lerdeza-para-remover-arquivos-no-vista" rel="bookmark" title="24 de abril de 2009">Lerdeza para remover arquivos no Vista?</a></li>
<li><a href="http://seiti.eti.br/blog/2010/fluent-nhibernate" rel="bookmark" title="19 de julho de 2010">Fluent NHibernate</a></li>
<li><a href="http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace" rel="bookmark" title="14 de abril de 2009">Bug no Plugin de estatísticas do UMinho para o DSpace</a></li>
</ul>
<p><!-- Similar Posts took 8.285 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/dns-poisoning-na-net-virtua/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bug no Plugin de estatísticas do UMinho para o DSpace</title>
		<link>http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace</link>
		<comments>http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace#comments</comments>
		<pubDate>Tue, 14 Apr 2009 05:44:49 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[dspace]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=384</guid>
		<description><![CDATA[O DSpace é um sistema de armazenamento digital. O plugin de estatísticas foi desenvolvido pelo pessoal da Universidade do Minho. Notei que o plugin não estava funcionando, após a epopéia da instalação. No arquivo dspace-1.4-source/src/org/dspace/stats/util/Country.java, a linha 63 faz referência &#8230; <a href="http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.dspace.org/">DSpace</a> é um sistema de armazenamento digital. O <a href="http://wiki.dspace.org/index.php/StatisticsAddOn">plugin de estatísticas</a> foi desenvolvido pelo pessoal da <a href="https://repositorium.sdum.uminho.pt/">Universidade do Minho</a>.</p>
<p>Notei que o plugin não estava funcionando, após a <a href="http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace">epopéia da instalação</a>.</p>
<p>No arquivo <em>dspace-1.4-source/src/org/dspace/stats/util/Country.java</em>, a linha 63 faz referência a um arquivo cujo caminho está <strong>hardcoded</strong>:</p>
<pre class="prettyprint">String dbfile = "/dspace/config/stats/GeoIP.dat";</pre>
<p>Infelizmente o caminho para o arquivo em meu sistema fica em outro lugar. O melhor seria configurar isto em um arquivo separado. Mas por enquanto deixo assim:</p>
<pre class="prettyprint">String dbfile = "/opt/dspace/config/stats/GeoIP.dat";</pre>
<p>Compile o código e faça o deploy dos arquivos <em>war</em>. Não se esqueça de logar no banco de dados Postgresql e rodar a seguinte consulta:</p>
<pre class="prettyprint">SELECT sqlj.replace_jar('file:///opt/dspace/lib/dspace.jar', 'dspace',  true);</pre>
<p>Note o <strong>replace</strong>_jar. Aponte para o caminho correto do arquivo.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace" rel="bookmark" title="14 de abril de 2009">AddOn de estatísticas do DSpace</a></li>
<li><a href="http://seiti.eti.br/blog/2009/httppostedfile-ie-versus-firefox" rel="bookmark" title="17 de maio de 2009">HttpPostedFile: IE versus Firefox</a></li>
<li><a href="http://seiti.eti.br/blog/2009/linq-to-sql" rel="bookmark" title="13 de abril de 2009">Linq to Sql</a></li>
<li><a href="http://seiti.eti.br/blog/2009/lerdeza-para-remover-arquivos-no-vista" rel="bookmark" title="24 de abril de 2009">Lerdeza para remover arquivos no Vista?</a></li>
</ul>
<p><!-- Similar Posts took 5.261 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AddOn de estatísticas do DSpace</title>
		<link>http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace</link>
		<comments>http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace#comments</comments>
		<pubDate>Tue, 14 Apr 2009 05:42:33 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[dspace]]></category>
		<category><![CDATA[instalação]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=363</guid>
		<description><![CDATA[O Dspace é um sistema de Biblioteca Digital implementado em Java, que gerencia e armazena documentos digitais e seus dados descritivos. Um dos pontos fracos dele é o sistema de estatísticas, que é bem simplório, ainda mais quando nos acostumamos &#8230; <a href="http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dspace.org"><img class="alignnone" src="http://www.dspace.org/templates/dspace_home//images/logo.jpg" alt="" width="85" height="92" /></a> O <a href="http://www.dspace.org/"><strong>Dspace</strong></a> é um sistema de Biblioteca Digital implementado em Java, que gerencia e armazena documentos digitais e seus dados descritivos.</p>
<p>Um dos pontos fracos dele é o sistema de estatísticas, que é bem simplório, ainda mais quando nos acostumamos com coisas como o <em>Google Analytics</em>.</p>
<p>Mas a Universidade do Minho desenvolveu um addon que <a href="http://wiki.dspace.org/index.php/StatisticsAddOn">oferece um sistema</a> bem mais completo de estatísticas.</p>
<p>Para instalá-lo, basta seguir a documentação oficial, que segue basicamente este checklist:</p>
<ul>
<li><a href="http://seiti.eti.br/blog/2009/instalando-pljava-no-postgresql">Instalar o PL/Java</a></li>
<li>Criar a linguagem PL/Java no esquema dspace:<code>createlang -U postgres plpgsql dspace</code></li>
<li>Rodar os scripts SQL no banco do DSpace;</li>
<li>Instalar o código java;</li>
<li>Editar algum código Java;</li>
<li>Criar tags jsp;</li>
<li>Criar entradas na configuração do log4j, para que ele inclua dados em uma tabela no bd;</li>
<li>Atualizar e inserir alguns dados no BD;</li>
<li>Compilar o código atualizado do DSpace;</li>
<li>Implantar os arquivos war gerados;</li>
<li>Registrar no BD os arquivos jar gerados;</li>
<li>Pronto! Visite http://www.example.com/stats</li>
</ul>
<p>Nota: cuidado com <a href="http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace">um bug</a> que encontrei!!</p>
<p>Para que este sistema de estatísticas funcione corretamente, identificando a região de origem do visitante do site, não se esqueça de usar o <strong>mod_jk</strong>, se você estiver utilizando o Apache como frontend do Tomcat. Não utilize acesso Proxy, senão qualquer acesso será registrado como proveniente da própria máquina. </p>
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2009/bug-no-plugin-de-estatisticas-do-uminho-para-o-dspace" rel="bookmark" title="14 de abril de 2009">Bug no Plugin de estatísticas do UMinho para o DSpace</a></li>
</ul>
<p><!-- Similar Posts took 3.188 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/addon-de-estatisticas-do-dspace/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Instalando PLJava no PostgreSQL</title>
		<link>http://seiti.eti.br/blog/2009/instalando-pljava-no-postgresql</link>
		<comments>http://seiti.eti.br/blog/2009/instalando-pljava-no-postgresql#comments</comments>
		<pubDate>Wed, 01 Apr 2009 03:09:04 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[banco de dados]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=350</guid>
		<description><![CDATA[O PostgreSQL, como muitos outros bancos de dados, possibilita ao programador criar procedimentos em linguagens específicas. Entre elas o Java, ou PL/Java. Vou documentar aqui como instalei o PL/Java no Ubuntu, mas creio que as instruções aqui sejam agnósticas o &#8230; <a href="http://seiti.eti.br/blog/2009/instalando-pljava-no-postgresql">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O PostgreSQL, como muitos outros bancos de dados, possibilita ao programador criar procedimentos em linguagens específicas. Entre elas o <em>Java</em>, ou <em>PL/Java</em>.</p>
<p>Vou documentar aqui como instalei o PL/Java no <strong>Ubuntu</strong>, mas creio que as instruções aqui sejam agnósticas o suficiente para servirem a outras distros. Vamos lá:</p>
<ul>
<li>Baixar o pacote do <a href="http://pgfoundry.org/projects/pljava/">PL/Java</a>.</li>
<li>Obter o pacote postgresql.jar.</li>
<li>Abrir o pacote do PL/Java.</li>
<li>Copiar o arquivo postgresql.jar no diretório criado.</li>
<li>Copiar o pljava.so para o diretório <em>/usr/lib/postgresql/8.3/lib</em></li>
<li>Editar o arquivo <tt>/etc/postgresql/8.3/main/postgresql.conf</tt>:<code>custom_variable_classes = 'pljava'</code></li>
<li>Criar e editar o arquivo <em>/etc/ld.so.confi.d/jvm.conf</em> com o seguinte conteúdo:<code class="prettyprint"><br />
/usr/lib/jvm/java-6-sun/jre/lib/i386/<br />
/usr/lib/jvm/java-6-sun/jre/lib/i386/client/<br />
</code></li>
<li> Rodar o <em>ldconfig</em>:<code class="prettyprint"><br />
sudo ldconfig<br />
</code></li>
<li> Finalmente instalar o pljava em seu banco de dados:<code class="prettyprint"><br />
sudo java -classpath ./deploy.jar:./postgresql.jar  org.postgresql.pljava.deploy.Deployer -install -database meubanco -user postgres<br />
</code></li>
</ul>
<p>PL/Java instalado no banco de dados!</p>
<p>Em caso de problemas, existe um ótmo tutorial aqui: http://eltonplima.blogspot.com/2008/11/instalando-o-pljava-no-ubuntu.html</p>
<p>Se surgir algum problema do tipo <em>undefined symbol</em>, verifique se você instalou a versão correta do pacote do PL/Java, ou uma <a href="http://pgfoundry.org/pipermail/pljava-dev/2008/001280.html">outra versão compilada do PL/Java</a>, se aparecer um erro contendo  <em>assert_enabled</em>.
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2008/editando-codigo-sql-no-eclipse" rel="bookmark" title="25 de junho de 2008">Editando código SQL no Eclipse</a></li>
<li><a href="http://seiti.eti.br/blog/2009/nao-consegue-listar-os-databases-no-sql-management-studio" rel="bookmark" title="16 de junho de 2009">Não consegue listar os Databases no SQL Management Studio?</a></li>
</ul>
<p><!-- Similar Posts took 3.937 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/instalando-pljava-no-postgresql/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fontpark 2.0</title>
		<link>http://seiti.eti.br/blog/2009/fontpark-20</link>
		<comments>http://seiti.eti.br/blog/2009/fontpark-20#comments</comments>
		<pubDate>Wed, 28 Jan 2009 02:52:05 +0000</pubDate>
		<dc:creator>seiti</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[arte]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[jogo]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://seiti.eti.br/blog/?p=306</guid>
		<description><![CDATA[Para quem não sabe, no fim do ano passado, 2008, ocorreu o Japan Media Arts Festival. Olhando a lista de vencedores, me interessei por esta entrada: FONTPARK 2.0, de Nakamura Yugo. Entrei no site premiado e me surpreendi. Se trata &#8230; <a href="http://seiti.eti.br/blog/2009/fontpark-20">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para quem não sabe, no fim do ano passado, 2008, <a href="http://plaza.bunka.go.jp/english/festival/2008/winner.php">ocorreu o Japan Media Arts Festival</a>. Olhando a lista de vencedores, me interessei por esta entrada: <a href="http://plaza.bunka.go.jp/english/festival/2008/entertainment/001062/">FONTPARK 2.0</a>, de Nakamura Yugo.</p>
<p>Entrei no site premiado e me surpreendi. Se trata de <em>arte interativa</em> da mais alta qualidade. E o que é melhor, é <strong>divertido</strong>!</p>
<p>A idéia é você criar alguma coisa visual:  um desenho, um logo, uma animação,  uma paisagem. Mas para isto utilizando apenas <strong>letras</strong>. E tais letras, ou <em>caracteres</em> para os colegas, podem ser do nosso alfabeto (que agora conta com 26 letras! ha!) ou do japonês! Milhares de opções para você montar sua ilustração,  desenho, paisagem ou o diabo que for.</p>
<p>Deixo com vocês minha criação:<br />
<script type="text/javascript"><!--
__fpbp_id='s60ginhlg3qmugv';__fpbp_w=400;__fpbp_h=300;
// --></script><br />
<script src="http://fontpark.morisawa.co.jp/js/blogparts.js" type="text/javascript"></script></p>
<p>(Já notaram que não tenho dom artístico?)</p>
<p>Tente você também: <a href="http://fontpark.morisawa.co.jp/">http://fontpark.morisawa.co.jp/</a>
<p><strong>Posts relacionados</strong>
<ul class="similar-posts">
<li><a href="http://seiti.eti.br/blog/2008/custom-fields-no-gallery2" rel="bookmark" title="29 de maio de 2008">Custom Fields no Gallery2</a></li>
<li><a href="http://seiti.eti.br/blog/2009/multiplas-imagens-no-topo-do-seu-blog" rel="bookmark" title="2 de maio de 2009">Múltiplas imagens no topo do seu blog</a></li>
<li><a href="http://seiti.eti.br/blog/2009/programar-e-arte" rel="bookmark" title="17 de setembro de 2009">Programar é arte</a></li>
<li><a href="http://seiti.eti.br/blog/2011/asp-net-web-forms-e-ninjas-parte-1" rel="bookmark" title="5 de setembro de 2011">Asp.Net, Web Forms e Ninjas &#8211; Parte 1</a></li>
</ul>
<p><!-- Similar Posts took 6.182 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://seiti.eti.br/blog/2009/fontpark-20/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

