Acerca del Theme

En estos momentos checaré algunos themes y veré como los puedo adaptar, este theme que he puesto (Swyrly Glow Thingys) es temporal…

Traducción de la Fecha de WordPress 2.8 a Español

Anteriormente había publicado como traducir la fecha de WordPress para la versión 2.6 y sus subversiones. El archivo locale.php es el que contiene el nombre de los días y meses, por tanto para tener la fecha de nuestro theme en español solo hay que traducir los nombres a español, este archivo se encuentra en la carpeta wp-includes/ del directorio donde se encuentran los archivos de tu WordPress. Para hacer la traducción manualmente se hace casi exactamente igual que como lo mostré en este post “Traducción de la Fecha de WordPress a Español” la única diferencia es que ahora están en otra posición las líneas a cambiar, algunas se movieron como 2 renglones o 3, en realidad no hay mucha diferencia esto paso debido a que se agregaron algunos comentarios en el archivo locale.php y se cambio la programación un poquito pero nada que afecte a las lineas que se requieren modificar. En ese post también se explica algunos formatos para escribir la fecha de tu theme de modo ordenado o como más te guste.

Aquí les dejo la versión del locale.php para WordPress 2.8 ya con su traducción al español para que solo descompriman el locale.php del archivo .rar y lo peguen en su directorio wp-includes/, les preguntará si desean sobrescribir, denle que si ;)

Click Aquí Para Descargar Locale.php en español para WordPress 2.8

Confusión de Programación: Los inicios en C++

Hace 2 semanas y media un compañero de la universidad me presto una biblia de C++. Ese mismo fin de semana me puse a leer el librote y decidí probar el famosísimo “Hola Mundo”, aquí el programa:

#include<iostream.h>;
int main()
{
    cout << "Hola mundo, C++!" << endl;
    return 0;
}

Compilando y de pronto… zaz!!!

Línea 1.- #warning This file includes at least one deprecated or antiquated header.

Resulta ser que hay ciertos estándares que hay que seguir xD (aquí va otra paranoia mia tipo W3C), entonces busque algo de información al respecto y en efecto, ahora ya no lleva .h, ahora simplemente es #include<iostream> así que corregí y compilé nuevamente :D

Línea 4.- In function int main(): cout undeclared (first use this function)
Línea 4.- (Each undeclared identifier is reported only once for each function it appears in.): endl undeclared (first use this function)

Otra vez errores, ahora resulta ser de que cout, endl, cin, etc… necesitan declararse. Una de dos: dejar de programar en C++ por 2 años lo deja a uno bastante desactualizado ó nunca había usado un compilador que se basara en los estándares (en la prepa en la materia de programación estructurada usabamos borland y fueron cosas básicas las que aprendimos ;) ), aunque ya estoy pensando que pueden ser ambas razones pero bueno…

…investigando más sobre el tema encontré que para declararlos hay 3 formas distintas de hacer esto básicamente.

//primera forma[GLOBAL]:
#include<iostream>
using namespace std;
int main()
{
/*instrucciones*/
}

//segunda forma[DECLARANDO UNA POR UNA]:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
//using std::/*etc..*/;
int main()
{
/*instrucciones*/
}

//tercera forma[DECLARANDO AL MOMENTO DE USO]:
#include<iostream>
int main()
{
	int x;
	std::cout << "Teclee un numero: ";
	std::cin >> x;
	return 0;
}

En la primera forma le estas diciendo al compilador que declare todo lo contenido en el “namespace std” y esto puede causar conflictos al declarar accidentalmente una variable, clase o una función que tenga el mismo nombre que alguna en el “namespace std”, además de estar declarando todo el contenido del “namespace std” el cual posiblemente no llegues a ocupar por completo de modo que solo gastas recursos.

La segunda forma es la que usualmente recomiendan, ya que no declaras todo el contenido del “namspace std” si no solamente lo que usarás de él, sin embargo hasta cierto punto puede resultar poco práctico.

La tercera forma es la que uso yo, ya que de este modo por lo menos para mi queda más claro el código y además no es declarado de manera global, sino solamente donde es utilizado.

Ahora que ya corregi estos errores a compilar se ha dicho!!!

Aquí el nuevo código:

#include<iostream>
int main()
{
	std::cout << "Hola mundo, C++" << std::endl;
	return 0;
}

Perfecto!!! ningún error, ¿a ver el ejecutable? :D

zazzzz!!!! ¿murió el ejecutable? ¿pero por qué se cerro? T_T . Nuevamente a Googlear…
otro tanto tiempo después…
solución!!! usar system(“pause”);, pues bien veamos si funciona correctamente, reescribimos el código…

#include<iostream>
int main()
{
	std::cout << "Hola mundo, C++" << std::endl;
	system("pause");
	return 0;
}

Al compilar esto el programa se detiene y muestra en pantalla un mensaje que dice: “Presione una tecla para continuar…” Vemos que el resultado es el esperado, el programa hace una pausa y al presionar cualquier tecla va al return 0; y se termina el programa, pero… ¿qué tal si quiero personalizar el mensaje?

Esa pregunta para alguien que ya sabe C++ es algo trivial e incluso pensé que encontraría una solución a la vuelta de la web y aunque no fue así de rápido, fue buena idea preguntarme eso ya que googleando la instrucción system(“pause”); me encontré con que no era algo correcto usarla debido a que efectuaba varias acciones:

1. Suspende el programa.
2. Llama al sistema operativo.
3. Abre la consola ó símbolo del sistema (ms-dos) [vuelve a ejecutar el sistema operativo en un subproceso].
4. El sistema operativo debe encontrar el comando PAUSE.
5. Destina la memoria para ejecutar el comando.
6. Ejecuta el comando y espera la pulsación de alguna tecla.
7. Libera la memoria.
8. Sale del sistema operativo.
9. Reanuda el programa.

Además de esto, NO ES COMPATIBLE EN OTROS SISTEMAS OPERATIVOS, es necesario usar winBugs para que la instrucción funcione correctamente, así que en cuanto a portabilidad para compilarlo en otro sistema ni pensarlo, no es multiplataforma.

Investigando al respecto encontré algunas alternativas. Para C: getchar(). Para C++: cin.get(). Como estoy programando en C++ la segunda opción es la necesaria para hacer lo que deseo pero antes de utilizar esta otra instrucción decidí googlear un poco más para ver si había alguna otra alternativa para hacer una pausa y esto fue lo que encontré: getch()

Al tener estas 2 alternativas me dispuse a escribir las sentencias correspondientes, al recompilar el código hubo una diferencia notable pero pequeña entre ambas. El código:

//usando cin.get()
#include<iostream>
int main()
{
	std::cout << "Hola mundo, C++" << std::endl;
	std::cin.get(); //usa std::
	return 0;
}

//usando getch()
#include<iostream>
#include<conio.h> //usa la librería conio.h
int main()
{
	std::cout << "Hola mundo, C++" << std::endl;
	getch(); //fácil de escribir
	return 0;
}

Al usar cin.get() lo que pasó fue que escribía cualquier caracter y aparecía en pantalla, de modo que es necesario presionar enter para cerrar el programa.

Al usar getch() me di cuenta que cerraba el programa al presionar cualquier caracter, de modo que estaba a punto de elegir usar getch() pero al recordar que usaba una líbrería más me puse a googlear nuevamente y me encontré que conio.h no pertenece a la biblioteca estandar de ANSI C y tampoco a la de C++, en efecto como lo podrán ver en los siguientes links: Biblioteca estandar C++, Biblioteca estandar C.

Entonces aquí por comodidad pueden usar getch() aunque es MUY recomendable seguir los estándares ;) además así se evitan incluir una librería extra que por cierto no está en el compilador de GNU/Linux. Ahora con respecto a cin.get() hay situaciones en las que usar esto no funciona como se espera debido a que cuando se pide un dato al usuario este se almacena en el buffer y por tanto para hacer que funcione correctamente cin.get() hay que limpiar ese buffer, para ello se utiliza cin.sync()

Ahora el código final:

#include<iostream>
int main()
{
	std::cout << "Hola mundo, C++" << std::endl;
	std::cin.sync(); /* En este ejemplo no es necesario agregar esta línea de código, solo es una referencia de su uso */
	std::cin.get();
	return 0;
}

Y bien así es como se pone un Hola mundo en C++ xD , trivial ¿no? y a pesar de todo este rollote se me hace más bonito C++ que Visual Basic, amén.

Nota: soy ateo igual que dios, pero pronto me volveré googleista ya que respondio muchas de mis plegarias que fueron expuestas en este post.
Nota2: Si a alguien le sirvió de algo todo este rollo aquí explicado agradezcan a google (y a León!!! xD ).
Nota3: Yo soy León :P .
Nota4: Cualquier error ya sea de sintaxis o de cualquier otro tipo, duda o sugerencia favor de dejar un comentario al respecto.

Referencias: Google, Wikipedia y GIDNetwork

¿Que estás haciendo?

La pregunta de hoy fue: ¿Qué estas haciendo?…

Read more »

Estrenando Theme – XHTML 1.0 Strict y CSS 3 Válido -

Como se darán cuenta estoy estrenando theme, esto es un gran paso para el blog debido a las características del theme. Espero sea de su agrado y más que nada espero se mantenga válido con respecto a los estándares ;) . En realidad hay mucho que editar en las entradas anteriores para que el theme se mantenga valido al 100% debido a que el DocType no permite varias etiquetas y atributos que deben de ser eliminados, pero lo que es la portada y los primeros 10 posts, son totalmente válidos con respecto a estas especificaciones, de hecho hay etiquetas y atributos tan simples que deben ser eliminados y que de alguna manera benefician al usuario tambien ;) .

Algunas de las correcciones y características que se hicieron fueron las siguientes:
Eliminación de etiquetas <center>
Eliminación de etiquetas <iframe> (adios chatito)
Eliminación de atributo target (no más ventanas abiertas en otra pestaña). Esto beneficia al usuario por que le da la posibilidad de elegir por su cuenta si desea abrir otra pestaña o no, si al usuario le gusta la página siempre regresará así que no hay por que mantener encadenado al usuario ;) .
Eliminación de la etiqueta <form> e <input> dentro de etiquetas de tipo lista <li>,<ul>,<ol> (no suscripción de feeds vía correo mediante formulario, pero si hay un link para suscribirse a los feeds por email).
Peso del Theme anterior “blue-moon” 317KB, Peso actual “oriental” 286KB.
Uso de CSS 3 para estilos como opacidad.
Transparencias y opacidad usando imágenes tipo PNG.
Diseño Líquido nuevamente ;) .
En la Barra Lateral algunos menús son desplegables ;) .
Algunos iconos gestuales cambiaron. (Un problemilla con javascript también se presento debido al atributo name dentro de la etiqueta form, no es valido así que tuve que usar el id y en javascript getElementById(‘nombredelid’).
Algunos iconillos medio 2.0 xD .
PHP Shuffle en la pieza de rompecabezas gracias por el snippet Deliriumlabs.
Actualización de mi Blogroll ;) y de los Sitios Elaborados por mi.
Tema claro, espero no sea problema la lectura ya que no puse el foquito.
Separador editado por DarkQuickSilver, gracias ;) .
Imagen de Fondo con degradado editada por Illi.Pro, gracias :D .

Unas imágenes del antes, el tema nuevo y el tema nuevo después de editado respectivamente ;) Den click en las imágenes para verlas en tamaño máximo:

Solo me falta bloquear a Internet Explorer 6 xD pero eso lo arreglo dentro de unos instantes xD . Espero les haya gustado :D . Cualquier detalle que noten me avisan ;) . Esta diseñado especialmente para la W3C ;) tomando como base Mozilla Firefox.

Nota: El hosting esta medio lentejo, esto pasaba antes del cambio del theme de hecho creo que se esta saturando el servidor debido a las multiples cuentas que alojan en uno mismo, puede que este lleno, de momento no puedo resolver eso, disculpen las molestias que el tiempo de carga pueda provocar.

MDF: Métodos de Fusilamiento 3

Usaremos un MDF en el cual le pediremos la información de los elementos de la página al mismo navegador. Una página web no guarda los elementos multimedia en si misma, mas bien los llama mediante diversas etiquetas html las cuales varían dependiendo del elemento que se desee, una página web incluso puede llamar a otras páginas web ;) . Muy bien lo que nos importa de momento es obtener imágenes aunque este MDF puede ser usado también para otros elementos como scripts en java, CSS (hojas de estilo en cascada), etc.

Read more »

Next Page »