Pull to refresh
44
Karma
0
Rating
Сергей Плаксиенко @the_toon

Продакт

Куда уходит время? Боремся за миллисекунды в Kubernetes

Ozon Tech corporate blog High performance *System administration *IT Infrastructure *Kubernetes *
✏️ Technotext 2022

Привет, Хабр! Меня зовут Вова, я разрабатываю observability-платформу в Ozon. Как-то раз в наш уголок на 42 этаже заглянули коллеги — и поделились наблюдением. Если открыть рядом графики времён запросов и ответов двух живущих в Kubernetes и общающихся между собой микросервисов, то иногда можно наблюдать большую разницу в высоких квантилях: клиент считает, что один ответ из сотни ему приходит за сто миллисекунд, сервер же говорит, что успевает ответить за десять.

Куда ушло время? Можно ли его вернуть? Под катом расскажу о том, с какими граблями может столкнуться микросервис, живущий в типичной инсталляции Kubernetes.

Читать далее
Total votes 141: ↑140 and ↓1 +139
Views 17K
Comments 23

Как раздвинуть кости черепа, чтобы легче дышалось: место, где в стоматологии сошлись сразу три новые технологии

Белая Радуга corporate blog Popular science Biotechnologies Health
image
Этими винтами хочется попадать в нужное место кости очень точно и под очень правильным углом.

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

Коротко это выглядит так: делаем оптический слепок рта внутриротовым сканером изнутри, накладываем поверх этого данные КТ, загоняем в аналог Архикада для ортодонтов (Dolphin), совмещаем, рассчитываем оптимальное место для имплантов — мини-винтов, печатаем навигационный шаблон из пластика и выпекаем лазером аппарат, потом вставляем одно в другое, потом вкручиваем это в пациента и радуемся. Получается идеальная точность. А это, знаете ли, важно, когда вы решаете взять и раздвинуть кости черепа ребёнку.

Зачем раздвигать нёбо ребёнку? Потому что так получилось, что детям нужно дышать. И иногда из-за неправильного развития мышц или генетики нёбо получается не той формы, чтобы кислород в достаточном количестве попадал к мозгу. Ребёнок начинает отставать в развитии и приобретает вид юного алкоголика (я имею в виду мешки под глазами).

Раньше винты вкручивали на глаз, и это было более травматично и немного неточно. Чуточку. Раз в пять. Под катом будет несколько фотографий фрагментов головы человека с не совсем привычных ракурсов, поэтому, если вы кушаете, то, возможно, стоит сначала доесть, а потом открывать пост.
Читать дальше →
Total votes 139: ↑138 and ↓1 +137
Views 35K
Comments 54

Strace в Linux: история, устройство и использование

Badoo corporate blog Configuring Linux *System administration *Programming **nix *
🔥 Technotext 2020


В Unix-подобных операционных системах общение программы с внешним миром и операционной системой происходит через небольшой набор функций — системных вызовов. А значит, в отладочных целях полезно бывает подсмотреть за выполняемыми процессами системными вызовами.


Следить за «интимной жизнью» программ на Linux помогает утилита strace, которой и посвящена эта статья. К примерам использования «шпионского» оборудования прилагаются краткая история strace и описание устройства подобных программ.

Читать дальше →
Total votes 86: ↑86 and ↓0 +86
Views 41K
Comments 27

Краткая и на 146% точная история языков программирования

Programming *History of IT
Translation


1800


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


1842


Ада Лавлейс, устав от положенного по социальному классу безделья, делает наброски в блокноте, которые станут известны как первая компьютерная программа. С поправкой, конечно, на то, что компьютеров тогда ещё не было.

Читать дальше →
Total votes 195: ↑181 and ↓14 +167
Views 78K
Comments 154

Критика протокола и оргподходов Telegram. Часть 1, техническая: опыт написания клиента с нуля — TL, MT

Perl *Abnormal programming *System Analysis and Design *Network technologies *API *

