Suscribirse al Feed
11Sep

Previsualiza tus entradas mientras las escribes [truco wordpress]

Esto es un hack bastante simple que he hecho para poder previsualizar las entradas mientras escribo, y lo pongo aquí porque tal vez a alguien le sirva. La idea se me vino a la mente puesto que soy un fanático del CSS, y de resaltar las partes importantes de mis entradas con recuadros, colores e imagenes. Por ejemplo, para las notas uso una clase llamada "nota", con lo cual se ve así:

Hola esto es una nota de prueba. Y se ve de lujo. Hola esto es una nota de prueba. Y se ve de lujo. Hola esto es una nota de prueba. Y se ve de lujo. Hola esto es una nota de prueba. Y se ve de lujo.

Y esto es un comando
para la consola
y se ve muy chulo

Entonces pensé que sería bueno poder ver cuál sería el resultado visual de la entrada mientras la escribía, sin tener que estar abriendo una nueva pestaña para previsualizarla. Y lo único que tuve que hace fue añadir el contenido de mi CSS al archivo wordpress.css, que se encuentra en wp-includes/js/tinymce. Y listo, verás algo como:

css visualizar wordpress

Ten en cuenta que si tu CSS hace referencias a imágenes en ésta manera, por ejemplo: background:url(images/rss_icono.jpg) no-repeat left; debes poner la URL completa de la imagen: background:url(http://tupagina.com/wp-content/themes/tema/images/rss_icono.jpg) no-repeat left;.

08Ago

Dividir una entrada en varias páginas [Wordpress]

Al momento de crear una entrada muy larga, como un tutorial por ejemplo, es posible dividir el post en varias páginas de una manera muy sencilla utilizando las etiquetas <!--nextpage-->. Funciona de manera similar a <!--more-->, pero dividiendo completamente el post. Y usándola podríamos obtener resultados como este:

dividir post

¿Cómo incluir esta característica en nuestra plantilla?

La mayoría de los themes deberían incluir esta importante característica, pero en algunos casos no es así. Por tanto, si la tuya no la posee, tendrás que incluir la función wp_link_pages dentro del archivo single.php (si tu plantilla utiliza ese archivo para mostrar las entradas) o index.php (si se muestran directamente con ese archivo). Los parámetros que podemos pasarle a wp_link_pages son:

  • before (string): Texto que va antes de los links. Por defecto <p>.
  • after (string): Texto que va antes de los links. Por defecto </p>.
  • next_or_number (string): Indica se deben usar los números (number) para las páginas o las palabras Previous y Next (next).
  • nextpagelink (string): Texto del enlace siguiente. Por defecto Next page.
  • previouspagelink (string): Texto del enlace anterior. Por defecto Previous.
  • pagelink (string): Formato para las páginas con número.  Si pones % en el string, será reemplazado con el número de la página.

Por ejemplo:

<?php
wp_link_pages('before=<div class="estilo">Páginas:&after=</div>&pagelink=page %');
?>

Mostraría algo como:

Páginas: Página 1 Página 2 Página 3 Página 4

Todo dentro de etiquetas <div class="estilo">, lo que haría muy fácil el proceso de aplicarle un estilo visual con CSS.

También existe una función llamada link_pages, que hace exactamente lo mismo que wp_link_pages. La diferencia es que link_pages, recibe los parámetros por separado, mientras que wp_link_pages los recibe todos en una cadena. IMPORTANTE: la función link_pages se encuentra en estado deprecated, lo que significa que NO se debe usar; siempre utiliza wp_link_pages.

Hacks en la función wp_link_pages()

Si deseas aplicar algún tipo de comportamiento especial a la función wp_link_pages, puedes hacerlo editando el archivo post-template.php, que se encuentra en wp-includes. Debes estar seguro de lo que haces, porque de lo contrario te puedes llevar un susto ;)

En mi caso, por ejemplo, edite dicha función de tal manera que añadiera las etiquetas <span class="current"> y </span>, para poder aplicar un estilo visual a la "página actual".

dividir post

Lo complicado aquí es que debes tener en cuenta el cambio, cuando hagas una actualización de la versión de Wordpress. Por tanto es más seguro escribir un plugin, o algo más elaborado. Está en ti decidir qué hacer: un hack rápido y peligroso, o un plugin demorado pero seguro.

Happy hack!

02Ago

La mediocridad de los ingenieros (¿reir o llorar?)

Nota: este artículo te podría interesar si deseas saber cómo solucionar problemas de seguridad de manera "profesional".

De pequeño siempre quise ser Ingeniero de Sistemas... ahora, con 19 años ya llevo 6 semestres (de 10 aquí en Colombia), aún cuando no he estudiado por 2 años falta de dinero, ya no se que quiero hacer.

Con algo que llevo de experiencia mezclándome con "ingenieros" me da algo de tristeza ver cómo de cada 20 hay 1 que vale la pena. Los demás son personas que no tienen puta idea de lo que hacen, estudiaron esto no por vocación sino porque piensan que se van a forrar en dinero, y además se creen Dioses que todo lo saben (aún cuando dedican la mayor parte de su tiempo laboral chateando con el MSN, volviéndose maestros en el uso del Facebook, o perdiendo el tiempo de cualquier otra manera).

La verdad es que hace tiempo quería escribir algo sobre esto, pero no lo hacía simplemente porque muy seguramente los lectores asiduos de este humilde blog no tienen nada de mediocres, y los ingenieros (a quienes iría dirigida la entrada) ni siquiera saben lo que es un puto lector de feeds, o me leerían usando IE 6.0 (no saben que existen "otros") que a veces no carga bien esta página.

La historia... (aprende a solucionar problemas de seguridad)

Hace una semana entré a la página web del sistema de transportes colombiano Transmilenio, y descubrí que el sistema de búsquedas era vulnerable a ataques XSS y al famoso SQL Injection, por lo cual procedí (después de jugar un par de horas y descubrir ciertos datos interesantes) a avisar del fallo.

La cosa iba así para un XSS:


hola%' or title like '%hola> <script>alert(/POWNED/)</script><a

Y así para un SQL Injection:


hola%' UNION select * from NOMBRE_TABLA where 1=1 or 1 like '%1

Lo cierto es que esto es algo que se puede solucionar fácilmente, haciendo una limpieza a las variables antes de realizar una búsqueda en la base de datos, pero nuestros super ingenieros (que ni siquiera dieron las gracias) encontraron una mejor solución (la más óptima): deshabilitar las búsquedas.

Y aquí es donde no sé si reir o llorar. Poca vergüenza tiene esta gente, y lo peor es que los hay por montones. Muy triste...

También te podría interesar este artículo: Devolver el orgullo al nombre de "programador" para solucionar el déficit de programadores publicado en Punto de partida

Bonus...

P.d. esta es una entrada programada escrita el Viernes 1 de Agosto de 2008. Solo para dejar terminar la semana y ver si lo solucionan.

25Jul

10 maneras de acelerar el arranque en Linux

  • Deshabilitar servicios innecesarios. Dependiendo del uso que le des a tu sistema, algunos servicios no son necesarios. ¿Usas Linux para el escritorio? Entonces no necesitas servicios como sendmail, httpd, etc. Por ejemplo, Ubuntu viene con los servicios para manipular dispositivos Bluetooth, pero personalmente no utilizo dispositivos de ese tipo; así que si es tu caso, puedes ir al menú Administración, seleccionar Servicios, y deshabilitar todos aquellos que no uses.
  • Deshabilitar módulos del kernel innecesarios. Si tu computador solamente se conectar a internet usando una conexión cableada Ethernet, no necesitas tener cargado el módulo Wireless del kernel. Claro, esto ya es un poco más difícil puesto que es necesario recompilar el kernel, seleccionando sólo los módulos que necesitas.
    La mejor manera de saber cuales son los módulos que actualmente están siendo cargados en tu sistema es instalar Bootchart. Este programa genera información acerca de lo que pasa cuando inicia tu sistema, los módulos que se cargan, con gráficos y todo XD.
  • Usar un entorno de escritorio liviano en vez de GNOME o KDE. Sobre todo si tenemos máquinas viejas o lentas; Además, en vez de esperar 30 o 60 segundos extra mientras inician GNOME o KDE, ¿porqué no esperar 10 segundos por Enlightenment o XFCE? No solo te ahorrará tiempo al inciar el sistema, sino mientras lo estás usando.
  • Usar un sistema de logueo basado en texto en vez de uno gráfico. La mayoría de mis máquinas Linux inician en el run level 3 en vez del run level 5. Esto hará que se detenga en el sistema de logueo basado en texto, donde solo tengo que poner mi usuario y password y ejecutar startx para iniciar mi entorno de escritorio. Los sistemas gráficos de logins son bonitos, pero incrementan el tiempo de carga y producen dolores de cabeza intentando recuperarse en caso de un fallo con las X.
  • Usa una distribución ligera. En vez de cargar una pesada Fedora, Ubuntu o openSuse, ¿porqué no intentar Gentoo, Arch o Puppy Linux? El tiempo de inicio es considerablemente menor con éstas.
  • Usar un OpenBIOS. Si eres lo suficientemente experto como para actualizar tu firmware, podrías considerar migrar a una BIOS open source. Una de las cosas por las que es recomendable usar un firmware open source es que permite a Linux inicializar el hardware una vez encendido el PC (en vez de que lo haga la BIOS). Aún así, si no te aventuras a hacer tal cosa, podrías considerar configurar tu BIOS para que, por ejemplo, no busque una unidad de disquete que no existe o que bootee directamente del disco duro (en vez de buscar en la unidad de CD primero).
  • Evitar el DHCP. Si estás en una red casera o empresa pequeña, las direcciones IPs no suelen dar muchos problemas. Considera entonces poner una IP fija a tu PC. Esto hará que al inciar no sea necesario conectarse al servidor DHCP para obtener una IP. Si haces esto, asegúrate de configurar el archivo /etc/resolve.conf para que seleccione adecuadamente los servidores DNS.
  • Si es posible, deshaste de hotplug. Hotplug es el sistema que te permite conectar nuevos dispositivos y usarlos inmediatamente. Si no necesitas esta característica, bórralo. Esto reducirá el tiempo de carga de tu sistema. En muchos sistemas, hotplug consume muchos recuersos al momento de iniciar el sistema. NOTA: udev ha reemplazado a hotplug en su mayoría; pero si usas una distribución antigua te podría resultar muy útil hacerlo.
  • Si eres realmente osado, podrías intentar initng. El sistema initng sirve como reemplazo para el sistema sysvinit y promete ser decrementar el tiempo de carga de sistemas basados en UNIX. Si quieres ver a initng en acción, puedes probar el LiveCD Pingwinek.
  • Usar un hack en Debian. Si usas Debian, existe un hack muy simple que puedes usar para inciar tus startup scripts en paralelo. Si le echas un vistazo al script /etc/init.d/rc, verás algo como CONCURRENCY=none más o menos en la línea 24. Cambia esto por CONCURRENCY=shell y deberías ver una reducción en el tiempo que tarda el sistema en iniciar.
24Jul

Juego: Aguanta el balón [by Burnhack]

Un ejercicio en Java que me regala mi amigo Burnhack, y se trata de un juego llamado "Aguanta el balon", bastante bueno y divertido. Y como no, se ofrece el código fuente para su estudio y disfrute. Nos comenta Burnhack:

Juego: Aguanta el balon
Programado por: Burnhack
Lenguaje: Java

juego futbol java

Descripción y Manejo: Pues jugar a este juego es muy simple, el juego comienza cuando haces click en el balón situado en el centro y sin soltar el ratón debes de arrastrarlo evitando el contacto con los otros y los laterales. A medida que avanza el tiempo también sube su velocidad así que el juego se ira complicando.

Como parte de su descripción he nombrado dos clases: Una llamada balon donde controlé las colisiones, y la otra llamada Fútbol y controle el resto de cosas: Movimiento de balones,Velocidad, Los paneles...

Fallos:

  • Los balones no llegan a chocar pero es culpa del dibujo de los balones y no me dedique a hacerlos mejor porque bastante me costo hacer esto jajaja aunque sea cutre
  • El timer si hay lo descarga que me diga si cree que es correcto porque le agregue un timer y nose si mide del todo bien el tiempo...ya que creo que depende un poco tambien del pc, de todas formas nose hacerlo mejor.
  • La interfaz es la misma cutrecilla...donde se podia poner una barra de desplazamiento para que simule el aumento de la velocidad de los balones y un boton de reinicio ..pero soy muy vago y si funciona asi..pues creo que no hace falta mucho mas.

Y a favor del juego...que te picas muy facilmente y pa echar un rato esta bien.

Descargar código fuente y ejecutables

Gracias por la colaboración, Burnhack!

02May

Consultar DB en Java - Mostrar resultados en un JTable

Siguiendo con nuestro tema de conexiones a bases de datos desde Java... Cuando estamos trabajando con bases de datos y aplicaciones que usen Swing, la manera más elegante de presentar los datos a un usuario es usando tablas usando la clase JTable.

tabla swing jdbc

Lo que haremos será básicamente crear una clase que herede de la clase AbstractTableModel:

Esta clase abstracta provee la implementación por defecto de la mayoría de los métodos en la interfaz TableModel. Para crear un TableModel como subclase de AbstractTableModel necesitarás implementar únicamente los sigientes tres métodos:

  public int getRowCount();  public int getColumnCount();public Object getValueAt(int row, int column);

Leer el resto de la entrada...

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS