Pull to refresh
0
0
Дмитрий @ex_ineris

QA Engineer

Send message

Ускоряем запросы в PostgreSQL, оптимизируя оператор GROUP BY

Level of difficultyHard
Reading time9 min
Views20K

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

Postgres уже умеет перестраивать список группируемых выражений в соответствии с порядком колонок из условия ORDER BY, чтобы исключить дополнительную сортировку и сэкономить вычислительные ресурсы. Мы пошли дальше, реализовали свою идею в дистрибутивах Postgres Pro Standard и Enterprise и вынесли патчи на обсуждение сообщества Postgres (первое и второе) в надежде, что они войдут в ближайшую версию ванильного PostgreSQL.

Читать далее

Делают всё роботы, а не человек! Как работать меньше, но продуктивнее? Обзор шести нейросервисов

Level of difficultyEasy
Reading time13 min
Views26K

Нейросети — настоящая суперсила в современном мире: мгновенный анализ огромных объёмов данных, оптимизация процессов и автоматизация рутины. Это уже не просто инструменты — это высвобождение времени и конкурентное преимущество. Рекомендации по выбору и использованию классных нейросервисов! Будьте осторожны, это довольно объёмный обзор.

Читать далее

Анонимная сеть в 100 строк кода на Go

Level of difficultyEasy
Reading time7 min
Views30K

Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.

Читать далее

Двусвязный список в Python: простой инструмент для сложных задач

Level of difficultyEasy
Reading time5 min
Views9.4K

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

Эта статья написана для новичков, которые только начинают осваивать структуры данных на Python. Сегодня мы рассмотрим замечательную и очень полезную структуру — двусвязный список.

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

Начнем с основ, разберемся, как они работают, где их реально стоит применять и как реализовать двусвязный список с нуля (да, на время забудем про библиотеку collections и её deque).

Читать далее

Об анатомии крэшей на iOS «по-взрослому»

Level of difficultyHard
Reading time23 min
Views8.2K

Привет, Хабр. Меня зовут Давид Чупреев. Я разработчик мобильных приложений в команде Core iOS ОК. 

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

Читать далее

Медиа-система на базе NUC — домашние опыты

Reading time8 min
Views26K

Мини-ПК Intel NUC представлять никому не нужно. В блоге Intel мы писали о нем много раз, а совсем недавно проводили конкурс имени NUC с ним же в качестве главного приза. И вот снова о нем, теперь уже в домашних условиях обитания. Перед вами рассказ от первого лица давнего друга редакции блога Intel о личном опыте использования Intel NUC в качестве базы для домашней медиа-системы.
Читать дальше →

История: работа в чешском Red Hat

Level of difficultyEasy
Reading time4 min
Views20K

Расскажу про мой опыт работе в Red Hat в Чехии. Здесь не будет про разработку (кому это интересно), а больше про процессы, офис, атмосферу, мероприятия, в общем внутреннюю жизнь. Будет много фото, у меня привычка все фотографировать.

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

Поехали.

Как найти хорошую работу в IT? Лучшие каналы и практики поиска в 2024 году

Level of difficultyEasy
Reading time4 min
Views19K

Последнее время всё чаще, когда речь заходит о карьере, говорят о том как правильно составить CV, презентовать себя, написать сопроводительное. Это безусловно база, без этого никак. 

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

Посмотрим глазами нанимающего, как это работает.

Читать далее

Запуск узла Hidden Lake на языке Go

Level of difficultyHard
Reading time7 min
Views2.2K

Анонимная сеть Hidden Lake является в своей области уникальным и достаточно своеобразным проектом, т.к. базируется на совершенно иных методах и подходах анонимизации трафика, чем большинство ныне нам известных сетей. Из-за того, что сеть является относительно новой - она часто дополняется и совершенствуется. Одним из таковых дополнений стал новый способ запуска узла HL.

Читать далее

Исчерпывающее руководство по различным типам API

Level of difficultyEasy
Reading time8 min
Views51K

API (Application Programming Interface, программный интерфейс приложения), является жизненно важным компонентом в современном ландшафте разработки программного обеспечения, обеспечивая строительные блоки для взаимодействия приложений друг с другом. В этой статье рассмотрим пять основных типов API: REST, SOAP, WebSocket, gRPC и GraphQL, чтобы получить более четкое представление об их функциях, особенностях и идеальных сценариях использования.

Читать далее

Kafka для самых маленьких тестировщиков

Level of difficultyEasy
Reading time5 min
Views21K

Всем привет! Меня зовут Максим, я QA в Максилекте.

Недавно коллеги попросили меня рассказать о базовых вещах в Kafka, которые могут быть полезны при тестировании общающихся между собой микросервисов или сервисов, взаимодействующих со сторонними ресурсами. В этой статье - основные идеи моего рассказа.

Читать далее

Эмуляторы и симуляторы vs реальные устройства для автоматизации тестирования

Reading time5 min
Views39K

В этой статье рассмотрим особенности тестирования мобильных приложений с помощью эмуляторов/симуляторов и на реальных устройствах.

Содержание:

Что такое мобильные эмуляторы и симуляторы;

Типы мобильных тестов;

Инструменты/фреймворки автоматизации мобильного тестирования;

Когда можно использовать эмуляторы/симуляторы, а а когда — стоит тестировать на реальных устройствах.

