Результати пошуку
ITVDN: курси програмування
Відеокурси з
програмування
Підписка

300+ курсів за популярними IT-напрямками

Вибери свою IT спеціальність

Підписка
Підписка

300+ курсів за популярними IT-напрямками

Результати пошуку за запитом: domain drive design
Безкоштовний онлайн курс IT English для українців

Автор: Редакция ITVDN

Друзі, всім привіт! Запрошуємо на новий безкоштовний онлайн курс «IT English» для українців від наших партнерів CyberBionic Systematics та Englishdom! Англійська мова грає вагому роль для кожного ІТ-спеціаліста, тому інвестиції часу у її вивчення ніколи не будуть марними. І у вас є чудова можливість її  вдосконалити! Початок курсу і тривалість Курс стартує 7 лютого о 18:00. Заняття проходитимуть по вівторкам та четвергам в цей же час – всього десять занять тривалістю 1 година. Програма курсу: Effective Teams – 7 лютого Software Life Cycle – 9 лютого Deadlines and Project plans – 14 лютого Requirements – 16 лютого Design concepts – 21 лютого Development – 23 лютого Testing – 28 лютого Mobile app – 2 березня Gamification – 7 березня Data storage – 9 березня Що ви отримаєте на курсі? Ви опануєте базову ділову лексику, граматику, усталені конструкції та вирази зi сфери інформаційних технологій. Курс дозволить поліпшити свої знання англійської та отримати сертифікат після успішного складання фінального тесту. Ментор – Анастасiя Шамрай, викладач з 5-річним досвідом, закiнчила Brooklyn College NY (USA) та здобула вищу освiту у педагогiчному унiверситетi (Вінницький державний педагогічний університет ім. М. Коцюбинського). Для кого цей курс? Курс підійде в першу чергу тестувальникам і розробникам, але також буде корисний іншим ІТ-спеціалістам – Product та Project менеджерам, бізнес аналітикам тощо. Рівень англійської, який слід мати для комфортного проходження курсу – B1 (Intermediate). Як буде проходити навчання Заняття проходитимуть у форматі живих вебінарів (двічі на тиждень тривалістю 1 година), на яких ви зможете задавати питання спікеру і отримувати на них відповіді. Курс поєднує теорію і практику, будуть домашні завдання для закріплення вивченого матеріалу, а також спілкування у телеграм чаті з одногрупниками. Подарунки! На тих, хто найкраще себе проявить під час проходження курсу, чекають спеціальні подарунки! Деталі – за посиланням в кінці. Умови участі Безкоштовно, за попередньою реєстрацією. Організатори курсу: Englishdom – онлайн-школа для вивчення англійської мови з персональним викладачем на інтерактивній онлайн-платформі. Englishdom входить до ТОП лідерів ринку edtech в Європі. CyberBionic Systematics – сертифікований навчальний центр, партнер Microsoft, авторизований центр міжнародної сертифікації VUE Pearson. З 2007 року CyberBionic Systematics надає послуги з професійної підготовки та підвищення кваліфікації IT-фахівців, а також on-line навчання для початківців за напрямками FrontEnd, Java, .NET та Python. Подробиці на сайті CyberBionic Systematics
Lviv IT Arena 2016

Автор: Редакция ITVDN

Lviv IT Arena 2016 соберет во Львове более 2500 ІТ специалистов из  Украины и Европы. В 2015 году Lviv IT Arena назвали лучшим IТ-событием года. В этом году организаторы решили замахнуться не на украинский, а уже на европейский масштаб. Они планируют объединить более 2500 IТ-экспертов, на стадионе Арена Львов с 30 сентября по 2 октября. Как и в прошлом году, событие будет иметь не только традиционные три потока Business, Product и Technology, но и тех-експо, и соревнования стартапов за право питчить свой проект перед международными инвесторами. А еще Lviv IT Arena 2016 будет полностью англоязычной, ведь, как отмечают организаторы, 40% участников конференции будут из других стран. На конференции уже выступали спикеры из таких компаний как Facebook, IBM Design, Amazon, Petcube, HP, Epson, SAP и Microsoft. В этом году организаторы события обещают не менее звездный состав. Участников ждут спикеры со всего мира, которые будут говорить о трендах и текущих разработках. Среди них – Алехандро Данилишин с крупнейшей в мире компании профессиональных услуг Deloitte, дизайнеры Ирен Перейра и Антон Репоннен, которые работали с Nickelodeon, BBC и National Geographic, Aaron Erickson с Thought Works и Сэми Энергин, который работает над HoloLens в Microsoft. Кроме докладов, событие готовит масштабное тех-экспо с новыми разработками и продуктами. Основные тренды, которые покажут – дроны, работы, дополненная реальность, wearables, умные дома и города, а также 3D-принтеры и IТ-решения. Формат конференции Lviv IT Arena делает ее интересной не только для разработчиков и тестеров. Событие объединит бизнес аналитиков, PMив, UI / UX дизайнеров, предпринимателей и стартеров. Организаторы уверены, что именно это гарантирует качественный нетворикинг, каждый сможет найти не только единомышленника, но и делового партнера или инвестора на событии. «Lviv IT Arena выходит на новый уровень. Мы хотим быть не только лучшим IТ-событием страны, но одним из крупнейших в Восточной Европе. Поэтому в этом году Lviv IT Arena выходит на новый международный формат, чтобы создать достаточно пространства для бизнеса и нетворкинга. В этом году мы приглашаем не только иностранных спикеров, но и 2500 участников из всего мира.» - делится планами соорганизатор события Степан Веселовский, CEO Lviv IT Cluster. Организаторы: Lviv IT Cluster, Eleks, LITS, Startup Depot, GDG, Больше о конференции, спикерах, а также расписание события – на официальном сайте. Регистрируйтесь на сайте с промо-кодом Arena4ITVDN и получите скидку 10%.  Дата: 30.09. – 02.10. Место: стадион Арена Львов, ул. Стрийская, 199 Контакты: info@itarena.lviv.ua, 067-340-09-66
Сервіс пошуку роботи в IT для Junior спеціалістів на ITVDN

Автор: Редакция ITVDN

Головна задача освітньої платформи ITVDN – дати нашим студентам ті знання та навички за обраною ІТ-спеціальністю, які будуть достатніми для успішного початку кар’єри. Однак опанування професії – лише перша сходинка. Не меншим випробуванням є ще й пошук роботи та проходження співбесід. Ми ж не зупиняємося на навчанні і хочемо допомогти тим, хто вже його завершив і готовий зробити наступний крок. Тому ми з радістю представляємо наш новий розділ на сайті ITVDN – “Вакансії”. Давайте ми познайомимо вас з ним детальніше! Для чого ми створили цей розділ Головна мета – допомогти новачкам розпочати свою кар’єру в ІТ-індустрії, а саме – спростити процес пошуку першої роботи/стажування та збільшити шанси на успішний старт. Наразі це дуже актуально, оскільки ринок ІТ має сильну конкуренцію серед новачків. Ситуація ще більше погіршилася внаслідок коронавірусних обмежень та повномасштабної війни. Завдяки розділу “Вакансії” ITVDN стає не лише платформою для навчання, а й надійним помічником в розбудові успішної кар’єри у високодинамічній сфері ІТ. Для кого це корисно? Розділ “Вакансії” – це класна можливість для пошуку першої роботи тим, хто: Вже закінчив навчання за спеціальністю і знаходиться в активному пошуку своєї першої роботи або стажування в ІТ. Знаходиться в процесі навчання і хоче паралельно моніторити ІТ-ринок, аби підтримувати мотивацію і бути в курсі поточних вимог до початківців. Ми публікуємо вакансії рівнів Intern, Trainee та Junior від наших партнерів, чий стек технологій достатньо наближений до того, який ви можете опанувати у нас. Це дозволяє новачкам швидше знаходити першу айтішну гавань, а роботодавцям – набирати в команду потрібних кандидатів, з яких можна виростити кваліфікованих ІТ-спеціалістів. Вакансії можуть охоплювати широкий спектр спеціальностей: від розробки популярними мовами JavaScript, Python, C# та Java до дизайну, тестування, створення ігор та розробки мобільних застосунків під Android та iOS. Функціонал сторінки вакансій на ITVDN На головній сторінці перелік доступних вакансій, але при натисканні на кнопку “Усі вакансії” ви потрапляєте на сторінку з різноманітними фільтрами. Користуючись ними, ви можете відібрати саме ті пропозиції, які вас цікавлять. Серед доступних фільтрів: спеціальність, тип роботи, вид зайнятості, рівень. Обравши конкретну спеціальність, ви можете ознайомитися з деталями та відгукнутися на неї, вказавши необхідні дані: прізвище та ім’я, імейл, номер телефону, зручний для спілкування месенджер, та залишивши власний коментар (за бажанням). Також є можливість завантажити резюме.  Нижче на сторінці “Вакансіїї” ви знайдете перелік важливих та корисних вебінарів, які допоможуть скласти резюме, підготуватися до співбесіди, гарно проявити себе в новій компанії, успішно пройти стажування тощо. Запрошуємо до співпраці ІТ-компанії Запрошуємо представників ІТ-компаній до співпраці на взаємовигідних умовах! Ми готові надати допомогу у пошуку кандидатів на позиції Intern / Trainee / Junior, які відповідають вашим вимогам, розміщуючи інформацію про вашу компанію та вакансії на сайті ITVDN у розділі "Вакансії". Розміщення вакансій є безкоштовним. Крім того, ми індивідуально інформуємо потенційних кандидатів про відкриття нових можливостей.  Найбільше у нас початківців, які пройшли навчання за такими напрямками: FrontEnd; Python (BackEnd); C# / .NET (BackEnd); Java (BackEnd); Node.js. Окремою популярністю користуються напрямки C++, QA, Android, iOS, PHP, Ruby, Databases, UI/UX Design. Наша компанія також надає сервіс онлайн тестування, який допоможе перевірити рівень знань кандидатів за різними технологіями та напрямками. Це дозволить виявити найкращих претендентів, котрі відповідають вашим вимогам.  Також ми будемо раді запросити вас проводити онлайн зустрічі з нашими випускниками, щоб ви могли розповісти більше про вашу компанію та пропозиції нашим студентам. Об’єднавши наші зусилля, ми зможемо підготувати майбутніх ІТ-фахівців, які стануть цінними членами вашої компанії. Давайте розвивати українське IТ разом! Щоб зв’язатися з нами, перейдіть на сторінку “Вакансії”, натисніть на кнопку “Напишіть нам” нижче і заповніть невелику форму. Додатково залишимо контакти нашого HR-спеціаліста, який з радістю відповість на всі ваші запитання за даною темою. Контакти для зв’язку: Вікторія Чабан Email: hr@cbsystematics.com Telegram: https://t.me/hr_cbs Skype: Viktoriia Chaban (+380937595777)
Devoxx Ukraine 2019

Автор: Редакция ITVDN

Devoxx Ukraine 2019 – международная Java конференция, представленная в Украине компанией EPAM и Java User Group of Ukraine. Когда: 1-2 ноября, 2019 Где: «M82», ул. Межигорская 82. Киев, Украина Devoxx Ukraine является частью семьи Devoxx, а также одной из крупнейших международных технологических конференций в Украине: Более чем 60 международных спикеров – только признанные профессионалы в мире Java и не только; Участники со всего мира; Передовые технологии и тренды:  Общение с лучшими экспертами и многое другое! Среди представленных на Devoxx Ukraine треков каждый участник конференции, независимо от специализации, сможет найти для себя нужное направление: Java Language (Java Language, Java SE, JDK, Graal VM, Corretto VM, performance tuning, concurrency, etc.)  Methodology and Culture (Software development methodologies, developer culture and related subjects) Cloud, Containers & Infrastructure (Cloud-native, Service mesh, Quarkus IO, Kubernetes, Docker, Istio, PaaS and serverless. Building anything and deploying it anywhere. SRE/DevOps/Chaos engineering as a culture) Server Side Java (Frameworks and libraries which are mainly used on the server-side: Spring, Jakarta EE, Reactive frameworks, ORM, Messaging, Databases. Microservices frameworks)  Architecture (Share howtos, experience, best-practices to build a system and do it right. Microservices, Distributed systems or Monolithic design. Blockchain. Also, something which can be explained without dive into the code)  Modern Web (Frontend technologies, languages and tooling to build modern browser and mobile apps (JS/Node/TypeScript/React/Kotlin JS. Thick-clients working via Web) Big Data & AI (Big Data, Fast Data, Stream processing, NoSQL, Machine learning, Deep Learning, Neural Networks, TensorFlow, etc) Programming Languages (Other languages running on the JVM, functional, mobile and emerging languages. The tools, libraries and best practices) Security (Encryption, defensive practices, tools and technologies to be secure, security testing) Выступления будут проходить в различных форматах, а именно: Birds of a feather (BOF) – неофициальные, вечерние одночасовые дискуссии в небольших группах; Keynote – 45-минутный доклад; Regular talk – 45/60-минутная презентация; Deep-dive / HOL – 3-часовая презентация; Small Talk – 25-минутный доклад в неформальной обстановке. В прошлом году конференция побила рекорды за все время проведения в Украине по количеству поданных докладов, а также по количеству участников (1300) и мы продолжим работать над тем, чтобы в этом году вы имели возможность услышать лучших экспертов и получить уникальный опыт общения с коллегами и единомышленниками.   Официальный сайт: devoxx.org.ua. Как это было в 2018 году: видео и фото. Используйте промо-код itvdn5 чтобы купить билет со скидкой 5%. По любым вопросам пишите нам: contact@devoxx.org.ua.
Конференція Lviv IT Arena: новітні технології, сучасні тренди, бізнес та майбутнє ІТ індустрії!

Автор: Ирина Музыка

2-4 октября на стадионе «Арена Львов» состоится самое ожидаемое ІТ событие года – конференция Lviv IT Arena. Мероприятие станет самым крупным в истории подобных конференций событием Западной Украины. Lviv IT Arena фокусируется на основных IT трендах развития индустрии в Украине и мире. Концепция охватывает полный цикл разработки ПО. Также конференция охватывает этапы развития ІТ компании – от стартапа до системной компании, а секции конференции сформированы таким образом, что она будет интересна для всех ІТ специалистов, руководителей компаний, проектных менеджеров, тестировщиков, HR специалистов, а также тех, кто только планирует создать собственную компанию. Участников ждет множество сюрпризов – тест-драйв и фотоссесия с Tesla, Google Glass, вечеринки и развлечения. Посетив конференцию, участники из разных уголков Украины, Европы и мира смогут услышать около 100 спикеров международного уровня, которые выступят в 11 секциях Lviv IT Arena. Программа и билеты на конференцию доступны на сайте. Startup (Workshop Day – работа с идеями, советы специалистов и раскрытие основных инструментов для создания успешного стартапа - Lean Startup, Business Model Canvas, Financial Model, Presentation и Startup Stars Day, во время которого выступят самые крутые основатели украинских технологических стартапов – Петр Бондаревский (Internet Investments Group), Андрей Колодюк (Aventures Capital), Алексей Орап (YouScan), Дмитрий Бариский (Smart Atoms) и Максим Ищенко (Dou.ua). В конце дня состоится питчинг перед бизнес-ангелами среди избранных стартапов со всей Украины, Молдовы, Белоруси. Зарегистрировать свой стартап можно тут. Скидка на 2 билета для зарегистрированного стартапа – 50%. Mobile (доклады и дискуссии о будущем мобильных телефонов и перспективы развития - personalization, context analysis, wearables, IoT, M2M, а также возможности мобайла сегодня - NFC, face & object recognition, augmented reality. Среди спикеров секции - Myriam Joire (Pebble), Cyril Lashkevich (Viber), Markiyan Matsekh (Eleks) и др. UI/UX (кейсы, доклады, обмен опытом, интерактив в воркшопах от специалистов, работающих в ведущих дизайн-бюро и на всемирно известные бренды. Узнайте все о сути хорошего дизайна – как начать работу, откуда брать идеи и вдохновение, как правильно заниматься саморазвитием и организовать синергию дизайнера с клиентом. О минимализме, функциональном дизайне, User Experience Design в докладах Максима Ткачука (Trendkill designers), Павла Колодяжного (Design bureau “make”), Юрия Бабича (COXO) и др. Google Development (перспективы роста бизнеса с платформой Google+, воркшопы по созданию приложений на платформе Google App Engine от Google Developer Expert'a, cloud технологии, привлечение дополнительной аудитории с Google+ и все о wearables – как о реальности, а не туманной перспективе в докладах лучших специалистов - Javier Ramirez (Google Developer Expert on the Cloud Platform, founder at teowaki), Panayiotis Lipiridis (Startup), Gerwin Sturm (Owner & Developer at FoldedSoft e.U.), Julianna Göbölös-Szabó (Prezi) и др. QA (автоматизация тестирования, современные тренды направления – автоматизация тестирования игр и больших объемов данных, тестирование ПО для медицинских устройств и краудсорсинговое тестирование. Обо всем этом – в докладах Андрея Дзыни (Spotify), Святослава Рымара (SoftServe), Дмитрия Миндры (Unity Technologies) и др. Data Science (о технологиях Яндекс, искусственном интеллекте в создании беспилотников, технологии Apache Hadoop и Amazon Redshift на примере выполнения ETL процесса для обработки медицинских данных, о мировом сообществе Data Science - Kaggle и многом другом в выступлениях Григория Бакунова (Yandex ), Дмитрия Новицкого (Rybka Project), Александра Шкопа (Envion Software) и др. Value Management and Business Analysis (обмен реальным практическим опытом работы бизнес аналитика на IT проектах разного рода. Как эффективнее описывать требования к системе? Ответ на вопрос: какие методы выявления скрытых требований к продукту могут быть? Как создавать действительно ценные продукты с точки зрения бизнеса? Самое важное о новых тенденциях с сфере БА и ВМ от специалистов из Украины, России, Молдовы, Эстонии, Белоруси – Ольги Павловой (SobakaPavlova), Артема Сердюка (EffectCup, ScrumGuides), Александра Белина (EPAM Systems), Юрия Веденина (ITMINE) и др. IT Outsourcing (об ІТ индустрии во Львове, как приоритете стратегического развития, актуальном состоянии и перспективах развития индустрии во Львове и Украине, влиянии перемен в стране на развитие индустрии информационных технологий, взаимодействии и сотрудничестве аутсорсинговых компаний со стартап-проектами и многом другом расскажут Андрей Садовый (Lviv City Council), Андрей Ганкевич (Lviv IT-BPO Cluster), Тарас Кицмей (SoftServe), Андрей Павлив (N-iX), Theo Schnitfink (Symphony Solutions), Alan Harlan (SoftServe), Алексей Скрыпник (Eleks), Степан Веселовский (Lviv IT-BPO Cluster) и др. Information Security (вопрос информационной безопасности на государственном уровне, практические аспекты информационной безопасности, безопасность электронной почты и многое другое в докладах Николая Коваля (CERT-UA), Евгения Преображенского (URAN), Павла Хромчака (WISC UA community) Management as fun (о TBD и темной стороне ІТ менеджмента в теоретическом и практическом аспекте, геймификации в пост-тренингах, коучинг подходе и другом в докладах  Анны Подгорной, Наталии Шпот (Lviv PM school), Андрея Яворского (GlobalLogic), Софии Опацкой (LvBS ) и др. Game Development (в потоке GameDev - почему Unity скоро захватит мир, о проблемах, которые возникают при разработке больших игровых проектов, о лучших практиках построения интерфейсов и успешной истории проекта Nravo Kids расскажут эксперты – Сергей Гринец (Nravo), Ростислав Каминский (Nravo), Тарас Леськив (Nravo), Андрей Вышковский (Nravo) и другие) Главный организатор конференции — Львівський кластер інформаційних технологій та бізнес-послуг. Соорганизаторы – компания Eleks, Львівська спільнота тестувальників, Львівська бізнес-школа, Спільнота розробників Google (GDG), Бізнес-інкубатор Startup Depot, Спільнота спеціалістів у сфері інформаційної безпеки (WISC), Школа проектного менеджменту і Львівська міська рада (ЛМР). Генеральный партнер – SoftServe, Turkish Airlines, Tesla Золотые партнеры – Samsung Electronics Ukraine Company, ПАТ «Укртелеком», Data Art, Оптима Плаза, Noosphere Серебряные партнеры – Qubstudio, GlobalLogic, DalivSoft Inc, Квитковий сервіс Gastroli.UA, Місцевий економічний розвиток, ELMOB.CO, Інтергал-Буд, NATEK Poland Гостеприимные партнеры – Leopolis, Citadell Inn, Nota Bene, Панська гора Генеральный медиапартнер –  DOU Эксклюзивный медиапартнер – Радіо 24 та Телеканал новин 24 Главный деловой медиапартнер – Delo.ua Медиапартнеры: IT Expert, INVenture, Brainberry Global, dev.by, it.rabota.ua, Betaplace, GTF, Geeks Lab, Highload Dev Conf, AgileBaseCamp, IT Ukraine, WannaBiz, Bitcoin Conference Kiev, Brain Basket Foundation, ITVDN, ITEM, PM Forum, Spider Ukraine, IT Rally, IT Weekend, Львівська газета, Postpaper, Электронный документооборот и ИТ для бизнеса, Lviv Online, ERVE.ua, Сайт міста Рівне 0362, Career4it.
Як створити веб-сайт за допомогою AJAX

Автор: Редакция ITVDN

Создания простого чата Для начала создадим простой чат с помощью HTML&CSS и PHP&MySQL Проектирование Базы Данных Переходим к phpMyAdmin. Создаем новую базу данных, называем “chatdb”. Создаем новую таблицу, называя “Posts”, включая в себя 4 столбца: “id” тип колонки INT, автоматическое увеличение на 1 (задаем A_I в ячейку с флажком) основной ключ (index); “nick” тип колонки VARCHAR и длина 100; “post_text” тип колонки TEXT; “post_dt” тип колонки DATETIME по умолчанию является CURRENT_TIMESTAMP. Создание веб-сайта. Во-первых, создадим главную страницу. Список комментариев и отправка формы, используя кнопку. Всё будет находится в файле “index.php” .  Давайте создадим этот файл и напишем что-то вроде этого:  <html> <head> head> <body> php $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); /* "127.0.0.1" is MySQL host name. In local servers (XAMPP, Ampps, etc.) it is 127.0.0.1. If you using a dedicated hosting, see it in admin panel. */ /* "root" and "" is login and password for DB's user. In local servers usually default DB user is "root" with empty password. */ /* "chatdb" is DB's name. */ /* Warning: in XAMPP you should manually run MySQL server (from xampp-control.exe) to get it work. */ $result = $mysqli->query("SELECT * FROM posts;"); ?> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> php if ($result) {   while ($post = $result->fetch_object()){     $nick = $post->nick;     $post_dt = $post->post_dt;     $post_text = $post->post_text;         echo "<b>$nickb> ($post_dt):<br>";     echo "$post_text<br>";     echo "<br>";   }   $result->close(); } ?> div> php $mysqli->close(); ?> <form action="post.php" method="post" style="height: 0; display: table-row;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input type="submit">input> form> div> <script type="text/javascript">     var divComments = document.getElementById('comments');     divComments.scrollTop = divComments.scrollHeight; script> body> html> 2. Дальше давайте создадим “post.php” файл и напишем такое:  php $nick = $_POST['nick']; $post_text = $_POST['text']; $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); $nick = $mysqli->real_escape_string($nick); $nick = htmlspecialchars($nick); $post_text = $mysqli->real_escape_string($post_text); $post_text = htmlspecialchars($post_text); $mysqli->query("INSERT INTO posts (nick, post_text) VALUES ('$nick', '$post_text');"); $mysqli->close(); /* Redirect To Main Page */ header('Location: ' . $_SERVER['HTTP_REFERER']); ?> 3. Откроем ваш чат в любом продвинутом браузере. Вся работа:  4. Напишите ник и текст, а потом нажмите на кнопку отправки.  Когда отправили форму, сразу же происходит перенаправление формы главной страницы в “post.php”. “Post.php” моментально наполняет данными таблицу и перенаправляет на главную страницу. Также “post.php” содержит начальный XSS и SQL защищенный вход. Для упрощения не отправляем клиентам время с JS на “post_dt” на внесения данных, а указываем значение по умолчанию – CURRENT_TIMESTAMP, который предоставляет нынешнюю дату и время на сервер. Когда количество комментариев больше, чем экран может вместить, то комментарии   переполнены в div, используется вертикальный скроллбар. Во время загрузки страницы JS автоматически опускает скроллбар вниз к недавнему комментарию. Что тут не так? Проблема номер 1. Новый непрочитанный комментарий от пользователя не загружается в базу данных автоматически, без ручной перезагрузки страницы. Это очень, очень серьезная проблема для любого чата. Как это исправить? Очевидно, один из путей сделать это - использовать HTTP-запрос к фоновой работе автоматически (с помощью JS) и асинхронно, то есть это один из способов обеспечить выполнение AJAX в любой form. Проблема номер 2. Также неправильно то, что кнопка отправки перезагружает страницу (перенаправляет на вторую страницу и следующим шагом возвращает назад). При перезагрузке страницы сбрасывает “Nick” в  поле (также, как любые другие изменения, те, что сделали с пользователем) Как это исправить? Конечно, можно обеспечить выполнение обхода для сохранения изменений и перезагрузки на перезагружаемой странице. Но не эффективнее ли устранить причину, чем последствие? Можно только убрать перезагружаемую страницу и эта проблема будет решена автоматически. Проблема номер 2.1. Видите ли что-то необычное тут? Это слишком быстро? Дело с чатом очень простое – загружаем только два маленьких текстовых параметра. Что делать, если нужно улучшить чат с помощью добавления присоединения, а конкретно - изображений и видео? Видео может иметь объем в размере нескольких мегабайт, что тогда в этом случае? Давайте попробуем.  Давайте немного изменим “post.php”, после $mysql->query() добавив это:  for ($i = 0; $i < 1000000000; $i++) { } Старайтесь размещать какие-либо комментарии. Что мы видим? Нет, UI не остановилось (заморозилось), но браузер ждет до того, как закончится подключение:   Да, если “post.php” вызывает какую-то необработанную ошибку, то чат исчезает, и пользователь видит пустое окно с сообщением о непонятной ошибке. Чтобы вернуться к чату, пользователю стоит нажать кнопку “Back” в браузере. И это проблема номер 2.2. Давайте уберем петлю с “post.php” и исправим эти проблемы. Реализация легкого AJAX в простой чат Автоматическое обновление комментариев Эта веб-страница без AJAX? Это веб-страница, которая полностью перезагружается. Эта веб-страница c AJAX? Это веб-страница, что перезагружается частично. Где же взять части этих страниц? Стоит разделить нашу страницу на части, в этом случае сервер генерирует страницу частично. Страница будет состоять из двух частей – блок комментариев и другой контент страницы. Комментарии будут загружаться и перезагружаться отдельно от другой страницы. Давайте сделаем первую часть, то есть блок комментариев. Для начала создадим пустой файл, назовем “getcomment.php”. Дальше переходим в “index.php” для того, чтобы вырезать комментарии и далее отделить его. 1. Вырезаем инициализированный блок MySQL с “index.php"  php $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); /* "127.0.0.1" is MySQL host name. In local servers (XAMPP, Ampps, etc.) it is 127.0.0.1. If you using a dedicated hosting, see it in admin panel. */ /* "root" and "" is login and password for DB's user. In local servers usually default DB user is "root" with empty password. */ /* "chatdb" is DB's name. */ /* Warning: in XAMPP you should manually run MySQL server (from xampp-control.exe) to get it work. */ $result = $mysqli->query("SELECT * FROM posts;"); ?> вставляем в “getcomments.php”. 2. Следующее, вырежем контент div c комментариями с “index.php”: php if ($result) {   while ($post = $result->fetch_object()){     $nick = $post->nick;     $post_dt = $post->post_dt;     $post_text = $post->post_text;         echo "<b>$nickb> ($post_dt):<br>";     echo "$post_text<br>";     echo "<br>";   }   $result->close(); } ?> И вставим (добавим) в “getcomments.php” после инициализации MySQL. 3. Дальше, вырежем недалекий блок MySQL с “index.php”: php $mysqli->close(); ?> Вставим его в конец файла “getcomments.php”. 4. Наконец-то, убираем JS-скрипт, который опускает скролл в самый низ. <script type="text/javascript"> var comments = document.getElementById('comments'); comments.scrollTop = comments.scrollHeight; script> Не переживай, это только временно. 5. Сделано. Теперь имеем что-то наподобие этого:  <html> <head> head> <body> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> div> <form action="post.php" method="post" style="height: 0; display: table-row;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input value="Submit" type="submit">input> form> div> body> html> getcomments.php:  php $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); /* "127.0.0.1" is MySQL host name. In local servers (XAMPP, Ampps, etc.) it is 127.0.0.1. If you using a dedicated hosting, see it in admin panel. */ /* "root" and "" is login and password for DB's user. In local servers usually default DB user is "root" with empty password. */ /* "chatdb" is DB's name. */ /* Warning: in XAMPP you should manually run MySQL server (from xampp-control.exe) to get it work. */ $result = $mysqli->query("SELECT * FROM posts;"); ?> Вероятно, теперь наша страница разделена. Давайте проверим её. Переходим http (точнее ССЫЛКА для локального сервера). Дальше, переходим на главную страницу, http:///index.php Это удивительно! Всё удачно получилось, разделив страницу на части за пару минут! Не останавливаемся на этом. Теперь “glue” эти части с помощью AJAX. Как это сделать? 1. Для начала стоит создать пустой JS-скрипт на главной странице: <script type="text/javascript"> alert('Test'); script> Добавив это после тега div, перед закрывающимся тегом . 2. Сделаем HTTP GET запрос от JS к “getcommet.php” Для этого используем XMLHtttpRequest (XHR) класс: <script type="text/javascript"> var xhr = new XMLHttpRequest(); xhr.open('GET', '/getcomments.php', false); xhr.send(null); if (xhr.status == 200) {   alert(xhr.responseText); } script> Это работает, но не читает старые версии IE те, что не поддерживают такую инициализацию. Для получения более кросс-браузерного пути переходим в и добавляем это: <script type="text/javascript"> function getXmlHttp(){   var xmlhttp;   try {     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");   } catch (e) {     try {       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");     } catch (E) {       xmlhttp = false;     }   }   if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {     xmlhttp = new XMLHttpRequest();   }   return xmlhttp; }; script> И главный скрипт (в конце) <script type="text/javascript"> var xhr = getXmlHttp(); xhr.open('GET', '/getcomments.php', false); xhr.send(null); if (xhr.status == 200) {   alert(xhr.responseText); } script> Как видно, теперь JS получает контент со страницы “getcomments.php” и показывает это в предупреждении.   2.1. Вопрос: «Это на самом деле AJAX (Asynchronous Javascript And Xml)?» Это AJAX, потому что запрос сервера отформатирован в HTML (который основан на XML). Но действительно ли это AJAX, это асинхронно? Проверим. Добавим эти уже знакомые строки в любое место между в “getcomments.php”: for ($i = 0; $i < 1000000000; $i++) { } Что теперь видно на загружаемой странице? Вначале страница зависает, его замораживает UI (становится не реагирующим на нажатие левой/правой кнопки мыши): Дальше Chrome показывает навязчивое всплывающие окно, сообщающее об удалении страницы: Это не AJAX! Это JAX! Как его сделать асинхронным? К счастью, ХHR также поддерживает асинхронный режим: <script type="text/javascript"> var xhr = getXmlHttp(); xhr.open('GET', '/getcomments.php', true); /* true for asynchronous */ xhr.onreadystatechange = function() {   if (xhr.readyState == 4) {     if(xhr.status == 200) {       alert(xhr.responseText);     }   } }; xhr.send(null); script> В этом случае браузер не ждет ответа с главного потока пользовательского интерфейса, он запускает в другом (асинхронно) и вызываемым событием “onreadystatechange” в главном контексте UI.  Теперь всё в порядке, страница полностью доступна, пока запрос запущен, и после ответа получит предупреждение. for ($i = 0; $i < 1000000000; $i++) { } И продолжаем работу. 3. Добавляем этот контент в div  вместо предупреждения. Заменить это: alert(xhr.responseText);  C этим: var divComments = document.getElementById('comments'); divComments.innerHTML = xhr.responseText; Возвращаем назад, клиент видит “glued” страницу с блоком комментариев. 4. Дальше следует установить интервал для автоматической проверки новых комментариев время от времени… и также восстановить удаленный сценарий автоматической прокрутки.  <html> <head> <script type="text/javascript">     function getXmlHttp() {         var xmlhttp;         try {             xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");         } catch (e) {             try {                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");             } catch (E) {                 xmlhttp = false;             }         }         if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {             xmlhttp = new XMLHttpRequest();         }         return xmlhttp;     }; script> head> <body> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> div> <form action="post.php" method="post" style="height: 0; display: table-row;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input value="Submit" type="submit">input> form> div> <script type="text/javascript">     var divComments = document.getElementById('comments');     function loadComments() {         var xhr = getXmlHttp();         xhr.open('GET', '/getcomments.php', true);         xhr.onreadystatechange = function () {             if (xhr.readyState == 4) {                 if (xhr.status == 200) {                     if (xhr.responseText !== divComments.innerHTML) {                         divComments.innerHTML = xhr.responseText;                         divComments.scrollTop = divComments.scrollHeight;                     }                 }             }         };         xhr.send(null);     };     loadComments();     setInterval(loadComments, 1000) script> body> html> Теперь проблема исправить это. Новые комментарии с другого пользовательского чата (другие вкладки браузеров, окон и экземпляров) получают каждые 1000 миллисекунды (1 секунду) автоматически. Но отправка комментариев уже вызывает перезагрузку нашей страницы. Отправка комментариев без перезагрузки Как написано выше, XHR помогает отправлять HTTP GET-запросы без перезагрузки страницы и GUI заморозки (асинхронно). Теперь отправляем HTTP-запрос асинхронно, но на этот раз POST запрос, а не GET. И, естественно, XHR позволяет это. Используем метод send(). Для GET указываем null. Для POST устанавливаем запрос “body”.Также нужно добавить “Content-Type:application/x-www-from-urlencoded” в header  для того, чтобы разрешить серверу знать, какой формат использовать для отправки данных. Заметка: если не знаете, что отправлять, то можно захватить регулярный запрос с помощью “Fiddler” или же любой другой HTTP-перехватчик и только просимулировать запрос. HTTP-перехватчик — это незаменимый инструмент для работы с HTTP/HTTPS. Это позволяет увидеть все headers и bodies по всем HTTP(S)-запросам, что отправляются в систему. Лучше использовать “Fiddler”, это бесплатное, современное и очень простое приложение, что может поддерживать HTTP/HTTPS и оба Win x86/x64. 1. Для начала создадим пустой JS скрипт в HTML. Разместить до самого тега, потому что этот скрипт будет использован для отправки формы комментария (форма будет вызывать этот скрипт при отправке).2. В этом скрипте, реализуем функцию, что будет отправлять ник и комментарии в “post.php”  <script type="text/javascript"> function postComment(nick, text) {   var xhr = getXmlHttp();   xhr.open('POST', '/post.php', true);   xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');   xhr.onreadystatechange = function() {     if (xhr.readyState == 4) {       if (xhr.status == 200) {         /* it isn't required to add comment to DOM manually, it will done automatically on next refresh via AJAX */       }     }   };   xhr.send('nick=' + nick + '&text=' + text); /* joining the data in format simulates form */ }; script> 3. Следующие, перезагружая страницу при отправке:  ... onsubmit="return false;"> Также добавим вызов “postComment’s”: action="post.php" method="post" style="height: 0; display: table-row;" onsubmit="postComment(this.nick.value, this.text.value); return false;"> 4. Наконец, необязательно, но можно убрать “action” и “method” с формы:  <form style="height: 0; display: table-row;" onsubmit="postComment(this.nick.value, this.text.value); return false;"> 5. Результат: <html> <head> <script type="text/javascript">     function getXmlHttp() {         var xmlhttp;         try {             xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");         } catch (e) {             try {                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");             } catch (E) {                 xmlhttp = false;             }         }         if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {             xmlhttp = new XMLHttpRequest();         }         return xmlhttp;     }; script> head> <body> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> div> <script type="text/javascript">     function postComment(nick, text) {         var xhr = getXmlHttp();         xhr.open('POST', '/post.php', true);         xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');         xhr.onreadystatechange = function () {             if (xhr.readyState == 4) {                 if (xhr.status == 200) {                     /* it isn't required to add comment to DOM manually, it will done automatically on next refresh via AJAX */                 }             }         };         xhr.send('nick=' + nick + '&text=' + text);     }; script> <form style="height: 0; display: table-row;" onsubmit="postComment(this.nick.value, this.text.value); return false;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input value="Submit" type="submit">input> form> div> <script type="text/javascript">     var divComments = document.getElementById('comments');     function loadComments() {         var xhr = getXmlHttp();         xhr.open('GET', '/getcomments.php', true);         xhr.onreadystatechange = function () {             if (xhr.readyState == 4) {                 if (xhr.status == 200) {                     if (xhr.responseText !== divComments.innerHTML) {                         divComments.innerHTML = xhr.responseText;                         divComments.scrollTop = divComments.scrollHeight;                     }                 }             }         };         xhr.send(null);     };     loadComments();     setInterval(loadComments, 1000) script> body> html>  Теперь простая реализация AJAX подошла к концу. Это ещё не конец, это только начало. Есть ещё достаточно всего для изучения и улучшения.
Міжнародний фестиваль інноваційних проектів Pioneers Kyiv!

Автор: Редакция ITVDN

ITVDN выступает региональным спонсором фестиваля инновационных проектов Pioneers Kyiv! Международный фестиваль инновационных проектов Pioneers в этом году впервые пройдет а Украине. Организатором мероприятия PioneersKyiv стала компания Eltrino.С 2012 года Pioneers Festival собирает вместе в Вене лучшие стартапы и инвесторов, которые хотят внести свой вклад в развитие будущих технологий и прорывных идей. Все это происходит при поддержке значительного количества медиа ресурсов, которые имеют прекрасную возможность первыми узнать и осветить в своих изданиях проекты новейших технологий или просто интересные стартапы, которые могут в корне изменить наш мир уже завтра. Ежегодно более 1600 стартапов с более чем 90 стран мира могут встретиться в Вене с 400 инвесторами. Количество посетителей ограничивается 2500 участниками, поэтому регистрация желающих происходит заблаговременно. Сама компания Pioneers основана в 2010 году. В своем арсенале имеют ряд проектов, которые способствуют развитию и росту инновационных проектов, и созданию целостной функциональной экосистемы вокруг стартапов по всему миру, а именно: Pioneers Festival. Global Pioneers - это более 30 ивентов сообщества в разных уголках мира (Токио, Париж, Будапешт, Турин, Амстердам, Сингапур и др. В этом году к перечню присоединяется еще и Киев). Площадка, где предприниматели могут найти новые полезные знакомства, показать свои проекты широкой общественности, помочь росту своего бизнеса. Происходит дважды в год в каждом регионе. Global Pioneers объединяет местные предпринимательские организации в единое глобальное сообщество. PioneersKyiv является частью экосистемы для стартапов. Pioneers Discover - консультационная поддержка стартапов и компаний. Pioneers Ventures - инвестиционное подразделение, которое помогает привлечь инвестиции на этапах early stage и pre-seed. Pioneers Challenge - соревнования стартап проектов. Так что, теперь в украинских проектов появилась еще одна возможность для привлечения инвестиций, получения эффективных советов и рекомендаций, как сделать свой стартап действительно успешным, заявить о себе широкой общественности, найти потенциальных клиентов и новые полезные контакты. Главная цель PioneersKyiv - найти новые инновационные проекты, помочь им привлечь инвесторов. В рамках ивента состоится конкурс для стартапов, победитель, которого получает билет на следующий фестиваль Pioneers в Вене. Желающим принять участие в конкурсе необходимо: подать заявку через регистрационную форму на сайте до 5 июня включительно, с 5 по 12 июня среди представленных стартапов будет избран 8 лучших, 12 июня до 20.00 стартапы получают уведомления о результатах отбора, отобранные стартапы готовятся к выступлению, финальная версия презентации должно быть подано до 26 июня, 27 июня с 10.00 до 13.30 - репетиция питчей в М17 27 июня отобранные стартапы выходят на питч (3 минутный доклад) на PioneersKyiv, их презентации оценивают судьи. счастливый победитель получает билет на Pioneers Festival в Вене. Судейская коллегия PioneersKyiv: Наталья Березовская - председатель совета правления UAngel, генеральный директор и управляющий партнер Detonate Ventures. Михаил Рябоконь - главный управляющий директор Noosphere Ventures Андрей Колодюк - управляющий партнер AVentures Capital, автор и основатель Divan.tv Вадим Т. Роговский - член совета правления UAngel, генеральный директор WannaBiz, соучредитель маркетингового агентства Face2Face Media Игорь Шойфот - член совета правления Happy Farm, предприниматель, инвестор, основатель Fotki.com Андрей Криворчук - управляющий партнер и исполнительный директор Chernovetskyi Investment Group Наши спикеры вдохновляют. 27-го июня участники и гости PioneersKyiv имеют возможность услышать полезные практические доклады: Марк Туррел - основатель и управляющий директор Orcasci, основатель “AIA” Conference, номинант Pioneer Technology на Всемирном экономическом форуме в 2008 году и Young Global Leader в 2010, автор “Scaling: Small Smart Moves For Outsized Results”. Тема доклада "50 Shades of Scaling: What tech companies can learn from the fastest selling book on the planet" (50 оттенков измерений: Какой опыт могут извлечь технологические компании из успеха самой продаваемой книги на планете). Михаил Рябоконь - главный управляющий директор Noosphere Ventures. Расскажет об инвестиционной политике Noosphere и даст рекомендации как заручиться поддержкой Noosphere Ventures. Наталья Березовская - председатель совета правления UAngel, генеральный директор и управляющий партнер Detonate Ventures. Расскажет об увеличении возможностей и снижения рисков для стартапов благодаря нетворку бизнес ангелов UAngel. Дмитрий Гадомский - партнер адвокатского объединения "Юскутум" Юрист-ботан, партнер юридической фирмы Юскутум. Раскроет секрет как узнать, что вы нарушаете закон. Кирилл Соляр - генеральный директор Sponge Digital & design, продакт менеджер в looks.fm. Эксперт по диджитал маркетингу, управления стартапами в ИТ. Все проекты, которые не пройдут отбор, имеют возможность принять участие в двухчасовом шоукейсе, где могут рассказать о своем проекте инвесторам и другим стартапам, услышать советы, рекомендации. С нетерпением ждем 27-го июня, чтобы показать замечательные проекты, услышать интересные доклады и получить море вдохновения. Начало регистрации в 14.00 в Центре современного искусства "M17" (ул. Антоновича, 102-104). Спешите приобрести билеты со скидкой 10%!  P.S. Секретная информация - только у ITVDN есть специальные скидочные коды на билеты на PioneersKyiv, обращайтесь.
Що таке патерни проєктування у програмуванні

