Результати пошуку за запитом: принцип открытости*
Новый видео курс – Порождающие паттерны проектирования
Автор: Редакция ITVDN
Друзья, привет!
Мы с хорошими новостями для тех, кто хочет углубить свои знания стека C#/.NET и создавать качественный код, с которым будет легко осуществлять работу и масштабирование – новый видео курс "Порождающие паттерны проектирования" уже на сайте в полном объеме. Курс на украинском языке!
Паттерны проектирования – это стандартизированные и общепринятые способы решения распространенных проблем в коде.
В классическом каталоге «Паттерны объектно-ориентированного проектирования» так называемая "банда четырех" выделяет порождающие, структурные и поведенческие паттерны. Абстрактная Фабрика (Abstract Factory), Фабричный Метод (Factory Method), Строитель (Builder), Прототип (Prototype), Одиночка (Singleton) – порождающие паттерны (Creational patterns), решающие проблемы, связанные с созданием объектов и экземпляров классов. Они обеспечивают гибкость кода и изолируют систему от способа создания, компоновки и передачи объектов.
Данный курс познакомит вас с тем, как использование паттернов избавляет от определенных проблем. Вы узнаете, что применение соответствующих паттернов может значительно улучшить дизайн программного обеспечения, сделать его более гибким и поддерживаемым, а также снизить связанность между компонентами системы.
Автор курса – Владислав Рыбников, Senior .NET Developer в Innovecs, более 6 лет опыта в разработке.
Курс состоит из 8 уроков общей продолжительностью 3 часа 46 минут.
Структура курса:
Начало работы с паттернами.
Порождающие паттерны и Паттерн Одиночка.
Паттерн Прототип.
Использование Singleton и Prototype.
Паттерн Строитель.
Паттерн Фабричный Метод.
Паттерн Абстрактная Фабрика.
Builder и Factory Method.
Что вы узнаете на данном курсе:
Как с помощью порождающих паттернов решаются проблемы создания объектов. Как паттерны обеспечивают гибкость и изолируют систему от способа создания, компоновки и передачи объектов.
Как порождающие паттерны позволяют скрыть сложности создания объектов от кода клиента и как это помогает упростить код клиента и избежать прямых зависимостей от конкретных классов.
Как паттерн Singleton и его версия Multiton гарантируют, что в системе будет только один экземпляр определенного класса или ограниченное количество экземпляров. Как это помогает, когда необходимо обеспечить глобальный доступ к ресурсам или управлять состоянием программы.
Ознакомитесь с альтернативными методами решения проблемы контроля жизни объектов с помощью Dependency Injection и IoC контейнеров.
Узнаете, как Фабричные методы и Абстрактные фабрики позволяют делегировать создание объектов подклассам или фабрикам, что позволяет выбирать нужный тип объекта в зависимости от контекста выполнения.
Познакомитесь с тем, как порождающие паттерны позволяют создавать объекты таким образом, что изменения в ваших классах не влияют на клиентский код. Узнаете, как это снижает зависимость между клиентом и вашими классами и делает систему более гибкой и легкой для поддержки.
Поймете, как именно паттерны Builder и Prototype обеспечивают контроль над жизненным циклом объектов и как это полезно при создании сложных или изменяющихся объектов.
Предварительные требования
Для комфортного прохождения курса необходимы базовые знания C#/.NET и понимание принципов ООП.
Курс “Порождающие паттерны проектирования” будет полезен как тем, кто только начинает изучение паттернов проектирования, так и тем, кто уже имеет определенные знания, однако хотел бы их структурировать и повторить отдельные темы.
Смотрите первый урок в свободном доступе. Курс уже доступен на нашем сайте в полном объеме – к каждому уроку есть практические задания и опорный конспект. Если у вас есть активная подписка, вы можете смотреть его прямо сейчас.
Курс входит в комплексные программы подготовки по специальностям:
C# / .NET разработчик;
ASP.NET Core разработчик;
ASP.NET MVC разработчик.
Новий відео курс “Верстка сайту на CSS Grid”
Автор: Редакція ITVDN
Здравствуйте!
Друзья, хотим вас порадовать новым видео курсом - “Верстка сайта на CSS Grid”, который будет полезен каждому верстальщику, а также заинтересует многих FrontEnd разработчиков.
CSS Grid — это удобный механизм для настройки расположения элементов на странице, использующий принцип сети или таблицы со строками и столбцами. Проще говоря, это техника верстки, которая позволяет удобно располагать элементы на сайте, при этом предоставляя возможность легкой реализации адаптивности под различные разрешения экранов.
Данный курс направлен на изучение использования CSS Grid в процессе создания верстки веб-страниц. Вы познакомитесь с этой технологией, начиная с основ ее использования и базовых правил, и заканчивая рассмотрением более сложных структур. На этом курсе вы шаг за шагом узнаете о всех возможностях правил CSS Grid.
Автор курса — Сластен Максим — FrontEnd Developer, опыт разработки более 6 лет. В записанных видео уроках Максим делится эффективными и удобными техниками верстки при помощи Grid, которые с большим успехом используются в сайтостроении.
Структура курса:
Вступление
Знакомство с базовыми свойствами Grid
Работа с Grid контейнером
Создание Grid template и позиционирование контента
Работа с дочерними элементами grid-row и columns
Ordering элементов
Возможности свойства auto
FlexBox и Grid
Адаптивность Grid и медиа-запросы
Создание проекта
Чему вы научитесь на данном курсе:
Использовать CSS Grid при выполнении верстки ваших веб-страниц
Использовать Figma для построения шаблонов для дальнейшей работы
Создавать свои стили
Понимать особенности и уметь применять Grid columns (столбцы) и Grid rows (строки)
Понимать и применять на практике возможности объединения ячеек и именования линий
Применять функцию repeat
Применять grid-template-areas и разбивать грид на grid-areas
Выравнивать ячейки грида с помощью правил justify-items и align-items
Выравнивать контент в ячейках
Использовать значения max-content и min-content
Упорядочивать элементы и управлять отображением элементов в блоке
Ограничивать области перемещения блоков с абсолютным позиционированием
Использовать свойства flex и grid. Уметь преобразовывать флекс блоки в грид
Понимать автосвойства грид, и уметь контролировать построение грида
Уметь совмещать медиа запросы и правила грид блоков
Использовать медиа запросы для гибкой трансформации grid layout`a
Создавать готовый сверстанный проект и деплоить его на GitHub
Предварительные требования
Курс подойдет тем, кто уже имеет базовые знания HTML и CSS, хочет познакомиться с CSS Grid и изучить основы работы этой технологии для уверенного использования ее на практике.
Смотрите первый урок курса в свободном доступе.
Также, можем вам предложить ознакомиться с бесплатным вебинаром “Адаптивная верстка с FlexBox и Grid” для лучшего понимания популярных техник гибкой верстки — FlexBox и Grid, а также выявления преимуществ каждой из них.
Видео курс “Верстка сайта на CSS Grid” позволяет совершенствовать навыки верстки веб-страниц, обучая востребованному и широко используемому подходу Grid. Если вы желаете не останавливаться на этом и хотите дальше развивать свои навыки верстальщика, вам также пригодятся ссылки на другие курсы по данному направлению:
Bootstrap 4
HTML5 & CSS3 Базовый
HTML5 & CSS3 Углубленный
Практический курс по верстке лендинга
Новий курс "Python Starter"
Автор: Редакція ITVDN
Всем привет!
На ITVDN появился новый видео курс для начинающих Python разработчиков - “Python Starter”.
Python — невероятно лаконичный и универсальный язык программирования. Он просто незаменим в Data Science из-за своего богатейшего инструментария сбора, анализа, обработки и дальнейшей визуализации данных. DevOps инженеры в несколько строк кода могут с его помощью легко автоматизировать рутинные и/или масштабные процессы. BackEnd разработчики используют все возможности языка, которые им предоставляют веб-фреймворки для создания эффективных веб-приложений. Также, на Python можно создавать десктопные и мобильные приложения, игры (особенно хорош в написании скриптов для игр), совершать автоматизацию процессов тестирования ПО.
Основная цель курса – изучение базовых синтаксических конструкций Python. Вы узнаете о различных типах данных и то, как с ними работать; разберете, что такое циклы и условные конструкции, и научитесь обрабатывать ошибки, которые могут возникать в ходе работы ваших приложений. Курс построен по версии Python 3.8.6.
Автор курса — Бондаренко Кирилл — Data Scientist и Python Developer с опытом программирования более 3-х лет. В записанных видео уроках Дмитрий делится эффективными техниками работы с языком Python, которые актуальны и востребованы на сегодняшний день.
Структура курса:
Введение в Python
Примитивные типы данных и переменные
Условные операторы
Циклы
Списки и срезы
Словари
Множества и кортежи
Функции, часть 1
Функции, часть 2
Исключения и их обработка
Чему вы научитесь на данном курсе:
Понимать основные принципы программирования и применение их в Python.
Понимать и уметь применять примитивные типы данных и переменные.
Работать с условными и циклическими конструкциями.
Использовать списки, срезы и словари.
Работать с различными множествами и кортежами.
Понимать смысл и уметь использовать на практике функции.
Отлавливать и обрабатывать возможные исключения в коде программы.
Создавать скрипты, реализующие несложные задачи по обработке данных.
Предварительные требования
Этот курс рассчитан на начинающих без опыта и знаний в программировании. Вы можете начать обучение прямо сейчас — достаточно умения работать с текстовым редактором.
Если вы уже занимаетесь разработкой на другом языке программирования и хотите изучить Python – эти видео материалы вам идеально подойдут: просто бегло просмотрите первые уроки и сконцентрируйте внимание на особенностях работы Python Starter.
Если вы занимаетесь тестированием ПО, “Python Starter” поможет вам разобраться с синтаксисом языка и станет первым шагом в освоении автоматизации тестирования.
Смотрите первый урок курса в свободном доступе.
Также новичков может заинтересовать видео запись вебинара “Как стать Python разработчиком”, спикер Артем Мураховский.
Видео курс “Python Starter” является первой ступенькой на пути к полноценному освоению языка программирования Python. Если вы желаете не останавливаться на стартовом курсе и хотите дальше ринуться в изучение всех нюансов языка, вам также пригодятся ссылки на другие курсы по этому языку:
Python Essential
Python Advanced
Python Practice
Также, мы работаем над созданием нового видео курса — “Python Базовый”, который будет логическим продолжением “Python Starter” и охватит базовые категории данного языка, параллельно раскрывая нововведения версии Python 3.8.6. Следите за новостями ITVDN!
Lviv IT Outsourcing Forum
Автор: Редакція ITVDN
20 апреля компания Lemberg Tech Business School будет проводить уже одиннадцатый Lviv IT Outsourcing Forum! Наряду с Kyiv IT Outsourcing Forum это уже традиционная конференция для владельцев и C-Level менеджмента украинских IT аутсорсинговых компаний.
Планируется, что в этом году в конференции примут участие около 400 CEO, CTO, COO, CFO директоров из Украины, Германии, Израиля и других стран Европы.
Зарегистрироваться - http://bit.ly/2SbvFxT
Промокод на скидку 15 % - LIOF15ITVDN
Темой следующего LIOF будет "Трансформация IT компании. Quo Vadis?».
Вопросы, которые будут обсуждаться:
Куда развивать собственную IT компанию? Каковы перспективы развития в ближайшие 3-5 лет?
Как перейти в новые технологические ниши? Какие ресурсы и инвестиции это потребует? За какое время они могут окупиться?
Что происходит на мировом рынке IT-сервисов?
Возможна жесткая специализация компании по технологии, домейн, рынка и продукта?
Примеры сервисно - продуктовых компаний которые "взлетели" в 2018 году.
Как построить sales процесс в технологической нише в средней компании?
Возможен ли переход в продукты?
Что делать, чтобы перейти в консалтинговую модель IT бизнеса в выбранной вертикали?
Цели конференции:
изучить опыт передовых компаний к изменению себя в высокопроизводительных игроков глобального рынка
проговорить возможные угрозы внутреннего рынка талантов и существующим легально-налоговым принципам работы
открыть новые возможности наиболее продуктивным владельцам компаний
способствовать обмену опытом среди владельцев ИТ сервисных и полупродуктовых компаний
Ключевые докладчики конференции: эксперты-практики, владельцы и директора IT-аутсорсинговых компаний, представители компаний-заказчиков аутсорсинговых услуг, консалтинговые и продуктовые компании.
Если Вы считаете себя одним из них и хотите подать доклад - https://docs.google.com/forms/d/1b_H_NDS1zz7f2gjulE97XqslbyoGg6mOBSOPLRFW88Q/viewform?edit_requested=true
Конференция традиционно проводится 2 дня.
Программа первого дня - это 4 классических потока:
Outsourcing Business. О стратегических вопросах развития компании, стабильность, возможности рынка в Украине, выход на новые рынки, PDS 2.0.
BDMS (Business development, marketing, sales). Об эффективном маркетинге, организации и реализации процессов продаж, управления финансами и поддержания отношений с клиентами.
Evolution. О новейших рынках и путях развития компании.
Организационная зрелость. Для опытных проектных менеджеров и СЕО аутсорсинговых ИТ компаний об управлении проектами, новинки в области и гибкие методологии. Образование, корпоративная культура, рекрутинг, HR.
"Фишка" Lemberg Tech Business School - частные встречи и консалтинг от опытных и прорывных владельцев IT компаний. Получите консультацию, которая стоит тысячи долларов, почти бесплатно!
Также на события будет постоянно действующая биржа контактов. Частные встречи будут доступны участникам с билетом типа "GOLD".
Второй день конференции только для "GOLD" участников, которые хотят практики и реальных примеров!
Именно для них организовывают:
Тур львовскими офисами крупнейших ИТ аутсорсинговх компаний!
Серию воркшопов от докладчиков-практиков, которые поделятся своими наработками!
Организатор: Lemberg Tech Business School: организация с 10-летней историей проведения успешных конференций: Lviv Mobile Development Day, GameDev Conference, Lviv PM Day, Lviv Freelance Forum и BDMSummit. Также в рамках LemBS действуют следующие школы: jCEO School, PMSchool, IMarketing School, SMM School, Startup School.
Как было на предыдущих конференциях:
Фото с осеннего KIOF 2018 - https://www.facebook.com/media/set/?set=a.1889194937836183&type=1&l=800e5408f9
Фото с весеннего KIOF 2018 - https://www.facebook.com/media/set/?set=a.1658085234280489&type=1&l=2e2fda2139
Фото осеннего LIOF 2017 - https://www.facebook.com/media/set/?set=a.1511898538899160&type=1&l=13e27fa0cb
Презентации докладчиков из прошлых конференций можно найти тут - https://www.slideshare.net/lvivstartup.
Видео - на youtube-канале - https://www.youtube.com/user/StartupLviv/videos
Получите новые знания и нетворк для успешного развития вашей компании на Lviv IT Outsourcing Forum 2019.
CG Weekend 2015
Автор: Редакція ITVDN
5-6 декабря в Киеве в Fedoriv Hub состоится международная конференция “CG Weekend 2015”.
Участники мероприятия смогут:
Посетить мастер-классы от ведущих специалистов по компьютерной графике, 2D и 3D анимации, дизайну, постпродакшн,
Трудоустроиться в крупнейшие медиа- и постпродакшн-компании Украины,
принять участие в розыгрыше ценных призов от спонсоров конференции.
Мастер-класс «Все, что вы хотели, но боялись спросить о работе в VFX» от международной компании «Терминал FX» и школы компьютерной графики «TFX Workshop» — одно из самых ожидаемых событий конференции. Компания специализируется на создании сложных эффектов для художественных фильмов и рекламных роликов. В настоящее время «Терминал FX» работает с мировыми лидерами в киноиндустрии, таких как Universal Studios, Warner Brothers, Katalyst фильмов, MTV, 20th Century Fox, WWE Studios, Rebel Films и др. Уникальность же «TFX Workshop» в том, что это первая школа в Украине, где обучают будущих VFX-специалистов на основе реальных проектов. В контексте мастер-класса будет рассмотрен голливудский проект “Сердце дракона 3: Проклятье чародея”, в работе над которым задействована “Терминал FX”.
Всех, кто интересуется процессом управления CGI-производством, ждет захватывающая презентация Сerebro, — программного решения для управления компаниями в любой аудиовизуальной сфере. Основные возможности продукта - быстрое аудиовизуальное комментирование изображений/видео файлов, а также встроенная система передачи и хранения файлов.
Генеральные партнёры “CG Weekend” — компании Autodesk и Softprom by ERC, подготовили подарок всем участникам конференции. Двукратный номинант VES Awards (“Оскар” в мире спецэффектов), Андрей Богданов проведёт эксклюзивный мастер-класс. В контексте мастер-класса будет рассмотрено создание цифровой локации чернобыльской атомной электростанции для фильма "Мотыльки".
Что можно напечатать на 3D-принтере, как технология изменит будущее и многое другое участники смогут узнать на мастер-классе от 3D-мастерской Volume.
Концепт-художник Tory Polska расскажет о принципах работы художника анимации и ответит на вопрос, почему иногда стоит жертвовать, на первый взгляд, отличными дизайн-решениями. Так же участники конференции смогут узнать, что же такое концепция, и почему она задает направление всему производству.
Создать из идеи готовую структурированную 3D-модель - проще простого! На презентации 3D Coat вы сможете узнать, как с помощью мощного программного обеспечения решить целый спектр важных производственных вопросов.
В контексте конференции состоится эксклюзивное мероприятие — Job-сейшн. Ведущие национальные и международные компании презентуют открытые вакансии для специалистов CG, 2D и 3D анимации, VFX. Участники конференции смогут напрямую пообщаться о трудоустройстве с топ-менеджерами и HR-директорами компаний. На данный момент подтвердили своей участие в Job-сейшн: группа компаний StarLightMedia (телеканалы СТБ, ICTV, Новий канал, М1, М2, QTV), ТВ-канал RTI, постпродакшн компания ENERGY POST Production, постпродакшн компания Coffeepost, студия Panama Grand Prix, студия медицинской анимации Nanobotmodels Medical Animation, компания Front Pictures.
Среди участников конференции будут разыграны призы от спонсоров “CG Weekend 2015” — Cerebro Inc. и Droid Sketchbook.
Регистрация и участие в конференции: http://cinemahall.org/cg-weekend-2015/
При регистрации используйте промокод itvdn или cyberbionic и получите скидку -20% на участие в конференции CG Weekend 2015”.
Организаторы конференции: CinemaHall и Fedoriv Hub
Вивчай тестування безпеки веб-застосунків безкоштовно
Автор: Редакція ITVDN
З 21 по 28 лютого 2023 року на ITVDN проходить акція – ви можете пройти навчання за новим курсом “Тестування безпеки веб-застосунків” безкоштовно!
Для чого потрібне тестування безпеки веб-застосунків?
Веб-сервіси дуже тісно вплетені у наше життя. Разом із цим вони потребують надійного захисту, аби персональна інформація залишалася конфіденційною і не потрапляла в руки зловмисникам.
Грамотне тестування веб-застосунків робить великий внесок у їхню безпеку, тому такі знання є критично важливими для:
тестувальників, QA спеціалістів, які проводять моніторинг програмного забезпечення, шукають недосконалості та вразливості у системі.
веб-розробників, котрі одноосібно створюють веб-застосунки і мають забезпечити збереження конфіденційності даних.
Про курс “Тестування безпеки веб-застосунків”
Цей курс поєднує в собі теорію та практику. Ви ознайомитеся з основами тестування безпеки веб-додатків та деякими найпоширенішими вразливостями, притаманними сучасним веб-застосункам, навчитеся використовувати різні спеціалізовані інструменти для виявлення вразливостей та отримаєте знання для усунення та запобігання таким вразливостям у веб-застосунках.
За підсумками курсу ви зможете самостійно та повноцінно виконувати задачі тестувальника безпеки веб-додатків на проєкті.
Курс складається з 11 відео уроків загальною тривалістю 8 годин 30 хвилин.
Про автора
Автор курсу – Андрій Гриценко, Application Security Engineer. Понад 25 років досвіду роботи в IT – в основному в банківському секторі, – у тому числі 11 років досвіду на керівних посадах, 4 роки досвіду в оцінці безпеки застосунків та тестуванні ПЗ (ручному та автоматизованому) з тісною взаємодією з командами розробників.
У записаних відео уроках автор ділиться ефективними техніками тестування безпеки, які актуальні та затребувані на сьогоднішній день.
Програма курсу:
Теорія безпеки веб-застосунків.
Основи XSS.
SQL ін'єкції.
Аутентифікація та контроль доступу.
Небезпечні прямі вказівники на об'єкти.
Неправильна конфігурація безпеки.
CSFR. Підробка міжсайтових запитів.
Тестування вразливостей у компонентах.
Конфіденційність даних. Тестування витоків.
Неперевірені перенаправлення та пересилання.
Стратегія тестування безпеки.
Попередні вимоги
Матеріал розрахований на тих, хто має знання моделі мережевої взаємодії, розуміння та знання будь-якої мови програмування, загальне розуміння JavaScript, знання SQL. Буде плюсом знання Testing (види тестування, принципи тест-дизайну, тестові артефакти, рівні тестування, вимоги).
Чого ви навчитеся на даному курсі:
Розуміти основи безпеки веб-застосунків
Тестувати та виявляти вразливості міжсайтового виконання скриптів (XSS)
Тестувати та виявляти вразливості SQL-ін'єкцій
Тестувати та виявляти вразливості автентифікації та контролю доступу
Тестувати та виявляти вразливості IDOR (прямі вказівники на об'єкти)
Тестувати та виявляти вразливості конфігурацій веб-застосунків
Тестувати та виявляти вразливості підробки міжсайтових запитів (CSRF)
Тестувати та виявляти вразливості у компонентах та бібліотеках веб-застосунків
Тестувати та виявляти вразливості витоку конфіденційних даних
Виявляти фішингові атаки та налаштовувати політики CORS
Планувати та виконувати діяльність щодо тестування безпеки.
Терміни акції
Акція проходить з 21 по 28 лютого 2023 року включно. Доступ до курсу відкривається на 10 днів.
Тиждень великих знижок на курси Java Developer
Автор: Редакція ITVDN
Друзі, з 29 вересня по 6 жовтня на ITVDN великі знижки на пакет відео курсів за напрямком Java – до мінус 50%! Це чудова можливість як для новачків, так і для тих, хто хоче систематизувати та поглибити свої знання.
Java – це популярна об'єктно-орієнтована мова програмування, якою написані програми для більш ніж 3-х мільярдів пристроїв по всій планеті. Більше того, джава постійно займає перші сходинки різноманітних рейтингів мов програмування (індекс TIOBE, PYPL index, Stack Overflow Developer Survey 2022 тощо).
Сфера її застосування практично не має меж: серверна частина веб-додатків, Enterprise-додатки для бізнесу, мобільні програми під Android, Big Data, настільні програми, ПЗ для банку, комп'ютерні ігри і т. д.
Знаючи цю мову, ви зможете реалізувати себе в будь-якому IT-напрямку, який викликає у вас інтерес.
Акційна ціна Java Developer – 52 USD (замість 104.99) – доступ до 29 відео курсів на 7 місяців!
Пакет підписки “Java розробник”
Мова Java – це головний інструмент будь-якого Java розробника. Залежно від напрямку, в якому ви хочете розвиватися, до нього додаються інші технології для розробки: бібліотеки, фреймворки, системи керування базами даних (СУБД) тощо.
Програма навчання на ITVDN складається з таких обов'язкових для вивчення технологій:
Мова програмування Java з нуля до поглибленого рівня.
SOLID принципи в Java – знання правильної, грамотної побудови архітектури додатків.
Unit тестування у Java с JUnit – корисне для написання коду з мінімальною кількістю помилок та коду, що гарно читається.
Основи СУБД MySQL – підійде для роботи з більш простими операціями і менш масштабними БД.
JDBC & Hibernate – для реалізації взаємодії Java-додатків з різними СУБД, а також для вирішення завдань об'єктно-орієнтованого реляційного відображення таблиць баз даних.
Java EE – промислова технологія, котра використовується, в основному, у високопродуктивних проектах, де необхідна надійність, масштабованість та гнучкість.
Web Services – для розроблення SOAP і RESTful веб-сервісів.
Spring (MVC, Data, Security) – один з найпопулярніших та універсальних фреймворків для створення веб-додатків на Java.
Основи роботи з Git – система керування версіями проектів.
Також вам будуть доступні відео курси з альтернативних технологій, які дозволять поглибити знання за Java-напрямком, а також вивчити мову програмування Scala:
Асинхронне програмування Java – для написання швидких багатофункціональних додатків.
Патерни проектування Java – використовуються для створення грамотних оптимізованих, масштабованих додатків.
Jenkins – для автоматизації процесу розробки програмного забезпечення.
Мова програмування Scala з нуля до поглибленого рівня, використовується у розробці Enterprise додатків для великого бізнесу, штучному інтелекті, Machine Learning, Data Science.
Крім доступу до 29 обов'язкових та необов'язкових відео курсів у пакеті підписки – домашні завдання, курсові проекти, тести та сертифікати з вивчених технологій, інтерактивний практикум навичок, онлайн консультація з тренером, диплом зі спеціальності.
Подробиці
Подарункові сертифікати також беруть участь в акції!
Хочете порадувати друга чи близьку людину, яка бажає стати програмістом? Пропонуємо придбати Подарунковий сертифікат за спеціальністю за акційною ціною. Власник сертифікату може активувати його протягом одного року з моменту придбання.
Терміни акції: з 29 вересня по 6 жовтня 2022 року.
Увага! З 24 лютого 2022 року ми не надаємо послуги громадянам росії та білорусі.
Вивчай верстку сайту на FlexBox безкоштовно
Автор: Редакція ITVDN
С 3 по 10 декабря 2020 года на ITVDN проходит акция — вы можете пройти обучение по курсу “Верстка сайта на FlexBox CSS” бесплатно!
Что такое FlexBox?
FlexBox (читается как “флексбокс”) призван упростить позиционирование элементов на странице. Он позволяет забыть о проблемах с неудобной ручной настройкой размеров и положения блоков, которая отняла бы у вас кучу времени так и не дав желаемого результата. С помощью технологии флексбокс вы можете задать желаемое поведение всем элементам страницы, прописав минимум кода. Это особенно удобно при адаптивной и мобильной верстках, когда размеры вашей интернет-странички не фиксированы и меняют свой размер в зависимости от устройства, с которого пользователь зашел на сайт.
Другими словами, это современный инструмент верстки, позволяющий быстро создавать сложные гибкие макеты и функции, упрощая решение задач, для которых ранее использовали чистый CSS.
Сегодня флексбоксы очень популярны в использовании и поддерживаются почти всеми современными браузерами.
О курсе “Верстка сайта на FlexBox CSS”
Автор видео курса — Виталий Мазяр, сертифицированный FrontEnd разработчик и тренер учебного центра CyberBionic Systematics.
Вы познакомитесь с общими понятиями и принципами логики работы технологии Flexbox, научитесь применять основные свойства, рассмотрите способы взаимодействия между элементами, увидите, как можно комбинировать медиа запросы с флексбоксом и как правильно применять эту технологию для создания адаптивных веб-страниц.
Вы узнаете, как работать с готовым макетом в Photoshop-е, а именно: определение точного расстояния между элементами, выгрузка иконок, картинок, шрифтов, а также цветов, в которые окрашены элементы.
В каждом уроке показано поэтапное создание разметки, которая полностью соответствует макету сайта. Будут подробно разобраны способы размещения блоков по горизонтали и вертикали так, чтобы обеспечить их удобное отображение на любых устройствах.
Программа курса:
Знакомство с курсом Верстка сайта на FlexBox CSS
Введение в FlexBox
Верстка трех секций
Смена потока и медиа запросы
Адаптивная верстка сайта
Для кого этот курс
Курс предназначен прежде всего для начинающих верстальщиков и FrontEnd разработчиков, а также для всех, кого интересует такая технология верстки сайтов, как FlexBox. Чтобы освоить флексбоксы, вам необходимо знать языки HTML и CSS на базовом уровне.
Курс входит в комплексные программы обучения по специальностям FrontEnd Developer, Верстальщик сайтов.
Чему вы научитесь на этом курсе:
Выполнять верстку хедера макета и меню в нем.
Создавать простое меню на сайте с использованием флексбокс технологии.
Уметь использовать свойства flex-grow и flex-shrink для создания «резиновой» верстки.
Выполнять планшетную и мобильную версии простой страницы без использования дополнительных правил медиа запросов.
Понимать функции свойств align-items, flex-wrap, order, а также их нюансы и преимущества использования.
Работать с дополнительным потоком у flexbox, размещая элементы в нужной позиции.
Понимать как, зачем и когда нужно сменить направление основного потока.
Размещать много рядовых блоков, вне зависимости от их количества, работая с флексбоксами.
Сроки акции
Акция проходит с 3 по 10 декабря 2020 года включительно. Доступ к курсу открывается на 10 дней.
Що повинен знати C#/.NET розробник
Автор: Влад Сверчков
На сегодняшний день .NET программист может применять свои навыки в различных сферах разработки программных продуктов:
создание веб-приложений и веб-сервисов
создание настольных приложений;
создание облачных сервисов;
создание игр;
создание мобильных приложений.
Когда говорят о .NET разработчиках, имеют в виду программистов, которые пишут на языке С#. Этот язык программирования, как и вся платформа .NET, был создан, развивается и поддерживается компанией Microsoft, которая стабильно уже несколько десятилетий входит в TOP-10 компаний - мировых лидеров рынка информационных технологий. Все продукты компании Microsoft созданы на платформе .NET. Какие же технологии необходимо изучить, чтобы стать .NET программистом?
Поскольку львиная доля .NET-вакансий приходится именно на веб-сегмент, данная статья будет охватывать как фундамент, которым обязаны владеть все разработчики этой платформы, так и основные технологии серверной стороны веб-решений.
Язык программирования C# (“си шарп”)
Любой .NET разработчик не может называться и быть таковым, если он не умеет хорошо программировать на языке C#.
Это универсальный объектно-ориентированный язык, который является мощным инструментом создания программного обеспечения с широкой областью применения. При столь высокой функциональности он является достаточно несложным в изучении и отлично подойдет тем, кто собирается сделать первый шаг навстречу программированию.
Благодаря широкому спектру применения, С# является очень востребованным языком. Различные ресурсы по поиску работы предлагают большое количество вакансий, причем, как на крупные проекты с четко определенным консервативным стеком технологий, так и в компании, которые создают новый программный продукт с применением самых современных инструментов.
Компания Microsoft активно развивает свое детище - .NET направление, потому C# всегда актуален, идет расширение функционала, добавляются новые возможности. Тенденция последних лет - кроссплатформенность, реализуемая в .NET Core. Огромное количество учебных материалов, качественная официальная документация, видео курсы и образовательные вебинары - все это создает максимально комфортные условия для грамотного поэтапного изучения данного языка.
ООП
Объектно-ориентированное программирование - это методология разработки программного обеспечения, в основе которой лежат четыре главных принципа: абстракция, инкапсуляция, наследование и полиморфизм. Поскольку C# является объектно-ориентированным языком, необходимость изучения и полного понимания ООП парадигм обязательно. Однако, есть и приятная новость: все принципы быстро и легко усваиваются во время изучения C#.
Алгоритмы и структуры данных
Понимание алгоритмов и структур данных - обязательные знания для любого программиста.
Изучив структуры данных, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью.
Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач.
Шаблоны проектирования
Паттерны (они же шаблоны) представляют собой архитектурные конструкции, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Всего существует более двух десятков шаблонов, однако знать их все - это обязанность архитектора, а не .NET. разработчика. Обычно в одном проекте используется небольшое количество паттернов, поэтому вам достаточно знать самые популярные из них.
SQL
Structured Query Language - декларативный язык структурированных запросов, который создан для взаимодействия с базами данных. Особенность SQL состоит в том, что он лишь описывает необходимые компоненты и желаемые результаты, не указывая, как именно эти результаты должны быть получены.
Каждый программный продукт подразумевает работу с данными, будь то обыкновенная процедура приема данных от сервера (например, скачивание файлов) или внесение в БД информации о новом зарегистрированном пользователе - умение работать с данными одинаково важно во всех сферах разработки, разве что за исключением FrontEnd.
ASP.NET
Active Server Pages для .NET - платформа, использующая среду выполнения .NET Framework и предоставляющая необходимые службы для создания серверных веб-приложений и веб-сервисов. Является развитием более ранней технологии Microsoft ASP.
ASP.NET базируется на среде выполнения Common Language Runtime (CLR), которая является основой всех приложений Microsoft .NET. Также данная платформа имеет преимущество в скорости по сравнению со скриптовыми технологиями.
ASP.NET MVC является расширением ASP.NET и представляет собой платформу для создания веб-сервисов при помощи паттерна MVC. Данный шаблон предусматривает разделение приложения на три компонента: Модель, Представление, Контроллер, благодаря чему реализуется концепция разделения и закрепления ответственности за каждым компонентом, что упрощает разработку проектов.
ASP.NET Core
Фреймворк от компании Microsoft, который использует среду выполнения .NET Core, предназначен для разработки качественных современных веб-приложений и является продолжением развития платформы ASP.NET. Однако, это не просто обновленная технология. Выход ASP.NET Core фактически обозначил качественное изменение всей платформы. Последняя версия 3.0 была выпущена не так давно - в сентябре 2019 года. Главные особенности ASP.NET Core:
наличие открытого исходного кода на GitHub;
кроссплатформенность;
модульность;
расширяемость;
возможность применения облачных технологий.
Более подробную информацию обо всех нововведениях можно найти на официальном сайте Microsoft.
Таким образом, платформа .NET Core существенно расширила области применения технологии ASP.NET и предоставила разработчикам большое количество возможностей по созданию программного продукта.
Entity Framework 6
Entity Framework - специальная объектно-ориентированная технология на базе фреймворка .NET, которая позволяет разработчикам получать доступ к данным, используя концептуальную объектную модель, а не непосредственно реляционную базу данных. Благодаря такому подходу уменьшается количество кода, необходимое для получения доступа к базе, растет производительность и уменьшается время на поддержку объектов в приложениях, которые работают с данными.
В двух словах, эта технология позволяет программисту абстрагироваться от самой базы данных и работать с данными независимо от типа хранилища.
LINQ
Language Integrated Query (язык интегрированных запросов) - это простая и удобная .NET технология доступа к данным. Особенность данного языка запросов: возможность применения ко всем источникам данных (XML-документы, XML-потоки, наборы данных ADO.NET, базы данных SQL, массивы и коллекции .NET и т. д.) одного и того же самого подхода выборки данных.
Git
Наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии.
Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы.
Не во всех вакансиях можно встретить среди требований владение системой контроля версий, однако, знание Git или ее аналогов даст вам дополнительное преимущество перед остальными кандидатами.
Английский язык
Традиционное требование для каждого разработчика в IT. Знание языка на уровне чтения технической документации и комментирования кода вполне достаточно.
Подведем итоги
В статье были перечислены основные технологии, которыми должен обладать каждый .NET-программист. Поскольку веб-разработка ныне является очень популярной и востребованной, мы также добавили в список .NET средства, которые используются во время создания соответствующих серверных веб-решений. Однако среди всех пунктов наиболее важным является знание языка С# - каждый “дотнетчик” обязан им владеть на высоком уровне.
В свою очередь, перечень можно дополнить такими технологиями, как: TDD (разработка через тестирование), WCF, Unit тестирование, рефакторинг приложений. Их знание не является обязательным, однако, дает дополнительное преимущество перед другими кандидатами в глазах работодателя.
Также вы можете ознакомиться со списком всех необходимых к изучению технологий на странице специальности .NET Developer. Комплексная программа обучения состоит из 49 видео курсов общей продолжительностью 346 часов. Перейдя на страницу, вы найдете много полезной информации - как для новичка, так и для разработчика, желающего углубить и дополнить свои знания.
Более подробно тему требований IT компаний к .NET разработчику рассматривал на вебинаре Виталий Емец - FullStack Developer, Microsoft Certified Specialist. Почему многие выбирают веб-направление и какими технологиями должен владеть кандидат? Ответы на эти и другие вопросы вы найдете в этом видео - “Как стать C#/.NET разработчиком?”.
ITVDN желает Вам достижения Ваших целей и готов быть надежным помощником в вопросах обучения программированию.
Оставайтесь с ITVDN!
Як не треба використовувати патерн "Repository"
Автор: Редакція ITVDN
Обобщенный паттерн Репозиторий
Чтобы избежать недоразумений, давайте для начала проясним, что здесь имеется ввиду под понятием обобщенного репозитория. Видели ли вы когда-нибудь интерфейс вроде этого:
Или может вы видели его брата-близнеца, который имеет иной вариант метода Get:
Вдохновение для написания первого примера пришло из официальной документации Microsoft для ASP.NET MVC 4. Что же касательно второго примера, в Интернете вы можете найти бесконечное число блогов, описывающих именно этот вариант написания репозитория — иногда лишь с небольшими отличиями в виде возвращения IEnumerable<TEntity> вместо IQueryable<TEntity>. И в последнем случае часто еще и с дополнительным методом для генерации запросов. Что-то вроде этого:
Так что плохого в них, вы можете спросить? Почти ничего, если не считать плохое именование методов из примера Microsoft (здесь лучше было бы использовать Find и FindAll вместо Get и GetAll).
Но «почти ничего» - это далеко не то же самое, что «ничего». Первую проблему, которую я здесь вижу, так это нарушение Принципа Сегрегации Интерфейсов (Interface Segregation Principle). Они выражают полный набор CRUD-операций даже для тех сущностей, для которых операции удаления не имеют никакого смысла (к примеру, когда вы деактивируете пользователей вместо удаления их записей из базы данных). Но эта проблема может быть решена при помощи просто разбиения на три интерфейса — для чтения, обновления и удаления записей.
Реальная проблема, которую мы здесь имеем, заключается в некорректном использовании. Оригинальная идея заключается в том, что интерфейсы должны быть использованы в качестве базовых для ваших пользовательских интерфейсов. Что-то вроде этого:
Ваши обработчики событий и сервисы (клиенты пользовательских репозиториев) должны сами определять нужные методы и помещать их в пользовательские интерфейсы.
Это в теории. К сожалению, за свою карьеру мне довольно часто приходилось видеть несколько иную картину:
Кто-то создал рабочую реализацию IGenericRepository. Что хуже в этой реализации, так это то, что эта имплементация почти всегда регистрируется в IoC-контейнере и может быть внедрена в ваши обработчики команд и сервисы точно так же, как и любая другая зависимость.
Код выглядит достаточно красиво и чисто. На самом деле — нет. Почему именно так — скажу немного позже. Теперь же я бы хотел поговорить об одном из решений неправильной интерпретации GenericRepository<T> многих разработчиков. Само решение выглядит примерно так (диалог на code-review):
Джим Сеньор: вы когда-либо слышали, что NHibernate ISession или DbSet из Entity Framework на самом деле репозитории? А то, что вы только что создали — всего лишь небольшая обертка над ISession или DbSet? Де-факто, мы можем отказаться от этого обобщенного репозитория и просто использовать DbSet — результат будет аналогичным. Единственное, в чем IGenericRepository<T> действительно полезен — так это в том, что он скрывает большую часть ненужных для нас методов, которыми обладает DbSet.
Джонни Джуниор: да, в этом действительно есть смысл. Я полагаю, использование обобщенного репозитория в нашем случае было лишним (счастливо возвращаемся к написанию программы…)
Как по мне, что GenericRepository<T>, что DbSet – в большинстве ситуаций их использование лишнее (ну разве что вы пишите наиболее заCRUDженное приложение в своей жизни). Почему? Вот почему:
Единственный способ убедиться, что все LINQ-запросы будут верно преобразованы в SQL — это протестировать их на том же типе базы данных, что находятся в продакшине. Кроме того, в таком случае задача написания интеграционных тестов становится достаточно затруднительной. К примеру, взглянем на код:
Чтобы выполнить эти запросы, должны быть соблюдены два условия. За счет этого интеграционный тест становится менее читабельным. Теперь же давайте представим, что этот метод помещен в метод репозитория. Теперь в тесте нам нужно просто вызвать метод репозитория и проверить результат — просто, не так ли?
Я уверен, вы согласитесь, что LINQ-предикаты внутри сервисов нельзя использовать повторно и они имеют плохую тенденцию повторяться на протяжении всего кода. Даже если программист желает извлечь запрос в свой собственный метод, обычно это будет приватный метод конкретного сервиса. Инкапсуляция запросов внутри методов репозитория приведет к большей читабельности кода и в значительной мере упростить его использование.
LINQ-предикаты не именуются. Как правило, единственный способ узнать, что же, собственно говоря, делает наш запрос (без углубления в его логику), так это имя переменной-результата. К сожалению, искусство информативного именования переменных постигается с опытом, а поскольку в нашей индустрии полно начинающих программистов, мы имеем дело с переменными вроде result, ordersToProcess или просто — orders. Создавая обертку над запросами в виде метода репозитория, это автоматически обязывает разработчика дать этому самому методу конкретное имя. Даже если это имя не из лучших, в последствии провести небольшой рефакторинг не составит труда!
Порой, по причине скорости, мы вынуждены доставать данные из базы посредством чистого SQL. Подумайте, вы действительно хотите в своей бизнес-логике работать с такими низкоуровневыми сущностями, как DbConnection или SqlException? Подобный код лучше прятать за методами репозиториями.
Никаких обобщений — только конкретные репозитории
Перед тем как начать разработку репозитория, необходимо определить его интерфейс. Интерфейс должен содержать только те методы, которые нужны конечным клиентам. Другими словами, если никому не нужно удалять сущности данного типа, нет никакого смысла в написании функционала для их удаления.
Если вы боитесь закончить среди разных имен для базовых CRUD-операций — таких как Delete в одном репозитории и Remove в другом — вы можете создать полезные интерфейсы типа ICanDeleteEntity<TEntity>, ICanUpdateEntity<TEntity> и так далее. В таком случае конкретный репозиторий будет реализовывать только действительно нужные из них.
Ни один из методов репозитория не должен возвращать IQueryable<T>. Также убедитесь, что репозиторий не возвращает IQueryable<T>, скрытые за IEnumerable<T>. Всегда вызывайте ToList() или ToArray() дабы «материализовать» значения, придав им более конкретный тип данных.
Как только заходит речь о реализации репозитория, вы можете наследовать абстрактный класс GenericRepository<TEntity>. Если угодно — можно также использовать напрямую ISession и DbSet. Не важно, какой подход вы выбираете. Помните: любые «лишние» в данном контексте методы — по типу Delete из базового класса — будут скрыты за интерфейсом репозитория.
Также не забывайте, что ваш репозиторий не несет ответственности за транзакции базы данных. Лучше всего эта концепция реализуется при помощи паттерна Unit Of Work. Этот паттерн уже реализован в рамках ISession и DatabaseContext. Все, что нам нужно — это хороший интерфейс над ними:
Для большинства веб-приложений чтобы начать транзакцию через IUnitOfWork в виде начала запроса и Commit / Rollback в конце запроса — этого функционала вполне достаточно. Так же подобное может быть достигнуто при помощи фильтров действий или декораторов обработчиков / сервисов.
Пример репозитория, созданного при соблюдении всех приведенных рекомендаций:
Сейчас все стало ясно, но давайте еще раз проясним. Каждый метод наших репозиториев должен быть учтен по крайней мере одним интеграционным тестом, который должен использовать тот же тип базы данных, что и продакшн. Всегда используйте интеграционные тесты для проверки своих репозиториев.
Немного о недостатках
Не существует роз без шипов, и представленный выше подход — не исключение. Некоторые из них можно решить, используя отличимую от трехуровневой архитектуру. Наиболее часто с конкретными репозиториями возникали следующие проблемы:
За длительное время репозитории могут набрать большое количество Find-методов. Достаточно часто эти методы похожи друг на друга. Есть два способа это предотвратить. Один из них — это группировка нескольких Find-методов в один общий. Этот метод должен принимать object, что представляет собой критерий запроса. Пример:
Чтобы создать запрос с критерием запроса, мы строим набор критериев шаг за шагом:
Зачастую слишком большие репозитории обрастают целой плеядой различных сервисов. Вы можете избежать этого при помощи чего-то, что я называю CQRS-light. Отличием от полной версии является использование тех же таблиц как для чтения, так и для записи. Используя эту технологию, мы можем использовать ту же самую ORM как для чтения, так и для записи. Обращаться же к CQRS только в тех случаях, когда приложение в этом действительно нуждается (например, при обработке 80+ колонок, с использованием 20+ join). Диаграмма ниже представляет типичную архитектуру CQRS-приложения:
Ключевые принципы CQRS-light следующие:
Деление всех действий пользователя на две категории. Первая категория — действия, изменяющие систему. К примеру, оформление заказа в интернет-магазине. Вторая категория — действия, систему не трогающие. К примеру, просмотр списка товаров. Первая категория пишет — это команды, другая — читает, это запросы.
Обработчики запросов для доступа к данным могут использовать только репозитории. Доступ к данным может осуществяться посредством любой технологии. Обычная конфигурация включает в себя ORM для чтения-записи, ORM для записи и микро-ORM для чтения (вроде Dapper) или же ORM для записи и чистый SQL для чтения.
Обработчики команд для доступа и изменения данных могут использовать только репозитории. Для получения данных из базы обработчики команд не должны использовать обработчики запросов. Если обработчик команд должен выполнить комплексный запрос и этот запрос должен получить ответ от обработчика запроса, вы должны продублировать логику этого обработчика запроса и поместить его как в обработчик запроса, так и в метод репозитория (операции чтения и записи должны быть разделены).
Обработчики запросов тестируются только в интеграционных тестах. Для обработчиков команд существуют юнит и — опционально — также интеграционные тесты.
CQRS даже в своей легкой форме — сама по себе объемная тема и заслуживает отдельного блога.
Теперь же давайте вернемся к теме недостатков паттерна конкретного репозитория. Другой недостаток, о котором я бы хотел упомянуть, заключается в нежелательной миграции бизнес-логики в определение запросов. К примеру, даже такой простой запрос:
содержит часть бизнес-логики, описывающей необходимые параметры, дабы заказ стал активным. Как правило, ORM не позволяет нам инкапсулировать такие части логики в отдельные свойства, как IsActive.
Что нам здесь нужно, так это паттерн спецификации. Теперь наш запрос в форме паттерна спецификации будет выглядеть так:
Автор перевода: Евгений Лукашук
Источник