Quan treballem en un ordinador a tota la nostra tasca li posem un nom i la guardem ben endreçada per poder trobar-la en un futur, el que endrecem i amb el que solem treballar es diuen arxius ja siguin de text, imatge, so o tot combinat. Anem a especificar quin tipus hi ha, com podem crear-ne i organitzar per facilitar-nos la feina.
Què és un arxiu?
Abans d tot, una definició més o menys acadèmica: un arxiu és un conjunt de bytes que poden o no, tenir un significat.
Encara que un arxiu, o el que nosaltres entenem per un arxiu, pot estar format per dus parts o dos conjunts, ara veureu.
Data fork i Resource fork
Quan es va dissenyar el sistema operatiu dels Macs, d’això ja fa uns anys, es va decidir que un arxiu tindria dos components:
Al data fork, a on hi ha el contingut del text d’un editor, una imatge, etc, realment el que entenem per arxiu, és a dir les dades
Al resource fork pot haver-hi codi de programa, scripts o, fins i tot, una previsualització de la foto, és un tipus d’informació estructurada, enfront de la desestructura de les dades del data fork que és una corrua de bytes un darrere l’altre
i, encara, per afegir més complexitat, al catàleg del disc hi ha la ‘firma’ d’un arxiu, el tipus d’arxiu i el creador de l’arxiu.
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 a un arxiu i obrir directament l’aplicació que li correspon, recordeu que estic parlant de la prehistòria 🙂
Les extensions
Com poden saber què hi ha dins un arxiu? i com pot saber l’ordinador amb quin programa ha de tractar l’arxiu? per això es van inventar les extensions.
La idea inicial, als anys 60 va ser de Digital, això es va ‘popularitzar’ inicialment al cp/m i després al dos, quan es van inventar el sistema d’extensions amb tres lletres (i 8 lletres pel nom de l’arxiu), els altres, com Unix o Linux, no tenien aquesta limitació de 8+3, amb el temps, w95, NT, i succesius es va treure la limitació.
Per citar exemples d’altres sistemes, als linux es pot tenir més d’una extensió, p.ex. arxiu.tar.gz
Si en voleu una llista de les més usades, i una de ben extensa a la wikipèdia.
Les extensions no les assigna ningú, cada fabricant podria fer servir el que volgués, i això ha portat a conflictes, per exemple l’extensió .rpm es fa servir pel gestor de paquets RPM i pels arxius de Real Player.
El MIME
Per acabar-ho d’embolicar, als protocols d’internet el MIME identifica el tipus de dades que estem enviant o rebent, 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 forma de correlacionar tipus d’arxius 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 de l’arxiu (l’extensió):
application/xhtml+xml
En aquest cas sí que hi ha un registre, i el registre el porta la IANA, així que si voleu saber quins hi ha, aneu a la IANA.
i si voleu saber les equivalències entre extensions i media type, aneu a aquest enllaç.
Un sol arxiu?
Com ho fem si volem ‘agrupar’ més d’un arxiu dins un arxiu? segons en quin sistema operatiu farem servir més un sistema que l’altre, però el que s’ha acabat imposant a Windows, Mac i Linux és el zip, encara que històricament el ‘tar’ és el qui s’emporta el lideratge al Linux i, ara en desús, el ‘sit’ era el líder als Macs.
Estrictament, els tar no comprimeixen, només agrupen arxius, però es pot tenir un tar comprimit, el cas més conegut és el .tar.gz
Tots aquests sistemes ens permeten conservar un sistema de directoris dins l’arxiu i també serveixen per comprovar la integritat de forma que si quan es ‘desagrupa’ detecta algun error, avisa a l’usuari i no segueix per evitar deixar un arxiu incorrecte.
Així que, com a resum, el zip suma arxius amb l’estructura de directori, els hi afegeix compressió, coherència i fins i tot posa un password.
Compressions
I, finalment, es pot comprimir el contingut, hi ha sistemes de compressió d’arxius amb pèrdua o sense (zip i jpeg), segons si quan es descomprimeix tornem a tenir exactament el mateix contingut o bé no és possible recuperar el contingut original.
I no, no és màgia, el sistema de compressió i descompressió d’arxius permet reduir la mida d’un arxiu 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 arxiu tenim això:
fffffffuuuuuuuuuuuu
un programa de compressió pot deixar-ho així:
f7u12
és a dir, 7 lletres f i 12 lletres u, fixeu-vos 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 catalogar repeticions, el sistema era crear un diccionari amb les paraules o seqüències de caràcters més repetides a un arxiu 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 crear l’arxiu comprimit,
Els sistemes amb pèrdua, encara que no permetin recuperar l’arxiu original, són molt utilitzats, el sistema elimina dades i es redueix la mida, es fan servir per arxius d’imatge, vídeo i so, encara que reduïm la qualitat (arxius mp3, mp4, jpg)
Coherència o integritat
El fet de fer anar amunt i avall els arxius 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, és un checsum (control de redundància cíclica), molt simple, per 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 arxiu són grans, però hi ha problemes, com per exemple, si es canvien d’ordre els bytes 🙂
La solució és el sistema SHA-256 (SHA = 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 arxius, una vegada fets els càlculs de SHA-256 donen el mateix resultat, podeu afirmar que són el mateix arxiu.
Bé, ja veieu que podríem parlar molta estona d’arxius, la base del nostre sistema per guardar les nostres dades!