jueves, 20 de diciembre de 2007

Efecto en Google Imágenes con Java Script

Un efecto curioso, no sé bien cómo explicarlo pero aquí van los pasos tal cual los puso Dominicano en elhacker.net:

1º Metete en google
2º Busca algo en imagenes
3º Borra las direcciones del navegador y pon esto en su lugar:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI= document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5 ); void(O)

Más explicado no pudo estar, y no me digan que no entienden esas simples instrucciones porque sí están muy mal :-(

fotnote: Hay que tener habilidado JavaScript para la página que deseemos modificar.

Una imagen de muestra:






El hecho en que se basa esto es en que los navegadores populares (IE6, IE7, FF, etc.) permiten la ejecución directa de un código JavaScript, así, si pones en la barra de direcciones y sin comillas "JavaScript:5+5" te sale un texto simple y llano:

10

Así que alguien se las apañó para indexar las imágenes y hacerlas girar con un bucle.

El enlace original es:

http://www.screencast.com/users/neroxyn/folders/Default/media/
77de4f61-c88c-4555-9cce-5fe02bc99522

pero no lo he querido incluir como principal porque lleva a un engorroso video que necesita un plig-in de windows media, lo que haría su vista imposible desde Linux.

sábado, 22 de septiembre de 2007

Sgae ladrones

SGAE = Ladrones

domingo, 19 de agosto de 2007

Test para descubrir tu medio Linux

Acabo de leer sobre una página que te aplica un test para mostrarte con qué distribución de Linux sería bueno que comiences. Las preguntas van desde "sabe lo que es Linux?" hasta "desea ocuparlo como servidor, compu personal.." pasando por "tiene procesador de 64 bits?". Oquei, quizá saldrán algunos diciendo que el raciocinio y el sentido común son los mejores pero ¡vamos!

"che, hay que ponerle onda... no le ponen onda ¡jm!"




Aquí tienen la URL:

Linux Distribution Chooser

Y mis resultados:

Freespire es un Sistema Operativo basado en Linux y controlado por la comunidad que combina lo mejor que el software libre y abierto tiene que ofrecer (sostenido por la comunidad, libre distribución, código libre, etc.), pero también brinda la opción de incluir códecs, controladores y aplicaciones propietarias.

(Esta distribución también tiene un "CD Live" que puede usar para probar la ditribución antes de instalarla)

Kubuntu es un Sistema Operativo basado en KDE (Entorno de Escritorio K) amigable con el usuario. Con una nueva versión cada 6 meses y parte del proyecto Ubuntu, Kubuntu es la distribución GNU/Linux para todos.

(Esta distribución también tiene un "CD Live" que puede usar para probar la ditribución antes de instalarla)

El proyecto openSUSE es un programa comunitario auspiciado por Novell. Impulsando el uso de Linux, este programa provee libertad y fácil acceso a la distribución más rentable del mundo, Linux SUSE. openSUSE proporciona todo lo que los desarrolladores y entusiastas de Linux necesitan para iniciarse en esta rama de sistemas operativos. Hosteado en opensuse.org, {el proyecto ofrece de fácil acceso a las estructuras y a los lanzamientos} (Translate Google). También ofrece extensos programas de desarrollo para acceso libre hacia los procesos de desarrollo usados en la creación de Linux SUSE.

PCLinuxOS "is one of the world’s up and coming providers of a Linux Desktop Solution". Con un pequeño pero dedicado grupo de desarrollo, PCLinuxOS entrega software para escritorio que brinda armadura a la comunidad del Software Libre.

(Esta distribución también tiene un "CD Live" que puede usar para probar la ditribución antes de instalarla)

Mandriva Linux (anteriormente conocido como Mandrale Linux) fue creado en 1998 con la meta de hacer Linux más sencillo para los usuarios. Mandriva ofrece todo el poder y la estabilidad tanto para usuarios individuales como profesionales en un entorno placentero y fácil de usar.

(Esta distribución también tiene un "CD Live" que puede usar para probar la ditribución antes de instalarla)

Linux MEPIS es un sistema Linux para escritorios fácil de configurar como servidor dedicado. Diseñado para propósitos personales y de negocios. Incluye características modernas tales como un CD Live, de instalación y de recuperación, configuración automática de hardware, redimensionamiento de particiones NTFS, control de poder ACPI, soporte Wi-Fi, fuentes TrueType, firewall personal, KDE y muchas cosas más.

(Esta distribución también tiene un "CD Live" que puede usar para probar la ditribución antes de instalarla)

Uso Mandriva Linux y aunque no he usado Kubuntu presiento que es genial, los demás no los conozco, salvo que cierta vez leí algo sobre la alemana SUSE, uno de los que yo llamo "padres de Linux", es decir, las distribuciones que están en lo alto del Olimpo.

Nosbemoschau!

sábado, 4 de agosto de 2007

JoJOjo

Me di otra vuelta por Visual Basic para ver si podía resolver problemas con la función para abrir archivos que estaba programando, leí un par de cosas que encontré con Google y, después de analizar con escrutinio los códigos, haciendo comparaciones, me di cuenta de un detalle.

-NO puedo creer... ¡que no lo haya visto!

Es algo que más que simple, parece ser tonto, un error tonto, como cuando los paradigmas nos impiden ver información contundente delante de nuestros ojos. Pongo los códigos para quien sepa Visual Basic y quera usar su valiosísimo tiempo en ver por qué es que, aunque hiciera mejoras y entendiera bien cómo funcionaba el código internamente, NUNCA iba a poder abrir una archivo:

La función OpenFile() que es donde está el error. Y más abajo anexo el EditStreamCallBack, nada más porque sí, lo sigo diseñando y prácticamente no hace otra cosa que tirar un error que me cierra todo el proceso de VB.

Sub OpenFile()
   
   If (WtFile = fBLANK) Xor (WtFile = fSAVED) Then
   
      If CommDlg(DlgOpen) Then
         
         WtFile = fBLANK
         ChangeTitleBar
         
         Dim Struct As EDITSTREAM
         Struct.pfnCallback = GetMemoryAddress(AddressOf EditStreamCallBack)
         
         Call SendMessage(hWorkArea, EM_STREAMIN, SF_TEXT, Struct)
         If Struct.dwError > 0 Then MsgBox "Error " & Struct.dwError: Exit Sub
         
      End If
      
   End If
   
End Sub


EditStreamCallBack:

Function EditStreamCallBack(ByVal dwCookie As Long, ByVal pbBuff As Long, _
                            ByVal cb As Long, ByRef pcb As Long) As Long
   
   ' pbBuff
   'Pointer to a buffer to read from or write to. _
    For a stream-in (read) operation, the callback function fills this buffer _
    with data to transfer into the rich edit control. _
    For a stream-out (write) operation, the buffer contains data from the _
    control that the callback function writes to some storage.
    
   'cb Specifies the number of bytes to read or write.
   
   'pcb Pointer to a variable that the callback function sets to the _
    number of bytes actually read or written.

   
   MsgBox pbBuff
   
   EditStreamCallBack = 0
   
   'Dim strBuffer As String
   'Dim i As Long
   
   ' Set buffer size
   'strBuffer = String$(cb, 0)
   
   ' Get the string contents
   'For i = 1 To cb
   'strBuffer = strBuffer & Chr$(Mid$(pbBuff, i, 2))
   'MsgBox pbBuff
   'Next i

   ' Set the no. of bytes received
   'pcb = pcb + i
   
   ' Add buffer to text box
   'WorkArea.TextRTF = WorkArea.TextRTF & strBuffer
   'EditStreamCallBack = 0

   
End Function



El error es algo simple, pero de lo que no me había percatado: En ningún puto momento especifico el nombre del archivo con que voy a trabajar, el que quiero abrir.





Ya con esto creo que di un pasito al frente, y no sé cómo pretendía que ByVal pbBuff As Long me mostrara texto :-S Creo que tendré que hacer uso del parámetro dwCookie y la API ReadFile(). Al parecer soy yo el que se tiene que encargar de cada String del Stream. ¡Ejem!

domingo, 29 de julio de 2007

Y ahora los Layouts

He solucionado hoy mismo el problema que tenía con respecto al tamaño de un botón que creé. Bueno, no fue solo, pedí ayuda en un foro (en el de elhacker.net) y tuve una buena respuesta por parte de un usuario: los Layouts. Yo no sabía muy bien lo que eran, simplemente había leído unas notas rápidas cuando daba repasos a un tutorial de Java, no recuerdo exactamente cual, pero mis conocimientos sobre ello eran insignificantes y los tuve que reforzar hasta ahora para deshacerme del problema del botón.

Más o menos le agarré la onda: son formas de organizar una ventana y se crean usando la interfase LayoutManager, por suerte Java tiene creadas varias clases por defecto que implementan esa interfaz para hacer la vida más fácil. Los programadores de Java ya las conocerán: BorderLayout, GridLayout, CardLayout, etc.

Simplemente cambié éste trozo de mi clase (ubicado en el constructor):

setBackground(Color.CYAN);
setSize(256, 256);
setVisible(true);


Por este:

setBackground(Color.CYAN);
setSize(256, 256);
setLayout(new BorderLayout());
setVisible(true);


Y el botón se muestra del tamaño que le he mandado.

Aunque todo esto no ha quedado muy en claro: el problema se ha resuelto, pero no se ha comprendido, no me señalo with the index finger porque ya no es falta de razonamiento, sino la libertad de equivocarme que me doy. Si pongo el BorderLayout() después del setVisible(boolean) el botón aparece igual, aunque le añada un repaint(), pero no voy a batallar con eso, pues tengo la impresión de que la clave estará en controlar mejor a los Layout y saber de qué van los principales.

No me voy a presionar, he aprendido mucho tan sólo en este día: reafirmación de mis conocimientos con la creación de objetos, herencia y polimorfismo. Aprendí lo que son las interfaces y los Layouts... y los listeners y cómo implementarlos. Creo que para un solo día está muy bien.

Voy a seguir probando con esta clase Prueva a ver hasta dónde llego haciendo cositas varias como quizá otro botón, algún cuadro de texto y manipular sus eventos.

Por el momento ya tengo solucionados los problemas y lo que haré después de darle "Publicar entrada" es algo que ignoro: quizá siga programando, quizá me ponga a leer al saco, ver tele, jugar... no sé.

"Bueno chau" <--- ¿quién dice así? :-P

sábado, 28 de julio de 2007

Interfaces y Listeners en Java ;-)

¡Por fin! Esto no fue un quebradero de cabeza como los que me llevaba con el NekroEditor, lo que ocurre es que como ando saliendo de la novata del ámbito de Java aún me encuentro con conocimientos nuevos. Esta vez tuve que comprender bien cómo era eso de las clases abstractas, tuve que aprender sobre las interfaces que no es nada difícil pero tuve que arrancar de la nada y comprenderlo todo.

Lo que intenté solucionar fue el por qué mi programita de una ventana con un botón no cerraba cuando le hacía click en la tachita, lo que me costó googlear y leer durante varias horas en foros y manuales que tengo en del.icio.us. No voy a relatar toda la historia porque son tantos los lugares que vi, tantas las conclusiones que saqué que ya hasta se me olvidaron; jajaja bueno, será que se me olvidaron los sitios y el orden pero los conocimientos ya los tengo.

Una de las cosas que hice fue examinar un código que había hecho y que venía en un tutorial de Java que descargué hace años, el primero que tuve y que imprimí para leerlo en papel que fue el que me dio la introducción clave. Resulta que fue el primero al que se me ocurrió recurrir cuando me inicié verdaderamente en esto. El caso es que ahí venía un sencillo ejercicio de crear un Applet con unos cuantos elementos. Lo ejecuté y vi que la ventanita se cerraba, el código era este:


public void processEvent(AWTEvent mensaje){

        if (mensaje.getID() == Event.WINDOW_DESTROY){
              if (inAnApplet){
                     dispose();
              }
              else{
                     System.exit(0);
              }
       }

/* return super.processEvent(mensaje); */

}


Me pareció algo tonto y decidí estudiar la clase directamente de la página de la API de Sun, bueno, entré e intenté buscarla pero no apareció por el índice, no sé ni cómo di con ella pero me di cuenta que era otra de las funciones que había dejado el Java Team obsoletas. No sé si lo que hicieron con SDK 6 fue un gran salto o volver a reprogramar el lenguaje de programación porque hay más "deprecated functions/methods/fields" que cosas nuevas :-S Es por ello que me resultó muy complicado seguir con los tutoriales que encuentro en internet como el que imprimí que es de hace casi 10 años creo y me tuve que arrancar a la intuición y las googleadas partiendo de la página de la API de sun, que tuve que hacer mi mejor amiga (Google ya lo era, de hecho es mi tío).

Estaba deprecada la función, lo demás fue tirada de rollo mías. Me dijo algo que ya había leído antes: "usa processWindowEvent(WindowEvent e) si quieres ser alguien en el futuro" puesto que, aunque aún servía la clase Event, eso de usar cosas por compatibilidad con lo viejo no es lo mío. Ni modo, a aprender a usar los eventos.

Y ese compromiso fue muy difícil ya que usar processWindowEvent va también de saber usar las interfaces debido a que, para que este método sirva de algo hay que añadir donde sea que se pueda ejecutar un addWindowListener que es como un "agregarEscuchadordeEventos".

Java ya tiene uno por defecto, al igual que cada Sistema Operativo en su API, el Gestor de Eventos que se encarga de procesar los mensajes de los controles en general. Pero hay un problema con esto: las aplicaciones de Java pueden ejecutarse de dos formas: como Applets y como aplicaciones Standalone, los Applets se pueden visualizar acuñándolos en el código HTML de una págia y verlos en el navegador o con el appletviewer que incluye Java, y las Standalone desde la consola, son como los programas básicos en C que usan stdio.h. Si estamos en modo Standalone matamos una aplicación con System.exit(0); y si estamos en un applet usamos dispose(); pero Java no tiene forma de saber si la aplicación es arrancada desde una consola o desde el navegador puesto que lo único que hay es un bytecode .class, la forma en que lo queramos ejecutar es otra cosa, entonces no tiene forma de saber cómo acabar una aplicación. Y en la misma página de Sun terminé de disipar toda duda que pudiera tener (Clase Frame):

Frames are capable of generating the following types of WindowEvents:


  • WINDOW_OPENED

  • WINDOW_CLOSING:
    If the program doesn't explicitly hide or dispose the window while processing this event, the window close operation is canceled.

  • WINDOW_CLOSED

  • WINDOW_ICONIFIED

  • WINDOW_DEICONIFIED

  • WINDOW_ACTIVATED

  • WINDOW_DEACTIVATED

  • WINDOW_GAINED_FOCUS

  • WINDOW_LOST_FOCUS

  • WINDOW_STATE_CHANGED




Justamente el mensaje que necesitaba se ve bloqueado y no me queda más de otra que agregar un WindowListener. WindowListener es una interfase, y yo apenas sabía los conceptos básicos de las interfaces, en fin que estuve leyendo un par de horas ya algo hastiado pero como mi curiosidad era más grande no me quedó de otra que aguantarme, y es que cuando le llega a uno el "¿y si la solución está en el siguiente?" remuerde quedarse con la duda de si el próximo resultado, el próximo párrafo o el próximo intento serán los correctos.

Implementar una interfase fue lo más fácil, puesto que sólo tenía que declarar los métodos y ponerlos en blanco: {} salvo el que necesitaba, donde había que poner un System.exit(0);.

Pero no tenía idea de cómo usar el addWindowListener(WindowListener l), pues el tipo de datos que requería el parámetro era una interfaz y no sabía dónde tenía que implementarla: buscando códigos de ejemplo vi dos que me resultaron muy raros y que hasta ahora no entiendo del todo bien:

public static void main(String s[]) {
   JFrame frame = new JFrame("A Basic Frame");

   WindowListener l = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
         System.exit(0);
      }
   };
   frame.addWindowListener(l);
   //BLA BLA BLA
}


Que es de esta página: Cómo Crear Frames (Ventanas Principales). Luego otro de elhacker.net:

...bueno es este: HAKIIIII!!!11eleven Es que está muy largo.


Pero no son el objeto de mi explicación estos códigos que no entiendo bien cómo usan la interfase.

Perp ya pude solucionarlo: creo una clase que implemente la interfase WindowListener, luego creo una instancia de esa clase y se lo paso a addWindowListener. Sencillo pero para mi mente poco adentrada en Java le costó algo de trabajo asimilarlo, y me siento muy orgulloso de haber logrado esto, aprendí varias cosas el día de hoy y pude solucionar un problema y prever más.

El código resultante el siguiente, el cuál es el que llevo hasta ahora, pero le seguiré modificando muchas cosas porque, como ya dije antes, sigo con el problema de que mi botón de comando se redimensiona apenas encuentra un pretexto:

import java.awt.*;
import java.awt.event.*;

public class Prueva extends Frame{

       public static void main(String args[]){

              Prueva app = new Prueva("Hols!");

       }

       public Prueva(String title){

              super(title);

              wndListener Eventos = new wndListener();
              addWindowListener(Eventos);


              /*Button button = new Button("Heisann");
              add(button);
              button.setBackground(Color.MAGENTA);
              button.setLocation(64, 64);
              button.setSize(64, 64);*/

              setBackground(Color.CYAN);
              setSize(256, 256);
              setVisible(true);

       }

       protected void processWindowEvent(WindowEvent e){

              super.processWindowEvent(e);

       }

}


class wndListener implements WindowListener{

       public void windowOpened (WindowEvent e){}

       public void windowClosing (WindowEvent e){

              System.exit(0);

       }


       public void windowClosed (WindowEvent e){}

       public void windowIconified (WindowEvent e){}
       public void windowDeiconified (WindowEvent e){}

       public void windowActivated (WindowEvent e){}
       public void windowDeactivated (WindowEvent e){}

}


Hilsener.

kolorwhore

Voy de pasada porque sigo programando en Java. Resulta que he estado modificando el template del blog para que se ajuste a mis gustos y necesidades, aunque por veces no me siento muy orgulloso de decir "gusto" por cosas que explico en el título de esta entrada.

Para agilizar los cambios de formato de los textos y códigos que publico, y ahorrar también letras HTML en vano le he añadido mi propia sección de modificaciones a la plantilla CSS que usa esto y hasta el día de hoy va así:


/* NekroTemplate
----------------------------------------------- */
/* blockquote{
color: rgb(192, 192, 192);
} */

comment{
color: rgb(255, 255, 255);
}

code{
color: rgb(192, 192, 192);
font: $bodyfont;
}

red{ color: rgb(255, 0, 0); }
green{ color: rgb(0, 255, 0); }
blue{ color: rgb(0, 0, 255); }

cyan{ color: rgb(0, 255, 255); }
yellow{ color: rgb(255, 255, 0); }
magenta{ color: rgb(255, 0, 255); }


Los cambios que le he puesto por si los llego a necesitar para no estarlos programando en ese entonces som los últimos: las definiciones de RGB y CYM.

De modo que si aquí en la vista HTML tipeo:


<red>Rojo</red> <green>Verde</green> <blue>Azul</blue>
<cyan>Cyan</cyan> <yellow>Amarillo</yellow> <magenta>Magenta</magenta>


Me sale


Rojo Verde Azul
Cyan Amarillo Magenta


¿Les gusta? No me refiero a la combinación de colores :#( sino a los efectos. Pueden hacer cosas como estas y facilitar el engorroso "hespan eztile igual comillas" porque bueno, yo uso la vista HTML para escribir mis entradas y cuando toca poner colores tengo dos opciones: o acordarme y adaptarme o pasar a la vista normal pero no me gusta porque luego ahí se modifican códigos y de vez encuando se producen pequeños desastres que, aunque corregibles, son molestos, perturbadores, piedras-en-el-camino.

Sigo codeando entonces.

Un extraño pack() en Frame ??

Esto va con relación al post anterior.

Al parecer Java hace alguna especie de pack() interno, o al menos he descubierto que es el software de programación y no yo quien es responsable de que mi botón se muestre del tamaño de la ventana y no como yo lo asigno.

No voy a citar imágenes ni códigos pasados porque el presente revela lo que quiero mostrar a la luz. Para esto basta analizar este pequeño código en el constructor de una clase extends Frame:

Button button = new Button("Heisann");
button.setBackground(Color.MAGENTA);

add(button);
setBackground(Color.CYAN);
setTitle("Hols!");
setSize(256, 256);
button.setSize(64, 64);
System.out.println(button.getSize());
setVisible(true);
System.out.println(button.getSize());



y lo que me tira la consola:


[nekrobyte@localhost Prueva]$ javac Prueva.java
[nekrobyte@localhost Prueva]$ java Prueva
java.awt.Dimension[width=64,height=64]
java.awt.Dimension[width=246,height=226]
[]


Ahh, el último [] que puse es para representar al cursor cuadrado que indica dónde se va a insertar el próximo caracter, en realidad no había nada pero es que si tampoco pongo nada siento que no dejo las cosas muy en claro ;-)

Tengo que ver qué hago con eso porque no confío mucho en asignar las propiedades a todos mis controles en el futuro después de abrir el telón.

viernes, 27 de julio de 2007

EODLFEFAEP

¡Puaj! ¡Qué lastre! Ni bien acabo de escribir el post pasado y ya confirmé mis sospechas: el orden de los factores, en efecto, altera el producto.

Si usamos este código dentro de main:

Prueva app = new Prueva();

Button button = new Button("Heisann");
button.setBackground(Color.MAGENTA);
button.setSize(64, 64);

app.add(button);
app.setBackground(Color.CYAN);
app.setTitle("Hols!");
app.setSize(256, 256);
app.setVisible(true);


Obtendremos esto:



Pero si ponemos:

Prueva app = new Prueva();

Button button = new Button("Heisann");
button.setBackground(Color.MAGENTA);

app.add(button);
app.setBackground(Color.CYAN);
app.setTitle("Hols!");
app.setSize(256, 256);
app.setVisible(true);
button.setSize(64, 64);


Obtenemos:



De esto concluimos que:

El orden de los factores, en efecto, altera el producto


O lo que es más corto: EODLFEFAEP. Por cierto, "EF" significa "En Efecto", y es que me gusta más dibujar "EF" que "EE", nada personal, sólo preferencias ;-)

Progman i Java

No sé si ya lo había comentado antes, pero me inicié con la programación en Java desde hace, digamos, un par de meses... o tal vez tres, no lo sé, pero no es mucho que digamos. En este tiempo me he estado instruyendo con varios manuales que conseguí en internet y la página de la API de Java por Sun ha sido un sitio de constante visita. Por fortuna había estudiado Java cuando tenía como 13 o 14 años pero como no tenía en qué practicar y apenas sabía algo de programación fracasé, pero ya no me resultó tan difícil recobrarme ahora que volví puesto que, aunado a aquella experiencia, llegué con más noción de la programación orientada a objetos gracias a Visual Basic y las ojeadas que le daba a C++.

El punto es que ahora resulto ser programador novicio en Java, comenzando pero viendo hacia'l frente.

Los problemas ahora vienen con Java, cosa que para mí es una noticia amigable :-)

Estos liado con un código en Java. Practico la programación gráfica de Java y me empiezo por crear figuras basadas en las clases de AWT. Por ahora lo que quiero es algo muy sencillo: crear un una ventana con un botón, sólo eso. Para la ventana uso la clase Frame y para el botón la clase Button. El código es pequeño cabe en un único archivo llamado Prueva.java:

import java.awt.*;
import java.awt.event.*;

public class Prueva extends Frame{

       public static void main(String args[]){

              Prueva app = new Prueva();

              Button button = new Button("Heisann");
              button.setBackground(Color.MAGENTA);
              button.setSize(64, 64);

              app.add(button);
              app.setBackground(Color.CYAN);
              app.setTitle("Hols!");
              app.setSize(512, 512);
              app.setVisible(true);

       }

       public Prueva(){

              //

       }

       /*protected void processWindowEvent(WindowEvent e){

              if (e.getID() == e.WINDOW_CLOSING) {
                     System.exit(0);
              }

       }*/


}


Lo que consigo con esto es que se cree una ventana de unos 512 x 512 con el título "Hols!" y en ella... ahí el problema. Se supone que

Button button = new Button("Heisann");
button.setBackground(Color.MAGENTA);
button.setSize(1, 1);


Era para que creara un botón de 64 * 64 y que lo pusiera donde se le de la gana, pero no es así, por el contrario aparece uno de 512 * 512, y algo que he comprendido en este ejemplo que he programado es que, según parece, el orden de los factores altera el producto. Hay una instrucción: setVisible(boolean) de Frame que, dependiendo de dónde la coloque, hará que se pinte de Color.CYAN todo el fondo de la ventana pero que cuando redimensione (haciendo más grande la ventana) el fondo nuevo aparezca también pintado o de color gris.

Por el momento esto es lo que llevo, habrá que descubrir la solución.

El verdadero quebradero de cabeza lo explicaré más tarde pero es con los eventos de la aplicación, pero decidí corregir primero esto del tamaño del botón, es por ello que dejé como comentario lo demás.

Saludos.

jueves, 19 de julio de 2007

El Pingûino de Vitrubio

En estos momentos me encuentro escribiendo bajo una nueva distribución que al fin pude tener el gusto de probar, Knoppix 5.1.1 corriendo bajo una DELL Optiplex de 512 de RAM.



Antes había pensado en incendiar un disco pero por unos problemas que tuve con mi quemador lo fui a dejar en garantía para reposición a principios de enero y hace como dos semanas me lo devolvieron; ahora que cuento con uno más moderno y, digamos, una torre de 20 CDs que me regaló mi padre, me decidí a descargarlo para quemarlo de una buena vez y probarlo.

Ya he dado mi opinión de Mandriva: es el que estoy usando ahora y me parece de lo más excelente, aunque no cuento con cliente para instalar o descargar programas desde la consola tales como apt o aptitude, pero no importa, me las arreglo.

Ubuntu para mí fue un fiasco: aunque la instalación de Edgy Eft resultó satisfactoria, el precario Gnome con que venía me pareció con muchas limitaciones, casi nada configurable... en fin, creo que es por Gnome, ya que ese entorno de escritorio nunca me agradó, desde la primera vez que lo vi, ni el diseño ni el nautilus. Favor de no tomar como ofensa, es que simplemente no me gusta Gnome... aunque tampoco es que me caiga mal, para nada, es bien buena onda ese wue y mis paisanos han hecho un muy buen trabajo programándolo.

...Pero basta que este espacio no es para hablar de Ubuntu, sino del pingûino de Vitrubio de Linuxim, el nodo 3.

Hasta ahora me ha parecido muy agradable, no me dio problemas de ningún tipo, salvo la primera vez que lo arranqué y la pantalla se quedó en negro pero con el led amarillo, volví a intentar y esta vez salió todo bien.

Pantalla inicial
Pantalla inicial

Y aquí es donde manifiesto que no encontré la forma de ajustar la pantalla a XGA correctamente, y no sé si sea problema mío o de Linux (Knoppix, pues ;-) ) porque de poder puedo: click derecho y todo lo demás, se cambia pero no se ajusta, únicamente se muestra en el monitor lo que cabe, como si mi monitor no soportara para más. ¡Ah! Pero si paso el mouse por la parte de abajo se corre la vista y va apareciendo el panel de tareas con el menú K y todo, si ruedo la flechita hasta el extremo lateral izquierdo se corre la pantalla y se van mostrando los iconos del escritorio.

Raro pero así es, por lo que decidí no usar tiempo en indagar profundamente en cuestiones que en realidad no me interesan del todo... vaya, esto ni tiene la hora correcta pero no se lo compuse porque no tengo interés en que se vea la hora bien. De cualquier forma cuando extraiga el CD del lector todo lo que haya hecho se va a ir a la mierda.

Seguí probando para ver qué tal las cosas



Comencé abriendo el navegador, lo primero que se me ocurrió, lo encontré en el panel de tareas y no era el habitual Firefox, sino IceWeasel, y aquí fue donde rompí con mi desconocimiento de la bifurcación de la apuesta de Mozilla:


vs


¿El La Zorra de Fuego o La Comadreja de Hielo?

No hay mucha diferencia, ambos usan el motor de Firefox y, a menos que prestes atención al icono, te sentirás tal cual Firefox, así que para qué seguir, hablar de IceWeasel es hablar de Firefox.

Después se me ocurrió conectarme pero por alguna extraña razón supuse que no iba a estar mi usado Kopete, sino el Gaim.. y así fue: el Gaim, que en Knoppix 5.1.1 y en Mandriva 2007 aún no aparece como Pidgin, no necesita comentarse, sólo que... funciona igualito que en Mandriva y Ubuntu, jajajajajajajaja.

Otra cosa muy importante, la música. El reproductor que usé fue el primero que vi en el menú de Multimedia que más tenía la cara de poder abrir los OGG que tenía en la partición Ext3 donde guardo todo lo valioso que tengo. El reproductor es el XMMS que aparece en arriba a la derecha en la segunda captura, reproduciendo Holy Mountains de System of a Down. No le he checado bien las opciones, me limité a añadirle una lista para que la reprodujera lo cuál hizo muy bien pero en sí la poca funcionalidad que me dí tiempo de conocer no estuvo muy buena que digamos, cuesta entenderle sin etiquetas que den una señal de para qué es cata minibotón blanco.

De la interfaz gráfica no me quejo, así como tampoco voy a sostener de todo las críticas que aporto a este sistema operativo, ya que ellas no son los comentarios de un usuario avanzado de Knoppix, ni de Linux, sólo son "la primera impresión" que tuve al usar Knoppix, el vistazo, y no dudo de retractarme de muchas cosas si frecuento Knoppix.

Eso sí, es un SO muy bien trabajado, con una interfaz gráfica agradable y armónica, me encantó mucho la apariencia del panel de KDE, sus gráficos, su nitidez.

Definitivamente, después de perder la virginidad que tenía en Knoppix, lo recomiendo !!

sábado, 7 de julio de 2007

Recordatorios

Cada vez que uso MySQL después de dejarla en el abandono durante un buen tiempo suceden problemas, no sé por qué.

El punto es que ahora el problema fue que por alguna razón no podía realizar la operación describe [table]; y me marcaba el error:

ERROR 1 (HY000): Can't create/write to file '/root/tmp/#sql_10b7_0.MYI' (Errcode: 13)


ni como root.

Busqué unos segundos por Google y di con la respuesta:

aberselli
had the same problem... now solved... :)
two ways:
1)chmod 777 root (deprecated for security reason)
chmod 777 root/tmp
2)edit your /usr/local/etc/my.cnf
add or edit
[mysqld]
tmpdir = /tmp/

way 2 works belive me :) :mambo: :)


Sólo era cosa de ir a mi my.cnf y agregarle el trozo [mysqld] LF
tmpdir = /tmp/
que se explica y listo.

Me costó algo de trabajo porque como llevaba tiempo sin dialogar en SQL ni me acordaba dónde estaba ese archivo, hasta que después de como 2 minutos me acordé que era en /etc/my.cnf, lo abrí como root y lo edité, downié el servidor (oquei, mexicanizando el verbo 'to down') y lo volví a inicializar. ¡Listo! pude hacer el describe user; de la table mySQL.

Si a alguien le ayuda esto cuanto mejor, porque el blog está indexado en Google y para eso puse todas estas especificaciones: para que se llegue más fácilmente; aunque la realidad es que lo postié cono nota, como recordatorio para cuando se me vuelva a olvidar esto, y es que como ni lo practico casi (no tengo mucha necesidad de bases de datos) pues se me pierde.

Por lo mismo agregaré otras notas.

Iniciar MySQL :#(       (primero ir a /usr/local/mysql/bin)
[nekrobyte@localhost bin]$ ./mysqld_safe --user=[NekroByte||root] -p &

Insertar datos (que también para ingresar un nuevo usuario)
mysql> INSERT INTO [tabla] (campo1, campo2, ...) VALUES (valor1, valor2, ...);

Borrar datos
mysql> DELETE FROM [tabla] WHERE [expresión];

Cambiar contraseñas;
mysql> SET PASSWORD FOR '[usuario]'@'[host]' = Password('TU-FECHA-DE-CUMPLEAÑOS');

Actualizar Privilegios
mysql> FLUSH PRIVILEGES;


Y creo que con esto es suficiente... sino pues le agrego, ¿cuál es el problema?

SaludosJílsenerKambioIPhuera!

viernes, 29 de junio de 2007

Probando : blockquote

Cita BEGIN

Huna sita


Y unas letras que se supone deben estar del mismo color que la cita (#C0C0C0 por el momento)

Cita END

Comenzando con OpenFile()

Por el momento ando un poco acelerado, hablando mentalmente, escucho metal de SOAD y me encuentro programando la función OpenFile(), lo de los cuadros de diálogo Abrir y Guardar quedó, por el momento resuelto: el siguiente código es una función que crea un cuadro de diálogo Abrir o Guardar según el parámetro que recibe (COMMDLGTYPE es una enumeración creada por mí), devuelve True si se abrió o guardó el archivo y cambia el nombre de las variables globales de mi programa que almacenan el nombre y la ruta del archivo. Ojo: sólo se encargan de crear los cuadros de diálogo, las funciones OpenFile(), SaveFile() y SaveFileAs() son las que estoy programando. Recordad que el código está aún imperfecto, pero la optimización irá al final, cuando todas las funciones y métodos del proyecto estén acabadas.

Function CommDlg(ByRef DlgType As COMMDLGTYPE) As Boolean
   
   Dim Ans As Boolean
   
   Dim Struct As OPENFILENAME
   With Struct
         'Internal properties
        .lStructSize = Len(Struct)
        .Flags = OFN_CREATEPROMPT Or OFN_PATHMUSTEXIST
        .hwndOwner = hwnd
        .lpstrInitialDir = CurDir$
        
         'Filters
        .lpstrFilter = Filters
        .lpstrCustomFilter = "All Files" & vbNullChar & "*.*"
        .nMaxCustFilter = 40
        .nFilterIndex = 0
        
         'File
        .lpstrFile = String(255, vbNullChar)
        .nMaxFile = 255
        .lpstrFileTitle = String(255, vbNullChar)
        .nMaxFileTitle = 255
   End With
   
   If DlgType = DlgOpen Then
      
      Struct.lpstrTitle = "ABRYR"
      Ans = GetOpenFileName(Struct)
      
   ElseIf DlgType = DlgSave Then
      
      Struct.lpstrFile = "HUARDAR"
      Ans = GetSaveFileName(Struct)
      
   End If
   
   If Ans Then
      FullFileName = VBA.Replace(Struct.lpstrFile, vbNullChar, vbNullString)
      FileName = VBA.Replace(Struct.lpstrFileTitle, vbNullChar, vbNullString)
   End If
   
   CommDlg = Ans
   
End Function


Pero, como dije antes, esto ya está concluido (momentáneamente concluido), cuando acabé eso hice otras cosas de menos importancia como definir más constantes.

El momento de comenzar a programar las funciones de los menús comenzó con el procedimiento NewFile(), el cuál estuvo muy sencillo de programar; paso siguiente es la función OpenFile() que, con ayuda del cuadro de diálogo Abrir, se encarga de cargar un archivo en el editor (WorkArea.Text)... pero nada de usar el método LoadFile() del RTF, más adelante hablaré sobre la filosofía y propósitos que sigue este proyecto.

El caso es: las funciones de manejo de archivos deben ser creadas por mí y no las ofrecidas por el control.

No es algo tan fácil como puede llegar a pensarse ya que no se trata de un TextStream extraído de un FileSystemObject, ya que eso sería demasiado lento (una deficiencia que pesará más cuanto mayor sea el tamaño del archivo), y consumiría el doble de espacio en memoria al llevarse a cabo la función ya que hablamos del String que se obtendrá del método ReadAll() de TextStream que se pasará a la propiedad .Text del RichTextBox.

Después de buscar pequeños instantes en MSDN me topé con la solución:

Public Const EM_STREAMIN = (WM_USER + 73)
Public Const EM_STREAMOUT = (WM_USER + 74)


Son mensajes para trabajar con los cuadros de texto enriquecido. Ambos de basan en una función interna que gestiona la información que transportan EditStreamCallBack. ¿Qué hace esta función callback? Pues, como su nombre lo dice, es una función que es llamada iterativamente cierta cantidad de veces siempre que el mensaje lo requiera.

DWORD CALLBACK EditStreamCallback(
  DWORD dwCookie, // application-defined value
  LPBYTE pbBuff,  // pointer to a buffer
  LONG cb,        // number of bytes to read or write
  LONG *pcb       // pointer to number of bytes transferred
);


Si usamos EM_STREAMIN la función reemplazará el contenido del RichTextBox con un 'cierto contenido' (ideal para cargar un archivo ¿no? :^>). Por el contrario, EM_STREAMOUT coloca el contenido del RTF a 'cierto lugar', lo que me resultará de gran utilidad a la hora de programar SaveFile().

¿Y por qué es más que crucial esta función? Porque usa un buffer para transmitir pequeñas cantidades de datos. El 'cierto contenido' viaja a través de una variable que especificamos en el CallBack hacia el 'cierto lugar' que puede ser un archivo (para salida de datos con EM_STREAMOUT) o nuestro RTF WorkArea si se usa el mensaje EM_STREAMIN.

Cuando se manda un mensaje EM_STREAMIN/OUT (el valor de wParam debe ser un tipo de datos EDITSTREAM), el CallBack especificado en EDITSTREAM.pfnCallback se llama mientras el buffer no haya terminado de traspasar el contenido del RichTextBox, o mientras no se genere algún error... cosas como esas.

Así es como veo solucionado el problema de memoria y supongo también que el de velocidad.

El problema va a ser programar esa función CallBack; no la puedo implementar a modo de API porque al mandar el mensaje simplemente se empieza a llamar iterativamente a la función, y se supone que es ahí donde tengo que especificar de dónde a dónde va a transmitir información el Buffer.

En eso estoy... o a eso voy más bien puesto que ya tengo el cuerpo vacío de la función y voy al código,,,

lunes, 25 de junio de 2007

Rekapitulerende i prosjekten NekroEditor

Estamos de vuelta otra vez en las andadas de hace dos diciembres: dos años atrás comencé este proyecto.

Recapitulemos algo sobre cómo comenzó esto: fue en el año 2005 cuando se me ocurrió esto, aunque la fecha exacta luce ensombrecida. Hay un post: NekroEditor con fecha ''martes 27 de diciembre de 2005'' donde escribo:

Hoy me he propuesto comenzar bien un proyecto que quería hacer desde hace meses


Creo, teorizo, que con "hace meses" me refería al pasado abril... sólo es una corazonada.

La fecha exacta no es del todo clara ya que, pese a la fecha en el que publico que me he decidido, en las propiedades del modMain.bas aparece: Domingo, 25 de Diciembre de 2005, 04:03:40 p.m. El frmMain.frm y NekroEditor.vbp que uso ahora, que serían fuentes más fiables (más el último) fueron recreados ayer por unas movidas que les hice a los archivos, perdiéndose los originales.

Pero, según recuerdo, fue por abril o marzo cuando comencé a hacer bocetos e intentos en VB tramando el suceso, pero fue hasta aquel diciembre de masoquistas desvelos cuando arranqué muy de lleno y... casi todo lo que hice está narrado en las otras entradas.

<acheere diagonal>



¿Y qué hay de ahora?

Fue ayer o antier cuando proseguí el camino, después de haber tomado un firme entrenamiento y adquirido experiencia en C y Java.

Me embarqué en varias cosas que había dejado pendientes, junto con el proyecto, por ejemplo, necesitaba demostrarme que podía tener control con funciones que cambien el formato del texto, y me sorprende que ahora que estoy de vuelta haya resuelto ese problema en cuestión de minutos y casi sin dificultades (lo único que hice fue programar la función, lo demás ya lo tenía):

Type CHARFORMAT2
   cbSize As Long
   dwMask As Long
   dwEffects As Long
   yHeight As Long
   yOffset As Long
   crTextColor As Long
   bCharset As Byte
   bPitchAndFamily As Byte
   szFaceName(65) As Byte
   wWeight As Integer
   sSpacing As Integer
   crBackColor As Long
   lcid As Long
   dwReserved As Long
   sStyle As Integer
   wKerning As Integer
   bUnderlineType As Byte
   bAnimation As Byte
   bRevAuthor As Byte
   bReserved1 As Byte
End Type

Enum Selection
   SCF_SELECTION = &H1
   SCF_WORD = &H2 Or &H1 '(SCF_WORD | SCF_SELECTION)
   SCF_ALL = &H4
   SCF_USEUIRULES = &H8
   SCF_DEFAULT = &H0
End Enum


Sub SetBold(ByVal Sel As Selection)

   Dim Format As CHARFORMAT2
   With Format
      .cbSize = Len(Format)
      .dwMask = CFM_BOLD
      .dwEffects = CFE_BOLD
   End With

   Call SendMessage(hWorkArea, EM_SETCHARFORMAT, Sel, Format)

End Sub


Es poco, pero para mí, que no sabía mucho en aquel entonces me resultaba muy mareador el pensar que debía aprender a controlar todas las propiedades de ese tipo de datos tan grande.

Lo que vino después fue hacer los prototipos de las funciones que iba a tener mi programa: las generales que son las que interactúan con el usuario (OpenFile, SaveFile, Find, Replace) y las internas que asisten el programa en sus labores durante la edición tales como SetBold, SetColor, SetFont, LoadFile y demás. Repito y aclaro, únicamente fue cuestión de crear los prototipos, dos conjuntos de Sub [Nombre]() ' End Sub \ que luego programaré; más que nada fue para asignárselas a los Select Case LoWord(wParam), que es lo que me dice qué opción del menú se presionó (tuve también que investigar eso y programar las funciones LoWord() y HiWord().

En el intermedio que hubo al hacer cada grupo de prototipos hice unos cambios en la organización de archivos: pasaron de estar todos los formularios, módulos, imágenes y demás a reorganizarse en las carpetas /Documentación, /Forms, /Main, /Modules y /Resources (la carpeta de documentación la cambiaré después a una llamada /Docs o algo así. Me lié con ello, pues no solo era cuestión de mover archivos sino también las imágenes de otros dos formularios (de búsqueda y reemplazo) y las de la barra de herramientas, en fin, fue un rollo que, al parecer, recreó varios archivos.

Y lo último más importante que hay que mencionar es lo que me encuentro tratando de resolver ahora: crear un cuadro de diálogo con APIs.

Habrá que usar GetOpenFile y GetSaveFile pero el problema no son ellas, sino el único parámetro que llevan: un tipo de dato OPENFILENAME

Public Type OPENFILENAME
      lStructSize As Long
      hwndOwner As Long
      hInstance As Long
      lpstrFilter As String
      lpstrCustomFilter As String
      nMaxCustFilter As Long
      nFilterIndex As Long
      lpstrFile As String
      nMaxFile As Long
      lpstrFileTitle As String
      nMaxFileTitle As Long
      lpstrInitialDir As String
      lpstrTitle As String
      Flags As Long
      nFileOffset As Integer
      nFileExtension As Integer
      lpstrDefExt As String
      lCustData As Long
      lpfnHook As Long
      lpTemplateName As String
End Type


que al principio me intimidó pero al final descubrí que era como el CHARFORMAT2: sólo ocupas los elementos que necesites, los demás quedan descartados.

Aunque no es del todo sencillo ya que hay que someterse a los caprichos de la API. El procedimiento que estoy programando es el segundo prototipo en desarrollo que maquilo (el primero fue SetBold), aún imperfecto y no del todo acabo funciona bien, es el bloque DlgOpen que se encarga de crear un cuadro de diálogo para abrir un archivo y es el que me ayudará con la función OpenFile. Como vi que crear cuadros de diálogo no era algo sencillo y de poco código estoy asignando las funciones de cuadros de diálogo en un recién creado modDialogs.bas

Busqué algo de ayuda en Google y, con un par de buenos ratos resumí el primer paso que es conseguir abrir el cuadro de diálogo desde Archivo / Abrir:

Function DlgOpen() As Boolean

   Dim SNull As String * 1: SNull = Chr$(0) 'Single Null String
   Dim DNull As String * 2: DNull = Chr$(0) & Chr$(0) 'Double Null String

   Dim Flags&
   Flags = OFN_CREATEPROMPT Or OFN_ENABLESIZING Or OFN_EXPLORER Or OFN_PATHMUSTEXIST

   Dim FilterIndex As Byte
   Dim Filters As String
   Filters = "Text Files (*.txt)" & SNull & "*.txt" & SNull + _
            "All Files (*.*)" & SNull & "*.*" & DNull

   Dim Trash As Integer

   Dim Struct As OPENFILENAME
   With Struct
          'Internal properties
         .lStructSize = Len(Struct)
         .Flags = Flags
         .nFileOffset = Trash
         .nFileExtension = Trash

          'Simply
         .hwndOwner = hwnd
         .hInstance = App.hInstance

          'Filters
         .lpstrFilter = Filters
         .lpstrCustomFilter = 2
         .nMaxCustFilter = Len(Filters)
         .nFilterIndex = FilterIndex

          'File
         .lpstrFile = Space(254)
         .nMaxFile = 255
         .lpstrFileTitle = Space(254)
         .nMaxFileTitle = 255

          'Dialog properties
         .lpstrInitialDir = CurDir$
         .lpstrTitle = "TITULER"
         .lpstrDefExt = vbNull
   End With

   DlgOpen = GetOpenFileName(Struct)

End Function


Seguiré trabajando en eso pero como veo que este proyecto tendrá cierta trascendencia después de haber sido inspirado entre otras cosas por el KWrite decidí añadirle su categoría en el blog, además de la de Visual Basic: NekroEditor.

miércoles, 6 de junio de 2007

La parábola del pato

Dos ranchos vecinos tenían dos mismos problemas con sus gallinas: primero, eran muchas; segundo, eran muy nerviosas y cada que escuchaban el mínimo estrépito comenzaban a cacarear y correr estúpidamente en todas las direcciones.

Cierto día, en cada rancho, nació un pollo que había sido fervientemente empollado por su madre durante 10 meses. A los 15 minutos después de que el pollito nació los granjeros daban una pasada al gallinero para ver cómo seguían las cosas, pero al abrir la puerta las gallinas comenzaron a revolotear por toda el área y el pollito, nervioso, hizo lo mismo para huir, pero apenas y se apartó de su madre poniéndose a la intemperie, fue pisoteado por todas las gallinas que pasaban. Los granjeros acudieron rápidamente a sostener al pollito y retenerlo entre sus brazos hasta que el escándalo se calmó.

Finalmente, cuando las gallinas se acostumbraron a la presencia de los granjeros, éstos se dispusieron a ver en qué estado se encontraba el pollito; fue terrible su sorpresa al verlo agonizante, lleno de espasmos y al borde de la muerte.

- ¡Esto es suficiente! -dijo uno de ellos - La única que puede darle lo que necesita es su madre, nosotros no podríamos estarlo calentando todo el tiempo y dándole alimentos tan suaves como lo necesite. Y si lo dejamos aquí es seguro que mañana mismo morirá por los nervios de las gallinas. No podemos esperar a que crezca, además, es tan pequeño y tan débil que si logra sobrevivir será un milagro. Creo que lo mejor es acabar de una vez con su sufrimiento y matarlo, ya gallinas y gallos tenemos suficientes.

Y asesinaron al pollito.

En ese mismo instante, en el rancho vecino, había ocurrido exactamente lo mismo, pero el granjero que sostenía al pollito, al terminar el escándalo, resolvió:

- Este pollo es muy pequeño, lleva apenas 15 minutos de nacido y será muy difícil que sobreviva a los nervios de estas gallinas; sugiero que nos turnemos y lo cuidemos, así nos aseguraremos de que no le pase nada, después de todo somos muchos y el trabajo no será muy pesado. Estoy seguro que con el tiempo crecerá y se convertirá en un orgulloso gallo que cantará triunfante por las mañanas.

Y así fue.




Ahora, ¿por qué "la parábola del pato" si es un pollito?... ¡pues porque me gusta más cómo se oye 'pato' pero también me agrada más cómo se narra siendo el protagonista un pollito!, es todo.

Pero ese no es el punto. Quiero hablar de un caso que ha ocurrido en la Wikipedia: en nuestra Wikipedia, el artículo de Christopher Von Uckermann creado hace casi un año, está entre los artículos propuestos para borrar y actualmente se encuentra sometido a votación. Voy a la página de consultas y me encuentro con que 5 están en contra y leo en los comentarios:

"es preferible borrarlo que mantener un Esbozo de mala calidad y poco valor enciclopédico."

"Las estrellitas con quince minutos de fama carecen de relevancia enciclopédica"

Intento categorizarlo y voy a la Wikipedia en inglés directo a sorprenderme: un tremendo texto sobre él, con una buena sección de su biografía, la discografía de RBD, el artículo perfectamente categorizado y enlazado con los demás interwikis, de verdad me encontré con un trabajo de lo mejor.

Fue entonces cuando se me vino a la mente: es una estrellita de 15 minutos de fama, pero mientras que en la Wikipedia ES lo apedrearon y lo quieren condenar a muerte por pequeño, en la Wikipedia EN no perdieron tiempo en eso y se dedicaron a hacerlo crecer hasta convertirlo en el gran ensayo que es ahora. Es por ello que nuestra Wikipedia está así y la EN está ASÍ.

Perfectamente dejé mi respuesta en los comentarios después de votar en contra del borrado:

Con esa actitud la Wikipedia no florecerá, es la tendencia de impedir que una rana salga de la cubeta. Está bien que sea una "estrellita del momento", pero así nacieron los grandes actores, y crecieron los miniesbozos hasta convertirse en artículos destacados, incluso Google sostiene que "de las cosas más pequeñas se hacen las más grandes". En la Wikipedia en inglés (siempre próspera) aquel artículo de Uckermann que comenzó como un esbozo, ahora está fuertemente documentado y categorizado, pero logró ese éxito con la ayuda de varios usuarios, no con la mediocridad de quienes quieren hundir lo que ven pequeño. Finalmente, no es del todo un actor fugaz, pues ya había trabajado en novelas anteriormente, inclusive ahora que leo las novelas en que trabajó, me doy cuenta que es el mismo adolescente que veía en Amigos X Siempre (también veía El Diario de Daniela pero fue hace tanto tiempo que ni me acuerdo). En lugar de perder el tiempo sumergiendo en el lodo este artículo, escriban ya no una sección, sino un párrafo que lean sobre él. Si se somete al vandalismo, para eso estamos los Wikipedistas: cazadores de vándalos. --NekroByte 04:26 7 jun 2007 (CEST)


Y cuando quieran pueden ver cómo quedaron las cosas en nuestra Wikipedia. Estoy seguro de que si lo borran, en el futuro alguien lo volverá a crear, pero lo que temo es que vuelvan a asesinar al pobrecito.

Hilsener.




Relacionado: Se buscan Wikipedistas

viernes, 25 de mayo de 2007

Se buscan wikipedistas

Estos dos últimos días he estado colaborando en la Wikipedia más de lo que acostumbro hacer; normalmente son algunas correcciones y faltas de ortografía lo que edito, pero estas veces me he puesto como loco a hacer varios movimientos. He creado cinco artículos, y cuando hablo de crear un artículo no me refiero a un esbozo o una colaboración (las colaboraciones son aparte) sino de o bien crearlo de la nada, o borrar un esbozo o texto con contenido pobre y escribir el mío, pero para ambos casos recurro a la documentación, inclusive si se trata de una traducción me tengo que documentar y hasta a veces más de la cuenta porque existen palabras que para el inglés no son lo que para el español literalmente.

Ocurre que esta vez no vengo a hablar de mí y mis pociones, sino a dar alguna información de la situación actual de la Wikipedia.

Hasta hace poco, la Wikipedia ocupaba el décimo lugar en el ranking de las Wikipedias (las diez primeras Wikipedias que aparecen en la portada de Wikipedia.org), parafraseado: ¡ocupaba el último lugar!

=== Lugar de la Wikipedia ===

¿Competencia? Claro que no, pero se supone que el español es una de las lenguas más habladas del mundo y con un alto predominio hablando geográficamente, usada en casi toda América (exceptuando Brasil, Estados Unidos y Canadá) además de España, que es el país de habla hispana con el mayor número de internautas activos en la red, entonces, ¿por qué nuestra Wikipedia es tan pobre?

Este y otros pensamientos fueron los que impulsaron a un grupo de Wikipedistas a crear el Wikireto bajo el lema "El mayor esfuerzo conjunto jamás realizado por la cultura libre", el cuál consistía en alcanzar la cifra de 250 mil artículos para final del año 2006; eran miles y miles de artículos los que hacían falta, pero también eran miles y miles de usuarios los que consultaban la Wikipedia y tenían nociones de ciertos temas.

Tal meta no se llevó a cabo, pero sí logró hacer que la Wikipedia subiera un puesto en el raking, arrebatándole el noveno lugar a la Wikipedia sueca.

Actualmente ambas Wikipedias, la ES y la SV cuentan con más de 220 mil artículos pero la distancia que se llevan es reducida, en estos momentos la Wikipedia SV lleva 225 232 artículos y la Wikipedia ES, 227 909 siendo la diferencia un trío de miles de artículos que pueden aparentar ser muchos, pero diariamente se crean centenas de artículos. Entonces, ¿cómo es posible que Suecia pueda más que toda Latinoamérica y España?

=== Wikipedia, wolna encyklopedia ===

Hablemos de otro caso: La Wikipedia polaca. Actualmente se encuentra en el cuarto lugar con 372 880 artículos; tal es pues, ¿por qué un país con poca incidencia en usuarios de la red tiene demasiados artículos, ¿la Wikipedia PL y la SV tienen algo en común que hace que, aunque sean chicas y sin mucha actividad en la red, crezcan?

De la Wikipedia Sueca no lo sé, no entiendo bien el por qué de su situación pero con la Wikipedia Polaca sí: primero comienzo con un rumor: leo en alguno que otro sitio y comentario que la Wikipedia PL tiene un bots que crean artículos básicos (miniesbozos) con información sobre sus provincias, distritos, ciudades, lugares y otros patrimonios nacionales, extrae determinados datos de una base de datos y los inyecta en artículos que va creando. Ahora, ¿por qué creo esto? Vamos a lo no-rumor, lo cierto.

La Wikipedia Polaca, pese a ser una Wikipedia abundante en artículos, es una Wikipedia pobre en contenido, sus artículos son de escaso material informativo, esto se puede comprobar yendo a su página: pl.wikipedia.org/wiki y haciendo click en el enlace 'Losuj stronę' que equivale al que en la Wikipedia ES recibe el nombre de 'Página aleatoria'. Una vez hecho click, los enviará a un artículo que tiene una probabilidad más o menos de 14/15 (catorce artículos por cada 15 explorados) de ser algún miniesbozo, esbozo o uno que otro párrafo con ideas básicas. La cifra probabilística mencionada es una conclusión mía, pues en mi afán de demostrar lo que ahora compruebo, me puse a darle a su enlace de página aleatoria varias veces, topándome casi siempre con artículos de poco contenido.

Es más, justamente acabo de hacer click nuevamente en 'Losuj stronę' y me ha llevado al artículo de Zooplankton, ¿información?:

Zooplankton - plankton złożony z organizmów zwierzęcych. W jego skład wchodzą przedstawiciele wielu grup zwierząt, w tym: skorupiaki, osłonice i larwy owadów. Zooplankton występuje w całym Morzu Bałtyckim i Oceanach.

Es todo. Apunta a la Wikipedia en inglés que tiene también poco, pero definitivamente mucha más información en comparación con la polaca, y no apunta a la ES que también tiene su artículo, igualmente más nutrido que la PL y casi como el de la gringa.

Hago otros clicks y doy con el enlace a Bociniec que creo que deberían ver ustedes mismos: un par de líneas de información, algunos enlaces y el objeto clave: la plantilla lateral derecha. ¿Qué hace esa plantilla ahí? Recordemos que los wikis son usualmente editados por seres humanos (a veces por delfines y bots), siguiendo este razonamiento, tú como humano, si decides editar un artículo de alguna ciudad (la tuya por ejemplo), ¿qué necesidad tienes de ponerte a buscar la plantilla y llenarla para escribir un par de líneas y añadir la plantilla de Miniesbozo? Oquei, existen probabilidades y no dudo que haya algunos usuarios de la ES y otras Wikipedias que lo hagan, pero cuando se trata de varias ciudades y provincias polacas, cada una con su plantilla y sus dos líneas de letras sí que es cuando uno comienza a preguntarse por qué tanto apego a ello. Además, si las editaran usuarios normales, se necesitaría mucho esfuerzo colectivo por parte de un país con poca actividad en la red para conseguir tantos mapas de Polonia con un punto apuntando la provincia o ciudad que se señala en el artículo, y es que la inmensa mayoría de los miniesbozos de ciudades polacas traen sus respectivos mapas con el área señalada a precisión, todos con un formato de colores y tamaño idéntico.

Criticaría también el hecho de que las coordenadas de cada lugar están especificadas con una precisión a nivel minuto en el planeta tierra pero eso sólo gasta líneas y no puedo invertir muchas letras en esta Wikipedia.

Con este argumento (entre otros que no mencioné, más los que no me he enterado) ha quedado claro que la Wikipedia polaca tienda a hacer creaciones masivas de artículos basados en registros de bases de datos que pueden conseguirse de diversas maneras, es por ello su lugar en el ranking, no porque haya una colaboración efusiva por parte de la comunidad de usuarios, y es que no hace falta descartar la ya descartada probabilidad de que reciba ayuda de usuarios de otros países porque, ¿qué número de cybernautas domina el suficiente polaco como para preferir colaborar en aquella Wikipedia pudiéndolo hacer en la nuestra? Los hay, pero con realmente escasos.

=== Realidad de la Wikipedia ===

Sigo escribiendo a la 1:48 am el domingo 13 de mayo del 2007]

Hasta ahora no he podido resolver el misterio de la precariedad de nuestra Wikipedia y no paso de hacer puras especulaciones.

Primero pienso que es el nivel cultural que tenemos: mientras que Latinoamérica está conformada por países en desarrollo, España está pasando por una crisis política y social muy aplastante: continuamente suenan noticias sobre el PP/PSOE, Zapatero, ETA, Batasuna, la SGAE, investigaciones sobre el 11M, etc, pero en este caso no es un pretexto para no escribir, por el contrario resulta ser un motivo más para escribir: delatar la realidad.

También puede ser el desgano: ven una Wikipedia pobre en la que no siempre encuentran los artículos que buscan y cuando los encuentran contienen información algo suave: "¿por qué habría yo de colaborar en la Wikipedia?: es muy pobre, no contiene lo que necesito, si edito algo nadie va a notar el cambio ni saber que fui yo... es más, nadie me va a dar las gracias nunca por el tiempo que invertiría en ella". Para colmo de todo esto, está la enfermedad que padece la Wikipedia (al igual que todas): el vandalismo -> sujetos que no tienen nada mejor que hacer y se dedican a deshonrar artículos y difamar a Los Grandes que en el pasado lucharon para que nosotros tuviéramos la libertad que ahora tenemos.

Lo último anterior, empezando por el vandalismo, hacen de la Wikipedia una fuente no confiable en México: he oído varias críticas de maestros y personas que no le tienen fe a la Wikipedia, empezando por su contenido inestable y escaso, pasando por la abatida neutralidad que adquiere sea intencional o no intencionalmente, y finalizando porque les provoca desconfianza en que cualquiera pueda editar los artículos y así atrofiar su investigación.

Y tienen toda la razón, a ellos no les importa que la Wikipedia sea un portal 2.0 basado en la libertad y la inteligencia colectiva, o que haya tenido una gran historia y diariamente se hagan miles de esfuerzos por los internautas: cuando tienes un proyecto importante qué entregar lo único que te interesa es una fuente confiable y respaldada que garantice que tus horas de investigación no serán en vano.

Estas y otras son algunas de las explicaciones que doy a la pobreza de la Wikipedia, pero todas teorías.

=== Otro Reto para la Wikipedia ===

He estado pensando en una forma de darle realce a la Wikipedia, un proyecto para hacerla crecer.

Las razones por las que creo que este proyecto es más que posible (seguro) es que no es un proyecto ambicioso, pero sí con resultados tenebrosos: elevar la Wikipedia en el ranking de las Wikipedias pero no como un empujón, sino con propulsión a chorro. Resulta que la mayoría de las Wikipedias que se encuentran por encima de nosotros no nos llevan por mucho material, salvo las tres primeras que, de momento, son inalcanzables.

Nuestra Wikipedia crece a razón de entre 3,000 artículos por semana, lo cuál la ha llevado a incrementarse en 10,000 artículos en los últimos 30 días (todo son datos aproximados, porque no investigo a fondo y con una exactitud de ingeniería y para no marearlos con cifras y porcentajes engañosos)... vamos creciendo lenta pero imparablemente.

Para comprender lo que viene hace falta decir que el ranking de las Wikipedias, ubicado en la portada de wikipedia.org, es someramente aproximado: no sé si se actualice cada 3 días o cada semana pero su margen de error puede ir de cientos a miles de artículos: si quieren un detalle rápido y aproximado consulten ese, de otra forma ingresen a la Wikipedia que quieran medir y busquen en la portada un numero (no siempre está en el mismo lugar y de la misma forma) cuya leyenda sea más o menos como "255,000 artículos", "299,000 artikel", "300 ARTIKULOS HOYGA" o algo que se le parezca.

Bien, parece ser que las Wikipedias de inmediato arriba no nos llevan por mucho, sino que la diferencia es de miles y miles de artículos, pero que son fáciles de superarse. Para ejemplificar, tomaré los datos de estos momentos de las Wikipedias, así que evalúen la magnitud de la distancia que nos llevan, no de las cifras.

La Wikipedia ES tiene ahora 231,755 artículos y la PT (portuguesa) 257,449, siendo la diferencia entre ambas de 25,694 artículos que si con calma los dividimos entre los 3 mil que incrementan a la Wikipedia semanalmente nos da 8.5, pero podemos dejarlo en 10 si sumamos (haciendo estimaciones) la cantidad de artículos que se irían creando en la Wikipedia PT para cuando alcancemos la meta. Esto quiere decir que para rebasar a Brasil cada Wikipedista hispano tendría que escribir 10 artículos por cada artículo que acostumbrase a crear, ¿mucho, no? Pero la cuestión es mucho muy fácil: este artículo se creó para incentivar el engrandecimiento de a Wikipedia, para reunir más gente, el propósito del reto es que llegue a la mayoría de internautas con actividad en la red y conocimientos de su potencial global para que se animen, de esta forma esos Wikipedistas no estarán solos y ya no será en 10 el incremento de su actividad (y de la tuya).

Estoy seguro de que si este mensaje (o la información pura) se transmite a las personas indicadas y a la cantidad de personas indicada, los logros serán exponenciales y los resultados podrán apreciarse a la brevedad. Después de ver el boom! de artículos que se crearon después del Wikireto pasado no me cabe duda que el poder de una comunidad es monstruoso, como el de las hormigas, lo que ocurre es que no nos damos cuenta porque en casos como este, ante magnas situaciones, sentimos que nuestras contribuciones no valen ni una moneda, pero no es así.

La técnica del granito de arena es relativamente buena, pues es verdad que de grano en grano la arena del reloj se transmuta al otro polo, pero me he dado cuenta que a la gente le resulta abrumador el no apreciar los resultados de lo que hace, dándole a pensar que ha sido todo una pérdida de tiempo suyo. Pero esa técnica se puede optimizar: dejar a un lado el granito de arena del día a día y aportar entre todos granitos de arena por torrentes.

De esta forma, mientras con la técnica tradicional lo único que quedaba era fiarse del "poco a poco... algún día lo lograremos", la comunidad, aportando y aportando en una misma temporada se dará cuenta: "ayer escribí dos artículos y ahora la Wikipedia tiene 600 más que ayer, veré cuáles faltan que me parezcan sencillos y esos hago"; y es que resulta sorprendente notar el valor que tienes dentro de la comunidad, es ahí cuando te das cuenta de que tú sí vales y que de ti depende mucho que la información y el conocimiento crezcan y se difundan, suele ser muy motivador y resulta imposible negar que lo que haces no se aprecia.

=== ¿En qué consiste la trama del plan? ===

Primero fijaremos en nuestro objetivo a la Wikipedia PT que es la que se encuentra arriba de nosotros. Basta con que dediquemos todos una semana a crear, editar y modificar artículos tanto como nos sea posible (el trabajo, el estudio y la vida social son factores que nos impondrán límites que no es necesario vencer), si cada usuario que lee este mensaje creara unos 5 artículos en una semana, sumado al trabajo de los Wikipedistas, sería cuestión de 7 días o un poco más para derribar a la Wikipedia portuguesa.

La Wikipedia italiana, que sería la siguiente, cuenta con 294,752 artículos... pero no se fijen tanto en las cifras, sino en la diferencia que hay entre esta y la portuguesa, que sería la que recientemente habríamos superado, la cuál es de 37,303 artículos. Suenan a mucho pero esa no es la cifra a la que nos tendremos que enfrentar, sino será menos porque la cantidad de artículos nuestros superarán los de la portuguesa, y estoy seguro de que la Wikipedia IT no crecerá lo suficiente como para dejarnos en un terreno desolado, el esfuerzo será un poco mayor, pero se puede incluso decrementar si informas a más personas sobre esto y las motivas a escribir artículos.

La siguiente Wikipedia, la holandesa (NL), para nada supone un problema, pues apenas y se lleva por 1,000 artículos a la italiana (IT), por lo que será cuestión de 1 día para dejarla atrás, o quizá menos, pues los tendremos a ustedes colaborando. Superando la italiana es también superar la holandesa, ni siquiera me molesto en mostrar cifras porque la diferencia es casi nula, además, con lo pequeño que es el país y lo poco hablado que es su idioma, podemos estar seguros de que no incrementará en mucho su fuente, de hecho quizá sea superado por la italiana antes que por nosotros.

[Jueves 24 de Mayo]

Quiero hablar ahora de dos casos más: la Wikipedia Japonesa y la Wikipedia Polaca: la primera se encuentra por debajo de la polaca con 372,172 artículos mientras que la polaca, justo en este instante, saca a relucir sus 382,205 artículos; la japonesa está en quinto lugar mientras la polaca en cuarto. De la polaca ya se ha hablado y de la japonesa no hablaré porque no sé qué datos de interés pueda proporcionar, no la conozco y no sé bajo qué filosofía actúe, así que sólo nos limitaremos a decir que ambas están sumamente reforzadas de artículos.

Para serles franco dudo que podamos alcanzar a la japonesa al menos, la diferencia es al menos de 70 000 artículos; si estuviéramos un nivel a bajo de ella sería muy fácil incentivar la creación de artículos y posiblemente la superaríamos en poco tiempo, pero sucede que para llegar a ella sí que hay que pagar sudando sangre, pues primero debemos ser constantes con el crecimiento de la Wikipedia, el cuál no sólo debe basarse en los artículos, sino también en la calidad de cada uno de ellos.

Francamente, superar a las anteriores Wikipedias y quedar bajo la japonesa es un logro del que deberíamos estar enteramente orgullosos, en caso de que llegáramos a lograrlo.

Básicamente en eso consiste la meta que tengo planteada en mi cabeza: No se trata de colocar a la Wikipedia en el primer lugar, ni de que crezca su número de artículos (esa es una faceta por la que debe atravesar, sino que crezca su calidad, que la Wikipedia ES sea una de las mejores enciclopedias de Internet a nivel internacional, que se oiga la voz hispana, tal como el día sin mexicanos que se llevó a cabo el 2006 para exigir, entre otras cosas, amnistía internacional por parte de George Bush.

Y de cierta forma pretendo compara la visión que tengo en mi mente con ese evento pero a nivel web, sin agresiones ni manifestaciones que no sean las del intelecto colectivo por parte de los internautas. Somos grandes, pero no sabemos que lo somos.

=== Estadísticas de la Wikipedia ===

Para fijar una idea de la magnitud y presencia que tenemos frente a las demás Wikipedias, usaremos los datos mostrados en la páginas de estadísticas de nuestra Wikipedia, localizadas en la nota Wikipedia:Estadísticas; éstas, al igual que los otros datos proporcionados por la Wikipedia, no muestran información en tiempo real, sino que se actualizan periódicamente, pero sirve para hacer una aproximación de la realidad.

Bien, enfrentémonos a lo que somos:


  • Ocupamos el segundo lugar en un ranking basado en el número de usuarios, es decir que por debajo de la Wikipedia EN, somos la Wiki con mayor número de aldeanos, inclusive tenemos más que la Wikipedia alemana, pero si nos vamos a proporciones en los números, tenemos casi-casi la misma cantidad de usuarios que la wiki alemana; ¿qué entendemos con esto? que en países de habla hispana hay un manifiesto de desgano a aportar en el crecimiento de artículos, mientras que en Deutschland, zona en el mundo con una significativa minoría de habitantes con respecto a Latinoamérica y España, se encuentra en un desarrollo casi compulsivo de artículos. Por otro lado la wiki sueca, a la que trabajosamente acabamos de superar, es la que cuenta con el menor número de usuarios :-/


  • Positivo: nuestra enciclopedia es la quinta en calidad (lo cuál es mejor que cantidad :-p) mientras que la Wikipedia PL se cae a hinojos con un 60% de esbozos, corroborando la teoría que planteé hace rato.


  • Somos la segunda wiki más visitada en la red Wikipediana, por debajo de la EN, claro está. Esto me da a entender una cosa: somos muy frecuente visitados pero existe una enorme apatía para modificar un artículo (o crearlo) y me pone a pensar en otra: ¡Qué diablos! Parece que los alemanes escriben en su Wikipedia más de lo demandado :-S



Ahh, y les sugiero mucho que echen un vistazo al Pronóstico de crecimiento para 2007 en la misma página, junto a su gráfica: eso podría servir de incentivo, claramente se nota una marca en aquellas letras y nodos gráficos: esperanza... y progreso ;-)

También conviene pasarse por el artículo de la Wikipedia en Español, ahí hay algunas notas de interesante lectura.

=== ¿Cómo puedo colaborar? ===

Colaborar en la Wikipedia es todo un desafío, el simple verbo no relata todo lo que esto abarca, y con esto no quiero decir que poner nuestro bit de datos para ayudar sea algo difícil y complejo, sino que es todo un arte, y es que si simplemente se pretende escribir muchos artículos en la Wikipedia, en la mayoría de los casos resultará difícil llevar una constancia en la actividad.

A continuación proporcionaré unas viñetas que, de ser usadas acorde a una forma óptima, pueden hacer de tu progreso (como usuario individual y no hablando de un ámbito colectivo) un desarrollo exponencial que se caracterizará por dos cosas: tener calidad y ser light, sin muchas presiones:

Evita el miedo editando páginas. No te bases en que no sabes mucho del tema y tampoco pienses que tus artículos van a estar mal. Los errores que tengas al escribir un artículo se presentarán tarde o temprano: algo que se te haya olvidado omitir, un tema que no hayas sabido explicar bien, una fecha que hayas escrito mal sea porque se te fue el dedo o porque no la recordabas ("Cristóbal Colón descubrió América en 1942") no representan un problema fuerte. La Wikipedia está basada en el argumento de Linus Torvalds el cuál sostiene que cuando algo se expone a la vista de un gran número de personas, los errores que éste contenga van saliendo a relucir tan rápido como personas lo analicen. Cualquier error o carencia que tengas será subsanada con el paso del tiempo por otros usuarios.

Es una buena idea registrarse para colaborar en la Wikipedia. Es frecuente que un usuario piense que todo su conocimiento y esfuerzo serán leídos por millones de personas en distintas partes del mundo, pero nunca tendrá reconocimiento por parte de nadie ni quedará constancia de lo que hizo. A algunas personas no les importa esto, sino que sólo desean ayudar sin importar que quede marcado que ELLOS lo hicieron... sin embargo habemos personas egoístas que nos gusta tener listado todo lo que hemos hecho.

El egoísmo es un término que suele connotar un perfil negativo en una persona, sin embargo no siempre es así: yo me considero egoísta porque tengo que velar por mí antes que por los demás, pero esto no aplica a que no me importe el medio, de otra forma no estaría colaborando en la Wikipedia, pues lo importante sería que YO lo sé; para ser más claros, el egoísmo del que estoy hablando se relaciona íntimamente con el orgullo de uno mismo y de lo que uno mismo crea.

Pero iré al grano directamente: algo que sugiero hacer (para aquellos usuarios que nos gusta sentirnos orgullosos de lo que hacemos) es que personalices tu página de usuario, no la dejes en blanco. Pon un texto, algunos datos tuyos como tu nick, su MSN y habla algo de ti, si te parece. Después coloca una sección exclusivamente para dejar constancia de los artículos que has creado, al principio te parecerá muy sosa y ridícula una sección con un par de viñetas, pero conforme pase el tiempo y veas cómo tu lista crece se volverá agradable a tu vista el ver enlaces de color a azul a artículos que empezaste tú: "antes esto estaba en rojo, pero gracias a mí está en azul, y mucha gente que antes lo necesitaría y recurría a otros sitios, ahora lo tiene casi a la mano, y es gracias a mí").

Créeme, si no lo has experimentado entonces no conoces esa sensación, que no es el cáliz vuelto realidad, pero ten por seguro que siempre estará ahí para realzar tus ánimos.

Te pongo como ejemplo mi página de usuario: Usuario:NekroByte. Tengo una sección titulada 'Ego' en donde contengo los artículos que he comenzado a escribir, algunos eran esbozos tan pobres que decidí quitarlos y comenzar uno yo y otros son en blanco, también existen unos en los que se ha trabajado tanto que ya ni son los que compuse, como es el caso del de Sistemas de Numeración, el cuál evolucionó hasta entrar en un nivel de profundidad tan avanzado que ni yo logro entenderlo.

Ahora, ¿por qué decidí llamarla 'Ego'? En primer lugar por lo que ya comenté: cuando yo veo esa lista me siento orgulloso de lo que he hecho y me provoca un sentimiento de satisfacción tal que a veces eso me motiva a escribir un artículo nuevo (cuando menos uno) e incrementar la lista; en segundo lugar porque ego es una palabra en latín que significa 'Yo' (la raíz etimológica de 'Yo' es del latín 'Ego'... ¡valga!) y como es obvio de concluir, representan los trabajos que 'Ego' ha hecho.

[Viernes 25 de Mayo]

Crear artículos es una pieza clave para lograr la meta, si estás buscando información sobre cierto tema y ves un enlace rojo, es una oportunidad perfecta para hacer crecer a la Wikipedia; si crees que sabes algo relacionado al tema que marca el enlace rojo entonces no dudes en comenzar a redactarlo ya. Procura no comenzar de lleno con la historia, antes escribe una o más líneas describiendo brevemente de qué trata el tema, pues de lo contrario estarás forzando a los demás usuarios a leer todo lo que escribes si es que quieren saber de lo que va a tratar lo cuál no es nada agradable, sobre todo si se trata de alguien que sólo tiene una ligera duda. Recuerda que la definición repercute en las búsquedas que se hacen en Google con el prefijo 'define:'. Básicamente debes leer el primer punto y tomar la decisión.

Puede darse el caso de que quieras crear un artículo y estés dispuesto a hacer investigaciones si lo consideras necesario (en algunos de los artículos que he creado me he puesto a investigar para documentarlos un poco mejor como es el caso de N. del T. y 'Heredoc'. En el caso de que no se te ocurra qué sería bueno escribir, qué es lo que necesita la gente leer, es buena idea que te des una pasada por la lista de artículos solicitados de la Wikipedia: una lista de enlaces rojos ordenados por temática para que les hagas click y comiences a crear (recuerda categorizar).

Redireccionar páginas es otra opción: si ves una página y conoces otra forma de llamarla puedes hacer una redirección del Alias a la página, asegurándote antes que el alias que quieres crear no sea otro artículo, hay que cuidar mucho ese aspecto. Para ello simplemente editas el artículo que quieres redireccionar (el que se supone es un enlace rojo) y escribes: #REDIRECT [[Nombre-del-artículo]]. En la misma ventana de edición hay un texto JavaScript que cuando lo clickeas te hace el favor.

Complementa los esbozos. No se trata sólo de cantidad, sino también de calidad. Complementar esbozos es más fácil que crear un artículo porque ahora únicamente hay que aportar ideas, corregir y, si fuese necesario, corregir el principio del artículo, que es un punto trivial cuando se trata de comprobar su integridad (si te gusta el artículo desde el principio tiendes a seguir leyendo).

Gracias al wikireto (el que proponía llegar a los 250 mil artículos para el 31 de diciembre del año pasado) tenemos un punto más a nuestro favor con respecto a la creación de artículos. ¿En qué consiste? En lugar de explicarlo prefiero remitirlos a la página: http://wikireto.wordpress.com/2006/11/13/minibiografias/ del blog oficial del wikireto, ahí está todo muy bien explicado. Y la página en la que se encuentra la lista de personajes está en http://es.wikipedia.org/wiki/Usuario:Emijrp/Minibiograf%C3%ADas/1 para que comiences cuando lo desees. Ojo: esto no es usar bots, simplemente se da la plantilla para que la copies y la pegues cuando vayas a crear el artículo. Aunque no parezca tener utilidad esto, debo comentarte que acorde a la experiencia que he tenido con la Wikipedia desde que comencé (aunque tiene años que la conozco, son muchos los meses que han pasado desde que la idolatro) te diré que un artículo con imágenes, buen formato y hasta categorías es muchísimo más agradable de leer que uno que se encuentra en texto plano, sin encabezados y encima con enlaces rojos.

Visitar la página de cambios frecuentes o 'log' como suelo llamarlo es una forma particular de colaborar: no significa colaborar menos o colaborar más que al trabajar directamente con los artículos, simplemente es otra forma distinta de colaborar. Ahí ves en tiempo real (recargar la página para actualizar la información) todas las modificaciones que se hacen en la Wikipedia, desde creación de artículos hasta registro de usuarios. Al principio luce revuelto y resulta algo incomprensible, pero una media hora basta para que te adaptes a ese adictivo log y te sientas el Gran Hermano de la enciclopedia.

Categorizar es importante porque ayuda a la organización de la Wikipedia misma. Aunque no son muchas las personas que navegan por categorías es importante mantener un orden y no tener los artículos flotando en medio del limbo. Ahora te sugiero veas este enlace: Ayuda:Categoría, que lo explica a detalle. la enciclopedia concentra las páginas que flotan en medio de la nada dentro de su lista de páginas sin categorizar.

Ahora, si eres una persona con tendencias activistas puedes crear tu grupo de wikipedistas, sean compañeros de colegio o trabajo o bien una lista de miembros por Internet con el fin de ponerse de acuerdo y hacer obrar en grupo: elegir un tema y hacer entre todos un artículo tan completo que quizá alcance la estrella de 'Artículos destacados', o bien reunirse y crear unos dos artículos en un día entre todos... en fin, muchas cosas se pueden hacer con un grupo de colaboradores a la mano.

Y como último método propongo uno que puede no relacionarte con la Wikipedia: divulgación. Ya sea que colabores o no en la Wikipedia, podrías pasar este escrito (u otros artículos, si te parecen mejores) a personas que creas que sí colaborarían en la Wikipedia. Entre más personas sepan lo que se puede hacer con un poco de tecleos será mejor para toda la comunidad hispanohablante.

=== Notas finales ===

Mi proyecto no tiene que ver mucho con el wikireto, y aunque ambos luchamos por el mismo propósito, hay una diferencia en cuando a las metas.

Francamente esto estaba previsto para publicarse hace casi 1 mes. Al inicio no vienen notas finales pero en estos momentos estoy viendo los datos de fecha de la entrada (valores que se crean al momento de hacer click en "Crear entrada") quienes dicen: 28/04/07 - 01:08 PM. He estado escribiendo esto por esbozos como en la Wikipedia no por desgano, negligencia intelectual, desatención u otras índoles de tal calaña, sino porque realmente he estado ocupado, he repetido esto en otros posts pero aquí vamos de nuevo: en estos últimos tiempos he estado reformándome a mí mismo, adoptando nuevas facetas y buscando nuevas decisiones, pero todo esto ya es un rollo más personal. Por ejemplo, me encuentro escribiendo desde Torreón y no desde el Naranjito por cuestiones que ya comentaré después, cuando vea que la situación lo amerite. Sin embargo publico esto en la fecha en que lo acabo de escribir porque me parece lo más pertinente: recibirán mil últimas letras frescas y no como ideas que ya han dado muchas veces muchas vueltas por mi cabeza.

Lo que yo busco en ustedes, internautas, es gente interesada en el crecimiento de la red, el cuál es inminente pero de nosotros depende la velocidad de su expansión. A nivel personal, deposito mi confianza en ustedes, apuesto encontrar gente con agallas para fortalecer este sistema tan interesante. Después de todo el arranque y la carrera al éxito de la Wikipedia depende de cuántos voluntarios estén dispuestos a colaborar por unos momentos, y la divulgación de razones como estas será posible mientras esta información llegue a manos indicadas.

Hilsener.