0x666
Usuario (México)

WordPress es un CMS (Sistema de Gestión de Contenido) que se enfoca principalmente al montaje de blogs o bitácoras, pero al día de hoy es tan extendido que puede utilizarse incluso para otras tareas; lo anterior puede o no hacerse si utilizamos el servicio de WordPress.com o WordPress.org Vale, WordPress es exactamente lo mismo aquí y en China; es un proyecto Open Source y permite que cientos de desarrolladores colaboren en la mejora de su código. Todo lo relacionado al proyecto WordPress (descargas, traducciones, foros de discusión o documentación) se encuentra en su página oficial WordPress.org Ahora bien, el servicio que ofrece WordPress.com permite alojar muy fácilmente un blog en sus servidores de manera gratuita o de pago; la gratuita es demasiado limitada y en cambio la de pago ofrece más funcionalidades con la pega de que es un tanto cara. Cuándo utilizar el servicio de WordPress.com Si nuestra idea es montar un blog en pocos pasos y sin tantos líos técnicos debemos recurrir al servicio gratuito que nos ofrece WordPress.com, el cual nos ofrece un pequeño espacio para montar un blog muy sencillo de una manera bastante rápida. Lo malo de utilizar su versión gratuita, como ya lo dije, son sus limitaciones al no poder utilizar un dominio propio (por ejemplo miblog.com, miblog.com.ar, miblog.mx, miblog.net), poco espacio de almacenamiento e inclusive no poder utilizar un tema personalizado (apariencia del blog) o plugins para mejorar un poco su funcionalidad. Para quitar esas restricciones hay que pagar; inclusive pagando no creo que haya un control absoluto sobre el blog respecto a opciones avanzadas como acceder a la base de datos o gestionar los archivos y directorios. Cuándo utilizar el servicio de WordPress.org Si elegimos esta opción, es porque sabemos lo que hacemos o aprenderemos mediante pruebas montando un servidor web local en nuestra misma PC; es la opción recomendada para usuarios más avanzados. Y al decir avanzados no es necesario saber programar o ser un gurú de la computación, pero si es indispensable tener mucha paciencia para ir mejorando o añadiendo detalles poco a poco con sus respectivas fallas. Esta opción nos permite tener absoluto control sobre el blog pero eso también implica una gran responsabilidad; debemos actuar inmediatamente ante fallas y sobre todo, leer muchísima documentación. Menos mal Google es un buen amigo (en este caso) y nos facilitará un poco las cosas, caso contrario hay que recurrir a un foro especializado en WP. Una ventaja de todo esto es que se aprende muchísimo, pero en ocasiones se vuelve un auténtico dolor de cabeza: experiencia propia con la última versión del proyecto MultiAportes. Para montar un blog online con esta opción necesitaremos un hosting y nombre de dominio propios; ojo que no cualquier servicio de hosting soporta WordPress. Ir al artículo original FIN DEL POST

Ya que “Internet” es tan popular, ¿por qué no habríamos de llamarlo de su manera correcta: la web? Gracias a la web podemos estar en Facebook, escuchando música en Youtube y leyendo algunos artículos en este blog mientras descargamos una película p̶o̶r̶n̶o̶. No es que Internet sea una palabra vulgar, de hecho en realidad es quien tiene muchos servicios gracias al laburo hecho por investigadores que estuvieron en el proyecto ARPAnet. ¿Qué es Internet? Internet es la plataforma de muchos servicios para intercambio de información mediante algo que se llama hipertexto, mensajes de correo electrónico, transferencias de ficheros (películas, software, fotografías, documentos) e inclusive ahora somos capaces de charlar con otras personas mediante una videollamada. En otras palabras, a Internet se le conoce como la red de redes (hablando de redes de computadoras); entre sus características es que no tiene un punto central y básicamente tiene la forma de una malla parcialmente conectada (no todos los nodos están conectados al resto de ellos). ¿Qué chuchas es la Web? La Web (también conocida como World Wide Web) es aquella parte de Internet que nos permite transferir hipertexto entre dos nodos de esa gigantesca red. Ese “hipertexto” se compone de texto y enlaces a otros recursos, el cual es complementado por imágenes y demás contenido multimedia; como algunos ya lo habrán podido deducir, HTML es aquel lenguaje que nos permite realizar todo esto. Para finalizar Este pequeño post lo hice gracias a algunas cosas que aprendí hace poco en mis primeras semanas de la vuelta a la escuela, como ya hice un par de tareas hablando de esto mismo entonces me pareció importante compartirlo. Por cierto, confundir estos conceptos no es algo trivial si deseamos corregir un poco nuestro deformado lenguaje gracias a tanta basura que nos bombardea visualmente cada día. Ir al artículo original FIN DEL POST

El día de hoy quiero compartir un formulario de matemáticas en PDF que hace tiempo encontré en uno de mis tantos archivos, el cual por cierto me ayudó bastante a la hora de resolver algunos ejercicios en la escuela ya que desde mi celular pude checar el formulario sin problemas. Este formulario incluye desde álgebra elemental hasta fórmulas de ecuaciones diferenciales, pasando obviamente por trigonometría y cálculo tanto diferencial como integral y algunos otras utilidades matemáticas que pueden salvarnos en más de una ocasión. El documento tiene alrededor de 20 páginas por lo que se podría considerar bastante extenso y completo, sin embargo y para nuestra buena suerte la lectura del mismo no es en lo absoluto tediosa ya que no contiene texto innecesario, ideal para encontrar rápidamente lo que estamos buscando. Descargar formulario en PDF FIN DEL POST

Esta es una herramienta bastante práctica y sencilla de usar para aquellos que recién empiezan en el mundo de la electrónica, con este simulador de protoboard es posible armar circuitos digitales sencillos de una manera bastante interactiva. Se trata de una aplicación para Windows que simula ser un protoboard en el que se pueden conectar cables, LEDs, displays e inclusive algunos de los circuitos integrados más utilizados en la electrónica digital, además de poder conectar los componentes también es posible hacerlos funcionar y mostrar los resultados fácilmente. Lo bueno de esta aplicación es que solamente se trata de arrastrar/soltar componentes, conectarlos, energizarlos y ¡voilá! sin tanto lío, también incluye bastantes circuitos integrados como sumadores, flip-flops, multiplexores, codificadores, decodificadores, entre otros. Entre algunos otros extras, incluye un par de proyectos armados como una bomba de agua y para los usuarios más avanzados, también incluye entre sus componentes código VHDL. Es una utilidad muy recomendable, aunque quizás no tan potente como programas cual Proteus o Multisim, vaya que facilita mucho las cosas a los recién llegados. Descargar simulador de protoboard FIN DEL POST
Allegro es una librería de programación de videojuegos para el lenguaje C y C++ que no es tan complicada de usar y sin embargo es bastante potente, además de ser multiplataforma (Windows, Linux, Mac). En este artículo veremos un ejemplo básico de Allegro en lenguaje C, con los recursos suficientes para crear una ventana gráfica que incluye un lienzo para poder dibujar figuras básicas como círculos, cuadrados, líneas y más. A propósito, esta librería ya la he utilizado anteriormente en un par de proyectos como un simulador de control de aviones y realmente ofrece muchas cosas enfocadas principalmente a la creación de videojuegos. Instalación de Allegro Para propósitos de este tutorial recomiendo con todo utilizar alguna distro Linux para crear programas con esta librería ya que su instalación y configuración es notablemente más sencilla que en Windows. En todo caso, en alguna distro como Arch basta con instalar la librería mediante pacman -S allegro y listo. Ejemplo A continuación crearemos una ventana con esta librería que nos permita dibujar un círculo en una ventana de fondo verde y cerrarla después de 5 segundos mediante una instrucción del sistema llamada read, que tiene la opción de poner en pausa durante N segundos algún proceso. Para esto hay que guardar el siguiente código en un fichero llamado ejemploAllegroMA.c #include <stdio.h> #include <stdlib.h> #include <allegro5/allegro.h> // Librería inicial de Allegro #include <allegro5/allegro_primitives.h> // Addon de primitivas (figuras) #define VENTANA_X 500 #define VENTANA_Y 300 // Redefinición de tipos typedef ALLEGRO_DISPLAY aDisplay; // Variables globales aDisplay *dis = NULL; // Funciones void inicializar(void) { // Inicializar los addons if(!al_init()) { fprintf(stderr, "Error al inicializar Allegro."); // Imprimir errores en stream STDERR exit(-1); } if(!al_init_primitives_addon()) { fprintf(stderr, "Error al inicializar el addon de primitivas."); // Imprimir errores en stream STDERR exit(-2); } dis = al_create_display(VENTANA_X, VENTANA_Y); // Crear el display de tamaño 500x300 píxeles al_set_window_title(dis, "Ejemplo Allegro 5 - www.multiaportes.com"); // Establecer el título de la ventana } void finalizar() { al_shu***_primitives_addon(); // Finalizar el addon de primitivas al_destroy_display(dis); // Destruir la ventana } void colorearPantalla() { al_clear_to_color(al_map_rgb_f(0.0, 1.0, 0.0)); // Limpiar la ventana y establecer un color de fondo RGB (color rojo: R=0=0.0, G=255=1.0, B=0=0.0) } int main(void) { inicializar(); colorearPantalla(); al_draw_filled_circle(200, 160, 130.0, al_map_rgb_f(1.0, 0.0, 1.0)); // Crear un círculo: x = 200px, y = 160px, radio = 130px, color morado: R=255, G=0, B=255 al_flip_display(); // Dibujar en pantalla todo lo almacenado en el buffer, en este caso solamente está el círculo de arriba system("read -t 5"); // Cerrar la ventana después de 5 segundos (Linux) printf("Por Eder Or - www.multiaportes.comn"); finalizar(); return 0; } Para compilar el código escribimos en consola: gcc -l allegro -l allegro_primitives ejemploAllegroMA.c, en el cual indicamos que utilizaremos librerías adicionales del sistema para compilar nuestro código mediante la flag -l. En caso de no añadirlas, el compilador nos mostrará errores del tipo “referencia a ‘alguna_funcion’ no definida”. Finalmente corremos ./a.out y se nos mostrará la ventana gráfica de nuestro ejemplo. Consejos extras Si ya te has adelantado un poco y haces uso de otras librerías de Allegro en Linux, entonces puede que también necesites el nombre de dichas librerías para añadirlas como parámetro al compilador GCC, para eso tendrás que buscarlas con el comando pkg-config --libs LIBRERIA Por ejemplo, para la librería allegro_native_dialog.h necesitas ejecutar pkg-config --libs allegro_dialog-5.0 y éste te devolverá algo como -lallegro_dialog. Posteriormente compilarás tu código con gcc -lallegro_dialog codigo.c ó gcc -l allegro_dialog codigo.c Con todo esto damos por finalizado el primer tutorial de Allegro 5, una librería bastante enfocada a la creación de juegos multiplataforma y que además es Open Source. Como sé que habrán muchas dudas, esas las responderé inmediatamente en los comentarios. Ir al artículo original También pásate por... Aprendie a hacer un efecto reversa en Sony Vegas Aprende a redactar documentos en LaTeX sin salir del post ¿Qué es mejor: Windows o Linux? Mi experiencia con ArchLinux FIN DEL POST

No había posteado en los últimos días porque estaba en semana de evaluaciones y por lo tanto estuve más cansado que de costumbre, pero hoy me tomaré un respiro y escribiré algunas cosas en este blog. Hoy explicaré una manera de comprimir videos sin perder calidad utilizando una herramienta en consola llamada FFmpeg. Esta herramienta nos permite convertir archivos multimedia como audio y video de una manera bastante personalizada ya que nos permite elegir los parámetros avanzados para hacer una conversión, sin embargo puede ser usado por usuarios novatos o por usuarios expertos con bastantes conocimientos en el tema. Vayamos al grano, para comprimir videos sin perder calidad basta con ejecutar el siguiente comando en la terminal: ffmpeg -i ORIGINAL.avi... Nota: el comando completo está en este artículo (no me deja ponerlo completo aquí) Lo primero que haremos es reemplazar ORIGINAL.avi con el nombre del video original (que puede tener cualquier extensión como MP4, AVI, WMV, FLV, etc.) y también reemplazar COMPRIMIDO.avi con el nombre deseado del archivo de salida (aquí si dejaremos la extensión AVI). Posteriormente definiremos el códec de video a utilizar, en este caso usaremos uno muy bueno llamado Xvid (FFmpeg lo reconoce mediante el argumento libxvid) así como el códec de audio llamado MP3Lame reconocido como libmp3lame. Después definiremos los valores del bitrate de video a 5000k y bitrate de audio a 320k, los cuales son medidos en kbps (kilobits por segundo) y entre más grandes sean, mejor será la calidad de audio o video de nuestro archivo final, pero esto se verá reflejado en el tamaño de dicho archivo. Si la calidad del video final no nos convence, podemos jugar con todos los valores comenzando por cambiar los de bitrate, en casos más avanzados podemos usar otros argumentos para ffmpeg y los valores que puede aceptar, por supuesto que también se podrá elegir los códecs de audio y video. Todo esto recomiendo hacerlo si se sabe lo que hace y dando una buena leída a la documentación de FFmpeg. ¿Cómo saber si funciona? Yo logré comprimir videos sin perder calidad utilizando el códec Xvid y es el que uso para los tutoriales de TutorPC; de hecho el video que subí hace poco explicando cómo abrir un frasco rápidamente originalmente pesaba 5GB ya editado (exportado sin compresión), pero con el comando anterior pude reducirlo a menos de 100MB; parece mentira pero aseguro que no es así. Para comprimir videos sin perder calidad yo todo lo hice en ArchLinux y basta con instalar el paquete ffmpeg, que por cierto también existe para Windows y su uso es idéntico. FFmpeg como tal no tiene una interfaz gráfica por defecto y todo se hace vía consola de comandos, lo cual es un poco lioso pero sin duda más rápido y personalizable; sin embargo buscando un poco en Google se pueden encontrar GUIs para esta herramienta. Los argumentos anteriores me funcionaron a mí, evidentemente no funcionarán igual con todos los videos por lo que hay que jugar con los valores un poco hasta obtener los resultados deseados FFmpeg es un proyecto OpenSource y utiliza muchos códecs también OpenSource, aunque igual soporta códecs privativos sin problemas Luego hablaré más de FFmpeg, porque hasta ahora me he dado cuenta que es una herramienta con muchísimo potencial: justamente me ha permitido convertir entre distintos formatos de audio, video e inclusive grabar la pantalla en Linux de una manera muy rápida. Ir al artículo original FIN DEL POST
Hablemos un poco sobre POO y UML: una de las primeras cosas que se tocan al aprender sobre la Programación Orientada a Objetos es la parte de UML (un lenguaje que nos permite el modelado de sistemas) que generalmente comienza por definir las relaciones que pueden existir entre las clases involucradas en nuestro proyecto. Es muy importante conocer los conceptos básicos de POO para entender el tema de relaciones entre clases. AsociaciónDependenciaAgregaciónComposiciónGeneralización A términos prácticos, veamos a una clase como una plantilla para construir objetos; eventualmente nos daremos cuenta que dichas plantillas pueden necesitar de otras plantillas para generar dichos objetos de alguna u otra manera. Si nosotros nos encontramos en la parte del diseño del sistema entonces nos vendrá de maravilla conocer las siguientes relaciones entre clases y saber diferenciarlas: Relaciones entre clases: Asociación La asociación indica cuando una clase está ligada a otra, esto es que una primera clase necesita de cierta información de la segunda clase pero su existencia no se ve afectada si una de estas clases no existe. Aquí se hace uso de la cardinalidad, que indica la cantidad de objetos que podrán ser utilizados. Ejemplo: Un vendedor puede tener uno o más locales de comida distribuidos por la ciudad, pero cada local pertenecen única y exclusivamente a ese vendedor. ¿Por qué se utiliza una asociación?: porque el vendedor puede inclusive tener cero locales y existir en nuestro sistema hasta que consiga el dinero suficiente y pueda crear uno. Como la clase LocalComida no es parte esencial del vendedor (no es un órgano vital o algo por el estilo que le permita existir) entonces se considera a esto como una asociación. Relaciones entre clases: Dependencia La dependencia es una relación que indica cuando una clase depende de otra clase para funcionar. Ejemplo: Una aplicación escrita en Python necesita de una computadora para funcionar. ¿Por qué se utiliza una dependencia?: porque a simples rasgos sería imposible correr una aplicación escrita en Python en un ordenador que no existe. ¿O cómo correrías esa aplicación, por ejemplo, para robarle el Wi-Fi a tu vecino? No vale decir que los correrías en un smartphone o algún dispositivo como un Raspberry Pi, porque a final de cuentas son eso, computadoras. Relaciones entre clases: Agregación La agregación es utilizada cuando una clase se compone de otras clases, aunque si quitamos alguna de ellas entonces la primera seguirá funcionando normalmente. Ejemplo: Una escuela tiene cafetería y biblioteca, aunque si destruimos alguna de ellas entonces sigue siendo escuela. ¿Por qué se utiliza una agregación?: porque si quitamos alguna de ellas, por ejemplo la cafetería, seguirá siendo escuela porque su propósito es para impartir clases, no para hacer juntadas con los amigos a la hora del desayuno y ver cómo Argentina se culea a México en el Mundial Brasil 2014. Relaciones entre clases: Composición La composición es muy similar a la relación anterior, con la diferencia de que si una clase hace falta entonces la principal se verá afectada. Ejemplo: Una escuela se compone de aulas. Si no tuviera aulas entonces ¿qué sería? ¿Por qué se utiliza una composición?: porque una escuela siempre tendrá aulas para ser escuela, sin importar el estado de éstas. Es cierto que una escuela obligatoriamente tiene también alumnos y profesores, pero ¿recuerdas el concepto de abstracción en POO? En este caso estamos mirando todo respecto al punto de vista físico, no organizacional. Relaciones entre clases: Generalización La generalización es posiblemente la relación más importante ya que hace uso de uno de los conceptos base de la POO: la herencia. Ejemplo: Un blog, un foro y una red social son distintos tipos de sitios web. Todos tienen, al menos, un nombre y un dominio como por ejemplo MultiAportes (multiaportes.com), Evoshare (evoshare.net) y Twitter (twitter.com) ¿Por qué se utiliza una generalización?: porque todo sitio web tiene, entre otras cosas, un nombre y un dominio propios, además de que cada uno de ellos tiene sus particularidades, por ejemplo un blog tiene artículos, un foro tiene hilos de discusión y una red social tiene listas de contactos. Por cierto, puede que en algunas cosas existan similitudes pero en realidad se consideran distintas por el variado funcionamiento que tiene cada plataforma web. Para finalizar Después de haber escrito todo esto, debo decir que la fuente ha sido principalmente los apuntes de mis materias de Programación Orientada a Objetos y Análisis y Diseño Orientado a Objetos, junto a ejemplos propios que se me ocurrieron en el momento. Espero que todo esto te sea de ayuda y te ayude a comprender rápidamente las diferencias entre las relaciones entre clases. Ver todos los ejemplos de relaciones entre clases También pásate por... Aprendiendo a programar en Allegro 5 Aprende a redactar documentos en LaTeX sin salir del post ¿Qué es mejor: Windows o Linux? Mi experiencia con ArchLinux FIN DEL POST
Qué tal amigos Linuxeros de Taringa, desde hace un tiempo para acá pertenezco a un grupo de autoestudio en la escuela donde estoy haciendo mi carrera y en esa ocasión me tocó liderar un curso para los más novatos en Linux: el nombre del curso es precisamente Introducción a Kali Linux. No es que sea exactamente un pentester o alguna especie de kaker virgo taringuero pero como a varios de ustedes siempre me gustó el mundo de las computadoras y desde entonces he venido trasteando con ellas; GNU/Linux es simplemente fantástico Para no hacer tan largo el asunto, el Instituto Politécnico Nacional (mi institución educativa) entró en huelga desde finales de septiembre del año pasado y hasta apenas volveremos a clase...no conseguí empleo y tenía que aprovechar mi tiempo libre: justo uno de los proyectos que tenía en mente era este libro. Acerca del ebook de Introducción a Kali Linux Toda la redacción, el diseño, los ejemplos e inclusive los pantallazos son propios y el resultado de aproximadamente tres o cuatro semanas de trabajo; esto con el motivo de no dejar atrasado a los muchachos de mi curso presencial y de paso colaborar un poco en agradecimiento a las personas que han dedicado horas en crear tutoriales buenísimos subidos a Internet de los que he aprendido bastante. Material extra Como complemento al ebook también están disponibles un par de videotutoriales que grabé para mostrar algunas cosas "en vivo". ¿Qué opinas? Me gustaría conocer las opiniones de todos los que estén interesados en el libro y agradecería el apoyo que puedan brindar para seguir compartiendo material de calidad. Descargar ebook El libro es gratuito y yo soy el autor, por lo que no estoy compartiendo material ilegal, señor moderador Saludos