Pull to refresh
1
0
Садовский Борис @B_Sadovskiy

Пользователь

Send message

Проблемные аспекты программирования на С++

Reading time28 min
Views12K

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



Читать дальше →
Total votes 18: ↑6 and ↓12-6
Comments26

Vim по полной: Введение

Reading time5 min
Views70K
Привет, хабраюзер!

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

В этой серии статей я решил поделиться собственными наработками и, возможно, показать, на что может быть способен этот редактор в руках программиста. Серия будет состоять из следующих частей:
  1. Введение (vim_lib)
  2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
  3. Уровень проекта и файловая система (vim_prj, nerdtree)
  4. Snippets и шаблоны файлов (UltiSnips, vim_template)
  5. Компиляция и выполнение чего угодно (vim-quickrun)
  6. Работа с Git (vim_git)
  7. Деплой (vim_deploy)
  8. Тестирование с помощью xUnit (vim_unittest)
  9. Библиотека, на которой все держится (vim_lib)
  10. Другие полезные плагины

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

Готов? Вперед под кат!
Total votes 52: ↑49 and ↓3+46
Comments86

Производительность параллельных алгоритмов STL

Reading time5 min
Views6.1K

В этой статье я собираюсь провести тест производительности на компиляторе Microsoft и компиляторе GCC, чтобы ответить на простой вопрос: окупается ли политика выполнения?

 

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments1

Работаем с Git: первые шаги в GitHub

Reading time15 min
Views109K

Бывает, что начинающие разработчики проблематично осваивают Git и не с первого захода понимают логику работы сервиса. Но стоит создать пару репозиториев или, ещё лучше, погрузиться в реальную историю по установке стартапа на рельсы DevOps, как работа с ветками станет дружелюбной, а PR и MR больше не вызовут путаницы. Ошибки в любом случае появятся, но вы будете к ним готовы!

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments5

Работа с СОМ-портом на Си в linux

Reading time18 min
Views65K
Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь.

Каждый, кто постоянно занимается электроникой и программирует встраиваемые устройства, неизбежно сталкивается с необходимостью работы с СОМ-портом под линуксом. Недаром, моя статья "UART и с чем его едят" спустя 11 лет после выпуска набирает просмотры и комментарии.

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

Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.

В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А непонимание того, что там происходит и приводит к различным трудноуловимым багам.
Читать дальше →
Total votes 75: ↑72 and ↓3+69
Comments24

Хабратоп. Самые востребованные языки программирования в 2022 году

Reading time7 min
Views38K


Подводим итоги 2022 года в рейтингах языков программирования — от IEEE и TIOBE до не столь известных, например RedMonk и GitHut. Цифры, подробности, наблюдения и, конечно, раскрытие сути разнообразных топов ждут под катом. 


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


Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments18

Как проходит собеседование начинающего разработчика на С++: что нужно знать и как подготовиться

Reading time6 min
Views33K

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

В этом посте я собрал подборку понятий, которые у вас могут спросить на собеседовании на вакансию Junior С++ разработчика, и описал, к чему в принципе вам стоит готовиться. Предупрежден — значит вооружен. Вкратце о себе: меня зовут Турмец, я работаю в Яндексе, параллельно учусь в Школе Анализа Данных и занимаюсь ревью кода на курсе «Разработчик С++» в Практикуме. 

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

Поехали.

Читать далее
Total votes 46: ↑38 and ↓8+30
Comments39

Алгоритмы и структуры данных поиска. Лекции и курсы от Яндекса

Reading time4 min
Views154K
Сегодня мы завершаем новогоднюю серию постов, посвященных лекциям Школы анализа данных. Последний по порядку, но никак не по важности курс — «Алгоритмы и структуры данных поиска».

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

Мы учли то, о чём нас просили в комментариях к прошлым курсам — теперь при желании можно не только смотреть/скачивать лекции по отдельности, но и загрузить всё разом в виде открытой папки на Яндекс.Диске. Кстати — в предыдущих постах тоже появились такие же апдейты (вот ссылки для удобства: «машинное обучение», «дискретный анализ и теория вероятностей», «параллельные и распределённые вычисления»).



Лекции читает Максим Александрович Бабенко, заместитель директора отделения computer science, ассистент кафедры математической логики и теории алгоритмов механико-математического факультета МГУ им. М. В. Ломоносова, кандидат физико-математических наук.
Содержание курса, тезисы лекций и ссылки на видео
Total votes 115: ↑108 and ↓7+101
Comments18

Хитрости QComboBox + QTreeView

Reading time3 min
Views8.9K
На практике, иногда бывает необходимость показывать в QComboBox древовидную структуру данных.

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

Давайте разберём как правильно это делать
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments12

Байки из облака: три обыкновенных истории из жизни Cloudflare

Reading time7 min
Views23K

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

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

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

Выяснить
Total votes 47: ↑45 and ↓2+43
Comments30

Топ полезных SQL-запросов для PostgreSQL

Reading time7 min
Views81K

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

Читать далее
Total votes 83: ↑81 and ↓2+79
Comments15

Некомпетентные компетенции

Reading time44 min
Views59K

Поводом для написания этой статьи послужил случай, когда сотрудники нашего HR-отдела предложили мне взять в нашу проектную группу Департамента разработки программного обеспечения ЛАНИТ на производственную практику выпускника одного из московских техникумов.  Кандидат обучался четвертый год по специальности «Прикладная информатика» и, судя по резюме, претендовал на должность «стажера-разработчика SQL, С#, HTML, CSS». Он уже прошел предварительные собеседования и, по словам наших кадровиков, показал себя наиболее адекватным из 15 других претендентов. Поскольку у меня это был не первый случай руководства практикой у студентов и предыдущие прецеденты имели положительный результат, я согласился.

Читать далее
Total votes 194: ↑181 and ↓13+168
Comments309

Systemd для продолжающих. Part 1 — Запуск юнитов по временным событиям

Reading time10 min
Views35K

Всем привет! В последнее время я вплотную занимаюсь исследованием возможностей systemd и решил поделиться результатом исследований с сообществом, в виде небольшого (или большого, как пойдёт ;-) цикла статей. Итак первым номером нашей программы будет запуск юнитов по различным событиям происходящим во время работы ОС. В качестве исследовательской платформы будет выступать Manjaro Linux c systemd v247.2. И... да. Некоторые события, вынудили меня написать внеочередную статью, которая «взлетела на вершину хит-парада», а опрос показал, что тема актуальна и вызывает интерес, так что погнали!

Нырнуть в кроличью нору!
Total votes 72: ↑70 and ↓2+68
Comments23

Oracle, Docker, AWS: альтернативы сервисам для разработчиков, которые уже заблокировали в России или скоро заблокируют

Reading time4 min
Views27K

С начала марта зарубежные IT-компании ограничивают или полностью закрывают доступ к своим продуктам пользователям из России. В списке, среди прочих, — Microsoft, Oracle, Amazon и другие крупные компании. Рассказываем, какие существуют альтернативы уже заблокированным сервисам и что делать, если заблокируют до сих пор доступные. Этот материал постоянно обновляется.

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

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

Читать далее
Total votes 32: ↑27 and ↓5+22
Comments52

Перегрузка в C++. Часть II. Перегрузка операторов

Reading time31 min
Views127K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов. Особое внимание уделено использованию перегруженных операторов в стандартной библиотеке. Это вторая статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь. Следующая статья будет посвящена перегрузке операторов управления памятью.


Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments17

Спецификаторы, квалификаторы и шаблоны

Reading time15 min
Views24K
template<class T>
static inline thread_local constexpr const volatile T x = {};

Такое количество ключевых слов введет в ступор любого неподготовленного разработчика. Но на C++ Russia 2019 Piter Михаил Матросов (mmatrosov) разложил по полочкам квалификаторы и спецификаторы при объявлении переменных и функций.

Мы подготовили для вас текстовую версию доклада, чтобы вы могли в любой момент вернуться и изучить шпаргалки Михаила.
Total votes 31: ↑29 and ↓2+27
Comments9

Криптоалгоритмы. Классификация с точки зрения количества ключей

Reading time50 min
Views104K


На Хабрахабре уже порядка 1000 статей так или иначе связанные с шифрованием, но иногда возникает ситуация, когда быстро нужна информация по тому или иному алгоритму.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments29

Автоматизация системных тестов на базе QEMU (Часть 1/2)

Reading time12 min
Views6.6K

Эта статья посвящена автоматизации системного (end-to-end) тестирования с использованием виртуальных машин. В статье рассматриваются такие вопросы, как автоматизация развертывания и настройки виртуальных стендов, а также автоматизация запуска процессов внутри виртуальных машин с последующим контролем полученных результатов. В конце статьи мы получим пусть неидеальный (к этому мы ещё вернемся), но простой и понятный скрипт, с помощью которого вы сможете запускать системные тесты одной кнопкой, даже не имея у себя на компьютере ни одной виртуальной машины.


Статья предполагает наличие следующих навыков у читателя:


  • Уверенное пользование ОС семейства Linux;
  • Базовое понимание принципов виртуализации;
  • Знакомство с гипервизором QEMU и графическим клиентом virt-manager

Статья разбита на две части: в первой части мы познакомимся с основными инструментами, которые позволят нам создавать, развертывать и управлять виртуальными машинами используя исключительно командную строку. Эти знания нам пригодятся для второй части статьи (которую можно найти здесь: https://habr.com/ru/post/520648/), где мы соединим эти инструменты вместе и попробуем автоматизировать тесты конкретного сетевого приложения.

Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments11
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity