Há anos precisávamos desenvolver as aplicações web e websites para funcionarem perfeitamente em dois tipos de navegadores: os que seguem o padrão e o IE. Mas por quê? Porque a maioria dos usuários usavam Windows com IE, fazendo com que desenvolvedores com conhecimento superficial somente desenvolvesse sites para IE5/6, e assim somente quem tinha IE visualizava e conseguia trabalhar corretamente criando um ciclo vicioso. Graças a Deus isto mudou...
Depois de anos fazendo um trabalho dobrado e testando sites e sistemas em diversos navegadores e criando scritps que verificavam que navegador o usuário estava usando e depois de campanhas exaustivas sobre padrão e etc e tal... hoje a maioria dos sites segue o padrão; acessibilidade e usabilidade enfim no Brasil são itens levados a sério. Ufa!
Não... ainda não 100%, mas já está bem melhor do que antes. E a Microsoft que havia achado que seu IE6 era o máximo, viu um declínio se iniciar e se consolidar gradualmente por causa da originalidade das outras equipes desenvolvedoras de navegadores de internet e das novas funcionalidades de seus produtos. As pessoas comuns começaram a migrar de navegador e o Firefox ganhou força. Opera e Safari deram um sinal de vida, a Google lança o Chrome para Windows, todos eles evoluem seguindo os padrões, são leves e funcionais.... e só aí a Microsoft lança o IE7 seguindo um pouco os padrões da W3C... mas foi meio bizarro. Lança o IE8... é verdade! Lançou o Internet Explorer 8. Nada de muito diferente e as pessoas queriam e querem coisas novas e boas. Aí de uma hora para outra veio a luz em alguém e esse cara falou: Vamos baixar a bola e fazer algo que funcione: "Fiat IE9".
A promessa de leveza e funcionalidade seguindo o que já é feito pelos outros navegadores é um tanto o quanto estranho. O HTML5 é a nova bandeira positiva, coisa que os FF4, Chrome e Opera já estão até mais avançados. Mas eu quis ver mais: instalar no XP do micro do meu trabalho. Não dá, funciona no Win7. Não sei se roda no Windows Vista (que é um lixo), mas eles vão conseguir das duas uma: Ou todo mundo magicamente migrará para o Windows 7, ou ninguém vai usar o IE9 e vai confortavelmente continuar instalando e usando o Firefox ou Chrome.
Qual será o grande diferencial do Internet Explorer 9 afinal? Qual a vantagem real? Por que usá-lo? Breve saberemos (ou não) estas respostas. A única certeza é que este projeto foi anunciado e tem sido trabalhado faz um bom tempo com dedicação e exposição na mídia. Seu lançamento oficial no próximo dia 10 será decisivo para a Microsoft e seu navegador. Precisa convencer nos primeiros dias para retomar a fatia do mercado perdido nos últimos anos. Se não agradar a curto prazo, vai chamar um padre para a extrema-unção, pois este enfermo estará atestado como em caso terminal. Se agradar, ainda tem que passar pelo critério de Sistema Operacional para poder dizer: respire que voltamos a competir!
Que aconteça o melhor para os usuários, desenvolvedores e para a web. Resumindo: Agora ou vai ou racha!
segunda-feira, janeiro 31, 2011
segunda-feira, junho 28, 2010
Spams que continuam...
Essa é velha e ainda chega pelo e-mail (ou seja, repassam):
Por favor, não cliquem nessas coisas... Microsoft e TSE não enviariam um e-mail mal formatado destes e nunca pediriam para fazer nada desta forma.
Oi, nós somos Andy e John, os diretores do Messenger. Antes de mais nada, pedimos desculpas pela interrupção, mas o Messenger acabará. Isso acontecerá porque muitas pessoas desconsideradas têm várias contas diferentes. Neste momento, só temos 578 nomes livres e por isso que o uso do Messenger e do Hotmail terá um custo a partir do verão de 2010. Se você mandar esta mensagem, no mínimo, a 18 pessoas diferentes da sua lista, seu ícone ficará azul, o que significa que será grátis para você. Se não acredita, visite o site www.msn.com e veja por si mesmo. Se você quer que encerremos sua conta, não mande esta mensagem, mas se quer conservá-la, mande-a a seus contatos. Isto não é uma brincadeira, mande-a!!! Vai ver que ficará azul!!!Este é sobre as eleições.... mais uma vez pedem para clicar:
Projeto MesárioO programa Mesário Eleitoral foi criado com a pretensão de incentivar o eleitorado voltado à prestação de serviços eleitorais nas mesas receptoras de votos. O Tribunal Superior Eleitoral, considerando a importância do tema, realiza, desde 2004, ações nesse sentido.O projeto busca a ampliação do número de colaboradores da Justiça Eleitoral, de forma consciente. Pretende-se, nesse contexto, cadastrar mesários, universitários ou não, qualificados e aptos a desempenhar satisfatoriamente suas atribuições no dia da eleição.Acesse o formulário e as informações sobre o programa Mesário Eleitoral no endereço: www.tse.gov.br/internet/servicos_eleitor/mesario.htm [o link direcionava para outro lugar]Praça dos Tribunais Superiores - Bloco C - Setor de Autarquias Sul, Brasília - DF - 70096-900 - Brasil
Por favor, não cliquem nessas coisas... Microsoft e TSE não enviariam um e-mail mal formatado destes e nunca pediriam para fazer nada desta forma.
Abraço!
sexta-feira, março 12, 2010
Diferenças do HTML5 / HTML4 parte 2 - Estrutura
Pensando na estrutura dos documentos, o HTML5 foi melhorado com uma semântica mais coerente.
O primeiro ponto é que o documento é composto por seções, independente da função designada ao elemento que a define. Existe um elemento de seção genérica, mas tudo na estrutura podemos chamar de seção.
Estes são os elementos novos que prometem organizar melhor o documento:
Estes são os elementos novos que prometem organizar melhor o documento:
- section: indica uma seção genérica da aplicação ou do documento, que juntamente com os títulos [h1], [h2]...[h6], servem para indicar a estrutura da informação ou conjunto relacionado. Esse cara substituiria a tag [div] de uso genérico;
- article: indica um pedaço de conteúdo do documento, como um post de um blog ou uma notícia de um jornal (por exemplo: tenho uma seção de notícias e dentro dela vários artigo);
- aside: contem itens referentes à página ou ao conteúdo focal - a barra lateral com os links, banners etc;
- nav: contem os itens de navegação do documento - aquela barra, normalmente superior, com os links;
- hgroup: é o agrupamento de itens do cabeçalho de uma seção;
- header: é o cabeçalho de uma seção contendo os títulos e ajudas à navegação ou à introdução de uma seção (documento, seção ou artigo) que podem ser agrupados pelo [hgroup];
- footer: é o rodapé da seção (documento, seção ou artigo), para que se coloque dados do autor, data de publicação etc;
- figure: representa o agrupamento de itens que necessitem de um título, como imagens, vídeos ou até textos... e seu título, claro;
- figcaption: o título do agrupamento do [figure];
A idéia é que ao invés de ficar usando um monte de [div] com a "semanticalização" destes blocos embutida nos atributos 'class' ou 'id', houvessem elementos nativos que representassem estes blocos ou seções do documento.
Obviamente um [header] não vai conter um [header], assim como um [footer], [nav], [aside] etc. Acredito que somente o [section] pode conter um [section].
O HTML5 promete simplificar a estrutura do documento, fazendo dela auto-explicativa e direta.
Exemplo de uma página HTML5, visando a estrutura:
<!doctype html>
<html lang="pt">
<head>
<title>Titulo</title>
</head>
<body>
<header>
<h1>Titulo, Logo etc</h1>
</header>
<nav>
<ul>
<li><a href="#">Blog</a></li>
<li><a href="#">Sobre</a></li>
<li><a href="#">Contato</a></li>
</ul>
</nav>
<section>
<article id="artigo2">
<header>
<h2>Artigo 2 do Blog</h2>
<p>Publicado em <time datetime="2010-03-11T16:22:45-03:00">11/03/2010</time></p>
</header>
<section>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod tellus eu orci imperdiet nec rutrum lacus blandit. Cras enim nibh, sodales ultricies elementum vel, fermentum id tellus. Proin metus odio, ultricies eu pharetra dictum, laoreet id odio...</p>
</section>
<footer>
<p><a href="#">3 cometarios</a><p>
</footer>
</article>
<article id="artigo1">
<header>
<h2>Artigo 1 do Blog</h2>
<p>Publicado em <time datetime="2010-03-08T20:15:29-03:00">08/03/2010</time></p>
</header>
<section>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod tellus eu orci imperdiet nec rutrum lacus blandit. Cras enim nibh, sodales ultricies elementum vel, fermentum id tellus. Proin metus odio, ultricies eu pharetra dictum, laoreet id odio...</p>
</section>
<footer>
<p><a href="#">3 cometarios</a><p>
</footer>
</article>
</section>
<aside>
<header>
<h1>Minha Barra Lateral</h1>
</header>
<ul>
<li><a href="#">Blog</a></li>
<li><a href="#">Sobre</a></li>
<li><a href="#">Contato</a></li>
</ul>
<footer>
<p>5 pessoas online<p>
</footer>
</aside>
<footer>
<p>Produzido por <a href="#">Fulano</a></p>
<p><small>Copyleft...</small></p>
</footer>
</body>
</html>
segunda-feira, março 08, 2010
Diferenças do HTML5 / HTML4 parte 1 - Geral
Depois de ler alguns artigos, ler documentação oficial e agora o texto da W3C sobre a diferença do HTML 5 com relação ao 4, blogs etc, incluindo bom senso de padronização, farei a seguir um resumo só com a real diferença da especificação atual (que ainda não está fechada).
Este primeiro post refere-se ao documento em geral.
#1 - XML: Trate como um documento XML - incluindo suas regras de estrutura do documento. Apesar de permitir certas displicências, aplique as boas práticas do XHTML sempre que puder no seu documento HTML:
- tags em minúscula;
- atributos com valores e com aspas;
- tags vazias finalizadas com "/";
- etc.
#2 - DOCTYPE: Para dizer que um documento é HTML, basta, no início do documento:
<!DOCTYPE html>
#3 - Tag HTML: Pode ou não possuir a tag [html], mas é altamente recomendável.
#4 - Idioma: Recomenda-se informar o idioma do documento. Para isso use a tag [html] (dã...):
<html lang="pt">
#5 - Charset: Para informar a codificação de caracteres, basta, no [header]:
<meta charset="UTF-8" />
#6 - Outros ML: O HTML5 permite MathML e SVG com as tags [math] e [svg] especificamente:
<svg><circle r="50" cx="50" cy="50" fill="green" /></svg>
#7 - Microdata: Pode-se usar microdata, se referindo com o atributo "itemscope" dentro de um elemento pai, e especificando os itens dentro dele. Os atributos são: "itemid", "itemprop", "itemref", "itemscope" e "itemtype".
#8 - Entidades: O tratamento das entidades e símbolos continuam os mesmos (& + entidade ou [# + ascii] + ;).
Exemplo (mescla de alguns exemplos da W3C):
<!doctype html>
<html lang="pt">
<head>
<meta charset="UTF-8" />
<title>Exemplo HTML5 - parte 1</title>
</head>
<body>
<section>
<p>
A green circle:
<svg> <circle r="50" cx="50" cy="50" fill="green" /> </svg>
</p>
</section>
<section itemscope itemtype="http://blablabla.org/galera">
<h1 itemprop="name">Astrogildo</h1>
<p itemprop="desc">Astrogildo - um cara legal!</p>
<img itemprop="img" src="img/astro.jpg" alt="Falhou..." title="Astrogildo na rave" />
</section>
</body>
</html>
segunda-feira, fevereiro 22, 2010
Tabela de dia do ano (mainframe julian day)
Em algumas aplicações é interessante utilizar o dia do ano (999) ao invés de dia/mês (9999).
Você consegue ver a tabela para anos bissestos ou não:
- Ano comum (non-leap-year)
- Ano bissesto (leap-year)
segunda-feira, fevereiro 01, 2010
Melhores albergues do mundo
Costuma viajar? Acampar? Ficar em hostel (albergue)?
No HostelWorld.com saiu o Oscar 2009 dos albergues: Hoscar.
A matéria do site (http://www.hostelworld.com/travel-features/124/best-hostels-of-2009/) ainda lista os melhores do mundo, por continente e categoria, que segue abaixo:
The winners of the coveted Hoscars were:
1. Traveller's House, Lisbon, Portugal
2. Rossio Hostel, Lisbon, Portugal
3. Living Lounge Hostel, Lisbon, Portugal
4. Academy Hostel, Florence, Italy
5. Carpe Noctem, Budapest, Hungary
6. The Riverhouse Backpackers, Cardiff, Wales
7. Lisbon Lounge Hostel, Lisbon, Portugal
8. Greg & Tom Hostel, Krakow, Poland
9. The Naughty Squirrel Backpackers Hostel, Riga, Latvia
10. Lisboa Central Hostel, Lisbon, Portugal
Top Hostels by Continent:
North America
1. ACBB Hostel Niagara, Niagra Falls, Canada
2. USA Hostels San Diego, USA
3. Clarence Castle, Toronto, Canada
Latin America
1. Hostel Lao, Mendoza, Argentina
2. America del Sur Hostel Buenos Aires, Argentina
3. Hostel Estoril,Buenos Aires, Argentina
Africa
1. Dahab Dorms, Dahab, Egypt
2. Riad Massine II, Marrakech, Morocco
3. The Backpack & Africa Travel Centre, Cape Town, South Africa
Asia
1. Sitting On The City Walls Courtyard House, Beijing, China
2. Chinese Box Courtyard Hostel, Beijing, China
3. Nagasaki International Hostel AKARI, Nagasaki, Japan
Oceania
1. Jailhouse Accommodation, Christchurch, New Zealand
2. Sydney Central YHA, Sydney, Australia
3. Backpack Oz, Adelaide, Australia
Special Category Awards were also given to the following hostels
1. Cleanest Hostel: Academy Hostel, Florence, Italy
2. Most Secure Hostel: Travellers House, Lisbon, Portugal
3. Most Fun Hostel: Carpe Noctem, Budapest, Hungary
4. Hostel with Best Location: Academy Hostel, Florence, Italy
5. Best Staff: The Riverhouse Backpackers, Cardiff, Wales
6. Hostel with Best Character: Living Lounge Hostel, Lisbon, Portugal
7. Best Small Hostel [Max 50 beds]: Hostel Majdas, Mostar, Bosnia & Herzegovina Rossio Hostel, Lisbon, Portugal Giovanni's Home, Naples, Italy
8. Best Large Hostel [Min 500 beds]: H.I. Chicago, Chicago, USA Wake Up! Sydney Central, Sydney, Australia smartcityhostels Edinburgh, Scotland
9. Most Improved Hostel: The South Beach Hostel, Miami, USA
Best Hostel Chain
1. Wombats, Austria and Germany
2. HI USA
3. Astor Hostels
quinta-feira, janeiro 28, 2010
Google Gears e Firefox
Hoje a versão 3.6 do Firefox não tem o suporte do Gears. A versão 3.5.7... também não.
Se há necessidade de utilizar a API você deve:
- instalar o Google Gears: http://gears.google.com/;
- reinicie o navegador;
- se não funcionar ou não aparecer "Configurações do Gears" no menu Ferramentas do navegador (o que não é dificil de acontecer), instale este componente (gears-win32-opt-0.5.25.0.xpi) que faz a configuração entre os dois: http://groups.google.com/group/gears-users/msg/70f164020c0f8f4e;
- reinicie o navegador (sempre que se instala um componente há necessidade de reiniciar o browser);
- pronto - assim comigo funcionou (na versão 3.5.7).
Se interessar, o caminho dos dados armazenados offline pelo Gears fica em:
[lista retirada da página http://www.google.com/support/gears/bin/answer.py?hl=en&answer=79850]
Windows VistaWindows XP
- Internet Explorer: C:\Users\
\AppData\LocalLow\Google\Google Gears for Internet Explorer - Firefox: Database files are stored in the user profile directory. C:\Users\
\AppData\Local\Mozilla\Firefox\Profiles\{PROFILE}.default\Google Gears for Firefox - Google Chrome: Database files are stored in the user profile directory. C:\Users\
\AppData\Local\Google\Chrome\User Data\Default\Plugin Data\Google Gears Mac OS X
- Internet Explorer: C:\Documents and Settings\
\Local Settings\Application Data\Google\Google Gears for Internet Explorer - Firefox: Database files are stored in the user profile directory. C:\Documents and Settings\
\Local Settings\Application Data\Mozilla\Firefox\Profiles\{PROFILE}.default\Google Gears for Firefox - Google Chrome: Database files are stored in the user profile directory. C:\Documents and Settings\
\Local Settings\Application Data\Google\Chrome\User Data\Default\Plugin Data\Google Gears
- Firefox: Database files are stored in the user profile directory. Users/
/Library/Caches/Firefox/Profiles/{PROFILE}.default/Google Gears for Firefox - Safari: ~/Library/Application Support/Google/Google Gears for Safari
Linux Firefox: Database files are stored in the user home directory.
/.mozilla/firefox/{PROFILE}.default/Google Gears for Firefox Microsoft Windows Mobile Internet Explorer: Database files are stored in the Application Data directory. \Application Data\Google\Google Gears for Internet Explorer
No trabalho, por exemplo, os dados estão em:
C:\Documents and Settings\\Configurações locais\Dados de aplicativos\Mozilla\Firefox\Profiles\.default\Google Gears for Firefox
Abraço!
sexta-feira, dezembro 04, 2009
Software Livre ou não?
Essa questão está na cabeça de muita gente, e dizer que software livre é o futuro, para mim, é ser radical demais.
Há uma nova tendência em que o dinheiro do nosso mundo capitalista circula através do serviço prestado, e não dos produtos diretamente. Mas as duas realidades estarão presentes lado a lado - talvez uma com mais força que a outra.
Na realidade, o que quero dizer é que poucas coisas me tiram do sério e uma delas é ver gente falando o que não sabe em relação, normalmente, ao software livre - pura ignorância originária do desconhecimento ou da dificuldade de assimilar ou dar o braço a torcer. Mas isso acontece também dos defensores extremos de software livre com relação ao software proprietário e ao mundo que nos cerca.
Eu em cima do muro? Não. Prefiro software livre, porém no note tenho Windows. Contraditório? Também não. Já veio na máquina (não é pirata) e uso softwares que só tem para este sistema. Ah, se as aplicações comerciais e jogos fossem disponíveis para o pinguim... O Ubuntu está sensacional, aliás o Kubuntu, pois apesar do Gnome ser muito bom, o KDE me chama mais atenção. É questão de gosto e posso mudar pro gerenciador de janelas que quiser - isso é ser livre, né? E o Fedora que sempre vem com as últimas versões das aplicações...
Aí, hoje, ouço um colega do trabalho comentando que o Linux o faz lembrar do trabalho dele anos atrás, pois as linhas de comando lembram o DOS (ele tem a mesma idéia do começo dos anos 90). Outro comentário é que "eles" tentam copiar o Windows, mas não conseguem... "um dia quem sabe...". Será que ele sabe mesmo quem copia o quê? O shell é muito mais coerente e fiel ao Unix do que o DOS (que se baseou também no Unix); a cada novidade do Windows na parte gráfica me faz recordar anos atrás do KDE e/ou o Mac OS(X). Quando a MS veio com transparências nas janelas, Power Shell, agora com design clean, diversas outras frescurinhas e veio falando em novidade... o pior é que as pessoas acreditam que é um lançamento inédito que nenhum outro "concorrente" possui. É uma pena, mas o Windows está estagnado e ninguém está conseguindo evolui-lo, diferentemente do Linux, que está ganhando espaço cada vez mais.
Software livre é gestão do conhecimento em nível global, e é isso que me fascina! Sou a favor de sua evolução, mas sei que ainda deve em muitos aspectos. Também sei que está muito a frente em outros, que muitas pessoas não sabem assim como meu colega. O mundo é injusto. Isso me entristece.
Apesar de, como eu disse, usar Windows, sei que ele é como sessão da tarde (as funcionalidades são filmes): mesmo que você não tenha assistido ainda, pode ter certeza que já foi lançado há muito tempo.
Apesar do radicalismo sempre presente nas discussões, cada um é cada um e essa liberdade é direito de todos.
terça-feira, setembro 22, 2009
Elemento com altura de 100% do elemento pai com JQuery
Muitas pessoas fazem layout com tabela para que o tamanho fique controlado a 100% e possa usar um plano de fundo no comprimento inteiro. Mas não precisa usar tabela para isso. Se isso for necessário mesmo... de verdade (depende de como for montado o layout), você pode usar um JavaScript para ajustar o tamanho. Este é um exemplo em JQuery:
Meu elemento de id="sidebar" fica dentro de um outro elemento que possui conteúdo variável, com texto grandes. O sidebar não possui tamanho suficiente para ser maior e não terminar repentinamente os "frufrus" do plano de fundo. Este scriptsinho em jQuery faz com que, quando o documento estiver carregado, haja ajuste do tamanho do "sidebar" para o tamanho interno do "pai" (o elemento no qual está dentro).
Abraço!
jQuery(document).ready(function(){
jQuery("#sidebar").height(jQuery("#sidebar").parent().innerHeight() + "px");
});
Meu elemento de id="sidebar" fica dentro de um outro elemento que possui conteúdo variável, com texto grandes. O sidebar não possui tamanho suficiente para ser maior e não terminar repentinamente os "frufrus" do plano de fundo. Este scriptsinho em jQuery faz com que, quando o documento estiver carregado, haja ajuste do tamanho do "sidebar" para o tamanho interno do "pai" (o elemento no qual está dentro).
Abraço!
quarta-feira, julho 08, 2009
HTML5: fim do XHTML
Segundo W3C, no dia 2 de julho de 2009 a diretoria anunciou o fim do "projeto" XHTML, voltando os esforços ao HTML5.
Hoje o W3C anunciou que o prazo do Grupo de Trabalho XHTML 2 vai expirar no final desse ano e não será renovado. Essa decisão, acompanhada do aumento de recursos no Grupo de Trabalho HTML, fará com que o W3C acelere os trabalhos com o HTML 5 e torne mais clara a posição do W3C com relação ao futuro do HTML. Existe uma FAQ que responde as questões sobre o futuro dos produtos do Grupo de Trabalho XHTML 2 e o status das várias discussões relacionadas ao HTML. Saiba mais sobre a Atividade HTML. (Permalink)
O HTML vai manter muita coisa do XHTML, a principal delas a estrutura baseada em XML - realmente o HTML 4 estava uma zona. O grupo de trabalho diz manter a modularização também, o que permite combinar com outras linguagens de marcação, além de corrigir muitos aspectos como acessibilidade, independencia de dispositivos, internacionalização, entre outros.
Resumindo: O futuro do HTML será uma junção do XHTML (que deriva do HTML, porém mais regrado) com o as melhoras sempre solicitadas e a semântica cada vez mais necessária nas integrações e relacionamentos entre dispositivos, pessoas e aplicações.
Segue as marcações do HTML5 (links para o site http://www.w3schools.com)
HTML5 Tags
- <!-->
- <!DOCTYPE>
- <a>
- <abbr>
- <acronym> (Retirado da versão 5)
- <address>
- <applet> (Retirado da versão 5)
- <area>
- <article> (NOVO!)
- <aside> (NOVO!)
- <audio> (NOVO!)
- <b>
- <base>
- <basefont> (Retirado da versão 5)
- <bdo>
- <big> (Retirado da versão 5)
- <blockquote>
- <body>
- <br>
- <button>
- <canvas> (NOVO!)
- <caption>
- <center> (Retirado da versão 5)
- <cite>
- <code>
- <col>
- <colgroup>
- <command>
- <datagrid> (NOVO!)
- <datalist> (NOVO!)
- <datatemplate> (NOVO!)
- <dd>
- <del>
- <details> (NOVO!)
- <dialog> (NOVO!)
- <dfn>
- <dir> (Retirado da versão 5)
- <div>
- <dl>
- <dt>
- <em>
- <embed> (NOVO!)
- <event-source> (NOVO!)
- <fieldset>
- <figure> (NOVO!)
- <font> (Retirado da versão 5)
- <footer> (NOVO!)
- <form>
- <frame> (Retirado da versão 5)
- <frameset> (Retirado da versão 5)
- <head>
- <header> (NOVO!)
- <h1> - <h6>
- <hr>
- <html>
- <i>
- <iframe>
- <img>
- <input>
- <ins>
- <kbd>
- <label>
- <legend>
- <li>
- <link>
- <m>
- <map>
- <mark> (NOVO!)
- <menu>
- <meta>
- <meter> (NOVO!)
- <nav> (NOVO!)
- <nest> (NOVO!)
- <noframes> (Retirado da versão 5)
- <noscript>
- <object>
- <ol>
- <optgroup>
- <option>
- <output> (NOVO!)
- <p>
- <param>
- <pre>
- <progress> (NOVO!)
- <q>
- <rule> (NOVO!)
- <s> (Retirado da versão 5)
- <samp>
- <script>
- <section> (NOVO!)
- <select>
- <small>
- <source> (NOVO!)
- <span>
- <strike> (Retirado da versão 5)
- <strong>
- <style>
- <sub>
- <sup>
- <table>
- <tbody>
- <td>
- <textarea>
- <tfoot>
- <th>
- <thead>
- <time> (NOVO!)
- <title>
- <tr>
- <tt> (Retirado da versão 5)
- <u> (Retirado da versão 5)
- <ul>
- <var>
- <video> (NOVO!)
Fonte:
Spam Americanas
Mais uma vez, chega pelo e-mail essas coisas...
Prezado(a) cliente,
Recebemos seu pedido
sua compra será debitada em sua conta bancária,
dentro de 24 horas.
CLIQUE AQUI PARA VER SEU PEDIDO OU CANCELAR !!
VEJA O RESUMO DO SEU PEDIDO.
Desde já agradecemos pela sua preferência.
Silvia Lira-Atendimento a Clientes
Sac.atendimento@americanas.com
www.americanas.com.br
Tem gente que acha qua a Americanas iria mandar alguma coisa assim. E ao clicar nos links (que estão em azul) você acessa http://fly2.??/??????. Por isso, se tivere alguma dúvida, olhe para onde o link vai lhe levar e suspeite de tudo que chegar sem sua solicitação.
terça-feira, maio 12, 2009
Montar E-mail via HTML/JavaScript
Minha ex estava precisando enviar um formulário por e-mail, mas não podia usar nenhuma linguagem de servidor (PHP, ASP etc). Como é para a empresa e sei que todos usam uma aplicação desktop para ferenciamento de e-mails (Outlook ou Thunderbird), sugeri usar o "mailto" (normalmente usado nos links de contato) para abrir a aplicação e formatar os campos do e-mail.
A função é bem simples e lista no corpo do e-mail os campos e seus valores... e só.
function montaEmail(form) {
var str = 'mailto:seuemail@email.com?';
str += 'cc=copia1@email.com, copia2@email.com&';
str += 'bcc=copiaoculta@email.com&';
str += 'subject=Assunto do E-mail&';
str += 'body=';
for (i=0;i<form.elements.length-1;i++) {
str += '%0A' + form.elements[i].name + ' = ' + form.elements[i].value;
}
window.location.href = str;
}
E no form, ao invés de usar "submit", usar um "button" chamando essa função:
<input type="button" onclick="montaEmail(this.form)" value="Enviar">
Lembre-se que os parâmetros do "mailto" são:
- destinatários: após o "mailto:" separados por vírgula;
- cópia: "cc=" e os destinatários separados por vírgula;
- cópia oculta: "bcc=" e os destinatários separados por vírgula;
- assunto: "subject=" e o texto do assunto
- corpo do email: "body=" e o conteúdo.
Como é uma URL, a separação dos parâmetros é feita por "?" após o(s) destinatário(s) principal(is) e depois "&" a cada parâmetro usado. Pelo mesmo motivo, os caracteres especiais devem ser formatados seguindo o padrão URL. Exemplo: Quebra de linha é %0A.
sexta-feira, abril 17, 2009
Spam "Uni Leve"
Olha só o que mandaram:
Pô... Uni Leve! O link para o anexo aponta uma DLL.
Comprovante de Deposito
Segunda-feira, 30 de Março de 2009 4:15
De: "unilevesa@ubbi.com.br"
Para:
Comprovante Depósito-30032009 (244kb)
Segue em anexo o comprovante de depósito em conta.
Pedimos que confira seus dados e extrato e verifique se todas as informações estão corretas.
Uni Leve Ltda
Marcos C. Barros
Atenciosamente, Departamento Jurídico.
Pô... Uni Leve! O link para o anexo aponta uma DLL.
Alguém acha que deve clicar? Uni Leve!
quarta-feira, abril 15, 2009
Gestão de Projetos com Tecnologia Livre
Hoje em dia temos muitas aplicações que agilizam nossas atividades e controlam para nós informações preciosas. Isso acontece em quase todas as áreas e em gestão de projetos também. O problema que o custo de ferramentas para GP, que nos auxiliam no gerenciamento, acompanhamento de um projeto, controle de custo e prazo, entre outras coisas, normalmente é pago.... e bem pago. Sempre fuçando tecnologias livres, me deparei com algumas ferramentas que não conhecia e confrontei com algumas já sabidas para fazer uma análise.
Eu dou muito valor às aplicações web, pois independem de plataforma e podem ser acessadas de qualquer lugar, mas sei que os recursos são restritos. O problema maior é a abrangência e supercialidade de recursos principalmente gráficos que aplicações disponíveis em PHP (ou qualquer uma outra linguaegm web) possuem, pois detêm o conceito do trabalho em grupo, contendo fórum, wiki, gerenciamento de arquivos e envio de tickets para execução das tarefas, enquanto as aplicações desktops tem mais o foco da gestão e acompanhamento.
Em PHP destaco o PHProjekt e o dotProject que são muito bons e possuem recursos similares citados acima: são groupwares.
Já para desktop, destaco estas 2 ferramentas desenvolvidas em Java, que são multiplataformas:
XMind - Projeto similar ao FreeMind, também feito em Java, mas na minha concepção muito mais organizado e amigável. Ele permite escolher o tipo de exibição do diagrama, enquenato o FreeMind apenas trabalha com o de idéias livres. Com o XMind você consegue montar uma EAP, organizar um brainstorming, espinha de peixe, por exemplo, entre outros.
OpenProj - Também feito em Java, mas muito parecido com o MS Project. É como um pedacinho do software da Microsoft, mas tem tudo que se precisa para gerenciar um projeto: recursos, custos, prazo, gera relatórios, gráficos e uma coisa que o Project não faz: EAP. É leve, fácil e lembra muito, mas muito mesmo o MS Project. Muito melhor que o GanttProject que não tinha nada além de atividades e o gráfico de Gantt.
sexta-feira, março 13, 2009
MIME Type
Segue uma tabela de MYM Types... sempre útil quando você precisa trabalhar com verificação de arquivos (retirada de http://www.w3schools.com/media/media_mimeref.asp):
Mime Types por Extensão de Arquivo
Mime Types por Extensão de Arquivo
Extension | Type/sub-type |
---|---|
application/octet-stream | |
323 | text/h323 |
acx | application/internet-property-stream |
ai | application/postscript |
aif | audio/x-aiff |
aifc | audio/x-aiff |
aiff | audio/x-aiff |
asf | video/x-ms-asf |
asr | video/x-ms-asf |
asx | video/x-ms-asf |
au | audio/basic |
avi | video/x-msvideo |
axs | application/olescript |
bas | text/plain |
bcpio | application/x-bcpio |
bin | application/octet-stream |
bmp | image/bmp |
c | text/plain |
cat | application/vnd.ms-pkiseccat |
cdf | application/x-cdf |
cer | application/x-x509-ca-cert |
class | application/octet-stream |
clp | application/x-msclip |
cmx | image/x-cmx |
cod | image/cis-cod |
cpio | application/x-cpio |
crd | application/x-mscardfile |
crl | application/pkix-crl |
crt | application/x-x509-ca-cert |
csh | application/x-csh |
css | text/css |
dcr | application/x-director |
der | application/x-x509-ca-cert |
dir | application/x-director |
dll | application/x-msdownload |
dms | application/octet-stream |
doc | application/msword |
dot | application/msword |
dvi | application/x-dvi |
dxr | application/x-director |
eps | application/postscript |
etx | text/x-setext |
evy | application/envoy |
exe | application/octet-stream |
fif | application/fractals |
flr | x-world/x-vrml |
gif | image/gif |
gtar | application/x-gtar |
gz | application/x-gzip |
h | text/plain |
hdf | application/x-hdf |
hlp | application/winhlp |
hqx | application/mac-binhex40 |
hta | application/hta |
htc | text/x-component |
htm | text/html |
html | text/html |
htt | text/webviewhtml |
ico | image/x-icon |
ief | image/ief |
iii | application/x-iphone |
ins | application/x-internet-signup |
isp | application/x-internet-signup |
jfif | image/pipeg |
jpe | image/jpeg |
jpeg | image/jpeg |
jpg | image/jpeg |
js | application/x-javascript |
latex | application/x-latex |
lha | application/octet-stream |
lsf | video/x-la-asf |
lsx | video/x-la-asf |
lzh | application/octet-stream |
m13 | application/x-msmediaview |
m14 | application/x-msmediaview |
m3u | audio/x-mpegurl |
man | application/x-troff-man |
mdb | application/x-msaccess |
me | application/x-troff-me |
mht | message/rfc822 |
mhtml | message/rfc822 |
mid | audio/mid |
mny | application/x-msmoney |
mov | video/quicktime |
movie | video/x-sgi-movie |
mp2 | video/mpeg |
mp3 | audio/mpeg |
mpa | video/mpeg |
mpe | video/mpeg |
mpeg | video/mpeg |
mpg | video/mpeg |
mpp | application/vnd.ms-project |
mpv2 | video/mpeg |
ms | application/x-troff-ms |
mvb | application/x-msmediaview |
nws | message/rfc822 |
oda | application/oda |
p10 | application/pkcs10 |
p12 | application/x-pkcs12 |
p7b | application/x-pkcs7-certificates |
p7c | application/x-pkcs7-mime |
p7m | application/x-pkcs7-mime |
p7r | application/x-pkcs7-certreqresp |
p7s | application/x-pkcs7-signature |
pbm | image/x-portable-bitmap |
application/pdf | |
pfx | application/x-pkcs12 |
pgm | image/x-portable-graymap |
pko | application/ynd.ms-pkipko |
pma | application/x-perfmon |
pmc | application/x-perfmon |
pml | application/x-perfmon |
pmr | application/x-perfmon |
pmw | application/x-perfmon |
pnm | image/x-portable-anymap |
pot, | application/vnd.ms-powerpoint |
ppm | image/x-portable-pixmap |
pps | application/vnd.ms-powerpoint |
ppt | application/vnd.ms-powerpoint |
prf | application/pics-rules |
ps | application/postscript |
pub | application/x-mspublisher |
qt | video/quicktime |
ra | audio/x-pn-realaudio |
ram | audio/x-pn-realaudio |
ras | image/x-cmu-raster |
rgb | image/x-rgb |
rmi | audio/mid |
roff | application/x-troff |
rtf | application/rtf |
rtx | text/richtext |
scd | application/x-msschedule |
sct | text/scriptlet |
setpay | application/set-payment-initiation |
setreg | application/set-registration-initiation |
sh | application/x-sh |
shar | application/x-shar |
sit | application/x-stuffit |
snd | audio/basic |
spc | application/x-pkcs7-certificates |
spl | application/futuresplash |
src | application/x-wais-source |
sst | application/vnd.ms-pkicertstore |
stl | application/vnd.ms-pkistl |
stm | text/html |
svg | image/svg+xml |
sv4cpio | application/x-sv4cpio |
sv4crc | application/x-sv4crc |
swf | application/x-shockwave-flash |
t | application/x-troff |
tar | application/x-tar |
tcl | application/x-tcl |
tex | application/x-tex |
texi | application/x-texinfo |
texinfo | application/x-texinfo |
tgz | application/x-compressed |
tif | image/tiff |
tiff | image/tiff |
tr | application/x-troff |
trm | application/x-msterminal |
tsv | text/tab-separated-values |
txt | text/plain |
uls | text/iuls |
ustar | application/x-ustar |
vcf | text/x-vcard |
vrml | x-world/x-vrml |
wav | audio/x-wav |
wcm | application/vnd.ms-works |
wdb | application/vnd.ms-works |
wks | application/vnd.ms-works |
wmf | application/x-msmetafile |
wps | application/vnd.ms-works |
wri | application/x-mswrite |
wrl | x-world/x-vrml |
wrz | x-world/x-vrml |
xaf | x-world/x-vrml |
xbm | image/x-xbitmap |
xla | application/vnd.ms-excel |
xlc | application/vnd.ms-excel |
xlm | application/vnd.ms-excel |
xls | application/vnd.ms-excel |
xlt | application/vnd.ms-excel |
xlw | application/vnd.ms-excel |
xof | x-world/x-vrml |
xpm | image/x-xpixmap |
xwd | image/x-xwindowdump |
z | application/x-compress |
zip | application/zip |
sexta-feira, janeiro 09, 2009
Campanha para eliminar navegadores antigos
Há um tempo vi uns sites que forneciam scripts para que se um visitante acessasse seu site através de um navegador antigo, avisasse de um potencial problema. Destes, 2 em inglês e 1 em português. Essa semana recebi da iMasters um e-mail da campanha brasileira encabeçada por eles com apoio da Fundação Mozilla e obviamente com foco no Firefox. Tudo isso para acabarem de vez com o bendito Interner Explorer 6.
Este navegador além de antigo (lançado em 2001), não segue em muitas situações os padrões para interpretação das tags e estilos das páginas, o que causa um problemão para quem desenvolve, pois deve preparar as páginas para essas situações. Não que todos os navegadores sigam os padrões corretamente, mas o IE6 é o mais problemático.
Seguem os links dos sites que promovem essa revolução! Eles exibem uma barra de alerta informando que o navegador é antigo e pode causar problemas para a visualização.
- http://www.stopie6.org - baixe o script, coloque junto aos outros e simplesmente chame-o na página do seu site. Só isso.
- http://www.end6.org - baixe o script, coloque junto aos outros e chame-o na página do seu site, ou simplesmente cole a chamada publicada e utilize o arquivo direto do site.
- http://updateyourbrowser.net - copie e cole o código informado e pronto (barra limpa e simples, mas com link para a página do site com os navegadores novos ).
- http://imasters.uol.com.br/crossbrowse - copie e cole o código informado e pronto (barra com imagens, porém com os links diretos para os sites dos navegadores).
Abraço!
terça-feira, novembro 25, 2008
Register Globals no PHP
Esses dias senti na pele o problema do register_globals = on.
No site do PHP diz o que e porque a diretiva foi abolido da versão 6, e sempre concordei. Era facilidade demais e tornou-se perigosa.
Quando ON, ela faz com que eu possa acessar a variável $_POST['nome'] diretamente de $nome, por exemplo, ou ainda $_SESSION['id'] através de $id ou $_GET['act'] de $act. O problema de segurança exsite porque ao perguntar $id (querendo me referir à sessão) se for passado na URL, por exemplo, ...pagina.php?id=2, $id vai assumir o valor 2, se anteriormente não tiver sido atribuido nada para essa variável. Este é o clássico exemplo do site:
O que aconteceu comigo seria isso, se não tivesse acontecido algo antes. em um projeto meu, carrego as variáveis antes de tudo. Até aí... beleza. Mas cometi um erro pois não estava acostumado com a diretiva ligada: usei sessão com o mesmo nome.
Isso fez com que toda hora eu limpasse a sessão.
O que aconteceu comigo seria isso, se não tivesse acontecido algo antes. em um projeto meu, carrego as variáveis antes de tudo. Até aí... beleza. Mas cometi um erro pois não estava acostumado com a diretiva ligada: usei sessão com o mesmo nome.
...$nome = (isset($_POST['nome']) ? $_POST['nome'] : '';
if ($_SESSION['nome']!='') ...
...
Isso fez com que toda hora eu limpasse a sessão.
Verifiquei no phpinfo(); e a benedita tava ligada; tentei mudar para "off" no próprio script e nada. Solução: mudei os nomes das variáveis de sessão para, por exemplo, sess_nomeoriginal.
Lição aprendida 1: Não usar os nomes iguais nas variáveis principalmente de sessão.
Lição aprendida 2: Não confiar em servidores de clientes; por causa de aplicações que necessitam da diretiva register_globals = on, muitas vezes é assim que fica configurado.
Pela teoria eu poderia mudá-la através do script php com
mas não consegui.
Lição aprendida 1: Não usar os nomes iguais nas variáveis principalmente de sessão.
Lição aprendida 2: Não confiar em servidores de clientes; por causa de aplicações que necessitam da diretiva register_globals = on, muitas vezes é assim que fica configurado.
Pela teoria eu poderia mudá-la através do script php com
ini_set('register_globals','off');
mas não consegui.
Depois de fazer minha alteração, é que eu descobri porque não funcionou o ini_set: esta diretiva não tem efeito no script: deve ser colocada no arquivo .htaccess, já que ela só pode ser alterada no php.ini, .htaccess e no httpd.conf.
Você pode ver a lista completa de diretivas e onde alterá-las através do site.
Minha solução não foi ideal, mas agora vou prestrar mais atenção nos nomes das variáveis. Mesmo com a versão 6 chegando, tem lugares que usam ainda a 4.
Abraço!
php_flag register_globals off
Você pode ver a lista completa de diretivas e onde alterá-las através do site.
Minha solução não foi ideal, mas agora vou prestrar mais atenção nos nomes das variáveis. Mesmo com a versão 6 chegando, tem lugares que usam ainda a 4.
Abraço!
quinta-feira, novembro 13, 2008
PHP Conference Brasil 2008
De 27 a 29 de novembro (quinta a sábado) acontecerá na UNIFIEO em Osasco o PHP Conferece Brasil 2008. O evento busca atingir 1000 profissionais de desenvolvimento com palestras, mini-cursos, debates e install fest, tudo voltado para PHP, claro. Meu colega Flávio Lisboa falará do Zend Framework. Para maiores informações, acesse o site do evento: http://www.phpconf.com.br.

Abraço
Abraço
sexta-feira, outubro 31, 2008
Select ignorando acento
Quando se faz algum sistema que realize uma busca a partir de uma string do usuário, temos que levar em conseideração as letras maiúsculas e minúsculas e a acentuação.
Andei pesquisando e encontrei como fazer nos bancos mais usados. É assim:
Supondo que possuo a tabela 'tabela' com o campo 'campo' com os seguintes valores:
Oracle 10g:
Pronto. O Select desta sessão pegará ignorando o acento e ordenando sem considerá-lo.
ou
MySQL:
ou
PostgreSQL:
ou
Para ordenar basta usar a cláusula 'order by'; no Oracle foi pré-estabelecida a maneira para a sessão.
Andei pesquisando e encontrei como fazer nos bancos mais usados. É assim:
Supondo que possuo a tabela 'tabela' com o campo 'campo' com os seguintes valores:
CAMPO
---------
Maca
Maçã
Macaco
Amanhã
Jaca
Maçaneta
Oracle 10g:
alter session set nls_comp=linguistic;
alter session set nls_sort=binary_ai;
Pronto. O Select desta sessão pegará ignorando o acento e ordenando sem considerá-lo.
select campo from tabela where campo like '%aca%';
ou
select campo from tabela where campo like '%açÃ%';
CAMPO
---------
Jaca
Maca
Maçã
Macaco
Maçaneta
MySQL:
select campo from `tabela`
where `campo` like _utf8 '%aca%' collate utf8_unicode_ci;
ou
select campo from `tabela`
where `campo` like _utf8 '%açÃ%' collate utf8_unicode_ci;
CAMPO
---------
Maca
Maçã
Macaco
Jaca
Maçaneta
PostgreSQL:
select campo from tabela
where lower(to_ascii(campo)) like lower(to_ascii('%açÃ%'));
ou
select campo from tabela
where lower(to_ascii(campo)) like lower(to_ascii('%aca%'));
CAMPO
---------
Maca
Maçã
Macaco
Jaca
Maçaneta
Para ordenar basta usar a cláusula 'order by'; no Oracle foi pré-estabelecida a maneira para a sessão.
quarta-feira, outubro 29, 2008
OpenOffice 3
A nova versão do OpenOffice.org já está disponível para download.
O OpenOffice é uma suite de escritório gratuita que utiliza o ODF e vem com processador de texto, planilha de cálculos, base de dados (simples), criação de apresentações e ferramenta para cálculos matemáticos.
As notas da versão podem ser vistas no próprio site da organização. Este Release conta com suporte ao novo formato de documentos da Microsoft OpenXML (com ressalva de alguns itens avançados), redistribuição de itens dos menus deixando-os mais intuitivo, mudanças nos ícones (sempre fazem isso), importação nativa de PDF (!), templates e maior facilidade para iniciar seu trabalho (eu não gosto muito, mas sentiram falta disso nas versões anteriores).
Pra baixá-lo, basta acessar a págiona de downloads do OpenOffice.org. São menos de 150mb com o JRE incluso, e ainda pode baixar extensões para a aplicação. A organização brasileira já disponibilizou a versão 3.0 bo BrOffice com 125mb para Windows.
Apesar de funcionar com 256mb de RAM, recomenda-se no mínimo 512. Para um bom trabalho não recomenda-se menos de 500mb de espaço no HD e resolução da tela com menos de 1024x768. O Java é necessário para a utilização do Base (banquinho de dados que vem no pacote); as outras ferramentas usam somente para funcionalidades específicas.
O jornal português Metro anunciou em primeira página no dia 27 deste mês.
Outra matéria que achei comentando o lançamento foi a do blog da ComputerWorld.
Coloque um selo no seu site para promover o OpenOffice!

Abraço!
O OpenOffice é uma suite de escritório gratuita que utiliza o ODF e vem com processador de texto, planilha de cálculos, base de dados (simples), criação de apresentações e ferramenta para cálculos matemáticos.
As notas da versão podem ser vistas no próprio site da organização. Este Release conta com suporte ao novo formato de documentos da Microsoft OpenXML (com ressalva de alguns itens avançados), redistribuição de itens dos menus deixando-os mais intuitivo, mudanças nos ícones (sempre fazem isso), importação nativa de PDF (!), templates e maior facilidade para iniciar seu trabalho (eu não gosto muito, mas sentiram falta disso nas versões anteriores).
Pra baixá-lo, basta acessar a págiona de downloads do OpenOffice.org. São menos de 150mb com o JRE incluso, e ainda pode baixar extensões para a aplicação. A organização brasileira já disponibilizou a versão 3.0 bo BrOffice com 125mb para Windows.
Apesar de funcionar com 256mb de RAM, recomenda-se no mínimo 512. Para um bom trabalho não recomenda-se menos de 500mb de espaço no HD e resolução da tela com menos de 1024x768. O Java é necessário para a utilização do Base (banquinho de dados que vem no pacote); as outras ferramentas usam somente para funcionalidades específicas.
O jornal português Metro anunciou em primeira página no dia 27 deste mês.
Outra matéria que achei comentando o lançamento foi a do blog da ComputerWorld.
Coloque um selo no seu site para promover o OpenOffice!
Abraço!
Assinar:
Postagens (Atom)