Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas
Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas

domingo, 10 de junio de 2012

Inforvudú: Win7 y caracteres no latinos

Ventana de lenguaje no Unicode
Jai chinai chinita
Supuestamente desde Windows Vista, por defecto ya viene instalado el soporte para caracteres no latinos (más bien asiáticos, porque el griego, árabe y el cirílico no suele dar muchos problemas). Con Vista la verdad es que no tuve ningún problema, faltaban caracteres de lenguajes y otros símbolos que nunca ví ni usé excepto en páginas especializadas en Unicode.

Podía ver los símbolos de la página de Wikipedia de la (¿ex?)mujer de Frank de la Jungla o ver el nombre de un archivo con caracteres chinos/japoneses en el disco duro (sobre todo música, otra cosa es que el Evil Player no me lo reprodujera por esa cuestión, aunque otros programas sí que lo hacían sin problema)

Sin embargo con Windows 7 Professional 64 bits, me sucede un caso de inforvudú singular: En las páginas web el Unicode funciona sin ningún problema, pero en cualquier otro programa o el explorador se me ven los dichoso cuadraditos (incluso también en la barra de título del navegador).

También la Informagia que hay que hacer para que se puedan ver se las trae... buscando por ahí en los foros de Micosoft he encontrado dos posibles soluciones. Agarraos a cada una más cutre y desesperante para clamar al cielo:
  1. Cambiar el lenguaje por defecto para los programas no Unicode a los distintos lenguajes que dan problemas:
    Se haría yendo a Panel de Control / Configuración regional y de idioma / Administrativo / Cambiar configuración regiona del sistema y en esa ventana seleccionar Chino por ejemplo y aceptar los cambios.

    De entrada cada vez que se cambia el idioma hay que reiniciar, y es un coñazo. Pero la informagia es que si tras reiniciar vuelves a ponerlo en español los caracteres siguen funcionando como si no ha pasado nada. Para rizar el rizo, de hecho se puede hacer el combo: Chino -> Tailándes -> ... -> Español y volverán a funcionar tanto los de tailandés como los chinos y otros que te hayas recorrido.

    Pero claro, no todo va a ser magia buena... Windows 7 se puede vengar de un momento a otro (tras actualizar el sistema o instalar algún programa) y te vuelve a mostrar los cuadraditos sin más. Aunque posiblemente te hayas enfadado más porque te ha jodido las asociaciones de las extensiones de archivos a programas "gratis legales"
  2. Tener en el escritorio un archivo o carpeta que contenga alguno de estos símbolos:
    Me cagüen todo, solo faltaba que se tuviera que introducir el código Konami.

Realmente creo que el problema debe estar con la caché de fuentes de texto... pero aún así cojines, sino se encuentra en la caché búscalo en el disco duro hostias...

Kanji de Cerdo (豕) + Kanji de Corona (宀) = 家 ... Casa

miércoles, 6 de junio de 2012

Utilidad de Chixpy: FTerraChat (Obsoleta)

Meh, como hace mucho que no escribo voy a poner el código fuente de una pequeña utilidad que acabo de descubrir que ha quedado obsoleta. Hacía más de 7 u 8 meses que no la usaba, así que no sé cuando dejo funcionar... Posiblemente si me animo suba pequeños códigos fuente de programitas triviales que he ido haciendo.

El código está escrito en Object Pascal con Lazarus y fue probado en Linux. En principio no debería ningún problema por compilarlo en Windows (u otro SO), pero por razones obvias que luego verás se hizo en Linux.

El programa: FTerraChat


Pues digamos que el programa lo único que hacía era dar formato a la conversación UDP (o TCP, I don't remember) generada entre el cliente de IRC de Terra y los servidores de IRCHispano. Nada más complicado, excepto para los que les ha sonado a chino la anterior oración XD.

Intentando explicarlo de forma más sencilla: Cuando alguien entra al chat de Terra, los textos enviados y recibidos tenían el siguiente formato:
:ALADIN!la641hm@BA5L1y.CWhlKX.virtual PRIVMSG PARDILLO:Me tengo que ir
:Marymar_5!la641hm@B6fxQ3.DRMh13.virtual JOIN :#mas_de_40
:JOVENXMADURA_MADRID!mDc@BU9aIM.AEIp50.virtual NICK :zorra50
:invitado-337326!6A0B@DbBIXG.D2wdID.virtual JOIN :#mas_de_40
:invitado-633896!d@CQzhbI.AgXaWl.virtual NICK :Antonio_
:luz38!ce7g@BA5L1y.AH03TI.virtual PRIVMSG #mas_de_40 :hola hola, alguien de castellon
:BecquerParis!s@BR7GQQ.CWhlKX.virtual PRIVMSG #mas_de_40 :alguien que le guste la poesia,romanticismo y paris?privados
PRIVMSG ALADIN :adios
:maria47!c7@Bzlt96.AH4dq0.virtual QUIT :Terra Chat

Ough, no proguntéis de cuando ni de quién lo he sacado... y el cómo... es tema aparte e interesante, porque obviamente no es mío ;-D. Entonces localizando esa conversación es un coñazo intentar seguirla si que me hice el programita para que limpiara un poquito y separara los canales abiertos (y privados >:-Q ) dejándolo:
#mas_de_40

         <luz38> hola hola, alguien de castellon
  <BecquerParis> alguien que le guste la poesia,romanticismo y paris?privados

----- -----

ALADIN

          <ALADIN> Me tengo que ir
        <PARDILLO> Adios

Que a pesar de posibles simbolillos para colores, puto analfabetismo en general y demás mariconadas, es más legible a gran escala. PARDILLO es el nombre para referirse a la persona que estaba a este lado del chat. El programa también tenía previsto poder manejar otros evento si es necesario como entradas, salidas, cambios de nick, etc; pero en verdad tan solo era reñadir morralla al asunto.

El código


program FChatTerraExe;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, SysUtils, CustApp, strutils
  { you can add units after this };

const
  Espacio = 25;
  NPardillo = '<PARDILLO>';
type

  { TFChatTerra }

  TFChatTerra = class(TCustomApplication)
  private
    Canales: array of TStringList;

    function GetCanal(Nombre: UTF8String): TStringList;

  protected
    property Canal[Nombre:UTF8String]: TStringList read GetCanal;

    procedure DoRun; override;

  public
    procedure WriteHelp; virtual;

    procedure ProcesarLinea(aLinea: UTF8String);

    constructor Create(TheOwner: TComponent); override;
    destructor Destroy; override;
  end;

{ TFChatTerra }

function TFChatTerra.GetCanal(Nombre: UTF8String): TStringList;
var
  i: Integer;
  NCanales: Integer;
begin
  Result := nil;
  NCanales := Length(Canales);

  i := 0;
  while (i < NCanales) and (Result = nil) do
  begin
    if Canales[i] <> nil then
    begin
      if Canales[i][0] = Nombre then
        Result := Canales[i];
    end;
    Inc(i);
  end;

  if Result = nil then
  begin
    SetLength(Canales, NCanales + 1);
    Canales[NCanales]:= TStringList.Create;
    Canales[NCanales].Add(Nombre);
    Canales[NCanales].Add('');
    Result := Canales[NCanales];
  end;
end;

procedure TFChatTerra.DoRun;
var
  ErrorMsg: String;
  ChatFile: TStringList;
  i: Integer;
  Fecha: TDateTime;
begin
  // quick check parameters
  ErrorMsg:=CheckOptions('h','help');
  if ErrorMsg<>'' then begin
    ShowException(Exception.Create(ErrorMsg));
    Terminate;
    Exit;
  end;

  // parse parameters
  if (HasOption('h','help')) or (Params[1]= '') then begin
    WriteHelp;
    Terminate;
    Exit;
  end;

  if not FileExists(Params[1]) then
  begin
    WriteLn('No se ha encontrado el archivo: ' + Params[1]);
    Terminate;
    Exit;
  end;

  // TODO 2: ¿Cómo se envían las multilíneas?
  ChatFile := TStringList.Create;
  try
    ChatFile.LoadFromFile(Params[1]);
    i:=0;
    while i < ChatFile.Count do
    begin
      ProcesarLinea(ChatFile[i]);
      Inc(i);
    end;
  finally
    FreeAndNil(ChatFile);
  end;

  ChatFile := TStringList.Create;
  try
    i:=0;
    while i < Length(Canales) do
    begin
      ChatFile.AddStrings(Canales[i]);
      ChatFile.Add('');
      ChatFile.Add('----- -----');
      ChatFile.Add('');
      Inc(i);
    end;
  finally
    Fecha := FileDateToDateTime(FileAge(Params[1]));
    ChatFile.SaveToFile(ExtractFilePath(Params[1]) +
      FormatDateTime('yyyymmddhhnnss', Fecha) + ' - Terra.txt');
    FreeAndNil(ChatFile);
  end;

  // stop program loop
  Terminate;
end;

constructor TFChatTerra.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  StopOnException:=True;
end;

destructor TFChatTerra.Destroy;
begin
  inherited Destroy;
end;

procedure TFChatTerra.WriteHelp;
begin
  { add your help code here }
  writeln('Usage: ',ExeName,' -h');
end;

procedure TFChatTerra.ProcesarLinea(aLinea: UTF8String);

  procedure DoPRIVMSG(aNick, aCanal, aMensaje: UTF8String);
  var
    CurCanal: TStringList;
  begin
    // ¿Es un mensaje privado al pardillo?
    // Si es así el canal es el nick que envía el mensaje
    if (aCanal[1] <> '#') and (aNick <> NPardillo) then
      aCanal := aNick;
    CurCanal := GetCanal(aCanal);
    CurCanal.Add(RightStr(DupeString(' ', Espacio) + '<' + aNick + '> ', Espacio)
      + aMensaje);
  end;

  procedure DoQUIT(aNick, aCanal, aMensaje: UTF8String);
  var
    i: Integer;
    CurCanal: TStringList;
    NCanales: Integer;
  begin
    // TODO 2: Añadir un parametro para añadir esta info
    Exit;
    {
    i := 0;
    NCanales := Length(Canales);
    while (i < NCanales) do
    begin
      CurCanal := Canales[i];
      if CurCanal <> nil then
        if CurCanal[0][1] = '#' then
          CurCanal.Add(DupeString(' ', Espacio) + '<== QUIT <== ' + aNick +
            ' (' + aMensaje + ')');
      Inc(i);
    end;
    }
  end;

  procedure DoPART(aNick, aCanal, aMensaje: UTF8String);
  var
    CurCanal: TStringList;
  begin
    // TODO 2: Añadir un parametro para añadir esta info
    Exit;
    {
    if aCanal[1] <> '#' then
      aCanal := '#' + aNick;
    CurCanal := GetCanal(aCanal);
    CurCanal.Add(DupeString(' ', Espacio) + '<-- PART ' + aNick + ' (' + aMensaje + ')');
    }
  end;

  procedure DoJOIN(aNick, aCanal, aMensaje: UTF8String);
  var
    CurCanal: TStringList;
  begin
    // TODO 2: Añadir un parametro para añadir esta info
    Exit;
    {
    // El JOIN no tiene canal, pero lo indica en el mensaje
    if aMensaje[1] <> '#' then
      aMensaje := '#' + aMensaje;
    CurCanal := GetCanal(aMensaje);
    CurCanal.Add(DupeString(' ', Espacio) + '==> JOIN ' + aNick + ' (' + aMensaje + ')');
    }
  end;

  procedure DoPING(aNick, aCanal, aMensaje: UTF8String);
  begin
    // Por el momento lo ignoramos
    Exit;
  end;

  procedure DoPONG(aNick, aCanal, aMensaje: UTF8String);
  begin
    // Por el momento lo ignoramos
    Exit;
  end;

  procedure DoMODE(aNick, aCanal, aMensaje: UTF8String);
  begin
    // Ignoramos los baneos y cambios de modo, no interesan por el momento
    Exit;
  end;

  procedure DoKICK(aNick, aCanal, aMensaje: UTF8String);
  begin
    // Ignoramos los kick, no interesan por el momento
    Exit;
  end;

  procedure DoNICK(aNick, aCanal, aMensaje: UTF8String);
  begin
    // También ignoramos los cambios de nick...

    Exit;
  end;

  procedure DoACTION(aNick, aAccion, aCanal, aMensaje: UTF8String);
  var
    i: Integer;
    CurCanal: TStringList;
    NCanales: Integer;
  begin
    if aCanal = '' then
    begin
      i := 0;
      NCanales := Length(Canales);

      while (i < NCanales) do
      begin
        CurCanal := Canales[i];
        if CurCanal <> nil then
          if CurCanal[0][1] = '#' then
            CurCanal.Add('[' + aAccion + '] ' + aNick + ' (' + aMensaje + ')');
        Inc(i);
      end;
    end
    else
    begin
      if aCanal[1] <> '#' then
        aCanal := '#' + aNick;
      CurCanal := GetCanal(aCanal);
      CurCanal.Add('[' + aAccion + '] ' + aNick + ' (' + aMensaje + ')');
    end;
  end;

var
  aPos: Integer;
  aNick: UTF8String;
  aAccion: UTF8String;
  aCanal: UTF8String;
  aMensaje: UTF8String;
begin
  // YEEEEP!!! Los mensajes a los canales se realizan con private message
  //   (PRIVMSG) peeeero los canales tienen # y los privados de verdad no.
  // Esto me hace la tarea algo más fácil...

  if aLinea[1] = ':' then
  begin // Es un mensaje normal...
    aLinea := Copy(aLinea, 2, MaxInt);

    // NICK
    // No creo que necesite el !blah@blah.blah
    //   Aunque... vendría perfecto para los cambios de nombre o
    //   cuando uno sale y entra on otro nick.
    aNick := Copy(aLinea, 1, Pos('!', aLinea) - 1);
    aLinea := Copy(aLinea, Pos(' ', aLinea) + 1, MaxInt);
  end;

  // ACCION
  aAccion := Copy(aLinea, 1, Pos(' ', aLinea) - 1);
  aLinea := Copy(aLinea, Pos(' ', aLinea) + 1, MaxInt);

  // CANAL
  if aLinea[1] = ':' then
  begin
    // Algunas acciones no tienen Canal -> ':nick!bla@bla QUIT :Terra Chat'
    aCanal := '';
    aLinea := Copy(aLinea, 2, MaxInt);
  end
  else
  begin
    // Algunas acciones no tienen mensaje: ':nick!bla@bla PART #canal'
    aPos := Pos(' :', aLinea);
    if aPos = 0 then
    begin
      aCanal := Copy(aLinea, 1, MaxInt);
      aLinea := ''
    end
    else
      aCanal := Copy(aLinea, 1, aPos - 1);
      aLinea := Copy(aLinea, aPos + 2, MaxInt);
  end;

  // MENSAJE
  // (Podía haberlo puesto dónde el canal pero así queda más ordenado)
  aMensaje := aLinea;

  if aNick = '' then
    aNick := NPardillo;

  if aAccion = 'PRIVMSG' then DoPRIVMSG(aNick, aCanal, aMensaje)
  else if aAccion = 'QUIT' then DoQUIT(aNick, aCanal, aMensaje)
  else if aAccion = 'PART' then DoPART(aNick, aCanal, aMensaje)
  else if aAccion = 'JOIN' then DoJOIN(aNick, aCanal, aMensaje)
  else if aAccion = 'PING' then DoPING(aNick, aCanal, aMensaje)
  else if aAccion = 'PONG' then DoPONG(aNick, aCanal, aMensaje)
  else if aAccion = 'MODE' then DoMODE(aNick, aCanal, aMensaje)
  else if aAccion = 'NICK' then DoNICK(aNick, aCanal, aMensaje)
  else if aAccion = 'KICK' then DoKICK(aNick, aCanal, aMensaje)
  else DoACTION(aNick, aAccion, aCanal, aMensaje);
end;

var
  Application: TFChatTerra;

{$IFDEF WINDOWS}{$R FChatTerraExe.rc}{$ENDIF}

begin
  Application:=TFChatTerra.Create(nil);
  Application.Title:='FChatTerra';
  Application.Run;
  Application.Free;
end.

Posibilidad de actualización


Puede que algún día me entretenga, analizando el nuevo formato y adapte el programa en consecuencia; ya que no es tan difícil de entender aunque esté algo ofuscado.

lunes, 24 de mayo de 2010

Emuteca 0.6.2.38

... bah, el desarrollo de la 0.7.0.XX va muy lento.

Bueno, subo esta versión que es la que llevo utilizando desde que subí la anterior. No tiene nada nuevo, y tan solo arregla el problema que siempre he tenido con los fondos transparentes de los png. A cambio, deja de reconocer formatos como .mng y .jng, que como a nadie les suena (los .mng tal vez) pues tampoco importa mucho.

Proyecto de Emuteca (lo pongo aquí porque seguro que no te habías dado cuenta de que pinchando en el título lleva a ese lugar)

Como así quedaría muy corto y aburrido, os cuento la historia para que sea largo y aburrido.

Emuteca y los virus

Fue el 10 de abril, estaba de vacaciones, por tanto no suelo entrar demasiado en internet; necesitaba el ordenador, casualmente entro y... ¿correo de GoogleCode?.

- Meh, habrán cambiado algo y me anuncian la novedad... ¿"Malware detected in Emuteca"? Pero cómo es posible.

En el mundo real estaba algo atareadillo, sí que leí un poco por encima. Era "imposible" que tuviera malware. Continué a lo mío a la vez que pensaba que podía haber sido...

- Uhm..., ya sé que es. Posiblemente hayan realizado el mismo escaneo que en el correo. Si, alguna heurística ha dado positivo como aquel programa y seguro que esa función.

El programa al que me refiero es uno que hice en 2 minutos de prueba mientras conversaba con un amigo unos meses antes, función: Borrar el disco duro (bueno, en realidad listaba por pantalla todos los ficheros del disco duro). La conversación derivó y al final acabamos probando si podía mandárselo a través del correo electrónico de Google (con el cambio: "Mostrar por pantalla" a "Borrar el fichero"). Como yo esperaba, no me dejó. Dicho programa usaba una función copiada directamente del código de Emuteca y 4 líneas de código, nada más... Ahora tras el incidente con Emuteca... ya no estoy tan seguro de que no me dejara enviarlo...

El mundo real me mantuvo ocupado casi todo el día, esta vez mi mente estaba ocupada pensando en la respuesta a Google. En como explicar la situación a Google, resignarme a que borraran el proyecto si es por culpa de esa función; si bien no es vital, ayuda bastante para eliminar los archivos creados temporalmente.

Al final del día, la casualidad hace que decida investigar un poco más. Y paso un antivirus... (por si no lo habíais supuesto por adelantado; no, no uso cosas de esas. No lo hagáis en casa niños). Con la sorpresa de que Google está en lo cierto se trata del Win32Induc. La reacción fue... no fue, había cosas que me alegraban, otras que me asustaban, otras que mantenían la frustación anterior. Así que por pereza y no saber muchos sentimientos a la vez todo se resumió en: "Vaya, mañana tengo que pasar el antivirus entero." y pensar en como actuar al día siguiente.

Ya era 11 de abril, continuo con lo que me había mantenido el día anterior ocupado y desde primera hora paso el antivirus (7 horas de antivirus en el arranque). Bien, solo tengo infectados los archivos de Emuteca en todo el disco duro... mierda, no los puede recuperar y hay que borrarlos. Bueno, busquemos información del virus. Err, wap; síp, es muy común (cuando se descubrió había millones de ordenadores infectados), y funciona de una forma muy rara (e ingeniosa). Menos mal, no daña nada. Un momento... el antivirus no me ha arreglado Delphi; eso lo tengo que arreglar a mano.

Envío el correo a Google. No me contesta hasta el día siguiente, pidiéndome que borre los archivos problemáticos, o ya sé lo que pasará (durante ese día me quitaron los permisos, lo cuál es curioso porque te piden que arregles el problema pero no te dejan arreglarlo). Para estar seguros borro todos ese mismo día... hasta hoy que he subido la versión siguiente (esperaba haber avanzado un poco más e incluso la 0.7.0.XX).

No, no hay moraleja. No hay nada entretenido. Necesitaba explicar en algún sitio lo ocurrido... aunque sea tarde. Y no dejéis de leer esto

martes, 26 de enero de 2010

Historias de la informática (¿1?)

... una entrada que nadie va a entender.

Bueno, pues voy a contar una historia que me sucedió hace unos añitos, en la residencia de estudiantes que estaba, primero de carrera y había otros que al igual como comenzaban ese año. Una de las asignaturas era programación, en Pascal.

Estaba yo haciendo a saber qué, cuando me llaman a la puerta. Un compañero de curso. Teníamos que hacer una práctica para dicha asignatura (algo de mostrar la información de un array de registros con datos)

- Chix, ¿Puedo hacerte una pregunta? - Si la hubiera hecho directamente ye te la hubiera respondido - Ehmmm, uh... ¿Como se hace para imprimir un el contenido de una matriz? - Pues tienes 3 formas For, While y Until... y porque no nos dejan usar Goto que sino... Así que depende como lo quieras hacer - Sí, ya tengo un For - ¿Entonces? - Solo me lista una. La última para ser exactos, lo he intentado de varias formas pero cascaba y de esta forma no pero pasa eso - Las cosas comienzan en cero y term... - Sí, y terminan en length(array) - 1 - Que raro, a ver...

Bueno pues vamos para allá felices... abre Turbo Pascal... miro... y me encuentro

program Practica2
[...]
procedure NoSeCual(var TempArray: array of LoQueFuera);
[...]
begin
  [...]
  for i := 0 to length(TempArray) - 1 do
  begin
    [...] /* Habia que hacer otras cosillas */
    Temp := TempArray[i].Nombre + ' ' + TempArray[i].loquesea + [...]
  end;
  WriteLn(Temp);
  [...]
end;
[...]
end.
- ¡Cacho trozo!, mete ese WriteLn dentro del For - Pero no quiero - ¿Cómo que no quieres? - Si, quiero que lo escriba al final - Pero que más da, si ese procedimiento solo muestra por pantalla un listado. - Que no, quiero que sea después

Resultado

program Practica2
[...]
procedure NoSeCual(var TempArray: array of LoQueFuera)
var
  [...]
  Temp: Array[0..NoSeCuantoEntra] of String[255];
begin
  [...]
  for j := 0 to (length(TempArray) - 1) div 24 do
  begin
    if (length(TempArray) - 1) < (j * 24) then
      h = (length(TempArray) - 1) mod 24
    else
      h = 23
    for i = 0 to h do
    begin
      [...]
      Temp[j * 24 + i] = TempArray[j * 24 + i].Nombre + ' ' + TempArray[j * 24 + i].loquesea + [...]
    end;
    for i = 0 to h do
    begin
      WriteLn(Temp[j * 24 + i]);
    end;
    ReadLn;
  end;
end;
[...]
end.

face palm

lunes, 14 de diciembre de 2009

Que poco consume

... a quién no le gustaría tener un navegador tan ligero.

No sé desde que actualización Windows Vista se ha optimzado la gestión de memoria. Pero según el administrador de tareas SeaMonkey solo me consume 64 kb

Bueno, no voy a ser malo y voy a mostrar el fallo...

Vaya con las ilusiones que me había hecho y resulta que es un fallo (y gordo), en la conversión de número. Además decir que antes se me veía bien

PD: Además me acabo de dar cuenta de que google a pasado todas las imágenes que había en el blog a un álbum de una cuenta de Picasa que no tenía... XD

sábado, 13 de diciembre de 2008

Editor JME 1.1.0.7

... ya no se que poner aquí :P

Bueno pues he mejorado un poco el editor de .jar, y como hacía mucho que no escribía otra entrada :P :

  • Ahora le he añadido una campo para que cambie lo necesario para cambiar el nombre del programa sin tener que cambiar a mano el texto del MANIFEST.MF
  • La creación de copias de seguridad ahora es opcional, y se crean en un directorio llamado Backup del directorio de salida (ya no hace falta que exista previamente)

Cambiar el nombre usando la caja nueva me ha funcionado bien, lo que no quiere decir que pueda cometer un fallo en casos especiales :P

Po's hala: Aquí está.

Actualización: Y he encontrado un fallo :-( , cuando Midlet-name: está en la última línea no funciona correctamente

domingo, 9 de noviembre de 2008

Editor JME

... vaya escusa para crear una nueva entrada.

Pues eso, como hacía tiempo que no escribía nada. Pues voy a comentar lo que he estado programando esta tarde... que como también lo había dejado apartado un poco pues me entraron ganas de programar un poco... (Emuteca sigue evolucionando pero estoy esperando a hacer una cosa para sacar la nueva versión)

Editor JME

Resumiéndolo mucho, es un editor del archivo Manifest.MF de los .jar de los programas para teléfonos móvil (posiblemente también funcione para los programas java en ese formato normales).

Se que suena a chino pero ahora explico la situación. Cuando consigues un .jar para un móvil (por ejemplo un juego), muchas veces el nombre del fichero jar o cuando se instala el nombre del programa en el móvil no es muy descriptivo o tiene algo añadido como "by vete_a_saber_quién". Si alguna vez has intentado renombrar el .jar y lo vuelves a instalar verá que dentro del móvil sigue sin desaparecer. Pues eso es lo que hace ese programa ayuda renombrar ese nombre que aparece dentro del móvil y ya de paso renombra el archivo .jar correspondiente.

El uso es muy sencillo, eliges los directorios correspondientes en la parte de arriba, le das abrir y aparecerá el texto del manifest que podrás modificar y a grabar. Te creará el archivo y guardará una copia de seguridad del archivo que modificaste (Sin modificar, aunque renombrado)

El nombre del archivo que se creará está debajo de la caja de edición, y los otros dos texto más bien son de depuración a ver si encuentra las cadenas de texto correspondientes la versión y a la versión.

Bien... y que cojones hago

Modificar el archivo de texto eso ya corre por tu cuenta... cuidando saltos de línea y formato :P

Tan solo te puedo decir como pista que el nombre que aparece en el móvil se encuentra trás de MIDlet-Name: y MIDlet-1: (Sí, ambos sitios y en este último cuidado con no borrar lo que está detrás de la primera coma que se trata del icono que usará y del la orden para ejecutar el juego)

Pues vaya tontería, ¿no?

Pues sí, pero mejor que estar descomprimiendo el .jar (que en verdad es un zip), buscar el archivo, modificarlo, recomprimir todo, renombrar el zip nuevo, moverlo a otra carpeta y borrar lo descomprimido y el archivo original... pues algo ayuda :P y para dos horas que me ha costado hacerlo...

Por cierto:

  • No cambies en directorio temporal cuando se tiene algún archivo abierto (a no ser que no lo vayas a grabar)
  • Aseguraros de que existen todos los directorios

Hala así que si lo quieres bajar para ver que patético es: EditorJME

viernes, 3 de octubre de 2008

Emuteca 0.4.0.14

Bueno, pues lo prometido es deuda...

Al final todavía no he hecho la opción para poder importar los history.dat y otros archivos complementarios de de MAME. Pero por otra parte he implementado la búsqueda, de forma cutre y sólo para el título de las familias; la posibilidad de definir para cada sistema dónde se quieren descomprimir los ficheros de forma temporal.

Para descargar

Tan solo hay que pulsar este enlace, Emuteca 0.4.0.14 y descomprimir el programa donde estuviera la versión anterior. No debería haber ningún problema

Si estás aburrido

Aquí tienes el listado de cambios:
  • ¡Ayuda! No, no es que la necesite. Sino que he creado un archivo HTML (en la carpeta Ayuda) donde explico más detalladamente el funcionamiento para liar y confundir más a la gente. ¿Porqué no lo hago en un .chm y pongo ayuda contextual? Os dejo elegir la respuesta: "No me da la gana" o "Es muy pesado hacerlo"
  • ¡Búsqueda! El panel de búsqueda ya funciona, por el momento solo busca en el nombre de las familias pero algo es algo...
  • Añadidas barras de desplazamiento vertical a las cajas de texto (que fallo más tonto :P) y centrado del texto para ver que tal...
  • Cambiada la forma en que se realiza la búsqueda de archivos multimedia de los juegos, ahora se ignora todo lo que se encuentra detrás de "(" o "[". Por ejemplo, si se tiene: v NombreFamilia - Blanco - Compañía - Año - Etiqueta - FicheroFamilia |-> Nombre juego - Versión - Comp. - Año - Etiquetas - FichJuego (vers.) Antes se buscaba "FichJuego (vers.)" y luego "FicheroFamilia", ahora lo que busca es "FichJuego" y luego "FicheroFamilia", tiene como problema que si distintas versiones tienen el mismo nombre si se le quitan los paréntesis solo pueden usar una imagen, pero así no hay que tener repetidas un montón de imágenes.
  • Mejorado un poco el gestor multimedia otra vez.
  • Ya funciona la posibilidad de definir en cada uno de los sistema los sistemas el directorio donde descomprimir los ficheros. Tras cerrar el emulador "intenta" borrar los ficheros descomprimidos.
  • Añadido el menu Juego (aunque antes se podía hacer manualmente pulsando botón derecho sobre la barra de herramientas para configurarlo) porque le he puesto dos opciones más: Elegir un juego aleatorio del sistema y elegir un juego aleatorio de entre todos los sistemas.
  • Una minucia interna para poder añadir como sistema a Windows/MS-DOS, es decir poder configurar un sistema en el que se busquen los .exe y el emulador sea uno en el que no se define ejecutable dejando el campo vacío y como parámetro %ROM%. Es decir, que ejecute directamente los programas (.exe, .com, .bat, etc.). Posiblemente funcione tambien con otras extensiones asociadas por el sistema operativo abriendo el archivo con el correspondiente programa (no he esto último y si no funciona tampoco lo voy a mirar mucho...).
  • Añadido un botón al editor de información de juegos y familias, para grabar el árbol de juegos al fichero. Así no hay que cambiar de sistema, abrir algún gestor o cerrar el programa para que se graben los datos del sistema actual al fichero.
  • Nueva opción del menú Emulador, para poder ejecutar el emulador sin parámetros.
  • Añadido un nuevo menú: "Enlaces", donde pondré algunos enlaces a páginas como VGMuseum y VGMusic donde se pueden conseguir imágenes y musica relacionada con los juegos. No es nada automático y solo abre la página principal, así que las tendrás que bajar a mano :P. Lo ideal es que se pudieran arrastrar las imágenes directamente desde el navegador a la imagen principal del programa, como se puede hacer desde el explorador de ficheros (que por eso lo puse en un principio), pero creo que así no funciona.
  • He quitado la opción de mover los artículos al principio en los títulos de los juegos. No me terminaba de convencer... y mejor que estén ordenados a mano esos casos... De hecho, la opción a sido sustituida por una que realiza el efecto contrario... Es decir, pone los artículos al final del título respetando los subtítulos (estilo: "Zorro, El" o "Zorro 2, El: La saga continúa")

martes, 17 de junio de 2008

Emuteca 0.3.0.11

... Uhm... lo mismo de siempre pero con unas pocas chorradas más.

Descargar: Emuteca 0.3.0.11.zip

Actualización: Emuteca 0.3.1.12.zip Arregladas unas cosillas del gestor multimedia.

Básicamente lo nuevo es:
  • No pierde memoria
  • Gestor Multimedia (hay alguna cosilla que no funciona)
  • Poder crear una base de datos con la información del nombre y versión de los juegos usando el ejecutable del MAME
La lista completa por si no tienes otra cosa que leer:
20080617 - Emuteca 0.3.0.11
+ Añadida ayuda emergente a un montón de sitios (no todos).
+ Varias utilidades creadas:
  · Añadida opción para convertir en minúsculas los nombres claves/crc32 de un
    sistema. Bastante útil en Win9X/ME para cuando se quieren importar los
    nombres de los juegos de MAME (los usa en minúscula). Por ejemplo:
    Se configura el sistema de recreativas (Juegos de MAME), se actualiza la
    lista, se crea la base de datos con el propio MAME y si se intenta
    importar no funcionará porque en Emuteca la clave está en mayúsculas y en
    la base de datos en minúsculas.
  · Opción para pasar los artículos ", The"; ", La"; ", El" al principio del
    nombre del juego (Tengo pensado hacer que sea posible ordenar los juegos
    ignorando los artículos y una opción que se puedan quitar o poner del
    principio)
  · Utilidad para convertir " - " en ": ". Para los nombres de los juegos
    o familias. Para cuando se lee por primera vez un directorio de archivo
    y no se tiene una base de datos
  · Opción para renombrar todos los nombres de fichero de las familias, en
    base a su nombre.
+ ¡Gestor multimedia creado! Aunque dista mucho de funcionar a la perfección.
+ ¡¡YA NO PIERDE MEMORIA!! (O al menos eso me dice el nuevo gestor de memoria)
  La culpa la tenía la librería que usaba para leer los archivos PNG y lo he
  cambiado por otra, problema: No reconoce GIFS (La otra era una bestia parda
  en formatos de ficheros, pero aun así también fallaba con los GIF). Otra
  cosilla es que reconoce la transparencia y otro formato interesante MNG...
  pero pone fondo negro por defecto y queda algo feo.
+ Interno: Le he instalado el gestor de memoria FastMM478, en teoría
  hace operaciones de memoria más rápido; pero lo que me interesa es que me
  informa de la memoria no liberada por el programa...
m La forma en que funciona el editor de datos, ahora es necesario pulsar el
  botón para guardar los cambios.
+ Se puede arrastrar una imagen encima de la imagen del juego directamente
  para añadirla o cambiar dicha imagen. No me convence mucho...
+ Añadido un poco de actividad al importar listas, crear base datos de MAME,
  etc... para que se vea que no se ha colgado (a costa de que tarde más)
+ ¡¡Añadida opción para extraer nombres y organización de MAME!! :D
  Lamentablemente es bastante lento y no extrae ni la compañia, ni el año. :/
  Pero se puede indicar el .edb anterior para importar esos datos de nuevo ;)
+ Iconos en el gestor de emuladores, aunque todavía le tengo que cambiar
  el estilo a los botones, que tiene el antiguo.
+ Añadido la cantidad de juegos de cada sistema y el número de familias.
  No estoy seguro si esto
+ GestSis y GestEmu: Ordenación alfabética de los sistema y emuladores
  (solo al abrir la ventana, no al añadir un nuevo elemento)
m GestSis: El directorio "Texto\Informacion" cambiado por "Texto\Información"

jueves, 29 de mayo de 2008

Emuteca 0.2.0.8

... otra vez el pesado de los emuladores.

Bueno pues he "avanzado" un poquillo más en el programa, por decir avanzar significa que sigue haciendo lo mismo y casi nada nuevo XD.

Para descargarlo pulsa en este enlace: Emuteca_0_2_0_8.zip

Cambios

Pues son insignificantes... ya que el mayor trabajo a sido portar el código de Delphi 2006 a Delphi 7, ya que el primero no funciona en Win98 y he rehecho la interfaz (aunque la verdad podría haber reusado todo), así que copiando de Cambios.txt:
20080529 - Emuteca 0.2.0.8 m Opción "No extraer ficheros" solo activa si se tiene marcado no usar
CRC32 (No tiene sentido usar el CRC32 si se buscan ZIPs). Además he
quitado la ayuda de que opciones son para los distintos tipos de ROM.
(Ya lo pondré en la ayuda emergente)
+ Al importar datos de un sistema, se actualiza la combobox de compañías.
+ Cuando un sistema se tiene la opción "extraer todo", en teoria ya borra
todos los fichero extraidos tras ser usados (no lo he probado fondo...)
- Formulario "Sobre..." porque no tenía ganas de importarlo de la anterior
versión (así además no me tengo que preocupar de actualizarlo a mano,
tal y como lo tenía) XD.
+ Guarda los datos al refrescar la lista, para luego volver a recuperarlos
sin perden la información de los archivos que no fueron modificados.
+ Añadido icono del sistema en la parte superior (32x32 si es formato .ico)
m Cambiado de lugar el editor de los juego, apareciendo ahora a la izquierda,
en vez de abajo.
+ Gestor sistemas: Añadido botón para que cree y configure automáticamente los
directorios de imágenes, texto, sonido y vídeo.
+ Algunas imágenes mas para los botones
m En vez de compilarlo con Delphi 2006, ahora esta siendo escrito con Delphi 7
porque en Win98 no funciona Delphi 2006.
+ Menús y barras de herramientas configurables. Aunque la verdad es que no
hace falta para nada...)
m Cambiados algunos atajos del teclado


Había que rellenar un poco la entrada :P. Aviso que si no se sabe como funcionan los emuladores de poco te va a servir...

lunes, 21 de abril de 2008

Ejemplo práctico con Emuteca

... si lo conseguís leer todo el tocho posiblemente os paséis al mundo de la emulación.

AVISO: ESTE EJEMPLO ESTÁ HECHO CON EMUTECA 0.1.2.6, PUEDE QUE ALGUNA COSA CAMBIE EN VERSIONES POSTERIORES PERO LOS CONCEPTOS DE COMO SE USA SON LOS MISMOS.

Antes de nada avisar

La emulación de otras máquinas, en principio, es legal no hay ningún problema por tener un emulador de PlayStation, de la Nintendo NES o de un Amstrad CPC.

El problema está en las ROM (ya sean juegos, programas o BIOS) ya que normalmente es ilegal tener una ROM de un juego si no se tiene el juego original. Esto, además depende de cada país: en EEUU es ilegal, aunque en muchos sitios dicen que sí en WP-en aclaran que no si se trata de una ROM en chip; en España existe el derecho de copia de seguridad para programas informáticos (la leí hace tiempo, pero creo que no especifican diferencias en el soporte) y en Chile según leí en su constitución se permite la copia de programas sin más.

Pero por suerte hay algunos juegos de sistemas como pueden ser el Amstrad CPC o el ZX Spectrum (si no todos, gran parte de ellos) en los que que los propios poseedores de los derechos de los juegos permiten su uso de esta forma, sea legal o no, y afirman que no tomarán medidas; incluso algunos han colaborado por hacerlos accesibles.

He mirando más a fondo el tema, en principio quería encontrar una consola, que tuviera juegos legales para descargar, y casi me me decanto por la Atari Lynx... pero mejor ir por lo seguro y claramente legal... así que aunque sean una excepción en cuanto a la forma que hay que tratar los juegos vamos por las recreativas...

1.- El brikindans - Preparativos

AVISO: A partir de Emuteca 0.3.0.11, en el gestor de sistemas hay un botón que permite crear toda la estructura de directorios.

Lo primero que necesitamos es Emuteca, un emulador (en este caso el MAME) y un juego del sistema que emula (una recreativa)... y para tener ordenadito todo lo primero organicémonos haciendo unos directorios, yo recomendaría como mínimo el siguiente árbol de carpetas/directorios:
  • Emulación - Directorio para tener todos emuladores ordenaditos en una carpeta.
    • !Emuladores - Dónde meteremos los emuladores, cada con su propia su carpeta y subcarpetas.
    • !Utilidades - Donde irá Emuteca y otras posibles utilidades que se puedan tener.
    • Recreativa - Directorio principal para este sistema: Recreativa
      • Imágen - Carpeta principal para las imágenes
        • Título - Imágenes de la pantalla de título
        • Juego - Imágenes del juego en funcionamiento
      • Juego - Carpeta donde meter los juegos (ROMS)
Estos serían los básicos, en la imagen tenéis lo que sería un árbol de directorios completito (mi directorio base se llama Emuteca en vez de emulación, pero espero que no seis tan cafres como para confundirlo con el directorio Emuteca que iría dentro de !Utilidades), para rellenar todos los directorios del gestor de sistemas (menos BIOS que tiene otro propósito), y dónde irían otros sistemas como el Amstrad CPC o el Spectrum (con los mismo directorios internos por supuesto XD). Como truco, !Directorio base es una copia de toda las estructura de directorios de los sistemas vacío para copiarla cuando se quiere añadir otro sistema. Antes incluso tenía como iconos de las carpetas imágenes del sistema en cuestión... XD

Ahora bajemos el emulador. El elegido: MAME versión oficial y sin UI que para algo queremos probar como UI el programa, se baja de http://mamedev.org/release.html. Así que coge el primer archivo de la segunda tabla, el .exe es un comprimido autoextraible, no es una instalación tipo Windows. Así que descomprime el contenido en Emulación\!Emuladores\MAME.

El juego: Puede ser cualquiera de los que se listan aquí. Pero para referirnos en los mismos términos cojamos el que es más conocido Spectar, aunque este otro es más bonito... Le damos a la casilla de verificación de que entendemos que son para uso no comercial y apretamos en el enlace para bajarlo. Te descargará un zip, pues ese zip va en Emulación\Recreativa\Juegos sin descomprimir.

Y finalmente si todavía no tienes Emuteca, pues baja la última versión de aquí. El directorio donde se encuentre el programa la verdad es que da igual, pero mejor meterlo en Emulación\!Utilidades\Emuteca y hacer un acceso directo donde te venga en gana.

Configurando el emulador

Emuteca solo es un Front-End, no configura nada ni cambia la configuración que tenga emulador. Tan solo busca en un directorio archivos de la extensión que se le especifica, con ayuda de un fichero con información intenta reconocerlos para poner los detalles, busca en otros directorios imágenes que se correspondan para mostrarlas y cuando se pulsa dos veces sobre un juego descomprime (si es necesario) y ejecuta el emulador pasándole como parámetro dicho juego. Siendo más avanzados o no, todos los Front-End se basan solo en eso, pasar parámetros a otro programa (o como mucho editar un archivo de configuración).

Por tanto, hay que configurar el emulador para que funcione independientemente de si se usa Emuteca o no. Un tutorial de MAME para configurarlo bien del todo ocuparía tanto como la instalación del MediaWiki para comprender todas las opciones y elegir la correctas; todas ellas vienen descritas detalladamente el los archivos de texto de la carpeta docs del directorio de MAME pero como os conozco (y sobre todo siendo la versión fea de MAME) la solución rápida es:
  1. Ir a la carpeta donde está el MAME, y crear un nuevo archivo que se llame mame.ini (No os pienso decir cómo, pero si tenéis problemas seguro que lo que estáis haciendo es crear uno llamado mame.ini.txt o similar)
  2. Editar el archivo... con el bloc de notas y escribir (si la estructura de directorios es la misma a la expuesta a la de antes, sino entonces será mejor poner los directorios absolutos en vez de los relativos):
    rompath ..\..\Recreativa\Juego snapshot_directory ..\..\Recreativa\Imagen
  3. Guardar.
Ahora pulsa sobre mame.exe, si te sale un menu listando el juego puedes probarlo y ya de paso puedes configurar las teclas o incluso sacar ya de paso un par de capturas de pantalla (una del título y otra del juego en acción).

Pista: Cuando dice pulse OK para continuar, se refiere a eso, pulsar la O y luego la K; también se puede pulsar las teclas de flecha izquierda y luego derecha (a eso se refiere como joystick en caso de no tener uno...)

También como pista os doy un par de teclas para manejarse con el MAME:
  • ESC - Salir
  • Flechas - Movimiento de la palanca
  • Las de disparo no las sé, porque soy diestro y como las cambio ahora no me acuerdo cuáles son por defecto y no lo quiero buscar. (Nunca entenderé porque la gente se vuelve zurda cuando juega con un teclado)
  • F12 - Sacar foto.
  • P - Pausa
  • Tabulador - Menú (Configurar todas las teclas, configurar solo las del juego, configurar la máquina, historial de partidas, etc...)

Configuración de Emuteca

La configuración de Emuteca consiste básicamente elegir directorios y un par de opciones. Para el listado de roms, le vale con el directorio de los juegos, sus extensiones y las posibles opciones dependiendo del tipo de ROMs a manejar. Para ejecutar juegos, con decir donde está el ejecutable de emulador, los parámetros a pasar y asociar al sistema con el emulador también es suficiente. Todo lo demás son adornos.

La única parte difícil son los parámetros y tener claro como el programa debe manejar las ROM. Para ejecutar un juego directamente en MAME desde las consola, además de tener configurado bien el directorio de ROMs, hay que pasarle como parámetro el nombre clave del juego, para entendernos sencillamente se trata del nombre del zip pero sin la extensión de la siguiente forma:
mame.exe nombre_juego
Así de simple es el parámetro. Lo de como se deben manejar las ROM, bien veamos lo normal es que cada juego sean solo un archivo, pero en las recreativas esto no es así y suelen ser varios dentro un directorio/archivo zip. Además el MAME busca unos archivos muy precisos y con unas características para cada juego.

Sin embargo a desde el punto de vista de Emuteca esto no importa, tan solo le importa saber los zip que hay, sin interesarle lo que haya dentro de ellos, y como enlos zip el CRC32 es inestable (dos zip con el mismo contenido pueden tener CRC32 distintos) así que mejor indicar que en la base de datos a la hora de exportar e importar información se haga por el nombre del archivo. Sabiendo esto pasemos a configurar Emuteca.
  1. Ejecuta el programa.
  2. Si es la primera vez, aunque diga que abras el gestor de sistemas; vamos a abrir el de emuladores en el menú Emulador (así no hay que abrir el gestor de sistemas dos veces).
  3. En el nuevo formulario, seleccionamos MAME (si no está listado lo podemos crear pulsando el botón oculto justo arriba a la izquierda del todo) y lo marcamos, pasamos a la segunda pestaña (la primera por ahora no tiene uso práctico), en la parte superior elige el ejecutable del MAME. Y en Parámetros escribe "%ROMNAMENOEXT%" (sin comillas) puesto que lo que necesita como parámetro, como hemos dicho, es el nombre del zip sin extensión.
  4. Guardamos y pasamos al Gestor de Sistemas (Menú Sistema).
  5. Aquí marcamos y seleccionamos "Recreativa". En la primera página: no hace falta poner "zip" en Tipos de Archivos puesto que los zip los reconoce automáticamente (aunque en un futuro puede que lo cambie); marcamos No usar CRC32 y No buscar dentro de 7z/zip.
  6. Pasamos a la página Directorios; En Directorio juegos ponemos el directorio donde esté el directorio de juegos (pulsa sobre el botón de al lado y búscalo para no ponerlo a mano) y si se quiere los demás (por ejemplo el de las imágenes del juego).
  7. Pasamos a la página Emuladores y en la caja de arriba seleccionamos "Mame" (que es el emulador que configuramos en el gestor de emuladores)
  8. Guardamos. Y listo.
Pero... posiblemente no verás nada nuevo; si no está seleccionado en la caja de arriba "Recreativa" selecciónalo... y pulsa F5 (Actualizar lista). Si, al fin aparece algo es que tienes bien configurado al menos el directorio de juegos de dicho sistema, si pulsas sobre la línea aparecerá otra línea con casi lo mismo y si pulsas dos veces sobre esa nueva línea, y está todo bien, debería ejecutarse el juego en el MAME y todo.

Pues ya está esa es la función básica de Emuteca

¿Tanto para eso? ¿Una simple lista?

Bueno ahora que está todo configurado:
  1. Pulsando F3 podrás cambiar el año, compañía, versión, nombre y familia de los juegos (y si estás modificando una familia puedes cambiar la de todos sus hijos a la vez)
  2. Para añadir nuevos juegos tan solo hay que copiarlos en la carpeta y pulsar F5 (o actualizar) y aparecerán automáticamente. (Eso sí, acuérdate de exportar los datos antes e importar los datos después para no perder datos como la compañía o el año, si usas una versión más antigua a la 0.2.0.8)
  3. Las imágenes y textos van en sus respectivos directorios, y si tienen el mismo nombre que el fichero del juego o el fichero de la familia (por supuesto, con extensión de imagen que reconozca: png, jpg, bmp, etc.) se muestran automáticamente. Pulsando sobre su imagen en pequeño se muestran en el panel y si se pulsa dos veces sobre la imagen "grande" del panel entonces aparece en una ventana al doble de su tamaño (si es demasiado grande se puede arrastrar para desplazarla), para cerrar otro doble click o cerrar normalmente.
  4. Creo, si no recuerdo mal, unas pocas bases de datos de algunos sistemas de muestra para importarlos.

Preguntas que no pienso reponder

Pero... ¿para eso no sería mejor usar entonces usar el MAMEUI (MAMEPLUS, etc)?

Pues sí, si solo lo vas a usar para el MAME... por supuesto que es mejor usar esos emuladores, tan solo esto que descrito es un ejemplo de para que sirve. Si usas tienes muchos sistemas diferentes entonces se necesitará un Front-End.

Entonces ¿Por qué no usar MESSUI? sirve para muchos sistemas

Es una opción, pero es mucho más complicado de manejar, no funcionan todos los sistemas que emula (o lo hace mal), es más lento que emuladores específicos por separado, y si te parece complicado Emuteca mejor que busques en un diccionario que significa "mess" en inglés.... De hecho se podría usar Emuteca como Front-End para ejecutar el propio emulador MESS/MESSUI.

¿y otro Front-End genérico?

Normalmente por ahora casi ninguno reconoce/extrae los juegos de un 7z antes de llamar a un emulador... :P, si no lo necesitas porque no tienes los juegos agrupados en un 7z, no lo uses, seguro que los otros tendrán más funciones y estarán terminados. Por ahora el único que conozco que reconoce y extrae los juegos de los 7z es Quickplay.

Entonces usaré QuickPlay

Bien que haces, yo también lo uso.

¿Le vas a poner los iconitos que faltan, añadir tal o cual función?

Sí, si tengo tiempo y ganas. La principal función del programa está hecha, todo lo demás son adornos, hay muchas cosas que se que se podrían añadir/mejorar (algunas se pueden imaginar debido a los botones que no hacen nada XD ).

¿Vas a liberar el código fuente?

Ya veré, posiblemente sí. Aunque me da vergüenza que al alguien se pueda reir de mí y de lo mal que programo XD XD




Editado: Dando formato, añadiendo enlaces y otras cosillas

Editado 2: Quitando algunas cosillas (atajos sobre todo) que pueden hacer confundir a la gente que usa una versión posterior a la 0.1.2.6.

Editado 3: Aviso que hay un botón que permite crear la estructura de directorios de los sistema de forma automática.

domingo, 13 de abril de 2008

Emuteca 0.1.2.6

... O_o ¿de la 0.01pre a la 0.1.2.6?

Es que he cambiado el sistema de numeración :P, ahora se corresponde con la numeración interna del programa... como curiosidad el 6 es el número de veces que construido (build) todo el programa, lo que no quiere decir que no lo haya compilado infinitas veces más.

Así, que aquí vuelvo con una nueva versión con los cambios que he hecho esta semana al programa, tampoco son muy espectaculares o visibles, ya que la anterior hacía lo más básico (listar, descomprimir y ejecutar juegos emulados) y todo lo que le añada solo serán adornos o arreglillos de problemillas...

Descargar: Emuteca 0_1_2_6.zip

¿Qué hay de nuevo, viejo?

Pues así lo más visible e importantes es:
  • Eliminada opción Modo MAME, en el gestor de sistemas, que trataba los juegos de una forma un poco más especial para el formato que usa el emulador MAME y compatibles, para dividirlos en tres opciones separadas más específicas:
    • Opción No usar CRC32: Es decir, no usa una suma interna de los datos para identificar los juegos al exportar/importar datos sino que simplemente usa su nombre de fichero. Es complicado de explicar... básicamente es para usar en las recreativas (ya que cada juego debería estar en un fichero de nombre concreto) y con las imágenes de CD en las que se usa una Tabla de Contenidos (un .toc o un .cue, por ejemplo) como fichero principal, ya que este puede variar de formas infinitas con tan solo cambiar el nombre del fichero .iso o .bin.
    • Opción No buscar dentro de zip/7z: No busca las extensiones asociadas a ese sistema dentro de los archivos zip/7z, además lista esos mismo archivos como un juego. Básicamente para las recreativas, que junto a la anterior opción serían el borrado Modo MAME. También podría tener utilidad en un sistema en el que se usen varios fichero dentro de un zip, pero al emulador solo le interesa el nombre del zip, sin importar (o ya conociendo de antemano) lo que debe haber dentro. Esta opción también debería implicar No usar CRC32... (me lo apuntaré...)
    • Opción Extraer todos los ficheros del zip/7z: Esta opción especifica que a la hora de ejecutar un juego se extraigan todos los fichero contenidos en él. Se usa por ejemplo para las imágenes de CD, es decir en los sistema que usan CD interesará listar solo los .cue/.toc, sin embargo para ejecutar el juego habrá que descomprimir el .iso/.bin, los .ogg/.wav/.mp3 e incluso .sub . Por otra parte, no tiene que implicar lo de CRC32 ya que por ejemplo en los Pinball de Visual Pinball (Sí, hay emulador de Pinballs reales, dos ademas, y en tres dimensiones) se necesitaría esta opción pero se puede usar CRC32 para los .vpt.
  • Añadido posibilidad de exportar la lista de los juegos de un sistema. No confundir con exportar a la base datos, esta última es para rellenar los campos compañia, año, versión, &c de la lista; mientras que esta nueva es para crear una lista en HTML (para ver con el navegador), CVS (Para importar a Excel), RTF (Word/Wordpad), TXT (¿Bloc de nota?... mejor para parsearlo con otro programa...) y UNI (texto simple en UTF-16/UNICODE)
  • Ahora al minimizarse para ejecutar un juego también libera memoria física no usada pasándola a memoria virtual. Pero por contra ya no lo hace al lado del reloj, sino de forma normal.
Además he cambiado/quitado/añadido otras cosillas pero eso se encuentra en el archivo Cambios.txt

OJO: Cada vez que se cambia de sistema en el formulario principal tiene un Memory Leak, es decir no libera memoria no usada haciendo que el programa consuma más y más memoria (Aproximadamente 1kb por cada juego del anterior sistema) y me temo que el fallo no se arreglarlo si es producido donde sospecho. Así que si has cambiado entre muchas veces de sistema (unas 100) cierra y vuelve abrir el programa...

Podría poner un ejemplo práctico del funcionamiento...

Pues podría, pero me lo pensaré... :P, tal vez en la próxima entrada XD

lunes, 7 de abril de 2008

Emuteca 0.01pre

...a lo dicho, pecho; y a lo hecho, teta.

Bueno pues aquí está: Descargar. (Si da error es porque se ha sobrepasado el límite de descarga de 10Mbs a la hora y tendrás que esperar una hora para poder descargarlo)
Antes de nada también añadir que cuando la primera vez que se ejecuta dice que pulses F3 para configurar los sistemas, en verdad es F4, que me he dado cuenta del fallo después de compilarlo y comprimirlo. Hay bastantes opciones que no funcionan o no hacen nada (Gestor multimedia, Crear base de datos MAME) y hay botones ocultos que funcionan porque no les he puesto la imagen XD (Como grabar los textos de información o añadir/borrar emuladores/sistemas); así que si quieres algo similar pero completamente desarrollado entonces usa QuickPlay

Y el aburrimiento es ingrediente principal del progreso...

Hacer un programa sin más puede comenzar por varias razones: aburrirse, practicar programación (aunque la verdad es que no está hecho como debería...), tener un problema, etc.

Esta vez es tan sencillo como que el programa que usaba como front-end (el QuickPlay), en la caja de textos no hacía salto de línea, es decir se salía por la derecha; y que necesitabas un emulador asociado para listar los juegos.

Funcionamiento de la basura esta

Lo primero que hay que hacer es entrar al gestor de sistemas (F4 o a través del menú), ahí seleccionar aquellos sistemas que quieres que se muestren, configurar los directorios para cada cosa y las extensiones del tipo de archivos de los juegos separados por espacios (por ejemplo: "nes fds" para la Nintendo NES; "bin gen" para Sega Megadrive). Tan solo destacar la opción "Modo MAME" que indica una forma diferente de como tratar los ficheros de los juegos, ya que en vez de buscar dentro de los ficheros comprimidos, trata a los propios archivos como juego, no descomprimirlos al ejecutar y cuando se importan los datos en vez de reconocer el archivo por su CRC lo hace por el nombre del archivo, raramente se usará en otros sistemas que no sean las recreativas.

Una vez seleccionado el sistema, configurado como mínimo el directorio de los juegos y sus respectivas extensiones y darle a guardar, en la parte superior del formulario principal, hay una ComboBox con los sistemas seleccionados, elige el que quieras, pulsa Actualizar (F5) y si está bien configurado te saldrá la lista de archivos. Ahora si quieres puedes importar los datos (hay muy pocos puestos) de un archivo (Menú Sistema/importar datos) y seleccionar el archivo correspondiente que se encuentra en la carpeta Database del programa. Si reconoce algún juego le añadirá los datos que se tengan.

Si has configurado los directorios de las imágenes y estás tienen el mismo nombre que el archivo de los juego (distinta extensión por supuesto) o el de su familia se mostrarán automáticamente al seleccionar un juego.

Bueno... la lista sale, podemos continuar

Lo siguiente es configurar los emuladores, para ello abre el gestor de emuladores (F6) y si no tienes alguno de los que se lista pulsa el botón oculto más a la izquierda para añadir uno nuevo. Le pones el nombre y configura el archivo ejecutable y su línea de comandos...

Esto último es complicadillo, pero es la base de todo; casi todos los emuladores permiten ejecutarse directamente con un juego a través de la línea de comandos. Y hay hay que añadir los parámetros que se usarían a través de dicha línea de comandos.

Por ejemplo si un emulador se puede escribir desde MSDOS o la consola: NombreEmulador -juego "NombreJuego" para que lo ejecute directamente.

Tan solo hay que escribir -juego "%ROM%" en ese lugar para que funcione a la perfección, para la gran mayoría en ese apartado simplemente hay que poner "%ROM%" (con comillas) para que funcionen, otros como MAME hay que usar %ROMNAMENOEXT% ya que espera el nombre del archivo sin extensión.

En caso de que el emulador no acepte parámetros en la línea de comandos por ejemplo NeoRagex o 1964. Para el 1964 puedes definir su directorio de Roms donde se descomprimen los archivo (es en una carpeta temporal, pero elegida automáticamente... Normalmente será C:\Document and Settings\nombreusuario\Datos de programa\Temp, pero puede ser C:\Windows\Temp , C:\Temp, etc... depende del sistema) así que búscala mientras ejecutas un juego... Mientras que para el NeoRagex, que muy posiblemente el sistema NeoGeo estará en modo MAME, puedes definirle el directorio de Roms directamente donde estén los zip (es decir como estaba antes XD XD)

Una vez configurado y guardado, tan solo hay que configurar en el sistema que proceda que use dicho emulador por defecto, para ello en el gestor de sistemas, en la última pestaña seleccionar en la ComboBox de arriba dicho emulador (la caja de abajo por el momento no sirve para nada)

Y si todo esta bien configurado...

Pulsa dos veces sobre un juego (un hijo de la lista), lo descomprimirá si procede y se ejecutará directamente. ¡¡¡BIEN!!!

Porque usar este programa o QuickPlay

Muy sencillo cuando se tienen bastantes juegos estos se suelen comprimir, normalmente en zip esto no suele problema ya que la mayoría de los emuladores funcionan directamente con estos archivos; pero cuando se tienen aún más se comienzan a usar utilidades como GoodTools y GoodMerge, para identificar ls juegos y juntar varias versiones del mismo juego en un mismo archivo comprimido, y además posiblemente en 7z (se ahorra muchísimo más espacio) formato ya no reconocido por ningún emulador. Además mucho emuladores aunque se use un zip, no permiten elegir el juego dentro del fichero comprimido si hay varios.

Eso entonces se convierte en un engorro cada vez que se quiere ejecutar un juego, ya que hay que descomprimirlo primero antes de poner abrirlo con el emulador.

Luego por otra parte está el uso común de los otro interfaces, poder tener una lista con los juegos, sus propiedades, buscar (no implementado todavía) y ver una previsualización del juego.

Lo que falta

Bueno pues hay muchas cosas que faltan y me gustaría que tuviera (otra cosa es que lo haga), sin ningún orden específico y de forma rápida:
  • Extraer los datos del MAME para completar los datos de los juegos, así como de los archivos mameinfo.dat y demás ficheros relacionados.
  • Búsqueda de juegos en la lista.
  • Gestor multimedia que busque juegos sin imágenes, imágenes no usadas, etc.
  • ¿Bajar automáticamente la información de los juegos en algún sitio?, al menos la posibilidad de arrastrar imágenes a su lugar para que se graben en el sitio adecuado con el nombre adecuado
  • Asistente de emuladores: que detecte los distintos ejecutables y los configure automáticamente.
  • Reproducir la banda sonora de un juego al seleccionarlo (o ejecutar el reproductor que se precise), es decir archivos nsf, smc, etc.
  • Reproducir videos del juego seleccionado (mng o avi o mpg).
  • Iconos en la lista de juegos (de momento salen como si fueran una imagen normal en el panel)
  • ¡¡¡Bases de datos completas!!!
Además solucionar un ¿problema?: Cuando se cambia de lista de sistema, cada vez consume más y más memoria. He llegado a hacerle que consuma más de 60MB de RAM tan solo pulsando los cursores arriba y abajo cuando está seleccionado el ComboBox de sistemas cambiando el sistema, normalmente con la lista vacía y las imágenes de que no se han encontrado las imágenes solo consume unos 3Mb de RAM. Pero..., misteriosamente si se minimiza y se vuelve a restaurar se recupera toda la memoria perdida. Por cierto, se minimiza en la barra del reloj y para restaurarlo tan solo hay que pulsar su icono.

NOTA: Para editar la información de un juego, pulsa F3 y saldrá en la parte inferior unas caja de edición para cambiarlo. NOTA2: Cuando se pulsa F5 para refrescar los juegos (porque se han añadido o se han quitado), se borran todos los datos de los que había. Para no perderlos, primero expórtalos a un fichero con "Sistema/Exportar datos", pulsa F5, y luego impórtalos con "Sistema/Importar datos". Al exportar datos... NO se borran los datos que ya contiene el fichero (como mucho se modifican).

viernes, 7 de marzo de 2008

2.500 Google-resultados

o la historia de como conseguirlos en 2 años.

Cuando hice mi primera edición en Inciclopedia, la búsqueda de "Chixpy" en Goooooogle, tan solo ofrecía un par de páginas, en alemán y además trataban sobre un perro con dicho nombre. Ahora ofrece unas 2.500, las cuales se reducen a unas doscientas tras los cuales pregunta si se desean ver los resultados omitidos dentro de una misma web. Para ser sincero, no todos los resultados son míos, pero sí la inmensa mayoría.

Los grandes resultados

Google ordena los resultados dependiendo de la versión local que use, así que me basaré en Google España. La primera página es un gran resumen de los 200 resultados.

Lo primero en salir es Wikipedia por supuesto, concretamente mi página de usuario, a la que le suceden Inciclopedia y Wikijuegos; siendo la gran mayoría de los resultados mis participaciones directas en el mundo wiki más luego sus respectivos servidores espejo o mirrors.

Luego aparezco en Batallitas.com, página con juegos flash y juegos cuestionario de Excel. De cuando en cuando hecho una partida al Yeti o me bajo alguna hoja de cálculo.

El ataque de los clones

Como ya he dicho no todos los "Chixpy" son manejados por mi persona, bien pues aquí básicamente aparecen esos otros Chixpy.

Aparece eBay, al parecer se trata de una persona de Madrid y en principio creo que se trata de una mujer por los modelitos y ropa que compraba (que más que tapaban... destapaban XD) aunque últimamente ya no estoy tan seguro, ha tenido algún rifirrafe con algún vendedor/comprador pero parece legal.

Tras esto, otro Chixpy distinto, ésta vez chileno, en una comunidad sobre el juego Habbo Hotel, no he mirado más allá que la página de usuario.

Finalmente se trata de un nombre de dominio con extensión .tk, estos son de lo registros esos que se cogen para dar la campanada y revenderlo, incluso esto se realiza mediante bots, ven una palabra, la buscan y si ofrece x resultados lo registran y ponen un mierda buscador; la verdad es que hace poco que fue registrado. Antes los .tk se podían "registrar" gratis (a cambio de publicidad en la página, claro) y estuve a punto de hacerlo...

Infringimiento de copyright

Suponiendo que no se ha cambiado la configuración de Google y se muestran solo 10 resultado habremos llegado al final de la primera página donde encontramos que Google nos avisa que ha eliminado un resultado porque ha recibido un aviso de infringimiento de copyright. No sé a que se debe ni porqué, pero es muy gracioso: Hazte una página, infringe algún derecho de autor, que Google reciba una queja y consigues publicidad gratuita y un enlace a tu página en todas las páginas los resultados relacionadas... XD.

Miscelánea

A partir de aquí se comienza a desbocar todo:
  • Primeros blogs, el de Playsonic que hace refencia a mí en una entrada y los demás que enlazan a este blog (sin embargo, este mismo blog no aparece directamente, ni lo hará)
  • Youtube, donde subí un vídeo sobre un juego (y que a partir de aquí aparecerá en muchas páginas que "roban" vídeo de Youtube)
  • Más resultados de Wikia y otras Uncyclopedias, aparece también ChixpyBot. También mirrors de Wikipedia, la carta de Walterzum, &c.
  • Luego quejándome en un foro de mi pueblo sobre la página del ayuntamiento... XD XD
  • Un par de participaciones en MusicBrainz, tanto en su IRC como en su wiki indicando como se deben poner los títulos en inglés; es una base de datos sobre álbumes musicales y tienen un programa llamado Picard para reconocer canciones y organizar la colección de música.
Estos son los resultados más importantantes y esperados por mi parte, ninguna sorpresa en especial... a partir de aquí no paran de ser copias o ampliación de todo lo anterior.

Curiosidades

Sin embargo estos ya son más curiosos o imprevistos:
  • Una tabla de records de un Tetris, invertido (además las teclas también lo estaban) que además se puede ver la repetición.
  • Un comentario en un video de un reality show, el cuál me indicó MVP14 en mi discusión de Inciclopedia y que a la postre ha hecho que escriba esta entrada. Aclaro que este tampoco soy yo, y que como indiqué a MVP14 puede que sea la de Madrid por descarte....
  • La conversación de Góngora entre Doctor Grijander y yo, totalmente trasgiversada y censurada... :P
  • ¿Una wiki en pruebas con un enlace a mi página de usuario en Inci?
  • Hay un montón de sitios donde se ha copiado "Plantilla:Expansible" dándome créditos a mí..., aclarar que esa plantilla la copie originalmente de Uncyclopedia (ver MediaWiki:Common.css en Inci o WJ) y fue hecha por Dawg. Si bien yo amplié un poco más el concepto añadiendo otra clase que pudiera insertar párrafos y que actuando conjuntamente simule una barra de menús como tengo en mi discusión.
Y hasta aquí creo que está todo...

martes, 5 de febrero de 2008

Yo y Linux.

Este no es Miguel Bosé pero canta de forma parecida Y el burro delante para que no se espante

Hacía como 3 o 4 meses que no arrancaba en Linux (Kubuntu exactamente), no podría decir las razones exactas:
  • Puede ser porque como reinstalé Windows y se borró el GRUB del sector de arranque pues por vagueza de no reinstalarlo (y mira que es sencillo);
  • o simplemente porque no me acaba de atraer, no es un secreto decir que nunca me a gustado usarlo.
La cuestión es que hace un par de días días me dije... "Bah, pues voy a probar Xubuntu ya que dicen que va mejor o algún otro con gestor de ventanas ligerito...". Así que manos a la obra...

Llegas a la página oficial, vas al página de descargas y bueno pues ya que estamos en vez de la Dapper (que es la versión que tenía con Kubuntu) pues la otra, además me lo bajé por BitTorrent que me da lo mismo. Uhm... La versión Desktop CD (es decir que se instala mientras navegas, juegas y enredas con el sistema operativo) requiere mucha memoria... mal empezamos, bueno versión alternative.

Mientras buscando descubres que hay otras distribuciones basadas en Ubuntu, no oficiales, con otros gestores también ligerillos, como Fluxbuntu pero esos avisos en la página de descargas indicando un par de cosillas que había que arreglar después de la instalación pues como que no me daban confianza.

Ya de paso descubres otras distribuciones como DSL que están basadas en Knoppix, y otra modificación del anterior que traía gestor de ventanas, ¡coño! este con máquina virtual y todo, va pues a probar que como es pequeño me da tiempo a probarlo en lo que termina el otro... Si bueno me dio tiempo a descargarlo, pero lo que es probarlo... pues también, pero en lo que arrancaba el BOCHS pues se terminó de descargar... bueno tenía buena pinta... lo cerré y lo borré.

Hala a tostar el CD de Xubuntu...

Bueno, instalamos

Bueno, cederrón tostado, reiniciamos... arrancamos desde él y esto ya me lo sé, que no me peleé la otra vez con el anterior... ¬_¬U, como cogí la versión alternate pues la instalación es aburrida, no puedes jugar al solitario... ni navegar por internet pero bueno, rellenamos todo como debe... asignamos la partición anterior con Kubuntu para que la formatee y se instale... (coño, me las reconoce como SCSI, bueno... mientras que me las reconozca automáticamente luego y no tenga que hacerlo a mano como el anterior...) (Coño2: Me da un par de avisos sobre unos ficheros en las otras particiones, bueno ya le pasaré el Scadisk)

Copiando programas, aceptando que se baje las traducciones a español de internet (esto es como Windows XP, no ha comenzado a instalarse y ya está buscando una conexión a Internet, al menos este se supone que no es para enviar información privada...), bien... ningún problema... esperamos. Sacabó. Mira que bien, éste no me da error al instalar el GRUB. Reiniciamos.

Rearrancando... bien... la barrita... chulo el dibujo del ratón... ops, se quita y sale la consola unos cuantos warnings.. Que si el sector de arranque fue cambiado en el futuro... XD XD XD XD Fixed, que si la copia de seguridad del sector de arranque no se corresponde con la actual O_o (coño 3 si lo acabas de cambiar tu mismo...), oooops el fsck (el ScanDisk de Linux) ha detectado algunos archivos corruptos en las otra particiones (los mismos de antes)... dice que no lo va a tocar... Mierda, pero hay otros que si que a tocado y a renombrado unos tal .r.css bueno, sé que son y donde los usaba... pero no sé que problema hay con el nombre... WinXP nunca se me ha quejado... y viendo porqué nombre les ha puesto me temo lo peor..... pese a esto sigue cargando...

Yo y el porqué es malo tener una tarjeta gráfica mejor que todo el ordenador todo junto

Bien, por fin, usuario, contraseña (esto lo tengo que quitar...), estooo... (chispazo que pegan las pantallas cuando se cambian a resolución no muy estándar) la pantalla está desplazada a la izquierda y es mucho más alta que ancha... ¿que resolución más rara no? 1200x900 o algo así... bueno la centramos, desimantamos, que esto ha arrancado, ¡hala! 150Mb actualizaciones... bueno pues enredemos un poco mientras... quito el login, configuro el GRUB, cambio el color de la ventanas...

Listo termino de actualizar y hay que reiniciar, lo primero tarjeta gráfica, ya verás que risas... ... ... ... pues no, no hubo cojones a configurar la targeta gráfica (Una Ati Radeon 9250) , cuando intentaba usar sus drivers se desconfiguraba hasta el monitor... Probé de todo, los driver propietarios y los no propietarios, editando a mano, a maquina que se desconfiguraba todo. Lo más que conseguí es llegar ha hacer funcionar el programa de prueba glxgears a más de mil fps, pero se movían menos que los ojos de la barbie y los salvapantallas tenían una facilidad de movimiento... .

Hasta probé a reinstalar el sistema operativo de nuevo (exactamente los mismos pasos que antes). Mismo resultado... ¡pues a la mierda!.

Nos podrán quitar la aceleración 3D, pero nunca ¡¡¡la libertad!!!

Me sentía con ganas de tener Linux de todas formas. ¿Que el Desktop CD de Ubuntu necesita 300MB de RAM? pues pa chulo mi pirulo que solo tengo 192MB. Bajo el Cd correspondiente, mientras paso el Scandisk a los discos duro... no problem, como suponía... pero por si acaso borro algunos de los ficheros que daban problemas, puedo prescindir de ellos...

Coño 4, como me lo suponía los archivos que a renombrado Xubuntu no los puedo borrar, ni abrir, ni nada, ni siquiera sus carpetas se pueden borrar, desde la consola... tampoco... si ya sabía yo que un \0 en el nombre de un archivo..., me estudio un poco mientras se termina de bajar el CD (esta vez por descarga directa)... reinicio a prueba de fallos Windows para hacer un Scandisk a C que tenía pendiente y pruebo a borrarlos con el mismo resultado... :'( bah, pues probemos el Ubuntu, tostando otro CD... y a instalar.

Arrancar un Desktop CD con 196Mb de RAM = eternidad^2

Hala en lo que arranca el CD, a estudiar otro poco... u otro mucho. La verdad es que creía que la grabadora de DVD iba a partirse en pedazos.... Las instalaciones de Linux que conozco no son delicadas con las grabadoras precisamente, pero este arranque desde CD ya era pasarse... tardó como 20-30 minutos. Ya vemos el menu aplicaciones, que curioso xcfe la verdad es que simulaba muy bien al Gnome pero con un ratón en el medio, damos al icono instalar, rellenamos los pasos previos... y esta vez estudiar pues navegamos por internet (más que navegar iba en patera por el esfuerzo de instalar un sistema operativo), incluso he escrito unas líneas aquí un poco más arriba. después de mucho rato termina y reiniciamos.

