.NET – Obtendo a versão do Framework

Uma rapidinha!

Para que precisamos disso? Nem me perguntem. Por uma necessidade de um dos sistemas na empresa, precisamos fazer uma verificação da versão do framework em que o assembly estaria executando.

Em primeiro instante, pareceu ser algo monstruoso, mas, como de costume, o .NET Framework não nos decepcionou. A linha que traz o dado que queríamos resume-se a seguinte:

System.Environment.Version.ToString()

A linha devolve a versão exata do Framework em que o assembly está executando. É curioso ver o código funcionando em diferentes versões. Tente compilar o programa abaixo em diferentes versões do compilador csc.exe:

using System;
 
public class getFrameworkVersion
{
	public static void Main(string[] args)
	{
		Console.WriteLine(Environment.Version.ToString());
	}
}

Claro, o objeto Version é bem mais completo do que isso. Para ver sua referência completa, é só acessar o link abaixo:

http://msdn.microsoft.com/en-us/library/system.environment.version.aspx

Dicas – Remova todos os Emoticons Personalizados o Messenger

Windows Live MSN Messenger
Windows Live MSN Messenger

A dúvida veio de um familiar. Na necessidade de querer dar uma limpada em seus emoticons no MSN, ou Windows Live Messenger, veio a dúvida se era possível excluir aquele monte de coisas que foram adicionadas com o tempo, mas que acabaram ficando desorganizadas.

Claro que existe o tradicional recurso excluir, mas um a um, quando a quantidade é relativamente grande, pode se tornar um pesadelo. Como fazer então para excluir todos os Emoticons personalizados de uma só vez? É só fazero seguinte:

Navegue até a pasta <drive>:\Documents and Settings\<Windows_LoginId>\Local Settings\Application
Data\Microsoft\Messenger\<Messenger_UserId>\ObjectStore\CustomEmoticons, onde:

  • Drive é a letra do drive onde está instalado seu sistema
  • Windows_LoginId é o nome do seu usuário no computador
  • Messenger_UserId é o seu login no MSN\Windows Live

Ao chegar nessa pasta,verá uma séria de arquivos que no caso, representam os emoticons personalizados no seu perfil no MSN\Windows Live. Com ele fechado, basta apagar todo o conteúdo desta pasta e, ao voltar a entrar, verá que todo os emoticons voltaram ao normal.

Infelizmente, como os arquivos são de alguma forma codificados, não é possível, pelo menos não facilmente, identificar qual arquivo se refere a qual emoticon especificamente.

Observações

Caso esteja rodando o sistema Windows Vista ou Windows 7, troque a pasta “Documents and Settings” no caminho informado por “Users”

Bom proveito!

Referências

http://www.vistax64.com/live-messenger/129637-re-removing-custom-emoticons.html

Update – Ajuste no Modelo de Cadastro Versão 3

O Bug
O Bug

Como feedback de um dos usuários do nosso Modelo de Cadastro em Excel, foi descoberto um erro (ou bug, mas é que culpar um inseto por tudo é meio injusto, não?) que assola a versão 3 do modelo.

Quando a seguinte sequência é de ações é executada:

  1. Na tela de Pesquisa, clicar no botão Exportar;
  2. Clicar 2x em um registro
  3. Clicar no botão Pesquisar

Um erro é gerado. A explicação é simples. Como a função exportar cria uma nova planilha e a apresenta, porém, mantém a tela de Pesquisa aberta, mas muda o contexto do Workbook, ou seja, o ThisWorkbook no VBA passa a valer para a planilha exportada. Quando a linha:

ARQUIVO_DADOS = Range("ARQUIVO_DADOS").Value

no método DefinePlanilhaDados é executada, torna-se inválida, pois a área nomeada “ARQUIVO_DADOS” só existe na pasta de trabalho ModeloCadastro_FrontEnd.xls. Existem algumas formas de corrigir o problema, mas, para simplificar a correção, coloquei a seguinte linha antes da mencionada acima:

ThisWorkbook.Activate

Foi o suficiente para resolver o problema. No final, o método DefinePlanilhaDados fica da seguinte forma:

Private Sub DefinePlanilhaDados()
    Dim wb As Workbook
    Dim caminhoCompleto As String
    Dim ARQUIVO_DADOS As String
    Dim PASTA_DADOS As String
 
    ThisWorkbook.Activate
 
    ARQUIVO_DADOS = Range("ARQUIVO_DADOS").Value
    PASTA_DADOS = Range("PASTA_DADOS").Value
 
    If ThisWorkbook.Name <> ARQUIVO_DADOS Then
        'monta a string do caminho completo
        If PASTA_DADOS = vbNullString Or PASTA_DADOS = "" Then
            caminhoCompleto = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, vbNullString) & ARQUIVO_DADOS
        Else
            If Right(PASTA_DADOS, 1) = "\" Then
                caminhoCompleto = PASTA_DADOS & ARQUIVO_DADOS
            Else
                caminhoCompleto = PASTA_DADOS & "\" & ARQUIVO_DADOS
            End If
        End If
    End If
 
    caminhoArquivoDados = caminhoCompleto
 
End Sub

O modelo já está corrigido na sua própria página. Os agradecimentos vão para a colega Fernanda Esper, que identificou e reportou o problema. Valeu!

Web – Resolvendo conflitos no jQuery

O jQuery é uma biblioteca tão bacana que é usada intensamente por desenvolvedores e web designers.

Isso é ótimo por um lado, pois além de todas as vantagens, traz certa uniformidade para o desenvolvimento, e impede que um dos dois suje demais o código.

O lado péssimo é que, se desenvolvedores e designers não se conversam, o que é comum, cada um acaba por usar versões diferentes do jQuery, o que pode gerar conflitos. Algumas vezes nem dá para chegar em um acordo, pois a depender a implementação, a dependência gerada de uma determinada biblioteca pode tornar inevitável o uso de duas versões. O erro mais comum é passar a não encontrar determinadas funções, mesmo as padrões do jQuery, obtendo resultados como:

$(“#datepicker”).datepicker() is not a function

Isso acontece porque, com mais de uma versão do jQuery, cada uma tenta declarar a variável “$”. Na segunda tentativa de usá-la, o erro acima aparece. A solução? Veja o código abaixo:

var $j = jQuery.noConflict();
$j("#datepicker").datepicker();

O que isso faz? Cria um novo contexto para o jQuery, permitindo que você trabalhe com ele a partir desta nova variável. Uma explicação melhor do que o método noConflict() faz pode ser vista no link abaixo:

http://api.jquery.com/jQuery.noConflict/

Pronto! Seu jQuery voltará a funcionar.

Referências

http://stackoverflow.com/questions/1212696/jquery-ui-datepicker-datepicker-is-not-a-function