SDFSDF

Reto Top Coder #1

Inspirado en el conocido sistema de cifrado RSA (http://es.wikipedia.org/wiki/RSA) se propuso el siguiente enunciado a resolver:

descarga

Una conocida tienda online desea implementar un método seguro para compras por internet y para ello se asoció con una entidad financiera que provee dispositivos que generan códigos cada minuto. Los códigos están sincronizados con un servidor y asociados a la cuenta de cada usuario. Los códigos están conformados por algunos dígitos constantes, otros variables, son únicos por usuario y tienen las siguientes características:

    • Son códigos de 8 o 10 dígitos.
    • El producto de las 02 primeras cifras (números aleatorios) es igual al 3er y 4to dígito (00,01,02…81).
    • La 5ta cifra es igual a la cantidad de vocales distintas de su primer nombre.
    • La 6ta cifra es un número equivalente a la última letra del 2do apellido según la siguiente tabla:

a

b

c

d

e

f

g

h

i

j

k

l

m

n

0

1

2

3

4

5

6

7

8

9

10

11

12

13

ñ

o

p

q

r

s

t

u

v

w

x

y

z

14

15

16

17

18

19

20

21

22

23

24

25

26

    • La sumatoria de las cifras de la fecha de nacimiento del usuario es igual a los últimos dígitos del código.

Ejemplo:

Nombre usuario: Alberto Rodrigo Bertelo Mansilla
Fecha Nacimiento (>=18 años): 29/09/1995

1er aleatorio = 2
2do aleatorio = 9
# vocales distintas 1er nombre = 3
última letra = a = 0
sumatoria (2+9+0+9+1+9+9+5) = 44

Método de encriptación:

m = Número a encriptar
c = Número encriptado

p = númer primo #1
q = número primo #2
n = p*q
f(n) = (p-1)*(q-1)
e = número sin divisores comunes con f(n) y que divida a f(n) + 1 sin residuo.
d = ( f(n)+1 ) / e
c= m^emodn (Número encriptado)
m=c^dmodn (Número desencrptado)

Entonces: p= 311, q= 23 , n = 253 , f(n) = 220 , e= 13 , d= 221/ 13 = 17, y el número a encriptar es 44,

c = 44^13mod253 = 88
m = 88^17mod253 = 44

Código: 29183088

A través del Website los usuarios generan sus datos de acceso (nombre de usuario y contraseña), se les envía un correo electrónico de confirmación y se activa la cuenta. La Base de Datos contiene datos de usuarios, productos, compra (clave utilizada, lugar y fecha de compra, entre otros). Finalmente, la tienda sólo permite compras entre las 7am y 12am, fuera de ese periodo devuelve un mensaje de error.

El reto Top Coder consiste en:

a) Programar el algoritmo para la creación y validación de códigos.
b) Generar todas las combinaciones posibles.

Para hacerlo utilizar la lista de usuarios:

Usuario Fecha de Nacimiento
Alberto Rodrigo Bertelo Mansilla 29/09/1995
Alvaro Andrés Gonzáles Porras 1988-03-22
Bertha Luz Linares Coya 1990/08/11
Cinthia Yolanda Salas Núñez 1988-03-12
Donald Darío Robles Maldonado 1995-05-05
Aldo Franco Barrenechea 1986-09-23
Roberto Carlos Zurdo Izquierdo 01/12/1978
Carmen Molina Esparta 1986-09-23
Silvana María Morote Zavala 1983-02-09
Alex Tercio Coronado 1980-11-08
Diego Rodrigo Novoa Alpes 1982-10-14

 

Solución en Python Descargar

Los ganadores Jorge Suárez y Angel Ortiz :

RETO TOP CODER

Solución en PHP Descargar

Para ejecutar el script utilizar lo siguiente:

[Open Spaces] Móviles y otros temas

Nueva reunión de Open Spaces

Esta semana hablamos de

Este jueves los esperamos nuevamente, hay pizza ya saben.

 

[Open Spaces] ¡Regresando con todo!

Volvieron los Open Spaces, luego de un receso.

Gracias a los asistentes del Open Space de ayer jueves 28.

Estas son las direcciones de las herramientas para depurar en móviles sobre las que hablamos

WeInRe
http://people.apache.org/~pmuellr/weinre/docs/latest/Home.html