¿Porqué cuando una cosa va bien lo demás falla?

El arranque exactamente lo mismo que con Xubuntu, incluso el mismo problema de que se ha editado el arranque en el futuro XD XD. Y misma superresolución chupiguay.

Antes de nada, (mejor dicho después de 200mb en actualizaciones) metámonos con la tarjeta gráfica... ¡¡¡Oh!!! la ha detectado más o menos bien, probemos a ver las dichosas rueditas... coño no van a 1000, eppur si muove fluiditili, probemos con el otro driver más específico, reinicio al canto, ¡¡¡aggh!!! a pesar de ser más específico van más lentas... ya ni probé los drivers propietarios de ATI (Aunque la verdad es que me fueron muy bien en Kubuntu), pero esto va... va lento... quitamos los efectos especiales, el compiz y demás... pues no, pues esto sigue igual :'(, incluso solo con al FireFox le costaba abrir las páginas, las películas se veían como en mi Pentium II a 333Mhz. Al final no merece la pena

Moraleja

He perdido unas cuantas (muchas) horas en algo que me había dado la venilla hacer, porque sí, porque si dicen que es más rápido, más seguro y más potente (que ya me dirán a que se refieren con eso) pues habrá que probarlo. Yo he tenido varios contactos con Linux y normalmente reafirman mi opinión sobre ese sistema operativo, es para lo que es y punto, en una casa privada no pinta nada. Desde las versiones de Mandrake y Debian que había probado anteriormente, me hice dicha opinión y según lo pruebo más se confirma que estaba en lo cierto. Que la gente solo usa el ordenador para:
  1. Jugar.
  2. Navegar por Internet y abrir el Messenger (si tienen internet, claro).
  3. Bajar películas.
  4. Escribir cartas de amor. (Esto sí, nunca faltará la última versión de MS Office)
  5. Usar un algún programa específico para trabajar... que casualmente solo suele existir en Windows.
De hecho la única vez que más o menos me había gustado ha sido esta vez que tenía Kubuntu y más o menos tiraba, cualquier cosa con más gráficos que el armagetron era injugable, con un solo escritorio y no más de 4 ventanas y el Amarok (ohhh, ese programa me ha enamorado), tenía servidor FTP y demás (porque tenía un Mediawiki), incluso funcionaban el MAME y SNES9X de forma aceptable (aunque bastantes más lentos que en Windows).

Os diría un montón de razones de porqué veo que es mejor Windows que Linux para la gente corriente, pero esto ya es demasiado largo XD XD XD

miércoles, 23 de enero de 2008

La digievolución del HTML: HTML5

Según veo en Barrapunto, la W3C ha sacado un borrador de lo que van a ser la especificaciones de la siguiente versión, y como paso de leerme todo el tocho que es pues lo que he leído un poco por encima es un documento con el borrador de las diferencias entre éste y el HTML 4, que es más cortito ;-) .

Un poco de historia

Cuando allá por principios de los años 1990 un científico del CERN (que no tengo ganas de buscar el nombre) ideó el Lenguaje de Marcas de HiperTexto su idea era muy simple: poder escribir un documento de texto dentro del cuál algunas partes pudieran ser pinchadas o seleccionadas para ver automáticamente otro texto y también la posibilidad de definir algunos formatos como: títulos, cursiva, negrita, tablas e imágenes, por ejemplo.

Bueno, una idea la mar de sencilla tiene sus complicaciones sobre todo cuando se definen formatos que tienen ambigüedades y no se definen comportamientos estándar ante esas situaciones. Estas cosas se fueron limando a base de cutre-parches con el paso del tiempo a pesar de los líos Mozilla por aquí, IE por el otro lado... ejem, cough, cough, llamémoslo Gecko y Trident. Se que existe Presto, KHTML y demás pero me referiré a solo a los dos grandes.

Además salieron algunos estándares anexos para mejorar el panorama: los estilos CSS (para definir la estética de los elementos), el XHTML (para dar una estructura solida de jerarquía y relación entre elementos mediante XML), el DOM (para estandarizar el manejo de elementos con el JavaScript) y demás. Haciendo que una de las ideas más sencillas del mundo se convierta en algo bastante más complejo.

Presentando el HTML 5

Bueno según leo el documento con las diferencias, tras una pequeña exposición como la que hecho yo, lo primero que avisa es de que se trata de un borrador y faltan por concretar algunas cosillas.

Posteriormente dice que aunque intenta ser compatible con la forma como manejan actualmente los elementos los navegadores (mejor dicho motores de renderizado), pues que deben implementar cosas antiguas aunque no estén soportadas por el nuevo estándar (ni que necesitaran permiso para hacerlo... ¬_¬U). Lo importante, según parece, es que se ha medio bajado los pantalones diciendo: "No decimos como el navegador debe interpretar el HTML, sino como ha de ser escrito", aunque por otra parte es la dura realidad y siempre lo ha sido así aunque no se reconociera; pero lo veo como buena forma de meter presión si el IE no es totalmente compatible por lo menos haz que el Frontpage (o como se llame ahora) lo sea XD (ojo que los productos Mozilla tampoco están libres de pecado...).

Tras esto, hay una pequeña novedad diciendo que las especificación no se considerará acabada hasta que haya dos implemenciones completas de dicha especificación, lo que quiere decir: que hasta que no haya dos motores distintos que la soporten totalmente no dan por definitivo el chiringuito. Cosa que cambia radicalmente puesto que antes se definía el estándar y luego que cada uno haga lo que pueda (y quiera) con él. Nunca entendí esa manía de hacer estándares sólo en papel...

De aquí pasamos a la sintaxis y definición del documento, la cuál puede ser mediante HTML normal (HTML 4 o XHTML) o mediante XML, y luego añade otras cosillas sobre la codificación de caracteres y que se requiere escribir <!DOCTYPE html> al principio del documento para diferenciarlo.

Cosas nuevas

HTML 5 añade nuevas cosillas, todas orientadas a las estructura jerárquica del documento y función del texto que rodea, algunos son:
  • section: Para indicar secciones (para usarse junto con los títulos h1-h6).
  • article: Para indicar artículos distintos dentro de la misma página.
  • header: Encabezado de la página.
  • footer: Pie de página.
  • dialog: Para marcar diálogos junto a dd y dt (Nunca entenderé porque usar las listas de definiciones para estos menesteres)
Hay otros cuantos y sobre todo en lo relacionado con los formularios.

Cosas que nos cambian

Han cambiado significado de algunas etiquetas que indicaban estilo, es decir negrita, itálica, etc. pasan a indicar qué es el texto que rodean, pero tampoco es que corroan mucho ya que definen su uso habitual...:
  • hr: Pasa de ser una simple linea horizontal a: "Un cambio temático en los párrafos" (¿dejará de ser una línea?).
  • b: En vez de indicar texto en negrita, para decir que el texto debe ser estéticamente distinto como palabras clave.
  • strong: Pasa de ser la alternativa larga de b para escribir en negrita para representar importancia en el texto.
  • i: Al igual que b en vez de decir que es texto en cursiva ahora tan solo indica que el texto debe ser estéticamente distinto porque se refiere a términos técnicos, palabras en otro idioma, etc.
Hay otros mas. Aquí la importancia radica en que se pasa de definir el formato del texto a definir la función que tiene ese texto.

¡Ohh! ¡Nooo! Nos quita esto

Por otra parte HTML 5 hace un purga... y vaya purga O_o . Quita un montón de elementos (y muchos muy usados y conocidos) por tres razones
  1. La sencilla razón que solo indican estilo y que eso lo debe manejar el CSS.
    • big: Letra grande.
    • center: Centrar.
    • font: Cambiar fuente (¡¡¡ALELUYA!!!).
    • strike: Tachado.
    • tt: Texto monoespaciado.
    • u: Subrayado.
  2. Siempre fueron un coñazo (esto lo digo yo, aunque las uso y sinceramente les puedo llegar a ver su utilidad si quieres hacer páginas dináminas a mano... tengo una lista de pelis tuti guay en HTML...). La escusa es la accesibilidad y usabilidad.
    • frame, frameset y noframes: Para hacer frames (por ejemplo cuando usas el traductor de Google con una página te crea un frame en la parte superior)
  3. Porque no son usadas, crean confusión o pueden ser hechas de otra forma
    • acronym: Crea confusión y hace lo mismo que abbr. Así que a usar esta última y arreglado.
    • applet: Debe usarse object.
    • isindex: Hay otras formas de acceder a los formularios.
    • dir: debe usarse ul.

Conclusión

Bueno además de los cambios en las etiquetas indicadas, hay bastantes más respecto a los atributos que pueden tener dichas etiquetas y paso de comentar que esto ya es muy largo.

En esta evolución se ve claramente que la intención es quitar todas marcas de formato del texto a cambio de que sólo sean para indicar la función de ese texto dentro del documento que de hacerlo bonito ya se encargará el CSS... Para poner un ejemplo, es como si en el Word os quitan los botones de subrayado, negrita, centrado, la caja-lista de fuentes y su tamaño, etc. y os dejan tan solo con una caja-lista de estilos de texto y punto, luego aparte defines el formato para cada estilo y ya está (Que por cierto Microsoft y OpenOffice.org ya bien podrían hacer esto... XD).

Ahora asaltan las dudas:
  • ¿Cuanto tardará IE en soportarlo de forma... aceptable? No son muchos cambios... pero, sinceramente, no pongo en duda que Mozilla u Opera ya llevan unos meses pensando (o incluso desarrollando) para ir adaptando lo necesario... ¿5- 10 años? Pero mucho a mi pesar la gente sigue usando IE6... (ahora que se tenía la excusa de: No se soportan versiones pirata XD)
  • Si todavía ni siquiera se intentan cumplir los estándares de HTML 4 (XHTML mejor ni hablar...) ¿Como mascamos el HTML 5?
  • ¿Hasta que punto se eliminan los estilos? ¿Una página sin CSS asociado debería mostrarse como texto llano sin más? Bueno, en verdad supongo que se mostrarán como ahora... pero en teoría si pongo que los títulos de primer nivel sean solamente rojos entonces no deberían tener un tamaño más grande de lo normal como tienen por defecto...
Bah, me he aburrido de dar la chapa... curiosa y paradójica entrada en la que se habla sobre cumplimiento de estándares cuando de entrada no los cumplo ni yo... XD XD