sábado, 31 de maio de 2008

Paginação com PHP

Este código é utilizado para fazer paginação, utilizando MySQL (sintaxes SQL) e PHP. Coloque no início do código PHP.


# --- Início dos critérios para a paginação.
# Quantidade de itens por página.
$numReg = 20;

# Se não foi setada a página, assume-se como 0.
if (!isset($pg))
{
$pg = 0;
}

# De onde começa a seleção na base de dados.
$inicial = $pg * $numReg;

# Faz o SELECT na base de dados.
$cPaginacao = "SELECT * from tabela LIMIT $inicial, $numReg";
$qPaginacao = mysql_query($cPaginacao);

$cTotal = "SELECT * FROM tabela";
$totalBusca = mysql_num_rows(mysql_query($cTotal));
# --- Fim dos critérios para a paginação.

A segunda parte é a paginação propriamente dita. Inclua o código abaixo na área em que deseja que apareça a numeração. A estrutura que eu coloquei - os números dentro de uma tabela - foi só para manter o alinhamento vertical, pode ser removida sem problemas ou adaptada às necessidades.

# --- Início da paginação.
$quantPg = ceil($totalBusca/$numReg);
$quantPg++;
echo "<table border='0' cellspacing='0' cellpadding='0'>";
echo "<tr valign='middle'>";
echo "<td>Páginas </td>";
echo "<td>";

# Verifica se está na primeira página, se não estiver,
# libera o link para Anterior.
if ( $pg > 0)
{
echo "<a href=".$PHP_SELF."?pg=".($pg-1).">";
echo "Anterior";
echo "</a>";
}
echo "</td>";
# Faz aparecer os números das página entre o ANTERIOR e PRÓXIMO.
echo "<td>";
for($iPg = 1; $iPg < $quantPg; $iPg++)
{
# Verifica a página que o navegante está e retira o link
# do número para identificar visualmente.
if ($pg == ($iPg-1))
{
echo " [$iPg] ";
} else
{
$iPg2 = $iPg-1;
echo " <a href=".$PHP_SELF."?pg=$iPg2>";
echo "<b>$iPg</b>";
echo "</a> ";
}
}
echo "</td>";
echo "<td>";
# Verifica se está na ultima página, se não estiver ele
# libera o link para próxima.
if (($pg+2) < $quantPg)
{
echo "<a href=".$PHP_SELF."?pg=".($pg+1).">";
echo "Próxima";
echo "</a>";
}
echo "</td>";
echo "</tr>";
echo "</table>";
# --- Fim da paginação.

Não foi aplicada nenhuma folha de estilo aos links ou números das páginas. Sei que você pode fazer isso por conta própria! Após implementada a paginação, você adapta ela visualmente às suas necessidades.

Embora você possa acessar máquinas Windows remotamente usando o VNC, o Windows possui um protocolo próprio de acesso remoto, o RDP, que é mais eficiente que o VNC (sobretudo via Internet) e permite que vários clientes abram seções independentes no mesmo servidor, o que é impossível ao usar o VNC for Windows.

O maior obstáculo é a questão do licenciamento, pois além da licença do servidor, você precisa de licenças para os clientes. As máquinas Windows XP também podem ser acessadas remotamente, mas sem suporte a várias conexões simultâneas (quando você se loga remotamente, ele coloca a seção local em espera e ao se logar localmente ele fecha a conexão remota), enquanto nas versões server o número de seções simultâneas é limitado apenas ao hardware do servidor e o número de licenças.

Para ativar o acesso remoto numa máquina Windows, clique com o botão direito no "Meu Computador" e, no menu "Propriedades do Sistema", acesse a aba "Remoto"e marque a opção "Área de trabalho remota".

Clique no botão "Selecionar usuários remotos" e indique quais logins de acesso poderão ser usados remotamente. Por padrão, apenas o Administrador e o usuário logado atualmente podem acessar.

É importante enfatizar que apenas os usuários com senhas definidas podem acessar as máquina remotamente. Todos os logins sem senha são automaticamente recusados. Você pode definir as senhas na seção "Contas de usuário" do Painel de Controle.

Em caso de problemas na ativação, acesse a opção "Ferramentas administrativas> Serviços" do Painel de Controle e verifique se os serviços "Alocador RemoteProcedure Call (RPC)" e "Serviços de terminal" estão ativados.

Com o acesso remoto ativado na máquina Windows, vamos ao tema central deste tópico que é justamente como acessá-la remotamente a partir de clientes Linux.

Esta solução é muito usada por empresas que migram as estações de trabalho para Linux, mas precisam manter algumas cópias do Windows para rodar alguns aplicativos específicos. Ao invés de manter máquinas com o Windows, ou rodá-lo via VMware, pode fazer mais sentido manter um servidor Windows na rede, com o acesso remoto ativado e permitir que os usuários abram seções remotas quando necessário.

Nos clientes Linux, usamos o rdesktop, que pode ser tanto utilizado via linha de comando, quanto através do TSclient, Krdc ou outra das interfaces de acesso remoto que oferecem suporte a ele.

O uso mais simples para o rdesktop é simplesmente passar o IP ou domínio da máquina remota como argumento, como em:

$ rdesktop 192.168.0.1

O problema é que ele vai utilizar todas as opções default, abrindo uma tela de 800x600 com 256 cores. O protocolo RDP v5 usado no XP e 2003 server, suporta o uso de 16 bits de cor. Para ativar o recurso, inclua as opções "-5 -a 16" (o -5 é a versão do protocolo e o -a 16 especifica os bits de cor), como em:

$ rdesktop -5 -a 16 192.168.0.1

Para especificar a resolução, use a opção "-g", seguida pela resolução desejada, como em:

$ rdesktop -5 -a 16 -g 1000x700 192.168.0.1

Ao especificar a resolução, você pode usar qualquer número que adapte a janela ao seu desktop. Não é necessário se limitar às resoluções padrão. Para abrir a seção em tela cheia, use a opção "-f", como em:

$ rdesktop -5 -a 16 -f 192.168.0.1

Pressione "Ctrl+Alt+Enter" para chavear entre o modo fullscreen e janela.

Ao acessar uma máquina XP ou 2003 server, você pode também redirecionar o som para o cliente, de forma que os sons dos aplicativos sejam tocados usando a placa de som e caixas do seu micro, ao invés de no servidor. Funciona mesmo que o servidor não possua placa de som.

Este é um recurso que deve ser usado com cautela em redes com muitos clientes, ou via Internet, pois gera um fluxo de aproximadamente 800 kbits para cada cliente usando o som. Para ativar, adicione a opção "-r sound:local=/dev/dsp", como em:

$ rdesktop -5 -a 16 -r sound:local=/dev/dsp 192.168.0.1

Note que o /dev/dsp indica o dispositivo da placa de som no cliente. Se não funcionar da primeira vez, verifique as permissões de acesso (no cliente). Caso necessário, abra as permissões usando o comando chmod 666 /dev/dsp (como root, no cliente).

É possível também "compartilhar" pastas no cliente, de forma que os arquivos sejam acessados dentro da seção remota. Você pode, por exemplo, editar documentos numa pasta dentro do seu home, usando os programas instalados no servidor. Para isso, adicione a opção -r disk:nome=pasta, onde o "nome" indica como ele será visto dentro da seção e o "pasta" é a pasta no cliente que está sendo "compartilhada". Esta opção pode ser usada em combinação com as anteriores, como em:

$ rdesktop -5 -a 16 -r sound:local=/dev/dsp -r disk:arquivo=/home/joao 192.168.0.1

As pastas compartilhadas aparecem dentro do "Meu Computador - Outros", como se fossem compartilhamentos de rede montados.

Para compartilhar o CD-ROM, pendrive ou disquete, basta indicar a pasta onde eles ficam acessíveis, como em -r disk:cdrom=/mnt/cdrom ou -r disk:pendrive=/mnt/pendrive. A observação neste caso é que você vai sempre precisar montar o CD-ROM ou pendrive no cliente para acessá-lo dentro da seção remota. O comando simplesmente compartilha os arquivos acessíveis dentro da pasta.

É possível ainda mapear a impressora, de forma que você consiga imprimir na impressora instalada no seu cliente Linux de dentro dos aplicativos na seção remota. Se os clientes e o servidor estão na mesma rede local, é mais simples compartilhar a impressora via Cups ou Samba e instala-la no servidor. O mapeamento de impressoras do RPD, por sua vez, permite usar as impressoras quando isto não é uma opção, como ao acessar um servidor via Internet.

Em primeiro lugar, a impressora deve estar instalada no cliente e você deve conseguir imprimir nela usando o lpr. Nas distribuições derivadas do Debian, instale o pacote "cupsys-bsd" (que substitui o lpr), caso contrário nada vai funcionar.

Ao conectar no servidor, é preciso especificar o nome da impressora, da forma como é vista pelos aplicativos no cliente e também o driver Windows (esta é a parte mais complicada...) que o servidor vai usar na hora de enviar trabalhos para ela, como em:

$ rdesktop -5 -a 16 -r printer:e230="Lexmark Optra E+ (MS)" 192.168.0.1

Para descobrir o driver da Impressora no Windows, abra o menu de instalação de impressora, indique o fabricante e copie o nome que aparece no menu da esquerda:

No caso de impressoras paralelas, você pode também redirecionar a porta /dev/lp0. Neste caso, você poderia instalar a impressora dentro da seção remota, como se ela estivesse instalada no próprio servidor. Neste caso, adicione o parâmetro -r lptport:LPT1=/dev/lp0. É possível ainda redirecionar portas seriais, usando a opção -r comport:COM1=/dev/ttyS0.

Como viu, o rdesktop suporta um grande número de opções, o que torna os comandos de acesso bastante longos. É aí que entra o TSclient, que permite especificar as opções através de uma interface muito mais amigável.

Ele está disponível em várias distribuições; nas derivadas do Debian, você pode instala-lo via apt-get. A página oficial é a http://gnomepro.com/tsclient/

Por: Carlos E. Morimoto

Como habilitar o corretor ortográfico para o LaTeX usando o TeXnicCenter.

  1. Tools / Options / Aba Spelling / Clique no link "Download Directories"
  2. Baixe o idioma desejado
  3. Salve e descompacte no diretório onde o TeXnicCenter foi instalado
    Ex.: C:\Arquivos de programas\TeXnicCenter\Language
  4. Reinicie o TeXnicCenter
  5. Tools / Options / Aba Spelling / Clique no link "Download Directories"
  6. Em "Language" selecione o idioma desejado
  7. Configure como desejado!

Look and Feel é basicamente a aparência que sua aplicação irá tomar, definindo a forma como os componentes irão ser apresentados na tela.

try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
this.pack();
} catch(Exception e) {
e.printStackTrace();
}
SwingUtilities.updateComponentTreeUI(this) serve para atualizar os componentes caso eles já estejam criados. Caso os componentes ainda não foram inicializados, esta linha é desnecessária, juntamente com this.pack().

Alguns LookAndFeell's
com.sun.java.swing.plaf.gtk.GTKLookAndFeel (padrão GTK+)
javax.swing.plaf.metal.MetalLookAndFeel (Metal)
com.sun.java.swing.plaf.windows.WindowsLookAndFeel (Windows)
com.sun.java.swing.plaf.motif.MotifLookAndFeel (Motif)
javax.swing.plaf.mac.MacLookAndFeel (Mac)
Alguns LookAndFeel's podem gerar exceções por não existirem ou não estarem instalados no sistema ou não serem suportados em determinada plataforma. Alguns layouts, dependendo da plataforma, podem apresentar formatos diferentes em determinados componentes, como botões e caixas de texto, fazendo com que a aparência da aplicação fique desorganizada.

JDance é um site com vários LAF disponíveis para download.

Vários links sobre LAF:

Download de dois arquivos em Java para fazer a captura da imagem no monitor (Print Screen).

ScreenCapture.java

ScreenShot.java

Arquivo em Java para conectar em um banco de dados MS Access via ODBC.

JDBCapp.java

Arquivo contendo rotina para redimensionar uma imagem usando Java.

Miniatura.java

Existem várias maneiras de resolver - ou pelo menos tentar - o problema de acentuação no AJAX. Eis algumas:

  1. Na função em PHP que é realizada a ação, o retorno deve ser dado por
    print(urlencode($campo["ds_texto"]));

    Isso irá codificar o resultado que vem da pesquisa SQL. Na função AJAX, após a variável texto ter recebido a resposta responseText, colocar:
    texto=texto.replace(/\+/g," ");
    texto=unescape(texto);

    Isso descodificará o texto.

  2. A segunda forma é colocar na função em PHP que é realizada a ação, o seguinte item:
    header("Content-Type: text/html; charset=ISO-8859-1",true);
    Isso fará com que a codificação seja definida como ISO-8859-1.

  3. Outra forma não tão segura é colocar
    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" /> na página onde será exibido o resultado.

  4. Outra forma é alterar a configuração do arquivo httpd.conf do Apache. Isso fica para outra hora!


Se Murphy ajudar é capaz que tudo isso funcione. Talvez nenhum funcione, talvez funcione parcialmente. Firefox e Internet Explorer nunca se deram muito bem, há algumas desavenças! :D

A solução que funcionou pra mim foi a 2. Inseri apenas o header na chamada PHP e deu certo, tanto pro Firefox quanto no Internet Explorer e Opera.

Tem que ficar atento quanto ao cache. Geralmente se altera uma chamada ou função e ela não reflete em solução. Reiniciar o computador, dasabilitar o cache pelas páginas ou limpar o cache de vez em quando ajuda!

São usadas expressões latinas para diversas finalidades, uma delas é citar referências bibliográficas.

A expressão latina apud significa citado por, conforme, segundo. É utilizada quando se faz referência à uma fonte secundária.

De acordo com a NBR 10520 (Norma Brasileira) da Associação Brasileira de Normas Técnicas - ABNT (2001) -, pode-se utulizar a expressão latina apud para citar um documento ao qual não se teve acesso direto, mas que foi citado em outra obra (à qual, naturalmente, se teve acesso). Desta forma, a citação é chamada de indireta.

Alguns exemplos de uso de apud:

"Segundo Cardoso (2000 apud MALDONADO, 2003, p. 40), [...]"
"[...] (CARDOSO, 2000 apud MALDONADO, 2003, p. 40)."
"[...] (MARTINS, 1986 apud SOUZA, 1991, p. 20-21)."

Nas referências colocam-se, se for possível, as duas obras envolvidas na citação indireta.

Atenção: deve-se, na medida do possível, para garantir a exatidão da informação, procurar usar citações diretas. Ou seja, deve-se procurar obter as informações das fontes originais sempre que estas estiverem disponíveis, deixando para usar a expressão apud apenas para obras de difícil acesso.

Adaptado de TCC Gravataí

Zune é um tema para Windows XP, parecido com o Royale Noir, a diferença é que oferece mais opções de cores.

O autor disponibiliza no site da devianART um screenshot do tema com as várias opções de cores.

zune.jpg


O tema pode ser baixado no site da devianART.

Caso haja problema na instalação do tema, leia este tutorial - que não é do Zune mas sim do Royale Noir, mas o funcionamento é o mesmo - que é bem provável que encontre a solução.

quinta-feira, 29 de maio de 2008

Firefox - Download Day

Para não fugir das minhas raízes e ajudar a "mão que me alimenta" peço que quem chegar até aqui participe do:


Download Day 2008