Кіріспе

Файл пішімі

macOS, iOS, NeXTSTEP және GNUstep бағдарламалау аяларында қасиеттер тізімі файлдары сақталған нысандарды сақтайтын файлдар болып табылады. Property list файлдары plist файл кеңейтімін пайдаланады, сондықтан оларды p list файлдары деп атайды. Қолданушының параметрлерін сақтау үшін қасиеттер тізімі файлдары жиі қолданылады. Олар сондай-ақ жиынтықтар мен қолданбалар туралы ақпаратты сақтау үшін қолданылады, бұл міндет бұрынғы Mac OS жүйесіндегі ресурстық бөлімшесімен атқарылатын қызметке ұқсас. Қасиеттер тізімдері әзірлеу үшін жергілікті тілге аудару жолдары үшін де қолданылады. Бұл файлдар strings немесе stringsdict кеңейтімдерін пайдаланады. Біріншісі - жақсырақ ескі үлгідегі, тек бір сөздікті қамтитын, жақшасыз (қараңыз), ал екіншісі - толыққанды қасиеттер тізімі. Xcode жоба файлдары ретінде қолданылатын ескі үлгідегі қасиеттер тізімдері үшін pbxproj кеңейтімін де пайдаланады.

Өкілдіктер

Меншік тізімдерімен ұсынылған деректердің абстрактілі сипаты бар болғандықтан, жатқа жазылатын файл форматын көптеген тәсілмен жүзеге асыруға болады. Атап айтқанда, NeXTSTEP меншік тізімін көрсету үшін бір форматты пайдаланды, ал одан кейінгі GNUstep және macOS платформалары әртүрлі форматтарды енгізді.

Келесі қадам

NeXTSTEP жүйесінде, қасиеттер тізімдері адам оқи алатын және қолмен өңделетін, бағдарламалау тілі синтаксисына ұқсас синтаксиспен ASCII форматына түрлендірілген. Осы формат OPENSTEP жүйесінде де қолданылды. Сөз тіркестері C тіліндегі әдеби стильде бейнеленеді: ; қарапайым, тырнақшасыз тізбектерге әріптік-сандық және екілік деректерден тұратын жағдайда рұқсат етіледі: < [ASCII форматындағы он алтылық кодтар] >. Жұп он алтылық кодтар арасындағы бос орындар мен түсініктемелер назарға алынбайды. Массивтер былай бейнеленеді: Соңғы үтірлерге жол беріледі. Сөздіктер мынадай түрде бейнеленеді: Сол жағында сөз тіркесі болуы керек, бірақ ол тырнақшасыз да болуы мүмкін. Түсініктемелер былай жазылуы мүмкін: және C тіліндегідей, бос орындар синтаксис үшін көбінесе маңызды емес. Мәндік операторлар нүкте-жонымен аяқталады. NeXT қасиеттері тізімінің бастапқы форматының бір шектеуі – ол NSValue (сан, логикалық мән және т.б.) нысанын бейнелей алмауы. Нәтижесінде, бұл мәндер сөз тіркесіне түрлендіріліп, қолданбамен «шамамен» қалпына келтірілуі керек болды. OPENSTEP (1996) жүйесінде пайда болған әдепкі параметрлер құралы, параметрлерді сақтау үшін қолданылатын plist файлдарын (NeXTSTEP жүйесінде «әдепкі параметрлер» деп аталғандықтан, осылай аталды) командалық жол арқылы олардың параметрлер домені арқылы өңдеуге мүмкіндік береді, сонымен қатар кез келген plist файлдарын өңдеуге болады. Бұл құрал үш ескі команданы (dread, dwrite және dremove) ысырып тастады. Екілік деректер тиімдірек base64 форматын да қолдана алады, себебі 8 биттік мәселе де шешілді, өйткені көптеген жүйелер UTF-8 қолданады. Барлығы алғанда, адам оқи алатын мәтіндік форматтың экспрессивтілігі мен ықшамдығы Apple-дің XML форматымен шайқасады. GNUstep-тің өз бинарлық форматы бар, , ол мәтіндік форматтар сияқты рекурсивті түрде анықталған, ал кейбір деректердің алдында бір байттық типтік маркер орналасқан. Сөз тіркесінің интернизациясы GS кеңейтім опциясы арқылы қолдалады. GNUstep жүйесінде екі тәуелсіз plist өңдеуші табылады: (CoreFoundation) және (Foundation Kit). Екеуі де macOS жүйесінде қолданылатын бинарлық және XML форматтарын белгілі бір деңгейде қолдайды, бірақ соңғысы толыққандырақ. Мысалы, екі GNUstep-ке тән форматтар тек соңғысында қолданылады. GNUstep , соның ішінде және нұсқаларын қамтитын plist командалық құралдары жиынтығын ұсынады.

macOS

macOS NeXTSTEP форматын да оқи алады, бірақ Apple оны қолданудан алып, өзінің екі жаңа форматына басымдық береді – біреуі XML негізінде, екіншісі екілік форматта. Apple-дің JSON форматы да ішінара үйлесімді.

Тарих

Mac OS X 10.0 жүйесінде NeXTSTEP форматы қолданыстан шығарылды және Apple анықтаған DTD-і бар жаңа XML форматы енгізілді. XML форматы ASCII емес символдарды және NSValue нысандарын сақтауды қолдайды (GNUstep-тің ASCII қасиеттер тізімі форматынан өзгеше, Apple-дің ASCII қасиеттер тізімі форматы мұны қолдамайды). Дегенмен, XML файлдары ең ықшам сақтау тәсілі болмағандықтан, Mac OS X 10.2 қасиеттер тізімі файлдарын екілік файлдар түрінде сақтайтын жаңа форматты ұсынды. Mac OS X 10.4 нұсқасынан бастап, бұл параметрлер файлдары үшін стандартты форматқа айналды. Mac OS X 10.7 жүйесінде JSON форматындағы файлдарды оқу және жазу мүмкіндігі қосылды. Алайда, JSON және қасиеттер тізімі толыққанды үйлесімді емес. Мысалы, қасиеттер тізімінде JSON форматы қолдамайтын күнтізбелік және дерек типтері бар. Керісінше, JSON нөлдік мәндерге мүмкіндік береді, ал қасиеттер тізімінде нақты нөлдік мәндер қолданылмайды.

Құрал жасау

NeXTSTEP-тің ескі құралы әлі де қолжетімді. Бұл команда интерактивті plist редакторын ұсынады. Оны сценарий арқылы басқаруға да болады. (Mac OS X 10.2-де пайда болған) Бұл құрал қасиеттер тізімінің синтаксисін тексеруге немесе қасиеттер тізімі файлының форматын өзгертуге мүмкіндік береді. Сондай-ақ, ол plist файлдарын Objective-C немесе Swift объектілік литералдарына түрлендіруді қолдайды. Cocoa сияқты, ол "ескі стильдегі" деректерді қабылдайды, бірақ оларды осы форматқа түрлендірмейді. (Mac OS X 10.2 нұсқасынан бұрынғы Cocoa ескі стильдегі деректерді шығарады.) Бұл құрал Mac OS X v10.5 нұсқасында пайда болды. Ол кез келген деректерді қабылдап, "ескі стильдегі" plist файлдарын жасауға тырысады. GNUstep нұсқасы сияқты, ол plist файлдарындағы Foundation типтерінің қасиеттерін пайдаланады, оларды Apple ескі стильдегі жарамды plist файлдарын жасау үшін анықтаған. Ішкі құрылымы жағынан, Apple C Core Foundation кодында CFPropertyList ретінде ескі стильдегі, XML және бинарлық форматтарды талдауға арналған ашық кодты құралды ұсынады. Дегенмен, барлық құралдар мен жүйенің көп бөлігі Obj-C Foundation Kit-тен NSPropertyList жабық кодты талдаушысын қолданады. Swift-тегі қайта іске асырылу ашық кодты, бірақ оның толықтай сәйкес келетініне кепілдік жоқ.

Плистке сериялау

Қасиеттер тізімдері кез келген нысанды сипаттау үшін қажетті барлық ақпаратты және дерек түрлерін қамтымайтындықтан, көбінесе қосымша кодтау және декодтау қабаты қолданылады. OpenStep спецификациясы кез келген нысанды протокол арқылы сериалдау операциясын абстракциялайды. Бұл протоколды іске асыратын кез келген сыныптың инстанцияларын басқа форматқа субкласс арқылы сериалдауға болады. Нысандарды plist-терге сериалдау үшін екі негізгі кодтаушы бар: , ол нысанды таңбаланған құрылымға ұқсас екілік деректер блогына түрлендіреді. Бұл сынып OpenStep құрамына кіреді, бірақ нақты форматы анықталмаған. Іс жүзінде, оны нысанды файлға сериалдау үшін (plist-ті өткізіп жіберіп) немесе деректерді plist-ке ендіру үшін пайдалануға болады. Оны жазылған тәртіппен оқып, жазу қажет. енгізу оның қолданылуын ескіртеді. , Mac OS X 10.2-де енгізілген, нысанды түрлендіреді. Бұл форматтың бағдарламашылар үшін басты жетістігі - ол мүшелерге белгілі бір тәртіппен емес, жол кілттері арқылы қол жеткізеді. Ішкі жағынан, ол сөздікте сақталатын нысандар тізімі массивін сақтау арқылы екілік plist форматын қайталайды. Сынып туралы ақпаратты қоса, қалған барлық нәрсе UID нұсқаушысы арқылы сілтемеленеді. Сөздіктегі жазба бағдарламашы кодтауға ниеттенген жоғарғы деңгейдегі нысанды көрсетеді. GNUstep-те де үйлесімді іске асыру бар, ол шығыс форматтарын шектемейді.

Жол тілі

XML үшін XPath сияқты, қасиеттер тізімдері үшін бірыңғай стандартталған жол тілі жоқ, бірақ әртүрлі бағдарламалар қолданатын бейресми келісімдер бар. Бұл, Apple-дің It немесе Safari орнатылғанда пайда болады. Windows жүйесінде файлдар әдетте екілік форматта болады, бірақ кейбір қолданбалар PLIST файлдарын басқа форматтарда да жасай алады. Windows-та Apple plist файлдары пайдаланушының жеке каталогында сақталады. Windows-тағы бұл plist файлдары әдетте Windows тіркелгісін пайдаланудың орнына, параметрлер мен басқа да ақпаратты сақтайды. Windows-та PLIST файлдарын өңдеу мүмкіндіктері macOS-тағыдай кең емес. Егер файл XML немесе JSON форматында болса, Notepad++ сияқты мәтіндік редакторды сақтап қолдануға болады. Apple өзінің "Apple Application Support" (iTunes құрамындағы) пакетімен бірге plutil.exe бағдарламасын жеткізеді, ол macOS нұсқасымен толық сәйкес келеді.

NetBSD-нің

2006 жылы енгізіліп, алғаш рет NetBSD#4.0 (2007) нұсқасымен бірге шығарылған proplib кітапханасы, ядро мен қолданушы кеңістігі арасында деректерді тізбектеу үшін қолданылуы мүмкін. Ол XML plist тілінің бір бөлігін іске асырады. Proplib кітапханасын пайдаланатын мысалдардың бірі – жүйелік мониторинг үшін sysmon envsys аясының екінші нұсқасы. NetBSD-дің proplib кітапханасы 2010 жылы DragonFly платформасына көшірілді және DragonFly BSD #2.8 нұсқасынан бастап қолжетімді.

Платформааралық

Facebook-тің Xcode құрастыру құралы xcbuild-тің ашық бастапқы кодтағы қайта іске асырылуы plist кітапханасын қамтиды. Бұл кросс-платформалық құралдар C++ тілінде жазылған. Python бағдарламалау тілінде Apple XML немесе бинарлық форматтағы (Python 3.4 нұсқасынан бастап) plist файлдарын оқу және жазу үшін енгізілген модуль бар. ProperTree – бұл кітапхананы пайдаланатын кросс-платформалық редактор. ccl bplist деп аталатын үшінші тараптың кітапханасы NSKeyedArchiver UID-терін өңдеу мүмкіндігін қосымша ұсынады. Go тілінде төрт түрлі plist форматтарын қолдайтын пакет бар: OpenStep мәтіні, GNUStep мәтіні, Apple XML және Apple Binary. Ол XML және бинарлық форматтардағы UID-терді де басқарады.