jun 30

Tenho uma máquina com o Ubuntu instalado e o vmware player rodando o Windows. Depois que fiz algumas atualizações no sistema algumas teclas (/, ?, Insert, Delete, Home, End …) simplesmente pararam de funcionar quando executava a máquina virtual. Pelo que descobri, o problema é que o VMware não encontra o mapeamento de teclado em uso. Para resolver, edite o arquivo ~/.vmware/preferences e adicione as seguintes linhas ao final do aquivo

xkeymap.usekeycodeMapIfXFree86 = true
xkeymap.keysym.slash = 0x073
xkeymap.keycode.108 = 0x138 # Alt_R
xkeymap.keycode.106 = 0x135 # KP_Divide
xkeymap.keycode.104 = 0x11c # KP_Enter
xkeymap.keycode.111 = 0x148 # Up
xkeymap.keycode.116 = 0x150 # Down
xkeymap.keycode.113 = 0x14b # Left
xkeymap.keycode.114 = 0x14d # Right
xkeymap.keycode.105 = 0x11d # Control_R
xkeymap.keycode.118 = 0x152 # Insert
xkeymap.keycode.119 = 0x153 # Delete
xkeymap.keycode.110 = 0x147 # Home
xkeymap.keycode.115 = 0x14f # End
xkeymap.keycode.112 = 0x149 # Prior
xkeymap.keycode.117 = 0x151 # Next
xkeymap.keycode.78 = 0x46 # Scroll_Lock
xkeymap.keycode.127 = 0x100 # Pause
xkeymap.keycode.133 = 0x15b # Meta_L
xkeymap.keycode.134 = 0x15c # Meta_R
xkeymap.keycode.135 = 0x15d # Menu

Inicie novamente o vmware player e veja se funcionou. Obs.: Essas configurações são para teclados ABNT2


View this Post in: English French Italian Spanish

mai 07

// Place text over center of icon; they both occupy the same space
button.setVerticalTextPosition(SwingConstants.CENTER);
button.setHorizontalTextPosition(SwingConstants.CENTER);

// Place text above icon
button.setVerticalTextPosition(SwingConstants.TOP);
button.setHorizontalTextPosition(SwingConstants.CENTER);

// Place text below icon
button.setVerticalTextPosition(SwingConstants.BOTTOM);
button.setHorizontalTextPosition(SwingConstants.CENTER);

// Place text to the left of icon, vertically centered
button.setVerticalTextPosition(SwingConstants.CENTER);
button.setHorizontalTextPosition(SwingConstants.LEFT);

// Place text to the left of icon and align their tops
button.setVerticalTextPosition(SwingConstants.TOP);
button.setHorizontalTextPosition(SwingConstants.LEFT);

// Place text to the left of icon and align their bottoms
button.setVerticalTextPosition(SwingConstants.BOTTOM);
button.setHorizontalTextPosition(SwingConstants.LEFT);

// Place text to the right of icon, vertically centered
button.setVerticalTextPosition(SwingConstants.CENTER);
button.setHorizontalTextPosition(SwingConstants.RIGHT);

// Place text to the right of icon and align their tops
button.setVerticalTextPosition(SwingConstants.TOP);
button.setHorizontalTextPosition(SwingConstants.RIGHT);

// Place text to the right of icon and align their bottoms
button.setVerticalTextPosition(SwingConstants.BOTTOM);
button.setHorizontalTextPosition(SwingConstants.RIGHT);

View this Post in: English French Italian Spanish

mai 06

Hoje eu instalei o KDevelop no meu Ubunto 7.3, criei um projeto simples em c++ (um Hello World) compilei mas quando fui executar deu o seguinte erro:

/bin/sh/:konsole :not found
***Exited with status 127

A solução para este erro é bastante simples:

sudo apt-get install konsole


View this Post in: English French Italian Spanish

jan 03

Muitas vezes precisamos executar programas via linha de comando e estes programas não estão disponíveis diretamente, ou seja, é preciso entrar com todo o diretório onde se encontra o programa para executa-lo. Por exemplo: para executar o compilador csharp csc, é preciso entrar dentro do diretório C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 caso contrário o prompt do DOS não encontrará o programa.

Para configurar o path clique com o botão direito no ícone de “Meu Computador” e entre na opção “Propriedades”. Abra a guia “Avançado”. Clique no botão “Variáveis de Ambiente”. Na lista que aparecerá abaixo (Variáveis do Sistema), procure pela variável de “Path”, selecione-a e clique em editar. Adicione agora o caminho completo de onde se encontra o programa que você quer adicionar ao path. Obs.: Não apague os outros caminhos que já estão lá, apenas adicione os novos separando-os por ponto e vírgula.

Para conferir se está tudo certo, abra o pronto de comando e digite o nome do programa que você quer executar. Você também poderá digitar path para ver todos os caminhos já adicionados na variável do sistema.


View this Post in: English French Italian Spanish

dez 13

Este erro, ao contrário do que os outros pensam, não é do Chrome ou do Safari e sim do próprio ASP.NET.

Para gerar o código JavaScript do menu, o ASP.NET verifica qual é o browser do cliente, e se ele suporta ou não JavaScript. Acontece que esta verificação falha em alguns browsers como o Sarafi e consequentemente o Chrome (pois o Chrome foi baseado no Safari), e o  ASP.NET então devolve um código que não funciona. Para corrigir isto devemos “forçar” o ASP.NET a executar o JavaScript, para isto setamos a propriedade Page.ClientTarget com o valor “uplevel”. Assim informamos que o cliente possui um moderno “uplevel” browser.

Devemos fazer isto para todas as páginas que utilizarão o menu. O código deverá estar dentro do evento Page_Init da página. Ex:

     protected void Page_PreInit(object sender, EventArgs e)
    {
        if (Page.Request.ServerVariables["http_user_agent"].ToLower().Contains("safari"))
        {
            Page.ClientTarget = "uplevel";
        }
    }

Neste código, fazemos uma verificação se o user_agent possui a palavra safari, que servirá também pro chrome  e, se sim, forçamos o uplevel.

Para evitar de “copiar” e “colar” o mesmo código em todas as páginas, você poderá aproveitar o que há de melhor da programação orienteda a objetos, a herânça. Para isto crie uma classe herdando de System.Web.UI.Page e coloque este código nela. Para todas as suas páginas, ao invés de herdar diretamente de System.Web.UI.Page, você herda da classe que acabou de criar.


View this Post in: English French Italian Spanish

nov 19

Resolvi aprender outra linguagem de programação pra variar um pouco. :-)
Vira e mexe escuto alguém falando de Python, Ruby entre outras linguagens interpretadas e eu nem faço idéia de como se programa ou executa programas feitos nessas linguagens. Bom, não sabia. Andei lendo um pouco e vi que é a coisa é bem simples. Resolvi começar pelo Python. Para aqueles que estão começando do zero como eu, recomendo a leitura do artigo Aprenda a Programar. É uma pena o artigo não ter uma continuidade mas já dá uma boa idéia de com funciona tudo. Explica, por exemplo, como executar o Python no ambiente WEB. Minha surpresa foi que ele roda com o Apache através de um programa em cgi. Seguindo este artigo eu criei o meu primeiro programa em cgi, que a gente tanto houve falar quando se trata de programação web. Bom, fiquei bem animado com a idéia, e daqui pra frente devo publicar alguns posts relacionados ao Python. Aguardem e confiram.


View this Post in: English French Italian Spanish

out 22

Para obter informações de um arquivo tais como data e hora de criação, modificação, acesso entre outros, utilizamos a classe FileInfo. Esta classe, presente no namespace System.IO possui as propriedades CreationTime, LastWriteTime e LastAccessTime que retorna a informação de data e hora que o arquivo foi criado, modificado e aberto. Veja um exemplo de como utilizar a classe

FileInfo file_info = new FileInfo("C:\\meu_arquivo.txt");

string Criado = file_info.CreationTime.ToString("dd/MM/yyyy HH:mm:ss");
string Modificado = file_info.LastWriteTime.ToString("dd/MM/yyyy HH:mm:ss");
string Acessado = file_info.LastAccessTime.ToString("dd/MM/yyyy HH:mm:ss");

Se preferir pode fazer o download do projeto abaixo com um exemplo que mostra estas e outras propriedades da classe FileInfo.
Exemplo de uso da classe FileInfo (46)


View this Post in: English French Italian Spanish

out 20

Avatares são pequenas imagens que identificam uma pessoa em um blog ou forum de discussão. Quem atualizou o Wordpress para a versão 2.5 deve ter reparado nas opções de configuração de avatares no menu “Configurações - Discussão“. Lá existe a opção de “Mostrar avatares“, no entanto é preciso também adicionar uma linha no arquivo de seu template para poder exibi-los.

Para mostrar por exemplo os avatares das pessoas que comentam no se blog, abra o arquivo comments.php e adicione a linha

echo get_avatar( get_comment_author_email(), $size = '36' );

Obs.: Este código deve estar dentro do bloco de código:

foreach ($comments as $comment)

Os avatares serão exibidos baseado no e-mail da pessoa que comentou (get_comment_author_email()). Se ela possuir um registro no site do Gravatar será exibido o seu avatar, caso contrário será exibido a imagem padrão que pode ser uma imagem aleatória, basta configurar no menu do wordpress.

Veja mais sobre avatar no Wordpress em http://weblogtoolscollection.com/archives/2008/03/03/gravatars-and-wordpress-25/ ou
http://codex.wordpress.org/Using_Gravatars


View this Post in: English French Italian Spanish

out 19

Já mostrei aqui como obter o dia da semana por extenso no charp. Para poder escrever a data completa no formato “[dia da semana], [dia] de [mês] de [ano]” basta obter separadamente cada uma das partes como no exemplo a seguir.

        CultureInfo culture = new CultureInfo("pt-BR");
        DateTimeFormatInfo dtfi = culture.DateTimeFormat;

        int dia = DateTime.Now.Day;
        int ano = DateTime.Now.Year;
        string mes = culture.TextInfo.ToTitleCase(dtfi.GetMonthName(DateTime.Now.Month));
        string diasemana = culture.TextInfo.ToTitleCase(dtfi.GetDayName(DateTime.Now.DayOfWeek));
        string data = diasemana + ", " + dia + " de " + mes + " de " + ano;

        Response.Write(data);

O método ToTitleCase da classe TextInfo serve para converter a primeira letra da palavra para maiúsculo e os métodos GetMonthName e GetDayName da classe DateTimeFormatInfo servem para pegar o nome do mês e do dia da semana respectivamente.

No final a variável data conterá o dia por extenso. Por exemplo:

Domingo, 19 de Outubro de 2008

Para os dias menores que 10, se você preferir escreve-los com o zero antes basta aplicar o método ToString a variável dia.

string data = diasemana + ", " + dia.ToString("00") + " de " + mes + " de " + ano;

View this Post in: English French Italian Spanish

out 17

Para poder acessar as configurações do roteador “D Link DI 524″, basta entrar com o IP 192.168.0.1 em um navegador web. Por padrão o login de acesso é admin (todo minúsculo) e a senha você deixa em branco. Em alguns casos não revolve você pressionar a tecla enter, tem que clicar no botão mesmo. Se com este usuário e senha você não conseguir acessar tente resetar o roteador. Para resetar basta pressionar com um objeto pontiagudo o buraquinho bem pequeno que tem abaixo dele. Tenha cuidado ao resetar pois todas as configurações feitas serão perdidas e restauradas para o padrão de fábrica incluindo o usuário e a senha de acesso.


View this Post in: English French Italian Spanish