Автор: Влад Сверчков

Що таке патерн (шаблон) проєктування. Коли використовують шаблони. Якими бувають патерни проєктування. Породжуючі. Структурні. Патерни поведінки. Як обрати шаблон? Висновки. Програмісти-початківці завжди приходять до точки, коли їхній код перетворюється на “спагеті”. Його важко читати, він містить масу самоповторень, зайвих функцій, а додавання нового функціоналу перетворюється на десяте коло пекла. Один із найкращих засобів запобігання цьому – використовувати патерни проєктування (Design Patterns). Чи є це срібною кулею, які переваги та недоліки патернів існують, і які з них необхідно знати розробникам? Відповіді розбираємо нижче. Що таке патерн (шаблон) проєктування? Патерни – це типові архітектурні рішення проблем, котрі часто зустрічаються під час розроблення ПЗ. Їхня інша назва – шаблони, і що цікаво – людство дуже часто оточує себе шаблонами у повсякденному житті: однакові гнізда розетки та форми вилок у приміщеннях – універсальне рішення для електроживлення; виделки та ложки – інструменти споживання майже будь-якої їжі; чашки – ємності для розміщення будь-якої рідини і так далі. Людина завжди прагне спростити традиційну діяльність, і це не могло обійти стороною програмування. Ідеї створення універсальних правил для якісної розробки існували ще до 90-х років минулого століття, але дійсно проривною стала праця "Design Patterns: Elements of Reusable Object-Oriented Software" (1994) авторства Еріха Ґамма, Річарда Гелма, Ральфа Джонсона та Джона Вліссідеса, які іменують себе як "Банда чотирьох" (Gang of Four, GoF). У книзі описано 23 патерна та їхнє застосування в об'єктно-орієнтованому дизайні. Ця праця стала фундаментальною і тепер патерни gof складають кістяк багатьох обговорень якісного коду. Коли використовують патерни В розробці шаблони використовують при необхідності приведення коду до наступних критеріїв: Читабельність – інші розробники мають без складнощів розуміти написане. Масштабованість – легкість у створенні нового функціоналу. Підтримуваність – оновлення кодової бази має проходити якомога плавніше. Також вони здатні підвищити швидкість і продуктивність розробника – патерни це дійсно дозволяють. Вони гарно справляються і з наступними задачами: зменшення кількості потенційних помилок та вузьких місць; спрощення рефакторингу; зменшення технічного боргу; покращення комунікації девелоперів з іншими програмістами, проєктними менеджерами, власниками тощо. Необхідність використати шаблони проектування зростає разом зі збільшенням кодової бази, особливо при комерційному розробленні – коли створюване ПЗ має приносити прибуток. Важливо пам’ятати, що використання патернів інколи є геть недоречним. Подекуди воно може значно ускладнити читабельність, громіздкість і масштабованість коду. Наприклад, нескладний функціонал, який нечасто використовується і займає мало місця в коді, не потребує pattern-втручання. А от репетативний код, що вирішує класичні задачі (сортування, перебір даних тощо) – ідеальний претендент на застосування шаблону. Аби не помилитися спершу з’ясуйте контекст вашої проблеми, а вже потім обирайте патерни програмування, які найкраще задовольняють вимогам. Якими бувають патерни проєктування У своїй книзі GoF виділяють три великі сімейства: Сімейство Короткий опис Породжуючі патерни або Creational Patterns Надають найкращі способи створення об'єктів. Вони абстрагуються від процесу конкретизації і роблять вашу систему незалежною від створення, компонування та представлення її об'єктів. Популярні приклади: “Абстрактна фабрика” (Abstract Factory), “Одинак” / “Одиночка” (Singleton), “Прототип” (Prototype), “Фабричний метод” (Factory Method). Структурні патерни або Structural Patterns Фокусуються на композиції об’єкту. Допомагають переконатися в тому, що зміна частини системи не потягне за собою необхідність змін в інших її складових. Популярні приклади: “Проксі” (Proxy), “Адаптер” (Adapter), “Компонувальник” (Composite), “Фасад” (Facade). Патерни поведінки або Behavioral Patterns Зона відповідальності – алгоритми та обмін інформацією між об’єктами. Популярні приклади: “Відвідувач” (Visitor), “Ітератор” (Iterator), “Ланцюжок обов’язків” (Chain of Responsibility), “Стратегія” (Strategy). Розглянемо більш детально деякі з них. Породжуючі Породжуючі патерни – це надійні помічники у створенні об’єктів таким чином, аби в майбутньому з ними було максимально легко працювати. Дамо короткий опис деяких шаблонів: Патерн Одинак / Сінглтон забезпечує наявність лише одного екземпляру класу з глобальною точкою доступу. Singleton поширений в задачах конфігурацій або логування в застосунках, де потрібен єдиний контрольований доступ. Шаблон Прототип дозволяє створювати нові об'єкти шляхом копіювання існуючих екземплярів. Використовується Prototype в ситуаціях, коли створення об'єкта надто дороге, наприклад, при клонуванні складних або ресурсоємних об'єктів. Фабричний метод визначає інтерфейс для створення об'єктів, але дозволяє підкласам самостійно визначати тип створюваних об'єктів. Fabric Method корисний у багатофункціональних застосунках, де класи повинні мати можливість вибирати тип об'єктів, наприклад, при роботі з різними форматами документів, системами онлайн платежів тощо. Абстрактна фабрика визначає інтерфейс для створення сімейств пов'язаних об'єктів без вказівки їх конкретних класів. Використовують Abstract Factory для створення різних компонентів інтерфейсу користувача, які повинні працювати разом і забезпечувати єдиний стиль (світла / темна тема вебсайту тощо). Розглянемо приклад на патерні Singleton. Уявіть собі просту програму – музичний плеєр. Він дозволяє користувачам відтворювати музичні файли. Однак водночас має працювати лише один екземпляр плеєра – можливість відкриття декількох одночасно повинна бути недоступна. Цього можна досягти за допомогою шаблону Singleton. Простий приклад коду мовою C#: public class MusicPlayer {             private static MusicPlayer _instance;             private MusicPlayer()             {              // Ініціалізуємо музичний плеєр (наприклад, завантажуємо плейлисти)             }             public static MusicPlayer Instance             {             get             {             if (_instance == null)             {                        _instance = new MusicPlayer();             }             return _instance;             }             }             public void PlaySong(string songPath)             {             // Запустити пісню             }             public void PauseSong()             {             // Поставити на паузу             }             public void StopSong()             {             // Зупинити відтворення пісні             } } // Отримуємо екземпляр MusicPlayer MusicPlayer player = MusicPlayer.Instance; // Використовуємо функціонал MusicPlayer player.PlaySong("C:\\Users\\yourUsername\\Music\\mySong.mp3"); player.PauseSong(); player.StopSong(); Щоразу як в різних ділянках проєкту вам треба буде створювати екземпляр плеєру для відповідної взаємодії, ви завжди працюватимете лише з одним і тим самим екземпляром, уникаючи дублікації. Якщо ви програмуєте мовою сі шарп, детально розібрати популярні патерни проєктування C# з прикладами ви можете за посиланням. Структурні З короткого опису в таблиці легко дійти висновку, що структурні патерни дозволяють сформувати надійну, масштабовану та підтримувану архітектуру проєкту. Коротке знайомство: Проксі забезпечує об'єкт-посередник для контролю доступу до іншого об'єкта. Зазвичай шаблон Proxy використовують для реалізації “лінивого” завантаження, коли об'єкт створюється або ініціалізується лише при зверненні до нього (наприклад, завантаження картинок з високою роздільною здатністю). Адаптер дозволяє об'єктам з несумісними інтерфейсами працювати разом. Застосовується патерн Adapter для інтеграції нових компонентів в існуючу систему без зміни її коду. Підходить для використання нової бібліотеки у старому застосунку. Компонувальник використовується для ієрархічного компонування об'єктів для подальшої роботи з ними як з єдиним об'єктом. Використовується для створення деревоподібних структур, як-от файлові системи або GUI, де кожен вузол може бути як простим, так і Composite об'єктом. Фасад (Facade) надає спрощений інтерфейс для взаємодії зі складною системою або набором класів. Він зменшує складність роботи з підсистемами і надає користувачам єдиний вхідний інтерфейс для виконання рутинних операцій. Вивчити саме структурні патерни проєктування C# (з прикладами) ви можете за посиланням. Поведінкові Патерни поведінки в першу чергу визначають зв’язки між об’єктами і те, як вони здійснюють обмін інформацією. Наприклад: Патерн Відвідувач (Visitor) дозволяє додавати нові операції до об'єктів без зміни їхніх оригінальних класів. Використовується для взаємодії з об’єктами зі складною структурою, коли внесення додаткової логіки в оригінальні класи невиправдано ускладнює код. Ітератор / Iterator надає зручний механізм послідовного та простого доступу до елементів колекції, незважаючи на складність її побудови. Даний патерн поведінки популярний при обході елементів контейнерів, як-от списки або масиви – він надає універсальний інтерфейс для різних типів колекцій. Ланцюжок обов’язків або ж патерн Chain of Responsibility дозволяє передавати запит ланцюжком обробників, поки один з них не обробить запит. Незамінний при обробці запитів на сервері, де кожен обробник може передати запит наступному обробнику в ланцюжку: перевірка при авторизації на сайті, оброблення подій у GUI тощо. Для входу в патерни проєктування книга від Gang of Four буде гарною точкою відліку. Ви познайомитеся з класикою та академічним розкриттям теми, використовуючи патерни gof. Якщо ж ви хочете збагатити свої знання шаблонів, але віддаєте перевагу мові Java, рекомендуємо відео курс “Патерни проектування Java”. Як обрати патерн? Спочатку ви маєте проаналізувати задачу – для більшої зрозумілості виконайте її декомпозицію, розбивши на декілька складових. При цьому використовуйте системний підхід: прорахуйте, як ваше рішення вплине на весь проєкт, які елементи воно зачепить зараз, і який вплив воно матиме на додавання нового коду. Якщо ви вже працюєте в ІТ-компанії, ваші колеги, тімлід або архітектор можуть підказати вам доцільність використання того чи іншого патерну, розкрити нюанси вже існуючої архітектури, кодового стилю та багато іншого. Лише після ретельного аналізу можна переходити до підбору шаблону, зважаючи на усі переваги та недоліки. До речі, в цих задачах гарними помічниками будуть безкоштовні AI-асистенти на кшталт ChatGPT, Gemini та ін. Також не забувайте про використання інших методик покращення кодової читабельності, масштабування й чистоти: SOLID принципи – вони регламентують 5 основних засад створення структурованого, якісного коду. Нещодавно ми проводили вебінар, на якому розбирали кожен принцип в деталях, запрошуємо до перегляду! А якщо вас цікавить прикладний характер SOLID принципів на Java, можете пройти даний відео курс. GRASP (General Responsibility Assignment Software Patterns) – патерни для об’єктно-орієнтованого проєктування. Вони не мають вираженої структури і носять більш абстрактний характер, аніж патерни gof. DRY (Don’t Repeat Yourself) – головна ідея даного принципу полягає у створенні коду, який не матиме дублікацій в проєкті. KISS (Keep It Simple, Stupid) – регламентує написання якомога простішого коду, аби його можна було легко читати і розуміти. Рефакторинг – повернення до вже написаного коду з метою його покращення без зміни функціональності. Інші техніки, що залежать від проєктів. Висновки Патерни грають ключову роль в сучасному розробленні. Вони акумулюють в собі найкращі практики створення кодової бази таким чином, аби досягнути максимальної легкості та ефективності розроблення, особливо на великих проєктах. Звісно, не завжди їхнє використання є доречним – потрібно аналізувати задачі і продумувати наслідки застосування того чи іншого шаблону, аби не отримати величезну валізу без ручки. Розвивайте вашу експертизу в області патернів – це win-win стратегія. З одного боку перед працедавцями ви постанете як досвідчений та висококваліфікований спеціаліст, а з іншого – ваші програмні рішення матимуть елегантний характер і відзначатимуться легкістю в читанні, підтримці та масштабуванні. Чи використовуєте ви патерни в своїй розробницькій діяльності? Можливо, тільки вивчаєте? Залишайте в коментарях ваші відповіді!
Розгортання ASP.NET MVC Web Site на Microsoft Azure

Автор: Редакция ITVDN

Введение Microsoft Azure является облачно-вычислительной платформой и инфраструктурой, предоставленной корпорацией Microsoft. Эта платформа выполняет такие функции, как построение, развертывания и управления приложениями и услугами, и они могут быть доступны по всему миру. Azure доступен как Платформа, как сервис (PaaS) и Инфраструктура, как сервис (IaaS). Чтобы сделать развертывание приложения.NET на Microsoft Azure, Visual Studio 2012 и Visual Studio 2013 предоставляет Вам необходимые инструменты. Вы можете загрузить полную версию Visual Studio 2013 года здесь. Чтобы использовать Azure, сначала нужно посетить сайт manage.windowsazure.com и подписаться на эту услугу. Вы также можете получить бесплатную пробную подписку, чтобы начать работу. После входа на портал, на следующем рисунке продемонстрированы некоторые службы/функции, которые можно получить: В этой статье мы будем использовать приложение, созданное с помощью Angular.js, MVC, WEB API для выполнения CRUD-операций. Мы будем публиковать приложения на Azure в качестве веб-сайта. Загрузите исходный код и откройте это приложение в Visual Studio 2013. Создание сервера базы данных с помощью SQL Azure Чтобы успешно запустить веб-сайт, Вы должны развернуть базу данных, используемую нашим веб-сайтом в облаке. Чтобы развернуть базу данных Azure, нужно создать сервер базы данных, используя Azure SQL. Шаг 1: Выберите SQL DATABASES, и Вы увидите страницы базы данных, как показано здесь: Выберите Servers, это позволит создать новую базу данных SQL SERVER. Нажмите кнопку  "CREATE A SQL SERVER DATABASE", ниже появится окно: Введите необходимые данные. После ввода данных выберите галочку в нижнем углу, чтобы создать базу данных сервера: Кликаем на кнопку "MANAGE" внизу страницы, это позволит Вам добавить сервер доступа в правила брандмауэра, так чтоб был получен доступ к приложению. Эти правила добавят IP-адрес вашей машины в правила брандмауэра. Чтоб узнать имя экземпляра сервера базы данных, кликаем по имени базы данных для отображения информационной панели. Прокрутите вниз страницы панели мониторинга для отображения MANAGE URL. Она начинается от https://.database.windows.net. Часть URL после https://, имя экземпляра базы данных. Шаг 2: Чтобы Соединиться с сервером базы данных, скопируйте часть URL после http://, и от локального экземпляра SQL Server, кликаем по Connect на объектном проводнике, и в Connect To Server окно вводит детали базы данных как показано здесь: Это выведет на экран Сервер базы данных Azure SQL экземпляр в объектном проводнике на локальном экземпляре SQL Server. Введите необходимые параметры. SERVICE TIERS позволит выбрать уровень базы данных, таких как BASIC | STANDARD | PREMIUM. Выберите уровень BASIC. Выберите SEERVER как сервер базы данных, его мы создали ранее. Создаваемая база данных будет такая, как показано на изображении: Кликните по кнопке MANAGE внизу страницы, она создаст правило Брандмауэра для того, чтобы установить доступ базы данных: Далее откроется следующая страница, где информация об Администраторе Базы данных обязательна к заполнению: Клик на Log On выведет на экран следующую страницу:  Кликните по “Design”, чтобы составить таблицы, Views и Stored Procedures. Кликаем по “New Table” и создаем список сотрудников, как показано: Введите простые записи в эту таблицу, используя ссылку New Query. Внесение изменений в Web.config файл MVC-приложения Откройте приложения MVC в Visual Studio 2013 и внесите следующие изменения в строку подключения. data source=; initial catalog=Application; user id=; password=; MultipleActiveResultSets=True; App=EntityFramework" "providerName="System.Data.EntityClient" />   (В качестве альтернативы Вы можете запустить Entity Framework в проект, в папку Models для создания строки подключения) Создание Веб-Сайта С Помощью Windows Azure Portal Нажмите кнопку на сайте, чтобы отобразить параметры создания веб-сайта. Нажмите на ссылку CREATE A WEBSITE. Это приведет к появлению следующих вариантов для создания веб-сайта:     Далее Вы можете ввести информацию о URL. Введённый URL уникальный и будет проверен Azure. Если это имя не будет корректное, то URL будет .azurewebsites.net. Центр обработки данных должен быть выбран согласно Вашему выбору. Как только Центр обработки данных выбран, тогда все другие ресурсы, необходимые веб-сайту, например, Базы данных SQL, должны быть размещены в том же Центре обработки данных, так как это поможет в управлении затратами. Как только будет создан Веб-сайт, портал покажет детали:     Чтобы получить детали о веб-сайте, кликните по его имени, ниже будет выведена инструментальная панель на экран, она поможет в управлении и мониторинге веб-сайта.     Чтобы опубликовать наш веб-сайт, созданный с помощью VS tools в Visual Studio, мы должны загрузить профиль публикации. Он может быть загружен и скачан по ссылке, как продемонстрировано на изображении. Публикация веб-сайта в Visual Studio Откройте SPA Application в Visual Studio 2013. Кликните правой кнопкой по названию проекта, чтобы вывести на экран контекстное меню Publish Option.     Эта опция выведет на экран следующее окно:     Данное окно имеет следующие параметры: Microsoft Azure веб-сайтов - поддержка прямого входа на Windows Azure на основе подписки. Import - позволяет импортировать веб-сайт и публиковать профиль, который загружается с портала Azure. Custom - позволяет создать новый профиль, публиковать для развертывания веб-сайта.   Нажмите на кнопку "Import" и будет отображено следующее окно для импорта профиля публикации:     После нажатия "OK", будет отображено следующее окно с деталями веб-развертывания:     Кликните “Next”. Так как мы уже развернули базу данных по Azure SQL, и последовательность подключений к базе данных уже обновлена в web.config файле, следующее окно покажет строку подключения:     Выберите “Далее”, чтобы отобразить список файлов, которые будут опубликованы:     Кликните по кнопке “Publish”, веб-сайт будет опубликован со всеми требуемыми ссылками.  Как только веб-сайт будет успешно опубликован, он может быть просмотрен.     Примечание: в этой статье не использовался CSS и, следовательно, неправильно расположение таблиц. Добавьте свои CSS, чтобы украсить страницу. Таким образом происходит развертывание веб-сайта на Azure. Источник: http://www.dotnetcurry.com/showarticle.aspx?ID=1064
Що повинен знати FrontEnd розробник у 2021 році

Автор: Влад Сверчков

Верстка сайтов и веб-программирование привлекают большое количество новичков в мир IT. Это связано с достаточно низким порогом вхождения. Количество желающих стать фронтендщиком с каждым годом увеличивается, вследствии чего растут и требования к кандидатам. Какие технологии необходимо изучить, чтобы стать FrontEnd разработчиком в 2021 году? Давайте разберемся.   HTML5 & CSS3 HTML5 и CSS3 — это фундаментальные технологии, без знания которых не обойтись ни одному веб-разработчику. С помощью языка гипертекстовой разметки HTML создается разметка (каркас) каждой интернет-страницы. Затем язык стилей CSS преображает сайт и придает ему привлекательный и эффектный внешний вид. Помимо этого, необходимо владеть: кроссбраузерной адаптивной версткой, чтобы уметь создавать сайты под мобильные устройства, планшеты и широкоформатные экраны и для различных браузеров; семантической версткой для повышения качества разметки и улучшения поисковой индексации сайта; валидной версткой, которая предполагает полное соответствие кода разработчика всем стандартам W3C — организации, которая создает и внедряет технологические стандарты для World Wide Web. Уделите особое внимание верстке под мобильные устройства, так как современный веб-потребитель очень много времени проводит в смартфоне. Существует даже специальный подход, при котором сначала верстается веб-сайт под мобильные устройства, а только потом под десктопы — называется Mobile First.  Это общие требования по верстке. Теперь же рассмотрим более детально требования конкретно по языку стилей. Здесь вы должны знать основные свойства CSS3: фоны, градиенты, тени, анимации, трансформации, переходы, а также технологии Flex и Grid, о которых мы еще поговорим. Хорошее владение HTML и CSS уже позволяет заниматься версткой сайтов и зарабатывать деньги. Именно с этих двух базовых технологий начинается путь к профессии FrontEnd разработчика. Качественно изучить HTML и CSS вы сможете при помощи следующих наших курсов: HTML5 & CSS3 Стартовый; HTML5 & CSS3 Базовый; HTML5 & CSS3 Углубленный.   Flex и Grid CSS Технологии верстки надежных адаптивных веб-страниц, которые позволяют легче создавать динамические сайты и удобнее структурировать их содержимое. Лучше всего Flex-верстку в действии показывает интерактивный сайт flexboxfroggy.com, а Grid-верстку - cssgridgarden.com. На нашем ресурсе также есть курсы, которые хорошо объясняют темы Flex и Grid верстки: “Верстка сайта на CSS Grid”, “Верстка сайта на FlexBox CSS”.   Bootstrap 4 Популярная HTML/CSS платформа для разработки адаптивных веб-приложений, которую применяют при создании сайтов и интерфейсов администраторских панелей. Основные преимущества Bootstrap: высокая скорость верстки; кроссбраузерность и кроссплатформенность; наличие хорошей документации, большого сообщества и огромного количества разнообразных обучающих материалов; низкий порог вхождения (необходимо знать лишь основы HTML, CSS, JavaScript и jQuery).   Также, будет полезно знать еще 2 CSS-фреймворка: Foundation и Materialize. Первый является комплексным и профессиональным инструментом, который следует принципу Mobile First. Имеет продвинутый интерфейс и позволяет создавать действительно уникальные, элегантные и легко настраиваемые веб-сайты. Под эгидой Foundation были созданы такие веб-сервисы, как: Facebook, Mozilla, Adobe, Amazon, eBay и многие другие. Materialize исповедует принципы Material Design от компании Google, которые преследуют идеи цифровой унификации для более легкого и комфортного восприятия интерфейса. На сайте material.io можно более детально ознакомиться с идеологией материального дизайна. Фреймворк Materialize незаменим при разработке несложного многостраничного веб-сайта или лендинга за счет богатых возможностей уже готовых и встроенных компонентов и стилей. Также, Materialize предоставляет разные компоненты и варианты поведения, обычно не встречающиеся в других фронтенд-фреймворках (поведение волн, scrollFire, scrollSpy, или специфичные для мобильных устройств выдвижные меню и всплывающие подсказки и т. д.). Foundation подходит разработчикам с опытом, в то время, как Materialize — отличный выбор для начинающих девелоперов, которые хотят как можно плотнее познакомиться с материальным дизайном.   CSS препроцессоры CSS препроцессор — это программа, которая имеет свой собственный синтаксис, но может сгенерировать из него CSS код. Самыми популярными считаются SASS, Stylus, LESS и PostCSS, однако, наибольшее комьюнити имеет именно SASS. Препроцессоры предназначены для: ускорения процесса написания кода; упрощения чтения кода и дальнейшей его поддержки; минимизации рутинной работы при написании кода. Для повышения эффективности написания CSS кода вполне достаточным будет изучение лишь одного препроцессора.   Git & GitHub Git — наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах. Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы. Git & GitHub — очень важные инструменты для любого IT-разработчика, изучением которых следует заняться как можно раньше.  Мы рекомендуем изучать Git на ITVDN при помощи курса “Основы работы с Git”.   Знания о веб-технологиях и сети интернет Чтобы качественно выполнять свою работу, фронтенд разработчик должен разбираться в вебе и понимать принципы его функционирования. Таким образом, необходимо знать: как работает интернет; протоколы HTTP/HTTPS, веб-сокеты; как работают браузеры; что такое DNS и как он работает; что такое доменное имя; что такое хостинг. Также, будет неплохо, если вы попробуете настроить сайт на каком-нибудь бесплатном хостинге, привяжете домен к этому хостингу.   JavaScript   Язык программирования, который используется как при разработке клиентской стороны веб-приложения, так и серверной. При помощи JavaScript (сокращенно — JS) можно писать даже настольные и мобильные приложения, используя определенные программные платформы и библиотеки. Этот язык позволяет: динамически изменять разметку; осуществлять интерактивное взаимодействие с пользователем; анимировать изображения; совершать валидацию форм; управлять мультимедиа и т. д. Другими словами, JavaScript “оживляет” страницу и добавляет ей функциональности. Хорошее владение данным языком программирования является обязательным для каждого FrontEnd разработчика. Сергей Росоха, Software Architect с 11-летним опыта во FrontEnd/JS, отмечает важность изучения алгоритмов и структур данных на JavaScript: “JavaScript давно уже используется не только для разработки динамических интерфейсов пользователя, но и для написания достаточно сложной бизнес-логики. Поэтому знание алгоритмов и структур данных становится критичным для JS-разработчиков. ” (источник) JavaScript использует официальный стандарт ECMAScript (сокращенно - ES), который подразумевает определенное формальное описание синтаксиса, базовых объектов и алгоритмов. На данный момент существует множество различных версий ES. Работодатели чаще всего требуют знание ES6+. Однако, вначале необходимо изучить чистый JavaScript и лишь потом вникать в новые стандарты. Как ни крути, а классику надо знать. Благодаря хорошему владению JS можно быстро разобраться в любой версии ES и затем освоить любой фреймворк или библиотеку. ITVDN предоставляет возможность изучить JavaScript с нуля до продвинутого уровня при помощи курсов: JavaScript Стартовый; JavaScript Углубленный; JavaScript: Расширенные возможности.   Линтеры Инструменты, которые позволяют анализировать качество JavaScript-кода согласно определенному стандарту ES. Они встраиваются в среду разработки и указывают на наличие несоответствий стандарту в коде, если таковые имеются. Данный механизм полезен как для одиночной разработки (для самоконтроля), так и для командной, когда каждый разработчик должен следовать одним и тем же языковым конструкциям, дабы на выходе получить единый, целостный проект. Среди известных линтеров можно выделить ESLint и Prettier.   Тестирование Jest, Cypress и Enzyme — главные инструменты модульного тестирования, которое возлагается на плечи разработчика. Но что это такое? Unit тестирование (оно же — модульное тестирование) — процесс, который заключается в создании тестов для проверки работоспособности отдельных участков написанного программистом кода. Выполняется непосредственно автором кода. Какую пользу приносит Unit тестирование: существенное сокращение багов в коде; упрощение рефакторинга кода; обеспечение качественного отделения интерфейса от реализации; лучшее понимание написанного кода; возможность протестировать мельчайшие участки кода. Все три инструмента учить не надо — достаточно научиться управляться лишь с одним из них.   Паттерны проектирования JavaScript Это лучшие практики, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Знание шаблонов проектирования позволяет писать более чистый, понятный и читаемый код, а также избегать “изобретения велосипеда”. Более того, владение паттернами показывает вашу грамотность, как разработчика, и повышает вашу ценность в глазах работодателя, что поможет выделиться на фоне конкурентов. Чтобы вы могли хорошенько разобраться с темой шаблонов в JavaScript, рекомендуем курс “JavaScript Шаблоны”.   Алгоритмы и структуры данных Понимание алгоритмов и структур данных — обязательные знания для любого программиста. К структурам данных относятся: стеки, очереди, связанные списки, графы и т. д. Изучив их, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью. Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач. Когда говорят об алгоритмах, обычно имеют ввиду алгоритмы сортировки и поиска: сортировки прямым включением, прямым выбором, слиянием, пирамидальная, прямой поиск, бинарный, индексно-последовательный и другие.  Важно разбираться и в нотации Big O, которая описывает сложность каждого алгоритма. Данный механизм помогает определить, при каких условиях выгоднее использовать тот или иной алгоритм. Отметим, что как новичку, вам не надо нырять вглубь этих тем. Будет достаточно теоретического владения, а также умения написать несколько алгоритмов. В разработке сайтов это не сильно нужно, но практически ни одно собеседование не обходит стороной тему шаблонов, алгоритмов и структур данных.    Фреймворки JavaScript Это инструменты, с помощью которых создаются динамические веб/мобильные/десктопные приложения на языке JavaScript. Они ускоряют разработку веб-приложений и предусматривают четко структурированную организацию кода, повышая его качество и чистоту. Самыми популярными фреймворками для фронтенд-разработки можно назвать Vue.js, React и Angular. Каждый из них предназначен для решения своего спектра задач и имеет различную степень сложности: Vue.js - самый легкий (но и с наименьшим сообществом), React - средней сложности, Angular - высокой сложности. Стоит сконцентрироваться на глубоком изучении одного фреймворка, но в то же время очень рекомендуется знать особенности и сферу применения всех вышеперечисленных технологий. Какой фреймворк все же выбрать? Мнения на этот счет расходятся. Инструментарий выбирается индивидуально под проект и трудно предугадать, какие задачи вам нужно будет решать. На данный момент наибольшей популярностью пользуется React, поскольку он сбалансирован как с точки зрения сложности, так и с точки зрения богатства функционала. К тому же, наибольшее количество вакансий припадает именно на этот фреймворк, а значит, что он интересен не только разработчикам, но и бизнесу. Каждый из фреймворков доступен для изучения на платформе ITVDN. По направлению Angular: Angular 11.0 Базовый; Angular Углубленный. По направлению React: React Базовый; React Углубленный. По направлению Vue.js: Vue.js Стартовый; Vue.js Базовый.   Инструменты управления состоянием приложения (State Management) Большие веб-приложения постоянно растут в сложности, а потому хранить данные, которые могут использоваться в разных местах становится все сложнее. Для решения этой проблемы были придуманы отдельные библиотеки, идущие параллельно с фреймворками — они служат для управления глобальным хранилищем данных всего веб-приложения и называются менеджерами состояний. Их применение уже стало стандартом во FrontEnd разработке. Для девелоперов, которые используют Vue.js, это VueX, для React-разработчиков — Redux и MobX, для Angular-девов — RxJS, NgRx.   JavaScript Core (DOM, AJAX, JSON) DOM (Document Object Model) - объектное представление исходного HTML-документа. Ключевым является понятие DOM-дерева, которое описывает структуру страницы. С помощью объектной модели JavaScript получает полную власть над HTML-документом: возможность редактировать, удалять и добавлять элементы и атрибуты HTML, менять CSS код и т. д. AJAX (Asynchronous JavaScript And XML) - это синтез технологий JavaScript и XML, который фактически представляет собой комбинацию: встроенного в браузер XMLHttpRequest-объекта (чтоб запрашивать данные с веб-сервера); JavaScript и HTML DOM (чтобы отображать или использовать данные). AJAX позволяет веб-страницам совершать асинхронное обновление, обмениваясь данными с веб-сервером. Благодаря этой технологии страница не нуждается в перезагрузке - обновляется лишь конкретная ее часть (вспомните ленту новостей в социальных сетях). JSON (JavaScript Object Notation) - это общий формат обмена данными. Позволяет совершать обмен информацией между программными продуктами, написанными на разных языках. Таким образом, клиент, использующий JavaScript, может легко передавать данные на сервер, который реализован с помощью Ruby/Java/PHP. Все три технологии являют особую ценность для каждого веб-разработчика и раскрывают организацию работы интернет-приложения.     БЭМ “Блок, Элемент, Модификатор” — методология, предусматривающая компонентный подход к разработке веб-страниц, в основе которого лежит принцип разделения интерфейса на независимые блоки. Подход БЭМ позволяет повторно использовать существующий код в создании других страниц с сохранением всех его свойств (размеры, шрифт, цвет и т. д.).      Webpack Мощный сборщик модулей, который позволяет скомпилировать в один файл несколько разных модулей. Используется во время работы над объемными проектами. Успешно применяется как во фронтенд-разработке, так и при создании бэкенд-приложений.   Gulp / Grunt Системы сборки, которые автоматизируют рутинные задачи разработчиков: минификацию кода, оптимизацию изображений, тестирование, анализ качества кода и прочее. Подходят при разработке небольших проектов.   TypeScript Кроссплатформенный строго типизированный язык, который является расширением JavaScript. Строгая типизация позволяет уменьшить количество потенциальных ошибок в исходном коде, написанном на TypeScript. Также, этот язык реализует концепции, которые близки объектно-ориентированным языкам, таким как C#, Java и подобным. TypeScript повышает скорость и удобство написания сложных комплексных программ, вследствии чего их становится легче поддерживать, масштабировать и тестировать. В большинстве случаев его необходимо изучать лишь тем, кто ориентирован на работу с фреймворком Angular.    SVG Язык разметки масштабируемой векторной графики. Изображения на странице, сделанные с помощью SVG, корректно отображаются на экранах с различным разрешением, не теряя при этом своего качества, в отличии от традиционных растровых .jpeg, .png и других.   Английский язык Знание английского языка является одним из основных требований к фронтенд-разработчику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного пользования иностранными ресурсами.     Итоги FrontEnd разработчик — достаточно универсальный боец в мире веб-разработки. Он должен уметь и верстать, и создавать логику работы клиентской части, и понимать работу серверной части веб-приложения. Для освоения такого обширного инструментария стоит запастись временем, терпением и упорством. Перечисленные в статье средства разработки сайтов также имеют аналоги, поскольку для решения разных задач подходят разные веб-инструменты. Однако мы выбрали самые популярные и эффективные из них.   Если у вас остались вопросы о последовательности и необходимости изучения тех или иных технологий, ответы вы можете найти в видео ”Как стать FrontEnd разработчиком?”, в котором подробно рассматриваются основные технологии создания клиентских веб-приложений. Для тех, кто хочет стать FrontEnd разработчиком, на ITVDN создана комплексная программа обучения, которая включает в себя 42 видео курса.   Желаем вам успехов в достижении ваших целей! Оставайтесь с ITVDN!
Notification success