rbraga

Latest Entries

jQuery Basic Calendar

Mesmo sendo na maioria esmagadora das vezes uma atitude errada, equivocada ou simplesmente inútil; é comum que desenvolvedores de software volta e meia esbarrem num dilema interessante:

infelizmente não existe uma solução ideal para o meu problema, terei eu mesmo que programar isso!

E assim vamos criando bibliotecas, aplicativos e toda sorte de software possível que na prática não serve para nada :)

E eu mesmo fui acometido por esse mal esses dias!

Calendários

O uso de calendários é comum em sistemas comerciais, e nesse caso não foi diferente, porém era preciso exibir o calendário sem qualquer recurso, nada de marcação nas datas com eventos, exibição simplificada/detalhada, exibição do dia, semana ou mês, enfim; era preciso exibir apenas  um widget com o calendário!

Nenhum calendário serve

Ao buscar por uma alternativa (especialmente Plugins para jQuery)  encontrei vários bem interessantes como o iCal Calendar; porém todas as opções com muito mais recursos do que eu realmente precisava, e com um “problema” sério para profissionais como eu sem qualquer habilidade com UI, a dificuldade em adaptar o visual do Plugin em concordância com o visual da aplicação.

jQuery Basic Cal e motivações

Dada a realidade, não me restou outra alternativa, tive eu mesmo que programar o calendário perfeito para aquela situação (talvez só aquela) :)

Porém a ideia/motivação é aproveitar a necessidade e estudar um pouco mais sobre jQuery, resolvi criar um plugin; tarefa bastante simplificada graças ao jQuery Boilerplate.

Se você puder dar uma olhada no GitHub e opinar será interessante!

E você pode vê-lo em ação aqui.

Social Coding

Participar de comunidades e encontros onde se aprende a trocar e aperfeiçoar códigos é uma espécie de certificação social, tão importante quanto muitas formais.

O desenvolvedor certificado em Social Coding

Evernote

Anotações perdidas e bagunçadas são problemas comuns (ao menos ao que parece) para muita gente, e pensando nisso muitas pessoas/empresas tentam criar técnicas, aplicativos ou o que mais for preciso para contornar esse problema; ou pelo menos amenizar o drama da desorganização.

No meu caso específico não foi diferente, os meios eletrônicos são menos complicados por conta dos mecanismos de busca (em pastas, emails, arquivos e etc.); porém depois de algum tempo o caos pode ser tamanho que ainda assim parece ser impossível se localizar.

Tentei alguns aplicativos sem sucesso e vinha usando (superficialmente) o ToDo do próprio GMail, mas como um quebra-galho e para anotações/tarefas aleatórias; naturalmente não me atendeu.

o problema

Eu tenho poucos documentos, ou elementos realmente importantes e críticos e que precisam estar sempre à mão; a minha maior necessidades são mesmos os pequenos lembretes, anotações cotidianas e coisas do gênero.

No meu dia-a-dia eu faço pequenas viagens no trajeto casa-trabalho-trabalho-casa; e eu acabo aproveitando esse tempo para ler blogs, livros, ouvir alguns podcasts, e isso naturalmente faz a cabeça fervilhar de ideias; e é justamente aí que a minha necessidade de ter uma forma prática de realizar minhas anotações era mais aguda, e até esses dias eu não via uma alternativa no horizonte; até esses dias.

a solução

Um aplicativo móvel fantástico, o Evernote; que apesar de bastante conhecido eu ainda não havia testado por achar que a versão web/desktop cairia no mesmo problema das minhas tentativas anteriores com outros aplicativos.

Ao começar a utilizar a versão móvel, naturalmente fui “obrigado” a experimentar a versão web e desktop; e de fato, é muito útil e fui positivamente surpreendido.

A integração com o sistema operacional (no meu caso Windows; mas existem versões para Mac OS e GNU/Linux) é muito útil e acaba facilitando a sua utilização; fora o fato de que o Evernote é “esperto”, detecta links, documentos e afins, e permite a organização de tudo isso com uma simplicidade e eficiência fantástica.

A versão móvel (Android) segue a mesma linha e é muito intuitiva, e permite uma utilização natural.

Hoje o Evernote é praticamente parte do meu dia-a-dia, me ajudando em assuntos pessoais e profissionais; e mesmo sendo para uma finalidade simples, acaba se mostrando e extremamente útil e prático.

custos

Existem duas versões, uma gratuita e outra paga; em caso de “usuários iniciantes” como eu; a versão gratuita é bastante completa e fatalmente será suficiente. Caso você precise movimentar um volume maior de dados, buscas em arquivos e bla bla bla; a versão paga será preciso, mas o custo x benefício é assombroso, os detalhes podem ser vistos aqui.

Blackbird JS

Depurar é caro e desgastante, isso é fato; atualmente muito do esforço desprendido para subir toda a pilha necessária para depurar situações específicas foi substituído por TDD, BDD e afins, o que reflete também em um produto muito mais bem acabado e com um design arrojado.

Mas tudo isso é assunto para outro dia.

Durante anos Javascript foi para mim uma pedra no sapato; trechos de códigos inelegíveis e sem qualquer tipo de iniciativa buscando melhorias advindo do uso de padrões, frameworks ou qualquer outra coisa eram comuns; some a isso a incompatibilidade entre os navegadores e tínhamos (e ainda temos) o caos instaurado.

Depurar javascript pode ser uma tarefa ainda mais delicada e chata; mas algumas inciativas como jQuery tornaram as coisas bem mais divertidas e o movimento em direção à uma web padronizada tem permitido que vivamos em um mundo melhor.

Usar TDD com javascript é uma alternativa real, porém mais um assunto para outro dia :)

Pensando ainda apenas na depuração em si, uma ferramenta bastante útil e muito interessa é o Blackbird JS

Blackbird

O Blackbird permite acompanharmos através de um painel uma série de mensagens em relação à execução da aplicação, o seu uso é muito simples e prático, o exemplo é auto-explicativo e outras informações estão no site do projeto.

log.debug('this is a debug message');
log.info('this is an info message');
log.warn('this is a warning message');
log.error('this is an error message');

É mais um dos casos onde uma ferramenta simples, pode acabar agregando bastante!

Knockout

Recentemente ouvindo o podcast HanselMinutes conheci o Knockout, um framework (javascript) para aplicarmos MVVM.

A arquitetura proposta pelo MVVM é interessante independente do framework ou até mesmo da plataforma alvo; fiz alguns pequenos testes com o Knockout e é notório a melhoria tanto por conta da diminuição de linhas de código quanto pela expressividade/legibilidade que ganhamos.

Abaixo um exemplo simples, retirado do próprio site do Knockout, e que pode ser visto em execução neste link.

VIEW

<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>

VIEW MODEL

// Here's my data model
var viewModel = {
firstName : ko.observable("Planet"),
lastName : ko.observable("Earth")
};
viewModel.fullName = ko.dependentObservable(function () {
// Knockout tracks dependencies automatically. It knows that fullName depends on firstName and lastName, because these get called when evaluating fullName.
return viewModel.firstName() + " " + viewModel.lastName();
});
ko.applyBindings(viewModel); // This makes Knockout get to work

E se levarmos em consideração o uso paralelo com jQuery e jQuery Templates as possibilidades são amplamente potencializadas.



Copyright © 2004–2009. All rights reserved.

RSS Feed. This blog is proudly powered by Wordpress and uses Modern Clix, a theme by Rodrigo Galindez.