Как сравнить целые числа со знаком и без знака в C++20?
Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.
Если попытаться сравнить знаковое и беззнаковое целое число, то возможны несколько вариантов развития событий. Возможно, это действительно сработает, и вы никогда не узнаете, чем рисковали. Возможно, все будет не так, как вы ожидали, и вы потратите немало времени, ломая голову над тем, что же произошло. Возможно также, что он не сработает в соответствии с вашими ожиданиями, но это останется незамеченным.
https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities
Мы в MAX
👉 @Bookflow
Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.
Если попытаться сравнить знаковое и беззнаковое целое число, то возможны несколько вариантов развития событий. Возможно, это действительно сработает, и вы никогда не узнаете, чем рисковали. Возможно, все будет не так, как вы ожидали, и вы потратите немало времени, ломая голову над тем, что же произошло. Возможно также, что он не сработает в соответствии с вашими ожиданиями, но это останется незамеченным.
https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities
Мы в MAX
👉 @Bookflow
1❤3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Совет по CSS 💡
Несмотря на некоторые ограничения в отдельных браузерах, мы можем изменять размеры любого блочного элемента, а не только textarea!
Мы в MAX
👉 @Bookflow
Несмотря на некоторые ограничения в отдельных браузерах, мы можем изменять размеры любого блочного элемента, а не только textarea!
Мы в MAX
👉 @Bookflow
👍3❤1
Пишем свой собственный текстовый редактор
Это инструкция, которая покажет вам, как создать текстовый редактор на языке C.
Текстовый редактор представляет собой kilo от antirez, с некоторыми изменениями. Это около 1000 строк языка C в одном файле без зависимостей, и в нем реализованы все основные функции, которые вы ожидаете от минимального редактора, а также подсветка синтаксиса и функция поиска.
В этой инструкции вы пройдете путь создания редактора в 184 шага. На каждом шаге вы будете добавлять, изменять или удалять несколько строк кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями, скомпилировав и запустив программу сразу после этого.
https://viewsourcecode.org/snaptoken/kilo/index.html
Мы в MAX
👉 @Bookflow
Это инструкция, которая покажет вам, как создать текстовый редактор на языке C.
Текстовый редактор представляет собой kilo от antirez, с некоторыми изменениями. Это около 1000 строк языка C в одном файле без зависимостей, и в нем реализованы все основные функции, которые вы ожидаете от минимального редактора, а также подсветка синтаксиса и функция поиска.
В этой инструкции вы пройдете путь создания редактора в 184 шага. На каждом шаге вы будете добавлять, изменять или удалять несколько строк кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями, скомпилировав и запустив программу сразу после этого.
https://viewsourcecode.org/snaptoken/kilo/index.html
Мы в MAX
👉 @Bookflow
👍5❤3🔥2
🔥Awesome-Cheatsheets
Крутые шпаргалки по популярным языкам программирования, фреймворкам и инструментам разработки. В них собрано всё, что нужно знать — в одном файле.
Я обычно создаю шпаргалку, когда хочу прокачать навыки в языке программирования, фреймворке или инструменте разработки. Раньше я делал такие записи в Gist, но чтобы удобнее отслеживать историю и дать возможность другим участвовать, я собрал всё в одном репозитории. Большая часть материалов основана на официальной документации и книгах, которые я прочитал.
Заглядывай — возможно, узнаешь что-то новое. Эти шпаргалки созданы, чтобы быстро проверить знания и сэкономить тебе время.
https://lecoupa.github.io/awesome-cheatsheets/
Мы в MAX
👉 @Bookflow
Крутые шпаргалки по популярным языкам программирования, фреймворкам и инструментам разработки. В них собрано всё, что нужно знать — в одном файле.
Я обычно создаю шпаргалку, когда хочу прокачать навыки в языке программирования, фреймворке или инструменте разработки. Раньше я делал такие записи в Gist, но чтобы удобнее отслеживать историю и дать возможность другим участвовать, я собрал всё в одном репозитории. Большая часть материалов основана на официальной документации и книгах, которые я прочитал.
Заглядывай — возможно, узнаешь что-то новое. Эти шпаргалки созданы, чтобы быстро проверить знания и сэкономить тебе время.
https://lecoupa.github.io/awesome-cheatsheets/
Мы в MAX
👉 @Bookflow
👍3🔥1
Как мы ускорили Golang-тесты на CI
В этой статье я расскажу о том, как желание улучшить свой рабочий процесс CI помогло ускорить все golang-пайплайны в PaaS СберМаркета.
В СберМаркете микросервисная архитектура. В качестве CI/CD используется GitLab. На CI гоняются вполне типовые задачи по тестированию, различным проверкам, сборкам образов и т. д. Часть job предоставляется самим сервисом, часть — внедряется в пайплайн сервиса нашей платформой.
Во всех golang-сервисах пишут тесты на свой код. В разных сервисах подход к тестированию немного различается, но сейчас я не буду углубляться в виды тестирования. Общее между всеми сервисами — «в среднем по больнице» тесты гоняются на CI более 5 минут.
Я пришел в СберМаркет в конце августа 2023 года. Глядя на набор Unit-тестов в одном из наших сервисов Odin, я немного расстроился. Каждый раз нужно было ждать на CI больше 6 минут, чтобы узнать, все ли хорошо с тестами. Их в наборе было около 400.
Я подумал, что неплохо было бы разобраться со скоростью. Предположил, что проблема может быть связана с базой данных, неоптимальным сидированием, что можно улучшить очистку и добавить параллелизма. И даже начал накидывать в голове план ускорения...
https://habr.com/ru/companies/kuper/articles/806725/
Мы в MAX
👉 @Bookflow
В этой статье я расскажу о том, как желание улучшить свой рабочий процесс CI помогло ускорить все golang-пайплайны в PaaS СберМаркета.
В СберМаркете микросервисная архитектура. В качестве CI/CD используется GitLab. На CI гоняются вполне типовые задачи по тестированию, различным проверкам, сборкам образов и т. д. Часть job предоставляется самим сервисом, часть — внедряется в пайплайн сервиса нашей платформой.
Во всех golang-сервисах пишут тесты на свой код. В разных сервисах подход к тестированию немного различается, но сейчас я не буду углубляться в виды тестирования. Общее между всеми сервисами — «в среднем по больнице» тесты гоняются на CI более 5 минут.
Я пришел в СберМаркет в конце августа 2023 года. Глядя на набор Unit-тестов в одном из наших сервисов Odin, я немного расстроился. Каждый раз нужно было ждать на CI больше 6 минут, чтобы узнать, все ли хорошо с тестами. Их в наборе было около 400.
Я подумал, что неплохо было бы разобраться со скоростью. Предположил, что проблема может быть связана с базой данных, неоптимальным сидированием, что можно улучшить очистку и добавить параллелизма. И даже начал накидывать в голове план ускорения...
https://habr.com/ru/companies/kuper/articles/806725/
Мы в MAX
👉 @Bookflow
❤3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Задержка (Latency) vs. Пропускная способность (Throughput)
Задумывались, почему приложение «тормозит», хотя пропускная способность сети вроде бы в порядке?
Дело в том, что задержка и пропускная способность описывают два совершенно разных аспекта производительности.
Задержка (Latency) - это время задержки каждого пакета.
Именно её ощущает пользователь, когда нажимает кнопку. Это - отзывчивость системы.
Задержка показывает, сколько времени требуется, чтобы один запрос прошёл путь от сервера до конечного устройства.
Она включает:
- время обработки запроса на сервере,
- задержку в очередях,
- распространение сигнала по сети,
- задержку передачи,
- и «последнюю милю» - соединение с устройством пользователя.
Пропускная способность (Throughput) - это объём данных, успешно переданных за единицу времени.
Речь не о скорости отдельного пакета, а о количестве данных, проходящих через «трубу».
Пропускная способность - это ёмкость системы.
Высокая пропускная способность означает, что система справляется с нагрузкой без перегрузок.
А теперь вопрос к вам:
Как вы измеряете эти метрики так, чтобы они действительно предсказывали, когда система начнёт давать сбои?
Мы в MAX
👉 @Bookflow
Задумывались, почему приложение «тормозит», хотя пропускная способность сети вроде бы в порядке?
Дело в том, что задержка и пропускная способность описывают два совершенно разных аспекта производительности.
Задержка (Latency) - это время задержки каждого пакета.
Именно её ощущает пользователь, когда нажимает кнопку. Это - отзывчивость системы.
Задержка показывает, сколько времени требуется, чтобы один запрос прошёл путь от сервера до конечного устройства.
Она включает:
- время обработки запроса на сервере,
- задержку в очередях,
- распространение сигнала по сети,
- задержку передачи,
- и «последнюю милю» - соединение с устройством пользователя.
Пропускная способность (Throughput) - это объём данных, успешно переданных за единицу времени.
Речь не о скорости отдельного пакета, а о количестве данных, проходящих через «трубу».
Пропускная способность - это ёмкость системы.
Высокая пропускная способность означает, что система справляется с нагрузкой без перегрузок.
А теперь вопрос к вам:
Как вы измеряете эти метрики так, чтобы они действительно предсказывали, когда система начнёт давать сбои?
Мы в MAX
👉 @Bookflow
1👍5❤1👎1
Настройка CI/CD для самых маленьких разработчиков
Считается, что построение CI/CD - задача для DevOps. Глобально это действительно так, особенно если речь идет о первоначальной настройке. Но часто с докручиванием отдельных этапов процесса сталкиваются и разработчики. Умение поправить что-то незначительное своими силами позволяет не тратить время на поход к коллегам (и ожидание их реакции), т.е. в целом повышает комфорт работы и дает понимание, почему все происходит именно так.
Настроек для пайплайна Gitlab очень много. В этой статье, не вдаваясь в недра тюнинга, поговорим о том, как выглядит скрипт пайплайна, из каких блоков он состоит и что может содержать.
https://habr.com/ru/companies/maxilect/articles/799177/
Мы в MAX
👉 @Bookflow
Считается, что построение CI/CD - задача для DevOps. Глобально это действительно так, особенно если речь идет о первоначальной настройке. Но часто с докручиванием отдельных этапов процесса сталкиваются и разработчики. Умение поправить что-то незначительное своими силами позволяет не тратить время на поход к коллегам (и ожидание их реакции), т.е. в целом повышает комфорт работы и дает понимание, почему все происходит именно так.
Настроек для пайплайна Gitlab очень много. В этой статье, не вдаваясь в недра тюнинга, поговорим о том, как выглядит скрипт пайплайна, из каких блоков он состоит и что может содержать.
https://habr.com/ru/companies/maxilect/articles/799177/
Мы в MAX
👉 @Bookflow
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
1 - Индексация:
Проверьте шаблоны запросов вашего приложения и создайте подходящие индексы.
2 - Материализованные представления:
Предварительно вычислите результаты сложных запросов и сохраните их для более быстрого доступа.
3 - Денормализация:
Уменьшите количество сложных объединений для повышения производительности запросов.
4 - Вертикальное масштабирование:
Увеличьте мощность вашего сервер базы данных, добавляя больше процессоров, оперативной памяти или хранилища.
5 - Кэширование:
Сохраните часто запрашиваемые данные в более быстром слое хранения для снижения нагрузки на базу данных.
6 - Репликация:
Создайте реплики основной базы данных на разных серверах для масштабирования чтения.
7 - Шардинг:
Разделите таблицы базы данных на более мелкие части и распределите их по серверам. Используется для масштабирования как записи, так и чтения.
А теперь ваш ход: Какие другие стратегии вы используете для масштабирования ваших баз данных?
Мы в MAX
👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Nala
Это внешний интерфейс для libapt-pkg. В частности, мы взаимодействуем с python-apt api.
Особенно начинающим пользователям бывает сложно понять, что пытается сделать apt при установке или обновлении.
Мы пытаемся решить эту проблему, отказавшись от отображения лишних сообщений, улучшив форматирование пакетов и используя цвет, чтобы
показать, что именно произойдет с пакетом при установке, удалении или обновлении.
https://gitlab.com/volian/nala
Мы в MAX
👉 @Bookflow
Это внешний интерфейс для libapt-pkg. В частности, мы взаимодействуем с python-apt api.
Особенно начинающим пользователям бывает сложно понять, что пытается сделать apt при установке или обновлении.
Мы пытаемся решить эту проблему, отказавшись от отображения лишних сообщений, улучшив форматирование пакетов и используя цвет, чтобы
показать, что именно произойдет с пакетом при установке, удалении или обновлении.
https://gitlab.com/volian/nala
Мы в MAX
👉 @Bookflow
👍3❤1