HTML5 – Exemplos do Gan

1
2
3
4
5
#PHP VS  JAVA
//JAVA VS PYTHON
/*C++ VS JAVA*/
'JAVA VS .NET
out.println("EU NAO SEI PROGRAMAR NADA!");

Ola,
hoje vou dividir com vocês alguns exemplos bem maneiros de html 5. E principalmente sobre o Image Preview (mas este não é o único, fuce no zip e verá coisas beeeem legais, algumas bem simples de serem aplicadas e que já funcionam na maioria dos navegadores).

Image Preview


Ontem um colega da Maíra me pediu ajuda com javascript, ele tinha um site onde o usuário subia uma imagem mas via ela antes de enviar ao servidor. Ele fazia isto na época usando o IE6 que por sua vez fazia uso de um componente ActiveX pra realizar a façanha. Neste ponto terei que fazer uma parada para dar algumas explicações.

HTML5


A W3C que realiza os padrões, fez o HTML4 na virada do século e logo em seguida apostou suas fichas no XHTML que saiu por volta de 2000. Porém de lá pra cá os sites tiveram uma cara mais de aplicativos e os navegadores começaram a ter cara de sistema operacional. O GMail foi o principal responsável ao fazer um cliente de email que não deve em nada (se é que não supera) os clientes que ficavam fora dos navegadores. E como era complicado migrar um site HTML para XHTML (e na prática não levava nenhuma mudança visual pro usuário) o XHTML foi um fiasco. Acho que hoje menos de 1% do site são em XHTML o que levou a W3C (até que tardiamente) a desistir do padrão XHTML 2.0 para voltar ao HTML (que eles queriam matar) e fazer o padrão HTML5.

O HTML5 adiciona a possibilidade do renderizador HTML, diversas características que estavam vindo sendo resolvidas (quase que na forma de gambiarra) pelo flash, silverlight, javafx, java applet e afins. Por exemplo execução de sons, vídeos, manipulação de arquivos, comunicação e afins. Na realidade cada navegador já vinha tentando resolver de sua forma, porém o html5 cria uma linha, um meio de padronizar. Agora o programador não precisará mais fazer algo que funciona de um jeito no IE, outro no firefox e não funciona nos demais. Mas claro, pra isto os navegadores tem que implementar o padrão html5, alguns como o IE infelizmente não implementa 100% nem o html4.

OK, mas com o HTML5 funcionando o flash morre? Duvido, o html5 vai implementar apenas as coisas mais comuns, as necessidades mais comuns. Ainda vai ficar a cargo de plugins as façanhas mais baixo nível. O que vai acabar de vez é aquele flash morto que não tem aspecto a não ser rodar um vídeo ou som, ou então aqule menu animado em flash. Isto esta com os dias contados, aplicações mais robustas podem ainda usar o plugin que lhe te der o que o html5 e javascript não resolver.

Bom, agora voltando ao tema. O código do Marcelo fazia o que o HTML5 faz, porém a maneira microsoft. O firefox tinha sua maneira também mas só funcionaria em firefox. O código que vou apresentar a vocês utiliza o padrão html5 e, apesar de só funcioanr hoje em firefox, vai passar a funcionar em todos os navegadors que tiverem suporte a html5.

Eis o código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<HTML>
<BODY>
<H1>File API</H1>
<INPUT type="file" id="fileImg"/><BR/>
<INPUT type="button" value="Calcular Tamanho" onClick="preSizeCalc()"/><BR/>
<P>Preview:</P>
<img id="imgPreview"/>
</div>
<LABEL id="output"/><BR/>
<SCRIPT>
var reader = new FileReader();
 
reader.onload = onLoadFile;
 
 
function onLoadFile(e)
{
	var img = document.getElementById("imgPreview");  
	img.src = e.target.result;
        img.onload = onLoadImage;
}
 
function onLoadImage(e)
{
	var img = document.getElementById("imgPreview");  
       	var strOut =  "As dimensões da imagem são " +  img.clientWidth + "x" + img.clientHeight + "<BR/>" ;
        log(strOut);
 
}
 
 
function preSizeCalc()
{
	var img = document.getElementById("imgPreview");
	var file = document.getElementById("fileImg");  
	if(reader)
	{
		reader.readAsDataURL(file.files[0]);
	}
	else
	{
		log("Seu navegador não tem suporte a HTML5, troque por um mais recente");
	}
}
 
function log(value)
{
  var output = document.getElementById("output");
  output.innerHTML = value;
}
</SCRIPT>
</BODY>
</HTML>

Exemplos de HTML5

File API – Image Preview
Canvas API
Atributos Customisáveis
Sistema Color hsla (no html4 era apenas o padrão rgb)
Alpha por cor e não apenas por componente
CSS Linhas Ímpares – Novas Formas de seleção
Nova TAG DL
Drag and Drop
Tag tipo Figure
Novas Fontes (tipos para letras)- Fontes Remotas
Geoposition
Mode Offline
Tags novas
Storage
Texto Editável
Outline Text
Reflect Text
Resize Text
Sombra em texto
Work (Threads)
Controles Com Cantos arredondados

Downloads:

HTML 5 Exemplos

Pirão!

Mais uma receitinha, essa facinha para aproveitar o friozinho de agosto…

Essa veio da avó do Edson, que tem origem indígena.

Ingredientes

  • Frango em pedaços – as partes do frango que você preferir. O tradicional, vai de tudo. Em casa, usamos peito, coxa e sobrecoxa.
  • Óleo para refogar
  • Cebola, alho, salsa e cebolinha
  • Calgo de galinha – 2 cubos (aí não precisa acrescentar sal) ou um pouco de caldo caseiro + sal a gosto
  • Pimenta a gosto
  • Farinha de milho amarela em flocos

Preparo

Em uma panela de pressão, aqueça o óleo e jogue os pedaços de frango. Dê uma refogada para “selar” a carne.

Depois, acrescente os temperos: cebola picada, alho amassado, salsa e cebolinha picadas e pimenta, se for do seu gosto. Refogue e acrescente o caldo de galinha.

Coloque água até cerca de 75% da altura da panela de pressão e tampe.

Quando ferver, baixe o fogo e conte de 30 a 45 minutos de cozimento. Esse tempo pode variar com o fogão, é claro. O importante é cozinhar bem o frango – com esse tempo, a água deve estar pela metade da panela.

Para servir

O preparo termina mesmo no prato.

Coloque a farinha no prato e jogue o caldo fervente por cima, mexendo para virar um pirão de fato – nem líquido, nem farofento. Acrescente o quanto quiser de frango.

Pronto.

Se o pirão “secar” enquanto come, é só acrescentar mais caldo. O importante é misturar o caldo sempre bem quente.

Recado do Edson: “Ideal pra comer no frio do inverno. Comida pesada, jamais coma e vá dormir em seguida ^^”

Pão da Celminha

Celminha é minha madrasta e ela faz um pão caseiro delícia. Depois de perder receitas preciosas das minhas avós porque o que elas faziam de fato era bem diferente do que estava no caderno, decidi fazer diferente com a Celminha. “Colei” nela enquanto fazia o pão e fui anotando tudo.

A receita está num papelzinho que tem sobrevivido a várias mudanças de casa há anos. Como decidi, finalmente, passar para o PC, aproveito para compartilhar. :)

Essa massa também serve para fazer pizza.

Pão Caseiro

(Não reparem na foto, que foi tirada de última hora. Faltou limpar a farinha, e tirar uma foto com o pão cortadinho e tal. Depois eu troco ^^)

Ingredientes:

  • Mais de 1kg de farinha de trigo (1kg vai no início da receita. O restante vai para acertar a massa, untar a mesa, assadeiras etc.)
  • 2 ovos
  • 4 colheres (de sopa) cheias de açúcar
  • 1/2 colher (de sopa) de sal
  • 1/2 xícara de óleo
  • 650 ml de leite integral
  • 3 tabletes de fermento biológico seco

Utensílios:

  • Bacia de média a grande
  • Colher de pau
  • Peneira
  • Assadeira
  • Leiteira
  • Colher e xícara para medidas

Preparo:

Peneire 1kg de farinha na bacia. Faça um “buraco” no meio do montinho de farinha, para jogar ali os ovos, o açúcar, o sal e o óleo. Dê uma misturada só ali no meio.

Coloque o leite para aquecer. Ele tem que ficar morno – quente o suficiente para você ainda conseguir colocar o dedo sem se queimar. Dissolva delicadamente o fermento nesse leite, para “acordar” os funguinhos. Jogue a mistura na bacia.

