Обновить
56
0.1
Alexander@speshuric

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

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

От High Ceph Latency к Kernel Patch с помощью eBPF/BCC

Время на прочтение9 мин
Охват и читатели6.3K
image

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

Логи не нужны?

Время на прочтение10 мин
Охват и читатели38K
Разработка сильно изменилась за последние годы. Вместо монолитных приложений пришли микросервисы и функции. Базы данных из универсальных промышленных монстров переродились в узконаправленные. Docker изменил взгляд на деплой. Но изменилось ли наше представление о логах?

Одна из больших проблем в Яндекс.Вертикалях были логи — 18 ТБ в день и 250 000 логов в секунду, все пишется в файлы. Логи разнородные, потому что много языков: Scala, Java, Python, Go. Потом их собирает Fluent Bit, пишет в Kafka, на одной железной машине работают обработчики, собирают из Kafka и пишут всё на диск. При этом это уже вторая версия логов.



Как следствие, возникает проблема долгого поиска. По этим логам поиск идет с помощью grep. На некоторых сервисах grep может достигать часов. Если у вас есть проблемы в продакшн, вы не будете часами искать свои логи. Чтобы решить проблему, в Яндекс решили написать свой велосипед доставки логов для поиска. Что из этого получилось, расскажет Алексей Данилов (danevge) — разработчик команды инфраструктуры в Яндекс.Вертикалях. Разрабатывает, пишет и поддерживает проекты auto.ru и Яндекс.Недвижимость.

Дисклеймер. Статья рассказывает о современной разработке и подходит для микросервисной архитектуры. Здесь представлены различные продукты — это инструменты, которые используют в Яндекс.Вертикалях. Под другие условия возможны аналоги удачнее, но они выполняют практически те же функции.
Читать дальше →

Как выстроить процессы и перестать издеваться над командой

Время на прочтение10 мин
Охват и читатели61K
Всем привет! Сегодня хотел поговорить о процессах разработки. По мере роста компании не только развивается сам бизнес, но и копятся проблемы внутри, в частности в процессе разработки. Часто их пытаются решить внедрением каких-то практик и новомодных методологий. Увы, это насильное перестраивание процесса по книжкам и тренингам нередко это приводит к ещё большим проблемам — издевательству над людьми.

Недавно я выступал на конференции Saint TeamLead Conf 2019, в докладе я рассказал о том, как смог найти ряд проблем в рабочем процессе и потом постепенно поборол их. Здесь я постараюсь описать наиболее ценные практики, которые мне помогли не только наладить рабочий процесс, но и перестать издеваться над разработчиками. У сотрудников изменилось отношение к компании в целом и рабочему процессу.

Правильная работа с потоками в Qt

Время на прочтение13 мин
Охват и читатели103K
Qt — чрезвычайно мощный и удобный фреймворк для C++. Но у этого удобства есть и обратная сторона: довольно много вещей в Qt происходят скрыто от пользователя. В большинстве случаев соответствующая функциональность в Qt «магически» работает и это приучает пользователя просто принимать эту магию как данность. Однако когда магия все же ломается то распознать и решить неожиданно возникшую на ровном казалось бы месте проблему оказывается чрезвычайно сложно.

Эта статья — попытка систематизации того как в Qt «под капотом» реализована работа с потоками и о некотором количестве неочевидных подводных камней связанных с ограничениями этой модели.

Основы
Thread affinity, инициализация и их ограничения
Главный поток, QCoreApplication и GUI
Rendering thread
Заключение

А Вы правильно работаете с QThread и сигналами?

Зачем нужны ranges из C++20 в простой числодробилке?

Время на прочтение7 мин
Охват и читатели12K

В последнее время интервалы (ranges), которые должны войти в стандарт C++20, довольно много обсуждают, в том числе и на Хабре (пример, где много примеров). Критики интервалов хватает, поговаривают, что


  • они слишком абстрактны и нужны только для очень абстрактного кода
  • читаемость кода с ними только ухудшается
  • интервалы замедляют код

