• rss

Assine nosso feed

640k emails serão suficientes para o projeto

(0)

Category : Códigos, Sistemas, WTF

Uns dois anos atrás, contei um WTF de um dos personagens mais estranhos que já passou na minha vida de sysadmin/programador, o Canceroso. A idéia era desenvolver toda uma saga que se ilustraria as centenas de WTF’s que o Canceroso criou durante o ano, mas várias coisas mudaram de lá pra cá, e o projeto acabou morrendo por pura falta de tempo e organização da minha parte. Mas como o bem sempre vence o mal, o projeto será retomado. Até porque preciso escrever antes que minha memória comece a falhar. :P

Enfim, em algum ponto do projeto que o Canceroso desenvolvia, ele começou a projetar todo o sistema de envio de orçamentos para fornecedores, recebimento, entrada dos valores no sistema, escolha da melhor opção e envio do pedido de compra. Com o processo todo rabiscado no papel, ele me chamou para uma reunião e começou a verificar alguns requisitos:

“Então, só para saber, qual o limite que nós temos para criar emails no servidor?” – ele perguntou

“Acho que só podemos criar mais uns cinco” – respondi

“Ih, cara, pra isso aqui dar certo vou precisar de uns nove emails…”

“Como assim, pra quê tudo isso? Não é só usar o compras@empresa?”

“Então, da maneira que pensei, teria que ter o orcamento@empresa para enviar o orcamento às empresas, um receb_orcamento@empresa para que elas enviem o orçamento, um respond_orcamento@empresa para dar retorno às empresas, (…)” – Aqui, tomo a liberdade de cortar toda a explicação do sujeito.

“Mas… não faz sentido algum. Pra quê ter nove emails? O usuário vai ter que ficar acessando todos?”

“Não, eu vi umas classes em Java, o sistema vai enviar o email, e verificar essas contas que eu falei. Quando chegar o orçamento, ele vai automaticamente ler o email, pegar os dados, e jogar no banco de dados. Na verdade o usuário nem vai precisar acessar o email, vai tudo pelo sistema.

O estalo que meu cérebro pôde ser ouvido por kilômetros, assustando alguns animais. Havia tantas falhas óbvias no raciocínio dele que me perguntei por alguns momentos se ele estava falando sério. Na dúvida, resolvi questionar:

“Canceroso, simplesmente não faz muito sentido. Cada empresa, cada fornecedor, possui diferentes formas de enviar um orçamento, pode ser no corpo do email, em um pdf anexo, ou um doc do word, ou um arquivo texto, ou uma planilha, ou…. sei lá, milhões de possibilidades. E como você vai fazer para ler cada um dos orçamentos?”

“Não, isso é tranquilo, o sistema vai enviar automaticamente uma planilha para os fornecedores, cada item vai ser formatado corretamente, e aí quando ele enviar pra gente o sistema vai ler e jogar no banco de dados.”

“OK, mas e se acontecer dele salvar a planilha em um formato diferente do Excel? O sistema não vai ler?”

“Ele vai ter que salvar no formato definido”

“E se ele tiver que incluir dados extras, como promoções ou condições especiais?”

“Ele não vai poder colocar nada difente na planilha, ou vai dar erro. E nós vamos avisar isso pra eles”

“E se o fornecedor não tiver um email, somente fax?”

“Eles vão ter que ter um email.”

“E se eles enviarem em outro formato?”

“Simples, a gente não compra.”

“Então, basicamente, você está criando um sistema que além de exigir nove emails, exige também que os nossos fornecedores se adequem ao modelo de orçamento enviado, e que eles se adequem ao nosso modelo de pedido, ou eles não vão vender pra gente?”

“Sim, é isso mesmo. Mas essa é só a parte de compras, ainda tenho que fazer o processo de vendas, então é bem provável que você tenha que criar mais uns nove emails”

Felizmente, o sistema nunca saiu de uma página de entrada com login hard-coded em javascript. Durante meses me perguntei como seria se esse aborto da natureza tivesse realmente saído do papel…..

