Как стать автором
Обновить
170.39
Beget
Beget — международный облачный провайдер
Сначала показывать

Можно ли отпугнуть комаров звуком? А светом?

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


Впереди лето, а значит, настало самое время, позаботиться о борьбе с кровососущими насекомыми, в частности с комарами.

Люди знают множество способов такой борьбы, с использованием разнообразных репеллентов, высоковольтных сеток и даже использования источников углекислого газа (совместно с высоковольтными сетками, где углекислый газ выступает в качестве привлекающего агента, а высоковольтная сетка непосредственно занимается уничтожением). А есть ли какие-нибудь альтернативные варианты такой борьбы?
Читать дальше →

Подводные камни при работе с файлами в Linux с примерами на Python

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

Работа с файлами в Python кажется простой — open, read, write. Но на практике, особенно в системах с высокими требованиями к отказоустойчивости, стабильности и логированию, за банальными строками кода может скрываться целый мир проблем.

Читать далее

Может ли звук охлаждать?

Время на прочтение7 мин
Количество просмотров2.8K
image

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

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

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

ООП для кота – моделируем кота через классы

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


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

А что может быть наглядней котофея? :-)) Поэтому, попробуем рассмотреть кота через объектно-ориентированное программирование (ООП) и его классы.

Итак, что же представляет собой кот с точки зрения ООП?
Читать дальше →

Программирование без условных операторов

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


В программировании на C-подобных языках (и не только) частенько приходится использовать условные операторы, такие как If, else, switch — и особенно часто их используют новички, потому что их понимание и работа достаточно проста (в итоге, могут рождаться, иной раз, поистине монструозные конструкции — грешен, практиковал:-))).

К слову, многие отмечают, что последний оператор switch им приходилось видеть только на разнообразных олимпиадных задачках или школьных уроках, в то время как в реальной работе применяется он достаточно редко (а вы его используете, и насколько часто?).

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

Меню для отзывчивого интерфейса без скриптов

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

В этой статье мы расскажем как создать отзывчивое меню по принципу mobile-first, используя только HTML и CSS — без JavaScript. Полный код, используемый в этой статье, доступен в репозитории на GitHub.

Читать далее

Параметризация: PyTest vs RobotFramework

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

В этой статье вы можете найти наглядное сравнение двух популярных инструментов для автоматизации тестирования: PyTest и RobotFramework.

На Хабре уже есть хорошая статья с общим сравнением этих фреймворков. Я сфокусируюсь на простоте параметризации тестов. 

Читать далее

Системные вызовы Linux, которые должен знать каждый разработчик

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

Многие разработчики работают в Linux-среде, но не всегда глубоко понимают, как взаимодействие с ОС происходит на низком уровне. На собеседованиях всё чаще спрашивают про системные вызовы Linux. В этой статье мы рассмотрим, какие вызовы встречаются чаще всего и как они работают.

Читать далее

Своя эргономичная клавиатура: 3D-печать, пайка и немного самописной прошивки

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

Зима 2024, в процессе думскроллинга фида реддита я в очередной раз натыкаюсь на пост про hand‑wired эргономичную клавиатуру. В целом я не испытывал особого дискомфорта при использовании обычных клавиатур, но сама концепция привлекала — возможно, своей относительной экзотичностью на фоне «традиционных» клавиатур. Готовые клавиатуры такого формата есть в продаже, но эта опция была быстро отброшена — банально дорого — дешевых вариантов на тот момент особо не было. Прикинув, что до отпуска осталось не так и долго я загорелся идеей — а почему бы, собственно, не попробовать сделать подобную клавиатуру в свободное время?

Читать далее

Отзывчивый дизайн для веб-приложений: как обеспечить доступность на всех устройствах? Принципы отзывчивого дизайна

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

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

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

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

Читать далее

const fn может делать намного больше

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

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

const fn в Rust давно перестал быть просто инструментом для сложения чисел на этапе компиляции. Сегодня это мощный инструмент, который умеет циклы, условия, матчинг, парсинг и даже кусочки бизнес-логики — и всё это ещё до запуска программы.

Читать далее

Плюсы и минусы написания запросов с ORM и на SQL

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

SQL против ORM — один из самых горячих споров среди разработчиков. Одни уверены, что писать SQL-запросы вручную — это гарантия контроля и эффективности. Другие считают, что ORM упрощает жизнь и снижает вероятность ошибок. А что, если правда где-то посередине?

Читать далее

5 алгоритмов на Rust, которые должен знать каждый разработчик

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

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

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

Писать код на Rust — это не просто бороться с borrow checker, но и делать его действительно эффективным. Ведь никакой язык не спасет от тормозов, если алгоритмы выбраны неудачно.

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

Читать далее

OAuth 2.0

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

Вы когда‑нибудь логинились на сайте, используя аккаунт Google или Facebook? Или подключали приложение, требующее доступа к GitHub? Если да, то вы уже сталкивались с OAuth2, зная того или нет.

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

Лично мне приходилось реализовывать несколько приложений, использующих OAuth2. Это было настолько прямолинейно, что мне даже не пришлось задумываться о том, как работает сам протокол. И это не случайно. OAuth2 сделан таким образом, чтобы его было легко добавить в приложение, а не воевать со сложными механизмами авторизации.

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

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

Читать далее

Ближайшие события

Маленький bool Дума

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

Должен признать, у меня есть некая особая любовь к классическому DOOM. Несмотря на то, что игре уже 31 год, в нее все еще весело играть самому (хотя и выходит у меня так себе) или просто смотреть на то, как другие в нее играют (вот в этом я показываю себя лучше); и поскольку исходный код игры открыт, ей можно наслаждаться на любой современной платформе — ПК, смартфон, камера, осциллоскоп — да и вообще на любой вещи, которая придет вам в голову. В результате чего, благодаря ряду обстоятельств, я оказался меинтейнером нескольких связанных с DOOM пакетов в Fedora Linux.

Итак, за несколько месяцев до нового релиза, проект Fedora Linux осуществляет массовую сборку всех пакетов. Это имеет несколько преимуществ — позволяет убедиться в совместимости ABI, обновить статически линкуемые зависимости, использовать новые оптимизации компилятора и так далее. Как бы то ни было, с приближением релиза Fedora Linux 42 в середине апреля, пришло время для массовой пересборки, и как часто бывает, не все пакеты выжили. Одним из пакетов, которые не удалось собрать оказался chocolate-doom.

Читать далее

Антипаттерны Go: чего нельзя делать и почему

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

Привет, Хабр! Go часто называют «языком простоты»: мол, нет лишних фич, легко стартовать, запустил горутину — и вперед! Но в реальности эта «простота» — палка о двух концах. Я собрал самые распространенные (на мой взгляд) антипаттерны в Go, которые приводят к дедлокам, паникам и километрам непонятного кода.

Читать далее

Решение Advent of Code на этапе компиляции с использованием макросов Rust

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

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

В этом году я хотел написать идеальную программу для решения челленджа Advent of Code. Если идеальная программа и может существовать, она должна быть написана на Rust. Давайте помучаем декларативные макросы Rust для получения ответа на задачу первого дня Advent of Code в виде ошибки компиляции.

Читать далее

Rust без прикрас: где мы продолжаем ошибаться

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

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

В предыдущей статье мы разобрали, как не ломать себе карьеру, бездумно используя unwrap() или игнорируя ошибки через let _ =. Но давайте честно: это были цветочки. Настоящие проблемы начинаются там, где ваш код работает «почти идеально», а потом, под грохот продакшена, вы осознаете, что все было далеко не так гладко.

Сегодня вторая часть. Разберем несколько ошибок, которые выглядят безобидно, но тащат за собой баги, утечки памяти и необъяснимые фризы.

Начнем с первой проблемы при работе с .iter() и .iter_mut.

Читать далее

Дженерики в Go

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

Это первая часть статьи, посвященной дженерикам в Go, из четырех.

Одна из последних и наиболее интересных фич в Golang — поддержка дженериков. Эта серия туториалов будет посвящена тому, что это такое, какую пользу приносит, когда их стоит использовать и как они меняют процесс написания приложений на Golang. Начнем же!

Читать далее

Сборщик мусора CPython и его влияние на производительность приложения

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

В прошлом я уже публиковал детальный разбор кода сборщика мусора CPython, однако стоит также дать более высокоуровневое объяснение механизмов управления памятью в CPython, не затрагивая сам код. Этому и будет посвящена данная статья. Статья в основном будет посвящена циклическому сборщику мусора (GC), как и когда он запускается и его влиянию на производительность приложений.

Читать далее

Информация

Сайт
beget.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия