Publicitat
Publicitat
PUBLICITAT
Afegeix un programa

Contingut

[modifica] Introducció

Aquest document conté l'especificació tècnica del CatalanitzadorPerAWindows

El codi font es troba a Github.

[modifica] Arquitectura

Algunes decisions importants a nivell d'arquitectura:

  • El programa està fet en C++. El motiu és perquè ara és la tecnologia que permet fer aplicacions lleugeres i compactes i que es poden executar en totes les versions del Windows, inclús les més antigues.
  • L'aplicació té una definició interna de connectors (classe Action.h) que defineix les accions bàsiques que totes les operacions d'instal·lació i configuració han de suportar. Afegir suport per nous paquets d'idioma o canvis configuracions és tant senzill com implementar aquesta classe abstracta (veure exemple del paquet d'idioma del Windows).
  • Existeix un únic binari per tots els sistemes operatius en totes les edicions. Això vol dir que el mateix binari ha de funcionar en totes les versions del Windows i en entorns de 32 i 64 bits.

[modifica] Informació de depuració

Informació a tenir en compte durant la depuració de problemes:

  • El Catalanitzador genera un fitxer de registre amb el resultat de totes les accions que ha realitzat. Aquest fitxer es diu CatalanitzadorPerAlWindows.log i es troba al directori temporal del sistema al qual podeu arribar-hi fent: cd %temp%. Aquest és un fitxer important per al diagnòstic de problemes.

[modifica] Accions

[modifica] Paquet d'idioma per al Windows

Prerequisits:

  • Si la llengua del Windows no és l'espanyol o el francès es mostra un missatge d'avís i no es pot instal·lar el paquet.
  • En entorns de 32 bits si l'usuari no té Windows XP, Vista o 7 es mostra un missatge alertant que no hi ha disponible paquet d'idioma per aquesta versió.
  • Si l'usuari té 64 bits i no té un Windows 7, es mostra un missatge alertant que no hi ha disponible paquet d'idioma per aquesta versió.

Es considera necessària:

  • En sistemes Windows XP si la clau de registre HKEY_CURRENT_USER\Control Panel\Desktop\MUILanguagePending no és 403.
  • En altres sistemes, si la clau de registre SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ca-ES no existeix.

Paquets d'idioma usats:

Opcions postinstal·lació:

  • En sistemes operatius diferents al XP (Vista i 7 en 32 i 64 bits) la clau de registre HKEY_CURRENT_USER\Control Panel\Desktop\PreferredUILanguages es configura a 'ca-ES' per preseleccionar el català com idioma per defecte.

[modifica] Paquet d'idioma i corrector per al Microsoft Office

Prerequisits:

  • Cap

Paquets d'idioma usats:

Execució:

  • En 2003 es desempaqueta primer el CAB i després s'executa
  • En 2007 i 2010 s'executa el paquet d'idioma directament

Opcions postinstal·lació:

  • A la clau del registre Software\\Microsoft\\Office\\%s\\Common\\LanguageResources on %s és la versió de l'Office
    • S'estableix la clau UILanguage al valor 1027 per deixar el català com a llengua per defecte
    • En Microsoft Office 2007 i 2010 clau FollowSystemUI s'estableix a Off perquè s'ignori la llengua del sistema sigui quina sigui i s'utilitzi la configurada per l'Office.

[modifica] Paquet d'idioma per a l'Internet Explorer

Prerequisits:

  • Generals
    • Si el sistema operatiu no és Windows XP, Windows Vista o Windows 7 es mostra un error explicant que el sistema no és compatible.
    • Si l'Internet Explorer no és 6, 7, 8 ó 9 en 32 bits o bé 9 en 64 bits es mostra un missatge dient que la versió és desconeguda.
  • IE 6
    • En Windows XP no es pot seleccionar l'acció ja que l'IE 6 catalanitza com a part del paquet d'idioma.
  • IE 7
    • En Windows XP cal seleccionar el paquet d'idioma de Windows per poder-ho seleccionar. En Windows Vista no es pot seleccionar l'acció ja que l'IE 7 catalanitza com a part del paquet d'idioma.
  • IE 8
    • En Windows XP i Windows Vista cal seleccionar el paquet d'idioma de Windows per poder-ho seleccionar. En Windows 7 no es pot seleccionar l'acció ja que l'IE 8 catalanitza com a part del paquet d'idioma.
  • IE 9
    • En Windows Vista i Windows 7 cal seleccionar el paquet d'idioma de Windows per poder-ho seleccionar.

Nota: Es considera que els següents casos no són possibles:

  • IE 6 sota Windows Vista ja que aquesta versió de Windows ve amb IE 7
  • IE 6 sota Windows 7 ja que aquesta versió de Windows ve amb IE 8
  • IE 7 sota Windows 7 ja que aquesta versió de Windows ve amb IE 8
  • IE 9 sota Windows XP ja que no és compatible

Paquets d'idioma usats:

[modifica] Configura la llengua de navegació a l'Internet Explorer

Prerequisits:

  • Cap

Es considera necessària:

  • Si el primer valor de la clau Software\Microsoft\Internet Explorer\International\AcceptLanguage no és ca-es o bé ca, és a dir, si el català no la primer llengua de navegació.

Execució:

  • Afegeix a Software\Microsoft\Internet Explorer\International\AcceptLanguage el codi d'idioma ca sempre com a primer, eliminat-lo si estava en una altre posició, i mantenint els altres idiomes que l'usuari tingues.

[modifica] Configura el català com a llengua del sistema

Prerequisits:

  • Cap

Es considera necessària:

  • Si la clau del registre HKEY_CURRENT_USER\Control Panel\International\Locale no és 403.

Execució:

[modifica] Configura el català com a llengua d'escriptura

Prerequisits:

  • Cal tenir un Windows Vista o 7 instal·lat
  • Si no hi ha el català, es comprova que es tingui un teclat espanyol tradicional o modern (codis '40c' i 'c0a')

Es considera necessària:

  • Quan el català no està instal·lat o no és la llengua predeterminada

Execució:

  • Instal·la el teclat català i el posa per defecte

[modifica] Configura la llengua de navegació al Firefox

Execució:

  • Obtenim la ubicació del fitxer profiles.ini demanant al sistema on es troba el directori de sistema CSIDL_APPDATA i afegint \Mozilla\Firefox\profiles.ini.
  • Llegim el profiles.ini fitxer Path i trobem el primer directori del perfil.
  • Cerquem el fitxer prefs.js en directori del primer perfil que trobem
  • Cerquem la preferència intl.accept_languages dins del fitxer, afegim el català en primera posició si no existeix o creem la línia si no hi era.

[modifica] Configura la llengua de navegació al Chrome

Es considera necessària:

  • Si el fitxer %camí%/User Data/Local State conté al bloc intl la clau app_locale no conté el valor 'ca'. Aquest valor indica el locale de l'aplicació i predetermina la llengua de navegació al català.
    • Si això no és cert, el fitxer User Data/Default/Preferences ' conté al bloc intl la clau accept_languages no conté el valor 'ca' o bé simplement no existeix.

[modifica] Servidor

[modifica] Descripció del servei Web

Hi ha una URL on es connecta el Catalanitzador i fa un POST en XML de totes les dades recollides durant l'execució del programa. Aquestes dades es reben al servidor, s'analitza el XML, i s'emmagatzema a la base de dades a les taules corresponents.

El servei web a l'analitzar l'XML mira si la versió de l'aplicació i sistema operatiu ja estan a les taules corresponents, o crea una nova entrada per elles, és a dir, aquestes taules es van creant a mida que són necessàries (dades transaccionals no de domini).

[modifica] Model de dades

Taula: applications

Objectiu: Conté les versions existents del Catalanitzador

Camp Tipus Descripció Exemple
ID int (autoincrement) Identificador únic d'aquest registre 1 (pel registre 1)
MajorVersion tinyint Versió major del Catalanitzador 1 (si la versió del Catalanitzador és 1.23)
MinorVersion tinyint Versió menor del Catalanitzador 2 (si la versió del Catalanitzador és 1.23)
Revision tinyint Revisió del Catalanitzador 3 (si la versió del Catalanitzador és 1.23)

Aquesta taula tindrà una entrada per cada versió que alliberem del Catalanitzador, uns 4 ó 5 elements com a màxim per cada any durant el qual el desenvolupament sigui actiu.

Taula: operatings

Objectiu: Conté les possibles versions de sistemes operatius

