LHA

adattömörítési formátum és szoftver

Az LHA vagy más néven LZH egy freeware tömörítő alkalmazás, illetve a hozzá tartozó fájlformátum, melyet eredetileg LHarc néven fejlesztett ki a japán Haruyasu Yoshizaki (吉崎栄泰; Hepburn: Yoshizaki Haruyasu?) 1988-ban.[1] A LHarc hamar de facto "szabvánnyá" vált a japán BBS felhasználók körében.[5]

LZH formátum
Fájlkiterjesztés.lzh, .lha
MIME-típusapplication/x-lzh-compressed
FejlesztőHaruyasu Yoshizaki (Yoshi)[1]
Kiadás dátuma1988[1]
Formátum típusaarchív, tömörített
Kiterjesztése ennekLHarc
Uniformpublic.archive.lha
LHA tömörítő
FejlesztőHaruyasu Yoshizaki (Yoshi)[1]
Első kiadás1988[1]
Legfrissebb stabil kiadás1.14i (Unix)[2]
2.55e (MS-DOS)[3]
2.15 (AmigaOS)[4]
Operációs rendszerAmigaOS,[1][2] MorphOS, AROS, MS-DOS,[3] OS/2, Windows, Unix[1][2]
Kategóriafájl tömörítő
LicencFreeware
A LHA weboldala

Történet szerkesztés

1987-88 táján már létezett Japánban LZSS tömörítési algoritmust megvalósító program "LArc", majd "LZARI" néven, LZW algoritmust megvalósító pedig az "ARC", illetve a "PKARC" volt. Az orvosként dolgozó Yoshizaki hobby programozóként azon igyekezett, hogy a Haruhiko Okumura által kifejlesztett LZARI eljárást gyorsabbá tegye. Az LZARI algebrai tömörítési eljárását lecserélte Huffman-kódolásra ("LZHUF"), mely a tömörítési arányon alig változtatott, viszont jelentősen gyorsabbá tette a kódot. Az LZHUF-nak egy assemblyben, illetve C-ben teljesen újraírt változata először LHx, majd végül LH néven jelent meg 1991 januárjában, ez azonban megegyezett az ugyanez év júniusában kiadott MS-DOS 5.0 új LH ("LoadHigh") belső parancsával, így a tömörítőprogramot átnevezték LHA-ra elkerülendő a felesleges név-ütközéseket.[5]

1992-től kezdődően, mind Okumura, mind pedig Yoshizaki egyre elfoglaltak lettek orvosi hivatásukban, így az LHA, illetve általában is tömörítési eljárások, algoritmusok fejlesztésével felhagytak.[5] Az LHA32 nevű 32-bites Windows-átirat és a hozzá tartozó kitömörítő programkönyvtár, az UNLHA32.DLL próbaverzió szintjén maradt.[6] Ugyanígy az MS-DOS (LHx for MSDOS) és a Unix változat (LHA for Unix) fejlesztése is megszakadt, a forráskód azonban szabadon felhasználható.[2][7]

Adatformátum szerkesztés

Az LZH-formátumok bájtsorrendje little-endian (a legkisebb helyiérték legelől). Tömörítési módszerként a Lempel-Ziv-Storer-Szymanski (LZSS) algoritmust és a Huffman-kódolást alkalmazzák. Az LZH tömörítvényekben minden belefoglalt állományt (fájlt) egy fejléc előz meg, mely az adott fájlra mutató információkat tartalmaz. A fejlécek háromfélék lehetnek: level-0., level-1. és level-2. szintű. A 0. szinten a fejlécet rögtön a tömörített adatok követnek, míg az 1. és 2. szinten kiterjesztett fejlécek is vannak (pl. Unix felhasználói jogosultsági/fájlhozzáférési adatok).[8]

Tömörítési módszerek szerkesztés

A fejléc "-lhx-" karaktersorozata jelzi az alkalmazott tömörítési algoritmus-változatot a következők szerint:[8]

Kanonikus vagy standard LZH-módszerek[8]
-lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd-
csúszó keresőablak hossza tömörítetlen 4 KiB 8 KiB 8 KiB 4 KiB 8 KiB 32 KiB 64 KiB üres mappa/
könyvtár
max. szóhossz 60 byte 256 byte 256 byte 256 byte 256 byte 256 byte 256 byte
Huffman-kódolás dinamikus dinamikus statikus statikus statikus statikus statikus

Hagyományos, illetve nem-kanonikus módszerek:[8]

 
a LHarc parancssori paraméterei
  • LArc-módszerek: -lzs-, -lz2-, -lz3-, -lz4-, -lz5-, -lz7-, -lz8-;
  • LHa (Joe Jared kiterjesztések): -lh8-, -lh9-, -lha-, -lhb-, -lhc-, -lhe-, -lhx-;
  • PMarc-módszerek: -pm0-, -pm1-, -pm2-, -pms-

Felhasználásai szerkesztés

Az LHA népszerű maradt Japánban a 2000-es évekig, azonban nyugaton nem használták tömegesen.[9] Az id Software korai játékaiban, mint amilyen a Doom vagy a Quake alkalmazta az LHA tömörítési eljárást. Az Aminet máig de facto szabványként alkalmazza az LHA Stefan Boberg által megírt Amiga-portjának továbbfejlesztett változatát, habár az 1990-es évek közepén komoly kihívója volt az LZX tömörítő.[10]

A nagy BIOS gyártók, mint például az AMI vagy az Award a BIOS firmware fájljainak tömörítésére LHA-algoritmust használnak módosított fejléccel, annak érdekében, hogy az EEPROM szűkös tárterületét a lehető legjobban kihasználják.[11]

A Microsoft kiadta a Windows XP japán verziójához Microsoft Compressed (LZH) Folder Add-ont.[12] A Windows 7 japán verziójában az LZH addont a Windows Update-ről lehetett beszerezni a japán nyelvi csomag részeként, azonban csak Windows 7 Enterprise vagy Ultimate felhasználók számára.[13]

Jegyzetek szerkesztés

  1. a b c d e f g Haruyasu Yoshizaki (angol nyelven). solvusoft.com . (Hozzáférés: 2023. január 16.)
  2. a b c d Japanese *N*X LHA (angol nyelven). aminet.net , 2010. július 2. (Hozzáférés: 2023. január 24.)
  3. a b LhA archiver 2.55 for MS-DOS (angol nyelven). aminet.net , 1996. október 25. (Hozzáférés: 2023. január 24.)
  4. Latest version of Amiga LhA (angol nyelven). aminet.net , 2011. január 3. (Hozzáférés: 2023. január 24.)
  5. a b c JapCompHist
  6. LHA32 (japán nyelven). vector.co.jp . (Hozzáférés: 2023. január 29.)
  7. LHa for UNIX (angol nyelven). solvusoft.com . (Hozzáférés: 2023. január 29.)
  8. a b c d LZH format (angol nyelven). (Hozzáférés: 2023. február 1.)
  9. 吉澤, 亨史: 「LZH」の開発中止--企業などは使用しないよう作者が注意喚起 (japán nyelven). CNET Japan , 2010. június 7. (Hozzáférés: 2023. január 29.)
  10. What is a LZH file? Learn about LZH files here (angol nyelven). bitzipper.com . (Hozzáférés: 2023. január 29.)
  11. Pinczakko's Guide to AMI BIOS Reverse Engineering (angol nyelven). [2023. február 2-i dátummal az eredetiből archiválva]. (Hozzáférés: 2023. február 2.)
  12. Microsoft Compressed (LZH) Folder Add-on. microsoft.com . [2007. augusztus 19-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. október 5.)
  13. How to Open, Edit, and Convert LZH Files (angol nyelven). lifewire.com . (Hozzáférés: 2023. január 29.)

Források szerkesztés