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

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

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

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

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

Результати пошуку за запитом: mvc4 5
Першоквітневі змагання з програмування на C#, Java, C++, Pascal

Автор: Євген Волосатов

<p>Впервые на ITVDN! Соревнование для начинающих программистов в режиме реального времени. За полтора-два часа вам нужно будет решить наилучшим образом 6 задач на том языке программирования, который вам ближе.</p> <p>Результаты каждого будут видны сразу. Тот, кто успешно выполнит все 6 заданий, получит в подарок 1 любой видео курс ITVDN. А тот, кто решит все задачи быстрее всех &ndash; подписку на месяц с доступом ко всем курсам, представленным в <a href="https://itvdn.com/ru/catalog">Каталоге</a>.</p> <p>Также во время вебинара каждая задача будет разобрана ведущим.&nbsp; Будет весело! Участвуйте в соревнованиях и приводите болельщиков!</p> <p>&nbsp;</p> <p><strong>План вебинара:</strong></p> <p>&nbsp;&nbsp;&nbsp; 0. Перекличка и разминка участников соревнования.</p> <p>&nbsp;&nbsp;&nbsp; 1. for (i = 1; i &lt;= 6; i ++) {</p> <p>&nbsp;&nbsp;&nbsp; 2. Формулировка условия i-ой задачи.</p> <p>&nbsp;&nbsp;&nbsp; 3. Время для самостоятельного решения.</p> <p>&nbsp;&nbsp;&nbsp; 4. Разбор алгоритма i-ой задачи &laquo;у доски&raquo;.</p> <p>&nbsp;&nbsp;&nbsp; 5. Просмотр и разбор присланных программ. }</p> <p>&nbsp;&nbsp;&nbsp; 6. Подведение итогов и награждение победителей.</p> <p>&nbsp;</p> <p><strong>Предварительные требования:</strong></p> <p>&nbsp; Базовые знания алгоритмов.</p> <p>&nbsp; Базовые знания одного из языков программирования: C#, Java, C++, Pascal.</p> <p>&nbsp;</p> <p><strong>Целевая аудитория:</strong></p> <p>&nbsp;&nbsp;&nbsp; Программисты, Инженеры, IT-студенты, школьники</p>
Огляд сучасної розробки під .NET

Автор: Владислав Омельчук

<p>На двух онлайн встречах, которые состоятся 12 и 13 сентября, мы рассмотрим современные технологии и подходы при создании приложений на платформах .NET , .NET Core, мы разберем, что необходимо знать разработчику в современных условиях, создадим небольшое ASP.NET Core приложение, подключим к нему источники данных, разберем и реализуем систему логгирования, разберем и используем систему контроля версий, создадим набор контейнеров и опубликуем наше приложение на Azure cloud в кластер Kubernetes.</p> <p><strong>Программа: </strong></p> <p>1) Обзор .Net Framework</p> <ul> <li>.Net 4.6.2</li> <li>ASP.NET (Web forms, MVC, OWIN)</li> <li>Desktop applications (Win Forms, WPF, UWP)</li> <li>.NET Core</li> <li>ASP.NET Core</li> </ul> <p>2) Работа с хранилищами данных</p> <ul> <li>SQL (SQL server)</li> <li>Data access (EF 6 + Core, Dapper, NHibernate, ADO.Net, Microsoft.EnterpiseLibrary)</li> <li>NoSQL (Redis, MongoDb, CosmosDb, Dynamodb)</li> </ul> <p>3)&nbsp;Логгирование и мониторинг</p> <ul> <li>Serilog , log4net</li> <li>ELK (elastic search + kibana)</li> <li>Zabbix</li> </ul> <p>4) Системы контроля версий</p> <ul> <li>TFS (VSTS)</li> <li>SVN</li> <li>GIT</li> </ul> <p>5) Системы обмена сообщениями</p> <ul> <li>Service bus</li> <li>RabbitMQ</li> <li>Kafka</li> </ul> <p>6) Cloud development</p> <ul> <li>Azure</li> <li>AWS</li> <li>Google cloud</li> </ul> <p>7) Контейнеризация приложений</p> <ul> <li>Docker</li> <li>Docker Swarm</li> <li>Kubernetes</li> </ul> <p>Технологии: .NET , .NET Core, SQL Server, Entity framework, Dapper, Redis, MongoDB, Git, Service Bus, Azure, Docker, Kubernetes.</p> <p>Для участия в вебинаре обязательна регистрация. На email, который Вы укажете в регистрационной форме, 12 сентября будет отправлено письмо-приглашение со ссылкой на трансляцию.</p>
Співбесіда з Android. 250+ питань для Junior, Middle, Senior

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

