Scrum – Pontapé inicial para aprender

11, abril, 2010 2 comentários

Bom, conforme disse anteriormente, estou começando a aprender Scrum. Parece ser muito interessante, a ponto de me motivar dar uma parada nas minhas tarefas para compartilhar algumas impressões e materiais relevantes.

Mas antes de tudo, vamos nivelar todo mundo aqui. Se você chegou por aqui pelo Google, provavelmente já sabe o que é Scrum. Mas, se você caiu aqui sem saber por que, vamos dar uma visão rápida do que é essa metodologia.

Scrum (esse nome veio de uma formação do rugby) é uma metodologia ágil de desenvolvimento de projetos, muito interessante e muito usada em diversas empresas de desenvolvimento de software ao redor do mundo. Esse framework é iterativo e incremental e privilegia o cliente, pois ele passa a fazer parte do processo de maneira bem significativa, passando uma excelente impressão para o mesmo. É relativamente simples e desburocratizado. Poderia ficar me alongando mais aqui sobre o Scrum, mas acho mais prático dar uma olhada nos tópicos da Wikipedia em português e inglês.

Indicando estes 2 tópicos, mesmo quem já tem alguma noção e quer aprender, pode obter algumas informações novas. Recomendo a leitura. Mas há bem mais a se ler. Muito mais, dependendo do seu apetite. Estou nessa fase de ler muito sobre o Scrum, e ainda não acho que sei o suficiente pra explicar de maneira geral esta metodologia. Vou compartilhar os links para os materiais a que tive acesso gratuitamente pela internet, através de indicações de amigos e parceiros.

Minha primeira indicação é para este artigo bem sintético e objetivo sobre o assunto. Foi-me passado por Israel Guerra e João Victor, meus coordenadores no LSL (onde trabalho) e principalmente meus amigos pessoais. Atualmente, pode ser baixado seu PDF neste link aqui (em inglês). Caso não esteja mais disponível quando ler este post, me notifique postando um comentário por aqui. Isso vale para todos os links que eu postar. Outro link interessante indicado por estes 2 peças raras é uma página com o conceito do Scrum descrito de maneira bem breve, mas com links para vários outros tópicos importantes. O endereço da página está aqui, e infelizmente só tem a versão em inglês também. Ainda nas referências indicadas pelo Guerra e pelo João, temos “Agile Software Development with Scrum“, de Ken Schwaber.

Uma outra referência muito interessante que estou lendo atualmente é o livro “Scrum e XP direto das Trincheiras“, de Henrik Kniberg. Pelo título, já dá pra imaginar que é um material em português, e realmente é. Trata-se de fato de um livro e conta com uma versão gratuita online disponibilizada aqui. Será necessário criar um login no site, mas até hoje não recebi nenhum spam deles, então podem se cadastrar sem maiores preocupações. É um material relativamente extenso (148 páginas) e conta com exemplos impressões e conceitos. Este material me foi passado gentilmente pelo Henrique Castro da Helpper Soluções Inteligentes (uma das empresas ao redor do mundo que usam Scrum). Caso seja contra sua religião se registrar em sites para baixar arquivos, uma versão desatualizada (com 105 páginas) e em inglês pode ser encontrada na página do autor neste link aqui. Note que a primeira página é uma recomendação do próprio autor falando para baixar o livro no site citado anteriormente.

São poucas as minhas indicações para se ler agora, mas é porque elas são mais baseadas na reputação de quem me indicou (o Henrique, por exemplo, é Certified Scrum Master). No Google, uma pesquisa simples retorna inúmeros resultados e não duvido nada que a grande maioria seja relevante.

Sinta-se a vontade para indicar mais links interessantes pelos comentários. Pondero apenas que apagarei links para download de materiais protegidos por direitos autorais disponibilizados indevidamente.

Boa leitura e vamos estudar Scrum! :)

Por ora, é isso.

[]‘s

Sahb,.

P.S. 1: Adicionado em 13/04/2010: Mais um link interessante que encontrei. É um apanhado com vários documentos interessantes, inclusive o “Scrum Guide“, escrito pelo Ken Schwaber. Acesse por aqui.

Dica expressa para usar compartilhamentos Samba com Mac – Problema de renomear pastas criadas