Давайте посмотрим совершенно рабоче-крестьянскую практическую задачку, для того, чтобы понять, справедлива ли эта критика и правда ли, что Эрик Ниблер был укушен Бартошем Милевски и пишет range-v3 только при полной луне.


kdpv


Будем интегрировать методом трапеций вот такую функцию: $f(t) = 3 t^2 \sin t^3$, в пределах от нуля до $\tau$. Если $\tau^3 / \pi$ равняется нечётному числу, то интеграл равен 2.

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

C++ Enterprise Edition. Возможно ли?

Время на прочтение16 мин
Охват и читатели15K

C++ Enterprise Edition


Что такое "enterprise edition"


c++ee


Удивительно, но за все время моей работы в IT, я ни разу не слышал, чтобы кто-то говорил "enterprise edition" относительно языка программирования, кроме как для Java. Но ведь приложения для корпоративного сегмента люди пишут на многих языках программирования, и сущности, которыми оперируют программисты, если не идентичны, то схожи. И для c++ в частности, я бы хотел заполнить пробел enterpr'айзности, хотя бы рассказав об этом.

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

Доставку заказывали? Как «Перекрёсток» доставляет 6000 заказов в день

Время на прочтение6 мин
Охват и читатели27K
Люди любят доставку. За небольшую плату ты покупаешь возможность получить нужные товары, не выходя из дома: еду из любимого ресторана, крупногабаритную мебель, книгу, которую хотел давно прочитать, да и вообще — что угодно. И рост числа сервисов по быстрой доставке всего на свете только подтверждает этот тезис. Да и для магазинов это плюс — запартнёрился с любой доставкой товаров до двери и увеличил свой чек.

У нас в «Перекрёстке» есть собственная доставка. Для человека со стороны процесс доставки из магазина до дома выглядит примерно так:

  1. Выбрал что-то на сайте и положил в корзину.
  2. Ввёл адрес и оплатил заказ.
  3. Магазин быстро отдал заказ курьеру.
  4. Курьер доставил заказ.

На самом деле, всё немного сложнее. Меня зовут Виталий, я руководитель отдела разработки, и сегодня я расскажу, как у нас всё работает. И на чём.


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

gRPC в качестве протокола межсервисного взаимодействия. Доклад Яндекса

Время на прочтение16 мин
Охват и читатели276K
gRPC — опенсорсный фреймворк для удаленного вызова процедур. В Яндекс.Маркете gRPC используется как более удобная альтернатива REST. Сергей Федосеенков, который руководит службой разработки инструментов для партнеров Маркета, поделился опытом использования gRPC в качестве протокола для построения интеграций между сервисами на Java и C++. Из доклада вы узнаете, как избежать частых проблем, если вы начинаете использовать gRPC после REST, как возвращать ошибки, реализовать трассировку, отлаживать запросы и тестировать вызовы клиентов. В конце есть неофициальная запись доклада.

— Сначала хотелось бы познакомить вас с некоторыми фактами про Яндекс.Маркет, они будут полезны в рамках доклада. Первый факт: мы пишем сервисы на разных языках. Это накладывает требования по наличию клиентов для сервисов.
Читать дальше →

Для доказательства 30-летней гипотезы из области информатики хватило двух страничек

Время на прочтение8 мин
Охват и читатели61K

Гипотеза «чувствительности» ставила в тупик многих выдающихся специалистов по информатике, но её новое доказательство оказалось настолько простым, что один исследователь смог свести его к единственному твиту



Опубликованная этим летом работа ставит точку в почти 30-летней истории гипотезы, касающейся структуры фундаментальных строительных блоков компьютерных схем. Эта гипотеза «чувствительности» годами ставила в тупик многих выдающихся специалистов по информатике, но её новое доказательство оказалось настолько простым, что один исследователь смог свести его к единственному твиту.

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

Инициализация и работа интерпретатора байткода в JVM HotSpot под x86

Время на прочтение21 мин
Охват и читатели7K

