Архив за 13 июня 2019 - 9

Привет! В субботу, 29 июня, приглашаем iOS-разработчиков на традиционный митап. В этот раз обсудим самописный remote cache для iOS, feature toggles, поговорим, как использование proxy-объектов помогает в разработке тёмных тем для приложений, и рассмотрим разные варианты развития карьеры разработчика — начиная от фриланса в тёплых странах и заканчивая работой в офисе большой корпорации. Также в ходе митапа мы предоставим микрофон гостям встречи для коротких докладов секции Lightning Talks — можно будет обсудить актуальные вопросы iOS-разработки.

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

Анонс Avito iOS Meetup #7: feature toggles, remote cache, тёмные темы и карьера iOS-разработчика - 1

Читать полностью »

Стоит ли высокое качество ПО затрат на его разработку? - 1

Часто в процессе реализации проектов команды сталкиваются с вопросом: чему следует уделять больше внимания – выпуску новых фич или повышению качества кода? Обычно менеджеры делают выбор в пользу фич. Зачастую разработчики таким положением дел недовольны, считая, что им выделяется недостаточно времени для работы над архитектурой и качеством кода.

Закон Беттериджа гласит: «На любой заголовок, который заканчивается вопросительным знаком, можно ответить словом нет». Те, кто знаком со мной лично, знают, что я не разделяю эту мысль. Но в этой статье я хочу пойти ещё дальше и доказать, что постановка вопроса из заголовка этой статьи просто не имеет смысла. Такая постановка вопроса предполагает, что существует компромисс между затратами и качеством. И необходимо постоянно соблюдать баланс. В этой статье я докажу, что к миру разработки компьютерных систем этот компромисс не применим и, в действительности, создавать ПО высокого качества оказывается в конечном счёте дешевле.

Несмотря на то, что основная целевая аудитория статьи это разработчики, для её понимания не требуется специальных знаний. Мне бы хотелось чтобы эта статья принесла пользу всем, кто так или иначе связан с процессом разработки, а особенно менеджерам, которые формируют вектор развития продуктов.
Читать полностью »

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

Что записано в this? Закулисье JavaScript-объектов - 1
Читать полностью »

Пользовательское интервью внутренними силами компании: через ошибки к открытиям - 1

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

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

Вся правда об ОСРВ. Статья #28. Программные таймеры - 1
Читать полностью »

В первом квартале 2019 года в Африке было продано 21,5 млн смартфонов. Это на 7,1% меньше, чем в предшествовавшем квартале. На двух крупнейших рынках континента — в Нигерии и Южной Африке — падение продаж составило 14,7% и 23,4% соответственно. В абсолютном выражении за квартал здесь было продано 2,3 и 4,7 млн аппаратов. Такие данные содержатся в отчете IDC.

Читать полностью »

Время от времени, когда я читал о Roslyn и его анализаторах, у меня постоянно возникала мысль: "А ведь этой штукой можно сделать nuget, который будет ходить по коду и делать кодогенерацию". Быстрый поиск не показал ничего интересного, по этому было принято решение копать. Как же я был приятно удивлен, когда обнаружил что моя затея не только реализуемая, но все это будет работать почти без костылей.

И так кому интересно посмотреть на то как можно сделать "маленькую рефлексию" и запаковать ее в nuget прошу под кат.

Читать полностью »

На вчерашнем мероприятии компания Xiaomi представила сразу несколько новых продуктов, включая полностью беспроводные наушники Xiaomi Mi True Wireless Earphones.

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

На прошедшей вчера пресс-конференции Xiaomi представила умный дверной замок Xiaomi MIJIA Smart Door Lock, который поступит в продажу 28 июня по цене 245 долларов.

Умный дверной замок Xiaomi MIJIA Smart Door Lock оснащен дактилоскопом, NFC и Bluetooth

Читать полностью »

Многим разработчикам периодически требуется наладить общение между несколькими вкладками браузера: возможность посылать сообщения из одной в другую и получать ответ. Такая задача встала и перед нами.

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

При ближайшем рассмотрении выяснилось, что две трети библиотеки при этом можно не менять, необходимо только немного порефакторить код. Библиотека представляет из себя скорей ПРОТОКОЛ общения, который может работать с текстовыми данными. Его можно применять во всех случаях, если есть возможность передавать текст (iframe, window.open, worker, вкладки браузера, WebSocket).

Как это работает

На данный момент в протоколе есть две функциональности: отправка сообщения и подписка на события. Любое сообщение в протоколе — это объект с данными. Главное поле этого объекта — поле type, которое говорит нам, что это за сообщение. Поле type — это enum со значениями:

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js