11, abril, 2010 Sem comentários

Bom, essa é uma dica bem rápida. Um compartilhamento de arquivos Samba pode te dar alguma dor de cabeça com usuários Mac. Provavelmente você vai ouvir relatos bizarros como “Consigo criar pasta mas não consigo renomeá-la”. Esse é o sintoma clássico do problema que descreverei, além de outros problemas para manter certos permissionamentos.

Sem me alongar muito, conto o porque de isso só acontecer com os computadores da maçã mordida conectados ao seu servidor Samba. Os Mac’s, por padrão, criam um arquivo oculto chamado .DS_Store em toda pasta que eles abrem. Ele serve para armazenar alguns atributos do usuário local do Macintosh. O problema é que em compartilhamentos na rede isso não é nada interessante, pois é esperado que sejam preservados os privilégios do usuário do Samba e não do Mac.

Vamos direto ao ponto então, para que não tenha mais esse incomodo na rede: abra um terminal no Mac do usuário (um programa chamado Terminal mesmo), e digite o seguinte comando:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

É importante saber que o comando acima só irá funcionar com o usuário corrente. Se tiver mais usuários no seu Mac, faça isso para eles também. Outro ponto importante, é que, como você pode inferir pelo comando, o .DS_Store deixará de ser criado somente em compartilhamentos de arquivos de rede, no mais, tudo ficará como antes.

Existe uma outra solução, colocando uma opção na configuração do Samba, mas aparentemente, não funciona em todos os casos. Caso queira tentar, edite seu /etc/samba/smb.cnf e coloque a linha a seguir em todas as seções de compartilhamento:

veto files = /._*/.DS_Store/

A solução mais garantida é a primeira mesmo. Caso alguém encontre uma solução melhor server-side, por favor, me avisem pelos comentários.

É isso por ora.

[]‘s

Sahb,.

Servidor Novo + Trabalho Novo

11, abril, 2010 Sem comentários

Bom, meus tutoriais de servidores Linux ainda estão sendo elaborados, e como esperado, estão ficando grandes :P

Porém, algumas informações interessantes antes do dia da publicação dos esperados tutoriais.

Mudei de Servidor. Agora estou usando um serviço pago da Dialhost. Creio que os acessos ficarão mais rápidos.

Mudei de emprego. Agora estou de volta ao meu querido Laboratório de Software Livre lá do DCC/UFMG. Bacana estar de volta. Estou estudando Scrum por lá, então aguardem também um tutorial sobre Scrum em breve.

É isso, por ora.

[]‘s

Sahb,.

Categories: Pronunciamentos Tags:

Depois de muito tempo…

4, março, 2010 Sem comentários

Bom, muito tempo sem postar né? Pois é… Mas agora irei voltar. Estou preparando uma série de tutoriais para configuração de alguns serviços no Linux para meios corporativos.

Teremos FTP, Samba, SVN, e mais. Tudo discutido com ponderações sobre segurança. O primeiro da série vai ser sobre o Samba. Pretendo também, ou durante ou ao final dessa série, fazer uma discussão sobre o uso de servidores Linux em agências digitais.

Bom, é bom estar de volta. Nos vemos em breve. Siga meu perfil no twitter para se informar sobre a publicação dos tutoriais: @rafaelsahb.

É isso.

[]‘s

Sahb,.

Categories: Sem categoria Tags:

Dicas mínimas para um site mais seguro – parte 2 – PHP

12, agosto, 2009 2 comentários

Bom, conforme prometido, vamos dando sequência à série sobre segurança. Dessa vez serei bem breve, pois gostaria apenas de fazer um adendo importante ao post anterior. Eu tinha para mim, que era consenso que as pessoas sabiam fazer queries SQL de maneira correta e segura. Em especial, estou falando das queries que buscam id’s, ou qualquer dado inteiro, que não necessite de aspas para delimitar o valor. Pelo visto, pouca gente sabe, mas nesses casos, as aspas são opcionais. Sim, opcionais. Mas por que eu estou falando isso?

Você provavelmente já fez algum site que recebesse um parâmetro por GET do tipo noticias.php?id=2 , certo? E lá na sua query, você fazia todo feliz:

SELECT titulo,data,conteudo,autor FROM noticias WHERE id=$_GET['id'];

Aí, você leu meu artigo anterior sobre segurança e foi todo meninão (ou meninona, existem muitas mulheres programadoras :D ) colocar o seu mais novo amigo em ação, o mysql_real_escape_string(). Daí você passou a usar essa função a torto e a direito, achando que estava seguro. Aí um belo dia, você descobre que foi alvo de SQL Injection e me xinga todo, até a décima quarta geração… Pera lá! A tal função é muito útil, mas não é uma bala de prata.

A mysql_real_escape_string() serve para ‘escapar’ aspas de strings passadas para queries SQL, basicamente. Bão, pra uma query como a citada, o valor não é delimitado por aspas, então o atacante nem precisa se preocupar em burlá-las… Perceberam agora o problema?

Pelo que eu vi, muita gente não tem essa maldade, então sugiro que tenham… Outro dia vi um menino muito chato fazendo um noticia.php?id=2 or 1=1 e essa query pesou tanto o sistema que o site travou. Falei esse exemplo porque na maioria dos casos, esse ataque nem causa estragos, então não vão me condenar por criar monstrinhos… Bom, última chance pra você entender o que aconteceu. Fazendo aquela chamada, a query executada foi:

SELECT titulo,data,conteudo,autor FROM noticias WHERE id=2 or 1=1

Ou seja, retornaremos todos os registros do banco. Se os dados são um pouco mais complexos, e a query consulta várias tabelas, isso deitaria o servidor sem muita dificuldade.

Mas e aí? Coloque a tal aspa opcional, e junto com a nossa célebre amiga mysql_real_escape_string(), você estará mais alguns passos próximo de um site mais seguro =D

Resumindo, faça:

$query = sprintf("SELECT titulo,data,conteudo,autor FROM
     noticias WHERE id='%s';", mysql_real_escape_string($_GET['id']));

Acho que fui claro. Qualquer coisa, estou às ordens nos comentários. Depois tem mais.

[]‘s

Sahb,.

Aumentando o espaço em disco livre no Windows Vista

21, julho, 2009 3 comentários

Bom, sempre tive a fama de xiita que nunca usa sistemas proprietários, mas estou experimentando a vida em um sistema não-linux no meu notebook que comprei há 2 meses. Não é um exemplo de sistema operacional em vários sentidos, mas na maioria das vezes consigo fazer minhas tarefas :P Devo confessar também que essa estada no sistema da Redmond se deve também à minha placa de vídeo junto com o monitor do notebook de 1440×900 não se darem bem com os drivers e configurações de vídeo que eu testei antes de decidir esperar sair um driver (se sair) que permita eu trabalhar no linux em resolução acima de 800×600.

Choradeiras pela minha incompentência e/ou preguiça de me empenhar pra conseguir botar o pinguim rodando no meu note a parte, vamos ao assunto deste post. Tenho um HD de 320 GB e notei que o espaço livre dele ia diminuindo. Preconceituoso como sou com sistemas proprietários, já xinguei até, falando que devia ser algum vírus ou coisa do gênero. Dando uma zapeada pela net, vi que um dos principais ‘comedores de disco’ é o backup de configurações do sistema, e para minha alegria, havia uma maneira simples de resolver isso.  Vamos lá.

O sistema vem com uma idéia fraca de que você não vê problemas em perder espaço de armazenamento salvando configurações que ninguém vai confiar depois que um vírus contaminar seu sistema. Bom, notaram como sou preconceituoso agora né? :P Se der pau, eu reinstalo o sistema antes que vocês possam dizer “restaurar configurações anteriores”, afinal, vou confiar nos dados salvos de um sistema que não deu conta de se proteger…? Acho que vocês vão acostumar com meus comentários sobre o Windows.

Para fazer a mágica, vá em iniciar -> Todos os programas -> Acessórios e note o prompt de comando lá. Que que você já tá clicando nele? Eu não disse que era pra clicar… Tsc tsc tsc… Você tem que na verdade clicar com o botão direito nele e ir na opção Executar como administrador. Agora começa a parte bonita. Nessa tela preta, digite:

vssadmin list shadowstorage

Agora, você vai esperar um pouco e ver que realmente a idéia desse sistema de comer seu precioso espaço para filmes e músicas é muito fraca. No meu caso, eram 44GB de espaço separado para esse fim. E reduzir esse espaço é bem simples. Nesse mesmo prompt aberto, digite:

vssadmin Resize ShadowStorage /For=C: /On=C: /MaxSize=1GB

Voi là! Agora você tem mais espaço livre em disco. Talvez você fique com a impressão de que ainda poderia ser liberado mais espaço, mas uma parte boa desse desperdício de armazenamento foi embora.
E pra finalizar, esse meu contato com o Vista me mostrou que ele é ruim com IO, mas não é impossível de trabalhar com ele. Às vezes ele apronta, mas dá pra contornar de boa, na maioria das vezes :P

[]‘s

Sahb,.

Cobertura do E3 pelo Gamebase.com.br

3, junho, 2009 Sem comentários

Bom, começou nessa última segunda-feira, 01/06, a edição 2009 do Electronic Entertainment Expo, ou para os mais íntimos, só E3. Para os nem um pouco íntimos, é só o evento mais importante (opinião minha) de jogos eletrônicos do mundo. O Gamebase  não perdeu tempo e está fazendo uma cobertura excelente. No GB podem ser encontradas notícias quentinhas dos lançamentos, conferir vídeos e ainda ver fotos de vários lançamentos.

É, eu sou suspeito pra falar sobre o GB, mas confiram e tirem suas conclusões. www.gamebase.com.br/e3/, acessem e acompanhem :)

[]‘s

Sahb,.

Gamebase.com.br

7, maio, 2009 Sem comentários

Bom, hoje vou falar sobre esse projeto bacana que estou trabalhando na 5clicks. Atualmente estou nesta empresa praticamente por conta do desenvolvimento do portal de jogos gamebase.com.br que, a meu ver, tem um potencial ótimo. Mas só elogiar não adianta. Vamos aos fatos :)

O Gamebase atualmente está na fase de pré-lançamento, o que pra mim já foi um fator que me chamou a atenção, já que entrei no projeto um pouco depois desse início na web. Mas o que quer dizer esse pré-lancamento? Quer dizer que ao invés de uma página “Em construção, aguarde” (sem zoações com o www.sahb.com.br, por favor :P ), há um espaço para se cadastrar e dar sugestões sobre como o portal deve ser. E posso dizer que tem muita gente dando idéias boas, achei impressionante o nível de interesse de alguns usuários cadastrados no site. Se você sentiu vontade de dar um pitaco lá, ainda pode :)

E por falar em cadastro, tem o sistema de conquistas, outra coisa que fez o projeto ter mais moral ainda comigo. A medida que você vai postando sugestões e comentários, dependendo do que você faz ou posta, são dadas essas conquistas, que constarão em seu perfil (se você for cadastrado). São como mini medalhinhas que você vai colecionando. É vendo pra entender.  E o mais bacana é que os usuários não sabem a princípio como ganhá-las. Muitos estão perseguindo com bastante empenho ter todas as conquistas, e posso dizer que algumas são bem divertidas de se conseguir. Mais que isso não posso contar :P

O motivo que me motivou mais a escrever esse post é que essa semana disponibilizamos um beta. Parafraseando as imortais minhoquinhas do worms, esse beta é “O primeiro de muitos!”. Esses betas são partes do futuro portal disponibilizadas para apreciação e sugestões. O dessa semana é uma análise muito bacana do Godfather II. Digo “muito bacana” não só por mim, mas os comentários sobre ela foram bastante animadores. Confira aqui e veja você mesmo. E se quiser, comente :)

Não posso falar mais que isso sobre o projeto, mas posso dizer que TEM MUITA COISA BACANA vindo por aí. Esperem e verão.

Mais pra frente, vou falar mais sobre o GB e dar mais detalhes.

É isso.

[]‘s

Sahb,.

Categories: Gamebase Tags: , ,

Conflito entre prototype.js e jquery.js

28, abril, 2009 25 comentários

Bom, estou com o tempo curto aqui no trabalho, mas deixo esse post aqui para alertá-los sobre possíveis problemas que vocês podem encontrar usando aplicações web que usem o prototype.js (como o meu querido Lightbox ) junto com o meu também querido jquery.js. Por estar com pouco tempo, infelizmente não poderei me alongar nos detalhes dessas ferramentas que acho muito úteis e indispensáveis.

Mas enfim, se você chegou até aqui através do nosso amigo google, deve ser porque você está passando por esse problema agora :P

Vamos direto ao ponto. O jQuery possui um modo ‘noConflict’ para casos em que haja conflito com declarações de outras bibliotecas. Mas isso você já deve ter notado né? :P Para resolver isso, carregue o jQuery primeiro, e faça:

<script type="text/javascript" src="jquery.js"></script>

    <script type="text/javascript">
        jQuery.noConflict();
    </script>

Isso deverá vir antes de carregar qualquer outra biblioteca de scripts. A partir daí, você pode carregar os demais js’s, inclusive o prototype.js. Porém, não é só isso, mas calma, não vai ter nada de muito difícil. Nas chamadas ao jquery.js que usem o $, substitua esse por jQuery. Um exemplo é:

$("#conquistapg").load(url);

// Vira:

jQuery("#conquistapg").load(url);

Pronto! Agora é só isso mesmo!

Espero ter ajudado :)

Mais pra frente vou me alongar mais nessas bibliotecas bacanas.

[]‘s

Sahb,.

Codificação Drops

15, abril, 2009 1 comentário

Depois de muito tempo sem postar, eis que volto %) Estou trabalhando aqui na 5Clicks agora. Uma experiência muito bacana, trabalhando com coisas legais. Depois rola um post só pra puxar o saco da 5′. hehehe

Bom, vamos ao que interessa. Hoje me deparei com um problema que muitos devem passar por aí, e vejo que a maioria prefere se adaptar ao inconveniente a corrigí-lo. De fato, é meio chatinho achar a resposta para a pergunta, mas antes de me adentrar na solução, acho que seria legal eu falar qual é o problema.

Codificação. Sim, se você programa ou faz alguma coisa pra web, já teve dor de cabeça com os ISO-8859-1 (ou latin1), UTF-8, etc… Antes que seus olhos encham de lágrimas e seu coração pule de alegria, não se engane: não irei resolver todos os seus problemas de codificação (a menos que todos os seus problemas se resumam no problema que irei listar aqui, mas aí, ah, que sem graça… :P )

Tá, qual é o problema? Bom, o nosso querido MySQL retorna por padrão (pelo menos até onde sei, os comentários estão aí para corrigir as besteiras que eu falo também) na codificação latin1. Então, independente de como os dados são adicionados, ele sempre retorna em latin1. Com isso, numa pesquisa feita ao banco, se impressa na tela em uma página em UTF-8, o resultado da consulta vai mostrar as malditas interrogações de erro de codificação. O latin1 é bacana, o latin1 é legal, mas utf-8 foi criado pra unificar essa bagunça de codificações (aguardem um post só pra defender o unicode). Então, já que inventaram essa codificação pra facilitar nossa vida, que a usemos então!

Muitas pessoas passam a usar páginas iso-8859-1 por não saber como fazer o queridíssimo MySQL retornar em outra codificação. Bom, não é difícil achar isso, com algum empenho dá pra achar como, tanto que eu nem sou um gênio e achei :P . O problema em achar essa resposta, é que se costuma fazer uma pesquisa do tipo “codificação mysql utf8″. Isso retorna muitos resultados em como mudar a “collation” do banco. Daí, um colega com menos empenho ou com um prazo apertando o pescoço (acho que isso ocorre a maioria das vezes), acaba sucumbindo em não conseguir resolver isso, e faz a página toda em iso-8859-1.

E agora, sem mais delongas, uma solução bacaninha pra mudar o retorno do banco de dados MySQL pra unicode. Basta passar o seguinte comando toda vez que uma conexão ao banco for criada:

SET NAMES 'utf8';

Não entendeu? Tipo, você está lá, fazendo sua conexão ao banco, no PHP por exemplo, daí você faz:

$conexao = mysql_connect($host,$usuario,$senha);
mysql_select_db($database);
mysql_query("SET NAMES 'utf8'");

É só fazer isso %) E sigam usando seu unicode felizes e contentes. Depois vou postar mais dicas pra lidar com a codificação, um assunto que dá muita dor de cabeça pra muuuita gente.

Espero que tenha ajudado!

[]‘s

Sahb,.