как создать приложение для компьютера
Как создавать софт, который действительно работает?
Вы на самом деле думаете, что у вас есть все для создания классного софта? Я открою вам один секрет: это нелегко и требует больших усилий, но всему этому можно научиться.
Вот мой список того, что необходимо для разработки проектов программного обеспечения, которое действительно хорошо продается и хорошо работает:
Научитесь создавать продукт для людей
Создание продукта для людей – это такое же умение, как и многие другие, и ему можно научиться. Я не имею ввиду визуальный дизайн (хотя это тоже является частью процесса). Я говорю скорее о том, чтобы распознать проблему и понять, как обеспечить такое взаимодействие человека с компьютером, которое гарантирует пользователю успешное решение проблем без каких-либо затруднений, вместо того, чтобы просто создавать самое что ни на есть стандартное CRUD-приложение для работы с базами данных, которое включает несколько типичных UI-компонентов.
Для этого на первых порах можно делать следующее: анализировать софт других разработчиков и то, какие задачи вам нужно решить с помощью данных программ, и что вам нужно сделать, чтобы решить их. Например, как много кликов мышкой мне нужно сделать в программе для работы с электронной почтой для того, чтобы написать ответ? Сколько мне нужно прочитать меток? Как часто мне нужно переключаться между мышью и клавиатурой? Помогает ли мне это в решении общеизвестных задач. Как насчет поиска всех вложений из писем от определенного человека – вы будете удивлены тем, как трудно это сделать с использованием ПО!
Освойте и используйте несколько языков
Если другой язык (или другая среда разработки) является лучшим решением или дает вам большие преимущества, то используйте его. Часто овладение очередным инструментом не стоит дополнительных усилий.
Не стоит недооценивать значение чего-то нового для рабочей среды: все новинки должны быть проверены, задействованы, защищены, должен быть произведен контроль – а это может занять годы.
Не ведитесь на рекламу
Используйте то, что является для вас наилучшим. Если ваша продуктивность высока на PHP, то и работайте с PHP. Конечно, иногда технологии на самом деле способны увеличить продуктивность или дать другие существенные преимущества, но я не преувеличу, если скажу о том, что это огромная редкость – такое встречается, пожалуй, раз или два в десятилетие.
Не попадитесь на крючок, поверив, что основная идея хороша только потому, что существует множество вариаций конкретной технологии. На самом деле это может указывать на то, что люди отчаянно ищут технологическое решение для неправильного подхода.
Для примера, MVC на стороне клиента для практически любого типа функциональности веб-приложения добавляет оверхэд (потому что при большем количестве слоев и необходимо больше интерфейсов между ними), уменьшает продуктивность (нужно писать больше кода, а слои усложняют процесс устранения ошибок) и на деле не улучшает пользовательский опыт.
Дизайн пользовательского интерфейса – это тяжелая работа, и использование MVC на стороне клиента не сотворит для вас магии.
Придерживайтесь одного стиля
Вместе с языками, фреймворками, библиотеками меняется и то, как вы используете язык – подобно сезонам. Один месяц вы вовсю использовали замыкания (closure), а в следующем узнаете, что это уже устарело.
Попробуйте уменьшить когнитивный стресс во время написания кода и отладки, чтобы вы могли спокойно думать над решением проблем, которые вам действительно надо решить.
Внедряйте минимально жизнеспособное решение
С этим нельзя переборщить: во время написания кода не пишите ничего, в чем код на самом деле не нуждается для нормальной работы. Не думайте заранее о том, как вы сможете расширить его в будущем. Все равно вся будет так, как вы не предполагали. Сосредоточьтесь на коде, который работает, и лучше пишите тесты, нежели тратить время на абстрактные предположения.
И не забывайте: код не высечен в камне. Его несложно реорганизовать или переписать позже, когда вам действительно нужно будет изменить или расширить его, и когда вы будете знать реальные требования.
Избегайте сложностей
Я не использую такие препроцессоры CSS или HTML, как HAML или Sass (если вам удобно с ними работать, то используйте их на здоровье и повышайте свою продуктивность!) – мой стиль написания кода и «полировки» приложений требует много возни и переделок, и для меня намного проще возиться с кодом на низшем уровне (например, просто копируя и вставляя стили и работая со средствами разработки в браузере напрямую в файле CSS).
И хотя мне очень нравится CoffeeScript, для меня все же легче просто полностью написать JavaScript. Для меня недостаточны преимущества в виде немного более чистой синтаксической конструкции и лучших языковых возможностей, чтобы потом разбираться с дополнительными шагами компиляции, более сложными настройками и дополнительным уровнем абстракции при отладке.
Все эти сложности – относительны. То, что мне кажется ужасно сложным, вы можете воспринимать как простое и естественное. Чтобы понять, какие виды работ являются для вас наилучшими, потребуется время.
Будьте честны с собой – если вы чувствуете неудобство в использовании того или иного инструмента, то, возможно, не стоит пытаться приспособить это к вашему стилю работы. Просто найдите то, что вам лучше подходит.
Кодирование > Конфигурация
Легко попасть впросак, чрезмерно полагаясь на код, написанный другими людьми. Должно быть (как вы полагаете), если многие используют этот код, то он должен быть качественным. Ведь правда? Между прочим, именно поэтому большинство людей пользуются Windows. Это то, что называется «разумной достаточностью» (satisficing), или стремление к чему-то, что кажется для достаточным для человека.
Ваш мозг всегда старается найти самое легкое решение. Он скажет вам забыть о каком-либо компоненте или библиотеки, и большинство программистов согласятся с этим. Зачем заново изобретать велосипед и страдать от известного синдрома «Придумано не нами» (Not Invented Here)?
Выбор уже готового компонента – это практически всегда не самый оптимальный путь для решения проблемы. Подобные инструменты решат вашу проблему на 80%. А затем внезапно обнаружится, что для этой простой, казалось бы, вещи, которая выглядела такой простой, нет возможности конфигурации. И теперь вам нужно заняться реорганизацией исходного кода и исправлением ошибок в выбранной библиотеке, и в конечном итоге сделать разветвление кода. После этого вам нужно понять, как правильно выполнить тесты, и здесь вдруг выясняется, что возможность проведения тестов просто-напросто отсутствует. А затем… И все в том же духе.
Не забывайте, что вы программист, а не конфигуратор
Попробуйте отслеживать время и то, чем именно вы занимаетесь во время программирования. Сюда входят: размышления о способе внедрения специфической фичи, разработка человеко-машинных интерфейсов и обеспечения взаимодействия, создание планов и списков задач для внедрения определенной функции, выбор инструментов и библиотек, облегчающих работу, создание прототипов, написание самого кода, тестирование и выполнение итераций для поиска ошибок и обеспечения должной функциональности.
Вы будете удивлены тем, как мало времени вы потратили на само написание кода по сравнению с тем, сколько ушло на выбор и настройку библиотек.
Вы могли бы сэкономить кучу времени, если будете просто писать код с нуля. Я выяснил, что написание кода часто помогает мне лучше понять область проблемы, заставляю думать о пограничных случаях. Ничего подобного никогда бы не произошло, если бы я выбрал уже готовую библиотеку, которая сделает всю работу за меня.
Никогда не переставайте учиться
Возможно, наилучший способ быть всегда в теме, это время от времени выполнять различные сайд-проекты. Это отличный вариант для того, чтобы насладиться знакомством с новыми штуками без внесения «технологического беспорядка» в свой рабочий проект.
Например, напишите микробиблиотеку с открытым исходным кодом (или даже две) и используйте ее для того, чтобы делиться с другими людьми вещами, которые вы научились использовать в работе.
Экспериментируйте и переделывайте те или иные элементы, чтобы не утратить радость программирования – создания различных вещей из ничего.
Без единой строки кода: 7 инструментов для создания приложений и сайтов
Но не все могут позволить себе потратить кругленькую сумму (в пять или шесть знаков) на программистов, потому что на начальном этапе бюджет, как правило, ограничен.
К счастью, на рынке появилось множество сервисов, которые помогут начинающим предпринимателям создать веб-сайт или приложение без единой строки кода. Определенно, они сэкономят время и деньги. На PrimeLiber опубликовали подборку из 7 инструментов, популярных среди пользователей Product Hunt.
1. Bubble
В основу сервиса заложена концепция визуального программирования, то есть программирования без кода. Технология «drag & drop» позволяет легко добавлять и перемещать элементы страницы: текст, видео, карты, иконки, изображения, кнопки и пр. Все поддается настройке вплоть до цвета фона, иконок, прозрачности элементов.
Workflow-программирование дает более детальное представление о том, что происходит на каждом шагу. В Bubble можно структурировать и хранить данные, задавать свою логику переходов (например, если пользователь при входе в систему нажал кнопку X, перейти к Y, в противном случае – к A), кроме того у ваших пользователей появляется возможность загружать свой контент.
Здесь реализована интеграция с такими популярными сервисами, как MailChimp (автоматическая подписка пользователей) и Mixpanel (отслеживает активность пользователей в приложении). Это идеальный вариант для тех, кто хочет создать сайт или приложение, особо не заморачиваясь. Создать проект в сервисе можно бесплатно. Плата взимается после того, как как количество пользователей начнет расти, и сайтом или приложением начинают активно пользоваться.
Тара Рид, основатель Kollecto
2. Pixate
Pixate генерирует 100% родные прототипы, так что вы сразу сможете «пощупать» ваши идеи на устройстве. Всего несколько кликов, и вы добавляете необходимую анимацию и интерактивные жесты (и все это без единой строчки кода).
Сервис очень популярен среди дизайнеров, которым необходимо быстро создать качественный анимационный прототип для презентации заказчику. Pixate полностью переворачивает представление о способах прототипирования и lean-тестировании. Крайне рекомендуем всем, кто в ближайшее время собирается создать или оптимизировать мобильное приложение.
Дамиан, графический дизайнер Red-Sky
Пользовался сервисом пару недель назад и должен признать, что это самый лучший инструмент для создания прототипов. Он мегапростой и супербыстрый.
3. Treeline
Мика Болдвин, создатель проектов
Создатели очень умны, начали с Sails.js (похож чем-то на Rails) и сделали мощный продукт, который позволяет разработчику создавать backend-код … без написания самого кода. А вот интересно, когда совсем отпадет необходимость писать код, и все будет конструироваться с помощью drag&drop интерфейсов?
Tilda Publishing
Tilda позволяет создавать красочные контентные страницы. Вы собираете страницу из готовых блоков (их больше 170), которые хранятся в библиотеке системы. Все страницы, сделанные на Tilda – адаптивные, вам не придется беспокоиться о том, как они будут выглядеть на разных девайсах. Несомненный плюс для непрограммистов.
Веб-страницы получаются яркими и эффективными с хорошей типографикой и визуальными эффектами. Сервис позволяет применять различные функциональные элементы для призыва к действию (отзывы, кнопки, формы, списки преимуществ), подключаться к Google Analytics, оптимизировать страницу под поисковики.
Сервис весьма полезен для создания блогов, портфолио, новостных и корпоративных сайтов.
Бесплатно можно создать только один сайт из 5 страниц. За использование сервиса в «промышленных масштабах» придется платить.
Фред Риветт, член команды @wecontrast
Увидел, как Никита пару недель назад запустил продукт, и сразу решил попробовать. Конечно, в приоритете здесь нестандартные решения UI-дизайна, и выглядят так, словно вы отвалили за них кучу денег агентству. Передо мной встала дилемма. Мне нравиться работать над дизайном и кодить. Инструмент доступен по цене, прост в использовании, и прекрасен. Теперь хорошенько подумаю, стоит ли тратить время и писать все с нуля, или за небольшие деньги получить тот же результат. Прошло то время, когда компании заказывают сайты у агентств. А зачем, если появились такие сервисы, как Tilda? Недостатки? Ваш сайт не будет претендовать на уникальность, но сейчас большинство сайтов выполнены в едином стиле (и вообще-то смотрятся очень неплохо). Так что для 99,9% сайтов это вовсе не является минусом.
Webflow CMS
CMS система предназначена для сайтов с динамичным контентом, созданных в Webflow. В сервисе вы задаете вид контента (блог, портфолио) и далее адаптируете под него структуру сайта. Если у вас нет четкого понимания, как должен выглядеть сайт, используйте уже существующие шаблоны.
Сервис позволяет легко и быстро создавать большое количество однотипных страниц. К примеру, вы можете создать свой шаблон «страницы блога», и он будет автоматически применятся к другим страницам с таким же ярлыком. Вы можете вносить правки и редактировать сайт в режиме реального времени – контент будет обновляться автоматически. У Webflow удобный интерфейс и простая навигация.
Бесплатно можно работать только над одним проектом, при этом за хостинг придется платить.
Леонардо Закур, предприниматель и дизайнер
Я большой поклонник Webflow! Прекрасная команда и прекрасный продукт. Приложение великолепно сделано, действительно быстрое и отзывчивое (это, кстати, веб-приложение). Webflow занимает в нашем рабочем процессе очень важное место. Он позволяет одновременно создавать и дизайн, и фронтенд. А UI/UX дизайнеры постоянно контролируют то, как будет выглядеть и ощущаться готовый продукт. Превосходно, что можно быстро проверить, как будет выглядеть и работать сайт, причем в любом браузере и на любом устройстве. Посмотреть шрифты, анимацию, переходы. И все это на стадии проектирования. В нашей студии Bons мы используем Webflow на более профессиональном уровне, поскольку его можно донастроить.
Webflow 3D Transforms
Этот инструмент так же, как и предыдущий, создан командой Webflow, и считается лучшим в своем классе. С ним вы получаете расширенные возможности по созданию 3D и CSS трансформаций при анимации сайтов. Элементы страницы можно перемещать, вращать, применять к ним перспективу.
Вот только некоторые функции: создание анимации с эффектом переворачивания (card flip), многослойный 3D-эффект, изометрическая проекция.
Сейчас доступна бета-версия продукта.
Рэнди Эллис – ведущий преподаватель по UX-дизайну
Вау, они снова это сделали! Я с самого начала был их преданным клиентом, а теперь появилась еще одна причина получше присмотреться к сервису. Сначала Webflow, потом Webflow CMS, а теперь еще и 3D Transforms. Похоже ребята хотят, чтобы Webflow навсегда поселился в нашей экосистеме. И это здорово!
7. Cloudpress
С помощью CloudPress можно создать уникальные, адаптивные WordPress-сайты. Готовые блоки (а их более 80) позволяют сконструировать прототипы страниц за считанные минуты. В ThemeBuilder можно задать ширину страницы или сделать ее адаптивной.
Вы получаете контроль над каждой деталью сайта. Можно менять размер элементов, типографику, фон, эффекты.
Нейт Хэнсон, один из основателей Sumry
Надеемся, вы нашли для себя что-то полезное и в ближайшем будущем опробуете эти инструменты. Как видите, совершенно не обязательно быть гением программирования, чтобы создать красивый сайт или приложение. Ждем ваших шедевров.
Пишем первое универсальное приложение Windows
Добрый день!
С выходом Windows 8, разработчикам был представлен абсолютно новый тип приложений – приложения в стиле Modern UI. Ну, как новый? Подобные приложения уже разрабатывались для Windows Phone. Данные приложения не имели ничего общего с привычными Windows-приложениями. Такие приложения не совместимы с предыдущими версиями Windows, обладают абсолютно новым интерфейсом (Modern) и для их разработки используется новый WinRT API (Windows Runtime API) и Windows XAML (язык разметки интерфейса).
Никаких проблем для написания только Windows 8-версии своего приложения не было, однако, если требовалось написать приложение не только для Windows, но и для Windows Phone, нужно было преодолеть определенные трудности. Все дело в том, что Windows Phone для своих приложений использует Silverlight и Windows Phone API, тогда, как Windows 8 использует Windows XAML и WinRT API. Они имеют некоторые существенные отличия.
Несведущему человеку может показаться, что никаких проблем это приносить не должно, хотя на деле каждая версия приложения должна быть написана с нуля полностью. Именно это является главной проблемой, так как объем работы, который требовалось выполнить, был колоссальным. Нет, конечно были способы для унификации некоторых частей приложения, но они трудны для начинающего разработчика.
В Microsoft знали об этой проблеме и долгое время работали над ее решением. Результатом этой работы стали так называемые универсальные приложения Windows (Universal Windows Apps), которые доступны начиная с Windows 8.1 Update 1 и Windows Phone 8.1 (которая до конца лета будет доступна для установки всем устройствам на Windows Phone 8). Можно предположить, что теперь приложения будут работать без перекомпиляции как на Windows, так и на Windows Phone, но это не совсем так.
Каждое приложение все так же будет создаваться и компилироваться отдельно для каждой платформы, но объем требуемой работы теперь существенно сократился. Все дело в том, что Microsoft наконец-то унифицировали большую часть API для Windows и Windows Phone. Больше всего изменений было выполнено именно на стороне Windows Phone. Отныне для написания приложений для этих двух платформ (скоро будет три, Xbox One туда же) используется WinRT API и Windows XAML. Конечно же привычный для Windows Phone Silverlight никуда не делся и даже обзавелся некоторыми дополнительными возможностями, но не о нем сейчас разговор.
Универсальные приложения теперь используют среду выполнения Windows (тот самый Windows Runtime). Эти нововведения позволяют программисту свести платформозависимый код к минимуму, ведь большинство вызовов к API идентичны.
Тестовое приложение
Сегодня предлагаю вам попробовать написать простое универсальное приложение, имя которому «Hello, World!». Писать будем на языке C# (требуются как минимум начальные знания языка и XAML). Для этого минимально нам понадобится:
• Visual Studio Express 2013 для Windows с обновлением 2
Это совсем минимально. С таким комплектом вы сможете разработать универсальное приложение и отлаживать его Windows-версию на своем текущем компьютере. Windows Phone-версию приложения вы сможете отлаживать только на реальном устройстве (причем требуется аккаунт разработчика).
Чтобы иметь возможность отлаживать свое приложение в эмуляторе Windows Phone, вам потребуется:
• Windows 8.1 Профессиональная (x64)
• Процессор с поддержкой аппаратной виртуализации для клиента Hyper-V (подходит даже бюджетный Celeron G1610 и вроде даже Pentium 4 на LGA775)
• Visual Studio Express 2013 для Windows с обновлением 2
С таким комплектом вы сможете разрабатывать свое приложение более полноценно и тестировать его в различных режимах с использованием имитатора Windows-планшета и эмулятора Windows Phone.
Я же буду использовать Visual Studio Ultimate 2013 и показывать все буду именно на ней. Не волнуйтесь, от бесплатной Express интерфейс практически не отличается. Начнем!
Универсальный «Hello, World!»
Запустим Visual Studio и создадим новый проект.
В разделе «Приложения Магазина Windows» есть различные шаблоны приложений как для Windows, так и для Windows Phone. Нас интересуют именно универсальные приложения, шаблоны которых доступны в специальном подразделе.
На выбор дается два варианта: пустое приложение и приложение с Hub (это такой классный элемент управления). Остановимся на пустом приложении, ведь мы пока только учимся, и сразу лезть в дебри не следует. Пойдем от простого.
Введите имя для создаваемого приложения. Я назвал его «UniversalHelloWorld», четко и ясно. Нажимаем «ОК» и ожидаем, пока Visual Studio создает проект. Давайте рассмотрим структуру созданного проекта.
Весь проект подразделен на три части:
• Shared – содержит код и элементы, которые доступны сразу для двух платформ
Обратите внимание, что на данный момент общим являются только один элемент: App.xaml ( и App.xaml.cs). Этот элемент отвечает за запуск и остановку приложения.
Вы уже можете попробовать запустить приложение. И для этого нажмите F5. Для прекращения отладки, вернитесь в Visual Studio и нажмите «Shift+F5». Вы должны увидеть пустой экран. Первоначально будет запущена Windows-версия приложения. Чтобы выбрать, какую версию приложения запустить, найдите на панели инструментов кнопку отладки (зеленый треугольник).
Здесь вы можете выбрать, где запускать отладку вашего приложения. Имитатор выполняет имитацию Windows-планшета, у которого вы можете менять ориентацию, разрешение дисплея и прочие вещи. Кнопка «Удаленный компьютер» предназначена для запуска отладки на внешнем Windows 8 устройстве. Я для этих целей использую Surface RT.
Вернемся к смене запускаемой версии. В подменю «Запускаемый проект» вы можете выбрать «Windows Phone 8.1». После этого содержимое базового меню изменится и на ваш выбор будет доступно множество эмуляторов.
Выберите желаемый эмулятор и запустите отладку. После того, как эмулятор запустится, вы увидите пустой экран своего приложения. После завершения отладки эмулятор закрывать совсем не требуется.
Пока каждая версия приложения имеет отдельную главную страницу MainPage.xaml. Так как наше приложения очень простое, нам совсем не требуется разный дизайн страницы на каждой платформе. Перенесите MainPage.xaml в раздел Shared, и затем удалите его из разделов Windows и Windows Phone. Структура проекта станет такой:
Открыв данный файл, вы увидите эту страну в визуальном редакторе, а также ее код разметки. Пока мы имеем следующий код:
Он всего лишь создает корневую сетку страницы, закрашенную стандартным цветом страницы. Давайте добавим на страницу одноименную надпись и кнопку для приветствия. Разместите в Grid элемент TextBlock. Код элемента будет таков:
Чтобы посмотреть, как страница выглядит в режиме планшета/десктопа и телефона, используйте выпадающий список над редактором кода.
Также добавим на страницу кнопку, которая покажет нам небольшое сообщение. Код этой кнопки такой:
Добавим для этой кнопки обработчик события ее нажатия (Click). Для этого дважды щелкните кнопку, и вы автоматически перейдете к редактору кода C#. Автоматически сгенерировался пустой обработчик:
Мы его еще наполним содержимым. В этом обработчике мы создадим экземпляр диалогового окна и вызовем его. Для начала добавьте следующую директиву using вверху страницы:
Она требуется нам для того, чтобы получить возможность создать и отобразить диалоговое окно. Создаем экземпляр класса MessageDialog с заданным сообщением, который как раз и представляет собой диалоговое окно, и затем показываем его методом ShowAsync().
Готово! Теперь можно запустить приложение на каждой из платформ и с радостью обнаружить, что все работает как надо.
На этом статья подходит к концу. Сегодня я постарался рассказать, как сделать наипростейшее универсальное приложение, которое может работать как на Windows 8.1, так и на Windows Phone 8.1. При написании этой статьи я ориентировался на новичков, поэтому пытался расписать все более-менее понятно для обычного человека, близкого к компьютерной технике (и программированию, конечно).
Я думаю, что это не последняя статья, и, возможно, получится даже небольшая серия статей. В следующей статье мы напишем уже не простой «ХеллоВорлд», а более интересное приложение, которое будет работать с некоторыми данными и будет иметь более сложный интерфейс.
Скачать исходный код проекта можно по этой ссылке.
С удовольствием отвечу на все ваши вопросы.