05.03.2016 - 02:00
Quan treballem en un ordinador, a totes les nostres tasques posem un nom i les guardem ben endreçades per poder trobar-les en un futur. El que endrecem i amb què solem treballar es diu fitxer, ja sigui de text, imatge, so o tot combinat. Especifiquem quina mena de fitxers hi ha, com podem crear-ne i organitzar per facilitar-nos la feina.
Què és un fitxer?
Abans de tot, una definició més o menys acadèmica: un fitxer és un conjunt de bytes que poden o no, tenir un significat.
Encara que un fitxer, o el que nosaltres entenem per un arxiu, pot ser format per dues parts o dos conjunts. Ara ho veureu.
‘Data fork’ i ‘resource fork’
Quan es va dissenyar el sistema operatiu de Macintosh, d’això ja fa uns quants anys, es va decidir que un fitxer tindria dos components:
–El ‘data fork’, on hi ha el contingut del text d’un editor, una imatge, etc. És realment el que entenem per fitxer, és a dir, les dades.
–Al ‘resource fork’ pot haver-hi codi de programa, scripts i, fins i tot, una previsualització de la foto. És un tipus d’informació estructurada, respecte de la desestructura de les dades del ‘data fork’, que és una corrua de bytes l’un rere l’altre.
I, encara, per afegir-hi més complexitat, al catàleg del disc hi ha la ‘firma’ d’un fitxer, el tipus de fitxer i el creador del fitxer.
Ja veieu que les coses es compliquen quan es vol facilitar la vida a l’usuari. De fet, el motiu en el fons de tota aquesta complexitat va ser per facilitar poder fer dos clics en un fitxer i que s’obrís directament l’aplicació corresponent. Recordeu que parlo de la prehistòria…
Les extensions
Com poden saber els ordinadors què hi ha dins un fitxer? I com poden saber amb quin programa han de tractar-lo? Per això es van inventar les extensions.
La idea inicial, els anys 1960, va ser de Digital i ‘es va popularitzar’ al principi al CP/M i després al Dos, quan es van inventar el sistema d’extensions amb tres lletres (i vuit lletres per al nom del fitxer). Els altres, com Unix i Linux, no tenien aquesta limitació de 8+3, i amb el temps Windows 95, NT i succesius van deixar enrere també la limitació.
Per a esmentar exemples d’uns altres sistemes, a Linux es pot tenir més d’una extensió, per exemple arxiu.tar.gz.
Aquí en teniu una llista de les més usades i a la Wikipedia n’hi ha una de ben extensa.
Les extensions, no les assigna ningú: cada fabricant podria fer servir les que volgués i això ha portat a conflictes, com per exemple l’extensió .rpm que es fan servir per al gestor de paquets RPM i per als fitxer de Real Player.
El MIME
Per acabar-ho d’embolicar, als protocols d’internet el MIME identifica el tipus de dades que enviem o rebem, per exemple ‘Content type: text/plain’.
Amb això el receptor ha de saber què fer amb aquell conjunt de bytes, si els té definits, i com els mostrarà a l’usuari o si els guardarà o si arrancarà un programa concret per mostrar-los.
És la manera de corelacionar tipus de fitxers a internet i consta de dues parts, un ‘type’ i un ‘subtype’. Per exemple, una pàgina HTML tindrà el MIME text/html i encara pot tenir informació addicional com la codificació, per exemple charset=UTF-8.
Però això es pot complicar perquè el subtype pot tenir el sufix del fitxer (l’extensió):
application/xhtml+xml
En aquest cas sí que hi ha un registre, gestionat per la IANA. I si voleu saber les equivalències entre extensions i media type, aneu a aquest enllaç.
Un sol fitxer?
Com ho fem, si volem ‘agrupar’ més d’un fitxer dins unfitxer? Segons quin sistema operatiu farem servir més un sistema que un altre, però el que s’ha acabat imposant a Windows, Mac i Linux és el zip, encara que històricament el tar és qui s’emporta el lideratge al Linux. I, ara en desús, el sit era el líder als Mac.
Estrictament, els .tar no comprimeixen, només agrupen fitxers, però es pot tenir un tar comprimit, el cas més conegut és .tar.gz
Tots aquests sistemes ens permeten de conservar un sistema de directoris dins el fitxer i també serveixen per comprovar-ne la integritat, de manera que si quan ‘es desagrupa’ detecta algun error, avisa l’usuari i no continua per evitar deixar un fitxer incorrecte.
Així que, com a resum, el zip suma fitxers amb l’estructura de directori, els afegeix compressió, coherència i fins i tot hi posa una contrasenya.
Compressions
I, finalment, es pot comprimir el contingut. Hi ha sistemes de compressió de fitxers amb pèrdua o sense (zip i jpeg), segons si quan es descomprimeixen tornem a tenir exactament el mateix contingut o bé no és possible de recuperar el contingut original.
I no, no és màgia: el sistema de compressió i descompressió de fitxers permet de reduir la mida d’un fitxer i, quan volem, tornar-lo a la situació inicial. Per fer-ho aprofita que les dades són redundants. Un exemple molt simple:
Suposeu que dins un fitxer tenim això:
fffffffuuuuuuuuuuuu
Un programa de compressió pot deixar-ho així:
f7u12
És a dir, 7 lletres f i 12 lletres u: fixeu-vos en la diferència de llargada.
Els senyors Lempel i Ziv es van inventar un sistema de compressió o algorisme (el Lempel-Ziv) que més tard va perfeccionar el senyor Welch (LZW) per a catalogar repeticions. El sistema era crear un diccionari amb les paraules o seqüències de caràcters més repetides a un fitxer i després només s’ha de fer referència a l’entrada del diccionari, per això els sistemes sense pèrdua són més lents per a crear el fitxer comprimit.
Els sistemes amb pèrdua, encara que no permetin de recuperar el fitxer original, són molt utilitzats. El sistema elimina dades i se’n redueix la mida, es fan servir per a fitxers d’imatge, vídeo i so, encara que en reduïm la qualitat (arxius mp3, mp4, jpg).
Coherència o integritat
El fet de fer anar amunt i avall els fitxers ens obliga a tenir un sistema d’integritat per saber que el que ha sortit i el que s’ha rebut és el mateix: el que fa el zip quan els comprimeix.
Per això es va inventar el crc, que és un ‘checsum’ (control de redundància cíclica) molt simple: per a cada byte se suma el seu valor i el resultat de la suma s’envia; si qui el rep fa la mateixa operació i n’obté el mateix resultat, les possibilitats que sigui el mateix fitxer són grans, però hi ha problemes, com per exemple si es canvia d’ordre els bytes.
La solució és el sistema SHA-256 (SHA o ‘secure hash algorithm’). És una funció criptogràfica hash de fins a 512 bits i, de moment, no s’ha trobat cap col·lisió al sistema SHA.2 (una col·lisió és el cas en què dos fitxers diferents donen el mateix valor de hash). Així que si dos fitxers, una vegada fets els càlculs de SHA-256, donen el mateix resultat, podeu afirmar que són el mateix fitxer.
Bé, ja veieu que podríem parlar molta estona de fitxers, la base del nostre sistema per a guardar les nostres dades!