Como vieron no me tomo mucho tiempo instalar y configurar esta herramienta. Y creo que si tiene soporte Windows Phone ¡¡¡investiguen,prueben y compartan!!!

Remote debugging en Android
https://developers.google.com/chrome-developer-tools/docs/remote-debugging

Remote Debugging en iOS y OSX (requerimiento mac)
http://webdesign.tutsplus.com/tutorials/workflow-tutorials/quick-tip-using-web-inspector-to-debug-mobile-safari/

Y ya saben el próximo jueves también tenemos pizza, los esperamos.

Mujeres de calidad

Bien, muchos de los que trabajamos en sistemas y nos haya tocado trabajar en una empresa que tenía una área de control de calidad (QA) ha visto que dicha área esta formada exclusiva y enteramente por mujeres. La pregunta cae pesadamente: ¿Por qué?

Aún no me convenze aquello que las personas que dicen: Que las mujeres son muchísimo mas detallistas que los varones y tratándose se software, demuestran mucho más su naturaleza perfeccionista, apuntando y sacando a la luz las deficiencias que tenga un sistema.

Mi teoría va más por el lado del temperamento, yo creo que hay mujeres en el área de calidad porque son jodidas. Voy a esto: A que alguien que realiza calidad en software tiene que tener un poco del carácter duro, dificil, quizá hasta conflictivo (si, no se asusten con esa palabra), y no estoy diciendo por supuesto que las mujeres son así, claro que no, sino que las que sobresalen en esta área son las que tienen una personalidad un poco dura. Un varón con un genio del demonio seria visto como un obstáculo en el proceso de producción de software, una mujer con ese mismo genio y adecuadamente instalada en el área de calidad seria vista como un buen elemento, un hueso dificil de roer, alguien a quien un programador le costaría trabajo pactar en beneficio suyo.

¿Por qué un hombre no podría ser un buen analista de QA?, quizá porque otorongo no come otorongo.

 

vectornet-icon-series-rosie-the-riveter-we-can-do-it

4 herramientas visualizar web responsive

Existen varias herramientas para generar grillas y wireframes pensados en desarrollos web responsivos (adaptativos entre diferentes tamaños de dispositivos y resoluciones) pero hay 3 que nos permiten visualizar de una forma realmente práctica nuestros desarrolllos.

