by Luiz Paulo
| dezembro 3, 2008
| 12 Comments »
Essa semana eu e parte de nossa equipe, passamos por uma situação complicada. Estamos desenvolvendo um projeto relativamente grande que precisa ser entregue até final do ano. Até aí nada de errado!
Esse projeto já está rolando há algum tempo e passou por todos os processos de desenvolvimento (ou quase todos).
Quando chegou a nossas mãos (desenvolvimento), encontramos uma documentação com várias e várias funcionalidades, só que uma delas nos chamou a atenção, pois estava bem complexa. Com definição de regras e sub-regras para chegar a um determinado objetivo. Até que um dia, tive uma dúvida e resolvi perguntar para o cliente, conversamos bastante até chegarmos a um consenso. Depois de 4 horas de reunião, percebemos que essa funcionalidade não precisava mais do que um cadastro "besta".
Me senti exatamente nessa situação:

Depois de tanto trabalho, a funcionalidade pronta, etc. etc. tivemos que refazer (ainda bem que conseguimos recuperar boa parte do código)!
Com esse quadro, fica a questão. Quem errou?
Seria o cliente por não ter conseguido explicar exatamente o que precisava? Do pessoal que planejou/documentou que não soube dar a melhor solução? Ou do desenvolvimento que não gritou antes a respeito da complexidade?
Na minha opinião, o problema não está ligado diretamente a nenhuma das partes. Todos direta ou indiretamente erraram.
Depois de todo esse tempo de desenvolvimento, houve um amadurecimento da idéia, e com isso as coisas se tornaram muito mais simples.
Sim! Com certeza, se lá atrás quando foi planejado, tivessem ficado 5 minutos a mais discutindo, talvez chegassem a esse resultado mais simples, mas não aconteceu. E deu no que deu.
Existe toda aquela discussão de métodos ágeis ("...se estivesse utilizando Scrum isso não acontecia!"), zilhões de técnicas para processos melhores e menos burocráticos. Concordo que talvez não tivéssemos esse problema, independentemente de métodos e processos, precisamos levar em consideração o que comentei acima, nesse tempo houve um amadurecimento da idéia e os clientes perceberam que aquilo definido não era necessário.
Esquecemos do KISS "Keep It Simple Stupid", princípio básico para desenvolvimento.
Enfim, aprendi muito com isso! Acho que todos crescem com esse tipo de situação. Com certeza depois disso, na próxima teremos mais cautela ao definir uma coisa muito complexa, ou não... (rsrsrs)
Categorias: Artigo, Desenvolvimento web
Tags: , desenvolvimento, kiss, planejamento, projeto, scrum
by Luiz Paulo
| novembro 29, 2008
| 1 Comment »
Assisti essa semana uma palestra de Luli Radfahrer que aconteceu no descolagem#3 no dia 22 de novembro de 2008.
A palestra é simplesmente SENSACIONAL!
Os assuntos abordados nessa palestra são:
- O Abismo da inclusão digital
- Escolas
- A função do professor
- Comunidade (Continuidade de controle)
- Educação como plataforma
- Invenção e inovação
A palestra mostra a atual realidade da educação em nossa sociedade. Explica de forma brilhante o que as pessoas (principalmente professores) não enxergam. A forma errada com que a tecnologia é agregada na educação entre vários assuntos atuais e pertinentes a todos nós.
Parabenizo ao Luli, pois além de um ótimo palestrante concordo com sua visão.
Assistam!
Clique aqui para asista a palestra
Categorias: Palestras, Tecnologia, Tendências
Tags: , descolagem, educação, escola, Luli Radfahrer, palestra, século XXI, Tecnologia
by Luiz Paulo
| novembro 14, 2008
| 15 Comments »
Essa semana, eu precisei de uma solução em Javascript para encontrar o "último dia do mês" ou "quantidade de dias do mês" como preferir. Consultei o Google e encontrei algumas soluções, algumas delas mais simples e outras bem criativas.
Achei o assunto interessante e resolvi divulgar aqui para quem precisar utilizar.
Primeiro vou postar as soluções sérias para o pessoal que está pesquisando e precisa utilizar em seu código
Soluções simples
Exemplo longo (função):
function daysInMonth(month,year) {
var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (month != 2) return m[month - 1];
if (year % 4 != 0) return m[1];
if (year % 100 == 0 && year%400 != 0) return m[1];
return m[1] + 1;
}
Exemplo curto (função):
Aqui está a grande sacada do javaScript, que interpreta o 0(zero) como "o dia antes do dia primeiro" que obviamente é o último dia do mês anterior.
function daysInMonth(month,year) {
var dd = new Date(year, month, 0);
return dd.getDate();
}
Exemplo curto (inline):
var lastDay = (new Date(year, month, 0)).getDate();
Soluções criativas
Não se assustem, mas as soluções citadas abaixo funcionam!
Solução utilizando Switch:
function getLastDayOfMonth(month,year)
{
var day;
switch(month)
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12:
day = 31;
break;
case 4 :
case 6 :
case 9 :
case 11:
day = 30;
break;
case 2 :
if( ( (year % 4 == 0) && ( year % 100 != 0) ) || (year % 400 == 0) )
day = 29;
else
day = 28;
break;
}
return day;
}
Essa é legal
function anoBissexto(anoCompleto)
{
if(!(anoCompleto%4) && (anoCompleto%100 || !(anoCompleto%400))) return true;
return false;
}
function diasNoMes(mes,ano)
{
var var_type=typeof mes;
if(var_type != "number" && var_type != "string") return false;
if(var_type == "number" && (mes > 11 || mes < 0) && !isInt(mes)) return false;
var eng_args_allowed = "january-february-march-april-may-june-july-august-september-october-november-december";
var bra_args_allowed = "janeiro-fevereiro-marçomarco-abril-maio-junho-julho-agosto-setembro-outubro-novembro-dezembro";
var vet_eng_args_allowed = eng_args_allowed.split("-");
var vet_bra_args_allowed = bra_args_allowed.split("-");
var datahj = new Date();
var anohj = datahj.getFullYear();
var dias = [31,anoBissexto(ano)?29:28,31,30,31,30,31,31,30,31,30,31];
if(var_type == "string")
{
indice_eng = keyPosMatch(vet_eng_args_allowed,mes);
indice_bra = keyPosMatch(vet_bra_args_allowed,mes);
if(indice_eng>=0) return dias[indice_eng];
if(indice_bra>=0) return dias[indice_bra];
return false;
}
else return dias[mes];
}
Façam bom proveito!
Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , calendar, code, date, example, javascript
by Luiz Paulo
| outubro 9, 2008
| 4 Comments »

