martes, 8 de marzo de 2016

Sintaxis básica en PHP

Este artículo ha sido actualizado el día 03/09/2017 por políticas de calidad de la información del sitio para brindar una información oportuna y actualizada.

Ya hemos visto anteriormente una pequeña Introducción al Lenguaje PHP, en esta ocasión, empezaremos con el estudio de la sintaxis básica del lenguaje y cómo combinarlo con el lenguaje de marcado HTML.

Etiquetas de Apertura y Cierre


Cómo en muchos lenguajes de scripting, PHP utiliza etiquetas que identifican el inicio y fin de un script PHP. Éstas etiquetas pueden ser usadas en scripts que contengan solamente código PHP o bien una combinación con otro lenguaje como HTML. A continuación, vemos cómo PHP se puede utilizar como lenguaje embebido dentro de HTML.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?php echo "<p>Hola mundo</p>"; ?>
  </body>
</html>

Además de esto, puede darse el caso contrario, y utilizar PHP como controlador para imprimir código HTML.

<?php
   echo "<!DOCTYPE html>";
   echo "<head><title>Título Página</title></head>";
   echo "<body>";
   echo "<p>Hola mundo!</p>";
   echo "</body>";
?>

Ambas formas son correctas y tienen usos específicos. La primera forma es común cuando se está diseñando la capa de presentación de una aplicación web. La segunda forma tiene un uso más extendido en el diseño de controladores de aplicación (lógica de negocio).

Cuando se trabajan con código PHP embebido en HTML, por lo general las impresiones en pantalla se realizan mediante la siguiente sintaxis de atajo denominada short echo tag (note la etiqueta de apertura <?=).

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?= "<p>Hola mundo</p>"; ?>
  </body>
</html>

Por otro lado, cuando se realizan scripts puramente en PHP (sin escapes a HTML), el grupo de desarrollo de PHP aconseja no agregar la etiqueta de cierre para prevenir la impresión accidental de nuevas líneas o espacios en blanco. Vea por ejemplo como en el siguiente código se ha omitido la etiqueta de cierre ?>.

<?php
class Cliente
{
   public $nombre;

   public function obtenerNombre()
   {
      return $this->nombre;
   }
}

El significado completo del código anterior puede parecer algo complejo de entender para el programador amateur, sin embargo, el objetivo de este ejemplo es ver cómo en las aplicaciones de producción puede omitirse la etiqueta de cierre en archivos puramente PHP.

Por otro lado, desde PHP 7 se eliminaron las etiquetas <%, %>, <%= disponibles en antiguas versiones de PHP junto con la etiqueta de script HTML <script language="php">. El uso de estas etiquetas está desaconsejado y se recomiendo no utilizarlas en aplicaciones PHP.

Escape de código PHP en HTML


Existen varias formas de escapar del lenguaje HTML cuando se utiliza en conjunto con PHP. Una de ellas es la que se vio en el primer ejemplo del presente post. Consiste básicamente en abrir y cerrar las etiquetas de PHP cada vez que se requiera imprimir código HTML. Sin embargo, observemos ahora cómo luce este tipo de escape con otros elementos del lenguaje como las sentencias condicionales.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?php
         if (true) {
            echo "<p>Hola mundo</p>";
         }
         else 
         {
            echo "<p>Esto no se imprime</p>";
         }
      ?>
  </body>
</html>

PHP ha diseñado una forma alternativa de sintáxis que puede ser utilizada en documentos que tienen características de plantilla. Para nuestro caso, supondremos que el archivo anterior es una plantilla, y lo modificaremos de la siguiente forma para que utilice la sintáxis alternativa. Esta forma de escapar el código PHP es mucho más entendible y compacta que la sintaxis de llaves utilizada en controladores PHP.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?php if (true): ?>
         Hola mundo 
      <?php else: ?>
         Esto no se imprime
      <?php endif; ?>
  </body>
</html>

Finalmente, si combinamos la shor echo tag con un operador ternario para simular el bloque if del código anterior, obtendríamos el siguiente script mucho más compacto.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?= (true) ? "Hola mundo" : "Esto no se imprime" ?>
  </body>
</html>

La belleza, en todo su esplendor!. Se ha refactorizado el código de los anteriores ejemplos en tan solo una línea de código PHP. Este ejemplo simple muestra algunos aspectos avanzados de la programación como lo es la refactorización de código y las sentencias de atajo como el operador ternario. De esta forma, el nuevo programador de PHP puede adentrarse poco a poco en el lenguaje implementando buenas prácticas de programación y refactorización.

Nota: Como otros lenguajes (C, Perl) cada sentencia PHP debe terminar con un punto y coma. Sin embargo, en algunas partes de los ejemplos se ha omitido dado que PHP no los requiere en dichos casos. El lector debe observar los ejemplos en los cuales se utliza la short echo tag, dado que con esta sentencia no se necesita un punto y coma.


Comentarios en PHP


PHP soporta comentarios tipo C, C++ y Unix-shell. A continuación se muestra la forma en que se puede comentar el código PHP de cada una de las formas posibles.

<?php
   // Esto es un comentario en una sola línea tipo C++
   echo "Hola ";

   # Esto es un comentario tipo Unix-shell
   echo "mundo";

   /* Este es un comentario
      multilínea */
   echo "!";
?>

Los comentarios multilínea no deben ser anidados por ninguna razón en PHP. Los comentarios en PHP sirven para documentar el código y que en el futuro los programadores puedan entender un poco mejor las razones por las cuales hemos creado variables, procedimientos, entre otros componentes del script. Para más información sobre cómo documentar el código puedes visitar phpDocumentor. Hasta la próxima!.


Referencias

- PHP: PHP tags - Manual. (2016, March 7). In PHP: Languaje Reference - Manual. Retrieved 03:42, March 7, 2016, from http://php.net/manual/en/language.basic-syntax.phptags.php
- PHP: Comments - Manual. (2016, March 7). In PHP: Languaje Reference - Manual. Retrieved 03:42, March 7, 2016, from http://php.net/manual/en/language.basic-syntax.comments.php

domingo, 21 de febrero de 2016

Schemas en Oracle Database

En anteriores post hemos visto Cómo instalar Oracle Database y Cómo instalar Oracle SQL Developer para el manejo de las bases de datos Oracle. En el post del día de hoy comenzaremos con el estudio de Oracle Database y el lenguaje estándar SQL.

Database Schemas


Un Schema (Esquema) es una colección de estructuras lógicas de datos, o esquemas de objetos. En el post Conceptos básicos en Oracle Database se explicó el concepto de estructuras lógicas y estructuras físicas de almacenamiento en Oracle Database. En lo que refiere a un esquema, este siempre pertenece a un usuario de la base de datos con el mismo nombre. A su vez, un usuario siempre tiene un esquema asociado.

Para entender esto mejor, visualicemos esquema SYSTEM del cual el usuario dueño es SYSTEM. Para observar las tablas del sistema que tienen asociado el esquema SYSTEM, es decir, donde SYSTEM es el dueño basta realizar el SELECT mostrado a continuación.


El ejemplo anterior nos indica cómo consultar las tablas asociadas a un esquema/usuario de la base de datos. Más adelante veremos cómo crear un esquema, lo cual por intuición, significa crear un usuario. Por ahora, es necesario comprender cómo es la arquitectura de las bases de datos Oracle para guardar bases teóricas sólidas. Por esto reiteró, es necesario comprender lo básico en arquitectura de Oracle leyendo el post Conceptos básicos en Oracle Database.

Los esquemas de objetos pueden ser manipulados mediante el lenguaje SQL e incluyen los siguientes tipos.

Object Schema
Clusters
Database Links
Database triggers
Dimensions
External procedure libraries
Indexes and index types
Java classes, Java resources, and Java sources
Materialized views and materialized view logs
Object tables, object types, and object views
Operators
Sequences
Stored functions, procedures and packages
Synonyms
Tables and index-organized tables
Views

Existen otros tipos de esquemas de objetos que no están contenidos en ningún esquema de bases de datos. Estos son:

Object Schema
Contexts
Directories
Profiles
Roles
Tablespaces
Users

Es de notar, que un Tablespace puede contener objetos de diferentes esquemas de bases de datos, a su vez, un objeto puede estar contenido en diferentes Tablespaces. Es decir, no existe una relación entre Esquemas y Tablespaces. A lo largo del curso Oracle, expondremos en detalle los esquemas de objetos más importantes en Oracle Database. En nuestro próximo post, entraremos en detalle sobre la creación de bases de datos y usuarios. Hasta pronto!


Referencias

- Schema Objects. (2015, July 27). In Oracle Help Center. Retrieved 03:42, February 21, 2016, from https://docs.oracle.com/cd/B19306_01/server.102/b14220/schema.htm

sábado, 20 de febrero de 2016

Instalación Sublime Text Linux

Sublime Text es un editor de texto escrito en Python que ha demostrado ser uno de los mejores editores multiplataforma desde su segunda versión. En la Página oficial de Sublime Text se pueden descargar los instaladores tanto para Windows como para Linux 32/64 bits. Según sea la arquitectura de nuestra computadora deberemos descargar la carpeta correspondiente como tarball.



Instalación sobre Debian GNU/Linux


Después de decargar el source, descomprimirmos la carpeta descargada y navegamos en consola hasta ubicarnos dentro de ella. Creamos la carpeta sublime_text en /opt, creamos el enlace simbólico a /usr/bin y copiamos el ícono de acceso a la aplicación en el menú del sistema.

cd Downloads/sublime_text_3
mkdir /sublime_text/opt
cp -Rv * /opt/sublime_text
ln -s /opt/sublime_text/sublime_text /usr/bin/sublime-text
cp /opt/sublime_text/sublime_text.desktop /usr/share/applications

Para verificar que todo ha quedado correctamente configurado, ejecutamos el comando sublime-text en consola y tendrá que abrir enseguida el Sublime Text. Debe ocurrir exactamente los mismo si ejecutamos el Sublime Text desde el menú del sistema. A continuación dejo las imagenes de ejecución en consola y la búsqueda en el menú del sistema. Hasta la próxima!.

Ejecución por consola de Sublime Text

Búsqueda de Sublime Text en el menú de GNOME

miércoles, 3 de febrero de 2016

Instalación SQL Developer

Uno de los aspectos más importantes cuando se empieza a manejar un motor de bases de datos es cómo manipular los datos de manera óptima y eficiente. Para esto cada Sistemas Gestores de Bases de Datos (SGBD) posee uno o más IDE's como solución al manejo de la información mediante el lenguaje estructurado SQL. Para el Caso de Oracle, el IDE más popular existente es SQL Developer, creado por Oracle como herrmienta de acceso gratuita. En un post anterior (Instalación Oracle Database) vimos cómo instalar Oracle en distintas plataformas. El día de hoy veremos como realizar la instalación de esta herramienta de administración de la base de datos Oracle.

Instalación sobre Windows 7/8


Lo primero que debemos hacer es descargar la última versión disponible del programa la cual podemos encontrar en el siguiente enlace.


Dependiendo de la versión del sistema operativo y de si ya se tiene una instalación del JDK de Java, se debe escoger la version adecuada para la máquina en donde será instalado. Para efectos de este tutorial, se escogerá la versión para Windows de 32/64 bits sin el instalador del JDK. 


Es necesario tener una instalación previa del JDK el cuál puede ser descargado desde el siguiente enlace:


Dado que este post no está dedicado a la instalación del JDK o alguna tecnología de desarrollo en Java no se hará énfasis en esta instalación.

Después de descargar el archivo de instalación del SQL Developer y descomprimirlo, al interior de la carpeta generada se encontrará un archivo con el nombre sqldeveloper.exe. Se debe ejecutar este archivo como administrador y seguir las instrucciones del programa. El primer mensaje que debería aparecer muestra la ruta en donde está instalada la versión del JDK en el equipo.



En este caso, la versión instalada en el sistema es la versión 8 update 65. Damos clic en el botón de OK y el programa se ejecutará automáticamente. Antes de mostrarse la interfaz principal, si es la primera vez que se ejecuta el programa aparecerá un mensaje preguntando si se desea importar preferencias de instalación de versiones anteriores del programa. Si no es el caso, damos clic en No.



Por último, se mostrará la interfaz principal del programa.



Dado que esta versión del sqldeveloper es portable deberá crearse un acceso directo del instalador en la carpeta del escritorio para poder se ejecutada a cuando se requiera.

Instalación sobre GNU/Linux (Debian)


Desde la misma página de descarga del SQL Developer (Download) se debe aceptar la licencia y descargar la última versión del programa mediante la opción Other Plataforms.Una vez descargado se debe instalar el paquete sqldeveloper-package.

apt-get install sqldeveloper-package

Con esto, se podrá ejecutar el siguiente comando

make-sqldeveloper-package -b BUILD_LOCATION ZIP_FILE_LOCATION

En donde BUILD_LOCATION es la ruta en donde quedará compilado el SQL Developer y ZIP_FILE_LOCATION es la ruta en donde se ha descargado el source para todas las plataformas. Se directorio en donde quedará compilado deberá estar vacío, por lo cual es recomendable crear un directorio exclusivo para la compilación. En la imagen de abajo de puede evidenciar la ejecución de la compilación con la versión actual del SQL Developer.



Después de esto deberá haberse generado un archivo con extensión .DEB similar a los que se instalan desde los repositorios oficiales.


Finalmente resta instalar el paquete generado con el comando dpkg.

dpkg -i sqldeveloper_4.1.3.20.78+0.2.4-1_all.deb

Al ejecutar el programa instalado, se deberá proporcionar el path en donde se tenga instalado el JDK de java para la arquitectura necesario. Por lo general esta ruta debe ser similar a la siguiente /usr/lib/jvm/java-8-openjdk-amd64. Después de proporcionar esta ruta, el programa no volverá a preguntar por el path del JDK.


Referencias

- Oracle SQL Developer. (2015, November 2). In Wikipedia, The Free Encyclopedia. Retrieved 03:42, November 4, 2015, from 
https://en.wikipedia.org/w/index.php?title=Oracle_SQL_Developer&oldid=688730169
- Install Oracle SQL Developer on Ubuntu Karmic & Lucid | UnMickAble. (2010, September 27). In UnMickAble | Linux, Python, Boston, Donegal. Retrieved 10:00, February 2, 2016, from http://timony.com/mickzblog/2010/01/09/install-oracle-sql-developer-on-ubuntu-karmic/