Pull to refresh
0
Сержант Александру @solariserjread⁠-⁠only

User

Send message

Работа со сложными JSON-объектами в Swift (Codable)

Reading time10 min
Views16K

Написать эту статью меня сподвиг почти случившийся нервный срыв, причиной которого стало мое желание научиться общаться с сторонними API, конкретно меня интересовал процесс декодирования JSON-докуметов! Нервного срыва я, к счастью, избежал, поэтому теперь настало время сделать вклад в сообщество и попробовать опубликовать свою первую статью на Хабре.

Почему вообще возникли проблемы с такой простой задачей?

Чтобы понять, откуда проблемы, нужно сначала рассказать об инструментарии, которым я пользовался. Для декодирования JSON-объектов я использовал относительно новый синтезированный (synthesized) протокол библиотеки Foundation - Сodable.

Codable - это встроенный протокол, позволяющий заниматься кодированием в объект текстового формата и декодированием из текстового формата. Codable - это протокол-сумма двух других протоколов: Decodable и Encodable.

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

Еще такие протоколы позволяют работать с композицией, а не наследованием!

Вот теперь поговорим о проблемах:

Читать далее

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

Reading time7 min
Views51K
image

Мы хотели сжечь девушку и намазать её кефиром, декспантеноловой пенкой и регенератором, чтобы показать разницу, но у неё оказалась гиперреакция на УФ, поэтому пока так. Обещаю, что позже мы сожжём ещё кого-нибудь во славу науке. Ссылка на исследование

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

Продажи были около нуля, но это ожидаемо. Мы были молоды, наивны и хотели показать лучший эффект, стабилизировав в формуле сразу много действующих веществ, которые дополняли друг друга по эффекту. Цена флакона 100 мл к моменту выхода альфа-тестирования на полке получалась около 2 929 рублей, позже за счёт каких-никаких серий удалось снизить до 1 947.

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

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

Регулярные выражения (regexp) — основы

Reading time21 min
Views1.2M

Регулярные выражения (их еще называют regexp, или regex) — это механизм для поиска и замены текста. В строке, файле, нескольких файлах... Их используют разработчики в коде приложения, тестировщики в автотестах, да просто при работе в командной строке!

Чем это лучше простого поиска? Тем, что позволяет задать шаблон.

Например, на вход приходит дата рождения в формате ДД.ММ.ГГГГГ. Вам надо передать ее дальше, но уже в формате ГГГГ-ММ-ДД. Как это сделать с помощью простого поиска? Вы же не знаете заранее, какая именно дата будет.

Читать далее

Хьюстон, у нас проблемы с интерпретацией ошибок

Reading time8 min
Views6.2K


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


В ожидании комбинаторного взрыва

Читать дальше →

Что за зверь — аффинные преобразования?

Reading time4 min
Views66K

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

Вы сможете? В любом случае, давайте немного обсудим этот вопрос.

Читать далее

Как создать виджет для iOS 14 (и не удалить его у пользователей при обновлении)

Reading time15 min
Views8.4K


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


Помимо обзорной информации, под катом — истории о том, почему нельзя просто взять и добавить настройки в виджет (спойлер: можно случайно удалить виджет установившим его пользователям), и как даже новейшие Swift-only API иногда страдают от наследия Objective-C. Материал будет полезен как тем, кто привык разбираться во всём новом, находя готовые гайды в интернете, так и тем, кто предпочитает официальную документацию.

Читать дальше →

Нет Cookies, нет проблем — использование ETag для отслеживания пользователей

Reading time6 min
Views43K
Работая старшим консультантом по дижитал-аналитике в ведущем международном аналитическом агентстве, с огромным интересом наблюдаю за нынешним крестовым походом современных веб-браузеров против технологии cookie.

Оказывается, есть способ отслеживать отдельных не вошедших в систему пользователей без использования файлов cookie. Я тоже реализовал это. Сейчас покажу как.


Для наглядности я создал демо-сайт. Вот он.

Нажмите на каждую из трёх кнопок Page → На всех трёх один и тот же идентификатор.
Закройте окно браузера и снова откройте сайт → Идентификатор не поменялся.
Выключите компьютер и зайдите на эту веб-страницу завтра → Идентификатор всё тот же.
Проверьте ваши куки → Демо-сайт не записывает куки и не считывает их.
Проверьте URL → Сомнительные строки запроса отсутствуют.

Итак, как именно я могу хранить идентификатор и узнавать, что вы с определённого устройства возвращаетесь на сайт, при этом без входа в систему и без использования куки?
Читать дальше →

Восстановить Apple keyboard aluminium после попадания жидкости

Reading time4 min
Views122K


Все началось с того, что однажды мне залили красным вином проводную клавиатуру от Apple (MB110RS). Максимум, что было сделано до того, когда я об этом узнал, лишь удаление внешних следов попадания жидкости.

Надо отметить, что эта клавиатура не зря считается одной из самых удобных в своем роде в принципе: легкий тихий ход клавиш, полностью свободные и расслабленные руки при работе за ней, приятный дизайн.
Так вот именно своего главного достоинства — легкого хода клавиш — после того, как под них попало вино, клавиатура почти лишилась: стали залипать кнопки в особенности нижнего ряда — Shift, Ctrl, Alt, Cmd и в первую очередь Пробел. Оно и понятно — попавшая жидкость ввиду наклона клавиатуры устремилась в нижнюю ее часть, и вино, вода из которого успела испариться, оставило свой сухой остаток на контактных площадках, пружинящих резинках и под клавишами. Справедливости ради стоит сказать, что даже после этого клавиатура продолжала работать.
Читать дальше →

Приложение на SwiftUI в AppStore – сложности разработки

Reading time8 min
Views6.7K

SwiftUI – это молодая и пока что не совсем изученная технология. С одной стороны, большое пространство для творчества и исследования, а с другой – неизвестность, нестабильность и проблемы.

Так ли просто писать на SwiftUI, как показывают на WWDC? Я расскажу о сложностях, с которыми столкнулся лично я во время написания собственного приложения. Оно полностью написано на SwiftUI и выложено в App Store.

Какие проблемы могут встретиться во время разработки? Давайте разбираться.

Читать далее

Как Uber переписал приложение iOS на Swift

Reading time9 min
Views15K
Итак, друзья, садитесь в кружок и послушайте историю самой большой инженерной катастрофы, в которой я участвовал. Это история о политике, архитектуре и логической ошибке невозвратных затрат (вы уж извините, просто сейчас пью Aberlour Cask Strength Single Malt Scotch).


Шёл 2016 год. Трампа ещё не избрали президентом, поэтому движение #DeleteUber пока не началось. Трэвис Каланик оставался гендиром, мы переживали фазу гиперактивного роста с открытием филиалов в других странах, общественные настроения в целом позитивные, все довольны, Uber на высоте.

Библиотека для работы с iOS-пермишенами, от идеи до релиза (часть 1)

Reading time7 min
Views3K

• Каĸ унаследовать Swift-ĸласс не целиĸом, а лишь то в нём, что тебе нужно?

• Каĸ позволить юзеру твоей CocoaPods- или Carthage-библиотеĸи ĸомпилировать лишь те её части, что он действительно использует?

• Каĸ раздербанить ресурсы iOS, чтобы достать оттуда ĸонĸретные системные иĸонĸи и лоĸализованные строĸи?

• Каĸ поддержать completion blocks даже там, где это не предусмотрено дефолтным API системных разрешений?

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

Впечатление от Стэнфордских курсов CS193P Весна 2020 г.: Разработка iOS приложений с помощью SwiftUI

Reading time10 min
Views11K


Стэнфордский университет, США — один из лучших в мире в области информатики (Computer Science). Он щедро делится своими курсами, и одним из самых популярных и успешных курсов является курс CS193P по разработке приложений на iOS, который читает профессор Пол Хэгерти.
Предложенные в весеннем семестре 2020 года лекции Стэнфордского курса CS193P «Developing  Application for iOS with SwiftUI» («Разработка приложений для iOS с использованием SwiftUI») были прочитаны студентам Стэнфорда с ориентацией на новый продукт, предоставленный Apple разработчикам в 2019 г, — фреймворк SwiftUI для разработки реактивного пользовательского интерфейса (UI). На сайте курса вы найдете материалы, которые были предоставлены студентам Стэнфорда в течение весеннего семестра 2020 г.: ссылки на видео, слайды, домашние задания и код демонстрационных примеров. Русскоязычный конспект курса представлен здесь.

SwiftUI — это совершенно новая вещь, которой было всего несколько месяцев от роду на момент прочтения лекций. Но это самый передовой край технологий, которые, наконец, добрались до разработки приложений на iOS. В июне 2020 г. состоялась международная конференция разработчиков Apple WWDC и там была представлена следующая версия SwiftUI 2.0. Изменения в версии SwiftUI 2.0 отражены на сайте курса на закладке WWDC.
Читать дальше →

Вышел Puppy Linux 9.5, дистрибутив для устаревших и слабых ПК и ноутбуков

Reading time2 min
Views43K

Разработчики Puppy Linux выпустили новый релиз — 9.5 (FossaPup). Его загрузочный образ занимает всего 409 МБ. Новинка основана на пакетной базе Ubuntu 20.04 и Woof-CE, инструмента, который дает возможность использовать пакетные базы сторонних дистрибутивов.

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

Почему единственный вид деревьев не победил все остальные?

Reading time26 min
Views53K

«Лес красив, дремуч, высок», — писал Роберт Фрост. Этот ямб вспоминается мне каждый раз, когда я начинаю путь по расположенной недалеко от моего дома лесной тропе. Тропу назвали в честь Фроста, который провёл несколько лет в этой части Массачусетса, обучая мальчиков в блейзерах с медными пуговицами из Амхерстского колледжа. Прогуливался ли поэт среди именно этих деревьев? Такое возможно, хотя тогда, век назад, они были ещё молодняком. Как бы то ни было, если он и останавливался возле этого леса, то ненадолго, ведь «ждут меня сегодня в срок, а до ночлега путь далек».

Когда я шёл тропой Фроста, она привела меня к непримечательной лужайке в лесистой местности Северо-запада, зажатой между шоссе, домами и городской свалкой. Она не была ни дремучей, ни высокой, и ощущение близости людей никогда не пропадало. Это не был девственный лес, однако он был достаточно лесистым не только для того, чтобы вспомнить рифмы популярных поэтов, но и задаться сложными вопросами о деревьях и лесах — вопросами, которые волновали меня уже многие годы. Почему деревья такие высокие? Почему они не становятся выше? Почему их листья имеют такое разнообразие форм и размеров? Почему деревья являются деревьями (в том смысле, который используется в теории графов), а не имеют какую-то другую структуру? И был ещё один вопрос, который бы я хотел обсудить сегодня:

Сегодняшний вопрос: почему в смешанном лесу виды деревьев остаются смешанными?

Huawei анонсировала альтернативу Android для своих планшетов, часов и смартфонов

Reading time2 min
Views31K


Полтора года назад правительство США приняло решение ввести санкции против китайской компании Huawei. В итоге китайцы лишились доступа к большому количеству ресурсов, с ними оборвали связи почти все поставщики электронных компонентов, которые зависят от США.

Кроме «железа», Huawei лишилась и возможности использовать ОС Android с сервисами Google. Компания приняла решение создать альтернативную мобильную ОС для собственных устройств. Спустя год эта операционная система анонсирована, кроме того, компания объявила о сроках запуска первых устройств на собственной ОС.

Антиформаты не-идеального DevOps Live

Reading time6 min
Views1.9K
Обычно на конференции по DevOps приезжает выступать передовой ТОП докладчиков, которые «съели Docker и Kubernetes на завтрак» и рассказывают о своем успешном опыте при наличии почти неограниченных возможностей корпораций, в которых они работают. На DevOps Live 2020 все будет немного по-другому. 



DevOps стирает границы между разработкой и инфраструктурой, а DevOps Live 2020 размывает границы между докладчиком и слушателем. В этом году онлайн-формат позволяет отказаться от концепции докладов, в которых спикеры рассказывают как они использовали «режима Бога» в DevOps. У большинства из нас нет таких чит-кодов, а есть обычные стандартные проблемы при минимальных ресурсах. У большинства из нас DevOps не-идеальный — его мы и хотим показать. Как это будет и что нас ждет, расскажем дальше.
Читать дальше →

«Ну, покати!» или CI/CD мобильных приложений на основе контракта

Reading time8 min
Views9.5K

Всем привет! Меня зовут Дмитрий, я релиз-инженер в команде CI/CD Speed Авито. Вот уже несколько лет мы с коллегами отвечаем за всё, что связано с релизами наших мобильных приложений и не только. Про наши «релизные поезда» и как мы к этому шли уже очень подробно рассказывал Алексей Шпирко.


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


Читать дальше →

Как получить 100% зрения и даже больше

Reading time12 min
Views67K
Практика показывает, что далеко не каждый человек знает, что такое острота зрения. Например, если вы узнаете, что курица видит на 300%, то есть точно лучше каждого из нас, и глаза у нее видят по-разному — то вы удивитесь.

В древние времена остроту зрения проверяли по созвездию Большой Медведицы в ночном небе. Это созвездие напоминает «ковш с ручкой» и практически всегда видно на ночном небе. Так рядом со второй звездой от конца «ручки ковша» (Мицар) находится малозаметная небольшая звезда Алькор («забытая, незначительная»). Способность видеть эту малозаметную звезду считалась традиционным способом проверки зрения, условной нормой. То есть, система была бинарная – «вижу» и «не вижу».


Эра починки зрения началась несколько столетий назад, использовать для этого лазер стали всего пару десятилетий назад и совершили технологический скачок до эндоскопической коррекции зрения ReLEX SMILE, о ней писала здесь.

В мире с 1985 года выполнено более 60 миллионов процедур по лазерной коррекции зрения! И все эти люди счастливы, что получили 100% зрение, спросите вы? А теперь самое интересное – нет, не все счастливы. И уж точно не у всех 100%.

Что может быть причиной не 100% зрения, почему люди «щурятся», как оценивать показатели приборов, которые измеряют параметры глаза, в том числе после лазерной коррекции, можно ли им доверять, как избежать багов при тестировании, какие исследования, зачем и когда необходимы, чтобы прояснить картину?

Поделюсь тем, что должен знать офтальмолог, и как правило, о чем не в курсе пациент.
Читать дальше →

Проект Natasha. Набор качественных открытых инструментов для обработки естественного русского языка (NLP)

Reading time34 min
Views108K
Два года назад я писал на Хабр статью про Yargy-парсер и библиотеку Natasha, рассказывал про решение задачи NER для русского языка, построенное на правилах. Проект хорошо приняли. Yargy-парсер заменил яндексовый Томита-парсер в крупных проектах внутри Сбера, Интерфакса и РИА Новостей. Библиотека Natasha сейчас встроена в образовательные программы ВШЭ, МФТИ и МГУ.

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

Для новостных статей качество на всех задачах сравнимо или превосходит существующие решения. Например с задачей NER Natasha справляется на 1 процентный пункт хуже, чем Deeppavlov BERT NER (F1 PER 0.97, LOC 0.91, ORG 0.85), модель весит в 75 раз меньше (27МБ), работает на CPU в 2 раза быстрее (25 статей/сек), чем BERT NER на GPU.

В проекте 9 репозиториев, библиотека Natasha объединяет их под одним интерфейсом. В статье поговорим про новые инструменты, сравним их с существующими решениями: Deeppavlov, SpaCy, UDPipe.

Наша огромная гордость: мирные советские роботы-комбайны убрали первый урожай в южных регионах

Reading time10 min
Views79K
image
А ведь в прошлом году это делали senior-разработчики.

Возможно, вы помните, что мы говорили про то, как можно сильно улучшить работу обычного сельскохозяйственного комбайна, если использовать нейросетки для распознавания культур и препятствий и робота для автопилотирования. Всё это (кроме процессоров Nvidia и ещё части железа) — наша разработка. А радость в том, что в некоторых южных регионах страны закончилась уборочная страда, и наши комбайны показали себя лучше, чем ожидалось. Слава роботам!

image

В этом году мы поставили несколько сотен блоков из мощного графического ядра (для нейросетей), камер, гидравлических насосов или CAN-модулей для подруливания. Если в прошлом году агропилоты были в опытной эксплуатации, то сейчас речь идёт уже про серийные модели. И они справились.

Более того, они справились лучше, чем мы ждали. Кроме того, в релиз вошли далеко не все фичи. В релизе осталось, по сути, ядро, но одно только это позволило получить очень заметный экономический эффект.

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

Information

Rating
Does not participate
Location
Кишинев, Молдова, Молдова
Date of birth
Registered
Activity