Alberto Viana
  • Home
  • About
KEEP IN TOUCH

Integração Contínua e PHP

Nov03
2011
Leave a Comment Written by Alberto

Olá pessoal segue a palestra ministrada no TDC 2011 sobre Integração Contínua e PHP.

Integracao continua-e-php
Posted in Continuous Integration, PHP, Presentations

How to automated PHP 5.3 compatibility

Sep28
2011
Leave a Comment Written by Alberto

These days I needed to test an application, this application worked in PHP 5.2 and now I need to work in PHP 5.3. So I was looking for how can I test it using PHP Code Sniffer and I found PHP53Compatibility and used it to test my application.

So how can I use it???

  • It’s so easy first you’ll install PHP_CodeSniffer
 pear install PHP_CodeSniffer 
  • Download the latest release at http://github.com/wimg/PHP53Compat_CodeSniffer/downloads
  • Rename PHP53Compat_CodeSniffer directory to PHP53Compatibility and copy to PHP53Compatibility directory to {your pear path}/PHP/CodeSniffer/Standards

I wrote an script that runs on each  phpcs directory script and it’ll save to build folder. This script should be the root directory of your Project.


#!/bin/bash

path=`pwd`;

mkdir build;

for file in $(find $1 -type f -iname '*.php'); do
dirname=`dirname $file`;
dir=`echo ${dirname#*/}`;
scriptname=`basename "$file"`;

mkdir -p $path/build/$dir;

phpcs --standard=PHP53Compatibility $file > $path/build/$dir$scriptname.txt;
echo $scriptname;
done;

It’ll help you, but you need to check your application manually too.
I hope you enjoy.

Reference
http://techblog.wimgodden.be/tag/codesniffer/
https://github.com/wimg/PHP53Compat_CodeSniffer
http://pear.php.net/package/PHP_CodeSniffer

Posted in CodeSniffer, PHP - Tagged PHP 5.3, phpcs, PHP_CodeSniffer

Zend Framework and Oracle XMLType

Sep19
2011
Leave a Comment Written by Alberto

So few days ago I needed to insert Oracle XMLtype with Zend Framework. I used oracle adapter to wrote it in Zend Framework. I was looking for and I found on Chris Jones Blog.

Database

-- Table definition is:
create table xwarehouses (warehouse_id number, warehouse_spec xmltype);

Insert with Zend Framework

<?php

class App_Xml extends Zend_Db_Table_Abstract
{
    public function insertXML()
    {

        // XML data to be inserted
        $xml =<<<EOF
        <?xml version="1.0"?>
        <Warehouse>
        <WarehouseId>1</WarehouseId>
        <WarehouseName>Southlake, Texas</WarehouseName>
        <Building>Owned</Building>
        <Area>25000</Area>
        <Docks>2</Docks>
        <DockType>Rear load</DockType>
        <WaterAccess>true</WaterAccess>
        <RailAccess>N</RailAccess>
        <Parking>Street</Parking>
        <VClearance>10</VClearance>
        </Warehouse>
        EOF;

        $id = 1;

        $stmt = $this->_db->prepare("insert into xwarehouses (warehouse_id, warehouse_spec)
                                         values ({$id}, XMLType(:clob))");
        $lob = oci_new_descriptor($this->getAdapter()->getConnection(), OCI_D_LOB);
        $stmt->bindParam(':clob', $lob, OCI_B_CLOB, -1);
        $lob->writeTemporary($xml);
        $stmt->execute();
        $lob->close();

    }

}

Reference

  • http://blogs.oracle.com/opal/entry/inserting_and_updating_oracle_1
  • http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html page 207
Posted in Oracle, PHP, Zend Framework - Tagged Oracle, oracle xmltype, PHP, Zend Framework

Updating your pear on Ubuntu

Apr16
2011
Leave a Comment Written by Alberto

It’s so easy to update your pear on Ubuntu with php 5.3.
If you have pear installed, before you should remove  php-pear:

alberto@zx350:~$ sudo apt-get remove php-pear

From now we will install a new version of  pear:

alberto@zx350:~$ wget http://pear.php.net/go-pear.phar
alberto@zx350:~$ sudo php go-pear.phar

When this message to show press Enter:

Below is a suggested file layout for your new PEAR installation.  To change individual locations, type the number in front of the directory.  Type ‘all’ to change all of them or simply press Enter to accept these locations.
1. Installation base ($prefix)   : /usr
2. Temporary directory for processing  : /tmp/pear/install
3. Temporary directory for downloads   : /tmp/pear/install
4. Binaries directory  : /usr/bin
5. PHP code directory ($php_dir)  : /usr/share/php
6. Documentation directory  : /usr/docs
7. Data directory  : /usr/data
8. User-modifiable configuration files directory : /usr/cfg
9. Public Web Files directory  : /usr/www
10. Tests directory  : /usr/tests
11. Name of configuration file  : /etc/pear.conf
1-11, ‘all’ or Enter to continue:

After we need install xdebug:

alberto@zx350:~$ sudo apt-get install php5-xdebug

So install of pear is very easy, for more information look http://pear.php.net/manual/en/installation.getting.php

Posted in PHP, Ubuntu - Tagged pear, PHP 5.3, Ubuntu, xdebug

Billy Graham on Technology, Faith and Suffering

Apr07
2011
Leave a Comment Written by Alberto

Posted in Tecnology - Tagged billy graham, faith, suffering, tecnology

How to install Oracle Database XE on Ubuntu

Mar27
2011
Leave a Comment Written by Alberto

Hi Everyone,

Today we’ll install Oracle Database XE on Ubuntu, it’s very easy, so lets go.

First we have to download of Oracle Database XE in http://download.oracle.com/otn/linux/oracle10g/xe/10201/oracle-xe_10.2.0.1-1.0_i386.deb

After we have to install some libraries on Ubuntu.

 alberto@zx350:~$ sudo apt-get update 

Then

 alberto@zx350:~$ sudo apt-get install libc6 libaio1 

From now we can to install Oracle Database XE on Ubuntu.

 alberto@zx350:~$ sudo dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb 

If your ubuntu is 64bits use this command

 alberto@zx350:~$ sudo dpkg -i --force-architecture oracle-xe- universal_10.2.0.1-1.0_i386.deb 

Finally, we setup Oracle Database XE:

 alberto@zx350:~$ sudo /etc/init.d/oracle-xe configure 

View this page on a web browser at localhost:8080/apex . In this page you can manage your Oracle Database XE.

I hope you enjoy.


Posted in Oracle, Ubuntu - Tagged Oracle, Oracle XE, Ubuntu

How to install PHP on Ubuntu

Mar26
2011
Leave a Comment Written by Alberto

Hi,

Today I’ll teach you how to install PHP on ubuntu.

“PHP, which stands for PHP: Hypertext Preprocessor is a widely-used Open Source general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. Its syntax draws upon C, Java, and Perl, and is easy to learn. The main goal of the language is to allow web developers to write dynamically generated web pages quickly, but you can do much more with PHP” (On PHP website).

Let’s go to install:

alberto@zx350:~$ sudo apt-get update

Installing some extensions that I think important

alberto@zx350:~$ sudo apt-get install apache2 libapache2-mod-php5 php5 php5-mysql php5-mcrypt php5-gd php5-curl

The setup is ready, from now we’ll test the PHP.

Finally, we restart Apache2:

alberto@zx350:~$ sudo /etc/init.d/apache2 restart

Write a script test

alberto@zx350:~$ cd /var/www
alberto@zx350:/var/www$ vi test.php

and insert the following line

<?php phpinfo(); ?>

View this page on a web browser at localhost/test.php . In this page you can to see all the extensions that were installed

I hope you enjoy.

Posted in PHP, Ubuntu - Tagged Apache, Apache 2, PHP, PHP 5.3, PHP5, Ubuntu

Design Pattern

Mar15
2011
Leave a Comment Written by Alberto

Padrões de Projeto são estruturas propostas para soluções de arquitetura de determinados problemas, de tal forma que você possa utilizar essa solução em vários outros projetos sem ter que refazê-lo. A seguir veremos os principais padrões de projeto.

Padrões de Criação

Os Padrões de Criação têm a finalidade de abstrair o processo de instanciação de objetos, tornando possível assim que um sistema fique independente de como suas partes são criadas, compostas e representadas. Isso significa dizer que estes padrões contribuem para que o software seja mais dependente da composição de suas partes-objetos do que da herança entre os mesmos.

Fazem parte desse padrão:

Padrão Finalidade
Abstract Factory Fornecer um interface para criar famílias de objetos que se relacionem ou que sejam dependentes sem especificar a classe concreta dos mesmos.
Builder Facilitar a criação de um objeto complexo de modo que este processo possa criar diferentes representações do objeto.
Factory Method Fornecer uma interface para criar um objeto, mas deixar que as subclasses decidam que classe instanciar
Prototype Especificar os tipos de objetos a serem criados via uma instância protótipo para que depois novos objetos sejam copiados a partir dele.
Singleton Garantir que um objeto tenha uma única instância fornecendo um acesso global a esta instância.

Padrões Estruturais

Objetos são obtidos de classes, que podem ser numericamente significativas e apresentar considerável complexidade de relacionamento entre elas. Padrões Estruturais apresentam organizações elegantes onde classes são combinadas para formar estruturas maiores. A idéia é oferecer combinações gerenciáveis de classes.

Fazem parte desse padrão:

Padrão Finalidade
Adapter Converte a interface de uma classe em outra interface, esperada pelos clientes.
Bridge Separar uma abstração da sua implementação, de modo que as duas possam trabalhar independentes.
Composite Compor objetos em estruturas de árvore para separar a hierarquias todo-parte.
Decorator Fornecer de forma dinâmica responsabilidades adicionais a objetos.
Facade Fornecer uma interface unificada para um conjunto de interfaces em um subsistema.
Flyweight Usar compartilhamento para suportar eficientemente grandes quantidades de objetos de granularidade fina de maneira eficiente.
Proxy Fornece um substituto ou marcador de localização de outro objeto para controlar o acesso ao mesmo.

Padrões Comportamentais

Padrões que se encaixam nessa categoria se preocupam basicamente com algoritmos e a atribuição de responsabilidade entre objetos, esse padrão não especifica apenas padrões de objetos e classes, mas também padrões de comunicação entre estes.

Fazem parte desse padrão:

Padrão Finalidade
Chain Of Responsibility Evita o acoplamento do remetente de uma solicitação ao seu destinatário, dando mais de um objeto a chance de tratar a situação.
Command Encapsula uma solicitação como um objeto, de forma que permita a parametrização com os clientes com diferentes solicitações, enfileire ou registre (log) solicitações dando suporte assim a operações que podem ser desfeitas.
Interpreter Dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador que usa a representação para interpretar as sentenças nesta linguagem.
Iterator Fornece uma maneira de acessar seqüencialmente os elementos de um objeto agregado sem expor sua representação subjacente.
Mediator Define um projeto que encapsula como um conjunto de objetos interage.
Memento Sem violar a encapsulação, captura a externaliza um estado interno de um objeto, de modo que ele possa posteriormente ser restaurado para este estado.
Observer Define uma dependência um para muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são automaticamente notificados e atualizados.
State Permite que um objeto altere seu comportamento quando seu estado interno muda.
Strategy Define uma família de algoritmos, encapsulando cada um deles para torná-los intercambiáveis.
Template Method Define o esqueleto de um algoritmo em uma operação postergando a definição de alguns passos para subclasses.
Visitor Representa uma operação a ser executada sobre os elementos da estrutura de um objeto, permitindo que seja possível definir uma nova operação sem mudar as classes dos elementos sobre os quais opera.

Conclusão

Padrões de Projeto para serem empregados é necessário a existência de um problema, o projetista deve ter a habilidade para, dado determinado contexto, identificar a viabilidade ou não do emprego de um padrão, sendo que padrão não é, portanto, um remédio para todos os males, mas apenas um em particular.

Referências

  • PHP Profissional

Melo, Alexandre Altair de

Nascimento, Mauricio G. F.

Ed. Novatec

  • Padrões de Projeto – Introdução aos Padrões da “Gangue dos Quatro”

Lucena, Fábio Nogueira de

Posted in Design Pattern - Tagged Desenvolvimento, Design Pattern, Development, Padrão de Projeto

Recent Posts

  • Integração Contínua e PHP
  • How to automated PHP 5.3 compatibility
  • Zend Framework and Oracle XMLType
  • Updating your pear on Ubuntu
  • Billy Graham on Technology, Faith and Suffering

Categories

  • Continuous Integration
  • Development
    • Design Pattern
    • Oracle
    • PHP
      • CodeSniffer
      • Zend Framework
  • Presentations
  • Tecnology
  • Ubuntu

Tags

Apache Apache 2 billy graham Desenvolvimento Design Pattern Development faith Oracle Oracle XE oracle xmltype Padrão de Projeto pear PHP PHP5 PHP 5.3 phpcs PHP_CodeSniffer suffering tecnology Ubuntu xdebug Zend Framework

RSS Syndication

  • All posts
  • All comments

EvoLve theme by Theme4Press  •  Powered by WordPress Alberto Viana