28 feb. 2014

Hace unas horas, al correo de Linceus nos llegó el problema de un usuario que no podía abrir el software Ilustrator tras haber actualizado su sistema Windows 8 a Windows 8.1.



Como no es la primera vez que me preguntan por algo similar, procederé a explicar los pasos para solucionar el problema.

Lo primero de todo, aclarar, que este es solo un error que se viene dando en las versiones españolas del software, por lo que si tenéis una versión inglesa no os debe de dar problema alguno.

Tampoco intentéis hacer lo que dice el mensaje de error, por que hagáis lo que hagáis no se va a solucionar. Es un error de Adobe, no de vuestra configuración.

Lo único que hay que hacer para solucionar el desaguisado es descargar un archivo .dll que la misma empresa nos proporciona:

Versión 32 bits
Versión 64 bits

Una vez tengáis el fichero, lo pegaremos en C:\RUTA DONDE TENGAIS ILUSTRATOR\Support Files\Contents\Windows

Nos pedirá que confirmemos el reemplazo del .dll original, una vez hecho estará resuelto el problema y podremos seguir utilizando nuestro Ilustrator con total tranquilidad.



24 feb. 2014

Como ya se expuso en entradas anteriores los paradigmas de programación definen unos criterios de implementación de código basados en la filosofía procedimental de los mismos, existen múltiples clasificaciones válidas, basándonos en dos grandes grupos, la programación modular es un subconjunto que se halla dentro de lo que ya conocemos como programación imperativa y basa sus principios fundamentalmente en la división del código.

DIVIDE ET IMPERA (Divide y vencerás), tal y como afirmaron los romanos durante la conquista de Italia, es el concepto en el que se basa esta "filosofía" imperativa de la programación, ya se enfoca en dividir un programa en subconjuntos de código (módulos) a fin de dotar al código de legibilidad, flexibilidad y reutilización durante su manipulación, además, favorece el trabajo en equipo durante el desarrollo de un mismo proyecto.

Podemos ver la programación modular como una evolución funcional de la programación estructurada enfocada a adaptarse a la resolución óptima de propósitos mas ambiciosos así como dotar al código de cierto grado de reutilización (Uso del mismo fragmento de código en otro software diferente o en partes del mismo), ya que la resolución del problema en fragmentos puede implicar que algunos de esos fragmentos sean de utilidad directa para la creación de código de otro propósito, éste procedimiento de fragmentación también recibe el nombre de refinamiento sucesivo y es quizás el principal precursor de otros paradigmas orientados a la modularidad y reutilización de código. 



Pero, ¿Qué características describen lo que es, mas concretamente, un módulo?.Cada uno de estos fragmentos consta de una serie de operaciones (funciones y/o procedimientos) con el objetivo de resolver parte de el código final y algunos necesitan de otros previamente a su uso, en tal caso, puede comunicarse con ellos mediante una vía de comunicación que por lo general se define durante la creación del programa, también pueden llamar funciones de forma recursiva.

Objetivos de la programación modular:

  1. Pequeño tamaño: de esta forma el impacto de un cambio puede ser perfectamente aislado.
  2. Independencia modular: cuanto mayor es la independencia de los módulos y los procedimientos y funciones, más sencillo es trabajar con él. El diseño debe reducir la necesidad de compartir ficheros, datos, dispositivos y llamadas desde o hacia otros módulos y procedimientos y funciones.
  3. Características de caja negra: visión exclusiva de la funcionalidad de un módulo o procedimiento/función en base a sus entradas y salidas sin tener en cuenta como se realiza el proceso.
  4. Modelo conceptual: un diseño es más fácil de mantener si el modelo de diseño empleado se ha basado en conceptos lógicos de organización, los cuales sean más familiares y comprensibles para el personal de mantenimiento.
  5. Aislamiento de los detalles (encapsulación): en un sistema existen partes que reflejan la filosofía y otras que reflejan los detalles. Ambas partes deben diseñarse por separado para evitar que una variación en los detalles afecte a la filosofía del sistema. 

Ejemplo práctico (C++):


En conclusión, quizás deberíamos recurir a la programación modular, en caso de querer reutilizar el código, trabajar en equipo y/o en proyectos grandes, de forma completamente didáctica y/o más legible ó enfocar un programa a su posterior y fácil depuración y mantenimiento.

18 feb. 2014

En los ordenadores de hoy en día existe una aplicación que con el paso del tiempo ha ido adquiriendo cada vez más importancia: CCleaner. La principal función de dicha aplicación consiste realizar una limpieza de los datos basura que posee nuestro ordenador. A continuación presentaremos Clean Master, una aplicación muy similar a la antes mencionada pero para Android.




Clean Master se trata de una aplicación que limpia profundamente el telefóno móvil. En este caso, limpiar hace referencia a borrar los datos basura, archivos residuales, historial, etc. Esta también posibilita la liberación de la memoria RAM y, a su vez, permite ahorrar batería en nuestro Android. Específicamente, borra elementos tales que:

  • Archivos residuales:En algunas ocasiones, es necesario descargar datos extra tras instalar una aplicación proveniente del market. Sin embargo, al desinstalar esta aplicación, no se borran todos los datos, por ejemplo, los videojuegos. A diferencia de CCleaner, Clean Master eliminará estos elementos.
  •  APKs Temporales:Los apks consumen cada vez más espacio interno del teléfono tras instalar una aplicación de market o actualizarla. Clean Master suprimirá archivos duplicados y sobrantes.

  • Task Killer: El de Clean Master funciona con unos resultados excelentes, cerrando, a su vez, aplicaciones que no queremos y liberando la parte correspondiente de la RAM. Esta aplicación no necesita permisos root, pero si se los proporcionamos, funcionará mucho mejor.

Esto permite librarnos facilmente de la basura que ha sido generada por aplicaciones como WhatsApp, Spotify o Line, entre las muchas existentes. Esta limpieza a fondo se hace posible gracias a un algoritmo propio que hace más fácil detectar dichos archivos residuales sin necesitar permisos root.

Para terminar, podemos decir que Clean Master se trata de una app gratuita, cuya interfaz de usuario es excelente y funciona bastante bien. 

17 feb. 2014

Aquí tenéis un buen documental sobre cómo se creó y empezó GNU/Linux en este mundo.


16 feb. 2014

Bienvenidos a la segunda entrada sobre paradigmas de programación. En la anterior entrada abordamos los paradigmas desde una visión general, ya deberíamos saber qué son y como podemos clasificarlos, haciendo de nuevo inca pié en la idea de que ésta es sólo una clasificación y que son un conjunto de desarrolladores los difusores de ésta, perfectamente válida, clasificación, la cual hemos escogido para esta pequeña guía.

En ésta entrada nos centraremos en la programación estructurada, que si bien es casi una forma básica de programación no deja de ser válida y funcional, e incluso preferible quizás en pequeñas porciones de código mono-propósito.

Recordemos que éste paradigma se halla dentro del campo paradigmático de la programación imperativa descrita en la anterior entrada.

La programación estructurada es, con total seguridad, el paradigma más fácilmente aplicable, aunque no por ende el más extendido, y basa su existencia el el concepto más simple de programación, refiriéndonos con ésto al concepto de desarrollo secuencial, está orientado sin embargo a reducir el uso de antipatrones (costumbres contraproducentes que se adquieren inexorablemente durante el aprendizaje de un programador e incluso se acarrean con el paso del tiempo) para programadores recién iniciados, como el clásico "código espagueti" producido por el uso de la sentencia "goto", en éste paradigma se usan únicamente subrutinas (pequeño algoritmo que forma parte de un procedimiento mayor) y tres estructuras básicas:

Secuencia (Admintiendo bloques anidados)

Selección, if ó switch (Sentencias Condicionales)

Iteración, for ó while (Bucles)


Ejemplo de sentencia if en estructurada (java):


Ejemplo de bucle for en estructurada (java):



Nota: El uso de éstas sentencias como único código en el método principal (public static void main(String[ ] args){}) indica que la lectura del código se hará secuencialmente en el mismo sin recurrir a métodos lo cual nos deja indicios claros de programación secuencial, no es el caso de programación Orientada a Objetos que ejemplificaremos cuando llegue en momento en éste mismo lenguaje


La filosofía de éste tipo de programación basa sus cimientos en el hecho de que cualquier proceso de desarrollo de software necesita tan sólo de éstas pesquisas para su correcto funcionamiento.

En definitiva, las bases de todo programador comienzan aprendiendo estructurada en el proceso de aprendizaje de otros paradigmas, y los programas más simples no precisan funcionalmente de otros más complejos, siendo éste el "hola mundo" paradigmático al que todos recurrimos para iniciarnos en la programación y que en algunas ocasiones, ya sea como prueba del código, por comodidad de uso en programas escuetos, o incluso para proyectos propios, resulta por su fácil implemento, la "mejor" opción.

Ésto ha sido todo de momento, volveremos en la próxima entrada de Paradigmas de la Programación y continuaremos donde lo dejamos, esperamos os haya sido de utilidad.

14 feb. 2014

Hoy es el día de los enamorados. Para unos un día especial, para otros otro como cualquier otro y para los demás, un día sobrevalorado.

No es mi tarea opinar sobre la tradición o importancia del día de hoy pero sí he querido hacer esta entrada para demostrar que, una de las ventajas que tenemos los informáticos en días como este, es la capacidad de sorprender.


Un día como este, hará ya un par de añitos, cuando comenzaba a aprender Java, tuve la idea de crear un sencillo programa que pudiera salvarme el día. Lo cierto es que, como siempre que surgen las buenas ideas, tenía poco tiempo y no podía crear algo demasiado elaborado.

El resultado: un programa que tenía almacenado en su interior, 31 poemas y cada día del mes recitaba uno diferente. Como apenas tenía conocimiento de Java pues tuve que hacerlo para que solo pudiese ser visto desde la línea de comandos, pero dio un buen resultado.




Aquí tenéis el programa que yo hice



Y vosotros, ¿qué habéis hecho para sorprender a alguien utilizando vuestros conocimientos de informática?

11 feb. 2014

Primero de todo  hablaremos sobre el que es el Wake on Lan (WoL), Esta es una funcion que nos permite encender nuestro ordenador desde la red ya sea red local o internet.

Para ello debemos meternos en la bios y activar la opcion de Power On by PCI Devices para permitir que podamos encender el ordenador desde la tarjeta de red que va conectada en la ranura PCI, si la placa trae tarjeta de red incorporada este paso no sera necesario.



 Hecho esto nos dirigimos a configurar la tarjeta de red, para eso nos vamos a panel de control > conexiones de red y en propiedades de la red que usemos.


Una vez hay le damos a configurar, y se nos abrirán unas pestañas, le damos a opciones avanzadas y le damos a configurar y ahí buscamos la opción Wake on  Lan y la activamos, dependiendo de la tarjeta puede tener un nombre diferente pero es facil de reconocer.


Hecho esto ya esta preparado el ordenador para encenderlo desde otro dispositivo, ahora para realizar esto necesitaremos un programa, en este caso usaremos WOLdroid WOL Wake On Lan para poder encenderlo desde nuestro dispositivo android, pero podemos usar otros programas.

Para poder encenderlo nos pedirá la direccion MAC de nuestro ordenador y el nombre que queramos, hecho esto solo tendremos que darle al boton que hay al lado y este mandará un paquete de encendido a nuestro ordenador y este se encenderá.




Enlace de descargar: WolDroid


9 feb. 2014

Muchos de los que hemos indagado de manera autodidacta en temas de programación, nos hemos encontrado con algunos conceptos que pueden ser difíciles de asimilar, es el caso por ejemplo del concepto de la programación orientada a objetos (POO).

Es por eso por lo que hemos decidido que sería interesante, desglosar teóricamente, los conceptos primariós acerca de los paradigmas de programación, entre los cuáles, se encuentra ésta filosofía que a más de uno, hasta su asimilación le cuesta implementar durante el desarrollo de software.

Antes de nada, conviene aclarar, a qué nos estamos refiriendo exactamente cuando hablamos de un paradigma en el campo de la programación, y para quitar hierro al asunto cabe destacar que éstos tan solo se han establecido a base de lo que en comunidad desarrolladora, se cree que es la mejor clasificación y definición de los mismos hasta la fecha y que, ante todo, se centra en resolver uno o varios problemas en éste sector de la informática.



A pesar de la enorme cantidad de paradigmas conocidos, el mas ampliamente usado hoy en día es definitivamente el de programación orientada a objetos, a pesar de ello, en ésta entrada hablaremos de varios y muy conocidos paradigmas de programación.

Cabe destacar el hecho de que algunos lenguajes de programación, soportan por su naturaleza y diseño lógico, varios paradigmas, por ejemplo C++ el cual admite POO y programación puramente estructurada, por supuesto, es el programador quien decide a qué paradigma o metodología ceñirse, como lo es de decidir que lenguaje de programación utilizar.



Relación de algunos lenguajes de programación con paradigmas soportados:

Python y Ruby:
Imperativo, orientado a objetos, reflexivo y funcional
C++:
Imperativo, orientado a objetos, funcional y genérico
C#:
Imperativo, orientado a objetos, funcional (lambda), reflexivo y genéricoScala:
Imperativo, orientado a objetos, funcional, genérico y concurrenteJavaScript:

Imperativo, orientado a objetos (prototipos) y funcional
Java:
Imperativo, orientado a objetos, reflexivo y genérico

Erlang:
Funcional, concurrente y distribuido
Perl:
Imperativo, orientado a objetos y funcional
PHP:
Imperativo, orientado a objetos, funcional y reflexivo


Paradigmas:








Programación Imperativa:

Éste paradigma se centra en la definición de sentencias capaces de cambiar el estado de un programa, siendo además, en muchísimos aspectos la programación más acorde con el funcionamiento de la propia CPU, por su simple funcionamiento.

El paradigma plantea las posibles soluciones de un problema mediante la especificación d euna serie de acciones ordenadas de manera secuencial a trabes de uno o más procedimientos, dichos procedimientos son llamados subrutinas o funciones.

En ésta categoría coexisten:

Programación estructurada
Programación modular
Programación orientada a objetos.

Programación Declarativa:

En inversa a la programación imperativa existe la declarativa, en la que se opera de manera puramente lógica para resolver un problema sin especificar flujo de control alguno, por lo que se prescinde de definir algoritmos para la solución del problema, sustituyéndolos por una declaración directa de la solución en lugar de datar el proceso para llegar hasta ella.

En otras palabras, en éste paradigma, prescindimos del procedimiento para llegar a la solución, en su lugar las expresiones son sustituidas por valores de forma dinámica y la semántica del código permanece inamovible durante el proceso.


Éste paradigma engloba:


Programación funcional
Programación lógica
Programación restringida


Hasta aquí la primera clase sobre paradigmas, esperamos volver pronto con más acerca de cada uno de los paradigmas contenidos en éstas dos principales ramas.




Diez consejos para ser un buen programador



1 – El Datasheet del microcontrolador
Una de las mayores razones de confusión y de complicaciones al desarrollar un proyecto es la falta de información del microcontrolador que se desea utilizar. Las hojas de datos son los documentos más importantes que debemos acopiar al momento de decidirnos e inclinarnos por un determinado tipo de microcontrolador.
Por ejemplo, si en tu diseño vas a utilizar un PIC 16F877A, debes imprimir, leer y recurrir a sus hojas como si fuese El Libro de la Verdad Absoluta. Todas las respuestas están allí. Todo lo que necesitas saber está allí. No te permitas iniciar un desarrollo sin haber leído las hojas de datos del microcontrolador que utilizarás. Un registro mal “seteado” y nada funcionará. Desde la configuración inicial del dispositivo (fuses), pasando por los registros de los ADC(Analog to Digital Converter) o los módulos CCP que te permiten obtener señales PWM, hasta la mismísima configuración del reloj o clock del sistema. Todo está allí.
2 – Piensa en tus objetivos, sueña con ellos.
¿Qué deseas lograr con tu desarrollo? Pensar en la idea final nos suele llevar a visualizar en la mente el proyecto terminado y consolidado en un prototipo funcionando a la perfección. ¿Qué componentes adicionales necesitaría? ¡Ah! ¿Tengo esos componentes? Luego de que ya hayas dado vuelta todos los estantes y cajones buscando ese material que te faltaba, comienza a anotar los que te hagan falta, los que no tengas. No abuses de tu memoria para recordar todo lo que necesitas comprar en la tienda; coloca en ella tu desarrollo y utilízala como un microcontrolador: optimiza este recurso y utilízalo sólo para ampliar y perfeccionar tu proyecto. Los materiales que hacen falta no deben ocupar espacio en tu mente; haz un listado minucioso y detallado para no hacer dos viajes y listo.
3 – No quieras correr antes de empezar a caminar
Uno de los errores más comunes de los que recién se inician es querer obtener más de lo que pueden llegar a comprender. No intentes hacer como primer trabajo un cartel luminoso de LEDs para venderlo en los estadios de fútbol y volverte millonario la semana próxima. Ni siquiera pretendas construir y empuñar el sable láser deObi-Wan Kenobi y ser la envidia del colegio. ¡No, no!

Si no tienes noción de la complejidad del proyecto que emprenderás es porque no has leído o interpretado el punto anterior. Las frustraciones provocadas por los fracasos en los primeros intentos aniquilan la confianza en nosotros mismos y arruina toda la diversión que significa construir y materializar nuestros sueños mientras vamos aprendiendo. SIEMPRE comienza con lo más elemental y, a medida que los éxitos comiencen a llegar, puedes ir agregando complejidad a los diseños. Además, cualquier programador experimentado te dirá que su primer trabajo fue escribir “Hola Mundo” en un display o un LED titilando como unabalizaQuien diga que no, te miente cobardemente.
Comienza a caminar comprendiendo los conceptos básicos y la terminología técnica y desarrolla pequeños proyectos de luces,motores o pantallas LCD. Luego, comienza a hacer un poco de jogging y trote liviano con algo más complejo como letreros de luces y pequeños controles de los que se utilizan en industrias. La domótica y la mecatrónica son dos campos muy interesantes y amplios como para sumar buena experiencia. Si no salteas ninguno de los pasos, muy pronto estarás corriendo grandes competencias a la par de los profesionales.
4 – Corta la pizza en porciones, no la comas entera
Por más simple que sea un proyecto, siempre es bueno dividir en bloques o pasos la tarea a realizar. Silbar y comer maní son cosas muy habituales y sencillas de hacer, pero concretarlas al unísono no es algo fácil. Organízate y prepárate a trabajar por partes. Primero ESTO, luego ESTO OTRO y al final AQUELLO. Intentar hacer todo a la vez o en forma desordenada sin un patrón de acción puede ocasionarte errores al momento de construir el proyecto. Por ejemplo, si decides incorporar un Puente H para mover un motor, contrólalo antes de conectarlo al microcontrolador. Es decir, conéctalo y pruébalo en forma independiente para saber que el mismo funciona. Así con todos los bloques en los que puedas sub-dividir tu proyecto.

5 – No sólo la fuerza te guiará, deja que el Sr. Spock también lo haga.
Tus inspiraciones serán una avalancha de imágenes y pequeños trailers en tu imaginación, pero en el teclado deberás actuar de manera puramente lógica. El número uno, nos guste o no, está antes que el dos. Primero el cero, luego el uno, después el dos, el tres y así en adelante. Siempre es así y nunca cambia esa realidad, a pesar de las paradojas de Ariel Palazzesi. Los programas funcionan así. Obtenemos la variable A y la transformamos en B; le sumamos C y el resultado se muestra en el paso D, y así se encadenan los procesos individuales que desembocan en el resultado final del programa.Nada es al azar, ni porque se le ocurra a Max FerzzolaLos programas siguen un razonamiento lógico y, por lo tanto, los microcontroladores también. Si tu mente se acostumbra a razonar de esta manera, programar será un juego de niños para ti.
6 – El pseudo-código también es lógico.
Te puede parecer arcaico, poco profesional y hasta una pérdida de tiempo, pero escribir en un papel todos los pasos que seguirá tu programa puede ser una ayuda muy importante mientras vas redondeando la idea final.
Por ejemplo:
  • Necesito una variable (A) que contenga un valor 20 al iniciar.
  • También otra (B) que valga 18 en el mismo momento.
  • Después las sumo y coloco el resultado en una tercera variable que se llamará C.
  • Las muestro en el display.
En un programa en lenguaje BASIC eso resulta ser:
A = 20
B = 18
C = A+B
Print at 1,1, Dec C
Escribir la secuencia de acciones que queremos que nuestro programa realice nos permitirá modelarlo a nuestro gusto y requerimiento, además de optimizarlo.
Cuando lo aprendes en la escuela, te lo enseñan como Diagrama de Flujo y puede que con el tiempo te olvides de él, pero cuando lo aprendes por ti mismo, razonando los pasos a seguir, no lo olvidas nunca.

Algo que puede parecer muy intrascendente, pero que es de vital importancia, es “comentar” cada línea de código que escribamos. Aunque creamos que es inútil, si no lo haces, terminarás arrancándote los cabellos una semana después al no darte cuenta qué es lo que quisiste colocar allí o por qué llegaste a ese lugar dentro del programa. Que hoy los comentarios te ocupen 10 renglones por cada línea de código significará que el próximo mes te ahorres 10 horas de trabajo intentando descubrir qué intentaste hacer allí.
7 -Organiza y guarda estructuras pre-armadas.
A medida que vayas utilizando un microcontrolador en particular (siempre seleccionamos uno “preferido”) y comiences a utilizarlo reiteradamente, te resultará cómodo tener a mano una estructura estandarizada de conexiones y bloques de programas. Es decir, si acostumbras a utilizar un microcontrolador X, si siempre utilizas la misma frecuencia de cristal oscilador, si siempre utilizas el mismo tipo de LCD, y si además también conectas siempre tus desarrollos a un ordenador a través de un puerto RS-232, tendrás siempre un gran bloque de programa que se repite diseño tras diseño.
Cuando comienzas a darte cuenta que muchos de tus diseños repiten pasos o bloques, allí empiezas a armar tus “templates” que son plantillas pre-armadas de cosas que se reiteran habitualmente. Consérvalas y organízalas en lugares prácticos y de fácil acceso. Te servirán para ahorrar mucho tiempo al momento de iniciar el diseño de un nuevo proyecto. Aprovecha el trabajo que ya tienes hecho y que sabes que funciona. 
8 – No preguntar hasta agotar las posibilidades de conocimiento.
En la mayoría de los foros o grupos de correo que aglutinan a miles de entusiastas de los microcontroladores sería muy fácil registrarse gratis, realizar consultas y, una vez que nos brindan las respuestas, seguir adelante. Además, en esos lugares siempre hay gente bien dispuesta a brindar ayuda. Trata de no hacerlo hasta el final de tus posibilidades. Lee las hojas de datos de los materiales que te están complicando el diseño, busca dentro de los foros, utiliza Google, lee algún libro relacionado al tema, busca hasta el cansancio en la ayuda del programa (Help) y, como último recurso, pregunta a otros.
Si ante el menor inconveniente acudes a otras personas para que te resuelvan los problemas, nunca aprenderás lo suficiente. Además, cuando te den la solución a tu problema, no sabrás entender que dicha solución sólo la pudiste obtener allí porque no tienes idea de lo que buscas. Todos siempre necesitamos una ayuda hasta en la tontería más insignificante, pero la comodidad y la holgazanería de que otros te hagan el trabajo no es un buen negocio para un programador. Por último, si pides ayuda, demuestra haber hecho tus intentos de solución contando lo que has realizado y los resultados que has obtenido. Si no haces nada, y sólo te limitas a pegar el enunciado que te han dado tus profesores, no esperes que alguien te ayude.

9 – La frustración es el enemigo a vencer.
Trata de no abandonar los proyectos porque algo no funcionó como esperabas. Descubre en esas oportunidades un reto o un desafío antes que un fracaso. Siempre es bueno mantenerse tranquilo y calmo a pesar de que nuestros circuitos echen humo por los cuatro costados. Todo error que se busca, al encontrarlo y solucionarlo, es un aprendizaje que queda grabado. Puede sonar muy extraño pero la asimilación del conocimiento es directamente proporcional al daño provocado. Es decir, cuanto más grave y más caras sean las roturas, mayores serán los aprendizajes de saber qué es lo que NO se debe hacer y por qué suceden algunas cosas.
No fue Dios el culpable de que algo no nos funcionara, sino que somos nosotros los que hemos metido mal algún cable. Un buen paseo, una buena caminata y al día siguiente retomar el trabajo es una de las mejores formas de vencer la frustración. Por eso, siempre hay que revisar, revisar, revisar y volver a revisar todas las conexiones antes de conectar la energía al circuito. Nada debe dejarse librado al azar y mucho menos restarle importancia creyendo que hemos hecho bien las cosas. Todos somos humanos y podemos cometer el error más infantil que puedas imaginar. No olvides que muchas veces una parte del éxito es una sumatoria de aprendizajes brindados por los fracasos.

10 – Google es el mejor amigo del hombre (programador)
Si lo que buscas no está en Google, es porque no existe y eres un pionero en la materia. Toneladas de material que puede ayudarte está allí en Google esperándote para poner en marcha tu proyecto. En castellano, en inglés o en arameo antiguo, lo que necesites estará en texto, imágenes y video. Nunca dejes de consultar en Google antes de preguntar tus dudas a otros.

7 feb. 2014

Antes de nada aclarar en que consiste la tecnología P2P:


Una red (P2P )peer-to-peer, red de pares, red entre iguales, red entre pares o red punto a punto es una red de ordenadores en la que todos o algunos aspectos funcionan sin clientes ni servidores fijos, sino una serie de nodos que se comportan como iguales entre sí.

En definitiva, todo cliente puede actuar como servidor y viceversa entorno al resto de equipos de la red.


Las redes P2P permiten el intercambio directo de información, en cualquier formato, entre los nodos que la componen.


Dicho esto, a estas alturas es fácil deducir que una red V2V (Vehicle to Vehicle) permite que los automóviles intercambien diferentes datos entre sí.


Éste apunte es interesante si tenemos en cuenta la posibilidad de intercambiar datos sobre el estado del tráfico, velocidad o posición de vehículos, mejorando así la capacidad de anticipación del conductor y, por ende, su seguridad al volante


Google y Apple ya han puesto un pié en el sector ofertando su sistema operativo a las grandes fabricantes de vehículos para implementar ésta tecnología.


Está claro que las aplicaciones que se ofertarán forman parte de una amplia gama de ellas para su uso desde el vehículo, pero, por supuesto, su uso en campos como la seguridad está garantizado.


Es ahí donde entra el uso de V2V que implementará las funcionalidades ya descritas en un rango de distancia actualizado 10 veces por segundo, alertando al conductor de posibles riesgos de colisión tales como: choques frontales en vias de 2 o 3 carriles, informe del momento idóneo para adelantar, aviso de proximidad excesiva con los vehículos situados delante y detrás del automóvil, puntos negros, cruces y giros peligrosos, etc...


Éste sistema será capaz de reducir entre un 70 y 80 % de los accidentes por problemas no mecánicos., poniendo fin a miles de muertes y heridas graves que se producen cada año en la carretera.

5 feb. 2014

El popular antivirus ruso Dr. Web, instalado en miles de ordenadores en todo el mundo, ha lanzado una nueva característica que a buen seguro será muy criticada. Sus creadores han decidido que el antivirus bloqueará las páginas web con contenido pirata. Desde Dr. Web están aceptando peticiones de los titulares de los derechos de autor para bloquear ciertas páginas web.
La lucha contra la piratería en la red alcanza un nuevo nivel con la característica introducida por el antivirus ruso Dr. Web. Sus creadores han sucumbido a presiones de organizaciones como la MPAA y la RIAA para bloquear sitios que almacenen o compartan contenido protegido por derechos de autor. Desde Dr. Web han explicado que la nueva característica añadida a su suita de protección bloqueará el contenido que viole el copyright.
Esta nueva característica aparece en la versión 9.0 del antivirus y es la primera vez que la lista de bloqueo de páginas web se realiza atendiendo a las peticiones de los titulares de derechos de autor. Estos podrán enviar solicitudes de bloqueo a los responsables del antivirus para que estos añadan el bloqueo y sea imposible acceder a estas páginas web.
DrWeb-antivirus
Desde Torrentfreak han hablado con los responsables de Dr. Web para conocer más detalles sobre esta característica y su CEO, Boris Sharov, les ha explicado que lo ve como una evolución natural de los productos antivirus. Este ha declarado que los antivirus cuentan con módulos para filtrar el acceso a determinadas URL y que es algo que se lleva haciendo desde hace años.
Explican que la nueva característica no busca prevenir la piratería, más bien busca minimizar los riesgos para la seguridad de los usuarios. Opinan que el gran público muchas veces no es capaz de distinguir los archivos protegidos por copyright del resto. Defienden su nueva solución como anti-phishing y anti-malware.
Sus creadores explican que no aceptarán todas las peticiones de bloqueo de páginas web que reciban, aunque sí las estudiarán y valorarán su incorporación en la lista negra. Aclara que solo incorporará bloqueos por petición de los titulares de los derechos de autor y que en ningún caso utilizará algoritmos para detectar y bloquear contenido infractor.
La polémica está servida con la nueva característica de Dr. Web, donde algunos usuarios ven protección adicional, una gran mayoría lo veo como un paso para controlar Internet. En realidad, como usuarios desconocemos sí realmente las páginas web se han bloqueado por este motivo o por cualquier otro.

4 feb. 2014

La indiscutible explosión de popularidad de Telegram, la nueva app de mensajería instantánea, podría transformarla en un serio competidor para Wassapp, no sólo por el gargantuesco eco con el que se ha hecho notar en tan poco tiempo, sino por sus claras ventajas frente al mismísimo titán de las applicaciones de mensajería instantánea para móviles.

Ya existen cifras de usuarios que han descargado la aplicación, ya sea convencidos de querer usarla como sistema de mensajería instantánea principal, o bien, como mera prueba d ela misma, dada su naturaleza de actualidad, ¿Podría ésto suponer pérdidas reales para Wassap?

 En ésta entrada, hemos querido centrarnos en las ventajas y vicisitudes de ésta nueva aplicación, mas que en el impacto que ésta pueda tener sobre otras ya existentes, no obstante es imposible analizar su crecimiento en mercado sin mencionar a Wassap.


Ventajas:
La utilidad es de código abierto y totalmente gratuíta, sin fechas de caducidad.
Telegram además, cifra las conversaciones, y se ocupa de manera permisiva, de la eliminación de mensajes de forma automática.
Ofrece un tamaño de 200 miembros en conversaciones grupales
Tamaño de envío de archivos de hasta 1 GigaByte.
Disponible para múltiples plataformas, entre las que se incluyen PCs y MACs.

Vicisitudes:
La única y más clara desventaja, es que a pesar de ser una genialidad, es una genialidad menos conocida de lo que lo es su competidora Wassapp.
Aunque, viendo la cantidad de descargas que ha propiciado su aparición, y el hecho de que la prueba de la misma es muy tentadora y ha llevado a mas de un millón de usuarios a descargarla, le proporciona una ventaja publicitaria que puede aprovecharse bastante.
Al fin de al cabo, al igual que pasa con Line, el problema principal no reside en la calidad del servicio, sino en cuántas personas lo usan día a día, al fi nde al cabo no sirve para mucho una aplicación con la que no puedes hablar con la mayoría de tus contactos.
El objetivo prioritario de los desarrolladores de Telegram, debería basarse pues, en hacer evolucionar la decisión de prueba de las masas, a una conciencia común de uso.
Es por esta razón por la que la imagen que adjuntamos en ésta entrada ya recorre Internet como la pólvora.

2 feb. 2014

Google ya dio a conocer su proyecto Google glass ma no es la única empresa que desarrollaba material de esta indole. Microsoft, Lummus DK -40, Sony y hasta Valve han unido fuerzas para la creación de un dispositivo aun más prometedor.




En octubre de 2013 Samsung lanzó al mercado unas gafas con tecnología de realidad aumentada incorporada y recientemente involucrado en el desarrollo de  Galaxy Glass, unas gáfas inteligentes, en visperas de IFA esperando sorprender tras su exposición y con ello atraer el mayor número posible de demandantes del producto en competencia a Mountain View.

Un representante de Samsung Electronics, declara que el potencial de mercado para las gafas inteligentes es enorme. Será utilizado en camiones, coches y tiene un mayor impacto aún en las industrias relacionadas tales como vidrio y recubrimientos. Los jugadores quieren disfrutar definitivamente de la ventaja del primer movimiento en este nuevo y altamente lucrativo mercado.

Galaxy Glass se sincronizarían con el smartphone para mostrar contenido sobre sus lentes, Ésto facilitará a los usuarios tareas como buscar en internet, coger las llamadas, escuchar música y un sinfín más de utidades que engloban una funcionalidad parecida a la que ofrece Galaxy Gear.

Ciertamente cuaje o no en el mercado lo cierto es que es un mercado aún por explotar, aunque quien sabe si, a este paso, la competencia no lo habrá desbordado en un par de años.


1 feb. 2014

Cuantas veces no hemos deseado poder hacer algo tan grande como un sistema operativo. No depender de las empresas que nos suministran el software y crear un entorno de trabajo para nosotros y hecho por nosotros.

Hace unos días empecé a buscar por encima sobre este tema, después de la pregunta de un usuario en Facebook y esto es lo que he encontrado: dos opciones, una para valientes, que es empezar desde absolutamente cero y otra que nos proporciona un punto de partida y un ambiente más amigable para nuestra tarea.

Empezar desde cero

Esta es quizá la opción menos recomendable para los novatos en la materia y la más recomendable para los entendidos, porque es todo un reto y una buena forma de aprender cómo funciona Linux en su sala de maquinas, con todo detalle.

He encontrado unas aportaciones en un blog que están bastante bien para dar los primeros pasos y hacerse una idea del camino marcado




SUSE Studio

Esta es una herramienta web que nos permitirá crear una distribución Linux basada en OpenSUSE. La verdad es que antes de probar esta herramienta me mostraba un poco exceptivo con sus resultados, pero finalmente logró convencerme. 

Podremos elegir una gran variedad de aspectos antes de crear la primera versión de nuestro sistema operativo, como su entorno gráfico, logo, paquetes instalados, repositorios, scripts predefinidos. 

Después tan solo tendremos que seleccionar la forma en la que queremos crear nuestra distribución, ya sea para instalar en hardware o como un CD Live que siempre tengamos a mano.

Enlace Web







Espero que con esta información podáis dar rienda suelta a vuestras ganas de crear y, si queréis, nos mostréis vuestras creaciones tanto en un método como en otro.
Por si no fuera poco tener un laboratorio cuántico propio, Re/Code informa que Google desembolsará 400 millones de dólares para adquirir la empresa DeepMind especializada en la investigación de inteligencia artificial. La startup surgió en 2011 de la mano de Demis Hassabis, programador jefe del legendario Theme Park además de neurocientífico y prodigio del ajedrez.

Hassabis, junto a los cofundadores Shane Legg y Mustafa Suleyman, convirtieron a DeepMind en una firma muy notable dentro del sector de la IA, llegando a contratar más de 50 talentos y compitiendo contra compañías como Google, Facebook o Baidu. Según fuentes de la revista online, DeepMind es "la última gran compañía independiente con un fuerte enfoque hacia la inteligencia artificial".

En la escueta web de DeepMind podemos leer que su trabajo se centra en la investigación de algoritmos de aprendizaje para máquinas y sistemas de neurociencia. La empresa señala que las primeras aplicaciones comerciales de las tecnologías investigadas se pueden ver en simuladores, comercio digital y videojuegos.

Esta última aplicación no es terreno desconocido para el fundador de la startup, ya que además de trabajar para Bullfrog junto a Peter Molyneux en Theme Park, es el responsable del código de títulos como Syndicate y Black & White de Lionhead Studios. Ya de forma independiente, Hassabis fundó Elixir Studios en 1998 dando lugar a títulos como Republic: The Revolution y Evil Genius.

La compra de esta compañía se suma a multitud de adquisiciones por parte de Google alrededor de la inteligencia artificial y la robótica. Las últimas en la enorme lista de compañías compradas son DNNresearch, Wavii y muy recientemente Boston Dynamics.

The Information expande la noticia asegurando que Google ha creado un consejo de ética para evitar que se abuse de la tecnología de IA. Este diario informa que la cifra de compra es superior (rondando los 500 millones) y según fuentes relacionadas con la transacción, Facebook también había entablado conversaciones para adquirir DeepMind.