JCeb's Blog

Programación, investigación, proyectos, vida y mas…

If corto en python

with 3 comments

Seguramente si programaron en C utilizaron el if corto, ¿cual es ese?, bueno es esto:

saludo = lang=='es' ? 'HOLA' : 'HI'

Lo anterior es equivalente a:

saludo = ''
if(lang=='es'){
    saludo = 'HOLA'
}
else{
    saludo = 'HI'
}

Bueno en python existe un if corto igualmente, solo que un poquito diferente:

saludo = 'HOLA' if lang=='es' else 'HI'

Lo anterior equivale a:

saludo = ''
if lang=='es':
    saludo = 'HOLA'
else:
    saludo = 'HI'

Written by JCeb

6 junio, 2011 at 11:35 pm

Publicado en Uncategorized

Tagged with , , , ,

Django con Jquery form y un image field latoso

with 3 comments

Ahora que andamos desarrollando la nueva versión de pikhub, andamos procurando un codigo hermoso, por lo que agregamos a nuestros javascripts uno llamado jquery.form, el plugin está bien chingon, te permite hacer peticiones por ajax sin necesidad de definir los parametros que solicita jquery y la petición por ajax la puedes armar a apartir de tu form.

Por ejemplo:

#!html
<form id="profile_form" class="ajax" 
action="/settings/profile/" method="post" 
enctype="multipart/form-data">
    {%csrf_token%}
    {{user_form.as_table}}
    {{profile_form.as_table}}
    <input type="submit" value="{%trans 'Enviar'%}" />
</form>

#!javascript
$('form.ajax').submit(function(){
        $(this).ajaxSubmit({
            dataType:  'json',
            success:  function(json){
                alert(json.message);
            }
        });
        return false;
    });

Y el codigo es generico pero hay un pequeño detalle, si dentro de los campos del formulario hay un imagefield y si tienes una versión del jquery.form del 2009 o 2010, la cosa no funcionará correctamente. Pero si en cambio tienes la versión 2011, todo funciona perfectamente, pero te diré que no es tan facil como parece, seguramente pensaras ah pues como es una petición por ajax, solo bastara con que en mi vista(views.py) haga esto:

@login_required
def profile(request):
    user = User.objects.get(username=request.user.username)
    profile = user.get_profile()
    profile_form = ProfileForm(instance=profile)
    alert = _(u'Datos guardados').encode('utf-8')
    user_form = UserForm(instance=user)
    if request.POST:
        user_form = UserForm(request.POST, instance=user)
        profile_form = ProfileForm(request.POST, request.FILES, instance=profile)
        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
        else:
            alert = _(u'Datos incorrectos, intenta de nuevo').encode('utf-8')
    if request.is_ajax():
        json_obj = {'message' : alert, 'avatar':user.get_profile().avatar.url}
        return HttpResponse(json.dumps(json_obj))
    args = {
        'profile_form':profile_form,
        'user_form':user_form
    }
    return render('settings_profile.html', args, context_instance=rc(request))

El código permite que el formulario responda a HttpRequest y a XMLHttpRequest o ActiveXObject, gracias a la función is_ajax().

Pero permiteme desilusionarte, si esperas que al guardar tu formulario con una imagen en él, te va a responder satisfactoriamente, te sentaras a esperar porque jamas te responderá jeje. Esto debido a que jquery.form manda la imagen por medio de un iframe invisible para nosotros, un trucaso, pero hay que saber como tratarlo, por lo tanto, si deseamos que todo funcione bien, habrá que agregar un campo como comodin a nuestro formulario, en mi caso lo agregue con javascript, usando j2h.js(https://bitbucket.org/julianceballos/j2h/src/9c468b91cec7/j2h.min.js), de la siguiente forma:

$('#profile_form').append($.j2h('input',{
        'type':'hidden',
        'name':'xhr',
}));
$('#profile_form').submit(function(){
        $(this).ajaxSubmit({
            dataType:  'json',
            success:  function(json){
                alert(json.message);
            }
        });
        return false;
});

Así si el javascript está activado el formulario se irá con un campo de más oculto que se llama xhr.
Luego en la vista(views.py) solo habrá que revisar que ese campo existe y si existe quiere decir que estamos enviando por ajax los datos y jquery.form está haciendo sus trucos para subir la imagen sin recargar la página. Por lo que la vista queda:

@login_required
def profile(request):
    user = User.objects.get(username=request.user.username)
    profile = user.get_profile()
    profile_form = ProfileForm(instance=profile)
    alert = _(u'Datos guardados').encode('utf-8')
    user_form = UserForm(instance=user)
    if request.POST:
        user_form = UserForm(request.POST, instance=user)
        profile_form = ProfileForm(request.POST, request.FILES, instance=profile)
        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
        else:
            alert = _(u'Datos incorrectos, intenta de nuevo').encode('utf-8')
    if request.POST.__contains__('xhr'):
        json_obj = {'message' : alert, 'avatar':user.get_profile().avatar.url}
        return HttpResponse(json.dumps(json_obj))
    args = {
        'profile_form':profile_form,
        'user_form':user_form
    }
    return render('settings_profile.html', args, context_instance=rc(request))

Y listo ahora todo debe funcionar perfectamente.

Written by JCeb

19 mayo, 2011 at 6:04 pm

Publicado en Uncategorized

Pikhub en línea

with one comment

El día de antier pusimos pikhub en línea en http://pikhub.com, tuvimos un buen apoyo por parte de amigos cercanos y otros no tan cercanos, pero que a final de cuentas dieron un banderazo a pikhub, actualmente se tienen 2964 piks(Fotos) unidas, 152 usuarios y 69 usuarios :). Aún no hemos hecho una campaña de difusión másiva porqué queremos atender algunos detalles antes de invitar al mundo XD jeje. Seguimos trabajando para tener un sistema mejor y así ya empezar a captar usuarios como se debe. Saludos.

Written by JCeb

7 abril, 2011 at 3:42 pm

Publicado en Uncategorized

pikhub

with one comment

Hola, me mantuve alejado del blog mucho tiempo, he puesto en peligro el título, pero creo que es por algo que vale mucho la pena, actualmente estoy trabajando en http://pikhub.com, un sitio para la unión de fotografías de diferentes personas que asistieron a un evento determinado, pikhub se conecta actualmente a flickr y facebook. Actualmente Pikhub está abajo, hemos hecho la migración de un VPS para pruebas que teníamos con sandino networks http://sandino.net a amazon web services http://aws.amazon.com/es/.

Con la migración a este servicio estaremos mejor preparados para hacer que pikhub explote y comience a captar la mayor cantidad de usuarios :).

¿Cual es la diferencia de pikhub con otros servicios de fotografía?, bueno en primer pikhub actualmente no almacena fotografías, pero si se conecta a los servicios de fotografía más importantes como Flickr, Facebook, proximamente Picasa y luego armaremos una dinámica para poder unir tambien twitter. Pikhub obtiene de estas redes sociales las fotografías y las muestra en una sola pantalla para la comodidad de las personas que asistieron a algún evento. Las personas pueden ver los eventos que otras personas han creado y entrar a ellos, siempre y cuando las personas no los pongan como privados. Sin duda estamos reinventando la forma de compartir fotografías y seguiremos haciendolo, queremos ser la fototeca más grande en internet y creo que vamos por buen camino.
Ya somos conocidos en silicon valley, estamos en la primer etapa de la empresa, pero sin duda seguiremos creciendo hasta competir contra los servicios de los cuales actualmente dependemos y en eso estamos.

Desde el Lunes estamos encuartelados terminando detalles del sistema, migrando a amazon y reestructurando ciertos aspectos del sistema, proximamente anunciare en mi blog la fecha oficial de lanzamiento de pikhub.com en su primer versión internacional :). Haremos fiesta de lanzamiento y todo como debe ser para la clase de producto que hemos realizado.

Best regards.

Written by JCeb

1 abril, 2011 at 4:03 am

Publicado en Uncategorized

Proyecto ganador?, si creo!

leave a comment »

He estad algo retirado del blog, pero es debido a que he estado trabajando los últimos meses en varías cosas que me han robado tiempo para poder escribir algo en este tan querido blog mío. Bueno el chiste es que entre las cosas que ando haciendo, inicié una empresa y creo que definitivamente el proyecto con el que comenzamos es una excelente forma de generar riqueza, lo que desemboca en generar empleos y muchas otras cosas de las cuales me sentiré orgulloso si resultan.

El proyecto es algo ambicioso y no muy complicado, más que nadaes complicado por la parte de análisis del sistema y el desarrollo de la manera más eficiente de realizarlo, definitivamente este proyecto desafías varías cosas que había pensado en alguna ocasión, tuve la oportunidad de poner todos mis conocimientos en este proyecto, trabajar con 3 sistemas operativos al mismo tiempo, preocuparme de sobre manera en la compatibilidad con navegadores tanto para sistemas de escritorio como para moviles, definitivamente creo que este proyecto ha valido mucho la pena y apenas es la primer versión y solo nos llevó 2 meses hacerlo a mí y al maravilloso equipo que formó parte de este sueño; muchisimas cocas, códigos estirados, reducidos y muchas risas y suposiciones de como se va a comportar el público cuando lo utilice, definitivamente levantará mucha expectativa pues gracias a dios aún no existe una herramienta similar, este ser supremo está reteniendo seguramente las mentes de las demás personas para que nosotros podamos tomar la delantera. Este es el proyecto debo decirlo donde he puesto muchisimo cuidado en los detalles y he explorado muchas cosas que dije jamás hacer jaja, pero todo sea porqué funcione y lo haga de la mejor manera posible, el sistema no es perfecto, pero definitivamente es bueno y es útil. Bueno ya veremos, no he “revelado” para que será ni como funciona, pero pronto lo haré saber en mi blog. Gracias por leer este post. Saludos a quienes lo lean.

Written by JCeb

4 febrero, 2011 at 8:02 pm

Publicado en Uncategorized

OSlides

with 5 comments

Hola, he andado desaparecido, pero bueno es debido a que he iniciado una empresa con otras personas, para ofrecer servicios en línea, ya luego seguramente contaré al respecto, por ahora traígo uno de los proyectos que he desarrollado en Mozilla México, el proyecto se llamó al principio MozMXSlides, pero lo he renombrado a OSlides, pues he abreviado OpenWeb como solamente O y bueno pues el proyecto consiste de una presentación en HTML5 con CSS3 transitions y javascript.

Esta presentación que he estado trabajando en los últimos 3 meses, ha sido ya presentada por Chris Hoffman en Paraguay, la he presentado en el Simpositi3, se ha utilizado en el Foro Internacional de Software Libre en Tapachula y otros más eventos en la republica Mexicana.

La presentación actualmente cuenta con un efecto de zoom-rotatorio para cada slide. Seguramente en futuras versiones ofreceremos personalización de eventos y mil y un cosas más, por lo pronto la presentación es límitada, pero bastante útil sobre todo para exponer y demostrar lo interesante del movimiento openweb.

si quieren ver un demo en vivo pueden ver la presentación de Firefox4 por Mozilla México.

http://mozilla-mexico.org/slides/firefox4/

Les dejo la liga a la página del proyecto en github, donde lo pueden bajar y probar:

http://julianceballos.github.com/MozMX-Slides/

Written by JCeb

21 diciembre, 2010 at 5:42 am

Locuras para investigar

leave a comment »

Espero nadie se ofenda por el título del post, le he puesto así, puesto que mucha gente cree que andamos locos los que estamos en la parte ingenieril, por estudiar cosas que aparentemente solo a los que estamos en el medio nos interesan, pero no es así, simplemente la gente no lo relaciona con su vida diaría.

Por cierto me refiero a la gente de mi ciudad Mérida en Yucatán.

Bueno este artículo de ahora lo he escrito ya que quiero compartir los temas que considero estan allí para que quien lo desee los tome, haga investigación y posteriormente implementaciones de ello.

Comenzaré con algo relacionado a mi experiencia profesional, como muchos saben he estado involucrado en el proyecto mozilla de Mozilla Foundation, he tenido proyectos de desarrollo web y por ello comento esto que es LA WEB SEMANTICA, es el tema de hoy, que ya está incluso comenzandose a analizar muy detenidamente para ya comenzar a dar implementaciones reales para la nueva generación de la web que se aproxima, considero que sería muy buena ídea comenzar a hacer investigación en yucatán relacionada a esto, pues tenemos muchas implementaciones interesantes de web semantica, comenzando con el turismo, continuando con educación y otras muchas cosas que seguramente haciendo investigación se podrá abrir un panorama mucho mayor.

Continuando con este post de inquietudes, debo comentar debido a una pequeñisima participación en el área que lamentablemente no pude concretar puesto que aún comenzaba a establecer mi área de especialización, que el área de la robotica es un área muy importante y poco explotada aún en el estado donde hábito, por lo que hacer implementaciones de ella sería sumamente interesante y si que tenemos muchas implementaciones para ello y la tecnología para hacer esas implementaciones está allí disponible para nosotros, el mayor problema que se presenta en iniciar un proyecto en el área de la robótica es que lamentablemente los financiamientos del gobierno en ocasiones no dan para ello, pero no deberíamos conformarnos con esos pequeños apoyos estatales, hay programas nacionales y mejor aún hay inversionistas dentro y fuera del país para conseguir estos fondos.

Otra locura es la parte de ahorro y generación de energía, esto debería preocuparnos muchisimo y sería genial que en Yucatán tratemos de generar esas nuevas ídeas y tecnologías para ahorrar energía de una mejor manera y al mismo tiempo generarla.

Relacionado a esto anterior está la parte social y de cuidado al medio ambiente que es el tener una mejor ciudad y un sistema urbano que produzca la menor cantidad de contaminación posible, ¿Cómo hacerlo?, no sé, pero basado en lo que veo día a día en la ciudad se me ocurre es mejorar el sistema de transporte urbano a uno más eficiente, realizar vías donde la gente pueda transitar con medios moviles no contaminantes como bicicletas y otros triciclos o patinetas para ir al trabajo y/ó escuela. Dejo el tema abierto para que las personas correspondientes lo lean y conozcan mi inquietud.

Bueno esas son las inquietudes que quería expresar en este post, porqué no me dedico a trabajar sobre ellas, número uno, robótica, energía, medio ambiente y sociedad no son mis áreas de trabajo y número 2 ya ando en 3 proyectos que me consumen el tiempo, pero dejo estos temas escritos para que quien mire en ellos una importancia significante pueda tomar un poco de estas locuras que he escrito para trabajar, recuerden que en yucatán podemos generar un cambio =). Saludos y gracias por leer el post.

Written by JCeb

13 septiembre, 2010 at 11:57 pm

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.