E continua indefinidamente…

(5)

Category : Códigos

Carlos tinha um  pequeno problema, que na verdade já era bem comum para qualquer um que trabalhe com desenvolvimento: prazo apertado, projeto mal brifado, e um designer que, de forma educada, não era exatamente o “lápis mais apontado do estojo”.

Felizmente uma versão prototipada do projeto (um site simples de pesquisa) ficou pronta para avaliação do cliente em tempo recorde, e obviamente várias mudanças foram solicitadas.

Entre a pressão do cliente, o prazo apertado e as várias mudanças que precisavam ser feitas, o designer simplesmente sumiu, e Carlos acabou tendo que cuidar das revisões de layout. Ao passar pela listagem de perguntas (que tinha um efeito simples, a cor de fundo mudava quando o mouse passava pelo título), Carlos encontrou algo estranho: embora o efeito para todas as linhas de perguntas fosse exatamente o mesmo, cada linha tinha uma classe css diferente. Eram mais ou menos 50 perguntas.

Ao olhar no arquivo .css, Carlos conseguiu entender porque esse arquivo era justamente o mais pesado de todo o projeto:

.linhas ul li.p01 a, .linhas ul li.p01 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p01 a:hover, .linhas ul li.p01 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha1.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
 
}
 
.linhas ul li.p02 a, .linhas ul li.p02 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p02 a:hover, .linhas ul li.p02 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha2.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
 
}
 
.linhas ul li.p03 a, .linhas ul li.p03 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p03 a:hover, .linhas ul li.p03 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha3.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
 
}
 
(Muitas e muitas e muitas linhas parecidas com essas)
 
.linhas ul li.p50 a, .linhas ul li.p50 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p50 a:hover, .linhas ul li.p50 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha50.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
}

Carlos simplesmente levantou, pegou um cigarro e um café, e foi ver a lua fora da agência. Aquela seria uma longa noite….

Telas WTF – O primeiro de 2010 :)

(1)

Category : WTF, screenshots

(como sempre, cliquem para ampliar. :) )

Lealcy descobriu que o Facebook, assim como o Orkut, não sabe contar.

Passion acha que o preço do Blu-ray ainda precisa baixar MUITO antes de estar disponível para toda população:

E, já que falamos que o Orkut não sabe contar, o Willian descobriu que o novo Orkut não sabe…. reconhecer URLs…

Pelo menos ela não precisa de armário, joga tudo no cesto de lixo…

(6)

Category : Usuários, WTF

Se tem uma coisa em que usuários são mestres é na capacidade de criarem técnicas de organização bizarras e poucas produtivas. Já conheci uma usuária que organizava os emails por mês, em pastas diferentes, e por isso achava desnecessário apagar qualquer coisa, já que “se eu quiser ver algo, é só ir no mês que me mandaram o email…”. Há muitas outras histórias tão absurdas quanto essa, como veremos agora….

William de Oliveira Ferreira trabalha em uma empresa de plano de saúde e ficou encarregado de encaminhar por email para uma funcionária do setor de faturamento e movimentação de notas fiscais uma tabela de códigos conversão de códigos de procedimentos médicos (pois essa funcionária faz auditoria das guias médicas, e tal informação era importante…). Um procedimento até bem simples e comum.

Passados alguns dias, a funcionária procurou William para saber sobre a tabela de códigos. Confuso, William disse que havia encaminhado a tabela por email, e acabou ouvindo a seguinte pérola:

- “ah, eu devo ter guardado ela na lixeira, vou olhar se está lá”

Atônito, William ainda foi educado o suficiente para falar: “Não se preocupe, eu envio novamente a mensagem para você…”

Bons programadores são preguiçosos e burros

(6)

Category : WTF, dicas

Escrito em 2005 por Philipp Lenssen, um texto mostrava a importância de bons programadores terem condutas que muitos poderiam considerar ‘defeitos’. Dias atrás, tive o prazer de reencontrar esse mesmo texto, e percebi que muita coisa continua atual. O que se segue é uma tradução / adaptação do texto original, com alguns comentários pessoais sobre o assunto. Reflitam. WTF’s não vem apenas dos usuários, mas principalmente dos programadores…

Ao longo dos anos, percebi que, por mais paradoxal que isso possa parecer, bons programadores devem ser preguiçosos e burros.

Preguiçosos, porque apenas programadores preguiçosos irão pensar em escrever o tipo de código que no fim fará o trabalho por eles. Preguiçosos, porque apenas um programador preguiçoso evitará a todo custo escrever trechos repetitivos e monótonos de código – o que evita a redundância, principal inimigo da manutenção no código-fonte. Principalmente, as ferramentas e processos criados por esse comportamento de pura preguiça irão aumentar a velocidade de desenvolvimento.

Isso tudo faz com que o programador preguiçoso um bom programador. Claro, isso é apenas uma parte da verdade: para um programador preguiçoso ser um bom programador, ele (ou ela) também deve ser extremamente ‘não-preguiçoso’ quando se trata de aprender a como permanecer preguiçoso – ou seja, qual software faz sey trabalho mais simples, quais métodos evitam redundância, e como ele pode fazer com que a manutenção do seu código seja a mais simples possível.

Em segundo, (e vou elaborar um pouco mais a partir daqui, porque o conceito é bem menos claro que o primeiro) um bom programador deve ser burro. Por que? Oras, se ele for inteligente, e tiver a consciência de que ele é inteligente, o programador irá:

a) parar de aprender
b) parar de ser crítico com relação ao seu próprio trabalho

O primeiro ponto fará com que seja complicado para ele encontrar novas técnicas para que trabalhar mais rápido. Basicamente, o programador que para de aprender não busca novas soluções, não busca novas alternativas e permanece preso às ferramentas e métodos que ele já conhece. O segundo ponto fará com que ele perca muito tempo debugando o próprio código. Na interminável luta entre um programador e o compilador, é melhor que o programador desista logo e admita que a culpa é sempre dele, e não do compilador, e vá tentar entender o quê ele está fazendo de errado. (nota: OK, há casos em que a culpa É do compilador. Mas são tão raros que dificilmente você vai encontrar várias situações assim no seu dia-a-dia).

Mas há um ponto ainda mais importante sobre porque um programador deve ser burro. Para encontrar sempre a melhor solução para o problema, ele deve ser capaz de manter uma mentalidade fresca e aprender a “pensar fora da caixa”. Tem em mente que o problema nem sempre é o que parece, e a melhor solução nem sempre é o que você imagina, e saber pensar em soluções alternativas e fora do comum.

O contrário disso não seria muito construtivo: conhecer todos os parâmetros e funções, e aceitá-los. Quem garante que os limites que você conhece são reais? Quanto menos você souber, mais radicais serão suas soluções: assim, melhores serão as ferramentes que você criará, e melhores serão os produtos que você desenvolverá com essas ferramentas.

Um bom programador sempre se perguntará “Por que?”, porque ele é burro (ou suspeita de um problema maior).

Um bom programador, quando confrontado com um problema vindo dos usuários, vai adotar a mentalidade de ser burro: ele começará a fazer as perguntas mais simples e infantis possíveis. Isso é porque ele não aceita os parâmetros sugeridos pra ele do que alguém pensa que pode estar causando o problema. Por exemplo, veja uma conversa típica de desenvolvedores web frente a um problema:

“Desde ontem, nosso cliente não consegue ver o logo no site.”
“Ele reiniciou o navegador?”
“Sim.”
“Ele reiniciou o computador?”
“Sim.”
“Limpou o cache?”
“Sim.”
“Ele roda o Internet Explorer 6?”
“Sim.”
“Tem certeza de que ele não consegue ver o logo?”
“Sim.”
“Ele olhou para o site na tela?”
“Como assim?”
“Talvez ele tenha visto o site impresso em papel.”
“Não, ele estava olhando para a tela.”
“Ele não consegue ver outras imagens também, ou só o logo?”
“Como? Bom, vou perguntar pra ele.”

Para fins de argumentação, vamos dizer que o cliente na verdade tenha desligado a exibição de imagens no navegador. Ou o seu filho desligou. Ou um funcionário desligou. Em qualquer caso, a resposta não poderia ser encontrada da “maneira inteligente“. Nenhuma das questões levantadas pelo programador exigiam algum talento em programação. Nenhuma. Mas simplesmente pelo motivo ser tão estúpido, somente a estupidez pode lidar com isso.

Muitas vezes, a suposição de que alguma ação do programador gerou um problema não passa de uma suposição. Sempre que possível, ouça apenas os fatos antes de começar a debugar, e ignore o que as pessoas pensam que seja a razão do problema.

E isso se aplica a VOCÊ. Recentemente, tive um problema aparentemente simples: migrar um sistema de um domínio X para o subdomínio de um domínio Y. Coisa aparentemente simples, se o domínio Y não redirecionasse automaticamente para o domínio Z no Ning, e o subdomínio não estivesse fazendo a mesma coisa. Depois de várias horas batendo cabeça com o DNS e o CPanel, decidi deixar pra lá e fazer algumas atualizações no sistema em questão. Nos primeiros minutos, descubro que o redirecionamento era feito pelo sistema, em um trecho de código que eu havia colocado por questões de segurança. Removido o trecho, tudo funcionou como deveria desde o princípio. Por descuido, cansaço e vários outros motivos, havia perdido tempo e cabelo com um problema que não existia, na verdade….

Pode parecer complicado, ou até mesmo burocrático, mas esse é um processo investigativo simples: quanto mais informações reais você possui, mais fácil é o processo de chegar ao que realmente está causando o problema. Aceitar que o usuário diga apenas “Há um problema no site, e acho que pode ter sido causado pela sua última atualização” só fará com que você perca horas, talvez dias, até perceber que na verdade o problema era mais simples do que parecia.

(Nota: sim, meus caros usuários, nós não tratamos vocês como idiotas ou ignoramos completamente o que você fala do problema por acharmos que somos melhores do que vocês. Nós fazemos perguntas E chegamos à conclusões baseado no que você nos diz que está acontecendo, não no que você acha que pode ser o problema. Na verdade, muitas vezes o que você acha só nos atrapalha. Bons programadores vão ignorar suas sugestões, pelo menos em um primeiro momento…)

Pensem nisso. Sejam burros e preguiçosos. E sejam bons programadores.

Conheça um novo serviço de virtualizações de aplicativos em rede!

(0)

Category : Sistemas, publieditorial

Sua empresa trabalha com virtualizações de aplicativos em rede? Conhece todas as soluções disponíveis no mercado? O software CockpIT da JETRO Platforms é sugerido para empresas que pretendem virtualizar ou centralizar suas aplicações com baixo custo e alta performance. Na verdade o CockpIT excede as funções do Terminal Server onde, utilizando o protocolo RDP  (remote desktop protocol) , aumenta performance, desempenho e gerenciabilidade do Terminal Server. Além disso, a JETRO disponibiliza uma suite de upgrade competitivo para clientes que já utilizem outras soluções que leiam o protocolo ICA. Com isso, você não perde os investimentos já feitos em outras soluções.

Todos sabemos que hoje as empresas estão buscando :

  1. Redução do Custo total de propriedade de Hardware;
  2. Redução de custos de Licenciamento de Software;
  3. Maior gerenciabilidade e segurança na definição dos perfis de usuários
  4. Alternativas para aumentar o ciclo de vida dos PCs ou utilização de Thin Clients
  5. Redução de custos e imediata disponibilização de novas filiais remotas

