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

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

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

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

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

Результати пошуку за запитом: обучение c
Система контролю версій "просто, як двері" або як навчитися користуватися git за пару годин

Автор: Дмитро Івченко

Введение Я достаточно давно использую git практически во всех проектах. За это время я успел многому научиться и хочу поделиться опытом с читателями. Как известно, все новое пугает. Так говорит половина моих знакомых, которые не захотели потратить пару часов, чтобы разобраться с git раз и навсегда. Скорее всего, после прочтения этой статьи и они, и вы поймете, что это проще, чем кажется. Я постараюсь показать, как эта VCS (Version Controll System) помогает разрабатывать проект. Эта статья рекомендована к прочтению тем, кто только делает первые шаги в разработке больших проектов. Итак, Git — это «распределенная система контроля версий», где «система контроля версий» означает то, что она запоминает историю изменения своих файлов, а распределенная значит то, что мы можем работать с ней без доступа к интернету. Для того чтобы начать: Git акаунт на https://github.com Консоль или же графический интерфейс. Человек по ту сторону монитора, что сможет это поставить под свою ось, будь то Windows, Mac OS или Linux . Моё окружение - это Mac OS X + Webstorm + Git + Bash . Если у вас Windows, то, скорее всего, будет msysgit (git-bash) + TortoiseGit. Как вы уже поняли, придется работать с консолью, потому вам будет необходимо усвоить несколько команд для установки git на вашу операционную систему. Поговорим немного о том, как же установить git: Установка для Linux Установить Git под Linux как бинарный пакет можно, используя обычный менеджер. Если у вас установлена Fedora, можно воспользовать yum: $ yum install git-core Если же у вас дистрибутив, например, Ubuntu,  то вам нужно: $ apt-get install git Установка для Mac Существует два способа установки Git на Mac OS X. Первый - использовать графический компоновщик Git, который вы можете скачать здесь: http://goo.gl/nB31LK или же, для более продвинутых пользователей, просто вставьте следующую строчку в терминал $ sudo port install gitweb + git-core +doc  + bash_completion Установка в Windows Настроить Git в Windows просто: у проекта msysGit процедура установки  самая легкая. Просто скачайте *.exe инсталлятор на GitHub: http://goo.gl/cmGQSj После установки у вас будет и консольная версия, и стандартная графическая. Остались вопросы по установке? Тогда вам сюда - https://goo.gl/lec2M0 Git — это коллекция инструментов для решения определенных проблем. Давайте рассмотрим компоненты Git пошагово: Коммиты Коммит (патч) — показывает некоторые изменения в файлах, что подверглись изменениям с момента предыдущего коммита. Коммит также содержит заголовки, в которых есть автор, время его создания и прочее. Git-коммит шифрует это в заголовке «parent», указывая, после какого коммита его нужно наложить. Как применить коммит к другому коммиту? Мы можем применить коммит только к полному набору файлов. Но после этого мы получим измененный набор файлов. Поэтому «коммит» также показывает состояние репозитория после добавления нового патча. История Git — это вся цепочка изменений для воссоздания кодовой базы с нуля, коммит за коммитом. История коммиттов может выглядеть так: Commit C: Родитель — B. Добавь “Systematics” в конец файла «readMe.txt». Commit B: Родитель — A. Добавь “Bionic” в конец файла «readMe.txt». Commit A: Создай файл «readMe.txt», содержащий “Cyber”. Commit A здесь первый, это значит, что у него нет родителя. Это значит, что его патч может только добавить новые файлы — в репозитории нет никаких существующих файлов для изменения. Во всем остальном это такой же коммит, как и все остальные. Итак, мы начинаем с пустого файла. Затем мы применяем патч A, который дает текст “Cyber”. Затем мы можем применить патч B, который даст нам “Cyber Bionic”.  Наконец, мы применяем C, который дает “Cyber Bionic Systematics”. Визуализация Git изображает историю коммиттов слева-направо, описанное выше будет выглядеть так: A → B → C. Тэги Тэги —  имена для коммитов, чем-то похожие на ветки. Однако, тэги должны быть постоянными: они, в основном, используются для названий версий релизов. Вы можете переключаться по тэгу, но тэг не может быть вашей «текущей веткой», и тэг никогда не появится автоматически, если вы коммитите впервые. Также тэги (чаще всего) глобальные, с неограниченным пространством имен, как ветки. Как просмотреть историю последних коммитов: git log покажет название последних трех коммитов в ветке. git log --oneline --graph --decorate намного лучше для просмотра (можете сами убедиться). Вы также можете установить tig, который делает, в основном, то же самое, но вы сможете использовать Enter на коммите, чтобы увидеть различия. git log --follow показывает нам все изменения, только для конкретного файла (директории). --follow означает - следить за историей файла, включая изменение имени файла. А сейчас время для команд, которые вы будете писать каждый день по многу раз $ git status покажет, в какой ветке вы находитесь и какие файлы подверглись изменениям. git add file_name добавляет только указанный файл (файлы) к патчу. git add -A (all) добавляет к патчу все изменения, которые нужны вам в последующем коммите. git commit -a откроет редактор для ввода текста коммита, затем будет создан коммит со всеми произведенными изменениями. git commit -m “what is to change” запишет коммит и даст ему то описание, которое есть в скобках git branch name создает новую ветку под названием name, основаную на коммите, но не переключается на нее. Для этого тебе понадобиться команда: git checkout -b origin/develop, которая создаст новую ветку, основанную на origin/develop, или на той, в которой вы находитесь, и переключится на нее. git checkout производит переключение в ветку, которую вы укажите. Вы также можете перейти в удаленную ветку, в тэг или в конкретный коммит.   git rm file_name говорит Git, что ты собираешься удалить файл, а также удаляет его физически. Конфликты слияния Если вы делаете слияние или отправку изменений, возможно, ваши изменения будут конфликтовать с чужими. Git выведет сообщение: "Автоматическое слияние не удалось, вы должны сделать это вручную". Если вы посмотрите git status, то обнаружите новую секцию для конфликтующих файлов. И вам нужно это исправить, чтобы завершить слияние. Откройте конфликтующий файл и увидите что-то вроде этого: <<<<<<< то что мы изменили ======== то что сделал ваш предшественник >>>>>>>> origin/develop   Это говорит нам о том, что двое людей отредактировали одни и те же строки в том же самом файле по-разному, а Git не знает, что должно быть результатом. Просто отредактируйте файл, как нужно, и выполните git add -А, чтобы сообщить Git, что вы готовы к отправке. Когда все конфликты будут решены и все файлы добавлены через git add -A, сделайте простой git commit для полного слияния. Примечание: Проверяйте, что вы действительно исправили все конфликты в файлах после слияния. Иногда, конфликт - это когда один программист отредактировал файл, а другой удалил этот файл. Когда такое случается, Git покажет тебе, кто что сделал. Надеюсь, что статья дала вам много новых знаний. И если это так - то вперед, создавать первый репозиторий на github.com и закреплять все, что прочитали.
Огляд текстових редакторів та деяких корисних плагінів

Автор: Антон Гончаров

Введение Привет всем. Многие студенты, которые решили связать свою жизнь с програмированием, задаются такими вопросами: - что выбрать своим главным инструментом в работе? - чем пользуется большинство? - чем пользоваться при написании своего кода? - что лучше? На эти вопросы нет однозначного ответа, каждый редактор по-своему хорош. Но постараюсь описать главные возможности тех редакторов, с которыми я сам столкнулся и пользовался в своей практике. Сразу внесем ясность и расставим точки над i. Средства разработки делятся на два главных класса: 1 – Интегрированные среды разработки (IDE) 2 - Текстовые редакторы (text editor) Официальное определение  интегрированная среда разработки можно найти по адресу: https://ru.wikipedia.org/wiki Официальное определение текстовый редактор по адресу: https://ru.wikipedia.org/wiki Попытаюсь объяснить  разницу между двумя этими классами своими словами. Интегрированная среда разработки - это как швейцарский нож или трактор, он мультифункционален, а следственно, и граничен. Может делать много, но некоторые вещи делает не так, как нам хотелось бы. Посудите сами: трактор ведь может тянуть тяжелый груз, копать и, главное, может передвигаться. Но все это он делает медленно. К примеру, если стоит задача переместиться из пункта “А” в пункт “Б” (что является одной из функций трактора), для этого лучше пригодится спорткар или обычный легковой автомобиль, для этой операции нами не нужен трактор со всеми его функциями. Следовательно, мы можем сделать вывод, что для определенных операций нам нужны определенные инструменты. В этой статье я не буду рассматривать IDE и их фичи (feature). Хочу рассказать о главных текстовых редакторах и их возможностях. Мой TOP текстовых редакторов: 1. Sublime Text 2. Brackets 3. Visual Studio Code (на этом месте был Atom) Пробовал, но не понравились/не подошли, по каким-либо причинам (поэтому не рассматриваю их тут) 1. Notepad++ (Сайт https://notepad-plus-plus.org/) 2. Komodo Edit (Сайт http://komodoide.com/komodo-edit/) 3. Atom (Сайт https://atom.io/) 4. Textmate (Сайт https://macromates.com) Итак ,начнем. Sublime Text 3 сайт: http://www.sublimetext.com/3 Чем нравится: кроссплатформенный легкий большая и понятная библиотека плагинов (дополнений) легко настроить под себя Что следует сделать после установки. Зайти на сайт https://packagecontrol.io/installation И сделать все согласно инструкции, открыть консоль Саблайма: найти вкладку View  и кликнуть Show Console. В появившемся снизу поле ввода вставить следующий код: import urllib.request,os,hashlib; h = 'eb2297e1a458f27d836c04bb0cbaf282' + 'd0e7a3098092775ccb37ca9d6b2e4b7d'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by) Должно получиться вот так: Жмем Enter. Так мы установили Package Control в наш Sublime. Теперь мы можем устанавливать плагины в редактор, нажав сочетание клавиш Ctrl+Shift+P on Windows/Linux, ⇧⌘P on OS X На сайте https://packagecontrol.io/ вы найдете множество плагинов с детальным описанием, руководством установки и руководством использования. Теперь о плагинах. Плагин – грубо говоря, это дополнение программы. Официальное определение https://ru.wikipedia.org/wiki Плагины, которые пригодились мне в работе, возможно, пригодятся и вам. 1. Emmet - https://packagecontrol.io/packages/Emmet Плагин, который помогает быстро набирать код. С помощью шпаргалки вы быстро научитесь быстро набирать сложные конструкции html, указав лишь название тега и  порядок иерархического положения елемента на странице. Его официальный сайт http://emmet.io/ и шпаргалка http://docs.emmet.io/cheat-sheet/ Еще одно условие: для работы этого дополнения нужен предустановленный nodeJS. Найти его можно тут: https://nodejs.org/ Думаю, что nodeJS у вас уже был предустановлен, а если не был, то он вам точно еще пригодится не раз. 2. SublimeCodeIntel - https://packagecontrol.io/packages/SublimeCodeIntel Плагин портирован из текстового редактора Komodo Editor, помогает автодополнением к языкам программирования JavaScript, Python, Ruby, XML, HTML, CSS, PHP и другим. 3. SideBarEnchancements - https://packagecontrol.io/packages/SideBarEnhancements Плагин открывает новые возможности боковой панели для работы с Вашими проектами. 4. BracketHighlighter - https://packagecontrol.io/packages/BracketHighlighter Плагин позволяет отображать дополнительные скобки возле номеров строк, отображая, к примеру, блоки кода. 5. AutoFileName - https://packagecontrol.io/packages/AutoFileName Плагин говорит сам за себя, когда мы пишем пути к нашим фалам, помогает, выводя дополнительное выскакивающее окошко, с выбором папок или файлов. 6. HTML-CSS-JS Prettify https://packagecontrol.io/packages/HTML-CSS-JS%20Prettify Плагин “расческа”. Причесывает наш код, делает его более читабельным для человеческого глаза. 7. Color Highlighter - https://packagecontrol.io/packages/Color%20Highlighter Плагин подсвечивает цвета при написании вайлов CSS/Less/SASS/SCSS/Stylus. Остальные плагины, для работы с такими библиотеками как jQuery, Bootstrap, AngularJS,  советую устанавливать осторожно, потому как постоянно выскакивающие окошки с помощью какого либо плагина если не пугают, то начинают очень надоедать. Поэтому советую не превращать текстовый редактор в “неубранный балкон”. Также есть возможность установки из того-же Package Control множества тем и цветовых схем. Темы и цветовые схемы отличаются тем, что тема  меняет полностью весь внешний вид Sublime, цветовая схема  меняет только цвета подсветки синтаксиcа. Файл настроек находится во вкладке Preferences>Settings Default/Settings User. Почему именно два файла? Потому что вы сможете изменять только Settings User. Оба файла являются, по сути, JSON объектами, поэтому разобраться и изменять свои настройки вы научитесь довольно быстро. Brackets сайт - http://brackets.io/ Этот текстовый редактор также поддерживает большинство перечисленых плагинов, и даже если таковых вы не найдете, то их аналоги точно есть в песочнице. На правой боковой панели вы найдете несколько кнопок: Первая в виде молнии – LivePreview. Запускает страницу с рашрирением html в вашем браузере, который установлен по умолчанию, браузер будет сам обновлять страницу.  Вторая в виде лего – Extension Manager. При клике вызывает модальное окно в, котором содержатся вкладки меню для выбора плагинов, тем, их установке и удалению.  Третья в виде “слоев торта” со стрелочкой вверх – Extract for Brackets. Ради этой кнопки и стоит устанавливать этот редактор. Она позволяет после регистрации загрузить файлы psd формата для верстки прямо  из текстового редактора, не загружая ничего больше.  Кликаете по кнопке Open PSD Регистрируетесь или же входите под своим Adobe ID, загружаете PSD шаблон и начинаете верстать в разы быстрее. Кликнув по какому либо элементу на шаблоне, вы можете моментально перенести: текст, css свойства, или же выгрузить картинку из шаблона пряму в папку с проектом. С такими возможностями верстка становится в разы быстрее! Не агитирую, просто  советую попробовать) Visual Studio Code сайт - https://code.visualstudio.com/ Бесплатный кроссплатформенный текстовый редактор, основанный на технологиях замечательного текстового редактора Atom от GitHub. Подробное описание можно прочитать по ссылке ниже: https://uk.wikipedia.org/wiki/Visual_Studio_Code Также будет полезна ссылка с документацией: https://code.visualstudio.com/Docs/setup Отличный текстовый редактор от компании Microsoft. Облегченная и кроссплатформенная версия Visual Studio. Имеет схожий дизайн со своим старшим собратом. Похожие темы и подсказки в виде выпадающих окошек (контекстные подсказки). Так что разработчикам, перешедшим с Visual Studio, будет гораздо легче адаптироваться. Еще несколько плюсов с коробки: поддержка таких языков програмирования: JavaScript, C++, C#, PHP, XML, Java, Objective-C, HTML, CSS, Less, Sass и т.д. (полный перечень находится в документации). отладчик инструменты для работы с Git автодополнения в стиле Emmet. Настоятельно рекомендую обратить внимание и попробовать Visual Studio Code. Даже просто потому, что вы установите его и все, дальше просто приступаете к работе :) На этом все. Думаю, что изложил свои мысли достаточно простым языком. Помните, что не важно, в каком текстовом редакторе или IDE вы работаете, это всего лишь инструмент, в конечном итоге вы можете остановить свой выбор на обычном блокноте и там разрабатывать приложения, для того, чтобы писать программы не обязательно иметь подсветку синтаксиса, всякие плюшки, главное, чтобы вам было удобно и при написании вы чувствовали себя комфортно. Выбор за вами. Удачи!
Застряли в поиске работы? Вам необходим карьерный консультант, а не еще один курс

Автор: Виктория Чабан

