Estas en: Home > desarrolladores

Entradas etiquetadas con desarrolladores

Digital Ocean, servidores privados virtuales con discos SSD

0

Es curioso cómo ha avanzado el alojamiento web en los últimos diez años: de pasar a ofertas de hostings y servidores dedicados desatendidos o no, a disponer de una amplia oferta en la que tú decides cuántos núcleos del microprocesador quieres tener, cuanta RAM, cuanto espacio de almacenamiento, etc.

Si nos retrotraemos, podremos ver como la virtualización ha cambiado completamente la forma de ver y entender tanto el negocio del alojamiento web, como el desarrollo y despliegue de aplicaciones web.

Aplicaciones. Cuando yo empecé a programar eran páginas web o sites. Hasta el vocabulario que usamos en el día a día no está exento de evolución.

Nos profesionalizamos.

Y esa profesionalización implica adaptarse a los nuevos cambios, ya que o evolucionas o te extingues.

Continue reading “Digital Ocean, servidores privados virtuales con discos SSD” »

Cron Job WordPress

WordPress 3.x para desarrolladores: Convenciones

0

Aunque es un tema cuanto menos, aburrido, es muy necesario a la hora de trabajar en grupo, o si vas a publicar tu plugin o plantilla en WordPress. Las convenciones son normas aplicadas al código para que todos los desarrolladores puedan interpretar el código sin muchos problemas. También por estética: queda más elegante un código con la misma tabulación (por ejemplo) en cada linea que, que cada programador ponga la tabulación que se le antoje. Sin más preámbulos vamos al tema:

 

COMILLAS SIMPLES Y DOBLES

  1. <?php
  2.  
  3. echo '<a href="/static/link" title="Yeah yeah!">Link name</a>';
  4. echo "<a href='$link' title='$linktitle'>$linkname</a>"

Si no tienes nada que evaluar en la cadena, pon comillas simples, sino comillas dobles.

 

SANGRÍA

Usa tabulaciones y no espacios.

  1. <?php
  2.  
  3. [tab]$foo = 'somevalue';
  4. [tab]$foo2 = 'somevalue2';
  5. [tab]$foo34 = 'somevalue3';
  6. [tab]$foo5 = 'somevalue4';

Los arrays asociativos deberían empezar en una linea nueva.

  1. <?php
  2.  
  3. $my_array = array(
  4. [tab]'foo' => 'somevalue',
  5. [tab]'foo2' => 'somevalue2',
  6. [tab]'foo3' => 'somevalue3',
  7. [tab]'foo34' => 'somevalue3',
  8. );

 

LLAVES

En bloques multilinea se deben poner las llaves tal como sigue:

  1. <?php
  2.  
  3. if ( condition ) {
  4. action1();
  5. action2();
  6. } elseif ( condition2 && condition3 ) {
  7. action3();
  8. action4();
  9. } else {
  10. defaultaction();
  11. }

Si solo hay una linea en cada bloque se pueden omitir por brevedad.

  1. <?php
  2.  
  3. if ( condition )
  4. action1();
  5. elseif ( condition2 )
  6. action2();
  7. else
  8. action3();

Si hay un bloque con más de una linea se deberán escribir con llaves:

  1. <?php
  2.  
  3. if ( condition ) {
  4. action1();
  5. } elseif ( condition2 ) {
  6. action2a();
  7. action2b();
  8. }

Los bucles deben contenerse siempre entre llaves:

  1. <?php
  2.  
  3. foreach ( $items as $item ) {
  4. process_item( $item );
  5. }

 

NO UTILIZAR LA ETIQUETA DE INICIO CORTA DE PHP

La forma correcta sería:

<?php ... ?>

 

NO CERRAR EL SCRIPT DE PHP CON SU ETIQUETA

Es decir en vez de usar:

<?php ... ?>

Usaremos solo la inicial

<?php ...

 

USO DEL ESPACIO

Pon espacios siempre después de las comas y en ambos lados de los operadores lógicos, de comparación, de cadenas y de asignación.

x == 23
foo && bar
! foo
array( 1, 2, 3 )
$baz . '-5'
$term .= 'X'

Pon espacios a ambos lados de los paréntesis de apertura y cierre.

foreach ( $foo as $bar ) { ...

Cuando definas una función, hazlo así:

function my_function( $param1 = 'foo', $param2 = 'bar' ) { ...

Al realizar comparaciones lógicas:

if ( ! $foo ) { ...

Cuando hagas una conversión de tipos:

foreach ( (array) $foo as $bar ) { ...

$foo = (boolean) $bar;

Cuando se hace referencia a un elemento de un array, solo se incluyen espacios en blanco cuando es una variable:

$x = $foo['bar'];
$x = $foo[ $bar ];

 

FORMATEO DE SENTENCIAS SQL

Las partes de la sentencia que sean palabras de SQL deben ir en mayusculas, como SELECT o WHERE.

Es recomendable usar el método $wpdb->prepare() para formatear la sentencia SQL. Este método añadirá las comillas a los valores que lo necesiten.

$var = "dangerous'"; // Los datos en crudo podrían o no necesitar ser formateados
$id = some_foo_number(); // El dato que nosotros esperamos es un número, pero no estamos seguros

$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id ) );

%s se utiliza cuando el valor es una cadena (string) y %d cuando es un número. En el método prepare() se añaden las variables que se formatearán y añadirán a la consulta en orden.

 

CONVENCIONES DE NOMENCLATURAS

Usa letras minúsculas en variables y nombres de funciones. Separa las palabras con guiones bajos (_).

function some_name( $some_variable ) { [...] }

Los nombres de clases deben utilizar palabras capitalizadas separadas con guiones bajos. Las siglas deben estar en mayúsculas:

class Walker_Category extends Walker { [...] }
class WP_HTTP { [...] }

Los archivos deben ser nombrados descriptivamente con letras minúsculas y las palabras deben separarse con guiones.

my-plugin-name.php

Los nombres de archivos de clase se basarán en el nombre de la clase precedido de class- y los guiones bajos de la clase serán sustituidos por guiones, por ejemplo WP_Error pasa a ser:

class-wp-error.php

 

VALORES DE PARÁMETROS DE FUNCIONES AUTOEXPLICATIVOS

Se prefieren valores de cadena que solo true y false cuando se llama a las funciones.

// Correcto
function eat( $what, $speed = 'slowly' ) {
...
}
eat( 'mushrooms' );
eat( 'mushrooms', 'slowly' );
eat( 'dogfood', 'fast' );

 

OPERADOR TERNARIO

El operador ternario está bien, pero siempre que lo uses prueba que la sentencia sea verdad, no falsa. De la otra forma es confuso. En el caso de empty() se permite el uso de ! empty(), ya que es más legible.

// (si la sentencia es verdad) ? (hacer esto) : (sino, hacer esto);
$musictype = ( 'jazz' == $music ) ? 'cool' : 'blah';
// (si el campo no está vacío ) ? (hacer esto) : (sino, hacer esto);

 

CONDICIONES YODA

if( true == $the_force ){
  $victorious = you_will( $be );
}

Siempre que hagas comparaciones lógicas pon la variable en el lado derecho, la constante o el literal en el izquierdo.

Esto se utiliza para en el caso de que en vez de == pongas = (admítelo, más de una vez te habrá pasado), de esta manera saltará un error ya que no puedes asignar a una constante el valor de la variable.

Es un poco extraño, pero útil.

 

CÓDIGO LIMPIO

En general, la legibilidad es más importante que la limpieza o la brevedad.

isset( $var ) || $var = some_function();
if ( ! isset( $var ) )
    $var = some_function();

 

Logo Cassandra

Cassandra 1.x y PHP para desarrolladores SQL: La consola

0

Cassandra dispone de una herramienta a través de la consola o shell para poder trabajar con ella. Parecida a la de MySQL.

Para acceder a la consola solo tendremos que escribir lo siguiente:

> cassandra-cli

Si todo va bien nos aparecerá algo parecido al siguiente texto:

Welcome to Cassandra CLI version 1.0.7
Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.
[default@unknown]

Ahora tenemos que conectar con la base de datos de la siguiente manera:

connect localhost/9160;

Fíjate que al final del comando hay un punto y coma. Hay que añadirlo, como si fuera una sentencia SQL, sino te aparecerán unos puntos suspensivos para que finalices el comando. Si te ocurre esto último, pon el punto y coma y pulsa enter. Te debería aparecer algo como lo siguiente:

Connected to: "Test Cluster" on localhost/9160

Hay una forma de resumir los pasos anteriores en una sola linea:

> cassandra-cli -h localhost -p 9160

Ahora vamos a mostrar los keyspaces que tiene la base de datos actualmente:

show keyspaces;

[ci-box type=”warning”]Recuerda poner el punto y coma.[/ci-box]

Este comando te mostrará un listado de los keyspaces y sus column families que se encuentran en la BD, además de información relevante sobre las propiedades, tanto de los keyspaces como de sus column families correspondientes.

El objetivo de este post no es explicar con detalle cada propiedad de los keyspaces y las column families (he de admitir que muchas de ellas las desconozco), sino mostrar y enseñar la forma de trabajar por consola con Cassandra.

Vamos al lío.

 

CREAR UN KEYSPACE

Tan sencillo como la siguiente sentencia:

create keyspace my_keyspace;

Después de dos o tres segundos te mostrará algo como esto:

b511da50-88c0-11e1-0000-242d50cf1fff
 Waiting for schema agreement...
 ... schemas agree across the cluster

 

ACCEDER A UN KEYSPACE

Igual de sencillo:

use my_keyspace;

Ahora que ya estamos dentro de nuestro keyspace, toca añadir column families.

 

CREAR COLUMN FAMILIES

Muy sencillo:

create column family my_column_family;

Añadamos datos.

 

AÑADIR DATOS A UNA COLUMN FAMILY

En MySQL utilizaríamos una sentencia INSERT para añadir información a una tabla concreta, en la que anteriormente habremos creado sus columnas. En Cassandra no hay que crearlas con antelación. (En realidad se puede utlizar un archivo para configurar el esquema del keyspace dando las propiedades adecuadas a cada column family y sus respectivas columnas, pero para iniciarnos en Cassandra y aprender su funcionamiento no es necesario).

Para no complicarnos mucho primero vamos a configurar la column family.

Las column families disponen de diferentes tipos de codificación de datos para guardar los datos, es decir, si guardamos información en UTF-8 y nuestra column family está configurada como ASCII o Bytes nuestros datos se guardarán, sí, pero al recuperarla solo veremos un batiburrillo de número y letras.

Para evitar esto configuramos la column family para que guarde los datos en UTF-8:

assume my_column_family keys as utf8;
assume my_column_family comparator as utf8;
assume my_column_family validator as utf8;

Ahora ya podemos crear nuestro primer registro:

set my_column_family['1']['nombre'] = 'pepito';
 set my_column_family['1']['edad'] = '120';

Si ejecutamos el siguiente comando:

get my_column_family['1'];

Nos devolverá las columnas que tuviese la fila con id = 1, junto con los correspondientes valores de esas columnas.

Esto es el funcionamiento básico de la consola de Cassandra. Hay muchos más comandos para obtener información de Cassandra y realizar algunas tareas más, para obtener la ayuda y ver estos comandos solo tienes que escribir lo siguiente:

help;

¿Fácil verdad? Por último, para salir de la consola:

quit;
Logo Cassandra

Cassandra y PHP para desarrolladores SQL: La consola

0

Cassandra dispone de una herramienta a través de la consola o shell para poder trabajar con ella. Parecida a la de MySQL.

Para acceder a la consola solo tendremos que escribir lo siguiente:

> cassandra-cli

Si todo va bien nos aparecerá algo parecido al siguiente texto:

Welcome to Cassandra CLI version 1.0.7

Type ‘help;’ or ‘?’ for help.
Type ‘quit;’ or ‘exit;’ to quit.

[default@unknown]

Ahora tenemos que conectar con la base de datos de la siguiente manera:

connect localhost/9160;

Fíjate que al final del comando hay un punto y coma. Hay que añadirlo, como si fuera una sentencia SQL, sino te aparecerán unos puntos suspensivos para que finalices el comando. Si te ocurre esto último, pon el punto y coma y pulsa enter. Te debería aparecer algo como lo siguiente:

Connected to: “Test Cluster” on localhost/9160

Hay una forma de resumir los pasos anteriores en una sola linea:

> cassandra-cli -h localhost -p 9160

Ahora vamos a mostrar los keyspaces que tiene la base de datos actualmente:

show keyspaces;

Recuerda poner el punto y coma.

Este comando te mostrará un listado de los keyspaces y sus column families que se encuentran en la BD, además de información relevante sobre las propiedades, tanto de los keyspaces como de sus column families correspondientes.

El objetivo de este post no es explicar con detalle cada propiedad de los keyspaces y las column families (he de admitir que muchas de ellas las desconozco), sino mostrar y enseñar la forma de trabajar por consola con Cassandra.

Vamos al lío.

 

CREAR UN KEYSPACE

Tan sencillo como la siguiente sentencia:

create keyspace my_keyspace;

Después de dos o tres segundos te mostrará algo como esto:

b511da50-88c0-11e1-0000-242d50cf1fff
Waiting for schema agreement…
… schemas agree across the cluster

 

ACCEDER A UN KEYSPACE

Igual de sencillo:

use my_keyspace;

Ahora que ya estamos dentro de nuestro keyspace, toca añadir column families.

 

CREAR COLUMN FAMILIES

Muy sencillo:

create column family my_column_family;

Añadamos datos.

 

AÑADIR DATOS A UNA COLUMN FAMILY

En MySQL utilizaríamos una sentencia INSERT para añadir información a una tabla concreta, en la que anteriormente habremos creado sus columnas. En Cassandra no hay que crearlas con antelación. (En realidad se puede utlizar un archivo para configurar el esquema del keyspace dando las propiedades adecuadas a cada column family y sus respectivas columnas, pero para iniciarnos en Cassandra y aprender su funcionamiento no es necesario).

Para no complicarnos mucho primero vamos a configurar la column family.

Las column families disponen de diferentes codificación de datos para guardar los datos, es decir, si guardamos información en UTF-8 y nuestra column family está configurada como ASCII o Bytes nuestros datos se guardarán, sí, pero al recuperarla solo veremos un batiburrillo de número y letras.

Para evitar esto configuramos la column family para que guarde los datos en UTF-8:

assume my_column_family keys as utf8;
assume my_column_family comparator as utf8;
assume my_column_family validator as utf8;

Ahora ya podemos crear nuestro primer registro:

set my_column_family[‘1’][‘nombre’] = ‘pepito’;
set my_column_family[‘1’][‘edad’] = ‘120’;

Si ejecutamos el siguiente comando:

get my_column_family[‘1’];

Nos devolverá las columnas que tuviese la fila con id = 1, junto con los correspondientes valores de esas columnas.

Esto es el funcionamiento básico de la consola de Cassandra. Hay muchos más comandos para obtener información de Cassandra y realizar algunas tareas más, para obtener la ayuda y ver estos comandos solo tienes que escribir lo siguiente:

help;

¿Fácil verdad? Por último, para salir de la consola:

quit;

Ir arriba