viernes, 28 de febrero de 2014

dar una fecha un tiempo atras - PHP

En muchas ocasiones tendremos la necesidad de mostrar ya sea por pantalla o simplemente almacenar en una variable una fecha en concreto, y la mayoría de las veces es una fecha pasada, como pueda ser una semana antes, un mes antes, o un año antes.

Para ello utilizaremos los métodos date() y mktime();

mktime() nos devuelve el timestamp de una fecha, si no le damos ningún parámetro nos devuelve la fecha actual; ojo fecha y hora UTC en España en concreto usamos UTC +1 podemos comprobar la fecha devuelta copiando el código que nos da, que sera algo al estilo: 1393605543 que es la fecha en la que estoy escribiendo esto; ingresando esos números en http://www.unixtimestamp.com/index.php

Por otro lado podemos formatearlo para verlo en días mes año, o como mas nos guste gracias a la función date(), a la que pasandole un string con el formato deseado lo tendremos todo solucionado, Y lo usaremos para la posición del año, m para la del mes, y d para el día. entre medias podemos poner / - espacio, lo que mas nos guste.

Para sacar una fecha en concreto en el mktime usaremos la función date() y le restaremos, o sumaremos, según necesitemos los días, meses, años e incluso minutos, horas o segundos por ejemplo:


  • date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))) -> nos da la fecha de hace un mes
  • date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d")-1, date("Y"))) -> nos da la fecha de ayer
  • date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d"), date("Y")-1)) -> nos da la fecha de hace un año
  • date( "Y-m-d",mktime(0, 0, 0, date("m")+1,date("d"), date("Y"))) -> nos da la fecha de dentro de un mes
  • date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d")+7, date("Y"))) -> nos da la fecha de dentro de una semana
  • date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d"), date("Y")+1)) -> nos da la fecha de dentro de un año


Os dejo un par de ejemplos de su uso


<?php echo date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))); ?>

<input type="date" name="desde" id="desde" value="<?php echo date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))); ?>"/> al <input type="date" name="hasta" id="hasta" value="<?php echo date('Y-m-d'); ?>"/>

miércoles, 26 de febrero de 2014

Función para obtener un parametro pasado por la URL - JS

El otro día no tuve que recoger un parámetro en concreto de la URL por Java Script, sabia que lo había hecho antes, pero no recordaba como.

Así que mirando proyectos antiguos me encontré con esta función, que va a la perfección

    function getParam(nombre){
        name = nombre.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+nombre+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var resultados = regex.exec( window.location.href );
        if( resultados == null ){
            return "";
        }else {
            return resultados[1];
        }
    }

Tan solo hay que invocarla y pasarle el String del cual queremos recuperar los datos que tenemos en nuestra URL

Espero os sirva de ayuda

domingo, 23 de febrero de 2014

This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in

Hoy me encontrado con este error :
This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in

Justo hoy he arrancado un nuevo proyecto Android y la versión de destino es la 4.4.2 por lo que he actualizado el SDK, instalando dicha versión y descargando las actualizaciones de las anteriores que se me quedaron anticuadas, para mi sorpresa cuando abro el activity no tenia nada visible, y me aparecía dicho error después de ir a help -> check for Updates y que me dijera que no tenia ninguna actualización estaba desconcertado y googleando encontré lo siguiente:

http://stackoverflow.com/questions/18852983/eclipse-reports-rendering-library-more-recent-than-adt-plug-in

Allí dicen simplemente que le demos a help -> install New Software, en donde veremos una pantalla como la siguiente


Allí deberemos teclear la siguiente URL: https://dl-ssl.google.com/android/eclipse/

y seleccionar Developer Tool; darle a Next y esperar a que termine, cuando lo haga nos dirá que necesita reiniciar eclipse, le diremos que si y listo

Un saludo y espero que os sirva de utilidad.

jueves, 20 de febrero de 2014

IOS - TableView

En esta ocasión voy a montar un Ejemplo de un Table View básico en IOS

Para ello lo primero que necesitamos es abrir el XCode y crear un proyecto nuevo


Una vez creado nuestro nuevo proyecto iremos a nuestro StoryBoard


Y arrastraremos asta el un nuevo TableView Controller


para poder ver algo como lo siguiente


Una vez lo tengamos, crearemos una nueva clase:


Y veremos algo así:


Después de darle a Next tenemos que teclear el nombre de la clase que vamos a crear y deberemos seleccionar la clase de la que queremos heredar UITableViewController 


El siguiente paso sera vincular nuestra vista con la clase que acabamos de crear, para ello en nuestro StoryBoard seleccionaremos el TableViewController y a la derecha lo vincularemos con nuestra clase, como vemos en la imagen de abajo:



Ahora es un buen momento para dar el número de secciones que tiene la celda que utilizaremos, también en nuestra table view; en nuestro ejemplo tan solo usaremos una, como vemos en la imagen de abajo.



llegados a este punto deberemos vincular la celda con el identificador que usaremos en nuestro código, para ello seleccionaremos nuestra celda, y en el campo de identificador escribiremos Cell, ya que es el nombre que nos darán por defecto, si queremos darle otro identificador también podremos, pero habrá que cambiarlo también en el código.


Ahora solo nos queda cambiar 4 cosillas en nuestro código, para que quede tal que así:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    return 20;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        cell.textLabel.text = @"www.rogamainformatica.es";
    
    return cell;
    
    
}

Tan solo necesitamos cambiar
en el método numberOfSectionsInTableView que nos de vuelva 1
en el método numberOfRowsInSection pondremos que nos devuelva 20, lo cual sera el número de celdas que usaremos.
Y  en cellForRowAtIndexPath teclearemos:
    static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        cell.textLabel.text = @"www.rogamainformatica.es";
    
    return cell;

En donde únicamente declaramos el identificador de la celda y le asignamos un texto

Podéis ver el vídeo con este mismo ejemplo en menos de 5 minutos aquí debajo



Como siempre podeis descargar el codigo desde : IOS Ejemplo de TableView

domingo, 16 de febrero de 2014

XCode comentar / descomentar varias lineas de una vez

para descomentar o comentar varias lineas de una sola vez en XCode tan solo deberemos pulsar cmd + shift + 7

así si por ejemplo tenemos:

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    
    // Configure the cell...
    cell.textLabel.text = @"LEXCode";
    

    return cell;


conseguiremos:

//    static NSString *CellIdentifier = @"Cell";
//    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//    
//    // Configure the cell...
//    cell.textLabel.text = @"LEXCode";
//    
//    return cell;

Y viceversa

jueves, 13 de febrero de 2014

Error: Apache shutdown unexpectedly. [Apache] This may be due to a blocked port, missing dependencies

Seguramente a todos nos a pasado algo por el estilo, intentábamos arrancar nuestro servidor apache y nos da un error similar a este:
13:50:25  [Apache] Status change detected: stopped
13:50:25  [Apache] Error: Apache shutdown unexpectedly.
13:50:25  [Apache] This may be due to a blocked port, missing dependencies,
13:50:25  [Apache] improper privileges, a crash, or a shutdown by another method.
13:50:25  [Apache] Press the Logs button to view error logs and check
13:50:25  [Apache] the Windows Event Viewer for more clues
13:50:25  [Apache] If you need more help, copy and post this
13:50:25  [Apache] entire log window on the forums



Es tan solo por que tenemos alguna aplicación arrancada que utiliza alguno de los puertos que usa Apache, los puertos por defecto son el 80, y el 443, Skype es muy dado a usarlos, y este es el caso.

Tenemos varias soluciones. la mas rápida, aunque menos eficiente es:

  • Podemos cerrar el Skype y arrancar nuestro Apache, después podremos volver a arrancar nuestro Skype
  • La que os recomiendo es ir al menú superior de nuestro Skype -> Herramientas -> Opciones.


 Y en la ventana que se nos habré, ir a la opción Conexión y después desmarcar la casilla de usar puertos 80, y 443; aceptaremos los cambios y arreglado, ya podremos arrancar nuestro Apache con el Skype abierto siempre que queramos


  • Una tercera solución, aunque mas elaborada, seria cambiar los puertos de Apache en el php.ini.

Esta configuración es valida para todos los Skype que no sean los "nativos" de Windows 8

viernes, 7 de febrero de 2014

Enviar mensaje de correo electrónico de prueba: No se puede enviar el mensaje. Compruebe la dirección de correo electrónico en las propiedades de la cuenta. El servidor respondió: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)

Enviar mensaje de correo electrónico de prueba: No se puede enviar el mensaje. Compruebe la dirección de correo electrónico en las propiedades de la cuenta.  El servidor respondió: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)

Aparece cuando en Outlook, o nuestro gestor de correos no se ha marcado la casilla en mas configuraciones -> Servidor de salida -> Mi servidor de salida (SMTP) requiere autenticación y claro esta es necesaria.


jueves, 6 de febrero de 2014

XML error parsing SOAP payload on line 1: Invalid character

Al usar un webservice aveces podemos recibir este error, no es ni mas ni menos a que hemos mandado algún carácter extraño para la codificación que estemos usando, en mi caso mandaba una ñ en un UTF-8, si cambiamos la codificación a ISO-8859-1 lo arreglaremos, para ello usando NuSoap, deberemos abrir el archivo nusoap.php, que esta ubicado en nuestro proyecto en la carpeta NuSoap/lib
y en la linea 149 copiar lo siguiente

    var $soap_defencoding = 'ISO-8859-1';
    //var $soap_defencoding = 'UTF-8';

Solucionado ;)