Tema do FujiyBlog em Bootstrap

9/17/2016 9:55:00 PM By Felipe Pessoto

Aproveitando a atualização do blog fiz uma mudança necessária a muito tempo, passei a utilizar o Bootstrap para o design do blog. Com uma cara mais simples, melhor adaptável em dispositivos mobile e intuitivo.

A seção administrativa também foi reformulada, acredito que muito mais fácil de usar e com design moderno:

 

Ainda há algumas páginas a serem ajustadas, mas a maioria já foi atualizada. Estou usando por algum tempo e ficou muito mais prática.

FujiyBlog em ASP.NET Core

9/17/2016 9:45:00 PM By Felipe Pessoto

Nos últimos meses tenho feito algumas atualizações no FujiyBlog, a maior delas foi a conversão, ou melhor reescrita do seu código para funcionar com ASP.NET Core.

A maior parte das funcionalidades já estão funcionando, outras ainda aguardando recursos que ainda não foram implementados no ASP.NET Core, como o OutputCache, porém está bem estável e pronto para o uso.

As tecnologias em uso atualmente são:

  • ASP.NET Core 1.0.1
  • Entity Framework Core 1.0.1
  • Bootstrap 3
  • SQL Server/SQL CE

Quem pretende mudar para o ASP.NET Core deve realmente se preperar para reescrever boa parte do código, muitas APIs mudaram e outra não existem, mas vale a pena por tudo que está por vir e as melhorias que o ASP.NET Core traz, como performance, multiplataforma, etc.

A página oficial continua em http://fujiyblog.com/ e o código fonte está no GitHub: https://github.com/fujiy/FujiyBlog.

O blog é compátivel com Azure, eu uso WebApps e Azure SQL para hospeda-lo e planejo publicar um pacote para facilitar o uso e deploy.

O que há de novo no C# 7.0 - Literais binários

9/6/2016 11:11:00 PM By Felipe Pessoto

Além dos números decimais e hexadecimais, no C# 7.0 é possível escrever usando notação binária:

class BinaryLiteral
{
    public static void Example()
    {
        int myValue = 0b1010;
    }
}

Facilitando muito a criação de Flags Enum:

public enum MyFlagsEnumCSharp60
{
    None = 0,
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64
}

public enum MyFlagsEnum2CSharp60
{
    None = 0,
    Sunday = 1,             // 1
    Monday = 1 << 1,        // 2
    Tuesday = 1 << 2,       // 4
    Wednesday = 1 << 3,     // 8
    Thursday = 1 << 4,      // 16
    Friday = 1 << 5,        // 32
    Saturday = 1 << 6,      // 64
}

public enum MyFlagsEnumCSharp70
{
    None =      0b00000000,
    Sunday =    0b00000001,
    Monday =    0b00000010,
    Tuesday =   0b00000100,
    Wednesday = 0b00001000,
    Thursday =  0b00010000,
    Friday =    0b00100000,
    Saturday =  0b01000000
}

O que há de novo no C# 7.0 - Separador de dígitos

9/6/2016 11:04:00 PM By Felipe Pessoto

Uma pequena mas util nova funcionalidade é a possibilidade de utilizar separadores entre os dígitos, facilitando a leitura. Por exemplo:

class DigitSeparator
{
    public const int MyValue = 123_456;
    public const int MyHexValue = 0xAB_CD_EF;

    public static void Example()
    {
        Console.WriteLine(MyValue);
        Console.WriteLine(MyHexValue);
    }
}

Não há nenhuma diferença no código compilado com ou sem os separadores.

O que há de novo no C# 7.0 - Variáveis Out

8/28/2016 1:39:00 PM By Felipe Pessoto

Até o C# 6.0, chamar um método que utiliza parâmetros out não é tão fluido, pois você precisa declarar as variáveis antes de chamar o método, e nem é possível usar o var já que normalmente não se inicializa variáveis que são argumentos do método out.

Então você precisa verificar quais os tipos das variaveis utilizadas nos parametros out, voltar e declarar antes do método:

public void OutVariablesExample60()
{
    int myX;//var myX doesn't work
    int myY;

    if(MethodOut(out myX, out myY))
    {
        Console.WriteLine(myX);
    }
}

No C# 7.0 esta experiência será melhorada, ao chamar o método você pode declarar as variáveis de forma inline. Com isso o compilador sabe os tipos delas, permitindo inclusive o uso do var:

public void OutVariablesExample70()
{
    if (MethodOut(out int myX, out var myY))
    {
        Console.WriteLine(myX);
    }
}

As variáveis declaradas estarão no escopo do bloco onde o método é chamado. No Preview 4 o compilador ainda restinge o escopo para o statement onde a variável foi declarada, por isso só funciona como no exemplo acima, onde temos um bloco IF. Esta restrição será removida até a versão final.

Sempre que novas funcionalidades são acrescentadas acho interessante verificar como o código IL é gerado para saber como foi feita a implementação. Neste caso é bem simples, o novo código gera uma versão identica ao exemplo em C# 6.0.