Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Как победить Excluded Constraints с помощью RubyGem

Блог компании DataArtRubyРазработка под iOSXcodeРазработка под MacOS
Tutorial


Во время разработки iOS/OSX-приложений непременно приходится использовать Interface Builder и Auto Layout. В приложениях со сложными интерфейсом и в приложениях, находящихся в разработке достаточно давно, часто появляется проблема с большим количеством «исключенных констрейнов». Storyboard грузится необоснованно долго, а во время перехода между сценами можно успеть сходить за кофе.

Но, казалось бы, интерфейс всех контроллеров такой же незамысловатый, как и в релизе полгода назад. Что же случилось? Тем, кто использовал Size Classes, сразу понятно, что интерфейс — не такая простая штука, как кажется. Он ведет себя по-разному в разных ориентациях и на разных дисплеях. Делает он это, потому что некоторые constraints применяются только в определенной ситуации.

Это значит, что в остальных ситуациях эти constraints не используются. У Xcode Interface Builder есть особенность, которая помогает при разработке сложных интерфейсов и мешает при разработке простых. Если добавить constraint к какому-то UIView и затем удалить его из Xcode Inspector (а чаще всего это — самый удобный путь), Xcode не удалит его, а лишь сложит в список неиспользуемых на случай, если понадобится для другого дисплея или ориентации.

Иногда, если развернуть все группы constraints, можно ужаснуться происходящему в storyboard-файле:


Не хотите наблюдать подобное? Добро пожаловать под кат!
Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры4.6K
Комментарии 4

Обзор способов и протоколов аутентификации в веб-приложениях

Блог компании DataArtИнформационная безопасностьРазработка веб-сайтовПрограммирование


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.

Однако в современных системах существуют и более сложные схемы аутентификации и авторизации, о которых я расскажу далее. Но начнем с простого и понятного.
Читать дальше →
Всего голосов 48: ↑48 и ↓0 +48
Просмотры414.6K
Комментарии 19

Видео докладов с конференции IT NonStop Odessa 2015

Блог компании DataArtРазработка веб-сайтовПрограммирование


Привет, Хабр!

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

Делимся видео выступлений.

Еще два доклада были посвящены менеджменту, их можно найти в нашем блоге на Мегамозге.
Читать дальше →
Всего голосов 6: ↑3 и ↓3 0
Просмотры2.6K
Комментарии 0

Vagrant, Python, Pycharm = (удобная, работа, Windows)

Блог компании DataArtPython


Введение

Django — широко известный и один из наиболее развитых фреймворков для веб-разработки. Django написан на Python и, следовательно, для работы с ним потребуется установленный интерпретатор Python. Это не представляет никаких проблем, если мы работаем в среде Linux. Однако события принимают совсем другой оборот, если приходится заниматься разработкой на Python под Windows.

Для Windows есть готовые сборки Python, среди которых стоит отметить Enthought Python, Anaconda Python, PythonXY.
Есть и более простые пути.
Основной их недостаток по сравнению со «стандартным» Python в Linux — ограниченность набора библиотек, доступных для установки. В частности, в них не Django, и для его установки приходится совершать некие не совсем очевидные действия.

Один из возможных вариантов решения проблемы — установка виртуальной машины с Linux на борту. Работа с виртуальной машиной, несмотря на простоту ее установки и настройки, привносит ряд неудобств.
Так, виртуальная машина может оказаться довольно требовательной к ресурсам компьютера и временами работать медленно, создавая дискомфорт разработчику. Особенно сильно это раздражает, если торможение начинается в самый напряженный момент работы (а именно тогда это чаще всего и происходит!). Кроме того, даже на очень хорошем железе такое IDE, как PyCharm, работает в режиме далеком от того, который принято считать комфортным.

Повысить быстродействие можно за счет установки только необходимых пакетов, отсутствия оконного менеджера и тому подобных проблем. Т. е., необходимо правильно сконфигурировать виртуальную машину. И в этом деле на помощь приходит Vagrant — утилита для создания полностью готовых рабочих окружений на основе виртуальных машин (VirtualBox, VmWare Player/Workstation). Vagrant не только устанавливает виртуальную машину, но и позволяет с легкостью создавать новые, используя текущую конфигурацию пользователя.

В следующем разделе рассматривается установка и настройка рабочего окружения Vagrant для использования его в качестве удаленного Python интерпретатора для проектов PyCharm.
Читать дальше →
Всего голосов 22: ↑20 и ↓2 +18
Просмотры50.9K
Комментарии 39

Создание шорткодов в WordPress CMS

Блог компании DataArtCMSWordPressРазработка веб-сайтов


Что такое шорткоды

Начиная с версии 2.5, разработчики WordPress ввели понятие «Shortcodes API». Этот функционал позволяет создавать и использовать макрокоды в страницах сайта или в записях блога. Например, простая и короткая запись добавит на странице целую фотогалерею.

Более подробно прочитать о шорткодах и узнать, как создавать простые шорткоды, вы можете из документации WordPress.

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


Читать дальше →
Всего голосов 13: ↑9 и ↓4 +5
Просмотры43.5K
Комментарии 7

Оформление социальных кнопок в три шага

Блог компании DataArtРазработка веб-сайтовJavaScriptHTML
Tutorial


Привет, Хабр!

Сегодня небольшим, но полезным туториалом с нами поделится Дмитрий Кабаков, Senior фронтенд-разработчик DataArt.

В современном «гугломире» все большую важность набирает социальная составляющая сайта. Но обычные социальные виджеты/коды не всегда почти никогда не вписываются в оформление сайта.

Что же делать? Нужно оформлять!

Для туториала вам понадобится:
  • jQuery-плагин sharrre;
  • иконки FontAwesome;
  • знания HTML/CSS3;
  • минут 10 вашего времени
Читать дальше →
Всего голосов 25: ↑9 и ↓16 -7
Просмотры10.3K
Комментарии 22

Навигация в закрытых помещениях – от идеи до рабочего прототипа

Блог компании DataArtРазработка под iOSРазработка мобильных приложений

Разработчики внутренней практики DataArt «Путешествия и гостиничный бизнес» представляют систему внутреннего позиционирования и рассказывают, чем она интересна для индустрии.

Что такое система позиционирования во внутренних помещениях?

Исходя из статьи в википедии, это решение для нахождения объектов и людей внутри здания с помощью радиоволн, магнетических полей, акустических сигналов или другой сенсорной информации, собранной с помощью мобильных устройств. Проще говоря, с помощью этой системы можно определить свое местоположение в большом здании, используя лишь специальное приложение на смартфоне. Для людей, не работающих в технической сфере, это звучит как волшебство; для тех, кто теряется в аэропортах, торговых центрах и других зданиях — как панацея; для разработчиков железа и ПО — как серьезный вызов.
Читать дальше →
Всего голосов 11: ↑9 и ↓2 +7
Просмотры18.9K
Комментарии 17

UrbanAirship — push без создания сервера

Блог компании DataArtРазработка под iOSРазработка мобильных приложений


Компания UrbanAirship помогает разработчикам с 2009 г. Их платформа позволяет реализовать отправку push-уведомлений на большинстве мобильных платформ: iOS, Android, BlackBerry, Windows, PhoneGap. Сегодня мы поговорим об основных тонкостях использования UrbanAirship и возможностях библиотеки для платформы iOS.
Читать дальше →
Всего голосов 16: ↑12 и ↓4 +8
Просмотры6.9K
Комментарии 2

Android Data Binding in RecyclerView

Блог компании DataArtРазработка веб-сайтовПрограммированиеРазработка мобильных приложенийРазработка под Android


На Google IO 2015 анонсировали новую библиотеку Data Binding Library. Основная ее задача — вынесения взаимодействия модели и View в xml-файлы. Она значительно упрощает написание кода и избавляет от необходимости использования методов findByViewId(), добавления ссылок на view-элементы внутри Activity/Fragment’ов. Также она позволяет использовать кастомные атрибуты, привязывая их к статическим методам. Поскольку статьей просто по Data Binding уже достаточно, но по его использованию в RecycleView всего ничего, восполним этот пробел.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры46.8K
Комментарии 10

Понятно и просто про веб-компоненты и Polymer

Блог компании DataArtРазработка веб-сайтовCSSJavaScriptHTML
Tutorial


Кто я

Я — Александр Кашеверов. По образованию — магистр радиофизики. По профессии — веб-разработчик, работаю в компании DataArt с 2011 года, с 2009 увлекаюсь IT и веб-технологиями.

О чем статья, коротко

Рассмотрим, что такое веб-компоненты и polymer. Немного поразмышляем на тему развития веба. Посмотрим на технические детали, примеры, поддержку браузерами, тестирование. Коротко, понятно, по делу. С картинками.

Вступление

Веб постоянно развивается. Технологии были придуманы и внедрены, исходя из потребностей, актуальных на момент создания. Десять лет назад невозможно было сделать то, что мы реализуем сейчас, и сложно представить, что будет еще через 10 лет.

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

Для уменьшения головной боли хорошо бы, если в контексте веб:

  • CSS не пересекался.
  • Области видимости JS не пересекались.
  • HTML был понятным и читаемым, никаких лишних элементов.

Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Просмотры45.8K
Комментарии 14

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

Блог компании DataArtРазработка веб-сайтов


Привет, Хабр!

Сегодня у нас необычный материал. Мы не будем публиковать туториал или рассматривать новые фреймворки, а просто дадим слово коллеге, которому есть, что сказать.

Мнение автора может не отражать позицию компании и других коллег.

Знакомьтесь — Александр Ефимов, Configuration manager/DevOps

Есть у меня знакомый, который, будучи первоклассным сисадмином, мечтает стать программистом. По его словам, хочет творить, а не использовать уже существующий… не очень хороший софт. В чем-то я его понимаю: «чистое» творчество — безусловно, круто. Но давайте разберемся, что и как происходит на самом деле.
Читать дальше →
Всего голосов 61: ↑45 и ↓16 +29
Просмотры44.4K
Комментарии 57

Использование AJAX-обработчика WordPress

Блог компании DataArtAjaxCMSWordPressPHP


WordPress, будучи одной из самых популярных CMS в мире, снабжен подробной документацией, а точнее, даже двумя. В связи с чем ни в коем случае не стоит воспринимать этот текст как описание неких “best practices” и уж точно никто не заставляет слепо следовать описанному. Статья — просто быстрый ответ на вопрос «как?!» (следующий абзац) и подробное описание всего, что нужно знать чтобы заставить WordPress отвечать на AJAX-запросы (вся остальная статья).

Кратко


Традиционно для AJAX-запросов нужно две вещи: скрипт на сервере (бекенд), который будет отвечать на запросы, и скрипт на клиенте (фронтенд), который будет эти запросы делать. WordPress позволяет делегировать функции на обращение к специальному URL, по которому находится обработчик запросов.

Итак, работает это, «WordPress-way», вот так:

  1. На бекенде с помощью функции admin_url получаем ссылку на обработчик AJAX-запросов и передаем ее во фронтенд одним из способов. Именно к этой ссылке мы будем делать наши запросы.
  2. На бекенде регистрируется хук с функцией для обработки некоего экшена. Назовем этот экшен, например, get_posts.
  3. Фронт-енд делает запросы к URL-у из пункта 1, передавая имя экшена. Например, ?action=get_posts.
    На бек-енде, если на экшен зарегистрирован хук, выполняется заданная нами функция.


Вот так вот просто. Теперь подробнее.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры49.5K
Комментарии 5

JavaDay Воронеж 2015: подробности и видео докладов

Блог компании DataArtJavaScala


