Windows Live Writer Suporta BlogSpot

Estava eu mechendo no live writer e resolvi arriscar, vo tentar publicar um post utilizando ele no meu blog do blogspot, e vejam só!

Configurei a url do blog e meu usuário e senha do Google Accounts e o resultado é que pode se observar nesse post.

Não garanto que utilizarei ele para fazer os posts, mais achei interessante a possibilidade.

image

Veja o screenshot (estou utilizando o notebook de minha esposa :D) , bastante comodo usar o PrintScrean e ctrl + v para adicionar uma imagem do Desktop.

A edição de categorias (marcadores) também é interessante ele ja traz uma listagem dos que já existem no blog bem como a opção de adicionar uma nova.

image

O próximo passo seria eu copiar um código e ele me trazer formatado, mais isso não funciona, sempre cola o texto puro mesmo.
Para este propósito existe um plugin-in de código fonte aberto, que é o SourceCodePlugin que adiciona essa funcionalidade.

Métodos de Extensão

Uma característia presente nas linguagens de dinâmicas e que também está disponível na plataforma .NET, é a capacidade de extender uma classe sem a que seja necessário uma herança da mesma, o que seria impossível numa classe selada, que não permite que seja herdada.
Veja um exemplo em ruby (trecho retirado do artigo Micro Tutorial de Ruby – Parte I):

class String
def empty?
self.nil? || self.size == 0
end
end

nome = "Sebastião Relson"
nome.empty?

Veja como fica a saída do programa utilizando o IRB:

relson@lenny-amd64:~$ irb
irb(main):001:0> class String
irb(main):002:1> def empty?
irb(main):003:2> self.nil? || self.size == 0
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> nome = "Sebastião Relson"
=> "Sebasti\303\243o Relson"
irb(main):007:0> nome.empty?
=> false
Agora um exemplo em c# .NET:

using System;

namespace MetodosExtensao
{

class MainClass
{
    public static void Main(string[] args)
    {
        int i = 1;
        Console.WriteLine(i.Negativo());
    }
}

static class ExtensoaInteiro
{
    public static int Negativo(this int i)
    {
        return -i;
    }
}
}

Nesse exemplo a saída seria somente:

-1

Para facilitar a inserção do código no blog e deixar e exemplo mais simples coloquei as classes no mesmo arquivo. O código foi retirado com adaptações do livro Microsoft Visual C# 2008, Passo a Passo - John Sharp.

Para finalizar leia também o artigo de um grande amigo meu, o memorável Rafael Camargo que fala a respeito que também fala de métodos de extensão o artigo é C#: Extension Methods & Speech.

Variáveis, Escopo e Modificadores de acesso

Nessa postagem tem um título bastante abrangente, pois bem, procurarei esclarecer e fazer comparações de como funcionam as Variáveis, Escopo e conseqüentemente os Modificadores de acesso em diversas linguagens e plataformas, desmitificando assim alguns “falsos cognatos”.

Variáveis

Uma variável é um espaço rotulado por um identificador (geralmente segue a regra de nomeação para todos os identificadores) para armazenamento de valores de acordo com o tipo definido. O espaço em memória a ser reservado depende do tipo e que foi definido, basicamente tais tipos podem ser divididos em Tipos Primitivos ou Tipos Referência.

Tipos primitivos

São tipos de variáveis com tanho e formatos fixos, em linguagens orientadas a objetos esses tipos não existem ou mesmo são encapsulados por uma classe que o representa. Um tipo primitivo pode ser um valor numérico inteiro de ponto flutuante ou um valor literal. Cada plataforma ou linguagem tem suas restrições e definições sobre como e quais serão eles.

Tipos Referência

Diferente dos tipos primitivos os tipos de referência fazem uma referência a um objeto em memória dessa forma várias variáveis podem fazer referência a um único objeto em memória. Os valores não são fixos, no entanto hipoteticamente pode supor se os atributos de uma classe forem de tipos primitivos o espaço armazenado será o suficiente para os atributos acomodar todos os atributos.

Geralmente quando se declara uma variável, é necessário informar um identificador e o seu tipo, porém algumas linguagens não permitem ou mesmo não exigem que seja informado um tipo.

Vejamos algumas formas de declaração de variáveis:

  • No Visual Basic
Dim nomeIdentificador As Tipo

Onde a palavra reservada
Dim (de dimensão) é seguida por um nome para o identificador, opcionalmente pode se usar a palavra reservada As para informar o tipo. Se um identificador novo é encontrado no código com um valor a ele sendo atribuído, o compilador cria automaticamente uma nova variável. Para forçar que todas as variáveis sejam declaradas é necessário informar em cada início de arquivo de código fonte a palavra reservada Option Explicit.

  • Nas linguagens baseadas na Linguagem C (C++, Java, C# .NET, etc.)

String nomeIdentificador = "Valor Inicial;"

String é um tipo para exemplificar (representa uma cadeia de caracteres) um nome para um identificador e opcionalmente pode se atribuir um valor inicial como no exemplo especificado, a cadeia de caracteres “Valor Inicial” e por fim “;” para finalizar a expressão.

Escopo

O escopo diz respeito a visibilidade de um identificador, basicamente pode se dizer que um identificador é visível no bloco que foi declarado, porém em alguns casos isso pode não ficar bem claro, se deseja modificar a visibilidade de um identificador é necessário utilizar um modificador de acesso que seja adequado a visibilidade desejada, como descrito no tópico a seguir.

Modificadores de acesso

Os modificadores de acesso servem para alterar a visibilidade de um identificador e são utilizados em varios contextos diferentes.
Em algumas plataformas de linguagens como C, Visual Basic 6 existe as variáveis Globais que são vistas por todo o programa.
No Visual Basic 6 era necessário utilizar a palavra chave Global. O que é um problema ter a visibilidade em todo o programa pois se torna muito complexo fazer o controle de quem modifica o valor da variável.
Com a criação dos espaços de nomes (namespace) ou Pacotes (Packages) em Java, todos os identificadores fazem parte de uma hierarquia.

Os modificadores acesso mais comuns são o private ( privado ) e public (público) que são utilizados tanto em membros da classe como também na própria classe.

Com o modificador de acesso private o idenficiador é visto somente dentro do bloque em que é declarado, no entanto, o público permite o acesso em qualquer lugar.

Existem outros modificadores que não são tão comuns como os descritos acima, são eles, o protected( protegido) que tem o comportamento semelhante do private porém ainda tem visibilidade para as classes que o herdam.

Outros que são específicos de plataforma são o “friend” do Visual Basic 6 que permite que somente seja acessível de dentro da DLL ou EXE em que é declarado, funcionamente análogo ao “internal” do C# .NET, que restringe a visiblidade ao Assembly em que é declarado, esse também é o modificador padrão quando não é informado na declaração. Já no Java a visibilidade é para o pacote, ou seja não é necessário estar no mesmo “jar” a visiblidade é definida pela organização lógica.