Um recurso muito útil para quem precisa traduzir textos constantemente é a tradução de textos diretamente no Google Talk.
Já utilizo esse software há algum tempo como alternativa ao MSN além de muito (muito, muito...) mais leve e estável, as mensagens chegam quase que instantâneas, enquanto o MSN, dependendo do dia, você pode mandar uma mensagem e demorar horas. O serviço de voz também é muito bom.
Para utilizar esse recurso, basta adicionar um contato a seu Google Talk, e enviar as mensagens (Simples assim! )
Por exemplo, para traduzir de inglês para português:
Adicione como contato: en2pt@bot.talk.google.com
Envie mensagens em inglês e ele te responderá a tradução em português.
Legal, não!?
Testei esse recurso em en2pt e pt2en e funcionou perfeitamente. Não pesquisei se traduz de qualquer linguagem para qualquer linguagem, mas fica a dica!
Categorias: Artigo, Ferramentas, Java, Linguagens
Tags: , google, ingles, portugues, talk, tradutor
by Luiz Paulo
| outubro 7, 2008
| No Comments »
O Cheat Sheet é um resumo de um assunto específico que pode ser utilizada como guia rápido. Nele você pode encontrar sintaxes, códigos, exemplos, conceitos e dicas.
Não podemos considerá-lo um manual completo pois é bem compacto, mas quebra bastante o galho! Além de úteis, normalmente são feitos com visual agradável, podendo ser impresso e facilmente colado no seu escritório.
Achei alguns cheatSheet sobre photoshop ótimos! Contém vários atalhos e ferramentas, vale apena conferir!
Baixe os cheatSheets de Photoshop e façam bom proveito!
Coletânea de atalhos sobre várias versões do PhotoShop

Coletânea sobre ferramentas e atalhos

Categorias: CheatSheet, Design
Tags: , atalhos, CheatSheet, cs2, cs3, Ferramentas, key, keyboard, photoshop, shortcuts
« Posts anteriores —
Próximos posts »