Карьерный путь сегодня выглядит совсем иначе, чем десять лет назад. Рынок труда меняется быстрее, чем мы успеваем обновлять резюме. Новые профессии появляются каждый год, компании сокращают штаты или перестраивают процессы, а конкуренция за хорошие вакансии растёт. В таких условиях даже опытные специалисты иногда теряются — не понимают, в каком направлении двигаться, как выгодно подать себя или как вернуть уверенность после неудач. Именно здесь появляется карьерный консультант — специалист, который помогает разобраться в профессиональных целях, выстроить стратегию развития и сформировать сильное позиционирование на рынке. Когда стоит обратиться к карьерному консультанту Карьерная консультация — это не только для тех, кто «не знает, кем быть».Она полезна на любом этапе профессионального пути. 1. Если вы студент или джун, который делает первые шаги Вы закончили курсы, получили базовые навыки, но не понимаете, как попасть на первую работу? Карьерный консультант поможет: составить резюме, которое действительно читают рекрутеры, правильно оформить профили на джоб-бордах и LinkedIn, понять, какие навыки нужно прокачать в первую очередь, подготовиться к собеседованию без стресса и паники. 💡 Результат: вы не тратите месяцы на безуспешные отклики, а быстрее получаете приглашения и первый оффер. 2. Если вы хотите перейти в IT из другой сферы Карьера-свитч — это смелый шаг, но без стратегии легко застрять. Карьерный консультант поможет превратить ваш предыдущий опыт в преимущество, а не в «пустое место» в резюме. Он покажет, как грамотно объяснить, почему ваш прошлый опыт ценен, даже если он не связан с технологией напрямую. 💬 Пример: Бухгалтер, переходящий в тестирование, может подать себя как внимательного аналитика с высоким уровнем ответственности. Учитель, ставший фронтенд-разработчиком, — как человека, умеющего структурировать информацию и объяснять сложное простыми словами. Карьерный консультант поможет найти именно эту историю. 3. Если вы уже работаете, но хотите карьерного роста Часто специалисты годами остаются на одной позиции не потому, что не заслуживают повышения, а потому что не умеют заявить о себе. Консультант поможет проанализировать ваши достижения, выстроить аргументацию для повышения или подготовить стратегию перехода на новый уровень (Middle → Senior, Senior → Team Lead). 💡 Вы получите: чёткую стратегию развития, план по обучению и развитию soft skills, новое видение рынка и своих возможностей. 4. Если вы ищете работу после перерыва После декрета, релокации, переезда или профессионального выгорания сложно восстановить уверенность и понять, с чего начать.  Карьерный консультант поможет: обновить резюме и профили, определить актуальный уровень знаний, найти подходящие вакансии, вернуть уверенность в диалоге с рекрутерами. 🎯 Особенно это важно в IT, где технологии обновляются каждый год, и нужен взгляд со стороны, чтобы оценить, как вернуться в профессию. 5. Если вы не понимаете, чего хотите дальше Даже опытные специалисты порой теряются в вопросе «что дальше?».  Карьерный консультант не даст готового ответа, но поможет найти собственные ориентиры: понять, в чём ваша профессиональная ценность, какой формат работы вам подходит (офис, remote, фриланс), что вас действительно мотивирует. После консультации вы перестаёте действовать хаотично — и начинаете двигаться осознанно. Как карьерный консультант экономит ваше время и деньги На первый взгляд может показаться, что консультация — это дополнительные расходы. Но на деле — это инвестиция, которая возвращается в виде ускорения результата. 1. Экономия времени Консультант помогает избежать месяцев хаотичного поиска.Он уже знает, как работает рынок, где искать вакансии, как общаться с рекрутерами и что действительно ценится. Вместо того чтобы теряться в десятках сайтов, вы получаете чёткую дорожную карту. 💬 Например: Без стратегии можно рассылать резюме полгода и не получить ни одного ответа. С консультантом вы понимаете, какие позиции вам подходят, как адаптировать резюме под каждую — и получаете обратную связь уже через пару недель. 2. Экономия денег Карьерная консультация часто стоит меньше, чем один месяц безуспешного поиска. Но она помогает вам: получить высшую зарплату благодаря правильно построенной самопрезентации, избежать неправильного выбора (курсов, направлений, компаний), не тратить деньги на бессмысленные тренинги и сертификаты. 💡 Консультант подскажет, куда действительно стоит вложить ресурсы, а что не принесёт пользы именно вам. 3. Объективный взгляд со стороны Мы часто недооцениваем собственные достижения.  Карьерный консультант помогает оценить себя глазами работодателя, найти сильные стороны и убедительно их показать. В IT, где много похожих кандидатов, это критично — важно уметь выделиться. 4. Стратегический эффект Консультация — это не разовая услуга. Это стратегия. После неё вы понимаете, куда движетесь, какие шаги нужны для следующего уровня и как выстроить карьеру надолго. Это не просто поиск работы — это управление своим профессиональным развитием. 🔹 Вывод Карьерный консультант — это не «психолог по работе», а партнёр, который помогает увидеть свои сильные стороны и превратить опыт в возможности. Он не ищет вакансии за вас — он учит вас делать это осознанно и эффективно. Помощь консультанта нужна не только новичкам, но и тем, кто хочет роста, смены направления или ясности в будущем. Главное, что вы получаете после такой работы, — это чёткое понимание: кто вы, куда идёте и как туда попасть. Если посчитать, сколько времени, нервов и ресурсов тратят люди, ищущие работу без системы, — становится ясно: консультация карьерного эксперта — это не расход, а разумная инвестиция в себя. 💬 Помните: одна правильная консультация может сэкономить вам месяцы поиска — и привести к работе, которая действительно изменит жизнь.
Angular vs React - що крутіше?

Автор: Dominik T

Angular – технология с полным набором инструментов и к тому же с лучшими вариантами подхода к решению. Кому-то он подходит, а кому-то – нет. С другой стороны, React – небольшая технология, которая необходима вам только при создании какого-то приложения.  Обе технологии имеют свои достоинства и недостатки. Какая из них подойдёт вам больше? Попытаемся выяснить в этой статье. Технологии Вот основные технологии, о которых я буду говорить: Angular React Vue Кривая обучения Допустим, вы знаете JavaScript + ES2015 достаточно хорошо. Какую следующую технологию будет проще выучить? Vue – наилучший выбор, если вы ищите легкости в процессе изучения технологии. React – менее абстрактный, тем не менее, вам понадобится больше времени, чтобы изучить best practices, так как есть много вариантов написать одно и то же или ошибиться. А вот после изучения Angular вы также будете знать всё, что связанно с ним (typescript, MVC…). Angular - большая технология и учить придётся долго.   Масштабируемость Angular - легко масштабируемый благодаря своему дизайну, который так же хорош, как и мощная командная строка. React требует больше проверок и поэтому более масштабируемый, чем Vue и, я думаю, что частично это правда. Vue идёт сразу после React. Он хорош, однако ему не хватает лучших практик масштабируемости, из-за чего вы получаете очень запутанный код. Совместимость с другими технологиями React. Несмотря на то, что он не работает с DOM-деревом, он основан на чистой JavaScript логикe и популярeн настолько, что содeржит в сeбe альтeрнативы библиотeкам, работающим с DOM. Vue прекрасно работает как с ДОМ-деревом, так и с JavaScript. Второе место занимает лишь потому, что у него меньше библиотек, которые могли бы быть действительно полезны для обоих (как для ДОМ, так и для JavaScript). Angular мог бы быть лучше, если бы не typescript, который требует строгой типизации.   Инструменты React, Angular and Vue. Все перечисленные технологии имеют отличные CLI и работают с любым инструментом по типу webpack. Пользователи и популярность React точно стал наиболее популярным в 2016, когда его стали использовать англоговорящие frontend и full stack разработчики. React – хороший выбор для мобильных и даже десктопных приложений на JavaScript. Vue и Angular. Vue – потому что он очень быстро развивается. Angular – потому что он создан Google, а его предшественник Angular 1 был когда-то очень популярен. Востребованность React и Angular. В зависимости от того, где вы находитесь, зависит, какая технология будет доминировать. Angular больше используют в Азии, особенно в Индии, а React – в англоязычных странах, таких как US и UK. Vue менее популярен и не поддерживается большими компаниями, поэтому остальные отдают предпочтение Angular и React. Производительность По этому параметру не ставлю ранги, так как все они сопоставимы. Возможно, React станет немного быстрее, когда полностью будет поддерживать Fiber, но сейчас существует только бета-версия. Перспективы для компаний Angular имеет open source лицензию. Он поддерживается Google, что, возможно, делает его лучшим выбором для компании, и разница между проектами Angular невелика.    React был бы очень хорошим выбором, если бы не лицензия с патентом. Однако, существуют бесплатные альтернативы, которые работают также, как и React. Например, Infernojs или мой любимый rax. Vue – не дитя большой компании, это очень успешный сторонний проект одного человека. Компании часто игнорируют его, хотя, возможно, и не стоило бы. Вне сети Рендеринг –  как раз то, о чем можно много говорить. Все технологии способны осуществлять его, но некоторые справляются лучше, чем другие. React – лучший выбор благодаря react native, alibaba rax, reactWindows и next.js. Vue подойдёт vue-разработчикам, которые предпочитают разработку под мобильные устройства. Спасибо за это alibaba weex. У Angular есть ionic 2 и nativescript, но эти технологии не позволяют достичь производительности react native. Простота и длина кода Vue имеет предварительно встроенные привязки данных и MVC модель, его легче настроить, нежели Angular и React. React пугающе прост для понимания, но нужно реально много времени, чтобы настроить react project. Angular совсем непростой. Эта сложность вызывает много путаницы 3rd party libraries и синтаксиса. Время разработки Vue, безусловно, лёгок в установке и не требует много изменений или синтаксиса, за что его и любят. Он был создан для борьбы с утомительной работой. React настраивается дольше, но после начала работы над приложением будет легко добавлять новые фичи. Angular хоть и является весьма конкурентоспособным, но количество ненужного синтаксиса, который он требует для работы простых вещей, отбрасывает его на последнее место. Размер Vue - наименьший и много в себе содержит. Вы можете подумать, что это не имеет значения, но если речь пойдёт о дешёвом Android 3G смартфоне, то вы уже не будете так уверены. React - больше чем Vue, но все же меньше, чем Angular. Angular - больше всех предыдущих, что вызывает увеличение времени загрузки и проблемы производительности на мобильных устройствах. Будущее Вот лично мои прогнозы для этих технологий на 2017 год: Vue будет приобретать популярность и всё большее количество разработчиков переключится на него. Вполне вероятно, что это может заставить крупные компании продвигать и поощрять Vue. Команда React представит Fiber  и сделает React быстрее, чем Vue и Angular. Создатели Angular попытаются привлечь больше людей, но, скорее всего, им это не удастся. Так что же лучше для вас? Подводя итог, можно сказать, что нет идеального решения, и никогда не будет. Тем не менее, вот полезные советы, которые помогут вам сделать выбор: Если вы разработчик «до мозга костей», тогда попробуйте все и выбирайте между Vue или React, доверяйте своему чувству. Если вы новичок в разработке, выбирайте или Vue, или React. Angular подойдёт компаниям с большими командами. Google -> Angular. Если любите простоту, тогда выбирайте Vue. Если нравится использовать шаблоны, тогда выбор стоит между Vue или Angular. Если предпочитаете JavaScript и JSX, попробуйте поработать с каждой технологией. Если вы работаете с Typescript, используйте Angular или Vue. Выбирайте подходящую технологию поскорее, не стоит пребывать в неопределённости. Я сомневался несколько месяцев, и это было невесело. Я решил пожертвовать популярностью и выбрал то, что считал для себя наилучшим вариантом – Vue. Ютубер funfunfunction сказал лучшее, что я когда-либо слышал про JS framework fatigue: «Существует точка в вашей карьере программиста, когда вы понимаете, что это не лучший инструмент». Здесь нет правильного или неправильного выбора, его просто необходимо сделать. Так что, продолжайте учиться и исследовать. Все будет учить Вас чему-то новому. Оригинал статьи на английском языке. 
Як не здатися і все ж таки стати програмістом?