Junior 1.1 Базовые вопросы 1.2 Алгоритмы, структуры данных, хранение данных 1.3 Работа с сетью 1.4 Многопоточность, Java Core, RxJava 1.5 Android SDK, Kotlin 1.6 Другое 1.7 Практические задачи   Middle 2.1 Базовые вопросы 2.2 Алгоритмы, структуры данных, хранение данных 2.3 Работа с сетью 2.4 Многопоточность, Java Core 2.5 Android SDK 2.6 Kotlin 2.7 RxJava 2.8 Тестирование 2.9 Другое   Senior 3.1 Базовые вопросы, архитектура 3.2 Многопоточность 3.3. Java Core, Android SDK, Kotlin Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 3 ноября 2021 года. Оригинальная версия на украинском языке доступна по ссылке. Если вы готовитесь к собеседованию по Android — или проходить, или проводить — возможно, этот перечень вопросов пригодится вам. Редакция DOU поинтересовалась у разработчиков, проводящих технические интервью в компании в Украине, о чем они спрашивают кандидатов. Это уже десятая статья из рубрики «100+ технических вопросов»; ознакомиться с вопросами для других языков программирования на DOU.ua на украинском языке вы сможете, перейдя по ссылке.   Junior   Базовые вопросы 1. Назовите основные принципы ООП. 2. Что такое класс? Что такое интерфейс? Какая между ними разница? 3. Назовите базовые типы данных. 4. В чем отличие примитивных типов от объектов? 5. Какая разница между абстрактным классом и интерфейсом? 6. Что такое паттерны проектирования? Какие паттерны вы знаете? 7. Чем отличается Java от Kotlin?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Kotlin, а также статье Kotlin vs Java: что лучше для Android-разработки? и вебинаре Структуры данных в Java и Kotlin.   Алгоритмы 8. Что такое алгоритм и как выбрать правильный? 9. Что такое сложность алгоритма? Как и с помощью чего её можно вычислить? 10. Что такое нотация big-O? 11. Что такое рекурсия? 12. Какие алгоритмы сортировки вы знаете?   Структуры данных 13. Расскажите о таких структурах данных, как List, Set, Map? 14. Какая разница между ArrayList и LinkedList?   Ответы на эти вопросы вы найдёте в вебинаре Структуры данных в Java и Kotlin.   Хранение данных 15. Как можно хранить данные в Android? 16. Когда следует использовать SharedPreferences? 17. Из каких компонентов состоит библиотека Room? 18. Что такое @PrimaryKey, @Ignore, @Embedded, @TypeConverters в Room? 19. Для чего нужна миграция в базах данных?   Ответы на некоторые из этих вопросов вы найдете в видео курсе SQLite. Базы данных в Android приложениях (урок 2, урок 3).   Работа с сетью 20. Что такое JSON, XML? 21. Какие варианты реализации работы с сервером? 22. Что такое REST?   Ответы на некоторые из этих вопросов вы найдете в видео курсах Разработка приложений под Android. Базовый курс (урок 2), Android Углубленный (урок 9).   Многопоточность 23. Что такое процесс? 24. Что такое поток? 25. Для чего используют ключевое слово synchronized? 26. Зачем синхронизировать потоки? 27. Какая разница между синхронным и асинхронным исполнением? 28. Как мы можем создать поток в Java? 29. Что такое deadlock? 30. Какие варианты реализации многопоточности есть в Android? 31. Что такое main thread? Какие операции нужно выполнять на main thread, а какие нельзя делать?   Ответы на некоторые из этих вопросов вы найдете в видео курсе Android Углубленный (урок 5).   Java Core 32. Что такое Exceptions? Зачем они нужны? 33. Зачем используют ключевые слова final, finally и finalize? 34. Что такое абстрактный класс? Что такое интерфейс? 35. Что такое анонимный класс? Использовали ли на практике? Для чего? 36. Что такое статический класс (static class)? 37. Что такое enum? Зачем его используют? 38. Можем ли мы сделать конструктор приватным? 39. Какая разница между ключевыми словами throw и throws? 40. Какая разница между Error и Exception? 41. Какая разница между checked и unchecked exception? 42. Что такое Object class и какие методы он имеет? 43. Какие существуют модификаторы доступа для классов? Какая разница между ними? 44. Что такое итератор? 45. Как безопасно удалить элемент из коллекции? 46. Зачем нам переопределять equals() и когда не нужно это делать? 47. Какой должен выполняться контракт при переопределении equals()?   Ответы на некоторые из этих вопросов вы найдете в вебинаре Что такое Java EE и Java Core и видео курсе Java Базовый (урок 2, урок 4, урок 6, урок 7, урок 8, урок 9).   RxJava 48. В чем разница между map() и flatMap() в RxJava? 49. Когда используете observeOn(), а когда subscribeOn()? 50. Как можно обработать ошибки в RxJava? 51. Какие schedulers знаете в RxJava? Назовите их отличия. 52. Что такое Disposable? Зачем его используют? 53. В чем разница между Hot и Cold Observables? Назовите примеры в RxJava.   Ответы на некоторые из этих вопросов вы найдете в видео курсе Создание пользовательских элементов управления в Android (урок 1).   Android SDK 54. Какие базовые Android-компоненты можете назвать? 55. Что такое ContentProvider? 56. Какие типы Service знаете? 57. Что такое BroadcastReceiver и какие типы существуют? 58. Для чего используют механизм фрагментов? 59. Опишите жизненный цикл Activity. 60. Опишите жизненный цикл Fragment. 61. Есть ли у Fragment контекст? Если да, то как его получить? 62. Чем отличается Fragment от Activity? Зачем выдумали Fragment? 63. Что такое изменение конфигурации? Что происходит с приложением на Android при этом? 64. Что такое Intent? Что такое explicit/implicit Intent? 65. Что такое SharedPreferences? 66. Что такое ANR? Как избегать таких ситуаций? 67. Что такое DataBinding? 68. Что такое LiveData? Какие виды знаете? 69. Как создать ViewModel? Почему создавать ViewModel нужно именно так? 70. Что такое Context и зачем он? 71. Что такое AndroidManifest.xml? Зачем его используют? Что мы можем там декларировать? 72. Перечислите layout, с которыми работали? Когда и какой нужно использовать? 73. Расскажите, что нужно реализовать, чтобы отобразить список строк в RecyclerView. 74. Объясните паттерн ViewHolder. Для чего он применяется? 75. Что такое DiffUtil? 76. Расскажите о ConstraintLayout. 77. Для чего используют Group, Guideline, Barriers, Chains в ConstraintLayout? 78. У вас есть Activity с двумя Fragment'ами, у одного есть кнопка, у другого TextView. При нажатии кнопки изменяется TextView. Как вы реализуете это? 79. Что такое WorkManager? Когда используем?   Ответы на некоторые из этих вопросов вы найдете в видео курсах Разработка приложений под Android. Базовый курс (урок 2, урок 4, урок 5, урок 7), Android Углубленный (урок 3, урок 6, урок 9), Android User Interface (урок 3), Создание пользовательских элементов управления в Android (урок 9).   Kotlin 80. Как вы понимаете термин Null safety? 81. Что такое nullable и non-nullable типы? Какая разница между val и var? 82. Как задекларировать getter/setter для property? 83. Почему классы Kotlin по умолчанию final? 84. Что такое sealed class? 85. Что такое data classes? 86. Какая разница между sealed class и enum? 87. Почему у Kotlin нет checked exceptions? 88. Что такое Extensions? Использовали ли вы их на практике? 89. Что такое перегрузка операторов (operator overloading)? Зачем нужен этот механизм? 90. Как работают примитивы в Kotlin? 91. Расскажите об объекте Unit в Kotlin. 92. Расскажите об объекте Any в Kotlin. 93. Как создать Singleton объект в Kotlin? 94. Что такое companion object? 95. Чем отличается const val от val? 96. Какие знаете модификаторы доступа? 97. Что означает модификатор lateinit? 98. Coroutines – что это за механизм? Использовали ли его на практике? 99. Зачем нужны Coroutines? Чем они лучше обычных тредов? 100. Что такое suspend-функция? 101. Что такое Job? 102. Что такое Dispatcher? Какие есть виды? 102. Что такое Scope? 103. Как писать Java compatible API в Kotlin?   Ответы на некоторые из этих вопросов вы найдете в видео курсе Kotlin.   Другое 104. Расскажите, что такое memory leak. Как избежать? 105. Как бы вы искали memory leak? 106. Расскажите о Dependency injection. Какие варианты реализации в Android? 107. Для чего нужна система контроля версий? 108. Что такое Git? 109. Для чего используем .gitignore-файл? 110. Расскажите о командах push, pull, fetch в Git? 111. Что такое merge и rebase? Какая разница? 112. Что такое CI? Зачем используем?   Ответы на некоторые из этих вопросов вы найдете в видео курсах Dependency Injection в Android-разработке, Основы работы с Git.   Практические задачи 113. Разверните Linked List. Отпишите о зацикленности в LinkedList или ее отсутствии. 114. Напишите функцию, которая вернет n первых неотъемлемых чисел: un nMin(items: List<String>, n: Int): List<Int> { //return n minimal non negative items } Пример вызова функции: nMin(listOf("1","-11","-12","22","100","-30",”2”, “5”), 3) Ожидаемый результат: [1, 22, 100] 115. Что будет выведено в консоль? Объясните результат. var globalId = 0 data class User(val name: String) { val id = globalId++ } fun main(args: Array<String>) { val user1 = User("User") val user2 = User("User") println(user1) println(user2) println(user1 == user2) } 116. Исправьте все ошибки в коде: class Animal class Dog: Animal {} 117. Для коллекции items: val items = listOf(1, -2 ,-3 , 4, 5, 0, 2, -2) Подсчитайте количество отрицательных элементов. Вычислите среднее арифметическое значение отрицательных и неотрицательных чисел.   Middle   Базовые вопросы 1. Нужно ли придерживаться SOLID-принципов? Почему да/нет? 2. Какие паттерны использовали на практике? Приведите примеры. 3. Опишите паттерны MVP и MVVM. Какие из них использовали? Какой предпочитаете? Знаете ли/использовали другие паттерны? 4. Почему слой Model должен быть отделен от View или Presenter? 5. Что такое инверсия зависимости (dependency inversion)? 6. Объясните пример паттерна Singleton. Где его использовать в Android? 7. Объясните пример паттерна Observer. Где его использовать в Android? 8. Объясните пример паттерна Builder. Где его использовать в Android? 9. Как вы понимаете термин «архитектура приложения»? Зачем это вообще нужно? Почему инженеры пытаются усложнить процесс разработки и тратят время на проектирование архитектуры? Может, лучше сэкономить ресурсы и пойти по простому пути — держать весь код в одном файле? 10. Что такое иммутабельный объект? Для чего его используют? Как сделать иммутабельный объект в Java? 11. MVP vs MVVM – в чем основное отличие?   Ответы на некоторые из этих вопросов вы найдете в видео курсах Архитектура Android приложений (урок 1-5), Создание пользовательских элементов управления в Android (урок 4), SOLID принципы в Java.   Алгоритмы 12. Есть много алгоритмов сортировки. Возможно ли выбрать один самый быстрый и использовать его повсюду? Почему да/нет? 13. В чем сложность поиска произвольного элемента в ArrayList? В LinkedList? 14. Какие алгоритмы используют в Android/Java коллекциях под капотом?   Структуры данных 15. HashMap. Используете ли вы на практике? Если да, то зачем? Как она работает изнутри? 16. Какая разница между HashMap и LinkedHashMap? 17. Что такое бинарное дерево?   Сохранение данных 18. Как бы вы реализовали сохранение зашифрованных данных в SharedPreferences? Базу данных? 19. Как реализовать миграцию таблицы, где нужно из non-nullable поля сделать nullable поле?   Работа с сетью 20. Расскажите, какие методы можно применить в REST API? Зачем какой нужен? 21. Что можно использовать, кроме REST API, для работы с сервером?   Многопоточность 22. Что такое Thread Pool? Каковы его особенности? 23. Что такое Executor/ExecutorService? Какую задачу выполняют и как использовать? 24. Какие есть виды Executor? 25. Какая разница между методами start() и run() в классе Thread? 26. На что указывает ключевое слово synchronized? Какова его основная функция? 27. Модификатор volatile. Приходилось ли использовать? Зачем нужен? 28. Знаете ли вы о таком понятии, как «эффект гонки» (race condition)? Как это предотвратить? Какие механизмы в Java для предотвращения этого? 29. Что такое атомарная операция? 30. Как остановить поток в Java? Можно ли продолжить выполнение потока после его остановки? 31. Знаете ли вы о потокобезопасных коллекциях в Java/Android? Приходилось ли их использовать? 32. Какие стратегии можно применить, чтобы добиться потокобезопасности? 33. Какие варианты реализации потокобезопасности кода есть у Kotlin? 34. Как сделать переменную потокобезопасной? 35. Что такое Mutex и Monitor? Кто может выступать в роли монитора? 36. Что такое атомарные операции? 37. Почему инкрементация и операции с long не являются атомарными? 38. Какие классы атомарных переменных? 39. Что такое устаревшие данные (stale data)? Как избежать этого эффекта?   Ответы на некоторые из этих вопросов вы найдете в видео курсе Android Углубленный (урок 5).   Java Core 40. Механизм Generics. Какую проблему решает? 41. Что такое soft reference, weak reference? 42. Что такое сериализация объекта? Какую проблему она решает? Какие стандартные механизмы у Java? 43. Какой контракт существует между equals() и hashCode()? 44. По вашему мнению, почему строки в Java сделаны иммутабельными? 45. Можем ли мы задекларировать пустой интерфейс? Если да, то зачем? 46. ​​Что такое String pool? Зачем он нужен? 47. Что такое StringBuilder, какую проблему он решает? 48. Что такое Stack в JVM и какие данные там хранятся? 49. Что такое Heap в JVM и какие данные там хранятся? 50. Что такое garbage collector, как он вообще работает? Каковы реализации GC?   Ответы на некоторые из этих вопросов вы найдете в вебинаре Что такое Java EE и Java Core и видео курсе Java Углубленный (урок 5).   Android SDK 51. Назовите основные изменения в версиях Android. 52. Как реализовать IPC в системе Android? 53. Как реализовать отложенную задачу? 54. Что такое Doze Mode? 55. Что такое App Standby mode? 56. Что такое AIDL и зачем он нужен? Какие типы данных поддерживаются? 57. Что такое Multidex? 58. Что такое KeyStore API? 59. Что такое PendingIntent? 60. Как безопасно хранить user-sensitive данные? 61. Какие методы защиты приложения? 62. Что такое SSL/TLS Pinning? Как его реализовать в Android? 63. Что такое ViewBinding? 64. Для чего нужны методы onSaveInstanceState/onRestoreInstanceState? Что такое permissions? Как запросить permissions? 65. Что такое Intent? Что такое Explicit/Implicit Intent? Что такое Sticky Intent, Pending Intent? 66. Какие типы данных мы можем положить в Bundle? 67. В чем разница между Serializable и Parcelable? 68. Если фрагмент для работы нуждается во входных данных, каким образом будет правильно передать их фрагменту? 69. Что такое ViewModel? Какие ее свойства? 70. Объясните работу ViewModel с Jetpack. Что такое ViewModelProviders, ViewModelProvider.Factory? 71. Что такое LiveData? Зачем её используете? 72. Какая связь между LiveData и LifecycleOwner? 73. Приведите пример LifecycleOwner? 74. Что такое Looper? 75. Использовали ли HaMeR фреймворк (Handler/Message/Runnable)? Для чего он? 76. Какую информацию содержит контекст? Какие типы контекста знаете? 77. Для чего используют Content Provider? 78. Что такое Data Binding? Что такое View? 79. Преимущества Fragments против View? 80. Как работает Content Provider? 81. Какая разница между Single Activity и Multiple Activity? 82. Какие виды Context знаете? Где какой использовать? 83. Объясните работу BroadcastReciever и его реализацию. 84. Зачем LocalBroadcastManager? 85. Для чего нужен MotionLayout? 86. Опишите, как реализовать анимацию в MotionLayout. 87. Как можно обнаружить проблемы в скорости UI и устранить их? 88. Расскажите о вариантах реализации custom view. 89. Что делают методы onMeasure, onLayout, onDraw во View? 90. Как воплотить анимацию при переходе между Activity-фрагментами? 91. Когда необходимо использовать foreground service вместо service? 92. Когда использовать workmanager, а когда service? 93. Есть ли у workmanager лимиты для выполнения работы? 94. Расскажите о Jetpack Compose. Зачем придумали основной принцип работы, как устроено? 95. Что такое WakeLock? 96. Что такое AlarmManager? Какие особенности работы?   Ответы на некоторые из этих вопросов вы найдете в видео курсах Разработка приложений под Android. Базовый курс (урок 4, урок 7), Android Углубленный (урок 6, урок 8), Создание пользовательских элементов управления в Android (урок 9).   Kotlin 97. Чем отличается работа с Exceptions в Kotlin и Java? 98. Что такое платформенные типы? 99. Что такое нелокальный return? 100. Для чего нужны reified generics? 101. Какая разница между Unit, Any, Nothing? 102. Расскажите о функциях высшего порядка, лямбда, функциях, которые могут использоваться в качестве аргумента. 103. Что такое inline-модификатор? Noinline? 104. Какая разница между crossinline и noinline? 105. Какие типы конструкторов вы знаете? 106. Что такое Flow? Что такое SharedFlow? 107. В чем разница методов run, let, apply, also, with, use? 108. Что произойдет, если в классе переопределить метод hashCode следующим образом: override fun hashCode(): Int = Random.nextInt()? А если так: override fun hashCode(): Int = 1? 109. Расскажите о Flow. В чем разница между Hot и Cold Flow? 110. Что такое деструктурирующее объявление? Что нужно сделать, чтобы иметь возможность использовать его для своего класса? Какие проблемы могут возникнуть с таким объявлением? 111. Для чего использовать data class? Почему нельзя работать с обычным классом? 112. Приведите пример делегатов в Kotlin? 113. Как реализовать кастомный делегат? 114. Объясните, как работает suspen-функция? Что такое continuation? 115. Как обрабатывать ошибки в Coroutines? 116. Что такое SupervisorJob и когда применяется? 117. Как остановить/отменить Coroutines?   Ответы на некоторые из этих вопросов вы найдете в видео курсе Kotlin.   RxJava 118. В чем разница между flatMap(), concatMap(), switchMap()? 119. Какие Subjects вы знаете в RxJava, чем отличаются от Observable? 120. Чем отличается Observable от Flowable? 121. Что такое backpreassure? Какие стратегии есть для решения? 122. Что такое Single, Maybe, Completable? 123. Какие варианты обработки ошибок есть, кроме onError?   Ответы на некоторые из этих вопросов вы найдете в видео курсе Создание пользовательских элементов управления в Android (урок 1).   Тестирование 124. На какие группы можно поделить тесты (Unit (JUnit) и Instrumental или UI Tests (espresso))? 125. Чем отличаются Unit и UI тесты (контекст)? 126. Расскажите, какие библиотеки использовали для mock? 127. Как тестировать DB? 128. Как “замокать” network layer в инструментальных тестах?   Ответы на некоторые из этих вопросов вы найдете в видео курсе Unit тестирование для Android разработчиков.   Другое 129. Расскажите, с какими DI-фреймворками работали. 130. Расскажите о Dagger Hilt.   Senior   Базовые вопросы 1. Расскажите о функциях высшего порядка. Когда они нужны? 2. Опишите, как происходит процесс деплоя Android-приложения. 3. Расскажите о многомодульной архитектуре. Зачем используют и когда ее нет смысла использовать? 4. Вам нужно написать простое приложение для работы с рецептами (несложное, имеет экран списка, поиска и детали). Оно должно работать с определенным API для получения/модификации вашего списка рецептов и хранить его локально в БД для отображения, если интернета нет. Опишите, как бы вы создавали приложение такого типа? Из каких уровней оно бы состояло, каково предназначение каждого уровня? Представьте, что в этом приложении необходимо добавить возможность изменять основную картинку рецепта (т. е. получать новые данные из галереи/камеры и загружать их на сервер через API) и это реализовано на экране с подробным описанием рецепта. Вам пришел запрос сделать такой же функционал и на экране список рецептов. Как вы это сделаете?   Архитектура 5. Как организовать CI/CD для Android-проектов? 6. Различия архитектурных подходов в Android. Какие и когда лучше использовать? 7. Как вы понимаете Clean Architecture? 8. Опишите основные отличия между MVC/MVP и MVVM. Как MVVM стал одним из рекомендованных паттернов?   Ответы на некоторые из этих вопросов вы найдете в видео курсе Архитектура Android приложений.   Многопоточность 9. Какие еще знаете механизмы синхронизации данных, кроме synchronized? 10. Что такое переключение контекста (context-switching), когда речь идет о многопоточности? 11. Что мы понимаем, когда говорим о «честной» блокировке (fair lock)?   Java Core 12. Если бы пришлось имплементировать иммутабельный класс на Java, как бы вы это сделали? 13. Что такое Java Memory Model? 14. Сравните принципы композиции и наследования (Composition vs Inheritance).   Android SDK 15. ViewModel сохраняет свое состояние при повороте экрана? Как это возможно? Можете ли предложить, как сделать такой механизм? 16. Android Architecture Components. Что из этого приходилось применять на практике? Какие задачи решали? 17. Приходилось ли исследовать «утечки» памяти? Какие инструменты использовали для этого? 18. Представьте, что у вас есть экран со списком товаров. Во время скроллинга вы замечаете, что рендеринг не плавный, в логах много фреймов скипается и вообще-то экран тормозит. Что будете делать, чтобы улучшить ситуацию? 19. Если бы была задача написать приложение для интернет-магазина с нуля, какие технологии/подходы выбрали бы? 20. Приведите пример применения GoF-паттернов в Android SDK.   Kotlin 21. Опишите взаимодействие кода Kotlin и Java. 22. Что изменилось в обработке ошибок в Kotlin, если сравнить с Java? 23. Что такое делегированные характеристики (Delegated properties)?   Благодарим за эту статью Виктора Чистякова, Михаила Дьяченко, Влада Тищенко, Александра Романишина, Андрея Люшенка, Дмитрия Пашко, Вячеслава Сергеева, Антона Козленка, Артема Грищука, Евгения Трощия, Романа Белоконя, Константина Красильникова, Сергея Харченка, Андрея Друка, Виктора Косенко.
Популярні мови програмування на 2019 рік

Автор: Армен Маїлян

Планируя новые вехи для своего образования, полезно оценить их полезность относительно запросов общества в целом и вашей сферы деятельности – в частности. Для разработчиков программного обеспечения, как начинающих - выбирающих для себя первый язык программирования, так и опытных – выбирающих второй, третий (и тд.) язык для изучения, важно понимать востребованность этого языка на рынке. Владеть современным языком, поддерживающим большинство актуальных парадигм и технологий очень важно. Но важно и чтобы такой язык предоставлял достаточный выбор вакансий при поиске работы. Рассмотрим несколько авторитетных рейтингов, составленных для языков программирования по результатам 2018 года.   1) Популярные языки программирования на 2019 по рейтингу TIOBE   Индекс TIOBE (TIOBE programming community index) - это один из известных индексов, показывающий степень востребованности языка программирования, анализируя данные запросов в поисковых системах. Обновляется данный индекс каждый в месяц. Рейтинг учитывает как количество квалифицированных инженеров во всем мире, так и количество образовательных курсов по различным языкам. Для расчета индекса TIOBE используются данные результатов поиска в популярных поисковых системах, полученных в Google, YouTube, Wikipedia, Bing, Yahoo !, Baidu, и Amazon. Важно отметить, что индекс TIOBE не называет победителя рейтинга - лучшим языком программирования или языком, на котором написано большинство строк кода. Детальнее с методикой получения этого индекса можно ознакомиться тут.   На первом месте продолжает оставаться Java. Однако, несмотря на то, что в сравнении с декабрем 2017 его позиции поднялся на 2.66, из графика, представленного ниже, видно – показатели этого языка падают после пика популярности в октябре 2018. Второе место занимает язык C, имея 14.282% в рейтинге. Третье место получил Python с 8.376%, сместив в этом рейтинге популярности С++. Позиция Python выросла по сравнению с декабрем 2017 и продолжает расти. Язык С++, в свою очередь, уступив третье место, занимает сейчас четвертое. Его популярность, как видно из графика, колеблется относительно 8%, имея на декабрь 2018 - 7.56%. Интересной особенностью этого индекса оказывается то, что Visual Basic .NET в настоящее время находится на пятой позиции с рекордно высоким для данного языка уровнем. Это очень неожиданно, ведь профессиональные разработчики программного обеспечения крайне мало используют Visual Basic. Стоит отметить, что язык SQL снова добавлен в индекс TIOBE с февраля 2018 года. Вследствие этого, для языка SQL нет недавней истории, и может показаться, что значимость SQL растет очень быстро.   2) Статистика GitHub по языкам программирования за 2018 год     Статистика использования языков программирования на площадке GitHub показывает, что лидером по применению продолжает быть язык JavaScript. Он остается бессменным лидером и в частных репозиториях, и в публичных, а также лидирует в репозиториях организаций всех размеров вне зависимости от региона расположения во всем мире. На втором месте, также без изменений значимости, находится Java. Третье место занимает Python, чья популярность, благодаря применению его в системах машинного обучения, выросла в 1.5 раза. Четвертое и пятое место соответственно занимают, PHP и C++. По сравнению с предыдущим годом можно отметить стремительный рост применения языка TypeScript – благодаря частоте его применения, в рейтинге он поднялся с 10 места на 7. Заметным оказалось падение популярности языка С. В этом году он «провалился» сразу на два пункта, занимая сейчас 9 место. Популярность Ruby падает. Начиная с 2015 года этот язык на GitHub последовательно «сползает» с 5 места на 10 в 2018 году. Стоит также отметить существенный рост частоты применения языка Kotlin. Несмотря на то, что он пока не входит в десятку - за 2018 год частота его использования в проектах выросла в 2.6 раза.   3) Рейтинг языков программирования на Stackoverflow по результатам 2018 года   Согласно данным опроса Stack Overflow’s 2018 Developer Survey, проводимого уже восьмой год среди более чем 100 000 разработчиков, есть несколько тенденций, которые отмечают редакторы самого StackOverflow: DevOps и машинное обучение являются сегодня важными тенденциями индустрии программного обеспечения. Языки и структуры, связанные с этими видами работ, находятся на подъеме, и разработчики, работающие в этих областях, получают самые высокие зарплаты. Python поднялся в рейтинге языков программирования, превзойдя C# по популярности в этом году, так же как он превзошел PHP в прошлом году. JavaScript, согласно данным StackOverflow, остается лидирующим языком среди использованых разработчиками. Следующим после JavaScript является SQL, занимающий второе место. Затем идут Java, Bash, Python, занимающие соответственно третье, четверное и пятое места. Кроме этих, озвученных результатов опроса, мы можем увидеть и другие тенденции среди языков из первой десятки. Из графика количества вопросов на StackOverflow по различным языкам программирования видно, что уровень интереса к Python не перестает расти, как это уже было сказано выше. Это происходит на фоне некоторого снижения количества вопросов по таким языкам как PHP, C++, Java, C#. Имеет смысл рассмотреть также позиции языков Objective-C и Swift в контексте разработки под iOs. Заметно, что популярность Objective-C стабильно падает. Swift уже сейчас занимает 12 место среди языков, получив 8.1% в рейтинге. В то же время Objective-C находится на 15 месте, имея 7.0%. Полезной для понимания рынка разработки будет и статистика зарплат специалистов, применяющих в разработке те или иные языки программирования:  Как мы видим, среди языков первой десятки снова выделяется Python - предоставляющий возможность получать высокую зарплату относительно молодым специалистам. Так разработчики Java, со сходным опытом, получают в среднем на 15% меньше, чем разработчики на Python, а разработчики на PHP – почти на 30% меньше. Среди же наиболее оплачиваемых знаний языков мы можем наблюдать навыки вланения Clojure, F#, Go, Skala и ряда других языков программирования не входящий в первую десятку.   4) Рейтинг языков программирования IEEE Spectrum за 2018   Следующий рейтинг представлен IEEE Spectrum — ежемесячным периодическим изданием, представляющим Институт инженеров электротехники и электроники. Данный институт является международной некоммерческой организацией, объединяющей сотни тысяч технических специалистов со всего мира. Результаты этого анализа остаются актуальными, хотя они и были представлены в июле 2018. Согласно этому рейтингу Python занимает первое место уже второй год подряд. Такую высокую популярность языка составители объясняют несколькими причинами: Во-первых, Python стал все чаще применяться как язык embedded разработки. Все больше современных микроконтроллеров получают достаточно мощности и памяти для размещения интерпретатора Python. Следующей причиной роста популярности Python составители рейтинга видят падение популярности языка R, применяемого в основном для обработки статистических данных. Данный язык последовательно терял очки популярности и опускался с 5 места в 2016 году до 6 места в 2017 году, и 7 места в 2018 году. Соответственно Python все чаще используется для обработки больших наборов данных в статистических исследованиях и задачах машинного обучения. Заметен в рейтинге IEEE Spectrum рост востребованности PHP - он поднимается с 8-го на 6-е место. Также, согласно данным этого рейтинга, несколько снизилась доля применения JavaScript   5) Статистика W3Techs для языков WEB-разработки на 2019 году   Для понимания изменения трендов WEB-разработки полезным будет рассмотреть статистику, предоставляемую w3techs.com. Данная статистика показывает количество сайтов, применяющих для своей работы те или иные языки и платформы. В WEB проектах, среди языков фронтенда, первое место по значимости стабильно удерживается JavaScript. Рассмотрим языки бэкенда: Тренды применения языков программирования в серверной части на 08.01.2019. Для бэкенда все еще востребованным остается PHP. Несмотря на незначительные потери позиций, на фоне роста популярности других языков программирования - много кода уже написано на PHP. Около 80% всех сайтов Интернета написаны с применением PHP в серверной части. При выборе языка для изучения стоит учитывать, что на сегодняшний день PHP применяется такими популярными сайтами: Facebook.com Wikipedia.org Vk.com Sina.com.cn 360.cn Aliexpress.com Wordpress.com Pinterest.com Cobalten.com Detik.com Также мы видим, что несколько упала популярность платформы ASP.NET, хотя она и не утратила второе место по частоте использования. Растет частота применения Java, Ruby, Scala и JavaScript (благодаря активному применению платформы Node.js). Отмечается уменьшение на общем числе сайтов процента применения Python.   6) Статистика вакансий ITJobsWatch   Статистика ITJobsWatch для вакансий постоянных сотрудников в Великобритании, отсортированная именно по языкам программирования, позволяет рассмотреть языки с точки зрения количества вакансий по ним за период в 6 последних месяцев.    Данный рейтинг начинается со значения 4, поскольку 1, 2 и 3 места занимают вакансии Agile Software Development, Developer и Finance. Из представленной таблицы можно увидеть, что среди общего количества вакансий лидирует SQL, затем идут JavaScript, C# и Java. Количество вакансий со знанием указанных языков относительно прошлого полугодия практически не изменилось. С другой стороны, их догоняют Python – уже находящийся на 5 месте и C++ - на 6 месте среди языков программирования в вакансиях разработчиков. На фоне общего количества вакансий падает доля запросов на разработчиков, владеющих PHP – на 17 пунктов и владеющих T-SQL – на 7 пунктов. Наибольшая медианная зарплата соответствует Python – 60 000 £ . 7) Данные для размышления   По данным крупнейшей социальной сети для профессионалов и поиска работы - LinkedIn, за 2018 год в ТОП 5 наиболее растущих по количеству вакансий входят: блокчейн-разработчик, инженер сферы машинного обучения, специалист по машинному обучению. Стоит отметить, что, согласно данным LinkedIn, в ТОП 20 навыков, которыми должен владеть соискатель работы в Индии входят среди прочих, в порядке убывания важности: Java, SQL, HTML, JavaScript, C++. Также, в ТОП 10 навыков, наиболее часто отмечаемых у себя среди представителей молодежи Индии, Бразилии, Индонезии и Южной Африки входят: C/C++, WEB-разработка и Java-разработка.   Выводы Легко заметить, что одни данные мировых рейтингов языков программирования несколько противоречат данным других рейтингов о тенденциях изменения популярности языков. Однако есть ряд трендов, которые можно четко выделить из всех предоставленных данных: Все они отмечают заметный рост запросов на разработчиков, применяющих Python – как в уже относительно устоявшихся сферах статистической обработки, BigData и машинного обучения, так и в WEB, и в embedded разработке. Python – однозначно стоит рассмотреть в качестве языка для изучения на 2019 год. JavaScript остается бессменным лидером фронтенда и постепенно набирает очки в бэкенде и мобильной разработке под Android и iOs. Java продолжает лидировать как в разработке под Android, так и в сфере Enterprise разработки. Постепенно проникает Java и в WEB-backend. C# несколько растерял свои позиции, однако он однозначно будет находиться среди первых мест, оставаясь главным языком экосистемы Microsoft с широчайшей поддержкой этой корпорации. Также не стоит забывать достаточно глубокое проникновение С# в WEB, относительную простоту изучения, а также активное применение этого языка в разработке игр (Unity, XBOX 360) и мобильных приложений (Xamarin). Неоднозначна позиция у C++. Несмотря на то, что этот язык все еще полноценно присутствует в ТОП 10 языков и активно применяется для разработки игр, приложений для мобильных платформ, десктопных приложений и в embedded разработке – все больше заметно вытеснение его с занимаемых позиций другими языками. Кроме того, стоит учитывать, что большинство разработчиков не рекомендуют его как первый язык для изучения, из-за его сложности. В разработке под iOs Swift уже обогнал Objective-C и разрыв все еще увеличивается. Значительная часть разработчиков не считает PHP – языком «будущих разработок», при этом признавая его однозначным лидером «сегодняшних разработок» в сфере бэкенда. Падение же популярности его будет явно достаточно длительным. Ряд языков, такие как Go, Kotlin, Ruby и др. имеет смысл рассмотреть в качестве второго или третьего языка для развития себя как разработчика программного обеспечения.   Возможно на основе представленных данных Вы придете к несколько иным для себя выводам. Со своей же стороны в новом 2019 году мы желаем, чтобы и наши, и Ваши выводы помогли Вам достигнуть успеха в изучении новых языков, и технологий.
Чому jQuery не популярний серед українських фронтенд розробників

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

У 2025 році результати Stack Overflow Developer Survey знову здивували спільноту: jQuery посів третє місце серед найпопулярніших веб-фреймворків у світі, поступившись лише Node.js та React. На перший погляд це виглядає парадоксально, адже серед українських фронтенд-розробників jQuery часто називають «застарілим», «непотрібним» або таким, що «не має сенсу вивчати». Чому виникла така розбіжність між глобальною статистикою і локальним сприйняттям? І чи справді jQuery уже не має жодної практичної цінності? 1. jQuery виріс із проблем, які браузери вже вирішили Коли jQuery з’явився, він закрив болючі питання фронтенду: різну реалізацію DOM, подій та Ajax у браузерах. Фраза “write less, do more” була не маркетингом, а реальністю. Сьогодні ж: DOM API стандартизований, querySelector, fetch, classList, addEventListener доступні всюди, CSS-анімації та transition замінили більшість jQuery-ефектів. У результаті багато українських розробників сприймають jQuery як зайвий прошарок, адже те, що він робив раніше, тепер легко робиться «чистим» JavaScript. 2. Ринок праці формує ставлення: React → Angular → усе інше Якщо подивитися на сучасні вакансії, картина досить однозначна: React — беззаперечний лідер; Angular стабільно займає друге місце, особливо в корпоративному сегменті; Vue з’являється значно рідше; jQuery майже не фігурує як вимога. У кращому разі його згадують у контексті підтримки legacy-коду. Це напряму впливає на мотивацію: розробники вкладають час у те, що дає кар’єрний ріст, а не просто «знання для галочки». 3. Освіта і курси закріпили образ «застарілого інструменту» Сучасні навчальні програми зосереджені на: ES6+, асинхронності, TypeScript, React або Angular. jQuery або не згадується зовсім, або подається як частина історії фронтенду. Для новачків це формує чітку асоціацію: “jQuery — це минуле”. 4. Архітектурна складність сучасних UI не для jQuery Сучасні веб-застосунки — це: складні інтерфейси, керування станом, компонентна архітектура, SSR та гідрація. jQuery не був створений для таких сценаріїв. Він добре працює з DOM, але не пропонує системного підходу до складності UI, яку сьогодні вимагають продукти. Тут React і Angular виглядають значно органічніше. 5. Спільнота та культура: що обговорюють — те й цінують Українська фронтенд-спільнота активно обговорює: TypeScript, продуктивність, архітектуру, тестування, сучасні фреймворки. jQuery майже не з’являється у доповідях, статтях чи мітапах. Це підсилює відчуття, що він випав з актуального контексту, навіть якщо фактично ще використовується. 6. Чому ж jQuery так високо у Stack Overflow Developer Survey 2025? Високий рейтинг jQuery пояснюється не його «модністю», а іншими факторами: величезна кількість існуючих сайтів, що досі його використовують; багато розробників мали з ним досвід у минулі роки; legacy-проєкти нікуди не зникли. Тобто опитування фіксує факт використання, а не те, що jQuery є вибором №1 для нових проєктів. Кому і коли jQuery все ще буде корисний Попри загальне скептичне ставлення, jQuery не є «мертвим» інструментом. Є сценарії, де його використання залишається виправданим. 🔹 Підтримка legacy-проєктів Багато сайтів і внутрішніх систем, створених 5–10 років тому, активно використовують jQuery. Переписування таких проєктів часто економічно невигідне, і тут знання jQuery — практична необхідність. 🔹 CMS і WordPress Плагіни, теми, кастомні адмінки WordPress досі значною мірою залежать від jQuery. Для розробників, які працюють із CMS, це досі робочий інструмент. 🔹 Невеликі інтерактиви Форми, модальні вікна, прості анімації, Ajax-відправка — у невеликих проєктах jQuery дозволяє зробити все швидко, без складного сетапу. 🔹 Початкове знайомство з DOM Як допоміжний інструмент для розуміння DOM і подій jQuery може бути корисним, якщо його не ставити вище за сам JavaScript. 🔹 Старі браузери та корпоративні обмеження У специфічних умовах, де важлива підтримка застарілого середовища, jQuery все ще може економити час. Коли jQuery точно не варто обирати великі SPA; складні UI з активним станом; проєкти з довгим життєвим циклом і масштабуванням; команди, які працюють за сучасними frontend-підходами. Висновок jQuery не зник — він просто змінив свою роль. Він перестав бути універсальним рішенням і центром фронтенду, але залишився інструментом для конкретних задач. Українські розробники сприймають його як «старий», бо: ринок вимагає React і Angular; освіта рухається вперед; спільнота обговорює інші технології. І водночас глобальна статистика показує: jQuery досі з нами. Дивіться також: Відеокурс «jQuery», автор Сластен Максим
Паралакс для 2D гри без нервів та милиць

Автор: Дар'я Коновалова

Недавно в моей жизни начинающего разработчика игр появилась задача - сделать фон в игре, но не просто уныленький статичный бэкграунд, а параллакс. Да, эта чудо-красота применима не только в разработке сайтов, но и при создании игр. Попытка вдохновиться в гугле практически ничем не закончилась. Пришлось справляться с задачей собственными силами. У меня получилось. Хочу поделиться с вами опытом. Справедливо замечу, что параллакс — это не достояние веба. Еще в дремучие времена существования 8-битных игр параллакс успешно применялся для создания иллюзии объема в двухмерной игре. Коротко говоря, параллакс — это наслоение изображений, каждый слой движется со своей скоростью. Ближайший к игроку имеет самую высокую скорость, соответственно дальний (последний) — самую низкую. Ну что, вроде, минимально в теории разобрались и даже нашли, откуда ноги растут, значит, мы готовы перейти непосредственно к практике и сотворить это чудо своими руками. Что вам потребуется: базовые знания Unity3D 5 (на уровне создания скриптов, добавления компонентов); понимание С#; 3 или больше картинок в формате .png; внимательность и желание. Ладно, последнее не очень обязательно =) По ссылке вы можете скачать необходимые изображения, а также уже готовый проект. Подготовка Запускаем Unity3D, создаем новый проект, называем его, например, Parallax2D. Закидываем в папку Assets наши бэкграунды. Рекомендую сложить их в отдельную папку. В моем случае они лежат в Assets – StarSky. Каждое изображение называем удобно и понятно. Я назвала их по порядку размещения (Background – задний фон, MiddleBackground – средний, TopBackground – верхний слой). Для того, чтобы картинка перемещалась гладко, нам необходимо настроить ее в Inspector. Обратите внимание, этот этап очень важен, иначе все размажет, как звезды за иллюминатором Энтерпрайза на 3-й космической скорости. В поле Texture Type выбираем тип Texture, во Wrap Mode отмечаем Repeat. И радостно тыкаем Apply. Без этого действия изменения не сохранятся, а потом можно долго недоумевать, почему же оно не работает. Совершаем эти телодвижения и для 2-х остальных текстур. Подготовив картинки, переходим к этапу размещения их на сцене. Часто в этих ваших интерентах можно встретить совет - размещать их с помощью GameObject – Plane. Вы, конечно, можете потрудиться и заставить 3D объект нормально функционировать в 2D игре. Но, на самом деле, это все будет уныло, как последний эпизод «Звездных войн», а работать это чудовище будет чуть более быстро, чем аж никак. Поэтому я рекомендую долго не мучиться и использовать элемент UI – Canvas. Canvas меняет размер фона автоматически, подстраивает его под размеры экрана гаджета, на котором запускают игру. Это избавляет нас от потребности писать скрипт, который будет отвечать за отслеживание размеров экрана и изменения размера фона. В Hierarchy выбираем UI – Canvas. Собственно, если работать с Юнькой для вас не впервой, то вы явно знаете еще много других способов, как добавить в Hierarchy объект. Так что делайте это любым удобным способом. Создав Canvas, добавляем чайлдами («внутрь» канвы) три Panel для 3-х наших фонов. После добавления наша Hierarchy выглядит так: Переименовываем Canvas и Panel, чтобы у всех были свои пароли и явки. А теперь засучиваем рукава и беремся препарировать — подготавливать каждый компонент в Inspector. Начнем с ParallaxBackground. Изменяем Layer на Ignore Raycast, чтобы наш фон не реагировал на касания пальцами. Unity обязательно спросит, применить ли эти изменения ко всем «детям» — соглашаемся.  Далее переходим к компоненту Canvas. Находим Render Mode, выбираем Screen Space – Camera. В Render Camera добавляем нашу текущую дефолтную камеру (Main Camera(Camera)). Plane Distance ставим пока 110, но этот показатель проще отстроить во время теста. По факту — это расстояние от камеры до нашей канвы. То есть, изменяя его, мы будем получать разную глубину изображения. Остальное не трогаем и переходим к Back. В Rect Transform привязываем позицию к левому краю. Теперь наш фон будет всегда отстраиваться по одному краю, и мы избежим проблем с правильной позицией на разных устройствах. Удаляем компонент Image (Script), вместо него добавляем Raw Image (Script) (напомню, Add Component – UI – Raw Image (Scriot)). В Texture добавляем картинку нашего самого последнего слоя. Те же операции проделываем и для остальных слоев. Можно сделать немного проще, наколдовать изменения в первой Panel, дублировать (Ctrl + D), поставить в каждую свою текстуру, переименовать. Тут уже зависит от того, как вам будет удобнее. Запускаем сцену — любуемся. Три картинки прекрасно легли друг на друга. Немного черной магии Теперь весь смак. Мы с вами напишем скрипт, который заставит наши картинки двигаться. Создаем новый скрипт, напомню, пишем на C#, назовем его BackgroundHelper. Он у нас будет один, поэтому нет смысла делать отдельную папку, кидаем его прямо в основную Assets. Открываем созданный скрипт и понеслась тяжкая работа на 5 строчек: using UnityEngine; using UnityEngine.UI; // обязательно добавляем библиотеку пользовательского интерфейса, без нее кино не будет using System.Collections; public class BackgroundHelper : MonoBehaviour {     public float speed = 0; //эта публичная переменная отобразится в инспекторе, там же мы ее можем и менять. Это очень удобно, чтобы настроить скорость разным слоям картинки     float pos = 0; //переменная для позиции картинки     private RawImage image; //создаем объект нашей картинки               void Start () {         image = GetComponent<RawImage>();//в старте получаем ссылку на картинку         }                    void Update () {         //в апдейте прописываем как, с какой скоростью и куда мы будем двигать нашу картинку           pos += speed;             if (pos > 1.0F)                 pos -= 1.0F;             image.uvRect = new Rect(pos, 0, 1, 1);        }     } Сохраняем скрипт и добавляем его, как компонент к каждому слою. Скорости у меня такие: Back 0.0001 Middle 0.00015 Top 0.00024 Наслаждаемся успешной работой Если все было сделано правильно, мы получим умопомрачительный эффект, от которого просто невозможно оторвать глаз. У вас остались вопросы или возникли трудности? Пишите в комментариях.
Огляд елементів у HTML5

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

