Proqramçı: Son 3 ay ərzində öyrəndiklərim (BİRİNCİ HİSSƏ)

06.11.2017 0 PAYLAŞIM 1197 OXUNMA

Təqdimat.

Öncəliklə istərdim özümü təqdim edim. Həsənağa Azad. Veb proqramçı, startapçı və daha bir neçə özünəmaraqlı fəaliyyət növləri ilə məşğul olan aktiv gənc. Əslində daha öncələr də Technote-da 1-2 məqalə yazmışam. Amma bu məqalə birbaşa mənim işimlə əlaqəli olduğu üçün kiçik təqdimata ehtiyac gördüm.

Giriş.

Adətən mən tez-tez öz Facebook hesabımda yeni öyrəndiklərim barədə qısa postlar yazıram. Bu dəfə qərar verdim ki, bunu bir məqalə formasında edim, bəlkə kolleqalarıma və ələxsus yeni başlayan proqramçılara belə bir məlumat maraqlı və faydalı olar. Məqalədə öyrəndiklərim barədə qısa məlumat və öz subyektiv fikrimi əks etdirmişəm. Dəqiqləşdirmək üçün deyirəm ki, bu məqalə reklam deyil. Tövsiyyə edəcəyim “alətlərin” şirkətlərindən heç bir maddi dəstək almıram. Məqsəd sadəcə biliklərimi paylaşmaqdır. Məqalənin uzun olacağını bildiyim üçün onu iki hissəyə bölmüşəm. Birinci hissəni oxuduqdan sonra xahiş edirəm fikirlərinizi, əgər varsa, suallarınızı şərhdə qeyd edin. Və ümumiyyətlə Technote-da bu tərz məqalələr görmək istəyirsinizsə bu məqaləni repost edin. Bu, ikinci hissə üzərində işə daha da həvəs qatacaqdır.

1. Laravel:


Proqramçılıq fəaliyyətim bir neçə ili əhatə etsə də bu framevorkla ilk tanışlığım bu son 3 ay ərzində oldu. Hə, ola bilər yeni başlayanlar məni qoca, geridə qalmış, müasirdən uzaq hesab etsinlər, amma mən core dildə yazmağın tərəfdarıyam. Və hesab edirəmki hər bir peşəkar proqramçının öz şəxsi MVC sistemi olmalıdır, hansının ki, üzərində saytlar yığır. Amma biliyə qarşı deyiləm. Daha asan üsulları bilmək olar. İstifadə edib etməmək isə proqramçının öz seçimidir. Sonunda bir proqramı yazmaq üçün minlərcə fərqli üsul tapmaq olar.  Və bu peşənin üstünlüklərindən biri də bundadır: Sən azadsan, dil sadəcə bir alətdir, hansını seçib və necə istifadə edəcəyin sənin şəxsi seçimindir”.

Birincisi onu deyim ki, laravel, core php-dən dəfələrlə asandır. Hələ o router var haa, o laravelin routeri yağ kimi gedir. Model sistemi də çox asandır. Əminəmki php-ni yaxşı bilənlər, ələxsus öz mvc sistemi olan peşəkarlar 1-2 saata nəyin necə işlədiyini anlayacaqlar. Yeni başlayanlar – php-ni az-maz bilənlər də birbaşa Laravelə keçə bilərlər. Manual asandır. Hələ düzəməlli İDE işlədirsinizsə (məsələn PhpStorm) işiniz daha da asanlaşır. Artisan model və cədvəllərin yaradılışını terminalda bir neçə sətr əmr yazmağa bərabər edir.

Mənfi özəlliklər də var. Birincisi Laravel çətin yazılır. Composer bilməlisiz, terminalda əmrlər yazmalısız, təlimatı oxumadan yazmaq demək olar ki mümkün deyil. Bir söznən -  heçnə “qutuda hazır” gəlmir. Əgər Windows işlədirsinizsə, məsələ daha da qəlizləşir, yüklənmə zamanı bəzən çıxan xətalar sizi forumlarda axtarış aparmağa məcbur edə bilər. (Ümumiyyətlə peşəkar Veb tərtibatçılara Windows-dan mümkün qədər uzaq olmaq, Mac və ya ən yaxşı halda Linux istifadə etmək məsləhət görülür). Bazaya sorğular yazmaq asan olsa da bəzi hallarda ciddi çərçivələr yaranır, və bu sizi documentation-dan faydalanaraq öz həllinizi yazmağa vadar edir. Məsələn: Saytda paginasiya yaratmaq asandır - bir iki sətrlik kod. Yox, əgər paginasiya olunan data bazadan çıxarılarkən Join Group olmalıdırsa laravelin adi üsulları işləmir və hətda rəsmi documentation sizə əlavə həllər yaratmağı tövsiyyə edir.

Ümumilikdə framevork, asan, sürətli və yüngüldür. Framevorkda işləməyi sevməsəz , sistemin kodundan “oğurlamaq” üçün maraqlı ideyalar tapacağınıza əminəm.

2. Docker:

Docker bir qutudur. Daha dəqiq desək konteyner. Deməli dockersiz veb proqramlaşdırma nəyə bənzəyir? Öz serverinizdə (istər local istərsədə public) kod yazıb sayt/proqram yaradırsınız. İş bitdikdə və yaradılmış saytı/proqramı başqa serverə köçürdükdən sonra isə moqrasiya zamanı bir sıra problemlər yaranır. Və bu problemləri aradan qaldırmaq üçün də təbii ki, ikinci serverə çatışmayan sistem proqramlarını əlavə edirsiz. Bərbaddır. Elə deyilmi?

Faktiki olaraq eyni işi iki dəfə görməli olursuz. Və bu hələ ən üstdə olan problemlərdir. Bəs bu iki serverlərin konfiqurasiyaları fərqli olduğuna görə yaranan buglar? Gözlənilməyən limitlər? Hələ müştəriyə “bizdə normal işləyir, sizin serverdə anlamırıq niyə belə olur” cümləsini demək zərurəti. Docker bütün bu məsələləri həll edir. Məntiqi çox asandır. Konteyner yaradırsınız, içərisinə əməliyyat sistemi yazırsınız, və öz saytınızı / proqramınızı elə məhz bu konteynerin içərisində yaradırsınız. Və beləliklə miqrasiya elədikdə sadəcə olaraq konteynerleri eksport edib ikinci serverə elə konteynerler formasında köçürürsünüz. Nəticədə konteynerleri hara köçürsəniz bütün serverlərdə eyni cür işləyəcək. Üstəlik dockerin fəlsəfəsi git sisteminə yaxındır. Yəni dəyişiklikləri qeydə alıb istələn an konteynerin hazırki vəziyyətini bir backup kimi kənarda save edə bilərsiniz.

Mənfi özəlliklər: Miqrasiya üçün hər iki serverə docker yazılmalıdır. İlk baxışdan sistem insana qəliz gəlir. İdarəetmə yalnız terminaldandır. Konteynerlər böyük yer tuturlar. Sizin yazdığınız proqram 500 MB olsa da, konteynerlə birgə ən azı 2 GB yer tutacaq, çünkü konteynerlərin daxilində əməliyyat sistemi mövcuddur.

Araşdırsanız, dockerin bir neçə bənzəri barədə məlumat tapa bilərsiniz, amma mən məhz lider barədə danışdım sizə. İstənilən halda bu sistem sizə ancaq köməkçi olacaqdır. Yəni, maraqlanmağa dəyər.


Birinci hissənin sonu. Ümid edirəm fikirlərim barədə oxuyanda sıxılmadınız və məqalənin davamını maraqla qarşılayacaqsınız. Və bir daha yada salıram: ”Əgər hər hansı suallarınız yarandısa bunu çəkinmədən şərhlərdə soruşa bilərsiniz”.