Archivo de la categoría: Programación

__PHP_Incomplete_Class

A quien no le ha pasado que cuando esta trabajando con autoload y tiene objetos en session y luego quiere trabajar con estos objetos aparecen los objetos incomprensibles e inaccesibles __PHP_Incomplete_Class
o un ejemplo de var_dump al objeto de session :

object(__PHP_Incomplete_Class)[1]
  public '__PHP_Incomplete_Class_Name' => string 'octavius\controlador\intranet\usuario\UsuarioTO' (length=47)
  private 'idUsuario' (octavius\controlador\intranet\usuario\UsuarioTO) => string '2' (length=1)
  private 'strPassword' (octavius\controlador\intranet\usuario\UsuarioTO) => null
  private 'Rol' (octavius\controlador\intranet\usuario\UsuarioTO) => 
    object(__PHP_Incomplete_Class)[2]

Bueno el problema es el siguiente, se hace el session_start antes del llamado del autoload, entonces no es capaz de detectar las clases de los objetos o las referencias de estos.
La solución es muy simple:

Primero defines tu auload, o lo incluyes, y luego después de eso agregas el session_start. Y podrás trabajar con tus objetos.

Después del arreglo el var_dump quedaría así:

object(octavius\controlador\intranet\usuario\UsuarioTO)[2]
  private 'idUsuario' => string '2' (length=1)
  private 'strPassword' => null
  private 'Rol' => 
    object(octavius\controlador\intranet\rol\RolTO)[3]
      private 'idRol' => string '5' (length=1)
      private 'strNombreRol' => string 'Prueba-Pablo' (length=12)
      private 'Modulos' => 
        array (size=3)

Espero que les sirva, saludos!.

Transformar el texto a utf8 sólo si no lo es.

Han tenido el problema con el acento o las ñ en programación?  típico problema. Bueno aquí les traigo una pequeña solución, transforma el texto a utf8 validando primero si esta ya en utf8 o no, porque si transforman un texto en utf8 siendo que ya lo es entonces aparecerán los caracteres extraños nuevamente.

Espero que les sirva.

Esto es para PHP.

 


// Valida si viene en utf8, sino lo transforma a utf8.
function str_to_utf8($str) {

if (mb_detect_encoding($str, 'UTF-8', true) === false) {
$str = utf8_encode($str);
}

return $str;
}

 

Referencia: http://php.net/manual/es/function.mb-detect-encoding.php

Importar archivo “.sql” desde la consola mysql

Importar un archivo desde phpmyadmin es algo lento y hay que configurar unos parametros en el php.ini cuando son archivos demasiado grandes, para ahorrarse toda la espera en el navegador recomiendo importar el archivo sql desde la consola de mysql, para esto se debe iniciar sesion desde la consola (Es lo mismo para windows como para linux)

(Iniciamos sesion)

mysql -uUSUARIO -pPASSWORD 

(usamos la bd donde queremos importar el archivo sql, en mi caso es una tabla)

use nombreBasedatos;

(source es el comando donde se llamara el archivo como parametro y comenzara hacer todo).

source /home/nombreusuario/archivo.sql

 

 

Actualizar multiples columnas en una tabla con PHP en una bd MYSQL

La semana pasada me cambie de trabajo, y estoy trabajando en un proyecto con php y mysql. Y quiero compartir un codigo que he creado que permite la actualización de multiples columnas en una bd mysql.

No se si existe una solución mas limpia o que sea una buena practica en php, no tengo mucha experiencia en este lenguaje.

Pero bueno vamos al codigo.

 


/**
 * Metodo que permite actualizar los campos de una tabla,
 * este permite actualizar todos los campos que la persona desee
 * @author Pablo Videla.
 * @mail donvidela@gmail.com
 * @param type $table Tabla que corresponde actualizar
 * @param type $campoModificar Nombres de los campos (array)
 * @param type $campoNewValue Valores de los campos (array)
 * @param type $campoCondicion el campo de la condicion
 * @param type $campoValue Valor del campo de la condicion
 */
 public function registroActualizarMultiplesCampos($table, $campoModificar, $campoNewValue, $campoCondicion, $campoValue) {

if (count($campoModificar) > 0 && count($campoNewValue) > 0) {
 if (count($campoModificar) == count($campoNewValue)) {

for ($i = 0; $i < count($campoModificar); $i++) {

if (gettype($campoNewValue[$i]) == "string") {

$sqlExtra = $sqlExtra . " " . $campoModificar[$i] . " = '" . $campoNewValue[$i] . "',";
 } else {
 $sqlExtra = $sqlExtra . " " . $campoModificar[$i] . " = " . $campoNewValue[$i] . ",";
 }
 }
 }

$sqlExtra = trim($sqlExtra, ',');
 $sql = "UPDATE " . $table . " SET
 $sqlExtra

 WHERE " . $campoCondicion . " = " . $campoValue . "";
 }

$result = $this->_db->Execute($sql);

}

Cualquier duda me la hacen saber, saludos.

Unparseable Date ParseException (String to Date)

Hace unos minutos tuve un pequeño problema con unos parseo de String a fecha, y googleando unos cuantos minutos me di cuenta que muchos tenían el mismo drama, hasta que encontre la solución leyendo unos ejemplos muy completos.

http://www.herongyang.com/JDK/Date-String-java-util-SimpleDateFormat-Parse-to-Object.html

Para que no se den la molestia de leer todo eso xD , les traigo aqui una solución simple.

Cuando queremos parsear un String a un Date tenemos que usar un objeto de la clase SimpleDateFormat  donde se setea una Mascara o un Pattern como quieran llamarlo. Es la estructura de una fecha como “yyyy/MM/dd” por ejemplo. Para parsear un String a Date debemos tener exactamente el mismo pattern del String que queremos transformar a fecha.

Para hacerlo mas claro aqui tenemos un ejemplo:

Quería transformar el siguiente String a Date

String fec = "Fri Apr 08 00:00:00 CLT 2011";

Intentaba hacerlo de esta forma


SimpleDateFormat formatoDelTexto = new SimpleDateFormat("yyyy/MM/dd",Locale.ENGLISH);
 String fec = "Fri Apr 08 00:00:00 CLT 2011";

 Date nuevo = (Date) formatoDelTexto.parse(fec);

Que me salia en ese momento

“Exception in thread “main” java.text.ParseException: Unparseable date: “Fri Apr 08 00:00:00 CLT 2011″
at java.text.DateFormat.parse(DateFormat.java:337)
at test.Test.main(Test.java:46)”

Para solucionar este drama debemos elegir el pattern exacto del string que queremos parsear.


SimpleDateFormat formatoDelTexto = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.ENGLISH);
String fec = "Fri Apr 08 00:00:00 CLT 2011";
Date nuevo = (Date) formatoDelTexto.parse(fec);

Y listo nos creara el objeto date a partir del String sin problemas, ahora si queremos cambiar el formato del Date, basta con aplicar el format del SimpleDateFormat a nuestra manera. Por ejemplo queremos que esa fecha se imprima asi 2012/06/06


SimpleDateFormat otroFormato = new SimpleDateFormat("yyyy/MM/dd",Locale.ENGLISH);
 System.out.println("FEcha : \n" + otroFormato.format(nuevo));

Y eso es todo.

Cualquier duda a los comentarios.

Conflicto JQuery con otras librerias javascript

Hay momentos en que tu aplicación usa mas de una libreria javascript, como JQuery, fullcalendar, o JQUERY UI, etc

El conflicto comienza cuando las librerias en común usan los “$”

como por ejemplo:


var  datos = $("#idDatos").value;

Eso sería lo normal al usar Jquery, pero el problema comienza cuando tienes otras librerias basadas en lo mismo.

Para que no generen conflictos usamos la palabra reservada de Jquery llamada “jQuery”. Entonces en vez de usar el signo peso o de moneda “$” se utiliza la palabra reservada que acabamos de nombrar,  de esta forma:


var datos= jQuery("#idDatos").value;

Tambien podemos hacer lo siguiente, señalarle a jQuery directamente que no use el $ para que no genere el conflicto y asi permitir que la otra libreria lo utilice.

 $.noConflict();
  jQuery(document).ready(function($) {
  });
//Codigo que utiliza la otra libreria con el signo $ puede comenzar acá

Un ejemplo bastante simple.

Referencia del último ejemplo: Api jQuery

Espero que les sirva, saludos.

Obtener valores de formulario en JSF con JQUERY

En esta entrada explicare un poco el conflicto que tiene JQuery con JSF,  todos sabemos obtener el valor de un elemento del DOM con javascript. Por ejemplo de un input llamado nombre:

<input type="text" id="nombre" />

Suponiendo que el codigo anterior es html puro y esta bajo un formulario cualquiera, vamos a obtener el valor a través de javascript.


function obtenerValor(){

var valor = document.getElementById("nombre").value;

alert(valor);

}

Ahora vamos a lo mismo, pero con JQUERY

$(document).ready(function(){
var nombre =$("#nombre").value;
alert(nombre);
});

Ahora veremos lo mismo pero con JSF.

Formulario JSF:

<h:form id="formulario">

<h:inputText id="nombre" value="#{managedBean.nombre}" />

</h:form>

Ahora obtenderemos el valor de JSF con javascript:

function obtenerValor(){
var nombre = document.getElementById("formulario:nombre").value;
alert(nombre);
}

Se dan cuenta la diferencia entre JSF y HTML? en javascript debemos tener el valor del id del formulario mas el id del input, de esta forma obtendremos el valor del input en jsf, ahora veremos la gran diferencia entre JQUERY y javascript a la hora de hablar sobre JSF con el mismo formulario anterior; en JQUERY se obtiene de esta forma:

$(document).ready(function(){
var nombre = $("#formulario\\:nombre").value;
alert(nombre);
});

La razón del conflicto es por los dos puntos, por alguna razón JQuery tiene problemas al procesar los dos puntos y debemos aplicar el doble back slash, para que tome los dos puntos como literales.
De esta forma podremos obtener el valor de un elemento JSF con JQuery, cualquier consulta me la pueden hacer en los comentarios, saludos!.

Listar metodos y propiedades de un objeto en Javascript

A quién no le ha pasado alguna vez que al programar un pequeño metodo en Javascript les sale el famoso error “object is not a function” , bueno eso pasa porque al hacer la funcion el metodo no existe o esta mal escrito, pero existe un metodo que nos permite saber todas las funciones  y propiedades que tiene un objeto.

 function inspeccionar(obj)
{
    var msg = '';

    for (var property in obj)
    {
        if (typeof obj[property] == 'function')
        {
            var inicio = obj[property].toString().indexOf('function');
            var fin = obj[property].toString().indexOf(')') + 1;
            var propertyValue = obj[property].toString().substring(inicio, fin);
            msg += (typeof obj[property]) + ' ' + property + ' : ' + propertyValue + ' ;\n';
        }
        else if (typeof obj[property] == 'unknown')
        {
            msg += 'unknown ' + property + ' : unknown ;\n';
        }
        else
        {
            msg += (typeof obj[property]) + ' ' + property + ' : ' + obj[property] + ' ;\n';
        }
    }
    alert(msg);
}

Para usarlo es muy simple

inspeccionar(objeto);

Este metodo les retornara un alert con todos los metodos que existe en la función.
Fuente

Cómo crear un proyecto en JSF (Desde 0)

Hola, he decidido retomar mi blog y compartir un poco lo que he aprendido en mi actual trabajo, espero que sea de su agrado, saludos.

En el presente artículo les explicaré como hacer un proyecto en JSF (Java server faces), pero antes les recomiendo leer que es JSF realmente, para que tengan los conceptos básicos.

Aquí una introducción de jsf : http://es.scribd.com/doc/48567285/Tutorial-JSF

Suponiendo que tienen una idea que es JSF empezaré con el tutorial para crear el primer proyecto con Netbeans + Glassfish.

Primero, apretamos en archivo y luego new proyecto o nuevo proyecto, dependiendo del lenguaje de su IDE

Hacemos click en Web proyect, tal como sale la imagen

Despues apretamos next

Y luego escribimos los datos del proyecto, tal como sale en la siguiente imagen

Después next y elegimos el servidor con el cual trabajaremos, en este caso Glassfish (Tambien puede ser weblogic, pero usaremos el primero)

Si no le sale como en la imagen, apreté add y luego elija el servidor glassfish

Luego next y seleccionamos el framework con el cual trabajaremos en este caso JSF (Java server faces)

Tambien en components asignaremos a primefaces que es un framework para JSF que permite mayor funcionalidad, para mas información sobre primefaces en www.primefaces.org es open source.

Y luego FINISH

Esta es la primera pantalla que deberían ver luego de finish

Para ejecutar lo creado solo deben hacer botón derecho en el proyecto y colocar run , tal como lo muestra en la imagen. (Se puede demorar unos cuantos segundos en abrir la web después del run porque debe deployar e iniciar el servidor si es que no esta inicializado como es la primera vez)

Esta es la generación de la pagina

Esto es todo por ahora, han aprendido a crear un proyecto JSF.

En la próxima publicación enseñare a crear ManagedBeans y a utilizar unos cuantos Tag  entre otras cosas.

Les dejo esta documentacion para que vean los tag que se usan en JSF

http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/index.html

20 Tips para ser un mejor programador

Estos tips son sacados de otra página, la fuente la colocaré al final, hay harto que me falta , la idea de la wiki me gustó, ya verán de lo que hablo:

 

Ya llevo varios años programando, a nivel web el lenguaje que mas me gusta o al menos el que mas domino es PHP, voy a intentar dar algunos tips que realmente me han servido mucho durante mi aprendizaje.


1. Estudia, estudia y estudia
El estudiar nos permite perfeccionarnos, cuanto mas estudiemos mas oportunidades de programar mejor tendremos, no solamente estoy hablando de universidades, ni tampoco de cursos, hoy por hoy gracias a internet existen infinidad de tutoriales y manuales, sin ir mas lejos el sitio oficial de PHP es realmente muy bueno.

2. Busca antes de preguntar
Esto es un mal común del que quiere aprender a programar, es mas fácil preguntarle a alguien que sepa, pero realmente no tiene que ser así por varias razones, primero por que es algo de muy de vago, luego que cuando alguien nos da la respuesta fácil no aprendemos nada, lo interesante cuando se nos presenta un problema es buscar la solución nosotros mismos, sino damos con la respuesta recién ahí preguntar, este ejercicio realmente es muy beneficio, nos permite preparar nuestra cabeza para solucionar futuros problemas.

3. Busca scripts ya desarrollados
Por lo general podemos encontrar muchas funciones, scripts listos para utilizar, pero lo interesante es estudiarlos, ver como funcionan, de ahí aprendemos si copiamos y pegamos vamos mal.

4. Lee el código fuente libre
Yo muchas veces descargo algunas aplicaciones para ver como están programadas, de verdad que se aprende mucho, a medida que realicemos esta practica cada vez iremos aprendiendo mas, en especial si estas aplicaciones son de uso popular en donde miles de programadores del mundo “meten” mano para mejorarla. Un buen ejemplo de esto es WordPress.


5. No copies y pegues
Es fácil, entramos a google buscamos una función que sirva para lo estamos necesitando y listo. Pero la realidad es que no siempre lo que descargamos es correcto, y si luego tenemos que solucionar un problema lo mas probable es que no tengamos ni idea por donde empezar. Ni hablar del factor aprendizaje cero que esta practica implica.

6. Buscar el momento para programar
Estas sentado delante de tu ordenador, llaman por teléfono, tu compañero de trabajo o familiar te pregunta algo, realmente es lo mas molesto e incomodo que hay, es difícil concentrarse, es preferible hacer algo mas “Light” antes de programar algo mal y después tener que arreglarlo.

7. Ten tu propia Wiki
Esto lo recomiendo muchísimo, es muy sencillo instalar una Wiki en nuestra pc, simplemente podemos descargar el Easyphp y tener en nuestro ordenar un servidor funcional, y mejor aun si quieres hacer la instalación “a mano”. La wiki es interesante para poder almacenar rutinas que usamos frecuentemente, en mi caso suelo guardar validaciones, etc. Una vez que aprendimos a hacer algo y lo tenemos lo mejor posible es interesante tenerlo a mano para no perder tiempo escribiendo lo mismo una y otra vez.

8. Comenta todo lo que sea necesario
Escribir comentarios en el código suele ser bastante molesto y parecer innecesario, pero comentar las cosas importantes nos puede ahorrar mucho tiempo cuando tengamos que retocar el código meses después.

9. Participa en foros/comunidades
Es interesante para interactuar con otras personas que estén en nuestra misma sintonía, muchas veces ayudaremos nosotros y otra vez nos podrán ayudar. En línea general estas comunidades tienen muy buena onda, y la ayuda mutua es lo que abunda, unas líneas de código pueden ser útiles para muchas personas, de ahí que entre todos se puede perfeccionar. Recuerden respetar el punto 2.

10. Habla con otros programadores
Mensajería instantánea, en un café, por teléfono, etc. Es interesante tener amigos que están en lo mismo, no solamente por el tema de la ayuda mutua, estos grupos suelen ser también de ayuda “emocional” del programador, unos chistes, algún comentario puede ser una inyección de energía para continuar con un problema que no podemos resolver.

11. Tiempo libre para otras cosas
Me encanta programar, pero entendi que no es lo unico en la vida, a veces es bueno una salida, una película, realmente es necesario desenchufarnos.

12. Arma tu bunker
Tener un espacio de trabajo acorde con tus gustos es indispensable para programar, un buen sillón que no dañe nuestra columna, un lindo escritorio que nos permita desparramar CDS, libros, etc. También hay que ser organizado, pero siempre a nuestro gusto, es bueno que sea TU espacio y que nadie meta mano, uno a la larga lo termina sintiendo como un refugio.


13. Tu equipo en condiciones
Otro punto importante, una buena computadora, que no tenga problemas, si es necesario un poco mas de RAM, no hace falta tener una supermáquina para programar con PHP pero si algo que no se este colgando cada 2 seg.

14. Usa herramientas gratuitas
Si no podes pagar ciertas herramientas realmente ni te gastes en bajar las versiones piratas, en PHP no se necesita mucho y realmente no vale la pena estar trucando programas.

15. Organiza tu propia biblioteca de scripts
Relacionado con el punto 7. La wiki es muy buena, pero hay que tenerla organizada, sino encontrar algo puede llevarnos mas tiempo que volverlo a escribir. Yo soy bastante desorganizado, pero con los años aprendí a manejar mi problemita

16. Se agradecido con los que te ayudan
Si alguien te ayuda, por favor al menos di gracias. Recuerda que las personas que te rodean no son tu soporte técnico (Al menos que les pagues). Si alguien se molesta en responder a tus consultas agradécele, para la próxima esa persona seguirá teniendo buena predisposición.

17. Se humilde
Esencial. Siempre hay alguien que sabe más que uno y mas en este “rubro” en donde hay verdaderos cráneos, Yo hace varios años que programo en PHP y sin embargo siempre aprendo algo nuevo, y en parte eso es lo que me gusta de programar, siempre se puede mejorar.

18. Siempre busca perfeccionarte
Relacionado con el punto anterior. Las tecnologías evolucionan y nosotros debemos hacer lo mismo. Una linda practica cuando tenemos un poco de tiempo libre es tratar de optimizar un código nuestro de unos meses anteriores, si aprendimos cosas nuevas de seguro que podemos hacerlo mejor que antes.

19. Intenta ser eficiente y luego inténtalo de nuevo
Que funcione no quiere decir que este bien. También una de las cosas más lindas de programar: Siempre se puede hacer una función mas eficiente, que consuma menos recursos, no hay que conformarse que arroje los resultados que queremos, probablemente lo podemos hacer mejor.

20. Programa primero lo que menos te gusta
Esto es bastante personal, pero por lo general me da buenos resultados. Cuando me siento a programar algo los primeros minutos son de “ambientación” luego tengo un periodo de concentracion digamos maxima, en ese momento las cosas que parecen o son mas complicadas son cuando mas rápido y mejor salen, luego cuando uno esta mas cansado puede dedicarse a las cosas mas sencillas y rutinarias.

Tenia varios tips mas pero realmente la lista se iba a hacer muy larga
Espero que les sea útil.

Fuente

A %d blogueros les gusta esto: