Как стать автором
Обновить
0
Сафонов Леонид @Luckostaread⁠-⁠only

Frontend Developer в Ozon Tech

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

Как работает хэширование

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров74K

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

Хэш-функции фундаментальны и используются повсюду.

Но что же такое хэш-функции и как они работают?

В этом посте я собираюсь развенчать мифы вокруг этих функций. Мы начнём с простой хэш-функции, узнаем, как проверить, хороша ли хэш-функция, а затем рассмотрим реальный пример применения хэш-функции: хэш-таблицу.
Читать дальше →
Всего голосов 62: ↑59 и ↓3+70
Комментарии49

Вскрываем средство для DDoS-атак на российскую ИТ-инфраструктуру

Уровень сложностиСредний
Время на прочтение33 мин
Количество просмотров23K

Привет, Хабр! В начале апреля 2023 года на одном из хостов был обнаружен подозрительный файл mhddos_proxy_linux_arm64 (MD5: 9e39f69350ad6599420bbd66e2715fcb), загружаемый вместе с определенным Docker-контейнером. По открытым источникам стало понятно, что данный файл представляет из себя свободно распространяемый инструмент для осуществления распределённой атаки на отказ в обслуживании (DDoS), направленный против российской ИТ-инфраструктуры.

После запуска программа получает все необходимые настройки и автоматически
инициирует массированные сетевые подключения к целевым хостам на различных
уровнях TCP/IP для осуществления отказа в обслуживании.

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

Читать далее
Всего голосов 67: ↑64 и ↓3+72
Комментарии42

Как устроено распределение памяти

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров25K

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

В этом посте я познакомлю вас с основами распределения памяти (memory allocation). Распределители памяти существуют, потому что иметь доступную память недостаточно, необходимо ещё и эффективно её использовать. Мы наглядно изучим, как работают простые распределители. Мы рассмотрим некоторые из задач, которые им необходимо решать, а также некоторые из методик, которыми они их решают. Прочитав этот пост, вы узнаете всё, что необходимо для написания собственного распределителя.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+73
Комментарии6

Теория типов

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров33K

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

Что можно узнать из этой статьи?
Всего голосов 75: ↑75 и ↓0+75
Комментарии70

Быстрый двоичный поиск без ветвления

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров14K

Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2
Читать дальше →
Всего голосов 78: ↑78 и ↓0+78
Комментарии6

Почему десктопные приложения работают на веб-платформе?

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров36K

Где мы свернули не туда? Как получилось, что современный десктопный GUI по умолчанию использует платформу HTML/CSS/JavaScript, которая изначально не предназначена для нативной работы на десктопе? Она создана конкретно для браузера и веба. Зачем из нативного софта делать веб-страницы в браузерной оболочке?

Джефф Этвуд (автор Stack Overflow) предсказал этот феномен ещё в 2007 году. Он тогда сформулировал так называемый закон Этвуда:

Любое приложение, которое можно написать на JavaScript, будет в итоге написано на JavaScript.

Так и вышло.
Читать дальше →
Всего голосов 86: ↑72 и ↓14+79
Комментарии261

Как (быстро) сделать русский локальный ChatGPT

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров42K

Эта история началась в начале марта этого года. ChatGPT тогда был в самом расцвете. Мне в Telegram пришёл Саша Кукушкин, с которым мы знакомы довольно давно. Спросил, не занимаемся ли мы с Сашей Николичем языковыми моделями для русского языка, и как можно нам помочь.

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

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

Читать далее
Всего голосов 70: ↑69 и ↓1+88
Комментарии54

О «раздутом пузыре» нейросетей

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров101K

На днях я наткнулся на одно любопытное видео.

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

Утверждения:

1. Закон Мура больше не выполняется из-за фундаментальных физических ограничений ⇒ масштабирование нейросетевых моделей по вычислительному бюджету невозможно.

2. Нейросетевые модели внедряются слишком медленно.

3. Ответы нейросетевых моделей неконтролируемы и неинтерпретируемы.

Дальше обсудим каждое из них.

Читать далее
Всего голосов 105: ↑101 и ↓4+132
Комментарии171

Произносим термины IT правильно

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров54K

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

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

Читать далее
Всего голосов 75: ↑60 и ↓15+64
Комментарии229

Как мотивировать сотрудников работать с данными и избежать саботажа

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров3.6K

Привет, Хабр! В этой статье хочу поделиться решением проблемы, которая часто встречается при внедрении систем бизнес-аналитики (BI & ETL), а именно низкой мотивации персонала и даже саботажа. Статья будет полезна всем, кто собирается внедрять любые продукты класса ERP, CRM, HRM и других учетных автоматизированных систем. Сложной технической информации здесь не будет.

Читать далее
Всего голосов 8: ↑5 и ↓3+2
Комментарии3

«Выгорел просто в угли и уволился» — истории карьерных неуспехов, часть 5

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров92K

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

Они могут вдохновлять, а могут нет — и вот ты сидишь перед монитором, вспоминаешь все свои маленькие и большие неудачи и не понимаешь, что с тобой не так, ведь у всех всё классно. Ну, это мой личный опыт.

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

Читать далее
Всего голосов 39: ↑31 и ↓8+39
Комментарии192

Без ТЗ результат ХЗ? Не думаю

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров7.9K

Привет, меня зовут Антон Фокин, я CEO студии QTIM, занимаемся заказной разработкой. Сайты, приложения, цифровые сервисы, вот это вот всё. Статью мне помогал писать Артём Трушин, наш CPO. Расскажем, как мы выкинули написание ТЗ из наших процессов и сократили среднее время на разработку проектов в 4 раза.

Читать далее
Всего голосов 18: ↑13 и ↓5+13
Комментарии95

Как эффективно делиться результатами своей работы? О «хвастовстве» здорового человека

Время на прочтение6 мин
Количество просмотров25K

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

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

Возможно, вам знаком такой сценарий. Чтобы не быть Сашей, важно научиться правильно презентовать результаты своей работы. Как это делать эффективно — рассказываем на примере сотрудника техподдержки.
Читать дальше →
Всего голосов 62: ↑58 и ↓4+69
Комментарии22

Информация

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

Специализация

Software Developer, Frontend Developer
Intern
JavaScript
TypeScript
React
Vue.js
Redux
React Native
HTML
CSS
Webpack
Nuxt.js