<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog da Hostweb &#187; Dicas</title>
	<atom:link href="http://blog.hostweb.com.br/category/dicas/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.hostweb.com.br</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 23 Aug 2010 15:01:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Como conectar os usuários do Facebook no seu site.</title>
		<link>http://blog.hostweb.com.br/como-conectar-os-usuarios-do-facebook-no-seu-site/hostweb</link>
		<comments>http://blog.hostweb.com.br/como-conectar-os-usuarios-do-facebook-no-seu-site/hostweb#comments</comments>
		<pubDate>Mon, 23 Aug 2010 14:06:23 +0000</pubDate>
		<dc:creator>Giordano Alves</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[Usuários]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=706</guid>
		<description><![CDATA[Todo mundo já reconhece (ou deveria) a importância que as redes sociais possuem hoje em dia, é difícil conhecer alguém que use a Internet e não tenha uma conta em alguma rede social. Pelo contrário, muitos &#8220;entram&#8221; na Internet apenas para usar as redes sociais.
Dentre as redes sociais que se destacam hoje temos o Facebook, [...]]]></description>
			<content:encoded><![CDATA[<p>Todo mundo já reconhece (ou deveria) a importância que as redes sociais possuem hoje em dia, é difícil conhecer alguém que use a Internet e não tenha uma conta em alguma rede social. Pelo contrário, muitos &#8220;entram&#8221; na Internet apenas para usar as redes sociais.</p>
<p>Dentre as redes sociais que se destacam hoje temos o Facebook, que foi lançado em 2004 e que desde que chegou ao Brasil ganhou muitos usuários novos.</p>
<p>O Facebook tem uma <a title="Facebook api" href="http://developers.facebook.com/docs/" target="_blank">Api</a> para desenvolvedores muito bem documentada e foi nela que aprendi a como conectar os usuários do Facebook no meu site.</p>
<p>O primeiro para obter os dados do usuário é você criar uma nova aplicação do site de desenvolvimento do Facebook.</p>
<p><a title="http://www.facebook.com/developers/" href="http://www.facebook.com/developers/" target="_blank">http://www.facebook.com/developers/</a></p>
<p><span id="more-706"></span></p>
<p><img class="aligncenter size-full wp-image-707" title="Captura_de_tela-1" src="http://blog.hostweb.com.br/wp-content/uploads/2010/08/Captura_de_tela-1.png" alt="Captura_de_tela-1" width="510" height="450" /></p>
<p>Na criação do seu aplicativo você vai digitar o nome do seu aplicativo e concordar com os termos do Facebook, depois disso você verá a tela inicial do seu aplicativo com informações importantes como o id do aplicativo e a chave da api .</p>
<p><img class="aligncenter size-full wp-image-714" title="Captura_de_tela-2" src="http://blog.hostweb.com.br/wp-content/uploads/2010/08/Captura_de_tela-21.png" alt="Captura_de_tela-2" width="561" height="419" /></p>
<p>No próximo passo você vai clicar no link &#8220;Editar Configurações&#8221;, nele vai ter várias áreas para configurar o aplicativo, mas você irá para o link  &#8220;Website&#8221; e coloque o endereço do seu site em &#8220;Site URL&#8221;.</p>
<p>Pronto você já criou um aplicativo no Facebook direcionando para seu site. Agora vamos fazer nossa aplicação no site receber os dados do usuário.</p>
<p>Primeiro crie uma página com o nome loginFacebook.html e coloque o código:</p>
<pre><code>&lt;fb:login-button&gt;&lt;/fb:login-button&gt;
&lt;div id="fb-root"&gt;&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js"&gt;&lt;/script&gt;
&lt;script&gt;
  FB.init({appId: '<strong>your app id</strong>', status: true, cookie: true, xfbml: true});
  FB.Event.subscribe('auth.sessionChange', function(response) {
    if (response.session) {
      // A user has logged in, and a new cookie has been saved
    } else {
      // The user has logged out, and the cookie has been cleared
    }
  });
&lt;/script&gt;</code></pre>
<p>Não esqueça de trocar a parte <strong>your app id</strong> pelo id da sua aplicação. Feito isso o código deve renderizar um botão feito esse: <img class="alignnone size-full wp-image-721" title="login-button" src="http://blog.hostweb.com.br/wp-content/uploads/2010/08/login-button.png" alt="login-button" width="154" height="22" /></p>
<p>Agora vamos acrescentar o código php responsável por pegar o cookie que trará dados do usuário como o <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><code>access_token e o uid</code></span>:</p>
<pre><code>&lt;?php

define('FACEBOOK_APP_ID', '<strong>your application id</strong>');
define('FACEBOOK_SECRET', '<strong>your application secret</strong>');

function get_facebook_cookie($app_id, $application_secret) {
  $args = array();
  parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
  ksort($args);
  $payload = '';
  foreach ($args as $key =&gt; $value) {
    if ($key != 'sig') {
      $payload .= $key . '=' . $value;
    }
  }
  if (md5($payload . $application_secret) != $args['sig']) {
    return null;
  }
  return $args;
}

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);

?&gt;
&lt;!DOCTYPE html&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://www.facebook.com/2008/fbml"&gt;
  &lt;body&gt;
    &lt;?php if ($cookie) { ?&gt;
      Your user ID is &lt;?= $cookie['uid'] ?&gt;
    &lt;?php } else { ?&gt;
      &lt;fb:login-button&gt;&lt;/fb:login-button&gt;
    &lt;?php } ?&gt;

    &lt;div id="fb-root"&gt;&lt;/div&gt;
    &lt;script src="http://connect.facebook.net/en_US/all.js"&gt;&lt;/script&gt;
    &lt;script&gt;
      FB.init({appId: '&lt;?= FACEBOOK_APP_ID ?&gt;', status: true,
               cookie: true, xfbml: true});
      FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
      });
    &lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Agora com os dados do cookie você pode pegar os dados do usuário com o seguinte código:</p>
