Servidor PHP com Winginx

Sempre usei o EasyPHP como meu servidor de PHP, mas como precisei de mais, achei e analisei o Winginx, que é um complexo servidor web local no Windows para desenvolver em PHP e Node.js usando bancos de dados MySQL, MongoDB, Redis, memcached.
Um excelente substituto que cobre a atual necessidade da minha aplicação que é o Node, MongoDB e memcached, além de outros serviços. Substituindo com maestria o EasyPHP .

Com isso, possivelmente passarei a usar a Digital Ocean para as cloud applications.

Então fica a dica 😉

JSBIN (JavaScript online)

JS Bin é uma ferramenta para a experimentação de linguagens web. Em HTML particular, CSS e JavaScript, mas JS Bin também suporta outras linguagens como Markdown, Jade e Sass.

é possível compartilhar código. Junto com o código, a saída completa também é compartilhada com outros desenvolvedores, colegas e / ou alunos. Conforme você digita em um dos painéis, você e qualquer um vendo o seu bin vai ver a saída a ser gerado em tempo real no painel de saída.

É possível adicionar uma extensão do JS Bin no Firefox: https://addons.mozilla.org/pt-BR/firefox/addon/easy-jsbin/

Instalar o Sonar e Maven Local

sonarqube

Sonar Qube é uma ferramenta que permite analisar métricas no código fonte de um projeto e gerar relatórios a partir dela, como a própria descrição diz “é um lugar para gerenciar a qualidade do código”.

Usando o Maven 2 integrado com o Sonar Qube para executar a análise do código fonte quando for necessário.

Bastas realizar o donwload do Sonar Qube, última versão. Para instalar o Sonar, descompacte o arquivo sonar-x.x.zip.

Você pode manter a configuração básica padrão da instalação que usa o banco de dados H2. Mas sempre utilizo a configuração usando o MySQL.

Podemos configurar um schema de banco de dados específico para o Sonar Qube no MySQL, ou utilizar um existente. Então, conecte no MySQL como root e execute os comandos a seguir.

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER ‘sonar’ IDENTIFIED BY ‘sonar’;
GRANT ALL ON sonar.* TO ‘sonar’@’%’ IDENTIFIED BY ‘sonar’;
GRANT ALL ON sonar.* TO ‘sonar’@’localhost’ IDENTIFIED BY ‘sonar’;
FLUSH PRIVILEGES;

após a criação do banco de dados e usuário Sonar Qube com sucesso, vamos para o próximo passo.

Configura nas variáveis de ambiente(windows) as variáveis abaixo:

Nome: SONAR_RUNNER_HOME
Valor: C:sonarqube-x.x.xbin
e
Nome: Path
Valor: C:sonarqube-x.x.xbin

Edite o arquivo de configuração $SONA_HOME/conf/sonar.properties comente as linhas do H2 database(já vem comentada).

#sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar
#sonar.jdbc.driverClassName=org.h2.Driver

Agora, adicione a configuração do MySQL.

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

Eu não uso e não aconselho a utilização das duas linhas abaixo. Elas impactam em erro na subida do Sonar Qube.

sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
sonar.jdbc.validationQuery=select 1

Ok. Salve o arquivo de configuração.
Agora inicie o Sonar Qube.

$ /usr/local/sonar-3.2/bin//sonar.sh start
$ Starting sonar…
$ Started sonar.

No diretório bin/ você deve selecionar o seu sistema operacional.

Acesse http://localhost:9000 e veja a interface gráfica dele, sem projetos, ainda.

O último é configurar o Maven, você NÃO precisa modificar o arquivo POM.xml do seu projeto, para adicionar plugins basta editar o arquivo settings.xml e acrescentar uma profile do Sonar Qube, conforme a seguir.

$ sudo vim ~/.m2/settings.xml
<settings>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000</sonar.host.url&gt;
</properties>
</profile>
</profiles>
</settings>

Agora o Sonar Qube está configurado e integrado ao Maven. A partir do seu projeto você poderá criar um projeto no Sonar Qube e realizar a análise do código fonte apenas com uma linha de comando.

$ mvn sonar:sonar

E fim 😉

Alternativas ao PowerPoint para criação de apresentações

haikudeck

Quando você pensa em slides e apresentações, certo que na sua mente em primeiro lugar vem o Microsoft PowerPoint. Mas existem outras boas alternativas, eu diria que alternativas evoluidas desta precursora ferramenta.

Testei 3 das que mais considero, sendo o Prezi já um antigo conhecido por mim até agora.

Haiku Deck (iPad)

O Haiku Deck foi projetado para transformar idéias em belas apresentações no tempo que você leva para ir de ônibus ao trabalho. O segredo? Acesso a um rico acervo integrado de imagens e ilustrações gratuitas.

Pixxa Perspective (iPad)

Uma apresentação nada mais é do que uma história audiovisual. Esta é a idéia do Perspective, uma poderosa ferramenta para o iPad que exige um certo aprendizado, e tem um preço alto.

Prezi (Web, Windows, Mac, iOS)

um dos precursores nesta mudança brusca nas apresentações pessoais e chatas é o Prezi. Capas de criar atraentes animações customizadas que deixam as apresentações comuns comendo poeira.

Bom, ficam mais opções.

Como criar um time vencedor de sustentação de TI

Venho refletindo quais vantagens tem a criação de um time de sustentação separado de equipes de desenvolvimento, pesquisei e não encontrei nenhum motivo plausível para criar uma equipe de sustentação, nenhum post falando sobre como montar uma equipe multidisciplinar. Mas descobri formas motivadoras, e formas de fazer isso da forma correta, pois acredite ou não, montar uma equipe satisfeita é a chave do sucesso.

Passo 1 – Abra a informação de que talvez a empresa precise montar uma equipe separada e multidisciplinar; Informar previamente identifica perfis e desejos;
Passo 2 – Converse com os perfis identificados sobre os motivos, desejos e porque você o indicaria. Veja bem, indicaria e não já indicou;
Passo 3 – Monte um planejamento mínimo mesmo que essa atitude tenha ocorrido de um dia para o outro e enquadre os perfis que possui;
Passo 4 – Realize as operações necessárias para que a troca seja confortável para seus colaboradores e se possível, que sabemos que é, promova alguns ou simplesmente de uma compensação financeira.

É simples, é fácil e é possível.

Mentalidade Mobile First

A ideia defendida por Luke Wroblewski é simples: desenhar sua solução primeiro para mobile, depois para web. Esse exercício forçará o seu poder de síntese ao máximo e, ao transportar para a versão web, você já terá limado o excesso de conteúdo.

Segundo Luke, o excesso de informação em grande parte dos sites se dá porque é relativamente fácil adicionar conteúdo web.

“O mobile não deixa espaço para nenhum conteúdo de relevância duvidosa. Você precisa saber o que realmente importa. Para fazer isso você precisa conhecer bem os seus usuários e o seu mercado.”, afirma Luke.

wpid-wp-1411570591317.jpeg

Um dispositivo mobile é por muitas vezes o primeiro dispositivo conectado que um bebê ou uma criança pequena interage e se familiariza. Se hoje eu der o kindle para meu bebê com 10 meses, ele tenta arrastar a tela como se fosse meu Smartphone.

“… Esta mentalidade mobile-first molda como eles interagem com o mundo e criam expectativas para tudo a sua volta. Incluindo dispositivos non-touch ou objetos inanimados, touch-friendly e sempre conectados. Estas mentes mobile-first são livres dos modelos mentais do passado da computação, e como resultado certamente moldarão o que esperamos mais a frente do nosso “mundo conectado.”

A definição mobile-first de Luke consiste em três principais componentes:

1. O crescimento do mobile é, mais do que nunca, uma grande oportunidade de atingir as pessoas;

2. As restrições do meio mobile nos força a focar no que realmente importa;

3. E as capacidades do mobile criam oportunidades inovadoras.

Então? Será que mobile-first seria a arquitetura a se pensar? Ou estamos apenas em mais um modismo?

Markdownpad Editor

Markdown é uma linguagem de marcação baseada em texto criado por John Gruberem 2004 como uma maneira de escrever em um formato fácil de ler que podem ser convertidos em HTML. Ele usa uma sintaxe muito simples formatação de pontuação e caracteres familiar, o que torna o conteúdo escrito para a web uma experiência mais intuitiva e mais rápida.

Como Markdown cresce em popularidade, novas ferramentas e aplicações surgiram para atender a escrever, conversão e pré-visualizar a linguagem de marcação. De tutoriais, plugins do WordPress e livros para Ferramentas de Serviço Markdown dedicados para OS X, há uma riqueza de excelentes recursos disponíveis.

Achei muitos posts descrevendo e exemplificando as melhores ferramentas e aplicativos para escrever e visualizar Markdown, incluindo recursos para Windows, Mac OS X, iOS e na web.

Eu pessoalmente, utilizo inclusive para este post o MarkdownPad, que é excelente.

MarkdownPad

MarkdownPad é um editor de Markdown full-featured para Windows, com atalhos de teclado, previews ao vivo e fontes personalizáveis​​, cores, layouts e folhas de estilo. Ele suporta múltiplos núcleos de processamento, incluindo Markdown Markdown extra e GitHub Flavored Markdown, com documentos com guias, verificação ortográfica, auto-save e destaque de sintaxe.

2014-08-30_230718

Mas cheguei a achar posts apresentando mais de 100 opções, então cada um pode escolher o que mais lhe agrada.

Ederson Melo

Declarações HTML !DOCTYPE

A declaração <!DOCTYPE> não é uma tag HTML; ela é uma instrução para o browser sobre qual versão a página HTML está escrita. e deve ser a primeira declaração do documento HTML.

No HTML 4.01, a declaração <!DOCTYPE> faz referência a um DTD, por que o HTML 4.01 foi baseado no SGML. O DTD especifica as regras para a linguagem de marcação para que os navegadores renderizem o conteúdo corretamente.

HTML5 não é baseado no SGML, e, portanto, não necessita de uma referência para um DTD.
HTML 4.01 e HTML 5

Existem três diferente declarações <!DOCTYPE> no HTML 4.01. No HTML5 existe apenas uma:

<!DOCTYPE html>

Elementos HTML e DOCTYPE

Veja na tabela todos os elementos HTML e em qual <!DOCTYPE> cada elemento aparece.

Dicas e Notas

Nota: A tag <!DOCTYPE> não tem uma tag de fechamento.

Dica: a declaração <!DOCTYPE> NÃO é case sensitive.

Dica: Use o validador W3C para checar se você escreveu um documento HTML / XHTML válido.

Declarações mais comuns de DOCTYPE

HTML 5

<!DOCTYPE html>

HTML 4.01 Strict

Este DTD contém todos os elementos e atributos HTML, mas NÃO INCLUI elementos de apresentação ou depreciados (como font). Framesets não são permitidos.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”&gt;

HTML 4.01 Transitional

Este DTD contém todos os elementos e atributos HTML, INCLUINDO elementos de apresentação e depreciados (como font). Framesets não são permitidos.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”&gt;

HTML 4.01 Frameset

Este DTD é igual ao HTML 4.01 Transitional, mas permite o uso de conteúdo frameset.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” “http://www.w3.org/TR/html4/frameset.dtd”&gt;

XHTML 1.0 Strict

Este DTD contém todos os elementos e atributos HTML, mas NÃO INCLUI elementos de apresentação ou depreciados (como font). Framesets não são permitidos. A marcação também deve ser escrita como um bem formado XML.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”&gt;

XHTML 1.0 Transitional

Este DTD contém todos os elementos e atributos HTML, INCLUINDO elementos de apresentação e depreciados (como font). Framesets não são permitidos. A marcação também deve ser escrita como um bem formado XML.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;

XHTML 1.0 Frameset

Este DTD é igual ao XHTML 1.0 Transitional, mas permite o uso de conteúdo frameset.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”&gt;

XHTML 1.1

Este DTD é igual ao XHTML 1.0 Strict, mas permite que você adicione módulos (por exemplo para fornecer suporte ao Ruby para idiomas do Leste Asiático).

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”&g