Почти каждый Java разработчик знает, что программы, написанные на языке Java изначально компилируются в JVM-байткод и хранятся в виде class-файлов стандартизованного формата. После попадания таких class-файлов внутрь виртуальной машины и пока до них еще не успел добраться компилятор, JVM интерпретирует байткод, содержащийся в этих class-файлах. Данная статься содержит обзор принципов работы интерпретатора применительно к OpenJDK JVM HotSpot.

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

Reactor, WebFlux, Kotlin Coroutines, или Асинхронность на простом примере

Время на прочтение12 мин
Охват и читатели25K


Многие сервисы в современном мире, по большей части, «ничего не делают». Их задачи сводятся к запросам к другим базам/сервисам/кешам и агрегации всех этих данных по различным правилам и разнообразной бизнес-логике. Поэтому неудивительно, что появляются такие языки, как Golang, с удобной встроенной конкурентной системой, позволяющей легко организовывать неблокирующий код.


В JVM-мире всё немного сложнее. Есть огромное количество фреймворков и библиотек, блокирующих потоки при использовании. Так и сама stdlib может делать то же самое порой. Да и в Java нет аналогичного механизма, похожего на горутины в Golang.


Тем не менее, JVM активно развивается и появляются новые интересные возможности. Есть Kotlin с корутинами, которые по своему использованию очень похожи на горутины из Golang (хоть и реализованы совершенно по-другому). Есть JEP Loom, который в будущем привнесёт fibers в JVM. Один из самых популярных веб-фреймворков — Spring — не так давно добавил возможность создавать полностью неблокирующие сервисы на Webflux. А с недавним релизом Spring boot 2.2 интеграция с Kotlin стала ещё лучше.


Предлагаю на примере небольшого сервиса по переводу денег с одной карты на другую самим написать приложение на Spring boot 2.2 и Kotlin для интеграции с несколькими внешними сервисами.

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

Как бороться с привычками запрограммированным людям

Время на прочтение6 мин
Охват и читатели49K
Перевод статьи из микроблога биохакера Сержа Фаге.

В человеке есть запрограммированные паттерны поведения, которые всегда запускаются одним и тем же механическим, линейным способом. Так называемые «страстные желания» (англ. – cravings) – вещи и занятия, которые очень хочется начать делать в определённые моменты времени.

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


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

История видеопроцессоров, часть 3: консолидация рынка, начало эпохи конкуренции Nvidia и ATI

Время на прочтение20 мин
Охват и читатели18K
image

Часть 1: 1976-1995 годы

Часть 2: 3Dfx Voodoo

Падение 3Dfx и расцвет двух гигантов


На рубеже веков отрасль графики демонстрировала тенденции к дальнейшей консолидации.

С профессионального рынка полностью ушла iXMICRO, а NEC и Hewlett-Packard выпустили свои последние продукты — серии TE5 и VISUALIZE FX10. После продажи RealVision компания Evans & Sutherland тоже покинула отрасль, сосредоточившись на проекционных системах для планетариев.

На рынке потребительской графики ATI объявила о приобретении в феврале 2000 года ArtX Inc. за 400 миллионов долларов. ArtX разрабатывала GPU под кодовым названием Project Dolphin (который позже назвали «Flipper») для Nintendo GameCube, что значительно увеличило годовую прибыль ATI.


GPU компании ATI для GameCube

Также в феврале 3dfx объявила о сокращении штата на 20%, а сразу после этого купила Gigapixel за 186 миллионов и получила её технологии рендеринга на основе тайлов.

CreateRemoteThread для Linux

Время на прочтение46 мин
Охват и читатели15K

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


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


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


Для понимания текста потребуются базовые знания о системном программировании под Linux: язык Си, написание и отладка программ на нём, осознание роли машинного кода и памяти в работе компьютера, понятие системных вызовов, знакомство с основными библиотеками, навык чтения документации.

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

Необычные задачи по физике развивающие научное мышление (для школьников)

