Leitura Obrigatória: Fibonacci, F#, MapReduce e Windows Azure

Olá pessoal, tudo certo?

Um super artigo que vale como Leitura Obrigatória, segue abaixo:

image

Parsing Log Files with F#, MapReduce and Windows Azure
Ref.: https://msdn.microsoft.com/en-us/magazine/gg983490.aspx

O artigo é do autor Noah Gift da MSDN Magazine, que conseguiu fazer uma bela combinação com os componentes F# Worker Role e o pattern de Map Reduce para a plataforma Windows Azure. Já falamos aqui sobre F#, um tempo atrás.

Para quem não se lembra, o F# é uma das linguagens suportadas no Windows Azure, com templates para Worker Roles disponíveis no Visual Studio com o SDK do Azure, veja:

image

Ao selecionar uma Worker Role com a linguagem Visual F#, o template básico oferecido aparece abaixo:

    1: namespace WorkerRole1
    2:  
    3: open System
    4: open System.Collections.Generic
    5: open System.Diagnostics
    6: open System.Linq
    7: open System.Net
    8: open System.Threading
    9: open Microsoft.WindowsAzure
   10: open Microsoft.WindowsAzure.Diagnostics
   11: open Microsoft.WindowsAzure.ServiceRuntime
   12: open Microsoft.WindowsAzure.StorageClient
   13:  
   14: type WorkerRole() =
   15:     inherit RoleEntryPoint() 
   16:  
   17:     // This is a sample worker implementation. Replace with your logic.
   18:  
   19:     let log message kind = Trace.WriteLine(message, kind)
   20:  
   21:     override wr.Run() =
   22:  
   23:         log "WorkerRole1 entry point called" "Information"
   24:         while(true) do 
   25:             Thread.Sleep(10000)
   26:             log "Working" "Information"
   27:  
   28:     override wr.OnStart() = 
   29:  
   30:         // Set the maximum number of concurrent connections 
   31:         ServicePointManager.DefaultConnectionLimit <- 12
   32:        
   33:         // For information on handling configuration changes
   34:         // see the MSDN topic at https://go.microsoft.com/fwlink/?LinkId=166357.
   35:  
   36:         base.OnStart()

O código acima é do arquivo WorkerRole.fs, do template WorkerRoke1.

Um exemplo clássico para iniciantes em F# são as funções de recursão para o cálculo da Sequência de Fibonacci, aquela que usamos na determinação da “espiral dourada” (Golden spiral), com quadrados de tamanhos 1, 1, 2, 3, 5, 8, 13, 21 e 34, veja:

image

Bem interessante! Não deixe de conferir o artigo acima sobre Map Reduce e F# no Azure.

Se ficou interessado sobre F#, veja também os links:

F# at Microsoft Research
Ref.: https://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx

Microsoft F# Developer Center
Ref.: https://msdn.microsoft.com/en-us/fsharp

Por enquanto é só! Até o próximo post :)

Waldemir.