Автор: Дмитро Хорошилов

Вы день и ночь в поте лица изучаете синтаксис, фреймворки, решаете задачи, посещаете курсы, смотрите видеоуроки, читаете книги, но все никак не можете сдвинуться с мертвой точки — наконец-то начать программировать самостоятельно или найти первую работу. Вы раз за разом открывает IDE, чтобы начать писать код, но потом откладываете это занятие. Потому что в данный момент вам меньше всего хочется писать код. И вы по пятому кругу читаете посты на фейсбуке, смотрите видео с котиками и глупые гифки. Вам начинает казаться, что изучать программирование - это не ваше. Вы в очередной раз открываете важную и сложную книгу по программированию, но, как бы вы не пытались сосредоточиться, информация не откладывается в памяти. Более того, постоянно приходится по несколько раз перечитывать предложение за предложением, чтобы хоть немного понять, о чем речь. Знакомо? Иногда, особенно в процессе изучения чего-то нового и сложного, ваш мозг начинает играть с вами в каверзные игры. Он всеми силами пытается сопротивляться обучению, вгоняя вас в состояние прокрастинации и ступора. Самым неверным в сложившейся ситуации будет сдаться и отдаться во власть отчаяния. В этом материале мы поговорим с вами, как справиться с прокрастинацией, как заставить мозг учиться и как в конечном итоге получить желаемую работу, влиться в среду профессиональных разработчиков. Что такое прокрастинация? На самом деле, прокрастинация — это привычка. Вы шаблонно реагируете на какой-то раздражитель, когда вам следует заниматься тем, чем вы не хотите. Как следствие, вы пытаетесь отложить «нелюбимое» дело в долгий ящик и придумываете какие угодно дела взамен, лишь бы не делать что-то важное. Но то, что приносит удовольствие на короткое время, не всегда полезно в долгосрочной перспективе. Благо, с прокрастинацией можно бороться, как и с любой другой плохой привычкой. Как бороться с прокрастинацией? Вот несколько советов, что стоит делать и на что необходимо обращаться внимание: - Не тратьте силу воли на борьбу с прокрастинацией. Потому что это настолько же безрезультатно, как и бороться с пятиголовым драконом без специального оружия. Вы будете отрезать голову и усилием воли заставлять себя учиться, то есть тратить много сил, а голова будет опять вырастать. В итоге, вы в какой-то момент просто бросите эту затею и уйдете с поля битвы. - Не оставляйте все на последнюю минуту. Представьте спортстмена, который начинает тренироваться за два дня до забега. Как думаете, как он будет себя чувствовать и  в каком состоянии будут его мышцы, если он будет заниматься два дня по 10 часов каждый, вместо 2-х месяцев по часу? Как думаете, после такого у него будут шансы пробежать марафон? Очевидно, что нет. Как и с мышцами, мозг необходимо тренировать постепенно, понемногу, но постоянно. Лучше учитесь по 20 минут, но на протяжении 10 дней, чем по 10 часов, но на протяжении двух дней. - Делайте перерывы во время учебы. Да, позволяйте себе отдыхать и хорошо высыпаться. Не зубрите дни и ночи на пролет. Подолгу сидя над учебой, вы не усвоите больше. Благодаря небольшим передышкам, наш мозг получает возможность «переварить» полученную информацию. - Не откладывайте на потом. Чем на дольше откладываем, тем больше всего нам надо изучить. А значит, тем страшнее и больнее нам этим заняться. Парадоксально, но факт, чем лучше вы овладеваете каким-то навыком, тем больше вам нравится им заниматься. - «Коллективная мудрость». Не бойтесь обращаться за советом к коллегам, другим студентам. Если вы занимаетесь в одиночку, найдите обязательно себе ментора, к которому сможете обращаться за советом в моменты ступора. Если у вас нет возможности найти наставника, сходите на курсы. Старайтесь больше задавать вопросов, даже если они вам кажутся чрезвычайно глупыми. - Ориентируйтесь на процесс, а не на результат. Очень часто мы зацикливаемся на результате. И если он не достигнут, нас посещают мысли, отзывающиеся болью в мозгу, провоцируя нас прокрастинировать. Например, мы думаем: чтобы найти свою первую работу, так много еще надо всего выучить. Отпустите эти мысли, лучше сосредоточьтесь на процессе: я учу, я пишу, я делаю. И вы не заметите, как в скором времени скажете: я работаю. В этой части мы поговорили с вами о том, как лучше учиться, как бороться с ужасной и неукротимой прокрастинацией. Когда прокрастинация побеждена Теперь я бы хотел дать несколько рекомендаций о том, что делать, когда вы победите своего змея. Как только вы научитесь держать себя под контролем, ваши дела заметно пойдут вверх. Вы будете все больше получать удовольствия от процесса получения и практического применения новых знаний. В какой-то момент вам покажется, что вы готовы начать работать. Чтобы опять не попасться в капкан прокрастинации, поставьте себе цель и придумайте мотивацию. Например, цель: я найду первую работу за 3 месяца. Обязательно спланируйте, какие шаги вы будете предпринимать для того, чтобы найти работу: - напишу хорошее резюме на двух языках, - буду отслеживать вакансии и реагировать на них, - составлю список компаний, которые подходят мне по профилю — разошлю им резюме с мотивационным письмом, - начну готовиться к собеседованиям: подтягивать теоретические знания, подготовлю свое первое программистское «портфолио». А вот мотивация — это очень индивидуально, но обязательно важно. Найдите что-то свое: деньги, отдых, друзья, любимые, покупки и т.д. Надеюсь, теперь, когда вы знаете, что такое прокрастинация и как с ней бороться, вам станет намного проще двигаться по намеченному вами пути и не сбиваться с него. Главное, помните, что отдых тоже полезен. Борясь со своими чертиками, не забывайте хорошо высыпаться (это самое главное условие для хорошего усваивания знаний), отвлекаться, например, заниматься спортом, хорошо и вкусно питаться. Я уверен, что следуя этим полезным советам, вы очень скоро добьетесь успеха!
Відзнач у календарі WEGAME 4.0 – головна подія граючої України!

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

Геймер, гик, косплеер, разработчик? Любишь веселый движ? Не пропусти: 21–22 апреля в павильоне №1 НК «Экспоцентр Украины» (ВДНХ) для тебя и таких, как ты, состоится крутое событие – фестиваль WEGAME 4.0! Это зрелищно, интересно и просто big fun. Попробуй – жизнь становится лучше, если в ней чаще появляются косплей, игры и классные люди. Регистрация уже открыта Зона киберспорта На фестивале традиционно пройдут киберспортивные соревнования для профессионалов и любителей: турниры по CS:GO и Dota 2, состязания по FIFA 18. Помимо бурлящих эмоций и удовольствия от сражений с достойными соперниками, лучшие игроки получат денежные призы и ценные подарки.  Косплей-шоу Уникальное по своей атмосфере косплей-шоу в этом году разделено на 3 категории: «Фильмы, мультфильмы, сериалы», «Комиксы и художественная литература», «Видеоигры». Определять лучшие выступления будут авторитетные и беспристрастные судьи, хорошо известные косплей-сообществу страны. Трое первых членов жюри уже известны. Марианна Де Морт — косплеер, режиссер, телеведущая и художница. Марианна работала ведущей телепрограммы «Игронавты», выступала в качестве модели на международном фестивале «Дети Ночи: Чорна Рада 2010» и ежегодном вампирском фестивале VAMPIRE DECADENCE. Ее фотографии украшают музыкальные сборники начинающих групп и обложку журнала Gothica. Джулия Мельник – гример, косплеер, художница и участница телевизионных проектов. Джулия увлеклась сложным гримом и создала первый образ для американского конкурса еще в 2014 году, а в 2016-м выиграла грант на обучение в лучшей голливудской школе грима Cinema Makeup School. Получив престижное американское образование, девушка вернулась в Украину и продолжает работать над своими проектами. Мария «Fenix Fatalist» Карпенко – эпатажный косплеер, создатель лаборатории костюмов FD Studio, частный предприниматель. Занимается косплеем уже 10 лет, успев за это время воплотить более тридцати ярких образов. Превратив косплей в работу, Мария рассказывает о своем опыте другим художникам, стремясь создать сильное и открытое комьюнити. Внимание, плюшка: кроме возможности продемонстрировать свой образ и выиграть приз, участникам предоставляется бесплатный вход на фестиваль, а посетители в косплей-костюмах получат скидку 50% на билеты! Открытый лекторий Лекторий – это скука? Привычные спикеры так занудны и начитаны, что дужки очков уже не отсоединить от их голов без хирургического вмешательства... Но WEGAME ломает стереотипы! На протяжении двух дней феста с тобой будут делиться опытом успешные IT-стартапы и популярные косплееры, организаторы кибертурниров, разработчики, создающие софт и развлекательный контент. Они современные, крутые, они такие, как ты, и расскажут именно то, что тебе интересно.  Имена и темы первых участников лектория WEGAME 4.0: Мирослава Валькевич – комьюнити-менеджер в Esports.com. Тема: «Чем полезен киберспорт и почему важно играть в компьютерные игры»; Глеб Алехин – разработчик игр, автор образовательного проекта BUSINESS GAMER. Тема: «Настольные игры в эпоху виртуальной реальности»; Максим Безуглый – CEO в Attracti. Тема: «Сильные и слабые стороны в производстве ААА и инди-игр»; Влад Плотников – композитор, продюсер и основатель компании VP Production. Тема: «Игровая музыка: как это сделано?»; Святослав Холод – геймдизайнер в Zadzen. Тема: «Создание мотивации для игрока»; Александр Шаповалов – арт-директор в IDA GAMES. Тема: «Как уничтожить свою игровую компанию»; Александра Радченко – руководитель отдела исследований компании Playtestix. Тема: «PUBG: жизнь до и после релиза, разбор полетов». Отслеживай обновления программы лектория в разделе «Посетителям» на сайте фестиваля. Церемония награждения Отличный шанс для студий, которые хотят ознакомить аудиторию со своим продуктом и собрать максимально объективный feedback, – церемония награждения фестиваля WEGAME для профессиональных и независимых разработчиков видеоигр. Среди них будут как крупные компании, так и инди-проекты. Экспертная комиссия и посетители фестиваля выберут победителей в 10 номинациях. Выставочная зона Никакого унылого кладбища стендов! Когда на выставке собраны самые инновационные и креативные решения, когда можно поиграть в демоверсии игр и опробовать новейшие гаджеты, о которых никто еще даже не слышал, – это зашкал эмоций! Залогом успеха феста традиционно служит международная ивент-компания Smile-Expo – лидер в проведении самых трендовых мероприятий. WEGAME 4.0 имеет все шансы стать самым ярким событием твоей весны. Зарегистрируйся, чтобы впечатления не прошли мимо!
П'ята ювілейна міжнародна конференція MobileOptimized'2015

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

13-15 июля в Минске в усадьбе Ваньковичей состоится пятая юбилейная международная конференция MobileOptimized’2015 – крупнейшее ежегодное событие в Восточной Европе, посвященное мобильной разработке. Конференция пройдет в будние дни в послеобеденном формате, с 15.00, что позволяет совместить обучение с рабочим процессом или туризмом и отдыхом. В этом году конференция MobileOptimized разбита на следующие тематические дни: Technology Day, Business Day и Gamedev Day, которые включат в себя все, что вы хотели знать о мобильной разработке, актуальных технологиях и тенденциях развития mobile-направления в IT-сфере. Кейноуты и докладчики события – ведущие разработчики, профессионалы и энтузиасты своей сферы деятельности, представители как крупных компаний, так и успешных стартапов, в этом году докладчики выступят от имени CocoaPods, Realm.io, Xebia, Spotify, Game Insight, Microsoft, Twitter, Android Academy, а также гордость Беларуси Wargaming, Viber, Apalon, Fitbit, Sport.com. Мы приглашаем вас посетить Business Day – второй день конференции, который включит в себя несколько тематических блоков с практическими сессиями по следующим направлениям: Поток Marketing&Monetization, в котором докладчики, как освоившие миллионы долларов на рекламу, так и успешно запустившие приложения без бюджетов, расскажут об инструментах мобильного маркетинга, о том, как не попасть в сети рекламных сетей, как привлечь миллионы пользователей через Facebook и все о запуске приложения в AppStore и Google Play. Хэдлайнерами блока Management of mobile teams станут опытные менеджеры мобильной разработки из нашумевшего JunoLab, легендарного Wargaming и популярной компании Apalon: Алексей Минкевич, Алексей Алексеев и Денис Денисюк – построение и перестроение мобильной команды, ее эффективность и мотивация из уст лучших. В Product management блоке своим опытом в области управления продуктом поделятся представители компаний Wargaming, Яндекс и Fitbit: Ярополк Раш, Михаил Томшинский и Андрей Точилин, все об упровлении продуктами. The Startup Fails – специальный поток, в котором ныне успешные стартаперы расскажут о своих ошибках и уроках, которые они из них вынесли. Отрепетированные Success Story – это, конечно, неплохо, но в этот день мы сфокусируемся на том, чтобы заглянуть на бэкстейдж и таки выяснить всю правду о создании, построении и неудачах своего продукта. В рамках Business Keynotes выступят видные представители инвестиционого сообщества, владельцы компаний и представители известных стартапов, представители глобальных корпораций, которые расскажут о построении и развитии бизнеса, среди них Игорь Мацанюк, Крис Ховард, Степан Данилов. Событие пройдет 14 июля с 14:30 до 22:00, включая Business Networking Party для всех участников этого дня. Стоимость участия составит 1 490 000. Купить билет, зарегистрироваться, более подробно программу события и список докладчиков можно узнать на сайте мероприятия mo.dev.by. Специальным мероприятием в рамках Business Day в первой половине дня пройдёт StartupsMOrning  – знакомство с топ-15 молодыми и перспективными белорусскими мобильными стартапами и Startup Expo. Участие в #StartupsMOrning – это уникальная возможность познакомиться с основателями стартапов, представить свой продукт нашим гостям из ближнего и дальнего зарубежья: приглашенным инвесторам, фаундерам успешных стартапов, экспертам, а также журналистам. В роли экспертов мероприятие посетят Дмитрий Клевжиц (экс-директор Национального Агентства Инвестиций и Приватизации), Игорь Мацанюк (основатель фонда imi.vc, инвестор компании Game Insight), Алексендр Бородич (частный инвестор) и другие почетные гости. Для подачи заявки и последующего участия в конкурсе заполните, пожалуйста, форму. Мы заинтересованы в развитии и поддержке ваших начинаний, поэтому делаем все необходимое для получения вами опыта в профессиональных питчах, готовы предоставить фидбек о вашем проекте от экспертов, приглашаем большое количество журналистов для обзора проектов. Для тех участников, кто не пройдет конкурсный отбор в топ-15 для питчинга своего проекта мы предлагаем бесплатно выставляться в формате Expo. Ивент пройдет 14 июля с 12:00 до 14:00. Стоимость участия для стартапов совершенно бесплатно, а для молодежи заинтересованной в этой сфере всего 100.000. Также для стартапов, принявших участие в питчах или экспо действует специальная цена на посещение бизнес дня конференции Startup Ticket – 1 690 000 для 2 представителей стартапа, как дополнительная мотивация показать свой проект в формате pitch или expo. Организаторами MobileOptimized'2015 выступают портал dev.by, команда независимой ивент-площадки SPACE, технологические сообщества Беларуси: CocoaHeads Belarus, GDG Minsk, команда стартап-энтузиастов #BelarusMafia, сообщество разработчиков игр Белариси. Партнерами дней выступили компании-лидеры в разработке программного обеспечения, игр и мобильных приложений: Viber, Apalon, Wargaming. Также конференцию поддержали компании Ciklum, Fitbit, Oxagile, Yandex, Specific Group, ISSoft и другие компании. Полное расписание всех дней мероприятия доступно на mo.dev.by. Дополнительная информация доступна в блоге МО на dev.by, в твиттере по хеш-тегу #MOConf или в Facebook.
Як стати Java розробником у 2021

Автор: Максим Федосов

<p>В вебинаре мы будем говорить о том, как начать&nbsp; свой путь в качестве Java разработчика - от новичка без опыта в программировании до уровня специалиста, востребованного на рынке.</p> <p>В вебинаре будут рассмотрены две стороны:</p> <ul> <li><strong>Что учить</strong> &ndash; автор поделится своим виденьем того, что нужно учить в первую очередь как базу, что нужно осваивать на этапе поиска первой работы, и что нужно доучивать, когда специалист уже работает ( на примере Java Enterprise стэка).</li> <li><strong>Как искать работу</strong> - со стороны построения карьеры речь пойдет о том, какие пути можно выбрать для построения карьеры, о рынке с точки зрения работодателя, курсов, соискателей. Какой проект лучше выбрать, как часто менять работу, как развивать свою карьеру.</li> </ul> <p>Весь вебинар будет разделен на 2 части - до первой работы и во время работы. В результате у начинающих специалистов появится конкретный план действий для того, чтобы начать карьеру, а у работающих специалистов появится понимание того, как расти дальше.</p> <p><strong>План вебинара:</strong></p> <p>1) Знакомство, немного о себе и своем пути в IT сфере.</p> <p><strong>2) Что нужно учить начинающему Java</strong><strong> разработчику</strong></p> <ul> <li>Подготовка к смене или обретению профессии. Настройка рабочего окружения, английский язык, выбор стратегии, университет, курсы, самостоятельное обучение, ментор, книги, практика.</li> <li>От общего к частному. Стандартная схема работы приложений в энтерпрайз.</li> <li>Hello World application. Один из ключевых шагов для изучения новых технологий.</li> <li>Базовый синтаксис. Примитивные переменные, операторы, циклы, условия и все с чем мы работаем примерно с 1950 года.</li> <li>Объектно-ориентированное программирование (ООП). Основные принципы ООП (наследование, полиморфизм, инкапсуляция, абстракция) их проявления в коде, класс Object и его методы, понятия &ldquo;класс&rdquo;, &ldquo;конструктор&rdquo;, &ldquo;метод&rdquo;, &ldquo;объект&rdquo;, сигнатура метода.&nbsp;</li> <li>Объекты, хранящие значение. Класс String. Его методы, неизменяемость, String pool. Другие обертки над примитивами.</li> <li>Множества в Java. Arrays (Массивы) Collections (Коллекции) и Maps (Карты). Иерархия Collection, иерархия Map. Множества, которые используются постоянно и о которых спрашивают на собеседованиях и те, о существовании которых просто достаточно знать . Отличия ArrayList от LinkedList. HashMap от HashSet. Array от ArrayList. Алгоритмы, Дженерики, деревья.</li> <li>Обработка исключений. Иерархия исключений, проверяемые и непроверяемые исключения. Error и Exception.</li> <li>Продвинутые темы, знакомство. Функциональное программирование, лямбда выражения, функциональные интерфейсы, стримы, IO (Input Output(ввод и вывод данных)), Serialization, Multithreading, Concurrency.</li> <li>Базы данных. Реляционные и NoSQL базы данных, язык запросов SQL, Joinы и их типы, Postgres и другие базы данных, связи между таблицами.</li> <li>Repository уровень. Взаимодействие Объектно-ориентированной модели с реляционной. JDBC, JPA + Hiberante, JPQL/HQL, Spring Data.</li> <li>Spring framework. Inversion of Control и Dependency injection. Reflection. Аннотации: Bean, Controller, Service, Component, Repository, Configuration и другие. Spring Security.</li> </ul> <p><strong>3) Наработка практики программирования. Портфолио</strong></p> <ul> <li>Pet project с примером. Spring, JPA + HIbernate, Controller + Thymeleaf/RestController, Postgres. MVC архитектура.</li> <li>Портфолио. Spring Boot, Spring Data, Jira, Git branches и команда, code review, обсуждения архитектуры, отдельная идея.</li> </ul> <p><strong>4) Подготовка к поиску работы и дальнейшая карьера</strong></p> <ul> <li>CV, LinkedIn аккаунт, djinny.</li> <li>Подготовка к интервью с HR. Английский, вопросы, ответы, тестовые задания, софт скиллы.</li> <li>Подготовка к техническому интервью. Mock собеседования, материалы. SOLID, KISS, DRY и прочие важные для собеседования вопросы.</li> <li>Поиск работы и прохождение собеседований. Активность в LinkedIn, Djinny, Dou и через знакомых в компаниях.</li> <li>Первые 3 месяца на проекте. Чего обычно ждут от Trainee или Junior. Как продолжать расти.</li> <li>Первый год. Книги, которые нужно прочитать, продвинутые темы, в которые нужно вникнуть, GOF паттерны, сертификации.</li> <li>Второй год. Микро-сервисы, Облачные технологии, другие технологии.</li> </ul> <p><strong>Целевая аудитория:</strong></p> <p>Данный вебинар будет интересен людям, думающим о том, чтобы стать Java разработчиком, начинающим специалистам, которые уже сделали свой выбор и двигаются к поиску первой работы, а также trainee и junior разработчикам, которые уже работают на своих первых проектах и думают о том, куда двигаться дальше.</p>
Пишемо гру "Dendy Tanks" на Java з нуля.

Автор: Бондаренко Андрій

<p>Мы подготовили для вас увлекательный онлайн тренинг по написанию графической игры &ldquo;Танки&rdquo;, который поможет легко и быстро познакомиться с практической стороной разработки на Java. Ноль теории, только практика. Если ты никогда не программировал &ndash; не проблема! Смотри и делай!<br bis_size="{&quot;x&quot;:813,&quot;y&quot;:42,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:1227,&quot;abs_y&quot;:756}" /> &nbsp;<br bis_size="{&quot;x&quot;:23,&quot;y&quot;:62,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:437,&quot;abs_y&quot;:776}" /> <strong bis_size="{&quot;x&quot;:20,&quot;y&quot;:82,&quot;w&quot;:158,&quot;h&quot;:15,&quot;abs_x&quot;:434,&quot;abs_y&quot;:796}">Кому это будет полезно:</strong><br bis_size="{&quot;x&quot;:178,&quot;y&quot;:82,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:592,&quot;abs_y&quot;:796}" /> &nbsp;</p> <ul bis_size="{&quot;x&quot;:20,&quot;y&quot;:133,&quot;w&quot;:1019,&quot;h&quot;:60,&quot;abs_x&quot;:434,&quot;abs_y&quot;:847}"> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:133,&quot;w&quot;:939,&quot;h&quot;:40,&quot;abs_x&quot;:474,&quot;abs_y&quot;:847}" style="text-align: justify;"><strong bis_size="{&quot;x&quot;:60,&quot;y&quot;:135,&quot;w&quot;:64,&quot;h&quot;:15,&quot;abs_x&quot;:474,&quot;abs_y&quot;:849}">Новичкам</strong>. Отсутствие опыта в программировании не должно вас останавливать. Мы предоставляем вам шанс сделать свою первую программу на Java и получить опыт практического применения данного языка программирования в создании настоящей компьютерной игры.</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:173,&quot;w&quot;:939,&quot;h&quot;:20,&quot;abs_x&quot;:474,&quot;abs_y&quot;:887}" style="text-align: justify;"><strong bis_size="{&quot;x&quot;:60,&quot;y&quot;:175,&quot;w&quot;:290,&quot;h&quot;:15,&quot;abs_x&quot;:474,&quot;abs_y&quot;:889}">Начинающим Java разработчикам без опыта</strong>. Вы сможете углубить и применить на практике свои знания языка Java под руководством тренера.</li> </ul> <p>&nbsp;<br bis_size="{&quot;x&quot;:23,&quot;y&quot;:208,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:437,&quot;abs_y&quot;:922}" /> <strong bis_size="{&quot;x&quot;:20,&quot;y&quot;:228,&quot;w&quot;:130,&quot;h&quot;:15,&quot;abs_x&quot;:434,&quot;abs_y&quot;:942}">Чему вы научитесь:</strong></p> <ul bis_size="{&quot;x&quot;:20,&quot;y&quot;:259,&quot;w&quot;:1019,&quot;h&quot;:80,&quot;abs_x&quot;:434,&quot;abs_y&quot;:973}"> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:259,&quot;w&quot;:939,&quot;h&quot;:20,&quot;abs_x&quot;:474,&quot;abs_y&quot;:973}">Писать простые программы и подпрограммы с использованием языка Java</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:279,&quot;w&quot;:939,&quot;h&quot;:20,&quot;abs_x&quot;:474,&quot;abs_y&quot;:993}">Работать с массивами данных</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:299,&quot;w&quot;:939,&quot;h&quot;:20,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1013}">Использовать типы данных и классы Java</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:319,&quot;w&quot;:939,&quot;h&quot;:20,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1033}" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 12pt;">Применять все базовые навыки (переменные, условные конструкции, циклы, методы) на практике</li> </ul> <p><strong bis_size="{&quot;x&quot;:20,&quot;y&quot;:357,&quot;w&quot;:111,&quot;h&quot;:15,&quot;abs_x&quot;:434,&quot;abs_y&quot;:1071}">Формат тренинга</strong><br bis_size="{&quot;x&quot;:131,&quot;y&quot;:357,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:545,&quot;abs_y&quot;:1071}" /> Вас ждёт прямой эфир на YouTube с Андреем Бондаренко в течение 3-х часов, общение в чате во время эфира и в специальном телеграм-канале вне эфира. Все примеры и исходные данные также будут в телеграм-канале, к которому вы сможете присоединиться после регистрации.<br bis_size="{&quot;x&quot;:758,&quot;y&quot;:397,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:1172,&quot;abs_y&quot;:1111}" /> &nbsp;<br bis_size="{&quot;x&quot;:23,&quot;y&quot;:417,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:437,&quot;abs_y&quot;:1131}" /> <strong bis_size="{&quot;x&quot;:20,&quot;y&quot;:437,&quot;w&quot;:137,&quot;h&quot;:15,&quot;abs_x&quot;:434,&quot;abs_y&quot;:1151}">Программа тренинга:</strong></p> <ol bis_size="{&quot;x&quot;:20,&quot;y&quot;:468,&quot;w&quot;:1019,&quot;h&quot;:133,&quot;abs_x&quot;:434,&quot;abs_y&quot;:1182}"> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:468,&quot;w&quot;:939,&quot;h&quot;:19,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1182}" style="text-align: justify; line-height: 19.5px;">Создание карты поля боя</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:487,&quot;w&quot;:939,&quot;h&quot;:19,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1201}" style="text-align: justify; line-height: 19.5px;">Работа над передвижением танка</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:506,&quot;w&quot;:939,&quot;h&quot;:19,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1220}" style="text-align: justify; line-height: 19.5px;">Реализация стрельбы</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:525,&quot;w&quot;:939,&quot;h&quot;:19,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1239}" style="text-align: justify; line-height: 19.5px;">Обучение танка двигаться в указанный квадрант</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:544,&quot;w&quot;:939,&quot;h&quot;:19,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1258}" style="text-align: justify; line-height: 19.5px;">Добавление танка-противника</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:563,&quot;w&quot;:939,&quot;h&quot;:19,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1277}" style="text-align: justify; line-height: 19.5px;">Итог: танк проходит всё поле боя и чистит его</li> <li bis_size="{&quot;x&quot;:60,&quot;y&quot;:582,&quot;w&quot;:939,&quot;h&quot;:19,&quot;abs_x&quot;:474,&quot;abs_y&quot;:1296}" style="margin-bottom: 12pt; text-align: justify; line-height: 19.5px;">Ответы на вопросы. Куда развиваться дальше?</li> </ol> <p><strong bis_size="{&quot;x&quot;:20,&quot;y&quot;:619,&quot;w&quot;:55,&quot;h&quot;:15,&quot;abs_x&quot;:434,&quot;abs_y&quot;:1333}">Подарки</strong><br bis_size="{&quot;x&quot;:75,&quot;y&quot;:619,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:489,&quot;abs_y&quot;:1333}" /> 10 самых активных участников тренинга получат от CyberBionic Systematics Подарочные сертификаты на обучение стоимостью 1000 грн.<br bis_size="{&quot;x&quot;:855,&quot;y&quot;:639,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:1269,&quot;abs_y&quot;:1353}" /> &nbsp;<br bis_size="{&quot;x&quot;:23,&quot;y&quot;:659,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:437,&quot;abs_y&quot;:1373}" /> <strong bis_size="{&quot;x&quot;:20,&quot;y&quot;:679,&quot;w&quot;:164,&quot;h&quot;:15,&quot;abs_x&quot;:434,&quot;abs_y&quot;:1393}">Учись вместе с друзьями</strong><br bis_size="{&quot;x&quot;:184,&quot;y&quot;:679,&quot;w&quot;:0,&quot;h&quot;:15,&quot;abs_x&quot;:598,&quot;abs_y&quot;:1393}" /> Регистрируйся на онлайн интенсив и поделись новостью с друзьями. Вместе учиться намного интереснее!</p>
Введення в розробку програм під iOS. Частина 2.

