<?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>Rogério Lino</title>
	<atom:link href="http://rogeriolino.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://rogeriolino.com</link>
	<description>Desenvolvimento Web, tecnologia, jogos e etcetera</description>
	<lastBuildDate>Sun, 29 Aug 2010 12:01:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>CSS: Footer always in bottom</title>
		<link>http://rogeriolino.com/2010/06/17/css-footer-always-in-bottom/</link>
		<comments>http://rogeriolino.com/2010/06/17/css-footer-always-in-bottom/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 14:51:50 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[always]]></category>
		<category><![CDATA[baixo]]></category>
		<category><![CDATA[bottom]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[posicao]]></category>
		<category><![CDATA[position]]></category>
		<category><![CDATA[relative]]></category>
		<category><![CDATA[rodape]]></category>
		<category><![CDATA[sempre]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=303</guid>
		<description><![CDATA[É muito comum vermos pessoas procurando saber como deixar um elemento HTML sempre no final da página, mas caso a página seja redimensionada criando rolagem, esse elemento continue no final dela. Ou seja, não apenas colocar o elemento com position fixed. Para tal exemplo vamos precisar de um HTML simples: &#60;html&#62; &#60;head&#62; &#60;/head&#62; &#60;body&#62; &#60;div [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2006/07/20/layout-2/' rel='bookmark' title='Permanent Link: Layout #2'>Layout #2</a></li>
<li><a href='http://rogeriolino.com/2006/07/13/layout-1/' rel='bookmark' title='Permanent Link: Layout #1'>Layout #1</a></li>
<li><a href='http://rogeriolino.com/2006/11/25/tutorial-caixa-de-contrato/' rel='bookmark' title='Permanent Link: Tutorial Caixa de Contrato'>Tutorial Caixa de Contrato</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>É muito comum vermos pessoas procurando saber como deixar um elemento HTML sempre no final da página, mas caso a página seja redimensionada criando rolagem, esse elemento continue no final dela. Ou seja, não apenas colocar o elemento com position fixed.</p>
<p>Para tal exemplo vamos precisar de um HTML simples:</p>
<pre name="code" class="html">
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="page"&gt;
        &lt;div id="content"&gt;
            &lt;h1&gt;Footer always in bottom&lt;/h1&gt;
            &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet imperdiet justo, quis congue velit egestas quis. Suspendisse ac tellus vitae est ultrices imperdiet eget at dolor. Donec sit amet viverra arcu. Aenean pulvinar vehicula justo, tincidunt congue nisi pharetra eu. Suspendisse potenti. Sed libero quam, lacinia at facilisis eu, egestas sodales dolor. Duis gravida, diam interdum cursus dictum, ligula libero pellentesque lacus, vitae viverra nulla metus id erat. Suspendisse fermentum aliquam hendrerit. Sed vulputate massa ut felis sagittis molestie. Suspendisse facilisis condimentum diam, a hendrerit urna venenatis sit amet. Cras orci diam, aliquam quis fringilla ac, euismod vel orci. Quisque ac pharetra nisi. Quisque et orci ligula. Praesent lacus felis, bibendum ac varius ac, eleifend in nulla. Aliquam sodales porttitor iaculis. Aliquam pretium risus ac neque egestas convallis. Sed dignissim massa ut odio vestibulum gravida ut vel nulla.&lt;/p&gt;
            &lt;p&gt;Sed non lacus in nibh lobortis imperdiet. Aliquam auctor tellus quis elit adipiscing consequat. Ut in elit at orci dapibus gravida interdum eget sapien. Sed lobortis, massa nec aliquet aliquet, nulla mi tincidunt quam, id iaculis turpis nibh interdum leo. Curabitur in lorem et risus ultrices pharetra. Mauris adipiscing eros vitae diam sodales et rutrum velit consequat. Fusce adipiscing congue ultrices. Nullam fermentum ullamcorper urna a malesuada. Sed sit amet congue tortor. Nulla accumsan blandit diam sed feugiat. Morbi lobortis fermentum metus, ac pulvinar dui commodo ut.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div id="footer"&gt;
            &lt;p&gt;footer here&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>E o CSS abaixo:</p>
<pre name="code" class="css">
* {
    padding: 0px;
    margin: 0px;
}

html, body {
    height: 100%;
}

#page {
    min-height: 100%;
    position: relative;
}

#footer {
    width: 100%;
    bottom: 0;
    position: absolute;
}
</pre>
<p>O <a href="http://www17.brinkster.com/chivalrous/exemplos/footer.html" title="Example">exemplo funcionando você confere aqui</a>.</p>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2006/07/20/layout-2/' rel='bookmark' title='Permanent Link: Layout #2'>Layout #2</a></li>
<li><a href='http://rogeriolino.com/2006/07/13/layout-1/' rel='bookmark' title='Permanent Link: Layout #1'>Layout #1</a></li>
<li><a href='http://rogeriolino.com/2006/11/25/tutorial-caixa-de-contrato/' rel='bookmark' title='Permanent Link: Tutorial Caixa de Contrato'>Tutorial Caixa de Contrato</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/06/17/css-footer-always-in-bottom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript Game Engine for HTML5 Canvas</title>
		<link>http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/</link>
		<comments>http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/#comments</comments>
		<pubDate>Thu, 06 May 2010 19:04:35 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[scenegraph]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=292</guid>
		<description><![CDATA[Comecei escrever um pequeno projeto para facilitar a criação de jogos em Javascript utilizando HTML5 Canvas para isso. Baseado em scenegraph podendo criar nós dependentes, relativos ao nó pai. Por enquanto a estrutura da engine é composta por: Canvas: para encapsular a tag canvas, pegando automaticamente o context e fornecendo algumas funções a mais. Game: [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2010/02/02/javascript-games/' rel='bookmark' title='Permanent Link: Javascript: Games'>Javascript: Games</a></li>
<li><a href='http://rogeriolino.com/2010/03/11/html5-database/' rel='bookmark' title='Permanent Link: HTML5: Database'>HTML5: Database</a></li>
<li><a href='http://rogeriolino.com/2010/02/19/html5-video-player/' rel='bookmark' title='Permanent Link: HTML5: Video Player'>HTML5: Video Player</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Comecei escrever um pequeno projeto para facilitar a criação de jogos em Javascript utilizando HTML5 Canvas para isso. Baseado em <a href="http://en.wikipedia.org/wiki/Scene_graph">scenegraph</a> podendo criar nós dependentes, relativos ao nó pai. Por enquanto a estrutura da engine é composta por:</p>
<p><strong>Canvas:</strong> para encapsular a tag canvas, pegando automaticamente o context e fornecendo algumas funções a mais.</p>
<p><strong>Game:</strong> o jogo em sí, possui uma ou muitas cenas (Scene). Contém o loop principal para atualizações do canvas. Necessita de uma instância do Canvas.</p>
<p><strong>Scene:</strong> deve ser estendida para criar cenas customizadas, deve implementar o método update(interval).</p>
<p><strong>CanvasNode:</strong> um nó do grafo, possui as coordenadas e ângulo de rotação do elemento no canvas.</p>
<p><strong>CanvasNodeGroup:</strong> um grupo de nós. Estende CanvasNode.</p>
<p><strong>Graphics:</strong> um nó &#8220;printável&#8221;, quem for estendê-lo deve implementar o método draw(). Possui como subclasses: Rectangle, Triangle, Circle, Text, Image2d e Line.</p>
<p><strong>GraphicsGroup:</strong> estende CanvasNodeGroup, possui um grupo de graphics. Scene é um GraphicsGroup.</p>
<p>Os próximos passos serão a implementação de TileMap, Scene Intro, Menu e botões. Agora é só aguardar até o próximo exemplo.</p>
<p><strong>[update 2010-05-06]</strong><br />
Added mouse and button support.<br />
See example above.<br />
<strong>[/update]</strong></p>
<p><strong>[update 2010-05-06]</strong><br />
Examples in <a href="http://mangame.rogeriolino.com/">http://mangame.rogeriolino.com/</a><br />
<strong>[/update]</strong></p>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2010/02/02/javascript-games/' rel='bookmark' title='Permanent Link: Javascript: Games'>Javascript: Games</a></li>
<li><a href='http://rogeriolino.com/2010/03/11/html5-database/' rel='bookmark' title='Permanent Link: HTML5: Database'>HTML5: Database</a></li>
<li><a href='http://rogeriolino.com/2010/02/19/html5-video-player/' rel='bookmark' title='Permanent Link: HTML5: Video Player'>HTML5: Video Player</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP: Socket Class</title>
		<link>http://rogeriolino.com/2010/04/22/php-socket-class/</link>
		<comments>http://rogeriolino.com/2010/04/22/php-socket-class/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 19:19:03 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[classe]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[udp]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=284</guid>
		<description><![CDATA[Muitas linguagens oferecem suporte a Sockets, e com PHP não é diferente, porém a falta de orientação a objetos nas funções do PHP pode ser um inconveniente para algumas pessoas. E como eu me incluo entre essas pessoas, quando precisei utilizar sockets em PHP acabei criando um classe para englobar essas funções soltas e fornecer [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2010/03/26/php-annotations/' rel='bookmark' title='Permanent Link: PHP: Annotations'>PHP: Annotations</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Muitas linguagens oferecem suporte a <a href="http://en.wikipedia.org/wiki/Internet_socket">Sockets</a>, e com <a href="http://php.net/manual/en/book.sockets.php">PHP</a> não é diferente, porém a falta de orientação a objetos nas funções do PHP pode ser um inconveniente para algumas pessoas. E como eu me incluo entre essas pessoas, quando precisei utilizar sockets em PHP acabei criando um classe para englobar essas funções soltas e fornecer tratamento a erros.</p>
<pre name="code" class="php">/**
 * Copyright 2010 Rogerio Alencar Lino Filho
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Socket
 *
 * @author rogeriolino
 */
class Socket {

    private $port     = 3000;
    private $address  = "localhost";
    private $blocking = true;

    private $buffer   = 2048;
    private $backlog  = 5;

    private $type     = SOCK_STREAM;
    private $family   = AF_INET;
    private $protocol = SOL_TCP;

    private $resource;

    /**
     * Socket constructor
     * @param  $resource
     */
    public function  __construct($resource = null) {
        if ($resource == null) {
            $this-&gt;resource = socket_create($this-&gt;family, $this-&gt;type, $this-&gt;protocol);
        } else {
            $this-&gt;resource = $resource;
        }
    }

    /**
     * Returns the socket port
     * @return int
     */
    public function get_port() {
        return $this-&gt;port;
    }

    /**
     * Define the socket port
     * @param int $port
     */
    public function set_port($port) {
        $this-&gt;port = $port;
    }

    /**
     *
     * @return string
     */
    public function get_address() {
        return $this-&gt;address;
    }

    public function set_address($address) {
        $this-&gt;address = $address;
    }

    /**
     * Returns if the socket is blocking mode
     * @return boolean
     */
    public function is_blocking() {
        return $this-&gt;blocking;
    }

    /**
     * Defines whether the socket is blocking or nonblocking mode
     * @param boolean $block
     */
    public function set_blocking($blocking) {
        $this-&gt;blocking = ($blocking == true);
        $this-&gt;update_blocking_mode();
    }

    /**
     * Returns the socket communication type
     * @return int
     */
    public function get_type() {
        return $this-&gt;type;
    }

    /**
     * Define the socket communication type
     * @param int $type
     */
    public function set_type($type) {
        if ($type == SOCK_STREAM || $type == SOCK_DGRAM || $type == SOCK_SEQPACKET || $type == SOCK_RAW || $type == SOCK_RDM) {
            $this-&gt;type = $type;
        } else {
            throw new Socket_Exception("Invalid socket communication type");
        }
    }

    /**
     * Returns the socket protocol family
     * @return int
     */
    public function get_family() {
        return $this-&gt;family;
    }

    /**
     * Define the socket protocol family
     * @param int $family
     */
    public function set_family($family) {
        if ($family == AF_INET || $family == AF_INET6 || $family == AF_UNIX) {
            $this-&gt;family = $family;
        } else {
            throw new Socket_Exception("Invalid socket protocol family");
        }
    }

    /**
     * Returns the socket protocol
     * @return int
     */
    public function get_protocol() {
        return $this-&gt;protocol;
    }

    /**
     * Define the socket protocol, must be compatible whit the protocol family
     * @param int $protocol
     */
    public function set_protocol($protocol) {
        if ($protocol == SOL_TCP || $protocol == SOL_UDP || $protocol == SOL_SOCKET) {
            $this-&gt;protocol = $protocol;
        } else {
            throw new Socket_Exception("Invalid socket protocol");
        }
    }

    /**
     * Binds to a socket
     * @throws Socket_Exception
     */
    public function bind() {
        if (socket_bind($this-&gt;resource, $this-&gt;address, $this-&gt;port) === false) {
            throw new Socket_Exception("Socket bind failed: " . $this-&gt;error());
        }
    }

    /**
     * Listens for a connection on a socket
     * @throws Socket_Exception
     */
    public function listen() {
        if (socket_listen($this-&gt;resource, $this-&gt;backlog) === false) {
            throw new Socket_Exception("Socket listen failed: " . $this-&gt;error());
        }
    }

    /**
     * Accepts a connection
     * @throws Socket_Exception
     * @return Socket
     */
    public function accept() {
        $sock = socket_accept($this-&gt;resource);
        if ($sock === false) {
            throw new Socket_Exception("Socket accept failed: " . $this-&gt;error());
        }
        return new Socket($sock);
    }

    /**
     * Reads data from the connected socket
     * @return string
     */
    public function read() {
        $data = "";
        while (($m = socket_read($this-&gt;resource, $this-&gt;buffer)) != "") {
            $data .= $m;
        }
        return $data;
    }

    /**
     * Write the data to connected socket
     * @param string $message
     */
    public function write($data) {
        socket_write($this-&gt;resource, $data, strlen($data));
    }

    /**
     * Initiates a connection on a socket
     * @throws Socket_Exception
     * @return boolean
     */
    public function connect() {
        try {
            return socket_connect($this-&gt;resource, $this-&gt;address, $this-&gt;port);
        } catch (Socket_Exception $e) {
            return false;
        }
    }

    /**
     * Close the socket connection
     */
    public function close() {
        socket_close($this-&gt;resource);
    }

    private function update_blocking_mode() {
        if ($this-&gt;blocking) {
            socket_set_block($this-&gt;resource);
        } else {
            socket_set_nonblock($this-&gt;resource);
        }
    }

    private function error() {
        return socket_strerror(socket_last_error($this-&gt;resource));
    }

}
</pre>
<p>Classe para as exceções:</p>
<pre name="code" class="php">/**
 * Copyright 2010 Rogerio Alencar Lino Filho
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Socket_Exception
 *
 * @author rogeriolino
 */
class Socket_Exception extends Exception {

    public function  __construct($message, $code = 0, $previous = null) {
        $this-&gt;message = $message;
        $this-&gt;code = $code;
        $this-&gt;message = $previous;
    }

}
</pre>
<p>Espero que seja de bom aproveito.</p>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2010/03/26/php-annotations/' rel='bookmark' title='Permanent Link: PHP: Annotations'>PHP: Annotations</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/04/22/php-socket-class/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Twitter: Resumo #2</title>
		<link>http://rogeriolino.com/2010/04/08/twitter-resumo-2/</link>
		<comments>http://rogeriolino.com/2010/04/08/twitter-resumo-2/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 22:33:08 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Twitter]]></category>
		<category><![CDATA[bespin]]></category>
		<category><![CDATA[bubbles]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[reddit]]></category>
		<category><![CDATA[resumo]]></category>
		<category><![CDATA[sgv]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[steam]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[valve]]></category>
		<category><![CDATA[wow]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=221</guid>
		<description><![CDATA[SVG Wow Demos Code Bubbles: Rethinking the User Interface Paradigm of IDEs JSON visualization tool Reloading Java Classes: HotSwap and JRebel &#8211; Behind the Scenes Justiça volta a incluir Anatel como ré em processo que questiona banda larga HTML5 Database Valve Brings Hit Games, Steam Service to Mac Bespin Code in the Cloud Com novo [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2010/03/05/twitter-resumo-1/' rel='bookmark' title='Permanent Link: Twitter: Resumo #1'>Twitter: Resumo #1</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a title="Follow me!" href="http://twitter.com/rogeriolino"><img class="aligncenter size-full wp-image-227" src="http://rogeriolino.com/wp-content/uploads/2010/03/Twitter.gif" alt="Twitter" width="300" height="300" /></a></p>
<ul>
<li><a href="http://bit.ly/9e0f43">SVG Wow Demos</a></li>
<li><a href="http://bit.ly/9V8vNl">Code Bubbles: Rethinking the User Interface Paradigm of IDEs</a></li>
<li><a href="http://bit.ly/blEHlO">JSON visualization tool</a></li>
<li><a href="http://bit.ly/cQYvpx">Reloading Java Classes: HotSwap and JRebel &#8211; Behind the Scenes</a></li>
<li><a href="http://bit.ly/dqDWXN">Justiça volta a incluir Anatel como ré em processo que questiona banda larga</a></li>
<li><a href="http://bit.ly/9Vfaww">HTML5 Database</a></li>
<li><a href="http://bit.ly/aHcpYC">Valve Brings Hit Games, Steam Service to Mac</a></li>
<li><a href="http://bit.ly/dofBNt">Bespin Code in the Cloud</a></li>
<li><a href="http://bit.ly/9EM04F">Com novo roteador, Cisco promete turbinar internet do futuro</a></li>
<li><a href="http://bit.ly/akLBcU">Google Island e a banda larga ultrarrápida</a></li>
<li><a href="http://bit.ly/bS5o1k">The Reddit problem: Learning from mistakes</a></li>
<li><a href="http://bit.ly/czdLxj">NoSQL v. SQL is the worst holy war ever.</a></li>
</ul>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2010/03/05/twitter-resumo-1/' rel='bookmark' title='Permanent Link: Twitter: Resumo #1'>Twitter: Resumo #1</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/04/08/twitter-resumo-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash: SWFAddress + ReWrite = SEO</title>
		<link>http://rogeriolino.com/2010/04/01/flash-swfaddress-rewrite-seo/</link>
		<comments>http://rogeriolino.com/2010/04/01/flash-swfaddress-rewrite-seo/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 14:44:53 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[ancora]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[asual]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[opensouce]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[swfaddress]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=262</guid>
		<description><![CDATA[SWFAddress é uma pequena mas poderosa biblioteca que provê deep linking para Flash e Ajax. É uma ferramenta de desenvolvimento, permitindo a criação de URLs unicas e virtuais que podem apontar para uma seção do site ou aplicação. SWFAddress habilita algumas de importantes capacidades que faltam hoje em dia nas tecnologias RIA, incluindo: Adicionar ao [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2007/01/29/flash-startdrag-e-stopdrag/' rel='bookmark' title='Permanent Link: Flash: startDrag() e stopDrag()'>Flash: startDrag() e stopDrag()</a></li>
<li><a href='http://rogeriolino.com/2007/04/09/wiki-flashmasters/' rel='bookmark' title='Permanent Link: Wiki FlashMasters'>Wiki FlashMasters</a></li>
<li><a href='http://rogeriolino.com/2007/01/12/flash-as2-hello-world/' rel='bookmark' title='Permanent Link: Flash: AS2 &#8220;Hello World!&#8221;'>Flash: AS2 &#8220;Hello World!&#8221;</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.asual.com/swfaddress"><img class="aligncenter size-full wp-image-263" title="Asual SWFAddress" src="http://rogeriolino.com/wp-content/uploads/2010/03/asual-swfaddress.jpg" alt="" width="451" height="39" /></a></p>
<blockquote><p><a href="http://www.asual.com/swfaddress">SWFAddress</a> é uma pequena mas poderosa biblioteca que provê <a href="http://en.wikipedia.org/wiki/Deep_linking">deep linking</a> para Flash e Ajax. É uma ferramenta de desenvolvimento, permitindo a criação de URLs unicas e virtuais que podem apontar para uma seção do site ou aplicação. SWFAddress habilita algumas de importantes capacidades que faltam hoje em dia nas tecnologias <a href="http://pt.wikipedia.org/wiki/RIA">RIA</a>, incluindo:</p>
<ul>
<li>Adicionar ao Favoritos de um navegador ou site social</li>
<li>Enviar links via email ou mensageiros instantâneos</li>
<li>Procurar por um conteúdo específico através dos sites de buscas</li>
<li>Utilizar o histórico do navegador e o botão de recarregar</li>
</ul>
</blockquote>
<p>O <a href="http://www.adobe.com/br/products/flash/">Flash</a> está para o <a href="http://en.wikipedia.org/wiki/Search_engine_optimization">SEO</a> assim como o <a href="http://cinemaeafins.com/files/2008/11/batmancoringa.jpg">Coringa está para o Batman</a>. Mas nem tudo está perdido quando se trata de otimizar a indexação do site em SWF nos mecanismos de busca. Com SWFAddress você pode interagir com a página via javascript alterando a URL e o próprio conteúdo do filme, possibilidade do o uso dos botões voltar e avançar do browser, adicionar ao Favoritos e alterar a animação do seu filme de acordo com a URL que está sendo requisitada.</p>
<p>Caso sua página seja acessada através da URL <strong>http://siteemflash.com/#contato</strong>, você poderá pular na timeline indo direto para o frame do contato. Para evitar o reload da página toda interação é feita através de âncoras html (#). E as alterações da URL utilizando âncoras são desprezadas pelos buscadores, uma vez que a âncora só serve para movimentar o foco na mesma página, logo o seu conteúdo permanece inalterado.</p>
<p>É aí que entra o <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">módulo ReWrite do Apache</a>, com o mod_rewrite podemos escrever condições para tratar as requisições, redirecionando-as ou não. Então voltando ao exemplo anterior, teríamos uma condição que quando for requisitada a página <strong>http://siteemflash.com/contato</strong> (ou qualquer outra URL) redireciona para a página inicial (index) adicionando a âncora para contato (#contato) e imprime na página o conteúdo referente à mesma. Esse conteúdo impresso não será visível, apenas para indexação. O <a href="http://pt.wikipedia.org/wiki/Sitemap">sitemap</a> ou a estrutura básica do site, também deve estar contido no bloco de código html invisível, juntamente com todas outras informações relevantes.</p>
<p>Resumindo, você acaba tendo um trabalho dobrado ao desenvolver o site, mas evita transtornos de indexação. É muito útil para quem não abre mão do site feito com o uso da ferramenta da Adobe.</p>
<p>No próprio site da Asual tem um <a href="http://www.asual.com/swfaddress/samples/seo/">exemplo de uso do SWFAddress para SEO</a> (o exemplo pode ser baixado pelo site). Abaixo segue alguns sites que fizeram uso da biblioteca, no qual o primeiro eu participei do desenvolvimento:</p>
<ul>
<li><a href="http://www.oticasparis.com.br/">Óticas Paris</a></li>
<li><a href="http://www.salinas-rio.com.br/inverno2010/">Salinas Rio -inverno2010</a></li>
<li><a href="http://www.umbro.com/">Umbro</a></li>
<li><a href="http://www.mis-architecture.co.uk/">Mis Architecture</a></li>
<li><a href="http://www.kraftfoods.com/foodandfamily">Kraftfoods &#8211; Food and Family</a></li>
<li><a href="http://www.bartleboglehegarty.com/">BBH</a></li>
</ul>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2007/01/29/flash-startdrag-e-stopdrag/' rel='bookmark' title='Permanent Link: Flash: startDrag() e stopDrag()'>Flash: startDrag() e stopDrag()</a></li>
<li><a href='http://rogeriolino.com/2007/04/09/wiki-flashmasters/' rel='bookmark' title='Permanent Link: Wiki FlashMasters'>Wiki FlashMasters</a></li>
<li><a href='http://rogeriolino.com/2007/01/12/flash-as2-hello-world/' rel='bookmark' title='Permanent Link: Flash: AS2 &#8220;Hello World!&#8221;'>Flash: AS2 &#8220;Hello World!&#8221;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/04/01/flash-swfaddress-rewrite-seo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP: Annotations</title>
		<link>http://rogeriolino.com/2010/03/26/php-annotations/</link>
		<comments>http://rogeriolino.com/2010/03/26/php-annotations/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 13:21:12 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[addendum]]></category>
		<category><![CDATA[annotations]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[reflection]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=249</guid>
		<description><![CDATA[É indiscutível a agilidade e facilidade de configuração que as annotations provêm no Java, e com o objetivo de trazer tal comodidade ao PHP surgiu o projeto Addendum &#8211; escrito por Jan Suchal &#8211; que permite via Reflection acessar as annotations das classes. As annotations devem ser escritas em blocos de comentários, uma vez que [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2010/04/22/php-socket-class/' rel='bookmark' title='Permanent Link: PHP: Socket Class'>PHP: Socket Class</a></li>
<li><a href='http://rogeriolino.com/2006/10/05/paradigma-orientado-a-objetos/' rel='bookmark' title='Permanent Link: Paradigma Orientado a Objetos'>Paradigma Orientado a Objetos</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>É indiscutível a agilidade e facilidade de configuração que as annotations provêm no <a href="http://java.sun.com/">Java</a>, e com o objetivo de trazer tal comodidade ao <a href="http://php.net">PHP</a> surgiu o projeto <a href="http://code.google.com/p/addendum/">Addendum</a> &#8211; escrito por <a href="http://jsmf.net/">Jan Suchal</a> &#8211; que permite via <a href="http://en.wikipedia.org/wiki/Reflection_(computer_science)">Reflection</a> acessar as annotations das classes.</p>
<p>As annotations devem ser escritas em blocos de comentários, uma vez que o <a href="http://thesmithfam.org/blog/2006/05/07/php-the-operator/">@</a> (caracter que inicia uma annotation) é um caractere reservado no PHP. Elas podem ser mono ou multi valoradas de acordo com os exemplos abaixo.</p>
<pre name="code" class="php">

// Custom annotation
class Persistent extends Annotation {}

// Custom annotation
class Table extends Annotation {}

// Multi valued annotation
class Secured extends Annotation {
   public $role;
   public $level;
}

/**
 * @Persistent
 * @Table("people")
 * @Secured(role = "admin", level = 2)
 */
class Person {
   // some code
}

// getting the annotation by class name
$reflection = new ReflectionAnnotatedClass('Person');

// getting the annotation by instance
$person = new Person();
$reflection = new ReflectionAnnotatedClass($person);

// true
$reflection->hasAnnotation('Persistent'); 

// contains string "people"
$reflection->getAnnotation('Table')->value; 
</pre>
<p>E seguindo na mesma onda da <a href="http://java.sun.com/javaee/technologies/persistence.jsp">JPA</a>, a <a href="http://www.doctrine-project.org/blog/php-5-3-and-doctrine-2-0-teaser">versão 2.0 do projeto Doctrine</a> implementou também a mesma funcionalidade e agora possui suas próprias annotations facilitando a configuração das classes de persistência e seus relacionamentos.</p>
<pre name="code" class="php">

/**
 * @DoctrineEntity(tableName="cms_articles")
 */
class CmsArticle {

   /**
    * @DoctrineId
    * @DoctrineColumn(type="integer")
    * @DoctrineIdGenerator("auto")
    */
   public $id;

   /**
    * @DoctrineColumn(type="varchar", length=255)
    */
   public $topic;

   /**
    * @DoctrineColumn(type="varchar")
    */
   public $text;

   /**
    * @DoctrineManyToOne(targetEntity="CmsUser",
           joinColumns={"user_id" = "id"})
    */
   public $user;

   /**
    * @DoctrineOneToMany(targetEntity="CmsComment", mappedBy="article")
    */
   public $comments;
}
</pre>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2010/04/22/php-socket-class/' rel='bookmark' title='Permanent Link: PHP: Socket Class'>PHP: Socket Class</a></li>
<li><a href='http://rogeriolino.com/2006/10/05/paradigma-orientado-a-objetos/' rel='bookmark' title='Permanent Link: Paradigma Orientado a Objetos'>Paradigma Orientado a Objetos</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/03/26/php-annotations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SGA Livre</title>
		<link>http://rogeriolino.com/2010/03/18/sga-livre/</link>
		<comments>http://rogeriolino.com/2010/03/18/sga-livre/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 12:51:13 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programas]]></category>
		<category><![CDATA[dataprev]]></category>
		<category><![CDATA[libjsx]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[publico]]></category>
		<category><![CDATA[sga]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=236</guid>
		<description><![CDATA[SGA LIVRE significa Sistema de Gerenciamento do Atendimento, versão Livre. É desenvolvido pela DATAPREV, totalmente baseado em tecnologias de software livre e de código aberto. Através do SGA é possível gerenciar filas e fluxo de atendimento em quaisquer tipos de empresas ou organizações que prestam serviço de atendimento presencial à pessoas. O SGA oferece o [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2008/07/03/python-pycacic/' rel='bookmark' title='Permanent Link: Python: PyCACIC'>Python: PyCACIC</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-239" title="SGA" src="http://rogeriolino.com/wp-content/uploads/2010/03/sga_logo.jpg" alt="" width="382" height="229" /></p>
<blockquote><p><strong>SGA LIVRE</strong> significa Sistema de Gerenciamento do Atendimento, versão Livre. É desenvolvido pela DATAPREV, totalmente baseado em tecnologias de software livre e de código aberto.</p>
<p>Através do SGA é possível gerenciar filas e fluxo de atendimento em quaisquer tipos de empresas ou organizações que prestam serviço de atendimento presencial à pessoas.</p>
<p>O SGA oferece o controle de filas de atendimento através de emissão de senhas e chamada das mesmas através de painéis. As filas de atendimento podem conter um único serviço ou um grupo de serviços. Os painéis podem chamar um, vários ou todos os serviços. Uma unidade de atendimento pode ter vários painéis.</p>
<p>O SGA é mais do que um sistema de controle de filas. Ao gerenciar o fluxo de atendimento, o sistema apresenta uma série de recursos que auxiliam na gerência e administração das unidades de atendimento.</p>
<p>Fornece uma diversidade de informações gerenciais preciosas, através de relatórios, estatísticas e gráficos avançados sobre atendimentos de uma unidade, de um grupo de unidades ou de todas elas. É possível obter estatísticas e tempos médios de atendimento por atendente, por período e por unidade, entre outras. Pode-se obter dados detalhados ou agregados.</p>
<p>As informações gerenciais fornecidas pelo SGA possibilitam aos gestores planejar, acompanhar, monitorar, otimizar e agilizar o atendimento aos clientes.</p>
<p>fonte: <a href="http://www.softwarepublico.gov.br/ver-comunidade?community_id=15719494">http://www.softwarepublico.gov.br/ver-comunidade?community_id=15719494</a></p></blockquote>
<p>Não é novidade o lançamento da versão livre do SGA, porém é com muito orgulho que hoje vejo este software ganhando força no cenário nacional, e também por ter participado do seu desenvolvimento. O software foi desenvolvido em <a href="http://php.net">PHP</a> fornecendo uma camada para abstração do <a href="http://en.wikipedia.org/wiki/Relational_database_management_system">RDMS</a>, utilizando como interface de acesso o <a href="http://php.net/manual/en/book.pdo.php">PDO</a> (suporte padrão ao <a href="http://www.postgresql.org">PostgreSQL</a>). Tal contribuição foi desde definir a estrutura do sistema, passando por diagramação, HTML, CSS, até a programação PHP e Javascript.</p>
<div id="attachment_238" class="wp-caption aligncenter" style="width: 304px"><a href="http://rogeriolino.com/wp-content/uploads/2010/03/sga_instalacao.jpg"><img class="size-medium wp-image-238" title="SGA: Instalação" src="http://rogeriolino.com/wp-content/uploads/2010/03/sga_instalacao-294x300.jpg" alt="" width="294" height="300" /></a><p class="wp-caption-text">Tela de instalação do SGA</p></div>
<p>Dividido em módulos é fácil customizar a ferramenta para atender as  necessidades específicas de qualquer centro de atendimento. Para facilitar o uso de requisições assíncronas no sistema foi  utilizada o código <a href="http://pt.wikipedia.org/wiki/AJAX_(programação)">Ajax</a> da lib escrita por mim e já comentada nesse blog (<a href="http://rogeriolino.com/2009/03/11/javascript-libjsx/">libjsx</a>, <a href="http://code.google.com/p/libjsx/source/browse/trunk/org/libjsx/ajax/Ajax.js">Ajax.js</a>).</p>
<p><a href="http://rogeriolino.com/wp-content/uploads/2010/03/sga_atendimento.jpg"></a></p>
<div id="attachment_237" class="wp-caption aligncenter" style="width: 310px"><a href="http://rogeriolino.com/wp-content/uploads/2010/03/sga_atendimento.jpg"><img class="size-medium wp-image-237" title="SGA: Atendimento" src="http://rogeriolino.com/wp-content/uploads/2010/03/sga_atendimento-300x239.jpg" alt="" width="300" height="239" /></a><p class="wp-caption-text">Tela de atendimento do SGA</p></div>
<p>Quem quiser utilizar ou contribuir com o projeto basta se cadastrar no site <a title="Portal do Software Público Brasileiro" href="http://www.softwarepublico.gov.br/">http://www.softwarepublico.gov.br/</a> e acessar a página da <a href="http://www.softwarepublico.gov.br/ver-comunidade?community_id=15719494">comunidade</a>.</p>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2008/07/03/python-pycacic/' rel='bookmark' title='Permanent Link: Python: PyCACIC'>Python: PyCACIC</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/03/18/sga-livre/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5: Database</title>
		<link>http://rogeriolino.com/2010/03/11/html5-database/</link>
		<comments>http://rogeriolino.com/2010/03/11/html5-database/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 19:17:36 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=207</guid>
		<description><![CDATA[Uma das funcionalidades mais robustas presentes nessa nova versão do HTML é exatamente o suporte ao armazenamento local, sem ser por Cookie mas sim pelo banco de dados presente no browser. Tal funcionalidade já está presente no Webkit que fornece uma aplicação de exemplo: http://webkit.org/demos/sticky-notes/. No Webkit as informações são armazenadas utilizando SQLite, e acredito [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2010/02/19/html5-video-player/' rel='bookmark' title='Permanent Link: HTML5: Video Player'>HTML5: Video Player</a></li>
<li><a href='http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/' rel='bookmark' title='Permanent Link: Javascript Game Engine for HTML5 Canvas'>Javascript Game Engine for HTML5 Canvas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Uma das funcionalidades mais robustas presentes nessa nova versão do HTML é exatamente o suporte ao armazenamento local, sem ser por <a href="http://pt.wikipedia.org/wiki/Cookie">Cookie</a> mas sim pelo banco de dados presente no browser. Tal funcionalidade já está presente no <a href="http://webkit.org">Webkit</a> que fornece uma aplicação de exemplo: <a href="http://webkit.org/demos/sticky-notes/">http://webkit.org/demos/sticky-notes/</a>.</p>
<p>No Webkit as informações são armazenadas utilizando <a href="http://www.sqlite.org/">SQLite</a>, e acredito que o Firefox irá pelo mesmo caminho, já que ele também utiliza o SQLite para armazenar os &#8220;Favoritos&#8221;.</p>
<p>Para abrir a conexão com a banco de dados (<strong>openDatabase</strong>) deve-se informar o nome do banco (<em>database name</em>), a versão (<em>database version</em>), o nome de exibição (<em>display name</em>) e o tamanho estimado em bytes (<em>estimated size</em>) que será armazenado.</p>
<pre name="code" class="javascript">
var db;
try {
    if (window.openDatabase) {
        db = openDatabase("MyDB", "1.0", "HTML5 Database Example", 200000);
        if (!db) {
            alert("Failed to open the database.");
        }
    } else {
        alert("Couldn't open the database.");
    }
} catch(err) { }
</pre>
<p>Uma vez estabelecida a conexão a interação passa ser efetuada através de comandos <a href="http://pt.wikipedia.org/wiki/SQL">SQL</a>.</p>
<pre name="code" class="javascript">
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE myTable (id REAL UNIQUE, name TEXT, description TEXT, timestamp REAL");
});

db.transaction(function (tx) {
tx.executeSql("INSERT INTO myTable (id, name, description, timestamp) VALUES (?, ?, ?, ?)", [id, name, description, timestamp]);
});

db.transaction(function(tx) {
tx.executeSql("DELETE FROM myTable WHERE id = ?", [id]);
});

db.transaction(function(tx) {
    tx.executeSql(
        "SELECT * FROM myTable WHERE id = ?",
         [id],
         function(tx, result) {
             // success
             if (result.rows.length > 0) {
                   alert("My name is: " + result.rows.item(0)['name']);
             } else {
                  alert("Sorry, no result for this id");
              }
         },
         function(tx, error) {
             // error
             alert("Error when try retrieve data: " + error.message);
         }
    );
});
</pre>
<p>O método <strong>executeSql</strong> pode receber 4 parâmetros, sendo eles:</p>
<ul>
<li>O SQL a ser executado</li>
<li>Os valores parametrizados para serem utilizados na consulta (array)</li>
<li>Função callback para ser executada caso haja sucesso (onSuccess)</li>
<li>Função callback para ser executada caso haja falha (onError)</li>
</ul>
<p>Sinceramente eu achei muito legal conceder mais esse poder ao Javascript no HTML5, porém <em>&#8220;com grandes poderes vêm grandes responsabilidades&#8221;</em>.</p>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2010/02/19/html5-video-player/' rel='bookmark' title='Permanent Link: HTML5: Video Player'>HTML5: Video Player</a></li>
<li><a href='http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/' rel='bookmark' title='Permanent Link: Javascript Game Engine for HTML5 Canvas'>Javascript Game Engine for HTML5 Canvas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/03/11/html5-database/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Twitter: Resumo #1</title>
		<link>http://rogeriolino.com/2010/03/05/twitter-resumo-1/</link>
		<comments>http://rogeriolino.com/2010/03/05/twitter-resumo-1/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 23:44:31 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[chart]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[ps3]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=199</guid>
		<description><![CDATA[IE6 Funeral The Computer Language Benchmarks Game Java Performance comparisons Ubuntu cada vez mais Mac Password Chart: bom para os gestores de redes Empresa aérea bane Flash de seu site Twitter Drops MySQL For Cassandra PS3 Bug Mercado de games sofre com falta de mão de obra Nova hierarquia para certificações Java Gostou dos links? [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2010/04/08/twitter-resumo-2/' rel='bookmark' title='Permanent Link: Twitter: Resumo #2'>Twitter: Resumo #2</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a title="Follow me!" href="http://twitter.com/rogeriolino"><img class="aligncenter size-full wp-image-227" src="http://rogeriolino.com/wp-content/uploads/2010/03/Twitter.gif" alt="" width="300" height="300" /></a></p>
<ul>
<li><a href="http://bit.ly/aLnYDH">IE6 Funeral</a></li>
<li><a href="http://bit.ly/9aolgt">The Computer Language Benchmarks Game</a></li>
<li><a href="http://bit.ly/c21JDs">Java Performance comparisons</a></li>
<li><a href="http://bit.ly/9on1mE">Ubuntu cada vez mais Mac</a></li>
<li><a href="http://bit.ly/bpO0QQ">Password Chart: bom para os gestores de redes</a></li>
<li><a href="http://bit.ly/aPGsB4">Empresa aérea bane Flash de seu site</a></li>
<li><a href="http://bit.ly/ciYcRG">Twitter Drops MySQL For Cassandra</a></li>
<li><a href="http://bit.ly/8XMxc2">PS3 Bug</a></li>
<li><a href="http://bit.ly/d8p6xw">Mercado de games sofre com falta de mão de obra</a></li>
<li><a href="http://bit.ly/cFMmvJ">Nova hierarquia para certificações Java</a></li>
</ul>
<p>Gostou dos links? <a href="http://twitter.com/rogeriolino">Follow me!</a></p>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2010/04/08/twitter-resumo-2/' rel='bookmark' title='Permanent Link: Twitter: Resumo #2'>Twitter: Resumo #2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/03/05/twitter-resumo-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5: Video Player</title>
		<link>http://rogeriolino.com/2010/02/19/html5-video-player/</link>
		<comments>http://rogeriolino.com/2010/02/19/html5-video-player/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 17:23:46 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[dailymotion]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[h.264]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[theora]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[vimeo]]></category>
		<category><![CDATA[vorbis]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=183</guid>
		<description><![CDATA[Para todos aqueles que odeiam o flash player e adoram assistir vídeos pela Internet, alguns portais de vídeos possuem uma alternativa ao plugin da Adobe para que os usuários possam assistir seus vídeos sem precisar de um plugin externo que pode deixar o browser mais lento e ocasionar travamentos. Isso se dá com a utilização [...]


Related posts:<ol><li><a href='http://rogeriolino.com/2010/03/11/html5-database/' rel='bookmark' title='Permanent Link: HTML5: Database'>HTML5: Database</a></li>
<li><a href='http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/' rel='bookmark' title='Permanent Link: Javascript Game Engine for HTML5 Canvas'>Javascript Game Engine for HTML5 Canvas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Para todos aqueles que odeiam o <a href="http://get.adobe.com/flashplayer">flash player</a> e adoram assistir vídeos pela Internet, alguns portais de vídeos possuem uma alternativa ao plugin da Adobe para que os usuários possam assistir seus vídeos sem precisar de um plugin externo que pode deixar o browser mais lento e ocasionar travamentos. Isso se dá com a utilização da <a href="http://www.w3schools.com/html5/html5_reference.asp">tag video do HTML5</a> que por sua vez varia dependendo da implementação de cada navegador.</p>
<p>No <a href="http://www.youtube.com/html5">Youtube por exemplo há uma página para sua versão experimental</a>. Ao acessar esta página destinada a habilitar o player em HTML5, eis que surgem algumas considerações e uma lista de browsers que o suportam:</p>
<ul>
<li><a href="http://www.google.com/chrome">Google Chrome</a></li>
<li><a href="http://www.apple.com/safari/download/">Apple Safari</a> (versão 4+)</li>
<li>Internet Explorer com o Google Chrome Frame</li>
</ul>
<p>Não incluindo o <a href="http://www.getfirefox.com/">Firefox</a>, um dos browsers mais utilizados no mundo e que suporta o HTML5. Mas para isso há uma explicação: O padrão de compressão adotado pelo Youtube é o <a href="http://pt.wikipedia.org/wiki/H.264">H.264</a> que não é suportado pelo Firefox devido ao fato deste formato ser proprietário e o pessoal da Mozilla utilizar <a href="http://en.wikipedia.org/wiki/Theora">Ogg Theora</a> como padrão. Motivo que <em>sem querer querendo</em> acaba ajudando o browser do Google, curiosamente, mesmo dono do Youtube.</p>
<p>Outros pontos ruins nessa versão do Youtube são a nítida perda de qualidade entre os players em Flash e em HTML5, e o fato de não suportar fullscreen (limitação do HTML5 e não do player). Além do Youtube o <a href="http://vimeo.com/blog:268">Vimeo</a> também possui uma versão em HTML5, seguindo as mesmas restrições do Youtube, porém, com uma perda de qualidade menor. Já o <a href="http://blog.dailymotion.com/2009/05/27/watch-videowithout-flash/">Dailymotion</a> utiliza os formatos Ogg, Theora + Vorbis, funcionando em todos os navegadores decentes e com algumas travadas irritantes.</p>
<p>Mas nem tudo está perdido para os players feitos em HTML5, um grupo de desenvolvedores e designers denominado <a title="Jilion" href="http://jilion.com/">Jilion</a> desenvolveu um excelente player (bonito e funcional) chamado <a title="SublimeVideo" href="http://jilion.com/sublime/video">SublimeVideo</a>. Suportando todos os browsers listados na página do Youtube/Vimeo incluindo o Firefox.</p>
<div id="attachment_184" class="wp-caption aligncenter" style="width: 614px"><a href="http://rogeriolino.com/wp-content/uploads/2010/02/sublimevideo.jpg"><img class="size-full wp-image-184 " title="SublimeVideo" src="http://rogeriolino.com/wp-content/uploads/2010/02/sublimevideo.jpg" alt="SublimeVideo" width="604" height="260" /></a><p class="wp-caption-text">SublimeVideo - HTML5 Video Player</p></div>
<p>Mais sobre <a href="http://shaver.off.net/diary/2010/01/23/html5-video-and-codecs/">HTML5 video e codecs</a>.</p>


<p>Related posts:<ol><li><a href='http://rogeriolino.com/2010/03/11/html5-database/' rel='bookmark' title='Permanent Link: HTML5: Database'>HTML5: Database</a></li>
<li><a href='http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/' rel='bookmark' title='Permanent Link: Javascript Game Engine for HTML5 Canvas'>Javascript Game Engine for HTML5 Canvas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/02/19/html5-video-player/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
