Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında

TL; DR: Haiku xüsusi olaraq fərdi kompüterlər üçün nəzərdə tutulmuş əməliyyat sistemidir, ona görə də onun iş masası mühitini digərlərindən daha yaxşı edən bir neçə fənd var. Amma necə işləyir?

Son vaxtlar Mən gözlənilmədən yaxşı sistem olan Haiku kəşf etdim. Mən hələ də onun necə rəvan işləməsinə heyranam, xüsusən də Linux masa üstü mühitləri ilə müqayisədə. Bu gün kapotun altına baxacağam. Dərin başa düşmək üçün lazım olduqda, orijinal Macintosh, Mac OS X və Linux iş masası mühitləri ilə müqayisələr aparacağam (freedesktop.org saytından XDG standartı).

ELF fayllarında qaynaqlar

Dünən öyrəndim ki, IconOMatic ELF icra fayllarında rdef resurslarında nişanlar saxlaya bilir. Bu gün mən bunun həqiqətən necə işlədiyini görmək istəyirəm.

Resurslar? Sitat gətirmək etibarən Bruce Horn, Macintosh Finder-in orijinal müəllifi və Macintosh Resurs Menecerinin "atası":

Mən ənənəvi kodlaşdırmanın sərt təbiətindən narahatam. Mənim üçün dinamik olaraq heç bir şeyi dəyişdirmək imkanı olmayan kodda dondurulmuş bir proqram ideyası ən vəhşilikdir. İş zamanı mümkün qədər dəyişdirmək mümkün olmalıdır. Əlbəttə ki, proqram kodunun özü dəyişdirilə bilməz, amma kodu yenidən tərtib etmədən mütləq nəyisə dəyişdirmək olar?

Orijinal Macintosh-da onlar bu faylları "məlumat bölməsi" və "resurs bölməsi" ilə təmin etdilər ki, bu da nişanlar, tərcümələr və s. kimi şeyləri yadda saxlamağı inanılmaz dərəcədə asanlaşdırdı. icra edilə bilən fayllarda.

Mac-da bu istifadə olunur Yenidən Edit, birdən-birə - redaktə resursları üçün qrafik proqram.

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Orijinal Macintosh-da ResEdit

Nəticədə nişanları, menyu elementlərini, tərcümələri və s. redaktə etmək mümkün oldu. kifayət qədər asan, lakin onlar hələ də proqramlarla "səyahət edirlər".
Hər halda, bu yanaşmanın böyük çatışmazlığı var idi: o, yalnız Apple fayl sistemlərində işləyirdi, bu da Apple-ın Mac OS X-ə keçərkən “resurs bölməsindən” imtina etməsinin səbəblərindən biri idi.
Mac OS X-də Apple fayl sistemindən müstəqil həll istəyirdi, ona görə də onlar paketlər (NeXT-dən) konsepsiyasını, fayl meneceri tərəfindən "şəffaf obyektlər" kimi qəbul edilən qovluqları, məsələn, qovluqlar deyil, fayllar kimi qəbul etdilər. Formatda tətbiqi olan istənilən paket .app başqa şeylər arasında bir fayl var Info.plist (bir növ Apple-ın JSON və ya YAML ekvivalentində) tətbiq metadatasını ehtiva edir.

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Mac OS X proqram paketindən Info.plist faylı üçün düymələr.

Nişanlar, UI faylları və başqaları kimi resurslar paketdə fayllar kimi saxlanılır. Konsept əslində NeXT-də öz köklərinə qayıdırdı.

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
1.0-cu ildə NeXTSTEP 1989-da Mathematica.app: terminalda faylların kataloqu kimi, lakin qrafik fayl menecerində tək obyekt kimi görünür.

Haikunun əsaslandığı konsepsiyalar olan BeOS-a qayıdaq. Onun tərtibatçıları PEF-dən (PowerPC) ELF-ə (x86) keçərkən (Linux-da istifadə olunan kimi) ELF fayllarının sonuna resurs bölməsi əlavə etmək qərarına gəldilər. Özünə uyğun ELF bölməsindən istifadə etmədi, sadəcə olaraq ELF faylının sonuna əlavə edildi. Proqramın nəticəsi olaraq strip və binutilsdən olan başqaları isə bundan xəbərsizdirlər, sadəcə olaraq onu kəsirlər. Buna görə də, BeOS-da bir ELF faylına resurslar əlavə edərkən, onu Linux alətləri ilə manipulyasiya etməmək daha yaxşıdır.

İndi Haiku ilə nə baş verir? Əsasən, daha çox və ya daha az eynidir.

Nəzəri olaraq, resursları ELF-in istədiyiniz bölməsinə yerləşdirmək mümkün olardı. irc.freenode.net saytında #haiku kanalının tərtibatçılarına görə:

ELF ilə bölmə daha mənalı olardı... bunu belə etməməyimizin yeganə səbəbi BeOS-da etdiyimiz şeydir."
Və bunu indi dəyişməyin mənası yoxdur.

Resursların idarə edilməsi

Resurslar strukturlaşdırılmış “resurs” formatında yazılır: əsasən ölçüləri olan resursların siyahısı, sonra isə onların məzmunu. yadıma düşdü ar formatı.
Haikudakı resursları necə yoxlamaq olar? ResEdit kimi bir şey varmı?
Uyğun olaraq sənədləşdirmə:

Tətbiq paketində təqdim olunan resurslara baxmaq üçün icra olunan faylı kimi proqramın üzərinə sürükləyə bilərsiniz Resursçu. Siz həmçinin terminala gedib əmri işlədə bilərsiniz listres имя_файла.

Resursçu HaikuDepot-da mövcuddur, lakin o, mənim üçün sadəcə çökür.

ELF fayllarında resursları necə idarə etmək olar? İstifadə rsrc и rdef. rdef faylları toplanır rsrc. Fayl rdef düz mətn formatında saxlanılır, ona görə də onunla işləmək çox asandır. Fayl formatı rsrc ELF faylının sonuna əlavə olunur. Gəlin oynamağa çalışaq:

~> 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

Proqramdan istifadə edə bilərsiniz xres yoxlama və nəzarət üçün:

/> 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.
(...)

Yaxşı, cəhd edək?

/> 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

Resurslar və format haqqında daha çox rdef oxuya bilərsiniz burada.

Standart resurs növləri

Resurslara hər hansı bir şey qoya bilsəniz də, müəyyən edilmiş bir neçə standart növ var:

  • app_signature: MIME proqram növü, faylın açıq xəritələşdirilməsi, işə salınması, IPC və s.
  • app_name_catalog_entry: Tətbiq adı adətən ingilis dilində olduğundan, siz tərcümə edilmiş adların yerləşdiyi yerləri təyin edə bilərsiniz ki, müxtəlif dillərdən olan istifadəçilər istəsələr tərcümə edilmiş proqram adını görsünlər.
  • app_version: tam olaraq düşündüyünüz kimi
  • app_flags: göstərir registrar ərizəni necə emal etmək olar. Düşünürəm ki, burada göründüyündən daha çox şey var. Məsələn, var B_SINGLE_LAUNCH, istifadəçi hər dəfə tələb etdikdə sistemi yeni tətbiqetmə prosesini işə salmağa məcbur edir (eyni prinsip Linux-da əksər proqramlar üçün istifadə olunur). Yemək B_MULTIPLE_LAUNCH, prosesin işləməsinə səbəb olur hər bir fayl. Nəhayət var B_EXCLUSIVE_LAUNCH, bu, istifadəçilərin nə qədər tez-tez işə salmasından asılı olmayaraq, sistemi eyni anda yalnız bir prosesi işə salmağa məcbur edir (məsələn, Firefox Linux-da belə işləyir; funksiyadan istifadə edərək Qt proqramlarında eyni nəticə əldə edilə bilər. QtSingleApplication). ilə tətbiqlər B_EXCLUSIVE_LAUNCH istifadəçi onları yenidən işə salmağa çalışdıqda xəbərdar edilir: məsələn, istifadəçinin onların köməyi ilə açmaq istədiyi faylın yolunu alırlar.
  • vector_icon: Vektor proqram piktoqramı (BeOS-da vektor nişanları yox idi, əksər proqramların yerinə onların icra olunan fayllarında iki rastr nişanı var idi).

Əlbəttə ki, istədiyiniz identifikatorları və növləri olan resursları əlavə edə bilərsiniz və sonra onları tətbiqin özündə və ya sinifdən istifadə edərək digər tətbiqlərdə oxuya bilərsiniz. BResources. Ancaq əvvəlcə nişanların maraqlı mövzusuna baxaq.

Hayku üslubunda vektor nişanları

Əlbəttə ki, yalnız Haiku ən yaxşı ikon formatını seçmədi; bu hissədə Linux masa üstü mühitləri ilə vəziyyət idealdan uzaqdır:

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

Buna baxanda artıq onun necə bir parça olduğunu hiss edə bilərsiniz.

Əlbəttə ki, başa düşdüyünüz kimi, vektor nişanlarını ehtiva edən miqyaslana bilən var. Bəs niyə başqa bir şey var? Çünki kiçik ölçülərdə vektor qrafikasının çəkilməsinin nəticəsi idealdan az ola bilər. İstərdim ki, müxtəlif ölçülər üçün optimallaşdırılmış müxtəlif seçimlər olsun. Linux masa üstü mühitlərində bu, fayl sistemi boyunca müxtəlif ölçülü nişanlar səpələməklə əldə edilir.

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

Diqqət yetirin: Firefox-un müxtəlif versiyaları anlayışı yoxdur. Beləliklə, sistemdə bir proqramın bir neçə versiyasının olması vəziyyətini zərif şəkildə idarə etmək mümkün deyil.

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Müxtəlif versiyalarda müxtəlif Firefox nişanları. Hazırda Linux-da müxtəlif qoltuqağaqlar olmadan bunu idarə etmək mümkün deyil.

Mac OS X bunu bir az daha incə idarə edir:

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

Bir fayl olduğunu görmək olar firefox.icns paketdə Firefox.app, bütün ölçüləri ehtiva edir ki, eyni proqramın müxtəlif versiyalarında fərqli nişanlar olsun.
Daha yaxşı! Nişanlar proqramla səyahət edir, bütün resurslar bir fayldadır.

Haikuya qayıdaq. İstisnalar olmadan ağılları əsən həll. görə sənədləşdirmə:

Kiçik ölçülər və sürətli göstərmə üçün yüksək optimallaşdırılmış xüsusi HVIF formatı hazırlanmışdır. Buna görə də, bizim ikonlarımız əksər hallarda rastr və ya geniş istifadə olunan SVG formatından daha kiçikdir.

Və onlar hələ də optimallaşdırılıb:

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Digər formatlarla müqayisədə HVIF-də ikon ölçüləri.

Fərq böyüklük sırasıdır!

Ancaq sehr burada bitmir. Eyni HVIF vektor formatı olmasına baxmayaraq, göstərilən ölçüdən asılı olaraq müxtəlif səviyyəli detallar göstərə bilər.

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Render ölçüsündən asılı olaraq müxtəlif detal səviyyələri (LOD).

İndi çatışmazlıqlar haqqında: SVG-ni götürə, onu ImageMagick-ə atıb bir gün adlandıra bilməzsiniz; HVIF formatında bir ikona yaratmaq üçün bir neçə dövrə keçməlisiniz. Burada izahatlar. Bununla belə, IconOMatic SVG-ni olduqca qüsurlu şəkildə idxal edə bilər; SVG detallarının təxminən 90%-i müəyyən ehtimalla idxal olunur, qalan 10%-i isə əl ilə konfiqurasiya və dəyişdirilməlidir. HVIF-in sehrini necə etdiyi haqqında daha çox oxuyun olar blogda Leah Ganson

Tətbiqə simvol əlavə etmək

İndi yaradılmış paketə ikona əlavə edə bilərəm sonuncu dəfə, alınan bütün məlumatları nəzərə alaraq.
Mən “Salam, Dünya” QtQuickApp-im üçün öz ikonamı çəkmək üçün o qədər də həvəsli olmadığım üçün onu Qt Creator-dan çıxarıram.

/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

Simgenin kopyalandığını yoxlayaq:

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

Yaxşı görünür, amma niyə yeni ikon kopyalananda görünmür?

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Kopyalanan VICN:101:BEOS:ICONs fayl menecerində hələ tətbiq nişanı kimi istifadə edilmir

Nə darıxdım?

Tərtibatçı şərhi:

Bir fayl yaratmalıyıq rdef bütün resurslarla, sonra əmri yerinə yetirin rc имя.rdef, bu faylı yaradacaq .rsrc. Sonra əmri yerinə yetirməlisiniz resattr -o имя_бинарника имя.rsrc. Ən azı skriptlərimə nişanlar əlavə etmək üçün bu kimi əmrlərdən istifadə edirəm.

Yaxşı, mən atribut yox, resurs yaratmaq istədim. Mən həqiqətən çaşmışam.

Fayl sistemindən istifadə edərək ağıllı keşləmə

ELF atributlarının açılması və oxunması yavaşdır. Yuxarıda yazdığım kimi, simvol faylın özündə resurs kimi yazılıb. Bu üsul daha etibarlıdır və başqa bir fayl sisteminə köçürmədən sağ qalmağa imkan verir. Bununla belə, o, məsələn, fayl sistemi atributuna da kopyalanır BEOS:ICON. Bu, yalnız BFS kimi müəyyən fayl sistemlərində işləyir. Sistem tərəfindən göstərilən nişanlar (İzləyici və İş Panelində) bu genişləndirilmiş atributdan oxunur, çünki bu həll tez işləyir. Bəzi yerlərdə (sürətin vacib olmadığı yerlərdə, məsələn, tipik "Haqqında" pəncərəsi) sistem simvolu birbaşa fayldakı mənbədən alır. Amma bu son deyil. Unutmayın ki, Mac-da istifadəçilər proqramların, kataloqların, sənədlərin nişanlarını özlərininki ilə əvəz edə bilərdilər, çünki Mac-da bu “vacib” işləri görmək mümkündür, məsələn yeni Slack simvolunu əvvəlki ilə əvəz etmək. Haiku-da siz resursu (faylda olan) proqramla birlikdə gələn orijinal ikona kimi, atributu (BFS fayl sistemində) istifadəçiyə istədiyi kimi dəyişikliklər etməyə imkan verən bir şey kimi düşünməlisiniz (baxmayaraq ki, işarə, ikonanın üstünə xüsusi ikona daxil etmək üçün GUI isteğe bağlıdır).

Fayl sisteminin atributlarının yoxlanılması

Ilə resaddr Fayl sisteminin atributlarını yoxlamaq və təyin etmək mümkündür.

/> 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.
(...)

Bu, mahiyyətcə (etibarlı) resurslar və (sürətli) fayl sistemi atributları arasında irəli və geri çevrilməni həyata keçirən "yapışqan"dır. Sistem resursları qəbul etməyi gözlədiyindən və kopyalamağı avtomatik etdiyi üçün bundan sonra narahat olmayacağam.

hpkg paketlərinin sehri

Hal-hazırda (ən çox) paketlər Haiku-da proqramlar əldə etmək üçün istifadə olunur .hpkg. Sadə ada aldanmayın: .hpkg formatı qarşılaşdığınız oxşar adlara malik digər formatlardan tamamilə fərqli işləyir, onun real super gücləri var.

Ənənəvi paket formatları ilə bu fakta görə uzun müddət əsəbiləşdim: siz bir şeyi (paketi) yükləyirsiniz, digəri isə sistemdə quraşdırılıb (paketin içərisindəki fayllar). Paketi ənənəvi şəkildə quraşdırarkən faylları idarə etmək (məsələn, onları silmək) olduqca çətindir. Və hamısı paketin məzmununa görə bütün fayl sisteminə səpələnmişdir, o cümlədən orta istifadəçinin yazma imkanı olmayan yerlər. Bu, bütün proqramlar sinfinə səbəb olur - paket menecerləri. Ancaq artıq quraşdırılmış proqramı, məsələn, başqa bir maşına, çıxarıla bilən diskə və ya fayl serverinə köçürmək tamamilə mümkün olmasa da, daha da çətinləşir. Tipik bir Linux əsaslı sistemdə asanlıqla bir neçə yüz mindən milyonlarla fərdi fayl ola bilər. Sözsüz ki, bu, həm kövrək, həm də yavaşdır, məsələn, bir sistemi ilkin quraşdırarkən, adi paketləri quraşdırarkən, yeniləyərkən və silərkən, yükləmə həcmini (kök bölməsini) başqa bir mühitə köçürərkən.

Mən son istifadəçi proqramları üçün qismən dəstək olan AppImage layihəsi üzərində işləyirəm. Bu, tətbiqi və onun bütün asılılıqlarını proqram işə salındıqda quraşdırılan vahid fayl sistemi şəklinə toplayan proqram paylama formatıdır. Eyni ImageMagick birdən bir fayl menecerində sadəcə ölümcül insanlar tərəfindən idarə olunan tək bir fayla çevrildiyi üçün işləri əhəmiyyətli dərəcədə asanlaşdırır. Təklif olunan metod layihənin adında əks olunduğu kimi yalnız proqram təminatı üçün işləyir və həmçinin Linux üçün proqram təminatının çatdırılmasında iştirak edən insanlar oxu həmişə mənə yönəltdiyi üçün öz problemləri də var.

Haikuya qayıdaq. Ənənəvi paket sistemləri ilə təsvirə əsaslanan proqram təminatı arasında optimal balansı tapmaq mümkün olubmu? Onun paketləri .hpkg əslində sıxılmış fayl sistemi şəkilləri. Sistem işə salındıqda, nüvə bütün quraşdırılmış və aktiv paketləri təxminən aşağıdakı nüvə mesajları ilə quraşdırır:

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"

Əla, hə? Orada dayanın, daha da sərin olacaq!

Çox xüsusi paket var:

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

O, nüvə də daxil olmaqla çox minimalist əməliyyat sistemini ehtiva edir. İnanın və ya inanmayın, hətta nüvənin özü də yükləmə həcmindən (kök bölməsindən) çıxarılmır, ancaq paketdən diqqətlə yerinə yüklənir. .hpkg. Heyrət! Vay! Mən artıq qeyd etdim ki, Haikunun ümumi təkmilliyinin və ardıcıllığının bir hissəsinin nüvədən və əsas istifadəçi sahəsindən tutmuş paket idarəçiliyinə və iş vaxtı infrastrukturuna qədər bütün sistemin bir komanda tərəfindən birgə işlənib hazırlanmasından qaynaqlanır. Təsəvvür edin ki, Linux-da belə bir şeyi idarə etmək üçün nə qədər müxtəlif qruplar və komandalar lazım olacaq [Mən PuppyLinux layihəsini təsəvvür edirəm - təqribən. tərcüməçi]. Sonra təsəvvür edin ki, bu yanaşmanın paylanmalara tətbiq edilməsi nə qədər vaxt aparacaq. Deyirlər: sadə bir məsələ götür, onu müxtəlif ifaçılar arasında böl, o qədər mürəkkəbləşəcək ki, daha onu həll etmək mümkün olmayacaq. Haiku bu halda mənim gözlərimi açdı. Düşünürəm ki, hazırda Linux-da baş verənlər məhz budur (bu halda Linux Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu yığını üçün kollektiv termindir).

hpkg istifadə edərək sistemin geri qaytarılması

Aşağıdakı vəziyyət nə qədər tez-tez baş verir: yeniləmə uğurlu oldu və sonra bir şeyin lazım olduğu kimi işləmədiyi ortaya çıxdı? Əgər siz adi paket menecerlərindən istifadə edirsinizsə, sistemin yeni paketlərin quraşdırılmasından əvvəlki vaxta (məsələn, nəsə səhv getdiyi halda) vəziyyətini qaytarmaq çətindir. Bəzi sistemlər fayl sistemi snapshotları şəklində həll yolları təklif edir, lakin onlar olduqca çətin olur və bütün sistemlərdə istifadə edilmir. Haiku bunu paketlərdən istifadə edərək həll edir .hpkg. Sistemdə paketlər dəyişdikdə köhnə paketlər silinmir, sistemdə aşağıdakı kimi alt kataloqlarda saxlanılır. /Haiku/system/packages/administrative/state-<...>/ daim. Yarımçıq əməliyyatlar öz məlumatlarını alt kataloqlarda saxlayır /Haiku/system/packages/administrative/transaction-<...>/.

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Məzmun /Haiku/system/packages/administrative. “State...” kataloqlarında aktiv paketlərin adları olan mətn faylları, “transaction...” kataloqlarında isə paketlərin özləri var.

"Köhnə aktiv vəziyyət", yəni. siyahı .hpkg dəyişikliklərdən əvvəl aktiv olan paketlər mətn faylında fayl menecerində hər əməliyyatdan sonra qeyd olunur /Haiku/system/packages/administrative/state-<...>/activated-packages. Bənzər şəkildə, mətn faylında yeni "aktiv vəziyyət" yazılır /Haiku/system/packages/administrative/activated-packages.

Directory /Haiku/system/packages/administrative/state-<...>/ yalnız bu vəziyyətin aktiv paketlərinin siyahısı olan mətn faylını ehtiva edir (paketlərin silinmədən quraşdırılması halında) və paketlər silinibsə və ya yenilənibsə - dövlət kataloqunda paketlərin köhnə versiyaları var.

Sistem yükləndikdə paketlərin siyahısı əsasında paketləri aktivləşdirmək (montaj etmək) haqqında qərar qəbul edilir. Bu qədər sadədir! Yükləmə zamanı bir şey səhv olarsa, siz yükləmə menecerinə fərqli, köhnə siyahıdan istifadə etməyi söyləyə bilərsiniz. Problem həll edildi!

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Haiku yükləyicisi. Hər bir giriş nöqtəsi müvafiq "aktiv vəziyyət" göstərir

Mən başa düşülən adlarla "aktiv vəziyyət" siyahısı kimi sadə mətn fayllarına sahib olmaq yanaşmasını bəyənirəm .hpkg. Bu, insanlar üçün deyil, maşınlar üçün tikilməklə tamamilə ziddiyyət təşkil edir. bir dəstədə fayl sistemindəki OSTree və ya Flatpak-dan (Microsoft GUID ilə eyni səviyyədə).

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Hər bir zaman üçün aktiv paketlərin siyahısı

Konfiqurasiya məlumatları

Görünür, kataloqda /Haiku/system/packages/administrative/writable-files paketlər üçün konfiqurasiya fayllarını ehtiva edir, lakin onlar yazıla bilər. Axı, xatırladığınız kimi, .hpkg quraşdırılmış yalnız oxumaq üçün. Beləliklə, bu faylları yazmadan əvvəl paketlərdən kopyalanmalıdır. Mənası var.

.hpkg sistemi üçün GUI inteqrasiyası

İndi bu parlaq çantaların necə olduğuna baxaq .hpkg istifadəçinin iş mühitinə (UX) inteqrasiyanın öhdəsindən gəlmək. Axı, Haiku şəxsi istifadə üçün nəzərdə tutulub. Şəxsən mən istifadəçi təcrübəsini paketlərlə müqayisə edərkən barı yüksək qoyuram .app Macintosh-da eyni təcrübə ilə .hpkg. Vəziyyəti Linux-da iş mühitləri ilə müqayisə də etməyəcəyəm, çünki digərləri ilə müqayisədə tamamilə dəhşətlidir.

Aşağıdakı ssenarilər ağla gəlir:

  • Mən paketin məzmununa baxmaq istəyirəm .hpkg
  • Mən paket quraşdırmaq istəyirəm
  • Mən paketi çıxarmaq istəyirəm
  • Mən paketin bir hissəsi kimi sistemə daxil olan bir şeyi silmək istəyirəm
  • Mən paketin bir hissəsi kimi sistemə daxil olan bir şeyi kopyalamaq istəyirəm
  • Mən paketin bütün asılılıqlarını yükləmək istəyirəm, hər Haiku quraşdırmasının bir hissəsi olmaya bilər (məsələn, məndə internetə çıxışı olmayan fiziki cəhətdən təcrid olunmuş maşın var.)
  • Paketlərimi (və ya onların bir hissəsini) ayrıca yükləmə həcmindən (kök bölməsindən) ayrı başqa yerə köçürmək istəyirəm (çünki, məsələn, orada kifayət qədər yer yoxdur).

Bu, mənim gündəlik işimdən tutmuş əsas işlərin əksəriyyətini əhatə etməlidir. Yaxşı, başlayaq.

Paketin məzmunu yoxlanılır

Mac-da Paketi açmaq və Finder-də məzmuna baxmaq üçün sadəcə olaraq üzərinə sağ klikləyirəm. Axı, əslində bu, sadəcə maskalanmış bir kataloqdur! (Bilirəm ki, paketlər var .pkg sistemin tətbiqi olmayan bir hissəsi üçün, lakin adi istifadəçilər çox vaxt onlarla əlaqə qurmur).

Haiku haqqında Paketin üzərinə sağ klikləyirəm, sonra içərisində nə olduğunu görmək üçün "Məzmun" üzərinə klikləyirəm. Ancaq burada sadəcə iki dəfə klikləməklə onları açmaq imkanı olmayan faylların siyahısı var.
Paketi (müvəqqəti olaraq) quraşdırmaq üçün bir yol olsa, daha yaxşı olardı .hpkg fayl meneceri vasitəsilə baxıla bilər və istifadəçi icra detalları barədə narahat olmayacaq. (Yeri gəlmişkən, aça bilərsiniz .hpkg paket içərisində Expander, hər hansı digər arxiv kimi onu aça bilər).

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
HaikuDepot interfeysi sizə paket fayllarının siyahısına baxmaq imkanı verir, lakin məsələn, README.md üzərinə iki dəfə klikləməklə məzmuna baxmaq imkanı yoxdur.

Mac bu kateqoriyada qalib gəlir, lakin istədiyiniz HaikuDepot funksionallığını əlavə etmək çox çətin olmamalıdır.

GUI vasitəsilə paketin quraşdırılması

Mac-da, əksər disk şəkilləri .dmg paketləri ehtiva edir .app. Disk şəklinə iki dəfə klikləyin və sonra paketi, məsələn, içəri sürükləməklə kopyalayın /Applications Finder-də. Bu, mənim üçün sözsüzdür, amma eşitmişəm ki, bəzi yeni başlayanlar bununla məşğul ola bilməyəcəklər. Varsayılan olaraq, Apple sistem miqyaslı kataloqu "təklif edir" /Applications (NeXT-də həm fərdi, həm də şəbəkəli idi), lakin siz proqramlarınızı asanlıqla fayl serverinə və ya alt kataloqa yerləşdirə bilərsiniz. $HOME/Applications, bu şəkildə xoşunuza gəlirsə.

Haiku haqqında, paketə iki dəfə klikləyin, sonra “Quraşdır” üzərinə klikləyin, bu, asan ola bilməz. Bir paketdə HaikuPorts-da mövcud olan, lakin hələ quraşdırılmamış asılılıqlar varsa, nə baş verəcəyini düşünürəm. Linux-da onlar həqiqətən bu vəziyyətdə nə edəcəklərini bilmirlər, lakin həll yolu açıqdır - istifadəçidən asılılıqları yükləməli və quraşdırmalı olduqlarını soruşun. Haiku nə edir.

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Mən 'ağıllılıq' paketini əl ilə endirdim və üzərinə kliklədim, paket meneceri onun asılılıqlarını haradan əldə edəcəyini bilir (ehtimal ki, repozitoriyalar sistemdə artıq qeydiyyatdan keçib). Hər Linux paylanması bunu edə bilməz.

Başqa bir yol fayl menecerindən istifadə etməkdir, sadəcə sürükləyib buraxın .hpkg paket və ya içərisində /Haiku/system/packages (sistem miqyasında quraşdırma üçün, standart olaraq) və ya daxil /Haiku/home/config/packages (fərdi quraşdırma üçün; iki dəfə kliklədikdə mövcud deyil - bu yerdəki "konfiqurasiya" sözü məni hələ də qıcıqlandırır, bu halda mənim üçün "parametrlər" ilə sinonimdir). Və çoxsaylı istifadəçi anlayışı hələ Haiku üçün belə mövcud deyil (bu, yəqin ki, bu qədər sadədir - bilmirəm, bəlkə də çox istifadəçi imkanları iş masası üçün iş masası mühiti üçün lazımsız olaraq çətinləşdirəcək).

Haiku bu kateqoriyada qalib gəlir, çünki o, təkcə proqramlarla deyil, həm də sistem proqramları ilə işləyə bilir.

GUI-dən paketin çıxarılması

Mac-da, proqram simgesini zibil qutusuna sürükləməlisiniz və hamısı budur. Asanlıqla!

Haiku haqqında, birincisi, paketin sistemdə harada yerləşdiyini tapmaq lazımdır, çünki onu nadir hallarda düzgün yerə quraşdırırsınız (sistem hər şeyi edir). Adətən içəri baxmaq lazımdır /Haiku/system/packages (sistem miqyasında standart quraşdırma ilə) və ya daxil /Haiku/home/config/packages (Qeyd etdimmi ki, “konfiqurasiya” yanlış addır?). Sonra proqram sadəcə zibil qutusuna sürüklənir və budur.
Asanlıqla! Halbuki mən bunu deməzdim. Budur, həqiqətən nə baş verir:

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Proqramı zibil qutusuna sürükləsəniz belə olur /Haiku/system/packages

Sadəcə QtQuickApp-da dünənki "Salam Dünya" tətbiqini zibil qutusuna köçürməyə çalışdım. Sistem kataloqunu köçürməyə çalışmadım, və bütün paketlər sistem kataloqunda quraşdırıldığından paketi çıxarmaq mümkün deyil .hpkg dəyişmədən "onun məzmunu". Adi bir istifadəçi qorxar və standart olaraq təyin edilmiş "Ləğv et" düyməsini basar.

izah edir Cənab. vaddlesplash:

Bu postun 10 ildən çox yaşı var. Çox güman ki, onu konfiqurasiya etməliyik ki, xəbərdarlıq yalnız paketin özü köçürüldükdə görünsün. Daimi istifadəçilərin hər halda bunu etməsinə ehtiyac yoxdur.

Yaxşı, bəlkə bunu HaikuDepot istifadə edərək etməliyəm? Paketin üzərinə iki dəfə klikləyirəm /Haiku/system/packages, “Sil” düyməsinin görünməsini gözləyirik. Xeyr, (yalnız) "Quraşdır" var. "Sil", haradasan?

Sadəcə əylənmək üçün artıq quraşdırılmış paketdə “Quraşdır” düyməsini klikləsəm nə baş verəcəyini görməyə çalışdım. Belə çıxır:

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Bu, artıq quraşdırılmış paketi quraşdırmağa çalışdığınız zaman baş verir.

Sonrakı görünür:

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Əvvəlki pəncərədə "Dəyişiklikləri tətbiq et" düyməsini klikləsəniz, bu belə görünəcəkdir

Güman edirəm ki, bu proqram xətasıdır; proqrama keçid artıq oradadır. [müəllif bir keçid vermədi - təqribən. tərcüməçi]

Tez həll: Əgər paket artıq varsa, "Sil" düyməsini əlavə edin /Haiku/system/packagesvə ya daxilində /Haiku/home/config/packages.

HaikuDepot-da quraşdırılmış paketlərin siyahısına baxarkən mən paketimi siyahıda görürəm və onu silə bilərəm.

Mac bu kateqoriyada qalib gəlir. Ancaq təsəvvür edə bilərəm ki, düzgün quraşdırma ilə Haiku-da istifadəçi təcrübəsi Mac-dan daha yaxşı olacaq. (Tərtibatçılardan biri bunu belə qiymətləndirdi: “Bir az C++ bilirsinizsə, göstərilən funksionallığı HaikuDepot-a əlavə etmək üçün bir saatdan az vaxt lazımdır”, könüllülər varmı?)

Paketdən bir şey çıxarmaq

Paketi yox, proqramın özünü silməyə çalışaq .hpkg, haradan gəldi ("sadəcə ölümlülər" üçün hər hansı bir fərq olduğuna şübhə edirəm).

Mac-da, istifadəçi adətən faylla işləyir .dmgproqram paketi haradan gəlir .app. Adətən şəkillər .dmg yükləmələr kataloqunda toplanır və paketlər istifadəçi tərəfindən kopyalanır /Applications. Hesab olunur ki, bir çox istifadəçilərin özləri nə etdiklərini bilmirlər, bu fərziyyəni keçmiş Apple işçisi təsdiqləyir. (Mac-da bəyənmədiyim şeylərdən biri. Və məsələn, AppImage ilə proqramla onun yerləşdiyi paket arasında heç bir fərq yoxdur. İşarəni zibil qutusuna sürükləyin = budur. Asan!)

Haiku haqqında, arasında bir bölgü də var apps/ и packages/, buna görə də bunun istifadəçilər üçün daha aydın olmasına şübhə edirəm. Ancaq tətbiqi buradan sürükləsəniz nə olar apps/ Səbətə əlavə edin:

Haiku ilə altıncı günüm: resursların, nişanların və paketlərin başlığı altında
Fayldan götürülmüş proqramı silməyə çalışdığınız zaman belə olur .hpkg

Texniki cəhətdən düzgündür (hər şeydən sonra, proqram ilk növbədə yalnız oxunan fayl sistemində yerləşdirilib), lakin istifadəçi üçün xüsusilə faydalı deyil.

Tez həll: əvəzinə silmək üçün GUI istifadə etməyi təklif edin .hpkg

