İnterfeys inkişafı məktəbi: Minsk üçün tapşırıqların təhlili və Moskvada yeni dəst

Bu gün yeni qeydiyyat başladı Yandex İnterfeys İnkişaf Məktəbi Moskvada. Təlimin birinci mərhələsi sentyabrın 7-dən oktyabrın 25-dək keçiriləcək. Digər şəhərlərdən olan tələbələr orada uzaqdan və ya şəxsən iştirak edə biləcəklər - şirkət səyahət və yataqxanada qalma xərclərini ödəyəcək. İkinci, həm də final mərhələsi, dekabrın 3-dək davam edəcək, yalnız şəxsən tamamlana bilər.

Mənim adım Yuliya Serediç, bu yazını Sergey Kazakovla birlikdə yazmışıq. Biz həm Yandex-in Minsk ofisində interfeys tərtibatçılarıyıq, həm də əvvəlki illərin SRI məzunlarıyıq.

İnterfeys inkişafı məktəbi: Minsk üçün tapşırıqların təhlili və Moskvada yeni dəst

Moskvada qeydiyyatın açılması münasibətilə biz əvvəlki Məktəbə - burada Minskə giriş tapşırıqlarının təhlilini dərc edirik.

SRI tapşırıqlarının tarixini izləyirsinizsə, ildən-ilə bir proqramçı üçün üç vacib bacarığı sınadıq:

  • Layout. Hər bir tərtibatçı layout edə bilməlidir. Elə olmur ki, bütün komanda üçün dizayn edən Seryoja dayınız var və siz ancaq ssenarilər yazırsınız. Buna görə də hər bir şagird çap etməyi necə bildiyini göstərməlidir.
  • JavaScript. Məsələ layout ilə məhdudlaşsaydı, onda bizdə İnterfeys İnkişafı Məktəbi yox, Layout Dizaynerləri Məktəbi olardı. Gözəl dizayn edilmiş interfeysi canlandırmaq lazımdır. Buna görə də, JS üçün həmişə bir tapşırıq var, lakin bəzən bu, alqoritmlər üçün də bir tapşırıqdır - biz onları çox sevirik.
  • Problemin həlli, bəlkə də bir tərtibatçının ən vacib bacarığıdır. İnterfeyslərin yaradılmasına gəldikdə, hər şey çox tez dəyişir. Bu, Lewis Carroll kimidir: "Sadəcə eyni yerdə qalmaq üçün bacardığın qədər sürətlə qaçmalısan, başqa yerə çatmaq üçün isə ikiqat sürətlə qaçmalısan." Hər gün yeni texnologiyalarla rastlaşırıq - onları nəzərə almalıyıq və onları dərk etməyi bacarmalıyıq. Buna görə də, üçüncü tapşırıqda biz təcrübəsiz bir tərtibatçının adətən tanış olmadığı texnologiyaları başa düşməyi təklif etdik.

Hər bir tapşırığın təhlilində sizə yalnız düzgün prosedur haqqında deyil, həm də ümumi səhvlər haqqında məlumat verəcəyik.

Tapşırıq 1: Portfolio

İlk tapşırığın üzərində layout etməyi bilən Yandex.Collections dizayneri Aleksey Çerenkeviç və onun xidmət həmkarı, interfeys tərtibatçısı Sergey Samsonov məşğul olub.

Vəziyyət

Portfolio veb saytı yaradın: özünüz, işiniz və Məktəbdən gözləntiləriniz haqqında bizə məlumat verin. Sayt təklif olunan tərtibata mümkün qədər uyğun olmalıdır (layihələrə keçidlər: 1000px, 600px, 320px, spesifikasiya). Bizi yalnız tərtibat maraqlandırır, ona görə də JavaScript-dən istifadə etməyin.

Yoxlama zamanı nəzərə alacağıq:

  • girinti ölçüləri, rəngin düzgünlüyü, şrift üslubu, şriftin ölçüsü;
  • semantik tərtibat;
  • elementlərin müxtəlif vəziyyətlərinin olması: kursorun üzərinə hərəkət edərkən düymələrin və keçidlərin göstərilməsi, aktiv giriş sahələrinin vurğulanması və s.;
  • cross-brauzer uyğunluğu (məşhur brauzerlərin ən son versiyalarında sınaqdan keçirilmişdir).

Üstünlük olacaq:

  • müasir CSS həllərindən istifadə: flexbox, grid və s.;
  • Uyğunlaşma düzümü;
  • pre- və (və ya) post-prosessorlardan istifadə, çıxış kodunun yığılması, minimumlaşdırılması, optimallaşdırılması;
  • HTML formasının təsdiqi, stilizə edilmiş fayl yükləmə düyməsi.

Tapşırıq olduqca həcmlidir, buna görə də işləməyəcək şeyi atlaya bilərsiniz. Bu, balınızı bir qədər aşağı salacaq, lakin siz yenə də biliklərinizi nümayiş etdirə biləcəksiniz. Bitirdikdən sonra bizə iki link göndərin - portfelinizə və GitHub-dakı mənbə koduna.

Tapşırıqda təklif olunan planlar təkcə mobil qurğular, planşetlər və masaüstü kompüterlər üçün ekranlarla deyil, həm də real spesifikasiyalarla idi.

Birinci tapşırığın yoxlanılması nəticəsində mümkün qədər obyektivlik gətirmək üçün bu yoxlama üçün çoxlu meyarlar var idi.

meyarlar

Dizayn saytı. Bu açıq görünür, lakin bəzi uşaqlar bəzi blokları tamamilə atladılar - ya vaxta qənaət etmək istədilər, ya da edə bilmədilər. Dizaynı təxminən dörd əsas ekrana bölmək olar: avatarlı əsas ekran, SRI-dən gözləntilərin siyahısı olan blok, portfelli blok və əlaqə məlumatı olan blok. Onlar bölmələr şəklində və ya sadəcə divlərdən istifadə edilə bilər, əsas odur ki, dörd blokun hamısı mövcud idi.

Planın tərtibata uyğunluğu. Dizayner namizədlərin işini asanlaşdırmaq üçün ayrıca spesifikasiya (o cümlədən rənglər, tipoqrafiya, düymə halları və s.) hazırlayıb. Aşağıda birinci ekranın girintiləri və xüsusiyyətlərinə dair bir işarə var idi. Dizaynerin bütün istəklərini nəzərə alan uşaqlar məni çox sevindirdi: məsələn, birinci ekran baxış pəncərəsinin hündürlüyündən az olmamalıdır.

Adaptiv düzən - bu, interfeys sadəcə qurulmadığı zamandır ki, üç qətnamədə hər şey layoutda pikseldən pikselə olsun. Aralıq ştatlarda layout da dağılmamalıdır. Bəziləri konteynerin maksimum enini məhdudlaşdırmağı və hər şeyi 1920 pikselə təyin etməyi unutdu, bəziləri fonları qarışdırdı, lakin ümumilikdə namizədlər bu vəzifənin öhdəsindən yaxşı gəldilər.

Semantik tərtibat. “Dünyaya neçə dəfə dedilər” ki, link , düymə kimi dizayn edilməlidir . Xoşbəxtlikdən, əksər namizədlər bu tələbi də yerinə yetirdilər. Hər kəs SRI-nin gözləntilərində gizli siyahını tanımadı, onu div etiketlərindən istifadə etdi, lakin bu o qədər də pis deyil. Namizəd var idi ki, bildiyi bütün semantik teqləri - lazım olan yerə, lazım olmayan yerə daxil edirdi. Məsələn, siyahı əvəzinə - və . Axı, semantika - bu, səhifənizin tərkibini və hər bir blokun məqsədini başa düşməkdən ibarətdir (əksəriyyət onu burada idarə etdi), həmçinin əvvəlcədən və / və ya post-prosessorlardan istifadə etməkdir (burada bir neçəsi bunu idarə etdi, baxmayaraq ki, bu nöqtələrdə də idi - çox vaxt daha az və scss istifadə edirdilər) .

İşləyən sürgü. Tapşırıqda yazdıq ki, JS istifadə edilə bilməz. Burada problemləri həll etmək bacarığı sınaqdan keçirildi - bir dəstədən istifadə edərək bir sürgü edilə bilər Və . Bütün sehr selektor səviyyəsində baş verir #button-N:checked ~ .slider-inner .slider-slides. Giriş qutularından birini tıkladığımızda o, yoxlanılmış vəziyyətə keçir. Biz bundan yararlanıb slaydlar olan konteynerə lazım olan tərcüməni təyin edə bilərik: transform: translate(-33%). Slayderin həyata keçirilməsini görə bilərsiniz burada.

Açılan siyahılar. Burada da hər şey aşağı düşdü və oxşar seçici: .akkordeon-element girişi:checked ~ .accordion-element__content. İcrasını görə bilərsiniz burada.

:hover, :active və :focu* vəziyyətlərinin mövcudluğu. Çox vacib bir məqam. İnterfeys ilə qarşılıqlı əlaqə zamanı rahatlıq ondan asılı idi. İstifadəçi həmişə öz hərəkətləri ilə bağlı rəy almalıdır. Anketlə qarşılıqlı əlaqə zamanı bu maddə yoxlanılıb. "Mənə zəng et" düyməsini bassam və vizual olaraq heç bir şey baş vermədisə (sorğu göndərilsə də), bu pisdir, çünki onu təkrar-təkrar klikləyəcəyəm. Nəticədə on sorğu göndəriləcək və mənə on dəfə geri çağırılacaq. Unutmamalıyıq ki, mobil cihazlarda siçan yoxdur, yəni hover olmamalıdır. Və semantika ilə bağlı bəndi yerinə yetirənlərə təsir etməyən daha bir məqam. Əgər nəzarətiniz interaktiv element deyilsə, onda kursoru onun üzərinə gətirdiyiniz zaman kursor standart olaraq qalacaq. Hover üçün reaksiya yazsanız belə, çox səliqəsiz görünür. Kursoru qiymətləndirməyin: göstərici.

Animasiyalar. Elementlərlə baş verən bütün reaksiyaların hamar olması vacibdir. Həyatda heç bir şey ani deyil, ona görə də keçidlərin hover və aktiv olması interfeysi daha xoş etmək üçün kifayət idi. Yaxşı, kaydırıcıyı və siyahıları animasiya edənlər ümumiyyətlə əladır.

Ən son texnologiyadan istifadə. Bir çox insan flex istifadə etdi, lakin heç kim griddən istifadə edərək tapşırığı yerinə yetirmədi. Fleks düzgün istifadə olunarsa, xal sayılırdı. Əgər haradasa bu çevikliklərə görə layout dağılıbsa, təəssüf ki, heç bir əlavə xal almamısınız.

Formanın Təsdiqlənməsi. Tələb olunan hər şey formanın hər bir girişinə tələb olunan atribut əlavə etmək idi. E-poçt sahəsini e-poçt olaraq təsdiqləyənlərə xallar əlavə etdik.

Fayl yükləmə düyməsinin üslubu. Belə bir kombinasiya görəcəyimizi gözləyirdik: və Fayl seçin . Sonra biz girişi gizlətməli və etiketi tərtib etməli olduq. Başqa bir ümumi yol var - şəffaf bir giriş etmək və düymənin üstünə qoymaq. Ancaq bütün brauzerlər üsluba icazə vermir , və belə bir həll tam cross-brauzer adlandırıla bilməz. Və etiket düzəltmək semantik olaraq daha düzgündür.

Çarpaz brauzer uyğunluğu. Müasir brauzerlərin iki ən son versiyasında (IE olmadan - iştirakçılar şanslı idi), həmçinin iPhone-larda Safari və Android-lərdə Chrome-da hər şeyin yaxşı olduğunu yoxladıq.

Əksinə, əgər kimsə JS və ya Bootstrap istifadə edərsə, xalları çıxardıq: hər ikisi bütün tapşırığın məqsədini məğlub edərdi. Üstəlik, Bootstrap ilə iştirakçılar nəinki mənfi nəticə əldə etdilər, həm də semantika və həyata keçirilən elementlər üçün çoxlu xal itirdilər.

Saytlarını İnternetdə bir yerdə yerləşdirənlər heç bir xüsusi üstünlük əldə etmədilər - lakin rəyçilər depoları yükləmək və onları kompüterlərində yerli olaraq işə salmaq məcburiyyətində qalmadıqda çox xoşbəxt idilər. Beləliklə, bu, karma üçün bir artı kimi xidmət etdi.

İlk tapşırıq ilk növbədə tələbə üçün çox faydalı oldu. Qəbul etmədiyimiz şəxslərin indi hazırlanmış CV-ləri var - qürurla onu bütün cavablara əlavə edə və ya gh-səhifələrinizdə yerləşdirə bilərsiniz.

Tapşırıq 2: Nəqliyyat marşrutu

Tapşırığın müəllifi axtarış interfeysləri qrupunun rəhbəri Denis Balıkodur.

Vəziyyət

Ulduz xəritəniz var? O, hər bir ulduzun adını, eləcə də ondan digər ulduzlara olan məsafəni işıq saniyələri ilə göstərir. Üç arqument götürməli olan həll funksiyasını həyata keçirin: açarları ulduzların adları və dəyərləri ulduzlara olan məsafələr (kosmosda birtərəfli trafik), eləcə də adları olan bir obyekt. yolun başlanğıc və bitmə nöqtələri - müvafiq olaraq başlanğıc və bitiş. Funksiya başlanğıc ulduzdan finiş ulduzuna qədər ən qısa məsafəni və izlənəcək yolu qaytarmalıdır.

Funksiya imzası:

const solution = function(graph, start, finish)  {
    // Ваше решение
} 

Giriş məlumatları nümunəsi:

const graph = {
  start: { A: 50, B: 20 },
  A: { C: 40, D: 20 },
  B: { A: 90, D: 90 },
  C: { D: 160, finish: 50 },
  D: { finish: 20 },
  finish: {}
};
const start = 'start';
const finish = 'finish'; 

Nümunə çıxışı:

{
    distance: 90,
    path: ['start', 'A', 'D', 'finish']
} 

Qeyd: Həll skeleti src/ qovluğundadır, həllinizi solution.js-ə qoyun.

İkinci tapşırığın yoxlanılması ən avtomatlaşdırılmış və obyektiv idi. Uşaqların əksəriyyəti Dijkstra alqoritmini tətbiq etməyin lazım olduğunu təxmin etdi. Onun təsvirini tapıb alqoritmi JS-də həyata keçirənlər yaxşı iş görüblər. Ancaq tapşırığı yoxlayarkən eyni səhvləri olan bir çox kağıza rast gəldik. İnternetdə kod fraqmentləri üçün axtarış etdik və iştirakçıların alqoritmi köçürdüyü bir məqalə tapdıq. Çox adamın məqalədəki kodu müəllifin şərhləri ilə birlikdə köçürməsi gülməlidir. Bu cür əsərlər aşağı qiymət aldı. Biz heç bir mənbədən istifadəni qadağan etmirik, amma istəyirik ki, insan yazdıqlarını dərindən araşdırsın.

meyarlar

Testlər üçün əsas xallar verildi. Bəzən məlum olurdu ki, uşaqlar anbarla qarışır, qovluqların adını dəyişir və testlər sadəcə lazımi faylları tapa bilmədiklərinə görə uğursuz olur. Bu il biz belə uşaqlara kömək etməyə çalışdıq və onlar üçün hər şeyi öz yerinə qaytardıq. Amma gələn il biz müsabiqə sisteminə keçməyi planlaşdırırıq və bu, artıq bağışlanmayacaq.

“İnsan”, əl meyarları da var idi. Məsələn, vahid kod üslubunun olması. Boşluqlar əvəzinə tablardan istifadə etmək üçün heç kim xalları çıxmadı və ya əksinə. Sizə məlum olan bir qaydaya uyğun olaraq tək dırnaqları qoşa dırnaqlarla əvəz etsəniz və təsadüfi olaraq nöqtəli vergül qoysanız, bu başqa məsələdir.

Həllin aydınlığı və oxunaqlılığı ayrıca nəzərə alınıb. Dünyadakı bütün konfranslarda deyirlər ki, proqramçının işinin 80%-i başqalarının kodunu oxumaqdan ibarətdir. Hətta məktəblilər də öz kuratorlarından və bir-birindən kod baxışlarından keçirlər. Beləliklə, bu meyar əhəmiyyətli çəki daşıyırdı. Bir simvoldan uzun dəyişənlərin olmadığı əsərlər var - lütfən, bunu etməyin. İştirakçıların şərhləri çox ümidverici idi - Stella Çanqın şərhləri ilə eyni olanlar istisna olmaqla.

Son meyar avtotestlərin olmasıdır. Yalnız bir neçə nəfər onları əlavə etdi, lakin hər kəs üçün bu, onların karmasında böyük bir artı oldu.

Düzgün həll:

const solution = function(graph, START, FINISH)  {
    // Всё не бесплатно в этом мире
    const costs = Object.assign({[FINISH]: Infinity}, graph[START]);

    // Первая волна родительских нод
    const parents = { [FINISH]: null };
    Object.keys(graph[START]).reduce((acc, child) => (acc[child] = START) && acc, parents)

    const visited = [];
    let node;

    // Ищем «дешёвого» родителя, отмечаем пройденные
    do {
        node = lowestCostNode(costs, visited);
        let children = graph[node];
        for (let n in children) {
            let newCost = costs[node] + children[n];

            // Ещё не оценена или нашёлся более дешёвый переход
            if (!costs[n] || costs[n] > newCost) {
                costs[n] = newCost;
                parents[n] = node;
            }
        }
        visited.push(node);
    } while (node)

    return {
        distance: costs[FINISH],
        path: optimalPath(parents)
    };

    // Возврат назад по самым «дешёвым» родителям
    function optimalPath(parents) {
        let optimalPath = [FINISH];
        let parent = parents[FINISH];
        while (parent && parent !== START) {
            optimalPath.push(parent);
            parent = parents[parent];
        }
        optimalPath.push(START);
        return optimalPath.reverse();
    }

    // Минимальная стоимость из текущей ноды среди непросмотренных
    function lowestCostNode(costs, visited) {
        return Object.keys(costs).reduce((lowest, node) => {
            if (lowest === null || costs[node] < costs[lowest]) {
                if (!visited.includes(node)) {
                    lowest = node;
                }
            }

            return lowest;
        }, null);
    };
};

Tapşırıq 3: Tədbirlər Təqvimi

O, interfeys tərtibatçıları Sergey Kazakov və Alexander Podskrebkin tərəfindən hazırlanmışdır.

Vəziyyət

Cədvəlinizi göstərmək üçün mini təqvim yazın. İstədiyiniz cədvəli götürə bilərsiniz. Məsələn, 2019-cu ildə frontend konfranslarının cədvəli.

Təqvim siyahı kimi görünməlidir. Digər dizayn tələbləri yoxdur. Tədbir xatırlatmalarını 3, 7 və 14 gün əvvəl təyin etməyə imkan verin. İnternetdən ilk yükləmədən sonra təqvim açılmalı və oflayn işləməlidir.

Faydalı qaynaqlar

Frontend konfrans cədvəli:
confs.tech/javascript?topics=javascript%2Bcss%2Bux

Xidmət işçiləri:
developer.mozilla.org/ru/docs/Web/API/Service_Worker_API/Using_Service_Workers
developers.google.com/web/fundamentals/primers/service-workers

Bildirişlər API:
developer.mozilla.org/ru/docs/Web/API/Notifications_API

Üçüncü tapşırığın sınaqdan keçirilməsi ən maraqlısı idi, çünki hər birinin özünəməxsus həlləri olan çoxlu mümkün həll yolları var idi. Namizədin tanımadığı texnologiyalarla necə davrandığını yoxladıq - tədqiqat aparmağı bilirmi, həllərini sınaqdan keçirirmi.

meyarlar

Qatlanmış təqvim. Bəli, hələ də onu qoymaq lazım idi. Şərti hərfi mənada qəbul edənlər və CSS kodunun bir sətirini daxil etməyənlər də var idi. Çox cəlbedici görünmürdü, amma hər şey işləsəydi, xallar azalmadı.

Mənbədən hadisələrin siyahısını əldə etmək. Bu layout tapşırığı deyil, ona görə də ona daxil edilmiş hadisələrin siyahısı nəzərə alınmayıb. Siz həmişə konfransı ləğv edə, onun vaxtını dəyişdirə və ya yenisini əlavə edə bilərsiniz. Beləliklə, kənardan məlumatları qəbul etmək və alınan JSON əsasında tərtibatı göstərmək lazım idi. Məlumatı istənilən yolla əldə etmək vacib idi (gəlmə metodundan istifadə etməklə və ya XMLHttpRequest-dən istifadə etməklə). Əgər şəxs əldə etmək üçün polifill əlavə edibsə və öz seçimini readme-də qeyd edibsə, bu, artı sayılır.

Xidmət işçisinin qeydiyyatı səhvsiz və ilk yükləmədən sonra oflayn işləyin. Burada bir nümunə. ilk açılışda cədvəl keşi olan xidmət işçisi. Xidmət işçiləri, onların imkanları və onlarla işləmə yolları (keşlərlə işləmə strategiyaları, oflayn işləmək) haqqında təfərrüatları burada tapa bilərsiniz.

Xatırlatma qurmaq imkanıbelə ki, əslində 3, 7, 14 gündən sonra işləyir. Bildirişlər API-ni başa düşmək lazım idi, hansı linkə vəzifədə haqlı idi. Biz itələmək vaxtının olub-olmadığını yoxlamaq üçün hər hansı xüsusi tətbiqi gözləmirdik. İstənilən iş variantı qəbul edildi: localStorage, IndexDB-də saxlama və ya xidmət işçisi tərəfindən dövri sorğu. Hətta bir təkan server etmək mümkün idi (burada misal), lakin oflayn işləməyəcək. Səhifə bağlandıqdan və bir müddət sonra açıldıqdan sonra təkan almaq eyni dərəcədə vacib idi. Xatırlatma səhifənin bağlanması ilə eyni vaxtda ölürsə, həll sayılmır. Uşaqlar rəyçilər haqqında düşünəndə və 3 gün gözləməmək üçün dərhal təkan almağa imkan verəndə gözəldir.

İş masasına ikona yerləşdirmək imkanı (PWA). Faylın mövcudluğunu yoxladıq manifest.json düzgün nişanlar ilə. Bəzi uşaqlar bu faylı yaratdılar (yaxud CreateReactApp-da yaratdılar) - lakin düzgün nişanlar əlavə etmədilər. Sonra, quraşdırmaq istəyərkən "fərqli ikona lazımdır" kimi bir xəta meydana gəldi.

Codestyle və layihə strukturu. İkinci tapşırıqda olduğu kimi, biz vahid kod stilinə baxdıq (hətta bizimkimizlə üst-üstə düşməsə belə). Bəzi uşaqlar linterləri vurdular - bu əladır.

Konsol səhvləri. Konsolda bir şeyin səhv olduğunu göstərən bir göstərici varsa və iştirakçı buna diqqət yetirmirsə, onda xalları çıxardıq.

Nəticələri

İştirakçıların qərarlarında gülməli olan nədir:

  • Anketlərdən birində aşağıdakı mətn var idi: “Bir proqramçı dostum mənə React tətbiqini yaratmağa kömək etdi. Onu necə və niyə sualları ilə bombardman etdim və o, mənə dedi. Çox bəyəndim, bu haqda daha çox bilmək istəyirəm”. Biz bütün qəlbimizlə bu ərizəyə köklənirdik, amma təəssüf ki, namizədin dostu ərizənin işləməsinə çox kömək etmədi.
  • Bir namizəd RAR arxivinin yerləşdiyi GitHub-a bir keçid göndərdi - bunu şərh etmək çətindir. 🙂
  • Başqa bir namizəd, solution.js faylının birinci sətrindəki şərhdə alqoritmi kopyaladığını səmimi etiraf etdi.

76 namizəddən ərizə qəbul etdik və 23 nəfəri seçdik. Bizə təkcə Minskdən deyil, Moskvadan, Sankt-Peterburqdan, hətta Tatarıstandan da sorğu vərəqələri göndərilib. Uşaqlardan bəziləri indiki peşələri ilə bizi təəccübləndirdi: biri məhkəmə eksperti, digəri isə tibb tələbəsidir.

Nəticə tapşırıqları yerinə yetirməkdə müvəffəqiyyət dərəcələrinin maraqlı paylanması oldu. İştirakçılar birinci tapşırığı orta hesabla 60%, ikinci tapşırığı 50%, üçüncü isə ən çətin tapıb və orta hesabla 40% yerinə yetiriblər.

İlk baxışdan tapşırıqlar mürəkkəb və vaxt aparan görünür. Səbəb o deyil ki, biz mümkün qədər çox namizədi kənarlaşdırmaq istəyirik. Tələbələr təhsil müddətində real həyat tapşırıqları ilə üzləşirlər - söhbət etmək, uşaqlar üçün Yandex.Musiqi və ya hava şəraitindən asılı olan insanlar üçün Yandex.Hava. Bunun üçün sizə başlanğıc baza lazımdır.

İki il əvvəl SRI-yə qəbul tapşırığımı gördüyümü və bunu heç vaxt həll etməyəcəyimi düşündüyümü xatırlayıram. Bu anda əsas şey oturmaq, şərtləri diqqətlə oxumaq və bunu etməyə başlamaqdır. Məlum olub ki, şərtlər məhlulun demək olar ki, 80%-ni ehtiva edir. Məsələn, üçüncü tapşırığın (ən çətini) şərtində biz MDN-də xidmət işçilərinə və Bildirişlər API-yə keçidlər əlavə etdik. Bağlantıların məzmununu öyrənən tələbələr çətinlik çəkmədən onu tamamladılar.

Çox istərdim ki, bu məqalə gələcəkdə SRI-yə daxil olmağı planlaşdıran, Minsk məktəbinə daxil ola bilməyən və ya hər hansı digər test tapşırığını yerinə yetirməyə başlayan namizədlər tərəfindən oxunsun. Gördüyünüz kimi, bunu etmək olduqca mümkündür. Sadəcə özünüzə inanmaq və müəlliflərin bütün məsləhətlərinə qulaq asmaq lazımdır.

Mənbə: www.habr.com

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