У воронежских Java-разработчиков есть традиция: каждую осень (уже пять лет подряд) они собираются, чтобы поговорить о самом актуальном и поделиться опытом. И каждый год эту встречу организует DataArt. В этом году конференция JavaDay Воронеж прошла в новом формате — камерное событие для опытных программистов, больше ориентированное на практику, чем на теорию. Организаторы решили отказаться от докладов для начинающих разработчиков в пользу технического хардкора. И нашим джавистам, судя по отзывам, такой формат пришелся по душе.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры6K
Комментарии 3

История PHP: инфографика

Блог компании DataArtРазработка веб-сайтовPHP

PHP7 Elephant created by Walker Cahall

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

Но многие ли из нас помнят, каким был PHP 10 или 20 лет назад? В честь релиза «семерки» коллеги из PHP User Group подготовили инфографику истории языка. Давайте вместе окунемся в прошлое и немножко поностальгируем.

Читать далее
Всего голосов 52: ↑43 и ↓9 +34
Просмотры34.6K
Комментарии 41

Как посчитать время на тестирование

Блог компании DataArtТестирование IT-системТестирование веб-сервисовТестирование мобильных приложений


… Или, другими словами, как посчитать время на тестирование так, чтобы все поверили? Ведь на самом деле у нас обычно — две цели. Первая — посчитать время так, чтобы не ошибиться и правильно распределить ресурсы — скорее всего, поначалу сделать это хорошо все равно не получится. Вторая цель более реальна: посчитать время на тестирование так, чтобы доказать кому-то, что вам нужны еще люди в команде, объяснить, почему вы не успеваете и т. д. Как ни странно, после того, как раз 50 сделаете второе, то и первое будет получаться!

Давайте теперь посмотрим, как считать время на тестирование, на конкретных примерах.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры33.9K
Комментарии 3

Использование шаблона MVVM (Model-View-ViewModel) в Android

Блог компании DataArtРазработка веб-сайтовРазработка мобильных приложенийРазработка под Android


Автор: Антон Валюх, Senior Mobile Developer.

В этой статье поговорим о теории и практике использования очень удобного шаблона проектирования MVVM (Model-View-ViewModel) при разработке Android-приложений.

MVP — Model-View-Presenter

Для начала — немного теории. Всё началось с того, что многие думали, как приспособить шаблон MVC (Model-View-Controller) для написания приложений с интерфейсом пользователя. И в 2006 г. в работе “GUI Architectures” Мартин Фаулер подробно рассмотрел шаблон, который впоследствии получил название “MVP” (“Model-View-Presenter”).

Итак, MVP — шаблон проектирования, производный от MVC, разработанный в основном для построения пользовательского интерфейса. MVP используется для облегчения автоматического модульного тестирования и улучшения разделения логики и отображения.

В этом шаблоне есть три элемента:
  1. View.
  2. Presenter.
  3. Model (модель).

Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры60.3K
Комментарии 6

Lean UX — мелочи для успешных проектов

Блог компании DataArtВеб-дизайнИнтерфейсыДизайн мобильных приложений


Автор: Анастасия Режепп, глава дизайн-студии DataArt.

В этой статье я немного расскажу о методологии Lean UX-дизайна и дам несколько техник и упражнений, показывающих, как ее применять.

Часто у нас возникает следующая проблема: к нам приходит клиент со стартапом: у него есть некая общая идея, а конкретного он ничего сказать не может, т. к. не знает точно, какие функции хотел бы добавить в продукт, а какие убрать. Наша цель — помочь ему в этом разобраться. И в этом нам может помочь метод Lean UX-дизайна.

Что значит “lean”

Слово “lean” переводится на русский как «тощий», «худой», «постный». Если переводить этот термин более специальным образом, то — «бережливый», «экономный», «минималистический». Например, уже есть термин «бережливое производство» — перевод английского “lean production”. Бережливое производство подразумевает постоянное устранение всех видов потерь — это достигается, в том числе, максимальной ориентацией на потребителя. То же самое верно и для подхода бережливого (тощего) UX-дизайна.

Принципы бережливого UX-дизайна

Когда мы следуем методу тощего UX-дизайна, есть несколько моментов, на которые стоит обратить внимание:
  • Мы понимаем целевую аудиторию и ее проблемы.
  • Мы создаем MVP (Minimum Viable Product — минимально жизнеспособный продукт).
  • Мы работаем короткими итерациями.
  • Мы постоянно тестируем нововведения на пользователях и, если что-то не так, быстро откатываемся.
  • Мы работаем командой: UX-проектировщики, дизайнеры, разработчики и тестировщики работают вместе и постоянно обмениваются мнениями и задачами.

Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Просмотры25.5K
Комментарии 1

Разработка плагинов для Atlassian JIRA

Блог компании DataArtРазработка веб-сайтовПрограммированиеJavaAtlassian


Все мы в IT сталкивались с системами отслеживания ошибок — с так называемыми баг-трекерами, с issue-трекерами. Один из популярных продуктов такого рода — Atlassian JIRA.

На самом деле, Atlassian JIRA — это больше, чем просто система отслеживания ошибок. JIRA может использоваться довольно широко — в том числе и для управления проектами. Можно сказать, что JIRA — это система для отслеживания статуса задач. Задачи могут быть разными: это сбор требований, тестирование, непосредственно разработка и т. д. Я видел даже попытки подсадить на JIRA бухгалтеров — а что, мол, будет у нас agile-бухгалтерия!

На официальном же сайте JIRA описывается следующим образом:
JIRA is the tracker for teams planning and building great products. Thousands of teams choose JIRA to capture and organize issues, assign work, and follow team activity. At your desk or on the go with the new mobile interface, JIRA helps your team get the job done. В общем, основная идея JIRA в том, что она позволяет планировать работу.

В этой статье я расскажу о том, как разрабатывать дополнения к этой программе. Впрочем, может возникнуть вопрос — а зачем разрабатывать дополнения для JIRA. Поэтому давайте рассмотрим, какие дополнения бывают.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры28K
Комментарии 3

Мнения: Swift стал Open Source

Блог компании DataArt


В этом месяце произошла настоящая революция для разработчиков на платформах Apple. 3 декабря в свет вышла новая версия объектно-ориентированного языка от Apple — Swift. Что особенно удивительно, Swift выпустили с открытой лицензией Apache 2.0 license with a Runtime Library Exception. Вы все правильно поняли, это мощный язык программирования от Apple, да еще и с открытым исходным кодом. Что это значит для разработчиков, Мы спросили Игоря Литвиненко, Senior Mobile Developer в DataArt.
Читать дальше →
Всего голосов 19: ↑12 и ↓7 +5
Просмотры10K
Комментарии 9

Swift. Функциональное программирование

Блог компании DataArtРазработка веб-сайтовПрограммированиеФункциональное программированиеSwift

Автор: Игорь Литвиненко, Senior Mobile Developer.

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

Экскурс в историю

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

Мне очень понравился пример из книги «Думаем функционально» (или «Функциональное мышление»). Представьте, что вы лесоруб, и у вас есть самый большой топор в лесу, который позволяет вам быть самым лучшим и успешным лесорубом. Но потом вы читаете в каком-нибудь журнале заметку маркетолога о том, что сейчас придумали новую крайне эффективную и современную концепцию валки леса — при помощи бензопилы. Тогда вы заказываете себе бензопилу — вам ее доставляют, вы ее распаковываете, но не знаете, как она включается. Зато вы прекрасно знаете, как рубить лес топором. И вы берете бензопилу и пытаетесь ей рубить деревья так же, как обычно рубите топором. И, конечно же, у вас ничего не получается — вам ничего не остается, как снова вернуться к топору. Но потом к вам приходит сосед и объясняет, как заводить бензопилу — и вы наконец начинаете эффективно валить лес бензопилой.
Читать дальше →
Всего голосов 10: ↑5 и ↓5 0
Просмотры10.7K
Комментарии 7