Читать далее

Pygame для начинающих программистов. Статья первая

Level of difficultyEasy
Reading time6 min
Views35K

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

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

Библиотека Pygame, в свою очередь, предоставляет мощный инструментарий для создания 2D-игр на Python. Она упрощает работу с графикой, звуком и взаимодействием с пользователем, позволяя сосредоточиться на логике игры и дизайне. С Pygame мы будем реализовать свои идеи создавая игровые механики.

В этой серии статей мы погрузимся в увлекательный мир разработки игр на Python с использованием Pygame. Мы здесь повторим основы программирования, создадим свои первые игры и получим навыки, которые будут полезны не только в разработке игр, но и в любых других областях программирования. В общем приготовимся к приключению, полному творчества, обучения и веселья!

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

Читать далее

Как мы обнаружили потенциальные атаки при помощи штрих-кодов

Level of difficultyMedium
Reading time9 min
Views7.3K

Фаззинг — одна из самых успешных методик для поиска багов безопасности, о нём постоянно говорят в статьях и на отраслевых конференциях. Он стал настолько популярным, что большинство важного ПО, казалось бы, должно подвергаться тщательному фаззингу. Но это не всегда так. В этом посте мы покажем, как фаззили библиотеку сканирования штрих-кодов ZBar, и почему, несмотря на ограниченность по времени, обнаружили в ней серьёзные баги: запись в буфер стека out-of-bounds, которая может привести к произвольному выполнению кода при помощи зловредного штрих-кода, и утечку памяти, которую можно использовать для выполнения атаки «отказ в обслуживании» (denial-of-service).

ZBar — это опенсорсная библиотека для считывания штрих-кодов, написанная на C. Она поддерживает впечатляющий набор форматов штрих-кодов, в том числе и QR-коды. Её использовал один из наших клиентов, поэтому мы решили вкратце проверить её безопасность. Учитывая огромный объём кода, вручную тестировать его мы не могли. Так как мы не нашли упоминаний о фаззинге этой библиотеки, то решили попробовать его.
Читать дальше →

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

Level of difficultyEasy
Reading time6 min
Views16K

Привет, исследователи Rust! Сегодня хочу поделиться своим опытом (не всегда радужным) работы с Rust. Да, язык классный, безопасный, быстрый — все мы это знаем. Но, как и в любом инструменте, здесь есть свои подводные камни, на которые я благополучно наступал.

Читать далее

Телефоны с дисплеями E-Ink: для тех, кому нужна связь и не хочется отвлекаться

Reading time4 min
Views31K

Привет, Хабр! Не так давно стало известно о проекте Mudita Kompakt — это мобильный телефон с черно-белым E-Ink-экраном, базовым набором приложений для связи, заметок, чтения и музыки и без сервисов Google (фича, а не баг). Устройство для тех, кто не хочет отвлекаться на сообщения и видео. У него есть и современные, привычные пользователю функции, включая беспроводную зарядку и сканер отпечатков пальцев.

В этом посте предлагаю вспомнить, какие еще модели телефонов такого рода есть на рынке. О тех телефонах, что были некогда доступны и популярны, вроде Yota Phone, писать не будем: в свое время их обозрели так обозрели.

Читать далее

Безопасная разработка на Python

Level of difficultyEasy
Reading time6 min
Views6.2K

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

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

Читать далее

Как перенести UEFI системный диск Enterprise Linux на другое устройство?

Level of difficultyMedium
Reading time8 min
Views3.8K

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

В статье рассмотрим способ переноса системного раздела ОС Linux на другое блочное устройство и необходимые изменения в UEFI загрузчике.

Читать далее

UPD Разобрали тренды тестирования 2024 от ИИ

Level of difficultyEasy
Reading time4 min
Views4.1K

Я недавно наткнулась на статью devxhub.com, где автор собрал десяток основных трендов 2024 года в тестировании, и перевела её. Оказалось, статья написана GPT —  на это мне моментально указали педантичные хабровчане. Что ж, от того, что она написана ИИ, не теряется интерес к информации. Да, язык примитивен и суховат, как таранька, и не такой вкусный. Но я всё же хочу разобрать с вами ту самую статью "10 Popular Software Testing Trends in 2024". По-моему, в этом списке есть смысл. И, как ни крути, у нас впереди 2025-й, который цепляет многое из нынешнего 2024-го.

UPD публикация обновлена после замечаний хабровчан о том, что исходник ранее опубликованного перевода написан ИИ.

Итак, рассуждения на основе…

Запросы в PostgreSQL: 1. Этапы выполнения

Reading time17 min
Views90K

Привет, Хабр! Начинаю еще один цикл статей об устройстве PostgreSQL, на этот раз о том, как планируются и выполняются запросы.

Предыдущие циклы были посвящены изоляции и многоверсионности, журналированию и блокировкам.

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

Материал перекликается с нашим учебным курсом QPT «Оптимизация запросов», но ограничивается только подробностями внутреннего устройства и не затрагивает оптимизацию как таковую. Кроме того, я ориентируюсь на еще не вышедшую версию PostgreSQL 14. А курс мы тоже скоро обновим (правда, на версию 13; приходится бежать со всех ног, чтобы только оставаться на месте).

Поехали

Information

Rating
7,813-th
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity