Nueva versión de Xataface 1.2.4
May 22nd
Ya podéis descargar la última versión de xataface, interesante framework para gestión de bases de datos, basado en php, mysql y smarty.
Me gustaría conocer cuales son las nuevas features de esta release, pero en la web del autor solo aparece este comentario:
“It has been a while since the last release of Xataface so I have released a bug fix release that includes all of the small changes that have accumulated over the past several months. This version includes better support for PHP 5.3 and fixes a lot of the small bugs and annoyances that have been pointed out in the forum.
There shouldn’t be any problem upgrading from 1.2.x as there aren’t any major changes here. Just stability improvements for the most part.”
Aprovechando el post, para todo aquel que tenga curiosidad por el funcionamiento de esta herramienta, describiré la instalación rapidamente:
- Descargamos la última release desde sourceforge
- Damos permisos de escritura al directorio dataface/Dataface/templates_c para almacenar las plantillas compiladas
- Verificamos que la instalación es correcta vía url http://tudominio.com/path/to/dataface/dataface_info.php
- Ahora relacionamos la base de datos con xataface (es el momento de crear tu base de datos si no lo has hecho todavía)
- Ejecuta el binario makesite que se encuentra en el directorio dataface:
Uso: makesite: ./makesite app_path user:password@hostname/db_name dataface_url
donde
app_path -> Ruta absoluta o relativa al directorio donde se encuentra la aplicación
user -> Usuario de mysql
password -> Password de mysql
hostname -> Nombre del host donde está la base de datos.
db_name -> Nombre de la base de datos.
dataface_url -> Url donde has instalado xataface
Por ejemplo:
makesite ../Crm root:password@localhost/Crm /dataface
La base de datos utilizada para este sitio está ubicado en localhost, y el nombre de la base de datos es Crm.
./makesite ../Crm \root@localhost/Crm \http://localhost/tu_directorio/dataface
¿Facil verdad?
Proveedores y Subcontratación de Servicios
May 2nd
Desde hace años, gracias a mi inconformidad y espíritu emprendedor, puedo decir que poseo ya unos cuantos años de experiencia en el mercado del desarrollo de aplicaciones web (php -symfony, cakephp-, ruby -rails-, asp) y en la prestación de servicios de outsorcing desempeñando tareas tanto de gestión de recursos humanos, gestión de proyectos, consultoria y programación en entornos que abarcan desde .Net, C# hasta Oracle/Pro*C/PlSql pasando por C,C++, Win32Api, etc
Todos estos entornos en los que he tenido la oportunidad de trabajar me han permitido tener una visión bastante amplia del mercado actual en lo que a desarrollo de software se refiere.
No ha sido un procedimiento fácil, como se suele decir, hay que estar en el momento oportuno y además de poder dar el perfil lo más importante es mantenerlo, crecer con tus clientes y cubrir sus necesidades en la medida de lo posible.
Como todo emprendedor sin financiación externa, me he dedicado a crear y desarrollar ideas de negocio mientras realizaba servicios de outsorcing y desarrollo que me permitiesen financiar mi actividad.
Media Player basado en html5 y jQuery (Open Source)
Apr 26th
OsmPlayer se define como una alternativa al uso de players flash en tus webs a través de una herramienta basada en jQuery y html5.
Las principales características que podemos encontrar en este producto son las siguientes:
- Se trata de un proyecto open source
- Está escrito bajo el framework jQuery y utiliza el standar html5
- Utiliza el sistema de temas ThemeRoller
- Tiene soporte para listas
- Dispone de comunicación entre players
- Ofrece una sencilla integración con Vimeo y YouTube
- Dispone de fallback Flash para los medios de comunicación no estándar
Trabajando con Xataface – Gestores de Contenidos
Apr 11th
Introducción
A la hora de realizar una aplicación web con su gestor de contenidos, normalmente contamos con las opciones de usar un framework de desarrollo que nos ayude en la generación del backend, como pueden ser:
- Symfony
- CakePHP
- CodeIgniter
- etc
Utilizar un cms en el que integrar el frontend con una parametrización del backend utilizando:
- WordPress
- Joomla
- Modx
- Drupal
- etc
Y también podemos utilizar Xataface, un potente sistema de gestión de de bases de datos.
Siguiendo unos pequeños pasos podemos generar un backend que nos va a permitir realizar todas las operaciones básicas (altas, bajas y modificaciones) sobre nuestra base de datos.
Read the rest of this entry »
Reemplazando texto con Cufon
Apr 11th
Cufón es una librería javascript que permite reemplazar el tipo de letra (fuente) que por defecto usan los navegadores.
Caso práctico:
Probablemente la característica CSS más requerida por los diseñadores es la posibilidad de personalizar las fuentes de los sitios web. Actualmente la única forma real de hacer esto es confiar en Flash, ya sea construyendo todo el sitio con este programa o utilizando el script sIFR. Read the rest of this entry »
Como elaborar una propuesta de servicios – Introducción
Apr 8th
Saludos lectores!
Este es el primer artículo (con carácter de introducción) de una serie cuyo objetivo principal es ayudar a desarrollar las habilidades de marketing de:
- desarrolladores web
- programadores de aplicaciones
- maquetadores
- etc
profesionales freelance que se han centrado en el desarrollo de soluciones pero no han podido desarrollar sus habilidades como
comerciales, realizar un proceso de preventa y offering Read the rest of this entry »
Ejecutar Procedimientos Almacenados con Symfony y Doctrine
Apr 8th
En muchos proyectos que parten de cero, se pueden utilizar alternativas al uso de procedures.
Pero en ocasiones, nos encontramos con modelos de datos en producción que son usados por aplicaciones cliente servidor, web que no podemos modificar lo que nos lleva a utilizar los recursos disponibles y adaptarnos lo mejor posible a la arquitectura y estructura que tiene el cliente.
Una sencilla forma de ejecutar un procedimiento almacenado con symfony y orm doctrine sería esta:
$name_proc = 'Nombre_Procedimiento';
$dsn = 'mssql:dbname=DatabaseName;host=Servidor';
$user = 'guest';
$password = '';
try{
$dbh = new PDO($dsn, $user, $password);
$conn=Doctrine_Manager::getInstance()->getCurrentConnection() ;
$conn->prepare($name_proc);
$q= $conn->fetchAll($name_proc,array(10));
}
catch (PDOException $e){
throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage()));
}
Este ejemplo ejecuta un procedimiento almacenado sobre Sql Server, con cambiar el dsn se podría ejecutar en MySql 5+
Espero que haya sido útil
Cursos de Movilidad y Aplicaciones Android
Mar 27th
Saludos navegantes.
He preparado unos cursos de formación que se pueden realizar online bajo la plataforma Moodle, orientados al desarrollo de aplicaciones móviles.
- Introducción a la Movilidad
- Introducción a Android
- Mobile Marketing con Android
- Desarrollo de aplicaciones en Android
- Curso Web 2.0
- ¿Cómo ganar dinero con Android?
Si estáis interesados en alguno de los cursos, rellenad el siguiente formulario:
Howto Build a Perfect Cube / Construir un cubo perfecto – python
Mar 19th
Hola compañer@s
Estaba dándole vueltas a como construir un cubo perfecto en python y bueno, partiendo de la teoria:
y=x^3
calculo su inversa:
x=y^3
log x = log y^3
3*log y = log x
log y = log x^(1/3)
y= x^(1/3)
Esta es mi versión simplificada que comparto con vosotr@s:
# -*- coding: utf-8 -*-
def validate_cube(value):
base = int(round(value**(1.0/3), 0))
return (base**3 == value, base)
if __name__ == '__main__':
ok, base = validate_cube(input('Número a calcular si es cubo perfecto: '))
if (ok):
print 'Perfect cube of:', base
else:
print 'Not perfect cube'
Envío de email con sendmail y golang
Mar 16th
Con este pequeña utilidad se podrá realizar el envío de emails mediante golang y sendmail
import (
"os"
"exec"
"fmt"
"io"
)
func SendEmail() {
argv := []string {"sendmail","-t"}
cmd, err := exec.LookPath(argv[0])
if err != nil {
fatal("exec %s: %s", argv[0], err)
}
r,w,err := os.Pipe()
if err !=nil {
fatal("%v",err)
}
pid, err := os.ForkExec(cmd,argv,os.Environ(), "", []*os.File{r, os.Stdout, os.Stderr})
if err != nil {
fatal("%s", err)
}
input,err := os.Open("myEmail.txt", os.O_RDONLY, 0666)
_, err = io.Copy(w, input)
if err != nil {
fatal("%v",err)
}
w.Close()
os.Wait(pid, 0)
}
// Control de errores
func fatal(msg string, args ...interface{}) {
fmt.Fprintf(os.Stderr, msg+"\n", args)
os.Exit(2)
}