Автор: Volodymyr Bozhek

                                                       Здравствуйте дорогие читатели. В этом уроке мы добавим форму списка товаров на складе. Разберем класс “UITableViewController” и как с ним работать. Откройте проект Warehouse из предыдущего урока. Необходимо добавить в наш проект две View. На одной будут содержаться все товары, которые есть на складе. На второй форма редактирования товара. Для реализации View со списком всех товаров мы будем использовать готовый табличный класс контроллера “UITableViewController”. Данный класс уже реализовал все необходимые протоколы внутри себя для уверенной работы табличного контроллера. Есть и другой вариант, который мы не будем рассматривать в этом уроке, это сделать свой класс “UITableViewController”, унаследовшись от базового класса “UIViewController” и реализовав протоколы “UITableViewDelegate” и “UITableViewDatasource”. В панели навигатора откройте модуль “Main.storyboard”. Найдите в библиотеке компонентов, компонент “Table View Controller” и перетяните в пустую область дизайнера рядом с View входа в систему. В панели навигатора, нажмите правой кнопкой мыши на папке “Warehouse” и в контекстном меню выберите пункт “New File...”. Откроется диалоговое окно добавления новых модулей в проект. Найдите в нем модуль “Swift File”, выделите его и нажмите кнопку “Next”. Появится диалоговое окно задания названия добавляемого модуля. В поле “Save As” введите “SuppliesViewController.swift”, нажмите кнопку “Create”.                                                                                                           Откройте модуль “SuppliesViewController.swift”, вы увидите в нем только “import Foundation”, это добавление пространства имен на базовую библиотеку классов Swift (аналог в C#, пространство имен “System”). Удалите эту строку. Добавьте в этот модуль следующий код: Разберем это код построчно. На 9 строке, мы подключили пространство имен “UIKit” в нем содержатся классы для взаимодействия с компонентами пользовательского интерфейса в iOS. На 11 строке, мы объявили класс с именем “SuppliesViewController”, который наследуется от класса “UITableViewController”. На 12 строке, мы объявили строковый массив с именем “supplies”, в этом массиве содержится статический список товаров (чуть позже мы заменим его на модель). На 17 строке, мы переопределили метод “viewDidLoad” класса “UITableViewController”, данный метод вызывается когда View начинает загрузку. В этом методе необходимо делать предварительную инициализацию компонентов, какими либо данными. На 18 строке, мы вызываем базовый метод “viewDidLoad” класса “UITableViewController”, с помощью ключего слова “super” (аналог в C#, ключевое слово “base”). Начиная с 21 строки и по 33 строку, мы переопределяем поведение базового контроллера “UITableViewController”, для отображения данных в нем. Более конкретно, мы переопределяем реализацию протокола “UITableViewDataSource”. На 21 строке переопределенный метод “numberOfSections”, возвращает количество секций в нашем табличном представлении. Секции это разделители между сгруппированными наборами ячеек в табличном представлении. У нас будет одна секция. На 25 строке переопределенный метод “numberOfRowsInSection”, возвращает количество ячеек в секции. Секция у нас одна, поэтому возвращаем количество товаров, которые будут в этой секции. На 29 строке переопределенный метод “cellForRowAt indexPath”, возвращает представление ячейки таблицы. На 30 строке мы создаем экземпляр типа “UITableViewCell” с повторно используемым идентификатором “сell”, первый параметр в инициализаторе это стиль ячейки, второй параметр это идентификатор этой ячейки в табличном представлении. Данный метод вызывается столько раз, сколько ячеек мы добавляем в нашу таблицу. Каждый вызов данного метода содержит в аргументе “indexPath” текущую позицию ячейки относительно таблицы. На 31 строке мы обращаемся к компоненту “Label”, расположенному внутри ячейки, чтобы задать текст, для этого используем свойство “textLabel”, затем от этого свойства уже обращаемся к свойству “text”, чтобы задать текст компонента “Label”. Текст мы извлекаем из массива товаров “supplies” через subscript (по индексу). Чтобы получить текущий номер строки, необходимо обратиться к аргументу “indexPath” и обратиться к свойству “row”. На 32 строке мы возвращаем созданную ячейку. Эта ячейка затем внутренними механизмами будет добавлена в табличное представление. Откройте модуль “Main.storyboard”, выделите добавленный ранее “Table View Controller”. В панели свойств, откройте вкладку “Show the identity inspector”, найдите поле “Class”, введите значение “SuppliesViewController”. Через это свойство мы подвязываем класс контроллера “SuppliesViewController” к нашему табличному представлению в дизайнере. Найдите свойство “Storyboard ID”, задайте значение в нем “SuppliesViewController”. Данное свойство содержит уникальный идентификатор представления, этот идентификатор будет позднее использоваться нами при поиске табличного представления программно в экземпляре “Storyboard”. Теперь нам необходимо добавить в обработчик события на нажатие кнопки “Вход”, переход на табличное представление. Откройте модуль “ViewController”. Добавьте код в метод “loginButtonTapped”, как показано ниже (смотреть выделенный код): Разберем добавленный код: На 23 строке, правым операндом мы обращаемся к свойству “storyboard” контроллера “ViewController”, в этом свойстве содержится экземпляр модуля “Main.storyboard”. Вызов метода “instantiateViewController” производит поиск представления по идентификатору “Storyboard ID”, которое мы задавали ранее, в модуле “Main.Storyboard” и возвращает базовый класс контроллера “UIViewController”. Класс “UITableViewController” наследуется от класса “UIViewController”, соответственно допустимо приведение данного экземпляра к классу “UITableViewController”. Класс “SuppliesViewController“ наследуется от класса “UITableViewController”. Соответственно мы приводим полученный экземпляр в правом операнде к типу “SuppliesViewController” и присваиваем его левому операнду c именем “controller”. Левый операнд объявлен константой, поскольку он не будет в дальнейшем проходить переинициализацию. На 24 строке, мы обращаемся к свойству “navigationController”, в данном свойстве содержится экземпляр класса “UINavigationController” (сейчас он не инициализирован и содержит значение “nil”). Затем от экземпляра этого свойства мы вызываем метод “pushViewController”. Данный метод принимает два аргумента, экземпляр контроллера, который надо отобразить и флаг использовать анимацию при отображении контроллера или нет. Если вы сейчас запустите приложение, заполните поля “Имя пользователя” и “Пароль пользователя” и нажмете кнопку “Вход”, вы получите ошибку, так как текущее представление не содержит экземпляра “UINavigationController”. Давайте это исправим. Откройте модуль “Main.storyboard”. Выделите в дизайнере представление “ViewController”, затем в меню Xcode выберите “Editor -> Embed In -> Navigation Controller”. После этого действия в дизайнер Storyboard добавится представление “Navigation Controller” привязанное к представлению “ViewController”. Данное представление инициализирует свойство “navigationController” класса “ViewController”, данное свойство имеет тип доступа только для чтения и не подлежит переинициализации в коде контроллера. Модуль “Main.storyboard” должен выглядеть так: Теперь запустите приложение. Заполните поля “Имя пользователя” и “Пароль пользователя”, нажмите кнопку “Вход”. Откроется табличное представление:   Но в нем нас смущает “Top Bar”, который отображается сверху. Его не должно быть видно на странице входа в систему. Чтобы его убрать, откройте модуль “Main.storyboard”, выделите представление “ViewController”, в панели свойств перейдите на вкладку “Show the attributes inspector”. На этой вкладке найдите свойство “Top Bar” и установите для него значение “None”, в дизайнере “Top Bar” пропал, но вот если вы запустите приложение снова, то он остался на прежнем месте. Чтобы его скрыть, перейдите в модуль “ViewController.swift”. После переопределенного метода “viewDidLoad” вам необходимо переопределить еще два метода класса “UIViewController” это методы “viewWillAppear” и “viewWillDisappear”. Исправьте код в соответствии с кодом ниже: Разберем построчно внесенные изменения. На 33 строке мы переопределили метод “viewWillAppear”. Данный метод вызывается когда наше представление уже появилось на экране. На 34 строке мы вызываем метод “viewWillAppear” из базового класса “UIViewController”, чтобы сохранить его поведение. На 35 строке мы обращаемся к свойству “navigationController” и вызываем от экземпляра этого свойства метод “setNavigationBarHidden”. Данный метод скрывает или отображает “Top Bar” и принимает два аргумента, первый аргумент указывает скрыть или отобразить “Top Bar”, второй указывает, сделать это с анимацией или без. В этом методе мы скрываем “Top Bar”. На 38 строке мы переопределяем метод “viewWillDisappear”. Данный метод вызывается когда наше представление перекрывается другим представлением поверх него. На 39 строке мы вызываем метод “viewWillDisappear” из базового класса “UIViewController”, чтобы сохранить его поведение. На 40 строке мы обращаемся к свойству “navigationController” и вызываем от экземпляра этого свойства метод “setNavigationBarHidden”. В этом методе мы отображаем “Top Bar”. Запустите приложение. Теперь все отображается правильно. С одной стороны да, с другой нет. После того как мы выполнили переход на табличное представление, в нем в левом верхнем углу отображается кнопка навигации “< Back”, но ведь наше приложение на русском. Давайте изменим текст этой кнопки на “<- Назад”. Откройте модуль “SuppliesViewController.swift”. После метода “cellForRowAt indexPath”, добавьте следующий код: Разберем этот код построчно. На 36 строке мы объявили метод с именем “initNavigationButtons”, который ничего не возвращает и ничего не принимает. На 37 строке мы вызываем обращаемся в левом операнде к свойству “navigationItem” в котором содержится экземпляр класса “UINavigationItem”. Данное свойство предоставляет доступ к системным кнопкам навигации. От экземпляра свойства “navigationItem” мы обращаемся к свойству “leftBarButtonItem” в котором содержится экземпляр класса “UIBarButtonItem” инициализированный по умолчанию текстом “< Back”. В правом операнде мы создаем новый экземпляр класса “UIBarButtonItem” и вызываем его инициализатор, который принимает 4 аргумента. Первый аргумент “title” задает текст кнопки навигации. Чтобы в текст вставить специальный символ Unicode, необходимо в меню среды разработки Xcode выбрать “Edit -> Emoji & Symbols”, затем выбрать подходящий символ и нажать на него. Второй аргумент “style” принимает перечисление типа “UIBarButtonItemStyle”, в этом аргументе мы задаем значение по умолчанию. Третий аргумент “target” имеет тип “AnyObject?”, в него мы передаем экземпляр нашего контроллера. Четвертый аргумент “action” имеет тип “Selector?”, в него мы передаем метод обработчик нажатия на кнопку навигации. Обратите внимание на запись “#selector(SuppliesViewController.backToParent)”, в этой записи с помощью выражения “#selector” создается экземпляр типа “Selector”. В скобках мы указываем путь к методу обработчику события в формате “Класс контроллера . метод”. На 40 строке мы объявляем метод обработчик события нажатия по кнопке навигации с именем “backToParent”, который не принимает аргументов и ничего не возвращает. На 41 строке мы обращаемся в правом операнде к свойству “navigationController” и вызывает от экземпляра этого свойства метод “popViewController”. Данный метод скрывает текущее представление и переход на предыдущее представление в иерархии вызова представлений. Принимает один аргумент, который задает стиль открытия предыдущего представления с анимацией или без. Добавьте в метод “viewDidLoad”, вызов метода “initNavigationButtons” (19 строка). Запустите приложение. Вы увидите такой результат: На этом урок подошел к концу. На следующем уроке, мы создадим модель товара. Добавим кнопку добавления нового товара, добавим форму редактирования товара и зададим поведение в табличном представлении на редактирование/удаление товара. После того, как редактирование товаров будет завершено, можно будет приступать к уроку в котором будут разбираться иконка приложения и папка Assets.
Notification success