Sadəcə əylənmək üçün Alt+D düymələrini basaraq tətbiqin nüsxəsini çıxarmağa çalışdım. "Yalnız oxunan həcmdə obyektləri köçürmək və ya kopyalamaq mümkün deyil" mesajını aldım. Və hamısı ona görə /system (bundan başqa /system/packages и /system/settings) packagefs quraşdırma nöqtəsidir (çıxışda necə göründüyünü xatırlayın df?). Təəssüf ki, komandanın çıxışı mount vəziyyəti aydınlaşdırmır (əvvəlki məqalələrdən birində deyildiyi kimi), mountvolume axtardığınızı göstərmir (görünür, loop vasitəsilə quraşdırılmış paketlər .hpkg "cildlər" hesab edilmir) və alternativ əmrləri də unutdum.

AppImage-dən başqa bu kateqoriyada heç kim qalib gəlmədi (amma bu, tamamilə dürüst olmaq üçün qərəzli fikirdir). Bununla belə, təsəvvür etmək olar ki, düzəlişdən sonra Haiku-da istifadəçi təcrübəsi Mac-dan daha yaxşı olacaq.

Qeyd: "bölmə" ilə bağlı "həcmin" nə olduğunu öyrənməlisiniz. Bu, çox güman ki, "qovluq" ilə "kataloq" əlaqəsinə bənzəyir: əksər qovluqlar fayl menecerində qovluq kimi görünür, lakin onların hamısı deyil (məsələn, fayl kimi qəbul edilən paketlər). Bu cür ekran məni rəsmi namərd edir?

Paketin məzmununun başqa sistemə kopyalanması

Mac-da, Mən axmaqcasına paketi sürükləyirəm .app, və asılılıqlar paketin içərisində olduğundan birlikdə hərəkət edirlər.

Haiku haqqında, tətbiqi sürükləyirəm, lakin asılılıqlar ümumiyyətlə işlənmir.

Tez həll: Əvəzinə bütün `.hpkg paketini, əgər varsa, asılılıqlarla birlikdə sürükləməyi təklif edək.

Mac bu kateqoriyada açıq şəkildə qalib gəlir. Ən azından mənim üçün onların paradiqmasının sevgilisi. Mən onu Haykuya köçürməliyəm .hpkg proqram əvəzinə, lakin sistem mənə bunu təklif etmir...

Paketi bütün asılılıqları ilə yükləyin

Hər maşın həmişə şəbəkəyə qoşulmur. Əksinə, bəzi maşınlar (bəli, sizə baxıram, müasir Windows, Mac və Linux) bunu unudur. Mənim üçün vacibdir ki, məsələn, İnternet kafeyə gedə bilərəm, çıxarıla bilən diskə proqram yükləyə bilərəm, bu diski ev kompüterimə daxil edə bilərəm və hər şeyin işləyəcəyinə əmin ola bilərəm [riskli oğlan, bunu Windows-da edir... - təqribən. tərcüməçi].

Nəticədə, mən Windows və Linux-da adi haldan bir az daha tez-tez qarşılanmamış asılılıqlarla nəticələnirəm.

Mac-da bu adətən bir fayldır, sizə lazım olan tək şey yükləməkdir .dmg. Çox vaxt onun MacOS-un özü tərəfindən standart olaraq təmin edilənlərdən başqa heç bir asılılığı yoxdur. İstisna müvafiq icra mühiti tələb edən mürəkkəb proqramlardır, məsələn, java.

Haiku haqqında paketi yükləyin .hpkg məsələn, Java-da eyni proqram kifayət olmaya bilər, çünki java hədəf maşında ola bilər və ya olmaya da bilər. Verilmiş paket üçün bütün asılılıqları yükləməyin bir yolu varmı? .hpkg, Haiku-da defolt olaraq quraşdırılan və buna görə də hər Haiku sistemində olmalı olanlardan başqa?

Mac bu kateqoriyada kiçik fərqlə qalib gəlir.

Şərhlər Cənab. vaddlesplash:

Proqramın bütün asılılıqlarını paketlər dəsti kimi toplamaq üçün proqram yazmaq .hpkg Haikunun daxili işləri ilə tanış olan biri üçün təxminən 15 dəqiqə kifayətdir. Həqiqətən ehtiyac varsa, buna dəstək əlavə etmək o qədər də çətin deyil. Amma mənim üçün bu nadir haldır.

Bu seriyanın növbəti məqaləsinə qədər nəfəsimizi tutaq.

Paketlərin ayrı yerə köçürülməsi

Bayaq yazdığım kimi paketlərimi yerləşdirmək istəyirəm .hpkg (yaxşı və ya onların bir hissəsi) açılış həcminə (kök bölmə) adi yerləşdirmədən ayrı, xüsusi bir yerə. Adi (o qədər də nəzəri olmayan) vəziyyətdə bunun səbəbi, nə qədər böyük olsalar da, (daxili) disklərimdə daim boş yerin tükənməsidir. Mən adətən tətbiqlərimin yerləşdiyi xarici diskləri və ya şəbəkə paylaşımlarını birləşdirirəm.

Mac-da Mən sadəcə paketləri köçürürəm .app Finder-də çıxarıla bilən sürücüyə və ya şəbəkə qovluğuna, vəssalam. Mən hələ də proqramı yükləmək həcmindən etdiyim kimi iki dəfə klikləyə bilərəm. Sadəcə!

Haiku haqqında, mənə deyildiyi kimi, bu mənim hərəkət etməklə əldə edilə bilər .hpkg paketləri çıxarıla bilən sürücüyə və ya şəbəkə qovluğuna köçürün, lakin sonra onları sistemə quraşdırmaq üçün konsolda bəzi sənədsiz əmrlərdən istifadə etməlisiniz. Mən bunu yalnız GUI istifadə edərək necə edəcəyimi bilmirəm.

Mac bu kateqoriyada qalib gəlir.

Cənab görə. vaddlesplash:

Bu normal istifadəyə əsaslanan optimallaşdırmadır. Birdən çox istifadəçidən tələb olarsa, biz onu həyata keçirəcəyik. Hər halda, üçüncü tərəfin həyata keçirmə ehtimalı var.

Bu barədə növbəti məqalədə danışacağıq.

Şəbəkə qovluqlarından danışarkən, sadə, aşkar edilə bilən, yerli kompüterə kopyalana bilən və ya birbaşa yerli şəbəkədən işə salına bilən şəbəkə miqyasında tətbiqlərə (Zeroconf kimi) sahib olmaq əla olardı (mən LAN tərəflərini təxmin edirəm). Əlbəttə ki, tərtibatçılar vasitəsilə imtina etmək imkanı var app_flags.

hpkg sisteminin GUI ilə inteqrasiyasına dair yekun hesabat

Hesab edirəm ki, bu, ilk növbədə inteqrasiyanın nisbətən yeni olması ilə bağlıdır .hpkg GUI hələ də arzuolunan çox şey qoyur. Hər halda, UX baxımından yaxşılaşdırıla biləcək bir neçə şey var ...

Daha bir şey: Kernel Debug Land

Məsələn, kernel panik zamanı əmrləri daxil etmək əla olardı syslog | grep usb. Yaxşı, Haiku-da Kernel Debug Land sayəsində mümkündür. Hər şey lazım olduğu kimi işləyirsə, nüvə panikasına düşmədən bu sehri necə hərəkətdə görə bilərsiniz? Alt+PrintScn+D (Debug mnemonic) düymələrinə basmaqla asan. Dərhal xatırlayıram Proqramçı açarı, bu orijinal Macintosh tərtibatçılarına sazlayıcıya daxil olmağa imkan verdi (əlbəttə ki, quraşdırılıbsa).

Nəticə

Mən başa düşməyə başlayıram ki, Haiku sisteminin mürəkkəbliyi işin iş mühitinə aydın şəkildə diqqət yetirən, sistemin bütün təbəqələri əlçatan olan kiçik bir komanda tərəfindən həyata keçirilməsindən irəli gəlir.
Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu dünyası ilə kəskin ziddiyyət təşkil edir, burada hər şey o dərəcədə kiçik parçalara bölünür ki, abstraksiya abstraksiya üzərində oturur və qoltuqaltılarla hərəkət edir.
Sistemin necə olduğuna dair bir anlayış da var idi .hpkg ənənəvi paket menecerlərinin, Snappy, Flatpak, AppImage, hətta btrfs-in ən yaxşı təcrübələrini özündə birləşdirir və onları Mac-in "sadəcə işləyir" yanaşması ilə birləşdirir.

Sanki beynimdə nəsə “dəyişdi” və sistemin necə olduğunu başa düşdüm .hpkg necə yuvarlanacağını bilir, sadəcə ona baxaraq. Ancaq bu, mən deyil, sistemin gözəlliyi və sadəliyidir. Bunun çoxu orijinal Mac-in ruhundan ilhamlanır.

Bəli, brauzerdə gəzinti sarsıntılı ola bilər və ilbiz kimi işləyə bilər, proqramlar çatışmır (Gtk yoxdur, Electron - tərtibatçılar mürəkkəbliklə yaxşı getmədikləri qənaətinə gəldilər), video və 3D sürətləndirmə tamamilə olmaya bilər, amma yenə də mən bu sistemi bəyəndim. Axı, bu şeylər düzəldilə bilər və gec-tez görünəcəklər. Bu, yalnız bir zaman məsələsidir və bəlkə də bir az qırmızı göz.

Mən kömək təklif edə bilmərəm, amma düşünürəm ki, bundan sonra başlayacaq Masa üstü Haiku ili.

Təsadüfi problemlər

Bəlkə artıq sorğular var, yoxsa onları açmalıyam?

  • BeScreenCapture Peek kimi GIF-ə ixrac edə bilməlidir. Bu, Haiku üçün artıq mövcud olan ffmpeg vasitəsilə edilə bilər. Tətbiq.
  • Ekran görüntüsü proqramı bütün ekranı çəkmək əvəzinə modal pəncərəni çəkə bilmir
  • Siz WonderBrush-un kəsmə alətindən istifadə edərək ekran görüntülərini kəsə və nəticəni faylda saxlaya bilməzsiniz
  • Mən xüsusilə Haikudakı əl kursorunu sevmirəm, amma düşünürəm ki, bu, isti nostalji hisslə bağlıdır. Krita-da kəsmə alətindən istifadə edərkən bu, xüsusilə zəhlətökəndir, çünki bu, qeyri-dəqiq kəsmə ilə nəticələnir (bu məqalədə modal dialoqların ekran görüntülərinə baxın). Çarpaz kursor əla olardı. Tətbiq.

Özünüz cəhd edin! Axı, Haiku layihəsi yaradılan DVD və ya USB-dən yükləmək üçün şəkillər təqdim edir gündəlik. Quraşdırmaq üçün sadəcə şəkli yükləyin və istifadə edərək flash sürücüyə yazın Etcher

Hər hansı bir sualınız var? Sizi rusdilli kursa dəvət edirik telegram kanalı.

Xətanın icmalı: C və C++ dillərində ayağınıza necə atəş açmaq olar. Haiku OS resept kolleksiyası

Etibarən müəllif tərcümə: bu, Haiku haqqında silsilənin altıncı məqaləsidir.

Məqalələrin siyahısı: Ilk İkinci Üçüncü Dördüncü Beşincisi

Mənbə: www.habr.com

Добавить комментарий