Agora é mexer e mexer com uma colher de pau. Misture bem. Quando ficar mais firme, é hora de peneirar mais um pouco de farinha na bacia e colocar a mão na massa. Mexa bastante a massa, dobrando a bola e usando a mão fechada para amassar. Depois, sove bastante. Se a massa estiver grudando muito na mão, coloque mais farinha. Mas não exagere, senão o pão fica muito “massudo” depois.

Tire uma bolinha da massa e coloque em um copo com água.

Cubra a bacia com um pano de prato e coloque no sol. Se não tiver sol, você pode também colocar a massa em um forno pré-aquecido – desligado.

Quando a bolinha subir no copo de água, é porque o fermento já trabalhou na massa. Enquanto isso, jogue farinha peneirada em uma mesa ou em qualquer área lisa, onde você vai enrolar a massa.

Com essa quantidade de massa, você vai enrolar 5 pães grandes ou em mais, menores. Corte cada pedaço pensando nisso e enrole.

Para enrolar, primeiro faça uma “tira” com o pedaço que cortou. Sove um pouco a tira para achatá-la. Depois, enrole a partir de uma das pontas. Mas não faça um rolinho de uma vez. Dobre um pouco a pontinha da massa e vá enrolando e desenrolando de volta, apertando um pouco com a mão.

Deixe as massas, enroladas,cobertas com pano de prato, descansarem um pouco. Enquanto isso, arrume a bagunça feita até agora, jogue um pouco de farinha peneirada em uma assadeira e ligue o forno – fogo entre médio e alto.

Deixe um espaço entre um pão e outro na assadeira, mas tente assar o máximo que puder de pães juntos, senão os últimos vão descansar demais e ficam com um aspecto “murchinho” depois de pronto.

O tempo vai variar com seu forno, então o melhor é acompanhar bem o primeiro para marcar o tempo. Ele está assado quando tiver com uma cor que for do seu agrado. Mais clarinho ou mais escurinho.

Agora, é só separar uma bela manteiga e um bom café para acompanhar. :P

Div,Section,Article, Header e Footer – Papo Sem Pé Nem Cabeça

O HTML5 veio mesmo pra mudar e uma das principais mudanças é que ele torna o código mais semântico, ou seja, torna o código mais “elegante” e melhor para ser visualizado quando quem lê não é um navegador. E isto tanto pode ser um desenvolvedor, um robô como uma pessoa com acessibilidade reduzida.

Antes para dividir um layout a gente usava, e muito, de div(s). Agora a coisa mudou, veja abaixo como ficou:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<HTML>
  <HEAD>
  </HEAD>
   <BODY>
      <DIV id="div1">
            <SECTION>
               <HEADER>
               <H1>Cabeça, corpo e pés</H1>
               </HEADER>
               <ARTICLE>
                   <H2>A Cabeça</H2>
                   <P>A cabeça é o membro .....</P>
               </ARTICLE>
               <ARTICLE>
                   <H2>O Corpo</H2>
                   <P>O corpo é a parte que....</P>
               </ARTICLE>
               <ARTICLE>
                   <H2>Os Pés</H2>
                   <P>Os pés tem importância fundamental ....</P>
               </ARTICLE>
               <FOOTER><P>Deixe um comentário <a href="...">aqui</a>.</FOOTER>
            </SECTION>
            <SECTION>
               <HEADER>
               <H1>Minha visita a Europa</H1>
               </HEADER>
               <ARTICLE>
                   <H2>Roma</H2>
                   <P>Meu primeiro ponto de parada foi em Roma ....</P>
                   <H2>Despedida</H2>
                   <P>O que me marcou foi ....</P>
               </ARTICLE>
               <ARTICLE>
                   <H2>Suiça</H2>
                   <P>De todos os....</P>
               </ARTICLE>
               <ARTICLE>
                   <H2>Itália</H2>
                   <P>Meus ancestrais estavam ....</P>
                   <H2>Pizza</H2>
                   <P>Não, não vou....</P>
               </ARTICLE>
               <FOOTER><P>Deixe um comentário <a href="...">aqui</a>.</FOOTER>
            </SECTION>
      </DIV>
   </BODY>
<HTML>