1. Quirktools (http://quirktools.com/screenfly/)

Permite visualizar cualquier dirección URL en una mayor cantidad de dispositivos y sí permite rotar la vista tanto en landscape como en portrait.

- Netbook (10” 1024×600 - 12” 2014×768 - 13” 1280×800 - 15” 1366×768)
- Desktop (19” 1440×900 - 20” 1600×900 - 22” 1680×1050 - 23” 1920×1080 - 24” 1920×1200)
- Tablet (
Kindle Fire HD 7” 533×853 - Kindle Fire 600×800 - Google Nexus 7 603×966 - Apple iPad 1-3/Mini 768×1024 - Kindle Fire HD 8.9” 800×1280)
- Mobile (
Motorola RAZR V3m 176×220 - Motorola RAZR V8 240×320 - BlackBerry 8300 320×240 - Apple iPhone 3&4 320×480 - LG Optimus S 320×480 - Samsung Galaxy SII 320×533 - ASUS Galaxy 7 320×533 - Apple iPhone 5 320×568 - Samsung Galaxy SIII 260×640)
- Televisión (
480p Televisión 640×480 - 720p Televisión 1280×720 - 1080p Televisión 1920×1080)

Selección_239

 2. Respon.si (http://respon.si/)

Permite visualizar cualquier dirección URL en una gran cantidad de resolcuiones. También permite rotar la vista tanto en landscape como en portrait. No clasifica las resoluciones por tipo de dispositivos pero aún así es de gran utilidad.

responsi

3. ami.responsivedesign (http://ami.responsivedesign.is)

Permite visualizar un proyecto en 4 dispositivos: PC, Laptop, tablet y smartphone. La herramienta permite arrastrar cualquier dispositivo en el site para visualizar completamente el dispositivo deseado, pero no permite rotar la vista de tablet ni smartphone (solo permite ver en landscape).

Selección_238

3. Adobe Edge Inspect  (http://html.adobe.com/edge/inspect/)

Permite realizar pruebas con dispositivos en tiempo real sincronizando todos los dispositivos que se quiera. En la versión de prueba solo permite sincronizar 1 dispositivo con la PC o laptop.

Ver demostración: http://tv.adobe.com/watch/adobe-evangelists-paul-trani/introducing-adobe-edge-inspect/

Selección_240

Para sincronizar es necesario:

1. Instalar Edge Inspector en la PC/Laptop.
2. Instalar extensión de Google Chrome
3. Instalar la aplicación en los dispositivos a sincronizar (Android, iPhone, Kindle Fire)

usar Windows o Mac, instalar un complemento de Google Chrome, instalar Adobe Edge Inspector y conectar todos los dispositivos a la misma red wifi. Ejemplo de emparejamiento (Galaxy S con una PC):

edge_inspector_2

Vista de cómo se muestra un dispositivo emparejado (tablet TOSHIBA Excite)

edge_inspector_1

 

Una vez hehco esto, todo lo que se ejecute en la PC/laptop se verá reflejado en todos los dispositivos emparejados.

Existen otras herramientas(ejemplo: http://www.responsinator.com/?url=www.laaventuradeaprender.com) pero no son tan prácticas como las detalladas anteriormente. Espero les sea de utilidad.

Chrome: “Esta página incluye contenido no seguro”

Como saben Chrome suele ocultar contenido que considera inseguro y no lo mostrará hasta que el usuario haga clic sobre un ícono con forma de escudo shield

Se puede evitar a través de la línea de código: –allow-running-insecure- pero para consultar los comandos que generan contenido no seguro debemos ingresar al menú de Chrome y seleccionar Herramientas -> ConsolaJavaScript hasta visualizar un mensaje de este tipo:

Selección_221

También es posible bloquear determinados tipos de contenido web, como JavaScript e imágenes, para todos los sitios a través de la página de configuración, más información sobre esto ver el siguiente enlace: http://support.google.com/chrome/bin/answer.py?hl=es&answer=114662

Información basada en: http://support.google.com/chrome/bin/answer.py?hl=es&hlrm=en&answer=1342714

 

 

Herramientas para medición de performance

La mayoría de herramientas que analizan la performance proveen:

  • Peso total del Website.
  • Tiempo total de carga.
  • Tiempo de carga de cada elemento del Website (archivos de código e imágenes).
  • Recomendaciones de optimización.

Entre las mejores herramientas consideramos a las siguientes:

1) Google Page Speed Insights: https://developers.google.com/speed/pagespeed/insights#

Esta herramienta muestra de forma bastante clara las sugerencias de optimización según prioridad.

sugerencia

2) GTMetrix: http://gtmetrix.com/

gtmetrix


3) Pingdom:
http://tools.pingdom.com/fpt/

tools_pingdom

 

Optimización de imágenes para mejorar performance

La optimización de imágenes es muy importante, especialmente para aquellos usuarios con conexiones lentas. Cualquier imagen que se pueda reducir en 25 bytes o más debe ser optimizada siguiendo cualquiera de los criterios mencionados. Una optimización menor a 25 bytes  no se traducirá en ningún beneficio de rendimiento perceptible para los usuarios.

Google recomienda realizar la optimización tanto básica como avanzada para todas las imágenes de un Website.

La optimización básica contempla:

  • Recortar espacios innecesarios.
  • Reducir la profundidad de colores a su menor nivel aceptable.
  • Reducir comentarios de las imágenes.
  • Guardar las imágenes en un formato apropiado.

La optimización avanzada implica más compresión (sin pérdida) de archivos JPEG y PNG.

tinypng

Herramientas para optimización de imágenes:

Para leer más sobre optimización: https://developers.google.com/speed/docs/best-practices/payload#CompressImages

Responsive design + Python y Django en produccion usando Git

phantasia_logo

Es un agrado para el equipo de sistemas de Phantasia invitarlos a nuestro Barcamp que será realizado el dia sábado 09 de marzo.
Los temas y horario para el Barcamp son los siguientes:

9:00 – 10:00 : Responsive design (Javier Azañedo)

10:00 – 1:00 : Desarrollo y puesta en produccion de proyectos en Django usando Git (Jhon Florencio)

Esperamos contar con ustedes!

Para confirmar su asistencia o conocer más acerca del evento ingresen aquí