Tour nos datacenters da Google Streetview

E ai galera do café!

Se você está passando por aqui certamente você gosta de tecnologia e hoje em dia em se tratando de tecnologia não podemos deixar de falar em Google.

Estava passeando peloYoutube quando encontrei um vídeo que mostrava o interior dos datacenters do Google, ai foi fácil perder alguns minutos passeando por lá.

Se você quiser conferir, entra lá http://www.google.com/about/datacenters/inside/streetview/

Até a próxima 😉

Licenciamento de Oracle Database: Virtualizar ou não?

Logotipo Oracle

Introdução

Estou liderando um projeto relativamente de grande porte na empresa em que trabalho. O desafio dessa vez é levar o ambiente para um datacenter aqui da cidade (Porto Alegre) ou melhorar as nossas dependências a fim de fornecer a segurança física necessária contra desastres, entretanto, havia a cerca de 3 anos outro projeto parado que o assunto era a criação de uma “nuvem privada”, somei os projetos e estou por aqui ficando quase de cabelo branco… (hehe).

No decorrer desse projeto, me deparei com a seguinte situação, virtualizar ou não virtualizar a minha instância de banco de dados?

No nosso caso utilizamos o Oracle como banco de dados principal na empresa. Nele temos nosso ERP, GED e CRM, além dele temos outros bancos de dados menores para outras tarefas, como intranet por exemplo, mas vamos nos ater ao Oracle.

Quando pensei em virtualizar, logo fui consultar o EULA da Oracle (como de praxe) para ver como ficariam as licenças para esse servidor. Entre diversos EULA’s, conversas com amigos, consultores, fornecedores e DBA’s, pude juntar as informações que forneço para vocês abaixo.

Importante: Não se baseie somente nessas informações, eu não trabalho para a Oracle, não sou certificado Oracle (ainda hehe) e essas informações servem somente como conhecimento e não como documento. Fiquem atentos as versões dos EULA’s fornecidos diretamente no site da fabricante do software. Não me responsabilizo por qualquer ação tomada com base nesse artigo.

Particionamento de servidor

A Oracle considera duas formas de “particionar” um servidor, são elas: soft partition e hard partition.

Abaixo algumas considerações sobre ambas.

Soft Partition

Soft partition é quando fazemos o particionamento em um hypervisor (VMWare, Citrix XenServer, Microsoft Hyper-V, etc). Quando configuramos a VM com um processador apenas.

Essa modalidade NÃO É ACEITA para o cálculo de número de processadores para aquisição de licenças Oracle.

Obs.: caso a virtualização seja feita sob o hypervisor da Oracle, o Oracle VM, existe outro documento permitindo contabilizar somente o processador da VM para licenciamento.

Hard Partition

Hard partition é quando conseguimos realmente especificar o hardware que será utilizado pelo sistema operacional. Essa modalidade sim é aceita pela Oracle como cálculo de numero de processadores para aquisição de licenças Oracle.

Entretanto, nas arquiteturas Intel x86 e x86_64 não são possíveis fazer hard partition, os SO’s não são preparados para isso, somente em arquiteturas RISC, como é o caso de Power (PPC) da IBM por exemplo.

Dessa forma é possível “informar” para o SO quanto de recurso físico ele vai utilizar, independentemente da máquina possuir no total dois processadores, por exemplo.

Licenças Oracle Database Standard Edition One e Oracle Database Standard Edition

A Oracle possui muitas outras licenças e formas de licenciamento, entretanto vou comentar apenas essas duas licenças de processador, as quais eu estudei para a implementação desse projeto.

Obs.: essas licenças podem ser pagas anualmente ou na forma perpétua.

Obs. 1: o valor do suporte anual é de 20% do valor das licenças, é preciso pagar para quantidade total de processadores que você tem e é muito importante que você tenha o suporte atualizado, caso contrário não terá direito de baixar pacotes de atualização do seu software e não terá suporte pela Oracle quando for necessário (geralmente quando chega a esse ponto é porque a coisa está muito, mas muito feia…). Outro motivo é que você paga retroativo, caso pule um ano, por exemplo (isso pode onerar o orçamento do seu departamento de TI e seu gestor certamente não vai gostar).

Considerações sobre Oracle Database Stanadard Edition One

Nessa edição, podemos licenciar equipamentos com até 2 processadores físicos. FIQUEM ATENTOS ENTRETANTO, que mesmo que a licença permita que sejam licenciados até dois processadores, não significa que uma máquina com dois processadores necessitará apenas de uma licença, pelo contrário, significa que caso tenha mais do que 2 processadores, deverá ser usada outro tipo de licença, falaremos disso mais adiante.

