sexta-feira, 16 de agosto de 2013

Instalando o Laravel 4 no Ubuntu 13.04

Olá galera,

Hoje falaremos da instalação do Laravel 4 no Ubuntu 13.04. Nos próximos posts daremos início a construção de uma aplicação básica mostrando algumas funcionalidades desse framework.

Antes de realizar a instalação, temos alguns requisitos mínimos:

  • PHP >= 5.3.7
  • php5-mcrypt - Extensão MCrypt do PHP

O primeiro passo é fazer o download do framework através do link https://github.com/laravel/laravel. Crie um diretório chamado aplicacao dentro de /var/www e descompacte o conteúdo do download dentro dele.

Pelo terminal, acesse o diretório aplicacao.

cd /var/www/aplicacao

Vamos instalar e executar o Composer que é um gerenciador de dependências para o PHP.

php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
php composer.phar install

Com esses procedimentos executados já temos nosso framework instalado.

Agora crie um Virtual Host para nossa aplicação. Para isso, siga os passos do post Criando Virtual Host com Apache no Ubuntu 12.10.

Ao se acessar a url http://aplicacao teremos uma tela de erro.

Corrigiremos o problema dando permissão na pasta storage.

sudo chmod -R 777 /var/www/aplicacao/app/storage

Tente acessar a aplicação novamente e deve ser exibida a tela abaixo.

Bem pessoal por hoje é só. Um bom final de semana a todos e até a próxima.

domingo, 4 de agosto de 2013

Dicas para o SQL Server

Olá galera,

No post Aplicação PHP rodando no Linux com banco de dados SQL Server no Windows, falei sobre o problema de strings acentuadas não aparecerem na aplicação. Após esse post, recebi alguns e-mails de visitantes solicitando que listasse quais os problemas que encontrei nessa aplicação.

Comentarei sobre alguns pontos para usuários que usam PostgreSQL e não possuem muita "intimidade" com SQL Server.

1º - Se utilizarmos na constraint de relacionamento o restrict, no SQL Server devemos usar o no action.

2º - No caso de scritps de inserção de dados, no SQL Server devemos utilizar o IDENTITY_INSERT.

No PostgreSQL, por exemplo, é suficiente fazermos INSERT INTO perfil VALUES (1, 'Administrador');, já no SQL Server devemos declarar as colunas explicitamente. Segue abaixo um trecho de código exemplificando.

    SET IDENTITY_INSERT perfil ON
    INSERT INTO perfil (id, nome) VALUES (1, 'Administrador');
    SET IDENTITY_INSERT perfil OFF
  

3º - As datas no SQL Server seguem o padrão YYYYmmdd sem os hífens.

4º - No SQL Server não existe o ILIKE, o LIKE já cumpre esse papel também. Para consultas com acento devemos usar o COLLATE SQL_Latin1_General_CP1_CI_AI. Segue abaixo um exemplo.

    SELECT nome FROM pessoas WHERE nome COLLATE SQL_Latin1_General_CP1_CI_AI LIKE '%Joao%'
  

5º - No update, a chave primária não pode ser atualizada como no PostgreSQL.

6º - A concatenação no SQL Server é feita através de "+" e não com "||" como no PostgreSQL.

Com certeza há vários pontos que não foram abordados. Os que citei se referem a uma aplicação que tive como experiência.

Você gostaria de compartilhar sua experiência com esse tipo de aplicação ?! Envie um comentário ou um e-mail que terei a maior satisfação em colocar sua dica no post.

Grande abraço a todos e até a próxima.

segunda-feira, 29 de julho de 2013

Aplicação PHP rodando no Linux com banco de dados SQL Server no Windows

Olá galera,

Nesse post vou compartilhar uma solução para o caso de uma aplicação PHP rodando no Linux e o SQL Server no servidor Windows.

O primeiro ponto é ter instalado o pacote php5-sybase. Esse pacote fornece o módulo de conexão com bancos Sybase e SQL Server. No Ubuntu, basta executar o comando abaixo caso não o possua instalado.

sudo apt-get install php5-sybase

Supondo que nossa aplicação seja UTF-8 e o banco esteja usando collation Latin1_General_CI_AS. Assim que a aplicação for executada, todas as strings vindas do banco que possuem acento não vão ser exibidas.

Para solucionar o problema, vamos precisar editar um arquivo de configuração do FreeTDS. Para quem não conhece, o FreeTDS é um conjunto de bibliotecas que permite que seus programas "conversem" nativamente com SQL Server e Sybase.

No comando abaixo estou usando o VIM mas fique a vontade para utilizar editor um de sua preferência.

sudo vim /etc/freetds/freetds.conf

No trecho de configurações globais, altere o tds version para 7.0 e logo abaixo dessa linha acrescente client charset = UTF-8. Após a alteração o arquivo deve ficar similar ao trecho abaixo com as alterações em vermelho.

# Global settings are overridden by those in a database
# server specific section
[global]
    # TDS protocol version
        tds version = 7.0
        client charset = UTF-8

OBS: Não altere e nem remova os outros parâmetros nesse arquivo.

Com essa alteração o problema dos acentos devem ser resolvidos. Essa solução foi testada em servidores Ubuntu e CentOS mas deve funcionar com as demais distribuições Linux.

Bem pessoal, espero que a dica tenha sido útil.

Um abraço e até próxima.

terça-feira, 16 de julho de 2013

OpenLayers 3, o que vem por aí !!!

Olá galera,

Fiquei um tempo distante e sem postar nada devido a estar enrolado com alguns projetos. Estou dando uma passada rápida para falar sobre o OpenLayers 3 que se encontra em fase alpha.

No post Criando um cluster com Openlayers, há um bom trecho de código exibindo como é feito na versão 2.

O OpenLayers 3 foi reescrito completamente com base nas tecnologias mais recentes como HTML5, WebGL e CSS3. O que pude perceber nessa nova versão é que o código ficou muito mais limpo e simplificado. Abaixo segue um trecho de código na nova versão

  map = ol.map({
    renderTo: 'map',
    layers: [ol.layer.osm()],
    center: [5, 45],
    zoom: 10
  });
  

O mesmo código pode ser escrito da seguinte forma.

  map = ol.map()
    .renderTo('map')
    .layers([ol.layer.osm()])
    .center([5, 45])
    .zoom(10);
  

Caso alguém queira iniciar os teste com a nova versão, basta inserir o código abaixo dentro da tag <head/>

  <link rel="stylesheet" href="http://ol3js.org/en/r3.0.0-alpha.3/build/ol.css" type="text/css">
  <script src="http://ol3js.org/en/r3.0.0-alpha.3/build/ol.js"></script>
  

Fiz um pequeno exemplo de como ficaria o código final que pode ser baixado aqui.

Um abraço e até a próxima.

domingo, 2 de junho de 2013

Comandos úteis para PostgreSQL - Parte 3

Olá galera,

Hoje vamos falar sobre mais alguns comandos úteis para o PostgreSQL. O primeiro deles é o INITCAP que deixa a primeira letra da palavra maiúscula. O exemplo abaixo irá atualizar o campo fazendo a transformação das primeiras letras.

UPDATE sua_tabela SET seu_campo = INITCAP(seu_campo);

Supondo que o texto fosse PROGRAMAR É PURA DIVERSÃO, o resultado com INITCAP seria Programar É Pura Diversão. Como você pode notar, esse recurso termina não sendo muito útil. Na maior parte dos casos precisamos somente da primeira letra maiúscula.

Você vai me falar que já entendeu e vai querer uma solução correto? A resposta está na nosso próximo código.

SELECT UPPER(LEFT(seu_campo, 1)) || LOWER(SUBSTRING(seu_campo FROM 2)) FROM sua_tabela;

Utilizando uma combinação do UPPER, LEFT, LOWER e SUBSTRING chegamos ao resultado esperado.

Explicação do código:

  • UPPER(LEFT(seu_campo, 1)) - A primeira letra da esquerda é transformada em maiúscula.
  • || - Utilizado para concatenação no SQL.
  • LOWER(SUBSTRING(seu_campo FROM 2)) - A frase a partir da segunda letra é transformada em minúscula.

Com o código acima, nosso texto de exemplo passaria a ser Programar é pura diversão.

A próxima dica é muito útil para salvar datas no formato do banco. Imagine um campo character varying com datas no formato dd/MM/YYYY que precisam ser convertidas para um campo date.

SELECT DATE(seu_campo) FROM sua_tabela;

Simples não?! É somente isso e dispensa comentários.

Nossa última dica de hoje serve para formatar números. Para exemplificar, podemos citar um campo bigint com o valor 11000.56 e saída tem de vir formatada com pontos e vírgulas.

SELECT to_char(11000.56, 'FM9G999G999D99');

O resultado do código acima é 11.000,56. O segredo está na "máscara" utilizada.

Explicação do código:

  • to_char - Converte em string.
  • D - Separador decimal.
  • G - Separador de grupo.
  • FM - Suprimi espaços em branco e zeros.

Bem pessoal, era isso que tínhamos para hoje. Um grande abraço e até a próxima.