Как стать автором
Обновить
0
0
Евгений @C_arter

Пользователь

Отправить сообщение

Асинхронный рассинхрон: антипаттерны в работе с async/await в .NET

Время на прочтение9 мин
Количество просмотров49K

Кто из нас не косячит? Я регулярно встречаюсь с ошибками в асинхронном коде и делаю их сам. Чтобы прекратить это колесо Сансары делюсь с вами самыми типичными косяками из тех, которые иногда довольно сложно отловить и починить.



Читать дальше →
Всего голосов 49: ↑48 и ↓1+47
Комментарии64

Дайджест интересных материалов для мобильного разработчика #194 (6-12 марта)

Время на прочтение3 мин
Количество просмотров9.1K
В новом дайджесте вы можете прочитать про поиск без интернета, денежные переводы в iMessage, создание иконок и токенов, самых зарабатывающих мобильных издателей и самые важные метрики.

Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии0

Обработка препроцессорных директив в Objective-C

Время на прочтение9 мин
Количество просмотров4.9K

Язык программирования с препроцессорными директивами сложен для обработки, поскольку в этом случае необходимо вычислять значения директив, вырезать некомпилируемые фрагменты кода, а затем производить парсинг очищенного кода. Обработка директив может осуществляться во время парсинга обычного кода. Данная статья подробно описывает оба подхода применительно к языку Objective-C, а также раскрывает их достоинства и недостатки. Эти подходы существуют не только в теории, но уже реализованы и используются на практике в таких веб-сервисах, как Swiftify и Codebeat.



Swiftify — веб-сервис для преобразования исходников на Objective-C в Swift. На данный момент сервис поддерживает обработку как одиночных файлов, так и целых проектов. Таким образом, он может сэкономить время разработчикам, желающим освоить новый язык от Apple.



Codebeat — автоматизированная система для подсчета метрик кода и проведения анализа различных языков программирования, в том числе и Objective-C.


Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии6

5 достойных изучения проектов с открытым исходным кодом на React Native

Время на прочтение2 мин
Количество просмотров41K
Изучение открытого исходного кода – это лучший способ научиться писать качественный код, особенно если речь идет о новом инструменте с не полностью сформировавшимися стандартами. Одним из таких инструментов является React Native. Он постоянно дорабатывается, функциональность его API расширяется с каждым релизом, а количество библиотек растет. В то же время большинство обучающих ресурсов по работе с React Native очень поверхностны и не идут дальше вступительных рекомендаций. Но даже несмотря на это, изучение исходного кода должно быть нормой для каждого разработчика.

Я хочу представить 5 проектов с открытым исходным кодом, которые я изучаю сам и советую остальным.

Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии7

Аргументы против использования фрагментов в Android

Время на прочтение10 мин
Количество просмотров33K
Недавно я выступал на конференции Droidcon в Париже с докладом (оригинал на французском), в котором рассматривал проблемы, возникшие у нас в Square при работе с фрагментами и возможности полного отказа от фрагментов.

В 2011-м мы решили использовать фрагменты по следующим причинам:

  • Тогда мы ещё не поддерживали планшеты, но знали, что когда-нибудь будем. Фрагменты помогают создавать адаптивный пользовательский интерфейс, и потому казались хорошим выбором.
  • Фрагменты являются контроллерами представлений, они содержат куски бизнес-логики, которые могут быть протестированы.
  • API фрагментов предоставляет возможность работы с backstack'ом (в общих чертах это выглядит так же, как и работа со стэком Activity, но при этом вы остаётесь в рамках одной Activity).
  • Так как фрагменты построены на обычных представлениях (views), а представления могут быть анимированы средствами Android-фреймворка, то фрагменты могли в теории дать нам возможность использовать более интересные переходы между экранами.
  • Google рекомендовал фрагменты к использованию, а мы хотели сделать наш код как можно более стандартным.

С 2011-го года много воды утекло, и мы нашли варианты получше.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии15

Linux демон на PHP5

Время на прочтение8 мин
Количество просмотров29K
Доброго времени суток, сегодня я буду описывать довольно забавную задачку, из области мало связанной напрямую с web-программированием, а точнее создание демона на PHP. Понятное дело что первым вопросом будет: «А зачем это надо?» Ну что ж, будем разбираться последовательно.

Читать дальше →
Всего голосов 40: ↑22 и ↓18+4
Комментарии25

Кому жить, а кому умереть: приоритеты процессов в Android

Время на прочтение7 мин
Количество просмотров34K
Примечание переводчика: при переводе старался максимально пользоваться терминологией, которую предлагает сам Google в русскоязычной версии документации по Android, таким образом «service» стал «службой», «content provider» стал «поставщиком контента», и так далее. А вот «activity» стать «операцией» так и не смог — не пересилил я себя. Извините.

Давайте признаем: мобильные устройства не обладают бесконечной памятью, бесконечным зарядом батареи, или чем-то ещё бесконечным. Для нас это означает следующее: мы должны рассматривать смерть процесса как натуральную часть жизненного цикла наших приложений. Важно убедиться, что освобождение памяти, связанное с уничтожением процесса, не приводит к негативным для нашего пользователя последствиям. Для выполнения этой задачи большая часть архитектуры процессов в Android была создана таким образом, чтобы обеспечить жёсткую иерархию, в соответствии с которой процессы живут и умирают.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии4

Быстрая работа с JSON в Swift

Время на прочтение3 мин
Количество просмотров11K
Работа с форматом JSON в Swift на первый взгляд не представляет особых сложностей, с одной стороны в стандартном наборе есть класс NSJSONSerialization который умеет парсить файлы, с другой стороны множество сторонних библиотек обещающих сделать этот процесс проще, а код нагляднее. В рамках же данной статьи я хотел бы рассмотреть как читать JSON файлы быстрее и почему очевидные подходы работают медленно.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии6

Итоги 2015: рынок мобильных решений

Время на прочтение7 мин
Количество просмотров8.1K
Что нового принес уходящий год в сферу мобильных решений? Отвечают эксперты Сбербанк Технологий, Acronis, КРОК и Softline.



Ключевые события и тренды


Особого внимания заслуживает появление технологии 3D Touch от Apple и выход Windows 10 Mobile от Microsoft.

Дмитрий Соколов, главный инженер Сбербанк Технологий:



Самое заметное, что случилось в мобильной разработке – Material Design от Google. Это, как говорится, эпик вин. Все посходили с ума: в планы разработки срочно закладывался редизайн софта (даже в ущерб функциональности), с дизайнерских мониторов исчезли скетчи айфона (ранее, казалось, приколоченные туда гвоздями), а пользователи – сами пользователи! – начали ставить плохие оценки за «нематериальность». Думаю, в гугле под конец этого года выпишут очень щедрые премии всем причастным. Это круто, я даже не могу вспомнить столь однозначно позитивную реакцию на что-либо за последнее время. Материал всегда, материал везде, отдельные элементы пробираются даже на iOS!

А вот изнутри гугл революции не произвёл: долгие годы обещают наладить стабильное и повсеместное обновление Android, а в конце 2015-го хвастаются (хвастаются, Карл!) огромной долей Marshmallow аж в целых пол процента. А чаще всего встречается – внимание! – позапрошлая и поза-позапрошлая версия системы. И это, ребята, не менее эпичный провал.
Читать дальше →
Всего голосов 13: ↑9 и ↓4+5
Комментарии0

Как на самом деле будет выглядеть рынок JavaScript в 2016 году

Время на прочтение9 мин
Количество просмотров42K
image


Сегодня на сайте Mashable появилась любопытная статья «Чтобы стать гуру программирования в 2016 году, достаточно освоить Javascript и переехать в Юту» о рынке труда разработчиков программного обеспечения. Данный материал формирует весьма превратную картину действительности, а потому давайте разбираться вместе.

Краткая предыстория. Я разработчик программного обеспечения и на протяжение нескольких последних лет мне доводилось неоднократно проводить собеседования с желающими пополнить ряды моих коллег. Кроме того, я обучал разработчиков JavaScript навыкам, благодаря которым они получали шикарную работу. У меня приличный опыт в сфере создания и консультирования многообещающих команд разработчиков и компании из списка Fortune 500.

Я также часто сотрудничаю с кадровыми агентствами, благодаря чему не понаслышке знаю, чего хотят самые высокотехнологичные компании в мире. Руководствуясь собственным опытом и тем, что рассказывают мои студенты, я могу с уверенностью заявить, что прекрасно понимаю структуру рынка труда JavaScript как снаружи, так и изнутри.
Читать дальше →
Всего голосов 34: ↑25 и ↓9+16
Комментарии57

О новом push-сервере «1С-Битрикс»

Время на прочтение6 мин
Количество просмотров20K


Некоторое время назад у нас назрела необходимость в разработке нового push-сервера для сервиса «Битрикс24». Предыдущий вариант, реализованный на базе модуля для Nginx, имел ряд особенностей, которые доставляли нам немало хлопот. В результате мы поняли — пора делать push-сервер. Здесь мы хотим рассказать о том, как это происходило.
Читать дальше →
Всего голосов 23: ↑16 и ↓7+9
Комментарии41

Передача проекта от дизайнеров iOS разработчикам

Время на прочтение6 мин
Количество просмотров79K


В настоящее время департамент мобильной разработки Rambler&Co активно расширяется, в том числе и в плане iOS-разработчиков и UX дизайнеров. Большое количество людей и проектов, ведущихся ими, усложняет и без того непростой процесс передачи дизайна разработчикам. Всем, так или иначе связанным с мобильной разработкой, знакомы проблемы и разногласия, возникающие на стыке интересов программиста и дизайнера — начиная тем, в каких единицах измерять расстояния, и заканчивая тем, кто должен нарезать элементы экранов в различных разрешениях. Чтобы окончательно решить проблему в рамках нашей компании, мы решили подготовить подробные гайдлайны по этому взаимодействию.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии25

Особенности работы с файлами в приложениях на разных мобильных платформах

Время на прочтение7 мин
Количество просмотров21K
При разработке кросс-платформенного мобильного приложения, имеющего в своём функционале работу с файлами, встаёт вопрос об организации процессов работы с файлами на каждой платформе. С данным вопросом мы столкнулись при разработке новой версии Edusty, позволяющей делиться файлами со своими одногруппниками. В этой статье мы расскажем как происходит импорт и экспорт файлов в приложениях, работающих на операционных системах iOS, Android, Windows Phone.



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

Программное создание NinePatchDrawable

Время на прочтение9 мин
Количество просмотров9.1K
В новом Android Lollipop появился такой интересный компонент как VectorDrawable. Если использовать его с умом, можно значительно снизить объем приложения, сэкономив на графических ресурсах, плюс, использование векторной графики освобождает нас от муторного процесса создания изображений под разные плотности экрана. Первая мысль, которая меня посетила, когда я увидел VectorDrawable, была: “Ух ты! А его можно тянуть как NinePatch?”. Оказалось нельзя. Тут можно было бы немного огорчиться и довольствоваться тем, что хотя бы иконки можно в векторе держать. Однако, я на этом решил не останавливаться. В итоге получилась универсальная утилита, которая из любого Drawable способна сделать NinePatchDrawable.



В изображении, которое вы видите, используется вектор, но он растянут по центру. И это удивительно! Возможность растягивать вектор только в определенных областях предоставляет, по истине, колоссальные возможности. А если учесть, что есть проекты позволяющий использовать вектор на более ранних версиях андроида, векторные изображения начинают показывать себя во всем своем великолепии.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии2

Биндинги в Swift. Делаем первые шаги к MVVM

Время на прочтение11 мин
Количество просмотров28K
Доброго времени суток. Эта статья будет полезна тем, кто устал изо дня в день бороться с изменяемостью данных в интерфейсе, тем, кто еще не знает о существовании MVVM, и тем, кто сомневается, что данный паттерн можно успешно применять на практике при разработке iOS приложений. Заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии17

Corona SDK стала бесплатной

Время на прочтение1 мин
Количество просмотров32K

Создатели известного движка для разработки кроссплатформенных мобильных приложений Corona SDK 2 марта объявили о том, что отныне Corona SDK будет бесплатна.

Четыре месяца назад, в ноябре 2014 Corona была куплена компанией FusePowered. Многие предрекали грядущие изменения в политике компании и в выборе путей ее развития. Вопрос был, в какую сторону будут эти изменения. И вот сегодня случилось — Корона объявила, что возможности, доступные раньше только в платных подписках, теперь будут бесплатны.
Разберемся, что же они теперь нам предлагают.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии19

Как упростить жизнь iOS разработчику

Время на прочтение8 мин
Количество просмотров16K
Наверное, каждый разработчик, когда начинает осваивать новую технологию, хочет опробовать все самостоятельно, реализовать все с самого низкого уровня, чтобы потом наслаждаться результатом своей работы. Однако с накоплением опыта многие задачи становятся достаточно скучными и хочется избавить себя от этой нужной, но неинтересной рутины. В этой статье я хочу поделиться тем, какие способы и средства помогут упростить жизнь разработчику и сэкономить нервы.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии3

Objective-C Runtime для Си-шников. Часть 3

Время на прочтение4 мин
Количество просмотров11K
image

Всем привет. Сегодня я продолжу рассказывать вам о внутреннем устройстве Objective-C Runtime, а конкретно — о его реализации на уровне языка C.

В прошлых статьях мы с вами подробно разобрались с селекторами и механизмом посылки сообщений объектам и классам. Сегодня я хотел бы закончить с сообщениями и рассказать о принципах работы некоторых встроенных возможностей языка Objective C.

Тем, с кем мы ещё не знакомы, я предлагаю для начала прочитать первую и вторую части, а прочитавших и заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии15

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight

Время на прочтение7 мин
Количество просмотров56K

Вступление


С каждым годом становится всё очевиднее, что для распространения тестовых версий iOS-приложений нужны специализированные сервисы. Это актуально не только для компаний, занимающихся разработкой приложений в “промышленных масштабах”, но и для инди-разработчиков. Причины: увеличение количества устройств с “нестандартным”/”не кратным” размером экрана, отличия в архитектуре центрального и графических процессоров — всё то, что раньше было повседневностью для разработки под Android, теперь становится справедливым и для iOS.

Исторически самым популярным сервисом дистрибуции являлся TestFlight — практически идеал, как в техническом отношении, так и в юзабилити. Однако, после приобретения компанией Apple в начале 2014 года, сервис претерпел ряд неоднозначных изменений, которые с одной стороны сказались негативно на его позиции лидера, а с другой дали шанс альтернативным сервисам побороться за первое место и предложить как минимум равноценную замену, а может быть и что-то более удобное и функциональное.

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

В обзоре участвуют следующие сервисы (в таком порядке и будут публиковаться части обзора):
  • Apple TestFlight
  • HockeyApp
  • Ubertesters
  • Crashlytics (как часть Fabric)


TestFlight старой версии не будет рассмотрен, так как хотя он по-прежнему работает и доступен по адресу www.testflightapp.com, использование его в долгосрочной перспективе не имеет смысла по ряду причин:
  • нет никаких гарантий, что Apple не приостановит или не прекратит его работу в любой момент
  • SDK сервиса не доступно для скачивания, более того невозможно использовать сервис, если приложение использует SDK
  • сервис больше не является кросс-платформенным, поддерживается только распространения приложений для iOS (подробнее)

Важно! Буквально накануне публикации статьи команда TestFlight (старой версии) разослала уведомление, в котором сообщается, что старый сервис прекратит свою работу 26 февраля 2015 года (подробности).

Система оценки: сервисы будут оценены по 10-балльной шкале по каждому из разделов (Регистрация и интеграция, Основной функционал, Дополнительный функционал, Continuous Integration). Суммарная оценка позволит определить победителя (итоговое заключение войдет в последнюю часть обзора).

Читать далее. Осторожно, много картинок!
Всего голосов 15: ↑15 и ↓0+15
Комментарии36

Как Битрикс чуть Новый Год не погубил

Время на прочтение11 мин
Количество просмотров110K
Жили мы весело в небольшой веб-студии, делали сайты-визитки, интернет-магазины и небольшие порталы. Были проекты и на платформе 1С-Битрикс. Мы, конечно, не являлись официальным интегратором Битрикс, но делали работоспособные проекты на сколько позволяли силы и опыт. Казалось бы, какие только компоненты не приходилось нам использовать, но сие чудо отечественных мозгов сумело сделать сюрприз под новый год.
Читать дальше →
Всего голосов 67: ↑55 и ↓12+43
Комментарии175

Информация

В рейтинге
Не участвует
Работает в
Дата рождения
Зарегистрирован
Активность