Введение HTML5 – последняя версия языка разметки. У HTML5 есть семантическая структура. В пятой версии языка ввели определенные средства для управления – они дают возможность сэкономить Ваше время при разработке веб-сайтов. В этой статье мы рассмотрим упомянутые средства управления, а также функции в HTML5. Прежде чем начать, необходимо установить Visual Studio. Мы можем включить опцию HTML в целевом разделе: Tools -> Options -> Text Editor -> HTML. Разметка HTML5          Объявление DOCTYPE: <!DOCTYPE html> Объявление кодировки символов: <meta charset="utf-8" /> <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>Sibeesh Passion wish you a happy new yeartitle> head> <body> Welcome to Sibeesh Passion body> html> Структура HTML5 Как уже говорилось, у HTML5 есть семантическая структура. Это уменьшает усилия UI-разработчика. На изображении объясняется эта структура. До применения HTML5: После: Исходя из рисунка, понятно, что в HTML5 доступны такие элементы: Header Nav Section Aside Article Footer Добавление собственных элементов Вы можете создать собственный элемент, используя стили. Разметка должна выглядеть таким образом: <!DOCTYPE html> <html> <head>     <title>Your own element title>     <script>document.createElement("yourelement")script>     <style>         yourelement {             display: block;         }     style> head> <body>     <div>         Normal element     div>     <yourelement>My elementyourelement> body> html> Вы создали новый элемент «yourelement». Новый синтаксис Атрибута В HTML5 введен новый синтаксис атрибута: Empty Unquoted Double Quoted Single Quoted Можно присвоить текстовое значение тега input type таким образом:   <input type="text" value="Sibeesh" disabled>     <input type="text" value=Sibeesh>     <input type="text" value="Sibeesh">     <input type="text" value=’Sibeesh’> Примените CSS Так же, как  к обычным элементам HTML, так и к новым семантическим элементам можно применять стили. footer{border:1px solid;} Предыдущий стиль будет применен ко всем footer, доступным на странице. Не рекомендуется использовать верхний регистр (Footer, FOOTER) в названии элементов. Обзор элемента Canvas Если Вы хотите создать определённый графический контент, элемент Canvas,  то Вам нужно: Объявление Canvas     <canvas id="canvasExample" width="200" height="100"             style="border:1px solid #ccc;">         Bad Luck, It seems your browser won't support :(     canvas> Реализация Canvas var c = document.getElementById("canvasExample"); //Get the element var ctx = c.getContext("2d"); // Get the context for the element var grd = ctx.createLinearGradient(0, 0, 200, 0); //Create the line grd.addColorStop(0, "blue"); // Apply the colors grd.addColorStop(1, "white"); // Apply the colors ctx.fillStyle = grd; //apply the style ctx.fillRect(10, 10, 150, 80); // Fill Здесь мы применили градиент к canvasExample. Введение в SVG Масштабируемая векторная графика (Scalable Vector Graphics) – графика для web типа canvas. Одно из различий между canvas и SVG  то, что SVG поддерживает обработчик событий, а элементы canvas – нет. Объявление SVG     <canvas id="canvasExample" width="200" height="100"             style="border:1px solid #ccc;">         Bad Luck, It seems your browser won't support :(     canvas> Полный вариант HTML-документа: <!DOCTYPE html> <html> <body>     <table style="border:1px solid #ccc;">         <tr style="border:1px solid #ccc;">             <td style="border:1px solid #ccc;">                 <h2 style="text-align:center;">Canvash2>                 <canvas id="canvasExample" width="200" height="100"                         style="border:1px solid #ccc;">                     Bad Luck, It seems your browser won't support :(                 canvas>             td>             <td style="border:1px solid #ccc;">                 <h2 style="text-align:center;">SVGh2>                 <svg width="200" height="200">                     <circle cx="100" cy="100" r="50"                             stroke="green" stroke-width="4" fill="yellow" />                     Bad Luck, It seems your browser won't support :(                 svg>             td>         tr>     table>     <script>         var c = document.getElementById("canvasExample"); //Get the element         var cctx = c.getContext("2d"); // Get the context for the element         var grd = ctx.createLinearGradient(0, 0, 200, 0); //Create the line         grd.addColorStop(0, "blue"); // Apply the colors         grd.addColorStop(1, "white"); // Apply the colors         ctx.fillStyle = grd; //apply the style         ctx.fillRect(10, 10, 150, 80); // Fill     script> body> html> Источник: http://www.c-sharpcorner.com/UploadFile/65794e/html-5-elements-in-a-look-part-1/         http://www.c-sharpcorner.com/UploadFile/65794e/html-5-elements-in-a-look-part-2/
Читабельність програмного коду

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

Введение Вам приходилось возвращаться к фрагменту кода, написанному год или месяц назад? Каково это было?  Это было просто, или приходилось вникать в код исходя из заметок? Если у Вас не получается быстро разобраться в коде и Вы задаете себе вопрос: «Что же я тогда имел ввиду?» – Вы определенно делаете что-то не так. Скорее всего, Ваш код работает правильно. И Вы знали его вдоль и поперек, когда над ним работали. Почему же Вы не можете его вспомнить сейчас? Быть может, он не был написан достаточно доступно и не соответствовал стандартам машинного кода? В этой статье Вы найдете полезную информацию о том, как научиться писать доступный не только для себя, но и для остальных разработчиков код. Пример использования стандарта оформления кода Рассмотрим это на следующем примере метода в C#: public string Transform(List<DateTime> s)         {             string d = null;             foreach (DateTime kc in s)             {                 if (kc > DateTime.Now)                 {                     d = d + kc + "\n";                 }                 else                 {                     d = d + "Delayed\n";                 }             }             return d;         } Скорее всего, Вы не можете понять, какую функцию он выполняет и как его можно использовать. Но после короткой реконструкции кода мы получим:  public string GetText(List<DateTime> arrivalTimes)         {             var stringBuilder = new StringBuilder();             foreach (DateTime arrivalTime in arrivalTimes)             {                 if (arrivalTime > DateTime.Now)                 {                     stringBuilder.AppendLine(arrivalTime.ToString());                 }                 else                 {                     stringBuilder.AppendLine("Delayed");                 }             }             return stringBuilder.ToString();         } Или если мы обратимся к оператору “?:”, мы получим:  public string GetText(List<DateTime> arrivalTimes)         {             var stringBuilder = new StringBuilder();             foreach (DateTime arrivalTime in arrivalTimes)             {                 string message = arrivalTime > DateTime.Now ? arrivalTime.ToString() : "Delayed";                 stringBuilder.AppendLine(message);             }             return stringBuilder.ToString();         } Что произошло с кодом? Некоторые изменения сделали наш код более читабельным: 1. Имя метода получило более понятное название. 2. Мы изменили названия переменных: 1. “kc” изменена на arrivalTime, 2. “s” изменена на arrivalTimes, 3. “d” изменена на stringBuilder, Это облегчит понимание того, за что отвечает каждая переменная и как она используется. 3. Скобки были стандартизированы. 4. Добавлены вкладки для читаемости, размещения и разметки в скобках. 5. Оператор “?:” был введен для того, чтобы сократить наш код до четырех строчек. 6. Добавлен класс StringBuilder, чтобы избежать конкатенации (“string” + “string”). Кто-то может возразить, что создание экземпляра StringBuilder будет замедлять метод из-за его распределения памяти. Но стоит помнить, что конкатенация струн создает много мусора в памяти, который вынужден чистить Garbage Collector. Считается, что ~ 5 непрерывных строк равны созданию реализации StringBuilder, так что если список состоит из пяти или более элементов, то производительность этого метода будет увеличена. А для больших коллекций этот метод будет работать в несколько раз быстрее. Правильный способ составления кода Давайте перейдем к другому примеру. Рассмотрим класс пользователя: public class User         {             public bool HasConfirmedEmail { get; set; }             public bool HasActiveAccount { get; set; }             public bool IsLoggedIn { get; set; }             public bool HasPremiumAccount { get; set; }             public bool StatusAutoGenerated { get; set; }             public DateTime LastStatusChange { get; set; }             public bool SetStatus(string status)             {                 // write to Data Base                 return true;             }         }  Метод, отвечающий за обновление статуса пользователя, который должен проверить, все ли свойства в правильном состоянии: public string UpdateStatus(string status, User user)         {             if (user.HasActiveAccount)             {                 if (user.HasConfirmedEmail)                 {                     if (user.IsLoggedIn)                     {                         if (user.HasPremiumAccount)                         {                             if (!user.StatusAutoGenerated)                             {                                 if (user.LastStatusChange < DateTime.Now.AddDays(-1))                                 {                                     if (user.SetStatus(status))                                     {                                         return "Updated";                                     }                                 }                             }                         }                     }                 }             }             return "Fail";         } Хотя этот код более понятный, чем первый, представленный в этой статье, он все еще не соответствует стандартам программного кода. Вот пример того, как этот код можно сделать немного лучше: const string OK = "Updated";         const string FAIL = "Fail";         public string UpdateStatus(string status, User user)         {             if (!CanUpdateStatus(user)) return FAIL;             if (!user.SetStatus(status)) return FAIL;             return OK;         }         public static bool CanUpdateStatus(User user)         {             if (!user.IsLoggedIn) return false;             if (!user.HasActiveAccount) return false;             if (!user.HasConfirmedEmail) return false;             if (!user.HasPremiumAccount) return false;             if (user.StatusAutoGenerated) return false;             if (!(user.LastStatusChange < DateTime.Now.AddDays(-1))) return false;             return true;         } Основные изменения, внесенные в этот код, чтобы улучшить его читабельность: Static method был создан, чтобы проверить возможность обновления статуса пользователя. Это делает метод UpdateStatus более понятным с первого взгляда. Кроме того, логика метода CanUpdateStatus может быть повторно использована в других частях системы, если они являются public и static. Все " if " были заменены, чтобы уменьшить вложения. Количество скобок значительно уменьшилось, и код гораздо легче читать и компилировать. Еще одним преимуществом данного условия является его масштабируемость. Представьте себе, что класс User имеет теперь еще три свойства, которые должны быть проверены перед обновлением статуса – будут необходимы еще три "if" выписки. Теперь Вы можете добавить только три (не более) линии в методе CanUpdatedStatus. Строки, которые представляют сообщения, были удалены из тела методов и были введены в постоянные переменные. Это помогает поддерживать код, потому что независимо от числа использований кода есть только одно место, где Вы должны изменить содержание сообщения, если это необходимо. Но, на самом деле, все тексты должны быть помещены в проект внешних ресурсов. Источник: http://blog.goyello.com/2014/12/11/clean-code/ 
Міжнародний фестиваль інноваційних проектів 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, обращайтесь.
Виграй знижку 50% на онлайн навчання з ментором

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

Друзі, 1 лютого ми проведемо розіграш знижок 50% на онлайн навчання у групі з ментором за найпопулярнішими ІТ-спеціальностями! Буде 6 переможців – по одному на кожен напрямок. Шестеро щасливчиків зможуть пройти повне навчання за обраною спеціальністю за половину вартості і заощадити від 261 до 483 USD в залежності від обраної спеціальності! Ви можете виграти знижку на навчання: Python Developer FrontEnd Developer C#/.NET Developer Java Developer FullStack Node.js Developer Manual QA. Тестування ПЗ Як проходить навчання Онлайн заняття проводяться в Zoom тричі на тиждень у невеличкій групі (до 25 осіб) з сертифікованим ментором та його помічником, спілкування у телеграм чаті. Заняття триває 2 години. Є перевірка домашніх завдань і рекомендації ментора, курсові проєкти і допомога у працевлаштуванні. Додаткові бонуси: ключі на професійний софт для розробників від JetBrains; всі уроки записуються і лишаються з вами назавжди; безкоштовний доступ до всіх відео курсів ITVDN за обраною спеціальністю на весь термін навчання; онлайн тестування, сертифікати по окремим технологіям та Диплом по спеціальності; можливість стажування після закінчення навчання. Це чудова можливість зробити старт в ІТ і отримати роботу в 2024 році з максимальною вигодою. Щоб взяти участь у розіграші, треба: Підписатися на наш Telegram-канал. Підписатися на YouTube-канал CodeUA. Заповнити форму учасника розіграшу. Заявки приймаються до 12:00 1 лютого. Розіграш відбудеться 1 лютого о 16:00 на YouTube-каналі CodeUA. Переможці будуть визначені за допомогою онлайн-сервісу Random.org. Посилання на онлайн трансляцію ми надішлемо вам на email, вказаний у реєстраційній формі. Знижка на навчання дійсна протягом 2 місяців – у лютому та березні. Нижче – детальніше про кожну спеціальність. Python Developer Тривалість навчання – 5 місяців (110 годин із тренером). Ви вивчите: мову Python з нуля до поглибленого рівня, систему управління версіями Git, СУБД PostgreSQL та фреймворк Django. Додатково ви отримаєте доступ до 24 відео курсів за спеціальністю Python Developer на ITVDN на 6 місяців, а також ключі на професійний софт від JetBrains. Курсові проєкти та допомога в працевлаштуванні. Повна вартість навчання – 715 USD. Акційна вартість для переможця – 358 USD (🔥 ви економите 357 USD) Детальніше про курс FrontEnd Developer Тривалість навчання — 5.5 місяців (124 години з тренером). Ви вивчите: мови HTML, CSS і JavaScript, систему управління версіями Git, один із фреймворків на вибір – Angular (+ мова TypeScript) або React. Додатково ви отримаєте доступ до 51 відео курсу за спеціальністю FrontEnd Developer на ITVDN на 7 місяців, а також ключі на професійний софт від JetBrains. Курсові проєкти та допомогу в працевлаштуванні. Повна вартість навчання – 820 USD. Акційна вартість для переможця – 410 USD (🔥 ви економите 410 USD) Детальніше про курс C#/.NET Developer Тривалість навчання – 5.5 місяців (138 годин із тренером). Ви вивчите: мову C# з нуля до поглибленого рівня, систему управління версіями Git, мову запитів SQL, Entity Framework Core, ASP.NET Core. Ви отримаєте доступ до 57 відео курсів за спеціальністю C#/.NET Developer на ITVDN на 8 місяців. Курсові проєкти та допомогу в працевлаштуванні. Повна вартість навчання – 840 USD. Акційна вартість для переможця – 420 USD (🔥 ви економите 420 USD) Детальніше про курс Java Developer Тривалість навчання – 5 місяців (124 години з тренером). Ви вивчите: мову Java з нуля до поглибленого рівня, систему управління версіями Git, СУБД MySQL, технології JDBC & Hibernate, Web-services, основи фреймворку Spring. Додатково ви отримаєте доступ до 34 відео курсів за спеціальністю Java Developer на ITVDN на 7 місяців, а також ключі на професійний софт від JetBrains. Курсові проєкти та допомогу в працевлаштуванні. Повна вартість навчання – 781 USD. Акційна вартість для переможця – 391 USD (🔥 ви економите 390 USD) Детальніше про курс FullStack Node.js Developer Тривалість навчання – 7 місяців (146 годин із тренером). Ви вивчите: мови верстання HTML & CSS, мову програмування JavaScript, систему управління версіями Git, фреймворк React, СУБД MySQL, фреймворк Node.js. Додатково ви отримаєте доступ до 13 відео курсів від ITVDN, а також ключі на професійний софт від JetBrains. Курсові проєкти та допомогу в працевлаштуванні. Повна вартість навчання – 966 USD. Акційна вартість для переможця – 483 USD (🔥 ви економите 483 USD) Детальніше про курс QA. Тестування ПЗ Тривалість навчання – 3 місяці (78 годин із тренером). Ви вивчите основи проєкту в ІТ, мануальне тестування, бази даних та SQL, а також отримаєте знання з HTML & CSS, Git, CI/CD/CD, mobile, веб та API тестування. Ви отримаєте доступ до 33 відео курсів за спеціальністю Quality Assurance на ITVDN на 8 місяців. Допомогу HR-фахівця у працевлаштуванні. Повна вартість навчання – 523 USD. Акційна вартість для переможця – 262 USD (🔥 ви економите 261 USD) Детальніше про курс   UPD від 01.02.2024 Переможці: Python Developer - Корчевний Петро Frontend Developer - Кучер Анастасія  Java Developer - Степанов Артем C#/.NET Developer - Тимощук Марина FullStack Node.js Developer - Кирилаш Сергій Manual QA. Тестування ПЗ - Клименко Ірина Запис розіграшу: https://www.youtube.com/watch?v=fK6xxHcop1k
Notification success