В последнее время на Хабре стали чаще появляться посты о том, как хорош Telegram, как гениальны и опытны братья Дуровы в построении сетевых систем, и т.п. В то же время, очень мало кто действительно погружался в техническое устройство — как максимум, используют достаточно простой (и весьма отличающийся от MTProto) Bot API на базе JSON, а обычно просто принимают на веру все те дифирамбы и пиар, что крутятся вокруг мессенджера. Почти полтора года назад мой коллега по НПО "Эшелон" Василий (к сожалению, его учетку на Хабре стёрли вместе с черновиком) начал писать свой собственный клиент Telegram с нуля на Perl, позже присоединился и автор этих строк. Почему на Perl, немедленно спросят некоторые? Потому что на других языках такие проекты уже есть На самом деле, суть не в этом, мог быть любой другой язык, где еще нет готовой библиотеки, и соответственно автор должен пройти весь путь с нуля. Тем более, криптография дело такое — доверяй, но проверяй. С продуктом, нацеленным на безопасность, вы не можете просто взять и положиться на готовую библиотеку от производителя, слепо ему поверив (впрочем, это тема более для второй части). На данный момент библиотека вполне работает на "среднем" уровне (позволяет делать любые API-запросы).


Тем не менее, в данной серии постов будет не так много криптографии и математики. Зато будет много других технических подробностей и архитектурных костылей (пригодится и тем, кто не будет писать с нуля, а будет пользоваться библиотекой на любом языке). Итак, главной целью было — попытаться реализовать клиент с нуля по официальной документации. То есть, предположим, что исходный код официальных клиентов закрыт (опять же во второй части подробнее раскроем тему того, что это и правда бывает так), но, как в старые времена, например, есть стандарт по типу RFC — возможно ли написать клиент по одной лишь спецификации, "не подглядывая" в исходники, хоть официальных (Telegram Desktop, мобильных), хоть неофициальных Telethon?

Ответ на этот вопрос неоднозначен
Total votes 187: ↑182 and ↓5 +177
Views 61K
Comments 240

Нетипичный «ls» — Habr Edition

Abnormal programming **nix *Shells *
image

Всем привет!

После вчерашнего поста о замене штатного ls другими штатными (или не очень) утилитами, я просто не мог пройти мимо комментов, особенно учитывая то что пост взлетел на вершины хит-парадов и за сутки его прочитало 18k, с хвостиком человек. Хабровчане подарили миру много новых способов избавиться от ls. Я их все (но это не точно) проверил, некоторые «причесал», что бы они соответствовали условиям задачи, и хочу поделиться с вами. Наслаждайтесь!
Читать дальше →
Total votes 46: ↑39 and ↓7 +32
Views 15K
Comments 53

Kafka и микросервисы: обзор

AvitoTech corporate blog Database Administration *Data storage *Data storages *Microservices *


Всем привет. В этой статье я расскажу, почему мы в Авито девять месяцев назад выбрали Kafka, и что она из себя представляет. Поделюсь одним из кейсов использования — брокер сообщений. И напоследок поговорим о том, какие плюсы мы получили от применения подхода Kafka as a Service.

Читать дальше →
Total votes 53: ↑53 and ↓0 +53
Views 104K
Comments 109

Генерируем одноразовые пароли для 2FA в JS с помощью Web Crypto API

Information Security *Website development *JavaScript *Programming *
Tutorial
Translation

Введение


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


Уверен, все, кто читают эту статью, хотя бы раз использовали двухфакторную аутентификацию (далее — 2FA, уж больное длинное словосочетание) в своей жизни. Сегодня я приглашаю вас разобраться, как устроена эта технология, ежедневно защищающая бесчисленное количество аккаунтов.


Но для начала, можете взглянуть на демо того, чем мы сегодня займемся.

Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Views 15K
Comments 10

Ещё лучшая ZIP-бомба

Information Security *Open source *Software
Translation
В статье показано, как создать нерекурсивную zip-бомбу, которая обеспечивает высокую степень сжатия путём перекрытия файлов внутри zip-контейнера. «Нерекурсивная» означает, что она не зависит от рекурсивной распаковки декомпрессорами файлов, вложенных в zip-архивы: здесь всего один раунд. Выходной размер увеличивается квадратично от входного, достигая степени сжатия более 28 миллионов (10 МБ → 281 ТБ) в пределах формата zip. Ещё большее расширение возможно с помощью 64-разрядных расширений. Конструкция использует только наиболее распространённый алгоритм сжатия DEFLATE и совместима с большинством парсеров zip.

  • zbsm.zip 42 kB → 5.5 GB
  • zblg.zip 10 MB → 281 TB
  • zbxl.zip 46 MB → 4.5 PB (Zip64, менее совместима с парсерами)

Исходный код:
git clone https://www.bamsoftware.com/git/zipbomb.git
zipbomb-20190702.zip

Данные и исходники иллюстраций:
git clone https://www.bamsoftware.com/git/zipbomb-paper.git
Читать дальше →
Total votes 176: ↑176 and ↓0 +176
Views 112K
Comments 53

