Blog

General

Punto y coma

Hoy se cierra un capitulo en mi vida.

Después de casi tres años junto al gran equipo de SI2, donde han ido y venido distintas personas. Aquí he tenido la oportunidad de crecer profesionalmente, ya que llegue con poca experiencia en el desarrollo móvil y actualmente puedo realizar cualquier tipo de trabajo. Debido al cambio de tecnología que realizamos hace un año, en el que dimos el salto a React Native  y dejar “de lado” la programación de apps en nativo.

Esto supuso un gran reto, puesto que fue como “empezar desde cero”.

Por otro lado, puedo asegurar que, además de muy buenos contactos profesionales, me llevo grandes amigos (eso espero.. ejem).

A partir del lunes empiezo una nueva aventura en Front ID.

React Native

VSCode para React Native

Hoy os traigo un listado de plugins para mi esenciales, para hacer el día a día un poquito más fácil usando Visual Studio Code para programar en React Native.

Fundamentales

Adicionales

Tema

Además añado en las propiedades de vscode las siguientes propiedades.

"editor.fontFamily": "Roboto Mono",
"editor.fontWeight": "100",
"editor.fontSize": 15,
"editor.renderWhitespace": "boundary",
"editor.cursorBlinking": "solid"
Backend

Consultar entradas en WordPress

Para hacer una consulta de todas las entradas en WordPress, debemos de crear un array con los argumentos que queremos. Como podemos ver a continuación:

$args = array(
  'showposts' => -1,
  'orderby' => 'date',
  'order' => 'DESC',
  'tax_query' => array(
  array(
    'taxonomy' => 'category',
    'terms' => array('category-name'),
    'field' => 'slug',
    'operator' => 'IN',
    )
  )
);

En este ejemplo, empezamos especificando showposts  a -1, ésto es para que nos muestre todo los posts que hay en base de datos, si queremos un límite, basta con establecerlo en esa variable, también podemos ver que se añadimos al array tax_query, esto es para hacer un filtro por categoría de entrada (cambiar ‘category-name’ por el slug de la categoría que quieres filtrar), si no queremos filtrar y que nuestra consulta muestre todas las entrada, basta tan solo con eliminarla del array de argumentos. Podemos hacer que sea una búsqueda que incluya (‘operator’ => ‘IN’) o que no incluya dicha categoría (‘operator => ‘NOT IN’).

Ahora a través de funciones de WordPress, realizamos la llamada junto con el array de argumentos que acabamos de crear.

// The Query
 $the_loop = new WP_Query($args); 

Ya tan solo nos queda en primer caso comprobar si contiene la consulta alguna entrada y recorrerlas para poder formar nuestro JSON.

if($the_loop->have_posts()):
  while($the_loop->have_posts()):
    $the_loop->the_post();
    $title = get_the_title();
    $date = get_the_date("Y-m-d H:i:s");
    $author = get_the_author();
    $excerpt = get_the_excerpt();
    $permalink = get_permalink();
    ...
    ...
  endwhile;
endif;

Saludos!

iOS

Dialogo en Swift

Para mostrar un dialogo con dos botones en Swift tan solo hay que añadir el siguiente código.

let dialog = UIAlertController(title: "Tittle", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)

dialog.addAction(UIAlertAction(title: "OK", style: .Default, handler: { (action: UIAlertAction!) in print("Handle Ok logic here") })) dialog.addAction(UIAlertAction(title: "CANCEL", style: .Default, handler: { (action: UIAlertAction!) in print("Handle Cancel Logic here") })) presentViewController(dialog, animated: true, completion: nil)

Un saludo

iOS

NSUserDefaults como leer y escribir

Para leer  y/o escribir en la memoria local del dispositivo mientras esté corriendo la App en Swift, usaremos NSUserDefaults.

Escribir

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setInteger(25, forKey: "Stock")
defaults.setBool(true, forKey: "isPremium")
defaults.setDouble(19.20, forKey: "Price")
defaults.setObject("Ratón", forKey: "Name")
defaults.setObject(NSDate(), forKey: "Created")

Leer

let defaults = NSUserDefaults.standardUserDefaults()

let stock = defaults.integerForKey("Stock")
let premium = defaults.boolForKey("isPremium")
let price = defaults.doubleForKey("Price")
let name = defaults.objectForKey("Name") as! String

Hay que tener cuidado y no abusar de esta memoria, puesto que es pequeña y para guardar gran cantidad de datos habría que crear una base de datos local.

Drupal

Una aplicación real de Drupal 8 como servidor RESTFul…

Hola!

Adjunto el video de la charla dada junto a Marcelo Tosco en la Drupalcamp Spain 2016 · Granada y los enlaces del código fuente tanto del Drupal 8 usado como de la app de Android.

 

También os dejo por aquí las diapositivas usadas.

 

Código fuente

Drupal – http://bit.ly/22QR3qf
( https://bitbucket.org/capynet/charla-rest-dcamp-2016 )

Android – http://bit.ly/1ptjayM
( https://bitbucket.org/ccamposfuentes/drupalcamp-android )

Android

Picasso android

El primer paso que tenemos que realizar es añadir la librería a nuestro proyecto, para ello, añadimos en el gradle del proyecto la siguiente línea

compile 'com.squareup.picasso:picasso:2.5.2'

Para poner una imágen obtenida desde una url en un ImageView, bastaría con poner esta línea de código:


Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

 

Fuente: http://square.github.io/picasso/

Android

ORMLite, otra forma de persistencia local

Existen múltiples maneras de persistencia local en Android, la más famosa y quizás mas usada es SQLite, pero aquí vamos a ver una alternativa que bajo mi punto de vista, es mucho más potente y hace el desarrollo un poco más llevadero, ésta se llama ORMLite.

Veremos qué debemos de hacer para implementarlo en nuestro proyecto Android y cómo usarlo para insertar, editar, eliminar y buscar contenido en nuestra base de datos local.

Read more “ORMLite, otra forma de persistencia local”

Android

Comunicación Android con Wear

Para realizar la comunicación de la companion app con el wear, vamos a usar Data layer messages.

Vamos a crear una primera aplicación con la que vamos a pasarle un simple string a nuestro wear a través de nuestro teléfono.

Envío de mensajes

Lo primero que debemos de hacer, es añadir al gradle las siguientes dependencias:

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:appcompat-v7:21.0.+'
  compile 'com.google.android.gms:play-services:6.5.+'
}

Read more “Comunicación Android con Wear”