miércoles, 8 de marzo de 2017

María Pita DefCon: Conferencia de Seguridad (6-12 Marzo, A Coruña)

https://www.mariapitadefcon.es/#schedule

Soy consciente de que tengo el blog bastante abandonado, pero si me lo permitís con un buen motivo. Y es que los últimos meses hemos estado muy ocupados organizando un nuevo evento de seguridad en A Coruña, María Pita DefCon, en el que intentaremos empapar a todo el mundo en temas de seguridad y concienciar de su importancia.

Como podéis ver en el cartel, las charlas prometen, yo ya he tenido el placer de leer los papers y os digo que valdrá la pena acercarse a la Facultade de Informática de A Coruña.

La entrada a las charlas es gratuita, aún así pedimos a todo el mundo que se registre a través de Eventbrite para llevar de mejor forma la logística del evento.

Ya tenemos también en marcha el María Pita Defcon Trileuco Contest (organizado por los cracks de Trileuco Solutions), donde podrás poner a prueba tus conocimientos sobre seguridad. No hace falta ser un "hacker" para participar, hay pruebas de todos los niveles y pistas para ir aprendiendo!

Si tienes un rato este jueves 9 o viernes 10, te esperamos allí!

Saludos!

jueves, 13 de agosto de 2015

Python: Tutorial básico de la API de Marvel

Tras mucho tiempo parado he decidido volver a escribir en este blog, más que nada porque he estado trasteando con la API que da marvel y he encontrado la documentación un poco confusa, así que me he animado a escribir.

Para empezar, comentar que Marvel ha puesto hace tiempo una API con mucha información de sus cómics, personajes, etc. lo que la hace muy interesante para probar bases de datos y sacar estadísticas y demás.

En primer lugar nos registramos en https://developer.marvel.com y obtenemos una clave pública más otra privada para realizar las consultas a la API.

La petición debe llevar obligatoriamente 3 parámetros: apikey, ts, y hash:
  • apikey es la clave pública.
  • ts es un valor de timestamp, pero si queremos podemos usar un long (en Python todo entero corriente es un long).
  • hash, que se calcula MD5(ts + clave_pública + clave_privada).
Y ahora, esto es un rollo así que vamos a pasar al código que es mucho más bonito:

Para hacer las peticiones he empleado la librería requests (pip install requests), muy recomendable, aunque podríamos usar la librería urllib que viene por defecto en Python. Importamos también la librería hashlib para hacer el cálculo MD5. Primero, las claves públicas y demás:
import hashlib
import requests
public = 'claveprivada'
private = 'clavepublica'
ts = '1'
hash = hashlib.md5((ts + pr + pu).encode()).hexdigest()
Ahora ya podemos hacer las peticiones:
base = 'http://gateway.marvel.com/v1/public/'
comics = requests.get(base + 'comics',
                      params={'apikey': public,
                              'ts': ts,
                              'hash': h}).json()
characters = requests.get(base + 'characters',
                          params={'apikey': public,
                                  'ts': ts,
                                  'hash': h}).json()
wolverine = requests.get(base + 'characters',
                          params={'apikey': public,
                                  'ts': ts,
                                  'hash': h,
                                  'name': 'wolverine'}).json()
Con esto os queda una pequeña chuleta para trabajar con la API de Marvel, aunque si no queréis hacerlo directamente hay varias librerías por ahí, como PyMarvel.

Un saludo a todos!

domingo, 16 de noviembre de 2014

Actualizando Nexus 4 a Android 5 Lollipop, Opiniones



Ayer por fin han liberado la imagen de Android 5 para el Nexus 4. No he podido evitar la tentación de instalarlo sin esperar por la OTA, así que bajé la imagen directamente y la flasheé.

Ojo al dato, no uséis programas como Nexus Root Toolkit y demás, a mí me dieron problemas y me provocó el arranque en bucle del dispositivo (el llamado bootloop). Descargad la imagen, la descomprimís, y ejecutáis el script (.bat en windows, .sh en Linux). Y recordad que borra el teléfono entero, así que hay que hacer copia de los datos, yo recomiendo la herramienta Titanium Backup.

El primer inicio le llevará entre 5-10 minutos, así que paciencia. La verdad me esperaba algo como Kitkat, varios iconos nuevos, alguna chorradita, pero me he quedado gratamente sorprendido en lo poco que lo he usado con las nuevas cosillas que trae. También me parece mentira que para llegar a ellas hiciera falta que estemos casi en el año 2015.
  • Aplicaciones como Chrome o Gmail escritas en código nativo. Caía de cajón hacerlo así, sobre todo en el caso del explorador web, y es que se nota.
  • La máquina virtual ART, que sustituye a DALVIK y promete una mejora de hasta un 4x de velocidad de respuesta.
  • Notificaciones en la pantalla de bloqueo, pudiendo definir qué notificaciones aparecen y cuáles no (para evitar mostrar datos de carácter sensible). Es muy muy cómodo.
  • Mejora de la cámara, más opciones como control de lente, flash, imágenes en RAW...
  • Modo ahorro de batería (y yo diría que más batería, porque ayer me aguantó toda la noche con un 15%, y antes ni de coña).
  • Muchas más cosillas: http://www.android.com/versions/lollipop-5-0/
Yo sinceramente estoy encantado con la nueva versión, y es que el teléfono ya iba bien, pero ahora vuela.

Un saludo a todos!

jueves, 17 de abril de 2014

Recuperar USB dañado

En ocasiones, un USB acaba dando problemas llegado al punto de que no podemos añadir archivos o incluso no podemos ni formatearlo, antes de recurrir a la garantía podemos probar lo siguiente (atención, con este proceso perderemos todos los datos almacenados):
  1. Entramos al cmd con permisos de administrador
  2. Escribimos diskpart
  3. Hacemos LIST DISK y elegimos el disco referente al pendrive con SELECT DISK 3 (siendo 3 el número del pendrive)
  4. CLEAN
  5. CREATE PARTITION PRIMARY
  6. ACTIVE
  7. FORMAT fs=fat32 quick
  8. ASSIGN
  9. EXIT

sábado, 9 de noviembre de 2013

Reviviendo Szenio PC Tablet 2000

Hoy llegó a mis manos esta tablet con un problema bastante desesperante. O se quedaba bloqueada al intentar arrancar el sistema operativo o simplemente se producía un bucle de apagado encendido donde al final daba error de poca batería. Nunca en todos los intentos dio llegado a arrancar en Android.

Después de navegar por foros vi que era un problema muy común y le había pasado a más gente, y la compañía distribuidora puso al parecer instrucciones y archivos para solucionar el tema. Digo "al parecer", ya que ahora todos esos enlaces están caídos y no hay forma de encontrar nada de la tablet en la web oficial.

En ciertas instrucciones hablaba de un modo recovery al que se accede aguantando Vol+ + Power, pero vamos, en la mía ni de casualidad di entrado al recovery. Al final la solución que a mi me sirvió y por eso la quiero compartir, la encontré en HTCManía (dónde si no!), y resulta que consiste en que la Woxter 101 CXi y la Szenio son iguales, con lo que por suerte se puede usar el software de recuperación de la primera e incluso la misma versión de android.

Me fui a la web oficial de la Woxter 101, y seguí las instrucciones de instalación de la versión 4.1.1 de Android. Lo más complicado a mi punto de vista es entrar en el "modo upgrade", ya que a diferencia de otros dispositivos, la pantalla seguirá en negro mientras se encuentra en ese modo.

A partir de aquí, pues a probar custom roms a ver cuál va ligerita y bien, aunque la del Woxter va bastante fina.

Espero que os sea útil, a mí esto hace varias horas me hubiera venido muy bien.

Un saludo ;)

martes, 15 de octubre de 2013

¿Por qué lenguaje de programación empiezo?

Estoy seguro que si os dedicáis al mundo de la informática desde hace tiempo sabéis que cuando alguien quiere aprender a programar es lo primero que pregunta, como no podía ser de otro modo. Y cada uno aquí da sus opiniones lo mejor que puede y basado en su propia experiencia. Yo voy a dar la mía, que para eso es mi blog.

Para empezar yo diferencio dos clases de usuarios, los que quieren realmente meterse al mundillo y dedicarse a la informática, o los "casual", gente que no se va a dedicar a la informática pero tienen la curiosidad de querer aprender para programarse algo sencillito y no complicarse mucho la vida. También hay los que se quieren meter "porque la informática tiene futuro", aunque sin más pasión y/o interés que ése no les auguro mucho futuro en estos lares.

Para los usuarios puntuales que sólo quieren algo rápido para sacar algún proyecto pequeño adelante, recomiendo Python. Fácil de aprender, de usar, bonito, te obliga a indentar, módulos para todo (soy de los que creen y esperan que iPython + Numpy se coma a matlab) no tienes que saber ni papa de punteros o de lo que hay por debajo. Te miras algún manual facilito como el de Python para Todos y muy pronto puedes empezar a hacer tus cosillas.

Para los que quieran entrar en el mundillo de la informática de cabeza, aprender a manejar algoritmos, tipos abstractos de datos y demás mariconadas y palabras chungas que usamos los informáticos para parecer más listos mi opinión es:

Para empezar, un lenguaje fuertemente tipado. Pascal puede ser el elegido. Sintaxis sencilla, no tan complicado como C o C++, y te hace coger buenos hábitos de programación. Para usarlo para proyectos grandes no me gusta en absoluto, pero en mi ciudad al menos he visto varias ofertas de trabajo para programadores en Delphi (una evolución de Pascal), así que quizás pueda ser una opción...

Una vez aprendido Pascal, nos vamos a C. Aprendemos lo divertido que puede ser concatenar dos cadenas, lo graciosos que pueden ser los punteros, y por supuesto el poder que tienes sobre la máquina. No voy a negar que me encanta C y lo optimizado que está.

Por supuesto, todo buen programador tiene que saber de Programación Orientada a Objetos. Hay algunos puristas que hablan de empezar por SmallTalk o cosas así, yo recomiendo Java. Tipado, multiplataforma, herencia simple, probablemente el lenguaje más extendido del mundo y el que más se pide para conseguir un trabajo. Esencial. C++ es otra muy buena opción.

Por último un lenguaje funcional es importante, no tanto bajo mi punto de vista para usar de forma cotidiana pero sí para aprender a pensar de otra manera (tail recursión, todo es una función, etc.) En mi caso aprendí Ocaml en la facultad y me gustaría tener algo de tiempo para mirar Haskell, que le tengo ganas.

En este punto puedes aprender los lenguajes que te apetezcan, sin demasiada complicación una vez ya "hablas" los anteriores. C++, PHP, Javascrip, Python, Ruby, C#...

Si alguien quiere saber mi "trayectoria" personal (probablemente no), yo empecé por BASIC hace muchos años, salté a QBASIC y la evolución lógica me llevó a Visual BASIC. Aprendí también algo de C, y al entrar en la facultad desaprendí todo lo aprendido de Basic y aprendí Pascal -> C -> Java -> Ocaml -> Matlab -> Python -> Javascript y el último lenguaje que he aprendido allí ha sido C#.
Luego decidí especializarme en Python, es el lenguaje que más me gusta, con un buen equilibro entre optimización y velocidad de desarrollo (a veces mientras programo en Python pienso en tener que hacer lo mismo en C y me entra un escalofrío de imaginar todas las líneas de código...) y de hecho es el lenguaje que me ha dado trabajo ahora mismo, junto con el querido Framework Django, conjunto de librerías que permiten a Python desarrollar fácilmente aplicaciones web.

Cada uno tiene que probar de todo y ver lo que le va gustando. Cualquier duda ya sabéis dónde estoy!

lunes, 19 de agosto de 2013

Nostalgia: Manual del Amstrad CPC 6128

A pesar de que soy joven y no coincidí temporalmente con los amstrad CPC, por casualidades de la vida he acabado teniendo por casa un CPC 6128 a mis 11 - 12 años, y si bien había cosas que me molestaban mucho como por ejemplo que la disquetera del mío estaba estropeada (me lo habían regalado de segunda mano), guardo un grandísimo recuerdo de él y de su pantalla de fósforo verde. Lástima que mis padres lo hayan tirado un día que yo no estaba "porque ya no servía para nada". Sin embargo, cuando me lo dieron recuerdo que me dijeron "Oye, ¿el manual lo quieres?". Y yo estuve a punto de cagarla y decir que no, sin embargo dije "Pues vale", y me lo empecé a leer.

Me encantó, aprendí muchísimo y bajo mi punto de vista el manual estaba escrito de perlas, para la época quizás mucho mejor que algunos libros técnicos actualmente.

De hecho, tengo que reconocer que por curioso que sea aprendí a programar más o menos en el año 2000 con libros de ordenadores antiguos. Antes el manual del PC no era sólo 3 chorradas, si no que te enseñaban a programar en el lenguaje BASIC, que era el intérprete por defecto del sistema.

Además, cada ordenador de la época tenía distintas instrucciones. El más placentero para programar de los que he probado físicamente ha sido el MSX, ya que además era el que más instrucciones y funciones tenía. Recuerdo por ejemplo la declaración de Sprites y la detección de colisiones para programar videojuegos.

Salvo el libro del CPC que era mío (y aún conservo, cuando vuelva a España tengo que encontrarlo), el resto de los libros los fui cogiendo en préstamo de la biblioteca municipal.

Me dió mucha pena que hace poco después de varios años sin ir volví y habían reformado la biblioteca entera, y de esos libros no quedaba nada. En el estante sólo había cosas como Excel 2010, Access 2007, Dreamweaver, algo de Visual Basic 6 y alguna otra cosilla. Ninguno de los libros que me habían enseñado tanto y que serían tan válidos hoy en día como lo fueron para mí hace 10 años sobrevivieron.

Por eso hoy me sentí tremendamente nostálgico y alegre cuando encontré un sitio web de fanáticos del Amstrad CPC, y entre ellos estaba el manual de mi querido Amstrad CPC 6128. Recomiendo al menos echar un ojo al último capítulo de la historia de la informática y de cómo el tío predice que cuando baje el precio de la memoria se podrán ver películas en un PC...

Por último, si me lee alguno de los hachas que se ha matado a escanear el manual entero, muchas gracias!