«перехід між сторінками потребує повного перезавантаження, а це означає, що щоразу завантажується новий HTML, CSS та JavaScript».
Not true. У більшості випадків HTML, CSS та JavaScript будуть завантажуватись з локального диску завдяки кешуванню.
Можна публікувати на сайті компанії або в блозі компанії на сторонніх ресурсах. Компанії й так витрачають гроші на копірайтерів, а тут сабджект меттер експерт писати буде.
Що вас тут тримає, якщо на цьому сайті для вас цікава лише одна стаття за 10 років?
Цікава стаття чи ні — це вирішує читач особисто.
Я це питав у психолога. Вона відповіла, що до тебе прийдуть твої слухачі, якім буде подобатись те, що ти розповідаєш.
Та я зрозумів, що мені не треба 10 000 будь яких слухачів. Мені треба 100, яким цікаво та подобається, як я розповідаю.
Це допомагає ігнорувати тих, хто набігає. :)
Будемо обговорювати такі додаткові питання у форматі вільного мікрофону:
4.1. Чому не Playwright?
4.2. Наскільки складно автоматизовувати збір даних без використання Selenium у випадку захищених від автоматичної обробки сайтів?
4.3. Як найшвидше розвиватися у Пайтон розробці для новачка?
Підтримую!
Див. мій вебінар про трансляцію власного досвіду, та чому це корисно для вас, вашої компанії та спільноти!
Вже є одне питання на «Вільний мікрофон»: «Чому Selenium, а не Playwright?». Розповім свою точку зору. :)
А що ви очікуєте від ресайз? Є append, insert, extend. Зробити одразу потрібний розмір?
Я запускаю тести під дебагом в PyCharm та натискаю паузу, коли Селеніум нічого не робить. PyCharm показує місце, де зараз мої скріпти висять.
Наприклад, нещодавно робили це, щоб зрозуміти чому на компі у співробітника запуск теста займає 60 секунд. Виявилося, що у його провайдера була помилка та мережеве зʼєднання с сервером, звідки завантажувався драйвер, закінчивалося таймаутом (60 секунд). Ми написали провайдеру, та він за добу виправив. А чому працювало після 60 секунд? Тому що WebDriverManager має кеш попередньо завантажених драйверів. І коли перевірка нової версії закінчується тайм-аутом, то він брав готовий драйвер з кешу.
Доречі, я роблю Селенім + Пайтон мітап. Запрошую: dou.ua/calendar/52051
Повертав монітор в Розетку. Я його придбав, приніс додому, розкрив, зібрав, пропрацював день, мені не сподобався (з Маком погано працює), я розібрав, запакував, та повернув в Розетку. Вони повернули гроші.
Та й сам отримував товар, по якому було видно, що його хтось перевіряв. Але він цілком новий.
«Молодість — це недолік, який дуже швидко проходить». :)
Я професійним програмістом (це який працює з 9:00 до 18:00) став в 27. Витратив багато часу на навчання в університеті, аспірантурі, викладачем працював. Тому в вас в 15 дуже гарний вік, щоб вивчити програмування та знайти гарну роботу к 18 рокам.
Чи можливо потрапити на IT-проєкт у 17 років?
Так, можливо. Я особисто наймав на роботу талановитого першокурсника ХНУРЕ (Python, Backend). Що підвищило його шанси? Я був десь рік з ним особисто знайом, тому що він ще будучи школярем ходив на мій Python-гурток на якому показував свої здібності.
З цього можна зробити висновки:
1. Знайдіть спільноту та познайомтесь з усіма.
2. Покажіть ваші здібності: портфоліо на GitHub, пет-проджекти, технічні доповіді, особистий блок, ютуб-канал, пропонуйте безкоштовну допомогу.
3. Відкрийте телефон та подзвонить кожному та запитайте: «Я працював над створенням вебдодатків, SaaS-проєктів і eCommerce-рішень. Чи потрібна вам така допомога? Чи потрібна вашим знайомим така допомога?»
4. П. 3, але з телефона батька та матері: «Мій син працював над створенням... » (далі по тексту).
Я працював над створенням вебдодатків, SaaS-проєктів і eCommerce-рішень
«Talk is cheap. Show me the code.» — Linus Torvalds
Все реально, ви на на правильному шляху, в вас все вийде! Якщо буде потрібна особиста порада — будь ласка пишіть в особисті.
Ще додам до статті, що якщо треба ефективно зберігати масиви простих даних, то можна використати пакет array. Особливо, коли програміст розуміє, які дані будуть в масиві.
>>> import array
>>> a1 = []
>>> a2 = array.array('H')
>>> for i in range(50000):
... a1.append(i)
... a2.append(i)
>>> sys.getsizeof(a1)
444376
>>> sys.getsizeof(a2)
104750
>>> a2.itemsize
2
У цьому прикладі я обрав ’H’ — unsigned short (С type) — int (Python type), де кожен елемент займає 2 байта в памʼяті. Та це у 4 рази компактніше ніж стандартний масив.
Ще ці масиви зберігаються компактно у памʼяті, та центральний процесор буде ефективно використовувати кеш-памʼять.
Цілком дякую за дуже цікаву та змістовну статтю. Кожен програміст повинен знати, як воно там працює «під капотом». :)
Це називається paralysis by analysis — параліч через аналіз «що краще? може це? а може те?». І замість того, щоб вивчати та автоматизувати час гається на роздуми.
Приваблюють Cypress та Playwright? Супер! Почніть автоматизувати за допомогою цих технологій. Java або Python? Будь що, але пишіть скріпти автоматизації.
Мій особистий шлях — це Python + Selenium. Ми за допомогою цих технологій написали декілька тисяч тестів та змінювати пока що планів немає. Я розробив онлайн-курс де за 60 годин навчив десятки людей автоматизувати з нуля: Selenium + Python: автоматизація тестування веб-додатків.
Is it acceptable to use injections like this example below.
Так. Це т. з. Setter Injection.
Can it be considered as a good practice?
Так.
20 років тому Мартін Фаулер описав різні засоби для Dependency Injection: Inversion of Control Containers and the Dependency Injection pattern. Зверніть увагу на розділ “Deciding which option to use”.
Особисто я для тестування використовую unittest.mock.
Ось я робив лекцію з прикладами моків різних сервісів для тестування: Python Mock, MagicMock: мокаем веб-сервисы, базы данных (російською мовою).
написання коду на папірці
Нещодавно почав знову писати програми на аркуші. Такого стану потоку не відчував мабуть років з 10. :)
Гугл вміє індексувати SPA, є особливості: developers.google.com/...ipt/javascript-seo-basics