Arquivos para October 2009

Avaliação do Linux Ubuntu 9.10: Primeiras Impressões

Acabei de instalar (via Gerenciador de Atualizações) a nova versão do Ubuntu: 9.10, a do Koala cármico.

Vamos às minhas primeiras impressões:

  • Empathy é o substituto do Pidgin para acesso às minhas contas de Instant Messages. Para quem estava acostumado ao visual espartano do Pidgin, nenhuma grande diferença. Falta conseguir alguém online para testar os ícones do microfone e da webcam que estão disponíveis.
  • Firefox 3.5 está mais leve do que a versão 3.0. E melhor do que tudo, permite testar as novas implementações de HTML 5.
  • F-Spot está bem melhor do que a última vez que o havia utilizado.
  • Apreciei a integração do Rhythmbox com a loja Magnatune e com o Last.fm. O problema é que ainda não pude testar as novidades na área de som, pois esta versão deixou de reconhecer o hardware de som de meu computador.
  • Os novos jogos parecem excitantes. São tantos que levarei meses para testar uma boa parte deles
  • Já comecei a testar o armazenamento do Ubuntu One há semanas e é uma boa opção. Mas você há de concordar comigo que para armazenar 2 GB é mais fácil usar um pendrive! Vantagem mesmo só no compartilhamento com outros, mas ainda preciso testar.
  • A Central de Programas ficou bem organizada, mas falta a opção de conhecer a popularidade de cada programa.
  • O desempenho conseguiu superar um pouco o da 9.04, que já havia representado um salto neste quesito
  • Os novos papéis de parede são muito bonitos
  • A aparência geral é sóbria. Muito sóbria. Sóbria demais.
  • Estou ansioso para experiementar o jogo de ferramentas de desenvolvimento Quickly

Seletores JQuery

Quase toda programação com JQuery é baseada na seleção de elementos para posterior manipulação.

Muitas são as formas de seleção de elementos com JQuery. Todas retornam um vetor de elementos (Array<elemento>).

Vamos a uma lista delas.

Seleção básica

  • #id. Elemento com determinado id. Apenas um elemento deve ter determinada id em um documento. Exemplo:
    $("#primDiv").css("background-color","black");
  • elemento. Seleção pelo elemento HTML. Exemplo:
    $("div").css("border","9px double red");
  • .classe. Elementos de determinada classe. Exemplo:
    $(".destaque").css("fontWeight","bolder");
  • .classe.classe. Elementos que pertençam a ambas classes. Exemplo:
    $(".destaque.especial").css("color","red");
  • *. Todos elementos. Exemplo:
    $("*").css("color","black");
  • Combinação dos anteriores. Os seletores podem ser combinados de diversas maneiras, separados por vírgulas. Exemplo:
    $("div,span,p.olho").css("margin","3px 0 0 0");

Hierarquia

A seleção pode ser mais detalhada com indicação de hierarquia. Veja as opções

  • Ascendente Descendente. Seleção de descendentes de determinado elemento. Exemplo:
    $("form label").css("color","gray");
  • Pai > Filho. Seleção de elementos-filho de um determinado elemento. Exemplo:
    $("#conteudo > *") .css("border","2px solid green");
  • Anterior + Seguinte. Seleção de elemento que segue-se a um determinado elemento. Exemplo:
    $("label + input").css("border","1px dotted blue");
  • Anterior ~ Irmãos. Seleção de elementos-irmãos após determinado elemento. Exemplo:
    $("#inicio ~ div").css("color","aquamarine");

Filtros

Outra forma de refinar a seleção é utilizar filtros. Vejamos uma lista de filtros:

  • :first. Primeiro elemento da seleção. Exemplo:
    $("tr:first").css("font-style","italic");
  • :last. Inverso de :first
  • :not(seletor). Filtra elementos que não se encaixam em determinado seletor. Exemplo:
    $("input:not(:checked) + span") .css("border","1px dotted darkSalmon");
  • :even. Elementos com índice par, considerado que o índice inicia em zero. Exemplo:
    $("tr:even").css("background-color","lavender");
  • :odd. Inverso de :even
  • :eq(índice). Determinado elemento pelo seu índice. Exemplo:
    $("td:eq(2)").css("background-color","MintCream");
  • :gt(índice). Todos elementos com índice superior a determinado valor. Exemplo:
    $("p:gt(1)").hide();
  • :lt(índice). Inverso de :gt(índice)
  • :header. Todos elementos header. Exemplo:
    $(":header").css("color","navy");
  • :animated. Todos elementos que estão sendo animados no momento da seleção.

Filtros de conteúdo

Além de filtrar os elementos em si, podemos criar filtros pelo conteúdo.

  • :contains(texto). Seleciona elementos que contenha determinado texto. Exemplo:
    $("p:contains('JQuery')").css("text-decoration","underline");
  • :empty. Seleciona elementos sem filhos. Exemplo:
    $("td:empty").css("background-color","MediumOrchid");
  • :has(seletor). Seleciona elementos que contenham ao menos um determinado elemento que combine com o seletor informado. Exemplo:
    $("div:has(p)").addClass("grade");
  • :parent. Seleciona elementos que tenham elementos filhos. Exemplo:
    $("td:parent").hide();

Filtros de visibilidade

Podemos alterar a propriedade de visibilidade dos elementos. Os filtros de visibilidade servem para selecionar elementos pela sua condição de visibilidade.

  • :hidden: Seleciona elementos ocultados. Exemplo:
    $("div:hidden").show(2000);
  • :visible. Inverso de :hidden

Filtros de atributos

Outra forma de filtrar uma seleção de elementos é pela presença, ausência ou valores de atributos dos elementos. Vejamos os métodos:

  • [atributo]. Elementos que contenham determinado atributo. Exemplo:
    $("div[id]").css("color","lime");
  • [atributo=valor]. Elementos com atributo que tenham determinado valor. Exemplo:
    $("p[class='ocultar']").hide(3000);
  • [atributo!=valor]. Elementos com atributo que não tenham determinado valor.
  • [atributo^=valor]. Elementos com atributo que inicie com determinado valor. Exemplo:
    $("input[name^='req']").val("Requerido");
  • [atributo$=valor]. Elementos com atributo que termine com determinado valor.
  • [atributo*=valor]. Elementos com atributo que contenha determinado valor.
  • Estes filtros podem ser combinados como neste exemplo:
    $("input[type='text'][id]").css("color","Darkred");

Filtros por afiliação

Outra forma de filtrar é pela avaliação de relação de afiliação entre os elementos. Vejamos:

  • :nth-child(índice/par/ímpar/equação). Seleciona o n-ésimo elemento da seleção por afiliação ou os elementos pares, ímpares ou ainda de acordo com uma equação. Exemplo:
    $("ol li:nth-child(2)").css("background-color","Bisque");
  • :first-child. Primeiro filho de uma seleção.
  • :last-child. Inverso de :first-child
  • :only-child. Seleciona todos elementos que são únicos filhos de seus elementos-pai.

Elementos de formulário

Também podem ser selecionados os elementos de formulários como

  • :input
  • :text
  • :password
  • :radio
  • :checkbox
  • :submit
  • :image
  • :reset
  • :button
  • :file

Veja este exemplo:

$("form :checkbox").css("border","2px solid LightSlateGray");

Estado de elementos de formulários

Os elementos de formulários podem ter sua seleção refinada pelo estado destes elementos. São exemplos

  • :enabled
  • :disabled
  • :checked
  • :selected

Um exemplo de uso seria

alert($("input:checked").length + " selecionados");

JQuery Básico

Este artigo apresenta os métodos mais importantes para uso da framework JQuery. Tudo o que você precisa saber para começar a trabalhar com JQuery está aqui e na Introdução a JQuery. Se desejar veja como selecionar elementos com JQuery.

Função JQuery

A função JQuery é representada por um $ e serve para selecionar elementos do documento. Esta função é a fundamental para o uso de JQuery. Uma vez feita uma seleção, podemos manipular estes elementos de diversas maneiras. Ela sempre retorna um objeto JQuery, definido internamente no framework.

Vejamos as possibilidades de uso da função JQuery:

  • jQuery(expressão, [contexto]):jQuery. A expressão é um seletor de elemento do documento, tal como os seletores de CSS. O uso de contexto nesta função será tratado em outro artigo. Exemplo:
    $("div > p").css("border", "1px solid gray");
  • jQuery(html, [proprietário]):jQuery. Cria um elemento com o conteúdo do primeiro parâmetro e o insere em outro elemento. O uso do proprietário nesta função não será tratado neste artigo. Exemplo:
    $("<div><p>Boa noite!</p></div>").appendTo("body")
  • jQuery(elementos):jQuery. Seleciona um elemento HTML da página. Exemplo:
    $(document.body).css("background", "blue");
  • jQuery(callback):jQuery. Equivalente ao $(document).ready().

Métodos de acesso a objetos JQuery

Diversos métodos que podem ser aplicados aos objetos JQuery retornados pela função JQuery. São:

  • each(calback):jQuery. Executa uma função (callback) no contexto de cada objeto encontrado. Exemplo:
    $("div").each(function(i)){ this.style.color="red"; }
  • size():int. Retorna número de elementos no objeto. Exemplo:
    alert($("div").size())
  • length:int. Retorna número de elementos no objeto, sendo idêntica a size(). Exemplo:
    alert($("div").length)
  • selector:String. Retorna um seletor que represente o seletor passado para uma função jQuery. Útil para desenvolvedores de plugins e não será tratado neste artigo.
  • context:elemento. Retorna nó DOM. Semelhante ao selector, também não será tratado neste artigo.
  • eq(posição):jQuery. Retorna um elemento de um conjunto. O primeiro tem o índice 0. Exemplo:
    $("p").eq(1).css("color","red")
  • get():Array<elemento>. Retorna diversos elementos DOM. Útil para operar sobre grande conjunto de elementos. Exemplo:
    $("div").get().reverse()
    retornaria um vetor com todos elementos DIV na ordem inversa
  • get(índice):elemento. Retorna um elemento de um conjunto de elementos DOM. Forma alternativa à função JQuery.
  • index(sujeito):int. Procura um elemento e retorna o índice dele. Exemplo: alert($("div").index(this))

Métodos de manipulação de dados

Estes métodos fazem manipulação de dados associados a elementos jQuery.

  • data(nome):variável. Retorna o dado armazenado sobre determinado nome em um elemento. Exemplo:
    $("div").data("v1")
  • data(nome,valor):jQuery. Retorna a um dado com determinado nome um valor. Exemplo:
    $("div").data("v1","jQuery")
  • removeData(nome):jQuery. Remove dado armazenado com determinado nome. Exemplo:
    $("div").removeData("v1")

Além destas, há alguns métodos de manipulação de dados que operam sobre filas, que são formadas por um vetor de funções.

LinguÁgil – Misturando Linguagens e Agilidade

A proliferação de tecnologias para o desenvolvimento de aplicações web vem gerando exaustivas discussões sobre qual adota-las em seus projetos. Java, PHP e Ruby estão entre as 10 linguagens de programação mais utilizadas no mundo, segundo a TIOBE Programming Community. Em paralelo, os mesmos profissionais buscam melhorar seus serviços adotando metodologias que ao mesmo tempo permitam o controle de seus projetos, gerem valor agregado aos clientes e evitem excesso de burocracia.

Diante desse cenário, os grupos AgileBahia, JavaBahia, PHPBahia e RailsBahia realizarão em Salvador a edição 2009 do LinguÁgil – Misturando Linguagens e Agilidade, parte da XII Semana de Informática da Unime. Inédito na Bahia, o evento reune algumas das principais comunidades de TI, buscando estimular aprendizado e discussões em torno de linguagens de programação e metodologias ágeis.

Local:
- Unime – Lauro de Freitas – Bahia

Palestrantes/instrutores:
- Alberto “Spock” Lemos (Globalcode), Alexandre Gomes (SEA Tecnologia), Dairton Bassi (Neurobox), Daniel Lopes (Área Criações), Felipe Ribeiro (UFCG), Felipe Rodrigues (Fratech), Henrique Landim (Partner Process) e outros

Palestras GRATUITAS – 14/11:
- Agile, Manifesto 2.0, Ruby On Rails, PHP/Frameworks, JSF 2.0/Scrum Toys, Linguagens para a JVM, Pentaho

Oficinas/Coding-Dojo – 12 e 13/11
- Coding-Dojo Agile, Java/Web com Demoiselle, Integração Contínua/Maven (a confirmar), Python (a confirmar)

Mini-cursos (R$60 a R$120)
- 12/11 – Métodos Ágeis, JSF, Portlets com Liferay, TDD/Java, Ruby
- 13/11 – XP, Scrum, Pentaho, PHP/TDD, Rails

Inscrições:
- Com desconto até 05/11
- Preços promocionais para estudantes e membros do AgileBahia / JavaBahia / PHPBahia / RailsBahia

Programação detalhada, inscrições e mais informações em www.linguagil.com.br.

Cursos gratuitos e à distância de informática e tecnologia

Algumas instituições de ensino do mundo inteiro disponibilizam cursos online nas áreas de informática e tecnologia.

Você poderá encontrar tutoriais rápidos e cursos mais profundos.

Veja mais informações neste vídeo

Introdução a JQuery

Material de aula introdutória de JQuery.

JQuery é a biblioteca javascript mais famosa do mercado. Pode ser utilizada para navegação pelo DOM, principalmente para criação de interfaces web ricas e para Ajax.

Conteúdo da aula

  • Introdução
  • Download
  • Uso da API Ajax do Google
  • Exemplos básicos
  • Adicionando funcionalidades
  • Manipulando CSS
  • Efeitos
  • Callback
  • Seleção de elementos

Este material pode ser obtido em dois formatos:

Declarações em JSP

Você pode declarar métodos e variáveis estáticas em documentos JSP. Para isto você utilizará as declarações. Estes métodos e variáveis podem ser invocados em outras partes do documento.

Para testar o uso de declarações, escreva o seguinte no início de um documento JSP:

<%! int visitas = 0;%>

No corpo do documento, insira o seguinte:

<h3>Número de acessos: <%= ++visitas %></h3>

Acesse seguidamente esta página e veja a quantidade de visitas ser incrementada.

Outra forma de obter o mesmo resultado é declarar, além da variável, um método como o seguinte:

<%!
private int qtdeVisitas() {
return ++visitas;
}
%>

Troque a exibição do resultado por

<%= qtdeVisitas() %>

E veja o resultado.

Diretivas JSP

As páginas JSP utilizam diretivas para encaminhar instruções ao servidor sobre como compilar estas páginas durante sua transformação em Servlets. As diretivas não geram nenhuma saída visível, mas é importante para sua compilação.

Existem três tipos de diretivas:

  • Página (page)
  • Inclusão (include)
  • Biblioteca de etiquetas (taglib)

As diretivas podem ser indicadas entre tags <%@ %> ou utilizando notação XML.

Diretivas de página

As diretivas de página afetam o comportamento da página em si. São 13 opções, como descritas a seguir

  • language. Especifica a linguagem de programação utilizada na página. O valor padrão implicitamente definido é “Java”. Este é, aliás, o único valor aceito para esta diretiva. Pode ser utilizada em duas formas
    <%@page language=”Java” %>
    <jsp:directive.page language=”Java” />
  • import. Equivalente ao uso do comando import em Java. Permite o uso de outras classes Java no código. Formas de uso:
    <%@page import=”java.util.*” %>
    <jsp:directive.page import=”java.util.*” />
    Esta diretiva foi utilizada no exemplo de tratamento de formulários em JSP.
  • session. Indica se a página participa de uma sessão ou não. O valor padrão é “true”. Não participar de uma sessão fará com que exista ganho de desempenho na página. Por outro lado, isto também fará com que não seja possível o uso do objeto session ou de um Javabean com escopo de sessão. Formas de uso:
    <%@page session=”false” %>
    <jsp:directive.page session=”false” />
  • buffer. Controla o tamanho do buffer da página. O padrão é “8kb”. Admite-se outros valores ou “none”. O comportamento padrão é enviar o conteúdo do buffer quando ele estiver cheio. O desempenho irá melhorar se o buffer não chegar a este ponto. Portanto, em páginas com muito conteúdo, o uso de buffer maior irá afetar positivamente o desempenho.
  • autoFlush. Indica o comportamento de esvaziamento automático do buffer. O valor padrão é “true” e indica que os dados do buffer devem ser enviados para o cliente quando o buffer estiver cheio. Caso ele receba o valor “false”, os dados do buffer somente serão enviados quando o processamento da página encerrar ou com o uso do método out.flush(). O valor não pode ser definido como “false” se a diretiva buffer estiver com o valor “none”. Formas de uso:
    <%@page autoFlush=”false” %>
    <jsp:directive.page autoFlush=”false” />
    Veja este exemplo de diretivas buffer, autoFlush e método out.Flush() em JSP.
  • isThreadSafe. O valor padrão é “true”, o que indica que o servidor J2EE pode criar threads distintas para responder diversas requisições simultâneas à mesma página. Se o valor for “false”, apenas uma requisição poderá ser atendida por vez. Formas de uso:
    <%@page isThreadSafe=”false” %>
    <jsp:directive.page isThreadSafe=”false” />
  • info. O valor atribuído a info costuma ser uma String que pode ser recuperada em algum Servlet da aplicação com o método Servlet.getServletInfo() ou em página JSP com o método getServletInfo(). Formas de uso:
    <%@page info=”Diretiva info” %>
    <jsp:directive.page info=”Diretiva info” />
  • errorPage. Indica uma URL relativa de uma página para a qual a página atual enviará exceções que podem ser obtidas com uso do objeto implícito exception. Formas de uso:
    <%@page errorPage=”/trataerro.jsp” %><jsp:directive.page errorPage=”/trataerro.jsp” />
  • isErrorPage. Se definida como “true” indica que esta página terá acesso ao objeto implícito exception, podendo lidar com esta exceção. Formas de uso:
    <%@page isErrorPage=”false” %>
    <jsp:directive.page isErrorPage=”false” />
    Veja este exemplo de uso de diretivas errorPage e isErrorPage em JSP.
  • contentType. Indica o tipo de MIME da página. O valor padrão é “text/html”. Formas de uso:
    <%@page contentType=”text/html” %>
    <jsp:directive.page contentType=”text/html” />
  • pageEncoding. Define a codificação de caracteres da página. O valor padrão é “ISO-8859-1″, mas o uso de “UTF-8″ é recomendável. Formas de uso:<%@page pageEncoding=”UTF-8″ %>
    <jsp:directive.page pageEncoding=”UTF-8″ />
  • isELIgnored. Define se expressões EL serão ignoradas (com o valor “true”) ou processadas. As expressões EL serão tratadas em outro artigo. Formas de uso:
    <%@page isELIgnored=”false” %>
    <jsp:directive.page isELIgnored=”false” />
  • extends. Indicar o nome completo de uma superclasse que esta deva herdar. Esta opção deve ser utilizada com muito cuidado, pois pode alterar muito severamente o funcionamento da página.Formas de uso:
    <%@page extends=”java.lang.Object” %>
    <jsp:directive.page extends=”java.lang.Object” />

Diretivas de inclusão

As diretivas de inclusão são utilizadas para incluir um documento externo à página. Podem ser utilizadas para inserção de conteúdo padronizado (rodapés, cabeçalhos, menus e barras laterais, por exemplo) ou mesmo para outras páginas JSP. As formas de uso são:

  • <%@include file=”cabecalho.html” %>
  • <jsp:directive.include file=”cabecalho.html” />

Diretivas de bibliotecas de etiquetas

Indica uso de bibliotecas de etiquetas customizadas. As etiquetas customizadas serão tratadas em outro artigo.

Programa de Estágio Oi 2010

A Oi está iniciando o processo de seleção do programa de estágio para nível superior para 2010. Se você também é um jovem estudante à busca de estágio ou emprego, veja o que eles divulgaram.

Estágio Oi – nível superior

  • Estágio na Oi é uma oportunidade para quem é confiável e direto para lidar com os outros, inteligente e espirituoso no dia-a-dia e tem inovação e ousadia no DNA;
  • Além do trabalho em uma área da Oi, o Programa de Estágio acompanha sua evolução e investe no seu desenvolvimento, tudo para ajudá-lo a pensar sempre fora da caixa;
  • Na Oi, Estágio é para aprender e fazer acontecer. Você tá dentro ou tá fora?
Programa de estágios da Oi

Programa de estágios da Oi

INSCREVA-SE ATÉ O DIA 25/10 – www.oi.com.br/euquerotrabalharnaoi

  • O processo seletivo começará em outubro/2009.

Para ser Estagiário Oi, você precisa:

Estar matriculado em um dos seguintes cursos:

  • Administração
  • Análise de Sistemas
  • Ciências Contábeis
  • Comunicação Social (PP, Jornalismo e Relações Públicas)
  • Direito
  • Economia
  • Engenharia de Computação
  • Engenharia de Produção
  • Engenharia de Sistemas
  • Engenharia de Telecom
  • Engenharia Elétrica
  • Engenharia Eletrônica
  • Estatística
  • Informática
  • Marketing
  • Matemática
  • Processamento de Dados
  • Psicologia
  • Pedagogia
  • Relações Internacionais
  • Sistemas da Informação

Ter previsão de formatura entre janeiro/2011 e janeiro/2012;

Se virar bem em Informática;

Ter o Inglês intermediário.

Oferecem:

  • Durante os 12 meses de Estágio, prorrogáveis por mais 12 meses, os Estagiários de nível superior recebem uma bolsa-auxílio mensal e têm direito a benefícios extras: auxílio transporte, vale refeição, seguro de vida e plano de celular específico também.

Aproveite para informar-se sobre a nova lei do estágio e prepare-se para o processo de seleção com minhas dicas para o primeiro emprego ou estágio.

Delegação de zonas no servidor de DNS bind9 em Linux Ubuntu

Há meses eu vinha inconformado com o fato de não conseguir fazer delegação de zonas de DNS no bind9, servidor de DNS do Unix e Linux e que podemos utilizar no Ubuntu para configuração de resolução de nomes de domínios, tarefa fundamental para a web.

Fazer delegação no Windows Server parecia-me ser fácil demais e não fazer o mesmo no Linux era inconveniente.

Recentemente eu encontrei a solução do Dicas-L.

Imagine que você tenha configurado a zona zona.example no arquivo /etc/bind/db.zona. É praticamente certo que este arquivo contenha linhas parecidades com

zona.example.    IN    NS    ns.zona.example.
ns.zona.example.    IN    A    192.168.0.1

Para fazer delegação de zonas para outra.zona.example basta adicionar a este arquivo linhas como

outra.zona.example    IN    NS    ns1.zona.example.
ns1.zona.example.     IN    A    192.168.0.2

E fazer a configuração da zona delegada no servidor indicado.