Camp Tipus Descripció Exemple
ID int (autoincrement) Identificador únic d'aquest registre 1 (pel registre 1)
OSMajorVersion tinyint Versió major del sistema operatiu 6 (Del nombre 6.1 que correspon a Windows 7)
OSMinorVersion tinyint Versió menor del sistema operatiu 1 (Del nombre 6.1 que correspon a Windows 7)
SPMajorVersion tinyint Versió major del service pack 3 (Del nombre 3.0 que correspon al SP3)
SPMinorVersion tinyint Versió menor del service pack 0 (Del nombre 3.0 que correspon al SP3)
SuiteMask tinyint Tipus de sistema operatiu Identificador numèric (és Ultimate, Premium, etc).
ProductType int Tipus de producte Identificador numèric (VER_NT_WORKSTATION, etc).
Name text Nom del sistema operatiu Per exemple, Windows XP
Bits tinyint Bits del sistema operatiu Per exemple, 32 o 64 bits

Aquesta taula tindrà unes quantes dotzenes d'elements per identificar de manera única totes les versions de Windows.

Taula: sessions

Objectiu: Conté cada instància d'execució del Catalanitzador

Camp Tipus Descripció Exemple
ID int (autoincrement) Identificador únic d'aquest registre 1 (pel registre 1)
Date DATETIME Data en que es va crear l'entrada a la base de dades (execució de l'instància)
ApplicationsID int ID a la taula applications de la versió de Catalanitzador usat en aquesta sessió
OperatingsID int ID a la taula operatings del sistema operatiu usat en aquesta sessió
LogFile text Conté un bolcat del contingut del fitxer CatalanitzadorPerAlWindows.log per poder depurar l'execució. Aquest fitxer no hauria de tenir una mida entre 4 i 5Kb. Potser en el futur podria doblar com la seva mida com a molt.
guid  ? Guid únic per la màquina on executem que ens permet diferenciar entre execucions noves a un PC i sessions al mateix PC Exemple '6eddb85f-ba6f-49ab-a0e8-76c6d67cd2f4'

La taula sessions té relacions 1 to 1 amb actions, operatings i versions.

Aquesta taula tindrà una entrada per cada post que es faci al servei web, és dir, per cada execució del Catalanitzador. Aquesta taula tindrà molts elements.

Taula: actions

Objectiu: Conté un conjunt d'accions executades per una instància

Camp Tipus Descripció Exemple
SessionID int ID a la taula sessions que indica a quina sessió pertany aquesta instància d'acció
ActionID int ID únic de l'acció executada (enum, 1 = windows lpi, 2, etc)
Version char (16) En algunes accions, com el paquet d'idioma de Microsoft Office, és interessant saber la versió sobre la que s'ha executat l'acció. Un camp lliure de text.
Result int Enum del resultat (NotSelected, DoesNotApply, Successful, FinishedWithError)

La taula accions té relacions many to 1 amb sessions.

Aquesta taula tindrà tantes entrades com l'entrada de sessions multiplicades pel nombre d'accions que suporti el Catalanitzador. Si el Catalanitzador suporta 5 accions i tenim 10 sessions, tindria un total de 50 registres. És la taula que tindrà més entrades del model.

Taula: inspectors

Objectiu: Conté dades que recollim de l'usuari per poder prendre millors decissons, per exemple versions d'aplicacions instal·lades.

Camp Tipus Descripció Exemple
SessionID int ID a la taula sessions que indica a quina sessió pertany aquesta instància d'inspectors
InspectorID int ID únic de l'acció executada (enum, 1 = libreoffice, 2, etc)
Key char (128) Clau del que guardem Per exemple, 'Version'
Value char (128) Valor del que guardem Per exemple, '3.5'}


Estimació de carrega

Ens basem en un escenari optimista on el Catalanitzador fos força bé, i el fessin servir 10.000 usuaris mensualment. Això representaria:

  • 10.000 registres mensuals a la taula 'sessions', 120.000 registres anualment.
  • 100.000 registres mensuals a la taula 'actions', 1.000.000 registres anualment (basant-nos com amb que el instal·lador fes 10 accions, que segurament en una versió 2.0 les farà).

En quant a espai a disc la taula sessions és la més gran, pot necessitar uns 10Kb per registre en el pitjor cas (porta un fitxer log bolcat). Això podrien ser 1.000.000 registres x 10Kb que serien uns 9.5GB anuals.

[modifica] BD MySQL

Els scripts de creació de la base dades es troben al github del projecte.

[modifica] Descripció del XML

Aquest és un XML d'exemple com el que el Catalanitzador envia al servidor.

Veure: https://github.com/Softcatala/CatalanitzadorPerAWindows/blob/master/Server/results.xml

Separa Categories