jueves, marzo 04, 2010

noFramework_MVC en google code

He decidido usar el repositiorio de google code para publicar este framework por los eventuales cambios que pueda tener.

La dirección del proyecto es:

http://code.google.com/p/noframeworkmvc/

miércoles, febrero 17, 2010

MysqliExt: Facilita el manejo de Mysqli

Publico esta clase para facilitar el manejo de Mysli, para abstraer las consultas más comunes y así acelerar el proceso de desarrollo.

Con esta clase puedes hacer:
  1. Consultas CRUD (create, read, update, delete)
  2. Listar resultados (fetch)
  3. Transacciones
El modo de uso es muy simple y fácil de recordar, acá algunos ejemplos:

Para CRUD y listar:

<?php
//usar tabla usuario
$usuario=new ModeloUsuario();

#CRUD
//insertar usuario nuevo. El resultado entrega el id de la informacion insertada
$campos=array(
'nombre' => 'Cristian',
'correo' => 'mi@correo.com',
'direccion' => 'Mi casa #13'
);
$idUsuario=$usuario->create($campos);

//Seleccionar un usuario
$resultado=$usuario->read($idUsuario);

//actualizar usuario
$campos=array(
'nombre' => 'Juan',
'correo' => 'micorreo@mail.com'
);
$resultado=$usuario->update($campos, $idUsuario);

/*//eliminar un usuario
$resultado=$usuario->delete($idUsuario);*/

#Miscelaneos
//seleccionar id
$resultado=$usuario->seleccionarId('nombre', 'Juan');

//listar resultados
$seleccionar="*";
$where="1";
$limit="50";
$resultado=$usuario->fetch($seleccionar, $where, $limit);

//query2
$resultado=$usuario->query2("select CURDATE() as fecha;");



Para Transacciones:

<?php
#transacción
$usuario->iniciarTransaccion();

$usuario=new ModeloUsuario();
//insercion correcta
$campos=array(
'nombre' => 'Alberto',
'correo' => 'correo1@mail.com'
);
$usuario->create($campos);

//insercion correcta
$campos=array(
'nombre' => 'Pedro',
'correo' => 'correo2@mail.com'
);
$usuario->create($campos);

//insercion correcta
$campos=array(
'nombre' => 'Sonia',
'correo' => 'correo3@mail.com'
);
$usuario->create($campos);

//otra tabla #acá ocurre el error
$modeloAvatar=new ModeloAvatar();
$campos=array(
'ur' => 'http...'
);
$modeloAvatar->create($campos);

//al finalizar no habrá cambios en la BD, ya que hay una inserción incorrecta en la transaccion
var_dump($usuario->finalizarTransaccion());


Descargar Mysqli

domingo, febrero 14, 2010

Usa __autoload y ahorate código y tiempo

Reconozco que no uso todas las ayudas que presta PHP, pero ahora estoy desarrollando un sistema más o menos complejo y he tenido que recurrir bastante a este tipo de funciones y métodos mágicos de PHP.

Bueno con __autoload no veía el uso, pero al trabajar con POO el uso de include se multiplica bastante, es por eso que preferí usarlo en vez de seguir ignorándolo. El problema era que tengo dos tipos de clases que incluir: los modelos y las librerías, y luego de pensar cree este pequeño script para facilitar el trabajo. Hace la inclusión dependiendo del nombre de la clase, para asignarle la ruta correspondiente:


#Lo uso para noFramework_MVC.
Si no usas este framework puedes utilizar directamente un include.

/**
* Carga automaticamente archivos de clases Modelo[...] y
* clases en lib
* @param string $clase
*/
function __autoload($clase){
//nombre de clases que empiezan con Modelo[nombredelaclase]
if(ereg("^Modelo", $clase)){
Core::cargarClase("app_modelos_$clase");
}
else{
Core::cargarClase("lib_$clase");
}
}

Más info acerca de __autoload

Espero sirva de ejemplo si desean implementar esta útil función.

jueves, febrero 11, 2010

noFramework_MVC

Hace tiempo que no posteaba sobre PHP, pero no era por que no lo he usado, es porque tenía hartas cosas que ordenar. Una de esas es este Sistema MVC que creé para mi tesis (no fue la tesis) y comparto con cualquier interesado que quiera probarlo.

Este sistema MVC fue creado con el propósito de incentivar el uso del patrón MVC, sin obligar a cambiar los propios paradigmas de programación que se utilicen. Sólo “obliga” a separar la aplicación en controladores, modelos y vistas; como exige MVC, nada más. De aquí en adelante el desarrollador puede optar por el framework que desee, para abstraer la BD por ejemplo, entre otros.
Este manual-tutorial está organizado de manera tal, que una vez finalizado y comprendido, será la manera que se organicen y configuren los proyectos, es decir, está ordenado pos pasos concecutivos.
Se toma en cuenta que el lector posee algunos conceptos de MVC, amplios conocimientos en POO y PHP. Ya que no se altera el uso del lenguaje, sólo la manera de organizar la aplicación.
Se recomienda que al leer este documento se abra el archivo al que se hace refencia.


##NOTAS:
  1. Al descomprimir dar permisos de escritura al directorio. Si no apareciese en el navegador.
  2. Por algún motivo que no logro entender, el primer include [include(config.php)] para el archivo indexBoot.php no funciona en Windows, entonces tendrás que copiar el código de config.php y pegarlo directamente en indexBoot.php, reemplazando el include.

##ACTUALIZACIONES
  1. 14/02/10 - Ya no es obligatorio invocar __construct en los Controladores
  2. He alojado el proyecto en google code
Ir al proyecto

martes, febrero 09, 2010

Pinta: Editor Simple

Se acabó la búsqueda...

Este simple editor es ideal para personas que quieres hacer cosas simples y rápidas con imágenes.



www.pinta-project.com/

Además ya lo agregué a mi lista de software favoritos ;)

viernes, febrero 05, 2010

Sincronizar [sólo] calendario Evolution con Google Calendar

Para poder sincronizar sólo nuestro Google Calendar con Evolution sólo debemos:
  • Hacer click en el reloj para desplegar el calendario
  • Hacer 2 click en cualquier día
  • Hacer 2 click en cualquier día (Sí de nuevo!!!. Para evitar tener que configurar el correo)
  • Agregar un calendario google, ingresar tu datos y todo eso
  • Cuando termines cierras y podrás ver los eventos en el calendario que se despliega desde el menú.


Nota: Esto es por si deseas sincronizar sólo el calendario.

domingo, enero 31, 2010

Lo mejor que he encontrado para el iPhone!!!

Bueno, tengo que reconocer que no resistí la tentación de comprar un iPhone, así que desde que lo adquirí he estado indagando en varios aspectos para potenciar aún más su uso.

Uno de los grandes problemas que encontraba era que para leer las páginas costaba mucho por el tamaño de la letra, entonces estaba a cada rato haciendo zoom. ¡¡¡Pero esto se acabó!!!

Ayer me reuní con Pablo en la junta mensual de linuxLSC y entre todas las cosas que habalmos me comento de readability, un maracador javascript que hace más simple la vista de una página web. Y es muy útil si quieres ver sólo el contenido.

Y me hice la pregunta: ¿Servirá para iPhone? empecé a indagar y en el sitio oficial no aparece la opción por defecto pero en otro blog encontré el código para poder copiarlo:

--------------------------

javascript:(function(){readStyle='style-ebook';readSize='size-medium';readMargin='margin-narrow';_readability_script=document.createElement('SCRIPT');_readability_script.type='text/javascript';_readability_script.src='http://lab.arc90.com/experiments/readability/js/readability.js?x='+(Math.random());document.getElementsByTagName('head')[0].appendChild(_readability_script);_readability_css=document.createElement('LINK');_readability_css.rel='stylesheet';_readability_css.href='http://lab.arc90.com/experiments/readability/css/readability.css';_readability_css.type='text/css';document.getElementsByTagName('head')[0].appendChild(_readability_css);_readability_print_css=document.createElement('LINK');_readability_print_css.rel='stylesheet';_readability_print_css.href='http://lab.arc90.com/experiments/readability/css/readability-print.css';_readability_print_css.media='print';_readability_print_css.type='text/css';document.getElementsByTagName('head')[0].appendChild(_readability_print_css);})();

--------------------------

Pasos a seguir en el iPhone:
  1. Copiar el código anterior
  2. Agregar a marcadores esta página
  3. Editar el marcador agregado y pegar el código copiado
Y cuando estés leyendo una página y sólo quieres ver lo relevante, vas a marcadores y seleccionas el marcador que hemos creado.

¡Es muy útil!