Можно ли заниматься разработкой на iPad

CocoaHeads в FunCorp

У нас отличная новость! 25-го августа совместно с сообществом CocoaHeads мы проведём iOS митап (наш первый митап в Москве).

Сергей Турсунов, VK.com
«Swift Method Dispatch»

  • Типы диспатча Direct / Witness / Table / Message и почему это фундаментальная часть ООП
  • Какие типы применяются к value types, reference type и extension
  • Как меняются типы диспатча с помощью модификаторов final / dynamic / inline / objc / nonobjc в классах
  • Влияние WMO на диспатч и почему это хороший помощник при разработке
  • Как самостоятельно проверить, какие типы диспатча создаются для компилируемых файлов (SIL) и немного о процессе компиляции в Swift.

Objective-C: взгляд рубиста

Intro

До начала изучения Objective-C я программировал сначала на PHP, потом на Python и Ruby. Ruby мне понравился больше всего. Понравился своей простотой, лаконичностью, но в тоже время и мощностью. А около недели назад у меня наконец-таки получилось завести хакинтош на своем компьютере (сейчас у меня Macbook Early 2008 Black). Это оказался OS X Lion Golden Master. Я знал, что приложения для маков и айфонов пишут на Objective-C, даже пытался его выучить, но без OS X это было неприятно, что ли. Поставив Xcode 4.2 (я уже зарегистрированный iOS разработчик), написал несколько очень простых консольных приложений. И каждый раз когда я следовал какому-то туториалу, или просто пытался сам писать код, мне приходило в голову то, что, оказывается, Ruby и Objective-C имеют много общего (хотя это логично, так как оба языка были сделаны под влиянием Smalltalk), несмотря на то, что у этих двух языков совсем разные предназначения.Итак, здесь я опишу некоторые вещи, которые помогут программистам на Ruby понять Objective-C, по большей части теоретические, без кода. Так же прошу прощения, если некоторые вещи будут объяснены не совсем по-сишному, я же пришел из мира Ruby.

Структура веб-сайта

Для начала давайте выясним что такое сайт и из чего он состоит.

Технически, сайт — просто набор текстовых файлов, имеющих определенные расширения, хранящихся в одном каталоге на компьютере или сервере. Кроме них в структуру каталога могут входить подпапки с изображениями, шрифтами и дополнительными библиотеками, использующимися на нем. В зависимости от назначения и формата файлов их сортируют по соответствующим папкам. Главная страница сайта, как правило, лежит в корне каталога и называется index.html.

Структура каталога сайта

Когда в адресной строке браузера мы вводим адрес, например, yandex.ru, браузер обращается к серверу соответствующего сайта. Это то, с чего начинается взаимодействие с любой страницей в сети.

В ответ на этот запрос на сервере yandex.ru начинают работать backend-технологии, например, PHP и MySQL. Они делают свою «серверную магию» и в ответ на запрос «покажи мне главную страницу» отдают обратно браузеру искомую страницу в виде HTML, CSS и JavaScript-кода. Браузер умеет распознавать этот код и в результате выводит в своем окне красивую, работающую «Главную».

Как я сфокусировался на месяц

Я принял решение уйти с работы и начал изучать программирование с утра до вечера. То, что я успел за первые две недели до увольнения, можно пройти за два дня, если тебя ничего не отвлекает. А меня теперь ничего не отвлекало: я отказывался от всех предложений, которые получал (написать рецензию, сходить в кино, встретиться обсудить новый проект, занять кому-то денег) и старался проводить за занятиями всё свободное время. То есть абсолютно все (ну ладно, часок в день я всё-таки занимался какой-нибудь ерундой, но не больше).

Чтобы сидеть целый месяц и изучать код с утра до вечера, не нужна сила воли. Вообще. Вспомните все статьи, книги, фильмы, лекции о борьбе с ленью и прокрастинацией, которые вам представлялось услышать, увидеть, прочесть. Всё это ерунда! Потому что вопрос поставлен неправильно.

Если вы делаете то, что нужно вам, никакой лени, прокрастинации и прочего возникать не должно. Лень мне кажется отказом мозга выделить вам ресурсы, когда вы занимаетесь фигнёй.

Мне попадалось сообщение на форуме от студента, который ходил на курсы по программированию, в духе: «программистам приходится много работать, они должны работать ещё и дома… очень тяжелая профессия…» Сейчас я могу сказать, что этому человеку вряд ли нужно идти в разработчикиии. Потому что программист не ДОЛЖЕН, и ему не ТЯЖЕЛО — он ХОЧЕТ и ему ИНТЕРЕСНО. Конечно, я не могу назвать себя программистом, но рискну сказать, что если программист ДОЛЖЕН и ему НЕ ИНТЕРЕСНО, то либо он не в том проекте, либо не в той профессии. Когда я писал свои первые приложения, я как будто играл в игру — постоянно возникают новые задачи, и я должен их решать. Решения могут быть разными, простор для фантазии безграничен. Это поинтереснее Skyrim или GTA.

Шаг первый. Зарождение идеи

Не буду скрывать, что кое-какой опыт в работе над проектами у меня был. Тут можно вспомнить и о проектах в сфере дизайна, и об агентстве рекламы в Twitter twiPR, которое мы запустили три года тому назад (и которое вскоре закрылось), и о многом другом.

В общем, навык запуска и вывода проектов в свет уже был прокачан, пускай и на начальном уровне. Но движение конкретно в сторону разработки приложений началось с колонки Степана Светлого о приложении «Мотивация дня».

После прочтения меня посетила интересная мысль: в отличии от веба, в App Store действуют другие правила.

Вам не обязательно создавать что-то новое если вы хотите, чтобы приложение покупали. Например, если вы давно регулярно заглядываете в App Store, то явно могли заметить – есть сезонные категории приложений.

Приложения с тренировками становятся актуальными каждую весну, но каждую весну сами приложения сменяют друг друга. И их всё равно покупают.

Создаем простую веб-страницу

a http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>ss=»article-render__block article-render__block_unstyled»>Как вы уже узнали,веб-страница — это файл с расширением .html, в которой содержится HTML-код. Он представляет собой набор определенных тегов, заключенных с обеих сторон в угловые скобки. Теги бывают закрывающие и незакрывающие.

Воспользуемся текстовым редактором Sublime Text 3 и создадим в нем новый файл index.html.

Файл index.html

Теперь у нас есть стандартная структура HTML-документа. Откры созданную страницу в браузере, вы увидите пустой белый фон. Все содержимое страницы, которое выводится в браузере, помещается между открывающим и закрывающим тегами и — а пока что у нее есть только title, отображаемый во вкладке браузера, но нет никакого наполнения.

Добавим несколько элементов. Для каждого из них есть свой тег. Для начала создадим заголовок и дополним его текстом и кнопкой.

Для добавления заголовка используется тег

, для параграфа текста — тег

, а для кнопки — тег . Поместим эти элементы внутри блока с тегом .

Теперь обновим страницу. Как видите, элементы появились в окне браузера.

Язык HTML, который мы использовали до сих пор, отвечает лишь за создание структуры страницы. Давайте попробуем немного стилизовать наши элементы: поменяем цвета заголовка и фона кнопки, а для текста параграфа изменим размер шрифта.

Для изменения стиля элементов необходимо применить к ним CSS-правила. CSS-правила можно записать внутри блока с тегом

Нужный нам код выглядит так:

Разместить его следует между тегами. Как вы могли заметить, названия свойств говорят сами за себя. Это простые английские слова, записанные согласно определенному синтаксису, свойственному языку программирования. Снова обновим страницу и посмотрим, что получилось.

Отлично. Теперь установим фон, а кнопку сделаем более заметной. Добавим следующие правила для кнопки и фона:

Пора дополнить все это великолепие картинкой. Добавим к существующим элементам тег , который и отвечает за отображение изображений на странице. Он включает такой атрибут, как src (от англ. source — источник), который указывает на путь к картинке. Наша картинка лежит на диске D.

Так можно создавать множество элементов на странице, а затем с помощью CSS-правил придавать им нужные вид и расположение.

Давайте сделаем так, чтобы при наведении курсора на кнопку она становилась белой, а текст внутри нее — оранжевым. За состояние элемента при наведении на него курсора в CSS отвечает псевдокласс hover. Добавим несколько правил для нашей кнопки и после этого попробуем навести на нее курсор.

Все сработало! Кнопка поменяла свой вид.

Теперь попробуем сделать нашу картинку по умолчанию невидимой и устроим все так, чтобы она появлялась только по нажатию на кнопку. За видимость объектов отвечает CSS-свойство visibility. Установим ему значение hidden.

Как видите, картинка исчезла.

Вернем нашу картинку и нажмем на кнопку «Показать». Ничего не произошло? Все потому, что мы еще не запрограммировали кнопку на выполнение действия. Здесь мы уже можем применить JavaScript.

FigmaGen: Автоматизация стилей в iOS-приложении

Tutorial

Сейчас многие команды систематизируют дизайн своих приложений. Мы решили пойти дальше и автоматизировать синхронизацию кода с нашей библиотекой компонентов. 

Дело в том, что в hh для проектирования UI используется небезызвестный сервис Figma, который, кроме прочих своих плюсов, имеет открытый API. А это в свою очередь открывает широкие возможности для разработчиков, чем мы и решили воспользоваться.

Так родилась идея проекта FigmaGen - инструмента, который синхронизирует код с библиотекой компонентов в Figma. Сначала он выглядел, как эксперимент, специфичный только для нашего продукта, но получилось более универсальное решение, и в этой статье мы поделимся первыми плодами своей разработки.

Шаг второй. Ищем, как будем учиться

Как я говорил, мой опыт в программировании под iOS был равен «0». Поэтому – вначале был Google. Вообще, если вы хотите назвать себя разработчиком (вас очень не будут любить за это «нормальные» разработчики, но это вы поймете позже), вам придется научиться получать информацию не от преподавателя.

Вы будете находить десятки и сотни строк кода на самых различных ресурсах, и да, в большинстве случаев никто не описывает «как эта штука работает». Поэтому будьте готовы разбираться во всем сами.

Пробежавшись по ссылкам в поисковой выдаче реально найти один сайт, предлагающий видеоуроки по Swift. Этот язык в три раза труднее HTML. Для тех, кто не знает HTML, перефразирую — Swift выучить чуть легче, чем научиться играть в пинг-понг.

Возможно, он будет сложен вам на старте, когда только предстоит понять, по каким принципам он работает. Дальше — все трудности описывает фраза: «Я знаю, как это должно происходить программно, но я не знаю, как это написать». Тут вас спасёт уже упомянутый Google.

Касательно поиска – большинство кода, который вы будете находить, будет написано на Objective-C. Это потому, что Swift — относительно молодой язык, а до него весь App Store был в приложениях, написанных на Objective-C. Сейчас в магазине приложений доступно около 2 млн приложений, и только 100 тысяч из них написаны на Swift. Это лишь 5%.

Из этого можно сделать предположение что 95% всей информации по iOS-разработке, что вы найдете, — вам не подходит. Но. На этот случай есть крутой переводчик.

Для тех, кого сейчас посетила мысль «А почему бы не учить Objective-C вместо Swift?» — ответьте себе на вопрос: хотите ли вы писать быстро и понятно, или иметь большее количество информации и примеров, но с непонятным синтаксисом и c огромным количеством знаков препинания? То-то же. Поэтому выбирайте Swift.

Шаги

Метод 1

Подготовка в школе

  1. 1

    Вы «должны» любить программирование! Если вы учитесь в средней школе и все еще не изучали эту тему, то сделайте это. Если вам не нравится изучать математику и науки, тогда, пожалуй, лучше будет подобрать что-то другое.

  2. 2

    Пока учитесь в школе, возьмите по максимуму от таких предметов, как алгебра, арифметика и геометрия, возможно, стоит попробовать тригонометрию. Пытайтесь в математике достигнуть институтского уровня знаний еще до ухода из школы, чтобы усвоить программу дисциплин компьютерных наук и программирования, вам понадобится много математических знаний.

Метод 2

Программа обучения в университете

  1. 1

    Планируйте получить высшее образование. Есть множество историй о тех, кто бросил институт и стал исполнительным директором и миллиардером в 90х, поэтому можно проникнуться притягательностью идеи «если я вольномыслящий человек, у меня есть большие проблемы и опыт программирования, то мне не нужно тратить четыре года». Трудно программисту начального уровня достигнуть успеха в карьере без высшего образования.

  2. 2

    Выбирайте образование соотносительно тому, что вы хотите делать. Если вам нравится разработка игр, и вы хотели бы вступить в клуб разработчиков компьютерных игр, то вам понадобится специальность компьютерные науки. Если вы хотите работать с такими компаниями, как IBM, Intel, Microsoft, Google и пр., тогда вам понадобится высшее образование со специальностью компьютерных наук. Если вы ищете место в не технической корпорации, которая в основном разрабатывает приложения для бизнеса, рассмотрите вариант получения образования по специальности управления информационными системами или другие из предложенных в сфере программирования для бизнеса. Это образование лучше всего подходит, поскольку обеспечивает знаниями в сфере управления и бизнеса, и не сфокусировано на дисциплинах, которые останутся ненужными в большинстве случаев.

Метод 3

Дополнительные программы в ВУЗе

  1. 1

    Дополните учебную программу персональными исследованиями. Зайдите на сайт трудоустройств и отыщите наиболее актуальные специальности. В институте не могут научить всему, поэтому вам придется купить дополнительные книги в этой сфере и заняться самообучением.

  2. 2

    Если вы не планируете попасть в струю посредством работы в качестве «подмастерья», попытайтесь принять участие в дополнительных проектах, пока учитесь. Никто не захочет нанимать новичка после учебы, который не участвовал в проектах. Производственная практика поможет решить эту проблему, однако большинство студентов не может себе позволить ее оплачивать, или затем обнаружить, что эта специальность им не подходит. Лучшим способом будет участие в дополнительных проектах, что можно будет отметить в своем резюме.

  3. 3

    Наладьте связь с разработчиками ПО. Если есть такая возможность, постарайтесь связаться с программными разработчиками и поработать над проектами под их присмотром.

Метод 4

Разница между разработчиком и программистом

  1. 1

    Поймите, что разработка программного обеспечения и программирование не одно и то же. Каждый разработчик ПО знает, как программировать, но не всякий программист является программным разработчиком. Вот главные отличия:

    • Разработка ПО это, как правило, групповое сотрудничество, где каждый выполняет свою, иногда без четких различий, работу.
    • Проекты разработки имеют временные границы, даты выпуска и сотрудничество между людьми, ответственными за разные компоненты.

Метод 5

Дополнительная деятельность

1

Всегда принимайте участие в сторонней от учебного процесса деятельности, которая связана с любым программным обеспечением, которое помогает решать реальные задачи. Как только у вас появляется свободное время, посвящайте его поискам в Интернете информации о новых технологиях на рынке, и технологиях, которые будут полезны в будущем.

2

После изучения всех сфер, связанных с компьютерными науками, выберите определенное направление в программной индустрии. Сужение выбора существенно поможет в планировании карьеры. Всегда думайте просто, потому что программная промышленность сама по себе является очень сложной.

3

Изучите эту сферу

Важное отличие от разработчика и программиста в том, что разработчики делают инструменты; когда они используются программистами для построения решений.

  • Этот процесс займет время и понадобиться практика. Никто не становится мастером разработки ПО за одну ночь. Если у вас не хватает времени, то эта идея вам не подходит.
  • Приготовьтесь к испытаниям. Эта сфера находится в постоянном изменении и самообразование, поэтому никогда не закончится. Если вы не в восторге от самообучения новым и сложным вещам, измените курс уже сейчас.

Редакторы кода

Самый простой инструмент программиста — редактор кода. Таких программ десятки для очень многих платформ, не является исключением и iOS. Общие требования к подобной утилите — лаконичность, поддержка большого количества языков, интеграция с облачными сервисами. В iOS важным становится еще один параметр — поскольку клавиатура не приспособлена для набора кода, необходима либо другая клавиатура, либо возможность интегрировать в существующую дополнительные кнопки с наиболее часто употребляемыми спецсимволами. Рассмотрим самые популярные редакторы кода, которые удовлетворяют этим требованиям, а также обладают своими уникальными возможностями.

Textastic

Textastic, вероятно, самый популярный и многофункциональный редактор. Впрочем, разработчики знают цену своему творению — в App Store программу можно найти за 10 долларов, что по меркам данного магазина немало. Конечно, при наличии jailbreak на аппарате можно скачать редактор в одном из многочисленных хранилищ пиратского софта, но отсутствие эксплоитов для последних версий iOS значительно усложняет бесплатное приобретение утилиты.

Однако, рассмотрев возможности Textastic, опытный программист, скорее всего, сделает вывод, что заплатить за эту программу все же стоит. Достаточно взглянуть на возможности утилиты:

  • Поддержка огромного количества языков программирования с соответствующей подсветкой синтаксиса.
  • Блоки спецсимволов над клавиатурой.
  • Интеграция с iCloud Drive и богатые возможности распространения полученных результатов.
  • Возможность видеть и редактировать файлы на удаленном FTP/SFTP-сервере, в облачном хранилище Dropbox или используя технологию WebDAV.
  • Создание папок, файлов и изображений, которые будут отображаться в меню слева.
  • Поддерживается произвольный уровень вложенности. При создании файла можно выбрать его кодировку.
  • Менеджер файлов.

Интерфейс программы Textastic

В качестве бонуса можно выделить гибкие настройки оформления. Есть возможность выбрать шрифт и его размер, тему и цвет интерфейса, включить автокоррекцию, защитить программу паролем или отрегулировать межстрочные интервалы и отступы. Другая фишка — поддержка 3D Touch в новейших моделях iPhone, многозадачности в планшетах и оптимизации под тринадцатидюймовый iPad Pro.

В общем, Textastic действительно универсальный редактор, однако и у него есть свои недостатки. Например, нет интеграции с GitHub, да и цена программы не радует

Потому стоит обратить внимание и на альтернативы этому решению

Koder

Один из ближайших конкурентов Textastic — менее дорогая, но практически не уступающая по функциональности утилита Koder. Здесь можно добавить кастомные клавиши на верхнюю панель клавиатуры, подключиться к SSH-серверу. Настройки оформления, передача данных по FTP, защита файлов паролем и поддержка не меньшего, чем в Textastic, количества языков программирования — все это также присутствует в данном приложении. Еще есть клавиша в верхней панели для удобного перемещения по коду, облачная синхронизация, гибкий поисковый движок с возможностью замены, настройка прав доступа на серверах, превью HTML-файла в окне браузера и поддержка iTunes File Sharing. Из удобных особенностей — поддержка нескольких вкладок при редактировании файлов. Так что данный редактор отнюдь не хуже Textastic, мало того, он обладает многими небольшими, но оттого не менее приятными преимуществами. И это при значительно меньшей цене.

Интерфейс программы Koder

Существует еще множество других решений — клиент онлайн-сервиса codeanywhere, iEditor, Code Master и прочие. Однако они серьезно уступают по функциональности первым двум программам, являющимся, безусловно, лидерами данного сегмента утилит, потому рассматривать их отдельно не будем.

Что такое Flutter и почему вы должны изучать его в 2020 году

Из песочницы

Привет, Хабр! Представляю вашему вниманию перевод статьи: «What is Flutter and Why You Should Learn It in 2020» автора Gaël Thomas.

Что такое Flutter?

Flutter — бесплатный и открытый набор средств разработки мобильного пользовательского интерфейса, созданный компанией Google и выпущенный в мае 2017 года. Проще говоря, с помощью Flutter возможно создать собственное мобильное приложение с одним массивом кода. Это означает, что для создания двух приложений (IOS и Android) можно использовать единый язык программирования и одну базу кода.

Flutter нацелен на две важные вещи:

  • SDK (Software Development Kit): набор инструментов, который поможет вам в разработке приложений. Он включает инструменты для компиляции кода в нативном машинном коде (код для IOS и Android).
  • Framework (Библиотека пользовательского интерфейса на основе виджетов): Коллекция функциональных элементов пользовательского интерфейса (кнопок, текстовых вводов, ползунков и т.д.), которые можно персонализировать под личные предпочтения.

Для разработки с Flutter используется язык программирования под названием Dart. Это также язык Google, созданный в октябре 2011 года, но значительно улучшившийся в последние годы.

Dart фокусируется на развитии вёрстки веб-страниц; его можно с легкостью использовать для создания мобильных и веб-приложений.

Что нужно знать веб-разработчику

Про веб-разработку и программирование бытует множество слухов и стереотипов. Мы поговорим в том числе и о них.

Что веб-разработчику не требуется:

  • Знать математику — большинству программистов, которые профессионально занимаются созданием сайтов и веб-сервисов, достаточно знаний на уровне 5 класса.
  • Иметь глубокие знания английского языка. Полсотни слов может вполне хватить.
  • Учиться несколько лет и заканчивать институт, чтобы освоить базовую веб-разработку. На деле ее освоение займет два-три месяца обучения.

Что понадобится для успешного старта:

Изучить базовые технологии создания сайтов — HTML и CSS — и понять принципы построения структуры сайтов. На это уйдет несколько недель.
Освоить сопутствующие технологии: редакторы кода либо IDE (интегрированные среды разработки), например Notepad++, Sublime Text, Brackets, WebStorm, PHPStorm. Эти инструменты сильно ускорят процесс разработки.
Знать о существовании фреймворков и готовых решений, которые упрощают и улучшают код

Например, для frontend-разработчика это фреймворк для верстки Bootstrap, библиотека языка JavaScript — JQuery, с помощью которой написано множество других полезных и нужных библиотек, и Simfony — PHP-фреймворк общего назначения, который облегчает взаимодействие с базой данных, задачи формирования HTML-кода и задачи принятия данных из запроса.
Не менее важно и умение правильно составлять поисковые запросы, пользоваться качественными и проверенными источниками информации.

Зачем нужен JavaScript

Сейчас мы имеем статическую страницу, которая содержит простой контент. Для того чтобы назначить какое-то событие в качестве реакции для нажатия на кнопку, и нужен язык JavaScript. Вообще любая интерактивность на сайте, любое взаимодействие с пользователем — это JavaScript. Код JavaScript, как и CSS, записывается в определенном теге —

Также необходимо явно указать кнопке, что она должна реагировать на какое-то событие. В нашем случае это одиночный клик. То есть при клике по кнопке должна выполниться ранее созданная функция show.

Теперь конструкция document.getElementById(‘cat’) выполняет обращение к элементу по идентификатору cat, который прикреплен к нашей картинке. Укажем, что обращаемся к стилю элемента, а конкретно — к свойству visibility, и устанавливаем через знак «=» значение visible в кавычках.

Если вы хотите, чтобы при нажатии на кнопку менялся и фон страницы, добавьте в функцию и этот код:

Как видите, и правда просто.

Вместо того чтобы вручную менять свойства объектов в коде, JavaScript это сделал за нас.

Ссылка на основную публикацию