Время на прочтение3 мин
Охват и читатели29K
Возможно вы уже читали мои статьи:


А сегодня я хочу поделиться своим давним но интересным проектом и его идеей.

Когда я учился в аспирантуре, и работал в “Лаборатории методики преподавания физики” при Харьковском национального университета им. В.Н.Каразина, я обеспечивал свою семью за счет репетиторств. Хотелось давать ученикам возможность увидеть физику не только в учебнике но и в реальной жизни, удивить и завлечь их наукой. Тогда и пришла идея сделать простенький сайт, в помощь мне и учителям, которые приходили в нашу лабораторию на курсы повышения квалификации.



С тех пор прошло более 10 лет, сайт не развивался, но актуальность свою сохранил. Данный пост будет интересен как преподавателям, так и родителям, которые хотят, чтоб их ребенок любил и знал физику. Заодно сможете проверить и свои навыки.

В поисках LD_PRELOAD

Время на прочтение12 мин
Охват и читатели32K
Эта заметка была написана в 2014-м году, но я как раз попал под репрессии на хабре и она не увидела свет. За время бана я про неё забыл, а сейчас нашёл в черновиках. Думал было удалить, но авось кому пригодится.



В общем, небольшое пятничное админское чтиво на тему поиска «включенного» LD_PRELOAD.
Читать дальше →

Мой опыт разработки на языке Nim

Время на прочтение13 мин
Охват и читатели37K


Привет, Хабр!


Уже довольно давно я пишу свой игровой фреймворк — такой pet project для души. А так как для души нужно выбирать что-то, что нравится (а в данном случае — на чём нравится писать), то выбор мой пал на nim. В этой статье я хочу поговорить именно про nim, про его особенности, плюсы и минусы, а тема геймдева лишь задаёт контекст моего опыта — какие задачи я решал, какие трудности возникли.


Давным-давно, когда трава была зеленее, а небо чище, я встретил nim. Хотя нет, не так. Давным-давно я хотел заниматься разработкой игр, чтобы написать свою Самую Классную Игру — думаю, многие проходили через это. В те времена Unity и Unreal Engine только-только стали появляться на слуху и, вроде как, ещё не были бесплатными. Я не стал их использовать, не столько из-за жадности, сколько из-за желания написать всё самому, создать игровой мир полность с нуля, с самого первого нулевого байта. Да, долго, да, сложно, зато сам процесс приносит удовольствие — а что ещё для счастья надо?

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

Математики нашли закономерность, разбираясь в том, как избежать её появления

Время на прочтение9 мин
Охват и читатели15K

Мы, наконец, узнали, насколько большим должно быть множество чисел, чтобы в нём гарантировано содержалась закономерность под названием «многочленная прогрессия»




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

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

«Этим закономерностям присуща своего рода неразрушимость», — сказал Теренс Тао из Калифорнийского университета в Лос-Анджелесе.
Читать дальше →

ELFийские трюки в Go

Время на прочтение6 мин
Охват и читатели12K


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


Предупреждение: ничему полезному эта мини-статья вас не научит.

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

Как взлететь на батарейках или практика эксплуатации электропарамотора SkyMax. Часть 2

Время на прочтение4 мин
Охват и читатели22K
Продолжение статьи «Как взлететь на батарейках или немного теории электропарамотора. Часть 1».

4. Описание электропарамотора SkyMax.

В предыдущей статье уже фигурировала фотография внутреннего устройства используемой батареи в проекте. Она же — в собранном виде:

image

Кратко ее характеристики еще раз:

  • конфигурация 15S16P LG HG2;
  • номинальное напряжение 55 В;
  • ёмкость: 46 А-ч;
  • диапазон рабочих напряжений: 45 — 63 В;
  • продолжительный ток разряда: 80 А;
  • кратковременный ток разряда: 320 А;
  • запасаемая энергия: 2.6 кВт-ч;
  • сечение силовых проводов 4х6 кв.мм;
  • вес 12 кг.

Информация

В рейтинге
4 199-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность