Несколько лет назад, на проекте по разработке внутреннего портала для учебных заведений, занимающем практически весь датский рынок, я разработал прототип системы тестирования слоя данных, внедрил его в процесс разработки и обучил использованию две проектных команды. В данном посте я подведу итоги и расскажу об основных изменениях.
User
CancellationTokenSource и «утечки памяти»
Всем привет!
Я работаю в Тинькофф, в проекте «Тинькофф Телефония». Наша основная задача — организация IP-телефонии внутри компании и за ее пределами. В день через нас проходит несколько миллионов звонков. Всей этой кухней занимаются около 10 сервисов.
В какой-то момент мы столкнулись с проблемой: во время релиза сервисы останавливаются неприлично долго. Нас это печалило, поэтому мы приняли решение прокидывать везде и всюду CancellationToken.
Чуть позже столкнулись с другой проблемой: все наши сервисы начали потихоньку пожирать доступную память. Не так чтобы слишком сильно и быстро, но в целом в перспективе нескольких недель — заметно.
В один прекрасный день терпение лопнуло, и мы с Женей Мишустиным и Кириллом Марковым накинулись на эту проблему: Женя с Кириллом ловили и анализировали дампы, а я занимался поиском причин такого поведения.
В этой статье хочу рассказать о том, какой интересный подводный камень таит в себе CancellationTokenSource и как это связано с нашими «утечками» памяти.
Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel
• Разбираемся, как на самом деле считаются суммы и проценты в клиентском приложении.
• Собираем все данные по портфелю и по всем операциям через Tinkoff API.
• Строим огромную Excel таблицу со всеми данными.
• Узнаём, сколько комиссий и налогов с нас уже содрали и что нам останется при выводе.
• Пытаемся понять, что нам с этим делать.
Фермеры в США вынуждены взламывать тракторы, чтобы просто починить их
Люди начали выращивать еду около 10 000 лет назад, но древние сапиенсы и представить не могли, что в будущем для сбора кукурузы придётся сначала установить пиратскую украинскую прошивку, а потом разбираться в кодах неисправностей по протоколу OBD-II.
Обычно «хакерами» называют специалистов по компьютерной безопасности, которые ищут уязвимости в IT-системах. Но в США обычные фермеры сейчас вынуждены взламывать собственное оборудование только для того, чтобы оно работало.
На Хабре уже писали об этой абсурдной ситуации. Компания John Deere и другие крупные производители максимально затрудняют фермерам самостоятельный ремонт. Логика примерно такая же, как у Apple: мол, только сертифицированные специалисты из фирменных центров могут обеспечить высокий сервис, поэтому диагностические инструменты нельзя раздавать всем подряд, а только официальным дилерам.
НАСА: проложить путь людям на Марс может лишь ракета с ядерным реактором
На днях на Хабре публиковалась статья о сложностях высадки марсохода на поверхность Красной планеты. Если кратко, то рассчитать и реализовать эту высадку — чудовищно сложно. Еще сложнее организовать доставку на Марс людей — колонистов или космонатов-исследователей. Но если говорить о регулярном сообщении с Красной планетой, то проблема выходит на новый уровень.
Основная проблема — в отсутствии надежного транспортного средства. Сейчас идет подготовка ракеты и корабля от SpaceX, но до реального полета на Марс может пройти (и скорее всего, пройдет) несколько лет. Причем реактивная тяга такой ракеты образуется в результате сжигания жидкого топлива. А по мнению НАСА, ракеты на жидком топливе — не самый эффективный вид транспорта, нужны ядерные системы.
LIVENESS DETECTION — проверка идентификатора на принадлежность «живому» пользователю
Технологией распознавания лиц уже никого не удивить. Крупные компании активно внедряют эту технологию в свои сервисы и конечно, мошенники пытаются использовать разные способы, в том числе подмену идентификатора лица с помощью маски, фото или записи для осуществления своих преступных действий. Такая атака называется спуфингом.
Хотим познакомить вас с технологией liveness detection, в задачу которой входит проверка идентификатора на принадлежность «живому» пользователю.
Датасет можно скачать по ссылке.
Для обучения в датасете есть 4 подкласса.
Что же такого особенного в IAsyncEnumerable в .NET Core 3.0?
Одной из наиболее важных функций .NET Core 3.0 и C# 8.0 стал новый
IAsyncEnumerable<T>
(он же асинхронный поток). Но что в нем такого особенного? Что же мы можем сделать теперь, что было невозможно раньше?В этой статье мы рассмотрим, какие задачи
IAsyncEnumerable<
T>
предназначен решать, как реализовать его в наших собственных приложениях и почему IAsyncEnumerable<
T>
заменит Task<IEnumerable<
T>>
во многих ситуациях.Ознакомьтесь со всеми новыми функциями .NET Core 3
Повышаем надёжность HttpClient’а в .NET Core или как ошибиться в 3 строках кода 4 раза
За несколько недель до 14 февраля системе Dodo IS немного поплохело под нагрузкой. Одной из причин стало то, что в backend’ах мобильного приложения и сайта не совсем корректно работали политики поверх HttpClient’а (Retry, Circuit Breaker, Timeout). В этой статье я хочу поделиться с вами потенциальными проблемами, которые могут возникнуть при неправильном использовании таких политик.
Как реализовать игнор заблокированных пользователей в группах Telegram?
UPD: благодаря помощи Tkachov эта статья всё-таки превратилась из просьбы о помощи в работающую инструкцию. В комментариях он дал работающий код для создания игнора в десктопном клиенте Телеграм. Я на всякий случай расположу объяснение в конце статьи. Далее статья продолжается в том же виде, в каком была написана.
UPD: Сделал «сайт» для распространения готового приложения sites.google.com/view/ignoram
* * *
Я хотел бы попросить помощи у сообщества, потому что все собственные возможности я полностью исчерпал.
Можно было бы задать вопрос на сервисе Q&A (он же бывший Тостер) — только я это уже сделал, и пользы вышло не очень много.
Тем не менее, просто задавать вопрос под видом статьи мне кажется не очень корректным. Поэтому я попытаюсь добавить в текст предысторию всего этого процесса и рассказать, какие шаги уже предпринял.
Если повезёт, то кто-нибудь в комментариях подскажет решение. И тогда нашедшие эту статью в поисковиках тоже смогут эту проблему решить.
Information
- Rating
- Does not participate
- Registered
- Activity