Robots II

Investigando un poco mas acerca de la construccion de un robot, en IBM han iniciado una serie de 3 tutoriales (requiere registro) donde construyen un robot usando la plataforma open source Ardino. La plataforma Ardino contiene los planos de los ditintos tipos de placa (existen con conexion USB, conexion Serial, Bluetooth, etc) y el software (basado en C/C++) para comunicacion y control de diversos componentes. Para aquellos que no tenemos una idea muy profunda de la electronica tambien se puede adquirir la placa previatemente montada.

Tambien existe electrolabo en español con proyectos e informacion basica, ademas de un fritzing un diseñador grafico de circuitos impresos muy sencillo y orientado para usar con Ardino.

Quatum leap

Un cientifico intenta demostrar que es posible viajar en el tiempo, sin embargo, cuando prueba su instrumento de viaje en el tiempo algo sale mal y tiene saltos en la linea de tiempo de su vida, ademas sufre de una amnesia parcial y es el unico que puede ver a una imagen holografica que le dice que debe hacer (probabilisticamente) para poder dar el siguiente salto…la idea es algun dia saltar a donde empezo todo.

hay una referencia corta en family guy

Preguntas para contratar

Revisando el blog de Ideas + Ingenieria de software me encontre con un enlace a 100 preguntas utiles en una entrevista de trabajo para un desarrollador, leyendo la lista en los comentarios vi que alguien habia publicado 300 preguntas utiles en una entrevista de trabajo para un gerente de proyecto, con un poco de paciencia quizas encuentre 900 preguntas para un gerente 2700 para un presidente de una compañia…Keep It Simple Sam

Robots

Razones para hacer un robot en casa?

  • Porque es super
  • Dominacion mundial y gobierno con puño de hierro
  • La television apesta
  • Puedes programarlos para que sean mejores que la gente
  • Ñoñez
  • Mujeres Noñas
  • Reutilizar basura electronica y aprovechar en algo las clases del profesor Tito Florez (Un saludo profe!!!)

Para empezar unos enlaces con mucha informacion interesante al respecto y un video que anima a construir un robot propio:

Mensajes de validacion en Myfaces 1.2.5

Los mensajes de validacion de Apache Myfaces se encuentran en el paquete javax.faces de la implementacion JSF, despues de actualizar dependencias a la version 1.2.5 estable de myfaces noté que las claves del archivo de propiedades principal (en ingles) son distintas de las traducciones en otros idiomas (cuando menos en español e italiano), asi que me puse a la tarea de actualizar el contenido del archivo en español, para configurarlo solo es necesario usar añadir en el faces-config.xml de la aplicación:

<application>
     <message-bundle>paquete.donde.esta.el.archivo.nombreArchivoSinExtension</message-bundle>
</application>

y aqui esta la traducción al español inicial:

# Copyright 2004 The Apache Software Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# standard messages (Spec. 2.5.2.4)

# components
javax.faces.component.UIInput.CONVERSION = Error de conversión.
javax.faces.component.UIInput.REQUIRED = Valor requerido.
javax.faces.component.UIInput.UPDATE = Error procesando la información. 

javax.faces.component.UISelectOne.INVALID = {0}: Valor no válido
javax.faces.component.UISelectMany.INVALID = {0}: Valor no válido

# converters
javax.faces.converter.BigDecimalConverter.DECIMAL = No es un número decimal válido.
javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: ''{0}'' debe ser un número decimal compuesto de cero o mas dígitos, seguidos del indicador decimal y una fraccion.  Ej: {1}
 
javax.faces.converter.BigIntegerConverter.BIGINTEGER = No es un numero entero válido.
javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' debe ser un número entero. Ej: {1}
 
javax.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' debe ser 'true' o 'false'.
javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' debe ser 'true' o 'false'.  Cualquier valor diferente de 'true' será evaluado como 'false'.

javax.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' debe ser un entero entre 0 y 255.
javax.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' debe ser un entero entre 0 y 255.  Ej: {1}
 
javax.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' debe ser un caracter válido.
javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' debe ser un caracter ASCII válido.

javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' no puede ser convertido a fecha.
javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' no puede ser convertido a fecha. Ej: {1} 
javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' no puede ser convertido a hora.
javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' no puede ser convertido a hora. Ej: {1} 
javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' no puede ser convertido a fecha y hora.
javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' no puede ser convertido a fecha y hora. Ej: {1} 
javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Un atributo 'pattern' o 'type' debe ser especificado para convertir el valor ''{0}''.

javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' No es un numero decimal válido.
javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' debe ser un número entre 4.9E-324 y 1.7976931348623157E308  Ej: {1}

javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' debe ser convertible a una enumeración.
javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' debe ser convertible a una enumeración que contenga la constante ''{1}''.
javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' debe ser convertible a un valor de enumeración, pero no se ha configurado la clase de enumeración.
javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' debe ser convertible a una enumeración, pero no se ha configurado la clase de enumeración.

javax.faces.converter.FloatConverter.FLOAT = {2}: ''{0}'' debe ser un numero decimal.
javax.faces.converter.FloatConverter.FLOAT_detail = {2}: ''{0}'' debe ser un numero decimal entre 1.4E-45 y 3.4028235E38  Ej: {1}

javax.faces.converter.IntegerConverter.INTEGER = {2}: ''{0}'' debe ser un numero entero.
javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: ''{0}'' debe ser un numero entero entre -2147483648 y 2147483647 Ej: {1}

javax.faces.converter.LongConverter.LONG = {2}: ''{0}'' debe ser un número decimal.
javax.faces.converter.LongConverter.LONG_detail = {2}: ''{0}'' debe ser un número decimal -9223372036854775808 y 9223372036854775807 Ej: {1}

javax.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' no puedo ser convertido a tipo moneda.
javax.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' no puedo ser convertido a tipo moneda. Ej: {1}
javax.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' no puedo ser convertido a porcentaje.
javax.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' no puedo ser convertido a porcentaje. Ej: {1}
javax.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' no es un número.
javax.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' no es un número. Example: {1}
javax.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' no es un formato númerico.
javax.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' no es un formato númerico. Ej: {1}

javax.faces.converter.ShortConverter.SHORT = {2}: ''{0}'' debe ser un número.
javax.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' debe ser un número entre -32768 y 32767 Ej: {1}

javax.faces.converter.STRING = {1}: No se pudo convertir ''{0}'' a una cadena.

# validators
javax.faces.validator.NOT_IN_RANGE = El valor no se encuentra en el rango entre {0} y {1}.

javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: El valor debe ser inferior a "{0}"
javax.faces.validator.DoubleRangeValidator.MINIMUM = {1}: El valor debe ser superior a ''{0}''
javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: El valor no se encuentra en el rango entre {0} y {1}.
javax.faces.validator.DoubleRangeValidator.TYPE = {0}: El valor no es del tipo correcto

javax.faces.validator.LengthValidator.MAXIMUM = {1}: El valor debe ser inferior a ''{0}''
javax.faces.validator.LengthValidator.MINIMUM = {1}: El valor debe ser superior a ''{0}''

javax.faces.validator.LongRangeValidator.MAXIMUM = {1}: El valor debe ser inferior a ''{0}''
javax.faces.validator.LongRangeValidator.MINIMUM = {1}: El valor debe ser superior a ''{0}''
javax.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: El valor no se encuentra en el rango entre {0} y {1}.
javax.faces.validator.LongRangeValidator.TYPE = {0}: El valor no es del tipo correcto.

# myfaces specific messages
org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
org.apache.myfaces.Email.INVALID = E-mail no válido
org.apache.myfaces.Email.INVALID_detail = La dirección ({0}) no es válida como e-mail.

org.apache.myfaces.Equal.INVALID = Error de validación
org.apache.myfaces.Equal.INVALID_detail =El valor ({0}) no es igual a "{1}".

org.apache.myfaces.Creditcard.INVALID = Validation Error
org.apache.myfaces.Creditcard.INVALID_detail =The given value ({0}) is not a correct creditcard

org.apache.myfaces.Regexpr.INVALID=Error de validación
org.apache.myfaces.Regexpr.INVALID_detail=The given value ({0}) is not valid.

org.apache.myfaces.Date.INVALID = Fecha no válida
org.apache.myfaces.Date.INVALID_detail =The given value ({0}) is not a correct date

org.apache.myfaces.ticker.NOCONNECTION = Sin conexión: 
org.apache.myfaces.ticker.NOCONNECTION_detail = Quizás esta detras de un firewall?

org.apache.myfaces.ISBN.INVALID = Error de validación
org.apache.myfaces.ISBN.INVALID_detail =El valor ({0}) no es un código isbn.

org.apache.myfaces.tree2.MISSING_NODE        = Nodo faltante
org.apache.myfaces.tree2.MISSING_NODE_detail = El nodo "{0}" no existe.

org.apache.myfaces.calendar.CONVERSION = Error de conversion
org.apache.myfaces.calendar.CONVERSION_detail = "{0}": El valor "{1}" no pudo ser convertido en fecha.

org.apache.myfaces.FileUpload.SIZE_LIMIT = "{0}": El archivo excede los {1} bytes.