Category Archives: Tecnologia

Indexando e buscando documentos com Lucene.Net e LINQ

Código de exemplo:


using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
using Lucene.Net.Store;
using Lucene.Net.Linq;
using Lucene.Net.Linq.Mapping;
using Lucene.Net.Analysis.Standard;

namespace LuceneTests
{
    [TestClass]
    public class LuceneTest
    {
        [TestMethod]
        public void TestIndex()
        {
            // Configura o Lucene.
            var luceneDir = Path.Combine(System.Environment.CurrentDirectory, 
                "lucene_index");

            if (!System.IO.Directory.Exists(luceneDir))
            {
                lock (this)
                {
                    System.IO.Directory.CreateDirectory(luceneDir);
                }
            }

            var directory = FSDirectory.Open(new DirectoryInfo(luceneDir));
            var provider = new LuceneDataProvider(directory, 
                Lucene.Net.Util.Version.LUCENE_30);

            // Indexa os Documentos.
            using (var session = provider.OpenSession<Document>())
            {
                session.Add(new Document()
                {
                    Title = "Hello",
                    Content = "Hello Lucene!"
                });

                session.Add(new Document()
                {
                    Title = "Hi",
                    Content = "Hi, Lucene!"
                });
            }


            // Busca os documentos que contém a palavra "Hello" no título.
            var items = provider.AsQueryable<Document>()
                .Where(l => l.Title.Contains("Hello"));

            Assert.AreNotEqual(items.Count(), 0);
        }
    }
    class Document
    {
        [Field(Analyzer = typeof(StandardAnalyzer))]
        public String Title { get; set; }

        [Field(Analyzer = typeof(StandardAnalyzer))]
        public String Content { get; set; }
    }
}

Como desenvolver para XNA no Windows 8

Por padrão, se você tentar instalar o XNA Game Studio 4.0 no Windows 8, você receberá uma mensagem de erro. Esse erro é devido a problemas de compatibilidade.

A Microsoft prometeu uma nova versão do Windows Phone SDK que resolve esse problema, mas ainda deve demorar para sair.

Uma maneira de contornar o problema é instalando o Games for Windows Marketplace Client.

Após essa instalação, você poderá instalar o XNA Game Studio para utilizá-lo com o Visual Studio 2010.
Infelizmente, o XNA Game Studio ainda não é compatível com o Visual Studio 2012.

Utilizando o Apple Wireless Keyboard no Windows

Sem dúvida alguma, o Apple Wireless Keyboard é um teclado sensacional.

Adquiri recentemente um teclado apple wireless, para utilizar no meu hackintosh. Funcionou que é uma maravilha!

Como estava tendo diversos problema de compatibilidade com o hardware, resolvi parar de utilizá-lo e montar uma estação Windows :/

Como queria utilizar o teclado com o Windows, utilizei o aplicativo Apple Wireless Keyboard, que além de fornecer uma boa compatibilidade, oferece uma opção de trocar as teclas Control Fn.

O projeto é open source Smile

Repositório do SVN

Removendo a acentua�§�£o e os caracteres especiais de uma String

Estava precisando remover a acentuação e os caracteres especiais do nome de um arquivo. Para isso, desenvolvi um extension method para a classe String.

Exemplo:
String de entrada:
Adobe Acrobat – Pacy-Paraná_05.12_áÃ?¨Ã?¯Ã?´úã+.pdf

String de retorno:
AdobeAcrobatPacyParana_05.12_aeioua.pdf

Desenvolvi o método utilizando uma HashTable e expressão regular. Caso você tenha alguma sugestão de melhoria, poste aí nos comentários.

Extension method:

public static String RemoveSpecialCharacters(this String self)
{
	var normalizedString = self;

	// Prepara a tabela de símbolos.
	var symbolTable = new Dictionary();
	symbolTable.Add('a', new char[] {'Ã? ', 'á', 'Ã?¤', 'â', 'ã'});
	symbolTable.Add('c', new char[] { 'ç' });
	symbolTable.Add('e', new char[] { 'Ã?¨', 'é', 'Ã?«', 'ê' });
	symbolTable.Add('i', new char[] { 'Ã?¬', 'í', 'Ã?¯', 'Ã?®' });
	symbolTable.Add('o', new char[] { 'Ã?²', 'ó', 'Ã?¶', 'Ã?´', 'õ' });
	symbolTable.Add('u', new char[] { 'Ã?¹', 'ú', 'Ã?¼', 'Ã?»' });

	// Substitui os símbolos.
	foreach (var key in symbolTable.Keys)
	{
		foreach (var symbol in symbolTable[key])
		{
			normalizedString = normalizedString.Replace(symbol, key);
		}
	}
			
	// Remove os outros caracteres especiais.
	normalizedString = Regex.Replace(normalizedString, "[^0-9a-zA-Z._]+?", "");
	return normalizedString;
}

Webcam Life Log

O Webcam Life Log é um utilitário que tira fotos com a webcam, em um intervalo de tempo definido. Desenvolvi ele utilizando o Adobe AIR.

Para instalar, basta clicar na imagem abaixo.

Please upgrade your Flash Player
This is the content that would be shown if the user does not have Flash Player 6.0.65 or higher installed.

Screenshot:

O código-fonte está disponível no google code:
http://code.google.com/p/webcamlifelog