sábado, 3 de julho de 2010

Tema Originial do Windos XP

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/07/03/Tema-Originial-do-Windos-XP.aspx


Algumas vezes o único tema que aparece clicando com o botão direito no desktop e depois em propriedades (aba temas) é o tema clássico do Windows. O post no link abaixo mostra como arrumar isso. Resumidamente, ele fala para iniciar o serviço de temas, buscar pelo tema Luna manualmente e fazer uns fixes no registro.

Link: http://swatrant.blogspot.com/2005/09/windows-xp-default-theme-missing.html

domingo, 23 de maio de 2010

Criando um executável usando o compilador C# por prompt de comando

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/05/23/Criando-um-executavel-usando-o-compilador-C-por-prompt-de-comando.aspx


É mais simples do que parece criar uma aplicação simples usando o compilador diretamente por prompt de comando (csc.exe). Vou usar dois exemplos bem simples para ilustrar como fazer isso, um criando uma aplicação que mostra uma mensagem no prompt e outra que mostra um MessageBox no Windows.

Para seguir esses passos, é necessário ter o Microsoft .NET Framework 3.5 SDK. Ele já vem com o Visual Studio 2008 (ou com o Visual C# 2008 Express).

Nota: Pode ocorrer um erro (CS1668) durante a compilação. Para consertar, basta criar uma pasta em /lib em C:\Program Files\Microsoft SDKs\Windows\v6.0A. Para mais detalhes, clique aqui.

Para criar o programa em modo console, siga os seguintes passos:

1. Digite o código abaixo no bloco de notas:

using System;

class ClasseTeste
{
private static void Main()
{
Console.WriteLine("Testando o compilador");
}
}
2. Salve com o nome ClasseTesteWin.cs.

3. Abra o prompt de comando do Visual Studio em Iniciar >> Todos os Programas >> Microsoft Visual Studio 2008 >> Visual Studio Tools >> Visual Studio 2008 Command Prompt.

4. No prompt, navegue até o diretório onde foi salvo o arquivo no passo 2 e digite: csc /taget:exe ClasseTeste.cs

5. Dessa maneira, o programa será gerado no mesmo diretório que está a classe. Use o prompt para abrir o programa e ver o resultado (ClasseTeste.exe).


Para criar o programa para Windows, a idéia é a mesma. Como exemplo, use o código abaixo e na hora de compilar, troque o nome da classe e o target para winexe.

using System;
using System.Windows.Forms;

class ClasseTesteWin
{
private static void Main()
{
MessageBox.Show("Testando o compilador");
}
}
O programa acima irá apresentar um MessageBox com uma mensagem.

Explorando um Assembly .NET

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/05/23/Explorando-um-Assembly-NET.aspx


É possível ver o código assembly, por exemplo, de arquivos .exe e .dll feitos em .NET. O Visual Studio 2008 trás uma ferramenta para explorar o código assembly de uma aplicação: Intermediate Language Disassembler (ildasm.exe). Para usá-la basta acessar Iniciar >> Todos os Programas >> Microsoft Visual Studio 2008 >> Visual Studio Tools >> Visual Studio 2008 Command Prompt. Já no prompt, digite ildasm.

Apesar do ildasm ser um bom utilitário para acessar o código assembly de uma aplicação, ele não mostra o código feito na linguagem de programação usada (C#, VB.NET, C++, etc). Para isso, existe uma ferramenta free chamada .NET Reflector que tem essa função. O programa é portable, então não existe a necessidade de instalação. Para baixá-lo, acesse http://www.aisto.com/roeder/.

domingo, 16 de maio de 2010

Criação de controles personalizados com JavaScript

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/05/16/Criacao-de-controles-personalizados-com-JavaScript.aspx


Outro exemplo do Simply JavaScript feito da minha maneira. Esse exemplo cria um controle de formulário personalizado usando um pouco de CSS e JavaScript.

Clique aqui para baixar o exemplo.

terça-feira, 4 de maio de 2010

Validação de campos de texto de formulários com JavaScript

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/05/03/Validacao-de-campos-de-texto-de-formularios-com-JavaScript.aspx


Esse exemplo segue também o mesmo livro de sempre: Simply JavaScript, porém escrito do meu jeito.

O interessante é que basta adicionar uma nova variável com uma nova expressão regular e uma mensagem de erro correspondente, sem mudar mais nada no código JavaScript.

Clique aqui para fazer o download do exemplo.

sábado, 1 de maio de 2010

Animações em JavaScript

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/05/01/Animacoes-em-JavaScript.aspx


O livro Simply JavaScript tem alguns exemplos de animação. Fiz esses exemplos do meu jeito, sendo que alguns ficaram muito parecidos.

Esses exemplos incluem movimentação do background de uma div, movimentação de uma div com efeito e um menu sanfona animado.

Clique aqui para fazer o download.

sexta-feira, 26 de fevereiro de 2010

Acessando o código fonte de um add-on do Firefox

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/02/26/Acessando-o-codigo-fonte-de-um-add-on-do-Firefox.aspx


Sempre que a gente baixa um add-on do Firefox ele está em .xpi. Arquivos .xpi assim como arquivox .jar na verdade são arquivos .zip. Para acessar o fonte desse tipo de arquivo basta transformá-lo em .zip (trocando o nome) e depois descompactar.

Geralmente o código está dentro do diretório content.

Acessando sites temporariamente off-line

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/02/26/Acessando-sites-temporariamente-off-line.aspx


Existe um site que armazena vários outros em cache. Existem duas maneiras de usar:

  1. Acessando a página http://www.coralcdn.org e digitando o endereço na caixa de texto e clicando em Go.
  2. Entrando em algum site usando .nyud.net no final da url. Por exemplo: http://www.ni.com.nyud.net ou http://www.google.com.nyud.net.

sexta-feira, 19 de fevereiro de 2010

JavaScript: Compilando scripts do Greasemonkey em .xpi (add-on do Firefox)

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/02/19/JavaScript-Compilando-scripts-do-Greasemonkey-em-xpi-(add-on-do-Firefox).aspx


Achei bem legal essa página: http://blog.arpitnext.com/greasemonkey-compiler-xpi/

É bem simples de usar. Basta preencher o formulário e colocar o script no mesmo padrão do greasemonkey que ele vai complicar para .xpi. É bom pra criar scripts que rodem nas páginas independentes do greasemonkey.

Quando for fazer uma atualização, use o mesmo GUID, assim o próximo add-on compilado irá sobrescrever o que já existe no navegador. Bem legal!

JavaScript: attachEvent e o seu problema com this no IE

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/02/19/JavaScript-attachEvent-e-o-seu-problema-com-this-no-IE.aspx


Nesse post estou anexando um exemplo de dica no link, o qual usa o attachEvent e um this dentro da função chamada por ele. É mais um exemplo do livro Simply JavaScript. Para baixar, clique aqui.

O attachEvent, usado pelo Internet Explorer é diferente do addEventListener, usado pelos navegadores que seguem os padrões W3C no tratamento de eventos. O livro Simply JavaScript não explica muito bem como ele faz para tratar esse assunto, ele simplesmente mostra um script e diz que é complicado para explicar. Aqui também não vou explicar, mas sim mostrar o caminho que eu fiz para entender esse assunto.

1. Para entender como funciona o this tanto no attachEvento quanto no addEventListener, eu li o conteúdo desse link: http://www.quirksmode.org/js/this.html

2. Esse outro link reforça o entendimento do this no JavaScript: http://trephine.org/t/index.php?title=Understanding_JavaScript's_this_keyword

3. Após entender o que está escrito nos links acima, pra finalizar é preciso entender o método call, assim será possível entender o código do livro. Essa página explica bem isso: http://trephine.org/t/index.php?title=JavaScript_call_and_apply


É isso aí, esse foram os passos que usei pra entender essa questão. De começo não parecia simples e foi difícil encontrar esses links, mas agora parece algo bem comum e fácil de usar.

sábado, 6 de fevereiro de 2010

IIS e WAMP na mesma máquina

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/02/06/IIS-e-WAMP-na-mesma-maquina.aspx


Ambos usam a porta 80 como default. Para usar os dois ao mesmo tempo, uma idéia é mudar a porta default do WAMP. Para isso:

  1. Abra o arquivo C:\wamp\bin\apache\apache-version\conf\httpd.Conf
  2. Mude onde estiver Listen 80 para uma outra porta (por exemplo, Listen 82)
  3. Em c:\wamp, nos arquivos wampmanager.ini e wammanager.Tpl, mude todas as instâncias de http://localhost para http://localhost:82 (a mesma porta usada no passo 2)

domingo, 24 de janeiro de 2010

JavaScript: Event Bubbling

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/01/24/JavaScript-Event-Bubbling.aspx


Nesse post estou anexando um exemplo de como os eventos em JavaScript borbulham e falando, também, sobre o processo de captura.

O exemplo é para os navegadores que seguem o padrão W3C (como o Firefox), já que no IE os eventos não passam por um processo de captura. No Firefox isso é opcional, o que é mostrado no exemplo, através da função addEventListener.

Clique aqui para baixar o exemplo.

domingo, 3 de janeiro de 2010

JavaScript: Tabelas Listradas

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/01/03/JavaScript-Tabelas-Listradas.aspx


Usei parte do código que eu fiz lendo o livro "Simply JavaScript" para fazer esse exemplo. A idéia é fazer com que não seja necessário colocar uma classe CSS a cada linha que tenha uma cor diferente. O JavaScript se encarrega de colocar essa classe a cada duas linhas.

O método getElementsByClass(classe) não existe nativamente em JavaScript, então ele é implementado dentro do código.

Faça o download do exemplo.

sexta-feira, 1 de janeiro de 2010

iPhone 2G: Jailbreak/Desbloqueio do Firmware 3.1.2

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2010/01/01/iPhone-2G-JailbreakDesbloqueio-do-Firmware-312.aspx


O meu iPhone foi comprado de uma outra pessoa, que já tinha comprado um 3G. Ele me disse que tinha comprado nos Estados Unidos. O desbloqueio para o iPhone 3G ou 3GS com o firmware 3.1.2 é bem simples de encontrar. Para o 2G também não é complicado quando se é usuário de Mac. Mas no meu caso foi um pouquinho mais complicado, mas também não tanto assim.

Abaixo, descrevo os passos exatos que fiz para instalar o firmware, fazer o jailbreak e depois fazer o desbloqueio (pelo que li, tudo deve ser feito exatamente nessa ordem). Fiz tudo seguindo os passos dessa página do site Redmond Pie: http://www.redmondpie.com/jailbreak-unlock-iphone-2g-3.1.2-firmware-with-blackra1n-rc3-9140086/

1. Baixei a versão 3.1.2 pelo iTunes clicando em Atualizar;

2. Baixei o blackra1n (http://www.blackra1n.com/), rodei ele e cliquei no único botão que aparece (os passos estão nesse link: http://www.redmondpie.com/jailbreak-iphone-3.1.2-firmware-with-blackra1n-rc3-9140079);

Obs.: No meu iphone, depois do passo 2, tudo já parecia estar funcionando normal. No site Redmond Pie, ainda são usados os seguintes passos:

3. Será instalado no iphone um app chamado "blackra1n". Rodar e instalar o Cydia;

4. Baixar, no Cydia, um aplicativo chamado "BootNeuter". Caso não encontre, ele está no repositório "BigBoss & Planet-iPhones";

5. O tutorial pede para reiniciar o iPhone e assim que rodar o BootNeuter, definir o seguinte:

Version: 4.6
Neuter: ON
FakeBlank: OFF
Unlock: ON

6. Clicar em Flash.

Mesmo parecendo que estava tudo normal já, eu segui todos os passos depois do passo 2. O pior é que parecia que não estava nada mais funcionando, mas provavelmente foi um problema com a operadora, durante o réveillon (o que é muito comum).