Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында

TL; DR: Haiku - бұл компьютерлер үшін арнайы жасалған операциялық жүйе, сондықтан оның жұмыс үстелі ортасын басқаларға қарағанда әлдеқайда жақсы ететін бірнеше амалдары бар. Бірақ ол қалай жұмыс істейді?

Жақында Мен Хайкуды, күтпеген жерден жақсы жүйені таптым. Мен оның қаншалықты біркелкі жұмыс істейтініне әлі де таң қаламын, әсіресе Linux жұмыс үстелі орталарымен салыстырғанда. Бүгін мен капюшонның астына қараймын. Терең түсіну үшін қажет болған жағдайда, мен түпнұсқалық Macintosh, Mac OS X және Linux жұмыс үстелі орталарымен салыстыру жасаймын (freedesktop.org сайтындағы XDG стандарты).

ELF файлдарындағы ресурстар

Кеше IconOMatic ELF орындалатын файлдарындағы rdef ресурстарындағы белгішелерді сақтай алатынын білдім. Бүгін мен оның шынымен қалай жұмыс істейтінін көргім келеді.

Ресурстар? дәйексөз от Брюс Хорн, Macintosh Finder бағдарламасының түпнұсқа авторы және Macintosh ресурстар менеджерінің «әкесі»:

Мен дәстүрлі кодтаудың қатаң сипатына алаңдаймын. Мен үшін динамикалық түрде ештеңені өзгерту мүмкіндігі жоқ кодта қатып қалған қолданба идеясының өзі - ең жабайылық. Орындалу уақытында мүмкіндігінше өзгерту мүмкіндігі болуы керек. Әрине, қолданба кодының өзін өзгерту мүмкін емес, бірақ кодты қайта құрастырмай-ақ бірдеңені өзгертуге болады ма?

Түпнұсқа Macintosh жүйесінде олар бұл файлдарда «деректер бөлімі» және «ресурс бөлімі» болды, бұл белгішелер, аудармалар және т. орындалатын файлдарда.

Mac жүйесінде бұл қолданылады Қайта өңдеу, - кенеттен - ресурстарды өңдеуге арналған графикалық бағдарлама.

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Түпнұсқа Macintosh жүйесінде ResEdit

Нәтижесінде белгішелерді, мәзір элементтерін, аудармаларды және т.б. өңдеу мүмкін болды. жеткілікті оңай, бірақ олар әлі де қолданбалармен «саяхаттайды».
Қалай болғанда да, бұл тәсілдің үлкен кемшілігі болды: ол тек Apple файлдық жүйелерінде жұмыс істеді, бұл Apple Mac OS X жүйесіне көшкен кезде «ресурс бөлімінен» бас тартуының себептерінің бірі болды.
Mac OS X жүйесінде Apple файлдық жүйеден тәуелсіз шешімді қалайды, сондықтан олар бумалар тұжырымдамасын (NeXT-тен), каталогтар емес, файлдар сияқты файл менеджері «мөлдір емес нысандар» ретінде қарастыратын каталогтарды қабылдады. Пішімдегі қолданбасы бар кез келген пакет .app басқа нәрселермен қатар файлы бар Info.plist (Apple-дің JSON немесе YAML эквивалентінде) қолданба метадеректерін қамтитын.

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Mac OS X қолданбалар бумасындағы Info.plist файлының кілттері.

Белгішелер, UI файлдары және басқалар сияқты ресурстар бумада файлдар ретінде сақталады. Тұжырымдама шын мәнінде NeXT-те тамырына қайта оралды.

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
1.0 жылы NeXTSTEP 1989 нұсқасындағы Mathematica.app: терминалдағы файлдар каталогы ретінде, бірақ графикалық файл менеджеріндегі жалғыз нысан ретінде пайда болады.

BeOS-ке, Хайку негізін қалаған тұжырымдамаларға оралайық. Оны әзірлеушілер PEF (PowerPC) жүйесінен ELF (x86) нұсқасына ауысқан кезде (Linux жүйесінде қолданылғандай) ELF файлдарының соңына ресурс бөлімін қосуды шешті. Ол өзінің тиісті ELF бөлімін пайдаланбады, ол жай ғана ELF файлының соңына қосылды. Бағдарламаның нәтижесінде strip және басқалары бинутилдерден, мұны білмей, жай ғана кесіп тастайды. Сондықтан BeOS жүйесінде ELF файлына ресурстарды қосқанда, оны Linux құралдарымен басқармағаныңыз жөн.

Қазір Хайку не болып жатыр? Негізінде, көп немесе аз бірдей.

Теорияда ресурстарды ELF-тің қажетті бөліміне орналастыруға болады. irc.freenode.net сайтындағы #haiku арнасындағы әзірлеушілердің айтуынша:

ELF көмегімен бөлім мағыналырақ болар еді... бұлай істемеуіміздің жалғыз себебі - бұл BeOS-те істегеніміз».
Ал қазір мұны өзгертудің еш мәні жоқ.

Ресурстарды басқару

Ресурстар құрылымдық «ресурс» пішімінде жазылады: негізінен өлшемдері бар ресурстар тізімі, содан кейін олардың мазмұны. менің есімде ar пішімі.
Хайкудағы ресурстарды қалай тексеруге болады? ResEdit сияқты нәрсе бар ма?
бойынша құжаттама:

Қолданбалар бумасында берілген ресурстарды көру үшін орындалатын файлды сияқты бағдарламаға сүйреп апаруға болады Ресурс. Сондай-ақ терминалға өтіп, пәрменді орындауға болады listres имя_файла.

Ресурс HaikuDepot-та қол жетімді, бірақ ол мен үшін бұзылады.

ELF файлдарындағы ресурстарды қалай басқаруға болады? Қолдану rsrc и rdef. rdef файлдар жиналады rsrc. Файл rdef кәдімгі мәтін пішімінде сақталады, сондықтан онымен жұмыс істеу әлдеқайда жеңіл. Файл пішімі rsrc ELF файлының соңына қосылады. Ойнап көрейік:

~> rc -h
Haiku Resource Compiler 1.1To compile an rdef script into a resource file:
    rc [options] [-o <file>] <file>...To convert a resource file back into an rdef script:
    rc [options] [-o <file>] -d <file>...Options:
    -d --decompile       create an rdef script from a resource file
       --auto-names      construct resource names from ID symbols
    -h --help            show this message
    -I --include <dir>   add <dir> to the list of include paths
    -m --merge           do not erase existing contents of output file
    -o --output          specify output file name, default is out.xxx
    -q --quiet           do not display any error messages
    -V --version         show software version and license

Сіз бағдарламаны пайдалана аласыз xres тексеру және бақылау үшін:

/> xres
Usage: xres ( -h | --help )
       xres -l <file> ...
       xres <command> ...The first form prints this help text and exits.The second form lists the resources of all given files.The third form manipulates the resources of one or more files according to
the given commands.
(...)

Жарайды, тырысайық?

/> xres -l /Haiku/system/apps/WebPositive/Haiku/system/apps/WebPositive resources:type           ID        size  name
------ ----------- -----------  --------------------
'MIMS'           1          36  BEOS:APP_SIG
'APPF'           1           4  BEOS:APP_FLAGS
'MSGG'           1         421  BEOS:FILE_TYPES
'VICN'         101        7025  BEOS:ICON
'VICN'         201          91  kActionBack
'VICN'         202          91  kActionForward
'VICN'         203         300  kActionForward2
'VICN'         204         101  kActionStop
'VICN'         206         243  kActionGoStart
'MSGG'         205        1342  kActionGo
'APPV'           1         680  BEOS:APP_VERSION

Ресурстар мен пішім туралы толығырақ rdef оқи аласыз осында.

Стандартты ресурстар түрлері

Ресурстарға кез келген нәрсені қоюға болатынымен, бірнеше анықталған стандартты түрлері бар:

  • app_signature: MIME қолданба түрі, файлды ашық салыстыру, іске қосу, IPC және т.б.
  • app_name_catalog_entry: Қолданбаның атауы әдетте ағылшын тілінде болғандықтан, әртүрлі тілдегі пайдаланушылар қажет болса, аударылған қолданба атауын көруі үшін аударылған атаулар орналасқан жерлерді көрсетуге болады.
  • app_version: дәл сіз ойлағандай
  • app_flags: көрсетеді registrar өтінімді қалай өңдеу керек. Менің ойымша, бұл көзбен көргеннен де көп нәрсе бар. Мысалы, бар B_SINGLE_LAUNCH, бұл пайдаланушы сұраған сайын жүйені жаңа қолданба процесін іске қосуға мәжбүр етеді (сол принцип Linux жүйесіндегі көптеген қолданбалар үшін қолданылады). Тамақ B_MULTIPLE_LAUNCH, процестің іске қосылуына себепші болады әрбір файл. Ақыры бар B_EXCLUSIVE_LAUNCH, бұл пайдаланушылар оны қаншалықты жиі іске қосқанына қарамастан жүйені бір уақытта тек бір процесті іске қосуға мәжбүр етеді (мысалы, Firefox Linux жүйесінде осылай жұмыс істейді; функцияны пайдаланып Qt қолданбаларында бірдей нәтижеге қол жеткізуге болады. QtSingleApplication). бар қолданбалар B_EXCLUSIVE_LAUNCH пайдаланушы оларды қайта іске қосуға әрекет жасағанда ескертіледі: мысалы, олар пайдаланушы олардың көмегімен ашқысы келетін файлдың жолын алады.
  • vector_icon: Векторлық қолданба белгішесі (BeOS-та векторлық белгішелер болған жоқ, оның орнына көптеген қолданбалардың орындалатын файлдарында екі растрлық белгішелер болды).

Әрине, кез келген қажетті идентификаторлары мен түрлері бар ресурстарды қосуға болады, содан кейін оларды қолданбаның өзінде немесе сыныпты пайдаланып басқа қолданбаларда оқуға болады. BResources. Бірақ алдымен белгішелердің қызықты тақырыбын қарастырайық.

Хайку стиліндегі векторлық белгішелер

Әрине, тек Хайку ең жақсы белгіше пішімін таңдап қойған жоқ; бұл бөлімде Linux жұмыс үстелі орталарымен жағдай идеалдан алыс:

me@host:~$ ls /usr/share/icons/hicolor/
128x128  256x256  512x512           index.theme
160x160  28x28    64x64             scalable
16x16    32x32    72x72             symbolic
192x192  36x36    8x8
22x22    42x42    96x96
24x24    48x48    icon-theme.cache

Бұған қарап, оның қандай туынды екенін қазірдің өзінде сезінесіз.

Әрине, масштабталатын бар, онда сіз түсінесіз, векторлық белгішелер бар. Неліктен басқа нәрсе бар? Өйткені шағын өлшемдерде векторлық графиканы салу нәтижесі идеалдан аз болуы мүмкін. Мен әртүрлі өлшемдерге оңтайландырылған әртүрлі опцияларды алғым келеді. Linux жұмыс үстелі орталарында бұл әр түрлі өлшемдегі белгішелерді бүкіл файлдық жүйеге шашырату арқылы қол жеткізіледі.

me@host:~$ find /usr/share/icons/ -name 'firefox.*'
/usr/share/icons/HighContrast/16x16/apps/firefox.png
/usr/share/icons/HighContrast/22x22/apps/firefox.png
/usr/share/icons/HighContrast/24x24/apps/firefox.png
/usr/share/icons/HighContrast/256x256/apps/firefox.png
/usr/share/icons/HighContrast/32x32/apps/firefox.png
/usr/share/icons/HighContrast/48x48/apps/firefox.png
/usr/share/icons/elementary-xfce/apps/128/firefox.png
/usr/share/icons/elementary-xfce/apps/16/firefox.png
/usr/share/icons/elementary-xfce/apps/22/firefox.png
/usr/share/icons/elementary-xfce/apps/24/firefox.png
/usr/share/icons/elementary-xfce/apps/32/firefox.png
/usr/share/icons/elementary-xfce/apps/48/firefox.png
/usr/share/icons/elementary-xfce/apps/64/firefox.png
/usr/share/icons/elementary-xfce/apps/96/firefox.png
/usr/share/icons/hicolor/128x128/apps/firefox.png

Назар аударыңыз: Firefox-тың әртүрлі нұсқалары туралы түсінік жоқ. Осылайша, жүйеде қолданбаның бірнеше нұсқасы бар жағдайды ұқыпты өңдеу мүмкін емес.

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Түрлі нұсқалардағы әртүрлі Firefox белгішелері. Қазіргі уақытта Linux жүйесінде әртүрлі таяқшаларсыз мұнымен айналысу мүмкін емес.

Mac OS X оны біршама нәзік өңдейді:

Mac:~ me$ find /Applications/Firefox.app | grep icns
/Applications/Firefox.app/Contents/MacOS/crashreporter.app
/Contents/Resources/crashreporter.icns
/Applications/Firefox.app/Contents/MacOS/updater.app/Contents/Resources/updater.icns
/Applications/Firefox.app/Contents/Resources/document.icns
/Applications/Firefox.app/Contents/Resources/firefox.icns

Бір файл бар екенін көруге болады firefox.icns пакетте Firefox.app, бір қолданбаның әртүрлі нұсқаларында әртүрлі белгішелер болуы үшін барлық өлшемдерді қамтиды.
Әлдеқайда жақсы! Белгішелер қолданбамен бірге жүреді, барлық ресурстар бір файлда.

Хайкуға оралайық. Ақылға қонымды шешім, ерекшелік жоқ. Сәйкес құжаттама:

Шағын өлшемдер мен жылдам көрсету үшін жоғары оңтайландырылған арнайы HVIF пішімі әзірленді. Сондықтан біздің белгішелеріміз растрлық немесе кеңінен қолданылатын SVG пішімінен әлдеқайда аз.

Және олар әлі де оңтайландырылған:

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Басқа форматтармен салыстырғанда HVIF-тегі белгіше өлшемдері.

Айырмашылық - шама реті!

Бірақ сиқыр мұнымен бітпейді. Бірдей HVIF векторлық пішім болса да, көрсетілген өлшемге байланысты әр түрлі бөлшектер деңгейін көрсете алады.

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Рендер өлшеміне байланысты әр түрлі мәліметтер деңгейлері (LOD).

Енді кемшіліктер туралы: сіз SVG ала алмайсыз, оны ImageMagick-ке тастап, оны бір күнде шақыра алмайсыз; HVIF пішімінде белгішені жасау үшін бірнеше циклден өту керек. осында түсіндірмелер. Дегенмен, IconOMatic SVG-ді мүлде жетілмеген түрде импорттай алады; SVG мәліметтерінің шамамен 90% белгілі бір ықтималдықпен импортталады, қалған 10% қолмен конфигурациялау және өзгерту қажет болады. HVIF өзінің сиқырын қалай жасайтыны туралы көбірек оқыңыз болады блогта Лиа Гансон

Қолданбаға белгішені қосу

Енді мен жасалған бумаға белгішені қоса аламын өткен жолы, барлық алынған ақпаратты ескере отырып.
Мен қазір «Сәлем, әлем» QtQuickApp қолданбасы үшін жеке белгіше салуға аса ынталы емеспін, сондықтан мен оны Qt Creator қолданбасынан шығарамын.

/Haiku/home> xres /Haiku/system/apps/QtCreator/bin/Qt Creator  -o /Haiku/home/QtQuickApp/QtQuickApp  -a VICN:101:BEOS:ICON /Haiku/system/apps/QtCreator/bin/Qt Creator

Белгішенің көшірілгенін тексерейік:

/Haiku/home> xres -l /Haiku/home/QtQuickApp/QtQuickApp/Haiku/home/QtQuickApp/QtQuickApp
resources:type           ID        size  name
------ ----------- -----------  --------------------
'VICN'         101      152238  BEOS:ICON

Жақсы көрінеді, бірақ неге жаңа белгіше көшірілгенде ол көрсетілмейді?

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Көшірілген VICN:101:BEOS:ICONs файл менеджеріндегі қолданба белгішесі ретінде әлі пайдаланылмаған

Мен нені сағындым?

Әзірлеуші ​​түсініктемесі:

Бізге файл жасау керек rdef барлық ресурстармен, содан кейін пәрменді орындаңыз rc имя.rdef, бұл файлды жасайды .rsrc. Содан кейін пәрменді орындау керек resattr -o имя_бинарника имя.rsrc. Кем дегенде, сценарийлеріме белгішелерді қосу үшін осындай пәрмендерді қолданамын.

Мен атрибут емес, ресурс жасағым келді. Мен шынымен абдырап қалдым.

Файлдық жүйені қолданатын смарт кэштеу

ELF атрибуттарын ашу және оқу баяу. Жоғарыда жазғанымдай, белгіше файлдың өзінде ресурс ретінде жазылған. Бұл әдіс сенімдірек және басқа файлдық жүйеге көшіруден аман қалуға мүмкіндік береді. Дегенмен, ол, мысалы, файлдық жүйе төлсипатына да көшіріледі BEOS:ICON. Бұл BFS сияқты белгілі бір файлдық жүйелерде ғана жұмыс істейді. Жүйе көрсеткен белгішелер (Трекер және Жұмыс тақтасында) осы кеңейтілген атрибуттан оқылады, себебі бұл шешім жылдам жұмыс істейді. Кейбір жерлерде (жылдамдық маңызды емес, мысалы, әдеттегі «Туралы» терезесі) жүйе белгішені файлдағы ресурстан тікелей алады. Бірақ бұл соңы емес. Есіңізде болсын, Mac жүйесінде пайдаланушылар қолданбалардың, каталогтардың, құжаттардың белгішелерін өздеріне ауыстыра алады, өйткені Mac жүйесінде бұл «маңызды» әрекеттерді орындауға болады, мысалы. жаңа Slack белгішесін алдыңғысына ауыстыру. Хайкуда ресурсты (файлдағы) қолданбамен бірге келетін түпнұсқа белгіше ретінде, ал атрибутты (BFS файлдық жүйесінде) пайдаланушыға өз қалауы бойынша өзгертулер енгізуге мүмкіндік беретін нәрсе ретінде қарастыру керек (бірақ, кеңес, белгішенің жоғарғы жағына реттелетін белгішені кірістіру үшін GUI міндетті емес). әдепкі бойынша әлі іске асырылмаған).

Файлдық жүйе атрибуттарын тексеру

Көмегімен resaddr Файлдық жүйе атрибуттарын тексеруге және орнатуға болады.

/> resattr
Usage: resattr [ <options> ] -o <outFile> [ <inFile> ... ]

Reads resources from zero or more input files and adds them as attributes
to the specified output file, or (in reverse mode) reads attributes from
zero or more input files and adds them as resources to the specified output
file. If not existent the output file is created as an empty file.
(...)

Бұл негізінен (сенімді) ресурстар мен (жылдам) файлдық жүйе атрибуттары арасында түрлендіруді жүзеге асыратын «желім». Жүйе ресурстарды алуды күтетіндіктен және көшіруді автоматты түрде жасайтындықтан, мен бұл туралы бұдан әрі алаңдамаймын.

hpkg пакеттерінің сиқыры

Қазіргі уақытта (көбінесе) пакеттер Хайкуда бағдарламаларды алу үшін қолданылады .hpkg. Қарапайым атпен алданбаңыз: .hpkg пішімі сіз кездестірген ұқсас атаулары бар басқа пішімдерге қарағанда мүлдем басқаша жұмыс істейді, оның нағыз керемет күштері бар.

Дәстүрлі пакет пішімдері мен бұл фактіге байланысты ұзақ уақыт бойы ренжідім: сіз бір нәрсені жүктейсіз (бума), ал екіншісі жүйеде орнатылған (пакет ішіндегі файлдар). Пакетті дәстүрлі жолмен орнату кезінде файлдарды басқару (мысалы, оларды жою) өте қиын. Және бәрі пакеттің мазмұнына байланысты бүкіл файлдық жүйеде шашыраңқы, соның ішінде орташа пайдаланушының жазуға рұқсаты жоқ жерлер. Бұл бағдарламалардың бүкіл класын тудырады - пакет менеджерлері. Бірақ бұрыннан орнатылған бағдарламалық жасақтаманы, мысалы, басқа құрылғыға, алынбалы дискіге немесе файл серверіне тасымалдау тіпті мүмкін емес болса, одан да қиын болады. Әдеттегі Linux негізіндегі жүйеде бірнеше жүз мыңнан миллиондаған жеке файлдар оңай болуы мүмкін. Айта кету керек, бұл нәзік және баяу, мысалы, жүйені бастапқыда орнату кезінде, әдеттегі бумаларды орнату, жаңарту және жою кезінде және жүктеу көлемін (түбірлік бөлім) басқа тасымалдаушыға көшіру кезінде.

Мен AppImage жобасында жұмыс істеп жатырмын, соңғы пайдаланушы қолданбаларына арналған ішінара балдақ. Бұл қолданбаны және оның барлық тәуелділіктерін қолданба іске қосылған кезде орнатылатын бір файлдық жүйе кескініне жинайтын бағдарламалық құралды тарату пішімі. Істі айтарлықтай жеңілдетеді, өйткені бірдей ImageMagick кенеттен файл менеджерінде қарапайым адамдар басқаратын жалғыз файлға айналады. Ұсынылған әдіс жобаның атауында көрсетілген бағдарламалық жасақтама үшін ғана жұмыс істейді, сонымен қатар өз проблемалары бар, өйткені Linux үшін бағдарламалық жасақтаманы жеткізумен айналысатын адамдар әрқашан көрсеткіні маған бағыттайды.

Хайкуға оралайық. Дәстүрлі пакеттік жүйелер мен кескінге негізделген бағдарламалық қамтамасыз етуді жеткізу арасындағы оңтайлы теңгерімді табу мүмкін болды ма? Оның пакеттері .hpkg іс жүзінде қысылған файлдық жүйе кескіндері. Жүйе жүктелген кезде ядро ​​барлық орнатылған және белсенді бумаларды шамамен келесі ядро ​​​​хабарларымен қосады:

KERN: package_daemon [16042853:   924] active package: "gawk-4.2.1-1-x86_64.hpkg"
KERN: package_daemon [16043023:   924] active package: "ca_root_certificates_java-2019_01_23-1-any.hpkg"
KERN: package_daemon [16043232:   924] active package: "python-2.7.16-3-x86_64.hpkg"
KERN: package_daemon [16043405:   924] active package: "openjdk12_default-12.0.1.12-1-x86_64.hpkg"
KERN: package_daemon [16043611:   924] active package: "llvm_libs-5.0.0-3-x86_64.hpkg"

Керемет, иә? Күте тұрыңыз, ол одан да салқын болады!

Өте ерекше пакет бар:

KERN: package_daemon [16040020:   924] active package: "haiku-r1~beta1_hrev53242-1-x86_64.hpkg"

Оның құрамында ядроны қоса алғанда өте минималистік операциялық жүйе бар. Сенсеңіз де, сенбесеңіз де, ядроның өзі жүктеу көлемінен (түбір бөлімі) жойылмайды, бірақ пакеттен өз орнына мұқият жүктеледі. .hpkg. Мәссаған! Мен Хайкудың жалпы күрделілігі мен бірізділігінің бір бөлігі ядро ​​мен негізгі пайдаланушы кеңістігінен бастап пакетті басқару мен орындалу уақытының инфрақұрылымына дейін бүкіл жүйені бір команда бірлесіп жасауынан туындайтынын жоғарыда айттым. Linux жүйесінде осындай нәрсені іске қосу үшін қанша түрлі топтар мен командалар қажет болатынын елестетіп көріңіз [Мен PuppyLinux жобасын елестетемін - шамамен. аудармашы]. Содан кейін бұл тәсілді дистрибуцияларға енгізу үшін қанша уақыт қажет болатынын елестетіп көріңіз. Олар айтады: қарапайым есепті алыңыз, оны әртүрлі орындаушыларға бөліңіз, сонда ол қиындап кетеді, енді оны шешу мүмкін болмайды. Хайку бұл жағдайда менің көзімді ашты. Менің ойымша, дәл қазір Linux-та болып жатқан нәрсе (Linux бұл жағдайда Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu стекіне арналған ұжымдық термин болып табылады).

hpkg көмегімен жүйені кері қайтару

Келесі жағдай қаншалықты жиі орын алады: жаңарту сәтті болды, содан кейін бірдеңе дұрыс жұмыс істемей жатыр ма? Кәдімгі пакет менеджерлерін пайдалансаңыз, жүйенің күйін жаңа бумалар орнатылмай тұрған уақытқа қайтару қиын (мысалы, бірдеңе дұрыс болмаған жағдайда). Кейбір жүйелер файлдық жүйенің суреті түріндегі уақытша шешімдерді ұсынады, бірақ олар өте ауыр және барлық жүйелерде қолданылмайды. Хайку мұны пакеттер арқылы шешеді .hpkg. Жүйеде пакеттер өзгерген сайын, ескі пакеттер жойылмайды, бірақ жүйеде келесідей ішкі каталогтарда сақталады. /Haiku/system/packages/administrative/state-<...>/ үнемі. Аяқталмаған операциялар өз деректерін ішкі каталогтарда сақтайды /Haiku/system/packages/administrative/transaction-<...>/.

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Мазмұны /Haiku/system/packages/administrative. «күй...» каталогтарында белсенді бумалардың атаулары бар мәтіндік файлдар, ал «транзакция...» каталогтарында бумалардың өздері болады.

«Ескі белсенді күй», яғни. тізім .hpkg өзгерістерге дейін белсенді пакеттер мәтіндік файлдағы файл менеджеріндегі әрбір әрекеттен кейін жазылады /Haiku/system/packages/administrative/state-<...>/activated-packages. Осыған ұқсас жаңа «белсенді күй» мәтіндік файлда жазылады /Haiku/system/packages/administrative/activated-packages.

анықтамалық /Haiku/system/packages/administrative/state-<...>/ тек осы күйдің белсенді бумаларының тізімі бар мәтіндік файлды қамтиды (бумаларды жоюсыз орнату жағдайында), ал пакеттер жойылған немесе жаңартылған болса - күй каталогында бумалардың ескі нұсқалары бар.

Жүйе жүктелген кезде пакеттер тізімі негізінде пакеттерді белсендіру (монтаждау) туралы шешім қабылданады. Бұл қарапайым! Жүктеп алу кезінде бірдеңе дұрыс болмаса, жүктеу менеджеріне басқа, ескі тізімді пайдалануды айтуға болады. Мәселе шешілді!

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Хайку жүктеушісі. Әрбір кіру нүктесі сәйкес «белсенді күйді» көрсетеді

Маған қарапайым мәтіндік файлдарды түсінуге оңай атаулары бар «белсенді күй» тізімі ретінде пайдалану тәсілі ұнайды .hpkg. Бұл адамдар үшін емес машиналар үшін жасалғаннан мүлде айырмашылығы бар. шоғырда файлдық жүйедегі OSTree немесе Flatpak жүйесінен (Microsoft GUID деңгейінде).

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Уақыттың әрбір нүктесі үшін белсенді пакеттер тізімі

Конфигурация деректері

Шамасы, каталогта /Haiku/system/packages/administrative/writable-files бумаларға арналған конфигурация файлдарын қамтиды, бірақ олар жазылады. Өйткені, есіңізде болса, .hpkg тек оқуға арналған. Сондықтан бұл файлдарды жазу алдында бумалардан көшіру керек. Мағынасы бар.

.hpkg жүйесі үшін GUI интеграциясы

Енді осы жылтыр сөмкелердің қалай екенін көрейік .hpkg пайдаланушының жұмыс ортасына (UX) интеграцияны жеңу. Өйткені, Хайку жеке пайдалануға арналған. Жеке мен пайдаланушы тәжірибесін пакеттермен салыстырған кезде жолақты жоғары қойдым .app Macintosh жүйесінде бірдей тәжірибе бар .hpkg. Мен тіпті Linux жүйесіндегі жұмыс орталарымен жағдайды салыстырмаймын, өйткені бұл басқалармен салыстырғанда өте қорқынышты.

Келесі сценарийлер ойға оралады:

  • Мен пакеттің мазмұнын көргім келеді .hpkg
  • Мен пакетті орнатқым келеді
  • Мен пакетті алып тастағым келеді
  • Мен жүйеге пакеттің бөлігі ретінде кірген нәрсені жойғым келеді
  • Мен жүйеге пакеттің бөлігі ретінде келген нәрсені көшіргім келеді
  • Мен пакеттің барлық тәуелділіктерін жүктеп алғым келеді, ол әрбір Haiku қондырғысының бөлігі болмауы мүмкін (мысалы, менде интернетке кіру мүмкіндігі жоқ физикалық оқшауланған құрылғы бар).
  • Мен пакеттерімді (немесе олардың бір бөлігін) жүктеу көлемінен (түбірлік бөлімнен) бөлек басқа орынға бөлек жылжытқым келеді (өйткені, мысалы, менде онда орын жеткіліксіз).

Бұл менің күнделікті жұмысымдағы негізгі істердің көпшілігін қамтуы керек. Кәне, бастайық.

Пакет мазмұнын тексеру

Mac жүйесінде Мен жай ғана буманы ашу және Finder ішіндегі мазмұнын көру үшін оны тінтуірдің оң жақ түймешігімен басыңыз. Өйткені, шын мәнінде бұл жай ғана жасырын каталог! (Мен пакеттер бар екенін білемін .pkg қолданбалар болып табылмайтын жүйе бөлігі үшін, бірақ қарапайым пайдаланушылар көбінесе олармен әрекеттеспейді).

Хайкуда Мен буманы тінтуірдің оң жақ түймешігімен нұқып, ішінде не бар екенін көру үшін «Мазмұны» түймесін басыңыз. Бірақ мұнда екі рет басу арқылы ашу мүмкіндігі жоқ файлдардың тізімі ғана.
Қаптаманы (уақытша) орнатудың жолы болса, әлдеқайда жақсы болар еді .hpkg файл менеджері арқылы қарауға болады және пайдаланушы іске асыру туралы мәліметтер туралы алаңдамауы керек. (Айтпақшы, аша аласыз .hpkg пакетте Expander, ол оны кез келген басқа мұрағат сияқты орауы мүмкін).

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
HaikuDepot интерфейсі пакеттік файлдардың тізімін көруге мүмкіндік береді, бірақ, мысалы, README.md екі рет басу арқылы мазмұнды көру мүмкіндігі жоқ.

Mac осы санатта жеңеді, бірақ сіз қалаған HaikuDepot функциясын қосу тым қиын болмауы керек.

GUI арқылы пакетті орнату

Mac жүйесінде, дискідегі кескіндердің көпшілігі .dmg пакеттерді қамтиды .app. Диск кескінін екі рет басыңыз, содан кейін буманы көшіріңіз, мысалы, оны ішіне сүйреп апарыңыз /Applications Finder қолданбасында. Бұл мен үшін айтпаса да түсінікті, бірақ мен кейбір жаңадан келгендер мұны жеңе алмайтынын естідім. Әдепкі бойынша, Apple жүйелік каталогты «ұсынады». /Applications (NeXT-де ол желілік және жеке болды), бірақ қолданбаларды файл серверіне немесе ішкі каталогқа оңай қоюға болады. $HOME/Applications, егер сізге осылай ұнаса.

Хайкуда, буманы екі рет басыңыз, содан кейін «Орнату» түймесін басыңыз, бұл оңай болуы мүмкін емес. Мен пакетте HaikuPorts жүйесінде қол жетімді, бірақ әлі орнатылмаған тәуелділіктер болса, не болатынын сұраймын. Linux жүйесінде олар бұл жағдайда не істеу керектігін білмейді, бірақ шешім анық - пайдаланушыдан тәуелділіктерді жүктеп алу және орнату қажет пе деп сұраңыз. Дәл Хайку не істейді.

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Мен «санитет» бумасын қолмен жүктеп алдым және оны басқанмын, пакет менеджері оның тәуелділіктерін қайдан алуға болатынын біледі (егер репозиторийлер жүйеде тіркелген болса). Әрбір Linux дистрибутиві мұны істей алмайды.

Тағы бір әдіс - файл менеджерін пайдалану, жай сүйреп апарыңыз .hpkg пакетте немесе ішінде /Haiku/system/packages (жүйе бойынша орнату үшін, әдепкі бойынша) немесе ішінде /Haiku/home/config/packages (жеке орнату үшін; тінтуірді екі рет басқанда қол жетімді емес - мені осы жерде «конфигурация» сөзі әлі де тітіркендіреді, бұл мен үшін бұл жағдайда «параметрлер» синонимі). Көптеген пайдаланушылар тұжырымдамасы тіпті Хайку үшін әлі қол жетімді емес (сондықтан болар, бұл соншалықты қарапайым - мен білмеймін, мүмкін, көп пайдаланушы мүмкіндіктері жұмыс үстелінің жұмыс үстелі ортасы үшін қажетсіз жағдайды қиындатады).

Хайку бұл санатта жеңіске жетеді, себебі ол тек қолданбалармен ғана емес, жүйелік бағдарламалармен де жұмыс істей алады.

GUI ішінен буманы жою

Mac жүйесінде, қолданба белгішесін қоқыс жәшігіне сүйреп апару керек, және бәрі осы. Оңай!

Хайкуда, біріншіден, сіз пакеттің жүйеде қай жерде орналасқанын табуыңыз керек, өйткені сіз оны дұрыс жерге сирек орнатасыз (жүйе бәрін жасайды). Әдетте сізге қарау керек /Haiku/system/packages (жүйе бойынша әдепкі орнатумен) немесе ішінде /Haiku/home/config/packages («конфигурация» қате атау екенін айттым ба?). Содан кейін қолданба жай ғана қоқыс жәшігіне сүйреп апарылады, және бұл.
Оңай! Дегенмен, мен олай айтпас едім. Міне, шынымен не болып жатыр:

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Қолданбаны қоқыс жәшігіне сүйреп апарсаңыз, осылай болады /Haiku/system/packages

QtQuickApp қолданбасындағы кешегі "Hello World" қолданбасын қоқыс жәшігіне жылжытуға тырыстым. Мен жүйелік каталогты жылжытуға тырыспадым, және барлық пакеттер жүйелік каталогта орнатылғандықтан, буманы жою мүмкін емес .hpkg өзгеріссіз «оның мазмұны». Қарапайым пайдаланушы қорқып, әдепкі бойынша тағайындалған «Болдырмау» түймесін басады.

Түсіндіреді Мырза. вадлсплаш:

Бұл постқа 10 жылдан асты. Сірә, ескерту пакеттің өзі жылжытылғанда ғана пайда болатындай етіп конфигурациялауымыз керек. Тұрақты пайдаланушылар мұны бәрібір істеудің қажеті жоқ.

Жарайды, мен мұны HaikuDepot арқылы жасауым керек шығар? Мен буманы екі рет шертемін /Haiku/system/packages, «Жою» түймесі пайда болғанша күтіңіз. Жоқ, (тек) «Орнату» бар. «Жою», сіз қайдасыз?

Мен жай ғана көңіл көтеру үшін орнатылған бумада «Орнату» түймесін бассам, не болатынын көруге тырыстым. Мынадай болып шығады:

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Бұл әлдеқашан орнатылған буманы орнатуға тырысқанда орын алады.

Келесі пайда болады:

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Алдыңғы терезеде «Өзгерістерді қолдану» түймесін бассаңыз, ол келесідей болады

Менің ойымша, бұл бағдарламалық жасақтама қатесі; қолданбаға сілтеме қазірдің өзінде бар. [автор сілтеме бермеді - шамамен. аудармашы]

Жылдам шешім: бума әлдеқашан бар болса, «Жою» түймесін қосыңыз /Haiku/system/packages, немесе ішінде /Haiku/home/config/packages.

HaikuDepot-та орнатылған бумалардың тізімін қараған кезде мен тізімде өз пакетімді көремін және оны жоя аламын.

Бұл санатта Mac жеңіске жетеді. Бірақ мен дұрыс орнату арқылы Haiku-дағы пайдаланушы тәжірибесі Mac-қа қарағанда жақсырақ болады деп елестете аламын. (Әзірлеушілердің бірі оны былай деп бағалады: «Көрсетілген функцияны HaikuDepot-қа қосу үшін бір сағаттан аз уақыт қалды, егер сіз аздап C++ білсеңіз», еріктілер бар ма?)

Пакеттен бір нәрсені алып тастау

Пакетті емес, қолданбаның өзін жоюға тырысайық .hpkg, ол қайдан шыққан («жай адамдар» үшін қандай да бір айырмашылық бар екеніне күмәнім бар).

Mac жүйесінде, пайдаланушы әдетте файлмен жұмыс істейді .dmgқолданбалар пакеті қайдан келеді .app. Әдетте суреттер .dmg жүктеулер каталогында жинақталады және пакеттерді пайдаланушы көшіреді /Applications. Көптеген пайдаланушылардың өздері не істеп жатқанын білмейді деп есептеледі, бұл гипотезаны Apple компаниясының бұрынғы қызметкері растайды. (Mac жүйесінде маған ұнамайтын нәрселердің бірі. Және, мысалы, AppImage-де қолданба мен оның ішінде болған бума арасында ешқандай айырмашылық жоқ. Белгішені себетке апарыңыз = бәрі де. Оңай!)

Хайкуда, арасында да бөлу бар apps/ и packages/, сондықтан бұл пайдаланушыларға түсінікті болғанына күмәнданамын. Бірақ қолданбаны сүйреп апарсаңыз не болады apps/ Себетке қосу:

Хайкумен алтыншы күнім: ресурстар, белгішелер мен пакеттер астында
Бұл файлдан алынған қолданбаны жою әрекеті кезінде орын алады .hpkg

Техникалық тұрғыдан бұл дұрыс (ең алдымен, қолданба тек оқуға арналған файлдық жүйеде орналастырылған), бірақ ол пайдаланушы үшін әсіресе пайдалы емес.

Жылдам шешім: оның орнына жою үшін GUI пайдалануды ұсыныңыз .hpkg

Тек көңіл көтеру үшін мен Alt+D пернелерін басу арқылы қолданбаны көшіруге тырыстым. Мен «Тек оқуға арналған томдағы нысандарды жылжыту немесе көшіру мүмкін емес» хабарын алдым. Және бәрі себебі /system (сонымен қатар /system/packages и /system/settings) — packagefs орнату нүктесі (оның шығыста қалай көрінетінін есте сақтаңыз df?). Өкінішке орай, команданың шығуы mount жағдайды түсіндірмейді (алдыңғы мақалалардың бірінде айтылғандай), mountvolume сіз іздеген нәрсені көрсетпейді (шамасы цикл арқылы орнатылған пакеттер .hpkg «томдар» деп есептелмейді), мен балама командаларды да ұмытып кеттім.

Бұл санатта AppImage-тен басқа ешкім жеңе алмады (бірақ бұл, шынын айтсам, біржақты пікір). Дегенмен, түзетуден кейін Haiku-дағы пайдаланушы тәжірибесі Mac-қа қарағанда жақсырақ болады деп елестетуге болады.

Ескерту: «бөлімге» қатысты «том» деген не екенін білу керек. Бұл «қалта» мен «каталог» қатынасына ұқсас болуы мүмкін: каталогтардың көпшілігі файл менеджерінде қалталар ретінде пайда болады, бірақ олардың барлығы емес (мысалы, файлдар ретінде қарастырылатын пакеттер). Мұндай дисплей мені ресми немқұрайлы ете ме?

Буманың мазмұнын басқа жүйеге көшіру

Mac жүйесінде, Мен ақымақтықпен пакетті сүйреп келемін .app, және тәуелділіктер буманың ішінде болғандықтан, олар бірге қозғалады.

Хайкуда, қолданбаны сүйреп апарамын, бірақ тәуелділіктер мүлде өңделмейді.

Жылдам шешім: Оның орнына барлық `.hpkg бумасын, егер бар болса, кез келген тәуелділіктермен бірге сүйреуді ұсынайық.

Бұл санатта Mac анық жеңеді. Кем дегенде, мен үшін олардың парадигмасын жақсы көремін. Мен оны Хайкуға көшіруім керек .hpkg қолданбаның орнына, бірақ жүйе маған мұны ұсынбайды ...

Барлық тәуелділіктері бар буманы жүктеп алыңыз

Әрбір құрылғы желіге үнемі қосыла бермейді. Керісінше, кейбір машиналар (иә, мен сізге қарап отырмын, қазіргі заманғы Windows, Mac және Linux) бұл туралы ұмытып кетеді. Мен үшін, мысалы, интернет-кафеге бару, алынбалы дискіге бағдарламалық құралды жүктеп алу, осы дискіні үйдегі компьютеріме енгізу және бәрі жұмыс істейтініне сенімді болуым маңызды [қауіпті жігіт, мұны Windows жүйесінде ... - шамамен. аудармашы].

Нәтижесінде мен Windows және Linux жүйесінде әдеттегіден әлдеқайда жиі орындалмаған тәуелділіктермен аяқталуға бейіммін.

Mac жүйесінде бұл әдетте бір файл, сізге тек жүктеп алу қажет .dmg. Көбінесе оның әдепкі бойынша MacOS өзі ұсынған тәуелділіктерден басқа ешқандай тәуелділігі жоқ. Ерекшелік - тиісті орындау ортасын қажет ететін күрделі қолданбалар, мысалы, java.

Хайкуда жүктеп алу бумасын .hpkg үшін, айталық, java-дағы бірдей қолданба жеткіліксіз болуы мүмкін, өйткені java мақсатты компьютерде болуы немесе болмауы мүмкін. Берілген пакет үшін барлық тәуелділіктерді жүктеп алудың жолы бар ма? .hpkg, Хайкуда әдепкі бойынша орнатылған, сондықтан әрбір Хайку жүйесінде болуы керек құрылғылардан басқа?

Mac бұл санатты шағын маржамен жеңеді.

Пікірлер мырза. ваддлесплаш:

Бағдарламаның барлық тәуелділіктерін пакеттер жиынтығы ретінде жинауға арналған бағдарламаны жазу .hpkg Хайкудың ішкі жұмысымен таныс адам үшін шамамен 15 минут жеткілікті. Егер оған нақты қажеттілік болса, оған қолдау қосу қиын емес. Бірақ мен үшін бұл сирек кездесетін жағдай.

Осы топтаманың келесі мақаласына дейін демімізді ұстайық.

Пакеттерді бөлек орынға жылжыту

Бұрын жазғанымдай, мен пакеттерімді орналастырғым келеді .hpkg (құдық немесе олардың бір бөлігі) жүктеу көлеміне (түбір бөлімі) әдеттегі орналастырудан бөлек арнайы орынға. Кәдімгі (оншалықты теориялық емес) жағдайда, мұның себебі, қаншалықты үлкен болса да, менің (кіріктірілген) дискілерімде бос орын үнемі таусылады. Мен әдетте қолданбаларым орналасқан сыртқы дискілерді немесе желілік ортақтастарды қосамын.

Mac жүйесінде Мен жай ғана пакеттерді жылжытып жатырмын .app Finder бағдарламасындағы алынбалы дискіге немесе желілік каталогқа көшіріңіз. Қолданбаны ашу үшін әлі де екі рет нұқып, әдетте жүктеу көлемінен ашамын. Жай!

Хайкуда, маған айтқандай, бұл менің жылжыту арқылы қол жеткізуге болады .hpkg бумаларды алынбалы дискіге немесе желілік каталогқа жүктейді, бірақ содан кейін оларды жүйеге орнату үшін консольдегі кейбір құжатталмаған пәрмендерді пайдалану қажет. Мен мұны тек GUI арқылы қалай жасау керектігін білмеймін.

Бұл санатта Mac жеңіске жетеді.

мырзаның айтуынша. ваддлесплаш:

Бұл қалыпты пайдалануға негізделген оңтайландыру. Егер бірнеше пайдаланушыдан сұраныс болса, біз оны жүзеге асырамыз. Кез келген жағдайда үшінші тараптың іске асыру мүмкіндігі бар.

Бұл туралы келесі мақалада айтатын боламыз.

Желілік каталогтар туралы айтатын болсақ, жергілікті компьютерге көшіруге немесе тікелей жергілікті желіден іске қосуға болатын қарапайым, ашылатын, желілік қолданбалардың (мысалы, Zeroconf) болуы (менің ойымша, LAN тараптары) жақсы болар еді. Әрине, әзірлеушілер арқылы бас тарту мүмкіндігі бар app_flags.

hpkg жүйесінің GUI-мен интеграциясы туралы қорытынды есеп

Бұл, ең алдымен, интеграцияның салыстырмалы жаңалығына байланысты деп ойлаймын .hpkg GUI әлі де көп нәрсені қажет етеді. Қалай болғанда да, UX тұрғысынан жақсартуға болатын бірнеше нәрсе бар ...

Тағы бір нәрсе: Kernel Debug Land

Мысалы, ядролық дүрбелең кезінде пәрмендерді енгізу мүмкіндігі жақсы болар еді syslog | grep usb. Хайкуда бұл Kernel Debug Land арқасында мүмкін. Егер бәрі ядролық дүрбелеңге ұшырамай-ақ жұмыс істейтін болса, бұл сиқырды қалай көруге болады? Alt+PrintScn+D пернелерін басу арқылы оңай (отлад мнемоникалық). Бірден есіме түсті Бағдарламалаушы кілті, бұл бастапқы Macintosh әзірлеушілеріне отладчикке кіруге мүмкіндік берді (әрине орнатылған болса).

қорытынды

Мен Хайку жүйесінің күрделілігі жұмысты жұмыс ортасына нақты назар аударатын, жүйенің барлық деңгейлері қол жетімді болатын шағын команда жүргізетінінен туындайтынын түсіне бастадым.
Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu әлемімен күрт қарама-қайшылық, мұнда бәрі абстракция абстракцияға отыратын және балдақпен қозғалатын дәрежеде кішкене бөліктерге бөлінген.
Сондай-ақ жүйенің қалай жұмыс істейтіні туралы түсінік болды .hpkg дәстүрлі пакет менеджерлерінің, Snappy, Flatpak, AppImage, тіпті btrfs ең жақсы тәжірибелерін біріктіреді және оларды Mac жүйесінің «жай жұмыс істейді» тәсілімен біріктіреді.

Менің басымда бірдеңе «қосылып» кеткендей болды, мен жүйенің қалай екенін түсіндім .hpkg қалай домалап кетуді біледі, тек оған қарап. Бірақ бұл мен емес, жүйенің сұлулығы мен қарапайымдылығы. Мұның көп бөлігі түпнұсқа Mac рухынан шабыттандырады.

Иә, браузерде шолу дірілдеп, ұлу сияқты жұмыс істеуі мүмкін, қолданбалар жетіспеуі мүмкін (Gtk жоқ, Electron - әзірлеушілер күрделілікпен жақсы үйлеспейді деген қорытындыға келді), бейне және 3D жеделдету мүлдем жоқ болуы мүмкін, бірақ мен бәрібір бұл жүйе ұнайды. Өйткені, бұл нәрселерді түзетуге болады және олар ерте ме, кеш пе пайда болады. Бұл уақыт мәселесі, мүмкін, көздің қызаруы.

Мен көмек ұсына алмаймын, бірақ қазірден басталады деп ойлаймын Жұмыс үстелінде Хайку жылы.

Кездейсоқ есептер

Мүмкін қазірдің өзінде сұраулар бар немесе оларды ашу керек пе?

  • BeScreenCapture Peek сияқты GIF файлына экспорттай алуы керек. Мұны Haiku үшін қол жетімді ffmpeg көмегімен жасауға болады. Сұрау.
  • Скриншот бағдарламалық құралы бүкіл экранды түсірудің орнына модальды терезені түсіре алмайды
  • WonderBrush қию құралын пайдаланып скриншоттарды қиып, нәтижені файлға сақтай алмайсыз
  • Маған әсіресе Хайкудағы қол курсоры ұнамайды, бірақ бұл жылы ностальгиялық сезіммен байланысты деп ойлаймын. Бұл Krita-да қию құралын пайдалану кезінде әсіресе тітіркендіреді, себебі ол дұрыс емес қиюға әкеледі (осы мақаладағы модальды диалогтардың скриншоттарын қараңыз). Айқас курсоры тамаша болар еді. Сұрау.

Өзіңіз көріңіз! Өйткені, Haiku жобасы жасалған DVD немесе USB-ден жүктеуге арналған кескіндерді ұсынады күн сайын. Орнату үшін суретті жүктеп алып, оны пайдаланып флэш-дискке жазыңыз Эчер

Сұрақтарыңыз бар ма? Сіздерді орыстілді курсқа шақырамыз жеделхат арнасы.

Қатені шолу: C және C++ тілінде аяққа қалай атуға болады. Haiku OS рецептер жинағы

-дан автор аударма: бұл Хайку туралы серияның алтыншы мақаласы.

Мақалалар тізімі: Бірінші Екінші Үшінші Төртінші Бесінші

Ақпарат көзі: www.habr.com

пікір қалдыру