Pull to refresh
1
0
Павел Ахрамеев @Akhrameev

iOS Разработчик

Send message

Хороший ретрай, плохой ретрай, или История одного падения

Level of difficultyMedium
Reading time17 min
Views45K

Порой простое и очевидное решение может потянуть за собой хвост проблем в будущем. Например, добавление ретраев.

Меня зовут Денис Исаев, и я работаю в Яндекс Go. Сегодня я поделюсь опытом решения проблем с отказоустойчивостью из-за ретраев. Основано на реальных инцидентах в системе из 800 микросервисов.

Этот пост — продолжение вымышленных историй о разработчике Васе, который несколько лет назад разбирался с идемпотентностью в распределённых системах. Теперь перед ним новые задачи — получится ли справиться с ними в этот раз? Давайте узнаем.

Читать далее
Total votes 152: ↑152 and ↓0+152
Comments33

Стажёр Вася и его истории об идемпотентности API

Reading time11 min
Views236K

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Total votes 219: ↑216 and ↓3+213
Comments163

Русские в Apple: как наши заполучили контракт на миллионы с помощью песен Beatles и «какого-то Джерри»

Reading time12 min
Views24K
Есть такой известный факт в истории российского IT: в 1991 году московской фирме «Параграф» удалось заключить крупный контракт с Apple.

image

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

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

О том, что произошло между двумя этими событиями, и пойдет речь ниже.

Все записано со слов очевидцев и восстановлено по материалом публикаций в прессе.
Меня зовут Максим Котин, я автор книг «Чичваркин Е… гений» и «И ботаники делают бизнес». И я продолжаю публиковать на «Хабре» глав из своей книги о «Параграфе» — первом стартапе из России, покорившем мир. В целом о замысле можно прочитать здесь.

Книга называется «Пионеры Кремниевой долины». Она еще в работе, но вы можете получить все написанные главы (в epub или pdf), подписавшись на мою бесплатную рассылку — на текущий момент закончено 13 глав.

Новые главы я присылаю подписчикам по мере готовности. Иногда я также делюсь в рассылке своими наблюдениями о бизнесе, стартапах и саморазвитии, но не чаще раза в неделю (например: Как справляться с адовыми задачами). Добро пожаловать, если что.

Глава 8, приведенная ниже, публикуется с небольшими сокращениями.
Читать дальше →
Total votes 69: ↑60 and ↓9+51
Comments68

6 перспективных российских стартапов. Выпуск №2 за 2023 год

Level of difficultyEasy
Reading time4 min
Views5.5K

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

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments8

Большая версия ruDALL-E, или Как отличить Кандинского от Малевича

Reading time13 min
Views61K

Прошло около полугода с момента выхода базовой модели ruDALL-E XL (1.3B), мы – команды Sber AI и SberDevices – получили много лайков и, как подобается таким разработкам, дизлайков. Всё хорошее отразилось в гигантском наплыве пользователей в первые недели релиза: порядка 800 тыс. уникальных пользователей (на текущий момент уже более 2 млн.), – 1.2k ⭐ в репозитории и последующем изрядном списке фантастических файнтюнов (Emojich XL, Surrealist XL, генератор кроссовок, генератор покемонов). Но если читатель обратится к прошлой статье, то обязательно вспомнит, что в ней речь шла о двух версиях модели: XL (1.3B) и XXL (12B). На достигнутом мы не остановились, поэтому, сделав релиз текущего на тот момент чекпоинта XXL на SberCloud, продолжили заниматься сбором данных и дообучением модели. И вот, наконец, мы готовы вывести её в свет.

Читать далее
Total votes 35: ↑33 and ↓2+41
Comments20

Контроль над ресурсами. Настраиваем SwiftGen

Reading time8 min
Views15K

Наверное, в каждом большом iOS-проекте — долгожителе можно наткнуться на иконки, которые нигде не используются, или обращения к ключам локализации, которые уже давно не существуют. Чаще всего такие ситуации возникают из-за невнимательности, а лучшее лекарство от невнимательности — автоматизация.


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


Какое-то время назад нам удалось взять ресурсы приложения под контроль с помощью утилиты SwiftGen. О том, как ее настроить, как с ней жить и как эта утилита помогает переложить проверку актуальности ресурсов на плечи компилятора, и пойдет речь под катом.


Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments5

Морти, мы в UltraHD! Как посмотреть любой фильм в 4K, дорисовав его через малоизвестную нейросеть

Reading time3 min
Views115K
Наверное, вы слышали про технологию Яндекса DeepHD, с помощью которой они как-то раз улучшили качество советских мультфильмов. Увы, в публичном доступе ее еще нет, а у нас, рядовых программистов, вряд ли найдутся силы написать свое решение. Но лично мне, как обладателю Retina-дисплея (2880х1800), недавно очень захотелось посмотреть «Рика и Морти». Какого же было мое разочарование, когда я увидел, как мыльно на этом экране выглядит 1080р, в котором существуют оригиналы этого мультсериала! (это прекрасное качество и обычно его вполне достаточно, но поверьте, ретина так устроена, что анимация с ее четкими линиями в 1080р выглядит мыльновато, словно 480р на FHD-мониторе)

Я твердо решил, что хочу увидеть этот мультсериал в 4К, хотя и совершенно не умею писать нейросети. Однако решение было найдено! Любопытно, что нам даже не придется писать код, понадобится лишь ~100 ГБ места на диске и немного терпения. А результат — четкое изображение в 4К, которые выглядит достойнее, чем любая интерполяция.

image
Читать дальше →
Total votes 222: ↑218 and ↓4+214
Comments187

We're in UltraHD Morty! How to watch any movie in 4K

Reading time3 min
Views14K
You’ve probably heard about Yandex’s DeepHD technology they once used to improve the quality of old Soviet cartoons. Unfortunately, it’s not public yet, and we, regular programmers, don’t have the dedication to write our own solution. But I personally really wanted to watch Rick and Morty on my 2880x1880 Retina display. And I was deeply disappointed, as even 1080p video (the highest available for this series) looks really blurry on a Retina display! Don’t get me wrong, 1080p is often good enough, but Retina is designed in such a way that an animation with its pronounced outlines in 1080p looks awfully blurry, like 480p on a FullHD monitor.

I decided I want to see Rick and Morty in 4K, even though I can’t write neural networks. And, amazingly, I found a solution. You don’t even need to write any code: all you need is around 100GB of free space and a bit of patience. The result is a sharp 4K image that looks better than any interpolation.


Read more →
Total votes 21: ↑19 and ↓2+17
Comments7

Червивые яблочки [БЕЗ JailBreak]

Reading time7 min
Views29K


Историями про вредоносное ПО для ОС Android никого уже сегодня не удивить, разве только про rootkit-технологии или про новые концепты, заточенные под новое runtime-окружение ART. C вредоносным ПО для iOS противоположная ситуация: о нем если кто и слышал, то, как правило, только в контексте jailbreak. В 2014 году был вообще бум таких программ (AdThief, Unflod, Mekie, AppBuyer, Xsser). Но в этой статье мы поговорим про вредоносное ПО и его возможности для iOS без jailbreak…
Читать дальше →
Total votes 41: ↑32 and ↓9+23
Comments10

Лекции Техносферы. 1 семестр. Алгоритмы интеллектуальной обработки больших объемов данных

Reading time3 min
Views48K
Продолжаем публиковать материалы наших образовательных проектов. В этот раз предлагаем ознакомиться с лекциями Техносферы по курсу «Алгоритмы интеллектуальной обработки больших объемов данных». Цель курса — изучение студентами как классических, так и современных подходов к решению задач Data Mining, основанных на алгоритмах машинного обучения. Преподаватели курса: Николай Анохин (@anokhinn), Владимир Гулин (@vgulin) и Павел Нестеров (@mephistopheies).



Объемы данных, ежедневно генерируемые сервисами крупной интернет-компании, поистине огромны. Цель динамично развивающейся в последние годы дисциплины Data Mining состоит в разработке подходов, позволяющих эффективно обрабатывать такие данные для извлечения полезной для бизнеса информации. Эта информация может быть использована при создании рекомендательных и поисковых систем, оптимизации рекламных сервисов или при принятии ключевых бизнес-решений.
Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments15

Сто строчек кода для любимой

Reading time5 min
Views59K
Я бы мог читать ей поэзию. Я бы мог забронировать столик в ресторане, устроить ужин при свечах: хорошее вино, услужливый официант, приличные люди вокруг. Нежно касаюсь её руки и шепчу:
— Любимая…


Но когда ко мне подошел коллега и сказал:
— Смотри, что я закодил для своей женщины.…
Я понял, что это — любовь. Это — навеки.
Я тоже хочу так.
Читать дальше →
Total votes 131: ↑92 and ↓39+53
Comments23

Ресайз картинок в браузере. Все очень плохо

Reading time10 min
Views104K
Если вы когда-нибудь сталкивались с задачей ресайза картинок в браузере, то вы наверное знаете, что это очень просто. В любом современном браузере есть такой элемент, как холст (<canvas>). На него можно нанести изображение нужных размеров. Пять строчек кода и картинка готова:

function resize(img, w, h) {
  var canvas = document.createElement('canvas');
  canvas.width = w;
  canvas.height = h;
  canvas.getContext('2d').drawImage(img, 0, 0, w, h);
  return canvas;
}

Из холста картинку можно сохранить в JPEG и, например, отправить на сервер. Можно было на этом закончить статью, но сперва давайте взглянем на результат. Если вы поставите рядом такой холст и обычный элемент <img>, в который загружена та же картинка (исходник, 4 Мб), то вы увидите разницу.

img
Читать дальше →
Total votes 156: ↑152 and ↓4+148
Comments90

Как я проходила собеседования в Яндекс: мой непростой, но успешный опыт

Reading time7 min
Views245K
Уже чуть больше полугода я работаю в поиске Яндекса релиз-инженером. И чуть ли не с первого рабочего дня хочу написать о том, как отзывалась на вакансию, как проходила собеседования, что мне в этом процессе понравилось, а что — не очень. Но сначала я входила в курс дела, а потом каждый день в моей работе появлялись такие интересные задачи, что я даже не была готов отвлечься от них на этот рассказ.

Вопрос для внимательных: сколько модулей отломится от корабля на старте?


А еще год назад у меня в жизни была вроде бы похожая, но в то же время совсем другая ситуация — времени на хобби не хватало, задач было много, но они не приносили мне никакого удовольствия. В итоге я решилась на перемены. На самом деле, эта позиция в Яндексе не была первой, которую я рассматривала. За то время, которое прошло до моего первого рабочего дня, я освежила в голове очень много тем. И перед финальным собеседованием мне пришлось взяться ещё за несколько. Сейчас я понимаю, какие ошибки совершила в этом процессе, поэтому хочу поделиться своим опытом с вами. Буду рада, если кому-то это будет полезно. Хочу сказать, что это не официальные рецепты от рекрутеров Яндекса, а только мои собственные выводы. В конце поста я поделюсь списком литературы, которая мне помогла в подготовке, и еще добавлю те источники, которые считаю полезными, оглядываясь назад.

Читать дальше →
Total votes 112: ↑87 and ↓25+62
Comments84

ReactOS Tech Talk на факультете ВМК МГУ

Reading time1 min
Views8.2K
18 декабря 2014 года на ежемесячном научно-практическом семинаре «Технологии разработки и анализа программ», организуемом Институтом системного программирования (ИСП) Роcсийской академии наук (РАН), Алексей Брагин выступил с докладом "Операционная система Реактос". Предлагаем всем желающим к просмотру видеозаписи и слайды с мероприятия.


Читать дальше →
Total votes 23: ↑16 and ↓7+9
Comments2

Трилатерация c помощью iBeacon

Reading time2 min
Views13K
В конце октября в Москве прошла конференция мобильных разработчиков #MBLTDev, на которой я рассказывал про трилатерацию с помощью iBeacon.

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


Презентация
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments12

Приглашаем на CocoaHeads Moscow 5 декабря

Reading time2 min
Views3.6K


Наступила зима, а значит уже через пару-тройку месяцев Apple представит долгожданные Apple Watch. Для того чтобы разработчики могли подготовиться к запуску, в ноябре был представлен Watch Kit, позволяющий писать приложения, использующие все возможности часов. Поэтому один из наших докладчиков, Зимин Александр, поделится своим мнением о Watch Kit, расскажет, как и с чем его едят, и покажет интерактивное демо. Так как это совершенно новый Kit, Александр надеется перевести свой доклад в дискуссию, где каждый, кто успел взглянуть на этот инструмент, выскажет свои мысли или поделится опытом.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments3

Обходим защиту iOS клиента Dropbox

Reading time5 min
Views32K


Что в первую очередь сделает iOS разработчик, если перед ним встанет задача спрятать пользовательские данные от любопытных глаз? Конечно же, встроит экран парольной защиты. Особо хитрый разработчик даже не будет хранить установленный пользователем пароль в NSUserDefaults, а аккуратно спрячет его в связку ключей — в этом случае приложение в глазах как его, так и заказчика, сразу же перемещается в разряд «сверхзащищенных».
Мы не будем углубляться в описание опасностей хранения ключа в открытом доступе — ведь есть гораздо более интересный способ обхода такой защиты.
Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments21

За один проход

Reading time7 min
Views156K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Total votes 73: ↑72 and ↓1+71
Comments56

Вызов не предопределенного метода в категории после его переопределения

Reading time3 min
Views2.8K
Бывают такие ситуации, при которых лучше написать категорию к классу, чем использовать наследование. Так же иногда существует потребность использовать оригинальный метод класса внутри категории, как если бы мы вызвали super при наследовании. О такой возможности иногда любят спрашивать на собеседованиях и почему-то уверены, что этого нельзя сделать. Google так же умалчивает о такой возможности. Кому интересно — добро пожаловать под кат.
Читать дальше →
Total votes 7: ↑5 and ↓2+3
Comments6

Postgres. Выборка N случайных записей

Reading time6 min
Views37K
При работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно так:

  • из N записей в базе необходимо выбрать m (3-5) случайных строк в серии из k выборок (преимущественно k=2).

А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.

Первое, что приходит в голову:

 SELECT *
  FROM data_set
  WHERE id NOT IN (1,2,3,4, 5)
  ORDER BY random()
  LIMIT 5;

И это даже будет работать. Вот только цена такого решения…
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments47

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity