Cómo comentar un commit según Linus Torvalds

Cuando hablamos de hacer un commit en un sistema de control de versiones, no es más que subir los cambios que hemos hecho localmente a nuestro repositorio. Aunque cuando hablamos de repositorios descentralizados como el caso de Git, el repositorio de código también vive en nuestro sistema local, con la posibilidad de sincronizar con repositorios remotos. Hecha una pequeña y vaga definición de la acción commit, decir también, que cuando subimos nuestros cambios al repositorio, tenemos la posibilidad de añadir un comentario explicando los cambios realizados.
Leer más

Ejercicios prácticos sobre ingeniería inversa con IDA Pro

A diferencia de la entrada del otro día sobre ejercicios prácticos de hacking que abarcaba muchas técnicas de explotación, en este caso los ejercicios están enfocados a la ingeniería inversa o como lo definen los autores de dichos ejercicios, auditoría de binarios. En este caso todo lo que necesita es este archivo zip que contiene no sólo todos los ficheros que necesitas para completar tus ejercicios, sino que además viene con la versión gratuita de IDA Pro 5.
Leer más

Código fuente de Doom 3 liberado

Ya nos lo contó tuxotron en este post, ahora ya es oficial, el motor de Doom 3 ya está liberado y publicado. Se llama Tech 4 y juegos clásico como Doom 3, Wolfestein y Quake4 han sido creados usándolo (y no está obsoleto, el año que viene saldrá Prey 2 hecho con este motor). El código fuente no tiene ningún dato del juego Doom 3, ya que aún está afectado por la EULA (End User Licence Agreement, licencia del usuario final).
Leer más

Presentaciones del Google Developer Day 2011 - Berlín

Android Chrome & HTML5 Cloud Google+ Android Market for Developers - Rich Hyndman (G+) Making Your Web Apps Accessible Using HTML5 and ChromeVox - Mike West (G+, Twitterblog) Finding Your Place in the World: Google Places API - Mano Marks (G+, twitterand blog) Google+ and the +1 Button - Ade Oshineye (G+, twitter and blog) Excellence in the Android User Experience - Nick Butcher (G+) Working Off the Grid: HTML5 Offline - Ido Green (G+, twitter andblog) Google App Engine Overview & Update - Wesley Chun (G+) Using the Google+ APIs - Chris Chabot (G+) Google TV: Open for Android Developers - Christian Kurzke (G+) Bleeding Edge HTML5 - from Ido Green and Paul Kinlan (G+, Twittera/a> andblog) Building Integrated Applications on Google's Cloud Technologies - Michael Manoochehri (G+or Twitter) Building Google+ Hangout Apps - Jonathan Beri (G+, twitter and blog) High-performance graphics for Android - Sparky Rhode (G+) These Aren't the Sites You're Looking For: Modern HTML5 Web Apps - Mike West (G+, Twitterblog) Go on App Engine - Andrew Gerrand (G+,twitter) OAuth and OpenID for Data Access and Identity in web apps - Ryan Boyd (G+, twitter) What’s new and important in Android - Bruno Oliveira (G+) Privacy-related APIs for Google Chrome Extensions - Dominic Battre (G+), Bernhard Bauer (G+) and Pam G(G+) Accelerated Beginner App Engine Workshop - Wesley Chun (G+) Dart: a new programming language for structured web programming - Anders Sandholm (G+) Crease: Tiling Window Manager for Android Tablets - Philipp Comans (G+) ; OpenSocial 2.
Leer más

Analizando el formato GIF, a fondo

En este artículo puedes encontrar un gran análisis a fondo del formato de imágen GIF. Toda la explicación se complemente con un GIF de ejemplo donde se explican todos sus bytes uno por uno. Básicamente, un GIF está formado por diferentes bloques de datos y todos con una misma estructura. Luego estos bloques se repiten hasta llegar al final del fichero (trailer). Echa un vistazo al diagrama que encabeza este post donde se muestra perfectamente dicha estructura de bloques repetitiva.
Leer más

El nuevo arte: robotizado y programado

Esta torre de seis metros está íntegramente construida con robots voladores. El ensamblaje consta de 1500 ladrillos de poliestireno y los robots están programados para interactuar entre ellos, calcular las medidas y averiguar la situación exacta en la que colocarán el siguiente ladrillo (X, Y y Z). Los artífices de la idea han sido los arquitectos suizos Gramazio & Kohler and Raffaello D’Andrea. La exposición se realizará en el FRAC Centre de Orleans, Francia, desde el 2 de Diciembre al 19 de Febrero de 2012.
Leer más

Más Python, creando un programa para resolver cualquier sudoku

Gran tutorial donde se explica paso a paso toda la teoría para resolver cualquier sudoku de 9x9 para luego implementarlo en nuestro querido Python. Para realizarlo, utiliza dos técnicas, una es la llamada "constraint propagation" y la otra es usar algoritmos de búsqueda. Aquí tienes el programa completo. Según el autor Peter Norvig (que por cierto, no le gustan los sudokus y dice que son el ataque de Denegación de Servicio humano), los Sudokus más difíciles los puede resolver en 0,01 segundos.
Leer más

Nueva clase online gratuita de Stanford, esta vez de Criptografía

Ya sabéis que comenzó la clase sobre "Introducción a la IA" de la Universidad de Stanford. No es fácil seguir el temario completo con todos los ejercicios y exámenes, así que de momento nuestro amigo tuxotron es el único que está al día con la asignatura (yo estoy de oyente, sólo tengo los apuntes y los videos, realmente merecen la pena). Pues ahora parece que les ha gustado la experiencia y están preparando otro curso online pero esta vez sobre Criptografía.
Leer más

Interesante listado de enlaces sobre Python

Esta colección de enlaces te puede venir bien si estás desarrollando o aprendiendo el lenguaje Python. Desde una guía a la programación en red con Python, videos y hasta un intérprete de Lisp: “Must read”: The Python yield key­word explained Python’s super() con­sid­ered super! Under­stand­ing Python Decorators What is a meta­class in Python? Meta­classes Demystified Try/Catch for val­i­da­tion or speed? Python (and Python C API): __new__ ver­sus __init__ Python “self” keyword Python and the Prin­ci­ple of Least Astonishment A Curi­ous Course on Corou­tines and Concurrency Gen­er­a­tor Tricks for Sys­tems Programmers Code like a Python­ista: Idiomatic Python (2007) The entire Python Mod­ule of the week archive Also see the book — “Python Stan­dard Library by Exam­ple” (By me) Python Threads and the global inter­preter lock (By me) Get with the pro­gram as con­text manager How to write a Lisp inter­preter in Python Uni­code in Python, Com­pletely Demystified Uni­code for Dum­mies — Just use UTF-8 Debug­ging in Python How to han­dle mul­ti­ple inher­i­tance of ABCs that imple­ment each oth­ers abstract methods AOSA: Python Packaging 10 Rea­sons Python Rocks for Research (And a Few Rea­sons it Doesn’t) Beej’s Guide to Net­work Programming How to use Linux epoll with Python Python beginner’s Mistakes Com­mand Line syn­tax: Some basic Concepts Be care­ful with exec and eval in Python Dec­o­ra­tors make magic easy The detailed guide to “Tim­sort” (which Java adopted, FWIW) Notes on opti­miz­ing dictionaries How-to guide for Python Descriptors Python is Not Java(2004) Java is not Python, either Python Inter­faces are not Java Interfaces Begin­ner Python: http://wiki.
Leer más

Proyecto de programación en Python para organizar ficheros de música MP3

Excelente proyecto/tutorial de PyroElectro para crear un programa en Python que organice toda tu música en MP3. Para llevar a cabo esta tarea, que nos ahorrará mucho tiempo a la hora de guardar y ordenar nuestros ficheros de audio, se basa en los datos ID3. El objetivo es abrir cualquier número de ficheros MP3, leer los datos de la etiqueta ID3 y guardarlos según un determinado patrón. Para extraer y modificar el ID3, utiliza un paquete llamado Mutagen (sirve para manipular todo tipo de metadatos de audio), en concreto EasyID3.
Leer más