Skip to main content

Programação

Vamos debuggar ?

Um leve vídeo tutorial de como debugar programas em C no linux com GDB.

C Programming, Disassembly, Debugging, Linux, GDB

(Créditos ao grande Henry, um cara multifacetado - http://thenerdshow.com )

Alguns ORMs para o .NET

Estava navegando e achei essa lista de alguns ORMs e geradores de código para você testar junto com a plataforma .NET. Eu acrescentei mais alguns que eu conheço.

  1. ADO.NET Entity Framework - ORM da Microsoft (vem junto com o .NET 3.5 SP1)
  2. Base One Foundation Component Library - Free ou paga
  3. BCSEi ORM Code Generator - Free ou paga
  4. Business Logic Toolkit For .NET - Open source
  5. Castle ActiveRecord - ActiveRecord para .NET - open source
  6. DataObjects.Net v4.0 - Open source - paga
  7. DevForce - Paga - N-Tier
  8. Developer Express - Express Persistent Objects (XPO) - Paga
  9. EntitySpaces - Paga
  10. Euss - Open source
  11. Habanero - Free open source
  12. iBATIS - Free open source
  13. Invist - Free ORM e gerador de códigos
  14. LLBLGen - Drivers open source - paga
  15. LightSpeed - Free ou paga
  16. Neo - Open source
  17. NConstruct - Paga
  18. NHibernate - Open source
  19. Opf3 - Free e paga
  20. ObjectMapper .NET - GPL e paga
  21. OpenAccess - Free ou paga
  22. TierDeveloper - ORM free e gerador de códigos
  23. Persistor.NET - Free ou paga
  24. Quick Objects - Free ou paga
  25. Sooda - Open source - licença BSD
  26. Subsonic - Open source
  27. Orasis - Free trial ou paga.
  28. Telerik - Versão Express gratuita ou paga.
  29. EntityORM - Licença Apache
  30. Fluent NHibernate - Um NHibernate sem XML!

Desses o mais recomendado e usado pela comunidade é o 18 (NHibernate) , que é um clone da versão para Java (Hibernate).

Das sugestões acima, as que eu já usei e recomendo são: 1, 8, 28.

O 23 é incrível, mas é muito caro.

Tem muito mais no CodePlex.

Jeorane

De Visual Basic.NET Para C# e Vice-Versa

Com as ferramentas abaixo você pode converter C# para Visual Basic.NET ou vice-versa.

Hoje em dia o programador tem que ser poliglota.

Essas duas linguagens são consideradas por alguns como sendo dialetos da mesma linguagem, e no Visual Studio 2010 serão equivalentes em termos de recursos.

A única coisa que eu encontrei que não terá no VB 2010 é a palavra chave yield do C#.

  1. Developerfusion tool (Free-online)
  2. CodeTranslator (Free-online)
  3. Instant (Versão Limitada)
  4. Dotnetspider tool (Free-online)
  5. Kamalpatel tool (Free-online)
  6. Telerik (Free-online)
  7. VBConversions (Paga)
  8. Softonic (Avaliação)
  9. SharpDevelop (Editor free que converte o projeto inteiro)

Jeorane

Redimensionamento simples de imagem e outras transformações

Para discutir aspectos básicos do processo de redimensionamento, é interessante tomar a imagem como uma matriz X de tamanho m' por n', sendo que tal processo consiste em obter outra matriz Y com tamanho m por n a partir da primeira.

Também é possível interpretar a imagem como sendo uma função de suas coordenadas: ao mudarmos a resolução da imagem, estamos mudando, essencialmente, o número de pontos em uma ou outra dimensão e, como a nova imagem redimensionada deve ser a menos alterada possível, podemos realizar uma interpolação para determinar os pontos que irão constituir a nova função discreta.

Assim, uma imagem pode ser tida como uma matriz ou, de maneira análoga e intercambiável, como uma função discreta de suas coordenadas. Para imagens coloridas, basta tratar cada canal separadamente.

I: D C NxN -> N   (D estritamente contido em NxN, em que N é o conjunto dos naturais)
    (i,j) |-> I(i,j)

Note que o domínio D é sempre finito e que a imagem (da função) é obviamente finita e interpretada como um conjunto de intensidades luminosas, apresentanto um mínimo e um máximo.

Os algoritmos de redimensionamento variam quanto à forma de interpolação utilizada ao longo de um percorrimento sequencial dos pontos da matriz Y a ser gerada. O objetivo é determinar o valor de cada ponto interpolando a pequena (e limitada) vizinhança que lhe é correspondente na imagem de entrada.

Usando a interpolação trivial com base no ponto mais próximo, o algoritmo é o seguinte:

    # coeficiente para mudança de escala de Y para X:
    cm <- (m'-1)/(m-1) # verticalmente
    cn <- (n'-1)/(n-1) # horizontalmente

    para i de 0 a m-1
      para j de 0 a n-1
        # mapeamento do par (i,j) em Y para (i',j') em X
        i' <- round(i*cm) # escala e arredondamento (de i para i')
        j' <- round(j*cn) # escala e arredondamento (de j para j')
        Y(i,j) <- X(i',j')
      fim
    fim

Note que, no algoritmo acima, o valor de cada ponto atribuído à nova imagem Y é exatamente o valor do ponto mais próximo em X, depois de feito o mapeamento das coordenadas.

Outra forma bastante comum (um pouco mais elaborada, mas ainda bastante elementar e eficiente) é a interpolação bilinear, em que o valor de cada ponto atribuído à nova imagem Y é a média dos quatro pontos mais próximos ponderada pela distância relativa ao ponto mapeado. Esse é o caso mais simples de modo a evitar o aspecto pixelado, comum no caso de ampliação com interpolação com base no ponto mais próximo.

Imagem original:
original.jpg
Imagem ampliada (metade esq. via ponto mais próximo; metade dir. via bilinear):
ampliada.jpg

Quanto mais elaborada for a interpolação utilizada (como bilinear, bicúbica, etc.), mais tempo levará para cada ponto ser calculado. Entretanto, se o tamanho da janela (vizinhança) tomada para interpolação for limitado, a complexidade assintótica temporal do algoritmo de redimensionamento é claramente linear em relação ao número de pontos, isto é, O(mn), o que é bastante desejável.

O redimensionamento (mudança de escala) é apenas um caso particular de transformação linear sobre as coordenadas da imagem. O que foi estabelecido acima vale se forem utilizados outros tipos de transformação linear, como rotação, por exemplo. O processo é feito de maneira análoga: para cada ponto da imagem gerada Y, mapeia-se sua coordenada para a imagem de entrada X (desta vez fazendo uso da transformação desejada) e aplica-se uma interpolação para calcular o valor no ponto.

Obs.: É importante não confundir a possível complexidade linear do algoritmo com o fato de que ele emprega uma transformação linear; uma coisa não tem a ver com a outra.

Fonte: Cambridge in Colour

Divulgar conteúdo