Простір для вивчення нової професії, зростання в кар’єрі або розвитку бізнесу👇🏻
Наша команда пише для вас найкращі та найцікавіші матеріали, які обов’язково допоможуть у вашому навчанні: https://genius.space/lab/
Last updated 2 months, 3 weeks ago
Алгоритми сортування: level easy
Наступні декілька дописів поговоримо про сортування. Конкретно в цьому пропоную зосередитися на найбільш інтуїтивних і легких для розуміння:
Selection sort. Алгоритм простий: ми знаходимо найменший елемент в масиві і вставляємо його на поточний в ітерації індекс. Big O: time complexity - O(n2), space complexity - O(1);
Код: https://codepen.io/olenitut/pen/qBeQPxJ?editors=0011
Bubble sort. При кожній ітерації порівнюємо два сусідні елементи масиву, якщо вони не сортовані між собою - міняємо їх місцями. Це гарантує, що при першій же ітерації “максимальний” елемент масиву буде в правильному місці (звідси назва - він ніби спливає). Відповідно в наступних ітераціях “сплиті” елементи не треба перевіряти. Також, гарною оптимізацією для бабл сорта є вихід з нього, якщо при попередній ітерації не був змінений жодний елемент. Big O: time complexity - O(n2), space complexity - O(1);
Код: https://codepen.io/olenitut/pen/eYqQGLV?editors=0011
Insertion sort. Тут ми тримаємо ліву частину масиву сортованою. При першій ітерації ми вважаємо, що перший елемент масива вже відсортований. І тепер нам треба просто в правильне місце вставити (звідси назва алгоритму - insertion) другий елемент. Як наслідок в нас ліва частина масиву з 2-х елементів є відсортованою, і нам треба вставити на правильне місце третій елемент. І так до кінця масиву. Big O: time complexity - O(n2), space complexity - O(1);
Код: https://codepen.io/olenitut/pen/ZEgmXmv?editors=0011
Візуалізовану версію можна знайти у цій статті: https://medium.com/@nisfari/sorting-algorithm-bubble-sort-selection-sort-insertion-sort-fd6dadea3d1e
Що трапляється, коли ми клікаємо на лінку?
Останнім часом дивлюся онлайн співбесіди, і це питання ну дууууже часто на них фігурує. Що для мене дивно, адже на реальних співбесідах мені його ще ні разу не задавали. Але абстрагуємося від мого досвіду.
Спробувала максимально розкрито і водночас компактно відповіcти на це запитання в доці. Що б ви ще добавили?
Ледь не забув - там @babich_ss зробив стрім про CSS Grid на якому збирав для нас трохи грошей.
А поки у нього зараз афтепаті після конфи (мені то ще не по чину 🤣) зроблю йому маленьку рекламу :)
А хто бажає - може долучитися до збору, потроху збираємо інструменти та комплектуху на корисну справу і не дивуйтеся опису, життя воно таке, не очікуване)
Був радий трохи повернутися в часи конференцій) Вірю, це не остання. Правда, @FwDays?
П.М. Миші м'яке зло :)
Я тут трохи облажався, але cordova схоже мене спасе, та давайте спочатку (багато тексту)
UPD: Переїхали на capacitor
Зробили ми нещодавно апку (react, vite, react-router-dom) одна з основних фіч якої була у максимально простій доставці до кінцевого користувача. Буквально: скинув ОДИН файл і все працює з коробки, без танців з бубнами - відкрив в Chrome і маєш щастя. А HTML, ну начебто, як раз саме про це, то ж в теорії ідея була зашибісь)
То ж ми зробили, протестили під віндою і наче все супер. Залили на android - а там білий екран... Як так? Почали копати, виявилося що react\-router\-dom
не дуже любить коли його запускають на чомусь що не схоже не справжній URL, наприклад content://com.google.android
і просто тупо кидає exception, що обвалює весь застосунок на корені.
Але ми то не пальцем роблені, то ж за дві години зробили патч в react-router-dom (може доречі його викласти?) і воно ожило Але тут друга халепа - зображення. Зображення тупо не працюють хоч ти трісни.
Чотири години шаманізму, кави, коли, матюків і ні... Не працюють. Що робити?
Вирішили пакувати в APK. Першою ідеєю було взяти #reactnative. Тут #React і там React - все наче сходиться. Але ж ні, у react-native розмітка йде власними компонентами, а у мене оці всякі div, span, article і прости нас main з nav...
І тут приходить Cordova яка каже - а давай мені свій HTML а я вже далі якось сама... І ви знаєте - полетіло. Так прийшлось помучитися з установкою android, раз 20 перезавантажити ноут бо на вінді ж PATH не оновлюється одразу, але вчора я залив на телефон APK який працює))
Так там теж є складнощі з підписом, з тим що ЗАСТОСУНОК НЕ ПЕРЕВІРЕНИЙ КИНЬ КАКУ ВІДПРАВ ГУГЛУ НЕ ЧІПАЙ СТРАШНО, але в цілому схоже що це наш варіант.
То ж кому потрібно портувати react в andoid - подивіться в сторону #cordova. Так, вона старенька, але схоже що ще може дати джазу.
Бережіть себе, допомагайте ЗСУ,
Ваш Зампомиш
Вибираємо систему керування станами
Крок перший - оцінити чи потрібна нам вона взагалі
Деяким застосункам система керування станом може бути взагалі не потрібна. Якщо в застосунку не велика глибина, немає значної взаємодії між користувачем та апкою, стан локальний (не потрібен в усьому застосунку одразу) цілком можна обійтися без системи керування станом, а використовувати звичайний стейт.
Але, скоріше за все, вам так не буде (С)
Крок другий - оцінити чи можете ви використати контекст
#react потрібен лише тоді коли у нас є багата взаємодія з користувачем (не робіть лендінги на react, навіть якщо вас просять). Тому скоріше за все дані у вас будуть, і їх треба буде зручно отримувати та змінювати. Але чи потрібна при цьому система керування станом? Якщо дані змінюються не часто, зміни не є особливо складними - можливо вам влаштує звичайний контекст.
Так, контекст не є системою для керування станом, а скоріше шиною передачі, але і для роботи зі станом він може стати в нагоді. Подумайте про те, чи варті фічі нової бібліотеки тої складності яку ви додаєте в проект.
Крок третій - вибрати стейт менеджер під задачу.
Якщо ви все таки впевнені що вам потрібна система керування станом, не беріть першу ліпшу про яку почули.
Наприклад redux чудовий якщо вам потрібна можливість відміняти зміни, або у вас вся команда працює саме з ним. MobX, в свою чергу, зручний для тих хто звик до ООП підходу (раджу спробувати). А #tanstackquery (#reactquery) буде корисним якщо у вас багато мережевих запитів.
Якщо це все підсумувати - завжди намагайтеся зрозуміти навіщо ви робите той чи інший крок і все у вас буде добре)
П.М. Спонсор цього посту - мій увал,
Ваш зампомиш)
Я вам ще не надоїв?
Якщо ні, то як і обіцяв - лінк на канал про моє БЗВП, наразі він публічний, можна репостити. Там є інформація і про підготовку, і про проходження деяких моментів, хоча й не всіх. Читайте, хто планує доєднуватися до ЗСУ буде корисно.
По зборах - поки на паузі, бо у Моно виникли питання до мене в зв'зяку з останнім збором на машину (сюди не постив).
Як розберемося - буду відкривати на деякі потреби. При чому є нюанс що не всю номенклатуру речей я можу відкривати, тому буду щось думати. Не знаю навіть.
Коротше зі зборами не все так просто)
А як у вас справи? Реакт ще не забули?)))
Ваш Зампомиш)
Простір для вивчення нової професії, зростання в кар’єрі або розвитку бізнесу👇🏻
Наша команда пише для вас найкращі та найцікавіші матеріали, які обов’язково допоможуть у вашому навчанні: https://genius.space/lab/
Last updated 2 months, 3 weeks ago