Antes era:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<HTML>
  <HEAD>
  </HEAD>
   <BODY>
      <DIV id="div1">
            <div class="section">
                <div class="header">
                  <H1>Cabeça, corpo e pés</H1>
                </div>
               <div class="article">
                   <H2>A Cabeça</H2>
                   <P>A cabeça é o membro .....</P>
                </div>
               <div class="article">
                   <H2>O Corpo</H2>
                   <P>O corpo é a parte que....</P>
                </div>
               <div class="article">
                   <H2>Os Pés</H2>
                   <P>Os pés tem importância fundamental ....</P>
                </div>
               <div class="footer"><P>Deixe um comentário <a href="...">aqui</a>.</div>
            </div>
            <div class="section">
               <div class="header">
               <H1>Minha visita a Europa</H1>
               </div>
               <div class="article">
                   <H2>Roma</H2>
                   <P>Meu primeiro ponto de parada foi em Roma ....</P>
                   <H2>Despedida</H2>
                   <P>O que me marcou foi ....</P>
                </div>
               <div class="article">
                   <H2>Suiça</H2>
                   <P>De todos os....</P>
                </div>
               <div class="article">
                   <H2>Itália</H2>
                   <P>Meus ancestrais estavam ....</P>
                   <H2>Pizza</H2>
                   <P>Não, não vou....</P>
                </div>
               <div class="footer"><P>Deixe um comentário <a href="...">aqui</a>.</div>
                </div>
      </DIV>
   </BODY>
<HTML>

Repare que antes o div não significava muita coisa, por isto agora o HTML está mais semântico.

Como podem ver no exemplo acima, além do div existem agora outras tags de divisão quando se trata de conteúdo. Div é mais genérico, serve pra qualquer coisa. Estes, Section, Article, Header e Footer são específicos para conteúdo. Podem ser utilizados desde um template de um blog até um widget.

Espero que tenha ajudado a entender, e que gostem ^^

Até a próxima!

Preço de X-box à Teoria dos Jogos

Estávamos numa lista de e-mails discutindo sobre como a lei “Jogo Justo” poderia ou não interferir no preço final dos jogos de forma impactante.

Alguns defendiam que a nova lei, reduzindo o imposto, tornaria o jogo mais barato. O governo diminui 100 reais em impostos e o jogo de 150 reais cairia pra 50 reais.

Eu defendi que a nova lei não reduziria em nada, ou de forma insignificante o preço, pois eu já tive uma loja de CDs e tive a oportunidade de estudar algumas reações na prática.

Isto foi na semana passada.

Esta semana aqui na USP veio o nobel John Nash fazer uma palestra de economia. Se você ainda não sabe quem ele é, é porque não viu o filme Uma Mente Brilhante que conta sua história.

Ele foi responsável pelo equilíbrio de Nash que deu grande força para a Teoria dos Jogos que serve pra você interpretar reações dos oponentes de forma abstrata, “de longe”, de forma racional.

Quando a gente fala de preços a gente não deixa de estar falando disto, de um jogo, com três participantes. De um lado está o governo, que se reduzir o imposto arrecada menos por produto mas corre o risco de arrecadar mais caso o produto venda em maior quantidade. Porém pra vender em maior quantidade tem que confiar no fabricante e lojista que ao conseguir um produto mais em conta não queira subir o lucro por unidade. E por fim as empresas dependem do cliente, que caso elas mantenham o valor de compra o cliente não deixe de comprar o que ele já compra hoje.

Eu poderia racionalizar então isto numa matriz, colocando o ganho e prejuízo de cada escolha e tentar achar qual a possibilidade mais coerente. Sem preconceitos ou moralismo. Para isto eu precisaria de dados exatos que fogem ao meu alcance, mas daí da pra notar que aquele “feeling” pode ser numerado caso fosse necessário.

Muitos “feelings” nada mais são do que dados não padronizados de forma que seja racionalizado. Se conseguir extrair os dados corretos, aquela impressão de um profissional da área ou de alguém que já viveu um fato poderia ser explicada de maneira matemática. E o contrário? Daria pra simular um sentimento a partir de uma matriz alimentados por dados? Acredito que sim, mas uma coisa não necessariamente implica na outra mas é interessante questionar.

Voltando ao preço, quais são os ganhos que uma empresa teria pra explicar a lógica de manter o preço alto mesmo quando seus “adversários abaixem as tarifas”?

Se a empresa colocar o preço baixo, e manter o lucro ela ganha na quantidade vendida. Porém o mercado de games no BR é pequeno e provavelmente as vendas a mais não seria significativa.

Se a empresa colocar o preço alto e aumentar o lucro, se ela já se mantinha com pouco lucro agora ela passará a ter bem mais poder. Por outro lado os consumidores podem se revoltar, perder vendas e até o governo tomar uma atitude para reverter a situação da nova lei.

Outra possibilidade é a empresa pegar um valor, o mais alto possível mas que gere a sensação que a lei surtiu efeito. O cliente não fica plenamente satisfeito mas não deixará de comprar, o que torna o lucro arrecadado maior que antes. O mercado aumenta aos poucos com a indústria ganhando mais lucro do que se tivesse mantido o lucro inicial. E o governo não vai interferir se a lei surtiu algum efeito.

Colocando desta forma é fácil imaginar que na realidade haverá uma queda (eu imaginava nenhuma), não tão significativa quanto se enganam os consumidores. Nem o mercado de games vai crescer tanto. O lobby pela nova lei vai fornecer lucro maior para as empresas que talvez a longo prazo voltem aos preços antigos usando como desculpas a pirataria e outros fatores. Obviamente esta conclusão tenho com os dados que possuo, mais dados poderiam mostrar um resultado diferente mas o importante é não “torcer” os dados, pois a maior vantagem da teoria é tentar “prever para se fortalecer” e só é possível com dados “sinceros”.

Uma coisa que acontece muito, principalmente na industria, atacado e varejo é que não é importante a quantidade de produtos vendidos e sim o lucro obtido com um produto. Se o produto vender 3.000 unidades a 100 reais de lucro (total de 300.000,00), não adianta abaixar o preço pra 50 reais se só vai vender 1.500 unidades a mais (4.500 unidades) e gerar um lucro de 225.000 que a empresa vai ter um lucro de 75.000 a menos do que se ela vendesse com 100 reais de lucro. Resumindo, o preço não é influenciado apenas pelo imposto, mas também pela oferta e procura, além de outras nuances como a pressão social, pressão do governo. Se o mercado de jogos não melhorar aqui, dificilmente as empresas se sentirão intimidadas a abaixar o preço. E o mercado aqui é pequeno pois até mesmo quem pode comprar um jogo prefere adquirir ele via torrent e ai corre reclamar dos impostos. Longe de mim dar uma de hipócrita mas incentivar os jogos e produtos bons, prestigiando na forma de compra de seus produtos é uma maneira de fazer o mercado crescer e ai até fazer sentido uma lei como a que está em pauta.

Para saber mais:

Paragraphless : Tabelas por Parágrafos? Nãão!

Ok meu site tem muitas tabelas e quero fazer um layout mais moderno, dentro “dos padrões”.

Aqueles itens que ficavam dentro de uma tabelas? Fácil, troco por um parágrafo.

Não, não faça isto. Ao fazer isto você estará removendo um monte de código inútil e sem sentido TABLE, THEAD, TR, TD, TH pra colocar um P, mas este P também não faz sentido. Seu código ficou mais limpo, mas estas duas imagens lado a lado NÃO são um parágrafo. Não faz sentido ter um parágrafo ai.

Use o que for necessário, um div provavelmente. E no css desse div coloque simplesmente display:inline-block . Isto dirá ao navegador que ao renderizar a página, não deve ser dado uma quebra de linha no final.

Simples?

Também achei, mas foi difícil de descobrir, dica do site mighelalho

JSF – 8 motivos para não usar

Antes de mais nada é importante frisar que esta é uma crítica às principais implementações que tem um ou mais dos defeitos ditos abaixo.

Recentemente eu dei uma passada por vários frameworks MVC e percebi que o JSF (com as implementações mais comuns) deixava muito a desejar. Eu por muito tempo usei um framework MVC que eu mesmo tinha construído (baseado em outro usado num dos meus empregos), na época era o ideal para mim mas eu queria ser convencido de que os frameworks atuais tinham alguma vantagem que me fizesse ou criar coisas novas ou usar algum arcabouço famoso. Assim comecei com o JSF, a nova camada oficial de View da SUN.

Porém confesso que depois de estudá-lo, e entrar em um projeto utilizando JSF eu fiquei bem desanimado, eu esperava muito mais. Talvez ele seja o ideal para quem não tem framework mas não recomendo migrações de sistemas, e mesmo sistemas novos apenas deveriam usar o JSF se por algum motivo ele se mostrar mais produtivo e seus defeitos não atrapalharem tanto.

O JSF inicialmente foi criado com a utopia de que você poderia utilizar o mesmo padrão para sites, desktop e muito mais. Hoje isto está longe de ser uma realidade, tanto que a SUN lançou recentemente uma nova forma de trabalhar com desktop e não é uma implementação de JSF para desktops, e sim algo novo chamado JavaFx. Em outro post falarei mais sobre o JavaFx (este sim tenho muitos elogios), mas para WEB, para HTML hoje é JSF. E o que tenho a falar sobre ele em suas implementações mais comuns?

Abaixo, 8 motivos para não usar o JSF:


  • Renderização de tabelas para gerar layout. O uso de componentes de paginação (scroller como por exemplo do tomahawk ) cria não divs mas tabelas, criando um incentivo pra maus hábitos. Como o JSF é responsável pela renderização ele poderia gerar divs, mas não o faz.

  • Renderização de elementos HTML não identificados. Alguns componentes do JSF ao serem renderizados geram subelementos (por exemplo um div dentro do outro) sem identificadores, dificultando a mudança visual usando CSS ou implementação de jscripts que precisem interagir com eles.

  • Geração de muito lixo no código, o código de javascript gerado por ele deveria ser gerado em arquivos .js para poupar as conexões, além de serem minimizados (comprimidos) mas ele não o faz. Dependendo do componente, para cada componente ele gera um script.

  • Não suporta multi-idiomas pra javascript. O sistema dele funciona corretamente para situações onde você usará apenas o JSF, mas no caso de uma mensagem recebida via javascript o usuário precisará implementar o funcionamento desejado.

  • O framework por padrão funciona com submit e não Ajax, devendo o programador utilizar componentes específicos para trabalhar com Ajax. Ao usar Ajax não é transparente a parte de javascript com Java como ocorre por exemplo no DWR. Para piorar não existe uma maneira fácil para usar Ajax-Reverse, muito menos utilizando Ajax Reverse com conexão (pushing) em vez de poolling.

  • A curva de aprendizado do JSF é alta, para criar uma simples navegação é necessário configurar muitas vezes vários xml. Um simples hello world pode levar mais de uma hora para ser feito.

  • Não existe um padrão para eventos, tem eventos em componentes que são tratados via Javascript e outros via Java via eventos. Quando o correto seria todos via javascript, ou então todos via java.

  • Ciclo de Vida frágil. Existe muita facilidade do desenvolvedor quebrar o comportamento correto da renderização da página por não entender o ciclo de vida. Dependendo como o desenvolvedor desenvolver sua página, mesmo setando um valor o valor não vai para a página e nenhum erro ou log inesperado é dado para auxiliá-lo, para não ocorrer isto o desenvolvedor precisa entender a teoria por trás do ciclo de vida. Uma vez compreendendo o ciclo de vida este problema desaparece a menos que caia nele de forma acidental.

5 motivos para usar o JSF


Porém existem casos onde o JSF é uma boa escolha, abaixo alguns motivos:


  • Você não utiliza nenhum framework.

  • Você quer estudar um framework bastante utilizado.

  • Você deseja criar seus próprios componentes em JSF (resolvendo assim parte dos problemas anteriormente citados).

  • Você trabalha numa empresa com muita troca de funcionário e conhecimento, e o entra e sai não permite dar tempo de ensinar um framework, ai você pode colocar que o requisito para trabalhar na sua empresa é conhecer o JSF.

  • Você precisa usar JSF (edital, requisito do cliente, etc).

Outros frameworks:


Apesar de eu gostar muito do framework que sempre usei, após o JSF fiquei curioso de conhecer outros e acabei topando com o Scooter Framework, gostei muito da maneira prática que ele resolve as coisas. Ele é inspirado na maneira prática de desenvolver do Ruby, porém mantendo o poder e elegância do Java. A comunidade dele é bem rápida em resolver problemas, mas estudando esse framework eu vi que não tinha nenhum mistério, a chave do poder dele estava nas ideias. Então acabei criando um framework que me atende melhor (talvez um dia eu disponibilize o fonte dele).

Mas a a lição principal a ser aprendida é:
Se algo fosse bom apenas porque muita gente vai atrás, vamos comer merda pois 1 bilhão de moscas não podem estar erradas.