<pre><code>$user = json_decode(file_get_contents('https://graph.facebook.com/me?access_token='
.$cookie['access_token']))-&gt;id;
</code></pre>
<p>Pronto, agora você pode tratar essas informações da maneira que desejar no seu aplicativo.</p>
<p>Uma dica, se quiser pegar informações como email, data de aniversário e etc, você terá que passar como parâmetro na tag . Exemplo:</p>
<pre><code>&lt;fb:login-button perms="email,user_birthday"&gt;&lt;/fb:login-button&gt;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/como-conectar-os-usuarios-do-facebook-no-seu-site/hostweb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04 (Lucid Lynx) com PHP 5.2.10 (Karmic Koala)</title>
		<link>http://blog.hostweb.com.br/ubuntu-10-04-lucid-lynx-com-php-5-2-10-karmic-koala/hostweb</link>
		<comments>http://blog.hostweb.com.br/ubuntu-10-04-lucid-lynx-com-php-5-2-10-karmic-koala/hostweb#comments</comments>
		<pubDate>Mon, 03 May 2010 18:55:35 +0000</pubDate>
		<dc:creator>Giordano Alves</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Php 5.2]]></category>
		<category><![CDATA[Php 5.3]]></category>
		<category><![CDATA[Ubuntu 10]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=679</guid>
		<description><![CDATA[É isso pessoal, me surpreendi quando instalei o Lucid com a versão mais nova do PHP 5.3, não estava esperando pois tenho projetos em desenvolvimento com PHP 5.2 e que utilizam algumas funções obsoletas ( já tentei atualizar o framework que utilizo mais ele quebra o projeto quando atualizo ). Pois bem catei na internet [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">É isso pessoal, me surpreendi quando instalei o Lucid com a versão mais nova do PHP 5.3, não estava esperando pois tenho projetos em desenvolvimento com PHP 5.2 e que utilizam algumas funções obsoletas ( já tentei atualizar o framework que utilizo mais ele quebra o projeto quando atualizo ). Pois bem catei na internet e descobri como fazer o Lucid na hora de instalar o PHP rodar a extensão do Karmic, e é isso que vou mostrar no post.</p>
<p style="text-align: justify;"><span id="more-82"> </span>Para começar vamos copiar a source.list do Lucid para sources.list.d/ ( pasta onde se adicionam expansões para o apt-get, isso mesmo não altere o sources.list crie sua lista e adicione ela nessa pasta ) trocando a origem dos pacotes para o Karmic assim:</p>
<div id="code" style="text-align: justify;">sed s/lucid/karmic/g /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/karmic.list</div>
<p style="text-align: justify;">Comentando a linha que foi escrita ele cria o arquivo karmic.list que é uma cópia do sources.list trocando onde exite a palavra lucid por karmic.</p>
<p style="text-align: justify;">Agora vamos criar um arquivo que na hora de ser chamado o comando para instalar o php5 ele leia o do Karmic e não o do Lucid. criaremos um documento de preferências em /etc/apt/preferences.d eu chamei o documento de php ( etc/apt/preferences.d/php ), esse documento o apt-get irá verificar que na chamada do php5 ele irá ler as dependências do Karmic e não as do Lucid</p>
<div id="code" style="text-align: justify;">Package: php5<br />
Pin: release a=karmic<br />
Pin-Priority: 991</div>
<p style="text-align: justify;">Com isso na hora de instalar o pacote php5 ele irá instalar o php 5.2.10 que existe no Karmic ao inves do 5.3.2 que existe no Lucid, para outros pacotes do Karmic que queiram adicionar no Lucid apenas criar um documento em /etc/apt/preferences.d com o nome do pacote ( apenas por questão de organização, você pode dar qualquer nome ao documento criado na pasta /etc/apt/preferences.d )</p>
<p style="text-align: justify;">Bem é isso. Qualquer dúvidas eu e o google estamos a disposição =D</p>
<p style="text-align: justify;">OBS: estou postando aqui os pacotes que eu tive que atualizar para a instalação padrão do lamp que eu utilizo:</p>
<div id="code" style="text-align: justify;">Package: php5 php5-cli php5-curl php5-gd php5-mysql php5-pgsql php5-common php5-mcrypt php5-cgi libapache2-mod-php5<br />
Pin: release a=karmic<br />
Pin-Priority:991</div>
<p>Fonte: <a title="Samuel Ramon" href="http://samuel.ramon.blog.br/ubuntu-10-04-lucid-lynx-com-php-5-2-10-karmic-koala/" target="_blank">Samuel Ramon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/ubuntu-10-04-lucid-lynx-com-php-5-2-10-karmic-koala/hostweb/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>15 novidades do Ubuntu 10.04 Lucid Lynx</title>
		<link>http://blog.hostweb.com.br/15-novidades-do-ubuntu-10-04-lucid-lynx/hostweb</link>
		<comments>http://blog.hostweb.com.br/15-novidades-do-ubuntu-10-04-lucid-lynx/hostweb#comments</comments>
		<pubDate>Mon, 26 Apr 2010 12:53:14 +0000</pubDate>
		<dc:creator>Giordano Alves</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[Ubuntu 10.04]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=666</guid>
		<description><![CDATA[A nova versão do Ubuntu, a 10.04, “nome de código” Lucid Lynx,  está já sob intenso desenvolvimento, tendo em vista o lançamento final a 29 de Abril de 2010. Esta versão será um LTS (Long Term Support), ou seja, versão que terá suporte oficial durante 3 anos na versão Desktop e durante 5 anos na [...]]]></description>
			<content:encoded><![CDATA[<p>A nova versão do Ubuntu, a 10.04, “nome de código” Lucid Lynx,  está já sob intenso desenvolvimento, tendo em vista o lançamento final a 29 de Abril de 2010. Esta versão será um LTS <em>(Long Term Support)</em>, ou seja, versão que terá suporte oficial durante 3 anos na versão Desktop e durante 5 anos na versão Server. Por isso o maior objectivo para esta versão é a estabilidade e  a correcção de eventuais bugs e problemas decorrentes das inovações introduzidas em <em>releases</em> anteriores. Mas nem por isso deixa de conter algumas novidades que valem a pena ansiar pela versão final, e os detalhes começam já a surgir…</p>
<p>Por isso, aqui ficam 15 novidades que virão com o Ubuntu 10.04 Lucid Lynx (“Lince Lúcido”?!?!?):</p>
<p><span id="more-666"></span></p>
<p><strong>Ubuntu Music Store:</strong> Quem usa Linux e Windows,certamente sente falta em Linux de uma aplicação que lhe permita comprar música online, a partir do seu ambiente de trabalho. Do estilo iTunes, por exemplo. A Ubuntu Music Store pretende colmatar essa falha. Integrada no Rhythmbox (que será provavelmente o reprodutor de música pré-instalado), permitirá comprar  e guardar no seu computador música, a partir do seu ambiente de trabalho, e através do serviço <a href="http://one.ubuntu.com/"><span style="color: #ff6600;">UbuntuOne</span></a> poderá sincronizar essas músicas com todos os seus computadores e ainda com amigos. O Ubuntu servirá apenas como plataforma de interacção entre o utilizador e o vendedor do conteúdo digital. Rumores na blogosfera afirmam que a Cannonical tem como parceira neste projecto a loja online<a href="http://www.7digital.com/"><span style="color: #ff6600;"> 7Digital</span></a>.</p>
<p><img class="aligncenter size-full wp-image-667" title="musicshop-785x1024" src="http://blog.hostweb.com.br/wp-content/uploads/2010/04/musicshop-785x1024.png" alt="musicshop-785x1024" width="785" height="1024" /></p>
<p><strong>Gimp será substituído pelo Pitivi:</strong> Também o leque de aplicações que acompanham o cd será alvo de mudanças. O Gimp, considerado uma aplicação apenas para utilizadores profissionais e avançados, e devido à sua interface demasiado complexa, não virá instalado por omissão, sendo substituído pela aplicação de edição de vídeo <a href="http://www.pitivi.org/wiki/Main_Page"><span style="color: #ff6600;">Pitivi</span></a> (apesar do Gimp continuar instalável a partir do Centro de Software), que actualmente tem em falta algumas funcionalidades chave de um bom editor de vídeo, em comparação com projectos como por exemplo o <a href="http://www.openshotvideo.com/"><span style="color: #ff6600;">OpenShot</span></a>. A decisão está ainda envolta em polémica e esperam-se novidades nos próximos meses…</p>
<p><img class="aligncenter size-full wp-image-669" title="400px-Capture-PiTiVi_v0.13.0.1" src="http://blog.hostweb.com.br/wp-content/uploads/2010/04/400px-Capture-PiTiVi_v0.13.0.1.jpg" alt="400px-Capture-PiTiVi_v0.13.0.1" width="400" height="294" /></p>
<p><strong>Melhoramentos no F-Spot para edição simples de imagem:</strong> Existem também ideias ou de melhorar o F-Spot e adicionar-lhe funcionalidades básicas de corte, edição e retoque de imagem, ou substituir esta aplicação por uma outra já com essas funcionalidades como o <a href="http://gthumb.sourceforge.net/" target="_blank"><span style="color: #ff6600;">gThumb</span></a> ou o <a href="http://www.yorba.org/shotwell/"><span style="color: #ff6600;">Shotwell</span></a>. O utilizador comum quer apenas editar algumas fotos com retoques básicos, remoção de olhos vermelhos, cortar, um efeito de luz aqui e outro ali, e o GIMP revelava-se complexo demais para essa tarefa. Portanto, esperam-se novidades nesta área. Na minha opinião pessoal, o F-Spot vai continuar mas com os melhoramentos que indiquei. É sem dúvida uma poderosa mas amigável interface a do F-Spot <img src="http://www.kerodicas.com/wp-includes/images/smilies/icon_wink.gif" alt=";-)" /></p>
<p><strong>Melhor selecção de jogos: </strong>Também os jogos pré-instalados vão ser repensados. A escolha vai recair em menos mas melhores jogos. Actualmente o Ubuntu conta com variados jogos “inúteis”, e não actualizados há muito, além de terem um aspecto e um sentido demasiado <em>retro. </em>Esta mudança era merecida.<em> </em>Um dos jogos a ser incluído é o<span style="color: #ff6600;"> <a href="http://live.gnome.org/gbrainy">gbrainy</a>, <span style="color: #000000;">um bastante desafiador e viciante jogo de brainstorming e estimulação mental. Existem vários jogos de qualidade </span></span>nos repositórios de Ubuntu e esperemos que sejam esses mesmo a serem incluídos.</p>
<p><img class="aligncenter size-full wp-image-670" title="screenshot_043" src="http://blog.hostweb.com.br/wp-content/uploads/2010/04/screenshot_043.png" alt="screenshot_043" width="529" height="701" /></p>
<p><strong>Experiência de boot mais rápida e mais fluída: </strong>Também o boot no Lucid Lynx vai ser alvo de melhorias. Sempre com o objectivo dos 10 segundos de boot no dispositivo-alvo Dell Mini v10, este vai ser melhorado e usará novas tecnologias de modo a permitir uma experiência ao ligar o seu sistema totalmente fluída, atractiva e acima de tudo, rápida, para utilizadores de placas gráficas Intel, Nvidia e ATi. A má notícia é que para observar todo este processo de ligação do seu computador, não poderá tirar os olhos do computador. Simplesmente acontece demasiado depressa <img src="http://www.kerodicas.com/wp-includes/images/smilies/icon_biggrin.gif" alt=":-D" /></p>
<p><img class="aligncenter size-full wp-image-671" title="xsplash-3_thumb1" src="http://blog.hostweb.com.br/wp-content/uploads/2010/04/xsplash-3_thumb1.png" alt="xsplash-3_thumb1" width="502" height="384" /></p>
<p><strong> Projecto “100 Papercuts”:</strong> O projecto “100 Papercuts” é um projecto que pretende identificar e corrigir bugs mínimos e facilmente corrigíveis de usabilidade no Ubuntu e nas suas aplicações. Este projecto já se reflectiu no Karmic Koala, e continuará nesta nova versão do Ubuntu. Bugs do ciclo Karmic, integração e acesso fácil ao Compiz (Compiz é o decorador de responsável pelos tão falados efeitos), Rhytmbox, Pitivi (ou a aplicação de vídeo que possa eventualmente substituí-la), Gwibber e Empathy serão alguns dos alvos deste projecto, e serão assim corrigidos alguns dos problemas mais proeminentes que afectam estas aplicações.</p>
<p><strong>Nova ferramenta de Digitalização “Simple Scan”:</strong> O Ubuntu, embora muitos nunca tenham reparado, sempre trouxe consigo uma ferramenta de Digitalização, neste caso o XSane. O XSane é uma ferramenta poderosa e com elevado grau de compatibilidade, mas a sua integração no restante ambiente de trabalho e a sua interface em geral era tudo menos amigável e de fácil uso. Por isso está a ser desenvolvida uma nova aplicação para o substituir, de nome “Simple Scan”, uma interface simples de utilizar para facilmente digitalizar todo e qualquer tipo de documento em todo e qualquer tipo de impressora, e iniciando esse processo através de todo e qualquer tipo de aplicação. “Simple Scan” pode ser actualmente testadao adicionando<span style="color: #ff6600;"> <a href="https://launchpad.net/%7Erobert-ancell/+archive/ppa">este repositório</a></span> e instalando de seguida pelo gestor de pacotes.</p>
<p><img class="aligncenter size-full wp-image-672" title="DocumentScanning4" src="http://blog.hostweb.com.br/wp-content/uploads/2010/04/DocumentScanning4.png" alt="DocumentScanning4" width="640" height="345" /></p>
<p><strong>Possibilidade de inclusão de uma ferramenta de backup: </strong>Esta é outra das aplicações que cada vez mais é essencial para o utilizador. As propostas para ferramenta de cópia de segurança são o <a href="https://launchpad.net/deja-dup" target="_blank"><span style="color: #ff6600;">Déjà-Dup </span></a>e o <a href="http://backintime.le-web.org/"><span style="color: #ff6600;">Back in Time</span></a>, ambos com suporte a backups automáticos regulares, backups selectivos para pasta/dispositivo externo/rede/Servidor online, e a restauro do sistema baseado num determinado backup. Estas são provavelmente as funcionalidades mais úteis e essenciais para a grande maioria dos utilizadores, pelo que uma ferramenta com esta é sempre bem-vinda.</p>
<p><strong>Melhoramentos no Centro de Software: </strong>O Centro de Software Ubuntu caminha rapidamente para se tornar uma das soluções mais simples para instalação/remoção de programas, em qualquer dos 3 Sistemas Operativos principais – Windows, outras variantes Linux e Mac OS. No Ubuntu 10.04, vai-se tornar um centro onde pode instalar programas através de pacotes .deb de sites externos (substituindo o GDebi), onde pode adicionar/remover repositórios (Substituindo a aplicação Fontes de Aplicação) e onde poderá também actualizar o seu sistema. Confesso que estou curioso acerca das novidades do Centro de Software, no caminho para se tornar um verdadeiro centro de descoberta e gestão de aplicações, como poderão ver nesta <em>mockup</em>:</p>
<p><img class="aligncenter size-full wp-image-673" title="future-lobby" src="http://blog.hostweb.com.br/wp-content/uploads/2010/04/future-lobby.jpg" alt="future-lobby" width="750" height="526" /></p>
<p><strong>Melhorias a nível visual:</strong> Não irá haver um novo tema. Ponto. Mas irão haver melhorias e correcções de bugs no tema actual, e possível <a href="https://wiki.ubuntu.com/Artwork/Incoming/Lucid/"><span style="color: #ff6600;">adição de temas propostos </span></a>no CD. O pack de fantásticos ícones Humanity será melhorado (especialmente para se tentar obter um painel apenas com ícones no estilo Humanity acinzentado). Além disso, haverão ainda algumas modificações na janela de login, para se tentar obter uma total harmonia estética em todos os componentes que formam o sistema Operativo.</p>
<p><strong>Indicadores de sistema: </strong>No painel superior do Ubuntu, existem vários ícones que fornecem informações sobre o sistema, e até um que condensa informações e acções das aplicações de comunicação. A ideia para o Lucid Lynx é unificar e criar uma interface comum e consistente que permite agregar aí informação inteligentemente. Bem, uma imagem, mesmo que um mero rascunho, permite perceber muito melhor o conceito:</p>
<p><strong>(Ainda) Mais melhoras nas notificações:</strong> As notificações do Ubuntu são cada vez mais um dos melhores sistemas de notificação actuais (quer visualmente quer em termos de facilidade de integração nas aplicações). Para o Lucid, as notificações estarão presentes com um novo modo, o modo “ocupado”. Por exemplo, se estiver a ver um filme em ecrã completo, não será notificado de coisas triviais como email, mensagens de chat. Avisos de bateria fraca ou de carga em bateria, esses sim, considerados “críticos” serão mostrados. Resta também esperar pela disponibilização de uma janela de configurações. A ver vamos…</p>
<p><img class="aligncenter size-full wp-image-674" title="screenshot_045" src="http://blog.hostweb.com.br/wp-content/uploads/2010/04/screenshot_045.png" alt="screenshot_045" width="330" height="122" /></p>
<p><strong>Projecto B-Sides</strong>: O projecto<a href="https://launchpad.net/b-sides" target="_blank"><span style="color: #ff6600;"> B-Sides</span></a> é um projecto da comunidade que pretende facilitar a instalação de um leque de pacotes (codecs, utilitários, fontes, temas, Flash, aplicações multimédia, comunicação e de produtividade) ,que não estão incluídos no CD do Ubuntu, mas que são igualmente úteis e essenciais, complementando assim o sistema. Bastará instalar o pacote ‘b-sides’  e todas essas aplicações serão instaladas. Para mim que instalo várias vezes Ubuntu a familiares e amigos, esta é uma fantástica novidade, que me permitirá poupar ainda mais tempo na instalação e substituir aquela enorme linha de comandos a colar na consola, compilada por mim, perdida por aqui algures, pela beleza de dois cliques <img src="http://www.kerodicas.com/wp-includes/images/smilies/icon_wink.gif" alt=";-)" /> A lista completa de aplicações encontra-se <a href="http://bazaar.launchpad.net/%7Eb-sides/b-sides/trunk/annotate/head:/minimal-all"><span style="color: #ff6600;">aqui</span></a>.</p>
<p><strong>Gnome 2.30</strong>: A versão 2.30 do ambiente gráfico Gnome trará melhoramentos gerais em todas as aplicações, incluindo o cliente de mensagens instantâneas Empathy, o gravador de disco Brasero, o leitor de documentos Evince (suporte a OCR, converter imagem em texto) e melhorias a nível visual nos ícones e no painel. A lista completa de objectivos, <a href="http://live.gnome.org/RoadMap"><span style="color: #ff6600;">aqui</span></a>.</p>
<p><strong>Linux Kernel 2.6.32:</strong> O Ubuntu 10.04 virá com a versão 2.6.32 do Linux Kernel, o que assegura maior estabilidade, maior rapidez e maior compatibilidade de hardware. Melhorias na gestão de energia e na virtualização são também esperadas.</p>
<p>E são estas as grandes novidades do Ubuntu Lucid Lynx. Mais virão com o passar dos meses, e aqui no KeroDicas é certo que as mencionaremos. Se quer agarrar já este Ubuntu 10.04, vai ter que esperar até 29 de Abril. Mas se nunca experimentou o Ubuntu, avançe e faça já o <a href="http://www.kerodownload.com/s-fx_info-id-32919.html"><span style="color: #ff6600;">download do Ubuntu 9.10 Karmic Koala</span></a> <img src="http://www.kerodicas.com/wp-includes/images/smilies/icon_wink.gif" alt=";-)" /></p>
<p>Fonte do artigo: <a href="http://www.kerodicas.com/novidades/artigo=28837" target="_blank">KeroDicas.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/15-novidades-do-ubuntu-10-04-lucid-lynx/hostweb/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Frameworks javascript. Qual usar?</title>
		<link>http://blog.hostweb.com.br/frameworks-javascript-qual-usar/hostweb</link>
		<comments>http://blog.hostweb.com.br/frameworks-javascript-qual-usar/hostweb#comments</comments>
		<pubDate>Mon, 22 Mar 2010 19:12:08 +0000</pubDate>
		<dc:creator>Giordano Alves</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=638</guid>
		<description><![CDATA[Nesse post vou trazer para voces vocês dos frameworks mais usados no desenvolvimento de aplicações.
JQuery &#8220;Escreva menos e faça mais&#8221;
JQuery é uma rápida e concisa biblioteca JavaScript que simplifica a manipulação do HTML, manipulação de eventos, animação e interações do Ajax para desenvolvimento web.
JQuery foi projetado para mudar a maneira que você escreve JavaScript.
$(document).ready(function() {
$(&#8221;a&#8221;).click(function() [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse post vou trazer para voces vocês dos frameworks mais usados no desenvolvimento de aplicações.</p>
<p><a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a> <em>&#8220;Escreva menos e faça mais&#8221;</em></p>
<p align="justify"><a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a> é uma rápida e concisa biblioteca JavaScript que simplifica a manipulação do HTML, manipulação de eventos, animação e interações do Ajax para desenvolvimento web.</p>
<p align="justify"><a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a> foi projetado para mudar a maneira que você escreve JavaScript.</p>
<div id="code">$(document).ready(function() {<br />
$(&#8221;a&#8221;).click(function() {<br />
alert(&#8221;Olá mundo!&#8221;);<br />
});<br />
});</div>
<p><a title="mootools" href="http://mootools.net/" target="_blank">Mootools</a> <em>&#8220;Um framework javascrip compacto&#8221;</em></p>
<p align="justify"><a title="mootools" href="http://mootools.net/" target="_blank">Mootools</a> é um framework compacto, modular e orientado a objetos projetado para o desenvolvedor intermediário a avançado. Ele permite que você escreva um codigo potente, flexível e elegante.</p>
<div id="code">$(&#8217;texto_apresentacao&#8217;).setOpacity(0);<br />
$(&#8217;texto_apresentacao&#8217;).setStyle(&#8217;width&#8217;, &#8216;200px&#8217;);<br />
$(&#8217;texto_apresentacao&#8217;).setStyle(&#8217;border&#8217;, &#8216;1px solid #ff0000&#8242;);</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/frameworks-javascript-qual-usar/hostweb/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como estimar prazos precisos e imprecisos</title>
		<link>http://blog.hostweb.com.br/como-estimar-prazos-precisos-e-imprecisos/hostweb</link>
		<comments>http://blog.hostweb.com.br/como-estimar-prazos-precisos-e-imprecisos/hostweb#comments</comments>
		<pubDate>Mon, 15 Mar 2010 12:01:10 +0000</pubDate>
		<dc:creator>Giordano Alves</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Estimativa]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=614</guid>
		<description><![CDATA[Eu encontrei esse artigo no blog do Carlos Brando(O Nome do Jogo) e achei muito interessante as dicas de estimativas de prazos.
Veja abaixo na íntegra:
Definir quanto tempo será necessário para finalizar uma tarefa ou o desenvolvimento de um software não é (ou pelo menos não deveria ser) algo trivial. Estimar prazos faz parte do nosso [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Eu encontrei esse artigo no blog do <a href="http://www.nomedojogo.com/sobre/" target="_blank">Carlos Brando</a>(<a href="http://www.nomedojogo.com/" target="_blank">O Nome do Jogo</a>) e achei muito interessante as dicas de estimativas de prazos.</p>
<p style="text-align: justify;">Veja abaixo na íntegra:</p>
<p style="text-align: justify;">Definir quanto tempo será necessário para finalizar uma tarefa ou o desenvolvimento de um software não é (ou pelo menos não deveria ser) algo trivial. Estimar prazos faz parte do nosso dia-a-dia como programadores.</p>
<p style="text-align: justify;">O que muita gente não se dá conta é que a precisão com que um programador prevê a entrega de tarefas e projetos é um poderoso indicador do quão bom ele é.</p>
<p style="text-align: justify;">Para informar de forma precisa o tempo necessário para a realização de algo em desenvolvimento de software é necessário que o programador possua uma certa experiência no assunto, tenha um bom domínio do negócio, seja rápido e produtivo.</p>
<p style="text-align: justify;">Embora muitos de nós não apreciem essa difícil tarefa, estimar prazos é parte do nosso trabalho. Fazer isso bem pode ser a diferença entre um programador profissional e um amador.</p>
<p style="text-align: justify;">Em um dia normal, estamos estimando prazos o tempo todo. Ao colocar a comida no micro-ondas você deve informar quantos minutos serão necessários para esquenta-la. Se você tem um horário fixo para acordar, deve analisar quantas horas de sono serão suficientes e então decidir quando deve ir para a cama.</p>
<p style="text-align: justify;">O segredo não está no tempo, mas em quão precisa deve ser a sua estimativa. Se seu chefe pergunta que horas você entregará o relatório amanhã, ele quer ter uma ideia se será antes ou depois do almoço. Se ele lhe pergunta quanto tempo será necessário para resolver um bug critico e colocar o sistema de volta em produção ele precisa de uma precisão maior.</p>
<p style="text-align: justify;">A escala de tempo é muito importante ao se estimar prazos. Por exemplo, você pode dizer “O projeto será entregue em 25 dias” ou pode dizer “O projeto será entregue em cerca de 5 semanas”. Embora ambas as frases indiquem o mesmo tempo, o efeito sob cada uma delas pode ser diferente. Ao dar a primeira resposta, seu cliente provavelmente anotará na agenda dele o dia exato em que você entregará o projeto. Por outro lado, a segunda resposta fará com que ele lhe procure a qualquer momento daqui a 4 ou 6 semanas.</p>
<p style="text-align: justify;"><span id="more-614"></span></p>
<p style="text-align: justify;">O livro <a href="http://www.pragprog.com/the-pragmatic-programmer">The Pragmatic Programmer</a> dá uma importante dica que nos ajuda a escolher a escala de tempo apropriada ao estimar prazos. Veja a tabela:</p>
<p style="text-align: justify;">1-15 dias    -&gt; dias<br />
3-8 semanas  -&gt; semanas<br />
8-30 semanas -&gt; meses<br />
30 + semanas -&gt; pense bem antes de dar uma estimativa</p>
<p style="text-align: justify;">Qual a vantagem disso? O fato é que quanto maior o tempo, mais difícil é a previsão, exigindo que você seja cada vez mais impreciso. Por exemplo, se sua estimativa é que serão necessários 125 dias para terminar um trabalho, é muito mais seguro dizer que precisará de “cerca de 6 meses” para finaliza-lo.</p>
<p style="text-align: justify;">Todas as estimativas que fazemos são baseadas em nossas experiências passadas. Mas, o que fazer quando é necessário estimar algo que você nunca fez ou que não conhece? A resposta é simples: “não estime”. É melhor pedir para que alguém que já tenha feito algo semelhante lhe dê uma ideia do tempo necessário.</p>
<p style="text-align: justify;">Além de considerar o grau de precisão, também é importante entender qual é o problema antes de começar a chutar um tempo. Quase sempre nossas estimativas dependem de outros fatores para darem certo: “Supondo que não haja trânsito dá para chegar aí em 20 minutos”.</p>
<p style="text-align: justify;">Se possível é muito útil testar alguns aspectos do projeto antes de dizer quanto tempo será necessário para cumpri-lo. Se o sistema precisa ser carregado dentro do Facebook, seria muito bom poder gastar um tempo criando alguma coisa bem simples para esta plataforma afim de analisar o grau de complexidade, isto sem dúvida aumentará a precisão da estimativa.</p>
<p style="text-align: justify;">É muito importante levar em consideração que a equipe, sua produtividade e o ambiente afetam diretamente sua estimativa.</p>
<p style="text-align: justify;">Analisando todos estes fatores, a conclusão é que há apenas uma única resposta correta a se dar quando lhe é pedido para estimar um prazo: “Me dê algum tempo para pensar”. Você sempre terá resultados melhores se retardar a resposta e pensar um pouco mais.</p>
<div id="TixyyLink" style="border: medium none; overflow: hidden; color: #000000; background-color: transparent; text-align: justify; text-decoration: none;">
Fonte: <a href="http://www.nomedojogo.com/2010/03/04/como-estimar-prazos-precisos-e-imprecisos/" target="_blank">Nome do Jogo</a><a href="http://www.nomedojogo.com/#ixzz0iFHwZhUG"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/como-estimar-prazos-precisos-e-imprecisos/hostweb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Strings, Números, Métodos e Condicionais</title>
		<link>http://blog.hostweb.com.br/ruby-strings-numeros-metodos-e-condicionais/hostweb</link>
		<comments>http://blog.hostweb.com.br/ruby-strings-numeros-metodos-e-condicionais/hostweb#comments</comments>
		<pubDate>Mon, 15 Mar 2010 11:58:08 +0000</pubDate>
		<dc:creator>Lino</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=609</guid>
		<description><![CDATA[Eu assumirei que você já tem o Ruby instalado. Se não, você precisa fazer isto antes de mais nada. Vamos começar a codificar. Abra o seu editor e escreva o seguinte:
puts &#8216;hello world&#8217;
Salve o programa como &#8216;helloworld.rb&#8217; e agora rode o programa. Se tudo ocorreu bem, o Ruby deveria mostrar “hello world”. Se  você [...]]]></description>
			<content:encoded><![CDATA[<p>Eu assumirei que você já tem o Ruby instalado. Se não, você precisa fazer isto antes de mais nada. Vamos começar a codificar. Abra o seu editor e escreva o seguinte:</p>
<p><strong>puts &#8216;hello world&#8217;</strong></p>
<p>Salve o programa como &#8216;helloworld.rb&#8217; e agora rode o programa. Se tudo ocorreu bem, o Ruby deveria mostrar “hello world”. Se  você  estiver usando um  editor  sem  uma  console interativa,   você deverá rodar  seus  programas  a  partir  do  prompt  de  comandos  do  sistema operacional.  Para  isto  abra  um  prompt  de  comandos  (Windows)  ou  um terminal  (Linux)  e  navegue  até  o  diretório contendo  o  código  fonte  e  então digite ruby seguido pelo nome do programa, assim: ruby helloworld.rb</p>
<p><strong> puts( &#8220;hello world&#8221;.upcase )</strong></p>
<p>Este deve ser o menor ‘hello world’ programa da história da programação, então vamos avançar modificando-o para pedir que o usuário digite algo &#8230;<br />
O próximo passo, então, é &#8217;solicitar&#8217; ao usuário uma string (conjunto de caracteres). O método para fazer isso em Ruby é gets. </p>
<p><strong>print(&#8217;Enter your name: &#8216; )<br />
name = gets()<br />
puts( &#8220;Hello #{name}&#8221; )<br />
</strong></p>
<p>O programa helloname.rb pergunta ao usuário o seu nome – vamos supor que é “Fred” -e então mostra uma saudação: “Hello Fred”.<br />
Enquanto isso ainda é muito simples, existem alguns detalhes importantes que precisam ser explicados.   Primeiro, note que eu usei print em vez de puts para mostrar a pergunta. Isto foi feito porque o puts adiciona uma nova linha no final e o print não; neste exemplo eu quero que o cursor permaneça na mesma linha da pergunta.</p>
<p>Na linha seguinte eu usei o gets() para ler a informação digitada pelo usuário emuma string quando for pressionada a tecla Enter. Esta string é armazenada na variável, name. Eu não pré-declarei esta variável, nem especifiquei seu tipo. Em Ruby você pode criar variáveis como e quando precisar delas e o Ruby deduz o tipo correspondente.  Neste caso eu atribui uma string para a variável name, logo o Ruby sabe que o tipo de name deve ser uma string.<br />
<span id="more-609"></span></p>
<p><strong>Objetos e Métodos</strong></p>
<p>        Ruby  é  uma  linguagem  altamente  OOP  (Programação  Orientada  por  Objetos).  Tudo  desde um inteiro até uma string é considerado um objeto. E cada objeto é constituído de &#8216;métodos&#8217; os quais podem fazer muitas coisas. Para usar um método, você precisa colocar um ponto após o objeto,  então  adicionar  o  nome  do  método.  Por    exemplo,  aqui  eu  estou  usando  o  método<br />
<strong><br />
      upcase para mostrar a string “hello world” em  maiúsculas:<br />
      puts( &#8220;hello world&#8221;.upcase )</strong></p>
<p>       Alguns métodos como o puts e o gets estão disponíveis em todo o lugar e não necessitam ser associados a um objeto específico. Tecnicamente falando, estes métodos são fornecidos pelo módulo Kernel do Ruby e eles estão presentes em todos os objetos Ruby. Quando você roda uma aplicação Ruby, um objeto chamado main é automaticamente criado e este objeto fornece acesso aos métodos do Kernel.</p>
<p>Nota: O Ruby é sensível a maiúsculas e minúsculas (caixa alta/baixa).<br />
          Uma variável chamada myvar é diferente de outra chamada myVar.<br />
          Uma variável como &#8216;name&#8217; no nosso exemplo deve iniciar com uma<br />
          letra minúscula ( em caixa baixa )</p>
<p>O símbolo de parênteses no final de gets() é opcional assim como os parênteses que envolvem as strings após o print e o puts; o código deveria rodar igualmente se você removesse os parênteses. Contudo, o Ruby está movendo-se gradualmente na direção do uso dos parênteses – particularmente quando passa-se argumentos para métodos. Os parênteses ajudam a evitar possíveis ambigüidades no código e , em alguns casos, o interpretador do Ruby irá avisá-lo se você omiti-los.</p>
<p><strong>Strings e Avaliação embutida</strong></p>
<p>A última linha no programa helloname.rb é bem interessante:</p>
<p><strong>puts( &#8220;Hello #{name}&#8221; )</strong></p>
<p>Aqui a variável name está embutida numa string. Isto é feito colocando a variável dentro do sinal de chaves {} precedido do caracter #, assim: #{variável}. Este tipo de avaliação embutida somente funciona com strings delimitadas por aspas (“”). E não é somente variáveis que podem ser embutidas entre as aspas. Você pode pode, também, embutir caracteres não imprimíveis como nova linha “\n” e tabs “\t” em strings delimitadas por aspas. Você pode até embutir pequenos códigos de programa e expressões matemáticas. Vamos assumir que você tem um método chamado showname, que retorna a string ‘Fred’. A string seguinte deveria, no processo de avaliação, chamar o método showname e, como resultado, mostrar a string “Hello Fred”:<br />
<strong><br />
puts &#8220;Hello #{showname}&#8221;</p>
<p>def showname<br />
   return &#8220;Fred&#8221;<br />
end</p>
<p>puts &#8220;Hello #{showname}&#8221;<br />
puts( &#8220;\n\t#{(1+2) * 3}&#8221; )<br />
</strong><br />
Veja se você consegue acertar o que seria mostrado pelo código seguinte:</p>
<p><strong>puts( &#8220;\n\t#{(1 + 2) * 3}&#8221; )</strong></p>
<p>Execute o programa string_eval.rb para ver se você está certo.<br />
Comentários&#8230;<br />
Linhas que começam com o caracter # são tratadas como comentários(elas são ignoradas pelo interpretador Ruby):</p>
<p>                    # This is a comment – Isto é um comentário</p>
<p><strong>Métodos</strong></p>
<p>No exemplo anterior, eu introduzi um método Ruby sem explicar precisamente o que é e a sintaxe necessária para criá-lo. Vejamos isso agora.</p>
<p><strong>class MyClass<br />
        def saysomething<br />
                puts( &#8220;Hello&#8221; )<br />
        end<br />
end</p>
<p>ob = MyClass.new<br />
ob.saysomething<br />
</strong></p>
<p>Um método é assim chamado porque ele fornece um método ( isto é, &#8216;uma forma&#8217;) para um objeto responder a mensagens. Na terminologia OOP, você envia uma mensagem para um objeto pedindo que ele faça algo. Vamos imaginar que você tem um objeto chamado ob o qual possui um método chamado saysomething, esta é a forma que você deveria enviar-lhe uma mensagem saysomething:<br />
<strong><br />
ob.saysomething</strong></p>
<p>Vamos supor que o método saysomething seja o seguinte:<br />
<strong><br />
def saysomething<br />
       puts( &#8220;Hello&#8221; )<br />
end<br />
</strong></p>
<p>Quando você envia a mensagem saysomething para o objeto ob ele responde com o método saysomething e mostra “Hello”. OK, esta a é forma ‘OOP pura’ de descrever este processo. Uma forma OOP não tão pura de descrever isso seria dizer que saysomething é como uma função que é ligada ao objeto e pode ser chamada usando a “notação de ponto”:</p>
<p><strong>ob.saysomething.</strong></p>
<p><strong>def showstring<br />
       puts( &#8220;Hello&#8221; )<br />
end<br />
def showname( aName )<br />
       puts( &#8220;Hello #{aName}&#8221; )<br />
end<br />
def return_name( aFirstName, aSecondName )<br />
       return &#8220;Hello #{aFirstName} #{aSecondName}&#8221;<br />
end<br />
def return_name2 aFirstName, aSecondName<br />
       return &#8220;Hello #{aFirstName} #{aSecondName}&#8221;<br />
end<br />
showstring<br />
showname( &#8220;Fred&#8221; )<br />
puts( return_name( &#8220;Mary Mary&#8221;, &#8220;Quite-Contrary&#8221;  ) )<br />
puts( return_name( &#8220;Little Jack&#8221;, &#8220;Horner&#8221;  ) )<br />
</strong><br />
No Ruby um método é declarado com a palavra-chave def  seguida do nome do método  o qual<br />
deveria iniciar com uma letra minúscula, como este:</p>
<p><strong>def showstring<br />
      puts( &#8220;Hello&#8221; )<br />
end<br />
</strong></p>
<p>Você pode, opcionalmente, colocar um ou mais argumentos, separados por vírgula, após o nome do<br />
método:</p>
<p><strong>def showname( aName )<br />
      puts( &#8220;Hello #{aName}&#8221; )<br />
end<br />
def return_name( aFirstName, aSecondName )<br />
      return &#8220;Hello #{aFirstName} #{aSecondName}&#8221;<br />
end<br />
</strong><br />
Os parênteses em volta dos argumentos são opcionais. A seguinte sintaxe também é permitida:</p>
<p><strong>def return_name2 aFirstName, aSecondName<br />
      return &#8220;Hello #{aFirstName} #{aSecondName}&#8221;<br />
end<br />
</strong></p>
<p>Como explicado anteriormente,  eu sou mais favorável a usar os parênteses mas você pode omiti-los<br />
se quiser.</p>
<p><strong><br />
def showstring<br />
            puts( &#8220;Hello&#8221; )<br />
end<br />
def showname( aName )<br />
            puts( &#8220;Hello #{aName}&#8221; )<br />
end<br />
def return_name( aFirstName, aSecondName )<br />
            return &#8220;Hello #{aFirstName} #{aSecondName}&#8221;<br />
end<br />
def return_name2 aFirstName, aSecondName<br />
            return &#8220;Hello #{aFirstName} #{aSecondName}&#8221;<br />
end<br />
                             </strong><br />
# so which object owns these methods, anyhow?<br />
# The following test reveals all&#8230;<br />
print( &#8220;The &#8216;free standing methods&#8217; in this code belong to an<br />
object named: &#8221; )<br />
puts( self )<br />
print( &#8220;which is an instance of the class: &#8221; )<br />
puts( self.class )<br />
#Free-standing methods (like those above which are not defined<br />
within a<br />
#specific class) are methods (strictly speaking, &#8216;private&#8217;<br />
methods) of<br />
#the main object which Ruby creates automtically. The following<br />
code<br />
#displays a list of the main object&#8217;s private methods. Look<br />
carefully and<br />
#you will find showname, return_name and return_name2 in that list<br />
puts( &#8220;It contains these private methods: &#8221; )<br />
puts( self.private_methods )</p>
<p>Se os métodos se ligam aos objetos, qual objeto possui os métodos “independentes” que você escreve no seu código? Como mencionado antes, o Ruby cria automaticamente um objeto chamado main quando você executa um programa e é a esse objeto que os métodos “independentes” se ligam.</p>
<p><strong>Números</strong></p>
<p>Números são tão fáceis de usar quanto as strings. Por exemplo, vamos supor que você quer calcular o preço de venda e o total geral de alguns itens partindo do subtotal e da taxa de imposto.Para fazer isto você precisaria multiplicar o subtotal pela taxa de imposto e adicionar o valor ao subtotal. Assumindo que o subtotal é $100 e a taxa de imposto é de 17.5%, este código Ruby faz o cálculo e mostra o resultado:</p>
<p><strong>subtotal = 100.00<br />
taxrate = 0.175<br />
tax = subtotal * taxrate<br />
puts &#8220;Tax on $#{subtotal} is $#{tax}, so grand total is<br />
$#{subtotal+tax}&#8221;<br />
</strong></p>
<p>Obviamente, seria mais útil se pudéssemos efetuar o cálculo de vários subtotais em vez de ficar fazendo o mesmo cálculo toda vez. Aqui está uma versão simples da “Calculadora de Impostos” que pergunta ao usuário o subtotal:<br />
<strong><br />
taxrate = 0.175<br />
print &#8220;Enter price (ex tax): &#8221;<br />
s = gets<br />
subtotal = s.to_f<br />
tax = subtotal * taxrate<br />
puts &#8220;Tax on $#{subtotal} is $#{tax}, so grand total is<br />
$#{subtotal+tax}&#8221;<br />
</strong></p>
<p>Aqui s.to_f é um método da classe String. Este método tenta converter a string para um número de ponto flutuante. Por exemplo, a string “145.45” seria convertida para o número de ponto flutuante 145.45. Se a string não pode ser convertida, 0.0 é retornado. Assim, por exemplo, “Hello </p>
<p><strong>world”.to_f retornaria 0.0.</strong></p>
<p><strong>Testando uma Condição: if &#8230;             then</strong></p>
<p>O problema com o código da “Calculadora de Impostos” mostrado acima é que ele aceita subtotais negativos e calcula imposto negativo sobre eles. Eu, por essa razão,  preciso checar os valores negativos e, quando encontrá-los, zerá-los.<br />
Esta é minha nova versão do código:</p>
<p><strong>taxrate = 0.175<br />
print &#8220;Enter price (ex tax): &#8221;<br />
s = gets<br />
subtotal = s.to_f<br />
if (subtotal < 0.0) then<br />
        subtotal = 0.0<br />
end<br />
tax = subtotal * taxrate<br />
puts "Tax on $#{subtotal} is $#{tax}, so grand total is<br />
$#{subtotal+tax}"<br />
</strong></p>
<p>O teste Ruby if é semelhante a um teste if em outras linguagens de programação . Note que os parênteses, mais uma vez, são opcionais, assim como a palavra-chave then. Entretanto, se você for escrever o seguinte, sem quebra de linha após a condição de teste, o then é obrigatório:</p>
<p><strong>if (subtotal < 0.0) then subtotal = 0.0 end</strong></p>
<p>Obs: Note que a palavra-chave end que termina o bloco if não é opcional. Esqueça de colocá-la e o seu código não irá rodar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/ruby-strings-numeros-metodos-e-condicionais/hostweb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Biblioteca de Expressões Regulares.</title>
		<link>http://blog.hostweb.com.br/biblioteca-de-expressoes-regulares/hostweb</link>
		<comments>http://blog.hostweb.com.br/biblioteca-de-expressoes-regulares/hostweb#comments</comments>
		<pubDate>Mon, 08 Feb 2010 17:20:38 +0000</pubDate>
		<dc:creator>Giordano Alves</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[Regex]]></category>
		<category><![CDATA[Regexlib]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=502</guid>
		<description><![CDATA[Hoje trago a vocês a dica do site RegexLib, nesse site encontramos uma vasta coleção de expresssões regulares prontas para o nosso uso.
Para procurar uma expressão regular no site e so voce digitar no campo Find Expressions uma palavra chave sobre a expressão regular que voce quer.

O site retornará alguns exemplos encontrados com uma breve [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hoje trago a vocês a dica do site <a title="RegexLib" href="http://regexlib.com/" target="_blank">RegexLib</a>, nesse site encontramos uma vasta coleção de expresssões regulares prontas para o nosso uso.</p>
<p style="text-align: justify;">Para procurar uma expressão regular no site e so voce digitar no campo <em>Find Expressions</em> uma palavra chave sobre a expressão regular que voce quer.</p>
<p><img class="aligncenter size-full wp-image-503" title="Regular Expression Library" src="http://blog.hostweb.com.br/wp-content/uploads/2010/02/Regular-Expression-Library.png" alt="Regular Expression Library" width="510" height="97" /></p>
<p style="text-align: justify;">O site retornará alguns exemplos encontrados com uma breve descricao sobre o que cada exemplo faz.</p>
<p><img class="aligncenter size-full wp-image-504" title="Regular" src="http://blog.hostweb.com.br/wp-content/uploads/2010/02/Regular.png" alt="Regular" width="522" height="883" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/biblioteca-de-expressoes-regulares/hostweb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mootools e JQuery juntos. Como?</title>
		<link>http://blog.hostweb.com.br/mootools-jquery-juntos/hostweb</link>
		<comments>http://blog.hostweb.com.br/mootools-jquery-juntos/hostweb#comments</comments>
		<pubDate>Mon, 25 Jan 2010 17:20:50 +0000</pubDate>
		<dc:creator>Giordano Alves</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=428</guid>
		<description><![CDATA[Se voce está lendo esse artigo, deve ter tido problema ao tentar usar as bibliotecas Mootools e JQuery juntas.
Quando tentamos usar as duas juntas ocorre um erro pelo fato das duas bibliotecas terem o mesmo construtor $(). Então pode acontecer delas tentarem interpretar o mesmo código. O JQuery tentando interpretrar código que foi feito para [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Se voce está lendo esse artigo, deve ter tido problema ao tentar usar as bibliotecas <a title="Mootools" href="http://mootools.net/" target="_blank">Mootools</a> e <a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a> juntas.</p>
<p style="text-align: justify;">Quando tentamos usar as duas juntas ocorre um erro pelo fato das duas bibliotecas terem o mesmo construtor<em> <strong>$()</strong></em>. Então pode acontecer delas tentarem interpretar o mesmo código. O JQuery tentando interpretrar código que foi feito para o Mootools e o Mootools querendo interpretar código escrito para JQuery.</p>
<p style="text-align: justify;">Mas não se preocupe, existe uma solução bem simples para resolver esse problema.</p>
<p style="text-align: justify;"><a href="http://ejohn.org/">John Resig</a>( criador do JQuery ), sabendo que outras bibliotecas usavam o mesmo construtor que ele, criou a funçao <strong><em>jQuery.noConflict</em></strong>.</p>
<p style="text-align: justify;">Voce apenas tem que chama-lá depois da inclusão da biblioteca JQuery, antes de usar qualquer função JQuery e colocar <em>jQuery</em> como construtor no lugar $()</p>
<div id="code">&lt;script type=&#8221;text/javascript&#8221;&gt;</p>
<p> jQuery.noConflit();</p>
<p> jQuery().ready(function(){</p>
<p> jQuery(&#8217;#empresa&#8217;).css(&#8217;color&#8217;, &#8216;blue&#8217;);</p>
<p> });</p>
<p> &lt;/script&gt;</p></div>
<p>Agora é só usar o seu script Mootools com o construtor padrão:</p>
<div id="code">&lt;script type=&#8221;text/javascript&#8221;&gt;</p>
<p>$(&#8217;pessoa&#8217;).inject(&#8217;empresa&#8217;, &#8216;top&#8217;);</p>
<p>&lt;/script&gt;</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/mootools-jquery-juntos/hostweb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comandos Linux &#8211; chmod</title>
		<link>http://blog.hostweb.com.br/comandos-linux-chmod/hostweb</link>
		<comments>http://blog.hostweb.com.br/comandos-linux-chmod/hostweb#comments</comments>
		<pubDate>Tue, 19 Jan 2010 11:15:37 +0000</pubDate>
		<dc:creator>Lino</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[permissões]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=397</guid>
		<description><![CDATA[Para mudar as permissões de um arquivo ou diretório do servidor, você tem que utilizar o comando chmod.
Em geral, qualquer comando de linux ou unix tem uma ajuda, que você pode ver invocando ao comando, seguido com o parâmetro -help. Algo como isto:
chmod &#8211;help 
Este comando em concreto tem várias sintaxes permitidas. Entre elas, por [...]]]></description>
			<content:encoded><![CDATA[<p>Para mudar as permissões de um arquivo ou diretório do servidor, você tem que utilizar o comando chmod.</p>
<p>Em geral, qualquer comando de linux ou unix tem uma ajuda, que você pode ver invocando ao comando, seguido com o parâmetro -help. Algo como isto:</p>
<p><strong>chmod &#8211;help </strong></p>
<p>Este comando em concreto tem várias sintaxes permitidas. Entre elas, por exemplo, pode utilizar:</p>
<p>chmod [opcoes] modo-em-octal arquivo.</p>
<p>As opções podem ser indicadas ou não, segundo queiramos. Opções típicas são:<br />
d: significa diretório;<br />
-: significa arquivo;<br />
r = leitura (ride);<br />
w= escrita (writer);<br />
x=execução (execute);</p>
<p>Após digitar o comando ls -l todas as permissões dos arquivos do diretório corrente irão ser visualizadas.</p>
<p>EXEMPLO 1:</p>
<p><strong>drwxrwxrwx 3 lino lino 4096 2009-12-11 18:15 pasta sem título </strong></p>
<p>Análise:</p>
<p>d = significa que ele é um diretório;<br />
Os três primeiros caracteres dizem respeito ao usuário root(dono);<br />
Os outros três caracteres dizem respeito ao grupo ao qual pertence o dono do arquivo;<br />
Os últimos três caracteres dizem respeito aos outros usuários do sistema que não fazem parte do grupo Lino.<br />
Conclusão: A leitura, escrita e execução são permitidas a todos os usuários do sistema.</p>
<p><span id="more-397"></span></p>
<p>EXEMPLO 2<br />
<strong>drwx&#8212;&#8212; 2 lino lino 4096 2009-12-05 09:29 Música </strong><br />
Acima está o diretório música e apenas o dono tem permissão de leitura escrita e execução;</p>
<p>EXEMPLO 3<br />
<strong>-rwx&#8212;&#8212; 1 lino lino  733 2009-12-11 10:31 testenovo </strong><br />
Acima está o arquivo teste e apenas o dono tem todas as permissões;</p>
<p><strong>MUDANDO AS PERMISSÕES:</strong><br />
<strong>ls -l</strong> (mostra as permissões);<br />
<strong>chmod</strong> – muda as permissões;</p>
<p>Exemplo 1:<br />
<strong>chmod go-rw teste</strong><br />
obs: g = grupo, o=other(outros)<br />
Acima foi removida as permissões de leitura e escrita do grupo e dos outros usuários do sistema ao arquivo teste.</p>
<p>Exemplo 2:<br />
<strong>chmod g+r teste </strong><br />
O comando acima mostra que foi acrescentada a permissão de leitura a todos os usuários do grupo ao arquivo teste.</p>
<p>Exemplo 3:<br />
<strong>chmod g=o teste</strong><br />
O comando acima mostra que as permissões do grupo e de todos os usuários do sistema se igualaram.</p>
<p>Exemplo 4:<br />
<strong>chmod a=rw teste</strong><br />
obs: a= todos.(all).<br />
O comando acima indica que todos os usuários do sistema terão permissão de leitura e escrita no arquivo teste.</p>
<p><strong>TIPO DE PERMISSÃO OCTAL: </strong><br />
O modo em octal é um número em base 8 (octal) que especifica a permissão. Os números em octal se especificam começando o número por um 0. Por exemplo, 0777 indica todos as permissões possíveis para todos os tipos de usuário. 0666 indica que se dão permissões de leitura e escritura, porém não de execução. 0766 indica que se dão permissões de leitura e escritura, porém somente tem permissão de execução para os usuários que são donos do arquivo. 0755 indica permissões para leitura e execução, porém escritura só para o usuário que é o dono do arquivo. Vejamos com detalhes cada valor:</p>
<p>0: Sem permissão alguma, se for uma pasta o usuário sequer pode ver o conteúdo;<br />
1: Só execução = x<br />
2: Permissão de escrita(gravação) = w<br />
3: Permissão de gravação e execução =wx<br />
4: Apenas leitura =r<br />
5: Permissão de leitura e execução = rx<br />
6: Permissão de leitura e gravação = rw<br />
7: Permissão de leitura, gravação e execução = rwx</p>
<p>chmoc + xyz(números) + arquivo ou diretório.<br />
x=permissão do dono;<br />
y=grupo;<br />
z=outros usuários;</p>
<p>Exemplo 1:<br />
<strong>chmod 760 teste</strong> – permissão total ao dono e de leitura e escrita do grupo.<br />
<strong>chmod 700 *</strong><br />
* = todos os arquivos do diretório serão mudados com essa permissão.<br />
<strong>chmod -R 700 download/</strong><br />
-R = muda todas as permissões recursivamente.</p>
<p><strong>OUTRAS FORMAS DE UTILIZAR O CHMOD:</strong></p>
<p>Logo também se podem atribuir permissões de outra maneira, utilizando outra possível sintaxe de chmod, que talvez resulte mais útil se não quisermos tratar com os valores em octal.</p>
<p><strong>chmod [opcoes] modo[,modo]… arquivo </strong></p>
<p>Para isso temos que ter claros os distintos grupos de usuários:<br />
u: usuário dono do arquivo<br />
g: grupo de usuários do dono do arquivo<br />
o: todos os outros usuários<br />
a: todos os tipos de usuário (dono, grupo e outros)</p>
<p>Também há que saber a letra que abrevia cada tipo de permissão:<br />
r: se refere às permissões de leitura<br />
w: se refere às permissões de escritura<br />
x: se refere às permissões de execução</p>
<p>Exemplos</p>
<p><strong>chmod o=rwx * </strong><br />
Atribui permissões de leitura, escritura e execução para os usuários &#8220;outros&#8221; a todos os arquivos da pasta.</p>
<p><strong>chmod a=rwx arquivo.txt </strong><br />
Atribui todos as permissões a todos os usuários para o arquivo fichero.txt</p>
<p><strong>chmod go= * </strong><br />
Tira todas as permissões para os usuários do grupo e os outros usuários.</p>
<p><strong>chmod u=rwx,g=rw,o= * </strong><br />
Dá todos as permissões ao dono do arquivo, aos do grupo do dono lhe atribui permissões de leitura e escritura e aos outros usuários lhes tira todas as permissões.<br />
Nota:um espaço depois da vírgula &#8220;,&#8221; nos distintos modos de permissões que se indiquem faz falhar o comando.</p>
<p><strong>chmod a=r * </strong><br />
Dá permissões unicamente de leitura a todos os tipos de usuário.</p>
<p>De um modo parecido ao que acabamos de ver, também se podem adicionar ou tirar permissões com os operadores + e -. Para isso, se indica o tipo de usuário e a permissão que se resta ou adiciona. Algo como isto:</p>
<p><strong>chmod a-wrx * </strong><br />
Isto tira todos as permissões a todos os tipos de usuário.</p>
<p><strong>chmod a+r,gu+w * </strong><br />
Este comando atribui permissões de leitura a todos os usuários e permissões de escritura ao dono do arquivo e o grupo do dono.</p>
<p><strong>chmod u=w,a+r * </strong><br />
Este comando atribui permissões de escritura ao usuário dono e adiciona a todos os usuários permissão de leitura.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/comandos-linux-chmod/hostweb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caixa de correio corrompida? E agora?</title>
		<link>http://blog.hostweb.com.br/caixa-de-correio-corrompida-e-agora/hostweb</link>
		<comments>http://blog.hostweb.com.br/caixa-de-correio-corrompida-e-agora/hostweb#comments</comments>
		<pubDate>Tue, 12 Jan 2010 11:55:58 +0000</pubDate>
		<dc:creator>Lino</dc:creator>
				<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://blog.hostweb.com.br/?p=374</guid>
		<description><![CDATA[Muitas pessoas que possuem a comodidade de utilizar um webmail de sua empresa de hosting, preferem configurar seus e-mails em programas como por exemplo: Outlook, Thunderbird, dentre outros. Esse tipo de cliente normalmente já utilizava esses programas e não quer “ aprender novamente” a utilizar ferramentas com layouts ou com detalhes diferentes em relação a [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas pessoas que possuem a comodidade de utilizar um webmail de sua empresa de hosting, preferem configurar seus e-mails em programas como por exemplo: Outlook, Thunderbird, dentre outros. Esse tipo de cliente normalmente já utilizava esses programas e não quer “ aprender novamente” a utilizar ferramentas com layouts ou com detalhes diferentes em relação a nomenclatura, forma de envio e recebimento de e-mails, anexos, exportação de contatos, etc. Outro fator que motiva os clientes a configurar seu webmail em programas específicos é o fato de algumas empresas de hosting limitarem a quota, ou espaço disponivel no webmail. Dessa forma o espaço que o cliente terá de armazenamento de mensagens será o da sua própria máquina. Nesse caso o cliente deve ter o cuidado de configurar seu e-mail de forma adequada de acordo com suas necessidades e formas de utilização.</p>
<p>Por exemplo:<br />
Se você utiliza seu e-mail no Outlook, mas as vezes precisa viajar ou acessá-lo de outro local, você pode facilmente ver suas mensagens através do webmail, porém deve configurar o Outlook para deixar uma cópia das mensagens no servidor. A tela abaixo mostra o caminho a ser utilizado para definir essa configuração. O caminho pode variar de programa para programa, mas normalmente encontra-se na aba “avançado” na parte inferior. A opção “deixar cópia das mensagens no servidor” deve estar habilitada se você utiliza também seu webmail.</p>
<p><img class="alignnone size-full wp-image-375" title="1" src="http://blog.hostweb.com.br/wp-content/uploads/2010/01/11.jpg" alt="1" width="350" height="354" /></p>
<p>Porém nem tudo são flores&#8230; A desvantagem em se utilizar seu webmail configurado no outlook ou outro programa por exemplo é um erro muito comum e que muitas vezes tira a paciência  dos usuários. Abaixo aparece a tela de erro por exemplo no outlook express:</p>
<p><span id="more-374"></span></p>
<p>Erro: 0X800CCC0E:</p>
<p><img class="alignnone size-full wp-image-376" title="2" src="http://blog.hostweb.com.br/wp-content/uploads/2010/01/2.jpg" alt="2" width="400" height="321" /></p>
<p>Na base de dados da Microsoft esse erro é descrito da seguinte forma:</p>
<p>“ Sua caixa pode estar cheia, ou o a pasta de correio &#8220;INBOX&#8221;/&#8221;A receber&#8221; do seu Outlook encontra-se corrompida ou danificada. “</p>
<p>Normalmente a solução dada é a descrita abaixo:</p>
<p><em>Para voltar a ter acesso ao correio pode mover os ficheiros corrompidos para um outro diretório C:\Documents and Settings\(utilizador)\Local Settings\Application Data\Identities\(id da identidade)\Microsoft\Outlook Express\<br />
ou  C:\Documents and Settings\(utilizador)\Definições locais\Application Data\Identities\(id da identidade)\Microsoft\Outlook Express\ </em></p>
<p><em>Copie este ficheiro &#8220;A receber.dbx&#8221; para uma nova localização e abra o Outlook novamente depois disso deverá estar tudo a funcionar normalmente. </em></p>
<p>O que muitos usuários não sabem é que nem sempre esse processo dá certo, caso você não faça um backup de seus e-mails, você poderá perdê-los ou terá muito mais trabalho para recuperá-los.<br />
Antes de realizar esse procedimento, existe um procedimento mais simples e que pode normalizar sua caixa de correio que é uma ferramenta de restauração da caixa de correio(essa ferramenta está disponível no outlook express, mas o Microsoft outlook ou outros programas não disponibilizam).</p>
<p>No outlook express vá no menu: arquivo / pasta/ compactar todos as pastas como na tela abaixo:</p>
<p><img class="alignnone size-full wp-image-377" title="3" src="http://blog.hostweb.com.br/wp-content/uploads/2010/01/3.jpg" alt="3" width="588" height="350" /></p>
<p>É importante que esse processo de compactação seja realizado após você ter feito um backup de suas mensagens, pois caso o processo de compactação seja interrompido você poderá perder suas mensagens.</p>
<p>Se o problema permanecer após a compactação das pastas, tente mover os ficheiros corrompidos(arquivos .dbx) para um outro diretório conforme já orientado ou em último caso reinstale o programa de correio e configure seu e-mail novamente.</p>
<p>Dúvidas sobre outros códigos de erro? Acesse o site: <a href="http://bit.ly/07Mt4jM">http://bit.ly/07Mt4jM</a><br />
e tenha acesso uma base com erros comuns no Outlook express e Microsoft Outlook e possíveis soluções.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hostweb.com.br/caixa-de-correio-corrompida-e-agora/hostweb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