Entre os principais clientes que utilizam a solução JETRO-COCKPIT, podemos citar a MICROSIGA/TOTVS, que  passou a utilizar o software Cockpit para prover serviços através do conceito ASPApplication Service Provider (modelo flutuante – onde mensalmente é reportado o número de usuários que utilizam a solução).

Você utiliza soluções de virtualização em sua rede ou empresa? Quer conhecer uma solução com melhor custo/benefício? Responda ao nosso formulário para que a JETRO entre  em contato e possa lhe oferecer a melhor solução para sua empresa!

Responda ao formulário da JETRO para conhecer novas opções de virtualização para sua empresa

artigo-patrocinado

Telas WTF – Erros Infernais, problemas com tóxicos, e muito mais

(1)

Category : WTF, screenshots

Rafael descobriu como o MegaUpload consegue manter toda aquela estrutura

Diassunção precisa urgentemente fechar alguns programas no seu equipamento com 4GB de RAM. Recomendo remover o Vista. :P

ninguem-precisa-mais-que-640k

Rafael Arcanjo, protetor dos sistemas de ERP, excomungou um módulo por essa heresia:

erro 666 protheus

Já eu pessoalmente acho que tem algo muito errado com esse tipo de anúncio no GMail…

errado

Instalar programas aumenta o peso dos HDs?

(3)

Category : Suporte, WTF

É a pergunta feita nesse post do Microsoft Answers: o usuário comenta que, sempre que ele instala programas ou copia arquivos para o notebook, o peso do mesmo aumenta. E que, estranhamente, acontece a mesma coisa com o XBox.

O que nos leva a perguntar: Já imaginaram o peso de um HD com 1TB lotado? Ou…. já imaginaram o peso dos servidores do Google? Provavelmente, os objetos próximos são atraídos para os HDs dessas máquinas, e algumas pessoas até orbitam em volta dela!

E, se só a pergunta já não é um WTF suficiente, basta ver o nível dos comentários logo abaixo…..

Telas WTF – Navegadores, Navegadores, e sérios problemas de revisão gramatical

(2)

Category : WTF, screenshots

Willian de Oliveira descobriu que o developer de um certo plano de saúde considera o IE6 superior a tudo. Tudo mesmo:

spma0516

spma0517

E o que fazer quando nem o google considera o próprio navegador compatível com seus serviços? (dica de Leonardo Rodrigues)

wtf

Para a CTBC, o Brasil é um país único, sem divisões de cor, raça, credo e… estado! (Dica de Rafael)

ctbcwtfE o Windows, que bombou em português? (Dica de Newton)

imagemnvv

E o mesmo, infelizmente, vale para a equipe do Google….

font-size_pt

Uma coleção de telas esse mês!

(2)

Category : WTF, screenshots

Diassunção descobriu um curso relâmpago. Pelo jeito, vale muito a pena fazer. Menos de UM minuto para graduação! \o/

curso_relampago

Irio Musskopf descobriu um problema sério: sua senha hiper-segura não é aceita em certos sites. Somente números e letras, meu caro!

screenshot-2207

Já Irio descobriu que é o Windows Live permite a entrada de pessoas com mais de 100 anos. Se você é um elfo, ou Matusalém, se deu MUITO bem!

edit_profile_-_windows_live_-_iceweasel648

No UOL, enquanto o Speedy estava dando pau, era possível acessar a internet pela linha DISCADA! Faz sentido, na prática a velocidade é a mesa….

uolfail

No PayPal, o tempo que falta para ser redirecionado vem em hexadecimal

paypalPromoção total no submarino: Compre à vista e ganha um desconto de 5%!

submarinofail

E, um pedido aos desenvolvedores: Sério, colocar um calendário drop-down em certos campos não faz O MENOR sentido. Veja bem, qual a lógica de um calendário em um campo data de nascimento? Até chegar no meu aniversário, seriam necessários pelo menos…. 345 cliques! Usabilidade #FAIL!

calendariofail