Быстрая генерализация маркеров на WebGL-карте

2ГИС corporate blog JavaScript *Programming *Geoinformation services *WebGL *

image


Маркеры — дело полезное. Полезное в разумных количествах. Когда их становится слишком много, польза улетучивается. Как поступить, если требуется отметить на карте поисковую выдачу, в которой десятки тысяч объектов? В статье я расскажу, как мы решаем эту задачу на WebGL-карте без ущерба для её внешнего вида и производительности.

Генерализируем
Total votes 36: ↑36 and ↓0 +36
Views 7.2K
Comments 17

Утилиты командной строки могут быть в 235-раз быстрее вашего Hadoop кластера

High performance *Algorithms *Big Data *Hadoop *
Translation
Примечания tsafin:

Перед публикацией своего цикла статей по MapReduce в Caché, мне показалось важным озвучить данную прошлогоднюю точку зрения из статьи Адама Дрейка «Command-line tools can be 235x faster than your Hadoop cluster». К сожалению оригинальная статья Тома Хайдена, на которую он ссылается стала уже недоступна на сайте Тома, но её, по-прежнему, можно найти в архивах. Для полноты картины предлагаю ознакомиться и с ней тоже.

Введение


Посещая в очередной раз свои любимые сайты, я нашел крутую статью Тома Хайдена об использовании Amazon Elastic Map Reduce (EMR) и mrjob для вычисления статистики отношения выигрыш/проигрыш в наборе данных со статистикой по шахматным матчам, которую он скачал с сайта millionbase archive, и c которой он начал играться используя EMR. Так как объем данных был всего 1.75GB, описывающий 2 миллиона шахматных партий, то я скептически отнесся к использованию Hadoop для данной задачи, хотя были и понятны его намерения просто поиграться и изучить плотнее, на реальном примере, утилиту mrjob и инфраструктуру EMR.
Читать дальше →
Total votes 70: ↑66 and ↓4 +62
Views 45K
Comments 48

19 советов по повседневной работе с Git

VK corporate blog Website development *Programming *Git *
Tutorial
Translation


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

Читать дальше →
Total votes 152: ↑149 and ↓3 +146
Views 277K
Comments 62

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

Одноклассники corporate blog High performance *
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
Читать дальше →
Total votes 110: ↑104 and ↓6 +98
Views 91K
Comments 73

Видео с LoveQA митапа

Badoo corporate blog IT systems testing *
Спешим поделиться видео с нашего LoveQA митапа, который в этом году мы проводили на РИТ-Фестивале. Если у вас есть вопросы к докладчикам, то ждем их в комментариях. Мы обязательно ответим!

1. «Эволюция php code coverage в Badoo», Илья uyga Агеев, Head of Q/A department.




Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 8.8K
Comments 2

Ethernet Library или почему в природе не существует серверов на Arduino

Network hardware Smart House DIY
image

В этой статье я опишу ситуацию с которой столкнулся во время разработки проекта Arduino Mega Server. Суть дела заключается в том, что существует такая библиотека Arduino Ethernet Library, написанная для поддержки сетевой платы Ethernet Shield на чипе W5100. Это стандартная плата и стандартная библиотека, которая многие годы поставляется в комплекте со средой разработки Arduino.

И эта библиотека является основой для всех проектов, использующих обмен информацией по проводной сети. Так вот, оказалось, что эта библиотека попросту профнепригодна. На ней в принципе невозможно построить нормальное сетевое взаимодействие. Можно только «баловаться» одиночными запросами и ответами. Ни о каком построении серверов на базе этой библиотеки речь не может идти. Почему?
Читать дальше →
Total votes 62: ↑61 and ↓1 +60
Views 63K
Comments 74

Новые курсы на Хекслете: React, Ansible и другие

Хекслет corporate blog PHP *Regular expressions *ReactJS *
Привет, Хабр!

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

  • Мы открыли публичный чат сообщества Хекслет в Слаке! Там можно общаться с другими юзерами и с преподавателями. Есть специальные каналы по отдельным курсам и темам, есть даже канал для изучения английского языка.
  • Оповещения о выходе новых уроков в ваших курсах теперь приходят на почту и появляются в уведомлениях на сайте.
  • На сайте теперь появляются запланированные курсы, которые находятся сейчас в разработке (подробнее о них ниже). На эти курсы можно подписаться заранее.
  • В разделе «Песочница» находятся бесплатные курсы в свободном формате от других пользователей Хекслета. Вы тоже можете создать свой практический курс!
  • За прохождения уроков начисляются баллы, а на главной странице можно видеть свою позицию в топе пользователей.

А теперь — новые курсы:

Основы Ansible




Системы управления конфигурацией и оркестрации – важные инструменты в арсенале современного разработчика и системного администратора. Цель этого курса – научиться работать с Ansible, популярным инструментом управления конфигурацией. Как мы писали ранее, Ansible активно используется при разработке и деплое Хекслета.
Читать дальше →
Total votes 33: ↑29 and ↓4 +25
Views 16K
Comments 12

Донор с необычной кровью спас 2 000 000 детей

Popular science Biotechnologies
Вот уже более 60 лет австралиец Джеймс Харрисон (James Harrison) практически каждую неделю ходит сдавать плазму крови. Почётный донор давным-давно удостоился прозвища Человек с золотой рукой, и это не просто так. Своей правой рукой, куда ему более 1000 раз вставляли иглу аппарата для плазмофереза, за прошедшие годы он спас более двух миллионов человек!

Ещё в юности Джеймс пережил серьёзную операцию на грудной клетке, ему удалили лёгкое. Это произошло в далёком 1951 году, когда нашему герою было 14 лет. Жизнь подростку удалось спасти благодаря неизвестным донорам, которые пожертвовали 13 единиц крови (6,5 л). Тогда Джеймс раз и навсегда решил, что он достаточно взрослый и тоже станет донором крови.

Вскоре после того, как парень начал сдавать кровь, его вызвали к врачам для разговора.
Читать дальше →
Total votes 126: ↑116 and ↓10 +106
Views 57K
Comments 18

Need For Speed III Modern Patch: более 100 изменений без исходных кодов

Software Games and game consoles
imageКогда я впервые увидел Need For Speed III, от изумления я даже присел. Диск шёл в подарок к видеокарте моего первого компьютера, и это была первая трёхмерная игра в моей жизни. До этого момента я совершенно не подозревал, что графика в играх может быть настолько потрясающей. Это был далёкий 2000 год. Не счесть количество часов, потраченных на игру в сплитскрине за одной клавиатурой с моим двоюродным братом… Музыке — отдельное слово. Мне она настолько нравилась, что я даже записывал её на кассету, а с кассеты потом обратно на компьютер, при помощи стандартной «Звукозаписи». Это единственное что я тогда смог придумать. Слушал я эти записи по кругу по много часов подряд. MP3? Что это за странные буквы? Только WAV, только хардкор!

И вот, годы спустя, мне захотелось сыграть в эту игру. Но она не заработала на современном железе. Пришлось разбираться. В процессе захотелось ещё и поддержку широкоформатных разрешений… и понеслась! Немного увлёкся этим делом, и в результате получился внушительный патч. Более 8000 строк на ассемблере, исписано 18 листов А4, огромный список изменений…
Читать дальше →
Total votes 87: ↑86 and ↓1 +85
Views 47K
Comments 55

Пример воронки продаж сервисной IT-компании с проектной структурой производства

Собака Павлова corporate blog E-commerce management *Finance in IT
Спасибо спамерам-лэндингпейджерам: теперь статистически все знают термин «воронка продаж». Правда, в основном он применяется тогда, когда нужно довести клиента до контакта. Но по настоящему-то доводить нужно — до сделки.

Однако воронка продаж — инструмент вовсе не для выноса мозга клиенту. Как оказалось и еще не раз окажется, критическая проблема чуть ли не любого IT-бизнеса — это превращение продажников из пинаемых организмов в самодвижущихся боевых роботов.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 12K
Comments 8

Готовимся к собеседованию по PHP: псевдотип «callable»

Abnormal programming *Website development *PHP *Programming *
Tutorial
Не секрет, что на собеседованиях любят задавать каверзные вопросы. Не всегда адекватные, не всегда имеющие отношение к реальности, но факт остается фактом — задают. Конечно, вопрос вопросу рознь, и иногда вопрос, на первый взгляд кажущийся вам дурацким, на самом деле направлен на проверку того, насколько хорошо вы знаете язык, на котором пишете.
image
Вторая часть серии статей посвящена одному из самых сложных и объемных вопросов о современном PHP — что такое «callable»? Я постарался свести в один текст некий минимум знаний об этом вопросе.
Подробный разбор неочевидных мест мануала - под катом
Total votes 37: ↑36 and ↓1 +35
Views 88K
Comments 65

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity