Workaround para o problema de checksum mismatch error do SVN

Existem casos onde os metadados de uma working copy do SVN fica corrompida e durante o commit, recebemos a seguinte mensagem:


$ svn commit -m "Some update"
svn: Checksum mismatch for '/home/me/dev/bionshare/FileServer.java';
expected: '77d5a3ce97ccff226dcdaaf07d5721f5',
actual: '67d76735a0467d91c5ff733f98de451d'

Existem algumas formas de resolver esse problema, como renomear o arquivo e depois restaurar o nome original. A forma mais rápida que eu encontrei foi essa:


$ svn update --set-depth empty
D         FileServer.java
Updated to revision 6544.

$ svn update --set-depth infinity
A         FileServer.java
Updated to revision 6544.

Esses comandos restauram os dados de cache do arquivo com as informações do repositório.

Contando palavras no SQL Server

Hoje precisei executar uma consulta no SQL Server que me retornasse a quantidade de palavras de uma coluna, agrupado pela palavra.

Utilizei a consulta abaixo para fazer o serviço sujo:


WITH Num1 (n) AS (SELECT 1 UNION ALL SELECT 1),
Num2 (n) AS (SELECT 1 FROM Num1 AS X, Num1 AS Y),
Num3 (n) AS (SELECT 1 FROM Num2 AS X, Num2 AS Y),
Num4 (n) AS (SELECT 1 FROM Num3 AS X, Num3 AS Y),
Nums (n) AS (SELECT ROW_NUMBER() OVER(ORDER BY n) FROM Num4),
Words (word) AS (
SELECT SUBSTRING(' ' + descr + ' ', n + 1, 
       CHARINDEX(' ', ' ' + descr + ' ', n + 1) - n - 1)
FROM Nums
JOIN (SELECT text FROM TweetMessages) AS F(descr)
  ON SUBSTRING(' ' + descr + ' ', n, 1 ) = ' '
 AND n < LEN(' ' + descr + ' '))
SELECT word, COUNT(*) AS cnt 
FROM Words
GROUP BY word
ORDER BY cnt DESC

Não é uma maravilha de performance, mas é bem útil!

O resultado da consulta:
twitterCount

Baixando o conteúdo de uma URL no PowerShell

Hoje precisei programar um job no SQL Server para baixar um arquivo de um site usando o powershell.

O script que eu utilizei foi esse:


$fileName = "c:tempfile.zip"
$webclient = New-Object System.Net.WebClient
$webclient.DownloadFile("http://siteparabaixararquivo/arquivo",$fileName)

Um script muito simples que as vezes poder ser útil.

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