Результати пошуку за запитом: Обучение c
Огляд текстових редакторів та деяких корисних плагінів
Автор: Антон Гончаров
Введение
Привет всем. Многие студенты, которые решили связать свою жизнь с програмированием, задаются такими вопросами:
- что выбрать своим главным инструментом в работе?
- чем пользуется большинство?
- чем пользоваться при написании своего кода?
- что лучше?
На эти вопросы нет однозначного ответа, каждый редактор по-своему хорош. Но постараюсь описать главные возможности тех редакторов, с которыми я сам столкнулся и пользовался в своей практике.
Сразу внесем ясность и расставим точки над 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>В вебинаре мы будем говорить о том, как начать свой путь в качестве Java разработчика - от новичка без опыта в программировании до уровня специалиста, востребованного на рынке.</p>
<p>В вебинаре будут рассмотрены две стороны:</p>
<ul>
<li><strong>Что учить</strong> – автор поделится своим виденьем того, что нужно учить в первую очередь как базу, что нужно осваивать на этапе поиска первой работы, и что нужно доучивать, когда специалист уже работает ( на примере 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 и его методы, понятия “класс”, “конструктор”, “метод”, “объект”, сигнатура метода. </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>Мы подготовили для вас увлекательный онлайн тренинг по написанию графической игры “Танки”, который поможет легко и быстро познакомиться с практической стороной разработки на Java. Ноль теории, только практика. Если ты никогда не программировал – не проблема! Смотри и делай!<br bis_size="{"x":813,"y":42,"w":0,"h":15,"abs_x":1227,"abs_y":756}" />
<br bis_size="{"x":23,"y":62,"w":0,"h":15,"abs_x":437,"abs_y":776}" />
<strong bis_size="{"x":20,"y":82,"w":158,"h":15,"abs_x":434,"abs_y":796}">Кому это будет полезно:</strong><br bis_size="{"x":178,"y":82,"w":0,"h":15,"abs_x":592,"abs_y":796}" />
</p>
<ul bis_size="{"x":20,"y":133,"w":1019,"h":60,"abs_x":434,"abs_y":847}">
<li bis_size="{"x":60,"y":133,"w":939,"h":40,"abs_x":474,"abs_y":847}" style="text-align: justify;"><strong bis_size="{"x":60,"y":135,"w":64,"h":15,"abs_x":474,"abs_y":849}">Новичкам</strong>. Отсутствие опыта в программировании не должно вас останавливать. Мы предоставляем вам шанс сделать свою первую программу на Java и получить опыт практического применения данного языка программирования в создании настоящей компьютерной игры.</li>
<li bis_size="{"x":60,"y":173,"w":939,"h":20,"abs_x":474,"abs_y":887}" style="text-align: justify;"><strong bis_size="{"x":60,"y":175,"w":290,"h":15,"abs_x":474,"abs_y":889}">Начинающим Java разработчикам без опыта</strong>. Вы сможете углубить и применить на практике свои знания языка Java под руководством тренера.</li>
</ul>
<p> <br bis_size="{"x":23,"y":208,"w":0,"h":15,"abs_x":437,"abs_y":922}" />
<strong bis_size="{"x":20,"y":228,"w":130,"h":15,"abs_x":434,"abs_y":942}">Чему вы научитесь:</strong></p>
<ul bis_size="{"x":20,"y":259,"w":1019,"h":80,"abs_x":434,"abs_y":973}">
<li bis_size="{"x":60,"y":259,"w":939,"h":20,"abs_x":474,"abs_y":973}">Писать простые программы и подпрограммы с использованием языка Java</li>
<li bis_size="{"x":60,"y":279,"w":939,"h":20,"abs_x":474,"abs_y":993}">Работать с массивами данных</li>
<li bis_size="{"x":60,"y":299,"w":939,"h":20,"abs_x":474,"abs_y":1013}">Использовать типы данных и классы Java</li>
<li bis_size="{"x":60,"y":319,"w":939,"h":20,"abs_x":474,"abs_y":1033}" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 12pt;">Применять все базовые навыки (переменные, условные конструкции, циклы, методы) на практике</li>
</ul>
<p><strong bis_size="{"x":20,"y":357,"w":111,"h":15,"abs_x":434,"abs_y":1071}">Формат тренинга</strong><br bis_size="{"x":131,"y":357,"w":0,"h":15,"abs_x":545,"abs_y":1071}" />
Вас ждёт прямой эфир на YouTube с Андреем Бондаренко в течение 3-х часов, общение в чате во время эфира и в специальном телеграм-канале вне эфира. Все примеры и исходные данные также будут в телеграм-канале, к которому вы сможете присоединиться после регистрации.<br bis_size="{"x":758,"y":397,"w":0,"h":15,"abs_x":1172,"abs_y":1111}" />
<br bis_size="{"x":23,"y":417,"w":0,"h":15,"abs_x":437,"abs_y":1131}" />
<strong bis_size="{"x":20,"y":437,"w":137,"h":15,"abs_x":434,"abs_y":1151}">Программа тренинга:</strong></p>
<ol bis_size="{"x":20,"y":468,"w":1019,"h":133,"abs_x":434,"abs_y":1182}">
<li bis_size="{"x":60,"y":468,"w":939,"h":19,"abs_x":474,"abs_y":1182}" style="text-align: justify; line-height: 19.5px;">Создание карты поля боя</li>
<li bis_size="{"x":60,"y":487,"w":939,"h":19,"abs_x":474,"abs_y":1201}" style="text-align: justify; line-height: 19.5px;">Работа над передвижением танка</li>
<li bis_size="{"x":60,"y":506,"w":939,"h":19,"abs_x":474,"abs_y":1220}" style="text-align: justify; line-height: 19.5px;">Реализация стрельбы</li>
<li bis_size="{"x":60,"y":525,"w":939,"h":19,"abs_x":474,"abs_y":1239}" style="text-align: justify; line-height: 19.5px;">Обучение танка двигаться в указанный квадрант</li>
<li bis_size="{"x":60,"y":544,"w":939,"h":19,"abs_x":474,"abs_y":1258}" style="text-align: justify; line-height: 19.5px;">Добавление танка-противника</li>
<li bis_size="{"x":60,"y":563,"w":939,"h":19,"abs_x":474,"abs_y":1277}" style="text-align: justify; line-height: 19.5px;">Итог: танк проходит всё поле боя и чистит его</li>
<li bis_size="{"x":60,"y":582,"w":939,"h":19,"abs_x":474,"abs_y":1296}" style="margin-bottom: 12pt; text-align: justify; line-height: 19.5px;">Ответы на вопросы. Куда развиваться дальше?</li>
</ol>
<p><strong bis_size="{"x":20,"y":619,"w":55,"h":15,"abs_x":434,"abs_y":1333}">Подарки</strong><br bis_size="{"x":75,"y":619,"w":0,"h":15,"abs_x":489,"abs_y":1333}" />
10 самых активных участников тренинга получат от CyberBionic Systematics Подарочные сертификаты на обучение стоимостью 1000 грн.<br bis_size="{"x":855,"y":639,"w":0,"h":15,"abs_x":1269,"abs_y":1353}" />
<br bis_size="{"x":23,"y":659,"w":0,"h":15,"abs_x":437,"abs_y":1373}" />
<strong bis_size="{"x":20,"y":679,"w":164,"h":15,"abs_x":434,"abs_y":1393}">Учись вместе с друзьями</strong><br bis_size="{"x":184,"y":679,"w":0,"h":15,"abs_x":598,"abs_y":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.
Введення в розробку програм під iOS. Частина 1.
Автор: Volodymyr Bozhek
Здравствуйте, дорогие читатели.
Данный блок будет продолжением темы “Введение в разработку под iOS", которую мы затронули ранее.
В этом уроке мы:
рассмотрим пользовательский интерфейс среды разработки;
сделаем форму авторизации для нашего приложения Warehouse;
научимся добавлять обработчиков событий на элементы управления.
Работу продолжим на примере приложения Warehouse, который мы создавали в первом уроке.
В среде разработки Xcode можем видеть две панели. Левая из них - это панель навигации по составляющим проекта:
Правая делится на панель свойств и панель библиотеки компонентов.
Панель свойств:
Библиотека компонентов:
Также вы можете использовать набор функций в панели инструментов, который находится сверху:
Обратите внимание на кнопки этой панели справа:
Нажимая на них, вы будете скрывать или отображать левую, правую, нижнюю панель в среде разработки.
Левее находится блок функциональных кнопок для отображения данных выбранного модуля:
Кнопка отображения текущего представления модуля.
Кнопка отображения связанного модуля с текущим модулем. Применяется для того, чтобы видеть на одной половине экрана код контроллера, а на другой - дизайнер представления.
Кнопка отображения изменений с момента последней заливки данных в репозиторий. Используется, если ваш проект находится под управлением GIT
Панель снизу - это панель отладки и логирования:
В панели навигации откройте модуль “Main.storyboard”. Обратите внимание на стрелку слева, которая указывает на View. Эту стрелку можно перемещать, зажав ее левой кнопкой мыши.
Отмечу, что при включении в настройках вашей OS X эмуляции двухкнопочной мыши важно понимать, что на тачпаде нет понятия нажатия левой или правой кнопки мыши, есть просто нажатие.
Данная стрелка означает точку входа в наше приложение. Точка входа привязывается только к одной View, и эта View будет отображаться первой при старте нашего приложения. Исключением может быть только модуль конфигурации предварительной заставки “LaunchScreen.storyboard”, тогда сначала будет появляться заставка с презентацией функций приложения, а затем наша View, на которую была привязана точка входа.
Нажмите на View, на панели свойств откройте вкладку “Show the identity inspector”.
В поле “Class” содержится класс контроллера, который привязан к нашему представлению (View).
Рядом с названием класса “ViewController” есть серая иконка со стрелкой вправо, если вы нажмете на нее, то попадете в модуль контроллера “ViewController”.
Вернитесь в модуль “Main.storyboard”.
В свойствах дизайнера внизу выберите устройство “iPhone 6s”:
Перенесите из библиотеки компонентов два элемента управления “Text Field” и один элемент управления “Button” на View. Выделите элемент управления “Text Field” справа и слева от него будут видны квадратики, потяните за правый квадратик и растяните поле на всю ширину экрана. То же самое проделайте со вторым элементом управления “Text Field” и элементом управления “Button”.
У вас должно получится так, как на картинке ниже:
Обратите внимание на кнопки внизу дизайнера:
Это кнопки для отображения панелей свойств элементов управления. На этих панелях задаются выравнивания элементов управления либо относительно View, на котором они расположены, либо относительно других элементов управления, находящихся с ними по соседству. В терминологии Apple они называются ограничениями (Constraints).
Это отдельная и довольно объемная тема для понимания, поэтому пока мы будем пользоваться только одной панелью задания ограничений, более простой для понимания.
Выделите первый элемент управления “Text Field”, затем нажмите на кнопку “Pin” в дизайнере:
Появится диалог ограничений для данного элемента управления:
Выпадающие списки сверху, снизу, слева и справа - это допустимое расстояние элемента управления относительно стен View соответственно.
Нам необходимо задать ограничение, чтобы наш элемент управления остался на том же месте, где он сейчас расположен на View , но при этом, в зависимости от ширины экрана устройства, подстраивался под эту ширину. Чтобы этого добиться, снимите галочку с “Constrain to margin”, отметьте галочкой поле “Height”, чтобы высота элемента управления не менялась. Отметьте линии верхняя, левая и правая. У вас должно получиться вот так:
Заметьте, кнопка “Add 4 Constraints” стала активной. Нажмите на нее.
Теперь проделайте ту же самую операцию для второго элемента управления “Text Field” и элемента управления “Button”. Значения в выпадающих списках не меняйте.
Можно запустить приложение и посмотреть, что получилось.
Остановите приложение.
Откройте модуль “Main.storyboard”. Теперь нам необходимо привести в порядок пользовательский интерфейс и сделать его понятным для пользователя.
Выделите первый элемент управления “Text Field”. В панели свойств откройте вкладку “Show the attributes inspector”, на этой вкладке найдите поле “Placeholder”, введите в это поле текст “Введите имя пользователя”. Свойство Placeholder задает текст, который отображается в поле ввода, когда это поле не заполнено.
Выделите второй элемент управления “Text Field”, в панели свойств, откройте вкладку “Show the attributes inspector”, на этой вкладке найдите поле “Placeholder”, введите в это поле текст “Введите пароль пользователя”. Затем найдите поле “Secure Text Entry” и отметьте его галочкой. Данное свойство будет отображать звездочки вместо текста, вводимого пользователем, используется для полей ввода паролей.
Выделите кнопку “Button”, в панели свойств, откройте вкладку “Show the attributes inspector”, найдите поле без названия с текстом “Button”, удалите этот текст и добавьте текст “Вход”.
Найдите поле “Text Color”, установите цвет текста “White Color”.
Найдите поле “Background”, установите фон кнопки цветом “Blue Color”.
Перетащите из библиотеки компонентов на View под кнопку “Вход” элемент управления “Label”. Растяните его по ширине экрана. Задайте ему такие же ограничения, как мы задавали выше для прошлых элементов управления.
Выделите элемент управления “Label”, в панели свойств, откройте вкладку “Show the attributes inspector”. На этой вкладке найдите поле без названия с текстом “Label”. Удалите из него текст, введите текст “Нет ошибок”.
Найдите поле “Alignment”, задайте выравнивание текста по центру.
Выделите View, в панели свойств, откройте вкладку “Show the attributes inspector”, найдите поле “Background”, установите фон View “Light Green”.
У вас должно получиться следующее:
Теперь необходимо добавить действие на нажатие кнопки “Вход” и объявить переменные для полей ввода и элемента управления “Label”. Для этого в панели инструментов нажмите кнопку “Show the assistant editor”, экран разделится пополам. Если экран вашего компьютера не позволяет нормально видеть дизайнер и модуль контроллера, скройте панель навигатора и панель свойств.
Выделите первый элемент управления “Text Field” в дизайнере, не отводя курсор мыши с этого элемента управления, зажмите кнопку “Ctrl”, нажмите и удерживайте левую кнопку мыши, затем начинайте вести курсор на окно с модулем контроллера, когда курсор окажется между фигурными скобками класса контроллера, отпустите левую кнопку мыши, появится диалоговое окно параметров элемента управления:
В данном окне есть несколько полей.
Давайте их рассмотрим подробнее.
Поле “Connection”, может принимать несколько вариантов значений, в данном уроке нас будут интересовать всего два значения “Outlet” (используется для создания переменной, связанной с элементом управления) и “Action” (используйте для задания обработчика события на какое либо действие элемента управления).
Поле “Name”, сюда вы вводите название вашей переменной, которая будет связана с элементом управления.
Поле “Type”, содержит тип элемента управления (название класса элемента управления), можно ввести другой класс, если вы знаете иерархию наследования элемента управления UITextField.
Поле “Storage”, содержит вид размещения созданной переменной в памяти операционной системы. Может принимать значения “Weak” или “Strong”.
В поле “Name” введите название переменной “userNameTxt” и нажмите кнопку “Connect” или кнопку “Enter” на клавиатуре. В модуле контроллера добавится строчка с названием переменной, которую вы задали.
Обратите внимание на черный шарик, находящийся на одном уровне с этой переменной слева в области нумерации строк. Нажмите на него, и в дизайнере выделится элемент управления, к которому привязана данная переменная.
Вот пример:
Повторите данное действие для остальных элементов управления.
Для второго текстового поля укажите название переменной “passwordTxt”.
Для элемента управления “Label” укажите название переменной “validationLabel”.
Для кнопки выберите в поле “Connection” значение “Action”, у вас добавится еще одно поле “Event”. В данном поле задается событие, на которые вы хотите назначить обработчик в коде контроллера. По умолчанию установлено событие “Touch Up Inside”, оставьте его как есть.
В поле “Type” установлено значение “AnyObject” (Это класс, который может содержать любые типы данных, аналог подобного класса в других языка программирования, например, C# - это класс Object). Измените это значение на тип элемента управления UIButton, поскольку данный объект будет передан в аргументы метода обработчика назначенного события и намного удобнее будет обращаться явно к экземпляру кнопки, чем распаковывать этот экземпляр путем приведения к типу “UIButton” из типа “AnyObject”.
В поле “Name” введите “loginButtonTapped”. У вас должно получиться вот так:
Нажмите кнопку “Connect”. Код контроллера должен выглядеть вот так:
Теперь давайте проверим, работает ли событие нажатия по кнопке “Вход”. Добавьте в метод “loginButtonTapped” следующий код:
Давайте разберем этот код.
На 16 строке идет проверка наличия текста в поле ввода “Имя пользователя”. Ключевое слово “self” означает ссылка на самого себя, в других языках программирования аналог, например, в C# - это ключевое слово “this”.
Из переменной “userNameTxt” мы обращаемся к свойству “text”, данное свойство возвращает текст, который вы ввели в данный элемент управления. Знак вопроса в конце этого свойства ставится, так как это свойство имеет тип String? и может содержать значение “nil” (аналог “null” в C#).
Далее мы обращаемся к свойству “characters” , которое содержит массив символов и от этого массива вызываем свойство “count”, чтобы получить количество символов в строке. Такая запись введена, начиная со Swift 3, доступного с обновлением среды разработки до Xcode 8 версии.
В ранних версиях Swift, например, версии 2.1-2.3 можно было получить длину строки намного короче “self.userNameTxt.text?.length”.
Если поле ввода “Имя пользователя” не заполнено, мы отображаем сообщение валидации “Имя пользователя не задано”.
На 18 строке мы делаем аналогичную проверку для поля “Пароль пользователя”.
На 20 строке мы проверяем, если заполнены оба поля ввода, тогда все хорошо и мы выводим сообщение “Нет ошибок”.
Обратите внимание на запись “(self.userNameTxt.text?.characters.count)!”, скобки и знак восклицания в конце, на самом деле, применяются к свойству “text”, так как оно имеется Nullable тип. Этой записью мы гарантируем компилятору, что в данном свойстве не будет содержаться значение “nil” и данное свойство будет инициализировано.
Теперь запустите приложение и проверьте его работу.
На этом урок подошел к концу.
В следующем уроке мы рассмотрим работу с классами UITableViewController, навигацию между представлениями, понятие делегата, разберем формат и размеры иконки приложения, научимся использовать Assets.