This media is not supported in your browser
VIEW IN TELEGRAM
SQL
С помощью всего нескольких базовых команд можно решить 80% повседневных задач, связанных с данными.
Сосредоточьтесь на понимании
С помощью всего нескольких базовых команд можно решить 80% повседневных задач, связанных с данными.
Сосредоточьтесь на понимании
JOIN, SELECT, UPDATE, DELETE и некоторых других фундаментальных команд.e-maxx_algo.pdf
5.9 MB
Вас приветствует книга, собранная по материалам сайта
В этой книге Вы найдёте описание, реализации и доказательства множества алгоритмов, от известных всем до
тех, которые являются уделом лучших олимпиадников и специалистов по Computer Science. В конце приведены ссылки на тематическую литературу, которую можно скачать с моего сайта, а также немного информации обо мне.
Представлено 145 алгоритмов. Ко всем алгоритмам даны краткие описания и программы на C++.
Алгебра
Графы
Геометрия
Строки
Структуры данных
Алгоритмы на последовательностях
Динамика
Линейная алгебра
Численные методы
Комбинаторика
Теория игр
Расписания
Разное
e-maxx.ru/algo В этой книге Вы найдёте описание, реализации и доказательства множества алгоритмов, от известных всем до
тех, которые являются уделом лучших олимпиадников и специалистов по Computer Science. В конце приведены ссылки на тематическую литературу, которую можно скачать с моего сайта, а также немного информации обо мне.
Представлено 145 алгоритмов. Ко всем алгоритмам даны краткие описания и программы на C++.
Алгебра
Графы
Геометрия
Строки
Структуры данных
Алгоритмы на последовательностях
Динамика
Линейная алгебра
Численные методы
Комбинаторика
Теория игр
Расписания
Разное
🤫 Псс, хочешь знать секреты московской недвижимости?
🔥 Инсайды от экспертов, о которых не пишут в газетах - только в канале "Квадратные инсайды"!
💰 Будь на шаг впереди:
* Узнай, где ждать роста цен
* Получи эксклюзивные предложения
* Не упусти выгодную сделку
👉 Подписывайся и получай преимущество: @kvadrat_insides
🔥 Инсайды от экспертов, о которых не пишут в газетах - только в канале "Квадратные инсайды"!
💰 Будь на шаг впереди:
* Узнай, где ждать роста цен
* Получи эксклюзивные предложения
* Не упусти выгодную сделку
👉 Подписывайся и получай преимущество: @kvadrat_insides
@glyanka_ru 👀 — твой карманный гид по миру умопомрачителных интерьеров. Зависть соседей обеспечена! Подписывайся!
Нас часто просят разрабатывать системы с высокой доступностью, масштабируемостью и пропускной способностью. Что это именно означает?
Выше приведена шпаргалка по проектированию систем с распространенными решениями.
1. Высокая доступность
Это означает необходимость обеспечения высокого уровня времени работы. Обычно мы описываем целевой уровень дизайна как «3 девятки» или «4 девятки». «4 девятки» (99,99% времени работы) означает, что сервис может быть недоступен только 8,64 секунды в день.
Для достижения высокой доступности необходимо спроектировать систему с избыточностью. Существуют несколько способов сделать это:
- Горячий-горячий: два экземпляра получают один и тот же ввод и отправляют вывод в downstream-сервис. Если одна из сторон недоступна, другая сторона может сразу же взять на себя ее функции. Поскольку обе стороны отправляют вывод в downstream, downstream-система должна выполнять дедупликацию.
- Горячий-теплый: два экземпляра получают один и тот же ввод, но только горячая сторона отправляет выв...
Выше приведена шпаргалка по проектированию систем с распространенными решениями.
1. Высокая доступность
Это означает необходимость обеспечения высокого уровня времени работы. Обычно мы описываем целевой уровень дизайна как «3 девятки» или «4 девятки». «4 девятки» (99,99% времени работы) означает, что сервис может быть недоступен только 8,64 секунды в день.
Для достижения высокой доступности необходимо спроектировать систему с избыточностью. Существуют несколько способов сделать это:
- Горячий-горячий: два экземпляра получают один и тот же ввод и отправляют вывод в downstream-сервис. Если одна из сторон недоступна, другая сторона может сразу же взять на себя ее функции. Поскольку обе стороны отправляют вывод в downstream, downstream-система должна выполнять дедупликацию.
- Горячий-теплый: два экземпляра получают один и тот же ввод, но только горячая сторона отправляет выв...
Настраиваем iptables с нуля
Защита сетевых соединений сейчас просто необходима буквально на каждом устройстве, подключенном к Интернет. Тем более, на сервере. Расскажем и покажем конфигурирование штатного сетевого экрана Linux через интерфейс Iptables.
IPTables: NAT и Port forwarding
Продолжаем разговор про основополагающий инструмент управления трафиком, IPTables. Углубимся в реализацию таких технологий, как NAT и port forwarding.
Защита сетевых соединений сейчас просто необходима буквально на каждом устройстве, подключенном к Интернет. Тем более, на сервере. Расскажем и покажем конфигурирование штатного сетевого экрана Linux через интерфейс Iptables.
IPTables: NAT и Port forwarding
Продолжаем разговор про основополагающий инструмент управления трафиком, IPTables. Углубимся в реализацию таких технологий, как NAT и port forwarding.
This media is not supported in your browser
VIEW IN TELEGRAM
Как выполняются SQL-запросы👨💻
Порядок выполнения SQL запроса определяет последовательность выполнения различных частей запроса SQL. Этот порядок важен, потому что он определяет, как данные фильтруются, группируются и упорядочиваются.
Вот упрощенное объяснение порядка выполнения SQL:
• 𝐅𝐑𝐎𝐌/𝐉𝐎𝐈𝐍: Оператор FROM указывает таблицы, из которых будут извлечены данные. Клауза JOIN может использоваться для объединения данных из нескольких таблиц.
• 𝐖𝐇𝐄𝐑𝐄: Оператор WHERE используется для фильтрации данных на основе определенных условий.
• 𝐆𝐑𝐎𝐔𝐏 𝐁𝐘: Оператор GROUP BY используется для группировки данных по одной или нескольким колонкам.
• 𝐇𝐀𝐕𝐈𝐍𝐆: Оператор HAVING используется для фильтрации сгруппированных данных на основе определенных условий.
• 𝐒𝐄𝐋𝐄𝐂𝐓: Оператор SELECT указывает столбцы, которые будут возвращены в наборе результатов.
• 𝐃𝐈𝐒𝐓𝐈𝐍𝐂𝐓: Ключевое слово DISTINCT может использоваться для обеспечения возврата только уникальных строк в наборе результатов.
• 𝐎𝐑𝐃𝐄𝐑 𝐁𝐘: Оператор ORDER BY используется для сортиро...
Порядок выполнения SQL запроса определяет последовательность выполнения различных частей запроса SQL. Этот порядок важен, потому что он определяет, как данные фильтруются, группируются и упорядочиваются.
Вот упрощенное объяснение порядка выполнения SQL:
• 𝐅𝐑𝐎𝐌/𝐉𝐎𝐈𝐍: Оператор FROM указывает таблицы, из которых будут извлечены данные. Клауза JOIN может использоваться для объединения данных из нескольких таблиц.
• 𝐖𝐇𝐄𝐑𝐄: Оператор WHERE используется для фильтрации данных на основе определенных условий.
• 𝐆𝐑𝐎𝐔𝐏 𝐁𝐘: Оператор GROUP BY используется для группировки данных по одной или нескольким колонкам.
• 𝐇𝐀𝐕𝐈𝐍𝐆: Оператор HAVING используется для фильтрации сгруппированных данных на основе определенных условий.
• 𝐒𝐄𝐋𝐄𝐂𝐓: Оператор SELECT указывает столбцы, которые будут возвращены в наборе результатов.
• 𝐃𝐈𝐒𝐓𝐈𝐍𝐂𝐓: Ключевое слово DISTINCT может использоваться для обеспечения возврата только уникальных строк в наборе результатов.
• 𝐎𝐑𝐃𝐄𝐑 𝐁𝐘: Оператор ORDER BY используется для сортиро...
Проблема омографов в ударениях и как я ее решал
Это история о том, почему в опенсурсе нет TTS с нормальными ударениями, и как я пытался это исправить.
Обзор проблемы
Одной из немаловажных задач в синтезе речи является подготовка текста, а именно расстановка ударений в словах. Если по ударениям в обычных словах все более менее понятно (можно решать с помощью словарей), то с некоторыми "особенными" словами все немного сложнее. Эти особенные слова - омографы (за́мок/замо́к, ду́хи/духи́), а также ё-омографы (не́бо/нё́бо, все/всё́, пе́ред/перё́д, бе́рег/берё́г). Буква Ё часто используется в речи, но всё реже в текстах, потому найти качественные данные становится непростой задачей.
Ранее на хабре уже была статья с обзором этой темы, были озвучены ключевые проблемы, но готовых решений представлено не было, поэтому я решил поделиться своим.
С этого и начинается история длиною в 2 месяца о том, как я пытался решать данную задачу.
https://habr.com/ru/articles/767560/
Это история о том, почему в опенсурсе нет TTS с нормальными ударениями, и как я пытался это исправить.
Обзор проблемы
Одной из немаловажных задач в синтезе речи является подготовка текста, а именно расстановка ударений в словах. Если по ударениям в обычных словах все более менее понятно (можно решать с помощью словарей), то с некоторыми "особенными" словами все немного сложнее. Эти особенные слова - омографы (за́мок/замо́к, ду́хи/духи́), а также ё-омографы (не́бо/нё́бо, все/всё́, пе́ред/перё́д, бе́рег/берё́г). Буква Ё часто используется в речи, но всё реже в текстах, потому найти качественные данные становится непростой задачей.
Ранее на хабре уже была статья с обзором этой темы, были озвучены ключевые проблемы, но готовых решений представлено не было, поэтому я решил поделиться своим.
С этого и начинается история длиною в 2 месяца о том, как я пытался решать данную задачу.
https://habr.com/ru/articles/767560/
Ему не место на помойке: хакаем 15-летний электронный переводчик и пишем под него приложения
Дисклеймер: Статья очень подробная и во всех красках "простым языком" описывает процесс хакинга и программирования под такой необычный девайс. Так что даже если вас не интересуют электронные переводчики и минипк, статья может оказаться для вас занимательной!
Я всегда любил находить новые применения стареньким девайсам, даже если обход защиты и разработка для них чего-то полезного занимала у меня некоторое время. И если с прошлыми моими статьями, где я привносил новую жизнь смартфонам на Android 2.3, а затем и на Android 1.5, всё понятно - девайсы получили возможность не только быть звонилками, но и вполне полноценными смартфонами, то в случае таких необычных девайсов, как электронные переводчики - всё гораздо интереснее, ведь по сути, это дешёвые альтернативы таким легендарным устройствам, как HP Jornada! Недавно я купил переводчик Ectaco за 1.500 рублей на Windows CE, обошел встроенную оболочку, написал программ...
Дисклеймер: Статья очень подробная и во всех красках "простым языком" описывает процесс хакинга и программирования под такой необычный девайс. Так что даже если вас не интересуют электронные переводчики и минипк, статья может оказаться для вас занимательной!
Я всегда любил находить новые применения стареньким девайсам, даже если обход защиты и разработка для них чего-то полезного занимала у меня некоторое время. И если с прошлыми моими статьями, где я привносил новую жизнь смартфонам на Android 2.3, а затем и на Android 1.5, всё понятно - девайсы получили возможность не только быть звонилками, но и вполне полноценными смартфонами, то в случае таких необычных девайсов, как электронные переводчики - всё гораздо интереснее, ведь по сути, это дешёвые альтернативы таким легендарным устройствам, как HP Jornada! Недавно я купил переводчик Ectaco за 1.500 рублей на Windows CE, обошел встроенную оболочку, написал программ...
Media is too big
VIEW IN TELEGRAM
Реальное Собеседование на Junior Backend разработчика
0:00 - Какие вопросы задавали
1:58 - Как работает Интернет
4:10 - Как браузер формирует запрос
5:05 - Как передать файл
5:55 - Как безопасно передать банковскую транзакцию
7:14 - Что возвращает сервер
9:46 - Вопрос про авторизацию со звездочкой*
11:06 - Зачем нужна пара access и refresh токены
12:55 - JWT или сессии — что лучше?
14:11 - Проектирование авторизации (практический пример)
16:20 - Как улучшить Dockerfile
19:50 - Какую зарплату мне предложили
источник
0:00 - Какие вопросы задавали
1:58 - Как работает Интернет
4:10 - Как браузер формирует запрос
5:05 - Как передать файл
5:55 - Как безопасно передать банковскую транзакцию
7:14 - Что возвращает сервер
9:46 - Вопрос про авторизацию со звездочкой*
11:06 - Зачем нужна пара access и refresh токены
12:55 - JWT или сессии — что лучше?
14:11 - Проектирование авторизации (практический пример)
16:20 - Как улучшить Dockerfile
19:50 - Какую зарплату мне предложили
источник
Логирование, трассировка и метрики — это три столпа наблюдаемости системы.
На диаграмме выше представлены их определения и типичные архитектуры.
🔹 Логирование
Логирование записывает дискретные события в системе. Например, можно зафиксировать входящий запрос или обращение к базе данных как события. Логирование имеет наибольший объем данных. Стек ELK (Elastic-Logstash-Kibana) часто используется для построения платформы анализа логов. Обычно мы определяем стандартизированный формат логирования для различных команд, чтобы можно было использовать ключевые слова при поиске среди большого количества логов.
🔹 Трассировка
Трассировка обычно ориентирована на запросы. Например, пользовательский запрос проходит через API-шлюз, балансировщик нагрузки, сервис A, сервис B и базу данных, что может быть визуализировано в системах трассировки. Это полезно при попытках выявить узкие места в системе. Мы используем OpenTelemetry для демонстрации типичной архитектуры, объединяющей три столпа в единую структуру.
🔹 Метри...
На диаграмме выше представлены их определения и типичные архитектуры.
🔹 Логирование
Логирование записывает дискретные события в системе. Например, можно зафиксировать входящий запрос или обращение к базе данных как события. Логирование имеет наибольший объем данных. Стек ELK (Elastic-Logstash-Kibana) часто используется для построения платформы анализа логов. Обычно мы определяем стандартизированный формат логирования для различных команд, чтобы можно было использовать ключевые слова при поиске среди большого количества логов.
🔹 Трассировка
Трассировка обычно ориентирована на запросы. Например, пользовательский запрос проходит через API-шлюз, балансировщик нагрузки, сервис A, сервис B и базу данных, что может быть визуализировано в системах трассировки. Это полезно при попытках выявить узкие места в системе. Мы используем OpenTelemetry для демонстрации типичной архитектуры, объединяющей три столпа в единую структуру.
🔹 Метри...
Зачем в iPhone чип, который убивает FaceID
Начнём с начала: как система FaceID выглядит, и как она работает:
Аппаратно эта система состоит из пары камер - ИК и RGB, и двух видов ИК-излучателей - обычной подсветки, и специализированного прожектора точек.
Снимаем с iPhone X шкурку, убираем всё лишнее, и видим блок фронтальных камер в голом виде. ИК подсветка существует отдельно, но все остальные компоненты у нас в руках — они надёжно закреплены в этой металлической рамке.
Тут мы видим ИК камеру и прожектор ИК точек. Именно на этой инфракрасной парочке держится работа систем TrueDepth и FaceID. И главный герой сегодняшнего
https://habr.com/ru/articles/841708/
Начнём с начала: как система FaceID выглядит, и как она работает:
Аппаратно эта система состоит из пары камер - ИК и RGB, и двух видов ИК-излучателей - обычной подсветки, и специализированного прожектора точек.
Снимаем с iPhone X шкурку, убираем всё лишнее, и видим блок фронтальных камер в голом виде. ИК подсветка существует отдельно, но все остальные компоненты у нас в руках — они надёжно закреплены в этой металлической рамке.
Тут мы видим ИК камеру и прожектор ИК точек. Именно на этой инфракрасной парочке держится работа систем TrueDepth и FaceID. И главный герой сегодняшнего
https://habr.com/ru/articles/841708/
Кривые Безье
Кривые Безье были постоянной темой в моей карьере фронтенд-инженера. Я широко использовал их в своей работе - в анимации и SVG-путях иллюстраций и иконок. Однако только недавно я заинтересовался пониманием логики, лежащей в основе их поведения. Эта статья раскрыла для меня тайны, связанные с использованием команд кривых путей, и дала мне более глубокое понимание веб-анимации. В этой статье я поделюсь своими интересными открытиями в области кривых Безье.
В CSS-анимации функции смягчения задают скорость изменения свойства с течением времени. Существует 3 типа функций смягчения - линейная, ступенчатая и кубическая кривая Безье.
https://blog.richardekwonye.com/bezier-curves
Кривые Безье были постоянной темой в моей карьере фронтенд-инженера. Я широко использовал их в своей работе - в анимации и SVG-путях иллюстраций и иконок. Однако только недавно я заинтересовался пониманием логики, лежащей в основе их поведения. Эта статья раскрыла для меня тайны, связанные с использованием команд кривых путей, и дала мне более глубокое понимание веб-анимации. В этой статье я поделюсь своими интересными открытиями в области кривых Безье.
В CSS-анимации функции смягчения задают скорость изменения свойства с течением времени. Существует 3 типа функций смягчения - линейная, ступенчатая и кубическая кривая Безье.
https://blog.richardekwonye.com/bezier-curves
Как компании доставляют код в продакшн?
Ниже описан типичный процесс доставки программного обеспечения. В разных компаниях используются разнообразные инструменты и среды, поэтому это один из вариантов рабочего процесса, который демонстрирует некоторые общие практики. Подробности могут отличаться в зависимости от организации. Учитывая это, общие шаги выглядят следующим образом:
Шаг 1: Владелец продукта создает требования и пользовательские истории.
Шаг 2: Команда разработчиков определяет приоритеты для историй и организует спринты.
Шаг 3: Разработчики коммитят код в систему контроля версий.
Шаг 4: Сервер автоматизации собирает код и запускает тесты. Проводятся проверки покрытия кода и качества.
Шаг 5: Если сборка успешна, артефакты сохраняются в репозитории артефактов. Сборка затем разворачивается в среде разработчиков.
Шаг 6: Функции тестируются независимо в нескольких изолированных средах.
Шаг 7: Команда QA тестирует функции в средах для контроля качества. Проводятся различные виды тестирования.
...
Ниже описан типичный процесс доставки программного обеспечения. В разных компаниях используются разнообразные инструменты и среды, поэтому это один из вариантов рабочего процесса, который демонстрирует некоторые общие практики. Подробности могут отличаться в зависимости от организации. Учитывая это, общие шаги выглядят следующим образом:
Шаг 1: Владелец продукта создает требования и пользовательские истории.
Шаг 2: Команда разработчиков определяет приоритеты для историй и организует спринты.
Шаг 3: Разработчики коммитят код в систему контроля версий.
Шаг 4: Сервер автоматизации собирает код и запускает тесты. Проводятся проверки покрытия кода и качества.
Шаг 5: Если сборка успешна, артефакты сохраняются в репозитории артефактов. Сборка затем разворачивается в среде разработчиков.
Шаг 6: Функции тестируются независимо в нескольких изолированных средах.
Шаг 7: Команда QA тестирует функции в средах для контроля качества. Проводятся различные виды тестирования.
...
Как поделить не деля или оптимизация деления компиляторам(и)
Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмотрите следующий snippet:
https://habr.com/ru/articles/833470/
Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмотрите следующий snippet:
uint8_t div10(uint8_t x)
{
return x/10;
}
https://habr.com/ru/articles/833470/
Микросервисы для тех, кто прикидывается разработчиком. Часть 1
«Скажите, какие основные преимущества микросервисов и почему?». Вероятно, это самый популярный вопрос последних 6–10 лет на любом собеседовании для бэкенд разработчика. Каким‑то чудом он даже обогнал: «Назовите три принципа ООП» и «Чем отличается класс от объекта?»
https://habr.com/ru/articles/833544/
«Скажите, какие основные преимущества микросервисов и почему?». Вероятно, это самый популярный вопрос последних 6–10 лет на любом собеседовании для бэкенд разработчика. Каким‑то чудом он даже обогнал: «Назовите три принципа ООП» и «Чем отличается класс от объекта?»
https://habr.com/ru/articles/833544/
Media is too big
VIEW IN TELEGRAM
Пытаюсь пройти System Design интервью / Такое спрашивают в MAANG? / Mock собеседование
❗️ВАЖНО! Данное собеседование является тестовым (mock) и несет в себе образовательную цель.
00:00 - НАЧАЛО
01:30 - условие задачи
02:26 - начинаю решать
47:40 - понял, что упустил из вида
53:40 - рисую диаграмму
01:25:11 - ФИДБЕК Марка
источник
❗️ВАЖНО! Данное собеседование является тестовым (mock) и несет в себе образовательную цель.
00:00 - НАЧАЛО
01:30 - условие задачи
02:26 - начинаю решать
47:40 - понял, что упустил из вида
53:40 - рисую диаграмму
01:25:11 - ФИДБЕК Марка
источник
Знакомство с constexpr unique_ptr (С++23)
https://andreasfertig.blog/2023/10/using-cpp23s-constexpr-unique_ptr/
https://andreasfertig.blog/2023/10/using-cpp23s-constexpr-unique_ptr/