@ agnasg

WordPress ataque fuerza bruta via wp.getUsersBlogs (xml_version)

21-09-2014 2:16 PM

Este blog ha estado bajo ataque por una nueva vulnerabilidad de wordpress vía xmlrpc.php. Tal como se reporta aquí el ataque tiene el siguiente contenido:

wordpress-xmlrpc-attack
Hay múltiples sitios que indican que no hay solución por ahora para resolver esto. En realidad, al menos a mi, me funcionó invalidar el archivo xmlrpc.php utilizando el siguiente código en .htaccess

wordpress-xmlrpc-attack-solved
Y todos mis problemas se resolvieron.

Minecraft : los pequeños detalles

16-09-2014 8:24 AM

Al parecer toda esta novela de Minecraft está llegando a su fin, Notch quiere regresar a programar juegos pequeños que no sean tan grandes como Minecraft, Microsoft compró Minecraft por 2500 millones de dólares (, 2), y los fanáticos siguen tratando a Notch como si fuera un bebe. Lo raro es como cada comunidad maneja  el asunto. En general reddit parece estar formada por gente adulta, pero su conducta es la de niños, y Neogaf parece estar formada por niños pero su conducta es la de adultos. Mientras la opinión mejor votada en reddit es que Notch está reconociendo que no puede manejar el asunto, y que prefiere tomar el dinero y largarse, la gente en Neogaf opina que el puede hacer lo que le dé la gana con su juego así como con su dinero. Notch es un competente programador que se vio envuelto en un nuevo giro en el desarrollo de juegos con un producto que ha cambiado la visión general sobre lo que a la gente le gusta (en realidad no ha cambiado nada: Minecraft es un lego virtual y a todo el mundo le gusta lego). Notch no quiere eso para su vida, así que prefiere regresar a su nicho de cosas pequeñas y sin importancia. Porque las cosas pequeñas e insignificantes son más bellas. De hecho, observa con detalle Minecraft: no me imagino un juego más insignificante y humilde.

Borges, o el porqué una tragavenado no se puede tragar un venado

15-09-2014 7:20 AM

Estaba leyendo con fruición este artículo de BBC – Cultura, llamado Is Borges the 20th Century’s most important writer? (¿Es Borges el más importante escritor del siglo XX?) y no podía salir de mi asombro a medida que avanzaba en la lectura. Al final me quedé con la mirada fija en el infinito, perplejo, triste, nostálgico, disgustado, lacónico y mustio como Lady Honoria Lyndon en la última escena de Barry Lyndon: ¿cómo podía un escritor titular de la BBC apenas sugerir eso? No es que Borges sea malo o no merecedor de alguna mención, es que sería una herejía contra otros escritores de talla eminentemente superior en casi cualquier aspecto imaginable. ¿Cómo colocar a Borges en una lista donde también incluyamos a Kafka, García Márquez o a Hesse?  Es que no me atrevería a hacerlo en una lista con algunos escritores igualmente ingeniosos, quizás, digamos, por ejemplo, como Philip K Dick.

Borges es como uno de esos borrachitos que nos encontramos en los bares, ingeniosos y ocurrentes. Recuerdo que un día estaba con mi cuñado Mauba, y el borrachito de al lado nos insistía una y otra vez que una tragavenado (una anaconda) no se puede tragar un venado. Porque los venados miden 120 centímetros como él pudo comprobar en sus frecuentes travesías científicas por los llanos venezolanos y la culebra con el diámetro más prominente apenas llega a 20 centímetros.  Era imposible. Y mucho menos devorar a un hombre que mide un metro ochenta. Imposible. A todo aquéllo respondíamos  con un “Ajá” porque mencionar las evidencias que se pueden encontrar libremente en youtube estaba fuera de cualquier límite. Pues Borges y sus cuentos nos deleitan de una forma similar. Como cuando éramos niños y veíamos aquéllas películas de Maciste contra Sansón, o Hercules contra Sanson: las mirábamos con la boca abierta y un dedo en el labio inferior, preguntándonos  si los héroes de la antigüedad de vedad hacían todo eso.

Pero quizás se trata simplemente del entusiasmo del converso, o del que por primera vez va al circo. Cuando leí por primera vez a James Joyce me dije cómo era posible vivir sin saber de su existencia. Y me devoré el Ulyses (bueno, las primeras 300 páginas) como si quisiera descubrir los secretos detrás del árbol del conocimiento del bien y del mal. Tardé años en descubrir que era un monumento a la habladera de paja. Y es que ojala al mismo tiempo que nos enseñan a leer y a escribir no enseñaran en el colegio a discernir cuando alguien está hablando paja en particular, estupideces en general o algo sustentable y valioso. Nos ahorraríamos mucho tiempo en nuestras vidas de adulto y seríamos hombres y mujeres más productivos.

Blender 3d: operaciones olvidables

28-08-2014 3:51 AM

Algo que puede ser de utilidad para cualquiera que, como yo, utiliza en forma esporádica Blender 3d. El problema es que hay cosas que se olvidan por la falta de practica. Y Blender es un programa que no perdona la falta de practica.

¿Por qué no estoy viendo las texturas en blender?
· porque no está seleccionado el modo de textura sino modo sólido
· porque no has asignado la textura
· el unwrap se presiona en la escena 3d, en edit mode, probar unwrap o smart unwrap dependiendo de lo que se
necesita, verifica que las caras están seleccionadas.
· o más probablemente porque colocaste el objeto en un layer que tiene luz y entonces reacciona a esa luz

¿Como es que se asignan los vértices al esqueleto?
· para asignar los vértices a los huesos, seleccionar primero el objeto, luego la armadura, presionar CTRl-P y seleccionar
with automatic weights

¿Cómo se agrega un nuevo hueso?
· para agregar un nuevo hueso, seleccionar la punta del parent y (e)-extrude

Animación
· para agregar un keyframe,  seleccionar toda the armature and I LOCREC
· para copiar un keyframe CTRL-C o Pose menu and Copy Pose
· para paste un keyframe CTRL-V o Pose menu and Paste Pose

Modelaje
· para mostrar solamente un grupo de vertices, seleccionar los vertices, crear un grupo con CTRL-G
ahora con este grupo podemos seleccionar y deseleccionar los vertices. seleccionamos todo, deseleccionaos los vertices
presionamos HIDE H, quedan solamente los vertices del grupo para ver todo de nuevo presionamos ALT-H
· Help! I can’t see the armature! Goto object mode, y seleccionar armature en el panel superior a la derecha, donde está el árbol de la escena, world, armature and so. Debajo del árbol, hay un menú horizontal, presionar el esqueleto ahí. Debajo del menú aparecen los layers, presionar el layer donde está el esqueleto.

¡Auxilio! el objeto está atascado en una posición cuando cambio de object a pose!

selecciona el objecto en el 3dview, también seleccionalo en el árbol, busca el menú horizontal debajo del árbol, busca la herramienta (es como una llave inglesa) borra los modificadores que aparecen abajo elimínalos a como dé lugar
Esto puede o puede que no funcione. Prueba con borrar cualquier otro esqueleto que esté asociado al objeto. Si tampoco funciona
borra todos los esqueletos y comienza de nuevo. Buena suerte pero yo creo que vas a tener que hacer esto último, borrar y
empezar de nuevo (buuuu)

Más datos importantes pero olvidables:
· hay que salvar el archivo antes de exportar
· si se le coloca a un mesh 1×1 una textura 512×512 irrlicht (al menos el engine que yo utilizo)comienza a hacer flicking cuando el mesh se aleja de la cámara. Por ello, la textura y su mesh’s face deben corresponder a caras pequeñas texturas pequeñas, mesh grandes texturas grandes, mejor dicho la textura puede ser grande pero se debe ajustar la cara en la proyección UV.
· tanto el archivo .b3d como las texturas deben estar en la misma carpeta.

Tutoriales fundamentales

Esqueletos y huesos

Animación de esqueletos

Simple animación de un personaje caminando

UV Mapping

 

De trabajar freelance

01-08-2014 11:03 AM

Hay gente que piensa que al dejar su trabajo y dedicarse al freelancing, va a tener más tiempo, y va a ganar más dinero. Se equivocan. Tengo algunas ecuaciones para definir la vida del freelancer. Freelance = libertad. Freelance ≠ Más tiempo disponible para el ocio o para los hobbies. No hay beneficios adicionales, la recompensa del trabajo sigue siendo más trabajo. Tomar la decisión de convertirse en un trabajador freelance se debe hacer por sólidos motivos, no solamente para tener más tiempo, o porque  sea más fácil. No hay trabajo fácil. Todos los trabajos son difíciles. Freelance = libertad porque tú decides sin influencias externas. El resto es igual a cualquier trabajo. Pero no hay horario, limite, control ni supervisión, es decir, hay más libertad.

Hay un impacto en tu vida social porque hay personas que reaccionan negativamente a los que trabajan freelance. Esto puede deberse a múltiples motivos, incluyendo la envidia. ¿Trabajar en casa sin supervisión? Eso es socialmente sospechoso. La vida de freelance no es para todo el mundo, es decir, puede ser negativa para ciertas personas que requieren vida social activa, hablar mientras se toma café etc.. En ciertas ciudades hay espacios para los freelance donde pueden trabajar acompañados. Hay quienes no pueden trabajar solos. Usualmente son las personas que tienen problemas con la soledad. Identificar el problema de eso es la primera parte de llegar a la solución, por ejemplo, son personas que no se aceptan a si mismas, no se soportan, o encuentran aburridos sus pensamientos. Pobres almas, pobres de espíritu.

El trabajo es trabajo, pero es diferente al mismo tiempo.  Es como en una economía de pleno empleo: tu empleador sabe que tú puedes renunciar de inmediato al primer problema, pero tú sabes igualmente que él puede buscarse  a otro con rapidez. Pero hay detalles. Detalles que un novato desconoce. En especial para los freelance programadores. Un empleador novato puede quedar atrapado una y otra vez con malos programadores, e igualmente un programador puede ser estafado una y otra vez por empleadores que han hecho de la estafa un estilo de vida. Es con el tiempo que se descubre cómo identificar a alguien que trata de sacar un beneficio deshonesto de la relación empleador-freelance. Por ello los novatos tienen tantos problemas o desertan al poco tiempo.

Los empleadores te tratan con una desconfianza total porque no saben si eres competente o no. Hay que venderse en cierta forma para disipar las dudas. La pregunta es porqué hay tantos freelance mediocres y la explicación es simple. Los mejores freelance eventualmente son contratados en forma fija por las agencias que se dedican a bodyshopping. Así, en el mercado solo quedan los mediocres y a los que les gusta mantenerse free dentro del mercado freelance, que usualmente son pocos.  Por eso un empleador se sorprende al conseguir un freelance de calidad trabajando solo. Al parecer eso eso es raro. Hay empleadores que prefieren a gente de la India porque son baratos, otros huyen de ellos como si contagiaran el ébola. Son tantos que recientemente un cliente me confesó que yo era el primer programador no indio que contrataba. Un proyecto recibe ~15 propuestas en los primeros 15 minutos. 12 son normalmente de la India, 1 de algún país del este de Europa, Rumania por ejemplo, 1 de Vietnam, China o Taiwan, y otro de algún otro país, nunca del llamado primer mundo.

Lo que más me gusta de trabajar freelance es que todos los días conoces gente diferente. Inclusive en una ventana de chat se puede ver y palpar  la personalidad de la gente. He conocido gente de casi cualquier país. USA, Canadá, UK, Vietnam, Singapour, Grecia, India, Egipto, Israel. He conocido la gente más honesta del mundo, y a la gente más tramposa igualmente. Pero todas son personas con un objetivo y es fascinante cómo tratan de lograrlo. A veces de una forma genial y maravillosa, a veces de una forma patética y triste.

Los empleadores que vienen al mercado freelance son de diversa índole, normalmente buscando personal barato. Algunos son bien irrespetuosos pues pretenden pagar $200 por una instalación del módulo de Finanzas de Sap, mientras que Deloitte hace lo mismo por $200.000. Otros entienden que los freelancers son humanos y que algunas veces comen y tienen familia. Inclusive hay empleadores que subcontratan el trabajo por el que les paga la compañía donde trabajan. Alguna vez un empleador me ha confesado que su jefe no debe enterarse, como si yo estuviera al tanto de dónde trabaja o quién es su jefe.  En el mercado freelance se ven cosas muy raras. Por ejemplo gente que busca a alguien que les haga una red social con todas las características de facebook, y el rango de precio es $30-$250, y  debe estar lista en una semana sin excepción. Siempre estoy tentado de preguntar si se trata de un chiste, pero no lo hago porque conozco la respuesta. No. Es en serio.

Yo no tengo nada en contra de la gente que trabaja en un empleo, 9am-5pm, en una oficina que está a media hora de tráfico de su hogar. De hecho, pasé 21 años de mi vida trabajando de esa forma. Pero a veces siento compasión y hasta vergüenza por la felicidad que obtengo de mi trabajo. Hace años trabajé en una empresa de venta de software y servicios profesionales, yo era el vendedor en mi país, y mi jefe que viajaba por toda latinoamérica tenia a dos ingenieros en su staff. A veces me acuerdo de ellos y deseo de todo corazón, deseo que de alguna forma milagrosa hayan logrado escapar de ese trabajo. Sí, ciertamente la esclavitud está abolida, pero he visto esclavos muchas veces en mi vida, y particularmente los recuerdo a ellos como el mejor ejemplo.

Hace años le pregunté a un amigo cómo era trabajar en el IVIC (Instituto Venezolano de Investigaciones Científicas). Tardó 3 horas en darme una pormenorizada explicación. Le dije que con un “Es bueno” hubiera sido suficiente. Yo puedo pasar 3 horas explicando cómo es trabajar como freelancer. Y lo puedo decir también rápidamente: “Es como esas películas en las que el personaje vive un mismo día una y otra vez. Siempre es lo mismo, pero diferente al mismo tiempo. Todos te ven como si fuera la primera vez que te ven, y tú lo único que les devuelves es una sonrisa.”

Qt: no, eso tampoco funciona

31-07-2014 4:39 AM

Una lista de acciones dentro del ambiente de Qt que deberían funcionar pero que no funcionan. Estén documentadas o no:

  • Clean no necesariamente Limpia. Si usted agrega un nuevo archivo (externo al proyecto) a un proyecto que ya ha sido creado se genera el error: QtCreator: Target debug/…obj does’nt exist La solución parece ser limpiar el directorio debug o release, o simplemente eliminar los makefile que estén ahi. También funciona agregar a mano el nuevo archivo en el makefile. Clean no funciona para esto (ya ha sido reportado o discutido por diversas razones). En la pestaña de Projects  se pueden customizar los pasos en Clean Steps, que es lo mismo que automatizar los pasos descritos arriba. Pero hay que saber cuáles son esos pasos, es decir, borrar el directorio debug o borrar los makefile, pero como el Clean es ejecutado a través de un jom -f Makefile o nmake -f Makefile, ni idea lo que puede suceder si desde un makefile ordenamos borrar el mismo makefile, al menos no parece elegante. E igualmente no es como elegante editar esos makefile. Al menos hay que cambiar 3-4 targets por cada nuevo archivos agregado, errores pueden suceder, resultados no esperados y demás tragedias. Solución definitiva, borrar los makefiles respectivos y hacer Build de nuevo
  • Cambiar el tamaño de un botón (QPushButton): QPushButton#applyButton::indicator{width:150px;} No, eso tampoco funciona. google reporta varias sugerencias  en especial el manual , pero por ninguna parte se menciona applyButton->setMaximumWidth(80); que resulta ser la forma de hacerlo sin tener que entender cómo funciona setSizePolicy
  • Qt::AlignRight no funciona para alinear widgets a la izquierda. Hay que crear un QHBoxLayout y agregar addStretch(1) y los demás widgets.
  • QtCreator Designer no es la mejor forma para Crear aplicaciones en qt. Es fácil de usar y te permite crear bonitas aplicaciones, pero eventualmente lo tienes que desechar porque es incómodo para hacer el tipo de cosas que un desarrollador maduro tiene que hacer. Ya de por si todo el mecanismo de SLOTs es innecesariamente complicado, por lo que ningún programador serio que se precie de serlo dejará en mano de una aplicación su manejo. Queremos tener el control. De eso se trata. Si buscas en google las preguntas y respuestas alrededor de QtCreator Designer tienen que ver con programadores novatos que todavía creen que Designer es la forma de hacer ui, es decir la idea detrás de qt, que es crear ui. QtCreator es una forma conveniente de tener el proceso de build integrado dado que qt requiere un preprocesamiento especial, ejecutado por el comando moc. Pero en realidad se puede hacer con un compilador y un makefile bien construido. Qtcreator facilita todo esto. Y el gui de Qtcreator es mucho mejor de lo que parece al principio.
  • Yo hice un monumental esfuerzo para crear una aplicación independiente del Gui, utilizando namespaces, templates, classes, etc, todo un esfuerzo perdido porque tratar de migrar a qt tu elegante y generalizada aplicación es una tarea casi imposible. Qt tiene un exceso de personalidad, es el muchacho que se sienta atrás en el salom y sabotea la clase, te baja los pantalones y se mofa de ti. Qt es intratable y pendenciero y hay que someterse a sus dictámenes y maneras. Al final, luego de un mes de trabajo decidí botar a la basura mi aplicación y escribirla de nuevo. Así es Qt, es que es diferente solo en una nueva forma que surgió por generación espontánea.

Desarrollo en Qt

24-07-2014 5:47 PM

Es difícil saber cuándo vamos a adquirir velocidad de crucero desarrollando en Qt. Usualmente por mi experiencia de 3 décadas desarrollando sistemas con múltiples lenguajes, plataformas, API’s, etc., luego de una semana ya puedo comenzar a dar estimados. Con Qt todos los días son como entrar por primera vez a un dungeon de Cataclismo (una expasión de Wow) : nunca se sabe qué va a pasar. Ir a google a preguntar es una experiencia tan frustrante como buscar ayuda sobre pentaho. Creo que esta advertencia en Stackoverflow lo resume todo:

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Esta pregunta ha atraido respuestas de baja calidad. En realidad rara vez se consiguen respuestas de calidad aceptable. Siempre es algo así como “a mi me ha funcionado de esa manera, cómo y por qué no tengo idea”. La pregunta en cuestión es por qué o cuándo usar QMainWindow, o QDialog o QWidget. Las respuestas son similares a las explicaciones en el Manual del Recientemente Fallecido (Handbook for the Recently Deceased) no tienen sentido, o son explicaciones que se contradicen intrínsecamente de una forma externa manteniendo el aspecto circunscrito a la periferia interna.

Si esto estuviera solamente en el ámbito de Stackoverflow o algunos foros especializados como www.qtcentre.org donde todos los que no saben se deleitan en su ignorancia no sería tan grave, pero es que lo mismo sucede en developer.nokia.com y qt-project.org/forums. Por ejemplo, vemos en el tutorial de stylesheet que para agregar un estilo a un componente es algo así como esto:

qApp->setStyleSheet(“QGroupBox { margin-top:20px; } “);

 

A mi me llamó la atención inmediatamente porque eso no es una expresión válida CSS. Los selectores comienzan con “.” o con “#”. Pues si hacemos lo que aparece en la mencionada página, la aplicación falla, el menú desaparece, se abre un agujero negro, se genera una fuga en el espacio tiempo. No sé si por intuición o porque lo había visto en alguna parte (creo que está en uno de los ejemplos en la distribución de qt) le agregué el “.” antes del selector. Todo comenzó a funcionar . Quedó así:

qApp->setStyleSheet(“.QGroupBox { margin-top:20px; } “);

Ese “punto” es muy importante.

Prepárese para dejar un rastro de notas, bookmarks, source code inservible y noches y días llenos de frustración. Por ejemplo, mi carpeta de bookmarks quedó así:

bookmarks-qt
¿Algunas palabras finales?. Pues al final, al final, final, todo funciona:

Al final, sin explicación alguna, las cosas comienzan a funcionar. Cómo y por qué, es algo desconocido. Pero ese desenlace esperanzador me mantiene motivado a seguir adelante.

Eso: enlaces de game programming

20-07-2014 2:33 PM

Enlaces

Qt deployment

16-07-2014 4:39 PM

Tal como se lee en artículos como este, el deployment de una aplicación Qt en Windows es un verdadero dolor en el trasero (por decirlo con algo de elegancia). Por qué hacer de algo simple algo tan complicado escapa de mi comprensión. El punto es que es así.

Ahora bien, si seguimos este tutorial, no debemos tener problemas. Por que al menos en el caso cuando tratamos de crear una aplicación QT usando QtCreator, y seleccionando Qt Widgets Application el ejecutable se puede distribuir a otros equipos sin Qt instalado. Lo he probado con Windows XP, Windows 7 y Windows Vista. Claro, en la carpeta deben estar los siguientes dlls:

Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
platforms
qwindows.dll

Lo que hace que la aplicación no funcione cuando la ejecutamos en los equipos es cuando es generada usando Qt Quick Application o Qt Console Application. También si incluímos Qml, se generan errores. Lamentablemente el error no aparece por ninguna parte, simplemente una pantalla en blanco, o windows dice que la aplicación abortó.  Hay que revisar los procesos que se están ejecutando porque en estos casos la aplicación se queda en el background y eso puede generar nuevos y adicionales problemas.

 

¿quién tiene un blog?

02-07-2014 5:53 AM

Estuve la semana pasada en este congreso sobre tecnologías web, redes sociales y otros tópicos, y uno de los expositores preguntó quién tiene un blog. Me acordé de mi blog… pena me debería dar.

Enlaces y comentarios diversos

  • No puedo estar más de acuerdo con esto, pero quizás por diferentes razones. Blizzard ha ido agregando profundidad al sistema de crafting, a las mascotas, al pvp. Antes de las modificaciones yo le dedicaba un considerable tiempo a ellas. Ahora no. Notable el caso de las mascotas. Yo podía pasar horas tratando de conseguir una mascota, ahora que las mascotas tienen una funcionalidad adicional, ya no me interesan. Quizás el pvp no me llama la atención realmente. NOTA: esta mascota, el Disgusting Oozeling (wowhead, tiene 470 comentarios!) tiene tiene una posibilidad de 1.5% en una bolsa que tiene a su vez una posibilidad de 1.0%, lo que significa que hay que matar a 1000 oozes para conseguirla. Yo maté al menos 1500. Sin éxito. No lo he vuelto a intentar desde Cata. En los comentarios de wowhead se habla de 5000 kills.
  • Newegg.com está aceptando Bitcoins, tal como fue reportado en todas partes en forma inmediata (1, 2).
  • Críticas a Second Life. Es interesante cómo llegué aquí. Llegó a mis manos este documento sobre Prompter, un lenguaje que permite programar con mucha facilidad juegos de ficción interactiva sobre la plataforma Versu. Recomiendo esta lectura de Graham Nelson, un genio de la fi. Sobre Versu se han publicado verdaderas joyas de la ficción interactiva, incluyendo el reciente Blood & Laurels, de Emily Short (no lo he jugado todavía). Recordé que Versu fue noticia a principios de año, porque la compañía que lo desarrolló lo abandonó. La compañía se llama Linden Lab. Esta es la compañía detrás de Second Life. Yo estuve jugando SL hace 4 ó 5 años, hasta que lo abandoné pues no le vi el sentido. Evidentemente hay gente que si le ve sentido porque pagan $500-$1000 por una isla en el juego. Raro.
  • Este raycaster escrito en 128 bytes de assembler causó mucho revuelo hace poco (youtube). Este artículo analiza las técnicas utilizadas para ahorrar espacio.