Te encuentras en la páginas de Blogsperu, los resultados son los ultimos contenidos del blog. Este es un archivo temporal y puede no representar el contenido actual del mismo.

Comparte esta página:

Etiquetas: [corto]  [freak]  
Fecha Publicación: 2011-12-23T23:16:00.001-05:00
Este es un vídeo de Sharon Wright que vi en la página de microsiervos y no pude resistirme a hacer el repost me parece adecuado para esta época ya que a pesar de no tener ningún símbolo navideño no deja de recordarme a santa claus. Para poner algo de contexto en ingles se dice change a las monedas menores que un dolar pero esta palabra también significa cambio, se hace un juego de palabras entre usar monedas y cambiar las cosas, además de que no he podido evitar pensar que el personaje principal  es una especie de santa claus que con sus regalos nos da ese "cambio" que a veces tanto necesitamos



Etiquetas: [libro]  [jenkins]  [integracion continua]  [geek]  
Fecha Publicación: 2011-07-23T04:25:00.000-05:00
Si no eres nuevo en integración continua debes haber oido hablar de hudson y Jenkins este último es un fork del primero tras la compra de Sun por Oracle. Pues bien John Ferguson ha redactado para la editorial O'reilly el libro Jenkins: The Definitive Guide el cual tambien sirve si usamos Hudson, entre otras cosas el libro indica como automatizar los procesos de compilación, integración del release y despliegue.

Lo mejor de esto es que el libro es un libro open source publicado bajo la licencia creative commons lo que hace que pueda ser descargado gratis desde la página de la consultora de John: Wakaleo Consulting

Pues bien no hay excusa para no descargarlo y echarle una mirada, su equipo de desarrollo lo agradecerá.
Etiquetas: [agile]  [craftmanship]  [geek]  
Fecha Publicación: 2011-03-26T05:49:00.000-05:00
Encontre este video de una charla que dio 'Uncle Bob' Robert C Martin en el 2008 sobre craftmanship, mucho de lo dicho esta en su libro Vlean Code, y lo recomiendo para todo aquel que quiera seguir este camino de mejorar el codigo un poquito a la vez, el video esta en ingles sin subtitulos y dura aproximadamente una hora


Etiquetas: [musica]  [matematica]  [geek]  
Fecha Publicación: 2011-03-12T08:40:00.001-05:00
Esta entrada es para poner algo de ciencia todos saben lo que es pi para los que no en corto: es el resultado de dividir una circunferencia entre su diametro, para algo mas preciso revisen la entrada en wikipedia a que viene todo esto? a que todas las constantes de la naturaleza ( aun una indeterminada como pi) siempre llevan armonia y belleza en ellas, esta vez encontre un video de michael blake donde hace una interpretacion muy personal del numero pi

Etiquetas: [entrega continua]  [agile]  [infoq]  [arquitectura]  [geek]  
Fecha Publicación: 2010-12-27T23:36:00.000-05:00
InfoQ: Continuous Delivery

Jez Humble es co autor del libro Continuous delivery en esta presentacion nos muestra las ventajas de un efoque de entrega continua y el entorno en el que encajaria mejor, muy recomendable : (58 minutos, ingles sin subtitulos)


Etiquetas: [megaupload]  [sharing]  [geek]  
Fecha Publicación: 2010-12-05T13:52:00.000-05:00
Bueno me ha tomado por sorpresa, todos conocemos MegaUpload uno de los tantos servicios existentes para subir y compartir archivos, pues sucede que ahora tiene 6 nuevos hermanos, asi de golpe:

MegaUpload(Compartir archivos)
MegaLive (para emitir Streaming en vivo),
MegaPix (compartir fotos al estilo de flicker o picassa),
MegaBox (para poder llevar nuestra musica donde queramos)
MegaClick(Para difusion de publicidad en linea)
MegaFund(una web de asesoria en inversiones)
MegaKey(un plugin que sustituira la publicidad en la web por la publicidad que mega controle, y da acceso gratuito a los servicios)
MegaPay(Para poder hacer pagos via dispositivos moviles)

Todo lo ha agrupado en un nuevo site llamado MegaWorld

y si ya contabas con una cuenta esta estara activa y sera valida en MegaUpload, MegaLive, MegaPix, MegaBox y MegaVideo

Me ha sorprendido gratamente puesto que yo ya contaba con una cuenta de pago y me he encontrado con muchos servicios de golpe que no tardare en consumir (y mas si me caen sin tener que pagar ni un centavo extra por ello!!) no puedo ocultar la satisfaccion que me genera que una empresa en la que habia confiado extienda sus servicios es una gran apuesta debido a que son muchos mas de aquellos con los que contaba esperemos que todo vaya bien y mantengan la calidad de siempre
Etiquetas: [video]  [Ingenieria de Software]  [certificaciones]  [agile]  [buenas practicas]  [geek]  
Fecha Publicación: 2010-11-06T22:22:00.001-05:00
InfoQ: Bad Code, Craftsmanship, Engineering, and Certification

El autor de Clean Code, nos da una excelente presentacion sobre mal codigo, buenas practicas, craftmanship y certificaciones, con su acostumbrado buen humor, video de una hora aproximadamente con las diapositivas empleadas en ingles sin subtitulos mas que recomendable
Etiquetas: [java]  [spring]  [seguridad]  [geek]  
Fecha Publicación: 2010-10-22T23:01:00.004-05:00
Hola a todos este es un post corto que copio de un resumen que hice en la lista Spring Peru sobre una interesante discusion a raiz de una consulta sobre como configurar el acceso a los permisos (normalmente en un archivo de configuracion) desde una base de datos aqui el resumen en forma de pregunta - respuesta:





Pregunta 1: puedes crear Los usuarios y roles en una base de datos propia o usar un esquema que ya exista? : SI, de esta forma:
                       
                       
ref="dataSource"
                               users-by-username-query="SELECT
U.USERNAME, U.PASSWORD, 'true' enabled FROM USUARIO U WHERE
U.USERNAME=?"
                               authorities-by-username-query="SELECT
U.USERNAME, R.ROL FROM USUARIO U, ROL R WHERE U.USERNAME=R.USERNAME
AND U.USERNAME=?" />
               

solo una pequeña observacion: spring security define 3 datos para identificar a alguien: usuario, password y habilitado. el query empleado sirve en un entorno en que no tienes el concepto de habilitado, esto equivale a que un usuario siempre esta habilitado para acceder al sistema como puede verse en el query:



users-by-username-query="SELECT
U.USERNAME, U.PASSWORD, 'true' enabled FROM USUARIO U WHERE
U.USERNAME=?"

 el tercer elemento que devuelve el query esta colocado como una constante que siempre devuelve "true" si tu aplicacion si maneja el concepto de habilitado deberias reemplazar la constante por la columna correspondiente a dicho estado


Pregunta 2: puedes hacer el match entre las urls y los roles en una base de datos y obviar el archivo de configuracion? : SI

aqui no hay ejemplo pero si un enlace que leer y da una idea de como hacerlo: http://static.springsource.org/spring-security/site/faq/faq.html#faq-dynamic-url-metadata

algunos puntos importantes del enlace: un cambio en la seguridad debería ser siempre auditado, probado y autorizado si tomas eso en cuenta como creo que se hace ante cualquier cambio planificado y controlado en la seguridad, tendras que implementar la interface FilterInvocationSecurityMetadataSource a fin de poder cargar estas relaciones desde una fuente diferente al archivo de configuracion.

Pregunta 3  : pueden modificarse los permisos de manera dinamica, entendiendo por dinamico que los cambios se hagan efectivos inmediatamente sin reiniciar la aplicacion?: aparentemente NO

al menos de la lectura del enlace anterior se puede entender eso, el comportamiento por defecto es cargar los permisos en un mapa en memoria por lo que para cambiarlo es necesario reiniciar la aplicacion.

si desean ver la discusión completa pueden hacerlo desde este enlace:

http://groups.google.com/group/spring-user-group-peru/browse_thread/thread/28094fbbfe1bfbc0?hl=es
Etiquetas: [java]  [eclipse IDE]  [spring]  [STS IDE]  [geek]  
Fecha Publicación: 2010-10-16T11:23:00.001-05:00
Ha salido el día de ayer publicado en la web de Spring Source el anuncio de la nueva versión del ide SpringSource Toolsuite 2.5.0 RC1 (Release Candidate 1) recordar que este es un mod de eclipse con varios plugins para el desarrollo con este framework entre las principales novedades tenemos:


  • Es un Bundle sobre el nuevo Eclipse 3.6.1 Helios
  • Soporte para Spring Roo 1.1.0 M3 
  • Soporte para test de integración de Gui sobre Grails
  • Wizard de comandos en grails
  • Corrección de varios bugs con respecto a la versión anterior
Además el documento menciona las mejoras de la version 2.3.3 M2 como no he encontrado dicha version disponible en la web pongo esas mejoras ya que tambien son novedades con respecto a la version 2.3.2

  • Editor visual para Spring Integration
  • Gestor de plugins para grails
  • Corrección de varios bugs con respecto a la versión anterior 
Si bien la web dice que esta disponible desde la web de descarga de STS no pude encontrarlo ahi, en su lugar lo encontre en la web de descarga de STS y Eclipse esperemos que sea un problema que se corrija en los siguientes dias.

El instalador se encuentra disponible para los siguientes sistemas Operativos: Windows, Linux, Mac Os; en versiones tanto para 32 como para 64 bits

aqui una captura del instalador


Etiquetas: [dns]  [linux]  [Centos]  [geek]  [dhcp]  
Fecha Publicación: 2010-10-10T01:32:00.000-05:00
Te ha pasado que instalas centos y no puedes navegar mas que por la web centos.org? eso me paso hoy en un centos 5.4 instalado sobre una maquina virtual rapidamente (realmente no tanto) note que el problema era que no tenia direcciones para un servidor DNS validas oh bueno esto es rapido pense basta agregarlos al archivo /etc/resolv.conf y listo!!! hecho eso reinicio los servicios de red y nada aun no puede hacer una simple busqueda en google...

revisando el archivo resolv.conf noto que este ya no tiene las direcciones que le agregue y un mensaje diciendo que este archivo es sobre escrito por el cliente dhcp (dhclient-script) el cual evitaba que mis cambios se hicieran permanentes

pues bien antes de hacer algun hack modificando el script en cuestion googleando encontre en la pagina de centos las siguientes indicaciones que copio aqui por si tienen algun problema

crear un archivo dhclient-enter-hooks en la carpeta /etc

y dentro colocaremos:


luego damos permisos de ejecucion de dicho archivo a todos los usuarios

chmod a+x /etc/dhclient-enter-hooks

con eso el archivo resolv.conf ya no sera sobre escrito al reiniciar y podremos navegar y resolver nombres de internet tranquilamente, (de hecho el post lo escribo desde la maquina virtual recien creada)
Etiquetas: [video]  [transformers]  [corto]  [freak]  
Fecha Publicación: 2010-09-27T23:05:00.002-05:00
Este video lo vi en la web de microsiervos y me quedado con la boca abierta de lo bien que esta hecho y definitivamente me quedo con este comparado con la ultima pelicula de transformers lo curioso es el rumor de que podria ser un video viral muy bien hecho para telefonos, si los hacen asi pues que sigan regalandonos con cosas como estas!!

Etiquetas: [blog]  [geek]  [comunicado]  
Fecha Publicación: 2010-09-26T22:26:00.001-05:00
Hola a todos, he notado que cuando ves los posts desde algun lector de feeds o desde google buzz si el post incluye codigo de programacion,  no queda visible, hace un tiempo habilite un modulo de java Script llamado syntaxhighlighter este script añade algunas funcionalidades como el poder copiar al portapapeles, imprimir y una vista del codigo fuente como texto sin formato, estas funcionalidades me parecen utiles y provechosas lamentablemente dependen de un script que al no estar disponible desde los lectores de feed hace que no se pueda ver el codigo, la unica manera hasta el momento de poder verlo es dirigiendose a la pagina ,en la web original lamento las molestias pero despues de evaluar las opciones, un click me parece un esfuerzo razonable versus quitar las funcionalidades que da el script.
Etiquetas: [SCJP]  [java]  [geek]  
Fecha Publicación: 2010-09-26T21:20:00.001-05:00
Esta vez tocaremos el tema de declaracion de interfaces, si deseas revisar los otros temas puedes ir al indice
si estas leyendo desde un lector de feeds como google reader o google buzz y te preguntas donde esta el código la respuesta esta aqui


Declarando Interfaces

Empezaremos por definir una interface como un contrato o compromiso de lo que una clase puede hacer, mas no de como lo hará, por ejemplo definimos la interfaz volador que se compone de los métodos despegar(), aterrizar(), definida en código seria algo asi:



entonces, cualquier clase que implemente esta interfaz esta obligada a implementar los métodos despegar y aterrizar.

Ademas las interfaces pueden implementarse por cualquier clase, sin importar de quien herede, permitiendo que clases que no comparten el mismo árbol de herencia puedan compartir un comportamiento determinado, en este caso el comportamiento de un objeto que puede volar, y que esta definido por los métodos declarados en la interface ejemplo:

Digamos que tenemos dos clases la clase Ave y Avion ambas comparten el comportamiento volador definido por el tener una forma de despegar y de aterrizar (aunque cada una lo implementa de manera diferente) y todo esto a pesar de que no comparten el mismo arbol de herencia, Ave extiende de la clase Animal y Avion extiende de la clase Vehiculo sin embargo ambas pueden tratarse como "Objetos que pueden Volar" y que para java seria algo como "Objetos que pueden invocar los metodos despegar y aterrizar"

Las interfaces pueden tomarse como clases 100% abstractas ya que como vimos anteriormente las clases abstracta no pueden ser instanciadas, sin embargo a diferencia de una clase abstracta que puede tener metodos abstractos y no abstractos; una interfaz solo puede tener métodos abstractos, además de tener reglas mucho mas estrictas con respecto a su declaración


  • Todos los métodos de una interfaz son implícitamente públicos y abstractos(modificador public y abstract) por lo que no es necesario que incluyas los modificadores public y/o abstract en su declaración
  • Una interfaz puede declarar atributos pero estos serán públicos estáticos y finales (modificadores public, static y final) es decir, solo pueden ser constantes.
  • Los métodos de una interfaz no pueden ser estáticos (modificador static)
  • Como sus métodos son abstractos no se les puede poner los modificadores final, strictfp o native
  • Una interfaz puede extender una o mas interfaces
  • Una interfaz no puede extender nada mas que interfaces
  • Una interfaz no puede implementar ninguna interfaz
  • Debe declararse con la palabra reservada interface
  • Las interfaces pueden usarse de manera polimorfa

despues de estas definiciones veamos un ejemplo de declaración de una interfaz:


como mencione antes, una interfaz puede tomarse como una clase 100% abstracta, por lo que el modificador abstract no es necesario. por ello las siguientes declaraciones son legales


el modificador public es necesario a menos que queramos que sea de acceso de paquete o por defecto.
ahora pasemos a los métodos:

todos los métodos en una interfaz son publicos y abstractos (modificadores public y abstract) por lo que usar estos modificadores es redundante, cualquiera de las siguientes declaraciones son iguales y legales para un metodo en la interfaz:


como contraparte cualquier otro modificador agregado a un método en una interfaz provocara un error en tiempo de compilación, por ejemplo



Declarando Constantes en la interfaz
Esta permitido colocar atributos en una interfaz , sin embargo se debe tener en cuenta que el mismo valor debe estar disponible para cualquier clase que implemente la interfaz, por ello solo se permite declarar constantes. Recordemos que una constante se logra aplicando los modificadores public, static y final  sin embargo esto ya esta implicito en una interfaz por lo que no es necesario colocar dichos modificadores en sus atributos, esto puede llevar a confusiones por lo que tiene que tenerse mucha atencion en si el atributo es declarado en una interfaz (lo que lo convierte en una constante y a tener los modificadores public, static y final de manera implicita) o si el atributo se declara en una clase lo que lo convierte en una variable de instancia y no necesariamente una constante.

tomemos como ejemplo la declaracion de un atributo dentro de una interfaz, todas las declaraciones son identicas:


Todas estas declaraciones dentro de una interfaz son equivalentes a:


si una clase que implementa la interfaz intentara modificar el valor de la constante altitudMaxima provocaria un error en tiempo de compilación.


Etiquetas: [video]  [trailer]  [deus ex human]  [video juegos]  [freak]  
Fecha Publicación: 2010-09-19T09:01:00.002-05:00
Hola esta vez quiero mostrar el ultimo trailer del juego Deus Ex: Human Revolution tercera parte de la mas que venerada saga Deus Ex. esta tercera parte es desarrollada por Eidos aunque la cinematica corre por cuenta de Square Enix asi que podemos esperar calidad al menos en esta parte, el juego estará disponible a principios del 2011, no digo mas y los dejo con el trailer



Fecha Publicación: 2010-08-29T17:46:00.000-05:00
A menudo el proceso de despliegue de software pasa por una lenta etapa de integracion, pruebas de aceptacion, pase a produccion Martin Fowler y Paulo Caroli comentan en esta entrevista (20 minutos en ingles y con el texto debajo de la misma) su experiencia sobre testing, integracion continua y entrega de aplicaciones me quedo con una frase de Martin Fowler "Tan pronto como sea posible, pero siempre con la máxima calidad "

InfoQ: Martin Fowler and Paulo Caroli on Continuous Integration and Deployment
Etiquetas: [phyllobates terribilis]  [traduccion]  [freak]  
Fecha Publicación: 2010-08-15T16:18:00.000-05:00
Hola a todos vuelvo después de un tiempo debido a obligaciones en el trabajo, y darme un tiempo para mi, hoy quiero hablar sobre algunas cosas que he estado haciendo, compartirlas y animarlos a involucrarse un poco.

Hace poco tuve una entrevista y entre los temas de los que hablamos salio wikipedia, mencione que casi siempre busco contenidos en la edición inglesa debido al mayor contenido que puedes encontrar, que salvo honrosas excepciones es superior a la edición española, llegamos a la conclusión que hay mucho conocimiento por difundir si alguien se diera el trabajo de poder traducir dicha información,  pues bien con esa idea en la cabeza me fui a casa y luego de leer esta excelente tira cómica  me llamo mucho la atención sobre si el adorable animalito podría ser realmente tan peligroso, asi que busqué en wikipedia (que como ellos mismos dicen no es una fuente primaria pero para salir de dudas suele bastar y sobrar) , y encontré que si era verdad pero la version española del articulo era muy corta comparada con la version en ingles, en ese momento recordé lo comentado en la entrevista: que a veces solo falta querer dar ese poco de tiempo y decidí que a mi si me daba la gana de enriquecer un poquito la versión española traduciendo el articulo que encontré, ademas de que empezar con un articulo sobre el animal mas venenoso del mundo y mas si era una pequeña ranita de 5 cm como tamaño máximo pero con un veneno tan potente que un gramo basta para matar 15 000 personas me parecía lo suficientemente friki como para mi, aquí la pueden ver

Phyllobates terribilis, no tiene ojitos adorables? - fuente Wikimedia Commons
despues de aproximadamente 3 o 4 horas tenia la version traducida, con algo de ayuda del usuario Technopat que muy amablemente realizo las revisiones y (muchas correcciones) gramaticales y de estilo tenemos la nueva version final del articulo . la sensación es de mucha satisfacción. Pues bien ahora estoy en un par de proyectos para acercar un poco mas los contenidos de webs (uno de ellos sobre metodologías ágiles) en otros idiomas al idioma de Cervantes, difundir un poco mas de conocimiento y ganarme algo de buen karma que creo que lo necesito. Y Uds no se animan a hacer algo parecido? no tiene que ser una labor sacrificada, yo escogí el articulo por que me gusto el tema, me divertía, practique mi ingles y apoye a la comunidad. no se animan a hacer travesuras? de esas que mejoran un poco mas el mundo?
Etiquetas: [ide]  [xsd]  [truco]  [netbeans]  [geek]  
Fecha Publicación: 2010-06-21T22:22:00.000-05:00
Hola a todos:


Hoy traigo un pequeño tutorial sobre netbeans en el trabajo en el que estoy actualmente hemos decidido usarlo como ide y estoy acostumbrado a la funcion de autocompletar de xmls basados en el esquema (xsd) entonces estuve dando un par de vueltas para ver como poder configurar el autocompletar, pues este no trae los esquemas xml de spring 3.0 precargados algo a lo que me habia acostumbrado del ide de springsource.

aqui les dejo el procedimiento para registrar los xsd de forma local en caso de que por alguna razon no tengan salida a internet pues si es asi he visto que el ide se encarga de obtener el mismo el esquema.

En netbeans 6.8 ir al menu tools/DTD and Xml Schemas



se muestra una pantalla con un listado de los catalogos que estan precargados, hacer click derecho sobre el ultimo: User Catalog [read-write] se muestra un menu desplegable, escoger: "add local dtd or xml schema"



aparecera una pantalla para registrar el archivo dtd o xsd seleccionar la opcion del centro: "System ID" y colocar la definicion de schema que ponemos en el archivo xml por ejemplo para registrar el xsd para beans en spring colocaremos: http://www.springframework.org/schema/beans/spring-beans-3.0.xsd



a continuacion debemos buscar el archivo xsd correspondiente en la tercera opcion "URI" click en el boton browse
previamente necesitamos tener el archivo xsd si bajaste el springframework con fuentes basta que vayas a la siguiente ruta:

[ruta donde hayas descomprimido el framework]\projects\org.springframework.beans\src\main\resources\org\springframework\beans\factory\xml\spring-beans-3.0.xsd



presionas ok y ahora netbeans podra autocompletar cuando estes editando un archivo que use como schema  spring-beans-3.0.xsd en el editor de xml 





este metodo funciona bien cuando no tenemos conexion a internet para que el ide obtenga por si mismo las definiciones o desarrollamos xsd's propios, la desventaja de este metodo como ya mencione es que necesitas tener los xsd, cargarlos uno a uno, y todos apareceran apiñados en el catalogo de usuario, seria mas ordenado si pudiese cargar todo el catalogo y tenerlos ordenados y agrupados

alguien sabe como lograrlo?
Etiquetas: [conferencia]  [geek]  
Fecha Publicación: 2010-06-08T17:36:00.002-05:00
Hola a todos esta vez un post rapido para hacer difucion de una conferencia que va a darse organizada por la Región XXI Sur y Balneriarios, de la Asociación Scouts del Perú, con el apoyo de la Municipalidad  de San Juan de Miraflores.
si bien la conferencia esta organizada por la asociacion scout recomiendo a todos aquellos que quieran beneficiarse de la experiencia del expositor en lo referente a la gestion de recursos humanos asistan es en dia domingo y gratis, asi que no hay excusa para perdersela aqui unos datos mas sobre la misma:
Datos de la conferencia:

Objetivos:
- La conferencia da una introducción a la Gestión del talento humano.
- Permite que el participante conozca las experiencias de otras organizaciones empresariales y sociales que manejen métodos productivos respecto al tema.


Justificación:
Las organizaciones, tienen entre sus miembros personas capaces con un talento probablemente que no lo desarrollan. Grandes empresas están aplicando los actuales esquemas de rendimiento, con diferentes metodologías, Las organizaciones no sólo deben adaptarse al hecho de que cada colaborador es diferente, sino que debe “aprovechar esas diferencias”. “Una organización que aprende, es una organización experta en crear, adquirir y transmitir conocimiento, y en modificar su conducta para adaptarse a esas nuevas ideas y conocimientos.(“David A. Garvin  Harvard Business Review-July-August 1993)

Metodología:
Será una conferencia de 80 minutos aprox. de exposición teórica, y 50 minutos para que los participantes pregunten en relación a sus organizaciones, de como pueden manejar sus recursos humanos y 15 minutos de un break.

Expositor:
Mg. Jorge Alfaro Sacre, Ingeniero industrial – Universidad de Lima, Magister en Organización & Dirección de personas – ESAN.
Actualmente profesor de la Universidad Privada “Ricardo Palma” en la facultad de post grado de Recursos Humanos. Gerente de Recursos Humanos del Grupo Albis S.A, Ex Gerente de Tecnología de Coca-Cola Servicios del Perú.

Día:
Domingo 27/06/2010  Hora:9:30 am. (Se ruega puntualidad)

Costo:
INGRESO LIBRE 

Lugar:
Plataforma Empresarial de la Municipalidad de San Juan de Miraflores


adjunto un mapa para llegar a la municipalidad de San Juan de Miraflores


Mapa

Etiquetas: [hacker]  [seguridad]  [web]  [usabilidad]  [geek]  
Fecha Publicación: 2010-05-25T14:46:00.004-05:00
Estoy leyendo el libro The Web Application Hacker Handbook y encontré este punto sobre el que queria escribir (traducir) un poco pues me parece importante y que ha sido dejado de lado, como desarrollador web muchas veces me preocupo de que la plataforma sea la correcta, de la usabilidad y formas de acceder a la base de datos, tiempos de respuesta y muchas otras cosas pero muchas veces se deja de lado el apartado de la seguridad, aquí algunos de los factores claves de que hoy por hoy una aplicación web pueda tener poca seguridad (y no, no basta con decir: usamos ssl)
Nociones inmaduras de seguridad
En el área de aplicaciones web existen nociones de seguridad menos maduras que en otras áreas establecidas hace ya algo de tiempo como son las áreas de redes o sistemas operativos; mientras que la mayoría de personas que trabajan en el sector de las TI tienen un conocimiento razonable de lo esencial en seguridad de redes y como proteger servidores, aun hay mucha confusión sobre conceptos clave involucrados en la seguridad de las aplicaciones web. Es común encontrar programadores web con mediana experiencia para quienes una explicación de los tipos básicos de fallas en seguridad se les presenta como una completa revelación.




Desarrollo In-House
La Mayoría de las aplicaciones web son desarrolladas In-House por el propio equipo de la empresa o por terceros. Incluso empleando componentes de terceros que son casi siempre customizados o rehechos usando código nuevo. En estas situaciones, cada aplicación es diferente y puede contener sus propios defectos. Como contraste tenemos que muchas de estas aplicaciones se despliegan en infraestructuras típicas de cualquier organización las cuales han sido compradas como la mejor de su clase e instaladas siguiendo las guías y  estándares de la industria

Simplicidad engañosa
Con las actuales plataformas de aplicación y herramientas de desarrollo web, es posible para un novato programar y crear poderosas aplicaciones empezando desde cero y en un corto periodo de tiempo. Pero hay una gran diferencia entre producir código que funcione y código seguro. Muchas aplicaciones web son creadas por individuos bien intencionados que simplemente carecen del conocimiento y la experiencia para identificar donde puede levantarse un problema de seguridad

Rápida evolución del perfil de las amenazas
Como resultado de su relativa inmadurez, la investigación  en ataques a aplicaciones web y las defensas asociadas a estas es un campo fértil en la que nuevos conceptos y amenazas son concebidas a un ritmo mas rápido que el que ahora tienen las tecnologías mas antiguas. Un equipo de desarrollo que empieza un proyecto con un completo conocimiento de las amenazas actuales puede haber perdido su estatus para el momento en que la aplicación esta completada y ya ha sido desplegada

Limitaciones de tiempo y recursos
La mayoría de los proyectos de desarrollo de aplicaciones web sufren estrictas limitaciones en tiempo y recursos, que llevan a desarrollo internos y desarrollos mas rápidos de lo que es recomendable. Usualmente no es posible emplear expertos dedicados en seguridad en los equipos de diseño o desarrollo, y se deja el testing de la seguridad por especialistas (cuando se lleva a cabo) hasta el final del ciclo de vida del proyecto, en el balance de las prioridades frente a una fecha limite; la necesidad de producir una aplicación funcional y estable normalmente sobrepasa unas menos tangibles consideraciones de seguridad. Una organización típica podría tener la buena voluntad de pagar unos cuantos días de consultoría para evaluar una nueva aplicación; pero un test rápido de penetración encontrara solamente las vulnerabilidades típicas y mas fáciles de hallar mientras que otras vulnerabilidades mas sutiles y que requieren de mas tiempo y paciencia para ser identificadas podrían ser (y de hecho son) pasadas por alto.

Tecnologías sobre utilizadas
Muchas de las tecnologías centrales empleadas en aplicaciones web vinieron al mundo cuando el panorama de la world wide web era muy diferente, y han sido empleadas mas allá del propósito para el que fueron concebidas inicialmente, por ejemplo el uso de JavaScript como una forma de transmisión de datos en muchas aplicaciones basadas en AJAX. Como las expectativas colocadas en la funcionalidad de las aplicaciones web ha evolucionado rápidamente, las tecnologías usadas para implementarlas han quedado atras en la curva, y hoy tenemos viejas tecnologias siento estiradas y adaptadas para satisfacer los nuevos requerimientos. No es de sorprender que esto nos llevará a nuevas vulnerabilidades con efectos colaterales que aun no hayamos podido ver.

Tomado de The Web Application Hackers Handbook
Etiquetas: [personal]  [trabajo]  [freelance]  
Fecha Publicación: 2010-05-19T13:05:00.003-05:00
Pues eso, después de mi ultimo empleo decidí iniciar la aventura de la empresa propia me asocie y empezamos la lucha de mandar propuestas, armar demos, con muchos sueños esperanzas y trabajo, sin embargo un conjunto de factores (incluida la inexperiencia de su servidor) no permitió que se desarrollaran bien las cosas, por ello he decidido hacer un poco de reingenieria, asi es, volver a empezar, aun tengo pendiente terminar la tesis, cerrar el ultimo curso en la universidad y un trabajo a tiempo completo no me permite la holgura de hacerlo en el tiempo que quiero (abstenerse de decirme que si, solo es cuestión de esforzarse,cada persona es diferente y no quiero pasar las de cain sin sueño y sin vida para poder con un empleo a tiempo completo, cursos y tesis a la vez) así que buscare algo sencillo una practica o pasantía o trabajos de freelance que me permitan administrar mi tiempo de la mejor forma (que no le bajo el nivel a los trabajos de freelance, muchos requieren mas conocimientos y habilidades que un empleo dependiente común, solo que un freelance tiene mas libertad para getionar su tiempo, y por ello lo considero), aun tengo en la mira el poder lanzarme como freelance (este post es un boceto de anuncio de ello) así que a mis queridos lectores ala!! anuncio lanzado estoy libre y disponible para trabajo, pueden contactarme por email o mensaje directo al twitter un saludo y éxitos a todos me voy a almorzar!!!


Paso de hacer mas autobombo aqui si quieren ver mi cv pueden hacerlo en la web de LinkedIn en este enlace
Etiquetas: [SCJP]  [java]  [certificaciones]  [tutorial]  [geek]  
Fecha Publicación: 2010-05-04T00:08:00.002-05:00
Después de una larga pausa por motivos personales retomo la publicación de los apuntes de estudio para la certificación SCJP su deseas ver los capítulos anteriores o siguientes recuerda que puedes ir al indice que contiene la lista de todas las publicaciones de esta serie Aquí

En esta ocasión repasaremos la declaración de clases y los modificadores que podemos utilizar en ellas

El código que escribimos se estructura siempre en clases o interfaces (después hablaremos de paquetes) y dentro de ellas colocamos las variables y los métodos, la forma en la que declaremos cada uno de estos elementos afectará el comportamiento de nuestro código.

Por ejemplo cambiar un método de public a private hará que este desaparezca de la vista de todos los otros métodos que lo referenciaban salvo que se trate de métodos pertenecientes a la misma clase en la que fue declarado.



Reglas de Declaración de Archivos de Código:

Solo puede haber una clase con el modificador public por archivo
Los comentarios pueden estar al inicio o al fin de cualquier línea de código
Si en un archivo hay una clase pública el nombre del archivo debe ser el mismo que el de la clase, por ejemplo si en el archivo tenemos una clase:

el archivo debe llamarse Cat.java

el orden de las declaraciones es el siguiente:
  • declaración de paquete
  • sentencias de importación
  • declaración de clase
ejemplo:

tanto las sentencias package o import podrian no estar presentes, pero siempre debe mantenerse el mismo orden, por ejemplo tomando como base el ejemplo anterior las siguientes combinaciones son válidas:



Las sentencias package e import se aplican a todas las clases dentro del mismo archivo de código y se declaran una única vez al inicio del archivo, ejemplo:

imaginemos el siguiente código dentro del archivo Cat.java

Un archivo puede tener mas de una clase que no tenga el modificador public  pero en caso que no contenga una clase pública no necesita llamarse igual que alguna de las clases en su interior

Declaración de Clases y Modificadores

Para declarar una clase basta con una sentencia xclass el siguiente código es lo mínimo necesario para tener una clase válida:

Sin embargo podemos agregar modificadores antes de la sentencia xclass para modificar el comportamiento de la misma, estos modificadores son de 2 tipos:
modificadores de acceso (public, protected, private)
otros modificadores (strictfp, final, abstract)

Modificadores de acceso:

Existe algo interesante sobre los niveles de acceso (también llamados accesos de control o control access)y es que existen 4, pero solo hemos mencionado 3 modificadores de acceso el cuarto nivel de acceso de control es el acceso por defecto o de paquete, entonces la clase que declaramos antes:

tiene el nivel de acceso de control de paquete; en otras palabras: sea que coloquemos un modificador de acceso o no, toda clase método o atributo tiene ya un nivel de acceso asignado,
otro punto a tomar en cuenta es que aunque existen 4 niveles de acceso de control a una clase solo puede asignarsele 2 estos son:

  • Acceso por defecto o de paquete (sin modificador)
  • Acceso público (modificador public)


Decir que una clase A tiene acceso a una clase B significa que:

  • A puede crear una instancia de B.
  • A puede extender B (esto es: puede volverse una subclase de B).
  • A puede acceder a ciertos metodos y variables dentro de B, dependiendo del tipo de control de acceso a dichos metodos y variables.

Cuando hablamos de acceso a clases hablamos también de visibilidad, el nivel de acceso que exista entre ellas tiene prioridad sobre el nivel de acceso que posean sus métodos o atributos, esto quiere decir que si la clase A no tiene acceso a la clase B, no importa el nivel de acceso de sus métodos o atributos, la clase A no podrá acceder a ningún método o atributo de B.

Acceso por Defecto o De Paquete
Como mencionamos este es el nivel de acceso que obtenemos si no añadimos ningún modificador a una clase, a este nivel también se le conoce como nivel de acceso de paquete debido a que una clase con nivel de acceso por defecto solo puede ser vista por las otras clases que estén dentro de su mismo paquete y a su mismo nivel (explicare esto en el ejemplo).

Ejemplos:

archivo1:

archivo2:

en este caso la clase Carreta con un nivel de acceso de paquete esta en un paquete diferente que la clase Auto, y mientras que el archivo de la clase Carreta compila perfectamente el archivo de clase Auto nos indica que "Auto cannot be resolved to type"

lo mismo obtenemos en el siguiente caso:

archivo1:

archivo2:

Esta vez la clase Auto esta en el paquete vehicle que es un subpaquete de antiques, y sin embargo obtendremos el mismo error por lo que podemos deducir que el nivel de acceso del paquete es estricto, no importa si la clase que hereda esta en algún subpaquete.

Para lograr que el código funcione tenemos 2 opciones: Declarar la clase Carreta como publica agregando el modificador public o colocando ambas clases en el mismo paquete como en el siguiente ejemplo:

archivo1:

archivo2:

Este tercer caso es un acceso permitido a la clase Carreta desde la clase Auto pues ambos pertenecen al paquete vehicles

Acceso Público
Una clase es de acceso público si agregamos antes de la sentencia xclass la sentencia public con esto estamos haciendo esta clase visible a todas las demás clases en todos los paquetes, sin embargo recordar que es necesario aun agregar la instrucción import para acceder a la clase desde otros paquetes

ejemplo

tomando como base el ejemplo del punto anterior para que la sentencia sea valida usando acceso publico deberíamos cambiar la declaración de la clase Carreta por

archivo1:

archivo2:

Otros Modificadores de Clase
Ademas de los modificadores de acceso que ya vimos existen los modificadores: strictfp, abstract y final, y pueden usarse junto con los modificadores de acceso excepto la combinación abstract y final.

Modificador final
Una clase es final si agregamos a su declaración el modificador final, una clase final no puede ser subclaseada, esto es que ninguna clase puede heredar de una clase final, si se intentara heredar de dicha clase se obtendría un mensaje de error en tiempo de compilación; las razones para hacer esto son diversas pero la principal suele ser garantizar que la implementación de una clase se mantiene sin cambios, generalmente por motivos de seguridad.
La mayoría de las clases que conforman el núcleo del sdk son declaradas como finales como por ejemplo la clase String

Sin embargo esto debe observarse mucho por ejemplo la siguiente situacion:

Imaginemos  no tienes el código fuente de una clase que no ha sido declarada como final y necesitas hacerle modificaciones, solo necesitas heredarla, aplicar los cambios necesarios y reemplazar las llamadas a la clase antigua por la nueva clase que acabas de modificar, si la clase que necesitas cambiar hubiera sido declarada como final esto no seria posible y el cambio seria imposible de realizar

Ejemplo:
Continuando con el ejemplo anterior ahora declararemos la clase Carreta como final y veremos el mensaje que se obtiene

archivo1:

archivo2:

si intentáramos ejecutar el código obtendríamos el mensaje:

The type Auto cannot subxclass the final xclass Carreta


Modificador abstract
Una clase es abstracta si agregamos a su declaración el modificador abstract, Una clase abstracta no puede ser implementada, por lo que su único propósito es ser subclaseada o heredada por otras clases esto puede ser debido a que esta clase servirá como padre de muchas clases o por que es un concepto demasiado vago como para poder ser estructurado, tomemos por ejemplo una clase llamada Animal, es demasiado vaga pues representa a todos los animales posibles, cuantas patas tiene? cuantos ojos?, de que color es?... más aún. como se comportaría? como se mueve?, camina, vuela, nada?, de repente mas de uno a la vez, como nace,? de un huevo, de la madre, etc.

Sin embargo una vez que se declaran clases mas concretas estas preguntas pueden ser respondidas como Perro, Conejo, etc.

Otro hecho que debe notarse es que los métodos de una clase abstracta también pueden ser abstractos y por ello no estar implementados, tan solo declarados. Para esto debemos incluir en la declaración del método el modificador abstract y en lugar de las llaves ({}) terminara en un punto y coma (;) un método abstracto tampoco tiene implementación, en este caso delegamos el implementarlo a quien herede la clase abstracta. Una clase abstracta puede tener tanto métodos abstractos como no abstractos, pero una clase no abstracta no puede tener métodos abstractos, en resumen: si una clase contiene al menos un método abstracto, la clase debe declararse como abstracta. Un ejemplo de metodos no abstractos que puede tener una clase abstracta son los getters y setters a sus atributos.

Ejemplo

El código anterior es correcto y compila sin problemas, sin embargo si intentamos instanciar la clase se obtendrá:

xclass Animal is an abstract xclass. it can't be instantiated.

Con esto terminamos el tema sobre declaración de clases y modificadores de acceso a las mismas, en el siguiente post trataremos sobre la declaracion de interfases.
Etiquetas: [naruto]  [manga]  [freak]  
Fecha Publicación: 2010-04-01T23:15:00.001-05:00
Los preparativos para la batalla, ambos lados se preparan para la batalla

Etiquetas: [naruto]  [manga]  [freak]  
Fecha Publicación: 2010-03-26T11:23:00.001-05:00
zerakooll es un usuario de youtube que se ha dado el trabajo de colorear y subir en video algunos mangas de naruto el trabajo es bastante profesional incluyendo en los ultimos algunas animaciones para lograr efectos visuales (nieve, el viaje dimensional de madara) en verdad recomiendo mucho que lo vean disfrutaran mas de los episodios ademas de que usa escaneados del manga traducidos al español como muestra les dejo uno de sus trabajos

Etiquetas: [naruto]  [manga]  [freak]  
Fecha Publicación: 2010-03-26T11:04:00.002-05:00
El regreso a Konoha



Esta vez gracias al usuario de you tube ●Ŋдяμ§eηηιη™●
Etiquetas: [bug]  [windows]  [geek]  
Fecha Publicación: 2010-03-24T13:50:00.001-05:00
Al parecer hay un error cuando dejas un archivo seleccionado en el explorador de windows y tienes la vista previa activada, concretamente archivos de texto

hoy estaba haciendo unas pruebas con un archivo html lo deje seleccionado en el explorador de windows con la vista previa habilitada, despues de editarlo en el programa notepad++ y al intentar grabar los cambios me salio un popup indicandome que el archivo estaba ocupado por otro programa

mi sorpresa fue que el supuesto otro programa era la vista previa del explorador de windows

de momento solo lo he probado con archivos de texto plano (txt, html, css) alguno ha visto si esto sucede con algun otro tipo de archivo?