O JSF é bom e poderoso, mas apenas pra quem se encaixa na lista dos 5 motivos acima. Tem muito framework que pode se encaixar melhor com o perfil de sua empresa, vale a pena pesquisar e no caso de encontrar, não ter medo de mudar.

Camisetas!

Estamos lançando as primeiras camisetas do Taulukko!

As ilustrações foram feitas pela queridíssima Rafaella Ryon. Quer conferir mais do talento da moça? Dá uma passada lá no site dela.

Para quem não conhece as referências, vamos lá.

A primeira é inspirada em uma personagem do jogo de MMORPG Lineage II, fazendo sua carinha irresistível de gato de botas.

A segunda é inspirada em nosso personagem favorito de Baldur’s Gate, o Minsc, acompanhado, é claro, de seu escudeiro mini-ramster-gigante, o Boo! Vai encarar?

Com a ajuda de um grande amigo, Long, que conhecemos em nosso antigo servidor de Lineage II, o AWBR, conseguimos produzir as camisetas com uma malha de ótima qualidade e impressão idem (policromia). Assim, pudemos aproveitar ao máximo as cores e o talento da Rafaella. Temos as duas estampas em camisetas brancas e pretas, em tamanhos P, M, G e GG.

Você já pode encomendar a sua camiseta! É só entrar em contato conosco pelo e-mail taulukko@taulukko.com.br e pedir a sua. Cada camiseta sai por R$ 30 + frete. Mande seu CEP pra gente calcular a entrega.

Também estamos combinando parcerias. Se você tem um servidor de Lineage II ou um fã-site de Baldur’s Gate e quer vender nossas camisetas para seus usuários, entre em contato, que temos uma comissão reservada para você!

Soulforge – Margaret Weis

Bom, se você não leu ainda a trilogia Dragon Lance Chronicles eu primeiro peço que, sem falta, você leia:

Ok, agora supondo que você já saiba ao menos quem é Raistlin Majere, eu irei falar de Soulforge.

Soulforge conta a infância de Raistlin Majere, até seu grande teste na Torre da Alta Magia. Pouco?
Além disso, esta história é essencial para entender e dar profundidade nos personagens da saga. Apenas com este livro é possível compreender algumas coisas que nas crônicas ficaram obscuras em relação a relacionamentos. Ah, mas se este livro vem antes da trilogia eu não deveria ler antes? NÃO! Ele foi feito para quem já leu a trilogia, vai por mim ^^

O único problema é que ele ainda não foi traduzido para o português (porra editoras porra!), mas para quem sabe inglês é um livro que não pode ser deixado para trás. E para deixá-los com inveja, eu tenho o livro versão capa-dura e, pasmem!, com o autógrafo da Margaret Weiss com o dizer “Mantenha a Magia” =)

A Viagem – Terry Brooks

Quando a minha esposa ainda trabalhava na revista ÉPOCA era comum ela e suas colegas receberem livros para fazer resenhas. Alguns ocorria isto mesmo, outros iam para um balaio onde os demais funcionários pegavam e levavam para suas casas. Numa destas a Má me trouxe um livro chamado A Viagem – Ilse, a Bruxa. E posso adiantar, para estragar a surpresa, que foi uma descoberta muito prazerosa.

O livro de Terry Brooks mistura numa única aventura, magos, guerreiros, piratas de um modo muito gostoso e com diversas surpresas sensacionais. A saga é contada em três livros, Ilse, a Bruxa, Antrax a Criatura e Morgawr o Bruxo.

Ilse, a Bruxa


Um corpo com um mapa é encontrado, ao que tudo indica ele leva para uma terra longínqua onde pode haver uma magia inigualável. O druída Walker lidera uma expedição para esta terra, liderando um navio voador e repleto de piratas acostumados com o mar e o ar.

Antrax a Criatura


A Bruxa Ilse persegue Walker, seu protegido Bek e toda sua tripulação no novo mundo. Ao mesmo tempo que surge Antrax, uma criatura antiga e de poderes desconhecidos.

Morgawr o Bruxo


No último livro a saga chega ao clímax quando terão que enfrentar não somente Antrax como o temível bruxo Morgawr, também é neste livro onde todos os mistérios serão por fim revelados.

Conclusão:

Se ainda não está convencido de que valha a pena eu vou realizar um comparativo, esta trilogia está ao mesmo nível da trilogia de Dragon Lance na minha lista de melhores sagas já escritas =)

←Velharia