Além disso, esse licenciamento custa o equivalente a metade do valor da versão Standard (em 2013) e não possui direitos de uso de Oracle RAC (Real Application Cluster – Consiste basicamente em um conjunto de serviços de alta disponibilidade).

Exemplificando:

Exemplo 1: Um servidor com dois processadores físicos deverá utilizar duas licenças Oracle Database Standard Edition One.

Exemplo 2: Um servidor com quatro processadores físicos deverá utilizar outro tipo de licenciamento.

Exemplo 3: Um servidor com mais de quatro processarores físicos deverá utilizar um tipo de licenciamento diferente do comentado no Exemplo 2 (esse não será comentado nesse artigo).

Considerações sobre Oracle Database Stanadard Edition

Nessa versão, podemos utilizar em equipamentos com até 4 processadores físicos e o mesmo comentado na versão anterior vale para cá.

Essa versão é bem cara e contempla a utilização do Oracle RAC.

Obs.: Ainda existe a versão Enterprise para equipamentos com mais de 4 processadores, que possui um algoritmo de cálculo baseado no total dos cores dos processadores físicos multiplicado por 0,5, mas não vou comentar nada além disso nesse artigo, pois não estudei muito a fundo… além disso, dependendo do tamanho da empresa (quantidade de usuários, se está virtualizado ou não, falaremos mais adiante).

 

Considerações sobre utilização de virtualização

 

As formas de licenciamento supracitadas servem tanto para ambientes virtuais como físicos, entretanto devemos observar alguns pontos além dos já citados em ambientes virtuais. São eles:

Suporte

No projeto inicial iríamos virtualizar a instância de banco de dados sob o Microsoft Windows Server 2012 Hyper-V, entretanto um ponto levantado foi fortemente considerado. A Oracle “não presta suporte” á ambientes que não estão virtualizados com Oracle VM (até então). Na verdade, eles não vão deixar de te atender, mas vão te mandar simular o erro que está ocorrendo em uma máquina física (caso o erro ainda não esteja relatado), aí já viu que a dor de cabeça vira enxaqueca rapidinho…

Utilização de V-motion

Todos os hypervisors tem a possibilidade de v-motion (mover máquinas virtuais dentro de um grupo [pool] de servidores) que é uma ferramenta de excelente aplicabilidade em qualquer ambiente, principalmente quando utilizado com HA (High Available, alta disponibilidade).

Com a utilização desse serviço, a sua VM com a instância Oracle passará por diversos equipamentos e a política da Oracle é clara quanto à isso: toda a máquina que rodar o produto deverá ser licenciada. Portanto, se você tem um pool com 4 máquinas físicas por onde essa VM poderá passar por V-motion, você terá que licenciar todas as máquinas do pool.

Oracle VM

Conforme já citado, a Oracle tem um documento específico para o licenciamento sob Oracle VM, nesse caso é contato apenas o processador da máquina virtual em que está instalado o banco de dados.

Obs.: até então o Oracle VM não faz motion de storage, entretanto, isso não é um impecílio, o próprio storage tem tecnologia suficiente para suprir essa necessidade.

Conclusão

Conforme o estudo realizado sob as licenças Oracle, tive que alterar parte considerável do escopo do projeto inicial, inclusive os custos do projeto.

No meu caso, optei por não virtualizar, apenas utilizar uma máquina (host) específica para esse serviço, mas cada ambiente é um organismo e precisa ser avaliado de perto.

Essas são algumas considerações que eu tive para o meu projeto, mas não tome como documento, pergunte e informe-se em fontes garantidas, como o site da fabricante.

Você também pode contribuir para a comunidade. Tem alguma sugestão ou correção? Descreva nos comentários.

 

E você o que usou ou usaria em seu ambiente?

Imagens redondas com CSS

Fala gurizada, tranquilo?

Está muito em alta colocar imagens em formato redondo, mas tem muita gente fazendo isso em editores gráficos. Não é proibido, mas além de dar um trabalhão, imagina se o Google+ tivesse que ter funcionários para ficar fazendo mascaramento nas imagens de perfil… não dá né?!

Existe uma forma de fazer isso cross-browser somente com o CSS. Podemos utilizar essa técnica em DIV’s, inputs, imagens, etc.

Bom, sabemos fazer que para fazer um arredondamento de bordas com CSS, precisamos utilizar a propriedade border-radius. A técnica consiste exatamente em aumentar o ângulo do border-radius até que forme um círculo (50%).

Mãos à obra!

Primeiramente vamos testar com um DIV. Para isso, crie um div como o HTML abaixo:

<div class="redondo">Jucabala</div>

Agora vamos estilizar esse DIV para que ele fique redondo.


.redondo {
   width: 200px;
   height: 200px;
   background-color: #000;
   color: #FFF;

   /* Agora a mágica */
   border-radius: 50%;
}

E agora com imagem…

<img src="http://www.lorempixel.com/300/300/people" />

Estilizando…


.redondo {
   /* Agora a mágica */
   border-radius: 50%;
}

Para treinar, experimente brincar com a pseudo-classe hover e transition… cria um efeito bem legal.
Postem seus resultados, outro dia eu posto um exemplo assim.

Abraço!

Lorempixel – Mais um poderoso placeholder

Logo do LorenPixel

Buenas gurizada!

Apresento mais um place holder, dessa vez um poderoso mecanismo!
Para quem não sabe o que é place holder, escrevi não faz muito sobre o assunto no post do placekitten.com, confere lá…

Configurações do LorenPixel

Imagem que mostra as configurações do LorenPixel

Agora apresento outro place holder, o lorempixel, semelhante ao loremipsum, mas com imagens. Você consegue configura-las, inclusive com o tipo de imagem que vai aparecer. E cá pra nós, é melhor contextualizar o conteúdo da imagem com o conteúdo do trabalho do que apresentar um monte de gatinhos pro cliente… heheh

Para gerar as imagens, basta digitar diretamente no navegador a URL com as configurações que tu queres, por exemplo: Para gerar uma imagem de 640 pixels de largura (width), 480 de altura (heigth) e da categoria abstrata, basta digitar a seguinte URL: http://lorenpixel.com/640/480/abstract

As configurações podem ser feitas também pelo painel contido no site http://lorenpixel.com

Resultado do LorenPixel

Espero, como sempre, ter ajudado!

Abração 😉

IconFinder: Simplificação do projeto com maior produtividade

Site com coletania de ícones

Constantemente precisamos gerar algumas imagens corriqueiras como em operações de manipulação de dados por exemplo. É comum termos alguns ícones para levar o usuário à realizar operações como inserir, deletar, editar ou excluir dados no sistema.

Muitos desenvolvem uma espécie de biblioteca para não ter que repetir a criação dessas imagens em todos os projetos outros preferem desenvolver novamente os ícones a cada job.

Para ajudar com esse problema, existe um site que nos ajuda tornando nosso trabalho mais produtivo. É o IconFinder.com lá você pesquisa por algum termo e o site retorna diversos “ícones” pra você, em diversos tamanhos, a partir disso, é só fazer o download e colocar em seu projeto.

Abraço!

Tela de busca do IconFinder

Tela de busca do IconFinder

Tela de resultados do IconFinder

Tela de resultados do IconFinder

Por onde começar com o desenvolvimento web [autodidatas]

Estudo

Por onde começar com o desenvolvimento web

Buenas gurizada do café!

Se você chegou até esse post suponho que você gosta muito de internet, tem qualidades autodidatas e [logicamente] está interessado em aprender sobre desenvolvimento web.

A web normalmente fascina os desenvolvedores iniciantes, acredito que pela facilidade no desenvolvimento, entretanto, existe uma gama de conhecimentos que precisam ser adquiridos para que você seja um bom profissional. Claro que podemos nos especializar em determinadas camadas, como frontend, backend, design, etc, mas é muito importante sabermos o que todas essas camadas fazem para projetarmos e executarmos os jobs com qualidade e entendendo facilitado o trabalho de toda a equipe.

Eu como autodidata posso falar com propriedade que somos bem desorganizados com os estudos e geralmente estudamos o que queremos e pronto! Para ajudar os entrantes no mercado, resolvi criar esse post (e o blog também) para organizar esses estudos com base na experiência que tive.

Vamos lá!

Requisitos Qualidades interessantes….

Seria interessante que um profissional web tivesse, pelo menos, noção dos tópicos abaixo:

  • Inglês
  • Design
  • Ferramentas de manipulação de imagens
  • Usabilidade
  • Acessibilidade
  • Linguagens de marcação (HTML, XML, etc)
  • “Linguagens” de estilos (CSS)
  • Linguagens de programação/tecnologias (JSP, PHP, .NET, ASP, etc)
  • Banco de dados (MySQL, PostrgreSQL, SSQL, Oracle, MsSQL, Firebird, etc)

Podemos ainda definir outros tópicos como tópicos “avançados”, os quais devemos adquirir conhecimento após os supracitados.

  • Expressões regulares
  • Serviços/Servidores (httpd, ftp, etc)
  • Sistemas de arquivos de servidores (.htaccess, permissões em arquivos, cronjobs, etc)
  • SSl
  • Design patterns
  • Arquitetura de projetos (MVC, etc)
  • SEO/SEM
  • […] e tudo mais o quê conseguirmos absorber 😀 […]

Nenhum desses itens é obrigatório, mas podem facilitar a sua vida… [e a de seus colegas]

Não precisamos ser fluentes em inglês, mas todo o desenvolvimento é em inglês, se pelo menos nós entendermos o que aquele comandinho safado está querendo dizer, teremos menos dores de cabeça.

Você também pode justificar que não precisa entender de design para projetar o backend, mas vai dizer que naquele projeto simples do seu “tio” que você pegou pra fazer entre às 00:00 e às 06:00 hrs você vai contratar um freela ou outro profissional? Vai perder os 30 pila (reais) que o teu tio gentilmente vai te ceder para desenvolver aquele mega e-commerce?

Essas são só algumas constatações do auxílio que esses tópicos podem nos dar, existem muitos outros, mas acho que já deu pra entender…

Ordem de estudo proposta

Quando eu estava começando tive muita³ dificuldade em saber qual caminho deveria seguir, tanto é que aprendi PHP antes de HTML, por exemplo. Então, como já falei antes, ninguém é obrigado a seguir essa ordem, somente entender que uma coisa vem antes da outra e assim o mundo segue… 😀

1º passo: Design e linguagem de marcação

Se você já tem noção de design e sabe colocar um projeto em prática (fazer um layout no Photoshop, por exemplo), você é um forte candidato a começar a aprender a transformar isso em um site.

Comece aprendendo HTML, não dói, não é difícil, demorado, nem ao menos custa nada. Preze pelos padrões web (Webstandards), acessibilidade e pelo semântica em seus códigos.

Mais tarde vou fazer alguns tutoriais para auxilia-los…

2º passo: CSS

CSS é muito útil!
Aprenda a estruturar, posicionar, colorir, enfim, deixar o seu site bonitinho do jeito que saiu no Photoshop e ainda reutilizar o código.

3º passo: Programação

Nesse passo, podemos ainda estruturar mais 3 subitens, que são: Lógica de programação, linguagem de programação (cliente-side e server-side) e banco de dados.

4º passo: Frameworks, bootstraps, CMS’s e pré-processadores

Facilite sua vida!

Aprenda diversos frameworks e pré-processadores, como: jQuery, ExtJs, Less, CodeIgniter, ZendFramework, etc.

E pense nisso: nesse ponto você já sabe programar, portanto, programe com qualidade e sem perder tempo, utilize os frameworks, CMS’s e pré-processadores que você confia e consiga um tempinho para tomar um café…

Exemplos de CMS’s são: Joomla, WordPress, Magento, etc.

Conclusão

Bom, se você chegou até aqui, ou tem T.O.C. de leitura ou então realmente está interessado. Supondo que você esteja interessado, não se assuste com a quantidade de conteúdo, ninguém aprendeu isso do dia pra noite e nem tudo foi criado ontem. Ainda existem muitas tecnologias e técnicas para aprendermos, por isso, é bom que sejamos autodidatas e que sempre estejamos interessados em aprender coisas novas.
Por fim, seja um profissional dinâmico e aberto a novas tendências. É assim que você chega lá!

Desejo a vocês uma boa carreira e que estudem sempre!

Acompanhem o blog que postarei diversas dicas e tutoriais para ajuda-los nessa caminhada.

Grande abraço!

BrowserShots – Como testar seu site?

BrowserShots

Você conheçe o BrowserShots?

Muitas vezes queremos verificar como o site se comporta visualmente em diversos navegadores, mas nem sempre é possível ter todas as versões em nossa estação de trabalho, então utilize o browsershots.

Basta digitar a sua URL no campo solicitado, selecionar os navegadores que queres testar e sistemas operacionais e aguardar 15 minutos. Em breve terás os screenshots do seu site com as configurações especificadas.

URL: http://browsershots.org/

Descobrindo SERVICE TAG da Dell por WMI

Post rápido…

Para descobrir o service tag (etiqueta de serviço) de um equipamento Dell remotamente, além do outro post que fala de um script VBS, podes executar o seguinte comando:

c:\ wmic /user:[usuario] /password:[senha] /node:[máquina] systemenclosure get serialnumber

Onde:

[usuario] = é um usuário que vai conectar no computador remoto (se omitido será solicitado em tempo de execução)
[senha] = é a senha desse usuário (se omitido será solicitado em tempo de execução)
[máquina] = Nome NETBIOS ou endereço IP do equipamento. Se o nome conter espaços coloque-o entre aspas duplas (“”).

O resultado será algo como:

SeriaNumber
J6FFD1

DICA: o equipamento pode não ser Dell e possuir um serial number de outro fabricante.

Vou voltar para a minha correria, grande abraço!

Como criar um XML com PHP

Imagem com XML

Introdução

Com o advento do XML se faz necessário saber como criar esse tipo de arquivo. Pelo fato não precisar de um editor específico para manipular esse tipo de arquivo, muitos desenvolvedores criam a estrutura em uma variável e jogam o conteúdo na função file_put_contents, por exemplo.

Exemplo de criação de XML com parsing

$content = '<root>';
$content .= '<nodeOne>valueOne</nodeOne>';
$content .= '<nodeTwo>valueTwo</nodeTwo>';
$content .= '</root>';

file_put_contents('filename.xml', $ontent);

Tudo bem, essa é uma maneira de fazer esse trabalho, entretanto, no meu ver, é bem trabalhosa e soa como um ‘workaround’, isto é, uma ‘gambiarra’ bem sacana.

O PHP 5 oferece-nos um objeto prontinho para trabalharmos com XML, veja um exemplo comentado:

Exemplo de criação de XML com DOMDocument

//Instanciamos o objeto passando como valor a versão do XML e o encoding (código de caractéres)
$dom = new DOMDocument('1.0','UTF-8');

//Nesse ponto, informamos para o objeto que não queremos espaços em branco no documento
$dom->preserveWhiteSpaces = false;

//Aqui, dizemos para o objeto que queremos gerar uma saída formatada
$dom->formatOutput = true;

//Pronto! Configurações inicias realizadas, agora partiremos para a criação dos elementos que compõe a árvore do documento XML
//Criação do elemento root (elemento pai)
$root = $dom->createElement('root');

//Vamos criar o elemento nodeOne, conforme o exemplo anterior
$nodeOne = $dom->createElement('nodeOne');

//Agora o elemento nodeTwo
$nodeTwo = $dom->createElement('nodeTwo');

//criados os elementos, vamos adicionar um valor para cada um deles
$nodeOneTxt = $dom->createTextNode('valueOne');
$nodeTwoTxt = $dom->createTextNode('valueTwo');

//Pronto! Elementos criados, o próximo passo é organizar essa bagunça, para isso, usaremos o método appendChild() e diremos quem é elemento pai e quem é elemento filho
$nodeOne->appendChild($nodeOneTxt);
$nodeTwo->appendChild($nodeTwoTxt);
$root->appendChild($nodeOne);
$root->appendChild($nodeTwo);
$dom->appendChild($root);

//Dessa forma, dissemos que os elementos nodeOne e nodeTwo são filhos do elemento root, isto é, estão dentro de root ou um nível abaixo de root.

//Para imprimir na tela, utilizamos o método saveXML()
$dom->saveXML();

//Por fim, para salvarmos o documento, utilizamos o método save()
$dom->save('filename.xml');

Se você utilizar exatamente esse código, você terá uma saída idêntica a saída mostrada abaixo.

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <nodeOne>valueOne</nodeOne>
  <nodeTwo>valueTwo</nodeTwo>
</root>

Ainda podemos escrever um atributo em um determinado elemento, para isso, basta utilizar o método setAttribute(), que possui como parâmetros o nome do atributo e o valor do mesmo, respectivamente. Vejamos um exemplo.

Exemplo de um elemento com atributo


...

//Apenas modificando o exemplo acima, vamos acrescentar a seguinte linha de código logo após a linha 18
$nodeTwo->setAttribute('attr','valueAttr');

...

Alterando o código, a saída fica assim

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <nodeOne>valueOne</nodeOne>
  <nodeTwo attr="valueAttr">valueTwo</nodeTwo>
</root>

Video-aula: Escrevendo XML com PHP 5 (DOMDocument) por lemissel no Videolog.tv.

Buenas! Espero ter ajudado os colegas.